diff --git a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml index d7a4516d2a..109c4a5930 100644 --- a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml +++ b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml @@ -23,15 +23,12 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.6.2 (Default) + - 1.7.0 (Default) - upcoming (Edge) + - 1.6.2 - 1.6.1 - 1.6.0 - - 1.5.3 - - 1.5.2 - - 1.5.1 - - 1.5.0 - - pre-1.5.0 + - pre-1.6.0 validations: required: true - type: input diff --git a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml index 0c3378eb3f..74e13a0a35 100644 --- a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml +++ b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml @@ -23,15 +23,12 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.6.2 (Default) + - 1.7.0 (Default) - upcoming (Edge) + - 1.6.2 - 1.6.1 - 1.6.0 - - 1.5.3 - - 1.5.2 - - 1.5.1 - - 1.5.0 - - pre-1.5.0 + - pre-1.6.0 validations: required: true - type: input diff --git a/.github/ISSUE_TEMPLATE/04_other_errors.yaml b/.github/ISSUE_TEMPLATE/04_other_errors.yaml index 538dae0383..c449e8b648 100644 --- a/.github/ISSUE_TEMPLATE/04_other_errors.yaml +++ b/.github/ISSUE_TEMPLATE/04_other_errors.yaml @@ -23,15 +23,12 @@ body: label: Version description: What version of pokeemerald-expansion are you using as a base? options: - - 1.6.2 (Default) + - 1.7.0 (Default) - upcoming (Edge) + - 1.6.2 - 1.6.1 - 1.6.0 - - 1.5.3 - - 1.5.2 - - 1.5.1 - - 1.5.0 - - pre-1.5.0 + - pre-1.6.0 validations: required: true - type: input diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 02d7e22b6c..8c5bcb7ed8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,6 +10,7 @@ on: jobs: build: runs-on: ubuntu-latest + container: devkitpro/devkitarm env: GAME_VERSION: EMERALD GAME_REVISION: 0 @@ -27,7 +28,9 @@ jobs: repository: pret/agbcc - name: Install binutils - run: sudo apt install gcc-arm-none-eabi binutils-arm-none-eabi libelf-dev + run: | + sudo apt update + sudo apt install -y build-essential libpng-dev libelf-dev # build-essential, git, and libpng-dev are already installed # gcc-arm-none-eabi is only needed for the modern build # as an alternative to dkP @@ -39,6 +42,9 @@ jobs: working-directory: agbcc - name: Agbcc + env: + MODERN: 0 + COMPARE: 0 run: make -j${nproc} -O all - name: Modern @@ -49,6 +55,7 @@ jobs: - name: Test env: + MODERN: 1 TEST: 1 run: | make -j${nproc} -O pokeemerald-test.elf diff --git a/.gitignore b/.gitignore index 082430d794..af9009dd01 100644 --- a/.gitignore +++ b/.gitignore @@ -21,7 +21,6 @@ sound/**/*.bin sound/songs/midi/*.s tools/agbcc *.map -*.ld *.bat *.dump *.sa* @@ -39,3 +38,4 @@ prefabs.json *.diff *.sym *.js +src/data/map_group_count.h diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d599aaf3f..5b56aca136 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,122 +1,5 @@ -# Pokeemerald-Expansion Changelog +# Pokeemerald-Expansion Changelogs -# Version 1.6.2 +## [Version 1.7.0](docs/changelogs/1.7.0.md) - Feature Release -## 🌋 *IMPORTANT CHANGES* 🌋 -### Battle changes -* Battler Types are now obtained via `GetBattlerType` instead of `gBattleMons[battlerId].type1/2/3` to better consider Roost. Be sure to update your custom battle effects to account for this change. - -## 🧬 General 🧬 -### Fixed -* Fixed Cheat Start not initiating time-based events by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3446 - -## 🐉 Pokémon 🐉 -### Changed -* Updated Cresselia's base stats to Gen 9 by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3419 -* Updated Zacian/Zamazenta base stats to Gen 9 by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3421 -### Fixed -* Fixed Kleavor, Hisuian Sneasel and Sneasler missing their SV abilities by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3391 -* Fixed Bergmite/Avalugg old and updated egg groups being switched by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3380 - -## 🤹 Moves 🤹 -### Changed -* Quick Draw now uses weighted RNG by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399 -* Added `IS_BATTLER_TYPELESS` macro that checks if the specified battler has no valid type by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3303 -### Fixed -* Fixed Protect failing if the user flinched on the previous turn by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3345 -* Fixed entry hazards not working properly being cleared on switch-in by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3316 - * This includes Toxic Spikes not working if Pecha Berry actived on the previous turn. -* Fixed Roost overwriting other type changing at the end of the turn (Soak, Forest's Curse, Color Change, etc.) by @BLourenco in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258 - * Now it suppresses the user's Flying-type rather than remove and re-add it. -* Fixes Salt Cure visual bug if mon fainted by direct attack by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3388 -* Fixed Purifying Salt not preventing the use of Rest by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399 -* Fixed Make it Rain lowering Sp. Attack twice if hitting 2 targets in double battles by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3441 -* Fixed Reflect Type not properly handle 3rd types by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3303 -* Fixed form change triggered by switching not occuring when using moves like U-Turn or Baton Pass by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3463 -* Fixed Last Resort not counting Sleep Talk as used for its effect by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378 - -## 🎭 Abilities 🎭 -### Changed -* Removed unused `STATUS3_CANT_SCORE_A_CRIT` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377 -* Moved Beads of Ruin and Sword of Ruin damage to the appropiate damage modifier functions by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415 -### Fixed -* Fixed Intimidate increasing the attack of both opponents if one of them has Contrary in double battles by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3365 -* Fixed Battle/Shell Armor not preventing critical hits by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377 -* Fixed Rivalry's effect being reversed by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381 -* Fixed Rivalry lowering attack if either attacker or target were genderless by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381 -* Fixed missing Poison Heal Ability Popup by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3385 -* Fixed Parental Bond not working at all by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3417 -* Fixed Beads of Ruin and Sword of Ruin damage modifiers by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415 -* Fixed Sheer Force not negating effects that benefit the user (eg. Flame Charge, Power-Up Punch) by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378 -* Fixed Strength Sap not healing the user when used on a Substitute by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3486 -* Fixed Substitute showing the "took damage for" message if Strength Sap was used on it by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3486 -* Fixed Weak Armor interrupting Multi Hit moves by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3497 - -## 🧶 Items 🧶 -### Fixed -* Fixed Shiny Charm doing too many rerolls by default by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3327 -* Fixed Berserk Gene activating for the wrong Pokémon double battles by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3363 -* Fixed Red Card not being consumed after opponent Sticky Web activation by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364 -* Fixed implementation of Gen6 that didn't allow for the Exp Share flag to be set via script without setting the item to the Gen 6+ version by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3384 -* Fixed Kee Berry raising defense by 1 stage instead of 2 by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409 -* Fixed Kee Berry incorrect stat raise message by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409 -* Fixed Razor Fang not being able to be used directly even if `I_USE_EVO_HELD_ITEMS_FROM_BAG` was set to `TRUE` by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3456 - -## 🧹 Cleanup 🧹 -* `AbilityBattleEffects` uses `B_MSG_TERRAIN` constants for field terrain intro text by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3410 -* Removed all trailing whitespace by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3472 - -## 🧪 Test Runner 🧪 -### Added -* Flinch tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3345 -* Berserk Gene double battle tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3363 -* More specific Toxic Spikes tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3316 -* Red Card/Sticky Web test @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364 -* Intimidate/Contrary double battle test by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3365 -* Critical Hit tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377 -* Roost tests by @BLourenco in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258 -* Rivalry tests by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381 -* Various tests by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3385 - * Defeatist, Dragon's Maw, Earth Eater, Gale Wings, Poison Heal, Rocky Payload, Sap Sipper, Steelworker and Transistor. -* Various tests by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399 - * Beast Boost, Ice Scales, Neuroforce, Purifying Salt, Quick Draw and Sharpness. -* Berry tests @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409 - * Full: Apicot, Custap, Ganlon, Jaboca, Kee, Lansat, Liechi, Maranga, Micle, Petaya, Rowap and Salac Berries. - * TODO: Starf Berry. -* Weather and type-specific tests by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3260 - * Full: Freezing, Hail, Moonlight, Morning Sun, Sandstorm, Snow, Solar Beam/Blade, Steel poisoning, Synthesis, Thunder and Weather Ball. - * Partial: Prankster, Safety Goggles, Aurora Veil, Hurricane, Leech Seed and OHKO moves. - * TODO: Harvest. -* Single Parental Bond test by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3417 -* Several tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378 - * Full: Weak Armor, Last Resort, Stealth Rock. - * Completed Weak Armor tests by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3493 - * Partial: Defiant, Sheer Force, White Herb, Strength Sap. -### Changed -* Red Card tests now check if the item was consumed by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364 -* Tests now cannot use `i` in their cycles to avoid messing with `PARAMETRIZE` by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3408 -* Moved battle tests off the heap by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3414 -* Moved Powder/Grass test to `move_flags` folder by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3260 -* Continuous `NOT x; NOT y;` are now not allowed in tests due to them not acting as one would expect by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3459 - * Test writers should use `NONE_OF { x; y; }` instead. -### Fixed -* Fixed CreateNPCTrainerPartyForTrainer test failing on modern by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3367 -* Fixed `RNG_CRITICAL_HIT` by @mrgriffin and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377 -* Fixed `ASSUMPTIONS` block not working by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3368 - * Fixup by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3408 -* Fixed Beads of Ruin and Sword of Ruin damage tests by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415 -* Fixes test RNG by @mrgriffin and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3433 -* Fixed battle test estimateCost bug by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3448 -* Test cleanup and improvements by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3449 - * Removed duplicated Prankster TO_DO test. - * Corrected Multi-hit test names (4 and 5 hits stated 35% instead of 15%). - * Grouped Maranga Berry's Physical vs Special tests using PARAMETRIZE. - * Improved Jaboca, Kee and Rowap tests by @AlexOn1ine -* Fixed `ModifyPersonalityForNature` by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3452 -* Fixed test_runner.c modern warning by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3451 - -## New Contributors -* @BLourenco made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258 - -## Full Changelog -https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.6.1...expansion/1.6.2 +## [Version 1.6.2](docs/changelogs/1.6.2.md) - Bugfix release diff --git a/INSTALL.md b/INSTALL.md index af2e844677..f82649d7e2 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -82,7 +82,7 @@ Some tips before proceeding: 4. Certain packages are required to build pokeemerald. Install these packages by running the following command: ```bash - sudo apt install build-essential binutils-arm-none-eabi git libpng-dev + sudo apt install build-essential binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi git libpng-dev ```
Note... @@ -329,28 +329,28 @@ Open Terminal and enter the following commands, depending on which distro you're ### Debian/Ubuntu-based distributions Run the following command to install the necessary packages: ```bash -sudo apt install build-essential binutils-arm-none-eabi git libpng-dev +sudo apt install build-essential binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi git libpng-dev ``` Then proceed to [Choosing where to store pokeemerald (Linux)](#choosing-where-to-store-pokeemerald-linux).
Note for legacy repos... > If the repository you plan to build has an **[older revision of the INSTALL.md](https://github.com/pret/pokeemerald/blob/571c598/INSTALL.md)**, -> then you will have to install devkitARM. Install all the above packages except binutils-arm-none-eabi, and follow the instructions to +> then you will have to install devkitARM. Install all the above packages except for the arm-none-eabi packages, and follow the instructions to > [install devkitARM on Debian/Ubuntu-based distributions](#installing-devkitarm-on-debianubuntu-based-distributions).
### Arch Linux Run this command as root to install the necessary packages: ```bash -pacman -S base-devel arm-none-eabi-binutils git libpng +pacman -S base-devel arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib git libpng ``` Then proceed to [Choosing where to store pokeemerald (Linux)](#choosing-where-to-store-pokeemerald-linux).
Note for legacy repos... > If the repository you plan to build has an **[older revision of the INSTALL.md](https://github.com/pret/pokeemerald/blob/571c598/INSTALL.md)**, -> then you will have to install devkitARM. Install all the above packages except binutils-arm-none-eabi, and follow the instructions to +> then you will have to install devkitARM. Install all the above packages except for the arm-none-eabi packages, and follow the instructions to > [install devkitARM on Arch Linux](#installing-devkitarm-on-arch-linux).
diff --git a/Makefile b/Makefile index 5326383023..db883cb60c 100644 --- a/Makefile +++ b/Makefile @@ -40,12 +40,12 @@ TITLE := POKEMON EMER GAME_CODE := BPEE MAKER_CODE := 01 REVISION := 0 -MODERN ?= 0 +MODERN ?= 1 TEST ?= 0 ANALYZE ?= 0 -ifeq (modern,$(MAKECMDGOALS)) - MODERN := 1 +ifeq (agbcc,$(MAKECMDGOALS)) + MODERN := 0 endif ifeq (check,$(MAKECMDGOALS)) @@ -69,12 +69,12 @@ else CPP := $(PREFIX)cpp endif -ROM_NAME := pokeemerald.gba +ROM_NAME := pokeemerald_agbcc.gba ELF_NAME := $(ROM_NAME:.gba=.elf) MAP_NAME := $(ROM_NAME:.gba=.map) OBJ_DIR_NAME := build/emerald -MODERN_ROM_NAME := pokeemerald_modern.gba +MODERN_ROM_NAME := pokeemerald.gba MODERN_ELF_NAME := $(MODERN_ROM_NAME:.gba=.elf) MODERN_MAP_NAME := $(MODERN_ROM_NAME:.gba=.map) MODERN_OBJ_DIR_NAME := build/modern @@ -123,7 +123,7 @@ LIBPATH := -L ../../tools/agbcc/lib LIB := $(LIBPATH) -lgcc -lc -L../../libagbsyscall -lagbsyscall else CC1 = $(shell $(PATH_MODERNCC) --print-prog-name=cc1) -quiet -override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -std=gnu17 +override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -std=gnu17 -Werror -Wall -Wno-strict-aliasing -Wno-attribute-alias -Woverride-init ifeq ($(ANALYZE),1) override CFLAGS += -fanalyzer endif @@ -146,8 +146,6 @@ ifneq ($(MODERN),1) CPPFLAGS += -I tools/agbcc/include -I tools/agbcc -nostdinc -undef endif -LDFLAGS = -Map ../../$(MAP) - SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c GFX := tools/gbagfx/gbagfx$(EXE) AIF := tools/aif2pcm/aif2pcm$(EXE) @@ -182,7 +180,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 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 infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line)))) @@ -190,7 +188,7 @@ infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst # Disable dependency scanning for clean/tidy/tools # Use a separate minimal makefile for speed # Since we don't need to reload most of this makefile -ifeq (,$(filter-out all rom compare modern check libagbsyscall syms $(TESTELF),$(MAKECMDGOALS))) +ifeq (,$(filter-out all rom compare agbcc modern check libagbsyscall syms $(TESTELF),$(MAKECMDGOALS))) $(call infoshell, $(MAKE) -f make_tools.mk) else NODEP ?= 1 @@ -280,8 +278,7 @@ clean-check-tools: @$(foreach tooldir,$(CHECKTOOLDIRS),$(MAKE) clean -C $(tooldir);) mostlyclean: tidynonmodern tidymodern tidycheck - rm -f $(SAMPLE_SUBDIR)/*.bin - rm -f $(CRY_SUBDIR)/*.bin + find sound -iname '*.bin' -exec rm {} + rm -f $(MID_SUBDIR)/*.s find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.rl' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + rm -f $(DATA_ASM_SUBDIR)/layouts/layouts.inc $(DATA_ASM_SUBDIR)/layouts/layouts_table.inc @@ -349,6 +346,7 @@ $(C_BUILDDIR)/librfu_intr.o: CC1 := tools/agbcc/bin/agbcc_arm$(EXE) $(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 endif ifeq ($(DINFO),1) @@ -465,28 +463,31 @@ endef $(foreach src, $(TEST_SRCS), $(eval $(call TEST_DEP,$(patsubst $(TEST_SUBDIR)/%.c,$(TEST_BUILDDIR)/%.o,$(src)),$(src),$(patsubst $(TEST_SUBDIR)/%.c,%,$(src))))) ifeq ($(MODERN),0) -LD_SCRIPT := ld_script.txt +LD_SCRIPT := ld_script.ld LD_SCRIPT_DEPS := $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld else -LD_SCRIPT := ld_script_modern.txt +LD_SCRIPT := ld_script_modern.ld LD_SCRIPT_DEPS := endif $(OBJ_DIR)/ld_script.ld: $(LD_SCRIPT) $(LD_SCRIPT_DEPS) cd $(OBJ_DIR) && sed "s#tools/#../../tools/#g" ../../$(LD_SCRIPT) > ld_script.ld +LDFLAGS = -Map ../../$(MAP) $(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) libagbsyscall @echo "cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ " - @cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(OBJS_REL) $(LIB) + @cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld --print-memory-usage -o ../../$@ $(OBJS_REL) $(LIB) | cat $(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent $(ROM): $(ELF) $(OBJCOPY) -O binary $< $@ $(FIX) $@ -p --silent +agbcc: all + modern: all -LD_SCRIPT_TEST := ld_script_test.txt +LD_SCRIPT_TEST := ld_script_test.ld $(OBJ_DIR)/ld_script_test.ld: $(LD_SCRIPT_TEST) $(LD_SCRIPT_DEPS) cd $(OBJ_DIR) && sed "s#tools/#../../tools/#g" ../../$(LD_SCRIPT_TEST) > ld_script_test.ld diff --git a/README.md b/README.md index 91a8bc12dd..2cf1e7e4cc 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,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.6.2 https://github.com/rh-hideout/pokeemerald-expansion/ +Based off RHH's pokeemerald-expansion v1.7.0 https://github.com/rh-hideout/pokeemerald-expansion/ ``` ## What features are included? @@ -17,7 +17,7 @@ Based off RHH's pokeemerald-expansion v1.6.2 https://github.com/rh-hideout/pokee - [Item configurations](/include/config/item.h) - [Overworld configurations](/include/config/overworld.h) - [Debug configurations](/include/config/debug.h) -- Upgraded battle engine. +- ***Upgraded battle engine.*** - Gen5+ damage calculation. - 2v2 Wild battles support. - 1v2/2v1 battles support. @@ -25,11 +25,14 @@ Based off RHH's pokeemerald-expansion v1.6.2 https://github.com/rh-hideout/pokee - Physical/Special/Status Category Split (configurable). - New moves and abilities up to Scarlet and Violet. - Custom Contest data up to SwSh, newer moves are WIP. ([source](https://pokemonurpg.com/info/contests/rse-move-list/)) - - [Form change tables](/src/data/pokemon/form_change_tables.h) that allow customizing most form changes. - - Mega Evolution, Primal Reversion and Ultra Burst. + - Mega Evolution + - Primal Reversion + - Ultra Burst - Z-Moves - Gen 8+ damaging moves are given power extrapolated from Gen 7. - Gen 8+ status moves have no additional effects, like Healing Wish. + - Dynamax + - Gigantamax forms - Initial battle parameters - Queueing stat boosts (aka, Totem Boosts) - Setting Terrains. @@ -37,6 +40,7 @@ Based off RHH's pokeemerald-expansion v1.6.2 https://github.com/rh-hideout/pokee - Quick Poké Ball selection in Wild Battles - Press `R` to use last selected Poké Ball. - Hold `R` to change selection with the D-Pad. + - Run option shortcut - Faster battle intro - Message and animation/cry happens at the same time. - Faster HP drain. @@ -58,7 +62,7 @@ Based off RHH's pokeemerald-expansion v1.6.2 https://github.com/rh-hideout/pokee - Level 100 Pokémon can earn EVs. - Inverse battle support. - TONS of other features listed [here](/include/config/battle.h). -- Full Trainer customization +- ***Full Trainer customization*** - Nickname, EVs, IVs, moves, ability, ball, friendship, nature, gender, shininess. - Custom tag battle support (teaming up an NPC in a double battle). - Sliding trainer messages. @@ -67,11 +71,12 @@ Based off RHH's pokeemerald-expansion v1.6.2 https://github.com/rh-hideout/pokee - New flag options to let you customize the intelligence of your trainers. - Faster calculations. - Specify Poké Balls by Trainer class. -- Pokémon Species from Generations 1-8. - - Option to disable unwanted generations. +- ***Pokémon Species from Generations 1-9.*** + - Simplified process to add new Pokémon. + - Option to disable unwanted families. - Updated sprites to DS style. - Updated stats, types, abilities and egg groups (configurable). - - Updated Hoenn's Regional Dex to match ORAS'. + - Updated Hoenn's Regional Dex to match ORAS' (configurable). - Updated National Dex incorporating the new species. - Sprite and animation visualizer. - Accesible by pressing `Select` on a Pokémon's Summary screen. @@ -86,40 +91,56 @@ Based off RHH's pokeemerald-expansion v1.6.2 https://github.com/rh-hideout/pokee - Available via Ability Patch. - Compatible with Ghoul's DexNav branch. - All gender differences. - - Different icons for female Hippopotas and Hippowdon - - 3 Perfect IVs on Legendaries, Mythicals and Ultra Beasts -- Breeding + - Custom female icons for female Hippopotas Hippowdon, Pikachu and Wobbufett + - 3 Perfect IVs on Legendaries, Mythicals and Ultra Beasts. +- ***Customizable form change tables. Full list of methods [here](/include/constants/form_change_types.h).*** + - Item holding (eg. Giratina/Arceus) + - Item using (eg. Oricorio) + - Time of day option for Shaymin + - Fainting + - Battle begin and end (eg. Xerneas) + - Move change option for Zacian/Zamazenta + - Battle end in terrains (eg. Burmy) + - Switched in battle (eg. Palafin) + - HP Threshold (eg. Darmanitan) + - Weather (eg. Castform) + - End of turn (eg. Morpeko) + - Time of day (Shaymin) +- ***Breeding Improvements*** - Incense Baby Pokémon now happen automatically (configurable). - - Level 1 eggs. - - Poké Ball inheriting. - - Egg Move Transfer, including Mirror Herb. - - Nature inheriting 100% of the time with Everstone - - Gen6+ Ability inheriting. -- Items from newer Generations. Full list [here](/include/constants/items.h). + - Level 1 eggs (configurable). + - Poké Ball inheriting (configurable). + - Egg Move Transfer, including Mirror Herb (configurable). + - Nature inheriting 100% of the time with Everstone (configurable) + - Gen6+ Ability inheriting (configurable). +- ***Items from newer Generations. Full list [here](/include/constants/items.h).*** - ***Gen 6+ Exp. Share*** (configurable) + - Berserk Gene + - Most battle items from Gen 4+ - Existing item data but missing effects: - Mints - Dynamax Candy - Mulches - - Rotom Catalog - - DNA Splicers - - Zygarde Cube - - N Solarizer/Lunarizer - - Reins of Unity - - Dynamax Band - Gimmighoul Coin - Booster Energy - Tera Shards - Tera Orb -- Feature branches incorporated: - - [RHH intro credits](https://github.com/Xhyzi/pokeemerald/tree/rhh-intro-credits) by Xhyzi. +- ***Feature branches incorporated (with permission):*** + - [RHH intro credits](https://github.com/Xhyzi/pokeemerald/tree/rhh-intro-credits) by @Xhyzi. - A small signature from all of us to show the collective effort in the project :) - - [Overworld debug]() by TheXaman + - [Overworld debug](https://github.com/TheXaman/pokeemerald/tree/tx_debug_system) by @TheXaman + - May be disabled. - Accesible by pressing `R + Start` in the overworld by default. - **Additional features**: - *Clear Boxes*: cleans every Pokémon from the Boxes. - *Hatch an Egg*: lets you choose an Egg in your party and immediatly hatch it. -- Other features + - [HGSS Pokédex](https://github.com/TheXaman/pokeemerald/tree/tx_pokedexPlus_hgss) by @TheXaman + - May be disabled. + - **Additional features**: + - *Support for new evolution methods*. + - *Dark Mode*. + - [Nature Colors](https://github.com/DizzyEggg/pokeemerald/tree/nature_color) in summary screen by @DizzyEggg +- ***Other features*** - Pressing B while holding a Pokémon drops them like in modern games (configurable). - Running indoors (configurable). - Configurable overworld poison damage. diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 70c19b84d6..de509588bc 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -362,11 +362,6 @@ .byte 0x3f .endm - .macro jumpifaffectedbyprotect failInstr:req - .byte 0x40 - .4byte \failInstr - .endm - .macro call instr:req .byte 0x41 .4byte \instr @@ -1366,6 +1361,36 @@ .byte \battler .endm + .macro trysetoctolock battler:req, failInstr:req + callnative BS_TrySetOctolock + .byte \battler + .4byte \failInstr + .endm + + .macro setglaiverush + callnative BS_SetGlaiveRush + .endm + + .macro tryrelicsong + callnative BS_TryRelicSong + .endm + + .macro setpledge jumpInstr:req + callnative BS_SetPledge + .4byte \jumpInstr + .endm + + .macro setpledgestatus battler:req sidestatus:req + callnative BS_SetPledgeStatus + .byte \battler + .4byte \sidestatus + .endm + + .macro trycopycat failInstr:req + callnative BS_TryCopycat + .4byte \failInstr + .endm + .macro setzeffect callnative BS_SetZEffect .endm @@ -1461,6 +1486,61 @@ .4byte \failInstr .endm + @ Used to active a different Max Move effects. + .macro setmaxmoveeffect + callnative BS_SetMaxMoveEffect + .endm + + .macro setsteelsurge, failInstr:req + callnative BS_SetSteelsurge + .4byte \failInstr + .endm + + .macro damagenontypes + callnative BS_DamageNonTypes + .endm + + .macro trysetstatus1, ptr:req + callnative BS_TrySetStatus1 + .4byte \ptr + .endm + + .macro trysetstatus2, ptr:req + callnative BS_TrySetStatus2 + .4byte \ptr + .endm + + .macro tryhealsixthhealth, ptr:req + callnative BS_HealOneSixth + .4byte \ptr + .endm + + .macro tryrecycleberry, ptr:req + callnative BS_TryRecycleBerry + .4byte \ptr + .endm + + .macro updatedynamax + callnative BS_UpdateDynamax + .endm + + .macro jumpiftargetdynamaxed, ptr:req + callnative BS_JumpIfDynamaxed + .4byte \ptr + .endm + + .macro trytrainerslidezmovemsg + callnative BS_TryTrainerSlideZMoveMsg + .endm + + .macro trytrainerslidemegaevolutionmsg + callnative BS_TryTrainerSlideMegaEvolutionMsg + .endm + + .macro trytrainerslidedynamaxmsg + callnative BS_TryTrainerSlideDynamaxMsg + .endm + .macro tryhealpulse failInstr:req callnative BS_TryHealPulse .4byte \failInstr @@ -1472,6 +1552,10 @@ .4byte \failInstr .endm + .macro trytriggerstatusform + callnative BS_TryTriggerStatusForm + .endm + @ various command changed to more readable macros .macro cancelmultiturnmoves battler:req various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES @@ -1731,11 +1815,6 @@ .4byte \jumpInstr .endm - .macro trycopycat failInstr:req - various BS_ATTACKER, VARIOUS_TRY_COPYCAT - .4byte \failInstr - .endm - .macro showabilitypopup battler:req various \battler, VARIOUS_ABILITY_POPUP .endm @@ -2004,10 +2083,6 @@ .4byte \jumpInstr .endm - .macro applyplasmafists - various BS_ATTACKER, VARIOUS_APPLY_PLASMA_FISTS - .endm - .macro jumpifweatheraffected battler:req, flags:req, jumpInstr:req various \battler, VARIOUS_JUMP_IF_WEATHER_AFFECTED .4byte \flags @@ -2044,11 +2119,6 @@ .4byte \failInstr .endm - .macro setoctolock battler:req, failInstr:req - various \battler, VARIOUS_SET_OCTOLOCK - .4byte \failInstr - .endm - .macro cutonethirdhpraisestats failInstr:req various BS_ATTACKER, VARIOUS_CUT_1_3_HP_RAISE_STATS .4byte \failInstr @@ -2129,14 +2199,6 @@ various \battler, VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES .endm - .macro trytrainerslidezmovemsg battler:req - various \battler, VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE - .endm - - .macro trytrainerslidemegaevolutionmsg battler:req - various \battler, VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION - .endm - @ helpful macros .macro setstatchanger stat:req, stages:req, down:req setbyte sSTATCHANGER, \stat | \stages << 3 | \down << 7 @@ -2340,3 +2402,8 @@ getbattlerfainted \battler jumpifbyte CMP_EQUAL, gBattleCommunication, \value, \ptr .endm + + .macro flushtextbox + printstring STRINGID_EMPTYSTRING3 + waitmessage 1 + .endm diff --git a/asm/macros/movement.inc b/asm/macros/movement.inc index a43dc07ac5..b0bb1f35ee 100644 --- a/asm/macros/movement.inc +++ b/asm/macros/movement.inc @@ -162,5 +162,7 @@ create_movement_action figure_8, MOVEMENT_ACTION_FIGURE_8 create_movement_action fly_up, MOVEMENT_ACTION_FLY_UP create_movement_action fly_down, MOVEMENT_ACTION_FLY_DOWN + create_movement_action emote_double_exclamation_mark, MOVEMENT_ACTION_EMOTE_DOUBLE_EXCL_MARK + create_movement_action emote_x, MOVEMENT_ACTION_EMOTE_X create_movement_action step_end, MOVEMENT_ACTION_STEP_END diff --git a/charmap.txt b/charmap.txt index 2198977115..c26c07e78b 100644 --- a/charmap.txt +++ b/charmap.txt @@ -153,6 +153,7 @@ SUPER_RE = A0 'ä' = F4 'ö' = F5 'ü' = F6 +EMOJI_DIZZYEGG = F7 TALL_PLUS = FC 0C FB '$' = FF diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 3eeccf3a62..ce841e4a24 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -780,7 +780,7 @@ gBattleAnims_Moves:: .4byte Move_GLACIAL_LANCE .4byte Move_ASTRAL_BARRAGE .4byte Move_EERIE_SPELL -@@@@LA MOVES +@@@@ LA MOVES .4byte Move_DIRE_CLAW .4byte Move_PSYSHIELD_BASH .4byte Move_POWER_SHIFT @@ -856,6 +856,10 @@ gBattleAnims_Moves:: .4byte Move_MAGICAL_TORQUE .4byte Move_PSYBLADE .4byte Move_HYDRO_STEAM + .4byte Move_BLOOD_MOON + .4byte Move_MATCHA_GOTCHA + .4byte Move_SYRUP_BOMB + .4byte Move_IVY_CUDGEL @@@@ Z MOVES .4byte Move_BREAKNECK_BLITZ .4byte Move_ALL_OUT_PUMMELING @@ -892,6 +896,60 @@ gBattleAnims_Moves:: .4byte Move_MENACING_MOONRAZE_MAELSTROM .4byte Move_LIGHT_THAT_BURNS_THE_SKY .4byte Move_SOUL_STEALING_7_STAR_STRIKE +@@@@ MAX MOVES + .4byte Move_MAX_GUARD + .4byte Move_MAX_STRIKE + .4byte Move_MAX_KNUCKLE + .4byte Move_MAX_AIRSTREAM + .4byte Move_MAX_OOZE + .4byte Move_MAX_QUAKE + .4byte Move_MAX_ROCKFALL + .4byte Move_MAX_FLUTTERBY + .4byte Move_MAX_PHANTASM + .4byte Move_MAX_STEELSPIKE + .4byte Move_MAX_FLARE + .4byte Move_MAX_GEYSER + .4byte Move_MAX_OVERGROWTH + .4byte Move_MAX_LIGHTNING + .4byte Move_MAX_MINDSTORM + .4byte Move_MAX_HAILSTORM + .4byte Move_MAX_WYRMWIND + .4byte Move_MAX_DARKNESS + .4byte Move_MAX_STARFALL +@@@@ G-MAX MOVES + .4byte Move_G_MAX_VINE_LASH + .4byte Move_G_MAX_WILDFIRE + .4byte Move_G_MAX_CANNONADE + .4byte Move_G_MAX_BEFUDDLE + .4byte Move_G_MAX_VOLT_CRASH + .4byte Move_G_MAX_GOLD_RUSH + .4byte Move_G_MAX_CHI_STRIKE + .4byte Move_G_MAX_TERROR + .4byte Move_G_MAX_FOAM_BURST + .4byte Move_G_MAX_RESONANCE + .4byte Move_G_MAX_CUDDLE + .4byte Move_G_MAX_REPLENISH + .4byte Move_G_MAX_MALODOR + .4byte Move_G_MAX_MELTDOWN + .4byte Move_G_MAX_DRUM_SOLO + .4byte Move_G_MAX_FIREBALL + .4byte Move_G_MAX_HYDROSNIPE + .4byte Move_G_MAX_WIND_RAGE + .4byte Move_G_MAX_GRAVITAS + .4byte Move_G_MAX_STONESURGE + .4byte Move_G_MAX_VOLCALITH + .4byte Move_G_MAX_TARTNESS + .4byte Move_G_MAX_SWEETNESS + .4byte Move_G_MAX_SANDBLAST + .4byte Move_G_MAX_STUN_SHOCK + .4byte Move_G_MAX_CENTIFERNO + .4byte Move_G_MAX_SMITE + .4byte Move_G_MAX_SNOOZE + .4byte Move_G_MAX_FINALE + .4byte Move_G_MAX_STEELSURGE + .4byte Move_G_MAX_DEPLETION + .4byte Move_G_MAX_ONE_BLOW + .4byte Move_G_MAX_RAPID_FLOW @@@ Last Move - cannot be reached .4byte Move_COUNT @@ -949,6 +1007,12 @@ gBattleAnims_General:: .4byte General_Snow @ B_ANIM_SNOW_CONTINUES .4byte General_UltraBurst @ B_ANIM_ULTRA_BURST .4byte General_SaltCureDamage @ B_ANIM_SALT_CURE_DAMAGE + .4byte General_DynamaxGrowth @ B_ANIM_DYNAMAX_GROWTH + .4byte General_SetWeather @ B_ANIM_MAX_SET_WEATHER + .4byte General_SyrupBombSpeedDrop @ B_ANIM_SYRUP_BOMB_SPEED_DROP + .4byte General_Rainbow @ B_ANIM_RAINBOW + .4byte General_SeaOfFire @ B_ANIM_SEA_OF_FIRE + .4byte General_Swamp @ B_ANIM_SWAMP .align 2 gBattleAnims_Special:: @@ -4000,58 +4064,57 @@ Move_BUG_BITE: end Move_CHARGE_BEAM: - loadspritegfx ANIM_TAG_BLACK_BALL_2 + loadspritegfx ANIM_TAG_ELECTRIC_ORBS + loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT + loadspritegfx ANIM_TAG_ELECTRICITY loadspritegfx ANIM_TAG_SPARK_2 - delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 5, 5, RGB(31, 31, 22) - playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, 0, 1, 0 - delay 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1 - delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 0, 0, RGB(31, 31, 22) - delay 10 - createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 5, 5, RGB(31, 31, 22) - playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, 0, 1, 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, 0, 1, 1 - delay 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, 0, 1, 1 - delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 0, 0, RGB(31, 31, 22) + setalpha 12, 8 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK + waitforvisualfinish + createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 20, 0, 2 + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER + delay 12 + createsprite gGrowingShockWaveOrbSpriteTemplate, ANIM_ATTACKER, 2 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 0, 11, RGB(31, 31, 22) + delay 50 + createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 1, 16, 0, 5 + createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 4, 50, 1 + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 50, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 11, 0, RGB(31, 31, 22) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 11, RGB(31, 31, 22) + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam + call SparkBeam delay 20 - createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 7, 7, RGB(31, 31, 22) - playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER - createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 0, 20, 0, 0 - createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 64, 20, 1, 0 - createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 128, 20, 0, 0 - createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 192, 20, 2, 0 - createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 32, 20, 0, 0 - createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 96, 20, 1, 0 - createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 160, 20, 0, 0 - createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 224, 20, 2, 0 - delay 4 - waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, (F_PAL_BG | F_PAL_ATTACKER), -31, 1, 0, 0, RGB(31, 31, 22) - playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_ATTACKER - createsprite gZapCannonBallSpriteTemplate, ANIM_TARGET, 3, 10, 0, 0, 0, 30, 0 - createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 0 - createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 64, 40, 1 - createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 128, 40, 0 - createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 192, 40, 2 - createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 32, 40, 0 - createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 96, 40, 1 - createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 160, 40, 0 - createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 224, 40, 2 - waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1 - delay 15 - waitplaysewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 19 - call ElectricityEffect + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 11, 0, RGB(31, 31, 22) waitforvisualfinish + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 4, 0, RGB_BLACK + blendoff end +SparkBeam: + createsprite gSparkBeamSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0 + delay 1 + createsprite gSparkBeamSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0 + delay 1 + return + Move_WOOD_HAMMER: loadspritegfx ANIM_TAG_WOOD_HAMMER loadspritegfx ANIM_TAG_WOOD_HAMMER_HAMMER @@ -4236,22 +4299,22 @@ Move_HEAL_ORDER: Move_HEAD_SMASH: loadspritegfx ANIM_TAG_IMPACT - call SetImpactBackground - createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0 + loadspritegfx ANIM_TAG_ROCKS + createvisualtask AnimTask_SkullBashPosition, 2, 0 playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER waitforvisualfinish - delay 2 - createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 1 + playse SE_BANG + call SetImpactBackground + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 40, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 10, 0, 40, 1 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, ANIM_TARGET, 0 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET + createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -12, 32, 3, 4 + createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 8, 31, 2, 2 + createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -4, 28, 2, 3 + createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 12, 30, 4, 3 waitforvisualfinish - createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 4, 1 - createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 - createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 2 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 - loopsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET, 8, 3 - waitforvisualfinish - clearmonbg ANIM_TARGET - blendoff - delay 2 + createvisualtask AnimTask_SkullBashPosition, 2, 1 restorebg waitbgfadein end @@ -4800,19 +4863,82 @@ Move_WONDER_ROOM:: end Move_PSYSHOCK: + loadspritegfx ANIM_TAG_RED_ORB_2 + loadspritegfx ANIM_TAG_POISON_JAB + loadspritegfx ANIM_TAG_GRAY_SMOKE + loadspritegfx ANIM_TAG_WISP_FIRE monbg ANIM_TARGET setalpha 8, 8 + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 10, 1 - createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB(31, 23, 0) + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB_WHITE waitforvisualfinish - loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 10, 3 - createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 15, 1 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -6, -6, 15, ANIM_TARGET, 1 + delay 10 + call PsyshockConverge waitforvisualfinish clearmonbg ANIM_TARGET blendoff end +PsyshockConverge: + createsprite gPsyshockOrbSpriteTemplate, ANIM_TARGET, 2, 40, 40, 16 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET + delay 2 + createsprite gPsyshockOrbSpriteTemplate, ANIM_TARGET, 2, -40, -40, 16 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET + delay 2 + createsprite gPsyshockOrbSpriteTemplate, ANIM_TARGET, 2, 0, 40, 16 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET + delay 2 + createsprite gPsyshockOrbSpriteTemplate, ANIM_TARGET, 2, 0, -40, 16 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET + delay 2 + createsprite gPsyshockOrbSpriteTemplate, ANIM_TARGET, 2, 40, -20, 16 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET + delay 2 + createsprite gPsyshockOrbSpriteTemplate, ANIM_TARGET, 2, 40, 20, 16 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET + delay 2 + createsprite gPsyshockOrbSpriteTemplate, ANIM_TARGET, 2, -40, -20, 16 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET + delay 2 + createsprite gPsyshockOrbSpriteTemplate, ANIM_TARGET, 2, -40, 20, 16 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET + delay 2 + createsprite gPsyshockOrbSpriteTemplate, ANIM_TARGET, 2, -20, 30, 16 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET + delay 2 + createsprite gPsyshockOrbSpriteTemplate, ANIM_TARGET, 2, 20, -30, 16 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET + delay 2 + createsprite gPsyshockOrbSpriteTemplate, ANIM_TARGET, 2, -20, -30, 16 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET + delay 2 + createsprite gPsyshockOrbSpriteTemplate, ANIM_TARGET, 2, 20, 30, 16 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET + delay 2 + createsprite gPsyshockOrbSpriteTemplate, ANIM_TARGET, 2, -40, 0, 16 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET + delay 2 + createsprite gPsyshockOrbSpriteTemplate, ANIM_TARGET, 2, 40, 0, 16 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET + delay 6 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 15, 1 + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_TARGET, RGB_WHITE, 12, 0, 1 + createsprite gPsyshockSmokeSpriteTemplate, ANIM_TARGET, 2, 8, 8, 1, 0 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET + delay 2 + createsprite gPsyshockSmokeSpriteTemplate, ANIM_TARGET, 2, -8, -8, 1, 0 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET + delay 2 + createsprite gPsyshockSmokeSpriteTemplate, ANIM_TARGET, 2, 8, -8, 1, 0 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET + delay 2 + createsprite gPsyshockSmokeSpriteTemplate, ANIM_TARGET, 2, -8, 8, 1, 0 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET + delay 2 + return + Move_VENOSHOCK: loadspritegfx ANIM_TAG_POISON_BUBBLE loadspritegfx ANIM_TAG_TOXIC_BUBBLE @@ -5741,23 +5867,79 @@ Move_QUASH: Move_ACROBATICS: loadspritegfx ANIM_TAG_ROUND_SHADOW + loadspritegfx ANIM_TAG_WHITE_STREAK loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET setalpha 12, 8 playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336 waitforvisualfinish - playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET - createsprite gBounceBallLandSpriteTemplate, ANIM_TARGET, 3 - delay 7 - playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 - createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 11, 1 + call SetSkyBg + call AcrobaticsSlashes waitforvisualfinish clearmonbg ANIM_TARGET - blendoff + visible ANIM_ATTACKER + call UnsetSkyBg end +AcrobaticsSlashes: + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 40, 1 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, -10, 3 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 1 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, 24, -19 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 1 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, -28, -15 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 2 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, -6, -30 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 1 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, -20, 6 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 1 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, 28, 2 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 2 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, -14, -25 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 1 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, 9, -2 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 2 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, -1, 0 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 1 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, 21, 4 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 2 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, 28, 20 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 2 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, -7, 24 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 2 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, -11, 1 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 2 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, 12, -18 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 2 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, -21, -14 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 1 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, -29, 7 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 2 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, 15, 28 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 1 + createsprite gAcrobaticsSlashesSpriteTemplate, ANIM_TARGET, 2, -21, -16 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET + delay 2 + return + Move_REFLECT_TYPE: loadspritegfx ANIM_TAG_GUARD_RING @ring around user loadspritegfx ANIM_TAG_ICE_CHUNK @blue green color @@ -8252,17 +8434,99 @@ Move_FELL_STINGER: end Move_PHANTOM_FORCE: - choosetwoturnanim PhantomForceSetUp, PhantomForceUnleash -PhantomForceEnd: + loadspritegfx ANIM_TAG_ROUND_SHADOW + loadspritegfx ANIM_TAG_IMPACT + choosetwoturnanim PhantomForcePrep PhantomForceAttack +PhantomForceWaitEnd: + waitforvisualfinish + restorebg + waitbgfadein end -PhantomForceSetUp: +PhantomForcePrep: + monbg ANIM_ATTACKER + fadetobg BG_GHOST + waitbgfadein + delay 0 + playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 1, 3 + createvisualtask AnimTask_AttackerFadeToInvisible, 2, 1 + waitforvisualfinish + clearmonbg ANIM_ATTACKER invisible ANIM_ATTACKER - goto PhantomForceEnd -PhantomForceUnleash: - visible ANIM_ATTACKER - goto PhantomForceEnd + delay 1 + goto PhantomForceWaitEnd +PhantomForceAttack: + loadspritegfx ANIM_TAG_PURPLE_FLAME + loadspritegfx ANIM_TAG_WHITE_SHADOW @Destiny Bond + monbg ANIM_ATTACKER + splitbgprio ANIM_ATTACKER + fadetobg BG_GHOST + waitbgfadein + delay 1 + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT, 0, 12, 12, RGB(0, 0, 23) + setalpha 12, 8 + waitforvisualfinish + delay 10 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER + createvisualtask AnimTask_PurpleFlamesOnTarget, 0x3 + createvisualtask AnimTask_DestinyBondWhiteShadow, 0x5, 0x0, 0x30 + delay 30 + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT, 0, 12, 12, RGB(0, 0, 23) + waitforvisualfinish + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_TARGET, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_TARGET, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, 215, SOUND_PAN_TARGET + delay 3 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_TARGET, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_DEF_PARTNER, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_ATK_PARTNER, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, 215, SOUND_PAN_TARGET + delay 3 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_TARGET, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_DEF_PARTNER, 2 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_ATK_PARTNER, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, 215, SOUND_PAN_TARGET + delay 3 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 12, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 0, 2, 0, 13, RGB_PURPLE + waitforvisualfinish + delay 1 + playsewithpan SOUND_PAN_ATTACKER, 192 + createvisualtask AnimTask_NightShadeClone, 5, 10 + waitforvisualfinish + clearmonbg ANIM_ATTACKER + delay 1 + goto PhantomForceWaitEnd +PhantomForceBg: + fadetobg BG_DARK + waitbgfadeout + createvisualtask AnimTask_FadeScreenToWhite, 5 + waitbgfadein + return Move_TRICK_OR_TREAT: + loadspritegfx ANIM_TAG_EYE_SPARKLE + loadspritegfx ANIM_TAG_GHOSTLY_SPIRIT + fadetobg BG_NIGHTMARE + waitbgfadein + delay 10 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 10, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB(10, 2, 19) + waitforvisualfinish + playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ScaryFace, 5 + delay 13 + waitforvisualfinish + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(10, 2, 19) @;Deep purple + playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET + createsprite gCurseGhostSpriteTemplate, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 14, 1 + waitforvisualfinish + clearmonbg ANIM_TARGET + restorebg + waitbgfadein end Move_NOBLE_ROAR: @@ -15101,16 +15365,21 @@ Move_SILK_TRAP:: clearmonbg ANIM_ATK_PARTNER end -@ Also used by Snow weather. Currently identical with Move_HAIL +@ Also used by Snow weather. Credits to Dat.H A Move_SNOWSCAPE:: - loadspritegfx ANIM_TAG_HAIL - loadspritegfx ANIM_TAG_ICE_CRYSTALS - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 6, RGB_BLACK + loadspritegfx ANIM_TAG_SNOWFLAKES + playsewithpan SE_M_GUST, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 2, 0, 4, RGB(11, 18, 22) waitforvisualfinish - createvisualtask AnimTask_Hail, 5 - loopsewithpan SE_M_HAIL, 0, 8, 10 + createvisualtask AnimTask_CreateSnowflakes, 2, 0, 3, 120 + createvisualtask AnimTask_CreateSnowflakes, 2, 0, 3, 120 + createvisualtask AnimTask_CreateSnowflakes, 2, 0, 3, 120 + delay 120 + playsewithpan SE_M_GUST2, SOUND_PAN_ATTACKER + delay 30 + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 2, 4, 0, RGB(11, 18, 22) waitforvisualfinish - createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 6, 0, RGB_BLACK end @Credits to Skeli @@ -16462,6 +16731,184 @@ Move_DOUBLE_SHOCK:: blendoff end +Move_SYRUP_BOMB:: + createvisualtask AnimTask_SyrupBomb, 0x5 + jumpargeq 0x0, FALSE, Move_SYRUP_BOMB_RED + jumpargeq 0x0, TRUE, Move_SYRUP_BOMB_YELLOW + +@ Credits to Dat.H A +Move_SYRUP_BOMB_RED: + loadspritegfx ANIM_TAG_SYRUP_BLOB_RED + loadspritegfx ANIM_TAG_SYRUP_SPLAT_RED + loadspritegfx ANIM_TAG_SYRUP_SHELL_RED + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + call SyrupBombProjectileRed + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(20, 3, 3) + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, 39, -28, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, -42, -42, 20 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET + delay 5 + createsprite gSyrupBombRedShellSpriteTemplate, ANIM_TARGET, 1, ANIM_TARGET, 100 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, 0, 40, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, -8, -44, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, -46, -28, 20 + createsprite gSyrupBombRedHitParticleSpriteTemplate, ANIM_TARGET, 2, 46, 9, 20 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET + delay 5 + waitsound + waitforvisualfinish + end +SyrupBombProjectileRed: + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER + createsprite gSyrupRedProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 + delay 3 + return + +Move_SYRUP_BOMB_YELLOW: + loadspritegfx ANIM_TAG_SYRUP_BLOB_YELLOW + loadspritegfx ANIM_TAG_SYRUP_SPLAT_YELLOW + loadspritegfx ANIM_TAG_SYRUP_SHELL_YELLOW + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + call SyrupBombProjectileYellow + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(23, 13, 1) + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, 39, -28, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, -42, -42, 20 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET + delay 5 + createsprite gSyrupBombYellowShellSpriteTemplate, ANIM_TARGET, 1, ANIM_TARGET, 100 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, 0, 40, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, -8, -44, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, -46, -28, 20 + createsprite gSyrupBombYellowHitParticleSpriteTemplate, ANIM_TARGET, 2, 46, 9, 20 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET + delay 5 + waitsound + waitforvisualfinish + end +SyrupBombProjectileYellow: + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER + createsprite gSyrupYellowProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 + delay 3 + return + +General_SyrupBombSpeedDrop:: + createvisualtask AnimTask_StickySyrup, 0x5 + jumpargeq 0x0, FALSE, SyrupBombSpeedDropRed + jumpargeq 0x0, TRUE, SyrupBombSpeedDropYellow + +SyrupBombSpeedDropRed: + loadspritegfx ANIM_TAG_SYRUP_BLOB_RED + loadspritegfx ANIM_TAG_SYRUP_SHELL_RED + loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 13, 6 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(20, 3, 3) + createsprite gSyrupBombRedShellBSpriteTemplate, ANIM_TARGET, 1, ANIM_TARGET, 60 + waitforvisualfinish + end + +SyrupBombSpeedDropYellow: + loadspritegfx ANIM_TAG_SYRUP_BLOB_YELLOW + loadspritegfx ANIM_TAG_SYRUP_SHELL_YELLOW + loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 13, 6 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(23, 13, 1) + createsprite gSyrupBombYellowShellBSpriteTemplate, ANIM_TARGET, 1, ANIM_TARGET, 60 + waitforvisualfinish + end + +Move_CHILLY_RECEPTION:: + loadspritegfx ANIM_TAG_CONFETTI + loadspritegfx ANIM_TAG_PINK_CLOUD + loadspritegfx ANIM_TAG_ICE_CRYSTALS + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 16, 96, ANIM_ATTACKER, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 1, 0, 13, RGB_BLACK + delay 60 + waitforvisualfinish + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 1, 13, 0, RGB_BLACK + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7 + waitforvisualfinish + createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, DOUBLE_CRY_ROAR + setalpha 12, 4 + monbg ANIM_ATTACKER + playsewithpan SE_BALL_OPEN, SOUND_PAN_TARGET + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 122, 3, -14, 18, 24 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 121, 3, 14, 6, 24 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 120, 3, -12, 12, 24 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 119, 3, 14, 18, 24 + createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 118, 3, 0, 0, 24 + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + call CreateFlatterConfetti + waitforvisualfinish + clearmonbg ANIM_ATTACKER + delay 10 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 0, 3, RGB_WHITE + playsewithpan SE_M_GUST, SOUND_PAN_ATTACKER + call ChillyReceptionSnowballs + call ChillyReceptionSnowballs + call ChillyReceptionSnowballs + call ChillyReceptionSnowballs + playsewithpan SE_M_GUST2, SOUND_PAN_TARGET + waitforvisualfinish + waitsound + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 3, 0, RGB_WHITE + end +ChillyReceptionSnowballs: + createsprite gPowderSnowSnowballSpriteTemplate, ANIM_ATTACKER, 40, 200, -150, 24, 0, 56, 4, 4, 0 + delay 3 + createsprite gPowderSnowSnowballSpriteTemplate, ANIM_ATTACKER, 40, 200, -100, 24, -10, 56, 4, 4, 0 + delay 3 + createsprite gPowderSnowSnowballSpriteTemplate, ANIM_ATTACKER, 40, 200, -100, 24, 10, 56, -4, 3, 0 + delay 3 + createsprite gPowderSnowSnowballSpriteTemplate, ANIM_ATTACKER, 40, 200, -200, 24, -20, 56, -4, 5, 0 + delay 3 + createsprite gPowderSnowSnowballSpriteTemplate, ANIM_ATTACKER, 40, 200, -150, 24, 15, 56, 4, 4, 0 + delay 3 + createsprite gPowderSnowSnowballSpriteTemplate, ANIM_ATTACKER, 40, 200, -200, 24, -20, 56, 4, 4, 0 + delay 3 + createsprite gPowderSnowSnowballSpriteTemplate, ANIM_ATTACKER, 40, 200, -200, 24, 20, 56, 4, 4, 0 + delay 3 + return + Move_TERA_BLAST:: Move_AXE_KICK:: Move_LAST_RESPECTS:: @@ -16489,7 +16936,6 @@ Move_RUINATION:: Move_COLLISION_COURSE:: Move_ELECTRO_DRIFT:: Move_SHED_TAIL:: -Move_CHILLY_RECEPTION:: Move_TIDY_UP:: Move_POUNCE:: Move_TRAILBLAZE:: @@ -16508,6 +16954,9 @@ Move_COMBAT_TORQUE:: Move_MAGICAL_TORQUE:: Move_PSYBLADE:: Move_HYDRO_STEAM:: +Move_BLOOD_MOON:: +Move_MATCHA_GOTCHA:: +Move_IVY_CUDGEL:: end @to do @@@@@@@@@@@@@@@@@@@@@@@ GEN 1-3 @@@@@@@@@@@@@@@@@@@@@@@ @@ -19421,8 +19870,8 @@ Move_MILK_DRINK: Move_MAGNITUDE: createvisualtask AnimTask_IsPowerOver99, 2 waitforvisualfinish - jumpargeq 15, FALSE, MagnitudeRegular - jumpargeq 15, TRUE, MagnitudeIntense + jumpreteq FALSE, MagnitudeRegular + jumpreteq TRUE, MagnitudeIntense MagnitudeEnd: end MagnitudeRegular: @@ -26687,6 +27136,10 @@ General_HangedOn: end General_Rain: + call RainDrops + end + +RainDrops: loadspritegfx ANIM_TAG_RAIN_DROPS playsewithpan SE_M_RAIN_DANCE, SOUND_PAN_ATTACKER createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 2, 0, 4, RGB_BLACK @@ -26697,7 +27150,7 @@ General_Rain: waitforvisualfinish createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 2, 4, 0, RGB_BLACK waitforvisualfinish - end + return General_Sun: goto Move_SUNNY_DAY @@ -26930,8 +27383,6 @@ General_RestoreBg: waitbgfadein end -end - General_ZMoveActivate: loadspritegfx ANIM_TAG_FOCUS_ENERGY @focus energy loadspritegfx ANIM_TAG_Z_MOVE_SYMBOL @Z-Move Symbol @@ -27124,9 +27575,9 @@ General_AffectionHangedOn:: createvisualtask AnimTask_SwayMon, 5, 0, 12, 4096, 4, ANIM_ATTACKER delay 15 createvisualtask AnimTask_AffectionHangedOn, 0x5 - jumpargeq 0x0, FRIENDSHIP_100_TO_149, General_AffectionHangedOn_3Hearts - jumpargeq 0x0, FRIENDSHIP_150_TO_199, General_AffectionHangedOn_4Hearts - jumpargeq 0x0, FRIENDSHIP_200_TO_254, General_AffectionHangedOn_5Hearts + jumpargeq 0x0, AFFECTION_THREE_HEARTS, General_AffectionHangedOn_3Hearts + jumpargeq 0x0, AFFECTION_FOUR_HEARTS, General_AffectionHangedOn_4Hearts + jumpargeq 0x0, AFFECTION_FIVE_HEARTS, General_AffectionHangedOn_5Hearts createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -384, -31 General_AffectionHangedOn_5Hearts: createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -128, -22 @@ -27142,6 +27593,75 @@ General_AffectionHangedOn_3Hearts: General_SaltCureDamage:: goto Status_Freeze +General_Rainbow:: + call RainDrops + delay 30 + loadspritegfx ANIM_TAG_SUNLIGHT + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 1, 0, 6, RGB_WHITE + waitforvisualfinish + panse_adjustnone SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0 + call SunnyDayLightRay + call SunnyDayLightRay + call SunnyDayLightRay + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS), 1, 6, 0, RGB_WHITE + waitforvisualfinish + delay 30 + fadetobg BG_RAINBOW + panse_adjustnone SE_M_ABSORB_2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0 + delay 90 + blendoff + restorebg + waitbgfadein + clearmonbg ANIM_ATK_PARTNER + end + +General_SeaOfFire:: + loadspritegfx ANIM_TAG_SMALL_EMBER + monbg ANIM_DEF_PARTNER + splitbgprio ANIM_TARGET + playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET + call SeaOfFireTwisterDos + delay 3 + call SeaOfFireTwisterTres + waitforvisualfinish + clearmonbg ANIM_DEF_PARTNER + blendoff + end + +SeaOfFireTwisterDos: + createsprite gTwisterEmberSpriteTemplate, ANIM_TARGET, 2, 45, 90, 5, 70, 30 + delay 2 + createsprite gTwisterEmberSpriteTemplate, ANIM_TARGET, 2, 50, 85, 6, 60, 30 + delay 1 + createsprite gTwisterEmberSpriteTemplate, ANIM_TARGET, 2, 47, 77, 7, 60, 30 + delay 2 + createsprite gTwisterEmberSpriteTemplate, ANIM_TARGET, 2, 40, 86, 8, 50, 30 + delay 3 + createsprite gTwisterEmberSpriteTemplate, ANIM_TARGET, 2, 42, 82, 7, 45, 30 + delay 1 + createsprite gTwisterEmberSpriteTemplate, ANIM_TARGET, 2, 47, 83, 5, 38, 30 + delay 2 + return + +SeaOfFireTwisterTres: + createsprite gTwisterEmberSpriteTemplate, ANIM_TARGET, 2, 45, 90, 3, 45, 30 + delay 2 + createsprite gTwisterEmberSpriteTemplate, ANIM_TARGET, 2, 50, 85, 4, 39, 30 + delay 1 + createsprite gTwisterEmberSpriteTemplate, ANIM_TARGET, 2, 47, 77, 5, 39, 30 + delay 2 + createsprite gTwisterEmberSpriteTemplate, ANIM_TARGET, 2, 40, 86, 6, 32, 30 + delay 3 + createsprite gTwisterEmberSpriteTemplate, ANIM_TARGET, 2, 42, 82, 5, 27, 30 + delay 1 + createsprite gTwisterEmberSpriteTemplate, ANIM_TARGET, 2, 47, 83, 3, 24, 30 + delay 2 + return + +General_Swamp:: @ To do + goto Move_HAZE + SnatchMoveTrySwapFromSubstitute: createvisualtask AnimTask_IsAttackerBehindSubstitute, 2 jumprettrue SnatchMoveSwapSubstituteForMon @@ -32863,3 +33383,182 @@ SoulStealingSevenStarStrikeExplosion: createsprite gSoulStealExplosionSpriteTemplate, ANIM_TARGET, 3, 0x10, 0x10, ANIM_TARGET, 0x1 delay 0x6 return + +@@@@@@@@@@ MAX MOVES @@@@@@@@@@ +General_SetWeather:: + createvisualtask AnimTask_GetWeatherToSet, 2 + jumpreteq 1, General_Sun + jumpreteq 2, General_Rain + jumpreteq 3, General_Sandstorm + jumpreteq 4, General_Hail + end + +Move_MAX_GUARD: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_PROTECT + end + +Move_MAX_STRIKE: +Move_G_MAX_REPLENISH: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_GIGA_IMPACT + end + +Move_MAX_AIRSTREAM: +Move_G_MAX_WIND_RAGE: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_AEROBLAST + end + +Move_MAX_OOZE: +Move_G_MAX_MALODOR: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_GUNK_SHOT + end + +Move_G_MAX_WILDFIRE: +Move_G_MAX_FIREBALL: +Move_G_MAX_CENTIFERNO: +Move_MAX_FLARE: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_BLAST_BURN + end + +Move_G_MAX_CANNONADE: +Move_G_MAX_HYDROSNIPE: +Move_G_MAX_FOAM_BURST: +Move_MAX_GEYSER: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_HYDRO_CANNON + end + +Move_G_MAX_VINE_LASH: +Move_G_MAX_DRUM_SOLO: +Move_G_MAX_TARTNESS: +Move_G_MAX_SWEETNESS: +Move_MAX_OVERGROWTH: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_FRENZY_PLANT + end + +Move_MAX_LIGHTNING: +Move_G_MAX_STUN_SHOCK: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_ZAP_CANNON + end + +Move_G_MAX_CHI_STRIKE: +Move_G_MAX_ONE_BLOW: +Move_G_MAX_RAPID_FLOW: +Move_MAX_KNUCKLE: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_CLOSE_COMBAT + end + +Move_G_MAX_RESONANCE: +Move_MAX_HAILSTORM: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_SHEER_COLD + end + +Move_G_MAX_SANDBLAST: +Move_MAX_QUAKE: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_FISSURE + end + +Move_G_MAX_BEFUDDLE: +Move_MAX_FLUTTERBY: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_BUG_BUZZ + end + +Move_G_MAX_STEELSURGE: +Move_G_MAX_MELTDOWN: +Move_MAX_STEELSPIKE: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_HEAVY_SLAM + end + +Move_G_MAX_TERROR: +Move_MAX_PHANTASM: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_PHANTOM_FORCE + end + +Move_G_MAX_GRAVITAS: +Move_MAX_MINDSTORM: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_PSYCHO_BOOST + end + +Move_G_MAX_SMITE: +Move_G_MAX_FINALE: +Move_MAX_STARFALL: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_MOONBLAST + end + +Move_G_MAX_STONESURGE: +Move_G_MAX_VOLCALITH: +Move_MAX_ROCKFALL: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_ROCK_WRECKER + end + +Move_G_MAX_DEPLETION: +Move_MAX_WYRMWIND: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_SPACIAL_REND + end + +Move_G_MAX_SNOOZE: +Move_MAX_DARKNESS: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_DARK_PULSE + end + +Move_G_MAX_CUDDLE: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_COVET + end + +Move_G_MAX_VOLT_CRASH: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_VOLT_TACKLE + end + +Move_G_MAX_GOLD_RUSH: + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1 + waitforvisualfinish + goto Move_PAY_DAY + end + +@@@ DYNAMAX AND MAX RAIDS +General_DynamaxGrowth:: @ PORTED FROM CFRU + createvisualtask SoundTask_PlayCryWithEcho, 2, ANIM_ATTACKER, 2 + delay 8 + createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x0 + waitforvisualfinish + end diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 30b104d7c5..3cf9113196 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -188,7 +188,7 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectMemento @ EFFECT_MEMENTO .4byte BattleScript_EffectHit @ EFFECT_FACADE .4byte BattleScript_EffectFocusPunch @ EFFECT_FOCUS_PUNCH - .4byte BattleScript_EffectSmellingsalt @ EFFECT_SMELLINGSALT + .4byte BattleScript_EffectSmellingsalt @ EFFECT_SMELLING_SALTS .4byte BattleScript_EffectFollowMe @ EFFECT_FOLLOW_ME .4byte BattleScript_EffectNaturePower @ EFFECT_NATURE_POWER .4byte BattleScript_EffectCharge @ EFFECT_CHARGE @@ -231,7 +231,7 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectCalmMind @ EFFECT_CALM_MIND .4byte BattleScript_EffectDragonDance @ EFFECT_DRAGON_DANCE .4byte BattleScript_EffectCamouflage @ EFFECT_CAMOUFLAGE - .4byte BattleScript_EffectHit @ EFFECT_PLEDGE + .4byte BattleScript_EffectPledge @ EFFECT_PLEDGE .4byte BattleScript_EffectFling @ EFFECT_FLING .4byte BattleScript_EffectNaturalGift @ EFFECT_NATURAL_GIFT .4byte BattleScript_EffectWakeUpSlap @ EFFECT_WAKE_UP_SLAP @@ -435,8 +435,192 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectCorrosiveGas @ EFFECT_CORROSIVE_GAS .4byte BattleScript_EffectHit @ EFFECT_POPULATION_BOMB .4byte BattleScript_EffectMortalSpin @ EFFECT_MORTAL_SPIN - .4byte BattleScript_EffectHit @ EFFECT_GIGATON_HAMMER .4byte BattleScript_EffectSaltCure @ EFFECT_SALT_CURE + .4byte BattleScript_EffectChillyReception @ EFFECT_CHILLY_RECEPTION + .4byte BattleScript_EffectMatchaGotcha @ EFFECT_MATCHA_GOTCHA + .4byte BattleScript_EffectSyrupBomb @ EFFECT_SYRUP_BOMB + .4byte BattleScript_EffectMaxMove @ EFFECT_MAX_MOVE + .4byte BattleScript_EffectGlaiveRush @ EFFECT_GLAIVE_RUSH + .4byte BattleScript_EffectBrickBreak @ EFFECT_RAGING_BULL + .4byte BattleScript_EffectHit @ EFFECT_RAGE_FIST + +BattleScript_EffectGlaiveRush:: + call BattleScript_EffectHit_Ret + jumpifhalfword CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_TryFaintMon + setglaiverush + goto BattleScript_TryFaintMon + +BattleScript_EffectSyrupBomb:: + setmoveeffect MOVE_EFFECT_SYRUP_BOMB + goto BattleScript_EffectHit + +BattleScript_SyrupBombActivates:: + printstring STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP + waitmessage B_WAIT_TIME_LONG + return + +BattleScript_SyrupBombEndTurn:: + flushtextbox + playanimation BS_ATTACKER, B_ANIM_SYRUP_BOMB_SPEED_DROP + setstatchanger STAT_SPEED, 1, TRUE + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_SyrupBombTurnDmgEnd + printfromtable gStatDownStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_SyrupBombTurnDmgEnd: + end2 + +BattleScript_EffectMatchaGotcha:: + setmoveeffect MOVE_EFFECT_BURN + goto BattleScript_EffectAbsorb + end + +BattleScript_EffectChillyReception:: + printstring STRINGID_PKMNTELLCHILLINGRECEPTIONJOKE + waitmessage B_WAIT_TIME_LONG + attackcanceler + ppreduce + jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN_PRIMAL, BattleScript_EffectChillyReceptionBlockedByPrimalSun + jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_RAIN_PRIMAL, BattleScript_EffectChillyReceptionBlockedByPrimalRain + jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_EffectChillyReceptionBlockedByStrongWinds + call BattleScript_EffectChillyReceptionPlayAnimation + setsnow + call BattleScript_MoveWeatherChangeRet + goto BattleScript_MoveSwitch +BattleScript_EffectChillyReceptionPlayAnimation: + attackstring + attackanimation + waitanimation + return +BattleScript_EffectChillyReceptionBlockedByPrimalSun: + call BattleScript_EffectChillyReceptionTrySwitchWeatherFailed + call BattleScript_ExtremelyHarshSunlightWasNotLessenedRet + goto BattleScript_MoveSwitch +BattleScript_EffectChillyReceptionBlockedByPrimalRain: + call BattleScript_EffectChillyReceptionTrySwitchWeatherFailed + call BattleScript_NoReliefFromHeavyRainRet + goto BattleScript_MoveSwitch +BattleScript_EffectChillyReceptionBlockedByStrongWinds: + call BattleScript_EffectChillyReceptionTrySwitchWeatherFailed + call BattleScript_MysteriousAirCurrentBlowsOnRet + goto BattleScript_MoveSwitch +BattleScript_EffectChillyReceptionTrySwitchWeatherFailed: + jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_FailedFromAtkString + jumpifcantswitch SWITCH_IGNORE_ESCAPE_PREVENTION | BS_ATTACKER, BattleScript_FailedFromAtkString + call BattleScript_EffectChillyReceptionPlayAnimation + return + +BattleScript_CheckPrimalWeather: + jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN_PRIMAL, BattleScript_ExtremelyHarshSunlightWasNotLessened + jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_RAIN_PRIMAL, BattleScript_NoReliefFromHeavyRain + jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_MysteriousAirCurrentBlowsOn + return + +BattleScript_MoveSwitch: + jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_MoveSwitchEnd + jumpifcantswitch SWITCH_IGNORE_ESCAPE_PREVENTION | BS_ATTACKER, BattleScript_MoveSwitchEnd + printstring STRINGID_PKMNWENTBACK + waitmessage B_WAIT_TIME_SHORT + openpartyscreen BS_ATTACKER, BattleScript_MoveSwitchEnd + switchoutabilities BS_ATTACKER + waitstate + switchhandleorder BS_ATTACKER, 2 + returntoball BS_ATTACKER + getswitchedmondata BS_ATTACKER + switchindataupdate BS_ATTACKER + hpthresholds BS_ATTACKER + trytoclearprimalweather + printstring STRINGID_EMPTYSTRING3 + waitmessage 1 + printstring STRINGID_SWITCHINMON + switchinanim BS_ATTACKER, TRUE + waitstate + switchineffects BS_ATTACKER +BattleScript_MoveSwitchEnd: + end + +BattleScript_EffectPledge:: + attackcanceler + setpledge BattleScript_HitFromAccCheck + attackstring + pause B_WAIT_TIME_MED + ppreduce + printstring STRINGID_WAITINGFORPARTNERSMOVE + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + +BattleScript_EffectCombinedPledge_Water:: + call BattleScript_EffectHit_Pledge + setpledgestatus BS_ATTACKER, SIDE_STATUS_RAINBOW + pause B_WAIT_TIME_SHORTEST + printstring STRINGID_ARAINBOWAPPEAREDONSIDE + waitmessage B_WAIT_TIME_LONG + playanimation BS_ATTACKER, B_ANIM_RAINBOW + waitanimation + goto BattleScript_MoveEnd + +BattleScript_TheRainbowDisappeared:: + printstring STRINGID_THERAINBOWDISAPPEARED + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_EffectCombinedPledge_Fire:: + call BattleScript_EffectHit_Pledge + setpledgestatus BS_TARGET, SIDE_STATUS_SEA_OF_FIRE + pause B_WAIT_TIME_SHORTEST + printstring STRINGID_SEAOFFIREENVELOPEDSIDE + waitmessage B_WAIT_TIME_LONG + playanimation BS_TARGET, B_ANIM_SEA_OF_FIRE + waitanimation + goto BattleScript_MoveEnd + +BattleScript_HurtByTheSeaOfFire:: + printstring STRINGID_HURTBYTHESEAOFFIRE + waitmessage B_WAIT_TIME_LONG + goto BattleScript_DoTurnDmg + +BattleScript_TheSeaOfFireDisappeared:: + printstring STRINGID_THESEAOFFIREDISAPPEARED + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_EffectCombinedPledge_Grass:: + call BattleScript_EffectHit_Pledge + setpledgestatus BS_TARGET, SIDE_STATUS_SWAMP + pause B_WAIT_TIME_SHORTEST + printstring STRINGID_SWAMPENVELOPEDSIDE + waitmessage B_WAIT_TIME_LONG + playanimation BS_TARGET, B_ANIM_SWAMP + waitanimation + goto BattleScript_MoveEnd + +BattleScript_TheSwampDisappeared:: + printstring STRINGID_THESWAMPDISAPPEARED + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_EffectHit_Pledge:: + pause B_WAIT_TIME_MED + printstring STRINGID_THETWOMOVESBECOMEONE + waitmessage B_WAIT_TIME_LONG + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + ppreduce + critcalc + damagecalc + adjustdamage + attackanimation + waitanimation + effectivenesssound + hitanimation BS_TARGET + waitstate + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + critmessage + waitmessage B_WAIT_TIME_LONG + resultmessage + waitmessage B_WAIT_TIME_LONG + seteffectwithchance + tryfaintmon BS_TARGET + return BattleScript_EffectSaltCure: call BattleScript_EffectHit_Ret @@ -500,7 +684,6 @@ BattleScript_EffectMakeItRain: BattleScript_MakeItRainContinuous: setmoveeffect MOVE_EFFECT_PAYDAY call BattleScript_EffectHit_Ret - seteffectwithchance tryfaintmon BS_TARGET setmoveeffect MOVE_EFFECT_SP_ATK_MINUS_1 | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN seteffectprimary @@ -544,14 +727,14 @@ BattleScript_EffectRevivalBlessing:: waitanimation printstring STRINGID_PKMNREVIVEDREADYTOFIGHT waitmessage B_WAIT_TIME_LONG - jumpifbyte CMP_EQUAL, gBattleCommunication, TRUE, BattleScript_EffectRevivalBlessingSendOut + jumpifbyte CMP_EQUAL, gBattleCommunication, TRUE, BattleScript_EffectRevivalBlessingSendOut goto BattleScript_MoveEnd BattleScript_EffectRevivalBlessingSendOut: - switchinanim BS_SCRIPTING, FALSE + switchinanim BS_SCRIPTING, FALSE waitstate switchineffects BS_SCRIPTING - goto BattleScript_MoveEnd + goto BattleScript_MoveEnd BattleScript_StealthRockActivates:: setstealthrock BattleScript_MoveEnd @@ -632,10 +815,10 @@ BattleScript_TeatimeLoop: jumpifabsorbaffected BS_TARGET, BattleScript_Teatimesorb jumpifmotoraffected BS_TARGET, BattleScript_Teatimemotor jumpifteainvulnerable BS_TARGET, BattleScript_Teatimevul @ in semi-invulnerable state OR held item is not a Berry - orword gHitMarker, HITMARKER_NO_ANIMATIONS | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_DISGUISE + orword gHitMarker, HITMARKER_DISABLE_ANIMATION | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_DISGUISE setbyte sBERRY_OVERRIDE, TRUE @ override the requirements for eating berries consumeberry BS_TARGET, TRUE @ consume the berry, then restore the item from changedItems - bicword gHitMarker, HITMARKER_NO_ANIMATIONS | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_DISGUISE + bicword gHitMarker, HITMARKER_DISABLE_ANIMATION | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_DISGUISE setbyte sBERRY_OVERRIDE, FALSE removeitem BS_TARGET moveendto MOVEEND_NEXT_TARGET @@ -729,8 +912,7 @@ BattleScript_AffectionBasedStatusHeal_Continue: end2 BattleScript_ShellTrapSetUp:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 0x1 + flushtextbox playanimation BS_ATTACKER, B_ANIM_SHELL_TRAP_SETUP, NULL printstring STRINGID_PREPARESHELLTRAP waitmessage B_WAIT_TIME_LONG @@ -803,8 +985,7 @@ BattleScript_EffectCourtChange:: BattleScript_BeakBlastSetUp:: setbeakblast BS_ATTACKER - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox playanimation BS_ATTACKER, B_ANIM_BEAK_BLAST_SETUP, NULL printstring STRINGID_HEATUPBEAK waitmessage B_WAIT_TIME_LONG @@ -828,7 +1009,7 @@ BattleScript_EffectMeteorBeam:: BattleScript_FirstChargingTurnMeteorBeam:: attackcanceler - printstring STRINGID_EMPTYSTRING3 + flushtextbox ppreduce attackanimation waitanimation @@ -937,9 +1118,9 @@ BattleScript_EffectFlingConsumeBerry: savebattleritem BS_TARGET battleritemtolastuseditem BS_TARGET setbyte sBERRY_OVERRIDE, 1 @ override the requirements for eating berries - orword gHitMarker, HITMARKER_NO_ANIMATIONS + orword gHitMarker, HITMARKER_DISABLE_ANIMATION consumeberry BS_TARGET, TRUE - bicword gHitMarker, HITMARKER_NO_ANIMATIONS + bicword gHitMarker, HITMARKER_DISABLE_ANIMATION setbyte sBERRY_OVERRIDE, 0 restorebattleritem BS_TARGET BattleScript_FlingEnd: @@ -1025,7 +1206,7 @@ BattleScript_EffectPhotonGeyser: goto BattleScript_MoveEnd BattleScript_EffectAuraWheel: @ Aura Wheel can only be used by Morpeko - jumpifspecies BS_ATTACKER, SPECIES_MORPEKO, BattleScript_EffectSpeedUpHit + jumpifspecies BS_ATTACKER, SPECIES_MORPEKO_FULL_BELLY, BattleScript_EffectSpeedUpHit jumpifspecies BS_ATTACKER, SPECIES_MORPEKO_HANGRY, BattleScript_EffectSpeedUpHit goto BattleScript_PokemonCantUseTheMove @@ -1034,7 +1215,7 @@ BattleScript_EffectClangorousSoul: attackstring ppreduce cutonethirdhpraisestats BattleScript_ButItFailed - orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_SKIP_DMG_TRACK | HITMARKER_PASSIVE_DAMAGE | HITMARKER_IGNORE_DISGUISE + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_BIDE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_IGNORE_DISGUISE attackanimation waitanimation healthbarupdate BS_ATTACKER @@ -1048,7 +1229,7 @@ BattleScript_EffectOctolock: accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce - setoctolock BS_TARGET, BattleScript_ButItFailed + trysetoctolock BS_TARGET, BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_CANTESCAPEBECAUSEOFCURRENTMOVE @@ -1056,29 +1237,19 @@ BattleScript_EffectOctolock: goto BattleScript_MoveEnd BattleScript_OctolockEndTurn:: - setbyte sSTAT_ANIM_PLAYED, FALSE - jumpifstat BS_TARGET, CMP_GREATER_THAN, STAT_DEF, MIN_STAT_STAGE, BattleScript_OctolockLowerDef - jumpifstat BS_TARGET, CMP_GREATER_THAN, STAT_SPDEF, MIN_STAT_STAGE, BattleScript_OctolockTryLowerSpDef - goto BattleScript_OctolockEnd2 -BattleScript_OctolockLowerDef: - jumpifability BS_TARGET, ABILITY_BIG_PECKS, BattleScript_OctolockTryLowerSpDef playstatchangeanimation BS_ATTACKER, BIT_DEF | BIT_SPDEF, STAT_CHANGE_NEGATIVE - setbyte sSTAT_ANIM_PLAYED, TRUE setstatchanger STAT_DEF, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_OctolockTryLowerSpDef - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_OctolockTryLowerSpDef - printfromtable gStatUpStringIds + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctolockTryLowerSpDef +BattleScript_OctolockTryLowerDef: + printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG BattleScript_OctolockTryLowerSpDef: - jumpifbyte CMP_EQUAL, sSTAT_ANIM_PLAYED, TRUE, BattleScript_OctolockSkipSpDefAnim - playstatchangeanimation BS_ATTACKER, BIT_SPDEF, STAT_CHANGE_NEGATIVE -BattleScript_OctolockSkipSpDefAnim: setstatchanger STAT_SPDEF, 1, TRUE - statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_OctolockEnd2 - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_OctolockEnd2 - printfromtable gStatUpStringIds + statbuffchange STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_OctlockTurnDmgEnd +BattleScript_OctolockTurnDmgPrintMsg: + printfromtable gStatDownStringIds waitmessage B_WAIT_TIME_LONG -BattleScript_OctolockEnd2:: +BattleScript_OctlockTurnDmgEnd: end2 BattleScript_EffectPoltergeist: @@ -1138,7 +1309,7 @@ BattleScript_BothCanNoLongerEscape:: BattleScript_EffectHyperspaceFury: jumpifspecies BS_ATTACKER, SPECIES_HOOPA_UNBOUND, BattleScript_EffectHyperspaceFuryUnbound - jumpifspecies BS_ATTACKER, SPECIES_HOOPA, BattleScript_ButHoopaCantUseIt + jumpifspecies BS_ATTACKER, SPECIES_HOOPA_CONFINED, BattleScript_ButHoopaCantUseIt goto BattleScript_PokemonCantUseTheMove BattleScript_EffectHyperspaceFuryUnbound:: @@ -1164,9 +1335,8 @@ BattleScript_HyperspaceFuryRemoveProtect:: BattleScript_EffectPlasmaFists: call BattleScript_EffectHit_Ret - seteffectwithchance tryfaintmon BS_TARGET - applyplasmafists + orword gFieldStatuses, STATUS_FIELD_ION_DELUGE printstring STRINGID_IONDELUGEON waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd @@ -1229,9 +1399,9 @@ BattleScript_EffectStuffCheeks:: waitanimation BattleScript_StuffCheeksEatBerry: setbyte sBERRY_OVERRIDE, 1 - orword gHitMarker, HITMARKER_NO_ANIMATIONS + orword gHitMarker, HITMARKER_DISABLE_ANIMATION consumeberry BS_ATTACKER, TRUE - bicword gHitMarker, HITMARKER_NO_ANIMATIONS + bicword gHitMarker, HITMARKER_DISABLE_ANIMATION setbyte sBERRY_OVERRIDE, 0 removeitem BS_ATTACKER setstatchanger STAT_DEF, 2, FALSE @@ -1342,12 +1512,12 @@ BattleScript_NoMoveEffect: goto BattleScript_EffectHit BattleScript_EffectRelicSong: - setmoveeffect MOVE_EFFECT_RELIC_SONG | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN + setmoveeffect MOVE_EFFECT_SLEEP call BattleScript_EffectHit_Ret - seteffectwithchance - argumentstatuseffect tryfaintmon BS_TARGET - goto BattleScript_MoveEnd + moveendall + tryrelicsong + end BattleScript_EffectAllySwitch: attackcanceler @@ -1495,11 +1665,11 @@ BattleScript_MoveEffectIncinerate:: BattleScript_MoveEffectBugBite:: printstring STRINGID_BUGBITE waitmessage B_WAIT_TIME_LONG - orword gHitMarker, HITMARKER_NO_ANIMATIONS + orword gHitMarker, HITMARKER_DISABLE_ANIMATION setbyte sBERRY_OVERRIDE, 1 @ override the requirements for eating berries savetarget consumeberry BS_ATTACKER, FALSE - bicword gHitMarker, HITMARKER_NO_ANIMATIONS + bicword gHitMarker, HITMARKER_DISABLE_ANIMATION setbyte sBERRY_OVERRIDE, 0 trysymbiosis restoretarget @@ -1515,8 +1685,7 @@ BattleScript_MoveEffectCoreEnforcer:: waitmessage B_WAIT_TIME_LONG trytoclearprimalweather tryrevertweatherform - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox BattleScript_CoreEnforcerRet: return @@ -1599,23 +1768,7 @@ BattleScript_EffectPartingShotTrySpAtk: waitmessage B_WAIT_TIME_LONG BattleScript_EffectPartingShotSwitch: moveendall - jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_PartingShotEnd - jumpifcantswitch SWITCH_IGNORE_ESCAPE_PREVENTION | BS_ATTACKER, BattleScript_PartingShotEnd - openpartyscreen BS_ATTACKER, BattleScript_PartingShotEnd - switchoutabilities BS_ATTACKER - waitstate - switchhandleorder BS_ATTACKER, 2 - returntoball BS_ATTACKER - getswitchedmondata BS_ATTACKER - switchindataupdate BS_ATTACKER - hpthresholds BS_ATTACKER - trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 - printstring STRINGID_SWITCHINMON - switchinanim BS_ATTACKER, TRUE - waitstate - switchineffects BS_ATTACKER + goto BattleScript_MoveSwitch BattleScript_PartingShotEnd: end @@ -1966,8 +2119,7 @@ BattleScript_SynchronoiseLoop: waitmessage B_WAIT_TIME_LONG resultmessage waitmessage B_WAIT_TIME_LONG - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox tryfaintmon BS_TARGET BattleScript_SynchronoiseMoveTargetEnd: moveendto MOVEEND_NEXT_TARGET @@ -2113,13 +2265,17 @@ BattleScript_EffectFinalGambit: BattleScript_EffectHitSwitchTarget: call BattleScript_EffectHit_Ret tryfaintmon BS_TARGET - moveendall + jumpiffainted BS_TARGET, TRUE, BattleScript_MoveEnd jumpifability BS_TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut jumpifstatus3 BS_TARGET, STATUS3_ROOTED, BattleScript_PrintMonIsRooted + jumpiftargetdynamaxed BattleScript_HitSwitchTargetDynamaxed tryhitswitchtarget BattleScript_MoveEnd forcerandomswitch BattleScript_HitSwitchTargetForceRandomSwitchFailed goto BattleScript_MoveEnd +BattleScript_HitSwitchTargetDynamaxed: + printstring STRINGID_MOVEBLOCKEDBYDYNAMAX + waitmessage B_WAIT_TIME_LONG BattleScript_HitSwitchTargetForceRandomSwitchFailed: hitswitchtargetfailed setbyte sSWITCH_CASE, B_SWITCH_NORMAL @@ -2647,8 +2803,7 @@ BattleScript_EffectSimpleBeam: waitmessage B_WAIT_TIME_LONG trytoclearprimalweather tryrevertweatherform - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox tryendneutralizinggas BS_TARGET goto BattleScript_MoveEnd @@ -2701,8 +2856,7 @@ BattleScript_EffectHealingWish: switchindataupdate BS_ATTACKER hpthresholds BS_ATTACKER trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON switchinanim BS_ATTACKER, TRUE waitstate @@ -2747,8 +2901,7 @@ BattleScript_EffectWorrySeed: waitmessage B_WAIT_TIME_LONG trytoclearprimalweather tryrevertweatherform - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox goto BattleScript_MoveEnd BattleScript_EffectPowerSplit: @@ -2879,8 +3032,7 @@ BattleScript_EffectGastroAcid: waitmessage B_WAIT_TIME_LONG trytoclearprimalweather tryrevertweatherform - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox tryendneutralizinggas BS_TARGET goto BattleScript_MoveEnd @@ -3015,6 +3167,7 @@ BattleScript_EffectGravity: setgravity BattleScript_ButItFailed attackanimation waitanimation +BattleScript_EffectGravitySuccess:: printstring STRINGID_GRAVITYINTENSIFIED waitmessage B_WAIT_TIME_LONG selectfirstvalidtarget @@ -3077,24 +3230,8 @@ BattleScript_EffectHitEscape: moveendfrom MOVEEND_TARGET_VISIBLE jumpifbattleend BattleScript_HitEscapeEnd jumpifbyte CMP_NOT_EQUAL gBattleOutcome 0, BattleScript_HitEscapeEnd - jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_HitEscapeEnd - jumpifcantswitch SWITCH_IGNORE_ESCAPE_PREVENTION | BS_ATTACKER, BattleScript_HitEscapeEnd jumpifemergencyexited BS_TARGET, BattleScript_HitEscapeEnd - openpartyscreen BS_ATTACKER, BattleScript_HitEscapeEnd - switchoutabilities BS_ATTACKER - waitstate - switchhandleorder BS_ATTACKER, 2 - returntoball BS_ATTACKER - getswitchedmondata BS_ATTACKER - switchindataupdate BS_ATTACKER - hpthresholds BS_ATTACKER - trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 - printstring STRINGID_SWITCHINMON - switchinanim BS_ATTACKER, TRUE - waitstate - switchineffects BS_ATTACKER + goto BattleScript_MoveSwitch BattleScript_HitEscapeEnd: end @@ -3135,6 +3272,7 @@ BattleScript_HitFromAtkAnimation:: resultmessage waitmessage B_WAIT_TIME_LONG seteffectwithchance +BattleScript_TryFaintMon:: tryfaintmon BS_TARGET BattleScript_MoveEnd:: moveendall @@ -3159,6 +3297,7 @@ BattleScript_EffectHit_Ret:: waitmessage B_WAIT_TIME_LONG resultmessage waitmessage B_WAIT_TIME_LONG + seteffectwithchance return BattleScript_EffectNaturalGift: @@ -3704,11 +3843,17 @@ BattleScript_EffectRoar:: jumpifability BS_TARGET, ABILITY_GUARD_DOG, BattleScript_ButItFailed jumpifability BS_TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut jumpifstatus3 BS_TARGET, STATUS3_ROOTED, BattleScript_PrintMonIsRooted + jumpiftargetdynamaxed BattleScript_RoarBlockedByDynamax accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_ButItFailed forcerandomswitch BattleScript_ButItFailed +BattleScript_RoarBlockedByDynamax: + printstring STRINGID_MOVEBLOCKEDBYDYNAMAX + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + BattleScript_EffectMultiHit:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE @@ -3739,8 +3884,7 @@ BattleScript_DoMultiHit:: critmessage waitmessage B_WAIT_TIME_LONG multihitresultmessage - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox addbyte sMULTIHIT_STRING + 4, 1 moveendto MOVEEND_NEXT_TARGET jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_FOE_ENDURED, BattleScript_MultiHitPrintStrings @@ -3782,7 +3926,6 @@ BattleScript_EffectFlinchHit:: BattleScript_EffectFlinchStatus: setmoveeffect MOVE_EFFECT_FLINCH call BattleScript_EffectHit_Ret - seteffectwithchance argumentstatuseffect tryfaintmon BS_TARGET goto BattleScript_MoveEnd @@ -3931,7 +4074,7 @@ BattleScript_TwoTurnMovesSecondTurn:: BattleScriptFirstChargingTurn:: attackcanceler - printstring STRINGID_EMPTYSTRING3 + flushtextbox ppreduce attackstring BattleScriptFirstChargingTurnAfterAttackString: @@ -4106,8 +4249,7 @@ BattleScript_EffectTransform:: attackstring ppreduce trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox transformdataexecution attackanimation waitanimation @@ -4151,6 +4293,7 @@ BattleScript_EffectReflect:: BattleScript_PrintReflectLightScreenSafeguardString:: attackanimation waitanimation +BattleScript_EffectAuroraVeilSuccess:: printfromtable gReflectLightScreenSafeguardStringIds waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd @@ -4873,9 +5016,7 @@ BattleScript_EffectSandstorm:: attackcanceler attackstring ppreduce - jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN_PRIMAL, BattleScript_ExtremelyHarshSunlightWasNotLessened - jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_RAIN_PRIMAL, BattleScript_NoReliefFromHeavyRain - jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_MysteriousAirCurrentBlowsOn + call BattleScript_CheckPrimalWeather setsandstorm goto BattleScript_MoveWeatherChange @@ -5010,8 +5151,7 @@ BattleScript_EffectBatonPass:: switchindataupdate BS_ATTACKER hpthresholds BS_ATTACKER trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON switchinanim BS_ATTACKER, TRUE waitstate @@ -5065,25 +5205,25 @@ BattleScript_EffectRainDance:: attackcanceler attackstring ppreduce - jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN_PRIMAL, BattleScript_ExtremelyHarshSunlightWasNotLessened - jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_RAIN_PRIMAL, BattleScript_NoReliefFromHeavyRain - jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_MysteriousAirCurrentBlowsOn + call BattleScript_CheckPrimalWeather setrain BattleScript_MoveWeatherChange:: attackanimation waitanimation + call BattleScript_MoveWeatherChangeRet + goto BattleScript_MoveEnd + +BattleScript_MoveWeatherChangeRet:: printfromtable gMoveWeatherChangeStringIds waitmessage B_WAIT_TIME_LONG call BattleScript_ActivateWeatherAbilities - goto BattleScript_MoveEnd + return BattleScript_EffectSunnyDay:: attackcanceler attackstring ppreduce - jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN_PRIMAL, BattleScript_ExtremelyHarshSunlightWasNotLessened - jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_RAIN_PRIMAL, BattleScript_NoReliefFromHeavyRain - jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_MysteriousAirCurrentBlowsOn + call BattleScript_CheckPrimalWeather setsunny goto BattleScript_MoveWeatherChange @@ -5547,9 +5687,7 @@ BattleScript_EffectHail:: attackcanceler attackstring ppreduce - jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN_PRIMAL, BattleScript_ExtremelyHarshSunlightWasNotLessened - jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_RAIN_PRIMAL, BattleScript_NoReliefFromHeavyRain - jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_MysteriousAirCurrentBlowsOn + call BattleScript_CheckPrimalWeather sethail goto BattleScript_MoveWeatherChange @@ -5906,6 +6044,7 @@ BattleScript_EffectYawn:: setyawn BattleScript_ButItFailed attackanimation waitanimation + BattleScript_EffectYawnSuccess:: printstring STRINGID_PKMNWASMADEDROWSY waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd @@ -6337,8 +6476,7 @@ BattleScript_FaintedMonTryChoose: switchindataupdate BS_ATTACKER hpthresholds BS_ATTACKER trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON hidepartystatussummary BS_ATTACKER switchinanim BS_ATTACKER, 0 @@ -6350,8 +6488,7 @@ BattleScript_FaintedMonSendOutNew: switchindataupdate BS_FAINTED hpthresholds BS_FAINTED trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON hidepartystatussummary BS_FAINTED switchinanim BS_FAINTED, FALSE @@ -6385,8 +6522,7 @@ BattleScript_LinkHandleFaintedMonLoop:: switchindataupdate BS_FAINTED hpthresholds BS_FAINTED trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON hidepartystatussummary BS_FAINTED switchinanim BS_FAINTED, FALSE @@ -6600,6 +6736,7 @@ BattleScript_PursuitSwitchDmgLoop:: BattleScript_DoSwitchOut:: decrementmultihit BattleScript_PursuitSwitchDmgLoop switchoutabilities BS_ATTACKER + updatedynamax waitstate returnatktoball waitstate @@ -6609,8 +6746,7 @@ BattleScript_DoSwitchOut:: switchindataupdate BS_ATTACKER hpthresholds BS_ATTACKER trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring STRINGID_SWITCHINMON hidepartystatussummary BS_ATTACKER switchinanim BS_ATTACKER, FALSE @@ -6716,7 +6852,7 @@ BattleScript_DamagingWeatherHeal: printstring STRINGID_ICEBODYHPGAIN waitmessage B_WAIT_TIME_LONG BattleScript_DamagingWeatherHpChange: - orword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE + orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE healthbarupdate BS_ATTACKER datahpupdate BS_ATTACKER tryfaintmon BS_ATTACKER @@ -6726,7 +6862,7 @@ BattleScript_DamagingWeatherLoopIncrement:: addbyte gBattleCommunication, 1 jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_DamagingWeatherLoop BattleScript_DamagingWeatherContinuesEnd:: - bicword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE + bicword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE call BattleScript_ActivateWeatherAbilities end2 @@ -6905,8 +7041,7 @@ BattleScript_RoarSuccessSwitch:: getswitchedmondata BS_TARGET switchindataupdate BS_TARGET trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox switchinanim BS_TARGET, FALSE waitstate printstring STRINGID_PKMNWASDRAGGEDOUT @@ -7264,7 +7399,7 @@ BattleScript_EarthEaterActivates:: call BattleScript_AbilityPopUp pause B_WAIT_TIME_LONG tryhealquarterhealth BS_TARGET, BattleScript_EarthEaterRet - orword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE + orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE healthbarupdate BS_TARGET datahpupdate BS_TARGET printstring STRINGID_PKMNREGAINEDHEALTH @@ -7348,6 +7483,11 @@ BattleScript_StealthRockFree:: waitmessage B_WAIT_TIME_LONG return +BattleScript_SteelsurgeFree:: + printstring STRINGID_PKMNBLEWAWAYSHARPSTEEL + waitmessage B_WAIT_TIME_LONG + return + BattleScript_SpikesDefog:: printstring STRINGID_SPIKESDISAPPEAREDFROMTEAM waitmessage B_WAIT_TIME_LONG @@ -7368,6 +7508,11 @@ BattleScript_StealthRockDefog:: waitmessage B_WAIT_TIME_LONG return +BattleScript_SteelsurgeDefog:: + printstring STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM + waitmessage B_WAIT_TIME_LONG + return + BattleScript_MonTookFutureAttack:: printstring STRINGID_PKMNTOOKATTACK waitmessage B_WAIT_TIME_LONG @@ -7722,16 +7867,15 @@ BattleScript_MoveEffectClearSmog:: return BattleScript_FocusPunchSetUp:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox playanimation BS_ATTACKER, B_ANIM_FOCUS_PUNCH_SETUP printstring STRINGID_PKMNTIGHTENINGFOCUS waitmessage B_WAIT_TIME_LONG end3 BattleScript_MegaEvolution:: - printstring STRINGID_EMPTYSTRING3 - trytrainerslidemegaevolutionmsg BS_ATTACKER + flushtextbox + trytrainerslidemegaevolutionmsg printstring STRINGID_MEGAEVOREACTING BattleScript_MegaEvolutionAfterString: waitmessage B_WAIT_TIME_LONG @@ -7746,8 +7890,8 @@ BattleScript_MegaEvolutionAfterString: end3 BattleScript_WishMegaEvolution:: - printstring STRINGID_EMPTYSTRING3 - trytrainerslidemegaevolutionmsg BS_ATTACKER + flushtextbox + trytrainerslidemegaevolutionmsg printstring STRINGID_FERVENTWISHREACHED goto BattleScript_MegaEvolutionAfterString @@ -7761,8 +7905,7 @@ BattleScript_PrimalReversionRestoreAttacker:: end2 BattleScript_PrimalReversionRet:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox setbyte gIsCriticalHit, 0 handleprimalreversion BS_ATTACKER, 0 handleprimalreversion BS_ATTACKER, 1 @@ -7775,8 +7918,8 @@ BattleScript_PrimalReversionRet:: return BattleScript_UltraBurst:: - printstring STRINGID_EMPTYSTRING3 - trytrainerslidezmovemsg BS_ATTACKER + flushtextbox + trytrainerslidezmovemsg printstring STRINGID_ULTRABURSTREACTING waitmessage B_WAIT_TIME_LONG setbyte gIsCriticalHit, 0 @@ -7793,8 +7936,7 @@ BattleScript_AttackerFormChange:: pause 5 copybyte gBattlerAbility, gBattlerAttacker call BattleScript_AbilityPopUp - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox BattleScript_AttackerFormChangeNoPopup:: handleformchange BS_ATTACKER, 0 handleformchange BS_ATTACKER, 1 @@ -7821,7 +7963,7 @@ BattleScript_AttackerFormChangeMoveEffect:: printstring STRINGID_PKMNTRANSFORMED waitmessage B_WAIT_TIME_LONG handleformchange BS_ATTACKER, 2 - end3 + return BattleScript_BallFetch:: call BattleScript_AbilityPopUp @@ -7834,15 +7976,14 @@ BattleScript_CudChewActivates:: call BattleScript_AbilityPopUp setbyte sBERRY_OVERRIDE, 1 @ override the requirements for eating berries consumeberry BS_TARGET, FALSE - orword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE + orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE healthbarupdate BS_ATTACKER datahpupdate BS_ATTACKER setbyte sBERRY_OVERRIDE, 0 end3 BattleScript_TargetFormChangeNoPopup: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox handleformchange BS_TARGET, 0 handleformchange BS_TARGET, 1 playanimation BS_TARGET, B_ANIM_FORM_CHANGE @@ -7873,8 +8014,7 @@ BattleScript_TargetFormChangeWithStringNoPopup:: BattleScript_BattlerFormChangeWithStringEnd3:: pause 5 call BattleScript_AbilityPopUp - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox handleformchange BS_SCRIPTING, 0 handleformchange BS_SCRIPTING, 1 playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE, NULL @@ -8204,6 +8344,8 @@ BattleScript_MoveEffectSleep:: BattleScript_UpdateEffectStatusIconRet:: updatestatusicon BS_EFFECT_BATTLER waitstate + trytriggerstatusform + flushtextbox return BattleScript_YawnMakesAsleep:: @@ -8555,13 +8697,6 @@ BattleScript_IntimidateLoop: jumpiftargetally BattleScript_IntimidateLoopIncrement jumpifabsent BS_TARGET, BattleScript_IntimidateLoopIncrement jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_IntimidateLoopIncrement - jumpifability BS_TARGET, ABILITY_HYPER_CUTTER, BattleScript_IntimidatePrevented -.if B_UPDATED_INTIMIDATE >= GEN_8 - jumpifability BS_TARGET, ABILITY_INNER_FOCUS, BattleScript_IntimidatePrevented - jumpifability BS_TARGET, ABILITY_SCRAPPY, BattleScript_IntimidatePrevented - jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_IntimidatePrevented - jumpifability BS_TARGET, ABILITY_OBLIVIOUS, BattleScript_IntimidatePrevented -.endif jumpifability BS_TARGET, ABILITY_GUARD_DOG, BattleScript_IntimidateInReverse BattleScript_IntimidateEffect: copybyte sBATTLER, gBattlerAttacker @@ -8594,16 +8729,6 @@ BattleScript_IntimidateContrary_WontIncrease: printstring STRINGID_TARGETSTATWONTGOHIGHER goto BattleScript_IntimidateEffect_WaitString -BattleScript_IntimidatePrevented: - call BattleScript_AbilityPopUp - pause B_WAIT_TIME_LONG - setbyte gBattleCommunication STAT_ATK - stattextbuffer BS_TARGET - printstring STRINGID_STATWASNOTLOWERED - waitmessage B_WAIT_TIME_LONG - call BattleScript_TryAdrenalineOrb - goto BattleScript_IntimidateLoopIncrement - BattleScript_IntimidateInReverse: copybyte sBATTLER, gBattlerTarget call BattleScript_AbilityPopUpTarget @@ -8693,6 +8818,13 @@ BattleScript_CostarActivates:: waitmessage B_WAIT_TIME_LONG end3 +BattleScript_ZeroToHeroActivates:: + pause B_WAIT_TIME_SHORT + call BattleScript_AbilityPopUp + printstring STRINGID_ZEROTOHEROTRANSFORMATION + waitmessage B_WAIT_TIME_LONG + end3 + BattleScript_AttackWeakenedByStrongWinds:: pause B_WAIT_TIME_SHORT printstring STRINGID_ATTACKWEAKENEDBSTRONGWINDS @@ -8739,28 +8871,6 @@ BattleScript_ActivateTerrainEffects_Increment: restoretarget return -BattleScript_ActivateSwitchInAbilities: - copybyte sBATTLER, gBattlerAttacker - setbyte gBattlerAttacker, 0 -BattleScript_ActivateSwitchInAbilities_Loop: - switchinabilities BS_ATTACKER -BattleScript_ActivateSwitchInAbilities_Increment: - addbyte gBattlerAttacker, 1 - jumpifbytenotequal gBattlerAttacker, gBattlersCount, BattleScript_ActivateSwitchInAbilities_Loop - copybyte gBattlerAttacker, sBATTLER - return - -BattleScript_ActivateTerrainAbilities: - savetarget - setbyte gBattlerTarget, 0 -BattleScript_ActivateTerrainAbilities_Loop: - activateterrainchangeabilities BS_ATTACKER -BattleScript_ActivateTerrainAbilities_Increment: - addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_ActivateTerrainAbilities_Loop - restoretarget - return - BattleScript_ElectricSurgeActivates:: pause B_WAIT_TIME_SHORT call BattleScript_AbilityPopUp @@ -8932,7 +9042,7 @@ BattleScript_AbilityNoStatLoss:: BattleScript_ItemNoStatLoss:: pause B_WAIT_TIME_SHORT - printstring STRINGID_STATWASNOTLOWERED + printstring STRINGID_CLEARAMULETWONTLOWERSTATS waitmessage B_WAIT_TIME_LONG return @@ -9017,14 +9127,14 @@ BattleScript_GrassyTerrainLoop: printstring STRINGID_GRASSYTERRAINHEALS waitmessage B_WAIT_TIME_LONG BattleScript_GrassyTerrainHpChange: - orword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE + orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE healthbarupdate BS_ATTACKER datahpupdate BS_ATTACKER BattleScript_GrassyTerrainLoopIncrement:: addbyte gBattleCommunication, 1 jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_GrassyTerrainLoop BattleScript_GrassyTerrainLoopEnd:: - bicword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE + bicword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE jumpifword CMP_COMMON_BITS, gFieldStatuses, STATUS_FIELD_TERRAIN_PERMANENT, BattleScript_GrassyTerrainHealEnd BattleScript_GrassyTerrainHealEnd: end2 @@ -9150,7 +9260,11 @@ BattleScript_WeakArmorDefAnim: printstring STRINGID_TARGETABILITYSTATLOWER waitmessage B_WAIT_TIME_LONG BattleScript_WeakArmorActivatesSpeed: +.if B_WEAK_ARMOR_SPEED >= GEN_7 setstatchanger STAT_SPEED, 2, FALSE +.else + setstatchanger STAT_SPEED, 1, FALSE +.endif statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_WeakArmorActivatesEnd jumpifbyte CMP_LESS_THAN, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_WeakArmorSpeedAnim jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_ROSE_EMPTY, BattleScript_WeakArmorActivatesEnd @@ -9298,7 +9412,7 @@ BattleScript_KingsShieldEffect:: return BattleScript_BanefulBunkerEffect:: - orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_PASSIVE_DAMAGE + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_STATUS_ABILITY_EFFECT | HITMARKER_PASSIVE_DAMAGE bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT seteffectsecondary setmoveeffect 0 @@ -9576,7 +9690,7 @@ BattleScript_ItemHealHP_RemoveItemRet_Anim: playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT printstring STRINGID_PKMNSITEMRESTOREDHEALTH waitmessage B_WAIT_TIME_LONG - orword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE + orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE healthbarupdate BS_SCRIPTING datahpupdate BS_SCRIPTING removeitem BS_SCRIPTING @@ -9591,7 +9705,7 @@ BattleScript_ItemHealHP_RemoveItemEnd2_Anim: playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT printstring STRINGID_PKMNSITEMRESTOREDHEALTH waitmessage B_WAIT_TIME_LONG - orword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE + orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE healthbarupdate BS_ATTACKER datahpupdate BS_ATTACKER removeitem BS_ATTACKER @@ -9647,7 +9761,7 @@ BattleScript_ItemHealHP_Ret:: playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT printstring STRINGID_PKMNSITEMRESTOREDHPALITTLE waitmessage B_WAIT_TIME_LONG - orword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_DISGUISE | HITMARKER_PASSIVE_DAMAGE + orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_DISGUISE | HITMARKER_PASSIVE_DAMAGE healthbarupdate BS_ATTACKER datahpupdate BS_ATTACKER return @@ -9702,7 +9816,7 @@ BattleScript_BerryConfuseHealEnd2_Anim: playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT printstring STRINGID_PKMNSITEMRESTOREDHEALTH waitmessage B_WAIT_TIME_LONG - orword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE + orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE healthbarupdate BS_SCRIPTING datahpupdate BS_SCRIPTING printstring STRINGID_FORXCOMMAYZ @@ -9721,7 +9835,7 @@ BattleScript_BerryConfuseHealRet_Anim: playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT printstring STRINGID_PKMNSITEMRESTOREDHEALTH waitmessage B_WAIT_TIME_LONG - orword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE + orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE healthbarupdate BS_SCRIPTING datahpupdate BS_SCRIPTING printstring STRINGID_FORXCOMMAYZ @@ -9777,7 +9891,7 @@ BattleScript_ActionSelectionItemsCantBeUsed:: endselectionscript BattleScript_FlushMessageBox:: - printstring STRINGID_EMPTYSTRING3 + flushtextbox return BattleScript_PalacePrintFlavorText:: @@ -9931,6 +10045,14 @@ BattleScript_MirrorHerbCopyStatChange:: copybyte gBattlerAttacker, sSAVED_BATTLER @ restore the original attacker just to be safe return +BattleScript_OpportunistCopyStatChange:: + call BattleScript_AbilityPopUp + printstring STRINGID_OPPORTUNISTCOPIED + waitmessage B_WAIT_TIME_LONG + call BattleScript_TotemVar_Ret + copybyte gBattlerAttacker, sSAVED_BATTLER @ restore the original attacker just to be safe + end3 + BattleScript_TotemVar:: call BattleScript_TotemVar_Ret end2 @@ -9956,8 +10078,7 @@ BattleScript_AnnounceAirLockCloudNine:: end3 BattleScript_QuickClawActivation:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT waitanimation printstring STRINGID_CANACTFASTERTHANKSTO @@ -9965,16 +10086,14 @@ BattleScript_QuickClawActivation:: end2 BattleScript_QuickDrawActivation:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox call BattleScript_AbilityPopUp printstring STRINGID_CANACTFASTERTHANKSTO waitmessage B_WAIT_TIME_LONG end2 BattleScript_CustapBerryActivation:: - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT waitanimation printstring STRINGID_CANACTFASTERTHANKSTO @@ -10022,8 +10141,8 @@ BattleScript_JabocaRowapBerryActivate_Dmg: @ z moves / effects BattleScript_ZMoveActivateDamaging:: - printstring STRINGID_EMPTYSTRING3 - trytrainerslidezmovemsg BS_ATTACKER + flushtextbox + trytrainerslidezmovemsg printstring STRINGID_ZPOWERSURROUNDS playanimation BS_ATTACKER, B_ANIM_ZMOVE_ACTIVATE, NULL printstring STRINGID_ZMOVEUNLEASHED @@ -10031,8 +10150,8 @@ BattleScript_ZMoveActivateDamaging:: return BattleScript_ZMoveActivateStatus:: - printstring STRINGID_EMPTYSTRING3 - trytrainerslidezmovemsg BS_ATTACKER + flushtextbox + trytrainerslidezmovemsg savetarget printstring STRINGID_ZPOWERSURROUNDS playanimation BS_ATTACKER, B_ANIM_ZMOVE_ACTIVATE, NULL @@ -10200,6 +10319,7 @@ BattleScript_RedCardActivates:: swapattackerwithtarget jumpifstatus3 BS_EFFECT_BATTLER, STATUS3_ROOTED, BattleScript_RedCardIngrain jumpifability BS_EFFECT_BATTLER, ABILITY_SUCTION_CUPS, BattleScript_RedCardSuctionCups + jumpiftargetdynamaxed BattleScript_RedCardDynamaxed removeitem BS_SCRIPTING setbyte sSWITCH_CASE, B_SWITCH_RED_CARD forcerandomswitch BattleScript_RedCardEnd @@ -10218,6 +10338,12 @@ BattleScript_RedCardSuctionCups: removeitem BS_SCRIPTING swapattackerwithtarget return +BattleScript_RedCardDynamaxed: + printstring STRINGID_MOVEBLOCKEDBYDYNAMAX + waitmessage B_WAIT_TIME_LONG + removeitem BS_SCRIPTING + swapattackerwithtarget + return BattleScript_EjectButtonActivates:: makevisible BS_ATTACKER @@ -10235,8 +10361,7 @@ BattleScript_EjectButtonActivates:: switchindataupdate BS_SCRIPTING hpthresholds BS_SCRIPTING trytoclearprimalweather - printstring STRINGID_EMPTYSTRING3 - waitmessage 1 + flushtextbox printstring 0x3 switchinanim BS_SCRIPTING 0x1 waitstate @@ -10317,9 +10442,6 @@ BattleScript_PastelVeilLoopIncrement: BattleScript_PastelVeilEnd: end3 -sByteFour: -.byte MAX_BATTLERS_COUNT - BattleScript_NeutralizingGasExits:: savetarget pause B_WAIT_TIME_SHORT @@ -10329,7 +10451,7 @@ BattleScript_NeutralizingGasExits:: BattleScript_NeutralizingGasExitsLoop: switchinabilities BS_TARGET addbyte gBattlerTarget, 1 - jumpifbytenotequal gBattlerTarget, sByteFour, BattleScript_NeutralizingGasExitsLoop @ SOMEHOW, comparing to gBattlersCount is problematic. + jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_NeutralizingGasExitsLoop restoretarget return @@ -10356,6 +10478,295 @@ BattleScript_TargetAbilityStatRaiseRet_End: copybyte gBattlerAttacker, sSAVED_BATTLER return +@@@ MAX MOVES @@@ +BattleScript_EffectMaxMove:: + attackcanceler + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + attackstring + ppreduce + critcalc + damagecalc + adjustdamage + attackanimation + waitanimation + effectivenesssound + hitanimation BS_TARGET + waitstate + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + critmessage + waitmessage B_WAIT_TIME_LONG + resultmessage + waitmessage B_WAIT_TIME_LONG + tryfaintmon BS_TARGET + setmaxmoveeffect + moveendall + end + +BattleScript_EffectRaiseStatAllies:: + savetarget + copybyte gBattlerTarget, gBattlerAttacker +BattleScript_RaiseSideStatsLoop: + jumpifabsent BS_TARGET, BattleScript_RaiseSideStatsIncrement + statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_RaiseSideStatsIncrement + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_RaiseSideStatsIncrement + setgraphicalstatchangevalues + playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + printfromtable gStatUpStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_RaiseSideStatsIncrement: + setbyte sSTAT_ANIM_PLAYED, FALSE + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RaiseSideStatsEnd + setallytonexttarget BattleScript_RaiseSideStatsLoop +BattleScript_RaiseSideStatsEnd: + restoretarget + goto BattleScript_MoveEnd + +BattleScript_EffectLowerStatFoes:: + savetarget + copybyte sBATTLER, gBattlerTarget +BattleScript_LowerSideStatsLoop: + jumpifabsent BS_TARGET, BattleScript_LowerSideStatsIncrement + statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_LowerSideStatsIncrement + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_DECREASE, BattleScript_LowerSideStatsIncrement + setgraphicalstatchangevalues + playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + printfromtable gStatDownStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_LowerSideStatsIncrement: + setbyte sSTAT_ANIM_PLAYED, FALSE + jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_LowerSideStatsEnd + setallytonexttarget BattleScript_LowerSideStatsLoop +BattleScript_LowerSideStatsEnd: + restoretarget + goto BattleScript_MoveEnd + +BattleScript_EffectSetWeather:: + playanimation 0, B_ANIM_MAX_SET_WEATHER + printfromtable gMoveWeatherChangeStringIds + waitmessage B_WAIT_TIME_LONG + call BattleScript_ActivateWeatherAbilities + goto BattleScript_MoveEnd + +BattleScript_EffectSetTerrain:: + printfromtable gTerrainStringIds + waitmessage B_WAIT_TIME_LONG + playanimation BS_ATTACKER, B_ANIM_RESTORE_BG + call BattleScript_ActivateTerrainEffects + goto BattleScript_MoveEnd + +BattleScript_DamageNonTypesStarts:: + printfromtable gDamageNonTypesStartStringIds + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + +BattleScript_DamageNonTypesContinues:: + setbyte gBattleCommunication, 0 +BattleScript_DamageNonTypesLoop:: + copyarraywithindex gBattlerAttacker, gBattlerByTurnOrder, gBattleCommunication, 1 + damagenontypes + jumpifword CMP_EQUAL, gBattleMoveDamage, 0, BattleScript_DamageNonTypesLoopIncrement + printfromtable gDamageNonTypesDmgStringIds + waitmessage B_WAIT_TIME_LONG + effectivenesssound + hitanimation BS_ATTACKER + orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + tryfaintmon BS_ATTACKER + checkteamslost BattleScript_DamageNonTypesLoopIncrement +BattleScript_DamageNonTypesLoopIncrement:: + jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_DamageNonTypesContinuesEnd + addbyte gBattleCommunication, 1 + jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_DamageNonTypesLoop +BattleScript_DamageNonTypesContinuesEnd:: + bicword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_GRUDGE + end2 + +BattleScript_EffectTryReducePP:: + tryspiteppreduce BattleScript_MoveEnd + printstring STRINGID_PKMNREDUCEDPP + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + +BattleScript_EffectStatus1Foes:: + savetarget + copybyte sBATTLER, gBattlerTarget +BattleScript_Status1FoesLoop: + jumpifabsent BS_TARGET, BattleScript_Status1FoesIncrement + trysetstatus1 BattleScript_Status1FoesIncrement + statusanimation BS_TARGET + updatestatusicon BS_TARGET + printfromtable gStatusConditionsStringIds + waitmessage B_WAIT_TIME_LONG + updatestatusicon BS_EFFECT_BATTLER + waitstate +BattleScript_Status1FoesIncrement: + jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_Status1FoesEnd + setallytonexttarget BattleScript_Status1FoesLoop +BattleScript_Status1FoesEnd: + restoretarget + goto BattleScript_MoveEnd + +BattleScript_EffectStatus2Foes:: + savetarget + copybyte sBATTLER, gBattlerTarget +BattleScript_Status2FoesLoop: + jumpifabsent BS_TARGET, BattleScript_Status2FoesIncrement + trysetstatus2 BattleScript_Status2FoesIncrement + jumpifbyte CMP_EQUAL, gBattleCommunication, 1, BattleScript_DoConfuseAnim + jumpifbyte CMP_EQUAL, gBattleCommunication, 2, BattleScript_DoInfatuationAnim +BattleScript_Status2FoesPrintMessage: + printfromtable gStatus2StringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_Status2FoesIncrement: + jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_Status2FoesEnd + setallytonexttarget BattleScript_Status2FoesLoop +BattleScript_Status2FoesEnd: + restoretarget + jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 1, BattleScript_PrintCoinsScattered @ Gold Rush + goto BattleScript_MoveEnd + +BattleScript_DoConfuseAnim: + status2animation BS_EFFECT_BATTLER, STATUS2_CONFUSION + goto BattleScript_Status2FoesPrintMessage + +BattleScript_DoInfatuationAnim: + status2animation BS_EFFECT_BATTLER, STATUS2_INFATUATION + goto BattleScript_Status2FoesPrintMessage + +BattleScript_PrintCoinsScattered: + printstring STRINGID_COINSSCATTERED + goto BattleScript_MoveEnd + +BattleScript_TormentEnds:: + printstring STRINGID_TORMENTEDNOMORE + waitmessage B_WAIT_TIME_LONG + end2 + +BattleScript_EffectRaiseCritAlliesAnim:: + savetarget + copybyte gBattlerTarget, gBattlerAttacker +BattleScript_RaiseCritAlliesLoop: + jumpifabsent BS_TARGET, BattleScript_RaiseCritAlliesIncrement + setstatchanger STAT_ATK, 0, FALSE @ for animation + setgraphicalstatchangevalues + playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + swapattackerwithtarget + printstring STRINGID_PKMNGETTINGPUMPED + waitmessage B_WAIT_TIME_LONG + swapattackerwithtarget +BattleScript_RaiseCritAlliesIncrement: + setbyte sSTAT_ANIM_PLAYED, FALSE + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RaiseCritAlliesEnd + setallytonexttarget BattleScript_RaiseCritAlliesLoop +BattleScript_RaiseCritAlliesEnd: + restoretarget + goto BattleScript_MoveEnd + +BattleScript_EffectHealOneSixthAllies:: + jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd + savetarget + copybyte gBattlerTarget, gBattlerAttacker +BattleScript_HealOneSixthAlliesLoop: + jumpifabsent BS_TARGET, BattleScript_HealOneSixthAlliesIncrement + tryhealsixthhealth BattleScript_HealOneSixthAlliesIncrement + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + printstring STRINGID_PKMNREGAINEDHEALTH + waitmessage B_WAIT_TIME_LONG +BattleScript_HealOneSixthAlliesIncrement: + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_HealOneSixthAlliesEnd + setallytonexttarget BattleScript_HealOneSixthAlliesLoop +BattleScript_HealOneSixthAlliesEnd: + restoretarget + goto BattleScript_MoveEnd + +BattleScript_EffectCureStatusAllies:: + jumpifteamhealthy BS_ATTACKER, BattleScript_MoveEnd + savetarget + copybyte gBattlerTarget, gBattlerAttacker +BattleScript_CureStatusAlliesLoop: + jumpifabsent BS_TARGET, BattleScript_CureStatusAlliesIncrement + jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_CureStatusActivate +BattleScript_CureStatusAlliesIncrement: + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_CureStatusAlliesEnd + setallytonexttarget BattleScript_CureStatusAlliesLoop +BattleScript_CureStatusAlliesEnd: + restoretarget + goto BattleScript_MoveEnd + +BattleScript_CureStatusActivate: + curestatus BS_TARGET + updatestatusicon BS_TARGET + swapattackerwithtarget + printstring STRINGID_PKMNSTATUSNORMAL + waitmessage B_WAIT_TIME_LONG + swapattackerwithtarget + goto BattleScript_CureStatusAlliesIncrement + +BattleScript_EffectRecycleBerriesAllies:: + savetarget + copybyte gBattlerTarget, gBattlerAttacker +BattleScript_RecycleBerriesAlliesLoop: + jumpifabsent BS_TARGET, BattleScript_RecycleBerriesAlliesIncrement + tryrecycleberry BattleScript_RecycleBerriesAlliesIncrement + swapattackerwithtarget + printstring STRINGID_XFOUNDONEY + waitmessage B_WAIT_TIME_LONG + swapattackerwithtarget +BattleScript_RecycleBerriesAlliesIncrement: + jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RecycleBerriesAlliesEnd + setallytonexttarget BattleScript_RecycleBerriesAlliesLoop +BattleScript_RecycleBerriesAlliesEnd: + restoretarget + goto BattleScript_MoveEnd + +BattleScript_EffectStonesurge:: + setstealthrock BattleScript_MoveEnd + printfromtable gDmgHazardsStringIds + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + +BattleScript_EffectSteelsurge:: + setsteelsurge BattleScript_MoveEnd + printfromtable gDmgHazardsStringIds + waitmessage B_WAIT_TIME_LONG + goto BattleScript_MoveEnd + +@@@ END MAX MOVES @@@ + +BattleScript_DynamaxBegins:: + flushtextbox + trytrainerslidedynamaxmsg + returnatktoball + pause B_WAIT_TIME_SHORT + returntoball BS_SCRIPTING + switchinanim BS_SCRIPTING, TRUE + updatedynamax + playanimation BS_SCRIPTING, B_ANIM_DYNAMAX_GROWTH + waitanimation + end3 + +BattleScript_DynamaxEnds:: + flushtextbox + updatedynamax + playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE + waitanimation + end2 + +BattleScript_MoveBlockedByDynamax:: + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + pause B_WAIT_TIME_SHORT + ppreduce + jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_STRING_PRINTED, BattleScript_MoveEnd + printstring STRINGID_MOVEBLOCKEDBYDYNAMAX + waitmessage B_WAIT_TIME_LONG + orword gHitMarker, HITMARKER_STRING_PRINTED + goto BattleScript_MoveEnd + BattleScript_PokemonCantUseTheMove:: attackstring ppreduce @@ -10403,8 +10814,6 @@ BattleScript_EffectSnow:: attackcanceler attackstring ppreduce - jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN_PRIMAL, BattleScript_ExtremelyHarshSunlightWasNotLessened - jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_RAIN_PRIMAL, BattleScript_NoReliefFromHeavyRain - jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_MysteriousAirCurrentBlowsOn + call BattleScript_CheckPrimalWeather setsnow goto BattleScript_MoveWeatherChange diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index 20f19d5498..46d4d195ea 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -153,6 +153,7 @@ BattleScript_PrintCaughtMonInfo:: getexp BS_TARGET sethword gBattle_BG2_X, 0 BattleScript_TryPrintCaughtMonInfo: + jumpifbattletype BATTLE_TYPE_RECORDED, BattleScript_GiveCaughtMonEnd trysetcaughtmondexflags BattleScript_TryNicknameCaughtMon printstring STRINGID_PKMNDATAADDEDTODEX waitstate diff --git a/data/contest_ai_scripts.s b/data/contest_ai_scripts.s index ecd3103ae2..affaf31d6d 100644 --- a/data/contest_ai_scripts.s +++ b/data/contest_ai_scripts.s @@ -1,3 +1,4 @@ +#include "config.h" #include "constants/global.h" #include "constants/contest.h" .include "asm/macros.inc" @@ -435,11 +436,11 @@ AI_CGM_BetterWhenAudienceExcited: AI_CGM_BetterWhenAudienceExcited_1stUp: @ BUG: Should be if_appeal_num_eq 0 @ 1st up on 1st appeal excitement will always be 0 -.ifdef BUGFIX +#ifdef BUGFIX if_appeal_num_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal -.else +#else if_appeal_num_not_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal -.endif +#endif if_excitement_eq 4, AI_CGM_BetterWhenAudienceExcited_1AwayFromMax if_excitement_eq 3, AI_CGM_BetterWhenAudienceExcited_2AwayFromMax end @@ -546,11 +547,11 @@ AI_CGM_TargetMonWithJudgesAttention: end AI_CGM_TargetMonWithJudgesAttention_CheckMon1: if_cannot_participate MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 -.ifdef BUGFIX +#ifdef BUGFIX if_not_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 -.else +#else if_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 -.endif +#endif if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 score +2 if_not_completed_combo MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 @@ -559,11 +560,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon1: AI_CGM_TargetMonWithJudgesAttention_CheckMon2: if_user_order_eq MON_2, AI_CGM_End if_cannot_participate MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 -.ifdef BUGFIX +#ifdef BUGFIX if_not_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 -.else +#else if_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 -.endif +#endif if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 score +2 if_not_completed_combo MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 @@ -572,11 +573,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon2: AI_CGM_TargetMonWithJudgesAttention_CheckMon3: if_user_order_eq MON_3, AI_CGM_End if_cannot_participate MON_3, AI_CGM_End -.ifdef BUGFIX +#ifdef BUGFIX if_not_used_combo_starter MON_3, AI_CGM_End -.else +#else if_used_combo_starter MON_3, AI_CGM_End -.endif +#endif if_random_less_than 125, AI_CGM_End score +2 if_not_completed_combo MON_3, AI_CGM_End diff --git a/data/event_scripts.s b/data/event_scripts.s index 35d0cae2f9..7ce6f60485 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -1,3 +1,4 @@ +#include "config.h" #include "config/battle.h" #include "config/item.h" #include "constants/global.h" @@ -1004,6 +1005,13 @@ Common_EventScript_LegendaryFlewAway:: release end +EventScript_VsSeekerChargingDone:: + special VsSeekerFreezeObjectsAfterChargeComplete + waitstate + special VsSeekerResetObjectMovementAfterChargeComplete + releaseall + end + .include "data/scripts/pc_transfer.inc" .include "data/scripts/questionnaire.inc" .include "data/scripts/abnormal_weather.inc" diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s index 49fcf798b6..43f4222596 100644 --- a/data/field_effect_scripts.s +++ b/data/field_effect_scripts.s @@ -1,3 +1,4 @@ +#include "config/item.h" .include "asm/macros.inc" .include "constants/constants.inc" @@ -72,6 +73,9 @@ gFieldEffectScriptPointers:: .4byte gFieldEffectScript_RayquazaSpotlight @ FLDEFF_RAYQUAZA_SPOTLIGHT .4byte gFieldEffectScript_DestroyDeoxysRock @ FLDEFF_DESTROY_DEOXYS_ROCK .4byte gFieldEffectScript_MoveDeoxysRock @ FLDEFF_MOVE_DEOXYS_ROCK + .4byte gFldEffScript_UseVsSeeker @ FLDEFF_USE_VS_SEEKER + .4byte gFldEffScript_XIcon @ FLDEFF_X_ICON + .4byte gFldEffScript_DoubleExclMarkIcon @ FLDEFF_DOUBLE_EXCL_MARK_ICON gFieldEffectScript_ExclamationMarkIcon1:: field_eff_callnative FldEff_ExclamationMarkIcon @@ -343,3 +347,15 @@ gFieldEffectScript_DestroyDeoxysRock:: gFieldEffectScript_MoveDeoxysRock:: field_eff_callnative FldEff_MoveDeoxysRock field_eff_end + +gFldEffScript_UseVsSeeker:: + field_eff_callnative FldEff_UseVsSeeker + field_eff_end + +gFldEffScript_XIcon:: + field_eff_callnative FldEff_XIcon + field_eff_end + +gFldEffScript_DoubleExclMarkIcon:: + field_eff_callnative FldEff_DoubleExclMarkIcon + field_eff_end diff --git a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc index 6162d0ada6..a216055b5b 100644 --- a/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc +++ b/data/maps/BattleFrontier_BattleTowerLobby/scripts.inc @@ -415,18 +415,18 @@ BattleFrontier_BattleTowerLobby_EventScript_SaveBeforeLinkMultisChallenge:: @ to the flash, but not data in PokemonStorage. The SaveGame script that follows asks the player to do a full save, @ which they can opt out of. As a result the player can save their party and quit without having saved the PC. @ This allows players to clone pokemon and their held items by withdrawing them (or erase them by despositing). -.ifndef BUGFIX +#ifndef BUGFIX tower_save 0 -.endif +#endif call Common_EventScript_SaveGame setvar VAR_TEMP_CHALLENGE_STATUS, 255 goto_if_eq VAR_RESULT, 0, BattleFrontier_BattleTowerLobby_EventScript_CancelChallengeSaveFailed @ GAME_STAT_ENTERED_BATTLE_TOWER should not be incremented here, for two reasons: @ 1. It is incremented again in BattleFrontier_BattleTowerLobby_EventScript_CableLinkSuccessful or BattleFrontier_BattleTowerLobby_EventScript_WirelessLinkSuccessful -@ 2. If the player tries to save, but fails, the counter will still be incremented even if the player never enters the tower. -.ifndef BUGFIX +@ 2. If the player tries to connect, but fails, the counter will still be incremented even if the player never enters the tower. +#ifndef BUGFIX incrementgamestat GAME_STAT_ENTERED_BATTLE_TOWER -.endif +#endif specialvar VAR_RESULT, IsWirelessAdapterConnected goto_if_eq VAR_RESULT, TRUE, BattleFrontier_BattleTowerLobby_EventScript_TryWirelessLink goto BattleFrontier_BattleTowerLobby_EventScript_TryCableLink diff --git a/data/maps/BirthIsland_Exterior/scripts.inc b/data/maps/BirthIsland_Exterior/scripts.inc index d2174eee99..644001c6e7 100644 --- a/data/maps/BirthIsland_Exterior/scripts.inc +++ b/data/maps/BirthIsland_Exterior/scripts.inc @@ -81,11 +81,11 @@ BirthIsland_Exterior_EventScript_Deoxys:: applymovement LOCALID_DEOXYS, BirthIsland_Exterior_Movement_DeoxysApproach waitmovement 0 waitse - playmoncry SPECIES_DEOXYS, CRY_MODE_ENCOUNTER + playmoncry SPECIES_DEOXYS_NORMAL, CRY_MODE_ENCOUNTER delay 40 waitmoncry setvar VAR_LAST_TALKED, LOCALID_DEOXYS - seteventmon SPECIES_DEOXYS, 30 + seteventmon SPECIES_DEOXYS_NORMAL, 30 setflag FLAG_SYS_CTRL_OBJ_DELETE special BattleSetup_StartLegendaryBattle waitstate @@ -100,12 +100,12 @@ BirthIsland_Exterior_EventScript_Deoxys:: BirthIsland_Exterior_EventScript_DefeatedDeoxys:: setflag FLAG_DEFEATED_DEOXYS - setvar VAR_0x8004, SPECIES_DEOXYS + setvar VAR_0x8004, SPECIES_DEOXYS_NORMAL goto Common_EventScript_LegendaryFlewAway end BirthIsland_Exterior_EventScript_RanFromDeoxys:: - setvar VAR_0x8004, SPECIES_DEOXYS + setvar VAR_0x8004, SPECIES_DEOXYS_NORMAL goto Common_EventScript_LegendaryFlewAway end diff --git a/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc b/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc index 263b071056..e17af35724 100644 --- a/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc +++ b/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc @@ -229,11 +229,11 @@ MossdeepCity_SpaceCenter_1F_EventScript_Grunt2:: copyobjectxytoperm LOCALID_STAIR_GRUNT switch VAR_FACING case DIR_WEST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsWest - #ifdef BUGFIX +#ifdef BUGFIX case DIR_EAST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsEast - #else +#else case DIR_WEST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsEast - #endif +#endif applymovement LOCALID_STAIR_GRUNT, MossdeepCity_SpaceCenter_1F_Movement_MoveGruntFromStairs waitmovement 0 setvar VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE, 2 diff --git a/data/maps/Route119_WeatherInstitute_2F/scripts.inc b/data/maps/Route119_WeatherInstitute_2F/scripts.inc index e5df03d4a1..2dfec9bffe 100644 --- a/data/maps/Route119_WeatherInstitute_2F/scripts.inc +++ b/data/maps/Route119_WeatherInstitute_2F/scripts.inc @@ -88,8 +88,8 @@ Route119_WeatherInstitute_2F_EventScript_ShellyDefeated:: Route119_WeatherInstitute_2F_EventScript_ReceiveCastform:: msgbox Route119_WeatherInstitute_2F_Text_ThanksPleaseTakePokemon, MSGBOX_DEFAULT - setvar VAR_TEMP_TRANSFERRED_SPECIES, SPECIES_CASTFORM - givemon SPECIES_CASTFORM, 25, ITEM_MYSTIC_WATER + setvar VAR_TEMP_TRANSFERRED_SPECIES, SPECIES_CASTFORM_NORMAL + givemon SPECIES_CASTFORM_NORMAL, 25, ITEM_MYSTIC_WATER goto_if_eq VAR_RESULT, MON_GIVEN_TO_PARTY, Route119_WeatherInstitute_2F_EventScript_ReceiveCastformParty goto_if_eq VAR_RESULT, MON_GIVEN_TO_PC, Route119_WeatherInstitute_2F_EventScript_ReceiveCastformPC goto Common_EventScript_NoMoreRoomForPokemon @@ -122,7 +122,7 @@ Route119_WeatherInstitute_2F_EventScript_ReceivedCastformFanfare:: message Route119_WeatherInstitute_2F_Text_PlayerReceivedCastform waitmessage waitfanfare - bufferspeciesname STR_VAR_1, SPECIES_CASTFORM + bufferspeciesname STR_VAR_1, SPECIES_CASTFORM_NORMAL return Route119_WeatherInstitute_2F_EventScript_ExplainCastform:: diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index b29291a7f9..4d14a2a2a6 100644 --- a/data/scripts/debug.inc +++ b/data/scripts/debug.inc @@ -39,6 +39,32 @@ Debug_CheatStart:: setvar VAR_BRINEY_HOUSE_STATE, 1 setvar VAR_ROUTE116_STATE, 2 setflag FLAG_HIDE_ROUTE_116_MR_BRINEY + setflag FLAG_BADGE01_GET + setflag FLAG_BADGE02_GET + setflag FLAG_BADGE03_GET + setflag FLAG_BADGE04_GET + setflag FLAG_BADGE05_GET + setflag FLAG_BADGE06_GET + setflag FLAG_BADGE07_GET + setflag FLAG_BADGE08_GET + setflag FLAG_VISITED_LITTLEROOT_TOWN + setflag FLAG_VISITED_OLDALE_TOWN + setflag FLAG_VISITED_DEWFORD_TOWN + setflag FLAG_VISITED_LAVARIDGE_TOWN + setflag FLAG_VISITED_FALLARBOR_TOWN + setflag FLAG_VISITED_VERDANTURF_TOWN + setflag FLAG_VISITED_PACIFIDLOG_TOWN + setflag FLAG_VISITED_PETALBURG_CITY + setflag FLAG_VISITED_SLATEPORT_CITY + setflag FLAG_VISITED_MAUVILLE_CITY + setflag FLAG_VISITED_RUSTBORO_CITY + setflag FLAG_VISITED_FORTREE_CITY + setflag FLAG_VISITED_LILYCOVE_CITY + setflag FLAG_VISITED_MOSSDEEP_CITY + setflag FLAG_VISITED_SOOTOPOLIS_CITY + setflag FLAG_VISITED_EVER_GRANDE_CITY + setflag FLAG_LANDMARK_POKEMON_LEAGUE + setflag FLAG_LANDMARK_BATTLE_FRONTIER clearflag FLAG_HIDE_BRINEYS_HOUSE_MR_BRINEY clearflag FLAG_HIDE_BRINEYS_HOUSE_PEEKO release @@ -69,28 +95,28 @@ Debug_BoxFilledMessage:: Debug_BoxFilledMessage_Text: .string "Storage boxes filled!$" -Debug_Script_1:: +Debug_EventScript_Script_1:: end -Debug_Script_2:: +Debug_EventScript_Script_2:: end -Debug_Script_3:: +Debug_EventScript_Script_3:: end -Debug_Script_4:: +Debug_EventScript_Script_4:: end -Debug_Script_5:: +Debug_EventScript_Script_5:: end -Debug_Script_6:: +Debug_EventScript_Script_6:: end -Debug_Script_7:: +Debug_EventScript_Script_7:: end -Debug_Script_8:: +Debug_EventScript_Script_8:: end Debug_CheckSaveBlock:: @@ -104,13 +130,26 @@ Debug_CheckSaveBlock:: end Debug_SaveBlock1Size:: - .string "SaveBlock1 size: {STR_VAR_1}/{STR_VAR_2}.$" + .string "SaveBlock1 size: {STR_VAR_1}b/{STR_VAR_2}b.\n" + .string "Free space: {STR_VAR_3}b.$" Debug_SaveBlock2Size:: - .string "SaveBlock2 size: {STR_VAR_1}/{STR_VAR_2}.$" + .string "SaveBlock2 size: {STR_VAR_1}b/{STR_VAR_2}b.\n" + .string "Free space: {STR_VAR_3}b.$" Debug_PokemonStorageSize:: - .string "{PKMN}Storage size: {STR_VAR_1}/{STR_VAR_2}.$" + .string "{PKMN}Storage size: {STR_VAR_1}b/{STR_VAR_2}b.\n" + .string "Free space: {STR_VAR_3}b.$" + +Debug_CheckROMSpace:: + callnative CheckROMSize + msgbox Debug_ROMSize, MSGBOX_DEFAULT + release + end + +Debug_ROMSize:: + .string "ROM size: {STR_VAR_1}MB/32MB.\n" + .string "Free space: {STR_VAR_2}MB.$" Debug_HatchAnEgg:: lockall @@ -142,29 +181,52 @@ DebugScript_HatchAnEgg_Text_EmptyParty:: DebugScript_HatchAnEgg_Text_NotAnEgg:: .string "That's not a Pokémon Egg.$" - + DebugScript_ZeroDaycareMons:: msgbox DebugText_DaycareNoPokemon, MSGBOX_DEFAULT releaseall end - + DebugScript_OneDaycareMons:: msgbox DebugText_DaycareOnePokemon, MSGBOX_DEFAULT releaseall end - + DebugScript_DaycareMonsNotCompatible:: msgbox DebugText_DaycarePokemonNotCompatible, MSGBOX_DEFAULT releaseall end - + DebugText_DaycareNoPokemon: .string "You have no Pokémon at Daycare.$" - + DebugText_DaycareOnePokemon: .string "You have only one Pokémon at Daycare.$" - + DebugText_DaycarePokemonNotCompatible: .string "Your Pokémon at Daycare can't\nhave babies together!$" +Debug_ShowExpansionVersion:: + callnative BufferExpansionVersion + msgbox Debug_ExpansionVersion, MSGBOX_DEFAULT + release + end + +Debug_ExpansionVersion: + .string "pokeemerald-expansion {STR_VAR_1}$" + .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'!$" + diff --git a/data/scripts/repel.inc b/data/scripts/repel.inc index ab7924bd21..44cfcb5d23 100644 --- a/data/scripts/repel.inc +++ b/data/scripts/repel.inc @@ -1,117 +1,152 @@ -EventScript_RepelWoreOff:: +.set LOCAL_VAR_SPRAY, VAR_0x8004 +.set LOCAL_VAR_NUM_SPRAY_STRENGTH, VAR_0x8005 +.set LOCAL_VAR_SPRAY_TYPE, VAR_0x8009 +.set LOCAL_VAR_NEW_SPRAY, VAR_0x8007 + +EventScript_BufferSprayName:: +.if VAR_LAST_REPEL_LURE_USED != 0 + bufferitemname STR_VAR_1, VAR_LAST_REPEL_LURE_USED + return +.endif + specialvar LOCAL_VAR_SPRAY_TYPE, GetLastUsedSprayType + compare LOCAL_VAR_SPRAY_TYPE, ITEM_REPEL + goto_if_eq EventScript_BufferSprayName_2 + bufferitemname STR_VAR_1, ITEM_LURE +EventScript_BufferSprayName_1: + return + +EventScript_BufferSprayName_2: + bufferitemname STR_VAR_1, ITEM_REPEL + goto EventScript_BufferSprayName_1 + + +EventScript_SprayWoreOff:: + lock + call EventScript_BufferSprayName + specialvar LOCAL_VAR_NUM_SPRAY_STRENGTH, GetNumberSprayStrength + switch LOCAL_VAR_NUM_SPRAY_STRENGTH + case 0, EventScript_SprayWoreOffMessage + case 1, EventScript_UseSingleSpray + goto EventScript_HandleMultipleSprays + return + +EventScript_HandleMultipleSprays:: .if I_REPEL_LURE_MENU == TRUE - checkitem ITEM_REPEL, 1 - goto_if_eq VAR_RESULT, TRUE, EventScript_RepelUseAnother - checkitem ITEM_SUPER_REPEL, 1 - goto_if_eq VAR_RESULT, TRUE, EventScript_RepelUseAnother - checkitem ITEM_MAX_REPEL, 1 - goto_if_eq VAR_RESULT, TRUE, EventScript_RepelUseAnother + goto EventScript_ChooseWhichSpray +.else + goto EventScript_UseSingleSpray +.endif + return + + +EventScript_SprayWoreOffMessage:: + msgbox Text_SprayWoreOff, MSGBOX_SIGN + releaseall + end + + +EventScript_UseSingleSpray:: +.if VAR_LAST_REPEL_LURE_USED == 0 + call EventScript_UseDifferentSpray .else checkitem VAR_LAST_REPEL_LURE_USED, 1 - goto_if_eq VAR_RESULT, TRUE, EventScript_RepelUseAnother + compare VAR_RESULT, TRUE + goto_if_eq EventScript_UseSingleSpray_2 + call EventScript_UseDifferentSpray .endif - lock - msgbox Text_RepelWoreOff, MSGBOX_SIGN - release +EventScript_UseSingleSpray_1: + closemessage + releaseall end -EventScript_RepelUseAnother: - lock - msgbox Text_UseAnotherRepel, MSGBOX_YESNO +.if VAR_LAST_REPEL_LURE_USED != 0 +EventScript_UseSingleSpray_2: + call EventScript_UseLastUsedSpray + goto EventScript_UseSingleSpray_1 +.endif + + +EventScript_SetSingleSprayAndUse:: + setvar VAR_RESULT, 0 + call EventScript_UseSpray + return + + +EventScript_UseDifferentSpray:: + specialvar LOCAL_VAR_NEW_SPRAY, GetSprayId + bufferitemname STR_VAR_2, LOCAL_VAR_NEW_SPRAY + msgbox Text_SprayWoreOffAskUseX, MSGBOX_YESNO + compare VAR_RESULT, YES + goto_if_eq EventScript_UseDifferentSpray_2 +EventScript_UseDifferentSpray_1: + return + +EventScript_UseDifferentSpray_2: + copyvar LOCAL_VAR_SPRAY, LOCAL_VAR_NEW_SPRAY + call EventScript_SetSingleSprayAndUse + goto EventScript_UseDifferentSpray_1 + + +.if VAR_LAST_REPEL_LURE_USED != 0 +EventScript_UseLastUsedSpray:: + msgbox Text_SprayWoreOffAskUseAnother, MSGBOX_YESNO + compare VAR_RESULT, YES + goto_if_eq EventScript_UseLastUsedSpray_2 +EventScript_UseLastUsedSpray_1: + return + +EventScript_UseLastUsedSpray_2: + copyvar LOCAL_VAR_SPRAY, VAR_LAST_REPEL_LURE_USED + call EventScript_SetSingleSprayAndUse + goto EventScript_UseLastUsedSpray_1 +.endif + + .if I_REPEL_LURE_MENU == TRUE - goto_if_eq VAR_RESULT, NO, EventScript_RepelWoreOff_End - callnative TryDrawRepelMenu - goto_if_eq VAR_RESULT, FALSE, EventScript_RepelWoreOff_Chose +EventScript_ChooseWhichSpray:: + message Text_SprayWoreOffAskUseAnother + waitmessage + callnative DrawSprayMenu waitstate - goto_if_eq VAR_RESULT, 127, EventScript_RepelWoreOff_End -EventScript_RepelWoreOff_Chose: - callnative HandleRepelMenuChoice - bufferitemname 1, VAR_0x8004 - removeitem VAR_0x8004, 1 - playse SE_REPEL - msgbox Text_UsedNewRepelLure, MSGBOX_SIGN -.else - goto_if_eq VAR_RESULT, YES, EventScript_UsedRepel -.endif -EventScript_RepelWoreOff_End: - release + compare VAR_RESULT, MULTI_B_PRESSED + goto_if_ne EventScript_ChooseWhichSpray_3 +EventScript_ChooseWhichSpray_1: + closemessage + releaseall end -EventScript_UsedRepel: - bufferitemname 1, VAR_LAST_REPEL_LURE_USED +EventScript_ChooseWhichSpray_2: + call EventScript_UseSpray + goto EventScript_ChooseWhichSpray_1 + +EventScript_ChooseWhichSpray_3: + compare VAR_RESULT, VAR_0x8003 + goto_if_ne EventScript_ChooseWhichSpray_2 + goto EventScript_ChooseWhichSpray_1 +.endif + + +EventScript_UseSpray:: playse SE_REPEL - lock - msgbox Text_UsedNewRepelLure, MSGBOX_SIGN - removeitem VAR_LAST_REPEL_LURE_USED, 1 waitse - callnative HandleUseExpiredRepel - release - end + callnative HandleSprayMenuChoice + removeitem LOCAL_VAR_SPRAY, 1 + bufferitemname STR_VAR_2, LOCAL_VAR_SPRAY + msgbox Text_SprayWoreOffUseX, MSGBOX_SIGN + return -EventScript_LureWoreOff:: -.if I_REPEL_LURE_MENU == TRUE - checkitem ITEM_LURE, 1 - goto_if_eq VAR_RESULT, TRUE, EventScript_LureUseAnother - checkitem ITEM_SUPER_LURE, 1 - goto_if_eq VAR_RESULT, TRUE, EventScript_LureUseAnother - checkitem ITEM_MAX_LURE, 1 - goto_if_eq VAR_RESULT, TRUE, EventScript_LureUseAnother -.else - checkitem VAR_LAST_REPEL_LURE_USED, 1 - goto_if_eq VAR_RESULT, TRUE, EventScript_LureUseAnother -.endif - lock - msgbox Text_LureWoreOff, MSGBOX_SIGN - release - end -EventScript_LureUseAnother: - lock - msgbox Text_UseAnotherLure, MSGBOX_YESNO -.if I_REPEL_LURE_MENU == TRUE - goto_if_eq VAR_RESULT, NO, EventScript_LureWoreOff_End - callnative TryDrawLureMenu - goto_if_eq VAR_RESULT, FALSE, EventScript_LureWoreOff_Chose - waitstate - goto_if_eq VAR_RESULT, 127, EventScript_LureWoreOff_End -EventScript_LureWoreOff_Chose: - callnative HandleLureMenuChoice - bufferitemname 1, VAR_0x8004 - removeitem VAR_0x8004, 1 - playse SE_REPEL - msgbox Text_UsedNewRepelLure, MSGBOX_SIGN -.else - goto_if_eq VAR_RESULT, YES, EventScript_UsedLure -.endif -EventScript_LureWoreOff_End: - release - end +Text_SprayWoreOff:: + .string "{STR_VAR_1}'s effect wore off…$" -EventScript_UsedLure: - bufferitemname 1, VAR_LAST_REPEL_LURE_USED - playse SE_REPEL - lock - msgbox Text_UsedNewRepelLure, MSGBOX_SIGN - removeitem VAR_LAST_REPEL_LURE_USED, 1 - waitse - callnative HandleUseExpiredLure - release - end - -Text_RepelWoreOff: - .string "REPEL's effect wore off…$" - -Text_UseAnotherRepel:: - .string "REPEL's effect wore off!\n" +Text_SprayWoreOffAskUseAnother:: + .string "{STR_VAR_1}'s effect wore off!\n" .string "Use another?$" -Text_LureWoreOff: - .string "Lure's effect wore off…$" +Text_SprayWoreOffAskUseX:: + .string "{STR_VAR_1}'s effect wore off…\n" + .string "Use a {STR_VAR_2}?$" -Text_UseAnotherLure:: - .string "Lure's effect wore off!\n" - .string "Use another?$" - -Text_UsedNewRepelLure:: +Text_SprayWoreOffUseX:: .string "{PLAYER} used the\n" .string "{STR_VAR_2}.$" diff --git a/data/scripts/trainer_hill.inc b/data/scripts/trainer_hill.inc index b7f8153514..04bbe05e5a 100644 --- a/data/scripts/trainer_hill.inc +++ b/data/scripts/trainer_hill.inc @@ -13,9 +13,9 @@ TrainerHill_OnWarp: TrainerHill_1F_EventScript_DummyOnWarp:: setvar VAR_TEMP_3, 1 -.ifdef BUGFIX +#ifdef BUGFIX end @ Missing end. By chance, the next byte (0x02 of VAR_TEMP_2) is also the id for the end cmd -.endif +#endif TrainerHill_OnFrame: map_script_2 VAR_TEMP_2, 0, TrainerHill_1F_EventScript_DummyWarpToEntranceCounter diff --git a/data/specials.inc b/data/specials.inc index ded2e3f4fe..152210c176 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -536,3 +536,9 @@ gSpecials:: def_special TrySetBattleTowerLinkType def_special SetTotemBoost def_special TrySpecialOverworldEvo + def_special GetNumberSprayStrength + def_special GetSprayId + def_special GetLastUsedSprayType + def_special TrySkyBattle + def_special VsSeekerResetObjectMovementAfterChargeComplete + def_special VsSeekerFreezeObjectsAfterChargeComplete diff --git a/data/text/trainers.inc b/data/text/trainers.inc index c3e85ef504..ac3747f805 100644 --- a/data/text/trainers.inc +++ b/data/text/trainers.inc @@ -4779,3 +4779,18 @@ Route134_Text_HudsonPostBattle: .string "Our boat drifted out to sea.\p" .string "My buddy's a timid fellow, so I'm\n" .string "worried about him.$" + +VSSeeker_Text_BatteryNotChargedNeedXSteps:: + .string "The battery isn't charged enough.\p" + .string "No. of steps required to fully\n" + .string "charge the battery: {STR_VAR_1}{PAUSE_UNTIL_PRESS}$" + +VSSeeker_Text_NoTrainersWithinRange:: + .string "There are no Trainers within range\n" + .string "who can battle…\p" + .string "The VS Seeker was turned off.{PAUSE_UNTIL_PRESS}$" + +VSSeeker_Text_TrainersNotReady:: + .string "The other Trainers don't appear\n" + .string "to be ready for battle.\p" + .string "Let's wait till later.{PAUSE_UNTIL_PRESS}$" diff --git a/docs/changelogs/1.6.2.md b/docs/changelogs/1.6.2.md new file mode 100644 index 0000000000..4e5e187af7 --- /dev/null +++ b/docs/changelogs/1.6.2.md @@ -0,0 +1,126 @@ +# Version 1.6.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.6.2`. +``` + +## 🌋 *IMPORTANT CHANGES* 🌋 +### Battle changes +* Battler Types are now obtained via `GetBattlerType` instead of `gBattleMons[battlerId].type1/2/3` to better consider Roost. Be sure to update your custom battle effects to account for this change. + +## 🧬 General 🧬 +### Fixed +* Fixed Cheat Start not initiating time-based events by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3446 + +## 🐉 Pokémon 🐉 +### Changed +* Updated Cresselia's base stats to Gen 9 by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3419 +* Updated Zacian/Zamazenta base stats to Gen 9 by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3421 +### Fixed +* Fixed Kleavor, Hisuian Sneasel and Sneasler missing their SV abilities by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3391 +* Fixed Bergmite/Avalugg old and updated egg groups being switched by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3380 + +## 🤹 Moves 🤹 +### Changed +* Quick Draw now uses weighted RNG by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399 +* Added `IS_BATTLER_TYPELESS` macro that checks if the specified battler has no valid type by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3303 +### Fixed +* Fixed Protect failing if the user flinched on the previous turn by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3345 +* Fixed entry hazards not working properly being cleared on switch-in by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3316 + * This includes Toxic Spikes not working if Pecha Berry actived on the previous turn. +* Fixed Roost overwriting other type changing at the end of the turn (Soak, Forest's Curse, Color Change, etc.) by @BLourenco in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258 + * Now it suppresses the user's Flying-type rather than remove and re-add it. +* Fixes Salt Cure visual bug if mon fainted by direct attack by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3388 +* Fixed Purifying Salt not preventing the use of Rest by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399 +* Fixed Make it Rain lowering Sp. Attack twice if hitting 2 targets in double battles by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3441 +* Fixed Reflect Type not properly handle 3rd types by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3303 +* Fixed form change triggered by switching not occuring when using moves like U-Turn or Baton Pass by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3463 +* Fixed Last Resort not counting Sleep Talk as used for its effect by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378 + +## 🎭 Abilities 🎭 +### Changed +* Removed unused `STATUS3_CANT_SCORE_A_CRIT` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377 +* Moved Beads of Ruin and Sword of Ruin damage to the appropiate damage modifier functions by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415 +### Fixed +* Fixed Intimidate increasing the attack of both opponents if one of them has Contrary in double battles by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3365 +* Fixed Battle/Shell Armor not preventing critical hits by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377 +* Fixed Rivalry's effect being reversed by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381 +* Fixed Rivalry lowering attack if either attacker or target were genderless by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381 +* Fixed missing Poison Heal Ability Popup by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3385 +* Fixed Parental Bond not working at all by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3417 +* Fixed Beads of Ruin and Sword of Ruin damage modifiers by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415 +* Fixed Sheer Force not negating effects that benefit the user (eg. Flame Charge, Power-Up Punch) by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378 +* Fixed Strength Sap not healing the user when used on a Substitute by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3486 +* Fixed Substitute showing the "took damage for" message if Strength Sap was used on it by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3486 +* Fixed Weak Armor interrupting Multi Hit moves by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3497 + +## 🧶 Items 🧶 +### Fixed +* Fixed Shiny Charm doing too many rerolls by default by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3327 +* Fixed Berserk Gene activating for the wrong Pokémon double battles by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3363 +* Fixed Red Card not being consumed after opponent Sticky Web activation by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364 +* Fixed implementation of Gen6 that didn't allow for the Exp Share flag to be set via script without setting the item to the Gen 6+ version by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3384 +* Fixed Kee Berry raising defense by 1 stage instead of 2 by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409 +* Fixed Kee Berry incorrect stat raise message by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409 +* Fixed Razor Fang not being able to be used directly even if `I_USE_EVO_HELD_ITEMS_FROM_BAG` was set to `TRUE` by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3456 + +## 🧹 Cleanup 🧹 +* `AbilityBattleEffects` uses `B_MSG_TERRAIN` constants for field terrain intro text by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3410 +* Removed all trailing whitespace by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3472 + +## 🧪 Test Runner 🧪 +### Added +* Flinch tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3345 +* Berserk Gene double battle tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3363 +* More specific Toxic Spikes tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3316 +* Red Card/Sticky Web test @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364 +* Intimidate/Contrary double battle test by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3365 +* Critical Hit tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377 +* Roost tests by @BLourenco in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258 +* Rivalry tests by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3381 +* Various tests by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3385 + * Defeatist, Dragon's Maw, Earth Eater, Gale Wings, Poison Heal, Rocky Payload, Sap Sipper, Steelworker and Transistor. +* Various tests by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3399 + * Beast Boost, Ice Scales, Neuroforce, Purifying Salt, Quick Draw and Sharpness. +* Berry tests @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3409 + * Full: Apicot, Custap, Ganlon, Jaboca, Kee, Lansat, Liechi, Maranga, Micle, Petaya, Rowap and Salac Berries. + * TODO: Starf Berry. +* Weather and type-specific tests by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3260 + * Full: Freezing, Hail, Moonlight, Morning Sun, Sandstorm, Snow, Solar Beam/Blade, Steel poisoning, Synthesis, Thunder and Weather Ball. + * Partial: Prankster, Safety Goggles, Aurora Veil, Hurricane, Leech Seed and OHKO moves. + * TODO: Harvest. +* Single Parental Bond test by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3417 +* Several tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3378 + * Full: Weak Armor, Last Resort, Stealth Rock. + * Completed Weak Armor tests by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3493 + * Partial: Defiant, Sheer Force, White Herb, Strength Sap. +### Changed +* Red Card tests now check if the item was consumed by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3364 +* Tests now cannot use `i` in their cycles to avoid messing with `PARAMETRIZE` by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3408 +* Moved battle tests off the heap by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3414 +* Moved Powder/Grass test to `move_flags` folder by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3260 +* Continuous `NOT x; NOT y;` are now not allowed in tests due to them not acting as one would expect by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3459 + * Test writers should use `NONE_OF { x; y; }` instead. +### Fixed +* Fixed CreateNPCTrainerPartyForTrainer test failing on modern by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3367 +* Fixed `RNG_CRITICAL_HIT` by @mrgriffin and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3377 +* Fixed `ASSUMPTIONS` block not working by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3368 + * Fixup by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3408 +* Fixed Beads of Ruin and Sword of Ruin damage tests by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3415 +* Fixes test RNG by @mrgriffin and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3433 +* Fixed battle test estimateCost bug by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3448 +* Test cleanup and improvements by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3449 + * Removed duplicated Prankster TO_DO test. + * Corrected Multi-hit test names (4 and 5 hits stated 35% instead of 15%). + * Grouped Maranga Berry's Physical vs Special tests using PARAMETRIZE. + * Improved Jaboca, Kee and Rowap tests by @AlexOn1ine +* Fixed `ModifyPersonalityForNature` by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3452 +* Fixed test_runner.c modern warning by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3451 + +## New Contributors +* @BLourenco made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3258 + +## Full Changelog +https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.6.1...expansion/1.6.2 diff --git a/docs/changelogs/1.7.0.md b/docs/changelogs/1.7.0.md new file mode 100644 index 0000000000..c9afdcc0e0 --- /dev/null +++ b/docs/changelogs/1.7.0.md @@ -0,0 +1,584 @@ +# Version 1.7.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.7.0`. +``` + +## 🌋 *IMPORTANT CHANGES* 🌋 +### [***The Expansion now uses Modern compilers by default***](https://github.com/rh-hideout/pokeemerald-expansion/pull/3305) +* We have enabled `-Werror -Wall` in the Makefile. These flags show warnings for undefined behaviors in the old compiler (`agbcc`), and sets all warnings as errors. As such, we have updated the codebase so that all warnings that **gcc 13** throws are handled: + * CI now uses devkitarm container to run a more modern gcc by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3429 + * Fix by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3530 + * Fixed `-Wall -Werror` errors on Modern by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3412 + * Fixed warnings introduced by gcc 13 by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3428 + * `-Warray-bounds` + * `-Waddress` + * `-Warray-parameter` + * Fixed `-Wmaybe-uninitialized` for `ModifyPersonalityForNature` test by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3457 +* ***Modern compiler may raise the following errors for code introduced from outside the expansion, so we recommend solving those errors:*** + * `unused-function`. To solve it, add `UNUSED` to the function definition. + ```diff + -static void Function(void) + +static void UNUSED Function(void) + ``` + * `unused-variable`. To solve it, remove the unused variable. + ```diff + static void Function(void) + { + - u8 unused; + u8 used; + ... + ``` + * `unused-but-set-variable`. To solve it, add `UNUSED` to the variable definition. + ```diff + static void Function(void) + { + - u8 unused; + + u8 UNUSED unused; + u8 used; + unused = DoSomething(); + ... + ``` +* Updated modern compiler install instructions by @hedara90 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3527 +* ***You may still use `agbcc` by adding*** `agbcc` to your `make` command to finish the update process before fixing these errors. + * eg. `make -j8 agbcc`. + * We may drop support for it in the future, so we recommend updating the code to support the new compilers. + * This will generate `pokeemerald_agbcc.gba`, while modern will generate `pokeemerald.gba` by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3462 + +## 🧬 General 🧬 +### Added +* Incorporated @TheXaman's HGSS Style Pokédex by @AaghatIsLive in https://github.com/rh-hideout/pokeemerald-expansion/pull/3288 + * Includes Dark Mode + * Fix by @AaghatIsLive in https://github.com/rh-hideout/pokeemerald-expansion/pull/3479 + * Updated evolution strings by @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/3375 + * Changes to omit adding the code when disabling the feature by @SBird1337 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3445 + * Teachable move list fix by @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/3624 +* Incorporated @DizzyEggg's nature color branch by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3582 + * Shows nature stat modifiers in summary screen. + * Added `SUMMARY_SCREEN_NATURE_COLORS` config to disable it. + * Updates stat reduction to blue to align with official implementation. +* Added `I_SELL_VALUE_FRACTION` config that changes selling factor of items to 1/4th when set to Gen 9 by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3315 +* Added `P_FRIENDSHIP_EVO_THRESHOLD` config to update the Friendship evolution threshold to Gen8+'s standard by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3376 +* Debug Menu + * Added `ROM Space` Utility option to check ROM space by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3453 + * Added `Toggle Match Call` Flag option to toggle Match Call by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3489 + * Added `Move Reminder` option by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3707 + * Moved Party/Boxes related functions to their own menu by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3707 +* Added expansion Rom Header by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3454 + * Added defines for Expansion version number. + * Added option to see the version number in debug menu. +* Added option to restore Japan-only Walda PC backgrounds by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3550 +* Added `BATTLE_PYRAMID_RANDOM_ENCOUNTERS` config to enable Battle Pyramid Wild Encounter randomization by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2581 +* Added a `GetSpeciesPreEvolution` function by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3696 +### Changed +* Converted `Get(Box)MonData2` to proper functions by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3416 +* Added `src/data/map_group_count.h` to `.gitignore` by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3423 +* `Cheat Start` option now gives all badges and enables all Fly locations. `Fly to...` option no longer enables all Fly locations by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3489 +* Better documentation for Type Effectiveness table by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3374 +* Generational defines now start at `GEN_1` instead of `GEN_3` by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3628 + * Fixes and cleanup + * By @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/3720 + * By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3723 +### Fixed +* Fixed potential Fly and Badge mismatch when using debug options by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3489 +* Fixed Pokémon Animation debug menu ignoring animation delay by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3562 +* Fixed `IS_DITTO` macro by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3558 +* Added RTC failsafe to Debug menu's `Cheat Start` option by @ravepossum in https://github.com/rh-hideout/pokeemerald-expansion/pull/3561 + +## 🐉 Pokémon 🐉 +### Added +* ***Added Generation 9 species up to Teal Mask*** by @leo60228, @AlexOn1ine, @katykat5099, @kittenchilly and @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3249 + * ***IMPORTANT:*** Enabling Gen 9 species currently break saves. If you don't want to use them, you can disable `P_GEN_9_POKEMON` in `include/config/species_enabled.h`. + * Reserved Indigo Disk IDs + * By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3725 + * By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3726 + * By @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3727 + * Reserved Form IDs that will be supported in future versions by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3750 + * Shadow Lugia + * Totem Forms + * Partner Pikachu and Eevee + * Updated UIs to support 4-digit Dex numbers. + * Added Dunsparce and Tandemaus evolution methods by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3547 + * Tandemaus still does the evolution cutscene for now. + * Ported newer PokéCommunity sprites by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3643 and https://github.com/rh-hideout/pokeemerald-expansion/pull/3646 + * Fixes and cleanup + * By @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3539 + * By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3655 and https://github.com/rh-hideout/pokeemerald-expansion/pull/3749 + * By @katykat5099 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3751 +* ***Adjusted Pokemon sprites and palettes - Part 2*** by @CyanSMP64 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3612 + * From Magnemite to Tangela + Hitmontop + Nidoking adjustment by MrDollSteak. + * Corrected sprite sizes and elevations + * Further palette adjustments by @CyanSMP64 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3744 + * Pidgeotto, Tentacruel, Feraligatr, Furret, Flaaffy, Marill, Azumarill and Miltank. +* Added missing Alcremie forms by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3469 + * Previously, only Strawberry Sweet forms were available + * Missing: Icons for non-Ruby Cream forms. + * Cleanup by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3488 +* Added species define synonyms for base forms with form names by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3248 + * Eg. `SPECIES_GIRATINA_ALTERED` is equal to `SPECIES_GIRATINA`. + * The original defines can be used in combination of `GET_BASE_SPECIES_ID(species)` to check for the whole species instead of specific forms. +* Added Gen 7 Pokémon 2nd frames and animations by @katykat5099 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3426 + * Rowlet family + * Pikipek family + * Cutiefly family + * Rockruff family + * Oranguru + * Passimian + * Fixed its shiny palette. + * Togedemaru + * Drampa + * Jangmo-O family +* Added Gen 6 Pokémon 2nd frames and animations by @katykat5099 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3543 + * Chespin + * Bunnelby + * Fletchling family + * Floette family + * Added missing 2nd frame for Eternal Flower Form. + * Amaura +* Added mising World Cap Pikachu icon by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3401 +* Added `P_CUSTOM_GENDER_DIFF_ICONS` config to use custom female icon sprites for Pikachu and Wobbuffet by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3506 + * Removed `P_HIPPO_GENDER_DIFF_ICONS` in favor of Hippopotas and Hippowdon to use this new config. +* 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`. + * 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`. + * Removed unused 2nd animations. + * Dex Entries + * Individual form information is visible in the HGSS Pokédex (Vanilla Dex TBD) + * National Dex numbers are assigned to the species in `gSpeciesInfo`, removing the need of `sSpeciesToHoennPokedexNum` and `sSpeciesToNationalPokedexNum` arrays. + * Height and Weight are now saved separately per form, so weight in battle is now more accurate. + * 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. + * Options to disable groups of species: + * Battle-gimmick forms (Megas, Primals, etc.) + * Regional Forms (Includes evolutions of those species, such as Sirfetch'd) + * Pikachu extra forms. + * Cross-Generation Evolutions + * Also added separate option to add cross-evolutions to the Regional Dex. + * Generation 1-3 families can now be disabled. + * Pokémon will not evolve into species that have been disabled. + * Pokémon will produce offspring of species that have been disabled. + * Pokémon will not change form into forms that have been disabled. + * Fixes and cleanup + * By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3722 + * Grouped data by species family. + * Converted species flags to gcc flags. + * Converted `P_UPDATED_STATS` "ifdef blocks" to ternaries. + * Added Mega Evolution hidden ability failsafes. + * Separated `gSpeciesInfo` by Generation by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3729 + * Fixes and cleanup + * By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3656 + * By @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3698 +* Updated `P_UPDATED_ABILITIES` Gen 9's config for Piplup's line, Gallade and Shiftry by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3353 + * Shiftry's 2nd regular ability was changed from Early Bird to Wind Rider. + * Piplup, Prinplup and Empoleon's Hidden abilities were changed from Defiant to Competitive. + * Gallade was given Sharpness as a 2nd regular ability. +* Updated Legends Arceus Pokémon data and Level Up learnsets to Scarlet/Violet's by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3458 +* Applied missing uses of `PLACEHOLDER_ANIM_SINGLE_FRAME` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3562 +* Renamed `PLACEHOLDER_TWO_FRAME_ANIMATION` to `PLACEHOLDER_ANIM_TWO_FRAMES` by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3562 +* Removed Old Unown Level Up Learnsets by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3562 +* Added `FORM_CHANGE_TIME_OF_DAY` form change that automatically changes Form during times of day (used by Shaymin to revert to Land Forme at night) by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/1690 +* Added `FORM_CHANGE_STATUS` form change that triggers when they adquire status condition (used by Shaymin to revert to Land Forme when frozen) by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3734 + * Currently it doesn't: + * Prevent Shaymin from changing into Sky Forme when frozen. + * Change Form in the Battle Pike. +* Evolutions now call for `GetTimeOfDay` instead of checking the times directly by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3369 + * Dusk Ball and Form changes also use this function by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3585 + * Added config for different times of day ranges by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3579 + * Fixes and cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3648 and https://github.com/rh-hideout/pokeemerald-expansion/pull/3701 +### Fixed +* Fixed Koffing and Weezing's abilities ignoring `P_UPDATED_ABILITIES` config and always using Gen8's config by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3353 +* Fixed Pumpkaboo macro typo by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3541 +* Multiple fixes by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3544 + * Fixed Mega Gardevoir/Gallade not having their updated Egg Groups. + * Fixed mon not having their appropiate items. + * Alolan Sandlash (Grip Claw, Rare) + * Alolan Muk (Black Sludge, Common) + * Alolan Golem (Cell Battery, Common) + * Alolan Marowak (Thick Club, Rare) + * Alolan Ninetales (Snowball, Rare) + * Fixed missing species flags. + * Giratina Origin (Legendary flag) + * Deoxys Attack (Mythical flag) + * Deoxys Defense (Mythical flag) + * Deoxys Speed (Mythical flag) + * Shaymin Sky (Mythical flag) + * Fixed Aegislash Blade giving the wrong EV yield. + * Fixed Zygarde 10% with Power Construct having the same stats as Zygarde 50%. + * Fixed Galarian Weezing having inproper noFlip property. +* Fixed Stantler not evolving when `P_GEN_9_POKEMON` is set to `FALSE` by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3548 +* Fixes Hisuian Sneasel's type order by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3706 + +## ⚔️ Battle General ⚔️ ## +### Added +* ***Dynamax*** by @AgustinGDLV and @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/2417 + Tests + * Requires a Dynamax Band in the bag and for the `B_FLAG_DYNAMAX_BATTLE` flag to be assigned and set. + * Pokémon holding a Mega Stone or Z-Crystal can't Dynamax. + * Gigantamax forms. + * G-Max Moves. + * Forms determined using the Form Change tables. + * `P_GIGANTAMAX_FORMS` config to disable those forms. + * Since we currently don't modify the `BoxPokemon` struct: + * Dynamax levels are set to 0 (1.5x HP increase) + * Species always change into their Gigantamax Forms. + * AI Dynamaxes the last Pokémon left in their party. + * Instances where HP/Max HP percentages are used now use `GetNonDynamaxHP` and `GetNonDynamaxMaxHP` respectively. + * Trainer slide-in messages by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3581 + * Fixes and cleanup + * By @AsparagusEduardo in + * https://github.com/rh-hideout/pokeemerald-expansion/pull/3435 + * https://github.com/rh-hideout/pokeemerald-expansion/pull/3510 + * https://github.com/rh-hideout/pokeemerald-expansion/pull/3713 + * By @AlexOn1ine in + * https://github.com/rh-hideout/pokeemerald-expansion/pull/3464 + * https://github.com/rh-hideout/pokeemerald-expansion/pull/3470 + * https://github.com/rh-hideout/pokeemerald-expansion/pull/3541 +* Added support for Sky Battles by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/2950 + * Requires both `B_FLAG_SKY_BATTLE` and `B_VAR_SKY_BATTLE` to be assigned. + * Use the `TrySkyBattle` special in scripts to check if the player can participate in a Sky Battle and readies the party if it's succesful. Saves the result in VAR_RESULT. + ``` + Route123_EventScript_Alberto_Battle_Event_Script: + msgbox Route123_EventScript_Alberto_Text_AskSkyBattle, MSGBOX_YESNO + compare VAR_RESULT, NO + goto_if_eq Route123_EventScript_Alberto_DenySkyBattle + special TrySkyBattle + compare VAR_RESULT, TRUE + goto_if_eq Route123_EventScript_Alberto_StartBattle + msgbox Route123_EventScript_Alberto_Text_No_Flying_Pokemon + closemessage + release + end + ``` + * The `B_SKY_BATTLE_STRICT_ELIGIBILITY` config will restrict certain Pokémon from participating based on XY's list when enabled. By default is disabled and allows all Pokémon that are Flying-type and/or have Levitate as their ability. + * Banned moves are defined by the `skyBattleBanned` flag. Besides moves banned officially in XY, Gen7+ moves are added via `B_EXTRAPOLATED_MOVE_FLAGS` config by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3714 + * Effects that interact with grounded battlers do not happen in Sky Battles. + * Fix by @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/3617 + * Cleanup by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3621 +* Added `B_TOXIC_REVERSAL` config to revert bad poison to regular poison at the end of battles by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3605 +* Added `B_SANDSTORM_SPDEF_BOOST` config to disable Sandstorm's Sp. Defense boost for Rock-type Pokémon when set to `GEN_3` or less by @Petuuuhhh in https://github.com/rh-hideout/pokeemerald-expansion/pull/3387 +* Added `B_QUICK_MOVE_CURSOR_TO_RUN` config to allow a B Button shortcut for moving the cursor to the run option in Wild Battles by @voloved in https://github.com/rh-hideout/pokeemerald-expansion/pull/3362 +* Added `B_TRY_CATCH_TRAINER_BALL` config to disable losing the Poké Ball used to try to catch a Trainer's Pokémon by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3684 +* Added `P_CATCH_CURVE` config that updates catch calculations to Gen 6+ by @AtariDreams in https://github.com/rh-hideout/pokeemerald-expansion/pull/3685 +* Added Snow weather animation by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3440 +* Added a `flushtextbox` macro to flush the text box in battles by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3442 +### Changed +* Removed redundant Battle Types by @AgustinGDLV in https://github.com/rh-hideout/pokeemerald-expansion/pull/2417 + * `BATTLE_TYPE_KYOGRE_GROUDON` + * `BATTLE_TYPE_REGI` + * `BATTLE_TYPE_GROUDON` + * `BATTLE_TYPE_KYOGRE` + * `BATTLE_TYPE_RAYQUAZA` + * Intros, terrain and music determined by the species itself. + * Regigigas, Regieleki and Regidrago play `MUS_VS_REGI`. +* Converted most battle preproc `#if` blocks to C `if`s by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3392 +* Removed pointless for loop in CB2_InitBattleInternal by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3422 +* Refactored Battle Frontier bans to check the base species by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3465 + * Better support for adding new species. + * Also adds Gen4+ [Special Pokémon](https://bulbapedia.bulbagarden.net/wiki/Special_Pok%C3%A9mon) to the list. +* Obedience levels now increase per badge by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3475 + * Also sets `B_OBEDIENCE_MECHANICS`'s default config to `GEN_LATEST`, where obedience restrictions also apply to non-outsider Pokémon, albeit based on their level met rather than actual level. + * Thanks to combination of the added obedience levels matching ORAS' with vanilla Emerald's encounter levels, there's not a single instance were players need to worry about caught Pokémon not obeying as soon as they are caught. +* Decoupled Affection values from Friendship rater thresholds, making them occur less often than what they used to by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3495 + * Because of the lessened frequency, they have been turned on by default. +* Added `HITMARKER_DISABLE_ANIMATION` to temporarily disable animations (used in Bug Bite's berry consumption) by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/3607 +### Fixed +* Fixed Psychic Terrain blocking moves that target all battler or all opponents by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3521 +* Fixed issue with "Cycle through Poké Balls" feature not working properly by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3534 +* Fixed Burmy not transforming at the end of battle if it didn't switch in during a Single Battle by @benicioneto in https://github.com/rh-hideout/pokeemerald-expansion/pull/3728 +* Fixed Player Partner not playing its Shiny animation by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/3757 + +## 🤹 Moves 🤹 +### Added +* Added Teal Mask Moves by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3402 + Tests + * Matcha Gotcha + * Syrup Bomb + * Animation by @SonikkuA-DatH and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3474 + * Fixes by @AlexOn1ine in + * https://github.com/rh-hideout/pokeemerald-expansion/pull/3437 + * https://github.com/rh-hideout/pokeemerald-expansion/pull/3552 + * Ivy Cudgel + * Type is shown in interfaces by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3590 + * Tweaks and fixes + * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3721 + * Fixed Ivy Cudgel test name by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3742 +* Added Glaive Rush's effect by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3476 +* Added Raging Bull's effect by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3552 +* Added Chilly Reception's effect by @RapidNutcracker in https://github.com/rh-hideout/pokeemerald-expansion/pull/3379 +* Added Rage Fist's effect by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3573 +* Added define synonyms (eg. `MOVE_VICE_GRIP` vs the current `MOVE_VISE_GRIP`) by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3580 +* Added combined Pledge move effects by @AlexOn1ine, @Skeli789 and @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3336 + * Status animations by @SonikkuA-DatH +* Added `B_WIDE_GUARD` and `B_QUICK_GUARD` configs for Wide Guard and Quick Guard to fail when used consecutively in Gen 5 by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3614 +* Added `B_IMPRISON` config that makes Imprison not fail if opposin Pokémon don't have any moves that the user knows from Gen 5 onwards by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3710 +### Changed +* Added `B_EXTRAPOLATED_MOVE_FLAGS` config to extend move flag for moves removed in Gen8+. + * Razor Wind, Silver Wind and Ominous Wind are given the `windMove` flag. + * Dynamax Cannon, Behemoth Blade and Behemoth Blade are given the `assistBanned` flag. + * Bitter Blade and Matcha Gotcha are given the `healBlockBanned` flag. +* Added new move flags by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3425 + * `twoTurnMove` (replaces `IsTwoTurnsMove`) + * `forcePressure` (for self-targeted moves that are affected by Pressure) + * `cantUseTwice` (replaces `EFFECT_GIGATON_HAMMER`) + * `healBlockBanned` (replaces an `EFFECT_x` switch in `IsHealBlockPreventingMove`) + * `encoreBanned` (replaces `if` chain in `Cmd_trysetencore`) + * `assistBanned` (originally used `copycatBanned` + `EFFECT_SEMI_INVULNERABLE` and `EFFECT_SKY_DROP`) + * `parentalBondBanned` +* Updated missing move flags for every move by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3425 +* Updated Grassy Glide's power from 60 to 55 when `B_UPDATED_MOVE_DATA` is set to `GEN_9` or later (Teal Mask) by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3425 +* Simplified Octolock script and converted its `various` to `callnative` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3437 +* Added `CanAbilityPreventStatLoss` to centralize stat lowering immunities by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3437 + * Fixed multiple abilities not showing the ability name in their message. +* Renamed `EFFECT_SMELLINGSALT` to `EFFECT_SMELLING_SALTS` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3504 +* New move animations by @Captain-Ford and @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3529 + * Phantom Force + * Trick or Treat + * Acrobatics + * Head Smash + * Psyshock + * Charge Beam +* Plasma Fists now setup `STATUS_FIELD_ION_DELUGE` instead of having their own `STATUS4` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3476 +* Battle Dome points are now based on move data instead of being arbitrarily assigned by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3596 +### Fixed +* Multiple Relic Song fixes by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3476 +* Fixed Acid and Crunch move descriptions being updated by `B_UPDATED_MOVE_DATA` alongside their effects by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3586 +* Fixed Howl buffing the user's ally if they have Soundproof by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3593 +* Fixed Floral Healing not increasing its effect on Grassy Terrain + Tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3604 +* Fixed Spirit Shackle/Anchor Shot not trapping the targets by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3668 +* Fixed Defog not consuming PP if the foe has -6 evasion by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3668 +* Fixed Mirror Coat being able to reflect Pain Split damage by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3668 +* Fixed incorrect Fling damage calculation due to the item being removed before them by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3670 +* Fixed Z-Moves using the base move's priority by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3690 +* Fixed Metal Burst, Trump Card and Comeuppance not being considered as damaging moves by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3697 +* Fixed Fiery Wrath animation bug that caused the user to flip upside down by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3739 +* Fixed Baton Pass not passing Embargo's remaining turns by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3745 +* Fixed Raging Fury not causing rampage on user by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3754 + +## 🎭 Abilities 🎭 +### Added +* Added Opportunist + Tests by @ghoulslash in https://github.com/rh-hideout/pokeemerald-expansion/pull/2994 +* Added Zero to Hero + Tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3542 + * Fix by @AlexOn1ine https://github.com/rh-hideout/pokeemerald-expansion/pull/3552 +* Added `B_ILLUMINATE_EFFECT` config for Illuminate's Gen9 effect by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3482 +* Added `B_WEAK_ARMOR_SPEED` config for Weak Armor's Gen 5-6 effect by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3498 +* Added `B_PROTEAN_LIBERO` config for Protean/Libero only triggering once per switch-in as of Gen 9 by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3614 +* Added `B_INTREPID_SWORD` and `B_DAUNTLESS_SHIELD` configs for Intrepid Sword and Dauntless Sword only triggering once per battle by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3614 +* Added configs for disabling ability overworld effects as of Gen 9 by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3480 + * Synchronize, Compound Eyes, Super Luck, Cute Charm, Illuminate, Infiltrator, Harvest, Lightning Rod, Storm Drain, Flash Fire, Magnet Pull and Static. +* Àbility data (not yet functional) by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3349 + * Hospitality + * Mind's Eye + * Embody Aspect (one ability per effect) + * Toxic Chain + * Supersweet Syrup +### Changed +* Pickup Table has been changed so that their percentages can be customized more easily, by @kittenchilly and @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3351 + * The data has been changed to Sword & Shield's. +* Moved `B_SYNCHRONIZE_NATURE` to `include/config/overworld.h` and renamed it to `OW_SYNCHRONIZE_NATURE` by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3480 +### Fixed +* Fixed Synchronize not working with Gift Pokémon and scripted Wild Battles by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3480 +* Fixed Anger Shell being triggered multiple times by multi-hit moves by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3508 +* Fixed Absorbing abilities not cancelling multi-hit moves + Tests (eg. Sap Sipper vs Bullet Seed) by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3516 +* Fixed issue that caused Shadow Tag to not work by @fdeblasio in https://github.com/rh-hideout/pokeemerald-expansion/pull/3549 +* Fixed assumption that `gLastUsedAbility` is `u8` by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3569 +* Fixes Protosynthesis and Quark Drive ability pop up appearing more than once by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3595 +* Fixed Trace not triggering when switching in by secondary effects like U-Turn, Eject Pack or Explosion by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3623 +* Fixed Defiant not being triggered by Cotton Down interaction by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3657 +* Fixed self-targeted moves triggering Stamina, like Substitute by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3669 +* Fixed Quick Draw not working properly by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3724 +* Fixed Neutraling Gas switch-out combined with Electric Surge causing a visual glitch by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3746 +* Fixed Innards Out damaging Pokémon with Magic Guard by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3758 +* Fixed Innards Out damaging Pokémon despite being suppressed by Gastro Acid by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3758 + +## 🧶 Items 🧶 +### Added +* Repeated Medicine usage by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3005 + * You can use multiple medicine items in a row without going back to the bag menu. Supports Rare and Exp. Candies. +* Added `B_LIGHT_BALL_ATTACK_BOOST` config to disable Light Ball's Pshycal Attack boost when set to `GEN_3` or less by @Petuuuhhh in https://github.com/rh-hideout/pokeemerald-expansion/pull/3387 +* Added Teal Mask items by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3349 + * Sprites (except for Fairy Feather) by @hedara90 in https://github.com/rh-hideout/pokeemerald-expansion/pull/3527 + * Fairy Feather by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3520 + * Sprite by [Anarlaurendil on Deviantart](https://www.deviantart.com/anarlaurendil/art/Fairy-Feather-pixel-art-icon-Pokemon-986417461). + * Despite being introduced in Gen 9, it's still affected by the `I_TYPE_BOOST_POWER` config to be consistent with other type items (10% boost when set to Gen 3). + * Evolution items + * Syrupy Apple + * Unremarkable Teacup + * Masterpiece Teacup + * Form change items + * Cornerstone Mask + * Wellspring Mask + * Hearthflame Mask + * EV modifier items + * Health Mochi + * Muscle Mochi + * Resist Mochi + * Genius Mochi + * Clever Mochi + * Swift Mochi + * Fresh Start Mochi + * Glimmering Charm + * Since there's no raids, it currently does nothing. +* Implemented Rotom Catalog and Zygarde Cube by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3284 + * Zygarde Cube follows Gen 8 functionality, where it allows to change Form and Ability but not teach moves. + * Rotom Catalog follows non-BDSP functionality, where all forms don't need to be unlocked. + * Cleanup by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3700 +* Implemented support for Fusion items by @TeamAquasHideout and @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3274 + * Items: + * DNA Splicers + * N-Solarizer + * N-Lunarizer + * Reins of Unity + * Fused mon are stored at the end of in `PokemonStorage`. + * Fixes by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3602 + * Fixes and cleanup + * By @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3644 + * By @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3692 +* Ported pokefirered's Vs. Seeker by @Jaizu @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/3256 + * Requires `I_VS_SEEKER_CHARGING` flag to be assigned. + * Cleanup by @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/3718 +* Added define synonyms (eg. `ITEM_STICK` vs the current `ITEM_LEEK`) by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3580 +### Changed +* Removed unused holdEffectParam for items that double the amount of money gained in battle by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3528 +* Using the name `Parcel` instead of `Oak's Parcel` by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3580 +* Repel/Lure menu improvements @Jaizu and @pkmnsnfrn in https://github.com/rh-hideout/pokeemerald-expansion/pull/3594 + * If `VAR_LAST_REPEL_LURE_USED` is enabled and a spray runs out: + * It will show the name of the spray that ran out. + * If it was the last item of its type and strength, it will ask the player if they want to use a different one of the same type. + * B can now be pressed to cancel the menu. +### Fixed +* Fixed healing berries activating before Knock Off by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3509 +* Fixed crash damage triggering Eject Button by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3669 and https://github.com/rh-hideout/pokeemerald-expansion/pull/3738 +* Fixed Quick Claw not reading `holdEffectParam` by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3737 +* Fixed Life Orb causing recoil when swapped via Magician when it shouldn't by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3753 + +## 🤖 Battle AI 🤖 +* Added AI Tests + * By @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3361 + * AI prefers Bubble over Water Gun if it's slower (both are power 40). + * AI prefers Water Gun over Bubble if it knows that foe has Contrary. + * AI prefers moves with better accuracy, but only if they both require the same number of hits to KO. + * AI prefers moves which deal more damage instead of moves which are super-effective but deal less damage. + * AI prefers Earthquake over Drill Run if both require the same number of hits to KO. + * AI chooses the safest option to faint the target, taking into account accuracy and move effect. + * AI won't use ground type attacks against flying type Pokémon unless Gravity is in effect. + * AI will not switch in a Pokémon which is slower and gets 1HKOed after fainting. + * AI switches if Perish Song is about to kill. + * AI won't use a Weather changing move if partner already chose such move. + * AI will not use Helping Hand if partner does not have any damage moves. + * AI will not use a status move if partner already chose Helping Hand. + * AI without any flags chooses moves at random. + * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3382 + * AI prefers a weaker moves over one with a downside effect if both require the same number of hits to KO. + * AI prefers moves with the best possible score, chosen randomly if tied. + * AI can choose a status move that boosts the attack by two. + * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3515 + * AI won't use Solar Beam if there is no Sun up or the user is not holding Power Herb. + * By @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3583 + * AI chooses moves with secondary effect that have a 100% chance to trigger + * Cleanup by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3748 +* Smarter SwitchAI Mon Choices + `HasBadOdds` Switch Check by @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/3253 + * Use `AI_FLAG_SMART_MON_CHOICES` to enable smarter decisions when choosing which mon gets sent out + * `HasBadOdds` expands `AI_FLAG_SMART_SWITCHING` to switch out in cases where a mon has a bad matchup and lots of HP remaining +* Extend `AI_FLAG_SMART_SWITCHING` for Encore / hazards / lowered attacking stats + Tests by @Pawkkie in https://github.com/rh-hideout/pokeemerald-expansion/pull/3557 +### Changed +* By @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3199 +* Using move flags instead of lists for AI calculations by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3389 +* Remove redundant AI score increases by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3504 +* Remove `GetMoveDamageResult` function by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3536 +### Fixed +* Fixed AI randomly choosing moves if they're both super effective by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3361 + +## 🧹 Other Cleanup 🧹 +* Remove all trailing whitespace (upcoming) by @kittenchilly in https://github.com/rh-hideout/pokeemerald-expansion/pull/3473 +* Debug menu cleanup and documentation by @AsparagusEduardo and @sphericalice in https://github.com/rh-hideout/pokeemerald-expansion/pull/3390 +* Removed `powerfulMoveEffects` array by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3515 +* Added `-Woverride-init` Makefile flag that agbcc has by default by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3535 +* Fixed static variable names by @Bassoonian in https://github.com/rh-hideout/pokeemerald-expansion/pull/3637 +* Fixed config descriptions + * By @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/3717 +* Fixed mistmatching `gBattleTextBuff3` definitions by @GraionDilach in https://github.com/rh-hideout/pokeemerald-expansion/pull/3719 + +## 🧪 Test Runner 🧪 +### Added +* Added support for wild battle tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3342 +* Added support for AI battle tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3361 +* Experience tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3342 + * Catching Pokémon gives experience. + * Higher leveled Pokémon give more experience. + * Lucky Egg boosts gained exp points by 50%. + * Exp is scaled to player and opponent's levels. + * Large exp gains are supported + * Held Exp. Share gives Experience to mons which did not participate in battle +* Added additional damage formula test by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3437 +* Added Octolock tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3437 +* Added Defiant/Sticky Web interaction test by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3516 +* Added Embargo tests by @LOuroboros in https://github.com/rh-hideout/pokeemerald-expansion/pull/3555 +* Added missing Hyper Cutter tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3437 +* Added missing Anger Shell tests by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3508 +* Added missing White Herb tests by @AlexOn1ine in https://github.com/rh-hideout/pokeemerald-expansion/pull/3611 +* Added `SpeciesInfo` integrity tests by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3688 +### Changed +* Moved battle tests off the heap by @mrgriffin in https://github.com/rh-hideout/pokeemerald-expansion/pull/3413 +* Automatic `ASSUMPTION_FAIL` in tests when used species are disabled. + * Because of this, instances of `ASSUME(P_GEN_x_POKEMON == TRUE)` have been removed. +* Updated Gen 9-mon-exclusive ability tests to use Gen 9 mon by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3733 +### Fixed +* Fixed VSCode error shenanigans when viewing tests by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3383 +* Fixed broken move animations in test replays by @DizzyEggg in https://github.com/rh-hideout/pokeemerald-expansion/pull/3398 +* Performance improvement for test name matching by @jiangzhengwenjz in https://github.com/rh-hideout/pokeemerald-expansion/pull/3559 +* Fixed Ice Heal test name typo by @AtariDreams in https://github.com/rh-hideout/pokeemerald-expansion/pull/3676 + +## 📦 Pret merges 📦 +* 2023-10-02 by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3372 + * Slight RTC documentation + Evolution times constants (https://github.com/pret/pokeemerald/pull/1925) + * Add friendship evo threshold constant (https://github.com/pret/pokeemerald/pull/1928) + * Solved a bunch of -Wall errors on modern (https://github.com/pret/pokeemerald/pull/1926) +* 2023-10-27 by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3471 + * Add some task/sprite data defines (https://github.com/pret/pokeemerald/pull/1915) + * Fix mini_printf encoded string -Werror=pointer-sign warning (https://github.com/pret/pokeemerald/pull/1938) + * Remove all trailing whitespace (https://github.com/pret/pokeemerald/pull/1937) + * Use BUGFIX in assembly files (https://github.com/pret/pokeemerald/pull/1935) +* 2023-12-10 by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3675 + * Delete the redundant files generated after running build (https://github.com/pret/pokeemerald/pull/1944) + * Rename `EGG_GROUP_UNDISCOVERED` egg group to `EGG_GROUP_NO_EGGS_DISCOVERED` (https://github.com/pret/pokeemerald/pull/1939) + * Renamed `SendMonToPC` to `CopyMonToPC` (https://github.com/pret/pokeemerald/pull/1940) + * Document `datahpupdate` (https://github.com/pret/pokeemerald/pull/1936) + * Renamed `HITMARKER_IGNORE_SAFEGUARD` to `HITMARKER_STATUS_ABILITY_EFFECT` (https://github.com/pret/pokeemerald/pull/1959) + * Moved files (https://github.com/pret/pokeemerald/pull/1953) + * Spinda Spots + * JP Fonts + * `redyellowgreen_frame.bin` + * [Build System Rewrite] Linkerscript now tracks RAM/ROM usage (https://github.com/pret/pokeemerald/pull/1952) + * Fixed ld_script.ld artifact from a previous pret version by @AsparagusEduardo in https://github.com/rh-hideout/pokeemerald-expansion/pull/3731 + * Updated the size of the `struct InGameTrade`'s `otName` variable (https://github.com/pret/pokeemerald/pull/1962) + + + +## New Contributors +* @Petuuuhhh made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3387 +* @katykat5099 made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3426 +* @leo60228 made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3249 +* @hedara90 made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3527 +* @jiangzhengwenjz made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3559 +* @ravepossum made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3561 +* @RapidNutcracker made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3379 +* @GraionDilach made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3624 +* @AtariDreams made their first contribution in https://github.com/rh-hideout/pokeemerald-expansion/pull/3676 + +**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.6.2...expansion/1.7.0 + + diff --git a/gflib/bg.c b/gflib/bg.c index f363233a85..4e426b762b 100644 --- a/gflib/bg.c +++ b/gflib/bg.c @@ -377,6 +377,9 @@ u16 LoadBgTiles(u8 bg, const void *src, u16 size, u16 destOffset) u16 tileOffset; u8 cursor; + if (bg > 3) + return -1; + if (GetBgControlAttribute(bg, BG_CTRL_ATTR_PALETTEMODE) == 0) { tileOffset = (sGpuBgConfigs2[bg].baseTile + destOffset) * 0x20; diff --git a/gflib/malloc.c b/gflib/malloc.c index b3191e30b6..0fd8b29571 100644 --- a/gflib/malloc.c +++ b/gflib/malloc.c @@ -7,6 +7,8 @@ static void *sHeapStart; static u32 sHeapSize; +EWRAM_DATA u8 gHeap[HEAP_SIZE] = {0}; + void PutMemBlockHeader(void *block, struct MemBlock *prev, struct MemBlock *next, u32 size) { struct MemBlock *header = (struct MemBlock *)block; diff --git a/gflib/malloc.h b/gflib/malloc.h index d17291b3cd..60421dac2f 100644 --- a/gflib/malloc.h +++ b/gflib/malloc.h @@ -1,7 +1,6 @@ #ifndef GUARD_ALLOC_H #define GUARD_ALLOC_H -#define HEAP_SIZE 0x1C000 #define FREE_AND_SET_NULL(ptr) \ { \ @@ -42,7 +41,8 @@ struct MemBlock u8 data[0]; }; -extern u8 gHeap[]; +#define HEAP_SIZE 0x1C000 +extern u8 gHeap[HEAP_SIZE]; #if TESTING || !defined(NDEBUG) diff --git a/gflib/sprite.c b/gflib/sprite.c index d75f6f7271..851cc6d3c3 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -281,7 +281,7 @@ EWRAM_DATA static bool8 sShouldProcessSpriteCopyRequests = 0; EWRAM_DATA static u8 sSpriteCopyRequestCount = 0; EWRAM_DATA static struct SpriteCopyRequest sSpriteCopyRequests[MAX_SPRITES] = {0}; EWRAM_DATA u8 gOamLimit = 0; -static EWRAM_DATA u8 gOamDummyIndex = 0; +static EWRAM_DATA u8 sOamDummyIndex = 0; EWRAM_DATA u16 gReservedSpriteTileCount = 0; EWRAM_DATA static u8 sSpriteTileAllocBitmap[128] = {0}; EWRAM_DATA s16 gSpriteCoordOffsetX = 0; @@ -292,7 +292,7 @@ EWRAM_DATA bool8 gAffineAnimsDisabled = FALSE; void ResetSpriteData(void) { ResetOamRange(0, 128); - gOamDummyIndex = 0; + sOamDummyIndex = 0; ResetAllSprites(); ClearSpriteCopyRequests(); ResetAffineAnimData(); @@ -324,7 +324,7 @@ void AnimateSprites(void) void BuildOamBuffer(void) { bool32 oamLoadDisabled; - u32 i, stride; + u32 i; u8 oamIndex; // All attributes which affect sorting packed into a single u32: @@ -405,9 +405,9 @@ void BuildOamBuffer(void) break; } - for (i = oamIndex; i < gOamDummyIndex; i++) + for (i = oamIndex; i < sOamDummyIndex; i++) gMain.oamBuffer[i] = gDummyOamData; - gOamDummyIndex = oamIndex; + sOamDummyIndex = oamIndex; for (i = 0; matrices != 0; i++, matrices >>= 1) { diff --git a/gflib/string_util.c b/gflib/string_util.c index 0826c9a047..f4a20d118a 100644 --- a/gflib/string_util.c +++ b/gflib/string_util.c @@ -299,7 +299,7 @@ u8 *ConvertIntToHexStringN(u8 *dest, s32 value, enum StringConvertMode mode, u8 if (state == WRITING_DIGITS) { - char *out = dest++; + u8 *out = dest++; if (digit <= 0xF) c = sDigits[digit]; @@ -310,7 +310,7 @@ u8 *ConvertIntToHexStringN(u8 *dest, s32 value, enum StringConvertMode mode, u8 } else if (digit != 0 || powerOfSixteen == 1) { - char *out; + u8 *out; state = WRITING_DIGITS; out = dest++; diff --git a/gflib/text.c b/gflib/text.c index 1bded26b5a..bc917c7ced 100644 --- a/gflib/text.c +++ b/gflib/text.c @@ -554,8 +554,7 @@ void DecompressGlyphTile(const void *src_, void *dest_) *(dest++) = ((sFontHalfRowLookupTable[sFontHalfRowOffsets[temp & 0xFF]]) << 16) | (sFontHalfRowLookupTable[sFontHalfRowOffsets[temp >> 8]]); } -// Unused -static u8 GetLastTextColor(u8 colorType) +static u8 UNUSED GetLastTextColor(u8 colorType) { switch (colorType) { @@ -1224,8 +1223,7 @@ static u16 RenderText(struct TextPrinter *textPrinter) return RENDER_FINISH; } -// Unused -static u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing) +static u32 UNUSED GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing) { int i; u8 width; diff --git a/gflib/window.c b/gflib/window.c index 76e863f10e..6f7af457d3 100644 --- a/gflib/window.c +++ b/gflib/window.c @@ -411,7 +411,7 @@ void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u BlitBitmapRect4Bit(&sourceRect, &destRect, srcX, srcY, destX, destY, rectWidth, rectHeight, 0); } -static void BlitBitmapRectToWindowWithColorKey(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 colorKey) +static void UNUSED BlitBitmapRectToWindowWithColorKey(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 colorKey) { struct Bitmap sourceRect; struct Bitmap destRect; diff --git a/graphics/battle_anims/backgrounds/rainbow.bin b/graphics/battle_anims/backgrounds/rainbow.bin new file mode 100644 index 0000000000..770389abf4 Binary files /dev/null and b/graphics/battle_anims/backgrounds/rainbow.bin differ diff --git a/graphics/battle_anims/backgrounds/rainbow.pal b/graphics/battle_anims/backgrounds/rainbow.pal new file mode 100644 index 0000000000..9b62b7b25b --- /dev/null +++ b/graphics/battle_anims/backgrounds/rainbow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +109 92 75 +255 255 255 +255 107 122 +255 200 102 +255 255 107 +143 255 160 +107 255 255 +107 129 255 +220 114 255 +199 255 250 +232 240 248 +224 232 240 +208 224 240 +191 202 224 +183 189 202 +157 166 181 diff --git a/graphics/battle_anims/backgrounds/rainbow.png b/graphics/battle_anims/backgrounds/rainbow.png new file mode 100644 index 0000000000..bd41645b35 Binary files /dev/null and b/graphics/battle_anims/backgrounds/rainbow.png differ diff --git a/graphics/battle_anims/sprites/snowflakes.png b/graphics/battle_anims/sprites/snowflakes.png new file mode 100644 index 0000000000..4f4334b3b9 Binary files /dev/null and b/graphics/battle_anims/sprites/snowflakes.png differ diff --git a/graphics/battle_anims/sprites/syrup_bomb_blob.png b/graphics/battle_anims/sprites/syrup_bomb_blob.png new file mode 100644 index 0000000000..b04b361756 Binary files /dev/null and b/graphics/battle_anims/sprites/syrup_bomb_blob.png differ diff --git a/graphics/battle_anims/sprites/syrup_bomb_shell.png b/graphics/battle_anims/sprites/syrup_bomb_shell.png new file mode 100644 index 0000000000..de592c54e6 Binary files /dev/null and b/graphics/battle_anims/sprites/syrup_bomb_shell.png differ diff --git a/graphics/battle_anims/sprites/syrup_bomb_splat.png b/graphics/battle_anims/sprites/syrup_bomb_splat.png new file mode 100644 index 0000000000..ac873086a0 Binary files /dev/null and b/graphics/battle_anims/sprites/syrup_bomb_splat.png differ diff --git a/graphics/battle_anims/sprites/syrup_red.pal b/graphics/battle_anims/sprites/syrup_red.pal new file mode 100644 index 0000000000..2224ce0c84 --- /dev/null +++ b/graphics/battle_anims/sprites/syrup_red.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +30 255 0 +242 242 242 +255 194 173 +255 129 110 +224 51 38 +161 24 26 +110 30 36 +13 2 4 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 diff --git a/graphics/battle_anims/sprites/syrup_yellow.pal b/graphics/battle_anims/sprites/syrup_yellow.pal new file mode 100644 index 0000000000..ff5ac37331 --- /dev/null +++ b/graphics/battle_anims/sprites/syrup_yellow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +30 255 0 +242 242 242 +255 255 168 +255 235 82 +255 192 0 +185 104 4 +107 59 19 +13 2 4 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 +200 224 240 diff --git a/graphics/battle_interface/dynamax_indicator.png b/graphics/battle_interface/dynamax_indicator.png new file mode 100644 index 0000000000..ebfbe86da6 Binary files /dev/null and b/graphics/battle_interface/dynamax_indicator.png differ diff --git a/graphics/battle_interface/dynamax_trigger.png b/graphics/battle_interface/dynamax_trigger.png new file mode 100644 index 0000000000..18f3a84cff Binary files /dev/null and b/graphics/battle_interface/dynamax_trigger.png differ diff --git a/graphics/battle_interface/misc_indicator.pal b/graphics/battle_interface/misc_indicator.pal new file mode 100644 index 0000000000..1128418200 --- /dev/null +++ b/graphics/battle_interface/misc_indicator.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 0 0 +224 74 106 +236 234 108 +154 45 48 +244 162 132 +32 127 216 +16 75 156 +184 224 240 +136 184 224 +213 207 207 +246 246 246 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/field_effects/pics/emote_x.png b/graphics/field_effects/pics/emote_x.png new file mode 100644 index 0000000000..6d0206e1d4 Binary files /dev/null and b/graphics/field_effects/pics/emote_x.png differ diff --git a/graphics/field_effects/pics/emotion_double_exclamation.png b/graphics/field_effects/pics/emotion_double_exclamation.png new file mode 100644 index 0000000000..1494acef86 Binary files /dev/null and b/graphics/field_effects/pics/emotion_double_exclamation.png differ diff --git a/graphics/fonts/japanese_frlg_female_font.png b/graphics/fonts/japanese_frlg_female.png similarity index 100% rename from graphics/fonts/japanese_frlg_female_font.png rename to graphics/fonts/japanese_frlg_female.png diff --git a/graphics/fonts/japanese_frlg_male_font.png b/graphics/fonts/japanese_frlg_male.png similarity index 100% rename from graphics/fonts/japanese_frlg_male_font.png rename to graphics/fonts/japanese_frlg_male.png diff --git a/graphics/fonts/latin_small.png b/graphics/fonts/latin_small.png index 55ed435060..371cd5a968 100644 Binary files a/graphics/fonts/latin_small.png and b/graphics/fonts/latin_small.png differ diff --git a/graphics/items/icon_palettes/clever_mochi.pal b/graphics/items/icon_palettes/clever_mochi.pal new file mode 100644 index 0000000000..dfb6467f26 --- /dev/null +++ b/graphics/items/icon_palettes/clever_mochi.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +0 0 0 +0 0 0 +32 32 32 +40 40 40 +112 104 24 +72 64 32 +192 184 8 +216 208 8 +240 240 96 +248 248 0 +248 248 160 +248 248 216 diff --git a/graphics/items/icon_palettes/cornerstone_mask.pal b/graphics/items/icon_palettes/cornerstone_mask.pal new file mode 100644 index 0000000000..06affcc19b --- /dev/null +++ b/graphics/items/icon_palettes/cornerstone_mask.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +0 49 0 +32 24 24 +48 48 48 +72 72 80 +104 88 56 +16 112 160 +32 112 128 +112 104 112 +32 152 192 +136 144 144 +168 168 168 +48 208 240 +208 184 120 +240 240 240 diff --git a/graphics/items/icon_palettes/fairy_feather.pal b/graphics/items/icon_palettes/fairy_feather.pal new file mode 100644 index 0000000000..a20a702b74 --- /dev/null +++ b/graphics/items/icon_palettes/fairy_feather.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +180 180 180 +11 15 16 +33 19 27 +59 38 38 +102 90 92 +200 124 124 +182 116 141 +255 124 189 +227 140 140 +253 155 155 +222 173 189 +255 175 175 +195 191 192 +252 161 206 +225 221 223 +245 245 245 diff --git a/graphics/items/icon_palettes/fresh_start_mochi.pal b/graphics/items/icon_palettes/fresh_start_mochi.pal new file mode 100644 index 0000000000..55eeac0ce3 --- /dev/null +++ b/graphics/items/icon_palettes/fresh_start_mochi.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +0 0 0 +0 0 0 +32 32 32 +40 40 40 +128 120 128 +63 63 63 +176 168 168 +216 208 216 +192 192 192 +224 232 224 +240 232 240 +248 248 248 diff --git a/graphics/items/icon_palettes/genius_mochi.pal b/graphics/items/icon_palettes/genius_mochi.pal new file mode 100644 index 0000000000..7a91b8fbf9 --- /dev/null +++ b/graphics/items/icon_palettes/genius_mochi.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +0 0 0 +0 0 0 +32 32 32 +40 40 40 +72 40 88 +72 40 88 +96 40 128 +96 40 120 +88 40 112 +112 48 160 +128 72 176 +128 80 176 diff --git a/graphics/items/icon_palettes/glimmering_charm.pal b/graphics/items/icon_palettes/glimmering_charm.pal new file mode 100644 index 0000000000..813886d85a --- /dev/null +++ b/graphics/items/icon_palettes/glimmering_charm.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +114 109 97 +0 0 0 +115 62 231 +57 95 90 +52 103 15 +48 101 216 +225 59 159 +136 154 143 +60 195 171 +76 204 74 +202 150 255 +142 191 235 +242 193 215 +238 219 161 +255 255 255 diff --git a/graphics/items/icon_palettes/health_mochi.pal b/graphics/items/icon_palettes/health_mochi.pal new file mode 100644 index 0000000000..930e98ebfb --- /dev/null +++ b/graphics/items/icon_palettes/health_mochi.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +0 0 0 +0 0 0 +32 32 32 +40 40 40 +32 64 86 +32 96 128 +16 128 176 +0 144 208 +0 176 240 +0 192 248 +72 200 248 +88 208 240 diff --git a/graphics/items/icon_palettes/hearthflame_mask.pal b/graphics/items/icon_palettes/hearthflame_mask.pal new file mode 100644 index 0000000000..1df0621797 --- /dev/null +++ b/graphics/items/icon_palettes/hearthflame_mask.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +110 101 110 +0 0 0 +40 40 40 +72 40 40 +136 48 48 +184 48 48 +72 88 88 +104 88 48 +232 64 48 +224 128 128 +192 144 64 +168 160 152 +32 200 232 +224 160 64 +248 200 72 +248 248 248 diff --git a/graphics/items/icon_palettes/masterpiece_teacup.pal b/graphics/items/icon_palettes/masterpiece_teacup.pal new file mode 100644 index 0000000000..9c37a09d7b --- /dev/null +++ b/graphics/items/icon_palettes/masterpiece_teacup.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +0 0 0 +56 48 48 +64 48 56 +80 48 32 +56 56 56 +72 64 72 +80 64 48 +96 64 40 +104 98 96 +174 163 155 +208 200 192 +224 224 208 diff --git a/graphics/items/icon_palettes/muscle_mochi.pal b/graphics/items/icon_palettes/muscle_mochi.pal new file mode 100644 index 0000000000..6198ef6e9d --- /dev/null +++ b/graphics/items/icon_palettes/muscle_mochi.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +0 0 0 +0 0 0 +32 32 32 +40 40 40 +80 32 32 +128 32 32 +192 0 8 +248 40 48 +248 32 32 +248 0 0 +248 64 64 +248 80 80 diff --git a/graphics/items/icon_palettes/oaks_parcel.pal b/graphics/items/icon_palettes/parcel.pal similarity index 100% rename from graphics/items/icon_palettes/oaks_parcel.pal rename to graphics/items/icon_palettes/parcel.pal diff --git a/graphics/items/icon_palettes/resist_mochi.pal b/graphics/items/icon_palettes/resist_mochi.pal new file mode 100644 index 0000000000..87da8140dd --- /dev/null +++ b/graphics/items/icon_palettes/resist_mochi.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +0 0 0 +0 0 0 +32 32 32 +40 40 40 +48 32 32 +40 40 40 +56 48 56 +48 48 48 +48 48 48 +64 64 64 +72 72 72 +88 88 88 diff --git a/graphics/items/icon_palettes/swift_mochi.pal b/graphics/items/icon_palettes/swift_mochi.pal new file mode 100644 index 0000000000..90fb43493b --- /dev/null +++ b/graphics/items/icon_palettes/swift_mochi.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +0 0 0 +0 0 0 +32 32 32 +40 40 40 +24 88 56 +24 48 40 +8 128 64 +8 152 72 +32 120 96 +0 176 80 +48 192 112 +80 200 144 diff --git a/graphics/items/icon_palettes/syrupy_apple.pal b/graphics/items/icon_palettes/syrupy_apple.pal new file mode 100644 index 0000000000..2243d3df3e --- /dev/null +++ b/graphics/items/icon_palettes/syrupy_apple.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +0 97 0 +36 39 38 +78 40 38 +192 24 40 +100 72 55 +240 48 40 +192 114 31 +248 112 48 +248 112 104 +248 135 16 +248 135 20 +248 144 120 +242 159 28 +216 192 184 diff --git a/graphics/items/icon_palettes/unremarkable_teacup.pal b/graphics/items/icon_palettes/unremarkable_teacup.pal new file mode 100644 index 0000000000..c70426f432 --- /dev/null +++ b/graphics/items/icon_palettes/unremarkable_teacup.pal @@ -0,0 +1,14 @@ +JASC-PAL +0100 +11 +0 0 0 +56 48 48 +64 48 56 +56 56 56 +72 64 72 +80 64 48 +96 64 40 +104 98 96 +174 163 155 +208 200 192 +224 224 208 diff --git a/graphics/items/icon_palettes/wellspring_mask.pal b/graphics/items/icon_palettes/wellspring_mask.pal new file mode 100644 index 0000000000..8e64a3ffcf --- /dev/null +++ b/graphics/items/icon_palettes/wellspring_mask.pal @@ -0,0 +1,16 @@ +JASC-PAL +0100 +13 +0 0 0 +16 16 16 +40 40 40 +32 48 56 +24 80 128 +80 88 88 +32 104 112 +0 128 232 +56 144 176 +152 160 160 +56 200 232 +192 208 216 +248 248 248 diff --git a/graphics/items/icons/cornerstone_mask.png b/graphics/items/icons/cornerstone_mask.png new file mode 100644 index 0000000000..dcca6725d4 Binary files /dev/null and b/graphics/items/icons/cornerstone_mask.png differ diff --git a/graphics/items/icons/fairy_feather.png b/graphics/items/icons/fairy_feather.png new file mode 100644 index 0000000000..26446886a8 Binary files /dev/null and b/graphics/items/icons/fairy_feather.png differ diff --git a/graphics/items/icons/glimmering_charm.png b/graphics/items/icons/glimmering_charm.png new file mode 100644 index 0000000000..bbed0dcb04 Binary files /dev/null and b/graphics/items/icons/glimmering_charm.png differ diff --git a/graphics/items/icons/hearthflame_mask.png b/graphics/items/icons/hearthflame_mask.png new file mode 100644 index 0000000000..accb5a8077 Binary files /dev/null and b/graphics/items/icons/hearthflame_mask.png differ diff --git a/graphics/items/icons/masterpiece_teacup.png b/graphics/items/icons/masterpiece_teacup.png new file mode 100644 index 0000000000..1633168251 Binary files /dev/null and b/graphics/items/icons/masterpiece_teacup.png differ diff --git a/graphics/items/icons/mochi.png b/graphics/items/icons/mochi.png new file mode 100644 index 0000000000..9d033b1bd8 Binary files /dev/null and b/graphics/items/icons/mochi.png differ diff --git a/graphics/items/icons/oaks_parcel.png b/graphics/items/icons/parcel.png similarity index 100% rename from graphics/items/icons/oaks_parcel.png rename to graphics/items/icons/parcel.png diff --git a/graphics/items/icons/syrupy_apple.png b/graphics/items/icons/syrupy_apple.png new file mode 100644 index 0000000000..e5c4efdfa6 Binary files /dev/null and b/graphics/items/icons/syrupy_apple.png differ diff --git a/graphics/items/icons/unremarkable_teacup.png b/graphics/items/icons/unremarkable_teacup.png new file mode 100644 index 0000000000..98ac030893 Binary files /dev/null and b/graphics/items/icons/unremarkable_teacup.png differ diff --git a/graphics/items/icons/wellspring_mask.png b/graphics/items/icons/wellspring_mask.png new file mode 100644 index 0000000000..f52804d1b8 Binary files /dev/null and b/graphics/items/icons/wellspring_mask.png differ diff --git a/graphics/pokedex/hgss/SelectBar.bin b/graphics/pokedex/hgss/SelectBar.bin new file mode 100644 index 0000000000..390bcbd3f0 Binary files /dev/null and b/graphics/pokedex/hgss/SelectBar.bin differ diff --git a/graphics/pokedex/hgss/SelectBar_clear.bin b/graphics/pokedex/hgss/SelectBar_clear.bin new file mode 100644 index 0000000000..85cab7327e Binary files /dev/null and b/graphics/pokedex/hgss/SelectBar_clear.bin differ diff --git a/graphics/pokedex/hgss/palette_default.pal b/graphics/pokedex/hgss/palette_default.pal new file mode 100644 index 0000000000..5889ede7ac --- /dev/null +++ b/graphics/pokedex/hgss/palette_default.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +193 33 177 +249 249 249 +225 225 225 +201 201 201 +169 169 169 +129 129 129 +249 153 161 +233 49 49 +193 33 41 +145 17 33 +249 153 161 +193 33 41 +141 251 184 +52 66 162 +194 181 66 +0 0 0 +123 131 0 +255 255 255 +197 32 32 +189 189 189 +164 164 164 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +49 213 74 +24 131 32 +189 156 90 +0 0 0 +123 131 0 +255 255 255 +197 32 32 +189 189 189 +164 164 164 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +180 205 246 +49 139 255 +189 156 90 +0 0 0 diff --git a/graphics/pokedex/hgss/palette_default_dark.pal b/graphics/pokedex/hgss/palette_default_dark.pal new file mode 100644 index 0000000000..1523b7d25f --- /dev/null +++ b/graphics/pokedex/hgss/palette_default_dark.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +193 33 177 +249 249 249 +225 225 225 +201 201 201 +169 169 169 +129 129 129 +106 106 106 +37 37 37 +106 106 106 +0 0 0 +106 106 106 +193 33 41 +141 251 184 +52 66 162 +194 181 66 +0 0 0 +123 131 0 +255 255 255 +197 32 32 +189 189 189 +164 164 164 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +49 213 74 +24 131 32 +189 156 90 +0 0 0 +123 131 0 +255 255 255 +197 32 32 +189 189 189 +164 164 164 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +180 205 246 +49 139 255 +189 156 90 +0 0 0 diff --git a/graphics/pokedex/hgss/palette_national.pal b/graphics/pokedex/hgss/palette_national.pal new file mode 100644 index 0000000000..5889ede7ac --- /dev/null +++ b/graphics/pokedex/hgss/palette_national.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +193 33 177 +249 249 249 +225 225 225 +201 201 201 +169 169 169 +129 129 129 +249 153 161 +233 49 49 +193 33 41 +145 17 33 +249 153 161 +193 33 41 +141 251 184 +52 66 162 +194 181 66 +0 0 0 +123 131 0 +255 255 255 +197 32 32 +189 189 189 +164 164 164 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +49 213 74 +24 131 32 +189 156 90 +0 0 0 +123 131 0 +255 255 255 +197 32 32 +189 189 189 +164 164 164 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +180 205 246 +49 139 255 +189 156 90 +0 0 0 diff --git a/graphics/pokedex/hgss/palette_national_dark.pal b/graphics/pokedex/hgss/palette_national_dark.pal new file mode 100644 index 0000000000..1523b7d25f --- /dev/null +++ b/graphics/pokedex/hgss/palette_national_dark.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +193 33 177 +249 249 249 +225 225 225 +201 201 201 +169 169 169 +129 129 129 +106 106 106 +37 37 37 +106 106 106 +0 0 0 +106 106 106 +193 33 41 +141 251 184 +52 66 162 +194 181 66 +0 0 0 +123 131 0 +255 255 255 +197 32 32 +189 189 189 +164 164 164 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +49 213 74 +24 131 32 +189 156 90 +0 0 0 +123 131 0 +255 255 255 +197 32 32 +189 189 189 +164 164 164 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +180 205 246 +49 139 255 +189 156 90 +0 0 0 diff --git a/graphics/pokedex/hgss/palette_search_menu.pal b/graphics/pokedex/hgss/palette_search_menu.pal new file mode 100644 index 0000000000..b6142eb3f7 --- /dev/null +++ b/graphics/pokedex/hgss/palette_search_menu.pal @@ -0,0 +1,67 @@ +JASC-PAL +0100 +64 +123 131 0 +0 0 0 +172 172 172 +255 255 255 +255 255 255 +98 98 115 +57 57 57 +123 115 74 +156 230 0 +57 115 0 +255 172 0 +131 32 32 +82 189 90 +24 131 32 +255 32 32 +0 0 0 +123 131 0 +0 0 0 +172 172 172 +255 255 255 +255 255 255 +98 98 115 +57 57 57 +123 115 74 +41 115 0 +32 49 32 +180 106 0 +16 0 0 +82 189 90 +24 131 32 +0 0 0 +0 0 0 +123 131 0 +0 0 0 +172 172 172 +172 172 172 +172 172 172 +98 98 115 +57 57 57 +123 115 74 +32 49 32 +32 32 32 +74 32 32 +32 32 32 +82 189 90 +24 131 32 +255 32 32 +0 0 0 +123 131 0 +0 0 0 +172 172 172 +172 172 172 +172 172 172 +98 98 115 +57 57 57 +123 115 74 +32 49 32 +32 32 32 +74 32 32 +32 32 32 +82 189 90 +24 131 32 +0 0 0 +0 0 0 diff --git a/graphics/pokedex/hgss/palette_search_menu_dark.pal b/graphics/pokedex/hgss/palette_search_menu_dark.pal new file mode 100644 index 0000000000..b6142eb3f7 --- /dev/null +++ b/graphics/pokedex/hgss/palette_search_menu_dark.pal @@ -0,0 +1,67 @@ +JASC-PAL +0100 +64 +123 131 0 +0 0 0 +172 172 172 +255 255 255 +255 255 255 +98 98 115 +57 57 57 +123 115 74 +156 230 0 +57 115 0 +255 172 0 +131 32 32 +82 189 90 +24 131 32 +255 32 32 +0 0 0 +123 131 0 +0 0 0 +172 172 172 +255 255 255 +255 255 255 +98 98 115 +57 57 57 +123 115 74 +41 115 0 +32 49 32 +180 106 0 +16 0 0 +82 189 90 +24 131 32 +0 0 0 +0 0 0 +123 131 0 +0 0 0 +172 172 172 +172 172 172 +172 172 172 +98 98 115 +57 57 57 +123 115 74 +32 49 32 +32 32 32 +74 32 32 +32 32 32 +82 189 90 +24 131 32 +255 32 32 +0 0 0 +123 131 0 +0 0 0 +172 172 172 +172 172 172 +172 172 172 +98 98 115 +57 57 57 +123 115 74 +32 49 32 +32 32 32 +74 32 32 +32 32 32 +82 189 90 +24 131 32 +0 0 0 +0 0 0 diff --git a/graphics/pokedex/hgss/palette_search_results.pal b/graphics/pokedex/hgss/palette_search_results.pal new file mode 100644 index 0000000000..5889ede7ac --- /dev/null +++ b/graphics/pokedex/hgss/palette_search_results.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +193 33 177 +249 249 249 +225 225 225 +201 201 201 +169 169 169 +129 129 129 +249 153 161 +233 49 49 +193 33 41 +145 17 33 +249 153 161 +193 33 41 +141 251 184 +52 66 162 +194 181 66 +0 0 0 +123 131 0 +255 255 255 +197 32 32 +189 189 189 +164 164 164 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +49 213 74 +24 131 32 +189 156 90 +0 0 0 +123 131 0 +255 255 255 +197 32 32 +189 189 189 +164 164 164 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +180 205 246 +49 139 255 +189 156 90 +0 0 0 diff --git a/graphics/pokedex/hgss/palette_search_results_dark.pal b/graphics/pokedex/hgss/palette_search_results_dark.pal new file mode 100644 index 0000000000..5889ede7ac --- /dev/null +++ b/graphics/pokedex/hgss/palette_search_results_dark.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +193 33 177 +249 249 249 +225 225 225 +201 201 201 +169 169 169 +129 129 129 +249 153 161 +233 49 49 +193 33 41 +145 17 33 +249 153 161 +193 33 41 +141 251 184 +52 66 162 +194 181 66 +0 0 0 +123 131 0 +255 255 255 +197 32 32 +189 189 189 +164 164 164 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +49 213 74 +24 131 32 +189 156 90 +0 0 0 +123 131 0 +255 255 255 +197 32 32 +189 189 189 +164 164 164 +98 98 115 +41 57 65 +41 57 106 +0 0 41 +255 255 255 +238 246 57 +255 0 189 +180 205 246 +49 139 255 +189 156 90 +0 0 0 diff --git a/graphics/pokedex/hgss/stat_bars.png b/graphics/pokedex/hgss/stat_bars.png new file mode 100644 index 0000000000..b7245df4aa Binary files /dev/null and b/graphics/pokedex/hgss/stat_bars.png differ diff --git a/graphics/pokedex/hgss/tilemap_cry_screen.bin b/graphics/pokedex/hgss/tilemap_cry_screen.bin new file mode 100644 index 0000000000..5e5087ae0d Binary files /dev/null and b/graphics/pokedex/hgss/tilemap_cry_screen.bin differ diff --git a/graphics/pokedex/hgss/tilemap_evo_screen.bin b/graphics/pokedex/hgss/tilemap_evo_screen.bin new file mode 100644 index 0000000000..0533b53843 Binary files /dev/null and b/graphics/pokedex/hgss/tilemap_evo_screen.bin differ diff --git a/graphics/pokedex/hgss/tilemap_evo_screen_PE.bin b/graphics/pokedex/hgss/tilemap_evo_screen_PE.bin new file mode 100644 index 0000000000..4240338071 Binary files /dev/null and b/graphics/pokedex/hgss/tilemap_evo_screen_PE.bin differ diff --git a/graphics/pokedex/hgss/tilemap_forms_screen.bin b/graphics/pokedex/hgss/tilemap_forms_screen.bin new file mode 100644 index 0000000000..aeb2db06e6 Binary files /dev/null and b/graphics/pokedex/hgss/tilemap_forms_screen.bin differ diff --git a/graphics/pokedex/hgss/tilemap_info_screen.bin b/graphics/pokedex/hgss/tilemap_info_screen.bin new file mode 100644 index 0000000000..cc30551abc Binary files /dev/null and b/graphics/pokedex/hgss/tilemap_info_screen.bin differ diff --git a/graphics/pokedex/hgss/tilemap_list_screen.bin b/graphics/pokedex/hgss/tilemap_list_screen.bin new file mode 100644 index 0000000000..ab4ce179a4 Binary files /dev/null and b/graphics/pokedex/hgss/tilemap_list_screen.bin differ diff --git a/graphics/pokedex/hgss/tilemap_list_screen_underlay.bin b/graphics/pokedex/hgss/tilemap_list_screen_underlay.bin new file mode 100644 index 0000000000..e0d0557100 Binary files /dev/null and b/graphics/pokedex/hgss/tilemap_list_screen_underlay.bin differ diff --git a/graphics/pokedex/hgss/tilemap_search_screen_hoenn.bin b/graphics/pokedex/hgss/tilemap_search_screen_hoenn.bin new file mode 100644 index 0000000000..ec2f179065 Binary files /dev/null and b/graphics/pokedex/hgss/tilemap_search_screen_hoenn.bin differ diff --git a/graphics/pokedex/hgss/tilemap_search_screen_national.bin b/graphics/pokedex/hgss/tilemap_search_screen_national.bin new file mode 100644 index 0000000000..34a68f509f Binary files /dev/null and b/graphics/pokedex/hgss/tilemap_search_screen_national.bin differ diff --git a/graphics/pokedex/hgss/tilemap_size_screen.bin b/graphics/pokedex/hgss/tilemap_size_screen.bin new file mode 100644 index 0000000000..9260fbf368 Binary files /dev/null and b/graphics/pokedex/hgss/tilemap_size_screen.bin differ diff --git a/graphics/pokedex/hgss/tilemap_start_menu.bin b/graphics/pokedex/hgss/tilemap_start_menu.bin new file mode 100644 index 0000000000..419fe03be0 Binary files /dev/null and b/graphics/pokedex/hgss/tilemap_start_menu.bin differ diff --git a/graphics/pokedex/hgss/tilemap_start_menu_search_results.bin b/graphics/pokedex/hgss/tilemap_start_menu_search_results.bin new file mode 100644 index 0000000000..fa94c3be20 Binary files /dev/null and b/graphics/pokedex/hgss/tilemap_start_menu_search_results.bin differ diff --git a/graphics/pokedex/hgss/tilemap_stats_screen.bin b/graphics/pokedex/hgss/tilemap_stats_screen.bin new file mode 100644 index 0000000000..9b9e04a5e3 Binary files /dev/null and b/graphics/pokedex/hgss/tilemap_stats_screen.bin differ diff --git a/graphics/pokedex/hgss/tileset_interface.png b/graphics/pokedex/hgss/tileset_interface.png new file mode 100644 index 0000000000..528176f36d Binary files /dev/null and b/graphics/pokedex/hgss/tileset_interface.png differ diff --git a/graphics/pokedex/hgss/tileset_interface_DECA.png b/graphics/pokedex/hgss/tileset_interface_DECA.png new file mode 100644 index 0000000000..2332c79fa0 Binary files /dev/null and b/graphics/pokedex/hgss/tileset_interface_DECA.png differ diff --git a/graphics/pokedex/hgss/tileset_menu1.png b/graphics/pokedex/hgss/tileset_menu1.png new file mode 100644 index 0000000000..2d9de88e6d Binary files /dev/null and b/graphics/pokedex/hgss/tileset_menu1.png differ diff --git a/graphics/pokedex/hgss/tileset_menu2.png b/graphics/pokedex/hgss/tileset_menu2.png new file mode 100644 index 0000000000..0c8d85aaab Binary files /dev/null and b/graphics/pokedex/hgss/tileset_menu2.png differ diff --git a/graphics/pokedex/hgss/tileset_menu3.png b/graphics/pokedex/hgss/tileset_menu3.png new file mode 100644 index 0000000000..e4b649c870 Binary files /dev/null and b/graphics/pokedex/hgss/tileset_menu3.png differ diff --git a/graphics/pokedex/hgss/tileset_menu_list.png b/graphics/pokedex/hgss/tileset_menu_list.png new file mode 100644 index 0000000000..91bf31eae9 Binary files /dev/null and b/graphics/pokedex/hgss/tileset_menu_list.png differ diff --git a/graphics/pokedex/hgss/tileset_menu_list_DECA.png b/graphics/pokedex/hgss/tileset_menu_list_DECA.png new file mode 100644 index 0000000000..dc84b9ea38 Binary files /dev/null and b/graphics/pokedex/hgss/tileset_menu_list_DECA.png differ diff --git a/graphics/pokedex/hgss/tileset_menu_search.png b/graphics/pokedex/hgss/tileset_menu_search.png new file mode 100644 index 0000000000..9410eef337 Binary files /dev/null and b/graphics/pokedex/hgss/tileset_menu_search.png differ diff --git a/graphics/pokedex/hgss/tileset_menu_search_DECA.png b/graphics/pokedex/hgss/tileset_menu_search_DECA.png new file mode 100644 index 0000000000..3104d35452 Binary files /dev/null and b/graphics/pokedex/hgss/tileset_menu_search_DECA.png differ diff --git a/graphics/pokemon/alcremie/berry/back.png b/graphics/pokemon/alcremie/berry/back.png new file mode 100644 index 0000000000..a2236a94f4 Binary files /dev/null and b/graphics/pokemon/alcremie/berry/back.png differ diff --git a/graphics/pokemon/alcremie/berry/berry_caramel_swirl.pal b/graphics/pokemon/alcremie/berry/berry_caramel_swirl.pal new file mode 100644 index 0000000000..5a19b7c4c7 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/berry_caramel_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 232 184 +200 168 120 +232 168 96 +144 112 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/berry_default.pal b/graphics/pokemon/alcremie/berry/berry_default.pal new file mode 100644 index 0000000000..118df4edd1 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/berry_default.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 224 208 +208 160 168 +240 136 144 +128 80 88 +248 224 200 +208 128 136 +248 224 200 +208 160 168 +248 224 200 +208 160 168 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/berry_lemon_cream.pal b/graphics/pokemon/alcremie/berry/berry_lemon_cream.pal new file mode 100644 index 0000000000..17fd451a87 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/berry_lemon_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 152 +208 184 72 +232 224 0 +112 120 24 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/berry_matcha_cream.pal b/graphics/pokemon/alcremie/berry/berry_matcha_cream.pal new file mode 100644 index 0000000000..edb69b6883 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/berry_matcha_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 248 208 +176 208 152 +192 224 96 +104 128 80 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/berry_mint_cream.pal b/graphics/pokemon/alcremie/berry/berry_mint_cream.pal new file mode 100644 index 0000000000..3a21681b21 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/berry_mint_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +208 240 232 +152 168 176 +112 208 200 +72 112 128 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/berry_rainbow_swirl.pal b/graphics/pokemon/alcremie/berry/berry_rainbow_swirl.pal new file mode 100644 index 0000000000..37a0a40498 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/berry_rainbow_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 184 +208 192 120 +216 144 88 +120 88 64 +240 160 168 +208 128 136 +176 232 224 +128 160 168 +248 248 112 +216 192 40 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/berry_ruby_cream.pal b/graphics/pokemon/alcremie/berry/berry_ruby_cream.pal new file mode 100644 index 0000000000..350cfeb22f --- /dev/null +++ b/graphics/pokemon/alcremie/berry/berry_ruby_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 208 208 +200 152 184 +232 112 192 +128 80 112 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/berry_ruby_swirl.pal b/graphics/pokemon/alcremie/berry/berry_ruby_swirl.pal new file mode 100644 index 0000000000..e0c66e7fc1 --- /dev/null +++ b/graphics/pokemon/alcremie/berry/berry_ruby_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 240 208 +208 184 160 +240 192 128 +128 96 80 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/berry/berry_salted_cream.pal b/graphics/pokemon/alcremie/berry/berry_salted_cream.pal new file mode 100644 index 0000000000..eca511097a --- /dev/null +++ b/graphics/pokemon/alcremie/berry/berry_salted_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 232 248 +176 176 184 +112 208 200 +88 88 96 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +0 120 200 +0 80 144 +0 40 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/mint_cream/shiny.pal b/graphics/pokemon/alcremie/berry/berry_shiny.pal similarity index 66% rename from graphics/pokemon/alcremie/mint_cream/shiny.pal rename to graphics/pokemon/alcremie/berry/berry_shiny.pal index f71c66c01e..1fb826a870 100644 --- a/graphics/pokemon/alcremie/mint_cream/shiny.pal +++ b/graphics/pokemon/alcremie/berry/berry_shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 +216 216 216 +152 152 152 +128 128 128 +88 88 96 72 80 72 248 248 248 -88 88 96 -128 128 128 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +0 120 200 +0 80 144 +0 40 104 16 16 16 -152 152 152 -136 32 56 -248 88 112 -192 48 72 -168 176 176 -168 176 176 -216 216 216 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alcremie/berry/front.png b/graphics/pokemon/alcremie/berry/front.png new file mode 100644 index 0000000000..4bbc456c3e Binary files /dev/null and b/graphics/pokemon/alcremie/berry/front.png differ diff --git a/graphics/pokemon/alcremie/clover/back.png b/graphics/pokemon/alcremie/clover/back.png new file mode 100644 index 0000000000..8a8efe5677 Binary files /dev/null and b/graphics/pokemon/alcremie/clover/back.png differ diff --git a/graphics/pokemon/alcremie/clover/clover_caramel_swirl.pal b/graphics/pokemon/alcremie/clover/clover_caramel_swirl.pal new file mode 100644 index 0000000000..a8b5968386 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/clover_caramel_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 232 184 +200 168 120 +232 168 96 +144 112 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/clover_default.pal b/graphics/pokemon/alcremie/clover/clover_default.pal new file mode 100644 index 0000000000..17fe8cc6b4 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/clover_default.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 224 208 +208 160 168 +240 136 144 +128 80 88 +248 224 200 +208 128 136 +248 224 200 +208 160 168 +248 224 200 +208 160 168 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/clover_lemon_cream.pal b/graphics/pokemon/alcremie/clover/clover_lemon_cream.pal new file mode 100644 index 0000000000..bd199e2bc4 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/clover_lemon_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 152 +208 184 72 +232 224 0 +112 120 24 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/clover_matcha_cream.pal b/graphics/pokemon/alcremie/clover/clover_matcha_cream.pal new file mode 100644 index 0000000000..0f4f393f43 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/clover_matcha_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 248 208 +176 208 152 +192 224 96 +104 128 80 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/clover_mint_cream.pal b/graphics/pokemon/alcremie/clover/clover_mint_cream.pal new file mode 100644 index 0000000000..08b8f83461 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/clover_mint_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +208 240 232 +152 168 176 +112 208 200 +72 112 128 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/clover_rainbow_swirl.pal b/graphics/pokemon/alcremie/clover/clover_rainbow_swirl.pal new file mode 100644 index 0000000000..4d6514f51e --- /dev/null +++ b/graphics/pokemon/alcremie/clover/clover_rainbow_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 184 +208 192 120 +216 144 88 +120 88 64 +240 160 168 +208 128 136 +176 232 224 +128 160 168 +248 248 112 +216 192 40 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/clover_ruby_cream.pal b/graphics/pokemon/alcremie/clover/clover_ruby_cream.pal new file mode 100644 index 0000000000..3243fea802 --- /dev/null +++ b/graphics/pokemon/alcremie/clover/clover_ruby_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 208 208 +200 152 184 +232 112 192 +128 80 112 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/clover_ruby_swirl.pal b/graphics/pokemon/alcremie/clover/clover_ruby_swirl.pal new file mode 100644 index 0000000000..fd68b6c2cd --- /dev/null +++ b/graphics/pokemon/alcremie/clover/clover_ruby_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 240 208 +208 184 160 +240 192 128 +128 96 80 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/clover/clover_salted_cream.pal b/graphics/pokemon/alcremie/clover/clover_salted_cream.pal new file mode 100644 index 0000000000..a5c5bc10fc --- /dev/null +++ b/graphics/pokemon/alcremie/clover/clover_salted_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 232 248 +176 176 184 +112 208 200 +88 88 96 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +136 216 64 +24 144 36 +24 80 36 +0 0 0 diff --git a/graphics/pokemon/alcremie/matcha_cream/shiny.pal b/graphics/pokemon/alcremie/clover/clover_shiny.pal similarity index 65% rename from graphics/pokemon/alcremie/matcha_cream/shiny.pal rename to graphics/pokemon/alcremie/clover/clover_shiny.pal index eb171da47c..6329ca1ecd 100644 --- a/graphics/pokemon/alcremie/matcha_cream/shiny.pal +++ b/graphics/pokemon/alcremie/clover/clover_shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 +216 216 216 +152 152 152 +128 128 128 +88 88 96 72 80 72 248 248 248 -88 88 96 -128 128 128 -16 16 16 -152 152 152 -216 216 216 -136 32 56 -248 88 112 -192 48 72 +168 176 176 248 248 248 168 176 176 -0 0 0 -0 0 0 -0 0 0 +248 248 248 +168 176 176 +136 216 64 +24 144 36 +24 80 36 +16 16 16 diff --git a/graphics/pokemon/alcremie/clover/front.png b/graphics/pokemon/alcremie/clover/front.png new file mode 100644 index 0000000000..dd30853ee3 Binary files /dev/null and b/graphics/pokemon/alcremie/clover/front.png differ diff --git a/graphics/pokemon/alcremie/flower/back.png b/graphics/pokemon/alcremie/flower/back.png new file mode 100644 index 0000000000..2d018bdabc Binary files /dev/null and b/graphics/pokemon/alcremie/flower/back.png differ diff --git a/graphics/pokemon/alcremie/flower/flower_caramel_swirl.pal b/graphics/pokemon/alcremie/flower/flower_caramel_swirl.pal new file mode 100644 index 0000000000..33bc209d7a --- /dev/null +++ b/graphics/pokemon/alcremie/flower/flower_caramel_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 232 184 +200 168 120 +232 168 96 +144 112 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 0 +248 104 40 +152 56 24 +0 0 0 diff --git a/graphics/pokemon/alcremie/flower/flower_default.pal b/graphics/pokemon/alcremie/flower/flower_default.pal new file mode 100644 index 0000000000..a3184e016f --- /dev/null +++ b/graphics/pokemon/alcremie/flower/flower_default.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 224 208 +208 160 168 +240 136 144 +128 80 88 +248 224 200 +208 128 136 +248 224 200 +208 160 168 +248 224 200 +208 160 168 +248 248 0 +248 104 40 +152 56 24 +0 0 0 diff --git a/graphics/pokemon/alcremie/flower/flower_lemon_cream.pal b/graphics/pokemon/alcremie/flower/flower_lemon_cream.pal new file mode 100644 index 0000000000..df85ea6b88 --- /dev/null +++ b/graphics/pokemon/alcremie/flower/flower_lemon_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 152 +208 184 72 +232 224 0 +112 120 24 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 0 +248 104 40 +152 56 24 +0 0 0 diff --git a/graphics/pokemon/alcremie/flower/flower_matcha_cream.pal b/graphics/pokemon/alcremie/flower/flower_matcha_cream.pal new file mode 100644 index 0000000000..f3b35677c5 --- /dev/null +++ b/graphics/pokemon/alcremie/flower/flower_matcha_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 248 208 +176 208 152 +192 224 96 +104 128 80 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +248 248 0 +248 104 40 +152 56 24 +0 0 0 diff --git a/graphics/pokemon/alcremie/flower/flower_mint_cream.pal b/graphics/pokemon/alcremie/flower/flower_mint_cream.pal new file mode 100644 index 0000000000..b32cc3bb2f --- /dev/null +++ b/graphics/pokemon/alcremie/flower/flower_mint_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +208 240 232 +152 168 176 +112 208 200 +72 112 128 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 0 +248 104 40 +152 56 24 +0 0 0 diff --git a/graphics/pokemon/alcremie/flower/flower_rainbow_swirl.pal b/graphics/pokemon/alcremie/flower/flower_rainbow_swirl.pal new file mode 100644 index 0000000000..2b7736025f --- /dev/null +++ b/graphics/pokemon/alcremie/flower/flower_rainbow_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 184 +208 192 120 +216 144 88 +120 88 64 +240 160 168 +208 128 136 +176 232 224 +128 160 168 +248 248 112 +216 192 40 +248 248 0 +248 104 40 +152 56 24 +0 0 0 diff --git a/graphics/pokemon/alcremie/flower/flower_ruby_cream.pal b/graphics/pokemon/alcremie/flower/flower_ruby_cream.pal new file mode 100644 index 0000000000..6de39b5a3e --- /dev/null +++ b/graphics/pokemon/alcremie/flower/flower_ruby_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 208 208 +200 152 184 +232 112 192 +128 80 112 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 248 0 +248 104 40 +152 56 24 +0 0 0 diff --git a/graphics/pokemon/alcremie/flower/flower_ruby_swirl.pal b/graphics/pokemon/alcremie/flower/flower_ruby_swirl.pal new file mode 100644 index 0000000000..fce8994bef --- /dev/null +++ b/graphics/pokemon/alcremie/flower/flower_ruby_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 240 208 +208 184 160 +240 192 128 +128 96 80 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 248 0 +248 104 40 +152 56 24 +0 0 0 diff --git a/graphics/pokemon/alcremie/flower/flower_salted_cream.pal b/graphics/pokemon/alcremie/flower/flower_salted_cream.pal new file mode 100644 index 0000000000..a9c50d230e --- /dev/null +++ b/graphics/pokemon/alcremie/flower/flower_salted_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 232 248 +176 176 184 +112 208 200 +88 88 96 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +248 248 0 +248 104 40 +152 56 24 +0 0 0 diff --git a/graphics/pokemon/alcremie/ruby_swirl/shiny.pal b/graphics/pokemon/alcremie/flower/flower_shiny.pal similarity index 65% rename from graphics/pokemon/alcremie/ruby_swirl/shiny.pal rename to graphics/pokemon/alcremie/flower/flower_shiny.pal index eb171da47c..ee7ae0fbaa 100644 --- a/graphics/pokemon/alcremie/ruby_swirl/shiny.pal +++ b/graphics/pokemon/alcremie/flower/flower_shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 +216 216 216 +152 152 152 +128 128 128 +88 88 96 72 80 72 248 248 248 -88 88 96 -128 128 128 -16 16 16 -152 152 152 -216 216 216 -136 32 56 -248 88 112 -192 48 72 +168 176 176 248 248 248 168 176 176 -0 0 0 -0 0 0 -0 0 0 +248 248 248 +168 176 176 +248 248 0 +248 104 40 +152 56 24 +16 16 16 diff --git a/graphics/pokemon/alcremie/flower/front.png b/graphics/pokemon/alcremie/flower/front.png new file mode 100644 index 0000000000..20c9af2f46 Binary files /dev/null and b/graphics/pokemon/alcremie/flower/front.png differ diff --git a/graphics/pokemon/alcremie/gigantamax/back.png b/graphics/pokemon/alcremie/gigantamax/back.png new file mode 100644 index 0000000000..8c3a12e19e Binary files /dev/null and b/graphics/pokemon/alcremie/gigantamax/back.png differ diff --git a/graphics/pokemon/alcremie/gigantamax/front.png b/graphics/pokemon/alcremie/gigantamax/front.png new file mode 100644 index 0000000000..30d6ee4e8f Binary files /dev/null and b/graphics/pokemon/alcremie/gigantamax/front.png differ diff --git a/graphics/pokemon/alcremie/gigantamax/icon.png b/graphics/pokemon/alcremie/gigantamax/icon.png new file mode 100644 index 0000000000..10ba520d1c Binary files /dev/null and b/graphics/pokemon/alcremie/gigantamax/icon.png differ diff --git a/graphics/pokemon/alcremie/gigantamax/normal.pal b/graphics/pokemon/alcremie/gigantamax/normal.pal new file mode 100644 index 0000000000..dcc78ed923 --- /dev/null +++ b/graphics/pokemon/alcremie/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +147 116 87 +16 16 16 +214 191 164 +253 241 208 +217 194 40 +254 255 112 +185 119 190 +164 153 183 +240 189 195 +254 109 38 +232 254 23 +86 225 210 +247 86 144 +28 151 140 +226 122 129 diff --git a/graphics/pokemon/alcremie/gigantamax/shiny.pal b/graphics/pokemon/alcremie/gigantamax/shiny.pal new file mode 100644 index 0000000000..092c301bad --- /dev/null +++ b/graphics/pokemon/alcremie/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +108 127 125 +16 16 16 +184 203 202 +240 253 255 +35 36 35 +66 69 66 +185 119 190 +91 69 73 +139 113 119 +254 109 38 +232 254 23 +187 157 165 +247 86 144 +28 151 140 +75 79 75 diff --git a/graphics/pokemon/alcremie/lemon_cream/back.png b/graphics/pokemon/alcremie/lemon_cream/back.png deleted file mode 100644 index d5a073b54b..0000000000 Binary files a/graphics/pokemon/alcremie/lemon_cream/back.png and /dev/null differ diff --git a/graphics/pokemon/alcremie/lemon_cream/front.png b/graphics/pokemon/alcremie/lemon_cream/front.png deleted file mode 100644 index fefb952fd4..0000000000 Binary files a/graphics/pokemon/alcremie/lemon_cream/front.png and /dev/null differ diff --git a/graphics/pokemon/alcremie/lemon_cream/shiny.pal b/graphics/pokemon/alcremie/lemon_cream/shiny.pal deleted file mode 100644 index d19dc335d5..0000000000 --- a/graphics/pokemon/alcremie/lemon_cream/shiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -72 80 72 -248 248 248 -88 88 96 -128 128 128 -16 16 16 -152 152 152 -136 32 56 -248 88 112 -192 48 72 -168 176 176 -216 216 216 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alcremie/love/back.png b/graphics/pokemon/alcremie/love/back.png new file mode 100644 index 0000000000..6c3dd94363 Binary files /dev/null and b/graphics/pokemon/alcremie/love/back.png differ diff --git a/graphics/pokemon/alcremie/love/front.png b/graphics/pokemon/alcremie/love/front.png new file mode 100644 index 0000000000..36cef02d8b Binary files /dev/null and b/graphics/pokemon/alcremie/love/front.png differ diff --git a/graphics/pokemon/alcremie/love/love_caramel_swirl.pal b/graphics/pokemon/alcremie/love/love_caramel_swirl.pal new file mode 100644 index 0000000000..86f59a8d62 --- /dev/null +++ b/graphics/pokemon/alcremie/love/love_caramel_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 232 184 +200 168 120 +232 168 96 +144 112 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 152 200 +248 112 120 +216 56 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/love/love_default.pal b/graphics/pokemon/alcremie/love/love_default.pal new file mode 100644 index 0000000000..9f965e53b0 --- /dev/null +++ b/graphics/pokemon/alcremie/love/love_default.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 224 208 +208 160 168 +240 136 144 +128 80 88 +248 224 200 +208 128 136 +248 224 200 +208 160 168 +248 224 200 +208 160 168 +248 152 200 +248 112 120 +216 56 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/love/love_lemon_cream.pal b/graphics/pokemon/alcremie/love/love_lemon_cream.pal new file mode 100644 index 0000000000..34d9c0dfef --- /dev/null +++ b/graphics/pokemon/alcremie/love/love_lemon_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 152 +208 184 72 +232 224 0 +112 120 24 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 152 200 +248 112 120 +216 56 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/love/love_matcha_cream.pal b/graphics/pokemon/alcremie/love/love_matcha_cream.pal new file mode 100644 index 0000000000..3d33c04aba --- /dev/null +++ b/graphics/pokemon/alcremie/love/love_matcha_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 248 208 +176 208 152 +192 224 96 +104 128 80 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +248 152 200 +248 112 120 +216 56 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/love/love_mint_cream.pal b/graphics/pokemon/alcremie/love/love_mint_cream.pal new file mode 100644 index 0000000000..2344ddcf82 --- /dev/null +++ b/graphics/pokemon/alcremie/love/love_mint_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +208 240 232 +152 168 176 +112 208 200 +72 112 128 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 152 200 +248 112 120 +216 56 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/love/love_rainbow_swirl.pal b/graphics/pokemon/alcremie/love/love_rainbow_swirl.pal new file mode 100644 index 0000000000..3bb1f61ee8 --- /dev/null +++ b/graphics/pokemon/alcremie/love/love_rainbow_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 184 +208 192 120 +216 144 88 +120 88 64 +240 160 168 +208 128 136 +176 232 224 +128 160 168 +248 248 112 +216 192 40 +248 152 200 +248 112 120 +216 56 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/love/love_ruby_cream.pal b/graphics/pokemon/alcremie/love/love_ruby_cream.pal new file mode 100644 index 0000000000..0d37782db5 --- /dev/null +++ b/graphics/pokemon/alcremie/love/love_ruby_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 208 208 +200 152 184 +232 112 192 +128 80 112 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 152 200 +248 112 120 +216 56 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/love/love_ruby_swirl.pal b/graphics/pokemon/alcremie/love/love_ruby_swirl.pal new file mode 100644 index 0000000000..ad18466c8b --- /dev/null +++ b/graphics/pokemon/alcremie/love/love_ruby_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 240 208 +208 184 160 +240 192 128 +128 96 80 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 152 200 +248 112 120 +216 56 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/love/love_salted_cream.pal b/graphics/pokemon/alcremie/love/love_salted_cream.pal new file mode 100644 index 0000000000..9bb17bbcfd --- /dev/null +++ b/graphics/pokemon/alcremie/love/love_salted_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 232 248 +176 176 184 +112 208 200 +88 88 96 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +248 152 200 +248 112 120 +216 56 104 +0 0 0 diff --git a/graphics/pokemon/alcremie/love/love_shiny.pal b/graphics/pokemon/alcremie/love/love_shiny.pal new file mode 100644 index 0000000000..8489043934 --- /dev/null +++ b/graphics/pokemon/alcremie/love/love_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +216 216 216 +152 152 152 +128 128 128 +88 88 96 +72 80 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 152 200 +248 112 120 +216 56 104 +16 16 16 diff --git a/graphics/pokemon/alcremie/matcha_cream/back.png b/graphics/pokemon/alcremie/matcha_cream/back.png deleted file mode 100644 index 7a422730b9..0000000000 Binary files a/graphics/pokemon/alcremie/matcha_cream/back.png and /dev/null differ diff --git a/graphics/pokemon/alcremie/matcha_cream/front.png b/graphics/pokemon/alcremie/matcha_cream/front.png deleted file mode 100644 index 28225df1a0..0000000000 Binary files a/graphics/pokemon/alcremie/matcha_cream/front.png and /dev/null differ diff --git a/graphics/pokemon/alcremie/mint_cream/back.png b/graphics/pokemon/alcremie/mint_cream/back.png deleted file mode 100644 index 481ce9c78c..0000000000 Binary files a/graphics/pokemon/alcremie/mint_cream/back.png and /dev/null differ diff --git a/graphics/pokemon/alcremie/mint_cream/front.png b/graphics/pokemon/alcremie/mint_cream/front.png deleted file mode 100644 index 9d525253fa..0000000000 Binary files a/graphics/pokemon/alcremie/mint_cream/front.png and /dev/null differ diff --git a/graphics/pokemon/alcremie/ribbon/back.png b/graphics/pokemon/alcremie/ribbon/back.png new file mode 100644 index 0000000000..3b595ebb62 Binary files /dev/null and b/graphics/pokemon/alcremie/ribbon/back.png differ diff --git a/graphics/pokemon/alcremie/ribbon/front.png b/graphics/pokemon/alcremie/ribbon/front.png new file mode 100644 index 0000000000..2f1b913cb7 Binary files /dev/null and b/graphics/pokemon/alcremie/ribbon/front.png differ diff --git a/graphics/pokemon/alcremie/ribbon/ribbon_caramel_swirl.pal b/graphics/pokemon/alcremie/ribbon/ribbon_caramel_swirl.pal new file mode 100644 index 0000000000..c4fce2c7c6 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/ribbon_caramel_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 232 184 +200 168 120 +232 168 96 +144 112 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/ribbon_default.pal b/graphics/pokemon/alcremie/ribbon/ribbon_default.pal new file mode 100644 index 0000000000..b0ad7cdf74 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/ribbon_default.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 224 208 +208 160 168 +240 136 144 +128 80 88 +248 224 200 +208 128 136 +248 224 200 +208 160 168 +248 224 200 +208 160 168 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/ribbon_lemon_cream.pal b/graphics/pokemon/alcremie/ribbon/ribbon_lemon_cream.pal new file mode 100644 index 0000000000..b022d03006 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/ribbon_lemon_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 152 +208 184 72 +232 224 0 +112 120 24 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/ribbon_matcha_cream.pal b/graphics/pokemon/alcremie/ribbon/ribbon_matcha_cream.pal new file mode 100644 index 0000000000..4999acd248 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/ribbon_matcha_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 248 208 +176 208 152 +192 224 96 +104 128 80 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/ribbon_mint_cream.pal b/graphics/pokemon/alcremie/ribbon/ribbon_mint_cream.pal new file mode 100644 index 0000000000..2349810b7e --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/ribbon_mint_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +208 240 232 +152 168 176 +112 208 200 +72 112 128 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/ribbon_rainbow_swirl.pal b/graphics/pokemon/alcremie/ribbon/ribbon_rainbow_swirl.pal new file mode 100644 index 0000000000..8c17769478 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/ribbon_rainbow_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 184 +208 192 120 +216 144 88 +120 88 64 +240 160 168 +208 128 136 +176 232 224 +128 160 168 +248 248 112 +216 192 40 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/ribbon_ruby_cream.pal b/graphics/pokemon/alcremie/ribbon/ribbon_ruby_cream.pal new file mode 100644 index 0000000000..6384296180 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/ribbon_ruby_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 208 208 +200 152 184 +232 112 192 +128 80 112 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/ribbon_ruby_swirl.pal b/graphics/pokemon/alcremie/ribbon/ribbon_ruby_swirl.pal new file mode 100644 index 0000000000..e1f9ce61dc --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/ribbon_ruby_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 240 208 +208 184 160 +240 192 128 +128 96 80 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/ribbon_salted_cream.pal b/graphics/pokemon/alcremie/ribbon/ribbon_salted_cream.pal new file mode 100644 index 0000000000..cdf85d28b5 --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/ribbon_salted_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 232 248 +176 176 184 +112 208 200 +88 88 96 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +176 136 176 +144 96 168 +112 72 136 +0 0 0 diff --git a/graphics/pokemon/alcremie/ribbon/ribbon_shiny.pal b/graphics/pokemon/alcremie/ribbon/ribbon_shiny.pal new file mode 100644 index 0000000000..b60e7632fe --- /dev/null +++ b/graphics/pokemon/alcremie/ribbon/ribbon_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +216 216 216 +152 152 152 +128 128 128 +88 88 96 +72 80 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +176 136 176 +144 96 168 +112 72 136 +16 16 16 diff --git a/graphics/pokemon/alcremie/ruby_cream/back.png b/graphics/pokemon/alcremie/ruby_cream/back.png deleted file mode 100644 index 45fc28a0e6..0000000000 Binary files a/graphics/pokemon/alcremie/ruby_cream/back.png and /dev/null differ diff --git a/graphics/pokemon/alcremie/ruby_cream/front.png b/graphics/pokemon/alcremie/ruby_cream/front.png deleted file mode 100644 index e64880a8cf..0000000000 Binary files a/graphics/pokemon/alcremie/ruby_cream/front.png and /dev/null differ diff --git a/graphics/pokemon/alcremie/ruby_swirl/back.png b/graphics/pokemon/alcremie/ruby_swirl/back.png deleted file mode 100644 index ae275b897d..0000000000 Binary files a/graphics/pokemon/alcremie/ruby_swirl/back.png and /dev/null differ diff --git a/graphics/pokemon/alcremie/ruby_swirl/front.png b/graphics/pokemon/alcremie/ruby_swirl/front.png deleted file mode 100644 index cb99b49fa2..0000000000 Binary files a/graphics/pokemon/alcremie/ruby_swirl/front.png and /dev/null differ diff --git a/graphics/pokemon/alcremie/salted_cream/back.png b/graphics/pokemon/alcremie/salted_cream/back.png deleted file mode 100644 index f32932d95c..0000000000 Binary files a/graphics/pokemon/alcremie/salted_cream/back.png and /dev/null differ diff --git a/graphics/pokemon/alcremie/salted_cream/front.png b/graphics/pokemon/alcremie/salted_cream/front.png deleted file mode 100644 index 7958715bcc..0000000000 Binary files a/graphics/pokemon/alcremie/salted_cream/front.png and /dev/null differ diff --git a/graphics/pokemon/alcremie/salted_cream/shiny.pal b/graphics/pokemon/alcremie/salted_cream/shiny.pal deleted file mode 100644 index 953c50e5ee..0000000000 --- a/graphics/pokemon/alcremie/salted_cream/shiny.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -152 208 160 -72 80 72 -248 248 248 -88 88 96 -128 128 128 -16 16 16 -136 32 56 -248 88 112 -192 48 72 -168 176 176 -152 152 152 -216 216 216 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/alcremie/star/back.png b/graphics/pokemon/alcremie/star/back.png new file mode 100644 index 0000000000..38d32ca657 Binary files /dev/null and b/graphics/pokemon/alcremie/star/back.png differ diff --git a/graphics/pokemon/alcremie/star/front.png b/graphics/pokemon/alcremie/star/front.png new file mode 100644 index 0000000000..41f042229b Binary files /dev/null and b/graphics/pokemon/alcremie/star/front.png differ diff --git a/graphics/pokemon/alcremie/star/star_caramel_swirl.pal b/graphics/pokemon/alcremie/star/star_caramel_swirl.pal new file mode 100644 index 0000000000..254db99d41 --- /dev/null +++ b/graphics/pokemon/alcremie/star/star_caramel_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 232 184 +200 168 120 +232 168 96 +144 112 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/star_default.pal b/graphics/pokemon/alcremie/star/star_default.pal new file mode 100644 index 0000000000..d99429510a --- /dev/null +++ b/graphics/pokemon/alcremie/star/star_default.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 224 208 +208 160 168 +240 136 144 +128 80 88 +248 224 200 +208 128 136 +248 224 200 +208 160 168 +248 224 200 +208 160 168 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/star_lemon_cream.pal b/graphics/pokemon/alcremie/star/star_lemon_cream.pal new file mode 100644 index 0000000000..ec776c4d90 --- /dev/null +++ b/graphics/pokemon/alcremie/star/star_lemon_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 152 +208 184 72 +232 224 0 +112 120 24 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/star_matcha_cream.pal b/graphics/pokemon/alcremie/star/star_matcha_cream.pal new file mode 100644 index 0000000000..b642f11786 --- /dev/null +++ b/graphics/pokemon/alcremie/star/star_matcha_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 248 208 +176 208 152 +192 224 96 +104 128 80 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +232 248 200 +176 208 152 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/star_mint_cream.pal b/graphics/pokemon/alcremie/star/star_mint_cream.pal new file mode 100644 index 0000000000..f4fb9991f8 --- /dev/null +++ b/graphics/pokemon/alcremie/star/star_mint_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +208 240 232 +152 168 176 +112 208 200 +72 112 128 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/star_rainbow_swirl.pal b/graphics/pokemon/alcremie/star/star_rainbow_swirl.pal new file mode 100644 index 0000000000..a0aa5334c4 --- /dev/null +++ b/graphics/pokemon/alcremie/star/star_rainbow_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 184 +208 192 120 +216 144 88 +120 88 64 +240 160 168 +208 128 136 +176 232 224 +128 160 168 +248 248 112 +216 192 40 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/star_ruby_cream.pal b/graphics/pokemon/alcremie/star/star_ruby_cream.pal new file mode 100644 index 0000000000..1f66460fb6 --- /dev/null +++ b/graphics/pokemon/alcremie/star/star_ruby_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 208 208 +200 152 184 +232 112 192 +128 80 112 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/star_ruby_swirl.pal b/graphics/pokemon/alcremie/star/star_ruby_swirl.pal new file mode 100644 index 0000000000..1f00d36c9c --- /dev/null +++ b/graphics/pokemon/alcremie/star/star_ruby_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 240 208 +208 184 160 +240 192 128 +128 96 80 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 176 192 +224 120 128 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/star_salted_cream.pal b/graphics/pokemon/alcremie/star/star_salted_cream.pal new file mode 100644 index 0000000000..2b0c72d8f6 --- /dev/null +++ b/graphics/pokemon/alcremie/star/star_salted_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 232 248 +176 176 184 +112 208 200 +88 88 96 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +248 224 48 +200 176 24 +192 112 16 +0 0 0 diff --git a/graphics/pokemon/alcremie/star/star_shiny.pal b/graphics/pokemon/alcremie/star/star_shiny.pal new file mode 100644 index 0000000000..6fb3e1d923 --- /dev/null +++ b/graphics/pokemon/alcremie/star/star_shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +216 216 216 +152 152 152 +128 128 128 +88 88 96 +72 80 72 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 +248 224 48 +200 176 24 +192 112 16 +16 16 16 diff --git a/graphics/pokemon/alcremie/strawberry/back.png b/graphics/pokemon/alcremie/strawberry/back.png new file mode 100644 index 0000000000..2f3ce5007a Binary files /dev/null and b/graphics/pokemon/alcremie/strawberry/back.png differ diff --git a/graphics/pokemon/alcremie/strawberry/front.png b/graphics/pokemon/alcremie/strawberry/front.png new file mode 100644 index 0000000000..fe7872d2d3 Binary files /dev/null and b/graphics/pokemon/alcremie/strawberry/front.png differ diff --git a/graphics/pokemon/alcremie/salted_cream/normal.pal b/graphics/pokemon/alcremie/strawberry/strawberry_caramel_swirl.pal similarity index 58% rename from graphics/pokemon/alcremie/salted_cream/normal.pal rename to graphics/pokemon/alcremie/strawberry/strawberry_caramel_swirl.pal index adfd376dc3..78cea9164c 100644 --- a/graphics/pokemon/alcremie/salted_cream/normal.pal +++ b/graphics/pokemon/alcremie/strawberry/strawberry_caramel_swirl.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 88 88 248 248 248 -112 208 200 -176 176 176 -16 16 16 -136 32 56 -248 88 112 -192 48 72 +248 232 184 +200 168 120 +232 168 96 +144 112 72 +248 248 248 168 176 176 248 248 248 +168 176 176 248 248 248 -0 0 0 -0 0 0 -0 0 0 +168 176 176 +248 88 112 +192 48 72 +136 32 56 0 0 0 diff --git a/graphics/pokemon/alcremie/strawberry/strawberry_default.pal b/graphics/pokemon/alcremie/strawberry/strawberry_default.pal new file mode 100644 index 0000000000..b9cb001f7a --- /dev/null +++ b/graphics/pokemon/alcremie/strawberry/strawberry_default.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 224 208 +208 160 168 +240 136 144 +128 80 88 +248 224 200 +208 128 136 +248 224 200 +208 160 168 +248 224 200 +208 160 168 +248 88 112 +192 48 72 +136 32 56 +0 0 0 diff --git a/graphics/pokemon/alcremie/lemon_cream/normal.pal b/graphics/pokemon/alcremie/strawberry/strawberry_lemon_cream.pal similarity index 75% rename from graphics/pokemon/alcremie/lemon_cream/normal.pal rename to graphics/pokemon/alcremie/strawberry/strawberry_lemon_cream.pal index c69c0376e8..0cbfae8eec 100644 --- a/graphics/pokemon/alcremie/lemon_cream/normal.pal +++ b/graphics/pokemon/alcremie/strawberry/strawberry_lemon_cream.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 +248 248 248 +248 248 152 +208 184 72 +232 224 0 112 120 24 248 248 248 -232 224 0 -208 184 72 -16 16 16 -248 248 152 -136 32 56 -248 88 112 -192 48 72 168 176 176 248 248 248 -0 0 0 -0 0 0 -0 0 0 +168 176 176 +248 248 248 +168 176 176 +248 88 112 +192 48 72 +136 32 56 0 0 0 diff --git a/graphics/pokemon/alcremie/matcha_cream/normal.pal b/graphics/pokemon/alcremie/strawberry/strawberry_matcha_cream.pal similarity index 75% rename from graphics/pokemon/alcremie/matcha_cream/normal.pal rename to graphics/pokemon/alcremie/strawberry/strawberry_matcha_cream.pal index a5bbc02bc2..918955f1aa 100644 --- a/graphics/pokemon/alcremie/matcha_cream/normal.pal +++ b/graphics/pokemon/alcremie/strawberry/strawberry_matcha_cream.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 +248 248 248 +232 248 208 +176 208 152 +192 224 96 104 128 80 232 248 200 -192 224 96 176 208 152 -16 16 16 -232 248 208 -248 248 248 -136 32 56 +232 248 200 +176 208 152 +232 248 200 +176 208 152 248 88 112 192 48 72 -224 248 200 -176 208 152 -0 0 0 -0 0 0 +136 32 56 0 0 0 diff --git a/graphics/pokemon/alcremie/mint_cream/normal.pal b/graphics/pokemon/alcremie/strawberry/strawberry_mint_cream.pal similarity index 75% rename from graphics/pokemon/alcremie/mint_cream/normal.pal rename to graphics/pokemon/alcremie/strawberry/strawberry_mint_cream.pal index 7b56dfdc3e..3978acb218 100644 --- a/graphics/pokemon/alcremie/mint_cream/normal.pal +++ b/graphics/pokemon/alcremie/strawberry/strawberry_mint_cream.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 +248 248 248 +208 240 232 +152 168 176 +112 208 200 72 112 128 248 248 248 -112 208 200 -152 168 176 -16 16 16 -208 240 232 -136 32 56 +168 176 176 +248 248 248 +168 176 176 +248 248 248 +168 176 176 248 88 112 192 48 72 -168 176 176 -176 176 176 -248 248 248 -0 0 0 -0 0 0 +136 32 56 0 0 0 diff --git a/graphics/pokemon/alcremie/strawberry/strawberry_rainbow_swirl.pal b/graphics/pokemon/alcremie/strawberry/strawberry_rainbow_swirl.pal new file mode 100644 index 0000000000..10bfc24d1f --- /dev/null +++ b/graphics/pokemon/alcremie/strawberry/strawberry_rainbow_swirl.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +248 248 184 +208 192 120 +216 144 88 +120 88 64 +240 160 168 +208 128 136 +176 232 224 +128 160 168 +248 248 112 +216 192 40 +248 88 112 +192 48 72 +136 32 56 +0 0 0 diff --git a/graphics/pokemon/alcremie/ruby_cream/normal.pal b/graphics/pokemon/alcremie/strawberry/strawberry_ruby_cream.pal similarity index 57% rename from graphics/pokemon/alcremie/ruby_cream/normal.pal rename to graphics/pokemon/alcremie/strawberry/strawberry_ruby_cream.pal index 873d673e1b..e95929cab7 100644 --- a/graphics/pokemon/alcremie/ruby_cream/normal.pal +++ b/graphics/pokemon/alcremie/strawberry/strawberry_ruby_cream.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 80 112 -240 200 208 -232 112 192 -200 152 184 -16 16 16 248 248 248 -136 32 56 +248 208 208 +200 152 184 +232 112 192 +128 80 112 +248 208 208 +200 152 184 +248 208 208 +200 152 184 +248 208 208 +200 152 184 248 88 112 192 48 72 -240 200 200 -200 144 184 -200 152 192 -240 200 208 -0 0 0 +136 32 56 0 0 0 diff --git a/graphics/pokemon/alcremie/ruby_swirl/normal.pal b/graphics/pokemon/alcremie/strawberry/strawberry_ruby_swirl.pal similarity index 75% rename from graphics/pokemon/alcremie/ruby_swirl/normal.pal rename to graphics/pokemon/alcremie/strawberry/strawberry_ruby_swirl.pal index 5208a45f8f..59e711dd22 100644 --- a/graphics/pokemon/alcremie/ruby_swirl/normal.pal +++ b/graphics/pokemon/alcremie/strawberry/strawberry_ruby_swirl.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 +248 248 248 +248 240 208 +208 184 160 +240 192 128 128 96 80 248 176 192 -240 192 128 -208 184 160 -16 16 16 -248 240 208 -248 248 248 -136 32 56 +224 120 128 +248 176 192 +224 120 128 +248 176 192 +224 120 128 248 88 112 192 48 72 -248 176 184 -224 120 128 -0 0 0 -0 0 0 +136 32 56 0 0 0 diff --git a/graphics/pokemon/alcremie/strawberry/strawberry_salted_cream.pal b/graphics/pokemon/alcremie/strawberry/strawberry_salted_cream.pal new file mode 100644 index 0000000000..af57499a4c --- /dev/null +++ b/graphics/pokemon/alcremie/strawberry/strawberry_salted_cream.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 248 248 +232 232 248 +176 176 184 +112 208 200 +88 88 96 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +232 232 248 +176 176 184 +248 88 112 +192 48 72 +136 32 56 +0 0 0 diff --git a/graphics/pokemon/alcremie/ruby_cream/shiny.pal b/graphics/pokemon/alcremie/strawberry/strawberry_shiny.pal similarity index 87% rename from graphics/pokemon/alcremie/ruby_cream/shiny.pal rename to graphics/pokemon/alcremie/strawberry/strawberry_shiny.pal index 454ec33ff4..6ae9aa96af 100644 --- a/graphics/pokemon/alcremie/ruby_cream/shiny.pal +++ b/graphics/pokemon/alcremie/strawberry/strawberry_shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 +216 216 216 +152 152 152 +128 128 128 +88 88 96 72 80 72 248 248 248 -88 88 96 -128 128 128 -16 16 16 -216 216 216 -136 32 56 -248 88 112 -192 48 72 +168 176 176 248 248 248 168 176 176 +248 248 248 168 176 176 -152 152 152 -0 0 0 -0 0 0 +248 88 112 +192 48 72 +136 32 56 +16 16 16 diff --git a/graphics/pokemon/amaura/anim_front.png b/graphics/pokemon/amaura/anim_front.png index 63c7d94cbd..b619f704f9 100644 Binary files a/graphics/pokemon/amaura/anim_front.png and b/graphics/pokemon/amaura/anim_front.png differ diff --git a/graphics/pokemon/annihilape/back.png b/graphics/pokemon/annihilape/back.png new file mode 100755 index 0000000000..8be9853505 Binary files /dev/null and b/graphics/pokemon/annihilape/back.png differ diff --git a/graphics/pokemon/annihilape/front.png b/graphics/pokemon/annihilape/front.png new file mode 100755 index 0000000000..2e8a893ce3 Binary files /dev/null and b/graphics/pokemon/annihilape/front.png differ diff --git a/graphics/pokemon/annihilape/icon.png b/graphics/pokemon/annihilape/icon.png new file mode 100755 index 0000000000..a516d2d5e9 Binary files /dev/null and b/graphics/pokemon/annihilape/icon.png differ diff --git a/graphics/pokemon/annihilape/normal.pal b/graphics/pokemon/annihilape/normal.pal new file mode 100755 index 0000000000..dc7b242085 --- /dev/null +++ b/graphics/pokemon/annihilape/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 112 120 +16 16 16 +248 248 248 +64 64 64 +192 192 208 +160 160 176 +224 24 24 +240 152 168 +144 48 72 +32 40 40 +192 72 96 +88 104 112 +64 72 80 +40 40 40 +80 80 80 diff --git a/graphics/pokemon/annihilape/shiny.pal b/graphics/pokemon/annihilape/shiny.pal new file mode 100755 index 0000000000..c19578eeb4 --- /dev/null +++ b/graphics/pokemon/annihilape/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 80 128 +16 16 16 +240 232 232 +40 40 72 +168 168 192 +128 136 176 +224 24 24 +240 152 168 +144 48 72 +24 40 56 +192 72 96 +88 128 168 +56 80 104 +40 40 40 +80 80 80 diff --git a/graphics/pokemon/appletun/gigantamax/back.png b/graphics/pokemon/appletun/gigantamax/back.png new file mode 100644 index 0000000000..610d98112b Binary files /dev/null and b/graphics/pokemon/appletun/gigantamax/back.png differ diff --git a/graphics/pokemon/appletun/gigantamax/front.png b/graphics/pokemon/appletun/gigantamax/front.png new file mode 100644 index 0000000000..65c716e9e8 Binary files /dev/null and b/graphics/pokemon/appletun/gigantamax/front.png differ diff --git a/graphics/pokemon/appletun/gigantamax/icon.png b/graphics/pokemon/appletun/gigantamax/icon.png new file mode 100644 index 0000000000..b7ecabd469 Binary files /dev/null and b/graphics/pokemon/appletun/gigantamax/icon.png differ diff --git a/graphics/pokemon/appletun/gigantamax/normal.pal b/graphics/pokemon/appletun/gigantamax/normal.pal new file mode 100644 index 0000000000..2d5dabef1e --- /dev/null +++ b/graphics/pokemon/appletun/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +166 49 57 +119 38 40 +198 138 72 +141 66 41 +233 197 88 +66 118 56 +210 57 77 +179 172 98 +249 249 249 +44 72 40 +218 208 139 +57 164 61 +213 68 86 +15 15 15 diff --git a/graphics/pokemon/appletun/gigantamax/shiny.pal b/graphics/pokemon/appletun/gigantamax/shiny.pal new file mode 100644 index 0000000000..4514eb418d --- /dev/null +++ b/graphics/pokemon/appletun/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +55 143 41 +35 91 27 +198 138 72 +141 66 41 +233 197 88 +66 118 56 +75 183 48 +179 172 98 +249 249 249 +44 72 40 +218 208 139 +57 164 61 +213 68 86 +15 15 15 diff --git a/graphics/pokemon/arboliva/back.png b/graphics/pokemon/arboliva/back.png new file mode 100644 index 0000000000..a1383390e1 Binary files /dev/null and b/graphics/pokemon/arboliva/back.png differ diff --git a/graphics/pokemon/arboliva/front.png b/graphics/pokemon/arboliva/front.png new file mode 100644 index 0000000000..13521182f1 Binary files /dev/null and b/graphics/pokemon/arboliva/front.png differ diff --git a/graphics/pokemon/arboliva/icon.png b/graphics/pokemon/arboliva/icon.png new file mode 100755 index 0000000000..039efb5489 Binary files /dev/null and b/graphics/pokemon/arboliva/icon.png differ diff --git a/graphics/pokemon/arboliva/normal.pal b/graphics/pokemon/arboliva/normal.pal new file mode 100644 index 0000000000..c343903ef1 --- /dev/null +++ b/graphics/pokemon/arboliva/normal.pal @@ -0,0 +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 diff --git a/graphics/pokemon/arboliva/shiny.pal b/graphics/pokemon/arboliva/shiny.pal new file mode 100644 index 0000000000..796aeec5be --- /dev/null +++ b/graphics/pokemon/arboliva/shiny.pal @@ -0,0 +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 diff --git a/graphics/pokemon/arctibax/back.png b/graphics/pokemon/arctibax/back.png new file mode 100644 index 0000000000..ff061dece4 Binary files /dev/null and b/graphics/pokemon/arctibax/back.png differ diff --git a/graphics/pokemon/arctibax/front.png b/graphics/pokemon/arctibax/front.png new file mode 100644 index 0000000000..6b1350e892 Binary files /dev/null and b/graphics/pokemon/arctibax/front.png differ diff --git a/graphics/pokemon/arctibax/icon.png b/graphics/pokemon/arctibax/icon.png new file mode 100755 index 0000000000..f9fcaecf43 Binary files /dev/null and b/graphics/pokemon/arctibax/icon.png differ diff --git a/graphics/pokemon/arctibax/normal.pal b/graphics/pokemon/arctibax/normal.pal new file mode 100644 index 0000000000..0a9a427117 --- /dev/null +++ b/graphics/pokemon/arctibax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +92 131 133 +65 69 90 +188 239 248 +91 111 138 +125 166 166 +102 149 227 +15 15 15 +0 0 0 +255 209 74 +218 145 35 +75 122 154 +58 99 126 +100 54 32 +244 125 47 +168 96 47 diff --git a/graphics/pokemon/arctibax/shiny.pal b/graphics/pokemon/arctibax/shiny.pal new file mode 100644 index 0000000000..0c46ae6982 --- /dev/null +++ b/graphics/pokemon/arctibax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +74 168 123 +65 69 90 +227 255 253 +78 133 139 +140 221 192 +134 249 249 +15 15 15 +0 0 0 +255 209 74 +218 145 35 +67 194 175 +63 152 138 +137 39 73 +252 142 179 +201 100 144 diff --git a/graphics/pokemon/armarouge/back.png b/graphics/pokemon/armarouge/back.png new file mode 100644 index 0000000000..c07c397033 Binary files /dev/null and b/graphics/pokemon/armarouge/back.png differ diff --git a/graphics/pokemon/armarouge/front.png b/graphics/pokemon/armarouge/front.png new file mode 100644 index 0000000000..497d0c1f66 Binary files /dev/null and b/graphics/pokemon/armarouge/front.png differ diff --git a/graphics/pokemon/armarouge/icon.png b/graphics/pokemon/armarouge/icon.png new file mode 100755 index 0000000000..a1b9e9b90f Binary files /dev/null and b/graphics/pokemon/armarouge/icon.png differ diff --git a/graphics/pokemon/armarouge/normal.pal b/graphics/pokemon/armarouge/normal.pal new file mode 100644 index 0000000000..b4da58580c --- /dev/null +++ b/graphics/pokemon/armarouge/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +154 212 167 +148 46 44 +227 57 20 +242 131 165 +254 250 98 +241 163 41 +83 35 36 +18 25 27 +85 86 85 +53 46 43 +8 8 8 +253 251 0 +106 63 3 +255 252 199 +255 44 0 +198 120 27 diff --git a/graphics/pokemon/armarouge/shiny.pal b/graphics/pokemon/armarouge/shiny.pal new file mode 100644 index 0000000000..4e9a59e82c --- /dev/null +++ b/graphics/pokemon/armarouge/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +154 212 167 +148 46 44 +227 57 20 +242 131 165 +254 250 98 +241 163 41 +83 35 36 +18 25 27 +85 86 85 +53 46 43 +8 8 8 +171 248 252 +106 63 3 +255 252 199 +54 109 231 +198 120 27 diff --git a/graphics/pokemon/azumarill/anim_front.png b/graphics/pokemon/azumarill/anim_front.png index eaeaf0c8e7..616b8989bb 100644 Binary files a/graphics/pokemon/azumarill/anim_front.png and b/graphics/pokemon/azumarill/anim_front.png differ diff --git a/graphics/pokemon/azumarill/normal.pal b/graphics/pokemon/azumarill/normal.pal index f67789782b..00ca3090d7 100644 --- a/graphics/pokemon/azumarill/normal.pal +++ b/graphics/pokemon/azumarill/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 80 144 -72 144 224 -112 184 248 +16 49 90 +8 98 172 +90 156 238 16 16 16 -152 0 8 -200 40 0 -232 80 0 -80 176 240 +148 16 16 +189 41 49 +222 65 82 +49 131 197 248 248 248 168 48 32 -120 200 232 -232 128 120 -192 192 208 -216 224 248 +115 180 246 +222 65 82 +197 197 213 +213 222 246 80 176 208 diff --git a/graphics/pokemon/basculegion/back.png b/graphics/pokemon/basculegion/back.png old mode 100755 new mode 100644 index 97c2dd3d98..d9a15512e2 Binary files a/graphics/pokemon/basculegion/back.png and b/graphics/pokemon/basculegion/back.png differ diff --git a/graphics/pokemon/basculegion/female/back.png b/graphics/pokemon/basculegion/female/back.png old mode 100755 new mode 100644 index 95be1e80e8..2a122e78bb Binary files a/graphics/pokemon/basculegion/female/back.png and b/graphics/pokemon/basculegion/female/back.png differ diff --git a/graphics/pokemon/basculegion/female/front.png b/graphics/pokemon/basculegion/female/front.png old mode 100755 new mode 100644 index ed6da5a68f..f3234de875 Binary files a/graphics/pokemon/basculegion/female/front.png and b/graphics/pokemon/basculegion/female/front.png differ diff --git a/graphics/pokemon/basculegion/female/normal.pal b/graphics/pokemon/basculegion/female/normal.pal old mode 100755 new mode 100644 index b5b76f062f..8c9aa43e7e --- a/graphics/pokemon/basculegion/female/normal.pal +++ b/graphics/pokemon/basculegion/female/normal.pal @@ -1,19 +1,18 @@ JASC-PAL 0100 -16 -152 208 160 -98 98 98 -16 16 16 -46 92 120 -171 222 224 -230 230 230 -227 242 239 -164 164 164 -122 168 175 -32 49 57 -65 82 82 -55 140 89 -21 64 34 -34 96 61 -16 16 18 -99 62 41 +15 +153 211 165 +90 125 133 +29 29 29 +209 237 237 +58 56 54 +142 188 193 +91 130 104 +45 57 51 +101 114 120 +73 95 84 +151 170 174 +223 233 231 +255 255 255 +91 51 39 +233 245 245 diff --git a/graphics/pokemon/basculegion/female/shiny.pal b/graphics/pokemon/basculegion/female/shiny.pal old mode 100755 new mode 100644 index 863a0f773e..733e4626cd --- a/graphics/pokemon/basculegion/female/shiny.pal +++ b/graphics/pokemon/basculegion/female/shiny.pal @@ -1,19 +1,18 @@ JASC-PAL 0100 -16 -152 208 160 -98 98 98 -16 16 16 -112 96 64 -216 208 112 -230 230 230 -248 236 160 -164 164 164 -160 152 72 -32 49 57 -64 80 80 -96 144 48 -21 64 34 -72 108 56 -16 16 18 -99 62 41 +15 +153 211 165 +157 114 49 +29 29 29 +255 239 106 +58 56 54 +213 179 74 +113 187 104 +45 57 51 +101 114 120 +71 120 74 +151 170 174 +223 233 231 +255 255 255 +91 51 39 +255 249 191 diff --git a/graphics/pokemon/basculegion/front.png b/graphics/pokemon/basculegion/front.png old mode 100755 new mode 100644 index 7d147d198e..0f420f5855 Binary files a/graphics/pokemon/basculegion/front.png and b/graphics/pokemon/basculegion/front.png differ diff --git a/graphics/pokemon/basculegion/normal.pal b/graphics/pokemon/basculegion/normal.pal old mode 100755 new mode 100644 index 75d4b45a18..a256a509db --- a/graphics/pokemon/basculegion/normal.pal +++ b/graphics/pokemon/basculegion/normal.pal @@ -1,19 +1,18 @@ JASC-PAL 0100 -16 -152 208 160 -48 140 88 -192 52 80 -160 164 160 -16 64 32 -16 16 16 -120 24 24 -248 164 200 -96 60 40 -224 228 224 -64 80 80 -32 48 56 -32 96 56 -248 80 120 -96 96 96 -56 84 72 +15 +153 211 165 +107 33 60 +229 24 105 +167 50 91 +29 29 29 +58 56 54 +73 95 84 +91 130 104 +45 57 51 +101 114 120 +151 170 174 +223 233 231 +255 255 255 +94 36 46 +244 156 190 diff --git a/graphics/pokemon/basculegion/shiny.pal b/graphics/pokemon/basculegion/shiny.pal old mode 100755 new mode 100644 index a725255a9b..19a2d1c1e9 --- a/graphics/pokemon/basculegion/shiny.pal +++ b/graphics/pokemon/basculegion/shiny.pal @@ -1,19 +1,18 @@ JASC-PAL 0100 -16 -152 208 160 -96 144 48 -144 72 176 -160 164 160 -16 64 32 -16 16 16 -88 36 112 -224 176 240 -96 60 40 -224 228 224 -60 82 76 -32 48 56 -72 108 56 -184 84 232 -96 96 96 -56 84 72 +15 +153 211 165 +107 33 60 +190 42 234 +128 41 165 +29 29 29 +58 56 54 +71 120 74 +113 187 104 +45 57 51 +101 114 120 +151 170 174 +223 233 231 +255 255 255 +94 36 46 +221 143 243 diff --git a/graphics/pokemon/baxcalibur/back.png b/graphics/pokemon/baxcalibur/back.png new file mode 100755 index 0000000000..241e048d7a Binary files /dev/null and b/graphics/pokemon/baxcalibur/back.png differ diff --git a/graphics/pokemon/baxcalibur/front.png b/graphics/pokemon/baxcalibur/front.png new file mode 100755 index 0000000000..e706fa393c Binary files /dev/null and b/graphics/pokemon/baxcalibur/front.png differ diff --git a/graphics/pokemon/baxcalibur/icon.png b/graphics/pokemon/baxcalibur/icon.png new file mode 100755 index 0000000000..1aee317d5c Binary files /dev/null and b/graphics/pokemon/baxcalibur/icon.png differ diff --git a/graphics/pokemon/baxcalibur/normal.pal b/graphics/pokemon/baxcalibur/normal.pal new file mode 100755 index 0000000000..6abbb8785d --- /dev/null +++ b/graphics/pokemon/baxcalibur/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +80 112 112 +224 252 248 +184 224 224 +32 40 48 +48 64 80 +120 180 200 +136 100 24 +240 212 72 +40 44 40 +64 96 112 +96 16 32 +144 24 48 +216 36 72 +0 0 0 diff --git a/graphics/pokemon/baxcalibur/shiny.pal b/graphics/pokemon/baxcalibur/shiny.pal new file mode 100755 index 0000000000..0a0c6145df --- /dev/null +++ b/graphics/pokemon/baxcalibur/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 16 16 +46 95 110 +224 252 248 +187 230 226 +45 76 85 +64 109 121 +100 192 198 +136 100 24 +240 212 72 +40 44 40 +72 154 164 +128 44 98 +144 24 48 +255 104 209 +0 0 0 diff --git a/graphics/pokemon/bellibolt/back.png b/graphics/pokemon/bellibolt/back.png new file mode 100644 index 0000000000..487953dce7 Binary files /dev/null and b/graphics/pokemon/bellibolt/back.png differ diff --git a/graphics/pokemon/bellibolt/front.png b/graphics/pokemon/bellibolt/front.png new file mode 100644 index 0000000000..9264c3fcbc Binary files /dev/null and b/graphics/pokemon/bellibolt/front.png differ diff --git a/graphics/pokemon/bellibolt/icon.png b/graphics/pokemon/bellibolt/icon.png new file mode 100755 index 0000000000..865c18ad0e Binary files /dev/null and b/graphics/pokemon/bellibolt/icon.png differ diff --git a/graphics/pokemon/bellibolt/normal.pal b/graphics/pokemon/bellibolt/normal.pal new file mode 100644 index 0000000000..293a2f0522 --- /dev/null +++ b/graphics/pokemon/bellibolt/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +184 88 64 +120 48 40 +248 152 72 +112 104 104 +248 208 128 +248 248 248 +168 168 160 +56 176 152 +16 112 112 +112 216 184 +248 216 24 +16 16 16 +8 64 72 +80 72 64 +184 160 64 diff --git a/graphics/pokemon/bellibolt/shiny.pal b/graphics/pokemon/bellibolt/shiny.pal new file mode 100644 index 0000000000..3f55dc1096 --- /dev/null +++ b/graphics/pokemon/bellibolt/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +184 88 64 +120 48 40 +248 152 72 +112 104 104 +248 208 128 +248 248 248 +168 168 160 +248 248 136 +200 168 72 +248 248 200 +248 216 24 +16 16 16 +120 80 24 +80 72 64 +184 160 64 diff --git a/graphics/pokemon/blastoise/gigantamax/back.png b/graphics/pokemon/blastoise/gigantamax/back.png new file mode 100644 index 0000000000..cd9d607f55 Binary files /dev/null and b/graphics/pokemon/blastoise/gigantamax/back.png differ diff --git a/graphics/pokemon/blastoise/gigantamax/front.png b/graphics/pokemon/blastoise/gigantamax/front.png new file mode 100644 index 0000000000..c4608e67dd Binary files /dev/null and b/graphics/pokemon/blastoise/gigantamax/front.png differ diff --git a/graphics/pokemon/blastoise/gigantamax/icon.png b/graphics/pokemon/blastoise/gigantamax/icon.png new file mode 100644 index 0000000000..9761dfbe53 Binary files /dev/null and b/graphics/pokemon/blastoise/gigantamax/icon.png differ diff --git a/graphics/pokemon/blastoise/gigantamax/normal.pal b/graphics/pokemon/blastoise/gigantamax/normal.pal new file mode 100644 index 0000000000..2b7f1254f5 --- /dev/null +++ b/graphics/pokemon/blastoise/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +8 58 99 +16 16 16 +90 140 206 +33 99 173 +205 205 213 +74 74 74 +53 46 39 +199 84 53 +148 148 148 +253 253 253 +108 232 214 +73 65 54 +95 86 71 +148 173 230 +206 206 214 diff --git a/graphics/pokemon/blastoise/gigantamax/shiny.pal b/graphics/pokemon/blastoise/gigantamax/shiny.pal new file mode 100644 index 0000000000..f7906a9da8 --- /dev/null +++ b/graphics/pokemon/blastoise/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +115 82 148 +16 16 16 +213 180 246 +164 123 189 +205 205 213 +74 74 74 +66 53 42 +199 84 53 +148 148 148 +253 253 253 +108 232 214 +92 75 62 +140 126 83 +238 222 255 +206 206 214 diff --git a/graphics/pokemon/bombirdier/back.png b/graphics/pokemon/bombirdier/back.png new file mode 100644 index 0000000000..eb45117013 Binary files /dev/null and b/graphics/pokemon/bombirdier/back.png differ diff --git a/graphics/pokemon/bombirdier/front.png b/graphics/pokemon/bombirdier/front.png new file mode 100644 index 0000000000..97159715f2 Binary files /dev/null and b/graphics/pokemon/bombirdier/front.png differ diff --git a/graphics/pokemon/bombirdier/icon.png b/graphics/pokemon/bombirdier/icon.png new file mode 100755 index 0000000000..06bcf71c86 Binary files /dev/null and b/graphics/pokemon/bombirdier/icon.png differ diff --git a/graphics/pokemon/bombirdier/normal.pal b/graphics/pokemon/bombirdier/normal.pal new file mode 100644 index 0000000000..21129ad828 --- /dev/null +++ b/graphics/pokemon/bombirdier/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +52 41 48 +74 57 66 +15 15 15 +38 210 161 +102 91 96 +185 170 175 +239 227 225 +147 125 133 +80 29 37 +77 74 75 +230 76 98 +255 251 255 +153 62 73 +167 171 167 +123 130 123 diff --git a/graphics/pokemon/bombirdier/shiny.pal b/graphics/pokemon/bombirdier/shiny.pal new file mode 100644 index 0000000000..7c57659ed5 --- /dev/null +++ b/graphics/pokemon/bombirdier/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +52 41 48 +74 57 66 +15 15 15 +38 210 161 +102 91 96 +185 170 175 +239 227 225 +147 125 133 +80 29 37 +160 74 85 +171 167 168 +255 251 255 +136 134 133 +167 171 167 +123 130 123 diff --git a/graphics/pokemon/brambleghast/back.png b/graphics/pokemon/brambleghast/back.png new file mode 100644 index 0000000000..fca81b275e Binary files /dev/null and b/graphics/pokemon/brambleghast/back.png differ diff --git a/graphics/pokemon/brambleghast/front.png b/graphics/pokemon/brambleghast/front.png new file mode 100644 index 0000000000..f1715a6f06 Binary files /dev/null and b/graphics/pokemon/brambleghast/front.png differ diff --git a/graphics/pokemon/brambleghast/icon.png b/graphics/pokemon/brambleghast/icon.png new file mode 100755 index 0000000000..e8f273b095 Binary files /dev/null and b/graphics/pokemon/brambleghast/icon.png differ diff --git a/graphics/pokemon/brambleghast/normal.pal b/graphics/pokemon/brambleghast/normal.pal new file mode 100644 index 0000000000..759a5f138f --- /dev/null +++ b/graphics/pokemon/brambleghast/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 72 88 +192 152 184 +112 88 56 +64 40 32 +16 16 16 +128 104 128 +200 176 104 +152 120 80 +168 104 64 +128 72 48 +96 40 48 +32 32 40 +248 72 32 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/brambleghast/shiny.pal b/graphics/pokemon/brambleghast/shiny.pal new file mode 100644 index 0000000000..f10cd2c257 --- /dev/null +++ b/graphics/pokemon/brambleghast/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 72 88 +192 152 184 +128 120 96 +56 48 32 +16 16 16 +128 104 128 +216 216 176 +160 152 120 +184 160 104 +128 104 72 +64 56 32 +32 32 40 +240 176 136 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bramblin/back.png b/graphics/pokemon/bramblin/back.png new file mode 100644 index 0000000000..67bf858c39 Binary files /dev/null and b/graphics/pokemon/bramblin/back.png differ diff --git a/graphics/pokemon/bramblin/front.png b/graphics/pokemon/bramblin/front.png new file mode 100644 index 0000000000..80fde28367 Binary files /dev/null and b/graphics/pokemon/bramblin/front.png differ diff --git a/graphics/pokemon/bramblin/icon.png b/graphics/pokemon/bramblin/icon.png new file mode 100755 index 0000000000..ff2d15599e Binary files /dev/null and b/graphics/pokemon/bramblin/icon.png differ diff --git a/graphics/pokemon/bramblin/normal.pal b/graphics/pokemon/bramblin/normal.pal new file mode 100644 index 0000000000..941b8ef20f --- /dev/null +++ b/graphics/pokemon/bramblin/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +144 104 64 +96 64 32 +176 136 80 +200 160 96 +128 80 56 +16 16 16 +208 112 80 +184 88 56 +136 96 80 +72 56 48 +104 80 72 +128 80 56 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/bramblin/shiny.pal b/graphics/pokemon/bramblin/shiny.pal new file mode 100644 index 0000000000..8d65eaa1b0 --- /dev/null +++ b/graphics/pokemon/bramblin/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 112 72 +80 72 56 +152 152 104 +208 208 152 +168 96 56 +16 16 16 +208 112 80 +224 128 80 +112 120 72 +48 48 24 +80 96 56 +128 80 56 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/brute_bonnet/back.png b/graphics/pokemon/brute_bonnet/back.png new file mode 100644 index 0000000000..b73cb1589e Binary files /dev/null and b/graphics/pokemon/brute_bonnet/back.png differ diff --git a/graphics/pokemon/brute_bonnet/front.png b/graphics/pokemon/brute_bonnet/front.png new file mode 100644 index 0000000000..46347100a2 Binary files /dev/null and b/graphics/pokemon/brute_bonnet/front.png differ diff --git a/graphics/pokemon/brute_bonnet/icon.png b/graphics/pokemon/brute_bonnet/icon.png new file mode 100755 index 0000000000..052517c12d Binary files /dev/null and b/graphics/pokemon/brute_bonnet/icon.png differ diff --git a/graphics/pokemon/brute_bonnet/normal.pal b/graphics/pokemon/brute_bonnet/normal.pal new file mode 100644 index 0000000000..951da388b7 --- /dev/null +++ b/graphics/pokemon/brute_bonnet/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +227 45 45 +98 72 65 +57 105 65 +213 105 139 +139 242 139 +65 48 49 +255 220 100 +106 153 115 +0 0 0 +238 182 205 +115 36 32 +32 32 32 +156 149 131 +41 24 24 +205 198 197 diff --git a/graphics/pokemon/brute_bonnet/shiny.pal b/graphics/pokemon/brute_bonnet/shiny.pal new file mode 100644 index 0000000000..e0702cf002 --- /dev/null +++ b/graphics/pokemon/brute_bonnet/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +115 82 222 +82 74 65 +57 105 65 +213 105 139 +139 242 139 +49 49 49 +255 220 100 +106 153 115 +0 0 0 +238 182 205 +82 65 164 +32 32 32 +164 156 123 +41 24 24 +213 205 172 diff --git a/graphics/pokemon/bunnelby/anim_front.png b/graphics/pokemon/bunnelby/anim_front.png index 128653b687..f84baa06dd 100644 Binary files a/graphics/pokemon/bunnelby/anim_front.png and b/graphics/pokemon/bunnelby/anim_front.png differ diff --git a/graphics/pokemon/bunnelby/back.png b/graphics/pokemon/bunnelby/back.png index 2b7cc3b850..cabd2fa425 100644 Binary files a/graphics/pokemon/bunnelby/back.png and b/graphics/pokemon/bunnelby/back.png differ diff --git a/graphics/pokemon/bunnelby/normal.pal b/graphics/pokemon/bunnelby/normal.pal index ea42a0cff6..493d820fcb 100644 --- a/graphics/pokemon/bunnelby/normal.pal +++ b/graphics/pokemon/bunnelby/normal.pal @@ -13,7 +13,7 @@ JASC-PAL 136 136 120 200 192 192 248 248 248 -80 40 16 +8 8 8 0 0 0 0 0 0 0 0 0 diff --git a/graphics/pokemon/bunnelby/shiny.pal b/graphics/pokemon/bunnelby/shiny.pal index 2c2491ab6a..19eec650e1 100644 --- a/graphics/pokemon/bunnelby/shiny.pal +++ b/graphics/pokemon/bunnelby/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 80 96 +153 153 153 +230 230 230 +199 199 199 +8 8 8 +66 66 66 +125 125 125 +152 73 37 +214 111 60 +97 97 97 +186 186 186 248 248 248 -200 200 200 -0 0 0 -56 56 56 -160 160 144 -144 104 80 -240 184 168 -120 120 112 -200 192 192 -248 248 248 -160 152 152 -88 24 32 -0 0 0 -0 0 0 +158 0 0 +255 0 255 +255 0 255 +255 0 255 diff --git a/graphics/pokemon/butterfree/gigantamax/back.png b/graphics/pokemon/butterfree/gigantamax/back.png new file mode 100644 index 0000000000..a9bce5aaf1 Binary files /dev/null and b/graphics/pokemon/butterfree/gigantamax/back.png differ diff --git a/graphics/pokemon/butterfree/gigantamax/front.png b/graphics/pokemon/butterfree/gigantamax/front.png new file mode 100644 index 0000000000..0fc4c4c70f Binary files /dev/null and b/graphics/pokemon/butterfree/gigantamax/front.png differ diff --git a/graphics/pokemon/butterfree/gigantamax/icon.png b/graphics/pokemon/butterfree/gigantamax/icon.png new file mode 100644 index 0000000000..9b18cd6e8d Binary files /dev/null and b/graphics/pokemon/butterfree/gigantamax/icon.png differ diff --git a/graphics/pokemon/butterfree/gigantamax/normal.pal b/graphics/pokemon/butterfree/gigantamax/normal.pal new file mode 100644 index 0000000000..17ad51006f --- /dev/null +++ b/graphics/pokemon/butterfree/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 194 14 +134 122 150 +100 87 122 +70 52 92 +106 189 205 +82 123 197 +179 242 219 +238 238 255 +189 189 230 +140 206 188 +146 233 150 +39 167 119 +255 156 180 +230 98 131 +222 49 49 +16 16 16 diff --git a/graphics/pokemon/butterfree/gigantamax/shiny.pal b/graphics/pokemon/butterfree/gigantamax/shiny.pal new file mode 100644 index 0000000000..3d3e6ed267 --- /dev/null +++ b/graphics/pokemon/butterfree/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 194 14 +131 131 189 +115 98 172 +90 74 115 +246 139 131 +222 82 98 +179 242 219 +238 238 255 +189 189 230 +140 206 188 +146 233 150 +39 167 119 +156 255 156 +115 238 115 +32 213 24 +16 16 16 diff --git a/graphics/pokemon/capsakid/back.png b/graphics/pokemon/capsakid/back.png new file mode 100755 index 0000000000..8b04dd8245 Binary files /dev/null and b/graphics/pokemon/capsakid/back.png differ diff --git a/graphics/pokemon/capsakid/front.png b/graphics/pokemon/capsakid/front.png new file mode 100755 index 0000000000..aaa9702e67 Binary files /dev/null and b/graphics/pokemon/capsakid/front.png differ diff --git a/graphics/pokemon/capsakid/icon.png b/graphics/pokemon/capsakid/icon.png new file mode 100755 index 0000000000..ede6dc9c0c Binary files /dev/null and b/graphics/pokemon/capsakid/icon.png differ diff --git a/graphics/pokemon/capsakid/normal.pal b/graphics/pokemon/capsakid/normal.pal new file mode 100755 index 0000000000..adde45a7b2 --- /dev/null +++ b/graphics/pokemon/capsakid/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 72 56 +112 116 112 +176 168 152 +80 152 104 +208 220 192 +16 16 16 +120 184 120 +48 76 56 +88 132 96 +144 196 144 +40 48 40 +240 152 0 +64 104 80 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/capsakid/shiny.pal b/graphics/pokemon/capsakid/shiny.pal new file mode 100755 index 0000000000..7cfffb9748 --- /dev/null +++ b/graphics/pokemon/capsakid/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 72 56 +110 126 114 +170 184 176 +119 164 198 +232 244 246 +16 16 16 +217 216 147 +104 97 60 +158 154 87 +230 228 167 +40 48 40 +224 135 8 +66 115 147 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/centiskorch/gigantamax/back.png b/graphics/pokemon/centiskorch/gigantamax/back.png new file mode 100644 index 0000000000..2279b3a065 Binary files /dev/null and b/graphics/pokemon/centiskorch/gigantamax/back.png differ diff --git a/graphics/pokemon/centiskorch/gigantamax/front.png b/graphics/pokemon/centiskorch/gigantamax/front.png new file mode 100644 index 0000000000..a35501c2bb Binary files /dev/null and b/graphics/pokemon/centiskorch/gigantamax/front.png differ diff --git a/graphics/pokemon/centiskorch/gigantamax/icon.png b/graphics/pokemon/centiskorch/gigantamax/icon.png new file mode 100644 index 0000000000..811a3c4991 Binary files /dev/null and b/graphics/pokemon/centiskorch/gigantamax/icon.png differ diff --git a/graphics/pokemon/centiskorch/gigantamax/normal.pal b/graphics/pokemon/centiskorch/gigantamax/normal.pal new file mode 100644 index 0000000000..5ce935aa18 --- /dev/null +++ b/graphics/pokemon/centiskorch/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +215 44 0 +255 155 27 +64 30 33 +255 247 0 +16 16 16 +85 19 7 +115 66 57 +82 40 41 +205 45 26 +255 90 66 +255 213 0 +156 27 15 +251 251 251 +148 21 40 +15 15 15 diff --git a/graphics/pokemon/centiskorch/gigantamax/shiny.pal b/graphics/pokemon/centiskorch/gigantamax/shiny.pal new file mode 100644 index 0000000000..26404703ab --- /dev/null +++ b/graphics/pokemon/centiskorch/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +215 44 0 +255 155 27 +6 31 51 +255 247 0 +16 16 16 +85 19 7 +43 94 109 +20 54 73 +205 45 26 +255 90 66 +255 213 0 +156 27 15 +251 251 251 +148 21 40 +15 15 15 diff --git a/graphics/pokemon/ceruledge/back.png b/graphics/pokemon/ceruledge/back.png new file mode 100644 index 0000000000..962908384b Binary files /dev/null and b/graphics/pokemon/ceruledge/back.png differ diff --git a/graphics/pokemon/ceruledge/front.png b/graphics/pokemon/ceruledge/front.png new file mode 100644 index 0000000000..fdd08d47cf Binary files /dev/null and b/graphics/pokemon/ceruledge/front.png differ diff --git a/graphics/pokemon/ceruledge/icon.png b/graphics/pokemon/ceruledge/icon.png new file mode 100755 index 0000000000..7687030bd7 Binary files /dev/null and b/graphics/pokemon/ceruledge/icon.png differ diff --git a/graphics/pokemon/ceruledge/normal.pal b/graphics/pokemon/ceruledge/normal.pal new file mode 100644 index 0000000000..cf75997463 --- /dev/null +++ b/graphics/pokemon/ceruledge/normal.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +153 211 165 +198 90 222 +239 165 255 +132 156 222 +189 214 255 +57 99 189 +49 49 99 +66 66 140 +99 90 165 +57 49 41 +16 16 16 +82 82 82 +247 239 247 +24 24 49 +239 74 173 diff --git a/graphics/pokemon/ceruledge/shiny.pal b/graphics/pokemon/ceruledge/shiny.pal new file mode 100644 index 0000000000..ccfe3845d9 --- /dev/null +++ b/graphics/pokemon/ceruledge/shiny.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +153 211 165 +198 90 222 +239 165 255 +132 156 222 +189 214 255 +57 99 189 +49 49 99 +66 66 140 +99 90 165 +57 49 41 +16 16 16 +82 82 82 +255 255 0 +24 24 49 +255 24 74 diff --git a/graphics/pokemon/cetitan/back.png b/graphics/pokemon/cetitan/back.png new file mode 100644 index 0000000000..45e6478c17 Binary files /dev/null and b/graphics/pokemon/cetitan/back.png differ diff --git a/graphics/pokemon/cetitan/front.png b/graphics/pokemon/cetitan/front.png new file mode 100644 index 0000000000..20fe0f0dd1 Binary files /dev/null and b/graphics/pokemon/cetitan/front.png differ diff --git a/graphics/pokemon/cetitan/icon.png b/graphics/pokemon/cetitan/icon.png new file mode 100755 index 0000000000..81cf0a3e24 Binary files /dev/null and b/graphics/pokemon/cetitan/icon.png differ diff --git a/graphics/pokemon/cetitan/normal.pal b/graphics/pokemon/cetitan/normal.pal new file mode 100644 index 0000000000..c84f2f8d43 --- /dev/null +++ b/graphics/pokemon/cetitan/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 120 120 +248 248 248 +80 64 72 +240 144 200 +184 184 184 +192 96 152 +160 64 96 +16 16 16 +120 112 128 +56 56 64 +208 208 216 +160 160 168 +128 120 136 +88 88 96 +248 248 248 diff --git a/graphics/pokemon/cetitan/shiny.pal b/graphics/pokemon/cetitan/shiny.pal new file mode 100644 index 0000000000..16e5456b3e --- /dev/null +++ b/graphics/pokemon/cetitan/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 56 64 +88 104 112 +32 40 48 +240 128 80 +72 80 88 +176 72 48 +128 40 40 +16 16 16 +120 112 128 +56 56 64 +208 208 216 +160 160 168 +160 160 168 +120 112 128 +248 248 248 diff --git a/graphics/pokemon/cetoddle/back.png b/graphics/pokemon/cetoddle/back.png new file mode 100644 index 0000000000..007fbfb426 Binary files /dev/null and b/graphics/pokemon/cetoddle/back.png differ diff --git a/graphics/pokemon/cetoddle/front.png b/graphics/pokemon/cetoddle/front.png new file mode 100644 index 0000000000..5f15a6a857 Binary files /dev/null and b/graphics/pokemon/cetoddle/front.png differ diff --git a/graphics/pokemon/cetoddle/icon.png b/graphics/pokemon/cetoddle/icon.png new file mode 100755 index 0000000000..330b5c56d2 Binary files /dev/null and b/graphics/pokemon/cetoddle/icon.png differ diff --git a/graphics/pokemon/cetoddle/normal.pal b/graphics/pokemon/cetoddle/normal.pal new file mode 100644 index 0000000000..340803e0a2 --- /dev/null +++ b/graphics/pokemon/cetoddle/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 88 128 +48 48 80 +240 240 240 +200 200 216 +152 152 184 +232 136 176 +152 80 120 +248 248 248 +16 16 16 +72 72 72 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cetoddle/shiny.pal b/graphics/pokemon/cetoddle/shiny.pal new file mode 100644 index 0000000000..bd3f3bec79 --- /dev/null +++ b/graphics/pokemon/cetoddle/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 72 88 +40 40 56 +152 152 160 +136 136 152 +112 112 144 +240 128 80 +184 80 56 +248 248 248 +16 16 16 +72 72 72 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/chansey/anim_front.png b/graphics/pokemon/chansey/anim_front.png index 2e4e2f573f..f2eec2ca77 100644 Binary files a/graphics/pokemon/chansey/anim_front.png and b/graphics/pokemon/chansey/anim_front.png differ diff --git a/graphics/pokemon/chansey/back.png b/graphics/pokemon/chansey/back.png index 87e70c9a2f..79fbeaa59e 100644 Binary files a/graphics/pokemon/chansey/back.png and b/graphics/pokemon/chansey/back.png differ diff --git a/graphics/pokemon/chansey/normal.pal b/graphics/pokemon/chansey/normal.pal index 698af3b616..0e50f85c24 100644 --- a/graphics/pokemon/chansey/normal.pal +++ b/graphics/pokemon/chansey/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -230 123 131 -139 65 65 -255 230 230 -255 213 222 -139 65 65 -238 123 123 -246 164 156 -248 248 248 -16 16 16 -139 65 65 -246 164 180 +255 255 255 +230 222 189 172 164 115 115 106 74 -230 222 189 -0 0 0 +238 123 123 +225 96 96 +16 16 16 +139 65 65 +246 164 156 +238 123 123 +255 230 230 +255 213 222 +246 164 180 +230 123 131 +139 65 65 diff --git a/graphics/pokemon/chansey/shiny.pal b/graphics/pokemon/chansey/shiny.pal index 219c13d1d0..a919547a79 100644 --- a/graphics/pokemon/chansey/shiny.pal +++ b/graphics/pokemon/chansey/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -192 160 88 -112 88 56 -248 240 224 -248 232 200 -80 112 56 -128 176 64 -152 216 72 -248 248 248 +152 160 208 +255 255 255 +230 222 189 +172 164 115 +115 106 74 +141 215 40 +106 164 32 16 16 16 -80 112 56 -232 200 144 -168 160 112 -112 104 72 -224 216 184 -0 0 0 +88 128 64 +148 222 49 +106 164 32 +255 246 230 +255 238 205 +238 205 148 +213 172 90 +139 106 65 diff --git a/graphics/pokemon/charcadet/back.png b/graphics/pokemon/charcadet/back.png new file mode 100644 index 0000000000..01ead6b281 Binary files /dev/null and b/graphics/pokemon/charcadet/back.png differ diff --git a/graphics/pokemon/charcadet/front.png b/graphics/pokemon/charcadet/front.png new file mode 100644 index 0000000000..c90c6a2db0 Binary files /dev/null and b/graphics/pokemon/charcadet/front.png differ diff --git a/graphics/pokemon/charcadet/icon.png b/graphics/pokemon/charcadet/icon.png new file mode 100755 index 0000000000..f62d09e918 Binary files /dev/null and b/graphics/pokemon/charcadet/icon.png differ diff --git a/graphics/pokemon/charcadet/normal.pal b/graphics/pokemon/charcadet/normal.pal new file mode 100644 index 0000000000..eae60870da --- /dev/null +++ b/graphics/pokemon/charcadet/normal.pal @@ -0,0 +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 diff --git a/graphics/pokemon/charcadet/shiny.pal b/graphics/pokemon/charcadet/shiny.pal new file mode 100644 index 0000000000..30c3010bd7 --- /dev/null +++ b/graphics/pokemon/charcadet/shiny.pal @@ -0,0 +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 diff --git a/graphics/pokemon/charizard/gigantamax/back.png b/graphics/pokemon/charizard/gigantamax/back.png new file mode 100644 index 0000000000..508e18c549 Binary files /dev/null and b/graphics/pokemon/charizard/gigantamax/back.png differ diff --git a/graphics/pokemon/charizard/gigantamax/front.png b/graphics/pokemon/charizard/gigantamax/front.png new file mode 100644 index 0000000000..c1f43003ac Binary files /dev/null and b/graphics/pokemon/charizard/gigantamax/front.png differ diff --git a/graphics/pokemon/charizard/gigantamax/icon.png b/graphics/pokemon/charizard/gigantamax/icon.png new file mode 100644 index 0000000000..68461c5032 Binary files /dev/null and b/graphics/pokemon/charizard/gigantamax/icon.png differ diff --git a/graphics/pokemon/charizard/gigantamax/normal.pal b/graphics/pokemon/charizard/gigantamax/normal.pal new file mode 100644 index 0000000000..533e9772e0 --- /dev/null +++ b/graphics/pokemon/charizard/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +255 66 0 +255 214 16 +247 165 16 +255 232 119 +16 16 16 +132 49 25 +239 132 41 +206 82 66 +252 252 252 +214 41 44 +239 181 90 +213 207 174 +162 54 43 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/charizard/gigantamax/shiny.pal b/graphics/pokemon/charizard/gigantamax/shiny.pal new file mode 100644 index 0000000000..bae527ee2e --- /dev/null +++ b/graphics/pokemon/charizard/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +255 66 0 +255 214 16 +247 165 16 +255 232 119 +16 16 16 +49 57 65 +131 123 148 +90 90 106 +252 252 252 +214 41 44 +169 163 183 +213 207 174 +66 66 82 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/cherrim/normal/anim_front.png b/graphics/pokemon/cherrim/anim_front.png similarity index 100% rename from graphics/pokemon/cherrim/normal/anim_front.png rename to graphics/pokemon/cherrim/anim_front.png diff --git a/graphics/pokemon/cherrim/normal/back.png b/graphics/pokemon/cherrim/back.png similarity index 100% rename from graphics/pokemon/cherrim/normal/back.png rename to graphics/pokemon/cherrim/back.png diff --git a/graphics/pokemon/cherrim/normal/normal.pal b/graphics/pokemon/cherrim/normal.pal similarity index 100% rename from graphics/pokemon/cherrim/normal/normal.pal rename to graphics/pokemon/cherrim/normal.pal diff --git a/graphics/pokemon/cherrim/normal/shiny.pal b/graphics/pokemon/cherrim/shiny.pal similarity index 100% rename from graphics/pokemon/cherrim/normal/shiny.pal rename to graphics/pokemon/cherrim/shiny.pal diff --git a/graphics/pokemon/chespin/anim_front.png b/graphics/pokemon/chespin/anim_front.png index 172c75ec20..319bf4de44 100644 Binary files a/graphics/pokemon/chespin/anim_front.png and b/graphics/pokemon/chespin/anim_front.png differ diff --git a/graphics/pokemon/chespin/back.png b/graphics/pokemon/chespin/back.png index 1cf511302f..27cbeab62a 100644 Binary files a/graphics/pokemon/chespin/back.png and b/graphics/pokemon/chespin/back.png differ diff --git a/graphics/pokemon/chespin/normal.pal b/graphics/pokemon/chespin/normal.pal index e3f7d17fb5..090aa15645 100644 --- a/graphics/pokemon/chespin/normal.pal +++ b/graphics/pokemon/chespin/normal.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -0 181 239 +152 208 160 74 99 25 16 16 16 165 214 74 diff --git a/graphics/pokemon/chespin/shiny.pal b/graphics/pokemon/chespin/shiny.pal index 58c22e9619..f0abc0c1b5 100644 --- a/graphics/pokemon/chespin/shiny.pal +++ b/graphics/pokemon/chespin/shiny.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -0 181 239 +152 208 160 99 8 8 16 16 16 222 41 58 diff --git a/graphics/pokemon/chi_yu/back.png b/graphics/pokemon/chi_yu/back.png new file mode 100644 index 0000000000..ff1f7c3729 Binary files /dev/null and b/graphics/pokemon/chi_yu/back.png differ diff --git a/graphics/pokemon/chi_yu/front.png b/graphics/pokemon/chi_yu/front.png new file mode 100644 index 0000000000..6a41c507a5 Binary files /dev/null and b/graphics/pokemon/chi_yu/front.png differ diff --git a/graphics/pokemon/chi_yu/icon.png b/graphics/pokemon/chi_yu/icon.png new file mode 100755 index 0000000000..1b922e696e Binary files /dev/null and b/graphics/pokemon/chi_yu/icon.png differ diff --git a/graphics/pokemon/chi_yu/normal.pal b/graphics/pokemon/chi_yu/normal.pal new file mode 100644 index 0000000000..368ffd90e6 --- /dev/null +++ b/graphics/pokemon/chi_yu/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +162 55 36 +244 52 47 +15 15 15 +243 94 56 +249 130 79 +240 167 85 +177 82 54 +252 245 155 +28 64 33 +193 196 189 +91 152 90 +131 184 132 +60 63 58 +72 116 71 +248 248 240 diff --git a/graphics/pokemon/chi_yu/shiny.pal b/graphics/pokemon/chi_yu/shiny.pal new file mode 100644 index 0000000000..e041f9654d --- /dev/null +++ b/graphics/pokemon/chi_yu/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +69 67 68 +94 94 94 +15 15 15 +89 128 162 +0 192 249 +124 197 231 +70 123 128 +186 254 253 +28 64 33 +193 196 189 +91 152 90 +131 184 132 +60 63 58 +72 116 71 +248 248 240 diff --git a/graphics/pokemon/chien_pao/back.png b/graphics/pokemon/chien_pao/back.png new file mode 100644 index 0000000000..045e2c214a Binary files /dev/null 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 new file mode 100644 index 0000000000..b871128b41 Binary files /dev/null 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 new file mode 100755 index 0000000000..02d7bbe93d Binary files /dev/null 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 new file mode 100644 index 0000000000..e5dca7fc5c --- /dev/null +++ b/graphics/pokemon/chien_pao/normal.pal @@ -0,0 +1,19 @@ +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 diff --git a/graphics/pokemon/chien_pao/shiny.pal b/graphics/pokemon/chien_pao/shiny.pal new file mode 100644 index 0000000000..a0e08cb821 --- /dev/null +++ b/graphics/pokemon/chien_pao/shiny.pal @@ -0,0 +1,19 @@ +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 diff --git a/graphics/pokemon/cinderace/gigantamax/back.png b/graphics/pokemon/cinderace/gigantamax/back.png new file mode 100644 index 0000000000..b9e6b813de Binary files /dev/null and b/graphics/pokemon/cinderace/gigantamax/back.png differ diff --git a/graphics/pokemon/cinderace/gigantamax/front.png b/graphics/pokemon/cinderace/gigantamax/front.png new file mode 100644 index 0000000000..e3739d9062 Binary files /dev/null and b/graphics/pokemon/cinderace/gigantamax/front.png differ diff --git a/graphics/pokemon/cinderace/gigantamax/icon.png b/graphics/pokemon/cinderace/gigantamax/icon.png new file mode 100644 index 0000000000..3d1f1e4237 Binary files /dev/null and b/graphics/pokemon/cinderace/gigantamax/icon.png differ diff --git a/graphics/pokemon/cinderace/gigantamax/normal.pal b/graphics/pokemon/cinderace/gigantamax/normal.pal new file mode 100644 index 0000000000..a1782790ab --- /dev/null +++ b/graphics/pokemon/cinderace/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +125 118 121 +16 16 16 +190 182 183 +115 26 13 +175 39 20 +254 226 90 +235 93 36 +254 238 160 +237 151 35 +244 201 28 +104 85 25 +7 33 69 +0 65 148 +248 248 248 +252 252 252 diff --git a/graphics/pokemon/cinderace/gigantamax/shiny.pal b/graphics/pokemon/cinderace/gigantamax/shiny.pal new file mode 100644 index 0000000000..e4454df011 --- /dev/null +++ b/graphics/pokemon/cinderace/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +80 77 73 +16 16 16 +136 133 128 +118 50 8 +180 75 12 +254 226 90 +228 119 19 +254 238 160 +237 151 35 +244 201 28 +104 85 25 +132 120 120 +252 252 252 +179 186 175 +254 254 254 diff --git a/graphics/pokemon/clodsire/back.png b/graphics/pokemon/clodsire/back.png new file mode 100755 index 0000000000..64132a060f Binary files /dev/null and b/graphics/pokemon/clodsire/back.png differ diff --git a/graphics/pokemon/clodsire/front.png b/graphics/pokemon/clodsire/front.png new file mode 100755 index 0000000000..2722b7eb70 Binary files /dev/null and b/graphics/pokemon/clodsire/front.png differ diff --git a/graphics/pokemon/clodsire/icon.png b/graphics/pokemon/clodsire/icon.png new file mode 100755 index 0000000000..09fa007c68 Binary files /dev/null and b/graphics/pokemon/clodsire/icon.png differ diff --git a/graphics/pokemon/clodsire/normal.pal b/graphics/pokemon/clodsire/normal.pal new file mode 100755 index 0000000000..c7d36df32c --- /dev/null +++ b/graphics/pokemon/clodsire/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +64 60 48 +128 108 96 +96 80 72 +48 40 32 +16 16 16 +184 160 160 +208 208 208 +40 36 32 +152 120 120 +80 68 72 +104 52 56 +176 88 104 +248 140 160 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/clodsire/shiny.pal b/graphics/pokemon/clodsire/shiny.pal new file mode 100755 index 0000000000..fcf3c9dc23 --- /dev/null +++ b/graphics/pokemon/clodsire/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +74 67 90 +127 116 143 +107 97 124 +46 40 44 +16 16 16 +160 158 197 +205 180 170 +40 36 32 +127 127 157 +87 85 112 +104 52 56 +176 88 104 +248 140 160 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/cloyster/anim_front.png b/graphics/pokemon/cloyster/anim_front.png index bce084388f..6e1ed03508 100644 Binary files a/graphics/pokemon/cloyster/anim_front.png and b/graphics/pokemon/cloyster/anim_front.png differ diff --git a/graphics/pokemon/cloyster/back.png b/graphics/pokemon/cloyster/back.png index 8c038d83c8..965be563b1 100644 Binary files a/graphics/pokemon/cloyster/back.png and b/graphics/pokemon/cloyster/back.png differ diff --git a/graphics/pokemon/cloyster/normal.pal b/graphics/pokemon/cloyster/normal.pal index 725b268096..d9d8ed4ce8 100644 --- a/graphics/pokemon/cloyster/normal.pal +++ b/graphics/pokemon/cloyster/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -123 82 131 213 189 238 172 123 189 +148 98 180 +123 82 131 74 32 82 -16 16 16 -197 197 197 -65 65 65 -248 248 248 -148 148 148 -98 98 98 -82 41 90 +164 123 189 131 90 164 106 65 131 -164 123 189 -120 96 176 +82 41 90 +197 197 197 +148 148 148 +98 98 98 +65 65 65 +16 16 16 +255 255 255 diff --git a/graphics/pokemon/cloyster/shiny.pal b/graphics/pokemon/cloyster/shiny.pal index da28a9df86..ad5c2b8f6a 100644 --- a/graphics/pokemon/cloyster/shiny.pal +++ b/graphics/pokemon/cloyster/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -48 96 152 -152 200 248 -104 152 208 -16 64 112 +139 197 255 +90 156 230 +98 123 213 +41 98 172 +0 57 131 +164 123 189 +131 90 164 +106 65 131 +82 41 90 +197 197 197 +148 148 148 +98 98 98 +65 65 65 16 16 16 -192 192 192 -64 64 64 -248 248 248 -144 144 144 -96 96 96 -80 40 88 -128 88 160 -104 64 128 -128 88 160 -96 120 208 +255 255 255 diff --git a/graphics/pokemon/coalossal/gigantamax/back.png b/graphics/pokemon/coalossal/gigantamax/back.png new file mode 100644 index 0000000000..907768dc81 Binary files /dev/null and b/graphics/pokemon/coalossal/gigantamax/back.png differ diff --git a/graphics/pokemon/coalossal/gigantamax/front.png b/graphics/pokemon/coalossal/gigantamax/front.png new file mode 100644 index 0000000000..efd49d97e4 Binary files /dev/null and b/graphics/pokemon/coalossal/gigantamax/front.png differ diff --git a/graphics/pokemon/coalossal/gigantamax/icon.png b/graphics/pokemon/coalossal/gigantamax/icon.png new file mode 100644 index 0000000000..82a769dd95 Binary files /dev/null and b/graphics/pokemon/coalossal/gigantamax/icon.png differ diff --git a/graphics/pokemon/coalossal/gigantamax/normal.pal b/graphics/pokemon/coalossal/gigantamax/normal.pal new file mode 100644 index 0000000000..7c8a54041a --- /dev/null +++ b/graphics/pokemon/coalossal/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +31 20 24 +47 36 39 +16 16 16 +55 51 55 +37 35 37 +88 71 74 +69 50 51 +66 64 60 +84 81 76 +103 99 92 +120 55 59 +89 40 43 +243 120 67 +236 225 13 +234 70 73 diff --git a/graphics/pokemon/coalossal/gigantamax/shiny.pal b/graphics/pokemon/coalossal/gigantamax/shiny.pal new file mode 100644 index 0000000000..ef46ff2c3f --- /dev/null +++ b/graphics/pokemon/coalossal/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +31 20 24 +47 36 39 +16 16 16 +50 58 63 +34 36 38 +88 71 74 +69 50 51 +71 82 88 +88 112 124 +103 132 140 +120 55 59 +89 40 43 +243 120 67 +236 225 13 +234 70 73 diff --git a/graphics/pokemon/copperajah/gigantamax/back.png b/graphics/pokemon/copperajah/gigantamax/back.png new file mode 100644 index 0000000000..b42d0d32d1 Binary files /dev/null and b/graphics/pokemon/copperajah/gigantamax/back.png differ diff --git a/graphics/pokemon/copperajah/gigantamax/front.png b/graphics/pokemon/copperajah/gigantamax/front.png new file mode 100644 index 0000000000..9ba3497ae0 Binary files /dev/null and b/graphics/pokemon/copperajah/gigantamax/front.png differ diff --git a/graphics/pokemon/copperajah/gigantamax/icon.png b/graphics/pokemon/copperajah/gigantamax/icon.png new file mode 100644 index 0000000000..1da37e2463 Binary files /dev/null and b/graphics/pokemon/copperajah/gigantamax/icon.png differ diff --git a/graphics/pokemon/copperajah/gigantamax/normal.pal b/graphics/pokemon/copperajah/gigantamax/normal.pal new file mode 100644 index 0000000000..0a7db22185 --- /dev/null +++ b/graphics/pokemon/copperajah/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +135 67 44 +16 16 16 +192 106 49 +34 66 54 +23 47 38 +95 101 89 +238 230 233 +159 147 149 +57 110 99 +34 83 72 +242 143 58 +24 88 79 +53 193 167 +242 91 0 +26 140 120 diff --git a/graphics/pokemon/copperajah/gigantamax/shiny.pal b/graphics/pokemon/copperajah/gigantamax/shiny.pal new file mode 100644 index 0000000000..f80600011c --- /dev/null +++ b/graphics/pokemon/copperajah/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +141 100 46 +16 16 16 +198 155 50 +37 63 44 +25 45 30 +95 101 89 +238 230 233 +159 147 149 +62 105 80 +39 78 55 +243 202 62 +52 90 85 +100 166 154 +242 91 0 +65 127 116 diff --git a/graphics/pokemon/corviknight/gigantamax/back.png b/graphics/pokemon/corviknight/gigantamax/back.png new file mode 100644 index 0000000000..99ba005f37 Binary files /dev/null and b/graphics/pokemon/corviknight/gigantamax/back.png differ diff --git a/graphics/pokemon/corviknight/gigantamax/front.png b/graphics/pokemon/corviknight/gigantamax/front.png new file mode 100644 index 0000000000..63c05fb7ab Binary files /dev/null and b/graphics/pokemon/corviknight/gigantamax/front.png differ diff --git a/graphics/pokemon/corviknight/gigantamax/icon.png b/graphics/pokemon/corviknight/gigantamax/icon.png new file mode 100644 index 0000000000..8104a49ba6 Binary files /dev/null and b/graphics/pokemon/corviknight/gigantamax/icon.png differ diff --git a/graphics/pokemon/corviknight/gigantamax/normal.pal b/graphics/pokemon/corviknight/gigantamax/normal.pal new file mode 100644 index 0000000000..1edbbecf93 --- /dev/null +++ b/graphics/pokemon/corviknight/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +37 29 78 +16 16 16 +67 68 117 +122 24 95 +215 0 67 +48 51 96 +24 23 61 +62 61 109 +77 84 136 +44 43 88 +100 108 168 +78 65 80 +46 38 47 +255 118 160 +152 27 117 diff --git a/graphics/pokemon/corviknight/gigantamax/shiny.pal b/graphics/pokemon/corviknight/gigantamax/shiny.pal new file mode 100644 index 0000000000..94086e3215 --- /dev/null +++ b/graphics/pokemon/corviknight/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +53 53 53 +16 16 16 +131 131 131 +139 121 31 +238 214 0 +77 77 77 +21 21 23 +65 64 68 +144 144 144 +41 41 44 +188 188 188 +35 34 34 +8 8 8 +255 247 153 +179 166 107 diff --git a/graphics/pokemon/crocalor/back.png b/graphics/pokemon/crocalor/back.png new file mode 100644 index 0000000000..ceee90d945 Binary files /dev/null and b/graphics/pokemon/crocalor/back.png differ diff --git a/graphics/pokemon/crocalor/front.png b/graphics/pokemon/crocalor/front.png new file mode 100644 index 0000000000..99003b0e51 Binary files /dev/null and b/graphics/pokemon/crocalor/front.png differ diff --git a/graphics/pokemon/crocalor/icon.png b/graphics/pokemon/crocalor/icon.png new file mode 100755 index 0000000000..5ca0ee3f46 Binary files /dev/null and b/graphics/pokemon/crocalor/icon.png differ diff --git a/graphics/pokemon/crocalor/normal.pal b/graphics/pokemon/crocalor/normal.pal new file mode 100644 index 0000000000..f498e47a4a --- /dev/null +++ b/graphics/pokemon/crocalor/normal.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +153 211 165 +248 48 40 +248 208 56 +248 152 32 +248 248 216 +16 16 16 +96 80 56 +184 169 154 +64 64 64 +160 56 48 +216 160 40 +104 40 32 +232 56 56 +40 40 40 diff --git a/graphics/pokemon/crocalor/shiny.pal b/graphics/pokemon/crocalor/shiny.pal new file mode 100644 index 0000000000..abc0a7b57a --- /dev/null +++ b/graphics/pokemon/crocalor/shiny.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +153 211 165 +248 48 40 +248 208 56 +248 152 32 +248 248 216 +16 16 16 +96 80 56 +184 169 154 +113 71 65 +164 108 135 +216 160 40 +114 71 91 +206 149 165 +80 50 55 diff --git a/graphics/pokemon/cubone/anim_front.png b/graphics/pokemon/cubone/anim_front.png index e0f600c88c..d00e0c921b 100644 Binary files a/graphics/pokemon/cubone/anim_front.png and b/graphics/pokemon/cubone/anim_front.png differ diff --git a/graphics/pokemon/cubone/back.png b/graphics/pokemon/cubone/back.png index 0d867ae9de..cfebc2947d 100644 Binary files a/graphics/pokemon/cubone/back.png and b/graphics/pokemon/cubone/back.png differ diff --git a/graphics/pokemon/cubone/normal.pal b/graphics/pokemon/cubone/normal.pal index 8613b94a22..68797e7115 100644 --- a/graphics/pokemon/cubone/normal.pal +++ b/graphics/pokemon/cubone/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -139 131 106 -248 248 248 -41 41 41 -197 197 213 -82 82 57 -148 106 90 +222 189 106 197 156 74 +148 106 90 82 57 16 -200 168 136 -240 208 176 -224 224 232 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +255 255 255 +230 230 238 +197 197 213 +139 131 106 +82 82 57 +255 222 180 +246 213 180 +205 172 139 +255 0 255 +255 0 255 +16 16 16 diff --git a/graphics/pokemon/cubone/shiny.pal b/graphics/pokemon/cubone/shiny.pal index 710bbdf527..dfc82f90bd 100644 --- a/graphics/pokemon/cubone/shiny.pal +++ b/graphics/pokemon/cubone/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -128 128 112 -248 248 248 -16 16 16 -200 184 184 -72 80 72 -80 104 48 -112 144 80 -32 56 8 -184 160 136 -224 208 176 -224 216 216 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +152 160 208 +156 172 106 +106 139 74 +74 98 49 +32 65 0 +255 255 255 +230 222 222 +205 189 189 +131 131 115 +74 82 74 +238 222 180 +230 213 180 +189 164 139 +255 0 255 +255 0 255 +41 41 41 diff --git a/graphics/pokemon/cutiefly/anim_front.png b/graphics/pokemon/cutiefly/anim_front.png new file mode 100644 index 0000000000..3a3a17092f Binary files /dev/null and b/graphics/pokemon/cutiefly/anim_front.png differ diff --git a/graphics/pokemon/cutiefly/front.png b/graphics/pokemon/cutiefly/front.png deleted file mode 100644 index 9e57565222..0000000000 Binary files a/graphics/pokemon/cutiefly/front.png and /dev/null differ diff --git a/graphics/pokemon/cyclizar/back.png b/graphics/pokemon/cyclizar/back.png new file mode 100644 index 0000000000..4c1c41fc41 Binary files /dev/null and b/graphics/pokemon/cyclizar/back.png differ diff --git a/graphics/pokemon/cyclizar/front.png b/graphics/pokemon/cyclizar/front.png new file mode 100644 index 0000000000..01c9aada09 Binary files /dev/null and b/graphics/pokemon/cyclizar/front.png differ diff --git a/graphics/pokemon/cyclizar/icon.png b/graphics/pokemon/cyclizar/icon.png new file mode 100755 index 0000000000..64eba81963 Binary files /dev/null and b/graphics/pokemon/cyclizar/icon.png differ diff --git a/graphics/pokemon/cyclizar/normal.pal b/graphics/pokemon/cyclizar/normal.pal new file mode 100644 index 0000000000..2311b7bcbd --- /dev/null +++ b/graphics/pokemon/cyclizar/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 163 177 +56 74 53 +84 101 78 +28 41 22 +119 140 106 +16 16 16 +241 107 50 +185 183 179 +252 252 252 +96 125 109 +117 176 125 +34 35 40 +50 57 67 +52 69 61 +75 86 92 +226 233 215 diff --git a/graphics/pokemon/cyclizar/shiny.pal b/graphics/pokemon/cyclizar/shiny.pal new file mode 100644 index 0000000000..3c95c71e72 --- /dev/null +++ b/graphics/pokemon/cyclizar/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 163 177 +167 163 122 +248 238 187 +64 63 48 +255 254 232 +16 16 16 +85 215 253 +185 183 179 +252 252 252 +97 95 71 +138 138 112 +34 35 40 +50 57 67 +64 62 47 +75 86 92 +226 233 215 diff --git a/graphics/pokemon/dachsbun/back.png b/graphics/pokemon/dachsbun/back.png new file mode 100644 index 0000000000..b9187f43a4 Binary files /dev/null and b/graphics/pokemon/dachsbun/back.png differ diff --git a/graphics/pokemon/dachsbun/front.png b/graphics/pokemon/dachsbun/front.png new file mode 100644 index 0000000000..d745afdf84 Binary files /dev/null and b/graphics/pokemon/dachsbun/front.png differ diff --git a/graphics/pokemon/dachsbun/icon.png b/graphics/pokemon/dachsbun/icon.png new file mode 100644 index 0000000000..fe1caf375d Binary files /dev/null and b/graphics/pokemon/dachsbun/icon.png differ diff --git a/graphics/pokemon/dachsbun/normal.pal b/graphics/pokemon/dachsbun/normal.pal new file mode 100644 index 0000000000..d65c0def10 --- /dev/null +++ b/graphics/pokemon/dachsbun/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 56 24 +248 232 120 +80 32 24 +224 152 88 +16 16 16 +48 16 8 +200 88 40 +160 56 32 +248 176 80 +200 120 56 +216 144 112 +248 248 248 +200 128 96 +64 64 64 +0 0 0 diff --git a/graphics/pokemon/dachsbun/shiny.pal b/graphics/pokemon/dachsbun/shiny.pal new file mode 100644 index 0000000000..6ca0a88437 --- /dev/null +++ b/graphics/pokemon/dachsbun/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 72 48 +248 216 200 +96 40 24 +208 144 128 +16 16 16 +64 16 16 +216 128 104 +168 88 72 +248 200 160 +216 152 120 +216 144 112 +248 248 248 +200 128 96 +64 64 64 +0 0 0 diff --git a/graphics/pokemon/dartrix/anim_front.png b/graphics/pokemon/dartrix/anim_front.png new file mode 100644 index 0000000000..6adf234065 Binary files /dev/null and b/graphics/pokemon/dartrix/anim_front.png differ diff --git a/graphics/pokemon/dartrix/front.png b/graphics/pokemon/dartrix/front.png deleted file mode 100644 index 004fa43bdf..0000000000 Binary files a/graphics/pokemon/dartrix/front.png and /dev/null differ diff --git a/graphics/pokemon/decidueye/anim_front.png b/graphics/pokemon/decidueye/anim_front.png new file mode 100644 index 0000000000..f0d7e46bb1 Binary files /dev/null and b/graphics/pokemon/decidueye/anim_front.png differ diff --git a/graphics/pokemon/decidueye/front.png b/graphics/pokemon/decidueye/front.png deleted file mode 100644 index a13a33a2ae..0000000000 Binary files a/graphics/pokemon/decidueye/front.png and /dev/null differ diff --git a/graphics/pokemon/dewgong/anim_front.png b/graphics/pokemon/dewgong/anim_front.png index a1594dbd33..c2f3d4f775 100644 Binary files a/graphics/pokemon/dewgong/anim_front.png and b/graphics/pokemon/dewgong/anim_front.png differ diff --git a/graphics/pokemon/dewgong/back.png b/graphics/pokemon/dewgong/back.png index bcb7242e35..8b58e9fce0 100644 Binary files a/graphics/pokemon/dewgong/back.png and b/graphics/pokemon/dewgong/back.png differ diff --git a/graphics/pokemon/dewgong/normal.pal b/graphics/pokemon/dewgong/normal.pal index 15ddd52bd5..4165788517 100644 --- a/graphics/pokemon/dewgong/normal.pal +++ b/graphics/pokemon/dewgong/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 153 210 164 +230 230 246 +213 205 238 +156 164 189 106 123 164 65 82 98 -156 164 189 -230 230 246 -16 16 16 -213 205 238 -255 255 255 +213 41 32 +156 0 0 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +213 205 205 131 123 123 -112 40 40 -232 128 120 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +16 16 16 +255 255 255 diff --git a/graphics/pokemon/dewgong/shiny.pal b/graphics/pokemon/dewgong/shiny.pal index bc86361bc5..bc6d7e3458 100644 --- a/graphics/pokemon/dewgong/shiny.pal +++ b/graphics/pokemon/dewgong/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 153 210 164 +246 246 230 +213 213 197 +180 180 164 148 148 115 98 98 74 -180 180 164 -246 246 230 -16 16 16 -213 213 197 -255 255 255 +213 41 32 +156 0 0 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +213 205 205 131 123 123 -163 32 32 -219 83 78 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +16 16 16 +255 255 255 diff --git a/graphics/pokemon/dipplin/back.png b/graphics/pokemon/dipplin/back.png new file mode 100644 index 0000000000..d99452c70b Binary files /dev/null and b/graphics/pokemon/dipplin/back.png differ diff --git a/graphics/pokemon/dipplin/front.png b/graphics/pokemon/dipplin/front.png new file mode 100644 index 0000000000..6311f69be9 Binary files /dev/null and b/graphics/pokemon/dipplin/front.png differ diff --git a/graphics/pokemon/dipplin/icon.png b/graphics/pokemon/dipplin/icon.png new file mode 100644 index 0000000000..5fab863bd9 Binary files /dev/null and b/graphics/pokemon/dipplin/icon.png differ diff --git a/graphics/pokemon/dipplin/normal.pal b/graphics/pokemon/dipplin/normal.pal new file mode 100644 index 0000000000..3c68d0216a --- /dev/null +++ b/graphics/pokemon/dipplin/normal.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +0 183 239 +43 97 14 +164 216 74 +16 16 16 +95 171 29 +241 201 80 +198 169 83 +254 254 254 +101 16 12 +157 24 17 +222 81 69 +249 164 162 +36 77 28 +75 133 61 diff --git a/graphics/pokemon/dipplin/shiny.pal b/graphics/pokemon/dipplin/shiny.pal new file mode 100644 index 0000000000..81c9ff3c86 --- /dev/null +++ b/graphics/pokemon/dipplin/shiny.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +0 183 239 +43 97 14 +164 216 74 +16 16 16 +95 171 29 +241 201 80 +198 169 83 +254 254 254 +194 80 3 +221 143 0 +255 212 22 +249 164 162 +185 77 49 +255 118 66 diff --git a/graphics/pokemon/dodrio/anim_front.png b/graphics/pokemon/dodrio/anim_front.png index 5c970bf8e0..78906eb7e2 100644 Binary files a/graphics/pokemon/dodrio/anim_front.png and b/graphics/pokemon/dodrio/anim_front.png differ diff --git a/graphics/pokemon/dodrio/anim_frontf.png b/graphics/pokemon/dodrio/anim_frontf.png index c69ab602c0..04c02d0c0b 100644 Binary files a/graphics/pokemon/dodrio/anim_frontf.png and b/graphics/pokemon/dodrio/anim_frontf.png differ diff --git a/graphics/pokemon/dodrio/back.png b/graphics/pokemon/dodrio/back.png index a160615324..89e974f61c 100644 Binary files a/graphics/pokemon/dodrio/back.png and b/graphics/pokemon/dodrio/back.png differ diff --git a/graphics/pokemon/dodrio/backf.png b/graphics/pokemon/dodrio/backf.png index ad1f5bcf51..89fd4aa370 100644 Binary files a/graphics/pokemon/dodrio/backf.png and b/graphics/pokemon/dodrio/backf.png differ diff --git a/graphics/pokemon/dodrio/normal.pal b/graphics/pokemon/dodrio/normal.pal index 1569ba019d..d05aac145a 100644 --- a/graphics/pokemon/dodrio/normal.pal +++ b/graphics/pokemon/dodrio/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -65 65 65 -16 16 16 -131 131 131 +238 197 115 +205 156 82 164 123 90 90 65 32 -205 156 82 -248 248 248 -98 90 65 238 222 172 180 164 123 -180 65 65 -246 131 164 -180 65 65 -246 131 164 +98 90 65 255 213 230 +246 131 164 +180 65 65 +213 205 205 +131 131 131 +65 65 65 +0 0 0 +255 255 255 diff --git a/graphics/pokemon/dodrio/shiny.pal b/graphics/pokemon/dodrio/shiny.pal index f6278a269b..28e67a6f71 100644 --- a/graphics/pokemon/dodrio/shiny.pal +++ b/graphics/pokemon/dodrio/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -64 64 64 -16 16 16 -128 128 128 -112 136 24 -64 88 16 -160 184 48 -248 248 248 -152 104 24 -248 240 136 -216 160 64 -176 80 80 -240 128 160 -176 80 80 -240 128 160 -248 200 224 +152 160 208 +197 222 90 +164 189 49 +115 139 16 +74 106 0 +255 246 139 +222 164 57 +164 106 0 +255 213 230 +246 131 164 +180 65 65 +213 205 205 +131 131 131 +65 65 65 +0 0 0 +255 255 255 diff --git a/graphics/pokemon/doduo/anim_front.png b/graphics/pokemon/doduo/anim_front.png index bda88f3de1..cfaffadcd7 100644 Binary files a/graphics/pokemon/doduo/anim_front.png and b/graphics/pokemon/doduo/anim_front.png differ diff --git a/graphics/pokemon/doduo/anim_frontf.png b/graphics/pokemon/doduo/anim_frontf.png index 51d0d982e9..490a771ada 100644 Binary files a/graphics/pokemon/doduo/anim_frontf.png and b/graphics/pokemon/doduo/anim_frontf.png differ diff --git a/graphics/pokemon/doduo/back.png b/graphics/pokemon/doduo/back.png index dc2b09bc9e..6bac7e57ef 100644 Binary files a/graphics/pokemon/doduo/back.png and b/graphics/pokemon/doduo/back.png differ diff --git a/graphics/pokemon/doduo/backf.png b/graphics/pokemon/doduo/backf.png index 3e0ad49e50..0a208d6300 100644 Binary files a/graphics/pokemon/doduo/backf.png and b/graphics/pokemon/doduo/backf.png differ diff --git a/graphics/pokemon/doduo/normal.pal b/graphics/pokemon/doduo/normal.pal index 594e033255..86151f0ed8 100644 --- a/graphics/pokemon/doduo/normal.pal +++ b/graphics/pokemon/doduo/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 56 24 -144 104 88 -184 136 80 -216 168 112 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +222 172 115 +189 139 82 +148 106 90 +82 57 24 +238 222 172 +222 189 139 +164 131 74 +98 82 16 +98 98 98 16 16 16 -248 248 248 -96 80 16 -96 96 96 -160 128 72 -232 216 168 -216 184 136 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +255 255 255 diff --git a/graphics/pokemon/doduo/shiny.pal b/graphics/pokemon/doduo/shiny.pal index 40d0d1146b..4b19c908e2 100644 --- a/graphics/pokemon/doduo/shiny.pal +++ b/graphics/pokemon/doduo/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -80 96 16 -112 144 32 -168 192 64 -192 224 96 +152 160 208 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +197 230 98 +172 197 65 +115 148 32 +90 115 0 +238 230 172 +222 205 139 +164 156 74 +98 98 16 +98 98 98 16 16 16 -248 248 248 -96 96 16 -96 96 96 -160 152 72 -232 224 168 -216 200 136 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +255 255 255 diff --git a/graphics/pokemon/dolliv/back.png b/graphics/pokemon/dolliv/back.png new file mode 100644 index 0000000000..9a179e325e Binary files /dev/null and b/graphics/pokemon/dolliv/back.png differ diff --git a/graphics/pokemon/dolliv/front.png b/graphics/pokemon/dolliv/front.png new file mode 100644 index 0000000000..0d707db8df Binary files /dev/null and b/graphics/pokemon/dolliv/front.png differ diff --git a/graphics/pokemon/dolliv/icon.png b/graphics/pokemon/dolliv/icon.png new file mode 100755 index 0000000000..37bd0eb19f Binary files /dev/null and b/graphics/pokemon/dolliv/icon.png differ diff --git a/graphics/pokemon/dolliv/normal.pal b/graphics/pokemon/dolliv/normal.pal new file mode 100644 index 0000000000..f2e41f0ac7 --- /dev/null +++ b/graphics/pokemon/dolliv/normal.pal @@ -0,0 +1,14 @@ +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 diff --git a/graphics/pokemon/dolliv/shiny.pal b/graphics/pokemon/dolliv/shiny.pal new file mode 100644 index 0000000000..d462805715 --- /dev/null +++ b/graphics/pokemon/dolliv/shiny.pal @@ -0,0 +1,14 @@ +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 diff --git a/graphics/pokemon/dondozo/back.png b/graphics/pokemon/dondozo/back.png new file mode 100755 index 0000000000..c54b1e7329 Binary files /dev/null and b/graphics/pokemon/dondozo/back.png differ diff --git a/graphics/pokemon/dondozo/front.png b/graphics/pokemon/dondozo/front.png new file mode 100755 index 0000000000..c49c250348 Binary files /dev/null and b/graphics/pokemon/dondozo/front.png differ diff --git a/graphics/pokemon/dondozo/icon.png b/graphics/pokemon/dondozo/icon.png new file mode 100755 index 0000000000..066128e0d4 Binary files /dev/null and b/graphics/pokemon/dondozo/icon.png differ diff --git a/graphics/pokemon/dondozo/normal.pal b/graphics/pokemon/dondozo/normal.pal new file mode 100755 index 0000000000..1e2e39c1a2 --- /dev/null +++ b/graphics/pokemon/dondozo/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 92 104 +224 224 224 +192 180 184 +16 16 16 +8 76 120 +16 176 248 +16 124 184 +8 36 72 +16 64 104 +88 204 248 +16 88 144 +56 144 200 +248 252 248 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/dondozo/shiny.pal b/graphics/pokemon/dondozo/shiny.pal new file mode 100755 index 0000000000..0177f86a8e --- /dev/null +++ b/graphics/pokemon/dondozo/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +80 92 104 +224 224 224 +192 180 184 +16 16 16 +86 78 50 +252 239 105 +177 170 72 +103 103 103 +165 165 165 +255 252 201 +222 223 221 +222 223 221 +248 252 248 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/drampa/anim_front.png b/graphics/pokemon/drampa/anim_front.png new file mode 100644 index 0000000000..c263a15727 Binary files /dev/null and b/graphics/pokemon/drampa/anim_front.png differ diff --git a/graphics/pokemon/drampa/back.png b/graphics/pokemon/drampa/back.png index b3460057ef..be44b000bc 100644 Binary files a/graphics/pokemon/drampa/back.png and b/graphics/pokemon/drampa/back.png differ diff --git a/graphics/pokemon/drampa/front.png b/graphics/pokemon/drampa/front.png deleted file mode 100644 index 6aecba6949..0000000000 Binary files a/graphics/pokemon/drampa/front.png and /dev/null differ diff --git a/graphics/pokemon/drampa/normal.pal b/graphics/pokemon/drampa/normal.pal index 7030346278..5639299f95 100644 --- a/graphics/pokemon/drampa/normal.pal +++ b/graphics/pokemon/drampa/normal.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -0 176 232 +152 208 160 16 80 96 16 16 16 88 160 160 diff --git a/graphics/pokemon/drampa/shiny.pal b/graphics/pokemon/drampa/shiny.pal index ecfd998780..1422a88ff1 100644 --- a/graphics/pokemon/drampa/shiny.pal +++ b/graphics/pokemon/drampa/shiny.pal @@ -1,7 +1,7 @@ JASC-PAL 0100 16 -0 176 232 +152 208 160 152 96 56 16 16 16 224 176 112 diff --git a/graphics/pokemon/drednaw/gigantamax/back.png b/graphics/pokemon/drednaw/gigantamax/back.png new file mode 100644 index 0000000000..f5e79c0a38 Binary files /dev/null and b/graphics/pokemon/drednaw/gigantamax/back.png differ diff --git a/graphics/pokemon/drednaw/gigantamax/front.png b/graphics/pokemon/drednaw/gigantamax/front.png new file mode 100644 index 0000000000..a86a9474cb Binary files /dev/null and b/graphics/pokemon/drednaw/gigantamax/front.png differ diff --git a/graphics/pokemon/drednaw/gigantamax/icon.png b/graphics/pokemon/drednaw/gigantamax/icon.png new file mode 100644 index 0000000000..2e8fdf7658 Binary files /dev/null and b/graphics/pokemon/drednaw/gigantamax/icon.png differ diff --git a/graphics/pokemon/drednaw/gigantamax/normal.pal b/graphics/pokemon/drednaw/gigantamax/normal.pal new file mode 100644 index 0000000000..8e0dc8ff0e --- /dev/null +++ b/graphics/pokemon/drednaw/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +62 115 115 +100 38 32 +168 83 26 +252 252 252 +101 208 188 +77 164 155 +152 67 52 +246 190 19 +183 236 230 +214 132 20 +186 90 58 +250 230 184 +230 196 125 +202 152 96 diff --git a/graphics/pokemon/drednaw/gigantamax/shiny.pal b/graphics/pokemon/drednaw/gigantamax/shiny.pal new file mode 100644 index 0000000000..2fa3812077 --- /dev/null +++ b/graphics/pokemon/drednaw/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +31 60 40 +43 34 34 +162 51 32 +252 252 252 +70 113 84 +49 87 61 +77 63 60 +236 132 29 +122 160 135 +206 85 28 +99 83 77 +255 178 119 +242 200 113 +185 132 73 diff --git a/graphics/pokemon/drowzee/anim_front.png b/graphics/pokemon/drowzee/anim_front.png index 3bab742240..6c4f25288b 100644 Binary files a/graphics/pokemon/drowzee/anim_front.png and b/graphics/pokemon/drowzee/anim_front.png differ diff --git a/graphics/pokemon/drowzee/back.png b/graphics/pokemon/drowzee/back.png index 3489ea9c35..91ced85866 100644 Binary files a/graphics/pokemon/drowzee/back.png and b/graphics/pokemon/drowzee/back.png differ diff --git a/graphics/pokemon/drowzee/normal.pal b/graphics/pokemon/drowzee/normal.pal index 0ea8f35c4c..3293e401fd 100644 --- a/graphics/pokemon/drowzee/normal.pal +++ b/graphics/pokemon/drowzee/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -168 136 0 -112 88 0 -240 232 0 -80 56 32 -208 168 72 -248 232 112 0 0 0 -104 80 64 -248 248 248 -136 32 56 -232 56 56 -136 112 88 -176 152 120 -104 80 64 +82 57 32 +106 82 65 +139 115 90 +180 156 123 +115 90 0 +172 139 0 +197 164 32 +213 172 74 +246 238 0 +255 238 115 +255 255 255 +139 32 57 +238 57 57 0 0 0 diff --git a/graphics/pokemon/drowzee/shiny.pal b/graphics/pokemon/drowzee/shiny.pal index 5c3e3c9d9d..5615fd6c31 100644 --- a/graphics/pokemon/drowzee/shiny.pal +++ b/graphics/pokemon/drowzee/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 96 104 -104 64 72 -224 176 192 -96 32 48 -184 144 152 -248 216 232 -16 16 16 -120 72 88 -248 248 248 -136 40 64 -232 80 80 -176 88 104 -200 120 136 -144 56 80 +0 0 0 +115 16 32 +148 41 74 +180 82 98 +205 106 123 +115 74 82 +139 98 106 +164 123 131 +189 148 156 +230 180 197 +238 205 222 +255 255 255 +139 32 57 +238 57 57 0 0 0 diff --git a/graphics/pokemon/dudunsparce/back.png b/graphics/pokemon/dudunsparce/back.png new file mode 100755 index 0000000000..29889b389c Binary files /dev/null and b/graphics/pokemon/dudunsparce/back.png differ diff --git a/graphics/pokemon/dudunsparce/front.png b/graphics/pokemon/dudunsparce/front.png new file mode 100755 index 0000000000..074897d10e Binary files /dev/null and b/graphics/pokemon/dudunsparce/front.png differ diff --git a/graphics/pokemon/dudunsparce/icon.png b/graphics/pokemon/dudunsparce/icon.png new file mode 100755 index 0000000000..e2a375ebf8 Binary files /dev/null and b/graphics/pokemon/dudunsparce/icon.png differ diff --git a/graphics/pokemon/dudunsparce/normal.pal b/graphics/pokemon/dudunsparce/normal.pal new file mode 100755 index 0000000000..5279094f2f --- /dev/null +++ b/graphics/pokemon/dudunsparce/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 96 112 +248 248 248 +16 16 16 +144 128 56 +24 88 88 +232 224 112 +112 88 56 +56 184 192 +248 240 192 +184 176 176 +40 136 136 +176 160 72 +136 64 72 +184 104 96 +56 64 128 diff --git a/graphics/pokemon/dudunsparce/shiny.pal b/graphics/pokemon/dudunsparce/shiny.pal new file mode 100755 index 0000000000..949042c626 --- /dev/null +++ b/graphics/pokemon/dudunsparce/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 96 112 +248 248 248 +16 16 16 +144 128 56 +120 56 96 +232 224 112 +112 88 56 +232 128 176 +248 240 192 +184 176 176 +176 88 120 +176 160 72 +136 64 72 +184 104 96 +128 16 40 diff --git a/graphics/pokemon/dudunsparce/three_segment/back.png b/graphics/pokemon/dudunsparce/three_segment/back.png new file mode 100644 index 0000000000..1094f3e1c3 Binary files /dev/null and b/graphics/pokemon/dudunsparce/three_segment/back.png differ diff --git a/graphics/pokemon/dudunsparce/three_segment/front.png b/graphics/pokemon/dudunsparce/three_segment/front.png new file mode 100644 index 0000000000..7aab77f28e Binary files /dev/null and b/graphics/pokemon/dudunsparce/three_segment/front.png differ diff --git a/graphics/pokemon/dunsparce/icon.png b/graphics/pokemon/dunsparce/icon.png old mode 100644 new mode 100755 diff --git a/graphics/pokemon/duraludon/back.png b/graphics/pokemon/duraludon/back.png index 051482fb11..606c884662 100644 Binary files a/graphics/pokemon/duraludon/back.png and b/graphics/pokemon/duraludon/back.png differ diff --git a/graphics/pokemon/duraludon/front.png b/graphics/pokemon/duraludon/front.png index 99ef63bd7e..39e39798e9 100644 Binary files a/graphics/pokemon/duraludon/front.png and b/graphics/pokemon/duraludon/front.png differ diff --git a/graphics/pokemon/duraludon/gigantamax/back.png b/graphics/pokemon/duraludon/gigantamax/back.png new file mode 100644 index 0000000000..ed052cc0bb Binary files /dev/null and b/graphics/pokemon/duraludon/gigantamax/back.png differ diff --git a/graphics/pokemon/duraludon/gigantamax/front.png b/graphics/pokemon/duraludon/gigantamax/front.png new file mode 100644 index 0000000000..7fd2b21986 Binary files /dev/null and b/graphics/pokemon/duraludon/gigantamax/front.png differ diff --git a/graphics/pokemon/duraludon/gigantamax/icon.png b/graphics/pokemon/duraludon/gigantamax/icon.png new file mode 100644 index 0000000000..74118eb778 Binary files /dev/null and b/graphics/pokemon/duraludon/gigantamax/icon.png differ diff --git a/graphics/pokemon/duraludon/gigantamax/normal.pal b/graphics/pokemon/duraludon/gigantamax/normal.pal new file mode 100644 index 0000000000..eb23403c98 --- /dev/null +++ b/graphics/pokemon/duraludon/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +40 39 45 +168 147 168 +131 112 128 +112 112 134 +57 58 65 +228 229 241 +78 79 95 +56 173 186 +196 186 197 +254 254 254 +46 105 118 +56 139 156 +79 203 217 +255 222 89 diff --git a/graphics/pokemon/duraludon/gigantamax/shiny.pal b/graphics/pokemon/duraludon/gigantamax/shiny.pal new file mode 100644 index 0000000000..856918e1aa --- /dev/null +++ b/graphics/pokemon/duraludon/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +37 42 57 +143 165 151 +109 128 119 +94 116 158 +54 65 77 +232 237 220 +66 85 116 +219 89 40 +181 193 184 +254 254 254 +139 55 24 +183 73 31 +226 122 84 +255 164 48 diff --git a/graphics/pokemon/duraludon/normal.pal b/graphics/pokemon/duraludon/normal.pal index 0138cf2e91..3b8dca287f 100644 --- a/graphics/pokemon/duraludon/normal.pal +++ b/graphics/pokemon/duraludon/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -104 48 56 -184 104 104 +49 93 139 +98 133 172 +156 210 164 +106 52 57 16 16 16 -128 112 128 -192 184 192 -224 224 240 -248 248 248 -168 144 168 -232 224 120 -128 120 96 -152 144 192 -80 80 160 -48 40 72 -64 64 104 -0 0 0 +123 129 148 +238 226 123 +131 125 98 +139 129 164 +180 182 205 +8 36 82 +255 255 255 +106 97 115 +189 105 106 +24 56 98 +222 226 246 diff --git a/graphics/pokemon/duraludon/shiny.pal b/graphics/pokemon/duraludon/shiny.pal index 27269601eb..583a51f2a4 100644 --- a/graphics/pokemon/duraludon/shiny.pal +++ b/graphics/pokemon/duraludon/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -104 96 104 -232 224 232 +67 119 184 +109 151 204 +156 210 164 +112 105 107 16 16 16 -104 128 112 -176 192 184 -232 232 216 -248 248 248 -136 160 144 -248 160 48 -160 160 128 -120 144 192 -56 96 160 -32 32 72 -56 72 96 -0 0 0 +81 96 101 +226 157 109 +253 248 236 +118 138 154 +149 163 164 +8 36 82 +255 255 255 +80 95 107 +235 232 237 +40 74 130 +190 204 201 diff --git a/graphics/pokemon/eevee/gigantamax/back.png b/graphics/pokemon/eevee/gigantamax/back.png new file mode 100644 index 0000000000..1e104f833b Binary files /dev/null and b/graphics/pokemon/eevee/gigantamax/back.png differ diff --git a/graphics/pokemon/eevee/gigantamax/front.png b/graphics/pokemon/eevee/gigantamax/front.png new file mode 100644 index 0000000000..315b69a2f3 Binary files /dev/null and b/graphics/pokemon/eevee/gigantamax/front.png differ diff --git a/graphics/pokemon/eevee/gigantamax/icon.png b/graphics/pokemon/eevee/gigantamax/icon.png new file mode 100644 index 0000000000..7b4698a0c2 Binary files /dev/null and b/graphics/pokemon/eevee/gigantamax/icon.png differ diff --git a/graphics/pokemon/eevee/gigantamax/normal.pal b/graphics/pokemon/eevee/gigantamax/normal.pal new file mode 100644 index 0000000000..5a1b6a1c9f --- /dev/null +++ b/graphics/pokemon/eevee/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +82 49 32 +16 16 16 +115 74 74 +189 156 123 +164 98 74 +230 197 148 +255 230 172 +213 156 74 +253 253 253 +230 189 123 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/eevee/gigantamax/shiny.pal b/graphics/pokemon/eevee/gigantamax/shiny.pal new file mode 100644 index 0000000000..b554023321 --- /dev/null +++ b/graphics/pokemon/eevee/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +90 82 74 +16 16 16 +131 115 115 +189 197 255 +172 164 156 +213 222 255 +222 230 255 +213 213 197 +253 253 253 +246 246 238 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/electrode/anim_front.png b/graphics/pokemon/electrode/anim_front.png index bf91ac0eb8..739501732b 100644 Binary files a/graphics/pokemon/electrode/anim_front.png and b/graphics/pokemon/electrode/anim_front.png differ diff --git a/graphics/pokemon/electrode/back.png b/graphics/pokemon/electrode/back.png index 86d20c029e..90cd9957c8 100644 Binary files a/graphics/pokemon/electrode/back.png and b/graphics/pokemon/electrode/back.png differ diff --git a/graphics/pokemon/electrode/normal.pal b/graphics/pokemon/electrode/normal.pal index 293f41bffb..3710a6a0b7 100644 --- a/graphics/pokemon/electrode/normal.pal +++ b/graphics/pokemon/electrode/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -90 82 82 -164 156 156 +255 255 255 238 238 238 -248 248 248 205 205 222 -16 16 16 -213 49 65 -255 82 32 +164 156 156 +90 82 82 +255 0 255 +240 160 136 +208 128 144 +255 172 156 255 131 90 -131 16 16 +255 82 32 238 65 49 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +213 49 65 +131 16 16 +16 16 16 diff --git a/graphics/pokemon/electrode/shiny.pal b/graphics/pokemon/electrode/shiny.pal index cdfc50be22..4ad72a8909 100644 --- a/graphics/pokemon/electrode/shiny.pal +++ b/graphics/pokemon/electrode/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 80 80 -160 152 152 -232 232 232 -248 248 248 -200 200 216 -16 16 16 -56 72 208 -32 112 248 +255 255 255 +238 238 238 +205 205 222 +164 156 156 +90 82 82 +255 0 255 144 168 232 -24 48 112 -48 96 232 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +128 136 216 +156 205 255 +90 164 255 +32 115 255 +49 98 238 +57 74 213 +16 49 131 +16 16 16 diff --git a/graphics/pokemon/espathra/back.png b/graphics/pokemon/espathra/back.png new file mode 100644 index 0000000000..7c5842fba7 Binary files /dev/null and b/graphics/pokemon/espathra/back.png differ diff --git a/graphics/pokemon/espathra/front.png b/graphics/pokemon/espathra/front.png new file mode 100644 index 0000000000..6c2a9161c4 Binary files /dev/null and b/graphics/pokemon/espathra/front.png differ diff --git a/graphics/pokemon/espathra/icon.png b/graphics/pokemon/espathra/icon.png new file mode 100755 index 0000000000..b82af0c6e2 Binary files /dev/null and b/graphics/pokemon/espathra/icon.png differ diff --git a/graphics/pokemon/espathra/normal.pal b/graphics/pokemon/espathra/normal.pal new file mode 100644 index 0000000000..058716070c --- /dev/null +++ b/graphics/pokemon/espathra/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +96 88 112 +248 248 248 +192 176 184 +16 16 16 +80 232 184 +144 112 168 +184 160 224 +120 80 24 +192 136 80 +248 184 96 +214 192 175 +250 244 238 +248 248 96 +192 176 16 +192 176 112 diff --git a/graphics/pokemon/espathra/shiny.pal b/graphics/pokemon/espathra/shiny.pal new file mode 100644 index 0000000000..c4064ef223 --- /dev/null +++ b/graphics/pokemon/espathra/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +96 88 112 +248 248 248 +192 176 184 +16 16 16 +80 232 184 +144 112 168 +184 160 224 +52 41 41 +87 68 68 +120 96 96 +98 99 95 +137 136 124 +192 152 136 +152 115 109 +192 176 112 diff --git a/graphics/pokemon/exeggcute/anim_front.png b/graphics/pokemon/exeggcute/anim_front.png index 429248b6eb..890f981467 100644 Binary files a/graphics/pokemon/exeggcute/anim_front.png and b/graphics/pokemon/exeggcute/anim_front.png differ diff --git a/graphics/pokemon/exeggcute/back.png b/graphics/pokemon/exeggcute/back.png index 8ae6d8f214..fa0204c49b 100644 Binary files a/graphics/pokemon/exeggcute/back.png and b/graphics/pokemon/exeggcute/back.png differ diff --git a/graphics/pokemon/exeggcute/normal.pal b/graphics/pokemon/exeggcute/normal.pal index 5b12b18d4d..632ee1137d 100644 --- a/graphics/pokemon/exeggcute/normal.pal +++ b/graphics/pokemon/exeggcute/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -197 115 148 -139 32 32 -255 213 222 -16 16 16 +255 255 255 +222 222 222 255 238 139 205 139 8 -248 248 248 +16 16 16 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 255 238 238 -222 222 222 -224 176 184 -232 192 192 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +255 213 222 +230 180 189 +197 115 148 +139 32 32 diff --git a/graphics/pokemon/exeggcute/shiny.pal b/graphics/pokemon/exeggcute/shiny.pal index 967472bdca..e59673d22c 100644 --- a/graphics/pokemon/exeggcute/shiny.pal +++ b/graphics/pokemon/exeggcute/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -224 168 40 -136 96 24 -248 232 88 +255 255 255 +222 222 222 +255 205 74 +230 156 0 16 16 16 -248 200 72 -224 152 0 -248 248 248 -248 248 160 -216 216 216 -208 80 64 -240 208 64 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 255 189 +255 238 16 +246 205 16 +238 172 0 +180 123 0 diff --git a/graphics/pokemon/exeggutor/anim_front.png b/graphics/pokemon/exeggutor/anim_front.png index a7fa012b17..8d32dffb8d 100644 Binary files a/graphics/pokemon/exeggutor/anim_front.png and b/graphics/pokemon/exeggutor/anim_front.png differ diff --git a/graphics/pokemon/exeggutor/back.png b/graphics/pokemon/exeggutor/back.png index 8bf0106564..ea1c3fa38f 100644 Binary files a/graphics/pokemon/exeggutor/back.png and b/graphics/pokemon/exeggutor/back.png differ diff --git a/graphics/pokemon/exeggutor/normal.pal b/graphics/pokemon/exeggutor/normal.pal index 7430557a4c..64a0df017a 100644 --- a/graphics/pokemon/exeggutor/normal.pal +++ b/graphics/pokemon/exeggutor/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -0 176 232 -82 98 41 -16 16 16 -115 172 49 +152 160 208 +255 255 205 +255 246 139 +230 172 90 +164 106 32 +123 82 16 +180 156 74 +139 115 65 +82 65 16 189 255 115 156 213 74 -82 65 16 -230 172 90 -255 246 139 -248 248 168 -248 248 248 -123 82 16 -164 106 32 -139 115 65 -230 172 90 -180 156 74 +115 172 49 +82 98 41 +255 255 255 +98 98 98 +16 16 16 diff --git a/graphics/pokemon/exeggutor/shiny.pal b/graphics/pokemon/exeggutor/shiny.pal index 2490dbbb59..81c3a61fea 100644 --- a/graphics/pokemon/exeggutor/shiny.pal +++ b/graphics/pokemon/exeggutor/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -0 176 232 -136 56 24 +152 208 160 +255 238 164 +255 222 106 +230 172 90 +164 106 32 +115 65 16 +238 230 74 +205 172 0 +148 115 0 +255 189 106 +230 131 74 +197 98 57 +156 57 16 +255 255 255 +98 98 98 16 16 16 -192 104 64 -232 184 120 -224 144 96 -120 96 24 -224 168 88 -248 224 136 -248 232 160 -248 248 248 -160 104 32 -160 104 32 -200 176 40 -224 168 88 -240 232 96 diff --git a/graphics/pokemon/farfetchd/anim_front.png b/graphics/pokemon/farfetchd/anim_front.png index ac702abdd4..527e64c536 100644 Binary files a/graphics/pokemon/farfetchd/anim_front.png and b/graphics/pokemon/farfetchd/anim_front.png differ diff --git a/graphics/pokemon/farfetchd/back.png b/graphics/pokemon/farfetchd/back.png index 50978b424c..1f87dd2fcb 100644 Binary files a/graphics/pokemon/farfetchd/back.png and b/graphics/pokemon/farfetchd/back.png differ diff --git a/graphics/pokemon/farfetchd/normal.pal b/graphics/pokemon/farfetchd/normal.pal index 8e8af67119..786c6d0244 100644 --- a/graphics/pokemon/farfetchd/normal.pal +++ b/graphics/pokemon/farfetchd/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -132 107 33 -90 58 0 -181 148 82 +152 160 208 +255 255 255 +213 213 213 +230 230 164 +197 205 131 +255 222 106 +246 180 65 +189 115 24 +205 255 139 +65 222 65 +0 156 32 +216 184 112 +180 148 82 +131 106 32 +90 57 0 16 16 16 -0 156 33 -230 230 165 -66 222 66 -197 206 132 -214 214 214 -230 197 123 -248 248 248 -206 255 140 -255 222 107 -247 181 66 -189 115 25 diff --git a/graphics/pokemon/farfetchd/shiny.pal b/graphics/pokemon/farfetchd/shiny.pal index 631533ca3c..874a87bda2 100644 --- a/graphics/pokemon/farfetchd/shiny.pal +++ b/graphics/pokemon/farfetchd/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 +152 160 208 +255 255 255 +213 213 213 +238 230 164 +197 197 123 +255 213 115 +255 180 74 +197 115 32 +230 255 148 +172 230 74 +112 152 32 +216 184 112 +230 136 120 200 104 88 104 56 48 -224 136 120 16 16 16 -128 168 32 -240 232 176 -168 224 72 -192 192 120 -208 208 208 -216 184 112 -248 248 248 -224 248 144 -248 208 112 -248 176 72 -192 120 48 diff --git a/graphics/pokemon/farigiraf/back.png b/graphics/pokemon/farigiraf/back.png new file mode 100644 index 0000000000..4957e60d60 Binary files /dev/null and b/graphics/pokemon/farigiraf/back.png differ diff --git a/graphics/pokemon/farigiraf/front.png b/graphics/pokemon/farigiraf/front.png new file mode 100644 index 0000000000..2beeb62b4d Binary files /dev/null and b/graphics/pokemon/farigiraf/front.png differ diff --git a/graphics/pokemon/farigiraf/icon.png b/graphics/pokemon/farigiraf/icon.png new file mode 100755 index 0000000000..0ef8b01ae8 Binary files /dev/null and b/graphics/pokemon/farigiraf/icon.png differ diff --git a/graphics/pokemon/farigiraf/normal.pal b/graphics/pokemon/farigiraf/normal.pal new file mode 100644 index 0000000000..54d536677b --- /dev/null +++ b/graphics/pokemon/farigiraf/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +48 48 64 +96 88 88 +16 16 16 +112 87 59 +86 60 39 +248 240 40 +252 253 148 +192 200 168 +191 179 110 +120 88 48 +248 248 248 +184 88 104 +240 144 152 +193 97 57 +254 137 71 diff --git a/graphics/pokemon/farigiraf/shiny.pal b/graphics/pokemon/farigiraf/shiny.pal new file mode 100644 index 0000000000..90d45d241e --- /dev/null +++ b/graphics/pokemon/farigiraf/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +48 48 64 +96 88 88 +16 16 16 +112 87 59 +86 60 39 +248 240 40 +229 229 229 +192 200 168 +183 196 200 +120 88 48 +248 248 248 +83 116 204 +128 176 240 +164 63 51 +232 96 72 diff --git a/graphics/pokemon/feraligatr/anim_front.png b/graphics/pokemon/feraligatr/anim_front.png index 02f31d679c..4e2f9401b4 100644 Binary files a/graphics/pokemon/feraligatr/anim_front.png and b/graphics/pokemon/feraligatr/anim_front.png differ diff --git a/graphics/pokemon/feraligatr/normal.pal b/graphics/pokemon/feraligatr/normal.pal index 3322ac24e3..530d6f651e 100644 --- a/graphics/pokemon/feraligatr/normal.pal +++ b/graphics/pokemon/feraligatr/normal.pal @@ -6,10 +6,10 @@ JASC-PAL 255 139 131 16 16 16 246 82 90 -41 74 139 -90 180 246 -57 139 205 -139 213 255 +8 106 148 +65 213 238 +41 156 189 +139 238 255 255 255 255 197 197 197 255 230 139 diff --git a/graphics/pokemon/fezandipiti/back.png b/graphics/pokemon/fezandipiti/back.png new file mode 100644 index 0000000000..4583405047 Binary files /dev/null and b/graphics/pokemon/fezandipiti/back.png differ diff --git a/graphics/pokemon/fezandipiti/front.png b/graphics/pokemon/fezandipiti/front.png new file mode 100644 index 0000000000..fc841ec395 Binary files /dev/null and b/graphics/pokemon/fezandipiti/front.png differ diff --git a/graphics/pokemon/fezandipiti/icon.png b/graphics/pokemon/fezandipiti/icon.png new file mode 100644 index 0000000000..1bd6d0bf31 Binary files /dev/null and b/graphics/pokemon/fezandipiti/icon.png differ diff --git a/graphics/pokemon/fezandipiti/normal.pal b/graphics/pokemon/fezandipiti/normal.pal new file mode 100644 index 0000000000..ac9c005324 --- /dev/null +++ b/graphics/pokemon/fezandipiti/normal.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +152 208 160 +167 135 48 +118 61 41 +238 204 45 +26 29 28 +78 73 71 +45 45 45 +146 57 119 +202 103 162 +90 33 73 +192 78 22 +254 254 254 +164 175 176 +16 16 16 +69 37 29 diff --git a/graphics/pokemon/fezandipiti/shiny.pal b/graphics/pokemon/fezandipiti/shiny.pal new file mode 100644 index 0000000000..673473f5c0 --- /dev/null +++ b/graphics/pokemon/fezandipiti/shiny.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +152 208 160 +167 135 48 +118 61 41 +238 204 45 +26 29 28 +59 63 133 +36 40 99 +146 57 119 +202 103 162 +90 33 73 +192 78 22 +254 254 254 +164 175 176 +16 16 16 +69 37 29 diff --git a/graphics/pokemon/fidough/back.png b/graphics/pokemon/fidough/back.png new file mode 100644 index 0000000000..a3eb31b308 Binary files /dev/null and b/graphics/pokemon/fidough/back.png differ diff --git a/graphics/pokemon/fidough/front.png b/graphics/pokemon/fidough/front.png new file mode 100644 index 0000000000..3809eaf726 Binary files /dev/null and b/graphics/pokemon/fidough/front.png differ diff --git a/graphics/pokemon/fidough/icon.png b/graphics/pokemon/fidough/icon.png new file mode 100755 index 0000000000..2a6c4b15f5 Binary files /dev/null and b/graphics/pokemon/fidough/icon.png differ diff --git a/graphics/pokemon/fidough/normal.pal b/graphics/pokemon/fidough/normal.pal new file mode 100644 index 0000000000..9fc647ec61 --- /dev/null +++ b/graphics/pokemon/fidough/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +144 112 88 +128 88 56 +240 240 208 +192 152 72 +240 216 88 +88 56 40 +96 72 56 +200 184 128 +16 16 16 +248 248 248 +80 88 96 +160 88 96 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/fidough/shiny.pal b/graphics/pokemon/fidough/shiny.pal new file mode 100644 index 0000000000..08c90f1346 --- /dev/null +++ b/graphics/pokemon/fidough/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 64 56 +128 88 56 +184 144 120 +192 152 72 +240 216 88 +88 56 40 +64 40 40 +136 104 80 +16 16 16 +248 248 248 +80 88 96 +160 88 96 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/finizen/back.png b/graphics/pokemon/finizen/back.png new file mode 100755 index 0000000000..422cb602f7 Binary files /dev/null and b/graphics/pokemon/finizen/back.png differ diff --git a/graphics/pokemon/finizen/front.png b/graphics/pokemon/finizen/front.png new file mode 100755 index 0000000000..624d0bb77a Binary files /dev/null and b/graphics/pokemon/finizen/front.png differ diff --git a/graphics/pokemon/finizen/icon.png b/graphics/pokemon/finizen/icon.png new file mode 100755 index 0000000000..b82b4c673f Binary files /dev/null and b/graphics/pokemon/finizen/icon.png differ diff --git a/graphics/pokemon/finizen/normal.pal b/graphics/pokemon/finizen/normal.pal new file mode 100755 index 0000000000..cf7dae9337 --- /dev/null +++ b/graphics/pokemon/finizen/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 96 112 +80 200 216 +136 216 224 +64 156 176 +176 192 200 +208 236 240 +24 160 248 +16 16 16 +248 252 248 +248 164 184 +176 128 160 +240 164 216 +24 104 136 +128 212 240 +64 160 200 diff --git a/graphics/pokemon/finizen/shiny.pal b/graphics/pokemon/finizen/shiny.pal new file mode 100755 index 0000000000..937cbb4fba --- /dev/null +++ b/graphics/pokemon/finizen/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +61 77 167 +118 138 252 +139 158 254 +79 100 235 +170 181 211 +208 236 240 +24 160 248 +16 16 16 +248 252 248 +74 229 145 +176 128 160 +240 164 216 +24 104 136 +128 212 240 +64 160 200 diff --git a/graphics/pokemon/flaaffy/anim_front.png b/graphics/pokemon/flaaffy/anim_front.png index e1239d8193..318da3c4ee 100644 Binary files a/graphics/pokemon/flaaffy/anim_front.png and b/graphics/pokemon/flaaffy/anim_front.png differ diff --git a/graphics/pokemon/flaaffy/normal.pal b/graphics/pokemon/flaaffy/normal.pal index 5dd45e400e..59b1e43308 100644 --- a/graphics/pokemon/flaaffy/normal.pal +++ b/graphics/pokemon/flaaffy/normal.pal @@ -2,17 +2,17 @@ JASC-PAL 0100 16 152 208 160 -189 189 213 +180 180 213 255 255 255 131 115 139 -222 230 246 +205 222 246 16 16 16 74 74 90 -222 65 98 -255 164 164 -255 115 115 -255 189 189 -164 0 16 +213 98 123 +255 180 205 +255 139 156 +255 205 213 +139 32 49 82 131 197 82 131 197 131 197 255 diff --git a/graphics/pokemon/flabebe/anim_front.png b/graphics/pokemon/flabebe/anim_front.png index 6677d4137a..e872a6dc8e 100644 Binary files a/graphics/pokemon/flabebe/anim_front.png and b/graphics/pokemon/flabebe/anim_front.png differ diff --git a/graphics/pokemon/flabebe/back.png b/graphics/pokemon/flabebe/back.png index 088f00af5a..345740b30a 100644 Binary files a/graphics/pokemon/flabebe/back.png and b/graphics/pokemon/flabebe/back.png differ diff --git a/graphics/pokemon/flamigo/back.png b/graphics/pokemon/flamigo/back.png new file mode 100755 index 0000000000..0fa825aae0 Binary files /dev/null and b/graphics/pokemon/flamigo/back.png differ diff --git a/graphics/pokemon/flamigo/front.png b/graphics/pokemon/flamigo/front.png new file mode 100755 index 0000000000..d8033f368f Binary files /dev/null and b/graphics/pokemon/flamigo/front.png differ diff --git a/graphics/pokemon/flamigo/icon.png b/graphics/pokemon/flamigo/icon.png new file mode 100755 index 0000000000..0f0381579c Binary files /dev/null and b/graphics/pokemon/flamigo/icon.png differ diff --git a/graphics/pokemon/flamigo/normal.pal b/graphics/pokemon/flamigo/normal.pal new file mode 100755 index 0000000000..170246a305 --- /dev/null +++ b/graphics/pokemon/flamigo/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 52 64 +216 48 120 +240 232 232 +240 192 208 +240 120 152 +16 16 16 +40 40 40 +232 220 88 +176 168 168 +72 64 64 +168 28 88 +104 104 104 +200 160 16 +184 84 112 +0 0 0 diff --git a/graphics/pokemon/flamigo/shiny.pal b/graphics/pokemon/flamigo/shiny.pal new file mode 100755 index 0000000000..e51a06e039 --- /dev/null +++ b/graphics/pokemon/flamigo/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +124 76 81 +237 106 132 +240 232 232 +240 192 208 +240 188 188 +16 16 16 +40 40 40 +232 220 88 +176 168 168 +72 64 64 +168 28 88 +104 104 104 +200 160 16 +165 119 124 +0 0 0 diff --git a/graphics/pokemon/flapple/gigantamax/back.png b/graphics/pokemon/flapple/gigantamax/back.png new file mode 100644 index 0000000000..610d98112b Binary files /dev/null and b/graphics/pokemon/flapple/gigantamax/back.png differ diff --git a/graphics/pokemon/flapple/gigantamax/front.png b/graphics/pokemon/flapple/gigantamax/front.png new file mode 100644 index 0000000000..65c716e9e8 Binary files /dev/null and b/graphics/pokemon/flapple/gigantamax/front.png differ diff --git a/graphics/pokemon/flapple/gigantamax/icon.png b/graphics/pokemon/flapple/gigantamax/icon.png new file mode 100644 index 0000000000..b7ecabd469 Binary files /dev/null and b/graphics/pokemon/flapple/gigantamax/icon.png differ diff --git a/graphics/pokemon/flapple/gigantamax/normal.pal b/graphics/pokemon/flapple/gigantamax/normal.pal new file mode 100644 index 0000000000..2d5dabef1e --- /dev/null +++ b/graphics/pokemon/flapple/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +166 49 57 +119 38 40 +198 138 72 +141 66 41 +233 197 88 +66 118 56 +210 57 77 +179 172 98 +249 249 249 +44 72 40 +218 208 139 +57 164 61 +213 68 86 +15 15 15 diff --git a/graphics/pokemon/flapple/gigantamax/shiny.pal b/graphics/pokemon/flapple/gigantamax/shiny.pal new file mode 100644 index 0000000000..4514eb418d --- /dev/null +++ b/graphics/pokemon/flapple/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +55 143 41 +35 91 27 +198 138 72 +141 66 41 +233 197 88 +66 118 56 +75 183 48 +179 172 98 +249 249 249 +44 72 40 +218 208 139 +57 164 61 +213 68 86 +15 15 15 diff --git a/graphics/pokemon/fletchling/anim_front.png b/graphics/pokemon/fletchling/anim_front.png index 87f110df95..5163b130da 100644 Binary files a/graphics/pokemon/fletchling/anim_front.png and b/graphics/pokemon/fletchling/anim_front.png differ diff --git a/graphics/pokemon/fletchling/back.png b/graphics/pokemon/fletchling/back.png index 880ec9548c..3307fbfe97 100644 Binary files a/graphics/pokemon/fletchling/back.png and b/graphics/pokemon/fletchling/back.png differ diff --git a/graphics/pokemon/fletchling/normal.pal b/graphics/pokemon/fletchling/normal.pal index 01d1e3fe2f..b18b705ef0 100644 --- a/graphics/pokemon/fletchling/normal.pal +++ b/graphics/pokemon/fletchling/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 120 184 168 -128 24 0 -248 112 80 -8 8 8 -208 72 40 -32 32 32 -64 56 48 -128 112 104 -248 248 248 -248 200 64 -208 208 208 -56 96 120 -160 208 248 -120 160 200 -32 32 32 0 0 0 +35 35 34 +68 67 65 +138 52 18 +174 69 27 +91 96 109 +228 90 35 +140 147 169 +197 197 197 +192 201 230 +255 212 39 +255 255 255 +250 250 250 +255 0 255 +255 0 255 diff --git a/graphics/pokemon/fletchling/shiny.pal b/graphics/pokemon/fletchling/shiny.pal index 3761dfe625..f17e0db230 100644 --- a/graphics/pokemon/fletchling/shiny.pal +++ b/graphics/pokemon/fletchling/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -120 184 168 -104 72 0 -248 184 56 +152 208 160 8 8 8 -200 144 16 -40 32 32 -72 48 72 -120 104 120 -248 248 248 -232 248 72 -208 208 208 -104 80 64 -232 192 144 -176 144 104 -32 32 32 -0 0 0 +87 51 51 +154 90 90 +118 45 14 +219 115 66 +124 103 74 +255 152 86 +191 158 121 +240 212 0 +255 218 166 +255 255 134 +255 255 255 +247 227 77 +255 0 255 +255 0 255 diff --git a/graphics/pokemon/flittle/back.png b/graphics/pokemon/flittle/back.png new file mode 100644 index 0000000000..e20bc255cf Binary files /dev/null and b/graphics/pokemon/flittle/back.png differ diff --git a/graphics/pokemon/flittle/front.png b/graphics/pokemon/flittle/front.png new file mode 100644 index 0000000000..c65a015020 Binary files /dev/null and b/graphics/pokemon/flittle/front.png differ diff --git a/graphics/pokemon/flittle/icon.png b/graphics/pokemon/flittle/icon.png new file mode 100755 index 0000000000..f588d537ef Binary files /dev/null and b/graphics/pokemon/flittle/icon.png differ diff --git a/graphics/pokemon/flittle/normal.pal b/graphics/pokemon/flittle/normal.pal new file mode 100644 index 0000000000..a1ffc22a22 --- /dev/null +++ b/graphics/pokemon/flittle/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +123 132 140 +255 255 255 +198 206 214 +107 99 57 +255 247 140 +16 16 16 +198 173 90 +123 107 198 +132 206 231 +82 66 156 +115 33 107 +206 74 165 +239 99 206 +180 96 7 +252 127 0 diff --git a/graphics/pokemon/flittle/shiny.pal b/graphics/pokemon/flittle/shiny.pal new file mode 100644 index 0000000000..8b5b682d17 --- /dev/null +++ b/graphics/pokemon/flittle/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +123 132 140 +255 255 255 +198 206 214 +107 99 57 +255 247 140 +16 16 16 +198 173 90 +123 107 198 +132 206 231 +82 66 156 +49 99 49 +74 189 99 +41 255 148 +57 57 57 +102 102 102 diff --git a/graphics/pokemon/floette/anim_front.png b/graphics/pokemon/floette/anim_front.png index 43eae1911a..59b7fb9b73 100644 Binary files a/graphics/pokemon/floette/anim_front.png and b/graphics/pokemon/floette/anim_front.png differ diff --git a/graphics/pokemon/floette/eternal_flower/anim_front.png b/graphics/pokemon/floette/eternal_flower/anim_front.png new file mode 100644 index 0000000000..b77c538dea Binary files /dev/null and b/graphics/pokemon/floette/eternal_flower/anim_front.png differ diff --git a/graphics/pokemon/floette/eternal_flower/front.png b/graphics/pokemon/floette/eternal_flower/front.png deleted file mode 100644 index 61b4419b7e..0000000000 Binary files a/graphics/pokemon/floette/eternal_flower/front.png and /dev/null differ diff --git a/graphics/pokemon/floragato/back.png b/graphics/pokemon/floragato/back.png new file mode 100755 index 0000000000..e6788d364d Binary files /dev/null and b/graphics/pokemon/floragato/back.png differ diff --git a/graphics/pokemon/floragato/front.png b/graphics/pokemon/floragato/front.png new file mode 100755 index 0000000000..44145f25fd Binary files /dev/null and b/graphics/pokemon/floragato/front.png differ diff --git a/graphics/pokemon/floragato/icon.png b/graphics/pokemon/floragato/icon.png new file mode 100644 index 0000000000..aaf9a3b10d Binary files /dev/null and b/graphics/pokemon/floragato/icon.png differ diff --git a/graphics/pokemon/floragato/normal.pal b/graphics/pokemon/floragato/normal.pal new file mode 100755 index 0000000000..020d32c3ed --- /dev/null +++ b/graphics/pokemon/floragato/normal.pal @@ -0,0 +1,16 @@ +JASC-PAL +0100 +13 +154 212 167 +55 91 50 +66 129 57 +8 8 8 +212 232 187 +172 185 144 +63 69 53 +125 142 107 +111 177 51 +253 253 253 +223 91 126 +240 169 184 +147 52 77 diff --git a/graphics/pokemon/floragato/shiny.pal b/graphics/pokemon/floragato/shiny.pal new file mode 100755 index 0000000000..e8aad4366f --- /dev/null +++ b/graphics/pokemon/floragato/shiny.pal @@ -0,0 +1,16 @@ +JASC-PAL +0100 +13 +154 212 167 +50 80 65 +58 118 90 +8 8 8 +188 232 187 +149 185 144 +51 60 52 +107 142 108 +51 167 103 +253 253 253 +174 132 218 +222 203 240 +118 79 158 diff --git a/graphics/pokemon/flutter_mane/back.png b/graphics/pokemon/flutter_mane/back.png new file mode 100644 index 0000000000..8052cafc19 Binary files /dev/null and b/graphics/pokemon/flutter_mane/back.png differ diff --git a/graphics/pokemon/flutter_mane/front.png b/graphics/pokemon/flutter_mane/front.png new file mode 100644 index 0000000000..ce45a4b923 Binary files /dev/null and b/graphics/pokemon/flutter_mane/front.png differ diff --git a/graphics/pokemon/flutter_mane/icon.png b/graphics/pokemon/flutter_mane/icon.png new file mode 100755 index 0000000000..2b65fc048f Binary files /dev/null and b/graphics/pokemon/flutter_mane/icon.png differ diff --git a/graphics/pokemon/flutter_mane/normal.pal b/graphics/pokemon/flutter_mane/normal.pal new file mode 100644 index 0000000000..a2b19738a6 --- /dev/null +++ b/graphics/pokemon/flutter_mane/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +148 30 104 +16 16 16 +196 102 161 +230 162 205 +56 73 80 +109 149 164 +90 116 117 +136 56 24 +92 172 142 +255 162 162 +255 68 68 +136 214 185 +148 184 177 +180 26 65 +248 216 96 diff --git a/graphics/pokemon/flutter_mane/shiny.pal b/graphics/pokemon/flutter_mane/shiny.pal new file mode 100644 index 0000000000..2db4e621e2 --- /dev/null +++ b/graphics/pokemon/flutter_mane/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +180 79 0 +16 16 16 +216 152 64 +248 184 64 +56 73 80 +181 203 123 +105 141 69 +136 56 24 +200 200 200 +255 162 162 +255 68 68 +248 248 248 +222 232 154 +180 26 65 +248 216 96 diff --git a/graphics/pokemon/frigibax/anim_front.png b/graphics/pokemon/frigibax/anim_front.png new file mode 100644 index 0000000000..cfdaf7de70 Binary files /dev/null and b/graphics/pokemon/frigibax/anim_front.png differ diff --git a/graphics/pokemon/frigibax/back.png b/graphics/pokemon/frigibax/back.png new file mode 100644 index 0000000000..d48c105e34 Binary files /dev/null and b/graphics/pokemon/frigibax/back.png differ diff --git a/graphics/pokemon/frigibax/icon.png b/graphics/pokemon/frigibax/icon.png new file mode 100755 index 0000000000..b50575cd47 Binary files /dev/null and b/graphics/pokemon/frigibax/icon.png differ diff --git a/graphics/pokemon/frigibax/normal.pal b/graphics/pokemon/frigibax/normal.pal new file mode 100644 index 0000000000..7b65763603 --- /dev/null +++ b/graphics/pokemon/frigibax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +102 104 113 +65 73 73 +170 177 183 +143 153 163 +175 155 10 +249 216 0 +222 223 222 +15 15 15 +156 151 156 +142 187 183 +194 231 233 +114 94 22 +255 181 9 +209 147 16 +118 152 148 diff --git a/graphics/pokemon/frigibax/shiny.pal b/graphics/pokemon/frigibax/shiny.pal new file mode 100644 index 0000000000..62e5c6dac1 --- /dev/null +++ b/graphics/pokemon/frigibax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +75 114 106 +52 74 64 +134 186 173 +116 161 150 +175 155 10 +249 216 0 +222 223 222 +15 15 15 +156 151 156 +142 187 183 +194 231 233 +143 103 130 +255 179 230 +255 143 219 +118 152 148 diff --git a/graphics/pokemon/fuecoco/back.png b/graphics/pokemon/fuecoco/back.png new file mode 100644 index 0000000000..a7fb5e5628 Binary files /dev/null and b/graphics/pokemon/fuecoco/back.png differ diff --git a/graphics/pokemon/fuecoco/front.png b/graphics/pokemon/fuecoco/front.png new file mode 100644 index 0000000000..d78818b22b Binary files /dev/null and b/graphics/pokemon/fuecoco/front.png differ diff --git a/graphics/pokemon/fuecoco/icon.png b/graphics/pokemon/fuecoco/icon.png new file mode 100755 index 0000000000..923e5f03fd Binary files /dev/null and b/graphics/pokemon/fuecoco/icon.png differ diff --git a/graphics/pokemon/fuecoco/normal.pal b/graphics/pokemon/fuecoco/normal.pal new file mode 100644 index 0000000000..85f78e488a --- /dev/null +++ b/graphics/pokemon/fuecoco/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 88 40 +248 208 56 +216 160 40 +104 40 32 +112 88 64 +232 136 120 +248 248 216 +232 72 56 +168 160 144 +48 56 64 +168 64 32 +16 16 16 +152 104 16 +248 248 248 +80 88 96 diff --git a/graphics/pokemon/fuecoco/shiny.pal b/graphics/pokemon/fuecoco/shiny.pal new file mode 100644 index 0000000000..9e353d26be --- /dev/null +++ b/graphics/pokemon/fuecoco/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +248 88 40 +248 208 56 +216 160 40 +104 16 64 +112 88 64 +232 176 176 +248 248 216 +216 104 136 +168 160 144 +88 32 48 +168 64 88 +16 16 16 +152 104 16 +248 248 248 +128 64 72 diff --git a/graphics/pokemon/furret/anim_front.png b/graphics/pokemon/furret/anim_front.png index 085f303c9c..2f2efdb135 100644 Binary files a/graphics/pokemon/furret/anim_front.png and b/graphics/pokemon/furret/anim_front.png differ diff --git a/graphics/pokemon/furret/back.png b/graphics/pokemon/furret/back.png index 1f93600abd..3e46c8876a 100644 Binary files a/graphics/pokemon/furret/back.png and b/graphics/pokemon/furret/back.png differ diff --git a/graphics/pokemon/furret/normal.pal b/graphics/pokemon/furret/normal.pal index e1a23347b0..4c13af07d7 100644 --- a/graphics/pokemon/furret/normal.pal +++ b/graphics/pokemon/furret/normal.pal @@ -3,17 +3,17 @@ JASC-PAL 16 152 208 160 82 41 32 -230 197 74 +213 180 106 123 65 57 -32 32 41 -197 156 65 -255 238 148 +16 16 16 +238 213 164 156 98 74 +197 156 65 172 131 41 255 255 197 -255 255 255 +248 248 248 115 115 115 156 0 0 255 148 98 -120 64 56 +0 0 0 0 0 0 diff --git a/graphics/pokemon/furret/shiny.pal b/graphics/pokemon/furret/shiny.pal index 75a750fcab..79bd6092c0 100644 --- a/graphics/pokemon/furret/shiny.pal +++ b/graphics/pokemon/furret/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 0 56 -248 176 184 -160 48 104 -32 32 40 -232 152 160 -248 232 216 -216 88 136 -216 112 120 -248 232 240 +115 0 57 +255 180 189 +164 49 106 +16 16 16 +255 238 222 +222 90 139 +238 156 164 +222 115 123 +255 238 246 248 248 248 -112 112 112 -152 0 0 -248 144 96 -120 64 56 +115 115 115 +156 0 0 +255 148 98 +0 0 0 0 0 0 diff --git a/graphics/pokemon/garbodor/gigantamax/back.png b/graphics/pokemon/garbodor/gigantamax/back.png new file mode 100644 index 0000000000..645dae3c01 Binary files /dev/null and b/graphics/pokemon/garbodor/gigantamax/back.png differ diff --git a/graphics/pokemon/garbodor/gigantamax/front.png b/graphics/pokemon/garbodor/gigantamax/front.png new file mode 100644 index 0000000000..9856f28763 Binary files /dev/null and b/graphics/pokemon/garbodor/gigantamax/front.png differ diff --git a/graphics/pokemon/garbodor/gigantamax/icon.png b/graphics/pokemon/garbodor/gigantamax/icon.png new file mode 100644 index 0000000000..f929b577ce Binary files /dev/null and b/graphics/pokemon/garbodor/gigantamax/icon.png differ diff --git a/graphics/pokemon/garbodor/gigantamax/normal.pal b/graphics/pokemon/garbodor/gigantamax/normal.pal new file mode 100644 index 0000000000..5d365044cf --- /dev/null +++ b/graphics/pokemon/garbodor/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +123 106 90 +189 189 189 +90 74 65 +164 139 115 +24 57 41 +0 172 213 +107 220 39 +41 106 74 +253 253 253 +254 188 164 +235 73 78 +230 218 0 +184 41 45 +239 143 255 diff --git a/graphics/pokemon/garbodor/gigantamax/shiny.pal b/graphics/pokemon/garbodor/gigantamax/shiny.pal new file mode 100644 index 0000000000..a70820775d --- /dev/null +++ b/graphics/pokemon/garbodor/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +106 106 98 +189 189 189 +82 74 74 +148 139 131 +16 65 74 +82 238 106 +255 189 90 +41 164 164 +253 253 253 +255 134 134 +255 133 35 +178 86 230 +184 41 45 +75 86 255 diff --git a/graphics/pokemon/garganacl/back.png b/graphics/pokemon/garganacl/back.png new file mode 100644 index 0000000000..d8590c6ce0 Binary files /dev/null and b/graphics/pokemon/garganacl/back.png differ diff --git a/graphics/pokemon/garganacl/front.png b/graphics/pokemon/garganacl/front.png new file mode 100644 index 0000000000..416f535b35 Binary files /dev/null and b/graphics/pokemon/garganacl/front.png differ diff --git a/graphics/pokemon/garganacl/icon.png b/graphics/pokemon/garganacl/icon.png new file mode 100755 index 0000000000..bc2d038478 Binary files /dev/null and b/graphics/pokemon/garganacl/icon.png differ diff --git a/graphics/pokemon/garganacl/normal.pal b/graphics/pokemon/garganacl/normal.pal new file mode 100644 index 0000000000..2acd11e3b9 --- /dev/null +++ b/graphics/pokemon/garganacl/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +179 179 179 +217 217 217 +242 242 242 +138 138 138 +77 50 38 +148 104 90 +0 0 0 +102 61 44 +195 146 123 +245 147 45 +251 242 54 +46 43 40 +93 86 80 +220 191 179 +145 131 122 diff --git a/graphics/pokemon/garganacl/shiny.pal b/graphics/pokemon/garganacl/shiny.pal new file mode 100644 index 0000000000..0b0979dd27 --- /dev/null +++ b/graphics/pokemon/garganacl/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +161 104 55 +214 153 99 +237 173 116 +128 81 41 +77 50 38 +148 104 90 +0 0 0 +102 61 44 +195 146 123 +245 147 45 +251 242 54 +46 43 40 +93 86 80 +220 191 179 +145 131 122 diff --git a/graphics/pokemon/gastly/anim_front.png b/graphics/pokemon/gastly/anim_front.png index 6bb1447c32..e16ebb069e 100644 Binary files a/graphics/pokemon/gastly/anim_front.png and b/graphics/pokemon/gastly/anim_front.png differ diff --git a/graphics/pokemon/gastly/back.png b/graphics/pokemon/gastly/back.png index 07971e3c49..1d869be915 100644 Binary files a/graphics/pokemon/gastly/back.png and b/graphics/pokemon/gastly/back.png differ diff --git a/graphics/pokemon/gastly/normal.pal b/graphics/pokemon/gastly/normal.pal index 7541f17517..16672b45dc 100644 --- a/graphics/pokemon/gastly/normal.pal +++ b/graphics/pokemon/gastly/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 +255 255 255 +222 222 222 +222 82 57 +180 41 16 +255 0 255 +189 148 180 +139 98 131 +115 74 106 +57 41 57 213 172 205 189 148 180 139 98 131 -57 41 57 +255 0 255 +255 0 255 16 16 16 -115 74 106 -139 98 131 -112 72 104 -255 255 255 -180 41 16 -222 82 57 -208 168 192 -216 216 216 -180 41 16 -222 82 57 diff --git a/graphics/pokemon/gastly/shiny.pal b/graphics/pokemon/gastly/shiny.pal index 5984138176..c586f2bf98 100644 --- a/graphics/pokemon/gastly/shiny.pal +++ b/graphics/pokemon/gastly/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -160 224 248 -120 192 232 -88 152 208 -96 24 120 +255 255 255 +222 222 222 +222 82 57 +180 41 16 +255 0 255 +205 164 255 +172 123 205 +123 74 156 +98 24 123 +164 230 255 +123 197 238 +90 156 213 +255 0 255 +255 0 255 16 16 16 -120 72 152 -168 120 200 -112 72 104 -248 248 248 -176 40 16 -216 80 56 -216 80 56 -216 216 216 -176 40 16 -216 80 56 diff --git a/graphics/pokemon/gengar/anim_front.png b/graphics/pokemon/gengar/anim_front.png index 4b1e614ab3..140fa8d81c 100644 Binary files a/graphics/pokemon/gengar/anim_front.png and b/graphics/pokemon/gengar/anim_front.png differ diff --git a/graphics/pokemon/gengar/back.png b/graphics/pokemon/gengar/back.png index de0fa6599e..04b627f9ac 100644 Binary files a/graphics/pokemon/gengar/back.png and b/graphics/pokemon/gengar/back.png differ diff --git a/graphics/pokemon/gengar/gigantamax/back.png b/graphics/pokemon/gengar/gigantamax/back.png new file mode 100644 index 0000000000..67f5bc6070 Binary files /dev/null and b/graphics/pokemon/gengar/gigantamax/back.png differ diff --git a/graphics/pokemon/gengar/gigantamax/front.png b/graphics/pokemon/gengar/gigantamax/front.png new file mode 100644 index 0000000000..bbcd1756a4 Binary files /dev/null and b/graphics/pokemon/gengar/gigantamax/front.png differ diff --git a/graphics/pokemon/gengar/gigantamax/icon.png b/graphics/pokemon/gengar/gigantamax/icon.png new file mode 100644 index 0000000000..31b59d5370 Binary files /dev/null and b/graphics/pokemon/gengar/gigantamax/icon.png differ diff --git a/graphics/pokemon/gengar/gigantamax/normal.pal b/graphics/pokemon/gengar/gigantamax/normal.pal new file mode 100644 index 0000000000..963348184c --- /dev/null +++ b/graphics/pokemon/gengar/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +74 41 74 +16 16 16 +90 74 156 +148 115 180 +123 98 164 +150 62 128 +116 58 91 +204 30 91 +146 6 52 +180 139 189 +186 50 90 +255 246 255 +255 131 55 +255 255 0 +189 172 189 diff --git a/graphics/pokemon/gengar/gigantamax/shiny.pal b/graphics/pokemon/gengar/gigantamax/shiny.pal new file mode 100644 index 0000000000..b69ff97992 --- /dev/null +++ b/graphics/pokemon/gengar/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +99 75 99 +16 16 16 +168 157 196 +252 244 252 +209 188 214 +221 144 195 +183 142 184 +204 30 91 +146 6 52 +254 254 254 +84 84 84 +255 246 255 +95 95 95 +140 140 140 +189 172 189 diff --git a/graphics/pokemon/gengar/normal.pal b/graphics/pokemon/gengar/normal.pal index 16892bb23c..1eb1965ad6 100644 --- a/graphics/pokemon/gengar/normal.pal +++ b/graphics/pokemon/gengar/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -90 74 156 -180 139 189 -16 16 16 -148 115 180 -74 41 74 -123 98 164 -255 90 90 -255 148 148 -189 172 189 255 246 255 -106 98 123 222 213 222 -168 16 16 -72 40 72 -0 0 0 +106 98 123 +255 194 194 +255 144 144 +248 88 88 +189 172 189 +255 0 255 +255 0 255 +120 96 160 +176 136 184 +144 112 180 +90 74 152 +74 41 74 +16 16 16 diff --git a/graphics/pokemon/gengar/shiny.pal b/graphics/pokemon/gengar/shiny.pal index 175c4681e3..8721d43483 100644 --- a/graphics/pokemon/gengar/shiny.pal +++ b/graphics/pokemon/gengar/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -88 88 120 -144 144 176 -16 16 16 -120 120 152 -56 56 96 +255 255 255 +222 222 222 +106 98 123 +255 205 205 +238 144 144 +184 106 106 +189 172 189 +255 0 255 +255 0 255 104 104 136 -184 104 104 -232 144 144 -184 168 184 -248 240 248 -104 96 120 -216 208 216 -136 56 56 -72 40 72 -0 0 0 +148 148 180 +123 123 156 +90 90 123 +57 57 98 +16 16 16 diff --git a/graphics/pokemon/gholdengo/back.png b/graphics/pokemon/gholdengo/back.png new file mode 100644 index 0000000000..7968235e2e Binary files /dev/null and b/graphics/pokemon/gholdengo/back.png differ diff --git a/graphics/pokemon/gholdengo/front.png b/graphics/pokemon/gholdengo/front.png new file mode 100644 index 0000000000..410d23e6d0 Binary files /dev/null and b/graphics/pokemon/gholdengo/front.png differ diff --git a/graphics/pokemon/gholdengo/icon.png b/graphics/pokemon/gholdengo/icon.png new file mode 100755 index 0000000000..99d0e122f2 Binary files /dev/null and b/graphics/pokemon/gholdengo/icon.png differ diff --git a/graphics/pokemon/gholdengo/normal.pal b/graphics/pokemon/gholdengo/normal.pal new file mode 100644 index 0000000000..cb9c6fdf7c --- /dev/null +++ b/graphics/pokemon/gholdengo/normal.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +153 210 164 +112 92 40 +252 210 82 +255 255 255 +207 129 60 +197 154 66 +0 0 0 +134 120 80 +37 37 45 +189 166 99 +66 73 74 +181 194 222 diff --git a/graphics/pokemon/gholdengo/shiny.pal b/graphics/pokemon/gholdengo/shiny.pal new file mode 100644 index 0000000000..4823e4a57d --- /dev/null +++ b/graphics/pokemon/gholdengo/shiny.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +153 210 164 +112 92 40 +252 210 82 +255 255 255 +127 147 167 +197 154 66 +0 0 0 +134 120 80 +37 37 45 +189 166 99 +66 73 74 +181 194 222 diff --git a/graphics/pokemon/gimmighoul/back.png b/graphics/pokemon/gimmighoul/back.png new file mode 100644 index 0000000000..c6a6342407 Binary files /dev/null and b/graphics/pokemon/gimmighoul/back.png differ diff --git a/graphics/pokemon/gimmighoul/front.png b/graphics/pokemon/gimmighoul/front.png new file mode 100644 index 0000000000..19b1f7b252 Binary files /dev/null and b/graphics/pokemon/gimmighoul/front.png differ diff --git a/graphics/pokemon/gimmighoul/icon.png b/graphics/pokemon/gimmighoul/icon.png new file mode 100644 index 0000000000..9191406326 Binary files /dev/null and b/graphics/pokemon/gimmighoul/icon.png differ diff --git a/graphics/pokemon/gimmighoul/normal.pal b/graphics/pokemon/gimmighoul/normal.pal new file mode 100644 index 0000000000..f3317456b1 --- /dev/null +++ b/graphics/pokemon/gimmighoul/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +50 52 55 +138 98 57 +90 71 41 +84 91 107 +255 218 89 +221 193 38 +120 58 82 +15 15 15 +172 68 84 +173 147 56 +133 139 162 +194 198 202 +165 146 39 +133 139 163 +194 198 203 diff --git a/graphics/pokemon/gimmighoul/roaming/back.png b/graphics/pokemon/gimmighoul/roaming/back.png new file mode 100644 index 0000000000..ad90dc8a10 Binary files /dev/null and b/graphics/pokemon/gimmighoul/roaming/back.png differ diff --git a/graphics/pokemon/gimmighoul/roaming/front.png b/graphics/pokemon/gimmighoul/roaming/front.png new file mode 100644 index 0000000000..c8f6f3a935 Binary files /dev/null and b/graphics/pokemon/gimmighoul/roaming/front.png differ diff --git a/graphics/pokemon/gimmighoul/roaming/icon.png b/graphics/pokemon/gimmighoul/roaming/icon.png new file mode 100644 index 0000000000..e803b52554 Binary files /dev/null and b/graphics/pokemon/gimmighoul/roaming/icon.png differ diff --git a/graphics/pokemon/gimmighoul/roaming/normal.pal b/graphics/pokemon/gimmighoul/roaming/normal.pal new file mode 100644 index 0000000000..8c71fadd94 --- /dev/null +++ b/graphics/pokemon/gimmighoul/roaming/normal.pal @@ -0,0 +1,16 @@ +JASC-PAL +0100 +13 +114 214 163 +0 214 160 +0 212 159 +0 0 0 +31 44 56 +132 153 195 +65 108 140 +199 229 248 +161 200 224 +255 197 0 +221 124 0 +255 160 0 +128 57 0 diff --git a/graphics/pokemon/gimmighoul/roaming/shiny.pal b/graphics/pokemon/gimmighoul/roaming/shiny.pal new file mode 100644 index 0000000000..7ece225d51 --- /dev/null +++ b/graphics/pokemon/gimmighoul/roaming/shiny.pal @@ -0,0 +1,16 @@ +JASC-PAL +0100 +13 +114 214 163 +0 214 160 +0 212 159 +0 0 0 +31 44 56 +170 163 126 +135 131 102 +199 229 248 +228 209 183 +255 197 0 +221 124 0 +255 160 0 +128 57 0 diff --git a/graphics/pokemon/gimmighoul/shiny.pal b/graphics/pokemon/gimmighoul/shiny.pal new file mode 100644 index 0000000000..ac31efc409 --- /dev/null +++ b/graphics/pokemon/gimmighoul/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +50 52 55 +138 98 57 +90 71 41 +84 91 107 +255 218 89 +221 193 38 +120 58 82 +15 15 15 +172 68 84 +173 147 56 +160 159 129 +210 205 183 +165 146 39 +133 139 163 +194 198 203 diff --git a/graphics/pokemon/glimmet/back.png b/graphics/pokemon/glimmet/back.png new file mode 100755 index 0000000000..1fb42ce2c3 Binary files /dev/null and b/graphics/pokemon/glimmet/back.png differ diff --git a/graphics/pokemon/glimmet/front.png b/graphics/pokemon/glimmet/front.png new file mode 100755 index 0000000000..c403aefa04 Binary files /dev/null and b/graphics/pokemon/glimmet/front.png differ diff --git a/graphics/pokemon/glimmet/icon.png b/graphics/pokemon/glimmet/icon.png new file mode 100755 index 0000000000..1bc74def32 Binary files /dev/null and b/graphics/pokemon/glimmet/icon.png differ diff --git a/graphics/pokemon/glimmet/normal.pal b/graphics/pokemon/glimmet/normal.pal new file mode 100755 index 0000000000..283d3f6c9f --- /dev/null +++ b/graphics/pokemon/glimmet/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +56 76 176 +40 48 112 +96 204 248 +56 132 240 +40 68 88 +96 132 152 +152 204 216 +248 248 48 +16 16 16 +128 92 160 +64 44 96 +184 140 208 +216 184 232 +67 78 94 +0 0 0 diff --git a/graphics/pokemon/glimmet/shiny.pal b/graphics/pokemon/glimmet/shiny.pal new file mode 100755 index 0000000000..7f1f97e247 --- /dev/null +++ b/graphics/pokemon/glimmet/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +63 171 181 +40 89 112 +201 245 240 +136 247 236 +44 49 56 +96 132 152 +152 204 216 +248 248 48 +16 16 16 +70 117 212 +36 70 138 +108 146 229 +141 168 227 +67 78 94 +0 0 0 diff --git a/graphics/pokemon/glimmora/back.png b/graphics/pokemon/glimmora/back.png new file mode 100755 index 0000000000..2cb02cad48 Binary files /dev/null and b/graphics/pokemon/glimmora/back.png differ diff --git a/graphics/pokemon/glimmora/front.png b/graphics/pokemon/glimmora/front.png new file mode 100755 index 0000000000..6862760a8d Binary files /dev/null and b/graphics/pokemon/glimmora/front.png differ diff --git a/graphics/pokemon/glimmora/icon.png b/graphics/pokemon/glimmora/icon.png new file mode 100755 index 0000000000..12e50f0cbc Binary files /dev/null and b/graphics/pokemon/glimmora/icon.png differ diff --git a/graphics/pokemon/glimmora/normal.pal b/graphics/pokemon/glimmora/normal.pal new file mode 100755 index 0000000000..1df274c1e7 --- /dev/null +++ b/graphics/pokemon/glimmora/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 84 120 +16 16 16 +88 232 248 +40 136 168 +16 24 96 +40 96 208 +24 52 136 +80 156 240 +56 48 104 +192 140 224 +112 84 160 +32 40 80 +48 68 120 +120 152 184 +248 248 48 diff --git a/graphics/pokemon/glimmora/shiny.pal b/graphics/pokemon/glimmora/shiny.pal new file mode 100755 index 0000000000..e7815983e0 --- /dev/null +++ b/graphics/pokemon/glimmora/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +53 103 115 +16 16 16 +217 255 247 +184 255 240 +32 111 131 +87 222 219 +78 187 217 +163 255 235 +28 81 186 +92 144 249 +63 119 232 +32 40 80 +48 68 120 +120 152 184 +248 248 48 diff --git a/graphics/pokemon/grafaiai/back.png b/graphics/pokemon/grafaiai/back.png new file mode 100755 index 0000000000..78e9170cd9 Binary files /dev/null and b/graphics/pokemon/grafaiai/back.png differ diff --git a/graphics/pokemon/grafaiai/front.png b/graphics/pokemon/grafaiai/front.png new file mode 100755 index 0000000000..b301080be5 Binary files /dev/null and b/graphics/pokemon/grafaiai/front.png differ diff --git a/graphics/pokemon/grafaiai/icon.png b/graphics/pokemon/grafaiai/icon.png new file mode 100755 index 0000000000..9e027481aa Binary files /dev/null and b/graphics/pokemon/grafaiai/icon.png differ diff --git a/graphics/pokemon/grafaiai/normal.pal b/graphics/pokemon/grafaiai/normal.pal new file mode 100755 index 0000000000..ea6b7bf6f4 --- /dev/null +++ b/graphics/pokemon/grafaiai/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 104 88 +16 16 16 +232 232 232 +176 168 136 +40 32 48 +64 56 72 +88 64 152 +152 208 176 +216 232 192 +40 64 80 +96 120 128 +136 16 72 +208 56 112 +56 184 216 +32 128 176 diff --git a/graphics/pokemon/grafaiai/shiny.pal b/graphics/pokemon/grafaiai/shiny.pal new file mode 100755 index 0000000000..5b115ea4af --- /dev/null +++ b/graphics/pokemon/grafaiai/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 112 112 +16 16 16 +232 232 232 +176 176 176 +80 80 56 +120 120 96 +176 72 96 +168 168 224 +208 200 248 +56 72 80 +112 120 128 +192 128 0 +248 216 72 +144 96 216 +88 48 144 diff --git a/graphics/pokemon/great_tusk/anim_front.png b/graphics/pokemon/great_tusk/anim_front.png new file mode 100644 index 0000000000..c4362af29c Binary files /dev/null and b/graphics/pokemon/great_tusk/anim_front.png differ diff --git a/graphics/pokemon/great_tusk/back.png b/graphics/pokemon/great_tusk/back.png new file mode 100644 index 0000000000..0b7c0f6620 Binary files /dev/null and b/graphics/pokemon/great_tusk/back.png differ diff --git a/graphics/pokemon/great_tusk/icon.png b/graphics/pokemon/great_tusk/icon.png new file mode 100755 index 0000000000..30384d570d Binary files /dev/null and b/graphics/pokemon/great_tusk/icon.png differ diff --git a/graphics/pokemon/great_tusk/normal.pal b/graphics/pokemon/great_tusk/normal.pal new file mode 100644 index 0000000000..b5c23a1288 --- /dev/null +++ b/graphics/pokemon/great_tusk/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 160 232 +112 24 48 +144 8 56 +232 48 120 +104 24 40 +16 16 16 +40 32 64 +96 88 160 +56 48 88 +120 80 64 +184 168 160 +240 240 216 +128 136 160 +168 192 216 +248 240 88 +8 8 8 diff --git a/graphics/pokemon/great_tusk/shiny.pal b/graphics/pokemon/great_tusk/shiny.pal new file mode 100644 index 0000000000..c7449781d5 --- /dev/null +++ b/graphics/pokemon/great_tusk/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 160 232 +160 104 16 +216 168 88 +248 240 152 +104 24 40 +16 16 16 +56 24 24 +128 80 64 +96 64 48 +120 80 64 +184 168 160 +240 240 216 +72 176 144 +176 240 200 +248 240 88 +8 8 8 diff --git a/graphics/pokemon/greavard/back.png b/graphics/pokemon/greavard/back.png new file mode 100755 index 0000000000..3fef905434 Binary files /dev/null and b/graphics/pokemon/greavard/back.png differ diff --git a/graphics/pokemon/greavard/front.png b/graphics/pokemon/greavard/front.png new file mode 100755 index 0000000000..1fde607510 Binary files /dev/null and b/graphics/pokemon/greavard/front.png differ diff --git a/graphics/pokemon/greavard/icon.png b/graphics/pokemon/greavard/icon.png new file mode 100755 index 0000000000..a43e9a3875 Binary files /dev/null and b/graphics/pokemon/greavard/icon.png differ diff --git a/graphics/pokemon/greavard/normal.pal b/graphics/pokemon/greavard/normal.pal new file mode 100755 index 0000000000..566bd27604 --- /dev/null +++ b/graphics/pokemon/greavard/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 60 184 +176 104 232 +208 144 160 +248 212 40 +16 16 16 +96 112 120 +64 80 80 +248 252 248 +184 188 192 +144 132 152 +128 144 160 +176 196 208 +152 164 176 +88 44 48 +184 88 80 diff --git a/graphics/pokemon/greavard/shiny.pal b/graphics/pokemon/greavard/shiny.pal new file mode 100755 index 0000000000..12044feff3 --- /dev/null +++ b/graphics/pokemon/greavard/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 60 184 +176 104 232 +208 144 160 +248 212 40 +16 16 16 +145 129 66 +100 90 50 +209 213 211 +164 155 139 +144 132 152 +189 169 92 +233 206 102 +152 164 176 +88 44 48 +184 88 80 diff --git a/graphics/pokemon/grimer/anim_front.png b/graphics/pokemon/grimer/anim_front.png index a2363840e7..312a64aa5a 100644 Binary files a/graphics/pokemon/grimer/anim_front.png and b/graphics/pokemon/grimer/anim_front.png differ diff --git a/graphics/pokemon/grimer/back.png b/graphics/pokemon/grimer/back.png index 280c733fc5..030242885e 100644 Binary files a/graphics/pokemon/grimer/back.png and b/graphics/pokemon/grimer/back.png differ diff --git a/graphics/pokemon/grimer/normal.pal b/graphics/pokemon/grimer/normal.pal index b7c371b486..5d2c17fd75 100644 --- a/graphics/pokemon/grimer/normal.pal +++ b/graphics/pokemon/grimer/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -156 106 156 -222 172 222 -98 57 123 -238 222 238 -180 139 180 -16 16 16 -123 74 131 -248 248 248 +255 255 255 +213 213 222 +172 180 189 131 139 156 65 74 90 -172 180 189 -208 208 216 -0 0 0 -0 0 0 -0 0 0 +238 222 238 +222 172 222 +180 139 180 +156 106 156 +123 74 131 +98 57 123 +255 0 255 +255 0 255 +255 0 255 +16 16 16 diff --git a/graphics/pokemon/grimer/shiny.pal b/graphics/pokemon/grimer/shiny.pal index 96ae46dcbe..c5fa29f3f9 100644 --- a/graphics/pokemon/grimer/shiny.pal +++ b/graphics/pokemon/grimer/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -128 176 96 -184 224 144 -72 120 40 -200 240 160 -152 200 128 +152 160 208 +255 255 255 +213 213 222 +172 180 189 +131 139 156 +65 74 90 +205 246 164 +189 230 148 +156 205 131 +131 180 98 +98 148 65 +74 123 41 +255 0 255 +255 0 255 +255 0 255 16 16 16 -96 144 64 -248 248 248 -128 136 152 -64 72 88 -168 176 184 -208 208 216 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/grimmsnarl/gigantamax/back.png b/graphics/pokemon/grimmsnarl/gigantamax/back.png new file mode 100644 index 0000000000..834e97f853 Binary files /dev/null and b/graphics/pokemon/grimmsnarl/gigantamax/back.png differ diff --git a/graphics/pokemon/grimmsnarl/gigantamax/front.png b/graphics/pokemon/grimmsnarl/gigantamax/front.png new file mode 100644 index 0000000000..a497605717 Binary files /dev/null and b/graphics/pokemon/grimmsnarl/gigantamax/front.png differ diff --git a/graphics/pokemon/grimmsnarl/gigantamax/icon.png b/graphics/pokemon/grimmsnarl/gigantamax/icon.png new file mode 100644 index 0000000000..23bc5fd0dc Binary files /dev/null and b/graphics/pokemon/grimmsnarl/gigantamax/icon.png differ diff --git a/graphics/pokemon/grimmsnarl/gigantamax/normal.pal b/graphics/pokemon/grimmsnarl/gigantamax/normal.pal new file mode 100644 index 0000000000..806034cb62 --- /dev/null +++ b/graphics/pokemon/grimmsnarl/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +38 19 63 +67 53 104 +93 70 148 +53 41 84 +53 106 60 +71 190 98 +253 11 66 +64 149 85 +248 116 160 +201 201 201 +253 253 253 +233 55 97 +247 92 144 +15 15 15 diff --git a/graphics/pokemon/grimmsnarl/gigantamax/shiny.pal b/graphics/pokemon/grimmsnarl/gigantamax/shiny.pal new file mode 100644 index 0000000000..5d5b1b75a4 --- /dev/null +++ b/graphics/pokemon/grimmsnarl/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +94 89 96 +163 157 165 +221 215 223 +138 133 140 +107 46 103 +199 52 175 +253 11 66 +152 53 133 +248 116 160 +201 201 201 +253 253 253 +66 86 172 +85 134 201 +15 15 15 diff --git a/graphics/pokemon/hakamo_o/anim_front.png b/graphics/pokemon/hakamo_o/anim_front.png index 2b5112a2d5..599bbe3eeb 100644 Binary files a/graphics/pokemon/hakamo_o/anim_front.png and b/graphics/pokemon/hakamo_o/anim_front.png differ diff --git a/graphics/pokemon/hakamo_o/back.png b/graphics/pokemon/hakamo_o/back.png index f994a70e9d..402eabab0d 100644 Binary files a/graphics/pokemon/hakamo_o/back.png and b/graphics/pokemon/hakamo_o/back.png differ diff --git a/graphics/pokemon/hatterene/gigantamax/back.png b/graphics/pokemon/hatterene/gigantamax/back.png new file mode 100644 index 0000000000..68da7572c3 Binary files /dev/null and b/graphics/pokemon/hatterene/gigantamax/back.png differ diff --git a/graphics/pokemon/hatterene/gigantamax/front.png b/graphics/pokemon/hatterene/gigantamax/front.png new file mode 100644 index 0000000000..6c9e2c546d Binary files /dev/null and b/graphics/pokemon/hatterene/gigantamax/front.png differ diff --git a/graphics/pokemon/hatterene/gigantamax/icon.png b/graphics/pokemon/hatterene/gigantamax/icon.png new file mode 100644 index 0000000000..cc0ca7f2dc Binary files /dev/null and b/graphics/pokemon/hatterene/gigantamax/icon.png differ diff --git a/graphics/pokemon/hatterene/gigantamax/normal.pal b/graphics/pokemon/hatterene/gigantamax/normal.pal new file mode 100644 index 0000000000..26aac7facb --- /dev/null +++ b/graphics/pokemon/hatterene/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +114 122 177 +200 233 255 +172 191 223 +148 143 194 +245 186 194 +228 137 160 +229 228 239 +193 89 116 +254 254 254 +180 162 183 +133 109 139 +217 206 219 +249 213 218 +15 15 15 diff --git a/graphics/pokemon/hatterene/gigantamax/shiny.pal b/graphics/pokemon/hatterene/gigantamax/shiny.pal new file mode 100644 index 0000000000..9682f1ec43 --- /dev/null +++ b/graphics/pokemon/hatterene/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +101 75 95 +234 213 208 +192 166 187 +144 116 138 +252 153 172 +217 94 115 +225 193 207 +144 53 68 +254 254 254 +177 134 149 +137 90 110 +217 206 219 +245 186 194 +15 15 15 diff --git a/graphics/pokemon/haunter/anim_front.png b/graphics/pokemon/haunter/anim_front.png index 03156dfa4c..63415497c9 100644 Binary files a/graphics/pokemon/haunter/anim_front.png and b/graphics/pokemon/haunter/anim_front.png differ diff --git a/graphics/pokemon/haunter/back.png b/graphics/pokemon/haunter/back.png index dccfa74425..babc9f43c5 100644 Binary files a/graphics/pokemon/haunter/back.png and b/graphics/pokemon/haunter/back.png differ diff --git a/graphics/pokemon/haunter/normal.pal b/graphics/pokemon/haunter/normal.pal index 79ac421466..8458b3532d 100644 --- a/graphics/pokemon/haunter/normal.pal +++ b/graphics/pokemon/haunter/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 88 136 -192 152 200 -80 64 96 +213 164 222 +197 156 205 +172 131 197 +131 90 139 +82 65 98 +255 0 255 +255 0 255 +255 0 255 +222 90 164 +180 24 98 +106 0 0 +213 213 213 +115 115 115 16 16 16 -168 128 192 -248 248 248 -112 112 112 -176 24 96 -216 88 160 -208 208 208 -104 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +255 255 255 diff --git a/graphics/pokemon/haunter/shiny.pal b/graphics/pokemon/haunter/shiny.pal index 8c2ce31bcf..b935601171 100644 --- a/graphics/pokemon/haunter/shiny.pal +++ b/graphics/pokemon/haunter/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 88 112 -192 136 208 -80 64 104 +213 164 230 +197 139 213 +172 106 213 +131 90 115 +82 65 106 +255 0 255 +255 0 255 +255 0 255 +90 148 255 +41 98 213 +8 49 164 +213 213 213 +115 115 115 16 16 16 -168 104 208 -248 248 248 -112 112 112 -40 96 208 -88 144 248 -208 208 208 -8 48 160 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +255 255 255 diff --git a/graphics/pokemon/hitmonchan/anim_front.png b/graphics/pokemon/hitmonchan/anim_front.png index ee3725e0ee..d615ae6a72 100644 Binary files a/graphics/pokemon/hitmonchan/anim_front.png and b/graphics/pokemon/hitmonchan/anim_front.png differ diff --git a/graphics/pokemon/hitmonchan/back.png b/graphics/pokemon/hitmonchan/back.png index 8f5bd8ded7..e30cbba5fd 100644 Binary files a/graphics/pokemon/hitmonchan/back.png and b/graphics/pokemon/hitmonchan/back.png differ diff --git a/graphics/pokemon/hitmonchan/normal.pal b/graphics/pokemon/hitmonchan/normal.pal index 2124609315..aee2892bf1 100644 --- a/graphics/pokemon/hitmonchan/normal.pal +++ b/graphics/pokemon/hitmonchan/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -90 65 16 -205 180 123 -16 16 16 -164 139 115 -238 213 156 255 246 255 -98 74 115 +222 205 222 +197 180 197 +164 156 164 98 74 115 189 49 74 255 148 90 230 98 74 +189 49 74 139 32 0 -164 156 164 -197 180 197 -232 128 120 +238 213 156 +205 180 123 +164 139 115 +90 65 16 +16 16 16 diff --git a/graphics/pokemon/hitmonchan/shiny.pal b/graphics/pokemon/hitmonchan/shiny.pal index 87ff42e4b6..6a2f264915 100644 --- a/graphics/pokemon/hitmonchan/shiny.pal +++ b/graphics/pokemon/hitmonchan/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -88 96 24 -192 208 96 +208 152 160 +246 246 255 +213 205 222 +189 180 197 +156 156 164 +90 74 115 +189 49 74 +65 180 255 +24 131 213 +0 90 180 +0 49 148 +230 246 139 +197 213 98 +148 164 65 +106 123 8 16 16 16 -144 160 64 -224 240 136 -248 240 248 -88 72 112 -96 96 168 -32 104 176 -120 184 224 -80 152 200 -16 48 112 -144 144 152 -184 176 192 -204 77 77 diff --git a/graphics/pokemon/hitmonlee/anim_front.png b/graphics/pokemon/hitmonlee/anim_front.png index 305a858f83..0062524a88 100644 Binary files a/graphics/pokemon/hitmonlee/anim_front.png and b/graphics/pokemon/hitmonlee/anim_front.png differ diff --git a/graphics/pokemon/hitmonlee/back.png b/graphics/pokemon/hitmonlee/back.png index 303f139f59..10a59d797e 100644 Binary files a/graphics/pokemon/hitmonlee/back.png and b/graphics/pokemon/hitmonlee/back.png differ diff --git a/graphics/pokemon/hitmonlee/normal.pal b/graphics/pokemon/hitmonlee/normal.pal index ef9db09638..5543d83814 100644 --- a/graphics/pokemon/hitmonlee/normal.pal +++ b/graphics/pokemon/hitmonlee/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -131 90 57 -164 123 115 -205 164 131 -98 57 24 238 197 164 +205 164 131 +164 123 115 +131 90 57 +98 57 24 +255 255 255 +213 205 205 115 98 98 -41 41 41 -248 248 248 -208 200 200 -90 74 41 -189 180 106 238 230 180 189 180 106 -240 224 168 -0 0 0 +90 74 41 +238 255 148 +197 205 115 +115 123 32 +41 41 41 diff --git a/graphics/pokemon/hitmonlee/shiny.pal b/graphics/pokemon/hitmonlee/shiny.pal index f50482897d..e3aa7e63a6 100644 --- a/graphics/pokemon/hitmonlee/shiny.pal +++ b/graphics/pokemon/hitmonlee/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -64 88 0 -96 120 16 -152 168 56 -32 56 8 -184 200 88 -112 96 96 -16 16 16 -248 248 248 -208 200 200 -88 56 40 -184 160 104 -232 216 176 -184 160 104 -232 216 176 -0 0 0 +152 160 208 +189 205 74 +148 172 41 +98 123 8 +65 90 0 +41 65 0 +255 255 255 +213 205 205 +115 98 98 +238 222 180 +189 164 106 +90 57 41 +230 255 148 +189 205 115 +106 123 32 +41 41 41 diff --git a/graphics/pokemon/hitmontop/anim_front.png b/graphics/pokemon/hitmontop/anim_front.png index 65ef049e10..b664f90c39 100644 Binary files a/graphics/pokemon/hitmontop/anim_front.png and b/graphics/pokemon/hitmontop/anim_front.png differ diff --git a/graphics/pokemon/hitmontop/back.png b/graphics/pokemon/hitmontop/back.png index ca3daf80bc..bf440a3bb2 100644 Binary files a/graphics/pokemon/hitmontop/back.png and b/graphics/pokemon/hitmontop/back.png differ diff --git a/graphics/pokemon/hitmontop/normal.pal b/graphics/pokemon/hitmontop/normal.pal index c8cb22d510..c600d5c24d 100644 --- a/graphics/pokemon/hitmontop/normal.pal +++ b/graphics/pokemon/hitmontop/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -144 144 152 -96 96 104 -248 248 248 -200 200 200 -72 112 192 -96 152 216 -136 184 232 -80 88 144 -128 88 40 +255 255 255 +255 222 156 +222 189 131 +180 139 90 +131 90 41 +139 189 238 +98 156 222 +74 115 197 +82 90 148 +197 74 49 +123 32 24 +205 205 205 +148 148 156 +98 98 106 16 16 16 -216 184 128 -176 136 88 -248 216 152 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/hitmontop/shiny.pal b/graphics/pokemon/hitmontop/shiny.pal index 2928758f4e..8e26aff7f2 100644 --- a/graphics/pokemon/hitmontop/shiny.pal +++ b/graphics/pokemon/hitmontop/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -144 144 152 -96 96 104 -248 248 248 -200 200 200 -144 72 160 -208 120 200 -240 152 216 -112 48 96 -112 104 80 +255 255 255 +238 238 230 +213 213 197 +172 164 156 +115 106 82 +246 156 222 +213 123 205 +164 82 180 +139 49 123 +197 74 49 +123 32 24 +205 205 205 +148 148 156 +98 98 106 16 16 16 -208 208 192 -168 160 152 -232 232 224 -144 144 152 -0 0 0 diff --git a/graphics/pokemon/houndstone/back.png b/graphics/pokemon/houndstone/back.png new file mode 100644 index 0000000000..c2ed542d6a Binary files /dev/null and b/graphics/pokemon/houndstone/back.png differ diff --git a/graphics/pokemon/houndstone/front.png b/graphics/pokemon/houndstone/front.png new file mode 100644 index 0000000000..5b4271eb9e Binary files /dev/null and b/graphics/pokemon/houndstone/front.png differ diff --git a/graphics/pokemon/houndstone/icon.png b/graphics/pokemon/houndstone/icon.png new file mode 100755 index 0000000000..51d26434c8 Binary files /dev/null and b/graphics/pokemon/houndstone/icon.png differ diff --git a/graphics/pokemon/houndstone/normal.pal b/graphics/pokemon/houndstone/normal.pal new file mode 100644 index 0000000000..a41e9b3fba --- /dev/null +++ b/graphics/pokemon/houndstone/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +65 72 74 +98 85 106 +139 149 164 +131 113 139 +123 121 123 +90 93 90 +156 157 156 +189 190 197 +0 0 0 +172 174 189 +246 246 246 +8 12 8 +197 198 205 +255 250 255 +197 198 197 diff --git a/graphics/pokemon/houndstone/shiny.pal b/graphics/pokemon/houndstone/shiny.pal new file mode 100644 index 0000000000..f925949f21 --- /dev/null +++ b/graphics/pokemon/houndstone/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +65 72 74 +111 84 55 +169 118 61 +173 107 75 +123 121 123 +90 93 90 +156 157 156 +207 162 120 +0 0 0 +207 162 120 +246 246 246 +8 12 8 +222 201 114 +242 233 168 +197 198 197 diff --git a/graphics/pokemon/hypno/anim_front.png b/graphics/pokemon/hypno/anim_front.png index d96bd7613d..73a791256a 100644 Binary files a/graphics/pokemon/hypno/anim_front.png and b/graphics/pokemon/hypno/anim_front.png differ diff --git a/graphics/pokemon/hypno/anim_frontf.png b/graphics/pokemon/hypno/anim_frontf.png index 692bb8933b..05e99f7645 100644 Binary files a/graphics/pokemon/hypno/anim_frontf.png and b/graphics/pokemon/hypno/anim_frontf.png differ diff --git a/graphics/pokemon/hypno/back.png b/graphics/pokemon/hypno/back.png index 8a7987d1ea..118eba568e 100644 Binary files a/graphics/pokemon/hypno/back.png and b/graphics/pokemon/hypno/back.png differ diff --git a/graphics/pokemon/hypno/backf.png b/graphics/pokemon/hypno/backf.png index a92c0b9917..746fdcb5da 100644 Binary files a/graphics/pokemon/hypno/backf.png and b/graphics/pokemon/hypno/backf.png differ diff --git a/graphics/pokemon/hypno/normal.pal b/graphics/pokemon/hypno/normal.pal index be159251d4..1a211d4f6d 100644 --- a/graphics/pokemon/hypno/normal.pal +++ b/graphics/pokemon/hypno/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 96 48 -104 80 0 -240 216 0 0 0 0 -176 144 32 -88 64 40 -248 232 112 -216 184 64 -128 144 160 -80 88 104 -248 248 248 -152 168 184 -200 216 232 -160 128 88 +106 82 0 +180 148 32 +222 189 65 +246 222 0 +255 238 115 +90 65 41 +139 98 49 +164 131 90 +82 90 106 +131 148 164 +156 172 189 +205 222 238 +255 255 255 0 0 0 diff --git a/graphics/pokemon/hypno/shiny.pal b/graphics/pokemon/hypno/shiny.pal index ffcdb1df7a..b325ea1da4 100644 --- a/graphics/pokemon/hypno/shiny.pal +++ b/graphics/pokemon/hypno/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 96 48 -136 48 80 -232 144 176 -16 16 16 -168 80 112 -88 64 40 -248 176 208 -200 112 168 -160 144 128 -104 88 80 -248 248 248 -184 168 152 -232 216 200 0 0 0 +139 49 82 +172 82 115 +205 106 164 +238 148 180 +255 172 205 +90 65 41 +128 64 40 +136 72 48 +106 90 82 +164 148 131 +189 172 156 +238 222 205 +255 255 255 0 0 0 diff --git a/graphics/pokemon/inteleon/gigantamax/back.png b/graphics/pokemon/inteleon/gigantamax/back.png new file mode 100644 index 0000000000..81be3b2c25 Binary files /dev/null and b/graphics/pokemon/inteleon/gigantamax/back.png differ diff --git a/graphics/pokemon/inteleon/gigantamax/front.png b/graphics/pokemon/inteleon/gigantamax/front.png new file mode 100644 index 0000000000..6f55e4e29e Binary files /dev/null and b/graphics/pokemon/inteleon/gigantamax/front.png differ diff --git a/graphics/pokemon/inteleon/gigantamax/icon.png b/graphics/pokemon/inteleon/gigantamax/icon.png new file mode 100644 index 0000000000..a27bf3f1c8 Binary files /dev/null and b/graphics/pokemon/inteleon/gigantamax/icon.png differ diff --git a/graphics/pokemon/inteleon/gigantamax/normal.pal b/graphics/pokemon/inteleon/gigantamax/normal.pal new file mode 100644 index 0000000000..122b980735 --- /dev/null +++ b/graphics/pokemon/inteleon/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +0 62 106 +156 210 226 +16 16 16 +84 155 195 +176 250 255 +253 253 253 +92 218 218 +1 89 154 +28 123 193 +49 48 47 +233 205 95 +100 101 101 +74 74 77 +242 248 137 +238 62 92 diff --git a/graphics/pokemon/inteleon/gigantamax/shiny.pal b/graphics/pokemon/inteleon/gigantamax/shiny.pal new file mode 100644 index 0000000000..f112483770 --- /dev/null +++ b/graphics/pokemon/inteleon/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +0 68 114 +16 122 192 +16 16 16 +0 96 164 +176 250 255 +253 253 253 +92 218 218 +14 166 168 +6 204 207 +152 157 172 +233 95 146 +247 251 252 +196 204 212 +248 137 182 +238 62 92 diff --git a/graphics/pokemon/iron_bundle/back.png b/graphics/pokemon/iron_bundle/back.png new file mode 100644 index 0000000000..78451dda9b Binary files /dev/null and b/graphics/pokemon/iron_bundle/back.png differ diff --git a/graphics/pokemon/iron_bundle/front.png b/graphics/pokemon/iron_bundle/front.png new file mode 100644 index 0000000000..a98137941b Binary files /dev/null and b/graphics/pokemon/iron_bundle/front.png differ diff --git a/graphics/pokemon/iron_bundle/icon.png b/graphics/pokemon/iron_bundle/icon.png new file mode 100755 index 0000000000..99b380a543 Binary files /dev/null and b/graphics/pokemon/iron_bundle/icon.png differ diff --git a/graphics/pokemon/iron_bundle/normal.pal b/graphics/pokemon/iron_bundle/normal.pal new file mode 100644 index 0000000000..ea35b3b984 --- /dev/null +++ b/graphics/pokemon/iron_bundle/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +189 246 255 +90 194 255 +255 206 65 +205 141 41 +123 68 0 +0 0 0 +41 36 41 +217 69 55 +255 250 250 +142 43 43 +65 68 74 +79 30 31 +174 174 182 +90 93 90 +65 141 180 diff --git a/graphics/pokemon/iron_bundle/shiny.pal b/graphics/pokemon/iron_bundle/shiny.pal new file mode 100644 index 0000000000..b27dde2a6c --- /dev/null +++ b/graphics/pokemon/iron_bundle/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +189 246 255 +90 194 255 +255 206 65 +205 141 41 +123 68 0 +0 0 0 +41 36 41 +172 170 180 +197 198 189 +98 101 115 +65 68 74 +82 80 82 +156 141 148 +90 93 90 +65 141 180 diff --git a/graphics/pokemon/iron_hands/back.png b/graphics/pokemon/iron_hands/back.png new file mode 100644 index 0000000000..b7702eb316 Binary files /dev/null and b/graphics/pokemon/iron_hands/back.png differ diff --git a/graphics/pokemon/iron_hands/front.png b/graphics/pokemon/iron_hands/front.png new file mode 100644 index 0000000000..1971bb88da Binary files /dev/null and b/graphics/pokemon/iron_hands/front.png differ diff --git a/graphics/pokemon/iron_hands/icon.png b/graphics/pokemon/iron_hands/icon.png new file mode 100755 index 0000000000..d28b62a6d0 Binary files /dev/null and b/graphics/pokemon/iron_hands/icon.png differ diff --git a/graphics/pokemon/iron_hands/normal.pal b/graphics/pokemon/iron_hands/normal.pal new file mode 100644 index 0000000000..265b3a66f6 --- /dev/null +++ b/graphics/pokemon/iron_hands/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +82 81 80 +49 55 88 +16 16 16 +203 201 197 +123 134 165 +66 78 115 +154 142 145 +147 118 17 +252 210 22 +118 105 108 +60 51 49 +206 158 16 +255 255 255 +41 38 41 +0 0 0 diff --git a/graphics/pokemon/iron_hands/shiny.pal b/graphics/pokemon/iron_hands/shiny.pal new file mode 100644 index 0000000000..ebe29a2267 --- /dev/null +++ b/graphics/pokemon/iron_hands/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +82 81 80 +100 103 113 +16 16 16 +168 170 176 +213 213 213 +168 170 176 +100 103 113 +147 118 17 +252 210 22 +118 105 108 +60 51 49 +206 158 16 +255 255 255 +60 51 49 +0 0 0 diff --git a/graphics/pokemon/iron_jugulis/back.png b/graphics/pokemon/iron_jugulis/back.png new file mode 100644 index 0000000000..cb6e05f26e Binary files /dev/null and b/graphics/pokemon/iron_jugulis/back.png differ diff --git a/graphics/pokemon/iron_jugulis/front.png b/graphics/pokemon/iron_jugulis/front.png new file mode 100644 index 0000000000..c2c4095654 Binary files /dev/null and b/graphics/pokemon/iron_jugulis/front.png differ diff --git a/graphics/pokemon/iron_jugulis/icon.png b/graphics/pokemon/iron_jugulis/icon.png new file mode 100755 index 0000000000..14ae400dfd Binary files /dev/null and b/graphics/pokemon/iron_jugulis/icon.png differ diff --git a/graphics/pokemon/iron_jugulis/normal.pal b/graphics/pokemon/iron_jugulis/normal.pal new file mode 100644 index 0000000000..e0a017d346 --- /dev/null +++ b/graphics/pokemon/iron_jugulis/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +180 255 139 +255 76 205 +238 234 238 +148 40 123 +123 121 123 +32 68 156 +16 44 82 +255 255 255 +115 157 238 +65 52 65 +131 170 246 +8 12 8 +57 117 230 +41 40 41 +106 129 213 +74 64 74 diff --git a/graphics/pokemon/iron_jugulis/shiny.pal b/graphics/pokemon/iron_jugulis/shiny.pal new file mode 100644 index 0000000000..e0a017d346 --- /dev/null +++ b/graphics/pokemon/iron_jugulis/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +180 255 139 +255 76 205 +238 234 238 +148 40 123 +123 121 123 +32 68 156 +16 44 82 +255 255 255 +115 157 238 +65 52 65 +131 170 246 +8 12 8 +57 117 230 +41 40 41 +106 129 213 +74 64 74 diff --git a/graphics/pokemon/iron_leaves/back.png b/graphics/pokemon/iron_leaves/back.png new file mode 100644 index 0000000000..a169e8f223 Binary files /dev/null and b/graphics/pokemon/iron_leaves/back.png differ diff --git a/graphics/pokemon/iron_leaves/front.png b/graphics/pokemon/iron_leaves/front.png new file mode 100644 index 0000000000..d636ded791 Binary files /dev/null and b/graphics/pokemon/iron_leaves/front.png differ diff --git a/graphics/pokemon/iron_leaves/icon.png b/graphics/pokemon/iron_leaves/icon.png new file mode 100644 index 0000000000..a5d308e6cb Binary files /dev/null and b/graphics/pokemon/iron_leaves/icon.png differ diff --git a/graphics/pokemon/iron_leaves/normal.pal b/graphics/pokemon/iron_leaves/normal.pal new file mode 100644 index 0000000000..946223c719 --- /dev/null +++ b/graphics/pokemon/iron_leaves/normal.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +153 210 164 +68 112 63 +33 66 28 +148 215 148 +85 174 88 +86 141 80 +179 28 91 +255 69 115 +255 230 240 +16 16 16 +165 146 156 +206 202 197 +106 115 123 +77 77 87 +38 38 45 diff --git a/graphics/pokemon/iron_leaves/shiny.pal b/graphics/pokemon/iron_leaves/shiny.pal new file mode 100644 index 0000000000..5702b5b448 --- /dev/null +++ b/graphics/pokemon/iron_leaves/shiny.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +153 210 164 +128 128 120 +72 72 72 +216 216 216 +208 200 208 +176 168 168 +179 28 91 +255 69 115 +255 230 240 +16 16 16 +165 146 156 +206 202 197 +106 115 123 +77 77 87 +38 38 45 diff --git a/graphics/pokemon/iron_moth/back.png b/graphics/pokemon/iron_moth/back.png new file mode 100644 index 0000000000..b5b4050c36 Binary files /dev/null and b/graphics/pokemon/iron_moth/back.png differ diff --git a/graphics/pokemon/iron_moth/front.png b/graphics/pokemon/iron_moth/front.png new file mode 100644 index 0000000000..fc40325097 Binary files /dev/null and b/graphics/pokemon/iron_moth/front.png differ diff --git a/graphics/pokemon/iron_moth/icon.png b/graphics/pokemon/iron_moth/icon.png new file mode 100755 index 0000000000..ac43ad66ea Binary files /dev/null and b/graphics/pokemon/iron_moth/icon.png differ diff --git a/graphics/pokemon/iron_moth/normal.pal b/graphics/pokemon/iron_moth/normal.pal new file mode 100644 index 0000000000..cacbbf8276 --- /dev/null +++ b/graphics/pokemon/iron_moth/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +197 121 41 +74 68 65 +213 44 65 +255 157 41 +131 133 131 +32 32 24 +197 230 238 +148 174 172 +139 28 41 +139 72 32 +255 255 255 +92 93 90 +0 0 0 +189 190 189 +90 16 24 diff --git a/graphics/pokemon/iron_moth/shiny.pal b/graphics/pokemon/iron_moth/shiny.pal new file mode 100644 index 0000000000..57377eda4e --- /dev/null +++ b/graphics/pokemon/iron_moth/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +197 121 41 +74 68 65 +168 170 176 +255 157 41 +131 133 131 +32 32 24 +168 170 176 +100 103 113 +100 103 113 +139 72 32 +255 255 255 +92 93 90 +0 0 0 +189 190 189 +51 51 51 diff --git a/graphics/pokemon/iron_thorns/back.png b/graphics/pokemon/iron_thorns/back.png new file mode 100644 index 0000000000..3c33307446 Binary files /dev/null and b/graphics/pokemon/iron_thorns/back.png differ diff --git a/graphics/pokemon/iron_thorns/front.png b/graphics/pokemon/iron_thorns/front.png new file mode 100644 index 0000000000..98aade73de Binary files /dev/null and b/graphics/pokemon/iron_thorns/front.png differ diff --git a/graphics/pokemon/iron_thorns/icon.png b/graphics/pokemon/iron_thorns/icon.png new file mode 100755 index 0000000000..48391a50c7 Binary files /dev/null and b/graphics/pokemon/iron_thorns/icon.png differ diff --git a/graphics/pokemon/iron_thorns/normal.pal b/graphics/pokemon/iron_thorns/normal.pal new file mode 100644 index 0000000000..b149804f85 --- /dev/null +++ b/graphics/pokemon/iron_thorns/normal.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +153 210 164 +112 168 48 +152 208 72 +0 0 0 +208 248 128 +56 96 32 +64 56 56 +0 136 95 +72 224 138 +211 255 255 +48 40 40 +88 80 80 +55 189 122 +192 192 192 diff --git a/graphics/pokemon/iron_thorns/shiny.pal b/graphics/pokemon/iron_thorns/shiny.pal new file mode 100644 index 0000000000..6d5a3826d3 --- /dev/null +++ b/graphics/pokemon/iron_thorns/shiny.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +153 210 164 +144 144 144 +200 200 200 +0 0 0 +248 248 248 +80 80 80 +64 56 56 +0 136 95 +72 224 178 +211 255 255 +48 40 40 +88 80 80 +55 189 148 +192 192 192 diff --git a/graphics/pokemon/iron_treads/back.png b/graphics/pokemon/iron_treads/back.png new file mode 100644 index 0000000000..93c44eff7d Binary files /dev/null and b/graphics/pokemon/iron_treads/back.png differ diff --git a/graphics/pokemon/iron_treads/front.png b/graphics/pokemon/iron_treads/front.png new file mode 100644 index 0000000000..0c3b7025eb Binary files /dev/null and b/graphics/pokemon/iron_treads/front.png differ diff --git a/graphics/pokemon/iron_treads/icon.png b/graphics/pokemon/iron_treads/icon.png new file mode 100755 index 0000000000..a75d7f93c9 Binary files /dev/null and b/graphics/pokemon/iron_treads/icon.png differ diff --git a/graphics/pokemon/iron_treads/normal.pal b/graphics/pokemon/iron_treads/normal.pal new file mode 100644 index 0000000000..f65e903d76 --- /dev/null +++ b/graphics/pokemon/iron_treads/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +106 62 71 +88 31 42 +255 56 57 +255 180 183 +33 4 15 +133 105 122 +171 133 147 +255 0 0 +241 12 17 +0 0 0 +148 119 127 +142 169 173 +28 38 44 +205 205 207 +0 0 0 diff --git a/graphics/pokemon/iron_treads/shiny.pal b/graphics/pokemon/iron_treads/shiny.pal new file mode 100644 index 0000000000..3c2388187f --- /dev/null +++ b/graphics/pokemon/iron_treads/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +142 152 163 +68 82 94 +255 56 57 +255 180 183 +33 4 15 +217 217 217 +239 239 239 +255 0 0 +241 12 17 +0 0 0 +148 119 127 +142 169 173 +28 38 44 +205 205 207 +0 0 0 diff --git a/graphics/pokemon/iron_valiant/back.png b/graphics/pokemon/iron_valiant/back.png new file mode 100644 index 0000000000..9251f2c7e4 Binary files /dev/null and b/graphics/pokemon/iron_valiant/back.png differ diff --git a/graphics/pokemon/iron_valiant/front.png b/graphics/pokemon/iron_valiant/front.png new file mode 100644 index 0000000000..fe60695d18 Binary files /dev/null and b/graphics/pokemon/iron_valiant/front.png differ diff --git a/graphics/pokemon/iron_valiant/icon.png b/graphics/pokemon/iron_valiant/icon.png new file mode 100755 index 0000000000..c1441e5dd5 Binary files /dev/null and b/graphics/pokemon/iron_valiant/icon.png differ diff --git a/graphics/pokemon/iron_valiant/normal.pal b/graphics/pokemon/iron_valiant/normal.pal new file mode 100644 index 0000000000..f454ada84e --- /dev/null +++ b/graphics/pokemon/iron_valiant/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 163 +45 56 74 +75 131 131 +109 176 180 +15 15 15 +38 77 36 +90 180 106 +65 131 90 +252 252 252 +175 171 206 +89 95 106 +174 32 96 +128 136 155 +255 81 151 +238 176 220 +112 146 190 diff --git a/graphics/pokemon/iron_valiant/shiny.pal b/graphics/pokemon/iron_valiant/shiny.pal new file mode 100644 index 0000000000..5d2e2d28db --- /dev/null +++ b/graphics/pokemon/iron_valiant/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 163 +45 57 75 +101 103 113 +129 137 155 +15 15 15 +51 53 57 +129 137 155 +101 103 113 +252 252 252 +213 213 213 +101 103 113 +174 32 96 +129 137 155 +255 81 151 +238 176 220 +129 137 155 diff --git a/graphics/pokemon/jangmo_o/anim_front.png b/graphics/pokemon/jangmo_o/anim_front.png index d462c0adb8..9f3abb0696 100644 Binary files a/graphics/pokemon/jangmo_o/anim_front.png and b/graphics/pokemon/jangmo_o/anim_front.png differ diff --git a/graphics/pokemon/jangmo_o/back.png b/graphics/pokemon/jangmo_o/back.png index 6416369e96..209011dfa7 100644 Binary files a/graphics/pokemon/jangmo_o/back.png and b/graphics/pokemon/jangmo_o/back.png differ diff --git a/graphics/pokemon/jellicent/anim_front.png b/graphics/pokemon/jellicent/anim_front.png index 4e08f51dd7..894a95327b 100644 Binary files a/graphics/pokemon/jellicent/anim_front.png and b/graphics/pokemon/jellicent/anim_front.png differ diff --git a/graphics/pokemon/jellicent/anim_frontf.png b/graphics/pokemon/jellicent/anim_frontf.png index d94a329aa6..9ac8ad0320 100644 Binary files a/graphics/pokemon/jellicent/anim_frontf.png and b/graphics/pokemon/jellicent/anim_frontf.png differ diff --git a/graphics/pokemon/kilowattrel/back.png b/graphics/pokemon/kilowattrel/back.png new file mode 100755 index 0000000000..26eb440b6a Binary files /dev/null and b/graphics/pokemon/kilowattrel/back.png differ diff --git a/graphics/pokemon/kilowattrel/front.png b/graphics/pokemon/kilowattrel/front.png new file mode 100755 index 0000000000..3a8e971644 Binary files /dev/null and b/graphics/pokemon/kilowattrel/front.png differ diff --git a/graphics/pokemon/kilowattrel/icon.png b/graphics/pokemon/kilowattrel/icon.png new file mode 100755 index 0000000000..d4e5f7211b Binary files /dev/null and b/graphics/pokemon/kilowattrel/icon.png differ diff --git a/graphics/pokemon/kilowattrel/normal.pal b/graphics/pokemon/kilowattrel/normal.pal new file mode 100755 index 0000000000..c67bb43b2a --- /dev/null +++ b/graphics/pokemon/kilowattrel/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 24 24 +48 56 56 +32 40 40 +248 204 48 +192 144 40 +248 252 248 +56 28 32 +16 16 16 +96 248 208 +128 128 128 +120 60 64 +96 36 40 +120 92 32 +72 88 96 +48 56 72 diff --git a/graphics/pokemon/kilowattrel/shiny.pal b/graphics/pokemon/kilowattrel/shiny.pal new file mode 100755 index 0000000000..a9ad2ba3a8 --- /dev/null +++ b/graphics/pokemon/kilowattrel/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 24 24 +131 83 100 +96 60 73 +248 204 48 +192 144 40 +248 252 248 +212 95 60 +16 16 16 +96 248 208 +128 128 128 +244 161 59 +212 95 60 +120 92 32 +72 88 96 +48 56 72 diff --git a/graphics/pokemon/kingambit/back.png b/graphics/pokemon/kingambit/back.png new file mode 100644 index 0000000000..3309f316b1 Binary files /dev/null and b/graphics/pokemon/kingambit/back.png differ diff --git a/graphics/pokemon/kingambit/front.png b/graphics/pokemon/kingambit/front.png new file mode 100644 index 0000000000..22f0f51ff5 Binary files /dev/null and b/graphics/pokemon/kingambit/front.png differ diff --git a/graphics/pokemon/kingambit/icon.png b/graphics/pokemon/kingambit/icon.png new file mode 100755 index 0000000000..ce85b3c190 Binary files /dev/null and b/graphics/pokemon/kingambit/icon.png differ diff --git a/graphics/pokemon/kingambit/normal.pal b/graphics/pokemon/kingambit/normal.pal new file mode 100644 index 0000000000..f5c6ef871e --- /dev/null +++ b/graphics/pokemon/kingambit/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +152 128 136 +16 16 16 +248 240 248 +200 152 72 +136 104 32 +72 32 40 +248 216 104 +32 32 40 +176 80 80 +248 48 40 +120 40 48 +64 64 72 +136 16 24 +112 56 56 +152 72 72 diff --git a/graphics/pokemon/kingambit/shiny.pal b/graphics/pokemon/kingambit/shiny.pal new file mode 100644 index 0000000000..a936488d36 --- /dev/null +++ b/graphics/pokemon/kingambit/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +160 160 128 +16 16 16 +248 248 224 +200 152 72 +136 104 32 +24 24 72 +248 216 104 +32 32 40 +72 88 200 +248 48 40 +48 48 120 +64 64 72 +136 16 24 +48 48 56 +80 80 96 diff --git a/graphics/pokemon/kingler/anim_front.png b/graphics/pokemon/kingler/anim_front.png index d60fedc190..fff0a1cb4e 100644 Binary files a/graphics/pokemon/kingler/anim_front.png and b/graphics/pokemon/kingler/anim_front.png differ diff --git a/graphics/pokemon/kingler/back.png b/graphics/pokemon/kingler/back.png index 94feeee730..65b5d137e5 100644 Binary files a/graphics/pokemon/kingler/back.png and b/graphics/pokemon/kingler/back.png differ diff --git a/graphics/pokemon/kingler/gigantamax/back.png b/graphics/pokemon/kingler/gigantamax/back.png new file mode 100644 index 0000000000..d1a624ac47 Binary files /dev/null and b/graphics/pokemon/kingler/gigantamax/back.png differ diff --git a/graphics/pokemon/kingler/gigantamax/front.png b/graphics/pokemon/kingler/gigantamax/front.png new file mode 100644 index 0000000000..075fc470c5 Binary files /dev/null and b/graphics/pokemon/kingler/gigantamax/front.png differ diff --git a/graphics/pokemon/kingler/gigantamax/icon.png b/graphics/pokemon/kingler/gigantamax/icon.png new file mode 100644 index 0000000000..0399c37ab4 Binary files /dev/null and b/graphics/pokemon/kingler/gigantamax/icon.png differ diff --git a/graphics/pokemon/kingler/gigantamax/normal.pal b/graphics/pokemon/kingler/gigantamax/normal.pal new file mode 100644 index 0000000000..e3bbad0227 --- /dev/null +++ b/graphics/pokemon/kingler/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +115 82 16 +16 16 16 +131 41 8 +255 246 222 +164 106 65 +180 90 74 +222 172 156 +246 197 139 +255 139 82 +253 253 253 +189 189 230 +125 129 147 +163 153 170 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/kingler/gigantamax/shiny.pal b/graphics/pokemon/kingler/gigantamax/shiny.pal new file mode 100644 index 0000000000..2dcc9678fa --- /dev/null +++ b/graphics/pokemon/kingler/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +106 98 8 +16 16 16 +74 90 0 +230 246 197 +148 139 57 +106 115 49 +205 213 115 +180 197 115 +139 156 74 +253 253 253 +189 189 230 +125 129 147 +163 153 170 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/kingler/normal.pal b/graphics/pokemon/kingler/normal.pal index d05177eee1..78dcded55c 100644 --- a/graphics/pokemon/kingler/normal.pal +++ b/graphics/pokemon/kingler/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -131 41 8 +246 197 139 255 139 82 180 90 74 -16 16 16 -246 197 139 -74 49 32 -222 172 156 -115 82 16 -90 65 49 +131 41 8 255 246 222 +222 172 156 164 106 65 -255 255 255 +115 82 16 +255 16 255 +90 65 49 +74 49 32 +255 16 255 189 189 230 -0 0 0 -0 0 0 +16 16 16 +255 255 255 diff --git a/graphics/pokemon/kingler/shiny.pal b/graphics/pokemon/kingler/shiny.pal index 5c9922a8e8..628e75ebf2 100644 --- a/graphics/pokemon/kingler/shiny.pal +++ b/graphics/pokemon/kingler/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -64 80 0 -136 152 72 -104 112 48 +152 160 208 +180 197 115 +139 156 74 +106 115 49 +74 90 0 +230 246 197 +205 213 115 +148 139 57 +106 98 8 +255 16 255 +90 65 49 +74 49 32 +255 16 255 +222 222 246 16 16 16 -176 192 112 -56 40 24 -200 208 112 -104 96 8 -88 64 56 -224 240 192 -144 136 56 -248 248 248 -184 184 224 -0 0 0 -0 0 0 +255 255 255 diff --git a/graphics/pokemon/klawf/back.png b/graphics/pokemon/klawf/back.png new file mode 100755 index 0000000000..6409b07db8 Binary files /dev/null and b/graphics/pokemon/klawf/back.png differ diff --git a/graphics/pokemon/klawf/front.png b/graphics/pokemon/klawf/front.png new file mode 100755 index 0000000000..2957bcceef Binary files /dev/null and b/graphics/pokemon/klawf/front.png differ diff --git a/graphics/pokemon/klawf/icon.png b/graphics/pokemon/klawf/icon.png new file mode 100755 index 0000000000..e7c232f130 Binary files /dev/null and b/graphics/pokemon/klawf/icon.png differ diff --git a/graphics/pokemon/klawf/normal.pal b/graphics/pokemon/klawf/normal.pal new file mode 100755 index 0000000000..53537b9aa5 --- /dev/null +++ b/graphics/pokemon/klawf/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 40 24 +128 48 48 +96 88 56 +248 248 248 +168 160 160 +64 64 48 +232 120 56 +16 16 16 +184 80 48 +136 96 96 +176 144 112 +232 208 160 +232 128 104 +232 160 128 +128 120 88 diff --git a/graphics/pokemon/klawf/shiny.pal b/graphics/pokemon/klawf/shiny.pal new file mode 100755 index 0000000000..2e8495906c --- /dev/null +++ b/graphics/pokemon/klawf/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 96 88 +40 88 128 +240 232 200 +248 248 248 +168 160 160 +160 160 144 +88 176 232 +16 16 16 +64 128 200 +136 112 88 +184 160 128 +248 224 176 +232 128 104 +232 160 128 +232 232 208 diff --git a/graphics/pokemon/koffing/anim_front.png b/graphics/pokemon/koffing/anim_front.png index 891ee864d6..2b70b2cf53 100644 Binary files a/graphics/pokemon/koffing/anim_front.png and b/graphics/pokemon/koffing/anim_front.png differ diff --git a/graphics/pokemon/koffing/back.png b/graphics/pokemon/koffing/back.png index 53938fdeb2..e97a5ba3e6 100644 Binary files a/graphics/pokemon/koffing/back.png and b/graphics/pokemon/koffing/back.png differ diff --git a/graphics/pokemon/koffing/normal.pal b/graphics/pokemon/koffing/normal.pal index 3bc7ed3d86..255edac9cc 100644 --- a/graphics/pokemon/koffing/normal.pal +++ b/graphics/pokemon/koffing/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -238 213 106 +255 255 255 +222 222 222 +246 238 205 +205 205 172 +238 115 139 +180 90 123 +255 0 255 246 238 148 +238 213 106 197 180 41 -115 90 156 205 189 238 172 148 205 +115 90 156 74 41 90 16 16 16 -248 248 248 -216 216 216 -180 90 123 -238 115 139 -205 205 172 -246 238 205 -0 0 0 diff --git a/graphics/pokemon/koffing/shiny.pal b/graphics/pokemon/koffing/shiny.pal index 169eb24a04..672d7d4acd 100644 --- a/graphics/pokemon/koffing/shiny.pal +++ b/graphics/pokemon/koffing/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -176 128 176 -208 168 208 -136 88 136 -96 128 128 -176 224 232 +160 208 152 +255 255 255 +222 222 222 +246 238 148 +213 205 106 +255 98 74 +213 57 32 +255 0 255 +222 156 213 +180 123 180 +139 74 139 +180 230 238 136 176 184 +96 128 128 56 80 88 16 16 16 -248 248 248 -216 216 216 -192 80 64 -248 128 112 -208 200 104 -240 232 144 -0 0 0 diff --git a/graphics/pokemon/kommo_o/anim_front.png b/graphics/pokemon/kommo_o/anim_front.png index 5f1a7382ba..090ef56f0b 100644 Binary files a/graphics/pokemon/kommo_o/anim_front.png and b/graphics/pokemon/kommo_o/anim_front.png differ diff --git a/graphics/pokemon/koraidon/back.png b/graphics/pokemon/koraidon/back.png new file mode 100644 index 0000000000..fd4fb143b8 Binary files /dev/null and b/graphics/pokemon/koraidon/back.png differ diff --git a/graphics/pokemon/koraidon/front.png b/graphics/pokemon/koraidon/front.png new file mode 100644 index 0000000000..64f07479f9 Binary files /dev/null and b/graphics/pokemon/koraidon/front.png differ diff --git a/graphics/pokemon/koraidon/icon.png b/graphics/pokemon/koraidon/icon.png new file mode 100755 index 0000000000..127a03e5d7 Binary files /dev/null and b/graphics/pokemon/koraidon/icon.png differ diff --git a/graphics/pokemon/koraidon/normal.pal b/graphics/pokemon/koraidon/normal.pal new file mode 100644 index 0000000000..151d848ab8 --- /dev/null +++ b/graphics/pokemon/koraidon/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +51 55 62 +103 96 105 +237 235 230 +255 118 155 +6 6 6 +255 73 153 +168 150 153 +159 65 193 +18 26 80 +36 49 136 +0 97 173 +119 32 32 +255 70 57 +185 57 56 +253 214 0 diff --git a/graphics/pokemon/koraidon/shiny.pal b/graphics/pokemon/koraidon/shiny.pal new file mode 100644 index 0000000000..2d198cf721 --- /dev/null +++ b/graphics/pokemon/koraidon/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +51 55 62 +103 96 105 +237 235 230 +168 150 153 +6 6 6 +255 191 0 +168 150 153 +159 65 193 +18 26 80 +172 24 67 +255 11 119 +33 34 50 +82 83 113 +67 68 90 +253 214 0 diff --git a/graphics/pokemon/krabby/anim_front.png b/graphics/pokemon/krabby/anim_front.png index 69d4f372d1..afd1ef7216 100644 Binary files a/graphics/pokemon/krabby/anim_front.png and b/graphics/pokemon/krabby/anim_front.png differ diff --git a/graphics/pokemon/krabby/back.png b/graphics/pokemon/krabby/back.png index ef6d9fee57..5cfafa395f 100644 Binary files a/graphics/pokemon/krabby/back.png and b/graphics/pokemon/krabby/back.png differ diff --git a/graphics/pokemon/krabby/normal.pal b/graphics/pokemon/krabby/normal.pal index 04c1672e79..d8bf9fd9a0 100644 --- a/graphics/pokemon/krabby/normal.pal +++ b/graphics/pokemon/krabby/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -222 57 57 -255 115 49 +255 255 255 +222 222 222 +255 0 255 +255 230 197 +205 172 139 +172 131 74 +115 82 16 +90 65 32 +255 0 255 +255 0 255 255 164 98 +255 115 49 +222 57 57 156 41 8 16 16 16 -90 65 32 -205 172 139 -115 82 16 -172 131 74 -255 230 197 -248 248 248 -222 222 222 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/krabby/shiny.pal b/graphics/pokemon/krabby/shiny.pal index 7128e1de0f..07ac355421 100644 --- a/graphics/pokemon/krabby/shiny.pal +++ b/graphics/pokemon/krabby/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -176 152 40 -216 200 40 -248 232 112 -120 96 24 +255 255 255 +222 222 222 +255 0 255 +255 246 222 +230 205 164 +189 156 106 +131 115 65 +106 98 74 +255 0 255 +255 0 255 +255 230 32 +222 197 0 +180 156 41 +148 115 0 16 16 16 -88 64 48 -224 200 160 -128 112 64 -184 152 104 -248 240 216 -248 248 248 -216 216 216 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/lapras/gigantamax/back.png b/graphics/pokemon/lapras/gigantamax/back.png new file mode 100644 index 0000000000..ee056d3a54 Binary files /dev/null and b/graphics/pokemon/lapras/gigantamax/back.png differ diff --git a/graphics/pokemon/lapras/gigantamax/front.png b/graphics/pokemon/lapras/gigantamax/front.png new file mode 100644 index 0000000000..aff7e7d5f2 Binary files /dev/null and b/graphics/pokemon/lapras/gigantamax/front.png differ diff --git a/graphics/pokemon/lapras/gigantamax/icon.png b/graphics/pokemon/lapras/gigantamax/icon.png new file mode 100644 index 0000000000..367418a17c Binary files /dev/null and b/graphics/pokemon/lapras/gigantamax/icon.png differ diff --git a/graphics/pokemon/lapras/gigantamax/normal.pal b/graphics/pokemon/lapras/gigantamax/normal.pal new file mode 100644 index 0000000000..044e141f67 --- /dev/null +++ b/graphics/pokemon/lapras/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +115 197 246 +81 255 251 +128 117 115 +16 16 16 +57 123 164 +24 65 82 +65 164 230 +139 164 148 +222 197 131 +246 222 172 +82 82 106 +164 148 148 +213 205 197 +246 238 230 +90 74 65 diff --git a/graphics/pokemon/lapras/gigantamax/shiny.pal b/graphics/pokemon/lapras/gigantamax/shiny.pal new file mode 100644 index 0000000000..f0290fa5c1 --- /dev/null +++ b/graphics/pokemon/lapras/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +205 172 255 +81 255 251 +128 117 115 +16 16 16 +106 49 156 +41 0 98 +172 131 246 +139 90 197 +246 189 148 +255 213 189 +82 82 106 +164 148 148 +213 205 197 +246 238 230 +15 15 15 diff --git a/graphics/pokemon/lechonk/back.png b/graphics/pokemon/lechonk/back.png new file mode 100755 index 0000000000..ea157cabe8 Binary files /dev/null and b/graphics/pokemon/lechonk/back.png differ diff --git a/graphics/pokemon/lechonk/front.png b/graphics/pokemon/lechonk/front.png new file mode 100755 index 0000000000..1afbc89998 Binary files /dev/null and b/graphics/pokemon/lechonk/front.png differ diff --git a/graphics/pokemon/lechonk/icon.png b/graphics/pokemon/lechonk/icon.png new file mode 100755 index 0000000000..d368c427be Binary files /dev/null and b/graphics/pokemon/lechonk/icon.png differ diff --git a/graphics/pokemon/lechonk/normal.pal b/graphics/pokemon/lechonk/normal.pal new file mode 100755 index 0000000000..a8f419d699 --- /dev/null +++ b/graphics/pokemon/lechonk/normal.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +154 212 167 +26 28 27 +8 8 8 +57 55 56 +81 83 82 +76 54 31 +202 134 87 +126 82 45 +252 252 252 +250 206 46 +193 87 129 +249 124 147 +126 41 63 +188 188 188 diff --git a/graphics/pokemon/lechonk/shiny.pal b/graphics/pokemon/lechonk/shiny.pal new file mode 100755 index 0000000000..8530a12bb8 --- /dev/null +++ b/graphics/pokemon/lechonk/shiny.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +154 212 167 +214 106 140 +8 8 8 +246 181 214 +255 214 246 +141 93 70 +215 159 135 +187 129 106 +252 252 252 +250 206 46 +225 127 124 +255 173 170 +170 86 100 +188 188 188 diff --git a/graphics/pokemon/lickitung/anim_front.png b/graphics/pokemon/lickitung/anim_front.png index 1a6c1aa9cf..c8b1a27945 100644 Binary files a/graphics/pokemon/lickitung/anim_front.png and b/graphics/pokemon/lickitung/anim_front.png differ diff --git a/graphics/pokemon/lickitung/back.png b/graphics/pokemon/lickitung/back.png index ab93fb8842..b3406dc822 100644 Binary files a/graphics/pokemon/lickitung/back.png and b/graphics/pokemon/lickitung/back.png differ diff --git a/graphics/pokemon/lickitung/normal.pal b/graphics/pokemon/lickitung/normal.pal index 520baee770..2b8242a67f 100644 --- a/graphics/pokemon/lickitung/normal.pal +++ b/graphics/pokemon/lickitung/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -176 64 80 -120 24 16 -232 112 136 -248 152 168 -248 248 248 -248 200 208 -200 192 200 -224 208 112 +255 255 255 +197 197 197 +255 255 180 +230 213 115 +131 123 32 +255 209 241 +255 189 222 +213 139 172 +156 74 98 +255 205 213 +255 156 172 +238 115 139 +180 65 82 +123 24 16 16 16 16 -152 72 96 -208 136 168 -248 184 216 -248 248 176 -128 120 32 -0 0 0 diff --git a/graphics/pokemon/lickitung/shiny.pal b/graphics/pokemon/lickitung/shiny.pal index 29ccdfb690..9af533e830 100644 --- a/graphics/pokemon/lickitung/shiny.pal +++ b/graphics/pokemon/lickitung/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -144 136 32 -96 96 16 -192 184 40 -232 232 88 -248 248 248 -248 248 168 -200 192 200 -232 216 112 +255 255 255 +222 213 222 +255 255 164 +230 213 115 +131 123 32 +255 172 164 +255 131 123 +222 98 98 +139 57 57 +255 255 156 +238 238 90 +197 189 41 +164 156 8 +123 115 0 16 16 16 -136 56 56 -208 88 88 -248 136 128 -248 248 176 -128 120 32 -0 0 0 diff --git a/graphics/pokemon/lokix/back.png b/graphics/pokemon/lokix/back.png new file mode 100755 index 0000000000..25d62835c1 Binary files /dev/null and b/graphics/pokemon/lokix/back.png differ diff --git a/graphics/pokemon/lokix/front.png b/graphics/pokemon/lokix/front.png new file mode 100755 index 0000000000..f617e5a41b Binary files /dev/null and b/graphics/pokemon/lokix/front.png differ diff --git a/graphics/pokemon/lokix/icon.png b/graphics/pokemon/lokix/icon.png new file mode 100755 index 0000000000..205de36a02 Binary files /dev/null and b/graphics/pokemon/lokix/icon.png differ diff --git a/graphics/pokemon/lokix/normal.pal b/graphics/pokemon/lokix/normal.pal new file mode 100755 index 0000000000..d0d79e547b --- /dev/null +++ b/graphics/pokemon/lokix/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 40 40 +16 16 16 +88 96 88 +176 180 176 +32 48 72 +96 112 128 +64 80 96 +64 64 64 +120 120 120 +176 100 24 +240 164 48 +120 56 8 +248 248 248 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lokix/shiny.pal b/graphics/pokemon/lokix/shiny.pal new file mode 100755 index 0000000000..5f652f13b8 --- /dev/null +++ b/graphics/pokemon/lokix/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +91 84 44 +16 16 16 +180 167 65 +176 180 176 +32 48 72 +86 86 86 +53 53 53 +131 129 52 +208 196 100 +178 101 28 +240 164 48 +122 57 10 +248 248 248 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/lycanroc/anim_front.png b/graphics/pokemon/lycanroc/anim_front.png new file mode 100644 index 0000000000..fc853cf24b Binary files /dev/null and b/graphics/pokemon/lycanroc/anim_front.png differ diff --git a/graphics/pokemon/lycanroc/dusk/anim_front.png b/graphics/pokemon/lycanroc/dusk/anim_front.png new file mode 100644 index 0000000000..1df7c94d41 Binary files /dev/null and b/graphics/pokemon/lycanroc/dusk/anim_front.png differ diff --git a/graphics/pokemon/lycanroc/dusk/back.png b/graphics/pokemon/lycanroc/dusk/back.png index d17f1dc635..c9ed8b89bf 100644 Binary files a/graphics/pokemon/lycanroc/dusk/back.png and b/graphics/pokemon/lycanroc/dusk/back.png differ diff --git a/graphics/pokemon/lycanroc/dusk/front.png b/graphics/pokemon/lycanroc/dusk/front.png deleted file mode 100644 index 8e8beb2311..0000000000 Binary files a/graphics/pokemon/lycanroc/dusk/front.png and /dev/null differ diff --git a/graphics/pokemon/lycanroc/dusk/icon.png b/graphics/pokemon/lycanroc/dusk/icon.png index 7ff67638d3..65d8394f4e 100644 Binary files a/graphics/pokemon/lycanroc/dusk/icon.png and b/graphics/pokemon/lycanroc/dusk/icon.png differ diff --git a/graphics/pokemon/lycanroc/dusk/normal.pal b/graphics/pokemon/lycanroc/dusk/normal.pal index 151d43c524..4eb21dce4a 100644 --- a/graphics/pokemon/lycanroc/dusk/normal.pal +++ b/graphics/pokemon/lycanroc/dusk/normal.pal @@ -15,5 +15,5 @@ JASC-PAL 192 176 160 248 248 248 29 204 62 -0 0 0 -0 0 0 +112 45 15 +255 0 255 diff --git a/graphics/pokemon/lycanroc/dusk/shiny.pal b/graphics/pokemon/lycanroc/dusk/shiny.pal index 758e607a84..9fc8da2951 100644 --- a/graphics/pokemon/lycanroc/dusk/shiny.pal +++ b/graphics/pokemon/lycanroc/dusk/shiny.pal @@ -15,5 +15,5 @@ JASC-PAL 192 176 160 248 248 248 168 208 32 -0 0 0 +26 38 56 0 0 0 diff --git a/graphics/pokemon/lycanroc/front.png b/graphics/pokemon/lycanroc/front.png deleted file mode 100644 index a5058205ec..0000000000 Binary files a/graphics/pokemon/lycanroc/front.png and /dev/null differ diff --git a/graphics/pokemon/lycanroc/midnight/anim_front.png b/graphics/pokemon/lycanroc/midnight/anim_front.png new file mode 100644 index 0000000000..fdd549d949 Binary files /dev/null and b/graphics/pokemon/lycanroc/midnight/anim_front.png differ diff --git a/graphics/pokemon/lycanroc/midnight/front.png b/graphics/pokemon/lycanroc/midnight/front.png deleted file mode 100644 index 73a49530dd..0000000000 Binary files a/graphics/pokemon/lycanroc/midnight/front.png and /dev/null differ diff --git a/graphics/pokemon/mabosstiff/back.png b/graphics/pokemon/mabosstiff/back.png new file mode 100644 index 0000000000..d572c7cbdb Binary files /dev/null and b/graphics/pokemon/mabosstiff/back.png differ diff --git a/graphics/pokemon/mabosstiff/front.png b/graphics/pokemon/mabosstiff/front.png new file mode 100644 index 0000000000..cf91e34c29 Binary files /dev/null and b/graphics/pokemon/mabosstiff/front.png differ diff --git a/graphics/pokemon/mabosstiff/icon.png b/graphics/pokemon/mabosstiff/icon.png new file mode 100755 index 0000000000..3b99df2d4a Binary files /dev/null and b/graphics/pokemon/mabosstiff/icon.png differ diff --git a/graphics/pokemon/mabosstiff/normal.pal b/graphics/pokemon/mabosstiff/normal.pal new file mode 100644 index 0000000000..5c433266d6 --- /dev/null +++ b/graphics/pokemon/mabosstiff/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 88 96 +48 48 56 +168 168 168 +200 200 200 +120 128 136 +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 diff --git a/graphics/pokemon/mabosstiff/shiny.pal b/graphics/pokemon/mabosstiff/shiny.pal new file mode 100644 index 0000000000..a3f922e953 --- /dev/null +++ b/graphics/pokemon/mabosstiff/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 88 96 +48 48 56 +168 168 168 +200 200 200 +120 128 136 +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 diff --git a/graphics/pokemon/machamp/gigantamax/back.png b/graphics/pokemon/machamp/gigantamax/back.png new file mode 100644 index 0000000000..aea4de046f Binary files /dev/null and b/graphics/pokemon/machamp/gigantamax/back.png differ diff --git a/graphics/pokemon/machamp/gigantamax/front.png b/graphics/pokemon/machamp/gigantamax/front.png new file mode 100644 index 0000000000..feff2a8346 Binary files /dev/null and b/graphics/pokemon/machamp/gigantamax/front.png differ diff --git a/graphics/pokemon/machamp/gigantamax/icon.png b/graphics/pokemon/machamp/gigantamax/icon.png new file mode 100644 index 0000000000..f0150630a6 Binary files /dev/null and b/graphics/pokemon/machamp/gigantamax/icon.png differ diff --git a/graphics/pokemon/machamp/gigantamax/normal.pal b/graphics/pokemon/machamp/gigantamax/normal.pal new file mode 100644 index 0000000000..8ad34672ca --- /dev/null +++ b/graphics/pokemon/machamp/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +126 84 5 +16 16 16 +227 141 3 +241 187 0 +252 234 0 +125 136 162 +74 74 98 +147 179 198 +43 43 57 +205 197 98 +131 115 41 +246 238 156 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/machamp/gigantamax/shiny.pal b/graphics/pokemon/machamp/gigantamax/shiny.pal new file mode 100644 index 0000000000..67e67b00c9 --- /dev/null +++ b/graphics/pokemon/machamp/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +126 84 5 +16 16 16 +227 141 3 +241 187 0 +252 234 0 +106 139 41 +74 106 16 +148 189 74 +25 45 0 +205 197 98 +131 115 41 +246 238 156 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/magnemite/anim_front.png b/graphics/pokemon/magnemite/anim_front.png index d240d64bca..5b60a52772 100644 Binary files a/graphics/pokemon/magnemite/anim_front.png and b/graphics/pokemon/magnemite/anim_front.png differ diff --git a/graphics/pokemon/magnemite/back.png b/graphics/pokemon/magnemite/back.png index e1b35043bb..0ddc6b9b86 100644 Binary files a/graphics/pokemon/magnemite/back.png and b/graphics/pokemon/magnemite/back.png differ diff --git a/graphics/pokemon/magnemite/normal.pal b/graphics/pokemon/magnemite/normal.pal index 50084032ff..ec9d62291b 100644 --- a/graphics/pokemon/magnemite/normal.pal +++ b/graphics/pokemon/magnemite/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -139 139 139 -222 255 230 +152 160 208 +255 255 255 213 213 213 +180 180 180 +139 139 139 82 74 74 -16 16 16 57 49 49 255 139 74 238 24 0 -139 180 164 -180 213 189 -90 131 98 82 205 246 41 131 172 -168 168 168 -255 255 255 +222 255 230 +180 213 189 +139 180 164 +90 131 98 +16 16 16 diff --git a/graphics/pokemon/magnemite/shiny.pal b/graphics/pokemon/magnemite/shiny.pal index 906f25a0a2..644ce56eee 100644 --- a/graphics/pokemon/magnemite/shiny.pal +++ b/graphics/pokemon/magnemite/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -136 136 136 -248 248 248 -208 208 208 -80 72 72 +255 255 255 +213 213 213 +180 180 180 +139 139 139 +82 74 74 +57 49 49 +88 88 88 +32 32 32 +88 88 88 +32 32 32 +255 255 205 +230 222 172 +197 180 148 +148 139 82 16 16 16 -56 48 48 -176 176 176 -80 72 72 -192 176 144 -224 216 168 -144 136 80 -176 176 176 -80 72 72 -176 176 176 -248 248 200 diff --git a/graphics/pokemon/magneton/anim_front.png b/graphics/pokemon/magneton/anim_front.png index 72a8aa907e..e9a57fcf72 100644 Binary files a/graphics/pokemon/magneton/anim_front.png and b/graphics/pokemon/magneton/anim_front.png differ diff --git a/graphics/pokemon/magneton/back.png b/graphics/pokemon/magneton/back.png index 7a45ee78dd..038cd4b1eb 100644 Binary files a/graphics/pokemon/magneton/back.png and b/graphics/pokemon/magneton/back.png differ diff --git a/graphics/pokemon/magneton/normal.pal b/graphics/pokemon/magneton/normal.pal index 55f2f9d992..35aff4d063 100644 --- a/graphics/pokemon/magneton/normal.pal +++ b/graphics/pokemon/magneton/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 +152 160 208 +255 255 255 +213 213 213 +180 180 180 +139 139 139 82 74 74 57 49 49 255 139 74 -16 16 16 238 24 0 -139 139 139 82 205 246 -213 213 213 41 131 172 -208 208 208 -74 98 74 +213 246 222 180 213 189 131 156 156 -248 248 248 -168 168 168 +74 98 74 +16 16 16 diff --git a/graphics/pokemon/magneton/shiny.pal b/graphics/pokemon/magneton/shiny.pal index 36ca0b6263..644ce56eee 100644 --- a/graphics/pokemon/magneton/shiny.pal +++ b/graphics/pokemon/magneton/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -80 72 72 -56 48 48 -136 136 136 +255 255 255 +213 213 213 +180 180 180 +139 139 139 +82 74 74 +57 49 49 +88 88 88 +32 32 32 +88 88 88 +32 32 32 +255 255 205 +230 222 172 +197 180 148 +148 139 82 16 16 16 -56 48 48 -136 136 136 -136 136 136 -248 248 248 -56 48 48 -208 208 208 -128 120 64 -224 216 168 -192 176 144 -248 248 248 -176 176 176 diff --git a/graphics/pokemon/marill/anim_front.png b/graphics/pokemon/marill/anim_front.png index e9815f4894..8a9e7bfaa3 100644 Binary files a/graphics/pokemon/marill/anim_front.png and b/graphics/pokemon/marill/anim_front.png differ diff --git a/graphics/pokemon/marill/normal.pal b/graphics/pokemon/marill/normal.pal index cf71923a68..17d6220af3 100644 --- a/graphics/pokemon/marill/normal.pal +++ b/graphics/pokemon/marill/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -40 152 240 -112 200 248 -168 232 248 -48 80 184 -72 168 240 -144 24 0 -216 72 0 -240 128 0 +49 106 172 +90 156 238 +123 180 246 +24 57 115 +65 131 205 +148 16 16 +189 41 49 +222 65 82 16 16 16 248 248 248 -224 224 232 -56 64 64 -200 200 216 +197 230 238 +98 98 98 +180 197 205 0 0 0 0 0 0 diff --git a/graphics/pokemon/marowak/anim_front.png b/graphics/pokemon/marowak/anim_front.png index 696a9633a9..bbfaad3734 100644 Binary files a/graphics/pokemon/marowak/anim_front.png and b/graphics/pokemon/marowak/anim_front.png differ diff --git a/graphics/pokemon/marowak/back.png b/graphics/pokemon/marowak/back.png index 76acb2c823..82a9c2da99 100644 Binary files a/graphics/pokemon/marowak/back.png and b/graphics/pokemon/marowak/back.png differ diff --git a/graphics/pokemon/marowak/normal.pal b/graphics/pokemon/marowak/normal.pal index 6aa7063f20..a82b6c9a83 100644 --- a/graphics/pokemon/marowak/normal.pal +++ b/graphics/pokemon/marowak/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -139 139 106 -248 248 248 -16 16 16 +255 255 255 +230 230 230 197 197 205 +139 139 106 82 74 57 -224 224 232 -90 65 16 -197 156 74 +16 16 16 148 106 82 -224 176 120 -176 144 136 -120 88 80 +197 156 74 +246 197 148 230 148 82 189 115 57 -246 197 148 +222 189 106 +197 156 74 +148 106 82 +90 65 16 diff --git a/graphics/pokemon/marowak/shiny.pal b/graphics/pokemon/marowak/shiny.pal index b074efb1b5..7c45006bb1 100644 --- a/graphics/pokemon/marowak/shiny.pal +++ b/graphics/pokemon/marowak/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -120 136 112 -248 248 248 +152 160 208 +255 255 255 +230 222 222 +197 189 189 +123 139 115 +65 74 74 16 16 16 -192 184 184 -64 72 72 -224 216 216 -64 96 24 -160 200 72 -104 152 72 -192 232 112 -160 200 72 -104 152 72 -216 168 104 -168 128 64 -232 208 144 +132 94 72 +189 148 66 +238 213 148 +222 164 82 +180 131 57 +197 238 115 +156 197 74 +106 156 65 +57 106 0 diff --git a/graphics/pokemon/maschiff/back.png b/graphics/pokemon/maschiff/back.png new file mode 100644 index 0000000000..6a6a45eb46 Binary files /dev/null and b/graphics/pokemon/maschiff/back.png differ diff --git a/graphics/pokemon/maschiff/front.png b/graphics/pokemon/maschiff/front.png new file mode 100644 index 0000000000..05f724ec6d Binary files /dev/null and b/graphics/pokemon/maschiff/front.png differ diff --git a/graphics/pokemon/maschiff/icon.png b/graphics/pokemon/maschiff/icon.png new file mode 100755 index 0000000000..f5127dcc42 Binary files /dev/null and b/graphics/pokemon/maschiff/icon.png differ diff --git a/graphics/pokemon/maschiff/normal.pal b/graphics/pokemon/maschiff/normal.pal new file mode 100644 index 0000000000..3c397173c3 --- /dev/null +++ b/graphics/pokemon/maschiff/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +255 255 255 +255 193 11 +180 178 180 +238 113 24 +255 157 90 +213 141 8 +106 36 32 +98 97 98 +213 117 106 +90 64 82 +172 85 74 +8 12 8 +65 44 57 +238 170 148 +164 97 49 diff --git a/graphics/pokemon/maschiff/shiny.pal b/graphics/pokemon/maschiff/shiny.pal new file mode 100644 index 0000000000..23f5bf0a74 --- /dev/null +++ b/graphics/pokemon/maschiff/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +255 255 255 +120 98 112 +180 178 180 +238 113 24 +255 157 90 +81 65 73 +92 77 102 +98 97 98 +173 157 191 +90 64 82 +129 114 142 +8 12 8 +65 44 57 +201 195 216 +63 47 59 diff --git a/graphics/pokemon/maushold/back.png b/graphics/pokemon/maushold/back.png new file mode 100644 index 0000000000..8def92dd59 Binary files /dev/null and b/graphics/pokemon/maushold/back.png differ diff --git a/graphics/pokemon/maushold/four/back.png b/graphics/pokemon/maushold/four/back.png new file mode 100644 index 0000000000..5f78e7c959 Binary files /dev/null and b/graphics/pokemon/maushold/four/back.png differ diff --git a/graphics/pokemon/maushold/four/front.png b/graphics/pokemon/maushold/four/front.png new file mode 100644 index 0000000000..b5813df9f2 Binary files /dev/null and b/graphics/pokemon/maushold/four/front.png differ diff --git a/graphics/pokemon/maushold/four/icon.png b/graphics/pokemon/maushold/four/icon.png new file mode 100755 index 0000000000..728aca58a1 Binary files /dev/null and b/graphics/pokemon/maushold/four/icon.png differ diff --git a/graphics/pokemon/maushold/front.png b/graphics/pokemon/maushold/front.png new file mode 100644 index 0000000000..aa33ed0d45 Binary files /dev/null and b/graphics/pokemon/maushold/front.png differ diff --git a/graphics/pokemon/maushold/icon.png b/graphics/pokemon/maushold/icon.png new file mode 100755 index 0000000000..97c2d70826 Binary files /dev/null and b/graphics/pokemon/maushold/icon.png differ diff --git a/graphics/pokemon/maushold/normal.pal b/graphics/pokemon/maushold/normal.pal new file mode 100644 index 0000000000..0a20d0f038 --- /dev/null +++ b/graphics/pokemon/maushold/normal.pal @@ -0,0 +1,14 @@ +JASC-PAL +0100 +11 +153 210 164 +85 86 102 +249 249 249 +54 55 67 +185 186 194 +6 6 6 +136 140 153 +60 126 157 +177 205 224 +130 171 200 +255 255 255 diff --git a/graphics/pokemon/maushold/shiny.pal b/graphics/pokemon/maushold/shiny.pal new file mode 100644 index 0000000000..2a6657caa7 --- /dev/null +++ b/graphics/pokemon/maushold/shiny.pal @@ -0,0 +1,14 @@ +JASC-PAL +0100 +11 +153 210 164 +85 86 102 +249 249 249 +54 55 67 +185 186 194 +6 6 6 +136 140 153 +176 125 89 +231 211 181 +215 171 136 +255 255 255 diff --git a/graphics/pokemon/melmetal/gigantamax/back.png b/graphics/pokemon/melmetal/gigantamax/back.png new file mode 100644 index 0000000000..d1cbe4b98e Binary files /dev/null and b/graphics/pokemon/melmetal/gigantamax/back.png differ diff --git a/graphics/pokemon/melmetal/gigantamax/front.png b/graphics/pokemon/melmetal/gigantamax/front.png new file mode 100644 index 0000000000..a48b1912c8 Binary files /dev/null and b/graphics/pokemon/melmetal/gigantamax/front.png differ diff --git a/graphics/pokemon/melmetal/gigantamax/icon.png b/graphics/pokemon/melmetal/gigantamax/icon.png new file mode 100644 index 0000000000..a84cae6c8f Binary files /dev/null and b/graphics/pokemon/melmetal/gigantamax/icon.png differ diff --git a/graphics/pokemon/melmetal/gigantamax/normal.pal b/graphics/pokemon/melmetal/gigantamax/normal.pal new file mode 100644 index 0000000000..c6309ab24e --- /dev/null +++ b/graphics/pokemon/melmetal/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +138 141 126 +220 220 218 +177 181 166 +16 16 16 +249 249 249 +103 103 95 +61 53 52 +89 84 78 +232 232 232 +194 41 46 +134 66 36 +177 97 44 +224 135 37 +255 191 79 +228 109 139 diff --git a/graphics/pokemon/melmetal/gigantamax/shiny.pal b/graphics/pokemon/melmetal/gigantamax/shiny.pal new file mode 100644 index 0000000000..40cd79108f --- /dev/null +++ b/graphics/pokemon/melmetal/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +138 141 126 +220 220 218 +177 181 166 +16 16 16 +249 249 249 +103 103 95 +61 53 52 +89 84 78 +232 232 232 +0 93 220 +134 66 36 +177 79 45 +222 108 40 +254 166 80 +228 109 139 diff --git a/graphics/pokemon/meowscarada/back.png b/graphics/pokemon/meowscarada/back.png new file mode 100644 index 0000000000..c8f646f7a4 Binary files /dev/null and b/graphics/pokemon/meowscarada/back.png differ diff --git a/graphics/pokemon/meowscarada/front.png b/graphics/pokemon/meowscarada/front.png new file mode 100644 index 0000000000..1f9c447edc Binary files /dev/null and b/graphics/pokemon/meowscarada/front.png differ diff --git a/graphics/pokemon/meowscarada/icon.png b/graphics/pokemon/meowscarada/icon.png new file mode 100755 index 0000000000..5b79821453 Binary files /dev/null and b/graphics/pokemon/meowscarada/icon.png differ diff --git a/graphics/pokemon/meowscarada/normal.pal b/graphics/pokemon/meowscarada/normal.pal new file mode 100644 index 0000000000..3bd755570a --- /dev/null +++ b/graphics/pokemon/meowscarada/normal.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +153 211 165 +41 65 49 +99 126 95 +21 31 25 +16 16 16 +69 93 65 +95 31 51 +242 94 141 +162 66 98 +1 113 37 +176 191 147 +1 155 53 +1 65 22 +232 242 215 diff --git a/graphics/pokemon/meowscarada/shiny.pal b/graphics/pokemon/meowscarada/shiny.pal new file mode 100644 index 0000000000..0ba08b9a89 --- /dev/null +++ b/graphics/pokemon/meowscarada/shiny.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +153 211 165 +1 45 41 +6 102 71 +21 31 25 +16 16 16 +13 71 67 +63 49 98 +159 105 205 +96 75 150 +27 99 97 +167 205 186 +1 143 104 +1 65 22 +228 250 236 diff --git a/graphics/pokemon/meowth/gigantamax/back.png b/graphics/pokemon/meowth/gigantamax/back.png new file mode 100644 index 0000000000..16298c644a Binary files /dev/null and b/graphics/pokemon/meowth/gigantamax/back.png differ diff --git a/graphics/pokemon/meowth/gigantamax/front.png b/graphics/pokemon/meowth/gigantamax/front.png new file mode 100644 index 0000000000..3f7cf49d21 Binary files /dev/null and b/graphics/pokemon/meowth/gigantamax/front.png differ diff --git a/graphics/pokemon/meowth/gigantamax/icon.png b/graphics/pokemon/meowth/gigantamax/icon.png new file mode 100644 index 0000000000..039f90a4ad Binary files /dev/null and b/graphics/pokemon/meowth/gigantamax/icon.png differ diff --git a/graphics/pokemon/meowth/gigantamax/normal.pal b/graphics/pokemon/meowth/gigantamax/normal.pal new file mode 100644 index 0000000000..f8c1e79f7a --- /dev/null +++ b/graphics/pokemon/meowth/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +156 106 0 +255 230 131 +16 16 16 +222 189 57 +255 255 180 +255 115 82 +148 90 0 +213 90 57 +205 164 0 +252 252 252 +255 213 0 +244 255 43 +148 65 0 +197 123 8 +238 156 49 diff --git a/graphics/pokemon/meowth/gigantamax/shiny.pal b/graphics/pokemon/meowth/gigantamax/shiny.pal new file mode 100644 index 0000000000..00cf140549 --- /dev/null +++ b/graphics/pokemon/meowth/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +156 65 0 +255 205 131 +16 16 16 +222 156 57 +255 238 180 +213 82 106 +172 41 57 +148 65 0 +205 164 0 +252 252 252 +255 213 0 +244 255 43 +172 41 57 +213 82 106 +246 123 139 diff --git a/graphics/pokemon/miltank/anim_front.png b/graphics/pokemon/miltank/anim_front.png index 97eb281ed2..896b3e7413 100644 Binary files a/graphics/pokemon/miltank/anim_front.png and b/graphics/pokemon/miltank/anim_front.png differ diff --git a/graphics/pokemon/miltank/normal.pal b/graphics/pokemon/miltank/normal.pal index 3d87da5b98..2679272407 100644 --- a/graphics/pokemon/miltank/normal.pal +++ b/graphics/pokemon/miltank/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 200 200 248 -72 88 96 -16 16 16 +90 90 98 +0 0 0 248 248 248 -112 120 128 -40 48 56 -152 88 96 -248 176 192 -200 176 96 -224 128 152 -104 56 64 -32 88 192 -248 192 208 -232 240 168 -88 88 56 -216 200 120 +172 172 180 +49 49 49 +156 98 106 +246 180 164 +213 172 115 +213 139 131 +106 65 65 +32 123 205 +238 213 189 +255 238 180 +115 98 57 +255 213 131 diff --git a/graphics/pokemon/miraidon/back.png b/graphics/pokemon/miraidon/back.png new file mode 100644 index 0000000000..3d4b2d703a Binary files /dev/null and b/graphics/pokemon/miraidon/back.png differ diff --git a/graphics/pokemon/miraidon/front.png b/graphics/pokemon/miraidon/front.png new file mode 100644 index 0000000000..28eaa96923 Binary files /dev/null and b/graphics/pokemon/miraidon/front.png differ diff --git a/graphics/pokemon/miraidon/icon.png b/graphics/pokemon/miraidon/icon.png new file mode 100755 index 0000000000..3ccf056b51 Binary files /dev/null and b/graphics/pokemon/miraidon/icon.png differ diff --git a/graphics/pokemon/miraidon/normal.pal b/graphics/pokemon/miraidon/normal.pal new file mode 100644 index 0000000000..12737537e5 --- /dev/null +++ b/graphics/pokemon/miraidon/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +156 153 205 +82 76 115 +49 48 106 +222 218 230 +246 255 255 +16 16 16 +123 97 164 +65 170 222 +57 64 139 +189 182 180 +255 226 115 +24 40 74 +82 68 156 +180 165 189 +57 48 74 diff --git a/graphics/pokemon/miraidon/shiny.pal b/graphics/pokemon/miraidon/shiny.pal new file mode 100644 index 0000000000..18064fb9d1 --- /dev/null +++ b/graphics/pokemon/miraidon/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +156 153 205 +82 76 115 +57 58 62 +222 218 230 +246 255 255 +16 16 16 +200 200 200 +65 170 222 +134 134 134 +189 182 180 +255 226 115 +24 40 74 +133 133 133 +180 165 189 +57 48 74 diff --git a/graphics/pokemon/muk/anim_front.png b/graphics/pokemon/muk/anim_front.png index 0f9c23f51b..dad71c460e 100644 Binary files a/graphics/pokemon/muk/anim_front.png and b/graphics/pokemon/muk/anim_front.png differ diff --git a/graphics/pokemon/muk/back.png b/graphics/pokemon/muk/back.png index 1a197e4695..d0fc344d68 100644 Binary files a/graphics/pokemon/muk/back.png and b/graphics/pokemon/muk/back.png differ diff --git a/graphics/pokemon/muk/normal.pal b/graphics/pokemon/muk/normal.pal index f35af64a4e..3737ca4aa4 100644 --- a/graphics/pokemon/muk/normal.pal +++ b/graphics/pokemon/muk/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -123 74 131 +255 255 255 +213 213 222 +172 180 189 +131 139 156 +65 74 90 +238 222 238 230 189 238 197 164 205 164 123 172 +123 74 131 90 49 115 +144 96 152 +255 0 255 +255 0 255 16 16 16 -248 248 248 -172 180 189 -65 74 90 -131 139 156 -224 208 232 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/muk/shiny.pal b/graphics/pokemon/muk/shiny.pal index 082d96af73..7a972bc544 100644 --- a/graphics/pokemon/muk/shiny.pal +++ b/graphics/pokemon/muk/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -88 136 56 -176 216 136 -144 192 120 -120 168 88 -64 112 32 +152 160 208 +255 255 255 +213 213 222 +172 180 189 +131 139 156 +65 74 90 +197 230 156 +180 222 139 +148 197 123 +123 172 90 +90 139 57 +65 115 32 +104 152 72 +255 0 255 +255 0 255 16 16 16 -248 248 248 -168 176 184 -64 72 88 -128 136 152 -208 232 176 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/munkidori/back.png b/graphics/pokemon/munkidori/back.png new file mode 100644 index 0000000000..ab1def646f Binary files /dev/null and b/graphics/pokemon/munkidori/back.png differ diff --git a/graphics/pokemon/munkidori/front.png b/graphics/pokemon/munkidori/front.png new file mode 100644 index 0000000000..a175933449 Binary files /dev/null and b/graphics/pokemon/munkidori/front.png differ diff --git a/graphics/pokemon/munkidori/icon.png b/graphics/pokemon/munkidori/icon.png new file mode 100644 index 0000000000..20144ff87e Binary files /dev/null and b/graphics/pokemon/munkidori/icon.png differ diff --git a/graphics/pokemon/munkidori/normal.pal b/graphics/pokemon/munkidori/normal.pal new file mode 100644 index 0000000000..0b28eb557a --- /dev/null +++ b/graphics/pokemon/munkidori/normal.pal @@ -0,0 +1,16 @@ +JASC-PAL +0100 +13 +153 211 165 +36 37 45 +61 61 61 +20 22 24 +90 33 73 +122 140 177 +174 201 233 +202 103 162 +146 57 119 +16 16 16 +64 74 104 +254 208 27 +206 157 9 diff --git a/graphics/pokemon/munkidori/shiny.pal b/graphics/pokemon/munkidori/shiny.pal new file mode 100644 index 0000000000..3240a92e03 --- /dev/null +++ b/graphics/pokemon/munkidori/shiny.pal @@ -0,0 +1,16 @@ +JASC-PAL +0100 +13 +153 211 165 +97 84 80 +145 129 114 +65 56 52 +90 33 73 +122 140 177 +174 201 233 +202 103 162 +146 57 119 +16 16 16 +64 74 104 +254 208 27 +206 157 9 diff --git a/graphics/pokemon/nacli/back.png b/graphics/pokemon/nacli/back.png new file mode 100644 index 0000000000..bb455f9f1e Binary files /dev/null and b/graphics/pokemon/nacli/back.png differ diff --git a/graphics/pokemon/nacli/front.png b/graphics/pokemon/nacli/front.png new file mode 100644 index 0000000000..b21f021d19 Binary files /dev/null and b/graphics/pokemon/nacli/front.png differ diff --git a/graphics/pokemon/nacli/icon.png b/graphics/pokemon/nacli/icon.png new file mode 100755 index 0000000000..ed0895c1d8 Binary files /dev/null and b/graphics/pokemon/nacli/icon.png differ diff --git a/graphics/pokemon/nacli/normal.pal b/graphics/pokemon/nacli/normal.pal new file mode 100644 index 0000000000..479596589d --- /dev/null +++ b/graphics/pokemon/nacli/normal.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +154 212 167 +104 100 99 +239 238 235 +115 69 69 +166 150 148 +193 148 125 +147 98 90 +8 8 8 +229 195 183 +160 135 127 +119 92 74 +224 135 58 diff --git a/graphics/pokemon/nacli/shiny.pal b/graphics/pokemon/nacli/shiny.pal new file mode 100644 index 0000000000..650a196d32 --- /dev/null +++ b/graphics/pokemon/nacli/shiny.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +154 212 167 +142 67 39 +239 175 108 +115 69 69 +215 124 67 +193 148 125 +147 98 90 +8 8 8 +229 195 183 +160 135 127 +119 68 82 +255 171 58 diff --git a/graphics/pokemon/naclstack/back.png b/graphics/pokemon/naclstack/back.png new file mode 100644 index 0000000000..34d80185e7 Binary files /dev/null and b/graphics/pokemon/naclstack/back.png differ diff --git a/graphics/pokemon/naclstack/front.png b/graphics/pokemon/naclstack/front.png new file mode 100644 index 0000000000..4055c46cf3 Binary files /dev/null and b/graphics/pokemon/naclstack/front.png differ diff --git a/graphics/pokemon/naclstack/icon.png b/graphics/pokemon/naclstack/icon.png new file mode 100755 index 0000000000..a536c3818d Binary files /dev/null and b/graphics/pokemon/naclstack/icon.png differ diff --git a/graphics/pokemon/naclstack/normal.pal b/graphics/pokemon/naclstack/normal.pal new file mode 100644 index 0000000000..2fd0dd7abd --- /dev/null +++ b/graphics/pokemon/naclstack/normal.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +153 211 165 +113 113 113 +255 255 255 +180 180 180 +18 18 18 +198 135 110 +135 86 81 +246 195 158 +87 44 39 +107 65 60 +255 160 0 +255 255 0 +66 22 28 +194 103 16 diff --git a/graphics/pokemon/naclstack/shiny.pal b/graphics/pokemon/naclstack/shiny.pal new file mode 100644 index 0000000000..a8f14a01b0 --- /dev/null +++ b/graphics/pokemon/naclstack/shiny.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +153 211 165 +164 70 47 +235 145 61 +211 94 44 +18 18 18 +198 135 110 +135 86 81 +246 195 158 +87 44 39 +107 65 60 +255 160 0 +255 255 0 +66 22 28 +194 103 16 diff --git a/graphics/pokemon/nidoking/anim_front.png b/graphics/pokemon/nidoking/anim_front.png index a085144749..22ab26b320 100644 Binary files a/graphics/pokemon/nidoking/anim_front.png and b/graphics/pokemon/nidoking/anim_front.png differ diff --git a/graphics/pokemon/nidoking/back.png b/graphics/pokemon/nidoking/back.png index 6291e963e1..08c067f7f0 100644 Binary files a/graphics/pokemon/nidoking/back.png and b/graphics/pokemon/nidoking/back.png differ diff --git a/graphics/pokemon/nymble/back.png b/graphics/pokemon/nymble/back.png new file mode 100755 index 0000000000..568a99ca8c Binary files /dev/null and b/graphics/pokemon/nymble/back.png differ diff --git a/graphics/pokemon/nymble/front.png b/graphics/pokemon/nymble/front.png new file mode 100755 index 0000000000..66b30103c4 Binary files /dev/null and b/graphics/pokemon/nymble/front.png differ diff --git a/graphics/pokemon/nymble/icon.png b/graphics/pokemon/nymble/icon.png new file mode 100755 index 0000000000..791bd0a427 Binary files /dev/null and b/graphics/pokemon/nymble/icon.png differ diff --git a/graphics/pokemon/nymble/normal.pal b/graphics/pokemon/nymble/normal.pal new file mode 100755 index 0000000000..abf674ba18 --- /dev/null +++ b/graphics/pokemon/nymble/normal.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +154 212 167 +65 74 104 +42 50 75 +119 142 177 +89 109 142 +8 8 8 +203 202 186 +242 242 240 +147 115 23 +188 161 54 +220 213 54 +115 119 127 diff --git a/graphics/pokemon/nymble/shiny.pal b/graphics/pokemon/nymble/shiny.pal new file mode 100755 index 0000000000..59afb1a4fe --- /dev/null +++ b/graphics/pokemon/nymble/shiny.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +154 212 167 +188 181 81 +139 135 58 +244 240 139 +221 213 109 +8 8 8 +203 202 186 +242 242 240 +171 131 41 +193 147 45 +225 197 43 +115 119 127 diff --git a/graphics/pokemon/ogerpon/back.png b/graphics/pokemon/ogerpon/back.png new file mode 100644 index 0000000000..8ec6f0fc0d Binary files /dev/null and b/graphics/pokemon/ogerpon/back.png differ diff --git a/graphics/pokemon/ogerpon/cornerstone/back.png b/graphics/pokemon/ogerpon/cornerstone/back.png new file mode 100644 index 0000000000..1f37c9c1df Binary files /dev/null and b/graphics/pokemon/ogerpon/cornerstone/back.png differ diff --git a/graphics/pokemon/ogerpon/cornerstone/front.png b/graphics/pokemon/ogerpon/cornerstone/front.png new file mode 100644 index 0000000000..6bca5e915c Binary files /dev/null and b/graphics/pokemon/ogerpon/cornerstone/front.png differ diff --git a/graphics/pokemon/ogerpon/cornerstone/normal.pal b/graphics/pokemon/ogerpon/cornerstone/normal.pal new file mode 100644 index 0000000000..057bd48dcc --- /dev/null +++ b/graphics/pokemon/ogerpon/cornerstone/normal.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +148 209 161 +42 44 41 +21 158 7 +0 0 0 +74 76 73 +25 27 24 +61 113 53 +109 99 108 +133 139 139 +53 134 168 +55 189 227 +194 139 62 +255 197 74 +212 230 247 +144 92 38 diff --git a/graphics/pokemon/ogerpon/front.png b/graphics/pokemon/ogerpon/front.png new file mode 100644 index 0000000000..5fa971f873 Binary files /dev/null and b/graphics/pokemon/ogerpon/front.png differ diff --git a/graphics/pokemon/ogerpon/hearthflame/back.png b/graphics/pokemon/ogerpon/hearthflame/back.png new file mode 100644 index 0000000000..d092ec3297 Binary files /dev/null and b/graphics/pokemon/ogerpon/hearthflame/back.png differ diff --git a/graphics/pokemon/ogerpon/hearthflame/front.png b/graphics/pokemon/ogerpon/hearthflame/front.png new file mode 100644 index 0000000000..036ea37f32 Binary files /dev/null and b/graphics/pokemon/ogerpon/hearthflame/front.png differ diff --git a/graphics/pokemon/ogerpon/hearthflame/normal.pal b/graphics/pokemon/ogerpon/hearthflame/normal.pal new file mode 100644 index 0000000000..637556660a --- /dev/null +++ b/graphics/pokemon/ogerpon/hearthflame/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +148 210 164 +156 153 172 +131 28 24 +49 133 172 +213 230 246 +41 44 41 +255 198 74 +172 105 32 +16 157 0 +57 113 49 +49 190 230 +0 0 0 +164 52 49 +74 76 74 +189 137 90 +230 60 49 diff --git a/graphics/pokemon/ogerpon/icon.png b/graphics/pokemon/ogerpon/icon.png new file mode 100644 index 0000000000..65448e8d1d Binary files /dev/null and b/graphics/pokemon/ogerpon/icon.png differ diff --git a/graphics/pokemon/ogerpon/normal.pal b/graphics/pokemon/ogerpon/normal.pal new file mode 100644 index 0000000000..67a862587b --- /dev/null +++ b/graphics/pokemon/ogerpon/normal.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +148 209 161 +42 44 41 +0 1 0 +27 70 15 +0 164 153 +17 106 68 +21 158 7 +74 76 73 +61 113 53 +175 216 159 +251 253 250 +139 99 57 +120 81 39 +219 157 92 +83 133 90 diff --git a/graphics/pokemon/ogerpon/wellspring/back.png b/graphics/pokemon/ogerpon/wellspring/back.png new file mode 100644 index 0000000000..ed74528e65 Binary files /dev/null and b/graphics/pokemon/ogerpon/wellspring/back.png differ diff --git a/graphics/pokemon/ogerpon/wellspring/front.png b/graphics/pokemon/ogerpon/wellspring/front.png new file mode 100644 index 0000000000..5263ce2f1e Binary files /dev/null and b/graphics/pokemon/ogerpon/wellspring/front.png differ diff --git a/graphics/pokemon/ogerpon/wellspring/normal.pal b/graphics/pokemon/ogerpon/wellspring/normal.pal new file mode 100644 index 0000000000..4b22619be4 --- /dev/null +++ b/graphics/pokemon/ogerpon/wellspring/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +148 209 161 +42 44 41 +21 158 7 +74 76 73 +0 0 0 +61 113 53 +11 64 121 +15 90 170 +0 126 229 +53 134 168 +71 85 100 +55 189 227 +212 230 247 +147 91 33 +169 122 74 +152 155 171 diff --git a/graphics/pokemon/oinkologne/back.png b/graphics/pokemon/oinkologne/back.png new file mode 100644 index 0000000000..81810c233f Binary files /dev/null and b/graphics/pokemon/oinkologne/back.png differ diff --git a/graphics/pokemon/oinkologne/female/back.png b/graphics/pokemon/oinkologne/female/back.png new file mode 100644 index 0000000000..d71dab3908 Binary files /dev/null and b/graphics/pokemon/oinkologne/female/back.png differ diff --git a/graphics/pokemon/oinkologne/female/front.png b/graphics/pokemon/oinkologne/female/front.png new file mode 100644 index 0000000000..c3f10ed9f3 Binary files /dev/null and b/graphics/pokemon/oinkologne/female/front.png differ diff --git a/graphics/pokemon/oinkologne/female/icon.png b/graphics/pokemon/oinkologne/female/icon.png new file mode 100755 index 0000000000..0acd6e2711 Binary files /dev/null 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 new file mode 100755 index 0000000000..36ce1eb7f8 Binary files /dev/null and b/graphics/pokemon/oinkologne/female/iconTODO.png differ diff --git a/graphics/pokemon/oinkologne/female/normal.pal b/graphics/pokemon/oinkologne/female/normal.pal new file mode 100644 index 0000000000..ba2c645dc6 --- /dev/null +++ b/graphics/pokemon/oinkologne/female/normal.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +152 208 160 +216 80 128 +248 160 200 +144 40 64 +248 120 144 +24 24 24 +96 64 72 +64 40 40 +248 160 8 +200 104 88 +0 0 0 +144 88 80 +248 200 8 +248 248 248 +168 160 160 diff --git a/graphics/pokemon/oinkologne/female/shiny.pal b/graphics/pokemon/oinkologne/female/shiny.pal new file mode 100644 index 0000000000..9a427f2a72 --- /dev/null +++ b/graphics/pokemon/oinkologne/female/shiny.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +152 208 160 +216 80 128 +248 160 200 +144 40 64 +248 120 144 +24 24 24 +232 192 206 +217 158 179 +248 160 8 +248 240 240 +0 0 0 +241 223 226 +248 200 8 +248 248 248 +168 160 160 diff --git a/graphics/pokemon/oinkologne/front.png b/graphics/pokemon/oinkologne/front.png new file mode 100644 index 0000000000..22263f0903 Binary files /dev/null and b/graphics/pokemon/oinkologne/front.png differ diff --git a/graphics/pokemon/oinkologne/icon.png b/graphics/pokemon/oinkologne/icon.png new file mode 100755 index 0000000000..0acd6e2711 Binary files /dev/null and b/graphics/pokemon/oinkologne/icon.png differ diff --git a/graphics/pokemon/oinkologne/normal.pal b/graphics/pokemon/oinkologne/normal.pal new file mode 100644 index 0000000000..6487815766 --- /dev/null +++ b/graphics/pokemon/oinkologne/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +131 97 49 +197 80 131 +16 16 16 +96 92 107 +246 214 65 +230 113 164 +59 50 72 +83 81 104 +31 33 45 +255 255 255 +43 43 43 +87 83 97 +68 61 84 +70 69 95 +131 60 90 diff --git a/graphics/pokemon/oinkologne/shiny.pal b/graphics/pokemon/oinkologne/shiny.pal new file mode 100644 index 0000000000..8faecfbad6 --- /dev/null +++ b/graphics/pokemon/oinkologne/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +131 97 49 +197 80 131 +16 16 16 +255 206 222 +246 214 65 +230 113 164 +249 241 242 +205 153 172 +139 89 115 +255 255 255 +57 60 65 +246 186 205 +247 233 235 +255 226 238 +131 60 90 diff --git a/graphics/pokemon/okidogi/back.png b/graphics/pokemon/okidogi/back.png new file mode 100644 index 0000000000..5a1e7fb523 Binary files /dev/null and b/graphics/pokemon/okidogi/back.png differ diff --git a/graphics/pokemon/okidogi/front.png b/graphics/pokemon/okidogi/front.png new file mode 100644 index 0000000000..a6b0a62f0e Binary files /dev/null and b/graphics/pokemon/okidogi/front.png differ diff --git a/graphics/pokemon/okidogi/icon.png b/graphics/pokemon/okidogi/icon.png new file mode 100644 index 0000000000..91984549c3 Binary files /dev/null and b/graphics/pokemon/okidogi/icon.png differ diff --git a/graphics/pokemon/okidogi/normal.pal b/graphics/pokemon/okidogi/normal.pal new file mode 100644 index 0000000000..9f256a4a5b --- /dev/null +++ b/graphics/pokemon/okidogi/normal.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +152 208 160 +16 16 16 +90 33 73 +45 45 45 +78 73 71 +202 103 162 +146 57 119 +26 29 28 +121 167 58 +84 117 53 +184 140 7 +254 208 27 +249 249 249 +29 57 21 +153 157 166 diff --git a/graphics/pokemon/okidogi/shiny.pal b/graphics/pokemon/okidogi/shiny.pal new file mode 100644 index 0000000000..d239ae218f --- /dev/null +++ b/graphics/pokemon/okidogi/shiny.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +152 208 160 +16 16 16 +90 33 73 +140 49 12 +207 71 17 +202 103 162 +146 57 119 +26 29 28 +121 167 58 +84 117 53 +184 140 7 +254 208 27 +249 249 249 +29 57 21 +153 157 166 diff --git a/graphics/pokemon/onix/anim_front.png b/graphics/pokemon/onix/anim_front.png index 6aab94e97f..933b71d66b 100644 Binary files a/graphics/pokemon/onix/anim_front.png and b/graphics/pokemon/onix/anim_front.png differ diff --git a/graphics/pokemon/onix/back.png b/graphics/pokemon/onix/back.png index 4a9e34afd3..c199fa228d 100644 Binary files a/graphics/pokemon/onix/back.png and b/graphics/pokemon/onix/back.png differ diff --git a/graphics/pokemon/onix/normal.pal b/graphics/pokemon/onix/normal.pal index 3391776633..c57e5be585 100644 --- a/graphics/pokemon/onix/normal.pal +++ b/graphics/pokemon/onix/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -82 74 74 -131 123 123 +255 255 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +40 32 32 246 238 238 -189 180 180 -16 16 16 222 213 213 -248 248 248 -248 248 248 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +189 180 180 +131 123 123 +82 74 74 +16 16 16 diff --git a/graphics/pokemon/onix/shiny.pal b/graphics/pokemon/onix/shiny.pal index 8cad51aca7..bc6d63ea51 100644 --- a/graphics/pokemon/onix/shiny.pal +++ b/graphics/pokemon/onix/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -88 96 24 -128 136 56 -232 232 136 -160 168 80 +152 160 208 +255 255 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +40 32 32 +238 246 131 +205 213 98 +172 180 82 +131 148 57 +106 115 24 16 16 16 -200 200 112 -248 248 248 -240 232 232 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/oranguru/anim_front.png b/graphics/pokemon/oranguru/anim_front.png new file mode 100644 index 0000000000..c3f9a59484 Binary files /dev/null and b/graphics/pokemon/oranguru/anim_front.png differ diff --git a/graphics/pokemon/oranguru/front.png b/graphics/pokemon/oranguru/front.png deleted file mode 100644 index b0ba3510c1..0000000000 Binary files a/graphics/pokemon/oranguru/front.png and /dev/null differ diff --git a/graphics/pokemon/orbeetle/gigantamax/back.png b/graphics/pokemon/orbeetle/gigantamax/back.png new file mode 100644 index 0000000000..e984f9cef9 Binary files /dev/null and b/graphics/pokemon/orbeetle/gigantamax/back.png differ diff --git a/graphics/pokemon/orbeetle/gigantamax/front.png b/graphics/pokemon/orbeetle/gigantamax/front.png new file mode 100644 index 0000000000..f59aff21ab Binary files /dev/null and b/graphics/pokemon/orbeetle/gigantamax/front.png differ diff --git a/graphics/pokemon/orbeetle/gigantamax/icon.png b/graphics/pokemon/orbeetle/gigantamax/icon.png new file mode 100644 index 0000000000..4e486f2637 Binary files /dev/null and b/graphics/pokemon/orbeetle/gigantamax/icon.png differ diff --git a/graphics/pokemon/orbeetle/gigantamax/normal.pal b/graphics/pokemon/orbeetle/gigantamax/normal.pal new file mode 100644 index 0000000000..af34ce0fac --- /dev/null +++ b/graphics/pokemon/orbeetle/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +120 23 40 +189 20 43 +253 38 54 +164 86 0 +191 167 49 +16 189 220 +62 32 45 +78 58 61 +207 255 255 +87 251 231 +246 230 115 +172 156 173 +249 255 255 +214 213 211 diff --git a/graphics/pokemon/orbeetle/gigantamax/shiny.pal b/graphics/pokemon/orbeetle/gigantamax/shiny.pal new file mode 100644 index 0000000000..349aac2b6a --- /dev/null +++ b/graphics/pokemon/orbeetle/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +50 41 102 +101 78 199 +146 115 230 +133 49 73 +199 83 105 +16 189 220 +62 32 45 +78 58 61 +207 255 255 +87 251 231 +234 134 149 +47 62 166 +249 255 255 +85 104 240 diff --git a/graphics/pokemon/orthworm/back.png b/graphics/pokemon/orthworm/back.png new file mode 100755 index 0000000000..f915a289f0 Binary files /dev/null and b/graphics/pokemon/orthworm/back.png differ diff --git a/graphics/pokemon/orthworm/front.png b/graphics/pokemon/orthworm/front.png new file mode 100755 index 0000000000..87535ce92c Binary files /dev/null and b/graphics/pokemon/orthworm/front.png differ diff --git a/graphics/pokemon/orthworm/icon.png b/graphics/pokemon/orthworm/icon.png new file mode 100755 index 0000000000..9cb39cc79b Binary files /dev/null and b/graphics/pokemon/orthworm/icon.png differ diff --git a/graphics/pokemon/orthworm/normal.pal b/graphics/pokemon/orthworm/normal.pal new file mode 100755 index 0000000000..172abe2db7 --- /dev/null +++ b/graphics/pokemon/orthworm/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 56 56 +240 96 88 +184 72 72 +16 16 16 +240 132 128 +112 92 96 +160 144 144 +200 192 192 +184 224 248 +248 204 184 +224 164 152 +96 40 56 +128 68 72 +32 115 229 +26 97 189 diff --git a/graphics/pokemon/orthworm/shiny.pal b/graphics/pokemon/orthworm/shiny.pal new file mode 100755 index 0000000000..cb5b6f2a02 --- /dev/null +++ b/graphics/pokemon/orthworm/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +70 97 113 +135 199 210 +102 157 165 +16 16 16 +153 216 224 +112 92 96 +160 144 144 +200 192 192 +184 224 248 +252 231 199 +206 182 159 +96 40 56 +128 68 72 +21 76 148 +17 59 115 diff --git a/graphics/pokemon/palafin/back.png b/graphics/pokemon/palafin/back.png new file mode 100755 index 0000000000..422cb602f7 Binary files /dev/null and b/graphics/pokemon/palafin/back.png differ diff --git a/graphics/pokemon/palafin/front.png b/graphics/pokemon/palafin/front.png new file mode 100755 index 0000000000..074ca87f3e Binary files /dev/null and b/graphics/pokemon/palafin/front.png differ diff --git a/graphics/pokemon/palafin/hero/back.png b/graphics/pokemon/palafin/hero/back.png new file mode 100755 index 0000000000..922496ccf6 Binary files /dev/null and b/graphics/pokemon/palafin/hero/back.png differ diff --git a/graphics/pokemon/palafin/hero/front.png b/graphics/pokemon/palafin/hero/front.png new file mode 100755 index 0000000000..47f66479e1 Binary files /dev/null and b/graphics/pokemon/palafin/hero/front.png differ diff --git a/graphics/pokemon/palafin/hero/icon.png b/graphics/pokemon/palafin/hero/icon.png new file mode 100755 index 0000000000..8dd8a11844 Binary files /dev/null and b/graphics/pokemon/palafin/hero/icon.png differ diff --git a/graphics/pokemon/palafin/hero/normal.pal b/graphics/pokemon/palafin/hero/normal.pal new file mode 100755 index 0000000000..60a217e1c5 --- /dev/null +++ b/graphics/pokemon/palafin/hero/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +8 84 104 +136 212 248 +104 152 184 +16 16 16 +0 76 152 +0 44 96 +64 140 216 +0 104 200 +248 252 248 +168 192 208 +248 248 248 +160 176 192 +192 64 136 +152 44 104 +0 0 0 diff --git a/graphics/pokemon/palafin/hero/shiny.pal b/graphics/pokemon/palafin/hero/shiny.pal new file mode 100755 index 0000000000..d0cde2f6db --- /dev/null +++ b/graphics/pokemon/palafin/hero/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +8 84 104 +115 204 255 +88 146 189 +16 16 16 +65 54 87 +34 31 49 +125 109 163 +94 77 130 +248 252 248 +168 192 208 +55 80 231 +45 61 161 +205 46 125 +160 32 91 +0 0 0 diff --git a/graphics/pokemon/palafin/icon.png b/graphics/pokemon/palafin/icon.png new file mode 100755 index 0000000000..d24e846fc5 Binary files /dev/null and b/graphics/pokemon/palafin/icon.png differ diff --git a/graphics/pokemon/palafin/normal.pal b/graphics/pokemon/palafin/normal.pal new file mode 100755 index 0000000000..cf7dae9337 --- /dev/null +++ b/graphics/pokemon/palafin/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 96 112 +80 200 216 +136 216 224 +64 156 176 +176 192 200 +208 236 240 +24 160 248 +16 16 16 +248 252 248 +248 164 184 +176 128 160 +240 164 216 +24 104 136 +128 212 240 +64 160 200 diff --git a/graphics/pokemon/palafin/shiny.pal b/graphics/pokemon/palafin/shiny.pal new file mode 100755 index 0000000000..937cbb4fba --- /dev/null +++ b/graphics/pokemon/palafin/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +61 77 167 +118 138 252 +139 158 254 +79 100 235 +170 181 211 +208 236 240 +24 160 248 +16 16 16 +248 252 248 +74 229 145 +176 128 160 +240 164 216 +24 104 136 +128 212 240 +64 160 200 diff --git a/graphics/pokemon/passimian/anim_front.png b/graphics/pokemon/passimian/anim_front.png new file mode 100644 index 0000000000..c69fd6a2e4 Binary files /dev/null and b/graphics/pokemon/passimian/anim_front.png differ diff --git a/graphics/pokemon/passimian/back.png b/graphics/pokemon/passimian/back.png index e27f88bb02..93b992c84d 100644 Binary files a/graphics/pokemon/passimian/back.png and b/graphics/pokemon/passimian/back.png differ diff --git a/graphics/pokemon/passimian/front.png b/graphics/pokemon/passimian/front.png deleted file mode 100644 index 94ebe658c2..0000000000 Binary files a/graphics/pokemon/passimian/front.png and /dev/null differ diff --git a/graphics/pokemon/passimian/normal.pal b/graphics/pokemon/passimian/normal.pal index 26283bf52e..0b663aba07 100644 --- a/graphics/pokemon/passimian/normal.pal +++ b/graphics/pokemon/passimian/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -56 48 32 -96 96 64 -16 16 16 -40 40 24 +54 48 41 +89 83 76 +8 8 8 +238 238 238 +248 248 248 +54 48 41 +82 76 70 +107 100 93 +248 248 248 +186 186 186 +242 179 39 +197 222 95 +144 163 60 +255 255 0 24 200 80 -72 64 48 -248 248 248 -120 160 64 -184 224 104 -192 184 160 -240 128 24 -88 80 56 -248 216 0 -248 248 248 -248 248 248 diff --git a/graphics/pokemon/passimian/shiny.pal b/graphics/pokemon/passimian/shiny.pal index 9b8f0f4a8f..833f0df2fc 100644 --- a/graphics/pokemon/passimian/shiny.pal +++ b/graphics/pokemon/passimian/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -64 48 32 -112 104 64 -16 16 16 -16 16 120 +14 47 132 +23 68 181 +8 8 8 +115 115 64 +22 70 181 +66 58 40 +91 81 61 +112 112 66 +248 248 248 +186 186 186 +248 248 248 +240 173 29 +156 110 12 +255 255 0 24 200 80 -80 64 48 -16 64 224 -152 64 24 -208 112 32 -192 184 160 -240 240 232 -8 48 216 -248 216 0 -248 240 216 -104 96 64 diff --git a/graphics/pokemon/pawmi/back.png b/graphics/pokemon/pawmi/back.png new file mode 100644 index 0000000000..c5d59e6677 Binary files /dev/null and b/graphics/pokemon/pawmi/back.png differ diff --git a/graphics/pokemon/pawmi/front.png b/graphics/pokemon/pawmi/front.png new file mode 100644 index 0000000000..265a9c7173 Binary files /dev/null and b/graphics/pokemon/pawmi/front.png differ diff --git a/graphics/pokemon/pawmi/icon.png b/graphics/pokemon/pawmi/icon.png new file mode 100755 index 0000000000..a7fc302fe0 Binary files /dev/null and b/graphics/pokemon/pawmi/icon.png differ diff --git a/graphics/pokemon/pawmi/normal.pal b/graphics/pokemon/pawmi/normal.pal new file mode 100644 index 0000000000..822fa530da --- /dev/null +++ b/graphics/pokemon/pawmi/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +150 79 14 +243 156 78 +96 51 23 +126 114 71 +194 89 3 +189 162 115 +244 226 188 +15 15 15 +235 120 35 +46 116 82 +211 97 3 +52 52 65 +252 252 252 +197 164 98 +255 205 32 diff --git a/graphics/pokemon/pawmi/normal.png b/graphics/pokemon/pawmi/normal.png new file mode 100644 index 0000000000..85301260cf Binary files /dev/null and b/graphics/pokemon/pawmi/normal.png differ diff --git a/graphics/pokemon/pawmi/shiny.pal b/graphics/pokemon/pawmi/shiny.pal new file mode 100644 index 0000000000..02d4ae6d00 --- /dev/null +++ b/graphics/pokemon/pawmi/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +220 58 50 +255 155 172 +96 51 23 +139 83 58 +194 89 3 +228 167 137 +244 226 188 +15 15 15 +255 119 147 +46 116 82 +237 82 82 +52 52 65 +252 252 252 +221 177 74 +255 205 32 diff --git a/graphics/pokemon/pawmo/back.png b/graphics/pokemon/pawmo/back.png new file mode 100644 index 0000000000..42d151758a Binary files /dev/null and b/graphics/pokemon/pawmo/back.png differ diff --git a/graphics/pokemon/pawmo/front.png b/graphics/pokemon/pawmo/front.png new file mode 100644 index 0000000000..9a01396050 Binary files /dev/null and b/graphics/pokemon/pawmo/front.png differ diff --git a/graphics/pokemon/pawmo/icon.png b/graphics/pokemon/pawmo/icon.png new file mode 100755 index 0000000000..41cc6b4f9a Binary files /dev/null and b/graphics/pokemon/pawmo/icon.png differ diff --git a/graphics/pokemon/pawmo/normal.pal b/graphics/pokemon/pawmo/normal.pal new file mode 100644 index 0000000000..8a6a2121c5 --- /dev/null +++ b/graphics/pokemon/pawmo/normal.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +152 208 160 +136 64 0 +0 0 0 +240 184 72 +16 104 96 +232 152 0 +0 160 144 +176 112 8 +248 232 184 +216 192 160 +88 64 48 +255 255 255 +240 208 56 +168 64 32 +232 72 56 diff --git a/graphics/pokemon/pawmo/shiny.pal b/graphics/pokemon/pawmo/shiny.pal new file mode 100644 index 0000000000..3022ea1e04 --- /dev/null +++ b/graphics/pokemon/pawmo/shiny.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +152 208 160 +136 64 0 +0 0 0 +245 158 128 +16 104 96 +242 112 116 +0 186 182 +214 79 87 +248 232 184 +216 192 160 +88 64 48 +255 255 255 +240 208 56 +168 64 32 +232 72 56 diff --git a/graphics/pokemon/pawmot/back.png b/graphics/pokemon/pawmot/back.png new file mode 100755 index 0000000000..f9f54821b8 Binary files /dev/null and b/graphics/pokemon/pawmot/back.png differ diff --git a/graphics/pokemon/pawmot/front.png b/graphics/pokemon/pawmot/front.png new file mode 100755 index 0000000000..8b8ff519ea Binary files /dev/null and b/graphics/pokemon/pawmot/front.png differ diff --git a/graphics/pokemon/pawmot/icon.png b/graphics/pokemon/pawmot/icon.png new file mode 100755 index 0000000000..cc9d2e942a Binary files /dev/null and b/graphics/pokemon/pawmot/icon.png differ diff --git a/graphics/pokemon/pawmot/normal.pal b/graphics/pokemon/pawmot/normal.pal new file mode 100755 index 0000000000..97f160e2fd --- /dev/null +++ b/graphics/pokemon/pawmot/normal.pal @@ -0,0 +1,16 @@ +JASC-PAL +0100 +13 +154 212 167 +139 68 0 +180 113 3 +234 158 0 +8 8 8 +240 188 70 +7 105 99 +0 168 149 +87 63 45 +253 253 253 +247 213 57 +252 236 187 +223 195 167 diff --git a/graphics/pokemon/pawmot/shiny.pal b/graphics/pokemon/pawmot/shiny.pal new file mode 100755 index 0000000000..85c0640331 --- /dev/null +++ b/graphics/pokemon/pawmot/shiny.pal @@ -0,0 +1,16 @@ +JASC-PAL +0100 +13 +154 212 167 +167 42 61 +215 78 86 +242 113 117 +8 8 8 +245 159 129 +11 122 124 +0 187 183 +87 63 45 +253 253 253 +247 213 57 +252 236 187 +223 195 167 diff --git a/graphics/pokemon/pidgeotto/anim_front.png b/graphics/pokemon/pidgeotto/anim_front.png index 49fc12c0bc..7d9b6e51cd 100644 Binary files a/graphics/pokemon/pidgeotto/anim_front.png and b/graphics/pokemon/pidgeotto/anim_front.png differ diff --git a/graphics/pokemon/pidgeotto/back.png b/graphics/pokemon/pidgeotto/back.png index 43aaed915c..c9b5793f58 100644 Binary files a/graphics/pokemon/pidgeotto/back.png and b/graphics/pokemon/pidgeotto/back.png differ diff --git a/graphics/pokemon/pikachu/gigantamax/back.png b/graphics/pokemon/pikachu/gigantamax/back.png new file mode 100644 index 0000000000..fefeab9c22 Binary files /dev/null and b/graphics/pokemon/pikachu/gigantamax/back.png differ diff --git a/graphics/pokemon/pikachu/gigantamax/front.png b/graphics/pokemon/pikachu/gigantamax/front.png new file mode 100644 index 0000000000..75f0c2beda Binary files /dev/null and b/graphics/pokemon/pikachu/gigantamax/front.png differ diff --git a/graphics/pokemon/pikachu/gigantamax/icon.png b/graphics/pokemon/pikachu/gigantamax/icon.png new file mode 100644 index 0000000000..440004b8e9 Binary files /dev/null and b/graphics/pokemon/pikachu/gigantamax/icon.png differ diff --git a/graphics/pokemon/pikachu/gigantamax/normal.pal b/graphics/pokemon/pikachu/gigantamax/normal.pal new file mode 100644 index 0000000000..1bfa354f78 --- /dev/null +++ b/graphics/pokemon/pikachu/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +248 252 75 +255 246 164 +254 254 254 +16 16 16 +41 41 41 +65 65 74 +246 189 32 +98 49 8 +156 82 0 +246 230 82 +230 90 65 +197 32 24 +222 148 0 +115 115 131 +15 15 15 diff --git a/graphics/pokemon/pikachu/gigantamax/shiny.pal b/graphics/pokemon/pikachu/gigantamax/shiny.pal new file mode 100644 index 0000000000..377e03cd67 --- /dev/null +++ b/graphics/pokemon/pikachu/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +248 252 75 +255 230 131 +254 254 254 +16 16 16 +41 41 41 +65 65 74 +255 164 0 +115 16 0 +180 49 0 +255 197 49 +230 98 65 +197 41 24 +230 131 0 +115 115 131 +15 15 15 diff --git a/graphics/pokemon/pikachu/iconf.png b/graphics/pokemon/pikachu/iconf.png new file mode 100644 index 0000000000..22eeed0a46 Binary files /dev/null and b/graphics/pokemon/pikachu/iconf.png differ diff --git a/graphics/pokemon/pikachu/world_cap/icon.png b/graphics/pokemon/pikachu/world_cap/icon.png new file mode 100644 index 0000000000..260e29cda2 Binary files /dev/null and b/graphics/pokemon/pikachu/world_cap/icon.png differ diff --git a/graphics/pokemon/pikipek/anim_front.png b/graphics/pokemon/pikipek/anim_front.png new file mode 100644 index 0000000000..f7b765876c Binary files /dev/null and b/graphics/pokemon/pikipek/anim_front.png differ diff --git a/graphics/pokemon/pikipek/back.png b/graphics/pokemon/pikipek/back.png index 030eea3c14..2175a1f183 100644 Binary files a/graphics/pokemon/pikipek/back.png and b/graphics/pokemon/pikipek/back.png differ diff --git a/graphics/pokemon/pikipek/front.png b/graphics/pokemon/pikipek/front.png deleted file mode 100644 index a16e45512f..0000000000 Binary files a/graphics/pokemon/pikipek/front.png and /dev/null differ diff --git a/graphics/pokemon/poltchageist/back.png b/graphics/pokemon/poltchageist/back.png new file mode 100644 index 0000000000..2eeaaa5617 Binary files /dev/null and b/graphics/pokemon/poltchageist/back.png differ diff --git a/graphics/pokemon/poltchageist/front.png b/graphics/pokemon/poltchageist/front.png new file mode 100644 index 0000000000..d7a013e3de Binary files /dev/null and b/graphics/pokemon/poltchageist/front.png differ diff --git a/graphics/pokemon/poltchageist/icon.png b/graphics/pokemon/poltchageist/icon.png new file mode 100644 index 0000000000..6b686ad08d Binary files /dev/null and b/graphics/pokemon/poltchageist/icon.png differ diff --git a/graphics/pokemon/poltchageist/normal.pal b/graphics/pokemon/poltchageist/normal.pal new file mode 100644 index 0000000000..e4bc20fbbf --- /dev/null +++ b/graphics/pokemon/poltchageist/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +106 68 24 +90 157 74 +246 218 98 +32 24 24 +74 56 57 +255 255 255 +213 210 197 +164 149 82 +0 4 0 +123 198 98 +65 121 41 +164 186 115 +246 238 238 +156 153 131 +205 194 115 diff --git a/graphics/pokemon/poltchageist/shiny.pal b/graphics/pokemon/poltchageist/shiny.pal new file mode 100644 index 0000000000..44b3de645d --- /dev/null +++ b/graphics/pokemon/poltchageist/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +106 68 24 +90 157 74 +246 218 98 +10 48 0 +32 88 15 +255 255 255 +213 210 197 +164 149 82 +0 4 0 +123 198 98 +65 121 41 +164 186 115 +246 238 238 +156 153 131 +205 194 115 diff --git a/graphics/pokemon/quaquaval/back.png b/graphics/pokemon/quaquaval/back.png new file mode 100644 index 0000000000..d5b1eb3588 Binary files /dev/null and b/graphics/pokemon/quaquaval/back.png differ diff --git a/graphics/pokemon/quaquaval/front.png b/graphics/pokemon/quaquaval/front.png new file mode 100644 index 0000000000..9726dc8c6c Binary files /dev/null and b/graphics/pokemon/quaquaval/front.png differ diff --git a/graphics/pokemon/quaquaval/icon.png b/graphics/pokemon/quaquaval/icon.png new file mode 100755 index 0000000000..4e68d84ff4 Binary files /dev/null and b/graphics/pokemon/quaquaval/icon.png differ diff --git a/graphics/pokemon/quaquaval/normal.pal b/graphics/pokemon/quaquaval/normal.pal new file mode 100644 index 0000000000..9a0f731eef --- /dev/null +++ b/graphics/pokemon/quaquaval/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +39 96 120 +65 155 194 +85 219 230 +16 16 16 +255 255 255 +190 207 234 +40 42 77 +51 63 147 +57 75 238 +239 255 255 +102 50 43 +227 70 15 +148 69 46 +237 169 54 +203 126 41 diff --git a/graphics/pokemon/quaquaval/shiny.pal b/graphics/pokemon/quaquaval/shiny.pal new file mode 100644 index 0000000000..3ff9c65959 --- /dev/null +++ b/graphics/pokemon/quaquaval/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +75 145 150 +122 183 188 +85 219 230 +16 16 16 +255 255 255 +190 207 234 +81 71 124 +135 125 181 +184 189 248 +239 255 255 +102 50 43 +241 116 33 +148 69 46 +249 216 104 +218 163 61 diff --git a/graphics/pokemon/quaxly/back.png b/graphics/pokemon/quaxly/back.png new file mode 100644 index 0000000000..8bd2f3544e Binary files /dev/null and b/graphics/pokemon/quaxly/back.png differ diff --git a/graphics/pokemon/quaxly/front.png b/graphics/pokemon/quaxly/front.png new file mode 100644 index 0000000000..f215fee531 Binary files /dev/null and b/graphics/pokemon/quaxly/front.png differ diff --git a/graphics/pokemon/quaxly/icon.png b/graphics/pokemon/quaxly/icon.png new file mode 100755 index 0000000000..4036957445 Binary files /dev/null and b/graphics/pokemon/quaxly/icon.png differ diff --git a/graphics/pokemon/quaxly/normal.pal b/graphics/pokemon/quaxly/normal.pal new file mode 100644 index 0000000000..954e48817a --- /dev/null +++ b/graphics/pokemon/quaxly/normal.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +153 211 165 +24 88 120 +49 132 161 +68 187 207 +83 232 239 +248 248 248 +16 16 16 +184 200 224 +120 152 184 +0 88 160 +72 96 112 +128 91 32 +255 219 79 +181 154 48 diff --git a/graphics/pokemon/quaxly/shiny.pal b/graphics/pokemon/quaxly/shiny.pal new file mode 100644 index 0000000000..3b3bbd5259 --- /dev/null +++ b/graphics/pokemon/quaxly/shiny.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +153 211 165 +54 100 105 +86 194 184 +166 253 234 +222 254 247 +248 248 248 +16 16 16 +184 200 224 +120 152 184 +0 88 160 +72 96 112 +128 91 32 +255 219 79 +181 154 48 diff --git a/graphics/pokemon/quaxwell/back.png b/graphics/pokemon/quaxwell/back.png new file mode 100644 index 0000000000..bf7e8ceb27 Binary files /dev/null and b/graphics/pokemon/quaxwell/back.png differ diff --git a/graphics/pokemon/quaxwell/front.png b/graphics/pokemon/quaxwell/front.png new file mode 100644 index 0000000000..0b10f5908c Binary files /dev/null and b/graphics/pokemon/quaxwell/front.png differ diff --git a/graphics/pokemon/quaxwell/icon.png b/graphics/pokemon/quaxwell/icon.png new file mode 100755 index 0000000000..3806542c09 Binary files /dev/null and b/graphics/pokemon/quaxwell/icon.png differ diff --git a/graphics/pokemon/quaxwell/normal.pal b/graphics/pokemon/quaxwell/normal.pal new file mode 100644 index 0000000000..91f50df427 --- /dev/null +++ b/graphics/pokemon/quaxwell/normal.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +153 211 165 +17 67 121 +30 124 211 +96 162 222 +33 96 162 +49 138 178 +74 210 230 +16 16 16 +98 103 133 +191 180 99 +252 252 253 +167 174 213 +255 243 107 +110 101 44 diff --git a/graphics/pokemon/quaxwell/shiny.pal b/graphics/pokemon/quaxwell/shiny.pal new file mode 100644 index 0000000000..df9a4e8bfd --- /dev/null +++ b/graphics/pokemon/quaxwell/shiny.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +153 211 165 +63 124 154 +166 253 244 +223 255 251 +95 209 222 +43 68 128 +43 85 198 +16 16 16 +98 103 133 +191 180 99 +252 252 253 +167 174 213 +255 243 107 +110 101 44 diff --git a/graphics/pokemon/rabsca/back.png b/graphics/pokemon/rabsca/back.png new file mode 100644 index 0000000000..e8ac8560b4 Binary files /dev/null and b/graphics/pokemon/rabsca/back.png differ diff --git a/graphics/pokemon/rabsca/front.png b/graphics/pokemon/rabsca/front.png new file mode 100644 index 0000000000..90ff24d205 Binary files /dev/null and b/graphics/pokemon/rabsca/front.png differ diff --git a/graphics/pokemon/rabsca/icon.png b/graphics/pokemon/rabsca/icon.png new file mode 100755 index 0000000000..57c93e30a3 Binary files /dev/null and b/graphics/pokemon/rabsca/icon.png differ diff --git a/graphics/pokemon/rabsca/normal.pal b/graphics/pokemon/rabsca/normal.pal new file mode 100644 index 0000000000..5b2d39aaa7 --- /dev/null +++ b/graphics/pokemon/rabsca/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +133 50 171 +207 73 219 +62 25 122 +222 61 117 +252 252 252 +193 47 98 +234 78 121 +245 94 125 +16 16 16 +22 83 133 +31 142 189 +80 223 240 +154 167 201 +163 41 85 +237 61 91 diff --git a/graphics/pokemon/rabsca/shiny.pal b/graphics/pokemon/rabsca/shiny.pal new file mode 100644 index 0000000000..8c7941e989 --- /dev/null +++ b/graphics/pokemon/rabsca/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +133 50 171 +207 73 219 +62 25 122 +222 61 117 +252 252 252 +193 47 98 +234 78 121 +245 94 125 +16 16 16 +148 75 9 +214 137 12 +255 224 46 +207 185 149 +117 53 43 +178 97 65 diff --git a/graphics/pokemon/rellor/back.png b/graphics/pokemon/rellor/back.png new file mode 100644 index 0000000000..8d849b9f06 Binary files /dev/null and b/graphics/pokemon/rellor/back.png differ diff --git a/graphics/pokemon/rellor/front.png b/graphics/pokemon/rellor/front.png new file mode 100644 index 0000000000..23b391802a Binary files /dev/null and b/graphics/pokemon/rellor/front.png differ diff --git a/graphics/pokemon/rellor/icon.png b/graphics/pokemon/rellor/icon.png new file mode 100755 index 0000000000..56ea140347 Binary files /dev/null and b/graphics/pokemon/rellor/icon.png differ diff --git a/graphics/pokemon/rellor/normal.pal b/graphics/pokemon/rellor/normal.pal new file mode 100644 index 0000000000..a516fd58a7 --- /dev/null +++ b/graphics/pokemon/rellor/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +91 77 55 +119 99 72 +197 180 170 +158 132 97 +55 51 43 +243 135 37 +87 82 68 +16 16 16 +119 116 99 +77 69 48 +176 167 102 +185 108 38 +162 142 134 +212 212 212 +183 70 149 diff --git a/graphics/pokemon/rellor/shiny.pal b/graphics/pokemon/rellor/shiny.pal new file mode 100644 index 0000000000..92d3978fa5 --- /dev/null +++ b/graphics/pokemon/rellor/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +148 75 9 +214 137 12 +255 224 43 +255 224 46 +55 51 43 +255 224 48 +87 82 68 +16 16 16 +119 116 99 +212 204 164 +176 174 163 +214 138 14 +214 136 10 +212 212 212 +82 109 157 diff --git a/graphics/pokemon/revavroom/back.png b/graphics/pokemon/revavroom/back.png new file mode 100644 index 0000000000..127fea4b71 Binary files /dev/null and b/graphics/pokemon/revavroom/back.png differ diff --git a/graphics/pokemon/revavroom/front.png b/graphics/pokemon/revavroom/front.png new file mode 100644 index 0000000000..486326c545 Binary files /dev/null and b/graphics/pokemon/revavroom/front.png differ diff --git a/graphics/pokemon/revavroom/icon.png b/graphics/pokemon/revavroom/icon.png new file mode 100755 index 0000000000..8d3a2ee0cc Binary files /dev/null and b/graphics/pokemon/revavroom/icon.png differ diff --git a/graphics/pokemon/revavroom/normal.pal b/graphics/pokemon/revavroom/normal.pal new file mode 100644 index 0000000000..9625234e1b --- /dev/null +++ b/graphics/pokemon/revavroom/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +55 51 69 +29 28 41 +133 128 138 +96 90 105 +16 16 16 +31 33 43 +118 127 148 +91 63 128 +49 34 84 +153 107 189 +207 213 219 +58 63 76 +247 251 255 +255 237 37 +232 176 52 diff --git a/graphics/pokemon/revavroom/shiny.pal b/graphics/pokemon/revavroom/shiny.pal new file mode 100644 index 0000000000..ed4463941a --- /dev/null +++ b/graphics/pokemon/revavroom/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +55 51 69 +29 28 41 +133 128 138 +96 90 105 +16 16 16 +31 33 43 +158 122 73 +91 63 128 +49 34 84 +153 107 189 +234 200 106 +58 63 76 +247 251 255 +237 142 178 +217 101 163 diff --git a/graphics/pokemon/rhydon/anim_front.png b/graphics/pokemon/rhydon/anim_front.png index 758a245b58..e3af357623 100644 Binary files a/graphics/pokemon/rhydon/anim_front.png and b/graphics/pokemon/rhydon/anim_front.png differ diff --git a/graphics/pokemon/rhydon/anim_frontf.png b/graphics/pokemon/rhydon/anim_frontf.png index 31fdb1e04f..b0e58b0e1d 100644 Binary files a/graphics/pokemon/rhydon/anim_frontf.png and b/graphics/pokemon/rhydon/anim_frontf.png differ diff --git a/graphics/pokemon/rhydon/back.png b/graphics/pokemon/rhydon/back.png index 8d810fca79..394072ea20 100644 Binary files a/graphics/pokemon/rhydon/back.png and b/graphics/pokemon/rhydon/back.png differ diff --git a/graphics/pokemon/rhydon/backf.png b/graphics/pokemon/rhydon/backf.png index 4e40dc7798..7c7a065538 100644 Binary files a/graphics/pokemon/rhydon/backf.png and b/graphics/pokemon/rhydon/backf.png differ diff --git a/graphics/pokemon/rhydon/normal.pal b/graphics/pokemon/rhydon/normal.pal index 2658775bce..94daed457b 100644 --- a/graphics/pokemon/rhydon/normal.pal +++ b/graphics/pokemon/rhydon/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -139 139 148 -82 82 90 -197 197 189 -16 16 16 -230 230 222 -248 248 248 -224 224 216 -115 90 49 -255 238 197 +255 255 255 +255 255 197 +230 213 172 180 164 115 +115 90 49 +230 82 57 164 49 16 -230 82 57 -160 48 16 -230 82 57 115 32 16 +255 0 255 +255 0 255 +222 230 230 +181 189 205 +123 131 147 +65 74 90 +16 16 16 diff --git a/graphics/pokemon/rhydon/shiny.pal b/graphics/pokemon/rhydon/shiny.pal index 4f48df440c..6ff4a62c6b 100644 --- a/graphics/pokemon/rhydon/shiny.pal +++ b/graphics/pokemon/rhydon/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -152 144 112 -96 88 64 -216 200 168 +255 255 255 +255 238 197 +230 213 172 +180 164 115 +115 90 49 +230 82 57 +164 49 16 +115 32 16 +255 0 255 +255 0 255 +255 246 213 +222 213 180 +164 156 123 +115 106 74 16 16 16 -248 240 208 -248 248 248 -224 224 216 -112 88 48 -224 208 168 -176 160 112 -160 72 48 -224 120 96 -160 72 48 -224 120 96 -112 32 16 diff --git a/graphics/pokemon/rhyhorn/anim_front.png b/graphics/pokemon/rhyhorn/anim_front.png index 589b7c2f98..94bbb6e3e4 100644 Binary files a/graphics/pokemon/rhyhorn/anim_front.png and b/graphics/pokemon/rhyhorn/anim_front.png differ diff --git a/graphics/pokemon/rhyhorn/anim_frontf.png b/graphics/pokemon/rhyhorn/anim_frontf.png index c086ed4d96..a85f23ff9e 100644 Binary files a/graphics/pokemon/rhyhorn/anim_frontf.png and b/graphics/pokemon/rhyhorn/anim_frontf.png differ diff --git a/graphics/pokemon/rhyhorn/back.png b/graphics/pokemon/rhyhorn/back.png index dfa96100e0..d32c204aa6 100644 Binary files a/graphics/pokemon/rhyhorn/back.png and b/graphics/pokemon/rhyhorn/back.png differ diff --git a/graphics/pokemon/rhyhorn/backf.png b/graphics/pokemon/rhyhorn/backf.png index c5a253b3be..c58b014f86 100644 Binary files a/graphics/pokemon/rhyhorn/backf.png and b/graphics/pokemon/rhyhorn/backf.png differ diff --git a/graphics/pokemon/rhyhorn/normal.pal b/graphics/pokemon/rhyhorn/normal.pal index 19493646a0..01b9d75955 100644 --- a/graphics/pokemon/rhyhorn/normal.pal +++ b/graphics/pokemon/rhyhorn/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 +222 230 230 +164 189 197 139 148 156 98 98 131 -222 230 230 57 57 82 -248 248 248 -164 189 197 -16 16 16 172 57 41 -88 8 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +90 8 0 +112 112 144 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +16 16 16 +255 255 255 diff --git a/graphics/pokemon/rhyhorn/shiny.pal b/graphics/pokemon/rhyhorn/shiny.pal index e207060d75..8fb03a0257 100644 --- a/graphics/pokemon/rhyhorn/shiny.pal +++ b/graphics/pokemon/rhyhorn/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -160 96 72 -120 48 32 -240 192 160 -56 24 8 -248 248 248 -200 144 112 +246 197 164 +205 148 115 +164 98 74 +123 49 32 +74 24 0 +172 57 41 +90 8 0 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 16 16 16 -168 56 40 -88 8 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +255 255 255 diff --git a/graphics/pokemon/ribombee/anim_front.png b/graphics/pokemon/ribombee/anim_front.png new file mode 100644 index 0000000000..fb1c5ad41a Binary files /dev/null and b/graphics/pokemon/ribombee/anim_front.png differ diff --git a/graphics/pokemon/ribombee/front.png b/graphics/pokemon/ribombee/front.png deleted file mode 100644 index 77a4dd1497..0000000000 Binary files a/graphics/pokemon/ribombee/front.png and /dev/null differ diff --git a/graphics/pokemon/rillaboom/gigantamax/back.png b/graphics/pokemon/rillaboom/gigantamax/back.png new file mode 100644 index 0000000000..d15e4e4c3a Binary files /dev/null and b/graphics/pokemon/rillaboom/gigantamax/back.png differ diff --git a/graphics/pokemon/rillaboom/gigantamax/front.png b/graphics/pokemon/rillaboom/gigantamax/front.png new file mode 100644 index 0000000000..922860400d Binary files /dev/null and b/graphics/pokemon/rillaboom/gigantamax/front.png differ diff --git a/graphics/pokemon/rillaboom/gigantamax/icon.png b/graphics/pokemon/rillaboom/gigantamax/icon.png new file mode 100644 index 0000000000..d149814fff Binary files /dev/null and b/graphics/pokemon/rillaboom/gigantamax/icon.png differ diff --git a/graphics/pokemon/rillaboom/gigantamax/normal.pal b/graphics/pokemon/rillaboom/gigantamax/normal.pal new file mode 100644 index 0000000000..6f782183ae --- /dev/null +++ b/graphics/pokemon/rillaboom/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +104 68 64 +1 47 25 +16 16 16 +182 127 76 +0 132 69 +0 89 47 +147 108 66 +50 29 35 +246 226 161 +181 154 125 +66 43 47 +133 117 80 +252 252 252 +250 113 61 +180 66 56 diff --git a/graphics/pokemon/rillaboom/gigantamax/shiny.pal b/graphics/pokemon/rillaboom/gigantamax/shiny.pal new file mode 100644 index 0000000000..bec70743b2 --- /dev/null +++ b/graphics/pokemon/rillaboom/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +95 43 53 +54 68 6 +16 16 16 +182 127 76 +140 180 0 +89 117 4 +147 108 66 +46 19 34 +246 226 161 +158 144 129 +60 30 43 +101 94 77 +252 252 252 +250 113 61 +180 66 56 diff --git a/graphics/pokemon/roaring_moon/back.png b/graphics/pokemon/roaring_moon/back.png new file mode 100644 index 0000000000..01813ff4f9 Binary files /dev/null and b/graphics/pokemon/roaring_moon/back.png differ diff --git a/graphics/pokemon/roaring_moon/front.png b/graphics/pokemon/roaring_moon/front.png new file mode 100644 index 0000000000..c1a8a05f06 Binary files /dev/null and b/graphics/pokemon/roaring_moon/front.png differ diff --git a/graphics/pokemon/roaring_moon/icon.png b/graphics/pokemon/roaring_moon/icon.png new file mode 100755 index 0000000000..d8d82fb015 Binary files /dev/null and b/graphics/pokemon/roaring_moon/icon.png differ diff --git a/graphics/pokemon/roaring_moon/normal.pal b/graphics/pokemon/roaring_moon/normal.pal new file mode 100644 index 0000000000..2deb541050 --- /dev/null +++ b/graphics/pokemon/roaring_moon/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +39 88 94 +96 231 236 +60 137 171 +0 0 0 +185 107 230 +105 17 39 +214 38 82 +162 27 60 +129 100 179 +105 105 105 +171 171 171 +247 247 247 +247 165 42 +251 236 49 +52 49 49 diff --git a/graphics/pokemon/roaring_moon/shiny.pal b/graphics/pokemon/roaring_moon/shiny.pal new file mode 100644 index 0000000000..42fb2538d7 --- /dev/null +++ b/graphics/pokemon/roaring_moon/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +62 125 78 +151 235 188 +86 180 117 +0 0 0 +223 213 113 +105 17 39 +245 62 68 +181 36 39 +174 162 85 +105 105 105 +171 171 171 +247 247 247 +247 165 42 +251 236 49 +52 49 49 diff --git a/graphics/pokemon/rockruff/anim_front.png b/graphics/pokemon/rockruff/anim_front.png new file mode 100644 index 0000000000..d806387c61 Binary files /dev/null and b/graphics/pokemon/rockruff/anim_front.png differ diff --git a/graphics/pokemon/rockruff/front.png b/graphics/pokemon/rockruff/front.png deleted file mode 100644 index 1199fbb592..0000000000 Binary files a/graphics/pokemon/rockruff/front.png and /dev/null differ diff --git a/graphics/pokemon/rowlet/anim_front.png b/graphics/pokemon/rowlet/anim_front.png new file mode 100644 index 0000000000..eea15ffec1 Binary files /dev/null and b/graphics/pokemon/rowlet/anim_front.png differ diff --git a/graphics/pokemon/rowlet/front.png b/graphics/pokemon/rowlet/front.png deleted file mode 100644 index 55953244ec..0000000000 Binary files a/graphics/pokemon/rowlet/front.png and /dev/null differ diff --git a/graphics/pokemon/sandaconda/gigantamax/back.png b/graphics/pokemon/sandaconda/gigantamax/back.png new file mode 100644 index 0000000000..d1cf5184bc Binary files /dev/null and b/graphics/pokemon/sandaconda/gigantamax/back.png differ diff --git a/graphics/pokemon/sandaconda/gigantamax/front.png b/graphics/pokemon/sandaconda/gigantamax/front.png new file mode 100644 index 0000000000..33e3451fa5 Binary files /dev/null and b/graphics/pokemon/sandaconda/gigantamax/front.png differ diff --git a/graphics/pokemon/sandaconda/gigantamax/icon.png b/graphics/pokemon/sandaconda/gigantamax/icon.png new file mode 100644 index 0000000000..4b19d9570a Binary files /dev/null and b/graphics/pokemon/sandaconda/gigantamax/icon.png differ diff --git a/graphics/pokemon/sandaconda/gigantamax/normal.pal b/graphics/pokemon/sandaconda/gigantamax/normal.pal new file mode 100644 index 0000000000..f06c695866 --- /dev/null +++ b/graphics/pokemon/sandaconda/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +167 114 78 +105 97 69 +16 16 16 +245 243 211 +180 163 109 +189 154 106 +217 202 179 +79 59 35 +126 85 67 +175 120 86 +187 32 15 +233 63 109 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/sandaconda/gigantamax/shiny.pal b/graphics/pokemon/sandaconda/gigantamax/shiny.pal new file mode 100644 index 0000000000..3c847bf83e --- /dev/null +++ b/graphics/pokemon/sandaconda/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +167 114 78 +94 98 76 +16 16 16 +231 238 218 +159 165 124 +189 154 106 +217 202 179 +59 59 55 +110 87 83 +150 119 111 +187 32 15 +233 63 109 +13 13 13 +14 14 14 +15 15 15 diff --git a/graphics/pokemon/sandy_shocks/back.png b/graphics/pokemon/sandy_shocks/back.png new file mode 100644 index 0000000000..2ee0ab030c Binary files /dev/null and b/graphics/pokemon/sandy_shocks/back.png differ diff --git a/graphics/pokemon/sandy_shocks/front.png b/graphics/pokemon/sandy_shocks/front.png new file mode 100644 index 0000000000..95b0124a6c Binary files /dev/null and b/graphics/pokemon/sandy_shocks/front.png differ diff --git a/graphics/pokemon/sandy_shocks/icon.png b/graphics/pokemon/sandy_shocks/icon.png new file mode 100755 index 0000000000..99d693a1ac Binary files /dev/null and b/graphics/pokemon/sandy_shocks/icon.png differ diff --git a/graphics/pokemon/sandy_shocks/normal.pal b/graphics/pokemon/sandy_shocks/normal.pal new file mode 100644 index 0000000000..4b0c513bd9 --- /dev/null +++ b/graphics/pokemon/sandy_shocks/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +238 24 0 +213 170 57 +213 246 222 +180 214 189 +180 182 180 +115 101 131 +41 36 32 +139 182 164 +90 93 90 +139 137 139 +41 129 172 +57 48 49 +255 222 90 +0 0 0 +90 129 98 diff --git a/graphics/pokemon/sandy_shocks/shiny.pal b/graphics/pokemon/sandy_shocks/shiny.pal new file mode 100644 index 0000000000..6a89c90cc4 --- /dev/null +++ b/graphics/pokemon/sandy_shocks/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +238 24 0 +213 170 57 +255 248 179 +184 179 120 +180 182 180 +115 101 131 +41 36 32 +212 179 120 +90 93 90 +139 137 139 +41 129 172 +57 48 49 +255 222 90 +0 0 0 +153 137 87 diff --git a/graphics/pokemon/scovillain/back.png b/graphics/pokemon/scovillain/back.png new file mode 100644 index 0000000000..b61864b22e Binary files /dev/null and b/graphics/pokemon/scovillain/back.png differ diff --git a/graphics/pokemon/scovillain/front.png b/graphics/pokemon/scovillain/front.png new file mode 100644 index 0000000000..bed003463d Binary files /dev/null and b/graphics/pokemon/scovillain/front.png differ diff --git a/graphics/pokemon/scovillain/icon.png b/graphics/pokemon/scovillain/icon.png new file mode 100755 index 0000000000..f346a1cb48 Binary files /dev/null and b/graphics/pokemon/scovillain/icon.png differ diff --git a/graphics/pokemon/scovillain/normal.pal b/graphics/pokemon/scovillain/normal.pal new file mode 100644 index 0000000000..6d6808d9e4 --- /dev/null +++ b/graphics/pokemon/scovillain/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 104 40 +16 16 16 +80 192 72 +120 248 96 +136 32 24 +0 72 24 +240 72 40 +16 152 72 +248 136 80 +248 248 248 +248 152 40 +0 40 32 +0 72 48 +16 104 48 +0 64 40 diff --git a/graphics/pokemon/scovillain/shiny.pal b/graphics/pokemon/scovillain/shiny.pal new file mode 100644 index 0000000000..f43675df15 --- /dev/null +++ b/graphics/pokemon/scovillain/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +16 104 40 +16 16 16 +80 192 72 +120 248 96 +136 32 24 +120 96 40 +240 72 40 +248 232 152 +248 136 80 +248 248 248 +248 152 40 +16 40 96 +24 72 128 +40 112 152 +240 240 240 diff --git a/graphics/pokemon/scream_tail/back.png b/graphics/pokemon/scream_tail/back.png new file mode 100644 index 0000000000..a0607a0e15 Binary files /dev/null and b/graphics/pokemon/scream_tail/back.png differ diff --git a/graphics/pokemon/scream_tail/front.png b/graphics/pokemon/scream_tail/front.png new file mode 100644 index 0000000000..2d320fd0d4 Binary files /dev/null and b/graphics/pokemon/scream_tail/front.png differ diff --git a/graphics/pokemon/scream_tail/icon.png b/graphics/pokemon/scream_tail/icon.png new file mode 100755 index 0000000000..09ca4083ec Binary files /dev/null and b/graphics/pokemon/scream_tail/icon.png differ diff --git a/graphics/pokemon/scream_tail/normal.pal b/graphics/pokemon/scream_tail/normal.pal new file mode 100644 index 0000000000..bedc2d2abf --- /dev/null +++ b/graphics/pokemon/scream_tail/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +108 45 45 +0 0 0 +246 144 164 +251 188 201 +173 92 108 +136 64 64 +238 95 124 +186 81 102 +48 34 34 +255 121 163 +255 255 255 +200 184 248 +140 117 33 +203 174 40 +255 220 50 diff --git a/graphics/pokemon/scream_tail/shiny.pal b/graphics/pokemon/scream_tail/shiny.pal new file mode 100644 index 0000000000..21e95217d4 --- /dev/null +++ b/graphics/pokemon/scream_tail/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +105 45 108 +0 0 0 +229 148 224 +246 203 246 +176 83 153 +136 64 132 +211 74 189 +158 78 154 +48 34 34 +255 121 163 +255 255 255 +200 184 248 +149 52 52 +202 67 95 +237 94 83 diff --git a/graphics/pokemon/seel/anim_front.png b/graphics/pokemon/seel/anim_front.png index 9626b88941..5e1923a644 100644 Binary files a/graphics/pokemon/seel/anim_front.png and b/graphics/pokemon/seel/anim_front.png differ diff --git a/graphics/pokemon/seel/back.png b/graphics/pokemon/seel/back.png index 0521176e36..2c7f8706a3 100644 Binary files a/graphics/pokemon/seel/back.png and b/graphics/pokemon/seel/back.png differ diff --git a/graphics/pokemon/seel/normal.pal b/graphics/pokemon/seel/normal.pal index 2868415702..d4b4a1c4f0 100644 --- a/graphics/pokemon/seel/normal.pal +++ b/graphics/pokemon/seel/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -65 82 131 -148 156 180 230 230 246 213 205 238 -16 16 16 -248 248 248 -41 172 164 -106 90 16 -180 148 65 +148 156 180 +65 82 131 246 230 189 -136 48 32 -208 112 88 -248 168 168 -200 176 128 -0 0 0 +222 197 115 +180 148 65 +106 90 16 +255 172 172 +213 115 90 +139 49 32 +255 0 255 +41 172 164 +16 16 16 +255 255 255 diff --git a/graphics/pokemon/seel/shiny.pal b/graphics/pokemon/seel/shiny.pal index 43d60b7753..5b3f96c960 100644 --- a/graphics/pokemon/seel/shiny.pal +++ b/graphics/pokemon/seel/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -128 120 112 -176 168 160 -232 232 224 -208 208 200 +238 238 230 +213 213 205 +180 172 164 +131 123 115 +246 230 189 +213 189 106 +180 148 65 +106 90 16 +255 172 172 +213 115 90 +139 49 32 +255 0 255 +163 145 128 16 16 16 -248 248 248 -248 0 248 -104 88 16 -176 144 64 -240 224 184 -136 48 32 -208 112 88 -248 168 168 -216 192 112 -0 0 0 +255 255 255 diff --git a/graphics/pokemon/shellder/anim_front.png b/graphics/pokemon/shellder/anim_front.png index ec58b85d15..110cc99bb8 100644 Binary files a/graphics/pokemon/shellder/anim_front.png and b/graphics/pokemon/shellder/anim_front.png differ diff --git a/graphics/pokemon/shellder/back.png b/graphics/pokemon/shellder/back.png index 6a402e9ea1..072f553407 100644 Binary files a/graphics/pokemon/shellder/back.png and b/graphics/pokemon/shellder/back.png differ diff --git a/graphics/pokemon/shellder/normal.pal b/graphics/pokemon/shellder/normal.pal index 462bd5ee49..519374444d 100644 --- a/graphics/pokemon/shellder/normal.pal +++ b/graphics/pokemon/shellder/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -112 88 136 -216 216 240 -152 136 192 -192 184 232 +222 222 246 +197 189 238 +156 139 197 +115 90 139 +74 57 98 +238 172 180 +197 98 106 +123 16 49 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +131 131 148 16 16 16 -72 56 96 -128 128 144 -248 248 248 -120 16 48 -192 96 104 -232 168 176 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +255 255 255 diff --git a/graphics/pokemon/shellder/shiny.pal b/graphics/pokemon/shellder/shiny.pal index 4ec99543dd..a653db1e00 100644 --- a/graphics/pokemon/shellder/shiny.pal +++ b/graphics/pokemon/shellder/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -176 96 32 -248 216 112 -208 128 40 -248 176 48 +255 205 41 +255 164 0 +222 123 0 +197 90 0 +164 49 0 +255 123 65 +205 74 32 +123 32 16 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +106 106 106 16 16 16 -120 48 24 -128 128 144 -248 248 248 -120 32 16 -200 72 32 -248 120 64 -0 0 0 -0 0 0 -0 0 0 -0 0 0 +255 255 255 diff --git a/graphics/pokemon/shroodle/back.png b/graphics/pokemon/shroodle/back.png new file mode 100755 index 0000000000..ffecfe183c Binary files /dev/null and b/graphics/pokemon/shroodle/back.png differ diff --git a/graphics/pokemon/shroodle/front.png b/graphics/pokemon/shroodle/front.png new file mode 100755 index 0000000000..38dac9194a Binary files /dev/null and b/graphics/pokemon/shroodle/front.png differ diff --git a/graphics/pokemon/shroodle/icon.png b/graphics/pokemon/shroodle/icon.png new file mode 100755 index 0000000000..1e7a9430d8 Binary files /dev/null and b/graphics/pokemon/shroodle/icon.png differ diff --git a/graphics/pokemon/shroodle/normal.pal b/graphics/pokemon/shroodle/normal.pal new file mode 100755 index 0000000000..700c1f4c9f --- /dev/null +++ b/graphics/pokemon/shroodle/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 88 88 +232 236 200 +16 16 16 +176 168 136 +64 76 104 +72 60 56 +48 36 40 +128 156 168 +152 208 176 +96 108 136 +248 252 248 +216 236 192 +184 176 184 +160 112 224 +0 0 0 diff --git a/graphics/pokemon/shroodle/shiny.pal b/graphics/pokemon/shroodle/shiny.pal new file mode 100755 index 0000000000..bb3f9a6a7d --- /dev/null +++ b/graphics/pokemon/shroodle/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 88 88 +232 236 200 +16 16 16 +176 168 136 +64 76 104 +72 60 56 +48 36 40 +128 156 168 +168 168 224 +96 108 136 +248 252 248 +208 200 248 +184 176 184 +160 112 224 +0 0 0 diff --git a/graphics/pokemon/sinistcha/back.png b/graphics/pokemon/sinistcha/back.png new file mode 100644 index 0000000000..dbb51bbf33 Binary files /dev/null and b/graphics/pokemon/sinistcha/back.png differ diff --git a/graphics/pokemon/sinistcha/front.png b/graphics/pokemon/sinistcha/front.png new file mode 100644 index 0000000000..4131a22b9f Binary files /dev/null and b/graphics/pokemon/sinistcha/front.png differ diff --git a/graphics/pokemon/sinistcha/icon.png b/graphics/pokemon/sinistcha/icon.png new file mode 100644 index 0000000000..74fc0b2643 Binary files /dev/null and b/graphics/pokemon/sinistcha/icon.png differ diff --git a/graphics/pokemon/sinistcha/normal.pal b/graphics/pokemon/sinistcha/normal.pal new file mode 100644 index 0000000000..16008ccdf1 --- /dev/null +++ b/graphics/pokemon/sinistcha/normal.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +115 197 164 +76 58 58 +105 68 27 +147 138 68 +159 153 130 +219 210 145 +167 186 114 +45 33 33 +51 99 34 +93 158 74 +120 196 99 +247 215 98 +5 5 5 +208 210 193 +241 237 235 diff --git a/graphics/pokemon/sinistcha/shiny.pal b/graphics/pokemon/sinistcha/shiny.pal new file mode 100644 index 0000000000..c769e9d1a1 --- /dev/null +++ b/graphics/pokemon/sinistcha/shiny.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +115 197 164 +32 88 15 +105 68 27 +147 138 68 +159 153 130 +219 210 145 +167 186 114 +45 33 33 +51 99 34 +93 158 74 +120 196 99 +247 215 98 +5 5 5 +208 210 193 +241 237 235 diff --git a/graphics/pokemon/skeledirge/back.png b/graphics/pokemon/skeledirge/back.png new file mode 100644 index 0000000000..6471ffe6c2 Binary files /dev/null and b/graphics/pokemon/skeledirge/back.png differ diff --git a/graphics/pokemon/skeledirge/front.png b/graphics/pokemon/skeledirge/front.png new file mode 100644 index 0000000000..cf238da178 Binary files /dev/null and b/graphics/pokemon/skeledirge/front.png differ diff --git a/graphics/pokemon/skeledirge/icon.png b/graphics/pokemon/skeledirge/icon.png new file mode 100755 index 0000000000..901aab95d9 Binary files /dev/null and b/graphics/pokemon/skeledirge/icon.png differ diff --git a/graphics/pokemon/skeledirge/normal.pal b/graphics/pokemon/skeledirge/normal.pal new file mode 100644 index 0000000000..fbb60828f9 --- /dev/null +++ b/graphics/pokemon/skeledirge/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +132 121 129 +255 70 0 +248 248 240 +255 177 0 +215 193 202 +254 233 0 +255 129 0 +53 53 53 +122 7 63 +214 35 26 +255 44 35 +0 0 0 +187 26 205 +26 26 26 +79 79 79 diff --git a/graphics/pokemon/skeledirge/shiny.pal b/graphics/pokemon/skeledirge/shiny.pal new file mode 100644 index 0000000000..4354f676d3 --- /dev/null +++ b/graphics/pokemon/skeledirge/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 210 164 +132 121 129 +255 70 0 +248 248 240 +255 177 0 +215 193 202 +254 233 0 +255 129 0 +53 53 53 +122 7 63 +186 44 106 +247 87 139 +0 0 0 +187 26 205 +26 26 26 +79 79 79 diff --git a/graphics/pokemon/slither_wing/back.png b/graphics/pokemon/slither_wing/back.png new file mode 100644 index 0000000000..cfa4c99d75 Binary files /dev/null and b/graphics/pokemon/slither_wing/back.png differ diff --git a/graphics/pokemon/slither_wing/front.png b/graphics/pokemon/slither_wing/front.png new file mode 100644 index 0000000000..d3c1e65969 Binary files /dev/null and b/graphics/pokemon/slither_wing/front.png differ diff --git a/graphics/pokemon/slither_wing/icon.png b/graphics/pokemon/slither_wing/icon.png new file mode 100755 index 0000000000..e969280a5d Binary files /dev/null and b/graphics/pokemon/slither_wing/icon.png differ diff --git a/graphics/pokemon/slither_wing/normal.pal b/graphics/pokemon/slither_wing/normal.pal new file mode 100644 index 0000000000..a083030d3f --- /dev/null +++ b/graphics/pokemon/slither_wing/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +156 222 24 +172 170 172 +172 52 49 +49 157 139 +49 56 74 +246 246 246 +238 210 98 +213 255 115 +123 32 0 +222 161 57 +24 24 32 +246 64 49 +65 80 115 +230 52 41 +255 48 32 diff --git a/graphics/pokemon/slither_wing/shiny.pal b/graphics/pokemon/slither_wing/shiny.pal new file mode 100644 index 0000000000..2cf5898f95 --- /dev/null +++ b/graphics/pokemon/slither_wing/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +255 49 33 +172 170 172 +191 148 19 +49 157 139 +49 56 74 +246 246 246 +255 229 113 +255 96 84 +153 119 15 +236 200 73 +24 24 32 +217 171 33 +65 80 115 +230 52 41 +255 48 32 diff --git a/graphics/pokemon/smoliv/back.png b/graphics/pokemon/smoliv/back.png new file mode 100755 index 0000000000..1b1ac3e681 Binary files /dev/null and b/graphics/pokemon/smoliv/back.png differ diff --git a/graphics/pokemon/smoliv/front.png b/graphics/pokemon/smoliv/front.png new file mode 100755 index 0000000000..42457fdf5b Binary files /dev/null and b/graphics/pokemon/smoliv/front.png differ diff --git a/graphics/pokemon/smoliv/icon.png b/graphics/pokemon/smoliv/icon.png new file mode 100755 index 0000000000..53b8ffc945 Binary files /dev/null and b/graphics/pokemon/smoliv/icon.png differ diff --git a/graphics/pokemon/smoliv/normal.pal b/graphics/pokemon/smoliv/normal.pal new file mode 100755 index 0000000000..4a748c1b5c --- /dev/null +++ b/graphics/pokemon/smoliv/normal.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +154 212 167 +119 94 27 +183 167 80 +223 215 109 +246 240 148 +8 8 8 +43 108 42 +120 181 63 +96 146 64 +114 132 41 +142 171 58 +201 221 91 +238 234 136 +242 242 242 diff --git a/graphics/pokemon/smoliv/shiny.pal b/graphics/pokemon/smoliv/shiny.pal new file mode 100755 index 0000000000..7b86219a39 --- /dev/null +++ b/graphics/pokemon/smoliv/shiny.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +154 212 167 +35 18 51 +54 41 63 +89 76 95 +128 115 134 +8 8 8 +43 108 42 +120 181 63 +96 146 64 +114 132 41 +172 174 55 +224 213 87 +240 211 134 +242 242 242 diff --git a/graphics/pokemon/snorlax/gigantamax/back.png b/graphics/pokemon/snorlax/gigantamax/back.png new file mode 100644 index 0000000000..c90fff95cc Binary files /dev/null and b/graphics/pokemon/snorlax/gigantamax/back.png differ diff --git a/graphics/pokemon/snorlax/gigantamax/front.png b/graphics/pokemon/snorlax/gigantamax/front.png new file mode 100644 index 0000000000..ef39f86990 Binary files /dev/null and b/graphics/pokemon/snorlax/gigantamax/front.png differ diff --git a/graphics/pokemon/snorlax/gigantamax/icon.png b/graphics/pokemon/snorlax/gigantamax/icon.png new file mode 100644 index 0000000000..e804e91963 Binary files /dev/null and b/graphics/pokemon/snorlax/gigantamax/icon.png differ diff --git a/graphics/pokemon/snorlax/gigantamax/normal.pal b/graphics/pokemon/snorlax/gigantamax/normal.pal new file mode 100644 index 0000000000..4441577deb --- /dev/null +++ b/graphics/pokemon/snorlax/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +246 230 189 +160 160 160 +230 197 172 +16 57 65 +84 121 43 +98 65 32 +164 115 82 +222 86 86 +252 139 159 +187 227 91 +137 180 50 +49 87 63 +49 90 123 +6 159 95 diff --git a/graphics/pokemon/snorlax/gigantamax/shiny.pal b/graphics/pokemon/snorlax/gigantamax/shiny.pal new file mode 100644 index 0000000000..d29a9cda8b --- /dev/null +++ b/graphics/pokemon/snorlax/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +16 16 16 +247 230 173 +160 160 160 +230 206 156 +8 49 123 +51 92 40 +99 74 25 +165 123 74 +215 69 47 +251 82 90 +187 227 91 +81 136 50 +141 93 10 +33 74 165 +221 146 16 diff --git a/graphics/pokemon/spidops/back.png b/graphics/pokemon/spidops/back.png new file mode 100644 index 0000000000..6a2a3077e9 Binary files /dev/null and b/graphics/pokemon/spidops/back.png differ diff --git a/graphics/pokemon/spidops/front.png b/graphics/pokemon/spidops/front.png new file mode 100644 index 0000000000..944a911070 Binary files /dev/null and b/graphics/pokemon/spidops/front.png differ diff --git a/graphics/pokemon/spidops/icon.png b/graphics/pokemon/spidops/icon.png new file mode 100755 index 0000000000..c35aa36c61 Binary files /dev/null and b/graphics/pokemon/spidops/icon.png differ diff --git a/graphics/pokemon/spidops/normal.pal b/graphics/pokemon/spidops/normal.pal new file mode 100644 index 0000000000..4076c82e1a --- /dev/null +++ b/graphics/pokemon/spidops/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 64 8 +152 200 40 +248 248 248 +72 120 16 +16 16 16 +224 240 112 +80 40 16 +184 136 56 +56 48 80 +144 136 152 +120 80 32 +224 192 112 +80 80 104 +152 160 184 +248 248 248 diff --git a/graphics/pokemon/spidops/shiny.pal b/graphics/pokemon/spidops/shiny.pal new file mode 100644 index 0000000000..5c6fa758df --- /dev/null +++ b/graphics/pokemon/spidops/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 32 96 +248 120 192 +240 40 48 +176 72 152 +16 16 16 +248 176 208 +32 24 64 +72 80 144 +56 48 80 +144 136 152 +48 48 96 +136 152 192 +96 8 40 +152 24 40 +248 248 248 diff --git a/graphics/spinda_spots/spot_0.png b/graphics/pokemon/spinda/spots/spot_0.png similarity index 100% rename from graphics/spinda_spots/spot_0.png rename to graphics/pokemon/spinda/spots/spot_0.png diff --git a/graphics/spinda_spots/spot_1.png b/graphics/pokemon/spinda/spots/spot_1.png similarity index 100% rename from graphics/spinda_spots/spot_1.png rename to graphics/pokemon/spinda/spots/spot_1.png diff --git a/graphics/spinda_spots/spot_2.png b/graphics/pokemon/spinda/spots/spot_2.png similarity index 100% rename from graphics/spinda_spots/spot_2.png rename to graphics/pokemon/spinda/spots/spot_2.png diff --git a/graphics/spinda_spots/spot_3.png b/graphics/pokemon/spinda/spots/spot_3.png similarity index 100% rename from graphics/spinda_spots/spot_3.png rename to graphics/pokemon/spinda/spots/spot_3.png diff --git a/graphics/pokemon/sprigatito/back.png b/graphics/pokemon/sprigatito/back.png new file mode 100644 index 0000000000..3d5d5ba63c Binary files /dev/null and b/graphics/pokemon/sprigatito/back.png differ diff --git a/graphics/pokemon/sprigatito/front.png b/graphics/pokemon/sprigatito/front.png new file mode 100644 index 0000000000..d700956190 Binary files /dev/null and b/graphics/pokemon/sprigatito/front.png differ diff --git a/graphics/pokemon/sprigatito/icon.png b/graphics/pokemon/sprigatito/icon.png new file mode 100755 index 0000000000..114fcff288 Binary files /dev/null and b/graphics/pokemon/sprigatito/icon.png differ diff --git a/graphics/pokemon/sprigatito/normal.pal b/graphics/pokemon/sprigatito/normal.pal new file mode 100644 index 0000000000..c2abcc6f64 --- /dev/null +++ b/graphics/pokemon/sprigatito/normal.pal @@ -0,0 +1,16 @@ +JASC-PAL +0100 +13 +0 183 239 +30 68 17 +85 197 37 +56 124 33 +16 16 16 +130 191 131 +199 243 197 +73 106 72 +248 248 248 +192 96 120 +232 128 168 +96 64 88 +160 56 64 diff --git a/graphics/pokemon/sprigatito/shiny.pal b/graphics/pokemon/sprigatito/shiny.pal new file mode 100644 index 0000000000..9273340784 --- /dev/null +++ b/graphics/pokemon/sprigatito/shiny.pal @@ -0,0 +1,16 @@ +JASC-PAL +0100 +13 +0 183 239 +30 68 17 +49 174 112 +56 124 33 +16 16 16 +151 202 169 +223 249 232 +87 125 98 +248 248 248 +130 89 179 +185 121 213 +63 41 88 +106 62 117 diff --git a/graphics/pokemon/squawkabilly/back.png b/graphics/pokemon/squawkabilly/back.png new file mode 100644 index 0000000000..73c3df2d9a Binary files /dev/null and b/graphics/pokemon/squawkabilly/back.png differ diff --git a/graphics/pokemon/squawkabilly/blue_plumage/icon.png b/graphics/pokemon/squawkabilly/blue_plumage/icon.png new file mode 100755 index 0000000000..4ad732211c Binary files /dev/null and b/graphics/pokemon/squawkabilly/blue_plumage/icon.png differ diff --git a/graphics/pokemon/squawkabilly/blue_plumage/normal.pal b/graphics/pokemon/squawkabilly/blue_plumage/normal.pal new file mode 100644 index 0000000000..3e2cbb1bed --- /dev/null +++ b/graphics/pokemon/squawkabilly/blue_plumage/normal.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +153 211 165 +63 62 69 +82 88 90 +16 16 16 +49 162 228 +30 79 113 +212 204 208 +42 126 176 +197 142 49 +255 231 166 +255 193 69 +253 253 253 +244 244 244 +148 95 31 +196 163 114 diff --git a/graphics/pokemon/squawkabilly/blue_plumage/shiny.pal b/graphics/pokemon/squawkabilly/blue_plumage/shiny.pal new file mode 100644 index 0000000000..2a2e3e6b18 --- /dev/null +++ b/graphics/pokemon/squawkabilly/blue_plumage/shiny.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +153 211 165 +154 107 113 +203 154 162 +16 16 16 +49 162 228 +30 79 113 +212 204 208 +42 126 176 +201 145 129 +255 231 225 +246 196 181 +253 253 253 +244 244 244 +148 95 31 +196 163 114 diff --git a/graphics/pokemon/squawkabilly/front.png b/graphics/pokemon/squawkabilly/front.png new file mode 100644 index 0000000000..734cc54ef4 Binary files /dev/null and b/graphics/pokemon/squawkabilly/front.png differ diff --git a/graphics/pokemon/squawkabilly/green_plumage/icon.png b/graphics/pokemon/squawkabilly/green_plumage/icon.png new file mode 100755 index 0000000000..540b7521a8 Binary files /dev/null and b/graphics/pokemon/squawkabilly/green_plumage/icon.png differ diff --git a/graphics/pokemon/squawkabilly/green_plumage/normal.pal b/graphics/pokemon/squawkabilly/green_plumage/normal.pal new file mode 100644 index 0000000000..191b1c0526 --- /dev/null +++ b/graphics/pokemon/squawkabilly/green_plumage/normal.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +153 211 165 +63 62 69 +82 88 90 +16 16 16 +112 213 77 +46 114 37 +212 204 208 +92 168 65 +197 142 49 +255 231 166 +255 193 69 +253 253 253 +244 244 244 +148 95 31 +196 163 114 diff --git a/graphics/pokemon/squawkabilly/green_plumage/shiny.pal b/graphics/pokemon/squawkabilly/green_plumage/shiny.pal new file mode 100644 index 0000000000..6d574415a4 --- /dev/null +++ b/graphics/pokemon/squawkabilly/green_plumage/shiny.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +153 211 165 +154 107 113 +203 154 162 +16 16 16 +112 213 77 +46 114 37 +212 204 208 +92 168 65 +201 145 129 +255 231 225 +246 196 181 +253 253 253 +244 244 244 +148 95 31 +196 163 114 diff --git a/graphics/pokemon/squawkabilly/white_plumage/icon.png b/graphics/pokemon/squawkabilly/white_plumage/icon.png new file mode 100755 index 0000000000..a784c6cdda Binary files /dev/null and b/graphics/pokemon/squawkabilly/white_plumage/icon.png differ diff --git a/graphics/pokemon/squawkabilly/white_plumage/normal.pal b/graphics/pokemon/squawkabilly/white_plumage/normal.pal new file mode 100644 index 0000000000..b23d3404a0 --- /dev/null +++ b/graphics/pokemon/squawkabilly/white_plumage/normal.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +153 211 165 +63 62 69 +82 88 90 +16 16 16 +217 217 217 +121 112 115 +212 204 208 +184 173 175 +197 142 49 +255 231 166 +255 193 69 +253 253 253 +244 244 244 +148 95 31 +196 163 114 diff --git a/graphics/pokemon/squawkabilly/white_plumage/shiny.pal b/graphics/pokemon/squawkabilly/white_plumage/shiny.pal new file mode 100644 index 0000000000..c747e272fc --- /dev/null +++ b/graphics/pokemon/squawkabilly/white_plumage/shiny.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +153 211 165 +154 107 113 +203 154 162 +16 16 16 +217 217 217 +121 112 115 +212 204 208 +184 173 175 +201 145 129 +255 231 225 +246 196 181 +253 253 253 +244 244 244 +148 95 31 +196 163 114 diff --git a/graphics/pokemon/squawkabilly/yellow_plumage/icon.png b/graphics/pokemon/squawkabilly/yellow_plumage/icon.png new file mode 100755 index 0000000000..a042d981d0 Binary files /dev/null and b/graphics/pokemon/squawkabilly/yellow_plumage/icon.png differ diff --git a/graphics/pokemon/squawkabilly/yellow_plumage/normal.pal b/graphics/pokemon/squawkabilly/yellow_plumage/normal.pal new file mode 100644 index 0000000000..f6b949ee7c --- /dev/null +++ b/graphics/pokemon/squawkabilly/yellow_plumage/normal.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +153 211 165 +63 62 69 +82 88 90 +16 16 16 +255 221 60 +140 109 41 +212 204 208 +200 167 49 +197 142 49 +255 231 166 +255 193 69 +253 253 253 +244 244 244 +148 95 31 +196 163 114 diff --git a/graphics/pokemon/squawkabilly/yellow_plumage/shiny.pal b/graphics/pokemon/squawkabilly/yellow_plumage/shiny.pal new file mode 100644 index 0000000000..2340522b94 --- /dev/null +++ b/graphics/pokemon/squawkabilly/yellow_plumage/shiny.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +153 211 165 +154 107 113 +203 154 162 +16 16 16 +255 221 60 +140 109 41 +212 204 208 +200 167 49 +201 145 129 +255 231 225 +246 196 181 +253 253 253 +244 244 244 +148 95 31 +196 163 114 diff --git a/graphics/pokemon/tadbulb/back.png b/graphics/pokemon/tadbulb/back.png new file mode 100644 index 0000000000..371fd9e035 Binary files /dev/null and b/graphics/pokemon/tadbulb/back.png differ diff --git a/graphics/pokemon/tadbulb/front.png b/graphics/pokemon/tadbulb/front.png new file mode 100644 index 0000000000..4d58083584 Binary files /dev/null and b/graphics/pokemon/tadbulb/front.png differ diff --git a/graphics/pokemon/tadbulb/icon.png b/graphics/pokemon/tadbulb/icon.png new file mode 100755 index 0000000000..0341a387fb Binary files /dev/null and b/graphics/pokemon/tadbulb/icon.png differ diff --git a/graphics/pokemon/tadbulb/normal.pal b/graphics/pokemon/tadbulb/normal.pal new file mode 100644 index 0000000000..be44b326bb --- /dev/null +++ b/graphics/pokemon/tadbulb/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +154 212 167 +126 66 18 +210 144 42 +250 233 41 +255 252 139 +252 252 252 +229 185 42 +8 8 8 +195 179 71 +136 120 103 +56 42 36 +194 139 76 +247 156 50 +92 78 68 +113 53 28 +160 91 41 diff --git a/graphics/pokemon/tadbulb/shiny.pal b/graphics/pokemon/tadbulb/shiny.pal new file mode 100644 index 0000000000..e26b8aaaf0 --- /dev/null +++ b/graphics/pokemon/tadbulb/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +154 212 167 +126 66 18 +210 144 42 +250 233 41 +255 252 139 +252 252 252 +229 185 42 +8 8 8 +195 179 71 +136 120 103 +56 42 36 +196 108 89 +255 97 75 +92 78 68 +113 53 28 +190 54 51 diff --git a/graphics/pokemon/talonflame/anim_front.png b/graphics/pokemon/talonflame/anim_front.png index db505ac63a..c8257da9e2 100644 Binary files a/graphics/pokemon/talonflame/anim_front.png and b/graphics/pokemon/talonflame/anim_front.png differ diff --git a/graphics/pokemon/tandemaus/back.png b/graphics/pokemon/tandemaus/back.png new file mode 100644 index 0000000000..f794a4706f Binary files /dev/null and b/graphics/pokemon/tandemaus/back.png differ diff --git a/graphics/pokemon/tandemaus/front.png b/graphics/pokemon/tandemaus/front.png new file mode 100644 index 0000000000..2ebeacec94 Binary files /dev/null and b/graphics/pokemon/tandemaus/front.png differ diff --git a/graphics/pokemon/tandemaus/icon.png b/graphics/pokemon/tandemaus/icon.png new file mode 100755 index 0000000000..8effa87c57 Binary files /dev/null and b/graphics/pokemon/tandemaus/icon.png differ diff --git a/graphics/pokemon/tandemaus/normal.pal b/graphics/pokemon/tandemaus/normal.pal new file mode 100644 index 0000000000..ae74aa96e5 --- /dev/null +++ b/graphics/pokemon/tandemaus/normal.pal @@ -0,0 +1,14 @@ +JASC-PAL +0100 +11 +154 212 167 +123 120 113 +248 248 243 +86 82 78 +8 8 8 +190 189 182 +219 219 213 +255 255 255 +75 85 113 +157 181 204 +203 222 231 diff --git a/graphics/pokemon/tandemaus/shiny.pal b/graphics/pokemon/tandemaus/shiny.pal new file mode 100644 index 0000000000..c1b5d3193a --- /dev/null +++ b/graphics/pokemon/tandemaus/shiny.pal @@ -0,0 +1,14 @@ +JASC-PAL +0100 +11 +154 212 167 +123 120 113 +248 248 243 +86 82 78 +8 8 8 +190 189 182 +219 219 213 +255 255 255 +110 92 71 +185 170 137 +223 212 165 diff --git a/graphics/pokemon/tangela/anim_front.png b/graphics/pokemon/tangela/anim_front.png index a42e81c244..b9b542e28f 100644 Binary files a/graphics/pokemon/tangela/anim_front.png and b/graphics/pokemon/tangela/anim_front.png differ diff --git a/graphics/pokemon/tangela/back.png b/graphics/pokemon/tangela/back.png index 0cec14c7da..7a491bd9fd 100644 Binary files a/graphics/pokemon/tangela/back.png and b/graphics/pokemon/tangela/back.png differ diff --git a/graphics/pokemon/tangela/normal.pal b/graphics/pokemon/tangela/normal.pal index 03893711c1..fff4b5b407 100644 --- a/graphics/pokemon/tangela/normal.pal +++ b/graphics/pokemon/tangela/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -65 123 148 148 213 246 90 164 205 +65 123 148 32 65 82 -16 16 16 -82 82 82 -180 180 180 -248 248 248 -115 41 41 -172 41 65 255 131 131 222 74 106 -0 0 0 -0 0 0 -0 0 0 +172 41 65 +115 41 41 +255 0 255 +255 0 255 +255 0 255 +180 180 180 +82 82 82 +16 16 16 +255 255 255 diff --git a/graphics/pokemon/tangela/shiny.pal b/graphics/pokemon/tangela/shiny.pal index 66c10f1fc9..fa3d79d32a 100644 --- a/graphics/pokemon/tangela/shiny.pal +++ b/graphics/pokemon/tangela/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -72 144 72 -136 240 88 -104 192 40 -40 80 40 +152 160 208 +136 255 88 +88 200 8 +32 164 32 +16 88 16 +255 148 131 +222 90 106 +172 40 65 +115 41 41 +255 0 255 +255 0 255 +255 0 255 +180 180 180 +82 82 82 16 16 16 -80 80 80 -176 176 176 -248 248 248 -112 40 40 -168 64 80 -248 144 144 -216 80 112 -0 0 0 -0 0 0 -0 0 0 +255 255 255 diff --git a/graphics/pokemon/tarountula/back.png b/graphics/pokemon/tarountula/back.png new file mode 100755 index 0000000000..0b9eaa9de7 Binary files /dev/null and b/graphics/pokemon/tarountula/back.png differ diff --git a/graphics/pokemon/tarountula/front.png b/graphics/pokemon/tarountula/front.png new file mode 100755 index 0000000000..8bf672067e Binary files /dev/null and b/graphics/pokemon/tarountula/front.png differ diff --git a/graphics/pokemon/tarountula/icon.png b/graphics/pokemon/tarountula/icon.png new file mode 100755 index 0000000000..d4802eb0ea Binary files /dev/null and b/graphics/pokemon/tarountula/icon.png differ diff --git a/graphics/pokemon/tarountula/normal.pal b/graphics/pokemon/tarountula/normal.pal new file mode 100755 index 0000000000..db11bb172b --- /dev/null +++ b/graphics/pokemon/tarountula/normal.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +154 212 167 +116 112 122 +175 168 175 +229 230 229 +8 8 8 +107 99 32 +240 228 55 +182 164 36 +253 253 253 +179 179 179 +36 71 99 +6 82 4 +55 109 7 +81 163 7 diff --git a/graphics/pokemon/tarountula/shiny.pal b/graphics/pokemon/tarountula/shiny.pal new file mode 100755 index 0000000000..74a71a8592 --- /dev/null +++ b/graphics/pokemon/tarountula/shiny.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +154 212 167 +105 30 23 +153 43 34 +206 62 53 +8 8 8 +34 55 69 +92 124 150 +57 93 113 +253 253 253 +179 179 179 +36 71 99 +66 34 44 +96 57 69 +128 76 99 diff --git a/graphics/pokemon/tatsugiri/curly/back.png b/graphics/pokemon/tatsugiri/curly/back.png new file mode 100644 index 0000000000..9db928473e Binary files /dev/null and b/graphics/pokemon/tatsugiri/curly/back.png differ diff --git a/graphics/pokemon/tatsugiri/curly/front.png b/graphics/pokemon/tatsugiri/curly/front.png new file mode 100644 index 0000000000..a32ade902e Binary files /dev/null and b/graphics/pokemon/tatsugiri/curly/front.png differ diff --git a/graphics/pokemon/tatsugiri/curly/icon.png b/graphics/pokemon/tatsugiri/curly/icon.png new file mode 100755 index 0000000000..98fe8aa569 Binary files /dev/null and b/graphics/pokemon/tatsugiri/curly/icon.png differ diff --git a/graphics/pokemon/tatsugiri/curly/normal.pal b/graphics/pokemon/tatsugiri/curly/normal.pal new file mode 100644 index 0000000000..ce25aa7da0 --- /dev/null +++ b/graphics/pokemon/tatsugiri/curly/normal.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +153 211 165 +147 51 34 +255 105 47 +252 158 121 +206 77 41 +16 16 16 +255 184 152 +117 73 61 +201 134 116 +255 255 255 +128 128 128 +253 253 253 +194 171 151 +113 98 84 +240 235 223 diff --git a/graphics/pokemon/tatsugiri/curly/shiny.pal b/graphics/pokemon/tatsugiri/curly/shiny.pal new file mode 100644 index 0000000000..faa40dca56 --- /dev/null +++ b/graphics/pokemon/tatsugiri/curly/shiny.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +153 211 165 +147 51 34 +174 100 72 +204 104 67 +139 71 46 +16 16 16 +248 112 59 +117 73 61 +201 134 116 +255 255 255 +128 128 128 +253 253 253 +194 171 151 +113 98 84 +240 235 223 diff --git a/graphics/pokemon/tatsugiri/droopy/back.png b/graphics/pokemon/tatsugiri/droopy/back.png new file mode 100644 index 0000000000..6d998537f2 Binary files /dev/null and b/graphics/pokemon/tatsugiri/droopy/back.png differ diff --git a/graphics/pokemon/tatsugiri/droopy/front.png b/graphics/pokemon/tatsugiri/droopy/front.png new file mode 100644 index 0000000000..d4c4512541 Binary files /dev/null and b/graphics/pokemon/tatsugiri/droopy/front.png differ diff --git a/graphics/pokemon/tatsugiri/droopy/icon.png b/graphics/pokemon/tatsugiri/droopy/icon.png new file mode 100755 index 0000000000..48e8c01fd0 Binary files /dev/null and b/graphics/pokemon/tatsugiri/droopy/icon.png differ diff --git a/graphics/pokemon/tatsugiri/droopy/normal.pal b/graphics/pokemon/tatsugiri/droopy/normal.pal new file mode 100644 index 0000000000..09f36e1ae8 --- /dev/null +++ b/graphics/pokemon/tatsugiri/droopy/normal.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +153 211 165 +136 36 52 +255 74 121 +247 140 161 +195 53 93 +16 16 16 +113 98 84 +240 235 223 +194 171 151 +255 255 255 +128 128 128 +253 253 253 diff --git a/graphics/pokemon/tatsugiri/droopy/shiny.pal b/graphics/pokemon/tatsugiri/droopy/shiny.pal new file mode 100644 index 0000000000..ffa14a905a --- /dev/null +++ b/graphics/pokemon/tatsugiri/droopy/shiny.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +153 211 165 +143 142 145 +229 229 229 +251 251 251 +172 172 172 +16 16 16 +113 98 84 +240 235 223 +194 171 151 +255 255 255 +128 128 128 +253 253 253 diff --git a/graphics/pokemon/tatsugiri/stretchy/back.png b/graphics/pokemon/tatsugiri/stretchy/back.png new file mode 100644 index 0000000000..849782c3b2 Binary files /dev/null and b/graphics/pokemon/tatsugiri/stretchy/back.png differ diff --git a/graphics/pokemon/tatsugiri/stretchy/front.png b/graphics/pokemon/tatsugiri/stretchy/front.png new file mode 100644 index 0000000000..2905c16d9d Binary files /dev/null and b/graphics/pokemon/tatsugiri/stretchy/front.png differ diff --git a/graphics/pokemon/tatsugiri/stretchy/icon.png b/graphics/pokemon/tatsugiri/stretchy/icon.png new file mode 100755 index 0000000000..1634ec3178 Binary files /dev/null and b/graphics/pokemon/tatsugiri/stretchy/icon.png differ diff --git a/graphics/pokemon/tatsugiri/stretchy/normal.pal b/graphics/pokemon/tatsugiri/stretchy/normal.pal new file mode 100644 index 0000000000..9421d8a1fa --- /dev/null +++ b/graphics/pokemon/tatsugiri/stretchy/normal.pal @@ -0,0 +1,16 @@ +JASC-PAL +0100 +13 +153 211 165 +130 84 17 +241 205 3 +255 235 121 +189 152 14 +16 16 16 +239 196 26 +255 255 255 +128 128 128 +253 253 253 +194 171 151 +113 98 84 +240 235 223 diff --git a/graphics/pokemon/tatsugiri/stretchy/shiny.pal b/graphics/pokemon/tatsugiri/stretchy/shiny.pal new file mode 100644 index 0000000000..efffbf5f15 --- /dev/null +++ b/graphics/pokemon/tatsugiri/stretchy/shiny.pal @@ -0,0 +1,16 @@ +JASC-PAL +0100 +13 +153 211 165 +151 49 13 +248 112 59 +240 159 94 +196 76 29 +16 16 16 +237 184 60 +255 255 255 +128 128 128 +253 253 253 +194 171 151 +113 98 84 +240 235 223 diff --git a/graphics/pokemon/tauros/paldean_aqua_breed/back.png b/graphics/pokemon/tauros/paldean_aqua_breed/back.png new file mode 100644 index 0000000000..4c0fbe3414 Binary files /dev/null and b/graphics/pokemon/tauros/paldean_aqua_breed/back.png differ diff --git a/graphics/pokemon/tauros/paldean_aqua_breed/front.png b/graphics/pokemon/tauros/paldean_aqua_breed/front.png new file mode 100644 index 0000000000..7cb62beeb3 Binary files /dev/null and b/graphics/pokemon/tauros/paldean_aqua_breed/front.png differ diff --git a/graphics/pokemon/tauros/paldean_aqua_breed/icon.png b/graphics/pokemon/tauros/paldean_aqua_breed/icon.png new file mode 100644 index 0000000000..a0421d7dd0 Binary files /dev/null and b/graphics/pokemon/tauros/paldean_aqua_breed/icon.png differ diff --git a/graphics/pokemon/tauros/paldean_aqua_breed/normal.pal b/graphics/pokemon/tauros/paldean_aqua_breed/normal.pal new file mode 100644 index 0000000000..fa707bea04 --- /dev/null +++ b/graphics/pokemon/tauros/paldean_aqua_breed/normal.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +153 210 164 +79 79 79 +7 7 7 +53 53 53 +12 26 16 +53 53 53 +104 104 104 +96 96 96 +248 248 248 +185 185 185 +17 17 17 +137 137 137 +67 79 70 +0 104 155 +0 170 227 diff --git a/graphics/pokemon/tauros/paldean_aqua_breed/shiny.pal b/graphics/pokemon/tauros/paldean_aqua_breed/shiny.pal new file mode 100644 index 0000000000..8ff98dcdac --- /dev/null +++ b/graphics/pokemon/tauros/paldean_aqua_breed/shiny.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +153 210 164 +53 53 53 +7 7 7 +79 79 79 +12 26 16 +35 35 35 +104 104 104 +96 96 96 +248 248 248 +185 185 185 +17 17 17 +137 137 137 +67 79 70 +0 104 155 +0 170 227 diff --git a/graphics/pokemon/tauros/paldean_blaze_breed/back.png b/graphics/pokemon/tauros/paldean_blaze_breed/back.png new file mode 100644 index 0000000000..1f56c227c0 Binary files /dev/null and b/graphics/pokemon/tauros/paldean_blaze_breed/back.png differ diff --git a/graphics/pokemon/tauros/paldean_blaze_breed/front.ase b/graphics/pokemon/tauros/paldean_blaze_breed/front.ase new file mode 100644 index 0000000000..f0e5550051 Binary files /dev/null and b/graphics/pokemon/tauros/paldean_blaze_breed/front.ase differ diff --git a/graphics/pokemon/tauros/paldean_blaze_breed/front.png b/graphics/pokemon/tauros/paldean_blaze_breed/front.png new file mode 100644 index 0000000000..a01c02df30 Binary files /dev/null and b/graphics/pokemon/tauros/paldean_blaze_breed/front.png differ diff --git a/graphics/pokemon/tauros/paldean_blaze_breed/icon.png b/graphics/pokemon/tauros/paldean_blaze_breed/icon.png new file mode 100644 index 0000000000..25ec7e0463 Binary files /dev/null and b/graphics/pokemon/tauros/paldean_blaze_breed/icon.png differ diff --git a/graphics/pokemon/tauros/paldean_blaze_breed/normal.pal b/graphics/pokemon/tauros/paldean_blaze_breed/normal.pal new file mode 100644 index 0000000000..f7ad909452 --- /dev/null +++ b/graphics/pokemon/tauros/paldean_blaze_breed/normal.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +153 210 164 +79 79 79 +53 53 53 +7 7 7 +17 17 17 +206 0 0 +255 26 26 +53 53 53 +87 87 87 +96 96 96 +185 185 185 +137 137 137 +67 79 70 +248 248 248 diff --git a/graphics/pokemon/tauros/paldean_blaze_breed/shiny.pal b/graphics/pokemon/tauros/paldean_blaze_breed/shiny.pal new file mode 100644 index 0000000000..a1c06e0cd4 --- /dev/null +++ b/graphics/pokemon/tauros/paldean_blaze_breed/shiny.pal @@ -0,0 +1,17 @@ +JASC-PAL +0100 +14 +153 210 164 +53 53 53 +79 79 79 +7 7 7 +17 17 17 +206 0 0 +255 26 26 +35 35 35 +104 104 104 +96 96 96 +185 185 185 +137 137 137 +67 79 70 +248 248 248 diff --git a/graphics/pokemon/tauros/paldean_combat_breed/back.png b/graphics/pokemon/tauros/paldean_combat_breed/back.png new file mode 100644 index 0000000000..d664bdf59f Binary files /dev/null and b/graphics/pokemon/tauros/paldean_combat_breed/back.png differ diff --git a/graphics/pokemon/tauros/paldean_combat_breed/front.png b/graphics/pokemon/tauros/paldean_combat_breed/front.png new file mode 100644 index 0000000000..9b677bac3f Binary files /dev/null and b/graphics/pokemon/tauros/paldean_combat_breed/front.png differ diff --git a/graphics/pokemon/tauros/paldean_combat_breed/icon.png b/graphics/pokemon/tauros/paldean_combat_breed/icon.png new file mode 100644 index 0000000000..daa2eb7882 Binary files /dev/null and b/graphics/pokemon/tauros/paldean_combat_breed/icon.png differ diff --git a/graphics/pokemon/tauros/paldean_combat_breed/normal.pal b/graphics/pokemon/tauros/paldean_combat_breed/normal.pal new file mode 100644 index 0000000000..f59738f9f2 --- /dev/null +++ b/graphics/pokemon/tauros/paldean_combat_breed/normal.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +153 210 164 +79 79 79 +53 53 53 +7 7 7 +17 17 17 +53 53 53 +104 104 104 +96 96 96 +137 137 137 +185 185 185 +104 104 104 +248 248 248 diff --git a/graphics/pokemon/tauros/paldean_combat_breed/shiny.pal b/graphics/pokemon/tauros/paldean_combat_breed/shiny.pal new file mode 100644 index 0000000000..ce3ef3e7b4 --- /dev/null +++ b/graphics/pokemon/tauros/paldean_combat_breed/shiny.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +153 210 164 +53 53 53 +79 79 79 +7 7 7 +17 17 17 +35 35 35 +104 104 104 +96 96 96 +137 137 137 +185 185 185 +67 79 70 +248 248 248 diff --git a/graphics/pokemon/tentacruel/anim_front.png b/graphics/pokemon/tentacruel/anim_front.png index b4c5ed3004..cef3d229bf 100644 Binary files a/graphics/pokemon/tentacruel/anim_front.png and b/graphics/pokemon/tentacruel/anim_front.png differ diff --git a/graphics/pokemon/tentacruel/normal.pal b/graphics/pokemon/tentacruel/normal.pal index 1f8e690b4a..dc41bfc732 100644 --- a/graphics/pokemon/tentacruel/normal.pal +++ b/graphics/pokemon/tentacruel/normal.pal @@ -7,10 +7,10 @@ JASC-PAL 246 65 82 180 41 32 131 16 16 -168 160 176 -128 120 136 -120 112 120 -96 96 104 +230 213 164 +180 172 115 +131 131 65 +82 82 32 200 200 200 131 205 230 106 180 230 diff --git a/graphics/pokemon/ting_lu/back.png b/graphics/pokemon/ting_lu/back.png new file mode 100644 index 0000000000..e0af1a11c6 Binary files /dev/null and b/graphics/pokemon/ting_lu/back.png differ diff --git a/graphics/pokemon/ting_lu/front.png b/graphics/pokemon/ting_lu/front.png new file mode 100644 index 0000000000..a94820cbf6 Binary files /dev/null and b/graphics/pokemon/ting_lu/front.png differ diff --git a/graphics/pokemon/ting_lu/icon.png b/graphics/pokemon/ting_lu/icon.png new file mode 100755 index 0000000000..0b1f975f9e Binary files /dev/null and b/graphics/pokemon/ting_lu/icon.png differ diff --git a/graphics/pokemon/ting_lu/normal.pal b/graphics/pokemon/ting_lu/normal.pal new file mode 100644 index 0000000000..008d4a094c --- /dev/null +++ b/graphics/pokemon/ting_lu/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 163 +40 51 49 +166 180 167 +74 74 74 +72 104 99 +115 149 139 +15 15 15 +94 70 34 +92 49 39 +140 97 64 +56 30 29 +126 71 66 +149 117 96 +175 149 134 +255 31 26 +255 222 36 diff --git a/graphics/pokemon/ting_lu/shiny.pal b/graphics/pokemon/ting_lu/shiny.pal new file mode 100644 index 0000000000..5476b7d4e9 --- /dev/null +++ b/graphics/pokemon/ting_lu/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 163 +40 51 49 +166 180 167 +74 74 74 +72 104 99 +115 149 139 +15 15 15 +96 88 80 +16 120 120 +209 214 214 +16 64 72 +105 115 143 +136 144 168 +176 184 184 +255 31 26 +255 222 36 diff --git a/graphics/pokemon/tinkatink/back.png b/graphics/pokemon/tinkatink/back.png new file mode 100644 index 0000000000..63fced4482 Binary files /dev/null and b/graphics/pokemon/tinkatink/back.png differ diff --git a/graphics/pokemon/tinkatink/front.png b/graphics/pokemon/tinkatink/front.png new file mode 100644 index 0000000000..f263a31f20 Binary files /dev/null and b/graphics/pokemon/tinkatink/front.png differ diff --git a/graphics/pokemon/tinkatink/icon.png b/graphics/pokemon/tinkatink/icon.png new file mode 100644 index 0000000000..fc7300cb0a Binary files /dev/null and b/graphics/pokemon/tinkatink/icon.png differ diff --git a/graphics/pokemon/tinkatink/normal.pal b/graphics/pokemon/tinkatink/normal.pal new file mode 100644 index 0000000000..fb5977571b --- /dev/null +++ b/graphics/pokemon/tinkatink/normal.pal @@ -0,0 +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 diff --git a/graphics/pokemon/tinkatink/shiny.pal b/graphics/pokemon/tinkatink/shiny.pal new file mode 100644 index 0000000000..aa21dca4e4 --- /dev/null +++ b/graphics/pokemon/tinkatink/shiny.pal @@ -0,0 +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 diff --git a/graphics/pokemon/tinkaton/back.png b/graphics/pokemon/tinkaton/back.png new file mode 100644 index 0000000000..d876ebc79a Binary files /dev/null and b/graphics/pokemon/tinkaton/back.png differ diff --git a/graphics/pokemon/tinkaton/front.png b/graphics/pokemon/tinkaton/front.png new file mode 100644 index 0000000000..eb5ce6e8a6 Binary files /dev/null and b/graphics/pokemon/tinkaton/front.png differ diff --git a/graphics/pokemon/tinkaton/icon.png b/graphics/pokemon/tinkaton/icon.png new file mode 100755 index 0000000000..72ab26b86b Binary files /dev/null and b/graphics/pokemon/tinkaton/icon.png differ diff --git a/graphics/pokemon/tinkaton/normal.pal b/graphics/pokemon/tinkaton/normal.pal new file mode 100644 index 0000000000..1c44fa8dc0 --- /dev/null +++ b/graphics/pokemon/tinkaton/normal.pal @@ -0,0 +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 diff --git a/graphics/pokemon/tinkaton/shiny.pal b/graphics/pokemon/tinkaton/shiny.pal new file mode 100644 index 0000000000..dd18420c0a --- /dev/null +++ b/graphics/pokemon/tinkaton/shiny.pal @@ -0,0 +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 diff --git a/graphics/pokemon/tinkatuff/back.png b/graphics/pokemon/tinkatuff/back.png new file mode 100644 index 0000000000..5a5cdac31b Binary files /dev/null and b/graphics/pokemon/tinkatuff/back.png differ diff --git a/graphics/pokemon/tinkatuff/front.png b/graphics/pokemon/tinkatuff/front.png new file mode 100644 index 0000000000..8b75e709bb Binary files /dev/null and b/graphics/pokemon/tinkatuff/front.png differ diff --git a/graphics/pokemon/tinkatuff/icon.png b/graphics/pokemon/tinkatuff/icon.png new file mode 100755 index 0000000000..7ab30334fa Binary files /dev/null and b/graphics/pokemon/tinkatuff/icon.png differ diff --git a/graphics/pokemon/tinkatuff/normal.pal b/graphics/pokemon/tinkatuff/normal.pal new file mode 100644 index 0000000000..0f90f999f8 --- /dev/null +++ b/graphics/pokemon/tinkatuff/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +32 208 160 +80 40 64 +232 208 208 +168 128 136 +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 diff --git a/graphics/pokemon/tinkatuff/shiny.pal b/graphics/pokemon/tinkatuff/shiny.pal new file mode 100644 index 0000000000..edea9dd345 --- /dev/null +++ b/graphics/pokemon/tinkatuff/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +32 208 160 +80 40 64 +232 208 208 +168 128 136 +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 diff --git a/graphics/pokemon/toedscool/back.png b/graphics/pokemon/toedscool/back.png new file mode 100755 index 0000000000..6858cf4af4 Binary files /dev/null and b/graphics/pokemon/toedscool/back.png differ diff --git a/graphics/pokemon/toedscool/front.png b/graphics/pokemon/toedscool/front.png new file mode 100755 index 0000000000..3aa3bf8959 Binary files /dev/null and b/graphics/pokemon/toedscool/front.png differ diff --git a/graphics/pokemon/toedscool/icon.png b/graphics/pokemon/toedscool/icon.png new file mode 100755 index 0000000000..91edeb2472 Binary files /dev/null and b/graphics/pokemon/toedscool/icon.png differ diff --git a/graphics/pokemon/toedscool/normal.pal b/graphics/pokemon/toedscool/normal.pal new file mode 100755 index 0000000000..77133acfb6 --- /dev/null +++ b/graphics/pokemon/toedscool/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +136 88 80 +240 180 168 +224 152 144 +168 120 104 +128 108 32 +192 168 64 +208 200 80 +16 16 16 +208 212 208 +248 252 248 +128 132 128 +168 172 160 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/toedscool/shiny.pal b/graphics/pokemon/toedscool/shiny.pal new file mode 100755 index 0000000000..9de6c2ab47 --- /dev/null +++ b/graphics/pokemon/toedscool/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +126 122 114 +247 246 242 +232 229 217 +189 185 173 +141 138 112 +213 209 173 +248 244 230 +16 16 16 +208 212 208 +248 252 248 +128 132 128 +168 172 160 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/toedscruel/back.png b/graphics/pokemon/toedscruel/back.png new file mode 100755 index 0000000000..da8955f819 Binary files /dev/null and b/graphics/pokemon/toedscruel/back.png differ diff --git a/graphics/pokemon/toedscruel/front.png b/graphics/pokemon/toedscruel/front.png new file mode 100755 index 0000000000..87162861ab Binary files /dev/null and b/graphics/pokemon/toedscruel/front.png differ diff --git a/graphics/pokemon/toedscruel/icon.png b/graphics/pokemon/toedscruel/icon.png new file mode 100755 index 0000000000..fe3f98f9fa Binary files /dev/null and b/graphics/pokemon/toedscruel/icon.png differ diff --git a/graphics/pokemon/toedscruel/normal.pal b/graphics/pokemon/toedscruel/normal.pal new file mode 100755 index 0000000000..7b541a5efd --- /dev/null +++ b/graphics/pokemon/toedscruel/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +112 116 112 +184 128 96 +88 92 96 +232 176 152 +232 228 104 +64 68 64 +248 252 248 +16 16 16 +240 240 192 +104 100 80 +176 180 152 +248 212 72 +136 108 40 +176 176 88 diff --git a/graphics/pokemon/toedscruel/shiny.pal b/graphics/pokemon/toedscruel/shiny.pal new file mode 100755 index 0000000000..1841634878 --- /dev/null +++ b/graphics/pokemon/toedscruel/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 48 48 +112 116 112 +161 161 163 +88 92 96 +222 220 221 +242 66 213 +64 68 64 +248 252 248 +16 16 16 +230 106 142 +109 50 68 +172 72 108 +248 212 72 +136 108 40 +175 41 169 diff --git a/graphics/pokemon/togedemaru/anim_front.png b/graphics/pokemon/togedemaru/anim_front.png new file mode 100644 index 0000000000..4e6534e2f8 Binary files /dev/null and b/graphics/pokemon/togedemaru/anim_front.png differ diff --git a/graphics/pokemon/togedemaru/front.png b/graphics/pokemon/togedemaru/front.png deleted file mode 100644 index aa0202eef3..0000000000 Binary files a/graphics/pokemon/togedemaru/front.png and /dev/null differ diff --git a/graphics/pokemon/toucannon/anim_front.png b/graphics/pokemon/toucannon/anim_front.png new file mode 100644 index 0000000000..fd42f4cc3f Binary files /dev/null and b/graphics/pokemon/toucannon/anim_front.png differ diff --git a/graphics/pokemon/toucannon/back.png b/graphics/pokemon/toucannon/back.png index 109a356dd7..fb6e6195ae 100644 Binary files a/graphics/pokemon/toucannon/back.png and b/graphics/pokemon/toucannon/back.png differ diff --git a/graphics/pokemon/toucannon/front.png b/graphics/pokemon/toucannon/front.png deleted file mode 100644 index e9131805ac..0000000000 Binary files a/graphics/pokemon/toucannon/front.png and /dev/null differ diff --git a/graphics/pokemon/toucannon/normal.pal b/graphics/pokemon/toucannon/normal.pal index eeb9ee6b64..d2ba6f1226 100644 --- a/graphics/pokemon/toucannon/normal.pal +++ b/graphics/pokemon/toucannon/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -120 40 24 -32 24 24 -232 232 64 -48 40 40 -88 80 72 -240 168 48 -56 48 48 -168 168 168 -232 112 32 -32 112 168 16 16 16 +32 24 24 +56 48 48 +120 40 24 +37 76 103 +88 80 72 224 48 16 -248 248 248 +32 112 168 +232 112 32 +168 168 168 +240 168 48 112 200 216 -184 184 192 +213 213 222 +232 232 64 +248 248 248 diff --git a/graphics/pokemon/toucannon/shiny.pal b/graphics/pokemon/toucannon/shiny.pal index 44b47e16b3..e60414432f 100644 --- a/graphics/pokemon/toucannon/shiny.pal +++ b/graphics/pokemon/toucannon/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -72 16 96 -16 24 24 -88 120 200 -48 40 40 -80 88 80 -64 64 168 -48 56 48 -200 208 104 -160 72 184 -24 160 48 16 16 16 +33 38 38 +48 56 48 +77 18 70 +24 92 102 +80 88 80 224 32 104 -248 248 248 +49 131 145 +160 72 184 +200 208 104 +64 64 168 112 200 216 -184 184 192 +213 213 222 +88 120 200 +248 248 248 diff --git a/graphics/pokemon/toxtricity/gigantamax/back.png b/graphics/pokemon/toxtricity/gigantamax/back.png new file mode 100644 index 0000000000..3e83fa04f3 Binary files /dev/null and b/graphics/pokemon/toxtricity/gigantamax/back.png differ diff --git a/graphics/pokemon/toxtricity/gigantamax/front.png b/graphics/pokemon/toxtricity/gigantamax/front.png new file mode 100644 index 0000000000..7fac75a683 Binary files /dev/null and b/graphics/pokemon/toxtricity/gigantamax/front.png differ diff --git a/graphics/pokemon/toxtricity/gigantamax/icon.png b/graphics/pokemon/toxtricity/gigantamax/icon.png new file mode 100644 index 0000000000..3e7e680f7c Binary files /dev/null and b/graphics/pokemon/toxtricity/gigantamax/icon.png differ diff --git a/graphics/pokemon/toxtricity/gigantamax/normal.pal b/graphics/pokemon/toxtricity/gigantamax/normal.pal new file mode 100644 index 0000000000..eceb597ad4 --- /dev/null +++ b/graphics/pokemon/toxtricity/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +75 45 94 +16 16 16 +141 79 174 +224 97 180 +215 143 0 +115 155 217 +240 200 16 +248 230 150 +106 66 119 +150 222 243 +202 74 170 +254 180 228 +240 142 197 +231 114 199 +124 70 31 diff --git a/graphics/pokemon/toxtricity/gigantamax/shiny.pal b/graphics/pokemon/toxtricity/gigantamax/shiny.pal new file mode 100644 index 0000000000..372ab9a7b2 --- /dev/null +++ b/graphics/pokemon/toxtricity/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +94 45 64 +16 16 16 +174 79 111 +224 97 180 +215 143 0 +115 155 217 +240 200 16 +248 230 150 +119 66 77 +150 222 243 +183 73 202 +238 180 254 +240 142 197 +218 114 231 +124 70 31 diff --git a/graphics/pokemon/trumbeak/anim_front.png b/graphics/pokemon/trumbeak/anim_front.png new file mode 100644 index 0000000000..9bb3a97840 Binary files /dev/null and b/graphics/pokemon/trumbeak/anim_front.png differ diff --git a/graphics/pokemon/trumbeak/back.png b/graphics/pokemon/trumbeak/back.png index 552c32d260..a9dc99ea25 100644 Binary files a/graphics/pokemon/trumbeak/back.png and b/graphics/pokemon/trumbeak/back.png differ diff --git a/graphics/pokemon/trumbeak/front.png b/graphics/pokemon/trumbeak/front.png deleted file mode 100644 index b51466e309..0000000000 Binary files a/graphics/pokemon/trumbeak/front.png and /dev/null differ diff --git a/graphics/pokemon/trumbeak/normal.pal b/graphics/pokemon/trumbeak/normal.pal index 315d2898c5..050033cdb5 100644 --- a/graphics/pokemon/trumbeak/normal.pal +++ b/graphics/pokemon/trumbeak/normal.pal @@ -6,7 +6,7 @@ JASC-PAL 96 88 80 16 16 16 64 56 56 -192 192 192 +212 212 212 120 120 128 168 168 168 248 248 248 @@ -15,5 +15,5 @@ JASC-PAL 248 136 64 232 56 48 184 24 24 -120 168 184 -0 0 0 +64 154 184 +115 28 28 diff --git a/graphics/pokemon/trumbeak/shiny.pal b/graphics/pokemon/trumbeak/shiny.pal index 0b87369f2c..3a2e5ce71f 100644 --- a/graphics/pokemon/trumbeak/shiny.pal +++ b/graphics/pokemon/trumbeak/shiny.pal @@ -6,7 +6,7 @@ JASC-PAL 80 96 80 16 16 16 56 64 48 -192 192 192 +212 212 212 136 128 40 216 208 56 248 248 248 @@ -16,4 +16,4 @@ JASC-PAL 240 56 136 200 24 104 120 168 184 -0 0 0 +125 15 68 diff --git a/graphics/pokemon/ursaluna/bloodmoon/back.png b/graphics/pokemon/ursaluna/bloodmoon/back.png new file mode 100644 index 0000000000..251eab99cf Binary files /dev/null and b/graphics/pokemon/ursaluna/bloodmoon/back.png differ diff --git a/graphics/pokemon/ursaluna/bloodmoon/front.png b/graphics/pokemon/ursaluna/bloodmoon/front.png new file mode 100644 index 0000000000..27b44fb3ff Binary files /dev/null and b/graphics/pokemon/ursaluna/bloodmoon/front.png differ diff --git a/graphics/pokemon/ursaluna/bloodmoon/normal.pal b/graphics/pokemon/ursaluna/bloodmoon/normal.pal new file mode 100644 index 0000000000..8eab07de45 --- /dev/null +++ b/graphics/pokemon/ursaluna/bloodmoon/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +0 194 8 +238 80 106 +246 125 148 +255 214 123 +49 40 32 +115 85 74 +164 40 65 +255 255 255 +78 78 97 +74 56 49 +148 117 106 +164 161 164 +16 16 16 +222 222 222 +123 121 139 diff --git a/graphics/pokemon/ursaluna/bloodmoon/shiny.pal b/graphics/pokemon/ursaluna/bloodmoon/shiny.pal new file mode 100644 index 0000000000..d8a8e8ce56 --- /dev/null +++ b/graphics/pokemon/ursaluna/bloodmoon/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +0 194 8 +238 80 106 +246 125 148 +255 214 123 +49 40 32 +195 99 59 +164 40 65 +255 255 255 +78 78 97 +128 74 52 +230 131 90 +164 161 164 +16 16 16 +222 222 222 +123 121 139 diff --git a/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/back.png b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/back.png new file mode 100644 index 0000000000..3369e6c170 Binary files /dev/null and b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/back.png differ diff --git a/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/front.png b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/front.png new file mode 100644 index 0000000000..a00a644f08 Binary files /dev/null and b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/front.png differ diff --git a/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/icon.png b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/icon.png new file mode 100644 index 0000000000..04be58cc42 Binary files /dev/null and b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/icon.png differ diff --git a/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/normal.pal b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/normal.pal new file mode 100644 index 0000000000..de95b4d5b4 --- /dev/null +++ b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +107 101 116 +16 16 16 +181 181 181 +43 51 125 +145 145 145 +245 245 245 +16 13 79 +48 63 241 +40 45 38 +158 98 37 +255 250 96 +213 169 38 +134 160 253 +96 95 77 +15 15 15 diff --git a/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/shiny.pal b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/shiny.pal new file mode 100644 index 0000000000..739e8a8aeb --- /dev/null +++ b/graphics/pokemon/urshifu/rapid_strike_style_gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +107 101 116 +16 16 16 +181 181 181 +43 51 125 +145 145 145 +245 245 245 +16 13 79 +48 63 241 +40 45 38 +139 34 47 +255 151 54 +185 88 38 +134 160 253 +96 95 77 +15 15 15 diff --git a/graphics/pokemon/urshifu/single_strike_style_gigantamax/back.png b/graphics/pokemon/urshifu/single_strike_style_gigantamax/back.png new file mode 100644 index 0000000000..74b71795bb Binary files /dev/null and b/graphics/pokemon/urshifu/single_strike_style_gigantamax/back.png differ diff --git a/graphics/pokemon/urshifu/single_strike_style_gigantamax/front.png b/graphics/pokemon/urshifu/single_strike_style_gigantamax/front.png new file mode 100644 index 0000000000..9f144d32be Binary files /dev/null and b/graphics/pokemon/urshifu/single_strike_style_gigantamax/front.png differ diff --git a/graphics/pokemon/urshifu/single_strike_style_gigantamax/icon.png b/graphics/pokemon/urshifu/single_strike_style_gigantamax/icon.png new file mode 100644 index 0000000000..bfeab0ee3b Binary files /dev/null and b/graphics/pokemon/urshifu/single_strike_style_gigantamax/icon.png differ diff --git a/graphics/pokemon/urshifu/single_strike_style_gigantamax/normal.pal b/graphics/pokemon/urshifu/single_strike_style_gigantamax/normal.pal new file mode 100644 index 0000000000..4cba02f8cd --- /dev/null +++ b/graphics/pokemon/urshifu/single_strike_style_gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +40 45 38 +16 16 16 +66 71 58 +107 101 116 +181 181 181 +96 95 77 +87 15 15 +146 39 24 +231 20 10 +145 145 145 +158 98 37 +245 245 245 +255 250 96 +213 169 38 +254 125 112 diff --git a/graphics/pokemon/urshifu/single_strike_style_gigantamax/shiny.pal b/graphics/pokemon/urshifu/single_strike_style_gigantamax/shiny.pal new file mode 100644 index 0000000000..13f43d8b23 --- /dev/null +++ b/graphics/pokemon/urshifu/single_strike_style_gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +153 211 165 +40 45 38 +16 16 16 +66 71 58 +107 101 116 +181 181 181 +96 95 77 +87 15 15 +146 39 24 +231 20 10 +145 145 145 +139 34 47 +245 245 245 +255 151 54 +185 88 38 +254 125 112 diff --git a/graphics/pokemon/varoom/back.png b/graphics/pokemon/varoom/back.png new file mode 100755 index 0000000000..a0fef0447c Binary files /dev/null and b/graphics/pokemon/varoom/back.png differ diff --git a/graphics/pokemon/varoom/front.png b/graphics/pokemon/varoom/front.png new file mode 100755 index 0000000000..8c2bd6679f Binary files /dev/null and b/graphics/pokemon/varoom/front.png differ diff --git a/graphics/pokemon/varoom/icon.png b/graphics/pokemon/varoom/icon.png new file mode 100755 index 0000000000..7debadffde Binary files /dev/null and b/graphics/pokemon/varoom/icon.png differ diff --git a/graphics/pokemon/varoom/normal.pal b/graphics/pokemon/varoom/normal.pal new file mode 100755 index 0000000000..6e9f62ab56 --- /dev/null +++ b/graphics/pokemon/varoom/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 28 40 +16 16 16 +48 48 64 +96 88 104 +200 212 216 +56 60 72 +112 124 144 +240 248 248 +48 32 80 +152 104 184 +248 236 32 +88 60 128 +232 176 48 +128 128 136 +0 0 0 diff --git a/graphics/pokemon/varoom/shiny.pal b/graphics/pokemon/varoom/shiny.pal new file mode 100755 index 0000000000..3eb247d6f4 --- /dev/null +++ b/graphics/pokemon/varoom/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 28 40 +16 16 16 +48 48 64 +96 88 104 +234 200 106 +56 60 72 +158 122 73 +240 248 248 +48 32 80 +152 104 184 +237 142 178 +88 60 128 +184 92 141 +128 128 136 +0 0 0 diff --git a/graphics/pokemon/veluza/back.png b/graphics/pokemon/veluza/back.png new file mode 100755 index 0000000000..15777e0662 Binary files /dev/null and b/graphics/pokemon/veluza/back.png differ diff --git a/graphics/pokemon/veluza/front.png b/graphics/pokemon/veluza/front.png new file mode 100755 index 0000000000..9a2a7643ab Binary files /dev/null and b/graphics/pokemon/veluza/front.png differ diff --git a/graphics/pokemon/veluza/icon.png b/graphics/pokemon/veluza/icon.png new file mode 100755 index 0000000000..6d06051669 Binary files /dev/null and b/graphics/pokemon/veluza/icon.png differ diff --git a/graphics/pokemon/veluza/normal.pal b/graphics/pokemon/veluza/normal.pal new file mode 100755 index 0000000000..2365bca9d4 --- /dev/null +++ b/graphics/pokemon/veluza/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 56 136 +248 116 248 +16 16 16 +192 80 192 +96 100 104 +72 72 72 +136 128 136 +168 172 168 +192 196 192 +248 252 248 +144 132 200 +208 208 208 +200 68 80 +248 92 56 +0 0 0 diff --git a/graphics/pokemon/veluza/shiny.pal b/graphics/pokemon/veluza/shiny.pal new file mode 100755 index 0000000000..9574a636bf --- /dev/null +++ b/graphics/pokemon/veluza/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +49 113 67 +71 149 81 +16 16 16 +71 149 81 +96 100 104 +72 72 72 +136 128 136 +168 172 168 +192 196 192 +248 252 248 +144 132 200 +208 208 208 +200 68 80 +248 92 56 +0 0 0 diff --git a/graphics/pokemon/venusaur/gigantamax/back.png b/graphics/pokemon/venusaur/gigantamax/back.png new file mode 100644 index 0000000000..be482895b8 Binary files /dev/null and b/graphics/pokemon/venusaur/gigantamax/back.png differ diff --git a/graphics/pokemon/venusaur/gigantamax/front.png b/graphics/pokemon/venusaur/gigantamax/front.png new file mode 100644 index 0000000000..b7dde75ba8 Binary files /dev/null and b/graphics/pokemon/venusaur/gigantamax/front.png differ diff --git a/graphics/pokemon/venusaur/gigantamax/icon.png b/graphics/pokemon/venusaur/gigantamax/icon.png new file mode 100644 index 0000000000..523e647999 Binary files /dev/null and b/graphics/pokemon/venusaur/gigantamax/icon.png differ diff --git a/graphics/pokemon/venusaur/gigantamax/normal.pal b/graphics/pokemon/venusaur/gigantamax/normal.pal new file mode 100644 index 0000000000..74ffe32fbd --- /dev/null +++ b/graphics/pokemon/venusaur/gigantamax/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 0 128 +131 49 0 +16 16 16 +16 82 65 +223 91 95 +0 141 125 +0 107 93 +252 252 252 +32 180 156 +16 123 106 +246 148 153 +90 213 197 +255 201 201 +131 222 123 +255 238 82 +199 155 38 diff --git a/graphics/pokemon/venusaur/gigantamax/shiny.pal b/graphics/pokemon/venusaur/gigantamax/shiny.pal new file mode 100644 index 0000000000..cd6c71bec7 --- /dev/null +++ b/graphics/pokemon/venusaur/gigantamax/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +128 0 128 +131 49 0 +16 16 16 +57 90 32 +229 171 27 +0 141 125 +0 107 93 +252 252 252 +164 213 74 +123 156 41 +255 228 17 +205 238 82 +255 255 222 +131 222 123 +255 238 82 +199 155 38 diff --git a/graphics/pokemon/voltorb/anim_front.png b/graphics/pokemon/voltorb/anim_front.png index 28c443a3a3..166824d054 100644 Binary files a/graphics/pokemon/voltorb/anim_front.png and b/graphics/pokemon/voltorb/anim_front.png differ diff --git a/graphics/pokemon/voltorb/back.png b/graphics/pokemon/voltorb/back.png index 6010acc3b7..cf0cf334ea 100644 Binary files a/graphics/pokemon/voltorb/back.png and b/graphics/pokemon/voltorb/back.png differ diff --git a/graphics/pokemon/voltorb/normal.pal b/graphics/pokemon/voltorb/normal.pal index 79af1efd7f..981ab31a35 100644 --- a/graphics/pokemon/voltorb/normal.pal +++ b/graphics/pokemon/voltorb/normal.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 -16 16 16 -131 16 16 -213 49 65 -255 82 32 -238 65 49 -255 131 90 -255 172 156 -213 49 65 +255 255 255 222 213 213 180 172 189 -248 248 248 -88 80 80 -136 128 128 -0 0 0 -0 0 0 +139 131 131 +90 82 82 +255 0 255 +255 0 255 +255 0 255 +255 172 156 +255 131 90 +255 82 32 +238 65 49 +213 49 65 +131 16 16 +16 16 16 diff --git a/graphics/pokemon/voltorb/shiny.pal b/graphics/pokemon/voltorb/shiny.pal index 6b46ff5d7e..06e1879254 100644 --- a/graphics/pokemon/voltorb/shiny.pal +++ b/graphics/pokemon/voltorb/shiny.pal @@ -2,18 +2,18 @@ JASC-PAL 0100 16 152 208 160 +255 255 255 +222 213 213 +180 172 189 +139 131 131 +90 82 82 +255 0 255 +255 0 255 +255 0 255 +156 172 255 +90 131 255 +0 82 255 +49 65 238 +41 24 189 +0 0 115 16 16 16 -32 32 112 -56 40 184 -48 112 248 -72 88 232 -112 144 248 -168 184 248 -56 40 184 -216 208 208 -176 168 184 -248 248 248 -88 80 80 -136 128 128 -0 0 0 -0 0 0 diff --git a/graphics/pokemon/walking_wake/back.png b/graphics/pokemon/walking_wake/back.png new file mode 100644 index 0000000000..7fb2083cb9 Binary files /dev/null and b/graphics/pokemon/walking_wake/back.png differ diff --git a/graphics/pokemon/walking_wake/front.png b/graphics/pokemon/walking_wake/front.png new file mode 100644 index 0000000000..2ef9632710 Binary files /dev/null and b/graphics/pokemon/walking_wake/front.png differ diff --git a/graphics/pokemon/walking_wake/icon.png b/graphics/pokemon/walking_wake/icon.png new file mode 100644 index 0000000000..9260531ecf Binary files /dev/null and b/graphics/pokemon/walking_wake/icon.png differ diff --git a/graphics/pokemon/walking_wake/normal.pal b/graphics/pokemon/walking_wake/normal.pal new file mode 100644 index 0000000000..a0cd9eaff9 --- /dev/null +++ b/graphics/pokemon/walking_wake/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +46 149 167 +115 234 222 +27 86 92 +39 124 124 +82 82 82 +247 162 82 +53 194 219 +16 16 16 +239 93 107 +165 103 167 +129 73 126 +89 52 105 +254 214 54 +252 252 252 +189 189 189 diff --git a/graphics/pokemon/walking_wake/shiny.pal b/graphics/pokemon/walking_wake/shiny.pal new file mode 100644 index 0000000000..f75d05d689 --- /dev/null +++ b/graphics/pokemon/walking_wake/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 168 152 +115 234 222 +27 86 92 +39 124 124 +82 82 82 +247 162 82 +96 216 184 +16 16 16 +239 93 107 +64 96 232 +40 64 152 +8 24 128 +254 214 54 +252 252 252 +189 189 189 diff --git a/graphics/pokemon/wattrel/back.png b/graphics/pokemon/wattrel/back.png new file mode 100755 index 0000000000..2a5bc640b5 Binary files /dev/null and b/graphics/pokemon/wattrel/back.png differ diff --git a/graphics/pokemon/wattrel/front.png b/graphics/pokemon/wattrel/front.png new file mode 100755 index 0000000000..72981aa44e Binary files /dev/null and b/graphics/pokemon/wattrel/front.png differ diff --git a/graphics/pokemon/wattrel/icon.png b/graphics/pokemon/wattrel/icon.png new file mode 100755 index 0000000000..a0a8bc9d49 Binary files /dev/null and b/graphics/pokemon/wattrel/icon.png differ diff --git a/graphics/pokemon/wattrel/normal.pal b/graphics/pokemon/wattrel/normal.pal new file mode 100755 index 0000000000..261ba62068 --- /dev/null +++ b/graphics/pokemon/wattrel/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 24 24 +48 56 56 +32 40 40 +248 252 248 +184 188 200 +16 16 16 +248 204 48 +168 104 32 +192 144 40 +128 64 24 +240 176 88 +120 92 32 +96 112 144 +136 156 184 +64 76 104 diff --git a/graphics/pokemon/wattrel/shiny.pal b/graphics/pokemon/wattrel/shiny.pal new file mode 100755 index 0000000000..16b0a5b21b --- /dev/null +++ b/graphics/pokemon/wattrel/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 24 24 +131 83 100 +96 60 73 +248 252 248 +184 188 200 +16 16 16 +248 204 48 +168 104 32 +192 144 40 +128 64 24 +240 176 88 +120 92 32 +96 112 144 +136 156 184 +64 76 104 diff --git a/graphics/pokemon/weezing/anim_front.png b/graphics/pokemon/weezing/anim_front.png index 3bc2cb26f6..bda98b3f4b 100644 Binary files a/graphics/pokemon/weezing/anim_front.png and b/graphics/pokemon/weezing/anim_front.png differ diff --git a/graphics/pokemon/weezing/back.png b/graphics/pokemon/weezing/back.png index 92fd4020bb..0a5876baf1 100644 Binary files a/graphics/pokemon/weezing/back.png and b/graphics/pokemon/weezing/back.png differ diff --git a/graphics/pokemon/weezing/normal.pal b/graphics/pokemon/weezing/normal.pal index 715cd4c89a..ded0142be1 100644 --- a/graphics/pokemon/weezing/normal.pal +++ b/graphics/pokemon/weezing/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -0 176 232 -197 213 139 -246 238 148 -197 180 41 -131 90 139 -189 139 205 -98 49 123 -164 106 180 -213 164 222 -16 16 16 +152 200 208 255 255 255 189 189 189 172 164 82 -172 164 82 -156 82 98 +213 213 180 213 115 131 +156 82 98 +246 238 148 +197 213 139 +197 180 41 +213 164 222 +189 139 205 +164 106 180 +131 90 139 +98 49 123 +16 16 16 diff --git a/graphics/pokemon/weezing/shiny.pal b/graphics/pokemon/weezing/shiny.pal index 11a7a0793d..16175411c0 100644 --- a/graphics/pokemon/weezing/shiny.pal +++ b/graphics/pokemon/weezing/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -0 176 232 -176 128 176 -208 168 208 -136 88 136 -56 104 104 -128 176 168 -24 64 64 -88 136 128 -168 216 200 +160 208 152 +255 255 255 +222 222 222 +172 156 16 +213 205 106 +222 98 32 +164 32 0 +222 156 213 +180 123 180 +139 74 139 +156 213 197 +123 180 172 +82 139 131 +49 106 106 +16 74 74 16 16 16 -248 248 248 -184 184 184 -208 200 112 -160 144 48 -160 64 48 -216 120 72 diff --git a/graphics/pokemon/wiglett/back.png b/graphics/pokemon/wiglett/back.png new file mode 100755 index 0000000000..9e9f35b3a2 Binary files /dev/null and b/graphics/pokemon/wiglett/back.png differ diff --git a/graphics/pokemon/wiglett/front.png b/graphics/pokemon/wiglett/front.png new file mode 100755 index 0000000000..d5337cee9e Binary files /dev/null and b/graphics/pokemon/wiglett/front.png differ diff --git a/graphics/pokemon/wiglett/icon.png b/graphics/pokemon/wiglett/icon.png new file mode 100755 index 0000000000..668309c68e Binary files /dev/null and b/graphics/pokemon/wiglett/icon.png differ diff --git a/graphics/pokemon/wiglett/normal.pal b/graphics/pokemon/wiglett/normal.pal new file mode 100755 index 0000000000..e3061417d8 --- /dev/null +++ b/graphics/pokemon/wiglett/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 128 128 +184 180 192 +232 228 224 +248 252 248 +16 16 16 +168 72 88 +120 44 64 +248 148 160 +232 92 112 +56 80 72 +80 112 104 +120 156 136 +152 184 168 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wiglett/shiny.pal b/graphics/pokemon/wiglett/shiny.pal new file mode 100755 index 0000000000..d6b8742844 --- /dev/null +++ b/graphics/pokemon/wiglett/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +173 111 11 +214 150 13 +255 185 8 +248 252 248 +16 16 16 +62 54 173 +44 39 125 +100 91 220 +79 67 222 +56 80 72 +80 112 104 +120 156 136 +152 184 168 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wo_chien/back.png b/graphics/pokemon/wo_chien/back.png new file mode 100644 index 0000000000..4525e24fec Binary files /dev/null and b/graphics/pokemon/wo_chien/back.png differ diff --git a/graphics/pokemon/wo_chien/front.png b/graphics/pokemon/wo_chien/front.png new file mode 100644 index 0000000000..b81f12809f Binary files /dev/null and b/graphics/pokemon/wo_chien/front.png differ diff --git a/graphics/pokemon/wo_chien/icon.png b/graphics/pokemon/wo_chien/icon.png new file mode 100755 index 0000000000..22402d15c5 Binary files /dev/null and b/graphics/pokemon/wo_chien/icon.png differ diff --git a/graphics/pokemon/wo_chien/normal.pal b/graphics/pokemon/wo_chien/normal.pal new file mode 100644 index 0000000000..df9cd0fd2e --- /dev/null +++ b/graphics/pokemon/wo_chien/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +255 255 255 +255 125 0 +180 190 189 +65 68 41 +82 129 57 +74 182 82 +139 153 156 +24 24 24 +82 72 49 +197 157 90 +123 113 82 +172 141 115 +41 48 41 +74 85 82 +139 97 90 diff --git a/graphics/pokemon/wo_chien/shiny.pal b/graphics/pokemon/wo_chien/shiny.pal new file mode 100644 index 0000000000..f2dddbf0ae --- /dev/null +++ b/graphics/pokemon/wo_chien/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +156 210 164 +255 255 255 +255 125 0 +180 190 189 +65 68 41 +164 151 99 +216 201 142 +139 153 156 +24 24 24 +82 72 49 +255 79 97 +213 61 84 +172 141 115 +41 48 41 +74 85 82 +139 97 90 diff --git a/graphics/pokemon/wobbuffet/iconf.png b/graphics/pokemon/wobbuffet/iconf.png new file mode 100644 index 0000000000..1f7f86991b Binary files /dev/null and b/graphics/pokemon/wobbuffet/iconf.png differ diff --git a/graphics/pokemon/wooper/wooper_paldean/back.png b/graphics/pokemon/wooper/wooper_paldean/back.png new file mode 100644 index 0000000000..269a70ec26 Binary files /dev/null and b/graphics/pokemon/wooper/wooper_paldean/back.png differ diff --git a/graphics/pokemon/wooper/wooper_paldean/front.png b/graphics/pokemon/wooper/wooper_paldean/front.png new file mode 100644 index 0000000000..5ef4745594 Binary files /dev/null and b/graphics/pokemon/wooper/wooper_paldean/front.png differ diff --git a/graphics/pokemon/wooper/wooper_paldean/normal.pal b/graphics/pokemon/wooper/wooper_paldean/normal.pal new file mode 100644 index 0000000000..2652aa5a76 --- /dev/null +++ b/graphics/pokemon/wooper/wooper_paldean/normal.pal @@ -0,0 +1,16 @@ +JASC-PAL +0100 +13 +153 211 165 +103 83 119 +201 177 219 +85 67 66 +104 82 81 +16 16 16 +169 147 146 +130 103 102 +158 129 179 +255 255 255 +46 36 35 +180 65 65 +255 106 115 diff --git a/graphics/pokemon/wooper/wooper_paldean/shiny.pal b/graphics/pokemon/wooper/wooper_paldean/shiny.pal new file mode 100644 index 0000000000..3df4f0efa8 --- /dev/null +++ b/graphics/pokemon/wooper/wooper_paldean/shiny.pal @@ -0,0 +1,16 @@ +JASC-PAL +0100 +13 +153 211 165 +158 114 77 +230 186 149 +102 96 146 +140 133 186 +16 16 16 +204 202 219 +171 167 198 +200 144 97 +255 255 255 +46 36 35 +180 65 65 +255 106 115 diff --git a/graphics/pokemon/wugtrio/back.png b/graphics/pokemon/wugtrio/back.png new file mode 100755 index 0000000000..733bc50ed4 Binary files /dev/null and b/graphics/pokemon/wugtrio/back.png differ diff --git a/graphics/pokemon/wugtrio/front.png b/graphics/pokemon/wugtrio/front.png new file mode 100755 index 0000000000..07c1d27611 Binary files /dev/null and b/graphics/pokemon/wugtrio/front.png differ diff --git a/graphics/pokemon/wugtrio/icon.png b/graphics/pokemon/wugtrio/icon.png new file mode 100755 index 0000000000..1b67044787 Binary files /dev/null and b/graphics/pokemon/wugtrio/icon.png differ diff --git a/graphics/pokemon/wugtrio/normal.pal b/graphics/pokemon/wugtrio/normal.pal new file mode 100755 index 0000000000..61d957fca3 --- /dev/null +++ b/graphics/pokemon/wugtrio/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +168 60 80 +248 120 152 +120 40 56 +248 252 248 +240 80 96 +16 16 16 +128 128 128 +248 248 248 +184 180 192 +48 48 56 +64 72 88 +104 128 128 +80 104 112 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wugtrio/shiny.pal b/graphics/pokemon/wugtrio/shiny.pal new file mode 100755 index 0000000000..6435d043fe --- /dev/null +++ b/graphics/pokemon/wugtrio/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +55 58 158 +110 113 194 +40 33 117 +248 252 248 +75 79 197 +16 16 16 +139 65 9 +237 151 45 +201 108 14 +48 48 56 +64 72 88 +104 128 128 +80 104 112 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/wyrdeer/back.png b/graphics/pokemon/wyrdeer/back.png old mode 100755 new mode 100644 index 00f1ba932d..d9da07b065 Binary files a/graphics/pokemon/wyrdeer/back.png and b/graphics/pokemon/wyrdeer/back.png differ diff --git a/graphics/pokemon/wyrdeer/front.png b/graphics/pokemon/wyrdeer/front.png old mode 100755 new mode 100644 index 9e5bffce51..4caf284203 Binary files a/graphics/pokemon/wyrdeer/front.png and b/graphics/pokemon/wyrdeer/front.png differ diff --git a/graphics/pokemon/wyrdeer/normal.pal b/graphics/pokemon/wyrdeer/normal.pal old mode 100755 new mode 100644 index 10073e4475..06adb7dd2a --- a/graphics/pokemon/wyrdeer/normal.pal +++ b/graphics/pokemon/wyrdeer/normal.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -152 104 56 -248 216 168 -120 72 64 -232 184 128 -0 0 0 -72 72 72 -224 152 88 -160 168 168 -120 120 120 -112 128 136 -240 240 240 -192 200 208 -56 64 64 -88 88 88 -64 72 80 +153 211 165 +140 83 39 +255 226 154 +222 151 63 +16 16 16 +74 74 74 +123 123 123 +85 91 112 +193 207 217 +141 150 163 +122 113 110 +252 252 252 +207 198 191 +148 90 83 +94 49 50 +178 125 112 diff --git a/graphics/pokemon/wyrdeer/shiny.pal b/graphics/pokemon/wyrdeer/shiny.pal old mode 100755 new mode 100644 index ecd55cb218..53da402ad6 --- a/graphics/pokemon/wyrdeer/shiny.pal +++ b/graphics/pokemon/wyrdeer/shiny.pal @@ -1,19 +1,19 @@ JASC-PAL 0100 16 -152 208 160 -152 104 56 -248 216 168 -120 72 64 -232 184 128 -0 0 0 -72 72 72 -224 152 88 -168 180 128 -120 140 80 -112 128 136 -232 236 208 -208 216 152 -56 64 64 -88 88 88 -64 72 80 +153 211 165 +140 83 39 +255 226 154 +222 151 63 +16 16 16 +74 74 74 +123 123 123 +85 91 112 +203 221 147 +151 165 103 +122 113 110 +209 233 211 +159 176 163 +148 90 83 +94 49 50 +178 125 112 diff --git a/graphics/pokemon_storage/wallpapers/icons/bolt_japan.png b/graphics/pokemon_storage/wallpapers/icons/bolt_japan.png new file mode 100644 index 0000000000..a217a5642f Binary files /dev/null and b/graphics/pokemon_storage/wallpapers/icons/bolt_japan.png differ diff --git a/graphics/pokemon_storage/wallpapers/icons/cross_japan.png b/graphics/pokemon_storage/wallpapers/icons/cross_japan.png new file mode 100644 index 0000000000..9367347e9d Binary files /dev/null and b/graphics/pokemon_storage/wallpapers/icons/cross_japan.png differ diff --git a/graphics/pokemon_storage/wallpapers/icons/plusle_japan.png b/graphics/pokemon_storage/wallpapers/icons/plusle_japan.png new file mode 100644 index 0000000000..f58c05989c Binary files /dev/null and b/graphics/pokemon_storage/wallpapers/icons/plusle_japan.png differ diff --git a/graphics/unused/.gitignore b/graphics/unused/.gitignore new file mode 100644 index 0000000000..b929a6cae7 --- /dev/null +++ b/graphics/unused/.gitignore @@ -0,0 +1 @@ +redyellowgreen_frame.bin \ No newline at end of file diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index b565c0e914..6a2728aff4 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -20,7 +20,7 @@ JPCONTESTGFXDIR := graphics/contest/japanese POKEDEXGFXDIR := graphics/pokedex STARTERGFXDIR := graphics/starter_choose NAMINGGFXDIR := graphics/naming_screen -SPINDAGFXDIR := graphics/spinda_spots +SPINDAGFXDIR := graphics/pokemon/spinda/spots types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark fairy contest_types := cool beauty cute smart tough @@ -253,10 +253,10 @@ $(FONTGFXDIR)/short.fwjpnfont: $(FONTGFXDIR)/japanese_short.png $(FONTGFXDIR)/braille.fwjpnfont: $(FONTGFXDIR)/braille.png $(GFX) $< $@ -$(FONTGFXDIR)/frlg_male.fwjpnfont: $(FONTGFXDIR)/japanese_frlg_male_font.png +$(FONTGFXDIR)/frlg_male.fwjpnfont: $(FONTGFXDIR)/japanese_frlg_male.png $(GFX) $< $@ -$(FONTGFXDIR)/frlg_female.fwjpnfont: $(FONTGFXDIR)/japanese_frlg_female_font.png +$(FONTGFXDIR)/frlg_female.fwjpnfont: $(FONTGFXDIR)/japanese_frlg_female.png $(GFX) $< $@ diff --git a/include/battle.h b/include/battle.h index c124da98f2..5b258d156f 100644 --- a/include/battle.h +++ b/include/battle.h @@ -14,6 +14,7 @@ #include "battle_bg.h" #include "pokeball.h" #include "battle_debug.h" +#include "battle_dynamax.h" // Used to exclude moves learned temporarily by Transform or Mimic #define MOVE_IS_PERMANENT(battler, moveSlot) \ @@ -43,6 +44,9 @@ #define BATTLE_BUFFER_LINK_SIZE 0x1000 +// Special indicator value for shellBellDmg in SpecialStatus +#define IGNORE_SHELL_BELL 0xFFFF + struct ResourceFlags { u32 flags[MAX_BATTLERS_COUNT]; @@ -94,6 +98,7 @@ struct DisableStruct u8 laserFocusTimer; u8 throatChopTimer; u8 wrapTurns; + u8 tormentTimer:4; // used for G-Max Meltdown u8 usedMoves:4; u8 noRetreat:1; u8 tarShot:1; @@ -103,8 +108,12 @@ struct DisableStruct u8 toxicSpikesDone:1; u8 stickyWebDone:1; u8 stealthRockDone:1; + u8 syrupBombTimer; + u8 syrupBombIsShiny:1; + u8 steelSurgeDone:1; u8 weatherAbilityDone:1; u8 terrainAbilityDone:1; + u8 usedProteanLibero:1; }; struct ProtectStruct @@ -149,8 +158,10 @@ struct ProtectStruct u16 beakBlastCharge:1; u16 quash:1; u16 shellTrap:1; + u16 maxGuarded:1; u16 silkTrapped:1; u16 eatMirrorHerb:1; + u16 activateOpportunist:2; // 2 - to copy stats. 1 - stats copied (do not repeat). 0 - no stats to copy u32 physicalDmg; u32 specialDmg; u8 physicalBattlerId; @@ -159,7 +170,7 @@ struct ProtectStruct struct SpecialStatus { - s32 dmg; + s32 shellBellDmg; s32 physicalDmg; s32 specialDmg; u8 physicalBattlerId; @@ -169,7 +180,6 @@ struct SpecialStatus u8 lightningRodRedirected:1; u8 restoredBattlerSprite: 1; u8 traced:1; - u8 ppNotAffectedByPressure:1; u8 faintedHasReplacement:1; u8 focusBanded:1; u8 focusSashed:1; @@ -222,11 +232,17 @@ struct SideTimer u8 tailwindBattlerId; u8 luckyChantTimer; u8 luckyChantBattlerId; + u8 steelsurgeAmount; // Timers below this point are not swapped by Court Change u8 followmeTimer; u8 followmeTarget:3; u8 followmePowder:1; // Rage powder, does not affect grass type pokemon. u8 retaliateTimer; + u8 damageNonTypesTimer; + u8 damageNonTypesType; + u8 rainbowTimer; + u8 seaOfFireTimer; + u8 swampTimer; }; struct FieldTimer @@ -282,6 +298,12 @@ struct AIPartyData // Opposing battlers - party mons. u8 count[NUM_BATTLE_SIDES]; }; +struct SwitchinCandidate +{ + struct BattlePokemon battleMon; + bool8 hypotheticalStatus; +}; + // Ai Data used when deciding which move to use, computed only once before each turn's start. struct AiLogicData { @@ -293,13 +315,15 @@ struct AiLogicData u8 hpPercents[MAX_BATTLERS_COUNT]; u16 partnerMove; u16 speedStats[MAX_BATTLERS_COUNT]; // Speed stats for all battles, calculated only once, same way as damages - u8 moveDmgResult[MAX_BATTLERS_COUNT][MAX_BATTLERS_COUNT][MAX_MON_MOVES]; // MOVE_POWER defines for GetMoveDamageResult ; attacker, target, moveIndex s32 simulatedDmg[MAX_BATTLERS_COUNT][MAX_BATTLERS_COUNT][MAX_MON_MOVES]; // attacker, target, moveIndex u8 effectiveness[MAX_BATTLERS_COUNT][MAX_BATTLERS_COUNT][MAX_MON_MOVES]; // attacker, target, moveIndex + u8 moveAccuracy[MAX_BATTLERS_COUNT][MAX_BATTLERS_COUNT][MAX_MON_MOVES]; // attacker, target, moveIndex u8 moveLimitations[MAX_BATTLERS_COUNT]; bool8 shouldSwitchMon; // Because all available moves have no/little effect. Each bit per battler. u8 monToSwitchId[MAX_BATTLERS_COUNT]; // ID of the mon to switch. bool8 weatherHasEffect; // The same as WEATHER_HAS_EFFECT. Stored here, so it's called only once. + u8 mostSuitableMonId; // Stores result of GetMostSuitableMonToSwitchInto, which decides which generic mon the AI would switch into if they decide to switch. This can be overruled by specific mons found in ShouldSwitch; the final resulting mon is stored in AI_monToSwitchIntoId. + struct SwitchinCandidate switchinCandidate; // Struct used for deciding which mon to switch to in battle_ai_switch_items.c }; struct AI_ThinkingStruct @@ -532,6 +556,22 @@ struct ZMoveData u8 splits[MAX_BATTLERS_COUNT]; }; +struct DynamaxData +{ + bool8 playerSelect; + u8 triggerSpriteId; + u8 toDynamax; // flags using gBitTable + bool8 alreadyDynamaxed[NUM_BATTLE_SIDES]; + bool8 dynamaxed[MAX_BATTLERS_COUNT]; + u8 dynamaxTurns[MAX_BATTLERS_COUNT]; + u8 usingMaxMove[MAX_BATTLERS_COUNT]; + u8 activeSplit; + u8 splits[MAX_BATTLERS_COUNT]; + u16 baseMove[MAX_BATTLERS_COUNT]; // base move of Max Move + u16 lastUsedBaseMove; + u16 levelUpHP; +}; + struct LostItem { u16 originalItem:15; @@ -638,6 +678,7 @@ struct BattleStruct struct MegaEvolutionData mega; struct UltraBurstData burst; struct ZMoveData zmove; + struct DynamaxData dynamax; const u8 *trainerSlideMsg; bool8 trainerSlideLowHpMsgDone; u8 introState; @@ -660,10 +701,10 @@ struct BattleStruct u16 changedSpecies[NUM_BATTLE_SIDES][PARTY_SIZE]; // For forms when multiple mons can change into the same pokemon. u8 quickClawBattlerId; struct LostItem itemLost[PARTY_SIZE]; // Player's team that had items consumed or stolen (two bytes per party member) - u8 blunderPolicy:1; // should blunder policy activate - u8 swapDamageCategory:1; // Photon Geyser, Shell Side Arm, Light That Burns the Sky u8 forcedSwitch:4; // For each battler u8 switchInAbilityPostponed:4; // To not activate against an empty field, each bit for battler + u8 blunderPolicy:1; // should blunder policy activate + u8 swapDamageCategory:1; // Photon Geyser, Shell Side Arm, Light That Burns the Sky u8 ballSpriteIds[2]; // item gfx, window gfx u8 appearedInBattle; // Bitfield to track which Pokemon appeared in battle. Used for Burmy's form change u8 skyDropTargets[MAX_BATTLERS_COUNT]; // For Sky Drop, to account for if multiple Pokemon use Sky Drop in a double battle. @@ -674,23 +715,32 @@ struct BattleStruct bool8 effectsBeforeUsingMoveDone:1; // Mega Evo and Focus Punch/Shell Trap effects. u8 targetsDone[MAX_BATTLERS_COUNT]; // Each battler as a bit. u16 overwrittenAbilities[MAX_BATTLERS_COUNT]; // abilities overwritten during battle (keep separate from battle history in case of switching) - bool8 allowedToChangeFormInWeather[PARTY_SIZE][2]; // For each party member and side, used by Ice Face. + bool8 allowedToChangeFormInWeather[PARTY_SIZE][NUM_BATTLE_SIDES]; // For each party member and side, used by Ice Face. u8 battleBondTransformed[NUM_BATTLE_SIDES]; // Bitfield for each party. u8 storedHealingWish:4; // Each battler as a bit. u8 storedLunarDance:4; // Each battler as a bit. + u8 bonusCritStages[MAX_BATTLERS_COUNT]; // G-Max Chi Strike boosts crit stages of allies. uq4_12_t supremeOverlordModifier[MAX_BATTLERS_COUNT]; u8 itemPartyIndex[MAX_BATTLERS_COUNT]; u8 itemMoveIndex[MAX_BATTLERS_COUNT]; - bool8 trainerSlideHalfHpMsgDone; u8 trainerSlideFirstCriticalHitMsgState:2; u8 trainerSlideFirstSuperEffectiveHitMsgState:2; u8 trainerSlideFirstSTABMoveMsgState:2; u8 trainerSlidePlayerMonUnaffectedMsgState:2; - bool8 trainerSlideMegaEvolutionMsgDone; - bool8 trainerSlideZMoveMsgDone; - bool8 trainerSlideBeforeFirstTurnMsgDone; + u8 trainerSlideHalfHpMsgDone:1; + u8 trainerSlideMegaEvolutionMsgDone:1; + u8 trainerSlideZMoveMsgDone:1; + u8 trainerSlideBeforeFirstTurnMsgDone:1; + u8 trainerSlideDynamaxMsgDone:1; + u8 pledgeMove:1; + u8 isSkyBattle:1; u32 aiDelayTimer; // Counts number of frames AI takes to choose an action. u32 aiDelayFrames; // Number of frames it took to choose an action. + u8 timesGotHit[NUM_BATTLE_SIDES][PARTY_SIZE]; + u8 enduredDamage; + u8 transformZeroToHero[NUM_BATTLE_SIDES]; + u8 intrepidSwordBoost[NUM_BATTLE_SIDES]; + u8 dauntlessShieldBoost[NUM_BATTLE_SIDES]; }; // The palaceFlags member of struct BattleStruct contains 1 flag per move to indicate which moves the AI should consider, @@ -698,9 +748,9 @@ struct BattleStruct // The assert below is to ensure palaceFlags is large enough to store these flags without overlap. STATIC_ASSERT(sizeof(((struct BattleStruct *)0)->palaceFlags) * 8 >= MAX_BATTLERS_COUNT + MAX_MON_MOVES, PalaceFlagsTooSmall) -#define F_DYNAMIC_TYPE_1 (1 << 6) -#define F_DYNAMIC_TYPE_2 (1 << 7) -#define DYNAMIC_TYPE_MASK (F_DYNAMIC_TYPE_1 - 1) +#define DYNAMIC_TYPE_MASK ((1 << 6) - 1) +#define F_DYNAMIC_TYPE_IGNORE_PHYSICALITY (1 << 6) // If set, the dynamic type's physicality won't be used for certain move effects. +#define F_DYNAMIC_TYPE_SET (1 << 7) // Set for all dynamic types to distinguish a dynamic type of Normal (0) from no dynamic type. #define GET_MOVE_TYPE(move, typeArg) \ { \ @@ -714,15 +764,17 @@ STATIC_ASSERT(sizeof(((struct BattleStruct *)0)->palaceFlags) * 8 >= MAX_BATTLER #define IS_MOVE_SPECIAL(move)(GetBattleMoveSplit(move) == SPLIT_SPECIAL) #define IS_MOVE_STATUS(move)(gBattleMoves[move].split == SPLIT_STATUS) -#define IS_MOVE_RECOIL(move)(gBattleMoves[move].effect == EFFECT_RECOIL_25 \ - || gBattleMoves[move].effect == EFFECT_RECOIL_IF_MISS \ - || gBattleMoves[move].effect == EFFECT_RECOIL_50 \ - || gBattleMoves[move].effect == EFFECT_RECOIL_33 \ - || gBattleMoves[move].effect == EFFECT_RECOIL_33_STATUS) +#define IS_EFFECT_RECOIL(effect)(effect == EFFECT_RECOIL_25 \ + || effect == EFFECT_RECOIL_IF_MISS \ + || effect == EFFECT_RECOIL_50 \ + || effect == EFFECT_RECOIL_33 \ + || effect == EFFECT_RECOIL_33_STATUS) + +#define IS_MOVE_RECOIL(move)(IS_EFFECT_RECOIL(gBattleMoves[move].effect)) #define BATTLER_MAX_HP(battlerId)(gBattleMons[battlerId].hp == gBattleMons[battlerId].maxHP) -#define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0)) -#define BATTLER_DAMAGED(battlerId) ((gSpecialStatuses[battlerId].physicalDmg != 0 || gSpecialStatuses[battlerId].specialDmg != 0)) +#define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0) || (gBattleStruct->enduredDamage & gBitTable[gBattlerTarget])) +#define BATTLER_TURN_DAMAGED(battlerId) ((gSpecialStatuses[battlerId].physicalDmg != 0 || gSpecialStatuses[battlerId].specialDmg != 0) || (gBattleStruct->enduredDamage & gBitTable[battler])) #define IS_BATTLER_OF_TYPE(battlerId, type)((GetBattlerType(battlerId, 0) == type || GetBattlerType(battlerId, 1) == type || (GetBattlerType(battlerId, 2) != TYPE_MYSTERY && GetBattlerType(battlerId, 2) == type))) @@ -903,7 +955,7 @@ struct MonSpritesGfx u16 *buffer; }; -struct TotemBoost +struct QueuedStatBoost { u8 stats; // bitfield for each battle stat that is set if the stat changes s8 statChanges[NUM_BATTLE_STATS - 1]; // highest bit being set decreases the stat @@ -922,10 +974,10 @@ extern u16 gBattle_WIN0H; extern u16 gBattle_WIN0V; extern u16 gBattle_WIN1H; extern u16 gBattle_WIN1V; -extern u8 gDisplayedStringBattle[400]; +extern u8 gDisplayedStringBattle[425]; extern u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT]; extern u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT]; -extern u8 gBattleTextBuff3[30]; //to handle stupidly large z move names +extern u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT + 13]; //to handle stupidly large z move names extern u32 gBattleTypeFlags; extern u8 gBattleTerrain; extern u32 gUnusedFirstBattleVar1; @@ -948,7 +1000,7 @@ extern u16 gChosenMove; extern u16 gCalledMove; extern s32 gBattleMoveDamage; extern s32 gHpDealt; -extern s32 gTakenDmg[MAX_BATTLERS_COUNT]; +extern s32 gBideDmg[MAX_BATTLERS_COUNT]; extern u16 gLastUsedItem; extern u16 gLastUsedAbility; extern u8 gBattlerAttacker; @@ -974,7 +1026,7 @@ extern u8 gLastHitBy[MAX_BATTLERS_COUNT]; extern u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT]; extern u16 gMoveResultFlags; extern u32 gHitMarker; -extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT]; +extern u8 gBideTarget[MAX_BATTLERS_COUNT]; extern u8 gUnusedFirstBattleVar2; extern u32 gSideStatuses[NUM_BATTLE_SIDES]; extern struct SideTimer gSideTimers[NUM_BATTLE_SIDES]; @@ -1015,7 +1067,7 @@ extern u32 gFieldStatuses; extern struct FieldTimer gFieldTimers; extern u8 gBattlerAbility; extern u16 gPartnerSpriteId; -extern struct TotemBoost gTotemBoosts[MAX_BATTLERS_COUNT]; +extern struct QueuedStatBoost gQueuedStatBoosts[MAX_BATTLERS_COUNT]; extern void (*gPreBattleCallback1)(void); extern void (*gBattleMainFunc)(void); diff --git a/include/battle_ai_main.h b/include/battle_ai_main.h index 8bb2293e9b..24bc6943aa 100644 --- a/include/battle_ai_main.h +++ b/include/battle_ai_main.h @@ -1,21 +1,45 @@ #ifndef GUARD_BATTLE_AI_MAIN_H #define GUARD_BATTLE_AI_MAIN_H -// return values for BattleAI_ChooseMoveOrAction +// return vals for BattleAI_ChooseMoveOrAction // 0 - 3 are move idx #define AI_CHOICE_FLEE 4 #define AI_CHOICE_WATCH 5 #define AI_CHOICE_SWITCH 7 +#include "test_runner.h" + +// Logs for debugging AI tests. +#define SET_SCORE(battler, movesetIndex, val) \ + do \ + { \ + TestRunner_Battle_AISetScore(__FILE__, __LINE__, battler, movesetIndex, val); \ + AI_THINKING_STRUCT->score[movesetIndex] = val; \ + } while (0) \ + +#define ADJUST_SCORE(val) \ + do \ + { \ + TestRunner_Battle_AIAdjustScore(__FILE__, __LINE__, sBattler_AI, AI_THINKING_STRUCT->movesetIndex, val); \ + score += val; \ + } while (0) \ + +#define ADJUST_SCORE_PTR(val) \ + do \ + { \ + TestRunner_Battle_AIAdjustScore(__FILE__, __LINE__, sBattler_AI, AI_THINKING_STRUCT->movesetIndex, val); \ + (*score) += val; \ + } while (0) \ + #define RETURN_SCORE_PLUS(val) \ { \ - score += val; \ + ADJUST_SCORE(val); \ return score; \ } #define RETURN_SCORE_MINUS(val) \ { \ - score -= val; \ + ADJUST_SCORE(-val); \ return score; \ } diff --git a/include/battle_ai_switch_items.h b/include/battle_ai_switch_items.h index 9a7e5f7e74..8c22baa312 100644 --- a/include/battle_ai_switch_items.h +++ b/include/battle_ai_switch_items.h @@ -3,7 +3,7 @@ void GetAIPartyIndexes(u32 battlerId, s32 *firstId, s32 *lastId); void AI_TrySwitchOrUseItem(u32 battler); -u8 GetMostSuitableMonToSwitchInto(u32 battler); +u8 GetMostSuitableMonToSwitchInto(u32 battler, bool32 switchAfterMonKOd); bool32 ShouldSwitch(u32 battler); #endif // GUARD_BATTLE_AI_SWITCH_ITEMS_H diff --git a/include/battle_ai_util.h b/include/battle_ai_util.h index b91865a08a..9b30d103e4 100644 --- a/include/battle_ai_util.h +++ b/include/battle_ai_util.h @@ -34,9 +34,8 @@ u32 AI_WhoStrikesFirst(u32 battlerAI, u32 battler2, u32 moveConsidered); bool32 CanTargetFaintAi(u32 battlerDef, u32 battlerAtk); bool32 CanTargetMoveFaintAi(u32 move, u32 battlerDef, u32 battlerAtk, u32 nHits); bool32 CanTargetFaintAiWithMod(u32 battlerDef, u32 battlerAtk, s32 hpMod, s32 dmgMod); -s32 AI_GetAbility(u32 battlerId); -u32 AI_GetHoldEffect(u32 battlerId); -u32 AI_GetMoveAccuracy(u32 battlerAtk, u32 battlerDef, u32 move); +s32 AI_DecideKnownAbilityForTurn(u32 battlerId); +u32 AI_DecideHoldEffectForTurn(u32 battlerId); bool32 DoesBattlerIgnoreAbilityChecks(u32 atkAbility, u32 move); u32 AI_GetWeather(struct AiLogicData *aiData); bool32 CanAIFaintTarget(u32 battlerAtk, u32 battlerDef, u32 numHits); @@ -65,6 +64,7 @@ bool32 AI_IsAbilityOnSide(u32 battlerId, u32 ability); bool32 AI_MoveMakesContact(u32 ability, u32 holdEffect, u32 move); u32 AI_GetBattlerMoveTargetType(u32 battlerId, u32 move); bool32 ShouldUseZMove(u32 battlerAtk, u32 battlerDef, u32 chosenMove); +u32 AI_CalcSecondaryEffectChance(u32 battler, u32 secondaryEffectChance); // stat stage checks bool32 AnyStatIsRaised(u32 battlerId); @@ -85,11 +85,13 @@ bool32 ShouldLowerEvasion(u32 battlerAtk, u32 battlerDef, u32 defAbility); // move checks bool32 IsAffectedByPowder(u32 battler, u32 ability, u32 holdEffect); bool32 MovesWithSplitUnusable(u32 attacker, u32 target, u32 split); +u32 AI_WhichMoveBetter(u32 move1, u32 move2, u32 battlerAtk, u32 battlerDef, s32 noOfHitsToKo); s32 AI_CalcDamageSaveBattlers(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectiveness, bool32 considerZPower); s32 AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectiveness, bool32 considerZPower, u32 weather); +bool32 AI_IsDamagedByRecoil(u32 battler); u32 GetNoOfHitsToKO(u32 dmg, s32 hp); -void SetMoveDamageResult(u32 battlerAtk, u16 *moves); -u32 GetMoveDamageResult(u32 battlerAtk, u32 battlerDef, u32 moveIndex); +u32 GetNoOfHitsToKOBattlerDmg(u32 dmg, u32 battlerDef); +u32 GetNoOfHitsToKOBattler(u32 battlerAtk, u32 battlerDef, u32 moveIndex); u32 GetCurrDamageHpPercent(u32 battlerAtk, u32 battlerDef); uq4_12_t AI_GetTypeEffectiveness(u32 move, u32 battlerAtk, u32 battlerDef); u32 AI_GetMoveEffectiveness(u32 move, u32 battlerAtk, u32 battlerDef); @@ -108,9 +110,8 @@ bool32 IsStatLoweringMoveEffect(u32 moveEffect); bool32 IsMoveRedirectionPrevented(u32 move, u32 atkAbility); bool32 IsMoveEncouragedToHit(u32 battlerAtk, u32 battlerDef, u32 move); bool32 IsHazardMoveEffect(u32 moveEffect); -bool32 MoveCallsOtherMove(u32 move); -bool32 MoveRequiresRecharging(u32 move); bool32 IsEncoreEncouragedEffect(u32 moveEffect); +bool32 IsChargingMove(u32 battlerAtk, u32 effect); void ProtectChecks(u32 battlerAtk, u32 battlerDef, u32 move, u32 predictedMove, s32 *score); bool32 ShouldSetSandstorm(u32 battler, u32 ability, u32 holdEffect); bool32 ShouldSetHail(u32 battler, u32 ability, u32 holdEffect); @@ -126,10 +127,10 @@ bool32 ShouldFakeOut(u32 battlerAtk, u32 battlerDef, u32 move); bool32 HasThawingMove(u32 battler); bool32 IsStatRaisingEffect(u32 effect); bool32 IsStatLoweringEffect(u32 effect); -bool32 IsStatRaisingEffect(u32 effect); bool32 IsAttackBoostMoveEffect(u32 effect); bool32 IsUngroundingEffect(u32 effect); bool32 IsSemiInvulnerable(u32 battlerDef, u32 move); +bool32 HasSubstituteIgnoringMove(u32 battler); bool32 HasSoundMove(u32 battler); bool32 HasHighCritRatioMove(u32 battler); bool32 HasMagicCoatAffectedMove(u32 battler); @@ -164,7 +165,7 @@ bool32 IsTargetingPartner(u32 battlerAtk, u32 battlerDef); bool32 DoesPartnerHaveSameMoveEffect(u32 battlerAtkPartner, u32 battlerDef, u32 move, u32 partnerMove); bool32 PartnerHasSameMoveEffectWithoutTarget(u32 battlerAtkPartner, u32 move, u32 partnerMove); bool32 PartnerMoveEffectIsStatusSameTarget(u32 battlerAtkPartner, u32 battlerDef, u32 partnerMove); -bool32 PartnerMoveEffectIsWeather(u32 battlerAtkPartner, u32 partnerMove); +bool32 IsMoveEffectWeather(u32 move); bool32 PartnerMoveEffectIsTerrain(u32 battlerAtkPartner, u32 partnerMove); bool32 PartnerMoveIs(u32 battlerAtkPartner, u32 partnerMove, u32 moveCheck); bool32 PartnerMoveIsSameAsAttacker(u32 battlerAtkPartner, u32 battlerDef, u32 move, u32 partnerMove); @@ -174,7 +175,6 @@ bool32 ShouldUseWishAromatherapy(u32 battlerAtk, u32 battlerDef, u32 move); // party logic struct BattlePokemon *AllocSaveBattleMons(void); void FreeRestoreBattleMons(struct BattlePokemon *savedBattleMons); -s32 AI_CalcPartyMonBestMoveDamage(u32 battlerAtk, u32 battlerDef, struct Pokemon *attackerMon, struct Pokemon *targetMon); s32 CountUsablePartyMons(u32 battlerId); bool32 IsPartyFullyHealedExceptBattler(u32 battler); bool32 PartyHasMoveSplit(u32 battlerId, u32 split); @@ -189,4 +189,6 @@ void IncreaseSleepScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score); void IncreaseConfusionScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score); void IncreaseFrostbiteScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score); +s32 AI_CalcPartyMonDamage(u32 move, u32 battlerAtk, u32 battlerDef, struct BattlePokemon switchinCandidate, bool8 isPartyMonAttacker); + #endif //GUARD_BATTLE_AI_UTIL_H diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 4e3ab7eb05..5f3bd8316e 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -98,8 +98,9 @@ enum { // Special return values in gBattleBufferB from Battle Controller functions. #define RET_VALUE_LEVELED_UP 11 -#define RET_MEGA_EVOLUTION 0x80 -#define RET_ULTRA_BURST 0x70 +#define RET_MEGA_EVOLUTION (1 << 7) +#define RET_ULTRA_BURST (1 << 6) +#define RET_DYNAMAX (1 << 5) struct UnusedControllerStruct { @@ -250,7 +251,7 @@ void BtlController_EmitDrawPartyStatusSummary(u32 battler, u32 bufferId, struct void BtlController_EmitHidePartyStatusSummary(u32 battler, u32 bufferId); void BtlController_EmitEndBounceEffect(u32 battler, u32 bufferId); void BtlController_EmitSpriteInvisibility(u32 battler, u32 bufferId, bool8 isInvisible); -void BtlController_EmitBattleAnimation(u32 battler, u32 bufferId, u8 animationId, u16 argument); +void BtlController_EmitBattleAnimation(u32 battler, u32 bufferId, u8 animationId, struct DisableStruct* disableStructPtr, u16 argument); void BtlController_EmitLinkStandbyMsg(u32 battler, u32 bufferId, u8 mode, bool32 record); void BtlController_EmitResetActionMoveSelection(u32 battler, u32 bufferId, u8 caseId); void BtlController_EmitEndLinkBattle(u32 battler, u32 bufferId, u8 battleOutcome); @@ -304,6 +305,7 @@ void BtlController_HandleBattleAnimation(u32 battler, bool32 ignoreSE, bool32 up // player controller void SetControllerToPlayer(u32 battler); void SetBattleEndCallbacks(u32 battler); +void PlayerHandleBallThrowAnim(u32 battler); void PlayerHandleExpUpdate(u32 battler); u32 LinkPlayerGetTrainerPicId(u32 multiplayerId); void CB2_SetUpReshowBattleScreenAfterMenu(void); diff --git a/include/battle_dynamax.h b/include/battle_dynamax.h new file mode 100644 index 0000000000..18f0b1b3e3 --- /dev/null +++ b/include/battle_dynamax.h @@ -0,0 +1,93 @@ +#ifndef GUARD_BATTLE_DYNAMAX_H +#define GUARD_BATTLE_DYNAMAX_H + +#define DYNAMAX_TURNS_COUNT 3 + +enum MaxMoveEffect +{ + MAX_EFFECT_NONE, + MAX_EFFECT_RAISE_TEAM_ATTACK, + MAX_EFFECT_RAISE_TEAM_DEFENSE, + MAX_EFFECT_RAISE_TEAM_SPEED, + MAX_EFFECT_RAISE_TEAM_SP_ATK, + MAX_EFFECT_RAISE_TEAM_SP_DEF, + MAX_EFFECT_LOWER_ATTACK, + MAX_EFFECT_LOWER_DEFENSE, + MAX_EFFECT_LOWER_SPEED, + MAX_EFFECT_LOWER_SP_ATK, + MAX_EFFECT_LOWER_SP_DEF, + MAX_EFFECT_SUN, + MAX_EFFECT_RAIN, + MAX_EFFECT_SANDSTORM, + MAX_EFFECT_HAIL, + MAX_EFFECT_MISTY_TERRAIN, + MAX_EFFECT_GRASSY_TERRAIN, + MAX_EFFECT_ELECTRIC_TERRAIN, + MAX_EFFECT_PSYCHIC_TERRAIN, + MAX_EFFECT_VINE_LASH, + MAX_EFFECT_WILDFIRE, + MAX_EFFECT_CANNONADE, + MAX_EFFECT_EFFECT_SPORE_FOES, + MAX_EFFECT_PARALYZE_FOES, + MAX_EFFECT_CONFUSE_FOES_PAY_DAY, + MAX_EFFECT_CRIT_PLUS, + MAX_EFFECT_MEAN_LOOK, + MAX_EFFECT_AURORA_VEIL, + MAX_EFFECT_INFATUATE_FOES, + MAX_EFFECT_RECYCLE_BERRIES, + MAX_EFFECT_POISON_FOES, + MAX_EFFECT_STEALTH_ROCK, + MAX_EFFECT_DEFOG, + MAX_EFFECT_POISON_PARALYZE_FOES, + MAX_EFFECT_HEAL_TEAM, + MAX_EFFECT_SPITE, + MAX_EFFECT_GRAVITY, + MAX_EFFECT_VOLCALITH, + MAX_EFFECT_SANDBLAST_FOES, + MAX_EFFECT_YAWN_FOE, + MAX_EFFECT_LOWER_EVASIVENESS_FOES, + MAX_EFFECT_AROMATHERAPY, + MAX_EFFECT_CONFUSE_FOES, + MAX_EFFECT_STEELSURGE, + MAX_EFFECT_TORMENT_FOES, + MAX_EFFECT_LOWER_SPEED_2_FOES, + MAX_EFFECT_FIRE_SPIN_FOES, + MAX_EFFECT_FIXED_POWER, + MAX_EFFECT_BYPASS_PROTECT, +}; + +bool32 IsDynamaxed(u16 battlerId); +bool32 CanDynamax(u16 battlerId); +bool32 IsGigantamaxed(u16 battlerId); +void ApplyDynamaxHPMultiplier(u32 battler, struct Pokemon* mon); +void PrepareBattlerForDynamax(u16 battlerId); +u16 GetNonDynamaxHP(u16 battlerId); +u16 GetNonDynamaxMaxHP(u32 battlerId); +void UndoDynamax(u16 battlerId); +bool32 IsMoveBlockedByMaxGuard(u16 move); +bool32 IsMoveBlockedByDynamax(u16 move); + +bool32 ShouldUseMaxMove(u16 battlerId, u16 baseMove); +u16 GetMaxMove(u16 battlerId, u16 baseMove); +u8 GetMaxMovePower(u16 move); +bool32 IsMaxMove(u16 move); +const u8 *GetMaxMoveName(u16 move); +void ChooseDamageNonTypesString(u8 type); + +void BS_UpdateDynamax(void); +void BS_SetMaxMoveEffect(void); +void BS_SetSteelsurge(void); +void BS_TrySetStatus1(void); +void BS_TrySetStatus2(void); +void BS_DamageNonTypes(void); +void BS_HealOneSixth(void); +void BS_TryRecycleBerry(void); +void BS_JumpIfDynamaxed(void); + +void ChangeDynamaxTriggerSprite(u8 spriteId, u8 animId); +void CreateDynamaxTriggerSprite(u8, bool8); +void HideDynamaxTriggerSprite(void); +bool32 IsDynamaxTriggerSpriteActive(void); +void DestroyDynamaxTriggerSprite(void); + +#endif diff --git a/include/battle_interface.h b/include/battle_interface.h index 2c8747db02..af8f0dc117 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -54,12 +54,15 @@ enum #define TAG_OMEGA_INDICATOR_TILE 0xD77A #define TAG_ZMOVE_TRIGGER_TILE 0xD77B #define TAG_BURST_TRIGGER_TILE 0xD77C +#define TAG_DYNAMAX_TRIGGER_TILE 0xD77D +#define TAG_DYNAMAX_INDICATOR_TILE 0xD77E #define TAG_MEGA_TRIGGER_PAL 0xD777 #define TAG_MEGA_INDICATOR_PAL 0xD778 -#define TAG_ALPHA_OMEGA_INDICATOR_PAL 0xD779 // Alpha and Omega indicators use the same palette as each of them only uses 4 different colors. +#define TAG_MISC_INDICATOR_PAL 0xD779 // Alpha, Omega, and Dynamax indicators use the same palette as each of them only uses 4 different colors. #define TAG_ZMOVE_TRIGGER_PAL 0xD77B #define TAG_BURST_TRIGGER_PAL 0xD77C +#define TAG_DYNAMAX_TRIGGER_PAL 0xD77D enum { @@ -86,6 +89,7 @@ void SetHealthboxSpriteVisible(u8 healthboxSpriteId); void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly); void UpdateOamPriorityInAllHealthboxes(u8 priority, bool32 hideHpBoxes); void InitBattlerHealthboxCoords(u8 battler); +void GetBattlerHealthboxCoords(u8 battler, s16 *x, s16 *y); void UpdateHpTextInHealthbox(u32 healthboxSpriteId, u32 maxOrCurrent, s16 currHp, s16 maxHp); void SwapHpBarsWithHpText(void); void ChangeMegaTriggerSprite(u8 spriteId, u8 animId); diff --git a/include/battle_main.h b/include/battle_main.h index 91e9fd90eb..9bb9bbdfb0 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -54,7 +54,7 @@ void AnimSetCenterToCornerVecX(struct Sprite *sprite); void BeginBattleIntroDummy(void); void BeginBattleIntro(void); void SwitchInClearSetData(u32 battler); -void FaintClearSetData(u32 battler); +const u8* FaintClearSetData(u32 battler); void BattleTurnPassed(void); u8 IsRunningFromBattleImpossible(u32 battler); void SwitchPartyOrder(u32 battlerId); diff --git a/include/battle_message.h b/include/battle_message.h index e01c916c3c..338712606a 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -238,6 +238,7 @@ enum TRAINER_SLIDE_MEGA_EVOLUTION, TRAINER_SLIDE_Z_MOVE, TRAINER_SLIDE_BEFORE_FIRST_TURN, + TRAINER_SLIDE_DYNAMAX, }; void BufferStringBattle(u16 stringID, u32 battler); diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index ed08b5eb4f..a4e8a166ed 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -16,11 +16,18 @@ struct StatFractions u8 divisor; }; +struct PickupItem +{ + u16 itemId; + u8 percentage[10]; +}; + s32 CalcCritChanceStageArgs(u32 battlerAtk, u32 battlerDef, u32 move, bool32 recordAbility, u32 abilityAtk, u32 abilityDef, u32 holdEffectAtk); s32 CalcCritChanceStage(u32 battlerAtk, u32 battlerDef, u32 move, bool32 recordAbility); s32 GetCritHitChance(s32 critChanceIndex); u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u32 defAbility, u32 atkHoldEffect, u32 defHoldEffect); u8 GetBattlerTurnOrderNum(u8 battlerId); +bool32 NoAliveMonsForPlayer(void); bool32 NoAliveMonsForEitherParty(void); void SetMoveEffect(bool32 primary, u32 certain); bool32 CanBattlerSwitch(u32 battlerId); @@ -46,6 +53,7 @@ void StealTargetItem(u8 battlerStealer, u8 battlerItem); u8 GetCatchingBattler(void); u32 GetHighestStatId(u32 battlerId); bool32 ProteanTryChangeType(u32 battler, u32 ability, u32 move, u32 moveType); +bool32 IsMoveNotAllowedInSkyBattles(u32 move); bool32 DoSwitchInAbilitiesItems(u32 battlerId); u8 GetFirstFaintedPartyIndex(u8 battlerId); bool32 IsMoveAffectedByParentalBond(u32 move, u32 battler); diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 335aafb589..4790998cc4 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -1,6 +1,7 @@ #ifndef GUARD_BATTLE_SCRIPTS_H #define GUARD_BATTLE_SCRIPTS_H +extern const u8 BattleScript_OpportunistCopyStatChange[]; extern const u8 BattleScript_MirrorHerbCopyStatChange[]; extern const u8 BattleScript_MirrorHerbCopyStatChangeEnd2[]; extern const u8 BattleScript_NotAffected[]; @@ -458,6 +459,7 @@ extern const u8 BattleScript_RuinAbilityActivates[]; extern const u8 BattleScript_CudChewActivates[]; extern const u8 BattleScript_SupremeOverlordActivates[]; extern const u8 BattleScript_CostarActivates[]; +extern const u8 BattleScript_ZeroToHeroActivates[]; extern const u8 BattleScript_ToxicDebrisActivates[]; extern const u8 BattleScript_EarthEaterActivates[]; extern const u8 BattleScript_MimicryActivates_End3[]; @@ -467,6 +469,7 @@ extern const u8 BattleScript_DampPreventsAftermath[]; extern const u8 BattleScript_HealingWishActivates[]; extern const u8 BattleScript_LunarDanceActivates[]; extern const u8 BattleScript_ShellTrapSetUp[]; +extern const u8 BattleScript_StealthRockActivates[]; extern const u8 BattleScript_CouldntFullyProtect[]; extern const u8 BattleScript_MoveEffectStockpileWoreOff[]; extern const u8 BattleScript_StealthRockActivates[]; @@ -478,6 +481,15 @@ extern const u8 BattleScript_UltraBurst[]; extern const u8 BattleScript_SelectingNotAllowedCurrentMove[]; extern const u8 BattleScript_SelectingNotAllowedCurrentMoveInPalace[]; extern const u8 BattleScript_SaltCureExtraDamage[]; +extern const u8 BattleScript_SyrupBombEndTurn[]; +extern const u8 BattleScript_SyrupBombActivates[]; +extern const u8 BattleScript_EffectCombinedPledge_Water[]; +extern const u8 BattleScript_EffectCombinedPledge_Fire[]; +extern const u8 BattleScript_EffectCombinedPledge_Grass[]; +extern const u8 BattleScript_TheRainbowDisappeared[]; +extern const u8 BattleScript_HurtByTheSeaOfFire[]; +extern const u8 BattleScript_TheSeaOfFireDisappeared[]; +extern const u8 BattleScript_TheSwampDisappeared[]; // zmoves extern const u8 BattleScript_ZMoveActivateDamaging[]; @@ -488,4 +500,33 @@ extern const u8 BattleScript_StatUpZMove[]; extern const u8 BattleScript_HealReplacementZMove[]; extern const u8 BattleScript_EffectExtremeEvoboost[]; +// max moves +extern const u8 BattleScript_EffectRaiseStatAllies[]; +extern const u8 BattleScript_EffectLowerStatFoes[]; +extern const u8 BattleScript_EffectSetWeather[]; +extern const u8 BattleScript_EffectSetTerrain[]; +extern const u8 BattleScript_EffectStonesurge[]; +extern const u8 BattleScript_EffectSteelsurge[]; +extern const u8 BattleScript_SteelsurgeFree[]; +extern const u8 BattleScript_SteelsurgeDefog[]; +extern const u8 BattleScript_DamageNonTypesStarts[]; +extern const u8 BattleScript_DamageNonTypesContinues[]; +extern const u8 BattleScript_DefogTryHazards[]; +extern const u8 BattleScript_EffectAuroraVeilSuccess[]; +extern const u8 BattleScript_EffectGravitySuccess[]; +extern const u8 BattleScript_EffectYawnSuccess[]; +extern const u8 BattleScript_EffectTryReducePP[]; +extern const u8 BattleScript_EffectStatus1Foes[]; +extern const u8 BattleScript_EffectStatus2Foes[]; +extern const u8 BattleScript_TormentEnds[]; +extern const u8 BattleScript_EffectRaiseCritAlliesAnim[]; +extern const u8 BattleScript_EffectHealOneSixthAllies[]; +extern const u8 BattleScript_EffectCureStatusAllies[]; +extern const u8 BattleScript_EffectRecycleBerriesAllies[]; + +// dynamax and max raids +extern const u8 BattleScript_DynamaxBegins[]; +extern const u8 BattleScript_DynamaxEnds[]; +extern const u8 BattleScript_MoveBlockedByDynamax[]; + #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/battle_setup.h b/include/battle_setup.h index 96aeb4b761..a2009eea41 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -70,5 +70,8 @@ u16 CountBattledRematchTeams(u16 trainerId); void DoStandardWildBattle_Debug(void); void BattleSetup_StartTrainerBattle_Debug(void); +s32 TrainerIdToRematchTableId(const struct RematchTrainer *table, u16 trainerId); +s32 FirstBattleTrainerIdToRematchTableId(const struct RematchTrainer *table, u16 trainerId); +u16 GetRematchTrainerIdFromTable(const struct RematchTrainer *table, u16 firstBattleTrainerId); #endif // GUARD_BATTLE_SETUP_H diff --git a/include/battle_util.h b/include/battle_util.h index 3b72c8e59e..f58a5a1543 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -15,7 +15,7 @@ #define MOVE_LIMITATION_BELCH (1 << 11) #define MOVE_LIMITATION_THROAT_CHOP (1 << 12) #define MOVE_LIMITATION_STUFF_CHEEKS (1 << 13) -#define MOVE_LIMITATION_GIGATON_HAMMER (1 << 14) +#define MOVE_LIMITATION_CANT_USE_TWICE (1 << 14) #define MOVE_LIMITATION_PLACEHOLDER (1 << 15) #define MOVE_LIMITATIONS_ALL 0xFFFF @@ -33,14 +33,15 @@ #define ABILITYEFFECT_TRACE2 10 #define ABILITYEFFECT_MOVE_END_OTHER 11 #define ABILITYEFFECT_NEUTRALIZINGGAS 12 -#define ABILITYEFFECT_FIELD_SPORT 13 // Only used if B_SPORT_TURNS < GEN_6 +#define ABILITYEFFECT_FIELD_SPORT 13 // Only used if B_SPORT_TURNS >= GEN_6 #define ABILITYEFFECT_ON_WEATHER 14 #define ABILITYEFFECT_ON_TERRAIN 15 #define ABILITYEFFECT_SWITCH_IN_TERRAIN 16 #define ABILITYEFFECT_SWITCH_IN_WEATHER 17 +#define ABILITYEFFECT_OPPORTUNIST 18 // Special cases -#define ABILITYEFFECT_MUD_SPORT 252 // Only used if B_SPORT_TURNS < GEN_6 -#define ABILITYEFFECT_WATER_SPORT 253 // Only used if B_SPORT_TURNS < GEN_6 +#define ABILITYEFFECT_MUD_SPORT 252 // Only used if B_SPORT_TURNS >= GEN_6 +#define ABILITYEFFECT_WATER_SPORT 253 // Only used if B_SPORT_TURNS >= GEN_6 // For the first argument of ItemBattleEffects, to deteremine which block of item effects to try #define ITEMEFFECT_ON_SWITCH_IN 0 @@ -114,13 +115,10 @@ void HandleAction_TryFinish(void); void HandleAction_NothingIsFainted(void); void HandleAction_ActionFinished(void); u8 GetBattlerForBattleScript(u8 caseId); -void PressurePPLose(u8 target, u8 attacker, u16 move); -void PressurePPLoseOnUsingPerishSong(u8 attacker); -void PressurePPLoseOnUsingImprison(u8 attacker); bool32 IsBattlerMarkedForControllerExec(u32 battler); void MarkBattlerForControllerExec(u32 battler); void MarkBattlerReceivedLinkData(u32 battler); -void CancelMultiTurnMoves(u32 battler); +const u8* CancelMultiTurnMoves(u32 battler); bool32 WasUnableToUseMove(u32 battler); void PrepareStringBattle(u16 stringId, u32 battler); void ResetSentPokesToOpponentValue(void); @@ -147,6 +145,7 @@ bool32 TryChangeBattleWeather(u32 battler, u32 weatherEnumId, bool32 viaAbility) u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 moveArg); bool32 TryPrimalReversion(u32 battler); bool32 IsNeutralizingGasOnField(void); +bool32 IsMoldBreakerTypeAbility(u32 ability); u32 GetBattlerAbility(u32 battler); u32 IsAbilityOnSide(u32 battler, u32 ability); u32 IsAbilityOnOpposingSide(u32 battler, u32 ability); @@ -158,7 +157,7 @@ bool32 CanBattlerEscape(u32 battler); // no ability check void BattleScriptExecute(const u8 *BS_ptr); void BattleScriptPushCursorAndCallback(const u8 *BS_ptr); u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn); -void ClearFuryCutterDestinyBondGrudge(u32 battler); +void ClearVariousBattlerFlags(u32 battler); void HandleAction_RunBattleScript(void); u32 SetRandomTarget(u32 battler); u32 GetMoveTarget(u16 move, u8 setTarget); @@ -240,7 +239,7 @@ bool32 CanBeFrozen(u32 battler); bool32 CanGetFrostbite(u32 battler); bool32 CanBeConfused(u32 battler); bool32 IsBattlerTerrainAffected(u32 battler, u32 terrainFlag); -u32 GetBattlerFriendshipScore(u32 battler); +u32 GetBattlerAffectionHearts(u32 battler); u32 CountBattlerStatIncreases(u32 battler, bool32 countEvasionAcc); bool32 IsMyceliumMightOnField(void); bool32 ChangeTypeBasedOnTerrain(u32 battler); @@ -248,7 +247,9 @@ void RemoveConfusionStatus(u32 battler); u8 GetBattlerGender(u32 battler); bool32 AreBattlersOfOppositeGender(u32 battler1, u32 battler2); bool32 AreBattlersOfSameGender(u32 battler1, u32 battler2); -u32 CalcSecondaryEffectChance(u32 battler, u8 secondaryEffectChance); +u32 CalcSecondaryEffectChance(u32 battler, u8 secondaryEffectChance, u16 moveEffect); u8 GetBattlerType(u32 battler, u8 typeIndex); +bool8 CanMonParticipateInSkyBattle(struct Pokemon *mon); +bool8 IsMonBannedFromSkyBattles(u16 species); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/config.h b/include/config.h index 5115a9936e..8a6e990a5d 100644 --- a/include/config.h +++ b/include/config.h @@ -64,16 +64,20 @@ #define ITEM_EXPANSION // Generation constants used in configs to define behavior -#define GEN_3 0 -#define GEN_4 1 -#define GEN_5 2 -#define GEN_6 3 -#define GEN_7 4 -#define GEN_8 5 -#define GEN_9 6 +#define GEN_1 0 +#define GEN_2 1 +#define GEN_3 2 +#define GEN_4 3 +#define GEN_5 4 +#define GEN_6 5 +#define GEN_7 6 +#define GEN_8 7 +#define GEN_9 8 #define GEN_LATEST GEN_9 // General settings -#define EXPANSION_INTRO TRUE // If TRUE, a custom RHH intro will play after the vanilla copyright screen. +#define EXPANSION_INTRO TRUE // If TRUE, a custom RHH intro will play after the vanilla copyright screen. +#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. #endif // GUARD_CONFIG_H diff --git a/include/config/battle.h b/include/config/battle.h index 2278d7fea5..90c8728dde 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -8,6 +8,8 @@ #define B_CONFUSION_SELF_DMG_CHANCE GEN_LATEST // In Gen7+, confusion has a 33.3% of self-damage, instead of 50%. #define B_MULTI_HIT_CHANCE GEN_LATEST // In Gen5+, multi-hit moves have different %. See Cmd_setmultihitcounter for values. #define B_WHITEOUT_MONEY GEN_LATEST // In Gen4+, the amount of money lost by losing a battle is determined by the amount of badges earned. Previously, it would cut the current money by half. (While this change was also in FRLG, for the sake of simplicity, setting this to GEN_3 will result in RSE behavior.) +#define B_LIGHT_BALL_ATTACK_BOOST GEN_LATEST // In Gen4+, Light Ball doubles the power of physical moves in addition to special moves. +#define B_SANDSTORM_SPDEF_BOOST GEN_LATEST // In Gen4+, Sandstorm weather multiplies the Sp. Defense of Rock-type Pokémon by x1.5. // Experience settings #define B_EXP_CATCH GEN_LATEST // In Gen6+, Pokémon get experience from catching. @@ -23,7 +25,7 @@ #define B_RECALCULATE_STATS GEN_LATEST // In Gen5+, the stats of the Pokémon who participate in battle are recalculated at the end of each battle. // Damage settings -#define B_BURN_DAMAGE GEN_LATEST // In Gen7+, burn damage is 1/16th of max HP instead of 1/8th. +#define B_BURN_DAMAGE GEN_LATEST // In Gen7+, burn damage is 1/16th of max HP instead of 1/8th. Also applies to Frostbite. #define B_BURN_FACADE_DMG GEN_LATEST // In Gen6+, burn's effect of lowering the Attack stat no longer applies to Facade. #define B_BINDING_DAMAGE GEN_LATEST // In Gen6+, binding damage is 1/8 of max HP instead of 1/16. (With Binding Band, 1/6 and 1/8 respectively.) #define B_PSYWAVE_DMG GEN_LATEST // Psywave's damage formula. See Cmd_psywavedamageeffect. @@ -54,7 +56,7 @@ #define B_TAUNT_TURNS GEN_LATEST // In Gen5+, Taunt lasts 3 turns if the user acts before the target, or 4 turns if the target acted before the user. In Gen3, taunt lasts 2 turns and in Gen 4, 3-5 turns. #define B_SPORT_TURNS GEN_LATEST // In Gen6+, Water/Mud Sport last 5 turns, even if the user switches out. #define B_MEGA_EVO_TURN_ORDER GEN_LATEST // In Gen7, a Pokémon's Speed after Mega Evolution is used to determine turn order, not its Speed before. -#define B_RECALC_TURN_AFTER_ACTIONS GEN_LATEST // In Gen8, switching/using a move affects the current turn's order of actions. +#define B_RECALC_TURN_AFTER_ACTIONS GEN_LATEST // In Gen8, switching/using a move affects the current turn's order of actions, better known as dynamic speed. #define B_FAINT_SWITCH_IN GEN_LATEST // In Gen4+, sending out a new Pokémon after the previous one fainted happens at the end of the turn. Before, it would happen after each action. // Move data settings @@ -66,6 +68,7 @@ #define B_KLUTZ_FLING_INTERACTION GEN_LATEST // In Gen5+, Pokémon with the Klutz ability can't use Fling. #define B_UPDATED_CONVERSION GEN_LATEST // In Gen6+, Conversion changes the user's type to match their first move's. Before, it would choose a move at random. #define B_PP_REDUCED_BY_SPITE GEN_LATEST // In Gen4+, Spite reduces the foe's last move's PP by 4, instead of 2 to 5. +#define B_EXTRAPOLATED_MOVE_FLAGS TRUE // Adds move flags to moves that they don't officially have but would likely have if they were in the latest core series game. // Move accuracy settings #define B_TOXIC_NEVER_MISS GEN_LATEST // In Gen6+, if Toxic is used by a Poison-type Pokémon, it will never miss. @@ -75,14 +78,13 @@ // Move stat change settings #define B_FELL_STINGER_STAT_RAISE GEN_LATEST // In Gen7+, it raises Atk by 3 stages instead of 2 if it causes the target to faint. -#define B_KINGS_SHIELD_LOWER_ATK GEN_LATEST // In Gen8+, it lowers Atk by 1 stage instead of 2 of oponents that hit it. +#define B_KINGS_SHIELD_LOWER_ATK GEN_LATEST // In Gen8+, it lowers Atk by 1 stage instead of 2 of opponents that hit it. #define B_SPEED_BUFFING_RAPID_SPIN GEN_LATEST // In Gen8, Rapid Spin raises the user's Speed by 1 stage. #define B_CHARGE_SPDEF_RAISE GEN_LATEST // In Gen5+, Charge raises the user's Special Defense by 1 stage. #define B_MINIMIZE_EVASION GEN_LATEST // In Gen5+, Minimize raises evasion by 2 stages instead of 1. #define B_GROWTH_STAT_RAISE GEN_LATEST // In Gen5+, Growth raises Attack in addition to Special Attack by 1 stage each. Under the effects of the sun, it raises them by 2 stages each instead. // Other move settings -#define B_SOUND_SUBSTITUTE GEN_LATEST // In Gen6+, sound moves bypass Substitute. #define B_INCINERATE_GEMS GEN_LATEST // In Gen6+, Incinerate can destroy Gems. #define B_CAN_SPITE_FAIL GEN_LATEST // In Gen4+, Spite can no longer fail if the foe's last move only has 1 remaining PP. #define B_CRASH_IF_TARGET_IMMUNE GEN_LATEST // In Gen4+, The user of Jump Kick or High Jump Kick will "keep going and crash" if it attacks a target that is immune to the move. @@ -106,6 +108,9 @@ #define B_STOCKPILE_RAISES_DEFS GEN_LATEST // In Gen4+, Stockpile also raises Defense and Sp. Defense stats. Once Spit Up / Swallow is used, these stat changes are lost. #define B_TRANSFORM_SHINY GEN_LATEST // In Gen4+, Transform will copy the shiny state of the opponent instead of maintaining its own shiny state. #define B_TRANSFORM_FORM_CHANGES GEN_LATEST // In Gen5+, Transformed Pokemon cannot change forms. +#define B_WIDE_GUARD GEN_LATEST // In Gen5 only, Quick Guard has a chance to fail if used consecutively. +#define B_QUICK_GUARD GEN_LATEST // In Gen5 only, Wide Guard has a chance to fail if used consecutively. +#define B_IMPRISON GEN_LATEST // In Gen5+, Imprison doesn't fail if opposing pokemon don't have any moves the user knows. // Ability settings #define B_EXPANDED_ABILITY_NAMES TRUE // If TRUE, ability names are increased from 12 characters to 16 characters. @@ -115,7 +120,6 @@ #define B_SHADOW_TAG_ESCAPE GEN_LATEST // In Gen4+, if both sides have a Pokémon with Shadow Tag, all battlers can escape. Before, neither side could escape this situation. #define B_MOODY_ACC_EVASION GEN_LATEST // In Gen8, Moody CANNOT raise Accuracy and Evasion anymore. #define B_FLASH_FIRE_FROZEN GEN_LATEST // In Gen5+, Flash Fire can trigger even when frozen, when it couldn't before. -#define B_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. #define B_SYNCHRONIZE_TOXIC GEN_LATEST // In Gen5+, if a Pokémon with Synchronize is badly poisoned, the opponent will also become badly poisoned. Previously, the opponent would become regular poisoned. #define B_UPDATED_INTIMIDATE GEN_LATEST // In Gen8, Intimidate doesn't work on opponents with the Inner Focus, Scrappy, Own Tempo or Oblivious abilities. It also activates Rattled. #define B_OBLIVIOUS_TAUNT GEN_LATEST // In Gen6+, Pokémon with Oblivious can't be taunted. @@ -126,16 +130,22 @@ #define B_ABSORBING_ABILITY_STRING GEN_LATEST // In Gen5+, the abilities that absorb moves of a certain type use a generic string for stat increases and decreases. #define B_LEAF_GUARD_PREVENTS_REST GEN_LATEST // In Gen5+, Leaf Guard prevents the use of Rest in harsh sunlight. #define B_SNOW_WARNING GEN_LATEST // In Gen9+, Snow Warning will summon snow instead of hail. +#define B_TRANSISTOR_BOOST GEN_LATEST // In Gen9+, Transistor will only boost Electric-type moves by 1.3x as opposed to 1.5x. +#define B_ILLUMINATE_EFFECT GEN_LATEST // In Gen9+, Illuminate prevents accuracy reductions and ignores the target's evasion. +#define B_WEAK_ARMOR_SPEED GEN_LATEST // In Gen7+, Weak Armor raises Speed by 2 stages instead of 1 when hit by a physical move. +#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. // 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. +#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. #define B_BERRIES_INSTANT GEN_LATEST // In Gen4+, most berries activate on battle start/switch-in if applicable. In Gen3, they only activate either at the move end or turn end. #define B_CONFUSE_BERRIES_HEAL GEN_LATEST // Before Gen7, Figy and similar berries restore 1/8th of HP and trigger at half HP. In Gen7 they restore half HP, triggering at 25% HP. In Gen8 they heal 1/3rd of HP. #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_SOUL_DEW_BOOST GEN_LATEST // In Gens3-6, Soul Dew boosts Lati@s' Sp. Atk and Sp. Def. In Gen7+ it boosts the power of their Psychic and Dragon type moves instead. +#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. #define B_NEST_BALL_MODIFIER GEN_LATEST // Nest Ball's formula varies depending on the Gen. See Cmd_handleballthrow. @@ -158,6 +168,7 @@ #define B_FLAG_NO_BAG_USE 0 // If this flag is set, the ability to use the bag in battle is disabled. #define B_FLAG_NO_CATCHING 0 // If this flag is set, the ability to catch wild Pokémon is disabled. #define B_FLAG_AI_VS_AI_BATTLE 0 // If this flag is set, the player's mons will be controlled by the ai next battles. +#define B_FLAG_DYNAMAX_BATTLE 0 // If this flag is set, the ability to Dynamax in battle is enabled for all trainers. // Var Settings // To use the following features in scripting, replace the 0s with the var ID you're assigning it to. @@ -165,6 +176,12 @@ #define VAR_TERRAIN 0 // If this var has a value, assigning a STATUS_FIELD_xx_TERRAIN to it before battle causes the battle to start with that terrain active #define B_VAR_WILD_AI_FLAGS 0 // If not 0, you can use this var to add to default wild AI flags. NOT usable with flags above (1 << 15) +// Sky Battles +#define B_FLAG_SKY_BATTLE 0 // If this flag has a value, the player will be able to engage in scripted Sky Battles. +#define B_VAR_SKY_BATTLE 0 // If this var has a value, the game will remember the positions of Pokémon used in Sky Battles. + +#define B_SKY_BATTLE_STRICT_ELIGIBILITY FALSE //If TRUE, Sky Battles will use the eligibility from Pokémon XY. If FALSE, all Flying-types or Pokémon with Levitate are allowed. + // Flag and Var settings #define B_RESET_FLAGS_VARS_AFTER_WHITEOUT TRUE // If TRUE, Overworld_ResetBattleFlagsAndVars will reset battle-related Flags and Vars when the player whites out. @@ -187,6 +204,7 @@ #define B_HIDE_HEALTHBOX_IN_ANIMS TRUE // If set to TRUE, hides healthboxes during move animations. #define B_EXPANDED_MOVE_NAMES FALSE // If set to TRUE, move names are increased from 12 characters to 16 characters. #define B_WAIT_TIME_MULTIPLIER 16 // This determines how long text pauses in battle last. Vanilla is 16. Lower values result in faster battles. +#define B_QUICK_MOVE_CURSOR_TO_RUN FALSE // If set to TRUE, pushing B in the battle options against a wild encounter will move the cursor to the run option // Catching settings #define B_SEMI_INVULNERABLE_CATCH GEN_LATEST // In Gen4+, you cannot throw a ball against a Pokemon that is in a semi-invulnerable state (dig/fly/etc) @@ -194,7 +212,7 @@ #define B_CRITICAL_CAPTURE TRUE // If set to TRUE, Critical Capture will be enabled. #define B_LAST_USED_BALL TRUE // If TRUE, the "last used ball" feature from Gen 7 will be implemented #define B_LAST_USED_BALL_BUTTON R_BUTTON // If last used ball is implemented, this button (or button combo) will trigger throwing the last used ball. -#define B_LAST_USED_BALL_CYCLE TRUE // If TRUE, then holding B_LAST_USED_BALL_BUTTON while pressing the D-Pad cycles through the balls +#define B_LAST_USED_BALL_CYCLE TRUE // If TRUE, then holding B_LAST_USED_BALL_BUTTON while pressing the D-Pad cycles through the balls // Other settings #define B_DOUBLE_WILD_CHANCE 0 // % chance of encountering two Pokémon in a Wild Encounter. @@ -202,11 +220,13 @@ #define B_MULTI_BATTLE_WHITEOUT GEN_LATEST // In Gen4+, multi battles end when the Player and also their Partner don't have any more Pokémon to fight. #define B_EVOLUTION_AFTER_WHITEOUT GEN_LATEST // In Gen6+, Pokemon that qualify for evolution after battle will evolve even if the player loses. #define B_WILD_NATURAL_ENEMIES TRUE // If set to TRUE, certain wild mon species will attack other species when partnered in double wild battles (eg. Zangoose vs Seviper) -#define B_AFFECTION_MECHANICS FALSE // In Gen6+, there's a stat called affection that can trigger different effects in battle. From LGPE onwards, those effects use friendship instead. +#define B_AFFECTION_MECHANICS TRUE // In Gen6+, there's a stat called affection that can trigger different effects in battle. From LGPE onwards, those effects use friendship instead. #define B_TRAINER_CLASS_POKE_BALLS GEN_LATEST // In Gen7+, trainers will use certain types of Poké Balls depending on their trainer class. -#define B_OBEDIENCE_MECHANICS GEN_7 // 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_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_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. // Animation Settings #define B_NEW_SWORD_PARTICLE TRUE // If set to TRUE, it updates Swords Dance's particle. diff --git a/include/config/item.h b/include/config/item.h index 0822d35b10..195a78e457 100644 --- a/include/config/item.h +++ b/include/config/item.h @@ -13,6 +13,7 @@ #define I_GEM_BOOST_POWER GEN_LATEST // In Gen5+, the Gem boost power was reduced from 50% to 30%. #define I_USE_EVO_HELD_ITEMS_FROM_BAG FALSE // If TRUE, items such as Razor Claw or Electirizer will be usable from the bag to evolve a Pokémon just like in LA. #define I_TYPE_BOOST_POWER GEN_LATEST // In Gen4+, all regular type boosting held items had their power increased from 10% to 20%. eg. Charcoal +#define I_SELL_VALUE_FRACTION GEN_LATEST // In Gen9+, items sell for 1/4 of their value instead of 1/2. // TM config #define I_REUSABLE_TMS FALSE // In Gen5-8, TMs are reusable. Setting this to TRUE will make all vanilla TMs reusable, though they can also be cherry-picked by setting their importance to 1. @@ -28,4 +29,7 @@ #define VAR_LAST_REPEL_LURE_USED 0 // If this var has been assigned, last Repel/Lure used will be saved and the player will get prompted with the vanilla repel YES/NO option, unless I_REPEL_LURE_MENU is set to TRUE. #define I_REPEL_LURE_MENU TRUE // If TRUE, the player is able to choose which Repel/Lure to use once the previous one runs out. Cursor position is saved by VAR_LAST_REPEL_LURE_USED if not 0. +// 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. + #endif // GUARD_CONFIG_ITEM_H diff --git a/include/config/overworld.h b/include/config/overworld.h index e8056236a0..3488064421 100644 --- a/include/config/overworld.h +++ b/include/config/overworld.h @@ -6,9 +6,25 @@ // Other settings #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 // 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. + +// 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. // Overworld flags // To use the following features in scripting, replace the 0s with the flag ID you're assigning it to. @@ -17,4 +33,6 @@ #define OW_FLAG_NO_TRAINER_SEE 0 // If this flag is set, trainers will not battle the player unless they're talked to. #define OW_FLAG_NO_COLLISION 0 // If this flag is set, the player will be able to walk over tiles with collision. Mainly intended for debugging purposes. +#define BATTLE_PYRAMID_RANDOM_ENCOUNTERS FALSE // If set to TRUE, battle pyramid Pokemon will be generated randomly based on the round's challenge instead of hardcoded in src/data/battle_frontier/battle_pyramid_level_50_wild_mons.h (or open_level_wild_mons.h) + #endif // GUARD_CONFIG_OVERWORLD_H diff --git a/include/config/pokemon.h b/include/config/pokemon.h index a65eddb73c..abdb728ac1 100644 --- a/include/config/pokemon.h +++ b/include/config/pokemon.h @@ -6,6 +6,10 @@ #define P_UPDATED_STATS GEN_LATEST // Since Gen 6, Pokémon stats are updated with each passing generation. #define P_UPDATED_ABILITIES GEN_LATEST // Since Gen 6, certain Pokémon have their abilities changed. #define P_UPDATED_EGG_GROUPS GEN_LATEST // Since Gen 8, certain Pokémon have gained new egg groups. +#define P_UPDATED_FRIENDSHIP GEN_LATEST // Since Gen 8, the base friendship of certain Pokémon was changed. + +// Evolution settings +#define P_FRIENDSHIP_EVO_THRESHOLD GEN_LATEST // Since Gen 8, Pokémon that evolve by friendship evolve at or above 160 friendship instead of 220. // Breeding settings #define P_NIDORAN_M_DITTO_BREED GEN_LATEST // Since Gen 5, when Nidoran♂ breeds with Ditto it can produce Nidoran♀ offspring. Before, it would only yield male offspring. This change also applies to Volbeat. @@ -21,12 +25,13 @@ // Species-specific settings #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_HIPPO_GENDER_DIFF_ICONS TRUE // If TRUE, will give Hippopotas and Hippowdon custom icons for their female forms. -#define P_SHUCKLE_BERRY_JUICE TRUE // In Gen 2, Shuckle had a 1/16 chance of converting Berry that it's holding into Berry Juice. Setting this to TRUE will allow to do this with an Oran Berry, which is the spiritual succesor of the Berry item. +#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. // 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_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_CATCH_CURVE GEN_LATEST // Since Gen 6, the capture rate curve was changed to make pokeballs more effective on lower level pokemon // Flag settings // To use the following features in scripting, replace the 0s with the flag ID you're assigning it to. @@ -34,14 +39,7 @@ #define P_FLAG_FORCE_SHINY 0 // If this flag is set, all wild and gift Pokémon will forced into being Shiny. #define P_FLAG_FORCE_NO_SHINY 0 // If this flag is set, all wild and gift Pokémon will forced into NOT being Shiny. -// Modifying the latest generation WILL change the saveblock due to Dex flags and will require a new save file. -// Forms are kept based on the base species, Eg: Meowth and Persian will keep all of their forms, but Perrserker will not be available if P_GEN_8_POKEMON is set to FALSE. -// If you're disabling a generation previous to others (eg: Gen 5 but not Gen 6, 7 and 8), -// remember to update NATIONAL_DEX enum in include/constants/pokedex.h to avoid players from softlocking in the non-existant entries. -#define P_GEN_4_POKEMON TRUE // Generation 4 Pokémon (DPPt, HGSS) -#define P_GEN_5_POKEMON TRUE // Generation 5 Pokémon (BW, B2W2) -#define P_GEN_6_POKEMON TRUE // Generation 6 Pokémon (XY, ORAS) -#define P_GEN_7_POKEMON TRUE // Generation 7 Pokémon (SM, USUM, LGPE) -#define P_GEN_8_POKEMON TRUE // Generation 8 Pokémon (SwSh, BDSP, LA) +// Go here if you want to disable specific families of Pokémon. +#include "config/species_enabled.h" #endif // GUARD_CONFIG_POKEMON_H diff --git a/include/config/species_enabled.h b/include/config/species_enabled.h new file mode 100644 index 0000000000..8004abc3bb --- /dev/null +++ b/include/config/species_enabled.h @@ -0,0 +1,598 @@ +#ifndef GUARD_CONFIG_SPECIES_ENABLED_H +#define GUARD_CONFIG_SPECIES_ENABLED_H + +// 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. +// Eg: If P_GEN_2_POKEMON is set to FALSE, all members of the Sneasel Family will be disabled +// (Sneasel + Hisuian, Weavile and Sneasler). +#define P_GEN_1_POKEMON TRUE // Generation 1 Pokémon (RGBY) +#define P_GEN_2_POKEMON TRUE // Generation 2 Pokémon (GSC) +#define P_GEN_3_POKEMON TRUE // Generation 3 Pokémon (RSE, FRLG) +#define P_GEN_4_POKEMON TRUE // Generation 4 Pokémon (DPPt, HGSS) +#define P_GEN_5_POKEMON TRUE // Generation 5 Pokémon (BW, B2W2) +#define P_GEN_6_POKEMON TRUE // Generation 6 Pokémon (XY, ORAS) +#define P_GEN_7_POKEMON TRUE // Generation 7 Pokémon (SM, USUM, LGPE) +#define P_GEN_8_POKEMON TRUE // Generation 8 Pokémon (SwSh, BDSP, LA) +#define P_GEN_9_POKEMON TRUE // Generation 9 Pokémon (SV) + +// Setting this to TRUE will add the new evolutions to the Regional Dex. +#define P_NEW_EVOS_IN_REGIONAL_DEX TRUE + +// Battle gimmick specific Forms. +#define P_MEGA_EVOLUTIONS TRUE +#define P_PRIMAL_REVERSIONS TRUE // Groudon and Kyogre only. +#define P_ULTRA_BURST_FORMS TRUE // Ultra Necrozma only. +#define P_GIGANTAMAX_FORMS TRUE +#define P_TERA_FORMS TRUE + +// Fusion forms +#define P_FUSION_FORMS TRUE + +// Regional Forms. Includes Regional Form evolutions, like Sirfetch'd. +#define P_REGIONAL_FORMS TRUE +#define P_ALOLAN_FORMS P_REGIONAL_FORMS +#define P_GALARIAN_FORMS P_REGIONAL_FORMS +#define P_HISUIAN_FORMS P_REGIONAL_FORMS +#define P_PALDEAN_FORMS P_REGIONAL_FORMS + +// Big groups of forms that aren't always desired when choosing families. +#define P_PIKACHU_EXTRA_FORMS TRUE +#define P_COSPLAY_PIKACHU_FORMS P_PIKACHU_EXTRA_FORMS +#define P_CAP_PIKACHU_FORMS P_PIKACHU_EXTRA_FORMS + +// Cross-generation evolutions. Includes pre-evolutions. +#define P_CROSS_GENERATION_EVOS TRUE +#define P_GEN_2_CROSS_EVOS P_CROSS_GENERATION_EVOS +#define P_GEN_3_CROSS_EVOS P_CROSS_GENERATION_EVOS +#define P_GEN_4_CROSS_EVOS P_CROSS_GENERATION_EVOS +//#define P_GEN_5_CROSS_EVOS // Gen 5 didn't introduce any cross-gen evos. +#define P_GEN_6_CROSS_EVOS P_CROSS_GENERATION_EVOS // Just Sylveon. +//#define P_GEN_7_CROSS_EVOS // Alolan evolutions handled by P_ALOLAN_FORMS. +#define P_GEN_8_CROSS_EVOS P_CROSS_GENERATION_EVOS // Regional evolutions handled by P_GALARIAN_FORMS and P_HISUIAN_FORMS. +#define P_GEN_9_CROSS_EVOS P_CROSS_GENERATION_EVOS // Clodsire handled by P_PALDEAN_FORMS. + +// To disable specific families, replace P_GEN_x_POKEMON with FALSE. +#define P_FAMILY_BULBASAUR P_GEN_1_POKEMON +#define P_FAMILY_CHARMANDER P_GEN_1_POKEMON +#define P_FAMILY_SQUIRTLE P_GEN_1_POKEMON +#define P_FAMILY_CATERPIE P_GEN_1_POKEMON +#define P_FAMILY_WEEDLE P_GEN_1_POKEMON +#define P_FAMILY_PIDGEY P_GEN_1_POKEMON +#define P_FAMILY_RATTATA P_GEN_1_POKEMON +#define P_FAMILY_SPEAROW P_GEN_1_POKEMON +#define P_FAMILY_EKANS P_GEN_1_POKEMON +#define P_FAMILY_PIKACHU P_GEN_1_POKEMON +#define P_FAMILY_SANDSHREW P_GEN_1_POKEMON +#define P_FAMILY_NIDORAN P_GEN_1_POKEMON +#define P_FAMILY_CLEFAIRY P_GEN_1_POKEMON +#define P_FAMILY_VULPIX P_GEN_1_POKEMON +#define P_FAMILY_JIGGLYPUFF P_GEN_1_POKEMON +#define P_FAMILY_ZUBAT P_GEN_1_POKEMON +#define P_FAMILY_ODDISH P_GEN_1_POKEMON +#define P_FAMILY_PARAS P_GEN_1_POKEMON +#define P_FAMILY_VENONAT P_GEN_1_POKEMON +#define P_FAMILY_DIGLETT P_GEN_1_POKEMON +#define P_FAMILY_MEOWTH P_GEN_1_POKEMON +#define P_FAMILY_PSYDUCK P_GEN_1_POKEMON +#define P_FAMILY_MANKEY P_GEN_1_POKEMON +#define P_FAMILY_GROWLITHE P_GEN_1_POKEMON +#define P_FAMILY_POLIWAG P_GEN_1_POKEMON +#define P_FAMILY_ABRA P_GEN_1_POKEMON +#define P_FAMILY_MACHOP P_GEN_1_POKEMON +#define P_FAMILY_BELLSPROUT P_GEN_1_POKEMON +#define P_FAMILY_TENTACOOL P_GEN_1_POKEMON +#define P_FAMILY_GEODUDE P_GEN_1_POKEMON +#define P_FAMILY_PONYTA P_GEN_1_POKEMON +#define P_FAMILY_SLOWPOKE P_GEN_1_POKEMON +#define P_FAMILY_MAGNEMITE P_GEN_1_POKEMON +#define P_FAMILY_FARFETCHD P_GEN_1_POKEMON +#define P_FAMILY_DODUO P_GEN_1_POKEMON +#define P_FAMILY_SEEL P_GEN_1_POKEMON +#define P_FAMILY_GRIMER P_GEN_1_POKEMON +#define P_FAMILY_SHELLDER P_GEN_1_POKEMON +#define P_FAMILY_GASTLY P_GEN_1_POKEMON +#define P_FAMILY_ONIX P_GEN_1_POKEMON +#define P_FAMILY_DROWZEE P_GEN_1_POKEMON +#define P_FAMILY_KRABBY P_GEN_1_POKEMON +#define P_FAMILY_VOLTORB P_GEN_1_POKEMON +#define P_FAMILY_EXEGGCUTE P_GEN_1_POKEMON +#define P_FAMILY_CUBONE P_GEN_1_POKEMON +#define P_FAMILY_HITMONS P_GEN_1_POKEMON +#define P_FAMILY_LICKITUNG P_GEN_1_POKEMON +#define P_FAMILY_KOFFING P_GEN_1_POKEMON +#define P_FAMILY_RHYHORN P_GEN_1_POKEMON +#define P_FAMILY_CHANSEY P_GEN_1_POKEMON +#define P_FAMILY_TANGELA P_GEN_1_POKEMON +#define P_FAMILY_KANGASKHAN P_GEN_1_POKEMON +#define P_FAMILY_HORSEA P_GEN_1_POKEMON +#define P_FAMILY_GOLDEEN P_GEN_1_POKEMON +#define P_FAMILY_STARYU P_GEN_1_POKEMON +#define P_FAMILY_MR_MIME P_GEN_1_POKEMON +#define P_FAMILY_SCYTHER P_GEN_1_POKEMON +#define P_FAMILY_JYNX P_GEN_1_POKEMON +#define P_FAMILY_ELECTABUZZ P_GEN_1_POKEMON +#define P_FAMILY_MAGMAR P_GEN_1_POKEMON +#define P_FAMILY_PINSIR P_GEN_1_POKEMON +#define P_FAMILY_TAUROS P_GEN_1_POKEMON +#define P_FAMILY_MAGIKARP P_GEN_1_POKEMON +#define P_FAMILY_LAPRAS P_GEN_1_POKEMON +#define P_FAMILY_DITTO P_GEN_1_POKEMON +#define P_FAMILY_EEVEE P_GEN_1_POKEMON +#define P_FAMILY_PORYGON P_GEN_1_POKEMON +#define P_FAMILY_OMANYTE P_GEN_1_POKEMON +#define P_FAMILY_KABUTO P_GEN_1_POKEMON +#define P_FAMILY_AERODACTYL P_GEN_1_POKEMON +#define P_FAMILY_SNORLAX P_GEN_1_POKEMON +#define P_FAMILY_ARTICUNO P_GEN_1_POKEMON +#define P_FAMILY_ZAPDOS P_GEN_1_POKEMON +#define P_FAMILY_MOLTRES P_GEN_1_POKEMON +#define P_FAMILY_DRATINI P_GEN_1_POKEMON +#define P_FAMILY_MEWTWO P_GEN_1_POKEMON +#define P_FAMILY_MEW P_GEN_1_POKEMON + +#define P_FAMILY_CHIKORITA P_GEN_2_POKEMON +#define P_FAMILY_CYNDAQUIL P_GEN_2_POKEMON +#define P_FAMILY_TOTODILE P_GEN_2_POKEMON +#define P_FAMILY_SENTRET P_GEN_2_POKEMON +#define P_FAMILY_HOOTHOOT P_GEN_2_POKEMON +#define P_FAMILY_LEDYBA P_GEN_2_POKEMON +#define P_FAMILY_SPINARAK P_GEN_2_POKEMON +#define P_FAMILY_CHINCHOU P_GEN_2_POKEMON +#define P_FAMILY_TOGEPI P_GEN_2_POKEMON +#define P_FAMILY_NATU P_GEN_2_POKEMON +#define P_FAMILY_MAREEP P_GEN_2_POKEMON +#define P_FAMILY_MARILL P_GEN_2_POKEMON +#define P_FAMILY_SUDOWOODO P_GEN_2_POKEMON +#define P_FAMILY_HOPPIP P_GEN_2_POKEMON +#define P_FAMILY_AIPOM P_GEN_2_POKEMON +#define P_FAMILY_SUNKERN P_GEN_2_POKEMON +#define P_FAMILY_YANMA P_GEN_2_POKEMON +#define P_FAMILY_WOOPER P_GEN_2_POKEMON +#define P_FAMILY_MURKROW P_GEN_2_POKEMON +#define P_FAMILY_MISDREAVUS P_GEN_2_POKEMON +#define P_FAMILY_UNOWN P_GEN_2_POKEMON +#define P_FAMILY_WOBBUFFET P_GEN_2_POKEMON +#define P_FAMILY_GIRAFARIG P_GEN_2_POKEMON +#define P_FAMILY_PINECO P_GEN_2_POKEMON +#define P_FAMILY_DUNSPARCE P_GEN_2_POKEMON +#define P_FAMILY_GLIGAR P_GEN_2_POKEMON +#define P_FAMILY_SNUBBULL P_GEN_2_POKEMON +#define P_FAMILY_QWILFISH P_GEN_2_POKEMON +#define P_FAMILY_SHUCKLE P_GEN_2_POKEMON +#define P_FAMILY_HERACROSS P_GEN_2_POKEMON +#define P_FAMILY_SNEASEL P_GEN_2_POKEMON +#define P_FAMILY_TEDDIURSA P_GEN_2_POKEMON +#define P_FAMILY_SLUGMA P_GEN_2_POKEMON +#define P_FAMILY_SWINUB P_GEN_2_POKEMON +#define P_FAMILY_CORSOLA P_GEN_2_POKEMON +#define P_FAMILY_REMORAID P_GEN_2_POKEMON +#define P_FAMILY_DELIBIRD P_GEN_2_POKEMON +#define P_FAMILY_MANTINE P_GEN_2_POKEMON +#define P_FAMILY_SKARMORY P_GEN_2_POKEMON +#define P_FAMILY_HOUNDOUR P_GEN_2_POKEMON +#define P_FAMILY_PHANPY P_GEN_2_POKEMON +#define P_FAMILY_STANTLER P_GEN_2_POKEMON +#define P_FAMILY_SMEARGLE P_GEN_2_POKEMON +#define P_FAMILY_MILTANK P_GEN_2_POKEMON +#define P_FAMILY_RAIKOU P_GEN_2_POKEMON +#define P_FAMILY_ENTEI P_GEN_2_POKEMON +#define P_FAMILY_SUICUNE P_GEN_2_POKEMON +#define P_FAMILY_LARVITAR P_GEN_2_POKEMON +#define P_FAMILY_LUGIA P_GEN_2_POKEMON +#define P_FAMILY_HO_OH P_GEN_2_POKEMON +#define P_FAMILY_CELEBI P_GEN_2_POKEMON + +#define P_FAMILY_TREECKO P_GEN_3_POKEMON +#define P_FAMILY_TORCHIC P_GEN_3_POKEMON +#define P_FAMILY_MUDKIP P_GEN_3_POKEMON +#define P_FAMILY_POOCHYENA P_GEN_3_POKEMON +#define P_FAMILY_ZIGZAGOON P_GEN_3_POKEMON +#define P_FAMILY_WURMPLE P_GEN_3_POKEMON +#define P_FAMILY_LOTAD P_GEN_3_POKEMON +#define P_FAMILY_SEEDOT P_GEN_3_POKEMON +#define P_FAMILY_TAILLOW P_GEN_3_POKEMON +#define P_FAMILY_WINGULL P_GEN_3_POKEMON +#define P_FAMILY_RALTS P_GEN_3_POKEMON +#define P_FAMILY_SURSKIT P_GEN_3_POKEMON +#define P_FAMILY_SHROOMISH P_GEN_3_POKEMON +#define P_FAMILY_SLAKOTH P_GEN_3_POKEMON +#define P_FAMILY_NINCADA P_GEN_3_POKEMON +#define P_FAMILY_WHISMUR P_GEN_3_POKEMON +#define P_FAMILY_MAKUHITA P_GEN_3_POKEMON +#define P_FAMILY_NOSEPASS P_GEN_3_POKEMON +#define P_FAMILY_SKITTY P_GEN_3_POKEMON +#define P_FAMILY_SABLEYE P_GEN_3_POKEMON +#define P_FAMILY_MAWILE P_GEN_3_POKEMON +#define P_FAMILY_ARON P_GEN_3_POKEMON +#define P_FAMILY_MEDITITE P_GEN_3_POKEMON +#define P_FAMILY_ELECTRIKE P_GEN_3_POKEMON +#define P_FAMILY_PLUSLE P_GEN_3_POKEMON +#define P_FAMILY_MINUN P_GEN_3_POKEMON +#define P_FAMILY_VOLBEAT_ILLUMISE P_GEN_3_POKEMON +#define P_FAMILY_ROSELIA P_GEN_3_POKEMON +#define P_FAMILY_GULPIN P_GEN_3_POKEMON +#define P_FAMILY_CARVANHA P_GEN_3_POKEMON +#define P_FAMILY_WAILMER P_GEN_3_POKEMON +#define P_FAMILY_NUMEL P_GEN_3_POKEMON +#define P_FAMILY_TORKOAL P_GEN_3_POKEMON +#define P_FAMILY_SPOINK P_GEN_3_POKEMON +#define P_FAMILY_SPINDA P_GEN_3_POKEMON +#define P_FAMILY_TRAPINCH P_GEN_3_POKEMON +#define P_FAMILY_CACNEA P_GEN_3_POKEMON +#define P_FAMILY_SWABLU P_GEN_3_POKEMON +#define P_FAMILY_ZANGOOSE P_GEN_3_POKEMON +#define P_FAMILY_SEVIPER P_GEN_3_POKEMON +#define P_FAMILY_LUNATONE P_GEN_3_POKEMON +#define P_FAMILY_SOLROCK P_GEN_3_POKEMON +#define P_FAMILY_BARBOACH P_GEN_3_POKEMON +#define P_FAMILY_CORPHISH P_GEN_3_POKEMON +#define P_FAMILY_BALTOY P_GEN_3_POKEMON +#define P_FAMILY_LILEEP P_GEN_3_POKEMON +#define P_FAMILY_ANORITH P_GEN_3_POKEMON +#define P_FAMILY_FEEBAS P_GEN_3_POKEMON +#define P_FAMILY_CASTFORM P_GEN_3_POKEMON +#define P_FAMILY_KECLEON P_GEN_3_POKEMON +#define P_FAMILY_SHUPPET P_GEN_3_POKEMON +#define P_FAMILY_DUSKULL P_GEN_3_POKEMON +#define P_FAMILY_TROPIUS P_GEN_3_POKEMON +#define P_FAMILY_CHIMECHO P_GEN_3_POKEMON +#define P_FAMILY_ABSOL P_GEN_3_POKEMON +#define P_FAMILY_SNORUNT P_GEN_3_POKEMON +#define P_FAMILY_SPHEAL P_GEN_3_POKEMON +#define P_FAMILY_CLAMPERL P_GEN_3_POKEMON +#define P_FAMILY_RELICANTH P_GEN_3_POKEMON +#define P_FAMILY_LUVDISC P_GEN_3_POKEMON +#define P_FAMILY_BAGON P_GEN_3_POKEMON +#define P_FAMILY_BELDUM P_GEN_3_POKEMON +#define P_FAMILY_REGIROCK P_GEN_3_POKEMON +#define P_FAMILY_REGICE P_GEN_3_POKEMON +#define P_FAMILY_REGISTEEL P_GEN_3_POKEMON +#define P_FAMILY_LATIAS P_GEN_3_POKEMON +#define P_FAMILY_LATIOS P_GEN_3_POKEMON +#define P_FAMILY_KYOGRE P_GEN_3_POKEMON +#define P_FAMILY_GROUDON P_GEN_3_POKEMON +#define P_FAMILY_RAYQUAZA P_GEN_3_POKEMON +#define P_FAMILY_JIRACHI P_GEN_3_POKEMON +#define P_FAMILY_DEOXYS P_GEN_3_POKEMON + +#define P_FAMILY_TURTWIG P_GEN_4_POKEMON +#define P_FAMILY_CHIMCHAR P_GEN_4_POKEMON +#define P_FAMILY_PIPLUP P_GEN_4_POKEMON +#define P_FAMILY_STARLY P_GEN_4_POKEMON +#define P_FAMILY_BIDOOF P_GEN_4_POKEMON +#define P_FAMILY_KRICKETOT P_GEN_4_POKEMON +#define P_FAMILY_SHINX P_GEN_4_POKEMON +#define P_FAMILY_CRANIDOS P_GEN_4_POKEMON +#define P_FAMILY_SHIELDON P_GEN_4_POKEMON +#define P_FAMILY_BURMY P_GEN_4_POKEMON +#define P_FAMILY_COMBEE P_GEN_4_POKEMON +#define P_FAMILY_PACHIRISU P_GEN_4_POKEMON +#define P_FAMILY_BUIZEL P_GEN_4_POKEMON +#define P_FAMILY_CHERUBI P_GEN_4_POKEMON +#define P_FAMILY_SHELLOS P_GEN_4_POKEMON +#define P_FAMILY_DRIFLOON P_GEN_4_POKEMON +#define P_FAMILY_BUNEARY P_GEN_4_POKEMON +#define P_FAMILY_GLAMEOW P_GEN_4_POKEMON +#define P_FAMILY_STUNKY P_GEN_4_POKEMON +#define P_FAMILY_BRONZOR P_GEN_4_POKEMON +#define P_FAMILY_CHATOT P_GEN_4_POKEMON +#define P_FAMILY_SPIRITOMB P_GEN_4_POKEMON +#define P_FAMILY_GIBLE P_GEN_4_POKEMON +#define P_FAMILY_RIOLU P_GEN_4_POKEMON +#define P_FAMILY_HIPPOPOTAS P_GEN_4_POKEMON +#define P_FAMILY_SKORUPI P_GEN_4_POKEMON +#define P_FAMILY_CROAGUNK P_GEN_4_POKEMON +#define P_FAMILY_CARNIVINE P_GEN_4_POKEMON +#define P_FAMILY_FINNEON P_GEN_4_POKEMON +#define P_FAMILY_SNOVER P_GEN_4_POKEMON +#define P_FAMILY_ROTOM P_GEN_4_POKEMON +#define P_FAMILY_UXIE P_GEN_4_POKEMON +#define P_FAMILY_MESPRIT P_GEN_4_POKEMON +#define P_FAMILY_AZELF P_GEN_4_POKEMON +#define P_FAMILY_DIALGA P_GEN_4_POKEMON +#define P_FAMILY_PALKIA P_GEN_4_POKEMON +#define P_FAMILY_HEATRAN P_GEN_4_POKEMON +#define P_FAMILY_REGIGIGAS P_GEN_4_POKEMON +#define P_FAMILY_GIRATINA P_GEN_4_POKEMON +#define P_FAMILY_CRESSELIA P_GEN_4_POKEMON +#define P_FAMILY_MANAPHY P_GEN_4_POKEMON +#define P_FAMILY_DARKRAI P_GEN_4_POKEMON +#define P_FAMILY_SHAYMIN P_GEN_4_POKEMON +#define P_FAMILY_ARCEUS P_GEN_4_POKEMON + +#define P_FAMILY_VICTINI P_GEN_5_POKEMON +#define P_FAMILY_SNIVY P_GEN_5_POKEMON +#define P_FAMILY_TEPIG P_GEN_5_POKEMON +#define P_FAMILY_OSHAWOTT P_GEN_5_POKEMON +#define P_FAMILY_PATRAT P_GEN_5_POKEMON +#define P_FAMILY_LILLIPUP P_GEN_5_POKEMON +#define P_FAMILY_PURRLOIN P_GEN_5_POKEMON +#define P_FAMILY_PANSAGE P_GEN_5_POKEMON +#define P_FAMILY_PANSEAR P_GEN_5_POKEMON +#define P_FAMILY_PANPOUR P_GEN_5_POKEMON +#define P_FAMILY_MUNNA P_GEN_5_POKEMON +#define P_FAMILY_PIDOVE P_GEN_5_POKEMON +#define P_FAMILY_BLITZLE P_GEN_5_POKEMON +#define P_FAMILY_ROGGENROLA P_GEN_5_POKEMON +#define P_FAMILY_WOOBAT P_GEN_5_POKEMON +#define P_FAMILY_DRILBUR P_GEN_5_POKEMON +#define P_FAMILY_AUDINO P_GEN_5_POKEMON +#define P_FAMILY_TIMBURR P_GEN_5_POKEMON +#define P_FAMILY_TYMPOLE P_GEN_5_POKEMON +#define P_FAMILY_THROH P_GEN_5_POKEMON +#define P_FAMILY_SAWK P_GEN_5_POKEMON +#define P_FAMILY_SEWADDLE P_GEN_5_POKEMON +#define P_FAMILY_VENIPEDE P_GEN_5_POKEMON +#define P_FAMILY_COTTONEE P_GEN_5_POKEMON +#define P_FAMILY_PETILIL P_GEN_5_POKEMON +#define P_FAMILY_BASCULIN P_GEN_5_POKEMON +#define P_FAMILY_SANDILE P_GEN_5_POKEMON +#define P_FAMILY_DARUMAKA P_GEN_5_POKEMON +#define P_FAMILY_MARACTUS P_GEN_5_POKEMON +#define P_FAMILY_DWEBBLE P_GEN_5_POKEMON +#define P_FAMILY_SCRAGGY P_GEN_5_POKEMON +#define P_FAMILY_SIGILYPH P_GEN_5_POKEMON +#define P_FAMILY_YAMASK P_GEN_5_POKEMON +#define P_FAMILY_TIRTOUGA P_GEN_5_POKEMON +#define P_FAMILY_ARCHEN P_GEN_5_POKEMON +#define P_FAMILY_TRUBBISH P_GEN_5_POKEMON +#define P_FAMILY_ZORUA P_GEN_5_POKEMON +#define P_FAMILY_MINCCINO P_GEN_5_POKEMON +#define P_FAMILY_GOTHITA P_GEN_5_POKEMON +#define P_FAMILY_SOLOSIS P_GEN_5_POKEMON +#define P_FAMILY_DUCKLETT P_GEN_5_POKEMON +#define P_FAMILY_VANILLITE P_GEN_5_POKEMON +#define P_FAMILY_DEERLING P_GEN_5_POKEMON +#define P_FAMILY_EMOLGA P_GEN_5_POKEMON +#define P_FAMILY_KARRABLAST P_GEN_5_POKEMON +#define P_FAMILY_FOONGUS P_GEN_5_POKEMON +#define P_FAMILY_FRILLISH P_GEN_5_POKEMON +#define P_FAMILY_ALOMOMOLA P_GEN_5_POKEMON +#define P_FAMILY_JOLTIK P_GEN_5_POKEMON +#define P_FAMILY_FERROSEED P_GEN_5_POKEMON +#define P_FAMILY_KLINK P_GEN_5_POKEMON +#define P_FAMILY_TYNAMO P_GEN_5_POKEMON +#define P_FAMILY_ELGYEM P_GEN_5_POKEMON +#define P_FAMILY_LITWICK P_GEN_5_POKEMON +#define P_FAMILY_AXEW P_GEN_5_POKEMON +#define P_FAMILY_CUBCHOO P_GEN_5_POKEMON +#define P_FAMILY_CRYOGONAL P_GEN_5_POKEMON +#define P_FAMILY_SHELMET P_GEN_5_POKEMON +#define P_FAMILY_STUNFISK P_GEN_5_POKEMON +#define P_FAMILY_MIENFOO P_GEN_5_POKEMON +#define P_FAMILY_DRUDDIGON P_GEN_5_POKEMON +#define P_FAMILY_GOLETT P_GEN_5_POKEMON +#define P_FAMILY_PAWNIARD P_GEN_5_POKEMON +#define P_FAMILY_BOUFFALANT P_GEN_5_POKEMON +#define P_FAMILY_RUFFLET P_GEN_5_POKEMON +#define P_FAMILY_VULLABY P_GEN_5_POKEMON +#define P_FAMILY_HEATMOR P_GEN_5_POKEMON +#define P_FAMILY_DURANT P_GEN_5_POKEMON +#define P_FAMILY_DEINO P_GEN_5_POKEMON +#define P_FAMILY_LARVESTA P_GEN_5_POKEMON +#define P_FAMILY_COBALION P_GEN_5_POKEMON +#define P_FAMILY_TERRAKION P_GEN_5_POKEMON +#define P_FAMILY_VIRIZION P_GEN_5_POKEMON +#define P_FAMILY_TORNADUS P_GEN_5_POKEMON +#define P_FAMILY_THUNDURUS P_GEN_5_POKEMON +#define P_FAMILY_RESHIRAM P_GEN_5_POKEMON +#define P_FAMILY_ZEKROM P_GEN_5_POKEMON +#define P_FAMILY_LANDORUS P_GEN_5_POKEMON +#define P_FAMILY_KYUREM P_GEN_5_POKEMON +#define P_FAMILY_KELDEO P_GEN_5_POKEMON +#define P_FAMILY_MELOETTA P_GEN_5_POKEMON +#define P_FAMILY_GENESECT P_GEN_5_POKEMON + +#define P_FAMILY_CHESPIN P_GEN_6_POKEMON +#define P_FAMILY_FENNEKIN P_GEN_6_POKEMON +#define P_FAMILY_FROAKIE P_GEN_6_POKEMON +#define P_FAMILY_BUNNELBY P_GEN_6_POKEMON +#define P_FAMILY_FLETCHLING P_GEN_6_POKEMON +#define P_FAMILY_SCATTERBUG P_GEN_6_POKEMON +#define P_FAMILY_LITLEO P_GEN_6_POKEMON +#define P_FAMILY_FLABEBE P_GEN_6_POKEMON +#define P_FAMILY_SKIDDO P_GEN_6_POKEMON +#define P_FAMILY_PANCHAM P_GEN_6_POKEMON +#define P_FAMILY_FURFROU P_GEN_6_POKEMON +#define P_FAMILY_ESPURR P_GEN_6_POKEMON +#define P_FAMILY_HONEDGE P_GEN_6_POKEMON +#define P_FAMILY_SPRITZEE P_GEN_6_POKEMON +#define P_FAMILY_SWIRLIX P_GEN_6_POKEMON +#define P_FAMILY_INKAY P_GEN_6_POKEMON +#define P_FAMILY_BINACLE P_GEN_6_POKEMON +#define P_FAMILY_SKRELP P_GEN_6_POKEMON +#define P_FAMILY_CLAUNCHER P_GEN_6_POKEMON +#define P_FAMILY_HELIOPTILE P_GEN_6_POKEMON +#define P_FAMILY_TYRUNT P_GEN_6_POKEMON +#define P_FAMILY_AMAURA P_GEN_6_POKEMON +#define P_FAMILY_HAWLUCHA P_GEN_6_POKEMON +#define P_FAMILY_DEDENNE P_GEN_6_POKEMON +#define P_FAMILY_CARBINK P_GEN_6_POKEMON +#define P_FAMILY_GOOMY P_GEN_6_POKEMON +#define P_FAMILY_KLEFKI P_GEN_6_POKEMON +#define P_FAMILY_PHANTUMP P_GEN_6_POKEMON +#define P_FAMILY_PUMPKABOO P_GEN_6_POKEMON +#define P_FAMILY_BERGMITE P_GEN_6_POKEMON +#define P_FAMILY_NOIBAT P_GEN_6_POKEMON +#define P_FAMILY_XERNEAS P_GEN_6_POKEMON +#define P_FAMILY_YVELTAL P_GEN_6_POKEMON +#define P_FAMILY_ZYGARDE P_GEN_6_POKEMON +#define P_FAMILY_DIANCIE P_GEN_6_POKEMON +#define P_FAMILY_HOOPA P_GEN_6_POKEMON +#define P_FAMILY_VOLCANION P_GEN_6_POKEMON + +#define P_FAMILY_ROWLET P_GEN_7_POKEMON +#define P_FAMILY_LITTEN P_GEN_7_POKEMON +#define P_FAMILY_POPPLIO P_GEN_7_POKEMON +#define P_FAMILY_PIKIPEK P_GEN_7_POKEMON +#define P_FAMILY_YUNGOOS P_GEN_7_POKEMON +#define P_FAMILY_GRUBBIN P_GEN_7_POKEMON +#define P_FAMILY_CRABRAWLER P_GEN_7_POKEMON +#define P_FAMILY_ORICORIO P_GEN_7_POKEMON +#define P_FAMILY_CUTIEFLY P_GEN_7_POKEMON +#define P_FAMILY_ROCKRUFF P_GEN_7_POKEMON +#define P_FAMILY_WISHIWASHI P_GEN_7_POKEMON +#define P_FAMILY_MAREANIE P_GEN_7_POKEMON +#define P_FAMILY_MUDBRAY P_GEN_7_POKEMON +#define P_FAMILY_DEWPIDER P_GEN_7_POKEMON +#define P_FAMILY_FOMANTIS P_GEN_7_POKEMON +#define P_FAMILY_MORELULL P_GEN_7_POKEMON +#define P_FAMILY_SALANDIT P_GEN_7_POKEMON +#define P_FAMILY_STUFFUL P_GEN_7_POKEMON +#define P_FAMILY_BOUNSWEET P_GEN_7_POKEMON +#define P_FAMILY_COMFEY P_GEN_7_POKEMON +#define P_FAMILY_ORANGURU P_GEN_7_POKEMON +#define P_FAMILY_PASSIMIAN P_GEN_7_POKEMON +#define P_FAMILY_WIMPOD P_GEN_7_POKEMON +#define P_FAMILY_SANDYGAST P_GEN_7_POKEMON +#define P_FAMILY_PYUKUMUKU P_GEN_7_POKEMON +#define P_FAMILY_TYPE_NULL P_GEN_7_POKEMON +#define P_FAMILY_MINIOR P_GEN_7_POKEMON +#define P_FAMILY_KOMALA P_GEN_7_POKEMON +#define P_FAMILY_TURTONATOR P_GEN_7_POKEMON +#define P_FAMILY_TOGEDEMARU P_GEN_7_POKEMON +#define P_FAMILY_MIMIKYU P_GEN_7_POKEMON +#define P_FAMILY_BRUXISH P_GEN_7_POKEMON +#define P_FAMILY_DRAMPA P_GEN_7_POKEMON +#define P_FAMILY_DHELMISE P_GEN_7_POKEMON +#define P_FAMILY_JANGMO_O P_GEN_7_POKEMON +#define P_FAMILY_TAPU_KOKO P_GEN_7_POKEMON +#define P_FAMILY_TAPU_LELE P_GEN_7_POKEMON +#define P_FAMILY_TAPU_BULU P_GEN_7_POKEMON +#define P_FAMILY_TAPU_FINI P_GEN_7_POKEMON +#define P_FAMILY_COSMOG P_GEN_7_POKEMON +#define P_FAMILY_NIHILEGO P_GEN_7_POKEMON +#define P_FAMILY_BUZZWOLE P_GEN_7_POKEMON +#define P_FAMILY_PHEROMOSA P_GEN_7_POKEMON +#define P_FAMILY_XURKITREE P_GEN_7_POKEMON +#define P_FAMILY_CELESTEELA P_GEN_7_POKEMON +#define P_FAMILY_KARTANA P_GEN_7_POKEMON +#define P_FAMILY_GUZZLORD P_GEN_7_POKEMON +#define P_FAMILY_NECROZMA P_GEN_7_POKEMON +#define P_FAMILY_MAGEARNA P_GEN_7_POKEMON +#define P_FAMILY_MARSHADOW P_GEN_7_POKEMON +#define P_FAMILY_POIPOLE P_GEN_7_POKEMON +#define P_FAMILY_STAKATAKA P_GEN_7_POKEMON +#define P_FAMILY_BLACEPHALON P_GEN_7_POKEMON +#define P_FAMILY_ZERAORA P_GEN_7_POKEMON +#define P_FAMILY_MELTAN P_GEN_7_POKEMON + +#define P_FAMILY_GROOKEY P_GEN_8_POKEMON +#define P_FAMILY_SCORBUNNY P_GEN_8_POKEMON +#define P_FAMILY_SOBBLE P_GEN_8_POKEMON +#define P_FAMILY_SKWOVET P_GEN_8_POKEMON +#define P_FAMILY_ROOKIDEE P_GEN_8_POKEMON +#define P_FAMILY_BLIPBUG P_GEN_8_POKEMON +#define P_FAMILY_NICKIT P_GEN_8_POKEMON +#define P_FAMILY_GOSSIFLEUR P_GEN_8_POKEMON +#define P_FAMILY_WOOLOO P_GEN_8_POKEMON +#define P_FAMILY_CHEWTLE P_GEN_8_POKEMON +#define P_FAMILY_YAMPER P_GEN_8_POKEMON +#define P_FAMILY_ROLYCOLY P_GEN_8_POKEMON +#define P_FAMILY_APPLIN P_GEN_8_POKEMON +#define P_FAMILY_SILICOBRA P_GEN_8_POKEMON +#define P_FAMILY_CRAMORANT P_GEN_8_POKEMON +#define P_FAMILY_ARROKUDA P_GEN_8_POKEMON +#define P_FAMILY_TOXEL P_GEN_8_POKEMON +#define P_FAMILY_SIZZLIPEDE P_GEN_8_POKEMON +#define P_FAMILY_CLOBBOPUS P_GEN_8_POKEMON +#define P_FAMILY_SINISTEA P_GEN_8_POKEMON +#define P_FAMILY_HATENNA P_GEN_8_POKEMON +#define P_FAMILY_IMPIDIMP P_GEN_8_POKEMON +#define P_FAMILY_MILCERY P_GEN_8_POKEMON +#define P_FAMILY_FALINKS P_GEN_8_POKEMON +#define P_FAMILY_PINCURCHIN P_GEN_8_POKEMON +#define P_FAMILY_SNOM P_GEN_8_POKEMON +#define P_FAMILY_STONJOURNER P_GEN_8_POKEMON +#define P_FAMILY_EISCUE P_GEN_8_POKEMON +#define P_FAMILY_INDEEDEE P_GEN_8_POKEMON +#define P_FAMILY_MORPEKO P_GEN_8_POKEMON +#define P_FAMILY_CUFANT P_GEN_8_POKEMON +#define P_FAMILY_DRACOZOLT P_GEN_8_POKEMON +#define P_FAMILY_ARCTOZOLT P_GEN_8_POKEMON +#define P_FAMILY_DRACOVISH P_GEN_8_POKEMON +#define P_FAMILY_ARCTOVISH P_GEN_8_POKEMON +#define P_FAMILY_DURALUDON P_GEN_8_POKEMON +#define P_FAMILY_DREEPY P_GEN_8_POKEMON +#define P_FAMILY_ZACIAN P_GEN_8_POKEMON +#define P_FAMILY_ZAMAZENTA P_GEN_8_POKEMON +#define P_FAMILY_ETERNATUS P_GEN_8_POKEMON +#define P_FAMILY_KUBFU P_GEN_8_POKEMON +#define P_FAMILY_ZARUDE P_GEN_8_POKEMON +#define P_FAMILY_REGIELEKI P_GEN_8_POKEMON +#define P_FAMILY_REGIDRAGO P_GEN_8_POKEMON +#define P_FAMILY_GLASTRIER P_GEN_8_POKEMON +#define P_FAMILY_SPECTRIER P_GEN_8_POKEMON +#define P_FAMILY_CALYREX P_GEN_8_POKEMON +#define P_FAMILY_ENAMORUS P_GEN_8_POKEMON + +#define P_FAMILY_SPRIGATITO P_GEN_9_POKEMON +#define P_FAMILY_FUECOCO P_GEN_9_POKEMON +#define P_FAMILY_QUAXLY P_GEN_9_POKEMON +#define P_FAMILY_LECHONK P_GEN_9_POKEMON +#define P_FAMILY_TAROUNTULA P_GEN_9_POKEMON +#define P_FAMILY_NYMBLE P_GEN_9_POKEMON +#define P_FAMILY_PAWMI P_GEN_9_POKEMON +#define P_FAMILY_TANDEMAUS P_GEN_9_POKEMON +#define P_FAMILY_FIDOUGH P_GEN_9_POKEMON +#define P_FAMILY_SMOLIV P_GEN_9_POKEMON +#define P_FAMILY_SQUAWKABILLY P_GEN_9_POKEMON +#define P_FAMILY_NACLI P_GEN_9_POKEMON +#define P_FAMILY_CHARCADET P_GEN_9_POKEMON +#define P_FAMILY_TADBULB P_GEN_9_POKEMON +#define P_FAMILY_WATTREL P_GEN_9_POKEMON +#define P_FAMILY_MASCHIFF P_GEN_9_POKEMON +#define P_FAMILY_SHROODLE P_GEN_9_POKEMON +#define P_FAMILY_BRAMBLIN P_GEN_9_POKEMON +#define P_FAMILY_TOEDSCOOL P_GEN_9_POKEMON +#define P_FAMILY_KLAWF P_GEN_9_POKEMON +#define P_FAMILY_CAPSAKID P_GEN_9_POKEMON +#define P_FAMILY_RELLOR P_GEN_9_POKEMON +#define P_FAMILY_FLITTLE P_GEN_9_POKEMON +#define P_FAMILY_TINKATINK P_GEN_9_POKEMON +#define P_FAMILY_WIGLETT P_GEN_9_POKEMON +#define P_FAMILY_BOMBIRDIER P_GEN_9_POKEMON +#define P_FAMILY_FINIZEN P_GEN_9_POKEMON +#define P_FAMILY_VAROOM P_GEN_9_POKEMON +#define P_FAMILY_CYCLIZAR P_GEN_9_POKEMON +#define P_FAMILY_ORTHWORM P_GEN_9_POKEMON +#define P_FAMILY_GLIMMET P_GEN_9_POKEMON +#define P_FAMILY_GREAVARD P_GEN_9_POKEMON +#define P_FAMILY_FLAMIGO P_GEN_9_POKEMON +#define P_FAMILY_CETODDLE P_GEN_9_POKEMON +#define P_FAMILY_VELUZA P_GEN_9_POKEMON +#define P_FAMILY_DONDOZO P_GEN_9_POKEMON +#define P_FAMILY_TATSUGIRI P_GEN_9_POKEMON +#define P_FAMILY_GREAT_TUSK P_GEN_9_POKEMON +#define P_FAMILY_SCREAM_TAIL P_GEN_9_POKEMON +#define P_FAMILY_BRUTE_BONNET P_GEN_9_POKEMON +#define P_FAMILY_FLUTTER_MANE P_GEN_9_POKEMON +#define P_FAMILY_SLITHER_WING P_GEN_9_POKEMON +#define P_FAMILY_SANDY_SHOCKS P_GEN_9_POKEMON +#define P_FAMILY_IRON_TREADS P_GEN_9_POKEMON +#define P_FAMILY_IRON_BUNDLE P_GEN_9_POKEMON +#define P_FAMILY_IRON_HANDS P_GEN_9_POKEMON +#define P_FAMILY_IRON_JUGULIS P_GEN_9_POKEMON +#define P_FAMILY_IRON_MOTH P_GEN_9_POKEMON +#define P_FAMILY_IRON_THORNS P_GEN_9_POKEMON +#define P_FAMILY_FRIGIBAX P_GEN_9_POKEMON +#define P_FAMILY_GIMMIGHOUL P_GEN_9_POKEMON +#define P_FAMILY_WO_CHIEN P_GEN_9_POKEMON +#define P_FAMILY_CHIEN_PAO P_GEN_9_POKEMON +#define P_FAMILY_TING_LU P_GEN_9_POKEMON +#define P_FAMILY_CHI_YU P_GEN_9_POKEMON +#define P_FAMILY_ROARING_MOON P_GEN_9_POKEMON +#define P_FAMILY_IRON_VALIANT P_GEN_9_POKEMON +#define P_FAMILY_KORAIDON P_GEN_9_POKEMON +#define P_FAMILY_MIRAIDON P_GEN_9_POKEMON +#define P_FAMILY_WALKING_WAKE P_GEN_9_POKEMON +#define P_FAMILY_IRON_LEAVES P_GEN_9_POKEMON +#define P_FAMILY_POLTCHAGEIST P_GEN_9_POKEMON +#define P_FAMILY_SINISTCHA P_GEN_9_POKEMON +#define P_FAMILY_OKIDOGI P_GEN_9_POKEMON +#define P_FAMILY_MUNKIDORI P_GEN_9_POKEMON +#define P_FAMILY_FEZANDIPITI P_GEN_9_POKEMON +#define P_FAMILY_OGERPON P_GEN_9_POKEMON + +#endif // GUARD_CONFIG_SPECIES_ENABLED_H diff --git a/include/constants/abilities.h b/include/constants/abilities.h index 94e5986f77..7e3b1728d9 100644 --- a/include/constants/abilities.h +++ b/include/constants/abilities.h @@ -324,8 +324,20 @@ #define ABILITY_ARMOR_TAIL 296 #define ABILITY_EARTH_EATER 297 #define ABILITY_MYCELIUM_MIGHT 298 +#define ABILITY_HOSPITALITY 299 +#define ABILITY_MINDS_EYE 300 +#define ABILITY_EMBODY_ASPECT_TEAL 301 +#define ABILITY_EMBODY_ASPECT_HEARTHFLAME 302 +#define ABILITY_EMBODY_ASPECT_WELLSPRING 303 +#define ABILITY_EMBODY_ASPECT_CORNERSTONE 304 +#define ABILITY_TOXIC_CHAIN 305 +#define ABILITY_SUPERSWEET_SYRUP 306 +#define ABILITY_307 307 +#define ABILITY_308 308 +#define ABILITY_309 309 +#define ABILITY_310 310 -#define ABILITIES_COUNT_GEN9 299 +#define ABILITIES_COUNT_GEN9 311 #define ABILITIES_COUNT ABILITIES_COUNT_GEN9 diff --git a/include/constants/battle.h b/include/constants/battle.h index f21452310e..35addb937b 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -57,9 +57,9 @@ #define BATTLE_TYPE_WALLY_TUTORIAL (1 << 9) // Used in pokefirered as BATTLE_TYPE_OLD_MAN_TUTORIAL. #define BATTLE_TYPE_ROAMER (1 << 10) #define BATTLE_TYPE_EREADER_TRAINER (1 << 11) -#define BATTLE_TYPE_KYOGRE_GROUDON (1 << 12) +#define BATTLE_TYPE_RAID (1 << 12) #define BATTLE_TYPE_LEGENDARY (1 << 13) -#define BATTLE_TYPE_REGI (1 << 14) +#define BATTLE_TYPE_14 (1 << 14) #define BATTLE_TYPE_TWO_OPPONENTS (1 << 15) // Used in pokefirered as BATTLE_TYPE_GHOST. #define BATTLE_TYPE_DOME (1 << 16) // Used in pokefirered as BATTLE_TYPE_POKEDUDE. #define BATTLE_TYPE_PALACE (1 << 17) // Used in pokefirered as BATTLE_TYPE_WILD_SCRIPTED. @@ -73,19 +73,19 @@ #define BATTLE_TYPE_RECORDED_LINK (1 << 25) #define BATTLE_TYPE_TRAINER_HILL (1 << 26) #define BATTLE_TYPE_SECRET_BASE (1 << 27) -#define BATTLE_TYPE_GROUDON (1 << 28) -#define BATTLE_TYPE_KYOGRE (1 << 29) -#define BATTLE_TYPE_RAYQUAZA (1 << 30) +#define BATTLE_TYPE_28 (1 << 28) +#define BATTLE_TYPE_29 (1 << 29) +#define BATTLE_TYPE_30 (1 << 30) #define BATTLE_TYPE_RECORDED_IS_MASTER (1 << 31) #define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID) #define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE) #define BATTLE_TYPE_RECORDED_INVALID ((BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_FIRST_BATTLE \ | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_ROAMER | BATTLE_TYPE_EREADER_TRAINER \ - | BATTLE_TYPE_KYOGRE_GROUDON | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI \ - | BATTLE_TYPE_RECORDED | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_SECRET_BASE \ - | BATTLE_TYPE_GROUDON | BATTLE_TYPE_KYOGRE | BATTLE_TYPE_RAYQUAZA)) + | BATTLE_TYPE_LEGENDARY \ + | BATTLE_TYPE_RECORDED | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_SECRET_BASE)) #define WILD_DOUBLE_BATTLE ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER)))) +#define RECORDED_WILD_BATTLE ((gBattleTypeFlags & BATTLE_TYPE_RECORDED) && !(gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_FRONTIER))) #define BATTLE_TWO_VS_ONE_OPPONENT ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gTrainerBattleOpponent_B == 0xFFFF)) #define BATTLE_TYPE_HAS_AI (BATTLE_TYPE_TRAINER | BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_SAFARI | BATTLE_TYPE_ROAMER | BATTLE_TYPE_INGAME_PARTNER) @@ -183,25 +183,27 @@ #define STATUS3_SEMI_INVULNERABLE (STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER | STATUS3_PHANTOM_FORCE) #define STATUS4_ELECTRIFIED (1 << 0) -#define STATUS4_PLASMA_FISTS (1 << 1) -#define STATUS4_MUD_SPORT (1 << 2) // Only used if B_SPORT_TURNS < GEN_6 -#define STATUS4_WATER_SPORT (1 << 3) // Only used if B_SPORT_TURNS < GEN_6 -#define STATUS4_INFINITE_CONFUSION (1 << 4) // Used for Berserk Gene -#define STATUS4_SALT_CURE (1 << 5) +#define STATUS4_MUD_SPORT (1 << 1) // Only used if B_SPORT_TURNS < GEN_6 +#define STATUS4_WATER_SPORT (1 << 2) // Only used if B_SPORT_TURNS < GEN_6 +#define STATUS4_INFINITE_CONFUSION (1 << 3) // Used for Berserk Gene +#define STATUS4_SALT_CURE (1 << 4) +#define STATUS4_SYRUP_BOMB (1 << 5) +#define STATUS4_GLAIVE_RUSH (1 << 6) #define HITMARKER_WAKE_UP_CLEAR (1 << 4) // Cleared when waking up. Never set or checked. -#define HITMARKER_SKIP_DMG_TRACK (1 << 5) +#define HITMARKER_IGNORE_BIDE (1 << 5) #define HITMARKER_DESTINYBOND (1 << 6) -#define HITMARKER_NO_ANIMATIONS (1 << 7) +#define HITMARKER_NO_ANIMATIONS (1 << 7) // set from battleSceneOff. Never changed during battle #define HITMARKER_IGNORE_SUBSTITUTE (1 << 8) #define HITMARKER_NO_ATTACKSTRING (1 << 9) #define HITMARKER_ATTACKSTRING_PRINTED (1 << 10) #define HITMARKER_NO_PPDEDUCT (1 << 11) #define HITMARKER_SWAP_ATTACKER_TARGET (1 << 12) -#define HITMARKER_IGNORE_SAFEGUARD (1 << 13) +#define HITMARKER_STATUS_ABILITY_EFFECT (1 << 13) #define HITMARKER_SYNCHRONISE_EFFECT (1 << 14) #define HITMARKER_RUN (1 << 15) #define HITMARKER_IGNORE_DISGUISE (1 << 16) +#define HITMARKER_DISABLE_ANIMATION (1 << 17) // disable animations during battle scripts, e.g. for Bug Bite // 3 free spots because of change in handling of UNDERGROUND/UNDERWATER/ON AIR #define HITMARKER_UNABLE_TO_USE_MOVE (1 << 19) #define HITMARKER_PASSIVE_DAMAGE (1 << 20) @@ -235,9 +237,15 @@ #define SIDE_STATUS_WIDE_GUARD (1 << 19) #define SIDE_STATUS_CRAFTY_SHIELD (1 << 20) #define SIDE_STATUS_MAT_BLOCK (1 << 21) +#define SIDE_STATUS_STEELSURGE (1 << 22) +#define SIDE_STATUS_DAMAGE_NON_TYPES (1 << 23) +#define SIDE_STATUS_RAINBOW (1 << 24) +#define SIDE_STATUS_SEA_OF_FIRE (1 << 25) +#define SIDE_STATUS_SWAMP (1 << 26) -#define SIDE_STATUS_HAZARDS_ANY (SIDE_STATUS_SPIKES | SIDE_STATUS_STICKY_WEB | SIDE_STATUS_TOXIC_SPIKES | SIDE_STATUS_STEALTH_ROCK) +#define SIDE_STATUS_HAZARDS_ANY (SIDE_STATUS_SPIKES | SIDE_STATUS_STICKY_WEB | SIDE_STATUS_TOXIC_SPIKES | SIDE_STATUS_STEALTH_ROCK | SIDE_STATUS_STEELSURGE) #define SIDE_STATUS_SCREEN_ANY (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL) +#define SIDE_STATUS_PLEDGE_ANY (SIDE_STATUS_RAINBOW | SIDE_STATUS_SEA_OF_FIRE | SIDE_STATUS_SWAMP) // Field affecting statuses. #define STATUS_FIELD_MAGIC_ROOM (1 << 0) @@ -375,15 +383,15 @@ #define MOVE_EFFECT_INCINERATE 67 #define MOVE_EFFECT_BUG_BITE 68 #define MOVE_EFFECT_RECOIL_HP_25 69 -#define MOVE_EFFECT_RELIC_SONG 70 -#define MOVE_EFFECT_TRAP_BOTH 71 -#define MOVE_EFFECT_DOUBLE_SHOCK 72 -#define MOVE_EFFECT_ROUND 73 -#define MOVE_EFFECT_STOCKPILE_WORE_OFF 74 -#define MOVE_EFFECT_DIRE_CLAW 75 -#define MOVE_EFFECT_STEALTH_ROCK 76 -#define MOVE_EFFECT_SPIKES 77 -#define MOVE_EFFECT_TRIPLE_ARROWS 78 +#define MOVE_EFFECT_TRAP_BOTH 70 +#define MOVE_EFFECT_DOUBLE_SHOCK 71 +#define MOVE_EFFECT_ROUND 72 +#define MOVE_EFFECT_STOCKPILE_WORE_OFF 73 +#define MOVE_EFFECT_DIRE_CLAW 74 +#define MOVE_EFFECT_STEALTH_ROCK 75 +#define MOVE_EFFECT_SPIKES 76 +#define MOVE_EFFECT_TRIPLE_ARROWS 77 +#define MOVE_EFFECT_SYRUP_BOMB 78 #define MOVE_EFFECT_FLORAL_HEALING 79 #define NUM_MOVE_EFFECTS 80 @@ -500,4 +508,7 @@ #define HANDLE_TYPE_PRIMAL_REVERSION 1 #define HANDLE_TYPE_ULTRA_BURST 2 +// Constants for Torment +#define PERMANENT_TORMENT 0xF + #endif // GUARD_CONSTANTS_BATTLE_H diff --git a/include/constants/battle_ai.h b/include/constants/battle_ai.h index 32b7f7d10c..ad489a4dd6 100644 --- a/include/constants/battle_ai.h +++ b/include/constants/battle_ai.h @@ -24,20 +24,6 @@ #define AI_EFFECTIVENESS_x0_125 1 #define AI_EFFECTIVENESS_x0 0 -// ai weather -#define AI_WEATHER_NONE 0 -#define AI_WEATHER_SUN 1 -#define AI_WEATHER_RAIN 2 -#define AI_WEATHER_SANDSTORM 3 -#define AI_WEATHER_HAIL 4 -#define AI_WEATHER_SNOW 5 - -// get_how_powerful_move_is -#define MOVE_POWER_OTHER 0 -#define MOVE_POWER_BEST 1 -#define MOVE_POWER_GOOD 2 // Similar dmg range with best. -#define MOVE_POWER_WEAK 3 // Significantly lower than best and good. - // AI Flags. Most run specific functions to update score, new flags are used for internal logic in other scripts #define AI_FLAG_CHECK_BAD_MOVE (1 << 0) #define AI_FLAG_TRY_TO_FAINT (1 << 1) @@ -59,6 +45,7 @@ #define AI_FLAG_SMART_SWITCHING (1 << 15) // AI includes a lot more switching checks #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_COUNT 18 @@ -67,4 +54,6 @@ #define AI_FLAG_SAFARI (1 << 30) #define AI_FLAG_FIRST_BATTLE (1 << 31) +#define AI_SCORE_DEFAULT 100 // Default score for all AI moves. + #endif // GUARD_CONSTANTS_BATTLE_AI_H diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 9876652b65..76e68b2457 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -398,7 +398,13 @@ #define ANIM_TAG_POLTERGEIST (ANIM_SPRITES_START + 384) #define ANIM_TAG_TEAPOT (ANIM_SPRITES_START + 385) #define ANIM_TAG_WOOD_HAMMER_HAMMER (ANIM_SPRITES_START + 386) - +#define ANIM_TAG_SNOWFLAKES (ANIM_SPRITES_START + 387) +#define ANIM_TAG_SYRUP_BLOB_RED (ANIM_SPRITES_START + 388) +#define ANIM_TAG_SYRUP_SHELL_RED (ANIM_SPRITES_START + 389) +#define ANIM_TAG_SYRUP_BLOB_YELLOW (ANIM_SPRITES_START + 390) +#define ANIM_TAG_SYRUP_SHELL_YELLOW (ANIM_SPRITES_START + 391) +#define ANIM_TAG_SYRUP_SPLAT_RED (ANIM_SPRITES_START + 392) +#define ANIM_TAG_SYRUP_SPLAT_YELLOW (ANIM_SPRITES_START + 393) // battlers #define ANIM_ATTACKER 0 @@ -509,6 +515,7 @@ #define BG_STEEL_BEAM_OPPONENT 78 #define BG_STEEL_BEAM_PLAYER 79 #define BG_CHLOROBLAST 80 +#define BG_RAINBOW 81 // table ids for general animations (gBattleAnims_General) #define B_ANIM_STATS_CHANGE 0 @@ -550,6 +557,12 @@ #define B_ANIM_SNOW_CONTINUES 36 #define B_ANIM_ULTRA_BURST 37 #define B_ANIM_SALT_CURE_DAMAGE 38 +#define B_ANIM_DYNAMAX_GROWTH 39 +#define B_ANIM_MAX_SET_WEATHER 40 +#define B_ANIM_SYRUP_BOMB_SPEED_DROP 41 +#define B_ANIM_RAINBOW 42 +#define B_ANIM_SEA_OF_FIRE 43 +#define B_ANIM_SWAMP 44 // special animations table (gBattleAnims_Special) #define B_ANIM_LVL_UP 0 diff --git a/include/constants/battle_dome.h b/include/constants/battle_dome.h index adac0a938d..c855c1ab57 100644 --- a/include/constants/battle_dome.h +++ b/include/constants/battle_dome.h @@ -105,22 +105,22 @@ #define DOME_TEXT_SPEED 12 #define DOME_TEXT_SPATK 14 -// Move point indexes for sBattleStyleMovePoints[][], to determine Battle Dome trainers battle styles -#define MOVE_POINTS_COMBO 0 // Moves that work well in combination (e.g. Rain Dance + Hydro Pump) +// Determine Battle Dome trainers battle styles +#define MOVE_POINTS_COMBO 0 // Moves that work well in combination: moves that cause or are affected by weather/terrain, Stockpile+, entry hazards, sleep inflictions & effects benefiting from it, offensive boosts of a single stat with at least two stages or at least two stats, and several other effects #define MOVE_POINTS_STAT_RAISE 1 #define MOVE_POINTS_STAT_LOWER 2 -#define MOVE_POINTS_RARE 3 // Uncommon moves. Mostly arbitrary -#define MOVE_POINTS_HEAL 4 -#define MOVE_POINTS_RISKY 5 -#define MOVE_POINTS_STATUS 6 -#define MOVE_POINTS_DMG 7 -#define MOVE_POINTS_DEF 8 // Defensive moves, like Amnesia, Light Screen, or accuracy-lowers -#define MOVE_POINTS_ACCURATE 9 -#define MOVE_POINTS_POWERFUL 10 // Most of the moves that are >= 100 power -#define MOVE_POINTS_POPULAR 11 // Group seems arbitrary. All using it are TM/HMs, but its only 11/58 -#define MOVE_POINTS_LUCK 12 -#define MOVE_POINTS_STRONG 13 // Most of the moves that are >= 90 power -#define MOVE_POINTS_LOW_PP 14 +#define MOVE_POINTS_RARE 3 // Moves that appear in less than 5% of levelup learnsets +#define MOVE_POINTS_HEAL 4 // Moves that heal +#define MOVE_POINTS_RISKY 5 // Move effects deemed risky by the Emerald developers (excluding High Jump Kick and others for some reason) +#define MOVE_POINTS_STATUS 6 // Moves that cause status effects without dealing damage +#define MOVE_POINTS_DMG 7 // Moves that deal damage (BP > 0) +#define MOVE_POINTS_DEF 8 // Moves like screens, accuracy-lowers or evasiveness-raisers, (special) defense raisers, protect etc. +#define MOVE_POINTS_ACCURATE 9 // Moves with 100% accuracy (or that are guaranteed hits) +#define MOVE_POINTS_POWERFUL 10 // Moves with 100 BP or more +#define MOVE_POINTS_POPULAR 11 // TM/HM moves with 90 BP or more or those that raise a single offensive stat by at least 2 stages +#define MOVE_POINTS_LUCK 12 // Move effects that depend on luck and moves with Accuracy of <= 50% +#define MOVE_POINTS_STRONG 13 // Moves with 90 BP or more +#define MOVE_POINTS_LOW_PP 14 // Moves with 5 PP or less #define MOVE_POINTS_EFFECT 15 // Moves with additional effects #define NUM_MOVE_POINT_TYPES 16 diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index 90d14d58fb..beebe59462 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -167,7 +167,7 @@ #define EFFECT_MEMENTO 163 #define EFFECT_FACADE 164 #define EFFECT_FOCUS_PUNCH 165 -#define EFFECT_SMELLINGSALT 166 +#define EFFECT_SMELLING_SALTS 166 #define EFFECT_FOLLOW_ME 167 #define EFFECT_NATURE_POWER 168 #define EFFECT_CHARGE 169 @@ -412,9 +412,15 @@ #define EFFECT_CORROSIVE_GAS 406 #define EFFECT_POPULATION_BOMB 407 #define EFFECT_MORTAL_SPIN 408 -#define EFFECT_GIGATON_HAMMER 409 -#define EFFECT_SALT_CURE 410 +#define EFFECT_SALT_CURE 409 +#define EFFECT_CHILLY_RECEPTION 410 +#define EFFECT_MATCHA_GOTCHA 411 +#define EFFECT_SYRUP_BOMB 412 +#define EFFECT_MAX_MOVE 413 +#define EFFECT_GLAIVE_RUSH 414 +#define EFFECT_RAGING_BULL 415 +#define EFFECT_RAGE_FIST 416 -#define NUM_BATTLE_MOVE_EFFECTS 411 +#define NUM_BATTLE_MOVE_EFFECTS 417 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 82c2692af4..7e95ea785b 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -143,109 +143,104 @@ #define VARIOUS_ARGUMENT_STATUS_EFFECT 51 #define VARIOUS_TRY_HIT_SWITCH_TARGET 52 #define VARIOUS_TRY_AUTOTOMIZE 53 -#define VARIOUS_TRY_COPYCAT 54 -#define VARIOUS_ABILITY_POPUP 55 -#define VARIOUS_JUMP_IF_TARGET_ALLY 56 -#define VARIOUS_TRY_SYNCHRONOISE 57 -#define VARIOUS_PSYCHO_SHIFT 58 -#define VARIOUS_CURE_STATUS 59 -#define VARIOUS_POWER_TRICK 60 -#define VARIOUS_AFTER_YOU 61 -#define VARIOUS_BESTOW 62 -#define VARIOUS_ARGUMENT_TO_MOVE_EFFECT 63 -#define VARIOUS_JUMP_IF_NOT_GROUNDED 64 -#define VARIOUS_HANDLE_TRAINER_SLIDE_MSG 65 -#define VARIOUS_TRY_TRAINER_SLIDE_MSG_FIRST_OFF 66 -#define VARIOUS_TRY_TRAINER_SLIDE_MSG_LAST_ON 67 -#define VARIOUS_SET_AURORA_VEIL 68 -#define VARIOUS_TRY_THIRD_TYPE 69 -#define VARIOUS_ACUPRESSURE 70 -#define VARIOUS_SET_POWDER 71 -#define VARIOUS_SPECTRAL_THIEF 72 -#define VARIOUS_GRAVITY_ON_AIRBORNE_MONS 73 -#define VARIOUS_CHECK_IF_GRASSY_TERRAIN_HEALS 74 -#define VARIOUS_JUMP_IF_ROAR_FAILS 75 -#define VARIOUS_TRY_INSTRUCT 76 -#define VARIOUS_JUMP_IF_NOT_BERRY 77 -#define VARIOUS_TRACE_ABILITY 78 -#define VARIOUS_UPDATE_NICK 79 -#define VARIOUS_TRY_ILLUSION_OFF 80 -#define VARIOUS_SET_SPRITEIGNORE0HP 81 -#define VARIOUS_HANDLE_FORM_CHANGE 82 -#define VARIOUS_GET_STAT_VALUE 83 -#define VARIOUS_JUMP_IF_FULL_HP 84 -#define VARIOUS_LOSE_TYPE 85 -#define VARIOUS_TRY_ACTIVATE_SOULHEART 86 -#define VARIOUS_TRY_ACTIVATE_RECEIVER 87 -#define VARIOUS_TRY_ACTIVATE_BEAST_BOOST 88 -#define VARIOUS_TRY_FRISK 89 -#define VARIOUS_JUMP_IF_SHIELDS_DOWN_PROTECTED 90 -#define VARIOUS_TRY_FAIRY_LOCK 91 -#define VARIOUS_JUMP_IF_NO_ALLY 92 -#define VARIOUS_POISON_TYPE_IMMUNITY 93 -#define VARIOUS_JUMP_IF_NO_HOLD_EFFECT 94 -#define VARIOUS_INFATUATE_WITH_BATTLER 95 -#define VARIOUS_SET_LAST_USED_ITEM 96 -#define VARIOUS_PARALYZE_TYPE_IMMUNITY 97 -#define VARIOUS_JUMP_IF_ABSENT 98 -#define VARIOUS_DESTROY_ABILITY_POPUP 99 -#define VARIOUS_TOTEM_BOOST 100 -#define VARIOUS_TRY_ACTIVATE_GRIM_NEIGH 101 -#define VARIOUS_MOVEEND_ITEM_EFFECTS 102 -#define VARIOUS_TERRAIN_SEED 103 -#define VARIOUS_MAKE_INVISIBLE 104 -#define VARIOUS_ROOM_SERVICE 105 -#define VARIOUS_EERIE_SPELL_PP_REDUCE 106 -#define VARIOUS_JUMP_IF_TEAM_HEALTHY 107 -#define VARIOUS_TRY_HEAL_QUARTER_HP 108 -#define VARIOUS_REMOVE_TERRAIN 109 -#define VARIOUS_JUMP_IF_PRANKSTER_BLOCKED 110 -#define VARIOUS_TRY_TO_CLEAR_PRIMAL_WEATHER 111 -#define VARIOUS_GET_ROTOTILLER_TARGETS 112 -#define VARIOUS_JUMP_IF_NOT_ROTOTILLER_AFFECTED 113 -#define VARIOUS_TRY_ACTIVATE_BATTLE_BOND 114 -#define VARIOUS_CONSUME_BERRY 115 -#define VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL 116 -#define VARIOUS_APPLY_PLASMA_FISTS 117 -#define VARIOUS_JUMP_IF_SPECIES 118 -#define VARIOUS_UPDATE_ABILITY_POPUP 119 -#define VARIOUS_JUMP_IF_WEATHER_AFFECTED 120 -#define VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED 121 -#define VARIOUS_SET_ATTACKER_STICKY_WEB_USER 122 -#define VARIOUS_PHOTON_GEYSER_CHECK 123 -#define VARIOUS_SHELL_SIDE_ARM_CHECK 124 -#define VARIOUS_TRY_NO_RETREAT 125 -#define VARIOUS_TRY_TAR_SHOT 126 -#define VARIOUS_CAN_TAR_SHOT_WORK 127 -#define VARIOUS_CHECK_POLTERGEIST 128 -#define VARIOUS_SET_OCTOLOCK 129 -#define VARIOUS_CUT_1_3_HP_RAISE_STATS 130 -#define VARIOUS_TRY_END_NEUTRALIZING_GAS 131 -#define VARIOUS_JUMP_IF_UNDER_200 132 -#define VARIOUS_SET_SKY_DROP 133 -#define VARIOUS_CLEAR_SKY_DROP 134 -#define VARIOUS_SKY_DROP_YAWN 135 -#define VARIOUS_JUMP_IF_HOLD_EFFECT 136 -#define VARIOUS_CURE_CERTAIN_STATUSES 137 -#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 138 -#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 139 -#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 140 -#define VARIOUS_SAVE_BATTLER_ITEM 141 -#define VARIOUS_RESTORE_BATTLER_ITEM 142 -#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 143 -#define VARIOUS_SET_BEAK_BLAST 144 -#define VARIOUS_SWAP_SIDE_STATUSES 145 -#define VARIOUS_SWAP_STATS 146 -#define VARIOUS_TEATIME_INVUL 147 -#define VARIOUS_TEATIME_TARGETS 148 -#define VARIOUS_TRY_WIND_RIDER_POWER 149 -#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 150 -#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 151 -#define VARIOUS_STORE_HEALING_WISH 152 -#define VARIOUS_HIT_SWITCH_TARGET_FAILED 153 -#define VARIOUS_TRY_REVIVAL_BLESSING 154 -#define VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE 155 -#define VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION 156 +#define VARIOUS_ABILITY_POPUP 54 +#define VARIOUS_JUMP_IF_TARGET_ALLY 55 +#define VARIOUS_TRY_SYNCHRONOISE 56 +#define VARIOUS_PSYCHO_SHIFT 57 +#define VARIOUS_CURE_STATUS 58 +#define VARIOUS_POWER_TRICK 59 +#define VARIOUS_AFTER_YOU 60 +#define VARIOUS_BESTOW 61 +#define VARIOUS_ARGUMENT_TO_MOVE_EFFECT 62 +#define VARIOUS_JUMP_IF_NOT_GROUNDED 63 +#define VARIOUS_HANDLE_TRAINER_SLIDE_MSG 64 +#define VARIOUS_TRY_TRAINER_SLIDE_MSG_FIRST_OFF 65 +#define VARIOUS_TRY_TRAINER_SLIDE_MSG_LAST_ON 66 +#define VARIOUS_SET_AURORA_VEIL 67 +#define VARIOUS_TRY_THIRD_TYPE 68 +#define VARIOUS_ACUPRESSURE 69 +#define VARIOUS_SET_POWDER 70 +#define VARIOUS_SPECTRAL_THIEF 71 +#define VARIOUS_GRAVITY_ON_AIRBORNE_MONS 72 +#define VARIOUS_CHECK_IF_GRASSY_TERRAIN_HEALS 73 +#define VARIOUS_JUMP_IF_ROAR_FAILS 74 +#define VARIOUS_TRY_INSTRUCT 75 +#define VARIOUS_JUMP_IF_NOT_BERRY 76 +#define VARIOUS_TRACE_ABILITY 77 +#define VARIOUS_UPDATE_NICK 78 +#define VARIOUS_TRY_ILLUSION_OFF 79 +#define VARIOUS_SET_SPRITEIGNORE0HP 80 +#define VARIOUS_HANDLE_FORM_CHANGE 81 +#define VARIOUS_GET_STAT_VALUE 82 +#define VARIOUS_JUMP_IF_FULL_HP 83 +#define VARIOUS_LOSE_TYPE 84 +#define VARIOUS_TRY_ACTIVATE_SOULHEART 85 +#define VARIOUS_TRY_ACTIVATE_RECEIVER 86 +#define VARIOUS_TRY_ACTIVATE_BEAST_BOOST 87 +#define VARIOUS_TRY_FRISK 88 +#define VARIOUS_JUMP_IF_SHIELDS_DOWN_PROTECTED 89 +#define VARIOUS_TRY_FAIRY_LOCK 90 +#define VARIOUS_JUMP_IF_NO_ALLY 91 +#define VARIOUS_POISON_TYPE_IMMUNITY 92 +#define VARIOUS_JUMP_IF_NO_HOLD_EFFECT 93 +#define VARIOUS_INFATUATE_WITH_BATTLER 94 +#define VARIOUS_SET_LAST_USED_ITEM 95 +#define VARIOUS_PARALYZE_TYPE_IMMUNITY 96 +#define VARIOUS_JUMP_IF_ABSENT 97 +#define VARIOUS_DESTROY_ABILITY_POPUP 98 +#define VARIOUS_TOTEM_BOOST 99 +#define VARIOUS_TRY_ACTIVATE_GRIM_NEIGH 100 +#define VARIOUS_MOVEEND_ITEM_EFFECTS 101 +#define VARIOUS_TERRAIN_SEED 102 +#define VARIOUS_MAKE_INVISIBLE 103 +#define VARIOUS_ROOM_SERVICE 104 +#define VARIOUS_EERIE_SPELL_PP_REDUCE 105 +#define VARIOUS_JUMP_IF_TEAM_HEALTHY 106 +#define VARIOUS_TRY_HEAL_QUARTER_HP 107 +#define VARIOUS_REMOVE_TERRAIN 108 +#define VARIOUS_JUMP_IF_PRANKSTER_BLOCKED 109 +#define VARIOUS_TRY_TO_CLEAR_PRIMAL_WEATHER 110 +#define VARIOUS_GET_ROTOTILLER_TARGETS 111 +#define VARIOUS_JUMP_IF_NOT_ROTOTILLER_AFFECTED 112 +#define VARIOUS_TRY_ACTIVATE_BATTLE_BOND 113 +#define VARIOUS_CONSUME_BERRY 114 +#define VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL 115 +#define VARIOUS_JUMP_IF_SPECIES 116 +#define VARIOUS_UPDATE_ABILITY_POPUP 117 +#define VARIOUS_JUMP_IF_WEATHER_AFFECTED 118 +#define VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED 119 +#define VARIOUS_SET_ATTACKER_STICKY_WEB_USER 120 +#define VARIOUS_PHOTON_GEYSER_CHECK 121 +#define VARIOUS_SHELL_SIDE_ARM_CHECK 122 +#define VARIOUS_TRY_NO_RETREAT 123 +#define VARIOUS_TRY_TAR_SHOT 124 +#define VARIOUS_CAN_TAR_SHOT_WORK 125 +#define VARIOUS_CHECK_POLTERGEIST 126 +#define VARIOUS_CUT_1_3_HP_RAISE_STATS 127 +#define VARIOUS_TRY_END_NEUTRALIZING_GAS 128 +#define VARIOUS_JUMP_IF_UNDER_200 129 +#define VARIOUS_SET_SKY_DROP 130 +#define VARIOUS_CLEAR_SKY_DROP 131 +#define VARIOUS_SKY_DROP_YAWN 132 +#define VARIOUS_JUMP_IF_HOLD_EFFECT 133 +#define VARIOUS_CURE_CERTAIN_STATUSES 134 +#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 135 +#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 136 +#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 137 +#define VARIOUS_SAVE_BATTLER_ITEM 138 +#define VARIOUS_RESTORE_BATTLER_ITEM 139 +#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 140 +#define VARIOUS_SET_BEAK_BLAST 141 +#define VARIOUS_SWAP_SIDE_STATUSES 142 +#define VARIOUS_SWAP_STATS 143 +#define VARIOUS_TEATIME_INVUL 144 +#define VARIOUS_TEATIME_TARGETS 145 +#define VARIOUS_TRY_WIND_RIDER_POWER 146 +#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 147 +#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 148 +#define VARIOUS_STORE_HEALING_WISH 149 +#define VARIOUS_HIT_SWITCH_TARGET_FAILED 150 +#define VARIOUS_TRY_REVIVAL_BLESSING 151 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 @@ -302,26 +297,28 @@ #define MOVEEND_MOVE_EFFECTS2 13 #define MOVEEND_ITEM_EFFECTS_ALL 14 #define MOVEEND_KINGSROCK 15 // These item effects will occur each strike of a multi-hit move -#define MOVEEND_SUBSTITUTE 16 -#define MOVEEND_SKY_DROP_CONFUSE 17 -#define MOVEEND_UPDATE_LAST_MOVES 18 -#define MOVEEND_MIRROR_MOVE 19 -#define MOVEEND_NEXT_TARGET 20 // Everything up until here is handled for each strike of a multi-hit move -#define MOVEEND_MULTIHIT_MOVE 21 -#define MOVEEND_DEFROST 22 -#define MOVEEND_RECOIL 23 -#define MOVEEND_MAGICIAN 24 // Occurs after final multi-hit strike, and after other items/abilities would activate -#define MOVEEND_EJECT_BUTTON 25 -#define MOVEEND_RED_CARD 26 -#define MOVEEND_EJECT_PACK 27 -#define MOVEEND_LIFEORB_SHELLBELL 28 // Includes shell bell, throat spray, etc -#define MOVEEND_CHANGED_ITEMS 29 -#define MOVEEND_PICKPOCKET 30 -#define MOVEEND_DANCER 31 -#define MOVEEND_EMERGENCY_EXIT 32 -#define MOVEEND_SYMBIOSIS 33 -#define MOVEEND_CLEAR_BITS 34 -#define MOVEEND_COUNT 35 +#define MOVEEND_NUM_HITS 16 +#define MOVEEND_SUBSTITUTE 17 +#define MOVEEND_SKY_DROP_CONFUSE 18 +#define MOVEEND_UPDATE_LAST_MOVES 19 +#define MOVEEND_MIRROR_MOVE 20 +#define MOVEEND_NEXT_TARGET 21 // Everything up until here is handled for each strike of a multi-hit move +#define MOVEEND_MULTIHIT_MOVE 22 +#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_LIFEORB_SHELLBELL 29 // Includes shell bell, throat spray, etc +#define MOVEEND_CHANGED_ITEMS 30 +#define MOVEEND_PICKPOCKET 31 +#define MOVEEND_DANCER 32 +#define MOVEEND_EMERGENCY_EXIT 33 +#define MOVEEND_SYMBIOSIS 34 +#define MOVEEND_OPPORTUNIST 35 // Occurs after other stat change items/abilities to try and copy the boosts +#define MOVEEND_CLEAR_BITS 36 +#define MOVEEND_COUNT 37 // switch cases #define B_SWITCH_NORMAL 0 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 86a80c33cb..6263f87a38 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -547,7 +547,7 @@ #define STRINGID_NOONEWILLBEABLETORUNAWAY 545 #define STRINGID_DESTINYKNOTACTIVATES 546 #define STRINGID_CLOAKEDINAFREEZINGLIGHT 547 -#define STRINGID_STATWASNOTLOWERED 548 +#define STRINGID_CLEARAMULETWONTLOWERSTATS 548 #define STRINGID_FERVENTWISHREACHED 549 #define STRINGID_AIRLOCKACTIVATES 550 #define STRINGID_PRESSUREENTERS 551 @@ -670,8 +670,34 @@ #define STRINGID_CURRENTMOVECANTSELECT 668 #define STRINGID_TARGETISBEINGSALTCURED 669 #define STRINGID_TARGETISHURTBYSALTCURE 670 +#define STRINGID_OPPORTUNISTCOPIED 671 +#define STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP 672 +#define STRINGID_SHARPSTEELFLOATS 673 +#define STRINGID_SHARPSTEELDMG 674 +#define STRINGID_PKMNBLEWAWAYSHARPSTEEL 675 +#define STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM 676 +#define STRINGID_TEAMTRAPPEDWITHVINES 677 +#define STRINGID_PKMNHURTBYVINES 678 +#define STRINGID_TEAMCAUGHTINVORTEX 679 +#define STRINGID_PKMNHURTBYVORTEX 680 +#define STRINGID_TEAMSURROUNDEDBYFIRE 681 +#define STRINGID_PKMNBURNINGUP 682 +#define STRINGID_TEAMSURROUNDEDBYROCKS 683 +#define STRINGID_PKMNHURTBYROCKSTHROWN 684 +#define STRINGID_MOVEBLOCKEDBYDYNAMAX 685 +#define STRINGID_ZEROTOHEROTRANSFORMATION 686 +#define STRINGID_THETWOMOVESBECOMEONE 687 +#define STRINGID_ARAINBOWAPPEAREDONSIDE 688 +#define STRINGID_THERAINBOWDISAPPEARED 689 +#define STRINGID_WAITINGFORPARTNERSMOVE 690 +#define STRINGID_SEAOFFIREENVELOPEDSIDE 691 +#define STRINGID_HURTBYTHESEAOFFIRE 692 +#define STRINGID_THESEAOFFIREDISAPPEARED 693 +#define STRINGID_SWAMPENVELOPEDSIDE 694 +#define STRINGID_THESWAMPDISAPPEARED 695 +#define STRINGID_PKMNTELLCHILLINGRECEPTIONJOKE 696 -#define BATTLESTRINGS_COUNT 671 +#define BATTLESTRINGS_COUNT 697 // This is the string id that gBattleStringsTable starts with. // String ids before this (e.g. STRINGID_INTROMSG) are not in the table, @@ -974,7 +1000,21 @@ // gDmgHazardsStringIds #define B_MSG_PKMNHURTBYSPIKES 0 #define B_MSG_STEALTHROCKDMG 1 -#define B_MSG_POINTEDSTONESFLOAT 2 -#define B_MSG_SPIKESSCATTERED 3 +#define B_MSG_SHARPSTEELDMG 2 +#define B_MSG_POINTEDSTONESFLOAT 3 +#define B_MSG_SPIKESSCATTERED 4 +#define B_MSG_SHARPSTEELFLOATS 5 + +// gDamageNonTypesStartStringIds +#define B_MSG_TRAPPED_WITH_VINES 0 +#define B_MSG_CAUGHT_IN_VORTEX 1 +#define B_MSG_SURROUNDED_BY_FIRE 2 +#define B_MSG_SURROUNDED_BY_ROCKS 3 + +// gDamageNonTypesDmgStringIds +#define B_MSG_HURT_BY_VINES 0 +#define B_MSG_HURT_BY_VORTEX 1 +#define B_MSG_BURNING_UP 2 +#define B_MSG_HURT_BY_ROCKS_THROWN 3 #endif // GUARD_CONSTANTS_BATTLE_STRING_IDS_H diff --git a/include/constants/cries.h b/include/constants/cries.h new file mode 100644 index 0000000000..ddeee56d42 --- /dev/null +++ b/include/constants/cries.h @@ -0,0 +1,2410 @@ +#ifndef GUARD_CONSTANTS_CRIES_H +#define GUARD_CONSTANTS_CRIES_H + +enum { + CRY_NONE, +#if P_FAMILY_BULBASAUR + CRY_BULBASAUR, + CRY_IVYSAUR, + CRY_VENUSAUR, +#if P_MEGA_EVOLUTIONS + CRY_VENUSAUR_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BULBASAUR +#if P_FAMILY_CHARMANDER + CRY_CHARMANDER, + CRY_CHARMELEON, + CRY_CHARIZARD, +#if P_MEGA_EVOLUTIONS + CRY_CHARIZARD_MEGA_X, + CRY_CHARIZARD_MEGA_Y, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_CHARMANDER +#if P_FAMILY_SQUIRTLE + CRY_SQUIRTLE, + CRY_WARTORTLE, + CRY_BLASTOISE, +#if P_MEGA_EVOLUTIONS + CRY_BLASTOISE_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SQUIRTLE +#if P_FAMILY_CATERPIE + CRY_CATERPIE, + CRY_METAPOD, + CRY_BUTTERFREE, +#endif //P_FAMILY_CATERPIE +#if P_FAMILY_WEEDLE + CRY_WEEDLE, + CRY_KAKUNA, + CRY_BEEDRILL, +#if P_MEGA_EVOLUTIONS + CRY_BEEDRILL_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_WEEDLE +#if P_FAMILY_PIDGEY + CRY_PIDGEY, + CRY_PIDGEOTTO, + CRY_PIDGEOT, +#if P_MEGA_EVOLUTIONS + CRY_PIDGEOT_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_PIDGEY +#if P_FAMILY_RATTATA + CRY_RATTATA, + CRY_RATICATE, +#endif //P_FAMILY_RATTATA +#if P_FAMILY_SPEAROW + CRY_SPEAROW, + CRY_FEAROW, +#endif //P_FAMILY_SPEAROW +#if P_FAMILY_EKANS + CRY_EKANS, + CRY_ARBOK, +#endif //P_FAMILY_EKANS +#if P_FAMILY_PIKACHU +#if P_GEN_2_CROSS_EVOS + CRY_PICHU, +#endif //P_GEN_2_CROSS_EVOS + CRY_PIKACHU, + CRY_RAICHU, +#endif //P_FAMILY_PIKACHU +#if P_FAMILY_SANDSHREW + CRY_SANDSHREW, + CRY_SANDSLASH, +#endif //P_FAMILY_SANDSHREW +#if P_FAMILY_NIDORAN + CRY_NIDORAN_F, + CRY_NIDORINA, + CRY_NIDOQUEEN, + CRY_NIDORAN_M, + CRY_NIDORINO, + CRY_NIDOKING, +#endif //P_FAMILY_NIDORAN +#if P_FAMILY_CLEFAIRY +#if P_GEN_2_CROSS_EVOS + CRY_CLEFFA, +#endif //P_GEN_2_CROSS_EVOS + CRY_CLEFAIRY, + CRY_CLEFABLE, +#endif //P_FAMILY_CLEFAIRY +#if P_FAMILY_VULPIX + CRY_VULPIX, + CRY_NINETALES, +#endif //P_FAMILY_VULPIX +#if P_FAMILY_JIGGLYPUFF +#if P_GEN_2_CROSS_EVOS + CRY_IGGLYBUFF, +#endif //P_GEN_2_CROSS_EVOS + CRY_JIGGLYPUFF, + CRY_WIGGLYTUFF, +#endif //P_FAMILY_JIGGLYPUFF +#if P_FAMILY_ZUBAT + CRY_ZUBAT, + CRY_GOLBAT, +#if P_GEN_2_CROSS_EVOS + CRY_CROBAT, +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ZUBAT +#if P_FAMILY_ODDISH + CRY_ODDISH, + CRY_GLOOM, + CRY_VILEPLUME, +#if P_GEN_2_CROSS_EVOS + CRY_BELLOSSOM, +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ODDISH +#if P_FAMILY_PARAS + CRY_PARAS, + CRY_PARASECT, +#endif //P_FAMILY_PARAS +#if P_FAMILY_VENONAT + CRY_VENONAT, + CRY_VENOMOTH, +#endif //P_FAMILY_VENONAT +#if P_FAMILY_DIGLETT + CRY_DIGLETT, + CRY_DUGTRIO, +#endif //P_FAMILY_DIGLETT +#if P_FAMILY_MEOWTH + CRY_MEOWTH, + CRY_PERSIAN, +#if P_GALARIAN_FORMS + CRY_PERRSERKER, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MEOWTH +#if P_FAMILY_PSYDUCK + CRY_PSYDUCK, + CRY_GOLDUCK, +#endif //P_FAMILY_PSYDUCK +#if P_FAMILY_MANKEY + CRY_MANKEY, + CRY_PRIMEAPE, +#if P_GEN_9_CROSS_EVOS + CRY_ANNIHILAPE, +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_MANKEY +#if P_FAMILY_GROWLITHE + CRY_GROWLITHE, + CRY_ARCANINE, +#endif //P_FAMILY_GROWLITHE +#if P_FAMILY_POLIWAG + CRY_POLIWAG, + CRY_POLIWHIRL, + CRY_POLIWRATH, +#if P_GEN_2_CROSS_EVOS + CRY_POLITOED, +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_POLIWAG +#if P_FAMILY_ABRA + CRY_ABRA, + CRY_KADABRA, + CRY_ALAKAZAM, +#if P_MEGA_EVOLUTIONS + CRY_ALAKAZAM_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ABRA +#if P_FAMILY_MACHOP + CRY_MACHOP, + CRY_MACHOKE, + CRY_MACHAMP, +#endif //P_FAMILY_MACHOP +#if P_FAMILY_BELLSPROUT + CRY_BELLSPROUT, + CRY_WEEPINBELL, + CRY_VICTREEBEL, +#endif //P_FAMILY_BELLSPROUT +#if P_FAMILY_TENTACOOL + CRY_TENTACOOL, + CRY_TENTACRUEL, +#endif //P_FAMILY_TENTACOOL +#if P_FAMILY_GEODUDE + CRY_GEODUDE, + CRY_GRAVELER, + CRY_GOLEM, +#endif //P_FAMILY_GEODUDE +#if P_FAMILY_PONYTA + CRY_PONYTA, + CRY_RAPIDASH, +#endif //P_FAMILY_PONYTA +#if P_FAMILY_SLOWPOKE + CRY_SLOWPOKE, + CRY_SLOWBRO, +#if P_GEN_2_CROSS_EVOS + CRY_SLOWKING, +#endif //P_GEN_2_CROSS_EVOS +#if P_MEGA_EVOLUTIONS + CRY_SLOWBRO_MEGA, +#endif //P_MEGA_EVOLUTIONS +#if P_GALARIAN_FORMS + CRY_SLOWPOKE_GALARIAN, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_SLOWPOKE +#if P_FAMILY_MAGNEMITE + CRY_MAGNEMITE, + CRY_MAGNETON, +#if P_GEN_4_CROSS_EVOS + CRY_MAGNEZONE, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGNEMITE +#if P_FAMILY_FARFETCHD + CRY_FARFETCHD, +#if P_GALARIAN_FORMS + CRY_SIRFETCHD, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_FARFETCHD +#if P_FAMILY_DODUO + CRY_DODUO, + CRY_DODRIO, +#endif //P_FAMILY_DODUO +#if P_FAMILY_SEEL + CRY_SEEL, + CRY_DEWGONG, +#endif //P_FAMILY_SEEL +#if P_FAMILY_GRIMER + CRY_GRIMER, + CRY_MUK, +#endif //P_FAMILY_GRIMER +#if P_FAMILY_SHELLDER + CRY_SHELLDER, + CRY_CLOYSTER, +#endif //P_FAMILY_SHELLDER +#if P_FAMILY_GASTLY + CRY_GASTLY, + CRY_HAUNTER, + CRY_GENGAR, +#if P_MEGA_EVOLUTIONS + CRY_GENGAR_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_GASTLY +#if P_FAMILY_ONIX + CRY_ONIX, +#if P_GEN_2_CROSS_EVOS + CRY_STEELIX, +#if P_MEGA_EVOLUTIONS + CRY_STEELIX_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ONIX +#if P_FAMILY_DROWZEE + CRY_DROWZEE, + CRY_HYPNO, +#endif //P_FAMILY_DROWZEE +#if P_FAMILY_KRABBY + CRY_KRABBY, + CRY_KINGLER, +#endif //P_FAMILY_KRABBY +#if P_FAMILY_VOLTORB + CRY_VOLTORB, + CRY_ELECTRODE, +#endif //P_FAMILY_VOLTORB +#if P_FAMILY_EXEGGCUTE + CRY_EXEGGCUTE, + CRY_EXEGGUTOR, +#endif //P_FAMILY_EXEGGCUTE +#if P_FAMILY_CUBONE + CRY_CUBONE, + CRY_MAROWAK, +#endif //P_FAMILY_CUBONE +#if P_FAMILY_HITMONS +#if P_GEN_2_CROSS_EVOS + CRY_TYROGUE, +#endif //P_GEN_2_CROSS_EVOS + CRY_HITMONLEE, + CRY_HITMONCHAN, +#if P_GEN_2_CROSS_EVOS + CRY_HITMONTOP, +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HITMONS +#if P_FAMILY_LICKITUNG + CRY_LICKITUNG, +#if P_GEN_4_CROSS_EVOS + CRY_LICKILICKY, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_LICKITUNG +#if P_FAMILY_KOFFING + CRY_KOFFING, + CRY_WEEZING, +#endif //P_FAMILY_KOFFING +#if P_FAMILY_RHYHORN + CRY_RHYHORN, + CRY_RHYDON, +#if P_GEN_4_CROSS_EVOS + CRY_RHYPERIOR, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RHYHORN +#if P_FAMILY_CHANSEY +#if P_GEN_4_CROSS_EVOS + CRY_HAPPINY, +#endif //P_GEN_4_CROSS_EVOS + CRY_CHANSEY, +#if P_GEN_2_CROSS_EVOS + CRY_BLISSEY, +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_CHANSEY +#if P_FAMILY_TANGELA + CRY_TANGELA, +#if P_GEN_4_CROSS_EVOS + CRY_TANGROWTH, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TANGELA +#if P_FAMILY_KANGASKHAN + CRY_KANGASKHAN, +#if P_MEGA_EVOLUTIONS + CRY_KANGASKHAN_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_KANGASKHAN +#if P_FAMILY_HORSEA + CRY_HORSEA, + CRY_SEADRA, +#if P_GEN_2_CROSS_EVOS + CRY_KINGDRA, +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HORSEA +#if P_FAMILY_GOLDEEN + CRY_GOLDEEN, + CRY_SEAKING, +#endif //P_FAMILY_GOLDEEN +#if P_FAMILY_STARYU + CRY_STARYU, + CRY_STARMIE, +#endif //P_FAMILY_STARYU +#if P_FAMILY_MR_MIME +#if P_GEN_4_CROSS_EVOS + CRY_MIME_JR, +#endif //P_GEN_4_CROSS_EVOS + CRY_MR_MIME, +#if P_GALARIAN_FORMS + CRY_MR_RIME, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MR_MIME +#if P_FAMILY_SCYTHER + CRY_SCYTHER, +#if P_GEN_2_CROSS_EVOS + CRY_SCIZOR, +#if P_MEGA_EVOLUTIONS + CRY_SCIZOR_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_2_CROSS_EVOS +#if P_GEN_8_CROSS_EVOS + CRY_KLEAVOR, +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_SCYTHER +#if P_FAMILY_JYNX +#if P_GEN_2_CROSS_EVOS + CRY_SMOOCHUM, +#endif //P_GEN_2_CROSS_EVOS + CRY_JYNX, +#endif //P_FAMILY_JYNX +#if P_FAMILY_ELECTABUZZ +#if P_GEN_2_CROSS_EVOS + CRY_ELEKID, +#endif //P_GEN_2_CROSS_EVOS + CRY_ELECTABUZZ, +#if P_GEN_4_CROSS_EVOS + CRY_ELECTIVIRE, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ELECTABUZZ +#if P_FAMILY_MAGMAR +#if P_GEN_2_CROSS_EVOS + CRY_MAGBY, +#endif //P_GEN_2_CROSS_EVOS + CRY_MAGMAR, +#if P_GEN_4_CROSS_EVOS + CRY_MAGMORTAR, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGMAR +#if P_FAMILY_PINSIR + CRY_PINSIR, +#if P_MEGA_EVOLUTIONS + CRY_PINSIR_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_PINSIR +#if P_FAMILY_TAUROS + CRY_TAUROS, +#endif //P_FAMILY_TAUROS +#if P_FAMILY_MAGIKARP + CRY_MAGIKARP, + CRY_GYARADOS, +#if P_MEGA_EVOLUTIONS + CRY_GYARADOS_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAGIKARP +#if P_FAMILY_LAPRAS + CRY_LAPRAS, +#endif //P_FAMILY_LAPRAS +#if P_FAMILY_DITTO + CRY_DITTO, +#endif //P_FAMILY_DITTO +#if P_FAMILY_EEVEE + CRY_EEVEE, + CRY_VAPOREON, + CRY_JOLTEON, + CRY_FLAREON, +#if P_GEN_2_CROSS_EVOS + CRY_ESPEON, + CRY_UMBREON, +#endif //P_GEN_2_CROSS_EVOS +#if P_GEN_4_CROSS_EVOS + CRY_LEAFEON, + CRY_GLACEON, +#endif //P_GEN_4_CROSS_EVOS +#if P_GEN_6_CROSS_EVOS + CRY_SYLVEON, +#endif //P_GEN_6_CROSS_EVOS +#endif //P_FAMILY_EEVEE +#if P_FAMILY_PORYGON + CRY_PORYGON, +#if P_GEN_2_CROSS_EVOS + CRY_PORYGON2, +#if P_GEN_4_CROSS_EVOS + CRY_PORYGON_Z, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_PORYGON +#if P_FAMILY_OMANYTE + CRY_OMANYTE, + CRY_OMASTAR, +#endif //P_FAMILY_OMANYTE +#if P_FAMILY_KABUTO + CRY_KABUTO, + CRY_KABUTOPS, +#endif //P_FAMILY_KABUTO +#if P_FAMILY_AERODACTYL + CRY_AERODACTYL, +#if P_MEGA_EVOLUTIONS + CRY_AERODACTYL_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_AERODACTYL +#if P_FAMILY_SNORLAX +#if P_GEN_4_CROSS_EVOS + CRY_MUNCHLAX, +#endif //P_GEN_4_CROSS_EVOS + CRY_SNORLAX, +#endif //P_FAMILY_SNORLAX +#if P_FAMILY_ARTICUNO + CRY_ARTICUNO, +#endif //P_FAMILY_ARTICUNO +#if P_FAMILY_ZAPDOS + CRY_ZAPDOS, +#endif //P_FAMILY_ZAPDOS +#if P_FAMILY_MOLTRES + CRY_MOLTRES, +#endif //P_FAMILY_MOLTRES +#if P_FAMILY_DRATINI + CRY_DRATINI, + CRY_DRAGONAIR, + CRY_DRAGONITE, +#endif //P_FAMILY_DRATINI +#if P_FAMILY_MEWTWO + CRY_MEWTWO, +#if P_MEGA_EVOLUTIONS + CRY_MEWTWO_MEGA_X, + CRY_MEWTWO_MEGA_Y, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MEWTWO +#if P_FAMILY_MEW + CRY_MEW, +#endif //P_FAMILY_MEW +#if P_FAMILY_CHIKORITA + CRY_CHIKORITA, + CRY_BAYLEEF, + CRY_MEGANIUM, +#endif //P_FAMILY_CHIKORITA +#if P_FAMILY_CYNDAQUIL + CRY_CYNDAQUIL, + CRY_QUILAVA, + CRY_TYPHLOSION, +#endif //P_FAMILY_CYNDAQUIL +#if P_FAMILY_TOTODILE + CRY_TOTODILE, + CRY_CROCONAW, + CRY_FERALIGATR, +#endif //P_FAMILY_TOTODILE +#if P_FAMILY_SENTRET + CRY_SENTRET, + CRY_FURRET, +#endif //P_FAMILY_SENTRET +#if P_FAMILY_HOOTHOOT + CRY_HOOTHOOT, + CRY_NOCTOWL, +#endif //P_FAMILY_HOOTHOOT +#if P_FAMILY_LEDYBA + CRY_LEDYBA, + CRY_LEDIAN, +#endif //P_FAMILY_LEDYBA +#if P_FAMILY_SPINARAK + CRY_SPINARAK, + CRY_ARIADOS, +#endif //P_FAMILY_SPINARAK +#if P_FAMILY_CHINCHOU + CRY_CHINCHOU, + CRY_LANTURN, +#endif //P_FAMILY_CHINCHOU +#if P_FAMILY_TOGEPI + CRY_TOGEPI, + CRY_TOGETIC, +#if P_GEN_4_CROSS_EVOS + CRY_TOGEKISS, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TOGEPI +#if P_FAMILY_NATU + CRY_NATU, + CRY_XATU, +#endif //P_FAMILY_NATU +#if P_FAMILY_MAREEP + CRY_MAREEP, + CRY_FLAAFFY, + CRY_AMPHAROS, +#if P_MEGA_EVOLUTIONS + CRY_AMPHAROS_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAREEP +#if P_FAMILY_MARILL +#if P_GEN_3_CROSS_EVOS + CRY_AZURILL, +#endif //P_GEN_3_CROSS_EVOS + CRY_MARILL, + CRY_AZUMARILL, +#endif //P_FAMILY_MARILL +#if P_FAMILY_SUDOWOODO + CRY_BONSLY, + CRY_SUDOWOODO, +#endif //P_FAMILY_SUDOWOODO +#if P_FAMILY_HOPPIP + CRY_HOPPIP, + CRY_SKIPLOOM, + CRY_JUMPLUFF, +#endif //P_FAMILY_HOPPIP +#if P_FAMILY_AIPOM + CRY_AIPOM, + CRY_AMBIPOM, +#endif //P_FAMILY_AIPOM +#if P_FAMILY_SUNKERN + CRY_SUNKERN, + CRY_SUNFLORA, +#endif //P_FAMILY_SUNKERN +#if P_FAMILY_YANMA + CRY_YANMA, +#if P_GEN_4_CROSS_EVOS + CRY_YANMEGA, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_YANMA +#if P_FAMILY_WOOPER + CRY_WOOPER, + CRY_QUAGSIRE, +#if P_PALDEAN_FORMS + CRY_CLODSIRE, +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_WOOPER +#if P_FAMILY_MURKROW + CRY_MURKROW, + CRY_HONCHKROW, +#endif //P_FAMILY_MURKROW +#if P_FAMILY_MISDREAVUS + CRY_MISDREAVUS, + CRY_MISMAGIUS, +#endif //P_FAMILY_MISDREAVUS +#if P_FAMILY_UNOWN + CRY_UNOWN, +#endif //P_FAMILY_UNOWN +#if P_FAMILY_WOBBUFFET +#if P_GEN_3_CROSS_EVOS + CRY_WYNAUT, +#endif //P_GEN_3_CROSS_EVOS + CRY_WOBBUFFET, +#endif //P_FAMILY_WOBBUFFET +#if P_FAMILY_GIRAFARIG + CRY_GIRAFARIG, +#if P_GEN_9_CROSS_EVOS + CRY_FARIGIRAF, +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_GIRAFARIG +#if P_FAMILY_PINECO + CRY_PINECO, + CRY_FORRETRESS, +#endif //P_FAMILY_PINECO +#if P_FAMILY_DUNSPARCE + CRY_DUNSPARCE, +#if P_GEN_9_CROSS_EVOS + CRY_DUDUNSPARCE, +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_DUNSPARCE +#if P_FAMILY_GLIGAR + CRY_GLIGAR, +#if P_GEN_4_CROSS_EVOS + CRY_GLISCOR, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_GLIGAR +#if P_FAMILY_SNUBBULL + CRY_SNUBBULL, + CRY_GRANBULL, +#endif //P_FAMILY_SNUBBULL +#if P_FAMILY_QWILFISH + CRY_QWILFISH, +#if P_HISUIAN_FORMS + CRY_OVERQWIL, +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_QWILFISH +#if P_FAMILY_SHUCKLE + CRY_SHUCKLE, +#endif //P_FAMILY_SHUCKLE +#if P_FAMILY_HERACROSS + CRY_HERACROSS, +#if P_MEGA_EVOLUTIONS + CRY_HERACROSS_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_HERACROSS +#if P_FAMILY_SNEASEL + CRY_SNEASEL, +#if P_GEN_4_CROSS_EVOS + CRY_WEAVILE, +#endif //P_GEN_4_CROSS_EVOS +#if P_HISUIAN_FORMS + CRY_SNEASLER, +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_SNEASEL +#if P_FAMILY_TEDDIURSA + CRY_TEDDIURSA, + CRY_URSARING, +#if P_GEN_9_CROSS_EVOS + CRY_URSALUNA, +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_TEDDIURSA +#if P_FAMILY_SLUGMA + CRY_SLUGMA, + CRY_MAGCARGO, +#endif //P_FAMILY_SLUGMA +#if P_FAMILY_SWINUB + CRY_SWINUB, + CRY_PILOSWINE, +#if P_GEN_4_CROSS_EVOS + CRY_MAMOSWINE, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SWINUB +#if P_FAMILY_CORSOLA + CRY_CORSOLA, +#if P_GALARIAN_FORMS + CRY_CURSOLA, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_CORSOLA +#if P_FAMILY_REMORAID + CRY_REMORAID, + CRY_OCTILLERY, +#endif //P_FAMILY_REMORAID +#if P_FAMILY_DELIBIRD + CRY_DELIBIRD, +#endif //P_FAMILY_DELIBIRD +#if P_FAMILY_MANTINE +#if P_GEN_4_CROSS_EVOS + CRY_MANTYKE, +#endif //P_GEN_4_CROSS_EVOS + CRY_MANTINE, +#endif //P_FAMILY_MANTINE +#if P_FAMILY_SKARMORY + CRY_SKARMORY, +#endif //P_FAMILY_SKARMORY +#if P_FAMILY_HOUNDOUR + CRY_HOUNDOUR, + CRY_HOUNDOOM, +#if P_MEGA_EVOLUTIONS + CRY_HOUNDOOM_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_HOUNDOUR +#if P_FAMILY_PHANPY + CRY_PHANPY, + CRY_DONPHAN, +#endif //P_FAMILY_PHANPY +#if P_FAMILY_STANTLER + CRY_STANTLER, +#if P_GEN_8_CROSS_EVOS + CRY_WYRDEER, +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_STANTLER +#if P_FAMILY_SMEARGLE + CRY_SMEARGLE, +#endif //P_FAMILY_SMEARGLE +#if P_FAMILY_MILTANK + CRY_MILTANK, +#endif //P_FAMILY_MILTANK +#if P_FAMILY_RAIKOU + CRY_RAIKOU, +#endif //P_FAMILY_RAIKOU +#if P_FAMILY_ENTEI + CRY_ENTEI, +#endif //P_FAMILY_ENTEI +#if P_FAMILY_SUICUNE + CRY_SUICUNE, +#endif //P_FAMILY_SUICUNE +#if P_FAMILY_LARVITAR + CRY_LARVITAR, + CRY_PUPITAR, + CRY_TYRANITAR, +#if P_MEGA_EVOLUTIONS + CRY_TYRANITAR_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LARVITAR +#if P_FAMILY_LUGIA + CRY_LUGIA, +#endif //P_FAMILY_LUGIA +#if P_FAMILY_HO_OH + CRY_HO_OH, +#endif //P_FAMILY_HO_OH +#if P_FAMILY_CELEBI + CRY_CELEBI, +#endif //P_FAMILY_CELEBI +#if P_FAMILY_TREECKO + CRY_TREECKO, + CRY_GROVYLE, + CRY_SCEPTILE, +#if P_MEGA_EVOLUTIONS + CRY_SCEPTILE_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_TREECKO +#if P_FAMILY_TORCHIC + CRY_TORCHIC, + CRY_COMBUSKEN, + CRY_BLAZIKEN, +#if P_MEGA_EVOLUTIONS + CRY_BLAZIKEN_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_TORCHIC +#if P_FAMILY_MUDKIP + CRY_MUDKIP, + CRY_MARSHTOMP, + CRY_SWAMPERT, +#if P_MEGA_EVOLUTIONS + CRY_SWAMPERT_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MUDKIP +#if P_FAMILY_POOCHYENA + CRY_POOCHYENA, + CRY_MIGHTYENA, +#endif //P_FAMILY_POOCHYENA +#if P_FAMILY_ZIGZAGOON + CRY_ZIGZAGOON, + CRY_LINOONE, +#if P_GALARIAN_FORMS + CRY_OBSTAGOON, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZIGZAGOON +#if P_FAMILY_WURMPLE + CRY_WURMPLE, + CRY_SILCOON, + CRY_BEAUTIFLY, + CRY_CASCOON, + CRY_DUSTOX, +#endif //P_FAMILY_WURMPLE +#if P_FAMILY_LOTAD + CRY_LOTAD, + CRY_LOMBRE, + CRY_LUDICOLO, +#endif //P_FAMILY_LOTAD +#if P_FAMILY_SEEDOT + CRY_SEEDOT, + CRY_NUZLEAF, + CRY_SHIFTRY, +#endif //P_FAMILY_SEEDOT +#if P_FAMILY_TAILLOW + CRY_TAILLOW, + CRY_SWELLOW, +#endif //P_FAMILY_TAILLOW +#if P_FAMILY_WINGULL + CRY_WINGULL, + CRY_PELIPPER, +#endif //P_FAMILY_WINGULL +#if P_FAMILY_RALTS + CRY_RALTS, + CRY_KIRLIA, + CRY_GARDEVOIR, +#if P_MEGA_EVOLUTIONS + CRY_GARDEVOIR_MEGA, +#endif //P_MEGA_EVOLUTIONS +#if P_GEN_4_CROSS_EVOS + CRY_GALLADE, +#if P_MEGA_EVOLUTIONS + CRY_GALLADE_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RALTS +#if P_FAMILY_SURSKIT + CRY_SURSKIT, + CRY_MASQUERAIN, +#endif //P_FAMILY_SURSKIT +#if P_FAMILY_SHROOMISH + CRY_SHROOMISH, + CRY_BRELOOM, +#endif //P_FAMILY_SHROOMISH +#if P_FAMILY_SLAKOTH + CRY_SLAKOTH, + CRY_VIGOROTH, + CRY_SLAKING, +#endif //P_FAMILY_SLAKOTH +#if P_FAMILY_NINCADA + CRY_NINCADA, + CRY_NINJASK, + CRY_SHEDINJA, +#endif //P_FAMILY_NINCADA +#if P_FAMILY_WHISMUR + CRY_WHISMUR, + CRY_LOUDRED, + CRY_EXPLOUD, +#endif //P_FAMILY_WHISMUR +#if P_FAMILY_MAKUHITA + CRY_MAKUHITA, + CRY_HARIYAMA, +#endif //P_FAMILY_MAKUHITA +#if P_FAMILY_NOSEPASS + CRY_NOSEPASS, +#if P_GEN_4_CROSS_EVOS + CRY_PROBOPASS, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_NOSEPASS +#if P_FAMILY_SKITTY + CRY_SKITTY, + CRY_DELCATTY, +#endif //P_FAMILY_SKITTY +#if P_FAMILY_SABLEYE + CRY_SABLEYE, +#if P_MEGA_EVOLUTIONS + CRY_SABLEYE_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SABLEYE +#if P_FAMILY_MAWILE + CRY_MAWILE, +#if P_MEGA_EVOLUTIONS + CRY_MAWILE_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAWILE +#if P_FAMILY_ARON + CRY_ARON, + CRY_LAIRON, + CRY_AGGRON, +#if P_MEGA_EVOLUTIONS + CRY_AGGRON_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ARON +#if P_FAMILY_MEDITITE + CRY_MEDITITE, + CRY_MEDICHAM, +#if P_MEGA_EVOLUTIONS + CRY_MEDICHAM_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MEDITITE +#if P_FAMILY_ELECTRIKE + CRY_ELECTRIKE, + CRY_MANECTRIC, +#if P_MEGA_EVOLUTIONS + CRY_MANECTRIC_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ELECTRIKE +#if P_FAMILY_PLUSLE + CRY_PLUSLE, +#endif //P_FAMILY_PLUSLE +#if P_FAMILY_MINUN + CRY_MINUN, +#endif //P_FAMILY_MINUN +#if P_FAMILY_VOLBEAT_ILLUMISE + CRY_VOLBEAT, + CRY_ILLUMISE, +#endif //P_FAMILY_VOLBEAT_ILLUMISE +#if P_FAMILY_ROSELIA +#if P_GEN_4_CROSS_EVOS + CRY_BUDEW, +#endif //P_GEN_4_CROSS_EVOS + CRY_ROSELIA, +#if P_GEN_4_CROSS_EVOS + CRY_ROSERADE, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ROSELIA +#if P_FAMILY_GULPIN + CRY_GULPIN, + CRY_SWALOT, +#endif //P_FAMILY_GULPIN +#if P_FAMILY_CARVANHA + CRY_CARVANHA, + CRY_SHARPEDO, +#if P_MEGA_EVOLUTIONS + CRY_SHARPEDO_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_CARVANHA +#if P_FAMILY_WAILMER + CRY_WAILMER, + CRY_WAILORD, +#endif //P_FAMILY_WAILMER +#if P_FAMILY_NUMEL + CRY_NUMEL, + CRY_CAMERUPT, +#if P_MEGA_EVOLUTIONS + CRY_CAMERUPT_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_NUMEL +#if P_FAMILY_TORKOAL + CRY_TORKOAL, +#endif //P_FAMILY_TORKOAL +#if P_FAMILY_SPOINK + CRY_SPOINK, + CRY_GRUMPIG, +#endif //P_FAMILY_SPOINK +#if P_FAMILY_SPINDA + CRY_SPINDA, +#endif //P_FAMILY_SPINDA +#if P_FAMILY_TRAPINCH + CRY_TRAPINCH, + CRY_VIBRAVA, + CRY_FLYGON, +#endif //P_FAMILY_TRAPINCH +#if P_FAMILY_CACNEA + CRY_CACNEA, + CRY_CACTURNE, +#endif //P_FAMILY_CACNEA +#if P_FAMILY_SWABLU + CRY_SWABLU, + CRY_ALTARIA, +#if P_MEGA_EVOLUTIONS + CRY_ALTARIA_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SWABLU +#if P_FAMILY_ZANGOOSE + CRY_ZANGOOSE, +#endif //P_FAMILY_ZANGOOSE +#if P_FAMILY_SEVIPER + CRY_SEVIPER, +#endif //P_FAMILY_SEVIPER +#if P_FAMILY_LUNATONE + CRY_LUNATONE, +#endif //P_FAMILY_LUNATONE +#if P_FAMILY_SOLROCK + CRY_SOLROCK, +#endif //P_FAMILY_SOLROCK +#if P_FAMILY_BARBOACH + CRY_BARBOACH, + CRY_WHISCASH, +#endif //P_FAMILY_BARBOACH +#if P_FAMILY_CORPHISH + CRY_CORPHISH, + CRY_CRAWDAUNT, +#endif //P_FAMILY_CORPHISH +#if P_FAMILY_BALTOY + CRY_BALTOY, + CRY_CLAYDOL, +#endif //P_FAMILY_BALTOY +#if P_FAMILY_LILEEP + CRY_LILEEP, + CRY_CRADILY, +#endif //P_FAMILY_LILEEP +#if P_FAMILY_ANORITH + CRY_ANORITH, + CRY_ARMALDO, +#endif //P_FAMILY_ANORITH +#if P_FAMILY_FEEBAS + CRY_FEEBAS, + CRY_MILOTIC, +#endif //P_FAMILY_FEEBAS +#if P_FAMILY_CASTFORM + CRY_CASTFORM, +#endif //P_FAMILY_CASTFORM +#if P_FAMILY_KECLEON + CRY_KECLEON, +#endif //P_FAMILY_KECLEON +#if P_FAMILY_SHUPPET + CRY_SHUPPET, + CRY_BANETTE, +#if P_MEGA_EVOLUTIONS + CRY_BANETTE_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SHUPPET +#if P_FAMILY_DUSKULL + CRY_DUSKULL, + CRY_DUSCLOPS, +#if P_GEN_4_CROSS_EVOS + CRY_DUSKNOIR, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_DUSKULL +#if P_FAMILY_TROPIUS + CRY_TROPIUS, +#endif //P_FAMILY_TROPIUS +#if P_FAMILY_CHIMECHO +#if P_GEN_4_CROSS_EVOS + CRY_CHINGLING, +#endif //P_GEN_4_CROSS_EVOS + CRY_CHIMECHO, +#endif //P_FAMILY_CHIMECHO +#if P_FAMILY_ABSOL + CRY_ABSOL, +#if P_MEGA_EVOLUTIONS + CRY_ABSOL_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ABSOL +#if P_FAMILY_SNORUNT + CRY_SNORUNT, + CRY_GLALIE, +#if P_MEGA_EVOLUTIONS + CRY_GLALIE_MEGA, +#endif //P_MEGA_EVOLUTIONS +#if P_GEN_4_CROSS_EVOS + CRY_FROSLASS, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SNORUNT +#if P_FAMILY_SPHEAL + CRY_SPHEAL, + CRY_SEALEO, + CRY_WALREIN, +#endif //P_FAMILY_SPHEAL +#if P_FAMILY_CLAMPERL + CRY_CLAMPERL, + CRY_HUNTAIL, + CRY_GOREBYSS, +#endif //P_FAMILY_CLAMPERL +#if P_FAMILY_RELICANTH + CRY_RELICANTH, +#endif //P_FAMILY_RELICANTH +#if P_FAMILY_LUVDISC + CRY_LUVDISC, +#endif //P_FAMILY_LUVDISC +#if P_FAMILY_BAGON + CRY_BAGON, + CRY_SHELGON, + CRY_SALAMENCE, +#if P_MEGA_EVOLUTIONS + CRY_SALAMENCE_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BAGON +#if P_FAMILY_BELDUM + CRY_BELDUM, + CRY_METANG, + CRY_METAGROSS, +#if P_MEGA_EVOLUTIONS + CRY_METAGROSS_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BELDUM +#if P_FAMILY_REGIROCK + CRY_REGIROCK, +#endif //P_FAMILY_REGIROCK +#if P_FAMILY_REGICE + CRY_REGICE, +#endif //P_FAMILY_REGICE +#if P_FAMILY_REGISTEEL + CRY_REGISTEEL, +#endif //P_FAMILY_REGISTEEL +#if P_FAMILY_LATIAS + CRY_LATIAS, +#if P_MEGA_EVOLUTIONS + CRY_LATIAS_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LATIAS +#if P_FAMILY_LATIOS + CRY_LATIOS, +#if P_MEGA_EVOLUTIONS + CRY_LATIOS_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LATIOS +#if P_FAMILY_KYOGRE + CRY_KYOGRE, +#if P_PRIMAL_REVERSIONS + CRY_KYOGRE_PRIMAL, +#endif //P_PRIMAL_REVERSIONS +#endif //P_FAMILY_KYOGRE +#if P_FAMILY_GROUDON + CRY_GROUDON, +#if P_PRIMAL_REVERSIONS + CRY_GROUDON_PRIMAL, +#endif //P_PRIMAL_REVERSIONS +#endif //P_FAMILY_GROUDON +#if P_FAMILY_RAYQUAZA + CRY_RAYQUAZA, +#if P_MEGA_EVOLUTIONS + CRY_RAYQUAZA_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_RAYQUAZA +#if P_FAMILY_JIRACHI + CRY_JIRACHI, +#endif //P_FAMILY_JIRACHI +#if P_FAMILY_DEOXYS + CRY_DEOXYS, +#endif //P_FAMILY_DEOXYS +#if P_FAMILY_TURTWIG + CRY_TURTWIG, + CRY_GROTLE, + CRY_TORTERRA, +#endif //P_FAMILY_TURTWIG +#if P_FAMILY_CHIMCHAR + CRY_CHIMCHAR, + CRY_MONFERNO, + CRY_INFERNAPE, +#endif //P_FAMILY_CHIMCHAR +#if P_FAMILY_PIPLUP + CRY_PIPLUP, + CRY_PRINPLUP, + CRY_EMPOLEON, +#endif //P_FAMILY_PIPLUP +#if P_FAMILY_STARLY + CRY_STARLY, + CRY_STARAVIA, + CRY_STARAPTOR, +#endif //P_FAMILY_STARLY +#if P_FAMILY_BIDOOF + CRY_BIDOOF, + CRY_BIBAREL, +#endif //P_FAMILY_BIDOOF +#if P_FAMILY_KRICKETOT + CRY_KRICKETOT, + CRY_KRICKETUNE, +#endif //P_FAMILY_KRICKETOT +#if P_FAMILY_SHINX + CRY_SHINX, + CRY_LUXIO, + CRY_LUXRAY, +#endif //P_FAMILY_SHINX +#if P_FAMILY_CRANIDOS + CRY_CRANIDOS, + CRY_RAMPARDOS, +#endif //P_FAMILY_CRANIDOS +#if P_FAMILY_SHIELDON + CRY_SHIELDON, + CRY_BASTIODON, +#endif //P_FAMILY_SHIELDON +#if P_FAMILY_BURMY + CRY_BURMY, + CRY_WORMADAM, + CRY_MOTHIM, +#endif //P_FAMILY_BURMY +#if P_FAMILY_COMBEE + CRY_COMBEE, + CRY_VESPIQUEN, +#endif //P_FAMILY_COMBEE +#if P_FAMILY_PACHIRISU + CRY_PACHIRISU, +#endif //P_FAMILY_PACHIRISU +#if P_FAMILY_BUIZEL + CRY_BUIZEL, + CRY_FLOATZEL, +#endif //P_FAMILY_BUIZEL +#if P_FAMILY_CHERUBI + CRY_CHERUBI, + CRY_CHERRIM, +#endif //P_FAMILY_CHERUBI +#if P_FAMILY_SHELLOS + CRY_SHELLOS, + CRY_GASTRODON, +#endif //P_FAMILY_SHELLOS +#if P_FAMILY_DRIFLOON + CRY_DRIFLOON, + CRY_DRIFBLIM, +#endif //P_FAMILY_DRIFLOON +#if P_FAMILY_BUNEARY + CRY_BUNEARY, + CRY_LOPUNNY, +#if P_MEGA_EVOLUTIONS + CRY_LOPUNNY_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BUNEARY +#if P_FAMILY_GLAMEOW + CRY_GLAMEOW, + CRY_PURUGLY, +#endif //P_FAMILY_GLAMEOW +#if P_FAMILY_STUNKY + CRY_STUNKY, + CRY_SKUNTANK, +#endif //P_FAMILY_STUNKY +#if P_FAMILY_BRONZOR + CRY_BRONZOR, + CRY_BRONZONG, +#endif //P_FAMILY_BRONZOR +#if P_FAMILY_CHATOT + CRY_CHATOT, +#endif //P_FAMILY_CHATOT +#if P_FAMILY_SPIRITOMB + CRY_SPIRITOMB, +#endif //P_FAMILY_SPIRITOMB +#if P_FAMILY_GIBLE + CRY_GIBLE, + CRY_GABITE, + CRY_GARCHOMP, +#if P_MEGA_EVOLUTIONS + CRY_GARCHOMP_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_GIBLE +#if P_FAMILY_RIOLU + CRY_RIOLU, + CRY_LUCARIO, +#if P_MEGA_EVOLUTIONS + CRY_LUCARIO_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_RIOLU +#if P_FAMILY_HIPPOPOTAS + CRY_HIPPOPOTAS, + CRY_HIPPOWDON, +#endif //P_FAMILY_HIPPOPOTAS +#if P_FAMILY_SKORUPI + CRY_SKORUPI, + CRY_DRAPION, +#endif //P_FAMILY_SKORUPI +#if P_FAMILY_CROAGUNK + CRY_CROAGUNK, + CRY_TOXICROAK, +#endif //P_FAMILY_CROAGUNK +#if P_FAMILY_CARNIVINE + CRY_CARNIVINE, +#endif //P_FAMILY_CARNIVINE +#if P_FAMILY_FINNEON + CRY_FINNEON, + CRY_LUMINEON, +#endif //P_FAMILY_FINNEON +#if P_FAMILY_SNOVER + CRY_SNOVER, + CRY_ABOMASNOW, +#if P_MEGA_EVOLUTIONS + CRY_ABOMASNOW_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SNOVER +#if P_FAMILY_ROTOM + CRY_ROTOM, +#endif //P_FAMILY_ROTOM +#if P_FAMILY_UXIE + CRY_UXIE, +#endif //P_FAMILY_UXIE +#if P_FAMILY_MESPRIT + CRY_MESPRIT, +#endif //P_FAMILY_MESPRIT +#if P_FAMILY_AZELF + CRY_AZELF, +#endif //P_FAMILY_AZELF +#if P_FAMILY_DIALGA + CRY_DIALGA, +#endif //P_FAMILY_DIALGA +#if P_FAMILY_PALKIA + CRY_PALKIA, +#endif //P_FAMILY_PALKIA +#if P_FAMILY_HEATRAN + CRY_HEATRAN, +#endif //P_FAMILY_HEATRAN +#if P_FAMILY_REGIGIGAS + CRY_REGIGIGAS, +#endif //P_FAMILY_REGIGIGAS +#if P_FAMILY_GIRATINA + CRY_GIRATINA, +#endif //P_FAMILY_GIRATINA +#if P_FAMILY_CRESSELIA + CRY_CRESSELIA, +#endif //P_FAMILY_CRESSELIA +#if P_FAMILY_MANAPHY + CRY_PHIONE, + CRY_MANAPHY, +#endif //P_FAMILY_MANAPHY +#if P_FAMILY_DARKRAI + CRY_DARKRAI, +#endif //P_FAMILY_DARKRAI +#if P_FAMILY_SHAYMIN + CRY_SHAYMIN_LAND, + CRY_SHAYMIN_SKY, +#endif //P_FAMILY_SHAYMIN +#if P_FAMILY_ARCEUS + CRY_ARCEUS, +#endif //P_FAMILY_ARCEUS +#if P_FAMILY_VICTINI + CRY_VICTINI, +#endif //P_FAMILY_VICTINI +#if P_FAMILY_SNIVY + CRY_SNIVY, + CRY_SERVINE, + CRY_SERPERIOR, +#endif //P_FAMILY_SNIVY +#if P_FAMILY_TEPIG + CRY_TEPIG, + CRY_PIGNITE, + CRY_EMBOAR, +#endif //P_FAMILY_TEPIG +#if P_FAMILY_OSHAWOTT + CRY_OSHAWOTT, + CRY_DEWOTT, + CRY_SAMUROTT, +#endif //P_FAMILY_OSHAWOTT +#if P_FAMILY_PATRAT + CRY_PATRAT, + CRY_WATCHOG, +#endif //P_FAMILY_PATRAT +#if P_FAMILY_LILLIPUP + CRY_LILLIPUP, + CRY_HERDIER, + CRY_STOUTLAND, +#endif //P_FAMILY_LILLIPUP +#if P_FAMILY_PURRLOIN + CRY_PURRLOIN, + CRY_LIEPARD, +#endif //P_FAMILY_PURRLOIN +#if P_FAMILY_PANSAGE + CRY_PANSAGE, + CRY_SIMISAGE, +#endif //P_FAMILY_PANSAGE +#if P_FAMILY_PANSEAR + CRY_PANSEAR, + CRY_SIMISEAR, +#endif //P_FAMILY_PANSEAR +#if P_FAMILY_PANPOUR + CRY_PANPOUR, + CRY_SIMIPOUR, +#endif //P_FAMILY_PANPOUR +#if P_FAMILY_MUNNA + CRY_MUNNA, + CRY_MUSHARNA, +#endif //P_FAMILY_MUNNA +#if P_FAMILY_PIDOVE + CRY_PIDOVE, + CRY_TRANQUILL, + CRY_UNFEZANT, +#endif //P_FAMILY_PIDOVE +#if P_FAMILY_BLITZLE + CRY_BLITZLE, + CRY_ZEBSTRIKA, +#endif //P_FAMILY_BLITZLE +#if P_FAMILY_ROGGENROLA + CRY_ROGGENROLA, + CRY_BOLDORE, + CRY_GIGALITH, +#endif //P_FAMILY_ROGGENROLA +#if P_FAMILY_WOOBAT + CRY_WOOBAT, + CRY_SWOOBAT, +#endif //P_FAMILY_WOOBAT +#if P_FAMILY_DRILBUR + CRY_DRILBUR, + CRY_EXCADRILL, +#endif //P_FAMILY_DRILBUR +#if P_FAMILY_AUDINO + CRY_AUDINO, +#if P_MEGA_EVOLUTIONS + CRY_AUDINO_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_AUDINO +#if P_FAMILY_TIMBURR + CRY_TIMBURR, + CRY_GURDURR, + CRY_CONKELDURR, +#endif //P_FAMILY_TIMBURR +#if P_FAMILY_TYMPOLE + CRY_TYMPOLE, + CRY_PALPITOAD, + CRY_SEISMITOAD, +#endif //P_FAMILY_TYMPOLE +#if P_FAMILY_THROH + CRY_THROH, +#endif //P_FAMILY_THROH +#if P_FAMILY_SAWK + CRY_SAWK, +#endif //P_FAMILY_SAWK +#if P_FAMILY_SEWADDLE + CRY_SEWADDLE, + CRY_SWADLOON, + CRY_LEAVANNY, +#endif //P_FAMILY_SEWADDLE +#if P_FAMILY_VENIPEDE + CRY_VENIPEDE, + CRY_WHIRLIPEDE, + CRY_SCOLIPEDE, +#endif //P_FAMILY_VENIPEDE +#if P_FAMILY_COTTONEE + CRY_COTTONEE, + CRY_WHIMSICOTT, +#endif //P_FAMILY_COTTONEE +#if P_FAMILY_PETILIL + CRY_PETILIL, + CRY_LILLIGANT, +#endif //P_FAMILY_PETILIL +#if P_FAMILY_BASCULIN + CRY_BASCULIN, +#if P_HISUIAN_FORMS + CRY_BASCULEGION, +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_BASCULIN +#if P_FAMILY_SANDILE + CRY_SANDILE, + CRY_KROKOROK, + CRY_KROOKODILE, +#endif //P_FAMILY_SANDILE +#if P_FAMILY_DARUMAKA + CRY_DARUMAKA, + CRY_DARMANITAN, +#endif //P_FAMILY_DARUMAKA +#if P_FAMILY_MARACTUS + CRY_MARACTUS, +#endif //P_FAMILY_MARACTUS +#if P_FAMILY_DWEBBLE + CRY_DWEBBLE, + CRY_CRUSTLE, +#endif //P_FAMILY_DWEBBLE +#if P_FAMILY_SCRAGGY + CRY_SCRAGGY, + CRY_SCRAFTY, +#endif //P_FAMILY_SCRAGGY +#if P_FAMILY_SIGILYPH + CRY_SIGILYPH, +#endif //P_FAMILY_SIGILYPH +#if P_FAMILY_YAMASK + CRY_YAMASK, + CRY_COFAGRIGUS, +#if P_GALARIAN_FORMS + CRY_RUNERIGUS, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_YAMASK +#if P_FAMILY_TIRTOUGA + CRY_TIRTOUGA, + CRY_CARRACOSTA, +#endif //P_FAMILY_TIRTOUGA +#if P_FAMILY_ARCHEN + CRY_ARCHEN, + CRY_ARCHEOPS, +#endif //P_FAMILY_ARCHEN +#if P_FAMILY_TRUBBISH + CRY_TRUBBISH, + CRY_GARBODOR, +#endif //P_FAMILY_TRUBBISH +#if P_FAMILY_ZORUA + CRY_ZORUA, + CRY_ZOROARK, +#endif //P_FAMILY_ZORUA +#if P_FAMILY_MINCCINO + CRY_MINCCINO, + CRY_CINCCINO, +#endif //P_FAMILY_MINCCINO +#if P_FAMILY_GOTHITA + CRY_GOTHITA, + CRY_GOTHORITA, + CRY_GOTHITELLE, +#endif //P_FAMILY_GOTHITA +#if P_FAMILY_SOLOSIS + CRY_SOLOSIS, + CRY_DUOSION, + CRY_REUNICLUS, +#endif //P_FAMILY_SOLOSIS +#if P_FAMILY_DUCKLETT + CRY_DUCKLETT, + CRY_SWANNA, +#endif //P_FAMILY_DUCKLETT +#if P_FAMILY_VANILLITE + CRY_VANILLITE, + CRY_VANILLISH, + CRY_VANILLUXE, +#endif //P_FAMILY_VANILLITE +#if P_FAMILY_DEERLING + CRY_DEERLING, + CRY_SAWSBUCK, +#endif //P_FAMILY_DEERLING +#if P_FAMILY_EMOLGA + CRY_EMOLGA, +#endif //P_FAMILY_EMOLGA +#if P_FAMILY_KARRABLAST + CRY_KARRABLAST, + CRY_ESCAVALIER, +#endif //P_FAMILY_KARRABLAST +#if P_FAMILY_FOONGUS + CRY_FOONGUS, + CRY_AMOONGUSS, +#endif //P_FAMILY_FOONGUS +#if P_FAMILY_FRILLISH + CRY_FRILLISH, + CRY_JELLICENT, +#endif //P_FAMILY_FRILLISH +#if P_FAMILY_ALOMOMOLA + CRY_ALOMOMOLA, +#endif //P_FAMILY_ALOMOMOLA +#if P_FAMILY_JOLTIK + CRY_JOLTIK, + CRY_GALVANTULA, +#endif //P_FAMILY_JOLTIK +#if P_FAMILY_FERROSEED + CRY_FERROSEED, + CRY_FERROTHORN, +#endif //P_FAMILY_FERROSEED +#if P_FAMILY_KLINK + CRY_KLINK, + CRY_KLANG, + CRY_KLINKLANG, +#endif //P_FAMILY_KLINK +#if P_FAMILY_TYNAMO + CRY_TYNAMO, + CRY_EELEKTRIK, + CRY_EELEKTROSS, +#endif //P_FAMILY_TYNAMO +#if P_FAMILY_ELGYEM + CRY_ELGYEM, + CRY_BEHEEYEM, +#endif //P_FAMILY_ELGYEM +#if P_FAMILY_LITWICK + CRY_LITWICK, + CRY_LAMPENT, + CRY_CHANDELURE, +#endif //P_FAMILY_LITWICK +#if P_FAMILY_AXEW + CRY_AXEW, + CRY_FRAXURE, + CRY_HAXORUS, +#endif //P_FAMILY_AXEW +#if P_FAMILY_CUBCHOO + CRY_CUBCHOO, + CRY_BEARTIC, +#endif //P_FAMILY_CUBCHOO +#if P_FAMILY_CRYOGONAL + CRY_CRYOGONAL, +#endif //P_FAMILY_CRYOGONAL +#if P_FAMILY_SHELMET + CRY_SHELMET, + CRY_ACCELGOR, +#endif //P_FAMILY_SHELMET +#if P_FAMILY_STUNFISK + CRY_STUNFISK, +#endif //P_FAMILY_STUNFISK +#if P_FAMILY_MIENFOO + CRY_MIENFOO, + CRY_MIENSHAO, +#endif //P_FAMILY_MIENFOO +#if P_FAMILY_DRUDDIGON + CRY_DRUDDIGON, +#endif //P_FAMILY_DRUDDIGON +#if P_FAMILY_GOLETT + CRY_GOLETT, + CRY_GOLURK, +#endif //P_FAMILY_GOLETT +#if P_FAMILY_PAWNIARD + CRY_PAWNIARD, + CRY_BISHARP, +#if P_GEN_9_CROSS_EVOS + CRY_KINGAMBIT, +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_PAWNIARD +#if P_FAMILY_BOUFFALANT + CRY_BOUFFALANT, +#endif //P_FAMILY_BOUFFALANT +#if P_FAMILY_RUFFLET + CRY_RUFFLET, + CRY_BRAVIARY, +#endif //P_FAMILY_RUFFLET +#if P_FAMILY_VULLABY + CRY_VULLABY, + CRY_MANDIBUZZ, +#endif //P_FAMILY_VULLABY +#if P_FAMILY_HEATMOR + CRY_HEATMOR, +#endif //P_FAMILY_HEATMOR +#if P_FAMILY_DURANT + CRY_DURANT, +#endif //P_FAMILY_DURANT +#if P_FAMILY_DEINO + CRY_DEINO, + CRY_ZWEILOUS, + CRY_HYDREIGON, +#endif //P_FAMILY_DEINO +#if P_FAMILY_LARVESTA + CRY_LARVESTA, + CRY_VOLCARONA, +#endif //P_FAMILY_LARVESTA +#if P_FAMILY_COBALION + CRY_COBALION, +#endif //P_FAMILY_COBALION +#if P_FAMILY_TERRAKION + CRY_TERRAKION, +#endif //P_FAMILY_TERRAKION +#if P_FAMILY_VIRIZION + CRY_VIRIZION, +#endif //P_FAMILY_VIRIZION +#if P_FAMILY_TORNADUS + CRY_TORNADUS_INCARNATE, + CRY_TORNADUS_THERIAN, +#endif //P_FAMILY_TORNADUS +#if P_FAMILY_THUNDURUS + CRY_THUNDURUS_INCARNATE, + CRY_THUNDURUS_THERIAN, +#endif //P_FAMILY_THUNDURUS +#if P_FAMILY_RESHIRAM + CRY_RESHIRAM, +#endif //P_FAMILY_RESHIRAM +#if P_FAMILY_ZEKROM + CRY_ZEKROM, +#endif //P_FAMILY_ZEKROM +#if P_FAMILY_LANDORUS + CRY_LANDORUS_INCARNATE, + CRY_LANDORUS_THERIAN, +#endif //P_FAMILY_LANDORUS +#if P_FAMILY_KYUREM + CRY_KYUREM, +#if P_FUSION_FORMS + CRY_KYUREM_WHITE, + CRY_KYUREM_BLACK, +#endif //P_FUSION_FORMS +#endif //P_FAMILY_KYUREM +#if P_FAMILY_KELDEO + CRY_KELDEO, +#endif //P_FAMILY_KELDEO +#if P_FAMILY_MELOETTA + CRY_MELOETTA, +#endif //P_FAMILY_MELOETTA +#if P_FAMILY_GENESECT + CRY_GENESECT, +#endif //P_FAMILY_GENESECT +#if P_FAMILY_CHESPIN + CRY_CHESPIN, + CRY_QUILLADIN, + CRY_CHESNAUGHT, +#endif //P_FAMILY_CHESPIN +#if P_FAMILY_FENNEKIN + CRY_FENNEKIN, + CRY_BRAIXEN, + CRY_DELPHOX, +#endif //P_FAMILY_FENNEKIN +#if P_FAMILY_FROAKIE + CRY_FROAKIE, + CRY_FROGADIER, + CRY_GRENINJA, +#endif //P_FAMILY_FROAKIE +#if P_FAMILY_BUNNELBY + CRY_BUNNELBY, + CRY_DIGGERSBY, +#endif //P_FAMILY_BUNNELBY +#if P_FAMILY_FLETCHLING + CRY_FLETCHLING, + CRY_FLETCHINDER, + CRY_TALONFLAME, +#endif //P_FAMILY_FLETCHLING +#if P_FAMILY_SCATTERBUG + CRY_SCATTERBUG, + CRY_SPEWPA, + CRY_VIVILLON, +#endif //P_FAMILY_SCATTERBUG +#if P_FAMILY_LITLEO + CRY_LITLEO, + CRY_PYROAR, +#endif //P_FAMILY_LITLEO +#if P_FAMILY_FLABEBE + CRY_FLABEBE, + CRY_FLOETTE, + CRY_FLOETTE_ETERNAL_FLOWER, + CRY_FLORGES, +#endif //P_FAMILY_FLABEBE +#if P_FAMILY_SKIDDO + CRY_SKIDDO, + CRY_GOGOAT, +#endif //P_FAMILY_SKIDDO +#if P_FAMILY_PANCHAM + CRY_PANCHAM, + CRY_PANGORO, +#endif //P_FAMILY_PANCHAM +#if P_FAMILY_FURFROU + CRY_FURFROU, +#endif //P_FAMILY_FURFROU +#if P_FAMILY_ESPURR + CRY_ESPURR, + CRY_MEOWSTIC, +#endif //P_FAMILY_ESPURR +#if P_FAMILY_HONEDGE + CRY_HONEDGE, + CRY_DOUBLADE, + CRY_AEGISLASH, +#endif //P_FAMILY_HONEDGE +#if P_FAMILY_SPRITZEE + CRY_SPRITZEE, + CRY_AROMATISSE, +#endif //P_FAMILY_SPRITZEE +#if P_FAMILY_SWIRLIX + CRY_SWIRLIX, + CRY_SLURPUFF, +#endif //P_FAMILY_SWIRLIX +#if P_FAMILY_INKAY + CRY_INKAY, + CRY_MALAMAR, +#endif //P_FAMILY_INKAY +#if P_FAMILY_BINACLE + CRY_BINACLE, + CRY_BARBARACLE, +#endif //P_FAMILY_BINACLE +#if P_FAMILY_SKRELP + CRY_SKRELP, + CRY_DRAGALGE, +#endif //P_FAMILY_SKRELP +#if P_FAMILY_CLAUNCHER + CRY_CLAUNCHER, + CRY_CLAWITZER, +#endif //P_FAMILY_CLAUNCHER +#if P_FAMILY_HELIOPTILE + CRY_HELIOPTILE, + CRY_HELIOLISK, +#endif //P_FAMILY_HELIOPTILE +#if P_FAMILY_TYRUNT + CRY_TYRUNT, + CRY_TYRANTRUM, +#endif //P_FAMILY_TYRUNT +#if P_FAMILY_AMAURA + CRY_AMAURA, + CRY_AURORUS, +#endif //P_FAMILY_AMAURA +#if P_FAMILY_HAWLUCHA + CRY_HAWLUCHA, +#endif //P_FAMILY_HAWLUCHA +#if P_FAMILY_DEDENNE + CRY_DEDENNE, +#endif //P_FAMILY_DEDENNE +#if P_FAMILY_CARBINK + CRY_CARBINK, +#endif //P_FAMILY_CARBINK +#if P_FAMILY_GOOMY + CRY_GOOMY, + CRY_SLIGGOO, + CRY_GOODRA, +#endif //P_FAMILY_GOOMY +#if P_FAMILY_KLEFKI + CRY_KLEFKI, +#endif //P_FAMILY_KLEFKI +#if P_FAMILY_PHANTUMP + CRY_PHANTUMP, + CRY_TREVENANT, +#endif //P_FAMILY_PHANTUMP +#if P_FAMILY_PUMPKABOO + CRY_PUMPKABOO, + CRY_PUMPKABOO_SUPER, + CRY_GOURGEIST, + CRY_GOURGEIST_SUPER, +#endif //P_FAMILY_PUMPKABOO +#if P_FAMILY_BERGMITE + CRY_BERGMITE, + CRY_AVALUGG, +#endif //P_FAMILY_BERGMITE +#if P_FAMILY_NOIBAT + CRY_NOIBAT, + CRY_NOIVERN, +#endif //P_FAMILY_NOIBAT +#if P_FAMILY_XERNEAS + CRY_XERNEAS, +#endif //P_FAMILY_XERNEAS +#if P_FAMILY_YVELTAL + CRY_YVELTAL, +#endif //P_FAMILY_YVELTAL +#if P_FAMILY_ZYGARDE + CRY_ZYGARDE_50, + CRY_ZYGARDE_10, + CRY_ZYGARDE_COMPLETE, +#endif //P_FAMILY_ZYGARDE +#if P_FAMILY_DIANCIE + CRY_DIANCIE, +#if P_MEGA_EVOLUTIONS + CRY_DIANCIE_MEGA, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_DIANCIE +#if P_FAMILY_HOOPA + CRY_HOOPA_CONFINED, + CRY_HOOPA_UNBOUND, +#endif //P_FAMILY_HOOPA +#if P_FAMILY_VOLCANION + CRY_VOLCANION, +#endif //P_FAMILY_VOLCANION +#if P_FAMILY_ROWLET + CRY_ROWLET, + CRY_DARTRIX, + CRY_DECIDUEYE, +#endif //P_FAMILY_ROWLET +#if P_FAMILY_LITTEN + CRY_LITTEN, + CRY_TORRACAT, + CRY_INCINEROAR, +#endif //P_FAMILY_LITTEN +#if P_FAMILY_POPPLIO + CRY_POPPLIO, + CRY_BRIONNE, + CRY_PRIMARINA, +#endif //P_FAMILY_POPPLIO +#if P_FAMILY_PIKIPEK + CRY_PIKIPEK, + CRY_TRUMBEAK, + CRY_TOUCANNON, +#endif //P_FAMILY_PIKIPEK +#if P_FAMILY_YUNGOOS + CRY_YUNGOOS, + CRY_GUMSHOOS, +#endif //P_FAMILY_YUNGOOS +#if P_FAMILY_GRUBBIN + CRY_GRUBBIN, + CRY_CHARJABUG, + CRY_VIKAVOLT, +#endif //P_FAMILY_GRUBBIN +#if P_FAMILY_CRABRAWLER + CRY_CRABRAWLER, + CRY_CRABOMINABLE, +#endif //P_FAMILY_CRABRAWLER +#if P_FAMILY_ORICORIO + CRY_ORICORIO_BAILE, + CRY_ORICORIO_POM_POM, + CRY_ORICORIO_PAU, + CRY_ORICORIO_SENSU, +#endif //P_FAMILY_ORICORIO +#if P_FAMILY_CUTIEFLY + CRY_CUTIEFLY, + CRY_RIBOMBEE, +#endif //P_FAMILY_CUTIEFLY +#if P_FAMILY_ROCKRUFF + CRY_ROCKRUFF, + CRY_LYCANROC_MIDDAY, + CRY_LYCANROC_MIDNIGHT, + CRY_LYCANROC_DUSK, +#endif //P_FAMILY_ROCKRUFF +#if P_FAMILY_WISHIWASHI + CRY_WISHIWASHI_SOLO, + CRY_WISHIWASHI_SCHOOL, +#endif //P_FAMILY_WISHIWASHI +#if P_FAMILY_MAREANIE + CRY_MAREANIE, + CRY_TOXAPEX, +#endif //P_FAMILY_MAREANIE +#if P_FAMILY_MUDBRAY + CRY_MUDBRAY, + CRY_MUDSDALE, +#endif //P_FAMILY_MUDBRAY +#if P_FAMILY_DEWPIDER + CRY_DEWPIDER, + CRY_ARAQUANID, +#endif //P_FAMILY_DEWPIDER +#if P_FAMILY_FOMANTIS + CRY_FOMANTIS, + CRY_LURANTIS, +#endif //P_FAMILY_FOMANTIS +#if P_FAMILY_MORELULL + CRY_MORELULL, + CRY_SHIINOTIC, +#endif //P_FAMILY_MORELULL +#if P_FAMILY_SALANDIT + CRY_SALANDIT, + CRY_SALAZZLE, +#endif //P_FAMILY_SALANDIT +#if P_FAMILY_STUFFUL + CRY_STUFFUL, + CRY_BEWEAR, +#endif //P_FAMILY_STUFFUL +#if P_FAMILY_BOUNSWEET + CRY_BOUNSWEET, + CRY_STEENEE, + CRY_TSAREENA, +#endif //P_FAMILY_BOUNSWEET +#if P_FAMILY_COMFEY + CRY_COMFEY, +#endif //P_FAMILY_COMFEY +#if P_FAMILY_ORANGURU + CRY_ORANGURU, +#endif //P_FAMILY_ORANGURU +#if P_FAMILY_PASSIMIAN + CRY_PASSIMIAN, +#endif //P_FAMILY_PASSIMIAN +#if P_FAMILY_WIMPOD + CRY_WIMPOD, + CRY_GOLISOPOD, +#endif //P_FAMILY_WIMPOD +#if P_FAMILY_SANDYGAST + CRY_SANDYGAST, + CRY_PALOSSAND, +#endif //P_FAMILY_SANDYGAST +#if P_FAMILY_PYUKUMUKU + CRY_PYUKUMUKU, +#endif //P_FAMILY_PYUKUMUKU +#if P_FAMILY_TYPE_NULL + CRY_TYPE_NULL, + CRY_SILVALLY, +#endif //P_FAMILY_TYPE_NULL +#if P_FAMILY_MINIOR + CRY_MINIOR, +#endif //P_FAMILY_MINIOR +#if P_FAMILY_KOMALA + CRY_KOMALA, +#endif //P_FAMILY_KOMALA +#if P_FAMILY_TURTONATOR + CRY_TURTONATOR, +#endif //P_FAMILY_TURTONATOR +#if P_FAMILY_TOGEDEMARU + CRY_TOGEDEMARU, +#endif //P_FAMILY_TOGEDEMARU +#if P_FAMILY_MIMIKYU + CRY_MIMIKYU, +#endif //P_FAMILY_MIMIKYU +#if P_FAMILY_BRUXISH + CRY_BRUXISH, +#endif //P_FAMILY_BRUXISH +#if P_FAMILY_DRAMPA + CRY_DRAMPA, +#endif //P_FAMILY_DRAMPA +#if P_FAMILY_DHELMISE + CRY_DHELMISE, +#endif //P_FAMILY_DHELMISE +#if P_FAMILY_JANGMO_O + CRY_JANGMO_O, + CRY_HAKAMO_O, + CRY_KOMMO_O, +#endif //P_FAMILY_JANGMO_O +#if P_FAMILY_TAPU_KOKO + CRY_TAPU_KOKO, +#endif //P_FAMILY_TAPU_KOKO +#if P_FAMILY_TAPU_LELE + CRY_TAPU_LELE, +#endif //P_FAMILY_TAPU_LELE +#if P_FAMILY_TAPU_BULU + CRY_TAPU_BULU, +#endif //P_FAMILY_TAPU_BULU +#if P_FAMILY_TAPU_FINI + CRY_TAPU_FINI, +#endif //P_FAMILY_TAPU_FINI +#if P_FAMILY_COSMOG + CRY_COSMOG, + CRY_COSMOEM, + CRY_SOLGALEO, + CRY_LUNALA, +#endif //P_FAMILY_COSMOG +#if P_FAMILY_NIHILEGO + CRY_NIHILEGO, +#endif //P_FAMILY_NIHILEGO +#if P_FAMILY_BUZZWOLE + CRY_BUZZWOLE, +#endif //P_FAMILY_BUZZWOLE +#if P_FAMILY_PHEROMOSA + CRY_PHEROMOSA, +#endif //P_FAMILY_PHEROMOSA +#if P_FAMILY_XURKITREE + CRY_XURKITREE, +#endif //P_FAMILY_XURKITREE +#if P_FAMILY_CELESTEELA + CRY_CELESTEELA, +#endif //P_FAMILY_CELESTEELA +#if P_FAMILY_KARTANA + CRY_KARTANA, +#endif //P_FAMILY_KARTANA +#if P_FAMILY_GUZZLORD + CRY_GUZZLORD, +#endif //P_FAMILY_GUZZLORD +#if P_FAMILY_NECROZMA + CRY_NECROZMA, +#if P_FUSION_FORMS + CRY_NECROZMA_DUSK_MANE, + CRY_NECROZMA_DAWN_WINGS, +#if P_ULTRA_BURST_FORMS + CRY_NECROZMA_ULTRA, +#endif //P_ULTRA_BURST_FORMS +#endif //P_FUSION_FORMS +#endif //P_FAMILY_NECROZMA +#if P_FAMILY_MAGEARNA + CRY_MAGEARNA, +#endif //P_FAMILY_MAGEARNA +#if P_FAMILY_MARSHADOW + CRY_MARSHADOW, +#endif //P_FAMILY_MARSHADOW +#if P_FAMILY_POIPOLE + CRY_POIPOLE, + CRY_NAGANADEL, +#endif //P_FAMILY_POIPOLE +#if P_FAMILY_STAKATAKA + CRY_STAKATAKA, +#endif //P_FAMILY_STAKATAKA +#if P_FAMILY_BLACEPHALON + CRY_BLACEPHALON, +#endif //P_FAMILY_BLACEPHALON +#if P_FAMILY_ZERAORA + CRY_ZERAORA, +#endif //P_FAMILY_ZERAORA +#if P_FAMILY_MELTAN + CRY_MELTAN, + CRY_MELMETAL, +#endif //P_FAMILY_MELTAN +#if P_FAMILY_GROOKEY + CRY_GROOKEY, + CRY_THWACKEY, + CRY_RILLABOOM, +#endif //P_FAMILY_GROOKEY +#if P_FAMILY_SCORBUNNY + CRY_SCORBUNNY, + CRY_RABOOT, + CRY_CINDERACE, +#endif //P_FAMILY_SCORBUNNY +#if P_FAMILY_SOBBLE + CRY_SOBBLE, + CRY_DRIZZILE, + CRY_INTELEON, +#endif //P_FAMILY_SOBBLE +#if P_FAMILY_SKWOVET + CRY_SKWOVET, + CRY_GREEDENT, +#endif //P_FAMILY_SKWOVET +#if P_FAMILY_ROOKIDEE + CRY_ROOKIDEE, + CRY_CORVISQUIRE, + CRY_CORVIKNIGHT, +#endif //P_FAMILY_ROOKIDEE +#if P_FAMILY_BLIPBUG + CRY_BLIPBUG, + CRY_DOTTLER, + CRY_ORBEETLE, +#endif //P_FAMILY_BLIPBUG +#if P_FAMILY_NICKIT + CRY_NICKIT, + CRY_THIEVUL, +#endif //P_FAMILY_NICKIT +#if P_FAMILY_GOSSIFLEUR + CRY_GOSSIFLEUR, + CRY_ELDEGOSS, +#endif //P_FAMILY_GOSSIFLEUR +#if P_FAMILY_WOOLOO + CRY_WOOLOO, + CRY_DUBWOOL, +#endif //P_FAMILY_WOOLOO +#if P_FAMILY_CHEWTLE + CRY_CHEWTLE, + CRY_DREDNAW, +#endif //P_FAMILY_CHEWTLE +#if P_FAMILY_YAMPER + CRY_YAMPER, + CRY_BOLTUND, +#endif //P_FAMILY_YAMPER +#if P_FAMILY_ROLYCOLY + CRY_ROLYCOLY, + CRY_CARKOL, + CRY_COALOSSAL, +#endif //P_FAMILY_ROLYCOLY +#if P_FAMILY_APPLIN + CRY_APPLIN, + CRY_FLAPPLE, + CRY_APPLETUN, +#if P_GEN_9_CROSS_EVOS + CRY_DIPPLIN, +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_APPLIN +#if P_FAMILY_SILICOBRA + CRY_SILICOBRA, + CRY_SANDACONDA, +#endif //P_FAMILY_SILICOBRA +#if P_FAMILY_CRAMORANT + CRY_CRAMORANT, +#endif //P_FAMILY_CRAMORANT +#if P_FAMILY_ARROKUDA + CRY_ARROKUDA, + CRY_BARRASKEWDA, +#endif //P_FAMILY_ARROKUDA +#if P_FAMILY_TOXEL + CRY_TOXEL, + CRY_TOXTRICITY_AMPED, + CRY_TOXTRICITY_LOW_KEY, +#endif //P_FAMILY_TOXEL +#if P_FAMILY_SIZZLIPEDE + CRY_SIZZLIPEDE, + CRY_CENTISKORCH, +#endif //P_FAMILY_SIZZLIPEDE +#if P_FAMILY_CLOBBOPUS + CRY_CLOBBOPUS, + CRY_GRAPPLOCT, +#endif //P_FAMILY_CLOBBOPUS +#if P_FAMILY_SINISTEA + CRY_SINISTEA, + CRY_POLTEAGEIST, +#endif //P_FAMILY_SINISTEA +#if P_FAMILY_HATENNA + CRY_HATENNA, + CRY_HATTREM, + CRY_HATTERENE, +#endif //P_FAMILY_HATENNA +#if P_FAMILY_IMPIDIMP + CRY_IMPIDIMP, + CRY_MORGREM, + CRY_GRIMMSNARL, +#endif //P_FAMILY_IMPIDIMP +#if P_FAMILY_MILCERY + CRY_MILCERY, + CRY_ALCREMIE, +#endif //P_FAMILY_MILCERY +#if P_FAMILY_FALINKS + CRY_FALINKS, +#endif //P_FAMILY_FALINKS +#if P_FAMILY_PINCURCHIN + CRY_PINCURCHIN, +#endif //P_FAMILY_PINCURCHIN +#if P_FAMILY_SNOM + CRY_SNOM, + CRY_FROSMOTH, +#endif //P_FAMILY_SNOM +#if P_FAMILY_STONJOURNER + CRY_STONJOURNER, +#endif //P_FAMILY_STONJOURNER +#if P_FAMILY_EISCUE + CRY_EISCUE_ICE_FACE, + CRY_EISCUE_NOICE_FACE, +#endif //P_FAMILY_EISCUE +#if P_FAMILY_INDEEDEE + CRY_INDEEDEE_MALE, + CRY_INDEEDEE_FEMALE, +#endif //P_FAMILY_INDEEDEE +#if P_FAMILY_MORPEKO + CRY_MORPEKO_FULL_BELLY, + CRY_MORPEKO_HANGRY, +#endif //P_FAMILY_MORPEKO +#if P_FAMILY_CUFANT + CRY_CUFANT, + CRY_COPPERAJAH, +#endif //P_FAMILY_CUFANT +#if P_FAMILY_DRACOZOLT + CRY_DRACOZOLT, +#endif //P_FAMILY_DRACOZOLT +#if P_FAMILY_ARCTOZOLT + CRY_ARCTOZOLT, +#endif //P_FAMILY_ARCTOZOLT +#if P_FAMILY_DRACOVISH + CRY_DRACOVISH, +#endif //P_FAMILY_DRACOVISH +#if P_FAMILY_ARCTOVISH + CRY_ARCTOVISH, +#endif //P_FAMILY_ARCTOVISH +#if P_FAMILY_DURALUDON + CRY_DURALUDON, +#endif //P_FAMILY_DURALUDON +#if P_FAMILY_DREEPY + CRY_DREEPY, + CRY_DRAKLOAK, + CRY_DRAGAPULT, +#endif //P_FAMILY_DREEPY +#if P_FAMILY_ZACIAN + CRY_ZACIAN_HERO_OF_MANY_BATTLES, + CRY_ZACIAN_CROWNED_SWORD, +#endif //P_FAMILY_ZACIAN +#if P_FAMILY_ZAMAZENTA + CRY_ZAMAZENTA_HERO_OF_MANY_BATTLES, + CRY_ZAMAZENTA_CROWNED_SHIELD, +#endif //P_FAMILY_ZAMAZENTA +#if P_FAMILY_ETERNATUS + CRY_ETERNATUS, + CRY_ETERNATUS_ETERNAMAX, +#endif //P_FAMILY_ETERNATUS +#if P_FAMILY_KUBFU + CRY_KUBFU, + CRY_URSHIFU_SINGLE_STRIKE_STYLE, + CRY_URSHIFU_RAPID_STRIKE_STYLE, +#endif //P_FAMILY_KUBFU +#if P_FAMILY_ZARUDE + CRY_ZARUDE, +#endif //P_FAMILY_ZARUDE +#if P_FAMILY_REGIELEKI + CRY_REGIELEKI, +#endif //P_FAMILY_REGIELEKI +#if P_FAMILY_REGIDRAGO + CRY_REGIDRAGO, +#endif //P_FAMILY_REGIDRAGO +#if P_FAMILY_GLASTRIER + CRY_GLASTRIER, +#endif //P_FAMILY_GLASTRIER +#if P_FAMILY_SPECTRIER + CRY_SPECTRIER, +#endif //P_FAMILY_SPECTRIER +#if P_FAMILY_CALYREX + CRY_CALYREX, +#if P_FUSION_FORMS + CRY_CALYREX_ICE_RIDER, + CRY_CALYREX_SHADOW_RIDER, +#endif //P_FUSION_FORMS +#endif //P_FAMILY_CALYREX +#if P_FAMILY_ENAMORUS + CRY_ENAMORUS_INCARNATE, + CRY_ENAMORUS_THERIAN, +#endif //P_FAMILY_ENAMORUS +#if P_FAMILY_SPRIGATITO + CRY_SPRIGATITO, + CRY_FLORAGATO, + CRY_MEOWSCARADA, +#endif //P_FAMILY_SPRIGATITO +#if P_FAMILY_FUECOCO + CRY_FUECOCO, + CRY_CROCALOR, + CRY_SKELEDIRGE, +#endif //P_FAMILY_FUECOCO +#if P_FAMILY_QUAXLY + CRY_QUAXLY, + CRY_QUAXWELL, + CRY_QUAQUAVAL, +#endif //P_FAMILY_QUAXLY +#if P_FAMILY_LECHONK + CRY_LECHONK, + CRY_OINKOLOGNE_MALE, + CRY_OINKOLOGNE_FEMALE, +#endif //P_FAMILY_LECHONK +#if P_FAMILY_TAROUNTULA + CRY_TAROUNTULA, + CRY_SPIDOPS, +#endif //P_FAMILY_TAROUNTULA +#if P_FAMILY_NYMBLE + CRY_NYMBLE, + CRY_LOKIX, +#endif //P_FAMILY_NYMBLE +#if P_FAMILY_PAWMI + CRY_PAWMI, + CRY_PAWMO, + CRY_PAWMOT, +#endif //P_FAMILY_PAWMI +#if P_FAMILY_TANDEMAUS + CRY_TANDEMAUS, + CRY_MAUSHOLD_FAMILY_OF_THREE, + CRY_MAUSHOLD_FAMILY_OF_FOUR, +#endif //P_FAMILY_TANDEMAUS +#if P_FAMILY_FIDOUGH + CRY_FIDOUGH, + CRY_DACHSBUN, +#endif //P_FAMILY_FIDOUGH +#if P_FAMILY_SMOLIV + CRY_SMOLIV, + CRY_DOLLIV, + CRY_ARBOLIVA, +#endif //P_FAMILY_SMOLIV +#if P_FAMILY_SQUAWKABILLY + CRY_SQUAWKABILLY, +#endif //P_FAMILY_SQUAWKABILLY +#if P_FAMILY_NACLI + CRY_NACLI, + CRY_NACLSTACK, + CRY_GARGANACL, +#endif //P_FAMILY_NACLI +#if P_FAMILY_CHARCADET + CRY_CHARCADET, + CRY_ARMAROUGE, + CRY_CERULEDGE, +#endif //P_FAMILY_CHARCADET +#if P_FAMILY_TADBULB + CRY_TADBULB, + CRY_BELLIBOLT, +#endif //P_FAMILY_TADBULB +#if P_FAMILY_WATTREL + CRY_WATTREL, + CRY_KILOWATTREL, +#endif //P_FAMILY_WATTREL +#if P_FAMILY_MASCHIFF + CRY_MASCHIFF, + CRY_MABOSSTIFF, +#endif //P_FAMILY_MASCHIFF +#if P_FAMILY_SHROODLE + CRY_SHROODLE, + CRY_GRAFAIAI, +#endif //P_FAMILY_SHROODLE +#if P_FAMILY_BRAMBLIN + CRY_BRAMBLIN, + CRY_BRAMBLEGHAST, +#endif //P_FAMILY_BRAMBLIN +#if P_FAMILY_TOEDSCOOL + CRY_TOEDSCOOL, + CRY_TOEDSCRUEL, +#endif //P_FAMILY_TOEDSCOOL +#if P_FAMILY_KLAWF + CRY_KLAWF, +#endif //P_FAMILY_KLAWF +#if P_FAMILY_CAPSAKID + CRY_CAPSAKID, + CRY_SCOVILLAIN, +#endif //P_FAMILY_CAPSAKID +#if P_FAMILY_RELLOR + CRY_RELLOR, + CRY_RABSCA, +#endif //P_FAMILY_RELLOR +#if P_FAMILY_FLITTLE + CRY_FLITTLE, + CRY_ESPATHRA, +#endif //P_FAMILY_FLITTLE +#if P_FAMILY_TINKATINK + CRY_TINKATINK, + CRY_TINKATUFF, + CRY_TINKATON, +#endif //P_FAMILY_TINKATINK +#if P_FAMILY_WIGLETT + CRY_WIGLETT, + CRY_WUGTRIO, +#endif //P_FAMILY_WIGLETT +#if P_FAMILY_BOMBIRDIER + CRY_BOMBIRDIER, +#endif //P_FAMILY_BOMBIRDIER +#if P_FAMILY_FINIZEN + CRY_FINIZEN, + CRY_PALAFIN_ZERO, + CRY_PALAFIN_HERO, +#endif //P_FAMILY_FINIZEN +#if P_FAMILY_VAROOM + CRY_VAROOM, + CRY_REVAVROOM, +#endif //P_FAMILY_VAROOM +#if P_FAMILY_CYCLIZAR + CRY_CYCLIZAR, +#endif //P_FAMILY_CYCLIZAR +#if P_FAMILY_ORTHWORM + CRY_ORTHWORM, +#endif //P_FAMILY_ORTHWORM +#if P_FAMILY_GLIMMET + CRY_GLIMMET, + CRY_GLIMMORA, +#endif //P_FAMILY_GLIMMET +#if P_FAMILY_GREAVARD + CRY_GREAVARD, + CRY_HOUNDSTONE, +#endif //P_FAMILY_GREAVARD +#if P_FAMILY_FLAMIGO + CRY_FLAMIGO, +#endif //P_FAMILY_FLAMIGO +#if P_FAMILY_CETODDLE + CRY_CETODDLE, + CRY_CETITAN, +#endif //P_FAMILY_CETODDLE +#if P_FAMILY_VELUZA + CRY_VELUZA, +#endif //P_FAMILY_VELUZA +#if P_FAMILY_DONDOZO + CRY_DONDOZO, +#endif //P_FAMILY_DONDOZO +#if P_FAMILY_TATSUGIRI + CRY_TATSUGIRI_CURLY, + CRY_TATSUGIRI_DROOPY, + CRY_TATSUGIRI_STRETCHY, +#endif //P_FAMILY_TATSUGIRI +#if P_FAMILY_GREAT_TUSK + CRY_GREAT_TUSK, +#endif //P_FAMILY_GREAT_TUSK +#if P_FAMILY_SCREAM_TAIL + CRY_SCREAM_TAIL, +#endif //P_FAMILY_SCREAM_TAIL +#if P_FAMILY_BRUTE_BONNET + CRY_BRUTE_BONNET, +#endif //P_FAMILY_BRUTE_BONNET +#if P_FAMILY_FLUTTER_MANE + CRY_FLUTTER_MANE, +#endif //P_FAMILY_FLUTTER_MANE +#if P_FAMILY_SLITHER_WING + CRY_SLITHER_WING, +#endif //P_FAMILY_SLITHER_WING +#if P_FAMILY_SANDY_SHOCKS + CRY_SANDY_SHOCKS, +#endif //P_FAMILY_SANDY_SHOCKS +#if P_FAMILY_IRON_TREADS + CRY_IRON_TREADS, +#endif //P_FAMILY_IRON_TREADS +#if P_FAMILY_IRON_BUNDLE + CRY_IRON_BUNDLE, +#endif //P_FAMILY_IRON_BUNDLE +#if P_FAMILY_IRON_HANDS + CRY_IRON_HANDS, +#endif //P_FAMILY_IRON_HANDS +#if P_FAMILY_IRON_JUGULIS + CRY_IRON_JUGULIS, +#endif //P_FAMILY_IRON_JUGULIS +#if P_FAMILY_IRON_MOTH + CRY_IRON_MOTH, +#endif //P_FAMILY_IRON_MOTH +#if P_FAMILY_IRON_THORNS + CRY_IRON_THORNS, +#endif //P_FAMILY_IRON_THORNS +#if P_FAMILY_FRIGIBAX + CRY_FRIGIBAX, + CRY_ARCTIBAX, + CRY_BAXCALIBUR, +#endif //P_FAMILY_FRIGIBAX +#if P_FAMILY_GIMMIGHOUL + CRY_GIMMIGHOUL, + CRY_GHOLDENGO, +#endif //P_FAMILY_GIMMIGHOUL +#if P_FAMILY_WO_CHIEN + CRY_WO_CHIEN, +#endif //P_FAMILY_WO_CHIEN +#if P_FAMILY_CHIEN_PAO + CRY_CHIEN_PAO, +#endif //P_FAMILY_CHIEN_PAO +#if P_FAMILY_TING_LU + CRY_TING_LU, +#endif //P_FAMILY_TING_LU +#if P_FAMILY_CHI_YU + CRY_CHI_YU, +#endif //P_FAMILY_CHI_YU +#if P_FAMILY_ROARING_MOON + CRY_ROARING_MOON, +#endif //P_FAMILY_ROARING_MOON +#if P_FAMILY_IRON_VALIANT + CRY_IRON_VALIANT, +#endif //P_FAMILY_IRON_VALIANT +#if P_FAMILY_KORAIDON + CRY_KORAIDON, +#endif //P_FAMILY_KORAIDON +#if P_FAMILY_MIRAIDON + CRY_MIRAIDON, +#endif //P_FAMILY_MIRAIDON +#if P_FAMILY_WALKING_WAKE + CRY_WALKING_WAKE, +#endif //P_FAMILY_WALKING_WAKE +#if P_FAMILY_IRON_LEAVES + CRY_IRON_LEAVES, +#endif //P_FAMILY_IRON_LEAVES +#if P_FAMILY_POLTCHAGEIST + CRY_POLTCHAGEIST, + CRY_SINISTCHA, +#endif //P_FAMILY_POLTCHAGEIST +#if P_FAMILY_OKIDOGI + CRY_OKIDOGI, +#endif //P_FAMILY_OKIDOGI +#if P_FAMILY_MUNKIDORI + CRY_MUNKIDORI, +#endif //P_FAMILY_MUNKIDORI +#if P_FAMILY_FEZANDIPITI + CRY_FEZANDIPITI, +#endif //P_FAMILY_FEZANDIPITI +#if P_FAMILY_OGERPON + CRY_OGERPON, +#endif //P_FAMILY_OGERPON + CRY_COUNT, +}; + +#endif // GUARD_CONSTANTS_CRIES_H diff --git a/include/constants/event_object_movement.h b/include/constants/event_object_movement.h index af5af53403..cd971efddf 100755 --- a/include/constants/event_object_movement.h +++ b/include/constants/event_object_movement.h @@ -242,6 +242,8 @@ #define MOVEMENT_ACTION_FIGURE_8 0x9B #define MOVEMENT_ACTION_FLY_UP 0x9C #define MOVEMENT_ACTION_FLY_DOWN 0x9D +#define MOVEMENT_ACTION_EMOTE_X 0x9E +#define MOVEMENT_ACTION_EMOTE_DOUBLE_EXCL_MARK 0x9F #define MOVEMENT_ACTION_STEP_END 0xFE #define MOVEMENT_ACTION_NONE 0xFF @@ -300,6 +302,7 @@ #define ANIM_GET_ON_OFF_POKEMON_EAST (ANIM_STD_COUNT + 3) #define ANIM_NURSE_BOW (ANIM_STD_COUNT + 0) +#define ANIM_RAISE_HAND (ANIM_STD_COUNT + 0) #define ANIM_FIELD_MOVE 0 diff --git a/include/constants/expansion.h b/include/constants/expansion.h new file mode 100644 index 0000000000..b6add1618e --- /dev/null +++ b/include/constants/expansion.h @@ -0,0 +1,12 @@ +#ifndef GUARD_CONSTANTS_EXPANSION_H +#define GUARD_CONSTANTS_EXPANSION_H + +#define EXPANSION_VERSION_MAJOR 1 +#define EXPANSION_VERSION_MINOR 7 +#define EXPANSION_VERSION_PATCH 0 + +// FALSE if this this version of Expansion is not a tagged commit, i.e. +// it contains unreleased changes. +#define EXPANSION_TAGGED_RELEASE TRUE + +#endif diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h index a620409479..f8efeb9b81 100644 --- a/include/constants/field_effects.h +++ b/include/constants/field_effects.h @@ -68,6 +68,9 @@ #define FLDEFF_RAYQUAZA_SPOTLIGHT 64 #define FLDEFF_DESTROY_DEOXYS_ROCK 65 #define FLDEFF_MOVE_DEOXYS_ROCK 66 +#define FLDEFF_USE_VS_SEEKER 67 +#define FLDEFF_X_ICON 68 +#define FLDEFF_DOUBLE_EXCL_MARK_ICON 69 #define FLDEFFOBJ_SHADOW_S 0 #define FLDEFFOBJ_SHADOW_M 1 diff --git a/include/constants/form_change_types.h b/include/constants/form_change_types.h index db96b06574..51325baf25 100644 --- a/include/constants/form_change_types.h +++ b/include/constants/form_change_types.h @@ -11,6 +11,7 @@ #define DAY 1 #define NIGHT 2 +#define FUSION_TERMINATOR 0xFF #define FORM_CHANGE_TERMINATOR 0 // Form change that activates when the specified item is given to or taken from the selected Pokémon. @@ -101,4 +102,22 @@ // param1: item to hold. #define FORM_CHANGE_BATTLE_ULTRA_BURST 16 +// Form change that activates when the mon Dynamaxes (TODO: with Gigantamax factor). +// - No parameters +#define FORM_CHANGE_BATTLE_GIGANTAMAX 17 + +// Form change that activates at a certain time of day in the overworld automatically. +// param1: time of day to check. +// - DAY if Form change that activates in the daytime. +// - NIGHT if Form change that activates at nighttime. +#define FORM_CHANGE_TIME_OF_DAY 18 + +// Form change that depends on a multichoice (e.g. Rotom Catalog). +// param1: multichoice list (starting at 0). +#define FORM_CHANGE_ITEM_USE_MULTICHOICE 19 + +// Form change that activates when inflicted with a specific status +// param1: status +#define FORM_CHANGE_STATUS 20 + #endif // GUARD_CONSTANTS_FORM_CHANGE_TYPES_H diff --git a/include/constants/hold_effects.h b/include/constants/hold_effects.h index 9f877cffa8..a54f569cd2 100644 --- a/include/constants/hold_effects.h +++ b/include/constants/hold_effects.h @@ -160,9 +160,10 @@ #define HOLD_EFFECT_COVERT_CLOAK 179 #define HOLD_EFFECT_LOADED_DICE 180 #define HOLD_EFFECT_BOOSTER_ENERGY 181 // Not implemented. +#define HOLD_EFFECT_MASK 183 // Gen2 hold effect -#define HOLD_EFFECT_BERSERK_GENE 182 +#define HOLD_EFFECT_BERSERK_GENE 184 #define HOLD_EFFECT_CHOICE(holdEffect)((holdEffect == HOLD_EFFECT_CHOICE_BAND || holdEffect == HOLD_EFFECT_CHOICE_SCARF || holdEffect == HOLD_EFFECT_CHOICE_SPECS)) diff --git a/include/constants/item_effects.h b/include/constants/item_effects.h index fca7924514..ac1c7d5c5b 100644 --- a/include/constants/item_effects.h +++ b/include/constants/item_effects.h @@ -66,6 +66,7 @@ #define ITEM6_ADD_EV 10 #define ITEM6_SUBTRACT_EV -10 #define ITEM6_ADD_ONE_EV 1 +#define ITEM6_RESET_EV 0 // Used for GetItemEffectType. #define ITEM_EFFECT_X_ITEM 0 diff --git a/include/constants/items.h b/include/constants/items.h index 20cbc6379b..dbe8c9acd2 100644 --- a/include/constants/items.h +++ b/include/constants/items.h @@ -51,11 +51,13 @@ #define ITEM_LEMONADE 37 #define ITEM_MOOMOO_MILK 38 #define ITEM_ENERGY_POWDER 39 +#define ITEM_ENERGYPOWDER ITEM_ENERGY_POWDER // Pre-Gen VI name #define ITEM_ENERGY_ROOT 40 #define ITEM_HEAL_POWDER 41 #define ITEM_REVIVAL_HERB 42 #define ITEM_ANTIDOTE 43 #define ITEM_PARALYZE_HEAL 44 +#define ITEM_PARLYZ_HEAL ITEM_PARALYZE_HEAL // Pre-Gen VI name #define ITEM_BURN_HEAL 45 #define ITEM_ICE_HEAL 46 #define ITEM_AWAKENING 47 @@ -63,7 +65,9 @@ #define ITEM_ETHER 49 #define ITEM_MAX_ETHER 50 #define ITEM_ELIXIR 51 +#define ITEM_ELIXER ITEM_ELIXIR // Pre-Gen III name #define ITEM_MAX_ELIXIR 52 +#define ITEM_MAX_ELIXER ITEM_MAX_ELIXIR // Pre-Gen III name #define ITEM_BERRY_JUICE 53 #define ITEM_SACRED_ASH 54 #define ITEM_SWEET_HEART 55 @@ -72,6 +76,7 @@ // Regional Specialties #define ITEM_PEWTER_CRUNCHIES 57 #define ITEM_RAGE_CANDY_BAR 58 +#define ITEM_RAGECANDYBAR ITEM_RAGE_CANDY_BAR // Pre-Gen VI name #define ITEM_LAVA_COOKIE 59 #define ITEM_OLD_GATEAU 60 #define ITEM_CASTELIACONE 61 @@ -91,11 +96,17 @@ // EV Feathers #define ITEM_HEALTH_FEATHER 73 +#define ITEM_HEALTH_WING ITEM_HEALTH_FEATHER // Pre-Gen VIII name #define ITEM_MUSCLE_FEATHER 74 +#define ITEM_MUSCLE_WING ITEM_MUSCLE_FEATHER // Pre-Gen VIII name #define ITEM_RESIST_FEATHER 75 +#define ITEM_RESIST_WING ITEM_RESIST_FEATHER // Pre-Gen VIII name #define ITEM_GENIUS_FEATHER 76 +#define ITEM_GENIUS_WING ITEM_GENIUS_FEATHER // Pre-Gen VIII name #define ITEM_CLEVER_FEATHER 77 +#define ITEM_CLEVER_WING ITEM_CLEVER_FEATHER // Pre-Gen VIII name #define ITEM_SWIFT_FEATHER 78 +#define ITEM_SWIFT_WING ITEM_SWIFT_FEATHER // Pre-Gen VIII name // Ability Modifiers #define ITEM_ABILITY_CAPSULE 79 @@ -155,7 +166,9 @@ // X Items #define ITEM_X_ATTACK 121 #define ITEM_X_DEFENSE 122 +#define ITEM_X_DEFEND ITEM_X_DEFENSE // Pre-Gen VI name #define ITEM_X_SP_ATK 123 +#define ITEM_X_SPECIAL ITEM_X_SP_ATK // Pre-Gen VI name #define ITEM_X_SP_DEF 124 #define ITEM_X_SPEED 125 #define ITEM_X_ACCURACY 126 @@ -176,8 +189,10 @@ #define ITEM_NUGGET 135 #define ITEM_BIG_NUGGET 136 #define ITEM_TINY_MUSHROOM 137 +#define ITEM_TINYMUSHROOM ITEM_TINY_MUSHROOM // Pre-Gen VI name #define ITEM_BIG_MUSHROOM 138 #define ITEM_BALM_MUSHROOM 139 +#define ITEM_BALMMUSHROOM ITEM_BALM_MUSHROOM // Pre-Gen VI name #define ITEM_PEARL 140 #define ITEM_BIG_PEARL 141 #define ITEM_PEARL_STRING 142 @@ -195,6 +210,7 @@ #define ITEM_RARE_BONE 154 #define ITEM_ODD_KEYSTONE 155 #define ITEM_PRETTY_FEATHER 156 +#define ITEM_PRETTY_WING ITEM_PRETTY_FEATHER // Pre-Gen VIII name #define ITEM_RELIC_COPPER 157 #define ITEM_RELIC_SILVER 158 #define ITEM_RELIC_GOLD 159 @@ -234,11 +250,17 @@ // Apricorns #define ITEM_RED_APRICORN 188 #define ITEM_BLUE_APRICORN 189 +#define ITEM_BLU_APRICORN ITEM_BLUE_APRICORN // Pre-Gen VI name #define ITEM_YELLOW_APRICORN 190 +#define ITEM_YLW_APRICORN ITEM_YELLOW_APRICORN // Pre-Gen VI name #define ITEM_GREEN_APRICORN 191 +#define ITEM_GRN_APRICORN ITEM_GREEN_APRICORN // Pre-Gen VI name #define ITEM_PINK_APRICORN 192 +#define ITEM_PNK_APRICORN ITEM_PINK_APRICORN // Pre-Gen VI name #define ITEM_WHITE_APRICORN 193 +#define ITEM_WHT_APRICORN ITEM_WHITE_APRICORN // Pre-Gen VI name #define ITEM_BLACK_APRICORN 194 +#define ITEM_BLK_APRICORN ITEM_BLACK_APRICORN // Pre-Gen VI name #define ITEM_WISHING_PIECE 195 #define ITEM_GALARICA_TWIG 196 @@ -265,6 +287,7 @@ #define ITEM_FIRE_STONE 211 #define ITEM_WATER_STONE 212 #define ITEM_THUNDER_STONE 213 +#define ITEM_THUNDERSTONE ITEM_THUNDER_STONE // Pre-Gen VI name #define ITEM_LEAF_STONE 214 #define ITEM_ICE_STONE 215 #define ITEM_SUN_STONE 216 @@ -280,6 +303,7 @@ #define ITEM_GALARICA_WREATH 226 #define ITEM_DRAGON_SCALE 227 #define ITEM_UPGRADE 228 +#define ITEM_UP_GRADE ITEM_UPGRADE // Pre-Gen VIII name #define ITEM_PROTECTOR 229 #define ITEM_ELECTIRIZER 230 #define ITEM_MAGMARIZER 231 @@ -465,12 +489,15 @@ // Species-specific Held Items #define ITEM_LIGHT_BALL 392 #define ITEM_LEEK 393 +#define ITEM_STICK ITEM_LEEK // Pre-Gen VIII name #define ITEM_THICK_CLUB 394 #define ITEM_LUCKY_PUNCH 395 #define ITEM_METAL_POWDER 396 #define ITEM_QUICK_POWDER 397 #define ITEM_DEEP_SEA_SCALE 398 +#define ITEM_DEEPSEASCALE ITEM_DEEP_SEA_SCALE // Pre-Gen VI name #define ITEM_DEEP_SEA_TOOTH 399 +#define ITEM_DEEPSEATOOTH ITEM_DEEP_SEA_TOOTH // Pre-Gen VI name #define ITEM_SOUL_DEW 400 #define ITEM_ADAMANT_ORB 401 #define ITEM_LUSTROUS_ORB 402 @@ -510,16 +537,21 @@ #define ITEM_MAGNET 428 #define ITEM_MIRACLE_SEED 429 #define ITEM_NEVER_MELT_ICE 430 +#define ITEM_NEVERMELTICE ITEM_NEVER_MELT_ICE // Pre-Gen VI name #define ITEM_BLACK_BELT 431 +#define ITEM_BLACKBELT ITEM_BLACK_BELT // Gen II name #define ITEM_POISON_BARB 432 #define ITEM_SOFT_SAND 433 #define ITEM_SHARP_BEAK 434 #define ITEM_TWISTED_SPOON 435 +#define ITEM_TWISTEDSPOON ITEM_TWISTED_SPOON // Pre-Gen VI name #define ITEM_SILVER_POWDER 436 +#define ITEM_SILVERPOWDER ITEM_SILVER_POWDER // Pre-Gen VI name #define ITEM_HARD_STONE 437 #define ITEM_SPELL_TAG 438 #define ITEM_DRAGON_FANG 439 #define ITEM_BLACK_GLASSES 440 +#define ITEM_BLACKGLASSES ITEM_BLACK_GLASSES // Pre-Gen VI name #define ITEM_METAL_COAT 441 // Choice Items @@ -551,8 +583,10 @@ // Misc. Held Items #define ITEM_BRIGHT_POWDER 459 +#define ITEM_BRIGHTPOWDER ITEM_BRIGHT_POWDER // Pre-Gen VI name #define ITEM_WHITE_HERB 460 #define ITEM_EXP_SHARE 461 +#define ITEM_EXP_ALL ITEM_EXP_SHARE // Gen I name #define ITEM_QUICK_CLAW 462 #define ITEM_SOOTHE_BELL 463 #define ITEM_MENTAL_HERB 464 @@ -607,6 +641,20 @@ #define ITEM_UTILITY_UMBRELLA 513 // Berries +#if B_CONFUSE_BERRIES_HEAL >= GEN_8 + #define CONFUSE_BERRY_HEAL_FRACTION 3 +#elif B_CONFUSE_BERRIES_HEAL == GEN_7 + #define CONFUSE_BERRY_HEAL_FRACTION 2 +#else + #define CONFUSE_BERRY_HEAL_FRACTION 8 +#endif + +#if B_CONFUSE_BERRIES_HEAL >= GEN_7 + #define CONFUSE_BERRY_HP_FRACTION 4 +#else + #define CONFUSE_BERRY_HP_FRACTION 2 +#endif + #define ITEM_CHERI_BERRY 514 #define ITEM_CHESTO_BERRY 515 #define ITEM_PECHA_BERRY 516 @@ -820,11 +868,14 @@ #define ITEM_GOOD_ROD 710 #define ITEM_SUPER_ROD 711 #define ITEM_DOWSING_MACHINE 712 +#define ITEM_ITEMFINDER ITEM_DOWSING_MACHINE // Pre-Gen IV name +#define ITEM_DOWSING_MCHN ITEM_DOWSING_MACHINE // Gen IV-V name #define ITEM_TOWN_MAP 713 #define ITEM_VS_SEEKER 714 #define ITEM_TM_CASE 715 #define ITEM_BERRY_POUCH 716 #define ITEM_POKEMON_BOX_LINK 717 +#define ITEM_POKEMON_BOX ITEM_POKEMON_BOX_LINK // Pre-Gen VIII name #define ITEM_COIN_CASE 718 #define ITEM_POWDER_JAR 719 #define ITEM_WAILMER_PAIL 720 @@ -843,19 +894,25 @@ #define ITEM_OLD_SEA_MAP 731 #define ITEM_LETTER 732 #define ITEM_DEVON_PARTS 733 +#define ITEM_DEVON_GOODS ITEM_DEVON_PARTS // Pre-Gen VI name #define ITEM_GO_GOGGLES 734 #define ITEM_DEVON_SCOPE 735 #define ITEM_BASEMENT_KEY 736 #define ITEM_SCANNER 737 #define ITEM_STORAGE_KEY 738 #define ITEM_KEY_TO_ROOM_1 739 +#define ITEM_RM_1_KEY ITEM_KEY_TO_ROOM_1 // Pre-Gen VI name #define ITEM_KEY_TO_ROOM_2 740 +#define ITEM_RM_2_KEY ITEM_KEY_TO_ROOM_2 // Pre-Gen VI name #define ITEM_KEY_TO_ROOM_4 741 +#define ITEM_RM_4_KEY ITEM_KEY_TO_ROOM_4 // Pre-Gen VI name #define ITEM_KEY_TO_ROOM_6 742 +#define ITEM_RM_6_KEY ITEM_KEY_TO_ROOM_6 // Pre-Gen VI name #define ITEM_METEORITE 743 #define ITEM_MAGMA_EMBLEM 744 #define ITEM_CONTEST_PASS 745 -#define ITEM_OAKS_PARCEL 746 +#define ITEM_PARCEL 746 +#define ITEM_OAKS_PARCEL ITEM_PARCEL // Pre-Gen IV name #define ITEM_SECRET_KEY 747 #define ITEM_BIKE_VOUCHER 748 #define ITEM_GOLD_TEETH 749 @@ -914,7 +971,25 @@ #define ITEM_PEAT_BLOCK 797 #define ITEM_BERSERK_GENE 798 -#define ITEMS_COUNT 799 +#define ITEM_FAIRY_FEATHER 799 +#define ITEM_SYRUPY_APPLE 800 +#define ITEM_UNREMARKABLE_TEACUP 801 +#define ITEM_MASTERPIECE_TEACUP 802 +#define ITEM_CORNERSTONE_MASK 803 +#define ITEM_WELLSPRING_MASK 804 +#define ITEM_HEARTHFLAME_MASK 805 +#define ITEM_HEALTH_MOCHI 806 +#define ITEM_MUSCLE_MOCHI 807 +#define ITEM_RESIST_MOCHI 808 +#define ITEM_GENIUS_MOCHI 809 +#define ITEM_CLEVER_MOCHI 810 +#define ITEM_SWIFT_MOCHI 811 +#define ITEM_FRESH_START_MOCHI 812 +#define ITEM_GLIMMERING_CHARM 813 +#define ITEM_814 814 // TWV0YWwgQWxsb3k= +#define ITEM_815 815 // U3RlbGxhciBUZXJhIFNoYXJk + +#define ITEMS_COUNT 816 #define ITEM_FIELD_ARROW ITEMS_COUNT // A special item id associated with "Cancel"/"Exit" etc. in a list of items or decorations diff --git a/include/constants/moves.h b/include/constants/moves.h index dd00aacb45..a8fcb01654 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -5,14 +5,18 @@ #define MOVE_POUND 1 #define MOVE_KARATE_CHOP 2 #define MOVE_DOUBLE_SLAP 3 +#define MOVE_DOUBLESLAP MOVE_DOUBLE_SLAP // Pre-Gen VI name #define MOVE_COMET_PUNCH 4 #define MOVE_MEGA_PUNCH 5 #define MOVE_PAY_DAY 6 #define MOVE_FIRE_PUNCH 7 #define MOVE_ICE_PUNCH 8 #define MOVE_THUNDER_PUNCH 9 +#define MOVE_THUNDERPUNCH MOVE_THUNDER_PUNCH // Pre-Gen VI name #define MOVE_SCRATCH 10 #define MOVE_VISE_GRIP 11 +#define MOVE_VICEGRIP MOVE_VISE_GRIP // Pre-Gen VI name +#define MOVE_VICE_GRIP MOVE_VISE_GRIP // Pre-Gen VIII name #define MOVE_GUILLOTINE 12 #define MOVE_RAZOR_WIND 13 #define MOVE_SWORDS_DANCE 14 @@ -51,6 +55,7 @@ #define MOVE_SING 47 #define MOVE_SUPERSONIC 48 #define MOVE_SONIC_BOOM 49 +#define MOVE_SONICBOOM MOVE_SONIC_BOOM // Pre-Gen VI name #define MOVE_DISABLE 50 #define MOVE_ACID 51 #define MOVE_EMBER 52 @@ -63,6 +68,7 @@ #define MOVE_BLIZZARD 59 #define MOVE_PSYBEAM 60 #define MOVE_BUBBLE_BEAM 61 +#define MOVE_BUBBLEBEAM MOVE_BUBBLE_BEAM // Pre-Gen VI name #define MOVE_AURORA_BEAM 62 #define MOVE_HYPER_BEAM 63 #define MOVE_PECK 64 @@ -78,7 +84,9 @@ #define MOVE_GROWTH 74 #define MOVE_RAZOR_LEAF 75 #define MOVE_SOLAR_BEAM 76 +#define MOVE_SOLARBEAM MOVE_SOLAR_BEAM // Pre-Gen VI name #define MOVE_POISON_POWDER 77 +#define MOVE_POISONPOWDER MOVE_POISON_POWDER // Pre-Gen VI name #define MOVE_STUN_SPORE 78 #define MOVE_SLEEP_POWDER 79 #define MOVE_PETAL_DANCE 80 @@ -86,6 +94,7 @@ #define MOVE_DRAGON_RAGE 82 #define MOVE_FIRE_SPIN 83 #define MOVE_THUNDER_SHOCK 84 +#define MOVE_THUNDERSHOCK MOVE_THUNDER_SHOCK // Pre-Gen VI name #define MOVE_THUNDERBOLT 85 #define MOVE_THUNDER_WAVE 86 #define MOVE_THUNDER 87 @@ -122,6 +131,7 @@ #define MOVE_METRONOME 118 #define MOVE_MIRROR_MOVE 119 #define MOVE_SELF_DESTRUCT 120 +#define MOVE_SELFDESTRUCT MOVE_SELF_DESTRUCT // Pre-Gen VI name #define MOVE_EGG_BOMB 121 #define MOVE_LICK 122 #define MOVE_SMOG 123 @@ -137,7 +147,9 @@ #define MOVE_AMNESIA 133 #define MOVE_KINESIS 134 #define MOVE_SOFT_BOILED 135 +#define MOVE_SOFTBOILED MOVE_SOFT_BOILED // Pre-Gen VI name #define MOVE_HIGH_JUMP_KICK 136 +#define MOVE_HI_JUMP_KICK MOVE_HIGH_JUMP_KICK // Pre-Gen VI name #define MOVE_GLARE 137 #define MOVE_DREAM_EATER 138 #define MOVE_POISON_GAS 139 @@ -167,6 +179,9 @@ #define MOVE_SLASH 163 #define MOVE_SUBSTITUTE 164 #define MOVE_STRUGGLE 165 + +#define MOVES_COUNT_GEN1 166 + #define MOVE_SKETCH 166 #define MOVE_TRIPLE_KICK 167 #define MOVE_THIEF 168 @@ -187,6 +202,7 @@ #define MOVE_MACH_PUNCH 183 #define MOVE_SCARY_FACE 184 #define MOVE_FEINT_ATTACK 185 +#define MOVE_FAINT_ATTACK MOVE_FEINT_ATTACK // Pre-Gen VI name #define MOVE_SWEET_KISS 186 #define MOVE_BELLY_DRUM 187 #define MOVE_SLUDGE_BOMB 188 @@ -225,8 +241,10 @@ #define MOVE_SACRED_FIRE 221 #define MOVE_MAGNITUDE 222 #define MOVE_DYNAMIC_PUNCH 223 +#define MOVE_DYNAMICPUNCH MOVE_DYNAMIC_PUNCH // Pre-Gen VI name #define MOVE_MEGAHORN 224 #define MOVE_DRAGON_BREATH 225 +#define MOVE_DRAGONBREATH MOVE_DRAGON_BREATH // Pre-Gen VI name #define MOVE_BATON_PASS 226 #define MOVE_ENCORE 227 #define MOVE_PURSUIT 228 @@ -247,12 +265,17 @@ #define MOVE_MIRROR_COAT 243 #define MOVE_PSYCH_UP 244 #define MOVE_EXTREME_SPEED 245 +#define MOVE_EXTREMESPEED MOVE_EXTREME_SPEED // Pre-Gen VI name #define MOVE_ANCIENT_POWER 246 +#define MOVE_ANCIENTPOWER MOVE_ANCIENT_POWER // Pre-Gen VI name #define MOVE_SHADOW_BALL 247 #define MOVE_FUTURE_SIGHT 248 #define MOVE_ROCK_SMASH 249 #define MOVE_WHIRLPOOL 250 #define MOVE_BEAT_UP 251 + +#define MOVES_COUNT_GEN2 252 + #define MOVE_FAKE_OUT 252 #define MOVE_UPROAR 253 #define MOVE_STOCKPILE 254 @@ -267,6 +290,7 @@ #define MOVE_FACADE 263 #define MOVE_FOCUS_PUNCH 264 #define MOVE_SMELLING_SALTS 265 +#define MOVE_SMELLINGSALT MOVE_SMELLING_SALTS // Pre-Gen VI name #define MOVE_FOLLOW_ME 266 #define MOVE_NATURE_POWER 267 #define MOVE_CHARGE 268 @@ -299,6 +323,7 @@ #define MOVE_LUSTER_PURGE 295 #define MOVE_MIST_BALL 296 #define MOVE_FEATHER_DANCE 297 +#define MOVE_FEATHERDANCE MOVE_FEATHER_DANCE // Pre-Gen VI name #define MOVE_TEETER_DANCE 298 #define MOVE_BLAZE_KICK 299 #define MOVE_MUD_SPORT 300 @@ -322,6 +347,7 @@ #define MOVE_SILVER_WIND 318 #define MOVE_METAL_SOUND 319 #define MOVE_GRASS_WHISTLE 320 +#define MOVE_GRASSWHISTLE MOVE_GRASS_WHISTLE // Pre-Gen VI name #define MOVE_TICKLE 321 #define MOVE_COSMIC_POWER 322 #define MOVE_WATER_SPOUT 323 @@ -860,8 +886,27 @@ #define MOVE_MAGICAL_TORQUE 826 #define MOVE_PSYBLADE 827 #define MOVE_HYDRO_STEAM 828 +#define MOVE_BLOOD_MOON 829 +#define MOVE_MATCHA_GOTCHA 830 +#define MOVE_SYRUP_BOMB 831 +#define MOVE_IVY_CUDGEL 832 +#define MOVE_833 833 +#define MOVE_834 834 +#define MOVE_835 835 +#define MOVE_836 836 +#define MOVE_837 837 +#define MOVE_838 838 +#define MOVE_839 839 +#define MOVE_840 840 +#define MOVE_841 841 +#define MOVE_842 842 +#define MOVE_843 843 +#define MOVE_844 844 +#define MOVE_845 845 +#define MOVE_846 846 +#define MOVE_847 847 -#define MOVES_COUNT_GEN9 829 +#define MOVES_COUNT_GEN9 848 #define MOVES_COUNT MOVES_COUNT_GEN9 @@ -884,6 +929,7 @@ #define MOVE_DEVASTATING_DRAKE (MOVES_COUNT + 15) #define MOVE_BLACK_HOLE_ECLIPSE (MOVES_COUNT + 16) #define MOVE_TWINKLE_TACKLE (MOVES_COUNT + 17) + // Signature Z Moves #define MOVE_CATASTROPIKA (MOVES_COUNT + 18) #define MOVE_10000000_VOLT_THUNDERBOLT (MOVES_COUNT + 19) @@ -908,6 +954,66 @@ #define MOVES_COUNT_Z (LAST_Z_MOVE + 1) +//Max Moves +#define MOVE_MAX_GUARD (FIRST_MAX_MOVE + 0) +#define MOVE_MAX_STRIKE (FIRST_MAX_MOVE + 1) +#define MOVE_MAX_KNUCKLE (FIRST_MAX_MOVE + 2) +#define MOVE_MAX_AIRSTREAM (FIRST_MAX_MOVE + 3) +#define MOVE_MAX_OOZE (FIRST_MAX_MOVE + 4) +#define MOVE_MAX_QUAKE (FIRST_MAX_MOVE + 5) +#define MOVE_MAX_ROCKFALL (FIRST_MAX_MOVE + 6) +#define MOVE_MAX_FLUTTERBY (FIRST_MAX_MOVE + 7) +#define MOVE_MAX_PHANTASM (FIRST_MAX_MOVE + 8) +#define MOVE_MAX_STEELSPIKE (FIRST_MAX_MOVE + 9) +#define MOVE_MAX_FLARE (FIRST_MAX_MOVE + 10) +#define MOVE_MAX_GEYSER (FIRST_MAX_MOVE + 11) +#define MOVE_MAX_OVERGROWTH (FIRST_MAX_MOVE + 12) +#define MOVE_MAX_LIGHTNING (FIRST_MAX_MOVE + 13) +#define MOVE_MAX_MINDSTORM (FIRST_MAX_MOVE + 14) +#define MOVE_MAX_HAILSTORM (FIRST_MAX_MOVE + 15) +#define MOVE_MAX_WYRMWIND (FIRST_MAX_MOVE + 16) +#define MOVE_MAX_DARKNESS (FIRST_MAX_MOVE + 17) +#define MOVE_MAX_STARFALL (FIRST_MAX_MOVE + 18) +// Gigantamax Moves +#define MOVE_G_MAX_VINE_LASH (FIRST_MAX_MOVE + 19) +#define MOVE_G_MAX_WILDFIRE (FIRST_MAX_MOVE + 20) +#define MOVE_G_MAX_CANNONADE (FIRST_MAX_MOVE + 21) +#define MOVE_G_MAX_BEFUDDLE (FIRST_MAX_MOVE + 22) +#define MOVE_G_MAX_VOLT_CRASH (FIRST_MAX_MOVE + 23) +#define MOVE_G_MAX_GOLD_RUSH (FIRST_MAX_MOVE + 24) +#define MOVE_G_MAX_CHI_STRIKE (FIRST_MAX_MOVE + 25) +#define MOVE_G_MAX_TERROR (FIRST_MAX_MOVE + 26) +#define MOVE_G_MAX_FOAM_BURST (FIRST_MAX_MOVE + 27) +#define MOVE_G_MAX_RESONANCE (FIRST_MAX_MOVE + 28) +#define MOVE_G_MAX_CUDDLE (FIRST_MAX_MOVE + 29) +#define MOVE_G_MAX_REPLENISH (FIRST_MAX_MOVE + 30) +#define MOVE_G_MAX_MALODOR (FIRST_MAX_MOVE + 31) +#define MOVE_G_MAX_MELTDOWN (FIRST_MAX_MOVE + 32) +#define MOVE_G_MAX_DRUM_SOLO (FIRST_MAX_MOVE + 33) +#define MOVE_G_MAX_FIREBALL (FIRST_MAX_MOVE + 34) +#define MOVE_G_MAX_HYDROSNIPE (FIRST_MAX_MOVE + 35) +#define MOVE_G_MAX_WIND_RAGE (FIRST_MAX_MOVE + 36) +#define MOVE_G_MAX_GRAVITAS (FIRST_MAX_MOVE + 37) +#define MOVE_G_MAX_STONESURGE (FIRST_MAX_MOVE + 38) +#define MOVE_G_MAX_VOLCALITH (FIRST_MAX_MOVE + 39) +#define MOVE_G_MAX_TARTNESS (FIRST_MAX_MOVE + 40) +#define MOVE_G_MAX_SWEETNESS (FIRST_MAX_MOVE + 41) +#define MOVE_G_MAX_SANDBLAST (FIRST_MAX_MOVE + 42) +#define MOVE_G_MAX_STUN_SHOCK (FIRST_MAX_MOVE + 43) +#define MOVE_G_MAX_CENTIFERNO (FIRST_MAX_MOVE + 44) +#define MOVE_G_MAX_SMITE (FIRST_MAX_MOVE + 45) +#define MOVE_G_MAX_SNOOZE (FIRST_MAX_MOVE + 46) +#define MOVE_G_MAX_FINALE (FIRST_MAX_MOVE + 47) +#define MOVE_G_MAX_STEELSURGE (FIRST_MAX_MOVE + 48) +#define MOVE_G_MAX_DEPLETION (FIRST_MAX_MOVE + 49) +#define MOVE_G_MAX_ONE_BLOW (FIRST_MAX_MOVE + 50) +#define MOVE_G_MAX_RAPID_FLOW (FIRST_MAX_MOVE + 51) + +#define FIRST_MAX_MOVE MOVES_COUNT_Z +#define LAST_MAX_MOVE MOVE_G_MAX_RAPID_FLOW + +#define MOVES_COUNT_DYNAMAX (LAST_MAX_MOVE + 1) + // Used for checks for moves affected by Disable, Mimic, etc. #define MOVE_UNAVAILABLE 0xFFFF diff --git a/include/constants/party_menu.h b/include/constants/party_menu.h index fd94afe544..c860b425d4 100644 --- a/include/constants/party_menu.h +++ b/include/constants/party_menu.h @@ -79,6 +79,8 @@ #define PARTY_MSG_DO_WHAT_WITH_ITEM 24 #define PARTY_MSG_DO_WHAT_WITH_MAIL 25 #define PARTY_MSG_ALREADY_HOLDING_ONE 26 +#define PARTY_MSG_WHICH_APPLIANCE 27 +#define PARTY_MSG_CHOOSE_SECOND_FUSION 28 #define PARTY_MSG_NONE 127 // IDs for DisplayPartyPokemonDescriptionText, to display a message in the party pokemon's box @@ -96,9 +98,11 @@ #define PARTYBOX_DESC_HAVE 11 #define PARTYBOX_DESC_DONT_HAVE 12 -#define SELECTWINDOW_ACTIONS 0 -#define SELECTWINDOW_ITEM 1 -#define SELECTWINDOW_MAIL 2 -#define SELECTWINDOW_MOVES 3 +#define SELECTWINDOW_ACTIONS 0 +#define SELECTWINDOW_ITEM 1 +#define SELECTWINDOW_MAIL 2 +#define SELECTWINDOW_MOVES 3 +#define SELECTWINDOW_CATALOG 4 +#define SELECTWINDOW_ZYGARDECUBE 5 #endif // GUARD_CONSTANTS_PARTY_MENU_H diff --git a/include/constants/pokedex.h b/include/constants/pokedex.h index ef939b9579..ffbbb2eb18 100644 --- a/include/constants/pokedex.h +++ b/include/constants/pokedex.h @@ -919,12 +919,134 @@ enum { NATIONAL_DEX_SNEASLER, NATIONAL_DEX_OVERQWIL, NATIONAL_DEX_ENAMORUS, + NATIONAL_DEX_SPRIGATITO, + NATIONAL_DEX_FLORAGATO, + NATIONAL_DEX_MEOWSCARADA, + NATIONAL_DEX_FUECOCO, + NATIONAL_DEX_CROCALOR, + NATIONAL_DEX_SKELEDIRGE, + NATIONAL_DEX_QUAXLY, + NATIONAL_DEX_QUAXWELL, + NATIONAL_DEX_QUAQUAVAL, + NATIONAL_DEX_LECHONK, + NATIONAL_DEX_OINKOLOGNE, + NATIONAL_DEX_TAROUNTULA, + NATIONAL_DEX_SPIDOPS, + NATIONAL_DEX_NYMBLE, + NATIONAL_DEX_LOKIX, + NATIONAL_DEX_PAWMI, + NATIONAL_DEX_PAWMO, + NATIONAL_DEX_PAWMOT, + NATIONAL_DEX_TANDEMAUS, + NATIONAL_DEX_MAUSHOLD, + NATIONAL_DEX_FIDOUGH, + NATIONAL_DEX_DACHSBUN, + NATIONAL_DEX_SMOLIV, + NATIONAL_DEX_DOLLIV, + NATIONAL_DEX_ARBOLIVA, + NATIONAL_DEX_SQUAWKABILLY, + NATIONAL_DEX_NACLI, + NATIONAL_DEX_NACLSTACK, + NATIONAL_DEX_GARGANACL, + NATIONAL_DEX_CHARCADET, + NATIONAL_DEX_ARMAROUGE, + NATIONAL_DEX_CERULEDGE, + NATIONAL_DEX_TADBULB, + NATIONAL_DEX_BELLIBOLT, + NATIONAL_DEX_WATTREL, + NATIONAL_DEX_KILOWATTREL, + NATIONAL_DEX_MASCHIFF, + NATIONAL_DEX_MABOSSTIFF, + NATIONAL_DEX_SHROODLE, + NATIONAL_DEX_GRAFAIAI, + NATIONAL_DEX_BRAMBLIN, + NATIONAL_DEX_BRAMBLEGHAST, + NATIONAL_DEX_TOEDSCOOL, + NATIONAL_DEX_TOEDSCRUEL, + NATIONAL_DEX_KLAWF, + NATIONAL_DEX_CAPSAKID, + NATIONAL_DEX_SCOVILLAIN, + NATIONAL_DEX_RELLOR, + NATIONAL_DEX_RABSCA, + NATIONAL_DEX_FLITTLE, + NATIONAL_DEX_ESPATHRA, + NATIONAL_DEX_TINKATINK, + NATIONAL_DEX_TINKATUFF, + NATIONAL_DEX_TINKATON, + NATIONAL_DEX_WIGLETT, + NATIONAL_DEX_WUGTRIO, + NATIONAL_DEX_BOMBIRDIER, + NATIONAL_DEX_FINIZEN, + NATIONAL_DEX_PALAFIN, + NATIONAL_DEX_VAROOM, + NATIONAL_DEX_REVAVROOM, + NATIONAL_DEX_CYCLIZAR, + NATIONAL_DEX_ORTHWORM, + NATIONAL_DEX_GLIMMET, + NATIONAL_DEX_GLIMMORA, + NATIONAL_DEX_GREAVARD, + NATIONAL_DEX_HOUNDSTONE, + NATIONAL_DEX_FLAMIGO, + NATIONAL_DEX_CETODDLE, + NATIONAL_DEX_CETITAN, + NATIONAL_DEX_VELUZA, + NATIONAL_DEX_DONDOZO, + NATIONAL_DEX_TATSUGIRI, + NATIONAL_DEX_ANNIHILAPE, + NATIONAL_DEX_CLODSIRE, + NATIONAL_DEX_FARIGIRAF, + NATIONAL_DEX_DUDUNSPARCE, + NATIONAL_DEX_KINGAMBIT, + NATIONAL_DEX_GREAT_TUSK, + NATIONAL_DEX_SCREAM_TAIL, + NATIONAL_DEX_BRUTE_BONNET, + NATIONAL_DEX_FLUTTER_MANE, + NATIONAL_DEX_SLITHER_WING, + NATIONAL_DEX_SANDY_SHOCKS, + NATIONAL_DEX_IRON_TREADS, + NATIONAL_DEX_IRON_BUNDLE, + NATIONAL_DEX_IRON_HANDS, + NATIONAL_DEX_IRON_JUGULIS, + NATIONAL_DEX_IRON_MOTH, + NATIONAL_DEX_IRON_THORNS, + NATIONAL_DEX_FRIGIBAX, + NATIONAL_DEX_ARCTIBAX, + NATIONAL_DEX_BAXCALIBUR, + NATIONAL_DEX_GIMMIGHOUL, + NATIONAL_DEX_GHOLDENGO, + NATIONAL_DEX_WO_CHIEN, + NATIONAL_DEX_CHIEN_PAO, + NATIONAL_DEX_TING_LU, + NATIONAL_DEX_CHI_YU, + NATIONAL_DEX_ROARING_MOON, + NATIONAL_DEX_IRON_VALIANT, + NATIONAL_DEX_KORAIDON, + NATIONAL_DEX_MIRAIDON, + NATIONAL_DEX_WALKING_WAKE, + NATIONAL_DEX_IRON_LEAVES, + NATIONAL_DEX_DIPPLIN, + NATIONAL_DEX_POLTCHAGEIST, + NATIONAL_DEX_SINISTCHA, + NATIONAL_DEX_OKIDOGI, + NATIONAL_DEX_MUNKIDORI, + NATIONAL_DEX_FEZANDIPITI, + NATIONAL_DEX_OGERPON, + NATIONAL_DEX_1018, + NATIONAL_DEX_1019, + NATIONAL_DEX_1020, + NATIONAL_DEX_1021, + NATIONAL_DEX_1022, + NATIONAL_DEX_1023, + NATIONAL_DEX_1024, + NATIONAL_DEX_1025, }; #define KANTO_DEX_COUNT NATIONAL_DEX_MEW #define JOHTO_DEX_COUNT NATIONAL_DEX_CELEBI -#if P_GEN_8_POKEMON == TRUE +#if P_GEN_9_POKEMON == TRUE + #define NATIONAL_DEX_COUNT NATIONAL_DEX_1025 +#elif P_GEN_8_POKEMON == TRUE #define NATIONAL_DEX_COUNT NATIONAL_DEX_ENAMORUS #elif P_GEN_7_POKEMON == TRUE #define NATIONAL_DEX_COUNT NATIONAL_DEX_MELMETAL @@ -956,6 +1078,9 @@ enum { HOENN_DEX_MIGHTYENA, HOENN_DEX_ZIGZAGOON, HOENN_DEX_LINOONE, +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GALARIAN_FORMS + HOENN_DEX_OBSTAGOON, +#endif HOENN_DEX_WURMPLE, HOENN_DEX_SILCOON, HOENN_DEX_BEAUTIFLY, @@ -974,7 +1099,7 @@ enum { HOENN_DEX_RALTS, HOENN_DEX_KIRLIA, HOENN_DEX_GARDEVOIR, -#if P_GEN_4_POKEMON == TRUE +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS HOENN_DEX_GALLADE, #endif HOENN_DEX_SURSKIT, @@ -1006,7 +1131,7 @@ enum { HOENN_DEX_GRAVELER, HOENN_DEX_GOLEM, HOENN_DEX_NOSEPASS, -#if P_GEN_4_POKEMON == TRUE +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS HOENN_DEX_PROBOPASS, #endif HOENN_DEX_SKITTY, @@ -1032,7 +1157,7 @@ enum { HOENN_DEX_MINUN, HOENN_DEX_MAGNEMITE, HOENN_DEX_MAGNETON, -#if P_GEN_4_POKEMON == TRUE +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS HOENN_DEX_MAGNEZONE, #endif HOENN_DEX_VOLTORB, @@ -1045,12 +1170,12 @@ enum { HOENN_DEX_BELLOSSOM, HOENN_DEX_DODUO, HOENN_DEX_DODRIO, -#if P_GEN_4_POKEMON == TRUE +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS HOENN_DEX_BUDEW, +#endif HOENN_DEX_ROSELIA, +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS HOENN_DEX_ROSERADE, -#else - HOENN_DEX_ROSELIA, #endif HOENN_DEX_GULPIN, HOENN_DEX_SWALOT, @@ -1107,7 +1232,7 @@ enum { HOENN_DEX_BANETTE, HOENN_DEX_DUSKULL, HOENN_DEX_DUSCLOPS, -#if P_GEN_4_POKEMON == TRUE +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS HOENN_DEX_DUSKNOIR, HOENN_DEX_TROPIUS, HOENN_DEX_CHINGLING, @@ -1128,18 +1253,21 @@ enum { HOENN_DEX_NATU, HOENN_DEX_XATU, HOENN_DEX_GIRAFARIG, +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_9_CROSS_EVOS + HOENN_DEX_FARIGIRAF, +#endif HOENN_DEX_PHANPY, HOENN_DEX_DONPHAN, HOENN_DEX_PINSIR, HOENN_DEX_HERACROSS, HOENN_DEX_RHYHORN, HOENN_DEX_RHYDON, -#if P_GEN_4_POKEMON == TRUE +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS HOENN_DEX_RHYPERIOR, #endif HOENN_DEX_SNORUNT, HOENN_DEX_GLALIE, -#if P_GEN_4_POKEMON == TRUE +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS HOENN_DEX_FROSLASS, #endif HOENN_DEX_SPHEAL, @@ -1150,6 +1278,9 @@ enum { HOENN_DEX_GOREBYSS, HOENN_DEX_RELICANTH, HOENN_DEX_CORSOLA, +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GALARIAN_FORMS + HOENN_DEX_CURSOLA, +#endif HOENN_DEX_CHINCHOU, HOENN_DEX_LANTURN, HOENN_DEX_LUVDISC, diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index e3dd15000f..724fe8c0b6 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -25,24 +25,24 @@ #define NUMBER_OF_MON_TYPES 19 // Pokemon egg groups -#define EGG_GROUP_NONE 0 -#define EGG_GROUP_MONSTER 1 -#define EGG_GROUP_WATER_1 2 -#define EGG_GROUP_BUG 3 -#define EGG_GROUP_FLYING 4 -#define EGG_GROUP_FIELD 5 -#define EGG_GROUP_FAIRY 6 -#define EGG_GROUP_GRASS 7 -#define EGG_GROUP_HUMAN_LIKE 8 -#define EGG_GROUP_WATER_3 9 -#define EGG_GROUP_MINERAL 10 -#define EGG_GROUP_AMORPHOUS 11 -#define EGG_GROUP_WATER_2 12 -#define EGG_GROUP_DITTO 13 -#define EGG_GROUP_DRAGON 14 -#define EGG_GROUP_UNDISCOVERED 15 +#define EGG_GROUP_NONE 0 +#define EGG_GROUP_MONSTER 1 +#define EGG_GROUP_WATER_1 2 +#define EGG_GROUP_BUG 3 +#define EGG_GROUP_FLYING 4 +#define EGG_GROUP_FIELD 5 +#define EGG_GROUP_FAIRY 6 +#define EGG_GROUP_GRASS 7 +#define EGG_GROUP_HUMAN_LIKE 8 +#define EGG_GROUP_WATER_3 9 +#define EGG_GROUP_MINERAL 10 +#define EGG_GROUP_AMORPHOUS 11 +#define EGG_GROUP_WATER_2 12 +#define EGG_GROUP_DITTO 13 +#define EGG_GROUP_DRAGON 14 +#define EGG_GROUP_NO_EGGS_DISCOVERED 15 -#define EGG_GROUPS_PER_MON 2 +#define EGG_GROUPS_PER_MON 2 // Pokemon natures #define NATURE_HARDY 0 @@ -163,7 +163,7 @@ #define LEVEL_UP_MOVE_ID 0x01FF #define LEVEL_UP_MOVE_LV 0xFE00 -#define LEVEL_UP_END 0xFFFF +#define LEVEL_UP_MOVE_END 0xFFFF #define MAX_LEVEL_UP_MOVES 20 @@ -191,8 +191,20 @@ #define FRIENDSHIP_200_TO_254 5 #define FRIENDSHIP_MAX 6 -// Friendship value that the majority of species use. This was changed in Generation 8 to 50. +// Constants for GetBattlerAffectionHearts (based on friendship value) +#define AFFECTION_NO_HEARTS 0 // 0-79 friendship +#define AFFECTION_ONE_HEART 1 // 80-129 friendship +#define AFFECTION_TWO_HEARTS 2 // 130-179 friendship +#define AFFECTION_THREE_HEARTS 3 // 180-219 friendship +#define AFFECTION_FOUR_HEARTS 4 // 220-254 friendship +#define AFFECTION_FIVE_HEARTS 5 // Max friendship + +// Friendship value that the majority of species use. +#if P_UPDATED_FRIENDSHIP >= GEN_8 +#define STANDARD_FRIENDSHIP 50 +#else #define STANDARD_FRIENDSHIP 70 +#endif #define MAX_FRIENDSHIP 255 #define MAX_SHEEN 255 @@ -241,7 +253,8 @@ #define F_SUMMARY_SCREEN_FLIP_SPRITE 0x80 // Evolution types -#define EVO_NONE 0xffff // Not an actual evolution, used to generate offspring that can't evolve into the specified species, like regional forms. +#define EVOLUTIONS_END 0xFFFF // Not an actual evolution, used to mark the end of an evolution array. +#define EVO_NONE 0xFFFE // Not an actual evolution, used to generate offspring that can't evolve into the specified species, like regional forms. #define EVO_FRIENDSHIP 1 // Pokémon levels up with friendship ≥ 220 #define EVO_FRIENDSHIP_DAY 2 // Pokémon levels up during the day with friendship ≥ 220 #define EVO_FRIENDSHIP_NIGHT 3 // Pokémon levels up at night with friendship ≥ 220 @@ -284,8 +297,10 @@ #define EVO_ITEM_DAY 40 // specified item is used on Pokémon, is day #define EVO_ITEM_HOLD 41 // Pokémon levels up, holds specified item #define EVO_LEVEL_FOG 42 // Pokémon reaches the specified level during fog in the overworld - -#define EVOS_PER_MON 10 +#define EVO_MOVE_TWO_SEGMENT 43 // Pokémon levels up, knows specified move, has a personality value with a modulus of 0 +#define EVO_MOVE_THREE_SEGMENT 44 // Pokémon levels up, knows specified move, has a personality value with a modulus of 1-99 +#define EVO_LEVEL_FAMILY_OF_THREE 45 // Pokémon reaches the specified level with a personality value with a modulus of 0 +#define EVO_LEVEL_FAMILY_OF_FOUR 46 // Pokémon reaches the specified level with a personality value with a modulus of 1-99 // Evolution 'modes,' for GetEvolutionTargetSpecies #define EVO_MODE_NORMAL 0 @@ -315,19 +330,6 @@ #define NUM_NORMAL_ABILITY_SLOTS 2 #define NUM_HIDDEN_ABILITY_SLOTS 1 -// Species Flags -#define SPECIES_FLAG_LEGENDARY (1 << 0) -#define SPECIES_FLAG_MYTHICAL (1 << 1) -#define SPECIES_FLAG_MEGA_EVOLUTION (1 << 2) -#define SPECIES_FLAG_PRIMAL_REVERSION (1 << 3) -#define SPECIES_FLAG_ULTRA_BEAST (1 << 4) -#define SPECIES_FLAG_ALOLAN_FORM (1 << 5) -#define SPECIES_FLAG_GALARIAN_FORM (1 << 6) -#define SPECIES_FLAG_HISUIAN_FORM (1 << 7) -#define SPECIES_FLAG_ALL_PERFECT_IVS (1 << 8) -#define SPECIES_FLAG_CANNOT_BE_TRADED (1 << 9) -#define SPECIES_FLAG_ULTRA_BURST (1 << 10) - #define LEGENDARY_PERFECT_IV_COUNT 3 #endif // GUARD_CONSTANTS_POKEMON_H diff --git a/include/constants/species.h b/include/constants/species.h index ae36497e71..bcac9ecbc8 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -1,1378 +1,1776 @@ #ifndef GUARD_CONSTANTS_SPECIES_H #define GUARD_CONSTANTS_SPECIES_H -#define SPECIES_NONE 0 -#define SPECIES_BULBASAUR 1 -#define SPECIES_IVYSAUR 2 -#define SPECIES_VENUSAUR 3 -#define SPECIES_CHARMANDER 4 -#define SPECIES_CHARMELEON 5 -#define SPECIES_CHARIZARD 6 -#define SPECIES_SQUIRTLE 7 -#define SPECIES_WARTORTLE 8 -#define SPECIES_BLASTOISE 9 -#define SPECIES_CATERPIE 10 -#define SPECIES_METAPOD 11 -#define SPECIES_BUTTERFREE 12 -#define SPECIES_WEEDLE 13 -#define SPECIES_KAKUNA 14 -#define SPECIES_BEEDRILL 15 -#define SPECIES_PIDGEY 16 -#define SPECIES_PIDGEOTTO 17 -#define SPECIES_PIDGEOT 18 -#define SPECIES_RATTATA 19 -#define SPECIES_RATICATE 20 -#define SPECIES_SPEAROW 21 -#define SPECIES_FEAROW 22 -#define SPECIES_EKANS 23 -#define SPECIES_ARBOK 24 -#define SPECIES_PIKACHU 25 -#define SPECIES_RAICHU 26 -#define SPECIES_SANDSHREW 27 -#define SPECIES_SANDSLASH 28 -#define SPECIES_NIDORAN_F 29 -#define SPECIES_NIDORINA 30 -#define SPECIES_NIDOQUEEN 31 -#define SPECIES_NIDORAN_M 32 -#define SPECIES_NIDORINO 33 -#define SPECIES_NIDOKING 34 -#define SPECIES_CLEFAIRY 35 -#define SPECIES_CLEFABLE 36 -#define SPECIES_VULPIX 37 -#define SPECIES_NINETALES 38 -#define SPECIES_JIGGLYPUFF 39 -#define SPECIES_WIGGLYTUFF 40 -#define SPECIES_ZUBAT 41 -#define SPECIES_GOLBAT 42 -#define SPECIES_ODDISH 43 -#define SPECIES_GLOOM 44 -#define SPECIES_VILEPLUME 45 -#define SPECIES_PARAS 46 -#define SPECIES_PARASECT 47 -#define SPECIES_VENONAT 48 -#define SPECIES_VENOMOTH 49 -#define SPECIES_DIGLETT 50 -#define SPECIES_DUGTRIO 51 -#define SPECIES_MEOWTH 52 -#define SPECIES_PERSIAN 53 -#define SPECIES_PSYDUCK 54 -#define SPECIES_GOLDUCK 55 -#define SPECIES_MANKEY 56 -#define SPECIES_PRIMEAPE 57 -#define SPECIES_GROWLITHE 58 -#define SPECIES_ARCANINE 59 -#define SPECIES_POLIWAG 60 -#define SPECIES_POLIWHIRL 61 -#define SPECIES_POLIWRATH 62 -#define SPECIES_ABRA 63 -#define SPECIES_KADABRA 64 -#define SPECIES_ALAKAZAM 65 -#define SPECIES_MACHOP 66 -#define SPECIES_MACHOKE 67 -#define SPECIES_MACHAMP 68 -#define SPECIES_BELLSPROUT 69 -#define SPECIES_WEEPINBELL 70 -#define SPECIES_VICTREEBEL 71 -#define SPECIES_TENTACOOL 72 -#define SPECIES_TENTACRUEL 73 -#define SPECIES_GEODUDE 74 -#define SPECIES_GRAVELER 75 -#define SPECIES_GOLEM 76 -#define SPECIES_PONYTA 77 -#define SPECIES_RAPIDASH 78 -#define SPECIES_SLOWPOKE 79 -#define SPECIES_SLOWBRO 80 -#define SPECIES_MAGNEMITE 81 -#define SPECIES_MAGNETON 82 -#define SPECIES_FARFETCHD 83 -#define SPECIES_DODUO 84 -#define SPECIES_DODRIO 85 -#define SPECIES_SEEL 86 -#define SPECIES_DEWGONG 87 -#define SPECIES_GRIMER 88 -#define SPECIES_MUK 89 -#define SPECIES_SHELLDER 90 -#define SPECIES_CLOYSTER 91 -#define SPECIES_GASTLY 92 -#define SPECIES_HAUNTER 93 -#define SPECIES_GENGAR 94 -#define SPECIES_ONIX 95 -#define SPECIES_DROWZEE 96 -#define SPECIES_HYPNO 97 -#define SPECIES_KRABBY 98 -#define SPECIES_KINGLER 99 -#define SPECIES_VOLTORB 100 -#define SPECIES_ELECTRODE 101 -#define SPECIES_EXEGGCUTE 102 -#define SPECIES_EXEGGUTOR 103 -#define SPECIES_CUBONE 104 -#define SPECIES_MAROWAK 105 -#define SPECIES_HITMONLEE 106 -#define SPECIES_HITMONCHAN 107 -#define SPECIES_LICKITUNG 108 -#define SPECIES_KOFFING 109 -#define SPECIES_WEEZING 110 -#define SPECIES_RHYHORN 111 -#define SPECIES_RHYDON 112 -#define SPECIES_CHANSEY 113 -#define SPECIES_TANGELA 114 -#define SPECIES_KANGASKHAN 115 -#define SPECIES_HORSEA 116 -#define SPECIES_SEADRA 117 -#define SPECIES_GOLDEEN 118 -#define SPECIES_SEAKING 119 -#define SPECIES_STARYU 120 -#define SPECIES_STARMIE 121 -#define SPECIES_MR_MIME 122 -#define SPECIES_SCYTHER 123 -#define SPECIES_JYNX 124 -#define SPECIES_ELECTABUZZ 125 -#define SPECIES_MAGMAR 126 -#define SPECIES_PINSIR 127 -#define SPECIES_TAUROS 128 -#define SPECIES_MAGIKARP 129 -#define SPECIES_GYARADOS 130 -#define SPECIES_LAPRAS 131 -#define SPECIES_DITTO 132 -#define SPECIES_EEVEE 133 -#define SPECIES_VAPOREON 134 -#define SPECIES_JOLTEON 135 -#define SPECIES_FLAREON 136 -#define SPECIES_PORYGON 137 -#define SPECIES_OMANYTE 138 -#define SPECIES_OMASTAR 139 -#define SPECIES_KABUTO 140 -#define SPECIES_KABUTOPS 141 -#define SPECIES_AERODACTYL 142 -#define SPECIES_SNORLAX 143 -#define SPECIES_ARTICUNO 144 -#define SPECIES_ZAPDOS 145 -#define SPECIES_MOLTRES 146 -#define SPECIES_DRATINI 147 -#define SPECIES_DRAGONAIR 148 -#define SPECIES_DRAGONITE 149 -#define SPECIES_MEWTWO 150 -#define SPECIES_MEW 151 -#define SPECIES_CHIKORITA 152 -#define SPECIES_BAYLEEF 153 -#define SPECIES_MEGANIUM 154 -#define SPECIES_CYNDAQUIL 155 -#define SPECIES_QUILAVA 156 -#define SPECIES_TYPHLOSION 157 -#define SPECIES_TOTODILE 158 -#define SPECIES_CROCONAW 159 -#define SPECIES_FERALIGATR 160 -#define SPECIES_SENTRET 161 -#define SPECIES_FURRET 162 -#define SPECIES_HOOTHOOT 163 -#define SPECIES_NOCTOWL 164 -#define SPECIES_LEDYBA 165 -#define SPECIES_LEDIAN 166 -#define SPECIES_SPINARAK 167 -#define SPECIES_ARIADOS 168 -#define SPECIES_CROBAT 169 -#define SPECIES_CHINCHOU 170 -#define SPECIES_LANTURN 171 -#define SPECIES_PICHU 172 -#define SPECIES_CLEFFA 173 -#define SPECIES_IGGLYBUFF 174 -#define SPECIES_TOGEPI 175 -#define SPECIES_TOGETIC 176 -#define SPECIES_NATU 177 -#define SPECIES_XATU 178 -#define SPECIES_MAREEP 179 -#define SPECIES_FLAAFFY 180 -#define SPECIES_AMPHAROS 181 -#define SPECIES_BELLOSSOM 182 -#define SPECIES_MARILL 183 -#define SPECIES_AZUMARILL 184 -#define SPECIES_SUDOWOODO 185 -#define SPECIES_POLITOED 186 -#define SPECIES_HOPPIP 187 -#define SPECIES_SKIPLOOM 188 -#define SPECIES_JUMPLUFF 189 -#define SPECIES_AIPOM 190 -#define SPECIES_SUNKERN 191 -#define SPECIES_SUNFLORA 192 -#define SPECIES_YANMA 193 -#define SPECIES_WOOPER 194 -#define SPECIES_QUAGSIRE 195 -#define SPECIES_ESPEON 196 -#define SPECIES_UMBREON 197 -#define SPECIES_MURKROW 198 -#define SPECIES_SLOWKING 199 -#define SPECIES_MISDREAVUS 200 -#define SPECIES_UNOWN 201 -#define SPECIES_WOBBUFFET 202 -#define SPECIES_GIRAFARIG 203 -#define SPECIES_PINECO 204 -#define SPECIES_FORRETRESS 205 -#define SPECIES_DUNSPARCE 206 -#define SPECIES_GLIGAR 207 -#define SPECIES_STEELIX 208 -#define SPECIES_SNUBBULL 209 -#define SPECIES_GRANBULL 210 -#define SPECIES_QWILFISH 211 -#define SPECIES_SCIZOR 212 -#define SPECIES_SHUCKLE 213 -#define SPECIES_HERACROSS 214 -#define SPECIES_SNEASEL 215 -#define SPECIES_TEDDIURSA 216 -#define SPECIES_URSARING 217 -#define SPECIES_SLUGMA 218 -#define SPECIES_MAGCARGO 219 -#define SPECIES_SWINUB 220 -#define SPECIES_PILOSWINE 221 -#define SPECIES_CORSOLA 222 -#define SPECIES_REMORAID 223 -#define SPECIES_OCTILLERY 224 -#define SPECIES_DELIBIRD 225 -#define SPECIES_MANTINE 226 -#define SPECIES_SKARMORY 227 -#define SPECIES_HOUNDOUR 228 -#define SPECIES_HOUNDOOM 229 -#define SPECIES_KINGDRA 230 -#define SPECIES_PHANPY 231 -#define SPECIES_DONPHAN 232 -#define SPECIES_PORYGON2 233 -#define SPECIES_STANTLER 234 -#define SPECIES_SMEARGLE 235 -#define SPECIES_TYROGUE 236 -#define SPECIES_HITMONTOP 237 -#define SPECIES_SMOOCHUM 238 -#define SPECIES_ELEKID 239 -#define SPECIES_MAGBY 240 -#define SPECIES_MILTANK 241 -#define SPECIES_BLISSEY 242 -#define SPECIES_RAIKOU 243 -#define SPECIES_ENTEI 244 -#define SPECIES_SUICUNE 245 -#define SPECIES_LARVITAR 246 -#define SPECIES_PUPITAR 247 -#define SPECIES_TYRANITAR 248 -#define SPECIES_LUGIA 249 -#define SPECIES_HO_OH 250 -#define SPECIES_CELEBI 251 -#define SPECIES_TREECKO 252 -#define SPECIES_GROVYLE 253 -#define SPECIES_SCEPTILE 254 -#define SPECIES_TORCHIC 255 -#define SPECIES_COMBUSKEN 256 -#define SPECIES_BLAZIKEN 257 -#define SPECIES_MUDKIP 258 -#define SPECIES_MARSHTOMP 259 -#define SPECIES_SWAMPERT 260 -#define SPECIES_POOCHYENA 261 -#define SPECIES_MIGHTYENA 262 -#define SPECIES_ZIGZAGOON 263 -#define SPECIES_LINOONE 264 -#define SPECIES_WURMPLE 265 -#define SPECIES_SILCOON 266 -#define SPECIES_BEAUTIFLY 267 -#define SPECIES_CASCOON 268 -#define SPECIES_DUSTOX 269 -#define SPECIES_LOTAD 270 -#define SPECIES_LOMBRE 271 -#define SPECIES_LUDICOLO 272 -#define SPECIES_SEEDOT 273 -#define SPECIES_NUZLEAF 274 -#define SPECIES_SHIFTRY 275 -#define SPECIES_TAILLOW 276 -#define SPECIES_SWELLOW 277 -#define SPECIES_WINGULL 278 -#define SPECIES_PELIPPER 279 -#define SPECIES_RALTS 280 -#define SPECIES_KIRLIA 281 -#define SPECIES_GARDEVOIR 282 -#define SPECIES_SURSKIT 283 -#define SPECIES_MASQUERAIN 284 -#define SPECIES_SHROOMISH 285 -#define SPECIES_BRELOOM 286 -#define SPECIES_SLAKOTH 287 -#define SPECIES_VIGOROTH 288 -#define SPECIES_SLAKING 289 -#define SPECIES_NINCADA 290 -#define SPECIES_NINJASK 291 -#define SPECIES_SHEDINJA 292 -#define SPECIES_WHISMUR 293 -#define SPECIES_LOUDRED 294 -#define SPECIES_EXPLOUD 295 -#define SPECIES_MAKUHITA 296 -#define SPECIES_HARIYAMA 297 -#define SPECIES_AZURILL 298 -#define SPECIES_NOSEPASS 299 -#define SPECIES_SKITTY 300 -#define SPECIES_DELCATTY 301 -#define SPECIES_SABLEYE 302 -#define SPECIES_MAWILE 303 -#define SPECIES_ARON 304 -#define SPECIES_LAIRON 305 -#define SPECIES_AGGRON 306 -#define SPECIES_MEDITITE 307 -#define SPECIES_MEDICHAM 308 -#define SPECIES_ELECTRIKE 309 -#define SPECIES_MANECTRIC 310 -#define SPECIES_PLUSLE 311 -#define SPECIES_MINUN 312 -#define SPECIES_VOLBEAT 313 -#define SPECIES_ILLUMISE 314 -#define SPECIES_ROSELIA 315 -#define SPECIES_GULPIN 316 -#define SPECIES_SWALOT 317 -#define SPECIES_CARVANHA 318 -#define SPECIES_SHARPEDO 319 -#define SPECIES_WAILMER 320 -#define SPECIES_WAILORD 321 -#define SPECIES_NUMEL 322 -#define SPECIES_CAMERUPT 323 -#define SPECIES_TORKOAL 324 -#define SPECIES_SPOINK 325 -#define SPECIES_GRUMPIG 326 -#define SPECIES_SPINDA 327 -#define SPECIES_TRAPINCH 328 -#define SPECIES_VIBRAVA 329 -#define SPECIES_FLYGON 330 -#define SPECIES_CACNEA 331 -#define SPECIES_CACTURNE 332 -#define SPECIES_SWABLU 333 -#define SPECIES_ALTARIA 334 -#define SPECIES_ZANGOOSE 335 -#define SPECIES_SEVIPER 336 -#define SPECIES_LUNATONE 337 -#define SPECIES_SOLROCK 338 -#define SPECIES_BARBOACH 339 -#define SPECIES_WHISCASH 340 -#define SPECIES_CORPHISH 341 -#define SPECIES_CRAWDAUNT 342 -#define SPECIES_BALTOY 343 -#define SPECIES_CLAYDOL 344 -#define SPECIES_LILEEP 345 -#define SPECIES_CRADILY 346 -#define SPECIES_ANORITH 347 -#define SPECIES_ARMALDO 348 -#define SPECIES_FEEBAS 349 -#define SPECIES_MILOTIC 350 -#define SPECIES_CASTFORM 351 -#define SPECIES_KECLEON 352 -#define SPECIES_SHUPPET 353 -#define SPECIES_BANETTE 354 -#define SPECIES_DUSKULL 355 -#define SPECIES_DUSCLOPS 356 -#define SPECIES_TROPIUS 357 -#define SPECIES_CHIMECHO 358 -#define SPECIES_ABSOL 359 -#define SPECIES_WYNAUT 360 -#define SPECIES_SNORUNT 361 -#define SPECIES_GLALIE 362 -#define SPECIES_SPHEAL 363 -#define SPECIES_SEALEO 364 -#define SPECIES_WALREIN 365 -#define SPECIES_CLAMPERL 366 -#define SPECIES_HUNTAIL 367 -#define SPECIES_GOREBYSS 368 -#define SPECIES_RELICANTH 369 -#define SPECIES_LUVDISC 370 -#define SPECIES_BAGON 371 -#define SPECIES_SHELGON 372 -#define SPECIES_SALAMENCE 373 -#define SPECIES_BELDUM 374 -#define SPECIES_METANG 375 -#define SPECIES_METAGROSS 376 -#define SPECIES_REGIROCK 377 -#define SPECIES_REGICE 378 -#define SPECIES_REGISTEEL 379 -#define SPECIES_LATIAS 380 -#define SPECIES_LATIOS 381 -#define SPECIES_KYOGRE 382 -#define SPECIES_GROUDON 383 -#define SPECIES_RAYQUAZA 384 -#define SPECIES_JIRACHI 385 -#define SPECIES_DEOXYS 386 -#define SPECIES_TURTWIG 387 -#define SPECIES_GROTLE 388 -#define SPECIES_TORTERRA 389 -#define SPECIES_CHIMCHAR 390 -#define SPECIES_MONFERNO 391 -#define SPECIES_INFERNAPE 392 -#define SPECIES_PIPLUP 393 -#define SPECIES_PRINPLUP 394 -#define SPECIES_EMPOLEON 395 -#define SPECIES_STARLY 396 -#define SPECIES_STARAVIA 397 -#define SPECIES_STARAPTOR 398 -#define SPECIES_BIDOOF 399 -#define SPECIES_BIBAREL 400 -#define SPECIES_KRICKETOT 401 -#define SPECIES_KRICKETUNE 402 -#define SPECIES_SHINX 403 -#define SPECIES_LUXIO 404 -#define SPECIES_LUXRAY 405 -#define SPECIES_BUDEW 406 -#define SPECIES_ROSERADE 407 -#define SPECIES_CRANIDOS 408 -#define SPECIES_RAMPARDOS 409 -#define SPECIES_SHIELDON 410 -#define SPECIES_BASTIODON 411 -#define SPECIES_BURMY 412 -#define SPECIES_WORMADAM 413 -#define SPECIES_MOTHIM 414 -#define SPECIES_COMBEE 415 -#define SPECIES_VESPIQUEN 416 -#define SPECIES_PACHIRISU 417 -#define SPECIES_BUIZEL 418 -#define SPECIES_FLOATZEL 419 -#define SPECIES_CHERUBI 420 -#define SPECIES_CHERRIM 421 -#define SPECIES_SHELLOS 422 -#define SPECIES_GASTRODON 423 -#define SPECIES_AMBIPOM 424 -#define SPECIES_DRIFLOON 425 -#define SPECIES_DRIFBLIM 426 -#define SPECIES_BUNEARY 427 -#define SPECIES_LOPUNNY 428 -#define SPECIES_MISMAGIUS 429 -#define SPECIES_HONCHKROW 430 -#define SPECIES_GLAMEOW 431 -#define SPECIES_PURUGLY 432 -#define SPECIES_CHINGLING 433 -#define SPECIES_STUNKY 434 -#define SPECIES_SKUNTANK 435 -#define SPECIES_BRONZOR 436 -#define SPECIES_BRONZONG 437 -#define SPECIES_BONSLY 438 -#define SPECIES_MIME_JR 439 -#define SPECIES_HAPPINY 440 -#define SPECIES_CHATOT 441 -#define SPECIES_SPIRITOMB 442 -#define SPECIES_GIBLE 443 -#define SPECIES_GABITE 444 -#define SPECIES_GARCHOMP 445 -#define SPECIES_MUNCHLAX 446 -#define SPECIES_RIOLU 447 -#define SPECIES_LUCARIO 448 -#define SPECIES_HIPPOPOTAS 449 -#define SPECIES_HIPPOWDON 450 -#define SPECIES_SKORUPI 451 -#define SPECIES_DRAPION 452 -#define SPECIES_CROAGUNK 453 -#define SPECIES_TOXICROAK 454 -#define SPECIES_CARNIVINE 455 -#define SPECIES_FINNEON 456 -#define SPECIES_LUMINEON 457 -#define SPECIES_MANTYKE 458 -#define SPECIES_SNOVER 459 -#define SPECIES_ABOMASNOW 460 -#define SPECIES_WEAVILE 461 -#define SPECIES_MAGNEZONE 462 -#define SPECIES_LICKILICKY 463 -#define SPECIES_RHYPERIOR 464 -#define SPECIES_TANGROWTH 465 -#define SPECIES_ELECTIVIRE 466 -#define SPECIES_MAGMORTAR 467 -#define SPECIES_TOGEKISS 468 -#define SPECIES_YANMEGA 469 -#define SPECIES_LEAFEON 470 -#define SPECIES_GLACEON 471 -#define SPECIES_GLISCOR 472 -#define SPECIES_MAMOSWINE 473 -#define SPECIES_PORYGON_Z 474 -#define SPECIES_GALLADE 475 -#define SPECIES_PROBOPASS 476 -#define SPECIES_DUSKNOIR 477 -#define SPECIES_FROSLASS 478 -#define SPECIES_ROTOM 479 -#define SPECIES_UXIE 480 -#define SPECIES_MESPRIT 481 -#define SPECIES_AZELF 482 -#define SPECIES_DIALGA 483 -#define SPECIES_PALKIA 484 -#define SPECIES_HEATRAN 485 -#define SPECIES_REGIGIGAS 486 -#define SPECIES_GIRATINA 487 -#define SPECIES_CRESSELIA 488 -#define SPECIES_PHIONE 489 -#define SPECIES_MANAPHY 490 -#define SPECIES_DARKRAI 491 -#define SPECIES_SHAYMIN 492 -#define SPECIES_ARCEUS 493 -#define SPECIES_VICTINI 494 -#define SPECIES_SNIVY 495 -#define SPECIES_SERVINE 496 -#define SPECIES_SERPERIOR 497 -#define SPECIES_TEPIG 498 -#define SPECIES_PIGNITE 499 -#define SPECIES_EMBOAR 500 -#define SPECIES_OSHAWOTT 501 -#define SPECIES_DEWOTT 502 -#define SPECIES_SAMUROTT 503 -#define SPECIES_PATRAT 504 -#define SPECIES_WATCHOG 505 -#define SPECIES_LILLIPUP 506 -#define SPECIES_HERDIER 507 -#define SPECIES_STOUTLAND 508 -#define SPECIES_PURRLOIN 509 -#define SPECIES_LIEPARD 510 -#define SPECIES_PANSAGE 511 -#define SPECIES_SIMISAGE 512 -#define SPECIES_PANSEAR 513 -#define SPECIES_SIMISEAR 514 -#define SPECIES_PANPOUR 515 -#define SPECIES_SIMIPOUR 516 -#define SPECIES_MUNNA 517 -#define SPECIES_MUSHARNA 518 -#define SPECIES_PIDOVE 519 -#define SPECIES_TRANQUILL 520 -#define SPECIES_UNFEZANT 521 -#define SPECIES_BLITZLE 522 -#define SPECIES_ZEBSTRIKA 523 -#define SPECIES_ROGGENROLA 524 -#define SPECIES_BOLDORE 525 -#define SPECIES_GIGALITH 526 -#define SPECIES_WOOBAT 527 -#define SPECIES_SWOOBAT 528 -#define SPECIES_DRILBUR 529 -#define SPECIES_EXCADRILL 530 -#define SPECIES_AUDINO 531 -#define SPECIES_TIMBURR 532 -#define SPECIES_GURDURR 533 -#define SPECIES_CONKELDURR 534 -#define SPECIES_TYMPOLE 535 -#define SPECIES_PALPITOAD 536 -#define SPECIES_SEISMITOAD 537 -#define SPECIES_THROH 538 -#define SPECIES_SAWK 539 -#define SPECIES_SEWADDLE 540 -#define SPECIES_SWADLOON 541 -#define SPECIES_LEAVANNY 542 -#define SPECIES_VENIPEDE 543 -#define SPECIES_WHIRLIPEDE 544 -#define SPECIES_SCOLIPEDE 545 -#define SPECIES_COTTONEE 546 -#define SPECIES_WHIMSICOTT 547 -#define SPECIES_PETILIL 548 -#define SPECIES_LILLIGANT 549 -#define SPECIES_BASCULIN 550 -#define SPECIES_SANDILE 551 -#define SPECIES_KROKOROK 552 -#define SPECIES_KROOKODILE 553 -#define SPECIES_DARUMAKA 554 -#define SPECIES_DARMANITAN 555 -#define SPECIES_MARACTUS 556 -#define SPECIES_DWEBBLE 557 -#define SPECIES_CRUSTLE 558 -#define SPECIES_SCRAGGY 559 -#define SPECIES_SCRAFTY 560 -#define SPECIES_SIGILYPH 561 -#define SPECIES_YAMASK 562 -#define SPECIES_COFAGRIGUS 563 -#define SPECIES_TIRTOUGA 564 -#define SPECIES_CARRACOSTA 565 -#define SPECIES_ARCHEN 566 -#define SPECIES_ARCHEOPS 567 -#define SPECIES_TRUBBISH 568 -#define SPECIES_GARBODOR 569 -#define SPECIES_ZORUA 570 -#define SPECIES_ZOROARK 571 -#define SPECIES_MINCCINO 572 -#define SPECIES_CINCCINO 573 -#define SPECIES_GOTHITA 574 -#define SPECIES_GOTHORITA 575 -#define SPECIES_GOTHITELLE 576 -#define SPECIES_SOLOSIS 577 -#define SPECIES_DUOSION 578 -#define SPECIES_REUNICLUS 579 -#define SPECIES_DUCKLETT 580 -#define SPECIES_SWANNA 581 -#define SPECIES_VANILLITE 582 -#define SPECIES_VANILLISH 583 -#define SPECIES_VANILLUXE 584 -#define SPECIES_DEERLING 585 -#define SPECIES_SAWSBUCK 586 -#define SPECIES_EMOLGA 587 -#define SPECIES_KARRABLAST 588 -#define SPECIES_ESCAVALIER 589 -#define SPECIES_FOONGUS 590 -#define SPECIES_AMOONGUSS 591 -#define SPECIES_FRILLISH 592 -#define SPECIES_JELLICENT 593 -#define SPECIES_ALOMOMOLA 594 -#define SPECIES_JOLTIK 595 -#define SPECIES_GALVANTULA 596 -#define SPECIES_FERROSEED 597 -#define SPECIES_FERROTHORN 598 -#define SPECIES_KLINK 599 -#define SPECIES_KLANG 600 -#define SPECIES_KLINKLANG 601 -#define SPECIES_TYNAMO 602 -#define SPECIES_EELEKTRIK 603 -#define SPECIES_EELEKTROSS 604 -#define SPECIES_ELGYEM 605 -#define SPECIES_BEHEEYEM 606 -#define SPECIES_LITWICK 607 -#define SPECIES_LAMPENT 608 -#define SPECIES_CHANDELURE 609 -#define SPECIES_AXEW 610 -#define SPECIES_FRAXURE 611 -#define SPECIES_HAXORUS 612 -#define SPECIES_CUBCHOO 613 -#define SPECIES_BEARTIC 614 -#define SPECIES_CRYOGONAL 615 -#define SPECIES_SHELMET 616 -#define SPECIES_ACCELGOR 617 -#define SPECIES_STUNFISK 618 -#define SPECIES_MIENFOO 619 -#define SPECIES_MIENSHAO 620 -#define SPECIES_DRUDDIGON 621 -#define SPECIES_GOLETT 622 -#define SPECIES_GOLURK 623 -#define SPECIES_PAWNIARD 624 -#define SPECIES_BISHARP 625 -#define SPECIES_BOUFFALANT 626 -#define SPECIES_RUFFLET 627 -#define SPECIES_BRAVIARY 628 -#define SPECIES_VULLABY 629 -#define SPECIES_MANDIBUZZ 630 -#define SPECIES_HEATMOR 631 -#define SPECIES_DURANT 632 -#define SPECIES_DEINO 633 -#define SPECIES_ZWEILOUS 634 -#define SPECIES_HYDREIGON 635 -#define SPECIES_LARVESTA 636 -#define SPECIES_VOLCARONA 637 -#define SPECIES_COBALION 638 -#define SPECIES_TERRAKION 639 -#define SPECIES_VIRIZION 640 -#define SPECIES_TORNADUS 641 -#define SPECIES_THUNDURUS 642 -#define SPECIES_RESHIRAM 643 -#define SPECIES_ZEKROM 644 -#define SPECIES_LANDORUS 645 -#define SPECIES_KYUREM 646 -#define SPECIES_KELDEO 647 -#define SPECIES_MELOETTA 648 -#define SPECIES_GENESECT 649 -#define SPECIES_CHESPIN 650 -#define SPECIES_QUILLADIN 651 -#define SPECIES_CHESNAUGHT 652 -#define SPECIES_FENNEKIN 653 -#define SPECIES_BRAIXEN 654 -#define SPECIES_DELPHOX 655 -#define SPECIES_FROAKIE 656 -#define SPECIES_FROGADIER 657 -#define SPECIES_GRENINJA 658 -#define SPECIES_BUNNELBY 659 -#define SPECIES_DIGGERSBY 660 -#define SPECIES_FLETCHLING 661 -#define SPECIES_FLETCHINDER 662 -#define SPECIES_TALONFLAME 663 -#define SPECIES_SCATTERBUG 664 -#define SPECIES_SPEWPA 665 -#define SPECIES_VIVILLON 666 // Icy Snow Pattern -#define SPECIES_LITLEO 667 -#define SPECIES_PYROAR 668 -#define SPECIES_FLABEBE 669 // Red Flower -#define SPECIES_FLOETTE 670 -#define SPECIES_FLORGES 671 -#define SPECIES_SKIDDO 672 -#define SPECIES_GOGOAT 673 -#define SPECIES_PANCHAM 674 -#define SPECIES_PANGORO 675 -#define SPECIES_FURFROU 676 -#define SPECIES_ESPURR 677 -#define SPECIES_MEOWSTIC 678 -#define SPECIES_HONEDGE 679 -#define SPECIES_DOUBLADE 680 -#define SPECIES_AEGISLASH 681 -#define SPECIES_SPRITZEE 682 -#define SPECIES_AROMATISSE 683 -#define SPECIES_SWIRLIX 684 -#define SPECIES_SLURPUFF 685 -#define SPECIES_INKAY 686 -#define SPECIES_MALAMAR 687 -#define SPECIES_BINACLE 688 -#define SPECIES_BARBARACLE 689 -#define SPECIES_SKRELP 690 -#define SPECIES_DRAGALGE 691 -#define SPECIES_CLAUNCHER 692 -#define SPECIES_CLAWITZER 693 -#define SPECIES_HELIOPTILE 694 -#define SPECIES_HELIOLISK 695 -#define SPECIES_TYRUNT 696 -#define SPECIES_TYRANTRUM 697 -#define SPECIES_AMAURA 698 -#define SPECIES_AURORUS 699 -#define SPECIES_SYLVEON 700 -#define SPECIES_HAWLUCHA 701 -#define SPECIES_DEDENNE 702 -#define SPECIES_CARBINK 703 -#define SPECIES_GOOMY 704 -#define SPECIES_SLIGGOO 705 -#define SPECIES_GOODRA 706 -#define SPECIES_KLEFKI 707 -#define SPECIES_PHANTUMP 708 -#define SPECIES_TREVENANT 709 -#define SPECIES_PUMPKABOO 710 -#define SPECIES_GOURGEIST 711 -#define SPECIES_BERGMITE 712 -#define SPECIES_AVALUGG 713 -#define SPECIES_NOIBAT 714 -#define SPECIES_NOIVERN 715 -#define SPECIES_XERNEAS 716 -#define SPECIES_YVELTAL 717 -#define SPECIES_ZYGARDE 718 -#define SPECIES_DIANCIE 719 -#define SPECIES_HOOPA 720 -#define SPECIES_VOLCANION 721 -#define SPECIES_ROWLET 722 -#define SPECIES_DARTRIX 723 -#define SPECIES_DECIDUEYE 724 -#define SPECIES_LITTEN 725 -#define SPECIES_TORRACAT 726 -#define SPECIES_INCINEROAR 727 -#define SPECIES_POPPLIO 728 -#define SPECIES_BRIONNE 729 -#define SPECIES_PRIMARINA 730 -#define SPECIES_PIKIPEK 731 -#define SPECIES_TRUMBEAK 732 -#define SPECIES_TOUCANNON 733 -#define SPECIES_YUNGOOS 734 -#define SPECIES_GUMSHOOS 735 -#define SPECIES_GRUBBIN 736 -#define SPECIES_CHARJABUG 737 -#define SPECIES_VIKAVOLT 738 -#define SPECIES_CRABRAWLER 739 -#define SPECIES_CRABOMINABLE 740 -#define SPECIES_ORICORIO 741 -#define SPECIES_CUTIEFLY 742 -#define SPECIES_RIBOMBEE 743 -#define SPECIES_ROCKRUFF 744 -#define SPECIES_LYCANROC 745 -#define SPECIES_WISHIWASHI 746 -#define SPECIES_MAREANIE 747 -#define SPECIES_TOXAPEX 748 -#define SPECIES_MUDBRAY 749 -#define SPECIES_MUDSDALE 750 -#define SPECIES_DEWPIDER 751 -#define SPECIES_ARAQUANID 752 -#define SPECIES_FOMANTIS 753 -#define SPECIES_LURANTIS 754 -#define SPECIES_MORELULL 755 -#define SPECIES_SHIINOTIC 756 -#define SPECIES_SALANDIT 757 -#define SPECIES_SALAZZLE 758 -#define SPECIES_STUFFUL 759 -#define SPECIES_BEWEAR 760 -#define SPECIES_BOUNSWEET 761 -#define SPECIES_STEENEE 762 -#define SPECIES_TSAREENA 763 -#define SPECIES_COMFEY 764 -#define SPECIES_ORANGURU 765 -#define SPECIES_PASSIMIAN 766 -#define SPECIES_WIMPOD 767 -#define SPECIES_GOLISOPOD 768 -#define SPECIES_SANDYGAST 769 -#define SPECIES_PALOSSAND 770 -#define SPECIES_PYUKUMUKU 771 -#define SPECIES_TYPE_NULL 772 -#define SPECIES_SILVALLY 773 -#define SPECIES_MINIOR 774 -#define SPECIES_KOMALA 775 -#define SPECIES_TURTONATOR 776 -#define SPECIES_TOGEDEMARU 777 -#define SPECIES_MIMIKYU 778 -#define SPECIES_BRUXISH 779 -#define SPECIES_DRAMPA 780 -#define SPECIES_DHELMISE 781 -#define SPECIES_JANGMO_O 782 -#define SPECIES_HAKAMO_O 783 -#define SPECIES_KOMMO_O 784 -#define SPECIES_TAPU_KOKO 785 -#define SPECIES_TAPU_LELE 786 -#define SPECIES_TAPU_BULU 787 -#define SPECIES_TAPU_FINI 788 -#define SPECIES_COSMOG 789 -#define SPECIES_COSMOEM 790 -#define SPECIES_SOLGALEO 791 -#define SPECIES_LUNALA 792 -#define SPECIES_NIHILEGO 793 -#define SPECIES_BUZZWOLE 794 -#define SPECIES_PHEROMOSA 795 -#define SPECIES_XURKITREE 796 -#define SPECIES_CELESTEELA 797 -#define SPECIES_KARTANA 798 -#define SPECIES_GUZZLORD 799 -#define SPECIES_NECROZMA 800 -#define SPECIES_MAGEARNA 801 -#define SPECIES_MARSHADOW 802 -#define SPECIES_POIPOLE 803 -#define SPECIES_NAGANADEL 804 -#define SPECIES_STAKATAKA 805 -#define SPECIES_BLACEPHALON 806 -#define SPECIES_ZERAORA 807 -#define SPECIES_MELTAN 808 -#define SPECIES_MELMETAL 809 -#define SPECIES_GROOKEY 810 -#define SPECIES_THWACKEY 811 -#define SPECIES_RILLABOOM 812 -#define SPECIES_SCORBUNNY 813 -#define SPECIES_RABOOT 814 -#define SPECIES_CINDERACE 815 -#define SPECIES_SOBBLE 816 -#define SPECIES_DRIZZILE 817 -#define SPECIES_INTELEON 818 -#define SPECIES_SKWOVET 819 -#define SPECIES_GREEDENT 820 -#define SPECIES_ROOKIDEE 821 -#define SPECIES_CORVISQUIRE 822 -#define SPECIES_CORVIKNIGHT 823 -#define SPECIES_BLIPBUG 824 -#define SPECIES_DOTTLER 825 -#define SPECIES_ORBEETLE 826 -#define SPECIES_NICKIT 827 -#define SPECIES_THIEVUL 828 -#define SPECIES_GOSSIFLEUR 829 -#define SPECIES_ELDEGOSS 830 -#define SPECIES_WOOLOO 831 -#define SPECIES_DUBWOOL 832 -#define SPECIES_CHEWTLE 833 -#define SPECIES_DREDNAW 834 -#define SPECIES_YAMPER 835 -#define SPECIES_BOLTUND 836 -#define SPECIES_ROLYCOLY 837 -#define SPECIES_CARKOL 838 -#define SPECIES_COALOSSAL 839 -#define SPECIES_APPLIN 840 -#define SPECIES_FLAPPLE 841 -#define SPECIES_APPLETUN 842 -#define SPECIES_SILICOBRA 843 -#define SPECIES_SANDACONDA 844 -#define SPECIES_CRAMORANT 845 -#define SPECIES_ARROKUDA 846 -#define SPECIES_BARRASKEWDA 847 -#define SPECIES_TOXEL 848 -#define SPECIES_TOXTRICITY 849 -#define SPECIES_SIZZLIPEDE 850 -#define SPECIES_CENTISKORCH 851 -#define SPECIES_CLOBBOPUS 852 -#define SPECIES_GRAPPLOCT 853 -#define SPECIES_SINISTEA 854 -#define SPECIES_POLTEAGEIST 855 -#define SPECIES_HATENNA 856 -#define SPECIES_HATTREM 857 -#define SPECIES_HATTERENE 858 -#define SPECIES_IMPIDIMP 859 -#define SPECIES_MORGREM 860 -#define SPECIES_GRIMMSNARL 861 -#define SPECIES_OBSTAGOON 862 -#define SPECIES_PERRSERKER 863 -#define SPECIES_CURSOLA 864 -#define SPECIES_SIRFETCHD 865 -#define SPECIES_MR_RIME 866 -#define SPECIES_RUNERIGUS 867 -#define SPECIES_MILCERY 868 -#define SPECIES_ALCREMIE 869 -#define SPECIES_FALINKS 870 -#define SPECIES_PINCURCHIN 871 -#define SPECIES_SNOM 872 -#define SPECIES_FROSMOTH 873 -#define SPECIES_STONJOURNER 874 -#define SPECIES_EISCUE 875 -#define SPECIES_INDEEDEE 876 -#define SPECIES_MORPEKO 877 -#define SPECIES_CUFANT 878 -#define SPECIES_COPPERAJAH 879 -#define SPECIES_DRACOZOLT 880 -#define SPECIES_ARCTOZOLT 881 -#define SPECIES_DRACOVISH 882 -#define SPECIES_ARCTOVISH 883 -#define SPECIES_DURALUDON 884 -#define SPECIES_DREEPY 885 -#define SPECIES_DRAKLOAK 886 -#define SPECIES_DRAGAPULT 887 -#define SPECIES_ZACIAN 888 -#define SPECIES_ZAMAZENTA 889 -#define SPECIES_ETERNATUS 890 -#define SPECIES_KUBFU 891 -#define SPECIES_URSHIFU 892 -#define SPECIES_ZARUDE 893 -#define SPECIES_REGIELEKI 894 -#define SPECIES_REGIDRAGO 895 -#define SPECIES_GLASTRIER 896 -#define SPECIES_SPECTRIER 897 -#define SPECIES_CALYREX 898 -#define SPECIES_WYRDEER 899 -#define SPECIES_KLEAVOR 900 -#define SPECIES_URSALUNA 901 -#define SPECIES_BASCULEGION 902 -#define SPECIES_SNEASLER 903 -#define SPECIES_OVERQWIL 904 -#define SPECIES_ENAMORUS 905 +#define SPECIES_NONE 0 +#define SPECIES_BULBASAUR 1 +#define SPECIES_IVYSAUR 2 +#define SPECIES_VENUSAUR 3 +#define SPECIES_CHARMANDER 4 +#define SPECIES_CHARMELEON 5 +#define SPECIES_CHARIZARD 6 +#define SPECIES_SQUIRTLE 7 +#define SPECIES_WARTORTLE 8 +#define SPECIES_BLASTOISE 9 +#define SPECIES_CATERPIE 10 +#define SPECIES_METAPOD 11 +#define SPECIES_BUTTERFREE 12 +#define SPECIES_WEEDLE 13 +#define SPECIES_KAKUNA 14 +#define SPECIES_BEEDRILL 15 +#define SPECIES_PIDGEY 16 +#define SPECIES_PIDGEOTTO 17 +#define SPECIES_PIDGEOT 18 +#define SPECIES_RATTATA 19 +#define SPECIES_RATICATE 20 +#define SPECIES_SPEAROW 21 +#define SPECIES_FEAROW 22 +#define SPECIES_EKANS 23 +#define SPECIES_ARBOK 24 +#define SPECIES_PIKACHU 25 +#define SPECIES_RAICHU 26 +#define SPECIES_SANDSHREW 27 +#define SPECIES_SANDSLASH 28 +#define SPECIES_NIDORAN_F 29 +#define SPECIES_NIDORINA 30 +#define SPECIES_NIDOQUEEN 31 +#define SPECIES_NIDORAN_M 32 +#define SPECIES_NIDORINO 33 +#define SPECIES_NIDOKING 34 +#define SPECIES_CLEFAIRY 35 +#define SPECIES_CLEFABLE 36 +#define SPECIES_VULPIX 37 +#define SPECIES_NINETALES 38 +#define SPECIES_JIGGLYPUFF 39 +#define SPECIES_WIGGLYTUFF 40 +#define SPECIES_ZUBAT 41 +#define SPECIES_GOLBAT 42 +#define SPECIES_ODDISH 43 +#define SPECIES_GLOOM 44 +#define SPECIES_VILEPLUME 45 +#define SPECIES_PARAS 46 +#define SPECIES_PARASECT 47 +#define SPECIES_VENONAT 48 +#define SPECIES_VENOMOTH 49 +#define SPECIES_DIGLETT 50 +#define SPECIES_DUGTRIO 51 +#define SPECIES_MEOWTH 52 +#define SPECIES_PERSIAN 53 +#define SPECIES_PSYDUCK 54 +#define SPECIES_GOLDUCK 55 +#define SPECIES_MANKEY 56 +#define SPECIES_PRIMEAPE 57 +#define SPECIES_GROWLITHE 58 +#define SPECIES_ARCANINE 59 +#define SPECIES_POLIWAG 60 +#define SPECIES_POLIWHIRL 61 +#define SPECIES_POLIWRATH 62 +#define SPECIES_ABRA 63 +#define SPECIES_KADABRA 64 +#define SPECIES_ALAKAZAM 65 +#define SPECIES_MACHOP 66 +#define SPECIES_MACHOKE 67 +#define SPECIES_MACHAMP 68 +#define SPECIES_BELLSPROUT 69 +#define SPECIES_WEEPINBELL 70 +#define SPECIES_VICTREEBEL 71 +#define SPECIES_TENTACOOL 72 +#define SPECIES_TENTACRUEL 73 +#define SPECIES_GEODUDE 74 +#define SPECIES_GRAVELER 75 +#define SPECIES_GOLEM 76 +#define SPECIES_PONYTA 77 +#define SPECIES_RAPIDASH 78 +#define SPECIES_SLOWPOKE 79 +#define SPECIES_SLOWBRO 80 +#define SPECIES_MAGNEMITE 81 +#define SPECIES_MAGNETON 82 +#define SPECIES_FARFETCHD 83 +#define SPECIES_DODUO 84 +#define SPECIES_DODRIO 85 +#define SPECIES_SEEL 86 +#define SPECIES_DEWGONG 87 +#define SPECIES_GRIMER 88 +#define SPECIES_MUK 89 +#define SPECIES_SHELLDER 90 +#define SPECIES_CLOYSTER 91 +#define SPECIES_GASTLY 92 +#define SPECIES_HAUNTER 93 +#define SPECIES_GENGAR 94 +#define SPECIES_ONIX 95 +#define SPECIES_DROWZEE 96 +#define SPECIES_HYPNO 97 +#define SPECIES_KRABBY 98 +#define SPECIES_KINGLER 99 +#define SPECIES_VOLTORB 100 +#define SPECIES_ELECTRODE 101 +#define SPECIES_EXEGGCUTE 102 +#define SPECIES_EXEGGUTOR 103 +#define SPECIES_CUBONE 104 +#define SPECIES_MAROWAK 105 +#define SPECIES_HITMONLEE 106 +#define SPECIES_HITMONCHAN 107 +#define SPECIES_LICKITUNG 108 +#define SPECIES_KOFFING 109 +#define SPECIES_WEEZING 110 +#define SPECIES_RHYHORN 111 +#define SPECIES_RHYDON 112 +#define SPECIES_CHANSEY 113 +#define SPECIES_TANGELA 114 +#define SPECIES_KANGASKHAN 115 +#define SPECIES_HORSEA 116 +#define SPECIES_SEADRA 117 +#define SPECIES_GOLDEEN 118 +#define SPECIES_SEAKING 119 +#define SPECIES_STARYU 120 +#define SPECIES_STARMIE 121 +#define SPECIES_MR_MIME 122 +#define SPECIES_SCYTHER 123 +#define SPECIES_JYNX 124 +#define SPECIES_ELECTABUZZ 125 +#define SPECIES_MAGMAR 126 +#define SPECIES_PINSIR 127 +#define SPECIES_TAUROS 128 +#define SPECIES_MAGIKARP 129 +#define SPECIES_GYARADOS 130 +#define SPECIES_LAPRAS 131 +#define SPECIES_DITTO 132 +#define SPECIES_EEVEE 133 +#define SPECIES_VAPOREON 134 +#define SPECIES_JOLTEON 135 +#define SPECIES_FLAREON 136 +#define SPECIES_PORYGON 137 +#define SPECIES_OMANYTE 138 +#define SPECIES_OMASTAR 139 +#define SPECIES_KABUTO 140 +#define SPECIES_KABUTOPS 141 +#define SPECIES_AERODACTYL 142 +#define SPECIES_SNORLAX 143 +#define SPECIES_ARTICUNO 144 +#define SPECIES_ZAPDOS 145 +#define SPECIES_MOLTRES 146 +#define SPECIES_DRATINI 147 +#define SPECIES_DRAGONAIR 148 +#define SPECIES_DRAGONITE 149 +#define SPECIES_MEWTWO 150 +#define SPECIES_MEW 151 +#define SPECIES_CHIKORITA 152 +#define SPECIES_BAYLEEF 153 +#define SPECIES_MEGANIUM 154 +#define SPECIES_CYNDAQUIL 155 +#define SPECIES_QUILAVA 156 +#define SPECIES_TYPHLOSION 157 +#define SPECIES_TOTODILE 158 +#define SPECIES_CROCONAW 159 +#define SPECIES_FERALIGATR 160 +#define SPECIES_SENTRET 161 +#define SPECIES_FURRET 162 +#define SPECIES_HOOTHOOT 163 +#define SPECIES_NOCTOWL 164 +#define SPECIES_LEDYBA 165 +#define SPECIES_LEDIAN 166 +#define SPECIES_SPINARAK 167 +#define SPECIES_ARIADOS 168 +#define SPECIES_CROBAT 169 +#define SPECIES_CHINCHOU 170 +#define SPECIES_LANTURN 171 +#define SPECIES_PICHU 172 +#define SPECIES_CLEFFA 173 +#define SPECIES_IGGLYBUFF 174 +#define SPECIES_TOGEPI 175 +#define SPECIES_TOGETIC 176 +#define SPECIES_NATU 177 +#define SPECIES_XATU 178 +#define SPECIES_MAREEP 179 +#define SPECIES_FLAAFFY 180 +#define SPECIES_AMPHAROS 181 +#define SPECIES_BELLOSSOM 182 +#define SPECIES_MARILL 183 +#define SPECIES_AZUMARILL 184 +#define SPECIES_SUDOWOODO 185 +#define SPECIES_POLITOED 186 +#define SPECIES_HOPPIP 187 +#define SPECIES_SKIPLOOM 188 +#define SPECIES_JUMPLUFF 189 +#define SPECIES_AIPOM 190 +#define SPECIES_SUNKERN 191 +#define SPECIES_SUNFLORA 192 +#define SPECIES_YANMA 193 +#define SPECIES_WOOPER 194 +#define SPECIES_QUAGSIRE 195 +#define SPECIES_ESPEON 196 +#define SPECIES_UMBREON 197 +#define SPECIES_MURKROW 198 +#define SPECIES_SLOWKING 199 +#define SPECIES_MISDREAVUS 200 +#define SPECIES_UNOWN 201 +#define SPECIES_WOBBUFFET 202 +#define SPECIES_GIRAFARIG 203 +#define SPECIES_PINECO 204 +#define SPECIES_FORRETRESS 205 +#define SPECIES_DUNSPARCE 206 +#define SPECIES_GLIGAR 207 +#define SPECIES_STEELIX 208 +#define SPECIES_SNUBBULL 209 +#define SPECIES_GRANBULL 210 +#define SPECIES_QWILFISH 211 +#define SPECIES_SCIZOR 212 +#define SPECIES_SHUCKLE 213 +#define SPECIES_HERACROSS 214 +#define SPECIES_SNEASEL 215 +#define SPECIES_TEDDIURSA 216 +#define SPECIES_URSARING 217 +#define SPECIES_SLUGMA 218 +#define SPECIES_MAGCARGO 219 +#define SPECIES_SWINUB 220 +#define SPECIES_PILOSWINE 221 +#define SPECIES_CORSOLA 222 +#define SPECIES_REMORAID 223 +#define SPECIES_OCTILLERY 224 +#define SPECIES_DELIBIRD 225 +#define SPECIES_MANTINE 226 +#define SPECIES_SKARMORY 227 +#define SPECIES_HOUNDOUR 228 +#define SPECIES_HOUNDOOM 229 +#define SPECIES_KINGDRA 230 +#define SPECIES_PHANPY 231 +#define SPECIES_DONPHAN 232 +#define SPECIES_PORYGON2 233 +#define SPECIES_STANTLER 234 +#define SPECIES_SMEARGLE 235 +#define SPECIES_TYROGUE 236 +#define SPECIES_HITMONTOP 237 +#define SPECIES_SMOOCHUM 238 +#define SPECIES_ELEKID 239 +#define SPECIES_MAGBY 240 +#define SPECIES_MILTANK 241 +#define SPECIES_BLISSEY 242 +#define SPECIES_RAIKOU 243 +#define SPECIES_ENTEI 244 +#define SPECIES_SUICUNE 245 +#define SPECIES_LARVITAR 246 +#define SPECIES_PUPITAR 247 +#define SPECIES_TYRANITAR 248 +#define SPECIES_LUGIA 249 +#define SPECIES_HO_OH 250 +#define SPECIES_CELEBI 251 +#define SPECIES_TREECKO 252 +#define SPECIES_GROVYLE 253 +#define SPECIES_SCEPTILE 254 +#define SPECIES_TORCHIC 255 +#define SPECIES_COMBUSKEN 256 +#define SPECIES_BLAZIKEN 257 +#define SPECIES_MUDKIP 258 +#define SPECIES_MARSHTOMP 259 +#define SPECIES_SWAMPERT 260 +#define SPECIES_POOCHYENA 261 +#define SPECIES_MIGHTYENA 262 +#define SPECIES_ZIGZAGOON 263 +#define SPECIES_LINOONE 264 +#define SPECIES_WURMPLE 265 +#define SPECIES_SILCOON 266 +#define SPECIES_BEAUTIFLY 267 +#define SPECIES_CASCOON 268 +#define SPECIES_DUSTOX 269 +#define SPECIES_LOTAD 270 +#define SPECIES_LOMBRE 271 +#define SPECIES_LUDICOLO 272 +#define SPECIES_SEEDOT 273 +#define SPECIES_NUZLEAF 274 +#define SPECIES_SHIFTRY 275 +#define SPECIES_TAILLOW 276 +#define SPECIES_SWELLOW 277 +#define SPECIES_WINGULL 278 +#define SPECIES_PELIPPER 279 +#define SPECIES_RALTS 280 +#define SPECIES_KIRLIA 281 +#define SPECIES_GARDEVOIR 282 +#define SPECIES_SURSKIT 283 +#define SPECIES_MASQUERAIN 284 +#define SPECIES_SHROOMISH 285 +#define SPECIES_BRELOOM 286 +#define SPECIES_SLAKOTH 287 +#define SPECIES_VIGOROTH 288 +#define SPECIES_SLAKING 289 +#define SPECIES_NINCADA 290 +#define SPECIES_NINJASK 291 +#define SPECIES_SHEDINJA 292 +#define SPECIES_WHISMUR 293 +#define SPECIES_LOUDRED 294 +#define SPECIES_EXPLOUD 295 +#define SPECIES_MAKUHITA 296 +#define SPECIES_HARIYAMA 297 +#define SPECIES_AZURILL 298 +#define SPECIES_NOSEPASS 299 +#define SPECIES_SKITTY 300 +#define SPECIES_DELCATTY 301 +#define SPECIES_SABLEYE 302 +#define SPECIES_MAWILE 303 +#define SPECIES_ARON 304 +#define SPECIES_LAIRON 305 +#define SPECIES_AGGRON 306 +#define SPECIES_MEDITITE 307 +#define SPECIES_MEDICHAM 308 +#define SPECIES_ELECTRIKE 309 +#define SPECIES_MANECTRIC 310 +#define SPECIES_PLUSLE 311 +#define SPECIES_MINUN 312 +#define SPECIES_VOLBEAT 313 +#define SPECIES_ILLUMISE 314 +#define SPECIES_ROSELIA 315 +#define SPECIES_GULPIN 316 +#define SPECIES_SWALOT 317 +#define SPECIES_CARVANHA 318 +#define SPECIES_SHARPEDO 319 +#define SPECIES_WAILMER 320 +#define SPECIES_WAILORD 321 +#define SPECIES_NUMEL 322 +#define SPECIES_CAMERUPT 323 +#define SPECIES_TORKOAL 324 +#define SPECIES_SPOINK 325 +#define SPECIES_GRUMPIG 326 +#define SPECIES_SPINDA 327 +#define SPECIES_TRAPINCH 328 +#define SPECIES_VIBRAVA 329 +#define SPECIES_FLYGON 330 +#define SPECIES_CACNEA 331 +#define SPECIES_CACTURNE 332 +#define SPECIES_SWABLU 333 +#define SPECIES_ALTARIA 334 +#define SPECIES_ZANGOOSE 335 +#define SPECIES_SEVIPER 336 +#define SPECIES_LUNATONE 337 +#define SPECIES_SOLROCK 338 +#define SPECIES_BARBOACH 339 +#define SPECIES_WHISCASH 340 +#define SPECIES_CORPHISH 341 +#define SPECIES_CRAWDAUNT 342 +#define SPECIES_BALTOY 343 +#define SPECIES_CLAYDOL 344 +#define SPECIES_LILEEP 345 +#define SPECIES_CRADILY 346 +#define SPECIES_ANORITH 347 +#define SPECIES_ARMALDO 348 +#define SPECIES_FEEBAS 349 +#define SPECIES_MILOTIC 350 +#define SPECIES_CASTFORM SPECIES_CASTFORM_NORMAL +#define SPECIES_CASTFORM_NORMAL 351 +#define SPECIES_KECLEON 352 +#define SPECIES_SHUPPET 353 +#define SPECIES_BANETTE 354 +#define SPECIES_DUSKULL 355 +#define SPECIES_DUSCLOPS 356 +#define SPECIES_TROPIUS 357 +#define SPECIES_CHIMECHO 358 +#define SPECIES_ABSOL 359 +#define SPECIES_WYNAUT 360 +#define SPECIES_SNORUNT 361 +#define SPECIES_GLALIE 362 +#define SPECIES_SPHEAL 363 +#define SPECIES_SEALEO 364 +#define SPECIES_WALREIN 365 +#define SPECIES_CLAMPERL 366 +#define SPECIES_HUNTAIL 367 +#define SPECIES_GOREBYSS 368 +#define SPECIES_RELICANTH 369 +#define SPECIES_LUVDISC 370 +#define SPECIES_BAGON 371 +#define SPECIES_SHELGON 372 +#define SPECIES_SALAMENCE 373 +#define SPECIES_BELDUM 374 +#define SPECIES_METANG 375 +#define SPECIES_METAGROSS 376 +#define SPECIES_REGIROCK 377 +#define SPECIES_REGICE 378 +#define SPECIES_REGISTEEL 379 +#define SPECIES_LATIAS 380 +#define SPECIES_LATIOS 381 +#define SPECIES_KYOGRE 382 +#define SPECIES_GROUDON 383 +#define SPECIES_RAYQUAZA 384 +#define SPECIES_JIRACHI 385 +#define SPECIES_DEOXYS SPECIES_DEOXYS_NORMAL +#define SPECIES_DEOXYS_NORMAL 386 +#define SPECIES_TURTWIG 387 +#define SPECIES_GROTLE 388 +#define SPECIES_TORTERRA 389 +#define SPECIES_CHIMCHAR 390 +#define SPECIES_MONFERNO 391 +#define SPECIES_INFERNAPE 392 +#define SPECIES_PIPLUP 393 +#define SPECIES_PRINPLUP 394 +#define SPECIES_EMPOLEON 395 +#define SPECIES_STARLY 396 +#define SPECIES_STARAVIA 397 +#define SPECIES_STARAPTOR 398 +#define SPECIES_BIDOOF 399 +#define SPECIES_BIBAREL 400 +#define SPECIES_KRICKETOT 401 +#define SPECIES_KRICKETUNE 402 +#define SPECIES_SHINX 403 +#define SPECIES_LUXIO 404 +#define SPECIES_LUXRAY 405 +#define SPECIES_BUDEW 406 +#define SPECIES_ROSERADE 407 +#define SPECIES_CRANIDOS 408 +#define SPECIES_RAMPARDOS 409 +#define SPECIES_SHIELDON 410 +#define SPECIES_BASTIODON 411 +#define SPECIES_BURMY SPECIES_BURMY_PLANT_CLOAK +#define SPECIES_BURMY_PLANT_CLOAK 412 +#define SPECIES_WORMADAM SPECIES_WORMADAM_PLANT_CLOAK +#define SPECIES_WORMADAM_PLANT_CLOAK 413 +#define SPECIES_MOTHIM 414 +#define SPECIES_COMBEE 415 +#define SPECIES_VESPIQUEN 416 +#define SPECIES_PACHIRISU 417 +#define SPECIES_BUIZEL 418 +#define SPECIES_FLOATZEL 419 +#define SPECIES_CHERUBI 420 +#define SPECIES_CHERRIM SPECIES_CHERRIM_OVERCAST +#define SPECIES_CHERRIM_OVERCAST 421 +#define SPECIES_SHELLOS SPECIES_SHELLOS_WEST_SEA +#define SPECIES_SHELLOS_WEST_SEA 422 +#define SPECIES_GASTRODON SPECIES_GASTRODON_WEST_SEA +#define SPECIES_GASTRODON_WEST_SEA 423 +#define SPECIES_AMBIPOM 424 +#define SPECIES_DRIFLOON 425 +#define SPECIES_DRIFBLIM 426 +#define SPECIES_BUNEARY 427 +#define SPECIES_LOPUNNY 428 +#define SPECIES_MISMAGIUS 429 +#define SPECIES_HONCHKROW 430 +#define SPECIES_GLAMEOW 431 +#define SPECIES_PURUGLY 432 +#define SPECIES_CHINGLING 433 +#define SPECIES_STUNKY 434 +#define SPECIES_SKUNTANK 435 +#define SPECIES_BRONZOR 436 +#define SPECIES_BRONZONG 437 +#define SPECIES_BONSLY 438 +#define SPECIES_MIME_JR 439 +#define SPECIES_HAPPINY 440 +#define SPECIES_CHATOT 441 +#define SPECIES_SPIRITOMB 442 +#define SPECIES_GIBLE 443 +#define SPECIES_GABITE 444 +#define SPECIES_GARCHOMP 445 +#define SPECIES_MUNCHLAX 446 +#define SPECIES_RIOLU 447 +#define SPECIES_LUCARIO 448 +#define SPECIES_HIPPOPOTAS 449 +#define SPECIES_HIPPOWDON 450 +#define SPECIES_SKORUPI 451 +#define SPECIES_DRAPION 452 +#define SPECIES_CROAGUNK 453 +#define SPECIES_TOXICROAK 454 +#define SPECIES_CARNIVINE 455 +#define SPECIES_FINNEON 456 +#define SPECIES_LUMINEON 457 +#define SPECIES_MANTYKE 458 +#define SPECIES_SNOVER 459 +#define SPECIES_ABOMASNOW 460 +#define SPECIES_WEAVILE 461 +#define SPECIES_MAGNEZONE 462 +#define SPECIES_LICKILICKY 463 +#define SPECIES_RHYPERIOR 464 +#define SPECIES_TANGROWTH 465 +#define SPECIES_ELECTIVIRE 466 +#define SPECIES_MAGMORTAR 467 +#define SPECIES_TOGEKISS 468 +#define SPECIES_YANMEGA 469 +#define SPECIES_LEAFEON 470 +#define SPECIES_GLACEON 471 +#define SPECIES_GLISCOR 472 +#define SPECIES_MAMOSWINE 473 +#define SPECIES_PORYGON_Z 474 +#define SPECIES_GALLADE 475 +#define SPECIES_PROBOPASS 476 +#define SPECIES_DUSKNOIR 477 +#define SPECIES_FROSLASS 478 +#define SPECIES_ROTOM 479 +#define SPECIES_UXIE 480 +#define SPECIES_MESPRIT 481 +#define SPECIES_AZELF 482 +#define SPECIES_DIALGA 483 +#define SPECIES_PALKIA 484 +#define SPECIES_HEATRAN 485 +#define SPECIES_REGIGIGAS 486 +#define SPECIES_GIRATINA SPECIES_GIRATINA_ALTERED +#define SPECIES_GIRATINA_ALTERED 487 +#define SPECIES_CRESSELIA 488 +#define SPECIES_PHIONE 489 +#define SPECIES_MANAPHY 490 +#define SPECIES_DARKRAI 491 +#define SPECIES_SHAYMIN SPECIES_SHAYMIN_LAND +#define SPECIES_SHAYMIN_LAND 492 +#define SPECIES_ARCEUS SPECIES_ARCEUS_NORMAL +#define SPECIES_ARCEUS_NORMAL 493 +#define SPECIES_VICTINI 494 +#define SPECIES_SNIVY 495 +#define SPECIES_SERVINE 496 +#define SPECIES_SERPERIOR 497 +#define SPECIES_TEPIG 498 +#define SPECIES_PIGNITE 499 +#define SPECIES_EMBOAR 500 +#define SPECIES_OSHAWOTT 501 +#define SPECIES_DEWOTT 502 +#define SPECIES_SAMUROTT 503 +#define SPECIES_PATRAT 504 +#define SPECIES_WATCHOG 505 +#define SPECIES_LILLIPUP 506 +#define SPECIES_HERDIER 507 +#define SPECIES_STOUTLAND 508 +#define SPECIES_PURRLOIN 509 +#define SPECIES_LIEPARD 510 +#define SPECIES_PANSAGE 511 +#define SPECIES_SIMISAGE 512 +#define SPECIES_PANSEAR 513 +#define SPECIES_SIMISEAR 514 +#define SPECIES_PANPOUR 515 +#define SPECIES_SIMIPOUR 516 +#define SPECIES_MUNNA 517 +#define SPECIES_MUSHARNA 518 +#define SPECIES_PIDOVE 519 +#define SPECIES_TRANQUILL 520 +#define SPECIES_UNFEZANT 521 +#define SPECIES_BLITZLE 522 +#define SPECIES_ZEBSTRIKA 523 +#define SPECIES_ROGGENROLA 524 +#define SPECIES_BOLDORE 525 +#define SPECIES_GIGALITH 526 +#define SPECIES_WOOBAT 527 +#define SPECIES_SWOOBAT 528 +#define SPECIES_DRILBUR 529 +#define SPECIES_EXCADRILL 530 +#define SPECIES_AUDINO 531 +#define SPECIES_TIMBURR 532 +#define SPECIES_GURDURR 533 +#define SPECIES_CONKELDURR 534 +#define SPECIES_TYMPOLE 535 +#define SPECIES_PALPITOAD 536 +#define SPECIES_SEISMITOAD 537 +#define SPECIES_THROH 538 +#define SPECIES_SAWK 539 +#define SPECIES_SEWADDLE 540 +#define SPECIES_SWADLOON 541 +#define SPECIES_LEAVANNY 542 +#define SPECIES_VENIPEDE 543 +#define SPECIES_WHIRLIPEDE 544 +#define SPECIES_SCOLIPEDE 545 +#define SPECIES_COTTONEE 546 +#define SPECIES_WHIMSICOTT 547 +#define SPECIES_PETILIL 548 +#define SPECIES_LILLIGANT 549 +#define SPECIES_BASCULIN SPECIES_BASCULIN_RED_STRIPED +#define SPECIES_BASCULIN_RED_STRIPED 550 +#define SPECIES_SANDILE 551 +#define SPECIES_KROKOROK 552 +#define SPECIES_KROOKODILE 553 +#define SPECIES_DARUMAKA 554 +#define SPECIES_DARMANITAN SPECIES_DARMANITAN_STANDARD_MODE +#define SPECIES_DARMANITAN_STANDARD_MODE 555 +#define SPECIES_MARACTUS 556 +#define SPECIES_DWEBBLE 557 +#define SPECIES_CRUSTLE 558 +#define SPECIES_SCRAGGY 559 +#define SPECIES_SCRAFTY 560 +#define SPECIES_SIGILYPH 561 +#define SPECIES_YAMASK 562 +#define SPECIES_COFAGRIGUS 563 +#define SPECIES_TIRTOUGA 564 +#define SPECIES_CARRACOSTA 565 +#define SPECIES_ARCHEN 566 +#define SPECIES_ARCHEOPS 567 +#define SPECIES_TRUBBISH 568 +#define SPECIES_GARBODOR 569 +#define SPECIES_ZORUA 570 +#define SPECIES_ZOROARK 571 +#define SPECIES_MINCCINO 572 +#define SPECIES_CINCCINO 573 +#define SPECIES_GOTHITA 574 +#define SPECIES_GOTHORITA 575 +#define SPECIES_GOTHITELLE 576 +#define SPECIES_SOLOSIS 577 +#define SPECIES_DUOSION 578 +#define SPECIES_REUNICLUS 579 +#define SPECIES_DUCKLETT 580 +#define SPECIES_SWANNA 581 +#define SPECIES_VANILLITE 582 +#define SPECIES_VANILLISH 583 +#define SPECIES_VANILLUXE 584 +#define SPECIES_DEERLING SPECIES_DEERLING_SPRING +#define SPECIES_DEERLING_SPRING 585 +#define SPECIES_SAWSBUCK SPECIES_SAWSBUCK_SPRING +#define SPECIES_SAWSBUCK_SPRING 586 +#define SPECIES_EMOLGA 587 +#define SPECIES_KARRABLAST 588 +#define SPECIES_ESCAVALIER 589 +#define SPECIES_FOONGUS 590 +#define SPECIES_AMOONGUSS 591 +#define SPECIES_FRILLISH 592 +#define SPECIES_JELLICENT 593 +#define SPECIES_ALOMOMOLA 594 +#define SPECIES_JOLTIK 595 +#define SPECIES_GALVANTULA 596 +#define SPECIES_FERROSEED 597 +#define SPECIES_FERROTHORN 598 +#define SPECIES_KLINK 599 +#define SPECIES_KLANG 600 +#define SPECIES_KLINKLANG 601 +#define SPECIES_TYNAMO 602 +#define SPECIES_EELEKTRIK 603 +#define SPECIES_EELEKTROSS 604 +#define SPECIES_ELGYEM 605 +#define SPECIES_BEHEEYEM 606 +#define SPECIES_LITWICK 607 +#define SPECIES_LAMPENT 608 +#define SPECIES_CHANDELURE 609 +#define SPECIES_AXEW 610 +#define SPECIES_FRAXURE 611 +#define SPECIES_HAXORUS 612 +#define SPECIES_CUBCHOO 613 +#define SPECIES_BEARTIC 614 +#define SPECIES_CRYOGONAL 615 +#define SPECIES_SHELMET 616 +#define SPECIES_ACCELGOR 617 +#define SPECIES_STUNFISK 618 +#define SPECIES_MIENFOO 619 +#define SPECIES_MIENSHAO 620 +#define SPECIES_DRUDDIGON 621 +#define SPECIES_GOLETT 622 +#define SPECIES_GOLURK 623 +#define SPECIES_PAWNIARD 624 +#define SPECIES_BISHARP 625 +#define SPECIES_BOUFFALANT 626 +#define SPECIES_RUFFLET 627 +#define SPECIES_BRAVIARY 628 +#define SPECIES_VULLABY 629 +#define SPECIES_MANDIBUZZ 630 +#define SPECIES_HEATMOR 631 +#define SPECIES_DURANT 632 +#define SPECIES_DEINO 633 +#define SPECIES_ZWEILOUS 634 +#define SPECIES_HYDREIGON 635 +#define SPECIES_LARVESTA 636 +#define SPECIES_VOLCARONA 637 +#define SPECIES_COBALION 638 +#define SPECIES_TERRAKION 639 +#define SPECIES_VIRIZION 640 +#define SPECIES_TORNADUS SPECIES_TORNADUS_INCARNATE +#define SPECIES_TORNADUS_INCARNATE 641 +#define SPECIES_THUNDURUS SPECIES_THUNDURUS_INCARNATE +#define SPECIES_THUNDURUS_INCARNATE 642 +#define SPECIES_RESHIRAM 643 +#define SPECIES_ZEKROM 644 +#define SPECIES_LANDORUS SPECIES_LANDORUS_INCARNATE +#define SPECIES_LANDORUS_INCARNATE 645 +#define SPECIES_KYUREM 646 +#define SPECIES_KELDEO SPECIES_KELDEO_ORDINARY +#define SPECIES_KELDEO_ORDINARY 647 +#define SPECIES_MELOETTA SPECIES_MELOETTA_ARIA +#define SPECIES_MELOETTA_ARIA 648 +#define SPECIES_GENESECT 649 +#define SPECIES_CHESPIN 650 +#define SPECIES_QUILLADIN 651 +#define SPECIES_CHESNAUGHT 652 +#define SPECIES_FENNEKIN 653 +#define SPECIES_BRAIXEN 654 +#define SPECIES_DELPHOX 655 +#define SPECIES_FROAKIE 656 +#define SPECIES_FROGADIER 657 +#define SPECIES_GRENINJA 658 +#define SPECIES_BUNNELBY 659 +#define SPECIES_DIGGERSBY 660 +#define SPECIES_FLETCHLING 661 +#define SPECIES_FLETCHINDER 662 +#define SPECIES_TALONFLAME 663 +#define SPECIES_SCATTERBUG 664 +#define SPECIES_SPEWPA 665 +#define SPECIES_VIVILLON SPECIES_VIVILLON_ICY_SNOW +#define SPECIES_VIVILLON_ICY_SNOW 666 +#define SPECIES_LITLEO 667 +#define SPECIES_PYROAR 668 +#define SPECIES_FLABEBE SPECIES_FLABEBE_RED_FLOWER +#define SPECIES_FLABEBE_RED_FLOWER 669 +#define SPECIES_FLOETTE SPECIES_FLOETTE_RED_FLOWER +#define SPECIES_FLOETTE_RED_FLOWER 670 +#define SPECIES_FLORGES SPECIES_FLORGES_RED_FLOWER +#define SPECIES_FLORGES_RED_FLOWER 671 +#define SPECIES_SKIDDO 672 +#define SPECIES_GOGOAT 673 +#define SPECIES_PANCHAM 674 +#define SPECIES_PANGORO 675 +#define SPECIES_FURFROU SPECIES_FURFROU_NATURAL +#define SPECIES_FURFROU_NATURAL 676 +#define SPECIES_ESPURR 677 +#define SPECIES_MEOWSTIC SPECIES_MEOWSTIC_MALE +#define SPECIES_MEOWSTIC_MALE 678 +#define SPECIES_HONEDGE 679 +#define SPECIES_DOUBLADE 680 +#define SPECIES_AEGISLASH SPECIES_AEGISLASH_SHIELD +#define SPECIES_AEGISLASH_SHIELD 681 +#define SPECIES_SPRITZEE 682 +#define SPECIES_AROMATISSE 683 +#define SPECIES_SWIRLIX 684 +#define SPECIES_SLURPUFF 685 +#define SPECIES_INKAY 686 +#define SPECIES_MALAMAR 687 +#define SPECIES_BINACLE 688 +#define SPECIES_BARBARACLE 689 +#define SPECIES_SKRELP 690 +#define SPECIES_DRAGALGE 691 +#define SPECIES_CLAUNCHER 692 +#define SPECIES_CLAWITZER 693 +#define SPECIES_HELIOPTILE 694 +#define SPECIES_HELIOLISK 695 +#define SPECIES_TYRUNT 696 +#define SPECIES_TYRANTRUM 697 +#define SPECIES_AMAURA 698 +#define SPECIES_AURORUS 699 +#define SPECIES_SYLVEON 700 +#define SPECIES_HAWLUCHA 701 +#define SPECIES_DEDENNE 702 +#define SPECIES_CARBINK 703 +#define SPECIES_GOOMY 704 +#define SPECIES_SLIGGOO 705 +#define SPECIES_GOODRA 706 +#define SPECIES_KLEFKI 707 +#define SPECIES_PHANTUMP 708 +#define SPECIES_TREVENANT 709 +#define SPECIES_PUMPKABOO SPECIES_PUMPKABOO_AVERAGE +#define SPECIES_PUMPKABOO_AVERAGE 710 +#define SPECIES_GOURGEIST SPECIES_GOURGEIST_AVERAGE +#define SPECIES_GOURGEIST_AVERAGE 711 +#define SPECIES_BERGMITE 712 +#define SPECIES_AVALUGG 713 +#define SPECIES_NOIBAT 714 +#define SPECIES_NOIVERN 715 +#define SPECIES_XERNEAS SPECIES_XERNEAS_NEUTRAL +#define SPECIES_XERNEAS_NEUTRAL 716 +#define SPECIES_YVELTAL 717 +#define SPECIES_ZYGARDE SPECIES_ZYGARDE_50 +#define SPECIES_ZYGARDE_50 SPECIES_ZYGARDE_50_AURA_BREAK +#define SPECIES_ZYGARDE_50_AURA_BREAK 718 +#define SPECIES_DIANCIE 719 +#define SPECIES_HOOPA SPECIES_HOOPA_CONFINED +#define SPECIES_HOOPA_CONFINED 720 +#define SPECIES_VOLCANION 721 +#define SPECIES_ROWLET 722 +#define SPECIES_DARTRIX 723 +#define SPECIES_DECIDUEYE 724 +#define SPECIES_LITTEN 725 +#define SPECIES_TORRACAT 726 +#define SPECIES_INCINEROAR 727 +#define SPECIES_POPPLIO 728 +#define SPECIES_BRIONNE 729 +#define SPECIES_PRIMARINA 730 +#define SPECIES_PIKIPEK 731 +#define SPECIES_TRUMBEAK 732 +#define SPECIES_TOUCANNON 733 +#define SPECIES_YUNGOOS 734 +#define SPECIES_GUMSHOOS 735 +#define SPECIES_GRUBBIN 736 +#define SPECIES_CHARJABUG 737 +#define SPECIES_VIKAVOLT 738 +#define SPECIES_CRABRAWLER 739 +#define SPECIES_CRABOMINABLE 740 +#define SPECIES_ORICORIO SPECIES_ORICORIO_BAILE +#define SPECIES_ORICORIO_BAILE 741 +#define SPECIES_CUTIEFLY 742 +#define SPECIES_RIBOMBEE 743 +#define SPECIES_ROCKRUFF 744 +#define SPECIES_LYCANROC SPECIES_LYCANROC_MIDDAY +#define SPECIES_LYCANROC_MIDDAY 745 +#define SPECIES_WISHIWASHI SPECIES_WISHIWASHI_SOLO +#define SPECIES_WISHIWASHI_SOLO 746 +#define SPECIES_MAREANIE 747 +#define SPECIES_TOXAPEX 748 +#define SPECIES_MUDBRAY 749 +#define SPECIES_MUDSDALE 750 +#define SPECIES_DEWPIDER 751 +#define SPECIES_ARAQUANID 752 +#define SPECIES_FOMANTIS 753 +#define SPECIES_LURANTIS 754 +#define SPECIES_MORELULL 755 +#define SPECIES_SHIINOTIC 756 +#define SPECIES_SALANDIT 757 +#define SPECIES_SALAZZLE 758 +#define SPECIES_STUFFUL 759 +#define SPECIES_BEWEAR 760 +#define SPECIES_BOUNSWEET 761 +#define SPECIES_STEENEE 762 +#define SPECIES_TSAREENA 763 +#define SPECIES_COMFEY 764 +#define SPECIES_ORANGURU 765 +#define SPECIES_PASSIMIAN 766 +#define SPECIES_WIMPOD 767 +#define SPECIES_GOLISOPOD 768 +#define SPECIES_SANDYGAST 769 +#define SPECIES_PALOSSAND 770 +#define SPECIES_PYUKUMUKU 771 +#define SPECIES_TYPE_NULL 772 +#define SPECIES_SILVALLY SPECIES_SILVALLY_NORMAL +#define SPECIES_SILVALLY_NORMAL 773 +#define SPECIES_MINIOR SPECIES_MINIOR_METEOR +#define SPECIES_MINIOR_METEOR SPECIES_MINIOR_METEOR_RED +#define SPECIES_MINIOR_RED SPECIES_MINIOR_METEOR_RED +#define SPECIES_MINIOR_METEOR_RED 774 +#define SPECIES_KOMALA 775 +#define SPECIES_TURTONATOR 776 +#define SPECIES_TOGEDEMARU 777 +#define SPECIES_MIMIKYU SPECIES_MIMIKYU_DISGUISED +#define SPECIES_MIMIKYU_DISGUISED 778 +#define SPECIES_BRUXISH 779 +#define SPECIES_DRAMPA 780 +#define SPECIES_DHELMISE 781 +#define SPECIES_JANGMO_O 782 +#define SPECIES_HAKAMO_O 783 +#define SPECIES_KOMMO_O 784 +#define SPECIES_TAPU_KOKO 785 +#define SPECIES_TAPU_LELE 786 +#define SPECIES_TAPU_BULU 787 +#define SPECIES_TAPU_FINI 788 +#define SPECIES_COSMOG 789 +#define SPECIES_COSMOEM 790 +#define SPECIES_SOLGALEO 791 +#define SPECIES_LUNALA 792 +#define SPECIES_NIHILEGO 793 +#define SPECIES_BUZZWOLE 794 +#define SPECIES_PHEROMOSA 795 +#define SPECIES_XURKITREE 796 +#define SPECIES_CELESTEELA 797 +#define SPECIES_KARTANA 798 +#define SPECIES_GUZZLORD 799 +#define SPECIES_NECROZMA 800 +#define SPECIES_MAGEARNA 801 +#define SPECIES_MARSHADOW 802 +#define SPECIES_POIPOLE 803 +#define SPECIES_NAGANADEL 804 +#define SPECIES_STAKATAKA 805 +#define SPECIES_BLACEPHALON 806 +#define SPECIES_ZERAORA 807 +#define SPECIES_MELTAN 808 +#define SPECIES_MELMETAL 809 +#define SPECIES_GROOKEY 810 +#define SPECIES_THWACKEY 811 +#define SPECIES_RILLABOOM 812 +#define SPECIES_SCORBUNNY 813 +#define SPECIES_RABOOT 814 +#define SPECIES_CINDERACE 815 +#define SPECIES_SOBBLE 816 +#define SPECIES_DRIZZILE 817 +#define SPECIES_INTELEON 818 +#define SPECIES_SKWOVET 819 +#define SPECIES_GREEDENT 820 +#define SPECIES_ROOKIDEE 821 +#define SPECIES_CORVISQUIRE 822 +#define SPECIES_CORVIKNIGHT 823 +#define SPECIES_BLIPBUG 824 +#define SPECIES_DOTTLER 825 +#define SPECIES_ORBEETLE 826 +#define SPECIES_NICKIT 827 +#define SPECIES_THIEVUL 828 +#define SPECIES_GOSSIFLEUR 829 +#define SPECIES_ELDEGOSS 830 +#define SPECIES_WOOLOO 831 +#define SPECIES_DUBWOOL 832 +#define SPECIES_CHEWTLE 833 +#define SPECIES_DREDNAW 834 +#define SPECIES_YAMPER 835 +#define SPECIES_BOLTUND 836 +#define SPECIES_ROLYCOLY 837 +#define SPECIES_CARKOL 838 +#define SPECIES_COALOSSAL 839 +#define SPECIES_APPLIN 840 +#define SPECIES_FLAPPLE 841 +#define SPECIES_APPLETUN 842 +#define SPECIES_SILICOBRA 843 +#define SPECIES_SANDACONDA 844 +#define SPECIES_CRAMORANT 845 +#define SPECIES_ARROKUDA 846 +#define SPECIES_BARRASKEWDA 847 +#define SPECIES_TOXEL 848 +#define SPECIES_TOXTRICITY SPECIES_TOXTRICITY_AMPED +#define SPECIES_TOXTRICITY_AMPED 849 +#define SPECIES_SIZZLIPEDE 850 +#define SPECIES_CENTISKORCH 851 +#define SPECIES_CLOBBOPUS 852 +#define SPECIES_GRAPPLOCT 853 +#define SPECIES_SINISTEA SPECIES_SINISTEA_PHONY +#define SPECIES_SINISTEA_PHONY 854 +#define SPECIES_POLTEAGEIST SPECIES_POLTEAGEIST_PHONY +#define SPECIES_POLTEAGEIST_PHONY 855 +#define SPECIES_HATENNA 856 +#define SPECIES_HATTREM 857 +#define SPECIES_HATTERENE 858 +#define SPECIES_IMPIDIMP 859 +#define SPECIES_MORGREM 860 +#define SPECIES_GRIMMSNARL 861 +#define SPECIES_OBSTAGOON 862 +#define SPECIES_PERRSERKER 863 +#define SPECIES_CURSOLA 864 +#define SPECIES_SIRFETCHD 865 +#define SPECIES_MR_RIME 866 +#define SPECIES_RUNERIGUS 867 +#define SPECIES_MILCERY 868 +#define SPECIES_ALCREMIE SPECIES_ALCREMIE_STRAWBERRY +#define SPECIES_ALCREMIE_STRAWBERRY SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM +#define SPECIES_ALCREMIE_VANILLA_CREAM SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM +#define SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM 869 +#define SPECIES_FALINKS 870 +#define SPECIES_PINCURCHIN 871 +#define SPECIES_SNOM 872 +#define SPECIES_FROSMOTH 873 +#define SPECIES_STONJOURNER 874 +#define SPECIES_EISCUE SPECIES_EISCUE_ICE_FACE +#define SPECIES_EISCUE_ICE_FACE 875 +#define SPECIES_INDEEDEE SPECIES_INDEEDEE_MALE +#define SPECIES_INDEEDEE_MALE 876 +#define SPECIES_MORPEKO SPECIES_MORPEKO_FULL_BELLY +#define SPECIES_MORPEKO_FULL_BELLY 877 +#define SPECIES_CUFANT 878 +#define SPECIES_COPPERAJAH 879 +#define SPECIES_DRACOZOLT 880 +#define SPECIES_ARCTOZOLT 881 +#define SPECIES_DRACOVISH 882 +#define SPECIES_ARCTOVISH 883 +#define SPECIES_DURALUDON 884 +#define SPECIES_DREEPY 885 +#define SPECIES_DRAKLOAK 886 +#define SPECIES_DRAGAPULT 887 +#define SPECIES_ZACIAN SPECIES_ZACIAN_HERO_OF_MANY_BATTLES +#define SPECIES_ZACIAN_HERO_OF_MANY_BATTLES 888 +#define SPECIES_ZAMAZENTA SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES +#define SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES 889 +#define SPECIES_ETERNATUS 890 +#define SPECIES_KUBFU 891 +#define SPECIES_URSHIFU SPECIES_URSHIFU_SINGLE_STRIKE_STYLE +#define SPECIES_URSHIFU_SINGLE_STRIKE_STYLE 892 +#define SPECIES_ZARUDE 893 +#define SPECIES_REGIELEKI 894 +#define SPECIES_REGIDRAGO 895 +#define SPECIES_GLASTRIER 896 +#define SPECIES_SPECTRIER 897 +#define SPECIES_CALYREX 898 +#define SPECIES_WYRDEER 899 +#define SPECIES_KLEAVOR 900 +#define SPECIES_URSALUNA 901 +#define SPECIES_BASCULEGION SPECIES_BASCULEGION_MALE +#define SPECIES_BASCULEGION_MALE 902 +#define SPECIES_SNEASLER 903 +#define SPECIES_OVERQWIL 904 +#define SPECIES_ENAMORUS SPECIES_ENAMORUS_INCARNATE +#define SPECIES_ENAMORUS_INCARNATE 905 + +#define FORMS_START SPECIES_ENAMORUS_INCARNATE // Megas -#define SPECIES_VENUSAUR_MEGA FORMS_START + 1 -#define SPECIES_CHARIZARD_MEGA_X FORMS_START + 2 -#define SPECIES_CHARIZARD_MEGA_Y FORMS_START + 3 -#define SPECIES_BLASTOISE_MEGA FORMS_START + 4 -#define SPECIES_BEEDRILL_MEGA FORMS_START + 5 -#define SPECIES_PIDGEOT_MEGA FORMS_START + 6 -#define SPECIES_ALAKAZAM_MEGA FORMS_START + 7 -#define SPECIES_SLOWBRO_MEGA FORMS_START + 8 -#define SPECIES_GENGAR_MEGA FORMS_START + 9 -#define SPECIES_KANGASKHAN_MEGA FORMS_START + 10 -#define SPECIES_PINSIR_MEGA FORMS_START + 11 -#define SPECIES_GYARADOS_MEGA FORMS_START + 12 -#define SPECIES_AERODACTYL_MEGA FORMS_START + 13 -#define SPECIES_MEWTWO_MEGA_X FORMS_START + 14 -#define SPECIES_MEWTWO_MEGA_Y FORMS_START + 15 -#define SPECIES_AMPHAROS_MEGA FORMS_START + 16 -#define SPECIES_STEELIX_MEGA FORMS_START + 17 -#define SPECIES_SCIZOR_MEGA FORMS_START + 18 -#define SPECIES_HERACROSS_MEGA FORMS_START + 19 -#define SPECIES_HOUNDOOM_MEGA FORMS_START + 20 -#define SPECIES_TYRANITAR_MEGA FORMS_START + 21 -#define SPECIES_SCEPTILE_MEGA FORMS_START + 22 -#define SPECIES_BLAZIKEN_MEGA FORMS_START + 23 -#define SPECIES_SWAMPERT_MEGA FORMS_START + 24 -#define SPECIES_GARDEVOIR_MEGA FORMS_START + 25 -#define SPECIES_SABLEYE_MEGA FORMS_START + 26 -#define SPECIES_MAWILE_MEGA FORMS_START + 27 -#define SPECIES_AGGRON_MEGA FORMS_START + 28 -#define SPECIES_MEDICHAM_MEGA FORMS_START + 29 -#define SPECIES_MANECTRIC_MEGA FORMS_START + 30 -#define SPECIES_SHARPEDO_MEGA FORMS_START + 31 -#define SPECIES_CAMERUPT_MEGA FORMS_START + 32 -#define SPECIES_ALTARIA_MEGA FORMS_START + 33 -#define SPECIES_BANETTE_MEGA FORMS_START + 34 -#define SPECIES_ABSOL_MEGA FORMS_START + 35 -#define SPECIES_GLALIE_MEGA FORMS_START + 36 -#define SPECIES_SALAMENCE_MEGA FORMS_START + 37 -#define SPECIES_METAGROSS_MEGA FORMS_START + 38 -#define SPECIES_LATIAS_MEGA FORMS_START + 39 -#define SPECIES_LATIOS_MEGA FORMS_START + 40 -#define SPECIES_LOPUNNY_MEGA FORMS_START + 41 -#define SPECIES_GARCHOMP_MEGA FORMS_START + 42 -#define SPECIES_LUCARIO_MEGA FORMS_START + 43 -#define SPECIES_ABOMASNOW_MEGA FORMS_START + 44 -#define SPECIES_GALLADE_MEGA FORMS_START + 45 -#define SPECIES_AUDINO_MEGA FORMS_START + 46 -#define SPECIES_DIANCIE_MEGA FORMS_START + 47 +#define SPECIES_VENUSAUR_MEGA FORMS_START + 1 +#define SPECIES_CHARIZARD_MEGA_X FORMS_START + 2 +#define SPECIES_CHARIZARD_MEGA_Y FORMS_START + 3 +#define SPECIES_BLASTOISE_MEGA FORMS_START + 4 +#define SPECIES_BEEDRILL_MEGA FORMS_START + 5 +#define SPECIES_PIDGEOT_MEGA FORMS_START + 6 +#define SPECIES_ALAKAZAM_MEGA FORMS_START + 7 +#define SPECIES_SLOWBRO_MEGA FORMS_START + 8 +#define SPECIES_GENGAR_MEGA FORMS_START + 9 +#define SPECIES_KANGASKHAN_MEGA FORMS_START + 10 +#define SPECIES_PINSIR_MEGA FORMS_START + 11 +#define SPECIES_GYARADOS_MEGA FORMS_START + 12 +#define SPECIES_AERODACTYL_MEGA FORMS_START + 13 +#define SPECIES_MEWTWO_MEGA_X FORMS_START + 14 +#define SPECIES_MEWTWO_MEGA_Y FORMS_START + 15 +#define SPECIES_AMPHAROS_MEGA FORMS_START + 16 +#define SPECIES_STEELIX_MEGA FORMS_START + 17 +#define SPECIES_SCIZOR_MEGA FORMS_START + 18 +#define SPECIES_HERACROSS_MEGA FORMS_START + 19 +#define SPECIES_HOUNDOOM_MEGA FORMS_START + 20 +#define SPECIES_TYRANITAR_MEGA FORMS_START + 21 +#define SPECIES_SCEPTILE_MEGA FORMS_START + 22 +#define SPECIES_BLAZIKEN_MEGA FORMS_START + 23 +#define SPECIES_SWAMPERT_MEGA FORMS_START + 24 +#define SPECIES_GARDEVOIR_MEGA FORMS_START + 25 +#define SPECIES_SABLEYE_MEGA FORMS_START + 26 +#define SPECIES_MAWILE_MEGA FORMS_START + 27 +#define SPECIES_AGGRON_MEGA FORMS_START + 28 +#define SPECIES_MEDICHAM_MEGA FORMS_START + 29 +#define SPECIES_MANECTRIC_MEGA FORMS_START + 30 +#define SPECIES_SHARPEDO_MEGA FORMS_START + 31 +#define SPECIES_CAMERUPT_MEGA FORMS_START + 32 +#define SPECIES_ALTARIA_MEGA FORMS_START + 33 +#define SPECIES_BANETTE_MEGA FORMS_START + 34 +#define SPECIES_ABSOL_MEGA FORMS_START + 35 +#define SPECIES_GLALIE_MEGA FORMS_START + 36 +#define SPECIES_SALAMENCE_MEGA FORMS_START + 37 +#define SPECIES_METAGROSS_MEGA FORMS_START + 38 +#define SPECIES_LATIAS_MEGA FORMS_START + 39 +#define SPECIES_LATIOS_MEGA FORMS_START + 40 +#define SPECIES_LOPUNNY_MEGA FORMS_START + 41 +#define SPECIES_GARCHOMP_MEGA FORMS_START + 42 +#define SPECIES_LUCARIO_MEGA FORMS_START + 43 +#define SPECIES_ABOMASNOW_MEGA FORMS_START + 44 +#define SPECIES_GALLADE_MEGA FORMS_START + 45 +#define SPECIES_AUDINO_MEGA FORMS_START + 46 +#define SPECIES_DIANCIE_MEGA FORMS_START + 47 // Special Mega + Primals -#define SPECIES_RAYQUAZA_MEGA FORMS_START + 48 -#define SPECIES_KYOGRE_PRIMAL FORMS_START + 49 -#define SPECIES_GROUDON_PRIMAL FORMS_START + 50 +#define SPECIES_RAYQUAZA_MEGA FORMS_START + 48 +#define SPECIES_KYOGRE_PRIMAL FORMS_START + 49 +#define SPECIES_GROUDON_PRIMAL FORMS_START + 50 // Alolan Forms -#define SPECIES_RATTATA_ALOLAN FORMS_START + 51 -#define SPECIES_RATICATE_ALOLAN FORMS_START + 52 -#define SPECIES_RAICHU_ALOLAN FORMS_START + 53 -#define SPECIES_SANDSHREW_ALOLAN FORMS_START + 54 -#define SPECIES_SANDSLASH_ALOLAN FORMS_START + 55 -#define SPECIES_VULPIX_ALOLAN FORMS_START + 56 -#define SPECIES_NINETALES_ALOLAN FORMS_START + 57 -#define SPECIES_DIGLETT_ALOLAN FORMS_START + 58 -#define SPECIES_DUGTRIO_ALOLAN FORMS_START + 59 -#define SPECIES_MEOWTH_ALOLAN FORMS_START + 60 -#define SPECIES_PERSIAN_ALOLAN FORMS_START + 61 -#define SPECIES_GEODUDE_ALOLAN FORMS_START + 62 -#define SPECIES_GRAVELER_ALOLAN FORMS_START + 63 -#define SPECIES_GOLEM_ALOLAN FORMS_START + 64 -#define SPECIES_GRIMER_ALOLAN FORMS_START + 65 -#define SPECIES_MUK_ALOLAN FORMS_START + 66 -#define SPECIES_EXEGGUTOR_ALOLAN FORMS_START + 67 -#define SPECIES_MAROWAK_ALOLAN FORMS_START + 68 +#define SPECIES_RATTATA_ALOLAN FORMS_START + 51 +#define SPECIES_RATICATE_ALOLAN FORMS_START + 52 +#define SPECIES_RAICHU_ALOLAN FORMS_START + 53 +#define SPECIES_SANDSHREW_ALOLAN FORMS_START + 54 +#define SPECIES_SANDSLASH_ALOLAN FORMS_START + 55 +#define SPECIES_VULPIX_ALOLAN FORMS_START + 56 +#define SPECIES_NINETALES_ALOLAN FORMS_START + 57 +#define SPECIES_DIGLETT_ALOLAN FORMS_START + 58 +#define SPECIES_DUGTRIO_ALOLAN FORMS_START + 59 +#define SPECIES_MEOWTH_ALOLAN FORMS_START + 60 +#define SPECIES_PERSIAN_ALOLAN FORMS_START + 61 +#define SPECIES_GEODUDE_ALOLAN FORMS_START + 62 +#define SPECIES_GRAVELER_ALOLAN FORMS_START + 63 +#define SPECIES_GOLEM_ALOLAN FORMS_START + 64 +#define SPECIES_GRIMER_ALOLAN FORMS_START + 65 +#define SPECIES_MUK_ALOLAN FORMS_START + 66 +#define SPECIES_EXEGGUTOR_ALOLAN FORMS_START + 67 +#define SPECIES_MAROWAK_ALOLAN FORMS_START + 68 // Galarian Forms -#define SPECIES_MEOWTH_GALARIAN FORMS_START + 69 -#define SPECIES_PONYTA_GALARIAN FORMS_START + 70 -#define SPECIES_RAPIDASH_GALARIAN FORMS_START + 71 -#define SPECIES_SLOWPOKE_GALARIAN FORMS_START + 72 -#define SPECIES_SLOWBRO_GALARIAN FORMS_START + 73 -#define SPECIES_FARFETCHD_GALARIAN FORMS_START + 74 -#define SPECIES_WEEZING_GALARIAN FORMS_START + 75 -#define SPECIES_MR_MIME_GALARIAN FORMS_START + 76 -#define SPECIES_ARTICUNO_GALARIAN FORMS_START + 77 -#define SPECIES_ZAPDOS_GALARIAN FORMS_START + 78 -#define SPECIES_MOLTRES_GALARIAN FORMS_START + 79 -#define SPECIES_SLOWKING_GALARIAN FORMS_START + 80 -#define SPECIES_CORSOLA_GALARIAN FORMS_START + 81 -#define SPECIES_ZIGZAGOON_GALARIAN FORMS_START + 82 -#define SPECIES_LINOONE_GALARIAN FORMS_START + 83 -#define SPECIES_DARUMAKA_GALARIAN FORMS_START + 84 -#define SPECIES_DARMANITAN_GALARIAN FORMS_START + 85 -#define SPECIES_YAMASK_GALARIAN FORMS_START + 86 -#define SPECIES_STUNFISK_GALARIAN FORMS_START + 87 +#define SPECIES_MEOWTH_GALARIAN FORMS_START + 69 +#define SPECIES_PONYTA_GALARIAN FORMS_START + 70 +#define SPECIES_RAPIDASH_GALARIAN FORMS_START + 71 +#define SPECIES_SLOWPOKE_GALARIAN FORMS_START + 72 +#define SPECIES_SLOWBRO_GALARIAN FORMS_START + 73 +#define SPECIES_FARFETCHD_GALARIAN FORMS_START + 74 +#define SPECIES_WEEZING_GALARIAN FORMS_START + 75 +#define SPECIES_MR_MIME_GALARIAN FORMS_START + 76 +#define SPECIES_ARTICUNO_GALARIAN FORMS_START + 77 +#define SPECIES_ZAPDOS_GALARIAN FORMS_START + 78 +#define SPECIES_MOLTRES_GALARIAN FORMS_START + 79 +#define SPECIES_SLOWKING_GALARIAN FORMS_START + 80 +#define SPECIES_CORSOLA_GALARIAN FORMS_START + 81 +#define SPECIES_ZIGZAGOON_GALARIAN FORMS_START + 82 +#define SPECIES_LINOONE_GALARIAN FORMS_START + 83 +#define SPECIES_DARUMAKA_GALARIAN FORMS_START + 84 +#define SPECIES_DARMANITAN_GALARIAN SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE +#define SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE FORMS_START + 85 +#define SPECIES_YAMASK_GALARIAN FORMS_START + 86 +#define SPECIES_STUNFISK_GALARIAN FORMS_START + 87 //Hisuian Forms -#define SPECIES_GROWLITHE_HISUIAN FORMS_START + 88 -#define SPECIES_ARCANINE_HISUIAN FORMS_START + 89 -#define SPECIES_VOLTORB_HISUIAN FORMS_START + 90 -#define SPECIES_ELECTRODE_HISUIAN FORMS_START + 91 -#define SPECIES_TYPHLOSION_HISUIAN FORMS_START + 92 -#define SPECIES_QWILFISH_HISUIAN FORMS_START + 93 -#define SPECIES_SNEASEL_HISUIAN FORMS_START + 94 -#define SPECIES_SAMUROTT_HISUIAN FORMS_START + 95 -#define SPECIES_LILLIGANT_HISUIAN FORMS_START + 96 -#define SPECIES_ZORUA_HISUIAN FORMS_START + 97 -#define SPECIES_ZOROARK_HISUIAN FORMS_START + 98 -#define SPECIES_BRAVIARY_HISUIAN FORMS_START + 99 -#define SPECIES_SLIGGOO_HISUIAN FORMS_START + 100 -#define SPECIES_GOODRA_HISUIAN FORMS_START + 101 -#define SPECIES_AVALUGG_HISUIAN FORMS_START + 102 -#define SPECIES_DECIDUEYE_HISUIAN FORMS_START + 103 +#define SPECIES_GROWLITHE_HISUIAN FORMS_START + 88 +#define SPECIES_ARCANINE_HISUIAN FORMS_START + 89 +#define SPECIES_VOLTORB_HISUIAN FORMS_START + 90 +#define SPECIES_ELECTRODE_HISUIAN FORMS_START + 91 +#define SPECIES_TYPHLOSION_HISUIAN FORMS_START + 92 +#define SPECIES_QWILFISH_HISUIAN FORMS_START + 93 +#define SPECIES_SNEASEL_HISUIAN FORMS_START + 94 +#define SPECIES_SAMUROTT_HISUIAN FORMS_START + 95 +#define SPECIES_LILLIGANT_HISUIAN FORMS_START + 96 +#define SPECIES_ZORUA_HISUIAN FORMS_START + 97 +#define SPECIES_ZOROARK_HISUIAN FORMS_START + 98 +#define SPECIES_BRAVIARY_HISUIAN FORMS_START + 99 +#define SPECIES_SLIGGOO_HISUIAN FORMS_START + 100 +#define SPECIES_GOODRA_HISUIAN FORMS_START + 101 +#define SPECIES_AVALUGG_HISUIAN FORMS_START + 102 +#define SPECIES_DECIDUEYE_HISUIAN FORMS_START + 103 // Misc Forms // Cosplay Pikachu -#define SPECIES_PIKACHU_COSPLAY FORMS_START + 104 -#define SPECIES_PIKACHU_ROCK_STAR FORMS_START + 105 -#define SPECIES_PIKACHU_BELLE FORMS_START + 106 -#define SPECIES_PIKACHU_POP_STAR FORMS_START + 107 -#define SPECIES_PIKACHU_PH_D FORMS_START + 108 -#define SPECIES_PIKACHU_LIBRE FORMS_START + 109 +#define SPECIES_PIKACHU_COSPLAY FORMS_START + 104 +#define SPECIES_PIKACHU_ROCK_STAR FORMS_START + 105 +#define SPECIES_PIKACHU_BELLE FORMS_START + 106 +#define SPECIES_PIKACHU_POP_STAR FORMS_START + 107 +#define SPECIES_PIKACHU_PH_D FORMS_START + 108 +#define SPECIES_PIKACHU_LIBRE FORMS_START + 109 // Cap Pikachu -#define SPECIES_PIKACHU_ORIGINAL_CAP FORMS_START + 110 -#define SPECIES_PIKACHU_HOENN_CAP FORMS_START + 111 -#define SPECIES_PIKACHU_SINNOH_CAP FORMS_START + 112 -#define SPECIES_PIKACHU_UNOVA_CAP FORMS_START + 113 -#define SPECIES_PIKACHU_KALOS_CAP FORMS_START + 114 -#define SPECIES_PIKACHU_ALOLA_CAP FORMS_START + 115 -#define SPECIES_PIKACHU_PARTNER_CAP FORMS_START + 116 -#define SPECIES_PIKACHU_WORLD_CAP FORMS_START + 117 +#define SPECIES_PIKACHU_ORIGINAL_CAP FORMS_START + 110 +#define SPECIES_PIKACHU_HOENN_CAP FORMS_START + 111 +#define SPECIES_PIKACHU_SINNOH_CAP FORMS_START + 112 +#define SPECIES_PIKACHU_UNOVA_CAP FORMS_START + 113 +#define SPECIES_PIKACHU_KALOS_CAP FORMS_START + 114 +#define SPECIES_PIKACHU_ALOLA_CAP FORMS_START + 115 +#define SPECIES_PIKACHU_PARTNER_CAP FORMS_START + 116 +#define SPECIES_PIKACHU_WORLD_CAP FORMS_START + 117 // Pichu -#define SPECIES_PICHU_SPIKY_EARED FORMS_START + 118 +#define SPECIES_PICHU_SPIKY_EARED FORMS_START + 118 // Unown -#define SPECIES_UNOWN_B FORMS_START + 119 -#define SPECIES_UNOWN_C FORMS_START + 120 -#define SPECIES_UNOWN_D FORMS_START + 121 -#define SPECIES_UNOWN_E FORMS_START + 122 -#define SPECIES_UNOWN_F FORMS_START + 123 -#define SPECIES_UNOWN_G FORMS_START + 124 -#define SPECIES_UNOWN_H FORMS_START + 125 -#define SPECIES_UNOWN_I FORMS_START + 126 -#define SPECIES_UNOWN_J FORMS_START + 127 -#define SPECIES_UNOWN_K FORMS_START + 128 -#define SPECIES_UNOWN_L FORMS_START + 129 -#define SPECIES_UNOWN_M FORMS_START + 130 -#define SPECIES_UNOWN_N FORMS_START + 131 -#define SPECIES_UNOWN_O FORMS_START + 132 -#define SPECIES_UNOWN_P FORMS_START + 133 -#define SPECIES_UNOWN_Q FORMS_START + 134 -#define SPECIES_UNOWN_R FORMS_START + 135 -#define SPECIES_UNOWN_S FORMS_START + 136 -#define SPECIES_UNOWN_T FORMS_START + 137 -#define SPECIES_UNOWN_U FORMS_START + 138 -#define SPECIES_UNOWN_V FORMS_START + 139 -#define SPECIES_UNOWN_W FORMS_START + 140 -#define SPECIES_UNOWN_X FORMS_START + 141 -#define SPECIES_UNOWN_Y FORMS_START + 142 -#define SPECIES_UNOWN_Z FORMS_START + 143 -#define SPECIES_UNOWN_EMARK FORMS_START + 144 -#define SPECIES_UNOWN_QMARK FORMS_START + 145 +#define SPECIES_UNOWN_B FORMS_START + 119 +#define SPECIES_UNOWN_C FORMS_START + 120 +#define SPECIES_UNOWN_D FORMS_START + 121 +#define SPECIES_UNOWN_E FORMS_START + 122 +#define SPECIES_UNOWN_F FORMS_START + 123 +#define SPECIES_UNOWN_G FORMS_START + 124 +#define SPECIES_UNOWN_H FORMS_START + 125 +#define SPECIES_UNOWN_I FORMS_START + 126 +#define SPECIES_UNOWN_J FORMS_START + 127 +#define SPECIES_UNOWN_K FORMS_START + 128 +#define SPECIES_UNOWN_L FORMS_START + 129 +#define SPECIES_UNOWN_M FORMS_START + 130 +#define SPECIES_UNOWN_N FORMS_START + 131 +#define SPECIES_UNOWN_O FORMS_START + 132 +#define SPECIES_UNOWN_P FORMS_START + 133 +#define SPECIES_UNOWN_Q FORMS_START + 134 +#define SPECIES_UNOWN_R FORMS_START + 135 +#define SPECIES_UNOWN_S FORMS_START + 136 +#define SPECIES_UNOWN_T FORMS_START + 137 +#define SPECIES_UNOWN_U FORMS_START + 138 +#define SPECIES_UNOWN_V FORMS_START + 139 +#define SPECIES_UNOWN_W FORMS_START + 140 +#define SPECIES_UNOWN_X FORMS_START + 141 +#define SPECIES_UNOWN_Y FORMS_START + 142 +#define SPECIES_UNOWN_Z FORMS_START + 143 +#define SPECIES_UNOWN_EMARK FORMS_START + 144 +#define SPECIES_UNOWN_QMARK FORMS_START + 145 // Castform -#define SPECIES_CASTFORM_SUNNY FORMS_START + 146 -#define SPECIES_CASTFORM_RAINY FORMS_START + 147 -#define SPECIES_CASTFORM_SNOWY FORMS_START + 148 +#define SPECIES_CASTFORM_SUNNY FORMS_START + 146 +#define SPECIES_CASTFORM_RAINY FORMS_START + 147 +#define SPECIES_CASTFORM_SNOWY FORMS_START + 148 // Deoxys -#define SPECIES_DEOXYS_ATTACK FORMS_START + 149 -#define SPECIES_DEOXYS_DEFENSE FORMS_START + 150 -#define SPECIES_DEOXYS_SPEED FORMS_START + 151 +#define SPECIES_DEOXYS_ATTACK FORMS_START + 149 +#define SPECIES_DEOXYS_DEFENSE FORMS_START + 150 +#define SPECIES_DEOXYS_SPEED FORMS_START + 151 // Burmy -#define SPECIES_BURMY_SANDY_CLOAK FORMS_START + 152 -#define SPECIES_BURMY_TRASH_CLOAK FORMS_START + 153 +#define SPECIES_BURMY_SANDY_CLOAK FORMS_START + 152 +#define SPECIES_BURMY_TRASH_CLOAK FORMS_START + 153 // Wormadam -#define SPECIES_WORMADAM_SANDY_CLOAK FORMS_START + 154 -#define SPECIES_WORMADAM_TRASH_CLOAK FORMS_START + 155 +#define SPECIES_WORMADAM_SANDY_CLOAK FORMS_START + 154 +#define SPECIES_WORMADAM_TRASH_CLOAK FORMS_START + 155 // Cherrim -#define SPECIES_CHERRIM_SUNSHINE FORMS_START + 156 +#define SPECIES_CHERRIM_SUNSHINE FORMS_START + 156 // Shellos -#define SPECIES_SHELLOS_EAST_SEA FORMS_START + 157 +#define SPECIES_SHELLOS_EAST_SEA FORMS_START + 157 // Gastrodon -#define SPECIES_GASTRODON_EAST_SEA FORMS_START + 158 +#define SPECIES_GASTRODON_EAST_SEA FORMS_START + 158 // Rotom -#define SPECIES_ROTOM_HEAT FORMS_START + 159 -#define SPECIES_ROTOM_WASH FORMS_START + 160 -#define SPECIES_ROTOM_FROST FORMS_START + 161 -#define SPECIES_ROTOM_FAN FORMS_START + 162 -#define SPECIES_ROTOM_MOW FORMS_START + 163 +#define SPECIES_ROTOM_HEAT FORMS_START + 159 +#define SPECIES_ROTOM_WASH FORMS_START + 160 +#define SPECIES_ROTOM_FROST FORMS_START + 161 +#define SPECIES_ROTOM_FAN FORMS_START + 162 +#define SPECIES_ROTOM_MOW FORMS_START + 163 // Origin Forme -#define SPECIES_DIALGA_ORIGIN FORMS_START + 164 -#define SPECIES_PALKIA_ORIGIN FORMS_START + 165 -#define SPECIES_GIRATINA_ORIGIN FORMS_START + 166 +#define SPECIES_DIALGA_ORIGIN FORMS_START + 164 +#define SPECIES_PALKIA_ORIGIN FORMS_START + 165 +#define SPECIES_GIRATINA_ORIGIN FORMS_START + 166 // Shaymin -#define SPECIES_SHAYMIN_SKY FORMS_START + 167 +#define SPECIES_SHAYMIN_SKY FORMS_START + 167 // Arceus -#define SPECIES_ARCEUS_FIGHTING FORMS_START + 168 -#define SPECIES_ARCEUS_FLYING FORMS_START + 169 -#define SPECIES_ARCEUS_POISON FORMS_START + 170 -#define SPECIES_ARCEUS_GROUND FORMS_START + 171 -#define SPECIES_ARCEUS_ROCK FORMS_START + 172 -#define SPECIES_ARCEUS_BUG FORMS_START + 173 -#define SPECIES_ARCEUS_GHOST FORMS_START + 174 -#define SPECIES_ARCEUS_STEEL FORMS_START + 175 -#define SPECIES_ARCEUS_FIRE FORMS_START + 176 -#define SPECIES_ARCEUS_WATER FORMS_START + 177 -#define SPECIES_ARCEUS_GRASS FORMS_START + 178 -#define SPECIES_ARCEUS_ELECTRIC FORMS_START + 179 -#define SPECIES_ARCEUS_PSYCHIC FORMS_START + 180 -#define SPECIES_ARCEUS_ICE FORMS_START + 181 -#define SPECIES_ARCEUS_DRAGON FORMS_START + 182 -#define SPECIES_ARCEUS_DARK FORMS_START + 183 -#define SPECIES_ARCEUS_FAIRY FORMS_START + 184 +#define SPECIES_ARCEUS_FIGHTING FORMS_START + 168 +#define SPECIES_ARCEUS_FLYING FORMS_START + 169 +#define SPECIES_ARCEUS_POISON FORMS_START + 170 +#define SPECIES_ARCEUS_GROUND FORMS_START + 171 +#define SPECIES_ARCEUS_ROCK FORMS_START + 172 +#define SPECIES_ARCEUS_BUG FORMS_START + 173 +#define SPECIES_ARCEUS_GHOST FORMS_START + 174 +#define SPECIES_ARCEUS_STEEL FORMS_START + 175 +#define SPECIES_ARCEUS_FIRE FORMS_START + 176 +#define SPECIES_ARCEUS_WATER FORMS_START + 177 +#define SPECIES_ARCEUS_GRASS FORMS_START + 178 +#define SPECIES_ARCEUS_ELECTRIC FORMS_START + 179 +#define SPECIES_ARCEUS_PSYCHIC FORMS_START + 180 +#define SPECIES_ARCEUS_ICE FORMS_START + 181 +#define SPECIES_ARCEUS_DRAGON FORMS_START + 182 +#define SPECIES_ARCEUS_DARK FORMS_START + 183 +#define SPECIES_ARCEUS_FAIRY FORMS_START + 184 // Basculin -#define SPECIES_BASCULIN_BLUE_STRIPED FORMS_START + 185 -#define SPECIES_BASCULIN_WHITE_STRIPED FORMS_START + 186 +#define SPECIES_BASCULIN_BLUE_STRIPED FORMS_START + 185 +#define SPECIES_BASCULIN_WHITE_STRIPED FORMS_START + 186 // Darmanitan -#define SPECIES_DARMANITAN_ZEN_MODE FORMS_START + 187 -#define SPECIES_DARMANITAN_ZEN_MODE_GALARIAN FORMS_START + 188 +#define SPECIES_DARMANITAN_ZEN_MODE FORMS_START + 187 +#define SPECIES_DARMANITAN_GALARIAN_ZEN_MODE FORMS_START + 188 // Deerling -#define SPECIES_DEERLING_SUMMER FORMS_START + 189 -#define SPECIES_DEERLING_AUTUMN FORMS_START + 190 -#define SPECIES_DEERLING_WINTER FORMS_START + 191 +#define SPECIES_DEERLING_SUMMER FORMS_START + 189 +#define SPECIES_DEERLING_AUTUMN FORMS_START + 190 +#define SPECIES_DEERLING_WINTER FORMS_START + 191 // Sawsbuck -#define SPECIES_SAWSBUCK_SUMMER FORMS_START + 192 -#define SPECIES_SAWSBUCK_AUTUMN FORMS_START + 193 -#define SPECIES_SAWSBUCK_WINTER FORMS_START + 194 +#define SPECIES_SAWSBUCK_SUMMER FORMS_START + 192 +#define SPECIES_SAWSBUCK_AUTUMN FORMS_START + 193 +#define SPECIES_SAWSBUCK_WINTER FORMS_START + 194 // Therian Forms -#define SPECIES_TORNADUS_THERIAN FORMS_START + 195 -#define SPECIES_THUNDURUS_THERIAN FORMS_START + 196 -#define SPECIES_LANDORUS_THERIAN FORMS_START + 197 -#define SPECIES_ENAMORUS_THERIAN FORMS_START + 198 +#define SPECIES_TORNADUS_THERIAN FORMS_START + 195 +#define SPECIES_THUNDURUS_THERIAN FORMS_START + 196 +#define SPECIES_LANDORUS_THERIAN FORMS_START + 197 +#define SPECIES_ENAMORUS_THERIAN FORMS_START + 198 // Kyurem -#define SPECIES_KYUREM_WHITE FORMS_START + 199 -#define SPECIES_KYUREM_BLACK FORMS_START + 200 +#define SPECIES_KYUREM_WHITE FORMS_START + 199 +#define SPECIES_KYUREM_BLACK FORMS_START + 200 // Keldeo -#define SPECIES_KELDEO_RESOLUTE FORMS_START + 201 +#define SPECIES_KELDEO_RESOLUTE FORMS_START + 201 // Meloetta -#define SPECIES_MELOETTA_PIROUETTE FORMS_START + 202 +#define SPECIES_MELOETTA_PIROUETTE FORMS_START + 202 // Genesect -#define SPECIES_GENESECT_DOUSE_DRIVE FORMS_START + 203 -#define SPECIES_GENESECT_SHOCK_DRIVE FORMS_START + 204 -#define SPECIES_GENESECT_BURN_DRIVE FORMS_START + 205 -#define SPECIES_GENESECT_CHILL_DRIVE FORMS_START + 206 +#define SPECIES_GENESECT_DOUSE_DRIVE FORMS_START + 203 +#define SPECIES_GENESECT_SHOCK_DRIVE FORMS_START + 204 +#define SPECIES_GENESECT_BURN_DRIVE FORMS_START + 205 +#define SPECIES_GENESECT_CHILL_DRIVE FORMS_START + 206 // Greninja -#define SPECIES_GRENINJA_BATTLE_BOND FORMS_START + 207 -#define SPECIES_GRENINJA_ASH FORMS_START + 208 +#define SPECIES_GRENINJA_BATTLE_BOND FORMS_START + 207 +#define SPECIES_GRENINJA_ASH FORMS_START + 208 // Vivillon -#define SPECIES_VIVILLON_POLAR FORMS_START + 209 -#define SPECIES_VIVILLON_TUNDRA FORMS_START + 210 -#define SPECIES_VIVILLON_CONTINENTAL FORMS_START + 211 -#define SPECIES_VIVILLON_GARDEN FORMS_START + 212 -#define SPECIES_VIVILLON_ELEGANT FORMS_START + 213 -#define SPECIES_VIVILLON_MEADOW FORMS_START + 214 -#define SPECIES_VIVILLON_MODERN FORMS_START + 215 -#define SPECIES_VIVILLON_MARINE FORMS_START + 216 -#define SPECIES_VIVILLON_ARCHIPELAGO FORMS_START + 217 -#define SPECIES_VIVILLON_HIGH_PLAINS FORMS_START + 218 -#define SPECIES_VIVILLON_SANDSTORM FORMS_START + 219 -#define SPECIES_VIVILLON_RIVER FORMS_START + 220 -#define SPECIES_VIVILLON_MONSOON FORMS_START + 221 -#define SPECIES_VIVILLON_SAVANNA FORMS_START + 222 -#define SPECIES_VIVILLON_SUN FORMS_START + 223 -#define SPECIES_VIVILLON_OCEAN FORMS_START + 224 -#define SPECIES_VIVILLON_JUNGLE FORMS_START + 225 -#define SPECIES_VIVILLON_FANCY FORMS_START + 226 -#define SPECIES_VIVILLON_POKE_BALL FORMS_START + 227 +#define SPECIES_VIVILLON_POLAR FORMS_START + 209 +#define SPECIES_VIVILLON_TUNDRA FORMS_START + 210 +#define SPECIES_VIVILLON_CONTINENTAL FORMS_START + 211 +#define SPECIES_VIVILLON_GARDEN FORMS_START + 212 +#define SPECIES_VIVILLON_ELEGANT FORMS_START + 213 +#define SPECIES_VIVILLON_MEADOW FORMS_START + 214 +#define SPECIES_VIVILLON_MODERN FORMS_START + 215 +#define SPECIES_VIVILLON_MARINE FORMS_START + 216 +#define SPECIES_VIVILLON_ARCHIPELAGO FORMS_START + 217 +#define SPECIES_VIVILLON_HIGH_PLAINS FORMS_START + 218 +#define SPECIES_VIVILLON_SANDSTORM FORMS_START + 219 +#define SPECIES_VIVILLON_RIVER FORMS_START + 220 +#define SPECIES_VIVILLON_MONSOON FORMS_START + 221 +#define SPECIES_VIVILLON_SAVANNA FORMS_START + 222 +#define SPECIES_VIVILLON_SUN FORMS_START + 223 +#define SPECIES_VIVILLON_OCEAN FORMS_START + 224 +#define SPECIES_VIVILLON_JUNGLE FORMS_START + 225 +#define SPECIES_VIVILLON_FANCY FORMS_START + 226 +#define SPECIES_VIVILLON_POKE_BALL FORMS_START + 227 // Flabébé -#define SPECIES_FLABEBE_YELLOW_FLOWER FORMS_START + 228 -#define SPECIES_FLABEBE_ORANGE_FLOWER FORMS_START + 229 -#define SPECIES_FLABEBE_BLUE_FLOWER FORMS_START + 230 -#define SPECIES_FLABEBE_WHITE_FLOWER FORMS_START + 231 +#define SPECIES_FLABEBE_YELLOW_FLOWER FORMS_START + 228 +#define SPECIES_FLABEBE_ORANGE_FLOWER FORMS_START + 229 +#define SPECIES_FLABEBE_BLUE_FLOWER FORMS_START + 230 +#define SPECIES_FLABEBE_WHITE_FLOWER FORMS_START + 231 // Floette -#define SPECIES_FLOETTE_YELLOW_FLOWER FORMS_START + 232 -#define SPECIES_FLOETTE_ORANGE_FLOWER FORMS_START + 233 -#define SPECIES_FLOETTE_BLUE_FLOWER FORMS_START + 234 -#define SPECIES_FLOETTE_WHITE_FLOWER FORMS_START + 235 -#define SPECIES_FLOETTE_ETERNAL_FLOWER FORMS_START + 236 +#define SPECIES_FLOETTE_YELLOW_FLOWER FORMS_START + 232 +#define SPECIES_FLOETTE_ORANGE_FLOWER FORMS_START + 233 +#define SPECIES_FLOETTE_BLUE_FLOWER FORMS_START + 234 +#define SPECIES_FLOETTE_WHITE_FLOWER FORMS_START + 235 +#define SPECIES_FLOETTE_ETERNAL_FLOWER FORMS_START + 236 // Florges -#define SPECIES_FLORGES_YELLOW_FLOWER FORMS_START + 237 -#define SPECIES_FLORGES_ORANGE_FLOWER FORMS_START + 238 -#define SPECIES_FLORGES_BLUE_FLOWER FORMS_START + 239 -#define SPECIES_FLORGES_WHITE_FLOWER FORMS_START + 240 +#define SPECIES_FLORGES_YELLOW_FLOWER FORMS_START + 237 +#define SPECIES_FLORGES_ORANGE_FLOWER FORMS_START + 238 +#define SPECIES_FLORGES_BLUE_FLOWER FORMS_START + 239 +#define SPECIES_FLORGES_WHITE_FLOWER FORMS_START + 240 // Furfrou -#define SPECIES_FURFROU_HEART_TRIM FORMS_START + 241 -#define SPECIES_FURFROU_STAR_TRIM FORMS_START + 242 -#define SPECIES_FURFROU_DIAMOND_TRIM FORMS_START + 243 -#define SPECIES_FURFROU_DEBUTANTE_TRIM FORMS_START + 244 -#define SPECIES_FURFROU_MATRON_TRIM FORMS_START + 245 -#define SPECIES_FURFROU_DANDY_TRIM FORMS_START + 246 -#define SPECIES_FURFROU_LA_REINE_TRIM FORMS_START + 247 -#define SPECIES_FURFROU_KABUKI_TRIM FORMS_START + 248 -#define SPECIES_FURFROU_PHARAOH_TRIM FORMS_START + 249 +#define SPECIES_FURFROU_HEART_TRIM FORMS_START + 241 +#define SPECIES_FURFROU_STAR_TRIM FORMS_START + 242 +#define SPECIES_FURFROU_DIAMOND_TRIM FORMS_START + 243 +#define SPECIES_FURFROU_DEBUTANTE_TRIM FORMS_START + 244 +#define SPECIES_FURFROU_MATRON_TRIM FORMS_START + 245 +#define SPECIES_FURFROU_DANDY_TRIM FORMS_START + 246 +#define SPECIES_FURFROU_LA_REINE_TRIM FORMS_START + 247 +#define SPECIES_FURFROU_KABUKI_TRIM FORMS_START + 248 +#define SPECIES_FURFROU_PHARAOH_TRIM FORMS_START + 249 // Meowstic -#define SPECIES_MEOWSTIC_FEMALE FORMS_START + 250 +#define SPECIES_MEOWSTIC_FEMALE FORMS_START + 250 // Aegislash -#define SPECIES_AEGISLASH_BLADE FORMS_START + 251 +#define SPECIES_AEGISLASH_BLADE FORMS_START + 251 // Pumpkaboo -#define SPECIES_PUMPKABOO_SMALL FORMS_START + 252 -#define SPECIES_PUMPKABOO_LARGE FORMS_START + 253 -#define SPECIES_PUMPKABOO_SUPER FORMS_START + 254 +#define SPECIES_PUMPKABOO_SMALL FORMS_START + 252 +#define SPECIES_PUMPKABOO_LARGE FORMS_START + 253 +#define SPECIES_PUMPKABOO_SUPER FORMS_START + 254 // Gourgeist -#define SPECIES_GOURGEIST_SMALL FORMS_START + 255 -#define SPECIES_GOURGEIST_LARGE FORMS_START + 256 -#define SPECIES_GOURGEIST_SUPER FORMS_START + 257 +#define SPECIES_GOURGEIST_SMALL FORMS_START + 255 +#define SPECIES_GOURGEIST_LARGE FORMS_START + 256 +#define SPECIES_GOURGEIST_SUPER FORMS_START + 257 // Xerneas -#define SPECIES_XERNEAS_ACTIVE FORMS_START + 258 +#define SPECIES_XERNEAS_ACTIVE FORMS_START + 258 // Zygarde -#define SPECIES_ZYGARDE_10 FORMS_START + 259 -#define SPECIES_ZYGARDE_10_POWER_CONSTRUCT FORMS_START + 260 -#define SPECIES_ZYGARDE_50_POWER_CONSTRUCT FORMS_START + 261 -#define SPECIES_ZYGARDE_COMPLETE FORMS_START + 262 +#define SPECIES_ZYGARDE_10 SPECIES_ZYGARDE_10_AURA_BREAK +#define SPECIES_ZYGARDE_10_AURA_BREAK FORMS_START + 259 +#define SPECIES_ZYGARDE_10_POWER_CONSTRUCT FORMS_START + 260 +#define SPECIES_ZYGARDE_50_POWER_CONSTRUCT FORMS_START + 261 +#define SPECIES_ZYGARDE_COMPLETE FORMS_START + 262 // Hoopa -#define SPECIES_HOOPA_UNBOUND FORMS_START + 263 +#define SPECIES_HOOPA_UNBOUND FORMS_START + 263 // Oricorio -#define SPECIES_ORICORIO_POM_POM FORMS_START + 264 -#define SPECIES_ORICORIO_PAU FORMS_START + 265 -#define SPECIES_ORICORIO_SENSU FORMS_START + 266 +#define SPECIES_ORICORIO_POM_POM FORMS_START + 264 +#define SPECIES_ORICORIO_PAU FORMS_START + 265 +#define SPECIES_ORICORIO_SENSU FORMS_START + 266 // Rockruff -#define SPECIES_ROCKRUFF_OWN_TEMPO FORMS_START + 267 +#define SPECIES_ROCKRUFF_OWN_TEMPO FORMS_START + 267 // Lycanroc -#define SPECIES_LYCANROC_MIDNIGHT FORMS_START + 268 -#define SPECIES_LYCANROC_DUSK FORMS_START + 269 +#define SPECIES_LYCANROC_MIDNIGHT FORMS_START + 268 +#define SPECIES_LYCANROC_DUSK FORMS_START + 269 // Wishiwashi -#define SPECIES_WISHIWASHI_SCHOOL FORMS_START + 270 +#define SPECIES_WISHIWASHI_SCHOOL FORMS_START + 270 // Silvally -#define SPECIES_SILVALLY_FIGHTING FORMS_START + 271 -#define SPECIES_SILVALLY_FLYING FORMS_START + 272 -#define SPECIES_SILVALLY_POISON FORMS_START + 273 -#define SPECIES_SILVALLY_GROUND FORMS_START + 274 -#define SPECIES_SILVALLY_ROCK FORMS_START + 275 -#define SPECIES_SILVALLY_BUG FORMS_START + 276 -#define SPECIES_SILVALLY_GHOST FORMS_START + 277 -#define SPECIES_SILVALLY_STEEL FORMS_START + 278 -#define SPECIES_SILVALLY_FIRE FORMS_START + 279 -#define SPECIES_SILVALLY_WATER FORMS_START + 280 -#define SPECIES_SILVALLY_GRASS FORMS_START + 281 -#define SPECIES_SILVALLY_ELECTRIC FORMS_START + 282 -#define SPECIES_SILVALLY_PSYCHIC FORMS_START + 283 -#define SPECIES_SILVALLY_ICE FORMS_START + 284 -#define SPECIES_SILVALLY_DRAGON FORMS_START + 285 -#define SPECIES_SILVALLY_DARK FORMS_START + 286 -#define SPECIES_SILVALLY_FAIRY FORMS_START + 287 +#define SPECIES_SILVALLY_FIGHTING FORMS_START + 271 +#define SPECIES_SILVALLY_FLYING FORMS_START + 272 +#define SPECIES_SILVALLY_POISON FORMS_START + 273 +#define SPECIES_SILVALLY_GROUND FORMS_START + 274 +#define SPECIES_SILVALLY_ROCK FORMS_START + 275 +#define SPECIES_SILVALLY_BUG FORMS_START + 276 +#define SPECIES_SILVALLY_GHOST FORMS_START + 277 +#define SPECIES_SILVALLY_STEEL FORMS_START + 278 +#define SPECIES_SILVALLY_FIRE FORMS_START + 279 +#define SPECIES_SILVALLY_WATER FORMS_START + 280 +#define SPECIES_SILVALLY_GRASS FORMS_START + 281 +#define SPECIES_SILVALLY_ELECTRIC FORMS_START + 282 +#define SPECIES_SILVALLY_PSYCHIC FORMS_START + 283 +#define SPECIES_SILVALLY_ICE FORMS_START + 284 +#define SPECIES_SILVALLY_DRAGON FORMS_START + 285 +#define SPECIES_SILVALLY_DARK FORMS_START + 286 +#define SPECIES_SILVALLY_FAIRY FORMS_START + 287 // Minior -#define SPECIES_MINIOR_METEOR_ORANGE FORMS_START + 288 -#define SPECIES_MINIOR_METEOR_YELLOW FORMS_START + 289 -#define SPECIES_MINIOR_METEOR_GREEN FORMS_START + 290 -#define SPECIES_MINIOR_METEOR_BLUE FORMS_START + 291 -#define SPECIES_MINIOR_METEOR_INDIGO FORMS_START + 292 -#define SPECIES_MINIOR_METEOR_VIOLET FORMS_START + 293 -#define SPECIES_MINIOR_CORE_RED FORMS_START + 294 -#define SPECIES_MINIOR_CORE_ORANGE FORMS_START + 295 -#define SPECIES_MINIOR_CORE_YELLOW FORMS_START + 296 -#define SPECIES_MINIOR_CORE_GREEN FORMS_START + 297 -#define SPECIES_MINIOR_CORE_BLUE FORMS_START + 298 -#define SPECIES_MINIOR_CORE_INDIGO FORMS_START + 299 -#define SPECIES_MINIOR_CORE_VIOLET FORMS_START + 300 +#define SPECIES_MINIOR_ORANGE SPECIES_MINIOR_METEOR_ORANGE +#define SPECIES_MINIOR_YELLOW SPECIES_MINIOR_METEOR_YELLOW +#define SPECIES_MINIOR_GREEN SPECIES_MINIOR_METEOR_GREEN +#define SPECIES_MINIOR_BLUE SPECIES_MINIOR_METEOR_BLUE +#define SPECIES_MINIOR_INDIGO SPECIES_MINIOR_METEOR_INDIGO +#define SPECIES_MINIOR_VIOLET SPECIES_MINIOR_METEOR_VIOLET +#define SPECIES_MINIOR_METEOR_ORANGE FORMS_START + 288 +#define SPECIES_MINIOR_METEOR_YELLOW FORMS_START + 289 +#define SPECIES_MINIOR_METEOR_GREEN FORMS_START + 290 +#define SPECIES_MINIOR_METEOR_BLUE FORMS_START + 291 +#define SPECIES_MINIOR_METEOR_INDIGO FORMS_START + 292 +#define SPECIES_MINIOR_METEOR_VIOLET FORMS_START + 293 +#define SPECIES_MINIOR_CORE SPECIES_MINIOR_CORE_RED +#define SPECIES_MINIOR_CORE_RED FORMS_START + 294 +#define SPECIES_MINIOR_CORE_ORANGE FORMS_START + 295 +#define SPECIES_MINIOR_CORE_YELLOW FORMS_START + 296 +#define SPECIES_MINIOR_CORE_GREEN FORMS_START + 297 +#define SPECIES_MINIOR_CORE_BLUE FORMS_START + 298 +#define SPECIES_MINIOR_CORE_INDIGO FORMS_START + 299 +#define SPECIES_MINIOR_CORE_VIOLET FORMS_START + 300 // Mimikyu -#define SPECIES_MIMIKYU_BUSTED FORMS_START + 301 +#define SPECIES_MIMIKYU_BUSTED FORMS_START + 301 // Necrozma -#define SPECIES_NECROZMA_DUSK_MANE FORMS_START + 302 -#define SPECIES_NECROZMA_DAWN_WINGS FORMS_START + 303 -#define SPECIES_NECROZMA_ULTRA FORMS_START + 304 +#define SPECIES_NECROZMA_DUSK_MANE FORMS_START + 302 +#define SPECIES_NECROZMA_DAWN_WINGS FORMS_START + 303 +#define SPECIES_NECROZMA_ULTRA FORMS_START + 304 // Magearna -#define SPECIES_MAGEARNA_ORIGINAL_COLOR FORMS_START + 305 +#define SPECIES_MAGEARNA_ORIGINAL_COLOR FORMS_START + 305 // Cramorant -#define SPECIES_CRAMORANT_GULPING FORMS_START + 306 -#define SPECIES_CRAMORANT_GORGING FORMS_START + 307 +#define SPECIES_CRAMORANT_GULPING FORMS_START + 306 +#define SPECIES_CRAMORANT_GORGING FORMS_START + 307 // Toxtricity -#define SPECIES_TOXTRICITY_LOW_KEY FORMS_START + 308 +#define SPECIES_TOXTRICITY_LOW_KEY FORMS_START + 308 // Sinistea -#define SPECIES_SINISTEA_ANTIQUE FORMS_START + 309 +#define SPECIES_SINISTEA_ANTIQUE FORMS_START + 309 // Polteageist -#define SPECIES_POLTEAGEIST_ANTIQUE FORMS_START + 310 +#define SPECIES_POLTEAGEIST_ANTIQUE FORMS_START + 310 // Alcremie -#define SPECIES_ALCREMIE_RUBY_CREAM FORMS_START + 311 -#define SPECIES_ALCREMIE_MATCHA_CREAM FORMS_START + 312 -#define SPECIES_ALCREMIE_MINT_CREAM FORMS_START + 313 -#define SPECIES_ALCREMIE_LEMON_CREAM FORMS_START + 314 -#define SPECIES_ALCREMIE_SALTED_CREAM FORMS_START + 315 -#define SPECIES_ALCREMIE_RUBY_SWIRL FORMS_START + 316 -#define SPECIES_ALCREMIE_CARAMEL_SWIRL FORMS_START + 317 -#define SPECIES_ALCREMIE_RAINBOW_SWIRL FORMS_START + 318 +#define SPECIES_ALCREMIE_RUBY_CREAM SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM +#define SPECIES_ALCREMIE_MATCHA_CREAM SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM +#define SPECIES_ALCREMIE_MINT_CREAM SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM +#define SPECIES_ALCREMIE_LEMON_CREAM SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM +#define SPECIES_ALCREMIE_SALTED_CREAM SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM +#define SPECIES_ALCREMIE_RUBY_SWIRL SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL +#define SPECIES_ALCREMIE_CARAMEL_SWIRL SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL +#define SPECIES_ALCREMIE_RAINBOW_SWIRL SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL +#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM FORMS_START + 311 +#define SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM FORMS_START + 312 +#define SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM FORMS_START + 313 +#define SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM FORMS_START + 314 +#define SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM FORMS_START + 315 +#define SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL FORMS_START + 316 +#define SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL FORMS_START + 317 +#define SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL FORMS_START + 318 // Eiscue -#define SPECIES_EISCUE_NOICE_FACE FORMS_START + 319 +#define SPECIES_EISCUE_NOICE_FACE FORMS_START + 319 // Indeedee -#define SPECIES_INDEEDEE_FEMALE FORMS_START + 320 +#define SPECIES_INDEEDEE_FEMALE FORMS_START + 320 // Morpeko -#define SPECIES_MORPEKO_HANGRY FORMS_START + 321 +#define SPECIES_MORPEKO_HANGRY FORMS_START + 321 // Zacian -#define SPECIES_ZACIAN_CROWNED_SWORD FORMS_START + 322 +#define SPECIES_ZACIAN_CROWNED_SWORD FORMS_START + 322 // Zamazenta -#define SPECIES_ZAMAZENTA_CROWNED_SHIELD FORMS_START + 323 +#define SPECIES_ZAMAZENTA_CROWNED_SHIELD FORMS_START + 323 // Eternatus -#define SPECIES_ETERNATUS_ETERNAMAX FORMS_START + 324 +#define SPECIES_ETERNATUS_ETERNAMAX FORMS_START + 324 // Urshifu -#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE FORMS_START + 325 +#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE FORMS_START + 325 // Zarude -#define SPECIES_ZARUDE_DADA FORMS_START + 326 +#define SPECIES_ZARUDE_DADA FORMS_START + 326 // Calyrex -#define SPECIES_CALYREX_ICE_RIDER FORMS_START + 327 -#define SPECIES_CALYREX_SHADOW_RIDER FORMS_START + 328 +#define SPECIES_CALYREX_ICE_RIDER FORMS_START + 327 +#define SPECIES_CALYREX_SHADOW_RIDER FORMS_START + 328 // Basculegion -#define SPECIES_BASCULEGION_FEMALE FORMS_START + 329 +#define SPECIES_BASCULEGION_FEMALE FORMS_START + 329 -#define FORMS_START SPECIES_ENAMORUS -#define SPECIES_EGG SPECIES_BASCULEGION_FEMALE + 1 +// More Alcremie +#define SPECIES_ALCREMIE_BERRY SPECIES_ALCREMIE_BERRY_VANILLA_CREAM +#define SPECIES_ALCREMIE_BERRY_VANILLA_CREAM FORMS_START + 330 +#define SPECIES_ALCREMIE_BERRY_RUBY_CREAM FORMS_START + 331 +#define SPECIES_ALCREMIE_BERRY_MATCHA_CREAM FORMS_START + 332 +#define SPECIES_ALCREMIE_BERRY_MINT_CREAM FORMS_START + 333 +#define SPECIES_ALCREMIE_BERRY_LEMON_CREAM FORMS_START + 334 +#define SPECIES_ALCREMIE_BERRY_SALTED_CREAM FORMS_START + 335 +#define SPECIES_ALCREMIE_BERRY_RUBY_SWIRL FORMS_START + 336 +#define SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL FORMS_START + 337 +#define SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL FORMS_START + 338 +#define SPECIES_ALCREMIE_LOVE SPECIES_ALCREMIE_LOVE_VANILLA_CREAM +#define SPECIES_ALCREMIE_LOVE_VANILLA_CREAM FORMS_START + 339 +#define SPECIES_ALCREMIE_LOVE_RUBY_CREAM FORMS_START + 340 +#define SPECIES_ALCREMIE_LOVE_MATCHA_CREAM FORMS_START + 341 +#define SPECIES_ALCREMIE_LOVE_MINT_CREAM FORMS_START + 342 +#define SPECIES_ALCREMIE_LOVE_LEMON_CREAM FORMS_START + 343 +#define SPECIES_ALCREMIE_LOVE_SALTED_CREAM FORMS_START + 344 +#define SPECIES_ALCREMIE_LOVE_RUBY_SWIRL FORMS_START + 345 +#define SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL FORMS_START + 346 +#define SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL FORMS_START + 347 +#define SPECIES_ALCREMIE_STAR SPECIES_ALCREMIE_STAR_VANILLA_CREAM +#define SPECIES_ALCREMIE_STAR_VANILLA_CREAM FORMS_START + 348 +#define SPECIES_ALCREMIE_STAR_RUBY_CREAM FORMS_START + 349 +#define SPECIES_ALCREMIE_STAR_MATCHA_CREAM FORMS_START + 350 +#define SPECIES_ALCREMIE_STAR_MINT_CREAM FORMS_START + 351 +#define SPECIES_ALCREMIE_STAR_LEMON_CREAM FORMS_START + 352 +#define SPECIES_ALCREMIE_STAR_SALTED_CREAM FORMS_START + 353 +#define SPECIES_ALCREMIE_STAR_RUBY_SWIRL FORMS_START + 354 +#define SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL FORMS_START + 355 +#define SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL FORMS_START + 356 +#define SPECIES_ALCREMIE_CLOVER SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM +#define SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM FORMS_START + 357 +#define SPECIES_ALCREMIE_CLOVER_RUBY_CREAM FORMS_START + 358 +#define SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM FORMS_START + 359 +#define SPECIES_ALCREMIE_CLOVER_MINT_CREAM FORMS_START + 360 +#define SPECIES_ALCREMIE_CLOVER_LEMON_CREAM FORMS_START + 361 +#define SPECIES_ALCREMIE_CLOVER_SALTED_CREAM FORMS_START + 362 +#define SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL FORMS_START + 363 +#define SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL FORMS_START + 364 +#define SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL FORMS_START + 365 +#define SPECIES_ALCREMIE_FLOWER SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM +#define SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM FORMS_START + 366 +#define SPECIES_ALCREMIE_FLOWER_RUBY_CREAM FORMS_START + 367 +#define SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM FORMS_START + 368 +#define SPECIES_ALCREMIE_FLOWER_MINT_CREAM FORMS_START + 369 +#define SPECIES_ALCREMIE_FLOWER_LEMON_CREAM FORMS_START + 370 +#define SPECIES_ALCREMIE_FLOWER_SALTED_CREAM FORMS_START + 371 +#define SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL FORMS_START + 372 +#define SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL FORMS_START + 373 +#define SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL FORMS_START + 374 +#define SPECIES_ALCREMIE_RIBBON SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM +#define SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM FORMS_START + 375 +#define SPECIES_ALCREMIE_RIBBON_RUBY_CREAM FORMS_START + 376 +#define SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM FORMS_START + 377 +#define SPECIES_ALCREMIE_RIBBON_MINT_CREAM FORMS_START + 378 +#define SPECIES_ALCREMIE_RIBBON_LEMON_CREAM FORMS_START + 379 +#define SPECIES_ALCREMIE_RIBBON_SALTED_CREAM FORMS_START + 380 +#define SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL FORMS_START + 381 +#define SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL FORMS_START + 382 +#define SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL FORMS_START + 383 + +#define GEN9_START SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL + +#define SPECIES_SPRIGATITO GEN9_START + 1 +#define SPECIES_FLORAGATO GEN9_START + 2 +#define SPECIES_MEOWSCARADA GEN9_START + 3 +#define SPECIES_FUECOCO GEN9_START + 4 +#define SPECIES_CROCALOR GEN9_START + 5 +#define SPECIES_SKELEDIRGE GEN9_START + 6 +#define SPECIES_QUAXLY GEN9_START + 7 +#define SPECIES_QUAXWELL GEN9_START + 8 +#define SPECIES_QUAQUAVAL GEN9_START + 9 +#define SPECIES_LECHONK GEN9_START + 10 +#define SPECIES_OINKOLOGNE SPECIES_OINKOLOGNE_MALE +#define SPECIES_OINKOLOGNE_MALE GEN9_START + 11 +#define SPECIES_OINKOLOGNE_FEMALE GEN9_START + 12 +#define SPECIES_TAROUNTULA GEN9_START + 13 +#define SPECIES_SPIDOPS GEN9_START + 14 +#define SPECIES_NYMBLE GEN9_START + 15 +#define SPECIES_LOKIX GEN9_START + 16 +#define SPECIES_PAWMI GEN9_START + 17 +#define SPECIES_PAWMO GEN9_START + 18 +#define SPECIES_PAWMOT GEN9_START + 19 +#define SPECIES_TANDEMAUS GEN9_START + 20 +#define SPECIES_MAUSHOLD SPECIES_MAUSHOLD_FAMILY_OF_THREE +#define SPECIES_MAUSHOLD_FAMILY_OF_THREE GEN9_START + 21 +#define SPECIES_MAUSHOLD_FAMILY_OF_FOUR GEN9_START + 22 +#define SPECIES_FIDOUGH GEN9_START + 23 +#define SPECIES_DACHSBUN GEN9_START + 24 +#define SPECIES_SMOLIV GEN9_START + 25 +#define SPECIES_DOLLIV GEN9_START + 26 +#define SPECIES_ARBOLIVA GEN9_START + 27 +#define SPECIES_SQUAWKABILLY SPECIES_SQUAWKABILLY_GREEN_PLUMAGE +#define SPECIES_SQUAWKABILLY_GREEN_PLUMAGE GEN9_START + 28 +#define SPECIES_SQUAWKABILLY_BLUE_PLUMAGE GEN9_START + 29 +#define SPECIES_SQUAWKABILLY_YELLOW_PLUMAGE GEN9_START + 30 +#define SPECIES_SQUAWKABILLY_WHITE_PLUMAGE GEN9_START + 31 +#define SPECIES_NACLI GEN9_START + 32 +#define SPECIES_NACLSTACK GEN9_START + 33 +#define SPECIES_GARGANACL GEN9_START + 34 +#define SPECIES_CHARCADET GEN9_START + 35 +#define SPECIES_ARMAROUGE GEN9_START + 36 +#define SPECIES_CERULEDGE GEN9_START + 37 +#define SPECIES_TADBULB GEN9_START + 38 +#define SPECIES_BELLIBOLT GEN9_START + 39 +#define SPECIES_WATTREL GEN9_START + 40 +#define SPECIES_KILOWATTREL GEN9_START + 41 +#define SPECIES_MASCHIFF GEN9_START + 42 +#define SPECIES_MABOSSTIFF GEN9_START + 43 +#define SPECIES_SHROODLE GEN9_START + 44 +#define SPECIES_GRAFAIAI GEN9_START + 45 +#define SPECIES_BRAMBLIN GEN9_START + 46 +#define SPECIES_BRAMBLEGHAST GEN9_START + 47 +#define SPECIES_TOEDSCOOL GEN9_START + 48 +#define SPECIES_TOEDSCRUEL GEN9_START + 49 +#define SPECIES_KLAWF GEN9_START + 50 +#define SPECIES_CAPSAKID GEN9_START + 51 +#define SPECIES_SCOVILLAIN GEN9_START + 52 +#define SPECIES_RELLOR GEN9_START + 53 +#define SPECIES_RABSCA GEN9_START + 54 +#define SPECIES_FLITTLE GEN9_START + 55 +#define SPECIES_ESPATHRA GEN9_START + 56 +#define SPECIES_TINKATINK GEN9_START + 57 +#define SPECIES_TINKATUFF GEN9_START + 58 +#define SPECIES_TINKATON GEN9_START + 59 +#define SPECIES_WIGLETT GEN9_START + 60 +#define SPECIES_WUGTRIO GEN9_START + 61 +#define SPECIES_BOMBIRDIER GEN9_START + 62 +#define SPECIES_FINIZEN GEN9_START + 63 +#define SPECIES_PALAFIN SPECIES_PALAFIN_ZERO +#define SPECIES_PALAFIN_ZERO GEN9_START + 64 +#define SPECIES_PALAFIN_HERO GEN9_START + 65 +#define SPECIES_VAROOM GEN9_START + 66 +#define SPECIES_REVAVROOM GEN9_START + 67 +#define SPECIES_CYCLIZAR GEN9_START + 68 +#define SPECIES_ORTHWORM GEN9_START + 69 +#define SPECIES_GLIMMET GEN9_START + 70 +#define SPECIES_GLIMMORA GEN9_START + 71 +#define SPECIES_GREAVARD GEN9_START + 72 +#define SPECIES_HOUNDSTONE GEN9_START + 73 +#define SPECIES_FLAMIGO GEN9_START + 74 +#define SPECIES_CETODDLE GEN9_START + 75 +#define SPECIES_CETITAN GEN9_START + 76 +#define SPECIES_VELUZA GEN9_START + 77 +#define SPECIES_DONDOZO GEN9_START + 78 +#define SPECIES_TATSUGIRI SPECIES_TATSUGIRI_CURLY +#define SPECIES_TATSUGIRI_CURLY GEN9_START + 79 +#define SPECIES_TATSUGIRI_DROOPY GEN9_START + 80 +#define SPECIES_TATSUGIRI_STRETCHY GEN9_START + 81 +#define SPECIES_ANNIHILAPE GEN9_START + 82 +#define SPECIES_CLODSIRE GEN9_START + 83 +#define SPECIES_FARIGIRAF GEN9_START + 84 +#define SPECIES_DUDUNSPARCE SPECIES_DUDUNSPARCE_TWO_SEGMENT +#define SPECIES_DUDUNSPARCE_TWO_SEGMENT GEN9_START + 85 +#define SPECIES_DUDUNSPARCE_THREE_SEGMENT GEN9_START + 86 +#define SPECIES_KINGAMBIT GEN9_START + 87 +#define SPECIES_GREAT_TUSK GEN9_START + 88 +#define SPECIES_SCREAM_TAIL GEN9_START + 89 +#define SPECIES_BRUTE_BONNET GEN9_START + 90 +#define SPECIES_FLUTTER_MANE GEN9_START + 91 +#define SPECIES_SLITHER_WING GEN9_START + 92 +#define SPECIES_SANDY_SHOCKS GEN9_START + 93 +#define SPECIES_IRON_TREADS GEN9_START + 94 +#define SPECIES_IRON_BUNDLE GEN9_START + 95 +#define SPECIES_IRON_HANDS GEN9_START + 96 +#define SPECIES_IRON_JUGULIS GEN9_START + 97 +#define SPECIES_IRON_MOTH GEN9_START + 98 +#define SPECIES_IRON_THORNS GEN9_START + 99 +#define SPECIES_FRIGIBAX GEN9_START + 100 +#define SPECIES_ARCTIBAX GEN9_START + 101 +#define SPECIES_BAXCALIBUR GEN9_START + 102 +#define SPECIES_GIMMIGHOUL SPECIES_GIMMIGHOUL_CHEST +#define SPECIES_GIMMIGHOUL_CHEST GEN9_START + 103 +#define SPECIES_GIMMIGHOUL_ROAMING GEN9_START + 104 +#define SPECIES_GHOLDENGO GEN9_START + 105 +#define SPECIES_WO_CHIEN GEN9_START + 106 +#define SPECIES_CHIEN_PAO GEN9_START + 107 +#define SPECIES_TING_LU GEN9_START + 108 +#define SPECIES_CHI_YU GEN9_START + 109 +#define SPECIES_ROARING_MOON GEN9_START + 110 +#define SPECIES_IRON_VALIANT GEN9_START + 111 +#define SPECIES_KORAIDON GEN9_START + 112 +#define SPECIES_MIRAIDON GEN9_START + 113 +// Paldean Forms +#define SPECIES_TAUROS_PALDEAN_COMBAT_BREED GEN9_START + 114 +#define SPECIES_TAUROS_PALDEAN_BLAZE_BREED GEN9_START + 115 +#define SPECIES_TAUROS_PALDEAN_AQUA_BREED GEN9_START + 116 +#define SPECIES_WOOPER_PALDEAN GEN9_START + 117 +// Scarlet and Violet 1.2.0 +#define SPECIES_WALKING_WAKE GEN9_START + 118 +#define SPECIES_IRON_LEAVES GEN9_START + 119 +// Teal Mask +#define SPECIES_DIPPLIN GEN9_START + 120 +#define SPECIES_POLTCHAGEIST SPECIES_POLTCHAGEIST_COUNTERFEIT +#define SPECIES_POLTCHAGEIST_COUNTERFEIT GEN9_START + 121 +#define SPECIES_POLTCHAGEIST_ARTISAN GEN9_START + 122 +#define SPECIES_SINISTCHA SPECIES_SINISTCHA_UNREMARKABLE +#define SPECIES_SINISTCHA_UNREMARKABLE GEN9_START + 123 +#define SPECIES_SINISTCHA_MASTERPIECE GEN9_START + 124 +#define SPECIES_OKIDOGI GEN9_START + 125 +#define SPECIES_MUNKIDORI GEN9_START + 126 +#define SPECIES_FEZANDIPITI GEN9_START + 127 +#define SPECIES_OGERPON SPECIES_OGERPON_TEAL_MASK +#define SPECIES_OGERPON_TEAL_MASK GEN9_START + 128 +#define SPECIES_OGERPON_WELLSPRING_MASK GEN9_START + 129 +#define SPECIES_OGERPON_HEARTHFLAME_MASK GEN9_START + 130 +#define SPECIES_OGERPON_CORNERSTONE_MASK GEN9_START + 131 +#define SPECIES_OGERPON_TEAL_MASK_TERA GEN9_START + 132 +#define SPECIES_OGERPON_WELLSPRING_MASK_TERA GEN9_START + 133 +#define SPECIES_OGERPON_HEARTHFLAME_MASK_TERA GEN9_START + 134 +#define SPECIES_OGERPON_CORNERSTONE_MASK_TERA GEN9_START + 135 +#define SPECIES_URSALUNA_BLOODMOON GEN9_START + 136 +// Indigo Disk +#define SPECIES_1018 GEN9_START + 137 +#define SPECIES_1019 GEN9_START + 138 +#define SPECIES_1020 GEN9_START + 139 +#define SPECIES_1021 GEN9_START + 140 +#define SPECIES_1022 GEN9_START + 141 +#define SPECIES_1023 GEN9_START + 142 +#define SPECIES_1024 SPECIES_1024_FORM_1 +#define SPECIES_1024_FORM_1 GEN9_START + 143 +#define SPECIES_1024_FORM_2 GEN9_START + 144 +#define SPECIES_1024_FORM_3 GEN9_START + 145 +#define SPECIES_1025 GEN9_START + 146 + +#define PLACEHOLDER_START SPECIES_1025 +// XD: Gale of Darkness +#define SPECIES_LUGIA_SHADOW PLACEHOLDER_START + 1 +// Diamond & Pearl +#define SPECIES_MOTHIM_SANDY_CLOAK PLACEHOLDER_START + 2 +#define SPECIES_MOTHIM_TRASH_CLOAK PLACEHOLDER_START + 3 +// X & Y +#define SPECIES_SCATTERBUG_POLAR PLACEHOLDER_START + 4 +#define SPECIES_SCATTERBUG_TUNDRA PLACEHOLDER_START + 5 +#define SPECIES_SCATTERBUG_CONTINENTAL PLACEHOLDER_START + 6 +#define SPECIES_SCATTERBUG_GARDEN PLACEHOLDER_START + 7 +#define SPECIES_SCATTERBUG_ELEGANT PLACEHOLDER_START + 8 +#define SPECIES_SCATTERBUG_MEADOW PLACEHOLDER_START + 9 +#define SPECIES_SCATTERBUG_MODERN PLACEHOLDER_START + 10 +#define SPECIES_SCATTERBUG_MARINE PLACEHOLDER_START + 11 +#define SPECIES_SCATTERBUG_ARCHIPELAGO PLACEHOLDER_START + 12 +#define SPECIES_SCATTERBUG_HIGH_PLAINS PLACEHOLDER_START + 13 +#define SPECIES_SCATTERBUG_SANDSTORM PLACEHOLDER_START + 14 +#define SPECIES_SCATTERBUG_RIVER PLACEHOLDER_START + 15 +#define SPECIES_SCATTERBUG_MONSOON PLACEHOLDER_START + 16 +#define SPECIES_SCATTERBUG_SAVANNA PLACEHOLDER_START + 17 +#define SPECIES_SCATTERBUG_SUN PLACEHOLDER_START + 18 +#define SPECIES_SCATTERBUG_OCEAN PLACEHOLDER_START + 19 +#define SPECIES_SCATTERBUG_JUNGLE PLACEHOLDER_START + 20 +#define SPECIES_SCATTERBUG_FANCY PLACEHOLDER_START + 21 +#define SPECIES_SCATTERBUG_POKE_BALL PLACEHOLDER_START + 22 +#define SPECIES_SPEWPA_POLAR PLACEHOLDER_START + 23 +#define SPECIES_SPEWPA_TUNDRA PLACEHOLDER_START + 24 +#define SPECIES_SPEWPA_CONTINENTAL PLACEHOLDER_START + 25 +#define SPECIES_SPEWPA_GARDEN PLACEHOLDER_START + 26 +#define SPECIES_SPEWPA_ELEGANT PLACEHOLDER_START + 27 +#define SPECIES_SPEWPA_MEADOW PLACEHOLDER_START + 28 +#define SPECIES_SPEWPA_MODERN PLACEHOLDER_START + 29 +#define SPECIES_SPEWPA_MARINE PLACEHOLDER_START + 30 +#define SPECIES_SPEWPA_ARCHIPELAGO PLACEHOLDER_START + 31 +#define SPECIES_SPEWPA_HIGH_PLAINS PLACEHOLDER_START + 32 +#define SPECIES_SPEWPA_SANDSTORM PLACEHOLDER_START + 33 +#define SPECIES_SPEWPA_RIVER PLACEHOLDER_START + 34 +#define SPECIES_SPEWPA_MONSOON PLACEHOLDER_START + 35 +#define SPECIES_SPEWPA_SAVANNA PLACEHOLDER_START + 36 +#define SPECIES_SPEWPA_SUN PLACEHOLDER_START + 37 +#define SPECIES_SPEWPA_OCEAN PLACEHOLDER_START + 38 +#define SPECIES_SPEWPA_JUNGLE PLACEHOLDER_START + 39 +#define SPECIES_SPEWPA_FANCY PLACEHOLDER_START + 40 +#define SPECIES_SPEWPA_POKE_BALL PLACEHOLDER_START + 41 +// Sun & Moon +#define SPECIES_RATICATE_ALOLAN_TOTEM PLACEHOLDER_START + 42 +#define SPECIES_GUMSHOOS_TOTEM PLACEHOLDER_START + 43 +#define SPECIES_VIKAVOLT_TOTEM PLACEHOLDER_START + 44 +#define SPECIES_LURANTIS_TOTEM PLACEHOLDER_START + 45 +#define SPECIES_SALAZZLE_TOTEM PLACEHOLDER_START + 46 +#define SPECIES_MIMIKYU_TOTEM PLACEHOLDER_START + 47 +#define SPECIES_KOMMO_O_TOTEM PLACEHOLDER_START + 48 +// Ultra Sun & Ultra Moon +#define SPECIES_MAROWAK_ALOLAN_TOTEM PLACEHOLDER_START + 49 +#define SPECIES_RIBOMBEE_TOTEM PLACEHOLDER_START + 50 +#define SPECIES_ARAQUANID_TOTEM PLACEHOLDER_START + 51 +#define SPECIES_TOGEDEMARU_TOTEM PLACEHOLDER_START + 52 +// Let's Go Pikachu & Let's Go Eevee +#define SPECIES_PIKACHU_PARTNER PLACEHOLDER_START + 53 +#define SPECIES_EEVEE_PARTNER PLACEHOLDER_START + 54 + +#define GIGANTAMAX_START SPECIES_EEVEE_PARTNER + +// Gigantamax Forms +#define SPECIES_VENUSAUR_GIGANTAMAX GIGANTAMAX_START + 1 +#define SPECIES_BLASTOISE_GIGANTAMAX GIGANTAMAX_START + 2 +#define SPECIES_CHARIZARD_GIGANTAMAX GIGANTAMAX_START + 3 +#define SPECIES_BUTTERFREE_GIGANTAMAX GIGANTAMAX_START + 4 +#define SPECIES_PIKACHU_GIGANTAMAX GIGANTAMAX_START + 5 +#define SPECIES_MEOWTH_GIGANTAMAX GIGANTAMAX_START + 6 +#define SPECIES_MACHAMP_GIGANTAMAX GIGANTAMAX_START + 7 +#define SPECIES_GENGAR_GIGANTAMAX GIGANTAMAX_START + 8 +#define SPECIES_KINGLER_GIGANTAMAX GIGANTAMAX_START + 9 +#define SPECIES_LAPRAS_GIGANTAMAX GIGANTAMAX_START + 10 +#define SPECIES_EEVEE_GIGANTAMAX GIGANTAMAX_START + 11 +#define SPECIES_SNORLAX_GIGANTAMAX GIGANTAMAX_START + 12 +#define SPECIES_GARBODOR_GIGANTAMAX GIGANTAMAX_START + 13 +#define SPECIES_MELMETAL_GIGANTAMAX GIGANTAMAX_START + 14 +#define SPECIES_RILLABOOM_GIGANTAMAX GIGANTAMAX_START + 15 +#define SPECIES_CINDERACE_GIGANTAMAX GIGANTAMAX_START + 16 +#define SPECIES_INTELEON_GIGANTAMAX GIGANTAMAX_START + 17 +#define SPECIES_CORVIKNIGHT_GIGANTAMAX GIGANTAMAX_START + 18 +#define SPECIES_ORBEETLE_GIGANTAMAX GIGANTAMAX_START + 19 +#define SPECIES_DREDNAW_GIGANTAMAX GIGANTAMAX_START + 20 +#define SPECIES_COALOSSAL_GIGANTAMAX GIGANTAMAX_START + 21 +#define SPECIES_FLAPPLE_GIGANTAMAX GIGANTAMAX_START + 22 +#define SPECIES_APPLETUN_GIGANTAMAX GIGANTAMAX_START + 23 +#define SPECIES_SANDACONDA_GIGANTAMAX GIGANTAMAX_START + 24 +#define SPECIES_TOXTRICITY_AMPED_GIGANTAMAX GIGANTAMAX_START + 25 +#define SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX GIGANTAMAX_START + 26 +#define SPECIES_CENTISKORCH_GIGANTAMAX GIGANTAMAX_START + 27 +#define SPECIES_HATTERENE_GIGANTAMAX GIGANTAMAX_START + 28 +#define SPECIES_GRIMMSNARL_GIGANTAMAX GIGANTAMAX_START + 29 +#define SPECIES_ALCREMIE_GIGANTAMAX GIGANTAMAX_START + 30 +#define SPECIES_COPPERAJAH_GIGANTAMAX GIGANTAMAX_START + 31 +#define SPECIES_DURALUDON_GIGANTAMAX GIGANTAMAX_START + 32 +#define SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX GIGANTAMAX_START + 33 +#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX GIGANTAMAX_START + 34 + +#define SPECIES_EGG SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX + 1 #define NUM_SPECIES SPECIES_EGG diff --git a/include/data.h b/include/data.h index d2248820ea..82b85607c0 100644 --- a/include/data.h +++ b/include/data.h @@ -90,15 +90,8 @@ extern const union AffineAnimCmd *const gAffineAnims_BattleSpritePlayerSide[]; extern const union AffineAnimCmd *const gAffineAnims_BattleSpriteOpponentSide[]; extern const union AffineAnimCmd *const gAffineAnims_BattleSpriteContest[]; +extern const union AnimCmd sAnim_GeneralFrame0[]; extern const union AnimCmd *const gAnims_MonPic[]; -extern const struct MonCoords gMonFrontPicCoords[]; -extern const struct MonCoords gMonBackPicCoords[]; -extern const struct CompressedSpriteSheet gMonBackPicTable[]; -extern const struct CompressedSpriteSheet gMonBackPicTableFemale[]; -extern const struct CompressedSpritePalette gMonPaletteTable[]; -extern const struct CompressedSpritePalette gMonPaletteTableFemale[]; -extern const struct CompressedSpritePalette gMonShinyPaletteTable[]; -extern const struct CompressedSpritePalette gMonShinyPaletteTableFemale[]; extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[]; extern const struct MonCoords gTrainerFrontPicCoords[]; extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; @@ -108,16 +101,10 @@ extern const struct MonCoords gTrainerBackPicCoords[]; extern const struct CompressedSpriteSheet gTrainerBackPicTable[]; // functionally unused extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; -extern const u8 gEnemyMonElevation[NUM_SPECIES + 1]; - -extern const union AnimCmd *const *const gMonFrontAnimsPtrTable[]; -extern const struct CompressedSpriteSheet gMonFrontPicTable[]; -extern const struct CompressedSpriteSheet gMonFrontPicTableFemale[]; - extern const struct Trainer gTrainers[]; extern const u8 gTrainerClassNames[][13]; -extern const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1]; -extern const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1]; +extern const u8 gMoveNames[MOVES_COUNT_DYNAMAX][MOVE_NAME_LENGTH + 1]; extern const u8 *const gZMoveNames[]; +extern const u8 *const gMaxMoveNames[]; #endif // GUARD_DATA_H diff --git a/include/daycare.h b/include/daycare.h index 066499fd41..daea812bed 100644 --- a/include/daycare.h +++ b/include/daycare.h @@ -32,5 +32,7 @@ void SetDaycareCompatibilityString(void); bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio); void ShowDaycareLevelMenu(void); void ChooseSendDaycareMon(void); +u8 GetEggMovesSpecies(u16 species, u16 *eggMoves); +bool8 SpeciesCanLearnEggMove(u16 species, u16 move); #endif // GUARD_DAYCARE_H diff --git a/include/debug.h b/include/debug.h index d89c7994b8..e25392091b 100644 --- a/include/debug.h +++ b/include/debug.h @@ -2,6 +2,7 @@ #define GUARD_DEBUG_H void Debug_ShowMainMenu(void); +extern const u8 Debug_FlagsAndVarNotSetBattleConfigMessage[]; extern EWRAM_DATA bool8 gIsDebugBattle; extern EWRAM_DATA u32 gDebugAIFlags; diff --git a/include/decompress.h b/include/decompress.h index 1ded221eb4..9c99d09044 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -13,11 +13,11 @@ void LoadCompressedSpriteSheetOverrideBuffer(const struct CompressedSpriteSheet bool8 LoadCompressedSpriteSheetUsingHeap(const struct CompressedSpriteSheet *src); void LoadCompressedSpritePalette(const struct CompressedSpritePalette *src); +void LoadCompressedSpritePaletteWithTag(const u32 *pal, u16 tag); void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *src, void *buffer); bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette *src); -void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void *buffer, s32 species); -void DecompressPicFromTableGender(void* buffer, s32 species, u32 personality); +void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void *buffer); void HandleLoadSpecialPokePic(bool32 isFrontPic, void *dest, s32 species, u32 personality); diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 01269cdb5e..b48522ebc8 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -440,4 +440,7 @@ bool32 IsVirtualObjectInvisible(u8 virtualObjId); void SetVirtualObjectSpriteAnim(u8 virtualObjId, u8 animNum); bool32 IsVirtualObjectAnimating(u8 virtualObjId); +bool8 MovementAction_EmoteX_Step0(struct ObjectEvent *, struct Sprite *); +bool8 MovementAction_EmoteDoubleExclamationMark_Step0(struct ObjectEvent *, struct Sprite *); + #endif //GUARD_EVENT_OBJECT_MOVEMENT_H diff --git a/include/event_scripts.h b/include/event_scripts.h index 4e0a88f82a..00b06165cf 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -612,4 +612,9 @@ extern const u8 EventScript_TradeCenter_Chair0[]; extern const u8 EventScript_ConfirmLeaveCableClubRoom[]; extern const u8 EventScript_TerminateLink[]; +extern const u8 VSSeeker_Text_BatteryNotChargedNeedXSteps[]; +extern const u8 VSSeeker_Text_NoTrainersWithinRange[]; +extern const u8 VSSeeker_Text_TrainersNotReady[]; +extern const u8 EventScript_VsSeekerChargingDone[]; + #endif // GUARD_EVENT_SCRIPTS_H diff --git a/include/field_specials.h b/include/field_specials.h index faf71e9c08..d36f2686c2 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -31,5 +31,6 @@ bool8 UsedPokemonCenterWarp(void); void ResetFanClub(void); bool8 ShouldShowBoxWasFullMessage(void); void SetPCBoxToSendMon(u8 boxId); +void PreparePartyForSkyBattle(void); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/field_weather.h b/include/field_weather.h index 8ce0cc9e50..b354d500e3 100644 --- a/include/field_weather.h +++ b/include/field_weather.h @@ -132,7 +132,7 @@ struct Weather s16 droughtTimer; s16 droughtState; u8 droughtUnused[9]; - s8 loadDroughtPalsIndex; + u8 loadDroughtPalsIndex; u8 loadDroughtPalsOffset; }; diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 7461929c3a..b5bf29ca88 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -254,6 +254,7 @@ enum { PLAYER_AVATAR_STATE_FIELD_MOVE, PLAYER_AVATAR_STATE_FISHING, PLAYER_AVATAR_STATE_WATERING, + PLAYER_AVATAR_STATE_VSSEEKER, }; #define PLAYER_AVATAR_FLAG_ON_FOOT (1 << 0) diff --git a/include/graphics.h b/include/graphics.h index 00727abacd..94a8e322f2 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -65,7183 +65,6 @@ extern const u32 gOpenPokeballGfx[]; // pokemon gfx extern const u16 gMonIconPalettes[][16]; -extern const u32 gMonFrontPic_CircledQuestionMark[]; -extern const u32 gMonFrontPic_DoubleQuestionMark[]; -extern const u32 gMonFrontPic_Bulbasaur[]; -extern const u32 gMonFrontPic_Ivysaur[]; -extern const u32 gMonFrontPic_Venusaur[]; -extern const u32 gMonFrontPic_VenusaurF[]; -extern const u32 gMonFrontPic_Charmander[]; -extern const u32 gMonFrontPic_Charmeleon[]; -extern const u32 gMonFrontPic_Charizard[]; -extern const u32 gMonFrontPic_Squirtle[]; -extern const u32 gMonFrontPic_Wartortle[]; -extern const u32 gMonFrontPic_Blastoise[]; -extern const u32 gMonFrontPic_Caterpie[]; -extern const u32 gMonFrontPic_Metapod[]; -extern const u32 gMonFrontPic_Butterfree[]; -extern const u32 gMonFrontPic_ButterfreeF[]; -extern const u32 gMonFrontPic_Weedle[]; -extern const u32 gMonFrontPic_Kakuna[]; -extern const u32 gMonFrontPic_Beedrill[]; -extern const u32 gMonFrontPic_Pidgey[]; -extern const u32 gMonFrontPic_Pidgeotto[]; -extern const u32 gMonFrontPic_Pidgeot[]; -extern const u32 gMonFrontPic_Rattata[]; -extern const u32 gMonFrontPic_RattataF[]; -extern const u32 gMonFrontPic_Raticate[]; -extern const u32 gMonFrontPic_RaticateF[]; -extern const u32 gMonFrontPic_Spearow[]; -extern const u32 gMonFrontPic_Fearow[]; -extern const u32 gMonFrontPic_Ekans[]; -extern const u32 gMonFrontPic_Arbok[]; -extern const u32 gMonFrontPic_Pikachu[]; -extern const u32 gMonFrontPic_PikachuF[]; -extern const u32 gMonFrontPic_Raichu[]; -extern const u32 gMonFrontPic_RaichuF[]; -extern const u32 gMonFrontPic_Sandshrew[]; -extern const u32 gMonFrontPic_Sandslash[]; -extern const u32 gMonFrontPic_NidoranF[]; -extern const u32 gMonFrontPic_Nidorina[]; -extern const u32 gMonFrontPic_Nidoqueen[]; -extern const u32 gMonFrontPic_NidoranM[]; -extern const u32 gMonFrontPic_Nidorino[]; -extern const u32 gMonFrontPic_Nidoking[]; -extern const u32 gMonFrontPic_Clefairy[]; -extern const u32 gMonFrontPic_Clefable[]; -extern const u32 gMonFrontPic_Vulpix[]; -extern const u32 gMonFrontPic_Ninetales[]; -extern const u32 gMonFrontPic_Jigglypuff[]; -extern const u32 gMonFrontPic_Wigglytuff[]; -extern const u32 gMonFrontPic_Zubat[]; -extern const u32 gMonFrontPic_ZubatF[]; -extern const u32 gMonFrontPic_Golbat[]; -extern const u32 gMonFrontPic_GolbatF[]; -extern const u32 gMonFrontPic_Oddish[]; -extern const u32 gMonFrontPic_Gloom[]; -extern const u32 gMonFrontPic_GloomF[]; -extern const u32 gMonFrontPic_Vileplume[]; -extern const u32 gMonFrontPic_VileplumeF[]; -extern const u32 gMonFrontPic_Paras[]; -extern const u32 gMonFrontPic_Parasect[]; -extern const u32 gMonFrontPic_Venonat[]; -extern const u32 gMonFrontPic_Venomoth[]; -extern const u32 gMonFrontPic_Diglett[]; -extern const u32 gMonFrontPic_Dugtrio[]; -extern const u32 gMonFrontPic_Meowth[]; -extern const u32 gMonFrontPic_Persian[]; -extern const u32 gMonFrontPic_Psyduck[]; -extern const u32 gMonFrontPic_Golduck[]; -extern const u32 gMonFrontPic_Mankey[]; -extern const u32 gMonFrontPic_Primeape[]; -extern const u32 gMonFrontPic_Growlithe[]; -extern const u32 gMonFrontPic_Arcanine[]; -extern const u32 gMonFrontPic_Poliwag[]; -extern const u32 gMonFrontPic_Poliwhirl[]; -extern const u32 gMonFrontPic_Poliwrath[]; -extern const u32 gMonFrontPic_Abra[]; -extern const u32 gMonFrontPic_Kadabra[]; -extern const u32 gMonFrontPic_KadabraF[]; -extern const u32 gMonFrontPic_Alakazam[]; -extern const u32 gMonFrontPic_AlakazamF[]; -extern const u32 gMonFrontPic_Machop[]; -extern const u32 gMonFrontPic_Machoke[]; -extern const u32 gMonFrontPic_Machamp[]; -extern const u32 gMonFrontPic_Bellsprout[]; -extern const u32 gMonFrontPic_Weepinbell[]; -extern const u32 gMonFrontPic_Victreebel[]; -extern const u32 gMonFrontPic_Tentacool[]; -extern const u32 gMonFrontPic_Tentacruel[]; -extern const u32 gMonFrontPic_Geodude[]; -extern const u32 gMonFrontPic_Graveler[]; -extern const u32 gMonFrontPic_Golem[]; -extern const u32 gMonFrontPic_Ponyta[]; -extern const u32 gMonFrontPic_Rapidash[]; -extern const u32 gMonFrontPic_Slowpoke[]; -extern const u32 gMonFrontPic_Slowbro[]; -extern const u32 gMonFrontPic_Magnemite[]; -extern const u32 gMonFrontPic_Magneton[]; -extern const u32 gMonFrontPic_Farfetchd[]; -extern const u32 gMonFrontPic_Doduo[]; -extern const u32 gMonFrontPic_DoduoF[]; -extern const u32 gMonFrontPic_Dodrio[]; -extern const u32 gMonFrontPic_DodrioF[]; -extern const u32 gMonFrontPic_Seel[]; -extern const u32 gMonFrontPic_Dewgong[]; -extern const u32 gMonFrontPic_Grimer[]; -extern const u32 gMonFrontPic_Muk[]; -extern const u32 gMonFrontPic_Shellder[]; -extern const u32 gMonFrontPic_Cloyster[]; -extern const u32 gMonFrontPic_Gastly[]; -extern const u32 gMonFrontPic_Haunter[]; -extern const u32 gMonFrontPic_Gengar[]; -extern const u32 gMonFrontPic_Onix[]; -extern const u32 gMonFrontPic_Drowzee[]; -extern const u32 gMonFrontPic_Hypno[]; -extern const u32 gMonFrontPic_HypnoF[]; -extern const u32 gMonFrontPic_Krabby[]; -extern const u32 gMonFrontPic_Kingler[]; -extern const u32 gMonFrontPic_Voltorb[]; -extern const u32 gMonFrontPic_Electrode[]; -extern const u32 gMonFrontPic_Exeggcute[]; -extern const u32 gMonFrontPic_Exeggutor[]; -extern const u32 gMonFrontPic_Cubone[]; -extern const u32 gMonFrontPic_Marowak[]; -extern const u32 gMonFrontPic_Hitmonlee[]; -extern const u32 gMonFrontPic_Hitmonchan[]; -extern const u32 gMonFrontPic_Lickitung[]; -extern const u32 gMonFrontPic_Koffing[]; -extern const u32 gMonFrontPic_Weezing[]; -extern const u32 gMonFrontPic_Rhyhorn[]; -extern const u32 gMonFrontPic_RhyhornF[]; -extern const u32 gMonFrontPic_Rhydon[]; -extern const u32 gMonFrontPic_RhydonF[]; -extern const u32 gMonFrontPic_Chansey[]; -extern const u32 gMonFrontPic_Tangela[]; -extern const u32 gMonFrontPic_Kangaskhan[]; -extern const u32 gMonFrontPic_Horsea[]; -extern const u32 gMonFrontPic_Seadra[]; -extern const u32 gMonFrontPic_Goldeen[]; -extern const u32 gMonFrontPic_GoldeenF[]; -extern const u32 gMonFrontPic_Seaking[]; -extern const u32 gMonFrontPic_SeakingF[]; -extern const u32 gMonFrontPic_Staryu[]; -extern const u32 gMonFrontPic_Starmie[]; -extern const u32 gMonFrontPic_MrMime[]; -extern const u32 gMonFrontPic_Scyther[]; -extern const u32 gMonFrontPic_ScytherF[]; -extern const u32 gMonFrontPic_Jynx[]; -extern const u32 gMonFrontPic_Electabuzz[]; -extern const u32 gMonFrontPic_Magmar[]; -extern const u32 gMonFrontPic_Pinsir[]; -extern const u32 gMonFrontPic_Tauros[]; -extern const u32 gMonFrontPic_Magikarp[]; -extern const u32 gMonFrontPic_MagikarpF[]; -extern const u32 gMonFrontPic_Gyarados[]; -extern const u32 gMonFrontPic_GyaradosF[]; -extern const u32 gMonFrontPic_Lapras[]; -extern const u32 gMonFrontPic_Ditto[]; -extern const u32 gMonFrontPic_Eevee[]; -extern const u32 gMonFrontPic_EeveeF[]; -extern const u32 gMonFrontPic_Vaporeon[]; -extern const u32 gMonFrontPic_Jolteon[]; -extern const u32 gMonFrontPic_Flareon[]; -extern const u32 gMonFrontPic_Porygon[]; -extern const u32 gMonFrontPic_Omanyte[]; -extern const u32 gMonFrontPic_Omastar[]; -extern const u32 gMonFrontPic_Kabuto[]; -extern const u32 gMonFrontPic_Kabutops[]; -extern const u32 gMonFrontPic_Aerodactyl[]; -extern const u32 gMonFrontPic_Snorlax[]; -extern const u32 gMonFrontPic_Articuno[]; -extern const u32 gMonFrontPic_Zapdos[]; -extern const u32 gMonFrontPic_Moltres[]; -extern const u32 gMonFrontPic_Dratini[]; -extern const u32 gMonFrontPic_Dragonair[]; -extern const u32 gMonFrontPic_Dragonite[]; -extern const u32 gMonFrontPic_Mewtwo[]; -extern const u32 gMonFrontPic_Mew[]; -extern const u32 gMonFrontPic_Chikorita[]; -extern const u32 gMonFrontPic_Bayleef[]; -extern const u32 gMonFrontPic_Meganium[]; -extern const u32 gMonFrontPic_MeganiumF[]; -extern const u32 gMonFrontPic_Cyndaquil[]; -extern const u32 gMonFrontPic_Quilava[]; -extern const u32 gMonFrontPic_Typhlosion[]; -extern const u32 gMonFrontPic_Totodile[]; -extern const u32 gMonFrontPic_Croconaw[]; -extern const u32 gMonFrontPic_Feraligatr[]; -extern const u32 gMonFrontPic_Sentret[]; -extern const u32 gMonFrontPic_Furret[]; -extern const u32 gMonFrontPic_Hoothoot[]; -extern const u32 gMonFrontPic_Noctowl[]; -extern const u32 gMonFrontPic_Ledyba[]; -extern const u32 gMonFrontPic_LedybaF[]; -extern const u32 gMonFrontPic_Ledian[]; -extern const u32 gMonFrontPic_LedianF[]; -extern const u32 gMonFrontPic_Spinarak[]; -extern const u32 gMonFrontPic_Ariados[]; -extern const u32 gMonFrontPic_Crobat[]; -extern const u32 gMonFrontPic_Chinchou[]; -extern const u32 gMonFrontPic_Lanturn[]; -extern const u32 gMonFrontPic_Pichu[]; -extern const u32 gMonFrontPic_Cleffa[]; -extern const u32 gMonFrontPic_Igglybuff[]; -extern const u32 gMonFrontPic_Togepi[]; -extern const u32 gMonFrontPic_Togetic[]; -extern const u32 gMonFrontPic_Natu[]; -extern const u32 gMonFrontPic_Xatu[]; -extern const u32 gMonFrontPic_XatuF[]; -extern const u32 gMonFrontPic_Mareep[]; -extern const u32 gMonFrontPic_Flaaffy[]; -extern const u32 gMonFrontPic_Ampharos[]; -extern const u32 gMonFrontPic_Bellossom[]; -extern const u32 gMonFrontPic_Marill[]; -extern const u32 gMonFrontPic_Azumarill[]; -extern const u32 gMonFrontPic_Sudowoodo[]; -extern const u32 gMonFrontPic_SudowoodoF[]; -extern const u32 gMonFrontPic_Politoed[]; -extern const u32 gMonFrontPic_PolitoedF[]; -extern const u32 gMonFrontPic_Hoppip[]; -extern const u32 gMonFrontPic_Skiploom[]; -extern const u32 gMonFrontPic_Jumpluff[]; -extern const u32 gMonFrontPic_Aipom[]; -extern const u32 gMonFrontPic_AipomF[]; -extern const u32 gMonFrontPic_Sunkern[]; -extern const u32 gMonFrontPic_Sunflora[]; -extern const u32 gMonFrontPic_Yanma[]; -extern const u32 gMonFrontPic_Wooper[]; -extern const u32 gMonFrontPic_WooperF[]; -extern const u32 gMonFrontPic_Quagsire[]; -extern const u32 gMonFrontPic_QuagsireF[]; -extern const u32 gMonFrontPic_Espeon[]; -extern const u32 gMonFrontPic_Umbreon[]; -extern const u32 gMonFrontPic_Murkrow[]; -extern const u32 gMonFrontPic_MurkrowF[]; -extern const u32 gMonFrontPic_Slowking[]; -extern const u32 gMonFrontPic_Misdreavus[]; -extern const u32 gMonFrontPic_Unown[]; -extern const u32 gMonFrontPic_Wobbuffet[]; -extern const u32 gMonFrontPic_WobbuffetF[]; -extern const u32 gMonFrontPic_Girafarig[]; -extern const u32 gMonFrontPic_GirafarigF[]; -extern const u32 gMonFrontPic_Pineco[]; -extern const u32 gMonFrontPic_Forretress[]; -extern const u32 gMonFrontPic_Dunsparce[]; -extern const u32 gMonFrontPic_Gligar[]; -extern const u32 gMonFrontPic_GligarF[]; -extern const u32 gMonFrontPic_Steelix[]; -extern const u32 gMonFrontPic_SteelixF[]; -extern const u32 gMonFrontPic_Snubbull[]; -extern const u32 gMonFrontPic_Granbull[]; -extern const u32 gMonFrontPic_Qwilfish[]; -extern const u32 gMonFrontPic_Scizor[]; -extern const u32 gMonFrontPic_ScizorF[]; -extern const u32 gMonFrontPic_Shuckle[]; -extern const u32 gMonFrontPic_Heracross[]; -extern const u32 gMonFrontPic_HeracrossF[]; -extern const u32 gMonFrontPic_Sneasel[]; -extern const u32 gMonFrontPic_SneaselF[]; -extern const u32 gMonFrontPic_Teddiursa[]; -extern const u32 gMonFrontPic_Ursaring[]; -extern const u32 gMonFrontPic_UrsaringF[]; -extern const u32 gMonFrontPic_Slugma[]; -extern const u32 gMonFrontPic_Magcargo[]; -extern const u32 gMonFrontPic_Swinub[]; -extern const u32 gMonFrontPic_Piloswine[]; -extern const u32 gMonFrontPic_PiloswineF[]; -extern const u32 gMonFrontPic_Corsola[]; -extern const u32 gMonFrontPic_Remoraid[]; -extern const u32 gMonFrontPic_Octillery[]; -extern const u32 gMonFrontPic_OctilleryF[]; -extern const u32 gMonFrontPic_Delibird[]; -extern const u32 gMonFrontPic_Mantine[]; -extern const u32 gMonFrontPic_Skarmory[]; -extern const u32 gMonFrontPic_Houndour[]; -extern const u32 gMonFrontPic_Houndoom[]; -extern const u32 gMonFrontPic_HoundoomF[]; -extern const u32 gMonFrontPic_Kingdra[]; -extern const u32 gMonFrontPic_Phanpy[]; -extern const u32 gMonFrontPic_Donphan[]; -extern const u32 gMonFrontPic_DonphanF[]; -extern const u32 gMonFrontPic_Porygon2[]; -extern const u32 gMonFrontPic_Stantler[]; -extern const u32 gMonFrontPic_Smeargle[]; -extern const u32 gMonFrontPic_Tyrogue[]; -extern const u32 gMonFrontPic_Hitmontop[]; -extern const u32 gMonFrontPic_Smoochum[]; -extern const u32 gMonFrontPic_Elekid[]; -extern const u32 gMonFrontPic_Magby[]; -extern const u32 gMonFrontPic_Miltank[]; -extern const u32 gMonFrontPic_Blissey[]; -extern const u32 gMonFrontPic_Raikou[]; -extern const u32 gMonFrontPic_Entei[]; -extern const u32 gMonFrontPic_Suicune[]; -extern const u32 gMonFrontPic_Larvitar[]; -extern const u32 gMonFrontPic_Pupitar[]; -extern const u32 gMonFrontPic_Tyranitar[]; -extern const u32 gMonFrontPic_Lugia[]; -extern const u32 gMonFrontPic_HoOh[]; -extern const u32 gMonFrontPic_Celebi[]; -extern const u32 gMonFrontPic_Treecko[]; -extern const u32 gMonFrontPic_Grovyle[]; -extern const u32 gMonFrontPic_Sceptile[]; -extern const u32 gMonFrontPic_Torchic[]; -extern const u32 gMonFrontPic_Combusken[]; -extern const u32 gMonFrontPic_CombuskenF[]; -extern const u32 gMonFrontPic_Blaziken[]; -extern const u32 gMonFrontPic_BlazikenF[]; -extern const u32 gMonFrontPic_Mudkip[]; -extern const u32 gMonFrontPic_Marshtomp[]; -extern const u32 gMonFrontPic_Swampert[]; -extern const u32 gMonFrontPic_Poochyena[]; -extern const u32 gMonFrontPic_Mightyena[]; -extern const u32 gMonFrontPic_Zigzagoon[]; -extern const u32 gMonFrontPic_Linoone[]; -extern const u32 gMonFrontPic_Wurmple[]; -extern const u32 gMonFrontPic_Silcoon[]; -extern const u32 gMonFrontPic_Beautifly[]; -extern const u32 gMonFrontPic_BeautiflyF[]; -extern const u32 gMonFrontPic_Cascoon[]; -extern const u32 gMonFrontPic_Dustox[]; -extern const u32 gMonFrontPic_DustoxF[]; -extern const u32 gMonFrontPic_Lotad[]; -extern const u32 gMonFrontPic_Lombre[]; -extern const u32 gMonFrontPic_Ludicolo[]; -extern const u32 gMonFrontPic_LudicoloF[]; -extern const u32 gMonFrontPic_Seedot[]; -extern const u32 gMonFrontPic_Nuzleaf[]; -extern const u32 gMonFrontPic_NuzleafF[]; -extern const u32 gMonFrontPic_Shiftry[]; -extern const u32 gMonFrontPic_ShiftryF[]; -extern const u32 gMonFrontPic_Taillow[]; -extern const u32 gMonFrontPic_Swellow[]; -extern const u32 gMonFrontPic_Wingull[]; -extern const u32 gMonFrontPic_Pelipper[]; -extern const u32 gMonFrontPic_Ralts[]; -extern const u32 gMonFrontPic_Kirlia[]; -extern const u32 gMonFrontPic_Gardevoir[]; -extern const u32 gMonFrontPic_Surskit[]; -extern const u32 gMonFrontPic_Masquerain[]; -extern const u32 gMonFrontPic_Shroomish[]; -extern const u32 gMonFrontPic_Breloom[]; -extern const u32 gMonFrontPic_Slakoth[]; -extern const u32 gMonFrontPic_Vigoroth[]; -extern const u32 gMonFrontPic_Slaking[]; -extern const u32 gMonFrontPic_Nincada[]; -extern const u32 gMonFrontPic_Ninjask[]; -extern const u32 gMonFrontPic_Shedinja[]; -extern const u32 gMonFrontPic_Whismur[]; -extern const u32 gMonFrontPic_Loudred[]; -extern const u32 gMonFrontPic_Exploud[]; -extern const u32 gMonFrontPic_Makuhita[]; -extern const u32 gMonFrontPic_Hariyama[]; -extern const u32 gMonFrontPic_Azurill[]; -extern const u32 gMonFrontPic_Nosepass[]; -extern const u32 gMonFrontPic_Skitty[]; -extern const u32 gMonFrontPic_Delcatty[]; -extern const u32 gMonFrontPic_Sableye[]; -extern const u32 gMonFrontPic_Mawile[]; -extern const u32 gMonFrontPic_Aron[]; -extern const u32 gMonFrontPic_Lairon[]; -extern const u32 gMonFrontPic_Aggron[]; -extern const u32 gMonFrontPic_Meditite[]; -extern const u32 gMonFrontPic_MedititeF[]; -extern const u32 gMonFrontPic_Medicham[]; -extern const u32 gMonFrontPic_MedichamF[]; -extern const u32 gMonFrontPic_Electrike[]; -extern const u32 gMonFrontPic_Manectric[]; -extern const u32 gMonFrontPic_Plusle[]; -extern const u32 gMonFrontPic_Minun[]; -extern const u32 gMonFrontPic_Volbeat[]; -extern const u32 gMonFrontPic_Illumise[]; -extern const u32 gMonFrontPic_Roselia[]; -extern const u32 gMonFrontPic_RoseliaF[]; -extern const u32 gMonFrontPic_Gulpin[]; -extern const u32 gMonFrontPic_GulpinF[]; -extern const u32 gMonFrontPic_Swalot[]; -extern const u32 gMonFrontPic_SwalotF[]; -extern const u32 gMonFrontPic_Carvanha[]; -extern const u32 gMonFrontPic_Sharpedo[]; -extern const u32 gMonFrontPic_Wailmer[]; -extern const u32 gMonFrontPic_Wailord[]; -extern const u32 gMonFrontPic_Numel[]; -extern const u32 gMonFrontPic_NumelF[]; -extern const u32 gMonFrontPic_Camerupt[]; -extern const u32 gMonFrontPic_CameruptF[]; -extern const u32 gMonFrontPic_Torkoal[]; -extern const u32 gMonFrontPic_Spoink[]; -extern const u32 gMonFrontPic_Grumpig[]; -extern const u32 gMonFrontPic_Spinda[]; -extern const u32 gMonFrontPic_Trapinch[]; -extern const u32 gMonFrontPic_Vibrava[]; -extern const u32 gMonFrontPic_Flygon[]; -extern const u32 gMonFrontPic_Cacnea[]; -extern const u32 gMonFrontPic_Cacturne[]; -extern const u32 gMonFrontPic_CacturneF[]; -extern const u32 gMonFrontPic_Swablu[]; -extern const u32 gMonFrontPic_Altaria[]; -extern const u32 gMonFrontPic_Zangoose[]; -extern const u32 gMonFrontPic_Seviper[]; -extern const u32 gMonFrontPic_Lunatone[]; -extern const u32 gMonFrontPic_Solrock[]; -extern const u32 gMonFrontPic_Barboach[]; -extern const u32 gMonFrontPic_Whiscash[]; -extern const u32 gMonFrontPic_Corphish[]; -extern const u32 gMonFrontPic_Crawdaunt[]; -extern const u32 gMonFrontPic_Baltoy[]; -extern const u32 gMonFrontPic_Claydol[]; -extern const u32 gMonFrontPic_Lileep[]; -extern const u32 gMonFrontPic_Cradily[]; -extern const u32 gMonFrontPic_Anorith[]; -extern const u32 gMonFrontPic_Armaldo[]; -extern const u32 gMonFrontPic_Feebas[]; -extern const u32 gMonFrontPic_Milotic[]; -extern const u32 gMonFrontPic_MiloticF[]; -extern const u32 gMonFrontPic_Castform[]; -extern const u32 gMonFrontPic_Kecleon[]; -extern const u32 gMonFrontPic_Shuppet[]; -extern const u32 gMonFrontPic_Banette[]; -extern const u32 gMonFrontPic_Duskull[]; -extern const u32 gMonFrontPic_Dusclops[]; -extern const u32 gMonFrontPic_Tropius[]; -extern const u32 gMonFrontPic_Chimecho[]; -extern const u32 gMonFrontPic_Absol[]; -extern const u32 gMonFrontPic_Wynaut[]; -extern const u32 gMonFrontPic_Snorunt[]; -extern const u32 gMonFrontPic_Glalie[]; -extern const u32 gMonFrontPic_Spheal[]; -extern const u32 gMonFrontPic_Sealeo[]; -extern const u32 gMonFrontPic_Walrein[]; -extern const u32 gMonFrontPic_Clamperl[]; -extern const u32 gMonFrontPic_Huntail[]; -extern const u32 gMonFrontPic_Gorebyss[]; -extern const u32 gMonFrontPic_Relicanth[]; -extern const u32 gMonFrontPic_RelicanthF[]; -extern const u32 gMonFrontPic_Luvdisc[]; -extern const u32 gMonFrontPic_Bagon[]; -extern const u32 gMonFrontPic_Shelgon[]; -extern const u32 gMonFrontPic_Salamence[]; -extern const u32 gMonFrontPic_Beldum[]; -extern const u32 gMonFrontPic_Metang[]; -extern const u32 gMonFrontPic_Metagross[]; -extern const u32 gMonFrontPic_Regirock[]; -extern const u32 gMonFrontPic_Regice[]; -extern const u32 gMonFrontPic_Registeel[]; -extern const u32 gMonFrontPic_Latias[]; -extern const u32 gMonFrontPic_Latios[]; -extern const u32 gMonFrontPic_Kyogre[]; -extern const u32 gMonFrontPic_Groudon[]; -extern const u32 gMonFrontPic_Rayquaza[]; -extern const u32 gMonFrontPic_Jirachi[]; -extern const u32 gMonFrontPic_Deoxys[]; -#if P_GEN_4_POKEMON == TRUE -extern const u32 gMonFrontPic_Turtwig[]; -extern const u32 gMonFrontPic_Grotle[]; -extern const u32 gMonFrontPic_Torterra[]; -extern const u32 gMonFrontPic_Chimchar[]; -extern const u32 gMonFrontPic_Monferno[]; -extern const u32 gMonFrontPic_Infernape[]; -extern const u32 gMonFrontPic_Piplup[]; -extern const u32 gMonFrontPic_Prinplup[]; -extern const u32 gMonFrontPic_Empoleon[]; -extern const u32 gMonFrontPic_Starly[]; -extern const u32 gMonFrontPic_StarlyF[]; -extern const u32 gMonFrontPic_Staravia[]; -extern const u32 gMonFrontPic_StaraviaF[]; -extern const u32 gMonFrontPic_Staraptor[]; -extern const u32 gMonFrontPic_StaraptorF[]; -extern const u32 gMonFrontPic_Bidoof[]; -extern const u32 gMonFrontPic_BidoofF[]; -extern const u32 gMonFrontPic_Bibarel[]; -extern const u32 gMonFrontPic_BibarelF[]; -extern const u32 gMonFrontPic_Kricketot[]; -extern const u32 gMonFrontPic_KricketotF[]; -extern const u32 gMonFrontPic_Kricketune[]; -extern const u32 gMonFrontPic_KricketuneF[]; -extern const u32 gMonFrontPic_Shinx[]; -extern const u32 gMonFrontPic_ShinxF[]; -extern const u32 gMonFrontPic_Luxio[]; -extern const u32 gMonFrontPic_LuxioF[]; -extern const u32 gMonFrontPic_Luxray[]; -extern const u32 gMonFrontPic_LuxrayF[]; -extern const u32 gMonFrontPic_Budew[]; -extern const u32 gMonFrontPic_Roserade[]; -extern const u32 gMonFrontPic_RoseradeF[]; -extern const u32 gMonFrontPic_Cranidos[]; -extern const u32 gMonFrontPic_Rampardos[]; -extern const u32 gMonFrontPic_Shieldon[]; -extern const u32 gMonFrontPic_Bastiodon[]; -extern const u32 gMonFrontPic_Burmy[]; -extern const u32 gMonFrontPic_Wormadam[]; -extern const u32 gMonFrontPic_Mothim[]; -extern const u32 gMonFrontPic_Combee[]; -extern const u32 gMonFrontPic_Vespiquen[]; -extern const u32 gMonFrontPic_Pachirisu[]; -extern const u32 gMonFrontPic_PachirisuF[]; -extern const u32 gMonFrontPic_Buizel[]; -extern const u32 gMonFrontPic_Floatzel[]; -extern const u32 gMonFrontPic_Cherubi[]; -extern const u32 gMonFrontPic_Cherrim[]; -extern const u32 gMonFrontPic_Shellos[]; -extern const u32 gMonFrontPic_Gastrodon[]; -extern const u32 gMonFrontPic_Ambipom[]; -extern const u32 gMonFrontPic_AmbipomF[]; -extern const u32 gMonFrontPic_Drifloon[]; -extern const u32 gMonFrontPic_Drifblim[]; -extern const u32 gMonFrontPic_Buneary[]; -extern const u32 gMonFrontPic_Lopunny[]; -extern const u32 gMonFrontPic_Mismagius[]; -extern const u32 gMonFrontPic_Honchkrow[]; -extern const u32 gMonFrontPic_Glameow[]; -extern const u32 gMonFrontPic_Purugly[]; -extern const u32 gMonFrontPic_Chingling[]; -extern const u32 gMonFrontPic_Stunky[]; -extern const u32 gMonFrontPic_Skuntank[]; -extern const u32 gMonFrontPic_Bronzor[]; -extern const u32 gMonFrontPic_Bronzong[]; -extern const u32 gMonFrontPic_Bonsly[]; -extern const u32 gMonFrontPic_MimeJr[]; -extern const u32 gMonFrontPic_Happiny[]; -extern const u32 gMonFrontPic_Chatot[]; -extern const u32 gMonFrontPic_Spiritomb[]; -extern const u32 gMonFrontPic_Gible[]; -extern const u32 gMonFrontPic_GibleF[]; -extern const u32 gMonFrontPic_Gabite[]; -extern const u32 gMonFrontPic_GabiteF[]; -extern const u32 gMonFrontPic_Garchomp[]; -extern const u32 gMonFrontPic_GarchompF[]; -extern const u32 gMonFrontPic_Munchlax[]; -extern const u32 gMonFrontPic_Riolu[]; -extern const u32 gMonFrontPic_Lucario[]; -extern const u32 gMonFrontPic_Hippopotas[]; -extern const u32 gMonFrontPic_Hippowdon[]; -extern const u32 gMonFrontPic_Skorupi[]; -extern const u32 gMonFrontPic_Drapion[]; -extern const u32 gMonFrontPic_Croagunk[]; -extern const u32 gMonFrontPic_CroagunkF[]; -extern const u32 gMonFrontPic_Toxicroak[]; -extern const u32 gMonFrontPic_ToxicroakF[]; -extern const u32 gMonFrontPic_Carnivine[]; -extern const u32 gMonFrontPic_Finneon[]; -extern const u32 gMonFrontPic_FinneonF[]; -extern const u32 gMonFrontPic_Lumineon[]; -extern const u32 gMonFrontPic_LumineonF[]; -extern const u32 gMonFrontPic_Mantyke[]; -extern const u32 gMonFrontPic_Snover[]; -extern const u32 gMonFrontPic_SnoverF[]; -extern const u32 gMonFrontPic_Abomasnow[]; -extern const u32 gMonFrontPic_AbomasnowF[]; -extern const u32 gMonFrontPic_Weavile[]; -extern const u32 gMonFrontPic_WeavileF[]; -extern const u32 gMonFrontPic_Magnezone[]; -extern const u32 gMonFrontPic_Lickilicky[]; -extern const u32 gMonFrontPic_Rhyperior[]; -extern const u32 gMonFrontPic_RhyperiorF[]; -extern const u32 gMonFrontPic_Tangrowth[]; -extern const u32 gMonFrontPic_TangrowthF[]; -extern const u32 gMonFrontPic_Electivire[]; -extern const u32 gMonFrontPic_Magmortar[]; -extern const u32 gMonFrontPic_Togekiss[]; -extern const u32 gMonFrontPic_Yanmega[]; -extern const u32 gMonFrontPic_Leafeon[]; -extern const u32 gMonFrontPic_Glaceon[]; -extern const u32 gMonFrontPic_Gliscor[]; -extern const u32 gMonFrontPic_Mamoswine[]; -extern const u32 gMonFrontPic_MamoswineF[]; -extern const u32 gMonFrontPic_PorygonZ[]; -extern const u32 gMonFrontPic_Gallade[]; -extern const u32 gMonFrontPic_Probopass[]; -extern const u32 gMonFrontPic_Dusknoir[]; -extern const u32 gMonFrontPic_Froslass[]; -extern const u32 gMonFrontPic_Rotom[]; -extern const u32 gMonFrontPic_Uxie[]; -extern const u32 gMonFrontPic_Mesprit[]; -extern const u32 gMonFrontPic_Azelf[]; -extern const u32 gMonFrontPic_Dialga[]; -extern const u32 gMonFrontPic_Palkia[]; -extern const u32 gMonFrontPic_Heatran[]; -extern const u32 gMonFrontPic_Regigigas[]; -extern const u32 gMonFrontPic_Giratina[]; -extern const u32 gMonFrontPic_Cresselia[]; -extern const u32 gMonFrontPic_Phione[]; -extern const u32 gMonFrontPic_Manaphy[]; -extern const u32 gMonFrontPic_Darkrai[]; -extern const u32 gMonFrontPic_Shaymin[]; -extern const u32 gMonFrontPic_Arceus[]; -#endif -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonFrontPic_Victini[]; -extern const u32 gMonFrontPic_Snivy[]; -extern const u32 gMonFrontPic_Servine[]; -extern const u32 gMonFrontPic_Serperior[]; -extern const u32 gMonFrontPic_Tepig[]; -extern const u32 gMonFrontPic_Pignite[]; -extern const u32 gMonFrontPic_Emboar[]; -extern const u32 gMonFrontPic_Oshawott[]; -extern const u32 gMonFrontPic_Dewott[]; -extern const u32 gMonFrontPic_Samurott[]; -extern const u32 gMonFrontPic_Patrat[]; -extern const u32 gMonFrontPic_Watchog[]; -extern const u32 gMonFrontPic_Lillipup[]; -extern const u32 gMonFrontPic_Herdier[]; -extern const u32 gMonFrontPic_Stoutland[]; -extern const u32 gMonFrontPic_Purrloin[]; -extern const u32 gMonFrontPic_Liepard[]; -extern const u32 gMonFrontPic_Pansage[]; -extern const u32 gMonFrontPic_Simisage[]; -extern const u32 gMonFrontPic_Pansear[]; -extern const u32 gMonFrontPic_Simisear[]; -extern const u32 gMonFrontPic_Panpour[]; -extern const u32 gMonFrontPic_Simipour[]; -extern const u32 gMonFrontPic_Munna[]; -extern const u32 gMonFrontPic_Musharna[]; -extern const u32 gMonFrontPic_Pidove[]; -extern const u32 gMonFrontPic_Tranquill[]; -extern const u32 gMonFrontPic_Unfezant[]; -extern const u32 gMonFrontPic_UnfezantF[]; -extern const u32 gMonFrontPic_Blitzle[]; -extern const u32 gMonFrontPic_Zebstrika[]; -extern const u32 gMonFrontPic_Roggenrola[]; -extern const u32 gMonFrontPic_Boldore[]; -extern const u32 gMonFrontPic_Gigalith[]; -extern const u32 gMonFrontPic_Woobat[]; -extern const u32 gMonFrontPic_Swoobat[]; -extern const u32 gMonFrontPic_Drilbur[]; -extern const u32 gMonFrontPic_Excadrill[]; -extern const u32 gMonFrontPic_Audino[]; -extern const u32 gMonFrontPic_Timburr[]; -extern const u32 gMonFrontPic_Gurdurr[]; -extern const u32 gMonFrontPic_Conkeldurr[]; -extern const u32 gMonFrontPic_Tympole[]; -extern const u32 gMonFrontPic_Palpitoad[]; -extern const u32 gMonFrontPic_Seismitoad[]; -extern const u32 gMonFrontPic_Throh[]; -extern const u32 gMonFrontPic_Sawk[]; -extern const u32 gMonFrontPic_Sewaddle[]; -extern const u32 gMonFrontPic_Swadloon[]; -extern const u32 gMonFrontPic_Leavanny[]; -extern const u32 gMonFrontPic_Venipede[]; -extern const u32 gMonFrontPic_Whirlipede[]; -extern const u32 gMonFrontPic_Scolipede[]; -extern const u32 gMonFrontPic_Cottonee[]; -extern const u32 gMonFrontPic_Whimsicott[]; -extern const u32 gMonFrontPic_Petilil[]; -extern const u32 gMonFrontPic_Lilligant[]; -extern const u32 gMonFrontPic_Basculin[]; -extern const u32 gMonFrontPic_Sandile[]; -extern const u32 gMonFrontPic_Krokorok[]; -extern const u32 gMonFrontPic_Krookodile[]; -extern const u32 gMonFrontPic_Darumaka[]; -extern const u32 gMonFrontPic_Darmanitan[]; -extern const u32 gMonFrontPic_Maractus[]; -extern const u32 gMonFrontPic_Dwebble[]; -extern const u32 gMonFrontPic_Crustle[]; -extern const u32 gMonFrontPic_Scraggy[]; -extern const u32 gMonFrontPic_Scrafty[]; -extern const u32 gMonFrontPic_Sigilyph[]; -extern const u32 gMonFrontPic_Yamask[]; -extern const u32 gMonFrontPic_Cofagrigus[]; -extern const u32 gMonFrontPic_Tirtouga[]; -extern const u32 gMonFrontPic_Carracosta[]; -extern const u32 gMonFrontPic_Archen[]; -extern const u32 gMonFrontPic_Archeops[]; -extern const u32 gMonFrontPic_Trubbish[]; -extern const u32 gMonFrontPic_Garbodor[]; -extern const u32 gMonFrontPic_Zorua[]; -extern const u32 gMonFrontPic_Zoroark[]; -extern const u32 gMonFrontPic_Minccino[]; -extern const u32 gMonFrontPic_Cinccino[]; -extern const u32 gMonFrontPic_Gothita[]; -extern const u32 gMonFrontPic_Gothorita[]; -extern const u32 gMonFrontPic_Gothitelle[]; -extern const u32 gMonFrontPic_Solosis[]; -extern const u32 gMonFrontPic_Duosion[]; -extern const u32 gMonFrontPic_Reuniclus[]; -extern const u32 gMonFrontPic_Ducklett[]; -extern const u32 gMonFrontPic_Swanna[]; -extern const u32 gMonFrontPic_Vanillite[]; -extern const u32 gMonFrontPic_Vanillish[]; -extern const u32 gMonFrontPic_Vanilluxe[]; -extern const u32 gMonFrontPic_Deerling[]; -extern const u32 gMonFrontPic_Sawsbuck[]; -extern const u32 gMonFrontPic_Emolga[]; -extern const u32 gMonFrontPic_Karrablast[]; -extern const u32 gMonFrontPic_Escavalier[]; -extern const u32 gMonFrontPic_Foongus[]; -extern const u32 gMonFrontPic_Amoonguss[]; -extern const u32 gMonFrontPic_Frillish[]; -extern const u32 gMonFrontPic_FrillishF[]; -extern const u32 gMonFrontPic_Jellicent[]; -extern const u32 gMonFrontPic_JellicentF[]; -extern const u32 gMonFrontPic_Alomomola[]; -extern const u32 gMonFrontPic_Joltik[]; -extern const u32 gMonFrontPic_Galvantula[]; -extern const u32 gMonFrontPic_Ferroseed[]; -extern const u32 gMonFrontPic_Ferrothorn[]; -extern const u32 gMonFrontPic_Klink[]; -extern const u32 gMonFrontPic_Klang[]; -extern const u32 gMonFrontPic_Klinklang[]; -extern const u32 gMonFrontPic_Tynamo[]; -extern const u32 gMonFrontPic_Eelektrik[]; -extern const u32 gMonFrontPic_Eelektross[]; -extern const u32 gMonFrontPic_Elgyem[]; -extern const u32 gMonFrontPic_Beheeyem[]; -extern const u32 gMonFrontPic_Litwick[]; -extern const u32 gMonFrontPic_Lampent[]; -extern const u32 gMonFrontPic_Chandelure[]; -extern const u32 gMonFrontPic_Axew[]; -extern const u32 gMonFrontPic_Fraxure[]; -extern const u32 gMonFrontPic_Haxorus[]; -extern const u32 gMonFrontPic_Cubchoo[]; -extern const u32 gMonFrontPic_Beartic[]; -extern const u32 gMonFrontPic_Cryogonal[]; -extern const u32 gMonFrontPic_Shelmet[]; -extern const u32 gMonFrontPic_Accelgor[]; -extern const u32 gMonFrontPic_Stunfisk[]; -extern const u32 gMonFrontPic_Mienfoo[]; -extern const u32 gMonFrontPic_Mienshao[]; -extern const u32 gMonFrontPic_Druddigon[]; -extern const u32 gMonFrontPic_Golett[]; -extern const u32 gMonFrontPic_Golurk[]; -extern const u32 gMonFrontPic_Pawniard[]; -extern const u32 gMonFrontPic_Bisharp[]; -extern const u32 gMonFrontPic_Bouffalant[]; -extern const u32 gMonFrontPic_Rufflet[]; -extern const u32 gMonFrontPic_Braviary[]; -extern const u32 gMonFrontPic_Vullaby[]; -extern const u32 gMonFrontPic_Mandibuzz[]; -extern const u32 gMonFrontPic_Heatmor[]; -extern const u32 gMonFrontPic_Durant[]; -extern const u32 gMonFrontPic_Deino[]; -extern const u32 gMonFrontPic_Zweilous[]; -extern const u32 gMonFrontPic_Hydreigon[]; -extern const u32 gMonFrontPic_Larvesta[]; -extern const u32 gMonFrontPic_Volcarona[]; -extern const u32 gMonFrontPic_Cobalion[]; -extern const u32 gMonFrontPic_Terrakion[]; -extern const u32 gMonFrontPic_Virizion[]; -extern const u32 gMonFrontPic_Tornadus[]; -extern const u32 gMonFrontPic_Thundurus[]; -extern const u32 gMonFrontPic_Reshiram[]; -extern const u32 gMonFrontPic_Zekrom[]; -extern const u32 gMonFrontPic_Landorus[]; -extern const u32 gMonFrontPic_Kyurem[]; -extern const u32 gMonFrontPic_Keldeo[]; -extern const u32 gMonFrontPic_Meloetta[]; -extern const u32 gMonFrontPic_Genesect[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u32 gMonFrontPic_Chespin[]; -extern const u32 gMonFrontPic_Quilladin[]; -extern const u32 gMonFrontPic_Chesnaught[]; -extern const u32 gMonFrontPic_Fennekin[]; -extern const u32 gMonFrontPic_Braixen[]; -extern const u32 gMonFrontPic_Delphox[]; -extern const u32 gMonFrontPic_Froakie[]; -extern const u32 gMonFrontPic_Frogadier[]; -extern const u32 gMonFrontPic_Greninja[]; -extern const u32 gMonFrontPic_Bunnelby[]; -extern const u32 gMonFrontPic_Diggersby[]; -extern const u32 gMonFrontPic_Fletchling[]; -extern const u32 gMonFrontPic_Fletchinder[]; -extern const u32 gMonFrontPic_Talonflame[]; -extern const u32 gMonFrontPic_Scatterbug[]; -extern const u32 gMonFrontPic_Spewpa[]; -extern const u32 gMonFrontPic_Vivillon[]; -extern const u32 gMonFrontPic_Litleo[]; -extern const u32 gMonFrontPic_Pyroar[]; -extern const u32 gMonFrontPic_PyroarF[]; -extern const u32 gMonFrontPic_Flabebe[]; -extern const u32 gMonFrontPic_Floette[]; -extern const u32 gMonFrontPic_Florges[]; -extern const u32 gMonFrontPic_Skiddo[]; -extern const u32 gMonFrontPic_Gogoat[]; -extern const u32 gMonFrontPic_Pancham[]; -extern const u32 gMonFrontPic_Pangoro[]; -extern const u32 gMonFrontPic_Furfrou[]; -extern const u32 gMonFrontPic_Espurr[]; -extern const u32 gMonFrontPic_Meowstic[]; -extern const u32 gMonFrontPic_Honedge[]; -extern const u32 gMonFrontPic_Doublade[]; -extern const u32 gMonFrontPic_Aegislash[]; -extern const u32 gMonFrontPic_Spritzee[]; -extern const u32 gMonFrontPic_Aromatisse[]; -extern const u32 gMonFrontPic_Swirlix[]; -extern const u32 gMonFrontPic_Slurpuff[]; -extern const u32 gMonFrontPic_Inkay[]; -extern const u32 gMonFrontPic_Malamar[]; -extern const u32 gMonFrontPic_Binacle[]; -extern const u32 gMonFrontPic_Barbaracle[]; -extern const u32 gMonFrontPic_Skrelp[]; -extern const u32 gMonFrontPic_Dragalge[]; -extern const u32 gMonFrontPic_Clauncher[]; -extern const u32 gMonFrontPic_Clawitzer[]; -extern const u32 gMonFrontPic_Helioptile[]; -extern const u32 gMonFrontPic_Heliolisk[]; -extern const u32 gMonFrontPic_Tyrunt[]; -extern const u32 gMonFrontPic_Tyrantrum[]; -extern const u32 gMonFrontPic_Amaura[]; -extern const u32 gMonFrontPic_Aurorus[]; -extern const u32 gMonFrontPic_Sylveon[]; -extern const u32 gMonFrontPic_Hawlucha[]; -extern const u32 gMonFrontPic_Dedenne[]; -extern const u32 gMonFrontPic_Carbink[]; -extern const u32 gMonFrontPic_Goomy[]; -extern const u32 gMonFrontPic_Sliggoo[]; -extern const u32 gMonFrontPic_Goodra[]; -extern const u32 gMonFrontPic_Klefki[]; -extern const u32 gMonFrontPic_Phantump[]; -extern const u32 gMonFrontPic_Trevenant[]; -extern const u32 gMonFrontPic_Pumpkaboo[]; -extern const u32 gMonFrontPic_Gourgeist[]; -extern const u32 gMonFrontPic_Bergmite[]; -extern const u32 gMonFrontPic_Avalugg[]; -extern const u32 gMonFrontPic_Noibat[]; -extern const u32 gMonFrontPic_Noivern[]; -extern const u32 gMonFrontPic_Xerneas[]; -extern const u32 gMonFrontPic_Yveltal[]; -extern const u32 gMonFrontPic_Zygarde[]; -extern const u32 gMonFrontPic_Diancie[]; -extern const u32 gMonFrontPic_Hoopa[]; -extern const u32 gMonFrontPic_Volcanion[]; -#endif -#if P_GEN_7_POKEMON == TRUE -extern const u32 gMonFrontPic_Rowlet[]; -extern const u32 gMonFrontPic_Dartrix[]; -extern const u32 gMonFrontPic_Decidueye[]; -extern const u32 gMonFrontPic_Litten[]; -extern const u32 gMonFrontPic_Torracat[]; -extern const u32 gMonFrontPic_Incineroar[]; -extern const u32 gMonFrontPic_Popplio[]; -extern const u32 gMonFrontPic_Brionne[]; -extern const u32 gMonFrontPic_Primarina[]; -extern const u32 gMonFrontPic_Pikipek[]; -extern const u32 gMonFrontPic_Trumbeak[]; -extern const u32 gMonFrontPic_Toucannon[]; -extern const u32 gMonFrontPic_Yungoos[]; -extern const u32 gMonFrontPic_Gumshoos[]; -extern const u32 gMonFrontPic_Grubbin[]; -extern const u32 gMonFrontPic_Charjabug[]; -extern const u32 gMonFrontPic_Vikavolt[]; -extern const u32 gMonFrontPic_Crabrawler[]; -extern const u32 gMonFrontPic_Crabominable[]; -extern const u32 gMonFrontPic_Oricorio[]; -extern const u32 gMonFrontPic_Cutiefly[]; -extern const u32 gMonFrontPic_Ribombee[]; -extern const u32 gMonFrontPic_Rockruff[]; -extern const u32 gMonFrontPic_Lycanroc[]; -extern const u32 gMonFrontPic_Wishiwashi[]; -extern const u32 gMonFrontPic_Mareanie[]; -extern const u32 gMonFrontPic_Toxapex[]; -extern const u32 gMonFrontPic_Mudbray[]; -extern const u32 gMonFrontPic_Mudsdale[]; -extern const u32 gMonFrontPic_Dewpider[]; -extern const u32 gMonFrontPic_Araquanid[]; -extern const u32 gMonFrontPic_Fomantis[]; -extern const u32 gMonFrontPic_Lurantis[]; -extern const u32 gMonFrontPic_Morelull[]; -extern const u32 gMonFrontPic_Shiinotic[]; -extern const u32 gMonFrontPic_Salandit[]; -extern const u32 gMonFrontPic_Salazzle[]; -extern const u32 gMonFrontPic_Stufful[]; -extern const u32 gMonFrontPic_Bewear[]; -extern const u32 gMonFrontPic_Bounsweet[]; -extern const u32 gMonFrontPic_Steenee[]; -extern const u32 gMonFrontPic_Tsareena[]; -extern const u32 gMonFrontPic_Comfey[]; -extern const u32 gMonFrontPic_Oranguru[]; -extern const u32 gMonFrontPic_Passimian[]; -extern const u32 gMonFrontPic_Wimpod[]; -extern const u32 gMonFrontPic_Golisopod[]; -extern const u32 gMonFrontPic_Sandygast[]; -extern const u32 gMonFrontPic_Palossand[]; -extern const u32 gMonFrontPic_Pyukumuku[]; -extern const u32 gMonFrontPic_TypeNull[]; -extern const u32 gMonFrontPic_Silvally[]; -extern const u32 gMonFrontPic_Minior[]; -extern const u32 gMonFrontPic_Komala[]; -extern const u32 gMonFrontPic_Turtonator[]; -extern const u32 gMonFrontPic_Togedemaru[]; -extern const u32 gMonFrontPic_Mimikyu[]; -extern const u32 gMonFrontPic_Bruxish[]; -extern const u32 gMonFrontPic_Drampa[]; -extern const u32 gMonFrontPic_Dhelmise[]; -extern const u32 gMonFrontPic_JangmoO[]; -extern const u32 gMonFrontPic_HakamoO[]; -extern const u32 gMonFrontPic_KommoO[]; -extern const u32 gMonFrontPic_TapuKoko[]; -extern const u32 gMonFrontPic_TapuLele[]; -extern const u32 gMonFrontPic_TapuBulu[]; -extern const u32 gMonFrontPic_TapuFini[]; -extern const u32 gMonFrontPic_Cosmog[]; -extern const u32 gMonFrontPic_Cosmoem[]; -extern const u32 gMonFrontPic_Solgaleo[]; -extern const u32 gMonFrontPic_Lunala[]; -extern const u32 gMonFrontPic_Nihilego[]; -extern const u32 gMonFrontPic_Buzzwole[]; -extern const u32 gMonFrontPic_Pheromosa[]; -extern const u32 gMonFrontPic_Xurkitree[]; -extern const u32 gMonFrontPic_Celesteela[]; -extern const u32 gMonFrontPic_Kartana[]; -extern const u32 gMonFrontPic_Guzzlord[]; -extern const u32 gMonFrontPic_Necrozma[]; -extern const u32 gMonFrontPic_Magearna[]; -extern const u32 gMonFrontPic_Marshadow[]; -extern const u32 gMonFrontPic_Poipole[]; -extern const u32 gMonFrontPic_Naganadel[]; -extern const u32 gMonFrontPic_Stakataka[]; -extern const u32 gMonFrontPic_Blacephalon[]; -extern const u32 gMonFrontPic_Zeraora[]; -extern const u32 gMonFrontPic_Meltan[]; -extern const u32 gMonFrontPic_Melmetal[]; -#endif -#if P_GEN_8_POKEMON == TRUE -extern const u32 gMonFrontPic_Grookey[]; -extern const u32 gMonFrontPic_Thwackey[]; -extern const u32 gMonFrontPic_Rillaboom[]; -extern const u32 gMonFrontPic_Scorbunny[]; -extern const u32 gMonFrontPic_Raboot[]; -extern const u32 gMonFrontPic_Cinderace[]; -extern const u32 gMonFrontPic_Sobble[]; -extern const u32 gMonFrontPic_Drizzile[]; -extern const u32 gMonFrontPic_Inteleon[]; -extern const u32 gMonFrontPic_Skwovet[]; -extern const u32 gMonFrontPic_Greedent[]; -extern const u32 gMonFrontPic_Rookidee[]; -extern const u32 gMonFrontPic_Corvisquire[]; -extern const u32 gMonFrontPic_Corviknight[]; -extern const u32 gMonFrontPic_Blipbug[]; -extern const u32 gMonFrontPic_Dottler[]; -extern const u32 gMonFrontPic_Orbeetle[]; -extern const u32 gMonFrontPic_Nickit[]; -extern const u32 gMonFrontPic_Thievul[]; -extern const u32 gMonFrontPic_Gossifleur[]; -extern const u32 gMonFrontPic_Eldegoss[]; -extern const u32 gMonFrontPic_Wooloo[]; -extern const u32 gMonFrontPic_Dubwool[]; -extern const u32 gMonFrontPic_Chewtle[]; -extern const u32 gMonFrontPic_Drednaw[]; -extern const u32 gMonFrontPic_Yamper[]; -extern const u32 gMonFrontPic_Boltund[]; -extern const u32 gMonFrontPic_Rolycoly[]; -extern const u32 gMonFrontPic_Carkol[]; -extern const u32 gMonFrontPic_Coalossal[]; -extern const u32 gMonFrontPic_Applin[]; -extern const u32 gMonFrontPic_Flapple[]; -extern const u32 gMonFrontPic_Appletun[]; -extern const u32 gMonFrontPic_Silicobra[]; -extern const u32 gMonFrontPic_Sandaconda[]; -extern const u32 gMonFrontPic_Cramorant[]; -extern const u32 gMonFrontPic_Arrokuda[]; -extern const u32 gMonFrontPic_Barraskewda[]; -extern const u32 gMonFrontPic_Toxel[]; -extern const u32 gMonFrontPic_Toxtricity[]; -extern const u32 gMonFrontPic_Sizzlipede[]; -extern const u32 gMonFrontPic_Centiskorch[]; -extern const u32 gMonFrontPic_Clobbopus[]; -extern const u32 gMonFrontPic_Grapploct[]; -extern const u32 gMonFrontPic_Sinistea[]; -extern const u32 gMonFrontPic_Polteageist[]; -extern const u32 gMonFrontPic_Hatenna[]; -extern const u32 gMonFrontPic_Hattrem[]; -extern const u32 gMonFrontPic_Hatterene[]; -extern const u32 gMonFrontPic_Impidimp[]; -extern const u32 gMonFrontPic_Morgrem[]; -extern const u32 gMonFrontPic_Grimmsnarl[]; -extern const u32 gMonFrontPic_Obstagoon[]; -extern const u32 gMonFrontPic_Perrserker[]; -extern const u32 gMonFrontPic_Cursola[]; -extern const u32 gMonFrontPic_Sirfetchd[]; -extern const u32 gMonFrontPic_MrRime[]; -extern const u32 gMonFrontPic_Runerigus[]; -extern const u32 gMonFrontPic_Milcery[]; -extern const u32 gMonFrontPic_Alcremie[]; -extern const u32 gMonFrontPic_Falinks[]; -extern const u32 gMonFrontPic_Pincurchin[]; -extern const u32 gMonFrontPic_Snom[]; -extern const u32 gMonFrontPic_Frosmoth[]; -extern const u32 gMonFrontPic_Stonjourner[]; -extern const u32 gMonFrontPic_Eiscue[]; -extern const u32 gMonFrontPic_Indeedee[]; -extern const u32 gMonFrontPic_Morpeko[]; -extern const u32 gMonFrontPic_Cufant[]; -extern const u32 gMonFrontPic_Copperajah[]; -extern const u32 gMonFrontPic_Dracozolt[]; -extern const u32 gMonFrontPic_Arctozolt[]; -extern const u32 gMonFrontPic_Dracovish[]; -extern const u32 gMonFrontPic_Arctovish[]; -extern const u32 gMonFrontPic_Duraludon[]; -extern const u32 gMonFrontPic_Dreepy[]; -extern const u32 gMonFrontPic_Drakloak[]; -extern const u32 gMonFrontPic_Dragapult[]; -extern const u32 gMonFrontPic_Zacian[]; -extern const u32 gMonFrontPic_Zamazenta[]; -extern const u32 gMonFrontPic_Eternatus[]; -extern const u32 gMonFrontPic_Kubfu[]; -extern const u32 gMonFrontPic_Urshifu[]; -extern const u32 gMonFrontPic_Zarude[]; -extern const u32 gMonFrontPic_Regieleki[]; -extern const u32 gMonFrontPic_Regidrago[]; -extern const u32 gMonFrontPic_Glastrier[]; -extern const u32 gMonFrontPic_Spectrier[]; -extern const u32 gMonFrontPic_Calyrex[]; -extern const u32 gMonFrontPic_Wyrdeer[]; -extern const u32 gMonFrontPic_Kleavor[]; -extern const u32 gMonFrontPic_Ursaluna[]; -extern const u32 gMonFrontPic_Basculegion[]; -extern const u32 gMonFrontPic_Sneasler[]; -extern const u32 gMonFrontPic_Overqwil[]; -extern const u32 gMonFrontPic_Enamorus[]; -#endif -extern const u32 gMonFrontPic_VenusaurMega[]; -extern const u32 gMonFrontPic_CharizardMegaX[]; -extern const u32 gMonFrontPic_CharizardMegaY[]; -extern const u32 gMonFrontPic_BlastoiseMega[]; -extern const u32 gMonFrontPic_BeedrillMega[]; -extern const u32 gMonFrontPic_PidgeotMega[]; -extern const u32 gMonFrontPic_AlakazamMega[]; -extern const u32 gMonFrontPic_SlowbroMega[]; -extern const u32 gMonFrontPic_GengarMega[]; -extern const u32 gMonFrontPic_KangaskhanMega[]; -extern const u32 gMonFrontPic_PinsirMega[]; -extern const u32 gMonFrontPic_GyaradosMega[]; -extern const u32 gMonFrontPic_AerodactylMega[]; -extern const u32 gMonFrontPic_MewtwoMegaX[]; -extern const u32 gMonFrontPic_MewtwoMegaY[]; -extern const u32 gMonFrontPic_AmpharosMega[]; -extern const u32 gMonFrontPic_SteelixMega[]; -extern const u32 gMonFrontPic_ScizorMega[]; -extern const u32 gMonFrontPic_HeracrossMega[]; -extern const u32 gMonFrontPic_HoundoomMega[]; -extern const u32 gMonFrontPic_TyranitarMega[]; -extern const u32 gMonFrontPic_SceptileMega[]; -extern const u32 gMonFrontPic_BlazikenMega[]; -extern const u32 gMonFrontPic_SwampertMega[]; -extern const u32 gMonFrontPic_GardevoirMega[]; -extern const u32 gMonFrontPic_SableyeMega[]; -extern const u32 gMonFrontPic_MawileMega[]; -extern const u32 gMonFrontPic_AggronMega[]; -extern const u32 gMonFrontPic_MedichamMega[]; -extern const u32 gMonFrontPic_ManectricMega[]; -extern const u32 gMonFrontPic_SharpedoMega[]; -extern const u32 gMonFrontPic_CameruptMega[]; -extern const u32 gMonFrontPic_AltariaMega[]; -extern const u32 gMonFrontPic_BanetteMega[]; -extern const u32 gMonFrontPic_AbsolMega[]; -extern const u32 gMonFrontPic_GlalieMega[]; -extern const u32 gMonFrontPic_SalamenceMega[]; -extern const u32 gMonFrontPic_MetagrossMega[]; -extern const u32 gMonFrontPic_LatiasMega[]; -extern const u32 gMonFrontPic_LatiosMega[]; -#if P_GEN_4_POKEMON == TRUE -extern const u32 gMonFrontPic_LopunnyMega[]; -extern const u32 gMonFrontPic_GarchompMega[]; -extern const u32 gMonFrontPic_LucarioMega[]; -extern const u32 gMonFrontPic_AbomasnowMega[]; -extern const u32 gMonFrontPic_GalladeMega[]; -#endif -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonFrontPic_AudinoMega[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u32 gMonFrontPic_DiancieMega[]; -#endif -extern const u32 gMonFrontPic_RayquazaMega[]; -extern const u32 gMonFrontPic_KyogrePrimal[]; -extern const u32 gMonFrontPic_GroudonPrimal[]; -extern const u32 gMonFrontPic_RattataAlolan[]; -extern const u32 gMonFrontPic_RaticateAlolan[]; -extern const u32 gMonFrontPic_RaichuAlolan[]; -extern const u32 gMonFrontPic_SandshrewAlolan[]; -extern const u32 gMonFrontPic_SandslashAlolan[]; -extern const u32 gMonFrontPic_VulpixAlolan[]; -extern const u32 gMonFrontPic_NinetalesAlolan[]; -extern const u32 gMonFrontPic_DiglettAlolan[]; -extern const u32 gMonFrontPic_DugtrioAlolan[]; -extern const u32 gMonFrontPic_MeowthAlolan[]; -extern const u32 gMonFrontPic_PersianAlolan[]; -extern const u32 gMonFrontPic_GeodudeAlolan[]; -extern const u32 gMonFrontPic_GravelerAlolan[]; -extern const u32 gMonFrontPic_GolemAlolan[]; -extern const u32 gMonFrontPic_GrimerAlolan[]; -extern const u32 gMonFrontPic_MukAlolan[]; -extern const u32 gMonFrontPic_ExeggutorAlolan[]; -extern const u32 gMonFrontPic_MarowakAlolan[]; -extern const u32 gMonFrontPic_MeowthGalarian[]; -extern const u32 gMonFrontPic_PonytaGalarian[]; -extern const u32 gMonFrontPic_RapidashGalarian[]; -extern const u32 gMonFrontPic_SlowpokeGalarian[]; -extern const u32 gMonFrontPic_SlowbroGalarian[]; -extern const u32 gMonFrontPic_FarfetchdGalarian[]; -extern const u32 gMonFrontPic_WeezingGalarian[]; -extern const u32 gMonFrontPic_MrMimeGalarian[]; -extern const u32 gMonFrontPic_ArticunoGalarian[]; -extern const u32 gMonFrontPic_ZapdosGalarian[]; -extern const u32 gMonFrontPic_MoltresGalarian[]; -extern const u32 gMonFrontPic_SlowkingGalarian[]; -extern const u32 gMonFrontPic_CorsolaGalarian[]; -extern const u32 gMonFrontPic_ZigzagoonGalarian[]; -extern const u32 gMonFrontPic_LinooneGalarian[]; -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonFrontPic_DarumakaGalarian[]; -extern const u32 gMonFrontPic_DarmanitanGalarian[]; -extern const u32 gMonFrontPic_YamaskGalarian[]; -extern const u32 gMonFrontPic_StunfiskGalarian[]; -#endif -extern const u32 gMonFrontPic_GrowlitheHisuian[]; -extern const u32 gMonFrontPic_ArcanineHisuian[]; -extern const u32 gMonFrontPic_VoltorbHisuian[]; -extern const u32 gMonFrontPic_ElectrodeHisuian[]; -extern const u32 gMonFrontPic_TyphlosionHisuian[]; -extern const u32 gMonFrontPic_QwilfishHisuian[]; -extern const u32 gMonFrontPic_SneaselHisuian[]; -extern const u32 gMonFrontPic_SneaselHisuianF[]; -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonFrontPic_SamurottHisuian[]; -extern const u32 gMonFrontPic_LilligantHisuian[]; -extern const u32 gMonFrontPic_ZoruaHisuian[]; -extern const u32 gMonFrontPic_ZoroarkHisuian[]; -extern const u32 gMonFrontPic_BraviaryHisuian[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u32 gMonFrontPic_SliggooHisuian[]; -extern const u32 gMonFrontPic_GoodraHisuian[]; -extern const u32 gMonFrontPic_AvaluggHisuian[]; -#endif -#if P_GEN_7_POKEMON == TRUE -extern const u32 gMonFrontPic_DecidueyeHisuian[]; -#endif -extern const u32 gMonFrontPic_PikachuCosplay[]; -extern const u32 gMonFrontPic_PikachuRockStar[]; -extern const u32 gMonFrontPic_PikachuBelle[]; -extern const u32 gMonFrontPic_PikachuPopStar[]; -extern const u32 gMonFrontPic_PikachuPhD[]; -extern const u32 gMonFrontPic_PikachuLibre[]; -extern const u32 gMonFrontPic_PikachuOriginalCap[]; -extern const u32 gMonFrontPic_PikachuHoennCap[]; -extern const u32 gMonFrontPic_PikachuSinnohCap[]; -extern const u32 gMonFrontPic_PikachuUnovaCap[]; -extern const u32 gMonFrontPic_PikachuKalosCap[]; -extern const u32 gMonFrontPic_PikachuAlolaCap[]; -extern const u32 gMonFrontPic_PikachuPartnerCap[]; -extern const u32 gMonFrontPic_PikachuWorldCap[]; -extern const u32 gMonFrontPic_PichuSpikyEared[]; -extern const u32 gMonFrontPic_UnownB[]; -extern const u32 gMonFrontPic_UnownC[]; -extern const u32 gMonFrontPic_UnownD[]; -extern const u32 gMonFrontPic_UnownE[]; -extern const u32 gMonFrontPic_UnownF[]; -extern const u32 gMonFrontPic_UnownG[]; -extern const u32 gMonFrontPic_UnownH[]; -extern const u32 gMonFrontPic_UnownI[]; -extern const u32 gMonFrontPic_UnownJ[]; -extern const u32 gMonFrontPic_UnownK[]; -extern const u32 gMonFrontPic_UnownL[]; -extern const u32 gMonFrontPic_UnownM[]; -extern const u32 gMonFrontPic_UnownN[]; -extern const u32 gMonFrontPic_UnownO[]; -extern const u32 gMonFrontPic_UnownP[]; -extern const u32 gMonFrontPic_UnownQ[]; -extern const u32 gMonFrontPic_UnownR[]; -extern const u32 gMonFrontPic_UnownS[]; -extern const u32 gMonFrontPic_UnownT[]; -extern const u32 gMonFrontPic_UnownU[]; -extern const u32 gMonFrontPic_UnownV[]; -extern const u32 gMonFrontPic_UnownW[]; -extern const u32 gMonFrontPic_UnownX[]; -extern const u32 gMonFrontPic_UnownY[]; -extern const u32 gMonFrontPic_UnownZ[]; -extern const u32 gMonFrontPic_UnownExclamationMark[]; -extern const u32 gMonFrontPic_UnownQuestionMark[]; -extern const u32 gMonFrontPic_CastformSunny[]; -extern const u32 gMonFrontPic_CastformRainy[]; -extern const u32 gMonFrontPic_CastformSnowy[]; -extern const u32 gMonFrontPic_DeoxysAttack[]; -extern const u32 gMonFrontPic_DeoxysDefense[]; -extern const u32 gMonFrontPic_DeoxysSpeed[]; -#if P_GEN_4_POKEMON == TRUE -extern const u32 gMonFrontPic_BurmySandyCloak[]; -extern const u32 gMonFrontPic_BurmyTrashCloak[]; -extern const u32 gMonFrontPic_WormadamSandyCloak[]; -extern const u32 gMonFrontPic_WormadamTrashCloak[]; -extern const u32 gMonFrontPic_CherrimSunshine[]; -extern const u32 gMonFrontPic_ShellosEastSea[]; -extern const u32 gMonFrontPic_GastrodonEastSea[]; -extern const u32 gMonFrontPic_RotomHeat[]; -extern const u32 gMonFrontPic_RotomWash[]; -extern const u32 gMonFrontPic_RotomFrost[]; -extern const u32 gMonFrontPic_RotomFan[]; -extern const u32 gMonFrontPic_RotomMow[]; -extern const u32 gMonFrontPic_DialgaOrigin[]; -extern const u32 gMonFrontPic_PalkiaOrigin[]; -extern const u32 gMonFrontPic_GiratinaOrigin[]; -extern const u32 gMonFrontPic_ShayminSky[]; -#endif -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonFrontPic_BasculinBlueStriped[]; -extern const u32 gMonFrontPic_BasculinWhiteStriped[]; -extern const u32 gMonFrontPic_DarmanitanZenMode[]; -extern const u32 gMonFrontPic_DarmanitanZenModeGalarian[]; -extern const u32 gMonFrontPic_SawsbuckSummer[]; -extern const u32 gMonFrontPic_SawsbuckAutumn[]; -extern const u32 gMonFrontPic_SawsbuckWinter[]; -extern const u32 gMonFrontPic_TornadusTherian[]; -extern const u32 gMonFrontPic_ThundurusTherian[]; -extern const u32 gMonFrontPic_LandorusTherian[]; -#endif -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonFrontPic_KyuremWhite[]; -extern const u32 gMonFrontPic_KyuremBlack[]; -extern const u32 gMonFrontPic_KeldeoResolute[]; -extern const u32 gMonFrontPic_MeloettaPirouette[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u32 gMonFrontPic_GreninjaAsh[]; -extern const u32 gMonFrontPic_VivillonPolar[]; -extern const u32 gMonFrontPic_VivillonTundra[]; -extern const u32 gMonFrontPic_VivillonContinental[]; -extern const u32 gMonFrontPic_VivillonGarden[]; -extern const u32 gMonFrontPic_VivillonElegant[]; -extern const u32 gMonFrontPic_VivillonMeadow[]; -extern const u32 gMonFrontPic_VivillonModern[]; -extern const u32 gMonFrontPic_VivillonMarine[]; -extern const u32 gMonFrontPic_VivillonArchipelago[]; -extern const u32 gMonFrontPic_VivillonHighPlains[]; -extern const u32 gMonFrontPic_VivillonSandstorm[]; -extern const u32 gMonFrontPic_VivillonRiver[]; -extern const u32 gMonFrontPic_VivillonMonsoon[]; -extern const u32 gMonFrontPic_VivillonSavanna[]; -extern const u32 gMonFrontPic_VivillonSun[]; -extern const u32 gMonFrontPic_VivillonOcean[]; -extern const u32 gMonFrontPic_VivillonJungle[]; -extern const u32 gMonFrontPic_VivillonFancy[]; -extern const u32 gMonFrontPic_VivillonPokeBall[]; -extern const u32 gMonFrontPic_FloetteEternalFlower[]; -extern const u32 gMonFrontPic_FurfrouHeartTrim[]; -extern const u32 gMonFrontPic_FurfrouStarTrim[]; -extern const u32 gMonFrontPic_FurfrouDiamondTrim[]; -extern const u32 gMonFrontPic_FurfrouDebutanteTrim[]; -extern const u32 gMonFrontPic_FurfrouMatronTrim[]; -extern const u32 gMonFrontPic_FurfrouDandyTrim[]; -extern const u32 gMonFrontPic_FurfrouLaReineTrim[]; -extern const u32 gMonFrontPic_FurfrouKabukiTrim[]; -extern const u32 gMonFrontPic_FurfrouPharaohTrim[]; -extern const u32 gMonFrontPic_MeowsticFemale[]; -extern const u32 gMonFrontPic_AegislashBlade[]; -extern const u32 gMonFrontPic_PumpkabooSmall[]; -extern const u32 gMonFrontPic_PumpkabooLarge[]; -extern const u32 gMonFrontPic_PumpkabooSuper[]; -extern const u32 gMonFrontPic_GourgeistSmall[]; -extern const u32 gMonFrontPic_GourgeistLarge[]; -extern const u32 gMonFrontPic_GourgeistSuper[]; -extern const u32 gMonFrontPic_XerneasActive[]; -extern const u32 gMonFrontPic_Zygarde10[]; -extern const u32 gMonFrontPic_ZygardeComplete[]; -extern const u32 gMonFrontPic_HoopaUnbound[]; -#endif -#if P_GEN_7_POKEMON == TRUE -extern const u32 gMonFrontPic_OricorioPomPom[]; -extern const u32 gMonFrontPic_OricorioPau[]; -extern const u32 gMonFrontPic_OricorioSensu[]; -extern const u32 gMonFrontPic_LycanrocMidnight[]; -extern const u32 gMonFrontPic_LycanrocDusk[]; -extern const u32 gMonFrontPic_WishiwashiSchool[]; -extern const u32 gMonFrontPic_MiniorCore[]; -extern const u32 gMonFrontPic_MimikyuBusted[]; -extern const u32 gMonFrontPic_NecrozmaDuskMane[]; -extern const u32 gMonFrontPic_NecrozmaDawnWings[]; -extern const u32 gMonFrontPic_NecrozmaUltra[]; -extern const u32 gMonFrontPic_MagearnaOriginalColor[]; -#endif -#if P_GEN_8_POKEMON == TRUE -extern const u32 gMonFrontPic_CramorantGulping[]; -extern const u32 gMonFrontPic_CramorantGorging[]; -extern const u32 gMonFrontPic_ToxtricityLowKey[]; -extern const u32 gMonFrontPic_AlcremieRubyCream[]; -extern const u32 gMonFrontPic_AlcremieMatchaCream[]; -extern const u32 gMonFrontPic_AlcremieMintCream[]; -extern const u32 gMonFrontPic_AlcremieLemonCream[]; -extern const u32 gMonFrontPic_AlcremieSaltedCream[]; -extern const u32 gMonFrontPic_AlcremieRubySwirl[]; -extern const u32 gMonFrontPic_AlcremieCaramelSwirl[]; -extern const u32 gMonFrontPic_AlcremieRainbowSwirl[]; -extern const u32 gMonFrontPic_EiscueNoiceFace[]; -extern const u32 gMonFrontPic_IndeedeeFemale[]; -extern const u32 gMonFrontPic_MorpekoHangry[]; -extern const u32 gMonFrontPic_ZacianCrownedSword[]; -extern const u32 gMonFrontPic_ZamazentaCrownedShield[]; -extern const u32 gMonFrontPic_EternatusEternamax[]; -extern const u32 gMonFrontPic_UrshifuRapidStrikeStyle[]; -extern const u32 gMonFrontPic_ZarudeDada[]; -extern const u32 gMonFrontPic_CalyrexIceRider[]; -extern const u32 gMonFrontPic_CalyrexShadowRider[]; -extern const u32 gMonFrontPic_EnamorusTherian[]; -extern const u32 gMonFrontPic_BasculegionFemale[]; -#endif -extern const u32 gMonFrontPic_Egg[]; - -extern const u32 gMonBackPic_CircledQuestionMark[]; -extern const u32 gMonBackPic_DoubleQuestionMark[]; -extern const u32 gMonBackPic_Bulbasaur[]; -extern const u32 gMonBackPic_Ivysaur[]; -extern const u32 gMonBackPic_Venusaur[]; -extern const u32 gMonBackPic_VenusaurF[]; -extern const u32 gMonBackPic_Charmander[]; -extern const u32 gMonBackPic_Charmeleon[]; -extern const u32 gMonBackPic_Charizard[]; -extern const u32 gMonBackPic_Squirtle[]; -extern const u32 gMonBackPic_Wartortle[]; -extern const u32 gMonBackPic_Blastoise[]; -extern const u32 gMonBackPic_Caterpie[]; -extern const u32 gMonBackPic_Metapod[]; -extern const u32 gMonBackPic_Butterfree[]; -extern const u32 gMonBackPic_ButterfreeF[]; -extern const u32 gMonBackPic_Weedle[]; -extern const u32 gMonBackPic_Kakuna[]; -extern const u32 gMonBackPic_Beedrill[]; -extern const u32 gMonBackPic_Pidgey[]; -extern const u32 gMonBackPic_Pidgeotto[]; -extern const u32 gMonBackPic_Pidgeot[]; -extern const u32 gMonBackPic_Rattata[]; -extern const u32 gMonBackPic_RattataF[]; -extern const u32 gMonBackPic_Raticate[]; -extern const u32 gMonBackPic_RaticateF[]; -extern const u32 gMonBackPic_Spearow[]; -extern const u32 gMonBackPic_Fearow[]; -extern const u32 gMonBackPic_Ekans[]; -extern const u32 gMonBackPic_Arbok[]; -extern const u32 gMonBackPic_Pikachu[]; -extern const u32 gMonBackPic_PikachuF[]; -extern const u32 gMonBackPic_Raichu[]; -extern const u32 gMonBackPic_Sandshrew[]; -extern const u32 gMonBackPic_Sandslash[]; -extern const u32 gMonBackPic_NidoranF[]; -extern const u32 gMonBackPic_Nidorina[]; -extern const u32 gMonBackPic_Nidoqueen[]; -extern const u32 gMonBackPic_NidoranM[]; -extern const u32 gMonBackPic_Nidorino[]; -extern const u32 gMonBackPic_Nidoking[]; -extern const u32 gMonBackPic_Clefairy[]; -extern const u32 gMonBackPic_Clefable[]; -extern const u32 gMonBackPic_Vulpix[]; -extern const u32 gMonBackPic_Ninetales[]; -extern const u32 gMonBackPic_Jigglypuff[]; -extern const u32 gMonBackPic_Wigglytuff[]; -extern const u32 gMonBackPic_Zubat[]; -extern const u32 gMonBackPic_ZubatF[]; -extern const u32 gMonBackPic_Golbat[]; -extern const u32 gMonBackPic_GolbatF[]; -extern const u32 gMonBackPic_Oddish[]; -extern const u32 gMonBackPic_Gloom[]; -extern const u32 gMonBackPic_GloomF[]; -extern const u32 gMonBackPic_Vileplume[]; -extern const u32 gMonBackPic_VileplumeF[]; -extern const u32 gMonBackPic_Paras[]; -extern const u32 gMonBackPic_Parasect[]; -extern const u32 gMonBackPic_Venonat[]; -extern const u32 gMonBackPic_Venomoth[]; -extern const u32 gMonBackPic_Diglett[]; -extern const u32 gMonBackPic_Dugtrio[]; -extern const u32 gMonBackPic_Meowth[]; -extern const u32 gMonBackPic_Persian[]; -extern const u32 gMonBackPic_Psyduck[]; -extern const u32 gMonBackPic_Golduck[]; -extern const u32 gMonBackPic_Mankey[]; -extern const u32 gMonBackPic_Primeape[]; -extern const u32 gMonBackPic_Growlithe[]; -extern const u32 gMonBackPic_Arcanine[]; -extern const u32 gMonBackPic_Poliwag[]; -extern const u32 gMonBackPic_Poliwhirl[]; -extern const u32 gMonBackPic_Poliwrath[]; -extern const u32 gMonBackPic_Abra[]; -extern const u32 gMonBackPic_Kadabra[]; -extern const u32 gMonBackPic_KadabraF[]; -extern const u32 gMonBackPic_Alakazam[]; -extern const u32 gMonBackPic_AlakazamF[]; -extern const u32 gMonBackPic_Machop[]; -extern const u32 gMonBackPic_Machoke[]; -extern const u32 gMonBackPic_Machamp[]; -extern const u32 gMonBackPic_Bellsprout[]; -extern const u32 gMonBackPic_Weepinbell[]; -extern const u32 gMonBackPic_Victreebel[]; -extern const u32 gMonBackPic_Tentacool[]; -extern const u32 gMonBackPic_Tentacruel[]; -extern const u32 gMonBackPic_Geodude[]; -extern const u32 gMonBackPic_Graveler[]; -extern const u32 gMonBackPic_Golem[]; -extern const u32 gMonBackPic_Ponyta[]; -extern const u32 gMonBackPic_Rapidash[]; -extern const u32 gMonBackPic_Slowpoke[]; -extern const u32 gMonBackPic_Slowbro[]; -extern const u32 gMonBackPic_Magnemite[]; -extern const u32 gMonBackPic_Magneton[]; -extern const u32 gMonBackPic_Farfetchd[]; -extern const u32 gMonBackPic_Doduo[]; -extern const u32 gMonBackPic_DoduoF[]; -extern const u32 gMonBackPic_Dodrio[]; -extern const u32 gMonBackPic_DodrioF[]; -extern const u32 gMonBackPic_Seel[]; -extern const u32 gMonBackPic_Dewgong[]; -extern const u32 gMonBackPic_Grimer[]; -extern const u32 gMonBackPic_Muk[]; -extern const u32 gMonBackPic_Shellder[]; -extern const u32 gMonBackPic_Cloyster[]; -extern const u32 gMonBackPic_Gastly[]; -extern const u32 gMonBackPic_Haunter[]; -extern const u32 gMonBackPic_Gengar[]; -extern const u32 gMonBackPic_Onix[]; -extern const u32 gMonBackPic_Drowzee[]; -extern const u32 gMonBackPic_Hypno[]; -extern const u32 gMonBackPic_HypnoF[]; -extern const u32 gMonBackPic_Krabby[]; -extern const u32 gMonBackPic_Kingler[]; -extern const u32 gMonBackPic_Voltorb[]; -extern const u32 gMonBackPic_Electrode[]; -extern const u32 gMonBackPic_Exeggcute[]; -extern const u32 gMonBackPic_Exeggutor[]; -extern const u32 gMonBackPic_Cubone[]; -extern const u32 gMonBackPic_Marowak[]; -extern const u32 gMonBackPic_Hitmonlee[]; -extern const u32 gMonBackPic_Hitmonchan[]; -extern const u32 gMonBackPic_Lickitung[]; -extern const u32 gMonBackPic_Koffing[]; -extern const u32 gMonBackPic_Weezing[]; -extern const u32 gMonBackPic_Rhyhorn[]; -extern const u32 gMonBackPic_RhyhornF[]; -extern const u32 gMonBackPic_Rhydon[]; -extern const u32 gMonBackPic_RhydonF[]; -extern const u32 gMonBackPic_Chansey[]; -extern const u32 gMonBackPic_Tangela[]; -extern const u32 gMonBackPic_Kangaskhan[]; -extern const u32 gMonBackPic_Horsea[]; -extern const u32 gMonBackPic_Seadra[]; -extern const u32 gMonBackPic_Goldeen[]; -extern const u32 gMonBackPic_GoldeenF[]; -extern const u32 gMonBackPic_Seaking[]; -extern const u32 gMonBackPic_SeakingF[]; -extern const u32 gMonBackPic_Staryu[]; -extern const u32 gMonBackPic_Starmie[]; -extern const u32 gMonBackPic_MrMime[]; -extern const u32 gMonBackPic_Scyther[]; -extern const u32 gMonBackPic_Jynx[]; -extern const u32 gMonBackPic_Electabuzz[]; -extern const u32 gMonBackPic_Magmar[]; -extern const u32 gMonBackPic_Pinsir[]; -extern const u32 gMonBackPic_Tauros[]; -extern const u32 gMonBackPic_Magikarp[]; -extern const u32 gMonBackPic_MagikarpF[]; -extern const u32 gMonBackPic_Gyarados[]; -extern const u32 gMonBackPic_GyaradosF[]; -extern const u32 gMonBackPic_Lapras[]; -extern const u32 gMonBackPic_Ditto[]; -extern const u32 gMonBackPic_Eevee[]; -extern const u32 gMonBackPic_EeveeF[]; -extern const u32 gMonBackPic_Vaporeon[]; -extern const u32 gMonBackPic_Jolteon[]; -extern const u32 gMonBackPic_Flareon[]; -extern const u32 gMonBackPic_Porygon[]; -extern const u32 gMonBackPic_Omanyte[]; -extern const u32 gMonBackPic_Omastar[]; -extern const u32 gMonBackPic_Kabuto[]; -extern const u32 gMonBackPic_Kabutops[]; -extern const u32 gMonBackPic_Aerodactyl[]; -extern const u32 gMonBackPic_Snorlax[]; -extern const u32 gMonBackPic_Articuno[]; -extern const u32 gMonBackPic_Zapdos[]; -extern const u32 gMonBackPic_Moltres[]; -extern const u32 gMonBackPic_Dratini[]; -extern const u32 gMonBackPic_Dragonair[]; -extern const u32 gMonBackPic_Dragonite[]; -extern const u32 gMonBackPic_Mewtwo[]; -extern const u32 gMonBackPic_Mew[]; -extern const u32 gMonBackPic_Chikorita[]; -extern const u32 gMonBackPic_Bayleef[]; -extern const u32 gMonBackPic_Meganium[]; -extern const u32 gMonBackPic_MeganiumF[]; -extern const u32 gMonBackPic_Cyndaquil[]; -extern const u32 gMonBackPic_Quilava[]; -extern const u32 gMonBackPic_Typhlosion[]; -extern const u32 gMonBackPic_Totodile[]; -extern const u32 gMonBackPic_Croconaw[]; -extern const u32 gMonBackPic_Feraligatr[]; -extern const u32 gMonBackPic_Sentret[]; -extern const u32 gMonBackPic_Furret[]; -extern const u32 gMonBackPic_Hoothoot[]; -extern const u32 gMonBackPic_Noctowl[]; -extern const u32 gMonBackPic_Ledyba[]; -extern const u32 gMonBackPic_LedybaF[]; -extern const u32 gMonBackPic_Ledian[]; -extern const u32 gMonBackPic_LedianF[]; -extern const u32 gMonBackPic_Spinarak[]; -extern const u32 gMonBackPic_Ariados[]; -extern const u32 gMonBackPic_Crobat[]; -extern const u32 gMonBackPic_Chinchou[]; -extern const u32 gMonBackPic_Lanturn[]; -extern const u32 gMonBackPic_Pichu[]; -extern const u32 gMonBackPic_Cleffa[]; -extern const u32 gMonBackPic_Igglybuff[]; -extern const u32 gMonBackPic_Togepi[]; -extern const u32 gMonBackPic_Togetic[]; -extern const u32 gMonBackPic_Natu[]; -extern const u32 gMonBackPic_Xatu[]; -extern const u32 gMonBackPic_Mareep[]; -extern const u32 gMonBackPic_Flaaffy[]; -extern const u32 gMonBackPic_Ampharos[]; -extern const u32 gMonBackPic_Bellossom[]; -extern const u32 gMonBackPic_Marill[]; -extern const u32 gMonBackPic_Azumarill[]; -extern const u32 gMonBackPic_Sudowoodo[]; -extern const u32 gMonBackPic_SudowoodoF[]; -extern const u32 gMonBackPic_Politoed[]; -extern const u32 gMonBackPic_PolitoedF[]; -extern const u32 gMonBackPic_Hoppip[]; -extern const u32 gMonBackPic_Skiploom[]; -extern const u32 gMonBackPic_Jumpluff[]; -extern const u32 gMonBackPic_Aipom[]; -extern const u32 gMonBackPic_AipomF[]; -extern const u32 gMonBackPic_Sunkern[]; -extern const u32 gMonBackPic_Sunflora[]; -extern const u32 gMonBackPic_Yanma[]; -extern const u32 gMonBackPic_Wooper[]; -extern const u32 gMonBackPic_WooperF[]; -extern const u32 gMonBackPic_Quagsire[]; -extern const u32 gMonBackPic_QuagsireF[]; -extern const u32 gMonBackPic_Espeon[]; -extern const u32 gMonBackPic_Umbreon[]; -extern const u32 gMonBackPic_Murkrow[]; -extern const u32 gMonBackPic_MurkrowF[]; -extern const u32 gMonBackPic_Slowking[]; -extern const u32 gMonBackPic_Misdreavus[]; -extern const u32 gMonBackPic_Unown[]; -extern const u32 gMonBackPic_Wobbuffet[]; -extern const u32 gMonBackPic_WobbuffetF[]; -extern const u32 gMonBackPic_Girafarig[]; -extern const u32 gMonBackPic_GirafarigF[]; -extern const u32 gMonBackPic_Pineco[]; -extern const u32 gMonBackPic_Forretress[]; -extern const u32 gMonBackPic_Dunsparce[]; -extern const u32 gMonBackPic_Gligar[]; -extern const u32 gMonBackPic_GligarF[]; -extern const u32 gMonBackPic_Steelix[]; -extern const u32 gMonBackPic_SteelixF[]; -extern const u32 gMonBackPic_Snubbull[]; -extern const u32 gMonBackPic_Granbull[]; -extern const u32 gMonBackPic_Qwilfish[]; -extern const u32 gMonBackPic_Scizor[]; -extern const u32 gMonBackPic_Shuckle[]; -extern const u32 gMonBackPic_Heracross[]; -extern const u32 gMonBackPic_HeracrossF[]; -extern const u32 gMonBackPic_Sneasel[]; -extern const u32 gMonBackPic_SneaselF[]; -extern const u32 gMonBackPic_Teddiursa[]; -extern const u32 gMonBackPic_Ursaring[]; -extern const u32 gMonBackPic_UrsaringF[]; -extern const u32 gMonBackPic_Slugma[]; -extern const u32 gMonBackPic_Magcargo[]; -extern const u32 gMonBackPic_Swinub[]; -extern const u32 gMonBackPic_Piloswine[]; -extern const u32 gMonBackPic_PiloswineF[]; -extern const u32 gMonBackPic_Corsola[]; -extern const u32 gMonBackPic_Remoraid[]; -extern const u32 gMonBackPic_Octillery[]; -extern const u32 gMonBackPic_OctilleryF[]; -extern const u32 gMonBackPic_Delibird[]; -extern const u32 gMonBackPic_Mantine[]; -extern const u32 gMonBackPic_Skarmory[]; -extern const u32 gMonBackPic_Houndour[]; -extern const u32 gMonBackPic_Houndoom[]; -extern const u32 gMonBackPic_HoundoomF[]; -extern const u32 gMonBackPic_Kingdra[]; -extern const u32 gMonBackPic_Phanpy[]; -extern const u32 gMonBackPic_Donphan[]; -extern const u32 gMonBackPic_DonphanF[]; -extern const u32 gMonBackPic_Porygon2[]; -extern const u32 gMonBackPic_Stantler[]; -extern const u32 gMonBackPic_Smeargle[]; -extern const u32 gMonBackPic_Tyrogue[]; -extern const u32 gMonBackPic_Hitmontop[]; -extern const u32 gMonBackPic_Smoochum[]; -extern const u32 gMonBackPic_Elekid[]; -extern const u32 gMonBackPic_Magby[]; -extern const u32 gMonBackPic_Miltank[]; -extern const u32 gMonBackPic_Blissey[]; -extern const u32 gMonBackPic_Raikou[]; -extern const u32 gMonBackPic_Entei[]; -extern const u32 gMonBackPic_Suicune[]; -extern const u32 gMonBackPic_Larvitar[]; -extern const u32 gMonBackPic_Pupitar[]; -extern const u32 gMonBackPic_Tyranitar[]; -extern const u32 gMonBackPic_Lugia[]; -extern const u32 gMonBackPic_HoOh[]; -extern const u32 gMonBackPic_Celebi[]; -extern const u32 gMonBackPic_Treecko[]; -extern const u32 gMonBackPic_Grovyle[]; -extern const u32 gMonBackPic_Sceptile[]; -extern const u32 gMonBackPic_Torchic[]; -extern const u32 gMonBackPic_TorchicF[]; -extern const u32 gMonBackPic_Combusken[]; -extern const u32 gMonBackPic_CombuskenF[]; -extern const u32 gMonBackPic_Blaziken[]; -extern const u32 gMonBackPic_BlazikenF[]; -extern const u32 gMonBackPic_Mudkip[]; -extern const u32 gMonBackPic_Marshtomp[]; -extern const u32 gMonBackPic_Swampert[]; -extern const u32 gMonBackPic_Poochyena[]; -extern const u32 gMonBackPic_Mightyena[]; -extern const u32 gMonBackPic_Zigzagoon[]; -extern const u32 gMonBackPic_Linoone[]; -extern const u32 gMonBackPic_Wurmple[]; -extern const u32 gMonBackPic_Silcoon[]; -extern const u32 gMonBackPic_Beautifly[]; -extern const u32 gMonBackPic_BeautiflyF[]; -extern const u32 gMonBackPic_Cascoon[]; -extern const u32 gMonBackPic_Dustox[]; -extern const u32 gMonBackPic_DustoxF[]; -extern const u32 gMonBackPic_Lotad[]; -extern const u32 gMonBackPic_Lombre[]; -extern const u32 gMonBackPic_Ludicolo[]; -extern const u32 gMonBackPic_LudicoloF[]; -extern const u32 gMonBackPic_Seedot[]; -extern const u32 gMonBackPic_Nuzleaf[]; -extern const u32 gMonBackPic_NuzleafF[]; -extern const u32 gMonBackPic_Shiftry[]; -extern const u32 gMonBackPic_ShiftryF[]; -extern const u32 gMonBackPic_Taillow[]; -extern const u32 gMonBackPic_Swellow[]; -extern const u32 gMonBackPic_Wingull[]; -extern const u32 gMonBackPic_Pelipper[]; -extern const u32 gMonBackPic_Ralts[]; -extern const u32 gMonBackPic_Kirlia[]; -extern const u32 gMonBackPic_Gardevoir[]; -extern const u32 gMonBackPic_Surskit[]; -extern const u32 gMonBackPic_Masquerain[]; -extern const u32 gMonBackPic_Shroomish[]; -extern const u32 gMonBackPic_Breloom[]; -extern const u32 gMonBackPic_Slakoth[]; -extern const u32 gMonBackPic_Vigoroth[]; -extern const u32 gMonBackPic_Slaking[]; -extern const u32 gMonBackPic_Nincada[]; -extern const u32 gMonBackPic_Ninjask[]; -extern const u32 gMonBackPic_Shedinja[]; -extern const u32 gMonBackPic_Whismur[]; -extern const u32 gMonBackPic_Loudred[]; -extern const u32 gMonBackPic_Exploud[]; -extern const u32 gMonBackPic_Makuhita[]; -extern const u32 gMonBackPic_Hariyama[]; -extern const u32 gMonBackPic_Azurill[]; -extern const u32 gMonBackPic_Nosepass[]; -extern const u32 gMonBackPic_Skitty[]; -extern const u32 gMonBackPic_Delcatty[]; -extern const u32 gMonBackPic_Sableye[]; -extern const u32 gMonBackPic_Mawile[]; -extern const u32 gMonBackPic_Aron[]; -extern const u32 gMonBackPic_Lairon[]; -extern const u32 gMonBackPic_Aggron[]; -extern const u32 gMonBackPic_Meditite[]; -extern const u32 gMonBackPic_MedititeF[]; -extern const u32 gMonBackPic_Medicham[]; -extern const u32 gMonBackPic_MedichamF[]; -extern const u32 gMonBackPic_Electrike[]; -extern const u32 gMonBackPic_Manectric[]; -extern const u32 gMonBackPic_Plusle[]; -extern const u32 gMonBackPic_Minun[]; -extern const u32 gMonBackPic_Volbeat[]; -extern const u32 gMonBackPic_Illumise[]; -extern const u32 gMonBackPic_Roselia[]; -extern const u32 gMonBackPic_RoseliaF[]; -extern const u32 gMonBackPic_Gulpin[]; -extern const u32 gMonBackPic_GulpinF[]; -extern const u32 gMonBackPic_Swalot[]; -extern const u32 gMonBackPic_SwalotF[]; -extern const u32 gMonBackPic_Carvanha[]; -extern const u32 gMonBackPic_Sharpedo[]; -extern const u32 gMonBackPic_Wailmer[]; -extern const u32 gMonBackPic_Wailord[]; -extern const u32 gMonBackPic_Numel[]; -extern const u32 gMonBackPic_NumelF[]; -extern const u32 gMonBackPic_Camerupt[]; -extern const u32 gMonBackPic_CameruptF[]; -extern const u32 gMonBackPic_Torkoal[]; -extern const u32 gMonBackPic_Spoink[]; -extern const u32 gMonBackPic_Grumpig[]; -extern const u32 gMonBackPic_Spinda[]; -extern const u32 gMonBackPic_Trapinch[]; -extern const u32 gMonBackPic_Vibrava[]; -extern const u32 gMonBackPic_Flygon[]; -extern const u32 gMonBackPic_Cacnea[]; -extern const u32 gMonBackPic_Cacturne[]; -extern const u32 gMonBackPic_Swablu[]; -extern const u32 gMonBackPic_Altaria[]; -extern const u32 gMonBackPic_Zangoose[]; -extern const u32 gMonBackPic_Seviper[]; -extern const u32 gMonBackPic_Lunatone[]; -extern const u32 gMonBackPic_Solrock[]; -extern const u32 gMonBackPic_Barboach[]; -extern const u32 gMonBackPic_Whiscash[]; -extern const u32 gMonBackPic_Corphish[]; -extern const u32 gMonBackPic_Crawdaunt[]; -extern const u32 gMonBackPic_Baltoy[]; -extern const u32 gMonBackPic_Claydol[]; -extern const u32 gMonBackPic_Lileep[]; -extern const u32 gMonBackPic_Cradily[]; -extern const u32 gMonBackPic_Anorith[]; -extern const u32 gMonBackPic_Armaldo[]; -extern const u32 gMonBackPic_Feebas[]; -extern const u32 gMonBackPic_Milotic[]; -extern const u32 gMonBackPic_MiloticF[]; -extern const u32 gMonBackPic_Castform[]; -extern const u32 gMonBackPic_Kecleon[]; -extern const u32 gMonBackPic_Shuppet[]; -extern const u32 gMonBackPic_Banette[]; -extern const u32 gMonBackPic_Duskull[]; -extern const u32 gMonBackPic_Dusclops[]; -extern const u32 gMonBackPic_Tropius[]; -extern const u32 gMonBackPic_Chimecho[]; -extern const u32 gMonBackPic_Absol[]; -extern const u32 gMonBackPic_Wynaut[]; -extern const u32 gMonBackPic_Snorunt[]; -extern const u32 gMonBackPic_Glalie[]; -extern const u32 gMonBackPic_Spheal[]; -extern const u32 gMonBackPic_Sealeo[]; -extern const u32 gMonBackPic_Walrein[]; -extern const u32 gMonBackPic_Clamperl[]; -extern const u32 gMonBackPic_Huntail[]; -extern const u32 gMonBackPic_Gorebyss[]; -extern const u32 gMonBackPic_Relicanth[]; -extern const u32 gMonBackPic_RelicanthF[]; -extern const u32 gMonBackPic_Luvdisc[]; -extern const u32 gMonBackPic_Bagon[]; -extern const u32 gMonBackPic_Shelgon[]; -extern const u32 gMonBackPic_Salamence[]; -extern const u32 gMonBackPic_Beldum[]; -extern const u32 gMonBackPic_Metang[]; -extern const u32 gMonBackPic_Metagross[]; -extern const u32 gMonBackPic_Regirock[]; -extern const u32 gMonBackPic_Regice[]; -extern const u32 gMonBackPic_Registeel[]; -extern const u32 gMonBackPic_Latias[]; -extern const u32 gMonBackPic_Latios[]; -extern const u32 gMonBackPic_Kyogre[]; -extern const u32 gMonBackPic_Groudon[]; -extern const u32 gMonBackPic_Rayquaza[]; -extern const u32 gMonBackPic_Jirachi[]; -extern const u32 gMonBackPic_Deoxys[]; -#if P_GEN_4_POKEMON == TRUE -extern const u32 gMonBackPic_Turtwig[]; -extern const u32 gMonBackPic_Grotle[]; -extern const u32 gMonBackPic_Torterra[]; -extern const u32 gMonBackPic_Chimchar[]; -extern const u32 gMonBackPic_Monferno[]; -extern const u32 gMonBackPic_Infernape[]; -extern const u32 gMonBackPic_Piplup[]; -extern const u32 gMonBackPic_Prinplup[]; -extern const u32 gMonBackPic_Empoleon[]; -extern const u32 gMonBackPic_Starly[]; -extern const u32 gMonBackPic_StarlyF[]; -extern const u32 gMonBackPic_Staravia[]; -extern const u32 gMonBackPic_StaraviaF[]; -extern const u32 gMonBackPic_Staraptor[]; -extern const u32 gMonBackPic_Bidoof[]; -extern const u32 gMonBackPic_BidoofF[]; -extern const u32 gMonBackPic_Bibarel[]; -extern const u32 gMonBackPic_Kricketot[]; -extern const u32 gMonBackPic_KricketotF[]; -extern const u32 gMonBackPic_Kricketune[]; -extern const u32 gMonBackPic_KricketuneF[]; -extern const u32 gMonBackPic_Shinx[]; -extern const u32 gMonBackPic_ShinxF[]; -extern const u32 gMonBackPic_Luxio[]; -extern const u32 gMonBackPic_LuxioF[]; -extern const u32 gMonBackPic_Luxray[]; -extern const u32 gMonBackPic_LuxrayF[]; -extern const u32 gMonBackPic_Budew[]; -extern const u32 gMonBackPic_Roserade[]; -extern const u32 gMonBackPic_RoseradeF[]; -extern const u32 gMonBackPic_Cranidos[]; -extern const u32 gMonBackPic_Rampardos[]; -extern const u32 gMonBackPic_Shieldon[]; -extern const u32 gMonBackPic_Bastiodon[]; -extern const u32 gMonBackPic_Burmy[]; -extern const u32 gMonBackPic_Wormadam[]; -extern const u32 gMonBackPic_Mothim[]; -extern const u32 gMonBackPic_Combee[]; -extern const u32 gMonBackPic_Vespiquen[]; -extern const u32 gMonBackPic_Pachirisu[]; -extern const u32 gMonBackPic_Buizel[]; -extern const u32 gMonBackPic_BuizelF[]; -extern const u32 gMonBackPic_Floatzel[]; -extern const u32 gMonBackPic_FloatzelF[]; -extern const u32 gMonBackPic_Cherubi[]; -extern const u32 gMonBackPic_Cherrim[]; -extern const u32 gMonBackPic_Shellos[]; -extern const u32 gMonBackPic_Gastrodon[]; -extern const u32 gMonBackPic_Ambipom[]; -extern const u32 gMonBackPic_AmbipomF[]; -extern const u32 gMonBackPic_Drifloon[]; -extern const u32 gMonBackPic_Drifblim[]; -extern const u32 gMonBackPic_Buneary[]; -extern const u32 gMonBackPic_Lopunny[]; -extern const u32 gMonBackPic_Mismagius[]; -extern const u32 gMonBackPic_Honchkrow[]; -extern const u32 gMonBackPic_Glameow[]; -extern const u32 gMonBackPic_Purugly[]; -extern const u32 gMonBackPic_Chingling[]; -extern const u32 gMonBackPic_Stunky[]; -extern const u32 gMonBackPic_Skuntank[]; -extern const u32 gMonBackPic_Bronzor[]; -extern const u32 gMonBackPic_Bronzong[]; -extern const u32 gMonBackPic_Bonsly[]; -extern const u32 gMonBackPic_MimeJr[]; -extern const u32 gMonBackPic_Happiny[]; -extern const u32 gMonBackPic_Chatot[]; -extern const u32 gMonBackPic_Spiritomb[]; -extern const u32 gMonBackPic_Gible[]; -extern const u32 gMonBackPic_GibleF[]; -extern const u32 gMonBackPic_Gabite[]; -extern const u32 gMonBackPic_GabiteF[]; -extern const u32 gMonBackPic_Garchomp[]; -extern const u32 gMonBackPic_Munchlax[]; -extern const u32 gMonBackPic_Riolu[]; -extern const u32 gMonBackPic_Lucario[]; -extern const u32 gMonBackPic_Hippopotas[]; -extern const u32 gMonBackPic_Hippowdon[]; -extern const u32 gMonBackPic_Skorupi[]; -extern const u32 gMonBackPic_Drapion[]; -extern const u32 gMonBackPic_Croagunk[]; -extern const u32 gMonBackPic_CroagunkF[]; -extern const u32 gMonBackPic_Toxicroak[]; -extern const u32 gMonBackPic_ToxicroakF[]; -extern const u32 gMonBackPic_Carnivine[]; -extern const u32 gMonBackPic_Finneon[]; -extern const u32 gMonBackPic_FinneonF[]; -extern const u32 gMonBackPic_Lumineon[]; -extern const u32 gMonBackPic_LumineonF[]; -extern const u32 gMonBackPic_Mantyke[]; -extern const u32 gMonBackPic_Snover[]; -extern const u32 gMonBackPic_SnoverF[]; -extern const u32 gMonBackPic_Abomasnow[]; -extern const u32 gMonBackPic_Weavile[]; -extern const u32 gMonBackPic_WeavileF[]; -extern const u32 gMonBackPic_Magnezone[]; -extern const u32 gMonBackPic_Lickilicky[]; -extern const u32 gMonBackPic_Rhyperior[]; -extern const u32 gMonBackPic_RhyperiorF[]; -extern const u32 gMonBackPic_Tangrowth[]; -extern const u32 gMonBackPic_Electivire[]; -extern const u32 gMonBackPic_Magmortar[]; -extern const u32 gMonBackPic_Togekiss[]; -extern const u32 gMonBackPic_Yanmega[]; -extern const u32 gMonBackPic_Leafeon[]; -extern const u32 gMonBackPic_Glaceon[]; -extern const u32 gMonBackPic_Gliscor[]; -extern const u32 gMonBackPic_Mamoswine[]; -extern const u32 gMonBackPic_PorygonZ[]; -extern const u32 gMonBackPic_Gallade[]; -extern const u32 gMonBackPic_Probopass[]; -extern const u32 gMonBackPic_Dusknoir[]; -extern const u32 gMonBackPic_Froslass[]; -extern const u32 gMonBackPic_Rotom[]; -extern const u32 gMonBackPic_Uxie[]; -extern const u32 gMonBackPic_Mesprit[]; -extern const u32 gMonBackPic_Azelf[]; -extern const u32 gMonBackPic_Dialga[]; -extern const u32 gMonBackPic_Palkia[]; -extern const u32 gMonBackPic_Heatran[]; -extern const u32 gMonBackPic_Regigigas[]; -extern const u32 gMonBackPic_Giratina[]; -extern const u32 gMonBackPic_Cresselia[]; -extern const u32 gMonBackPic_Phione[]; -extern const u32 gMonBackPic_Manaphy[]; -extern const u32 gMonBackPic_Darkrai[]; -extern const u32 gMonBackPic_Shaymin[]; -extern const u32 gMonBackPic_Arceus[]; -#endif -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonBackPic_Victini[]; -extern const u32 gMonBackPic_Snivy[]; -extern const u32 gMonBackPic_Servine[]; -extern const u32 gMonBackPic_Serperior[]; -extern const u32 gMonBackPic_Tepig[]; -extern const u32 gMonBackPic_Pignite[]; -extern const u32 gMonBackPic_Emboar[]; -extern const u32 gMonBackPic_Oshawott[]; -extern const u32 gMonBackPic_Dewott[]; -extern const u32 gMonBackPic_Samurott[]; -extern const u32 gMonBackPic_Patrat[]; -extern const u32 gMonBackPic_Watchog[]; -extern const u32 gMonBackPic_Lillipup[]; -extern const u32 gMonBackPic_Herdier[]; -extern const u32 gMonBackPic_Stoutland[]; -extern const u32 gMonBackPic_Purrloin[]; -extern const u32 gMonBackPic_Liepard[]; -extern const u32 gMonBackPic_Pansage[]; -extern const u32 gMonBackPic_Simisage[]; -extern const u32 gMonBackPic_Pansear[]; -extern const u32 gMonBackPic_Simisear[]; -extern const u32 gMonBackPic_Panpour[]; -extern const u32 gMonBackPic_Simipour[]; -extern const u32 gMonBackPic_Munna[]; -extern const u32 gMonBackPic_Musharna[]; -extern const u32 gMonBackPic_Pidove[]; -extern const u32 gMonBackPic_Tranquill[]; -extern const u32 gMonBackPic_Unfezant[]; -extern const u32 gMonBackPic_UnfezantF[]; -extern const u32 gMonBackPic_Blitzle[]; -extern const u32 gMonBackPic_Zebstrika[]; -extern const u32 gMonBackPic_Roggenrola[]; -extern const u32 gMonBackPic_Boldore[]; -extern const u32 gMonBackPic_Gigalith[]; -extern const u32 gMonBackPic_Woobat[]; -extern const u32 gMonBackPic_Swoobat[]; -extern const u32 gMonBackPic_Drilbur[]; -extern const u32 gMonBackPic_Excadrill[]; -extern const u32 gMonBackPic_Audino[]; -extern const u32 gMonBackPic_Timburr[]; -extern const u32 gMonBackPic_Gurdurr[]; -extern const u32 gMonBackPic_Conkeldurr[]; -extern const u32 gMonBackPic_Tympole[]; -extern const u32 gMonBackPic_Palpitoad[]; -extern const u32 gMonBackPic_Seismitoad[]; -extern const u32 gMonBackPic_Throh[]; -extern const u32 gMonBackPic_Sawk[]; -extern const u32 gMonBackPic_Sewaddle[]; -extern const u32 gMonBackPic_Swadloon[]; -extern const u32 gMonBackPic_Leavanny[]; -extern const u32 gMonBackPic_Venipede[]; -extern const u32 gMonBackPic_Whirlipede[]; -extern const u32 gMonBackPic_Scolipede[]; -extern const u32 gMonBackPic_Cottonee[]; -extern const u32 gMonBackPic_Whimsicott[]; -extern const u32 gMonBackPic_Petilil[]; -extern const u32 gMonBackPic_Lilligant[]; -extern const u32 gMonBackPic_Basculin[]; -extern const u32 gMonBackPic_Sandile[]; -extern const u32 gMonBackPic_Krokorok[]; -extern const u32 gMonBackPic_Krookodile[]; -extern const u32 gMonBackPic_Darumaka[]; -extern const u32 gMonBackPic_Darmanitan[]; -extern const u32 gMonBackPic_Maractus[]; -extern const u32 gMonBackPic_Dwebble[]; -extern const u32 gMonBackPic_Crustle[]; -extern const u32 gMonBackPic_Scraggy[]; -extern const u32 gMonBackPic_Scrafty[]; -extern const u32 gMonBackPic_Sigilyph[]; -extern const u32 gMonBackPic_Yamask[]; -extern const u32 gMonBackPic_Cofagrigus[]; -extern const u32 gMonBackPic_Tirtouga[]; -extern const u32 gMonBackPic_Carracosta[]; -extern const u32 gMonBackPic_Archen[]; -extern const u32 gMonBackPic_Archeops[]; -extern const u32 gMonBackPic_Trubbish[]; -extern const u32 gMonBackPic_Garbodor[]; -extern const u32 gMonBackPic_Zorua[]; -extern const u32 gMonBackPic_Zoroark[]; -extern const u32 gMonBackPic_Minccino[]; -extern const u32 gMonBackPic_Cinccino[]; -extern const u32 gMonBackPic_Gothita[]; -extern const u32 gMonBackPic_Gothorita[]; -extern const u32 gMonBackPic_Gothitelle[]; -extern const u32 gMonBackPic_Solosis[]; -extern const u32 gMonBackPic_Duosion[]; -extern const u32 gMonBackPic_Reuniclus[]; -extern const u32 gMonBackPic_Ducklett[]; -extern const u32 gMonBackPic_Swanna[]; -extern const u32 gMonBackPic_Vanillite[]; -extern const u32 gMonBackPic_Vanillish[]; -extern const u32 gMonBackPic_Vanilluxe[]; -extern const u32 gMonBackPic_Deerling[]; -extern const u32 gMonBackPic_Sawsbuck[]; -extern const u32 gMonBackPic_Emolga[]; -extern const u32 gMonBackPic_Karrablast[]; -extern const u32 gMonBackPic_Escavalier[]; -extern const u32 gMonBackPic_Foongus[]; -extern const u32 gMonBackPic_Amoonguss[]; -extern const u32 gMonBackPic_Frillish[]; -extern const u32 gMonBackPic_FrillishF[]; -extern const u32 gMonBackPic_Jellicent[]; -extern const u32 gMonBackPic_JellicentF[]; -extern const u32 gMonBackPic_Alomomola[]; -extern const u32 gMonBackPic_Joltik[]; -extern const u32 gMonBackPic_Galvantula[]; -extern const u32 gMonBackPic_Ferroseed[]; -extern const u32 gMonBackPic_Ferrothorn[]; -extern const u32 gMonBackPic_Klink[]; -extern const u32 gMonBackPic_Klang[]; -extern const u32 gMonBackPic_Klinklang[]; -extern const u32 gMonBackPic_Tynamo[]; -extern const u32 gMonBackPic_Eelektrik[]; -extern const u32 gMonBackPic_Eelektross[]; -extern const u32 gMonBackPic_Elgyem[]; -extern const u32 gMonBackPic_Beheeyem[]; -extern const u32 gMonBackPic_Litwick[]; -extern const u32 gMonBackPic_Lampent[]; -extern const u32 gMonBackPic_Chandelure[]; -extern const u32 gMonBackPic_Axew[]; -extern const u32 gMonBackPic_Fraxure[]; -extern const u32 gMonBackPic_Haxorus[]; -extern const u32 gMonBackPic_Cubchoo[]; -extern const u32 gMonBackPic_Beartic[]; -extern const u32 gMonBackPic_Cryogonal[]; -extern const u32 gMonBackPic_Shelmet[]; -extern const u32 gMonBackPic_Accelgor[]; -extern const u32 gMonBackPic_Stunfisk[]; -extern const u32 gMonBackPic_Mienfoo[]; -extern const u32 gMonBackPic_Mienshao[]; -extern const u32 gMonBackPic_Druddigon[]; -extern const u32 gMonBackPic_Golett[]; -extern const u32 gMonBackPic_Golurk[]; -extern const u32 gMonBackPic_Pawniard[]; -extern const u32 gMonBackPic_Bisharp[]; -extern const u32 gMonBackPic_Bouffalant[]; -extern const u32 gMonBackPic_Rufflet[]; -extern const u32 gMonBackPic_Braviary[]; -extern const u32 gMonBackPic_Vullaby[]; -extern const u32 gMonBackPic_Mandibuzz[]; -extern const u32 gMonBackPic_Heatmor[]; -extern const u32 gMonBackPic_Durant[]; -extern const u32 gMonBackPic_Deino[]; -extern const u32 gMonBackPic_Zweilous[]; -extern const u32 gMonBackPic_Hydreigon[]; -extern const u32 gMonBackPic_Larvesta[]; -extern const u32 gMonBackPic_Volcarona[]; -extern const u32 gMonBackPic_Cobalion[]; -extern const u32 gMonBackPic_Terrakion[]; -extern const u32 gMonBackPic_Virizion[]; -extern const u32 gMonBackPic_Tornadus[]; -extern const u32 gMonBackPic_Thundurus[]; -extern const u32 gMonBackPic_Reshiram[]; -extern const u32 gMonBackPic_Zekrom[]; -extern const u32 gMonBackPic_Landorus[]; -extern const u32 gMonBackPic_Kyurem[]; -extern const u32 gMonBackPic_Keldeo[]; -extern const u32 gMonBackPic_Meloetta[]; -extern const u32 gMonBackPic_Genesect[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u32 gMonBackPic_Chespin[]; -extern const u32 gMonBackPic_Quilladin[]; -extern const u32 gMonBackPic_Chesnaught[]; -extern const u32 gMonBackPic_Fennekin[]; -extern const u32 gMonBackPic_Braixen[]; -extern const u32 gMonBackPic_Delphox[]; -extern const u32 gMonBackPic_Froakie[]; -extern const u32 gMonBackPic_Frogadier[]; -extern const u32 gMonBackPic_Greninja[]; -extern const u32 gMonBackPic_Bunnelby[]; -extern const u32 gMonBackPic_Diggersby[]; -extern const u32 gMonBackPic_Fletchling[]; -extern const u32 gMonBackPic_Fletchinder[]; -extern const u32 gMonBackPic_Talonflame[]; -extern const u32 gMonBackPic_Scatterbug[]; -extern const u32 gMonBackPic_Spewpa[]; -extern const u32 gMonBackPic_Vivillon[]; -extern const u32 gMonBackPic_Litleo[]; -extern const u32 gMonBackPic_Pyroar[]; -extern const u32 gMonBackPic_PyroarF[]; -extern const u32 gMonBackPic_Flabebe[]; -extern const u32 gMonBackPic_Floette[]; -extern const u32 gMonBackPic_Florges[]; -extern const u32 gMonBackPic_Skiddo[]; -extern const u32 gMonBackPic_Gogoat[]; -extern const u32 gMonBackPic_Pancham[]; -extern const u32 gMonBackPic_Pangoro[]; -extern const u32 gMonBackPic_Furfrou[]; -extern const u32 gMonBackPic_Espurr[]; -extern const u32 gMonBackPic_Meowstic[]; -extern const u32 gMonBackPic_Honedge[]; -extern const u32 gMonBackPic_Doublade[]; -extern const u32 gMonBackPic_Aegislash[]; -extern const u32 gMonBackPic_Spritzee[]; -extern const u32 gMonBackPic_Aromatisse[]; -extern const u32 gMonBackPic_Swirlix[]; -extern const u32 gMonBackPic_Slurpuff[]; -extern const u32 gMonBackPic_Inkay[]; -extern const u32 gMonBackPic_Malamar[]; -extern const u32 gMonBackPic_Binacle[]; -extern const u32 gMonBackPic_Barbaracle[]; -extern const u32 gMonBackPic_Skrelp[]; -extern const u32 gMonBackPic_Dragalge[]; -extern const u32 gMonBackPic_Clauncher[]; -extern const u32 gMonBackPic_Clawitzer[]; -extern const u32 gMonBackPic_Helioptile[]; -extern const u32 gMonBackPic_Heliolisk[]; -extern const u32 gMonBackPic_Tyrunt[]; -extern const u32 gMonBackPic_Tyrantrum[]; -extern const u32 gMonBackPic_Amaura[]; -extern const u32 gMonBackPic_Aurorus[]; -extern const u32 gMonBackPic_Sylveon[]; -extern const u32 gMonBackPic_Hawlucha[]; -extern const u32 gMonBackPic_Dedenne[]; -extern const u32 gMonBackPic_Carbink[]; -extern const u32 gMonBackPic_Goomy[]; -extern const u32 gMonBackPic_Sliggoo[]; -extern const u32 gMonBackPic_Goodra[]; -extern const u32 gMonBackPic_Klefki[]; -extern const u32 gMonBackPic_Phantump[]; -extern const u32 gMonBackPic_Trevenant[]; -extern const u32 gMonBackPic_Pumpkaboo[]; -extern const u32 gMonBackPic_Gourgeist[]; -extern const u32 gMonBackPic_Bergmite[]; -extern const u32 gMonBackPic_Avalugg[]; -extern const u32 gMonBackPic_Noibat[]; -extern const u32 gMonBackPic_Noivern[]; -extern const u32 gMonBackPic_Xerneas[]; -extern const u32 gMonBackPic_Yveltal[]; -extern const u32 gMonBackPic_Zygarde[]; -extern const u32 gMonBackPic_Diancie[]; -extern const u32 gMonBackPic_Hoopa[]; -extern const u32 gMonBackPic_Volcanion[]; -#endif -#if P_GEN_7_POKEMON == TRUE -extern const u32 gMonBackPic_Rowlet[]; -extern const u32 gMonBackPic_Dartrix[]; -extern const u32 gMonBackPic_Decidueye[]; -extern const u32 gMonBackPic_Litten[]; -extern const u32 gMonBackPic_Torracat[]; -extern const u32 gMonBackPic_Incineroar[]; -extern const u32 gMonBackPic_Popplio[]; -extern const u32 gMonBackPic_Brionne[]; -extern const u32 gMonBackPic_Primarina[]; -extern const u32 gMonBackPic_Pikipek[]; -extern const u32 gMonBackPic_Trumbeak[]; -extern const u32 gMonBackPic_Toucannon[]; -extern const u32 gMonBackPic_Yungoos[]; -extern const u32 gMonBackPic_Gumshoos[]; -extern const u32 gMonBackPic_Grubbin[]; -extern const u32 gMonBackPic_Charjabug[]; -extern const u32 gMonBackPic_Vikavolt[]; -extern const u32 gMonBackPic_Crabrawler[]; -extern const u32 gMonBackPic_Crabominable[]; -extern const u32 gMonBackPic_Oricorio[]; -extern const u32 gMonBackPic_Cutiefly[]; -extern const u32 gMonBackPic_Ribombee[]; -extern const u32 gMonBackPic_Rockruff[]; -extern const u32 gMonBackPic_Lycanroc[]; -extern const u32 gMonBackPic_Wishiwashi[]; -extern const u32 gMonBackPic_Mareanie[]; -extern const u32 gMonBackPic_Toxapex[]; -extern const u32 gMonBackPic_Mudbray[]; -extern const u32 gMonBackPic_Mudsdale[]; -extern const u32 gMonBackPic_Dewpider[]; -extern const u32 gMonBackPic_Araquanid[]; -extern const u32 gMonBackPic_Fomantis[]; -extern const u32 gMonBackPic_Lurantis[]; -extern const u32 gMonBackPic_Morelull[]; -extern const u32 gMonBackPic_Shiinotic[]; -extern const u32 gMonBackPic_Salandit[]; -extern const u32 gMonBackPic_Salazzle[]; -extern const u32 gMonBackPic_Stufful[]; -extern const u32 gMonBackPic_Bewear[]; -extern const u32 gMonBackPic_Bounsweet[]; -extern const u32 gMonBackPic_Steenee[]; -extern const u32 gMonBackPic_Tsareena[]; -extern const u32 gMonBackPic_Comfey[]; -extern const u32 gMonBackPic_Oranguru[]; -extern const u32 gMonBackPic_Passimian[]; -extern const u32 gMonBackPic_Wimpod[]; -extern const u32 gMonBackPic_Golisopod[]; -extern const u32 gMonBackPic_Sandygast[]; -extern const u32 gMonBackPic_Palossand[]; -extern const u32 gMonBackPic_Pyukumuku[]; -extern const u32 gMonBackPic_TypeNull[]; -extern const u32 gMonBackPic_Silvally[]; -extern const u32 gMonBackPic_Minior[]; -extern const u32 gMonBackPic_Komala[]; -extern const u32 gMonBackPic_Turtonator[]; -extern const u32 gMonBackPic_Togedemaru[]; -extern const u32 gMonBackPic_Mimikyu[]; -extern const u32 gMonBackPic_Bruxish[]; -extern const u32 gMonBackPic_Drampa[]; -extern const u32 gMonBackPic_Dhelmise[]; -extern const u32 gMonBackPic_JangmoO[]; -extern const u32 gMonBackPic_HakamoO[]; -extern const u32 gMonBackPic_KommoO[]; -extern const u32 gMonBackPic_TapuKoko[]; -extern const u32 gMonBackPic_TapuLele[]; -extern const u32 gMonBackPic_TapuBulu[]; -extern const u32 gMonBackPic_TapuFini[]; -extern const u32 gMonBackPic_Cosmog[]; -extern const u32 gMonBackPic_Cosmoem[]; -extern const u32 gMonBackPic_Solgaleo[]; -extern const u32 gMonBackPic_Lunala[]; -extern const u32 gMonBackPic_Nihilego[]; -extern const u32 gMonBackPic_Buzzwole[]; -extern const u32 gMonBackPic_Pheromosa[]; -extern const u32 gMonBackPic_Xurkitree[]; -extern const u32 gMonBackPic_Celesteela[]; -extern const u32 gMonBackPic_Kartana[]; -extern const u32 gMonBackPic_Guzzlord[]; -extern const u32 gMonBackPic_Necrozma[]; -extern const u32 gMonBackPic_Magearna[]; -extern const u32 gMonBackPic_Marshadow[]; -extern const u32 gMonBackPic_Poipole[]; -extern const u32 gMonBackPic_Naganadel[]; -extern const u32 gMonBackPic_Stakataka[]; -extern const u32 gMonBackPic_Blacephalon[]; -extern const u32 gMonBackPic_Zeraora[]; -extern const u32 gMonBackPic_Meltan[]; -extern const u32 gMonBackPic_Melmetal[]; -#endif -#if P_GEN_8_POKEMON == TRUE -extern const u32 gMonBackPic_Grookey[]; -extern const u32 gMonBackPic_Thwackey[]; -extern const u32 gMonBackPic_Rillaboom[]; -extern const u32 gMonBackPic_Scorbunny[]; -extern const u32 gMonBackPic_Raboot[]; -extern const u32 gMonBackPic_Cinderace[]; -extern const u32 gMonBackPic_Sobble[]; -extern const u32 gMonBackPic_Drizzile[]; -extern const u32 gMonBackPic_Inteleon[]; -extern const u32 gMonBackPic_Skwovet[]; -extern const u32 gMonBackPic_Greedent[]; -extern const u32 gMonBackPic_Rookidee[]; -extern const u32 gMonBackPic_Corvisquire[]; -extern const u32 gMonBackPic_Corviknight[]; -extern const u32 gMonBackPic_Blipbug[]; -extern const u32 gMonBackPic_Dottler[]; -extern const u32 gMonBackPic_Orbeetle[]; -extern const u32 gMonBackPic_Nickit[]; -extern const u32 gMonBackPic_Thievul[]; -extern const u32 gMonBackPic_Gossifleur[]; -extern const u32 gMonBackPic_Eldegoss[]; -extern const u32 gMonBackPic_Wooloo[]; -extern const u32 gMonBackPic_Dubwool[]; -extern const u32 gMonBackPic_Chewtle[]; -extern const u32 gMonBackPic_Drednaw[]; -extern const u32 gMonBackPic_Yamper[]; -extern const u32 gMonBackPic_Boltund[]; -extern const u32 gMonBackPic_Rolycoly[]; -extern const u32 gMonBackPic_Carkol[]; -extern const u32 gMonBackPic_Coalossal[]; -extern const u32 gMonBackPic_Applin[]; -extern const u32 gMonBackPic_Flapple[]; -extern const u32 gMonBackPic_Appletun[]; -extern const u32 gMonBackPic_Silicobra[]; -extern const u32 gMonBackPic_Sandaconda[]; -extern const u32 gMonBackPic_Cramorant[]; -extern const u32 gMonBackPic_Arrokuda[]; -extern const u32 gMonBackPic_Barraskewda[]; -extern const u32 gMonBackPic_Toxel[]; -extern const u32 gMonBackPic_Toxtricity[]; -extern const u32 gMonBackPic_Sizzlipede[]; -extern const u32 gMonBackPic_Centiskorch[]; -extern const u32 gMonBackPic_Clobbopus[]; -extern const u32 gMonBackPic_Grapploct[]; -extern const u32 gMonBackPic_Sinistea[]; -extern const u32 gMonBackPic_Polteageist[]; -extern const u32 gMonBackPic_Hatenna[]; -extern const u32 gMonBackPic_Hattrem[]; -extern const u32 gMonBackPic_Hatterene[]; -extern const u32 gMonBackPic_Impidimp[]; -extern const u32 gMonBackPic_Morgrem[]; -extern const u32 gMonBackPic_Grimmsnarl[]; -extern const u32 gMonBackPic_Obstagoon[]; -extern const u32 gMonBackPic_Perrserker[]; -extern const u32 gMonBackPic_Cursola[]; -extern const u32 gMonBackPic_Sirfetchd[]; -extern const u32 gMonBackPic_MrRime[]; -extern const u32 gMonBackPic_Runerigus[]; -extern const u32 gMonBackPic_Milcery[]; -extern const u32 gMonBackPic_Alcremie[]; -extern const u32 gMonBackPic_Falinks[]; -extern const u32 gMonBackPic_Pincurchin[]; -extern const u32 gMonBackPic_Snom[]; -extern const u32 gMonBackPic_Frosmoth[]; -extern const u32 gMonBackPic_Stonjourner[]; -extern const u32 gMonBackPic_Eiscue[]; -extern const u32 gMonBackPic_Indeedee[]; -extern const u32 gMonBackPic_Morpeko[]; -extern const u32 gMonBackPic_Cufant[]; -extern const u32 gMonBackPic_Copperajah[]; -extern const u32 gMonBackPic_Dracozolt[]; -extern const u32 gMonBackPic_Arctozolt[]; -extern const u32 gMonBackPic_Dracovish[]; -extern const u32 gMonBackPic_Arctovish[]; -extern const u32 gMonBackPic_Duraludon[]; -extern const u32 gMonBackPic_Dreepy[]; -extern const u32 gMonBackPic_Drakloak[]; -extern const u32 gMonBackPic_Dragapult[]; -extern const u32 gMonBackPic_Zacian[]; -extern const u32 gMonBackPic_Zamazenta[]; -extern const u32 gMonBackPic_Eternatus[]; -extern const u32 gMonBackPic_Kubfu[]; -extern const u32 gMonBackPic_Urshifu[]; -extern const u32 gMonBackPic_Zarude[]; -extern const u32 gMonBackPic_Regieleki[]; -extern const u32 gMonBackPic_Regidrago[]; -extern const u32 gMonBackPic_Glastrier[]; -extern const u32 gMonBackPic_Spectrier[]; -extern const u32 gMonBackPic_Calyrex[]; -extern const u32 gMonBackPic_Wyrdeer[]; -extern const u32 gMonBackPic_Kleavor[]; -extern const u32 gMonBackPic_Ursaluna[]; -extern const u32 gMonBackPic_Basculegion[]; -extern const u32 gMonBackPic_Sneasler[]; -extern const u32 gMonBackPic_Overqwil[]; -extern const u32 gMonBackPic_Enamorus[]; -#endif -extern const u32 gMonBackPic_VenusaurMega[]; -extern const u32 gMonBackPic_CharizardMegaX[]; -extern const u32 gMonBackPic_CharizardMegaY[]; -extern const u32 gMonBackPic_BlastoiseMega[]; -extern const u32 gMonBackPic_BeedrillMega[]; -extern const u32 gMonBackPic_PidgeotMega[]; -extern const u32 gMonBackPic_AlakazamMega[]; -extern const u32 gMonBackPic_SlowbroMega[]; -extern const u32 gMonBackPic_GengarMega[]; -extern const u32 gMonBackPic_KangaskhanMega[]; -extern const u32 gMonBackPic_PinsirMega[]; -extern const u32 gMonBackPic_GyaradosMega[]; -extern const u32 gMonBackPic_AerodactylMega[]; -extern const u32 gMonBackPic_MewtwoMegaX[]; -extern const u32 gMonBackPic_MewtwoMegaY[]; -extern const u32 gMonBackPic_AmpharosMega[]; -extern const u32 gMonBackPic_SteelixMega[]; -extern const u32 gMonBackPic_ScizorMega[]; -extern const u32 gMonBackPic_HeracrossMega[]; -extern const u32 gMonBackPic_HoundoomMega[]; -extern const u32 gMonBackPic_TyranitarMega[]; -extern const u32 gMonBackPic_SceptileMega[]; -extern const u32 gMonBackPic_BlazikenMega[]; -extern const u32 gMonBackPic_SwampertMega[]; -extern const u32 gMonBackPic_GardevoirMega[]; -extern const u32 gMonBackPic_SableyeMega[]; -extern const u32 gMonBackPic_MawileMega[]; -extern const u32 gMonBackPic_AggronMega[]; -extern const u32 gMonBackPic_MedichamMega[]; -extern const u32 gMonBackPic_ManectricMega[]; -extern const u32 gMonBackPic_SharpedoMega[]; -extern const u32 gMonBackPic_CameruptMega[]; -extern const u32 gMonBackPic_AltariaMega[]; -extern const u32 gMonBackPic_BanetteMega[]; -extern const u32 gMonBackPic_AbsolMega[]; -extern const u32 gMonBackPic_GlalieMega[]; -extern const u32 gMonBackPic_SalamenceMega[]; -extern const u32 gMonBackPic_MetagrossMega[]; -extern const u32 gMonBackPic_LatiasMega[]; -extern const u32 gMonBackPic_LatiosMega[]; -#if P_GEN_4_POKEMON == TRUE -extern const u32 gMonBackPic_LopunnyMega[]; -extern const u32 gMonBackPic_GarchompMega[]; -extern const u32 gMonBackPic_LucarioMega[]; -extern const u32 gMonBackPic_AbomasnowMega[]; -extern const u32 gMonBackPic_GalladeMega[]; -#endif -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonBackPic_AudinoMega[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u32 gMonBackPic_DiancieMega[]; -#endif -extern const u32 gMonBackPic_RayquazaMega[]; -extern const u32 gMonBackPic_KyogrePrimal[]; -extern const u32 gMonBackPic_GroudonPrimal[]; -extern const u32 gMonBackPic_RattataAlolan[]; -extern const u32 gMonBackPic_RaticateAlolan[]; -extern const u32 gMonBackPic_RaichuAlolan[]; -extern const u32 gMonBackPic_SandshrewAlolan[]; -extern const u32 gMonBackPic_SandslashAlolan[]; -extern const u32 gMonBackPic_VulpixAlolan[]; -extern const u32 gMonBackPic_NinetalesAlolan[]; -extern const u32 gMonBackPic_DiglettAlolan[]; -extern const u32 gMonBackPic_DugtrioAlolan[]; -extern const u32 gMonBackPic_MeowthAlolan[]; -extern const u32 gMonBackPic_PersianAlolan[]; -extern const u32 gMonBackPic_GeodudeAlolan[]; -extern const u32 gMonBackPic_GravelerAlolan[]; -extern const u32 gMonBackPic_GolemAlolan[]; -extern const u32 gMonBackPic_GrimerAlolan[]; -extern const u32 gMonBackPic_MukAlolan[]; -extern const u32 gMonBackPic_ExeggutorAlolan[]; -extern const u32 gMonBackPic_MarowakAlolan[]; -extern const u32 gMonBackPic_MeowthGalarian[]; -extern const u32 gMonBackPic_PonytaGalarian[]; -extern const u32 gMonBackPic_RapidashGalarian[]; -extern const u32 gMonBackPic_SlowpokeGalarian[]; -extern const u32 gMonBackPic_SlowbroGalarian[]; -extern const u32 gMonBackPic_FarfetchdGalarian[]; -extern const u32 gMonBackPic_WeezingGalarian[]; -extern const u32 gMonBackPic_MrMimeGalarian[]; -extern const u32 gMonBackPic_ArticunoGalarian[]; -extern const u32 gMonBackPic_ZapdosGalarian[]; -extern const u32 gMonBackPic_MoltresGalarian[]; -extern const u32 gMonBackPic_SlowkingGalarian[]; -extern const u32 gMonBackPic_CorsolaGalarian[]; -extern const u32 gMonBackPic_ZigzagoonGalarian[]; -extern const u32 gMonBackPic_LinooneGalarian[]; -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonBackPic_DarumakaGalarian[]; -extern const u32 gMonBackPic_DarmanitanGalarian[]; -extern const u32 gMonBackPic_YamaskGalarian[]; -extern const u32 gMonBackPic_StunfiskGalarian[]; -#endif -extern const u32 gMonBackPic_GrowlitheHisuian[]; -extern const u32 gMonBackPic_ArcanineHisuian[]; -extern const u32 gMonBackPic_VoltorbHisuian[]; -extern const u32 gMonBackPic_ElectrodeHisuian[]; -extern const u32 gMonBackPic_TyphlosionHisuian[]; -extern const u32 gMonBackPic_QwilfishHisuian[]; -extern const u32 gMonBackPic_SneaselHisuian[]; -extern const u32 gMonBackPic_SneaselHisuianF[]; -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonBackPic_SamurottHisuian[]; -extern const u32 gMonBackPic_LilligantHisuian[]; -extern const u32 gMonBackPic_ZoruaHisuian[]; -extern const u32 gMonBackPic_ZoroarkHisuian[]; -extern const u32 gMonBackPic_BraviaryHisuian[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u32 gMonBackPic_SliggooHisuian[]; -extern const u32 gMonBackPic_GoodraHisuian[]; -extern const u32 gMonBackPic_AvaluggHisuian[]; -#endif -#if P_GEN_7_POKEMON == TRUE -extern const u32 gMonBackPic_DecidueyeHisuian[]; -#endif -extern const u32 gMonBackPic_PikachuCosplay[]; -extern const u32 gMonBackPic_PikachuRockStar[]; -extern const u32 gMonBackPic_PikachuBelle[]; -extern const u32 gMonBackPic_PikachuPopStar[]; -extern const u32 gMonBackPic_PikachuPhD[]; -extern const u32 gMonBackPic_PikachuLibre[]; -extern const u32 gMonBackPic_PikachuOriginalCap[]; -extern const u32 gMonBackPic_PikachuHoennCap[]; -extern const u32 gMonBackPic_PikachuSinnohCap[]; -extern const u32 gMonBackPic_PikachuUnovaCap[]; -extern const u32 gMonBackPic_PikachuKalosCap[]; -extern const u32 gMonBackPic_PikachuAlolaCap[]; -extern const u32 gMonBackPic_PikachuPartnerCap[]; -extern const u32 gMonBackPic_PikachuWorldCap[]; -extern const u32 gMonBackPic_PichuSpikyEared[]; -extern const u32 gMonBackPic_UnownB[]; -extern const u32 gMonBackPic_UnownC[]; -extern const u32 gMonBackPic_UnownD[]; -extern const u32 gMonBackPic_UnownE[]; -extern const u32 gMonBackPic_UnownF[]; -extern const u32 gMonBackPic_UnownG[]; -extern const u32 gMonBackPic_UnownH[]; -extern const u32 gMonBackPic_UnownI[]; -extern const u32 gMonBackPic_UnownJ[]; -extern const u32 gMonBackPic_UnownK[]; -extern const u32 gMonBackPic_UnownL[]; -extern const u32 gMonBackPic_UnownM[]; -extern const u32 gMonBackPic_UnownN[]; -extern const u32 gMonBackPic_UnownO[]; -extern const u32 gMonBackPic_UnownP[]; -extern const u32 gMonBackPic_UnownQ[]; -extern const u32 gMonBackPic_UnownR[]; -extern const u32 gMonBackPic_UnownS[]; -extern const u32 gMonBackPic_UnownT[]; -extern const u32 gMonBackPic_UnownU[]; -extern const u32 gMonBackPic_UnownV[]; -extern const u32 gMonBackPic_UnownW[]; -extern const u32 gMonBackPic_UnownX[]; -extern const u32 gMonBackPic_UnownY[]; -extern const u32 gMonBackPic_UnownZ[]; -extern const u32 gMonBackPic_UnownExclamationMark[]; -extern const u32 gMonBackPic_UnownQuestionMark[]; -extern const u32 gMonBackPic_CastformSunny[]; -extern const u32 gMonBackPic_CastformRainy[]; -extern const u32 gMonBackPic_CastformSnowy[]; -extern const u32 gMonBackPic_DeoxysAttack[]; -extern const u32 gMonBackPic_DeoxysDefense[]; -extern const u32 gMonBackPic_DeoxysSpeed[]; -#if P_GEN_4_POKEMON == TRUE -extern const u32 gMonBackPic_BurmySandyCloak[]; -extern const u32 gMonBackPic_BurmyTrashCloak[]; -extern const u32 gMonBackPic_WormadamSandyCloak[]; -extern const u32 gMonBackPic_WormadamTrashCloak[]; -extern const u32 gMonBackPic_CherrimSunshine[]; -extern const u32 gMonBackPic_ShellosEastSea[]; -extern const u32 gMonBackPic_GastrodonEastSea[]; -extern const u32 gMonBackPic_RotomHeat[]; -extern const u32 gMonBackPic_RotomWash[]; -extern const u32 gMonBackPic_RotomFrost[]; -extern const u32 gMonBackPic_RotomFan[]; -extern const u32 gMonBackPic_RotomMow[]; -extern const u32 gMonBackPic_DialgaOrigin[]; -extern const u32 gMonBackPic_PalkiaOrigin[]; -extern const u32 gMonBackPic_GiratinaOrigin[]; -extern const u32 gMonBackPic_ShayminSky[]; -#endif -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonBackPic_BasculinBlueStriped[]; -extern const u32 gMonBackPic_BasculinWhiteStriped[]; -extern const u32 gMonBackPic_DarmanitanZenMode[]; -extern const u32 gMonBackPic_DarmanitanZenModeGalarian[]; -extern const u32 gMonBackPic_SawsbuckSummer[]; -extern const u32 gMonBackPic_SawsbuckAutumn[]; -extern const u32 gMonBackPic_SawsbuckWinter[]; -extern const u32 gMonBackPic_TornadusTherian[]; -extern const u32 gMonBackPic_ThundurusTherian[]; -extern const u32 gMonBackPic_LandorusTherian[]; -extern const u32 gMonBackPic_KyuremWhite[]; -extern const u32 gMonBackPic_KyuremBlack[]; -extern const u32 gMonBackPic_KeldeoResolute[]; -extern const u32 gMonBackPic_MeloettaPirouette[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u32 gMonBackPic_GreninjaAsh[]; -extern const u32 gMonBackPic_VivillonPolar[]; -extern const u32 gMonBackPic_VivillonTundra[]; -extern const u32 gMonBackPic_VivillonContinental[]; -extern const u32 gMonBackPic_VivillonGarden[]; -extern const u32 gMonBackPic_VivillonElegant[]; -extern const u32 gMonBackPic_VivillonMeadow[]; -extern const u32 gMonBackPic_VivillonModern[]; -extern const u32 gMonBackPic_VivillonMarine[]; -extern const u32 gMonBackPic_VivillonArchipelago[]; -extern const u32 gMonBackPic_VivillonHighPlains[]; -extern const u32 gMonBackPic_VivillonSandstorm[]; -extern const u32 gMonBackPic_VivillonRiver[]; -extern const u32 gMonBackPic_VivillonMonsoon[]; -extern const u32 gMonBackPic_VivillonSavanna[]; -extern const u32 gMonBackPic_VivillonSun[]; -extern const u32 gMonBackPic_VivillonOcean[]; -extern const u32 gMonBackPic_VivillonJungle[]; -extern const u32 gMonBackPic_VivillonFancy[]; -extern const u32 gMonBackPic_VivillonPokeBall[]; -extern const u32 gMonBackPic_FloetteEternalFlower[]; -extern const u32 gMonBackPic_FurfrouHeartTrim[]; -extern const u32 gMonBackPic_FurfrouStarTrim[]; -extern const u32 gMonBackPic_FurfrouDiamondTrim[]; -extern const u32 gMonBackPic_FurfrouDebutanteTrim[]; -extern const u32 gMonBackPic_FurfrouMatronTrim[]; -extern const u32 gMonBackPic_FurfrouDandyTrim[]; -extern const u32 gMonBackPic_FurfrouLaReineTrim[]; -extern const u32 gMonBackPic_FurfrouKabukiTrim[]; -extern const u32 gMonBackPic_FurfrouPharaohTrim[]; -extern const u32 gMonBackPic_MeowsticFemale[]; -extern const u32 gMonBackPic_AegislashBlade[]; -extern const u32 gMonBackPic_PumpkabooSmall[]; -extern const u32 gMonBackPic_PumpkabooLarge[]; -extern const u32 gMonBackPic_PumpkabooSuper[]; -extern const u32 gMonBackPic_GourgeistSmall[]; -extern const u32 gMonBackPic_GourgeistLarge[]; -extern const u32 gMonBackPic_GourgeistSuper[]; -extern const u32 gMonBackPic_XerneasActive[]; -extern const u32 gMonBackPic_Zygarde10[]; -extern const u32 gMonBackPic_ZygardeComplete[]; -extern const u32 gMonBackPic_HoopaUnbound[]; -#endif -#if P_GEN_7_POKEMON == TRUE -extern const u32 gMonBackPic_OricorioPomPom[]; -extern const u32 gMonBackPic_OricorioPau[]; -extern const u32 gMonBackPic_OricorioSensu[]; -extern const u32 gMonBackPic_LycanrocMidnight[]; -extern const u32 gMonBackPic_LycanrocDusk[]; -extern const u32 gMonBackPic_WishiwashiSchool[]; -extern const u32 gMonBackPic_MiniorCore[]; -extern const u32 gMonBackPic_MimikyuBusted[]; -extern const u32 gMonBackPic_NecrozmaDuskMane[]; -extern const u32 gMonBackPic_NecrozmaDawnWings[]; -extern const u32 gMonBackPic_NecrozmaUltra[]; -extern const u32 gMonBackPic_MagearnaOriginalColor[]; -#endif -#if P_GEN_8_POKEMON == TRUE -extern const u32 gMonBackPic_CramorantGulping[]; -extern const u32 gMonBackPic_CramorantGorging[]; -extern const u32 gMonBackPic_ToxtricityLowKey[]; -extern const u32 gMonBackPic_AlcremieRubyCream[]; -extern const u32 gMonBackPic_AlcremieMatchaCream[]; -extern const u32 gMonBackPic_AlcremieMintCream[]; -extern const u32 gMonBackPic_AlcremieLemonCream[]; -extern const u32 gMonBackPic_AlcremieSaltedCream[]; -extern const u32 gMonBackPic_AlcremieRubySwirl[]; -extern const u32 gMonBackPic_AlcremieCaramelSwirl[]; -extern const u32 gMonBackPic_AlcremieRainbowSwirl[]; -extern const u32 gMonBackPic_EiscueNoiceFace[]; -extern const u32 gMonBackPic_IndeedeeFemale[]; -extern const u32 gMonBackPic_MorpekoHangry[]; -extern const u32 gMonBackPic_ZacianCrownedSword[]; -extern const u32 gMonBackPic_ZamazentaCrownedShield[]; -extern const u32 gMonBackPic_EternatusEternamax[]; -extern const u32 gMonBackPic_UrshifuRapidStrikeStyle[]; -extern const u32 gMonBackPic_ZarudeDada[]; -extern const u32 gMonBackPic_CalyrexIceRider[]; -extern const u32 gMonBackPic_CalyrexShadowRider[]; -extern const u32 gMonBackPic_EnamorusTherian[]; -extern const u32 gMonBackPic_BasculegionFemale[]; -#endif - -extern const u32 gMonPalette_CircledQuestionMark[]; -extern const u32 gMonPalette_DoubleQuestionMark[]; -extern const u32 gMonPalette_Bulbasaur[]; -extern const u32 gMonPalette_Ivysaur[]; -extern const u32 gMonPalette_Venusaur[]; -extern const u32 gMonPalette_Charmander[]; -extern const u32 gMonPalette_Charmeleon[]; -extern const u32 gMonPalette_Charizard[]; -extern const u32 gMonPalette_Squirtle[]; -extern const u32 gMonPalette_Wartortle[]; -extern const u32 gMonPalette_Blastoise[]; -extern const u32 gMonPalette_Caterpie[]; -extern const u32 gMonPalette_Metapod[]; -extern const u32 gMonPalette_Butterfree[]; -extern const u32 gMonPalette_Weedle[]; -extern const u32 gMonPalette_Kakuna[]; -extern const u32 gMonPalette_Beedrill[]; -extern const u32 gMonPalette_Pidgey[]; -extern const u32 gMonPalette_Pidgeotto[]; -extern const u32 gMonPalette_Pidgeot[]; -extern const u32 gMonPalette_Rattata[]; -extern const u32 gMonPalette_Raticate[]; -extern const u32 gMonPalette_Spearow[]; -extern const u32 gMonPalette_Fearow[]; -extern const u32 gMonPalette_Ekans[]; -extern const u32 gMonPalette_Arbok[]; -extern const u32 gMonPalette_Pikachu[]; -extern const u32 gMonPalette_Raichu[]; -extern const u32 gMonPalette_Sandshrew[]; -extern const u32 gMonPalette_Sandslash[]; -extern const u32 gMonPalette_NidoranF[]; -extern const u32 gMonPalette_Nidorina[]; -extern const u32 gMonPalette_Nidoqueen[]; -extern const u32 gMonPalette_NidoranM[]; -extern const u32 gMonPalette_Nidorino[]; -extern const u32 gMonPalette_Nidoking[]; -extern const u32 gMonPalette_Clefairy[]; -extern const u32 gMonPalette_Clefable[]; -extern const u32 gMonPalette_Vulpix[]; -extern const u32 gMonPalette_Ninetales[]; -extern const u32 gMonPalette_Jigglypuff[]; -extern const u32 gMonPalette_Wigglytuff[]; -extern const u32 gMonPalette_Zubat[]; -extern const u32 gMonPalette_Golbat[]; -extern const u32 gMonPalette_Oddish[]; -extern const u32 gMonPalette_Gloom[]; -extern const u32 gMonPalette_Vileplume[]; -extern const u32 gMonPalette_Paras[]; -extern const u32 gMonPalette_Parasect[]; -extern const u32 gMonPalette_Venonat[]; -extern const u32 gMonPalette_Venomoth[]; -extern const u32 gMonPalette_Diglett[]; -extern const u32 gMonPalette_Dugtrio[]; -extern const u32 gMonPalette_Meowth[]; -extern const u32 gMonPalette_Persian[]; -extern const u32 gMonPalette_Psyduck[]; -extern const u32 gMonPalette_Golduck[]; -extern const u32 gMonPalette_Mankey[]; -extern const u32 gMonPalette_Primeape[]; -extern const u32 gMonPalette_Growlithe[]; -extern const u32 gMonPalette_Arcanine[]; -extern const u32 gMonPalette_Poliwag[]; -extern const u32 gMonPalette_Poliwhirl[]; -extern const u32 gMonPalette_Poliwrath[]; -extern const u32 gMonPalette_Abra[]; -extern const u32 gMonPalette_Kadabra[]; -extern const u32 gMonPalette_Alakazam[]; -extern const u32 gMonPalette_Machop[]; -extern const u32 gMonPalette_Machoke[]; -extern const u32 gMonPalette_Machamp[]; -extern const u32 gMonPalette_Bellsprout[]; -extern const u32 gMonPalette_Weepinbell[]; -extern const u32 gMonPalette_Victreebel[]; -extern const u32 gMonPalette_Tentacool[]; -extern const u32 gMonPalette_Tentacruel[]; -extern const u32 gMonPalette_Geodude[]; -extern const u32 gMonPalette_Graveler[]; -extern const u32 gMonPalette_Golem[]; -extern const u32 gMonPalette_Ponyta[]; -extern const u32 gMonPalette_Rapidash[]; -extern const u32 gMonPalette_Slowpoke[]; -extern const u32 gMonPalette_Slowbro[]; -extern const u32 gMonPalette_Magnemite[]; -extern const u32 gMonPalette_Magneton[]; -extern const u32 gMonPalette_Farfetchd[]; -extern const u32 gMonPalette_Doduo[]; -extern const u32 gMonPalette_Dodrio[]; -extern const u32 gMonPalette_Seel[]; -extern const u32 gMonPalette_Dewgong[]; -extern const u32 gMonPalette_Grimer[]; -extern const u32 gMonPalette_Muk[]; -extern const u32 gMonPalette_Shellder[]; -extern const u32 gMonPalette_Cloyster[]; -extern const u32 gMonPalette_Gastly[]; -extern const u32 gMonPalette_Haunter[]; -extern const u32 gMonPalette_Gengar[]; -extern const u32 gMonPalette_Onix[]; -extern const u32 gMonPalette_Drowzee[]; -extern const u32 gMonPalette_Hypno[]; -extern const u32 gMonPalette_Krabby[]; -extern const u32 gMonPalette_Kingler[]; -extern const u32 gMonPalette_Voltorb[]; -extern const u32 gMonPalette_Electrode[]; -extern const u32 gMonPalette_Exeggcute[]; -extern const u32 gMonPalette_Exeggutor[]; -extern const u32 gMonPalette_Cubone[]; -extern const u32 gMonPalette_Marowak[]; -extern const u32 gMonPalette_Hitmonlee[]; -extern const u32 gMonPalette_Hitmonchan[]; -extern const u32 gMonPalette_Lickitung[]; -extern const u32 gMonPalette_Koffing[]; -extern const u32 gMonPalette_Weezing[]; -extern const u32 gMonPalette_Rhyhorn[]; -extern const u32 gMonPalette_Rhydon[]; -extern const u32 gMonPalette_Chansey[]; -extern const u32 gMonPalette_Tangela[]; -extern const u32 gMonPalette_Kangaskhan[]; -extern const u32 gMonPalette_Horsea[]; -extern const u32 gMonPalette_Seadra[]; -extern const u32 gMonPalette_Goldeen[]; -extern const u32 gMonPalette_Seaking[]; -extern const u32 gMonPalette_Staryu[]; -extern const u32 gMonPalette_Starmie[]; -extern const u32 gMonPalette_MrMime[]; -extern const u32 gMonPalette_Scyther[]; -extern const u32 gMonPalette_Jynx[]; -extern const u32 gMonPalette_Electabuzz[]; -extern const u32 gMonPalette_Magmar[]; -extern const u32 gMonPalette_Pinsir[]; -extern const u32 gMonPalette_Tauros[]; -extern const u32 gMonPalette_Magikarp[]; -extern const u32 gMonPalette_Gyarados[]; -extern const u32 gMonPalette_Lapras[]; -extern const u32 gMonPalette_Ditto[]; -extern const u32 gMonPalette_Eevee[]; -extern const u32 gMonPalette_Vaporeon[]; -extern const u32 gMonPalette_Jolteon[]; -extern const u32 gMonPalette_Flareon[]; -extern const u32 gMonPalette_Porygon[]; -extern const u32 gMonPalette_Omanyte[]; -extern const u32 gMonPalette_Omastar[]; -extern const u32 gMonPalette_Kabuto[]; -extern const u32 gMonPalette_Kabutops[]; -extern const u32 gMonPalette_Aerodactyl[]; -extern const u32 gMonPalette_Snorlax[]; -extern const u32 gMonPalette_Articuno[]; -extern const u32 gMonPalette_Zapdos[]; -extern const u32 gMonPalette_Moltres[]; -extern const u32 gMonPalette_Dratini[]; -extern const u32 gMonPalette_Dragonair[]; -extern const u32 gMonPalette_Dragonite[]; -extern const u32 gMonPalette_Mewtwo[]; -extern const u32 gMonPalette_Mew[]; -extern const u32 gMonPalette_Chikorita[]; -extern const u32 gMonPalette_Bayleef[]; -extern const u32 gMonPalette_Meganium[]; -extern const u32 gMonPalette_Cyndaquil[]; -extern const u32 gMonPalette_Quilava[]; -extern const u32 gMonPalette_Typhlosion[]; -extern const u32 gMonPalette_Totodile[]; -extern const u32 gMonPalette_Croconaw[]; -extern const u32 gMonPalette_Feraligatr[]; -extern const u32 gMonPalette_Sentret[]; -extern const u32 gMonPalette_Furret[]; -extern const u32 gMonPalette_Hoothoot[]; -extern const u32 gMonPalette_Noctowl[]; -extern const u32 gMonPalette_Ledyba[]; -extern const u32 gMonPalette_Ledian[]; -extern const u32 gMonPalette_Spinarak[]; -extern const u32 gMonPalette_Ariados[]; -extern const u32 gMonPalette_Crobat[]; -extern const u32 gMonPalette_Chinchou[]; -extern const u32 gMonPalette_Lanturn[]; -extern const u32 gMonPalette_Pichu[]; -extern const u32 gMonPalette_Cleffa[]; -extern const u32 gMonPalette_Igglybuff[]; -extern const u32 gMonPalette_Togepi[]; -extern const u32 gMonPalette_Togetic[]; -extern const u32 gMonPalette_Natu[]; -extern const u32 gMonPalette_Xatu[]; -extern const u32 gMonPalette_Mareep[]; -extern const u32 gMonPalette_Flaaffy[]; -extern const u32 gMonPalette_Ampharos[]; -extern const u32 gMonPalette_Bellossom[]; -extern const u32 gMonPalette_Marill[]; -extern const u32 gMonPalette_Azumarill[]; -extern const u32 gMonPalette_Sudowoodo[]; -extern const u32 gMonPalette_Politoed[]; -extern const u32 gMonPalette_Hoppip[]; -extern const u32 gMonPalette_Skiploom[]; -extern const u32 gMonPalette_Jumpluff[]; -extern const u32 gMonPalette_Aipom[]; -extern const u32 gMonPalette_Sunkern[]; -extern const u32 gMonPalette_Sunflora[]; -extern const u32 gMonPalette_Yanma[]; -extern const u32 gMonPalette_Wooper[]; -extern const u32 gMonPalette_Quagsire[]; -extern const u32 gMonPalette_Espeon[]; -extern const u32 gMonPalette_Umbreon[]; -extern const u32 gMonPalette_Murkrow[]; -extern const u32 gMonPalette_Slowking[]; -extern const u32 gMonPalette_Misdreavus[]; -extern const u32 gMonPalette_Unown[]; -extern const u32 gMonPalette_Wobbuffet[]; -extern const u32 gMonPalette_Girafarig[]; -extern const u32 gMonPalette_Pineco[]; -extern const u32 gMonPalette_Forretress[]; -extern const u32 gMonPalette_Dunsparce[]; -extern const u32 gMonPalette_Gligar[]; -extern const u32 gMonPalette_Steelix[]; -extern const u32 gMonPalette_Snubbull[]; -extern const u32 gMonPalette_Granbull[]; -extern const u32 gMonPalette_Qwilfish[]; -extern const u32 gMonPalette_Scizor[]; -extern const u32 gMonPalette_Shuckle[]; -extern const u32 gMonPalette_Heracross[]; -extern const u32 gMonPalette_Sneasel[]; -extern const u32 gMonPalette_Teddiursa[]; -extern const u32 gMonPalette_Ursaring[]; -extern const u32 gMonPalette_Slugma[]; -extern const u32 gMonPalette_Magcargo[]; -extern const u32 gMonPalette_Swinub[]; -extern const u32 gMonPalette_Piloswine[]; -extern const u32 gMonPalette_Corsola[]; -extern const u32 gMonPalette_Remoraid[]; -extern const u32 gMonPalette_Octillery[]; -extern const u32 gMonPalette_Delibird[]; -extern const u32 gMonPalette_Mantine[]; -extern const u32 gMonPalette_Skarmory[]; -extern const u32 gMonPalette_Houndour[]; -extern const u32 gMonPalette_Houndoom[]; -extern const u32 gMonPalette_Kingdra[]; -extern const u32 gMonPalette_Phanpy[]; -extern const u32 gMonPalette_Donphan[]; -extern const u32 gMonPalette_Porygon2[]; -extern const u32 gMonPalette_Stantler[]; -extern const u32 gMonPalette_Smeargle[]; -extern const u32 gMonPalette_Tyrogue[]; -extern const u32 gMonPalette_Hitmontop[]; -extern const u32 gMonPalette_Smoochum[]; -extern const u32 gMonPalette_Elekid[]; -extern const u32 gMonPalette_Magby[]; -extern const u32 gMonPalette_Miltank[]; -extern const u32 gMonPalette_Blissey[]; -extern const u32 gMonPalette_Raikou[]; -extern const u32 gMonPalette_Entei[]; -extern const u32 gMonPalette_Suicune[]; -extern const u32 gMonPalette_Larvitar[]; -extern const u32 gMonPalette_Pupitar[]; -extern const u32 gMonPalette_Tyranitar[]; -extern const u32 gMonPalette_Lugia[]; -extern const u32 gMonPalette_HoOh[]; -extern const u32 gMonPalette_Celebi[]; -extern const u32 gMonPalette_Treecko[]; -extern const u32 gMonPalette_Grovyle[]; -extern const u32 gMonPalette_Sceptile[]; -extern const u32 gMonPalette_Torchic[]; -extern const u32 gMonPalette_Combusken[]; -extern const u32 gMonPalette_Blaziken[]; -extern const u32 gMonPalette_Mudkip[]; -extern const u32 gMonPalette_Marshtomp[]; -extern const u32 gMonPalette_Swampert[]; -extern const u32 gMonPalette_Poochyena[]; -extern const u32 gMonPalette_Mightyena[]; -extern const u32 gMonPalette_Zigzagoon[]; -extern const u32 gMonPalette_Linoone[]; -extern const u32 gMonPalette_Wurmple[]; -extern const u32 gMonPalette_Silcoon[]; -extern const u32 gMonPalette_Beautifly[]; -extern const u32 gMonPalette_Cascoon[]; -extern const u32 gMonPalette_Dustox[]; -extern const u32 gMonPalette_Lotad[]; -extern const u32 gMonPalette_Lombre[]; -extern const u32 gMonPalette_Ludicolo[]; -extern const u32 gMonPalette_Seedot[]; -extern const u32 gMonPalette_Nuzleaf[]; -extern const u32 gMonPalette_Shiftry[]; -extern const u32 gMonPalette_Taillow[]; -extern const u32 gMonPalette_Swellow[]; -extern const u32 gMonPalette_Wingull[]; -extern const u32 gMonPalette_Pelipper[]; -extern const u32 gMonPalette_Ralts[]; -extern const u32 gMonPalette_Kirlia[]; -extern const u32 gMonPalette_Gardevoir[]; -extern const u32 gMonPalette_Surskit[]; -extern const u32 gMonPalette_Masquerain[]; -extern const u32 gMonPalette_Shroomish[]; -extern const u32 gMonPalette_Breloom[]; -extern const u32 gMonPalette_Slakoth[]; -extern const u32 gMonPalette_Vigoroth[]; -extern const u32 gMonPalette_Slaking[]; -extern const u32 gMonPalette_Nincada[]; -extern const u32 gMonPalette_Ninjask[]; -extern const u32 gMonPalette_Shedinja[]; -extern const u32 gMonPalette_Whismur[]; -extern const u32 gMonPalette_Loudred[]; -extern const u32 gMonPalette_Exploud[]; -extern const u32 gMonPalette_Makuhita[]; -extern const u32 gMonPalette_Hariyama[]; -extern const u32 gMonPalette_Azurill[]; -extern const u32 gMonPalette_Nosepass[]; -extern const u32 gMonPalette_Skitty[]; -extern const u32 gMonPalette_Delcatty[]; -extern const u32 gMonPalette_Sableye[]; -extern const u32 gMonPalette_Mawile[]; -extern const u32 gMonPalette_Aron[]; -extern const u32 gMonPalette_Lairon[]; -extern const u32 gMonPalette_Aggron[]; -extern const u32 gMonPalette_Meditite[]; -extern const u32 gMonPalette_Medicham[]; -extern const u32 gMonPalette_Electrike[]; -extern const u32 gMonPalette_Manectric[]; -extern const u32 gMonPalette_Plusle[]; -extern const u32 gMonPalette_Minun[]; -extern const u32 gMonPalette_Volbeat[]; -extern const u32 gMonPalette_Illumise[]; -extern const u32 gMonPalette_Roselia[]; -extern const u32 gMonPalette_Gulpin[]; -extern const u32 gMonPalette_Swalot[]; -extern const u32 gMonPalette_Carvanha[]; -extern const u32 gMonPalette_Sharpedo[]; -extern const u32 gMonPalette_Wailmer[]; -extern const u32 gMonPalette_Wailord[]; -extern const u32 gMonPalette_Numel[]; -extern const u32 gMonPalette_Camerupt[]; -extern const u32 gMonPalette_Torkoal[]; -extern const u32 gMonPalette_Spoink[]; -extern const u32 gMonPalette_Grumpig[]; -extern const u32 gMonPalette_Spinda[]; -extern const u32 gMonPalette_Trapinch[]; -extern const u32 gMonPalette_Vibrava[]; -extern const u32 gMonPalette_Flygon[]; -extern const u32 gMonPalette_Cacnea[]; -extern const u32 gMonPalette_Cacturne[]; -extern const u32 gMonPalette_Swablu[]; -extern const u32 gMonPalette_Altaria[]; -extern const u32 gMonPalette_Zangoose[]; -extern const u32 gMonPalette_Seviper[]; -extern const u32 gMonPalette_Lunatone[]; -extern const u32 gMonPalette_Solrock[]; -extern const u32 gMonPalette_Barboach[]; -extern const u32 gMonPalette_Whiscash[]; -extern const u32 gMonPalette_Corphish[]; -extern const u32 gMonPalette_Crawdaunt[]; -extern const u32 gMonPalette_Baltoy[]; -extern const u32 gMonPalette_Claydol[]; -extern const u32 gMonPalette_Lileep[]; -extern const u32 gMonPalette_Cradily[]; -extern const u32 gMonPalette_Anorith[]; -extern const u32 gMonPalette_Armaldo[]; -extern const u32 gMonPalette_Feebas[]; -extern const u32 gMonPalette_Milotic[]; -extern const u32 gMonPalette_Castform[]; -extern const u32 gMonPalette_Kecleon[]; -extern const u32 gMonPalette_Shuppet[]; -extern const u32 gMonPalette_Banette[]; -extern const u32 gMonPalette_Duskull[]; -extern const u32 gMonPalette_Dusclops[]; -extern const u32 gMonPalette_Tropius[]; -extern const u32 gMonPalette_Chimecho[]; -extern const u32 gMonPalette_Absol[]; -extern const u32 gMonPalette_Wynaut[]; -extern const u32 gMonPalette_Snorunt[]; -extern const u32 gMonPalette_Glalie[]; -extern const u32 gMonPalette_Spheal[]; -extern const u32 gMonPalette_Sealeo[]; -extern const u32 gMonPalette_Walrein[]; -extern const u32 gMonPalette_Clamperl[]; -extern const u32 gMonPalette_Huntail[]; -extern const u32 gMonPalette_Gorebyss[]; -extern const u32 gMonPalette_Relicanth[]; -extern const u32 gMonPalette_Luvdisc[]; -extern const u32 gMonPalette_Bagon[]; -extern const u32 gMonPalette_Shelgon[]; -extern const u32 gMonPalette_Salamence[]; -extern const u32 gMonPalette_Beldum[]; -extern const u32 gMonPalette_Metang[]; -extern const u32 gMonPalette_Metagross[]; -extern const u32 gMonPalette_Regirock[]; -extern const u32 gMonPalette_Regice[]; -extern const u32 gMonPalette_Registeel[]; -extern const u32 gMonPalette_Latias[]; -extern const u32 gMonPalette_Latios[]; -extern const u32 gMonPalette_Kyogre[]; -extern const u32 gMonPalette_Groudon[]; -extern const u32 gMonPalette_Rayquaza[]; -extern const u32 gMonPalette_Jirachi[]; -extern const u32 gMonPalette_Deoxys[]; -#if P_GEN_4_POKEMON == TRUE -extern const u32 gMonPalette_Turtwig[]; -extern const u32 gMonPalette_Grotle[]; -extern const u32 gMonPalette_Torterra[]; -extern const u32 gMonPalette_Chimchar[]; -extern const u32 gMonPalette_Monferno[]; -extern const u32 gMonPalette_Infernape[]; -extern const u32 gMonPalette_Piplup[]; -extern const u32 gMonPalette_Prinplup[]; -extern const u32 gMonPalette_Empoleon[]; -extern const u32 gMonPalette_Starly[]; -extern const u32 gMonPalette_Staravia[]; -extern const u32 gMonPalette_Staraptor[]; -extern const u32 gMonPalette_Bidoof[]; -extern const u32 gMonPalette_Bibarel[]; -extern const u32 gMonPalette_Kricketot[]; -extern const u32 gMonPalette_Kricketune[]; -extern const u32 gMonPalette_Shinx[]; -extern const u32 gMonPalette_Luxio[]; -extern const u32 gMonPalette_Luxray[]; -extern const u32 gMonPalette_Budew[]; -extern const u32 gMonPalette_Roserade[]; -extern const u32 gMonPalette_Cranidos[]; -extern const u32 gMonPalette_Rampardos[]; -extern const u32 gMonPalette_Shieldon[]; -extern const u32 gMonPalette_Bastiodon[]; -extern const u32 gMonPalette_Burmy[]; -extern const u32 gMonPalette_Wormadam[]; -extern const u32 gMonPalette_Mothim[]; -extern const u32 gMonPalette_Combee[]; -extern const u32 gMonPalette_CombeeF[]; -extern const u32 gMonPalette_Vespiquen[]; -extern const u32 gMonPalette_Pachirisu[]; -extern const u32 gMonPalette_Buizel[]; -extern const u32 gMonPalette_Floatzel[]; -extern const u32 gMonPalette_Cherubi[]; -extern const u32 gMonPalette_Cherrim[]; -extern const u32 gMonPalette_Shellos[]; -extern const u32 gMonPalette_Gastrodon[]; -extern const u32 gMonPalette_Ambipom[]; -extern const u32 gMonPalette_Drifloon[]; -extern const u32 gMonPalette_Drifblim[]; -extern const u32 gMonPalette_Buneary[]; -extern const u32 gMonPalette_Lopunny[]; -extern const u32 gMonPalette_Mismagius[]; -extern const u32 gMonPalette_Honchkrow[]; -extern const u32 gMonPalette_Glameow[]; -extern const u32 gMonPalette_Purugly[]; -extern const u32 gMonPalette_Chingling[]; -extern const u32 gMonPalette_Stunky[]; -extern const u32 gMonPalette_Skuntank[]; -extern const u32 gMonPalette_Bronzor[]; -extern const u32 gMonPalette_Bronzong[]; -extern const u32 gMonPalette_Bonsly[]; -extern const u32 gMonPalette_MimeJr[]; -extern const u32 gMonPalette_Happiny[]; -extern const u32 gMonPalette_Chatot[]; -extern const u32 gMonPalette_Spiritomb[]; -extern const u32 gMonPalette_Gible[]; -extern const u32 gMonPalette_Gabite[]; -extern const u32 gMonPalette_Garchomp[]; -extern const u32 gMonPalette_Munchlax[]; -extern const u32 gMonPalette_Riolu[]; -extern const u32 gMonPalette_Lucario[]; -extern const u32 gMonPalette_Hippopotas[]; -extern const u32 gMonPalette_HippopotasF[]; -extern const u32 gMonPalette_Hippowdon[]; -extern const u32 gMonPalette_HippowdonF[]; -extern const u32 gMonPalette_Skorupi[]; -extern const u32 gMonPalette_Drapion[]; -extern const u32 gMonPalette_Croagunk[]; -extern const u32 gMonPalette_Toxicroak[]; -extern const u32 gMonPalette_Carnivine[]; -extern const u32 gMonPalette_Finneon[]; -extern const u32 gMonPalette_Lumineon[]; -extern const u32 gMonPalette_Mantyke[]; -extern const u32 gMonPalette_Snover[]; -extern const u32 gMonPalette_Abomasnow[]; -extern const u32 gMonPalette_Weavile[]; -extern const u32 gMonPalette_Magnezone[]; -extern const u32 gMonPalette_Lickilicky[]; -extern const u32 gMonPalette_Rhyperior[]; -extern const u32 gMonPalette_Tangrowth[]; -extern const u32 gMonPalette_Electivire[]; -extern const u32 gMonPalette_Magmortar[]; -extern const u32 gMonPalette_Togekiss[]; -extern const u32 gMonPalette_Yanmega[]; -extern const u32 gMonPalette_Leafeon[]; -extern const u32 gMonPalette_Glaceon[]; -extern const u32 gMonPalette_Gliscor[]; -extern const u32 gMonPalette_Mamoswine[]; -extern const u32 gMonPalette_PorygonZ[]; -extern const u32 gMonPalette_Gallade[]; -extern const u32 gMonPalette_Probopass[]; -extern const u32 gMonPalette_Dusknoir[]; -extern const u32 gMonPalette_Froslass[]; -extern const u32 gMonPalette_Rotom[]; -extern const u32 gMonPalette_Uxie[]; -extern const u32 gMonPalette_Mesprit[]; -extern const u32 gMonPalette_Azelf[]; -extern const u32 gMonPalette_Dialga[]; -extern const u32 gMonPalette_Palkia[]; -extern const u32 gMonPalette_Heatran[]; -extern const u32 gMonPalette_Regigigas[]; -extern const u32 gMonPalette_Giratina[]; -extern const u32 gMonPalette_Cresselia[]; -extern const u32 gMonPalette_Phione[]; -extern const u32 gMonPalette_Manaphy[]; -extern const u32 gMonPalette_Darkrai[]; -extern const u32 gMonPalette_Shaymin[]; -extern const u32 gMonPalette_Arceus[]; -#endif -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonPalette_Victini[]; -extern const u32 gMonPalette_Snivy[]; -extern const u32 gMonPalette_Servine[]; -extern const u32 gMonPalette_Serperior[]; -extern const u32 gMonPalette_Tepig[]; -extern const u32 gMonPalette_Pignite[]; -extern const u32 gMonPalette_Emboar[]; -extern const u32 gMonPalette_Oshawott[]; -extern const u32 gMonPalette_Dewott[]; -extern const u32 gMonPalette_Samurott[]; -extern const u32 gMonPalette_Patrat[]; -extern const u32 gMonPalette_Watchog[]; -extern const u32 gMonPalette_Lillipup[]; -extern const u32 gMonPalette_Herdier[]; -extern const u32 gMonPalette_Stoutland[]; -extern const u32 gMonPalette_Purrloin[]; -extern const u32 gMonPalette_Liepard[]; -extern const u32 gMonPalette_Pansage[]; -extern const u32 gMonPalette_Simisage[]; -extern const u32 gMonPalette_Pansear[]; -extern const u32 gMonPalette_Simisear[]; -extern const u32 gMonPalette_Panpour[]; -extern const u32 gMonPalette_Simipour[]; -extern const u32 gMonPalette_Munna[]; -extern const u32 gMonPalette_Musharna[]; -extern const u32 gMonPalette_Pidove[]; -extern const u32 gMonPalette_Tranquill[]; -extern const u32 gMonPalette_Unfezant[]; -extern const u32 gMonPalette_UnfezantF[]; -extern const u32 gMonPalette_Blitzle[]; -extern const u32 gMonPalette_Zebstrika[]; -extern const u32 gMonPalette_Roggenrola[]; -extern const u32 gMonPalette_Boldore[]; -extern const u32 gMonPalette_Gigalith[]; -extern const u32 gMonPalette_Woobat[]; -extern const u32 gMonPalette_Swoobat[]; -extern const u32 gMonPalette_Drilbur[]; -extern const u32 gMonPalette_Excadrill[]; -extern const u32 gMonPalette_Audino[]; -extern const u32 gMonPalette_Timburr[]; -extern const u32 gMonPalette_Gurdurr[]; -extern const u32 gMonPalette_Conkeldurr[]; -extern const u32 gMonPalette_Tympole[]; -extern const u32 gMonPalette_Palpitoad[]; -extern const u32 gMonPalette_Seismitoad[]; -extern const u32 gMonPalette_Throh[]; -extern const u32 gMonPalette_Sawk[]; -extern const u32 gMonPalette_Sewaddle[]; -extern const u32 gMonPalette_Swadloon[]; -extern const u32 gMonPalette_Leavanny[]; -extern const u32 gMonPalette_Venipede[]; -extern const u32 gMonPalette_Whirlipede[]; -extern const u32 gMonPalette_Scolipede[]; -extern const u32 gMonPalette_Cottonee[]; -extern const u32 gMonPalette_Whimsicott[]; -extern const u32 gMonPalette_Petilil[]; -extern const u32 gMonPalette_Lilligant[]; -extern const u32 gMonPalette_Basculin[]; -extern const u32 gMonPalette_Sandile[]; -extern const u32 gMonPalette_Krokorok[]; -extern const u32 gMonPalette_Krookodile[]; -extern const u32 gMonPalette_Darumaka[]; -extern const u32 gMonPalette_Darmanitan[]; -extern const u32 gMonPalette_Maractus[]; -extern const u32 gMonPalette_Dwebble[]; -extern const u32 gMonPalette_Crustle[]; -extern const u32 gMonPalette_Scraggy[]; -extern const u32 gMonPalette_Scrafty[]; -extern const u32 gMonPalette_Sigilyph[]; -extern const u32 gMonPalette_Yamask[]; -extern const u32 gMonPalette_Cofagrigus[]; -extern const u32 gMonPalette_Tirtouga[]; -extern const u32 gMonPalette_Carracosta[]; -extern const u32 gMonPalette_Archen[]; -extern const u32 gMonPalette_Archeops[]; -extern const u32 gMonPalette_Trubbish[]; -extern const u32 gMonPalette_Garbodor[]; -extern const u32 gMonPalette_Zorua[]; -extern const u32 gMonPalette_Zoroark[]; -extern const u32 gMonPalette_Minccino[]; -extern const u32 gMonPalette_Cinccino[]; -extern const u32 gMonPalette_Gothita[]; -extern const u32 gMonPalette_Gothorita[]; -extern const u32 gMonPalette_Gothitelle[]; -extern const u32 gMonPalette_Solosis[]; -extern const u32 gMonPalette_Duosion[]; -extern const u32 gMonPalette_Reuniclus[]; -extern const u32 gMonPalette_Ducklett[]; -extern const u32 gMonPalette_Swanna[]; -extern const u32 gMonPalette_Vanillite[]; -extern const u32 gMonPalette_Vanillish[]; -extern const u32 gMonPalette_Vanilluxe[]; -extern const u32 gMonPalette_Deerling[]; -extern const u32 gMonPalette_Sawsbuck[]; -extern const u32 gMonPalette_Emolga[]; -extern const u32 gMonPalette_Karrablast[]; -extern const u32 gMonPalette_Escavalier[]; -extern const u32 gMonPalette_Foongus[]; -extern const u32 gMonPalette_Amoonguss[]; -extern const u32 gMonPalette_Frillish[]; -extern const u32 gMonPalette_FrillishF[]; -extern const u32 gMonPalette_Jellicent[]; -extern const u32 gMonPalette_JellicentF[]; -extern const u32 gMonPalette_Alomomola[]; -extern const u32 gMonPalette_Joltik[]; -extern const u32 gMonPalette_Galvantula[]; -extern const u32 gMonPalette_Ferroseed[]; -extern const u32 gMonPalette_Ferrothorn[]; -extern const u32 gMonPalette_Klink[]; -extern const u32 gMonPalette_Klang[]; -extern const u32 gMonPalette_Klinklang[]; -extern const u32 gMonPalette_Tynamo[]; -extern const u32 gMonPalette_Eelektrik[]; -extern const u32 gMonPalette_Eelektross[]; -extern const u32 gMonPalette_Elgyem[]; -extern const u32 gMonPalette_Beheeyem[]; -extern const u32 gMonPalette_Litwick[]; -extern const u32 gMonPalette_Lampent[]; -extern const u32 gMonPalette_Chandelure[]; -extern const u32 gMonPalette_Axew[]; -extern const u32 gMonPalette_Fraxure[]; -extern const u32 gMonPalette_Haxorus[]; -extern const u32 gMonPalette_Cubchoo[]; -extern const u32 gMonPalette_Beartic[]; -extern const u32 gMonPalette_Cryogonal[]; -extern const u32 gMonPalette_Shelmet[]; -extern const u32 gMonPalette_Accelgor[]; -extern const u32 gMonPalette_Stunfisk[]; -extern const u32 gMonPalette_Mienfoo[]; -extern const u32 gMonPalette_Mienshao[]; -extern const u32 gMonPalette_Druddigon[]; -extern const u32 gMonPalette_Golett[]; -extern const u32 gMonPalette_Golurk[]; -extern const u32 gMonPalette_Pawniard[]; -extern const u32 gMonPalette_Bisharp[]; -extern const u32 gMonPalette_Bouffalant[]; -extern const u32 gMonPalette_Rufflet[]; -extern const u32 gMonPalette_Braviary[]; -extern const u32 gMonPalette_Vullaby[]; -extern const u32 gMonPalette_Mandibuzz[]; -extern const u32 gMonPalette_Heatmor[]; -extern const u32 gMonPalette_Durant[]; -extern const u32 gMonPalette_Deino[]; -extern const u32 gMonPalette_Zweilous[]; -extern const u32 gMonPalette_Hydreigon[]; -extern const u32 gMonPalette_Larvesta[]; -extern const u32 gMonPalette_Volcarona[]; -extern const u32 gMonPalette_Cobalion[]; -extern const u32 gMonPalette_Terrakion[]; -extern const u32 gMonPalette_Virizion[]; -extern const u32 gMonPalette_Tornadus[]; -extern const u32 gMonPalette_Thundurus[]; -extern const u32 gMonPalette_Reshiram[]; -extern const u32 gMonPalette_Zekrom[]; -extern const u32 gMonPalette_Landorus[]; -extern const u32 gMonPalette_Kyurem[]; -extern const u32 gMonPalette_Keldeo[]; -extern const u32 gMonPalette_Meloetta[]; -extern const u32 gMonPalette_Genesect[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u32 gMonPalette_Chespin[]; -extern const u32 gMonPalette_Quilladin[]; -extern const u32 gMonPalette_Chesnaught[]; -extern const u32 gMonPalette_Fennekin[]; -extern const u32 gMonPalette_Braixen[]; -extern const u32 gMonPalette_Delphox[]; -extern const u32 gMonPalette_Froakie[]; -extern const u32 gMonPalette_Frogadier[]; -extern const u32 gMonPalette_Greninja[]; -extern const u32 gMonPalette_Bunnelby[]; -extern const u32 gMonPalette_Diggersby[]; -extern const u32 gMonPalette_Fletchling[]; -extern const u32 gMonPalette_Fletchinder[]; -extern const u32 gMonPalette_Talonflame[]; -extern const u32 gMonPalette_Scatterbug[]; -extern const u32 gMonPalette_Spewpa[]; -extern const u32 gMonPalette_Vivillon[]; -extern const u32 gMonPalette_Litleo[]; -extern const u32 gMonPalette_Pyroar[]; -extern const u32 gMonPalette_Flabebe[]; -extern const u32 gMonPalette_Floette[]; -extern const u32 gMonPalette_Florges[]; -extern const u32 gMonPalette_Skiddo[]; -extern const u32 gMonPalette_Gogoat[]; -extern const u32 gMonPalette_Pancham[]; -extern const u32 gMonPalette_Pangoro[]; -extern const u32 gMonPalette_Furfrou[]; -extern const u32 gMonPalette_Espurr[]; -extern const u32 gMonPalette_Meowstic[]; -extern const u32 gMonPalette_Honedge[]; -extern const u32 gMonPalette_Doublade[]; -extern const u32 gMonPalette_Aegislash[]; -extern const u32 gMonPalette_Spritzee[]; -extern const u32 gMonPalette_Aromatisse[]; -extern const u32 gMonPalette_Swirlix[]; -extern const u32 gMonPalette_Slurpuff[]; -extern const u32 gMonPalette_Inkay[]; -extern const u32 gMonPalette_Malamar[]; -extern const u32 gMonPalette_Binacle[]; -extern const u32 gMonPalette_Barbaracle[]; -extern const u32 gMonPalette_Skrelp[]; -extern const u32 gMonPalette_Dragalge[]; -extern const u32 gMonPalette_Clauncher[]; -extern const u32 gMonPalette_Clawitzer[]; -extern const u32 gMonPalette_Helioptile[]; -extern const u32 gMonPalette_Heliolisk[]; -extern const u32 gMonPalette_Tyrunt[]; -extern const u32 gMonPalette_Tyrantrum[]; -extern const u32 gMonPalette_Amaura[]; -extern const u32 gMonPalette_Aurorus[]; -extern const u32 gMonPalette_Sylveon[]; -extern const u32 gMonPalette_Hawlucha[]; -extern const u32 gMonPalette_Dedenne[]; -extern const u32 gMonPalette_Carbink[]; -extern const u32 gMonPalette_Goomy[]; -extern const u32 gMonPalette_Sliggoo[]; -extern const u32 gMonPalette_Goodra[]; -extern const u32 gMonPalette_Klefki[]; -extern const u32 gMonPalette_Phantump[]; -extern const u32 gMonPalette_Trevenant[]; -extern const u32 gMonPalette_Pumpkaboo[]; -extern const u32 gMonPalette_Gourgeist[]; -extern const u32 gMonPalette_Bergmite[]; -extern const u32 gMonPalette_Avalugg[]; -extern const u32 gMonPalette_Noibat[]; -extern const u32 gMonPalette_Noivern[]; -extern const u32 gMonPalette_Xerneas[]; -extern const u32 gMonPalette_Yveltal[]; -extern const u32 gMonPalette_Zygarde[]; -extern const u32 gMonPalette_Diancie[]; -extern const u32 gMonPalette_Hoopa[]; -extern const u32 gMonPalette_Volcanion[]; -#endif -#if P_GEN_7_POKEMON == TRUE -extern const u32 gMonPalette_Rowlet[]; -extern const u32 gMonPalette_Dartrix[]; -extern const u32 gMonPalette_Decidueye[]; -extern const u32 gMonPalette_Litten[]; -extern const u32 gMonPalette_Torracat[]; -extern const u32 gMonPalette_Incineroar[]; -extern const u32 gMonPalette_Popplio[]; -extern const u32 gMonPalette_Brionne[]; -extern const u32 gMonPalette_Primarina[]; -extern const u32 gMonPalette_Pikipek[]; -extern const u32 gMonPalette_Trumbeak[]; -extern const u32 gMonPalette_Toucannon[]; -extern const u32 gMonPalette_Yungoos[]; -extern const u32 gMonPalette_Gumshoos[]; -extern const u32 gMonPalette_Grubbin[]; -extern const u32 gMonPalette_Charjabug[]; -extern const u32 gMonPalette_Vikavolt[]; -extern const u32 gMonPalette_Crabrawler[]; -extern const u32 gMonPalette_Crabominable[]; -extern const u32 gMonPalette_Oricorio[]; -extern const u32 gMonPalette_Cutiefly[]; -extern const u32 gMonPalette_Ribombee[]; -extern const u32 gMonPalette_Rockruff[]; -extern const u32 gMonPalette_Lycanroc[]; -extern const u32 gMonPalette_Wishiwashi[]; -extern const u32 gMonPalette_Mareanie[]; -extern const u32 gMonPalette_Toxapex[]; -extern const u32 gMonPalette_Mudbray[]; -extern const u32 gMonPalette_Mudsdale[]; -extern const u32 gMonPalette_Dewpider[]; -extern const u32 gMonPalette_Araquanid[]; -extern const u32 gMonPalette_Fomantis[]; -extern const u32 gMonPalette_Lurantis[]; -extern const u32 gMonPalette_Morelull[]; -extern const u32 gMonPalette_Shiinotic[]; -extern const u32 gMonPalette_Salandit[]; -extern const u32 gMonPalette_Salazzle[]; -extern const u32 gMonPalette_Stufful[]; -extern const u32 gMonPalette_Bewear[]; -extern const u32 gMonPalette_Bounsweet[]; -extern const u32 gMonPalette_Steenee[]; -extern const u32 gMonPalette_Tsareena[]; -extern const u32 gMonPalette_Comfey[]; -extern const u32 gMonPalette_Oranguru[]; -extern const u32 gMonPalette_Passimian[]; -extern const u32 gMonPalette_Wimpod[]; -extern const u32 gMonPalette_Golisopod[]; -extern const u32 gMonPalette_Sandygast[]; -extern const u32 gMonPalette_Palossand[]; -extern const u32 gMonPalette_Pyukumuku[]; -extern const u32 gMonPalette_TypeNull[]; -extern const u32 gMonPalette_Silvally[]; -extern const u32 gMonPalette_Minior[]; -extern const u32 gMonPalette_Komala[]; -extern const u32 gMonPalette_Turtonator[]; -extern const u32 gMonPalette_Togedemaru[]; -extern const u32 gMonPalette_Mimikyu[]; -extern const u32 gMonPalette_Bruxish[]; -extern const u32 gMonPalette_Drampa[]; -extern const u32 gMonPalette_Dhelmise[]; -extern const u32 gMonPalette_JangmoO[]; -extern const u32 gMonPalette_HakamoO[]; -extern const u32 gMonPalette_KommoO[]; -extern const u32 gMonPalette_TapuKoko[]; -extern const u32 gMonPalette_TapuLele[]; -extern const u32 gMonPalette_TapuBulu[]; -extern const u32 gMonPalette_TapuFini[]; -extern const u32 gMonPalette_Cosmog[]; -extern const u32 gMonPalette_Cosmoem[]; -extern const u32 gMonPalette_Solgaleo[]; -extern const u32 gMonPalette_Lunala[]; -extern const u32 gMonPalette_Nihilego[]; -extern const u32 gMonPalette_Buzzwole[]; -extern const u32 gMonPalette_Pheromosa[]; -extern const u32 gMonPalette_Xurkitree[]; -extern const u32 gMonPalette_Celesteela[]; -extern const u32 gMonPalette_Kartana[]; -extern const u32 gMonPalette_Guzzlord[]; -extern const u32 gMonPalette_Necrozma[]; -extern const u32 gMonPalette_Magearna[]; -extern const u32 gMonPalette_Marshadow[]; -extern const u32 gMonPalette_Poipole[]; -extern const u32 gMonPalette_Naganadel[]; -extern const u32 gMonPalette_Stakataka[]; -extern const u32 gMonPalette_Blacephalon[]; -extern const u32 gMonPalette_Zeraora[]; -extern const u32 gMonPalette_Meltan[]; -extern const u32 gMonPalette_Melmetal[]; -#endif -#if P_GEN_8_POKEMON == TRUE -extern const u32 gMonPalette_Grookey[]; -extern const u32 gMonPalette_Thwackey[]; -extern const u32 gMonPalette_Rillaboom[]; -extern const u32 gMonPalette_Scorbunny[]; -extern const u32 gMonPalette_Raboot[]; -extern const u32 gMonPalette_Cinderace[]; -extern const u32 gMonPalette_Sobble[]; -extern const u32 gMonPalette_Drizzile[]; -extern const u32 gMonPalette_Inteleon[]; -extern const u32 gMonPalette_Skwovet[]; -extern const u32 gMonPalette_Greedent[]; -extern const u32 gMonPalette_Rookidee[]; -extern const u32 gMonPalette_Corvisquire[]; -extern const u32 gMonPalette_Corviknight[]; -extern const u32 gMonPalette_Blipbug[]; -extern const u32 gMonPalette_Dottler[]; -extern const u32 gMonPalette_Orbeetle[]; -extern const u32 gMonPalette_Nickit[]; -extern const u32 gMonPalette_Thievul[]; -extern const u32 gMonPalette_Gossifleur[]; -extern const u32 gMonPalette_Eldegoss[]; -extern const u32 gMonPalette_Wooloo[]; -extern const u32 gMonPalette_Dubwool[]; -extern const u32 gMonPalette_Chewtle[]; -extern const u32 gMonPalette_Drednaw[]; -extern const u32 gMonPalette_Yamper[]; -extern const u32 gMonPalette_Boltund[]; -extern const u32 gMonPalette_Rolycoly[]; -extern const u32 gMonPalette_Carkol[]; -extern const u32 gMonPalette_Coalossal[]; -extern const u32 gMonPalette_Applin[]; -extern const u32 gMonPalette_Flapple[]; -extern const u32 gMonPalette_Appletun[]; -extern const u32 gMonPalette_Silicobra[]; -extern const u32 gMonPalette_Sandaconda[]; -extern const u32 gMonPalette_Cramorant[]; -extern const u32 gMonPalette_Arrokuda[]; -extern const u32 gMonPalette_Barraskewda[]; -extern const u32 gMonPalette_Toxel[]; -extern const u32 gMonPalette_Toxtricity[]; -extern const u32 gMonPalette_Sizzlipede[]; -extern const u32 gMonPalette_Centiskorch[]; -extern const u32 gMonPalette_Clobbopus[]; -extern const u32 gMonPalette_Grapploct[]; -extern const u32 gMonPalette_Sinistea[]; -extern const u32 gMonPalette_Polteageist[]; -extern const u32 gMonPalette_Hatenna[]; -extern const u32 gMonPalette_Hattrem[]; -extern const u32 gMonPalette_Hatterene[]; -extern const u32 gMonPalette_Impidimp[]; -extern const u32 gMonPalette_Morgrem[]; -extern const u32 gMonPalette_Grimmsnarl[]; -extern const u32 gMonPalette_Obstagoon[]; -extern const u32 gMonPalette_Perrserker[]; -extern const u32 gMonPalette_Cursola[]; -extern const u32 gMonPalette_Sirfetchd[]; -extern const u32 gMonPalette_MrRime[]; -extern const u32 gMonPalette_Runerigus[]; -extern const u32 gMonPalette_Milcery[]; -extern const u32 gMonPalette_Alcremie[]; -extern const u32 gMonPalette_Falinks[]; -extern const u32 gMonPalette_Pincurchin[]; -extern const u32 gMonPalette_Snom[]; -extern const u32 gMonPalette_Frosmoth[]; -extern const u32 gMonPalette_Stonjourner[]; -extern const u32 gMonPalette_Eiscue[]; -extern const u32 gMonPalette_Indeedee[]; -extern const u32 gMonPalette_Morpeko[]; -extern const u32 gMonPalette_Cufant[]; -extern const u32 gMonPalette_Copperajah[]; -extern const u32 gMonPalette_Dracozolt[]; -extern const u32 gMonPalette_Arctozolt[]; -extern const u32 gMonPalette_Dracovish[]; -extern const u32 gMonPalette_Arctovish[]; -extern const u32 gMonPalette_Duraludon[]; -extern const u32 gMonPalette_Dreepy[]; -extern const u32 gMonPalette_Drakloak[]; -extern const u32 gMonPalette_Dragapult[]; -extern const u32 gMonPalette_Zacian[]; -extern const u32 gMonPalette_Zamazenta[]; -extern const u32 gMonPalette_Eternatus[]; -extern const u32 gMonPalette_Kubfu[]; -extern const u32 gMonPalette_Urshifu[]; -extern const u32 gMonPalette_Zarude[]; -extern const u32 gMonPalette_Regieleki[]; -extern const u32 gMonPalette_Regidrago[]; -extern const u32 gMonPalette_Glastrier[]; -extern const u32 gMonPalette_Spectrier[]; -extern const u32 gMonPalette_Calyrex[]; -extern const u32 gMonPalette_Wyrdeer[]; -extern const u32 gMonPalette_Kleavor[]; -extern const u32 gMonPalette_Ursaluna[]; -extern const u32 gMonPalette_Basculegion[]; -extern const u32 gMonPalette_Sneasler[]; -extern const u32 gMonPalette_Overqwil[]; -extern const u32 gMonPalette_Enamorus[]; -#endif -extern const u32 gMonPalette_VenusaurMega[]; -extern const u32 gMonPalette_CharizardMegaX[]; -extern const u32 gMonPalette_CharizardMegaY[]; -extern const u32 gMonPalette_BlastoiseMega[]; -extern const u32 gMonPalette_BeedrillMega[]; -extern const u32 gMonPalette_PidgeotMega[]; -extern const u32 gMonPalette_AlakazamMega[]; -extern const u32 gMonPalette_SlowbroMega[]; -extern const u32 gMonPalette_GengarMega[]; -extern const u32 gMonPalette_KangaskhanMega[]; -extern const u32 gMonPalette_PinsirMega[]; -extern const u32 gMonPalette_GyaradosMega[]; -extern const u32 gMonPalette_AerodactylMega[]; -extern const u32 gMonPalette_MewtwoMegaX[]; -extern const u32 gMonPalette_MewtwoMegaY[]; -extern const u32 gMonPalette_AmpharosMega[]; -extern const u32 gMonPalette_SteelixMega[]; -extern const u32 gMonPalette_ScizorMega[]; -extern const u32 gMonPalette_HeracrossMega[]; -extern const u32 gMonPalette_HoundoomMega[]; -extern const u32 gMonPalette_TyranitarMega[]; -extern const u32 gMonPalette_SceptileMega[]; -extern const u32 gMonPalette_BlazikenMega[]; -extern const u32 gMonPalette_SwampertMega[]; -extern const u32 gMonPalette_GardevoirMega[]; -extern const u32 gMonPalette_SableyeMega[]; -extern const u32 gMonPalette_MawileMega[]; -extern const u32 gMonPalette_AggronMega[]; -extern const u32 gMonPalette_MedichamMega[]; -extern const u32 gMonPalette_ManectricMega[]; -extern const u32 gMonPalette_SharpedoMega[]; -extern const u32 gMonPalette_CameruptMega[]; -extern const u32 gMonPalette_AltariaMega[]; -extern const u32 gMonPalette_BanetteMega[]; -extern const u32 gMonPalette_AbsolMega[]; -extern const u32 gMonPalette_GlalieMega[]; -extern const u32 gMonPalette_SalamenceMega[]; -extern const u32 gMonPalette_MetagrossMega[]; -extern const u32 gMonPalette_LatiasMega[]; -extern const u32 gMonPalette_LatiosMega[]; -#if P_GEN_4_POKEMON == TRUE -extern const u32 gMonPalette_LopunnyMega[]; -extern const u32 gMonPalette_GarchompMega[]; -extern const u32 gMonPalette_LucarioMega[]; -extern const u32 gMonPalette_AbomasnowMega[]; -extern const u32 gMonPalette_GalladeMega[]; -#endif -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonPalette_AudinoMega[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u32 gMonPalette_DiancieMega[]; -#endif -extern const u32 gMonPalette_RayquazaMega[]; -extern const u32 gMonPalette_KyogrePrimal[]; -extern const u32 gMonPalette_GroudonPrimal[]; -extern const u32 gMonPalette_RattataAlolan[]; -extern const u32 gMonPalette_RaticateAlolan[]; -extern const u32 gMonPalette_RaichuAlolan[]; -extern const u32 gMonPalette_SandshrewAlolan[]; -extern const u32 gMonPalette_SandslashAlolan[]; -extern const u32 gMonPalette_VulpixAlolan[]; -extern const u32 gMonPalette_NinetalesAlolan[]; -extern const u32 gMonPalette_DiglettAlolan[]; -extern const u32 gMonPalette_DugtrioAlolan[]; -extern const u32 gMonPalette_MeowthAlolan[]; -extern const u32 gMonPalette_PersianAlolan[]; -extern const u32 gMonPalette_GeodudeAlolan[]; -extern const u32 gMonPalette_GravelerAlolan[]; -extern const u32 gMonPalette_GolemAlolan[]; -extern const u32 gMonPalette_GrimerAlolan[]; -extern const u32 gMonPalette_MukAlolan[]; -extern const u32 gMonPalette_ExeggutorAlolan[]; -extern const u32 gMonPalette_MarowakAlolan[]; -extern const u32 gMonPalette_MeowthGalarian[]; -extern const u32 gMonPalette_PonytaGalarian[]; -extern const u32 gMonPalette_RapidashGalarian[]; -extern const u32 gMonPalette_SlowpokeGalarian[]; -extern const u32 gMonPalette_SlowbroGalarian[]; -extern const u32 gMonPalette_FarfetchdGalarian[]; -extern const u32 gMonPalette_WeezingGalarian[]; -extern const u32 gMonPalette_MrMimeGalarian[]; -extern const u32 gMonPalette_ArticunoGalarian[]; -extern const u32 gMonPalette_ZapdosGalarian[]; -extern const u32 gMonPalette_MoltresGalarian[]; -extern const u32 gMonPalette_SlowkingGalarian[]; -extern const u32 gMonPalette_CorsolaGalarian[]; -extern const u32 gMonPalette_ZigzagoonGalarian[]; -extern const u32 gMonPalette_LinooneGalarian[]; -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonPalette_DarumakaGalarian[]; -extern const u32 gMonPalette_DarmanitanGalarian[]; -extern const u32 gMonPalette_YamaskGalarian[]; -extern const u32 gMonPalette_StunfiskGalarian[]; -#endif -extern const u32 gMonPalette_GrowlitheHisuian[]; -extern const u32 gMonPalette_ArcanineHisuian[]; -extern const u32 gMonPalette_VoltorbHisuian[]; -extern const u32 gMonPalette_ElectrodeHisuian[]; -extern const u32 gMonPalette_TyphlosionHisuian[]; -extern const u32 gMonPalette_QwilfishHisuian[]; -extern const u32 gMonPalette_SneaselHisuian[]; -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonPalette_SamurottHisuian[]; -extern const u32 gMonPalette_LilligantHisuian[]; -extern const u32 gMonPalette_ZoruaHisuian[]; -extern const u32 gMonPalette_ZoroarkHisuian[]; -extern const u32 gMonPalette_BraviaryHisuian[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u32 gMonPalette_SliggooHisuian[]; -extern const u32 gMonPalette_GoodraHisuian[]; -extern const u32 gMonPalette_AvaluggHisuian[]; -#endif -#if P_GEN_7_POKEMON == TRUE -extern const u32 gMonPalette_DecidueyeHisuian[]; -#endif -extern const u32 gMonPalette_PikachuCosplay[]; -extern const u32 gMonPalette_PikachuRockStar[]; -extern const u32 gMonPalette_PikachuBelle[]; -extern const u32 gMonPalette_PikachuPopStar[]; -extern const u32 gMonPalette_PikachuPhD[]; -extern const u32 gMonPalette_PikachuLibre[]; -extern const u32 gMonPalette_PikachuOriginalCap[]; -extern const u32 gMonPalette_PikachuHoennCap[]; -extern const u32 gMonPalette_PikachuSinnohCap[]; -extern const u32 gMonPalette_PikachuUnovaCap[]; -extern const u32 gMonPalette_PikachuKalosCap[]; -extern const u32 gMonPalette_PikachuAlolaCap[]; -extern const u32 gMonPalette_PikachuPartnerCap[]; -extern const u32 gMonPalette_PikachuWorldCap[]; -extern const u32 gMonPalette_PichuSpikyEared[]; -extern const u32 gMonPalette_CastformSunny[]; -extern const u32 gMonPalette_CastformRainy[]; -extern const u32 gMonPalette_CastformSnowy[]; -extern const u32 gMonPalette_DeoxysAttack[]; -extern const u32 gMonPalette_DeoxysDefense[]; -extern const u32 gMonPalette_DeoxysSpeed[]; -#if P_GEN_4_POKEMON == TRUE -extern const u32 gMonPalette_BurmySandyCloak[]; -extern const u32 gMonPalette_BurmyTrashCloak[]; -extern const u32 gMonPalette_WormadamSandyCloak[]; -extern const u32 gMonPalette_WormadamTrashCloak[]; -extern const u32 gMonPalette_CherrimSunshine[]; -extern const u32 gMonPalette_ShellosEastSea[]; -extern const u32 gMonPalette_GastrodonEastSea[]; -extern const u32 gMonPalette_RotomHeat[]; -extern const u32 gMonPalette_RotomWash[]; -extern const u32 gMonPalette_RotomFrost[]; -extern const u32 gMonPalette_RotomFan[]; -extern const u32 gMonPalette_RotomMow[]; -extern const u32 gMonPalette_DialgaOrigin[]; -extern const u32 gMonPalette_PalkiaOrigin[]; -extern const u32 gMonPalette_GiratinaOrigin[]; -extern const u32 gMonPalette_ShayminSky[]; -extern const u32 gMonPalette_ArceusFighting[]; -extern const u32 gMonPalette_ArceusFlying[]; -extern const u32 gMonPalette_ArceusPoison[]; -extern const u32 gMonPalette_ArceusGround[]; -extern const u32 gMonPalette_ArceusRock[]; -extern const u32 gMonPalette_ArceusBug[]; -extern const u32 gMonPalette_ArceusGhost[]; -extern const u32 gMonPalette_ArceusSteel[]; -extern const u32 gMonPalette_ArceusFire[]; -extern const u32 gMonPalette_ArceusWater[]; -extern const u32 gMonPalette_ArceusGrass[]; -extern const u32 gMonPalette_ArceusElectric[]; -extern const u32 gMonPalette_ArceusPsychic[]; -extern const u32 gMonPalette_ArceusIce[]; -extern const u32 gMonPalette_ArceusDragon[]; -extern const u32 gMonPalette_ArceusDark[]; -extern const u32 gMonPalette_ArceusFairy[]; -#endif -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonPalette_BasculinBlueStriped[]; -extern const u32 gMonPalette_BasculinWhiteStriped[]; -extern const u32 gMonPalette_DarmanitanZenMode[]; -extern const u32 gMonPalette_DarmanitanZenModeGalarian[]; -extern const u32 gMonPalette_DeerlingSummer[]; -extern const u32 gMonPalette_DeerlingAutumn[]; -extern const u32 gMonPalette_DeerlingWinter[]; -extern const u32 gMonPalette_SawsbuckSummer[]; -extern const u32 gMonPalette_SawsbuckAutumn[]; -extern const u32 gMonPalette_SawsbuckWinter[]; -extern const u32 gMonPalette_TornadusTherian[]; -extern const u32 gMonPalette_ThundurusTherian[]; -extern const u32 gMonPalette_LandorusTherian[]; -extern const u32 gMonPalette_KyuremWhite[]; -extern const u32 gMonPalette_KyuremBlack[]; -extern const u32 gMonPalette_KeldeoResolute[]; -extern const u32 gMonPalette_MeloettaPirouette[]; -extern const u32 gMonPalette_GenesectDouseDrive[]; -extern const u32 gMonPalette_GenesectShockDrive[]; -extern const u32 gMonPalette_GenesectBurnDrive[]; -extern const u32 gMonPalette_GenesectChillDrive[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u32 gMonPalette_GreninjaAsh[]; -extern const u32 gMonPalette_VivillonPolar[]; -extern const u32 gMonPalette_VivillonTundra[]; -extern const u32 gMonPalette_VivillonContinental[]; -extern const u32 gMonPalette_VivillonGarden[]; -extern const u32 gMonPalette_VivillonElegant[]; -extern const u32 gMonPalette_VivillonMeadow[]; -extern const u32 gMonPalette_VivillonModern[]; -extern const u32 gMonPalette_VivillonMarine[]; -extern const u32 gMonPalette_VivillonArchipelago[]; -extern const u32 gMonPalette_VivillonHighPlains[]; -extern const u32 gMonPalette_VivillonSandstorm[]; -extern const u32 gMonPalette_VivillonRiver[]; -extern const u32 gMonPalette_VivillonMonsoon[]; -extern const u32 gMonPalette_VivillonSavanna[]; -extern const u32 gMonPalette_VivillonSun[]; -extern const u32 gMonPalette_VivillonOcean[]; -extern const u32 gMonPalette_VivillonJungle[]; -extern const u32 gMonPalette_VivillonFancy[]; -extern const u32 gMonPalette_VivillonPokeBall[]; -extern const u32 gMonPalette_FlabebeYellowFlower[]; -extern const u32 gMonPalette_FlabebeOrangeFlower[]; -extern const u32 gMonPalette_FlabebeBlueFlower[]; -extern const u32 gMonPalette_FlabebeWhiteFlower[]; -extern const u32 gMonPalette_FloetteYellowFlower[]; -extern const u32 gMonPalette_FloetteOrangeFlower[]; -extern const u32 gMonPalette_FloetteBlueFlower[]; -extern const u32 gMonPalette_FloetteWhiteFlower[]; -extern const u32 gMonPalette_FloetteEternalFlower[]; -extern const u32 gMonPalette_FlorgesYellowFlower[]; -extern const u32 gMonPalette_FlorgesOrangeFlower[]; -extern const u32 gMonPalette_FlorgesBlueFlower[]; -extern const u32 gMonPalette_FlorgesWhiteFlower[]; -extern const u32 gMonPalette_FurfrouHeartTrim[]; -extern const u32 gMonPalette_FurfrouStarTrim[]; -extern const u32 gMonPalette_FurfrouDiamondTrim[]; -extern const u32 gMonPalette_FurfrouDebutanteTrim[]; -extern const u32 gMonPalette_FurfrouMatronTrim[]; -extern const u32 gMonPalette_FurfrouDandyTrim[]; -extern const u32 gMonPalette_FurfrouLaReineTrim[]; -extern const u32 gMonPalette_FurfrouKabukiTrim[]; -extern const u32 gMonPalette_FurfrouPharaohTrim[]; -extern const u32 gMonPalette_MeowsticFemale[]; -extern const u32 gMonPalette_AegislashBlade[]; -extern const u32 gMonPalette_XerneasActive[]; -extern const u32 gMonPalette_Zygarde10[]; -extern const u32 gMonPalette_ZygardeComplete[]; -extern const u32 gMonPalette_HoopaUnbound[]; -#endif -#if P_GEN_7_POKEMON == TRUE -extern const u32 gMonPalette_OricorioPomPom[]; -extern const u32 gMonPalette_OricorioPau[]; -extern const u32 gMonPalette_OricorioSensu[]; -extern const u32 gMonPalette_LycanrocMidnight[]; -extern const u32 gMonPalette_LycanrocDusk[]; -extern const u32 gMonPalette_WishiwashiSchool[]; -extern const u32 gMonPalette_SilvallyFighting[]; -extern const u32 gMonPalette_SilvallyFlying[]; -extern const u32 gMonPalette_SilvallyPoison[]; -extern const u32 gMonPalette_SilvallyGround[]; -extern const u32 gMonPalette_SilvallyRock[]; -extern const u32 gMonPalette_SilvallyBug[]; -extern const u32 gMonPalette_SilvallyGhost[]; -extern const u32 gMonPalette_SilvallySteel[]; -extern const u32 gMonPalette_SilvallyFire[]; -extern const u32 gMonPalette_SilvallyWater[]; -extern const u32 gMonPalette_SilvallyGrass[]; -extern const u32 gMonPalette_SilvallyElectric[]; -extern const u32 gMonPalette_SilvallyPsychic[]; -extern const u32 gMonPalette_SilvallyIce[]; -extern const u32 gMonPalette_SilvallyDragon[]; -extern const u32 gMonPalette_SilvallyDark[]; -extern const u32 gMonPalette_SilvallyFairy[]; -extern const u32 gMonPalette_MiniorCoreRed[]; -extern const u32 gMonPalette_MiniorCoreOrange[]; -extern const u32 gMonPalette_MiniorCoreYellow[]; -extern const u32 gMonPalette_MiniorCoreGreen[]; -extern const u32 gMonPalette_MiniorCoreBlue[]; -extern const u32 gMonPalette_MiniorCoreIndigo[]; -extern const u32 gMonPalette_MiniorCoreViolet[]; -extern const u32 gMonPalette_MimikyuBusted[]; -extern const u32 gMonPalette_NecrozmaDuskMane[]; -extern const u32 gMonPalette_NecrozmaDawnWings[]; -extern const u32 gMonPalette_NecrozmaUltra[]; -extern const u32 gMonPalette_MagearnaOriginalColor[]; -#endif -#if P_GEN_8_POKEMON == TRUE -extern const u32 gMonPalette_CramorantGulping[]; -extern const u32 gMonPalette_CramorantGorging[]; -extern const u32 gMonPalette_ToxtricityLowKey[]; -extern const u32 gMonPalette_AlcremieRubyCream[]; -extern const u32 gMonPalette_AlcremieMatchaCream[]; -extern const u32 gMonPalette_AlcremieMintCream[]; -extern const u32 gMonPalette_AlcremieLemonCream[]; -extern const u32 gMonPalette_AlcremieSaltedCream[]; -extern const u32 gMonPalette_AlcremieRubySwirl[]; -extern const u32 gMonPalette_AlcremieCaramelSwirl[]; -extern const u32 gMonPalette_AlcremieRainbowSwirl[]; -extern const u32 gMonPalette_EiscueNoiceFace[]; -extern const u32 gMonPalette_IndeedeeFemale[]; -extern const u32 gMonPalette_MorpekoHangry[]; -extern const u32 gMonPalette_ZacianCrownedSword[]; -extern const u32 gMonPalette_ZamazentaCrownedShield[]; -extern const u32 gMonPalette_EternatusEternamax[]; -extern const u32 gMonPalette_UrshifuRapidStrikeStyle[]; -extern const u32 gMonPalette_ZarudeDada[]; -extern const u32 gMonPalette_CalyrexIceRider[]; -extern const u32 gMonPalette_CalyrexShadowRider[]; -extern const u32 gMonPalette_EnamorusTherian[]; -extern const u32 gMonPalette_BasculegionFemale[]; -#endif -extern const u32 gMonPalette_Egg[]; - -extern const u32 gMonShinyPalette_CircledQuestionMark[]; -extern const u32 gMonShinyPalette_DoubleQuestionMark[]; -extern const u32 gMonShinyPalette_Bulbasaur[]; -extern const u32 gMonShinyPalette_Ivysaur[]; -extern const u32 gMonShinyPalette_Venusaur[]; -extern const u32 gMonShinyPalette_Charmander[]; -extern const u32 gMonShinyPalette_Charmeleon[]; -extern const u32 gMonShinyPalette_Charizard[]; -extern const u32 gMonShinyPalette_Squirtle[]; -extern const u32 gMonShinyPalette_Wartortle[]; -extern const u32 gMonShinyPalette_Blastoise[]; -extern const u32 gMonShinyPalette_Caterpie[]; -extern const u32 gMonShinyPalette_Metapod[]; -extern const u32 gMonShinyPalette_Butterfree[]; -extern const u32 gMonShinyPalette_Weedle[]; -extern const u32 gMonShinyPalette_Kakuna[]; -extern const u32 gMonShinyPalette_Beedrill[]; -extern const u32 gMonShinyPalette_Pidgey[]; -extern const u32 gMonShinyPalette_Pidgeotto[]; -extern const u32 gMonShinyPalette_Pidgeot[]; -extern const u32 gMonShinyPalette_Rattata[]; -extern const u32 gMonShinyPalette_Raticate[]; -extern const u32 gMonShinyPalette_Spearow[]; -extern const u32 gMonShinyPalette_Fearow[]; -extern const u32 gMonShinyPalette_Ekans[]; -extern const u32 gMonShinyPalette_Arbok[]; -extern const u32 gMonShinyPalette_Pikachu[]; -extern const u32 gMonShinyPalette_Raichu[]; -extern const u32 gMonShinyPalette_Sandshrew[]; -extern const u32 gMonShinyPalette_Sandslash[]; -extern const u32 gMonShinyPalette_NidoranF[]; -extern const u32 gMonShinyPalette_Nidorina[]; -extern const u32 gMonShinyPalette_Nidoqueen[]; -extern const u32 gMonShinyPalette_NidoranM[]; -extern const u32 gMonShinyPalette_Nidorino[]; -extern const u32 gMonShinyPalette_Nidoking[]; -extern const u32 gMonShinyPalette_Clefairy[]; -extern const u32 gMonShinyPalette_Clefable[]; -extern const u32 gMonShinyPalette_Vulpix[]; -extern const u32 gMonShinyPalette_Ninetales[]; -extern const u32 gMonShinyPalette_Jigglypuff[]; -extern const u32 gMonShinyPalette_Wigglytuff[]; -extern const u32 gMonShinyPalette_Zubat[]; -extern const u32 gMonShinyPalette_Golbat[]; -extern const u32 gMonShinyPalette_Oddish[]; -extern const u32 gMonShinyPalette_Gloom[]; -extern const u32 gMonShinyPalette_Vileplume[]; -extern const u32 gMonShinyPalette_Paras[]; -extern const u32 gMonShinyPalette_Parasect[]; -extern const u32 gMonShinyPalette_Venonat[]; -extern const u32 gMonShinyPalette_Venomoth[]; -extern const u32 gMonShinyPalette_Diglett[]; -extern const u32 gMonShinyPalette_Dugtrio[]; -extern const u32 gMonShinyPalette_Meowth[]; -extern const u32 gMonShinyPalette_Persian[]; -extern const u32 gMonShinyPalette_Psyduck[]; -extern const u32 gMonShinyPalette_Golduck[]; -extern const u32 gMonShinyPalette_Mankey[]; -extern const u32 gMonShinyPalette_Primeape[]; -extern const u32 gMonShinyPalette_Growlithe[]; -extern const u32 gMonShinyPalette_Arcanine[]; -extern const u32 gMonShinyPalette_Poliwag[]; -extern const u32 gMonShinyPalette_Poliwhirl[]; -extern const u32 gMonShinyPalette_Poliwrath[]; -extern const u32 gMonShinyPalette_Abra[]; -extern const u32 gMonShinyPalette_Kadabra[]; -extern const u32 gMonShinyPalette_Alakazam[]; -extern const u32 gMonShinyPalette_Machop[]; -extern const u32 gMonShinyPalette_Machoke[]; -extern const u32 gMonShinyPalette_Machamp[]; -extern const u32 gMonShinyPalette_Bellsprout[]; -extern const u32 gMonShinyPalette_Weepinbell[]; -extern const u32 gMonShinyPalette_Victreebel[]; -extern const u32 gMonShinyPalette_Tentacool[]; -extern const u32 gMonShinyPalette_Tentacruel[]; -extern const u32 gMonShinyPalette_Geodude[]; -extern const u32 gMonShinyPalette_Graveler[]; -extern const u32 gMonShinyPalette_Golem[]; -extern const u32 gMonShinyPalette_Ponyta[]; -extern const u32 gMonShinyPalette_Rapidash[]; -extern const u32 gMonShinyPalette_Slowpoke[]; -extern const u32 gMonShinyPalette_Slowbro[]; -extern const u32 gMonShinyPalette_Magnemite[]; -extern const u32 gMonShinyPalette_Magneton[]; -extern const u32 gMonShinyPalette_Farfetchd[]; -extern const u32 gMonShinyPalette_Doduo[]; -extern const u32 gMonShinyPalette_Dodrio[]; -extern const u32 gMonShinyPalette_Seel[]; -extern const u32 gMonShinyPalette_Dewgong[]; -extern const u32 gMonShinyPalette_Grimer[]; -extern const u32 gMonShinyPalette_Muk[]; -extern const u32 gMonShinyPalette_Shellder[]; -extern const u32 gMonShinyPalette_Cloyster[]; -extern const u32 gMonShinyPalette_Gastly[]; -extern const u32 gMonShinyPalette_Haunter[]; -extern const u32 gMonShinyPalette_Gengar[]; -extern const u32 gMonShinyPalette_Onix[]; -extern const u32 gMonShinyPalette_Drowzee[]; -extern const u32 gMonShinyPalette_Hypno[]; -extern const u32 gMonShinyPalette_Krabby[]; -extern const u32 gMonShinyPalette_Kingler[]; -extern const u32 gMonShinyPalette_Voltorb[]; -extern const u32 gMonShinyPalette_Electrode[]; -extern const u32 gMonShinyPalette_Exeggcute[]; -extern const u32 gMonShinyPalette_Exeggutor[]; -extern const u32 gMonShinyPalette_Cubone[]; -extern const u32 gMonShinyPalette_Marowak[]; -extern const u32 gMonShinyPalette_Hitmonlee[]; -extern const u32 gMonShinyPalette_Hitmonchan[]; -extern const u32 gMonShinyPalette_Lickitung[]; -extern const u32 gMonShinyPalette_Koffing[]; -extern const u32 gMonShinyPalette_Weezing[]; -extern const u32 gMonShinyPalette_Rhyhorn[]; -extern const u32 gMonShinyPalette_Rhydon[]; -extern const u32 gMonShinyPalette_Chansey[]; -extern const u32 gMonShinyPalette_Tangela[]; -extern const u32 gMonShinyPalette_Kangaskhan[]; -extern const u32 gMonShinyPalette_Horsea[]; -extern const u32 gMonShinyPalette_Seadra[]; -extern const u32 gMonShinyPalette_Goldeen[]; -extern const u32 gMonShinyPalette_Seaking[]; -extern const u32 gMonShinyPalette_Staryu[]; -extern const u32 gMonShinyPalette_Starmie[]; -extern const u32 gMonShinyPalette_MrMime[]; -extern const u32 gMonShinyPalette_Scyther[]; -extern const u32 gMonShinyPalette_Jynx[]; -extern const u32 gMonShinyPalette_Electabuzz[]; -extern const u32 gMonShinyPalette_Magmar[]; -extern const u32 gMonShinyPalette_Pinsir[]; -extern const u32 gMonShinyPalette_Tauros[]; -extern const u32 gMonShinyPalette_Magikarp[]; -extern const u32 gMonShinyPalette_Gyarados[]; -extern const u32 gMonShinyPalette_Lapras[]; -extern const u32 gMonShinyPalette_Ditto[]; -extern const u32 gMonShinyPalette_Eevee[]; -extern const u32 gMonShinyPalette_Vaporeon[]; -extern const u32 gMonShinyPalette_Jolteon[]; -extern const u32 gMonShinyPalette_Flareon[]; -extern const u32 gMonShinyPalette_Porygon[]; -extern const u32 gMonShinyPalette_Omanyte[]; -extern const u32 gMonShinyPalette_Omastar[]; -extern const u32 gMonShinyPalette_Kabuto[]; -extern const u32 gMonShinyPalette_Kabutops[]; -extern const u32 gMonShinyPalette_Aerodactyl[]; -extern const u32 gMonShinyPalette_Snorlax[]; -extern const u32 gMonShinyPalette_Articuno[]; -extern const u32 gMonShinyPalette_Zapdos[]; -extern const u32 gMonShinyPalette_Moltres[]; -extern const u32 gMonShinyPalette_Dratini[]; -extern const u32 gMonShinyPalette_Dragonair[]; -extern const u32 gMonShinyPalette_Dragonite[]; -extern const u32 gMonShinyPalette_Mewtwo[]; -extern const u32 gMonShinyPalette_Mew[]; -extern const u32 gMonShinyPalette_Chikorita[]; -extern const u32 gMonShinyPalette_Bayleef[]; -extern const u32 gMonShinyPalette_Meganium[]; -extern const u32 gMonShinyPalette_Cyndaquil[]; -extern const u32 gMonShinyPalette_Quilava[]; -extern const u32 gMonShinyPalette_Typhlosion[]; -extern const u32 gMonShinyPalette_Totodile[]; -extern const u32 gMonShinyPalette_Croconaw[]; -extern const u32 gMonShinyPalette_Feraligatr[]; -extern const u32 gMonShinyPalette_Sentret[]; -extern const u32 gMonShinyPalette_Furret[]; -extern const u32 gMonShinyPalette_Hoothoot[]; -extern const u32 gMonShinyPalette_Noctowl[]; -extern const u32 gMonShinyPalette_Ledyba[]; -extern const u32 gMonShinyPalette_Ledian[]; -extern const u32 gMonShinyPalette_Spinarak[]; -extern const u32 gMonShinyPalette_Ariados[]; -extern const u32 gMonShinyPalette_Crobat[]; -extern const u32 gMonShinyPalette_Chinchou[]; -extern const u32 gMonShinyPalette_Lanturn[]; -extern const u32 gMonShinyPalette_Pichu[]; -extern const u32 gMonShinyPalette_Cleffa[]; -extern const u32 gMonShinyPalette_Igglybuff[]; -extern const u32 gMonShinyPalette_Togepi[]; -extern const u32 gMonShinyPalette_Togetic[]; -extern const u32 gMonShinyPalette_Natu[]; -extern const u32 gMonShinyPalette_Xatu[]; -extern const u32 gMonShinyPalette_Mareep[]; -extern const u32 gMonShinyPalette_Flaaffy[]; -extern const u32 gMonShinyPalette_Ampharos[]; -extern const u32 gMonShinyPalette_Bellossom[]; -extern const u32 gMonShinyPalette_Marill[]; -extern const u32 gMonShinyPalette_Azumarill[]; -extern const u32 gMonShinyPalette_Sudowoodo[]; -extern const u32 gMonShinyPalette_Politoed[]; -extern const u32 gMonShinyPalette_Hoppip[]; -extern const u32 gMonShinyPalette_Skiploom[]; -extern const u32 gMonShinyPalette_Jumpluff[]; -extern const u32 gMonShinyPalette_Aipom[]; -extern const u32 gMonShinyPalette_Sunkern[]; -extern const u32 gMonShinyPalette_Sunflora[]; -extern const u32 gMonShinyPalette_Yanma[]; -extern const u32 gMonShinyPalette_Wooper[]; -extern const u32 gMonShinyPalette_Quagsire[]; -extern const u32 gMonShinyPalette_Espeon[]; -extern const u32 gMonShinyPalette_Umbreon[]; -extern const u32 gMonShinyPalette_Murkrow[]; -extern const u32 gMonShinyPalette_Slowking[]; -extern const u32 gMonShinyPalette_Misdreavus[]; -extern const u32 gMonShinyPalette_Unown[]; -extern const u32 gMonShinyPalette_Wobbuffet[]; -extern const u32 gMonShinyPalette_Girafarig[]; -extern const u32 gMonShinyPalette_Pineco[]; -extern const u32 gMonShinyPalette_Forretress[]; -extern const u32 gMonShinyPalette_Dunsparce[]; -extern const u32 gMonShinyPalette_Gligar[]; -extern const u32 gMonShinyPalette_Steelix[]; -extern const u32 gMonShinyPalette_Snubbull[]; -extern const u32 gMonShinyPalette_Granbull[]; -extern const u32 gMonShinyPalette_Qwilfish[]; -extern const u32 gMonShinyPalette_Scizor[]; -extern const u32 gMonShinyPalette_Shuckle[]; -extern const u32 gMonShinyPalette_Heracross[]; -extern const u32 gMonShinyPalette_Sneasel[]; -extern const u32 gMonShinyPalette_Teddiursa[]; -extern const u32 gMonShinyPalette_Ursaring[]; -extern const u32 gMonShinyPalette_Slugma[]; -extern const u32 gMonShinyPalette_Magcargo[]; -extern const u32 gMonShinyPalette_Swinub[]; -extern const u32 gMonShinyPalette_Piloswine[]; -extern const u32 gMonShinyPalette_Corsola[]; -extern const u32 gMonShinyPalette_Remoraid[]; -extern const u32 gMonShinyPalette_Octillery[]; -extern const u32 gMonShinyPalette_Delibird[]; -extern const u32 gMonShinyPalette_Mantine[]; -extern const u32 gMonShinyPalette_Skarmory[]; -extern const u32 gMonShinyPalette_Houndour[]; -extern const u32 gMonShinyPalette_Houndoom[]; -extern const u32 gMonShinyPalette_Kingdra[]; -extern const u32 gMonShinyPalette_Phanpy[]; -extern const u32 gMonShinyPalette_Donphan[]; -extern const u32 gMonShinyPalette_Porygon2[]; -extern const u32 gMonShinyPalette_Stantler[]; -extern const u32 gMonShinyPalette_Smeargle[]; -extern const u32 gMonShinyPalette_Tyrogue[]; -extern const u32 gMonShinyPalette_Hitmontop[]; -extern const u32 gMonShinyPalette_Smoochum[]; -extern const u32 gMonShinyPalette_Elekid[]; -extern const u32 gMonShinyPalette_Magby[]; -extern const u32 gMonShinyPalette_Miltank[]; -extern const u32 gMonShinyPalette_Blissey[]; -extern const u32 gMonShinyPalette_Raikou[]; -extern const u32 gMonShinyPalette_Entei[]; -extern const u32 gMonShinyPalette_Suicune[]; -extern const u32 gMonShinyPalette_Larvitar[]; -extern const u32 gMonShinyPalette_Pupitar[]; -extern const u32 gMonShinyPalette_Tyranitar[]; -extern const u32 gMonShinyPalette_Lugia[]; -extern const u32 gMonShinyPalette_HoOh[]; -extern const u32 gMonShinyPalette_Celebi[]; -extern const u32 gMonShinyPalette_Treecko[]; -extern const u32 gMonShinyPalette_Grovyle[]; -extern const u32 gMonShinyPalette_Sceptile[]; -extern const u32 gMonShinyPalette_Torchic[]; -extern const u32 gMonShinyPalette_Combusken[]; -extern const u32 gMonShinyPalette_Blaziken[]; -extern const u32 gMonShinyPalette_Mudkip[]; -extern const u32 gMonShinyPalette_Marshtomp[]; -extern const u32 gMonShinyPalette_Swampert[]; -extern const u32 gMonShinyPalette_Poochyena[]; -extern const u32 gMonShinyPalette_Mightyena[]; -extern const u32 gMonShinyPalette_Zigzagoon[]; -extern const u32 gMonShinyPalette_Linoone[]; -extern const u32 gMonShinyPalette_Wurmple[]; -extern const u32 gMonShinyPalette_Silcoon[]; -extern const u32 gMonShinyPalette_Beautifly[]; -extern const u32 gMonShinyPalette_Cascoon[]; -extern const u32 gMonShinyPalette_Dustox[]; -extern const u32 gMonShinyPalette_Lotad[]; -extern const u32 gMonShinyPalette_Lombre[]; -extern const u32 gMonShinyPalette_Ludicolo[]; -extern const u32 gMonShinyPalette_Seedot[]; -extern const u32 gMonShinyPalette_Nuzleaf[]; -extern const u32 gMonShinyPalette_Shiftry[]; -extern const u32 gMonShinyPalette_Taillow[]; -extern const u32 gMonShinyPalette_Swellow[]; -extern const u32 gMonShinyPalette_Wingull[]; -extern const u32 gMonShinyPalette_Pelipper[]; -extern const u32 gMonShinyPalette_Ralts[]; -extern const u32 gMonShinyPalette_Kirlia[]; -extern const u32 gMonShinyPalette_Gardevoir[]; -extern const u32 gMonShinyPalette_Surskit[]; -extern const u32 gMonShinyPalette_Masquerain[]; -extern const u32 gMonShinyPalette_Shroomish[]; -extern const u32 gMonShinyPalette_Breloom[]; -extern const u32 gMonShinyPalette_Slakoth[]; -extern const u32 gMonShinyPalette_Vigoroth[]; -extern const u32 gMonShinyPalette_Slaking[]; -extern const u32 gMonShinyPalette_Nincada[]; -extern const u32 gMonShinyPalette_Ninjask[]; -extern const u32 gMonShinyPalette_Shedinja[]; -extern const u32 gMonShinyPalette_Whismur[]; -extern const u32 gMonShinyPalette_Loudred[]; -extern const u32 gMonShinyPalette_Exploud[]; -extern const u32 gMonShinyPalette_Makuhita[]; -extern const u32 gMonShinyPalette_Hariyama[]; -extern const u32 gMonShinyPalette_Azurill[]; -extern const u32 gMonShinyPalette_Nosepass[]; -extern const u32 gMonShinyPalette_Skitty[]; -extern const u32 gMonShinyPalette_Delcatty[]; -extern const u32 gMonShinyPalette_Sableye[]; -extern const u32 gMonShinyPalette_Mawile[]; -extern const u32 gMonShinyPalette_Aron[]; -extern const u32 gMonShinyPalette_Lairon[]; -extern const u32 gMonShinyPalette_Aggron[]; -extern const u32 gMonShinyPalette_Meditite[]; -extern const u32 gMonShinyPalette_Medicham[]; -extern const u32 gMonShinyPalette_Electrike[]; -extern const u32 gMonShinyPalette_Manectric[]; -extern const u32 gMonShinyPalette_Plusle[]; -extern const u32 gMonShinyPalette_Minun[]; -extern const u32 gMonShinyPalette_Volbeat[]; -extern const u32 gMonShinyPalette_Illumise[]; -extern const u32 gMonShinyPalette_Roselia[]; -extern const u32 gMonShinyPalette_Gulpin[]; -extern const u32 gMonShinyPalette_Swalot[]; -extern const u32 gMonShinyPalette_Carvanha[]; -extern const u32 gMonShinyPalette_Sharpedo[]; -extern const u32 gMonShinyPalette_Wailmer[]; -extern const u32 gMonShinyPalette_Wailord[]; -extern const u32 gMonShinyPalette_Numel[]; -extern const u32 gMonShinyPalette_Camerupt[]; -extern const u32 gMonShinyPalette_Torkoal[]; -extern const u32 gMonShinyPalette_Spoink[]; -extern const u32 gMonShinyPalette_Grumpig[]; -extern const u32 gMonShinyPalette_Spinda[]; -extern const u32 gMonShinyPalette_Trapinch[]; -extern const u32 gMonShinyPalette_Vibrava[]; -extern const u32 gMonShinyPalette_Flygon[]; -extern const u32 gMonShinyPalette_Cacnea[]; -extern const u32 gMonShinyPalette_Cacturne[]; -extern const u32 gMonShinyPalette_Swablu[]; -extern const u32 gMonShinyPalette_Altaria[]; -extern const u32 gMonShinyPalette_Zangoose[]; -extern const u32 gMonShinyPalette_Seviper[]; -extern const u32 gMonShinyPalette_Lunatone[]; -extern const u32 gMonShinyPalette_Solrock[]; -extern const u32 gMonShinyPalette_Barboach[]; -extern const u32 gMonShinyPalette_Whiscash[]; -extern const u32 gMonShinyPalette_Corphish[]; -extern const u32 gMonShinyPalette_Crawdaunt[]; -extern const u32 gMonShinyPalette_Baltoy[]; -extern const u32 gMonShinyPalette_Claydol[]; -extern const u32 gMonShinyPalette_Lileep[]; -extern const u32 gMonShinyPalette_Cradily[]; -extern const u32 gMonShinyPalette_Anorith[]; -extern const u32 gMonShinyPalette_Armaldo[]; -extern const u32 gMonShinyPalette_Feebas[]; -extern const u32 gMonShinyPalette_Milotic[]; -extern const u32 gMonShinyPalette_Castform[]; -extern const u32 gMonShinyPalette_Kecleon[]; -extern const u32 gMonShinyPalette_Shuppet[]; -extern const u32 gMonShinyPalette_Banette[]; -extern const u32 gMonShinyPalette_Duskull[]; -extern const u32 gMonShinyPalette_Dusclops[]; -extern const u32 gMonShinyPalette_Tropius[]; -extern const u32 gMonShinyPalette_Chimecho[]; -extern const u32 gMonShinyPalette_Absol[]; -extern const u32 gMonShinyPalette_Wynaut[]; -extern const u32 gMonShinyPalette_Snorunt[]; -extern const u32 gMonShinyPalette_Glalie[]; -extern const u32 gMonShinyPalette_Spheal[]; -extern const u32 gMonShinyPalette_Sealeo[]; -extern const u32 gMonShinyPalette_Walrein[]; -extern const u32 gMonShinyPalette_Clamperl[]; -extern const u32 gMonShinyPalette_Huntail[]; -extern const u32 gMonShinyPalette_Gorebyss[]; -extern const u32 gMonShinyPalette_Relicanth[]; -extern const u32 gMonShinyPalette_Luvdisc[]; -extern const u32 gMonShinyPalette_Bagon[]; -extern const u32 gMonShinyPalette_Shelgon[]; -extern const u32 gMonShinyPalette_Salamence[]; -extern const u32 gMonShinyPalette_Beldum[]; -extern const u32 gMonShinyPalette_Metang[]; -extern const u32 gMonShinyPalette_Metagross[]; -extern const u32 gMonShinyPalette_Regirock[]; -extern const u32 gMonShinyPalette_Regice[]; -extern const u32 gMonShinyPalette_Registeel[]; -extern const u32 gMonShinyPalette_Latias[]; -extern const u32 gMonShinyPalette_Latios[]; -extern const u32 gMonShinyPalette_Kyogre[]; -extern const u32 gMonShinyPalette_Groudon[]; -extern const u32 gMonShinyPalette_Rayquaza[]; -extern const u32 gMonShinyPalette_Jirachi[]; -extern const u32 gMonShinyPalette_Deoxys[]; -#if P_GEN_4_POKEMON == TRUE -extern const u32 gMonShinyPalette_Turtwig[]; -extern const u32 gMonShinyPalette_Grotle[]; -extern const u32 gMonShinyPalette_Torterra[]; -extern const u32 gMonShinyPalette_Chimchar[]; -extern const u32 gMonShinyPalette_Monferno[]; -extern const u32 gMonShinyPalette_Infernape[]; -extern const u32 gMonShinyPalette_Piplup[]; -extern const u32 gMonShinyPalette_Prinplup[]; -extern const u32 gMonShinyPalette_Empoleon[]; -extern const u32 gMonShinyPalette_Starly[]; -extern const u32 gMonShinyPalette_Staravia[]; -extern const u32 gMonShinyPalette_Staraptor[]; -extern const u32 gMonShinyPalette_Bidoof[]; -extern const u32 gMonShinyPalette_Bibarel[]; -extern const u32 gMonShinyPalette_Kricketot[]; -extern const u32 gMonShinyPalette_Kricketune[]; -extern const u32 gMonShinyPalette_Shinx[]; -extern const u32 gMonShinyPalette_Luxio[]; -extern const u32 gMonShinyPalette_Luxray[]; -extern const u32 gMonShinyPalette_Budew[]; -extern const u32 gMonShinyPalette_Roserade[]; -extern const u32 gMonShinyPalette_Cranidos[]; -extern const u32 gMonShinyPalette_Rampardos[]; -extern const u32 gMonShinyPalette_Shieldon[]; -extern const u32 gMonShinyPalette_Bastiodon[]; -extern const u32 gMonShinyPalette_Burmy[]; -extern const u32 gMonShinyPalette_Wormadam[]; -extern const u32 gMonShinyPalette_Mothim[]; -extern const u32 gMonShinyPalette_Combee[]; -extern const u32 gMonShinyPalette_CombeeF[]; -extern const u32 gMonShinyPalette_Vespiquen[]; -extern const u32 gMonShinyPalette_Pachirisu[]; -extern const u32 gMonShinyPalette_Buizel[]; -extern const u32 gMonShinyPalette_Floatzel[]; -extern const u32 gMonShinyPalette_Cherubi[]; -extern const u32 gMonShinyPalette_Cherrim[]; -extern const u32 gMonShinyPalette_Shellos[]; -extern const u32 gMonShinyPalette_Gastrodon[]; -extern const u32 gMonShinyPalette_Ambipom[]; -extern const u32 gMonShinyPalette_Drifloon[]; -extern const u32 gMonShinyPalette_Drifblim[]; -extern const u32 gMonShinyPalette_Buneary[]; -extern const u32 gMonShinyPalette_Lopunny[]; -extern const u32 gMonShinyPalette_Mismagius[]; -extern const u32 gMonShinyPalette_Honchkrow[]; -extern const u32 gMonShinyPalette_Glameow[]; -extern const u32 gMonShinyPalette_Purugly[]; -extern const u32 gMonShinyPalette_Chingling[]; -extern const u32 gMonShinyPalette_Stunky[]; -extern const u32 gMonShinyPalette_Skuntank[]; -extern const u32 gMonShinyPalette_Bronzor[]; -extern const u32 gMonShinyPalette_Bronzong[]; -extern const u32 gMonShinyPalette_Bonsly[]; -extern const u32 gMonShinyPalette_MimeJr[]; -extern const u32 gMonShinyPalette_Happiny[]; -extern const u32 gMonShinyPalette_Chatot[]; -extern const u32 gMonShinyPalette_Spiritomb[]; -extern const u32 gMonShinyPalette_Gible[]; -extern const u32 gMonShinyPalette_Gabite[]; -extern const u32 gMonShinyPalette_Garchomp[]; -extern const u32 gMonShinyPalette_Munchlax[]; -extern const u32 gMonShinyPalette_Riolu[]; -extern const u32 gMonShinyPalette_Lucario[]; -extern const u32 gMonShinyPalette_Hippopotas[]; -extern const u32 gMonShinyPalette_HippopotasF[]; -extern const u32 gMonShinyPalette_Hippowdon[]; -extern const u32 gMonShinyPalette_HippowdonF[]; -extern const u32 gMonShinyPalette_Skorupi[]; -extern const u32 gMonShinyPalette_Drapion[]; -extern const u32 gMonShinyPalette_Croagunk[]; -extern const u32 gMonShinyPalette_Toxicroak[]; -extern const u32 gMonShinyPalette_Carnivine[]; -extern const u32 gMonShinyPalette_Finneon[]; -extern const u32 gMonShinyPalette_Lumineon[]; -extern const u32 gMonShinyPalette_Mantyke[]; -extern const u32 gMonShinyPalette_Snover[]; -extern const u32 gMonShinyPalette_Abomasnow[]; -extern const u32 gMonShinyPalette_Weavile[]; -extern const u32 gMonShinyPalette_Magnezone[]; -extern const u32 gMonShinyPalette_Lickilicky[]; -extern const u32 gMonShinyPalette_Rhyperior[]; -extern const u32 gMonShinyPalette_Tangrowth[]; -extern const u32 gMonShinyPalette_Electivire[]; -extern const u32 gMonShinyPalette_Magmortar[]; -extern const u32 gMonShinyPalette_Togekiss[]; -extern const u32 gMonShinyPalette_Yanmega[]; -extern const u32 gMonShinyPalette_Leafeon[]; -extern const u32 gMonShinyPalette_Glaceon[]; -extern const u32 gMonShinyPalette_Gliscor[]; -extern const u32 gMonShinyPalette_Mamoswine[]; -extern const u32 gMonShinyPalette_PorygonZ[]; -extern const u32 gMonShinyPalette_Gallade[]; -extern const u32 gMonShinyPalette_Probopass[]; -extern const u32 gMonShinyPalette_Dusknoir[]; -extern const u32 gMonShinyPalette_Froslass[]; -extern const u32 gMonShinyPalette_Rotom[]; -extern const u32 gMonShinyPalette_Uxie[]; -extern const u32 gMonShinyPalette_Mesprit[]; -extern const u32 gMonShinyPalette_Azelf[]; -extern const u32 gMonShinyPalette_Dialga[]; -extern const u32 gMonShinyPalette_Palkia[]; -extern const u32 gMonShinyPalette_Heatran[]; -extern const u32 gMonShinyPalette_Regigigas[]; -extern const u32 gMonShinyPalette_Giratina[]; -extern const u32 gMonShinyPalette_Cresselia[]; -extern const u32 gMonShinyPalette_Phione[]; -extern const u32 gMonShinyPalette_Manaphy[]; -extern const u32 gMonShinyPalette_Darkrai[]; -extern const u32 gMonShinyPalette_Shaymin[]; -extern const u32 gMonShinyPalette_Arceus[]; -#endif -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonShinyPalette_Victini[]; -extern const u32 gMonShinyPalette_Snivy[]; -extern const u32 gMonShinyPalette_Servine[]; -extern const u32 gMonShinyPalette_Serperior[]; -extern const u32 gMonShinyPalette_Tepig[]; -extern const u32 gMonShinyPalette_Pignite[]; -extern const u32 gMonShinyPalette_Emboar[]; -extern const u32 gMonShinyPalette_Oshawott[]; -extern const u32 gMonShinyPalette_Dewott[]; -extern const u32 gMonShinyPalette_Samurott[]; -extern const u32 gMonShinyPalette_Patrat[]; -extern const u32 gMonShinyPalette_Watchog[]; -extern const u32 gMonShinyPalette_Lillipup[]; -extern const u32 gMonShinyPalette_Herdier[]; -extern const u32 gMonShinyPalette_Stoutland[]; -extern const u32 gMonShinyPalette_Purrloin[]; -extern const u32 gMonShinyPalette_Liepard[]; -extern const u32 gMonShinyPalette_Pansage[]; -extern const u32 gMonShinyPalette_Simisage[]; -extern const u32 gMonShinyPalette_Pansear[]; -extern const u32 gMonShinyPalette_Simisear[]; -extern const u32 gMonShinyPalette_Panpour[]; -extern const u32 gMonShinyPalette_Simipour[]; -extern const u32 gMonShinyPalette_Munna[]; -extern const u32 gMonShinyPalette_Musharna[]; -extern const u32 gMonShinyPalette_Pidove[]; -extern const u32 gMonShinyPalette_Tranquill[]; -extern const u32 gMonShinyPalette_Unfezant[]; -extern const u32 gMonShinyPalette_UnfezantF[]; -extern const u32 gMonShinyPalette_Blitzle[]; -extern const u32 gMonShinyPalette_Zebstrika[]; -extern const u32 gMonShinyPalette_Roggenrola[]; -extern const u32 gMonShinyPalette_Boldore[]; -extern const u32 gMonShinyPalette_Gigalith[]; -extern const u32 gMonShinyPalette_Woobat[]; -extern const u32 gMonShinyPalette_Swoobat[]; -extern const u32 gMonShinyPalette_Drilbur[]; -extern const u32 gMonShinyPalette_Excadrill[]; -extern const u32 gMonShinyPalette_Audino[]; -extern const u32 gMonShinyPalette_Timburr[]; -extern const u32 gMonShinyPalette_Gurdurr[]; -extern const u32 gMonShinyPalette_Conkeldurr[]; -extern const u32 gMonShinyPalette_Tympole[]; -extern const u32 gMonShinyPalette_Palpitoad[]; -extern const u32 gMonShinyPalette_Seismitoad[]; -extern const u32 gMonShinyPalette_Throh[]; -extern const u32 gMonShinyPalette_Sawk[]; -extern const u32 gMonShinyPalette_Sewaddle[]; -extern const u32 gMonShinyPalette_Swadloon[]; -extern const u32 gMonShinyPalette_Leavanny[]; -extern const u32 gMonShinyPalette_Venipede[]; -extern const u32 gMonShinyPalette_Whirlipede[]; -extern const u32 gMonShinyPalette_Scolipede[]; -extern const u32 gMonShinyPalette_Cottonee[]; -extern const u32 gMonShinyPalette_Whimsicott[]; -extern const u32 gMonShinyPalette_Petilil[]; -extern const u32 gMonShinyPalette_Lilligant[]; -extern const u32 gMonShinyPalette_Basculin[]; -extern const u32 gMonShinyPalette_Sandile[]; -extern const u32 gMonShinyPalette_Krokorok[]; -extern const u32 gMonShinyPalette_Krookodile[]; -extern const u32 gMonShinyPalette_Darumaka[]; -extern const u32 gMonShinyPalette_Darmanitan[]; -extern const u32 gMonShinyPalette_Maractus[]; -extern const u32 gMonShinyPalette_Dwebble[]; -extern const u32 gMonShinyPalette_Crustle[]; -extern const u32 gMonShinyPalette_Scraggy[]; -extern const u32 gMonShinyPalette_Scrafty[]; -extern const u32 gMonShinyPalette_Sigilyph[]; -extern const u32 gMonShinyPalette_Yamask[]; -extern const u32 gMonShinyPalette_Cofagrigus[]; -extern const u32 gMonShinyPalette_Tirtouga[]; -extern const u32 gMonShinyPalette_Carracosta[]; -extern const u32 gMonShinyPalette_Archen[]; -extern const u32 gMonShinyPalette_Archeops[]; -extern const u32 gMonShinyPalette_Trubbish[]; -extern const u32 gMonShinyPalette_Garbodor[]; -extern const u32 gMonShinyPalette_Zorua[]; -extern const u32 gMonShinyPalette_Zoroark[]; -extern const u32 gMonShinyPalette_Minccino[]; -extern const u32 gMonShinyPalette_Cinccino[]; -extern const u32 gMonShinyPalette_Gothita[]; -extern const u32 gMonShinyPalette_Gothorita[]; -extern const u32 gMonShinyPalette_Gothitelle[]; -extern const u32 gMonShinyPalette_Solosis[]; -extern const u32 gMonShinyPalette_Duosion[]; -extern const u32 gMonShinyPalette_Reuniclus[]; -extern const u32 gMonShinyPalette_Ducklett[]; -extern const u32 gMonShinyPalette_Swanna[]; -extern const u32 gMonShinyPalette_Vanillite[]; -extern const u32 gMonShinyPalette_Vanillish[]; -extern const u32 gMonShinyPalette_Vanilluxe[]; -extern const u32 gMonShinyPalette_Deerling[]; -extern const u32 gMonShinyPalette_Sawsbuck[]; -extern const u32 gMonShinyPalette_Emolga[]; -extern const u32 gMonShinyPalette_Karrablast[]; -extern const u32 gMonShinyPalette_Escavalier[]; -extern const u32 gMonShinyPalette_Foongus[]; -extern const u32 gMonShinyPalette_Amoonguss[]; -extern const u32 gMonShinyPalette_Frillish[]; -extern const u32 gMonShinyPalette_FrillishF[]; -extern const u32 gMonShinyPalette_Jellicent[]; -extern const u32 gMonShinyPalette_JellicentF[]; -extern const u32 gMonShinyPalette_Alomomola[]; -extern const u32 gMonShinyPalette_Joltik[]; -extern const u32 gMonShinyPalette_Galvantula[]; -extern const u32 gMonShinyPalette_Ferroseed[]; -extern const u32 gMonShinyPalette_Ferrothorn[]; -extern const u32 gMonShinyPalette_Klink[]; -extern const u32 gMonShinyPalette_Klang[]; -extern const u32 gMonShinyPalette_Klinklang[]; -extern const u32 gMonShinyPalette_Tynamo[]; -extern const u32 gMonShinyPalette_Eelektrik[]; -extern const u32 gMonShinyPalette_Eelektross[]; -extern const u32 gMonShinyPalette_Elgyem[]; -extern const u32 gMonShinyPalette_Beheeyem[]; -extern const u32 gMonShinyPalette_Litwick[]; -extern const u32 gMonShinyPalette_Lampent[]; -extern const u32 gMonShinyPalette_Chandelure[]; -extern const u32 gMonShinyPalette_Axew[]; -extern const u32 gMonShinyPalette_Fraxure[]; -extern const u32 gMonShinyPalette_Haxorus[]; -extern const u32 gMonShinyPalette_Cubchoo[]; -extern const u32 gMonShinyPalette_Beartic[]; -extern const u32 gMonShinyPalette_Cryogonal[]; -extern const u32 gMonShinyPalette_Shelmet[]; -extern const u32 gMonShinyPalette_Accelgor[]; -extern const u32 gMonShinyPalette_Stunfisk[]; -extern const u32 gMonShinyPalette_Mienfoo[]; -extern const u32 gMonShinyPalette_Mienshao[]; -extern const u32 gMonShinyPalette_Druddigon[]; -extern const u32 gMonShinyPalette_Golett[]; -extern const u32 gMonShinyPalette_Golurk[]; -extern const u32 gMonShinyPalette_Pawniard[]; -extern const u32 gMonShinyPalette_Bisharp[]; -extern const u32 gMonShinyPalette_Bouffalant[]; -extern const u32 gMonShinyPalette_Rufflet[]; -extern const u32 gMonShinyPalette_Braviary[]; -extern const u32 gMonShinyPalette_Vullaby[]; -extern const u32 gMonShinyPalette_Mandibuzz[]; -extern const u32 gMonShinyPalette_Heatmor[]; -extern const u32 gMonShinyPalette_Durant[]; -extern const u32 gMonShinyPalette_Deino[]; -extern const u32 gMonShinyPalette_Zweilous[]; -extern const u32 gMonShinyPalette_Hydreigon[]; -extern const u32 gMonShinyPalette_Larvesta[]; -extern const u32 gMonShinyPalette_Volcarona[]; -extern const u32 gMonShinyPalette_Cobalion[]; -extern const u32 gMonShinyPalette_Terrakion[]; -extern const u32 gMonShinyPalette_Virizion[]; -extern const u32 gMonShinyPalette_Tornadus[]; -extern const u32 gMonShinyPalette_Thundurus[]; -extern const u32 gMonShinyPalette_Reshiram[]; -extern const u32 gMonShinyPalette_Zekrom[]; -extern const u32 gMonShinyPalette_Landorus[]; -extern const u32 gMonShinyPalette_Kyurem[]; -extern const u32 gMonShinyPalette_Keldeo[]; -extern const u32 gMonShinyPalette_Meloetta[]; -extern const u32 gMonShinyPalette_Genesect[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u32 gMonShinyPalette_Chespin[]; -extern const u32 gMonShinyPalette_Quilladin[]; -extern const u32 gMonShinyPalette_Chesnaught[]; -extern const u32 gMonShinyPalette_Fennekin[]; -extern const u32 gMonShinyPalette_Braixen[]; -extern const u32 gMonShinyPalette_Delphox[]; -extern const u32 gMonShinyPalette_Froakie[]; -extern const u32 gMonShinyPalette_Frogadier[]; -extern const u32 gMonShinyPalette_Greninja[]; -extern const u32 gMonShinyPalette_Bunnelby[]; -extern const u32 gMonShinyPalette_Diggersby[]; -extern const u32 gMonShinyPalette_Fletchling[]; -extern const u32 gMonShinyPalette_Fletchinder[]; -extern const u32 gMonShinyPalette_Talonflame[]; -extern const u32 gMonShinyPalette_Scatterbug[]; -extern const u32 gMonShinyPalette_Spewpa[]; -extern const u32 gMonShinyPalette_Vivillon[]; -extern const u32 gMonShinyPalette_Litleo[]; -extern const u32 gMonShinyPalette_Pyroar[]; -extern const u32 gMonShinyPalette_Flabebe[]; -extern const u32 gMonShinyPalette_Floette[]; -extern const u32 gMonShinyPalette_Florges[]; -extern const u32 gMonShinyPalette_Skiddo[]; -extern const u32 gMonShinyPalette_Gogoat[]; -extern const u32 gMonShinyPalette_Pancham[]; -extern const u32 gMonShinyPalette_Pangoro[]; -extern const u32 gMonShinyPalette_Furfrou[]; -extern const u32 gMonShinyPalette_Espurr[]; -extern const u32 gMonShinyPalette_Meowstic[]; -extern const u32 gMonShinyPalette_Honedge[]; -extern const u32 gMonShinyPalette_Doublade[]; -extern const u32 gMonShinyPalette_Aegislash[]; -extern const u32 gMonShinyPalette_Spritzee[]; -extern const u32 gMonShinyPalette_Aromatisse[]; -extern const u32 gMonShinyPalette_Swirlix[]; -extern const u32 gMonShinyPalette_Slurpuff[]; -extern const u32 gMonShinyPalette_Inkay[]; -extern const u32 gMonShinyPalette_Malamar[]; -extern const u32 gMonShinyPalette_Binacle[]; -extern const u32 gMonShinyPalette_Barbaracle[]; -extern const u32 gMonShinyPalette_Skrelp[]; -extern const u32 gMonShinyPalette_Dragalge[]; -extern const u32 gMonShinyPalette_Clauncher[]; -extern const u32 gMonShinyPalette_Clawitzer[]; -extern const u32 gMonShinyPalette_Helioptile[]; -extern const u32 gMonShinyPalette_Heliolisk[]; -extern const u32 gMonShinyPalette_Tyrunt[]; -extern const u32 gMonShinyPalette_Tyrantrum[]; -extern const u32 gMonShinyPalette_Amaura[]; -extern const u32 gMonShinyPalette_Aurorus[]; -extern const u32 gMonShinyPalette_Sylveon[]; -extern const u32 gMonShinyPalette_Hawlucha[]; -extern const u32 gMonShinyPalette_Dedenne[]; -extern const u32 gMonShinyPalette_Carbink[]; -extern const u32 gMonShinyPalette_Goomy[]; -extern const u32 gMonShinyPalette_Sliggoo[]; -extern const u32 gMonShinyPalette_Goodra[]; -extern const u32 gMonShinyPalette_Klefki[]; -extern const u32 gMonShinyPalette_Phantump[]; -extern const u32 gMonShinyPalette_Trevenant[]; -extern const u32 gMonShinyPalette_Pumpkaboo[]; -extern const u32 gMonShinyPalette_Gourgeist[]; -extern const u32 gMonShinyPalette_Bergmite[]; -extern const u32 gMonShinyPalette_Avalugg[]; -extern const u32 gMonShinyPalette_Noibat[]; -extern const u32 gMonShinyPalette_Noivern[]; -extern const u32 gMonShinyPalette_Xerneas[]; -extern const u32 gMonShinyPalette_Yveltal[]; -extern const u32 gMonShinyPalette_Zygarde[]; -extern const u32 gMonShinyPalette_Diancie[]; -extern const u32 gMonShinyPalette_Hoopa[]; -extern const u32 gMonShinyPalette_Volcanion[]; -#endif -#if P_GEN_7_POKEMON == TRUE -extern const u32 gMonShinyPalette_Rowlet[]; -extern const u32 gMonShinyPalette_Dartrix[]; -extern const u32 gMonShinyPalette_Decidueye[]; -extern const u32 gMonShinyPalette_Litten[]; -extern const u32 gMonShinyPalette_Torracat[]; -extern const u32 gMonShinyPalette_Incineroar[]; -extern const u32 gMonShinyPalette_Popplio[]; -extern const u32 gMonShinyPalette_Brionne[]; -extern const u32 gMonShinyPalette_Primarina[]; -extern const u32 gMonShinyPalette_Pikipek[]; -extern const u32 gMonShinyPalette_Trumbeak[]; -extern const u32 gMonShinyPalette_Toucannon[]; -extern const u32 gMonShinyPalette_Yungoos[]; -extern const u32 gMonShinyPalette_Gumshoos[]; -extern const u32 gMonShinyPalette_Grubbin[]; -extern const u32 gMonShinyPalette_Charjabug[]; -extern const u32 gMonShinyPalette_Vikavolt[]; -extern const u32 gMonShinyPalette_Crabrawler[]; -extern const u32 gMonShinyPalette_Crabominable[]; -extern const u32 gMonShinyPalette_Oricorio[]; -extern const u32 gMonShinyPalette_Cutiefly[]; -extern const u32 gMonShinyPalette_Ribombee[]; -extern const u32 gMonShinyPalette_Rockruff[]; -extern const u32 gMonShinyPalette_Lycanroc[]; -extern const u32 gMonShinyPalette_Wishiwashi[]; -extern const u32 gMonShinyPalette_Mareanie[]; -extern const u32 gMonShinyPalette_Toxapex[]; -extern const u32 gMonShinyPalette_Mudbray[]; -extern const u32 gMonShinyPalette_Mudsdale[]; -extern const u32 gMonShinyPalette_Dewpider[]; -extern const u32 gMonShinyPalette_Araquanid[]; -extern const u32 gMonShinyPalette_Fomantis[]; -extern const u32 gMonShinyPalette_Lurantis[]; -extern const u32 gMonShinyPalette_Morelull[]; -extern const u32 gMonShinyPalette_Shiinotic[]; -extern const u32 gMonShinyPalette_Salandit[]; -extern const u32 gMonShinyPalette_Salazzle[]; -extern const u32 gMonShinyPalette_Stufful[]; -extern const u32 gMonShinyPalette_Bewear[]; -extern const u32 gMonShinyPalette_Bounsweet[]; -extern const u32 gMonShinyPalette_Steenee[]; -extern const u32 gMonShinyPalette_Tsareena[]; -extern const u32 gMonShinyPalette_Comfey[]; -extern const u32 gMonShinyPalette_Oranguru[]; -extern const u32 gMonShinyPalette_Passimian[]; -extern const u32 gMonShinyPalette_Wimpod[]; -extern const u32 gMonShinyPalette_Golisopod[]; -extern const u32 gMonShinyPalette_Sandygast[]; -extern const u32 gMonShinyPalette_Palossand[]; -extern const u32 gMonShinyPalette_Pyukumuku[]; -extern const u32 gMonShinyPalette_TypeNull[]; -extern const u32 gMonShinyPalette_Silvally[]; -extern const u32 gMonShinyPalette_Minior[]; -extern const u32 gMonShinyPalette_Komala[]; -extern const u32 gMonShinyPalette_Turtonator[]; -extern const u32 gMonShinyPalette_Togedemaru[]; -extern const u32 gMonShinyPalette_Mimikyu[]; -extern const u32 gMonShinyPalette_Bruxish[]; -extern const u32 gMonShinyPalette_Drampa[]; -extern const u32 gMonShinyPalette_Dhelmise[]; -extern const u32 gMonShinyPalette_JangmoO[]; -extern const u32 gMonShinyPalette_HakamoO[]; -extern const u32 gMonShinyPalette_KommoO[]; -extern const u32 gMonShinyPalette_TapuKoko[]; -extern const u32 gMonShinyPalette_TapuLele[]; -extern const u32 gMonShinyPalette_TapuBulu[]; -extern const u32 gMonShinyPalette_TapuFini[]; -extern const u32 gMonShinyPalette_Cosmog[]; -extern const u32 gMonShinyPalette_Cosmoem[]; -extern const u32 gMonShinyPalette_Solgaleo[]; -extern const u32 gMonShinyPalette_Lunala[]; -extern const u32 gMonShinyPalette_Nihilego[]; -extern const u32 gMonShinyPalette_Buzzwole[]; -extern const u32 gMonShinyPalette_Pheromosa[]; -extern const u32 gMonShinyPalette_Xurkitree[]; -extern const u32 gMonShinyPalette_Celesteela[]; -extern const u32 gMonShinyPalette_Kartana[]; -extern const u32 gMonShinyPalette_Guzzlord[]; -extern const u32 gMonShinyPalette_Necrozma[]; -extern const u32 gMonShinyPalette_Magearna[]; -extern const u32 gMonShinyPalette_Marshadow[]; -extern const u32 gMonShinyPalette_Poipole[]; -extern const u32 gMonShinyPalette_Naganadel[]; -extern const u32 gMonShinyPalette_Stakataka[]; -extern const u32 gMonShinyPalette_Blacephalon[]; -extern const u32 gMonShinyPalette_Zeraora[]; -extern const u32 gMonShinyPalette_Meltan[]; -extern const u32 gMonShinyPalette_Melmetal[]; -#endif -#if P_GEN_8_POKEMON == TRUE -extern const u32 gMonShinyPalette_Grookey[]; -extern const u32 gMonShinyPalette_Thwackey[]; -extern const u32 gMonShinyPalette_Rillaboom[]; -extern const u32 gMonShinyPalette_Scorbunny[]; -extern const u32 gMonShinyPalette_Raboot[]; -extern const u32 gMonShinyPalette_Cinderace[]; -extern const u32 gMonShinyPalette_Sobble[]; -extern const u32 gMonShinyPalette_Drizzile[]; -extern const u32 gMonShinyPalette_Inteleon[]; -extern const u32 gMonShinyPalette_Skwovet[]; -extern const u32 gMonShinyPalette_Greedent[]; -extern const u32 gMonShinyPalette_Rookidee[]; -extern const u32 gMonShinyPalette_Corvisquire[]; -extern const u32 gMonShinyPalette_Corviknight[]; -extern const u32 gMonShinyPalette_Blipbug[]; -extern const u32 gMonShinyPalette_Dottler[]; -extern const u32 gMonShinyPalette_Orbeetle[]; -extern const u32 gMonShinyPalette_Nickit[]; -extern const u32 gMonShinyPalette_Thievul[]; -extern const u32 gMonShinyPalette_Gossifleur[]; -extern const u32 gMonShinyPalette_Eldegoss[]; -extern const u32 gMonShinyPalette_Wooloo[]; -extern const u32 gMonShinyPalette_Dubwool[]; -extern const u32 gMonShinyPalette_Chewtle[]; -extern const u32 gMonShinyPalette_Drednaw[]; -extern const u32 gMonShinyPalette_Yamper[]; -extern const u32 gMonShinyPalette_Boltund[]; -extern const u32 gMonShinyPalette_Rolycoly[]; -extern const u32 gMonShinyPalette_Carkol[]; -extern const u32 gMonShinyPalette_Coalossal[]; -extern const u32 gMonShinyPalette_Applin[]; -extern const u32 gMonShinyPalette_Flapple[]; -extern const u32 gMonShinyPalette_Appletun[]; -extern const u32 gMonShinyPalette_Silicobra[]; -extern const u32 gMonShinyPalette_Sandaconda[]; -extern const u32 gMonShinyPalette_Cramorant[]; -extern const u32 gMonShinyPalette_Arrokuda[]; -extern const u32 gMonShinyPalette_Barraskewda[]; -extern const u32 gMonShinyPalette_Toxel[]; -extern const u32 gMonShinyPalette_Toxtricity[]; -extern const u32 gMonShinyPalette_Sizzlipede[]; -extern const u32 gMonShinyPalette_Centiskorch[]; -extern const u32 gMonShinyPalette_Clobbopus[]; -extern const u32 gMonShinyPalette_Grapploct[]; -extern const u32 gMonShinyPalette_Sinistea[]; -extern const u32 gMonShinyPalette_Polteageist[]; -extern const u32 gMonShinyPalette_Hatenna[]; -extern const u32 gMonShinyPalette_Hattrem[]; -extern const u32 gMonShinyPalette_Hatterene[]; -extern const u32 gMonShinyPalette_Impidimp[]; -extern const u32 gMonShinyPalette_Morgrem[]; -extern const u32 gMonShinyPalette_Grimmsnarl[]; -extern const u32 gMonShinyPalette_Obstagoon[]; -extern const u32 gMonShinyPalette_Perrserker[]; -extern const u32 gMonShinyPalette_Cursola[]; -extern const u32 gMonShinyPalette_Sirfetchd[]; -extern const u32 gMonShinyPalette_MrRime[]; -extern const u32 gMonShinyPalette_Runerigus[]; -extern const u32 gMonShinyPalette_Milcery[]; -extern const u32 gMonShinyPalette_Alcremie[]; -extern const u32 gMonShinyPalette_Falinks[]; -extern const u32 gMonShinyPalette_Pincurchin[]; -extern const u32 gMonShinyPalette_Snom[]; -extern const u32 gMonShinyPalette_Frosmoth[]; -extern const u32 gMonShinyPalette_Stonjourner[]; -extern const u32 gMonShinyPalette_Eiscue[]; -extern const u32 gMonShinyPalette_Indeedee[]; -extern const u32 gMonShinyPalette_Morpeko[]; -extern const u32 gMonShinyPalette_Cufant[]; -extern const u32 gMonShinyPalette_Copperajah[]; -extern const u32 gMonShinyPalette_Dracozolt[]; -extern const u32 gMonShinyPalette_Arctozolt[]; -extern const u32 gMonShinyPalette_Dracovish[]; -extern const u32 gMonShinyPalette_Arctovish[]; -extern const u32 gMonShinyPalette_Duraludon[]; -extern const u32 gMonShinyPalette_Dreepy[]; -extern const u32 gMonShinyPalette_Drakloak[]; -extern const u32 gMonShinyPalette_Dragapult[]; -extern const u32 gMonShinyPalette_Zacian[]; -extern const u32 gMonShinyPalette_Zamazenta[]; -extern const u32 gMonShinyPalette_Eternatus[]; -extern const u32 gMonShinyPalette_Kubfu[]; -extern const u32 gMonShinyPalette_Urshifu[]; -extern const u32 gMonShinyPalette_Zarude[]; -extern const u32 gMonShinyPalette_Regieleki[]; -extern const u32 gMonShinyPalette_Regidrago[]; -extern const u32 gMonShinyPalette_Glastrier[]; -extern const u32 gMonShinyPalette_Spectrier[]; -extern const u32 gMonShinyPalette_Calyrex[]; -extern const u32 gMonShinyPalette_Wyrdeer[]; -extern const u32 gMonShinyPalette_Kleavor[]; -extern const u32 gMonShinyPalette_Ursaluna[]; -extern const u32 gMonShinyPalette_Basculegion[]; -extern const u32 gMonShinyPalette_Sneasler[]; -extern const u32 gMonShinyPalette_Overqwil[]; -extern const u32 gMonShinyPalette_Enamorus[]; -#endif -extern const u32 gMonShinyPalette_VenusaurMega[]; -extern const u32 gMonShinyPalette_CharizardMegaX[]; -extern const u32 gMonShinyPalette_CharizardMegaY[]; -extern const u32 gMonShinyPalette_BlastoiseMega[]; -extern const u32 gMonShinyPalette_BeedrillMega[]; -extern const u32 gMonShinyPalette_PidgeotMega[]; -extern const u32 gMonShinyPalette_AlakazamMega[]; -extern const u32 gMonShinyPalette_SlowbroMega[]; -extern const u32 gMonShinyPalette_GengarMega[]; -extern const u32 gMonShinyPalette_KangaskhanMega[]; -extern const u32 gMonShinyPalette_PinsirMega[]; -extern const u32 gMonShinyPalette_GyaradosMega[]; -extern const u32 gMonShinyPalette_AerodactylMega[]; -extern const u32 gMonShinyPalette_MewtwoMegaX[]; -extern const u32 gMonShinyPalette_MewtwoMegaY[]; -extern const u32 gMonShinyPalette_AmpharosMega[]; -extern const u32 gMonShinyPalette_SteelixMega[]; -extern const u32 gMonShinyPalette_ScizorMega[]; -extern const u32 gMonShinyPalette_HeracrossMega[]; -extern const u32 gMonShinyPalette_HoundoomMega[]; -extern const u32 gMonShinyPalette_TyranitarMega[]; -extern const u32 gMonShinyPalette_SceptileMega[]; -extern const u32 gMonShinyPalette_BlazikenMega[]; -extern const u32 gMonShinyPalette_SwampertMega[]; -extern const u32 gMonShinyPalette_GardevoirMega[]; -extern const u32 gMonShinyPalette_SableyeMega[]; -extern const u32 gMonShinyPalette_MawileMega[]; -extern const u32 gMonShinyPalette_AggronMega[]; -extern const u32 gMonShinyPalette_MedichamMega[]; -extern const u32 gMonShinyPalette_ManectricMega[]; -extern const u32 gMonShinyPalette_SharpedoMega[]; -extern const u32 gMonShinyPalette_CameruptMega[]; -extern const u32 gMonShinyPalette_AltariaMega[]; -extern const u32 gMonShinyPalette_BanetteMega[]; -extern const u32 gMonShinyPalette_AbsolMega[]; -extern const u32 gMonShinyPalette_GlalieMega[]; -extern const u32 gMonShinyPalette_SalamenceMega[]; -extern const u32 gMonShinyPalette_MetagrossMega[]; -extern const u32 gMonShinyPalette_LatiasMega[]; -extern const u32 gMonShinyPalette_LatiosMega[]; -#if P_GEN_4_POKEMON == TRUE -extern const u32 gMonShinyPalette_LopunnyMega[]; -extern const u32 gMonShinyPalette_GarchompMega[]; -extern const u32 gMonShinyPalette_LucarioMega[]; -extern const u32 gMonShinyPalette_AbomasnowMega[]; -extern const u32 gMonShinyPalette_GalladeMega[]; -#endif -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonShinyPalette_AudinoMega[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u32 gMonShinyPalette_DiancieMega[]; -#endif -extern const u32 gMonShinyPalette_RayquazaMega[]; -extern const u32 gMonShinyPalette_KyogrePrimal[]; -extern const u32 gMonShinyPalette_GroudonPrimal[]; -extern const u32 gMonShinyPalette_RattataAlolan[]; -extern const u32 gMonShinyPalette_RaticateAlolan[]; -extern const u32 gMonShinyPalette_RaichuAlolan[]; -extern const u32 gMonShinyPalette_SandshrewAlolan[]; -extern const u32 gMonShinyPalette_SandslashAlolan[]; -extern const u32 gMonShinyPalette_VulpixAlolan[]; -extern const u32 gMonShinyPalette_NinetalesAlolan[]; -extern const u32 gMonShinyPalette_DiglettAlolan[]; -extern const u32 gMonShinyPalette_DugtrioAlolan[]; -extern const u32 gMonShinyPalette_MeowthAlolan[]; -extern const u32 gMonShinyPalette_PersianAlolan[]; -extern const u32 gMonShinyPalette_GeodudeAlolan[]; -extern const u32 gMonShinyPalette_GravelerAlolan[]; -extern const u32 gMonShinyPalette_GolemAlolan[]; -extern const u32 gMonShinyPalette_GrimerAlolan[]; -extern const u32 gMonShinyPalette_MukAlolan[]; -extern const u32 gMonShinyPalette_ExeggutorAlolan[]; -extern const u32 gMonShinyPalette_MarowakAlolan[]; -extern const u32 gMonShinyPalette_MeowthGalarian[]; -extern const u32 gMonShinyPalette_PonytaGalarian[]; -extern const u32 gMonShinyPalette_RapidashGalarian[]; -extern const u32 gMonShinyPalette_SlowpokeGalarian[]; -extern const u32 gMonShinyPalette_SlowbroGalarian[]; -extern const u32 gMonShinyPalette_FarfetchdGalarian[]; -extern const u32 gMonShinyPalette_WeezingGalarian[]; -extern const u32 gMonShinyPalette_MrMimeGalarian[]; -extern const u32 gMonShinyPalette_ArticunoGalarian[]; -extern const u32 gMonShinyPalette_ZapdosGalarian[]; -extern const u32 gMonShinyPalette_MoltresGalarian[]; -extern const u32 gMonShinyPalette_SlowkingGalarian[]; -extern const u32 gMonShinyPalette_CorsolaGalarian[]; -extern const u32 gMonShinyPalette_ZigzagoonGalarian[]; -extern const u32 gMonShinyPalette_LinooneGalarian[]; -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonShinyPalette_DarumakaGalarian[]; -extern const u32 gMonShinyPalette_DarmanitanGalarian[]; -extern const u32 gMonShinyPalette_YamaskGalarian[]; -extern const u32 gMonShinyPalette_StunfiskGalarian[]; -#endif -extern const u32 gMonShinyPalette_GrowlitheHisuian[]; -extern const u32 gMonShinyPalette_ArcanineHisuian[]; -extern const u32 gMonShinyPalette_VoltorbHisuian[]; -extern const u32 gMonShinyPalette_ElectrodeHisuian[]; -extern const u32 gMonShinyPalette_TyphlosionHisuian[]; -extern const u32 gMonShinyPalette_QwilfishHisuian[]; -extern const u32 gMonShinyPalette_SneaselHisuian[]; -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonShinyPalette_SamurottHisuian[]; -extern const u32 gMonShinyPalette_LilligantHisuian[]; -extern const u32 gMonShinyPalette_ZoruaHisuian[]; -extern const u32 gMonShinyPalette_ZoroarkHisuian[]; -extern const u32 gMonShinyPalette_BraviaryHisuian[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u32 gMonShinyPalette_SliggooHisuian[]; -extern const u32 gMonShinyPalette_GoodraHisuian[]; -extern const u32 gMonShinyPalette_AvaluggHisuian[]; -#endif -#if P_GEN_7_POKEMON == TRUE -extern const u32 gMonShinyPalette_DecidueyeHisuian[]; -#endif -extern const u32 gMonShinyPalette_PikachuCosplay[]; -extern const u32 gMonShinyPalette_PikachuRockStar[]; -extern const u32 gMonShinyPalette_PikachuBelle[]; -extern const u32 gMonShinyPalette_PikachuPopStar[]; -extern const u32 gMonShinyPalette_PikachuPhD[]; -extern const u32 gMonShinyPalette_PikachuLibre[]; -extern const u32 gMonShinyPalette_PikachuOriginalCap[]; -extern const u32 gMonShinyPalette_PikachuHoennCap[]; -extern const u32 gMonShinyPalette_PikachuSinnohCap[]; -extern const u32 gMonShinyPalette_PikachuUnovaCap[]; -extern const u32 gMonShinyPalette_PikachuKalosCap[]; -extern const u32 gMonShinyPalette_PikachuAlolaCap[]; -extern const u32 gMonShinyPalette_PikachuPartnerCap[]; -extern const u32 gMonShinyPalette_PikachuWorldCap[]; -extern const u32 gMonShinyPalette_PichuSpikyEared[]; -extern const u32 gMonShinyPalette_CastformSunny[]; -extern const u32 gMonShinyPalette_CastformRainy[]; -extern const u32 gMonShinyPalette_CastformSnowy[]; -extern const u32 gMonShinyPalette_DeoxysAttack[]; -extern const u32 gMonShinyPalette_DeoxysDefense[]; -extern const u32 gMonShinyPalette_DeoxysSpeed[]; -#if P_GEN_4_POKEMON == TRUE -extern const u32 gMonShinyPalette_BurmySandyCloak[]; -extern const u32 gMonShinyPalette_BurmyTrashCloak[]; -extern const u32 gMonShinyPalette_WormadamSandyCloak[]; -extern const u32 gMonShinyPalette_WormadamTrashCloak[]; -extern const u32 gMonShinyPalette_CherrimSunshine[]; -extern const u32 gMonShinyPalette_ShellosEastSea[]; -extern const u32 gMonShinyPalette_GastrodonEastSea[]; -extern const u32 gMonShinyPalette_RotomHeat[]; -extern const u32 gMonShinyPalette_RotomWash[]; -extern const u32 gMonShinyPalette_RotomFrost[]; -extern const u32 gMonShinyPalette_RotomFan[]; -extern const u32 gMonShinyPalette_RotomMow[]; -extern const u32 gMonShinyPalette_DialgaOrigin[]; -extern const u32 gMonShinyPalette_PalkiaOrigin[]; -extern const u32 gMonShinyPalette_GiratinaOrigin[]; -extern const u32 gMonShinyPalette_ShayminSky[]; -extern const u32 gMonShinyPalette_ArceusFighting[]; -extern const u32 gMonShinyPalette_ArceusFlying[]; -extern const u32 gMonShinyPalette_ArceusPoison[]; -extern const u32 gMonShinyPalette_ArceusGround[]; -extern const u32 gMonShinyPalette_ArceusRock[]; -extern const u32 gMonShinyPalette_ArceusBug[]; -extern const u32 gMonShinyPalette_ArceusGhost[]; -extern const u32 gMonShinyPalette_ArceusSteel[]; -extern const u32 gMonShinyPalette_ArceusFire[]; -extern const u32 gMonShinyPalette_ArceusWater[]; -extern const u32 gMonShinyPalette_ArceusGrass[]; -extern const u32 gMonShinyPalette_ArceusElectric[]; -extern const u32 gMonShinyPalette_ArceusPsychic[]; -extern const u32 gMonShinyPalette_ArceusIce[]; -extern const u32 gMonShinyPalette_ArceusDragon[]; -extern const u32 gMonShinyPalette_ArceusDark[]; -extern const u32 gMonShinyPalette_ArceusFairy[]; -#endif -#if P_GEN_5_POKEMON == TRUE -extern const u32 gMonShinyPalette_BasculinBlueStriped[]; -extern const u32 gMonShinyPalette_BasculinWhiteStriped[]; -extern const u32 gMonShinyPalette_DarmanitanZenMode[]; -extern const u32 gMonShinyPalette_DarmanitanZenModeGalarian[]; -extern const u32 gMonShinyPalette_DeerlingSummer[]; -extern const u32 gMonShinyPalette_DeerlingAutumn[]; -extern const u32 gMonShinyPalette_DeerlingWinter[]; -extern const u32 gMonShinyPalette_SawsbuckSummer[]; -extern const u32 gMonShinyPalette_SawsbuckAutumn[]; -extern const u32 gMonShinyPalette_SawsbuckWinter[]; -extern const u32 gMonShinyPalette_TornadusTherian[]; -extern const u32 gMonShinyPalette_ThundurusTherian[]; -extern const u32 gMonShinyPalette_LandorusTherian[]; -extern const u32 gMonShinyPalette_KyuremWhite[]; -extern const u32 gMonShinyPalette_KyuremBlack[]; -extern const u32 gMonShinyPalette_KeldeoResolute[]; -extern const u32 gMonShinyPalette_MeloettaPirouette[]; -extern const u32 gMonShinyPalette_GenesectDouseDrive[]; -extern const u32 gMonShinyPalette_GenesectShockDrive[]; -extern const u32 gMonShinyPalette_GenesectBurnDrive[]; -extern const u32 gMonShinyPalette_GenesectChillDrive[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u32 gMonShinyPalette_GreninjaAsh[]; -extern const u32 gMonShinyPalette_VivillonPolar[]; -extern const u32 gMonShinyPalette_VivillonTundra[]; -extern const u32 gMonShinyPalette_VivillonContinental[]; -extern const u32 gMonShinyPalette_VivillonGarden[]; -extern const u32 gMonShinyPalette_VivillonElegant[]; -extern const u32 gMonShinyPalette_VivillonMeadow[]; -extern const u32 gMonShinyPalette_VivillonModern[]; -extern const u32 gMonShinyPalette_VivillonMarine[]; -extern const u32 gMonShinyPalette_VivillonArchipelago[]; -extern const u32 gMonShinyPalette_VivillonHighPlains[]; -extern const u32 gMonShinyPalette_VivillonSandstorm[]; -extern const u32 gMonShinyPalette_VivillonRiver[]; -extern const u32 gMonShinyPalette_VivillonMonsoon[]; -extern const u32 gMonShinyPalette_VivillonSavanna[]; -extern const u32 gMonShinyPalette_VivillonSun[]; -extern const u32 gMonShinyPalette_VivillonOcean[]; -extern const u32 gMonShinyPalette_VivillonJungle[]; -extern const u32 gMonShinyPalette_VivillonFancy[]; -extern const u32 gMonShinyPalette_VivillonPokeBall[]; -extern const u32 gMonShinyPalette_FlabebeYellowFlower[]; -extern const u32 gMonShinyPalette_FlabebeOrangeFlower[]; -extern const u32 gMonShinyPalette_FlabebeBlueFlower[]; -extern const u32 gMonShinyPalette_FlabebeWhiteFlower[]; -extern const u32 gMonShinyPalette_FloetteYellowFlower[]; -extern const u32 gMonShinyPalette_FloetteOrangeFlower[]; -extern const u32 gMonShinyPalette_FloetteBlueFlower[]; -extern const u32 gMonShinyPalette_FloetteWhiteFlower[]; -extern const u32 gMonShinyPalette_FloetteEternalFlower[]; -extern const u32 gMonShinyPalette_FlorgesYellowFlower[]; -extern const u32 gMonShinyPalette_FlorgesOrangeFlower[]; -extern const u32 gMonShinyPalette_FlorgesBlueFlower[]; -extern const u32 gMonShinyPalette_FlorgesWhiteFlower[]; -extern const u32 gMonShinyPalette_FurfrouHeartTrim[]; -extern const u32 gMonShinyPalette_FurfrouStarTrim[]; -extern const u32 gMonShinyPalette_FurfrouDiamondTrim[]; -extern const u32 gMonShinyPalette_FurfrouDebutanteTrim[]; -extern const u32 gMonShinyPalette_FurfrouMatronTrim[]; -extern const u32 gMonShinyPalette_FurfrouDandyTrim[]; -extern const u32 gMonShinyPalette_FurfrouLaReineTrim[]; -extern const u32 gMonShinyPalette_FurfrouKabukiTrim[]; -extern const u32 gMonShinyPalette_FurfrouPharaohTrim[]; -extern const u32 gMonShinyPalette_MeowsticFemale[]; -extern const u32 gMonShinyPalette_AegislashBlade[]; -extern const u32 gMonShinyPalette_XerneasActive[]; -extern const u32 gMonShinyPalette_Zygarde10[]; -extern const u32 gMonShinyPalette_ZygardeComplete[]; -extern const u32 gMonShinyPalette_HoopaUnbound[]; -#endif -#if P_GEN_7_POKEMON == TRUE -extern const u32 gMonShinyPalette_OricorioPomPom[]; -extern const u32 gMonShinyPalette_OricorioPau[]; -extern const u32 gMonShinyPalette_OricorioSensu[]; -extern const u32 gMonShinyPalette_LycanrocMidnight[]; -extern const u32 gMonShinyPalette_LycanrocDusk[]; -extern const u32 gMonShinyPalette_WishiwashiSchool[]; -extern const u32 gMonShinyPalette_SilvallyFighting[]; -extern const u32 gMonShinyPalette_SilvallyFlying[]; -extern const u32 gMonShinyPalette_SilvallyPoison[]; -extern const u32 gMonShinyPalette_SilvallyGround[]; -extern const u32 gMonShinyPalette_SilvallyRock[]; -extern const u32 gMonShinyPalette_SilvallyBug[]; -extern const u32 gMonShinyPalette_SilvallyGhost[]; -extern const u32 gMonShinyPalette_SilvallySteel[]; -extern const u32 gMonShinyPalette_SilvallyFire[]; -extern const u32 gMonShinyPalette_SilvallyWater[]; -extern const u32 gMonShinyPalette_SilvallyGrass[]; -extern const u32 gMonShinyPalette_SilvallyElectric[]; -extern const u32 gMonShinyPalette_SilvallyPsychic[]; -extern const u32 gMonShinyPalette_SilvallyIce[]; -extern const u32 gMonShinyPalette_SilvallyDragon[]; -extern const u32 gMonShinyPalette_SilvallyDark[]; -extern const u32 gMonShinyPalette_SilvallyFairy[]; -extern const u32 gMonShinyPalette_MiniorCore[]; -extern const u32 gMonShinyPalette_MimikyuBusted[]; -extern const u32 gMonShinyPalette_NecrozmaDuskMane[]; -extern const u32 gMonShinyPalette_NecrozmaDawnWings[]; -extern const u32 gMonShinyPalette_NecrozmaUltra[]; -extern const u32 gMonShinyPalette_MagearnaOriginalColor[]; -#endif -#if P_GEN_8_POKEMON == TRUE -extern const u32 gMonShinyPalette_CramorantGulping[]; -extern const u32 gMonShinyPalette_CramorantGorging[]; -extern const u32 gMonShinyPalette_ToxtricityLowKey[]; -extern const u32 gMonShinyPalette_AlcremieRubyCream[]; -extern const u32 gMonShinyPalette_AlcremieMatchaCream[]; -extern const u32 gMonShinyPalette_AlcremieMintCream[]; -extern const u32 gMonShinyPalette_AlcremieLemonCream[]; -extern const u32 gMonShinyPalette_AlcremieSaltedCream[]; -extern const u32 gMonShinyPalette_AlcremieRubySwirl[]; -extern const u32 gMonShinyPalette_AlcremieCaramelSwirl[]; -extern const u32 gMonShinyPalette_AlcremieRainbowSwirl[]; -extern const u32 gMonShinyPalette_EiscueNoiceFace[]; -extern const u32 gMonShinyPalette_IndeedeeFemale[]; -extern const u32 gMonShinyPalette_MorpekoHangry[]; -extern const u32 gMonShinyPalette_ZacianCrownedSword[]; -extern const u32 gMonShinyPalette_ZamazentaCrownedShield[]; -extern const u32 gMonShinyPalette_EternatusEternamax[]; -extern const u32 gMonShinyPalette_UrshifuRapidStrikeStyle[]; -extern const u32 gMonShinyPalette_ZarudeDada[]; -extern const u32 gMonShinyPalette_CalyrexIceRider[]; -extern const u32 gMonShinyPalette_CalyrexShadowRider[]; -extern const u32 gMonShinyPalette_EnamorusTherian[]; -extern const u32 gMonShinyPalette_BasculegionFemale[]; -#endif - -extern const u8 gMonIcon_QuestionMark[]; -extern const u8 gMonIcon_Bulbasaur[]; -extern const u8 gMonIcon_Ivysaur[]; -extern const u8 gMonIcon_Venusaur[]; -extern const u8 gMonIcon_Charmander[]; -extern const u8 gMonIcon_Charmeleon[]; -extern const u8 gMonIcon_Charizard[]; -extern const u8 gMonIcon_Squirtle[]; -extern const u8 gMonIcon_Wartortle[]; -extern const u8 gMonIcon_Blastoise[]; -extern const u8 gMonIcon_Caterpie[]; -extern const u8 gMonIcon_Metapod[]; -extern const u8 gMonIcon_Butterfree[]; -extern const u8 gMonIcon_Weedle[]; -extern const u8 gMonIcon_Kakuna[]; -extern const u8 gMonIcon_Beedrill[]; -extern const u8 gMonIcon_Pidgey[]; -extern const u8 gMonIcon_Pidgeotto[]; -extern const u8 gMonIcon_Pidgeot[]; -extern const u8 gMonIcon_Rattata[]; -extern const u8 gMonIcon_Raticate[]; -extern const u8 gMonIcon_Spearow[]; -extern const u8 gMonIcon_Fearow[]; -extern const u8 gMonIcon_Ekans[]; -extern const u8 gMonIcon_Arbok[]; -extern const u8 gMonIcon_Pikachu[]; -extern const u8 gMonIcon_Raichu[]; -extern const u8 gMonIcon_Sandshrew[]; -extern const u8 gMonIcon_Sandslash[]; -extern const u8 gMonIcon_NidoranF[]; -extern const u8 gMonIcon_Nidorina[]; -extern const u8 gMonIcon_Nidoqueen[]; -extern const u8 gMonIcon_NidoranM[]; -extern const u8 gMonIcon_Nidorino[]; -extern const u8 gMonIcon_Nidoking[]; -extern const u8 gMonIcon_Clefairy[]; -extern const u8 gMonIcon_Clefable[]; -extern const u8 gMonIcon_Vulpix[]; -extern const u8 gMonIcon_Ninetales[]; -extern const u8 gMonIcon_Jigglypuff[]; -extern const u8 gMonIcon_Wigglytuff[]; -extern const u8 gMonIcon_Zubat[]; -extern const u8 gMonIcon_Golbat[]; -extern const u8 gMonIcon_Oddish[]; -extern const u8 gMonIcon_Gloom[]; -extern const u8 gMonIcon_Vileplume[]; -extern const u8 gMonIcon_Paras[]; -extern const u8 gMonIcon_Parasect[]; -extern const u8 gMonIcon_Venonat[]; -extern const u8 gMonIcon_Venomoth[]; -extern const u8 gMonIcon_Diglett[]; -extern const u8 gMonIcon_Dugtrio[]; -extern const u8 gMonIcon_Meowth[]; -extern const u8 gMonIcon_Persian[]; -extern const u8 gMonIcon_Psyduck[]; -extern const u8 gMonIcon_Golduck[]; -extern const u8 gMonIcon_Mankey[]; -extern const u8 gMonIcon_Primeape[]; -extern const u8 gMonIcon_Growlithe[]; -extern const u8 gMonIcon_Arcanine[]; -extern const u8 gMonIcon_Poliwag[]; -extern const u8 gMonIcon_Poliwhirl[]; -extern const u8 gMonIcon_Poliwrath[]; -extern const u8 gMonIcon_Abra[]; -extern const u8 gMonIcon_Kadabra[]; -extern const u8 gMonIcon_Alakazam[]; -extern const u8 gMonIcon_Machop[]; -extern const u8 gMonIcon_Machoke[]; -extern const u8 gMonIcon_Machamp[]; -extern const u8 gMonIcon_Bellsprout[]; -extern const u8 gMonIcon_Weepinbell[]; -extern const u8 gMonIcon_Victreebel[]; -extern const u8 gMonIcon_Tentacool[]; -extern const u8 gMonIcon_Tentacruel[]; -extern const u8 gMonIcon_Geodude[]; -extern const u8 gMonIcon_Graveler[]; -extern const u8 gMonIcon_Golem[]; -extern const u8 gMonIcon_Ponyta[]; -extern const u8 gMonIcon_Rapidash[]; -extern const u8 gMonIcon_Slowpoke[]; -extern const u8 gMonIcon_Slowbro[]; -extern const u8 gMonIcon_Magnemite[]; -extern const u8 gMonIcon_Magneton[]; -extern const u8 gMonIcon_Farfetchd[]; -extern const u8 gMonIcon_Doduo[]; -extern const u8 gMonIcon_Dodrio[]; -extern const u8 gMonIcon_Seel[]; -extern const u8 gMonIcon_Dewgong[]; -extern const u8 gMonIcon_Grimer[]; -extern const u8 gMonIcon_Muk[]; -extern const u8 gMonIcon_Shellder[]; -extern const u8 gMonIcon_Cloyster[]; -extern const u8 gMonIcon_Gastly[]; -extern const u8 gMonIcon_Haunter[]; -extern const u8 gMonIcon_Gengar[]; -extern const u8 gMonIcon_Onix[]; -extern const u8 gMonIcon_Drowzee[]; -extern const u8 gMonIcon_Hypno[]; -extern const u8 gMonIcon_Krabby[]; -extern const u8 gMonIcon_Kingler[]; -extern const u8 gMonIcon_Voltorb[]; -extern const u8 gMonIcon_Electrode[]; -extern const u8 gMonIcon_Exeggcute[]; -extern const u8 gMonIcon_Exeggutor[]; -extern const u8 gMonIcon_Cubone[]; -extern const u8 gMonIcon_Marowak[]; -extern const u8 gMonIcon_Hitmonlee[]; -extern const u8 gMonIcon_Hitmonchan[]; -extern const u8 gMonIcon_Lickitung[]; -extern const u8 gMonIcon_Koffing[]; -extern const u8 gMonIcon_Weezing[]; -extern const u8 gMonIcon_Rhyhorn[]; -extern const u8 gMonIcon_Rhydon[]; -extern const u8 gMonIcon_Chansey[]; -extern const u8 gMonIcon_Tangela[]; -extern const u8 gMonIcon_Kangaskhan[]; -extern const u8 gMonIcon_Horsea[]; -extern const u8 gMonIcon_Seadra[]; -extern const u8 gMonIcon_Goldeen[]; -extern const u8 gMonIcon_Seaking[]; -extern const u8 gMonIcon_Staryu[]; -extern const u8 gMonIcon_Starmie[]; -extern const u8 gMonIcon_MrMime[]; -extern const u8 gMonIcon_Scyther[]; -extern const u8 gMonIcon_Jynx[]; -extern const u8 gMonIcon_Electabuzz[]; -extern const u8 gMonIcon_Magmar[]; -extern const u8 gMonIcon_Pinsir[]; -extern const u8 gMonIcon_Tauros[]; -extern const u8 gMonIcon_Magikarp[]; -extern const u8 gMonIcon_Gyarados[]; -extern const u8 gMonIcon_Lapras[]; -extern const u8 gMonIcon_Ditto[]; -extern const u8 gMonIcon_Eevee[]; -extern const u8 gMonIcon_Vaporeon[]; -extern const u8 gMonIcon_Jolteon[]; -extern const u8 gMonIcon_Flareon[]; -extern const u8 gMonIcon_Porygon[]; -extern const u8 gMonIcon_Omanyte[]; -extern const u8 gMonIcon_Omastar[]; -extern const u8 gMonIcon_Kabuto[]; -extern const u8 gMonIcon_Kabutops[]; -extern const u8 gMonIcon_Aerodactyl[]; -extern const u8 gMonIcon_Snorlax[]; -extern const u8 gMonIcon_Articuno[]; -extern const u8 gMonIcon_Zapdos[]; -extern const u8 gMonIcon_Moltres[]; -extern const u8 gMonIcon_Dratini[]; -extern const u8 gMonIcon_Dragonair[]; -extern const u8 gMonIcon_Dragonite[]; -extern const u8 gMonIcon_Mewtwo[]; -extern const u8 gMonIcon_Mew[]; -extern const u8 gMonIcon_Chikorita[]; -extern const u8 gMonIcon_Bayleef[]; -extern const u8 gMonIcon_Meganium[]; -extern const u8 gMonIcon_Cyndaquil[]; -extern const u8 gMonIcon_Quilava[]; -extern const u8 gMonIcon_Typhlosion[]; -extern const u8 gMonIcon_Totodile[]; -extern const u8 gMonIcon_Croconaw[]; -extern const u8 gMonIcon_Feraligatr[]; -extern const u8 gMonIcon_Sentret[]; -extern const u8 gMonIcon_Furret[]; -extern const u8 gMonIcon_Hoothoot[]; -extern const u8 gMonIcon_Noctowl[]; -extern const u8 gMonIcon_Ledyba[]; -extern const u8 gMonIcon_Ledian[]; -extern const u8 gMonIcon_Spinarak[]; -extern const u8 gMonIcon_Ariados[]; -extern const u8 gMonIcon_Crobat[]; -extern const u8 gMonIcon_Chinchou[]; -extern const u8 gMonIcon_Lanturn[]; -extern const u8 gMonIcon_Pichu[]; -extern const u8 gMonIcon_Cleffa[]; -extern const u8 gMonIcon_Igglybuff[]; -extern const u8 gMonIcon_Togepi[]; -extern const u8 gMonIcon_Togetic[]; -extern const u8 gMonIcon_Natu[]; -extern const u8 gMonIcon_Xatu[]; -extern const u8 gMonIcon_Mareep[]; -extern const u8 gMonIcon_Flaaffy[]; -extern const u8 gMonIcon_Ampharos[]; -extern const u8 gMonIcon_Bellossom[]; -extern const u8 gMonIcon_Marill[]; -extern const u8 gMonIcon_Azumarill[]; -extern const u8 gMonIcon_Sudowoodo[]; -extern const u8 gMonIcon_Politoed[]; -extern const u8 gMonIcon_Hoppip[]; -extern const u8 gMonIcon_Skiploom[]; -extern const u8 gMonIcon_Jumpluff[]; -extern const u8 gMonIcon_Aipom[]; -extern const u8 gMonIcon_Sunkern[]; -extern const u8 gMonIcon_Sunflora[]; -extern const u8 gMonIcon_Yanma[]; -extern const u8 gMonIcon_Wooper[]; -extern const u8 gMonIcon_Quagsire[]; -extern const u8 gMonIcon_Espeon[]; -extern const u8 gMonIcon_Umbreon[]; -extern const u8 gMonIcon_Murkrow[]; -extern const u8 gMonIcon_Slowking[]; -extern const u8 gMonIcon_Misdreavus[]; -extern const u8 gMonIcon_Unown[]; -extern const u8 gMonIcon_Wobbuffet[]; -extern const u8 gMonIcon_Girafarig[]; -extern const u8 gMonIcon_Pineco[]; -extern const u8 gMonIcon_Forretress[]; -extern const u8 gMonIcon_Dunsparce[]; -extern const u8 gMonIcon_Gligar[]; -extern const u8 gMonIcon_Steelix[]; -extern const u8 gMonIcon_Snubbull[]; -extern const u8 gMonIcon_Granbull[]; -extern const u8 gMonIcon_Qwilfish[]; -extern const u8 gMonIcon_Scizor[]; -extern const u8 gMonIcon_Shuckle[]; -extern const u8 gMonIcon_Heracross[]; -extern const u8 gMonIcon_Sneasel[]; -extern const u8 gMonIcon_Teddiursa[]; -extern const u8 gMonIcon_Ursaring[]; -extern const u8 gMonIcon_Slugma[]; -extern const u8 gMonIcon_Magcargo[]; -extern const u8 gMonIcon_Swinub[]; -extern const u8 gMonIcon_Piloswine[]; -extern const u8 gMonIcon_Corsola[]; -extern const u8 gMonIcon_Remoraid[]; -extern const u8 gMonIcon_Octillery[]; -extern const u8 gMonIcon_Delibird[]; -extern const u8 gMonIcon_Mantine[]; -extern const u8 gMonIcon_Skarmory[]; -extern const u8 gMonIcon_Houndour[]; -extern const u8 gMonIcon_Houndoom[]; -extern const u8 gMonIcon_Kingdra[]; -extern const u8 gMonIcon_Phanpy[]; -extern const u8 gMonIcon_Donphan[]; -extern const u8 gMonIcon_Porygon2[]; -extern const u8 gMonIcon_Stantler[]; -extern const u8 gMonIcon_Smeargle[]; -extern const u8 gMonIcon_Tyrogue[]; -extern const u8 gMonIcon_Hitmontop[]; -extern const u8 gMonIcon_Smoochum[]; -extern const u8 gMonIcon_Elekid[]; -extern const u8 gMonIcon_Magby[]; -extern const u8 gMonIcon_Miltank[]; -extern const u8 gMonIcon_Blissey[]; -extern const u8 gMonIcon_Raikou[]; -extern const u8 gMonIcon_Entei[]; -extern const u8 gMonIcon_Suicune[]; -extern const u8 gMonIcon_Larvitar[]; -extern const u8 gMonIcon_Pupitar[]; -extern const u8 gMonIcon_Tyranitar[]; -extern const u8 gMonIcon_Lugia[]; -extern const u8 gMonIcon_HoOh[]; -extern const u8 gMonIcon_Celebi[]; -extern const u8 gMonIcon_Treecko[]; -extern const u8 gMonIcon_Grovyle[]; -extern const u8 gMonIcon_Sceptile[]; -extern const u8 gMonIcon_Torchic[]; -extern const u8 gMonIcon_Combusken[]; -extern const u8 gMonIcon_Blaziken[]; -extern const u8 gMonIcon_Mudkip[]; -extern const u8 gMonIcon_Marshtomp[]; -extern const u8 gMonIcon_Swampert[]; -extern const u8 gMonIcon_Poochyena[]; -extern const u8 gMonIcon_Mightyena[]; -extern const u8 gMonIcon_Zigzagoon[]; -extern const u8 gMonIcon_Linoone[]; -extern const u8 gMonIcon_Wurmple[]; -extern const u8 gMonIcon_Silcoon[]; -extern const u8 gMonIcon_Beautifly[]; -extern const u8 gMonIcon_Cascoon[]; -extern const u8 gMonIcon_Dustox[]; -extern const u8 gMonIcon_Lotad[]; -extern const u8 gMonIcon_Lombre[]; -extern const u8 gMonIcon_Ludicolo[]; -extern const u8 gMonIcon_Seedot[]; -extern const u8 gMonIcon_Nuzleaf[]; -extern const u8 gMonIcon_Shiftry[]; -extern const u8 gMonIcon_Taillow[]; -extern const u8 gMonIcon_Swellow[]; -extern const u8 gMonIcon_Wingull[]; -extern const u8 gMonIcon_Pelipper[]; -extern const u8 gMonIcon_Ralts[]; -extern const u8 gMonIcon_Kirlia[]; -extern const u8 gMonIcon_Gardevoir[]; -extern const u8 gMonIcon_Surskit[]; -extern const u8 gMonIcon_Masquerain[]; -extern const u8 gMonIcon_Shroomish[]; -extern const u8 gMonIcon_Breloom[]; -extern const u8 gMonIcon_Slakoth[]; -extern const u8 gMonIcon_Vigoroth[]; -extern const u8 gMonIcon_Slaking[]; -extern const u8 gMonIcon_Nincada[]; -extern const u8 gMonIcon_Ninjask[]; -extern const u8 gMonIcon_Shedinja[]; -extern const u8 gMonIcon_Whismur[]; -extern const u8 gMonIcon_Loudred[]; -extern const u8 gMonIcon_Exploud[]; -extern const u8 gMonIcon_Makuhita[]; -extern const u8 gMonIcon_Hariyama[]; -extern const u8 gMonIcon_Azurill[]; -extern const u8 gMonIcon_Nosepass[]; -extern const u8 gMonIcon_Skitty[]; -extern const u8 gMonIcon_Delcatty[]; -extern const u8 gMonIcon_Sableye[]; -extern const u8 gMonIcon_Mawile[]; -extern const u8 gMonIcon_Aron[]; -extern const u8 gMonIcon_Lairon[]; -extern const u8 gMonIcon_Aggron[]; -extern const u8 gMonIcon_Meditite[]; -extern const u8 gMonIcon_Medicham[]; -extern const u8 gMonIcon_Electrike[]; -extern const u8 gMonIcon_Manectric[]; -extern const u8 gMonIcon_Plusle[]; -extern const u8 gMonIcon_Minun[]; -extern const u8 gMonIcon_Volbeat[]; -extern const u8 gMonIcon_Illumise[]; -extern const u8 gMonIcon_Roselia[]; -extern const u8 gMonIcon_Gulpin[]; -extern const u8 gMonIcon_Swalot[]; -extern const u8 gMonIcon_Carvanha[]; -extern const u8 gMonIcon_Sharpedo[]; -extern const u8 gMonIcon_Wailmer[]; -extern const u8 gMonIcon_Wailord[]; -extern const u8 gMonIcon_Numel[]; -extern const u8 gMonIcon_Camerupt[]; -extern const u8 gMonIcon_Torkoal[]; -extern const u8 gMonIcon_Spoink[]; -extern const u8 gMonIcon_Grumpig[]; -extern const u8 gMonIcon_Spinda[]; -extern const u8 gMonIcon_Trapinch[]; -extern const u8 gMonIcon_Vibrava[]; -extern const u8 gMonIcon_Flygon[]; -extern const u8 gMonIcon_Cacnea[]; -extern const u8 gMonIcon_Cacturne[]; -extern const u8 gMonIcon_Swablu[]; -extern const u8 gMonIcon_Altaria[]; -extern const u8 gMonIcon_Zangoose[]; -extern const u8 gMonIcon_Seviper[]; -extern const u8 gMonIcon_Lunatone[]; -extern const u8 gMonIcon_Solrock[]; -extern const u8 gMonIcon_Barboach[]; -extern const u8 gMonIcon_Whiscash[]; -extern const u8 gMonIcon_Corphish[]; -extern const u8 gMonIcon_Crawdaunt[]; -extern const u8 gMonIcon_Baltoy[]; -extern const u8 gMonIcon_Claydol[]; -extern const u8 gMonIcon_Lileep[]; -extern const u8 gMonIcon_Cradily[]; -extern const u8 gMonIcon_Anorith[]; -extern const u8 gMonIcon_Armaldo[]; -extern const u8 gMonIcon_Feebas[]; -extern const u8 gMonIcon_Milotic[]; -extern const u8 gMonIcon_Castform[]; -extern const u8 gMonIcon_Kecleon[]; -extern const u8 gMonIcon_Shuppet[]; -extern const u8 gMonIcon_Banette[]; -extern const u8 gMonIcon_Duskull[]; -extern const u8 gMonIcon_Dusclops[]; -extern const u8 gMonIcon_Tropius[]; -extern const u8 gMonIcon_Chimecho[]; -extern const u8 gMonIcon_Absol[]; -extern const u8 gMonIcon_Wynaut[]; -extern const u8 gMonIcon_Snorunt[]; -extern const u8 gMonIcon_Glalie[]; -extern const u8 gMonIcon_Spheal[]; -extern const u8 gMonIcon_Sealeo[]; -extern const u8 gMonIcon_Walrein[]; -extern const u8 gMonIcon_Clamperl[]; -extern const u8 gMonIcon_Huntail[]; -extern const u8 gMonIcon_Gorebyss[]; -extern const u8 gMonIcon_Relicanth[]; -extern const u8 gMonIcon_Luvdisc[]; -extern const u8 gMonIcon_Bagon[]; -extern const u8 gMonIcon_Shelgon[]; -extern const u8 gMonIcon_Salamence[]; -extern const u8 gMonIcon_Beldum[]; -extern const u8 gMonIcon_Metang[]; -extern const u8 gMonIcon_Metagross[]; -extern const u8 gMonIcon_Regirock[]; -extern const u8 gMonIcon_Regice[]; -extern const u8 gMonIcon_Registeel[]; -extern const u8 gMonIcon_Latias[]; -extern const u8 gMonIcon_Latios[]; -extern const u8 gMonIcon_Kyogre[]; -extern const u8 gMonIcon_Groudon[]; -extern const u8 gMonIcon_Rayquaza[]; -extern const u8 gMonIcon_Jirachi[]; -extern const u8 gMonIcon_Deoxys[]; -#if P_GEN_4_POKEMON == TRUE -extern const u8 gMonIcon_Turtwig[]; -extern const u8 gMonIcon_Grotle[]; -extern const u8 gMonIcon_Torterra[]; -extern const u8 gMonIcon_Chimchar[]; -extern const u8 gMonIcon_Monferno[]; -extern const u8 gMonIcon_Infernape[]; -extern const u8 gMonIcon_Piplup[]; -extern const u8 gMonIcon_Prinplup[]; -extern const u8 gMonIcon_Empoleon[]; -extern const u8 gMonIcon_Starly[]; -extern const u8 gMonIcon_Staravia[]; -extern const u8 gMonIcon_Staraptor[]; -extern const u8 gMonIcon_Bidoof[]; -extern const u8 gMonIcon_Bibarel[]; -extern const u8 gMonIcon_Kricketot[]; -extern const u8 gMonIcon_Kricketune[]; -extern const u8 gMonIcon_Shinx[]; -extern const u8 gMonIcon_Luxio[]; -extern const u8 gMonIcon_Luxray[]; -extern const u8 gMonIcon_Budew[]; -extern const u8 gMonIcon_Roserade[]; -extern const u8 gMonIcon_Cranidos[]; -extern const u8 gMonIcon_Rampardos[]; -extern const u8 gMonIcon_Shieldon[]; -extern const u8 gMonIcon_Bastiodon[]; -extern const u8 gMonIcon_Burmy[]; -extern const u8 gMonIcon_Wormadam[]; -extern const u8 gMonIcon_Mothim[]; -extern const u8 gMonIcon_Combee[]; -extern const u8 gMonIcon_Vespiquen[]; -extern const u8 gMonIcon_Pachirisu[]; -extern const u8 gMonIcon_Buizel[]; -extern const u8 gMonIcon_Floatzel[]; -extern const u8 gMonIcon_Cherubi[]; -extern const u8 gMonIcon_Cherrim[]; -extern const u8 gMonIcon_Shellos[]; -extern const u8 gMonIcon_Gastrodon[]; -extern const u8 gMonIcon_Ambipom[]; -extern const u8 gMonIcon_Drifloon[]; -extern const u8 gMonIcon_Drifblim[]; -extern const u8 gMonIcon_Buneary[]; -extern const u8 gMonIcon_Lopunny[]; -extern const u8 gMonIcon_Mismagius[]; -extern const u8 gMonIcon_Honchkrow[]; -extern const u8 gMonIcon_Glameow[]; -extern const u8 gMonIcon_Purugly[]; -extern const u8 gMonIcon_Chingling[]; -extern const u8 gMonIcon_Stunky[]; -extern const u8 gMonIcon_Skuntank[]; -extern const u8 gMonIcon_Bronzor[]; -extern const u8 gMonIcon_Bronzong[]; -extern const u8 gMonIcon_Bonsly[]; -extern const u8 gMonIcon_MimeJr[]; -extern const u8 gMonIcon_Happiny[]; -extern const u8 gMonIcon_Chatot[]; -extern const u8 gMonIcon_Spiritomb[]; -extern const u8 gMonIcon_Gible[]; -extern const u8 gMonIcon_Gabite[]; -extern const u8 gMonIcon_Garchomp[]; -extern const u8 gMonIcon_Munchlax[]; -extern const u8 gMonIcon_Riolu[]; -extern const u8 gMonIcon_Lucario[]; -extern const u8 gMonIcon_Hippopotas[]; -extern const u8 gMonIcon_Hippowdon[]; -#if P_HIPPO_GENDER_DIFF_ICONS == TRUE -extern const u8 gMonIcon_HippopotasF[]; -extern const u8 gMonIcon_HippowdonF[]; -#endif -extern const u8 gMonIcon_Skorupi[]; -extern const u8 gMonIcon_Drapion[]; -extern const u8 gMonIcon_Croagunk[]; -extern const u8 gMonIcon_Toxicroak[]; -extern const u8 gMonIcon_Carnivine[]; -extern const u8 gMonIcon_Finneon[]; -extern const u8 gMonIcon_Lumineon[]; -extern const u8 gMonIcon_Mantyke[]; -extern const u8 gMonIcon_Snover[]; -extern const u8 gMonIcon_Abomasnow[]; -extern const u8 gMonIcon_Weavile[]; -extern const u8 gMonIcon_Magnezone[]; -extern const u8 gMonIcon_Lickilicky[]; -extern const u8 gMonIcon_Rhyperior[]; -extern const u8 gMonIcon_Tangrowth[]; -extern const u8 gMonIcon_Electivire[]; -extern const u8 gMonIcon_Magmortar[]; -extern const u8 gMonIcon_Togekiss[]; -extern const u8 gMonIcon_Yanmega[]; -extern const u8 gMonIcon_Leafeon[]; -extern const u8 gMonIcon_Glaceon[]; -extern const u8 gMonIcon_Gliscor[]; -extern const u8 gMonIcon_Mamoswine[]; -extern const u8 gMonIcon_Porygon_Z[]; -extern const u8 gMonIcon_Gallade[]; -extern const u8 gMonIcon_Probopass[]; -extern const u8 gMonIcon_Dusknoir[]; -extern const u8 gMonIcon_Froslass[]; -extern const u8 gMonIcon_Rotom[]; -extern const u8 gMonIcon_Uxie[]; -extern const u8 gMonIcon_Mesprit[]; -extern const u8 gMonIcon_Azelf[]; -extern const u8 gMonIcon_Dialga[]; -extern const u8 gMonIcon_Palkia[]; -extern const u8 gMonIcon_Heatran[]; -extern const u8 gMonIcon_Regigigas[]; -extern const u8 gMonIcon_Giratina[]; -extern const u8 gMonIcon_Cresselia[]; -extern const u8 gMonIcon_Phione[]; -extern const u8 gMonIcon_Manaphy[]; -extern const u8 gMonIcon_Darkrai[]; -extern const u8 gMonIcon_Shaymin[]; -extern const u8 gMonIcon_Arceus[]; -#endif -#if P_GEN_5_POKEMON == TRUE -extern const u8 gMonIcon_Victini[]; -extern const u8 gMonIcon_Snivy[]; -extern const u8 gMonIcon_Servine[]; -extern const u8 gMonIcon_Serperior[]; -extern const u8 gMonIcon_Tepig[]; -extern const u8 gMonIcon_Pignite[]; -extern const u8 gMonIcon_Emboar[]; -extern const u8 gMonIcon_Oshawott[]; -extern const u8 gMonIcon_Dewott[]; -extern const u8 gMonIcon_Samurott[]; -extern const u8 gMonIcon_Patrat[]; -extern const u8 gMonIcon_Watchog[]; -extern const u8 gMonIcon_Lillipup[]; -extern const u8 gMonIcon_Herdier[]; -extern const u8 gMonIcon_Stoutland[]; -extern const u8 gMonIcon_Purrloin[]; -extern const u8 gMonIcon_Liepard[]; -extern const u8 gMonIcon_Pansage[]; -extern const u8 gMonIcon_Simisage[]; -extern const u8 gMonIcon_Pansear[]; -extern const u8 gMonIcon_Simisear[]; -extern const u8 gMonIcon_Panpour[]; -extern const u8 gMonIcon_Simipour[]; -extern const u8 gMonIcon_Munna[]; -extern const u8 gMonIcon_Musharna[]; -extern const u8 gMonIcon_Pidove[]; -extern const u8 gMonIcon_Tranquill[]; -extern const u8 gMonIcon_Unfezant[]; -extern const u8 gMonIcon_UnfezantF[]; -extern const u8 gMonIcon_Blitzle[]; -extern const u8 gMonIcon_Zebstrika[]; -extern const u8 gMonIcon_Roggenrola[]; -extern const u8 gMonIcon_Boldore[]; -extern const u8 gMonIcon_Gigalith[]; -extern const u8 gMonIcon_Woobat[]; -extern const u8 gMonIcon_Swoobat[]; -extern const u8 gMonIcon_Drilbur[]; -extern const u8 gMonIcon_Excadrill[]; -extern const u8 gMonIcon_Audino[]; -extern const u8 gMonIcon_Timburr[]; -extern const u8 gMonIcon_Gurdurr[]; -extern const u8 gMonIcon_Conkeldurr[]; -extern const u8 gMonIcon_Tympole[]; -extern const u8 gMonIcon_Palpitoad[]; -extern const u8 gMonIcon_Seismitoad[]; -extern const u8 gMonIcon_Throh[]; -extern const u8 gMonIcon_Sawk[]; -extern const u8 gMonIcon_Sewaddle[]; -extern const u8 gMonIcon_Swadloon[]; -extern const u8 gMonIcon_Leavanny[]; -extern const u8 gMonIcon_Venipede[]; -extern const u8 gMonIcon_Whirlipede[]; -extern const u8 gMonIcon_Scolipede[]; -extern const u8 gMonIcon_Cottonee[]; -extern const u8 gMonIcon_Whimsicott[]; -extern const u8 gMonIcon_Petilil[]; -extern const u8 gMonIcon_Lilligant[]; -extern const u8 gMonIcon_Basculin[]; -extern const u8 gMonIcon_Sandile[]; -extern const u8 gMonIcon_Krokorok[]; -extern const u8 gMonIcon_Krookodile[]; -extern const u8 gMonIcon_Darumaka[]; -extern const u8 gMonIcon_Darmanitan[]; -extern const u8 gMonIcon_Maractus[]; -extern const u8 gMonIcon_Dwebble[]; -extern const u8 gMonIcon_Crustle[]; -extern const u8 gMonIcon_Scraggy[]; -extern const u8 gMonIcon_Scrafty[]; -extern const u8 gMonIcon_Sigilyph[]; -extern const u8 gMonIcon_Yamask[]; -extern const u8 gMonIcon_Cofagrigus[]; -extern const u8 gMonIcon_Tirtouga[]; -extern const u8 gMonIcon_Carracosta[]; -extern const u8 gMonIcon_Archen[]; -extern const u8 gMonIcon_Archeops[]; -extern const u8 gMonIcon_Trubbish[]; -extern const u8 gMonIcon_Garbodor[]; -extern const u8 gMonIcon_Zorua[]; -extern const u8 gMonIcon_Zoroark[]; -extern const u8 gMonIcon_Minccino[]; -extern const u8 gMonIcon_Cinccino[]; -extern const u8 gMonIcon_Gothita[]; -extern const u8 gMonIcon_Gothorita[]; -extern const u8 gMonIcon_Gothitelle[]; -extern const u8 gMonIcon_Solosis[]; -extern const u8 gMonIcon_Duosion[]; -extern const u8 gMonIcon_Reuniclus[]; -extern const u8 gMonIcon_Ducklett[]; -extern const u8 gMonIcon_Swanna[]; -extern const u8 gMonIcon_Vanillite[]; -extern const u8 gMonIcon_Vanillish[]; -extern const u8 gMonIcon_Vanilluxe[]; -extern const u8 gMonIcon_Deerling[]; -extern const u8 gMonIcon_Sawsbuck[]; -extern const u8 gMonIcon_Emolga[]; -extern const u8 gMonIcon_Karrablast[]; -extern const u8 gMonIcon_Escavalier[]; -extern const u8 gMonIcon_Foongus[]; -extern const u8 gMonIcon_Amoonguss[]; -extern const u8 gMonIcon_Frillish[]; -extern const u8 gMonIcon_FrillishF[]; -extern const u8 gMonIcon_Jellicent[]; -extern const u8 gMonIcon_JellicentF[]; -extern const u8 gMonIcon_Alomomola[]; -extern const u8 gMonIcon_Joltik[]; -extern const u8 gMonIcon_Galvantula[]; -extern const u8 gMonIcon_Ferroseed[]; -extern const u8 gMonIcon_Ferrothorn[]; -extern const u8 gMonIcon_Klink[]; -extern const u8 gMonIcon_Klang[]; -extern const u8 gMonIcon_Klinklang[]; -extern const u8 gMonIcon_Tynamo[]; -extern const u8 gMonIcon_Eelektrik[]; -extern const u8 gMonIcon_Eelektross[]; -extern const u8 gMonIcon_Elgyem[]; -extern const u8 gMonIcon_Beheeyem[]; -extern const u8 gMonIcon_Litwick[]; -extern const u8 gMonIcon_Lampent[]; -extern const u8 gMonIcon_Chandelure[]; -extern const u8 gMonIcon_Axew[]; -extern const u8 gMonIcon_Fraxure[]; -extern const u8 gMonIcon_Haxorus[]; -extern const u8 gMonIcon_Cubchoo[]; -extern const u8 gMonIcon_Beartic[]; -extern const u8 gMonIcon_Cryogonal[]; -extern const u8 gMonIcon_Shelmet[]; -extern const u8 gMonIcon_Accelgor[]; -extern const u8 gMonIcon_Stunfisk[]; -extern const u8 gMonIcon_Mienfoo[]; -extern const u8 gMonIcon_Mienshao[]; -extern const u8 gMonIcon_Druddigon[]; -extern const u8 gMonIcon_Golett[]; -extern const u8 gMonIcon_Golurk[]; -extern const u8 gMonIcon_Pawniard[]; -extern const u8 gMonIcon_Bisharp[]; -extern const u8 gMonIcon_Bouffalant[]; -extern const u8 gMonIcon_Rufflet[]; -extern const u8 gMonIcon_Braviary[]; -extern const u8 gMonIcon_Vullaby[]; -extern const u8 gMonIcon_Mandibuzz[]; -extern const u8 gMonIcon_Heatmor[]; -extern const u8 gMonIcon_Durant[]; -extern const u8 gMonIcon_Deino[]; -extern const u8 gMonIcon_Zweilous[]; -extern const u8 gMonIcon_Hydreigon[]; -extern const u8 gMonIcon_Larvesta[]; -extern const u8 gMonIcon_Volcarona[]; -extern const u8 gMonIcon_Cobalion[]; -extern const u8 gMonIcon_Terrakion[]; -extern const u8 gMonIcon_Virizion[]; -extern const u8 gMonIcon_Tornadus[]; -extern const u8 gMonIcon_Thundurus[]; -extern const u8 gMonIcon_Reshiram[]; -extern const u8 gMonIcon_Zekrom[]; -extern const u8 gMonIcon_Landorus[]; -extern const u8 gMonIcon_Kyurem[]; -extern const u8 gMonIcon_Keldeo[]; -extern const u8 gMonIcon_Meloetta[]; -extern const u8 gMonIcon_Genesect[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u8 gMonIcon_Chespin[]; -extern const u8 gMonIcon_Quilladin[]; -extern const u8 gMonIcon_Chesnaught[]; -extern const u8 gMonIcon_Fennekin[]; -extern const u8 gMonIcon_Braixen[]; -extern const u8 gMonIcon_Delphox[]; -extern const u8 gMonIcon_Froakie[]; -extern const u8 gMonIcon_Frogadier[]; -extern const u8 gMonIcon_Greninja[]; -extern const u8 gMonIcon_Bunnelby[]; -extern const u8 gMonIcon_Diggersby[]; -extern const u8 gMonIcon_Fletchling[]; -extern const u8 gMonIcon_Fletchinder[]; -extern const u8 gMonIcon_Talonflame[]; -extern const u8 gMonIcon_Scatterbug[]; -extern const u8 gMonIcon_Spewpa[]; -extern const u8 gMonIcon_Vivillon[]; -extern const u8 gMonIcon_Litleo[]; -extern const u8 gMonIcon_Pyroar[]; -extern const u8 gMonIcon_PyroarF[]; -extern const u8 gMonIcon_Flabebe[]; -extern const u8 gMonIcon_Floette[]; -extern const u8 gMonIcon_Florges[]; -extern const u8 gMonIcon_Skiddo[]; -extern const u8 gMonIcon_Gogoat[]; -extern const u8 gMonIcon_Pancham[]; -extern const u8 gMonIcon_Pangoro[]; -extern const u8 gMonIcon_Furfrou[]; -extern const u8 gMonIcon_Espurr[]; -extern const u8 gMonIcon_Meowstic[]; -extern const u8 gMonIcon_Honedge[]; -extern const u8 gMonIcon_Doublade[]; -extern const u8 gMonIcon_Aegislash[]; -extern const u8 gMonIcon_Spritzee[]; -extern const u8 gMonIcon_Aromatisse[]; -extern const u8 gMonIcon_Swirlix[]; -extern const u8 gMonIcon_Slurpuff[]; -extern const u8 gMonIcon_Inkay[]; -extern const u8 gMonIcon_Malamar[]; -extern const u8 gMonIcon_Binacle[]; -extern const u8 gMonIcon_Barbaracle[]; -extern const u8 gMonIcon_Skrelp[]; -extern const u8 gMonIcon_Dragalge[]; -extern const u8 gMonIcon_Clauncher[]; -extern const u8 gMonIcon_Clawitzer[]; -extern const u8 gMonIcon_Helioptile[]; -extern const u8 gMonIcon_Heliolisk[]; -extern const u8 gMonIcon_Tyrunt[]; -extern const u8 gMonIcon_Tyrantrum[]; -extern const u8 gMonIcon_Amaura[]; -extern const u8 gMonIcon_Aurorus[]; -extern const u8 gMonIcon_Sylveon[]; -extern const u8 gMonIcon_Hawlucha[]; -extern const u8 gMonIcon_Dedenne[]; -extern const u8 gMonIcon_Carbink[]; -extern const u8 gMonIcon_Goomy[]; -extern const u8 gMonIcon_Sliggoo[]; -extern const u8 gMonIcon_Goodra[]; -extern const u8 gMonIcon_Klefki[]; -extern const u8 gMonIcon_Phantump[]; -extern const u8 gMonIcon_Trevenant[]; -extern const u8 gMonIcon_Pumpkaboo[]; -extern const u8 gMonIcon_Gourgeist[]; -extern const u8 gMonIcon_Bergmite[]; -extern const u8 gMonIcon_Avalugg[]; -extern const u8 gMonIcon_Noibat[]; -extern const u8 gMonIcon_Noivern[]; -extern const u8 gMonIcon_Xerneas[]; -extern const u8 gMonIcon_Yveltal[]; -extern const u8 gMonIcon_Zygarde[]; -extern const u8 gMonIcon_Diancie[]; -extern const u8 gMonIcon_Hoopa[]; -extern const u8 gMonIcon_Volcanion[]; -#endif -#if P_GEN_7_POKEMON == TRUE -extern const u8 gMonIcon_Rowlet[]; -extern const u8 gMonIcon_Dartrix[]; -extern const u8 gMonIcon_Decidueye[]; -extern const u8 gMonIcon_Litten[]; -extern const u8 gMonIcon_Torracat[]; -extern const u8 gMonIcon_Incineroar[]; -extern const u8 gMonIcon_Popplio[]; -extern const u8 gMonIcon_Brionne[]; -extern const u8 gMonIcon_Primarina[]; -extern const u8 gMonIcon_Pikipek[]; -extern const u8 gMonIcon_Trumbeak[]; -extern const u8 gMonIcon_Toucannon[]; -extern const u8 gMonIcon_Yungoos[]; -extern const u8 gMonIcon_Gumshoos[]; -extern const u8 gMonIcon_Grubbin[]; -extern const u8 gMonIcon_Charjabug[]; -extern const u8 gMonIcon_Vikavolt[]; -extern const u8 gMonIcon_Crabrawler[]; -extern const u8 gMonIcon_Crabominable[]; -extern const u8 gMonIcon_Oricorio[]; -extern const u8 gMonIcon_Cutiefly[]; -extern const u8 gMonIcon_Ribombee[]; -extern const u8 gMonIcon_Rockruff[]; -extern const u8 gMonIcon_Lycanroc[]; -extern const u8 gMonIcon_Wishiwashi[]; -extern const u8 gMonIcon_Mareanie[]; -extern const u8 gMonIcon_Toxapex[]; -extern const u8 gMonIcon_Mudbray[]; -extern const u8 gMonIcon_Mudsdale[]; -extern const u8 gMonIcon_Dewpider[]; -extern const u8 gMonIcon_Araquanid[]; -extern const u8 gMonIcon_Fomantis[]; -extern const u8 gMonIcon_Lurantis[]; -extern const u8 gMonIcon_Morelull[]; -extern const u8 gMonIcon_Shiinotic[]; -extern const u8 gMonIcon_Salandit[]; -extern const u8 gMonIcon_Salazzle[]; -extern const u8 gMonIcon_Stufful[]; -extern const u8 gMonIcon_Bewear[]; -extern const u8 gMonIcon_Bounsweet[]; -extern const u8 gMonIcon_Steenee[]; -extern const u8 gMonIcon_Tsareena[]; -extern const u8 gMonIcon_Comfey[]; -extern const u8 gMonIcon_Oranguru[]; -extern const u8 gMonIcon_Passimian[]; -extern const u8 gMonIcon_Wimpod[]; -extern const u8 gMonIcon_Golisopod[]; -extern const u8 gMonIcon_Sandygast[]; -extern const u8 gMonIcon_Palossand[]; -extern const u8 gMonIcon_Pyukumuku[]; -extern const u8 gMonIcon_TypeNull[]; -extern const u8 gMonIcon_Silvally[]; -extern const u8 gMonIcon_Minior[]; -extern const u8 gMonIcon_Komala[]; -extern const u8 gMonIcon_Turtonator[]; -extern const u8 gMonIcon_Togedemaru[]; -extern const u8 gMonIcon_Mimikyu[]; -extern const u8 gMonIcon_Bruxish[]; -extern const u8 gMonIcon_Drampa[]; -extern const u8 gMonIcon_Dhelmise[]; -extern const u8 gMonIcon_JangmoO[]; -extern const u8 gMonIcon_HakamoO[]; -extern const u8 gMonIcon_KommoO[]; -extern const u8 gMonIcon_TapuKoko[]; -extern const u8 gMonIcon_TapuLele[]; -extern const u8 gMonIcon_TapuBulu[]; -extern const u8 gMonIcon_TapuFini[]; -extern const u8 gMonIcon_Cosmog[]; -extern const u8 gMonIcon_Cosmoem[]; -extern const u8 gMonIcon_Solgaleo[]; -extern const u8 gMonIcon_Lunala[]; -extern const u8 gMonIcon_Nihilego[]; -extern const u8 gMonIcon_Buzzwole[]; -extern const u8 gMonIcon_Pheromosa[]; -extern const u8 gMonIcon_Xurkitree[]; -extern const u8 gMonIcon_Celesteela[]; -extern const u8 gMonIcon_Kartana[]; -extern const u8 gMonIcon_Guzzlord[]; -extern const u8 gMonIcon_Necrozma[]; -extern const u8 gMonIcon_Magearna[]; -extern const u8 gMonIcon_Marshadow[]; -extern const u8 gMonIcon_Poipole[]; -extern const u8 gMonIcon_Naganadel[]; -extern const u8 gMonIcon_Stakataka[]; -extern const u8 gMonIcon_Blacephalon[]; -extern const u8 gMonIcon_Zeraora[]; -extern const u8 gMonIcon_Meltan[]; -extern const u8 gMonIcon_Melmetal[]; -#endif -#if P_GEN_8_POKEMON == TRUE -extern const u8 gMonIcon_Grookey[]; -extern const u8 gMonIcon_Thwackey[]; -extern const u8 gMonIcon_Rillaboom[]; -extern const u8 gMonIcon_Scorbunny[]; -extern const u8 gMonIcon_Raboot[]; -extern const u8 gMonIcon_Cinderace[]; -extern const u8 gMonIcon_Sobble[]; -extern const u8 gMonIcon_Drizzile[]; -extern const u8 gMonIcon_Inteleon[]; -extern const u8 gMonIcon_Skwovet[]; -extern const u8 gMonIcon_Greedent[]; -extern const u8 gMonIcon_Rookidee[]; -extern const u8 gMonIcon_Corvisquire[]; -extern const u8 gMonIcon_Corviknight[]; -extern const u8 gMonIcon_Blipbug[]; -extern const u8 gMonIcon_Dottler[]; -extern const u8 gMonIcon_Orbeetle[]; -extern const u8 gMonIcon_Nickit[]; -extern const u8 gMonIcon_Thievul[]; -extern const u8 gMonIcon_Gossifleur[]; -extern const u8 gMonIcon_Eldegoss[]; -extern const u8 gMonIcon_Wooloo[]; -extern const u8 gMonIcon_Dubwool[]; -extern const u8 gMonIcon_Chewtle[]; -extern const u8 gMonIcon_Drednaw[]; -extern const u8 gMonIcon_Yamper[]; -extern const u8 gMonIcon_Boltund[]; -extern const u8 gMonIcon_Rolycoly[]; -extern const u8 gMonIcon_Carkol[]; -extern const u8 gMonIcon_Coalossal[]; -extern const u8 gMonIcon_Applin[]; -extern const u8 gMonIcon_Flapple[]; -extern const u8 gMonIcon_Appletun[]; -extern const u8 gMonIcon_Silicobra[]; -extern const u8 gMonIcon_Sandaconda[]; -extern const u8 gMonIcon_Cramorant[]; -extern const u8 gMonIcon_Arrokuda[]; -extern const u8 gMonIcon_Barraskewda[]; -extern const u8 gMonIcon_Toxel[]; -extern const u8 gMonIcon_Toxtricity[]; -extern const u8 gMonIcon_Sizzlipede[]; -extern const u8 gMonIcon_Centiskorch[]; -extern const u8 gMonIcon_Clobbopus[]; -extern const u8 gMonIcon_Grapploct[]; -extern const u8 gMonIcon_Sinistea[]; -extern const u8 gMonIcon_Polteageist[]; -extern const u8 gMonIcon_Hatenna[]; -extern const u8 gMonIcon_Hattrem[]; -extern const u8 gMonIcon_Hatterene[]; -extern const u8 gMonIcon_Impidimp[]; -extern const u8 gMonIcon_Morgrem[]; -extern const u8 gMonIcon_Grimmsnarl[]; -extern const u8 gMonIcon_Obstagoon[]; -extern const u8 gMonIcon_Perrserker[]; -extern const u8 gMonIcon_Cursola[]; -extern const u8 gMonIcon_Sirfetchd[]; -extern const u8 gMonIcon_MrRime[]; -extern const u8 gMonIcon_Runerigus[]; -extern const u8 gMonIcon_Milcery[]; -extern const u8 gMonIcon_Alcremie[]; -extern const u8 gMonIcon_Falinks[]; -extern const u8 gMonIcon_Pincurchin[]; -extern const u8 gMonIcon_Snom[]; -extern const u8 gMonIcon_Frosmoth[]; -extern const u8 gMonIcon_Stonjourner[]; -extern const u8 gMonIcon_Eiscue[]; -extern const u8 gMonIcon_Indeedee[]; -extern const u8 gMonIcon_Morpeko[]; -extern const u8 gMonIcon_Cufant[]; -extern const u8 gMonIcon_Copperajah[]; -extern const u8 gMonIcon_Dracozolt[]; -extern const u8 gMonIcon_Arctozolt[]; -extern const u8 gMonIcon_Dracovish[]; -extern const u8 gMonIcon_Arctovish[]; -extern const u8 gMonIcon_Duraludon[]; -extern const u8 gMonIcon_Dreepy[]; -extern const u8 gMonIcon_Drakloak[]; -extern const u8 gMonIcon_Dragapult[]; -extern const u8 gMonIcon_Zacian[]; -extern const u8 gMonIcon_Zamazenta[]; -extern const u8 gMonIcon_Eternatus[]; -extern const u8 gMonIcon_Kubfu[]; -extern const u8 gMonIcon_Urshifu[]; -extern const u8 gMonIcon_Zarude[]; -extern const u8 gMonIcon_Regieleki[]; -extern const u8 gMonIcon_Regidrago[]; -extern const u8 gMonIcon_Glastrier[]; -extern const u8 gMonIcon_Spectrier[]; -extern const u8 gMonIcon_Calyrex[]; -extern const u8 gMonIcon_Wyrdeer[]; -extern const u8 gMonIcon_Kleavor[]; -extern const u8 gMonIcon_Ursaluna[]; -extern const u8 gMonIcon_Basculegion[]; -extern const u8 gMonIcon_Sneasler[]; -extern const u8 gMonIcon_Overqwil[]; -extern const u8 gMonIcon_Enamorus[]; -#endif -extern const u8 gMonIcon_VenusaurMega[]; -extern const u8 gMonIcon_CharizardMegaX[]; -extern const u8 gMonIcon_CharizardMegaY[]; -extern const u8 gMonIcon_BlastoiseMega[]; -extern const u8 gMonIcon_BeedrillMega[]; -extern const u8 gMonIcon_PidgeotMega[]; -extern const u8 gMonIcon_AlakazamMega[]; -extern const u8 gMonIcon_SlowbroMega[]; -extern const u8 gMonIcon_GengarMega[]; -extern const u8 gMonIcon_KangaskhanMega[]; -extern const u8 gMonIcon_PinsirMega[]; -extern const u8 gMonIcon_GyaradosMega[]; -extern const u8 gMonIcon_AerodactylMega[]; -extern const u8 gMonIcon_MewtwoMegaX[]; -extern const u8 gMonIcon_MewtwoMegaY[]; -extern const u8 gMonIcon_AmpharosMega[]; -extern const u8 gMonIcon_SteelixMega[]; -extern const u8 gMonIcon_ScizorMega[]; -extern const u8 gMonIcon_HeracrossMega[]; -extern const u8 gMonIcon_HoundoomMega[]; -extern const u8 gMonIcon_TyranitarMega[]; -extern const u8 gMonIcon_SceptileMega[]; -extern const u8 gMonIcon_BlazikenMega[]; -extern const u8 gMonIcon_SwampertMega[]; -extern const u8 gMonIcon_GardevoirMega[]; -extern const u8 gMonIcon_SableyeMega[]; -extern const u8 gMonIcon_MawileMega[]; -extern const u8 gMonIcon_AggronMega[]; -extern const u8 gMonIcon_MedichamMega[]; -extern const u8 gMonIcon_ManectricMega[]; -extern const u8 gMonIcon_SharpedoMega[]; -extern const u8 gMonIcon_CameruptMega[]; -extern const u8 gMonIcon_AltariaMega[]; -extern const u8 gMonIcon_BanetteMega[]; -extern const u8 gMonIcon_AbsolMega[]; -extern const u8 gMonIcon_GlalieMega[]; -extern const u8 gMonIcon_SalamenceMega[]; -extern const u8 gMonIcon_MetagrossMega[]; -extern const u8 gMonIcon_LatiasMega[]; -extern const u8 gMonIcon_LatiosMega[]; -#if P_GEN_4_POKEMON == TRUE -extern const u8 gMonIcon_LopunnyMega[]; -extern const u8 gMonIcon_GarchompMega[]; -extern const u8 gMonIcon_LucarioMega[]; -extern const u8 gMonIcon_AbomasnowMega[]; -extern const u8 gMonIcon_GalladeMega[]; -#endif -#if P_GEN_5_POKEMON == TRUE -extern const u8 gMonIcon_AudinoMega[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u8 gMonIcon_DiancieMega[]; -#endif -extern const u8 gMonIcon_RayquazaMega[]; -extern const u8 gMonIcon_KyogrePrimal[]; -extern const u8 gMonIcon_GroudonPrimal[]; -extern const u8 gMonIcon_RattataAlolan[]; -extern const u8 gMonIcon_RaticateAlolan[]; -extern const u8 gMonIcon_RaichuAlolan[]; -extern const u8 gMonIcon_SandshrewAlolan[]; -extern const u8 gMonIcon_SandslashAlolan[]; -extern const u8 gMonIcon_VulpixAlolan[]; -extern const u8 gMonIcon_NinetalesAlolan[]; -extern const u8 gMonIcon_DiglettAlolan[]; -extern const u8 gMonIcon_DugtrioAlolan[]; -extern const u8 gMonIcon_MeowthAlolan[]; -extern const u8 gMonIcon_PersianAlolan[]; -extern const u8 gMonIcon_GeodudeAlolan[]; -extern const u8 gMonIcon_GravelerAlolan[]; -extern const u8 gMonIcon_GolemAlolan[]; -extern const u8 gMonIcon_GrimerAlolan[]; -extern const u8 gMonIcon_MukAlolan[]; -extern const u8 gMonIcon_ExeggutorAlolan[]; -extern const u8 gMonIcon_MarowakAlolan[]; -extern const u8 gMonIcon_MeowthGalarian[]; -extern const u8 gMonIcon_PonytaGalarian[]; -extern const u8 gMonIcon_RapidashGalarian[]; -extern const u8 gMonIcon_SlowpokeGalarian[]; -extern const u8 gMonIcon_SlowbroGalarian[]; -extern const u8 gMonIcon_FarfetchdGalarian[]; -extern const u8 gMonIcon_WeezingGalarian[]; -extern const u8 gMonIcon_MrMimeGalarian[]; -extern const u8 gMonIcon_ArticunoGalarian[]; -extern const u8 gMonIcon_ZapdosGalarian[]; -extern const u8 gMonIcon_MoltresGalarian[]; -extern const u8 gMonIcon_SlowkingGalarian[]; -extern const u8 gMonIcon_CorsolaGalarian[]; -extern const u8 gMonIcon_ZigzagoonGalarian[]; -extern const u8 gMonIcon_LinooneGalarian[]; -#if P_GEN_5_POKEMON == TRUE -extern const u8 gMonIcon_DarumakaGalarian[]; -extern const u8 gMonIcon_DarmanitanGalarian[]; -extern const u8 gMonIcon_YamaskGalarian[]; -extern const u8 gMonIcon_StunfiskGalarian[]; -#endif -extern const u8 gMonIcon_GrowlitheHisuian[]; -extern const u8 gMonIcon_ArcanineHisuian[]; -extern const u8 gMonIcon_VoltorbHisuian[]; -extern const u8 gMonIcon_ElectrodeHisuian[]; -extern const u8 gMonIcon_TyphlosionHisuian[]; -extern const u8 gMonIcon_QwilfishHisuian[]; -extern const u8 gMonIcon_SneaselHisuian[]; -#if P_GEN_5_POKEMON == TRUE -extern const u8 gMonIcon_SamurottHisuian[]; -extern const u8 gMonIcon_LilligantHisuian[]; -extern const u8 gMonIcon_ZoruaHisuian[]; -extern const u8 gMonIcon_ZoroarkHisuian[]; -extern const u8 gMonIcon_BraviaryHisuian[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u8 gMonIcon_SliggooHisuian[]; -extern const u8 gMonIcon_GoodraHisuian[]; -extern const u8 gMonIcon_AvaluggHisuian[]; -#endif -#if P_GEN_7_POKEMON == TRUE -extern const u8 gMonIcon_DecidueyeHisuian[]; -#endif -extern const u8 gMonIcon_PikachuCosplay[]; -extern const u8 gMonIcon_PikachuRockStar[]; -extern const u8 gMonIcon_PikachuBelle[]; -extern const u8 gMonIcon_PikachuPopStar[]; -extern const u8 gMonIcon_PikachuPhD[]; -extern const u8 gMonIcon_PikachuLibre[]; -extern const u8 gMonIcon_PikachuOriginalCap[]; -extern const u8 gMonIcon_PikachuHoennCap[]; -extern const u8 gMonIcon_PikachuSinnohCap[]; -extern const u8 gMonIcon_PikachuUnovaCap[]; -extern const u8 gMonIcon_PikachuKalosCap[]; -extern const u8 gMonIcon_PikachuAlolaCap[]; -extern const u8 gMonIcon_PikachuPartnerCap[]; -extern const u8 gMonIcon_PichuSpikyEared[]; -extern const u8 gMonIcon_UnownB[]; -extern const u8 gMonIcon_UnownC[]; -extern const u8 gMonIcon_UnownD[]; -extern const u8 gMonIcon_UnownE[]; -extern const u8 gMonIcon_UnownF[]; -extern const u8 gMonIcon_UnownG[]; -extern const u8 gMonIcon_UnownH[]; -extern const u8 gMonIcon_UnownI[]; -extern const u8 gMonIcon_UnownJ[]; -extern const u8 gMonIcon_UnownK[]; -extern const u8 gMonIcon_UnownL[]; -extern const u8 gMonIcon_UnownM[]; -extern const u8 gMonIcon_UnownN[]; -extern const u8 gMonIcon_UnownO[]; -extern const u8 gMonIcon_UnownP[]; -extern const u8 gMonIcon_UnownQ[]; -extern const u8 gMonIcon_UnownR[]; -extern const u8 gMonIcon_UnownS[]; -extern const u8 gMonIcon_UnownT[]; -extern const u8 gMonIcon_UnownU[]; -extern const u8 gMonIcon_UnownV[]; -extern const u8 gMonIcon_UnownW[]; -extern const u8 gMonIcon_UnownX[]; -extern const u8 gMonIcon_UnownY[]; -extern const u8 gMonIcon_UnownZ[]; -extern const u8 gMonIcon_UnownExclamationMark[]; -extern const u8 gMonIcon_UnownQuestionMark[]; -extern const u8 gMonIcon_CastformSunny[]; -extern const u8 gMonIcon_CastformRainy[]; -extern const u8 gMonIcon_CastformSnowy[]; -extern const u8 gMonIcon_DeoxysAttack[]; -extern const u8 gMonIcon_DeoxysDefense[]; -extern const u8 gMonIcon_DeoxysSpeed[]; -#if P_GEN_4_POKEMON == TRUE -extern const u8 gMonIcon_BurmySandyCloak[]; -extern const u8 gMonIcon_BurmyTrashCloak[]; -extern const u8 gMonIcon_WormadamSandyCloak[]; -extern const u8 gMonIcon_WormadamTrashCloak[]; -extern const u8 gMonIcon_CherrimSunshine[]; -extern const u8 gMonIcon_ShellosEastSea[]; -extern const u8 gMonIcon_GastrodonEastSea[]; -extern const u8 gMonIcon_RotomHeat[]; -extern const u8 gMonIcon_RotomWash[]; -extern const u8 gMonIcon_RotomFrost[]; -extern const u8 gMonIcon_RotomFan[]; -extern const u8 gMonIcon_RotomMow[]; -extern const u8 gMonIcon_DialgaOrigin[]; -extern const u8 gMonIcon_PalkiaOrigin[]; -extern const u8 gMonIcon_GiratinaOrigin[]; -extern const u8 gMonIcon_ShayminSky[]; -#endif -#if P_GEN_5_POKEMON == TRUE -extern const u8 gMonIcon_BasculinBlueStriped[]; -extern const u8 gMonIcon_BasculinWhiteStriped[]; -extern const u8 gMonIcon_DarmanitanZenMode[]; -extern const u8 gMonIcon_DarmanitanZenModeGalarian[]; -extern const u8 gMonIcon_DeerlingSummer[]; -extern const u8 gMonIcon_DeerlingAutumn[]; -extern const u8 gMonIcon_DeerlingWinter[]; -extern const u8 gMonIcon_SawsbuckSummer[]; -extern const u8 gMonIcon_SawsbuckAutumn[]; -extern const u8 gMonIcon_SawsbuckWinter[]; -extern const u8 gMonIcon_TornadusTherian[]; -extern const u8 gMonIcon_ThundurusTherian[]; -extern const u8 gMonIcon_LandorusTherian[]; -extern const u8 gMonIcon_KyuremWhite[]; -extern const u8 gMonIcon_KyuremBlack[]; -extern const u8 gMonIcon_KeldeoResolute[]; -extern const u8 gMonIcon_MeloettaPirouette[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u8 gMonIcon_GreninjaAsh[]; -extern const u8 gMonIcon_VivillonPolar[]; -extern const u8 gMonIcon_VivillonTundra[]; -extern const u8 gMonIcon_VivillonContinental[]; -extern const u8 gMonIcon_VivillonGarden[]; -extern const u8 gMonIcon_VivillonElegant[]; -extern const u8 gMonIcon_VivillonMeadow[]; -extern const u8 gMonIcon_VivillonModern[]; -extern const u8 gMonIcon_VivillonMarine[]; -extern const u8 gMonIcon_VivillonArchipelago[]; -extern const u8 gMonIcon_VivillonHighPlains[]; -extern const u8 gMonIcon_VivillonSandstorm[]; -extern const u8 gMonIcon_VivillonRiver[]; -extern const u8 gMonIcon_VivillonMonsoon[]; -extern const u8 gMonIcon_VivillonSavanna[]; -extern const u8 gMonIcon_VivillonSun[]; -extern const u8 gMonIcon_VivillonOcean[]; -extern const u8 gMonIcon_VivillonJungle[]; -extern const u8 gMonIcon_VivillonFancy[]; -extern const u8 gMonIcon_VivillonPokeBall[]; -extern const u8 gMonIcon_FlabebeYellowFlower[]; -extern const u8 gMonIcon_FlabebeOrangeFlower[]; -extern const u8 gMonIcon_FlabebeBlueFlower[]; -extern const u8 gMonIcon_FlabebeWhiteFlower[]; -extern const u8 gMonIcon_FloetteYellowFlower[]; -extern const u8 gMonIcon_FloetteOrangeFlower[]; -extern const u8 gMonIcon_FloetteBlueFlower[]; -extern const u8 gMonIcon_FloetteWhiteFlower[]; -extern const u8 gMonIcon_FloetteEternalFlower[]; -extern const u8 gMonIcon_FlorgesYellowFlower[]; -extern const u8 gMonIcon_FlorgesOrangeFlower[]; -extern const u8 gMonIcon_FlorgesBlueFlower[]; -extern const u8 gMonIcon_FlorgesWhiteFlower[]; -extern const u8 gMonIcon_FurfrouHeartTrim[]; -extern const u8 gMonIcon_FurfrouStarTrim[]; -extern const u8 gMonIcon_FurfrouDiamondTrim[]; -extern const u8 gMonIcon_FurfrouDebutanteTrim[]; -extern const u8 gMonIcon_FurfrouMatronTrim[]; -extern const u8 gMonIcon_FurfrouDandyTrim[]; -extern const u8 gMonIcon_FurfrouLaReineTrim[]; -extern const u8 gMonIcon_FurfrouKabukiTrim[]; -extern const u8 gMonIcon_FurfrouPharaohTrim[]; -extern const u8 gMonIcon_MeowsticFemale[]; -extern const u8 gMonIcon_AegislashBlade[]; -extern const u8 gMonIcon_XerneasActive[]; -extern const u8 gMonIcon_Zygarde10[]; -extern const u8 gMonIcon_ZygardeComplete[]; -extern const u8 gMonIcon_HoopaUnbound[]; -#endif -#if P_GEN_7_POKEMON == TRUE -extern const u8 gMonIcon_OricorioPomPom[]; -extern const u8 gMonIcon_OricorioPau[]; -extern const u8 gMonIcon_OricorioSensu[]; -extern const u8 gMonIcon_LycanrocMidnight[]; -extern const u8 gMonIcon_LycanrocDusk[]; -extern const u8 gMonIcon_WishiwashiSchool[]; -extern const u8 gMonIcon_MiniorCoreRed[]; -extern const u8 gMonIcon_MiniorCoreOrange[]; -extern const u8 gMonIcon_MiniorCoreYellow[]; -extern const u8 gMonIcon_MiniorCoreGreen[]; -extern const u8 gMonIcon_MiniorCoreBlue[]; -extern const u8 gMonIcon_MiniorCoreIndigo[]; -extern const u8 gMonIcon_MiniorCoreViolet[]; -extern const u8 gMonIcon_MimikyuBusted[]; -extern const u8 gMonIcon_NecrozmaDuskMane[]; -extern const u8 gMonIcon_NecrozmaDawnWings[]; -extern const u8 gMonIcon_NecrozmaUltra[]; -extern const u8 gMonIcon_MagearnaOriginalColor[]; -#endif -#if P_GEN_8_POKEMON == TRUE -extern const u8 gMonIcon_CramorantGulping[]; -extern const u8 gMonIcon_CramorantGorging[]; -extern const u8 gMonIcon_ToxtricityLowKey[]; -//extern const u8 gMonIcon_AlcremieRubyCream[]; -//extern const u8 gMonIcon_AlcremieMatchaCream[]; -//extern const u8 gMonIcon_AlcremieMintCream[]; -//extern const u8 gMonIcon_AlcremieLemonCream[]; -//extern const u8 gMonIcon_AlcremieSaltedCream[]; -//extern const u8 gMonIcon_AlcremieRubySwirl[]; -//extern const u8 gMonIcon_AlcremieCaramelSwirl[]; -//extern const u8 gMonIcon_AlcremieRainbowSwirl[]; -extern const u8 gMonIcon_EiscueNoiceFace[]; -extern const u8 gMonIcon_IndeedeeFemale[]; -extern const u8 gMonIcon_MorpekoHangry[]; -extern const u8 gMonIcon_ZacianCrownedSword[]; -extern const u8 gMonIcon_ZamazentaCrownedShield[]; -extern const u8 gMonIcon_EternatusEternamax[]; -extern const u8 gMonIcon_ZarudeDada[]; -extern const u8 gMonIcon_CalyrexIceRider[]; -extern const u8 gMonIcon_CalyrexShadowRider[]; -extern const u8 gMonIcon_EnamorusTherian[]; -extern const u8 gMonIcon_BasculegionFemale[]; -#endif -extern const u8 gMonIcon_Egg[]; - -extern const u8 gMonFootprint_QuestionMark[]; -extern const u8 gMonFootprint_Bulbasaur[]; -extern const u8 gMonFootprint_Ivysaur[]; -extern const u8 gMonFootprint_Venusaur[]; -extern const u8 gMonFootprint_Charmander[]; -extern const u8 gMonFootprint_Charmeleon[]; -extern const u8 gMonFootprint_Charizard[]; -extern const u8 gMonFootprint_Squirtle[]; -extern const u8 gMonFootprint_Wartortle[]; -extern const u8 gMonFootprint_Blastoise[]; -extern const u8 gMonFootprint_Caterpie[]; -extern const u8 gMonFootprint_Metapod[]; -extern const u8 gMonFootprint_Butterfree[]; -extern const u8 gMonFootprint_Weedle[]; -extern const u8 gMonFootprint_Kakuna[]; -extern const u8 gMonFootprint_Beedrill[]; -extern const u8 gMonFootprint_Pidgey[]; -extern const u8 gMonFootprint_Pidgeotto[]; -extern const u8 gMonFootprint_Pidgeot[]; -extern const u8 gMonFootprint_Rattata[]; -extern const u8 gMonFootprint_Raticate[]; -extern const u8 gMonFootprint_Spearow[]; -extern const u8 gMonFootprint_Fearow[]; -extern const u8 gMonFootprint_Ekans[]; -extern const u8 gMonFootprint_Arbok[]; -extern const u8 gMonFootprint_Pikachu[]; -extern const u8 gMonFootprint_Raichu[]; -extern const u8 gMonFootprint_Sandshrew[]; -extern const u8 gMonFootprint_Sandslash[]; -extern const u8 gMonFootprint_NidoranF[]; -extern const u8 gMonFootprint_Nidorina[]; -extern const u8 gMonFootprint_Nidoqueen[]; -extern const u8 gMonFootprint_NidoranM[]; -extern const u8 gMonFootprint_Nidorino[]; -extern const u8 gMonFootprint_Nidoking[]; -extern const u8 gMonFootprint_Clefairy[]; -extern const u8 gMonFootprint_Clefable[]; -extern const u8 gMonFootprint_Vulpix[]; -extern const u8 gMonFootprint_Ninetales[]; -extern const u8 gMonFootprint_Jigglypuff[]; -extern const u8 gMonFootprint_Wigglytuff[]; -extern const u8 gMonFootprint_Zubat[]; -extern const u8 gMonFootprint_Golbat[]; -extern const u8 gMonFootprint_Oddish[]; -extern const u8 gMonFootprint_Gloom[]; -extern const u8 gMonFootprint_Vileplume[]; -extern const u8 gMonFootprint_Paras[]; -extern const u8 gMonFootprint_Parasect[]; -extern const u8 gMonFootprint_Venonat[]; -extern const u8 gMonFootprint_Venomoth[]; -extern const u8 gMonFootprint_Diglett[]; -extern const u8 gMonFootprint_Dugtrio[]; -extern const u8 gMonFootprint_Meowth[]; -extern const u8 gMonFootprint_Persian[]; -extern const u8 gMonFootprint_Psyduck[]; -extern const u8 gMonFootprint_Golduck[]; -extern const u8 gMonFootprint_Mankey[]; -extern const u8 gMonFootprint_Primeape[]; -extern const u8 gMonFootprint_Growlithe[]; -extern const u8 gMonFootprint_Arcanine[]; -extern const u8 gMonFootprint_Poliwag[]; -extern const u8 gMonFootprint_Poliwhirl[]; -extern const u8 gMonFootprint_Poliwrath[]; -extern const u8 gMonFootprint_Abra[]; -extern const u8 gMonFootprint_Kadabra[]; -extern const u8 gMonFootprint_Alakazam[]; -extern const u8 gMonFootprint_Machop[]; -extern const u8 gMonFootprint_Machoke[]; -extern const u8 gMonFootprint_Machamp[]; -extern const u8 gMonFootprint_Bellsprout[]; -extern const u8 gMonFootprint_Weepinbell[]; -extern const u8 gMonFootprint_Victreebel[]; -extern const u8 gMonFootprint_Tentacool[]; -extern const u8 gMonFootprint_Tentacruel[]; -extern const u8 gMonFootprint_Geodude[]; -extern const u8 gMonFootprint_Graveler[]; -extern const u8 gMonFootprint_Golem[]; -extern const u8 gMonFootprint_Ponyta[]; -extern const u8 gMonFootprint_Rapidash[]; -extern const u8 gMonFootprint_Slowpoke[]; -extern const u8 gMonFootprint_Slowbro[]; -extern const u8 gMonFootprint_Magnemite[]; -extern const u8 gMonFootprint_Magneton[]; -extern const u8 gMonFootprint_Farfetchd[]; -extern const u8 gMonFootprint_Doduo[]; -extern const u8 gMonFootprint_Dodrio[]; -extern const u8 gMonFootprint_Seel[]; -extern const u8 gMonFootprint_Dewgong[]; -extern const u8 gMonFootprint_Grimer[]; -extern const u8 gMonFootprint_Muk[]; -extern const u8 gMonFootprint_Shellder[]; -extern const u8 gMonFootprint_Cloyster[]; -extern const u8 gMonFootprint_Gastly[]; -extern const u8 gMonFootprint_Haunter[]; -extern const u8 gMonFootprint_Gengar[]; -extern const u8 gMonFootprint_Onix[]; -extern const u8 gMonFootprint_Drowzee[]; -extern const u8 gMonFootprint_Hypno[]; -extern const u8 gMonFootprint_Krabby[]; -extern const u8 gMonFootprint_Kingler[]; -extern const u8 gMonFootprint_Voltorb[]; -extern const u8 gMonFootprint_Electrode[]; -extern const u8 gMonFootprint_Exeggcute[]; -extern const u8 gMonFootprint_Exeggutor[]; -extern const u8 gMonFootprint_Cubone[]; -extern const u8 gMonFootprint_Marowak[]; -extern const u8 gMonFootprint_Hitmonlee[]; -extern const u8 gMonFootprint_Hitmonchan[]; -extern const u8 gMonFootprint_Lickitung[]; -extern const u8 gMonFootprint_Koffing[]; -extern const u8 gMonFootprint_Weezing[]; -extern const u8 gMonFootprint_Rhyhorn[]; -extern const u8 gMonFootprint_Rhydon[]; -extern const u8 gMonFootprint_Chansey[]; -extern const u8 gMonFootprint_Tangela[]; -extern const u8 gMonFootprint_Kangaskhan[]; -extern const u8 gMonFootprint_Horsea[]; -extern const u8 gMonFootprint_Seadra[]; -extern const u8 gMonFootprint_Goldeen[]; -extern const u8 gMonFootprint_Seaking[]; -extern const u8 gMonFootprint_Staryu[]; -extern const u8 gMonFootprint_Starmie[]; -extern const u8 gMonFootprint_MrMime[]; -extern const u8 gMonFootprint_Scyther[]; -extern const u8 gMonFootprint_Jynx[]; -extern const u8 gMonFootprint_Electabuzz[]; -extern const u8 gMonFootprint_Magmar[]; -extern const u8 gMonFootprint_Pinsir[]; -extern const u8 gMonFootprint_Tauros[]; -extern const u8 gMonFootprint_Magikarp[]; -extern const u8 gMonFootprint_Gyarados[]; -extern const u8 gMonFootprint_Lapras[]; -extern const u8 gMonFootprint_Ditto[]; -extern const u8 gMonFootprint_Eevee[]; -extern const u8 gMonFootprint_Vaporeon[]; -extern const u8 gMonFootprint_Jolteon[]; -extern const u8 gMonFootprint_Flareon[]; -extern const u8 gMonFootprint_Porygon[]; -extern const u8 gMonFootprint_Omanyte[]; -extern const u8 gMonFootprint_Omastar[]; -extern const u8 gMonFootprint_Kabuto[]; -extern const u8 gMonFootprint_Kabutops[]; -extern const u8 gMonFootprint_Aerodactyl[]; -extern const u8 gMonFootprint_Snorlax[]; -extern const u8 gMonFootprint_Articuno[]; -extern const u8 gMonFootprint_Zapdos[]; -extern const u8 gMonFootprint_Moltres[]; -extern const u8 gMonFootprint_Dratini[]; -extern const u8 gMonFootprint_Dragonair[]; -extern const u8 gMonFootprint_Dragonite[]; -extern const u8 gMonFootprint_Mewtwo[]; -extern const u8 gMonFootprint_Mew[]; -extern const u8 gMonFootprint_Chikorita[]; -extern const u8 gMonFootprint_Bayleef[]; -extern const u8 gMonFootprint_Meganium[]; -extern const u8 gMonFootprint_Cyndaquil[]; -extern const u8 gMonFootprint_Quilava[]; -extern const u8 gMonFootprint_Typhlosion[]; -extern const u8 gMonFootprint_Totodile[]; -extern const u8 gMonFootprint_Croconaw[]; -extern const u8 gMonFootprint_Feraligatr[]; -extern const u8 gMonFootprint_Sentret[]; -extern const u8 gMonFootprint_Furret[]; -extern const u8 gMonFootprint_Hoothoot[]; -extern const u8 gMonFootprint_Noctowl[]; -extern const u8 gMonFootprint_Ledyba[]; -extern const u8 gMonFootprint_Ledian[]; -extern const u8 gMonFootprint_Spinarak[]; -extern const u8 gMonFootprint_Ariados[]; -extern const u8 gMonFootprint_Crobat[]; -extern const u8 gMonFootprint_Chinchou[]; -extern const u8 gMonFootprint_Lanturn[]; -extern const u8 gMonFootprint_Pichu[]; -extern const u8 gMonFootprint_Cleffa[]; -extern const u8 gMonFootprint_Igglybuff[]; -extern const u8 gMonFootprint_Togepi[]; -extern const u8 gMonFootprint_Togetic[]; -extern const u8 gMonFootprint_Natu[]; -extern const u8 gMonFootprint_Xatu[]; -extern const u8 gMonFootprint_Mareep[]; -extern const u8 gMonFootprint_Flaaffy[]; -extern const u8 gMonFootprint_Ampharos[]; -extern const u8 gMonFootprint_Bellossom[]; -extern const u8 gMonFootprint_Marill[]; -extern const u8 gMonFootprint_Azumarill[]; -extern const u8 gMonFootprint_Sudowoodo[]; -extern const u8 gMonFootprint_Politoed[]; -extern const u8 gMonFootprint_Hoppip[]; -extern const u8 gMonFootprint_Skiploom[]; -extern const u8 gMonFootprint_Jumpluff[]; -extern const u8 gMonFootprint_Aipom[]; -extern const u8 gMonFootprint_Sunkern[]; -extern const u8 gMonFootprint_Sunflora[]; -extern const u8 gMonFootprint_Yanma[]; -extern const u8 gMonFootprint_Wooper[]; -extern const u8 gMonFootprint_Quagsire[]; -extern const u8 gMonFootprint_Espeon[]; -extern const u8 gMonFootprint_Umbreon[]; -extern const u8 gMonFootprint_Murkrow[]; -extern const u8 gMonFootprint_Slowking[]; -extern const u8 gMonFootprint_Misdreavus[]; -extern const u8 gMonFootprint_Unown[]; -extern const u8 gMonFootprint_Wobbuffet[]; -extern const u8 gMonFootprint_Girafarig[]; -extern const u8 gMonFootprint_Pineco[]; -extern const u8 gMonFootprint_Forretress[]; -extern const u8 gMonFootprint_Dunsparce[]; -extern const u8 gMonFootprint_Gligar[]; -extern const u8 gMonFootprint_Steelix[]; -extern const u8 gMonFootprint_Snubbull[]; -extern const u8 gMonFootprint_Granbull[]; -extern const u8 gMonFootprint_Qwilfish[]; -extern const u8 gMonFootprint_Scizor[]; -extern const u8 gMonFootprint_Shuckle[]; -extern const u8 gMonFootprint_Heracross[]; -extern const u8 gMonFootprint_Sneasel[]; -extern const u8 gMonFootprint_Teddiursa[]; -extern const u8 gMonFootprint_Ursaring[]; -extern const u8 gMonFootprint_Slugma[]; -extern const u8 gMonFootprint_Magcargo[]; -extern const u8 gMonFootprint_Swinub[]; -extern const u8 gMonFootprint_Piloswine[]; -extern const u8 gMonFootprint_Corsola[]; -extern const u8 gMonFootprint_Remoraid[]; -extern const u8 gMonFootprint_Octillery[]; -extern const u8 gMonFootprint_Delibird[]; -extern const u8 gMonFootprint_Mantine[]; -extern const u8 gMonFootprint_Skarmory[]; -extern const u8 gMonFootprint_Houndour[]; -extern const u8 gMonFootprint_Houndoom[]; -extern const u8 gMonFootprint_Kingdra[]; -extern const u8 gMonFootprint_Phanpy[]; -extern const u8 gMonFootprint_Donphan[]; -extern const u8 gMonFootprint_Porygon2[]; -extern const u8 gMonFootprint_Stantler[]; -extern const u8 gMonFootprint_Smeargle[]; -extern const u8 gMonFootprint_Tyrogue[]; -extern const u8 gMonFootprint_Hitmontop[]; -extern const u8 gMonFootprint_Smoochum[]; -extern const u8 gMonFootprint_Elekid[]; -extern const u8 gMonFootprint_Magby[]; -extern const u8 gMonFootprint_Miltank[]; -extern const u8 gMonFootprint_Blissey[]; -extern const u8 gMonFootprint_Raikou[]; -extern const u8 gMonFootprint_Entei[]; -extern const u8 gMonFootprint_Suicune[]; -extern const u8 gMonFootprint_Larvitar[]; -extern const u8 gMonFootprint_Pupitar[]; -extern const u8 gMonFootprint_Tyranitar[]; -extern const u8 gMonFootprint_Lugia[]; -extern const u8 gMonFootprint_HoOh[]; -extern const u8 gMonFootprint_Celebi[]; -extern const u8 gMonFootprint_Treecko[]; -extern const u8 gMonFootprint_Grovyle[]; -extern const u8 gMonFootprint_Sceptile[]; -extern const u8 gMonFootprint_Torchic[]; -extern const u8 gMonFootprint_Combusken[]; -extern const u8 gMonFootprint_Blaziken[]; -extern const u8 gMonFootprint_Mudkip[]; -extern const u8 gMonFootprint_Marshtomp[]; -extern const u8 gMonFootprint_Swampert[]; -extern const u8 gMonFootprint_Poochyena[]; -extern const u8 gMonFootprint_Mightyena[]; -extern const u8 gMonFootprint_Zigzagoon[]; -extern const u8 gMonFootprint_Linoone[]; -extern const u8 gMonFootprint_Wurmple[]; -extern const u8 gMonFootprint_Silcoon[]; -extern const u8 gMonFootprint_Beautifly[]; -extern const u8 gMonFootprint_Cascoon[]; -extern const u8 gMonFootprint_Dustox[]; -extern const u8 gMonFootprint_Lotad[]; -extern const u8 gMonFootprint_Lombre[]; -extern const u8 gMonFootprint_Ludicolo[]; -extern const u8 gMonFootprint_Seedot[]; -extern const u8 gMonFootprint_Nuzleaf[]; -extern const u8 gMonFootprint_Shiftry[]; -extern const u8 gMonFootprint_Nincada[]; -extern const u8 gMonFootprint_Ninjask[]; -extern const u8 gMonFootprint_Shedinja[]; -extern const u8 gMonFootprint_Taillow[]; -extern const u8 gMonFootprint_Swellow[]; -extern const u8 gMonFootprint_Shroomish[]; -extern const u8 gMonFootprint_Breloom[]; -extern const u8 gMonFootprint_Spinda[]; -extern const u8 gMonFootprint_Wingull[]; -extern const u8 gMonFootprint_Pelipper[]; -extern const u8 gMonFootprint_Surskit[]; -extern const u8 gMonFootprint_Masquerain[]; -extern const u8 gMonFootprint_Wailmer[]; -extern const u8 gMonFootprint_Wailord[]; -extern const u8 gMonFootprint_Skitty[]; -extern const u8 gMonFootprint_Delcatty[]; -extern const u8 gMonFootprint_Kecleon[]; -extern const u8 gMonFootprint_Baltoy[]; -extern const u8 gMonFootprint_Claydol[]; -extern const u8 gMonFootprint_Nosepass[]; -extern const u8 gMonFootprint_Torkoal[]; -extern const u8 gMonFootprint_Sableye[]; -extern const u8 gMonFootprint_Barboach[]; -extern const u8 gMonFootprint_Whiscash[]; -extern const u8 gMonFootprint_Luvdisc[]; -extern const u8 gMonFootprint_Corphish[]; -extern const u8 gMonFootprint_Crawdaunt[]; -extern const u8 gMonFootprint_Feebas[]; -extern const u8 gMonFootprint_Milotic[]; -extern const u8 gMonFootprint_Carvanha[]; -extern const u8 gMonFootprint_Sharpedo[]; -extern const u8 gMonFootprint_Trapinch[]; -extern const u8 gMonFootprint_Vibrava[]; -extern const u8 gMonFootprint_Flygon[]; -extern const u8 gMonFootprint_Makuhita[]; -extern const u8 gMonFootprint_Hariyama[]; -extern const u8 gMonFootprint_Electrike[]; -extern const u8 gMonFootprint_Manectric[]; -extern const u8 gMonFootprint_Numel[]; -extern const u8 gMonFootprint_Camerupt[]; -extern const u8 gMonFootprint_Spheal[]; -extern const u8 gMonFootprint_Sealeo[]; -extern const u8 gMonFootprint_Walrein[]; -extern const u8 gMonFootprint_Cacnea[]; -extern const u8 gMonFootprint_Cacturne[]; -extern const u8 gMonFootprint_Snorunt[]; -extern const u8 gMonFootprint_Glalie[]; -extern const u8 gMonFootprint_Lunatone[]; -extern const u8 gMonFootprint_Solrock[]; -extern const u8 gMonFootprint_Azurill[]; -extern const u8 gMonFootprint_Spoink[]; -extern const u8 gMonFootprint_Grumpig[]; -extern const u8 gMonFootprint_Plusle[]; -extern const u8 gMonFootprint_Minun[]; -extern const u8 gMonFootprint_Mawile[]; -extern const u8 gMonFootprint_Meditite[]; -extern const u8 gMonFootprint_Medicham[]; -extern const u8 gMonFootprint_Swablu[]; -extern const u8 gMonFootprint_Altaria[]; -extern const u8 gMonFootprint_Wynaut[]; -extern const u8 gMonFootprint_Duskull[]; -extern const u8 gMonFootprint_Dusclops[]; -extern const u8 gMonFootprint_Roselia[]; -extern const u8 gMonFootprint_Slakoth[]; -extern const u8 gMonFootprint_Vigoroth[]; -extern const u8 gMonFootprint_Slaking[]; -extern const u8 gMonFootprint_Gulpin[]; -extern const u8 gMonFootprint_Swalot[]; -extern const u8 gMonFootprint_Tropius[]; -extern const u8 gMonFootprint_Whismur[]; -extern const u8 gMonFootprint_Loudred[]; -extern const u8 gMonFootprint_Exploud[]; -extern const u8 gMonFootprint_Clamperl[]; -extern const u8 gMonFootprint_Huntail[]; -extern const u8 gMonFootprint_Gorebyss[]; -extern const u8 gMonFootprint_Absol[]; -extern const u8 gMonFootprint_Shuppet[]; -extern const u8 gMonFootprint_Banette[]; -extern const u8 gMonFootprint_Seviper[]; -extern const u8 gMonFootprint_Zangoose[]; -extern const u8 gMonFootprint_Relicanth[]; -extern const u8 gMonFootprint_Aron[]; -extern const u8 gMonFootprint_Lairon[]; -extern const u8 gMonFootprint_Aggron[]; -extern const u8 gMonFootprint_Castform[]; -extern const u8 gMonFootprint_Volbeat[]; -extern const u8 gMonFootprint_Illumise[]; -extern const u8 gMonFootprint_Lileep[]; -extern const u8 gMonFootprint_Cradily[]; -extern const u8 gMonFootprint_Anorith[]; -extern const u8 gMonFootprint_Armaldo[]; -extern const u8 gMonFootprint_Ralts[]; -extern const u8 gMonFootprint_Kirlia[]; -extern const u8 gMonFootprint_Gardevoir[]; -extern const u8 gMonFootprint_Bagon[]; -extern const u8 gMonFootprint_Shelgon[]; -extern const u8 gMonFootprint_Salamence[]; -extern const u8 gMonFootprint_Beldum[]; -extern const u8 gMonFootprint_Metang[]; -extern const u8 gMonFootprint_Metagross[]; -extern const u8 gMonFootprint_Regirock[]; -extern const u8 gMonFootprint_Regice[]; -extern const u8 gMonFootprint_Registeel[]; -extern const u8 gMonFootprint_Kyogre[]; -extern const u8 gMonFootprint_Groudon[]; -extern const u8 gMonFootprint_Rayquaza[]; -extern const u8 gMonFootprint_Latias[]; -extern const u8 gMonFootprint_Latios[]; -extern const u8 gMonFootprint_Jirachi[]; -extern const u8 gMonFootprint_Deoxys[]; -extern const u8 gMonFootprint_Chimecho[]; -#if P_GEN_4_POKEMON == TRUE -extern const u8 gMonFootprint_Turtwig[]; -extern const u8 gMonFootprint_Grotle[]; -extern const u8 gMonFootprint_Torterra[]; -extern const u8 gMonFootprint_Chimchar[]; -extern const u8 gMonFootprint_Monferno[]; -extern const u8 gMonFootprint_Infernape[]; -extern const u8 gMonFootprint_Piplup[]; -extern const u8 gMonFootprint_Prinplup[]; -extern const u8 gMonFootprint_Empoleon[]; -extern const u8 gMonFootprint_Starly[]; -extern const u8 gMonFootprint_Staravia[]; -extern const u8 gMonFootprint_Staraptor[]; -extern const u8 gMonFootprint_Bidoof[]; -extern const u8 gMonFootprint_Bibarel[]; -extern const u8 gMonFootprint_Kricketot[]; -extern const u8 gMonFootprint_Kricketune[]; -extern const u8 gMonFootprint_Shinx[]; -extern const u8 gMonFootprint_Luxio[]; -extern const u8 gMonFootprint_Luxray[]; -extern const u8 gMonFootprint_Budew[]; -extern const u8 gMonFootprint_Roserade[]; -extern const u8 gMonFootprint_Cranidos[]; -extern const u8 gMonFootprint_Rampardos[]; -extern const u8 gMonFootprint_Shieldon[]; -extern const u8 gMonFootprint_Bastiodon[]; -extern const u8 gMonFootprint_Burmy[]; -extern const u8 gMonFootprint_Wormadam[]; -extern const u8 gMonFootprint_Mothim[]; -extern const u8 gMonFootprint_Combee[]; -extern const u8 gMonFootprint_Vespiquen[]; -extern const u8 gMonFootprint_Pachirisu[]; -extern const u8 gMonFootprint_Buizel[]; -extern const u8 gMonFootprint_Floatzel[]; -extern const u8 gMonFootprint_Cherubi[]; -extern const u8 gMonFootprint_Cherrim[]; -extern const u8 gMonFootprint_Shellos[]; -extern const u8 gMonFootprint_Gastrodon[]; -extern const u8 gMonFootprint_Ambipom[]; -extern const u8 gMonFootprint_Drifloon[]; -extern const u8 gMonFootprint_Drifblim[]; -extern const u8 gMonFootprint_Buneary[]; -extern const u8 gMonFootprint_Lopunny[]; -extern const u8 gMonFootprint_Mismagius[]; -extern const u8 gMonFootprint_Honchkrow[]; -extern const u8 gMonFootprint_Glameow[]; -extern const u8 gMonFootprint_Purugly[]; -extern const u8 gMonFootprint_Chingling[]; -extern const u8 gMonFootprint_Stunky[]; -extern const u8 gMonFootprint_Skuntank[]; -extern const u8 gMonFootprint_Bronzor[]; -extern const u8 gMonFootprint_Bronzong[]; -extern const u8 gMonFootprint_Bonsly[]; -extern const u8 gMonFootprint_MimeJr[]; -extern const u8 gMonFootprint_Happiny[]; -extern const u8 gMonFootprint_Chatot[]; -extern const u8 gMonFootprint_Spiritomb[]; -extern const u8 gMonFootprint_Gible[]; -extern const u8 gMonFootprint_Gabite[]; -extern const u8 gMonFootprint_Garchomp[]; -extern const u8 gMonFootprint_Munchlax[]; -extern const u8 gMonFootprint_Riolu[]; -extern const u8 gMonFootprint_Lucario[]; -extern const u8 gMonFootprint_Hippopotas[]; -extern const u8 gMonFootprint_Hippowdon[]; -extern const u8 gMonFootprint_Skorupi[]; -extern const u8 gMonFootprint_Drapion[]; -extern const u8 gMonFootprint_Croagunk[]; -extern const u8 gMonFootprint_Toxicroak[]; -extern const u8 gMonFootprint_Carnivine[]; -extern const u8 gMonFootprint_Finneon[]; -extern const u8 gMonFootprint_Lumineon[]; -extern const u8 gMonFootprint_Mantyke[]; -extern const u8 gMonFootprint_Snover[]; -extern const u8 gMonFootprint_Abomasnow[]; -extern const u8 gMonFootprint_Weavile[]; -extern const u8 gMonFootprint_Magnezone[]; -extern const u8 gMonFootprint_Lickilicky[]; -extern const u8 gMonFootprint_Rhyperior[]; -extern const u8 gMonFootprint_Tangrowth[]; -extern const u8 gMonFootprint_Electivire[]; -extern const u8 gMonFootprint_Magmortar[]; -extern const u8 gMonFootprint_Togekiss[]; -extern const u8 gMonFootprint_Yanmega[]; -extern const u8 gMonFootprint_Leafeon[]; -extern const u8 gMonFootprint_Glaceon[]; -extern const u8 gMonFootprint_Gliscor[]; -extern const u8 gMonFootprint_Mamoswine[]; -extern const u8 gMonFootprint_PorygonZ[]; -extern const u8 gMonFootprint_Gallade[]; -extern const u8 gMonFootprint_Probopass[]; -extern const u8 gMonFootprint_Dusknoir[]; -extern const u8 gMonFootprint_Froslass[]; -extern const u8 gMonFootprint_Rotom[]; -extern const u8 gMonFootprint_Uxie[]; -extern const u8 gMonFootprint_Mesprit[]; -extern const u8 gMonFootprint_Azelf[]; -extern const u8 gMonFootprint_Dialga[]; -extern const u8 gMonFootprint_Palkia[]; -extern const u8 gMonFootprint_Heatran[]; -extern const u8 gMonFootprint_Regigigas[]; -extern const u8 gMonFootprint_Giratina[]; -extern const u8 gMonFootprint_Cresselia[]; -extern const u8 gMonFootprint_Phione[]; -extern const u8 gMonFootprint_Manaphy[]; -extern const u8 gMonFootprint_Darkrai[]; -extern const u8 gMonFootprint_Shaymin[]; -extern const u8 gMonFootprint_Arceus[]; -#endif -#if P_GEN_5_POKEMON == TRUE -extern const u8 gMonFootprint_Victini[]; -extern const u8 gMonFootprint_Snivy[]; -extern const u8 gMonFootprint_Servine[]; -extern const u8 gMonFootprint_Serperior[]; -extern const u8 gMonFootprint_Tepig[]; -extern const u8 gMonFootprint_Pignite[]; -extern const u8 gMonFootprint_Emboar[]; -extern const u8 gMonFootprint_Oshawott[]; -extern const u8 gMonFootprint_Dewott[]; -extern const u8 gMonFootprint_Samurott[]; -extern const u8 gMonFootprint_Patrat[]; -extern const u8 gMonFootprint_Watchog[]; -extern const u8 gMonFootprint_Lillipup[]; -extern const u8 gMonFootprint_Herdier[]; -extern const u8 gMonFootprint_Stoutland[]; -extern const u8 gMonFootprint_Purrloin[]; -extern const u8 gMonFootprint_Liepard[]; -extern const u8 gMonFootprint_Pansage[]; -extern const u8 gMonFootprint_Simisage[]; -extern const u8 gMonFootprint_Pansear[]; -extern const u8 gMonFootprint_Simisear[]; -extern const u8 gMonFootprint_Panpour[]; -extern const u8 gMonFootprint_Simipour[]; -extern const u8 gMonFootprint_Munna[]; -extern const u8 gMonFootprint_Musharna[]; -extern const u8 gMonFootprint_Pidove[]; -extern const u8 gMonFootprint_Tranquill[]; -extern const u8 gMonFootprint_Unfezant[]; -extern const u8 gMonFootprint_Blitzle[]; -extern const u8 gMonFootprint_Zebstrika[]; -extern const u8 gMonFootprint_Roggenrola[]; -extern const u8 gMonFootprint_Boldore[]; -extern const u8 gMonFootprint_Gigalith[]; -extern const u8 gMonFootprint_Woobat[]; -extern const u8 gMonFootprint_Swoobat[]; -extern const u8 gMonFootprint_Drilbur[]; -extern const u8 gMonFootprint_Excadrill[]; -extern const u8 gMonFootprint_Audino[]; -extern const u8 gMonFootprint_Timburr[]; -extern const u8 gMonFootprint_Gurdurr[]; -extern const u8 gMonFootprint_Conkeldurr[]; -extern const u8 gMonFootprint_Tympole[]; -extern const u8 gMonFootprint_Palpitoad[]; -extern const u8 gMonFootprint_Seismitoad[]; -extern const u8 gMonFootprint_Throh[]; -extern const u8 gMonFootprint_Sawk[]; -extern const u8 gMonFootprint_Sewaddle[]; -extern const u8 gMonFootprint_Swadloon[]; -extern const u8 gMonFootprint_Leavanny[]; -extern const u8 gMonFootprint_Venipede[]; -extern const u8 gMonFootprint_Whirlipede[]; -extern const u8 gMonFootprint_Scolipede[]; -extern const u8 gMonFootprint_Cottonee[]; -extern const u8 gMonFootprint_Whimsicott[]; -extern const u8 gMonFootprint_Petilil[]; -extern const u8 gMonFootprint_Lilligant[]; -extern const u8 gMonFootprint_Basculin[]; -extern const u8 gMonFootprint_Sandile[]; -extern const u8 gMonFootprint_Krokorok[]; -extern const u8 gMonFootprint_Krookodile[]; -extern const u8 gMonFootprint_Darumaka[]; -extern const u8 gMonFootprint_Darmanitan[]; -extern const u8 gMonFootprint_Maractus[]; -extern const u8 gMonFootprint_Dwebble[]; -extern const u8 gMonFootprint_Crustle[]; -extern const u8 gMonFootprint_Scraggy[]; -extern const u8 gMonFootprint_Scrafty[]; -extern const u8 gMonFootprint_Sigilyph[]; -extern const u8 gMonFootprint_Yamask[]; -extern const u8 gMonFootprint_Cofagrigus[]; -extern const u8 gMonFootprint_Tirtouga[]; -extern const u8 gMonFootprint_Carracosta[]; -extern const u8 gMonFootprint_Archen[]; -extern const u8 gMonFootprint_Archeops[]; -extern const u8 gMonFootprint_Trubbish[]; -extern const u8 gMonFootprint_Garbodor[]; -extern const u8 gMonFootprint_Zorua[]; -extern const u8 gMonFootprint_Zoroark[]; -extern const u8 gMonFootprint_Minccino[]; -extern const u8 gMonFootprint_Cinccino[]; -extern const u8 gMonFootprint_Gothita[]; -extern const u8 gMonFootprint_Gothorita[]; -extern const u8 gMonFootprint_Gothitelle[]; -extern const u8 gMonFootprint_Solosis[]; -extern const u8 gMonFootprint_Duosion[]; -extern const u8 gMonFootprint_Reuniclus[]; -extern const u8 gMonFootprint_Ducklett[]; -extern const u8 gMonFootprint_Swanna[]; -extern const u8 gMonFootprint_Vanillite[]; -extern const u8 gMonFootprint_Vanillish[]; -extern const u8 gMonFootprint_Vanilluxe[]; -extern const u8 gMonFootprint_Deerling[]; -extern const u8 gMonFootprint_Sawsbuck[]; -extern const u8 gMonFootprint_Emolga[]; -extern const u8 gMonFootprint_Karrablast[]; -extern const u8 gMonFootprint_Escavalier[]; -extern const u8 gMonFootprint_Foongus[]; -extern const u8 gMonFootprint_Amoonguss[]; -extern const u8 gMonFootprint_Frillish[]; -extern const u8 gMonFootprint_Jellicent[]; -extern const u8 gMonFootprint_Alomomola[]; -extern const u8 gMonFootprint_Joltik[]; -extern const u8 gMonFootprint_Galvantula[]; -extern const u8 gMonFootprint_Ferroseed[]; -extern const u8 gMonFootprint_Ferrothorn[]; -extern const u8 gMonFootprint_Klink[]; -extern const u8 gMonFootprint_Klang[]; -extern const u8 gMonFootprint_Klinklang[]; -extern const u8 gMonFootprint_Tynamo[]; -extern const u8 gMonFootprint_Eelektrik[]; -extern const u8 gMonFootprint_Eelektross[]; -extern const u8 gMonFootprint_Elgyem[]; -extern const u8 gMonFootprint_Beheeyem[]; -extern const u8 gMonFootprint_Litwick[]; -extern const u8 gMonFootprint_Lampent[]; -extern const u8 gMonFootprint_Chandelure[]; -extern const u8 gMonFootprint_Axew[]; -extern const u8 gMonFootprint_Fraxure[]; -extern const u8 gMonFootprint_Haxorus[]; -extern const u8 gMonFootprint_Cubchoo[]; -extern const u8 gMonFootprint_Beartic[]; -extern const u8 gMonFootprint_Cryogonal[]; -extern const u8 gMonFootprint_Shelmet[]; -extern const u8 gMonFootprint_Accelgor[]; -extern const u8 gMonFootprint_Stunfisk[]; -extern const u8 gMonFootprint_Mienfoo[]; -extern const u8 gMonFootprint_Mienshao[]; -extern const u8 gMonFootprint_Druddigon[]; -extern const u8 gMonFootprint_Golett[]; -extern const u8 gMonFootprint_Golurk[]; -extern const u8 gMonFootprint_Pawniard[]; -extern const u8 gMonFootprint_Bisharp[]; -extern const u8 gMonFootprint_Bouffalant[]; -extern const u8 gMonFootprint_Rufflet[]; -extern const u8 gMonFootprint_Braviary[]; -extern const u8 gMonFootprint_Vullaby[]; -extern const u8 gMonFootprint_Mandibuzz[]; -extern const u8 gMonFootprint_Heatmor[]; -extern const u8 gMonFootprint_Durant[]; -extern const u8 gMonFootprint_Deino[]; -extern const u8 gMonFootprint_Zweilous[]; -extern const u8 gMonFootprint_Hydreigon[]; -extern const u8 gMonFootprint_Larvesta[]; -extern const u8 gMonFootprint_Volcarona[]; -extern const u8 gMonFootprint_Cobalion[]; -extern const u8 gMonFootprint_Terrakion[]; -extern const u8 gMonFootprint_Virizion[]; -extern const u8 gMonFootprint_Tornadus[]; -extern const u8 gMonFootprint_Thundurus[]; -extern const u8 gMonFootprint_Reshiram[]; -extern const u8 gMonFootprint_Zekrom[]; -extern const u8 gMonFootprint_Landorus[]; -extern const u8 gMonFootprint_Kyurem[]; -extern const u8 gMonFootprint_Keldeo[]; -extern const u8 gMonFootprint_Meloetta[]; -extern const u8 gMonFootprint_Genesect[]; -#endif -#if P_GEN_6_POKEMON == TRUE -extern const u8 gMonFootprint_Chespin[]; -extern const u8 gMonFootprint_Quilladin[]; -extern const u8 gMonFootprint_Chesnaught[]; -extern const u8 gMonFootprint_Fennekin[]; -extern const u8 gMonFootprint_Braixen[]; -extern const u8 gMonFootprint_Delphox[]; -extern const u8 gMonFootprint_Froakie[]; -extern const u8 gMonFootprint_Frogadier[]; -extern const u8 gMonFootprint_Greninja[]; -extern const u8 gMonFootprint_Bunnelby[]; -extern const u8 gMonFootprint_Diggersby[]; -extern const u8 gMonFootprint_Fletchling[]; -extern const u8 gMonFootprint_Fletchinder[]; -extern const u8 gMonFootprint_Talonflame[]; -extern const u8 gMonFootprint_Scatterbug[]; -extern const u8 gMonFootprint_Spewpa[]; -extern const u8 gMonFootprint_Vivillon[]; -extern const u8 gMonFootprint_Litleo[]; -extern const u8 gMonFootprint_Pyroar[]; -extern const u8 gMonFootprint_Flabebe[]; -extern const u8 gMonFootprint_Floette[]; -extern const u8 gMonFootprint_Florges[]; -extern const u8 gMonFootprint_Skiddo[]; -extern const u8 gMonFootprint_Gogoat[]; -extern const u8 gMonFootprint_Pancham[]; -extern const u8 gMonFootprint_Pangoro[]; -extern const u8 gMonFootprint_Furfrou[]; -extern const u8 gMonFootprint_Espurr[]; -extern const u8 gMonFootprint_Meowstic[]; -extern const u8 gMonFootprint_Honedge[]; -extern const u8 gMonFootprint_Doublade[]; -extern const u8 gMonFootprint_Aegislash[]; -extern const u8 gMonFootprint_Spritzee[]; -extern const u8 gMonFootprint_Aromatisse[]; -extern const u8 gMonFootprint_Swirlix[]; -extern const u8 gMonFootprint_Slurpuff[]; -extern const u8 gMonFootprint_Inkay[]; -extern const u8 gMonFootprint_Malamar[]; -extern const u8 gMonFootprint_Binacle[]; -extern const u8 gMonFootprint_Barbaracle[]; -extern const u8 gMonFootprint_Skrelp[]; -extern const u8 gMonFootprint_Dragalge[]; -extern const u8 gMonFootprint_Clauncher[]; -extern const u8 gMonFootprint_Clawitzer[]; -extern const u8 gMonFootprint_Helioptile[]; -extern const u8 gMonFootprint_Heliolisk[]; -extern const u8 gMonFootprint_Tyrunt[]; -extern const u8 gMonFootprint_Tyrantrum[]; -extern const u8 gMonFootprint_Amaura[]; -extern const u8 gMonFootprint_Aurorus[]; -extern const u8 gMonFootprint_Sylveon[]; -extern const u8 gMonFootprint_Hawlucha[]; -extern const u8 gMonFootprint_Dedenne[]; -extern const u8 gMonFootprint_Carbink[]; -extern const u8 gMonFootprint_Goomy[]; -extern const u8 gMonFootprint_Sliggoo[]; -extern const u8 gMonFootprint_Goodra[]; -extern const u8 gMonFootprint_Klefki[]; -extern const u8 gMonFootprint_Phantump[]; -extern const u8 gMonFootprint_Trevenant[]; -extern const u8 gMonFootprint_Pumpkaboo[]; -extern const u8 gMonFootprint_Gourgeist[]; -extern const u8 gMonFootprint_Bergmite[]; -extern const u8 gMonFootprint_Avalugg[]; -extern const u8 gMonFootprint_Noibat[]; -extern const u8 gMonFootprint_Noivern[]; -extern const u8 gMonFootprint_Xerneas[]; -extern const u8 gMonFootprint_Yveltal[]; -extern const u8 gMonFootprint_Zygarde[]; -extern const u8 gMonFootprint_Diancie[]; -extern const u8 gMonFootprint_Hoopa[]; -extern const u8 gMonFootprint_Volcanion[]; -#endif -#if P_GEN_7_POKEMON == TRUE -extern const u8 gMonFootprint_Rowlet[]; -extern const u8 gMonFootprint_Dartrix[]; -extern const u8 gMonFootprint_Decidueye[]; -extern const u8 gMonFootprint_Litten[]; -extern const u8 gMonFootprint_Torracat[]; -extern const u8 gMonFootprint_Incineroar[]; -extern const u8 gMonFootprint_Popplio[]; -extern const u8 gMonFootprint_Brionne[]; -extern const u8 gMonFootprint_Primarina[]; -extern const u8 gMonFootprint_Pikipek[]; -extern const u8 gMonFootprint_Trumbeak[]; -extern const u8 gMonFootprint_Toucannon[]; -extern const u8 gMonFootprint_Yungoos[]; -extern const u8 gMonFootprint_Gumshoos[]; -extern const u8 gMonFootprint_Grubbin[]; -extern const u8 gMonFootprint_Charjabug[]; -extern const u8 gMonFootprint_Vikavolt[]; -extern const u8 gMonFootprint_Crabrawler[]; -extern const u8 gMonFootprint_Crabominable[]; -extern const u8 gMonFootprint_Oricorio[]; -extern const u8 gMonFootprint_Cutiefly[]; -extern const u8 gMonFootprint_Ribombee[]; -extern const u8 gMonFootprint_Rockruff[]; -extern const u8 gMonFootprint_Lycanroc[]; -extern const u8 gMonFootprint_Wishiwashi[]; -extern const u8 gMonFootprint_Mareanie[]; -extern const u8 gMonFootprint_Toxapex[]; -extern const u8 gMonFootprint_Mudbray[]; -extern const u8 gMonFootprint_Mudsdale[]; -extern const u8 gMonFootprint_Dewpider[]; -extern const u8 gMonFootprint_Araquanid[]; -extern const u8 gMonFootprint_Fomantis[]; -extern const u8 gMonFootprint_Lurantis[]; -extern const u8 gMonFootprint_Morelull[]; -extern const u8 gMonFootprint_Shiinotic[]; -extern const u8 gMonFootprint_Salandit[]; -extern const u8 gMonFootprint_Salazzle[]; -extern const u8 gMonFootprint_Stufful[]; -extern const u8 gMonFootprint_Bewear[]; -extern const u8 gMonFootprint_Bounsweet[]; -extern const u8 gMonFootprint_Steenee[]; -extern const u8 gMonFootprint_Tsareena[]; -extern const u8 gMonFootprint_Comfey[]; -extern const u8 gMonFootprint_Oranguru[]; -extern const u8 gMonFootprint_Passimian[]; -extern const u8 gMonFootprint_Wimpod[]; -extern const u8 gMonFootprint_Golisopod[]; -extern const u8 gMonFootprint_Sandygast[]; -extern const u8 gMonFootprint_Palossand[]; -extern const u8 gMonFootprint_Pyukumuku[]; -extern const u8 gMonFootprint_Type_Null[]; -extern const u8 gMonFootprint_Silvally[]; -extern const u8 gMonFootprint_Minior[]; -extern const u8 gMonFootprint_Komala[]; -extern const u8 gMonFootprint_Turtonator[]; -extern const u8 gMonFootprint_Togedemaru[]; -extern const u8 gMonFootprint_Mimikyu[]; -extern const u8 gMonFootprint_Bruxish[]; -extern const u8 gMonFootprint_Drampa[]; -extern const u8 gMonFootprint_Dhelmise[]; -extern const u8 gMonFootprint_JangmoO[]; -extern const u8 gMonFootprint_HakamoO[]; -extern const u8 gMonFootprint_KommoO[]; -extern const u8 gMonFootprint_Tapu_Koko[]; -extern const u8 gMonFootprint_Tapu_Lele[]; -extern const u8 gMonFootprint_Tapu_Bulu[]; -extern const u8 gMonFootprint_Tapu_Fini[]; -extern const u8 gMonFootprint_Cosmog[]; -extern const u8 gMonFootprint_Cosmoem[]; -extern const u8 gMonFootprint_Solgaleo[]; -extern const u8 gMonFootprint_Lunala[]; -extern const u8 gMonFootprint_Nihilego[]; -extern const u8 gMonFootprint_Buzzwole[]; -extern const u8 gMonFootprint_Pheromosa[]; -extern const u8 gMonFootprint_Xurkitree[]; -extern const u8 gMonFootprint_Celesteela[]; -extern const u8 gMonFootprint_Kartana[]; -extern const u8 gMonFootprint_Guzzlord[]; -extern const u8 gMonFootprint_Necrozma[]; -extern const u8 gMonFootprint_Magearna[]; -extern const u8 gMonFootprint_Marshadow[]; -extern const u8 gMonFootprint_Poipole[]; -extern const u8 gMonFootprint_Naganadel[]; -extern const u8 gMonFootprint_Stakataka[]; -extern const u8 gMonFootprint_Blacephalon[]; -extern const u8 gMonFootprint_Zeraora[]; -extern const u8 gMonFootprint_Meltan[]; -extern const u8 gMonFootprint_Melmetal[]; -#endif -#if P_GEN_8_POKEMON == TRUE -extern const u8 gMonFootprint_Grookey[]; -extern const u8 gMonFootprint_Thwackey[]; -extern const u8 gMonFootprint_Rillaboom[]; -extern const u8 gMonFootprint_Scorbunny[]; -extern const u8 gMonFootprint_Raboot[]; -extern const u8 gMonFootprint_Cinderace[]; -extern const u8 gMonFootprint_Sobble[]; -extern const u8 gMonFootprint_Drizzile[]; -extern const u8 gMonFootprint_Inteleon[]; -extern const u8 gMonFootprint_Skwovet[]; -extern const u8 gMonFootprint_Greedent[]; -extern const u8 gMonFootprint_Rookidee[]; -extern const u8 gMonFootprint_Corvisquire[]; -extern const u8 gMonFootprint_Corviknight[]; -extern const u8 gMonFootprint_Blipbug[]; -extern const u8 gMonFootprint_Dottler[]; -extern const u8 gMonFootprint_Orbeetle[]; -extern const u8 gMonFootprint_Nickit[]; -extern const u8 gMonFootprint_Thievul[]; -extern const u8 gMonFootprint_Gossifleur[]; -extern const u8 gMonFootprint_Eldegoss[]; -extern const u8 gMonFootprint_Wooloo[]; -extern const u8 gMonFootprint_Dubwool[]; -extern const u8 gMonFootprint_Chewtle[]; -extern const u8 gMonFootprint_Drednaw[]; -extern const u8 gMonFootprint_Yamper[]; -extern const u8 gMonFootprint_Boltund[]; -extern const u8 gMonFootprint_Rolycoly[]; -extern const u8 gMonFootprint_Carkol[]; -extern const u8 gMonFootprint_Coalossal[]; -extern const u8 gMonFootprint_Applin[]; -extern const u8 gMonFootprint_Flapple[]; -extern const u8 gMonFootprint_Appletun[]; -extern const u8 gMonFootprint_Silicobra[]; -extern const u8 gMonFootprint_Sandaconda[]; -extern const u8 gMonFootprint_Cramorant[]; -extern const u8 gMonFootprint_Arrokuda[]; -extern const u8 gMonFootprint_Barraskewda[]; -extern const u8 gMonFootprint_Toxel[]; -extern const u8 gMonFootprint_Toxtricity[]; -extern const u8 gMonFootprint_Sizzlipede[]; -extern const u8 gMonFootprint_Centiskorch[]; -extern const u8 gMonFootprint_Clobbopus[]; -extern const u8 gMonFootprint_Grapploct[]; -extern const u8 gMonFootprint_Sinistea[]; -extern const u8 gMonFootprint_Polteageist[]; -extern const u8 gMonFootprint_Hatenna[]; -extern const u8 gMonFootprint_Hattrem[]; -extern const u8 gMonFootprint_Hatterene[]; -extern const u8 gMonFootprint_Impidimp[]; -extern const u8 gMonFootprint_Morgrem[]; -extern const u8 gMonFootprint_Grimmsnarl[]; -extern const u8 gMonFootprint_Obstagoon[]; -extern const u8 gMonFootprint_Perrserker[]; -extern const u8 gMonFootprint_Cursola[]; -extern const u8 gMonFootprint_Sirfetchd[]; -extern const u8 gMonFootprint_Mr_Rime[]; -extern const u8 gMonFootprint_Runerigus[]; -extern const u8 gMonFootprint_Milcery[]; -extern const u8 gMonFootprint_Alcremie[]; -extern const u8 gMonFootprint_Falinks[]; -extern const u8 gMonFootprint_Pincurchin[]; -extern const u8 gMonFootprint_Snom[]; -extern const u8 gMonFootprint_Frosmoth[]; -extern const u8 gMonFootprint_Stonjourner[]; -extern const u8 gMonFootprint_Eiscue[]; -extern const u8 gMonFootprint_Indeedee[]; -extern const u8 gMonFootprint_Morpeko[]; -extern const u8 gMonFootprint_Cufant[]; -extern const u8 gMonFootprint_Copperajah[]; -extern const u8 gMonFootprint_Dracozolt[]; -extern const u8 gMonFootprint_Arctozolt[]; -extern const u8 gMonFootprint_Dracovish[]; -extern const u8 gMonFootprint_Arctovish[]; -extern const u8 gMonFootprint_Duraludon[]; -extern const u8 gMonFootprint_Dreepy[]; -extern const u8 gMonFootprint_Drakloak[]; -extern const u8 gMonFootprint_Dragapult[]; -extern const u8 gMonFootprint_Zacian[]; -extern const u8 gMonFootprint_Zamazenta[]; -extern const u8 gMonFootprint_Eternatus[]; -extern const u8 gMonFootprint_Kubfu[]; -extern const u8 gMonFootprint_Urshifu[]; -extern const u8 gMonFootprint_Zarude[]; -extern const u8 gMonFootprint_Regieleki[]; -extern const u8 gMonFootprint_Regidrago[]; -extern const u8 gMonFootprint_Glastrier[]; -extern const u8 gMonFootprint_Spectrier[]; -extern const u8 gMonFootprint_Calyrex[]; -//extern const u8 gMonFootprint_Wyrdeer[]; -//extern const u8 gMonFootprint_Kleavor[]; -//extern const u8 gMonFootprint_Ursaluna[]; -//extern const u8 gMonFootprint_Basculegion[]; -//extern const u8 gMonFootprint_Sneasler[]; -//extern const u8 gMonFootprint_Overqwil[]; -//extern const u8 gMonFootprint_Enamorus[]; -#endif - // trainer sprites extern const u32 gTrainerFrontPic_Hiker[]; extern const u32 gTrainerFrontPic_AquaGruntM[]; @@ -8157,6 +980,12 @@ extern const u32 gItemIcon_LinkingCord[]; extern const u32 gItemIconPalette_LinkingCord[]; extern const u32 gItemIcon_PeatBlock[]; extern const u32 gItemIconPalette_PeatBlock[]; +extern const u32 gItemIcon_SyrupyApple[]; +extern const u32 gItemIconPalette_SyrupyApple[]; +extern const u32 gItemIcon_UnremarkableTeacup[]; +extern const u32 gItemIconPalette_UnremarkableTeacup[]; +extern const u32 gItemIcon_MasterpieceTeacup[]; +extern const u32 gItemIconPalette_MasterpieceTeacup[]; // Nectars extern const u32 gItemIcon_RedNectar[]; extern const u32 gItemIconPalette_RedNectar[]; @@ -8869,6 +1698,8 @@ extern const u32 gItemIcon_CatchingCharm[]; extern const u32 gItemIconPalette_CatchingCharm[]; extern const u32 gItemIcon_ExpCharm[]; extern const u32 gItemIconPalette_ExpCharm[]; +extern const u32 gItemIcon_GlimmeringCharm[]; +extern const u32 gItemIconPalette_GlimmeringCharm[]; // Form-changing Key Items extern const u32 gItemIcon_RotomCatalog[]; extern const u32 gItemIconPalette_RotomCatalog[]; @@ -8971,8 +1802,8 @@ extern const u32 gItemIcon_MagmaEmblem[]; extern const u32 gItemIconPalette_MagmaEmblem[]; extern const u32 gItemIcon_ContestPass[]; extern const u32 gItemIconPalette_ContestPass[]; -extern const u32 gItemIcon_OaksParcel[]; -extern const u32 gItemIconPalette_OaksParcel[]; +extern const u32 gItemIcon_Parcel[]; +extern const u32 gItemIconPalette_Parcel[]; extern const u32 gItemIcon_SecretKey[]; extern const u32 gItemIconPalette_SecretKey[]; extern const u32 gItemIcon_BikeVoucher[]; @@ -9058,6 +1889,25 @@ extern const u32 gItemIconPalette_LustrousGlobe[]; extern const u32 gItemIcon_BerserkGene[]; extern const u32 gItemIconPalette_BerserkGene[]; +extern const u32 gItemIcon_FairyFeather[]; +extern const u32 gItemIconPalette_FairyFeather[]; + +extern const u32 gItemIcon_Mochi[]; +extern const u32 gItemIconPalette_HealthMochi[]; +extern const u32 gItemIconPalette_MuscleMochi[]; +extern const u32 gItemIconPalette_ResistMochi[]; +extern const u32 gItemIconPalette_GeniusMochi[]; +extern const u32 gItemIconPalette_CleverMochi[]; +extern const u32 gItemIconPalette_SwiftMochi[]; +extern const u32 gItemIconPalette_FreshStartMochi[]; + +extern const u32 gItemIcon_WellspringMask[]; +extern const u32 gItemIconPalette_WellspringMask[]; +extern const u32 gItemIcon_HearthflameMask[]; +extern const u32 gItemIconPalette_HearthflameMask[]; +extern const u32 gItemIcon_CornerstoneMask[]; +extern const u32 gItemIconPalette_CornerstoneMask[]; + extern const u32 gItemIcon_ReturnToFieldArrow[]; extern const u32 gItemIconPalette_ReturnToFieldArrow[]; @@ -10181,6 +3031,13 @@ extern const u32 gBattleAnimSpriteGfx_Teapot[]; extern const u32 gBattleAnimSpritePal_Teapot[]; extern const u32 gBattleAnimSpriteGfx_WoodHammerHammer[]; extern const u32 gBattleAnimSpritePal_WoodHammerHammer[]; +extern const u32 gBattleAnimSpriteGfx_Snowflakes[]; +extern const u32 gBattleAnimSpritePal_Snowflakes[]; +extern const u32 gBattleAnimSpriteGfx_SyrupBlob[]; +extern const u32 gBattleAnimSpriteGfx_SyrupShell[]; +extern const u32 gBattleAnimSpriteGfx_SyrupSplat[]; +extern const u32 gBattleAnimSpritePal_SyrupRed[]; +extern const u32 gBattleAnimSpritePal_SyrupYellow[]; extern const u32 gBattleAnimBgImage_Dark[]; extern const u32 gBattleAnimBgImage_Ghost[]; @@ -10470,6 +3327,11 @@ extern const u16 gSlotMachineReelTimePikachu_Pal[]; extern const u32 gBattleAnimBgTilemap_Sandstorm[]; extern const u32 gBattleAnimBgImage_Sandstorm[]; +// Pledge Effect field status - Rainbow +extern const u32 gBattleAnimBgImage_Rainbow[]; +extern const u32 gBattleAnimBGPalette_Rainbow[]; +extern const u32 gBattleAnimBgTilemap_Rainbow[]; + // Pokedex Area Screen extern const u32 gPokedexAreaScreenAreaUnknown_Gfx[]; extern const u16 gPokedexAreaScreenAreaUnknown_Pal[]; diff --git a/include/international_string_util.h b/include/international_string_util.h index b0ac8afb6b..0628ab932a 100644 --- a/include/international_string_util.h +++ b/include/international_string_util.h @@ -13,7 +13,7 @@ int GetStringWidthDifference(int fontId, const u8 *str, int totalWidth, int lett int GetMaxWidthInMenuTable(const struct MenuAction *actions, int numActions); int GetMaxWidthInSubsetOfMenuTable(const struct MenuAction *actions, const u8 *actionIds, int numActions); int Intl_GetListMenuWidth(const struct ListMenuTemplate *listMenu); -void CopyMonCategoryText(int dexNum, u8 *dest); +void CopyMonCategoryText(u16 species, u8 *dest); u8 *GetStringClearToWidth(u8 *dest, int fontId, const u8 *str, int totalStringWidth); void PadNameString(u8 *dest, u8 padChar); void ConvertInternationalPlayerNameStripChar(u8 *, u8); diff --git a/include/item.h b/include/item.h index d130500c07..da6faa4864 100644 --- a/include/item.h +++ b/include/item.h @@ -9,17 +9,17 @@ typedef void (*ItemUseFunc)(u8); struct Item { + u32 price; + u16 secondaryId; + ItemUseFunc fieldUseFunc; + const u8 *description; u8 name[ITEM_NAME_LENGTH]; - u16 price; u8 holdEffect; u8 holdEffectParam; - const u8 *description; u8 importance; u8 pocket; u8 type; - ItemUseFunc fieldUseFunc; u8 battleUsage; - u16 secondaryId; u8 flingPower; }; diff --git a/include/item_menu.h b/include/item_menu.h index 09ddd729c4..d4ae5a4c5f 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -107,5 +107,6 @@ void UpdatePocketItemList(u8 pocketId); void DisplayItemMessage(u8 taskId, u8 fontId, const u8 *str, void ( *callback)(u8 taskId)); void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback); void CloseItemMessage(u8 taskId); +void ItemMenu_RotomCatalog(u8 taskId); #endif //GUARD_ITEM_MENU_H diff --git a/include/item_use.h b/include/item_use.h index 6b3d0c590e..90d671bd42 100644 --- a/include/item_use.h +++ b/include/item_use.h @@ -13,6 +13,7 @@ void ItemUseOutOfBattle_WailmerPail(u8); void ItemUseOutOfBattle_Medicine(u8); void ItemUseOutOfBattle_AbilityCapsule(u8); void ItemUseOutOfBattle_AbilityPatch(u8); +void ItemUseOutOfBattle_ResetEVs(u8); void ItemUseOutOfBattle_ReduceEV(u8); void ItemUseOutOfBattle_SacredAsh(u8); void ItemUseOutOfBattle_PPRecovery(u8); @@ -28,6 +29,9 @@ void ItemUseOutOfBattle_Berry(u8); void ItemUseOutOfBattle_EnigmaBerry(u8); void ItemUseOutOfBattle_FormChange(u8); void ItemUseOutOfBattle_FormChange_ConsumedOnUse(u8); +void ItemUseOutOfBattle_RotomCatalog(u8); +void ItemUseOutOfBattle_ZygardeCube(u8); +void ItemUseOutOfBattle_Fusion(u8); void ItemUseOutOfBattle_Honey(u8); void ItemUseOutOfBattle_CannotUse(u8); void ItemUseOutOfBattle_ExpShare(u8); @@ -37,6 +41,8 @@ void ItemUseInBattle_PartyMenuChooseMove(u8 taskId); void Task_UseDigEscapeRopeOnField(u8 taskId); u8 CanUseDigOrEscapeRopeOnCurMap(void); u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId); +void FieldUseFunc_VsSeeker(u8 taskId); +void Task_ItemUse_CloseMessageBoxAndReturnToField_VsSeeker(u8 taskId); enum { BALL_THROW_UNABLE_TWO_MONS, diff --git a/include/party_menu.h b/include/party_menu.h index 38139cc962..c50abc276a 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -53,6 +53,7 @@ void ItemUseCB_BattleChooseMove(u8 taskId, TaskFunc task); void ItemUseCB_Medicine(u8 taskId, TaskFunc task); void ItemUseCB_AbilityCapsule(u8 taskId, TaskFunc task); void ItemUseCB_AbilityPatch(u8 taskId, TaskFunc task); +void ItemUseCB_ResetEVs(u8 taskId, TaskFunc task); void ItemUseCB_ReduceEV(u8 taskId, TaskFunc task); void ItemUseCB_PPRecovery(u8 taskId, TaskFunc task); void ItemUseCB_PPUp(u8 taskId, TaskFunc task); @@ -65,6 +66,9 @@ void ItemUseCB_SacredAsh(u8 taskId, TaskFunc task); void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc task); void ItemUseCB_FormChange(u8 taskId, TaskFunc task); void ItemUseCB_FormChange_ConsumedOnUse(u8 taskId, TaskFunc task); +void ItemUseCB_RotomCatalog(u8 taskId, TaskFunc task); +void ItemUseCB_ZygardeCube(u8 taskId, TaskFunc task); +void ItemUseCB_Fusion(u8 taskId, TaskFunc task); const u8* GetItemEffect(u16 item); u8 GetItemEffectType(u16 item); void CB2_PartyMenuFromStartMenu(void); diff --git a/include/pokedex.h b/include/pokedex.h index 96cd02affb..39b45fc5ff 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -3,7 +3,6 @@ extern u8 gUnusedPokedexU8; extern void (*gPokedexVBlankCB)(void); -extern const u8 *const gMonFootprintTable[]; enum { @@ -19,24 +18,10 @@ enum FLAG_SET_CAUGHT }; -struct PokedexEntry -{ - /*0x00*/ u8 categoryName[13]; - /*0x0C*/ u16 height; //in decimeters - /*0x0E*/ u16 weight; //in hectograms - /*0x10*/ const u8 *description; - /*0x14*/ u16 unused; - /*0x16*/ u16 pokemonScale; - /*0x18*/ u16 pokemonOffset; - /*0x1A*/ u16 trainerScale; - /*0x1C*/ u16 trainerOffset; -}; /*size = 0x20*/ - void ResetPokedex(void); -u16 GetPokedexHeightWeight(u16 dexNum, u8 data); u16 GetNationalPokedexCount(u8); u16 GetHoennPokedexCount(u8); -u8 DisplayCaughtMonDexPage(u16 dexNum, u32 otId, u32 personality); +u8 DisplayCaughtMonDexPage(u16 species, u32 otId, u32 personality); s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId); u16 CreateMonSpriteFromNationalDexNumber(u16, s16, s16, u16); bool16 HasAllHoennMons(void); diff --git a/include/pokedex_plus_hgss.h b/include/pokedex_plus_hgss.h new file mode 100644 index 0000000000..a309924236 --- /dev/null +++ b/include/pokedex_plus_hgss.h @@ -0,0 +1,7 @@ +#ifndef GUARD_POKEDEX_PLUS_HGSS_H +#define GUARD_POKEDEX_PLUS_HGSS_H + +void CB2_OpenPokedexPlusHGSS(void); +void Task_DisplayCaughtMonDexPageHGSS(u8); + +#endif // GUARD_POKEDEX_PLUS_HGSS_H diff --git a/include/pokemon.h b/include/pokemon.h index 526103e58a..dbf4c41c3b 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -303,7 +303,14 @@ struct BattlePokemon /*0x59*/ u8 metLevel; }; -struct SpeciesInfo /*0x24*/ +struct Evolution +{ + u16 method; + u16 param; + u16 targetSpecies; +}; + +struct SpeciesInfo /*0x8C*/ { /* 0x00 */ u8 baseHP; /* 0x01 */ u8 baseAttack; @@ -313,7 +320,7 @@ struct SpeciesInfo /*0x24*/ /* 0x05 */ u8 baseSpDefense; /* 0x06 */ u8 types[2]; /* 0x08 */ u8 catchRate; - /* 0x09 padding */ + /* 0x09 */ u8 padding1; /* 0x0A */ u16 expYield; // expYield was changed from u8 to u16 for the new Exp System. /* 0x0C */ u16 evYield_HP:2; u16 evYield_Attack:2; @@ -321,6 +328,7 @@ struct SpeciesInfo /*0x24*/ u16 evYield_Speed:2; /* 0x0D */ u16 evYield_SpAttack:2; u16 evYield_SpDefense:2; + u16 padding2:4; /* 0x0E */ u16 itemCommon; /* 0x10 */ u16 itemRare; /* 0x12 */ u8 genderRatio; @@ -330,9 +338,69 @@ struct SpeciesInfo /*0x24*/ /* 0x16 */ u8 eggGroups[2]; /* 0x18 */ u16 abilities[NUM_ABILITY_SLOTS]; // 3 abilities, no longer u8 because we have over 255 abilities now. /* 0x1E */ u8 safariZoneFleeRate; - /* 0x1F */ u8 bodyColor : 7; + // Pokédex data + /* 0x1F */ u8 categoryName[13]; + /* 0x1F */ u8 speciesName[POKEMON_NAME_LENGTH + 1]; + /* 0x2C */ u16 cryId; + /* 0x2E */ u16 natDexNum; + /* 0x30 */ u16 height; //in decimeters + /* 0x32 */ u16 weight; //in hectograms + /* 0x34 */ u16 pokemonScale; + /* 0x36 */ u16 pokemonOffset; + /* 0x38 */ u16 trainerScale; + /* 0x3A */ u16 trainerOffset; + /* 0x3C */ const u8 *description; + /* 0x40 */ u8 bodyColor : 7; + // Graphical Data u8 noFlip : 1; - /* 0x20 */ u16 flags; + /* 0x41 */ u8 frontAnimDelay; + /* 0x42 */ u8 frontAnimId; + /* 0x43 */ u8 backAnimId; + /* 0x44 */ const union AnimCmd *const *frontAnimFrames; + /* 0x48 */ const u32 *frontPic; + /* 0x4C */ const u32 *frontPicFemale; + /* 0x50 */ const u32 *backPic; + /* 0x54 */ const u32 *backPicFemale; + /* 0x58 */ const u32 *palette; + /* 0x5C */ const u32 *paletteFemale; + /* 0x60 */ const u32 *shinyPalette; + /* 0x64 */ const u32 *shinyPaletteFemale; + /* 0x68 */ const u8 *iconSprite; + /* 0x6C */ const u8 *iconSpriteFemale; + /* 0x70 */ const u8 *footprint; + // All Pokémon pics are 64x64, but this data table defines where in this 64x64 frame the sprite's non-transparent pixels actually are. + /* 0x74 */ u8 frontPicSize; // The dimensions of this drawn pixel area. + /* 0x74 */ u8 frontPicSizeFemale; // The dimensions of this drawn pixel area. + /* 0x75 */ u8 frontPicYOffset; // The number of pixels between the drawn pixel area and the bottom edge. + /* 0x76 */ u8 backPicSize; // The dimensions of this drawn pixel area. + /* 0x76 */ u8 backPicSizeFemale; // The dimensions of this drawn pixel area. + /* 0x77 */ u8 backPicYOffset; // The number of pixels between the drawn pixel area and the bottom edge. + /* 0x78 */ u8 iconPalIndex:3; + u8 iconPalIndexFemale:3; + u8 padding3:2; + /* 0x79 */ u8 enemyMonElevation; // This determines how much higher above the usual position the enemy Pokémon is during battle. Species that float or fly have nonzero values. + // Flags + /* 0x7A */ u32 isLegendary:1; + u32 isMythical:1; + u32 isUltraBeast:1; + u32 isParadoxForm:1; + u32 isMegaEvolution:1; + u32 isPrimalReversion:1; + u32 isUltraBurst:1; + u32 isGigantamax:1; + u32 isAlolanForm:1; + u32 isGalarianForm:1; + u32 isHisuianForm:1; + u32 isPaldeanForm:1; + u32 cannotBeTraded:1; + u32 allPerfectIVs:1; + u32 padding4:18; + // Move Data + /* 0x80 */ const struct LevelUpMove *levelUpLearnset; + /* 0x84 */ const u16 *teachableLearnset; + /* 0x88 */ const struct Evolution *evolutions; + /* 0x84 */ const u16 *formSpeciesIdTable; + /* 0x84 */ const struct FormChange *formChangeTable; }; struct BattleMove @@ -356,6 +424,7 @@ struct BattleMove u32 mirrorMoveBanned:1; u32 ignoresKingsRock:1; u32 highCritRatio:1; + u32 twoTurnMove:1; u32 punchingMove:1; u32 sheerForceBoost:1; u32 bitingMove:1; @@ -378,13 +447,20 @@ struct BattleMove u32 thawsUser:1; u32 ignoresSubstitute:1; u32 strikeCount:4; // Max 15 hits. Defaults to 1 if not set. May apply its effect on each hit. - u32 meFirstBanned:1; + u32 forcePressure:1; + u32 cantUseTwice:1; u32 gravityBanned:1; + u32 healBlockBanned:1; + u32 meFirstBanned:1; u32 mimicBanned:1; u32 metronomeBanned:1; u32 copycatBanned:1; + u32 assistBanned:1; // Matches same moves as copycatBanned + semi-invulnerable moves and Mirror Coat. u32 sleepTalkBanned:1; u32 instructBanned:1; + u32 encoreBanned:1; + u32 parentalBondBanned:1; + u32 skyBattleBanned:1; }; #define SPINDA_SPOT_WIDTH 16 @@ -402,13 +478,6 @@ struct LevelUpMove u16 level; }; -struct Evolution -{ - u16 method; - u16 param; - u16 targetSpecies; -}; - struct FormChange { u16 method; @@ -418,6 +487,19 @@ struct FormChange u16 param3; }; +struct Fusion +{ + u16 fusionStorageIndex; + u16 itemId; + u16 targetSpecies1; + u16 targetSpecies2; + u16 fusingIntoMon; + u16 fusionMove; + u16 unfuseForgetMove; +}; + +extern const struct Fusion *const gFusionTablePointers[NUM_SPECIES]; + #define NUM_UNOWN_FORMS 28 #define GET_UNOWN_LETTER(personality) (( \ @@ -441,8 +523,6 @@ extern const u8 gFacilityClassToTrainerClass[]; extern const struct SpeciesInfo gSpeciesInfo[]; extern const u8 *const gItemEffectTable[ITEMS_COUNT]; extern const u32 gExperienceTables[][MAX_LEVEL + 1]; -extern const struct LevelUpMove *const gLevelUpLearnsets[]; -extern const u16 *const gTeachableLearnsets[]; extern const u8 gPPUpGetMask[]; extern const u8 gPPUpClearMask[]; extern const u8 gPPUpAddValues[]; @@ -450,8 +530,6 @@ extern const u8 gStatStageRatios[MAX_STAT_STAGE + 1][2]; extern const u16 gUnionRoomFacilityClasses[]; extern const struct SpriteTemplate gBattlerSpriteTemplates[]; extern const s8 gNatureStatTable[][5]; -extern const u16 *const gFormSpeciesIdTables[NUM_SPECIES]; -extern const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES]; extern const u32 sExpCandyExperienceTable[]; void ZeroBoxMonData(struct BoxPokemon *boxMon); @@ -518,7 +596,7 @@ void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg); void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg); void CopyMon(void *dest, void *src, size_t size); u8 GiveMonToPlayer(struct Pokemon *mon); -u8 SendMonToPC(struct Pokemon* mon); +u8 CopyMonToPC(struct Pokemon *mon); u8 CalculatePlayerPartyCount(void); u8 CalculateEnemyPartyCount(void); u8 GetMonsStateToDoubles(void); @@ -531,6 +609,15 @@ u8 GetSecretBaseTrainerClass(void); bool8 IsPlayerPartyAndPokemonStorageFull(void); bool8 IsPokemonStorageFull(void); const u8 *GetSpeciesName(u16 species); +const u8 *GetSpeciesCategory(u16 species); +const u8 *GetSpeciesPokedexDescription(u16 species); +u16 GetSpeciesHeight(u16 species); +u16 GetSpeciesWeight(u16 species); +const struct LevelUpMove *GetSpeciesLevelUpLearnset(u16 species); +const u16 *GetSpeciesTeachableLearnset(u16 species); +const struct Evolution *GetSpeciesEvolutions(u16 species); +const u16 *GetSpeciesFormTable(u16 species); +const struct FormChange *GetSpeciesFormChanges(u16 species); u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex); void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex); void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex); @@ -545,7 +632,6 @@ u8 GetNature(struct Pokemon *mon); u8 GetNatureFromPersonality(u32 personality); u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem, struct Pokemon *tradePartner); bool8 IsMonPastEvolutionLevel(struct Pokemon *mon); -u16 HoennPokedexNumToSpecies(u16 hoennNum); u16 NationalPokedexNumToSpecies(u16 nationalNum); u16 NationalToHoennOrder(u16 nationalNum); u16 SpeciesToNationalPokedexNum(u16 species); @@ -579,8 +665,6 @@ void PlayMapChosenOrBattleBGM(u16 songId); void CreateTask_PlayMapChosenOrBattleBGM(u16 songId); const u32 *GetMonFrontSpritePal(struct Pokemon *mon); const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality); -const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon); -const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality); bool8 IsMoveHM(u16 move); bool8 IsMonSpriteNotFlipped(u16 species); s8 GetMonFlavorRelation(struct Pokemon *mon, u8 flavor); @@ -619,9 +703,12 @@ bool32 SpeciesHasGenderDifferences(u16 species); bool32 TryFormChange(u32 monId, u32 side, u16 method); void TryToSetBattleFormChangeMoves(struct Pokemon *mon, u16 method); u32 GetMonFriendshipScore(struct Pokemon *pokemon); +u32 GetMonAffectionHearts(struct Pokemon *pokemon); void UpdateMonPersonality(struct BoxPokemon *boxMon, u32 personality); u8 CalculatePartyCount(struct Pokemon *party); u16 SanitizeSpeciesId(u16 species); bool32 IsSpeciesEnabled(u16 species); +u16 GetCryIdBySpecies(u16 species); +u16 GetSpeciesPreEvolution(u16 species); #endif // GUARD_POKEMON_H diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index 08e905fef6..9e51e1bc4d 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -1,10 +1,6 @@ #ifndef GUARD_POKEMON_ICON_H #define GUARD_POKEMON_ICON_H -extern const u8 gMonIconPaletteIndices[]; -extern const u8 gMonIconPaletteIndicesFemale[]; -extern const u8 *const gMonIconTable[NUM_SPECIES + 1]; -extern const u8 *const gMonIconTableFemale[NUM_SPECIES + 1]; extern const struct SpritePalette gMonIconPaletteTable[]; const u8 *GetMonIconTiles(u16 species, u32 personality); diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index eb5f9a992d..5ab1b4cb8f 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -6,6 +6,7 @@ #define IN_BOX_COLUMNS 6 // Number of columns, 5 Pokémon per column #define IN_BOX_COUNT (IN_BOX_ROWS * IN_BOX_COLUMNS) #define BOX_NAME_LENGTH 8 +#define MAX_FUSION_STORAGE 4 /* COLUMNS @@ -22,6 +23,7 @@ struct PokemonStorage /*0x0001*/ struct BoxPokemon boxes[TOTAL_BOXES_COUNT][IN_BOX_COUNT]; /*0x8344*/ u8 boxNames[TOTAL_BOXES_COUNT][BOX_NAME_LENGTH + 1]; /*0x83C2*/ u8 boxWallpapers[TOTAL_BOXES_COUNT]; + /*0x8432*/ struct Pokemon fusions[MAX_FUSION_STORAGE]; }; extern struct PokemonStorage *gPokemonStoragePtr; diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index d1d7c59839..b313b59d9b 100755 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -8,6 +8,8 @@ extern u8 gLastViewedMonIndex; extern const u8 *const gMoveDescriptionPointers[]; extern const u8 gNotDoneYetDescription[]; extern const u8 *const gNatureNamePointers[]; +extern const struct SpriteTemplate gSpriteTemplate_MoveTypes; +extern const struct CompressedSpriteSheet gSpriteSheet_MoveTypes; void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); void ShowSelectMovePokemonSummaryScreen(struct Pokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void), u16 newMove); diff --git a/include/random.h b/include/random.h index 17e75f6de0..c3d6067efa 100644 --- a/include/random.h +++ b/include/random.h @@ -76,6 +76,10 @@ enum RandomTag RNG_FLAME_BODY, RNG_FORCE_RANDOM_SWITCH, RNG_FROZEN, + RNG_G_MAX_STUN_SHOCK, + RNG_G_MAX_BEFUDDLE, + RNG_G_MAX_REPLENISH, + RNG_G_MAX_SNOOZE, RNG_HITS, RNG_HOLD_EFFECT_FLINCH, RNG_INFATUATION, diff --git a/include/recorded_battle.h b/include/recorded_battle.h index e4fa1deb40..fcbe9495fd 100644 --- a/include/recorded_battle.h +++ b/include/recorded_battle.h @@ -65,6 +65,7 @@ u8 RecordedBattle_BufferNewBattlerData(u8 *dst); void RecordedBattle_RecordAllBattlerData(u8 *data); bool32 CanCopyRecordedBattleSaveData(void); bool32 MoveRecordedBattleToSaveData(void); +void SetPartiesFromRecordedSave(struct RecordedBattleSave *src); void SetVariablesForRecordedBattle(struct RecordedBattleSave *); void PlayRecordedBattle(void (*CB2_After)(void)); u8 GetRecordedBattleFrontierFacility(void); diff --git a/include/rtc.h b/include/rtc.h index 7a3d3d524b..9882d702b6 100644 --- a/include/rtc.h +++ b/include/rtc.h @@ -17,6 +17,77 @@ #define RTC_ERR_FLAG_MASK 0x0FF0 +//Morning and evening don't exist in Gen 3 +#if OW_TIMES_OF_DAY == GEN_3 + #define MORNING_HOUR_BEGIN 0 + #define MORNING_HOUR_END 0 + + #define DAY_HOUR_BEGIN 12 + #define DAY_HOUR_END HOURS_PER_DAY + + #define EVENING_HOUR_BEGIN 0 + #define EVENING_HOUR_END 0 + + #define NIGHT_HOUR_BEGIN 0 + #define NIGHT_HOUR_END 12 +//Evening doesn't exist in Gen 4 +#elif OW_TIMES_OF_DAY == GEN_4 + #define MORNING_HOUR_BEGIN 4 + #define MORNING_HOUR_END 10 + + #define DAY_HOUR_BEGIN 10 + #define DAY_HOUR_END 20 + + #define EVENING_HOUR_BEGIN 0 + #define EVENING_HOUR_END 0 + + #define NIGHT_HOUR_BEGIN 20 + #define NIGHT_HOUR_END 4 +//Gen 5 currently not included as the seasons change the times of day +#elif OW_TIMES_OF_DAY <= GEN_6 + #define MORNING_HOUR_BEGIN 4 + #define MORNING_HOUR_END 11 + + #define DAY_HOUR_BEGIN 11 + #define DAY_HOUR_END 18 + + #define EVENING_HOUR_BEGIN 18 + #define EVENING_HOUR_END 21 + + #define NIGHT_HOUR_BEGIN 21 + #define NIGHT_HOUR_END 4 +//These are the Sun/Ultra Sun times +#elif OW_TIMES_OF_DAY == GEN_7 + #define MORNING_HOUR_BEGIN 6 + #define MORNING_HOUR_END 10 + + #define DAY_HOUR_BEGIN 10 + #define DAY_HOUR_END 17 + + #define EVENING_HOUR_BEGIN 17 + #define EVENING_HOUR_END 18 + + #define NIGHT_HOUR_BEGIN 18 + #define NIGHT_HOUR_END 6 +#elif OW_TIMES_OF_DAY >= GEN_8 + #define MORNING_HOUR_BEGIN 6 + #define MORNING_HOUR_END 10 + + #define DAY_HOUR_BEGIN 10 + #define DAY_HOUR_END 19 + + #define EVENING_HOUR_BEGIN 19 + #define EVENING_HOUR_END 20 + + #define NIGHT_HOUR_BEGIN 20 + #define NIGHT_HOUR_END 6 +#endif + +#define TIME_MORNING 0 +#define TIME_DAY 1 +#define TIME_EVENING 2 +#define TIME_NIGHT 3 + extern struct Time gLocalTime; void RtcDisableInterrupts(void); @@ -40,6 +111,8 @@ void FormatDecimalDate(u8 *dest, s32 year, s32 month, s32 day); void FormatHexDate(u8 *dest, s32 year, s32 month, s32 day); void RtcCalcTimeDifference(struct SiiRtcInfo *rtc, struct Time *result, struct Time *t); void RtcCalcLocalTime(void); +bool8 IsBetweenHours(s32 hours, s32 begin, s32 end); +u8 GetTimeOfDay(void); void RtcInitLocalTimeOffset(s32 hour, s32 minute); void RtcCalcLocalTimeOffset(s32 days, s32 hours, s32 minutes, s32 seconds); void CalcTimeDifference(struct Time *result, struct Time *t1, struct Time *t2); diff --git a/include/script_menu.h b/include/script_menu.h index 734c717cff..41b45000eb 100644 --- a/include/script_menu.h +++ b/include/script_menu.h @@ -2,11 +2,13 @@ #define GUARD_SCRIPT_MENU_H #include "constants/script_menu.h" +#include "menu.h" extern const u8 *const gStdStrings[]; bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress); bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 defaultChoice); +void DrawMultichoiceMenuInternal(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 cursorPos, const struct MenuAction *actions, int count); bool8 ScriptMenu_YesNo(u8 left, u8 top); bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 columnCount); bool8 ScriptMenu_ShowPokemonPic(u16 species, u8 x, u8 y); diff --git a/include/siirtc.h b/include/siirtc.h index de4fd634df..ad13fc62f3 100644 --- a/include/siirtc.h +++ b/include/siirtc.h @@ -9,6 +9,10 @@ #define SIIRTCINFO_24HOUR 0x40 // 0: 12-hour mode, 1: 24-hour mode #define SIIRTCINFO_POWER 0x80 // power on or power failure occurred +#define HOURS_PER_DAY 24 +#define MINUTES_PER_HOUR 60 +#define SECONDS_PER_MINUTE 60 + enum { MONTH_JAN = 1, @@ -22,7 +26,8 @@ enum MONTH_SEP, MONTH_OCT, MONTH_NOV, - MONTH_DEC + MONTH_DEC, + MONTH_COUNT = MONTH_DEC }; struct SiiRtcInfo diff --git a/include/strings.h b/include/strings.h index 845e16e9f1..9184b4663a 100644 --- a/include/strings.h +++ b/include/strings.h @@ -944,6 +944,7 @@ extern const u8 gText_UsedVar2WildLured[]; extern const u8 gText_UsedVar2WildRepelled[]; extern const u8 gText_BoxFull[]; extern const u8 gText_WontHaveEffect[]; +extern const u8 gText_NextFusionMon[]; extern const u8 gText_LevelSymbol[]; extern const u8 gText_PkmnInfo[]; @@ -1319,6 +1320,19 @@ extern const u8 CableClub_Text_YouMayBattleHere[]; extern const u8 CableClub_Text_CanMixRecords[]; extern const u8 CableClub_Text_CanMakeBerryPowder[]; +// Rotom Catalog text +extern const u8 gText_LightBulb[]; +extern const u8 gText_MicrowaveOven[]; +extern const u8 gText_WashingMachine[]; +extern const u8 gText_Refrigerator[]; +extern const u8 gText_ElectricFan[]; +extern const u8 gText_LawnMower[]; +extern const u8 gText_Exit[]; + +// Zygarde Cube text +extern const u8 gText_ChangeForm[]; +extern const u8 gText_ChangeAbility[]; + // Frontier records. extern const u8 gText_WinStreak[]; extern const u8 gText_Record[]; @@ -2130,6 +2144,7 @@ extern const u8 gText_BoostPp[]; extern const u8 gText_DoWhatWithItem[]; extern const u8 gText_DoWhatWithMail[]; extern const u8 gText_AlreadyHoldingOne[]; +extern const u8 gText_WhichAppliance[]; extern const u8 gText_NoUse[]; extern const u8 gText_Able[]; extern const u8 gText_First_PM[]; @@ -3038,4 +3053,6 @@ extern const u8 gText_TellHimTheWords[]; extern const u8 gText_ExpShareOn[]; extern const u8 gText_ExpShareOff[]; +extern const u8 gText_BasePointsResetToZero[]; + #endif // GUARD_STRINGS_H diff --git a/include/test/battle.h b/include/test/battle.h index 0fb651e5ff..616c81964a 100644 --- a/include/test/battle.h +++ b/include/test/battle.h @@ -199,6 +199,17 @@ * - Instead of player and opponent there is playerLeft, playerRight, * opponentLeft, and opponentRight. * + * AI_SINGLE_BATTLE_TEST(name, results...) and AI_DOUBLE_BATTLE_TEST(name, results...) + * Define battles where opponent mons are controlled by AI, the same that runs + * when battling regular Trainers. The flags for AI should be specified by + * the AI_FLAGS command. + * The rules remain the same as with the SINGLE and DOUBLE battle tests + * with some differences: + * - opponent's action is specified by the EXPECT_MOVE(s) / EXPECT_SEND_OUT / EXPECT_SWITCH commands + * - we don't control what opponent actually does, instead we make sure the opponent does what we expect it to do + * - we still control the player's action the same way + * - apart from the EXPECTED commands, there's also a new SCORE_ and SCORE__VAL commands + * * KNOWN_FAILING * Marks a test as not passing due to a bug. If there is an issue number * associated with the bug it should be included in a comment. If the @@ -289,6 +300,11 @@ * Note if Moves is specified then MOVE will not automatically add moves * to the moveset. * + * AI_FLAGS + * Specifies which AI flags are run during the test. Has use only for AI tests. + * The most common combination is AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT) + * which is the general 'smart' AI. + * * WHEN * Contains the choices that battlers make during the battle. * @@ -359,6 +375,20 @@ * ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); * target can only be specified for ANIM_TYPE_MOVE. * + * EXPERIENCE_BAR(battler, [exp: | captureGainedExp:]) + * If exp: is used, causes the test to fail if that amount of + * experience is not gained, e.g.: + * EXPERIENCE_BAR(player, exp: 0); + * If captureGainedExp: is used, causes the test to fail if + * the Experience bar does not change, and then writes that change to the + * pointer, e.g.: + * u32 exp; + * EXPERIENCE_BAR(player, captureGainedExp: &exp); + * If none of the above are used, causes the test to fail if the Exp + * does not change at all. + * Please note that due to nature of tests, this command + * is only usable in WILD_BATTLE_TEST and will fail elsewhere. + * * HP_BAR(battler, [damage: | hp: | captureDamage: | captureHP:]) * If hp: or damage: are used, causes the test to fail if that amount of * damage is not dealt, e.g.: @@ -456,6 +486,7 @@ #include "recorded_battle.h" #include "util.h" #include "constants/abilities.h" +#include "constants/battle_ai.h" #include "constants/battle_anim.h" #include "constants/battle_move_effects.h" #include "constants/hold_effects.h" @@ -469,8 +500,9 @@ #define BATTLE_TEST_STACK_SIZE 1024 #define MAX_TURNS 16 #define MAX_QUEUED_EVENTS 25 +#define MAX_EXPECTED_ACTIONS 10 -enum { BATTLE_TEST_SINGLES, BATTLE_TEST_DOUBLES }; +enum { BATTLE_TEST_SINGLES, BATTLE_TEST_DOUBLES, BATTLE_TEST_WILD, BATTLE_TEST_AI_SINGLES, BATTLE_TEST_AI_DOUBLES }; typedef void (*SingleBattleTestFunction)(void *, const u32, struct BattlePokemon *, struct BattlePokemon *); typedef void (*DoubleBattleTestFunction)(void *, const u32, struct BattlePokemon *, struct BattlePokemon *, struct BattlePokemon *, struct BattlePokemon *); @@ -492,6 +524,7 @@ enum QUEUED_ABILITY_POPUP_EVENT, QUEUED_ANIMATION_EVENT, QUEUED_HP_EVENT, + QUEUED_EXP_EVENT, QUEUED_MESSAGE_EVENT, QUEUED_STATUS_EVENT, }; @@ -511,6 +544,7 @@ struct QueuedAnimationEvent }; enum { HP_EVENT_NEW_HP, HP_EVENT_DELTA_HP }; +enum { EXP_EVENT_NEW_EXP, EXP_EVENT_DELTA_EXP }; struct QueuedHPEvent { @@ -519,6 +553,13 @@ struct QueuedHPEvent u32 address:28; }; +struct QueuedExpEvent +{ + u32 battlerId:3; + u32 type:1; + u32 address:28; +}; + struct QueuedMessageEvent { const u8 *pattern; @@ -541,6 +582,7 @@ struct QueuedEvent struct QueuedAbilityEvent ability; struct QueuedAnimationEvent animation; struct QueuedHPEvent hp; + struct QueuedExpEvent exp; struct QueuedMessageEvent message; struct QueuedStatusEvent status; } as; @@ -560,6 +602,42 @@ struct BattlerTurn struct TurnRNG rng; }; +struct ExpectedAIAction +{ + u16 sourceLine; + u8 type:4; // which action + u8 moveSlots:4; // Expected move(s) to be chosen or not, marked as bits. + u8 target:4; // move target or id of mon which gets sent out + u8 explicitTarget:1; // For double battles, if it's set it requires the move to hit a specific target, otherwise any target is fine. + u8 pass:1; // No matter what AI does, it always passes. + u8 notMove:1; // We're expecting AI to choose any move EXCEPT the specified one. + u8 actionSet:1; // Action was set and is expected to happen. Set only for battlers controlled by AI. +}; + +#define MAX_AI_SCORE_COMPARISION_PER_TURN 4 +#define MAX_AI_LOG_LINES 10 + +struct ExpectedAiScore +{ + // We can compare AI's move score to a value or to another move's score. + u8 moveSlot1:2; + u8 moveSlot2:2; + u8 target:2; + s8 value; // value + u8 cmp:3; // Uses battle script command's CMP_ macros + u8 toValue:1; // compare to value, not to move + u8 set:1; + u16 sourceLine; +}; + +struct AILogLine +{ + const char *file; + u16 line:15; + u16 set:1; // Whether score was set, or added/subtracted + s16 score; +}; + struct BattleTestData { u8 stack[BATTLE_TEST_STACK_SIZE]; @@ -582,6 +660,8 @@ struct BattleTestData u8 turns; u8 actionBattlers; u8 moveBattlers; + bool8 hasAI:1; + bool8 logAI:1; struct RecordedBattleSave recordedBattle; u8 battleRecordTypes[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE]; @@ -595,6 +675,12 @@ struct BattleTestData u8 queueGroupStart; u8 queuedEvent; struct QueuedEvent queuedEvents[MAX_QUEUED_EVENTS]; + u8 expectedAiActionIndex[MAX_BATTLERS_COUNT]; + u8 aiActionsPlayed[MAX_BATTLERS_COUNT]; + struct ExpectedAIAction expectedAiActions[MAX_BATTLERS_COUNT][MAX_EXPECTED_ACTIONS]; + struct ExpectedAiScore expectedAiScores[MAX_BATTLERS_COUNT][MAX_TURNS][MAX_AI_SCORE_COMPARISION_PER_TURN]; // Max 4 comparisions per turn + struct AILogLine aiLogLines[MAX_BATTLERS_COUNT][MAX_MON_MOVES][MAX_AI_LOG_LINES]; + u8 aiLogPrintedForMove[MAX_BATTLERS_COUNT]; // Marks ai score log as printed for move, so the same log isn't displayed multiple times. }; struct BattleTestRunnerState @@ -658,7 +744,7 @@ extern struct BattleTestRunnerState *const gBattleTestRunnerState; TO_DO; \ } -#define SINGLE_BATTLE_TEST(_name, ...) \ +#define BATTLE_TEST_ARGS_SINGLE(_name, _type, ...) \ struct CAT(Result, __LINE__) { MEMBERS(__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__) = \ @@ -668,7 +754,7 @@ extern struct BattleTestRunnerState *const gBattleTestRunnerState; .runner = &gBattleTestRunner, \ .data = (void *)&(const struct BattleTest) \ { \ - .type = BATTLE_TEST_SINGLES, \ + .type = _type, \ .sourceLine = __LINE__, \ .function = { .singles = (SingleBattleTestFunction)CAT(Test, __LINE__) }, \ .resultsSize = sizeof(struct CAT(Result, __LINE__)), \ @@ -676,7 +762,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 DOUBLE_BATTLE_TEST(_name, ...) \ +#define BATTLE_TEST_ARGS_DOUBLE(_name, _type, ...) \ struct CAT(Result, __LINE__) { MEMBERS(__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__) = \ @@ -686,7 +772,7 @@ extern struct BattleTestRunnerState *const gBattleTestRunnerState; .runner = &gBattleTestRunner, \ .data = (void *)&(const struct BattleTest) \ { \ - .type = BATTLE_TEST_DOUBLES, \ + .type = _type, \ .sourceLine = __LINE__, \ .function = { .doubles = (DoubleBattleTestFunction)CAT(Test, __LINE__) }, \ .resultsSize = sizeof(struct CAT(Result, __LINE__)), \ @@ -694,6 +780,14 @@ extern struct BattleTestRunnerState *const gBattleTestRunnerState; }; \ static void CAT(Test, __LINE__)(struct CAT(Result, __LINE__) *results, const u32 i, struct BattlePokemon *playerLeft, struct BattlePokemon *opponentLeft, struct BattlePokemon *playerRight, struct BattlePokemon *opponentRight) + +#define SINGLE_BATTLE_TEST(_name, ...) BATTLE_TEST_ARGS_SINGLE(_name, BATTLE_TEST_SINGLES, __VA_ARGS__) +#define WILD_BATTLE_TEST(_name, ...) BATTLE_TEST_ARGS_SINGLE(_name, BATTLE_TEST_WILD, __VA_ARGS__) +#define AI_SINGLE_BATTLE_TEST(_name, ...) BATTLE_TEST_ARGS_SINGLE(_name, BATTLE_TEST_AI_SINGLES, __VA_ARGS__) + +#define DOUBLE_BATTLE_TEST(_name, ...) BATTLE_TEST_ARGS_DOUBLE(_name, BATTLE_TEST_DOUBLES, __VA_ARGS__) +#define AI_DOUBLE_BATTLE_TEST(_name, ...) BATTLE_TEST_ARGS_DOUBLE(_name, BATTLE_TEST_AI_DOUBLES, __VA_ARGS__) + /* Parametrize */ #undef PARAMETRIZE // Override test/test.h's implementation. @@ -721,6 +815,8 @@ struct moveWithPP { #define GIVEN for (; gBattleTestRunnerState->runGiven; gBattleTestRunnerState->runGiven = FALSE) #define RNGSeed(seed) RNGSeed_(__LINE__, seed) +#define AI_FLAGS(flags) AIFlags_(__LINE__, flags) +#define AI_LOG AILogScores(__LINE__) #define PLAYER(species) for (OpenPokemon(__LINE__, B_SIDE_PLAYER, species); gBattleTestRunnerState->data.currentMon; ClosePokemon(__LINE__)) #define OPPONENT(species) for (OpenPokemon(__LINE__, B_SIDE_OPPONENT, species); gBattleTestRunnerState->data.currentMon; ClosePokemon(__LINE__)) @@ -737,15 +833,18 @@ struct moveWithPP { #define SpDefense(spDefense) SpDefense_(__LINE__, spDefense) #define Speed(speed) Speed_(__LINE__, speed) #define Item(item) Item_(__LINE__, item) -#define Moves(move1, ...) Moves_(__LINE__, (const u16 [MAX_MON_MOVES]) { move1, __VA_ARGS__ }) +#define Moves(move1, ...) do { u16 moves_[MAX_MON_MOVES] = {move1, __VA_ARGS__}; Moves_(__LINE__, moves_); } while(0) #define MovesWithPP(movewithpp1, ...) MovesWithPP_(__LINE__, (struct moveWithPP[MAX_MON_MOVES]) {movewithpp1, __VA_ARGS__}) #define Friendship(friendship) Friendship_(__LINE__, friendship) #define Status1(status1) Status1_(__LINE__, status1) +#define OTName(otName) do {static const u8 otName_[] = _(otName); OTName_(__LINE__, otName_);} while (0) void OpenPokemon(u32 sourceLine, u32 side, u32 species); void ClosePokemon(u32 sourceLine); void RNGSeed_(u32 sourceLine, u32 seed); +void AIFlags_(u32 sourceLine, u32 flags); +void AILogScores(u32 sourceLine); void Gender_(u32 sourceLine, u32 gender); void Nature_(u32 sourceLine, u32 nature); void Ability_(u32 sourceLine, u32 ability); @@ -758,10 +857,27 @@ void SpAttack_(u32 sourceLine, u32 spAttack); void SpDefense_(u32 sourceLine, u32 spDefense); void Speed_(u32 sourceLine, u32 speed); void Item_(u32 sourceLine, u32 item); -void Moves_(u32 sourceLine, const u16 moves[MAX_MON_MOVES]); +void Moves_(u32 sourceLine, u16 moves[MAX_MON_MOVES]); void MovesWithPP_(u32 sourceLine, struct moveWithPP moveWithPP[MAX_MON_MOVES]); void Friendship_(u32 sourceLine, u32 friendship); void Status1_(u32 sourceLine, u32 status1); +void OTName_(u32 sourceLine, const u8 *otName); + +// Created for easy use of EXPECT_MOVES, so the user can provide 1, 2, 3 or 4 moves for AI which can pass the test. +struct FourMoves +{ + u16 moves[MAX_MON_MOVES]; +}; + +struct TestAIScoreStruct +{ + u32 move1; + bool8 explicitMove1; + u32 valueOrMoveId2; + bool8 explicitValueOrMoveId2; + struct BattlePokemon *target; + bool8 explicitTarget; +}; #define PLAYER_PARTY (gBattleTestRunnerState->data.recordedBattle.playerParty) #define OPPONENT_PARTY (gBattleTestRunnerState->data.recordedBattle.opponentParty) @@ -775,6 +891,22 @@ 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 EXPECT_MOVE(battler, ...) ExpectMove(__LINE__, battler, (struct MoveContext) { 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 FORCED_MOVE(battler) ForcedMove(__LINE__, battler) #define SWITCH(battler, partyIndex) Switch(__LINE__, battler, partyIndex) #define SKIP_TURN(battler) SkipTurn(__LINE__, battler) @@ -799,8 +931,12 @@ struct MoveContext u16 ultraBurst:1; u16 explicitUltraBurst:1; // TODO: u8 zMove:1; + u16 dynamax:1; + u16 explicitDynamax:1; u16 allowed:1; u16 explicitAllowed:1; + u16 notExpected:1; // Has effect only with EXPECT_MOVE + u16 explicitNotExpected:1; struct BattlePokemon *target; bool8 explicitTarget; struct TurnRNG rng; @@ -820,6 +956,11 @@ struct ItemContext void OpenTurn(u32 sourceLine); void CloseTurn(u32 sourceLine); void Move(u32 sourceLine, struct BattlePokemon *, struct MoveContext); +void ExpectMove(u32 sourceLine, struct BattlePokemon *, struct MoveContext); +void ExpectMoves(u32 sourceLine, struct BattlePokemon *battler, bool32 notExpected, struct FourMoves moves); +void ExpectSendOut(u32 sourceLine, struct BattlePokemon *battler, u32 partyIndex); +void ExpectSwitch(u32 sourceLine, struct BattlePokemon *battler, u32 partyIndex); +void Score(u32 sourceLine, struct BattlePokemon *battler, u32 cmp, bool32 toValue, struct TestAIScoreStruct cmpCtx); void ForcedMove(u32 sourceLine, struct BattlePokemon *); void Switch(u32 sourceLine, struct BattlePokemon *, u32 partyIndex); void SkipTurn(u32 sourceLine, struct BattlePokemon *); @@ -837,6 +978,7 @@ 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__) }) // 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 }) @@ -872,6 +1014,15 @@ struct HPEventContext bool8 explicitCaptureDamage; }; +struct ExpEventContext +{ + u8 _; + u32 exp; + bool8 explicitExp; + s32 *captureGainedExp; + bool8 explicitCaptureGainedExp; +}; + struct StatusEventContext { u16 status1; @@ -891,6 +1042,7 @@ void CloseQueueGroup(u32 sourceLine); void QueueAbility(u32 sourceLine, struct BattlePokemon *battler, struct AbilityEventContext); void QueueAnimation(u32 sourceLine, u32 type, u32 id, struct AnimationEventContext); void QueueHP(u32 sourceLine, struct BattlePokemon *battler, struct HPEventContext); +void QueueExp(u32 sourceLine, struct BattlePokemon *battler, struct ExpEventContext); void QueueMessage(u32 sourceLine, const u8 *pattern); void QueueStatus(u32 sourceLine, struct BattlePokemon *battler, struct StatusEventContext); diff --git a/include/test_runner.h b/include/test_runner.h index fddd4d6561..e0df88b0a6 100644 --- a/include/test_runner.h +++ b/include/test_runner.h @@ -10,9 +10,15 @@ extern const bool8 gTestRunnerSkipIsFail; void TestRunner_Battle_RecordAbilityPopUp(u32 battlerId, u32 ability); void TestRunner_Battle_RecordAnimation(u32 animType, u32 animId); void TestRunner_Battle_RecordHP(u32 battlerId, u32 oldHP, u32 newHP); +void TestRunner_Battle_RecordExp(u32 battlerId, u32 oldExp, u32 newExp); void TestRunner_Battle_RecordMessage(const u8 *message); void TestRunner_Battle_RecordStatus1(u32 battlerId, u32 status1); void TestRunner_Battle_AfterLastTurn(void); +void TestRunner_Battle_CheckChosenMove(u32 battlerId, u32 moveId, u32 target); +void TestRunner_Battle_CheckSwitch(u32 battlerId, u32 partyIndex); +void TestRunner_Battle_CheckAiMoveScores(u32 battlerId); +void TestRunner_Battle_AISetScore(const char *file, u32 line, u32 battlerId, u32 moveIndex, s32 score); +void TestRunner_Battle_AIAdjustScore(const char *file, u32 line, u32 battlerId, u32 moveIndex, s32 score); void TestRunner_Battle_CheckBattleRecordActionType(u32 battlerId, u32 recordIndex, u32 actionType); @@ -23,9 +29,15 @@ u32 TestRunner_Battle_GetForcedAbility(u32 side, u32 partyIndex); #define TestRunner_Battle_RecordAbilityPopUp(...) (void)0 #define TestRunner_Battle_RecordAnimation(...) (void)0 #define TestRunner_Battle_RecordHP(...) (void)0 +#define TestRunner_Battle_RecordExp(...) (void)0 #define TestRunner_Battle_RecordMessage(...) (void)0 #define TestRunner_Battle_RecordStatus1(...) (void)0 #define TestRunner_Battle_AfterLastTurn(...) (void)0 +#define TestRunner_Battle_CheckChosenMove(...) (void)0 +#define TestRunner_Battle_CheckSwitch(...) (void)0 +#define TestRunner_Battle_CheckAiMoveScores(...) (void)0 +#define TestRunner_Battle_AISetScore(...) (void)0 +#define TestRunner_Battle_AIAdjustScore(...) (void)0 #define TestRunner_Battle_CheckBattleRecordActionType(...) (void)0 diff --git a/include/trainer_see.h b/include/trainer_see.h index ab808c720c..5518a91761 100644 --- a/include/trainer_see.h +++ b/include/trainer_see.h @@ -26,5 +26,7 @@ u8 FldEff_HeartIcon(void); u8 GetCurrentApproachingTrainerObjectEventId(void); u8 GetChosenApproachingTrainerObjectEventId(u8 arrayId); void PlayerFaceTrainerAfterBattle(void); +u8 FldEff_DoubleExclMarkIcon(void); +u8 FldEff_XIcon(void); #endif // GUARD_TRAINER_SEE_H diff --git a/include/util.h b/include/util.h index 8f2079a0ba..3c90f136a6 100644 --- a/include/util.h +++ b/include/util.h @@ -13,7 +13,7 @@ int CountTrailingZeroBits(u32 value); u16 CalcCRC16(const u8 *data, s32 length); u16 CalcCRC16WithTable(const u8 *data, u32 length); u32 CalcByteArraySum(const u8 *data, u32 length); -void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); +void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u32 blendColor); void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha); void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output); diff --git a/include/vs_seeker.h b/include/vs_seeker.h new file mode 100644 index 0000000000..723e73bf37 --- /dev/null +++ b/include/vs_seeker.h @@ -0,0 +1,14 @@ +#ifndef GUARD_VS_SEEKER_H +#define GUARD_VS_SEEKER_H + +#include "global.h" + +void Task_InitVsSeekerAndCheckForTrainersOnScreen(u8 taskId); +bool8 UpdateVsSeekerStepCounter(void); +void MapResetTrainerRematches(u16 mapGroup, u16 mapNum); +void ClearRematchMovementByTrainerId(void); +u16 GetRematchTrainerIdVSSeeker(u16 trainerId); + +#define VSSEEKER_RECHARGE_STEPS 100 + +#endif //GUARD_VS_SEEKER_H diff --git a/include/wild_encounter.h b/include/wild_encounter.h index bef89d8950..13e7600684 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -31,6 +31,7 @@ extern bool8 gIsFishingEncounter; extern bool8 gIsSurfingEncounter; void DisableWildEncounters(bool8 disabled); +u8 PickWildMonNature(void); bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavior); bool8 SweetScentWildEncounter(void); bool8 DoesCurrentMapHaveFishingMons(void); diff --git a/ld_script.txt b/ld_script.ld similarity index 99% rename from ld_script.txt rename to ld_script.ld index a68d1a2a2c..642480d35d 100644 --- a/ld_script.txt +++ b/ld_script.ld @@ -4,16 +4,18 @@ gNumMusicPlayers = 4; gMaxLines = 0; gInitialMainCB2 = CB2_InitCopyrightScreenAfterBootup; -SECTIONS { - . = 0x2000000; +MEMORY +{ + EWRAM (rwx) : ORIGIN = 0x2000000, LENGTH = 256K + IWRAM (rwx) : ORIGIN = 0x3000000, LENGTH = 32K + ROM (rx) : ORIGIN = 0x8000000, LENGTH = 32M +} - ewram (NOLOAD) : +SECTIONS { + + ewram 0x2000000 (NOLOAD) : ALIGN(4) { - gHeap = .; - - . = 0x1C000; - INCLUDE "sym_ewram.ld" src/*.o(ewram_data); gflib/*.o(ewram_data); @@ -21,12 +23,9 @@ SECTIONS { *libc.a:impure.o(.data); *libc.a:locale.o(.data); *libc.a:mallocr.o(.data); - . = 0x40000; - } + } > EWRAM - . = 0x3000000; - - iwram (NOLOAD) : + iwram 0x3000000 (NOLOAD) : ALIGN(4) { /* .bss starts at 0x3000000 */ @@ -41,10 +40,9 @@ SECTIONS { /* COMMON starts at 0x30022A8 */ INCLUDE "sym_common.ld" *libc.a:sbrkr.o(COMMON); - end = .; - . = 0x8000; - } + } > IWRAM + /* BEGIN ROM DATA */ . = 0x8000000; .text : @@ -52,6 +50,7 @@ SECTIONS { { src/rom_header.o(.text); src/rom_header_gf.o(.text.*); + src/rom_header_rhh.o(.text.*); src/crt0.o(.text); src/main.o(.text); gflib/malloc.o(.text); @@ -344,7 +343,7 @@ SECTIONS { src/international_string_util.o(.text); src/pokemon_debug.o(.text); src/expansion_intro.o(.text); - } =0 + } > ROM =0 script_data : ALIGN(4) @@ -356,7 +355,7 @@ SECTIONS { data/battle_scripts_2.o(script_data); data/contest_ai_scripts.o(script_data); data/mystery_event_script_cmd_table.o(script_data); - } =0 + } > ROM =0 lib_text : ALIGN(4) @@ -440,7 +439,7 @@ SECTIONS { *libc.a:libcfunc.o(.text); *libc.a:lseekr.o(.text); *libc.a:readr.o(.text); - } =0 + } > ROM =0 .rodata : ALIGN(4) @@ -711,7 +710,7 @@ SECTIONS { data/sound_data.o(.rodata); src/pokemon_debug.o(.rodata); src/expansion_intro.o(.rodata); - } =0 + } > ROM =0 song_data : ALIGN(4) @@ -1246,7 +1245,7 @@ SECTIONS { sound/songs/midi/ph_nurse_blend.o(.rodata); sound/songs/midi/ph_nurse_held.o(.rodata); sound/songs/midi/ph_nurse_solo.o(.rodata); - } =0 + } > ROM =0 lib_rodata : SUBALIGN(4) @@ -1299,7 +1298,7 @@ SECTIONS { *libc.a:lseekr.o(.rodata); *libc.a:readr.o(.rodata); src/libisagbprn.o(.rodata); - } =0 + } > ROM =0 multiboot_data : ALIGN(4) @@ -1307,13 +1306,13 @@ SECTIONS { data/multiboot_ereader.o(.rodata); data/multiboot_berry_glitch_fix.o(.rodata); data/multiboot_pokemon_colosseum.o(.rodata); - } =0 + } > ROM =0 - gfx_data : + gfx_data : ALIGN(4) { src/graphics.o(.rodata); - } =0 + } > ROM =0 extra : ALIGN(4) @@ -1323,7 +1322,9 @@ SECTIONS { src/*.o(.rodata); gflib/*.o(.rodata); data/*.o(.rodata); - } = 0 + } > ROM = 0 + + __rom_end = .; /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning diff --git a/ld_script_modern.txt b/ld_script_modern.ld similarity index 87% rename from ld_script_modern.txt rename to ld_script_modern.ld index 082d694291..f3bf7b6798 100644 --- a/ld_script_modern.txt +++ b/ld_script_modern.ld @@ -4,46 +4,40 @@ gNumMusicPlayers = 4; gMaxLines = 0; gInitialMainCB2 = CB2_InitCopyrightScreenAfterBootup; -SECTIONS { - . = 0x2000000; +MEMORY +{ + EWRAM (rwx) : ORIGIN = 0x2000000, LENGTH = 256K + IWRAM (rwx) : ORIGIN = 0x3000000, LENGTH = 32K + ROM (rx) : ORIGIN = 0x8000000, LENGTH = 32M +} - ewram (NOLOAD) : +SECTIONS { + ewram 0x2000000 (NOLOAD) : ALIGN(4) { - gHeap = .; - - . = 0x1C000; - src/*.o(ewram_data); gflib/*.o(ewram_data); - . = 0x40000; - } + } > EWRAM - . = 0x3000000; - - iwram (NOLOAD) : + iwram 0x3000000 (NOLOAD) : ALIGN(4) { - /* .bss starts at 0x3000000 */ src/*.o(.bss); gflib/*.o(.bss); data/*.o(.bss); *libc.a:*.o(.bss*); *libnosys.a:*.o(.bss*); - /* .bss.code starts at 0x3001AA8 */ src/m4a.o(.bss.code); - /* COMMON starts at 0x30022A8 */ src/*.o(COMMON); gflib/*.o(COMMON); *libc.a:*.o(COMMON); *libnosys.a:*.o(COMMON); - end = .; - . = 0x8000; - } + } > IWRAM + /* BEGIN ROM DATA */ . = 0x8000000; .text : @@ -51,18 +45,19 @@ SECTIONS { { src/rom_header.o(.text*); src/rom_header_gf.o(.text.*); + src/rom_header_rhh.o(.text.*); src/crt0.o(.text); src/main.o(.text); gflib/*.o(.text*); src/*.o(.text*); asm/*.o(.text*); - } =0 + } > ROM =0 script_data : ALIGN(4) { data/*.o(script_data); - } =0 + } > ROM =0 lib_text : ALIGN(4) @@ -83,7 +78,7 @@ SECTIONS { *libc.a:*.o(.text*); *libnosys.a:*.o(.text*); src/libisagbprn.o(.text); - } =0 + } > ROM =0 .rodata : ALIGN(4) @@ -91,13 +86,13 @@ SECTIONS { src/*.o(.rodata*); gflib/*.o(.rodata*); data/*.o(.rodata*); - } =0 + } > ROM =0 song_data : ALIGN(4) { sound/songs/*.o(.rodata); - } =0 + } > ROM =0 lib_rodata : SUBALIGN(4) @@ -114,7 +109,7 @@ SECTIONS { *libc.a:*.o(.rodata*); *libc.a:*.o(.data*); src/libisagbprn.o(.rodata); - } =0 + } > ROM =0 multiboot_data : ALIGN(4) @@ -122,13 +117,15 @@ SECTIONS { data/multiboot_ereader.o(.rodata); data/multiboot_berry_glitch_fix.o(.rodata); data/multiboot_pokemon_colosseum.o(.rodata); - } =0 + } > ROM =0 gfx_data : ALIGN(4) { src/graphics.o(.rodata); - } =0 + } > ROM =0 + + __rom_end = .; /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning diff --git a/ld_script_test.txt b/ld_script_test.ld similarity index 85% rename from ld_script_test.txt rename to ld_script_test.ld index f4abad98ab..b86302f8cb 100644 --- a/ld_script_test.txt +++ b/ld_script_test.ld @@ -4,29 +4,25 @@ gNumMusicPlayers = 4; gMaxLines = 0; gInitialMainCB2 = CB2_TestRunner; -SECTIONS { - . = 0x2000000; +MEMORY +{ + EWRAM (rwx) : ORIGIN = 0x2000000, LENGTH = 256K + IWRAM (rwx) : ORIGIN = 0x3000000, LENGTH = 32K + ROM (rx) : ORIGIN = 0x8000000, LENGTH = 32M +} - ewram (NOLOAD) : +SECTIONS { + ewram 0x2000000 (NOLOAD) : ALIGN(4) { - gHeap = .; - - . = 0x1C000; - src/*.o(ewram_data); gflib/*.o(ewram_data); test/*.o(ewram_data); + } > EWRAM - . = 0x40000; - } - - . = 0x3000000; - - iwram (NOLOAD) : + iwram 0x3000000 (NOLOAD) : ALIGN(4) { - /* .bss starts at 0x3000000 */ src/*.o(.bss); gflib/*.o(.bss); data/*.o(.bss); @@ -35,26 +31,22 @@ SECTIONS { *libgcc.a:*.o(.bss*); *libnosys.a:*.o(.bss*); - /* .bss.code starts at 0x3001AA8 */ src/m4a.o(.bss.code); - /* COMMON starts at 0x30022A8 */ src/*.o(COMMON); gflib/*.o(COMMON); data/*.o(COMMON); test/*.o(COMMON); *libc.a:sbrkr.o(COMMON); - end = .; /* .persistent starts at 0x3007F00 */ /* WARNING: This is the end of the IRQ stack, if there's too * much data it WILL be overwritten. */ . = 0x7F00; test/*.o(.persistent); + } > IWRAM - . = 0x8000; - } - + /* BEGIN ROM DATA */ . = 0x8000000; .text : @@ -62,15 +54,16 @@ SECTIONS { { src/rom_header.o(.text); src/rom_header_gf.o(.text.*); + src/rom_header_rhh.o(.text.*); src/*.o(.text); gflib/*.o(.text); - } =0 + } > ROM =0 script_data : ALIGN(4) { data/*.o(script_data); - } =0 + } > ROM =0 lib_text : ALIGN(4) @@ -79,7 +72,7 @@ SECTIONS { *libgcc.a:*.o(.text*); *libc.a:*.o(.text*); *libnosys.a:*.o(.text*); - } =0 + } > ROM =0 .rodata : ALIGN(4) @@ -87,13 +80,13 @@ SECTIONS { src/*.o(.rodata*); gflib/*.o(.rodata*); data/*.o(.rodata*); - } =0 + } > ROM =0 song_data : ALIGN(4) { sound/songs/*.o(.rodata); - } =0 + } > ROM =0 lib_rodata : SUBALIGN(4) @@ -102,7 +95,7 @@ SECTIONS { *libc.a:*.o(.rodata*); *libc.a:*.o(.data*); src/libisagbprn.o(.rodata); - } =0 + } > ROM =0 tests : ALIGN(4) @@ -112,7 +105,9 @@ SECTIONS { __stop_tests = .; test/*.o(.text); test/*.o(.rodata*); - } =0 + } > ROM =0 + + __rom_end = .; /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning diff --git a/sound/cry_tables.inc b/sound/cry_tables.inc index dc15e0f047..6d0c9b97dc 100644 --- a/sound/cry_tables.inc +++ b/sound/cry_tables.inc @@ -1,4197 +1,4807 @@ .align 2 gCryTable:: +.if P_FAMILY_BULBASAUR == TRUE cry Cry_Bulbasaur cry Cry_Ivysaur cry Cry_Venusaur +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_VenusaurMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_BULBASAUR +.if P_FAMILY_CHARMANDER == TRUE cry Cry_Charmander cry Cry_Charmeleon cry Cry_Charizard +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_CharizardMegaX + cry Cry_CharizardMegaY +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_CHARMANDER +.if P_FAMILY_SQUIRTLE == TRUE cry Cry_Squirtle cry Cry_Wartortle cry Cry_Blastoise +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_BlastoiseMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_SQUIRTLE +.if P_FAMILY_CATERPIE == TRUE cry Cry_Caterpie cry Cry_Metapod cry Cry_Butterfree +.endif @ P_FAMILY_CATERPIE +.if P_FAMILY_WEEDLE == TRUE cry Cry_Weedle cry Cry_Kakuna cry Cry_Beedrill +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_BeedrillMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_WEEDLE +.if P_FAMILY_PIDGEY == TRUE cry Cry_Pidgey cry Cry_Pidgeotto cry Cry_Pidgeot +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_PidgeotMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_PIDGEY +.if P_FAMILY_RATTATA == TRUE cry Cry_Rattata cry Cry_Raticate +.endif @ P_FAMILY_RATTATA +.if P_FAMILY_SPEAROW == TRUE cry Cry_Spearow cry Cry_Fearow +.endif @ P_FAMILY_SPEAROW +.if P_FAMILY_EKANS == TRUE cry Cry_Ekans cry Cry_Arbok +.endif @ P_FAMILY_EKANS +.if P_FAMILY_PIKACHU == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Pichu +.endif @ P_GEN_2_CROSS_EVOS cry Cry_Pikachu cry Cry_Raichu +.endif @ P_FAMILY_PIKACHU +.if P_FAMILY_SANDSHREW == TRUE cry Cry_Sandshrew cry Cry_Sandslash +.endif @ P_FAMILY_SANDSHREW +.if P_FAMILY_NIDORAN == TRUE cry Cry_NidoranF cry Cry_Nidorina cry Cry_Nidoqueen cry Cry_NidoranM cry Cry_Nidorino cry Cry_Nidoking +.endif @ P_FAMILY_NIDORAN +.if P_FAMILY_CLEFAIRY == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Cleffa +.endif @ P_GEN_2_CROSS_EVOS cry Cry_Clefairy cry Cry_Clefable +.endif @ P_FAMILY_CLEFAIRY +.if P_FAMILY_VULPIX == TRUE cry Cry_Vulpix cry Cry_Ninetales +.endif @ P_FAMILY_VULPIX +.if P_FAMILY_JIGGLYPUFF == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Igglybuff +.endif @ P_GEN_2_CROSS_EVOS cry Cry_Jigglypuff cry Cry_Wigglytuff +.endif @ P_FAMILY_JIGGLYPUFF +.if P_FAMILY_ZUBAT == TRUE cry Cry_Zubat cry Cry_Golbat +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Crobat +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_ZUBAT +.if P_FAMILY_ODDISH == TRUE cry Cry_Oddish cry Cry_Gloom cry Cry_Vileplume +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Bellossom +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_ODDISH +.if P_FAMILY_PARAS == TRUE cry Cry_Paras cry Cry_Parasect +.endif @ P_FAMILY_PARAS +.if P_FAMILY_VENONAT == TRUE cry Cry_Venonat cry Cry_Venomoth +.endif @ P_FAMILY_VENONAT +.if P_FAMILY_DIGLETT == TRUE cry Cry_Diglett cry Cry_Dugtrio +.endif @ P_FAMILY_DIGLETT +.if P_FAMILY_MEOWTH == TRUE cry Cry_Meowth cry Cry_Persian +.if P_GALARIAN_FORMS == TRUE + cry Cry_Perrserker +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_MEOWTH +.if P_FAMILY_PSYDUCK == TRUE cry Cry_Psyduck cry Cry_Golduck +.endif @ P_FAMILY_PSYDUCK +.if P_FAMILY_MANKEY == TRUE cry Cry_Mankey cry Cry_Primeape +.if P_GEN_9_CROSS_EVOS == TRUE + cry Cry_Annihilape +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_MANKEY +.if P_FAMILY_GROWLITHE == TRUE cry Cry_Growlithe cry Cry_Arcanine +.endif @ P_FAMILY_GROWLITHE +.if P_FAMILY_POLIWAG == TRUE cry Cry_Poliwag cry Cry_Poliwhirl cry Cry_Poliwrath +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Politoed +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_POLIWAG +.if P_FAMILY_ABRA == TRUE cry Cry_Abra cry Cry_Kadabra cry Cry_Alakazam +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_AlakazamMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_ABRA +.if P_FAMILY_MACHOP == TRUE cry Cry_Machop cry Cry_Machoke cry Cry_Machamp +.endif @ P_FAMILY_MACHOP +.if P_FAMILY_BELLSPROUT == TRUE cry Cry_Bellsprout cry Cry_Weepinbell cry Cry_Victreebel +.endif @ P_FAMILY_BELLSPROUT +.if P_FAMILY_TENTACOOL == TRUE cry Cry_Tentacool cry Cry_Tentacruel +.endif @ P_FAMILY_TENTACOOL +.if P_FAMILY_GEODUDE == TRUE cry Cry_Geodude cry Cry_Graveler cry Cry_Golem +.endif @ P_FAMILY_GEODUDE +.if P_FAMILY_PONYTA == TRUE cry Cry_Ponyta cry Cry_Rapidash +.endif @ P_FAMILY_PONYTA +.if P_FAMILY_SLOWPOKE == TRUE cry Cry_Slowpoke cry Cry_Slowbro +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Slowking +.endif @ P_GEN_2_CROSS_EVOS +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_SlowbroMega +.endif @ P_MEGA_EVOLUTIONS +.if P_GALARIAN_FORMS == TRUE + cry Cry_SlowpokeGalarian +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_SLOWPOKE +.if P_FAMILY_MAGNEMITE == TRUE cry Cry_Magnemite cry Cry_Magneton +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Magnezone +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_MAGNEMITE +.if P_FAMILY_FARFETCHD == TRUE cry Cry_Farfetchd +.if P_GALARIAN_FORMS == TRUE + cry Cry_Sirfetchd +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_FARFETCHD +.if P_FAMILY_DODUO == TRUE cry Cry_Doduo cry Cry_Dodrio +.endif @ P_FAMILY_DODUO +.if P_FAMILY_SEEL == TRUE cry Cry_Seel cry Cry_Dewgong +.endif @ P_FAMILY_SEEL +.if P_FAMILY_GRIMER == TRUE cry Cry_Grimer cry Cry_Muk +.endif @ P_FAMILY_GRIMER +.if P_FAMILY_SHELLDER == TRUE cry Cry_Shellder cry Cry_Cloyster +.endif @ P_FAMILY_SHELLDER +.if P_FAMILY_GASTLY == TRUE cry Cry_Gastly cry Cry_Haunter cry Cry_Gengar +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_GengarMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_GASTLY +.if P_FAMILY_ONIX == TRUE cry Cry_Onix +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Steelix +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_SteelixMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_ONIX +.if P_FAMILY_DROWZEE == TRUE cry Cry_Drowzee cry Cry_Hypno +.endif @ P_FAMILY_DROWZEE +.if P_FAMILY_KRABBY == TRUE cry Cry_Krabby cry Cry_Kingler +.endif @ P_FAMILY_KRABBY +.if P_FAMILY_VOLTORB == TRUE cry Cry_Voltorb cry Cry_Electrode +.endif @ P_FAMILY_VOLTORB +.if P_FAMILY_EXEGGCUTE == TRUE cry Cry_Exeggcute cry Cry_Exeggutor +.endif @ P_FAMILY_EXEGGCUTE +.if P_FAMILY_CUBONE == TRUE cry Cry_Cubone cry Cry_Marowak +.endif @ P_FAMILY_CUBONE +.if P_FAMILY_HITMONS == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Tyrogue +.endif @ P_GEN_2_CROSS_EVOS cry Cry_Hitmonlee cry Cry_Hitmonchan +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Hitmontop +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_HITMONS +.if P_FAMILY_LICKITUNG == TRUE cry Cry_Lickitung +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Lickilicky +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_LICKITUNG +.if P_FAMILY_KOFFING == TRUE cry Cry_Koffing cry Cry_Weezing +.endif @ P_FAMILY_KOFFING +.if P_FAMILY_RHYHORN == TRUE cry Cry_Rhyhorn cry Cry_Rhydon +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Rhyperior +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_RHYHORN +.if P_FAMILY_CHANSEY == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Happiny +.endif @ P_GEN_4_CROSS_EVOS cry Cry_Chansey +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Blissey +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_CHANSEY +.if P_FAMILY_TANGELA == TRUE cry Cry_Tangela +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Tangrowth +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_TANGELA +.if P_FAMILY_KANGASKHAN == TRUE cry Cry_Kangaskhan +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_KangaskhanMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_KANGASKHAN +.if P_FAMILY_HORSEA == TRUE cry Cry_Horsea cry Cry_Seadra +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Kingdra +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_HORSEA +.if P_FAMILY_GOLDEEN == TRUE cry Cry_Goldeen cry Cry_Seaking +.endif @ P_FAMILY_GOLDEEN +.if P_FAMILY_STARYU == TRUE cry Cry_Staryu cry Cry_Starmie +.endif @ P_FAMILY_STARYU +.if P_FAMILY_MR_MIME == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_MimeJr +.endif @ P_GEN_4_CROSS_EVOS cry Cry_MrMime +.if P_GALARIAN_FORMS == TRUE + cry Cry_MrRime +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_MR_MIME +.if P_FAMILY_SCYTHER == TRUE cry Cry_Scyther +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Scizor +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_ScizorMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_GEN_2_CROSS_EVOS +.if P_GEN_8_CROSS_EVOS == TRUE + cry Cry_Kleavor +.endif @ P_GEN_8_CROSS_EVOS +.endif @ P_FAMILY_SCYTHER +.if P_FAMILY_JYNX == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Smoochum +.endif @ P_GEN_2_CROSS_EVOS cry Cry_Jynx +.endif @ P_FAMILY_JYNX +.if P_FAMILY_ELECTABUZZ == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Elekid +.endif @ P_GEN_2_CROSS_EVOS cry Cry_Electabuzz +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Electivire +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_ELECTABUZZ +.if P_FAMILY_MAGMAR == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Magby +.endif @ P_GEN_2_CROSS_EVOS cry Cry_Magmar +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Magmortar +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_MAGMAR +.if P_FAMILY_PINSIR == TRUE cry Cry_Pinsir +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_PinsirMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_PINSIR +.if P_FAMILY_TAUROS == TRUE cry Cry_Tauros +.endif @ P_FAMILY_TAUROS +.if P_FAMILY_MAGIKARP == TRUE cry Cry_Magikarp cry Cry_Gyarados +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_GyaradosMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MAGIKARP +.if P_FAMILY_LAPRAS == TRUE cry Cry_Lapras +.endif @ P_FAMILY_LAPRAS +.if P_FAMILY_DITTO == TRUE cry Cry_Ditto +.endif @ P_FAMILY_DITTO +.if P_FAMILY_EEVEE == TRUE cry Cry_Eevee cry Cry_Vaporeon cry Cry_Jolteon cry Cry_Flareon +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Espeon + cry Cry_Umbreon +.endif @ P_GEN_2_CROSS_EVOS +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Leafeon + cry Cry_Glaceon +.endif @ P_GEN_4_CROSS_EVOS +.if P_GEN_6_CROSS_EVOS == TRUE + cry Cry_Sylveon +.endif @ P_GEN_6_CROSS_EVOS +.endif @ P_FAMILY_EEVEE +.if P_FAMILY_PORYGON == TRUE cry Cry_Porygon +.if P_GEN_2_CROSS_EVOS == TRUE + cry Cry_Porygon2 +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_PorygonZ +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_PORYGON +.if P_FAMILY_OMANYTE == TRUE cry Cry_Omanyte cry Cry_Omastar +.endif @ P_FAMILY_OMANYTE +.if P_FAMILY_KABUTO == TRUE cry Cry_Kabuto cry Cry_Kabutops +.endif @ P_FAMILY_KABUTO +.if P_FAMILY_AERODACTYL == TRUE cry Cry_Aerodactyl +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_AerodactylMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_AERODACTYL +.if P_FAMILY_SNORLAX == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Munchlax +.endif @ P_GEN_4_CROSS_EVOS cry Cry_Snorlax +.endif @ P_FAMILY_SNORLAX +.if P_FAMILY_ARTICUNO == TRUE cry Cry_Articuno +.endif @ P_FAMILY_ARTICUNO +.if P_FAMILY_ZAPDOS == TRUE cry Cry_Zapdos +.endif @ P_FAMILY_ZAPDOS +.if P_FAMILY_MOLTRES == TRUE cry Cry_Moltres +.endif @ P_FAMILY_MOLTRES +.if P_FAMILY_DRATINI == TRUE cry Cry_Dratini cry Cry_Dragonair cry Cry_Dragonite +.endif @ P_FAMILY_DRATINI +.if P_FAMILY_MEWTWO == TRUE cry Cry_Mewtwo +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_MewtwoMegaX + cry Cry_MewtwoMegaY +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MEWTWO +.if P_FAMILY_MEW == TRUE cry Cry_Mew +.endif @ P_FAMILY_MEW +.if P_FAMILY_CHIKORITA == TRUE cry Cry_Chikorita cry Cry_Bayleef cry Cry_Meganium +.endif @ P_FAMILY_CHIKORITA +.if P_FAMILY_CYNDAQUIL == TRUE cry Cry_Cyndaquil cry Cry_Quilava cry Cry_Typhlosion +.endif @ P_FAMILY_CYNDAQUIL +.if P_FAMILY_TOTODILE == TRUE cry Cry_Totodile cry Cry_Croconaw cry Cry_Feraligatr +.endif @ P_FAMILY_TOTODILE +.if P_FAMILY_SENTRET == TRUE cry Cry_Sentret cry Cry_Furret +.endif @ P_FAMILY_SENTRET +.if P_FAMILY_HOOTHOOT == TRUE cry Cry_Hoothoot cry Cry_Noctowl +.endif @ P_FAMILY_HOOTHOOT +.if P_FAMILY_LEDYBA == TRUE cry Cry_Ledyba cry Cry_Ledian +.endif @ P_FAMILY_LEDYBA +.if P_FAMILY_SPINARAK == TRUE cry Cry_Spinarak cry Cry_Ariados - cry Cry_Crobat +.endif @ P_FAMILY_SPINARAK +.if P_FAMILY_CHINCHOU == TRUE cry Cry_Chinchou cry Cry_Lanturn - cry Cry_Pichu - cry Cry_Cleffa - cry Cry_Igglybuff +.endif @ P_FAMILY_CHINCHOU +.if P_FAMILY_TOGEPI == TRUE cry Cry_Togepi cry Cry_Togetic +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Togekiss +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_TOGEPI +.if P_FAMILY_NATU == TRUE cry Cry_Natu cry Cry_Xatu +.endif @ P_FAMILY_NATU +.if P_FAMILY_MAREEP == TRUE cry Cry_Mareep cry Cry_Flaaffy cry Cry_Ampharos - cry Cry_Bellossom +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_AmpharosMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MAREEP +.if P_FAMILY_MARILL == TRUE +.if P_GEN_3_CROSS_EVOS == TRUE + cry Cry_Azurill +.endif @ P_GEN_3_CROSS_EVOS cry Cry_Marill cry Cry_Azumarill +.endif @ P_FAMILY_MARILL +.if P_FAMILY_SUDOWOODO == TRUE + cry Cry_Bonsly cry Cry_Sudowoodo - cry Cry_Politoed +.endif @ P_FAMILY_SUDOWOODO +.if P_FAMILY_HOPPIP == TRUE cry Cry_Hoppip cry Cry_Skiploom cry Cry_Jumpluff +.endif @ P_FAMILY_HOPPIP +.if P_FAMILY_AIPOM == TRUE cry Cry_Aipom + cry Cry_Ambipom +.endif @ P_FAMILY_AIPOM +.if P_FAMILY_SUNKERN == TRUE cry Cry_Sunkern cry Cry_Sunflora +.endif @ P_FAMILY_SUNKERN +.if P_FAMILY_YANMA == TRUE cry Cry_Yanma +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Yanmega +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_YANMA +.if P_FAMILY_WOOPER == TRUE cry Cry_Wooper cry Cry_Quagsire - cry Cry_Espeon - cry Cry_Umbreon +.if P_PALDEAN_FORMS == TRUE + cry Cry_Clodsire +.endif @ P_PALDEAN_FORMS +.endif @ P_FAMILY_WOOPER +.if P_FAMILY_MURKROW == TRUE cry Cry_Murkrow - cry Cry_Slowking + cry Cry_Honchkrow +.endif @ P_FAMILY_MURKROW +.if P_FAMILY_MISDREAVUS == TRUE cry Cry_Misdreavus + cry Cry_Mismagius +.endif @ P_FAMILY_MISDREAVUS +.if P_FAMILY_UNOWN == TRUE cry Cry_Unown +.endif @ P_FAMILY_UNOWN +.if P_FAMILY_WOBBUFFET == TRUE +.if P_GEN_3_CROSS_EVOS == TRUE + cry Cry_Wynaut +.endif @ P_GEN_3_CROSS_EVOS cry Cry_Wobbuffet +.endif @ P_FAMILY_WOBBUFFET +.if P_FAMILY_GIRAFARIG == TRUE cry Cry_Girafarig +.if P_GEN_9_CROSS_EVOS == TRUE + cry Cry_Farigiraf +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_GIRAFARIG +.if P_FAMILY_PINECO == TRUE cry Cry_Pineco cry Cry_Forretress +.endif @ P_FAMILY_PINECO +.if P_FAMILY_DUNSPARCE == TRUE cry Cry_Dunsparce +.if P_GEN_9_CROSS_EVOS == TRUE + cry Cry_Dudunsparce +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_DUNSPARCE +.if P_FAMILY_GLIGAR == TRUE cry Cry_Gligar - cry Cry_Steelix +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Gliscor +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_GLIGAR +.if P_FAMILY_SNUBBULL == TRUE cry Cry_Snubbull cry Cry_Granbull +.endif @ P_FAMILY_SNUBBULL +.if P_FAMILY_QWILFISH == TRUE cry Cry_Qwilfish - cry Cry_Scizor +.if P_HISUIAN_FORMS == TRUE + cry Cry_Overqwil +.endif @ P_HISUIAN_FORMS +.endif @ P_FAMILY_QWILFISH +.if P_FAMILY_SHUCKLE == TRUE cry Cry_Shuckle +.endif @ P_FAMILY_SHUCKLE +.if P_FAMILY_HERACROSS == TRUE cry Cry_Heracross +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_HeracrossMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_HERACROSS +.if P_FAMILY_SNEASEL == TRUE cry Cry_Sneasel +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Weavile +.endif @ P_GEN_4_CROSS_EVOS +.if P_HISUIAN_FORMS == TRUE + cry Cry_Sneasler +.endif @ P_HISUIAN_FORMS +.endif @ P_FAMILY_SNEASEL +.if P_FAMILY_TEDDIURSA == TRUE cry Cry_Teddiursa cry Cry_Ursaring +.if P_GEN_9_CROSS_EVOS == TRUE + cry Cry_Ursaluna +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_TEDDIURSA +.if P_FAMILY_SLUGMA == TRUE cry Cry_Slugma cry Cry_Magcargo +.endif @ P_FAMILY_SLUGMA +.if P_FAMILY_SWINUB == TRUE cry Cry_Swinub cry Cry_Piloswine +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Mamoswine +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_SWINUB +.if P_FAMILY_CORSOLA == TRUE cry Cry_Corsola +.if P_GALARIAN_FORMS == TRUE + cry Cry_Cursola +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_CORSOLA +.if P_FAMILY_REMORAID == TRUE cry Cry_Remoraid cry Cry_Octillery +.endif @ P_FAMILY_REMORAID +.if P_FAMILY_DELIBIRD == TRUE cry Cry_Delibird +.endif @ P_FAMILY_DELIBIRD +.if P_FAMILY_MANTINE == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Mantyke +.endif @ P_GEN_4_CROSS_EVOS cry Cry_Mantine +.endif @ P_FAMILY_MANTINE +.if P_FAMILY_SKARMORY == TRUE cry Cry_Skarmory +.endif @ P_FAMILY_SKARMORY +.if P_FAMILY_HOUNDOUR == TRUE cry Cry_Houndour cry Cry_Houndoom - cry Cry_Kingdra +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_HoundoomMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_HOUNDOUR +.if P_FAMILY_PHANPY == TRUE cry Cry_Phanpy cry Cry_Donphan - cry Cry_Porygon2 +.endif @ P_FAMILY_PHANPY +.if P_FAMILY_STANTLER == TRUE cry Cry_Stantler +.if P_GEN_8_CROSS_EVOS == TRUE + cry Cry_Wyrdeer +.endif @ P_GEN_8_CROSS_EVOS +.endif @ P_FAMILY_STANTLER +.if P_FAMILY_SMEARGLE == TRUE cry Cry_Smeargle - cry Cry_Tyrogue - cry Cry_Hitmontop - cry Cry_Smoochum - cry Cry_Elekid - cry Cry_Magby +.endif @ P_FAMILY_SMEARGLE +.if P_FAMILY_MILTANK == TRUE cry Cry_Miltank - cry Cry_Blissey +.endif @ P_FAMILY_MILTANK +.if P_FAMILY_RAIKOU == TRUE cry Cry_Raikou +.endif @ P_FAMILY_RAIKOU +.if P_FAMILY_ENTEI == TRUE cry Cry_Entei +.endif @ P_FAMILY_ENTEI +.if P_FAMILY_SUICUNE == TRUE cry Cry_Suicune +.endif @ P_FAMILY_SUICUNE +.if P_FAMILY_LARVITAR == TRUE cry Cry_Larvitar cry Cry_Pupitar cry Cry_Tyranitar +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_TyranitarMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_LARVITAR +.if P_FAMILY_LUGIA == TRUE cry Cry_Lugia +.endif @ P_FAMILY_LUGIA +.if P_FAMILY_HO_OH == TRUE cry Cry_HoOh +.endif @ P_FAMILY_HO_OH +.if P_FAMILY_CELEBI == TRUE cry Cry_Celebi +.endif @ P_FAMILY_CELEBI +.if P_FAMILY_TREECKO == TRUE cry Cry_Treecko cry Cry_Grovyle cry Cry_Sceptile +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_SceptileMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_TREECKO +.if P_FAMILY_TORCHIC == TRUE cry Cry_Torchic cry Cry_Combusken cry Cry_Blaziken +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_BlazikenMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_TORCHIC +.if P_FAMILY_MUDKIP == TRUE cry Cry_Mudkip cry Cry_Marshtomp cry Cry_Swampert +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_SwampertMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MUDKIP +.if P_FAMILY_POOCHYENA == TRUE cry Cry_Poochyena cry Cry_Mightyena +.endif @ P_FAMILY_POOCHYENA +.if P_FAMILY_ZIGZAGOON == TRUE cry Cry_Zigzagoon cry Cry_Linoone +.if P_GALARIAN_FORMS == TRUE + cry Cry_Obstagoon +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_ZIGZAGOON +.if P_FAMILY_WURMPLE == TRUE cry Cry_Wurmple cry Cry_Silcoon cry Cry_Beautifly cry Cry_Cascoon cry Cry_Dustox +.endif @ P_FAMILY_WURMPLE +.if P_FAMILY_LOTAD == TRUE cry Cry_Lotad cry Cry_Lombre cry Cry_Ludicolo +.endif @ P_FAMILY_LOTAD +.if P_FAMILY_SEEDOT == TRUE cry Cry_Seedot cry Cry_Nuzleaf cry Cry_Shiftry +.endif @ P_FAMILY_SEEDOT +.if P_FAMILY_TAILLOW == TRUE cry Cry_Taillow cry Cry_Swellow +.endif @ P_FAMILY_TAILLOW +.if P_FAMILY_WINGULL == TRUE cry Cry_Wingull cry Cry_Pelipper +.endif @ P_FAMILY_WINGULL +.if P_FAMILY_RALTS == TRUE cry Cry_Ralts cry Cry_Kirlia cry Cry_Gardevoir +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_GardevoirMega +.endif @ P_MEGA_EVOLUTIONS +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Gallade +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_GalladeMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_RALTS +.if P_FAMILY_SURSKIT == TRUE cry Cry_Surskit cry Cry_Masquerain +.endif @ P_FAMILY_SURSKIT +.if P_FAMILY_SHROOMISH == TRUE cry Cry_Shroomish cry Cry_Breloom +.endif @ P_FAMILY_SHROOMISH +.if P_FAMILY_SLAKOTH == TRUE cry Cry_Slakoth cry Cry_Vigoroth cry Cry_Slaking +.endif @ P_FAMILY_SLAKOTH +.if P_FAMILY_NINCADA == TRUE cry Cry_Nincada cry Cry_Ninjask cry Cry_Shedinja +.endif @ P_FAMILY_NINCADA +.if P_FAMILY_WHISMUR == TRUE cry Cry_Whismur cry Cry_Loudred cry Cry_Exploud +.endif @ P_FAMILY_WHISMUR +.if P_FAMILY_MAKUHITA == TRUE cry Cry_Makuhita cry Cry_Hariyama - cry Cry_Azurill +.endif @ P_FAMILY_MAKUHITA +.if P_FAMILY_NOSEPASS == TRUE cry Cry_Nosepass +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Probopass +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_NOSEPASS +.if P_FAMILY_SKITTY == TRUE cry Cry_Skitty cry Cry_Delcatty +.endif @ P_FAMILY_SKITTY +.if P_FAMILY_SABLEYE == TRUE cry Cry_Sableye +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_SableyeMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_SABLEYE +.if P_FAMILY_MAWILE == TRUE cry Cry_Mawile +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_MawileMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MAWILE +.if P_FAMILY_ARON == TRUE cry Cry_Aron cry Cry_Lairon cry Cry_Aggron +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_AggronMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_ARON +.if P_FAMILY_MEDITITE == TRUE cry Cry_Meditite cry Cry_Medicham +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_MedichamMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MEDITITE +.if P_FAMILY_ELECTRIKE == TRUE cry Cry_Electrike cry Cry_Manectric +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_ManectricMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_ELECTRIKE +.if P_FAMILY_PLUSLE == TRUE cry Cry_Plusle +.endif @ P_FAMILY_PLUSLE +.if P_FAMILY_MINUN == TRUE cry Cry_Minun +.endif @ P_FAMILY_MINUN +.if P_FAMILY_VOLBEAT_ILLUMISE == TRUE cry Cry_Volbeat cry Cry_Illumise +.endif @ P_FAMILY_VOLBEAT_ILLUMISE +.if P_FAMILY_ROSELIA == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Budew +.endif @ P_GEN_4_CROSS_EVOS cry Cry_Roselia +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Roserade +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_ROSELIA +.if P_FAMILY_GULPIN == TRUE cry Cry_Gulpin cry Cry_Swalot +.endif @ P_FAMILY_GULPIN +.if P_FAMILY_CARVANHA == TRUE cry Cry_Carvanha cry Cry_Sharpedo +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_SharpedoMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_CARVANHA +.if P_FAMILY_WAILMER == TRUE cry Cry_Wailmer cry Cry_Wailord +.endif @ P_FAMILY_WAILMER +.if P_FAMILY_NUMEL == TRUE cry Cry_Numel cry Cry_Camerupt +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_CameruptMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_NUMEL +.if P_FAMILY_TORKOAL == TRUE cry Cry_Torkoal +.endif @ P_FAMILY_TORKOAL +.if P_FAMILY_SPOINK == TRUE cry Cry_Spoink cry Cry_Grumpig +.endif @ P_FAMILY_SPOINK +.if P_FAMILY_SPINDA == TRUE cry Cry_Spinda +.endif @ P_FAMILY_SPINDA +.if P_FAMILY_TRAPINCH == TRUE cry Cry_Trapinch cry Cry_Vibrava cry Cry_Flygon +.endif @ P_FAMILY_TRAPINCH +.if P_FAMILY_CACNEA == TRUE cry Cry_Cacnea cry Cry_Cacturne +.endif @ P_FAMILY_CACNEA +.if P_FAMILY_SWABLU == TRUE cry Cry_Swablu cry Cry_Altaria +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_AltariaMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_SWABLU +.if P_FAMILY_ZANGOOSE == TRUE cry Cry_Zangoose +.endif @ P_FAMILY_ZANGOOSE +.if P_FAMILY_SEVIPER == TRUE cry Cry_Seviper +.endif @ P_FAMILY_SEVIPER +.if P_FAMILY_LUNATONE == TRUE cry Cry_Lunatone +.endif @ P_FAMILY_LUNATONE +.if P_FAMILY_SOLROCK == TRUE cry Cry_Solrock +.endif @ P_FAMILY_SOLROCK +.if P_FAMILY_BARBOACH == TRUE cry Cry_Barboach cry Cry_Whiscash +.endif @ P_FAMILY_BARBOACH +.if P_FAMILY_CORPHISH == TRUE cry Cry_Corphish cry Cry_Crawdaunt +.endif @ P_FAMILY_CORPHISH +.if P_FAMILY_BALTOY == TRUE cry Cry_Baltoy cry Cry_Claydol +.endif @ P_FAMILY_BALTOY +.if P_FAMILY_LILEEP == TRUE cry Cry_Lileep cry Cry_Cradily +.endif @ P_FAMILY_LILEEP +.if P_FAMILY_ANORITH == TRUE cry Cry_Anorith cry Cry_Armaldo +.endif @ P_FAMILY_ANORITH +.if P_FAMILY_FEEBAS == TRUE cry Cry_Feebas cry Cry_Milotic +.endif @ P_FAMILY_FEEBAS +.if P_FAMILY_CASTFORM == TRUE cry Cry_Castform +.endif @ P_FAMILY_CASTFORM +.if P_FAMILY_KECLEON == TRUE cry Cry_Kecleon +.endif @ P_FAMILY_KECLEON +.if P_FAMILY_SHUPPET == TRUE cry Cry_Shuppet cry Cry_Banette +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_BanetteMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_SHUPPET +.if P_FAMILY_DUSKULL == TRUE cry Cry_Duskull cry Cry_Dusclops +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Dusknoir +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_DUSKULL +.if P_FAMILY_TROPIUS == TRUE cry Cry_Tropius +.endif @ P_FAMILY_TROPIUS +.if P_FAMILY_CHIMECHO == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Chingling +.endif @ P_GEN_4_CROSS_EVOS cry Cry_Chimecho +.endif @ P_FAMILY_CHIMECHO +.if P_FAMILY_ABSOL == TRUE cry Cry_Absol - cry Cry_Wynaut +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_AbsolMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_ABSOL +.if P_FAMILY_SNORUNT == TRUE cry Cry_Snorunt cry Cry_Glalie +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_GlalieMega +.endif @ P_MEGA_EVOLUTIONS +.if P_GEN_4_CROSS_EVOS == TRUE + cry Cry_Froslass +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_SNORUNT +.if P_FAMILY_SPHEAL == TRUE cry Cry_Spheal cry Cry_Sealeo cry Cry_Walrein +.endif @ P_FAMILY_SPHEAL +.if P_FAMILY_CLAMPERL == TRUE cry Cry_Clamperl cry Cry_Huntail cry Cry_Gorebyss +.endif @ P_FAMILY_CLAMPERL +.if P_FAMILY_RELICANTH == TRUE cry Cry_Relicanth +.endif @ P_FAMILY_RELICANTH +.if P_FAMILY_LUVDISC == TRUE cry Cry_Luvdisc +.endif @ P_FAMILY_LUVDISC +.if P_FAMILY_BAGON == TRUE cry Cry_Bagon cry Cry_Shelgon cry Cry_Salamence +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_SalamenceMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_BAGON +.if P_FAMILY_BELDUM == TRUE cry Cry_Beldum cry Cry_Metang cry Cry_Metagross +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_MetagrossMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_BELDUM +.if P_FAMILY_REGIROCK == TRUE cry Cry_Regirock +.endif @ P_FAMILY_REGIROCK +.if P_FAMILY_REGICE == TRUE cry Cry_Regice +.endif @ P_FAMILY_REGICE +.if P_FAMILY_REGISTEEL == TRUE cry Cry_Registeel +.endif @ P_FAMILY_REGISTEEL +.if P_FAMILY_LATIAS == TRUE cry Cry_Latias +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_LatiasMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_LATIAS +.if P_FAMILY_LATIOS == TRUE cry Cry_Latios +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_LatiosMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_LATIOS +.if P_FAMILY_KYOGRE == TRUE cry Cry_Kyogre +.if P_PRIMAL_REVERSIONS == TRUE + cry Cry_KyogrePrimal +.endif @ P_PRIMAL_REVERSIONS +.endif @ P_FAMILY_KYOGRE +.if P_FAMILY_GROUDON == TRUE cry Cry_Groudon +.if P_PRIMAL_REVERSIONS == TRUE + cry Cry_GroudonPrimal +.endif @ P_PRIMAL_REVERSIONS +.endif @ P_FAMILY_GROUDON +.if P_FAMILY_RAYQUAZA == TRUE cry Cry_Rayquaza +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_RayquazaMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_RAYQUAZA +.if P_FAMILY_JIRACHI == TRUE cry Cry_Jirachi +.endif @ P_FAMILY_JIRACHI +.if P_FAMILY_DEOXYS == TRUE cry Cry_Deoxys -.if P_GEN_4_POKEMON == TRUE +.endif @ P_FAMILY_DEOXYS +.if P_FAMILY_TURTWIG == TRUE cry Cry_Turtwig cry Cry_Grotle cry Cry_Torterra +.endif @ P_FAMILY_TURTWIG +.if P_FAMILY_CHIMCHAR == TRUE cry Cry_Chimchar cry Cry_Monferno cry Cry_Infernape +.endif @ P_FAMILY_CHIMCHAR +.if P_FAMILY_PIPLUP == TRUE cry Cry_Piplup cry Cry_Prinplup cry Cry_Empoleon +.endif @ P_FAMILY_PIPLUP +.if P_FAMILY_STARLY == TRUE cry Cry_Starly cry Cry_Staravia cry Cry_Staraptor +.endif @ P_FAMILY_STARLY +.if P_FAMILY_BIDOOF == TRUE cry Cry_Bidoof cry Cry_Bibarel +.endif @ P_FAMILY_BIDOOF +.if P_FAMILY_KRICKETOT == TRUE cry Cry_Kricketot cry Cry_Kricketune +.endif @ P_FAMILY_KRICKETOT +.if P_FAMILY_SHINX == TRUE cry Cry_Shinx cry Cry_Luxio cry Cry_Luxray - cry Cry_Budew - cry Cry_Roserade +.endif @ P_FAMILY_SHINX +.if P_FAMILY_CRANIDOS == TRUE cry Cry_Cranidos cry Cry_Rampardos +.endif @ P_FAMILY_CRANIDOS +.if P_FAMILY_SHIELDON == TRUE cry Cry_Shieldon cry Cry_Bastiodon +.endif @ P_FAMILY_SHIELDON +.if P_FAMILY_BURMY == TRUE cry Cry_Burmy cry Cry_Wormadam cry Cry_Mothim +.endif @ P_FAMILY_BURMY +.if P_FAMILY_COMBEE == TRUE cry Cry_Combee cry Cry_Vespiquen +.endif @ P_FAMILY_COMBEE +.if P_FAMILY_PACHIRISU == TRUE cry Cry_Pachirisu +.endif @ P_FAMILY_PACHIRISU +.if P_FAMILY_BUIZEL == TRUE cry Cry_Buizel cry Cry_Floatzel +.endif @ P_FAMILY_BUIZEL +.if P_FAMILY_CHERUBI == TRUE cry Cry_Cherubi cry Cry_Cherrim +.endif @ P_FAMILY_CHERUBI +.if P_FAMILY_SHELLOS == TRUE cry Cry_Shellos cry Cry_Gastrodon - cry Cry_Ambipom +.endif @ P_FAMILY_SHELLOS +.if P_FAMILY_DRIFLOON == TRUE cry Cry_Drifloon cry Cry_Drifblim +.endif @ P_FAMILY_DRIFLOON +.if P_FAMILY_BUNEARY == TRUE cry Cry_Buneary cry Cry_Lopunny - cry Cry_Mismagius - cry Cry_Honchkrow +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_LopunnyMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_BUNEARY +.if P_FAMILY_GLAMEOW == TRUE cry Cry_Glameow cry Cry_Purugly - cry Cry_Chingling +.endif @ P_FAMILY_GLAMEOW +.if P_FAMILY_STUNKY == TRUE cry Cry_Stunky cry Cry_Skuntank +.endif @ P_FAMILY_STUNKY +.if P_FAMILY_BRONZOR == TRUE cry Cry_Bronzor cry Cry_Bronzong - cry Cry_Bonsly - cry Cry_MimeJr - cry Cry_Happiny +.endif @ P_FAMILY_BRONZOR +.if P_FAMILY_CHATOT == TRUE cry Cry_Chatot +.endif @ P_FAMILY_CHATOT +.if P_FAMILY_SPIRITOMB == TRUE cry Cry_Spiritomb +.endif @ P_FAMILY_SPIRITOMB +.if P_FAMILY_GIBLE == TRUE cry Cry_Gible cry Cry_Gabite cry Cry_Garchomp - cry Cry_Munchlax +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_GarchompMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_GIBLE +.if P_FAMILY_RIOLU == TRUE cry Cry_Riolu cry Cry_Lucario +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_LucarioMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_RIOLU +.if P_FAMILY_HIPPOPOTAS == TRUE cry Cry_Hippopotas cry Cry_Hippowdon +.endif @ P_FAMILY_HIPPOPOTAS +.if P_FAMILY_SKORUPI == TRUE cry Cry_Skorupi cry Cry_Drapion +.endif @ P_FAMILY_SKORUPI +.if P_FAMILY_CROAGUNK == TRUE cry Cry_Croagunk cry Cry_Toxicroak +.endif @ P_FAMILY_CROAGUNK +.if P_FAMILY_CARNIVINE == TRUE cry Cry_Carnivine +.endif @ P_FAMILY_CARNIVINE +.if P_FAMILY_FINNEON == TRUE cry Cry_Finneon cry Cry_Lumineon - cry Cry_Mantyke +.endif @ P_FAMILY_FINNEON +.if P_FAMILY_SNOVER == TRUE cry Cry_Snover cry Cry_Abomasnow - cry Cry_Weavile - cry Cry_Magnezone - cry Cry_Lickilicky - cry Cry_Rhyperior - cry Cry_Tangrowth - cry Cry_Electivire - cry Cry_Magmortar - cry Cry_Togekiss - cry Cry_Yanmega - cry Cry_Leafeon - cry Cry_Glaceon - cry Cry_Gliscor - cry Cry_Mamoswine - cry Cry_PorygonZ - cry Cry_Gallade - cry Cry_Probopass - cry Cry_Dusknoir - cry Cry_Froslass +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_AbomasnowMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_SNOVER +.if P_FAMILY_ROTOM == TRUE cry Cry_Rotom +.endif @ P_FAMILY_ROTOM +.if P_FAMILY_UXIE == TRUE cry Cry_Uxie +.endif @ P_FAMILY_UXIE +.if P_FAMILY_MESPRIT == TRUE cry Cry_Mesprit +.endif @ P_FAMILY_MESPRIT +.if P_FAMILY_AZELF == TRUE cry Cry_Azelf +.endif @ P_FAMILY_AZELF +.if P_FAMILY_DIALGA == TRUE cry Cry_Dialga +.endif @ P_FAMILY_DIALGA +.if P_FAMILY_PALKIA == TRUE cry Cry_Palkia +.endif @ P_FAMILY_PALKIA +.if P_FAMILY_HEATRAN == TRUE cry Cry_Heatran +.endif @ P_FAMILY_HEATRAN +.if P_FAMILY_REGIGIGAS == TRUE cry Cry_Regigigas +.endif @ P_FAMILY_REGIGIGAS +.if P_FAMILY_GIRATINA == TRUE cry Cry_Giratina +.endif @ P_FAMILY_GIRATINA +.if P_FAMILY_CRESSELIA == TRUE cry Cry_Cresselia +.endif @ P_FAMILY_CRESSELIA +.if P_FAMILY_MANAPHY == TRUE cry Cry_Phione cry Cry_Manaphy +.endif @ P_FAMILY_MANAPHY +.if P_FAMILY_DARKRAI == TRUE cry Cry_Darkrai - cry Cry_Shaymin +.endif @ P_FAMILY_DARKRAI +.if P_FAMILY_SHAYMIN == TRUE + cry Cry_ShayminLand + cry Cry_ShayminSky +.endif @ P_FAMILY_SHAYMIN +.if P_FAMILY_ARCEUS == TRUE cry Cry_Arceus -.else - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown -.endif -.if P_GEN_5_POKEMON == TRUE +.endif @ P_FAMILY_ARCEUS +.if P_FAMILY_VICTINI == TRUE cry Cry_Victini +.endif @ P_FAMILY_VICTINI +.if P_FAMILY_SNIVY == TRUE cry Cry_Snivy cry Cry_Servine cry Cry_Serperior +.endif @ P_FAMILY_SNIVY +.if P_FAMILY_TEPIG == TRUE cry Cry_Tepig cry Cry_Pignite cry Cry_Emboar +.endif @ P_FAMILY_TEPIG +.if P_FAMILY_OSHAWOTT == TRUE cry Cry_Oshawott cry Cry_Dewott cry Cry_Samurott +.endif @ P_FAMILY_OSHAWOTT +.if P_FAMILY_PATRAT == TRUE cry Cry_Patrat cry Cry_Watchog +.endif @ P_FAMILY_PATRAT +.if P_FAMILY_LILLIPUP == TRUE cry Cry_Lillipup cry Cry_Herdier cry Cry_Stoutland +.endif @ P_FAMILY_LILLIPUP +.if P_FAMILY_PURRLOIN == TRUE cry Cry_Purrloin cry Cry_Liepard +.endif @ P_FAMILY_PURRLOIN +.if P_FAMILY_PANSAGE == TRUE cry Cry_Pansage cry Cry_Simisage +.endif @ P_FAMILY_PANSAGE +.if P_FAMILY_PANSEAR == TRUE cry Cry_Pansear cry Cry_Simisear +.endif @ P_FAMILY_PANSEAR +.if P_FAMILY_PANPOUR == TRUE cry Cry_Panpour cry Cry_Simipour +.endif @ P_FAMILY_PANPOUR +.if P_FAMILY_MUNNA == TRUE cry Cry_Munna cry Cry_Musharna +.endif @ P_FAMILY_MUNNA +.if P_FAMILY_PIDOVE == TRUE cry Cry_Pidove cry Cry_Tranquill cry Cry_Unfezant +.endif @ P_FAMILY_PIDOVE +.if P_FAMILY_BLITZLE == TRUE cry Cry_Blitzle cry Cry_Zebstrika +.endif @ P_FAMILY_BLITZLE +.if P_FAMILY_ROGGENROLA == TRUE cry Cry_Roggenrola cry Cry_Boldore cry Cry_Gigalith +.endif @ P_FAMILY_ROGGENROLA +.if P_FAMILY_WOOBAT == TRUE cry Cry_Woobat cry Cry_Swoobat +.endif @ P_FAMILY_WOOBAT +.if P_FAMILY_DRILBUR == TRUE cry Cry_Drilbur cry Cry_Excadrill +.endif @ P_FAMILY_DRILBUR +.if P_FAMILY_AUDINO == TRUE cry Cry_Audino +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_AudinoMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_AUDINO +.if P_FAMILY_TIMBURR == TRUE cry Cry_Timburr cry Cry_Gurdurr cry Cry_Conkeldurr +.endif @ P_FAMILY_TIMBURR +.if P_FAMILY_TYMPOLE == TRUE cry Cry_Tympole cry Cry_Palpitoad cry Cry_Seismitoad +.endif @ P_FAMILY_TYMPOLE +.if P_FAMILY_THROH == TRUE cry Cry_Throh +.endif @ P_FAMILY_THROH +.if P_FAMILY_SAWK == TRUE cry Cry_Sawk +.endif @ P_FAMILY_SAWK +.if P_FAMILY_SEWADDLE == TRUE cry Cry_Sewaddle cry Cry_Swadloon cry Cry_Leavanny +.endif @ P_FAMILY_SEWADDLE +.if P_FAMILY_VENIPEDE == TRUE cry Cry_Venipede cry Cry_Whirlipede cry Cry_Scolipede +.endif @ P_FAMILY_VENIPEDE +.if P_FAMILY_COTTONEE == TRUE cry Cry_Cottonee cry Cry_Whimsicott +.endif @ P_FAMILY_COTTONEE +.if P_FAMILY_PETILIL == TRUE cry Cry_Petilil cry Cry_Lilligant +.endif @ P_FAMILY_PETILIL +.if P_FAMILY_BASCULIN == TRUE cry Cry_Basculin +.if P_HISUIAN_FORMS == TRUE + cry Cry_Basculegion +.endif @ P_HISUIAN_FORMS +.endif @ P_FAMILY_BASCULIN +.if P_FAMILY_SANDILE == TRUE cry Cry_Sandile cry Cry_Krokorok cry Cry_Krookodile +.endif @ P_FAMILY_SANDILE +.if P_FAMILY_DARUMAKA == TRUE cry Cry_Darumaka cry Cry_Darmanitan +.endif @ P_FAMILY_DARUMAKA +.if P_FAMILY_MARACTUS == TRUE cry Cry_Maractus +.endif @ P_FAMILY_MARACTUS +.if P_FAMILY_DWEBBLE == TRUE cry Cry_Dwebble cry Cry_Crustle +.endif @ P_FAMILY_DWEBBLE +.if P_FAMILY_SCRAGGY == TRUE cry Cry_Scraggy cry Cry_Scrafty +.endif @ P_FAMILY_SCRAGGY +.if P_FAMILY_SIGILYPH == TRUE cry Cry_Sigilyph +.endif @ P_FAMILY_SIGILYPH +.if P_FAMILY_YAMASK == TRUE cry Cry_Yamask cry Cry_Cofagrigus +.if P_GALARIAN_FORMS == TRUE + cry Cry_Runerigus +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_YAMASK +.if P_FAMILY_TIRTOUGA == TRUE cry Cry_Tirtouga cry Cry_Carracosta +.endif @ P_FAMILY_TIRTOUGA +.if P_FAMILY_ARCHEN == TRUE cry Cry_Archen cry Cry_Archeops +.endif @ P_FAMILY_ARCHEN +.if P_FAMILY_TRUBBISH == TRUE cry Cry_Trubbish cry Cry_Garbodor +.endif @ P_FAMILY_TRUBBISH +.if P_FAMILY_ZORUA == TRUE cry Cry_Zorua cry Cry_Zoroark +.endif @ P_FAMILY_ZORUA +.if P_FAMILY_MINCCINO == TRUE cry Cry_Minccino cry Cry_Cinccino +.endif @ P_FAMILY_MINCCINO +.if P_FAMILY_GOTHITA == TRUE cry Cry_Gothita cry Cry_Gothorita cry Cry_Gothitelle +.endif @ P_FAMILY_GOTHITA +.if P_FAMILY_SOLOSIS == TRUE cry Cry_Solosis cry Cry_Duosion cry Cry_Reuniclus +.endif @ P_FAMILY_SOLOSIS +.if P_FAMILY_DUCKLETT == TRUE cry Cry_Ducklett cry Cry_Swanna +.endif @ P_FAMILY_DUCKLETT +.if P_FAMILY_VANILLITE == TRUE cry Cry_Vanillite cry Cry_Vanillish cry Cry_Vanilluxe +.endif @ P_FAMILY_VANILLITE +.if P_FAMILY_DEERLING == TRUE cry Cry_Deerling cry Cry_Sawsbuck +.endif @ P_FAMILY_DEERLING +.if P_FAMILY_EMOLGA == TRUE cry Cry_Emolga +.endif @ P_FAMILY_EMOLGA +.if P_FAMILY_KARRABLAST == TRUE cry Cry_Karrablast cry Cry_Escavalier +.endif @ P_FAMILY_KARRABLAST +.if P_FAMILY_FOONGUS == TRUE cry Cry_Foongus cry Cry_Amoonguss +.endif @ P_FAMILY_FOONGUS +.if P_FAMILY_FRILLISH == TRUE cry Cry_Frillish cry Cry_Jellicent +.endif @ P_FAMILY_FRILLISH +.if P_FAMILY_ALOMOMOLA == TRUE cry Cry_Alomomola +.endif @ P_FAMILY_ALOMOMOLA +.if P_FAMILY_JOLTIK == TRUE cry Cry_Joltik cry Cry_Galvantula +.endif @ P_FAMILY_JOLTIK +.if P_FAMILY_FERROSEED == TRUE cry Cry_Ferroseed cry Cry_Ferrothorn +.endif @ P_FAMILY_FERROSEED +.if P_FAMILY_KLINK == TRUE cry Cry_Klink cry Cry_Klang cry Cry_Klinklang +.endif @ P_FAMILY_KLINK +.if P_FAMILY_TYNAMO == TRUE cry Cry_Tynamo cry Cry_Eelektrik cry Cry_Eelektross +.endif @ P_FAMILY_TYNAMO +.if P_FAMILY_ELGYEM == TRUE cry Cry_Elgyem cry Cry_Beheeyem +.endif @ P_FAMILY_ELGYEM +.if P_FAMILY_LITWICK == TRUE cry Cry_Litwick cry Cry_Lampent cry Cry_Chandelure +.endif @ P_FAMILY_LITWICK +.if P_FAMILY_AXEW == TRUE cry Cry_Axew cry Cry_Fraxure cry Cry_Haxorus +.endif @ P_FAMILY_AXEW +.if P_FAMILY_CUBCHOO == TRUE cry Cry_Cubchoo cry Cry_Beartic +.endif @ P_FAMILY_CUBCHOO +.if P_FAMILY_CRYOGONAL == TRUE cry Cry_Cryogonal +.endif @ P_FAMILY_CRYOGONAL +.if P_FAMILY_SHELMET == TRUE cry Cry_Shelmet cry Cry_Accelgor +.endif @ P_FAMILY_SHELMET +.if P_FAMILY_STUNFISK == TRUE cry Cry_Stunfisk +.endif @ P_FAMILY_STUNFISK +.if P_FAMILY_MIENFOO == TRUE cry Cry_Mienfoo cry Cry_Mienshao +.endif @ P_FAMILY_MIENFOO +.if P_FAMILY_DRUDDIGON == TRUE cry Cry_Druddigon +.endif @ P_FAMILY_DRUDDIGON +.if P_FAMILY_GOLETT == TRUE cry Cry_Golett cry Cry_Golurk +.endif @ P_FAMILY_GOLETT +.if P_FAMILY_PAWNIARD == TRUE cry Cry_Pawniard cry Cry_Bisharp +.if P_GEN_9_CROSS_EVOS == TRUE + cry Cry_Kingambit +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_PAWNIARD +.if P_FAMILY_BOUFFALANT == TRUE cry Cry_Bouffalant +.endif @ P_FAMILY_BOUFFALANT +.if P_FAMILY_RUFFLET == TRUE cry Cry_Rufflet cry Cry_Braviary +.endif @ P_FAMILY_RUFFLET +.if P_FAMILY_VULLABY == TRUE cry Cry_Vullaby cry Cry_Mandibuzz +.endif @ P_FAMILY_VULLABY +.if P_FAMILY_HEATMOR == TRUE cry Cry_Heatmor +.endif @ P_FAMILY_HEATMOR +.if P_FAMILY_DURANT == TRUE cry Cry_Durant +.endif @ P_FAMILY_DURANT +.if P_FAMILY_DEINO == TRUE cry Cry_Deino cry Cry_Zweilous cry Cry_Hydreigon +.endif @ P_FAMILY_DEINO +.if P_FAMILY_LARVESTA == TRUE cry Cry_Larvesta cry Cry_Volcarona +.endif @ P_FAMILY_LARVESTA +.if P_FAMILY_COBALION == TRUE cry Cry_Cobalion +.endif @ P_FAMILY_COBALION +.if P_FAMILY_TERRAKION == TRUE cry Cry_Terrakion +.endif @ P_FAMILY_TERRAKION +.if P_FAMILY_VIRIZION == TRUE cry Cry_Virizion - cry Cry_Tornadus - cry Cry_Thundurus +.endif @ P_FAMILY_VIRIZION +.if P_FAMILY_TORNADUS == TRUE + cry Cry_TornadusIncarnate + cry Cry_TornadusTherian +.endif @ P_FAMILY_TORNADUS +.if P_FAMILY_THUNDURUS == TRUE + cry Cry_ThundurusIncarnate + cry Cry_ThundurusTherian +.endif @ P_FAMILY_THUNDURUS +.if P_FAMILY_RESHIRAM == TRUE cry Cry_Reshiram +.endif @ P_FAMILY_RESHIRAM +.if P_FAMILY_ZEKROM == TRUE cry Cry_Zekrom - cry Cry_Landorus +.endif @ P_FAMILY_ZEKROM +.if P_FAMILY_LANDORUS == TRUE + cry Cry_LandorusIncarnate + cry Cry_LandorusTherian +.endif @ P_FAMILY_LANDORUS +.if P_FAMILY_KYUREM == TRUE cry Cry_Kyurem +.if P_FUSION_FORMS == TRUE + cry Cry_KyuremWhite + cry Cry_KyuremBlack +.endif @ P_FUSION_FORMS +.endif @ P_FAMILY_KYUREM +.if P_FAMILY_KELDEO == TRUE cry Cry_Keldeo +.endif @ P_FAMILY_KELDEO +.if P_FAMILY_MELOETTA == TRUE cry Cry_Meloetta +.endif @ P_FAMILY_MELOETTA +.if P_FAMILY_GENESECT == TRUE cry Cry_Genesect -.else - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown -.endif -.if P_GEN_6_POKEMON == TRUE +.endif @ P_FAMILY_GENESECT +.if P_FAMILY_CHESPIN == TRUE cry Cry_Chespin cry Cry_Quilladin cry Cry_Chesnaught +.endif @ P_FAMILY_CHESPIN +.if P_FAMILY_FENNEKIN == TRUE cry Cry_Fennekin cry Cry_Braixen cry Cry_Delphox +.endif @ P_FAMILY_FENNEKIN +.if P_FAMILY_FROAKIE == TRUE cry Cry_Froakie cry Cry_Frogadier cry Cry_Greninja +.endif @ P_FAMILY_FROAKIE +.if P_FAMILY_BUNNELBY == TRUE cry Cry_Bunnelby cry Cry_Diggersby +.endif @ P_FAMILY_BUNNELBY +.if P_FAMILY_FLETCHLING == TRUE cry Cry_Fletchling cry Cry_Fletchinder cry Cry_Talonflame +.endif @ P_FAMILY_FLETCHLING +.if P_FAMILY_SCATTERBUG == TRUE cry Cry_Scatterbug cry Cry_Spewpa cry Cry_Vivillon +.endif @ P_FAMILY_SCATTERBUG +.if P_FAMILY_LITLEO == TRUE cry Cry_Litleo cry Cry_Pyroar +.endif @ P_FAMILY_LITLEO +.if P_FAMILY_FLABEBE == TRUE cry Cry_Flabebe cry Cry_Floette + cry Cry_FloetteEternalFlower cry Cry_Florges +.endif @ P_FAMILY_FLABEBE +.if P_FAMILY_SKIDDO == TRUE cry Cry_Skiddo cry Cry_Gogoat +.endif @ P_FAMILY_SKIDDO +.if P_FAMILY_PANCHAM == TRUE cry Cry_Pancham cry Cry_Pangoro +.endif @ P_FAMILY_PANCHAM +.if P_FAMILY_FURFROU == TRUE cry Cry_Furfrou +.endif @ P_FAMILY_FURFROU +.if P_FAMILY_ESPURR == TRUE cry Cry_Espurr cry Cry_Meowstic +.endif @ P_FAMILY_ESPURR +.if P_FAMILY_HONEDGE == TRUE cry Cry_Honedge cry Cry_Doublade cry Cry_Aegislash +.endif @ P_FAMILY_HONEDGE +.if P_FAMILY_SPRITZEE == TRUE cry Cry_Spritzee cry Cry_Aromatisse +.endif @ P_FAMILY_SPRITZEE +.if P_FAMILY_SWIRLIX == TRUE cry Cry_Swirlix cry Cry_Slurpuff +.endif @ P_FAMILY_SWIRLIX +.if P_FAMILY_INKAY == TRUE cry Cry_Inkay cry Cry_Malamar +.endif @ P_FAMILY_INKAY +.if P_FAMILY_BINACLE == TRUE cry Cry_Binacle cry Cry_Barbaracle +.endif @ P_FAMILY_BINACLE +.if P_FAMILY_SKRELP == TRUE cry Cry_Skrelp cry Cry_Dragalge +.endif @ P_FAMILY_SKRELP +.if P_FAMILY_CLAUNCHER == TRUE cry Cry_Clauncher cry Cry_Clawitzer +.endif @ P_FAMILY_CLAUNCHER +.if P_FAMILY_HELIOPTILE == TRUE cry Cry_Helioptile cry Cry_Heliolisk +.endif @ P_FAMILY_HELIOPTILE +.if P_FAMILY_TYRUNT == TRUE cry Cry_Tyrunt cry Cry_Tyrantrum +.endif @ P_FAMILY_TYRUNT +.if P_FAMILY_AMAURA == TRUE cry Cry_Amaura cry Cry_Aurorus - cry Cry_Sylveon +.endif @ P_FAMILY_AMAURA +.if P_FAMILY_HAWLUCHA == TRUE cry Cry_Hawlucha +.endif @ P_FAMILY_HAWLUCHA +.if P_FAMILY_DEDENNE == TRUE cry Cry_Dedenne +.endif @ P_FAMILY_DEDENNE +.if P_FAMILY_CARBINK == TRUE cry Cry_Carbink +.endif @ P_FAMILY_CARBINK +.if P_FAMILY_GOOMY == TRUE cry Cry_Goomy cry Cry_Sliggoo cry Cry_Goodra - cry_uncomp Cry_Klefki +.endif @ P_FAMILY_GOOMY +.if P_FAMILY_KLEFKI == TRUE + cry Cry_Klefki +.endif @ P_FAMILY_KLEFKI +.if P_FAMILY_PHANTUMP == TRUE cry Cry_Phantump cry Cry_Trevenant +.endif @ P_FAMILY_PHANTUMP +.if P_FAMILY_PUMPKABOO == TRUE cry Cry_Pumpkaboo + cry Cry_PumpkabooSuper cry Cry_Gourgeist + cry Cry_GourgeistSuper +.endif @ P_FAMILY_PUMPKABOO +.if P_FAMILY_BERGMITE == TRUE cry Cry_Bergmite cry Cry_Avalugg +.endif @ P_FAMILY_BERGMITE +.if P_FAMILY_NOIBAT == TRUE cry Cry_Noibat cry Cry_Noivern +.endif @ P_FAMILY_NOIBAT +.if P_FAMILY_XERNEAS == TRUE cry Cry_Xerneas +.endif @ P_FAMILY_XERNEAS +.if P_FAMILY_YVELTAL == TRUE cry Cry_Yveltal - cry Cry_Zygarde +.endif @ P_FAMILY_YVELTAL +.if P_FAMILY_ZYGARDE == TRUE + cry Cry_Zygarde50 + cry Cry_Zygarde10 + cry Cry_ZygardeComplete +.endif @ P_FAMILY_ZYGARDE +.if P_FAMILY_DIANCIE == TRUE cry Cry_Diancie - cry Cry_Hoopa +.if P_MEGA_EVOLUTIONS == TRUE + cry Cry_DiancieMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_DIANCIE +.if P_FAMILY_HOOPA == TRUE + cry Cry_HoopaConfined + cry Cry_HoopaUnbound +.endif @ P_FAMILY_HOOPA +.if P_FAMILY_VOLCANION == TRUE cry Cry_Volcanion -.else - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown -.endif -.if P_GEN_7_POKEMON == TRUE +.endif @ P_FAMILY_VOLCANION +.if P_FAMILY_ROWLET == TRUE cry Cry_Rowlet cry Cry_Dartrix cry Cry_Decidueye +.endif @ P_FAMILY_ROWLET +.if P_FAMILY_LITTEN == TRUE cry Cry_Litten cry Cry_Torracat cry Cry_Incineroar +.endif @ P_FAMILY_LITTEN +.if P_FAMILY_POPPLIO == TRUE cry Cry_Popplio cry Cry_Brionne cry Cry_Primarina +.endif @ P_FAMILY_POPPLIO +.if P_FAMILY_PIKIPEK == TRUE cry Cry_Pikipek cry Cry_Trumbeak cry Cry_Toucannon +.endif @ P_FAMILY_PIKIPEK +.if P_FAMILY_YUNGOOS == TRUE cry Cry_Yungoos cry Cry_Gumshoos +.endif @ P_FAMILY_YUNGOOS +.if P_FAMILY_GRUBBIN == TRUE cry Cry_Grubbin cry Cry_Charjabug cry Cry_Vikavolt +.endif @ P_FAMILY_GRUBBIN +.if P_FAMILY_CRABRAWLER == TRUE cry Cry_Crabrawler cry Cry_Crabominable - cry Cry_Oricorio +.endif @ P_FAMILY_CRABRAWLER +.if P_FAMILY_ORICORIO == TRUE + cry Cry_OricorioBaile + cry Cry_OricorioPomPom + cry Cry_OricorioPau + cry Cry_OricorioSensu +.endif @ P_FAMILY_ORICORIO +.if P_FAMILY_CUTIEFLY == TRUE cry Cry_Cutiefly cry Cry_Ribombee +.endif @ P_FAMILY_CUTIEFLY +.if P_FAMILY_ROCKRUFF == TRUE cry Cry_Rockruff - cry Cry_Lycanroc - cry Cry_Wishiwashi + cry Cry_LycanrocMidday + cry Cry_LycanrocMidnight + cry Cry_LycanrocDusk +.endif @ P_FAMILY_ROCKRUFF +.if P_FAMILY_WISHIWASHI == TRUE + cry Cry_WishiwashiSolo + cry Cry_WishiwashiSchool +.endif @ P_FAMILY_WISHIWASHI +.if P_FAMILY_MAREANIE == TRUE cry Cry_Mareanie cry Cry_Toxapex +.endif @ P_FAMILY_MAREANIE +.if P_FAMILY_MUDBRAY == TRUE cry Cry_Mudbray cry Cry_Mudsdale +.endif @ P_FAMILY_MUDBRAY +.if P_FAMILY_DEWPIDER == TRUE cry Cry_Dewpider cry Cry_Araquanid +.endif @ P_FAMILY_DEWPIDER +.if P_FAMILY_FOMANTIS == TRUE cry Cry_Fomantis cry Cry_Lurantis +.endif @ P_FAMILY_FOMANTIS +.if P_FAMILY_MORELULL == TRUE cry Cry_Morelull cry Cry_Shiinotic +.endif @ P_FAMILY_MORELULL +.if P_FAMILY_SALANDIT == TRUE cry Cry_Salandit cry Cry_Salazzle +.endif @ P_FAMILY_SALANDIT +.if P_FAMILY_STUFFUL == TRUE cry Cry_Stufful cry Cry_Bewear +.endif @ P_FAMILY_STUFFUL +.if P_FAMILY_BOUNSWEET == TRUE cry Cry_Bounsweet cry Cry_Steenee cry Cry_Tsareena +.endif @ P_FAMILY_BOUNSWEET +.if P_FAMILY_COMFEY == TRUE cry Cry_Comfey +.endif @ P_FAMILY_COMFEY +.if P_FAMILY_ORANGURU == TRUE cry Cry_Oranguru +.endif @ P_FAMILY_ORANGURU +.if P_FAMILY_PASSIMIAN == TRUE cry Cry_Passimian +.endif @ P_FAMILY_PASSIMIAN +.if P_FAMILY_WIMPOD == TRUE cry Cry_Wimpod cry Cry_Golisopod +.endif @ P_FAMILY_WIMPOD +.if P_FAMILY_SANDYGAST == TRUE cry Cry_Sandygast cry Cry_Palossand +.endif @ P_FAMILY_SANDYGAST +.if P_FAMILY_PYUKUMUKU == TRUE cry Cry_Pyukumuku +.endif @ P_FAMILY_PYUKUMUKU +.if P_FAMILY_TYPE_NULL == TRUE cry Cry_TypeNull cry Cry_Silvally +.endif @ P_FAMILY_TYPE_NULL +.if P_FAMILY_MINIOR == TRUE cry Cry_Minior +.endif @ P_FAMILY_MINIOR +.if P_FAMILY_KOMALA == TRUE cry Cry_Komala +.endif @ P_FAMILY_KOMALA +.if P_FAMILY_TURTONATOR == TRUE cry Cry_Turtonator +.endif @ P_FAMILY_TURTONATOR +.if P_FAMILY_TOGEDEMARU == TRUE cry Cry_Togedemaru +.endif @ P_FAMILY_TOGEDEMARU +.if P_FAMILY_MIMIKYU == TRUE cry Cry_Mimikyu +.endif @ P_FAMILY_MIMIKYU +.if P_FAMILY_BRUXISH == TRUE cry Cry_Bruxish +.endif @ P_FAMILY_BRUXISH +.if P_FAMILY_DRAMPA == TRUE cry Cry_Drampa +.endif @ P_FAMILY_DRAMPA +.if P_FAMILY_DHELMISE == TRUE cry Cry_Dhelmise +.endif @ P_FAMILY_DHELMISE +.if P_FAMILY_JANGMO_O == TRUE cry Cry_JangmoO cry Cry_HakamoO cry Cry_KommoO +.endif @ P_FAMILY_JANGMO_O +.if P_FAMILY_TAPU_KOKO == TRUE cry Cry_TapuKoko +.endif @ P_FAMILY_TAPU_KOKO +.if P_FAMILY_TAPU_LELE == TRUE cry Cry_TapuLele +.endif @ P_FAMILY_TAPU_LELE +.if P_FAMILY_TAPU_BULU == TRUE cry Cry_TapuBulu +.endif @ P_FAMILY_TAPU_BULU +.if P_FAMILY_TAPU_FINI == TRUE cry Cry_TapuFini +.endif @ P_FAMILY_TAPU_FINI +.if P_FAMILY_COSMOG == TRUE cry Cry_Cosmog cry Cry_Cosmoem cry Cry_Solgaleo cry Cry_Lunala +.endif @ P_FAMILY_COSMOG +.if P_FAMILY_NIHILEGO == TRUE cry Cry_Nihilego +.endif @ P_FAMILY_NIHILEGO +.if P_FAMILY_BUZZWOLE == TRUE cry Cry_Buzzwole +.endif @ P_FAMILY_BUZZWOLE +.if P_FAMILY_PHEROMOSA == TRUE cry Cry_Pheromosa +.endif @ P_FAMILY_PHEROMOSA +.if P_FAMILY_XURKITREE == TRUE cry Cry_Xurkitree +.endif @ P_FAMILY_XURKITREE +.if P_FAMILY_CELESTEELA == TRUE cry Cry_Celesteela +.endif @ P_FAMILY_CELESTEELA +.if P_FAMILY_KARTANA == TRUE cry Cry_Kartana +.endif @ P_FAMILY_KARTANA +.if P_FAMILY_GUZZLORD == TRUE cry Cry_Guzzlord +.endif @ P_FAMILY_GUZZLORD +.if P_FAMILY_NECROZMA == TRUE cry Cry_Necrozma +.if P_FUSION_FORMS == TRUE + cry Cry_NecrozmaDuskMane + cry Cry_NecrozmaDawnWings +.if P_ULTRA_BURST_FORMS == TRUE + cry Cry_NecrozmaUltra +.endif @ P_ULTRA_BURST_FORMS +.endif @ P_FUSION_FORMS +.endif @ P_FAMILY_NECROZMA +.if P_FAMILY_MAGEARNA == TRUE cry Cry_Magearna +.endif @ P_FAMILY_MAGEARNA +.if P_FAMILY_MARSHADOW == TRUE cry Cry_Marshadow +.endif @ P_FAMILY_MARSHADOW +.if P_FAMILY_POIPOLE == TRUE cry Cry_Poipole cry Cry_Naganadel +.endif @ P_FAMILY_POIPOLE +.if P_FAMILY_STAKATAKA == TRUE cry Cry_Stakataka +.endif @ P_FAMILY_STAKATAKA +.if P_FAMILY_BLACEPHALON == TRUE cry Cry_Blacephalon +.endif @ P_FAMILY_BLACEPHALON +.if P_FAMILY_ZERAORA == TRUE cry Cry_Zeraora +.endif @ P_FAMILY_ZERAORA +.if P_FAMILY_MELTAN == TRUE cry Cry_Meltan cry Cry_Melmetal -.else - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown -.endif -.if P_GEN_8_POKEMON == TRUE +.endif @ P_FAMILY_MELTAN +.if P_FAMILY_GROOKEY == TRUE cry Cry_Grookey cry Cry_Thwackey cry Cry_Rillaboom +.endif @ P_FAMILY_GROOKEY +.if P_FAMILY_SCORBUNNY == TRUE cry Cry_Scorbunny cry Cry_Raboot cry Cry_Cinderace +.endif @ P_FAMILY_SCORBUNNY +.if P_FAMILY_SOBBLE == TRUE cry Cry_Sobble cry Cry_Drizzile cry Cry_Inteleon +.endif @ P_FAMILY_SOBBLE +.if P_FAMILY_SKWOVET == TRUE cry Cry_Skwovet cry Cry_Greedent +.endif @ P_FAMILY_SKWOVET +.if P_FAMILY_ROOKIDEE == TRUE cry Cry_Rookidee cry Cry_Corvisquire cry Cry_Corviknight +.endif @ P_FAMILY_ROOKIDEE +.if P_FAMILY_BLIPBUG == TRUE cry Cry_Blipbug cry Cry_Dottler cry Cry_Orbeetle +.endif @ P_FAMILY_BLIPBUG +.if P_FAMILY_NICKIT == TRUE cry Cry_Nickit cry Cry_Thievul +.endif @ P_FAMILY_NICKIT +.if P_FAMILY_GOSSIFLEUR == TRUE cry Cry_Gossifleur cry Cry_Eldegoss +.endif @ P_FAMILY_GOSSIFLEUR +.if P_FAMILY_WOOLOO == TRUE cry Cry_Wooloo cry Cry_Dubwool +.endif @ P_FAMILY_WOOLOO +.if P_FAMILY_CHEWTLE == TRUE cry Cry_Chewtle cry Cry_Drednaw +.endif @ P_FAMILY_CHEWTLE +.if P_FAMILY_YAMPER == TRUE cry Cry_Yamper cry Cry_Boltund +.endif @ P_FAMILY_YAMPER +.if P_FAMILY_ROLYCOLY == TRUE cry Cry_Rolycoly cry Cry_Carkol cry Cry_Coalossal +.endif @ P_FAMILY_ROLYCOLY +.if P_FAMILY_APPLIN == TRUE cry Cry_Applin cry Cry_Flapple cry Cry_Appletun +.if P_GEN_9_CROSS_EVOS == TRUE + cry Cry_Dipplin +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_APPLIN +.if P_FAMILY_SILICOBRA == TRUE cry Cry_Silicobra cry Cry_Sandaconda +.endif @ P_FAMILY_SILICOBRA +.if P_FAMILY_CRAMORANT == TRUE cry Cry_Cramorant +.endif @ P_FAMILY_CRAMORANT +.if P_FAMILY_ARROKUDA == TRUE cry Cry_Arrokuda cry Cry_Barraskewda +.endif @ P_FAMILY_ARROKUDA +.if P_FAMILY_TOXEL == TRUE cry Cry_Toxel - cry Cry_Toxtricity + cry Cry_ToxtricityAmped + cry Cry_ToxtricityLowKey +.endif @ P_FAMILY_TOXEL +.if P_FAMILY_SIZZLIPEDE == TRUE cry Cry_Sizzlipede cry Cry_Centiskorch +.endif @ P_FAMILY_SIZZLIPEDE +.if P_FAMILY_CLOBBOPUS == TRUE cry Cry_Clobbopus cry Cry_Grapploct +.endif @ P_FAMILY_CLOBBOPUS +.if P_FAMILY_SINISTEA == TRUE cry Cry_Sinistea cry Cry_Polteageist +.endif @ P_FAMILY_SINISTEA +.if P_FAMILY_HATENNA == TRUE cry Cry_Hatenna cry Cry_Hattrem cry Cry_Hatterene +.endif @ P_FAMILY_HATENNA +.if P_FAMILY_IMPIDIMP == TRUE cry Cry_Impidimp cry Cry_Morgrem cry Cry_Grimmsnarl - cry Cry_Obstagoon - cry Cry_Perrserker - cry Cry_Cursola - cry Cry_Sirfetchd - cry Cry_MrRime - cry Cry_Runerigus +.endif @ P_FAMILY_IMPIDIMP +.if P_FAMILY_MILCERY == TRUE cry Cry_Milcery cry Cry_Alcremie +.endif @ P_FAMILY_MILCERY +.if P_FAMILY_FALINKS == TRUE cry Cry_Falinks +.endif @ P_FAMILY_FALINKS +.if P_FAMILY_PINCURCHIN == TRUE cry Cry_Pincurchin +.endif @ P_FAMILY_PINCURCHIN +.if P_FAMILY_SNOM == TRUE cry Cry_Snom cry Cry_Frosmoth +.endif @ P_FAMILY_SNOM +.if P_FAMILY_STONJOURNER == TRUE cry Cry_Stonjourner - cry Cry_Eiscue - cry Cry_Indeedee - cry Cry_Morpeko +.endif @ P_FAMILY_STONJOURNER +.if P_FAMILY_EISCUE == TRUE + cry Cry_EiscueIceFace + cry Cry_EiscueNoiceFace +.endif @ P_FAMILY_EISCUE +.if P_FAMILY_INDEEDEE == TRUE + cry Cry_IndeedeeMale + cry Cry_IndeedeeFemale +.endif @ P_FAMILY_INDEEDEE +.if P_FAMILY_MORPEKO == TRUE + cry Cry_MorpekoFullBelly + cry Cry_MorpekoHangry +.endif @ P_FAMILY_MORPEKO +.if P_FAMILY_CUFANT == TRUE cry Cry_Cufant cry Cry_Copperajah +.endif @ P_FAMILY_CUFANT +.if P_FAMILY_DRACOZOLT == TRUE cry Cry_Dracozolt +.endif @ P_FAMILY_DRACOZOLT +.if P_FAMILY_ARCTOZOLT == TRUE cry Cry_Arctozolt +.endif @ P_FAMILY_ARCTOZOLT +.if P_FAMILY_DRACOVISH == TRUE cry Cry_Dracovish +.endif @ P_FAMILY_DRACOVISH +.if P_FAMILY_ARCTOVISH == TRUE cry Cry_Arctovish +.endif @ P_FAMILY_ARCTOVISH +.if P_FAMILY_DURALUDON == TRUE cry Cry_Duraludon +.endif @ P_FAMILY_DURALUDON +.if P_FAMILY_DREEPY == TRUE cry Cry_Dreepy cry Cry_Drakloak cry Cry_Dragapult - cry Cry_Zacian - cry Cry_Zamazenta - cry Cry_Eternatus - cry Cry_Kubfu - cry Cry_Urshifu - cry Cry_Zarude - cry Cry_Regieleki - cry Cry_Regidrago - cry Cry_Glastrier - cry Cry_Spectrier - cry Cry_Calyrex - cry Cry_Wyrdeer - cry Cry_Kleavor - cry Cry_Ursaluna - cry Cry_Basculegion - cry Cry_Sneasler - cry Cry_Overqwil - cry Cry_Enamorus -.else - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown -.endif - @ Megas - cry Cry_VenusaurMega - cry Cry_CharizardMegaX - cry Cry_CharizardMegaY - cry Cry_BlastoiseMega - cry Cry_BeedrillMega - cry Cry_PidgeotMega - cry Cry_AlakazamMega - cry Cry_SlowbroMega - cry Cry_GengarMega - cry Cry_KangaskhanMega - cry Cry_PinsirMega - cry Cry_GyaradosMega - cry Cry_AerodactylMega - cry Cry_MewtwoMegaX - cry Cry_MewtwoMegaY - cry Cry_AmpharosMega - cry Cry_SteelixMega - cry Cry_ScizorMega - cry Cry_HeracrossMega - cry Cry_HoundoomMega - cry Cry_TyranitarMega - cry Cry_SceptileMega - cry Cry_BlazikenMega - cry Cry_SwampertMega - cry Cry_GardevoirMega - cry Cry_SableyeMega - cry Cry_MawileMega - cry Cry_AggronMega - cry Cry_MedichamMega - cry Cry_ManectricMega - cry Cry_SharpedoMega - cry Cry_CameruptMega - cry Cry_AltariaMega - cry Cry_BanetteMega - cry Cry_AbsolMega - cry Cry_GlalieMega - cry Cry_SalamenceMega - cry Cry_MetagrossMega - cry Cry_LatiasMega - cry Cry_LatiosMega -.if P_GEN_4_POKEMON == TRUE - cry Cry_LopunnyMega - cry Cry_GarchompMega - cry Cry_LucarioMega - cry Cry_AbomasnowMega - cry Cry_GalladeMega -.else - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown -.endif -.if P_GEN_5_POKEMON == TRUE - cry Cry_AudinoMega -.else - cry Cry_Unown -.endif -.if P_GEN_6_POKEMON == TRUE - cry Cry_DiancieMega -.else - cry Cry_Unown -.endif - @ Special Mega + Primals - cry Cry_RayquazaMega - cry Cry_KyogrePrimal - cry Cry_GroudonPrimal - @ Alolan Forms - cry Cry_Rattata - cry Cry_Raticate - cry Cry_Raichu - cry Cry_Sandshrew - cry Cry_Sandslash - cry Cry_Vulpix - cry Cry_Ninetales - cry Cry_Diglett - cry Cry_Dugtrio - cry Cry_Meowth - cry Cry_Persian - cry Cry_Geodude - cry Cry_Graveler - cry Cry_Golem - cry Cry_Grimer - cry Cry_Muk - cry Cry_Exeggutor - cry Cry_Marowak - @ Galarian Forms - cry Cry_Meowth - cry Cry_Ponyta - cry Cry_Rapidash - cry Cry_SlowpokeGalarian - cry Cry_Slowbro - cry Cry_Farfetchd - cry Cry_Weezing - cry Cry_MrMime - cry Cry_Articuno - cry Cry_Zapdos - cry Cry_Moltres - cry Cry_Slowking - cry Cry_Corsola - cry Cry_Zigzagoon - cry Cry_Linoone -.if P_GEN_5_POKEMON == TRUE - cry Cry_Darumaka - cry Cry_Darmanitan - cry Cry_Yamask - cry Cry_Stunfisk -.else - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown -.endif - @ Hisuian Forms - cry Cry_Growlithe - cry Cry_Arcanine - cry Cry_Voltorb - cry Cry_Electrode - cry Cry_Typhlosion - cry Cry_Qwilfish - cry Cry_Sneasel -.if P_GEN_5_POKEMON == TRUE - cry Cry_Samurott - cry Cry_Lilligant - cry Cry_Zorua - cry Cry_Zoroark - cry Cry_Braviary -.else - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown -.endif -.if P_GEN_6_POKEMON == TRUE - cry Cry_Sliggoo - cry Cry_Goodra - cry Cry_Avalugg -.else - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown -.endif -.if P_GEN_7_POKEMON == TRUE - cry Cry_Decidueye -.else - cry Cry_Unown -.endif - @ Misc Forms - @ Cosplay Pikachu - cry Cry_Pikachu - cry Cry_Pikachu - cry Cry_Pikachu - cry Cry_Pikachu - cry Cry_Pikachu - cry Cry_Pikachu - @ Cap Pikachu - cry Cry_Pikachu - cry Cry_Pikachu - cry Cry_Pikachu - cry Cry_Pikachu - cry Cry_Pikachu - cry Cry_Pikachu - cry Cry_Pikachu - cry Cry_Pikachu - @ Pichu - cry Cry_Pichu - @ Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Castform - cry Cry_Castform - cry Cry_Castform - cry Cry_Castform - @ Deoxys - cry Cry_Deoxys - cry Cry_Deoxys - cry Cry_Deoxys -.if P_GEN_4_POKEMON == TRUE - @ Burmy - cry Cry_Burmy - cry Cry_Burmy - @ Wormadam - cry Cry_Wormadam - cry Cry_Wormadam - @ Cherrim - cry Cry_Cherrim - @ Shellos - cry Cry_Shellos - @ Gastrodon - cry Cry_Gastrodon - @ Rotom - cry Cry_Rotom - cry Cry_Rotom - cry Cry_Rotom - cry Cry_Rotom - cry Cry_Rotom - @ Origin Forme - cry Cry_Dialga - cry Cry_Palkia - cry Cry_Giratina - @ Shaymin - cry Cry_ShayminSky - @ Arceus - cry Cry_Arceus - cry Cry_Arceus - cry Cry_Arceus - cry Cry_Arceus - cry Cry_Arceus - cry Cry_Arceus - cry Cry_Arceus - cry Cry_Arceus - cry Cry_Arceus - cry Cry_Arceus - cry Cry_Arceus - cry Cry_Arceus - cry Cry_Arceus - cry Cry_Arceus - cry Cry_Arceus - cry Cry_Arceus - cry Cry_Arceus -.else - @ Burmy - cry Cry_Unown - cry Cry_Unown - @ Wormadam - cry Cry_Unown - cry Cry_Unown - @ Cherrim - cry Cry_Unown - @ Shellos - cry Cry_Unown - @ Gastrodon - cry Cry_Unown - @ Rotom - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Origin Forme - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Shaymin - cry Cry_Unown - @ Arceus - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown -.endif -.if P_GEN_5_POKEMON == TRUE - @ Basculin - cry Cry_Basculin - cry Cry_Basculin - @ Darmanitan - cry Cry_Darmanitan - cry Cry_Darmanitan - @ Deerling - cry Cry_Deerling - cry Cry_Deerling - cry Cry_Deerling - @ Sawsbuck - cry Cry_Sawsbuck - cry Cry_Sawsbuck - cry Cry_Sawsbuck - @ Therian Forms - cry Cry_TornadusTherian - cry Cry_ThundurusTherian - cry Cry_LandorusTherian - cry Cry_EnamorusTherian - @ Kyurem - cry Cry_KyuremWhite - cry Cry_KyuremBlack - @ Keldeo - cry Cry_Keldeo - @ Meloetta - cry Cry_Meloetta - @ Genesect - cry Cry_Genesect - cry Cry_Genesect - cry Cry_Genesect - cry Cry_Genesect -.else - @ Basculin - cry Cry_Unown - cry Cry_Unown - @ Darmanitan - cry Cry_Unown - cry Cry_Unown - @ Deerling - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Sawsbuck - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Therian Forms - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Kyurem - cry Cry_Unown - cry Cry_Unown - @ Keldeo - cry Cry_Unown - @ Meloetta - cry Cry_Unown - @ Genesect - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown -.endif -.if P_GEN_6_POKEMON == TRUE - @ Greninja - cry Cry_Greninja - cry Cry_Greninja - @ Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - cry Cry_Vivillon - @ Flabébé - cry Cry_Flabebe - cry Cry_Flabebe - cry Cry_Flabebe - cry Cry_Flabebe - @ Floette - cry Cry_Floette - cry Cry_Floette - cry Cry_Floette - cry Cry_Floette - cry Cry_FloetteEternalFlower - @ Florges - cry Cry_Florges - cry Cry_Florges - cry Cry_Florges - cry Cry_Florges - @ Furfrou - cry Cry_Furfrou - cry Cry_Furfrou - cry Cry_Furfrou - cry Cry_Furfrou - cry Cry_Furfrou - cry Cry_Furfrou - cry Cry_Furfrou - cry Cry_Furfrou - cry Cry_Furfrou - @ Meowstic - cry Cry_Meowstic - @ Aegislash - cry Cry_Aegislash - @ Pumpkaboo - cry Cry_Pumpkaboo - cry Cry_Pumpkaboo - cry Cry_PumpkabooSuper - @ Gourgeist - cry Cry_Gourgeist - cry Cry_Gourgeist - cry Cry_GourgeistSuper - @ Xerneas - cry Cry_Xerneas - @ Zygarde - cry Cry_Zygarde10 - cry Cry_Zygarde10 - cry Cry_Zygarde - cry Cry_ZygardeComplete - @ Hoopa - cry Cry_HoopaUnbound -.else -@ Greninja - cry Cry_Unown - cry Cry_Unown - @ Vivillon - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Flabébé - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Floette - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Florges - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Furfrou - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Meowstic - cry Cry_Unown - @ Aegislash - cry Cry_Unown - @ Pumpkaboo - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Gourgeist - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Xerneas - cry Cry_Unown - @ Zygarde - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Hoopa - cry Cry_Unown -.endif -.if P_GEN_7_POKEMON == TRUE - @ Oricorio - cry Cry_OricorioPomPom - cry Cry_OricorioPau - cry Cry_OricorioSensu - @ Rockruff - cry Cry_Rockruff - @ Lycanroc - cry Cry_LycanrocMidnight - cry Cry_LycanrocDusk - @ Wishiwashi - cry Cry_WishiwashiSchool - @ Silvally - cry Cry_Silvally - cry Cry_Silvally - cry Cry_Silvally - cry Cry_Silvally - cry Cry_Silvally - cry Cry_Silvally - cry Cry_Silvally - cry Cry_Silvally - cry Cry_Silvally - cry Cry_Silvally - cry Cry_Silvally - cry Cry_Silvally - cry Cry_Silvally - cry Cry_Silvally - cry Cry_Silvally - cry Cry_Silvally - cry Cry_Silvally - @ Minior - cry Cry_Minior - cry Cry_Minior - cry Cry_Minior - cry Cry_Minior - cry Cry_Minior - cry Cry_Minior - cry Cry_Minior - cry Cry_Minior - cry Cry_Minior - cry Cry_Minior - cry Cry_Minior - cry Cry_Minior - cry Cry_Minior - @ Mimikyu - cry Cry_Mimikyu - @ Necrozma - cry Cry_NecrozmaDuskMane - cry Cry_NecrozmaDawnWings - cry Cry_NecrozmaUltra - @ Magearna - cry Cry_Magearna -.else - @ Oricorio - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Rockruff - cry Cry_Unown - @ Lycanroc - cry Cry_Unown - cry Cry_Unown - @ Wishiwashi - cry Cry_Unown - @ Silvally - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Minior - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Mimikyu - cry Cry_Unown - @ Necrozma - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Magearna - cry Cry_Unown -.endif -.if P_GEN_8_POKEMON == TRUE - @ Cramorant - cry Cry_Cramorant - cry Cry_Cramorant - @ Toxtricity - cry Cry_ToxtricityLowKey - @ Sinistea - cry Cry_Sinistea - @ Polteageist - cry Cry_Polteageist - @ Alcremie - cry Cry_Alcremie - cry Cry_Alcremie - cry Cry_Alcremie - cry Cry_Alcremie - cry Cry_Alcremie - cry Cry_Alcremie - cry Cry_Alcremie - cry Cry_Alcremie - @ Eiscue - cry Cry_EiscueNoiceFace - @ Indeedee - cry Cry_IndeedeeFemale - @ Morpeko - cry Cry_MorpekoHangry - @ Zacian +.endif @ P_FAMILY_DREEPY +.if P_FAMILY_ZACIAN == TRUE + cry Cry_ZacianHeroOfManyBattles cry Cry_ZacianCrownedSword - @ Zamazenta +.endif @ P_FAMILY_ZACIAN +.if P_FAMILY_ZAMAZENTA == TRUE + cry Cry_ZamazentaHeroOfManyBattles cry Cry_ZamazentaCrownedShield - @ Eternatus +.endif @ P_FAMILY_ZAMAZENTA +.if P_FAMILY_ETERNATUS == TRUE + cry Cry_Eternatus cry Cry_EternatusEternamax - @ Urshifu +.endif @ P_FAMILY_ETERNATUS +.if P_FAMILY_KUBFU == TRUE + cry Cry_Kubfu + cry Cry_UrshifuSingleStrikeStyle cry Cry_UrshifuRapidStrikeStyle - @ Zarude +.endif @ P_FAMILY_KUBFU +.if P_FAMILY_ZARUDE == TRUE cry Cry_Zarude - @ Calyrex +.endif @ P_FAMILY_ZARUDE +.if P_FAMILY_REGIELEKI == TRUE + cry Cry_Regieleki +.endif @ P_FAMILY_REGIELEKI +.if P_FAMILY_REGIDRAGO == TRUE + cry Cry_Regidrago +.endif @ P_FAMILY_REGIDRAGO +.if P_FAMILY_GLASTRIER == TRUE + cry Cry_Glastrier +.endif @ P_FAMILY_GLASTRIER +.if P_FAMILY_SPECTRIER == TRUE + cry Cry_Spectrier +.endif @ P_FAMILY_SPECTRIER +.if P_FAMILY_CALYREX == TRUE + cry Cry_Calyrex +.if P_FUSION_FORMS == TRUE cry Cry_CalyrexIceRider cry Cry_CalyrexShadowRider - @ Basculegion - cry Cry_Basculegion -.else - @ Cramorant - cry Cry_Unown - cry Cry_Unown - @ Toxtricity - cry Cry_Unown - @ Sinistea - cry Cry_Unown - @ Polteageist - cry Cry_Unown - @ Alcremie - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - cry Cry_Unown - @ Eiscue - cry Cry_Unown - @ Indeedee - cry Cry_Unown - @ Morpeko - cry Cry_Unown - @ Zacian - cry Cry_Unown - @ Zamazenta - cry Cry_Unown - @ Eternatus - cry Cry_Unown - @ Urshifu - cry Cry_Unown - @ Zarude - cry Cry_Unown - @ Calyrex - cry Cry_Unown - cry Cry_Unown - @ Basculegion - cry Cry_Unown -.endif +.endif @ P_FUSION_FORMS +.endif @ P_FAMILY_CALYREX +.if P_FAMILY_ENAMORUS == TRUE + cry Cry_EnamorusIncarnate + cry Cry_EnamorusTherian +.endif @ P_FAMILY_ENAMORUS +.if P_FAMILY_SPRIGATITO == TRUE + cry Cry_Sprigatito + cry Cry_Floragato + cry Cry_Meowscarada +.endif @ P_FAMILY_SPRIGATITO +.if P_FAMILY_FUECOCO == TRUE + cry Cry_Fuecoco + cry Cry_Crocalor + cry Cry_Skeledirge +.endif @ P_FAMILY_FUECOCO +.if P_FAMILY_QUAXLY == TRUE + cry Cry_Quaxly + cry Cry_Quaxwell + cry Cry_Quaquaval +.endif @ P_FAMILY_QUAXLY +.if P_FAMILY_LECHONK == TRUE + cry Cry_Lechonk + cry Cry_OinkologneMale + cry Cry_OinkologneFemale +.endif @ P_FAMILY_LECHONK +.if P_FAMILY_TAROUNTULA == TRUE + cry Cry_Tarountula + cry Cry_Spidops +.endif @ P_FAMILY_TAROUNTULA +.if P_FAMILY_NYMBLE == TRUE + cry Cry_Nymble + cry Cry_Lokix +.endif @ P_FAMILY_NYMBLE +.if P_FAMILY_PAWMI == TRUE + cry Cry_Pawmi + cry Cry_Pawmo + cry Cry_Pawmot +.endif @ P_FAMILY_PAWMI +.if P_FAMILY_TANDEMAUS == TRUE + cry Cry_Tandemaus + cry Cry_MausholdFamilyOfThree + cry Cry_MausholdFamilyOfFour +.endif @ P_FAMILY_TANDEMAUS +.if P_FAMILY_FIDOUGH == TRUE + cry Cry_Fidough + cry Cry_Dachsbun +.endif @ P_FAMILY_FIDOUGH +.if P_FAMILY_SMOLIV == TRUE + cry Cry_Smoliv + cry Cry_Dolliv + cry Cry_Arboliva +.endif @ P_FAMILY_SMOLIV +.if P_FAMILY_SQUAWKABILLY == TRUE + cry Cry_Squawkabilly +.endif @ P_FAMILY_SQUAWKABILLY +.if P_FAMILY_NACLI == TRUE + cry Cry_Nacli + cry Cry_Naclstack + cry Cry_Garganacl +.endif @ P_FAMILY_NACLI +.if P_FAMILY_CHARCADET == TRUE + cry Cry_Charcadet + cry Cry_Armarouge + cry Cry_Ceruledge +.endif @ P_FAMILY_CHARCADET +.if P_FAMILY_TADBULB == TRUE + cry Cry_Tadbulb + cry Cry_Bellibolt +.endif @ P_FAMILY_TADBULB +.if P_FAMILY_WATTREL == TRUE + cry Cry_Wattrel + cry Cry_Kilowattrel +.endif @ P_FAMILY_WATTREL +.if P_FAMILY_MASCHIFF == TRUE + cry Cry_Maschiff + cry Cry_Mabosstiff +.endif @ P_FAMILY_MASCHIFF +.if P_FAMILY_SHROODLE == TRUE + cry Cry_Shroodle + cry Cry_Grafaiai +.endif @ P_FAMILY_SHROODLE +.if P_FAMILY_BRAMBLIN == TRUE + cry Cry_Bramblin + cry Cry_Brambleghast +.endif @ P_FAMILY_BRAMBLIN +.if P_FAMILY_TOEDSCOOL == TRUE + cry Cry_Toedscool + cry Cry_Toedscruel +.endif @ P_FAMILY_TOEDSCOOL +.if P_FAMILY_KLAWF == TRUE + cry Cry_Klawf +.endif @ P_FAMILY_KLAWF +.if P_FAMILY_CAPSAKID == TRUE + cry Cry_Capsakid + cry Cry_Scovillain +.endif @ P_FAMILY_CAPSAKID +.if P_FAMILY_RELLOR == TRUE + cry Cry_Rellor + cry Cry_Rabsca +.endif @ P_FAMILY_RELLOR +.if P_FAMILY_FLITTLE == TRUE + cry Cry_Flittle + cry Cry_Espathra +.endif @ P_FAMILY_FLITTLE +.if P_FAMILY_TINKATINK == TRUE + cry Cry_Tinkatink + cry Cry_Tinkatuff + cry Cry_Tinkaton +.endif @ P_FAMILY_TINKATINK +.if P_FAMILY_WIGLETT == TRUE + cry Cry_Wiglett + cry Cry_Wugtrio +.endif @ P_FAMILY_WIGLETT +.if P_FAMILY_BOMBIRDIER == TRUE + cry Cry_Bombirdier +.endif @ P_FAMILY_BOMBIRDIER +.if P_FAMILY_FINIZEN == TRUE + cry Cry_Finizen + cry Cry_PalafinZero + cry Cry_PalafinHero +.endif @ P_FAMILY_FINIZEN +.if P_FAMILY_VAROOM == TRUE + cry Cry_Varoom + cry Cry_Revavroom +.endif @ P_FAMILY_VAROOM +.if P_FAMILY_CYCLIZAR == TRUE + cry Cry_Cyclizar +.endif @ P_FAMILY_CYCLIZAR +.if P_FAMILY_ORTHWORM == TRUE + cry Cry_Orthworm +.endif @ P_FAMILY_ORTHWORM +.if P_FAMILY_GLIMMET == TRUE + cry Cry_Glimmet + cry Cry_Glimmora +.endif @ P_FAMILY_GLIMMET +.if P_FAMILY_GREAVARD == TRUE + cry Cry_Greavard + cry Cry_Houndstone +.endif @ P_FAMILY_GREAVARD +.if P_FAMILY_FLAMIGO == TRUE + cry Cry_Flamigo +.endif @ P_FAMILY_FLAMIGO +.if P_FAMILY_CETODDLE == TRUE + cry Cry_Cetoddle + cry Cry_Cetitan +.endif @ P_FAMILY_CETODDLE +.if P_FAMILY_VELUZA == TRUE + cry Cry_Veluza +.endif @ P_FAMILY_VELUZA +.if P_FAMILY_DONDOZO == TRUE + cry Cry_Dondozo +.endif @ P_FAMILY_DONDOZO +.if P_FAMILY_TATSUGIRI == TRUE + cry Cry_TatsugiriCurly + cry Cry_TatsugiriDroopy + cry Cry_TatsugiriStretchy +.endif @ P_FAMILY_TATSUGIRI +.if P_FAMILY_GREAT_TUSK == TRUE + cry Cry_GreatTusk +.endif @ P_FAMILY_GREAT_TUSK +.if P_FAMILY_SCREAM_TAIL == TRUE + cry Cry_ScreamTail +.endif @ P_FAMILY_SCREAM_TAIL +.if P_FAMILY_BRUTE_BONNET == TRUE + cry Cry_BruteBonnet +.endif @ P_FAMILY_BRUTE_BONNET +.if P_FAMILY_FLUTTER_MANE == TRUE + cry Cry_FlutterMane +.endif @ P_FAMILY_FLUTTER_MANE +.if P_FAMILY_SLITHER_WING == TRUE + cry Cry_SlitherWing +.endif @ P_FAMILY_SLITHER_WING +.if P_FAMILY_SANDY_SHOCKS == TRUE + cry Cry_SandyShocks +.endif @ P_FAMILY_SANDY_SHOCKS +.if P_FAMILY_IRON_TREADS == TRUE + cry Cry_IronTreads +.endif @ P_FAMILY_IRON_TREADS +.if P_FAMILY_IRON_BUNDLE == TRUE + cry Cry_IronBundle +.endif @ P_FAMILY_IRON_BUNDLE +.if P_FAMILY_IRON_HANDS == TRUE + cry Cry_IronHands +.endif @ P_FAMILY_IRON_HANDS +.if P_FAMILY_IRON_JUGULIS == TRUE + cry Cry_IronJugulis +.endif @ P_FAMILY_IRON_JUGULIS +.if P_FAMILY_IRON_MOTH == TRUE + cry Cry_IronMoth +.endif @ P_FAMILY_IRON_MOTH +.if P_FAMILY_IRON_THORNS == TRUE + cry Cry_IronThorns +.endif @ P_FAMILY_IRON_THORNS +.if P_FAMILY_FRIGIBAX == TRUE + cry Cry_Frigibax + cry Cry_Arctibax + cry Cry_Baxcalibur +.endif @ P_FAMILY_FRIGIBAX +.if P_FAMILY_GIMMIGHOUL == TRUE + cry Cry_Gimmighoul + cry Cry_Gholdengo +.endif @ P_FAMILY_GIMMIGHOUL +.if P_FAMILY_WO_CHIEN == TRUE + cry Cry_WoChien +.endif @ P_FAMILY_WO_CHIEN +.if P_FAMILY_CHIEN_PAO == TRUE + cry Cry_ChienPao +.endif @ P_FAMILY_CHIEN_PAO +.if P_FAMILY_TING_LU == TRUE + cry Cry_TingLu +.endif @ P_FAMILY_TING_LU +.if P_FAMILY_CHI_YU == TRUE + cry Cry_ChiYu +.endif @ P_FAMILY_CHI_YU +.if P_FAMILY_ROARING_MOON == TRUE + cry Cry_RoaringMoon +.endif @ P_FAMILY_ROARING_MOON +.if P_FAMILY_IRON_VALIANT == TRUE + cry Cry_IronValiant +.endif @ P_FAMILY_IRON_VALIANT +.if P_FAMILY_KORAIDON == TRUE + cry Cry_Koraidon +.endif @ P_FAMILY_KORAIDON +.if P_FAMILY_MIRAIDON == TRUE + cry Cry_Miraidon +.endif @ P_FAMILY_MIRAIDON +.if P_FAMILY_WALKING_WAKE == TRUE + cry Cry_WalkingWake +.endif @ P_FAMILY_WALKING_WAKE +.if P_FAMILY_IRON_LEAVES == TRUE + cry Cry_IronLeaves +.endif @ P_FAMILY_IRON_LEAVES +.if P_FAMILY_POLTCHAGEIST == TRUE + cry Cry_Poltchageist + cry Cry_Sinistcha +.endif @ P_FAMILY_POLTCHAGEIST +.if P_FAMILY_OKIDOGI == TRUE + cry Cry_Okidogi +.endif @ P_FAMILY_OKIDOGI +.if P_FAMILY_MUNKIDORI == TRUE + cry Cry_Munkidori +.endif @ P_FAMILY_MUNKIDORI +.if P_FAMILY_FEZANDIPITI == TRUE + cry Cry_Fezandipiti +.endif @ P_FAMILY_FEZANDIPITI +.if P_FAMILY_OGERPON == TRUE + cry Cry_Ogerpon +.endif @ P_FAMILY_OGERPON .align 2 gCryTable_Reverse:: +.if P_FAMILY_BULBASAUR == TRUE cry_reverse Cry_Bulbasaur cry_reverse Cry_Ivysaur cry_reverse Cry_Venusaur +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_VenusaurMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_BULBASAUR +.if P_FAMILY_CHARMANDER == TRUE cry_reverse Cry_Charmander cry_reverse Cry_Charmeleon cry_reverse Cry_Charizard +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_CharizardMegaX + cry_reverse Cry_CharizardMegaY +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_CHARMANDER +.if P_FAMILY_SQUIRTLE == TRUE cry_reverse Cry_Squirtle cry_reverse Cry_Wartortle cry_reverse Cry_Blastoise +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_BlastoiseMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_SQUIRTLE +.if P_FAMILY_CATERPIE == TRUE cry_reverse Cry_Caterpie cry_reverse Cry_Metapod cry_reverse Cry_Butterfree +.endif @ P_FAMILY_CATERPIE +.if P_FAMILY_WEEDLE == TRUE cry_reverse Cry_Weedle cry_reverse Cry_Kakuna cry_reverse Cry_Beedrill +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_BeedrillMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_WEEDLE +.if P_FAMILY_PIDGEY == TRUE cry_reverse Cry_Pidgey cry_reverse Cry_Pidgeotto cry_reverse Cry_Pidgeot +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_PidgeotMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_PIDGEY +.if P_FAMILY_RATTATA == TRUE cry_reverse Cry_Rattata cry_reverse Cry_Raticate +.endif @ P_FAMILY_RATTATA +.if P_FAMILY_SPEAROW == TRUE cry_reverse Cry_Spearow cry_reverse Cry_Fearow +.endif @ P_FAMILY_SPEAROW +.if P_FAMILY_EKANS == TRUE cry_reverse Cry_Ekans cry_reverse Cry_Arbok +.endif @ P_FAMILY_EKANS +.if P_FAMILY_PIKACHU == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Pichu +.endif @ P_GEN_2_CROSS_EVOS cry_reverse Cry_Pikachu cry_reverse Cry_Raichu +.endif @ P_FAMILY_PIKACHU +.if P_FAMILY_SANDSHREW == TRUE cry_reverse Cry_Sandshrew cry_reverse Cry_Sandslash +.endif @ P_FAMILY_SANDSHREW +.if P_FAMILY_NIDORAN == TRUE cry_reverse Cry_NidoranF cry_reverse Cry_Nidorina cry_reverse Cry_Nidoqueen cry_reverse Cry_NidoranM cry_reverse Cry_Nidorino cry_reverse Cry_Nidoking +.endif @ P_FAMILY_NIDORAN +.if P_FAMILY_CLEFAIRY == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Cleffa +.endif @ P_GEN_2_CROSS_EVOS cry_reverse Cry_Clefairy cry_reverse Cry_Clefable +.endif @ P_FAMILY_CLEFAIRY +.if P_FAMILY_VULPIX == TRUE cry_reverse Cry_Vulpix cry_reverse Cry_Ninetales +.endif @ P_FAMILY_VULPIX +.if P_FAMILY_JIGGLYPUFF == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Igglybuff +.endif @ P_GEN_2_CROSS_EVOS cry_reverse Cry_Jigglypuff cry_reverse Cry_Wigglytuff +.endif @ P_FAMILY_JIGGLYPUFF +.if P_FAMILY_ZUBAT == TRUE cry_reverse Cry_Zubat cry_reverse Cry_Golbat +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Crobat +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_ZUBAT +.if P_FAMILY_ODDISH == TRUE cry_reverse Cry_Oddish cry_reverse Cry_Gloom cry_reverse Cry_Vileplume +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Bellossom +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_ODDISH +.if P_FAMILY_PARAS == TRUE cry_reverse Cry_Paras cry_reverse Cry_Parasect +.endif @ P_FAMILY_PARAS +.if P_FAMILY_VENONAT == TRUE cry_reverse Cry_Venonat cry_reverse Cry_Venomoth +.endif @ P_FAMILY_VENONAT +.if P_FAMILY_DIGLETT == TRUE cry_reverse Cry_Diglett cry_reverse Cry_Dugtrio +.endif @ P_FAMILY_DIGLETT +.if P_FAMILY_MEOWTH == TRUE cry_reverse Cry_Meowth cry_reverse Cry_Persian +.if P_GALARIAN_FORMS == TRUE + cry_reverse Cry_Perrserker +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_MEOWTH +.if P_FAMILY_PSYDUCK == TRUE cry_reverse Cry_Psyduck cry_reverse Cry_Golduck +.endif @ P_FAMILY_PSYDUCK +.if P_FAMILY_MANKEY == TRUE cry_reverse Cry_Mankey cry_reverse Cry_Primeape +.if P_GEN_9_CROSS_EVOS == TRUE + cry_reverse Cry_Annihilape +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_MANKEY +.if P_FAMILY_GROWLITHE == TRUE cry_reverse Cry_Growlithe cry_reverse Cry_Arcanine +.endif @ P_FAMILY_GROWLITHE +.if P_FAMILY_POLIWAG == TRUE cry_reverse Cry_Poliwag cry_reverse Cry_Poliwhirl cry_reverse Cry_Poliwrath +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Politoed +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_POLIWAG +.if P_FAMILY_ABRA == TRUE cry_reverse Cry_Abra cry_reverse Cry_Kadabra cry_reverse Cry_Alakazam +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_AlakazamMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_ABRA +.if P_FAMILY_MACHOP == TRUE cry_reverse Cry_Machop cry_reverse Cry_Machoke cry_reverse Cry_Machamp +.endif @ P_FAMILY_MACHOP +.if P_FAMILY_BELLSPROUT == TRUE cry_reverse Cry_Bellsprout cry_reverse Cry_Weepinbell cry_reverse Cry_Victreebel +.endif @ P_FAMILY_BELLSPROUT +.if P_FAMILY_TENTACOOL == TRUE cry_reverse Cry_Tentacool cry_reverse Cry_Tentacruel +.endif @ P_FAMILY_TENTACOOL +.if P_FAMILY_GEODUDE == TRUE cry_reverse Cry_Geodude cry_reverse Cry_Graveler cry_reverse Cry_Golem +.endif @ P_FAMILY_GEODUDE +.if P_FAMILY_PONYTA == TRUE cry_reverse Cry_Ponyta cry_reverse Cry_Rapidash +.endif @ P_FAMILY_PONYTA +.if P_FAMILY_SLOWPOKE == TRUE cry_reverse Cry_Slowpoke cry_reverse Cry_Slowbro +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Slowking +.endif @ P_GEN_2_CROSS_EVOS +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_SlowbroMega +.endif @ P_MEGA_EVOLUTIONS +.if P_GALARIAN_FORMS == TRUE + cry_reverse Cry_SlowpokeGalarian +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_SLOWPOKE +.if P_FAMILY_MAGNEMITE == TRUE cry_reverse Cry_Magnemite cry_reverse Cry_Magneton +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Magnezone +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_MAGNEMITE +.if P_FAMILY_FARFETCHD == TRUE cry_reverse Cry_Farfetchd +.if P_GALARIAN_FORMS == TRUE + cry_reverse Cry_Sirfetchd +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_FARFETCHD +.if P_FAMILY_DODUO == TRUE cry_reverse Cry_Doduo cry_reverse Cry_Dodrio +.endif @ P_FAMILY_DODUO +.if P_FAMILY_SEEL == TRUE cry_reverse Cry_Seel cry_reverse Cry_Dewgong +.endif @ P_FAMILY_SEEL +.if P_FAMILY_GRIMER == TRUE cry_reverse Cry_Grimer cry_reverse Cry_Muk +.endif @ P_FAMILY_GRIMER +.if P_FAMILY_SHELLDER == TRUE cry_reverse Cry_Shellder cry_reverse Cry_Cloyster +.endif @ P_FAMILY_SHELLDER +.if P_FAMILY_GASTLY == TRUE cry_reverse Cry_Gastly cry_reverse Cry_Haunter cry_reverse Cry_Gengar +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_GengarMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_GASTLY +.if P_FAMILY_ONIX == TRUE cry_reverse Cry_Onix +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Steelix +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_SteelixMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_ONIX +.if P_FAMILY_DROWZEE == TRUE cry_reverse Cry_Drowzee cry_reverse Cry_Hypno +.endif @ P_FAMILY_DROWZEE +.if P_FAMILY_KRABBY == TRUE cry_reverse Cry_Krabby cry_reverse Cry_Kingler +.endif @ P_FAMILY_KRABBY +.if P_FAMILY_VOLTORB == TRUE cry_reverse Cry_Voltorb cry_reverse Cry_Electrode +.endif @ P_FAMILY_VOLTORB +.if P_FAMILY_EXEGGCUTE == TRUE cry_reverse Cry_Exeggcute cry_reverse Cry_Exeggutor +.endif @ P_FAMILY_EXEGGCUTE +.if P_FAMILY_CUBONE == TRUE cry_reverse Cry_Cubone cry_reverse Cry_Marowak +.endif @ P_FAMILY_CUBONE +.if P_FAMILY_HITMONS == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Tyrogue +.endif @ P_GEN_2_CROSS_EVOS cry_reverse Cry_Hitmonlee cry_reverse Cry_Hitmonchan +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Hitmontop +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_HITMONS +.if P_FAMILY_LICKITUNG == TRUE cry_reverse Cry_Lickitung +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Lickilicky +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_LICKITUNG +.if P_FAMILY_KOFFING == TRUE cry_reverse Cry_Koffing cry_reverse Cry_Weezing +.endif @ P_FAMILY_KOFFING +.if P_FAMILY_RHYHORN == TRUE cry_reverse Cry_Rhyhorn cry_reverse Cry_Rhydon +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Rhyperior +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_RHYHORN +.if P_FAMILY_CHANSEY == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Happiny +.endif @ P_GEN_4_CROSS_EVOS cry_reverse Cry_Chansey +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Blissey +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_CHANSEY +.if P_FAMILY_TANGELA == TRUE cry_reverse Cry_Tangela +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Tangrowth +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_TANGELA +.if P_FAMILY_KANGASKHAN == TRUE cry_reverse Cry_Kangaskhan +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_KangaskhanMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_KANGASKHAN +.if P_FAMILY_HORSEA == TRUE cry_reverse Cry_Horsea cry_reverse Cry_Seadra +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Kingdra +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_HORSEA +.if P_FAMILY_GOLDEEN == TRUE cry_reverse Cry_Goldeen cry_reverse Cry_Seaking +.endif @ P_FAMILY_GOLDEEN +.if P_FAMILY_STARYU == TRUE cry_reverse Cry_Staryu cry_reverse Cry_Starmie +.endif @ P_FAMILY_STARYU +.if P_FAMILY_MR_MIME == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_MimeJr +.endif @ P_GEN_4_CROSS_EVOS cry_reverse Cry_MrMime +.if P_GALARIAN_FORMS == TRUE + cry_reverse Cry_MrRime +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_MR_MIME +.if P_FAMILY_SCYTHER == TRUE cry_reverse Cry_Scyther +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Scizor +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_ScizorMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_GEN_2_CROSS_EVOS +.if P_GEN_8_CROSS_EVOS == TRUE + cry_reverse Cry_Kleavor +.endif @ P_GEN_8_CROSS_EVOS +.endif @ P_FAMILY_SCYTHER +.if P_FAMILY_JYNX == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Smoochum +.endif @ P_GEN_2_CROSS_EVOS cry_reverse Cry_Jynx +.endif @ P_FAMILY_JYNX +.if P_FAMILY_ELECTABUZZ == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Elekid +.endif @ P_GEN_2_CROSS_EVOS cry_reverse Cry_Electabuzz +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Electivire +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_ELECTABUZZ +.if P_FAMILY_MAGMAR == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Magby +.endif @ P_GEN_2_CROSS_EVOS cry_reverse Cry_Magmar +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Magmortar +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_MAGMAR +.if P_FAMILY_PINSIR == TRUE cry_reverse Cry_Pinsir +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_PinsirMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_PINSIR +.if P_FAMILY_TAUROS == TRUE cry_reverse Cry_Tauros +.endif @ P_FAMILY_TAUROS +.if P_FAMILY_MAGIKARP == TRUE cry_reverse Cry_Magikarp cry_reverse Cry_Gyarados +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_GyaradosMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MAGIKARP +.if P_FAMILY_LAPRAS == TRUE cry_reverse Cry_Lapras +.endif @ P_FAMILY_LAPRAS +.if P_FAMILY_DITTO == TRUE cry_reverse Cry_Ditto +.endif @ P_FAMILY_DITTO +.if P_FAMILY_EEVEE == TRUE cry_reverse Cry_Eevee cry_reverse Cry_Vaporeon cry_reverse Cry_Jolteon cry_reverse Cry_Flareon +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Espeon + cry_reverse Cry_Umbreon +.endif @ P_GEN_2_CROSS_EVOS +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Leafeon + cry_reverse Cry_Glaceon +.endif @ P_GEN_4_CROSS_EVOS +.if P_GEN_6_CROSS_EVOS == TRUE + cry_reverse Cry_Sylveon +.endif @ P_GEN_6_CROSS_EVOS +.endif @ P_FAMILY_EEVEE +.if P_FAMILY_PORYGON == TRUE cry_reverse Cry_Porygon +.if P_GEN_2_CROSS_EVOS == TRUE + cry_reverse Cry_Porygon2 +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_PorygonZ +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_PORYGON +.if P_FAMILY_OMANYTE == TRUE cry_reverse Cry_Omanyte cry_reverse Cry_Omastar +.endif @ P_FAMILY_OMANYTE +.if P_FAMILY_KABUTO == TRUE cry_reverse Cry_Kabuto cry_reverse Cry_Kabutops +.endif @ P_FAMILY_KABUTO +.if P_FAMILY_AERODACTYL == TRUE cry_reverse Cry_Aerodactyl +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_AerodactylMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_AERODACTYL +.if P_FAMILY_SNORLAX == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Munchlax +.endif @ P_GEN_4_CROSS_EVOS cry_reverse Cry_Snorlax +.endif @ P_FAMILY_SNORLAX +.if P_FAMILY_ARTICUNO == TRUE cry_reverse Cry_Articuno +.endif @ P_FAMILY_ARTICUNO +.if P_FAMILY_ZAPDOS == TRUE cry_reverse Cry_Zapdos +.endif @ P_FAMILY_ZAPDOS +.if P_FAMILY_MOLTRES == TRUE cry_reverse Cry_Moltres +.endif @ P_FAMILY_MOLTRES +.if P_FAMILY_DRATINI == TRUE cry_reverse Cry_Dratini cry_reverse Cry_Dragonair cry_reverse Cry_Dragonite +.endif @ P_FAMILY_DRATINI +.if P_FAMILY_MEWTWO == TRUE cry_reverse Cry_Mewtwo +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_MewtwoMegaX + cry_reverse Cry_MewtwoMegaY +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MEWTWO +.if P_FAMILY_MEW == TRUE cry_reverse Cry_Mew +.endif @ P_FAMILY_MEW +.if P_FAMILY_CHIKORITA == TRUE cry_reverse Cry_Chikorita cry_reverse Cry_Bayleef cry_reverse Cry_Meganium +.endif @ P_FAMILY_CHIKORITA +.if P_FAMILY_CYNDAQUIL == TRUE cry_reverse Cry_Cyndaquil cry_reverse Cry_Quilava cry_reverse Cry_Typhlosion +.endif @ P_FAMILY_CYNDAQUIL +.if P_FAMILY_TOTODILE == TRUE cry_reverse Cry_Totodile cry_reverse Cry_Croconaw cry_reverse Cry_Feraligatr +.endif @ P_FAMILY_TOTODILE +.if P_FAMILY_SENTRET == TRUE cry_reverse Cry_Sentret cry_reverse Cry_Furret +.endif @ P_FAMILY_SENTRET +.if P_FAMILY_HOOTHOOT == TRUE cry_reverse Cry_Hoothoot cry_reverse Cry_Noctowl +.endif @ P_FAMILY_HOOTHOOT +.if P_FAMILY_LEDYBA == TRUE cry_reverse Cry_Ledyba cry_reverse Cry_Ledian +.endif @ P_FAMILY_LEDYBA +.if P_FAMILY_SPINARAK == TRUE cry_reverse Cry_Spinarak cry_reverse Cry_Ariados - cry_reverse Cry_Crobat +.endif @ P_FAMILY_SPINARAK +.if P_FAMILY_CHINCHOU == TRUE cry_reverse Cry_Chinchou cry_reverse Cry_Lanturn - cry_reverse Cry_Pichu - cry_reverse Cry_Cleffa - cry_reverse Cry_Igglybuff +.endif @ P_FAMILY_CHINCHOU +.if P_FAMILY_TOGEPI == TRUE cry_reverse Cry_Togepi cry_reverse Cry_Togetic +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Togekiss +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_TOGEPI +.if P_FAMILY_NATU == TRUE cry_reverse Cry_Natu cry_reverse Cry_Xatu +.endif @ P_FAMILY_NATU +.if P_FAMILY_MAREEP == TRUE cry_reverse Cry_Mareep cry_reverse Cry_Flaaffy cry_reverse Cry_Ampharos - cry_reverse Cry_Bellossom +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_AmpharosMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MAREEP +.if P_FAMILY_MARILL == TRUE +.if P_GEN_3_CROSS_EVOS == TRUE + cry_reverse Cry_Azurill +.endif @ P_GEN_3_CROSS_EVOS cry_reverse Cry_Marill cry_reverse Cry_Azumarill +.endif @ P_FAMILY_MARILL +.if P_FAMILY_SUDOWOODO == TRUE + cry_reverse Cry_Bonsly cry_reverse Cry_Sudowoodo - cry_reverse Cry_Politoed +.endif @ P_FAMILY_SUDOWOODO +.if P_FAMILY_HOPPIP == TRUE cry_reverse Cry_Hoppip cry_reverse Cry_Skiploom cry_reverse Cry_Jumpluff +.endif @ P_FAMILY_HOPPIP +.if P_FAMILY_AIPOM == TRUE cry_reverse Cry_Aipom + cry_reverse Cry_Ambipom +.endif @ P_FAMILY_AIPOM +.if P_FAMILY_SUNKERN == TRUE cry_reverse Cry_Sunkern cry_reverse Cry_Sunflora +.endif @ P_FAMILY_SUNKERN +.if P_FAMILY_YANMA == TRUE cry_reverse Cry_Yanma +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Yanmega +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_YANMA +.if P_FAMILY_WOOPER == TRUE cry_reverse Cry_Wooper cry_reverse Cry_Quagsire - cry_reverse Cry_Espeon - cry_reverse Cry_Umbreon +.if P_PALDEAN_FORMS == TRUE + cry_reverse Cry_Clodsire +.endif @ P_PALDEAN_FORMS +.endif @ P_FAMILY_WOOPER +.if P_FAMILY_MURKROW == TRUE cry_reverse Cry_Murkrow - cry_reverse Cry_Slowking + cry_reverse Cry_Honchkrow +.endif @ P_FAMILY_MURKROW +.if P_FAMILY_MISDREAVUS == TRUE cry_reverse Cry_Misdreavus + cry_reverse Cry_Mismagius +.endif @ P_FAMILY_MISDREAVUS +.if P_FAMILY_UNOWN == TRUE cry_reverse Cry_Unown +.endif @ P_FAMILY_UNOWN +.if P_FAMILY_WOBBUFFET == TRUE +.if P_GEN_3_CROSS_EVOS == TRUE + cry_reverse Cry_Wynaut +.endif @ P_GEN_3_CROSS_EVOS cry_reverse Cry_Wobbuffet +.endif @ P_FAMILY_WOBBUFFET +.if P_FAMILY_GIRAFARIG == TRUE cry_reverse Cry_Girafarig +.if P_GEN_9_CROSS_EVOS == TRUE + cry_reverse Cry_Farigiraf +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_GIRAFARIG +.if P_FAMILY_PINECO == TRUE cry_reverse Cry_Pineco cry_reverse Cry_Forretress +.endif @ P_FAMILY_PINECO +.if P_FAMILY_DUNSPARCE == TRUE cry_reverse Cry_Dunsparce +.if P_GEN_9_CROSS_EVOS == TRUE + cry_reverse Cry_Dudunsparce +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_DUNSPARCE +.if P_FAMILY_GLIGAR == TRUE cry_reverse Cry_Gligar - cry_reverse Cry_Steelix +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Gliscor +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_GLIGAR +.if P_FAMILY_SNUBBULL == TRUE cry_reverse Cry_Snubbull cry_reverse Cry_Granbull +.endif @ P_FAMILY_SNUBBULL +.if P_FAMILY_QWILFISH == TRUE cry_reverse Cry_Qwilfish - cry_reverse Cry_Scizor +.if P_HISUIAN_FORMS == TRUE + cry_reverse Cry_Overqwil +.endif @ P_HISUIAN_FORMS +.endif @ P_FAMILY_QWILFISH +.if P_FAMILY_SHUCKLE == TRUE cry_reverse Cry_Shuckle +.endif @ P_FAMILY_SHUCKLE +.if P_FAMILY_HERACROSS == TRUE cry_reverse Cry_Heracross +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_HeracrossMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_HERACROSS +.if P_FAMILY_SNEASEL == TRUE cry_reverse Cry_Sneasel +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Weavile +.endif @ P_GEN_4_CROSS_EVOS +.if P_HISUIAN_FORMS == TRUE + cry_reverse Cry_Sneasler +.endif @ P_HISUIAN_FORMS +.endif @ P_FAMILY_SNEASEL +.if P_FAMILY_TEDDIURSA == TRUE cry_reverse Cry_Teddiursa cry_reverse Cry_Ursaring +.if P_GEN_9_CROSS_EVOS == TRUE + cry_reverse Cry_Ursaluna +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_TEDDIURSA +.if P_FAMILY_SLUGMA == TRUE cry_reverse Cry_Slugma cry_reverse Cry_Magcargo +.endif @ P_FAMILY_SLUGMA +.if P_FAMILY_SWINUB == TRUE cry_reverse Cry_Swinub cry_reverse Cry_Piloswine +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Mamoswine +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_SWINUB +.if P_FAMILY_CORSOLA == TRUE cry_reverse Cry_Corsola +.if P_GALARIAN_FORMS == TRUE + cry_reverse Cry_Cursola +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_CORSOLA +.if P_FAMILY_REMORAID == TRUE cry_reverse Cry_Remoraid cry_reverse Cry_Octillery +.endif @ P_FAMILY_REMORAID +.if P_FAMILY_DELIBIRD == TRUE cry_reverse Cry_Delibird +.endif @ P_FAMILY_DELIBIRD +.if P_FAMILY_MANTINE == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Mantyke +.endif @ P_GEN_4_CROSS_EVOS cry_reverse Cry_Mantine +.endif @ P_FAMILY_MANTINE +.if P_FAMILY_SKARMORY == TRUE cry_reverse Cry_Skarmory +.endif @ P_FAMILY_SKARMORY +.if P_FAMILY_HOUNDOUR == TRUE cry_reverse Cry_Houndour cry_reverse Cry_Houndoom - cry_reverse Cry_Kingdra +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_HoundoomMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_HOUNDOUR +.if P_FAMILY_PHANPY == TRUE cry_reverse Cry_Phanpy cry_reverse Cry_Donphan - cry_reverse Cry_Porygon2 +.endif @ P_FAMILY_PHANPY +.if P_FAMILY_STANTLER == TRUE cry_reverse Cry_Stantler +.if P_GEN_8_CROSS_EVOS == TRUE + cry_reverse Cry_Wyrdeer +.endif @ P_GEN_8_CROSS_EVOS +.endif @ P_FAMILY_STANTLER +.if P_FAMILY_SMEARGLE == TRUE cry_reverse Cry_Smeargle - cry_reverse Cry_Tyrogue - cry_reverse Cry_Hitmontop - cry_reverse Cry_Smoochum - cry_reverse Cry_Elekid - cry_reverse Cry_Magby +.endif @ P_FAMILY_SMEARGLE +.if P_FAMILY_MILTANK == TRUE cry_reverse Cry_Miltank - cry_reverse Cry_Blissey +.endif @ P_FAMILY_MILTANK +.if P_FAMILY_RAIKOU == TRUE cry_reverse Cry_Raikou +.endif @ P_FAMILY_RAIKOU +.if P_FAMILY_ENTEI == TRUE cry_reverse Cry_Entei +.endif @ P_FAMILY_ENTEI +.if P_FAMILY_SUICUNE == TRUE cry_reverse Cry_Suicune +.endif @ P_FAMILY_SUICUNE +.if P_FAMILY_LARVITAR == TRUE cry_reverse Cry_Larvitar cry_reverse Cry_Pupitar cry_reverse Cry_Tyranitar +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_TyranitarMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_LARVITAR +.if P_FAMILY_LUGIA == TRUE cry_reverse Cry_Lugia +.endif @ P_FAMILY_LUGIA +.if P_FAMILY_HO_OH == TRUE cry_reverse Cry_HoOh +.endif @ P_FAMILY_HO_OH +.if P_FAMILY_CELEBI == TRUE cry_reverse Cry_Celebi +.endif @ P_FAMILY_CELEBI +.if P_FAMILY_TREECKO == TRUE cry_reverse Cry_Treecko cry_reverse Cry_Grovyle cry_reverse Cry_Sceptile +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_SceptileMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_TREECKO +.if P_FAMILY_TORCHIC == TRUE cry_reverse Cry_Torchic cry_reverse Cry_Combusken cry_reverse Cry_Blaziken +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_BlazikenMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_TORCHIC +.if P_FAMILY_MUDKIP == TRUE cry_reverse Cry_Mudkip cry_reverse Cry_Marshtomp cry_reverse Cry_Swampert +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_SwampertMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MUDKIP +.if P_FAMILY_POOCHYENA == TRUE cry_reverse Cry_Poochyena cry_reverse Cry_Mightyena +.endif @ P_FAMILY_POOCHYENA +.if P_FAMILY_ZIGZAGOON == TRUE cry_reverse Cry_Zigzagoon cry_reverse Cry_Linoone +.if P_GALARIAN_FORMS == TRUE + cry_reverse Cry_Obstagoon +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_ZIGZAGOON +.if P_FAMILY_WURMPLE == TRUE cry_reverse Cry_Wurmple cry_reverse Cry_Silcoon cry_reverse Cry_Beautifly cry_reverse Cry_Cascoon cry_reverse Cry_Dustox +.endif @ P_FAMILY_WURMPLE +.if P_FAMILY_LOTAD == TRUE cry_reverse Cry_Lotad cry_reverse Cry_Lombre cry_reverse Cry_Ludicolo +.endif @ P_FAMILY_LOTAD +.if P_FAMILY_SEEDOT == TRUE cry_reverse Cry_Seedot cry_reverse Cry_Nuzleaf cry_reverse Cry_Shiftry +.endif @ P_FAMILY_SEEDOT +.if P_FAMILY_TAILLOW == TRUE cry_reverse Cry_Taillow cry_reverse Cry_Swellow +.endif @ P_FAMILY_TAILLOW +.if P_FAMILY_WINGULL == TRUE cry_reverse Cry_Wingull cry_reverse Cry_Pelipper +.endif @ P_FAMILY_WINGULL +.if P_FAMILY_RALTS == TRUE cry_reverse Cry_Ralts cry_reverse Cry_Kirlia cry_reverse Cry_Gardevoir +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_GardevoirMega +.endif @ P_MEGA_EVOLUTIONS +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Gallade +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_GalladeMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_RALTS +.if P_FAMILY_SURSKIT == TRUE cry_reverse Cry_Surskit cry_reverse Cry_Masquerain +.endif @ P_FAMILY_SURSKIT +.if P_FAMILY_SHROOMISH == TRUE cry_reverse Cry_Shroomish cry_reverse Cry_Breloom +.endif @ P_FAMILY_SHROOMISH +.if P_FAMILY_SLAKOTH == TRUE cry_reverse Cry_Slakoth cry_reverse Cry_Vigoroth cry_reverse Cry_Slaking +.endif @ P_FAMILY_SLAKOTH +.if P_FAMILY_NINCADA == TRUE cry_reverse Cry_Nincada cry_reverse Cry_Ninjask cry_reverse Cry_Shedinja +.endif @ P_FAMILY_NINCADA +.if P_FAMILY_WHISMUR == TRUE cry_reverse Cry_Whismur cry_reverse Cry_Loudred cry_reverse Cry_Exploud +.endif @ P_FAMILY_WHISMUR +.if P_FAMILY_MAKUHITA == TRUE cry_reverse Cry_Makuhita cry_reverse Cry_Hariyama - cry_reverse Cry_Azurill +.endif @ P_FAMILY_MAKUHITA +.if P_FAMILY_NOSEPASS == TRUE cry_reverse Cry_Nosepass +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Probopass +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_NOSEPASS +.if P_FAMILY_SKITTY == TRUE cry_reverse Cry_Skitty cry_reverse Cry_Delcatty +.endif @ P_FAMILY_SKITTY +.if P_FAMILY_SABLEYE == TRUE cry_reverse Cry_Sableye +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_SableyeMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_SABLEYE +.if P_FAMILY_MAWILE == TRUE cry_reverse Cry_Mawile +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_MawileMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MAWILE +.if P_FAMILY_ARON == TRUE cry_reverse Cry_Aron cry_reverse Cry_Lairon cry_reverse Cry_Aggron +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_AggronMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_ARON +.if P_FAMILY_MEDITITE == TRUE cry_reverse Cry_Meditite cry_reverse Cry_Medicham +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_MedichamMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MEDITITE +.if P_FAMILY_ELECTRIKE == TRUE cry_reverse Cry_Electrike cry_reverse Cry_Manectric +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_ManectricMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_ELECTRIKE +.if P_FAMILY_PLUSLE == TRUE cry_reverse Cry_Plusle +.endif @ P_FAMILY_PLUSLE +.if P_FAMILY_MINUN == TRUE cry_reverse Cry_Minun +.endif @ P_FAMILY_MINUN +.if P_FAMILY_VOLBEAT_ILLUMISE == TRUE cry_reverse Cry_Volbeat cry_reverse Cry_Illumise +.endif @ P_FAMILY_VOLBEAT_ILLUMISE +.if P_FAMILY_ROSELIA == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Budew +.endif @ P_GEN_4_CROSS_EVOS cry_reverse Cry_Roselia +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Roserade +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_ROSELIA +.if P_FAMILY_GULPIN == TRUE cry_reverse Cry_Gulpin cry_reverse Cry_Swalot +.endif @ P_FAMILY_GULPIN +.if P_FAMILY_CARVANHA == TRUE cry_reverse Cry_Carvanha cry_reverse Cry_Sharpedo +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_SharpedoMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_CARVANHA +.if P_FAMILY_WAILMER == TRUE cry_reverse Cry_Wailmer cry_reverse Cry_Wailord +.endif @ P_FAMILY_WAILMER +.if P_FAMILY_NUMEL == TRUE cry_reverse Cry_Numel cry_reverse Cry_Camerupt +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_CameruptMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_NUMEL +.if P_FAMILY_TORKOAL == TRUE cry_reverse Cry_Torkoal +.endif @ P_FAMILY_TORKOAL +.if P_FAMILY_SPOINK == TRUE cry_reverse Cry_Spoink cry_reverse Cry_Grumpig +.endif @ P_FAMILY_SPOINK +.if P_FAMILY_SPINDA == TRUE cry_reverse Cry_Spinda +.endif @ P_FAMILY_SPINDA +.if P_FAMILY_TRAPINCH == TRUE cry_reverse Cry_Trapinch cry_reverse Cry_Vibrava cry_reverse Cry_Flygon +.endif @ P_FAMILY_TRAPINCH +.if P_FAMILY_CACNEA == TRUE cry_reverse Cry_Cacnea cry_reverse Cry_Cacturne +.endif @ P_FAMILY_CACNEA +.if P_FAMILY_SWABLU == TRUE cry_reverse Cry_Swablu cry_reverse Cry_Altaria +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_AltariaMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_SWABLU +.if P_FAMILY_ZANGOOSE == TRUE cry_reverse Cry_Zangoose +.endif @ P_FAMILY_ZANGOOSE +.if P_FAMILY_SEVIPER == TRUE cry_reverse Cry_Seviper +.endif @ P_FAMILY_SEVIPER +.if P_FAMILY_LUNATONE == TRUE cry_reverse Cry_Lunatone +.endif @ P_FAMILY_LUNATONE +.if P_FAMILY_SOLROCK == TRUE cry_reverse Cry_Solrock +.endif @ P_FAMILY_SOLROCK +.if P_FAMILY_BARBOACH == TRUE cry_reverse Cry_Barboach cry_reverse Cry_Whiscash +.endif @ P_FAMILY_BARBOACH +.if P_FAMILY_CORPHISH == TRUE cry_reverse Cry_Corphish cry_reverse Cry_Crawdaunt +.endif @ P_FAMILY_CORPHISH +.if P_FAMILY_BALTOY == TRUE cry_reverse Cry_Baltoy cry_reverse Cry_Claydol +.endif @ P_FAMILY_BALTOY +.if P_FAMILY_LILEEP == TRUE cry_reverse Cry_Lileep cry_reverse Cry_Cradily +.endif @ P_FAMILY_LILEEP +.if P_FAMILY_ANORITH == TRUE cry_reverse Cry_Anorith cry_reverse Cry_Armaldo +.endif @ P_FAMILY_ANORITH +.if P_FAMILY_FEEBAS == TRUE cry_reverse Cry_Feebas cry_reverse Cry_Milotic +.endif @ P_FAMILY_FEEBAS +.if P_FAMILY_CASTFORM == TRUE cry_reverse Cry_Castform +.endif @ P_FAMILY_CASTFORM +.if P_FAMILY_KECLEON == TRUE cry_reverse Cry_Kecleon +.endif @ P_FAMILY_KECLEON +.if P_FAMILY_SHUPPET == TRUE cry_reverse Cry_Shuppet cry_reverse Cry_Banette +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_BanetteMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_SHUPPET +.if P_FAMILY_DUSKULL == TRUE cry_reverse Cry_Duskull cry_reverse Cry_Dusclops +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Dusknoir +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_DUSKULL +.if P_FAMILY_TROPIUS == TRUE cry_reverse Cry_Tropius +.endif @ P_FAMILY_TROPIUS +.if P_FAMILY_CHIMECHO == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Chingling +.endif @ P_GEN_4_CROSS_EVOS cry_reverse Cry_Chimecho +.endif @ P_FAMILY_CHIMECHO +.if P_FAMILY_ABSOL == TRUE cry_reverse Cry_Absol - cry_reverse Cry_Wynaut +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_AbsolMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_ABSOL +.if P_FAMILY_SNORUNT == TRUE cry_reverse Cry_Snorunt cry_reverse Cry_Glalie +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_GlalieMega +.endif @ P_MEGA_EVOLUTIONS +.if P_GEN_4_CROSS_EVOS == TRUE + cry_reverse Cry_Froslass +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_SNORUNT +.if P_FAMILY_SPHEAL == TRUE cry_reverse Cry_Spheal cry_reverse Cry_Sealeo cry_reverse Cry_Walrein +.endif @ P_FAMILY_SPHEAL +.if P_FAMILY_CLAMPERL == TRUE cry_reverse Cry_Clamperl cry_reverse Cry_Huntail cry_reverse Cry_Gorebyss +.endif @ P_FAMILY_CLAMPERL +.if P_FAMILY_RELICANTH == TRUE cry_reverse Cry_Relicanth +.endif @ P_FAMILY_RELICANTH +.if P_FAMILY_LUVDISC == TRUE cry_reverse Cry_Luvdisc +.endif @ P_FAMILY_LUVDISC +.if P_FAMILY_BAGON == TRUE cry_reverse Cry_Bagon cry_reverse Cry_Shelgon cry_reverse Cry_Salamence +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_SalamenceMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_BAGON +.if P_FAMILY_BELDUM == TRUE cry_reverse Cry_Beldum cry_reverse Cry_Metang cry_reverse Cry_Metagross +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_MetagrossMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_BELDUM +.if P_FAMILY_REGIROCK == TRUE cry_reverse Cry_Regirock +.endif @ P_FAMILY_REGIROCK +.if P_FAMILY_REGICE == TRUE cry_reverse Cry_Regice +.endif @ P_FAMILY_REGICE +.if P_FAMILY_REGISTEEL == TRUE cry_reverse Cry_Registeel +.endif @ P_FAMILY_REGISTEEL +.if P_FAMILY_LATIAS == TRUE cry_reverse Cry_Latias +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_LatiasMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_LATIAS +.if P_FAMILY_LATIOS == TRUE cry_reverse Cry_Latios +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_LatiosMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_LATIOS +.if P_FAMILY_KYOGRE == TRUE cry_reverse Cry_Kyogre +.if P_PRIMAL_REVERSIONS == TRUE + cry_reverse Cry_KyogrePrimal +.endif @ P_PRIMAL_REVERSIONS +.endif @ P_FAMILY_KYOGRE +.if P_FAMILY_GROUDON == TRUE cry_reverse Cry_Groudon +.if P_PRIMAL_REVERSIONS == TRUE + cry_reverse Cry_GroudonPrimal +.endif @ P_PRIMAL_REVERSIONS +.endif @ P_FAMILY_GROUDON +.if P_FAMILY_RAYQUAZA == TRUE cry_reverse Cry_Rayquaza +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_RayquazaMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_RAYQUAZA +.if P_FAMILY_JIRACHI == TRUE cry_reverse Cry_Jirachi +.endif @ P_FAMILY_JIRACHI +.if P_FAMILY_DEOXYS == TRUE cry_reverse Cry_Deoxys -.if P_GEN_4_POKEMON == TRUE +.endif @ P_FAMILY_DEOXYS +.if P_FAMILY_TURTWIG == TRUE cry_reverse Cry_Turtwig cry_reverse Cry_Grotle cry_reverse Cry_Torterra +.endif @ P_FAMILY_TURTWIG +.if P_FAMILY_CHIMCHAR == TRUE cry_reverse Cry_Chimchar cry_reverse Cry_Monferno cry_reverse Cry_Infernape +.endif @ P_FAMILY_CHIMCHAR +.if P_FAMILY_PIPLUP == TRUE cry_reverse Cry_Piplup cry_reverse Cry_Prinplup cry_reverse Cry_Empoleon +.endif @ P_FAMILY_PIPLUP +.if P_FAMILY_STARLY == TRUE cry_reverse Cry_Starly cry_reverse Cry_Staravia cry_reverse Cry_Staraptor +.endif @ P_FAMILY_STARLY +.if P_FAMILY_BIDOOF == TRUE cry_reverse Cry_Bidoof cry_reverse Cry_Bibarel +.endif @ P_FAMILY_BIDOOF +.if P_FAMILY_KRICKETOT == TRUE cry_reverse Cry_Kricketot cry_reverse Cry_Kricketune +.endif @ P_FAMILY_KRICKETOT +.if P_FAMILY_SHINX == TRUE cry_reverse Cry_Shinx cry_reverse Cry_Luxio cry_reverse Cry_Luxray - cry_reverse Cry_Budew - cry_reverse Cry_Roserade +.endif @ P_FAMILY_SHINX +.if P_FAMILY_CRANIDOS == TRUE cry_reverse Cry_Cranidos cry_reverse Cry_Rampardos +.endif @ P_FAMILY_CRANIDOS +.if P_FAMILY_SHIELDON == TRUE cry_reverse Cry_Shieldon cry_reverse Cry_Bastiodon +.endif @ P_FAMILY_SHIELDON +.if P_FAMILY_BURMY == TRUE cry_reverse Cry_Burmy cry_reverse Cry_Wormadam cry_reverse Cry_Mothim +.endif @ P_FAMILY_BURMY +.if P_FAMILY_COMBEE == TRUE cry_reverse Cry_Combee cry_reverse Cry_Vespiquen +.endif @ P_FAMILY_COMBEE +.if P_FAMILY_PACHIRISU == TRUE cry_reverse Cry_Pachirisu +.endif @ P_FAMILY_PACHIRISU +.if P_FAMILY_BUIZEL == TRUE cry_reverse Cry_Buizel cry_reverse Cry_Floatzel +.endif @ P_FAMILY_BUIZEL +.if P_FAMILY_CHERUBI == TRUE cry_reverse Cry_Cherubi cry_reverse Cry_Cherrim +.endif @ P_FAMILY_CHERUBI +.if P_FAMILY_SHELLOS == TRUE cry_reverse Cry_Shellos cry_reverse Cry_Gastrodon - cry_reverse Cry_Ambipom +.endif @ P_FAMILY_SHELLOS +.if P_FAMILY_DRIFLOON == TRUE cry_reverse Cry_Drifloon cry_reverse Cry_Drifblim +.endif @ P_FAMILY_DRIFLOON +.if P_FAMILY_BUNEARY == TRUE cry_reverse Cry_Buneary cry_reverse Cry_Lopunny - cry_reverse Cry_Mismagius - cry_reverse Cry_Honchkrow +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_LopunnyMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_BUNEARY +.if P_FAMILY_GLAMEOW == TRUE cry_reverse Cry_Glameow cry_reverse Cry_Purugly - cry_reverse Cry_Chingling +.endif @ P_FAMILY_GLAMEOW +.if P_FAMILY_STUNKY == TRUE cry_reverse Cry_Stunky cry_reverse Cry_Skuntank +.endif @ P_FAMILY_STUNKY +.if P_FAMILY_BRONZOR == TRUE cry_reverse Cry_Bronzor cry_reverse Cry_Bronzong - cry_reverse Cry_Bonsly - cry_reverse Cry_MimeJr - cry_reverse Cry_Happiny +.endif @ P_FAMILY_BRONZOR +.if P_FAMILY_CHATOT == TRUE cry_reverse Cry_Chatot +.endif @ P_FAMILY_CHATOT +.if P_FAMILY_SPIRITOMB == TRUE cry_reverse Cry_Spiritomb +.endif @ P_FAMILY_SPIRITOMB +.if P_FAMILY_GIBLE == TRUE cry_reverse Cry_Gible cry_reverse Cry_Gabite cry_reverse Cry_Garchomp - cry_reverse Cry_Munchlax +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_GarchompMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_GIBLE +.if P_FAMILY_RIOLU == TRUE cry_reverse Cry_Riolu cry_reverse Cry_Lucario +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_LucarioMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_RIOLU +.if P_FAMILY_HIPPOPOTAS == TRUE cry_reverse Cry_Hippopotas cry_reverse Cry_Hippowdon +.endif @ P_FAMILY_HIPPOPOTAS +.if P_FAMILY_SKORUPI == TRUE cry_reverse Cry_Skorupi cry_reverse Cry_Drapion +.endif @ P_FAMILY_SKORUPI +.if P_FAMILY_CROAGUNK == TRUE cry_reverse Cry_Croagunk cry_reverse Cry_Toxicroak +.endif @ P_FAMILY_CROAGUNK +.if P_FAMILY_CARNIVINE == TRUE cry_reverse Cry_Carnivine +.endif @ P_FAMILY_CARNIVINE +.if P_FAMILY_FINNEON == TRUE cry_reverse Cry_Finneon cry_reverse Cry_Lumineon - cry_reverse Cry_Mantyke +.endif @ P_FAMILY_FINNEON +.if P_FAMILY_SNOVER == TRUE cry_reverse Cry_Snover cry_reverse Cry_Abomasnow - cry_reverse Cry_Weavile - cry_reverse Cry_Magnezone - cry_reverse Cry_Lickilicky - cry_reverse Cry_Rhyperior - cry_reverse Cry_Tangrowth - cry_reverse Cry_Electivire - cry_reverse Cry_Magmortar - cry_reverse Cry_Togekiss - cry_reverse Cry_Yanmega - cry_reverse Cry_Leafeon - cry_reverse Cry_Glaceon - cry_reverse Cry_Gliscor - cry_reverse Cry_Mamoswine - cry_reverse Cry_PorygonZ - cry_reverse Cry_Gallade - cry_reverse Cry_Probopass - cry_reverse Cry_Dusknoir - cry_reverse Cry_Froslass +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_AbomasnowMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_SNOVER +.if P_FAMILY_ROTOM == TRUE cry_reverse Cry_Rotom +.endif @ P_FAMILY_ROTOM +.if P_FAMILY_UXIE == TRUE cry_reverse Cry_Uxie +.endif @ P_FAMILY_UXIE +.if P_FAMILY_MESPRIT == TRUE cry_reverse Cry_Mesprit +.endif @ P_FAMILY_MESPRIT +.if P_FAMILY_AZELF == TRUE cry_reverse Cry_Azelf +.endif @ P_FAMILY_AZELF +.if P_FAMILY_DIALGA == TRUE cry_reverse Cry_Dialga +.endif @ P_FAMILY_DIALGA +.if P_FAMILY_PALKIA == TRUE cry_reverse Cry_Palkia +.endif @ P_FAMILY_PALKIA +.if P_FAMILY_HEATRAN == TRUE cry_reverse Cry_Heatran +.endif @ P_FAMILY_HEATRAN +.if P_FAMILY_REGIGIGAS == TRUE cry_reverse Cry_Regigigas +.endif @ P_FAMILY_REGIGIGAS +.if P_FAMILY_GIRATINA == TRUE cry_reverse Cry_Giratina +.endif @ P_FAMILY_GIRATINA +.if P_FAMILY_CRESSELIA == TRUE cry_reverse Cry_Cresselia +.endif @ P_FAMILY_CRESSELIA +.if P_FAMILY_MANAPHY == TRUE cry_reverse Cry_Phione cry_reverse Cry_Manaphy +.endif @ P_FAMILY_MANAPHY +.if P_FAMILY_DARKRAI == TRUE cry_reverse Cry_Darkrai - cry_reverse Cry_Shaymin +.endif @ P_FAMILY_DARKRAI +.if P_FAMILY_SHAYMIN == TRUE + cry_reverse Cry_ShayminLand + cry_reverse Cry_ShayminSky +.endif @ P_FAMILY_SHAYMIN +.if P_FAMILY_ARCEUS == TRUE cry_reverse Cry_Arceus -.else - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown -.endif -.if P_GEN_5_POKEMON == TRUE +.endif @ P_FAMILY_ARCEUS +.if P_FAMILY_VICTINI == TRUE cry_reverse Cry_Victini +.endif @ P_FAMILY_VICTINI +.if P_FAMILY_SNIVY == TRUE cry_reverse Cry_Snivy cry_reverse Cry_Servine cry_reverse Cry_Serperior +.endif @ P_FAMILY_SNIVY +.if P_FAMILY_TEPIG == TRUE cry_reverse Cry_Tepig cry_reverse Cry_Pignite cry_reverse Cry_Emboar +.endif @ P_FAMILY_TEPIG +.if P_FAMILY_OSHAWOTT == TRUE cry_reverse Cry_Oshawott cry_reverse Cry_Dewott cry_reverse Cry_Samurott +.endif @ P_FAMILY_OSHAWOTT +.if P_FAMILY_PATRAT == TRUE cry_reverse Cry_Patrat cry_reverse Cry_Watchog +.endif @ P_FAMILY_PATRAT +.if P_FAMILY_LILLIPUP == TRUE cry_reverse Cry_Lillipup cry_reverse Cry_Herdier cry_reverse Cry_Stoutland +.endif @ P_FAMILY_LILLIPUP +.if P_FAMILY_PURRLOIN == TRUE cry_reverse Cry_Purrloin cry_reverse Cry_Liepard +.endif @ P_FAMILY_PURRLOIN +.if P_FAMILY_PANSAGE == TRUE cry_reverse Cry_Pansage cry_reverse Cry_Simisage +.endif @ P_FAMILY_PANSAGE +.if P_FAMILY_PANSEAR == TRUE cry_reverse Cry_Pansear cry_reverse Cry_Simisear +.endif @ P_FAMILY_PANSEAR +.if P_FAMILY_PANPOUR == TRUE cry_reverse Cry_Panpour cry_reverse Cry_Simipour +.endif @ P_FAMILY_PANPOUR +.if P_FAMILY_MUNNA == TRUE cry_reverse Cry_Munna cry_reverse Cry_Musharna +.endif @ P_FAMILY_MUNNA +.if P_FAMILY_PIDOVE == TRUE cry_reverse Cry_Pidove cry_reverse Cry_Tranquill cry_reverse Cry_Unfezant +.endif @ P_FAMILY_PIDOVE +.if P_FAMILY_BLITZLE == TRUE cry_reverse Cry_Blitzle cry_reverse Cry_Zebstrika +.endif @ P_FAMILY_BLITZLE +.if P_FAMILY_ROGGENROLA == TRUE cry_reverse Cry_Roggenrola cry_reverse Cry_Boldore cry_reverse Cry_Gigalith +.endif @ P_FAMILY_ROGGENROLA +.if P_FAMILY_WOOBAT == TRUE cry_reverse Cry_Woobat cry_reverse Cry_Swoobat +.endif @ P_FAMILY_WOOBAT +.if P_FAMILY_DRILBUR == TRUE cry_reverse Cry_Drilbur cry_reverse Cry_Excadrill +.endif @ P_FAMILY_DRILBUR +.if P_FAMILY_AUDINO == TRUE cry_reverse Cry_Audino +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_AudinoMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_AUDINO +.if P_FAMILY_TIMBURR == TRUE cry_reverse Cry_Timburr cry_reverse Cry_Gurdurr cry_reverse Cry_Conkeldurr +.endif @ P_FAMILY_TIMBURR +.if P_FAMILY_TYMPOLE == TRUE cry_reverse Cry_Tympole cry_reverse Cry_Palpitoad cry_reverse Cry_Seismitoad +.endif @ P_FAMILY_TYMPOLE +.if P_FAMILY_THROH == TRUE cry_reverse Cry_Throh +.endif @ P_FAMILY_THROH +.if P_FAMILY_SAWK == TRUE cry_reverse Cry_Sawk +.endif @ P_FAMILY_SAWK +.if P_FAMILY_SEWADDLE == TRUE cry_reverse Cry_Sewaddle cry_reverse Cry_Swadloon cry_reverse Cry_Leavanny +.endif @ P_FAMILY_SEWADDLE +.if P_FAMILY_VENIPEDE == TRUE cry_reverse Cry_Venipede cry_reverse Cry_Whirlipede cry_reverse Cry_Scolipede +.endif @ P_FAMILY_VENIPEDE +.if P_FAMILY_COTTONEE == TRUE cry_reverse Cry_Cottonee cry_reverse Cry_Whimsicott +.endif @ P_FAMILY_COTTONEE +.if P_FAMILY_PETILIL == TRUE cry_reverse Cry_Petilil cry_reverse Cry_Lilligant +.endif @ P_FAMILY_PETILIL +.if P_FAMILY_BASCULIN == TRUE cry_reverse Cry_Basculin +.if P_HISUIAN_FORMS == TRUE + cry_reverse Cry_Basculegion +.endif @ P_HISUIAN_FORMS +.endif @ P_FAMILY_BASCULIN +.if P_FAMILY_SANDILE == TRUE cry_reverse Cry_Sandile cry_reverse Cry_Krokorok cry_reverse Cry_Krookodile +.endif @ P_FAMILY_SANDILE +.if P_FAMILY_DARUMAKA == TRUE cry_reverse Cry_Darumaka cry_reverse Cry_Darmanitan +.endif @ P_FAMILY_DARUMAKA +.if P_FAMILY_MARACTUS == TRUE cry_reverse Cry_Maractus +.endif @ P_FAMILY_MARACTUS +.if P_FAMILY_DWEBBLE == TRUE cry_reverse Cry_Dwebble cry_reverse Cry_Crustle +.endif @ P_FAMILY_DWEBBLE +.if P_FAMILY_SCRAGGY == TRUE cry_reverse Cry_Scraggy cry_reverse Cry_Scrafty +.endif @ P_FAMILY_SCRAGGY +.if P_FAMILY_SIGILYPH == TRUE cry_reverse Cry_Sigilyph +.endif @ P_FAMILY_SIGILYPH +.if P_FAMILY_YAMASK == TRUE cry_reverse Cry_Yamask cry_reverse Cry_Cofagrigus +.if P_GALARIAN_FORMS == TRUE + cry_reverse Cry_Runerigus +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_YAMASK +.if P_FAMILY_TIRTOUGA == TRUE cry_reverse Cry_Tirtouga cry_reverse Cry_Carracosta +.endif @ P_FAMILY_TIRTOUGA +.if P_FAMILY_ARCHEN == TRUE cry_reverse Cry_Archen cry_reverse Cry_Archeops +.endif @ P_FAMILY_ARCHEN +.if P_FAMILY_TRUBBISH == TRUE cry_reverse Cry_Trubbish cry_reverse Cry_Garbodor +.endif @ P_FAMILY_TRUBBISH +.if P_FAMILY_ZORUA == TRUE cry_reverse Cry_Zorua cry_reverse Cry_Zoroark +.endif @ P_FAMILY_ZORUA +.if P_FAMILY_MINCCINO == TRUE cry_reverse Cry_Minccino cry_reverse Cry_Cinccino +.endif @ P_FAMILY_MINCCINO +.if P_FAMILY_GOTHITA == TRUE cry_reverse Cry_Gothita cry_reverse Cry_Gothorita cry_reverse Cry_Gothitelle +.endif @ P_FAMILY_GOTHITA +.if P_FAMILY_SOLOSIS == TRUE cry_reverse Cry_Solosis cry_reverse Cry_Duosion cry_reverse Cry_Reuniclus +.endif @ P_FAMILY_SOLOSIS +.if P_FAMILY_DUCKLETT == TRUE cry_reverse Cry_Ducklett cry_reverse Cry_Swanna +.endif @ P_FAMILY_DUCKLETT +.if P_FAMILY_VANILLITE == TRUE cry_reverse Cry_Vanillite cry_reverse Cry_Vanillish cry_reverse Cry_Vanilluxe +.endif @ P_FAMILY_VANILLITE +.if P_FAMILY_DEERLING == TRUE cry_reverse Cry_Deerling cry_reverse Cry_Sawsbuck +.endif @ P_FAMILY_DEERLING +.if P_FAMILY_EMOLGA == TRUE cry_reverse Cry_Emolga +.endif @ P_FAMILY_EMOLGA +.if P_FAMILY_KARRABLAST == TRUE cry_reverse Cry_Karrablast cry_reverse Cry_Escavalier +.endif @ P_FAMILY_KARRABLAST +.if P_FAMILY_FOONGUS == TRUE cry_reverse Cry_Foongus cry_reverse Cry_Amoonguss +.endif @ P_FAMILY_FOONGUS +.if P_FAMILY_FRILLISH == TRUE cry_reverse Cry_Frillish cry_reverse Cry_Jellicent +.endif @ P_FAMILY_FRILLISH +.if P_FAMILY_ALOMOMOLA == TRUE cry_reverse Cry_Alomomola +.endif @ P_FAMILY_ALOMOMOLA +.if P_FAMILY_JOLTIK == TRUE cry_reverse Cry_Joltik cry_reverse Cry_Galvantula +.endif @ P_FAMILY_JOLTIK +.if P_FAMILY_FERROSEED == TRUE cry_reverse Cry_Ferroseed cry_reverse Cry_Ferrothorn +.endif @ P_FAMILY_FERROSEED +.if P_FAMILY_KLINK == TRUE cry_reverse Cry_Klink cry_reverse Cry_Klang cry_reverse Cry_Klinklang +.endif @ P_FAMILY_KLINK +.if P_FAMILY_TYNAMO == TRUE cry_reverse Cry_Tynamo cry_reverse Cry_Eelektrik cry_reverse Cry_Eelektross +.endif @ P_FAMILY_TYNAMO +.if P_FAMILY_ELGYEM == TRUE cry_reverse Cry_Elgyem cry_reverse Cry_Beheeyem +.endif @ P_FAMILY_ELGYEM +.if P_FAMILY_LITWICK == TRUE cry_reverse Cry_Litwick cry_reverse Cry_Lampent cry_reverse Cry_Chandelure +.endif @ P_FAMILY_LITWICK +.if P_FAMILY_AXEW == TRUE cry_reverse Cry_Axew cry_reverse Cry_Fraxure cry_reverse Cry_Haxorus +.endif @ P_FAMILY_AXEW +.if P_FAMILY_CUBCHOO == TRUE cry_reverse Cry_Cubchoo cry_reverse Cry_Beartic +.endif @ P_FAMILY_CUBCHOO +.if P_FAMILY_CRYOGONAL == TRUE cry_reverse Cry_Cryogonal +.endif @ P_FAMILY_CRYOGONAL +.if P_FAMILY_SHELMET == TRUE cry_reverse Cry_Shelmet cry_reverse Cry_Accelgor +.endif @ P_FAMILY_SHELMET +.if P_FAMILY_STUNFISK == TRUE cry_reverse Cry_Stunfisk +.endif @ P_FAMILY_STUNFISK +.if P_FAMILY_MIENFOO == TRUE cry_reverse Cry_Mienfoo cry_reverse Cry_Mienshao +.endif @ P_FAMILY_MIENFOO +.if P_FAMILY_DRUDDIGON == TRUE cry_reverse Cry_Druddigon +.endif @ P_FAMILY_DRUDDIGON +.if P_FAMILY_GOLETT == TRUE cry_reverse Cry_Golett cry_reverse Cry_Golurk +.endif @ P_FAMILY_GOLETT +.if P_FAMILY_PAWNIARD == TRUE cry_reverse Cry_Pawniard cry_reverse Cry_Bisharp +.if P_GEN_9_CROSS_EVOS == TRUE + cry_reverse Cry_Kingambit +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_PAWNIARD +.if P_FAMILY_BOUFFALANT == TRUE cry_reverse Cry_Bouffalant +.endif @ P_FAMILY_BOUFFALANT +.if P_FAMILY_RUFFLET == TRUE cry_reverse Cry_Rufflet cry_reverse Cry_Braviary +.endif @ P_FAMILY_RUFFLET +.if P_FAMILY_VULLABY == TRUE cry_reverse Cry_Vullaby cry_reverse Cry_Mandibuzz +.endif @ P_FAMILY_VULLABY +.if P_FAMILY_HEATMOR == TRUE cry_reverse Cry_Heatmor +.endif @ P_FAMILY_HEATMOR +.if P_FAMILY_DURANT == TRUE cry_reverse Cry_Durant +.endif @ P_FAMILY_DURANT +.if P_FAMILY_DEINO == TRUE cry_reverse Cry_Deino cry_reverse Cry_Zweilous cry_reverse Cry_Hydreigon +.endif @ P_FAMILY_DEINO +.if P_FAMILY_LARVESTA == TRUE cry_reverse Cry_Larvesta cry_reverse Cry_Volcarona +.endif @ P_FAMILY_LARVESTA +.if P_FAMILY_COBALION == TRUE cry_reverse Cry_Cobalion +.endif @ P_FAMILY_COBALION +.if P_FAMILY_TERRAKION == TRUE cry_reverse Cry_Terrakion +.endif @ P_FAMILY_TERRAKION +.if P_FAMILY_VIRIZION == TRUE cry_reverse Cry_Virizion - cry_reverse Cry_Tornadus - cry_reverse Cry_Thundurus +.endif @ P_FAMILY_VIRIZION +.if P_FAMILY_TORNADUS == TRUE + cry_reverse Cry_TornadusIncarnate + cry_reverse Cry_TornadusTherian +.endif @ P_FAMILY_TORNADUS +.if P_FAMILY_THUNDURUS == TRUE + cry_reverse Cry_ThundurusIncarnate + cry_reverse Cry_ThundurusTherian +.endif @ P_FAMILY_THUNDURUS +.if P_FAMILY_RESHIRAM == TRUE cry_reverse Cry_Reshiram +.endif @ P_FAMILY_RESHIRAM +.if P_FAMILY_ZEKROM == TRUE cry_reverse Cry_Zekrom - cry_reverse Cry_Landorus +.endif @ P_FAMILY_ZEKROM +.if P_FAMILY_LANDORUS == TRUE + cry_reverse Cry_LandorusIncarnate + cry_reverse Cry_LandorusTherian +.endif @ P_FAMILY_LANDORUS +.if P_FAMILY_KYUREM == TRUE cry_reverse Cry_Kyurem +.if P_FUSION_FORMS == TRUE + cry_reverse Cry_KyuremWhite + cry_reverse Cry_KyuremBlack +.endif @ P_FUSION_FORMS +.endif @ P_FAMILY_KYUREM +.if P_FAMILY_KELDEO == TRUE cry_reverse Cry_Keldeo +.endif @ P_FAMILY_KELDEO +.if P_FAMILY_MELOETTA == TRUE cry_reverse Cry_Meloetta +.endif @ P_FAMILY_MELOETTA +.if P_FAMILY_GENESECT == TRUE cry_reverse Cry_Genesect -.else - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown -.endif -.if P_GEN_6_POKEMON == TRUE +.endif @ P_FAMILY_GENESECT +.if P_FAMILY_CHESPIN == TRUE cry_reverse Cry_Chespin cry_reverse Cry_Quilladin cry_reverse Cry_Chesnaught +.endif @ P_FAMILY_CHESPIN +.if P_FAMILY_FENNEKIN == TRUE cry_reverse Cry_Fennekin cry_reverse Cry_Braixen cry_reverse Cry_Delphox +.endif @ P_FAMILY_FENNEKIN +.if P_FAMILY_FROAKIE == TRUE cry_reverse Cry_Froakie cry_reverse Cry_Frogadier cry_reverse Cry_Greninja +.endif @ P_FAMILY_FROAKIE +.if P_FAMILY_BUNNELBY == TRUE cry_reverse Cry_Bunnelby cry_reverse Cry_Diggersby +.endif @ P_FAMILY_BUNNELBY +.if P_FAMILY_FLETCHLING == TRUE cry_reverse Cry_Fletchling cry_reverse Cry_Fletchinder cry_reverse Cry_Talonflame +.endif @ P_FAMILY_FLETCHLING +.if P_FAMILY_SCATTERBUG == TRUE cry_reverse Cry_Scatterbug cry_reverse Cry_Spewpa cry_reverse Cry_Vivillon +.endif @ P_FAMILY_SCATTERBUG +.if P_FAMILY_LITLEO == TRUE cry_reverse Cry_Litleo cry_reverse Cry_Pyroar +.endif @ P_FAMILY_LITLEO +.if P_FAMILY_FLABEBE == TRUE cry_reverse Cry_Flabebe cry_reverse Cry_Floette + cry_reverse Cry_FloetteEternalFlower cry_reverse Cry_Florges +.endif @ P_FAMILY_FLABEBE +.if P_FAMILY_SKIDDO == TRUE cry_reverse Cry_Skiddo cry_reverse Cry_Gogoat +.endif @ P_FAMILY_SKIDDO +.if P_FAMILY_PANCHAM == TRUE cry_reverse Cry_Pancham cry_reverse Cry_Pangoro +.endif @ P_FAMILY_PANCHAM +.if P_FAMILY_FURFROU == TRUE cry_reverse Cry_Furfrou +.endif @ P_FAMILY_FURFROU +.if P_FAMILY_ESPURR == TRUE cry_reverse Cry_Espurr cry_reverse Cry_Meowstic +.endif @ P_FAMILY_ESPURR +.if P_FAMILY_HONEDGE == TRUE cry_reverse Cry_Honedge cry_reverse Cry_Doublade cry_reverse Cry_Aegislash +.endif @ P_FAMILY_HONEDGE +.if P_FAMILY_SPRITZEE == TRUE cry_reverse Cry_Spritzee cry_reverse Cry_Aromatisse +.endif @ P_FAMILY_SPRITZEE +.if P_FAMILY_SWIRLIX == TRUE cry_reverse Cry_Swirlix cry_reverse Cry_Slurpuff +.endif @ P_FAMILY_SWIRLIX +.if P_FAMILY_INKAY == TRUE cry_reverse Cry_Inkay cry_reverse Cry_Malamar +.endif @ P_FAMILY_INKAY +.if P_FAMILY_BINACLE == TRUE cry_reverse Cry_Binacle cry_reverse Cry_Barbaracle +.endif @ P_FAMILY_BINACLE +.if P_FAMILY_SKRELP == TRUE cry_reverse Cry_Skrelp cry_reverse Cry_Dragalge +.endif @ P_FAMILY_SKRELP +.if P_FAMILY_CLAUNCHER == TRUE cry_reverse Cry_Clauncher cry_reverse Cry_Clawitzer +.endif @ P_FAMILY_CLAUNCHER +.if P_FAMILY_HELIOPTILE == TRUE cry_reverse Cry_Helioptile cry_reverse Cry_Heliolisk +.endif @ P_FAMILY_HELIOPTILE +.if P_FAMILY_TYRUNT == TRUE cry_reverse Cry_Tyrunt cry_reverse Cry_Tyrantrum +.endif @ P_FAMILY_TYRUNT +.if P_FAMILY_AMAURA == TRUE cry_reverse Cry_Amaura cry_reverse Cry_Aurorus - cry_reverse Cry_Sylveon +.endif @ P_FAMILY_AMAURA +.if P_FAMILY_HAWLUCHA == TRUE cry_reverse Cry_Hawlucha +.endif @ P_FAMILY_HAWLUCHA +.if P_FAMILY_DEDENNE == TRUE cry_reverse Cry_Dedenne +.endif @ P_FAMILY_DEDENNE +.if P_FAMILY_CARBINK == TRUE cry_reverse Cry_Carbink +.endif @ P_FAMILY_CARBINK +.if P_FAMILY_GOOMY == TRUE cry_reverse Cry_Goomy cry_reverse Cry_Sliggoo cry_reverse Cry_Goodra - cry_reverse_uncomp Cry_Klefki +.endif @ P_FAMILY_GOOMY +.if P_FAMILY_KLEFKI == TRUE + cry_reverse Cry_Klefki +.endif @ P_FAMILY_KLEFKI +.if P_FAMILY_PHANTUMP == TRUE cry_reverse Cry_Phantump cry_reverse Cry_Trevenant +.endif @ P_FAMILY_PHANTUMP +.if P_FAMILY_PUMPKABOO == TRUE cry_reverse Cry_Pumpkaboo + cry_reverse Cry_PumpkabooSuper cry_reverse Cry_Gourgeist + cry_reverse Cry_GourgeistSuper +.endif @ P_FAMILY_PUMPKABOO +.if P_FAMILY_BERGMITE == TRUE cry_reverse Cry_Bergmite cry_reverse Cry_Avalugg +.endif @ P_FAMILY_BERGMITE +.if P_FAMILY_NOIBAT == TRUE cry_reverse Cry_Noibat cry_reverse Cry_Noivern +.endif @ P_FAMILY_NOIBAT +.if P_FAMILY_XERNEAS == TRUE cry_reverse Cry_Xerneas +.endif @ P_FAMILY_XERNEAS +.if P_FAMILY_YVELTAL == TRUE cry_reverse Cry_Yveltal - cry_reverse Cry_Zygarde +.endif @ P_FAMILY_YVELTAL +.if P_FAMILY_ZYGARDE == TRUE + cry_reverse Cry_Zygarde50 + cry_reverse Cry_Zygarde10 + cry_reverse Cry_ZygardeComplete +.endif @ P_FAMILY_ZYGARDE +.if P_FAMILY_DIANCIE == TRUE cry_reverse Cry_Diancie - cry_reverse Cry_Hoopa +.if P_MEGA_EVOLUTIONS == TRUE + cry_reverse Cry_DiancieMega +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_DIANCIE +.if P_FAMILY_HOOPA == TRUE + cry_reverse Cry_HoopaConfined + cry_reverse Cry_HoopaUnbound +.endif @ P_FAMILY_HOOPA +.if P_FAMILY_VOLCANION == TRUE cry_reverse Cry_Volcanion -.else - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown -.endif -.if P_GEN_7_POKEMON == TRUE +.endif @ P_FAMILY_VOLCANION +.if P_FAMILY_ROWLET == TRUE cry_reverse Cry_Rowlet cry_reverse Cry_Dartrix cry_reverse Cry_Decidueye +.endif @ P_FAMILY_ROWLET +.if P_FAMILY_LITTEN == TRUE cry_reverse Cry_Litten cry_reverse Cry_Torracat cry_reverse Cry_Incineroar +.endif @ P_FAMILY_LITTEN +.if P_FAMILY_POPPLIO == TRUE cry_reverse Cry_Popplio cry_reverse Cry_Brionne cry_reverse Cry_Primarina +.endif @ P_FAMILY_POPPLIO +.if P_FAMILY_PIKIPEK == TRUE cry_reverse Cry_Pikipek cry_reverse Cry_Trumbeak cry_reverse Cry_Toucannon +.endif @ P_FAMILY_PIKIPEK +.if P_FAMILY_YUNGOOS == TRUE cry_reverse Cry_Yungoos cry_reverse Cry_Gumshoos +.endif @ P_FAMILY_YUNGOOS +.if P_FAMILY_GRUBBIN == TRUE cry_reverse Cry_Grubbin cry_reverse Cry_Charjabug cry_reverse Cry_Vikavolt +.endif @ P_FAMILY_GRUBBIN +.if P_FAMILY_CRABRAWLER == TRUE cry_reverse Cry_Crabrawler cry_reverse Cry_Crabominable - cry_reverse Cry_Oricorio +.endif @ P_FAMILY_CRABRAWLER +.if P_FAMILY_ORICORIO == TRUE + cry_reverse Cry_OricorioBaile + cry_reverse Cry_OricorioPomPom + cry_reverse Cry_OricorioPau + cry_reverse Cry_OricorioSensu +.endif @ P_FAMILY_ORICORIO +.if P_FAMILY_CUTIEFLY == TRUE cry_reverse Cry_Cutiefly cry_reverse Cry_Ribombee +.endif @ P_FAMILY_CUTIEFLY +.if P_FAMILY_ROCKRUFF == TRUE cry_reverse Cry_Rockruff - cry_reverse Cry_Lycanroc - cry_reverse Cry_Wishiwashi + cry_reverse Cry_LycanrocMidday + cry_reverse Cry_LycanrocMidnight + cry_reverse Cry_LycanrocDusk +.endif @ P_FAMILY_ROCKRUFF +.if P_FAMILY_WISHIWASHI == TRUE + cry_reverse Cry_WishiwashiSolo + cry_reverse Cry_WishiwashiSchool +.endif @ P_FAMILY_WISHIWASHI +.if P_FAMILY_MAREANIE == TRUE cry_reverse Cry_Mareanie cry_reverse Cry_Toxapex +.endif @ P_FAMILY_MAREANIE +.if P_FAMILY_MUDBRAY == TRUE cry_reverse Cry_Mudbray cry_reverse Cry_Mudsdale +.endif @ P_FAMILY_MUDBRAY +.if P_FAMILY_DEWPIDER == TRUE cry_reverse Cry_Dewpider cry_reverse Cry_Araquanid +.endif @ P_FAMILY_DEWPIDER +.if P_FAMILY_FOMANTIS == TRUE cry_reverse Cry_Fomantis cry_reverse Cry_Lurantis +.endif @ P_FAMILY_FOMANTIS +.if P_FAMILY_MORELULL == TRUE cry_reverse Cry_Morelull cry_reverse Cry_Shiinotic +.endif @ P_FAMILY_MORELULL +.if P_FAMILY_SALANDIT == TRUE cry_reverse Cry_Salandit cry_reverse Cry_Salazzle +.endif @ P_FAMILY_SALANDIT +.if P_FAMILY_STUFFUL == TRUE cry_reverse Cry_Stufful cry_reverse Cry_Bewear +.endif @ P_FAMILY_STUFFUL +.if P_FAMILY_BOUNSWEET == TRUE cry_reverse Cry_Bounsweet cry_reverse Cry_Steenee cry_reverse Cry_Tsareena +.endif @ P_FAMILY_BOUNSWEET +.if P_FAMILY_COMFEY == TRUE cry_reverse Cry_Comfey +.endif @ P_FAMILY_COMFEY +.if P_FAMILY_ORANGURU == TRUE cry_reverse Cry_Oranguru +.endif @ P_FAMILY_ORANGURU +.if P_FAMILY_PASSIMIAN == TRUE cry_reverse Cry_Passimian +.endif @ P_FAMILY_PASSIMIAN +.if P_FAMILY_WIMPOD == TRUE cry_reverse Cry_Wimpod cry_reverse Cry_Golisopod +.endif @ P_FAMILY_WIMPOD +.if P_FAMILY_SANDYGAST == TRUE cry_reverse Cry_Sandygast cry_reverse Cry_Palossand +.endif @ P_FAMILY_SANDYGAST +.if P_FAMILY_PYUKUMUKU == TRUE cry_reverse Cry_Pyukumuku +.endif @ P_FAMILY_PYUKUMUKU +.if P_FAMILY_TYPE_NULL == TRUE cry_reverse Cry_TypeNull cry_reverse Cry_Silvally +.endif @ P_FAMILY_TYPE_NULL +.if P_FAMILY_MINIOR == TRUE cry_reverse Cry_Minior +.endif @ P_FAMILY_MINIOR +.if P_FAMILY_KOMALA == TRUE cry_reverse Cry_Komala +.endif @ P_FAMILY_KOMALA +.if P_FAMILY_TURTONATOR == TRUE cry_reverse Cry_Turtonator +.endif @ P_FAMILY_TURTONATOR +.if P_FAMILY_TOGEDEMARU == TRUE cry_reverse Cry_Togedemaru +.endif @ P_FAMILY_TOGEDEMARU +.if P_FAMILY_MIMIKYU == TRUE cry_reverse Cry_Mimikyu +.endif @ P_FAMILY_MIMIKYU +.if P_FAMILY_BRUXISH == TRUE cry_reverse Cry_Bruxish +.endif @ P_FAMILY_BRUXISH +.if P_FAMILY_DRAMPA == TRUE cry_reverse Cry_Drampa +.endif @ P_FAMILY_DRAMPA +.if P_FAMILY_DHELMISE == TRUE cry_reverse Cry_Dhelmise +.endif @ P_FAMILY_DHELMISE +.if P_FAMILY_JANGMO_O == TRUE cry_reverse Cry_JangmoO cry_reverse Cry_HakamoO cry_reverse Cry_KommoO +.endif @ P_FAMILY_JANGMO_O +.if P_FAMILY_TAPU_KOKO == TRUE cry_reverse Cry_TapuKoko +.endif @ P_FAMILY_TAPU_KOKO +.if P_FAMILY_TAPU_LELE == TRUE cry_reverse Cry_TapuLele +.endif @ P_FAMILY_TAPU_LELE +.if P_FAMILY_TAPU_BULU == TRUE cry_reverse Cry_TapuBulu +.endif @ P_FAMILY_TAPU_BULU +.if P_FAMILY_TAPU_FINI == TRUE cry_reverse Cry_TapuFini +.endif @ P_FAMILY_TAPU_FINI +.if P_FAMILY_COSMOG == TRUE cry_reverse Cry_Cosmog cry_reverse Cry_Cosmoem cry_reverse Cry_Solgaleo cry_reverse Cry_Lunala +.endif @ P_FAMILY_COSMOG +.if P_FAMILY_NIHILEGO == TRUE cry_reverse Cry_Nihilego +.endif @ P_FAMILY_NIHILEGO +.if P_FAMILY_BUZZWOLE == TRUE cry_reverse Cry_Buzzwole +.endif @ P_FAMILY_BUZZWOLE +.if P_FAMILY_PHEROMOSA == TRUE cry_reverse Cry_Pheromosa +.endif @ P_FAMILY_PHEROMOSA +.if P_FAMILY_XURKITREE == TRUE cry_reverse Cry_Xurkitree +.endif @ P_FAMILY_XURKITREE +.if P_FAMILY_CELESTEELA == TRUE cry_reverse Cry_Celesteela +.endif @ P_FAMILY_CELESTEELA +.if P_FAMILY_KARTANA == TRUE cry_reverse Cry_Kartana +.endif @ P_FAMILY_KARTANA +.if P_FAMILY_GUZZLORD == TRUE cry_reverse Cry_Guzzlord +.endif @ P_FAMILY_GUZZLORD +.if P_FAMILY_NECROZMA == TRUE cry_reverse Cry_Necrozma +.if P_FUSION_FORMS == TRUE + cry_reverse Cry_NecrozmaDuskMane + cry_reverse Cry_NecrozmaDawnWings +.if P_ULTRA_BURST_FORMS == TRUE + cry_reverse Cry_NecrozmaUltra +.endif @ P_ULTRA_BURST_FORMS +.endif @ P_FUSION_FORMS +.endif @ P_FAMILY_NECROZMA +.if P_FAMILY_MAGEARNA == TRUE cry_reverse Cry_Magearna +.endif @ P_FAMILY_MAGEARNA +.if P_FAMILY_MARSHADOW == TRUE cry_reverse Cry_Marshadow +.endif @ P_FAMILY_MARSHADOW +.if P_FAMILY_POIPOLE == TRUE cry_reverse Cry_Poipole cry_reverse Cry_Naganadel +.endif @ P_FAMILY_POIPOLE +.if P_FAMILY_STAKATAKA == TRUE cry_reverse Cry_Stakataka +.endif @ P_FAMILY_STAKATAKA +.if P_FAMILY_BLACEPHALON == TRUE cry_reverse Cry_Blacephalon +.endif @ P_FAMILY_BLACEPHALON +.if P_FAMILY_ZERAORA == TRUE cry_reverse Cry_Zeraora +.endif @ P_FAMILY_ZERAORA +.if P_FAMILY_MELTAN == TRUE cry_reverse Cry_Meltan cry_reverse Cry_Melmetal -.else - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown -.endif -.if P_GEN_8_POKEMON == TRUE +.endif @ P_FAMILY_MELTAN +.if P_FAMILY_GROOKEY == TRUE cry_reverse Cry_Grookey cry_reverse Cry_Thwackey cry_reverse Cry_Rillaboom +.endif @ P_FAMILY_GROOKEY +.if P_FAMILY_SCORBUNNY == TRUE cry_reverse Cry_Scorbunny cry_reverse Cry_Raboot cry_reverse Cry_Cinderace +.endif @ P_FAMILY_SCORBUNNY +.if P_FAMILY_SOBBLE == TRUE cry_reverse Cry_Sobble cry_reverse Cry_Drizzile cry_reverse Cry_Inteleon +.endif @ P_FAMILY_SOBBLE +.if P_FAMILY_SKWOVET == TRUE cry_reverse Cry_Skwovet cry_reverse Cry_Greedent +.endif @ P_FAMILY_SKWOVET +.if P_FAMILY_ROOKIDEE == TRUE cry_reverse Cry_Rookidee cry_reverse Cry_Corvisquire cry_reverse Cry_Corviknight +.endif @ P_FAMILY_ROOKIDEE +.if P_FAMILY_BLIPBUG == TRUE cry_reverse Cry_Blipbug cry_reverse Cry_Dottler cry_reverse Cry_Orbeetle +.endif @ P_FAMILY_BLIPBUG +.if P_FAMILY_NICKIT == TRUE cry_reverse Cry_Nickit cry_reverse Cry_Thievul +.endif @ P_FAMILY_NICKIT +.if P_FAMILY_GOSSIFLEUR == TRUE cry_reverse Cry_Gossifleur cry_reverse Cry_Eldegoss +.endif @ P_FAMILY_GOSSIFLEUR +.if P_FAMILY_WOOLOO == TRUE cry_reverse Cry_Wooloo cry_reverse Cry_Dubwool +.endif @ P_FAMILY_WOOLOO +.if P_FAMILY_CHEWTLE == TRUE cry_reverse Cry_Chewtle cry_reverse Cry_Drednaw +.endif @ P_FAMILY_CHEWTLE +.if P_FAMILY_YAMPER == TRUE cry_reverse Cry_Yamper cry_reverse Cry_Boltund +.endif @ P_FAMILY_YAMPER +.if P_FAMILY_ROLYCOLY == TRUE cry_reverse Cry_Rolycoly cry_reverse Cry_Carkol cry_reverse Cry_Coalossal +.endif @ P_FAMILY_ROLYCOLY +.if P_FAMILY_APPLIN == TRUE cry_reverse Cry_Applin cry_reverse Cry_Flapple cry_reverse Cry_Appletun +.if P_GEN_9_CROSS_EVOS == TRUE + cry_reverse Cry_Dipplin +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_APPLIN +.if P_FAMILY_SILICOBRA == TRUE cry_reverse Cry_Silicobra cry_reverse Cry_Sandaconda +.endif @ P_FAMILY_SILICOBRA +.if P_FAMILY_CRAMORANT == TRUE cry_reverse Cry_Cramorant +.endif @ P_FAMILY_CRAMORANT +.if P_FAMILY_ARROKUDA == TRUE cry_reverse Cry_Arrokuda cry_reverse Cry_Barraskewda +.endif @ P_FAMILY_ARROKUDA +.if P_FAMILY_TOXEL == TRUE cry_reverse Cry_Toxel - cry_reverse Cry_Toxtricity + cry_reverse Cry_ToxtricityAmped + cry_reverse Cry_ToxtricityLowKey +.endif @ P_FAMILY_TOXEL +.if P_FAMILY_SIZZLIPEDE == TRUE cry_reverse Cry_Sizzlipede cry_reverse Cry_Centiskorch +.endif @ P_FAMILY_SIZZLIPEDE +.if P_FAMILY_CLOBBOPUS == TRUE cry_reverse Cry_Clobbopus cry_reverse Cry_Grapploct +.endif @ P_FAMILY_CLOBBOPUS +.if P_FAMILY_SINISTEA == TRUE cry_reverse Cry_Sinistea cry_reverse Cry_Polteageist +.endif @ P_FAMILY_SINISTEA +.if P_FAMILY_HATENNA == TRUE cry_reverse Cry_Hatenna cry_reverse Cry_Hattrem cry_reverse Cry_Hatterene +.endif @ P_FAMILY_HATENNA +.if P_FAMILY_IMPIDIMP == TRUE cry_reverse Cry_Impidimp cry_reverse Cry_Morgrem cry_reverse Cry_Grimmsnarl - cry_reverse Cry_Obstagoon - cry_reverse Cry_Perrserker - cry_reverse Cry_Cursola - cry_reverse Cry_Sirfetchd - cry_reverse Cry_MrRime - cry_reverse Cry_Runerigus +.endif @ P_FAMILY_IMPIDIMP +.if P_FAMILY_MILCERY == TRUE cry_reverse Cry_Milcery cry_reverse Cry_Alcremie +.endif @ P_FAMILY_MILCERY +.if P_FAMILY_FALINKS == TRUE cry_reverse Cry_Falinks +.endif @ P_FAMILY_FALINKS +.if P_FAMILY_PINCURCHIN == TRUE cry_reverse Cry_Pincurchin +.endif @ P_FAMILY_PINCURCHIN +.if P_FAMILY_SNOM == TRUE cry_reverse Cry_Snom cry_reverse Cry_Frosmoth +.endif @ P_FAMILY_SNOM +.if P_FAMILY_STONJOURNER == TRUE cry_reverse Cry_Stonjourner - cry_reverse Cry_Eiscue - cry_reverse Cry_Indeedee - cry_reverse Cry_Morpeko +.endif @ P_FAMILY_STONJOURNER +.if P_FAMILY_EISCUE == TRUE + cry_reverse Cry_EiscueIceFace + cry_reverse Cry_EiscueNoiceFace +.endif @ P_FAMILY_EISCUE +.if P_FAMILY_INDEEDEE == TRUE + cry_reverse Cry_IndeedeeMale + cry_reverse Cry_IndeedeeFemale +.endif @ P_FAMILY_INDEEDEE +.if P_FAMILY_MORPEKO == TRUE + cry_reverse Cry_MorpekoFullBelly + cry_reverse Cry_MorpekoHangry +.endif @ P_FAMILY_MORPEKO +.if P_FAMILY_CUFANT == TRUE cry_reverse Cry_Cufant cry_reverse Cry_Copperajah +.endif @ P_FAMILY_CUFANT +.if P_FAMILY_DRACOZOLT == TRUE cry_reverse Cry_Dracozolt +.endif @ P_FAMILY_DRACOZOLT +.if P_FAMILY_ARCTOZOLT == TRUE cry_reverse Cry_Arctozolt +.endif @ P_FAMILY_ARCTOZOLT +.if P_FAMILY_DRACOVISH == TRUE cry_reverse Cry_Dracovish +.endif @ P_FAMILY_DRACOVISH +.if P_FAMILY_ARCTOVISH == TRUE cry_reverse Cry_Arctovish +.endif @ P_FAMILY_ARCTOVISH +.if P_FAMILY_DURALUDON == TRUE cry_reverse Cry_Duraludon +.endif @ P_FAMILY_DURALUDON +.if P_FAMILY_DREEPY == TRUE cry_reverse Cry_Dreepy cry_reverse Cry_Drakloak cry_reverse Cry_Dragapult - cry_reverse Cry_Zacian - cry_reverse Cry_Zamazenta - cry_reverse Cry_Eternatus - cry_reverse Cry_Kubfu - cry_reverse Cry_Urshifu - cry_reverse Cry_Zarude - cry_reverse Cry_Regieleki - cry_reverse Cry_Regidrago - cry_reverse Cry_Glastrier - cry_reverse Cry_Spectrier - cry_reverse Cry_Calyrex - cry_reverse Cry_Wyrdeer - cry_reverse Cry_Kleavor - cry_reverse Cry_Ursaluna - cry_reverse Cry_Basculegion - cry_reverse Cry_Sneasler - cry_reverse Cry_Overqwil - cry_reverse Cry_Enamorus -.else - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown -.endif - @ Megas - cry_reverse Cry_VenusaurMega - cry_reverse Cry_CharizardMegaX - cry_reverse Cry_CharizardMegaY - cry_reverse Cry_BlastoiseMega - cry_reverse Cry_BeedrillMega - cry_reverse Cry_PidgeotMega - cry_reverse Cry_AlakazamMega - cry_reverse Cry_SlowbroMega - cry_reverse Cry_GengarMega - cry_reverse Cry_KangaskhanMega - cry_reverse Cry_PinsirMega - cry_reverse Cry_GyaradosMega - cry_reverse Cry_AerodactylMega - cry_reverse Cry_MewtwoMegaX - cry_reverse Cry_MewtwoMegaY - cry_reverse Cry_AmpharosMega - cry_reverse Cry_SteelixMega - cry_reverse Cry_ScizorMega - cry_reverse Cry_HeracrossMega - cry_reverse Cry_HoundoomMega - cry_reverse Cry_TyranitarMega - cry_reverse Cry_SceptileMega - cry_reverse Cry_BlazikenMega - cry_reverse Cry_SwampertMega - cry_reverse Cry_GardevoirMega - cry_reverse Cry_SableyeMega - cry_reverse Cry_MawileMega - cry_reverse Cry_AggronMega - cry_reverse Cry_MedichamMega - cry_reverse Cry_ManectricMega - cry_reverse Cry_SharpedoMega - cry_reverse Cry_CameruptMega - cry_reverse Cry_AltariaMega - cry_reverse Cry_BanetteMega - cry_reverse Cry_AbsolMega - cry_reverse Cry_GlalieMega - cry_reverse Cry_SalamenceMega - cry_reverse Cry_MetagrossMega - cry_reverse Cry_LatiasMega - cry_reverse Cry_LatiosMega -.if P_GEN_4_POKEMON == TRUE - cry_reverse Cry_LopunnyMega - cry_reverse Cry_GarchompMega - cry_reverse Cry_LucarioMega - cry_reverse Cry_AbomasnowMega - cry_reverse Cry_GalladeMega -.else - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown -.endif -.if P_GEN_5_POKEMON == TRUE - cry_reverse Cry_AudinoMega -.else - cry_reverse Cry_Unown -.endif -.if P_GEN_6_POKEMON == TRUE - cry_reverse Cry_DiancieMega -.else - cry_reverse Cry_Unown -.endif - @ Special Mega + Primals - cry_reverse Cry_RayquazaMega - cry_reverse Cry_KyogrePrimal - cry_reverse Cry_GroudonPrimal - @ Alolan Forms - cry_reverse Cry_Rattata - cry_reverse Cry_Raticate - cry_reverse Cry_Raichu - cry_reverse Cry_Sandshrew - cry_reverse Cry_Sandslash - cry_reverse Cry_Vulpix - cry_reverse Cry_Ninetales - cry_reverse Cry_Diglett - cry_reverse Cry_Dugtrio - cry_reverse Cry_Meowth - cry_reverse Cry_Persian - cry_reverse Cry_Geodude - cry_reverse Cry_Graveler - cry_reverse Cry_Golem - cry_reverse Cry_Grimer - cry_reverse Cry_Muk - cry_reverse Cry_Exeggutor - cry_reverse Cry_Marowak - @ Galarian Forms - cry_reverse Cry_Meowth - cry_reverse Cry_Ponyta - cry_reverse Cry_Rapidash - cry_reverse Cry_SlowpokeGalarian - cry_reverse Cry_Slowbro - cry_reverse Cry_Farfetchd - cry_reverse Cry_Weezing - cry_reverse Cry_MrMime - cry_reverse Cry_Articuno - cry_reverse Cry_Zapdos - cry_reverse Cry_Moltres - cry_reverse Cry_Slowking - cry_reverse Cry_Corsola - cry_reverse Cry_Zigzagoon - cry_reverse Cry_Linoone -.if P_GEN_5_POKEMON == TRUE - cry_reverse Cry_Darumaka - cry_reverse Cry_Darmanitan - cry_reverse Cry_Yamask - cry_reverse Cry_Stunfisk -.else - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown -.endif - @ Hisuian Forms - cry_reverse Cry_Growlithe - cry_reverse Cry_Arcanine - cry_reverse Cry_Voltorb - cry_reverse Cry_Electrode - cry_reverse Cry_Typhlosion - cry_reverse Cry_Qwilfish - cry_reverse Cry_Sneasel -.if P_GEN_5_POKEMON == TRUE - cry_reverse Cry_Samurott - cry_reverse Cry_Lilligant - cry_reverse Cry_Zorua - cry_reverse Cry_Zoroark - cry_reverse Cry_Braviary -.else - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown -.endif -.if P_GEN_6_POKEMON == TRUE - cry_reverse Cry_Sliggoo - cry_reverse Cry_Goodra - cry_reverse Cry_Avalugg -.else - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown -.endif -.if P_GEN_7_POKEMON == TRUE - cry_reverse Cry_Decidueye -.else - cry_reverse Cry_Unown -.endif - @ Misc Forms - @ Cosplay Pikachu - cry_reverse Cry_Pikachu - cry_reverse Cry_Pikachu - cry_reverse Cry_Pikachu - cry_reverse Cry_Pikachu - cry_reverse Cry_Pikachu - cry_reverse Cry_Pikachu - @ Cap Pikachu - cry_reverse Cry_Pikachu - cry_reverse Cry_Pikachu - cry_reverse Cry_Pikachu - cry_reverse Cry_Pikachu - cry_reverse Cry_Pikachu - cry_reverse Cry_Pikachu - cry_reverse Cry_Pikachu - cry_reverse Cry_Pikachu - @ Pichu - cry_reverse Cry_Pichu - @ Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - @ Castform - cry_reverse Cry_Castform - cry_reverse Cry_Castform - cry_reverse Cry_Castform - @ Deoxys - cry_reverse Cry_Deoxys - cry_reverse Cry_Deoxys - cry_reverse Cry_Deoxys -.if P_GEN_4_POKEMON == TRUE - @ Burmy - cry_reverse Cry_Burmy - cry_reverse Cry_Burmy - @ Wormadam - cry_reverse Cry_Wormadam - cry_reverse Cry_Wormadam - @ Cherrim - cry_reverse Cry_Cherrim - @ Shellos - cry_reverse Cry_Shellos - @ Gastrodon - cry_reverse Cry_Gastrodon - @ Rotom - cry_reverse Cry_Rotom - cry_reverse Cry_Rotom - cry_reverse Cry_Rotom - cry_reverse Cry_Rotom - cry_reverse Cry_Rotom - @ Origin Forme - cry_reverse Cry_Dialga - cry_reverse Cry_Palkia - cry_reverse Cry_Giratina - @ Shaymin - cry_reverse Cry_ShayminSky - @ Arceus - cry_reverse Cry_Arceus - cry_reverse Cry_Arceus - cry_reverse Cry_Arceus - cry_reverse Cry_Arceus - cry_reverse Cry_Arceus - cry_reverse Cry_Arceus - cry_reverse Cry_Arceus - cry_reverse Cry_Arceus - cry_reverse Cry_Arceus - cry_reverse Cry_Arceus - cry_reverse Cry_Arceus - cry_reverse Cry_Arceus - cry_reverse Cry_Arceus - cry_reverse Cry_Arceus - cry_reverse Cry_Arceus - cry_reverse Cry_Arceus - cry_reverse Cry_Arceus -.else - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown -.endif -.if P_GEN_5_POKEMON == TRUE - @ Basculin - cry_reverse Cry_Basculin - cry_reverse Cry_Basculin - @ Darmanitan - cry_reverse Cry_Darmanitan - cry_reverse Cry_Darmanitan - @ Deerling - cry_reverse Cry_Deerling - cry_reverse Cry_Deerling - cry_reverse Cry_Deerling - @ Sawsbuck - cry_reverse Cry_Sawsbuck - cry_reverse Cry_Sawsbuck - cry_reverse Cry_Sawsbuck - @ Therian Forms - cry_reverse Cry_TornadusTherian - cry_reverse Cry_ThundurusTherian - cry_reverse Cry_LandorusTherian - cry_reverse Cry_EnamorusTherian - @ Kyurem - cry_reverse Cry_KyuremWhite - cry_reverse Cry_KyuremBlack - @ Keldeo - cry_reverse Cry_Keldeo - @ Meloetta - cry_reverse Cry_Meloetta - @ Genesect - cry_reverse Cry_Genesect - cry_reverse Cry_Genesect - cry_reverse Cry_Genesect - cry_reverse Cry_Genesect -.else - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown -.endif -.if P_GEN_6_POKEMON == TRUE - @ Greninja - cry_reverse Cry_Greninja - cry_reverse Cry_Greninja - @ Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - cry_reverse Cry_Vivillon - @ Flabébé - cry_reverse Cry_Flabebe - cry_reverse Cry_Flabebe - cry_reverse Cry_Flabebe - cry_reverse Cry_Flabebe - @ Floette - cry_reverse Cry_Floette - cry_reverse Cry_Floette - cry_reverse Cry_Floette - cry_reverse Cry_Floette - cry_reverse Cry_FloetteEternalFlower - @ Florges - cry_reverse Cry_Florges - cry_reverse Cry_Florges - cry_reverse Cry_Florges - cry_reverse Cry_Florges - @ Furfrou - cry_reverse Cry_Furfrou - cry_reverse Cry_Furfrou - cry_reverse Cry_Furfrou - cry_reverse Cry_Furfrou - cry_reverse Cry_Furfrou - cry_reverse Cry_Furfrou - cry_reverse Cry_Furfrou - cry_reverse Cry_Furfrou - cry_reverse Cry_Furfrou - @ Meowstic - cry_reverse Cry_Meowstic - @ Aegislash - cry_reverse Cry_Aegislash - @ Pumpkaboo - cry_reverse Cry_Pumpkaboo - cry_reverse Cry_Pumpkaboo - cry_reverse Cry_PumpkabooSuper - @ Gourgeist - cry_reverse Cry_Gourgeist - cry_reverse Cry_Gourgeist - cry_reverse Cry_GourgeistSuper - @ Xerneas - cry_reverse Cry_Xerneas - @ Zygarde - cry_reverse Cry_Zygarde10 - cry_reverse Cry_Zygarde10 - cry_reverse Cry_Zygarde - cry_reverse Cry_ZygardeComplete - @ Hoopa - cry_reverse Cry_HoopaUnbound -.else - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown -.endif -.if P_GEN_7_POKEMON == TRUE - @ Oricorio - cry_reverse Cry_OricorioPomPom - cry_reverse Cry_OricorioPau - cry_reverse Cry_OricorioSensu - @ Rockruff - cry_reverse Cry_Rockruff - @ Lycanroc - cry_reverse Cry_LycanrocMidnight - cry_reverse Cry_LycanrocDusk - @ Wishiwashi - cry_reverse Cry_WishiwashiSchool - @ Silvally - cry_reverse Cry_Silvally - cry_reverse Cry_Silvally - cry_reverse Cry_Silvally - cry_reverse Cry_Silvally - cry_reverse Cry_Silvally - cry_reverse Cry_Silvally - cry_reverse Cry_Silvally - cry_reverse Cry_Silvally - cry_reverse Cry_Silvally - cry_reverse Cry_Silvally - cry_reverse Cry_Silvally - cry_reverse Cry_Silvally - cry_reverse Cry_Silvally - cry_reverse Cry_Silvally - cry_reverse Cry_Silvally - cry_reverse Cry_Silvally - cry_reverse Cry_Silvally - @ Minior - cry_reverse Cry_Minior - cry_reverse Cry_Minior - cry_reverse Cry_Minior - cry_reverse Cry_Minior - cry_reverse Cry_Minior - cry_reverse Cry_Minior - cry_reverse Cry_Minior - cry_reverse Cry_Minior - cry_reverse Cry_Minior - cry_reverse Cry_Minior - cry_reverse Cry_Minior - cry_reverse Cry_Minior - cry_reverse Cry_Minior - @ Mimikyu - cry_reverse Cry_Mimikyu - @ Necrozma - cry_reverse Cry_NecrozmaDuskMane - cry_reverse Cry_NecrozmaDawnWings - cry_reverse Cry_NecrozmaUltra - @ Magearna - cry_reverse Cry_Magearna -.else - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown -.endif -.if P_GEN_8_POKEMON == TRUE - @ Cramorant - cry_reverse Cry_Cramorant - cry_reverse Cry_Cramorant - @ Toxtricity - cry_reverse Cry_ToxtricityLowKey - @ Sinistea - cry_reverse Cry_Sinistea - @ Polteageist - cry_reverse Cry_Polteageist - @ Alcremie - cry_reverse Cry_Alcremie - cry_reverse Cry_Alcremie - cry_reverse Cry_Alcremie - cry_reverse Cry_Alcremie - cry_reverse Cry_Alcremie - cry_reverse Cry_Alcremie - cry_reverse Cry_Alcremie - cry_reverse Cry_Alcremie - @ Eiscue - cry_reverse Cry_EiscueNoiceFace - @ Indeedee - cry_reverse Cry_IndeedeeFemale - @ Morpeko - cry_reverse Cry_MorpekoHangry - @ Zacian +.endif @ P_FAMILY_DREEPY +.if P_FAMILY_ZACIAN == TRUE + cry_reverse Cry_ZacianHeroOfManyBattles cry_reverse Cry_ZacianCrownedSword - @ Zamazenta +.endif @ P_FAMILY_ZACIAN +.if P_FAMILY_ZAMAZENTA == TRUE + cry_reverse Cry_ZamazentaHeroOfManyBattles cry_reverse Cry_ZamazentaCrownedShield - @ Eternatus +.endif @ P_FAMILY_ZAMAZENTA +.if P_FAMILY_ETERNATUS == TRUE + cry_reverse Cry_Eternatus cry_reverse Cry_EternatusEternamax - @ Urshifu +.endif @ P_FAMILY_ETERNATUS +.if P_FAMILY_KUBFU == TRUE + cry_reverse Cry_Kubfu + cry_reverse Cry_UrshifuSingleStrikeStyle cry_reverse Cry_UrshifuRapidStrikeStyle - @ Zarude +.endif @ P_FAMILY_KUBFU +.if P_FAMILY_ZARUDE == TRUE cry_reverse Cry_Zarude - @ Calyrex +.endif @ P_FAMILY_ZARUDE +.if P_FAMILY_REGIELEKI == TRUE + cry_reverse Cry_Regieleki +.endif @ P_FAMILY_REGIELEKI +.if P_FAMILY_REGIDRAGO == TRUE + cry_reverse Cry_Regidrago +.endif @ P_FAMILY_REGIDRAGO +.if P_FAMILY_GLASTRIER == TRUE + cry_reverse Cry_Glastrier +.endif @ P_FAMILY_GLASTRIER +.if P_FAMILY_SPECTRIER == TRUE + cry_reverse Cry_Spectrier +.endif @ P_FAMILY_SPECTRIER +.if P_FAMILY_CALYREX == TRUE + cry_reverse Cry_Calyrex +.if P_FUSION_FORMS == TRUE cry_reverse Cry_CalyrexIceRider cry_reverse Cry_CalyrexShadowRider - @ Basculegion - cry_reverse Cry_Basculegion -.else - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown - cry_reverse Cry_Unown -.endif +.endif @ P_FUSION_FORMS +.endif @ P_FAMILY_CALYREX +.if P_FAMILY_ENAMORUS == TRUE + cry_reverse Cry_EnamorusIncarnate + cry_reverse Cry_EnamorusTherian +.endif @ P_FAMILY_ENAMORUS +.if P_FAMILY_SPRIGATITO == TRUE + cry_reverse Cry_Sprigatito + cry_reverse Cry_Floragato + cry_reverse Cry_Meowscarada +.endif @ P_FAMILY_SPRIGATITO +.if P_FAMILY_FUECOCO == TRUE + cry_reverse Cry_Fuecoco + cry_reverse Cry_Crocalor + cry_reverse Cry_Skeledirge +.endif @ P_FAMILY_FUECOCO +.if P_FAMILY_QUAXLY == TRUE + cry_reverse Cry_Quaxly + cry_reverse Cry_Quaxwell + cry_reverse Cry_Quaquaval +.endif @ P_FAMILY_QUAXLY +.if P_FAMILY_LECHONK == TRUE + cry_reverse Cry_Lechonk + cry_reverse Cry_OinkologneMale + cry_reverse Cry_OinkologneFemale +.endif @ P_FAMILY_LECHONK +.if P_FAMILY_TAROUNTULA == TRUE + cry_reverse Cry_Tarountula + cry_reverse Cry_Spidops +.endif @ P_FAMILY_TAROUNTULA +.if P_FAMILY_NYMBLE == TRUE + cry_reverse Cry_Nymble + cry_reverse Cry_Lokix +.endif @ P_FAMILY_NYMBLE +.if P_FAMILY_PAWMI == TRUE + cry_reverse Cry_Pawmi + cry_reverse Cry_Pawmo + cry_reverse Cry_Pawmot +.endif @ P_FAMILY_PAWMI +.if P_FAMILY_TANDEMAUS == TRUE + cry_reverse Cry_Tandemaus + cry_reverse Cry_MausholdFamilyOfThree + cry_reverse Cry_MausholdFamilyOfFour +.endif @ P_FAMILY_TANDEMAUS +.if P_FAMILY_FIDOUGH == TRUE + cry_reverse Cry_Fidough + cry_reverse Cry_Dachsbun +.endif @ P_FAMILY_FIDOUGH +.if P_FAMILY_SMOLIV == TRUE + cry_reverse Cry_Smoliv + cry_reverse Cry_Dolliv + cry_reverse Cry_Arboliva +.endif @ P_FAMILY_SMOLIV +.if P_FAMILY_SQUAWKABILLY == TRUE + cry_reverse Cry_Squawkabilly +.endif @ P_FAMILY_SQUAWKABILLY +.if P_FAMILY_NACLI == TRUE + cry_reverse Cry_Nacli + cry_reverse Cry_Naclstack + cry_reverse Cry_Garganacl +.endif @ P_FAMILY_NACLI +.if P_FAMILY_CHARCADET == TRUE + cry_reverse Cry_Charcadet + cry_reverse Cry_Armarouge + cry_reverse Cry_Ceruledge +.endif @ P_FAMILY_CHARCADET +.if P_FAMILY_TADBULB == TRUE + cry_reverse Cry_Tadbulb + cry_reverse Cry_Bellibolt +.endif @ P_FAMILY_TADBULB +.if P_FAMILY_WATTREL == TRUE + cry_reverse Cry_Wattrel + cry_reverse Cry_Kilowattrel +.endif @ P_FAMILY_WATTREL +.if P_FAMILY_MASCHIFF == TRUE + cry_reverse Cry_Maschiff + cry_reverse Cry_Mabosstiff +.endif @ P_FAMILY_MASCHIFF +.if P_FAMILY_SHROODLE == TRUE + cry_reverse Cry_Shroodle + cry_reverse Cry_Grafaiai +.endif @ P_FAMILY_SHROODLE +.if P_FAMILY_BRAMBLIN == TRUE + cry_reverse Cry_Bramblin + cry_reverse Cry_Brambleghast +.endif @ P_FAMILY_BRAMBLIN +.if P_FAMILY_TOEDSCOOL == TRUE + cry_reverse Cry_Toedscool + cry_reverse Cry_Toedscruel +.endif @ P_FAMILY_TOEDSCOOL +.if P_FAMILY_KLAWF == TRUE + cry_reverse Cry_Klawf +.endif @ P_FAMILY_KLAWF +.if P_FAMILY_CAPSAKID == TRUE + cry_reverse Cry_Capsakid + cry_reverse Cry_Scovillain +.endif @ P_FAMILY_CAPSAKID +.if P_FAMILY_RELLOR == TRUE + cry_reverse Cry_Rellor + cry_reverse Cry_Rabsca +.endif @ P_FAMILY_RELLOR +.if P_FAMILY_FLITTLE == TRUE + cry_reverse Cry_Flittle + cry_reverse Cry_Espathra +.endif @ P_FAMILY_FLITTLE +.if P_FAMILY_TINKATINK == TRUE + cry_reverse Cry_Tinkatink + cry_reverse Cry_Tinkatuff + cry_reverse Cry_Tinkaton +.endif @ P_FAMILY_TINKATINK +.if P_FAMILY_WIGLETT == TRUE + cry_reverse Cry_Wiglett + cry_reverse Cry_Wugtrio +.endif @ P_FAMILY_WIGLETT +.if P_FAMILY_BOMBIRDIER == TRUE + cry_reverse Cry_Bombirdier +.endif @ P_FAMILY_BOMBIRDIER +.if P_FAMILY_FINIZEN == TRUE + cry_reverse Cry_Finizen + cry_reverse Cry_PalafinZero + cry_reverse Cry_PalafinHero +.endif @ P_FAMILY_FINIZEN +.if P_FAMILY_VAROOM == TRUE + cry_reverse Cry_Varoom + cry_reverse Cry_Revavroom +.endif @ P_FAMILY_VAROOM +.if P_FAMILY_CYCLIZAR == TRUE + cry_reverse Cry_Cyclizar +.endif @ P_FAMILY_CYCLIZAR +.if P_FAMILY_ORTHWORM == TRUE + cry_reverse Cry_Orthworm +.endif @ P_FAMILY_ORTHWORM +.if P_FAMILY_GLIMMET == TRUE + cry_reverse Cry_Glimmet + cry_reverse Cry_Glimmora +.endif @ P_FAMILY_GLIMMET +.if P_FAMILY_GREAVARD == TRUE + cry_reverse Cry_Greavard + cry_reverse Cry_Houndstone +.endif @ P_FAMILY_GREAVARD +.if P_FAMILY_FLAMIGO == TRUE + cry_reverse Cry_Flamigo +.endif @ P_FAMILY_FLAMIGO +.if P_FAMILY_CETODDLE == TRUE + cry_reverse Cry_Cetoddle + cry_reverse Cry_Cetitan +.endif @ P_FAMILY_CETODDLE +.if P_FAMILY_VELUZA == TRUE + cry_reverse Cry_Veluza +.endif @ P_FAMILY_VELUZA +.if P_FAMILY_DONDOZO == TRUE + cry_reverse Cry_Dondozo +.endif @ P_FAMILY_DONDOZO +.if P_FAMILY_TATSUGIRI == TRUE + cry_reverse Cry_TatsugiriCurly + cry_reverse Cry_TatsugiriDroopy + cry_reverse Cry_TatsugiriStretchy +.endif @ P_FAMILY_TATSUGIRI +.if P_FAMILY_GREAT_TUSK == TRUE + cry_reverse Cry_GreatTusk +.endif @ P_FAMILY_GREAT_TUSK +.if P_FAMILY_SCREAM_TAIL == TRUE + cry_reverse Cry_ScreamTail +.endif @ P_FAMILY_SCREAM_TAIL +.if P_FAMILY_BRUTE_BONNET == TRUE + cry_reverse Cry_BruteBonnet +.endif @ P_FAMILY_BRUTE_BONNET +.if P_FAMILY_FLUTTER_MANE == TRUE + cry_reverse Cry_FlutterMane +.endif @ P_FAMILY_FLUTTER_MANE +.if P_FAMILY_SLITHER_WING == TRUE + cry_reverse Cry_SlitherWing +.endif @ P_FAMILY_SLITHER_WING +.if P_FAMILY_SANDY_SHOCKS == TRUE + cry_reverse Cry_SandyShocks +.endif @ P_FAMILY_SANDY_SHOCKS +.if P_FAMILY_IRON_TREADS == TRUE + cry_reverse Cry_IronTreads +.endif @ P_FAMILY_IRON_TREADS +.if P_FAMILY_IRON_BUNDLE == TRUE + cry_reverse Cry_IronBundle +.endif @ P_FAMILY_IRON_BUNDLE +.if P_FAMILY_IRON_HANDS == TRUE + cry_reverse Cry_IronHands +.endif @ P_FAMILY_IRON_HANDS +.if P_FAMILY_IRON_JUGULIS == TRUE + cry_reverse Cry_IronJugulis +.endif @ P_FAMILY_IRON_JUGULIS +.if P_FAMILY_IRON_MOTH == TRUE + cry_reverse Cry_IronMoth +.endif @ P_FAMILY_IRON_MOTH +.if P_FAMILY_IRON_THORNS == TRUE + cry_reverse Cry_IronThorns +.endif @ P_FAMILY_IRON_THORNS +.if P_FAMILY_FRIGIBAX == TRUE + cry_reverse Cry_Frigibax + cry_reverse Cry_Arctibax + cry_reverse Cry_Baxcalibur +.endif @ P_FAMILY_FRIGIBAX +.if P_FAMILY_GIMMIGHOUL == TRUE + cry_reverse Cry_Gimmighoul + cry_reverse Cry_Gholdengo +.endif @ P_FAMILY_GIMMIGHOUL +.if P_FAMILY_WO_CHIEN == TRUE + cry_reverse Cry_WoChien +.endif @ P_FAMILY_WO_CHIEN +.if P_FAMILY_CHIEN_PAO == TRUE + cry_reverse Cry_ChienPao +.endif @ P_FAMILY_CHIEN_PAO +.if P_FAMILY_TING_LU == TRUE + cry_reverse Cry_TingLu +.endif @ P_FAMILY_TING_LU +.if P_FAMILY_CHI_YU == TRUE + cry_reverse Cry_ChiYu +.endif @ P_FAMILY_CHI_YU +.if P_FAMILY_ROARING_MOON == TRUE + cry_reverse Cry_RoaringMoon +.endif @ P_FAMILY_ROARING_MOON +.if P_FAMILY_IRON_VALIANT == TRUE + cry_reverse Cry_IronValiant +.endif @ P_FAMILY_IRON_VALIANT +.if P_FAMILY_KORAIDON == TRUE + cry_reverse Cry_Koraidon +.endif @ P_FAMILY_KORAIDON +.if P_FAMILY_MIRAIDON == TRUE + cry_reverse Cry_Miraidon +.endif @ P_FAMILY_MIRAIDON +.if P_FAMILY_WALKING_WAKE == TRUE + cry_reverse Cry_WalkingWake +.endif @ P_FAMILY_WALKING_WAKE +.if P_FAMILY_IRON_LEAVES == TRUE + cry_reverse Cry_IronLeaves +.endif @ P_FAMILY_IRON_LEAVES +.if P_FAMILY_POLTCHAGEIST == TRUE + cry_reverse Cry_Poltchageist + cry_reverse Cry_Sinistcha +.endif @ P_FAMILY_POLTCHAGEIST +.if P_FAMILY_OKIDOGI == TRUE + cry_reverse Cry_Okidogi +.endif @ P_FAMILY_OKIDOGI +.if P_FAMILY_MUNKIDORI == TRUE + cry_reverse Cry_Munkidori +.endif @ P_FAMILY_MUNKIDORI +.if P_FAMILY_FEZANDIPITI == TRUE + cry_reverse Cry_Fezandipiti +.endif @ P_FAMILY_FEZANDIPITI +.if P_FAMILY_OGERPON == TRUE + cry_reverse Cry_Ogerpon +.endif @ P_FAMILY_OGERPON diff --git a/sound/direct_sound_data.inc b/sound/direct_sound_data.inc index 3020a8f1a5..8a915b6de1 100644 --- a/sound/direct_sound_data.inc +++ b/sound/direct_sound_data.inc @@ -386,6 +386,7 @@ DirectSoundWaveData_unknown_16:: DirectSoundWaveData_unknown_17:: .incbin "sound/direct_sound_samples/unknown_17.bin" +.if P_FAMILY_BULBASAUR == TRUE .align 2 Cry_Bulbasaur:: .incbin "sound/direct_sound_samples/cries/bulbasaur.bin" @@ -398,6 +399,14 @@ Cry_Ivysaur:: Cry_Venusaur:: .incbin "sound/direct_sound_samples/cries/venusaur.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_VenusaurMega:: + .incbin "sound/direct_sound_samples/cries/venusaur_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_BULBASAUR + +.if P_FAMILY_CHARMANDER == TRUE .align 2 Cry_Charmander:: .incbin "sound/direct_sound_samples/cries/charmander.bin" @@ -410,6 +419,18 @@ Cry_Charmeleon:: Cry_Charizard:: .incbin "sound/direct_sound_samples/cries/charizard.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_CharizardMegaX:: + .incbin "sound/direct_sound_samples/cries/charizard_mega_x.bin" + + .align 2 +Cry_CharizardMegaY:: + .incbin "sound/direct_sound_samples/cries/charizard_mega_y.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_CHARMANDER + +.if P_FAMILY_SQUIRTLE == TRUE .align 2 Cry_Squirtle:: .incbin "sound/direct_sound_samples/cries/squirtle.bin" @@ -422,6 +443,14 @@ Cry_Wartortle:: Cry_Blastoise:: .incbin "sound/direct_sound_samples/cries/blastoise.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_BlastoiseMega:: + .incbin "sound/direct_sound_samples/cries/blastoise_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_SQUIRTLE + +.if P_FAMILY_CATERPIE == TRUE .align 2 Cry_Caterpie:: .incbin "sound/direct_sound_samples/cries/caterpie.bin" @@ -433,7 +462,9 @@ Cry_Metapod:: .align 2 Cry_Butterfree:: .incbin "sound/direct_sound_samples/cries/butterfree.bin" +.endif @ P_FAMILY_CATERPIE +.if P_FAMILY_WEEDLE == TRUE .align 2 Cry_Weedle:: .incbin "sound/direct_sound_samples/cries/weedle.bin" @@ -446,6 +477,14 @@ Cry_Kakuna:: Cry_Beedrill:: .incbin "sound/direct_sound_samples/cries/beedrill.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_BeedrillMega:: + .incbin "sound/direct_sound_samples/cries/beedrill_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_WEEDLE + +.if P_FAMILY_PIDGEY == TRUE .align 2 Cry_Pidgey:: .incbin "sound/direct_sound_samples/cries/pidgey.bin" @@ -458,6 +497,14 @@ Cry_Pidgeotto:: Cry_Pidgeot:: .incbin "sound/direct_sound_samples/cries/pidgeot.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_PidgeotMega:: + .incbin "sound/direct_sound_samples/cries/pidgeot_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_PIDGEY + +.if P_FAMILY_RATTATA == TRUE .align 2 Cry_Rattata:: .incbin "sound/direct_sound_samples/cries/rattata.bin" @@ -465,7 +512,9 @@ Cry_Rattata:: .align 2 Cry_Raticate:: .incbin "sound/direct_sound_samples/cries/raticate.bin" +.endif @ P_FAMILY_RATTATA +.if P_FAMILY_SPEAROW == TRUE .align 2 Cry_Spearow:: .incbin "sound/direct_sound_samples/cries/spearow.bin" @@ -473,7 +522,9 @@ Cry_Spearow:: .align 2 Cry_Fearow:: .incbin "sound/direct_sound_samples/cries/fearow.bin" +.endif @ P_FAMILY_SPEAROW +.if P_FAMILY_EKANS == TRUE .align 2 Cry_Ekans:: .incbin "sound/direct_sound_samples/cries/ekans.bin" @@ -481,6 +532,14 @@ Cry_Ekans:: .align 2 Cry_Arbok:: .incbin "sound/direct_sound_samples/cries/arbok.bin" +.endif @ P_FAMILY_EKANS + +.if P_FAMILY_PIKACHU == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Pichu:: + .incbin "sound/direct_sound_samples/cries/pichu.bin" +.endif @ P_GEN_2_CROSS_EVOS .align 2 Cry_Pikachu:: @@ -489,7 +548,9 @@ Cry_Pikachu:: .align 2 Cry_Raichu:: .incbin "sound/direct_sound_samples/cries/raichu.bin" +.endif @ P_FAMILY_PIKACHU +.if P_FAMILY_SANDSHREW == TRUE .align 2 Cry_Sandshrew:: .incbin "sound/direct_sound_samples/cries/sandshrew.bin" @@ -497,7 +558,9 @@ Cry_Sandshrew:: .align 2 Cry_Sandslash:: .incbin "sound/direct_sound_samples/cries/sandslash.bin" +.endif @ P_FAMILY_SANDSHREW +.if P_FAMILY_NIDORAN == TRUE .align 2 Cry_NidoranF:: .incbin "sound/direct_sound_samples/cries/nidoran_f.bin" @@ -521,6 +584,14 @@ Cry_Nidorino:: .align 2 Cry_Nidoking:: .incbin "sound/direct_sound_samples/cries/nidoking.bin" +.endif @ P_FAMILY_NIDORAN + +.if P_FAMILY_CLEFAIRY == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Cleffa:: + .incbin "sound/direct_sound_samples/cries/cleffa.bin" +.endif @ P_GEN_2_CROSS_EVOS .align 2 Cry_Clefairy:: @@ -529,7 +600,9 @@ Cry_Clefairy:: .align 2 Cry_Clefable:: .incbin "sound/direct_sound_samples/cries/clefable.bin" +.endif @ P_FAMILY_CLEFAIRY +.if P_FAMILY_VULPIX == TRUE .align 2 Cry_Vulpix:: .incbin "sound/direct_sound_samples/cries/vulpix.bin" @@ -537,6 +610,14 @@ Cry_Vulpix:: .align 2 Cry_Ninetales:: .incbin "sound/direct_sound_samples/cries/ninetales.bin" +.endif @ P_FAMILY_VULPIX + +.if P_FAMILY_JIGGLYPUFF == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Igglybuff:: + .incbin "sound/direct_sound_samples/cries/igglybuff.bin" +.endif @ P_GEN_2_CROSS_EVOS .align 2 Cry_Jigglypuff:: @@ -545,7 +626,9 @@ Cry_Jigglypuff:: .align 2 Cry_Wigglytuff:: .incbin "sound/direct_sound_samples/cries/wigglytuff.bin" +.endif @ P_FAMILY_JIGGLYPUFF +.if P_FAMILY_ZUBAT == TRUE .align 2 Cry_Zubat:: .incbin "sound/direct_sound_samples/cries/zubat.bin" @@ -554,6 +637,14 @@ Cry_Zubat:: Cry_Golbat:: .incbin "sound/direct_sound_samples/cries/golbat.bin" +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Crobat:: + .incbin "sound/direct_sound_samples/cries/crobat.bin" +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_ZUBAT + +.if P_FAMILY_ODDISH == TRUE .align 2 Cry_Oddish:: .incbin "sound/direct_sound_samples/cries/oddish.bin" @@ -566,6 +657,14 @@ Cry_Gloom:: Cry_Vileplume:: .incbin "sound/direct_sound_samples/cries/vileplume.bin" +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Bellossom:: + .incbin "sound/direct_sound_samples/cries/bellossom.bin" +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_ODDISH + +.if P_FAMILY_PARAS == TRUE .align 2 Cry_Paras:: .incbin "sound/direct_sound_samples/cries/paras.bin" @@ -573,7 +672,9 @@ Cry_Paras:: .align 2 Cry_Parasect:: .incbin "sound/direct_sound_samples/cries/parasect.bin" +.endif @ P_FAMILY_PARAS +.if P_FAMILY_VENONAT == TRUE .align 2 Cry_Venonat:: .incbin "sound/direct_sound_samples/cries/venonat.bin" @@ -581,7 +682,9 @@ Cry_Venonat:: .align 2 Cry_Venomoth:: .incbin "sound/direct_sound_samples/cries/venomoth.bin" +.endif @ P_FAMILY_VENONAT +.if P_FAMILY_DIGLETT == TRUE .align 2 Cry_Diglett:: .incbin "sound/direct_sound_samples/cries/diglett.bin" @@ -589,7 +692,9 @@ Cry_Diglett:: .align 2 Cry_Dugtrio:: .incbin "sound/direct_sound_samples/cries/dugtrio.bin" +.endif @ P_FAMILY_DIGLETT +.if P_FAMILY_MEOWTH == TRUE .align 2 Cry_Meowth:: .incbin "sound/direct_sound_samples/cries/meowth.bin" @@ -598,6 +703,15 @@ Cry_Meowth:: Cry_Persian:: .incbin "sound/direct_sound_samples/cries/persian.bin" +.if P_GALARIAN_FORMS == TRUE + .align 2 +Cry_Perrserker:: + .incbin "sound/direct_sound_samples/cries/perrserker.bin" + +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_MEOWTH + +.if P_FAMILY_PSYDUCK == TRUE .align 2 Cry_Psyduck:: .incbin "sound/direct_sound_samples/cries/psyduck.bin" @@ -605,7 +719,9 @@ Cry_Psyduck:: .align 2 Cry_Golduck:: .incbin "sound/direct_sound_samples/cries/golduck.bin" +.endif @ P_FAMILY_PSYDUCK +.if P_FAMILY_MANKEY == TRUE .align 2 Cry_Mankey:: .incbin "sound/direct_sound_samples/cries/mankey.bin" @@ -614,6 +730,14 @@ Cry_Mankey:: Cry_Primeape:: .incbin "sound/direct_sound_samples/cries/primeape.bin" +.if P_GEN_9_CROSS_EVOS == TRUE + .align 2 +Cry_Annihilape:: + .incbin "sound/direct_sound_samples/cries/annihilape.bin" +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_MANKEY + +.if P_FAMILY_GROWLITHE == TRUE .align 2 Cry_Growlithe:: .incbin "sound/direct_sound_samples/cries/growlithe.bin" @@ -621,7 +745,9 @@ Cry_Growlithe:: .align 2 Cry_Arcanine:: .incbin "sound/direct_sound_samples/cries/arcanine.bin" +.endif @ P_FAMILY_GROWLITHE +.if P_FAMILY_POLIWAG == TRUE .align 2 Cry_Poliwag:: .incbin "sound/direct_sound_samples/cries/poliwag.bin" @@ -634,6 +760,14 @@ Cry_Poliwhirl:: Cry_Poliwrath:: .incbin "sound/direct_sound_samples/cries/poliwrath.bin" +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Politoed:: + .incbin "sound/direct_sound_samples/cries/politoed.bin" +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_POLIWAG + +.if P_FAMILY_ABRA == TRUE .align 2 Cry_Abra:: .incbin "sound/direct_sound_samples/cries/abra.bin" @@ -646,6 +780,14 @@ Cry_Kadabra:: Cry_Alakazam:: .incbin "sound/direct_sound_samples/cries/alakazam.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_AlakazamMega:: + .incbin "sound/direct_sound_samples/cries/alakazam_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_ABRA + +.if P_FAMILY_MACHOP == TRUE .align 2 Cry_Machop:: .incbin "sound/direct_sound_samples/cries/machop.bin" @@ -657,7 +799,9 @@ Cry_Machoke:: .align 2 Cry_Machamp:: .incbin "sound/direct_sound_samples/cries/machamp.bin" +.endif @ P_FAMILY_MACHOP +.if P_FAMILY_BELLSPROUT == TRUE .align 2 Cry_Bellsprout:: .incbin "sound/direct_sound_samples/cries/bellsprout.bin" @@ -669,7 +813,9 @@ Cry_Weepinbell:: .align 2 Cry_Victreebel:: .incbin "sound/direct_sound_samples/cries/victreebel.bin" +.endif @ P_FAMILY_BELLSPROUT +.if P_FAMILY_TENTACOOL == TRUE .align 2 Cry_Tentacool:: .incbin "sound/direct_sound_samples/cries/tentacool.bin" @@ -677,7 +823,9 @@ Cry_Tentacool:: .align 2 Cry_Tentacruel:: .incbin "sound/direct_sound_samples/cries/tentacruel.bin" +.endif @ P_FAMILY_TENTACOOL +.if P_FAMILY_GEODUDE == TRUE .align 2 Cry_Geodude:: .incbin "sound/direct_sound_samples/cries/geodude.bin" @@ -689,7 +837,9 @@ Cry_Graveler:: .align 2 Cry_Golem:: .incbin "sound/direct_sound_samples/cries/golem.bin" +.endif @ P_FAMILY_GEODUDE +.if P_FAMILY_PONYTA == TRUE .align 2 Cry_Ponyta:: .incbin "sound/direct_sound_samples/cries/ponyta.bin" @@ -697,7 +847,9 @@ Cry_Ponyta:: .align 2 Cry_Rapidash:: .incbin "sound/direct_sound_samples/cries/rapidash.bin" +.endif @ P_FAMILY_PONYTA +.if P_FAMILY_SLOWPOKE == TRUE .align 2 Cry_Slowpoke:: .incbin "sound/direct_sound_samples/cries/slowpoke.bin" @@ -706,6 +858,25 @@ Cry_Slowpoke:: Cry_Slowbro:: .incbin "sound/direct_sound_samples/cries/slowbro.bin" +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Slowking:: + .incbin "sound/direct_sound_samples/cries/slowking.bin" +.endif @ P_GEN_2_CROSS_EVOS +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_SlowbroMega:: + .incbin "sound/direct_sound_samples/cries/slowbro_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.if P_GALARIAN_FORMS == TRUE + .align 2 +Cry_SlowpokeGalarian:: + .incbin "sound/direct_sound_samples/cries/slowpoke_galarian.bin" + +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_SLOWPOKE + +.if P_FAMILY_MAGNEMITE == TRUE .align 2 Cry_Magnemite:: .incbin "sound/direct_sound_samples/cries/magnemite.bin" @@ -714,10 +885,27 @@ Cry_Magnemite:: Cry_Magneton:: .incbin "sound/direct_sound_samples/cries/magneton.bin" +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Magnezone:: + .incbin "sound/direct_sound_samples/cries/magnezone.bin" +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_MAGNEMITE + +.if P_FAMILY_FARFETCHD == TRUE .align 2 Cry_Farfetchd:: .incbin "sound/direct_sound_samples/cries/farfetchd.bin" +.if P_GALARIAN_FORMS == TRUE + .align 2 +Cry_Sirfetchd:: + .incbin "sound/direct_sound_samples/cries/sirfetchd.bin" + +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_FARFETCHD + +.if P_FAMILY_DODUO == TRUE .align 2 Cry_Doduo:: .incbin "sound/direct_sound_samples/cries/doduo.bin" @@ -725,7 +913,9 @@ Cry_Doduo:: .align 2 Cry_Dodrio:: .incbin "sound/direct_sound_samples/cries/dodrio.bin" +.endif @ P_FAMILY_DODUO +.if P_FAMILY_SEEL == TRUE .align 2 Cry_Seel:: .incbin "sound/direct_sound_samples/cries/seel.bin" @@ -733,7 +923,9 @@ Cry_Seel:: .align 2 Cry_Dewgong:: .incbin "sound/direct_sound_samples/cries/dewgong.bin" +.endif @ P_FAMILY_SEEL +.if P_FAMILY_GRIMER == TRUE .align 2 Cry_Grimer:: .incbin "sound/direct_sound_samples/cries/grimer.bin" @@ -741,7 +933,9 @@ Cry_Grimer:: .align 2 Cry_Muk:: .incbin "sound/direct_sound_samples/cries/muk.bin" +.endif @ P_FAMILY_GRIMER +.if P_FAMILY_SHELLDER == TRUE .align 2 Cry_Shellder:: .incbin "sound/direct_sound_samples/cries/shellder.bin" @@ -749,7 +943,9 @@ Cry_Shellder:: .align 2 Cry_Cloyster:: .incbin "sound/direct_sound_samples/cries/cloyster.bin" +.endif @ P_FAMILY_SHELLDER +.if P_FAMILY_GASTLY == TRUE .align 2 Cry_Gastly:: .incbin "sound/direct_sound_samples/cries/gastly.bin" @@ -762,10 +958,32 @@ Cry_Haunter:: Cry_Gengar:: .incbin "sound/direct_sound_samples/cries/gengar.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_GengarMega:: + .incbin "sound/direct_sound_samples/cries/gengar_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_GASTLY + +.if P_FAMILY_ONIX == TRUE .align 2 Cry_Onix:: .incbin "sound/direct_sound_samples/cries/onix.bin" +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Steelix:: + .incbin "sound/direct_sound_samples/cries/steelix.bin" + +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_SteelixMega:: + .incbin "sound/direct_sound_samples/cries/steelix_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_ONIX + +.if P_FAMILY_DROWZEE == TRUE .align 2 Cry_Drowzee:: .incbin "sound/direct_sound_samples/cries/drowzee.bin" @@ -773,7 +991,9 @@ Cry_Drowzee:: .align 2 Cry_Hypno:: .incbin "sound/direct_sound_samples/cries/hypno.bin" +.endif @ P_FAMILY_DROWZEE +.if P_FAMILY_KRABBY == TRUE .align 2 Cry_Krabby:: .incbin "sound/direct_sound_samples/cries/krabby.bin" @@ -781,7 +1001,9 @@ Cry_Krabby:: .align 2 Cry_Kingler:: .incbin "sound/direct_sound_samples/cries/kingler.bin" +.endif @ P_FAMILY_KRABBY +.if P_FAMILY_VOLTORB == TRUE .align 2 Cry_Voltorb:: .incbin "sound/direct_sound_samples/cries/voltorb.bin" @@ -789,7 +1011,9 @@ Cry_Voltorb:: .align 2 Cry_Electrode:: .incbin "sound/direct_sound_samples/cries/electrode.bin" +.endif @ P_FAMILY_VOLTORB +.if P_FAMILY_EXEGGCUTE == TRUE .align 2 Cry_Exeggcute:: .incbin "sound/direct_sound_samples/cries/exeggcute.bin" @@ -797,7 +1021,9 @@ Cry_Exeggcute:: .align 2 Cry_Exeggutor:: .incbin "sound/direct_sound_samples/cries/exeggutor.bin" +.endif @ P_FAMILY_EXEGGCUTE +.if P_FAMILY_CUBONE == TRUE .align 2 Cry_Cubone:: .incbin "sound/direct_sound_samples/cries/cubone.bin" @@ -805,6 +1031,14 @@ Cry_Cubone:: .align 2 Cry_Marowak:: .incbin "sound/direct_sound_samples/cries/marowak.bin" +.endif @ P_FAMILY_CUBONE + +.if P_FAMILY_HITMONS == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Tyrogue:: + .incbin "sound/direct_sound_samples/cries/tyrogue.bin" +.endif @ P_GEN_2_CROSS_EVOS .align 2 Cry_Hitmonlee:: @@ -814,10 +1048,26 @@ Cry_Hitmonlee:: Cry_Hitmonchan:: .incbin "sound/direct_sound_samples/cries/hitmonchan.bin" +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Hitmontop:: + .incbin "sound/direct_sound_samples/cries/hitmontop.bin" +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_HITMONS + +.if P_FAMILY_LICKITUNG == TRUE .align 2 Cry_Lickitung:: .incbin "sound/direct_sound_samples/cries/lickitung.bin" +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Lickilicky:: + .incbin "sound/direct_sound_samples/cries/lickilicky.bin" +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_LICKITUNG + +.if P_FAMILY_KOFFING == TRUE .align 2 Cry_Koffing:: .incbin "sound/direct_sound_samples/cries/koffing.bin" @@ -825,7 +1075,9 @@ Cry_Koffing:: .align 2 Cry_Weezing:: .incbin "sound/direct_sound_samples/cries/weezing.bin" +.endif @ P_FAMILY_KOFFING +.if P_FAMILY_RHYHORN == TRUE .align 2 Cry_Rhyhorn:: .incbin "sound/direct_sound_samples/cries/rhyhorn.bin" @@ -834,18 +1086,56 @@ Cry_Rhyhorn:: Cry_Rhydon:: .incbin "sound/direct_sound_samples/cries/rhydon.bin" +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Rhyperior:: + .incbin "sound/direct_sound_samples/cries/rhyperior.bin" +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_RHYHORN + +.if P_FAMILY_CHANSEY == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Happiny:: + .incbin "sound/direct_sound_samples/cries/happiny.bin" +.endif @ P_GEN_4_CROSS_EVOS + .align 2 Cry_Chansey:: .incbin "sound/direct_sound_samples/cries/chansey.bin" +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Blissey:: + .incbin "sound/direct_sound_samples/cries/blissey.bin" +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_CHANSEY + +.if P_FAMILY_TANGELA == TRUE .align 2 Cry_Tangela:: .incbin "sound/direct_sound_samples/cries/tangela.bin" +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Tangrowth:: + .incbin "sound/direct_sound_samples/cries/tangrowth.bin" +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_TANGELA + +.if P_FAMILY_KANGASKHAN == TRUE .align 2 Cry_Kangaskhan:: .incbin "sound/direct_sound_samples/cries/kangaskhan.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_KangaskhanMega:: + .incbin "sound/direct_sound_samples/cries/kangaskhan_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_KANGASKHAN + +.if P_FAMILY_HORSEA == TRUE .align 2 Cry_Horsea:: .incbin "sound/direct_sound_samples/cries/horsea.bin" @@ -854,6 +1144,14 @@ Cry_Horsea:: Cry_Seadra:: .incbin "sound/direct_sound_samples/cries/seadra.bin" +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Kingdra:: + .incbin "sound/direct_sound_samples/cries/kingdra.bin" +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_HORSEA + +.if P_FAMILY_GOLDEEN == TRUE .align 2 Cry_Goldeen:: .incbin "sound/direct_sound_samples/cries/goldeen.bin" @@ -861,7 +1159,9 @@ Cry_Goldeen:: .align 2 Cry_Seaking:: .incbin "sound/direct_sound_samples/cries/seaking.bin" +.endif @ P_FAMILY_GOLDEEN +.if P_FAMILY_STARYU == TRUE .align 2 Cry_Staryu:: .incbin "sound/direct_sound_samples/cries/staryu.bin" @@ -869,35 +1169,117 @@ Cry_Staryu:: .align 2 Cry_Starmie:: .incbin "sound/direct_sound_samples/cries/starmie.bin" +.endif @ P_FAMILY_STARYU + +.if P_FAMILY_MR_MIME == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_MimeJr:: + .incbin "sound/direct_sound_samples/cries/mime_jr.bin" +.endif @ P_GEN_4_CROSS_EVOS .align 2 Cry_MrMime:: .incbin "sound/direct_sound_samples/cries/mr_mime.bin" +.if P_GALARIAN_FORMS == TRUE + .align 2 +Cry_MrRime:: + .incbin "sound/direct_sound_samples/cries/mr_rime.bin" + +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_MR_MIME + +.if P_FAMILY_SCYTHER == TRUE .align 2 Cry_Scyther:: .incbin "sound/direct_sound_samples/cries/scyther.bin" +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Scizor:: + .incbin "sound/direct_sound_samples/cries/scizor.bin" + +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_ScizorMega:: + .incbin "sound/direct_sound_samples/cries/scizor_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_GEN_2_CROSS_EVOS +.if P_GEN_8_CROSS_EVOS == TRUE + .align 2 +Cry_Kleavor:: + .incbin "sound/direct_sound_samples/cries/kleavor.bin" +.endif @ P_GEN_8_CROSS_EVOS +.endif @ P_FAMILY_SCYTHER + +.if P_FAMILY_JYNX == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Smoochum:: + .incbin "sound/direct_sound_samples/cries/smoochum.bin" +.endif @ P_GEN_2_CROSS_EVOS + .align 2 Cry_Jynx:: .incbin "sound/direct_sound_samples/cries/jynx.bin" +.endif @ P_FAMILY_JYNX + +.if P_FAMILY_ELECTABUZZ == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Elekid:: + .incbin "sound/direct_sound_samples/cries/elekid.bin" +.endif @ P_GEN_2_CROSS_EVOS .align 2 Cry_Electabuzz:: .incbin "sound/direct_sound_samples/cries/electabuzz.bin" +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Electivire:: + .incbin "sound/direct_sound_samples/cries/electivire.bin" +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_ELECTABUZZ + +.if P_FAMILY_MAGMAR == TRUE +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Magby:: + .incbin "sound/direct_sound_samples/cries/magby.bin" +.endif @ P_GEN_2_CROSS_EVOS + .align 2 Cry_Magmar:: .incbin "sound/direct_sound_samples/cries/magmar.bin" +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Magmortar:: + .incbin "sound/direct_sound_samples/cries/magmortar.bin" +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_MAGMAR + +.if P_FAMILY_PINSIR == TRUE .align 2 Cry_Pinsir:: .incbin "sound/direct_sound_samples/cries/pinsir.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_PinsirMega:: + .incbin "sound/direct_sound_samples/cries/pinsir_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_PINSIR + +.if P_FAMILY_TAUROS == TRUE .align 2 Cry_Tauros:: .incbin "sound/direct_sound_samples/cries/tauros.bin" +.endif @ P_FAMILY_TAUROS +.if P_FAMILY_MAGIKARP == TRUE .align 2 Cry_Magikarp:: .incbin "sound/direct_sound_samples/cries/magikarp.bin" @@ -906,14 +1288,26 @@ Cry_Magikarp:: Cry_Gyarados:: .incbin "sound/direct_sound_samples/cries/gyarados.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_GyaradosMega:: + .incbin "sound/direct_sound_samples/cries/gyarados_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MAGIKARP + +.if P_FAMILY_LAPRAS == TRUE .align 2 Cry_Lapras:: .incbin "sound/direct_sound_samples/cries/lapras.bin" +.endif @ P_FAMILY_LAPRAS +.if P_FAMILY_DITTO == TRUE .align 2 Cry_Ditto:: .incbin "sound/direct_sound_samples/cries/ditto.bin" +.endif @ P_FAMILY_DITTO +.if P_FAMILY_EEVEE == TRUE .align 2 Cry_Eevee:: .incbin "sound/direct_sound_samples/cries/eevee.bin" @@ -930,10 +1324,50 @@ Cry_Jolteon:: Cry_Flareon:: .incbin "sound/direct_sound_samples/cries/flareon.bin" +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Espeon:: + .incbin "sound/direct_sound_samples/cries/espeon.bin" + + .align 2 +Cry_Umbreon:: + .incbin "sound/direct_sound_samples/cries/umbreon.bin" +.endif @ P_GEN_2_CROSS_EVOS +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Leafeon:: + .incbin "sound/direct_sound_samples/cries/leafeon.bin" + + .align 2 +Cry_Glaceon:: + .incbin "sound/direct_sound_samples/cries/glaceon.bin" +.endif @ P_GEN_4_CROSS_EVOS +.if P_GEN_6_CROSS_EVOS == TRUE + .align 2 +Cry_Sylveon:: + .incbin "sound/direct_sound_samples/cries/sylveon.bin" +.endif @ P_GEN_6_CROSS_EVOS +.endif @ P_FAMILY_EEVEE + +.if P_FAMILY_PORYGON == TRUE .align 2 Cry_Porygon:: .incbin "sound/direct_sound_samples/cries/porygon.bin" +.if P_GEN_2_CROSS_EVOS == TRUE + .align 2 +Cry_Porygon2:: + .incbin "sound/direct_sound_samples/cries/porygon2.bin" + +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_PorygonZ:: + .incbin "sound/direct_sound_samples/cries/porygon_z.bin" +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_GEN_2_CROSS_EVOS +.endif @ P_FAMILY_PORYGON + +.if P_FAMILY_OMANYTE == TRUE .align 2 Cry_Omanyte:: .incbin "sound/direct_sound_samples/cries/omanyte.bin" @@ -941,7 +1375,9 @@ Cry_Omanyte:: .align 2 Cry_Omastar:: .incbin "sound/direct_sound_samples/cries/omastar.bin" +.endif @ P_FAMILY_OMANYTE +.if P_FAMILY_KABUTO == TRUE .align 2 Cry_Kabuto:: .incbin "sound/direct_sound_samples/cries/kabuto.bin" @@ -949,27 +1385,51 @@ Cry_Kabuto:: .align 2 Cry_Kabutops:: .incbin "sound/direct_sound_samples/cries/kabutops.bin" +.endif @ P_FAMILY_KABUTO +.if P_FAMILY_AERODACTYL == TRUE .align 2 Cry_Aerodactyl:: .incbin "sound/direct_sound_samples/cries/aerodactyl.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_AerodactylMega:: + .incbin "sound/direct_sound_samples/cries/aerodactyl_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_AERODACTYL + +.if P_FAMILY_SNORLAX == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Munchlax:: + .incbin "sound/direct_sound_samples/cries/munchlax.bin" +.endif @ P_GEN_4_CROSS_EVOS + .align 2 Cry_Snorlax:: .incbin "sound/direct_sound_samples/cries/snorlax.bin" +.endif @ P_FAMILY_SNORLAX +.if P_FAMILY_ARTICUNO == TRUE .align 2 Cry_Articuno:: .incbin "sound/direct_sound_samples/cries/articuno.bin" +.endif @ P_FAMILY_ARTICUNO +.if P_FAMILY_ZAPDOS == TRUE .align 2 Cry_Zapdos:: .incbin "sound/direct_sound_samples/cries/zapdos.bin" +.endif @ P_FAMILY_ZAPDOS +.if P_FAMILY_MOLTRES == TRUE .align 2 Cry_Moltres:: .incbin "sound/direct_sound_samples/cries/moltres.bin" +.endif @ P_FAMILY_MOLTRES +.if P_FAMILY_DRATINI == TRUE .align 2 Cry_Dratini:: .incbin "sound/direct_sound_samples/cries/dratini.bin" @@ -981,15 +1441,31 @@ Cry_Dragonair:: .align 2 Cry_Dragonite:: .incbin "sound/direct_sound_samples/cries/dragonite.bin" +.endif @ P_FAMILY_DRATINI +.if P_FAMILY_MEWTWO == TRUE .align 2 Cry_Mewtwo:: .incbin "sound/direct_sound_samples/cries/mewtwo.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_MewtwoMegaX:: + .incbin "sound/direct_sound_samples/cries/mewtwo_mega_x.bin" + + .align 2 +Cry_MewtwoMegaY:: + .incbin "sound/direct_sound_samples/cries/mewtwo_mega_y.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MEWTWO + +.if P_FAMILY_MEW == TRUE .align 2 Cry_Mew:: .incbin "sound/direct_sound_samples/cries/mew.bin" +.endif @ P_FAMILY_MEW +.if P_FAMILY_CHIKORITA == TRUE .align 2 Cry_Chikorita:: .incbin "sound/direct_sound_samples/cries/chikorita.bin" @@ -1001,7 +1477,9 @@ Cry_Bayleef:: .align 2 Cry_Meganium:: .incbin "sound/direct_sound_samples/cries/meganium.bin" +.endif @ P_FAMILY_CHIKORITA +.if P_FAMILY_CYNDAQUIL == TRUE .align 2 Cry_Cyndaquil:: .incbin "sound/direct_sound_samples/cries/cyndaquil.bin" @@ -1013,7 +1491,9 @@ Cry_Quilava:: .align 2 Cry_Typhlosion:: .incbin "sound/direct_sound_samples/cries/typhlosion.bin" +.endif @ P_FAMILY_CYNDAQUIL +.if P_FAMILY_TOTODILE == TRUE .align 2 Cry_Totodile:: .incbin "sound/direct_sound_samples/cries/totodile.bin" @@ -1025,7 +1505,9 @@ Cry_Croconaw:: .align 2 Cry_Feraligatr:: .incbin "sound/direct_sound_samples/cries/feraligatr.bin" +.endif @ P_FAMILY_TOTODILE +.if P_FAMILY_SENTRET == TRUE .align 2 Cry_Sentret:: .incbin "sound/direct_sound_samples/cries/sentret.bin" @@ -1033,7 +1515,9 @@ Cry_Sentret:: .align 2 Cry_Furret:: .incbin "sound/direct_sound_samples/cries/furret.bin" +.endif @ P_FAMILY_SENTRET +.if P_FAMILY_HOOTHOOT == TRUE .align 2 Cry_Hoothoot:: .incbin "sound/direct_sound_samples/cries/hoothoot.bin" @@ -1041,7 +1525,9 @@ Cry_Hoothoot:: .align 2 Cry_Noctowl:: .incbin "sound/direct_sound_samples/cries/noctowl.bin" +.endif @ P_FAMILY_HOOTHOOT +.if P_FAMILY_LEDYBA == TRUE .align 2 Cry_Ledyba:: .incbin "sound/direct_sound_samples/cries/ledyba.bin" @@ -1049,7 +1535,9 @@ Cry_Ledyba:: .align 2 Cry_Ledian:: .incbin "sound/direct_sound_samples/cries/ledian.bin" +.endif @ P_FAMILY_LEDYBA +.if P_FAMILY_SPINARAK == TRUE .align 2 Cry_Spinarak:: .incbin "sound/direct_sound_samples/cries/spinarak.bin" @@ -1057,11 +1545,9 @@ Cry_Spinarak:: .align 2 Cry_Ariados:: .incbin "sound/direct_sound_samples/cries/ariados.bin" +.endif @ P_FAMILY_SPINARAK - .align 2 -Cry_Crobat:: - .incbin "sound/direct_sound_samples/cries/crobat.bin" - +.if P_FAMILY_CHINCHOU == TRUE .align 2 Cry_Chinchou:: .incbin "sound/direct_sound_samples/cries/chinchou.bin" @@ -1069,19 +1555,9 @@ Cry_Chinchou:: .align 2 Cry_Lanturn:: .incbin "sound/direct_sound_samples/cries/lanturn.bin" +.endif @ P_FAMILY_CHINCHOU - .align 2 -Cry_Pichu:: - .incbin "sound/direct_sound_samples/cries/pichu.bin" - - .align 2 -Cry_Cleffa:: - .incbin "sound/direct_sound_samples/cries/cleffa.bin" - - .align 2 -Cry_Igglybuff:: - .incbin "sound/direct_sound_samples/cries/igglybuff.bin" - +.if P_FAMILY_TOGEPI == TRUE .align 2 Cry_Togepi:: .incbin "sound/direct_sound_samples/cries/togepi.bin" @@ -1090,6 +1566,14 @@ Cry_Togepi:: Cry_Togetic:: .incbin "sound/direct_sound_samples/cries/togetic.bin" +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Togekiss:: + .incbin "sound/direct_sound_samples/cries/togekiss.bin" +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_TOGEPI + +.if P_FAMILY_NATU == TRUE .align 2 Cry_Natu:: .incbin "sound/direct_sound_samples/cries/natu.bin" @@ -1097,7 +1581,9 @@ Cry_Natu:: .align 2 Cry_Xatu:: .incbin "sound/direct_sound_samples/cries/xatu.bin" +.endif @ P_FAMILY_NATU +.if P_FAMILY_MAREEP == TRUE .align 2 Cry_Mareep:: .incbin "sound/direct_sound_samples/cries/mareep.bin" @@ -1110,9 +1596,19 @@ Cry_Flaaffy:: Cry_Ampharos:: .incbin "sound/direct_sound_samples/cries/ampharos.bin" +.if P_MEGA_EVOLUTIONS == TRUE .align 2 -Cry_Bellossom:: - .incbin "sound/direct_sound_samples/cries/bellossom.bin" +Cry_AmpharosMega:: + .incbin "sound/direct_sound_samples/cries/ampharos_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MAREEP + +.if P_FAMILY_MARILL == TRUE +.if P_GEN_3_CROSS_EVOS == TRUE + .align 2 +Cry_Azurill:: + .incbin "sound/direct_sound_samples/cries/azurill.bin" +.endif @ P_GEN_3_CROSS_EVOS .align 2 Cry_Marill:: @@ -1121,15 +1617,19 @@ Cry_Marill:: .align 2 Cry_Azumarill:: .incbin "sound/direct_sound_samples/cries/azumarill.bin" +.endif @ P_FAMILY_MARILL + +.if P_FAMILY_SUDOWOODO == TRUE + .align 2 +Cry_Bonsly:: + .incbin "sound/direct_sound_samples/cries/bonsly.bin" .align 2 Cry_Sudowoodo:: .incbin "sound/direct_sound_samples/cries/sudowoodo.bin" +.endif @ P_FAMILY_SUDOWOODO - .align 2 -Cry_Politoed:: - .incbin "sound/direct_sound_samples/cries/politoed.bin" - +.if P_FAMILY_HOPPIP == TRUE .align 2 Cry_Hoppip:: .incbin "sound/direct_sound_samples/cries/hoppip.bin" @@ -1141,11 +1641,19 @@ Cry_Skiploom:: .align 2 Cry_Jumpluff:: .incbin "sound/direct_sound_samples/cries/jumpluff.bin" +.endif @ P_FAMILY_HOPPIP +.if P_FAMILY_AIPOM == TRUE .align 2 Cry_Aipom:: .incbin "sound/direct_sound_samples/cries/aipom.bin" + .align 2 +Cry_Ambipom:: + .incbin "sound/direct_sound_samples/cries/ambipom.bin" +.endif @ P_FAMILY_AIPOM + +.if P_FAMILY_SUNKERN == TRUE .align 2 Cry_Sunkern:: .incbin "sound/direct_sound_samples/cries/sunkern.bin" @@ -1153,11 +1661,21 @@ Cry_Sunkern:: .align 2 Cry_Sunflora:: .incbin "sound/direct_sound_samples/cries/sunflora.bin" +.endif @ P_FAMILY_SUNKERN +.if P_FAMILY_YANMA == TRUE .align 2 Cry_Yanma:: .incbin "sound/direct_sound_samples/cries/yanma.bin" +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Yanmega:: + .incbin "sound/direct_sound_samples/cries/yanmega.bin" +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_YANMA + +.if P_FAMILY_WOOPER == TRUE .align 2 Cry_Wooper:: .incbin "sound/direct_sound_samples/cries/wooper.bin" @@ -1166,38 +1684,65 @@ Cry_Wooper:: Cry_Quagsire:: .incbin "sound/direct_sound_samples/cries/quagsire.bin" +.if P_PALDEAN_FORMS == TRUE .align 2 -Cry_Espeon:: - .incbin "sound/direct_sound_samples/cries/espeon.bin" +Cry_Clodsire:: + .incbin "sound/direct_sound_samples/cries/clodsire.bin" - .align 2 -Cry_Umbreon:: - .incbin "sound/direct_sound_samples/cries/umbreon.bin" +.endif @ P_PALDEAN_FORMS +.endif @ P_FAMILY_WOOPER +.if P_FAMILY_MURKROW == TRUE .align 2 Cry_Murkrow:: .incbin "sound/direct_sound_samples/cries/murkrow.bin" .align 2 -Cry_Slowking:: - .incbin "sound/direct_sound_samples/cries/slowking.bin" +Cry_Honchkrow:: + .incbin "sound/direct_sound_samples/cries/honchkrow.bin" +.endif @ P_FAMILY_MURKROW +.if P_FAMILY_MISDREAVUS == TRUE .align 2 Cry_Misdreavus:: .incbin "sound/direct_sound_samples/cries/misdreavus.bin" + .align 2 +Cry_Mismagius:: + .incbin "sound/direct_sound_samples/cries/mismagius.bin" +.endif @ P_FAMILY_MISDREAVUS + +.if P_FAMILY_UNOWN == TRUE .align 2 Cry_Unown:: .incbin "sound/direct_sound_samples/cries/unown.bin" +.endif @ P_FAMILY_UNOWN + +.if P_FAMILY_WOBBUFFET == TRUE +.if P_GEN_3_CROSS_EVOS == TRUE + .align 2 +Cry_Wynaut:: + .incbin "sound/direct_sound_samples/cries/wynaut.bin" +.endif @ P_GEN_3_CROSS_EVOS .align 2 Cry_Wobbuffet:: .incbin "sound/direct_sound_samples/cries/wobbuffet.bin" +.endif @ P_FAMILY_WOBBUFFET +.if P_FAMILY_GIRAFARIG == TRUE .align 2 Cry_Girafarig:: .incbin "sound/direct_sound_samples/cries/girafarig.bin" +.if P_GEN_9_CROSS_EVOS == TRUE + .align 2 +Cry_Farigiraf:: + .incbin "sound/direct_sound_samples/cries/farigiraf.bin" +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_GIRAFARIG + +.if P_FAMILY_PINECO == TRUE .align 2 Cry_Pineco:: .incbin "sound/direct_sound_samples/cries/pineco.bin" @@ -1205,19 +1750,33 @@ Cry_Pineco:: .align 2 Cry_Forretress:: .incbin "sound/direct_sound_samples/cries/forretress.bin" +.endif @ P_FAMILY_PINECO +.if P_FAMILY_DUNSPARCE == TRUE .align 2 Cry_Dunsparce:: .incbin "sound/direct_sound_samples/cries/dunsparce.bin" +.if P_GEN_9_CROSS_EVOS == TRUE + .align 2 +Cry_Dudunsparce:: + .incbin "sound/direct_sound_samples/cries/dudunsparce.bin" +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_DUNSPARCE + +.if P_FAMILY_GLIGAR == TRUE .align 2 Cry_Gligar:: .incbin "sound/direct_sound_samples/cries/gligar.bin" +.if P_GEN_4_CROSS_EVOS == TRUE .align 2 -Cry_Steelix:: - .incbin "sound/direct_sound_samples/cries/steelix.bin" +Cry_Gliscor:: + .incbin "sound/direct_sound_samples/cries/gliscor.bin" +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_GLIGAR +.if P_FAMILY_SNUBBULL == TRUE .align 2 Cry_Snubbull:: .incbin "sound/direct_sound_samples/cries/snubbull.bin" @@ -1225,27 +1784,58 @@ Cry_Snubbull:: .align 2 Cry_Granbull:: .incbin "sound/direct_sound_samples/cries/granbull.bin" +.endif @ P_FAMILY_SNUBBULL +.if P_FAMILY_QWILFISH == TRUE .align 2 Cry_Qwilfish:: .incbin "sound/direct_sound_samples/cries/qwilfish.bin" +.if P_HISUIAN_FORMS == TRUE .align 2 -Cry_Scizor:: - .incbin "sound/direct_sound_samples/cries/scizor.bin" +Cry_Overqwil:: + .incbin "sound/direct_sound_samples/cries/overqwil.bin" +.endif @ P_HISUIAN_FORMS +.endif @ P_FAMILY_QWILFISH + +.if P_FAMILY_SHUCKLE == TRUE .align 2 Cry_Shuckle:: .incbin "sound/direct_sound_samples/cries/shuckle.bin" +.endif @ P_FAMILY_SHUCKLE +.if P_FAMILY_HERACROSS == TRUE .align 2 Cry_Heracross:: .incbin "sound/direct_sound_samples/cries/heracross.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_HeracrossMega:: + .incbin "sound/direct_sound_samples/cries/heracross_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_HERACROSS + +.if P_FAMILY_SNEASEL == TRUE .align 2 Cry_Sneasel:: .incbin "sound/direct_sound_samples/cries/sneasel.bin" +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Weavile:: + .incbin "sound/direct_sound_samples/cries/weavile.bin" +.endif @ P_GEN_4_CROSS_EVOS +.if P_HISUIAN_FORMS == TRUE + .align 2 +Cry_Sneasler:: + .incbin "sound/direct_sound_samples/cries/sneasler.bin" + +.endif @ P_HISUIAN_FORMS +.endif @ P_FAMILY_SNEASEL + +.if P_FAMILY_TEDDIURSA == TRUE .align 2 Cry_Teddiursa:: .incbin "sound/direct_sound_samples/cries/teddiursa.bin" @@ -1254,6 +1844,14 @@ Cry_Teddiursa:: Cry_Ursaring:: .incbin "sound/direct_sound_samples/cries/ursaring.bin" +.if P_GEN_9_CROSS_EVOS == TRUE + .align 2 +Cry_Ursaluna:: + .incbin "sound/direct_sound_samples/cries/ursaluna.bin" +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_TEDDIURSA + +.if P_FAMILY_SLUGMA == TRUE .align 2 Cry_Slugma:: .incbin "sound/direct_sound_samples/cries/slugma.bin" @@ -1261,7 +1859,9 @@ Cry_Slugma:: .align 2 Cry_Magcargo:: .incbin "sound/direct_sound_samples/cries/magcargo.bin" +.endif @ P_FAMILY_SLUGMA +.if P_FAMILY_SWINUB == TRUE .align 2 Cry_Swinub:: .incbin "sound/direct_sound_samples/cries/swinub.bin" @@ -1270,10 +1870,27 @@ Cry_Swinub:: Cry_Piloswine:: .incbin "sound/direct_sound_samples/cries/piloswine.bin" +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Mamoswine:: + .incbin "sound/direct_sound_samples/cries/mamoswine.bin" +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_SWINUB + +.if P_FAMILY_CORSOLA == TRUE .align 2 Cry_Corsola:: .incbin "sound/direct_sound_samples/cries/corsola.bin" +.if P_GALARIAN_FORMS == TRUE + .align 2 +Cry_Cursola:: + .incbin "sound/direct_sound_samples/cries/cursola.bin" + +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_CORSOLA + +.if P_FAMILY_REMORAID == TRUE .align 2 Cry_Remoraid:: .incbin "sound/direct_sound_samples/cries/remoraid.bin" @@ -1281,19 +1898,33 @@ Cry_Remoraid:: .align 2 Cry_Octillery:: .incbin "sound/direct_sound_samples/cries/octillery.bin" +.endif @ P_FAMILY_REMORAID +.if P_FAMILY_DELIBIRD == TRUE .align 2 Cry_Delibird:: .incbin "sound/direct_sound_samples/cries/delibird.bin" +.endif @ P_FAMILY_DELIBIRD + +.if P_FAMILY_MANTINE == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Mantyke:: + .incbin "sound/direct_sound_samples/cries/mantyke.bin" +.endif @ P_GEN_4_CROSS_EVOS .align 2 Cry_Mantine:: .incbin "sound/direct_sound_samples/cries/mantine.bin" +.endif @ P_FAMILY_MANTINE +.if P_FAMILY_SKARMORY == TRUE .align 2 Cry_Skarmory:: .incbin "sound/direct_sound_samples/cries/skarmory.bin" +.endif @ P_FAMILY_SKARMORY +.if P_FAMILY_HOUNDOUR == TRUE .align 2 Cry_Houndour:: .incbin "sound/direct_sound_samples/cries/houndour.bin" @@ -1302,10 +1933,14 @@ Cry_Houndour:: Cry_Houndoom:: .incbin "sound/direct_sound_samples/cries/houndoom.bin" +.if P_MEGA_EVOLUTIONS == TRUE .align 2 -Cry_Kingdra:: - .incbin "sound/direct_sound_samples/cries/kingdra.bin" +Cry_HoundoomMega:: + .incbin "sound/direct_sound_samples/cries/houndoom_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_HOUNDOUR +.if P_FAMILY_PHANPY == TRUE .align 2 Cry_Phanpy:: .incbin "sound/direct_sound_samples/cries/phanpy.bin" @@ -1313,59 +1948,51 @@ Cry_Phanpy:: .align 2 Cry_Donphan:: .incbin "sound/direct_sound_samples/cries/donphan.bin" +.endif @ P_FAMILY_PHANPY - .align 2 -Cry_Porygon2:: - .incbin "sound/direct_sound_samples/cries/porygon2.bin" - +.if P_FAMILY_STANTLER == TRUE .align 2 Cry_Stantler:: .incbin "sound/direct_sound_samples/cries/stantler.bin" +.if P_GEN_8_CROSS_EVOS == TRUE + .align 2 +Cry_Wyrdeer:: + .incbin "sound/direct_sound_samples/cries/wyrdeer.bin" +.endif @ P_GEN_8_CROSS_EVOS +.endif @ P_FAMILY_STANTLER + +.if P_FAMILY_SMEARGLE == TRUE .align 2 Cry_Smeargle:: .incbin "sound/direct_sound_samples/cries/smeargle.bin" +.endif @ P_FAMILY_SMEARGLE - .align 2 -Cry_Tyrogue:: - .incbin "sound/direct_sound_samples/cries/tyrogue.bin" - - .align 2 -Cry_Hitmontop:: - .incbin "sound/direct_sound_samples/cries/hitmontop.bin" - - .align 2 -Cry_Smoochum:: - .incbin "sound/direct_sound_samples/cries/smoochum.bin" - - .align 2 -Cry_Elekid:: - .incbin "sound/direct_sound_samples/cries/elekid.bin" - - .align 2 -Cry_Magby:: - .incbin "sound/direct_sound_samples/cries/magby.bin" - +.if P_FAMILY_MILTANK == TRUE .align 2 Cry_Miltank:: .incbin "sound/direct_sound_samples/cries/miltank.bin" +.endif @ P_FAMILY_MILTANK - .align 2 -Cry_Blissey:: - .incbin "sound/direct_sound_samples/cries/blissey.bin" - +.if P_FAMILY_RAIKOU == TRUE .align 2 Cry_Raikou:: .incbin "sound/direct_sound_samples/cries/raikou.bin" +.endif @ P_FAMILY_RAIKOU +.if P_FAMILY_ENTEI == TRUE .align 2 Cry_Entei:: .incbin "sound/direct_sound_samples/cries/entei.bin" +.endif @ P_FAMILY_ENTEI +.if P_FAMILY_SUICUNE == TRUE .align 2 Cry_Suicune:: .incbin "sound/direct_sound_samples/cries/suicune.bin" +.endif @ P_FAMILY_SUICUNE +.if P_FAMILY_LARVITAR == TRUE .align 2 Cry_Larvitar:: .incbin "sound/direct_sound_samples/cries/larvitar.bin" @@ -1378,18 +2005,32 @@ Cry_Pupitar:: Cry_Tyranitar:: .incbin "sound/direct_sound_samples/cries/tyranitar.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_TyranitarMega:: + .incbin "sound/direct_sound_samples/cries/tyranitar_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_LARVITAR + +.if P_FAMILY_LUGIA == TRUE .align 2 Cry_Lugia:: .incbin "sound/direct_sound_samples/cries/lugia.bin" +.endif @ P_FAMILY_LUGIA +.if P_FAMILY_HO_OH == TRUE .align 2 Cry_HoOh:: .incbin "sound/direct_sound_samples/cries/ho_oh.bin" +.endif @ P_FAMILY_HO_OH +.if P_FAMILY_CELEBI == TRUE .align 2 Cry_Celebi:: .incbin "sound/direct_sound_samples/cries/celebi.bin" +.endif @ P_FAMILY_CELEBI +.if P_FAMILY_TREECKO == TRUE .align 2 Cry_Treecko:: .incbin "sound/direct_sound_samples/cries/treecko.bin" @@ -1402,6 +2043,14 @@ Cry_Grovyle:: Cry_Sceptile:: .incbin "sound/direct_sound_samples/cries/sceptile.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_SceptileMega:: + .incbin "sound/direct_sound_samples/cries/sceptile_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_TREECKO + +.if P_FAMILY_TORCHIC == TRUE .align 2 Cry_Torchic:: .incbin "sound/direct_sound_samples/cries/torchic.bin" @@ -1414,6 +2063,14 @@ Cry_Combusken:: Cry_Blaziken:: .incbin "sound/direct_sound_samples/cries/blaziken.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_BlazikenMega:: + .incbin "sound/direct_sound_samples/cries/blaziken_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_TORCHIC + +.if P_FAMILY_MUDKIP == TRUE .align 2 Cry_Mudkip:: .incbin "sound/direct_sound_samples/cries/mudkip.bin" @@ -1426,6 +2083,14 @@ Cry_Marshtomp:: Cry_Swampert:: .incbin "sound/direct_sound_samples/cries/swampert.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_SwampertMega:: + .incbin "sound/direct_sound_samples/cries/swampert_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MUDKIP + +.if P_FAMILY_POOCHYENA == TRUE .align 2 Cry_Poochyena:: .incbin "sound/direct_sound_samples/cries/poochyena.bin" @@ -1433,7 +2098,9 @@ Cry_Poochyena:: .align 2 Cry_Mightyena:: .incbin "sound/direct_sound_samples/cries/mightyena.bin" +.endif @ P_FAMILY_POOCHYENA +.if P_FAMILY_ZIGZAGOON == TRUE .align 2 Cry_Zigzagoon:: .incbin "sound/direct_sound_samples/cries/zigzagoon.bin" @@ -1442,6 +2109,15 @@ Cry_Zigzagoon:: Cry_Linoone:: .incbin "sound/direct_sound_samples/cries/linoone.bin" +.if P_GALARIAN_FORMS == TRUE + .align 2 +Cry_Obstagoon:: + .incbin "sound/direct_sound_samples/cries/obstagoon.bin" + +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_ZIGZAGOON + +.if P_FAMILY_WURMPLE == TRUE .align 2 Cry_Wurmple:: .incbin "sound/direct_sound_samples/cries/wurmple.bin" @@ -1461,7 +2137,9 @@ Cry_Cascoon:: .align 2 Cry_Dustox:: .incbin "sound/direct_sound_samples/cries/dustox.bin" +.endif @ P_FAMILY_WURMPLE +.if P_FAMILY_LOTAD == TRUE .align 2 Cry_Lotad:: .incbin "sound/direct_sound_samples/cries/lotad.bin" @@ -1473,7 +2151,9 @@ Cry_Lombre:: .align 2 Cry_Ludicolo:: .incbin "sound/direct_sound_samples/cries/ludicolo.bin" +.endif @ P_FAMILY_LOTAD +.if P_FAMILY_SEEDOT == TRUE .align 2 Cry_Seedot:: .incbin "sound/direct_sound_samples/cries/seedot.bin" @@ -1485,7 +2165,9 @@ Cry_Nuzleaf:: .align 2 Cry_Shiftry:: .incbin "sound/direct_sound_samples/cries/shiftry.bin" +.endif @ P_FAMILY_SEEDOT +.if P_FAMILY_TAILLOW == TRUE .align 2 Cry_Taillow:: .incbin "sound/direct_sound_samples/cries/taillow.bin" @@ -1493,7 +2175,9 @@ Cry_Taillow:: .align 2 Cry_Swellow:: .incbin "sound/direct_sound_samples/cries/swellow.bin" +.endif @ P_FAMILY_TAILLOW +.if P_FAMILY_WINGULL == TRUE .align 2 Cry_Wingull:: .incbin "sound/direct_sound_samples/cries/wingull.bin" @@ -1501,7 +2185,9 @@ Cry_Wingull:: .align 2 Cry_Pelipper:: .incbin "sound/direct_sound_samples/cries/pelipper.bin" +.endif @ P_FAMILY_WINGULL +.if P_FAMILY_RALTS == TRUE .align 2 Cry_Ralts:: .incbin "sound/direct_sound_samples/cries/ralts.bin" @@ -1514,6 +2200,25 @@ Cry_Kirlia:: Cry_Gardevoir:: .incbin "sound/direct_sound_samples/cries/gardevoir.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_GardevoirMega:: + .incbin "sound/direct_sound_samples/cries/gardevoir_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Gallade:: + .incbin "sound/direct_sound_samples/cries/gallade.bin" + +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_GalladeMega:: + .incbin "sound/direct_sound_samples/cries/gallade_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_RALTS + +.if P_FAMILY_SURSKIT == TRUE .align 2 Cry_Surskit:: .incbin "sound/direct_sound_samples/cries/surskit.bin" @@ -1521,7 +2226,9 @@ Cry_Surskit:: .align 2 Cry_Masquerain:: .incbin "sound/direct_sound_samples/cries/masquerain.bin" +.endif @ P_FAMILY_SURSKIT +.if P_FAMILY_SHROOMISH == TRUE .align 2 Cry_Shroomish:: .incbin "sound/direct_sound_samples/cries/shroomish.bin" @@ -1529,7 +2236,9 @@ Cry_Shroomish:: .align 2 Cry_Breloom:: .incbin "sound/direct_sound_samples/cries/breloom.bin" +.endif @ P_FAMILY_SHROOMISH +.if P_FAMILY_SLAKOTH == TRUE .align 2 Cry_Slakoth:: .incbin "sound/direct_sound_samples/cries/slakoth.bin" @@ -1541,7 +2250,9 @@ Cry_Vigoroth:: .align 2 Cry_Slaking:: .incbin "sound/direct_sound_samples/cries/slaking.bin" +.endif @ P_FAMILY_SLAKOTH +.if P_FAMILY_NINCADA == TRUE .align 2 Cry_Nincada:: .incbin "sound/direct_sound_samples/cries/nincada.bin" @@ -1553,7 +2264,9 @@ Cry_Ninjask:: .align 2 Cry_Shedinja:: .incbin "sound/direct_sound_samples/cries/shedinja.bin" +.endif @ P_FAMILY_NINCADA +.if P_FAMILY_WHISMUR == TRUE .align 2 Cry_Whismur:: .incbin "sound/direct_sound_samples/cries/whismur.bin" @@ -1565,7 +2278,9 @@ Cry_Loudred:: .align 2 Cry_Exploud:: .incbin "sound/direct_sound_samples/cries/exploud.bin" +.endif @ P_FAMILY_WHISMUR +.if P_FAMILY_MAKUHITA == TRUE .align 2 Cry_Makuhita:: .incbin "sound/direct_sound_samples/cries/makuhita.bin" @@ -1573,15 +2288,21 @@ Cry_Makuhita:: .align 2 Cry_Hariyama:: .incbin "sound/direct_sound_samples/cries/hariyama.bin" +.endif @ P_FAMILY_MAKUHITA - .align 2 -Cry_Azurill:: - .incbin "sound/direct_sound_samples/cries/azurill.bin" - +.if P_FAMILY_NOSEPASS == TRUE .align 2 Cry_Nosepass:: .incbin "sound/direct_sound_samples/cries/nosepass.bin" +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Probopass:: + .incbin "sound/direct_sound_samples/cries/probopass.bin" +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_NOSEPASS + +.if P_FAMILY_SKITTY == TRUE .align 2 Cry_Skitty:: .incbin "sound/direct_sound_samples/cries/skitty.bin" @@ -1589,15 +2310,33 @@ Cry_Skitty:: .align 2 Cry_Delcatty:: .incbin "sound/direct_sound_samples/cries/delcatty.bin" +.endif @ P_FAMILY_SKITTY +.if P_FAMILY_SABLEYE == TRUE .align 2 Cry_Sableye:: .incbin "sound/direct_sound_samples/cries/sableye.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_SableyeMega:: + .incbin "sound/direct_sound_samples/cries/sableye_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_SABLEYE + +.if P_FAMILY_MAWILE == TRUE .align 2 Cry_Mawile:: .incbin "sound/direct_sound_samples/cries/mawile.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_MawileMega:: + .incbin "sound/direct_sound_samples/cries/mawile_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MAWILE + +.if P_FAMILY_ARON == TRUE .align 2 Cry_Aron:: .incbin "sound/direct_sound_samples/cries/aron.bin" @@ -1610,6 +2349,14 @@ Cry_Lairon:: Cry_Aggron:: .incbin "sound/direct_sound_samples/cries/aggron.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_AggronMega:: + .incbin "sound/direct_sound_samples/cries/aggron_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_ARON + +.if P_FAMILY_MEDITITE == TRUE .align 2 Cry_Meditite:: .incbin "sound/direct_sound_samples/cries/meditite.bin" @@ -1618,6 +2365,14 @@ Cry_Meditite:: Cry_Medicham:: .incbin "sound/direct_sound_samples/cries/medicham.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_MedichamMega:: + .incbin "sound/direct_sound_samples/cries/medicham_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_MEDITITE + +.if P_FAMILY_ELECTRIKE == TRUE .align 2 Cry_Electrike:: .incbin "sound/direct_sound_samples/cries/electrike.bin" @@ -1626,14 +2381,26 @@ Cry_Electrike:: Cry_Manectric:: .incbin "sound/direct_sound_samples/cries/manectric.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_ManectricMega:: + .incbin "sound/direct_sound_samples/cries/manectric_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_ELECTRIKE + +.if P_FAMILY_PLUSLE == TRUE .align 2 Cry_Plusle:: .incbin "sound/direct_sound_samples/cries/plusle.bin" +.endif @ P_FAMILY_PLUSLE +.if P_FAMILY_MINUN == TRUE .align 2 Cry_Minun:: .incbin "sound/direct_sound_samples/cries/minun.bin" +.endif @ P_FAMILY_MINUN +.if P_FAMILY_VOLBEAT_ILLUMISE == TRUE .align 2 Cry_Volbeat:: .incbin "sound/direct_sound_samples/cries/volbeat.bin" @@ -1641,11 +2408,27 @@ Cry_Volbeat:: .align 2 Cry_Illumise:: .incbin "sound/direct_sound_samples/cries/illumise.bin" +.endif @ P_FAMILY_VOLBEAT_ILLUMISE + +.if P_FAMILY_ROSELIA == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Budew:: + .incbin "sound/direct_sound_samples/cries/budew.bin" +.endif @ P_GEN_4_CROSS_EVOS .align 2 Cry_Roselia:: .incbin "sound/direct_sound_samples/cries/roselia.bin" +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Roserade:: + .incbin "sound/direct_sound_samples/cries/roserade.bin" +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_ROSELIA + +.if P_FAMILY_GULPIN == TRUE .align 2 Cry_Gulpin:: .incbin "sound/direct_sound_samples/cries/gulpin.bin" @@ -1653,7 +2436,9 @@ Cry_Gulpin:: .align 2 Cry_Swalot:: .incbin "sound/direct_sound_samples/cries/swalot.bin" +.endif @ P_FAMILY_GULPIN +.if P_FAMILY_CARVANHA == TRUE .align 2 Cry_Carvanha:: .incbin "sound/direct_sound_samples/cries/carvanha.bin" @@ -1662,6 +2447,14 @@ Cry_Carvanha:: Cry_Sharpedo:: .incbin "sound/direct_sound_samples/cries/sharpedo.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_SharpedoMega:: + .incbin "sound/direct_sound_samples/cries/sharpedo_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_CARVANHA + +.if P_FAMILY_WAILMER == TRUE .align 2 Cry_Wailmer:: .incbin "sound/direct_sound_samples/cries/wailmer.bin" @@ -1669,7 +2462,9 @@ Cry_Wailmer:: .align 2 Cry_Wailord:: .incbin "sound/direct_sound_samples/cries/wailord.bin" +.endif @ P_FAMILY_WAILMER +.if P_FAMILY_NUMEL == TRUE .align 2 Cry_Numel:: .incbin "sound/direct_sound_samples/cries/numel.bin" @@ -1678,10 +2473,20 @@ Cry_Numel:: Cry_Camerupt:: .incbin "sound/direct_sound_samples/cries/camerupt.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_CameruptMega:: + .incbin "sound/direct_sound_samples/cries/camerupt_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_NUMEL + +.if P_FAMILY_TORKOAL == TRUE .align 2 Cry_Torkoal:: .incbin "sound/direct_sound_samples/cries/torkoal.bin" +.endif @ P_FAMILY_TORKOAL +.if P_FAMILY_SPOINK == TRUE .align 2 Cry_Spoink:: .incbin "sound/direct_sound_samples/cries/spoink.bin" @@ -1689,11 +2494,15 @@ Cry_Spoink:: .align 2 Cry_Grumpig:: .incbin "sound/direct_sound_samples/cries/grumpig.bin" +.endif @ P_FAMILY_SPOINK +.if P_FAMILY_SPINDA == TRUE .align 2 Cry_Spinda:: .incbin "sound/direct_sound_samples/cries/spinda.bin" +.endif @ P_FAMILY_SPINDA +.if P_FAMILY_TRAPINCH == TRUE .align 2 Cry_Trapinch:: .incbin "sound/direct_sound_samples/cries/trapinch.bin" @@ -1705,7 +2514,9 @@ Cry_Vibrava:: .align 2 Cry_Flygon:: .incbin "sound/direct_sound_samples/cries/flygon.bin" +.endif @ P_FAMILY_TRAPINCH +.if P_FAMILY_CACNEA == TRUE .align 2 Cry_Cacnea:: .incbin "sound/direct_sound_samples/cries/cacnea.bin" @@ -1713,7 +2524,9 @@ Cry_Cacnea:: .align 2 Cry_Cacturne:: .incbin "sound/direct_sound_samples/cries/cacturne.bin" +.endif @ P_FAMILY_CACNEA +.if P_FAMILY_SWABLU == TRUE .align 2 Cry_Swablu:: .incbin "sound/direct_sound_samples/cries/swablu.bin" @@ -1722,22 +2535,38 @@ Cry_Swablu:: Cry_Altaria:: .incbin "sound/direct_sound_samples/cries/altaria.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_AltariaMega:: + .incbin "sound/direct_sound_samples/cries/altaria_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_SWABLU + +.if P_FAMILY_ZANGOOSE == TRUE .align 2 Cry_Zangoose:: .incbin "sound/direct_sound_samples/cries/zangoose.bin" +.endif @ P_FAMILY_ZANGOOSE +.if P_FAMILY_SEVIPER == TRUE .align 2 Cry_Seviper:: .incbin "sound/direct_sound_samples/cries/seviper.bin" +.endif @ P_FAMILY_SEVIPER +.if P_FAMILY_LUNATONE == TRUE .align 2 Cry_Lunatone:: .incbin "sound/direct_sound_samples/cries/lunatone.bin" +.endif @ P_FAMILY_LUNATONE +.if P_FAMILY_SOLROCK == TRUE .align 2 Cry_Solrock:: .incbin "sound/direct_sound_samples/cries/solrock.bin" +.endif @ P_FAMILY_SOLROCK +.if P_FAMILY_BARBOACH == TRUE .align 2 Cry_Barboach:: .incbin "sound/direct_sound_samples/cries/barboach.bin" @@ -1745,7 +2574,9 @@ Cry_Barboach:: .align 2 Cry_Whiscash:: .incbin "sound/direct_sound_samples/cries/whiscash.bin" +.endif @ P_FAMILY_BARBOACH +.if P_FAMILY_CORPHISH == TRUE .align 2 Cry_Corphish:: .incbin "sound/direct_sound_samples/cries/corphish.bin" @@ -1753,7 +2584,9 @@ Cry_Corphish:: .align 2 Cry_Crawdaunt:: .incbin "sound/direct_sound_samples/cries/crawdaunt.bin" +.endif @ P_FAMILY_CORPHISH +.if P_FAMILY_BALTOY == TRUE .align 2 Cry_Baltoy:: .incbin "sound/direct_sound_samples/cries/baltoy.bin" @@ -1761,7 +2594,9 @@ Cry_Baltoy:: .align 2 Cry_Claydol:: .incbin "sound/direct_sound_samples/cries/claydol.bin" +.endif @ P_FAMILY_BALTOY +.if P_FAMILY_LILEEP == TRUE .align 2 Cry_Lileep:: .incbin "sound/direct_sound_samples/cries/lileep.bin" @@ -1769,7 +2604,9 @@ Cry_Lileep:: .align 2 Cry_Cradily:: .incbin "sound/direct_sound_samples/cries/cradily.bin" +.endif @ P_FAMILY_LILEEP +.if P_FAMILY_ANORITH == TRUE .align 2 Cry_Anorith:: .incbin "sound/direct_sound_samples/cries/anorith.bin" @@ -1777,7 +2614,9 @@ Cry_Anorith:: .align 2 Cry_Armaldo:: .incbin "sound/direct_sound_samples/cries/armaldo.bin" +.endif @ P_FAMILY_ANORITH +.if P_FAMILY_FEEBAS == TRUE .align 2 Cry_Feebas:: .incbin "sound/direct_sound_samples/cries/feebas.bin" @@ -1785,15 +2624,21 @@ Cry_Feebas:: .align 2 Cry_Milotic:: .incbin "sound/direct_sound_samples/cries/milotic.bin" +.endif @ P_FAMILY_FEEBAS +.if P_FAMILY_CASTFORM == TRUE .align 2 Cry_Castform:: .incbin "sound/direct_sound_samples/cries/castform.bin" +.endif @ P_FAMILY_CASTFORM +.if P_FAMILY_KECLEON == TRUE .align 2 Cry_Kecleon:: .incbin "sound/direct_sound_samples/cries/kecleon.bin" +.endif @ P_FAMILY_KECLEON +.if P_FAMILY_SHUPPET == TRUE .align 2 Cry_Shuppet:: .incbin "sound/direct_sound_samples/cries/shuppet.bin" @@ -1802,6 +2647,14 @@ Cry_Shuppet:: Cry_Banette:: .incbin "sound/direct_sound_samples/cries/banette.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_BanetteMega:: + .incbin "sound/direct_sound_samples/cries/banette_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_SHUPPET + +.if P_FAMILY_DUSKULL == TRUE .align 2 Cry_Duskull:: .incbin "sound/direct_sound_samples/cries/duskull.bin" @@ -1810,22 +2663,44 @@ Cry_Duskull:: Cry_Dusclops:: .incbin "sound/direct_sound_samples/cries/dusclops.bin" +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Dusknoir:: + .incbin "sound/direct_sound_samples/cries/dusknoir.bin" +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_DUSKULL + +.if P_FAMILY_TROPIUS == TRUE .align 2 Cry_Tropius:: .incbin "sound/direct_sound_samples/cries/tropius.bin" +.endif @ P_FAMILY_TROPIUS + +.if P_FAMILY_CHIMECHO == TRUE +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Chingling:: + .incbin "sound/direct_sound_samples/cries/chingling.bin" +.endif @ P_GEN_4_CROSS_EVOS .align 2 Cry_Chimecho:: .incbin "sound/direct_sound_samples/cries/chimecho.bin" +.endif @ P_FAMILY_CHIMECHO +.if P_FAMILY_ABSOL == TRUE .align 2 Cry_Absol:: .incbin "sound/direct_sound_samples/cries/absol.bin" +.if P_MEGA_EVOLUTIONS == TRUE .align 2 -Cry_Wynaut:: - .incbin "sound/direct_sound_samples/cries/wynaut.bin" +Cry_AbsolMega:: + .incbin "sound/direct_sound_samples/cries/absol_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_ABSOL +.if P_FAMILY_SNORUNT == TRUE .align 2 Cry_Snorunt:: .incbin "sound/direct_sound_samples/cries/snorunt.bin" @@ -1834,6 +2709,19 @@ Cry_Snorunt:: Cry_Glalie:: .incbin "sound/direct_sound_samples/cries/glalie.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_GlalieMega:: + .incbin "sound/direct_sound_samples/cries/glalie_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.if P_GEN_4_CROSS_EVOS == TRUE + .align 2 +Cry_Froslass:: + .incbin "sound/direct_sound_samples/cries/froslass.bin" +.endif @ P_GEN_4_CROSS_EVOS +.endif @ P_FAMILY_SNORUNT + +.if P_FAMILY_SPHEAL == TRUE .align 2 Cry_Spheal:: .incbin "sound/direct_sound_samples/cries/spheal.bin" @@ -1845,7 +2733,9 @@ Cry_Sealeo:: .align 2 Cry_Walrein:: .incbin "sound/direct_sound_samples/cries/walrein.bin" +.endif @ P_FAMILY_SPHEAL +.if P_FAMILY_CLAMPERL == TRUE .align 2 Cry_Clamperl:: .incbin "sound/direct_sound_samples/cries/clamperl.bin" @@ -1857,15 +2747,21 @@ Cry_Huntail:: .align 2 Cry_Gorebyss:: .incbin "sound/direct_sound_samples/cries/gorebyss.bin" +.endif @ P_FAMILY_CLAMPERL +.if P_FAMILY_RELICANTH == TRUE .align 2 Cry_Relicanth:: .incbin "sound/direct_sound_samples/cries/relicanth.bin" +.endif @ P_FAMILY_RELICANTH +.if P_FAMILY_LUVDISC == TRUE .align 2 Cry_Luvdisc:: .incbin "sound/direct_sound_samples/cries/luvdisc.bin" +.endif @ P_FAMILY_LUVDISC +.if P_FAMILY_BAGON == TRUE .align 2 Cry_Bagon:: .incbin "sound/direct_sound_samples/cries/bagon.bin" @@ -1878,6 +2774,14 @@ Cry_Shelgon:: Cry_Salamence:: .incbin "sound/direct_sound_samples/cries/salamence.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_SalamenceMega:: + .incbin "sound/direct_sound_samples/cries/salamence_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_BAGON + +.if P_FAMILY_BELDUM == TRUE .align 2 Cry_Beldum:: .incbin "sound/direct_sound_samples/cries/beldum.bin" @@ -1890,47 +2794,106 @@ Cry_Metang:: Cry_Metagross:: .incbin "sound/direct_sound_samples/cries/metagross.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_MetagrossMega:: + .incbin "sound/direct_sound_samples/cries/metagross_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_BELDUM + +.if P_FAMILY_REGIROCK == TRUE .align 2 Cry_Regirock:: .incbin "sound/direct_sound_samples/cries/regirock.bin" +.endif @ P_FAMILY_REGIROCK +.if P_FAMILY_REGICE == TRUE .align 2 Cry_Regice:: .incbin "sound/direct_sound_samples/cries/regice.bin" +.endif @ P_FAMILY_REGICE +.if P_FAMILY_REGISTEEL == TRUE .align 2 Cry_Registeel:: .incbin "sound/direct_sound_samples/cries/registeel.bin" +.endif @ P_FAMILY_REGISTEEL +.if P_FAMILY_LATIAS == TRUE .align 2 Cry_Latias:: .incbin "sound/direct_sound_samples/cries/latias.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_LatiasMega:: + .incbin "sound/direct_sound_samples/cries/latias_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_LATIAS + +.if P_FAMILY_LATIOS == TRUE .align 2 Cry_Latios:: .incbin "sound/direct_sound_samples/cries/latios.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_LatiosMega:: + .incbin "sound/direct_sound_samples/cries/latios_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_LATIOS + +.if P_FAMILY_KYOGRE == TRUE .align 2 Cry_Kyogre:: .incbin "sound/direct_sound_samples/cries/kyogre.bin" +.if P_PRIMAL_REVERSIONS == TRUE + .align 2 +Cry_KyogrePrimal:: + .incbin "sound/direct_sound_samples/cries/kyogre_primal.bin" + +.endif @ P_PRIMAL_REVERSIONS +.endif @ P_FAMILY_KYOGRE + +.if P_FAMILY_GROUDON == TRUE .align 2 Cry_Groudon:: .incbin "sound/direct_sound_samples/cries/groudon.bin" +.if P_PRIMAL_REVERSIONS == TRUE + .align 2 +Cry_GroudonPrimal:: + .incbin "sound/direct_sound_samples/cries/groudon_primal.bin" + +.endif @ P_PRIMAL_REVERSIONS +.endif @ P_FAMILY_GROUDON + +.if P_FAMILY_RAYQUAZA == TRUE .align 2 Cry_Rayquaza:: .incbin "sound/direct_sound_samples/cries/rayquaza.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_RayquazaMega:: + .incbin "sound/direct_sound_samples/cries/rayquaza_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_RAYQUAZA + +.if P_FAMILY_JIRACHI == TRUE .align 2 Cry_Jirachi:: .incbin "sound/direct_sound_samples/cries/jirachi.bin" +.endif @ P_FAMILY_JIRACHI +.if P_FAMILY_DEOXYS == TRUE .align 2 Cry_Deoxys:: .incbin "sound/direct_sound_samples/cries/deoxys.bin" +.endif @ P_FAMILY_DEOXYS -.if P_GEN_4_POKEMON == TRUE +.if P_FAMILY_TURTWIG == TRUE .align 2 Cry_Turtwig:: .incbin "sound/direct_sound_samples/cries/turtwig.bin" @@ -1942,7 +2905,9 @@ Cry_Grotle:: .align 2 Cry_Torterra:: .incbin "sound/direct_sound_samples/cries/torterra.bin" +.endif @ P_FAMILY_TURTWIG +.if P_FAMILY_CHIMCHAR == TRUE .align 2 Cry_Chimchar:: .incbin "sound/direct_sound_samples/cries/chimchar.bin" @@ -1954,7 +2919,9 @@ Cry_Monferno:: .align 2 Cry_Infernape:: .incbin "sound/direct_sound_samples/cries/infernape.bin" +.endif @ P_FAMILY_CHIMCHAR +.if P_FAMILY_PIPLUP == TRUE .align 2 Cry_Piplup:: .incbin "sound/direct_sound_samples/cries/piplup.bin" @@ -1966,7 +2933,9 @@ Cry_Prinplup:: .align 2 Cry_Empoleon:: .incbin "sound/direct_sound_samples/cries/empoleon.bin" +.endif @ P_FAMILY_PIPLUP +.if P_FAMILY_STARLY == TRUE .align 2 Cry_Starly:: .incbin "sound/direct_sound_samples/cries/starly.bin" @@ -1978,7 +2947,9 @@ Cry_Staravia:: .align 2 Cry_Staraptor:: .incbin "sound/direct_sound_samples/cries/staraptor.bin" +.endif @ P_FAMILY_STARLY +.if P_FAMILY_BIDOOF == TRUE .align 2 Cry_Bidoof:: .incbin "sound/direct_sound_samples/cries/bidoof.bin" @@ -1986,7 +2957,9 @@ Cry_Bidoof:: .align 2 Cry_Bibarel:: .incbin "sound/direct_sound_samples/cries/bibarel.bin" +.endif @ P_FAMILY_BIDOOF +.if P_FAMILY_KRICKETOT == TRUE .align 2 Cry_Kricketot:: .incbin "sound/direct_sound_samples/cries/kricketot.bin" @@ -1994,7 +2967,9 @@ Cry_Kricketot:: .align 2 Cry_Kricketune:: .incbin "sound/direct_sound_samples/cries/kricketune.bin" +.endif @ P_FAMILY_KRICKETOT +.if P_FAMILY_SHINX == TRUE .align 2 Cry_Shinx:: .incbin "sound/direct_sound_samples/cries/shinx.bin" @@ -2006,15 +2981,9 @@ Cry_Luxio:: .align 2 Cry_Luxray:: .incbin "sound/direct_sound_samples/cries/luxray.bin" +.endif @ P_FAMILY_SHINX - .align 2 -Cry_Budew:: - .incbin "sound/direct_sound_samples/cries/budew.bin" - - .align 2 -Cry_Roserade:: - .incbin "sound/direct_sound_samples/cries/roserade.bin" - +.if P_FAMILY_CRANIDOS == TRUE .align 2 Cry_Cranidos:: .incbin "sound/direct_sound_samples/cries/cranidos.bin" @@ -2022,7 +2991,9 @@ Cry_Cranidos:: .align 2 Cry_Rampardos:: .incbin "sound/direct_sound_samples/cries/rampardos.bin" +.endif @ P_FAMILY_CRANIDOS +.if P_FAMILY_SHIELDON == TRUE .align 2 Cry_Shieldon:: .incbin "sound/direct_sound_samples/cries/shieldon.bin" @@ -2030,7 +3001,9 @@ Cry_Shieldon:: .align 2 Cry_Bastiodon:: .incbin "sound/direct_sound_samples/cries/bastiodon.bin" +.endif @ P_FAMILY_SHIELDON +.if P_FAMILY_BURMY == TRUE .align 2 Cry_Burmy:: .incbin "sound/direct_sound_samples/cries/burmy.bin" @@ -2042,7 +3015,9 @@ Cry_Wormadam:: .align 2 Cry_Mothim:: .incbin "sound/direct_sound_samples/cries/mothim.bin" +.endif @ P_FAMILY_BURMY +.if P_FAMILY_COMBEE == TRUE .align 2 Cry_Combee:: .incbin "sound/direct_sound_samples/cries/combee.bin" @@ -2050,11 +3025,15 @@ Cry_Combee:: .align 2 Cry_Vespiquen:: .incbin "sound/direct_sound_samples/cries/vespiquen.bin" +.endif @ P_FAMILY_COMBEE +.if P_FAMILY_PACHIRISU == TRUE .align 2 Cry_Pachirisu:: .incbin "sound/direct_sound_samples/cries/pachirisu.bin" +.endif @ P_FAMILY_PACHIRISU +.if P_FAMILY_BUIZEL == TRUE .align 2 Cry_Buizel:: .incbin "sound/direct_sound_samples/cries/buizel.bin" @@ -2062,7 +3041,9 @@ Cry_Buizel:: .align 2 Cry_Floatzel:: .incbin "sound/direct_sound_samples/cries/floatzel.bin" +.endif @ P_FAMILY_BUIZEL +.if P_FAMILY_CHERUBI == TRUE .align 2 Cry_Cherubi:: .incbin "sound/direct_sound_samples/cries/cherubi.bin" @@ -2070,7 +3051,9 @@ Cry_Cherubi:: .align 2 Cry_Cherrim:: .incbin "sound/direct_sound_samples/cries/cherrim.bin" +.endif @ P_FAMILY_CHERUBI +.if P_FAMILY_SHELLOS == TRUE .align 2 Cry_Shellos:: .incbin "sound/direct_sound_samples/cries/shellos.bin" @@ -2078,11 +3061,9 @@ Cry_Shellos:: .align 2 Cry_Gastrodon:: .incbin "sound/direct_sound_samples/cries/gastrodon.bin" +.endif @ P_FAMILY_SHELLOS - .align 2 -Cry_Ambipom:: - .incbin "sound/direct_sound_samples/cries/ambipom.bin" - +.if P_FAMILY_DRIFLOON == TRUE .align 2 Cry_Drifloon:: .incbin "sound/direct_sound_samples/cries/drifloon.bin" @@ -2090,7 +3071,9 @@ Cry_Drifloon:: .align 2 Cry_Drifblim:: .incbin "sound/direct_sound_samples/cries/drifblim.bin" +.endif @ P_FAMILY_DRIFLOON +.if P_FAMILY_BUNEARY == TRUE .align 2 Cry_Buneary:: .incbin "sound/direct_sound_samples/cries/buneary.bin" @@ -2099,14 +3082,14 @@ Cry_Buneary:: Cry_Lopunny:: .incbin "sound/direct_sound_samples/cries/lopunny.bin" +.if P_MEGA_EVOLUTIONS == TRUE .align 2 -Cry_Mismagius:: - .incbin "sound/direct_sound_samples/cries/mismagius.bin" - - .align 2 -Cry_Honchkrow:: - .incbin "sound/direct_sound_samples/cries/honchkrow.bin" +Cry_LopunnyMega:: + .incbin "sound/direct_sound_samples/cries/lopunny_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_BUNEARY +.if P_FAMILY_GLAMEOW == TRUE .align 2 Cry_Glameow:: .incbin "sound/direct_sound_samples/cries/glameow.bin" @@ -2114,11 +3097,9 @@ Cry_Glameow:: .align 2 Cry_Purugly:: .incbin "sound/direct_sound_samples/cries/purugly.bin" +.endif @ P_FAMILY_GLAMEOW - .align 2 -Cry_Chingling:: - .incbin "sound/direct_sound_samples/cries/chingling.bin" - +.if P_FAMILY_STUNKY == TRUE .align 2 Cry_Stunky:: .incbin "sound/direct_sound_samples/cries/stunky.bin" @@ -2126,7 +3107,9 @@ Cry_Stunky:: .align 2 Cry_Skuntank:: .incbin "sound/direct_sound_samples/cries/skuntank.bin" +.endif @ P_FAMILY_STUNKY +.if P_FAMILY_BRONZOR == TRUE .align 2 Cry_Bronzor:: .incbin "sound/direct_sound_samples/cries/bronzor.bin" @@ -2134,27 +3117,21 @@ Cry_Bronzor:: .align 2 Cry_Bronzong:: .incbin "sound/direct_sound_samples/cries/bronzong.bin" +.endif @ P_FAMILY_BRONZOR - .align 2 -Cry_Bonsly:: - .incbin "sound/direct_sound_samples/cries/bonsly.bin" - - .align 2 -Cry_MimeJr:: - .incbin "sound/direct_sound_samples/cries/mime_jr.bin" - - .align 2 -Cry_Happiny:: - .incbin "sound/direct_sound_samples/cries/happiny.bin" - +.if P_FAMILY_CHATOT == TRUE .align 2 Cry_Chatot:: .incbin "sound/direct_sound_samples/cries/chatot.bin" +.endif @ P_FAMILY_CHATOT +.if P_FAMILY_SPIRITOMB == TRUE .align 2 Cry_Spiritomb:: .incbin "sound/direct_sound_samples/cries/spiritomb.bin" +.endif @ P_FAMILY_SPIRITOMB +.if P_FAMILY_GIBLE == TRUE .align 2 Cry_Gible:: .incbin "sound/direct_sound_samples/cries/gible.bin" @@ -2167,10 +3144,14 @@ Cry_Gabite:: Cry_Garchomp:: .incbin "sound/direct_sound_samples/cries/garchomp.bin" +.if P_MEGA_EVOLUTIONS == TRUE .align 2 -Cry_Munchlax:: - .incbin "sound/direct_sound_samples/cries/munchlax.bin" +Cry_GarchompMega:: + .incbin "sound/direct_sound_samples/cries/garchomp_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_GIBLE +.if P_FAMILY_RIOLU == TRUE .align 2 Cry_Riolu:: .incbin "sound/direct_sound_samples/cries/riolu.bin" @@ -2179,6 +3160,14 @@ Cry_Riolu:: Cry_Lucario:: .incbin "sound/direct_sound_samples/cries/lucario.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_LucarioMega:: + .incbin "sound/direct_sound_samples/cries/lucario_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_RIOLU + +.if P_FAMILY_HIPPOPOTAS == TRUE .align 2 Cry_Hippopotas:: .incbin "sound/direct_sound_samples/cries/hippopotas.bin" @@ -2186,7 +3175,9 @@ Cry_Hippopotas:: .align 2 Cry_Hippowdon:: .incbin "sound/direct_sound_samples/cries/hippowdon.bin" +.endif @ P_FAMILY_HIPPOPOTAS +.if P_FAMILY_SKORUPI == TRUE .align 2 Cry_Skorupi:: .incbin "sound/direct_sound_samples/cries/skorupi.bin" @@ -2194,7 +3185,9 @@ Cry_Skorupi:: .align 2 Cry_Drapion:: .incbin "sound/direct_sound_samples/cries/drapion.bin" +.endif @ P_FAMILY_SKORUPI +.if P_FAMILY_CROAGUNK == TRUE .align 2 Cry_Croagunk:: .incbin "sound/direct_sound_samples/cries/croagunk.bin" @@ -2202,11 +3195,15 @@ Cry_Croagunk:: .align 2 Cry_Toxicroak:: .incbin "sound/direct_sound_samples/cries/toxicroak.bin" +.endif @ P_FAMILY_CROAGUNK +.if P_FAMILY_CARNIVINE == TRUE .align 2 Cry_Carnivine:: .incbin "sound/direct_sound_samples/cries/carnivine.bin" +.endif @ P_FAMILY_CARNIVINE +.if P_FAMILY_FINNEON == TRUE .align 2 Cry_Finneon:: .incbin "sound/direct_sound_samples/cries/finneon.bin" @@ -2214,11 +3211,9 @@ Cry_Finneon:: .align 2 Cry_Lumineon:: .incbin "sound/direct_sound_samples/cries/lumineon.bin" +.endif @ P_FAMILY_FINNEON - .align 2 -Cry_Mantyke:: - .incbin "sound/direct_sound_samples/cries/mantyke.bin" - +.if P_FAMILY_SNOVER == TRUE .align 2 Cry_Snover:: .incbin "sound/direct_sound_samples/cries/snover.bin" @@ -2227,118 +3222,74 @@ Cry_Snover:: Cry_Abomasnow:: .incbin "sound/direct_sound_samples/cries/abomasnow.bin" +.if P_MEGA_EVOLUTIONS == TRUE .align 2 -Cry_Weavile:: - .incbin "sound/direct_sound_samples/cries/weavile.bin" - - .align 2 -Cry_Magnezone:: - .incbin "sound/direct_sound_samples/cries/magnezone.bin" - - .align 2 -Cry_Lickilicky:: - .incbin "sound/direct_sound_samples/cries/lickilicky.bin" - - .align 2 -Cry_Rhyperior:: - .incbin "sound/direct_sound_samples/cries/rhyperior.bin" - - .align 2 -Cry_Tangrowth:: - .incbin "sound/direct_sound_samples/cries/tangrowth.bin" - - .align 2 -Cry_Electivire:: - .incbin "sound/direct_sound_samples/cries/electivire.bin" - - .align 2 -Cry_Magmortar:: - .incbin "sound/direct_sound_samples/cries/magmortar.bin" - - .align 2 -Cry_Togekiss:: - .incbin "sound/direct_sound_samples/cries/togekiss.bin" - - .align 2 -Cry_Yanmega:: - .incbin "sound/direct_sound_samples/cries/yanmega.bin" - - .align 2 -Cry_Leafeon:: - .incbin "sound/direct_sound_samples/cries/leafeon.bin" - - .align 2 -Cry_Glaceon:: - .incbin "sound/direct_sound_samples/cries/glaceon.bin" - - .align 2 -Cry_Gliscor:: - .incbin "sound/direct_sound_samples/cries/gliscor.bin" - - .align 2 -Cry_Mamoswine:: - .incbin "sound/direct_sound_samples/cries/mamoswine.bin" - - .align 2 -Cry_PorygonZ:: - .incbin "sound/direct_sound_samples/cries/porygon_z.bin" - - .align 2 -Cry_Gallade:: - .incbin "sound/direct_sound_samples/cries/gallade.bin" - - .align 2 -Cry_Probopass:: - .incbin "sound/direct_sound_samples/cries/probopass.bin" - - .align 2 -Cry_Dusknoir:: - .incbin "sound/direct_sound_samples/cries/dusknoir.bin" - - .align 2 -Cry_Froslass:: - .incbin "sound/direct_sound_samples/cries/froslass.bin" +Cry_AbomasnowMega:: + .incbin "sound/direct_sound_samples/cries/abomasnow_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_SNOVER +.if P_FAMILY_ROTOM == TRUE .align 2 Cry_Rotom:: .incbin "sound/direct_sound_samples/cries/rotom.bin" +.endif @ P_FAMILY_ROTOM +.if P_FAMILY_UXIE == TRUE .align 2 Cry_Uxie:: .incbin "sound/direct_sound_samples/cries/uxie.bin" +.endif @ P_FAMILY_UXIE +.if P_FAMILY_MESPRIT == TRUE .align 2 Cry_Mesprit:: .incbin "sound/direct_sound_samples/cries/mesprit.bin" +.endif @ P_FAMILY_MESPRIT +.if P_FAMILY_AZELF == TRUE .align 2 Cry_Azelf:: .incbin "sound/direct_sound_samples/cries/azelf.bin" +.endif @ P_FAMILY_AZELF +.if P_FAMILY_DIALGA == TRUE .align 2 Cry_Dialga:: .incbin "sound/direct_sound_samples/cries/dialga.bin" +.endif @ P_FAMILY_DIALGA +.if P_FAMILY_PALKIA == TRUE .align 2 Cry_Palkia:: .incbin "sound/direct_sound_samples/cries/palkia.bin" +.endif @ P_FAMILY_PALKIA +.if P_FAMILY_HEATRAN == TRUE .align 2 Cry_Heatran:: .incbin "sound/direct_sound_samples/cries/heatran.bin" +.endif @ P_FAMILY_HEATRAN +.if P_FAMILY_REGIGIGAS == TRUE .align 2 Cry_Regigigas:: .incbin "sound/direct_sound_samples/cries/regigigas.bin" +.endif @ P_FAMILY_REGIGIGAS +.if P_FAMILY_GIRATINA == TRUE .align 2 Cry_Giratina:: .incbin "sound/direct_sound_samples/cries/giratina.bin" +.endif @ P_FAMILY_GIRATINA +.if P_FAMILY_CRESSELIA == TRUE .align 2 Cry_Cresselia:: .incbin "sound/direct_sound_samples/cries/cresselia.bin" +.endif @ P_FAMILY_CRESSELIA +.if P_FAMILY_MANAPHY == TRUE .align 2 Cry_Phione:: .incbin "sound/direct_sound_samples/cries/phione.bin" @@ -2346,25 +3297,37 @@ Cry_Phione:: .align 2 Cry_Manaphy:: .incbin "sound/direct_sound_samples/cries/manaphy.bin" +.endif @ P_FAMILY_MANAPHY +.if P_FAMILY_DARKRAI == TRUE .align 2 Cry_Darkrai:: .incbin "sound/direct_sound_samples/cries/darkrai.bin" +.endif @ P_FAMILY_DARKRAI + +.if P_FAMILY_SHAYMIN == TRUE + .align 2 +Cry_ShayminLand:: + .incbin "sound/direct_sound_samples/cries/shaymin_land.bin" .align 2 -Cry_Shaymin:: - .incbin "sound/direct_sound_samples/cries/shaymin.bin" +Cry_ShayminSky:: + .incbin "sound/direct_sound_samples/cries/shaymin_sky.bin" +.endif @ P_FAMILY_SHAYMIN +.if P_FAMILY_ARCEUS == TRUE .align 2 Cry_Arceus:: .incbin "sound/direct_sound_samples/cries/arceus.bin" -.endif +.endif @ P_FAMILY_ARCEUS -.if P_GEN_5_POKEMON == TRUE +.if P_FAMILY_VICTINI == TRUE .align 2 Cry_Victini:: .incbin "sound/direct_sound_samples/cries/victini.bin" +.endif @ P_FAMILY_VICTINI +.if P_FAMILY_SNIVY == TRUE .align 2 Cry_Snivy:: .incbin "sound/direct_sound_samples/cries/snivy.bin" @@ -2376,7 +3339,9 @@ Cry_Servine:: .align 2 Cry_Serperior:: .incbin "sound/direct_sound_samples/cries/serperior.bin" +.endif @ P_FAMILY_SNIVY +.if P_FAMILY_TEPIG == TRUE .align 2 Cry_Tepig:: .incbin "sound/direct_sound_samples/cries/tepig.bin" @@ -2388,7 +3353,9 @@ Cry_Pignite:: .align 2 Cry_Emboar:: .incbin "sound/direct_sound_samples/cries/emboar.bin" +.endif @ P_FAMILY_TEPIG +.if P_FAMILY_OSHAWOTT == TRUE .align 2 Cry_Oshawott:: .incbin "sound/direct_sound_samples/cries/oshawott.bin" @@ -2400,7 +3367,9 @@ Cry_Dewott:: .align 2 Cry_Samurott:: .incbin "sound/direct_sound_samples/cries/samurott.bin" +.endif @ P_FAMILY_OSHAWOTT +.if P_FAMILY_PATRAT == TRUE .align 2 Cry_Patrat:: .incbin "sound/direct_sound_samples/cries/patrat.bin" @@ -2408,7 +3377,9 @@ Cry_Patrat:: .align 2 Cry_Watchog:: .incbin "sound/direct_sound_samples/cries/watchog.bin" +.endif @ P_FAMILY_PATRAT +.if P_FAMILY_LILLIPUP == TRUE .align 2 Cry_Lillipup:: .incbin "sound/direct_sound_samples/cries/lillipup.bin" @@ -2420,7 +3391,9 @@ Cry_Herdier:: .align 2 Cry_Stoutland:: .incbin "sound/direct_sound_samples/cries/stoutland.bin" +.endif @ P_FAMILY_LILLIPUP +.if P_FAMILY_PURRLOIN == TRUE .align 2 Cry_Purrloin:: .incbin "sound/direct_sound_samples/cries/purrloin.bin" @@ -2428,7 +3401,9 @@ Cry_Purrloin:: .align 2 Cry_Liepard:: .incbin "sound/direct_sound_samples/cries/liepard.bin" +.endif @ P_FAMILY_PURRLOIN +.if P_FAMILY_PANSAGE == TRUE .align 2 Cry_Pansage:: .incbin "sound/direct_sound_samples/cries/pansage.bin" @@ -2436,7 +3411,9 @@ Cry_Pansage:: .align 2 Cry_Simisage:: .incbin "sound/direct_sound_samples/cries/simisage.bin" +.endif @ P_FAMILY_PANSAGE +.if P_FAMILY_PANSEAR == TRUE .align 2 Cry_Pansear:: .incbin "sound/direct_sound_samples/cries/pansear.bin" @@ -2444,7 +3421,9 @@ Cry_Pansear:: .align 2 Cry_Simisear:: .incbin "sound/direct_sound_samples/cries/simisear.bin" +.endif @ P_FAMILY_PANSEAR +.if P_FAMILY_PANPOUR == TRUE .align 2 Cry_Panpour:: .incbin "sound/direct_sound_samples/cries/panpour.bin" @@ -2452,7 +3431,9 @@ Cry_Panpour:: .align 2 Cry_Simipour:: .incbin "sound/direct_sound_samples/cries/simipour.bin" +.endif @ P_FAMILY_PANPOUR +.if P_FAMILY_MUNNA == TRUE .align 2 Cry_Munna:: .incbin "sound/direct_sound_samples/cries/munna.bin" @@ -2460,7 +3441,9 @@ Cry_Munna:: .align 2 Cry_Musharna:: .incbin "sound/direct_sound_samples/cries/musharna.bin" +.endif @ P_FAMILY_MUNNA +.if P_FAMILY_PIDOVE == TRUE .align 2 Cry_Pidove:: .incbin "sound/direct_sound_samples/cries/pidove.bin" @@ -2472,7 +3455,9 @@ Cry_Tranquill:: .align 2 Cry_Unfezant:: .incbin "sound/direct_sound_samples/cries/unfezant.bin" +.endif @ P_FAMILY_PIDOVE +.if P_FAMILY_BLITZLE == TRUE .align 2 Cry_Blitzle:: .incbin "sound/direct_sound_samples/cries/blitzle.bin" @@ -2480,7 +3465,9 @@ Cry_Blitzle:: .align 2 Cry_Zebstrika:: .incbin "sound/direct_sound_samples/cries/zebstrika.bin" +.endif @ P_FAMILY_BLITZLE +.if P_FAMILY_ROGGENROLA == TRUE .align 2 Cry_Roggenrola:: .incbin "sound/direct_sound_samples/cries/roggenrola.bin" @@ -2492,7 +3479,9 @@ Cry_Boldore:: .align 2 Cry_Gigalith:: .incbin "sound/direct_sound_samples/cries/gigalith.bin" +.endif @ P_FAMILY_ROGGENROLA +.if P_FAMILY_WOOBAT == TRUE .align 2 Cry_Woobat:: .incbin "sound/direct_sound_samples/cries/woobat.bin" @@ -2500,7 +3489,9 @@ Cry_Woobat:: .align 2 Cry_Swoobat:: .incbin "sound/direct_sound_samples/cries/swoobat.bin" +.endif @ P_FAMILY_WOOBAT +.if P_FAMILY_DRILBUR == TRUE .align 2 Cry_Drilbur:: .incbin "sound/direct_sound_samples/cries/drilbur.bin" @@ -2508,11 +3499,21 @@ Cry_Drilbur:: .align 2 Cry_Excadrill:: .incbin "sound/direct_sound_samples/cries/excadrill.bin" +.endif @ P_FAMILY_DRILBUR +.if P_FAMILY_AUDINO == TRUE .align 2 Cry_Audino:: .incbin "sound/direct_sound_samples/cries/audino.bin" +.if P_MEGA_EVOLUTIONS == TRUE + .align 2 +Cry_AudinoMega:: + .incbin "sound/direct_sound_samples/cries/audino_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_AUDINO + +.if P_FAMILY_TIMBURR == TRUE .align 2 Cry_Timburr:: .incbin "sound/direct_sound_samples/cries/timburr.bin" @@ -2524,7 +3525,9 @@ Cry_Gurdurr:: .align 2 Cry_Conkeldurr:: .incbin "sound/direct_sound_samples/cries/conkeldurr.bin" +.endif @ P_FAMILY_TIMBURR +.if P_FAMILY_TYMPOLE == TRUE .align 2 Cry_Tympole:: .incbin "sound/direct_sound_samples/cries/tympole.bin" @@ -2536,15 +3539,21 @@ Cry_Palpitoad:: .align 2 Cry_Seismitoad:: .incbin "sound/direct_sound_samples/cries/seismitoad.bin" +.endif @ P_FAMILY_TYMPOLE +.if P_FAMILY_THROH == TRUE .align 2 Cry_Throh:: .incbin "sound/direct_sound_samples/cries/throh.bin" +.endif @ P_FAMILY_THROH +.if P_FAMILY_SAWK == TRUE .align 2 Cry_Sawk:: .incbin "sound/direct_sound_samples/cries/sawk.bin" +.endif @ P_FAMILY_SAWK +.if P_FAMILY_SEWADDLE == TRUE .align 2 Cry_Sewaddle:: .incbin "sound/direct_sound_samples/cries/sewaddle.bin" @@ -2556,7 +3565,9 @@ Cry_Swadloon:: .align 2 Cry_Leavanny:: .incbin "sound/direct_sound_samples/cries/leavanny.bin" +.endif @ P_FAMILY_SEWADDLE +.if P_FAMILY_VENIPEDE == TRUE .align 2 Cry_Venipede:: .incbin "sound/direct_sound_samples/cries/venipede.bin" @@ -2568,7 +3579,9 @@ Cry_Whirlipede:: .align 2 Cry_Scolipede:: .incbin "sound/direct_sound_samples/cries/scolipede.bin" +.endif @ P_FAMILY_VENIPEDE +.if P_FAMILY_COTTONEE == TRUE .align 2 Cry_Cottonee:: .incbin "sound/direct_sound_samples/cries/cottonee.bin" @@ -2576,7 +3589,9 @@ Cry_Cottonee:: .align 2 Cry_Whimsicott:: .incbin "sound/direct_sound_samples/cries/whimsicott.bin" +.endif @ P_FAMILY_COTTONEE +.if P_FAMILY_PETILIL == TRUE .align 2 Cry_Petilil:: .incbin "sound/direct_sound_samples/cries/petilil.bin" @@ -2584,11 +3599,22 @@ Cry_Petilil:: .align 2 Cry_Lilligant:: .incbin "sound/direct_sound_samples/cries/lilligant.bin" +.endif @ P_FAMILY_PETILIL +.if P_FAMILY_BASCULIN == TRUE .align 2 Cry_Basculin:: .incbin "sound/direct_sound_samples/cries/basculin.bin" +.if P_HISUIAN_FORMS == TRUE + .align 2 +Cry_Basculegion:: + .incbin "sound/direct_sound_samples/cries/basculegion.bin" + +.endif @ P_HISUIAN_FORMS +.endif @ P_FAMILY_BASCULIN + +.if P_FAMILY_SANDILE == TRUE .align 2 Cry_Sandile:: .incbin "sound/direct_sound_samples/cries/sandile.bin" @@ -2600,7 +3626,9 @@ Cry_Krokorok:: .align 2 Cry_Krookodile:: .incbin "sound/direct_sound_samples/cries/krookodile.bin" +.endif @ P_FAMILY_SANDILE +.if P_FAMILY_DARUMAKA == TRUE .align 2 Cry_Darumaka:: .incbin "sound/direct_sound_samples/cries/darumaka.bin" @@ -2608,11 +3636,15 @@ Cry_Darumaka:: .align 2 Cry_Darmanitan:: .incbin "sound/direct_sound_samples/cries/darmanitan.bin" +.endif @ P_FAMILY_DARUMAKA +.if P_FAMILY_MARACTUS == TRUE .align 2 Cry_Maractus:: .incbin "sound/direct_sound_samples/cries/maractus.bin" +.endif @ P_FAMILY_MARACTUS +.if P_FAMILY_DWEBBLE == TRUE .align 2 Cry_Dwebble:: .incbin "sound/direct_sound_samples/cries/dwebble.bin" @@ -2620,7 +3652,9 @@ Cry_Dwebble:: .align 2 Cry_Crustle:: .incbin "sound/direct_sound_samples/cries/crustle.bin" +.endif @ P_FAMILY_DWEBBLE +.if P_FAMILY_SCRAGGY == TRUE .align 2 Cry_Scraggy:: .incbin "sound/direct_sound_samples/cries/scraggy.bin" @@ -2628,11 +3662,15 @@ Cry_Scraggy:: .align 2 Cry_Scrafty:: .incbin "sound/direct_sound_samples/cries/scrafty.bin" +.endif @ P_FAMILY_SCRAGGY +.if P_FAMILY_SIGILYPH == TRUE .align 2 Cry_Sigilyph:: .incbin "sound/direct_sound_samples/cries/sigilyph.bin" +.endif @ P_FAMILY_SIGILYPH +.if P_FAMILY_YAMASK == TRUE .align 2 Cry_Yamask:: .incbin "sound/direct_sound_samples/cries/yamask.bin" @@ -2641,6 +3679,15 @@ Cry_Yamask:: Cry_Cofagrigus:: .incbin "sound/direct_sound_samples/cries/cofagrigus.bin" +.if P_GALARIAN_FORMS == TRUE + .align 2 +Cry_Runerigus:: + .incbin "sound/direct_sound_samples/cries/runerigus.bin" + +.endif @ P_GALARIAN_FORMS +.endif @ P_FAMILY_YAMASK + +.if P_FAMILY_TIRTOUGA == TRUE .align 2 Cry_Tirtouga:: .incbin "sound/direct_sound_samples/cries/tirtouga.bin" @@ -2648,7 +3695,9 @@ Cry_Tirtouga:: .align 2 Cry_Carracosta:: .incbin "sound/direct_sound_samples/cries/carracosta.bin" +.endif @ P_FAMILY_TIRTOUGA +.if P_FAMILY_ARCHEN == TRUE .align 2 Cry_Archen:: .incbin "sound/direct_sound_samples/cries/archen.bin" @@ -2656,7 +3705,9 @@ Cry_Archen:: .align 2 Cry_Archeops:: .incbin "sound/direct_sound_samples/cries/archeops.bin" +.endif @ P_FAMILY_ARCHEN +.if P_FAMILY_TRUBBISH == TRUE .align 2 Cry_Trubbish:: .incbin "sound/direct_sound_samples/cries/trubbish.bin" @@ -2664,7 +3715,9 @@ Cry_Trubbish:: .align 2 Cry_Garbodor:: .incbin "sound/direct_sound_samples/cries/garbodor.bin" +.endif @ P_FAMILY_TRUBBISH +.if P_FAMILY_ZORUA == TRUE .align 2 Cry_Zorua:: .incbin "sound/direct_sound_samples/cries/zorua.bin" @@ -2672,7 +3725,9 @@ Cry_Zorua:: .align 2 Cry_Zoroark:: .incbin "sound/direct_sound_samples/cries/zoroark.bin" +.endif @ P_FAMILY_ZORUA +.if P_FAMILY_MINCCINO == TRUE .align 2 Cry_Minccino:: .incbin "sound/direct_sound_samples/cries/minccino.bin" @@ -2680,7 +3735,9 @@ Cry_Minccino:: .align 2 Cry_Cinccino:: .incbin "sound/direct_sound_samples/cries/cinccino.bin" +.endif @ P_FAMILY_MINCCINO +.if P_FAMILY_GOTHITA == TRUE .align 2 Cry_Gothita:: .incbin "sound/direct_sound_samples/cries/gothita.bin" @@ -2692,7 +3749,9 @@ Cry_Gothorita:: .align 2 Cry_Gothitelle:: .incbin "sound/direct_sound_samples/cries/gothitelle.bin" +.endif @ P_FAMILY_GOTHITA +.if P_FAMILY_SOLOSIS == TRUE .align 2 Cry_Solosis:: .incbin "sound/direct_sound_samples/cries/solosis.bin" @@ -2704,7 +3763,9 @@ Cry_Duosion:: .align 2 Cry_Reuniclus:: .incbin "sound/direct_sound_samples/cries/reuniclus.bin" +.endif @ P_FAMILY_SOLOSIS +.if P_FAMILY_DUCKLETT == TRUE .align 2 Cry_Ducklett:: .incbin "sound/direct_sound_samples/cries/ducklett.bin" @@ -2712,7 +3773,9 @@ Cry_Ducklett:: .align 2 Cry_Swanna:: .incbin "sound/direct_sound_samples/cries/swanna.bin" +.endif @ P_FAMILY_DUCKLETT +.if P_FAMILY_VANILLITE == TRUE .align 2 Cry_Vanillite:: .incbin "sound/direct_sound_samples/cries/vanillite.bin" @@ -2724,7 +3787,9 @@ Cry_Vanillish:: .align 2 Cry_Vanilluxe:: .incbin "sound/direct_sound_samples/cries/vanilluxe.bin" +.endif @ P_FAMILY_VANILLITE +.if P_FAMILY_DEERLING == TRUE .align 2 Cry_Deerling:: .incbin "sound/direct_sound_samples/cries/deerling.bin" @@ -2732,11 +3797,15 @@ Cry_Deerling:: .align 2 Cry_Sawsbuck:: .incbin "sound/direct_sound_samples/cries/sawsbuck.bin" +.endif @ P_FAMILY_DEERLING +.if P_FAMILY_EMOLGA == TRUE .align 2 Cry_Emolga:: .incbin "sound/direct_sound_samples/cries/emolga.bin" +.endif @ P_FAMILY_EMOLGA +.if P_FAMILY_KARRABLAST == TRUE .align 2 Cry_Karrablast:: .incbin "sound/direct_sound_samples/cries/karrablast.bin" @@ -2744,7 +3813,9 @@ Cry_Karrablast:: .align 2 Cry_Escavalier:: .incbin "sound/direct_sound_samples/cries/escavalier.bin" +.endif @ P_FAMILY_KARRABLAST +.if P_FAMILY_FOONGUS == TRUE .align 2 Cry_Foongus:: .incbin "sound/direct_sound_samples/cries/foongus.bin" @@ -2752,7 +3823,9 @@ Cry_Foongus:: .align 2 Cry_Amoonguss:: .incbin "sound/direct_sound_samples/cries/amoonguss.bin" +.endif @ P_FAMILY_FOONGUS +.if P_FAMILY_FRILLISH == TRUE .align 2 Cry_Frillish:: .incbin "sound/direct_sound_samples/cries/frillish.bin" @@ -2760,11 +3833,15 @@ Cry_Frillish:: .align 2 Cry_Jellicent:: .incbin "sound/direct_sound_samples/cries/jellicent.bin" +.endif @ P_FAMILY_FRILLISH +.if P_FAMILY_ALOMOMOLA == TRUE .align 2 Cry_Alomomola:: .incbin "sound/direct_sound_samples/cries/alomomola.bin" +.endif @ P_FAMILY_ALOMOMOLA +.if P_FAMILY_JOLTIK == TRUE .align 2 Cry_Joltik:: .incbin "sound/direct_sound_samples/cries/joltik.bin" @@ -2772,7 +3849,9 @@ Cry_Joltik:: .align 2 Cry_Galvantula:: .incbin "sound/direct_sound_samples/cries/galvantula.bin" +.endif @ P_FAMILY_JOLTIK +.if P_FAMILY_FERROSEED == TRUE .align 2 Cry_Ferroseed:: .incbin "sound/direct_sound_samples/cries/ferroseed.bin" @@ -2780,7 +3859,9 @@ Cry_Ferroseed:: .align 2 Cry_Ferrothorn:: .incbin "sound/direct_sound_samples/cries/ferrothorn.bin" +.endif @ P_FAMILY_FERROSEED +.if P_FAMILY_KLINK == TRUE .align 2 Cry_Klink:: .incbin "sound/direct_sound_samples/cries/klink.bin" @@ -2792,7 +3873,9 @@ Cry_Klang:: .align 2 Cry_Klinklang:: .incbin "sound/direct_sound_samples/cries/klinklang.bin" +.endif @ P_FAMILY_KLINK +.if P_FAMILY_TYNAMO == TRUE .align 2 Cry_Tynamo:: .incbin "sound/direct_sound_samples/cries/tynamo.bin" @@ -2804,7 +3887,9 @@ Cry_Eelektrik:: .align 2 Cry_Eelektross:: .incbin "sound/direct_sound_samples/cries/eelektross.bin" +.endif @ P_FAMILY_TYNAMO +.if P_FAMILY_ELGYEM == TRUE .align 2 Cry_Elgyem:: .incbin "sound/direct_sound_samples/cries/elgyem.bin" @@ -2812,7 +3897,9 @@ Cry_Elgyem:: .align 2 Cry_Beheeyem:: .incbin "sound/direct_sound_samples/cries/beheeyem.bin" +.endif @ P_FAMILY_ELGYEM +.if P_FAMILY_LITWICK == TRUE .align 2 Cry_Litwick:: .incbin "sound/direct_sound_samples/cries/litwick.bin" @@ -2824,7 +3911,9 @@ Cry_Lampent:: .align 2 Cry_Chandelure:: .incbin "sound/direct_sound_samples/cries/chandelure.bin" +.endif @ P_FAMILY_LITWICK +.if P_FAMILY_AXEW == TRUE .align 2 Cry_Axew:: .incbin "sound/direct_sound_samples/cries/axew.bin" @@ -2836,7 +3925,9 @@ Cry_Fraxure:: .align 2 Cry_Haxorus:: .incbin "sound/direct_sound_samples/cries/haxorus.bin" +.endif @ P_FAMILY_AXEW +.if P_FAMILY_CUBCHOO == TRUE .align 2 Cry_Cubchoo:: .incbin "sound/direct_sound_samples/cries/cubchoo.bin" @@ -2844,11 +3935,15 @@ Cry_Cubchoo:: .align 2 Cry_Beartic:: .incbin "sound/direct_sound_samples/cries/beartic.bin" +.endif @ P_FAMILY_CUBCHOO +.if P_FAMILY_CRYOGONAL == TRUE .align 2 Cry_Cryogonal:: .incbin "sound/direct_sound_samples/cries/cryogonal.bin" +.endif @ P_FAMILY_CRYOGONAL +.if P_FAMILY_SHELMET == TRUE .align 2 Cry_Shelmet:: .incbin "sound/direct_sound_samples/cries/shelmet.bin" @@ -2856,11 +3951,15 @@ Cry_Shelmet:: .align 2 Cry_Accelgor:: .incbin "sound/direct_sound_samples/cries/accelgor.bin" +.endif @ P_FAMILY_SHELMET +.if P_FAMILY_STUNFISK == TRUE .align 2 Cry_Stunfisk:: .incbin "sound/direct_sound_samples/cries/stunfisk.bin" +.endif @ P_FAMILY_STUNFISK +.if P_FAMILY_MIENFOO == TRUE .align 2 Cry_Mienfoo:: .incbin "sound/direct_sound_samples/cries/mienfoo.bin" @@ -2868,11 +3967,15 @@ Cry_Mienfoo:: .align 2 Cry_Mienshao:: .incbin "sound/direct_sound_samples/cries/mienshao.bin" +.endif @ P_FAMILY_MIENFOO +.if P_FAMILY_DRUDDIGON == TRUE .align 2 Cry_Druddigon:: .incbin "sound/direct_sound_samples/cries/druddigon.bin" +.endif @ P_FAMILY_DRUDDIGON +.if P_FAMILY_GOLETT == TRUE .align 2 Cry_Golett:: .incbin "sound/direct_sound_samples/cries/golett.bin" @@ -2880,7 +3983,9 @@ Cry_Golett:: .align 2 Cry_Golurk:: .incbin "sound/direct_sound_samples/cries/golurk.bin" +.endif @ P_FAMILY_GOLETT +.if P_FAMILY_PAWNIARD == TRUE .align 2 Cry_Pawniard:: .incbin "sound/direct_sound_samples/cries/pawniard.bin" @@ -2889,10 +3994,20 @@ Cry_Pawniard:: Cry_Bisharp:: .incbin "sound/direct_sound_samples/cries/bisharp.bin" +.if P_GEN_9_CROSS_EVOS == TRUE + .align 2 +Cry_Kingambit:: + .incbin "sound/direct_sound_samples/cries/kingambit.bin" +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_PAWNIARD + +.if P_FAMILY_BOUFFALANT == TRUE .align 2 Cry_Bouffalant:: .incbin "sound/direct_sound_samples/cries/bouffalant.bin" +.endif @ P_FAMILY_BOUFFALANT +.if P_FAMILY_RUFFLET == TRUE .align 2 Cry_Rufflet:: .incbin "sound/direct_sound_samples/cries/rufflet.bin" @@ -2900,7 +4015,9 @@ Cry_Rufflet:: .align 2 Cry_Braviary:: .incbin "sound/direct_sound_samples/cries/braviary.bin" +.endif @ P_FAMILY_RUFFLET +.if P_FAMILY_VULLABY == TRUE .align 2 Cry_Vullaby:: .incbin "sound/direct_sound_samples/cries/vullaby.bin" @@ -2908,15 +4025,21 @@ Cry_Vullaby:: .align 2 Cry_Mandibuzz:: .incbin "sound/direct_sound_samples/cries/mandibuzz.bin" +.endif @ P_FAMILY_VULLABY +.if P_FAMILY_HEATMOR == TRUE .align 2 Cry_Heatmor:: .incbin "sound/direct_sound_samples/cries/heatmor.bin" +.endif @ P_FAMILY_HEATMOR +.if P_FAMILY_DURANT == TRUE .align 2 Cry_Durant:: .incbin "sound/direct_sound_samples/cries/durant.bin" +.endif @ P_FAMILY_DURANT +.if P_FAMILY_DEINO == TRUE .align 2 Cry_Deino:: .incbin "sound/direct_sound_samples/cries/deino.bin" @@ -2928,7 +4051,9 @@ Cry_Zweilous:: .align 2 Cry_Hydreigon:: .incbin "sound/direct_sound_samples/cries/hydreigon.bin" +.endif @ P_FAMILY_DEINO +.if P_FAMILY_LARVESTA == TRUE .align 2 Cry_Larvesta:: .incbin "sound/direct_sound_samples/cries/larvesta.bin" @@ -2936,57 +4061,104 @@ Cry_Larvesta:: .align 2 Cry_Volcarona:: .incbin "sound/direct_sound_samples/cries/volcarona.bin" +.endif @ P_FAMILY_LARVESTA +.if P_FAMILY_COBALION == TRUE .align 2 Cry_Cobalion:: .incbin "sound/direct_sound_samples/cries/cobalion.bin" +.endif @ P_FAMILY_COBALION +.if P_FAMILY_TERRAKION == TRUE .align 2 Cry_Terrakion:: .incbin "sound/direct_sound_samples/cries/terrakion.bin" +.endif @ P_FAMILY_TERRAKION +.if P_FAMILY_VIRIZION == TRUE .align 2 Cry_Virizion:: .incbin "sound/direct_sound_samples/cries/virizion.bin" +.endif @ P_FAMILY_VIRIZION + +.if P_FAMILY_TORNADUS == TRUE + .align 2 +Cry_TornadusIncarnate:: + .incbin "sound/direct_sound_samples/cries/tornadus_incarnate.bin" .align 2 -Cry_Tornadus:: - .incbin "sound/direct_sound_samples/cries/tornadus.bin" +Cry_TornadusTherian:: + .incbin "sound/direct_sound_samples/cries/tornadus_therian.bin" +.endif @ P_FAMILY_TORNADUS + +.if P_FAMILY_THUNDURUS == TRUE + .align 2 +Cry_ThundurusIncarnate:: + .incbin "sound/direct_sound_samples/cries/thundurus_incarnate.bin" .align 2 -Cry_Thundurus:: - .incbin "sound/direct_sound_samples/cries/thundurus.bin" +Cry_ThundurusTherian:: + .incbin "sound/direct_sound_samples/cries/thundurus_therian.bin" +.endif @ P_FAMILY_THUNDURUS +.if P_FAMILY_RESHIRAM == TRUE .align 2 Cry_Reshiram:: .incbin "sound/direct_sound_samples/cries/reshiram.bin" +.endif @ P_FAMILY_RESHIRAM +.if P_FAMILY_ZEKROM == TRUE .align 2 Cry_Zekrom:: .incbin "sound/direct_sound_samples/cries/zekrom.bin" +.endif @ P_FAMILY_ZEKROM + +.if P_FAMILY_LANDORUS == TRUE + .align 2 +Cry_LandorusIncarnate:: + .incbin "sound/direct_sound_samples/cries/landorus_incarnate.bin" .align 2 -Cry_Landorus:: - .incbin "sound/direct_sound_samples/cries/landorus.bin" +Cry_LandorusTherian:: + .incbin "sound/direct_sound_samples/cries/landorus_therian.bin" +.endif @ P_FAMILY_LANDORUS +.if P_FAMILY_KYUREM == TRUE .align 2 Cry_Kyurem:: .incbin "sound/direct_sound_samples/cries/kyurem.bin" +.if P_FUSION_FORMS == TRUE + .align 2 +Cry_KyuremWhite:: + .incbin "sound/direct_sound_samples/cries/kyurem_white.bin" + + .align 2 +Cry_KyuremBlack:: + .incbin "sound/direct_sound_samples/cries/kyurem_black.bin" + +.endif @ P_FUSION_FORMS +.endif @ P_FAMILY_KYUREM + +.if P_FAMILY_KELDEO == TRUE .align 2 Cry_Keldeo:: .incbin "sound/direct_sound_samples/cries/keldeo.bin" +.endif @ P_FAMILY_KELDEO +.if P_FAMILY_MELOETTA == TRUE .align 2 Cry_Meloetta:: .incbin "sound/direct_sound_samples/cries/meloetta.bin" +.endif @ P_FAMILY_MELOETTA +.if P_FAMILY_GENESECT == TRUE .align 2 Cry_Genesect:: .incbin "sound/direct_sound_samples/cries/genesect.bin" -.endif +.endif @ P_FAMILY_GENESECT -.if P_GEN_6_POKEMON == TRUE +.if P_FAMILY_CHESPIN == TRUE .align 2 Cry_Chespin:: .incbin "sound/direct_sound_samples/cries/chespin.bin" @@ -2998,7 +4170,9 @@ Cry_Quilladin:: .align 2 Cry_Chesnaught:: .incbin "sound/direct_sound_samples/cries/chesnaught.bin" +.endif @ P_FAMILY_CHESPIN +.if P_FAMILY_FENNEKIN == TRUE .align 2 Cry_Fennekin:: .incbin "sound/direct_sound_samples/cries/fennekin.bin" @@ -3010,7 +4184,9 @@ Cry_Braixen:: .align 2 Cry_Delphox:: .incbin "sound/direct_sound_samples/cries/delphox.bin" +.endif @ P_FAMILY_FENNEKIN +.if P_FAMILY_FROAKIE == TRUE .align 2 Cry_Froakie:: .incbin "sound/direct_sound_samples/cries/froakie.bin" @@ -3022,7 +4198,9 @@ Cry_Frogadier:: .align 2 Cry_Greninja:: .incbin "sound/direct_sound_samples/cries/greninja.bin" +.endif @ P_FAMILY_FROAKIE +.if P_FAMILY_BUNNELBY == TRUE .align 2 Cry_Bunnelby:: .incbin "sound/direct_sound_samples/cries/bunnelby.bin" @@ -3030,7 +4208,9 @@ Cry_Bunnelby:: .align 2 Cry_Diggersby:: .incbin "sound/direct_sound_samples/cries/diggersby.bin" +.endif @ P_FAMILY_BUNNELBY +.if P_FAMILY_FLETCHLING == TRUE .align 2 Cry_Fletchling:: .incbin "sound/direct_sound_samples/cries/fletchling.bin" @@ -3042,7 +4222,9 @@ Cry_Fletchinder:: .align 2 Cry_Talonflame:: .incbin "sound/direct_sound_samples/cries/talonflame.bin" +.endif @ P_FAMILY_FLETCHLING +.if P_FAMILY_SCATTERBUG == TRUE .align 2 Cry_Scatterbug:: .incbin "sound/direct_sound_samples/cries/scatterbug.bin" @@ -3054,7 +4236,9 @@ Cry_Spewpa:: .align 2 Cry_Vivillon:: .incbin "sound/direct_sound_samples/cries/vivillon.bin" +.endif @ P_FAMILY_SCATTERBUG +.if P_FAMILY_LITLEO == TRUE .align 2 Cry_Litleo:: .incbin "sound/direct_sound_samples/cries/litleo.bin" @@ -3062,7 +4246,9 @@ Cry_Litleo:: .align 2 Cry_Pyroar:: .incbin "sound/direct_sound_samples/cries/pyroar.bin" +.endif @ P_FAMILY_LITLEO +.if P_FAMILY_FLABEBE == TRUE .align 2 Cry_Flabebe:: .incbin "sound/direct_sound_samples/cries/flabebe.bin" @@ -3071,10 +4257,16 @@ Cry_Flabebe:: Cry_Floette:: .incbin "sound/direct_sound_samples/cries/floette.bin" + .align 2 +Cry_FloetteEternalFlower:: + .incbin "sound/direct_sound_samples/cries/floette_eternal_flower.bin" + .align 2 Cry_Florges:: .incbin "sound/direct_sound_samples/cries/florges.bin" +.endif @ P_FAMILY_FLABEBE +.if P_FAMILY_SKIDDO == TRUE .align 2 Cry_Skiddo:: .incbin "sound/direct_sound_samples/cries/skiddo.bin" @@ -3082,7 +4274,9 @@ Cry_Skiddo:: .align 2 Cry_Gogoat:: .incbin "sound/direct_sound_samples/cries/gogoat.bin" +.endif @ P_FAMILY_SKIDDO +.if P_FAMILY_PANCHAM == TRUE .align 2 Cry_Pancham:: .incbin "sound/direct_sound_samples/cries/pancham.bin" @@ -3090,11 +4284,15 @@ Cry_Pancham:: .align 2 Cry_Pangoro:: .incbin "sound/direct_sound_samples/cries/pangoro.bin" +.endif @ P_FAMILY_PANCHAM +.if P_FAMILY_FURFROU == TRUE .align 2 Cry_Furfrou:: .incbin "sound/direct_sound_samples/cries/furfrou.bin" +.endif @ P_FAMILY_FURFROU +.if P_FAMILY_ESPURR == TRUE .align 2 Cry_Espurr:: .incbin "sound/direct_sound_samples/cries/espurr.bin" @@ -3102,7 +4300,9 @@ Cry_Espurr:: .align 2 Cry_Meowstic:: .incbin "sound/direct_sound_samples/cries/meowstic.bin" +.endif @ P_FAMILY_ESPURR +.if P_FAMILY_HONEDGE == TRUE .align 2 Cry_Honedge:: .incbin "sound/direct_sound_samples/cries/honedge.bin" @@ -3114,7 +4314,9 @@ Cry_Doublade:: .align 2 Cry_Aegislash:: .incbin "sound/direct_sound_samples/cries/aegislash.bin" +.endif @ P_FAMILY_HONEDGE +.if P_FAMILY_SPRITZEE == TRUE .align 2 Cry_Spritzee:: .incbin "sound/direct_sound_samples/cries/spritzee.bin" @@ -3122,7 +4324,9 @@ Cry_Spritzee:: .align 2 Cry_Aromatisse:: .incbin "sound/direct_sound_samples/cries/aromatisse.bin" +.endif @ P_FAMILY_SPRITZEE +.if P_FAMILY_SWIRLIX == TRUE .align 2 Cry_Swirlix:: .incbin "sound/direct_sound_samples/cries/swirlix.bin" @@ -3130,7 +4334,9 @@ Cry_Swirlix:: .align 2 Cry_Slurpuff:: .incbin "sound/direct_sound_samples/cries/slurpuff.bin" +.endif @ P_FAMILY_SWIRLIX +.if P_FAMILY_INKAY == TRUE .align 2 Cry_Inkay:: .incbin "sound/direct_sound_samples/cries/inkay.bin" @@ -3138,7 +4344,9 @@ Cry_Inkay:: .align 2 Cry_Malamar:: .incbin "sound/direct_sound_samples/cries/malamar.bin" +.endif @ P_FAMILY_INKAY +.if P_FAMILY_BINACLE == TRUE .align 2 Cry_Binacle:: .incbin "sound/direct_sound_samples/cries/binacle.bin" @@ -3146,7 +4354,9 @@ Cry_Binacle:: .align 2 Cry_Barbaracle:: .incbin "sound/direct_sound_samples/cries/barbaracle.bin" +.endif @ P_FAMILY_BINACLE +.if P_FAMILY_SKRELP == TRUE .align 2 Cry_Skrelp:: .incbin "sound/direct_sound_samples/cries/skrelp.bin" @@ -3154,7 +4364,9 @@ Cry_Skrelp:: .align 2 Cry_Dragalge:: .incbin "sound/direct_sound_samples/cries/dragalge.bin" +.endif @ P_FAMILY_SKRELP +.if P_FAMILY_CLAUNCHER == TRUE .align 2 Cry_Clauncher:: .incbin "sound/direct_sound_samples/cries/clauncher.bin" @@ -3162,7 +4374,9 @@ Cry_Clauncher:: .align 2 Cry_Clawitzer:: .incbin "sound/direct_sound_samples/cries/clawitzer.bin" +.endif @ P_FAMILY_CLAUNCHER +.if P_FAMILY_HELIOPTILE == TRUE .align 2 Cry_Helioptile:: .incbin "sound/direct_sound_samples/cries/helioptile.bin" @@ -3170,7 +4384,9 @@ Cry_Helioptile:: .align 2 Cry_Heliolisk:: .incbin "sound/direct_sound_samples/cries/heliolisk.bin" +.endif @ P_FAMILY_HELIOPTILE +.if P_FAMILY_TYRUNT == TRUE .align 2 Cry_Tyrunt:: .incbin "sound/direct_sound_samples/cries/tyrunt.bin" @@ -3178,7 +4394,9 @@ Cry_Tyrunt:: .align 2 Cry_Tyrantrum:: .incbin "sound/direct_sound_samples/cries/tyrantrum.bin" +.endif @ P_FAMILY_TYRUNT +.if P_FAMILY_AMAURA == TRUE .align 2 Cry_Amaura:: .incbin "sound/direct_sound_samples/cries/amaura.bin" @@ -3186,23 +4404,27 @@ Cry_Amaura:: .align 2 Cry_Aurorus:: .incbin "sound/direct_sound_samples/cries/aurorus.bin" +.endif @ P_FAMILY_AMAURA - .align 2 -Cry_Sylveon:: - .incbin "sound/direct_sound_samples/cries/sylveon.bin" - +.if P_FAMILY_HAWLUCHA == TRUE .align 2 Cry_Hawlucha:: .incbin "sound/direct_sound_samples/cries/hawlucha.bin" +.endif @ P_FAMILY_HAWLUCHA +.if P_FAMILY_DEDENNE == TRUE .align 2 Cry_Dedenne:: .incbin "sound/direct_sound_samples/cries/dedenne.bin" +.endif @ P_FAMILY_DEDENNE +.if P_FAMILY_CARBINK == TRUE .align 2 Cry_Carbink:: .incbin "sound/direct_sound_samples/cries/carbink.bin" +.endif @ P_FAMILY_CARBINK +.if P_FAMILY_GOOMY == TRUE .align 2 Cry_Goomy:: .incbin "sound/direct_sound_samples/cries/goomy.bin" @@ -3214,11 +4436,15 @@ Cry_Sliggoo:: .align 2 Cry_Goodra:: .incbin "sound/direct_sound_samples/cries/goodra.bin" +.endif @ P_FAMILY_GOOMY +.if P_FAMILY_KLEFKI == TRUE .align 2 Cry_Klefki:: .incbin "sound/direct_sound_samples/cries/uncomp_klefki.bin" +.endif @ P_FAMILY_KLEFKI +.if P_FAMILY_PHANTUMP == TRUE .align 2 Cry_Phantump:: .incbin "sound/direct_sound_samples/cries/phantump.bin" @@ -3226,15 +4452,27 @@ Cry_Phantump:: .align 2 Cry_Trevenant:: .incbin "sound/direct_sound_samples/cries/trevenant.bin" +.endif @ P_FAMILY_PHANTUMP +.if P_FAMILY_PUMPKABOO == TRUE .align 2 Cry_Pumpkaboo:: .incbin "sound/direct_sound_samples/cries/pumpkaboo.bin" + .align 2 +Cry_PumpkabooSuper:: + .incbin "sound/direct_sound_samples/cries/pumpkaboo_super.bin" + .align 2 Cry_Gourgeist:: .incbin "sound/direct_sound_samples/cries/gourgeist.bin" + .align 2 +Cry_GourgeistSuper:: + .incbin "sound/direct_sound_samples/cries/gourgeist_super.bin" +.endif @ P_FAMILY_PUMPKABOO + +.if P_FAMILY_BERGMITE == TRUE .align 2 Cry_Bergmite:: .incbin "sound/direct_sound_samples/cries/bergmite.bin" @@ -3242,7 +4480,9 @@ Cry_Bergmite:: .align 2 Cry_Avalugg:: .incbin "sound/direct_sound_samples/cries/avalugg.bin" +.endif @ P_FAMILY_BERGMITE +.if P_FAMILY_NOIBAT == TRUE .align 2 Cry_Noibat:: .incbin "sound/direct_sound_samples/cries/noibat.bin" @@ -3250,33 +4490,63 @@ Cry_Noibat:: .align 2 Cry_Noivern:: .incbin "sound/direct_sound_samples/cries/noivern.bin" +.endif @ P_FAMILY_NOIBAT +.if P_FAMILY_XERNEAS == TRUE .align 2 Cry_Xerneas:: .incbin "sound/direct_sound_samples/cries/xerneas.bin" +.endif @ P_FAMILY_XERNEAS +.if P_FAMILY_YVELTAL == TRUE .align 2 Cry_Yveltal:: .incbin "sound/direct_sound_samples/cries/yveltal.bin" +.endif @ P_FAMILY_YVELTAL + +.if P_FAMILY_ZYGARDE == TRUE + .align 2 +Cry_Zygarde50:: + .incbin "sound/direct_sound_samples/cries/zygarde_50.bin" .align 2 -Cry_Zygarde:: - .incbin "sound/direct_sound_samples/cries/zygarde.bin" +Cry_Zygarde10:: + .incbin "sound/direct_sound_samples/cries/zygarde_10.bin" + .align 2 +Cry_ZygardeComplete:: + .incbin "sound/direct_sound_samples/cries/zygarde_complete.bin" +.endif @ P_FAMILY_ZYGARDE + +.if P_FAMILY_DIANCIE == TRUE .align 2 Cry_Diancie:: .incbin "sound/direct_sound_samples/cries/diancie.bin" +.if P_MEGA_EVOLUTIONS == TRUE .align 2 -Cry_Hoopa:: - .incbin "sound/direct_sound_samples/cries/hoopa.bin" +Cry_DiancieMega:: + .incbin "sound/direct_sound_samples/cries/diancie_mega.bin" +.endif @ P_MEGA_EVOLUTIONS +.endif @ P_FAMILY_DIANCIE +.if P_FAMILY_HOOPA == TRUE + .align 2 +Cry_HoopaConfined:: + .incbin "sound/direct_sound_samples/cries/hoopa_confined.bin" + + .align 2 +Cry_HoopaUnbound:: + .incbin "sound/direct_sound_samples/cries/hoopa_unbound.bin" +.endif @ P_FAMILY_HOOPA + +.if P_FAMILY_VOLCANION == TRUE .align 2 Cry_Volcanion:: .incbin "sound/direct_sound_samples/cries/volcanion.bin" -.endif +.endif @ P_FAMILY_VOLCANION -.if P_GEN_7_POKEMON == TRUE +.if P_FAMILY_ROWLET == TRUE .align 2 Cry_Rowlet:: .incbin "sound/direct_sound_samples/cries/rowlet.bin" @@ -3288,7 +4558,9 @@ Cry_Dartrix:: .align 2 Cry_Decidueye:: .incbin "sound/direct_sound_samples/cries/decidueye.bin" +.endif @ P_FAMILY_ROWLET +.if P_FAMILY_LITTEN == TRUE .align 2 Cry_Litten:: .incbin "sound/direct_sound_samples/cries/litten.bin" @@ -3300,7 +4572,9 @@ Cry_Torracat:: .align 2 Cry_Incineroar:: .incbin "sound/direct_sound_samples/cries/incineroar.bin" +.endif @ P_FAMILY_LITTEN +.if P_FAMILY_POPPLIO == TRUE .align 2 Cry_Popplio:: .incbin "sound/direct_sound_samples/cries/popplio.bin" @@ -3312,7 +4586,9 @@ Cry_Brionne:: .align 2 Cry_Primarina:: .incbin "sound/direct_sound_samples/cries/primarina.bin" +.endif @ P_FAMILY_POPPLIO +.if P_FAMILY_PIKIPEK == TRUE .align 2 Cry_Pikipek:: .incbin "sound/direct_sound_samples/cries/pikipek.bin" @@ -3324,7 +4600,9 @@ Cry_Trumbeak:: .align 2 Cry_Toucannon:: .incbin "sound/direct_sound_samples/cries/toucannon.bin" +.endif @ P_FAMILY_PIKIPEK +.if P_FAMILY_YUNGOOS == TRUE .align 2 Cry_Yungoos:: .incbin "sound/direct_sound_samples/cries/yungoos.bin" @@ -3332,7 +4610,9 @@ Cry_Yungoos:: .align 2 Cry_Gumshoos:: .incbin "sound/direct_sound_samples/cries/gumshoos.bin" +.endif @ P_FAMILY_YUNGOOS +.if P_FAMILY_GRUBBIN == TRUE .align 2 Cry_Grubbin:: .incbin "sound/direct_sound_samples/cries/grubbin.bin" @@ -3344,7 +4624,9 @@ Cry_Charjabug:: .align 2 Cry_Vikavolt:: .incbin "sound/direct_sound_samples/cries/vikavolt.bin" +.endif @ P_FAMILY_GRUBBIN +.if P_FAMILY_CRABRAWLER == TRUE .align 2 Cry_Crabrawler:: .incbin "sound/direct_sound_samples/cries/crabrawler.bin" @@ -3352,11 +4634,27 @@ Cry_Crabrawler:: .align 2 Cry_Crabominable:: .incbin "sound/direct_sound_samples/cries/crabominable.bin" +.endif @ P_FAMILY_CRABRAWLER + +.if P_FAMILY_ORICORIO == TRUE + .align 2 +Cry_OricorioBaile:: + .incbin "sound/direct_sound_samples/cries/oricorio_baile.bin" .align 2 -Cry_Oricorio:: - .incbin "sound/direct_sound_samples/cries/oricorio.bin" +Cry_OricorioPomPom:: + .incbin "sound/direct_sound_samples/cries/uncomp_oricorio_pom_pom.bin" + .align 2 +Cry_OricorioPau:: + .incbin "sound/direct_sound_samples/cries/oricorio_pau.bin" + + .align 2 +Cry_OricorioSensu:: + .incbin "sound/direct_sound_samples/cries/oricorio_sensu.bin" +.endif @ P_FAMILY_ORICORIO + +.if P_FAMILY_CUTIEFLY == TRUE .align 2 Cry_Cutiefly:: .incbin "sound/direct_sound_samples/cries/cutiefly.bin" @@ -3364,19 +4662,37 @@ Cry_Cutiefly:: .align 2 Cry_Ribombee:: .incbin "sound/direct_sound_samples/cries/ribombee.bin" +.endif @ P_FAMILY_CUTIEFLY +.if P_FAMILY_ROCKRUFF == TRUE .align 2 Cry_Rockruff:: .incbin "sound/direct_sound_samples/cries/rockruff.bin" .align 2 -Cry_Lycanroc:: - .incbin "sound/direct_sound_samples/cries/lycanroc.bin" +Cry_LycanrocMidday:: + .incbin "sound/direct_sound_samples/cries/lycanroc_midday.bin" .align 2 -Cry_Wishiwashi:: - .incbin "sound/direct_sound_samples/cries/wishiwashi.bin" +Cry_LycanrocMidnight:: + .incbin "sound/direct_sound_samples/cries/lycanroc_midnight.bin" + .align 2 +Cry_LycanrocDusk:: + .incbin "sound/direct_sound_samples/cries/lycanroc_dusk.bin" +.endif @ P_FAMILY_ROCKRUFF + +.if P_FAMILY_WISHIWASHI == TRUE + .align 2 +Cry_WishiwashiSolo:: + .incbin "sound/direct_sound_samples/cries/wishiwashi_solo.bin" + + .align 2 +Cry_WishiwashiSchool:: + .incbin "sound/direct_sound_samples/cries/wishiwashi_school.bin" +.endif @ P_FAMILY_WISHIWASHI + +.if P_FAMILY_MAREANIE == TRUE .align 2 Cry_Mareanie:: .incbin "sound/direct_sound_samples/cries/mareanie.bin" @@ -3384,7 +4700,9 @@ Cry_Mareanie:: .align 2 Cry_Toxapex:: .incbin "sound/direct_sound_samples/cries/toxapex.bin" +.endif @ P_FAMILY_MAREANIE +.if P_FAMILY_MUDBRAY == TRUE .align 2 Cry_Mudbray:: .incbin "sound/direct_sound_samples/cries/mudbray.bin" @@ -3392,7 +4710,9 @@ Cry_Mudbray:: .align 2 Cry_Mudsdale:: .incbin "sound/direct_sound_samples/cries/mudsdale.bin" +.endif @ P_FAMILY_MUDBRAY +.if P_FAMILY_DEWPIDER == TRUE .align 2 Cry_Dewpider:: .incbin "sound/direct_sound_samples/cries/dewpider.bin" @@ -3400,7 +4720,9 @@ Cry_Dewpider:: .align 2 Cry_Araquanid:: .incbin "sound/direct_sound_samples/cries/araquanid.bin" +.endif @ P_FAMILY_DEWPIDER +.if P_FAMILY_FOMANTIS == TRUE .align 2 Cry_Fomantis:: .incbin "sound/direct_sound_samples/cries/fomantis.bin" @@ -3408,7 +4730,9 @@ Cry_Fomantis:: .align 2 Cry_Lurantis:: .incbin "sound/direct_sound_samples/cries/lurantis.bin" +.endif @ P_FAMILY_FOMANTIS +.if P_FAMILY_MORELULL == TRUE .align 2 Cry_Morelull:: .incbin "sound/direct_sound_samples/cries/morelull.bin" @@ -3416,7 +4740,9 @@ Cry_Morelull:: .align 2 Cry_Shiinotic:: .incbin "sound/direct_sound_samples/cries/shiinotic.bin" +.endif @ P_FAMILY_MORELULL +.if P_FAMILY_SALANDIT == TRUE .align 2 Cry_Salandit:: .incbin "sound/direct_sound_samples/cries/salandit.bin" @@ -3424,7 +4750,9 @@ Cry_Salandit:: .align 2 Cry_Salazzle:: .incbin "sound/direct_sound_samples/cries/salazzle.bin" +.endif @ P_FAMILY_SALANDIT +.if P_FAMILY_STUFFUL == TRUE .align 2 Cry_Stufful:: .incbin "sound/direct_sound_samples/cries/stufful.bin" @@ -3432,7 +4760,9 @@ Cry_Stufful:: .align 2 Cry_Bewear:: .incbin "sound/direct_sound_samples/cries/bewear.bin" +.endif @ P_FAMILY_STUFFUL +.if P_FAMILY_BOUNSWEET == TRUE .align 2 Cry_Bounsweet:: .incbin "sound/direct_sound_samples/cries/bounsweet.bin" @@ -3444,19 +4774,27 @@ Cry_Steenee:: .align 2 Cry_Tsareena:: .incbin "sound/direct_sound_samples/cries/tsareena.bin" +.endif @ P_FAMILY_BOUNSWEET +.if P_FAMILY_COMFEY == TRUE .align 2 Cry_Comfey:: .incbin "sound/direct_sound_samples/cries/comfey.bin" +.endif @ P_FAMILY_COMFEY +.if P_FAMILY_ORANGURU == TRUE .align 2 Cry_Oranguru:: .incbin "sound/direct_sound_samples/cries/oranguru.bin" +.endif @ P_FAMILY_ORANGURU +.if P_FAMILY_PASSIMIAN == TRUE .align 2 Cry_Passimian:: .incbin "sound/direct_sound_samples/cries/passimian.bin" +.endif @ P_FAMILY_PASSIMIAN +.if P_FAMILY_WIMPOD == TRUE .align 2 Cry_Wimpod:: .incbin "sound/direct_sound_samples/cries/wimpod.bin" @@ -3464,7 +4802,9 @@ Cry_Wimpod:: .align 2 Cry_Golisopod:: .incbin "sound/direct_sound_samples/cries/golisopod.bin" +.endif @ P_FAMILY_WIMPOD +.if P_FAMILY_SANDYGAST == TRUE .align 2 Cry_Sandygast:: .incbin "sound/direct_sound_samples/cries/sandygast.bin" @@ -3472,11 +4812,15 @@ Cry_Sandygast:: .align 2 Cry_Palossand:: .incbin "sound/direct_sound_samples/cries/palossand.bin" +.endif @ P_FAMILY_SANDYGAST +.if P_FAMILY_PYUKUMUKU == TRUE .align 2 Cry_Pyukumuku:: .incbin "sound/direct_sound_samples/cries/pyukumuku.bin" +.endif @ P_FAMILY_PYUKUMUKU +.if P_FAMILY_TYPE_NULL == TRUE .align 2 Cry_TypeNull:: .incbin "sound/direct_sound_samples/cries/type_null.bin" @@ -3484,39 +4828,57 @@ Cry_TypeNull:: .align 2 Cry_Silvally:: .incbin "sound/direct_sound_samples/cries/silvally.bin" +.endif @ P_FAMILY_TYPE_NULL +.if P_FAMILY_MINIOR == TRUE .align 2 Cry_Minior:: .incbin "sound/direct_sound_samples/cries/minior.bin" +.endif @ P_FAMILY_MINIOR +.if P_FAMILY_KOMALA == TRUE .align 2 Cry_Komala:: .incbin "sound/direct_sound_samples/cries/komala.bin" +.endif @ P_FAMILY_KOMALA +.if P_FAMILY_TURTONATOR == TRUE .align 2 Cry_Turtonator:: .incbin "sound/direct_sound_samples/cries/turtonator.bin" +.endif @ P_FAMILY_TURTONATOR +.if P_FAMILY_TOGEDEMARU == TRUE .align 2 Cry_Togedemaru:: .incbin "sound/direct_sound_samples/cries/togedemaru.bin" +.endif @ P_FAMILY_TOGEDEMARU +.if P_FAMILY_MIMIKYU == TRUE .align 2 Cry_Mimikyu:: .incbin "sound/direct_sound_samples/cries/mimikyu.bin" +.endif @ P_FAMILY_MIMIKYU +.if P_FAMILY_BRUXISH == TRUE .align 2 Cry_Bruxish:: .incbin "sound/direct_sound_samples/cries/bruxish.bin" +.endif @ P_FAMILY_BRUXISH +.if P_FAMILY_DRAMPA == TRUE .align 2 Cry_Drampa:: .incbin "sound/direct_sound_samples/cries/drampa.bin" +.endif @ P_FAMILY_DRAMPA +.if P_FAMILY_DHELMISE == TRUE .align 2 Cry_Dhelmise:: .incbin "sound/direct_sound_samples/cries/dhelmise.bin" +.endif @ P_FAMILY_DHELMISE +.if P_FAMILY_JANGMO_O == TRUE .align 2 Cry_JangmoO:: .incbin "sound/direct_sound_samples/cries/jangmo_o.bin" @@ -3528,23 +4890,33 @@ Cry_HakamoO:: .align 2 Cry_KommoO:: .incbin "sound/direct_sound_samples/cries/kommo_o.bin" +.endif @ P_FAMILY_JANGMO_O +.if P_FAMILY_TAPU_KOKO == TRUE .align 2 Cry_TapuKoko:: .incbin "sound/direct_sound_samples/cries/tapu_koko.bin" +.endif @ P_FAMILY_TAPU_KOKO +.if P_FAMILY_TAPU_LELE == TRUE .align 2 Cry_TapuLele:: .incbin "sound/direct_sound_samples/cries/tapu_lele.bin" +.endif @ P_FAMILY_TAPU_LELE +.if P_FAMILY_TAPU_BULU == TRUE .align 2 Cry_TapuBulu:: .incbin "sound/direct_sound_samples/cries/tapu_bulu.bin" +.endif @ P_FAMILY_TAPU_BULU +.if P_FAMILY_TAPU_FINI == TRUE .align 2 Cry_TapuFini:: .incbin "sound/direct_sound_samples/cries/tapu_fini.bin" +.endif @ P_FAMILY_TAPU_FINI +.if P_FAMILY_COSMOG == TRUE .align 2 Cry_Cosmog:: .incbin "sound/direct_sound_samples/cries/cosmog.bin" @@ -3560,47 +4932,86 @@ Cry_Solgaleo:: .align 2 Cry_Lunala:: .incbin "sound/direct_sound_samples/cries/lunala.bin" +.endif @ P_FAMILY_COSMOG +.if P_FAMILY_NIHILEGO == TRUE .align 2 Cry_Nihilego:: .incbin "sound/direct_sound_samples/cries/nihilego.bin" +.endif @ P_FAMILY_NIHILEGO +.if P_FAMILY_BUZZWOLE == TRUE .align 2 Cry_Buzzwole:: .incbin "sound/direct_sound_samples/cries/buzzwole.bin" +.endif @ P_FAMILY_BUZZWOLE +.if P_FAMILY_PHEROMOSA == TRUE .align 2 Cry_Pheromosa:: .incbin "sound/direct_sound_samples/cries/pheromosa.bin" +.endif @ P_FAMILY_PHEROMOSA +.if P_FAMILY_XURKITREE == TRUE .align 2 Cry_Xurkitree:: .incbin "sound/direct_sound_samples/cries/xurkitree.bin" +.endif @ P_FAMILY_XURKITREE +.if P_FAMILY_CELESTEELA == TRUE .align 2 Cry_Celesteela:: .incbin "sound/direct_sound_samples/cries/celesteela.bin" +.endif @ P_FAMILY_CELESTEELA +.if P_FAMILY_KARTANA == TRUE .align 2 Cry_Kartana:: .incbin "sound/direct_sound_samples/cries/kartana.bin" +.endif @ P_FAMILY_KARTANA +.if P_FAMILY_GUZZLORD == TRUE .align 2 Cry_Guzzlord:: .incbin "sound/direct_sound_samples/cries/guzzlord.bin" +.endif @ P_FAMILY_GUZZLORD +.if P_FAMILY_NECROZMA == TRUE .align 2 Cry_Necrozma:: .incbin "sound/direct_sound_samples/cries/necrozma.bin" +.if P_FUSION_FORMS == TRUE + .align 2 +Cry_NecrozmaDuskMane:: + .incbin "sound/direct_sound_samples/cries/necrozma_dusk_mane.bin" + + .align 2 +Cry_NecrozmaDawnWings:: + .incbin "sound/direct_sound_samples/cries/necrozma_dawn_wings.bin" + +.if P_ULTRA_BURST_FORMS == TRUE + .align 2 +Cry_NecrozmaUltra:: + .incbin "sound/direct_sound_samples/cries/necrozma_ultra.bin" + +.endif @ P_ULTRA_BURST_FORMS +.endif @ P_FUSION_FORMS +.endif @ P_FAMILY_NECROZMA + +.if P_FAMILY_MAGEARNA == TRUE .align 2 Cry_Magearna:: .incbin "sound/direct_sound_samples/cries/magearna.bin" +.endif @ P_FAMILY_MAGEARNA +.if P_FAMILY_MARSHADOW == TRUE .align 2 Cry_Marshadow:: .incbin "sound/direct_sound_samples/cries/marshadow.bin" +.endif @ P_FAMILY_MARSHADOW +.if P_FAMILY_POIPOLE == TRUE .align 2 Cry_Poipole:: .incbin "sound/direct_sound_samples/cries/poipole.bin" @@ -3608,19 +5019,27 @@ Cry_Poipole:: .align 2 Cry_Naganadel:: .incbin "sound/direct_sound_samples/cries/naganadel.bin" +.endif @ P_FAMILY_POIPOLE +.if P_FAMILY_STAKATAKA == TRUE .align 2 Cry_Stakataka:: .incbin "sound/direct_sound_samples/cries/stakataka.bin" +.endif @ P_FAMILY_STAKATAKA +.if P_FAMILY_BLACEPHALON == TRUE .align 2 Cry_Blacephalon:: .incbin "sound/direct_sound_samples/cries/blacephalon.bin" +.endif @ P_FAMILY_BLACEPHALON +.if P_FAMILY_ZERAORA == TRUE .align 2 Cry_Zeraora:: .incbin "sound/direct_sound_samples/cries/zeraora.bin" +.endif @ P_FAMILY_ZERAORA +.if P_FAMILY_MELTAN == TRUE .align 2 Cry_Meltan:: .incbin "sound/direct_sound_samples/cries/meltan.bin" @@ -3628,9 +5047,9 @@ Cry_Meltan:: .align 2 Cry_Melmetal:: .incbin "sound/direct_sound_samples/cries/melmetal.bin" -.endif +.endif @ P_FAMILY_MELTAN -.if P_GEN_8_POKEMON == TRUE +.if P_FAMILY_GROOKEY == TRUE .align 2 Cry_Grookey:: .incbin "sound/direct_sound_samples/cries/grookey.bin" @@ -3642,7 +5061,9 @@ Cry_Thwackey:: .align 2 Cry_Rillaboom:: .incbin "sound/direct_sound_samples/cries/rillaboom.bin" +.endif @ P_FAMILY_GROOKEY +.if P_FAMILY_SCORBUNNY == TRUE .align 2 Cry_Scorbunny:: .incbin "sound/direct_sound_samples/cries/scorbunny.bin" @@ -3654,7 +5075,9 @@ Cry_Raboot:: .align 2 Cry_Cinderace:: .incbin "sound/direct_sound_samples/cries/cinderace.bin" +.endif @ P_FAMILY_SCORBUNNY +.if P_FAMILY_SOBBLE == TRUE .align 2 Cry_Sobble:: .incbin "sound/direct_sound_samples/cries/sobble.bin" @@ -3666,7 +5089,9 @@ Cry_Drizzile:: .align 2 Cry_Inteleon:: .incbin "sound/direct_sound_samples/cries/inteleon.bin" +.endif @ P_FAMILY_SOBBLE +.if P_FAMILY_SKWOVET == TRUE .align 2 Cry_Skwovet:: .incbin "sound/direct_sound_samples/cries/skwovet.bin" @@ -3674,7 +5099,9 @@ Cry_Skwovet:: .align 2 Cry_Greedent:: .incbin "sound/direct_sound_samples/cries/greedent.bin" +.endif @ P_FAMILY_SKWOVET +.if P_FAMILY_ROOKIDEE == TRUE .align 2 Cry_Rookidee:: .incbin "sound/direct_sound_samples/cries/rookidee.bin" @@ -3686,7 +5113,9 @@ Cry_Corvisquire:: .align 2 Cry_Corviknight:: .incbin "sound/direct_sound_samples/cries/corviknight.bin" +.endif @ P_FAMILY_ROOKIDEE +.if P_FAMILY_BLIPBUG == TRUE .align 2 Cry_Blipbug:: .incbin "sound/direct_sound_samples/cries/blipbug.bin" @@ -3698,7 +5127,9 @@ Cry_Dottler:: .align 2 Cry_Orbeetle:: .incbin "sound/direct_sound_samples/cries/orbeetle.bin" +.endif @ P_FAMILY_BLIPBUG +.if P_FAMILY_NICKIT == TRUE .align 2 Cry_Nickit:: .incbin "sound/direct_sound_samples/cries/nickit.bin" @@ -3706,7 +5137,9 @@ Cry_Nickit:: .align 2 Cry_Thievul:: .incbin "sound/direct_sound_samples/cries/thievul.bin" +.endif @ P_FAMILY_NICKIT +.if P_FAMILY_GOSSIFLEUR == TRUE .align 2 Cry_Gossifleur:: .incbin "sound/direct_sound_samples/cries/gossifleur.bin" @@ -3714,7 +5147,9 @@ Cry_Gossifleur:: .align 2 Cry_Eldegoss:: .incbin "sound/direct_sound_samples/cries/eldegoss.bin" +.endif @ P_FAMILY_GOSSIFLEUR +.if P_FAMILY_WOOLOO == TRUE .align 2 Cry_Wooloo:: .incbin "sound/direct_sound_samples/cries/wooloo.bin" @@ -3722,7 +5157,9 @@ Cry_Wooloo:: .align 2 Cry_Dubwool:: .incbin "sound/direct_sound_samples/cries/dubwool.bin" +.endif @ P_FAMILY_WOOLOO +.if P_FAMILY_CHEWTLE == TRUE .align 2 Cry_Chewtle:: .incbin "sound/direct_sound_samples/cries/chewtle.bin" @@ -3730,7 +5167,9 @@ Cry_Chewtle:: .align 2 Cry_Drednaw:: .incbin "sound/direct_sound_samples/cries/drednaw.bin" +.endif @ P_FAMILY_CHEWTLE +.if P_FAMILY_YAMPER == TRUE .align 2 Cry_Yamper:: .incbin "sound/direct_sound_samples/cries/yamper.bin" @@ -3738,7 +5177,9 @@ Cry_Yamper:: .align 2 Cry_Boltund:: .incbin "sound/direct_sound_samples/cries/boltund.bin" +.endif @ P_FAMILY_YAMPER +.if P_FAMILY_ROLYCOLY == TRUE .align 2 Cry_Rolycoly:: .incbin "sound/direct_sound_samples/cries/rolycoly.bin" @@ -3750,7 +5191,9 @@ Cry_Carkol:: .align 2 Cry_Coalossal:: .incbin "sound/direct_sound_samples/cries/coalossal.bin" +.endif @ P_FAMILY_ROLYCOLY +.if P_FAMILY_APPLIN == TRUE .align 2 Cry_Applin:: .incbin "sound/direct_sound_samples/cries/applin.bin" @@ -3763,6 +5206,14 @@ Cry_Flapple:: Cry_Appletun:: .incbin "sound/direct_sound_samples/cries/appletun.bin" +.if P_GEN_9_CROSS_EVOS == TRUE + .align 2 +Cry_Dipplin:: + .incbin "sound/direct_sound_samples/cries/dipplin.bin" +.endif @ P_GEN_9_CROSS_EVOS +.endif @ P_FAMILY_APPLIN + +.if P_FAMILY_SILICOBRA == TRUE .align 2 Cry_Silicobra:: .incbin "sound/direct_sound_samples/cries/silicobra.bin" @@ -3770,11 +5221,15 @@ Cry_Silicobra:: .align 2 Cry_Sandaconda:: .incbin "sound/direct_sound_samples/cries/sandaconda.bin" +.endif @ P_FAMILY_SILICOBRA +.if P_FAMILY_CRAMORANT == TRUE .align 2 Cry_Cramorant:: .incbin "sound/direct_sound_samples/cries/cramorant.bin" +.endif @ P_FAMILY_CRAMORANT +.if P_FAMILY_ARROKUDA == TRUE .align 2 Cry_Arrokuda:: .incbin "sound/direct_sound_samples/cries/arrokuda.bin" @@ -3782,15 +5237,23 @@ Cry_Arrokuda:: .align 2 Cry_Barraskewda:: .incbin "sound/direct_sound_samples/cries/barraskewda.bin" +.endif @ P_FAMILY_ARROKUDA +.if P_FAMILY_TOXEL == TRUE .align 2 Cry_Toxel:: .incbin "sound/direct_sound_samples/cries/toxel.bin" .align 2 -Cry_Toxtricity:: - .incbin "sound/direct_sound_samples/cries/toxtricity.bin" +Cry_ToxtricityAmped:: + .incbin "sound/direct_sound_samples/cries/toxtricity_amped.bin" + .align 2 +Cry_ToxtricityLowKey:: + .incbin "sound/direct_sound_samples/cries/toxtricity_low_key.bin" +.endif @ P_FAMILY_TOXEL + +.if P_FAMILY_SIZZLIPEDE == TRUE .align 2 Cry_Sizzlipede:: .incbin "sound/direct_sound_samples/cries/sizzlipede.bin" @@ -3798,7 +5261,9 @@ Cry_Sizzlipede:: .align 2 Cry_Centiskorch:: .incbin "sound/direct_sound_samples/cries/centiskorch.bin" +.endif @ P_FAMILY_SIZZLIPEDE +.if P_FAMILY_CLOBBOPUS == TRUE .align 2 Cry_Clobbopus:: .incbin "sound/direct_sound_samples/cries/clobbopus.bin" @@ -3806,7 +5271,9 @@ Cry_Clobbopus:: .align 2 Cry_Grapploct:: .incbin "sound/direct_sound_samples/cries/grapploct.bin" +.endif @ P_FAMILY_CLOBBOPUS +.if P_FAMILY_SINISTEA == TRUE .align 2 Cry_Sinistea:: .incbin "sound/direct_sound_samples/cries/sinistea.bin" @@ -3814,7 +5281,9 @@ Cry_Sinistea:: .align 2 Cry_Polteageist:: .incbin "sound/direct_sound_samples/cries/polteageist.bin" +.endif @ P_FAMILY_SINISTEA +.if P_FAMILY_HATENNA == TRUE .align 2 Cry_Hatenna:: .incbin "sound/direct_sound_samples/cries/hatenna.bin" @@ -3826,7 +5295,9 @@ Cry_Hattrem:: .align 2 Cry_Hatterene:: .incbin "sound/direct_sound_samples/cries/hatterene.bin" +.endif @ P_FAMILY_HATENNA +.if P_FAMILY_IMPIDIMP == TRUE .align 2 Cry_Impidimp:: .incbin "sound/direct_sound_samples/cries/impidimp.bin" @@ -3838,31 +5309,9 @@ Cry_Morgrem:: .align 2 Cry_Grimmsnarl:: .incbin "sound/direct_sound_samples/cries/grimmsnarl.bin" +.endif @ P_FAMILY_IMPIDIMP - .align 2 -Cry_Obstagoon:: - .incbin "sound/direct_sound_samples/cries/obstagoon.bin" - - .align 2 -Cry_Perrserker:: - .incbin "sound/direct_sound_samples/cries/perrserker.bin" - - .align 2 -Cry_Cursola:: - .incbin "sound/direct_sound_samples/cries/cursola.bin" - - .align 2 -Cry_Sirfetchd:: - .incbin "sound/direct_sound_samples/cries/sirfetchd.bin" - - .align 2 -Cry_MrRime:: - .incbin "sound/direct_sound_samples/cries/mr_rime.bin" - - .align 2 -Cry_Runerigus:: - .incbin "sound/direct_sound_samples/cries/runerigus.bin" - +.if P_FAMILY_MILCERY == TRUE .align 2 Cry_Milcery:: .incbin "sound/direct_sound_samples/cries/milcery.bin" @@ -3870,15 +5319,21 @@ Cry_Milcery:: .align 2 Cry_Alcremie:: .incbin "sound/direct_sound_samples/cries/alcremie.bin" +.endif @ P_FAMILY_MILCERY +.if P_FAMILY_FALINKS == TRUE .align 2 Cry_Falinks:: .incbin "sound/direct_sound_samples/cries/falinks.bin" +.endif @ P_FAMILY_FALINKS +.if P_FAMILY_PINCURCHIN == TRUE .align 2 Cry_Pincurchin:: .incbin "sound/direct_sound_samples/cries/pincurchin.bin" +.endif @ P_FAMILY_PINCURCHIN +.if P_FAMILY_SNOM == TRUE .align 2 Cry_Snom:: .incbin "sound/direct_sound_samples/cries/snom.bin" @@ -3886,23 +5341,45 @@ Cry_Snom:: .align 2 Cry_Frosmoth:: .incbin "sound/direct_sound_samples/cries/frosmoth.bin" +.endif @ P_FAMILY_SNOM +.if P_FAMILY_STONJOURNER == TRUE .align 2 Cry_Stonjourner:: .incbin "sound/direct_sound_samples/cries/stonjourner.bin" +.endif @ P_FAMILY_STONJOURNER + +.if P_FAMILY_EISCUE == TRUE + .align 2 +Cry_EiscueIceFace:: + .incbin "sound/direct_sound_samples/cries/eiscue_ice_face.bin" .align 2 -Cry_Eiscue:: - .incbin "sound/direct_sound_samples/cries/eiscue.bin" +Cry_EiscueNoiceFace:: + .incbin "sound/direct_sound_samples/cries/eiscue_noice_face.bin" +.endif @ P_FAMILY_EISCUE + +.if P_FAMILY_INDEEDEE == TRUE + .align 2 +Cry_IndeedeeMale:: + .incbin "sound/direct_sound_samples/cries/indeedee_male.bin" .align 2 -Cry_Indeedee:: - .incbin "sound/direct_sound_samples/cries/indeedee.bin" +Cry_IndeedeeFemale:: + .incbin "sound/direct_sound_samples/cries/indeedee_female.bin" +.endif @ P_FAMILY_INDEEDEE + +.if P_FAMILY_MORPEKO == TRUE + .align 2 +Cry_MorpekoFullBelly:: + .incbin "sound/direct_sound_samples/cries/morpeko_full_belly.bin" .align 2 -Cry_Morpeko:: - .incbin "sound/direct_sound_samples/cries/morpeko.bin" +Cry_MorpekoHangry:: + .incbin "sound/direct_sound_samples/cries/morpeko_hangry.bin" +.endif @ P_FAMILY_MORPEKO +.if P_FAMILY_CUFANT == TRUE .align 2 Cry_Cufant:: .incbin "sound/direct_sound_samples/cries/cufant.bin" @@ -3910,27 +5387,39 @@ Cry_Cufant:: .align 2 Cry_Copperajah:: .incbin "sound/direct_sound_samples/cries/copperajah.bin" +.endif @ P_FAMILY_CUFANT +.if P_FAMILY_DRACOZOLT == TRUE .align 2 Cry_Dracozolt:: .incbin "sound/direct_sound_samples/cries/dracozolt.bin" +.endif @ P_FAMILY_DRACOZOLT +.if P_FAMILY_ARCTOZOLT == TRUE .align 2 Cry_Arctozolt:: .incbin "sound/direct_sound_samples/cries/arctozolt.bin" +.endif @ P_FAMILY_ARCTOZOLT +.if P_FAMILY_DRACOVISH == TRUE .align 2 Cry_Dracovish:: .incbin "sound/direct_sound_samples/cries/dracovish.bin" +.endif @ P_FAMILY_DRACOVISH +.if P_FAMILY_ARCTOVISH == TRUE .align 2 Cry_Arctovish:: .incbin "sound/direct_sound_samples/cries/arctovish.bin" +.endif @ P_FAMILY_ARCTOVISH +.if P_FAMILY_DURALUDON == TRUE .align 2 Cry_Duraludon:: .incbin "sound/direct_sound_samples/cries/duraludon.bin" +.endif @ P_FAMILY_DURALUDON +.if P_FAMILY_DREEPY == TRUE .align 2 Cry_Dreepy:: .incbin "sound/direct_sound_samples/cries/dreepy.bin" @@ -3942,420 +5431,88 @@ Cry_Drakloak:: .align 2 Cry_Dragapult:: .incbin "sound/direct_sound_samples/cries/dragapult.bin" +.endif @ P_FAMILY_DREEPY + +.if P_FAMILY_ZACIAN == TRUE + .align 2 +Cry_ZacianHeroOfManyBattles:: + .incbin "sound/direct_sound_samples/cries/zacian_hero_of_many_battles.bin" .align 2 -Cry_Zacian:: - .incbin "sound/direct_sound_samples/cries/zacian.bin" +Cry_ZacianCrownedSword:: + .incbin "sound/direct_sound_samples/cries/zacian_crowned_sword.bin" +.endif @ P_FAMILY_ZACIAN + +.if P_FAMILY_ZAMAZENTA == TRUE + .align 2 +Cry_ZamazentaHeroOfManyBattles:: + .incbin "sound/direct_sound_samples/cries/zamazenta_hero_of_many_battles.bin" .align 2 -Cry_Zamazenta:: - .incbin "sound/direct_sound_samples/cries/zamazenta.bin" +Cry_ZamazentaCrownedShield:: + .incbin "sound/direct_sound_samples/cries/zamazenta_crowned_shield.bin" +.endif @ P_FAMILY_ZAMAZENTA +.if P_FAMILY_ETERNATUS == TRUE .align 2 Cry_Eternatus:: .incbin "sound/direct_sound_samples/cries/eternatus.bin" + .align 2 +Cry_EternatusEternamax:: + .incbin "sound/direct_sound_samples/cries/eternatus_eternamax.bin" +.endif @ P_FAMILY_ETERNATUS + +.if P_FAMILY_KUBFU == TRUE .align 2 Cry_Kubfu:: .incbin "sound/direct_sound_samples/cries/kubfu.bin" .align 2 -Cry_Urshifu:: - .incbin "sound/direct_sound_samples/cries/urshifu.bin" - - .align 2 -Cry_Zarude:: - .incbin "sound/direct_sound_samples/cries/zarude.bin" - - .align 2 -Cry_Regieleki:: - .incbin "sound/direct_sound_samples/cries/regieleki.bin" - - .align 2 -Cry_Regidrago:: - .incbin "sound/direct_sound_samples/cries/regidrago.bin" - - .align 2 -Cry_Glastrier:: - .incbin "sound/direct_sound_samples/cries/glastrier.bin" - - .align 2 -Cry_Spectrier:: - .incbin "sound/direct_sound_samples/cries/spectrier.bin" - - .align 2 -Cry_Calyrex:: - .incbin "sound/direct_sound_samples/cries/calyrex.bin" - - .align 2 -Cry_Wyrdeer:: - .incbin "sound/direct_sound_samples/cries/wyrdeer.bin" - - .align 2 -Cry_Kleavor:: - .incbin "sound/direct_sound_samples/cries/kleavor.bin" - - .align 2 -Cry_Ursaluna:: - .incbin "sound/direct_sound_samples/cries/ursaluna.bin" - - .align 2 -Cry_Basculegion:: - .incbin "sound/direct_sound_samples/cries/basculegion.bin" - - .align 2 -Cry_Sneasler:: - .incbin "sound/direct_sound_samples/cries/sneasler.bin" - - .align 2 -Cry_Overqwil:: - .incbin "sound/direct_sound_samples/cries/overqwil.bin" - - .align 2 -Cry_Enamorus:: - .incbin "sound/direct_sound_samples/cries/enamorus.bin" - -.endif - - .align 2 -Cry_VenusaurMega:: - .incbin "sound/direct_sound_samples/cries/mega_venusaur.bin" - - .align 2 -Cry_CharizardMegaX:: - .incbin "sound/direct_sound_samples/cries/mega_charizard_x.bin" - - .align 2 -Cry_CharizardMegaY:: - .incbin "sound/direct_sound_samples/cries/mega_charizard_y.bin" - - .align 2 -Cry_BlastoiseMega:: - .incbin "sound/direct_sound_samples/cries/mega_blastoise.bin" - - .align 2 -Cry_BeedrillMega:: - .incbin "sound/direct_sound_samples/cries/mega_beedrill.bin" - - .align 2 -Cry_PidgeotMega:: - .incbin "sound/direct_sound_samples/cries/mega_pidgeot.bin" - - .align 2 -Cry_AlakazamMega:: - .incbin "sound/direct_sound_samples/cries/mega_alakazam.bin" - - .align 2 -Cry_SlowbroMega:: - .incbin "sound/direct_sound_samples/cries/mega_slowbro.bin" - - .align 2 -Cry_GengarMega:: - .incbin "sound/direct_sound_samples/cries/mega_gengar.bin" - - .align 2 -Cry_KangaskhanMega:: - .incbin "sound/direct_sound_samples/cries/mega_kangaskhan.bin" - - .align 2 -Cry_PinsirMega:: - .incbin "sound/direct_sound_samples/cries/mega_pinsir.bin" - - .align 2 -Cry_GyaradosMega:: - .incbin "sound/direct_sound_samples/cries/mega_gyarados.bin" - - .align 2 -Cry_AerodactylMega:: - .incbin "sound/direct_sound_samples/cries/mega_aerodactyl.bin" - - .align 2 -Cry_MewtwoMegaX:: - .incbin "sound/direct_sound_samples/cries/mega_mewtwo_x.bin" - - .align 2 -Cry_MewtwoMegaY:: - .incbin "sound/direct_sound_samples/cries/mega_mewtwo_y.bin" - - .align 2 -Cry_AmpharosMega:: - .incbin "sound/direct_sound_samples/cries/mega_ampharos.bin" - - .align 2 -Cry_SteelixMega:: - .incbin "sound/direct_sound_samples/cries/mega_steelix.bin" - - .align 2 -Cry_ScizorMega:: - .incbin "sound/direct_sound_samples/cries/mega_scizor.bin" - - .align 2 -Cry_HeracrossMega:: - .incbin "sound/direct_sound_samples/cries/mega_heracross.bin" - - .align 2 -Cry_HoundoomMega:: - .incbin "sound/direct_sound_samples/cries/mega_houndoom.bin" - - .align 2 -Cry_TyranitarMega:: - .incbin "sound/direct_sound_samples/cries/mega_tyranitar.bin" - - .align 2 -Cry_SceptileMega:: - .incbin "sound/direct_sound_samples/cries/mega_sceptile.bin" - - .align 2 -Cry_BlazikenMega:: - .incbin "sound/direct_sound_samples/cries/mega_blaziken.bin" - - .align 2 -Cry_SwampertMega:: - .incbin "sound/direct_sound_samples/cries/mega_swampert.bin" - - .align 2 -Cry_GardevoirMega:: - .incbin "sound/direct_sound_samples/cries/mega_gardevoir.bin" - - .align 2 -Cry_SableyeMega:: - .incbin "sound/direct_sound_samples/cries/mega_sableye.bin" - - .align 2 -Cry_MawileMega:: - .incbin "sound/direct_sound_samples/cries/mega_mawile.bin" - - .align 2 -Cry_AggronMega:: - .incbin "sound/direct_sound_samples/cries/mega_aggron.bin" - - .align 2 -Cry_MedichamMega:: - .incbin "sound/direct_sound_samples/cries/mega_medicham.bin" - - .align 2 -Cry_ManectricMega:: - .incbin "sound/direct_sound_samples/cries/mega_manectric.bin" - - .align 2 -Cry_SharpedoMega:: - .incbin "sound/direct_sound_samples/cries/mega_sharpedo.bin" - - .align 2 -Cry_CameruptMega:: - .incbin "sound/direct_sound_samples/cries/mega_camerupt.bin" - - .align 2 -Cry_AltariaMega:: - .incbin "sound/direct_sound_samples/cries/mega_altaria.bin" - - .align 2 -Cry_BanetteMega:: - .incbin "sound/direct_sound_samples/cries/mega_banette.bin" - - .align 2 -Cry_AbsolMega:: - .incbin "sound/direct_sound_samples/cries/mega_absol.bin" - - .align 2 -Cry_GlalieMega:: - .incbin "sound/direct_sound_samples/cries/mega_glalie.bin" - - .align 2 -Cry_SalamenceMega:: - .incbin "sound/direct_sound_samples/cries/mega_salamence.bin" - - .align 2 -Cry_MetagrossMega:: - .incbin "sound/direct_sound_samples/cries/mega_metagross.bin" - - .align 2 -Cry_LatiasMega:: - .incbin "sound/direct_sound_samples/cries/mega_latias.bin" - - .align 2 -Cry_LatiosMega:: - .incbin "sound/direct_sound_samples/cries/mega_latios.bin" - -.if P_GEN_4_POKEMON == TRUE - .align 2 -Cry_LopunnyMega:: - .incbin "sound/direct_sound_samples/cries/mega_lopunny.bin" - - .align 2 -Cry_GarchompMega:: - .incbin "sound/direct_sound_samples/cries/mega_garchomp.bin" - - .align 2 -Cry_LucarioMega:: - .incbin "sound/direct_sound_samples/cries/mega_lucario.bin" - - .align 2 -Cry_AbomasnowMega:: - .incbin "sound/direct_sound_samples/cries/mega_abomasnow.bin" - - .align 2 -Cry_GalladeMega:: - .incbin "sound/direct_sound_samples/cries/mega_gallade.bin" -.endif - -.if P_GEN_5_POKEMON == TRUE - .align 2 -Cry_AudinoMega:: - .incbin "sound/direct_sound_samples/cries/mega_audino.bin" -.endif - -.if P_GEN_6_POKEMON == TRUE - .align 2 -Cry_DiancieMega:: - .incbin "sound/direct_sound_samples/cries/mega_diancie.bin" -.endif - - .align 2 -Cry_RayquazaMega:: - .incbin "sound/direct_sound_samples/cries/mega_rayquaza.bin" - - .align 2 -Cry_KyogrePrimal:: - .incbin "sound/direct_sound_samples/cries/primal_kyogre.bin" - - .align 2 -Cry_GroudonPrimal:: - .incbin "sound/direct_sound_samples/cries/primal_groudon.bin" - - .align 2 -Cry_SlowpokeGalarian:: - .incbin "sound/direct_sound_samples/cries/slowpoke_galarian.bin" - -.if P_GEN_4_POKEMON == TRUE - .align 2 -Cry_ShayminSky:: - .incbin "sound/direct_sound_samples/cries/shaymin_sky.bin" -.endif - -.if P_GEN_5_POKEMON == TRUE - .align 2 -Cry_TornadusTherian:: - .incbin "sound/direct_sound_samples/cries/tornadus_therian.bin" - - .align 2 -Cry_ThundurusTherian:: - .incbin "sound/direct_sound_samples/cries/thundurus_therian.bin" - - .align 2 -Cry_LandorusTherian:: - .incbin "sound/direct_sound_samples/cries/landorus_therian.bin" - - .align 2 -Cry_EnamorusTherian:: - .incbin "sound/direct_sound_samples/cries/enamorus_therian.bin" - - .align 2 -Cry_KyuremWhite:: - .incbin "sound/direct_sound_samples/cries/kyurem_white.bin" - - .align 2 -Cry_KyuremBlack:: - .incbin "sound/direct_sound_samples/cries/kyurem_black.bin" -.endif - -.if P_GEN_6_POKEMON == TRUE - .align 2 -Cry_FloetteEternalFlower:: - .incbin "sound/direct_sound_samples/cries/floette_eternal_flower.bin" - - .align 2 -Cry_PumpkabooSuper:: - .incbin "sound/direct_sound_samples/cries/pumpkaboo_super.bin" - - .align 2 -Cry_GourgeistSuper:: - .incbin "sound/direct_sound_samples/cries/gourgeist_super.bin" - - .align 2 -Cry_Zygarde10:: - .incbin "sound/direct_sound_samples/cries/zygarde_10.bin" - - .align 2 -Cry_ZygardeComplete:: - .incbin "sound/direct_sound_samples/cries/zygarde_complete.bin" - - .align 2 -Cry_HoopaUnbound:: - .incbin "sound/direct_sound_samples/cries/hoopa_unbound.bin" -.endif - -.if P_GEN_7_POKEMON == TRUE - .align 2 -Cry_OricorioPomPom:: - .incbin "sound/direct_sound_samples/cries/oricorio_pom_pom.bin" - - .align 2 -Cry_OricorioPau:: - .incbin "sound/direct_sound_samples/cries/oricorio_pau.bin" - - .align 2 -Cry_OricorioSensu:: - .incbin "sound/direct_sound_samples/cries/oricorio_sensu.bin" - - .align 2 -Cry_LycanrocMidnight:: - .incbin "sound/direct_sound_samples/cries/lycanroc_midnight.bin" - - .align 2 -Cry_LycanrocDusk:: - .incbin "sound/direct_sound_samples/cries/lycanroc_dusk.bin" - - .align 2 -Cry_WishiwashiSchool:: - .incbin "sound/direct_sound_samples/cries/wishiwashi_school.bin" - - .align 2 -Cry_NecrozmaDuskMane:: - .incbin "sound/direct_sound_samples/cries/necrozma_dusk_mane.bin" - - .align 2 -Cry_NecrozmaDawnWings:: - .incbin "sound/direct_sound_samples/cries/necrozma_dawn_wings.bin" - - .align 2 -Cry_NecrozmaUltra:: - .incbin "sound/direct_sound_samples/cries/necrozma_ultra.bin" -.endif - -.if P_GEN_8_POKEMON == TRUE - .align 2 -Cry_ToxtricityLowKey:: - .incbin "sound/direct_sound_samples/cries/toxtricity_low_key.bin" - - .align 2 -Cry_EiscueNoiceFace:: - .incbin "sound/direct_sound_samples/cries/eiscue_noice_face.bin" - - .align 2 -Cry_IndeedeeFemale:: - .incbin "sound/direct_sound_samples/cries/indeedee_female.bin" - - .align 2 -Cry_MorpekoHangry:: - .incbin "sound/direct_sound_samples/cries/morpeko_hangry.bin" - - .align 2 -Cry_ZacianCrownedSword:: - .incbin "sound/direct_sound_samples/cries/zacian_crowned_sword.bin" - - .align 2 -Cry_ZamazentaCrownedShield:: - .incbin "sound/direct_sound_samples/cries/zamazenta_crowned_shield.bin" - - .align 2 -Cry_EternatusEternamax:: - .incbin "sound/direct_sound_samples/cries/eternatus_eternamax.bin" +Cry_UrshifuSingleStrikeStyle:: + .incbin "sound/direct_sound_samples/cries/urshifu_single_strike_style.bin" .align 2 Cry_UrshifuRapidStrikeStyle:: .incbin "sound/direct_sound_samples/cries/urshifu_rapid_strike_style.bin" +.endif @ P_FAMILY_KUBFU +.if P_FAMILY_ZARUDE == TRUE + .align 2 +Cry_Zarude:: + .incbin "sound/direct_sound_samples/cries/zarude.bin" +.endif @ P_FAMILY_ZARUDE + +.if P_FAMILY_REGIELEKI == TRUE + .align 2 +Cry_Regieleki:: + .incbin "sound/direct_sound_samples/cries/regieleki.bin" +.endif @ P_FAMILY_REGIELEKI + +.if P_FAMILY_REGIDRAGO == TRUE + .align 2 +Cry_Regidrago:: + .incbin "sound/direct_sound_samples/cries/regidrago.bin" +.endif @ P_FAMILY_REGIDRAGO + +.if P_FAMILY_GLASTRIER == TRUE + .align 2 +Cry_Glastrier:: + .incbin "sound/direct_sound_samples/cries/glastrier.bin" +.endif @ P_FAMILY_GLASTRIER + +.if P_FAMILY_SPECTRIER == TRUE + .align 2 +Cry_Spectrier:: + .incbin "sound/direct_sound_samples/cries/spectrier.bin" +.endif @ P_FAMILY_SPECTRIER + +.if P_FAMILY_CALYREX == TRUE + .align 2 +Cry_Calyrex:: + .incbin "sound/direct_sound_samples/cries/calyrex.bin" + +.if P_FUSION_FORMS == TRUE .align 2 Cry_CalyrexIceRider:: .incbin "sound/direct_sound_samples/cries/calyrex_ice_rider.bin" @@ -4364,7 +5521,594 @@ Cry_CalyrexIceRider:: Cry_CalyrexShadowRider:: .incbin "sound/direct_sound_samples/cries/calyrex_shadow_rider.bin" -.endif +.endif @ P_FUSION_FORMS +.endif @ P_FAMILY_CALYREX + +.if P_FAMILY_ENAMORUS == TRUE + .align 2 +Cry_EnamorusIncarnate:: + .incbin "sound/direct_sound_samples/cries/enamorus_incarnate.bin" + + .align 2 +Cry_EnamorusTherian:: + .incbin "sound/direct_sound_samples/cries/enamorus_therian.bin" +.endif @ P_FAMILY_ENAMORUS + +.if P_FAMILY_SPRIGATITO == TRUE + .align 2 +Cry_Sprigatito:: + .incbin "sound/direct_sound_samples/cries/sprigatito.bin" + + .align 2 +Cry_Floragato:: + .incbin "sound/direct_sound_samples/cries/floragato.bin" + + .align 2 +Cry_Meowscarada:: + .incbin "sound/direct_sound_samples/cries/meowscarada.bin" +.endif @ P_FAMILY_SPRIGATITO + +.if P_FAMILY_FUECOCO == TRUE + .align 2 +Cry_Fuecoco:: + .incbin "sound/direct_sound_samples/cries/fuecoco.bin" + + .align 2 +Cry_Crocalor:: + .incbin "sound/direct_sound_samples/cries/crocalor.bin" + + .align 2 +Cry_Skeledirge:: + .incbin "sound/direct_sound_samples/cries/skeledirge.bin" +.endif @ P_FAMILY_FUECOCO + +.if P_FAMILY_QUAXLY == TRUE + .align 2 +Cry_Quaxly:: + .incbin "sound/direct_sound_samples/cries/quaxly.bin" + + .align 2 +Cry_Quaxwell:: + .incbin "sound/direct_sound_samples/cries/quaxwell.bin" + + .align 2 +Cry_Quaquaval:: + .incbin "sound/direct_sound_samples/cries/quaquaval.bin" +.endif @ P_FAMILY_QUAXLY + +.if P_FAMILY_LECHONK == TRUE + .align 2 +Cry_Lechonk:: + .incbin "sound/direct_sound_samples/cries/lechonk.bin" + + .align 2 +Cry_OinkologneMale:: + .incbin "sound/direct_sound_samples/cries/oinkologne_male.bin" + + .align 2 +Cry_OinkologneFemale:: + .incbin "sound/direct_sound_samples/cries/oinkologne_female.bin" +.endif @ P_FAMILY_LECHONK + +.if P_FAMILY_TAROUNTULA == TRUE + .align 2 +Cry_Tarountula:: + .incbin "sound/direct_sound_samples/cries/tarountula.bin" + + .align 2 +Cry_Spidops:: + .incbin "sound/direct_sound_samples/cries/spidops.bin" +.endif @ P_FAMILY_TAROUNTULA + +.if P_FAMILY_NYMBLE == TRUE + .align 2 +Cry_Nymble:: + .incbin "sound/direct_sound_samples/cries/nymble.bin" + + .align 2 +Cry_Lokix:: + .incbin "sound/direct_sound_samples/cries/lokix.bin" +.endif @ P_FAMILY_NYMBLE + +.if P_FAMILY_PAWMI == TRUE + .align 2 +Cry_Pawmi:: + .incbin "sound/direct_sound_samples/cries/pawmi.bin" + + .align 2 +Cry_Pawmo:: + .incbin "sound/direct_sound_samples/cries/pawmo.bin" + + .align 2 +Cry_Pawmot:: + .incbin "sound/direct_sound_samples/cries/pawmot.bin" +.endif @ P_FAMILY_PAWMI + +.if P_FAMILY_TANDEMAUS == TRUE + .align 2 +Cry_Tandemaus:: + .incbin "sound/direct_sound_samples/cries/tandemaus.bin" + + .align 2 +Cry_MausholdFamilyOfThree:: + .incbin "sound/direct_sound_samples/cries/maushold_family_of_three.bin" + + .align 2 +Cry_MausholdFamilyOfFour:: + .incbin "sound/direct_sound_samples/cries/maushold_family_of_four.bin" +.endif @ P_FAMILY_TANDEMAUS + +.if P_FAMILY_FIDOUGH == TRUE + .align 2 +Cry_Fidough:: + .incbin "sound/direct_sound_samples/cries/fidough.bin" + + .align 2 +Cry_Dachsbun:: + .incbin "sound/direct_sound_samples/cries/dachsbun.bin" +.endif @ P_FAMILY_FIDOUGH + +.if P_FAMILY_SMOLIV == TRUE + .align 2 +Cry_Smoliv:: + .incbin "sound/direct_sound_samples/cries/smoliv.bin" + + .align 2 +Cry_Dolliv:: + .incbin "sound/direct_sound_samples/cries/dolliv.bin" + + .align 2 +Cry_Arboliva:: + .incbin "sound/direct_sound_samples/cries/arboliva.bin" +.endif @ P_FAMILY_SMOLIV + +.if P_FAMILY_SQUAWKABILLY == TRUE + .align 2 +Cry_Squawkabilly:: + .incbin "sound/direct_sound_samples/cries/squawkabilly.bin" +.endif @ P_FAMILY_SQUAWKABILLY + +.if P_FAMILY_NACLI == TRUE + .align 2 +Cry_Nacli:: + .incbin "sound/direct_sound_samples/cries/nacli.bin" + + .align 2 +Cry_Naclstack:: + .incbin "sound/direct_sound_samples/cries/naclstack.bin" + + .align 2 +Cry_Garganacl:: + .incbin "sound/direct_sound_samples/cries/garganacl.bin" +.endif @ P_FAMILY_NACLI + +.if P_FAMILY_CHARCADET == TRUE + .align 2 +Cry_Charcadet:: + .incbin "sound/direct_sound_samples/cries/charcadet.bin" + + .align 2 +Cry_Armarouge:: + .incbin "sound/direct_sound_samples/cries/armarouge.bin" + + .align 2 +Cry_Ceruledge:: + .incbin "sound/direct_sound_samples/cries/ceruledge.bin" +.endif @ P_FAMILY_CHARCADET + +.if P_FAMILY_TADBULB == TRUE + .align 2 +Cry_Tadbulb:: + .incbin "sound/direct_sound_samples/cries/tadbulb.bin" + + .align 2 +Cry_Bellibolt:: + .incbin "sound/direct_sound_samples/cries/bellibolt.bin" +.endif @ P_FAMILY_TADBULB + +.if P_FAMILY_WATTREL == TRUE + .align 2 +Cry_Wattrel:: + .incbin "sound/direct_sound_samples/cries/wattrel.bin" + + .align 2 +Cry_Kilowattrel:: + .incbin "sound/direct_sound_samples/cries/kilowattrel.bin" +.endif @ P_FAMILY_WATTREL + +.if P_FAMILY_MASCHIFF == TRUE + .align 2 +Cry_Maschiff:: + .incbin "sound/direct_sound_samples/cries/maschiff.bin" + + .align 2 +Cry_Mabosstiff:: + .incbin "sound/direct_sound_samples/cries/mabosstiff.bin" +.endif @ P_FAMILY_MASCHIFF + +.if P_FAMILY_SHROODLE == TRUE + .align 2 +Cry_Shroodle:: + .incbin "sound/direct_sound_samples/cries/shroodle.bin" + + .align 2 +Cry_Grafaiai:: + .incbin "sound/direct_sound_samples/cries/grafaiai.bin" +.endif @ P_FAMILY_SHROODLE + +.if P_FAMILY_BRAMBLIN == TRUE + .align 2 +Cry_Bramblin:: + .incbin "sound/direct_sound_samples/cries/bramblin.bin" + + .align 2 +Cry_Brambleghast:: + .incbin "sound/direct_sound_samples/cries/brambleghast.bin" +.endif @ P_FAMILY_BRAMBLIN + +.if P_FAMILY_TOEDSCOOL == TRUE + .align 2 +Cry_Toedscool:: + .incbin "sound/direct_sound_samples/cries/toedscool.bin" + + .align 2 +Cry_Toedscruel:: + .incbin "sound/direct_sound_samples/cries/toedscruel.bin" +.endif @ P_FAMILY_TOEDSCOOL + +.if P_FAMILY_KLAWF == TRUE + .align 2 +Cry_Klawf:: + .incbin "sound/direct_sound_samples/cries/klawf.bin" +.endif @ P_FAMILY_KLAWF + +.if P_FAMILY_CAPSAKID == TRUE + .align 2 +Cry_Capsakid:: + .incbin "sound/direct_sound_samples/cries/capsakid.bin" + + .align 2 +Cry_Scovillain:: + .incbin "sound/direct_sound_samples/cries/scovillain.bin" +.endif @ P_FAMILY_CAPSAKID + +.if P_FAMILY_RELLOR == TRUE + .align 2 +Cry_Rellor:: + .incbin "sound/direct_sound_samples/cries/rellor.bin" + + .align 2 +Cry_Rabsca:: + .incbin "sound/direct_sound_samples/cries/rabsca.bin" +.endif @ P_FAMILY_RELLOR + +.if P_FAMILY_FLITTLE == TRUE + .align 2 +Cry_Flittle:: + .incbin "sound/direct_sound_samples/cries/flittle.bin" + + .align 2 +Cry_Espathra:: + .incbin "sound/direct_sound_samples/cries/espathra.bin" +.endif @ P_FAMILY_FLITTLE + +.if P_FAMILY_TINKATINK == TRUE + .align 2 +Cry_Tinkatink:: + .incbin "sound/direct_sound_samples/cries/tinkatink.bin" + + .align 2 +Cry_Tinkatuff:: + .incbin "sound/direct_sound_samples/cries/tinkatuff.bin" + + .align 2 +Cry_Tinkaton:: + .incbin "sound/direct_sound_samples/cries/tinkaton.bin" +.endif @ P_FAMILY_TINKATINK + +.if P_FAMILY_WIGLETT == TRUE + .align 2 +Cry_Wiglett:: + .incbin "sound/direct_sound_samples/cries/wiglett.bin" + + .align 2 +Cry_Wugtrio:: + .incbin "sound/direct_sound_samples/cries/wugtrio.bin" +.endif @ P_FAMILY_WIGLETT + +.if P_FAMILY_BOMBIRDIER == TRUE + .align 2 +Cry_Bombirdier:: + .incbin "sound/direct_sound_samples/cries/bombirdier.bin" +.endif @ P_FAMILY_BOMBIRDIER + +.if P_FAMILY_FINIZEN == TRUE + .align 2 +Cry_Finizen:: + .incbin "sound/direct_sound_samples/cries/finizen.bin" + + .align 2 +Cry_PalafinZero:: + .incbin "sound/direct_sound_samples/cries/palafin_zero.bin" + + .align 2 +Cry_PalafinHero:: + .incbin "sound/direct_sound_samples/cries/palafin_hero.bin" +.endif @ P_FAMILY_FINIZEN + +.if P_FAMILY_VAROOM == TRUE + .align 2 +Cry_Varoom:: + .incbin "sound/direct_sound_samples/cries/varoom.bin" + + .align 2 +Cry_Revavroom:: + .incbin "sound/direct_sound_samples/cries/revavroom.bin" +.endif @ P_FAMILY_VAROOM + +.if P_FAMILY_CYCLIZAR == TRUE + .align 2 +Cry_Cyclizar:: + .incbin "sound/direct_sound_samples/cries/cyclizar.bin" +.endif @ P_FAMILY_CYCLIZAR + +.if P_FAMILY_ORTHWORM == TRUE + .align 2 +Cry_Orthworm:: + .incbin "sound/direct_sound_samples/cries/orthworm.bin" +.endif @ P_FAMILY_ORTHWORM + +.if P_FAMILY_GLIMMET == TRUE + .align 2 +Cry_Glimmet:: + .incbin "sound/direct_sound_samples/cries/glimmet.bin" + + .align 2 +Cry_Glimmora:: + .incbin "sound/direct_sound_samples/cries/glimmora.bin" +.endif @ P_FAMILY_GLIMMET + +.if P_FAMILY_GREAVARD == TRUE + .align 2 +Cry_Greavard:: + .incbin "sound/direct_sound_samples/cries/greavard.bin" + + .align 2 +Cry_Houndstone:: + .incbin "sound/direct_sound_samples/cries/houndstone.bin" +.endif @ P_FAMILY_GREAVARD + +.if P_FAMILY_FLAMIGO == TRUE + .align 2 +Cry_Flamigo:: + .incbin "sound/direct_sound_samples/cries/flamigo.bin" +.endif @ P_FAMILY_FLAMIGO + +.if P_FAMILY_CETODDLE == TRUE + .align 2 +Cry_Cetoddle:: + .incbin "sound/direct_sound_samples/cries/cetoddle.bin" + + .align 2 +Cry_Cetitan:: + .incbin "sound/direct_sound_samples/cries/cetitan.bin" +.endif @ P_FAMILY_CETODDLE + +.if P_FAMILY_VELUZA == TRUE + .align 2 +Cry_Veluza:: + .incbin "sound/direct_sound_samples/cries/veluza.bin" +.endif @ P_FAMILY_VELUZA + +.if P_FAMILY_DONDOZO == TRUE + .align 2 +Cry_Dondozo:: + .incbin "sound/direct_sound_samples/cries/dondozo.bin" +.endif @ P_FAMILY_DONDOZO + +.if P_FAMILY_TATSUGIRI == TRUE + .align 2 +Cry_TatsugiriCurly:: + .incbin "sound/direct_sound_samples/cries/tatsugiri_curly.bin" + + .align 2 +Cry_TatsugiriDroopy:: + .incbin "sound/direct_sound_samples/cries/tatsugiri_droopy.bin" + + .align 2 +Cry_TatsugiriStretchy:: + .incbin "sound/direct_sound_samples/cries/tatsugiri_stretchy.bin" +.endif @ P_FAMILY_TATSUGIRI + +.if P_FAMILY_GREAT_TUSK == TRUE + .align 2 +Cry_GreatTusk:: + .incbin "sound/direct_sound_samples/cries/great_tusk.bin" +.endif @ P_FAMILY_GREAT_TUSK + +.if P_FAMILY_SCREAM_TAIL == TRUE + .align 2 +Cry_ScreamTail:: + .incbin "sound/direct_sound_samples/cries/scream_tail.bin" +.endif @ P_FAMILY_SCREAM_TAIL + +.if P_FAMILY_BRUTE_BONNET == TRUE + .align 2 +Cry_BruteBonnet:: + .incbin "sound/direct_sound_samples/cries/brute_bonnet.bin" +.endif @ P_FAMILY_BRUTE_BONNET + +.if P_FAMILY_FLUTTER_MANE == TRUE + .align 2 +Cry_FlutterMane:: + .incbin "sound/direct_sound_samples/cries/flutter_mane.bin" +.endif @ P_FAMILY_FLUTTER_MANE + +.if P_FAMILY_SLITHER_WING == TRUE + .align 2 +Cry_SlitherWing:: + .incbin "sound/direct_sound_samples/cries/slither_wing.bin" +.endif @ P_FAMILY_SLITHER_WING + +.if P_FAMILY_SANDY_SHOCKS == TRUE + .align 2 +Cry_SandyShocks:: + .incbin "sound/direct_sound_samples/cries/sandy_shocks.bin" +.endif @ P_FAMILY_SANDY_SHOCKS + +.if P_FAMILY_IRON_TREADS == TRUE + .align 2 +Cry_IronTreads:: + .incbin "sound/direct_sound_samples/cries/iron_treads.bin" +.endif @ P_FAMILY_IRON_TREADS + +.if P_FAMILY_IRON_BUNDLE == TRUE + .align 2 +Cry_IronBundle:: + .incbin "sound/direct_sound_samples/cries/iron_bundle.bin" +.endif @ P_FAMILY_IRON_BUNDLE + +.if P_FAMILY_IRON_HANDS == TRUE + .align 2 +Cry_IronHands:: + .incbin "sound/direct_sound_samples/cries/iron_hands.bin" +.endif @ P_FAMILY_IRON_HANDS + +.if P_FAMILY_IRON_JUGULIS == TRUE + .align 2 +Cry_IronJugulis:: + .incbin "sound/direct_sound_samples/cries/iron_jugulis.bin" +.endif @ P_FAMILY_IRON_JUGULIS + +.if P_FAMILY_IRON_MOTH == TRUE + .align 2 +Cry_IronMoth:: + .incbin "sound/direct_sound_samples/cries/iron_moth.bin" +.endif @ P_FAMILY_IRON_MOTH + +.if P_FAMILY_IRON_THORNS == TRUE + .align 2 +Cry_IronThorns:: + .incbin "sound/direct_sound_samples/cries/iron_thorns.bin" +.endif @ P_FAMILY_IRON_THORNS + +.if P_FAMILY_FRIGIBAX == TRUE + .align 2 +Cry_Frigibax:: + .incbin "sound/direct_sound_samples/cries/frigibax.bin" + + .align 2 +Cry_Arctibax:: + .incbin "sound/direct_sound_samples/cries/arctibax.bin" + + .align 2 +Cry_Baxcalibur:: + .incbin "sound/direct_sound_samples/cries/baxcalibur.bin" +.endif @ P_FAMILY_FRIGIBAX + +.if P_FAMILY_GIMMIGHOUL == TRUE + .align 2 +Cry_Gimmighoul:: + .incbin "sound/direct_sound_samples/cries/gimmighoul.bin" + + .align 2 +Cry_Gholdengo:: + .incbin "sound/direct_sound_samples/cries/gholdengo.bin" +.endif @ P_FAMILY_GIMMIGHOUL + +.if P_FAMILY_WO_CHIEN == TRUE + .align 2 +Cry_WoChien:: + .incbin "sound/direct_sound_samples/cries/wo_chien.bin" +.endif @ P_FAMILY_WO_CHIEN + +.if P_FAMILY_CHIEN_PAO == TRUE + .align 2 +Cry_ChienPao:: + .incbin "sound/direct_sound_samples/cries/chien_pao.bin" +.endif @ P_FAMILY_CHIEN_PAO + +.if P_FAMILY_TING_LU == TRUE + .align 2 +Cry_TingLu:: + .incbin "sound/direct_sound_samples/cries/ting_lu.bin" +.endif @ P_FAMILY_TING_LU + +.if P_FAMILY_CHI_YU == TRUE + .align 2 +Cry_ChiYu:: + .incbin "sound/direct_sound_samples/cries/chi_yu.bin" +.endif @ P_FAMILY_CHI_YU + +.if P_FAMILY_ROARING_MOON == TRUE + .align 2 +Cry_RoaringMoon:: + .incbin "sound/direct_sound_samples/cries/roaring_moon.bin" +.endif @ P_FAMILY_ROARING_MOON + +.if P_FAMILY_IRON_VALIANT == TRUE + .align 2 +Cry_IronValiant:: + .incbin "sound/direct_sound_samples/cries/iron_valiant.bin" +.endif @ P_FAMILY_IRON_VALIANT + +.if P_FAMILY_KORAIDON == TRUE + .align 2 +Cry_Koraidon:: + .incbin "sound/direct_sound_samples/cries/koraidon.bin" +.endif @ P_FAMILY_KORAIDON + +.if P_FAMILY_MIRAIDON == TRUE + .align 2 +Cry_Miraidon:: + .incbin "sound/direct_sound_samples/cries/miraidon.bin" +.endif @ P_FAMILY_MIRAIDON + +.if P_FAMILY_WALKING_WAKE == TRUE + .align 2 +Cry_WalkingWake:: + .incbin "sound/direct_sound_samples/cries/walking_wake.bin" +.endif @ P_FAMILY_WALKING_WAKE + +.if P_FAMILY_IRON_LEAVES == TRUE + .align 2 +Cry_IronLeaves:: + .incbin "sound/direct_sound_samples/cries/iron_leaves.bin" +.endif @ P_FAMILY_IRON_LEAVES + +.if P_FAMILY_POLTCHAGEIST == TRUE + .align 2 +Cry_Poltchageist:: + .incbin "sound/direct_sound_samples/cries/poltchageist.bin" + + .align 2 +Cry_Sinistcha:: + .incbin "sound/direct_sound_samples/cries/sinistcha.bin" +.endif @ P_FAMILY_POLTCHAGEIST + +.if P_FAMILY_OKIDOGI == TRUE + .align 2 +Cry_Okidogi:: + .incbin "sound/direct_sound_samples/cries/okidogi.bin" +.endif @ P_FAMILY_OKIDOGI + +.if P_FAMILY_MUNKIDORI == TRUE + .align 2 +Cry_Munkidori:: + .incbin "sound/direct_sound_samples/cries/munkidori.bin" +.endif @ P_FAMILY_MUNKIDORI + +.if P_FAMILY_FEZANDIPITI == TRUE + .align 2 +Cry_Fezandipiti:: + .incbin "sound/direct_sound_samples/cries/fezandipiti.bin" +.endif @ P_FAMILY_FEZANDIPITI + +.if P_FAMILY_OGERPON == TRUE + .align 2 +Cry_Ogerpon:: + .incbin "sound/direct_sound_samples/cries/ogerpon.bin" +.endif @ P_FAMILY_OGERPON .align 2 DirectSoundWaveData_register_noise:: diff --git a/sound/direct_sound_samples/cries/abomasnow_mega.aif b/sound/direct_sound_samples/cries/abomasnow_mega.aif new file mode 100644 index 0000000000..11a0aec059 Binary files /dev/null and b/sound/direct_sound_samples/cries/abomasnow_mega.aif differ diff --git a/sound/direct_sound_samples/cries/absol_mega.aif b/sound/direct_sound_samples/cries/absol_mega.aif new file mode 100644 index 0000000000..415b6132f6 Binary files /dev/null and b/sound/direct_sound_samples/cries/absol_mega.aif differ diff --git a/sound/direct_sound_samples/cries/accelgor.aif b/sound/direct_sound_samples/cries/accelgor.aif index 7fb5e4c96a..39efe9c55e 100644 Binary files a/sound/direct_sound_samples/cries/accelgor.aif and b/sound/direct_sound_samples/cries/accelgor.aif differ diff --git a/sound/direct_sound_samples/cries/aerodactyl_mega.aif b/sound/direct_sound_samples/cries/aerodactyl_mega.aif new file mode 100644 index 0000000000..9aa15062ce Binary files /dev/null and b/sound/direct_sound_samples/cries/aerodactyl_mega.aif differ diff --git a/sound/direct_sound_samples/cries/aggron_mega.aif b/sound/direct_sound_samples/cries/aggron_mega.aif new file mode 100644 index 0000000000..0e1778509f Binary files /dev/null and b/sound/direct_sound_samples/cries/aggron_mega.aif differ diff --git a/sound/direct_sound_samples/cries/alakazam_mega.aif b/sound/direct_sound_samples/cries/alakazam_mega.aif new file mode 100644 index 0000000000..be09f22777 Binary files /dev/null and b/sound/direct_sound_samples/cries/alakazam_mega.aif differ diff --git a/sound/direct_sound_samples/cries/alomomola.aif b/sound/direct_sound_samples/cries/alomomola.aif index a12e3bc235..8f9ee13a3b 100644 Binary files a/sound/direct_sound_samples/cries/alomomola.aif and b/sound/direct_sound_samples/cries/alomomola.aif differ diff --git a/sound/direct_sound_samples/cries/altaria_mega.aif b/sound/direct_sound_samples/cries/altaria_mega.aif new file mode 100644 index 0000000000..bf2a7daec2 Binary files /dev/null and b/sound/direct_sound_samples/cries/altaria_mega.aif differ diff --git a/sound/direct_sound_samples/cries/amoonguss.aif b/sound/direct_sound_samples/cries/amoonguss.aif index fcdbea91eb..ddc8c6114b 100644 Binary files a/sound/direct_sound_samples/cries/amoonguss.aif and b/sound/direct_sound_samples/cries/amoonguss.aif differ diff --git a/sound/direct_sound_samples/cries/ampharos_mega.aif b/sound/direct_sound_samples/cries/ampharos_mega.aif new file mode 100644 index 0000000000..e24e628667 Binary files /dev/null and b/sound/direct_sound_samples/cries/ampharos_mega.aif differ diff --git a/sound/direct_sound_samples/cries/annihilape.aif b/sound/direct_sound_samples/cries/annihilape.aif new file mode 100644 index 0000000000..889c521929 Binary files /dev/null and b/sound/direct_sound_samples/cries/annihilape.aif differ diff --git a/sound/direct_sound_samples/cries/applin.aif b/sound/direct_sound_samples/cries/applin.aif index f7461b1b60..828eeaeafa 100644 Binary files a/sound/direct_sound_samples/cries/applin.aif and b/sound/direct_sound_samples/cries/applin.aif differ diff --git a/sound/direct_sound_samples/cries/araquanid.aif b/sound/direct_sound_samples/cries/araquanid.aif index ff138d5ce7..0efccf6a4e 100644 Binary files a/sound/direct_sound_samples/cries/araquanid.aif and b/sound/direct_sound_samples/cries/araquanid.aif differ diff --git a/sound/direct_sound_samples/cries/arboliva.aif b/sound/direct_sound_samples/cries/arboliva.aif new file mode 100644 index 0000000000..1b73da2ec9 Binary files /dev/null and b/sound/direct_sound_samples/cries/arboliva.aif differ diff --git a/sound/direct_sound_samples/cries/archen.aif b/sound/direct_sound_samples/cries/archen.aif index 2f008dcf75..fd5b7729b2 100644 Binary files a/sound/direct_sound_samples/cries/archen.aif and b/sound/direct_sound_samples/cries/archen.aif differ diff --git a/sound/direct_sound_samples/cries/archeops.aif b/sound/direct_sound_samples/cries/archeops.aif index f721fe2d71..7b65583da9 100644 Binary files a/sound/direct_sound_samples/cries/archeops.aif and b/sound/direct_sound_samples/cries/archeops.aif differ diff --git a/sound/direct_sound_samples/cries/arctibax.aif b/sound/direct_sound_samples/cries/arctibax.aif new file mode 100644 index 0000000000..e0b31b19ab Binary files /dev/null and b/sound/direct_sound_samples/cries/arctibax.aif differ diff --git a/sound/direct_sound_samples/cries/arctovish.aif b/sound/direct_sound_samples/cries/arctovish.aif index 2f5a78bab8..02d83dbb55 100644 Binary files a/sound/direct_sound_samples/cries/arctovish.aif and b/sound/direct_sound_samples/cries/arctovish.aif differ diff --git a/sound/direct_sound_samples/cries/armarouge.aif b/sound/direct_sound_samples/cries/armarouge.aif new file mode 100644 index 0000000000..578c73392b Binary files /dev/null and b/sound/direct_sound_samples/cries/armarouge.aif differ diff --git a/sound/direct_sound_samples/cries/arrokuda.aif b/sound/direct_sound_samples/cries/arrokuda.aif index 7cb9470b3f..863b6d2fb5 100644 Binary files a/sound/direct_sound_samples/cries/arrokuda.aif and b/sound/direct_sound_samples/cries/arrokuda.aif differ diff --git a/sound/direct_sound_samples/cries/audino.aif b/sound/direct_sound_samples/cries/audino.aif index 278fc4ca12..7430d0b680 100644 Binary files a/sound/direct_sound_samples/cries/audino.aif and b/sound/direct_sound_samples/cries/audino.aif differ diff --git a/sound/direct_sound_samples/cries/audino_mega.aif b/sound/direct_sound_samples/cries/audino_mega.aif new file mode 100644 index 0000000000..04d815001e Binary files /dev/null and b/sound/direct_sound_samples/cries/audino_mega.aif differ diff --git a/sound/direct_sound_samples/cries/axew.aif b/sound/direct_sound_samples/cries/axew.aif index 1fbaa3adac..1dbe950c38 100644 Binary files a/sound/direct_sound_samples/cries/axew.aif and b/sound/direct_sound_samples/cries/axew.aif differ diff --git a/sound/direct_sound_samples/cries/banette_mega.aif b/sound/direct_sound_samples/cries/banette_mega.aif new file mode 100644 index 0000000000..974f74c31e Binary files /dev/null and b/sound/direct_sound_samples/cries/banette_mega.aif differ diff --git a/sound/direct_sound_samples/cries/basculegion.aif b/sound/direct_sound_samples/cries/basculegion.aif index a1405ee8d7..80551d7904 100644 Binary files a/sound/direct_sound_samples/cries/basculegion.aif and b/sound/direct_sound_samples/cries/basculegion.aif differ diff --git a/sound/direct_sound_samples/cries/basculin.aif b/sound/direct_sound_samples/cries/basculin.aif index afeef551ee..cb2184d82d 100644 Binary files a/sound/direct_sound_samples/cries/basculin.aif and b/sound/direct_sound_samples/cries/basculin.aif differ diff --git a/sound/direct_sound_samples/cries/baxcalibur.aif b/sound/direct_sound_samples/cries/baxcalibur.aif new file mode 100644 index 0000000000..fd8f5eff6d Binary files /dev/null and b/sound/direct_sound_samples/cries/baxcalibur.aif differ diff --git a/sound/direct_sound_samples/cries/beartic.aif b/sound/direct_sound_samples/cries/beartic.aif index 2b5fd99af6..45d1e8bc5e 100644 Binary files a/sound/direct_sound_samples/cries/beartic.aif and b/sound/direct_sound_samples/cries/beartic.aif differ diff --git a/sound/direct_sound_samples/cries/beedrill_mega.aif b/sound/direct_sound_samples/cries/beedrill_mega.aif new file mode 100644 index 0000000000..8072fef185 Binary files /dev/null and b/sound/direct_sound_samples/cries/beedrill_mega.aif differ diff --git a/sound/direct_sound_samples/cries/beheeyem.aif b/sound/direct_sound_samples/cries/beheeyem.aif index c5bf9839ff..3ddec74ab6 100644 Binary files a/sound/direct_sound_samples/cries/beheeyem.aif and b/sound/direct_sound_samples/cries/beheeyem.aif differ diff --git a/sound/direct_sound_samples/cries/bellibolt.aif b/sound/direct_sound_samples/cries/bellibolt.aif new file mode 100644 index 0000000000..b7fc6d0175 Binary files /dev/null and b/sound/direct_sound_samples/cries/bellibolt.aif differ diff --git a/sound/direct_sound_samples/cries/bisharp.aif b/sound/direct_sound_samples/cries/bisharp.aif index ac3bf36d33..edbcc7b296 100644 Binary files a/sound/direct_sound_samples/cries/bisharp.aif and b/sound/direct_sound_samples/cries/bisharp.aif differ diff --git a/sound/direct_sound_samples/cries/blastoise_mega.aif b/sound/direct_sound_samples/cries/blastoise_mega.aif new file mode 100644 index 0000000000..a25f49c30c Binary files /dev/null and b/sound/direct_sound_samples/cries/blastoise_mega.aif differ diff --git a/sound/direct_sound_samples/cries/blaziken_mega.aif b/sound/direct_sound_samples/cries/blaziken_mega.aif new file mode 100644 index 0000000000..ef5f08153e Binary files /dev/null and b/sound/direct_sound_samples/cries/blaziken_mega.aif differ diff --git a/sound/direct_sound_samples/cries/blitzle.aif b/sound/direct_sound_samples/cries/blitzle.aif index c7db171eb1..40e4672af7 100644 Binary files a/sound/direct_sound_samples/cries/blitzle.aif and b/sound/direct_sound_samples/cries/blitzle.aif differ diff --git a/sound/direct_sound_samples/cries/boldore.aif b/sound/direct_sound_samples/cries/boldore.aif index e275af2097..436cb1219f 100644 Binary files a/sound/direct_sound_samples/cries/boldore.aif and b/sound/direct_sound_samples/cries/boldore.aif differ diff --git a/sound/direct_sound_samples/cries/bombirdier.aif b/sound/direct_sound_samples/cries/bombirdier.aif new file mode 100644 index 0000000000..27f334acbb Binary files /dev/null and b/sound/direct_sound_samples/cries/bombirdier.aif differ diff --git a/sound/direct_sound_samples/cries/bouffalant.aif b/sound/direct_sound_samples/cries/bouffalant.aif index b4dc574ce4..fbca85e639 100644 Binary files a/sound/direct_sound_samples/cries/bouffalant.aif and b/sound/direct_sound_samples/cries/bouffalant.aif differ diff --git a/sound/direct_sound_samples/cries/brambleghast.aif b/sound/direct_sound_samples/cries/brambleghast.aif new file mode 100644 index 0000000000..404e7d1dc6 Binary files /dev/null and b/sound/direct_sound_samples/cries/brambleghast.aif differ diff --git a/sound/direct_sound_samples/cries/bramblin.aif b/sound/direct_sound_samples/cries/bramblin.aif new file mode 100644 index 0000000000..0c8a4a5dab Binary files /dev/null and b/sound/direct_sound_samples/cries/bramblin.aif differ diff --git a/sound/direct_sound_samples/cries/braviary.aif b/sound/direct_sound_samples/cries/braviary.aif index d352294484..8c20dd2b73 100644 Binary files a/sound/direct_sound_samples/cries/braviary.aif and b/sound/direct_sound_samples/cries/braviary.aif differ diff --git a/sound/direct_sound_samples/cries/brute_bonnet.aif b/sound/direct_sound_samples/cries/brute_bonnet.aif new file mode 100644 index 0000000000..3a6369e8be Binary files /dev/null and b/sound/direct_sound_samples/cries/brute_bonnet.aif differ diff --git a/sound/direct_sound_samples/cries/calyrex_ice_rider.aif b/sound/direct_sound_samples/cries/calyrex_ice_rider.aif index e911a2fe15..2a27827908 100644 Binary files a/sound/direct_sound_samples/cries/calyrex_ice_rider.aif and b/sound/direct_sound_samples/cries/calyrex_ice_rider.aif differ diff --git a/sound/direct_sound_samples/cries/calyrex_shadow_rider.aif b/sound/direct_sound_samples/cries/calyrex_shadow_rider.aif index 96b7b7266b..07cc384332 100644 Binary files a/sound/direct_sound_samples/cries/calyrex_shadow_rider.aif and b/sound/direct_sound_samples/cries/calyrex_shadow_rider.aif differ diff --git a/sound/direct_sound_samples/cries/camerupt_mega.aif b/sound/direct_sound_samples/cries/camerupt_mega.aif new file mode 100644 index 0000000000..0c7966b8ea Binary files /dev/null and b/sound/direct_sound_samples/cries/camerupt_mega.aif differ diff --git a/sound/direct_sound_samples/cries/capsakid.aif b/sound/direct_sound_samples/cries/capsakid.aif new file mode 100644 index 0000000000..7a906ead56 Binary files /dev/null and b/sound/direct_sound_samples/cries/capsakid.aif differ diff --git a/sound/direct_sound_samples/cries/carracosta.aif b/sound/direct_sound_samples/cries/carracosta.aif index 8f676d83e3..dc379b5fab 100644 Binary files a/sound/direct_sound_samples/cries/carracosta.aif and b/sound/direct_sound_samples/cries/carracosta.aif differ diff --git a/sound/direct_sound_samples/cries/ceruledge.aif b/sound/direct_sound_samples/cries/ceruledge.aif new file mode 100644 index 0000000000..86048249dd Binary files /dev/null and b/sound/direct_sound_samples/cries/ceruledge.aif differ diff --git a/sound/direct_sound_samples/cries/cetitan.aif b/sound/direct_sound_samples/cries/cetitan.aif new file mode 100644 index 0000000000..45302ff844 Binary files /dev/null and b/sound/direct_sound_samples/cries/cetitan.aif differ diff --git a/sound/direct_sound_samples/cries/cetoddle.aif b/sound/direct_sound_samples/cries/cetoddle.aif new file mode 100644 index 0000000000..f85f3d201f Binary files /dev/null and b/sound/direct_sound_samples/cries/cetoddle.aif differ diff --git a/sound/direct_sound_samples/cries/charcadet.aif b/sound/direct_sound_samples/cries/charcadet.aif new file mode 100644 index 0000000000..60f5512ca6 Binary files /dev/null and b/sound/direct_sound_samples/cries/charcadet.aif differ diff --git a/sound/direct_sound_samples/cries/charizard_mega_x.aif b/sound/direct_sound_samples/cries/charizard_mega_x.aif new file mode 100644 index 0000000000..5f88d12355 Binary files /dev/null and b/sound/direct_sound_samples/cries/charizard_mega_x.aif differ diff --git a/sound/direct_sound_samples/cries/charizard_mega_y.aif b/sound/direct_sound_samples/cries/charizard_mega_y.aif new file mode 100644 index 0000000000..e04d518ee1 Binary files /dev/null and b/sound/direct_sound_samples/cries/charizard_mega_y.aif differ diff --git a/sound/direct_sound_samples/cries/chi_yu.aif b/sound/direct_sound_samples/cries/chi_yu.aif new file mode 100644 index 0000000000..55ca0598b7 Binary files /dev/null and b/sound/direct_sound_samples/cries/chi_yu.aif differ diff --git a/sound/direct_sound_samples/cries/chien_pao.aif b/sound/direct_sound_samples/cries/chien_pao.aif new file mode 100644 index 0000000000..1e3d573881 Binary files /dev/null and b/sound/direct_sound_samples/cries/chien_pao.aif differ diff --git a/sound/direct_sound_samples/cries/cinccino.aif b/sound/direct_sound_samples/cries/cinccino.aif index 005771f78a..b4df2ea076 100644 Binary files a/sound/direct_sound_samples/cries/cinccino.aif and b/sound/direct_sound_samples/cries/cinccino.aif differ diff --git a/sound/direct_sound_samples/cries/clobbopus.aif b/sound/direct_sound_samples/cries/clobbopus.aif index 363dba933c..886a5208be 100644 Binary files a/sound/direct_sound_samples/cries/clobbopus.aif and b/sound/direct_sound_samples/cries/clobbopus.aif differ diff --git a/sound/direct_sound_samples/cries/clodsire.aif b/sound/direct_sound_samples/cries/clodsire.aif new file mode 100644 index 0000000000..bdbadd64fb Binary files /dev/null and b/sound/direct_sound_samples/cries/clodsire.aif differ diff --git a/sound/direct_sound_samples/cries/cofagrigus.aif b/sound/direct_sound_samples/cries/cofagrigus.aif index b971f50bb7..5c5c426e37 100644 Binary files a/sound/direct_sound_samples/cries/cofagrigus.aif and b/sound/direct_sound_samples/cries/cofagrigus.aif differ diff --git a/sound/direct_sound_samples/cries/conkeldurr.aif b/sound/direct_sound_samples/cries/conkeldurr.aif index 8fc66c6b67..96e991d493 100644 Binary files a/sound/direct_sound_samples/cries/conkeldurr.aif and b/sound/direct_sound_samples/cries/conkeldurr.aif differ diff --git a/sound/direct_sound_samples/cries/copperajah.aif b/sound/direct_sound_samples/cries/copperajah.aif index a705d9acd6..97484e695b 100644 Binary files a/sound/direct_sound_samples/cries/copperajah.aif and b/sound/direct_sound_samples/cries/copperajah.aif differ diff --git a/sound/direct_sound_samples/cries/corviknight.aif b/sound/direct_sound_samples/cries/corviknight.aif index 93fd03f874..8a7e200da3 100644 Binary files a/sound/direct_sound_samples/cries/corviknight.aif and b/sound/direct_sound_samples/cries/corviknight.aif differ diff --git a/sound/direct_sound_samples/cries/corvisquire.aif b/sound/direct_sound_samples/cries/corvisquire.aif index 5e8954e3f9..3c786aca4c 100644 Binary files a/sound/direct_sound_samples/cries/corvisquire.aif and b/sound/direct_sound_samples/cries/corvisquire.aif differ diff --git a/sound/direct_sound_samples/cries/crocalor.aif b/sound/direct_sound_samples/cries/crocalor.aif new file mode 100644 index 0000000000..897aaa860d Binary files /dev/null and b/sound/direct_sound_samples/cries/crocalor.aif differ diff --git a/sound/direct_sound_samples/cries/crustle.aif b/sound/direct_sound_samples/cries/crustle.aif index d4a3836469..92cc8ec07b 100644 Binary files a/sound/direct_sound_samples/cries/crustle.aif and b/sound/direct_sound_samples/cries/crustle.aif differ diff --git a/sound/direct_sound_samples/cries/cryogonal.aif b/sound/direct_sound_samples/cries/cryogonal.aif index 4e4ead6c17..1f8255f7a0 100644 Binary files a/sound/direct_sound_samples/cries/cryogonal.aif and b/sound/direct_sound_samples/cries/cryogonal.aif differ diff --git a/sound/direct_sound_samples/cries/cubchoo.aif b/sound/direct_sound_samples/cries/cubchoo.aif index 6f739fdd94..a4c7f2cf8e 100644 Binary files a/sound/direct_sound_samples/cries/cubchoo.aif and b/sound/direct_sound_samples/cries/cubchoo.aif differ diff --git a/sound/direct_sound_samples/cries/cyclizar.aif b/sound/direct_sound_samples/cries/cyclizar.aif new file mode 100644 index 0000000000..1d145154ec Binary files /dev/null and b/sound/direct_sound_samples/cries/cyclizar.aif differ diff --git a/sound/direct_sound_samples/cries/dachsbun.aif b/sound/direct_sound_samples/cries/dachsbun.aif new file mode 100644 index 0000000000..492020a716 Binary files /dev/null and b/sound/direct_sound_samples/cries/dachsbun.aif differ diff --git a/sound/direct_sound_samples/cries/darmanitan.aif b/sound/direct_sound_samples/cries/darmanitan.aif index 97efdf8b97..9ea80bd5df 100644 Binary files a/sound/direct_sound_samples/cries/darmanitan.aif and b/sound/direct_sound_samples/cries/darmanitan.aif differ diff --git a/sound/direct_sound_samples/cries/darumaka.aif b/sound/direct_sound_samples/cries/darumaka.aif index 863f3deb94..9c58dda411 100644 Binary files a/sound/direct_sound_samples/cries/darumaka.aif and b/sound/direct_sound_samples/cries/darumaka.aif differ diff --git a/sound/direct_sound_samples/cries/deerling.aif b/sound/direct_sound_samples/cries/deerling.aif index 09ace4dc73..50cf0bfc50 100644 Binary files a/sound/direct_sound_samples/cries/deerling.aif and b/sound/direct_sound_samples/cries/deerling.aif differ diff --git a/sound/direct_sound_samples/cries/deino.aif b/sound/direct_sound_samples/cries/deino.aif index bf3987c296..583747a615 100644 Binary files a/sound/direct_sound_samples/cries/deino.aif and b/sound/direct_sound_samples/cries/deino.aif differ diff --git a/sound/direct_sound_samples/cries/dewott.aif b/sound/direct_sound_samples/cries/dewott.aif index 4f45de41a0..3f7724df60 100644 Binary files a/sound/direct_sound_samples/cries/dewott.aif and b/sound/direct_sound_samples/cries/dewott.aif differ diff --git a/sound/direct_sound_samples/cries/diancie_mega.aif b/sound/direct_sound_samples/cries/diancie_mega.aif new file mode 100644 index 0000000000..be62683153 Binary files /dev/null and b/sound/direct_sound_samples/cries/diancie_mega.aif differ diff --git a/sound/direct_sound_samples/cries/dipplin.aif b/sound/direct_sound_samples/cries/dipplin.aif new file mode 100644 index 0000000000..61df2de523 Binary files /dev/null and b/sound/direct_sound_samples/cries/dipplin.aif differ diff --git a/sound/direct_sound_samples/cries/dolliv.aif b/sound/direct_sound_samples/cries/dolliv.aif new file mode 100644 index 0000000000..d0aae0c9ec Binary files /dev/null and b/sound/direct_sound_samples/cries/dolliv.aif differ diff --git a/sound/direct_sound_samples/cries/dondozo.aif b/sound/direct_sound_samples/cries/dondozo.aif new file mode 100644 index 0000000000..eddac5cc27 Binary files /dev/null and b/sound/direct_sound_samples/cries/dondozo.aif differ diff --git a/sound/direct_sound_samples/cries/dragapult.aif b/sound/direct_sound_samples/cries/dragapult.aif index 349500041d..7e34c9bb1b 100644 Binary files a/sound/direct_sound_samples/cries/dragapult.aif and b/sound/direct_sound_samples/cries/dragapult.aif differ diff --git a/sound/direct_sound_samples/cries/drakloak.aif b/sound/direct_sound_samples/cries/drakloak.aif index b90afafdaf..3b19d47687 100644 Binary files a/sound/direct_sound_samples/cries/drakloak.aif and b/sound/direct_sound_samples/cries/drakloak.aif differ diff --git a/sound/direct_sound_samples/cries/dreepy.aif b/sound/direct_sound_samples/cries/dreepy.aif index 29c78e8d54..b79126b119 100644 Binary files a/sound/direct_sound_samples/cries/dreepy.aif and b/sound/direct_sound_samples/cries/dreepy.aif differ diff --git a/sound/direct_sound_samples/cries/drilbur.aif b/sound/direct_sound_samples/cries/drilbur.aif index 8ec6e9095d..25314b0aec 100644 Binary files a/sound/direct_sound_samples/cries/drilbur.aif and b/sound/direct_sound_samples/cries/drilbur.aif differ diff --git a/sound/direct_sound_samples/cries/druddigon.aif b/sound/direct_sound_samples/cries/druddigon.aif index 52c25e3049..7467ee40b0 100644 Binary files a/sound/direct_sound_samples/cries/druddigon.aif and b/sound/direct_sound_samples/cries/druddigon.aif differ diff --git a/sound/direct_sound_samples/cries/ducklett.aif b/sound/direct_sound_samples/cries/ducklett.aif index d556d55684..837566a018 100644 Binary files a/sound/direct_sound_samples/cries/ducklett.aif and b/sound/direct_sound_samples/cries/ducklett.aif differ diff --git a/sound/direct_sound_samples/cries/dudunsparce.aif b/sound/direct_sound_samples/cries/dudunsparce.aif new file mode 100644 index 0000000000..1adc2bb7c9 Binary files /dev/null and b/sound/direct_sound_samples/cries/dudunsparce.aif differ diff --git a/sound/direct_sound_samples/cries/duosion.aif b/sound/direct_sound_samples/cries/duosion.aif index 3003a3a00c..7f931b961c 100644 Binary files a/sound/direct_sound_samples/cries/duosion.aif and b/sound/direct_sound_samples/cries/duosion.aif differ diff --git a/sound/direct_sound_samples/cries/durant.aif b/sound/direct_sound_samples/cries/durant.aif index d3e32043b8..c60490fd6b 100644 Binary files a/sound/direct_sound_samples/cries/durant.aif and b/sound/direct_sound_samples/cries/durant.aif differ diff --git a/sound/direct_sound_samples/cries/dwebble.aif b/sound/direct_sound_samples/cries/dwebble.aif index 0667723241..687cf87450 100644 Binary files a/sound/direct_sound_samples/cries/dwebble.aif and b/sound/direct_sound_samples/cries/dwebble.aif differ diff --git a/sound/direct_sound_samples/cries/eelektrik.aif b/sound/direct_sound_samples/cries/eelektrik.aif index 7e73ba7d1d..4739bd80db 100644 Binary files a/sound/direct_sound_samples/cries/eelektrik.aif and b/sound/direct_sound_samples/cries/eelektrik.aif differ diff --git a/sound/direct_sound_samples/cries/eelektross.aif b/sound/direct_sound_samples/cries/eelektross.aif index efd8a146ff..b8e362b754 100644 Binary files a/sound/direct_sound_samples/cries/eelektross.aif and b/sound/direct_sound_samples/cries/eelektross.aif differ diff --git a/sound/direct_sound_samples/cries/eiscue.aif b/sound/direct_sound_samples/cries/eiscue_ice_face.aif similarity index 100% rename from sound/direct_sound_samples/cries/eiscue.aif rename to sound/direct_sound_samples/cries/eiscue_ice_face.aif diff --git a/sound/direct_sound_samples/cries/eldegoss.aif b/sound/direct_sound_samples/cries/eldegoss.aif index 9725035f71..6c7bbe5129 100644 Binary files a/sound/direct_sound_samples/cries/eldegoss.aif and b/sound/direct_sound_samples/cries/eldegoss.aif differ diff --git a/sound/direct_sound_samples/cries/emboar.aif b/sound/direct_sound_samples/cries/emboar.aif index 68b4bd7efc..4cdd5e0afc 100644 Binary files a/sound/direct_sound_samples/cries/emboar.aif and b/sound/direct_sound_samples/cries/emboar.aif differ diff --git a/sound/direct_sound_samples/cries/emolga.aif b/sound/direct_sound_samples/cries/emolga.aif index 25aba1ea86..c32a727451 100644 Binary files a/sound/direct_sound_samples/cries/emolga.aif and b/sound/direct_sound_samples/cries/emolga.aif differ diff --git a/sound/direct_sound_samples/cries/enamorus.aif b/sound/direct_sound_samples/cries/enamorus.aif deleted file mode 100644 index 40957d49da..0000000000 Binary files a/sound/direct_sound_samples/cries/enamorus.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/enamorus_incarnate.aif b/sound/direct_sound_samples/cries/enamorus_incarnate.aif new file mode 100644 index 0000000000..71068d9b7b Binary files /dev/null and b/sound/direct_sound_samples/cries/enamorus_incarnate.aif differ diff --git a/sound/direct_sound_samples/cries/enamorus_therian.aif b/sound/direct_sound_samples/cries/enamorus_therian.aif index 416f59abb1..4286a98b69 100644 Binary files a/sound/direct_sound_samples/cries/enamorus_therian.aif and b/sound/direct_sound_samples/cries/enamorus_therian.aif differ diff --git a/sound/direct_sound_samples/cries/escavalier.aif b/sound/direct_sound_samples/cries/escavalier.aif index 55ee1ef583..513f53d415 100644 Binary files a/sound/direct_sound_samples/cries/escavalier.aif and b/sound/direct_sound_samples/cries/escavalier.aif differ diff --git a/sound/direct_sound_samples/cries/espathra.aif b/sound/direct_sound_samples/cries/espathra.aif new file mode 100644 index 0000000000..5a196762b1 Binary files /dev/null and b/sound/direct_sound_samples/cries/espathra.aif differ diff --git a/sound/direct_sound_samples/cries/eternatus.aif b/sound/direct_sound_samples/cries/eternatus.aif index 8bd6c5b262..1dede8fdc4 100644 Binary files a/sound/direct_sound_samples/cries/eternatus.aif and b/sound/direct_sound_samples/cries/eternatus.aif differ diff --git a/sound/direct_sound_samples/cries/eternatus_eternamax.aif b/sound/direct_sound_samples/cries/eternatus_eternamax.aif index c4c5bc86d3..7c6b292d4d 100644 Binary files a/sound/direct_sound_samples/cries/eternatus_eternamax.aif and b/sound/direct_sound_samples/cries/eternatus_eternamax.aif differ diff --git a/sound/direct_sound_samples/cries/excadrill.aif b/sound/direct_sound_samples/cries/excadrill.aif index 7709bee7d7..8b2ef0869e 100644 Binary files a/sound/direct_sound_samples/cries/excadrill.aif and b/sound/direct_sound_samples/cries/excadrill.aif differ diff --git a/sound/direct_sound_samples/cries/falinks.aif b/sound/direct_sound_samples/cries/falinks.aif index 1fa3e973c7..6fa1af8df4 100644 Binary files a/sound/direct_sound_samples/cries/falinks.aif and b/sound/direct_sound_samples/cries/falinks.aif differ diff --git a/sound/direct_sound_samples/cries/farigiraf.aif b/sound/direct_sound_samples/cries/farigiraf.aif new file mode 100644 index 0000000000..573520315d Binary files /dev/null and b/sound/direct_sound_samples/cries/farigiraf.aif differ diff --git a/sound/direct_sound_samples/cries/ferroseed.aif b/sound/direct_sound_samples/cries/ferroseed.aif index 4073bf6ffb..24856cdd24 100644 Binary files a/sound/direct_sound_samples/cries/ferroseed.aif and b/sound/direct_sound_samples/cries/ferroseed.aif differ diff --git a/sound/direct_sound_samples/cries/ferrothorn.aif b/sound/direct_sound_samples/cries/ferrothorn.aif index e041923fc7..5e2d7a2579 100644 Binary files a/sound/direct_sound_samples/cries/ferrothorn.aif and b/sound/direct_sound_samples/cries/ferrothorn.aif differ diff --git a/sound/direct_sound_samples/cries/fezandipiti.aif b/sound/direct_sound_samples/cries/fezandipiti.aif new file mode 100644 index 0000000000..d24a32b9c7 Binary files /dev/null and b/sound/direct_sound_samples/cries/fezandipiti.aif differ diff --git a/sound/direct_sound_samples/cries/fidough.aif b/sound/direct_sound_samples/cries/fidough.aif new file mode 100644 index 0000000000..44609a2dd7 Binary files /dev/null and b/sound/direct_sound_samples/cries/fidough.aif differ diff --git a/sound/direct_sound_samples/cries/finizen.aif b/sound/direct_sound_samples/cries/finizen.aif new file mode 100644 index 0000000000..07af24f696 Binary files /dev/null and b/sound/direct_sound_samples/cries/finizen.aif differ diff --git a/sound/direct_sound_samples/cries/flamigo.aif b/sound/direct_sound_samples/cries/flamigo.aif new file mode 100644 index 0000000000..bed56a7f31 Binary files /dev/null and b/sound/direct_sound_samples/cries/flamigo.aif differ diff --git a/sound/direct_sound_samples/cries/flittle.aif b/sound/direct_sound_samples/cries/flittle.aif new file mode 100644 index 0000000000..d81016a64d Binary files /dev/null and b/sound/direct_sound_samples/cries/flittle.aif differ diff --git a/sound/direct_sound_samples/cries/floragato.aif b/sound/direct_sound_samples/cries/floragato.aif new file mode 100644 index 0000000000..4fc8832423 Binary files /dev/null and b/sound/direct_sound_samples/cries/floragato.aif differ diff --git a/sound/direct_sound_samples/cries/flutter_mane.aif b/sound/direct_sound_samples/cries/flutter_mane.aif new file mode 100644 index 0000000000..ad4c636fe7 Binary files /dev/null and b/sound/direct_sound_samples/cries/flutter_mane.aif differ diff --git a/sound/direct_sound_samples/cries/fraxure.aif b/sound/direct_sound_samples/cries/fraxure.aif index 43fcf42217..25464a1ff7 100644 Binary files a/sound/direct_sound_samples/cries/fraxure.aif and b/sound/direct_sound_samples/cries/fraxure.aif differ diff --git a/sound/direct_sound_samples/cries/frigibax.aif b/sound/direct_sound_samples/cries/frigibax.aif new file mode 100644 index 0000000000..10c5b819aa Binary files /dev/null and b/sound/direct_sound_samples/cries/frigibax.aif differ diff --git a/sound/direct_sound_samples/cries/frillish.aif b/sound/direct_sound_samples/cries/frillish.aif index b63a21f478..c59a0a542f 100644 Binary files a/sound/direct_sound_samples/cries/frillish.aif and b/sound/direct_sound_samples/cries/frillish.aif differ diff --git a/sound/direct_sound_samples/cries/frosmoth.aif b/sound/direct_sound_samples/cries/frosmoth.aif index b38071ab8a..324034d15e 100644 Binary files a/sound/direct_sound_samples/cries/frosmoth.aif and b/sound/direct_sound_samples/cries/frosmoth.aif differ diff --git a/sound/direct_sound_samples/cries/fuecoco.aif b/sound/direct_sound_samples/cries/fuecoco.aif new file mode 100644 index 0000000000..4c0d7eb07a Binary files /dev/null and b/sound/direct_sound_samples/cries/fuecoco.aif differ diff --git a/sound/direct_sound_samples/cries/gallade_mega.aif b/sound/direct_sound_samples/cries/gallade_mega.aif new file mode 100644 index 0000000000..0af522f68f Binary files /dev/null and b/sound/direct_sound_samples/cries/gallade_mega.aif differ diff --git a/sound/direct_sound_samples/cries/galvantula.aif b/sound/direct_sound_samples/cries/galvantula.aif index f2989d840d..d682377565 100644 Binary files a/sound/direct_sound_samples/cries/galvantula.aif and b/sound/direct_sound_samples/cries/galvantula.aif differ diff --git a/sound/direct_sound_samples/cries/garbodor.aif b/sound/direct_sound_samples/cries/garbodor.aif index 28f95184a6..ed906101f3 100644 Binary files a/sound/direct_sound_samples/cries/garbodor.aif and b/sound/direct_sound_samples/cries/garbodor.aif differ diff --git a/sound/direct_sound_samples/cries/garchomp_mega.aif b/sound/direct_sound_samples/cries/garchomp_mega.aif new file mode 100644 index 0000000000..65637139f2 Binary files /dev/null and b/sound/direct_sound_samples/cries/garchomp_mega.aif differ diff --git a/sound/direct_sound_samples/cries/gardevoir_mega.aif b/sound/direct_sound_samples/cries/gardevoir_mega.aif new file mode 100644 index 0000000000..71ba65d455 Binary files /dev/null and b/sound/direct_sound_samples/cries/gardevoir_mega.aif differ diff --git a/sound/direct_sound_samples/cries/garganacl.aif b/sound/direct_sound_samples/cries/garganacl.aif new file mode 100644 index 0000000000..3c530cea53 Binary files /dev/null and b/sound/direct_sound_samples/cries/garganacl.aif differ diff --git a/sound/direct_sound_samples/cries/genesect.aif b/sound/direct_sound_samples/cries/genesect.aif index 4c0e306be7..e088634591 100644 Binary files a/sound/direct_sound_samples/cries/genesect.aif and b/sound/direct_sound_samples/cries/genesect.aif differ diff --git a/sound/direct_sound_samples/cries/gengar_mega.aif b/sound/direct_sound_samples/cries/gengar_mega.aif new file mode 100644 index 0000000000..7967d6dcfb Binary files /dev/null and b/sound/direct_sound_samples/cries/gengar_mega.aif differ diff --git a/sound/direct_sound_samples/cries/gholdengo.aif b/sound/direct_sound_samples/cries/gholdengo.aif new file mode 100644 index 0000000000..4cef67ba29 Binary files /dev/null and b/sound/direct_sound_samples/cries/gholdengo.aif differ diff --git a/sound/direct_sound_samples/cries/gigalith.aif b/sound/direct_sound_samples/cries/gigalith.aif index 98cffe443c..e5c2f6419e 100644 Binary files a/sound/direct_sound_samples/cries/gigalith.aif and b/sound/direct_sound_samples/cries/gigalith.aif differ diff --git a/sound/direct_sound_samples/cries/gimmighoul.aif b/sound/direct_sound_samples/cries/gimmighoul.aif new file mode 100644 index 0000000000..dac736784e Binary files /dev/null and b/sound/direct_sound_samples/cries/gimmighoul.aif differ diff --git a/sound/direct_sound_samples/cries/gimmighoul_roaming.aif b/sound/direct_sound_samples/cries/gimmighoul_roaming.aif new file mode 100644 index 0000000000..9f3c4483e9 Binary files /dev/null and b/sound/direct_sound_samples/cries/gimmighoul_roaming.aif differ diff --git a/sound/direct_sound_samples/cries/glalie_mega.aif b/sound/direct_sound_samples/cries/glalie_mega.aif new file mode 100644 index 0000000000..44261f5271 Binary files /dev/null and b/sound/direct_sound_samples/cries/glalie_mega.aif differ diff --git a/sound/direct_sound_samples/cries/glastrier.aif b/sound/direct_sound_samples/cries/glastrier.aif index c0b87d2532..6109f1ca0b 100644 Binary files a/sound/direct_sound_samples/cries/glastrier.aif and b/sound/direct_sound_samples/cries/glastrier.aif differ diff --git a/sound/direct_sound_samples/cries/glimmet.aif b/sound/direct_sound_samples/cries/glimmet.aif new file mode 100644 index 0000000000..38fc118b26 Binary files /dev/null and b/sound/direct_sound_samples/cries/glimmet.aif differ diff --git a/sound/direct_sound_samples/cries/glimmora.aif b/sound/direct_sound_samples/cries/glimmora.aif new file mode 100644 index 0000000000..64fb682289 Binary files /dev/null and b/sound/direct_sound_samples/cries/glimmora.aif differ diff --git a/sound/direct_sound_samples/cries/golett.aif b/sound/direct_sound_samples/cries/golett.aif index 3610df2a56..f0f31bda7e 100644 Binary files a/sound/direct_sound_samples/cries/golett.aif and b/sound/direct_sound_samples/cries/golett.aif differ diff --git a/sound/direct_sound_samples/cries/golurk.aif b/sound/direct_sound_samples/cries/golurk.aif index b9bd6914b7..1795ca8f4a 100644 Binary files a/sound/direct_sound_samples/cries/golurk.aif and b/sound/direct_sound_samples/cries/golurk.aif differ diff --git a/sound/direct_sound_samples/cries/gothita.aif b/sound/direct_sound_samples/cries/gothita.aif index 78e9b18806..93089d6200 100644 Binary files a/sound/direct_sound_samples/cries/gothita.aif and b/sound/direct_sound_samples/cries/gothita.aif differ diff --git a/sound/direct_sound_samples/cries/gothorita.aif b/sound/direct_sound_samples/cries/gothorita.aif index 10ea224c66..d0b1217c18 100644 Binary files a/sound/direct_sound_samples/cries/gothorita.aif and b/sound/direct_sound_samples/cries/gothorita.aif differ diff --git a/sound/direct_sound_samples/cries/grafaiai.aif b/sound/direct_sound_samples/cries/grafaiai.aif new file mode 100644 index 0000000000..d8e8511eec Binary files /dev/null and b/sound/direct_sound_samples/cries/grafaiai.aif differ diff --git a/sound/direct_sound_samples/cries/great_tusk.aif b/sound/direct_sound_samples/cries/great_tusk.aif new file mode 100644 index 0000000000..4ca76ff6c0 Binary files /dev/null and b/sound/direct_sound_samples/cries/great_tusk.aif differ diff --git a/sound/direct_sound_samples/cries/greavard.aif b/sound/direct_sound_samples/cries/greavard.aif new file mode 100644 index 0000000000..434c1dceb0 Binary files /dev/null and b/sound/direct_sound_samples/cries/greavard.aif differ diff --git a/sound/direct_sound_samples/cries/grookey.aif b/sound/direct_sound_samples/cries/grookey.aif index 8822e50be0..919063484f 100644 Binary files a/sound/direct_sound_samples/cries/grookey.aif and b/sound/direct_sound_samples/cries/grookey.aif differ diff --git a/sound/direct_sound_samples/cries/groudon_primal.aif b/sound/direct_sound_samples/cries/groudon_primal.aif new file mode 100644 index 0000000000..c883269470 Binary files /dev/null and b/sound/direct_sound_samples/cries/groudon_primal.aif differ diff --git a/sound/direct_sound_samples/cries/gurdurr.aif b/sound/direct_sound_samples/cries/gurdurr.aif index 086b02012d..8cb56e5a70 100644 Binary files a/sound/direct_sound_samples/cries/gurdurr.aif and b/sound/direct_sound_samples/cries/gurdurr.aif differ diff --git a/sound/direct_sound_samples/cries/gyarados_mega.aif b/sound/direct_sound_samples/cries/gyarados_mega.aif new file mode 100644 index 0000000000..5e310a4638 Binary files /dev/null and b/sound/direct_sound_samples/cries/gyarados_mega.aif differ diff --git a/sound/direct_sound_samples/cries/hatenna.aif b/sound/direct_sound_samples/cries/hatenna.aif index 8743bd35fb..3c431dd65f 100644 Binary files a/sound/direct_sound_samples/cries/hatenna.aif and b/sound/direct_sound_samples/cries/hatenna.aif differ diff --git a/sound/direct_sound_samples/cries/hatterene.aif b/sound/direct_sound_samples/cries/hatterene.aif index 89b683927f..db21eb2e20 100644 Binary files a/sound/direct_sound_samples/cries/hatterene.aif and b/sound/direct_sound_samples/cries/hatterene.aif differ diff --git a/sound/direct_sound_samples/cries/hattrem.aif b/sound/direct_sound_samples/cries/hattrem.aif index 2fb276f62c..57f46a4979 100644 Binary files a/sound/direct_sound_samples/cries/hattrem.aif and b/sound/direct_sound_samples/cries/hattrem.aif differ diff --git a/sound/direct_sound_samples/cries/haxorus.aif b/sound/direct_sound_samples/cries/haxorus.aif index 7ac1694156..7fc4043d36 100644 Binary files a/sound/direct_sound_samples/cries/haxorus.aif and b/sound/direct_sound_samples/cries/haxorus.aif differ diff --git a/sound/direct_sound_samples/cries/heatmor.aif b/sound/direct_sound_samples/cries/heatmor.aif index 6fff3da9dc..a73dd97e4a 100644 Binary files a/sound/direct_sound_samples/cries/heatmor.aif and b/sound/direct_sound_samples/cries/heatmor.aif differ diff --git a/sound/direct_sound_samples/cries/heracross_mega.aif b/sound/direct_sound_samples/cries/heracross_mega.aif new file mode 100644 index 0000000000..67faa6f196 Binary files /dev/null and b/sound/direct_sound_samples/cries/heracross_mega.aif differ diff --git a/sound/direct_sound_samples/cries/herdier.aif b/sound/direct_sound_samples/cries/herdier.aif index 5e863c94cf..e57234c8b0 100644 Binary files a/sound/direct_sound_samples/cries/herdier.aif and b/sound/direct_sound_samples/cries/herdier.aif differ diff --git a/sound/direct_sound_samples/cries/hoopa.aif b/sound/direct_sound_samples/cries/hoopa_confined.aif similarity index 100% rename from sound/direct_sound_samples/cries/hoopa.aif rename to sound/direct_sound_samples/cries/hoopa_confined.aif diff --git a/sound/direct_sound_samples/cries/hoopa_unbound.aif b/sound/direct_sound_samples/cries/hoopa_unbound.aif index 4130b2e3b5..8867fe42a3 100644 Binary files a/sound/direct_sound_samples/cries/hoopa_unbound.aif and b/sound/direct_sound_samples/cries/hoopa_unbound.aif differ diff --git a/sound/direct_sound_samples/cries/houndoom_mega.aif b/sound/direct_sound_samples/cries/houndoom_mega.aif new file mode 100644 index 0000000000..7bf51ba800 Binary files /dev/null and b/sound/direct_sound_samples/cries/houndoom_mega.aif differ diff --git a/sound/direct_sound_samples/cries/houndstone.aif b/sound/direct_sound_samples/cries/houndstone.aif new file mode 100644 index 0000000000..145cc79682 Binary files /dev/null and b/sound/direct_sound_samples/cries/houndstone.aif differ diff --git a/sound/direct_sound_samples/cries/indeedee_female.aif b/sound/direct_sound_samples/cries/indeedee_female.aif index 93279b4ee8..3edae13bad 100644 Binary files a/sound/direct_sound_samples/cries/indeedee_female.aif and b/sound/direct_sound_samples/cries/indeedee_female.aif differ diff --git a/sound/direct_sound_samples/cries/indeedee.aif b/sound/direct_sound_samples/cries/indeedee_male.aif similarity index 100% rename from sound/direct_sound_samples/cries/indeedee.aif rename to sound/direct_sound_samples/cries/indeedee_male.aif diff --git a/sound/direct_sound_samples/cries/inteleon.aif b/sound/direct_sound_samples/cries/inteleon.aif index 83668dcdcb..d5c6d367f7 100644 Binary files a/sound/direct_sound_samples/cries/inteleon.aif and b/sound/direct_sound_samples/cries/inteleon.aif differ diff --git a/sound/direct_sound_samples/cries/iron_bundle.aif b/sound/direct_sound_samples/cries/iron_bundle.aif new file mode 100644 index 0000000000..59af7aa504 Binary files /dev/null and b/sound/direct_sound_samples/cries/iron_bundle.aif differ diff --git a/sound/direct_sound_samples/cries/iron_hands.aif b/sound/direct_sound_samples/cries/iron_hands.aif new file mode 100644 index 0000000000..d9e5b995f0 Binary files /dev/null and b/sound/direct_sound_samples/cries/iron_hands.aif differ diff --git a/sound/direct_sound_samples/cries/iron_jugulis.aif b/sound/direct_sound_samples/cries/iron_jugulis.aif new file mode 100644 index 0000000000..8409934f89 Binary files /dev/null and b/sound/direct_sound_samples/cries/iron_jugulis.aif differ diff --git a/sound/direct_sound_samples/cries/iron_leaves.aif b/sound/direct_sound_samples/cries/iron_leaves.aif new file mode 100644 index 0000000000..45e0a420e2 Binary files /dev/null and b/sound/direct_sound_samples/cries/iron_leaves.aif differ diff --git a/sound/direct_sound_samples/cries/iron_moth.aif b/sound/direct_sound_samples/cries/iron_moth.aif new file mode 100644 index 0000000000..fb90d30481 Binary files /dev/null and b/sound/direct_sound_samples/cries/iron_moth.aif differ diff --git a/sound/direct_sound_samples/cries/iron_thorns.aif b/sound/direct_sound_samples/cries/iron_thorns.aif new file mode 100644 index 0000000000..e73b9d553e Binary files /dev/null and b/sound/direct_sound_samples/cries/iron_thorns.aif differ diff --git a/sound/direct_sound_samples/cries/iron_treads.aif b/sound/direct_sound_samples/cries/iron_treads.aif new file mode 100644 index 0000000000..e3b0471711 Binary files /dev/null and b/sound/direct_sound_samples/cries/iron_treads.aif differ diff --git a/sound/direct_sound_samples/cries/iron_valiant.aif b/sound/direct_sound_samples/cries/iron_valiant.aif new file mode 100644 index 0000000000..04220e9f62 Binary files /dev/null and b/sound/direct_sound_samples/cries/iron_valiant.aif differ diff --git a/sound/direct_sound_samples/cries/jellicent.aif b/sound/direct_sound_samples/cries/jellicent.aif index 3664a9d41c..4c75c484f2 100644 Binary files a/sound/direct_sound_samples/cries/jellicent.aif and b/sound/direct_sound_samples/cries/jellicent.aif differ diff --git a/sound/direct_sound_samples/cries/joltik.aif b/sound/direct_sound_samples/cries/joltik.aif index 0c6caea6e5..cd1fa592c9 100644 Binary files a/sound/direct_sound_samples/cries/joltik.aif and b/sound/direct_sound_samples/cries/joltik.aif differ diff --git a/sound/direct_sound_samples/cries/kangaskhan_mega.aif b/sound/direct_sound_samples/cries/kangaskhan_mega.aif new file mode 100644 index 0000000000..cd95a87d39 Binary files /dev/null and b/sound/direct_sound_samples/cries/kangaskhan_mega.aif differ diff --git a/sound/direct_sound_samples/cries/karrablast.aif b/sound/direct_sound_samples/cries/karrablast.aif index 7b22594e06..cf06ec45a8 100644 Binary files a/sound/direct_sound_samples/cries/karrablast.aif and b/sound/direct_sound_samples/cries/karrablast.aif differ diff --git a/sound/direct_sound_samples/cries/kilowattrel.aif b/sound/direct_sound_samples/cries/kilowattrel.aif new file mode 100644 index 0000000000..d54d4a43b5 Binary files /dev/null and b/sound/direct_sound_samples/cries/kilowattrel.aif differ diff --git a/sound/direct_sound_samples/cries/kingambit.aif b/sound/direct_sound_samples/cries/kingambit.aif new file mode 100644 index 0000000000..38a3d1b6cc Binary files /dev/null and b/sound/direct_sound_samples/cries/kingambit.aif differ diff --git a/sound/direct_sound_samples/cries/klang.aif b/sound/direct_sound_samples/cries/klang.aif index 462187f3e1..bb17984d2c 100644 Binary files a/sound/direct_sound_samples/cries/klang.aif and b/sound/direct_sound_samples/cries/klang.aif differ diff --git a/sound/direct_sound_samples/cries/klawf.aif b/sound/direct_sound_samples/cries/klawf.aif new file mode 100644 index 0000000000..8359e13b17 Binary files /dev/null and b/sound/direct_sound_samples/cries/klawf.aif differ diff --git a/sound/direct_sound_samples/cries/kleavor.aif b/sound/direct_sound_samples/cries/kleavor.aif index 1052cabd3a..cf23d5b623 100644 Binary files a/sound/direct_sound_samples/cries/kleavor.aif and b/sound/direct_sound_samples/cries/kleavor.aif differ diff --git a/sound/direct_sound_samples/cries/klink.aif b/sound/direct_sound_samples/cries/klink.aif index a3a78f58db..21076028de 100644 Binary files a/sound/direct_sound_samples/cries/klink.aif and b/sound/direct_sound_samples/cries/klink.aif differ diff --git a/sound/direct_sound_samples/cries/koraidon.aif b/sound/direct_sound_samples/cries/koraidon.aif new file mode 100644 index 0000000000..6ab93ad73e Binary files /dev/null and b/sound/direct_sound_samples/cries/koraidon.aif differ diff --git a/sound/direct_sound_samples/cries/krokorok.aif b/sound/direct_sound_samples/cries/krokorok.aif index d8f34f86ae..2cf4ceff1f 100644 Binary files a/sound/direct_sound_samples/cries/krokorok.aif and b/sound/direct_sound_samples/cries/krokorok.aif differ diff --git a/sound/direct_sound_samples/cries/krookodile.aif b/sound/direct_sound_samples/cries/krookodile.aif index e8cd8277e3..4aa7ea4aed 100644 Binary files a/sound/direct_sound_samples/cries/krookodile.aif and b/sound/direct_sound_samples/cries/krookodile.aif differ diff --git a/sound/direct_sound_samples/cries/kyogre_primal.aif b/sound/direct_sound_samples/cries/kyogre_primal.aif new file mode 100644 index 0000000000..605b8944ce Binary files /dev/null and b/sound/direct_sound_samples/cries/kyogre_primal.aif differ diff --git a/sound/direct_sound_samples/cries/kyurem.aif b/sound/direct_sound_samples/cries/kyurem.aif index 2b09fee159..036d6cf689 100644 Binary files a/sound/direct_sound_samples/cries/kyurem.aif and b/sound/direct_sound_samples/cries/kyurem.aif differ diff --git a/sound/direct_sound_samples/cries/lampent.aif b/sound/direct_sound_samples/cries/lampent.aif index 2037c0bb2b..2f11c2ecfb 100644 Binary files a/sound/direct_sound_samples/cries/lampent.aif and b/sound/direct_sound_samples/cries/lampent.aif differ diff --git a/sound/direct_sound_samples/cries/landorus.aif b/sound/direct_sound_samples/cries/landorus.aif deleted file mode 100644 index f0937509f3..0000000000 Binary files a/sound/direct_sound_samples/cries/landorus.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/landorus_incarnate.aif b/sound/direct_sound_samples/cries/landorus_incarnate.aif new file mode 100644 index 0000000000..189c776668 Binary files /dev/null and b/sound/direct_sound_samples/cries/landorus_incarnate.aif differ diff --git a/sound/direct_sound_samples/cries/landorus_therian.aif b/sound/direct_sound_samples/cries/landorus_therian.aif index a790c8ecfe..edd6fa349b 100644 Binary files a/sound/direct_sound_samples/cries/landorus_therian.aif and b/sound/direct_sound_samples/cries/landorus_therian.aif differ diff --git a/sound/direct_sound_samples/cries/larvesta.aif b/sound/direct_sound_samples/cries/larvesta.aif index 6822dca90b..4f3e484c8e 100644 Binary files a/sound/direct_sound_samples/cries/larvesta.aif and b/sound/direct_sound_samples/cries/larvesta.aif differ diff --git a/sound/direct_sound_samples/cries/latias_mega.aif b/sound/direct_sound_samples/cries/latias_mega.aif new file mode 100644 index 0000000000..0dc1b89906 Binary files /dev/null and b/sound/direct_sound_samples/cries/latias_mega.aif differ diff --git a/sound/direct_sound_samples/cries/latios_mega.aif b/sound/direct_sound_samples/cries/latios_mega.aif new file mode 100644 index 0000000000..88a896035b Binary files /dev/null and b/sound/direct_sound_samples/cries/latios_mega.aif differ diff --git a/sound/direct_sound_samples/cries/leavanny.aif b/sound/direct_sound_samples/cries/leavanny.aif index c165448787..8399bb1cf3 100644 Binary files a/sound/direct_sound_samples/cries/leavanny.aif and b/sound/direct_sound_samples/cries/leavanny.aif differ diff --git a/sound/direct_sound_samples/cries/lechonk.aif b/sound/direct_sound_samples/cries/lechonk.aif new file mode 100644 index 0000000000..f1ab3af238 Binary files /dev/null and b/sound/direct_sound_samples/cries/lechonk.aif differ diff --git a/sound/direct_sound_samples/cries/liepard.aif b/sound/direct_sound_samples/cries/liepard.aif index 1f97b7e1ac..7432857bc1 100644 Binary files a/sound/direct_sound_samples/cries/liepard.aif and b/sound/direct_sound_samples/cries/liepard.aif differ diff --git a/sound/direct_sound_samples/cries/lilligant.aif b/sound/direct_sound_samples/cries/lilligant.aif index fd940814e4..311c5affa8 100644 Binary files a/sound/direct_sound_samples/cries/lilligant.aif and b/sound/direct_sound_samples/cries/lilligant.aif differ diff --git a/sound/direct_sound_samples/cries/lillipup.aif b/sound/direct_sound_samples/cries/lillipup.aif index e7c8bc6ba3..9a77e2596d 100644 Binary files a/sound/direct_sound_samples/cries/lillipup.aif and b/sound/direct_sound_samples/cries/lillipup.aif differ diff --git a/sound/direct_sound_samples/cries/litwick.aif b/sound/direct_sound_samples/cries/litwick.aif index 930ca829e6..6759c29beb 100644 Binary files a/sound/direct_sound_samples/cries/litwick.aif and b/sound/direct_sound_samples/cries/litwick.aif differ diff --git a/sound/direct_sound_samples/cries/lokix.aif b/sound/direct_sound_samples/cries/lokix.aif new file mode 100644 index 0000000000..c323e2658c Binary files /dev/null and b/sound/direct_sound_samples/cries/lokix.aif differ diff --git a/sound/direct_sound_samples/cries/lopunny_mega.aif b/sound/direct_sound_samples/cries/lopunny_mega.aif new file mode 100644 index 0000000000..1331ca106b Binary files /dev/null and b/sound/direct_sound_samples/cries/lopunny_mega.aif differ diff --git a/sound/direct_sound_samples/cries/lucario_mega.aif b/sound/direct_sound_samples/cries/lucario_mega.aif new file mode 100644 index 0000000000..1a100f4dab Binary files /dev/null and b/sound/direct_sound_samples/cries/lucario_mega.aif differ diff --git a/sound/direct_sound_samples/cries/lycanroc_dusk.aif b/sound/direct_sound_samples/cries/lycanroc_dusk.aif index 1149e558bf..61d985e64a 100644 Binary files a/sound/direct_sound_samples/cries/lycanroc_dusk.aif and b/sound/direct_sound_samples/cries/lycanroc_dusk.aif differ diff --git a/sound/direct_sound_samples/cries/lycanroc.aif b/sound/direct_sound_samples/cries/lycanroc_midday.aif similarity index 100% rename from sound/direct_sound_samples/cries/lycanroc.aif rename to sound/direct_sound_samples/cries/lycanroc_midday.aif diff --git a/sound/direct_sound_samples/cries/lycanroc_midnight.aif b/sound/direct_sound_samples/cries/lycanroc_midnight.aif index 0b68038fd4..f470d006b5 100644 Binary files a/sound/direct_sound_samples/cries/lycanroc_midnight.aif and b/sound/direct_sound_samples/cries/lycanroc_midnight.aif differ diff --git a/sound/direct_sound_samples/cries/mabosstiff.aif b/sound/direct_sound_samples/cries/mabosstiff.aif new file mode 100644 index 0000000000..ccf661e6ca Binary files /dev/null and b/sound/direct_sound_samples/cries/mabosstiff.aif differ diff --git a/sound/direct_sound_samples/cries/mandibuzz.aif b/sound/direct_sound_samples/cries/mandibuzz.aif index 9911fa2c68..3f12088d0a 100644 Binary files a/sound/direct_sound_samples/cries/mandibuzz.aif and b/sound/direct_sound_samples/cries/mandibuzz.aif differ diff --git a/sound/direct_sound_samples/cries/manectric_mega.aif b/sound/direct_sound_samples/cries/manectric_mega.aif new file mode 100644 index 0000000000..ad38ec0ffc Binary files /dev/null and b/sound/direct_sound_samples/cries/manectric_mega.aif differ diff --git a/sound/direct_sound_samples/cries/maractus.aif b/sound/direct_sound_samples/cries/maractus.aif index bf98f2c744..16058d97cc 100644 Binary files a/sound/direct_sound_samples/cries/maractus.aif and b/sound/direct_sound_samples/cries/maractus.aif differ diff --git a/sound/direct_sound_samples/cries/maschiff.aif b/sound/direct_sound_samples/cries/maschiff.aif new file mode 100644 index 0000000000..ee93b59ade Binary files /dev/null and b/sound/direct_sound_samples/cries/maschiff.aif differ diff --git a/sound/direct_sound_samples/cries/maushold_family_of_four.aif b/sound/direct_sound_samples/cries/maushold_family_of_four.aif new file mode 100644 index 0000000000..c7c0aee6ee Binary files /dev/null and b/sound/direct_sound_samples/cries/maushold_family_of_four.aif differ diff --git a/sound/direct_sound_samples/cries/maushold_family_of_three.aif b/sound/direct_sound_samples/cries/maushold_family_of_three.aif new file mode 100644 index 0000000000..7412a1af6a Binary files /dev/null and b/sound/direct_sound_samples/cries/maushold_family_of_three.aif differ diff --git a/sound/direct_sound_samples/cries/mawile_mega.aif b/sound/direct_sound_samples/cries/mawile_mega.aif new file mode 100644 index 0000000000..a6e7ec8c83 Binary files /dev/null and b/sound/direct_sound_samples/cries/mawile_mega.aif differ diff --git a/sound/direct_sound_samples/cries/medicham_mega.aif b/sound/direct_sound_samples/cries/medicham_mega.aif new file mode 100644 index 0000000000..f00672f3cb Binary files /dev/null and b/sound/direct_sound_samples/cries/medicham_mega.aif differ diff --git a/sound/direct_sound_samples/cries/mega_abomasnow.aif b/sound/direct_sound_samples/cries/mega_abomasnow.aif deleted file mode 100644 index 600efe7481..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_abomasnow.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_absol.aif b/sound/direct_sound_samples/cries/mega_absol.aif deleted file mode 100644 index e1539ce3b2..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_absol.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_aerodactyl.aif b/sound/direct_sound_samples/cries/mega_aerodactyl.aif deleted file mode 100644 index 762e2cb1ca..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_aerodactyl.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_aggron.aif b/sound/direct_sound_samples/cries/mega_aggron.aif deleted file mode 100644 index 9466c9e70a..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_aggron.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_alakazam.aif b/sound/direct_sound_samples/cries/mega_alakazam.aif deleted file mode 100644 index 149bcb7d00..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_alakazam.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_altaria.aif b/sound/direct_sound_samples/cries/mega_altaria.aif deleted file mode 100644 index a050f74798..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_altaria.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_ampharos.aif b/sound/direct_sound_samples/cries/mega_ampharos.aif deleted file mode 100644 index d92b123d37..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_ampharos.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_audino.aif b/sound/direct_sound_samples/cries/mega_audino.aif deleted file mode 100644 index f1d90100d5..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_audino.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_banette.aif b/sound/direct_sound_samples/cries/mega_banette.aif deleted file mode 100644 index c951f854f9..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_banette.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_beedrill.aif b/sound/direct_sound_samples/cries/mega_beedrill.aif deleted file mode 100644 index 26fb431d4c..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_beedrill.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_blastoise.aif b/sound/direct_sound_samples/cries/mega_blastoise.aif deleted file mode 100644 index d340b3ce9f..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_blastoise.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_blaziken.aif b/sound/direct_sound_samples/cries/mega_blaziken.aif deleted file mode 100644 index 30d7c622d9..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_blaziken.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_camerupt.aif b/sound/direct_sound_samples/cries/mega_camerupt.aif deleted file mode 100644 index 744817dac8..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_camerupt.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_charizard_x.aif b/sound/direct_sound_samples/cries/mega_charizard_x.aif deleted file mode 100644 index 2e541e2372..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_charizard_x.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_charizard_y.aif b/sound/direct_sound_samples/cries/mega_charizard_y.aif deleted file mode 100644 index 6da97b62ab..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_charizard_y.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_diancie.aif b/sound/direct_sound_samples/cries/mega_diancie.aif deleted file mode 100644 index 8fc5139099..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_diancie.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_gallade.aif b/sound/direct_sound_samples/cries/mega_gallade.aif deleted file mode 100644 index 4a12523dfe..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_gallade.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_garchomp.aif b/sound/direct_sound_samples/cries/mega_garchomp.aif deleted file mode 100644 index 420cf6689e..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_garchomp.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_gardevoir.aif b/sound/direct_sound_samples/cries/mega_gardevoir.aif deleted file mode 100644 index 1b384b37b7..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_gardevoir.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_gengar.aif b/sound/direct_sound_samples/cries/mega_gengar.aif deleted file mode 100644 index 980a228b7d..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_gengar.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_glalie.aif b/sound/direct_sound_samples/cries/mega_glalie.aif deleted file mode 100644 index a123a386a9..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_glalie.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_gyarados.aif b/sound/direct_sound_samples/cries/mega_gyarados.aif deleted file mode 100644 index 1b939a6ce2..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_gyarados.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_heracross.aif b/sound/direct_sound_samples/cries/mega_heracross.aif deleted file mode 100644 index 99e4aded08..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_heracross.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_houndoom.aif b/sound/direct_sound_samples/cries/mega_houndoom.aif deleted file mode 100644 index dcbc965505..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_houndoom.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_kangaskhan.aif b/sound/direct_sound_samples/cries/mega_kangaskhan.aif deleted file mode 100644 index e5069d2d34..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_kangaskhan.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_latias.aif b/sound/direct_sound_samples/cries/mega_latias.aif deleted file mode 100644 index 5d107897a1..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_latias.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_latios.aif b/sound/direct_sound_samples/cries/mega_latios.aif deleted file mode 100644 index 39394be44b..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_latios.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_lopunny.aif b/sound/direct_sound_samples/cries/mega_lopunny.aif deleted file mode 100644 index 45a0dbb839..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_lopunny.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_lucario.aif b/sound/direct_sound_samples/cries/mega_lucario.aif deleted file mode 100644 index f9af050ada..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_lucario.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_manectric.aif b/sound/direct_sound_samples/cries/mega_manectric.aif deleted file mode 100644 index d78d845302..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_manectric.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_mawile.aif b/sound/direct_sound_samples/cries/mega_mawile.aif deleted file mode 100644 index bfcd306bc3..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_mawile.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_medicham.aif b/sound/direct_sound_samples/cries/mega_medicham.aif deleted file mode 100644 index eb1153e055..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_medicham.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_metagross.aif b/sound/direct_sound_samples/cries/mega_metagross.aif deleted file mode 100644 index 8e3c48bab0..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_metagross.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_mewtwo_x.aif b/sound/direct_sound_samples/cries/mega_mewtwo_x.aif deleted file mode 100644 index 8c82b90961..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_mewtwo_x.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_mewtwo_y.aif b/sound/direct_sound_samples/cries/mega_mewtwo_y.aif deleted file mode 100644 index 0947d8351f..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_mewtwo_y.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_pidgeot.aif b/sound/direct_sound_samples/cries/mega_pidgeot.aif deleted file mode 100644 index 05add9bdd7..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_pidgeot.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_pinsir.aif b/sound/direct_sound_samples/cries/mega_pinsir.aif deleted file mode 100644 index 4d5f59daee..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_pinsir.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_rayquaza.aif b/sound/direct_sound_samples/cries/mega_rayquaza.aif deleted file mode 100644 index 1e5c3c7ed7..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_rayquaza.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_sableye.aif b/sound/direct_sound_samples/cries/mega_sableye.aif deleted file mode 100644 index 6f628fb576..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_sableye.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_salamence.aif b/sound/direct_sound_samples/cries/mega_salamence.aif deleted file mode 100644 index cf75bfbf8e..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_salamence.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_sceptile.aif b/sound/direct_sound_samples/cries/mega_sceptile.aif deleted file mode 100644 index fca1708831..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_sceptile.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_scizor.aif b/sound/direct_sound_samples/cries/mega_scizor.aif deleted file mode 100644 index 3705ec707a..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_scizor.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_sharpedo.aif b/sound/direct_sound_samples/cries/mega_sharpedo.aif deleted file mode 100644 index b6eff10ff3..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_sharpedo.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_slowbro.aif b/sound/direct_sound_samples/cries/mega_slowbro.aif deleted file mode 100644 index 4fcda7dc4e..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_slowbro.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_steelix.aif b/sound/direct_sound_samples/cries/mega_steelix.aif deleted file mode 100644 index 998d0d7d9c..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_steelix.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_swampert.aif b/sound/direct_sound_samples/cries/mega_swampert.aif deleted file mode 100644 index 6b65b03ed6..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_swampert.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_tyranitar.aif b/sound/direct_sound_samples/cries/mega_tyranitar.aif deleted file mode 100644 index 5df44e79b4..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_tyranitar.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/mega_venusaur.aif b/sound/direct_sound_samples/cries/mega_venusaur.aif deleted file mode 100644 index f67c278a41..0000000000 Binary files a/sound/direct_sound_samples/cries/mega_venusaur.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/melmetal.aif b/sound/direct_sound_samples/cries/melmetal.aif index aea0ec1c74..d9a2e0928b 100644 Binary files a/sound/direct_sound_samples/cries/melmetal.aif and b/sound/direct_sound_samples/cries/melmetal.aif differ diff --git a/sound/direct_sound_samples/cries/meloetta.aif b/sound/direct_sound_samples/cries/meloetta.aif index 9d2e0a254d..d2be5ac97f 100644 Binary files a/sound/direct_sound_samples/cries/meloetta.aif and b/sound/direct_sound_samples/cries/meloetta.aif differ diff --git a/sound/direct_sound_samples/cries/meltan.aif b/sound/direct_sound_samples/cries/meltan.aif index 54abac63ab..c3bd648e3a 100644 Binary files a/sound/direct_sound_samples/cries/meltan.aif and b/sound/direct_sound_samples/cries/meltan.aif differ diff --git a/sound/direct_sound_samples/cries/meowscarada.aif b/sound/direct_sound_samples/cries/meowscarada.aif new file mode 100644 index 0000000000..981a07a206 Binary files /dev/null and b/sound/direct_sound_samples/cries/meowscarada.aif differ diff --git a/sound/direct_sound_samples/cries/metagross_mega.aif b/sound/direct_sound_samples/cries/metagross_mega.aif new file mode 100644 index 0000000000..3f9ca589cf Binary files /dev/null and b/sound/direct_sound_samples/cries/metagross_mega.aif differ diff --git a/sound/direct_sound_samples/cries/mewtwo_mega_x.aif b/sound/direct_sound_samples/cries/mewtwo_mega_x.aif new file mode 100644 index 0000000000..c484f7b9eb Binary files /dev/null and b/sound/direct_sound_samples/cries/mewtwo_mega_x.aif differ diff --git a/sound/direct_sound_samples/cries/mewtwo_mega_y.aif b/sound/direct_sound_samples/cries/mewtwo_mega_y.aif new file mode 100644 index 0000000000..87a5d54ad9 Binary files /dev/null and b/sound/direct_sound_samples/cries/mewtwo_mega_y.aif differ diff --git a/sound/direct_sound_samples/cries/mienfoo.aif b/sound/direct_sound_samples/cries/mienfoo.aif index 3e826b31b9..f948e6f3d9 100644 Binary files a/sound/direct_sound_samples/cries/mienfoo.aif and b/sound/direct_sound_samples/cries/mienfoo.aif differ diff --git a/sound/direct_sound_samples/cries/mienshao.aif b/sound/direct_sound_samples/cries/mienshao.aif index 3f9199c7ac..652be57339 100644 Binary files a/sound/direct_sound_samples/cries/mienshao.aif and b/sound/direct_sound_samples/cries/mienshao.aif differ diff --git a/sound/direct_sound_samples/cries/minccino.aif b/sound/direct_sound_samples/cries/minccino.aif index 9299615cef..c10f3f7c9f 100644 Binary files a/sound/direct_sound_samples/cries/minccino.aif and b/sound/direct_sound_samples/cries/minccino.aif differ diff --git a/sound/direct_sound_samples/cries/miraidon.aif b/sound/direct_sound_samples/cries/miraidon.aif new file mode 100644 index 0000000000..f07c1c360c Binary files /dev/null and b/sound/direct_sound_samples/cries/miraidon.aif differ diff --git a/sound/direct_sound_samples/cries/morpeko.aif b/sound/direct_sound_samples/cries/morpeko.aif deleted file mode 100644 index 06937a3b1e..0000000000 Binary files a/sound/direct_sound_samples/cries/morpeko.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/morpeko_full_belly.aif b/sound/direct_sound_samples/cries/morpeko_full_belly.aif new file mode 100644 index 0000000000..2feb33beb8 Binary files /dev/null and b/sound/direct_sound_samples/cries/morpeko_full_belly.aif differ diff --git a/sound/direct_sound_samples/cries/morpeko_hangry.aif b/sound/direct_sound_samples/cries/morpeko_hangry.aif index a09a85770d..84a89a2c01 100644 Binary files a/sound/direct_sound_samples/cries/morpeko_hangry.aif and b/sound/direct_sound_samples/cries/morpeko_hangry.aif differ diff --git a/sound/direct_sound_samples/cries/munkidori.aif b/sound/direct_sound_samples/cries/munkidori.aif new file mode 100644 index 0000000000..7cb192732e Binary files /dev/null and b/sound/direct_sound_samples/cries/munkidori.aif differ diff --git a/sound/direct_sound_samples/cries/munna.aif b/sound/direct_sound_samples/cries/munna.aif index 923f951826..35167be4a2 100644 Binary files a/sound/direct_sound_samples/cries/munna.aif and b/sound/direct_sound_samples/cries/munna.aif differ diff --git a/sound/direct_sound_samples/cries/nacli.aif b/sound/direct_sound_samples/cries/nacli.aif new file mode 100644 index 0000000000..b29d579ee2 Binary files /dev/null and b/sound/direct_sound_samples/cries/nacli.aif differ diff --git a/sound/direct_sound_samples/cries/naclstack.aif b/sound/direct_sound_samples/cries/naclstack.aif new file mode 100644 index 0000000000..973fb82281 Binary files /dev/null and b/sound/direct_sound_samples/cries/naclstack.aif differ diff --git a/sound/direct_sound_samples/cries/noibat.aif b/sound/direct_sound_samples/cries/noibat.aif index c77342cc1c..a00200aab0 100644 Binary files a/sound/direct_sound_samples/cries/noibat.aif and b/sound/direct_sound_samples/cries/noibat.aif differ diff --git a/sound/direct_sound_samples/cries/nymble.aif b/sound/direct_sound_samples/cries/nymble.aif new file mode 100644 index 0000000000..b74a198b2b Binary files /dev/null and b/sound/direct_sound_samples/cries/nymble.aif differ diff --git a/sound/direct_sound_samples/cries/ogerpon.aif b/sound/direct_sound_samples/cries/ogerpon.aif new file mode 100644 index 0000000000..e5cb2f7bad Binary files /dev/null and b/sound/direct_sound_samples/cries/ogerpon.aif differ diff --git a/sound/direct_sound_samples/cries/oinkologne_female.aif b/sound/direct_sound_samples/cries/oinkologne_female.aif new file mode 100644 index 0000000000..885f2e3a7d Binary files /dev/null and b/sound/direct_sound_samples/cries/oinkologne_female.aif differ diff --git a/sound/direct_sound_samples/cries/oinkologne_male.aif b/sound/direct_sound_samples/cries/oinkologne_male.aif new file mode 100644 index 0000000000..611794de31 Binary files /dev/null and b/sound/direct_sound_samples/cries/oinkologne_male.aif differ diff --git a/sound/direct_sound_samples/cries/okidogi.aif b/sound/direct_sound_samples/cries/okidogi.aif new file mode 100644 index 0000000000..afa9cfbddd Binary files /dev/null and b/sound/direct_sound_samples/cries/okidogi.aif differ diff --git a/sound/direct_sound_samples/cries/orbeetle.aif b/sound/direct_sound_samples/cries/orbeetle.aif index fdf498b9a0..e1ede8361a 100644 Binary files a/sound/direct_sound_samples/cries/orbeetle.aif and b/sound/direct_sound_samples/cries/orbeetle.aif differ diff --git a/sound/direct_sound_samples/cries/oricorio.aif b/sound/direct_sound_samples/cries/oricorio_baile.aif similarity index 100% rename from sound/direct_sound_samples/cries/oricorio.aif rename to sound/direct_sound_samples/cries/oricorio_baile.aif diff --git a/sound/direct_sound_samples/cries/oricorio_pom_pom.aif b/sound/direct_sound_samples/cries/oricorio_pom_pom.aif deleted file mode 100644 index bb4c1f27a0..0000000000 Binary files a/sound/direct_sound_samples/cries/oricorio_pom_pom.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/orthworm.aif b/sound/direct_sound_samples/cries/orthworm.aif new file mode 100644 index 0000000000..a3be4aecc0 Binary files /dev/null and b/sound/direct_sound_samples/cries/orthworm.aif differ diff --git a/sound/direct_sound_samples/cries/oshawott.aif b/sound/direct_sound_samples/cries/oshawott.aif index 6e78b950dc..87b28da484 100644 Binary files a/sound/direct_sound_samples/cries/oshawott.aif and b/sound/direct_sound_samples/cries/oshawott.aif differ diff --git a/sound/direct_sound_samples/cries/overqwil.aif b/sound/direct_sound_samples/cries/overqwil.aif index 56b3d97558..b5428ce944 100644 Binary files a/sound/direct_sound_samples/cries/overqwil.aif and b/sound/direct_sound_samples/cries/overqwil.aif differ diff --git a/sound/direct_sound_samples/cries/palafin_hero.aif b/sound/direct_sound_samples/cries/palafin_hero.aif new file mode 100644 index 0000000000..ff02e6a0e0 Binary files /dev/null and b/sound/direct_sound_samples/cries/palafin_hero.aif differ diff --git a/sound/direct_sound_samples/cries/palafin_zero.aif b/sound/direct_sound_samples/cries/palafin_zero.aif new file mode 100644 index 0000000000..3ee6bdb321 Binary files /dev/null and b/sound/direct_sound_samples/cries/palafin_zero.aif differ diff --git a/sound/direct_sound_samples/cries/palpitoad.aif b/sound/direct_sound_samples/cries/palpitoad.aif index 637965880f..a22b007bf0 100644 Binary files a/sound/direct_sound_samples/cries/palpitoad.aif and b/sound/direct_sound_samples/cries/palpitoad.aif differ diff --git a/sound/direct_sound_samples/cries/panpour.aif b/sound/direct_sound_samples/cries/panpour.aif index ba8b78d040..080e974b09 100644 Binary files a/sound/direct_sound_samples/cries/panpour.aif and b/sound/direct_sound_samples/cries/panpour.aif differ diff --git a/sound/direct_sound_samples/cries/pansage.aif b/sound/direct_sound_samples/cries/pansage.aif index b380d2fb0c..f5cd1a8b6c 100644 Binary files a/sound/direct_sound_samples/cries/pansage.aif and b/sound/direct_sound_samples/cries/pansage.aif differ diff --git a/sound/direct_sound_samples/cries/pansear.aif b/sound/direct_sound_samples/cries/pansear.aif index f8409cb13c..204046866e 100644 Binary files a/sound/direct_sound_samples/cries/pansear.aif and b/sound/direct_sound_samples/cries/pansear.aif differ diff --git a/sound/direct_sound_samples/cries/patrat.aif b/sound/direct_sound_samples/cries/patrat.aif index 37015b78d8..1bfddd3f9f 100644 Binary files a/sound/direct_sound_samples/cries/patrat.aif and b/sound/direct_sound_samples/cries/patrat.aif differ diff --git a/sound/direct_sound_samples/cries/pawmi.aif b/sound/direct_sound_samples/cries/pawmi.aif new file mode 100644 index 0000000000..fa9a9197cb Binary files /dev/null and b/sound/direct_sound_samples/cries/pawmi.aif differ diff --git a/sound/direct_sound_samples/cries/pawmo.aif b/sound/direct_sound_samples/cries/pawmo.aif new file mode 100644 index 0000000000..7fbf646c2f Binary files /dev/null and b/sound/direct_sound_samples/cries/pawmo.aif differ diff --git a/sound/direct_sound_samples/cries/pawmot.aif b/sound/direct_sound_samples/cries/pawmot.aif new file mode 100644 index 0000000000..6175b50542 Binary files /dev/null and b/sound/direct_sound_samples/cries/pawmot.aif differ diff --git a/sound/direct_sound_samples/cries/pawniard.aif b/sound/direct_sound_samples/cries/pawniard.aif index bb41ae40f3..db95da2044 100644 Binary files a/sound/direct_sound_samples/cries/pawniard.aif and b/sound/direct_sound_samples/cries/pawniard.aif differ diff --git a/sound/direct_sound_samples/cries/petilil.aif b/sound/direct_sound_samples/cries/petilil.aif index 05a9cd7836..ce243e499e 100644 Binary files a/sound/direct_sound_samples/cries/petilil.aif and b/sound/direct_sound_samples/cries/petilil.aif differ diff --git a/sound/direct_sound_samples/cries/pidgeot_mega.aif b/sound/direct_sound_samples/cries/pidgeot_mega.aif new file mode 100644 index 0000000000..89b846a1cc Binary files /dev/null and b/sound/direct_sound_samples/cries/pidgeot_mega.aif differ diff --git a/sound/direct_sound_samples/cries/pidove.aif b/sound/direct_sound_samples/cries/pidove.aif index 1459e7c082..faec9a046c 100644 Binary files a/sound/direct_sound_samples/cries/pidove.aif and b/sound/direct_sound_samples/cries/pidove.aif differ diff --git a/sound/direct_sound_samples/cries/pignite.aif b/sound/direct_sound_samples/cries/pignite.aif index 73c005364e..3cb8d0a850 100644 Binary files a/sound/direct_sound_samples/cries/pignite.aif and b/sound/direct_sound_samples/cries/pignite.aif differ diff --git a/sound/direct_sound_samples/cries/pinsir_mega.aif b/sound/direct_sound_samples/cries/pinsir_mega.aif new file mode 100644 index 0000000000..f6f2b6649f Binary files /dev/null and b/sound/direct_sound_samples/cries/pinsir_mega.aif differ diff --git a/sound/direct_sound_samples/cries/poltchageist.aif b/sound/direct_sound_samples/cries/poltchageist.aif new file mode 100644 index 0000000000..d861a0022b Binary files /dev/null and b/sound/direct_sound_samples/cries/poltchageist.aif differ diff --git a/sound/direct_sound_samples/cries/polteageist.aif b/sound/direct_sound_samples/cries/polteageist.aif index d002d7b537..f9051a25c4 100644 Binary files a/sound/direct_sound_samples/cries/polteageist.aif and b/sound/direct_sound_samples/cries/polteageist.aif differ diff --git a/sound/direct_sound_samples/cries/primal_groudon.aif b/sound/direct_sound_samples/cries/primal_groudon.aif deleted file mode 100644 index c47922bb20..0000000000 Binary files a/sound/direct_sound_samples/cries/primal_groudon.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/primal_kyogre.aif b/sound/direct_sound_samples/cries/primal_kyogre.aif deleted file mode 100644 index 50ae7ed92d..0000000000 Binary files a/sound/direct_sound_samples/cries/primal_kyogre.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/purrloin.aif b/sound/direct_sound_samples/cries/purrloin.aif index 85cde5c7bb..23791edb2b 100644 Binary files a/sound/direct_sound_samples/cries/purrloin.aif and b/sound/direct_sound_samples/cries/purrloin.aif differ diff --git a/sound/direct_sound_samples/cries/quaquaval.aif b/sound/direct_sound_samples/cries/quaquaval.aif new file mode 100644 index 0000000000..d04fac23ff Binary files /dev/null and b/sound/direct_sound_samples/cries/quaquaval.aif differ diff --git a/sound/direct_sound_samples/cries/quaxly.aif b/sound/direct_sound_samples/cries/quaxly.aif new file mode 100644 index 0000000000..81606b4a19 Binary files /dev/null and b/sound/direct_sound_samples/cries/quaxly.aif differ diff --git a/sound/direct_sound_samples/cries/quaxwell.aif b/sound/direct_sound_samples/cries/quaxwell.aif new file mode 100644 index 0000000000..62669362ea Binary files /dev/null and b/sound/direct_sound_samples/cries/quaxwell.aif differ diff --git a/sound/direct_sound_samples/cries/rabsca.aif b/sound/direct_sound_samples/cries/rabsca.aif new file mode 100644 index 0000000000..9d36d01cdc Binary files /dev/null and b/sound/direct_sound_samples/cries/rabsca.aif differ diff --git a/sound/direct_sound_samples/cries/rayquaza_mega.aif b/sound/direct_sound_samples/cries/rayquaza_mega.aif new file mode 100644 index 0000000000..1b78a94e93 Binary files /dev/null and b/sound/direct_sound_samples/cries/rayquaza_mega.aif differ diff --git a/sound/direct_sound_samples/cries/regieleki.aif b/sound/direct_sound_samples/cries/regieleki.aif index f13c7223a7..75061bccff 100644 Binary files a/sound/direct_sound_samples/cries/regieleki.aif and b/sound/direct_sound_samples/cries/regieleki.aif differ diff --git a/sound/direct_sound_samples/cries/rellor.aif b/sound/direct_sound_samples/cries/rellor.aif new file mode 100644 index 0000000000..0a2f79805f Binary files /dev/null and b/sound/direct_sound_samples/cries/rellor.aif differ diff --git a/sound/direct_sound_samples/cries/reuniclus.aif b/sound/direct_sound_samples/cries/reuniclus.aif index 677130d8b1..75d92858c4 100644 Binary files a/sound/direct_sound_samples/cries/reuniclus.aif and b/sound/direct_sound_samples/cries/reuniclus.aif differ diff --git a/sound/direct_sound_samples/cries/revavroom.aif b/sound/direct_sound_samples/cries/revavroom.aif new file mode 100644 index 0000000000..731e2496c7 Binary files /dev/null and b/sound/direct_sound_samples/cries/revavroom.aif differ diff --git a/sound/direct_sound_samples/cries/rillaboom.aif b/sound/direct_sound_samples/cries/rillaboom.aif index 183354a787..c6a8b8932d 100644 Binary files a/sound/direct_sound_samples/cries/rillaboom.aif and b/sound/direct_sound_samples/cries/rillaboom.aif differ diff --git a/sound/direct_sound_samples/cries/roaring_moon.aif b/sound/direct_sound_samples/cries/roaring_moon.aif new file mode 100644 index 0000000000..3c258496dc Binary files /dev/null and b/sound/direct_sound_samples/cries/roaring_moon.aif differ diff --git a/sound/direct_sound_samples/cries/roggenrola.aif b/sound/direct_sound_samples/cries/roggenrola.aif index 9ce801a0bb..c4764dc82b 100644 Binary files a/sound/direct_sound_samples/cries/roggenrola.aif and b/sound/direct_sound_samples/cries/roggenrola.aif differ diff --git a/sound/direct_sound_samples/cries/rookidee.aif b/sound/direct_sound_samples/cries/rookidee.aif index f5264b9e27..036d3e2f17 100644 Binary files a/sound/direct_sound_samples/cries/rookidee.aif and b/sound/direct_sound_samples/cries/rookidee.aif differ diff --git a/sound/direct_sound_samples/cries/rufflet.aif b/sound/direct_sound_samples/cries/rufflet.aif index 5d59c04ea3..2aff67b5cf 100644 Binary files a/sound/direct_sound_samples/cries/rufflet.aif and b/sound/direct_sound_samples/cries/rufflet.aif differ diff --git a/sound/direct_sound_samples/cries/sableye_mega.aif b/sound/direct_sound_samples/cries/sableye_mega.aif new file mode 100644 index 0000000000..47d4a869ec Binary files /dev/null and b/sound/direct_sound_samples/cries/sableye_mega.aif differ diff --git a/sound/direct_sound_samples/cries/salamence_mega.aif b/sound/direct_sound_samples/cries/salamence_mega.aif new file mode 100644 index 0000000000..90ce0b6ff8 Binary files /dev/null and b/sound/direct_sound_samples/cries/salamence_mega.aif differ diff --git a/sound/direct_sound_samples/cries/sandaconda.aif b/sound/direct_sound_samples/cries/sandaconda.aif index f71b725323..13dd2b5ec2 100644 Binary files a/sound/direct_sound_samples/cries/sandaconda.aif and b/sound/direct_sound_samples/cries/sandaconda.aif differ diff --git a/sound/direct_sound_samples/cries/sandile.aif b/sound/direct_sound_samples/cries/sandile.aif index 2718b02388..9e52575b7c 100644 Binary files a/sound/direct_sound_samples/cries/sandile.aif and b/sound/direct_sound_samples/cries/sandile.aif differ diff --git a/sound/direct_sound_samples/cries/sandy_shocks.aif b/sound/direct_sound_samples/cries/sandy_shocks.aif new file mode 100644 index 0000000000..d26cfc8817 Binary files /dev/null and b/sound/direct_sound_samples/cries/sandy_shocks.aif differ diff --git a/sound/direct_sound_samples/cries/sawk.aif b/sound/direct_sound_samples/cries/sawk.aif index 5ae99e1cfe..ebfe11e4a8 100644 Binary files a/sound/direct_sound_samples/cries/sawk.aif and b/sound/direct_sound_samples/cries/sawk.aif differ diff --git a/sound/direct_sound_samples/cries/sawsbuck.aif b/sound/direct_sound_samples/cries/sawsbuck.aif index 8204786ee6..745d3761d3 100644 Binary files a/sound/direct_sound_samples/cries/sawsbuck.aif and b/sound/direct_sound_samples/cries/sawsbuck.aif differ diff --git a/sound/direct_sound_samples/cries/sceptile_mega.aif b/sound/direct_sound_samples/cries/sceptile_mega.aif new file mode 100644 index 0000000000..50a16a1ee3 Binary files /dev/null and b/sound/direct_sound_samples/cries/sceptile_mega.aif differ diff --git a/sound/direct_sound_samples/cries/scizor_mega.aif b/sound/direct_sound_samples/cries/scizor_mega.aif new file mode 100644 index 0000000000..c970f8083b Binary files /dev/null and b/sound/direct_sound_samples/cries/scizor_mega.aif differ diff --git a/sound/direct_sound_samples/cries/scorbunny.aif b/sound/direct_sound_samples/cries/scorbunny.aif index 92fac55602..120dd0f888 100644 Binary files a/sound/direct_sound_samples/cries/scorbunny.aif and b/sound/direct_sound_samples/cries/scorbunny.aif differ diff --git a/sound/direct_sound_samples/cries/scovillain.aif b/sound/direct_sound_samples/cries/scovillain.aif new file mode 100644 index 0000000000..d84cb24087 Binary files /dev/null and b/sound/direct_sound_samples/cries/scovillain.aif differ diff --git a/sound/direct_sound_samples/cries/scrafty.aif b/sound/direct_sound_samples/cries/scrafty.aif index 974fb0e139..218c897f4a 100644 Binary files a/sound/direct_sound_samples/cries/scrafty.aif and b/sound/direct_sound_samples/cries/scrafty.aif differ diff --git a/sound/direct_sound_samples/cries/scraggy.aif b/sound/direct_sound_samples/cries/scraggy.aif index 3c024a8f40..5b6958fcaf 100644 Binary files a/sound/direct_sound_samples/cries/scraggy.aif and b/sound/direct_sound_samples/cries/scraggy.aif differ diff --git a/sound/direct_sound_samples/cries/scream_tail.aif b/sound/direct_sound_samples/cries/scream_tail.aif new file mode 100644 index 0000000000..a64bbdb051 Binary files /dev/null and b/sound/direct_sound_samples/cries/scream_tail.aif differ diff --git a/sound/direct_sound_samples/cries/seismitoad.aif b/sound/direct_sound_samples/cries/seismitoad.aif index 2a88a1e771..267979cc0b 100644 Binary files a/sound/direct_sound_samples/cries/seismitoad.aif and b/sound/direct_sound_samples/cries/seismitoad.aif differ diff --git a/sound/direct_sound_samples/cries/serperior.aif b/sound/direct_sound_samples/cries/serperior.aif index a14fa9f221..73ea832cd4 100644 Binary files a/sound/direct_sound_samples/cries/serperior.aif and b/sound/direct_sound_samples/cries/serperior.aif differ diff --git a/sound/direct_sound_samples/cries/servine.aif b/sound/direct_sound_samples/cries/servine.aif index dbe5c10634..aa687c02d6 100644 Binary files a/sound/direct_sound_samples/cries/servine.aif and b/sound/direct_sound_samples/cries/servine.aif differ diff --git a/sound/direct_sound_samples/cries/sewaddle.aif b/sound/direct_sound_samples/cries/sewaddle.aif index 58ac188020..9918b44645 100644 Binary files a/sound/direct_sound_samples/cries/sewaddle.aif and b/sound/direct_sound_samples/cries/sewaddle.aif differ diff --git a/sound/direct_sound_samples/cries/sharpedo_mega.aif b/sound/direct_sound_samples/cries/sharpedo_mega.aif new file mode 100644 index 0000000000..454ec15892 Binary files /dev/null and b/sound/direct_sound_samples/cries/sharpedo_mega.aif differ diff --git a/sound/direct_sound_samples/cries/shaymin.aif b/sound/direct_sound_samples/cries/shaymin_land.aif similarity index 100% rename from sound/direct_sound_samples/cries/shaymin.aif rename to sound/direct_sound_samples/cries/shaymin_land.aif diff --git a/sound/direct_sound_samples/cries/shaymin_sky.aif b/sound/direct_sound_samples/cries/shaymin_sky.aif index bd1cb0ed0f..3a340b56ec 100644 Binary files a/sound/direct_sound_samples/cries/shaymin_sky.aif and b/sound/direct_sound_samples/cries/shaymin_sky.aif differ diff --git a/sound/direct_sound_samples/cries/shroodle.aif b/sound/direct_sound_samples/cries/shroodle.aif new file mode 100644 index 0000000000..b60ef3ade3 Binary files /dev/null and b/sound/direct_sound_samples/cries/shroodle.aif differ diff --git a/sound/direct_sound_samples/cries/sigilyph.aif b/sound/direct_sound_samples/cries/sigilyph.aif index 544ebccd6a..cce44936cf 100644 Binary files a/sound/direct_sound_samples/cries/sigilyph.aif and b/sound/direct_sound_samples/cries/sigilyph.aif differ diff --git a/sound/direct_sound_samples/cries/silicobra.aif b/sound/direct_sound_samples/cries/silicobra.aif index 886c6c8b79..3b9f5e13fc 100644 Binary files a/sound/direct_sound_samples/cries/silicobra.aif and b/sound/direct_sound_samples/cries/silicobra.aif differ diff --git a/sound/direct_sound_samples/cries/simipour.aif b/sound/direct_sound_samples/cries/simipour.aif index 77640cd8b0..47ac114690 100644 Binary files a/sound/direct_sound_samples/cries/simipour.aif and b/sound/direct_sound_samples/cries/simipour.aif differ diff --git a/sound/direct_sound_samples/cries/simisage.aif b/sound/direct_sound_samples/cries/simisage.aif index 078e699570..0117cf73fc 100644 Binary files a/sound/direct_sound_samples/cries/simisage.aif and b/sound/direct_sound_samples/cries/simisage.aif differ diff --git a/sound/direct_sound_samples/cries/simisear.aif b/sound/direct_sound_samples/cries/simisear.aif index 2a767ae0fc..c6f9ec2297 100644 Binary files a/sound/direct_sound_samples/cries/simisear.aif and b/sound/direct_sound_samples/cries/simisear.aif differ diff --git a/sound/direct_sound_samples/cries/sinistcha.aif b/sound/direct_sound_samples/cries/sinistcha.aif new file mode 100644 index 0000000000..e9a619c3f0 Binary files /dev/null and b/sound/direct_sound_samples/cries/sinistcha.aif differ diff --git a/sound/direct_sound_samples/cries/sinistea.aif b/sound/direct_sound_samples/cries/sinistea.aif index 35ace612b0..912a0800f9 100644 Binary files a/sound/direct_sound_samples/cries/sinistea.aif and b/sound/direct_sound_samples/cries/sinistea.aif differ diff --git a/sound/direct_sound_samples/cries/skeledirge.aif b/sound/direct_sound_samples/cries/skeledirge.aif new file mode 100644 index 0000000000..720e102019 Binary files /dev/null and b/sound/direct_sound_samples/cries/skeledirge.aif differ diff --git a/sound/direct_sound_samples/cries/slither_wing.aif b/sound/direct_sound_samples/cries/slither_wing.aif new file mode 100644 index 0000000000..d61cadb5eb Binary files /dev/null and b/sound/direct_sound_samples/cries/slither_wing.aif differ diff --git a/sound/direct_sound_samples/cries/slowbro_mega.aif b/sound/direct_sound_samples/cries/slowbro_mega.aif new file mode 100644 index 0000000000..6ae2a0fb68 Binary files /dev/null and b/sound/direct_sound_samples/cries/slowbro_mega.aif differ diff --git a/sound/direct_sound_samples/cries/slowpoke_galarian.aif b/sound/direct_sound_samples/cries/slowpoke_galarian.aif index d26b930f06..2cb7b8a5f3 100644 Binary files a/sound/direct_sound_samples/cries/slowpoke_galarian.aif and b/sound/direct_sound_samples/cries/slowpoke_galarian.aif differ diff --git a/sound/direct_sound_samples/cries/smoliv.aif b/sound/direct_sound_samples/cries/smoliv.aif new file mode 100644 index 0000000000..f30f88a1c3 Binary files /dev/null and b/sound/direct_sound_samples/cries/smoliv.aif differ diff --git a/sound/direct_sound_samples/cries/sneasler.aif b/sound/direct_sound_samples/cries/sneasler.aif index fa2fbef2bc..77b4f99a21 100644 Binary files a/sound/direct_sound_samples/cries/sneasler.aif and b/sound/direct_sound_samples/cries/sneasler.aif differ diff --git a/sound/direct_sound_samples/cries/snivy.aif b/sound/direct_sound_samples/cries/snivy.aif index fac1d4afd5..f7f9790a16 100644 Binary files a/sound/direct_sound_samples/cries/snivy.aif and b/sound/direct_sound_samples/cries/snivy.aif differ diff --git a/sound/direct_sound_samples/cries/snom.aif b/sound/direct_sound_samples/cries/snom.aif index bacc67ff42..5166e1a384 100644 Binary files a/sound/direct_sound_samples/cries/snom.aif and b/sound/direct_sound_samples/cries/snom.aif differ diff --git a/sound/direct_sound_samples/cries/solosis.aif b/sound/direct_sound_samples/cries/solosis.aif index fa095e378a..875f608407 100644 Binary files a/sound/direct_sound_samples/cries/solosis.aif and b/sound/direct_sound_samples/cries/solosis.aif differ diff --git a/sound/direct_sound_samples/cries/spectrier.aif b/sound/direct_sound_samples/cries/spectrier.aif index 1db3088e5d..058cc9f8c5 100644 Binary files a/sound/direct_sound_samples/cries/spectrier.aif and b/sound/direct_sound_samples/cries/spectrier.aif differ diff --git a/sound/direct_sound_samples/cries/spidops.aif b/sound/direct_sound_samples/cries/spidops.aif new file mode 100644 index 0000000000..e1f2c32715 Binary files /dev/null and b/sound/direct_sound_samples/cries/spidops.aif differ diff --git a/sound/direct_sound_samples/cries/sprigatito.aif b/sound/direct_sound_samples/cries/sprigatito.aif new file mode 100644 index 0000000000..5d6b5c966d Binary files /dev/null and b/sound/direct_sound_samples/cries/sprigatito.aif differ diff --git a/sound/direct_sound_samples/cries/squawkabilly.aif b/sound/direct_sound_samples/cries/squawkabilly.aif new file mode 100644 index 0000000000..140243d802 Binary files /dev/null and b/sound/direct_sound_samples/cries/squawkabilly.aif differ diff --git a/sound/direct_sound_samples/cries/steelix_mega.aif b/sound/direct_sound_samples/cries/steelix_mega.aif new file mode 100644 index 0000000000..dfb068e161 Binary files /dev/null and b/sound/direct_sound_samples/cries/steelix_mega.aif differ diff --git a/sound/direct_sound_samples/cries/stoutland.aif b/sound/direct_sound_samples/cries/stoutland.aif index 0f8ff740ce..3175b64767 100644 Binary files a/sound/direct_sound_samples/cries/stoutland.aif and b/sound/direct_sound_samples/cries/stoutland.aif differ diff --git a/sound/direct_sound_samples/cries/stunfisk.aif b/sound/direct_sound_samples/cries/stunfisk.aif index 309dd54c96..5dbdb6dc9c 100644 Binary files a/sound/direct_sound_samples/cries/stunfisk.aif and b/sound/direct_sound_samples/cries/stunfisk.aif differ diff --git a/sound/direct_sound_samples/cries/swadloon.aif b/sound/direct_sound_samples/cries/swadloon.aif index d5b3a25c64..5de0315920 100644 Binary files a/sound/direct_sound_samples/cries/swadloon.aif and b/sound/direct_sound_samples/cries/swadloon.aif differ diff --git a/sound/direct_sound_samples/cries/swampert_mega.aif b/sound/direct_sound_samples/cries/swampert_mega.aif new file mode 100644 index 0000000000..c19ec99835 Binary files /dev/null and b/sound/direct_sound_samples/cries/swampert_mega.aif differ diff --git a/sound/direct_sound_samples/cries/swanna.aif b/sound/direct_sound_samples/cries/swanna.aif index ac9fe12aef..d7b01aed3b 100644 Binary files a/sound/direct_sound_samples/cries/swanna.aif and b/sound/direct_sound_samples/cries/swanna.aif differ diff --git a/sound/direct_sound_samples/cries/tadbulb.aif b/sound/direct_sound_samples/cries/tadbulb.aif new file mode 100644 index 0000000000..6944fa31dc Binary files /dev/null and b/sound/direct_sound_samples/cries/tadbulb.aif differ diff --git a/sound/direct_sound_samples/cries/tandemaus.aif b/sound/direct_sound_samples/cries/tandemaus.aif new file mode 100644 index 0000000000..c6aeb27e0c Binary files /dev/null and b/sound/direct_sound_samples/cries/tandemaus.aif differ diff --git a/sound/direct_sound_samples/cries/tarountula.aif b/sound/direct_sound_samples/cries/tarountula.aif new file mode 100644 index 0000000000..a08f51ee20 Binary files /dev/null and b/sound/direct_sound_samples/cries/tarountula.aif differ diff --git a/sound/direct_sound_samples/cries/tatsugiri_curly.aif b/sound/direct_sound_samples/cries/tatsugiri_curly.aif new file mode 100644 index 0000000000..ad84b37285 Binary files /dev/null and b/sound/direct_sound_samples/cries/tatsugiri_curly.aif differ diff --git a/sound/direct_sound_samples/cries/tatsugiri_droopy.aif b/sound/direct_sound_samples/cries/tatsugiri_droopy.aif new file mode 100644 index 0000000000..38b0a7949a Binary files /dev/null and b/sound/direct_sound_samples/cries/tatsugiri_droopy.aif differ diff --git a/graphics/unused/redyellowgreen_frame.bin b/sound/direct_sound_samples/cries/tatsugiri_stretchy.aif similarity index 50% rename from graphics/unused/redyellowgreen_frame.bin rename to sound/direct_sound_samples/cries/tatsugiri_stretchy.aif index 6852998fb8..ad1fbe930b 100644 Binary files a/graphics/unused/redyellowgreen_frame.bin and b/sound/direct_sound_samples/cries/tatsugiri_stretchy.aif differ diff --git a/sound/direct_sound_samples/cries/tepig.aif b/sound/direct_sound_samples/cries/tepig.aif index 63b19c40bc..fa226ef1f1 100644 Binary files a/sound/direct_sound_samples/cries/tepig.aif and b/sound/direct_sound_samples/cries/tepig.aif differ diff --git a/sound/direct_sound_samples/cries/terrakion.aif b/sound/direct_sound_samples/cries/terrakion.aif index dcae3a4658..77e5c71ca2 100644 Binary files a/sound/direct_sound_samples/cries/terrakion.aif and b/sound/direct_sound_samples/cries/terrakion.aif differ diff --git a/sound/direct_sound_samples/cries/throh.aif b/sound/direct_sound_samples/cries/throh.aif index 5192e50ac8..176d1065d6 100644 Binary files a/sound/direct_sound_samples/cries/throh.aif and b/sound/direct_sound_samples/cries/throh.aif differ diff --git a/sound/direct_sound_samples/cries/thundurus.aif b/sound/direct_sound_samples/cries/thundurus_incarnate.aif similarity index 100% rename from sound/direct_sound_samples/cries/thundurus.aif rename to sound/direct_sound_samples/cries/thundurus_incarnate.aif diff --git a/sound/direct_sound_samples/cries/thwackey.aif b/sound/direct_sound_samples/cries/thwackey.aif index bd30a0c0e0..dff37f5c80 100644 Binary files a/sound/direct_sound_samples/cries/thwackey.aif and b/sound/direct_sound_samples/cries/thwackey.aif differ diff --git a/sound/direct_sound_samples/cries/timburr.aif b/sound/direct_sound_samples/cries/timburr.aif index 1374144d52..839bfb59b7 100644 Binary files a/sound/direct_sound_samples/cries/timburr.aif and b/sound/direct_sound_samples/cries/timburr.aif differ diff --git a/sound/direct_sound_samples/cries/ting_lu.aif b/sound/direct_sound_samples/cries/ting_lu.aif new file mode 100644 index 0000000000..82cbff16f3 Binary files /dev/null and b/sound/direct_sound_samples/cries/ting_lu.aif differ diff --git a/sound/direct_sound_samples/cries/tinkatink.aif b/sound/direct_sound_samples/cries/tinkatink.aif new file mode 100644 index 0000000000..24b50dbbf0 Binary files /dev/null and b/sound/direct_sound_samples/cries/tinkatink.aif differ diff --git a/sound/direct_sound_samples/cries/tinkaton.aif b/sound/direct_sound_samples/cries/tinkaton.aif new file mode 100644 index 0000000000..c48068f692 Binary files /dev/null and b/sound/direct_sound_samples/cries/tinkaton.aif differ diff --git a/sound/direct_sound_samples/cries/tinkatuff.aif b/sound/direct_sound_samples/cries/tinkatuff.aif new file mode 100644 index 0000000000..aa096ef113 Binary files /dev/null and b/sound/direct_sound_samples/cries/tinkatuff.aif differ diff --git a/sound/direct_sound_samples/cries/tirtouga.aif b/sound/direct_sound_samples/cries/tirtouga.aif index 0df1a695ad..d32ec5ef3c 100644 Binary files a/sound/direct_sound_samples/cries/tirtouga.aif and b/sound/direct_sound_samples/cries/tirtouga.aif differ diff --git a/sound/direct_sound_samples/cries/toedscool.aif b/sound/direct_sound_samples/cries/toedscool.aif new file mode 100644 index 0000000000..a153ed4d87 Binary files /dev/null and b/sound/direct_sound_samples/cries/toedscool.aif differ diff --git a/sound/direct_sound_samples/cries/toedscruel.aif b/sound/direct_sound_samples/cries/toedscruel.aif new file mode 100644 index 0000000000..87fc37decd Binary files /dev/null and b/sound/direct_sound_samples/cries/toedscruel.aif differ diff --git a/sound/direct_sound_samples/cries/tornadus.aif b/sound/direct_sound_samples/cries/tornadus.aif deleted file mode 100644 index 17107f6e2a..0000000000 Binary files a/sound/direct_sound_samples/cries/tornadus.aif and /dev/null differ diff --git a/sound/direct_sound_samples/cries/tornadus_incarnate.aif b/sound/direct_sound_samples/cries/tornadus_incarnate.aif new file mode 100644 index 0000000000..30f96ec8fe Binary files /dev/null and b/sound/direct_sound_samples/cries/tornadus_incarnate.aif differ diff --git a/sound/direct_sound_samples/cries/toxel.aif b/sound/direct_sound_samples/cries/toxel.aif index a53da654a5..2f1304295b 100644 Binary files a/sound/direct_sound_samples/cries/toxel.aif and b/sound/direct_sound_samples/cries/toxel.aif differ diff --git a/sound/direct_sound_samples/cries/toxtricity.aif b/sound/direct_sound_samples/cries/toxtricity_amped.aif similarity index 100% rename from sound/direct_sound_samples/cries/toxtricity.aif rename to sound/direct_sound_samples/cries/toxtricity_amped.aif diff --git a/sound/direct_sound_samples/cries/tranquill.aif b/sound/direct_sound_samples/cries/tranquill.aif index f5c652fb11..e11795686b 100644 Binary files a/sound/direct_sound_samples/cries/tranquill.aif and b/sound/direct_sound_samples/cries/tranquill.aif differ diff --git a/sound/direct_sound_samples/cries/trubbish.aif b/sound/direct_sound_samples/cries/trubbish.aif index 321f1baa11..7bde68d8ca 100644 Binary files a/sound/direct_sound_samples/cries/trubbish.aif and b/sound/direct_sound_samples/cries/trubbish.aif differ diff --git a/sound/direct_sound_samples/cries/tympole.aif b/sound/direct_sound_samples/cries/tympole.aif index 774317ffba..172aab0560 100644 Binary files a/sound/direct_sound_samples/cries/tympole.aif and b/sound/direct_sound_samples/cries/tympole.aif differ diff --git a/sound/direct_sound_samples/cries/tynamo.aif b/sound/direct_sound_samples/cries/tynamo.aif index bbb08cfdc7..647040c17a 100644 Binary files a/sound/direct_sound_samples/cries/tynamo.aif and b/sound/direct_sound_samples/cries/tynamo.aif differ diff --git a/sound/direct_sound_samples/cries/tyranitar_mega.aif b/sound/direct_sound_samples/cries/tyranitar_mega.aif new file mode 100644 index 0000000000..020118b388 Binary files /dev/null and b/sound/direct_sound_samples/cries/tyranitar_mega.aif differ diff --git a/sound/direct_sound_samples/cries/uncomp_klefki.aif b/sound/direct_sound_samples/cries/uncomp_klefki.aif index 4ffa19b575..4af6a9d6d1 100644 Binary files a/sound/direct_sound_samples/cries/uncomp_klefki.aif and b/sound/direct_sound_samples/cries/uncomp_klefki.aif differ diff --git a/sound/direct_sound_samples/cries/uncomp_oricorio_pom_pom.aif b/sound/direct_sound_samples/cries/uncomp_oricorio_pom_pom.aif new file mode 100644 index 0000000000..a37b0537ec Binary files /dev/null and b/sound/direct_sound_samples/cries/uncomp_oricorio_pom_pom.aif differ diff --git a/sound/direct_sound_samples/cries/unfezant.aif b/sound/direct_sound_samples/cries/unfezant.aif index dadbed9480..4a3a8a9b07 100644 Binary files a/sound/direct_sound_samples/cries/unfezant.aif and b/sound/direct_sound_samples/cries/unfezant.aif differ diff --git a/sound/direct_sound_samples/cries/ursaluna.aif b/sound/direct_sound_samples/cries/ursaluna.aif index 7f054dc5cb..f2e96997f1 100644 Binary files a/sound/direct_sound_samples/cries/ursaluna.aif and b/sound/direct_sound_samples/cries/ursaluna.aif differ diff --git a/sound/direct_sound_samples/cries/urshifu.aif b/sound/direct_sound_samples/cries/urshifu_single_strike_style.aif similarity index 100% rename from sound/direct_sound_samples/cries/urshifu.aif rename to sound/direct_sound_samples/cries/urshifu_single_strike_style.aif diff --git a/sound/direct_sound_samples/cries/vanillish.aif b/sound/direct_sound_samples/cries/vanillish.aif index e53b51040b..07fe3555e4 100644 Binary files a/sound/direct_sound_samples/cries/vanillish.aif and b/sound/direct_sound_samples/cries/vanillish.aif differ diff --git a/sound/direct_sound_samples/cries/vanillite.aif b/sound/direct_sound_samples/cries/vanillite.aif index 72bbe2485d..e982d31bee 100644 Binary files a/sound/direct_sound_samples/cries/vanillite.aif and b/sound/direct_sound_samples/cries/vanillite.aif differ diff --git a/sound/direct_sound_samples/cries/vanilluxe.aif b/sound/direct_sound_samples/cries/vanilluxe.aif index 45f2d085de..94b6f03492 100644 Binary files a/sound/direct_sound_samples/cries/vanilluxe.aif and b/sound/direct_sound_samples/cries/vanilluxe.aif differ diff --git a/sound/direct_sound_samples/cries/varoom.aif b/sound/direct_sound_samples/cries/varoom.aif new file mode 100644 index 0000000000..731bdce2d6 Binary files /dev/null and b/sound/direct_sound_samples/cries/varoom.aif differ diff --git a/sound/direct_sound_samples/cries/veluza.aif b/sound/direct_sound_samples/cries/veluza.aif new file mode 100644 index 0000000000..9bcf8974ff Binary files /dev/null and b/sound/direct_sound_samples/cries/veluza.aif differ diff --git a/sound/direct_sound_samples/cries/venipede.aif b/sound/direct_sound_samples/cries/venipede.aif index 43a6639815..4ccde9b768 100644 Binary files a/sound/direct_sound_samples/cries/venipede.aif and b/sound/direct_sound_samples/cries/venipede.aif differ diff --git a/sound/direct_sound_samples/cries/venusaur_mega.aif b/sound/direct_sound_samples/cries/venusaur_mega.aif new file mode 100644 index 0000000000..cec11aaae2 Binary files /dev/null and b/sound/direct_sound_samples/cries/venusaur_mega.aif differ diff --git a/sound/direct_sound_samples/cries/victini.aif b/sound/direct_sound_samples/cries/victini.aif index 31801a064c..4bd7d7c1ca 100644 Binary files a/sound/direct_sound_samples/cries/victini.aif and b/sound/direct_sound_samples/cries/victini.aif differ diff --git a/sound/direct_sound_samples/cries/virizion.aif b/sound/direct_sound_samples/cries/virizion.aif index 296aaa829e..06cf7a86f3 100644 Binary files a/sound/direct_sound_samples/cries/virizion.aif and b/sound/direct_sound_samples/cries/virizion.aif differ diff --git a/sound/direct_sound_samples/cries/vullaby.aif b/sound/direct_sound_samples/cries/vullaby.aif index 41beb9ed60..97df0d14f9 100644 Binary files a/sound/direct_sound_samples/cries/vullaby.aif and b/sound/direct_sound_samples/cries/vullaby.aif differ diff --git a/sound/direct_sound_samples/cries/walking_wake.aif b/sound/direct_sound_samples/cries/walking_wake.aif new file mode 100644 index 0000000000..88518dd200 Binary files /dev/null and b/sound/direct_sound_samples/cries/walking_wake.aif differ diff --git a/sound/direct_sound_samples/cries/watchog.aif b/sound/direct_sound_samples/cries/watchog.aif index e5f35aa07b..a3bd8a0f7e 100644 Binary files a/sound/direct_sound_samples/cries/watchog.aif and b/sound/direct_sound_samples/cries/watchog.aif differ diff --git a/sound/direct_sound_samples/cries/wattrel.aif b/sound/direct_sound_samples/cries/wattrel.aif new file mode 100644 index 0000000000..7390eea50a Binary files /dev/null and b/sound/direct_sound_samples/cries/wattrel.aif differ diff --git a/sound/direct_sound_samples/cries/whirlipede.aif b/sound/direct_sound_samples/cries/whirlipede.aif index 09628dce6e..f2b6c5fa69 100644 Binary files a/sound/direct_sound_samples/cries/whirlipede.aif and b/sound/direct_sound_samples/cries/whirlipede.aif differ diff --git a/sound/direct_sound_samples/cries/wiglett.aif b/sound/direct_sound_samples/cries/wiglett.aif new file mode 100644 index 0000000000..d377681aef Binary files /dev/null and b/sound/direct_sound_samples/cries/wiglett.aif differ diff --git a/sound/direct_sound_samples/cries/wishiwashi_school.aif b/sound/direct_sound_samples/cries/wishiwashi_school.aif index 6236328ff7..ab0ac98535 100644 Binary files a/sound/direct_sound_samples/cries/wishiwashi_school.aif and b/sound/direct_sound_samples/cries/wishiwashi_school.aif differ diff --git a/sound/direct_sound_samples/cries/wishiwashi.aif b/sound/direct_sound_samples/cries/wishiwashi_solo.aif similarity index 100% rename from sound/direct_sound_samples/cries/wishiwashi.aif rename to sound/direct_sound_samples/cries/wishiwashi_solo.aif diff --git a/sound/direct_sound_samples/cries/wo_chien.aif b/sound/direct_sound_samples/cries/wo_chien.aif new file mode 100644 index 0000000000..fa201694eb Binary files /dev/null and b/sound/direct_sound_samples/cries/wo_chien.aif differ diff --git a/sound/direct_sound_samples/cries/woobat.aif b/sound/direct_sound_samples/cries/woobat.aif index 4aa987aa04..d66f5bd157 100644 Binary files a/sound/direct_sound_samples/cries/woobat.aif and b/sound/direct_sound_samples/cries/woobat.aif differ diff --git a/sound/direct_sound_samples/cries/wugtrio.aif b/sound/direct_sound_samples/cries/wugtrio.aif new file mode 100644 index 0000000000..6c92cae873 Binary files /dev/null and b/sound/direct_sound_samples/cries/wugtrio.aif differ diff --git a/sound/direct_sound_samples/cries/wyrdeer.aif b/sound/direct_sound_samples/cries/wyrdeer.aif index 4e932c758c..4d0c83dc51 100644 Binary files a/sound/direct_sound_samples/cries/wyrdeer.aif and b/sound/direct_sound_samples/cries/wyrdeer.aif differ diff --git a/sound/direct_sound_samples/cries/zacian_crowned_sword.aif b/sound/direct_sound_samples/cries/zacian_crowned_sword.aif index 19d9d66737..5e47f9275b 100644 Binary files a/sound/direct_sound_samples/cries/zacian_crowned_sword.aif and b/sound/direct_sound_samples/cries/zacian_crowned_sword.aif differ diff --git a/sound/direct_sound_samples/cries/zacian.aif b/sound/direct_sound_samples/cries/zacian_hero_of_many_battles.aif similarity index 100% rename from sound/direct_sound_samples/cries/zacian.aif rename to sound/direct_sound_samples/cries/zacian_hero_of_many_battles.aif diff --git a/sound/direct_sound_samples/cries/zamazenta_crowned_shield.aif b/sound/direct_sound_samples/cries/zamazenta_crowned_shield.aif index 5542b20a65..1e7eae771b 100644 Binary files a/sound/direct_sound_samples/cries/zamazenta_crowned_shield.aif and b/sound/direct_sound_samples/cries/zamazenta_crowned_shield.aif differ diff --git a/sound/direct_sound_samples/cries/zamazenta.aif b/sound/direct_sound_samples/cries/zamazenta_hero_of_many_battles.aif similarity index 100% rename from sound/direct_sound_samples/cries/zamazenta.aif rename to sound/direct_sound_samples/cries/zamazenta_hero_of_many_battles.aif diff --git a/sound/direct_sound_samples/cries/zarude.aif b/sound/direct_sound_samples/cries/zarude.aif index 61c87f5a3b..d1a2a76aa4 100644 Binary files a/sound/direct_sound_samples/cries/zarude.aif and b/sound/direct_sound_samples/cries/zarude.aif differ diff --git a/sound/direct_sound_samples/cries/zebstrika.aif b/sound/direct_sound_samples/cries/zebstrika.aif index ed075a857f..74ef8d943a 100644 Binary files a/sound/direct_sound_samples/cries/zebstrika.aif and b/sound/direct_sound_samples/cries/zebstrika.aif differ diff --git a/sound/direct_sound_samples/cries/zoroark.aif b/sound/direct_sound_samples/cries/zoroark.aif index 6184a67bd5..7cd45de062 100644 Binary files a/sound/direct_sound_samples/cries/zoroark.aif and b/sound/direct_sound_samples/cries/zoroark.aif differ diff --git a/sound/direct_sound_samples/cries/zorua.aif b/sound/direct_sound_samples/cries/zorua.aif index aa5e686446..039955ac19 100644 Binary files a/sound/direct_sound_samples/cries/zorua.aif and b/sound/direct_sound_samples/cries/zorua.aif differ diff --git a/sound/direct_sound_samples/cries/zweilous.aif b/sound/direct_sound_samples/cries/zweilous.aif index a4db324683..987f436d9a 100644 Binary files a/sound/direct_sound_samples/cries/zweilous.aif and b/sound/direct_sound_samples/cries/zweilous.aif differ diff --git a/sound/direct_sound_samples/cries/zygarde.aif b/sound/direct_sound_samples/cries/zygarde_50.aif similarity index 100% rename from sound/direct_sound_samples/cries/zygarde.aif rename to sound/direct_sound_samples/cries/zygarde_50.aif diff --git a/src/AgbRfu_LinkManager.c b/src/AgbRfu_LinkManager.c index 747a6c7849..e4ee377f7b 100644 --- a/src/AgbRfu_LinkManager.c +++ b/src/AgbRfu_LinkManager.c @@ -229,7 +229,7 @@ u8 rfu_LMAN_CHILD_connectParent(u16 parentId, u16 connect_period) return 0; } -static void rfu_LMAN_PARENT_stopWaitLinkRecoveryAndDisconnect(u8 bm_targetSlot) +static void UNUSED rfu_LMAN_PARENT_stopWaitLinkRecoveryAndDisconnect(u8 bm_targetSlot) { u8 i; @@ -1295,7 +1295,7 @@ void rfu_LMAN_setMSCCallback(void (*MSC_callback_p)(u16)) rfu_setMSCCallback(rfu_LMAN_MSC_callback); } -static void rfu_LMAN_setLMANCallback(void (*func)(u8, u8)) +static void UNUSED rfu_LMAN_setLMANCallback(void (*func)(u8, u8)) { lman.LMAN_callback = func; } @@ -1315,7 +1315,7 @@ u8 rfu_LMAN_setLinkRecovery(u8 enable_flag, u16 recovery_period) return 0; } -static u8 rfu_LMAN_setNIFailCounterLimit(u16 NI_failCounter_limit) +static u8 UNUSED rfu_LMAN_setNIFailCounterLimit(u16 NI_failCounter_limit) { if (gRfuLinkStatus->sendSlotNIFlag | gRfuLinkStatus->recvSlotNIFlag) { @@ -1327,7 +1327,7 @@ static u8 rfu_LMAN_setNIFailCounterLimit(u16 NI_failCounter_limit) return 0; } -static u8 rfu_LMAN_setFastSearchParent(u8 enable_flag) +static u8 UNUSED rfu_LMAN_setFastSearchParent(u8 enable_flag) { if (lman.state == LMAN_STATE_START_SEARCH_PARENT || lman.state == LMAN_STATE_POLL_SEARCH_PARENT || lman.state == LMAN_STATE_END_SEARCH_PARENT) { diff --git a/src/apprentice.c b/src/apprentice.c index 0560142307..dc7ac92a86 100644 --- a/src/apprentice.c +++ b/src/apprentice.c @@ -343,7 +343,7 @@ static u16 GetRandomAlternateMove(u8 monId) id = APPRENTICE_SPECIES_ID(monId); species = gApprentices[PLAYER_APPRENTICE.id].species[id]; - learnset = gLevelUpLearnsets[species]; + learnset = GetSpeciesLevelUpLearnset(species); j = 0; if (PLAYER_APPRENTICE.lvlMode == APPRENTICE_LVL_MODE_50) @@ -351,7 +351,7 @@ static u16 GetRandomAlternateMove(u8 monId) else // == APPRENTICE_LVL_MODE_OPEN level = 60; // Despite being open level, level up moves are only read up to level 60 - for (j = 0; learnset[j].move != LEVEL_UP_END; j++) + for (j = 0; learnset[j].move != LEVEL_UP_MOVE_END; j++) { if (learnset[j].level > level) break; @@ -467,8 +467,8 @@ static void GetLatestLearnedMoves(u16 species, u16 *moves) else // == APPRENTICE_LVL_MODE_OPEN level = 60; - learnset = gLevelUpLearnsets[species]; - for (i = 0; learnset[i].move != LEVEL_UP_END; i++) + learnset = GetSpeciesLevelUpLearnset(species); + for (i = 0; learnset[i].move != LEVEL_UP_MOVE_END; i++) { if (learnset[i].level > level) break; @@ -623,6 +623,9 @@ static void CreateApprenticeMenu(u8 menu) default: left = 0; top = 0; +#ifdef UBFIX + return; +#endif break; } @@ -1278,8 +1281,7 @@ const u8 *GetApprenticeNameInLanguage(u32 apprenticeId, s32 language) } } -// Functionally unused -static void Task_SwitchToFollowupFuncAfterButtonPress(u8 taskId) +static void UNUSED Task_SwitchToFollowupFuncAfterButtonPress(u8 taskId) { if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) SwitchTaskToFollowupFunc(taskId); @@ -1302,8 +1304,7 @@ static void ExecuteFuncAfterButtonPress(void (*func)(void)) gTasks[taskId].data[1] = (u32)(func) >> 16; } -// Unused -static void ExecuteFollowupFuncAfterButtonPress(TaskFunc task) +static void UNUSED ExecuteFollowupFuncAfterButtonPress(TaskFunc task) { u8 taskId = CreateTask(Task_SwitchToFollowupFuncAfterButtonPress, 1); SetTaskFuncWithFollowupFunc(taskId, Task_SwitchToFollowupFuncAfterButtonPress, task); diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index b289b51115..4f7d04438b 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -30,7 +30,7 @@ static u32 ChooseMoveOrAction_Singles(u32 battlerAi); static u32 ChooseMoveOrAction_Doubles(u32 battlerAi); -static inline void BattleAI_DoAIProcessing(struct AI_ThinkingStruct *aiThink, u32 battler); +static inline void BattleAI_DoAIProcessing(struct AI_ThinkingStruct *aiThink, u32 battlerAi, u32 battlerDef); static bool32 IsPinchBerryItemEffect(u32 holdEffect); // ewram @@ -118,7 +118,7 @@ void BattleAI_SetupItems(void) static u32 GetWildAiFlags(void) { u32 avgLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL); - u32 flags; + u32 flags = 0; if (IsDoubleBattle()) avgLevel = (GetMonData(&gEnemyParty[0], MON_DATA_LEVEL) + GetMonData(&gEnemyParty[1], MON_DATA_LEVEL)) / 2; @@ -174,7 +174,7 @@ void BattleAI_SetupFlags(void) // sBattler_AI set in ComputeBattleAiScores void BattleAI_SetupAIData(u8 defaultScoreMoves, u32 battler) { - s32 i, move, dmg; + s32 i; u8 moveLimitations; // Clear AI data but preserve the flags. @@ -186,9 +186,9 @@ void BattleAI_SetupAIData(u8 defaultScoreMoves, u32 battler) for (i = 0; i < MAX_MON_MOVES; i++) { if (defaultScoreMoves & 1) - AI_THINKING_STRUCT->score[i] = 100; + SET_SCORE(battler, i, AI_SCORE_DEFAULT); else - AI_THINKING_STRUCT->score[i] = 0; + SET_SCORE(battler, i, 0); defaultScoreMoves >>= 1; } @@ -199,7 +199,7 @@ void BattleAI_SetupAIData(u8 defaultScoreMoves, u32 battler) for (i = 0; i < MAX_MON_MOVES; i++) { if (gBitTable[i] & moveLimitations) - AI_THINKING_STRUCT->score[i] = 0; + SET_SCORE(battler, i, 0); } //sBattler_AI = battler; @@ -219,6 +219,9 @@ u32 BattleAI_ChooseMoveOrAction(void) // Clear protect structures, some flags may be set during AI calcs // e.g. pranksterElevated from GetMovePriority memset(&gProtectStructs, 0, MAX_BATTLERS_COUNT * sizeof(struct ProtectStruct)); + #if TESTING + TestRunner_Battle_CheckAiMoveScores(sBattler_AI); + #endif // TESTING return ret; } @@ -328,9 +331,9 @@ static void SetBattlerAiData(u32 battler, struct AiLogicData *aiData) { u32 ability, holdEffect; - ability = aiData->abilities[battler] = AI_GetAbility(battler); + ability = aiData->abilities[battler] = AI_DecideKnownAbilityForTurn(battler); aiData->items[battler] = gBattleMons[battler].item; - holdEffect = aiData->holdEffects[battler] = AI_GetHoldEffect(battler); + holdEffect = aiData->holdEffects[battler] = AI_DecideHoldEffectForTurn(battler); aiData->holdEffectParams[battler] = GetBattlerHoldEffectParam(battler); aiData->predictedMoves[battler] = gLastMoves[battler]; aiData->hpPercents[battler] = GetHealthPercentage(battler); @@ -338,6 +341,19 @@ static void SetBattlerAiData(u32 battler, struct AiLogicData *aiData) aiData->speedStats[battler] = GetBattlerTotalSpeedStatArgs(battler, ability, holdEffect); } +static u32 Ai_SetMoveAccuracy(struct AiLogicData *aiData, u32 battlerAtk, u32 battlerDef, u32 move) +{ + u32 accuracy; + u32 abilityAtk = aiData->abilities[battlerAtk]; + u32 abilityDef = aiData->abilities[battlerAtk]; + if (abilityAtk == ABILITY_NO_GUARD || abilityDef == ABILITY_NO_GUARD || gBattleMoves[move].accuracy == 0) // Moves with accuracy 0 or no guard ability always hit. + accuracy = 100; + else + accuracy = GetTotalAccuracy(battlerAtk, battlerDef, move, abilityAtk, abilityDef, aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef]); + + return accuracy; +} + static void SetBattlerAiMovesData(struct AiLogicData *aiData, u32 battlerAtk, u32 battlersCount) { u32 battlerDef, i, weather; @@ -361,16 +377,17 @@ static void SetBattlerAiMovesData(struct AiLogicData *aiData, u32 battlerAtk, u3 if (move != 0 && move != 0xFFFF - //&& gBattleMoves[move].power != 0 /* we want to get effectiveness of status moves */ - && !(aiData->moveLimitations[battlerAtk] & gBitTable[i])) { + //&& gBattleMoves[move].power != 0 /* we want to get effectiveness and accuracy of status moves */ + && !(aiData->moveLimitations[battlerAtk] & gBitTable[i])) + { dmg = AI_CalcDamage(move, battlerAtk, battlerDef, &effectiveness, TRUE, weather); + aiData->moveAccuracy[battlerAtk][battlerDef][i] = Ai_SetMoveAccuracy(aiData, battlerAtk, battlerDef, move); } aiData->simulatedDmg[battlerAtk][battlerDef][i] = dmg; aiData->effectiveness[battlerAtk][battlerDef][i] = effectiveness; } } - SetMoveDamageResult(battlerAtk, moves); } void SetAiLogicDataForTurn(struct AiLogicData *aiData) @@ -399,7 +416,7 @@ void SetAiLogicDataForTurn(struct AiLogicData *aiData) static bool32 AI_SwitchMonIfSuitable(u32 battler) { - u32 monToSwitchId = GetMostSuitableMonToSwitchInto(battler); + u32 monToSwitchId = AI_DATA->mostSuitableMonId; if (monToSwitchId != PARTY_SIZE) { AI_DATA->shouldSwitchMon |= gBitTable[battler]; @@ -474,7 +491,7 @@ static u32 ChooseMoveOrAction_Singles(u32 battlerAi) u8 currentMoveArray[MAX_MON_MOVES]; u8 consideredMoveArray[MAX_MON_MOVES]; u32 numOfBestMoves; - s32 i, id; + s32 i; u32 flags = AI_THINKING_STRUCT->aiFlags; AI_DATA->partnerMove = 0; // no ally @@ -482,7 +499,7 @@ static u32 ChooseMoveOrAction_Singles(u32 battlerAi) { if (flags & 1) { - BattleAI_DoAIProcessing(AI_THINKING_STRUCT, battlerAi); + BattleAI_DoAIProcessing(AI_THINKING_STRUCT, battlerAi, gBattlerTarget); } flags >>= 1; AI_THINKING_STRUCT->aiLogicId++; @@ -490,6 +507,7 @@ static u32 ChooseMoveOrAction_Singles(u32 battlerAi) for (i = 0; i < MAX_MON_MOVES; i++) { gBattleStruct->aiFinalScore[battlerAi][gBattlerTarget][i] = AI_THINKING_STRUCT->score[i]; + } // Check special AI actions. @@ -556,15 +574,16 @@ static u32 ChooseMoveOrAction_Doubles(u32 battlerAi) gBattlerTarget = i; - AI_DATA->partnerMove = GetAllyChosenMove(i); + AI_DATA->partnerMove = GetAllyChosenMove(battlerAi); AI_THINKING_STRUCT->aiLogicId = 0; AI_THINKING_STRUCT->movesetIndex = 0; flags = AI_THINKING_STRUCT->aiFlags; + while (flags != 0) { if (flags & 1) { - BattleAI_DoAIProcessing(AI_THINKING_STRUCT, battlerAi); + BattleAI_DoAIProcessing(AI_THINKING_STRUCT, battlerAi, gBattlerTarget); } flags >>= 1; AI_THINKING_STRUCT->aiLogicId++; @@ -608,7 +627,7 @@ static u32 ChooseMoveOrAction_Doubles(u32 battlerAi) bestMovePointsForTarget[i] = mostViableMovesScores[0]; // Don't use a move against ally if it has less than 100 points. - if (i == BATTLE_PARTNER(battlerAi) && bestMovePointsForTarget[i] < 100) + if (i == BATTLE_PARTNER(battlerAi) && bestMovePointsForTarget[i] < AI_SCORE_DEFAULT) { bestMovePointsForTarget[i] = -1; } @@ -648,25 +667,37 @@ static u32 ChooseMoveOrAction_Doubles(u32 battlerAi) return actionOrMoveIndex[gBattlerTarget]; } -static inline void BattleAI_DoAIProcessing(struct AI_ThinkingStruct *aiThink, u32 battler) +static inline bool32 ShouldConsiderMoveForBattler(u32 battlerAi, u32 battlerDef, u32 move) +{ + if (battlerAi == BATTLE_PARTNER(battlerDef)) + { + if (gBattleMoves[move].target == MOVE_TARGET_BOTH || gBattleMoves[move].target == MOVE_TARGET_OPPONENTS_FIELD) + return FALSE; + } + return TRUE; +} + +static inline void BattleAI_DoAIProcessing(struct AI_ThinkingStruct *aiThink, u32 battlerAi, u32 battlerDef) { do { - if (gBattleMons[battler].pp[aiThink->movesetIndex] == 0) + if (gBattleMons[battlerAi].pp[aiThink->movesetIndex] == 0) aiThink->moveConsidered = MOVE_NONE; else - aiThink->moveConsidered = gBattleMons[battler].moves[aiThink->movesetIndex]; + aiThink->moveConsidered = gBattleMons[battlerAi].moves[aiThink->movesetIndex]; + // There is no point in calculating scores for all 3 battlers(2 opponents + 1 ally) with certain moves. if (aiThink->moveConsidered != MOVE_NONE - && aiThink->score[aiThink->movesetIndex] > 0) + && aiThink->score[aiThink->movesetIndex] > 0 + && ShouldConsiderMoveForBattler(battlerAi, battlerDef, aiThink->moveConsidered)) { if (aiThink->aiLogicId < ARRAY_COUNT(sBattleAiFuncTable) && sBattleAiFuncTable[aiThink->aiLogicId] != NULL) { // Call AI function aiThink->score[aiThink->movesetIndex] = - sBattleAiFuncTable[aiThink->aiLogicId](battler, - gBattlerTarget, + sBattleAiFuncTable[aiThink->aiLogicId](battlerAi, + battlerDef, aiThink->moveConsidered, aiThink->score[aiThink->movesetIndex]); } @@ -690,7 +721,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) u32 moveEffect = gBattleMoves[move].effect; s32 moveType; u32 moveTarget = AI_GetBattlerMoveTargetType(battlerAtk, move); - u32 accuracy = AI_GetMoveAccuracy(battlerAtk, battlerDef, move); struct AiLogicData *aiData = AI_DATA; u32 effectiveness = aiData->effectiveness[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex]; bool32 isDoubleBattle = IsValidDoubleBattle(battlerAtk); @@ -730,6 +760,9 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (IsSemiInvulnerable(battlerDef, move) && moveEffect != EFFECT_SEMI_INVULNERABLE && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) RETURN_SCORE_MINUS(20); // if target off screen and we go first, don't use move + if (IsChargingMove(battlerAtk, moveEffect) && CanTargetFaintAi(battlerDef, battlerAtk)) + RETURN_SCORE_MINUS(10); + // check if negates type switch (effectiveness) { @@ -754,11 +787,11 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_WILL_O_WISP: case EFFECT_TOXIC: case EFFECT_LEECH_SEED: - score -= 5; + ADJUST_SCORE(-5); break; case EFFECT_CURSE: if (IS_BATTLER_OF_TYPE(battlerAtk, TYPE_GHOST)) // Don't use Curse if you're a ghost type vs a Magic Guard user, they'll take no damage. - score -= 5; + ADJUST_SCORE(-5); break; } break; @@ -817,7 +850,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) RETURN_SCORE_MINUS(10); break; case ABILITY_FLOWER_VEIL: - if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS) && (IsNonVolatileStatusMoveEffect(moveEffect) || IsStatLoweringMoveEffect(moveEffect))) + if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS) && (IsNonVolatileStatusMoveEffect(moveEffect) || IsStatLoweringEffect(moveEffect))) RETURN_SCORE_MINUS(10); break; case ABILITY_MAGIC_BOUNCE: @@ -825,13 +858,13 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) RETURN_SCORE_MINUS(20); break; case ABILITY_CONTRARY: - if (IsStatLoweringMoveEffect(moveEffect)) + if (IsStatLoweringEffect(moveEffect)) RETURN_SCORE_MINUS(20); break; case ABILITY_CLEAR_BODY: case ABILITY_FULL_METAL_BODY: case ABILITY_WHITE_SMOKE: - if (IsStatLoweringMoveEffect(moveEffect)) + if (IsStatLoweringEffect(moveEffect)) RETURN_SCORE_MINUS(10); break; case ABILITY_HYPER_CUTTER: @@ -839,6 +872,10 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) && move != MOVE_PLAY_NICE && move != MOVE_NOBLE_ROAR && move != MOVE_TEARFUL_LOOK && move != MOVE_VENOM_DRENCH) RETURN_SCORE_MINUS(10); break; + case ABILITY_ILLUMINATE: + if (B_ILLUMINATE_EFFECT < GEN_9) + break; + // fallthrough case ABILITY_KEEN_EYE: if (moveEffect == EFFECT_ACCURACY_DOWN || moveEffect == EFFECT_ACCURACY_DOWN_2) RETURN_SCORE_MINUS(10); @@ -849,7 +886,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; case ABILITY_DEFIANT: case ABILITY_COMPETITIVE: - if (IsStatLoweringMoveEffect(moveEffect) && !IS_TARGETING_PARTNER(battlerAtk, battlerDef)) + if (IsStatLoweringEffect(moveEffect) && !IS_TARGETING_PARTNER(battlerAtk, battlerDef)) RETURN_SCORE_MINUS(8); break; case ABILITY_COMATOSE: @@ -890,7 +927,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) RETURN_SCORE_MINUS(20); break; case ABILITY_FLOWER_VEIL: - if ((IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS)) && (IsNonVolatileStatusMoveEffect(moveEffect) || IsStatLoweringMoveEffect(moveEffect))) + if ((IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS)) && (IsNonVolatileStatusMoveEffect(moveEffect) || IsStatLoweringEffect(moveEffect))) RETURN_SCORE_MINUS(10); break; case ABILITY_AROMA_VEIL: @@ -907,11 +944,10 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) } // ignore def ability check // gen7+ dark type mons immune to priority->elevated moves from prankster - #if B_PRANKSTER_DARK_TYPES >= GEN_7 - if (aiData->abilities[battlerAtk] == ABILITY_PRANKSTER && IS_BATTLER_OF_TYPE(battlerDef, TYPE_DARK) && IS_MOVE_STATUS(move) + if (B_PRANKSTER_DARK_TYPES >= GEN_7 && IS_BATTLER_OF_TYPE(battlerDef, TYPE_DARK) + && aiData->abilities[battlerAtk] == ABILITY_PRANKSTER && IS_MOVE_STATUS(move) && !(moveTarget & (MOVE_TARGET_OPPONENTS_FIELD | MOVE_TARGET_USER))) RETURN_SCORE_MINUS(10); - #endif // terrain & effect checks if (AI_IsTerrainAffected(battlerDef, STATUS_FIELD_ELECTRIC_TERRAIN)) @@ -977,40 +1013,40 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; // check move damage case EFFECT_SLEEP: if (!AI_CanPutToSleep(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_EXPLOSION: if (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_WILL_SUICIDE)) - score -= 2; + ADJUST_SCORE(-2); if (effectiveness == AI_EFFECTIVENESS_x0) { - score -= 10; + ADJUST_SCORE(-10); } else if (IsAbilityOnField(ABILITY_DAMP) && !DoesBattlerIgnoreAbilityChecks(aiData->abilities[battlerAtk], move)) { - score -= 10; + ADJUST_SCORE(-10); } else if (CountUsablePartyMons(battlerAtk) == 0) { if (CountUsablePartyMons(battlerDef) != 0) - score -= 10; + ADJUST_SCORE(-10); else - score--; + ADJUST_SCORE(-1); } break; case EFFECT_DREAM_EATER: if (!AI_IsBattlerAsleepOrComatose(battlerDef)) - score -= 8; + ADJUST_SCORE(-8); else if (effectiveness == AI_EFFECTIVENESS_x0) - score -= 10; + ADJUST_SCORE(-10); break; // stat raising effects case EFFECT_ATTACK_UP: case EFFECT_ATTACK_UP_2: case EFFECT_ATTACK_UP_USER_ALLY: if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_ATK) || !HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_STUFF_CHEEKS: if (ItemId_GetPocket(gBattleMons[battlerAtk].item) != POCKET_BERRIES) @@ -1021,131 +1057,130 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_DEFENSE_UP_3: case EFFECT_DEFENSE_CURL: if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_DEF)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_SPECIAL_ATTACK_UP: case EFFECT_SPECIAL_ATTACK_UP_2: case EFFECT_SPECIAL_ATTACK_UP_3: if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPATK) || !HasMoveWithSplit(battlerAtk, SPLIT_SPECIAL)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_SPECIAL_DEFENSE_UP: case EFFECT_SPECIAL_DEFENSE_UP_2: if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPDEF)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_ACCURACY_UP: case EFFECT_ACCURACY_UP_2: if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_ACC)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_EVASION_UP: case EFFECT_EVASION_UP_2: case EFFECT_MINIMIZE: if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_EVASION)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_COSMIC_POWER: if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_DEF)) - score -= 10; + ADJUST_SCORE(-10); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPDEF)) - score -= 8; + ADJUST_SCORE(-8); break; case EFFECT_BULK_UP: if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_ATK) || !HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL)) - score -= 10; + ADJUST_SCORE(-10); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_DEF)) - score -= 8; + ADJUST_SCORE(-8); break; case EFFECT_CALM_MIND: if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPATK)) - score -= 10; + ADJUST_SCORE(-10); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPDEF)) - score -= 8; + ADJUST_SCORE(-8); break; case EFFECT_DRAGON_DANCE: if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_ATK) || !HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL)) - score -= 10; + ADJUST_SCORE(-10); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPEED)) - score -= 8; + ADJUST_SCORE(-8); break; case EFFECT_COIL: if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_ACC)) - score -= 10; + ADJUST_SCORE(-10); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_ATK) || !HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL)) - score -= 8; + ADJUST_SCORE(-8); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_DEF)) - score -= 6; + ADJUST_SCORE(-6); break; case EFFECT_ATTACK_ACCURACY_UP: //hone claws if (aiData->abilities[battlerAtk] != ABILITY_CONTRARY) { if (gBattleMons[battlerAtk].statStages[STAT_ATK] >= MAX_STAT_STAGE && (gBattleMons[battlerAtk].statStages[STAT_ACC] >= MAX_STAT_STAGE || !HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL))) - score -= 10; + ADJUST_SCORE(-10); break; } else { - score -= 10; + ADJUST_SCORE(-10); } break; case EFFECT_CHARGE: if (gStatuses3[battlerAtk] & STATUS3_CHARGED_UP) - score -= 20; + ADJUST_SCORE(-20); else if (!HasMoveWithType(battlerAtk, TYPE_ELECTRIC)) - score -= 10; - #if B_CHARGE_SPDEF_RAISE >= GEN_5 - else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPDEF)) - score -= 5; - #endif + ADJUST_SCORE(-10); + else if (B_CHARGE_SPDEF_RAISE >= GEN_5 + && !BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPDEF)) + ADJUST_SCORE(-5); break; case EFFECT_QUIVER_DANCE: case EFFECT_GEOMANCY: if (gBattleMons[battlerAtk].statStages[STAT_SPATK] >= MAX_STAT_STAGE || !HasMoveWithSplit(battlerAtk, SPLIT_SPECIAL)) - score -= 10; + ADJUST_SCORE(-10); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPEED)) - score -= 8; + ADJUST_SCORE(-8); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPDEF)) - score -= 6; + ADJUST_SCORE(-6); break; case EFFECT_VICTORY_DANCE: if (gBattleMons[battlerAtk].statStages[STAT_ATK] >= MAX_STAT_STAGE || !HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL)) - score -= 10; + ADJUST_SCORE(-10); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPEED)) - score -= 8; + ADJUST_SCORE(-8); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_DEF)) - score -= 6; + ADJUST_SCORE(-6); break; case EFFECT_SHIFT_GEAR: if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_ATK) || !HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL)) - score -= 10; + ADJUST_SCORE(-10); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPEED)) - score -= 8; + ADJUST_SCORE(-8); break; case EFFECT_SHELL_SMASH: if (aiData->abilities[battlerAtk] == ABILITY_CONTRARY) { if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_DEF)) - score -= 10; + ADJUST_SCORE(-10); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPDEF)) - score -= 8; + ADJUST_SCORE(-8); } else { if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_ATK) || !HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL)) - score -= 10; + ADJUST_SCORE(-10); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPATK) || !HasMoveWithSplit(battlerAtk, SPLIT_SPECIAL)) - score -= 8; + ADJUST_SCORE(-8); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPEED)) - score -= 6; + ADJUST_SCORE(-6); } break; case EFFECT_GROWTH: case EFFECT_ATTACK_SPATK_UP: // work up if ((!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_ATK) && !BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPATK)) || (!HasDamagingMove(battlerAtk))) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_ROTOTILLER: if (isDoubleBattle) @@ -1159,14 +1194,14 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) && (BattlerStatCanRise(BATTLE_PARTNER(battlerAtk), aiData->abilities[BATTLE_PARTNER(battlerAtk)], STAT_ATK) || BattlerStatCanRise(BATTLE_PARTNER(battlerAtk), aiData->abilities[BATTLE_PARTNER(battlerAtk)], STAT_SPATK)))) { - score -= 10; + ADJUST_SCORE(-10); } } else if (!(IS_BATTLER_OF_TYPE(battlerAtk, TYPE_GRASS) && AI_IsBattlerGrounded(battlerAtk) && (BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_ATK) || BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPATK)))) { - score -= 10; + ADJUST_SCORE(-10); } break; case EFFECT_GEAR_UP: @@ -1174,14 +1209,14 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { // same as growth, work up if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_ATK) || !HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL)) - score -= 10; + ADJUST_SCORE(-10); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPATK) || !HasMoveWithSplit(battlerAtk, SPLIT_SPECIAL)) - score -= 8; + ADJUST_SCORE(-8); break; } else if (!isDoubleBattle) { - score -= 10; // no partner and our stats wont rise, so don't use + ADJUST_SCORE(-10); // no partner and our stats wont rise, so don't use } if (isDoubleBattle) @@ -1190,29 +1225,29 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { if ((!BattlerStatCanRise(BATTLE_PARTNER(battlerAtk), aiData->abilities[BATTLE_PARTNER(battlerAtk)], STAT_ATK) || !HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL)) && (!BattlerStatCanRise(BATTLE_PARTNER(battlerAtk), aiData->abilities[BATTLE_PARTNER(battlerAtk)], STAT_SPATK) || !HasMoveWithSplit(battlerAtk, SPLIT_SPECIAL))) - score -= 10; + ADJUST_SCORE(-10); } else if (aiData->abilities[battlerAtk] != ABILITY_PLUS && aiData->abilities[battlerAtk] != ABILITY_MINUS) { - score -= 10; // nor our or our partner's ability is plus/minus + ADJUST_SCORE(-10); // nor our or our partner's ability is plus/minus } } break; case EFFECT_ACUPRESSURE: if (DoesSubstituteBlockMove(battlerAtk, battlerDef, move) || AreBattlersStatsMaxed(battlerDef)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_MAGNETIC_FLUX: if (aiData->abilities[battlerAtk] == ABILITY_PLUS || aiData->abilities[battlerAtk] == ABILITY_MINUS) { if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_DEF)) - score -= 10; + ADJUST_SCORE(-10); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPDEF)) - score -= 8; + ADJUST_SCORE(-8); } else if (!isDoubleBattle) { - score -= 10; // our stats wont rise from this move + ADJUST_SCORE(-10); // our stats wont rise from this move } if (isDoubleBattle) @@ -1220,13 +1255,13 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (aiData->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_PLUS || aiData->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_MINUS) { if (!BattlerStatCanRise(BATTLE_PARTNER(battlerAtk), aiData->abilities[BATTLE_PARTNER(battlerAtk)], STAT_DEF)) - score -= 10; + ADJUST_SCORE(-10); else if (!BattlerStatCanRise(BATTLE_PARTNER(battlerAtk), aiData->abilities[BATTLE_PARTNER(battlerAtk)], STAT_SPDEF)) - score -= 8; + ADJUST_SCORE(-8); } else if (aiData->abilities[battlerAtk] != ABILITY_PLUS && aiData->abilities[battlerAtk] != ABILITY_MINUS) { - score -= 10; // nor our or our partner's ability is plus/minus + ADJUST_SCORE(-10); // nor our or our partner's ability is plus/minus } } break; @@ -1234,310 +1269,293 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_ATTACK_DOWN: case EFFECT_ATTACK_DOWN_2: if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_ATK)) //|| !HasMoveWithSplit(battlerDef, SPLIT_PHYSICAL)) - score -= 10; + ADJUST_SCORE(-10); else if (aiData->abilities[battlerDef] == ABILITY_HYPER_CUTTER) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_DEFENSE_DOWN: case EFFECT_DEFENSE_DOWN_2: if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_DEF)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_SPEED_DOWN: case EFFECT_SPEED_DOWN_2: if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_SPEED)) - score -= 10; + ADJUST_SCORE(-10); else if (aiData->abilities[battlerDef] == ABILITY_SPEED_BOOST) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_SPECIAL_ATTACK_DOWN: case EFFECT_SPECIAL_ATTACK_DOWN_2: if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_SPATK)) //|| !HasMoveWithSplit(battlerDef, SPLIT_SPECIAL)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_SPECIAL_DEFENSE_DOWN: case EFFECT_SPECIAL_DEFENSE_DOWN_2: if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_SPDEF)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_ACCURACY_DOWN: case EFFECT_ACCURACY_DOWN_2: if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_ACC)) - score -= 10; - else if (aiData->abilities[battlerDef] == ABILITY_KEEN_EYE) - score -= 8; + ADJUST_SCORE(-10); + else if (aiData->abilities[battlerDef] == ABILITY_KEEN_EYE || (B_ILLUMINATE_EFFECT >= GEN_9 && aiData->abilities[battlerDef] == ABILITY_ILLUMINATE)) + ADJUST_SCORE(-8); break; case EFFECT_EVASION_DOWN: case EFFECT_EVASION_DOWN_2: if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_EVASION)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_TICKLE: if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_ATK)) - score -= 10; + ADJUST_SCORE(-10); else if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_DEF)) - score -= 8; + ADJUST_SCORE(-8); break; case EFFECT_VENOM_DRENCH: if (!(gBattleMons[battlerDef].status1 & STATUS1_PSN_ANY)) { - score -= 10; + ADJUST_SCORE(-10); } else { if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_SPEED)) - score -= 10; + ADJUST_SCORE(-10); else if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_SPATK)) - score -= 8; + ADJUST_SCORE(-8); else if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_ATK)) - score -= 6; + ADJUST_SCORE(-6); } break; case EFFECT_NOBLE_ROAR: if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_SPATK)) - score -= 10; + ADJUST_SCORE(-10); else if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_ATK)) - score -= 8; + ADJUST_SCORE(-8); break; case EFFECT_CAPTIVATE: if (!AreBattlersOfOppositeGender(battlerAtk, battlerDef)) - score -= 10; + ADJUST_SCORE(-10); break; // other case EFFECT_HAZE: if (PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) { - score -= 10; // partner already using haze + ADJUST_SCORE(-10); // partner already using haze } else { for (i = STAT_ATK; i < NUM_BATTLE_STATS; i++) { if (gBattleMons[battlerAtk].statStages[i] > DEFAULT_STAT_STAGE || gBattleMons[BATTLE_PARTNER(battlerAtk)].statStages[i] > DEFAULT_STAT_STAGE) - score -= 10; // Don't want to reset our boosted stats + ADJUST_SCORE(-10); // Don't want to reset our boosted stats } for (i = STAT_ATK; i < NUM_BATTLE_STATS; i++) { if (gBattleMons[battlerDef].statStages[i] < DEFAULT_STAT_STAGE || gBattleMons[BATTLE_PARTNER(battlerDef)].statStages[i] < DEFAULT_STAT_STAGE) - score -= 10; //Don't want to reset enemy lowered stats + ADJUST_SCORE(-10); //Don't want to reset enemy lowered stats } } break; //case EFFECT_BIDE: - //case EFFECT_SUPER_FANG: //case EFFECT_RECHARGE: - case EFFECT_LEVEL_DAMAGE: - case EFFECT_PSYWAVE: //case EFFECT_COUNTER: - //case EFFECT_FLAIL: - case EFFECT_RETURN: case EFFECT_PRESENT: - case EFFECT_FRUSTRATION: case EFFECT_SONICBOOM: //case EFFECT_MIRROR_COAT: - case EFFECT_SKULL_BASH: case EFFECT_FOCUS_PUNCH: - case EFFECT_SUPERPOWER: //case EFFECT_ENDEAVOR: - case EFFECT_LOW_KICK: // AI_CBM_HighRiskForDamage if (aiData->abilities[battlerDef] == ABILITY_WONDER_GUARD && effectiveness < AI_EFFECTIVENESS_x2) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_COUNTER: case EFFECT_MIRROR_COAT: if (IsBattlerIncapacitated(battlerDef, aiData->abilities[battlerDef]) || gBattleMons[battlerDef].status2 & (STATUS2_INFATUATION | STATUS2_CONFUSION)) - score--; + ADJUST_SCORE(-1); if (predictedMove == MOVE_NONE || GetBattleMoveSplit(predictedMove) == SPLIT_STATUS || DoesSubstituteBlockMove(battlerAtk, BATTLE_PARTNER(battlerDef), predictedMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_ROAR: if (CountUsablePartyMons(battlerDef) == 0) - score -= 10; + ADJUST_SCORE(-10); else if (aiData->abilities[battlerDef] == ABILITY_SUCTION_CUPS) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_TOXIC_THREAD: if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_SPEED)) - score--; // may still want to just poison + ADJUST_SCORE(-1); // may still want to just poison //fallthrough case EFFECT_POISON: case EFFECT_TOXIC: if (!AI_CanPoison(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_LIGHT_SCREEN: if (gSideStatuses[GetBattlerSide(battlerAtk)] & SIDE_STATUS_LIGHTSCREEN || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_REFLECT: if (gSideStatuses[GetBattlerSide(battlerAtk)] & SIDE_STATUS_REFLECT || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_AURORA_VEIL: if (gSideStatuses[GetBattlerSide(battlerAtk)] & SIDE_STATUS_AURORA_VEIL || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove) || !(weather & (B_WEATHER_HAIL | B_WEATHER_SNOW))) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_OHKO: - #if B_SHEER_COLD_IMMUNITY >= GEN_7 - if (move == MOVE_SHEER_COLD && IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE)) + if (B_SHEER_COLD_IMMUNITY >= GEN_7 && move == MOVE_SHEER_COLD && IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE)) return 0; - #endif if (!ShouldTryOHKO(battlerAtk, battlerDef, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], move)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_MIST: if (gSideStatuses[GetBattlerSide(battlerAtk)] & SIDE_STATUS_MIST || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_FOCUS_ENERGY: if (gBattleMons[battlerAtk].status2 & STATUS2_FOCUS_ENERGY) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_CONFUSE: case EFFECT_SWAGGER: case EFFECT_FLATTER: if (!AI_CanConfuse(battlerAtk, battlerDef, aiData->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_PARALYZE: if (!AI_CanParalyze(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_SUBSTITUTE: if (gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE || aiData->abilities[battlerDef] == ABILITY_INFILTRATOR) - score -= 8; + ADJUST_SCORE(-8); else if (aiData->hpPercents[battlerAtk] <= 25) - score -= 10; - #if B_SOUND_SUBSTITUTE >= GEN_6 - else if (HasSoundMove(battlerDef)) - score -= 8; - #endif + ADJUST_SCORE(-10); + else if (HasSubstituteIgnoringMove(battlerDef)) + ADJUST_SCORE(-8); break; case EFFECT_LEECH_SEED: if (gStatuses3[battlerDef] & STATUS3_LEECHSEED || IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS) || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); else if (aiData->abilities[battlerDef] == ABILITY_LIQUID_OOZE) - score -= 3; + ADJUST_SCORE(-3); break; case EFFECT_DISABLE: if (gDisableStructs[battlerDef].disableTimer == 0 - #if B_MENTAL_HERB >= GEN_5 - && aiData->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB - #endif + && (B_MENTAL_HERB < GEN_5 || aiData->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB) && !PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) { if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) // Attacker should go first { if (gLastMoves[battlerDef] == MOVE_NONE || gLastMoves[battlerDef] == 0xFFFF) - score -= 10; // no anticipated move to disable + ADJUST_SCORE(-10); // no anticipated move to disable } else if (predictedMove == MOVE_NONE) { - score -= 10; + ADJUST_SCORE(-10); } } else { - score -= 10; + ADJUST_SCORE(-10); } break; case EFFECT_ENCORE: if (gDisableStructs[battlerDef].encoreTimer == 0 - #if B_MENTAL_HERB >= GEN_5 - && aiData->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB - #endif + && (B_MENTAL_HERB < GEN_5 || aiData->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB) && !DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) { if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) // Attacker should go first { if (gLastMoves[battlerDef] == MOVE_NONE || gLastMoves[battlerDef] == 0xFFFF) - score -= 10; // no anticipated move to encore + ADJUST_SCORE(-10); // no anticipated move to encore } else if (predictedMove == MOVE_NONE) { - score -= 10; + ADJUST_SCORE(-10); } } else { - score -= 10; + ADJUST_SCORE(-10); } break; case EFFECT_SNORE: case EFFECT_SLEEP_TALK: if (IsWakeupTurn(battlerAtk) || !AI_IsBattlerAsleepOrComatose(battlerAtk)) - score -= 10; // if mon will wake up, is not asleep, or is not comatose + ADJUST_SCORE(-10); // if mon will wake up, is not asleep, or is not comatose break; case EFFECT_MEAN_LOOK: if (IsBattlerTrapped(battlerDef, TRUE) || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_NIGHTMARE: if (gBattleMons[battlerDef].status2 & STATUS2_NIGHTMARE) - score -= 10; + ADJUST_SCORE(-10); else if (!AI_IsBattlerAsleepOrComatose(battlerDef)) - score -= 8; + ADJUST_SCORE(-8); else if (DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_CURSE: if (IS_BATTLER_OF_TYPE(battlerAtk, TYPE_GHOST)) { if (gBattleMons[battlerDef].status2 & STATUS2_CURSED || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); else if (aiData->hpPercents[battlerAtk] <= 50) - score -= 6; + ADJUST_SCORE(-6); } else // regular curse { if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_ATK) || !HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL)) - score -= 10; + ADJUST_SCORE(-10); else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_DEF)) - score -= 8; + ADJUST_SCORE(-8); } break; case EFFECT_SPIKES: if (gSideTimers[GetBattlerSide(battlerDef)].spikesAmount >= 3) - score -= 10; + ADJUST_SCORE(-10); else if (PartnerMoveIsSameNoTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove) && gSideTimers[GetBattlerSide(battlerDef)].spikesAmount == 2) - score -= 10; // only one mon needs to set up the last layer of Spikes + ADJUST_SCORE(-10); // only one mon needs to set up the last layer of Spikes break; case EFFECT_STEALTH_ROCK: if (gSideTimers[GetBattlerSide(battlerDef)].stealthRockAmount > 0 || PartnerMoveIsSameNoTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) //Only one mon needs to set up Stealth Rocks - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_TOXIC_SPIKES: if (gSideTimers[GetBattlerSide(battlerDef)].toxicSpikesAmount >= 2) - score -= 10; + ADJUST_SCORE(-10); else if (PartnerMoveIsSameNoTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove) && gSideTimers[GetBattlerSide(battlerDef)].toxicSpikesAmount == 1) - score -= 10; // only one mon needs to set up the last layer of Toxic Spikes + ADJUST_SCORE(-10); // only one mon needs to set up the last layer of Toxic Spikes break; case EFFECT_STICKY_WEB: if (gSideTimers[GetBattlerSide(battlerDef)].stickyWebAmount) - score -= 10; + ADJUST_SCORE(-10); else if (PartnerMoveIsSameNoTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove) && gSideTimers[GetBattlerSide(battlerDef)].stickyWebAmount) - score -= 10; // only one mon needs to set up Sticky Web + ADJUST_SCORE(-10); // only one mon needs to set up Sticky Web break; case EFFECT_FORESIGHT: if (gBattleMons[battlerDef].status2 & STATUS2_FORESIGHT) - score -= 10; + ADJUST_SCORE(-10); else if (gBattleMons[battlerDef].statStages[STAT_EVASION] <= 4 || !(IS_BATTLER_OF_TYPE(battlerDef, TYPE_GHOST)) || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 9; + ADJUST_SCORE(-9); break; case EFFECT_PERISH_SONG: if (isDoubleBattle) @@ -1547,85 +1565,85 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) && aiData->abilities[BATTLE_PARTNER(battlerAtk)] != ABILITY_SOUNDPROOF && CountUsablePartyMons(FOE(battlerAtk)) >= 1) { - score -= 10; //Don't wipe your team if you're going to lose + ADJUST_SCORE(-10); //Don't wipe your team if you're going to lose } else if ((!IsBattlerAlive(FOE(battlerAtk)) || aiData->abilities[FOE(battlerAtk)] == ABILITY_SOUNDPROOF || gStatuses3[FOE(battlerAtk)] & STATUS3_PERISH_SONG) && (!IsBattlerAlive(BATTLE_PARTNER(FOE(battlerAtk))) || aiData->abilities[BATTLE_PARTNER(FOE(battlerAtk))] == ABILITY_SOUNDPROOF || gStatuses3[BATTLE_PARTNER(FOE(battlerAtk))] & STATUS3_PERISH_SONG)) { - score -= 10; //Both enemies are perish songed + ADJUST_SCORE(-10); //Both enemies are perish songed } else if (DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) { - score -= 10; + ADJUST_SCORE(-10); } } else { if (CountUsablePartyMons(battlerAtk) == 0 && aiData->abilities[battlerAtk] != ABILITY_SOUNDPROOF && CountUsablePartyMons(battlerDef) >= 1) - score -= 10; + ADJUST_SCORE(-10); if (gStatuses3[FOE(battlerAtk)] & STATUS3_PERISH_SONG || aiData->abilities[FOE(battlerAtk)] == ABILITY_SOUNDPROOF) - score -= 10; + ADJUST_SCORE(-10); } break; case EFFECT_SANDSTORM: if (weather & (B_WEATHER_SANDSTORM | B_WEATHER_PRIMAL_ANY) - || PartnerMoveEffectIsWeather(BATTLE_PARTNER(battlerAtk), aiData->partnerMove)) - score -= 8; + || IsMoveEffectWeather(aiData->partnerMove)) + ADJUST_SCORE(-8); break; case EFFECT_SUNNY_DAY: if (weather & (B_WEATHER_SUN | B_WEATHER_PRIMAL_ANY) - || PartnerMoveEffectIsWeather(BATTLE_PARTNER(battlerAtk), aiData->partnerMove)) - score -= 8; + || IsMoveEffectWeather(aiData->partnerMove)) + ADJUST_SCORE(-8); break; case EFFECT_RAIN_DANCE: if (weather & (B_WEATHER_RAIN | B_WEATHER_PRIMAL_ANY) - || PartnerMoveEffectIsWeather(BATTLE_PARTNER(battlerAtk), aiData->partnerMove)) - score -= 8; + || IsMoveEffectWeather(aiData->partnerMove)) + ADJUST_SCORE(-8); break; case EFFECT_HAIL: if (weather & (B_WEATHER_HAIL | B_WEATHER_PRIMAL_ANY) - || PartnerMoveEffectIsWeather(BATTLE_PARTNER(battlerAtk), aiData->partnerMove)) - score -= 8; + || IsMoveEffectWeather(aiData->partnerMove)) + ADJUST_SCORE(-8); else if (weather & B_WEATHER_SNOW) - score -= 2; // mainly to prevent looping between hail and snow + ADJUST_SCORE(-2); // mainly to prevent looping between hail and snow break; case EFFECT_SNOWSCAPE: if (weather & (B_WEATHER_SNOW | B_WEATHER_PRIMAL_ANY) - || PartnerMoveEffectIsWeather(BATTLE_PARTNER(battlerAtk), aiData->partnerMove)) - score -= 8; + || IsMoveEffectWeather(aiData->partnerMove)) + ADJUST_SCORE(-8); else if (weather & B_WEATHER_HAIL) - score -= 2; // mainly to prevent looping between hail and snow + ADJUST_SCORE(-2); // mainly to prevent looping between hail and snow break; case EFFECT_ATTRACT: if (!AI_CanBeInfatuated(battlerAtk, battlerDef, aiData->abilities[battlerDef])) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_SAFEGUARD: if (gSideStatuses[GetBattlerSide(battlerAtk)] & SIDE_STATUS_SAFEGUARD || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_MAGNITUDE: if (aiData->abilities[battlerDef] == ABILITY_LEVITATE) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_PARTING_SHOT: if (CountUsablePartyMons(battlerAtk) == 0) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_BATON_PASS: if (CountUsablePartyMons(battlerAtk) == 0) - score -= 10; + ADJUST_SCORE(-10); else if (gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE || (gStatuses3[battlerAtk] & (STATUS3_ROOTED | STATUS3_AQUA_RING | STATUS3_MAGNET_RISE | STATUS3_POWER_TRICK)) || AnyStatIsRaised(battlerAtk)) break; else - score -= 6; + ADJUST_SCORE(-6); break; case EFFECT_HIT_ESCAPE: break; @@ -1634,70 +1652,64 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; // check damage/accuracy //Spin checks if (!(gSideStatuses[GetBattlerSide(battlerAtk)] & SIDE_STATUS_HAZARDS_ANY)) - score -= 6; + ADJUST_SCORE(-6); break; case EFFECT_BELLY_DRUM: if (aiData->abilities[battlerAtk] == ABILITY_CONTRARY) - score -= 10; + ADJUST_SCORE(-10); else if (aiData->hpPercents[battlerAtk] <= 60) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_FUTURE_SIGHT: if (gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_FUTUREATTACK || gSideStatuses[GetBattlerSide(battlerAtk)] & SIDE_STATUS_FUTUREATTACK) - score -= 12; + ADJUST_SCORE(-12); else - score += 5; + ADJUST_SCORE(5); break; case EFFECT_TELEPORT: - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_FAKE_OUT: if (!gDisableStructs[battlerAtk].isFirstTurn) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_STOCKPILE: if (gDisableStructs[battlerAtk].stockpileCounter >= 3) - score -= 10; - break; - case EFFECT_SPIT_UP: - if (gDisableStructs[battlerAtk].stockpileCounter <= 1) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_SWALLOW: if (gDisableStructs[battlerAtk].stockpileCounter == 0) { - score -= 10; + ADJUST_SCORE(-10); } else { if (AtMaxHp(battlerAtk)) - score -= 10; + ADJUST_SCORE(-10); else if (aiData->hpPercents[battlerAtk] >= 80) - score -= 5; // do it if nothing better + ADJUST_SCORE(-5); // do it if nothing better } break; case EFFECT_TORMENT: if (gBattleMons[battlerDef].status2 & STATUS2_TORMENT || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) { - score -= 10; + ADJUST_SCORE(-10); break; } - #if B_MENTAL_HERB >= GEN_5 - if (aiData->holdEffects[battlerDef] == HOLD_EFFECT_MENTAL_HERB) - score -= 6; - #endif + if (B_MENTAL_HERB >= GEN_5 && aiData->holdEffects[battlerDef] == HOLD_EFFECT_MENTAL_HERB) + ADJUST_SCORE(-6); break; case EFFECT_WILL_O_WISP: if (!AI_CanBurn(battlerAtk, battlerDef, aiData->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_MEMENTO: if (CountUsablePartyMons(battlerAtk) == 0 || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); else if (gBattleMons[battlerDef].statStages[STAT_ATK] == MIN_STAT_STAGE && gBattleMons[battlerDef].statStages[STAT_SPATK] == MIN_STAT_STAGE) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_FOLLOW_ME: case EFFECT_HELPING_HAND: @@ -1706,70 +1718,70 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove) || (aiData->partnerMove != MOVE_NONE && IS_MOVE_STATUS(aiData->partnerMove)) || *(gBattleStruct->monToSwitchIntoId + BATTLE_PARTNER(battlerAtk)) != PARTY_SIZE) //Partner is switching out. - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_TRICK: case EFFECT_KNOCK_OFF: if (aiData->abilities[battlerDef] == ABILITY_STICKY_HOLD) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_INGRAIN: if (gStatuses3[battlerAtk] & STATUS3_ROOTED) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_AQUA_RING: if (gStatuses3[battlerAtk] & STATUS3_AQUA_RING) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_RECYCLE: if (GetUsedHeldItem(battlerAtk) == 0 || gBattleMons[battlerAtk].item != 0) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_IMPRISON: if (gStatuses3[battlerAtk] & STATUS3_IMPRISONED_OTHERS) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_REFRESH: if (!(gBattleMons[battlerDef].status1 & (STATUS1_PSN_ANY | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_FROSTBITE))) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_PSYCHO_SHIFT: if (gBattleMons[battlerAtk].status1 & STATUS1_PSN_ANY && !AI_CanPoison(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); else if (gBattleMons[battlerAtk].status1 & STATUS1_BURN && !AI_CanBurn(battlerAtk, battlerDef, aiData->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); else if (gBattleMons[battlerAtk].status1 & STATUS1_FROSTBITE && !AI_CanGiveFrostbite(battlerAtk, battlerDef, aiData->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); else if (gBattleMons[battlerAtk].status1 & STATUS1_PARALYSIS && !AI_CanParalyze(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); else if (gBattleMons[battlerAtk].status1 & STATUS1_SLEEP && !AI_CanPutToSleep(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); else - score -= 10; // attacker has no status to transmit + ADJUST_SCORE(-10); // attacker has no status to transmit break; case EFFECT_MUD_SPORT: if (gFieldStatuses & STATUS_FIELD_MUDSPORT || gStatuses4[battlerAtk] & STATUS4_MUD_SPORT || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_WATER_SPORT: if (gFieldStatuses & STATUS_FIELD_WATERSPORT || gStatuses4[battlerAtk] & STATUS4_WATER_SPORT || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_ABSORB: if (aiData->abilities[battlerDef] == ABILITY_LIQUID_OOZE) - score -= 6; + ADJUST_SCORE(-6); break; case EFFECT_STRENGTH_SAP: if (aiData->abilities[battlerDef] == ABILITY_CONTRARY) - score -= 10; + ADJUST_SCORE(-10); else if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_ATK)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_COPYCAT: case EFFECT_MIRROR_MOVE: @@ -1777,96 +1789,96 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_FLOWER_SHIELD: if (!IS_BATTLER_OF_TYPE(battlerAtk, TYPE_GRASS) && !(isDoubleBattle && IS_BATTLER_OF_TYPE(BATTLE_PARTNER(battlerAtk), TYPE_GRASS))) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_AROMATIC_MIST: if (!isDoubleBattle || gBattleMons[BATTLE_PARTNER(battlerAtk)].hp == 0 || !BattlerStatCanRise(BATTLE_PARTNER(battlerAtk), aiData->abilities[BATTLE_PARTNER(battlerAtk)], STAT_SPDEF)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_BIDE: if (!HasDamagingMove(battlerDef) || aiData->hpPercents[battlerAtk] < 30 //Close to death || gBattleMons[battlerDef].status1 & (STATUS1_SLEEP | STATUS1_FREEZE)) //No point in biding if can't take damage - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_HIT_SWITCH_TARGET: if (DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; // don't scare away pokemon twice + ADJUST_SCORE(-10); // don't scare away pokemon twice else if (aiData->hpPercents[battlerDef] < 10 && GetBattlerSecondaryDamage(battlerDef)) - score -= 10; // don't blow away mon that will faint soon + ADJUST_SCORE(-10); // don't blow away mon that will faint soon else if (gStatuses3[battlerDef] & STATUS3_PERISH_SONG) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_CONVERSION: //Check first move type if (IS_BATTLER_OF_TYPE(battlerAtk, gBattleMoves[gBattleMons[battlerAtk].moves[0]].type)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_REST: if (!AI_CanSleep(battlerAtk, aiData->abilities[battlerAtk])) - score -= 10; + ADJUST_SCORE(-10); //fallthrough case EFFECT_RESTORE_HP: case EFFECT_SOFTBOILED: case EFFECT_ROOST: if (AtMaxHp(battlerAtk)) - score -= 10; + ADJUST_SCORE(-10); else if (aiData->hpPercents[battlerAtk] >= 90) - score -= 9; //No point in healing, but should at least do it if nothing better + ADJUST_SCORE(-9); //No point in healing, but should at least do it if nothing better break; case EFFECT_MORNING_SUN: case EFFECT_SYNTHESIS: case EFFECT_MOONLIGHT: if ((AI_GetWeather(aiData) & (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_HAIL))) - score -= 3; + ADJUST_SCORE(-3); else if (AtMaxHp(battlerAtk)) - score -= 10; + ADJUST_SCORE(-10); else if (aiData->hpPercents[battlerAtk] >= 90) - score -= 9; //No point in healing, but should at least do it if nothing better + ADJUST_SCORE(-9); //No point in healing, but should at least do it if nothing better break; case EFFECT_PURIFY: if (!(gBattleMons[battlerDef].status1 & STATUS1_ANY)) - score -= 10; + ADJUST_SCORE(-10); else if (battlerDef == BATTLE_PARTNER(battlerAtk)) break; //Always heal your ally else if (AtMaxHp(battlerAtk)) - score -= 10; + ADJUST_SCORE(-10); else if (aiData->hpPercents[battlerAtk] >= 90) - score -= 8; //No point in healing, but should at least do it if nothing better + ADJUST_SCORE(-8); //No point in healing, but should at least do it if nothing better break; case EFFECT_SUPER_FANG: if (aiData->hpPercents[battlerDef] < 50) - score -= 4; + ADJUST_SCORE(-4); break; case EFFECT_RECOIL_IF_MISS: - if (aiData->abilities[battlerAtk] != ABILITY_MAGIC_GUARD && AI_GetMoveAccuracy(battlerAtk, battlerDef, move) < 75) - score -= 6; + if (aiData->abilities[battlerAtk] != ABILITY_MAGIC_GUARD && AI_DATA->moveAccuracy[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex] < 75) + ADJUST_SCORE(-6); break; case EFFECT_RECOIL_25: - if (aiData->abilities[battlerAtk] != ABILITY_MAGIC_GUARD && aiData->abilities[battlerAtk] != ABILITY_ROCK_HEAD) + if (AI_IsDamagedByRecoil(battlerAtk)) { u32 recoilDmg = max(1, aiData->simulatedDmg[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex] / 4); if (!ShouldUseRecoilMove(battlerAtk, battlerDef, recoilDmg, AI_THINKING_STRUCT->movesetIndex)) - score -= 10; + ADJUST_SCORE(-10); break; } break; case EFFECT_RECOIL_33: case EFFECT_RECOIL_33_STATUS: - if (aiData->abilities[battlerAtk] != ABILITY_MAGIC_GUARD && aiData->abilities[battlerAtk] != ABILITY_ROCK_HEAD) + if (AI_IsDamagedByRecoil(battlerAtk)) { u32 recoilDmg = max(1, aiData->simulatedDmg[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex] / 3); if (!ShouldUseRecoilMove(battlerAtk, battlerDef, recoilDmg, AI_THINKING_STRUCT->movesetIndex)) - score -= 10; + ADJUST_SCORE(-10); break; } break; case EFFECT_RECOIL_50: - if (aiData->abilities[battlerAtk] != ABILITY_MAGIC_GUARD && aiData->abilities[battlerAtk] != ABILITY_ROCK_HEAD) + if (AI_IsDamagedByRecoil(battlerAtk)) { u32 recoilDmg = max(1, aiData->simulatedDmg[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex] / 2); if (!ShouldUseRecoilMove(battlerAtk, battlerDef, recoilDmg, AI_THINKING_STRUCT->movesetIndex)) - score -= 10; + ADJUST_SCORE(-10); break; } break; @@ -1880,24 +1892,13 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) || (IsBattlerGrounded(BATTLE_PARTNER(battlerDef)) && AI_IsTerrainAffected(BATTLE_PARTNER(battlerDef), STATUS_FIELD_MISTY_TERRAIN)) || (DoesSubstituteBlockMove(battlerAtk, BATTLE_PARTNER(battlerDef), move)))) { - score -= 10; + ADJUST_SCORE(-10); } break; case EFFECT_TRANSFORM: if (gBattleMons[battlerAtk].status2 & STATUS2_TRANSFORMED || (gBattleMons[battlerDef].status2 & (STATUS2_TRANSFORMED | STATUS2_SUBSTITUTE))) //Leave out Illusion b/c AI is supposed to be fooled - score -= 10; - break; - case EFFECT_TWO_TURNS_ATTACK: - if (aiData->holdEffects[battlerAtk] != HOLD_EFFECT_POWER_HERB && CanTargetFaintAi(battlerDef, battlerAtk)) - score -= 6; - break; - case EFFECT_RECHARGE: - if (aiData->abilities[battlerDef] == ABILITY_WONDER_GUARD && effectiveness < AI_EFFECTIVENESS_x2) - score -= 10; - else if (aiData->abilities[battlerAtk] != ABILITY_TRUANT - && !CanIndexMoveFaintTarget(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex, 0)) - score -= 2; + ADJUST_SCORE(-10); break; case EFFECT_SPITE: case EFFECT_MIMIC: @@ -1905,12 +1906,12 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { if (gLastMoves[battlerDef] == MOVE_NONE || gLastMoves[battlerDef] == 0xFFFF) - score -= 10; + ADJUST_SCORE(-10); } else if (predictedMove == MOVE_NONE) { // TODO predicted move separate from gLastMoves - score -= 10; + ADJUST_SCORE(-10); } break; case EFFECT_METRONOME: @@ -1918,7 +1919,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_ENDEAVOR: case EFFECT_PAIN_SPLIT: if (gBattleMons[battlerAtk].hp > (gBattleMons[battlerAtk].hp + gBattleMons[battlerDef].hp) / 2) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_CONVERSION_2: @@ -1929,34 +1930,34 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) || aiData->abilities[battlerAtk] == ABILITY_NO_GUARD || aiData->abilities[battlerDef] == ABILITY_NO_GUARD || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_LASER_FOCUS: if (gStatuses3[battlerAtk] & STATUS3_LASER_FOCUS) - score -= 10; + ADJUST_SCORE(-10); else if (aiData->abilities[battlerDef] == ABILITY_SHELL_ARMOR || aiData->abilities[battlerDef] == ABILITY_BATTLE_ARMOR) - score -= 8; + ADJUST_SCORE(-8); break; case EFFECT_SKETCH: if (gLastMoves[battlerDef] == MOVE_NONE) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_DESTINY_BOND: if (gBattleMons[battlerDef].status2 & STATUS2_DESTINY_BOND) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_FALSE_SWIPE: // TODO break; case EFFECT_HEAL_BELL: if (!AnyPartyMemberStatused(battlerAtk, gBattleMoves[move].soundMove) || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_HIT_PREVENT_ESCAPE: break; case EFFECT_ENDURE: if (gBattleMons[battlerAtk].hp == 1 || GetBattlerSecondaryDamage(battlerAtk)) //Don't use Endure if you'll die after using it - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_PROTECT: { @@ -1968,14 +1969,14 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case MOVE_CRAFTY_SHIELD: if (!isDoubleBattle) { - score -= 10; + ADJUST_SCORE(-10); decreased = TRUE; } break; case MOVE_MAT_BLOCK: if (!gDisableStructs[battlerAtk].isFirstTurn) { - score -= 10; + ADJUST_SCORE(-10); decreased = TRUE; } break; @@ -1985,7 +1986,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; if (IsBattlerIncapacitated(battlerDef, aiData->abilities[battlerDef])) { - score -= 10; + ADJUST_SCORE(-10); break; } @@ -1997,18 +1998,18 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) && aiData->abilities[battlerDef] != ABILITY_MOXIE && aiData->abilities[battlerDef] != ABILITY_BEAST_BOOST) { - score -= 10; //Don't protect if you're going to faint after protecting + ADJUST_SCORE(-10); //Don't protect if you're going to faint after protecting } else if (gDisableStructs[battlerAtk].protectUses == 1 && Random() % 100 < 50) { if (!isDoubleBattle) - score -= 6; + ADJUST_SCORE(-6); else - score -= 10; //Don't try double protecting in doubles + ADJUST_SCORE(-10); //Don't try double protecting in doubles } else if (gDisableStructs[battlerAtk].protectUses >= 2) { - score -= 10; + ADJUST_SCORE(-10); } } @@ -2025,20 +2026,20 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; case EFFECT_MIRACLE_EYE: if (gStatuses3[battlerDef] & STATUS3_MIRACLE_EYED) - score -= 10; + ADJUST_SCORE(-10); if (gBattleMons[battlerDef].statStages[STAT_EVASION] <= 4 || !(IS_BATTLER_OF_TYPE(battlerDef, TYPE_DARK)) || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 9; + ADJUST_SCORE(-9); break; case EFFECT_BURN_UP: if (!IS_BATTLER_OF_TYPE(battlerAtk, TYPE_FIRE)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_DOUBLE_SHOCK: if (!IS_BATTLER_OF_TYPE(battlerAtk, TYPE_ELECTRIC)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_DEFOG: if (gSideStatuses[GetBattlerSide(battlerDef)] @@ -2048,14 +2049,14 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { if (PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) { - score -= 10; //Only need one hazards removal + ADJUST_SCORE(-10); //Only need one hazards removal break; } } if (gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_HAZARDS_ANY) { - score -= 10; //Don't blow away opposing hazards + ADJUST_SCORE(-10); //Don't blow away opposing hazards break; } @@ -2064,7 +2065,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (IsHazardMoveEffect(gBattleMoves[aiData->partnerMove].effect) // partner is going to set up hazards && AI_WhoStrikesFirst(BATTLE_PARTNER(battlerAtk), battlerAtk, aiData->partnerMove) == AI_IS_FASTER) // partner is going to set up before the potential Defog { - score -= 10; + ADJUST_SCORE(-10); break; // Don't use Defog if partner is going to set up hazards } } @@ -2072,7 +2073,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) // evasion check if (gBattleMons[battlerDef].statStages[STAT_EVASION] == MIN_STAT_STAGE || ((aiData->abilities[battlerDef] == ABILITY_CONTRARY) && !IS_TARGETING_PARTNER(battlerAtk, battlerDef))) // don't want to raise target stats unless its your partner - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_PSYCH_UP: // haze stats check @@ -2080,110 +2081,103 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) for (i = STAT_ATK; i < NUM_BATTLE_STATS; i++) { if (gBattleMons[battlerAtk].statStages[i] > DEFAULT_STAT_STAGE || gBattleMons[BATTLE_PARTNER(battlerAtk)].statStages[i] > DEFAULT_STAT_STAGE) - score -= 10; // Don't want to reset our boosted stats + ADJUST_SCORE(-10); // Don't want to reset our boosted stats } for (i = STAT_ATK; i < NUM_BATTLE_STATS; i++) { if (gBattleMons[battlerDef].statStages[i] < DEFAULT_STAT_STAGE || gBattleMons[BATTLE_PARTNER(battlerDef)].statStages[i] < DEFAULT_STAT_STAGE) - score -= 10; //Don't want to copy enemy lowered stats + ADJUST_SCORE(-10); //Don't want to copy enemy lowered stats } } break; case EFFECT_SPECTRAL_THIEF: break; - case EFFECT_SOLAR_BEAM: - if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_POWER_HERB - || ((AI_GetWeather(aiData) & B_WEATHER_SUN) && aiData->holdEffects[battlerAtk] != HOLD_EFFECT_UTILITY_UMBRELLA)) - break; - if (CanTargetFaintAi(battlerDef, battlerAtk)) //Attacker can be knocked out - score -= 4; - break; case EFFECT_SEMI_INVULNERABLE: if (predictedMove != MOVE_NONE && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER && gBattleMoves[predictedMove].effect == EFFECT_SEMI_INVULNERABLE) - score -= 10; // Don't Fly/dig/etc if opponent is going to fly/dig/etc after you + ADJUST_SCORE(-10); // Don't Fly/dig/etc if opponent is going to fly/dig/etc after you if (BattlerWillFaintFromWeather(battlerAtk, aiData->abilities[battlerAtk]) && (move == MOVE_FLY || move == MOVE_BOUNCE)) - score -= 10; // Attacker will faint while in the air + ADJUST_SCORE(-10); // Attacker will faint while in the air break; case EFFECT_HEALING_WISH: //healing wish, lunar dance if (CountUsablePartyMons(battlerAtk) == 0 || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); else if (IsPartyFullyHealedExceptBattler(battlerAtk)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_FINAL_GAMBIT: if (CountUsablePartyMons(battlerAtk) == 0 || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_NATURE_POWER: return AI_CheckBadMove(battlerAtk, battlerDef, GetNaturePowerMove(), score); case EFFECT_TAUNT: if (gDisableStructs[battlerDef].tauntTimer > 0 || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score--; + ADJUST_SCORE(-10); break; case EFFECT_BESTOW: if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_NONE || !CanBattlerGetOrLoseItem(battlerAtk, gBattleMons[battlerAtk].item)) // AI knows its own item - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_ROLE_PLAY: if (aiData->abilities[battlerAtk] == aiData->abilities[battlerDef] || aiData->abilities[battlerDef] == ABILITY_NONE || IsRolePlayBannedAbilityAtk(aiData->abilities[battlerAtk]) || IsRolePlayBannedAbility(aiData->abilities[battlerDef])) - score -= 10; + ADJUST_SCORE(-10); else if (IsAbilityOfRating(aiData->abilities[battlerAtk], 5)) - score -= 4; + ADJUST_SCORE(-4); break; case EFFECT_WISH: if (gWishFutureKnock.wishCounter[battlerAtk] != 0) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_ASSIST: if (CountUsablePartyMons(battlerAtk) == 0) - score -= 10; // no teammates to assist from + ADJUST_SCORE(-10); // no teammates to assist from break; case EFFECT_MAGIC_COAT: if (!HasMagicCoatAffectedMove(battlerDef)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_BELCH: if (ItemId_GetPocket(GetUsedHeldItem(battlerAtk)) != POCKET_BERRIES) - score -= 10; // attacker has not consumed a berry + ADJUST_SCORE(-10); // attacker has not consumed a berry break; case EFFECT_YAWN: if (gStatuses3[battlerDef] & STATUS3_YAWN) - score -= 10; + ADJUST_SCORE(-10); else if (!AI_CanPutToSleep(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_SKILL_SWAP: if (aiData->abilities[battlerAtk] == ABILITY_NONE || aiData->abilities[battlerDef] == ABILITY_NONE || IsSkillSwapBannedAbility(aiData->abilities[battlerAtk]) || IsSkillSwapBannedAbility(aiData->abilities[battlerDef]) || aiData->holdEffects[battlerDef] == HOLD_EFFECT_ABILITY_SHIELD) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_WORRY_SEED: if (aiData->abilities[battlerDef] == ABILITY_INSOMNIA || IsWorrySeedBannedAbility(aiData->abilities[battlerDef]) || aiData->holdEffects[battlerDef] == HOLD_EFFECT_ABILITY_SHIELD) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_GASTRO_ACID: if (gStatuses3[battlerDef] & STATUS3_GASTRO_ACID || IsGastroAcidBannedAbility(aiData->abilities[battlerDef])) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_ENTRAINMENT: if (aiData->abilities[battlerAtk] == ABILITY_NONE || IsEntrainmentBannedAbilityAttacker(aiData->abilities[battlerAtk]) || IsEntrainmentTargetOrSimpleBeamBannedAbility(aiData->abilities[battlerDef]) || aiData->holdEffects[battlerAtk] == HOLD_EFFECT_ABILITY_SHIELD) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_CORE_ENFORCER: break; @@ -2191,50 +2185,50 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (aiData->abilities[battlerDef] == ABILITY_SIMPLE || IsEntrainmentTargetOrSimpleBeamBannedAbility(aiData->abilities[battlerDef]) || aiData->holdEffects[battlerDef] == HOLD_EFFECT_ABILITY_SHIELD) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_SNATCH: if (!HasSnatchAffectedMove(battlerDef) || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_POWER_TRICK: if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) - score -= 10; + ADJUST_SCORE(-10); else if (gBattleMons[battlerAtk].defense >= gBattleMons[battlerAtk].attack && !HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_POWER_SWAP: // Don't use if attacker's stat stages are higher than opponents if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) - score -= 10; + ADJUST_SCORE(-10); else if (gBattleMons[battlerAtk].statStages[STAT_ATK] >= gBattleMons[battlerDef].statStages[STAT_ATK] && gBattleMons[battlerAtk].statStages[STAT_SPATK] >= gBattleMons[battlerDef].statStages[STAT_SPATK]) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_GUARD_SWAP: // Don't use if attacker's stat stages are higher than opponents if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) - score -= 10; + ADJUST_SCORE(-10); else if (gBattleMons[battlerAtk].statStages[STAT_DEF] >= gBattleMons[battlerDef].statStages[STAT_DEF] && gBattleMons[battlerAtk].statStages[STAT_SPDEF] >= gBattleMons[battlerDef].statStages[STAT_SPDEF]) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_SPEED_SWAP: if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) { - score -= 10; + ADJUST_SCORE(-10); } else { if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && (gBattleMons[battlerAtk].speed <= gBattleMons[battlerDef].speed)) - score -= 10; + ADJUST_SCORE(-10); else if (gBattleMons[battlerAtk].speed >= gBattleMons[battlerDef].speed) - score -= 10; + ADJUST_SCORE(-10); } break; case EFFECT_HEART_SWAP: if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) { - score -= 10; + ADJUST_SCORE(-10); } else { @@ -2244,14 +2238,14 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) u32 defNegativeStages = CountNegativeStatStages(battlerDef); if (atkPositiveStages >= defPositiveStages && atkNegativeStages <= defNegativeStages) - score -= 10; + ADJUST_SCORE(-10); break; } break; case EFFECT_POWER_SPLIT: if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) { - score -= 10; + ADJUST_SCORE(-10); } else { @@ -2261,14 +2255,14 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) u32 defSpAttack = gBattleMons[battlerDef].spAttack; if (atkAttack + atkSpAttack >= defAttack + defSpAttack) // Combined attacker stats are > than combined target stats - score -= 10; + ADJUST_SCORE(-10); break; } break; case EFFECT_GUARD_SPLIT: if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) { - score -= 10; + ADJUST_SCORE(-10); } else { @@ -2278,7 +2272,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) u32 defSpDefense = gBattleMons[battlerDef].spDefense; if (atkDefense + atkSpDefense >= defDefense + defSpDefense) //Combined attacker stats are > than combined target stats - score -= 10; + ADJUST_SCORE(-10); break; } break; @@ -2286,36 +2280,36 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (predictedMove != MOVE_NONE) { if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER) - score -= 10; // Target is predicted to go first, Me First will fail + ADJUST_SCORE(-10); // Target is predicted to go first, Me First will fail else return AI_CheckBadMove(battlerAtk, battlerDef, predictedMove, score); } else { - score -= 10; //Target is predicted to switch most likely + ADJUST_SCORE(-10); //Target is predicted to switch most likely } break; case EFFECT_NATURAL_GIFT: if (aiData->abilities[battlerAtk] == ABILITY_KLUTZ || gFieldStatuses & STATUS_FIELD_MAGIC_ROOM || GetPocketByItemId(gBattleMons[battlerAtk].item) != POCKET_BERRIES) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_GRASSY_TERRAIN: if (PartnerMoveEffectIsTerrain(BATTLE_PARTNER(battlerAtk), aiData->partnerMove) || gFieldStatuses & STATUS_FIELD_GRASSY_TERRAIN) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_ELECTRIC_TERRAIN: if (PartnerMoveEffectIsTerrain(BATTLE_PARTNER(battlerAtk), aiData->partnerMove) || gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_PSYCHIC_TERRAIN: if (PartnerMoveEffectIsTerrain(BATTLE_PARTNER(battlerAtk), aiData->partnerMove) || gFieldStatuses & STATUS_FIELD_PSYCHIC_TERRAIN) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_MISTY_TERRAIN: if (PartnerMoveEffectIsTerrain(BATTLE_PARTNER(battlerAtk), aiData->partnerMove) || gFieldStatuses & STATUS_FIELD_MISTY_TERRAIN) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_PLEDGE: if (isDoubleBattle && gBattleMons[BATTLE_PARTNER(battlerAtk)].hp > 0) @@ -2326,50 +2320,50 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { if (gBattleMons[BATTLE_PARTNER(battlerAtk)].status1 & (STATUS1_SLEEP | STATUS1_FREEZE)) // && gBattleMons[BATTLE_PARTNER(battlerAtk)].status1 != 1) // Will wake up this turn - how would AI know - score -= 10; // Don't use combo move if your partner will cause failure + ADJUST_SCORE(-10); // Don't use combo move if your partner will cause failure } } break; case EFFECT_TRICK_ROOM: if (PartnerMoveIs(BATTLE_PARTNER(battlerAtk), aiData->partnerMove, MOVE_TRICK_ROOM)) { - score -= 10; + ADJUST_SCORE(-10); } else if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM) // Trick Room Up { if (GetBattlerSideSpeedAverage(battlerAtk) < GetBattlerSideSpeedAverage(battlerDef)) // Attacker side slower than target side - score -= 10; // Keep the Trick Room up + ADJUST_SCORE(-10); // Keep the Trick Room up } else { if (GetBattlerSideSpeedAverage(battlerAtk) >= GetBattlerSideSpeedAverage(battlerDef)) // Attacker side faster than target side - score -= 10; // Keep the Trick Room down + ADJUST_SCORE(-10); // Keep the Trick Room down } break; case EFFECT_MAGIC_ROOM: if (gFieldStatuses & STATUS_FIELD_MAGIC_ROOM || PartnerMoveIsSameNoTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_WONDER_ROOM: if (gFieldStatuses & STATUS_FIELD_WONDER_ROOM || PartnerMoveIsSameNoTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_GRAVITY: if ((gFieldStatuses & STATUS_FIELD_GRAVITY && !IS_BATTLER_OF_TYPE(battlerAtk, TYPE_FLYING) && aiData->holdEffects[battlerAtk] != HOLD_EFFECT_AIR_BALLOON) // Should revert Gravity in this case || PartnerMoveIsSameNoTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_ION_DELUGE: if (gFieldStatuses & STATUS_FIELD_ION_DELUGE || PartnerMoveIsSameNoTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_FLING: if (!CanFling(battlerAtk)) { - score -= 10; + ADJUST_SCORE(-10); } else { @@ -2379,24 +2373,24 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { case MOVE_EFFECT_BURN: if (!AI_CanBurn(battlerAtk, battlerDef, BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case MOVE_EFFECT_PARALYSIS: if (!AI_CanParalyze(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case MOVE_EFFECT_POISON: if (!AI_CanPoison(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case MOVE_EFFECT_TOXIC: if (!AI_CanPoison(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case MOVE_EFFECT_FREEZE: if (!CanBeFrozen(battlerDef, TRUE) || MoveBlockedBySubstitute(move, battlerAtk, battlerDef)) - score -= 10; + ADJUST_SCORE(-10); break; }*/ } @@ -2406,12 +2400,12 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) || gFieldStatuses & STATUS_FIELD_MAGIC_ROOM || gDisableStructs[battlerDef].embargoTimer != 0 || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_POWDER: if (!HasMoveWithType(battlerDef, TYPE_FIRE) || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_TELEKINESIS: if (gStatuses3[battlerDef] & (STATUS3_TELEKINESIS | STATUS3_ROOTED | STATUS3_SMACKED_DOWN) @@ -2419,39 +2413,39 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) || aiData->holdEffects[battlerDef] == HOLD_EFFECT_IRON_BALL || IsTelekinesisBannedSpecies(gBattleMons[battlerDef].species) || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_THROAT_CHOP: break; case EFFECT_HEAL_BLOCK: if (gDisableStructs[battlerDef].healBlockTimer != 0 || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_SOAK: if (PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove) || (GetBattlerType(battlerDef, 0) == TYPE_WATER && GetBattlerType(battlerDef, 1) == TYPE_WATER && GetBattlerType(battlerDef, 2) == TYPE_MYSTERY)) - score -= 10; // target is already water-only + ADJUST_SCORE(-10); // target is already water-only break; case EFFECT_THIRD_TYPE: switch (move) { case MOVE_TRICK_OR_TREAT: if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GHOST) || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case MOVE_FORESTS_CURSE: if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS) || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; } break; case EFFECT_HEAL_PULSE: // and floral healing if (!IS_TARGETING_PARTNER(battlerAtk, battlerDef)) // Don't heal enemies { - score -= 10; + ADJUST_SCORE(-10); break; } // fallthrough @@ -2461,16 +2455,16 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (gStatuses3[battlerDef] & STATUS3_HEAL_BLOCK) return 0; if (AtMaxHp(battlerDef)) - score -= 10; + ADJUST_SCORE(-10); else if (gBattleMons[battlerDef].hp > gBattleMons[battlerDef].maxHP / 2) - score -= 5; + ADJUST_SCORE(-5); } break; case EFFECT_ELECTRIFY: if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER //|| GetMoveTypeSpecial(battlerDef, predictedMove) == TYPE_ELECTRIC // Move will already be electric type || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_TOPSY_TURVY: if (!IS_TARGETING_PARTNER(battlerAtk, battlerDef)) @@ -2480,18 +2474,18 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (targetPositiveStages == 0 //No good stat changes to make bad || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); else if (targetNegativeStages < targetPositiveStages) - score -= 5; //More stages would be made positive than negative + ADJUST_SCORE(-5); //More stages would be made positive than negative } break; case EFFECT_FAIRY_LOCK: if ((gFieldStatuses & STATUS_FIELD_FAIRY_LOCK) || PartnerMoveIsSameNoTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_DO_NOTHING: - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_INSTRUCT: { @@ -2503,19 +2497,19 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (instructedMove == MOVE_NONE || gBattleMoves[instructedMove].instructBanned - || MoveRequiresRecharging(instructedMove) - || MoveCallsOtherMove(instructedMove) + || gBattleMoves[instructedMove].twoTurnMove + || gBattleMoves[instructedMove].effect == EFFECT_RECHARGE || IsZMove(instructedMove) || (gLockedMoves[battlerDef] != 0 && gLockedMoves[battlerDef] != 0xFFFF) || gBattleMons[battlerDef].status2 & STATUS2_MULTIPLETURNS || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) { - score -= 10; + ADJUST_SCORE(-10); } else if (isDoubleBattle) { if (!IS_TARGETING_PARTNER(battlerAtk, battlerDef)) - score -= 10; + ADJUST_SCORE(-10); } else { @@ -2526,9 +2520,9 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) | MOVE_TARGET_FOES_AND_ALLY | MOVE_TARGET_OPPONENTS_FIELD) && instructedMove != MOVE_MIND_BLOWN && instructedMove != MOVE_STEEL_BEAM) - score -= 10; //Don't force the enemy to attack you again unless it can kill itself with Mind Blown + ADJUST_SCORE(-10); //Don't force the enemy to attack you again unless it can kill itself with Mind Blown else if (instructedMove != MOVE_MIND_BLOWN) - score -= 5; //Do something better + ADJUST_SCORE(-5); //Do something better } } break; @@ -2536,32 +2530,32 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (!isDoubleBattle || AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_AFTER_YOU: if (!IS_TARGETING_PARTNER(battlerAtk, battlerDef) || !isDoubleBattle || AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER || PartnerMoveIsSameAsAttacker(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_SUCKER_PUNCH: if (predictedMove != MOVE_NONE) { if (IS_MOVE_STATUS(predictedMove) || AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER) // Opponent going first - score -= 10; + ADJUST_SCORE(-10); } break; case EFFECT_TAILWIND: if (gSideTimers[GetBattlerSide(battlerAtk)].tailwindTimer != 0 || PartnerMoveIs(BATTLE_PARTNER(battlerAtk), aiData->partnerMove, MOVE_TAILWIND) || (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && gFieldTimers.trickRoomTimer > 1)) // Trick Room active and not ending this turn - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_LUCKY_CHANT: if (gSideTimers[GetBattlerSide(battlerAtk)].luckyChantTimer != 0 || PartnerMoveIsSameNoTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_MAGNET_RISE: if (gFieldStatuses & STATUS_FIELD_GRAVITY @@ -2569,15 +2563,15 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) || aiData->holdEffects[battlerAtk] == HOLD_EFFECT_IRON_BALL || gStatuses3[battlerAtk] & (STATUS3_ROOTED | STATUS3_MAGNET_RISE | STATUS3_SMACKED_DOWN) || !IsBattlerGrounded(battlerAtk)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_CAMOUFLAGE: if (!CanCamouflage(battlerAtk)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_LAST_RESORT: if (!CanUseLastResort(battlerAtk)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_SYNCHRONOISE: //Check holding ring target or is of same type @@ -2587,22 +2581,22 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) || IS_BATTLER_OF_TYPE(battlerDef, GetBattlerType(battlerAtk, 2))) break; else - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_ERUPTION: if (effectiveness <= AI_EFFECTIVENESS_x0_5) - score--; + ADJUST_SCORE(-1); if (aiData->hpPercents[battlerDef] < 50) - score--; + ADJUST_SCORE(-1); break; case EFFECT_VITAL_THROW: if (AI_STRIKES_FIRST(battlerAtk, battlerDef, move) && aiData->hpPercents[battlerAtk] < 40) - score--; // don't want to move last + ADJUST_SCORE(-1); // don't want to move last break; case EFFECT_FLAIL: if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER // Opponent should go first || aiData->hpPercents[battlerAtk] > 50) - score -= 4; + ADJUST_SCORE(-4); break; //TODO //case EFFECT_PLASMA_FISTS: @@ -2613,39 +2607,39 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) //break; case EFFECT_SKY_DROP: if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_FLYING)) - score -= 10; + ADJUST_SCORE(-10); if (BattlerWillFaintFromWeather(battlerAtk, aiData->abilities[battlerAtk]) || DoesSubstituteBlockMove(battlerAtk, battlerDef, move) || GetBattlerWeight(battlerDef) >= 2000) //200.0 kg - score -= 10; + ADJUST_SCORE(-10); break; /*case EFFECT_NO_RETREAT: if (TrappedByNoRetreat(battlerAtk)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_EXTREME_EVOBOOST: if (MainStatsMaxed(battlerAtk)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_CLANGOROUS_SOUL: if (gBattleMons[battlerAtk].hp <= gBattleMons[battlerAtk].maxHP / 3) - score -= 10; + ADJUST_SCORE(-10); break;*/ case EFFECT_REVIVAL_BLESSING: if (GetFirstFaintedPartyIndex(battlerAtk) == PARTY_SIZE) - score -= 10; + ADJUST_SCORE(-10); else if (CanAIFaintTarget(battlerAtk, battlerDef, 0)) - score -= 10; + ADJUST_SCORE(-10); else if (CanTargetFaintAi(battlerDef, battlerAtk) && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_JUNGLE_HEALING: if (AtMaxHp(battlerAtk) && AtMaxHp(BATTLE_PARTNER(battlerAtk)) && !(gBattleMons[battlerAtk].status1 & STATUS1_ANY) && !(gBattleMons[BATTLE_PARTNER(battlerAtk)].status1 & STATUS1_ANY)) - score -= 10; + ADJUST_SCORE(-10); break; case EFFECT_TAKE_HEART: if ((!(gBattleMons[battlerAtk].status1 & STATUS1_ANY) @@ -2654,7 +2648,11 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) || PartnerMoveIs(BATTLE_PARTNER(battlerAtk), aiData->partnerMove, MOVE_AROMATHERAPY)) && !BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPATK) && !BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPDEF)) - score -= 10; + ADJUST_SCORE(-10); + break; + case EFFECT_LOW_KICK: + if (IsDynamaxed(battlerDef)) + ADJUST_SCORE(-10); break; case EFFECT_PLACEHOLDER: return 0; // cannot even select @@ -2669,56 +2667,25 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) static s32 AI_TryToFaint(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { u32 movesetIndex = AI_THINKING_STRUCT->movesetIndex; - bool32 aiFaster; if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) return score; if (gBattleMoves[move].power == 0) - return score; // can't make anything faint with no power + return score; // can't make anything faint with no power - aiFaster = AI_STRIKES_FIRST(battlerAtk, battlerDef, move); if (CanIndexMoveFaintTarget(battlerAtk, battlerDef, movesetIndex, 0) && gBattleMoves[move].effect != EFFECT_EXPLOSION) { - // this move can faint the target - if (aiFaster || GetMovePriority(battlerAtk, move) > 0) - score += 4; // we go first or we're using priority move + if (AI_STRIKES_FIRST(battlerAtk, battlerDef, move)) + ADJUST_SCORE(5); // Move hits first and can faint the target else - score += 2; + ADJUST_SCORE(4); // Faints target but slower } - else + else if (CanTargetFaintAi(battlerDef, battlerAtk) + && GetWhichBattlerFaster(battlerAtk, battlerDef, TRUE) != AI_IS_FASTER + && GetMovePriority(battlerAtk, move) > 0) { - // this move isn't expected to faint the target - if (gBattleMoves[move].highCritRatio) - score += 2; // crit makes it more likely to make them faint - - if (GetMoveDamageResult(battlerAtk, battlerDef, movesetIndex) == MOVE_POWER_OTHER) - score--; - - switch (AI_DATA->effectiveness[battlerAtk][battlerDef][movesetIndex]) - { - case AI_EFFECTIVENESS_x8: - score += 8; - break; - case AI_EFFECTIVENESS_x4: - score += 4; - break; - case AI_EFFECTIVENESS_x2: - if (AI_RandLessThan(176)) - score += 2; - else - score++; - break; - } - } - - //AI_TryToFaint_CheckIfDanger - if (!aiFaster && CanTargetFaintAi(battlerDef, battlerAtk)) - { // AI_TryToFaint_Danger - if (GetMoveDamageResult(battlerAtk, battlerDef, movesetIndex) != MOVE_POWER_BEST) - score--; - else - score++; + ADJUST_SCORE(2); // If slower and target can kill } return score; @@ -2750,14 +2717,14 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) switch (gBattleMoves[aiData->partnerMove].effect) { case EFFECT_HELPING_HAND: - if (!IS_MOVE_STATUS(move)) - score += 5; + if (IS_MOVE_STATUS(move)) + ADJUST_SCORE(-7); break; case EFFECT_PERISH_SONG: if (!(gBattleMons[battlerDef].status2 & (STATUS2_ESCAPE_PREVENTION | STATUS2_WRAPPED))) { if (IsTrappingMoveEffect(effect) || predictedMove == MOVE_INGRAIN) - score++; + ADJUST_SCORE(1); } break; case EFFECT_ALWAYS_CRIT: @@ -2768,13 +2735,22 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { // discourage raising our attack since it's about to be maxed out if (IsAttackBoostMoveEffect(effect)) - score -= 3; + ADJUST_SCORE(-3); // encourage moves hitting multiple opponents if (!IS_MOVE_STATUS(move) && (moveTarget & (MOVE_TARGET_BOTH | MOVE_TARGET_FOES_AND_ALLY))) - score += 3; + ADJUST_SCORE(3); } } break; + // Don't change weather if ally already decided to do so. + case EFFECT_SUNNY_DAY: + case EFFECT_HAIL: + case EFFECT_SNOWSCAPE: + case EFFECT_RAIN_DANCE: + case EFFECT_SANDSTORM: + if (IsMoveEffectWeather(move)) + ADJUST_SCORE(-10); + break; } } // check partner move effect @@ -2782,12 +2758,12 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) switch (effect) { case EFFECT_HELPING_HAND: - if (aiData->partnerMove != 0 && !HasDamagingMove(battlerAtkPartner)) - score -= 5; + if (!IsBattlerAlive(battlerAtkPartner) || !HasDamagingMove(battlerAtkPartner)) + ADJUST_SCORE(-5); break; case EFFECT_PERISH_SONG: if (aiData->partnerMove != 0 && HasTrappingMoveEffect(battlerAtkPartner)) - score++; + ADJUST_SCORE(1); break; case EFFECT_MAGNET_RISE: if (IsBattlerGrounded(battlerAtk) @@ -2839,113 +2815,110 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) // check specific target if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) { - if (GetMoveDamageResult(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex) == MOVE_POWER_OTHER) + // partner ability checks + if (!partnerProtecting && moveTarget != MOVE_TARGET_BOTH && !DoesBattlerIgnoreAbilityChecks(aiData->abilities[battlerAtk], move)) { - // partner ability checks - if (!partnerProtecting && moveTarget != MOVE_TARGET_BOTH && !DoesBattlerIgnoreAbilityChecks(aiData->abilities[battlerAtk], move)) + switch (atkPartnerAbility) { - switch (atkPartnerAbility) + case ABILITY_VOLT_ABSORB: + if (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_HP_AWARE)) { - case ABILITY_VOLT_ABSORB: - if (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_HP_AWARE)) - { - RETURN_SCORE_MINUS(10); - } - break; // handled in AI_HPAware - case ABILITY_MOTOR_DRIVE: - if (moveType == TYPE_ELECTRIC && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_SPEED)) - { - RETURN_SCORE_PLUS(1); - } - break; - case ABILITY_LIGHTNING_ROD: - if (moveType == TYPE_ELECTRIC - && HasMoveWithSplit(battlerAtkPartner, SPLIT_SPECIAL) - && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_SPATK)) - { - RETURN_SCORE_PLUS(1); - } - break; - case ABILITY_WATER_ABSORB: - case ABILITY_DRY_SKIN: - if (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_HP_AWARE)) - { - RETURN_SCORE_MINUS(10); - } - break; // handled in AI_HPAware - case ABILITY_STORM_DRAIN: - if (moveType == TYPE_WATER - && HasMoveWithSplit(battlerAtkPartner, SPLIT_SPECIAL) - && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_SPATK)) - { - RETURN_SCORE_PLUS(1); - } - break; - case ABILITY_WATER_COMPACTION: - if (moveType == TYPE_WATER && GetMoveDamageResult(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex) == MOVE_POWER_WEAK) - { - RETURN_SCORE_PLUS(1); // only mon with this ability is weak to water so only make it okay if we do very little damage - } RETURN_SCORE_MINUS(10); - break; - case ABILITY_FLASH_FIRE: - if (moveType == TYPE_FIRE - && HasMoveWithType(battlerAtkPartner, TYPE_FIRE) - && !(gBattleResources->flags->flags[battlerAtkPartner] & RESOURCE_FLAG_FLASH_FIRE)) - { - RETURN_SCORE_PLUS(1); - } - break; - case ABILITY_SAP_SIPPER: - if (moveType == TYPE_GRASS - && HasMoveWithSplit(battlerAtkPartner, SPLIT_PHYSICAL) - && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_ATK)) - { - RETURN_SCORE_PLUS(1); - } - break; - case ABILITY_JUSTIFIED: - if (moveType == TYPE_DARK - && !IS_MOVE_STATUS(move) - && HasMoveWithSplit(battlerAtkPartner, SPLIT_PHYSICAL) - && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_ATK) - && !CanIndexMoveFaintTarget(battlerAtk, battlerAtkPartner, AI_THINKING_STRUCT->movesetIndex, 1)) - { - RETURN_SCORE_PLUS(1); - } - break; - case ABILITY_RATTLED: - if (!IS_MOVE_STATUS(move) - && (moveType == TYPE_DARK || moveType == TYPE_GHOST || moveType == TYPE_BUG) - && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_SPEED) - && !CanIndexMoveFaintTarget(battlerAtk, battlerAtkPartner, AI_THINKING_STRUCT->movesetIndex, 1)) - { - RETURN_SCORE_PLUS(1); - } - break; - case ABILITY_CONTRARY: - if (IsStatLoweringEffect(effect)) - { - RETURN_SCORE_PLUS(2); - } - break; - case ABILITY_DEFIANT: - if (IsStatLoweringEffect(effect) - && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_ATK)) - { - RETURN_SCORE_PLUS(1); - } - break; - case ABILITY_COMPETITIVE: - if (IsStatLoweringEffect(effect) - && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_SPATK)) - { - RETURN_SCORE_PLUS(1); - } - break; } - } // ability checks - } // move power check + break; // handled in AI_HPAware + case ABILITY_MOTOR_DRIVE: + if (moveType == TYPE_ELECTRIC && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_SPEED)) + { + RETURN_SCORE_PLUS(1); + } + break; + case ABILITY_LIGHTNING_ROD: + if (moveType == TYPE_ELECTRIC + && HasMoveWithSplit(battlerAtkPartner, SPLIT_SPECIAL) + && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_SPATK)) + { + RETURN_SCORE_PLUS(1); + } + break; + case ABILITY_WATER_ABSORB: + case ABILITY_DRY_SKIN: + if (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_HP_AWARE)) + { + RETURN_SCORE_MINUS(10); + } + break; // handled in AI_HPAware + case ABILITY_STORM_DRAIN: + if (moveType == TYPE_WATER + && HasMoveWithSplit(battlerAtkPartner, SPLIT_SPECIAL) + && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_SPATK)) + { + RETURN_SCORE_PLUS(1); + } + break; + case ABILITY_WATER_COMPACTION: + if (moveType == TYPE_WATER && GetNoOfHitsToKOBattler(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex) >= 4) + { + RETURN_SCORE_PLUS(1); // only mon with this ability is weak to water so only make it okay if we do very little damage + } + RETURN_SCORE_MINUS(10); + break; + case ABILITY_FLASH_FIRE: + if (moveType == TYPE_FIRE + && HasMoveWithType(battlerAtkPartner, TYPE_FIRE) + && !(gBattleResources->flags->flags[battlerAtkPartner] & RESOURCE_FLAG_FLASH_FIRE)) + { + RETURN_SCORE_PLUS(1); + } + break; + case ABILITY_SAP_SIPPER: + if (moveType == TYPE_GRASS + && HasMoveWithSplit(battlerAtkPartner, SPLIT_PHYSICAL) + && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_ATK)) + { + RETURN_SCORE_PLUS(1); + } + break; + case ABILITY_JUSTIFIED: + if (moveType == TYPE_DARK + && !IS_MOVE_STATUS(move) + && HasMoveWithSplit(battlerAtkPartner, SPLIT_PHYSICAL) + && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_ATK) + && !CanIndexMoveFaintTarget(battlerAtk, battlerAtkPartner, AI_THINKING_STRUCT->movesetIndex, 1)) + { + RETURN_SCORE_PLUS(1); + } + break; + case ABILITY_RATTLED: + if (!IS_MOVE_STATUS(move) + && (moveType == TYPE_DARK || moveType == TYPE_GHOST || moveType == TYPE_BUG) + && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_SPEED) + && !CanIndexMoveFaintTarget(battlerAtk, battlerAtkPartner, AI_THINKING_STRUCT->movesetIndex, 1)) + { + RETURN_SCORE_PLUS(1); + } + break; + case ABILITY_CONTRARY: + if (IsStatLoweringEffect(effect)) + { + RETURN_SCORE_PLUS(2); + } + break; + case ABILITY_DEFIANT: + if (IsStatLoweringEffect(effect) + && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_ATK)) + { + RETURN_SCORE_PLUS(1); + } + break; + case ABILITY_COMPETITIVE: + if (IsStatLoweringEffect(effect) + && BattlerStatCanRise(battlerAtkPartner, atkPartnerAbility, STAT_SPATK)) + { + RETURN_SCORE_PLUS(1); + } + break; + } + } // ability checks // attacker move effects specifically targeting partner if (!partnerProtecting) @@ -3067,7 +3040,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) } // attacker move effects } // check partner protecting - score -= 30; // otherwise, don't target partner + ADJUST_SCORE(-30); // otherwise, don't target partner } else // checking opponent { @@ -3076,9 +3049,9 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { case EFFECT_SKILL_SWAP: if (aiData->abilities[battlerAtk] == ABILITY_TRUANT) - score += 5; + ADJUST_SCORE(5); else if (IsAbilityOfRating(aiData->abilities[battlerAtk], 0) || IsAbilityOfRating(aiData->abilities[battlerDef], 10)) - score += 2; // we want to transfer our bad ability or take their awesome ability + ADJUST_SCORE(2); // we want to transfer our bad ability or take their awesome ability break; case EFFECT_EARTHQUAKE: case EFFECT_MAGNITUDE: @@ -3086,14 +3059,14 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) || (IsBattlerGrounded(battlerAtkPartner) && AI_WhoStrikesFirst(battlerAtk, battlerAtkPartner, move) == AI_IS_SLOWER && IsUngroundingEffect(gBattleMoves[aiData->partnerMove].effect))) - score += 2; + ADJUST_SCORE(2); else if (IS_BATTLER_OF_TYPE(battlerAtkPartner, TYPE_FIRE) || IS_BATTLER_OF_TYPE(battlerAtkPartner, TYPE_ELECTRIC) || IS_BATTLER_OF_TYPE(battlerAtkPartner, TYPE_POISON) || IS_BATTLER_OF_TYPE(battlerAtkPartner, TYPE_ROCK)) - score -= 10; // partner will be hit by earthquake and is weak to it + ADJUST_SCORE(-10); // partner will be hit by earthquake and is weak to it else if (IsBattlerAlive(battlerAtkPartner)) - score -= 3; + ADJUST_SCORE(-3); break; } @@ -3122,17 +3095,113 @@ static bool32 IsPinchBerryItemEffect(u32 holdEffect) return FALSE; } -static u32 GetAIMostDamagingMoveId(u32 battlerAtk, u32 battlerDef) +static u32 CompareMoveAccuracies(u32 battlerAtk, u32 battlerDef, u32 moveSlot1, u32 moveSlot2) { - u32 i, id = 0; - u32 mostDmg = 0; + u32 acc1 = AI_DATA->moveAccuracy[battlerAtk][battlerDef][moveSlot1]; + u32 acc2 = AI_DATA->moveAccuracy[battlerAtk][battlerDef][moveSlot2]; + + if (acc1 > acc2) + return 0; + else if (acc2 > acc1) + return 1; + return 2; +} + +static s32 AI_CompareDamagingMoves(u32 battlerAtk, u32 battlerDef, u32 currId) +{ + u32 i; + bool32 multipleBestMoves = FALSE; + s32 viableMoveScores[MAX_MON_MOVES]; + s32 bestViableMoveScore; + s32 noOfHits[MAX_MON_MOVES]; + s32 score = 0; + s32 leastHits = 1000; + u16 *moves = GetMovesArray(battlerAtk); + bool8 isChargingMoveEffect[MAX_MON_MOVES]; for (i = 0; i < MAX_MON_MOVES; i++) { - if (AI_DATA->simulatedDmg[battlerAtk][battlerDef][i] > mostDmg) - id = i, mostDmg = AI_DATA->simulatedDmg[battlerAtk][battlerDef][i]; + if (moves[i] != MOVE_NONE && gBattleMoves[moves[i]].power) + { + noOfHits[i] = GetNoOfHitsToKOBattler(battlerAtk, battlerDef, i); + if (noOfHits[i] < leastHits) + { + leastHits = noOfHits[i]; + } + viableMoveScores[i] = AI_SCORE_DEFAULT; + isChargingMoveEffect[i] = IsChargingMove(battlerAtk, gBattleMoves[moves[i]].effect); + } + else + { + noOfHits[i] = -1; + viableMoveScores[i] = 0; + isChargingMoveEffect[i] = FALSE; + } + /* + MgbaPrintf_("%S: required hits: %d Dmg: %d", gMoveNames[moves[i]], noOfHits[i], AI_DATA->simulatedDmg[battlerAtk][battlerDef][i]); + */ } - return id; + + // Priority list: + // 1. Less no of hits to ko + // 2. Not charging + // 3. More accuracy + // 4. Better effect + + // Current move requires the least hits to KO. Compare with other moves. + if (leastHits == noOfHits[currId]) + { + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (i == currId) + continue; + if (noOfHits[currId] == noOfHits[i]) + { + multipleBestMoves = TRUE; + // We need to make sure it's the current move which is objectively better. + if (isChargingMoveEffect[i] && !isChargingMoveEffect[currId]) + viableMoveScores[i] -= 3; + else if (!isChargingMoveEffect[i] && isChargingMoveEffect[currId]) + viableMoveScores[currId] -= 3; + + switch (CompareMoveAccuracies(battlerAtk, battlerDef, currId, i)) + { + case 0: + viableMoveScores[i] -= 2; + break; + case 1: + viableMoveScores[currId] -= 2; + break; + } + switch (AI_WhichMoveBetter(moves[currId], moves[i], battlerAtk, battlerDef, noOfHits[currId])) + { + case 0: + viableMoveScores[i] -= 1; + break; + case 1: + viableMoveScores[currId] -= 1; + break; + } + } + } + // Turns out the current move deals the most dmg compared to the other 3. + if (!multipleBestMoves) + ADJUST_SCORE(1); + else + { + bestViableMoveScore = 0; + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (viableMoveScores[i] > bestViableMoveScore) + bestViableMoveScore = viableMoveScores[i]; + } + // Unless a better move was found increase score of current move + if (viableMoveScores[currId] == bestViableMoveScore) + ADJUST_SCORE(1); + } + } + + return score; } // AI_FLAG_CHECK_VIABILITY - a weird mix of increasing and decreasing scores @@ -3141,118 +3210,62 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score // move data u32 moveEffect = gBattleMoves[move].effect; struct AiLogicData *aiData = AI_DATA; - u32 effectiveness = aiData->effectiveness[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex]; + u32 movesetIndex = AI_THINKING_STRUCT->movesetIndex; + u32 effectiveness = aiData->effectiveness[battlerAtk][battlerDef][movesetIndex]; + u32 secondaryEffectChance = AI_CalcSecondaryEffectChance(battlerAtk, gBattleMoves[move].secondaryEffectChance); s8 atkPriority = GetMovePriority(battlerAtk, move); u32 predictedMove = aiData->predictedMoves[battlerDef]; u32 predictedMoveSlot = GetMoveSlot(GetMovesArray(battlerDef), predictedMove); bool32 isDoubleBattle = IsValidDoubleBattle(battlerAtk); u32 i; - // We only check for moves that have a 20% chance or more for their secondary effect to happen because moves with a smaller chance are rather worthless. We don't want the AI to use those. - bool32 sereneGraceBoost = (aiData->abilities[battlerAtk] == ABILITY_SERENE_GRACE && (gBattleMoves[move].secondaryEffectChance >= 20 && gBattleMoves[move].secondaryEffectChance < 100)); + + // The AI should understand that while Dynamaxed, status moves function like Protect. + if (IsDynamaxed(battlerAtk) && gBattleMoves[move].split == SPLIT_STATUS) + moveEffect = EFFECT_PROTECT; // Targeting partner, check benefits of doing that instead if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) return score; + if (gBattleMoves[move].power) + score += AI_CompareDamagingMoves(battlerAtk, battlerDef, movesetIndex); + // check always hits if (!IS_MOVE_STATUS(move) && gBattleMoves[move].accuracy == 0) { - // If 2 moves can KO the target in the same number of turns, but one of them always hits and there is a risk the other move could miss, prioritize the always hits move. - if (gBattleMons[battlerDef].statStages[STAT_EVASION] > 6 || gBattleMons[battlerAtk].statStages[STAT_ACC] < 6) - { - u32 mostDmgMoveId = GetAIMostDamagingMoveId(battlerAtk, battlerDef); - u32 *dmgs = aiData->simulatedDmg[battlerAtk][battlerDef]; - if (GetNoOfHitsToKO(dmgs[mostDmgMoveId], gBattleMons[battlerDef].hp) == GetNoOfHitsToKO(dmgs[AI_THINKING_STRUCT->movesetIndex], gBattleMons[battlerDef].hp)) - score++; - } if (gBattleMons[battlerDef].statStages[STAT_EVASION] >= 10 || gBattleMons[battlerAtk].statStages[STAT_ACC] <= 2) - score++; + ADJUST_SCORE(1); if (AI_RandLessThan(100) && (gBattleMons[battlerDef].statStages[STAT_EVASION] >= 8 || gBattleMons[battlerAtk].statStages[STAT_ACC] <= 4)) - score++; + ADJUST_SCORE(1); } - // check high crit - if (gBattleMoves[move].highCritRatio && effectiveness >= AI_EFFECTIVENESS_x2 && AI_RandLessThan(128)) - score++; - // check already dead if (!IsBattlerIncapacitated(battlerDef, aiData->abilities[battlerDef]) && CanTargetFaintAi(battlerAtk, battlerDef) && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER) // Opponent should go first { if (atkPriority > 0) - score++; + ADJUST_SCORE(1); else - score--; + ADJUST_SCORE(-1); } - // check damage - if (gBattleMoves[move].power != 0 && GetMoveDamageResult(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex) == MOVE_POWER_WEAK) - score--; - // check status move preference if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_PREFER_STATUS_MOVES && IS_MOVE_STATUS(move) && effectiveness != AI_EFFECTIVENESS_x0) - score++; + ADJUST_SCORE(1); // check thawing moves if ((gBattleMons[battlerAtk].status1 & (STATUS1_FREEZE | STATUS1_FROSTBITE)) && gBattleMoves[move].thawsUser) - score += (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) ? 20 : 10; + ADJUST_SCORE(10); - // check burn - if (gBattleMons[battlerAtk].status1 & STATUS1_BURN) + // check burn / frostbite + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING && AI_DATA->abilities[battlerAtk] == ABILITY_NATURAL_CURE) { - switch (aiData->abilities[battlerAtk]) - { - case ABILITY_GUTS: - break; - case ABILITY_NATURAL_CURE: - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING - && HasOnlyMovesWithSplit(battlerAtk, SPLIT_PHYSICAL, TRUE)) - score = 90; // Force switch if all your attacking moves are physical and you have Natural Cure. - break; - default: - if (IS_MOVE_PHYSICAL(move) && gBattleMoves[move].effect != EFFECT_FACADE) - score -= 2; - break; - } + if ((gBattleMons[battlerAtk].status1 & STATUS1_BURN && HasOnlyMovesWithSplit(battlerAtk, SPLIT_PHYSICAL, TRUE)) + || (gBattleMons[battlerAtk].status1 & STATUS1_FROSTBITE && HasOnlyMovesWithSplit(battlerAtk, SPLIT_SPECIAL, TRUE))) + ADJUST_SCORE(-20); // Force switch if all your attacking moves are physical and you have Natural Cure. } - // check frostbite - if (gBattleMons[battlerAtk].status1 & STATUS1_FROSTBITE) - { - switch (aiData->abilities[battlerAtk]) - { - case ABILITY_GUTS: - break; - case ABILITY_NATURAL_CURE: - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING - && HasOnlyMovesWithSplit(battlerAtk, SPLIT_SPECIAL, TRUE)) - score = 90; // Force switch if all your attacking moves are special and you have Natural Cure. - break; - default: - if (IS_MOVE_SPECIAL(move) && gBattleMoves[move].effect != EFFECT_FACADE) - score -= 2; - break; - } - } - - // attacker ability checks - switch (aiData->abilities[battlerAtk]) - { - case ABILITY_MOXIE: - case ABILITY_BEAST_BOOST: - case ABILITY_CHILLING_NEIGH: - case ABILITY_GRIM_NEIGH: - case ABILITY_AS_ONE_ICE_RIDER: - case ABILITY_AS_ONE_SHADOW_RIDER: - if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) // Attacker should go first - { - if (CanIndexMoveFaintTarget(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex, 0)) - score += 8; // prioritize killing target for stat boost - } - break; - } // ability checks - // move effect checks switch (moveEffect) { @@ -3264,17 +3277,14 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score IncreaseSleepScore(battlerAtk, battlerDef, move, &score); break; case EFFECT_ABSORB: - if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_BIG_ROOT) - score++; - if (effectiveness <= AI_EFFECTIVENESS_x0_5 && AI_RandLessThan(50)) - score -= 3; - break; + if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_BIG_ROOT && effectiveness >= AI_EFFECTIVENESS_x1) + ADJUST_SCORE(2); case EFFECT_EXPLOSION: case EFFECT_MEMENTO: if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_WILL_SUICIDE && gBattleMons[battlerDef].statStages[STAT_EVASION] < 7) { if (aiData->hpPercents[battlerAtk] < 50 && AI_RandLessThan(128)) - score++; + ADJUST_SCORE(1); } break; case EFFECT_MIRROR_MOVE: @@ -3287,45 +3297,45 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score case EFFECT_ATTACK_UP_USER_ALLY: if (MovesWithSplitUnusable(battlerAtk, battlerDef, SPLIT_PHYSICAL)) { - score -= 8; + ADJUST_SCORE(-8); break; } else if (gBattleMons[battlerAtk].statStages[STAT_ATK] < 9) { if (aiData->hpPercents[battlerAtk] > 90 && AI_RandLessThan(128)) { - score += 2; + ADJUST_SCORE(2); break; } } if (!AI_RandLessThan(100)) { - score--; + ADJUST_SCORE(-1); } break; case EFFECT_DEFENSE_UP: case EFFECT_DEFENSE_UP_2: case EFFECT_DEFENSE_UP_3: if (!HasMoveWithSplit(battlerDef, SPLIT_PHYSICAL)) - score -= 2; + ADJUST_SCORE(-2); if (aiData->hpPercents[battlerAtk] > 90 && AI_RandLessThan(128)) - score += 2; + ADJUST_SCORE(2); else if (aiData->hpPercents[battlerAtk] > 70 && AI_RandLessThan(200)) break; else if (aiData->hpPercents[battlerAtk] < 40) - score -= 2; + ADJUST_SCORE(-2); break; case EFFECT_SPEED_UP: case EFFECT_SPEED_UP_2: if (!AI_STRIKES_FIRST(battlerAtk, battlerDef, move)) { if (!AI_RandLessThan(70)) - score += 3; + ADJUST_SCORE(3); } else { - score -= 3; + ADJUST_SCORE(-3); } break; case EFFECT_SPECIAL_ATTACK_UP: @@ -3333,160 +3343,155 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score case EFFECT_SPECIAL_ATTACK_UP_3: if (MovesWithSplitUnusable(battlerAtk, battlerDef, SPLIT_SPECIAL)) { - score -= 8; + ADJUST_SCORE(-8); break; } else if (gBattleMons[battlerAtk].statStages[STAT_SPATK] < 9) { if (aiData->hpPercents[battlerAtk] > 90 && AI_RandLessThan(128)) { - score += 2; + ADJUST_SCORE(2); break; } } if (!AI_RandLessThan(100)) { - score--; + ADJUST_SCORE(-1); } break; case EFFECT_SPECIAL_DEFENSE_UP: case EFFECT_SPECIAL_DEFENSE_UP_2: if (!HasMoveWithSplit(battlerDef, SPLIT_SPECIAL)) - score -= 2; + ADJUST_SCORE(-2); if (aiData->hpPercents[battlerAtk] > 90 && AI_RandLessThan(128)) - score += 2; + ADJUST_SCORE(2); else if (aiData->hpPercents[battlerAtk] > 70 && AI_RandLessThan(200)) break; else if (aiData->hpPercents[battlerAtk] < 40) - score -= 2; + ADJUST_SCORE(-2); break; case EFFECT_ACCURACY_UP: case EFFECT_ACCURACY_UP_2: if (gBattleMons[battlerAtk].statStages[STAT_ACC] >= 9 && !AI_RandLessThan(50)) - score -= 2; + ADJUST_SCORE(-2); else if (aiData->hpPercents[battlerAtk] <= 70) - score -= 2; + ADJUST_SCORE(-2); else - score++; + ADJUST_SCORE(1); break; case EFFECT_EVASION_UP: case EFFECT_EVASION_UP_2: if (aiData->hpPercents[battlerAtk] > 90 && !AI_RandLessThan(100)) - score += 3; + ADJUST_SCORE(3); if (gBattleMons[battlerAtk].statStages[STAT_EVASION] > 9 && AI_RandLessThan(128)) - score--; + ADJUST_SCORE(-1); if ((gBattleMons[battlerDef].status1 & STATUS1_PSN_ANY) && aiData->hpPercents[battlerAtk] >= 50 && !AI_RandLessThan(80)) - score += 3; + ADJUST_SCORE(3); if (gStatuses3[battlerDef] & STATUS3_LEECHSEED && !AI_RandLessThan(70)) - score += 3; + ADJUST_SCORE(3); if (gStatuses3[battlerAtk] & STATUS3_ROOTED && AI_RandLessThan(128)) - score += 2; + ADJUST_SCORE(2); if (gBattleMons[battlerDef].status2 & STATUS2_CURSED && !AI_RandLessThan(70)) - score += 3; + ADJUST_SCORE(3); if (aiData->hpPercents[battlerAtk] < 70 || gBattleMons[battlerAtk].statStages[STAT_EVASION] == DEFAULT_STAT_STAGE) break; else if (aiData->hpPercents[battlerAtk] < 40 || aiData->hpPercents[battlerDef] < 40) - score -= 2; + ADJUST_SCORE(-2); else if (!AI_RandLessThan(70)) - score -= 2; + ADJUST_SCORE(-2); break; // stat lowering effects case EFFECT_ATTACK_DOWN: case EFFECT_ATTACK_DOWN_2: if (!ShouldLowerAttack(battlerAtk, battlerDef, aiData->abilities[battlerDef])) - score -= 2; + ADJUST_SCORE(-2); if (gBattleMons[battlerDef].statStages[STAT_ATK] < DEFAULT_STAT_STAGE) - score--; + ADJUST_SCORE(-1); else if (aiData->hpPercents[battlerAtk] <= 90) - score--; + ADJUST_SCORE(-1); if (gBattleMons[battlerDef].statStages[STAT_ATK] > 3 && !AI_RandLessThan(50)) - score -= 2; + ADJUST_SCORE(-2); else if (aiData->hpPercents[battlerDef] < 70) - score -= 2; + ADJUST_SCORE(-2); break; case EFFECT_DEFENSE_DOWN: case EFFECT_DEFENSE_DOWN_2: if (!ShouldLowerDefense(battlerAtk, battlerDef, aiData->abilities[battlerDef])) - score -= 2; + ADJUST_SCORE(-2); if ((aiData->hpPercents[battlerAtk] < 70 && !AI_RandLessThan(50)) || (gBattleMons[battlerDef].statStages[STAT_DEF] <= 3 && !AI_RandLessThan(50))) - score -= 2; + ADJUST_SCORE(-2); if (aiData->hpPercents[battlerDef] <= 70) - score -= 2; + ADJUST_SCORE(-2); break; case EFFECT_SPEED_DOWN: case EFFECT_SPEED_DOWN_2: if (AI_STRIKES_FIRST(battlerAtk, battlerDef, move)) - score -= 3; + ADJUST_SCORE(-3); else if (!AI_RandLessThan(70)) - score += 2; + ADJUST_SCORE(2); break; case EFFECT_SPECIAL_ATTACK_DOWN: case EFFECT_SPECIAL_ATTACK_DOWN_2: if (!ShouldLowerSpAtk(battlerAtk, battlerDef, aiData->abilities[battlerDef])) - score -= 2; + ADJUST_SCORE(-2); if (gBattleMons[battlerDef].statStages[STAT_SPATK] < DEFAULT_STAT_STAGE) - score--; + ADJUST_SCORE(-1); else if (aiData->hpPercents[battlerAtk] <= 90) - score--; + ADJUST_SCORE(-1); if (gBattleMons[battlerDef].statStages[STAT_SPATK] > 3 && !AI_RandLessThan(50)) - score -= 2; + ADJUST_SCORE(-2); else if (aiData->hpPercents[battlerDef] < 70) - score -= 2; + ADJUST_SCORE(-2); break; case EFFECT_SPECIAL_DEFENSE_DOWN: case EFFECT_SPECIAL_DEFENSE_DOWN_2: if (!ShouldLowerSpDef(battlerAtk, battlerDef, aiData->abilities[battlerDef])) - score -= 2; + ADJUST_SCORE(-2); if ((aiData->hpPercents[battlerAtk] < 70 && !AI_RandLessThan(50)) || (gBattleMons[battlerDef].statStages[STAT_SPDEF] <= 3 && !AI_RandLessThan(50))) - score -= 2; + ADJUST_SCORE(-2); if (aiData->hpPercents[battlerDef] <= 70) - score -= 2; + ADJUST_SCORE(-2); break; case EFFECT_ACCURACY_DOWN: case EFFECT_ACCURACY_DOWN_2: if (ShouldLowerAccuracy(battlerAtk, battlerDef, aiData->abilities[battlerDef])) - score -= 2; + ADJUST_SCORE(-2); if ((aiData->hpPercents[battlerAtk] < 70 || aiData->hpPercents[battlerDef] < 70) && AI_RandLessThan(100)) - score--; + ADJUST_SCORE(-1); if (gBattleMons[battlerDef].statStages[STAT_ACC] <= 4 && !AI_RandLessThan(80)) - score -= 2; + ADJUST_SCORE(-2); if (gBattleMons[battlerDef].status1 & STATUS1_PSN_ANY && !AI_RandLessThan(70)) - score += 2; + ADJUST_SCORE(2); if (gStatuses3[battlerDef] & STATUS3_LEECHSEED && !AI_RandLessThan(70)) - score += 2; + ADJUST_SCORE(2); if (gStatuses3[battlerDef] & STATUS3_ROOTED && AI_RandLessThan(128)) - score++; + ADJUST_SCORE(1); if (gBattleMons[battlerDef].status2 & STATUS2_CURSED && !AI_RandLessThan(70)) - score += 2; + ADJUST_SCORE(2); if (aiData->hpPercents[battlerAtk] > 70 || gBattleMons[battlerDef].statStages[STAT_ACC] < DEFAULT_STAT_STAGE) break; else if (aiData->hpPercents[battlerAtk] < 40 || aiData->hpPercents[battlerDef] < 40 || !AI_RandLessThan(70)) - score -= 2; + ADJUST_SCORE(-2); break; case EFFECT_EVASION_DOWN: case EFFECT_EVASION_DOWN_2: if (!ShouldLowerEvasion(battlerAtk, battlerDef, aiData->abilities[battlerDef])) - score -= 2; + ADJUST_SCORE(-2); if ((aiData->hpPercents[battlerAtk] < 70 || gBattleMons[battlerDef].statStages[STAT_EVASION] <= 3) && !AI_RandLessThan(50)) - score -= 2; + ADJUST_SCORE(-2); if (aiData->hpPercents[battlerDef] <= 70) - score -= 2; + ADJUST_SCORE(-2); if (gBattleMons[battlerAtk].statStages[STAT_ACC] < DEFAULT_STAT_STAGE) - score++; + ADJUST_SCORE(1); if (gBattleMons[battlerDef].statStages[STAT_EVASION] < 7 || aiData->abilities[battlerAtk] == ABILITY_NO_GUARD) - score -= 2; + ADJUST_SCORE(-2); break; case EFFECT_BIDE: if (aiData->hpPercents[battlerAtk] < 90) - score -= 2; + ADJUST_SCORE(-2); break; - case EFFECT_DREAM_EATER: - if (!(gBattleMons[battlerDef].status1 & STATUS1_SLEEP)) - break; - score++; // if target is asleep, dream eater is a pretty good move even without draining - // fallthrough case EFFECT_ACUPRESSURE: break; case EFFECT_ATTACK_ACCURACY_UP: // hone claws @@ -3506,7 +3511,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score case EFFECT_HAZE: if (AnyStatIsRaised(BATTLE_PARTNER(battlerAtk)) || PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove)) - score -= 3; + ADJUST_SCORE(-3); break; // fallthrough case EFFECT_ROAR: @@ -3521,11 +3526,11 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score if (AI_MoveMakesContact(aiData->abilities[battlerAtk], aiData->holdEffects[battlerAtk], move) && aiData->abilities[battlerAtk] != ABILITY_MAGIC_GUARD && aiData->holdEffects[battlerDef] == HOLD_EFFECT_ROCKY_HELMET) - score -= 2; + ADJUST_SCORE(-2); break; case EFFECT_CONVERSION: if (!IS_BATTLER_OF_TYPE(battlerAtk, gBattleMoves[gBattleMons[battlerAtk].moves[0]].type)) - score++; + ADJUST_SCORE(1); break; case EFFECT_FLINCH_HIT: score += ShouldTryToFlinch(battlerAtk, battlerDef, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], move); @@ -3554,7 +3559,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score } if (ShouldRecover(battlerAtk, battlerDef, move, healPercent)) - score += 2; + ADJUST_SCORE(2); } break; case EFFECT_RESTORE_HP: @@ -3564,9 +3569,9 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score case EFFECT_SYNTHESIS: case EFFECT_MOONLIGHT: if (ShouldRecover(battlerAtk, battlerDef, move, 50)) - score += 3; + ADJUST_SCORE(3); if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_BIG_ROOT) - score++; + ADJUST_SCORE(1); break; case EFFECT_TOXIC: case EFFECT_POISON: @@ -3579,11 +3584,11 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score case EFFECT_AURORA_VEIL: if (ShouldSetScreen(battlerAtk, battlerDef, moveEffect)) { - score += 5; + ADJUST_SCORE(5); if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_LIGHT_CLAY) - score += 2; + ADJUST_SCORE(2); if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_SCREENER) - score += 2; + ADJUST_SCORE(2); } break; case EFFECT_REST: @@ -3601,17 +3606,17 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score || aiData->abilities[battlerAtk] == ABILITY_EARLY_BIRD || (AI_GetWeather(aiData) & B_WEATHER_RAIN && gWishFutureKnock.weatherDuration != 1 && aiData->abilities[battlerAtk] == ABILITY_HYDRATION && aiData->holdEffects[battlerAtk] != HOLD_EFFECT_UTILITY_UMBRELLA)) { - score += 2; + ADJUST_SCORE(2); } else { - score++; + ADJUST_SCORE(1); } } break; case EFFECT_OHKO: if (gStatuses3[battlerAtk] & STATUS3_ALWAYS_HITS) - score += 5; + ADJUST_SCORE(5); break; case EFFECT_TRAP: if (HasMoveEffect(battlerDef, EFFECT_RAPID_SPIN)) @@ -3621,11 +3626,11 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score if (IsBattlerTrapped(battlerDef, TRUE)) break; // in this case its a bad attacking move else if (ShouldTrap(battlerAtk, battlerDef, move)) - score += 5; + ADJUST_SCORE(5); break; case EFFECT_MIST: if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_SCREENER) - score += 2; + ADJUST_SCORE(2); break; case EFFECT_FOCUS_ENERGY: case EFFECT_LASER_FOCUS: @@ -3633,49 +3638,31 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score || aiData->abilities[battlerAtk] == ABILITY_SNIPER || aiData->holdEffects[battlerAtk] == HOLD_EFFECT_SCOPE_LENS || HasHighCritRatioMove(battlerAtk)) - score += 2; + ADJUST_SCORE(2); break; - case EFFECT_CONFUSE_HIT: - if (sereneGraceBoost) - score++; - //fallthrough case EFFECT_CONFUSE: IncreaseConfusionScore(battlerAtk, battlerDef, move, &score); break; case EFFECT_PARALYZE: IncreaseParalyzeScore(battlerAtk, battlerDef, move, &score); break; - case EFFECT_GRAV_APPLE: - if (gFieldStatuses & STATUS_FIELD_GRAVITY) - score += 2; - // fall through + case EFFECT_SPEED_DOWN_HIT: + if (!ShouldLowerSpeed(battlerAtk, battlerDef, aiData->abilities[battlerDef])) + break; case EFFECT_ATTACK_DOWN_HIT: case EFFECT_DEFENSE_DOWN_HIT: case EFFECT_SPECIAL_ATTACK_DOWN_HIT: case EFFECT_SPECIAL_DEFENSE_DOWN_HIT: case EFFECT_ACCURACY_DOWN_HIT: case EFFECT_EVASION_DOWN_HIT: - if (sereneGraceBoost && aiData->abilities[battlerDef] != ABILITY_CONTRARY) - score += 2; - break; - case EFFECT_SPEED_DOWN_HIT: - if (AI_STRIKES_FIRST(battlerAtk, battlerDef, move)) - score -= 2; - else if (!AI_RandLessThan(70)) - score++; - if (ShouldLowerSpeed(battlerAtk, battlerDef, aiData->abilities[battlerDef])) - { - if (sereneGraceBoost && aiData->abilities[battlerDef] != ABILITY_CONTRARY) - score += 5; - else - score += 2; - } + if (secondaryEffectChance >= 100 && aiData->abilities[battlerDef] != ABILITY_CONTRARY) + ADJUST_SCORE(2); break; case EFFECT_SUBSTITUTE: if (gStatuses3[battlerDef] & STATUS3_PERISH_SONG) - score += 3; + ADJUST_SCORE(3); if (gBattleMons[battlerDef].status1 & (STATUS1_BURN | STATUS1_PSN_ANY | STATUS1_FROSTBITE)) - score++; + ADJUST_SCORE(1); if (HasMoveEffect(battlerDef, EFFECT_SLEEP) || HasMoveEffect(battlerDef, EFFECT_TOXIC) || HasMoveEffect(battlerDef, EFFECT_POISON) @@ -3683,9 +3670,9 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score || HasMoveEffect(battlerDef, EFFECT_WILL_O_WISP) || HasMoveEffect(battlerDef, EFFECT_CONFUSE) || HasMoveEffect(battlerDef, EFFECT_LEECH_SEED)) - score += 2; + ADJUST_SCORE(2); if (!gBattleMons[battlerDef].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION && aiData->hpPercents[battlerAtk] > 70)) - score++; + ADJUST_SCORE(1); break; case EFFECT_MIMIC: if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) @@ -3701,9 +3688,9 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score || aiData->abilities[battlerDef] == ABILITY_LIQUID_OOZE || aiData->abilities[battlerDef] == ABILITY_MAGIC_GUARD) break; - score += 3; + ADJUST_SCORE(3); if (!HasDamagingMove(battlerDef) || IsBattlerTrapped(battlerDef, FALSE)) - score += 2; + ADJUST_SCORE(2); break; case EFFECT_DO_NOTHING: //todo - check z splash, z celebrate, z happy hour (lol) @@ -3716,15 +3703,15 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score case EFFECT_PARTING_SHOT: if (!IsDoubleBattle()) { - switch (ShouldPivot(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, AI_THINKING_STRUCT->movesetIndex)) + switch (ShouldPivot(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, movesetIndex)) { case 0: // no - score -= 10; // technically should go in CheckBadMove, but this is easier/less computationally demanding + ADJUST_SCORE(-10); // technically should go in CheckBadMove, but this is easier/less computationally demanding break; case 1: // maybe break; case 2: // yes - score += 7; + ADJUST_SCORE(7); break; } } @@ -3734,21 +3721,18 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score break; // Can't switch //if (switchAbility == ABILITY_INTIMIDATE && PartyHasMoveSplit(battlerDef, SPLIT_PHYSICAL)) - //score += 7; + //ADJUST_SCORE(7); } break; case EFFECT_BATON_PASS: if (ShouldSwitch(battlerAtk) && (gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE || (gStatuses3[battlerAtk] & (STATUS3_ROOTED | STATUS3_AQUA_RING | STATUS3_MAGNET_RISE | STATUS3_POWER_TRICK)) || AnyStatIsRaised(battlerAtk))) - score += 5; + ADJUST_SCORE(5); break; case EFFECT_DISABLE: if (gDisableStructs[battlerDef].disableTimer == 0 - #if B_MENTAL_HERB >= GEN_5 - && aiData->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB // mental herb - #endif - ) + && (B_MENTAL_HERB < GEN_5 || aiData->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB)) { if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) // AI goes first { @@ -3756,58 +3740,55 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score && gLastMoves[battlerDef] != 0xFFFF) { if (gLastMoves[battlerDef] == predictedMove) - score += 3; + ADJUST_SCORE(3); else if (CanTargetMoveFaintAi(gLastMoves[battlerDef], battlerDef, battlerAtk, 1)) - score += 2; //Disable move that can kill attacker + ADJUST_SCORE(2); //Disable move that can kill attacker } } else if (predictedMove != MOVE_NONE && IS_MOVE_STATUS(predictedMove)) { - score++; // Disable annoying status moves + ADJUST_SCORE(1); // Disable annoying status moves } } break; case EFFECT_ENCORE: if (gDisableStructs[battlerDef].encoreTimer == 0 - #if B_MENTAL_HERB >= GEN_5 - && aiData->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB // mental herb - #endif - ) + && (B_MENTAL_HERB < GEN_5 || aiData->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB)) { if (IsEncoreEncouragedEffect(gBattleMoves[gLastMoves[battlerDef]].effect)) - score += 3; + ADJUST_SCORE(3); } break; case EFFECT_PAIN_SPLIT: { u32 newHp = (gBattleMons[battlerAtk].hp + gBattleMons[battlerDef].hp) / 2; u32 healthBenchmark = (gBattleMons[battlerAtk].hp * 12) / 10; - if (newHp > healthBenchmark && ShouldAbsorb(battlerAtk, battlerDef, move, aiData->simulatedDmg[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex])) - score += 2; + if (newHp > healthBenchmark && ShouldAbsorb(battlerAtk, battlerDef, move, aiData->simulatedDmg[battlerAtk][battlerDef][movesetIndex])) + ADJUST_SCORE(2); } break; case EFFECT_SLEEP_TALK: case EFFECT_SNORE: if (!IsWakeupTurn(battlerAtk) && gBattleMons[battlerAtk].status1 & STATUS1_SLEEP) - score += 10; + ADJUST_SCORE(10); break; case EFFECT_LOCK_ON: if (HasMoveEffect(battlerAtk, EFFECT_OHKO)) - score += 3; + ADJUST_SCORE(3); else if (aiData->abilities[battlerAtk] == ABILITY_COMPOUND_EYES && HasMoveWithLowAccuracy(battlerAtk, battlerDef, 80, TRUE, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef])) - score += 3; + ADJUST_SCORE(3); else if (HasMoveWithLowAccuracy(battlerAtk, battlerDef, 85, TRUE, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef])) - score += 3; + ADJUST_SCORE(3); else if (HasMoveWithLowAccuracy(battlerAtk, battlerDef, 90, TRUE, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef])) - score++; + ADJUST_SCORE(1); break; case EFFECT_SPEED_UP_HIT: - if (sereneGraceBoost && aiData->abilities[battlerDef] != ABILITY_CONTRARY && !AI_STRIKES_FIRST(battlerAtk, battlerDef, move)) - score += 3; + if (secondaryEffectChance >= 100 && aiData->abilities[battlerDef] != ABILITY_CONTRARY && !AI_STRIKES_FIRST(battlerAtk, battlerDef, move)) + ADJUST_SCORE(3); break; case EFFECT_DESTINY_BOND: if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER && CanTargetFaintAi(battlerDef, battlerAtk)) - score += 3; + ADJUST_SCORE(3); break; case EFFECT_SPITE: //TODO - predicted move @@ -3815,15 +3796,14 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score case EFFECT_WISH: case EFFECT_HEAL_BELL: if (ShouldUseWishAromatherapy(battlerAtk, battlerDef, move)) - score += 3; + ADJUST_SCORE(3); break; case EFFECT_THIEF: { bool32 canSteal = FALSE; - #if B_TRAINERS_KNOCK_OFF_ITEMS == TRUE + if (B_TRAINERS_KNOCK_OFF_ITEMS == TRUE) canSteal = TRUE; - #endif if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER || GetBattlerSide(battlerAtk) == B_SIDE_PLAYER) canSteal = TRUE; @@ -3841,29 +3821,29 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score case HOLD_EFFECT_CHOICE_BAND: case HOLD_EFFECT_CHOICE_SCARF: case HOLD_EFFECT_CHOICE_SPECS: - score += 2; + ADJUST_SCORE(2); break; case HOLD_EFFECT_TOXIC_ORB: if (ShouldPoisonSelf(battlerAtk, aiData->abilities[battlerAtk])) - score += 2; + ADJUST_SCORE(2); break; case HOLD_EFFECT_FLAME_ORB: if (ShouldBurnSelf(battlerAtk, aiData->abilities[battlerAtk])) - score += 2; + ADJUST_SCORE(2); break; case HOLD_EFFECT_BLACK_SLUDGE: if (IS_BATTLER_OF_TYPE(battlerAtk, TYPE_POISON)) - score += 2; + ADJUST_SCORE(2); break; case HOLD_EFFECT_IRON_BALL: if (HasMoveEffect(battlerAtk, EFFECT_FLING)) - score += 2; + ADJUST_SCORE(2); break; case HOLD_EFFECT_LAGGING_TAIL: case HOLD_EFFECT_STICKY_BARB: break; default: - score++; + ADJUST_SCORE(1); break; } } @@ -3875,18 +3855,18 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score && !(gBattleMons[battlerDef].status2 & STATUS2_NIGHTMARE) && AI_IsBattlerAsleepOrComatose(battlerDef)) { - score += 5; + ADJUST_SCORE(5); if (IsBattlerTrapped(battlerDef, TRUE)) - score += 3; + ADJUST_SCORE(3); } break; case EFFECT_CURSE: if (IS_BATTLER_OF_TYPE(battlerAtk, TYPE_GHOST)) { if (IsBattlerTrapped(battlerDef, TRUE)) - score += 3; + ADJUST_SCORE(3); else - score++; + ADJUST_SCORE(1); break; } else @@ -3936,7 +3916,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score && gBattleMons[battlerAtk].species == SPECIES_AEGISLASH_BLADE && !IsBattlerIncapacitated(battlerDef, aiData->abilities[battlerDef])) { - score += 3; + ADJUST_SCORE(3); break; } //fallthrough @@ -3951,12 +3931,12 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score if (gBattleMons[battlerAtk].hp > gBattleMons[battlerAtk].maxHP / 4 // Pinch berry couldn't have activated yet && IsPinchBerryItemEffect(aiData->holdEffects[battlerAtk])) { - score += 3; + ADJUST_SCORE(3); } else if (gBattleMons[battlerAtk].hp > 1) // Only spam endure for Flail/Reversal if you're not at Min Health { if (HasMoveEffect(battlerAtk, EFFECT_FLAIL) || HasMoveEffect(battlerAtk, EFFECT_ENDEAVOR)) - score += 3; + ADJUST_SCORE(3); } } break; @@ -3969,7 +3949,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score if (aiData->abilities[battlerDef] == ABILITY_MAGIC_BOUNCE || CountUsablePartyMons(battlerDef) == 0) break; if (gDisableStructs[battlerAtk].isFirstTurn) - score += 2; + ADJUST_SCORE(2); //TODO - track entire opponent party data to determine hazard effectiveness break; case EFFECT_FORESIGHT: @@ -3979,27 +3959,27 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score || (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GHOST) && (HasMoveWithType(battlerAtk, TYPE_NORMAL) || HasMoveWithType(battlerAtk, TYPE_FIGHTING)))) - score += 2; + ADJUST_SCORE(2); break; case EFFECT_MIRACLE_EYE: if (gBattleMons[battlerDef].statStages[STAT_EVASION] > DEFAULT_STAT_STAGE || (IS_BATTLER_OF_TYPE(battlerDef, TYPE_DARK) && (HasMoveWithType(battlerAtk, TYPE_PSYCHIC)))) - score += 2; + ADJUST_SCORE(2); break; case EFFECT_PERISH_SONG: if (IsBattlerTrapped(battlerDef, TRUE)) - score += 3; + ADJUST_SCORE(3); break; case EFFECT_SANDSTORM: if (ShouldSetSandstorm(battlerAtk, aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerAtk])) { - score++; + ADJUST_SCORE(1); if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_SMOOTH_ROCK) - score++; + ADJUST_SCORE(1); if (HasMoveEffect(battlerDef, EFFECT_MORNING_SUN) || HasMoveEffect(battlerDef, EFFECT_SYNTHESIS) || HasMoveEffect(battlerDef, EFFECT_MOONLIGHT)) - score += 2; + ADJUST_SCORE(2); } break; case EFFECT_HAIL: @@ -4007,15 +3987,15 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score { if ((HasMoveEffect(battlerAtk, EFFECT_AURORA_VEIL) || HasMoveEffect(BATTLE_PARTNER(battlerAtk), EFFECT_AURORA_VEIL)) && ShouldSetScreen(battlerAtk, battlerDef, EFFECT_AURORA_VEIL)) - score += 3; + ADJUST_SCORE(3); - score++; + ADJUST_SCORE(1); if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_ICY_ROCK) - score++; + ADJUST_SCORE(1); if (HasMoveEffect(battlerDef, EFFECT_MORNING_SUN) || HasMoveEffect(battlerDef, EFFECT_SYNTHESIS) || HasMoveEffect(battlerDef, EFFECT_MOONLIGHT)) - score += 2; + ADJUST_SCORE(2); } break; case EFFECT_SNOWSCAPE: @@ -4023,60 +4003,61 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score { if ((HasMoveEffect(battlerAtk, EFFECT_AURORA_VEIL) || HasMoveEffect(BATTLE_PARTNER(battlerAtk), EFFECT_AURORA_VEIL)) && ShouldSetScreen(battlerAtk, battlerDef, EFFECT_AURORA_VEIL)) - score += 3; + ADJUST_SCORE(3); - score++; + ADJUST_SCORE(1); if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_ICY_ROCK) - score++; + ADJUST_SCORE(1); if (HasMoveEffect(battlerDef, EFFECT_MORNING_SUN) || HasMoveEffect(battlerDef, EFFECT_SYNTHESIS) || HasMoveEffect(battlerDef, EFFECT_MOONLIGHT)) - score += 2; + ADJUST_SCORE(2); } break; case EFFECT_RAIN_DANCE: if (ShouldSetRain(battlerAtk, aiData->abilities[battlerAtk], aiData->holdEffects[battlerAtk])) { - score++; + ADJUST_SCORE(1); if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_DAMP_ROCK) - score++; + ADJUST_SCORE(1); if (HasMoveEffect(battlerDef, EFFECT_MORNING_SUN) || HasMoveEffect(battlerDef, EFFECT_SYNTHESIS) + || HasMoveEffect(battlerDef, EFFECT_SOLAR_BEAM) || HasMoveEffect(battlerDef, EFFECT_MOONLIGHT)) - score += 2; + ADJUST_SCORE(2); if (HasMoveWithType(battlerDef, TYPE_FIRE) || HasMoveWithType(BATTLE_PARTNER(battlerDef), TYPE_FIRE)) - score++; + ADJUST_SCORE(1); } break; case EFFECT_SUNNY_DAY: if (ShouldSetSun(battlerAtk, aiData->abilities[battlerAtk], aiData->holdEffects[battlerAtk])) { - score++; + ADJUST_SCORE(1); if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_HEAT_ROCK) - score++; + ADJUST_SCORE(1); if (HasMoveWithType(battlerDef, TYPE_WATER) || HasMoveWithType(BATTLE_PARTNER(battlerDef), TYPE_WATER)) - score++; + ADJUST_SCORE(1); if (HasMoveEffect(battlerDef, EFFECT_THUNDER) || HasMoveEffect(BATTLE_PARTNER(battlerDef), EFFECT_THUNDER)) - score++; + ADJUST_SCORE(1); } break; case EFFECT_ATTACK_UP_HIT: - if (sereneGraceBoost) + if (secondaryEffectChance >= 100) IncreaseStatUpScore(battlerAtk, battlerDef, STAT_ATK, &score); break; case EFFECT_SPECIAL_ATTACK_UP_HIT: - if (sereneGraceBoost) + if (secondaryEffectChance >= 100) IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPATK, &score); break; case EFFECT_FELL_STINGER: if (gBattleMons[battlerAtk].statStages[STAT_ATK] < MAX_STAT_STAGE && aiData->abilities[battlerAtk] != ABILITY_CONTRARY - && CanIndexMoveFaintTarget(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex, 0)) + && CanIndexMoveFaintTarget(battlerAtk, battlerDef, movesetIndex, 0)) { if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) // Attacker goes first - score += 9; + ADJUST_SCORE(9); else - score += 3; + ADJUST_SCORE(3); } break; case EFFECT_BELLY_DRUM: @@ -4094,54 +4075,54 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score { case STAT_ATK: if (HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL)) - score++; + ADJUST_SCORE(1); break; case STAT_SPATK: if (HasMoveWithSplit(battlerAtk, SPLIT_SPECIAL)) - score++; + ADJUST_SCORE(1); break; case STAT_ACC: case STAT_EVASION: case STAT_SPEED: - score++; + ADJUST_SCORE(1); break; case STAT_DEF: case STAT_SPDEF: if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_STALL) - score++; + ADJUST_SCORE(1); break; } } } break; case EFFECT_SEMI_INVULNERABLE: - score++; + ADJUST_SCORE(1); if (predictedMove != MOVE_NONE && !isDoubleBattle) { if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) // Attacker goes first { if (gBattleMoves[predictedMove].effect == EFFECT_EXPLOSION || gBattleMoves[predictedMove].effect == EFFECT_PROTECT) - score += 3; + ADJUST_SCORE(3); } else if (gBattleMoves[predictedMove].effect == EFFECT_SEMI_INVULNERABLE && !(gStatuses3[battlerDef] & STATUS3_SEMI_INVULNERABLE)) { - score += 3; + ADJUST_SCORE(3); } } break; case EFFECT_DEFENSE_CURL: if (HasMoveEffect(battlerAtk, EFFECT_ROLLOUT) && !(gBattleMons[battlerAtk].status2 & STATUS2_DEFENSE_CURL)) - score++; + ADJUST_SCORE(1); IncreaseStatUpScore(battlerAtk, battlerDef, STAT_DEF, &score); break; case EFFECT_FAKE_OUT: if (move == MOVE_FAKE_OUT) // filter out first impression { if (ShouldFakeOut(battlerAtk, battlerDef, move)) - score += 4; + ADJUST_SCORE(4); else - score -= 10; + ADJUST_SCORE(-10); } break; case EFFECT_STOCKPILE: @@ -4149,43 +4130,35 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score break; if (HasMoveEffect(battlerAtk, EFFECT_SWALLOW) || HasMoveEffect(battlerAtk, EFFECT_SPIT_UP)) - score += 2; + ADJUST_SCORE(2); IncreaseStatUpScore(battlerAtk, battlerDef, STAT_DEF, &score); IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPDEF, &score); break; - case EFFECT_SPIT_UP: - if (gDisableStructs[battlerAtk].stockpileCounter >= 2) - score++; - break; - case EFFECT_ROLLOUT: - if (gBattleMons[battlerAtk].status2 & STATUS2_DEFENSE_CURL) - score += 8; - break; case EFFECT_SWAGGER: if (HasMoveEffect(battlerAtk, EFFECT_FOUL_PLAY) || HasMoveEffect(battlerAtk, EFFECT_PSYCH_UP) || HasMoveEffect(battlerAtk, EFFECT_SPECTRAL_THIEF)) - score++; + ADJUST_SCORE(1); if (aiData->abilities[battlerDef] == ABILITY_CONTRARY) - score += 2; + ADJUST_SCORE(2); IncreaseConfusionScore(battlerAtk, battlerDef, move, &score); break; case EFFECT_FLATTER: if (HasMoveEffect(battlerAtk, EFFECT_PSYCH_UP) || HasMoveEffect(battlerAtk, EFFECT_SPECTRAL_THIEF)) - score += 2; + ADJUST_SCORE(2); if (aiData->abilities[battlerDef] == ABILITY_CONTRARY) - score += 2; + ADJUST_SCORE(2); IncreaseConfusionScore(battlerAtk, battlerDef, move, &score); break; case EFFECT_FURY_CUTTER: if (!isDoubleBattle && aiData->holdEffects[battlerAtk] == HOLD_EFFECT_METRONOME) - score += 3; + ADJUST_SCORE(3); break; case EFFECT_ATTRACT: if (!isDoubleBattle && BattlerWillFaintFromSecondaryDamage(battlerDef, aiData->abilities[battlerDef]) @@ -4195,22 +4168,22 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score if (gBattleMons[battlerDef].status1 & STATUS1_ANY || (gBattleMons[battlerDef].status2 & STATUS2_CONFUSION) || IsBattlerTrapped(battlerDef, TRUE)) - score += 2; + ADJUST_SCORE(2); else - score++; + ADJUST_SCORE(1); break; case EFFECT_SAFEGUARD: if (!AI_IsTerrainAffected(battlerAtk, STATUS_FIELD_MISTY_TERRAIN) || !IsBattlerGrounded(battlerAtk)) - score++; + ADJUST_SCORE(1); //if (CountUsablePartyMons(battlerDef) != 0) - //score += 8; + //ADJUST_SCORE(8); break; case EFFECT_PURSUIT: /*TODO if (IsPredictedToSwitch(battlerDef, battlerAtk)) - score += 3; + ADJUST_SCORE(3); else if (IsPredictedToUsePursuitableMove(battlerDef, battlerAtk) && !MoveWouldHitFirst(move, battlerAtk, battlerDef)) //Pursuit against fast U-Turn - score += 3;*/ + ADJUST_SCORE(3);*/ break; case EFFECT_RAPID_SPIN: IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPEED, &score); // Gen 8 increases speed @@ -4218,7 +4191,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score case EFFECT_DEFOG: if (gSideStatuses[GetBattlerSide(battlerAtk)] & SIDE_STATUS_HAZARDS_ANY && CountUsablePartyMons(battlerAtk) != 0) { - score += 3; + ADJUST_SCORE(3); break; } @@ -4227,7 +4200,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score case MOVE_DEFOG: if (gSideStatuses[GetBattlerSide(battlerDef)] & (SIDE_STATUS_SCREEN_ANY | SIDE_STATUS_SAFEGUARD | SIDE_STATUS_MIST)) { - score += 3; + ADJUST_SCORE(3); } else if (!(gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_SPIKES)) //Don't blow away hazards if you set them up { @@ -4243,16 +4216,16 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score { if (gBattleMons[battlerDef].statStages[STAT_EVASION] > 7 || HasMoveWithLowAccuracy(battlerAtk, battlerDef, 90, TRUE, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef])) - score += 2; // encourage lowering evasion if they are evasive or we have a move with low accuracy + ADJUST_SCORE(2); // encourage lowering evasion if they are evasive or we have a move with low accuracy else - score++; + ADJUST_SCORE(1); } } break; case MOVE_RAPID_SPIN: case MOVE_MORTAL_SPIN: if (gStatuses3[battlerAtk] & STATUS3_LEECHSEED || gBattleMons[battlerAtk].status2 & STATUS2_WRAPPED) - score += 3; + ADJUST_SCORE(3); break; } break; @@ -4270,58 +4243,57 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score { u32 predictedMoveOnPartner = gLastMoves[BATTLE_PARTNER(battlerAtk)]; if (predictedMoveOnPartner != MOVE_NONE && !IS_MOVE_STATUS(predictedMoveOnPartner)) - score += 3; + ADJUST_SCORE(3); } break; case EFFECT_NATURE_POWER: return AI_CheckViability(battlerAtk, battlerDef, GetNaturePowerMove(), score); case EFFECT_CHARGE: if (HasDamagingMoveOfType(battlerAtk, TYPE_ELECTRIC)) - score += 2; - #if B_CHARGE_SPDEF_RAISE >= GEN_5 - IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPDEF, &score); - #endif + ADJUST_SCORE(2); + if (B_CHARGE_SPDEF_RAISE >= GEN_5) + IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPDEF, &score); break; case EFFECT_TAUNT: if (IS_MOVE_STATUS(predictedMove)) - score += 3; + ADJUST_SCORE(3); else if (HasMoveWithSplit(battlerDef, SPLIT_STATUS)) - score += 2; + ADJUST_SCORE(2); break; case EFFECT_TRICK: case EFFECT_BESTOW: switch (aiData->holdEffects[battlerAtk]) { case HOLD_EFFECT_CHOICE_SCARF: - score += 2; // assume its beneficial + ADJUST_SCORE(2); // assume its beneficial break; case HOLD_EFFECT_CHOICE_BAND: if (!HasMoveWithSplit(battlerDef, SPLIT_PHYSICAL)) - score += 2; + ADJUST_SCORE(2); break; case HOLD_EFFECT_CHOICE_SPECS: if (!HasMoveWithSplit(battlerDef, SPLIT_SPECIAL)) - score += 2; + ADJUST_SCORE(2); break; case HOLD_EFFECT_TOXIC_ORB: if (!ShouldPoisonSelf(battlerAtk, aiData->abilities[battlerAtk])) - score += 2; + ADJUST_SCORE(2); break; case HOLD_EFFECT_FLAME_ORB: if (!ShouldBurnSelf(battlerAtk, aiData->abilities[battlerAtk]) && AI_CanBeBurned(battlerAtk, aiData->abilities[battlerDef])) - score += 2; + ADJUST_SCORE(2); break; case HOLD_EFFECT_BLACK_SLUDGE: if (!IS_BATTLER_OF_TYPE(battlerDef, TYPE_POISON) && aiData->abilities[battlerDef] != ABILITY_MAGIC_GUARD) - score += 3; + ADJUST_SCORE(3); break; case HOLD_EFFECT_IRON_BALL: if (!HasMoveEffect(battlerDef, EFFECT_FLING) || !IsBattlerGrounded(battlerDef)) - score += 2; + ADJUST_SCORE(2); break; case HOLD_EFFECT_LAGGING_TAIL: case HOLD_EFFECT_STICKY_BARB: - score += 3; + ADJUST_SCORE(3); break; case HOLD_EFFECT_UTILITY_UMBRELLA: if (aiData->abilities[battlerAtk] != ABILITY_SOLAR_POWER && aiData->abilities[battlerAtk] != ABILITY_DRY_SKIN) @@ -4330,12 +4302,12 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score { case ABILITY_SWIFT_SWIM: if (AI_GetWeather(aiData) & B_WEATHER_RAIN) - score += 3; // Slow 'em down + ADJUST_SCORE(3); // Slow 'em down break; case ABILITY_CHLOROPHYLL: case ABILITY_FLOWER_GIFT: if (AI_GetWeather(aiData) & B_WEATHER_SUN) - score += 3; // Slow 'em down + ADJUST_SCORE(3); // Slow 'em down break; } } @@ -4344,7 +4316,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score //if (!IsRaidBattle() && IsDynamaxed(battlerDef) && gNewBS->dynamaxData.timer[battlerDef] > 1 && if (HasDamagingMove(battlerAtk) || (isDoubleBattle && IsBattlerAlive(BATTLE_PARTNER(battlerAtk)) && HasDamagingMove(BATTLE_PARTNER(battlerAtk)))) - score += 2; // Force 'em out next turn + ADJUST_SCORE(2); // Force 'em out next turn break; default: if (move != MOVE_BESTOW && aiData->items[battlerAtk] == ITEM_NONE) @@ -4355,25 +4327,25 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score break; case HOLD_EFFECT_TOXIC_ORB: if (ShouldPoisonSelf(battlerAtk, aiData->abilities[battlerAtk])) - score += 2; + ADJUST_SCORE(2); break; case HOLD_EFFECT_FLAME_ORB: if (ShouldBurnSelf(battlerAtk, aiData->abilities[battlerAtk])) - score += 2; + ADJUST_SCORE(2); break; case HOLD_EFFECT_BLACK_SLUDGE: if (IS_BATTLER_OF_TYPE(battlerAtk, TYPE_POISON) || aiData->abilities[battlerAtk] == ABILITY_MAGIC_GUARD) - score += 3; + ADJUST_SCORE(3); break; case HOLD_EFFECT_IRON_BALL: if (HasMoveEffect(battlerAtk, EFFECT_FLING)) - score += 2; + ADJUST_SCORE(2); break; case HOLD_EFFECT_LAGGING_TAIL: case HOLD_EFFECT_STICKY_BARB: break; default: - score++; //other hold effects generally universally good + ADJUST_SCORE(1); //other hold effects generally universally good break; } } @@ -4384,49 +4356,49 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score && !IsRolePlayBannedAbility(aiData->abilities[battlerDef]) && !IsAbilityOfRating(aiData->abilities[battlerAtk], 5) && IsAbilityOfRating(aiData->abilities[battlerDef], 5)) - score += 2; + ADJUST_SCORE(2); break; case EFFECT_INGRAIN: if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_BIG_ROOT) - score += 3; + ADJUST_SCORE(3); else - score++; + ADJUST_SCORE(1); break; case EFFECT_SUPERPOWER: case EFFECT_OVERHEAT: case EFFECT_MAKE_IT_RAIN: if (aiData->abilities[battlerAtk] == ABILITY_CONTRARY) - score += 3; + ADJUST_SCORE(3); break; case EFFECT_MAGIC_COAT: if (IS_MOVE_STATUS(predictedMove) && AI_GetBattlerMoveTargetType(battlerDef, predictedMove) & (MOVE_TARGET_SELECTED | MOVE_TARGET_OPPONENTS_FIELD | MOVE_TARGET_BOTH)) - score += 3; + ADJUST_SCORE(3); break; case EFFECT_RECYCLE: if (GetUsedHeldItem(battlerAtk) != ITEM_NONE) - score++; + ADJUST_SCORE(1); if (IsRecycleEncouragedItem(GetUsedHeldItem(battlerAtk))) - score++; + ADJUST_SCORE(1); if (aiData->abilities[battlerAtk] == ABILITY_RIPEN) { u32 item = GetUsedHeldItem(battlerAtk); u32 toHeal = (ItemId_GetHoldEffectParam(item) == 10) ? 10 : gBattleMons[battlerAtk].maxHP / ItemId_GetHoldEffectParam(item); if (IsStatBoostingBerry(item) && aiData->hpPercents[battlerAtk] > 60) - score++; + ADJUST_SCORE(1); else if (ShouldRestoreHpBerry(battlerAtk, item) && !CanAIFaintTarget(battlerAtk, battlerDef, 0) && ((GetWhichBattlerFaster(battlerAtk, battlerDef, TRUE) == 0 && CanTargetFaintAiWithMod(battlerDef, battlerAtk, 0, 0)) || !CanTargetFaintAiWithMod(battlerDef, battlerAtk, toHeal, 0))) - score++; // Recycle healing berry if we can't otherwise faint the target and the target wont kill us after we activate the berry + ADJUST_SCORE(1); // Recycle healing berry if we can't otherwise faint the target and the target wont kill us after we activate the berry } break; case EFFECT_BRICK_BREAK: if (gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_REFLECT) - score++; + ADJUST_SCORE(1); if (gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_LIGHTSCREEN) - score++; + ADJUST_SCORE(1); if (gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_AURORA_VEIL) - score++; + ADJUST_SCORE(1); break; case EFFECT_KNOCK_OFF: if (CanKnockOffItem(battlerDef, aiData->items[battlerDef])) @@ -4435,49 +4407,49 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score { case HOLD_EFFECT_IRON_BALL: if (HasMoveEffect(battlerDef, EFFECT_FLING)) - score += 4; + ADJUST_SCORE(4); break; case HOLD_EFFECT_LAGGING_TAIL: case HOLD_EFFECT_STICKY_BARB: break; default: - score += 3; + ADJUST_SCORE(3); break; } } break; case EFFECT_SKILL_SWAP: if (GetAbilityRating(aiData->abilities[battlerDef]) > GetAbilityRating(aiData->abilities[battlerAtk])) - score++; + ADJUST_SCORE(1); break; case EFFECT_WORRY_SEED: case EFFECT_GASTRO_ACID: case EFFECT_SIMPLE_BEAM: if (IsAbilityOfRating(aiData->abilities[battlerDef], 5)) - score += 2; + ADJUST_SCORE(2); break; case EFFECT_ENTRAINMENT: if (IsAbilityOfRating(aiData->abilities[battlerDef], 5) || GetAbilityRating(aiData->abilities[battlerAtk]) <= 0) { if (aiData->abilities[battlerDef] != aiData->abilities[battlerAtk] && !(gStatuses3[battlerDef] & STATUS3_GASTRO_ACID)) - score += 2; + ADJUST_SCORE(2); } break; case EFFECT_IMPRISON: if (predictedMove != MOVE_NONE && HasMove(battlerAtk, predictedMove)) - score += 3; + ADJUST_SCORE(3); else if (gDisableStructs[battlerAtk].isFirstTurn == 0) - score++; + ADJUST_SCORE(1); break; case EFFECT_REFRESH: if (gBattleMons[battlerAtk].status1 & STATUS1_ANY) - score += 2; + ADJUST_SCORE(2); break; case EFFECT_TAKE_HEART: if (gBattleMons[battlerAtk].status1 & STATUS1_ANY || BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPATK) || BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPDEF)) - score += 2; + ADJUST_SCORE(2); break; case EFFECT_PSYCHO_SHIFT: if (gBattleMons[battlerAtk].status1 & STATUS1_PSN_ANY) @@ -4495,25 +4467,25 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score break; case EFFECT_SNATCH: if (predictedMove != MOVE_NONE && gBattleMoves[predictedMove].snatchAffected) - score += 3; // Steal move + ADJUST_SCORE(3); // Steal move break; case EFFECT_MUD_SPORT: if (!HasMoveWithType(battlerAtk, TYPE_ELECTRIC) && HasMoveWithType(battlerDef, TYPE_ELECTRIC)) - score++; + ADJUST_SCORE(1); break; case EFFECT_WATER_SPORT: if (!HasMoveWithType(battlerAtk, TYPE_FIRE) && (HasMoveWithType(battlerDef, TYPE_FIRE))) - score++; + ADJUST_SCORE(1); break; case EFFECT_TICKLE: if (gBattleMons[battlerDef].statStages[STAT_DEF] > 4 && HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL) && aiData->abilities[battlerDef] != ABILITY_CONTRARY && ShouldLowerDefense(battlerAtk, battlerDef, aiData->abilities[battlerDef])) { - score += 2; + ADJUST_SCORE(2); } else if (ShouldLowerAttack(battlerAtk, battlerDef, aiData->abilities[battlerDef])) { - score += 2; + ADJUST_SCORE(2); } break; case EFFECT_COSMIC_POWER: @@ -4530,7 +4502,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score break; case EFFECT_GEOMANCY: if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_POWER_HERB) - score += 3; + ADJUST_SCORE(3); //fallthrough case EFFECT_QUIVER_DANCE: IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPEED, &score); @@ -4544,7 +4516,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score break; case EFFECT_SHELL_SMASH: if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_RESTORE_STATS) - score += 1; + ADJUST_SCORE(1); IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPEED, &score); IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPATK, &score); @@ -4558,24 +4530,24 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score case EFFECT_GUARD_SWAP: if (gBattleMons[battlerDef].statStages[STAT_DEF] > gBattleMons[battlerAtk].statStages[STAT_DEF] && gBattleMons[battlerDef].statStages[STAT_SPDEF] >= gBattleMons[battlerAtk].statStages[STAT_SPDEF]) - score++; + ADJUST_SCORE(1); else if (gBattleMons[battlerDef].statStages[STAT_SPDEF] > gBattleMons[battlerAtk].statStages[STAT_SPDEF] && gBattleMons[battlerDef].statStages[STAT_DEF] >= gBattleMons[battlerAtk].statStages[STAT_DEF]) - score++; + ADJUST_SCORE(1); break; case EFFECT_POWER_SWAP: if (gBattleMons[battlerDef].statStages[STAT_ATK] > gBattleMons[battlerAtk].statStages[STAT_ATK] && gBattleMons[battlerDef].statStages[STAT_SPATK] >= gBattleMons[battlerAtk].statStages[STAT_SPATK]) - score++; + ADJUST_SCORE(1); else if (gBattleMons[battlerDef].statStages[STAT_SPATK] > gBattleMons[battlerAtk].statStages[STAT_SPATK] && gBattleMons[battlerDef].statStages[STAT_ATK] >= gBattleMons[battlerAtk].statStages[STAT_ATK]) - score++; + ADJUST_SCORE(1); break; case EFFECT_POWER_TRICK: if (!(gStatuses3[battlerAtk] & STATUS3_POWER_TRICK)) { if (gBattleMons[battlerAtk].defense > gBattleMons[battlerAtk].attack && HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL)) - score += 2; + ADJUST_SCORE(2); break; } break; @@ -4591,13 +4563,13 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score hasHigherStat = TRUE; } if (hasHigherStat && i == NUM_BATTLE_STATS) - score++; + ADJUST_SCORE(1); } break; case EFFECT_SPEED_SWAP: // TODO this is cheating a bit... if (gBattleMons[battlerDef].speed > gBattleMons[battlerAtk].speed) - score += 3; + ADJUST_SCORE(3); break; case EFFECT_GUARD_SPLIT: { @@ -4607,7 +4579,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score if ((newDefense > gBattleMons[battlerAtk].defense && newSpDef >= gBattleMons[battlerAtk].spDefense) || (newSpDef > gBattleMons[battlerAtk].spDefense && newDefense >= gBattleMons[battlerAtk].defense)) - score++; + ADJUST_SCORE(1); } break; case EFFECT_POWER_SPLIT: @@ -4617,69 +4589,66 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score if ((newAttack > gBattleMons[battlerAtk].attack && newSpAtk >= gBattleMons[battlerAtk].spAttack) || (newSpAtk > gBattleMons[battlerAtk].spAttack && newAttack >= gBattleMons[battlerAtk].attack)) - score++; + ADJUST_SCORE(1); } break; case EFFECT_BUG_BITE: // And pluck if (gBattleMons[battlerDef].status2 & STATUS2_SUBSTITUTE || aiData->abilities[battlerDef] == ABILITY_STICKY_HOLD) break; else if (ItemId_GetPocket(aiData->items[battlerDef]) == POCKET_BERRIES) - score += 3; + ADJUST_SCORE(3); break; case EFFECT_INCINERATE: if (gBattleMons[battlerDef].status2 & STATUS2_SUBSTITUTE || aiData->abilities[battlerDef] == ABILITY_STICKY_HOLD) break; else if (ItemId_GetPocket(aiData->items[battlerDef]) == POCKET_BERRIES || aiData->holdEffects[battlerDef] == HOLD_EFFECT_GEMS) - score += 3; + ADJUST_SCORE(3); break; case EFFECT_SMACK_DOWN: if (!IsBattlerGrounded(battlerDef)) - score += 3; + ADJUST_SCORE(3); break; case EFFECT_RELIC_SONG: if (!(gBattleMons[battlerAtk].status2 & STATUS2_TRANSFORMED)) // Don't try to change form if it's transformed. { - if (gBattleMons[battlerAtk].species == SPECIES_MELOETTA && gBattleMons[battlerDef].defense < gBattleMons[battlerDef].spDefense) - score += 3; // Change to Pirouette if can do more damage + if (gBattleMons[battlerAtk].species == SPECIES_MELOETTA_ARIA && gBattleMons[battlerDef].defense < gBattleMons[battlerDef].spDefense) + ADJUST_SCORE(3); // Change to Pirouette if can do more damage else if (gBattleMons[battlerAtk].species == SPECIES_MELOETTA_PIROUETTE && gBattleMons[battlerDef].spDefense < gBattleMons[battlerDef].defense) - score += 3; // Change to Aria if can do more damage + ADJUST_SCORE(3); // Change to Aria if can do more damage } break; case EFFECT_ELECTRIC_TERRAIN: case EFFECT_MISTY_TERRAIN: if (gStatuses3[battlerAtk] & STATUS3_YAWN && IsBattlerGrounded(battlerAtk)) - score += 10; + ADJUST_SCORE(10); //fallthrough case EFFECT_GRASSY_TERRAIN: case EFFECT_PSYCHIC_TERRAIN: - score += 2; + ADJUST_SCORE(2); if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_TERRAIN_EXTENDER) - score += 2; + ADJUST_SCORE(2); break; case EFFECT_PLEDGE: - if (isDoubleBattle) - { - if (HasMoveEffect(BATTLE_PARTNER(battlerAtk), EFFECT_PLEDGE)) - score += 3; // Partner might use pledge move - } + if (isDoubleBattle && HasMoveEffect(BATTLE_PARTNER(battlerAtk), EFFECT_PLEDGE)) + ADJUST_SCORE(3); // Partner might use pledge move break; case EFFECT_TRICK_ROOM: if (!(gFieldStatuses & STATUS_FIELD_TRICK_ROOM) && GetBattlerSideSpeedAverage(battlerAtk) < GetBattlerSideSpeedAverage(battlerDef)) - score += 3; + ADJUST_SCORE(3); else if ((gFieldStatuses & STATUS_FIELD_TRICK_ROOM) && GetBattlerSideSpeedAverage(battlerAtk) >= GetBattlerSideSpeedAverage(battlerDef)) - score += 3; + ADJUST_SCORE(3); break; case EFFECT_MAGIC_ROOM: - score++; + ADJUST_SCORE(1); if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_NONE && aiData->holdEffects[battlerDef] != HOLD_EFFECT_NONE) - score++; + ADJUST_SCORE(1); if (isDoubleBattle && aiData->holdEffects[BATTLE_PARTNER(battlerAtk)] == HOLD_EFFECT_NONE && aiData->holdEffects[BATTLE_PARTNER(battlerDef)] != HOLD_EFFECT_NONE) - score++; + ADJUST_SCORE(1); break; case EFFECT_WONDER_ROOM: if ((HasMoveWithSplit(battlerDef, SPLIT_PHYSICAL) && gBattleMons[battlerAtk].defense < gBattleMons[battlerAtk].spDefense) || (HasMoveWithSplit(battlerDef, SPLIT_SPECIAL) && gBattleMons[battlerAtk].spDefense < gBattleMons[battlerAtk].defense)) - score += 2; + ADJUST_SCORE(2); break; case EFFECT_GRAVITY: if (!(gFieldStatuses & STATUS_FIELD_GRAVITY)) @@ -4687,9 +4656,9 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score if (HasSleepMoveWithLowAccuracy(battlerAtk, battlerDef)) // Has Gravity for a move like Hypnosis IncreaseSleepScore(battlerAtk, battlerDef, move, &score); else if (HasMoveWithLowAccuracy(battlerAtk, battlerDef, 90, FALSE, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef])) - score += 2; + ADJUST_SCORE(2); else - score++; + ADJUST_SCORE(1); } break; case EFFECT_ION_DELUGE: @@ -4697,7 +4666,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score || aiData->abilities[battlerAtk] == ABILITY_MOTOR_DRIVE || aiData->abilities[battlerAtk] == ABILITY_LIGHTNING_ROD) && gBattleMoves[predictedMove].type == TYPE_NORMAL) - score += 2; + ADJUST_SCORE(2); break; case EFFECT_FLING: /* TODO @@ -4718,47 +4687,47 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score break; case MOVE_EFFECT_FREEZE: if (AI_CanFreeze(battlerAtk, battlerDef)) - score += 3; + ADJUST_SCORE(3); break; }*/ break; case EFFECT_FEINT: if (gBattleMoves[predictedMove].effect == EFFECT_PROTECT) - score += 3; + ADJUST_SCORE(3); break; case EFFECT_EMBARGO: if (aiData->holdEffects[battlerDef] != HOLD_EFFECT_NONE) - score++; + ADJUST_SCORE(1); break; case EFFECT_POWDER: if (predictedMove != MOVE_NONE && !IS_MOVE_STATUS(predictedMove) && gBattleMoves[predictedMove].type == TYPE_FIRE) - score += 3; + ADJUST_SCORE(3); break; case EFFECT_TELEKINESIS: if (HasMoveWithLowAccuracy(battlerAtk, battlerDef, 90, FALSE, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef]) || !IsBattlerGrounded(battlerDef)) - score++; + ADJUST_SCORE(1); break; case EFFECT_THROAT_CHOP: if (predictedMove != MOVE_NONE && gBattleMoves[predictedMove].soundMove && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) - score += 3; // Ai goes first and predicts the target will use a sound move + ADJUST_SCORE(3); // Ai goes first and predicts the target will use a sound move else if (HasSoundMove(battlerDef)) - score += 3; + ADJUST_SCORE(3); break; case EFFECT_HEAL_BLOCK: if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER && predictedMove != MOVE_NONE && IsHealingMoveEffect(gBattleMoves[predictedMove].effect)) - score += 3; // Try to cancel healing move + ADJUST_SCORE(3); // Try to cancel healing move else if (HasHealingEffect(battlerDef) || aiData->holdEffects[battlerDef] == HOLD_EFFECT_LEFTOVERS || (aiData->holdEffects[battlerDef] == HOLD_EFFECT_BLACK_SLUDGE && IS_BATTLER_OF_TYPE(battlerDef, TYPE_POISON))) - score += 2; + ADJUST_SCORE(2); break; case EFFECT_SOAK: if (HasMoveWithType(battlerAtk, TYPE_ELECTRIC) || HasMoveWithType(battlerAtk, TYPE_GRASS) || HasMoveEffect(battlerAtk, EFFECT_FREEZE_DRY)) - score += 2; // Get some super effective moves + ADJUST_SCORE(2); // Get some super effective moves break; case EFFECT_THIRD_TYPE: if (aiData->abilities[battlerDef] == ABILITY_WONDER_GUARD) - score += 2; // Give target more weaknesses + ADJUST_SCORE(2); // Give target more weaknesses break; case EFFECT_ELECTRIFY: if (predictedMove != MOVE_NONE @@ -4766,38 +4735,38 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score || aiData->abilities[battlerAtk] == ABILITY_MOTOR_DRIVE || aiData->abilities[battlerAtk] == ABILITY_LIGHTNING_ROD)) { - score += 3; + ADJUST_SCORE(3); } break; case EFFECT_TOPSY_TURVY: if (CountPositiveStatStages(battlerDef) > CountNegativeStatStages(battlerDef)) - score++; + ADJUST_SCORE(1); break; case EFFECT_FAIRY_LOCK: if (!IsBattlerTrapped(battlerDef, TRUE)) { if (ShouldTrap(battlerAtk, battlerDef, move)) - score += 8; + ADJUST_SCORE(8); } break; case EFFECT_QUASH: if (isDoubleBattle && AI_WhoStrikesFirst(BATTLE_PARTNER(battlerAtk), battlerDef, aiData->partnerMove) == AI_IS_SLOWER) // Attacker partner wouldn't go before target - score++; + ADJUST_SCORE(1); break; case EFFECT_TAILWIND: if (GetBattlerSideSpeedAverage(battlerAtk) < GetBattlerSideSpeedAverage(battlerDef)) - score += 2; + ADJUST_SCORE(2); break; case EFFECT_LUCKY_CHANT: if (!isDoubleBattle) { - score++; + ADJUST_SCORE(1); } else { if (CountUsablePartyMons(battlerDef) > 0) - score += 8; + ADJUST_SCORE(8); } break; case EFFECT_MAGNET_RISE: @@ -4807,13 +4776,13 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) // Attacker goes first { if (gBattleMoves[predictedMove].type == TYPE_GROUND) - score += 3; // Cause the enemy's move to fail + ADJUST_SCORE(3); // Cause the enemy's move to fail break; } else // Opponent Goes First { if (HasDamagingMoveOfType(battlerDef, TYPE_GROUND)) - score += 2; + ADJUST_SCORE(2); break; } } @@ -4821,7 +4790,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score case EFFECT_CAMOUFLAGE: if (predictedMove != MOVE_NONE && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER // Attacker goes first && !IS_MOVE_STATUS(move) && AI_GetTypeEffectiveness(predictedMove, battlerDef, battlerAtk) != AI_EFFECTIVENESS_x0) - score++; + ADJUST_SCORE(1); break; case EFFECT_FLAME_BURST: if (isDoubleBattle) @@ -4830,93 +4799,61 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score && aiData->hpPercents[BATTLE_PARTNER(battlerDef)] < 12 && aiData->abilities[BATTLE_PARTNER(battlerDef)] != ABILITY_MAGIC_GUARD && !IS_BATTLER_OF_TYPE(BATTLE_PARTNER(battlerDef), TYPE_FIRE)) - score++; + ADJUST_SCORE(1); } break; case EFFECT_TOXIC_THREAD: IncreasePoisonScore(battlerAtk, battlerDef, move, &score); IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPEED, &score); break; - case EFFECT_TWO_TURNS_ATTACK: - case EFFECT_SKULL_BASH: - case EFFECT_SOLAR_BEAM: - if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_POWER_HERB) - score += 2; - break; case EFFECT_COUNTER: if (!IsBattlerIncapacitated(battlerDef, aiData->abilities[battlerDef]) && predictedMove != MOVE_NONE) { if (gDisableStructs[battlerDef].tauntTimer != 0) - score++; // target must use damaging move - if (GetMoveDamageResult(battlerDef, battlerAtk, predictedMoveSlot) >= MOVE_POWER_GOOD && GetBattleMoveSplit(predictedMove) == SPLIT_PHYSICAL) - score += 3; + ADJUST_SCORE(1); // target must use damaging move + if (GetNoOfHitsToKOBattler(battlerDef, battlerAtk, predictedMoveSlot) >= 2 && GetBattleMoveSplit(predictedMove) == SPLIT_PHYSICAL) + ADJUST_SCORE(3); } break; case EFFECT_MIRROR_COAT: if (!IsBattlerIncapacitated(battlerDef, aiData->abilities[battlerDef]) && predictedMove != MOVE_NONE) { if (gDisableStructs[battlerDef].tauntTimer != 0) - score++; // target must use damaging move - if (GetMoveDamageResult(battlerDef, battlerAtk, predictedMoveSlot) >= MOVE_POWER_GOOD && GetBattleMoveSplit(predictedMove) == SPLIT_SPECIAL) - score += 3; - } - break; - case EFFECT_FLAIL: - if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) // Ai goes first - { - if (aiData->hpPercents[battlerAtk] < 20) - score++; - else if (aiData->hpPercents[battlerAtk] < 8) - score += 2; + ADJUST_SCORE(1); // target must use damaging move + if (GetNoOfHitsToKOBattler(battlerDef, battlerAtk, predictedMoveSlot) >= 2 && GetBattleMoveSplit(predictedMove) == SPLIT_SPECIAL) + ADJUST_SCORE(3); } break; case EFFECT_SHORE_UP: if ((AI_GetWeather(aiData) & B_WEATHER_SANDSTORM) && ShouldRecover(battlerAtk, battlerDef, move, 67)) - score += 3; + ADJUST_SCORE(3); else if (ShouldRecover(battlerAtk, battlerDef, move, 50)) - score += 2; - break; - case EFFECT_FACADE: - if (gBattleMons[battlerAtk].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON | STATUS1_FROSTBITE)) - score++; + ADJUST_SCORE(2); break; case EFFECT_FOCUS_PUNCH: if (!isDoubleBattle && effectiveness > AI_EFFECTIVENESS_x0_5) { if (IsBattlerIncapacitated(battlerDef, aiData->abilities[battlerDef])) - score += 2; + ADJUST_SCORE(2); else if (gBattleMons[battlerDef].status2 & (STATUS2_INFATUATION | STATUS2_CONFUSION)) - score++; + ADJUST_SCORE(1); } break; - case EFFECT_SMELLINGSALT: - if (gBattleMons[battlerDef].status1 & STATUS1_PARALYSIS) - score += 2; - break; - case EFFECT_WAKE_UP_SLAP: - if (gBattleMons[battlerDef].status1 & STATUS1_SLEEP) - score += 2; - break; - case EFFECT_REVENGE: - if (!(gBattleMons[battlerDef].status1 & STATUS1_SLEEP) - && !(gBattleMons[battlerDef].status2 & (STATUS2_INFATUATION | STATUS2_CONFUSION))) - score += 2; - break; case EFFECT_ENDEAVOR: if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER) // Opponent faster { if (aiData->hpPercents[battlerAtk] < 40) - score++; + ADJUST_SCORE(1); } else if (aiData->hpPercents[battlerAtk] < 50) { - score++; + ADJUST_SCORE(1); } break; case EFFECT_REVIVAL_BLESSING: if (GetFirstFaintedPartyIndex(battlerAtk) != PARTY_SIZE) - score += 2; + ADJUST_SCORE(2); break; //case EFFECT_EXTREME_EVOBOOST: // TODO //break; @@ -4931,11 +4868,11 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score || ShouldRecover(BATTLE_PARTNER(battlerAtk), battlerDef, move, 25) || gBattleMons[battlerAtk].status1 & STATUS1_ANY || gBattleMons[BATTLE_PARTNER(battlerAtk)].status1 & STATUS1_ANY) - score += 3; + ADJUST_SCORE(3); break; case EFFECT_SALT_CURE: if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_WATER) || IS_BATTLER_OF_TYPE(battlerDef, TYPE_STEEL)) - score += 2; + ADJUST_SCORE(2); break; } // move effect checks @@ -5044,7 +4981,7 @@ static s32 AI_SetupFirstTurn(u32 battlerAtk, u32 battlerDef, u32 move, s32 score case EFFECT_GEOMANCY: case EFFECT_VICTORY_DANCE: case EFFECT_HIT_SET_ENTRY_HAZARD: - score += 2; + ADJUST_SCORE(2); break; default: break; @@ -5060,7 +4997,7 @@ static s32 AI_Risky(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) return score; if (gBattleMoves[move].highCritRatio) - score += 2; + ADJUST_SCORE(2); switch (gBattleMoves[move].effect) { @@ -5083,7 +5020,7 @@ static s32 AI_Risky(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_REVENGE: case EFFECT_TEETER_DANCE: if (Random() & 1) - score += 2; + ADJUST_SCORE(2); break; default: break; @@ -5098,8 +5035,10 @@ static s32 AI_PreferStrongestMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)) return score; - if (GetMoveDamageResult(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex) == MOVE_POWER_BEST) - score += 2; + if (GetNoOfHitsToKOBattler(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex) == 1) + ADJUST_SCORE(3); + else if (GetNoOfHitsToKOBattler(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex) == 2) + ADJUST_SCORE(2); return score; } @@ -5111,7 +5050,7 @@ static s32 AI_PreferBatonPass(u32 battlerAtk, u32 battlerDef, u32 move, s32 scor if (IS_TARGETING_PARTNER(battlerAtk, battlerDef) || CountUsablePartyMons(battlerAtk) == 0 - || GetMoveDamageResult(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex) != MOVE_POWER_OTHER + || gBattleMoves[move].power != 0 || !HasMoveEffect(battlerAtk, EFFECT_BATON_PASS) || IsBattlerTrapped(battlerAtk, TRUE)) return score; @@ -5119,11 +5058,11 @@ static s32 AI_PreferBatonPass(u32 battlerAtk, u32 battlerDef, u32 move, s32 scor if (IsStatRaisingEffect(gBattleMoves[move].effect)) { if (gBattleResults.battleTurnCounter == 0) - score += 5; + ADJUST_SCORE(5); else if (AI_DATA->hpPercents[battlerAtk] < 60) - score -= 10; + ADJUST_SCORE(-10); else - score++; + ADJUST_SCORE(1); } // other specific checks @@ -5131,17 +5070,17 @@ static s32 AI_PreferBatonPass(u32 battlerAtk, u32 battlerDef, u32 move, s32 scor { case EFFECT_INGRAIN: if (!(gStatuses3[battlerAtk] & STATUS3_ROOTED)) - score += 2; + ADJUST_SCORE(2); break; case EFFECT_AQUA_RING: if (!(gStatuses3[battlerAtk] & STATUS3_AQUA_RING)) - score += 2; + ADJUST_SCORE(2); break; case EFFECT_PROTECT: if (gLastMoves[battlerAtk] == MOVE_PROTECT || gLastMoves[battlerAtk] == MOVE_DETECT) - score -= 2; + ADJUST_SCORE(-2); else - score += 2; + ADJUST_SCORE(2); break; case EFFECT_BATON_PASS: for (i = STAT_ATK; i < NUM_BATTLE_STATS; i++) @@ -5149,9 +5088,9 @@ static s32 AI_PreferBatonPass(u32 battlerAtk, u32 battlerDef, u32 move, s32 scor IncreaseStatUpScore(battlerAtk, battlerDef, i, &score); } if (gStatuses3[battlerAtk] & (STATUS3_ROOTED | STATUS3_AQUA_RING)) - score += 2; + ADJUST_SCORE(2); if (gStatuses3[battlerAtk] & STATUS3_LEECHSEED) - score -= 3; + ADJUST_SCORE(-3); break; default: break; @@ -5179,10 +5118,10 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) if (CanTargetFaintAi(FOE(battlerAtk), BATTLE_PARTNER(battlerAtk)) || (CanTargetFaintAi(BATTLE_PARTNER(FOE(battlerAtk)), BATTLE_PARTNER(battlerAtk)))) - score--; + ADJUST_SCORE(-1); if (AI_DATA->hpPercents[battlerDef] <= 50) - score++; + ADJUST_SCORE(1); } } else @@ -5207,7 +5146,7 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_ROOST: case EFFECT_MEMENTO: case EFFECT_GRUDGE: - score -= 2; + ADJUST_SCORE(-2); break; default: break; @@ -5217,7 +5156,7 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { // med hp if (IsStatRaisingEffect(effect) || IsStatLoweringEffect(effect)) - score -= 2; + ADJUST_SCORE(-2); switch (effect) { @@ -5230,7 +5169,7 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_CONVERSION_2: case EFFECT_SAFEGUARD: case EFFECT_BELLY_DRUM: - score -= 2; + ADJUST_SCORE(-2); break; default: break; @@ -5240,7 +5179,7 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { // low hp if (IsStatRaisingEffect(effect) || IsStatLoweringEffect(effect)) - score -= 2; + ADJUST_SCORE(-2); // check other discouraged low hp effects switch (effect) @@ -5259,16 +5198,13 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_BELLY_DRUM: case EFFECT_PSYCH_UP: case EFFECT_MIRROR_COAT: - case EFFECT_SOLAR_BEAM: - case EFFECT_TWO_TURNS_ATTACK: - case EFFECT_ERUPTION: case EFFECT_TICKLE: case EFFECT_SUNNY_DAY: case EFFECT_SANDSTORM: case EFFECT_HAIL: case EFFECT_SNOWSCAPE: case EFFECT_RAIN_DANCE: - score -= 2; + ADJUST_SCORE(-2); break; default: break; @@ -5279,7 +5215,7 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) // consider target HP if (CanIndexMoveFaintTarget(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex, 0)) { - score += 2; + ADJUST_SCORE(2); } else { @@ -5335,7 +5271,7 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_DRAGON_DANCE: case EFFECT_DEFENSE_UP_3: case EFFECT_SPECIAL_ATTACK_UP_3: - score -= 2; + ADJUST_SCORE(-2); break; default: break; @@ -5345,7 +5281,7 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { // low HP if (IS_MOVE_STATUS(move)) - score -= 2; // don't use status moves if target is at low health + ADJUST_SCORE(-2); // don't use status moves if target is at low health } } diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index b2f56326f7..f4ea291767 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -28,7 +28,13 @@ static bool8 ShouldUseItem(u32 battler); static bool32 AiExpectsToFaintPlayer(u32 battler); static bool32 AI_ShouldHeal(u32 battler, u32 healAmount); static bool32 AI_OpponentCanFaintAiWithMod(u32 battler, u32 healAmount); -static bool32 IsAiPartyMonOHKOBy(u32 battlerAi, u32 battlerAtk, struct Pokemon *aiMon); +static u32 GetSwitchinHazardsDamage(u32 battler, struct BattlePokemon *battleMon); + +static void InitializeSwitchinCandidate(struct Pokemon *mon) +{ + PokemonToBattleMon(mon, &AI_DATA->switchinCandidate.battleMon); + AI_DATA->switchinCandidate.hypotheticalStatus = FALSE; +} static bool32 IsAceMon(u32 battler, u32 monPartyId) { @@ -58,6 +64,156 @@ void GetAIPartyIndexes(u32 battler, s32 *firstId, s32 *lastId) } } +// Note that as many return statements as possible are INTENTIONALLY put after all of the loops; +// the function can take a max of about 0.06s to run, and this prevents the player from identifying +// whether the mon will switch or not by seeing how long the delay is before they select a move +static bool8 HasBadOdds(u32 battler) + +{ + //Variable initialization + u8 opposingPosition, atkType1, atkType2, defType1, defType2, effectiveness; + s32 i, damageDealt = 0, maxDamageDealt = 0, damageTaken = 0, maxDamageTaken = 0; + u32 aiMove, playerMove, aiBestMove = MOVE_NONE, aiAbility = GetBattlerAbility(battler), opposingBattler, weather = AI_GetWeather(AI_DATA); + bool8 getsOneShot = FALSE, hasStatusMove = FALSE, hasSuperEffectiveMove = FALSE; + u16 typeEffectiveness = UQ_4_12(1.0), aiMoveEffect; //baseline typing damage + + // Only use this if AI_FLAG_SMART_SWITCHING is set for the trainer + if (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING)) + return FALSE; + + // Won't bother configuring this for double battles + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + return FALSE; + + opposingPosition = BATTLE_OPPOSITE(GetBattlerPosition(battler)); + opposingBattler = GetBattlerAtPosition(opposingPosition); + + // Gets types of player (opposingBattler) and computer (battler) + atkType1 = gBattleMons[opposingBattler].type1; + atkType2 = gBattleMons[opposingBattler].type2; + defType1 = gBattleMons[battler].type1; + defType2 = gBattleMons[battler].type2; + + // Check AI moves for damage dealt + for (i = 0; i < MAX_MON_MOVES; i++) + { + aiMove = gBattleMons[battler].moves[i]; + aiMoveEffect = gBattleMoves[aiMove].effect; + if (aiMove != MOVE_NONE) + { + // Check if mon has an "important" status move + if (aiMoveEffect == EFFECT_REFLECT || aiMoveEffect == EFFECT_LIGHT_SCREEN + || aiMoveEffect == EFFECT_SPIKES || aiMoveEffect == EFFECT_TOXIC_SPIKES || aiMoveEffect == EFFECT_STEALTH_ROCK || aiMoveEffect == EFFECT_STICKY_WEB || aiMoveEffect == EFFECT_LEECH_SEED + || aiMoveEffect == EFFECT_EXPLOSION + || aiMoveEffect == EFFECT_SLEEP || aiMoveEffect == EFFECT_YAWN || aiMoveEffect == EFFECT_TOXIC || aiMoveEffect == EFFECT_WILL_O_WISP || aiMoveEffect == EFFECT_PARALYZE + || aiMoveEffect == EFFECT_TRICK || aiMoveEffect == EFFECT_TRICK_ROOM || aiMoveEffect== EFFECT_WONDER_ROOM || aiMoveEffect == EFFECT_PSYCHO_SHIFT || aiMoveEffect == EFFECT_FAKE_OUT + ) + { + hasStatusMove = TRUE; + } + + // Only check damage if move has power + if (gBattleMoves[aiMove].power != 0) + { + // Check if mon has a super effective move + if (AI_GetTypeEffectiveness(aiMove, battler, opposingBattler) >= UQ_4_12(2.0)) + hasSuperEffectiveMove = TRUE; + + // Get maximum damage mon can deal + damageDealt = AI_DATA->simulatedDmg[battler][opposingBattler][i]; + if(damageDealt > maxDamageDealt) + { + maxDamageDealt = damageDealt; + aiBestMove = aiMove; + } + + } + } + } + + // Calculate type advantage + typeEffectiveness = uq4_12_multiply(typeEffectiveness, (GetTypeModifier(atkType1, defType1))); + if (atkType2 != atkType1) + typeEffectiveness = uq4_12_multiply(typeEffectiveness, (GetTypeModifier(atkType2, defType1))); + if (defType2 != defType1) + { + typeEffectiveness = uq4_12_multiply(typeEffectiveness, (GetTypeModifier(atkType1, defType2))); + if (atkType2 != atkType1) + typeEffectiveness = uq4_12_multiply(typeEffectiveness, (GetTypeModifier(atkType2, defType2))); + } + + // Get max damage mon could take + for (i = 0; i < MAX_MON_MOVES; i++) + { + playerMove = gBattleMons[opposingBattler].moves[i]; + if (playerMove != MOVE_NONE && gBattleMoves[playerMove].power != 0) + { + damageTaken = AI_CalcDamage(playerMove, opposingBattler, battler, &effectiveness, FALSE, weather); + if (damageTaken > maxDamageTaken) + maxDamageTaken = damageTaken; + } + } + + // Check if mon gets one shot + if(maxDamageTaken > gBattleMons[battler].hp) + { + getsOneShot = TRUE; + } + + // Check if current mon can outspeed and KO in spite of bad matchup, and don't switch out if it can + if(damageDealt > gBattleMons[opposingBattler].hp) + { + if (AI_WhoStrikesFirst(battler, opposingBattler, aiBestMove) == AI_IS_FASTER) + return FALSE; + } + + // If we don't have any other viable options, don't switch out + if (AI_DATA->mostSuitableMonId == PARTY_SIZE) + return FALSE; + + // Start assessing whether or not mon has bad odds + // Jump straight to swtiching out in cases where mon gets OHKO'd + if (((getsOneShot && gBattleMons[opposingBattler].speed > gBattleMons[battler].speed) // If the player OHKOs and outspeeds OR OHKOs, doesn't outspeed but isn't 2HKO'd + || (getsOneShot && gBattleMons[opposingBattler].speed <= gBattleMons[battler].speed && maxDamageDealt < gBattleMons[opposingBattler].hp / 2)) + && (gBattleMons[battler].hp >= gBattleMons[battler].maxHP / 2 // And the current mon has at least 1/2 their HP, or 1/4 HP and Regenerator + || (aiAbility == ABILITY_REGENERATOR + && gBattleMons[battler].hp >= gBattleMons[battler].maxHP / 4))) + { + // 50% chance to stay in regardless + if (Random() % 2 == 0) + return FALSE; + + // Switch mon out + *(gBattleStruct->AI_monToSwitchIntoId + battler) = PARTY_SIZE; + BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); + return TRUE; + } + + // General bad type matchups have more wiggle room + if (typeEffectiveness >= UQ_4_12(2.0)) // If the player has at least a 2x type advantage + { + if (!hasSuperEffectiveMove // If the AI doesn't have a super effective move + && (gBattleMons[battler].hp >= gBattleMons[battler].maxHP / 2 // And the current mon has at least 1/2 their HP, or 1/4 HP and Regenerator + || (aiAbility == ABILITY_REGENERATOR + && gBattleMons[battler].hp >= gBattleMons[battler].maxHP / 4))) + { + // Then check if they have an important status move, which is worth using even in a bad matchup + if(hasStatusMove) + return FALSE; + + // 50% chance to stay in regardless + if (Random() % 2 == 0) + return FALSE; + + // Switch mon out + *(gBattleStruct->AI_monToSwitchIntoId + battler) = PARTY_SIZE; + BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); + return TRUE; + } + } + return FALSE; +} + static bool8 ShouldSwitchIfAllBadMoves(u32 battler) { if (AI_DATA->shouldSwitchMon & gBitTable[battler]) @@ -347,6 +503,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(u32 battler) if (gBattleMons[battler].statStages[STAT_EVASION] > (DEFAULT_STAT_STAGE + 3) && AI_DATA->abilities[opposingBattler] != ABILITY_UNAWARE && AI_DATA->abilities[opposingBattler] != ABILITY_KEEN_EYE + && (B_ILLUMINATE_EFFECT >= GEN_9 && AI_DATA->abilities[opposingBattler] != ABILITY_ILLUMINATE) && !(gBattleMons[battler].status2 & STATUS2_FORESIGHT) && !(gStatuses3[battler] & STATUS3_MIRACLE_EYED)) switchMon = FALSE; @@ -420,7 +577,6 @@ static bool8 ShouldSwitchIfGameStatePrompt(u32 battler) static bool8 ShouldSwitchIfAbilityBenefit(u32 battler) { - s32 monToSwitchId; s32 moduloChance = 4; //25% Chance Default s32 chanceReducer = 1; //No Reduce default. Increase to reduce @@ -437,12 +593,12 @@ static bool8 ShouldSwitchIfAbilityBenefit(u32 battler) moduloChance = 4; //25% //Attempt to cure bad ailment if (gBattleMons[battler].status1 & (STATUS1_SLEEP | STATUS1_FREEZE | STATUS1_TOXIC_POISON) - && GetMostSuitableMonToSwitchInto(battler) != PARTY_SIZE) + && AI_DATA->mostSuitableMonId != PARTY_SIZE) break; //Attempt to cure lesser ailment if ((gBattleMons[battler].status1 & STATUS1_ANY) && (gBattleMons[battler].hp >= gBattleMons[battler].maxHP / 2) - && GetMostSuitableMonToSwitchInto(battler) != PARTY_SIZE + && AI_DATA->mostSuitableMonId != PARTY_SIZE && Random() % (moduloChance*chanceReducer) == 0) break; @@ -454,7 +610,7 @@ static bool8 ShouldSwitchIfAbilityBenefit(u32 battler) if (gBattleMons[battler].status1 & STATUS1_ANY) return FALSE; if ((gBattleMons[battler].hp <= ((gBattleMons[battler].maxHP * 2) / 3)) - && GetMostSuitableMonToSwitchInto(battler) != PARTY_SIZE + && AI_DATA->mostSuitableMonId != PARTY_SIZE && Random() % (moduloChance*chanceReducer) == 0) break; @@ -619,6 +775,153 @@ static bool8 FindMonWithFlagsAndSuperEffective(u32 battler, u16 flags, u8 modulo return FALSE; } +static bool32 CanMonSurviveHazardSwitchin(u32 battler) +{ + u32 battlerIn1, battlerIn2; + u32 hazardDamage = 0, battlerHp = gBattleMons[battler].hp; + u32 ability = GetBattlerAbility(battler), aiMove; + s32 firstId, lastId, i, j; + struct Pokemon *party; + + if (ability == ABILITY_REGENERATOR) + battlerHp = (battlerHp * 133) / 100; // Account for Regenerator healing + + hazardDamage = GetSwitchinHazardsDamage(battler, &gBattleMons[battler]); + + // Battler will faint to hazards, check to see if another mon can clear them + if (hazardDamage > battlerHp) + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + battlerIn1 = battler; + if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(battler)))]) + battlerIn2 = battler; + else + battlerIn2 = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(battler))); + } + else + { + battlerIn1 = battler; + battlerIn2 = battler; + } + + GetAIPartyIndexes(battler, &firstId, &lastId); + party = GetBattlerParty(battler); + + for (i = firstId; i < lastId; i++) + { + if (!IsValidForBattle(&party[i])) + continue; + if (i == gBattlerPartyIndexes[battlerIn1]) + continue; + if (i == gBattlerPartyIndexes[battlerIn2]) + continue; + if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) + continue; + if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + continue; + if (IsAceMon(battler, i)) + continue; + + for (j = 0; j < MAX_MON_MOVES; j++) + { + aiMove = GetMonData(&party[i], MON_DATA_MOVE1 + j, NULL); + if (aiMove == MOVE_RAPID_SPIN || aiMove == MOVE_DEFOG || aiMove == MOVE_MORTAL_SPIN || aiMove == MOVE_TIDY_UP) + { + // Have a mon that can clear the hazards, so switching out is okay + return TRUE; + } + } + } + // Faints to hazards and party can't clear them, don't switch out + return FALSE; + } + return TRUE; +} + +static bool32 ShouldSwitchIfEncored(u32 battler) +{ + // Only use this if AI_FLAG_SMART_SWITCHING is set for the trainer + if (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING)) + return FALSE; + + // If not Encored or if no good switchin, don't switch + if (gDisableStructs[battler].encoredMove == MOVE_NONE || AI_DATA->mostSuitableMonId == PARTY_SIZE) + return FALSE; + + // Otherwise 50% chance to switch out + if (Random() & 1) + { + *(gBattleStruct->AI_monToSwitchIntoId + battler) = PARTY_SIZE; + BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); + return TRUE; + } + + return FALSE; +} + +// AI should switch if it's become setup fodder and has something better to switch to +static bool8 AreAttackingStatsLowered(u32 battler) +{ + s8 attackingStage = gBattleMons[battler].statStages[STAT_ATK]; + s8 spAttackingStage = gBattleMons[battler].statStages[STAT_SPATK]; + + // Only use this if AI_FLAG_SMART_SWITCHING is set for the trainer + if (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING)) + return FALSE; + + // Physical attacker + if (gBattleMons[battler].attack > gBattleMons[battler].spAttack) + { + // Don't switch if attack isn't below -1 + if (attackingStage > DEFAULT_STAT_STAGE - 2) + return FALSE; + // 50% chance if attack at -2 and have a good candidate mon + else if (attackingStage == DEFAULT_STAT_STAGE - 2) + { + if (AI_DATA->mostSuitableMonId != PARTY_SIZE && (Random() & 1)) + { + *(gBattleStruct->AI_monToSwitchIntoId + battler) = PARTY_SIZE; + BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); + return TRUE; + } + } + // If at -3 or worse, switch out regardless + else if (attackingStage < DEFAULT_STAT_STAGE - 2) + { + *(gBattleStruct->AI_monToSwitchIntoId + battler) = PARTY_SIZE; + BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); + return TRUE; + } + } + + // Special attacker + else + { + // Don't switch if attack isn't below -1 + if (spAttackingStage > DEFAULT_STAT_STAGE - 2) + return FALSE; + // 50% chance if attack at -2 and have a good candidate mon + else if (spAttackingStage == DEFAULT_STAT_STAGE - 2) + { + if (AI_DATA->mostSuitableMonId != PARTY_SIZE && (Random() & 1)) + { + *(gBattleStruct->AI_monToSwitchIntoId + battler) = PARTY_SIZE; + BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); + return TRUE; + } + } + // If at -3 or worse, switch out regardless + else if (spAttackingStage < DEFAULT_STAT_STAGE - 2) + { + *(gBattleStruct->AI_monToSwitchIntoId + battler) = PARTY_SIZE; + BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); + return TRUE; + } + } + return FALSE; +} + bool32 ShouldSwitch(u32 battler) { u8 battlerIn1, battlerIn2; @@ -702,10 +1005,18 @@ bool32 ShouldSwitch(u32 battler) return TRUE; //These Functions can prompt switch to generic pary members + if ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING) && (CanMonSurviveHazardSwitchin(battler) == FALSE)) + return FALSE; if (ShouldSwitchIfAllBadMoves(battler)) return TRUE; if (ShouldSwitchIfAbilityBenefit(battler)) return TRUE; + if (HasBadOdds(battler)) + return TRUE; + if (ShouldSwitchIfEncored(battler)) + return TRUE; + if (AreAttackingStatsLowered(battler)) + return TRUE; //Removing switch capabilites under specific conditions //These Functions prevent the "FindMonWithFlagsAndSuperEffective" from getting out of hand. @@ -742,7 +1053,7 @@ void AI_TrySwitchOrUseItem(u32 battler) { if (*(gBattleStruct->AI_monToSwitchIntoId + battler) == PARTY_SIZE) { - s32 monToSwitchId = GetMostSuitableMonToSwitchInto(battler); + s32 monToSwitchId = AI_DATA->mostSuitableMonId; if (monToSwitchId == PARTY_SIZE) { if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) @@ -802,8 +1113,6 @@ static u32 GetBestMonBatonPass(struct Pokemon *party, int firstId, int lastId, u { if (invalidMons & gBitTable[i]) continue; - if (IsAiPartyMonOHKOBy(battler, opposingBattler, &party[i])) - continue; for (j = 0; j < MAX_MON_MOVES; j++) { @@ -848,9 +1157,6 @@ static u32 GetBestMonTypeMatchup(struct Pokemon *party, int firstId, int lastId, u8 defType1 = gSpeciesInfo[species].types[0]; u8 defType2 = gSpeciesInfo[species].types[1]; - if (IsAiPartyMonOHKOBy(battler, opposingBattler, &party[i])) - continue; - typeEffectiveness = uq4_12_multiply(typeEffectiveness, (GetTypeModifier(atkType1, defType1))); if (atkType2 != atkType1) typeEffectiveness = uq4_12_multiply(typeEffectiveness, (GetTypeModifier(atkType2, defType1))); @@ -897,6 +1203,7 @@ static u32 GetBestMonDmg(struct Pokemon *party, int firstId, int lastId, u8 inva int i, j; int dmg, bestDmg = 0; int bestMonId = PARTY_SIZE; + u32 aiMove; gMoveResultFlags = 0; // If we couldn't find the best mon in terms of typing, find the one that deals most damage. @@ -904,21 +1211,683 @@ static u32 GetBestMonDmg(struct Pokemon *party, int firstId, int lastId, u8 inva { if (gBitTable[i] & invalidMons) continue; - if (IsAiPartyMonOHKOBy(battler, opposingBattler, &party[i])) - continue; - - dmg = AI_CalcPartyMonBestMoveDamage(battler, opposingBattler, &party[i], NULL); - if (bestDmg < dmg) + InitializeSwitchinCandidate(&party[i]); + for (j = 0; j < MAX_MON_MOVES; j++) { - bestDmg = dmg; - bestMonId = i; + aiMove = AI_DATA->switchinCandidate.battleMon.moves[j]; + if (aiMove != MOVE_NONE && gBattleMoves[aiMove].power != 0) + { + aiMove = GetMonData(&party[i], MON_DATA_MOVE1 + j); + dmg = AI_CalcPartyMonDamage(aiMove, battler, opposingBattler, AI_DATA->switchinCandidate.battleMon, TRUE); + if (bestDmg < dmg) + { + bestDmg = dmg; + bestMonId = i; + } + } } } return bestMonId; } -u8 GetMostSuitableMonToSwitchInto(u32 battler) +static bool32 IsMonGrounded(u16 heldItemEffect, u32 ability, u8 type1, u8 type2) +{ + // List that makes mon not grounded + if (type1 == TYPE_FLYING || type2 == TYPE_FLYING || ability == ABILITY_LEVITATE + || (heldItemEffect == HOLD_EFFECT_AIR_BALLOON && ability != ABILITY_KLUTZ)) + { + // List that overrides being off the ground + if ((heldItemEffect == HOLD_EFFECT_IRON_BALL && ability != ABILITY_KLUTZ) || (gFieldStatuses & STATUS_FIELD_GRAVITY) || (gFieldStatuses & STATUS_FIELD_MAGIC_ROOM)) + return TRUE; + else + return FALSE; + } + else + return TRUE; +} + +// Gets hazard damage +static u32 GetSwitchinHazardsDamage(u32 battler, struct BattlePokemon *battleMon) +{ + u8 defType1 = battleMon->type1, defType2 = battleMon->type2, tSpikesLayers; + u16 heldItemEffect = gItems[battleMon->item].holdEffect; + u32 maxHP = battleMon->maxHP, ability = battleMon->ability, status = battleMon->status1; + u32 spikesDamage = 0, tSpikesDamage = 0, hazardDamage = 0; + u32 hazardFlags = gSideStatuses[GetBattlerSide(battler)] & (SIDE_STATUS_SPIKES | SIDE_STATUS_STEALTH_ROCK | SIDE_STATUS_STICKY_WEB | SIDE_STATUS_TOXIC_SPIKES | SIDE_STATUS_SAFEGUARD); + + // Check ways mon might avoid all hazards + if (ability != ABILITY_MAGIC_GUARD || (heldItemEffect == HOLD_EFFECT_HEAVY_DUTY_BOOTS && + !((gFieldStatuses & STATUS_FIELD_MAGIC_ROOM) || ability == ABILITY_KLUTZ))) + { + // Stealth Rock + if ((hazardFlags & SIDE_STATUS_STEALTH_ROCK) && heldItemEffect != HOLD_EFFECT_HEAVY_DUTY_BOOTS) + hazardDamage += GetStealthHazardDamageByTypesAndHP(gBattleMoves[MOVE_STEALTH_ROCK].type, defType1, defType2, battleMon->maxHP); + // Spikes + if ((hazardFlags & SIDE_STATUS_SPIKES) && IsMonGrounded(heldItemEffect, ability, defType1, defType2)) + { + spikesDamage = maxHP / ((5 - gSideTimers[GetBattlerSide(battler)].spikesAmount) * 2); + if (spikesDamage == 0) + spikesDamage = 1; + hazardDamage += spikesDamage; + } + + // Toxic Spikes + // TODO: CanBePoisoned compatibility to avoid duplicate code + if ((hazardFlags & SIDE_STATUS_TOXIC_SPIKES) && (defType1 != TYPE_POISON && defType2 != TYPE_POISON + && defType1 != TYPE_STEEL && defType2 != TYPE_STEEL + && ability != ABILITY_IMMUNITY && ability != ABILITY_POISON_HEAL && ability != ABILITY_COMATOSE + && status == 0 + && !(hazardFlags & SIDE_STATUS_SAFEGUARD) + && !(IsAbilityOnSide(battler, ABILITY_PASTEL_VEIL)) + && !(IsBattlerTerrainAffected(battler, STATUS_FIELD_MISTY_TERRAIN)) + && !(IsAbilityStatusProtected(battler)) + && heldItemEffect != HOLD_EFFECT_CURE_PSN && heldItemEffect != HOLD_EFFECT_CURE_STATUS + && IsMonGrounded(heldItemEffect, ability, defType1, defType2))) + { + tSpikesLayers = gSideTimers[GetBattlerSide(battler)].toxicSpikesAmount; + if (tSpikesLayers == 1) + { + tSpikesDamage = maxHP / 8; + if (tSpikesDamage == 0) + tSpikesDamage = 1; + } + else if (tSpikesLayers >= 2) + { + tSpikesDamage = maxHP / 16; + if (tSpikesDamage == 0) + tSpikesDamage = 1; + } + hazardDamage += tSpikesDamage; + } + } + return hazardDamage; +} + +// Gets damage / healing from weather +static s32 GetSwitchinWeatherImpact(void) +{ + s32 weatherImpact = 0, maxHP = AI_DATA->switchinCandidate.battleMon.maxHP, ability = AI_DATA->switchinCandidate.battleMon.ability; + u16 item = AI_DATA->switchinCandidate.battleMon.item; + + if (WEATHER_HAS_EFFECT) + { + // Damage + if (item != ITEM_SAFETY_GOGGLES) + { + if ((gBattleWeather & B_WEATHER_HAIL) && (AI_DATA->switchinCandidate.battleMon.type1 != TYPE_ICE || AI_DATA->switchinCandidate.battleMon.type2 != TYPE_ICE) + && ability != ABILITY_OVERCOAT && ability != ABILITY_SNOW_CLOAK && ability != ABILITY_ICE_BODY) + { + weatherImpact = maxHP / 16; + if (weatherImpact == 0) + weatherImpact = 1; + } + else if ((gBattleWeather & B_WEATHER_SANDSTORM) && (AI_DATA->switchinCandidate.battleMon.type1 != TYPE_GROUND && AI_DATA->switchinCandidate.battleMon.type2 != TYPE_GROUND + && AI_DATA->switchinCandidate.battleMon.type1 != TYPE_ROCK && AI_DATA->switchinCandidate.battleMon.type2 != TYPE_ROCK + && AI_DATA->switchinCandidate.battleMon.type1 != TYPE_STEEL && AI_DATA->switchinCandidate.battleMon.type2 != TYPE_STEEL + && ability != ABILITY_OVERCOAT && ability != ABILITY_SAND_VEIL && ability != ABILITY_SAND_RUSH && ability != ABILITY_SAND_FORCE)) + { + weatherImpact = maxHP / 16; + if (weatherImpact == 0) + weatherImpact = 1; + } + } + if ((gBattleWeather & B_WEATHER_SUN) && (ability == ABILITY_SOLAR_POWER || ability == ABILITY_DRY_SKIN)) + { + weatherImpact = maxHP / 8; + if (weatherImpact == 0) + weatherImpact = 1; + } + + // Healing + if (gBattleWeather & B_WEATHER_RAIN) + { + if (ability == ABILITY_DRY_SKIN) + { + weatherImpact = maxHP / 8; + if (weatherImpact == 0) + weatherImpact = 1; + } + else if (ability == ABILITY_RAIN_DISH) + { + weatherImpact = maxHP / 16; + if (weatherImpact == 0) + weatherImpact = 1; + } + } + if (((gBattleWeather & B_WEATHER_HAIL) || (gBattleWeather & B_WEATHER_SNOW)) && ability == ABILITY_ICE_BODY) + { + weatherImpact = maxHP / 16; + if (weatherImpact == 0) + weatherImpact =1; + } + } + return weatherImpact; +} + +// Gets one turn of recurring healing +static u32 GetSwitchinRecurringHealing(void) +{ + u32 recurringHealing = 0, maxHP = AI_DATA->switchinCandidate.battleMon.maxHP, ability = AI_DATA->switchinCandidate.battleMon.ability; + u16 item = AI_DATA->switchinCandidate.battleMon.item; + + // Items + if (ability != ABILITY_KLUTZ) + { + if (item == ITEM_BLACK_SLUDGE && (AI_DATA->switchinCandidate.battleMon.type1 == TYPE_POISON || AI_DATA->switchinCandidate.battleMon.type2 == TYPE_POISON)) + { + recurringHealing = maxHP / 16; + if (recurringHealing == 0) + recurringHealing = 1; + } + else if (item == ITEM_LEFTOVERS) + { + recurringHealing = maxHP / 16; + if (recurringHealing == 0) + recurringHealing = 1; + } + } // Intentionally omitting Shell Bell for its inconsistency + + // Abilities + if (ability == ABILITY_POISON_HEAL && (AI_DATA->switchinCandidate.battleMon.status1 & STATUS1_POISON)) + { + recurringHealing = maxHP / 8; + if (recurringHealing == 0) + recurringHealing = 1; + } + return recurringHealing; +} + +// Gets one turn of recurring damage +static u32 GetSwitchinRecurringDamage(void) +{ + u32 passiveDamage = 0, maxHP = AI_DATA->switchinCandidate.battleMon.maxHP, ability = AI_DATA->switchinCandidate.battleMon.ability; + u16 item = AI_DATA->switchinCandidate.battleMon.item; + + // Items + if (ability != ABILITY_MAGIC_GUARD && ability != ABILITY_KLUTZ) + { + if (item == ITEM_BLACK_SLUDGE && AI_DATA->switchinCandidate.battleMon.type1 != TYPE_POISON && AI_DATA->switchinCandidate.battleMon.type2 != TYPE_POISON) + { + passiveDamage = maxHP / 8; + if (passiveDamage == 0) + passiveDamage = 1; + } + else if (item == ITEM_LIFE_ORB && ability != ABILITY_SHEER_FORCE) + { + passiveDamage = maxHP / 10; + if (passiveDamage == 0) + passiveDamage = 1; + } + else if (item == ITEM_STICKY_BARB) + { + passiveDamage = maxHP / 8; + if(passiveDamage == 0) + passiveDamage = 1; + } + } + return passiveDamage; +} + +// Gets one turn of status damage +static u32 GetSwitchinStatusDamage(u32 battler) +{ + u8 defType1 = AI_DATA->switchinCandidate.battleMon.type1, defType2 = AI_DATA->switchinCandidate.battleMon.type2; + u8 tSpikesLayers = gSideTimers[GetBattlerSide(battler)].toxicSpikesAmount; + u16 heldItemEffect = gItems[AI_DATA->switchinCandidate.battleMon.item].holdEffect; + u32 status = AI_DATA->switchinCandidate.battleMon.status1, ability = AI_DATA->switchinCandidate.battleMon.ability, maxHP = AI_DATA->switchinCandidate.battleMon.maxHP; + u32 statusDamage = 0; + + // Status condition damage + if ((status != 0) && AI_DATA->switchinCandidate.battleMon.ability != ABILITY_MAGIC_GUARD) + { + if (status & STATUS1_BURN) + { + #if B_BURN_DAMAGE >= GEN_7 + statusDamage = maxHP / 16; + #else + statusDamage = maxHP / 8; + #endif + if(ability == ABILITY_HEATPROOF) + statusDamage = statusDamage / 2; + if (statusDamage == 0) + statusDamage = 1; + } + else if (status & STATUS1_FROSTBITE) + { + #if B_BURN_DAMAGE >= GEN_7 + statusDamage = maxHP / 16; + #else + statusDamage = maxHP / 8; + #endif + if (statusDamage == 0) + statusDamage = 1; + } + else if ((status & STATUS1_POISON) && ability != ABILITY_POISON_HEAL) + { + statusDamage = maxHP / 8; + if (statusDamage == 0) + statusDamage = 1; + } + else if ((status & STATUS1_TOXIC_POISON) && ability != ABILITY_POISON_HEAL) + { + if ((status & STATUS1_TOXIC_COUNTER) != STATUS1_TOXIC_TURN(15)) // not 16 turns + AI_DATA->switchinCandidate.battleMon.status1 += STATUS1_TOXIC_TURN(1); + statusDamage *= AI_DATA->switchinCandidate.battleMon.status1 & STATUS1_TOXIC_COUNTER >> 8; + if (statusDamage == 0) + statusDamage = 1; + } + } + + // Apply hypothetical poisoning from Toxic Spikes, which means the first turn of damage already added in GetSwitchinHazardsDamage + // Do this last to skip one iteration of Poison / Toxic damage, and start counting Toxic damage one turn later. + if (tSpikesLayers != 0 && (defType1 != TYPE_POISON && defType2 != TYPE_POISON + && ability != ABILITY_IMMUNITY && ability != ABILITY_POISON_HEAL + && status == 0 + && !(heldItemEffect == HOLD_EFFECT_HEAVY_DUTY_BOOTS + && (((gFieldStatuses & STATUS_FIELD_MAGIC_ROOM) || ability == ABILITY_KLUTZ))) + && heldItemEffect != HOLD_EFFECT_CURE_PSN && heldItemEffect != HOLD_EFFECT_CURE_STATUS + && IsMonGrounded(heldItemEffect, ability, defType1, defType2))) + { + if (tSpikesLayers == 1) + { + AI_DATA->switchinCandidate.battleMon.status1 = STATUS1_POISON; // Assign "hypothetical" status to the switchin candidate so we can get the damage it would take from TSpikes + AI_DATA->switchinCandidate.hypotheticalStatus = TRUE; + } + if (tSpikesLayers == 2) + { + AI_DATA->switchinCandidate.battleMon.status1 = STATUS1_TOXIC_POISON; // Assign "hypothetical" status to the switchin candidate so we can get the damage it would take from TSpikes + AI_DATA->switchinCandidate.battleMon.status1 += STATUS1_TOXIC_TURN(1); + AI_DATA->switchinCandidate.hypotheticalStatus = TRUE; + } + } + return statusDamage; +} + +// Gets number of hits to KO factoring in hazards, healing held items, status, and weather +static u32 GetSwitchinHitsToKO(s32 damageTaken, u32 battler) +{ + u32 startingHP = AI_DATA->switchinCandidate.battleMon.hp - GetSwitchinHazardsDamage(battler, &AI_DATA->switchinCandidate.battleMon); + s32 weatherImpact = GetSwitchinWeatherImpact(); // Signed to handle both damage and healing in the same value + u32 recurringDamage = GetSwitchinRecurringDamage(); + u32 recurringHealing = GetSwitchinRecurringHealing(); + u32 statusDamage = GetSwitchinStatusDamage(battler); + u32 hitsToKO = 0, singleUseItemHeal = 0; + u16 maxHP = AI_DATA->switchinCandidate.battleMon.maxHP, item = AI_DATA->switchinCandidate.battleMon.item, heldItemEffect = gItems[AI_DATA->switchinCandidate.battleMon.item].holdEffect; + u8 weatherDuration = gWishFutureKnock.weatherDuration, holdEffectParam = gItems[AI_DATA->switchinCandidate.battleMon.item].holdEffectParam; + u32 opposingBattler = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerPosition(battler))); + u32 opposingAbility = gBattleMons[opposingBattler].ability; + bool8 usedSingleUseHealingItem = FALSE; + s32 currentHP = startingHP; + + // No damage being dealt + if (damageTaken + statusDamage + recurringDamage == 0) + return startingHP; + + // Mon fainted to hazards + if (startingHP == 0) + return 1; + + // Find hits to KO + while (currentHP > 0) + { + // Remove weather damage when it would run out + if (weatherImpact != 0 && weatherDuration == 0) + weatherImpact = 0; + + // Take attack damage for the turn + currentHP = currentHP - damageTaken; + + // If mon is still alive, apply weather impact first, as it might KO the mon before it can heal with its item (order is weather -> item -> status) + if (currentHP != 0) + currentHP = currentHP + weatherImpact; + + // Check if we're at a single use healing item threshold + if (AI_DATA->switchinCandidate.battleMon.ability != ABILITY_KLUTZ && usedSingleUseHealingItem == FALSE) + { + if (currentHP < maxHP / 2) + { + if (item == ITEM_BERRY_JUICE) + { + singleUseItemHeal = holdEffectParam; + } + else if (opposingAbility != ABILITY_UNNERVE && heldItemEffect == HOLD_EFFECT_RESTORE_HP) + { + // By default, this should only encompass Oran Berry and Sitrus Berry. + singleUseItemHeal = holdEffectParam; + if (singleUseItemHeal == 0) + singleUseItemHeal = 1; + } + } + else if (currentHP < maxHP / CONFUSE_BERRY_HP_FRACTION + && opposingAbility != ABILITY_UNNERVE + && (item == ITEM_AGUAV_BERRY || item == ITEM_FIGY_BERRY || item == ITEM_IAPAPA_BERRY || item == ITEM_MAGO_BERRY || item == ITEM_WIKI_BERRY)) + { + singleUseItemHeal = maxHP / CONFUSE_BERRY_HEAL_FRACTION; + if (singleUseItemHeal == 0) + singleUseItemHeal = 1; + } + + // If we used one, apply it without overcapping our maxHP + if (singleUseItemHeal > 0) + { + if ((currentHP + singleUseItemHeal) > maxHP) + currentHP = maxHP; + else + currentHP = currentHP + singleUseItemHeal; + usedSingleUseHealingItem = TRUE; + } + } + + // Healing from items occurs before status so we can do the rest in one line + if (currentHP != 0) + currentHP = currentHP + recurringHealing - recurringDamage - statusDamage; + + // Recalculate toxic damage if needed + if (AI_DATA->switchinCandidate.battleMon.status1 & STATUS1_TOXIC_POISON) + statusDamage = GetSwitchinStatusDamage(battler); + + // Reduce weather duration + if (weatherDuration != 0) + weatherDuration--; + + hitsToKO++; + } + + // If mon had a hypothetical status from TSpikes, clear it + if (AI_DATA->switchinCandidate.hypotheticalStatus == TRUE) + { + AI_DATA->switchinCandidate.battleMon.status1 = 0; + AI_DATA->switchinCandidate.hypotheticalStatus = FALSE; + } + return hitsToKO; +} + +static u16 GetSwitchinTypeMatchup(u32 opposingBattler, struct BattlePokemon battleMon) +{ + + // Check type matchup + u16 typeEffectiveness = UQ_4_12(1.0); + u8 atkType1 = gSpeciesInfo[gBattleMons[opposingBattler].species].types[0], atkType2 = gSpeciesInfo[gBattleMons[opposingBattler].species].types[1], + defType1 = battleMon.type1, defType2 = battleMon.type2; + + // Multiply type effectiveness by a factor depending on type matchup + typeEffectiveness = uq4_12_multiply(typeEffectiveness, (GetTypeModifier(atkType1, defType1))); + if (atkType2 != atkType1) + typeEffectiveness = uq4_12_multiply(typeEffectiveness, (GetTypeModifier(atkType2, defType1))); + if (defType2 != defType1) + { + typeEffectiveness = uq4_12_multiply(typeEffectiveness, (GetTypeModifier(atkType1, defType2))); + if (atkType2 != atkType1) + typeEffectiveness = uq4_12_multiply(typeEffectiveness, (GetTypeModifier(atkType2, defType2))); + } + return typeEffectiveness; +} + +static int GetRandomSwitchinWithBatonPass(int aliveCount, int bits, int firstId, int lastId, int currentMonId) +{ + // Breakout early if there aren't any Baton Pass mons to save computation time + if (bits == 0) + return PARTY_SIZE; + + // GetBestMonBatonPass randomly chooses between all mons that met Baton Pass check + if ((aliveCount == 2 || (aliveCount > 2 && Random() % 3 == 0)) && bits) + { + do + { + return (Random() % (lastId - firstId)) + firstId; + } while (!(bits & gBitTable[currentMonId])); + } + + // Catch any other cases (such as only one mon alive and it has Baton Pass) + else + return PARTY_SIZE; +} + +static s32 GetMaxDamagePlayerCouldDealToSwitchin(u32 battler, u32 opposingBattler, struct BattlePokemon battleMon) +{ + int i = 0; + u32 playerMove; + s32 damageTaken = 0, maxDamageTaken = 0; + + for (i = 0; i < MAX_MON_MOVES; i++) + { + playerMove = gBattleMons[opposingBattler].moves[i]; + if (playerMove != MOVE_NONE && gBattleMoves[playerMove].power != 0) + { + damageTaken = AI_CalcPartyMonDamage(playerMove, opposingBattler, battler, battleMon, FALSE); + if (damageTaken > maxDamageTaken) + maxDamageTaken = damageTaken; + } + } + return maxDamageTaken; +} + +// This function splits switching behaviour mid-battle from after a KO. +// Mid battle, it integrates GetBestMonTypeMatchup (vanilla with modifications), GetBestMonDefensive (custom), and GetBestMonBatonPass (vanilla with modifications) +// After a KO, integrates GetBestMonRevengeKiller (custom), GetBestMonTypeMatchup (vanilla with modifications), GetBestMonBatonPass (vanilla with modifications), and GetBestMonDmg (vanilla) +// the Type Matchup code will prioritize switching into a mon with the best type matchup and also a super effective move, or just best type matchup if no super effective move is found +// the Most Defensive code will prioritize switching into the mon that takes the most hits to KO, with a minimum of 4 hits required to be considered a valid option +// the Baton Pass code will prioritize switching into a mon with Baton Pass if it can get in, boost, and BP out without being KO'd, and randomizes between multiple valid options +// the Revenge Killer code will prioritize, in order, OHKO and outspeeds / OHKO, slower but not 2HKO'd / 2HKO, outspeeds and not OHKO'd / 2HKO, slower but not 3HKO'd +// the Most Damage code will prioritize switching into whatever mon deals the most damage, which is generally not as good as having a good Type Matchup +// Everything runs in the same loop to minimize computation time. This makes it harder to read, but hopefully the comments can guide you! + +static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, u32 battler, u32 opposingBattler, u8 battlerIn1, u8 battlerIn2, bool8 isSwitchAfterKO) +{ + int revengeKillerId = PARTY_SIZE, slowRevengeKillerId = PARTY_SIZE, fastThreatenId = PARTY_SIZE, slowThreatenId = PARTY_SIZE, damageMonId = PARTY_SIZE; + int batonPassId = PARTY_SIZE, typeMatchupId = PARTY_SIZE, typeMatchupEffectiveId = PARTY_SIZE, defensiveMonId = PARTY_SIZE, aceMonId = PARTY_SIZE; + int i, j, aliveCount = 0, bits = 0; + s32 defensiveMonHitKOThreshold = 3; // 3HKO threshold that candidate defensive mons must exceed + u32 aiMove, hitsToKO, hitsToKOThreshold, maxHitsToKO = 0; + s32 playerMonSpeed = gBattleMons[opposingBattler].speed, playerMonHP = gBattleMons[opposingBattler].hp, aiMonSpeed, maxDamageDealt = 0, damageDealt = 0; + u16 bestResist = UQ_4_12(1.0), bestResistEffective = UQ_4_12(1.0), typeMatchup; + + if (isSwitchAfterKO) + hitsToKOThreshold = 1; // After a KO, mons at minimum need to not be 1-shot, as they switch in for free + else + hitsToKOThreshold = 2; // When switching in otherwise need to not be 2-shot, as they do not switch in for free + + // Iterate through mons + for (i = firstId; i < lastId; i++) + { + // Check mon validity + if (!IsValidForBattle(&party[i]) + || gBattlerPartyIndexes[battlerIn1] == i + || gBattlerPartyIndexes[battlerIn2] == i + || i == *(gBattleStruct->monToSwitchIntoId + battlerIn1) + || i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + { + continue; + } + // Save Ace Pokemon for last + else if (IsAceMon(battler, i)) + { + aceMonId = i; + continue; + } + else + aliveCount++; + + InitializeSwitchinCandidate(&party[i]); + + // While not really invalid per say, not really wise to switch into this mon + if (AI_DATA->switchinCandidate.battleMon.ability == ABILITY_TRUANT && IsTruantMonVulnerable(battler, opposingBattler)) + continue; + + // Get max number of hits for player to KO AI mon + hitsToKO = GetSwitchinHitsToKO(GetMaxDamagePlayerCouldDealToSwitchin(battler, opposingBattler, AI_DATA->switchinCandidate.battleMon), battler); + + // Track max hits to KO and set GetBestMonDefensive if applicable + if(hitsToKO > maxHitsToKO) + { + maxHitsToKO = hitsToKO; + if(maxHitsToKO > defensiveMonHitKOThreshold) + defensiveMonId = i; + } + + typeMatchup = GetSwitchinTypeMatchup(opposingBattler, AI_DATA->switchinCandidate.battleMon); + + // Check that good type matchups gets at least two turns and set GetBestMonTypeMatchup if applicable + if (typeMatchup < bestResist) + { + if ((hitsToKO > hitsToKOThreshold && AI_DATA->switchinCandidate.battleMon.speed > playerMonSpeed) || hitsToKO > hitsToKOThreshold + 1) // Need to take an extra hit if slower + { + bestResist = typeMatchup; + typeMatchupId = i; + } + } + + aiMonSpeed = AI_DATA->switchinCandidate.battleMon.speed; + + // Check through current mon's moves + for (j = 0; j < MAX_MON_MOVES; j++) + { + aiMove = AI_DATA->switchinCandidate.battleMon.moves[j]; + + // Only do damage calc if switching after KO, don't need it otherwise and saves ~0.02s per turn + if (isSwitchAfterKO && aiMove != MOVE_NONE && gBattleMoves[aiMove].power != 0) + damageDealt = AI_CalcPartyMonDamage(aiMove, battler, opposingBattler, AI_DATA->switchinCandidate.battleMon, TRUE); + + // Check for Baton Pass; hitsToKO requirements mean mon can boost and BP without dying whether it's slower or not + if (aiMove == MOVE_BATON_PASS && ((hitsToKO > hitsToKOThreshold + 1 && AI_DATA->switchinCandidate.battleMon.speed < playerMonSpeed) || (hitsToKO > hitsToKOThreshold && AI_DATA->switchinCandidate.battleMon.speed > playerMonSpeed))) + bits |= gBitTable[i]; + + // Check for mon with resistance and super effective move for GetBestMonTypeMatchup + if (aiMove != MOVE_NONE && gBattleMoves[aiMove].power != 0) + { + if (typeMatchup < bestResistEffective) + { + if (AI_GetTypeEffectiveness(aiMove, battler, opposingBattler) >= UQ_4_12(2.0)) + { + // Assuming a super effective move would do significant damage or scare the player out, so not being as conservative here + if (hitsToKO > hitsToKOThreshold) + { + bestResistEffective = typeMatchup; + typeMatchupEffectiveId = i; + } + } + } + + // If a self destruction move doesn't OHKO, don't factor it into revenge killing + if (gBattleMoves[aiMove].effect == EFFECT_EXPLOSION && damageDealt < playerMonHP) + continue; + + // Check that mon isn't one shot and set GetBestMonDmg if applicable + if (damageDealt > maxDamageDealt) + { + if(hitsToKO > hitsToKOThreshold) + { + maxDamageDealt = damageDealt; + damageMonId = i; + } + } + + // Check if current mon can revenge kill in some capacity + // If AI mon can one shot + if (damageDealt > playerMonHP) + { + // If AI mon is faster and doesn't die to hazards + if ((aiMonSpeed > playerMonSpeed || gBattleMoves[aiMove].priority > 0) && AI_DATA->switchinCandidate.battleMon.hp > GetSwitchinHazardsDamage(battler, &AI_DATA->switchinCandidate.battleMon)) + { + // We have a revenge killer + revengeKillerId = i; + } + + // If AI mon is slower + else + { + // If AI mon can't be OHKO'd + if (hitsToKO > hitsToKOThreshold) + { + // We have a slow revenge killer + slowRevengeKillerId = i; + } + } + } + + // If AI mon can two shot + if (damageDealt > playerMonHP / 2) + { + // If AI mon is faster + if (aiMonSpeed > playerMonSpeed || gBattleMoves[aiMove].priority > 0) + { + // If AI mon can't be OHKO'd + if (hitsToKO > hitsToKOThreshold) + { + // We have a fast threaten + fastThreatenId = i; + } + } + // If AI mon is slower + else + { + // If AI mon can't be 2HKO'd + if (hitsToKO > hitsToKOThreshold + 1) + { + // We have a slow threaten + slowThreatenId = i; + } + } + } + } + } + } + + batonPassId = GetRandomSwitchinWithBatonPass(aliveCount, bits, firstId, lastId, i); + + // Different switching priorities depending on switching mid battle vs switching after a KO + if (isSwitchAfterKO) + { + // Return GetBestMonRevengeKiller > GetBestMonTypeMatchup > GetBestMonBatonPass > GetBestMonDmg + if (revengeKillerId != PARTY_SIZE) + return revengeKillerId; + + else if (slowRevengeKillerId != PARTY_SIZE) + return slowRevengeKillerId; + + else if (fastThreatenId != PARTY_SIZE) + return fastThreatenId; + + else if (slowThreatenId != PARTY_SIZE) + return slowThreatenId; + + else if (typeMatchupEffectiveId != PARTY_SIZE) + return typeMatchupEffectiveId; + + else if (typeMatchupId != PARTY_SIZE) + return typeMatchupId; + + else if (batonPassId != PARTY_SIZE) + return batonPassId; + + else if (damageMonId != PARTY_SIZE) + return damageMonId; + } + else + { + // Return GetBestMonTypeMatchup > GetBestMonDefensive > GetBestMonBatonPass + if (typeMatchupEffectiveId != PARTY_SIZE) + return typeMatchupEffectiveId; + + else if (typeMatchupId != PARTY_SIZE) + return typeMatchupId; + + else if (defensiveMonId != PARTY_SIZE) + return defensiveMonId; + + else if (batonPassId != PARTY_SIZE) + return batonPassId; + + // If ace mon is the last available Pokemon and U-Turn/Volt Switch was used - switch to the mon. + else if (aceMonId != PARTY_SIZE + && (gBattleMoves[gLastUsedMove].effect == EFFECT_HIT_ESCAPE || gBattleMoves[gLastUsedMove].effect == EFFECT_PARTING_SHOT)) + return aceMonId; + } + return PARTY_SIZE; +} + +u8 GetMostSuitableMonToSwitchInto(u32 battler, bool32 switchAfterMonKOd) { u32 opposingBattler = 0; u32 bestMonId = PARTY_SIZE; @@ -926,8 +1895,6 @@ u8 GetMostSuitableMonToSwitchInto(u32 battler) s32 firstId = 0; s32 lastId = 0; // + 1 struct Pokemon *party; - s32 i, j, aliveCount = 0; - u32 invalidMons = 0, aceMonId = PARTY_SIZE; if (*(gBattleStruct->monToSwitchIntoId + battler) != PARTY_SIZE) return *(gBattleStruct->monToSwitchIntoId + battler); @@ -960,52 +1927,63 @@ u8 GetMostSuitableMonToSwitchInto(u32 battler) else party = gEnemyParty; - // Get invalid slots ids. - for (i = firstId; i < lastId; i++) + // 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 & AI_FLAG_SMART_MON_CHOICES) { - if (!IsValidForBattle(&party[i]) - || gBattlerPartyIndexes[battlerIn1] == i - || gBattlerPartyIndexes[battlerIn2] == i - || i == *(gBattleStruct->monToSwitchIntoId + battlerIn1) - || i == *(gBattleStruct->monToSwitchIntoId + battlerIn2) - || (GetMonAbility(&party[i]) == ABILITY_TRUANT && IsTruantMonVulnerable(battler, opposingBattler))) // While not really invalid per say, not really wise to switch into this mon.) - { - invalidMons |= gBitTable[i]; - } - else if (IsAceMon(battler, i))// Save Ace Pokemon for last. - { - aceMonId = i; - invalidMons |= gBitTable[i]; - } - else - { - aliveCount++; - } + bestMonId = GetBestMonIntegrated(party, firstId, lastId, battler, opposingBattler, battlerIn1, battlerIn2, switchAfterMonKOd); + return bestMonId; } - bestMonId = GetBestMonBatonPass(party, firstId, lastId, invalidMons, aliveCount, battler, opposingBattler); - if (bestMonId != PARTY_SIZE) - return bestMonId; + // This all handled by the GetBestMonIntegrated function if the AI_FLAG_SMART_MON_CHOICES flag is set + else + { + s32 i, aliveCount = 0; + u32 invalidMons = 0, aceMonId = PARTY_SIZE; + // Get invalid slots ids. + for (i = firstId; i < lastId; i++) + { + if (!IsValidForBattle(&party[i]) + || gBattlerPartyIndexes[battlerIn1] == i + || gBattlerPartyIndexes[battlerIn2] == i + || i == *(gBattleStruct->monToSwitchIntoId + battlerIn1) + || i == *(gBattleStruct->monToSwitchIntoId + battlerIn2) + || (GetMonAbility(&party[i]) == ABILITY_TRUANT && IsTruantMonVulnerable(battler, opposingBattler))) // While not really invalid per say, not really wise to switch into this mon.) + { + invalidMons |= gBitTable[i]; + } + else if (IsAceMon(battler, i))// Save Ace Pokemon for last. + { + aceMonId = i; + invalidMons |= gBitTable[i]; + } + else + { + aliveCount++; + } + } + bestMonId = GetBestMonBatonPass(party, firstId, lastId, invalidMons, aliveCount, battler, opposingBattler); + if (bestMonId != PARTY_SIZE) + return bestMonId; - bestMonId = GetBestMonTypeMatchup(party, firstId, lastId, invalidMons, battler, opposingBattler); - if (bestMonId != PARTY_SIZE) - return bestMonId; + bestMonId = GetBestMonTypeMatchup(party, firstId, lastId, invalidMons, battler, opposingBattler); + if (bestMonId != PARTY_SIZE) + return bestMonId; - bestMonId = GetBestMonDmg(party, firstId, lastId, invalidMons, battler, opposingBattler); - if (bestMonId != PARTY_SIZE) - return bestMonId; + bestMonId = GetBestMonDmg(party, firstId, lastId, invalidMons, battler, opposingBattler); + if (bestMonId != PARTY_SIZE) + return bestMonId; - // If ace mon is the last available Pokemon and switch move was used - switch to the mon. - if (aceMonId != PARTY_SIZE) - return aceMonId; + // If ace mon is the last available Pokemon and switch move was used - switch to the mon. + if (aceMonId != PARTY_SIZE) + return aceMonId; - return PARTY_SIZE; + return PARTY_SIZE; + } } static bool32 AiExpectsToFaintPlayer(u32 battler) { - bool32 canFaintPlayer; - u32 i; u8 target = gBattleStruct->aiChosenTarget[battler]; if (gBattleStruct->aiMoveOrAction[battler] > 3) @@ -1059,7 +2037,6 @@ static bool8 ShouldUseItem(u32 battler) { u16 item; const u8 *itemEffects; - u8 paramOffset; u8 battlerSide; item = gBattleResources->battleHistory->trainerItems[i]; @@ -1161,30 +2138,4 @@ static bool32 AI_OpponentCanFaintAiWithMod(u32 battler, u32 healAmount) } } return FALSE; -} - -static bool32 IsAiPartyMonOHKOBy(u32 battlerAi, u32 battlerAtk, struct Pokemon *aiMon) -{ - bool32 ret = FALSE; - struct BattlePokemon *savedBattleMons; - s32 hp = GetMonData(aiMon, MON_DATA_HP); - s32 bestDmg = AI_CalcPartyMonBestMoveDamage(battlerAtk, battlerAi, NULL, aiMon); - - switch (GetNoOfHitsToKO(bestDmg, hp)) - { - case 1: - ret = TRUE; - break; - case 2: // if AI mon is faster allow 2 turns - savedBattleMons = AllocSaveBattleMons(); - PokemonToBattleMon(aiMon, &gBattleMons[battlerAi]); - if (AI_WhoStrikesFirst(battlerAi, battlerAtk, 0) == AI_IS_SLOWER) - ret = TRUE; - else - ret = FALSE; - FreeRestoreBattleMons(savedBattleMons); - break; - } - - return ret; -} +} \ No newline at end of file diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 0a65f40833..967d31bc07 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -363,61 +363,6 @@ static const u16 sEncouragedEncoreEffects[] = EFFECT_CAMOUFLAGE, }; -// For the purposes of determining the most powerful move in a moveset, these -// moves are treated the same as having a power of 0 or 1 -#define IGNORED_MOVES_END 0xFFFF -static const u16 sIgnoredPowerfulMoveEffects[] = -{ - EFFECT_EXPLOSION, - EFFECT_DREAM_EATER, - EFFECT_RECHARGE, - EFFECT_SKULL_BASH, - EFFECT_SOLAR_BEAM, - EFFECT_SPIT_UP, - EFFECT_FOCUS_PUNCH, - EFFECT_SUPERPOWER, - EFFECT_ERUPTION, - EFFECT_OVERHEAT, - EFFECT_MIND_BLOWN, - EFFECT_MAKE_IT_RAIN, - IGNORED_MOVES_END -}; - -static const u16 sIgnoreMoldBreakerMoves[] = -{ - MOVE_MOONGEIST_BEAM, - MOVE_SUNSTEEL_STRIKE, - MOVE_PHOTON_GEYSER, - MOVE_LIGHT_THAT_BURNS_THE_SKY, - MOVE_MENACING_MOONRAZE_MAELSTROM, - MOVE_SEARING_SUNRAZE_SMASH, -}; - -static const u16 sRechargeMoves[] = -{ - MOVE_HYPER_BEAM, - MOVE_BLAST_BURN, - MOVE_HYDRO_CANNON, - MOVE_FRENZY_PLANT, - MOVE_GIGA_IMPACT, - MOVE_ROCK_WRECKER, - MOVE_ROAR_OF_TIME, - MOVE_PRISMATIC_LASER, - MOVE_METEOR_ASSAULT, - MOVE_ETERNABEAM, -}; - -static const u16 sOtherMoveCallingMoves[] = -{ - MOVE_ASSIST, - MOVE_COPYCAT, - MOVE_ME_FIRST, - MOVE_METRONOME, - MOVE_MIRROR_MOVE, - MOVE_NATURE_POWER, - MOVE_SLEEP_TALK, -}; - // Functions u32 GetAIChosenMove(u32 battlerId) { @@ -544,6 +489,7 @@ void SaveBattlerData(u32 battlerId) static bool32 ShouldFailForIllusion(u32 illusionSpecies, u32 battlerId) { u32 i, j; + const struct LevelUpMove *learnset; if (BATTLE_HISTORY->abilities[battlerId] == ABILITY_ILLUSION) return FALSE; @@ -555,13 +501,14 @@ static bool32 ShouldFailForIllusion(u32 illusionSpecies, u32 battlerId) if (move == MOVE_NONE) continue; - for (j = 0; gLevelUpLearnsets[illusionSpecies][j].move != MOVE_UNAVAILABLE; j++) + learnset = GetSpeciesLevelUpLearnset(illusionSpecies); + for (j = 0; learnset[j].move != MOVE_UNAVAILABLE; j++) { - if (gLevelUpLearnsets[illusionSpecies][j].move == move) + if (learnset[j].move == move) break; } // The used move is in the learnsets of the fake species. - if (gLevelUpLearnsets[illusionSpecies][j].move != MOVE_UNAVAILABLE) + if (learnset[j].move != MOVE_UNAVAILABLE) continue; // The used move can be learned from Tm/Hm or Move Tutors. @@ -651,10 +598,8 @@ bool32 IsBattlerTrapped(u32 battler, bool32 checkSwitch) { u32 holdEffect = AI_DATA->holdEffects[battler]; -#if B_GHOSTS_ESCAPE >= GEN_6 - if (IS_BATTLER_OF_TYPE(battler, TYPE_GHOST)) + if (B_GHOSTS_ESCAPE >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST)) return FALSE; -#endif if (checkSwitch && holdEffect == HOLD_EFFECT_SHED_SHELL) return FALSE; else if (!checkSwitch && GetBattlerAbility(battler) == ABILITY_RUN_AWAY) @@ -702,9 +647,7 @@ bool32 IsTruantMonVulnerable(u32 battlerAI, u32 opposingBattler) bool32 IsAffectedByPowder(u32 battler, u32 ability, u32 holdEffect) { if (ability == ABILITY_OVERCOAT - #if B_POWDER_GRASS >= GEN_6 - || IS_BATTLER_OF_TYPE(battler, TYPE_GRASS) - #endif + || (B_POWDER_GRASS >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GRASS)) || holdEffect == HOLD_EFFECT_SAFETY_GOGGLES) return FALSE; return TRUE; @@ -741,7 +684,14 @@ s32 AI_CalcDamageSaveBattlers(u32 move, u32 battlerAtk, u32 battlerDef, u8 *type { SaveBattlerData(battlerAtk); SaveBattlerData(battlerDef); - AI_CalcDamage(move, battlerAtk, battlerDef, typeEffectiveness, considerZPower, AI_GetWeather(AI_DATA)); + return AI_CalcDamage(move, battlerAtk, battlerDef, typeEffectiveness, considerZPower, AI_GetWeather(AI_DATA)); +} + +static inline s32 LowestRollDmg(s32 dmg) +{ + dmg *= 100 - 15; + dmg /= 100; + return dmg; } s32 AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectiveness, bool32 considerZPower, u32 weather) @@ -802,11 +752,11 @@ s32 AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectivenes aiData->abilities[battlerAtk], aiData->abilities[battlerDef]); u32 critChance = GetCritHitChance(critChanceIndex); // With critChance getting closer to 1, dmg gets closer to critDmg. - dmg = (critDmg + normalDmg * (critChance - 1)) / (critChance); + dmg = LowestRollDmg((critDmg + normalDmg * (critChance - 1)) / (critChance)); } else { - dmg = normalDmg; + dmg = LowestRollDmg(normalDmg); } if (!gBattleStruct->zmove.active) @@ -839,8 +789,8 @@ s32 AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectivenes case EFFECT_FINAL_GAMBIT: dmg = gBattleMons[battlerAtk].hp; break; - #if B_BEAT_UP >= GEN_5 case EFFECT_BEAT_UP: + if (B_BEAT_UP >= GEN_5) { u32 partyCount = CalculatePartyCount(GetBattlerParty(battlerAtk)); u32 i; @@ -852,7 +802,6 @@ s32 AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectivenes gBattleStruct->beatUpSlot = 0; } break; - #endif } // Handle other multi-strike moves @@ -881,14 +830,175 @@ s32 AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u8 *typeEffectivenes return dmg; } -// Checks if one of the moves has side effects or perks -static u32 WhichMoveBetter(u32 move1, u32 move2) +bool32 AI_IsDamagedByRecoil(u32 battler) { - s32 defAbility = AI_DATA->abilities[gBattlerTarget]; + u32 ability = AI_DATA->abilities[battler]; + if (ability == ABILITY_MAGIC_GUARD || ability == ABILITY_ROCK_HEAD) + return FALSE; + return TRUE; +} + +// Decide whether move having an additional effect for . +static bool32 AI_IsMoveEffectInPlus(u32 battlerAtk, u32 battlerDef, u32 move, s32 noOfHitsToKo) +{ + u32 i; + u32 abilityDef = AI_DATA->abilities[battlerDef]; + u32 abilityAtk = AI_DATA->abilities[battlerAtk]; + + switch (gBattleMoves[move].effect) + { + case EFFECT_HIT: + default: + return FALSE; + case EFFECT_PARALYZE_HIT: + if (AI_CanParalyze(battlerAtk, battlerDef, abilityDef, move, MOVE_NONE)) + return TRUE; + break; + case EFFECT_BURN_HIT: + if (AI_CanBurn(battlerAtk, battlerDef, abilityDef, BATTLE_PARTNER(battlerAtk), move, MOVE_NONE)) + return TRUE; + break; + case EFFECT_POISON_HIT: + case EFFECT_POISON_FANG: + if (AI_CanPoison(battlerAtk, battlerDef, abilityDef, move, MOVE_NONE)) + return TRUE; + break; + case EFFECT_FREEZE_HIT: + if (AI_CanGetFrostbite(battlerDef, abilityDef)) + return TRUE; + break; + case EFFECT_CONFUSE_HIT: + if (AI_CanConfuse(battlerAtk, battlerDef, abilityDef, BATTLE_PARTNER(battlerAtk), move, MOVE_NONE)) + return TRUE; + break; + case EFFECT_FLINCH_STATUS: + switch (gBattleMoves[move].argument) + { + case STATUS1_PARALYSIS: + if (AI_CanParalyze(battlerAtk, battlerDef, abilityDef, move, MOVE_NONE)) + return TRUE; + break; + case STATUS1_BURN: + if (AI_CanBurn(battlerAtk, battlerDef, abilityDef, BATTLE_PARTNER(battlerAtk), move, MOVE_NONE)) + return TRUE; + break; + case STATUS1_FREEZE: + if (AI_CanGetFrostbite(battlerDef, abilityDef)) + return TRUE; + break; + } + // fallthrough + case EFFECT_FLINCH_HIT: + if (ShouldTryToFlinch(battlerAtk, battlerDef, abilityAtk, abilityDef, move)) + return TRUE; + break; + case EFFECT_HIT_ESCAPE: + if (CountUsablePartyMons(battlerAtk) != 0 && ShouldPivot(battlerAtk, battlerDef, abilityDef, move, AI_THINKING_STRUCT->movesetIndex)) + return TRUE; + break; + case EFFECT_ATTACK_UP_HIT: + case EFFECT_FELL_STINGER: + if (BattlerStatCanRise(battlerAtk, abilityAtk, STAT_ATK)) + return TRUE; + break; + case EFFECT_DEFENSE_UP2_HIT: + case EFFECT_DEFENSE_UP_HIT: + if (BattlerStatCanRise(battlerAtk, abilityAtk, STAT_DEF)) + return TRUE; + break; + case EFFECT_SPEED_UP_HIT: + if (BattlerStatCanRise(battlerAtk, abilityAtk, STAT_SPEED)) + return TRUE; + break; + case EFFECT_SPECIAL_ATTACK_UP_HIT: + if (BattlerStatCanRise(battlerAtk, abilityAtk, STAT_SPATK)) + return TRUE; + break; + case EFFECT_ATTACK_DOWN_HIT: + if (ShouldLowerStat(battlerDef, abilityDef, STAT_ATK) && abilityDef != ABILITY_HYPER_CUTTER && noOfHitsToKo != 1) + return TRUE; + break; + case EFFECT_DEFENSE_DOWN_HIT: + if (ShouldLowerStat(battlerDef, abilityDef, STAT_DEF) && noOfHitsToKo != 1) + return TRUE; + break; + case EFFECT_SPEED_DOWN_HIT: + if (ShouldLowerStat(battlerDef, abilityDef, STAT_SPEED) && noOfHitsToKo != 1) + return TRUE; + break; + case EFFECT_SPECIAL_ATTACK_DOWN_HIT: + if (ShouldLowerStat(battlerDef, abilityDef, STAT_SPATK) && noOfHitsToKo != 1) + return TRUE; + break; + case EFFECT_SPECIAL_DEFENSE_DOWN_HIT: + case EFFECT_SPECIAL_DEFENSE_DOWN_HIT_2: + if (ShouldLowerStat(battlerDef, abilityDef, STAT_SPDEF) && noOfHitsToKo != 1) + return TRUE; + break; + case EFFECT_ACCURACY_DOWN_HIT: + if (ShouldLowerStat(battlerDef, abilityDef, STAT_ACC) && noOfHitsToKo != 1) + return TRUE; + break; + case EFFECT_EVASION_DOWN_HIT: + if (ShouldLowerStat(battlerDef, abilityDef, STAT_EVASION) && noOfHitsToKo != 1) + return TRUE; + break; + case EFFECT_ALL_STATS_UP_HIT: + for (i = STAT_ATK; i <= NUM_STATS; i++) + { + if (BattlerStatCanRise(battlerAtk, abilityAtk, i)) + return TRUE; + } + break; + } + + return FALSE; +} + +static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s32 noOfHitsToKo) +{ + u32 abilityAtk = AI_DATA->abilities[battlerAtk]; + u32 abilityDef = AI_DATA->abilities[battlerDef]; + + switch (gBattleMoves[move].effect) + { + case EFFECT_RECHARGE: + case EFFECT_SUPERPOWER: + case EFFECT_OVERHEAT: + case EFFECT_MAKE_IT_RAIN: + case EFFECT_MIND_BLOWN: + case EFFECT_STEEL_BEAM: + return TRUE; + case EFFECT_RECOIL_25: + case EFFECT_RECOIL_IF_MISS: + case EFFECT_RECOIL_50: + case EFFECT_RECOIL_33: + case EFFECT_RECOIL_33_STATUS: + if (AI_IsDamagedByRecoil(battlerAtk)) + return TRUE; + break; + case EFFECT_SPEED_DOWN_HIT: + case EFFECT_ATTACK_DOWN_HIT: + case EFFECT_DEFENSE_DOWN_HIT: + case EFFECT_SPECIAL_ATTACK_DOWN_HIT: + case EFFECT_SPECIAL_DEFENSE_DOWN_HIT: + case EFFECT_SPECIAL_DEFENSE_DOWN_HIT_2: + if (noOfHitsToKo != 1 && abilityDef == ABILITY_CONTRARY && !IsMoldBreakerTypeAbility(abilityAtk)) + return TRUE; + break; + } + return FALSE; +} + +// Checks if one of the moves has side effects or perks, assuming equal dmg or equal no of hits to KO +u32 AI_WhichMoveBetter(u32 move1, u32 move2, u32 battlerAtk, u32 battlerDef, s32 noOfHitsToKo) +{ + bool32 effect1, effect2; + s32 defAbility = AI_DATA->abilities[battlerDef]; // Check if physical moves hurt. - if (AI_DATA->holdEffects[sBattler_AI] != HOLD_EFFECT_PROTECTIVE_PADS - && (BATTLE_HISTORY->itemEffects[gBattlerTarget] == HOLD_EFFECT_ROCKY_HELMET + if (AI_DATA->holdEffects[battlerAtk] != HOLD_EFFECT_PROTECTIVE_PADS + && (AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_ROCKY_HELMET || defAbility == ABILITY_IRON_BARBS || defAbility == ABILITY_ROUGH_SKIN)) { if (IS_MOVE_PHYSICAL(move1) && !IS_MOVE_PHYSICAL(move2)) @@ -896,24 +1006,20 @@ static u32 WhichMoveBetter(u32 move1, u32 move2) if (IS_MOVE_PHYSICAL(move2) && !IS_MOVE_PHYSICAL(move1)) return 0; } - // Check recoil - if (GetBattlerAbility(sBattler_AI) != ABILITY_ROCK_HEAD) - { - if (IS_MOVE_RECOIL(move1) && !IS_MOVE_RECOIL(move2) && gBattleMoves[move2].effect != EFFECT_RECHARGE) - return 1; - if (IS_MOVE_RECOIL(move2) && !IS_MOVE_RECOIL(move1) && gBattleMoves[move1].effect != EFFECT_RECHARGE) - return 0; - } - // Check recharge - if (gBattleMoves[move1].effect == EFFECT_RECHARGE && gBattleMoves[move2].effect != EFFECT_RECHARGE) - return 1; - if (gBattleMoves[move2].effect == EFFECT_RECHARGE && gBattleMoves[move1].effect != EFFECT_RECHARGE) + // Check additional effects. + effect1 = AI_IsMoveEffectInMinus(battlerAtk, battlerDef, move1, noOfHitsToKo); + effect2 = AI_IsMoveEffectInMinus(battlerAtk, battlerDef, move2, noOfHitsToKo); + if (effect2 && !effect1) return 0; - // Check additional effect. - if (gBattleMoves[move1].effect == 0 && gBattleMoves[move2].effect != 0) + if (effect1 && !effect2) return 1; - if (gBattleMoves[move2].effect == 0 && gBattleMoves[move1].effect != 0) + + effect1 = AI_IsMoveEffectInPlus(battlerAtk, battlerDef, move1, noOfHitsToKo); + effect2 = AI_IsMoveEffectInPlus(battlerAtk, battlerDef, move2, noOfHitsToKo); + if (effect2 && !effect1) + return 1; + if (effect1 && !effect2) return 0; return 2; @@ -921,94 +1027,19 @@ static u32 WhichMoveBetter(u32 move1, u32 move2) u32 GetNoOfHitsToKO(u32 dmg, s32 hp) { + if (dmg == 0) + return 0; return hp / (dmg + 1) + 1; } -void SetMoveDamageResult(u32 battlerAtk, u16 *moves) +u32 GetNoOfHitsToKOBattlerDmg(u32 dmg, u32 battlerDef) { - s32 i, j, battlerDef, bestId, currId, hp, result; - s32 moveDmgs[MAX_MON_MOVES]; - bool32 isNotConsidered[MAX_MON_MOVES]; - - for (i = 0; i < MAX_MON_MOVES; i++) - { - u32 move = moves[i]; - for (j = 0; sIgnoredPowerfulMoveEffects[j] != IGNORED_MOVES_END; j++) - { - if (gBattleMoves[move].effect == sIgnoredPowerfulMoveEffects[j]) - break; - } - if (move == 0 || move == 0xFFFF || gBattleMoves[move].power == 0 || sIgnoredPowerfulMoveEffects[j] != IGNORED_MOVES_END) - isNotConsidered[i] = TRUE; - else - isNotConsidered[i] = FALSE; - - for (battlerDef = 0; battlerDef < MAX_BATTLERS_COUNT; battlerDef++) - { - if (battlerDef == battlerAtk) - continue; - - if (isNotConsidered[i]) - { - AI_DATA->moveDmgResult[battlerAtk][battlerDef][i] = MOVE_POWER_OTHER; // Move has a power of 0/1, or is in the group sIgnoredPowerfulMoveEffects - } - else - { - // Considered move has power and is not in sIgnoredPowerfulMoveEffects - // Check all other moves and calculate their power - for (j = 0; j < MAX_MON_MOVES; j++) - { - if (!isNotConsidered[j]) - moveDmgs[j] = AI_DATA->simulatedDmg[battlerAtk][battlerDef][j]; - else - moveDmgs[j] = 0; - } - - hp = gBattleMons[battlerDef].hp + (20 * gBattleMons[battlerDef].hp / 100); // 20 % add to make sure the battler is always fainted - // If a move can faint battler, it doesn't matter how much damage it does - for (j = 0; j < MAX_MON_MOVES; j++) - { - if (moveDmgs[j] > hp) - moveDmgs[j] = hp; - } - - for (bestId = 0, j = 1; j < MAX_MON_MOVES; j++) - { - if (moveDmgs[j] > moveDmgs[bestId]) - bestId = j; - if (moveDmgs[j] == moveDmgs[bestId]) - { - switch (WhichMoveBetter(gBattleMons[battlerAtk].moves[bestId], gBattleMons[battlerAtk].moves[j])) - { - case 2: - if (Random() & 1) - break; - case 1: - bestId = j; - break; - } - } - } - - currId = i; - if (currId == bestId) - result = MOVE_POWER_BEST; - else if ((moveDmgs[currId] >= hp || moveDmgs[bestId] < hp) // If current move can faint as well, or if neither can - && GetNoOfHitsToKO(moveDmgs[currId], hp) - GetNoOfHitsToKO(moveDmgs[bestId], hp) <= 2 // Consider a move weak if it needs to be used at least 2 times more to faint the target, compared to the best move. - && WhichMoveBetter(gBattleMons[battlerAtk].moves[bestId], gBattleMons[battlerAtk].moves[currId]) != 0) - result = MOVE_POWER_GOOD; - else - result = MOVE_POWER_WEAK; - - AI_DATA->moveDmgResult[battlerAtk][battlerDef][i] = result; - } - } - } + return GetNoOfHitsToKO(dmg, gBattleMons[battlerDef].hp); } -u32 GetMoveDamageResult(u32 battlerAtk, u32 battlerDef, u32 moveIndex) +u32 GetNoOfHitsToKOBattler(u32 battlerAtk, u32 battlerDef, u32 moveIndex) { - return AI_DATA->moveDmgResult[battlerAtk][battlerDef][moveIndex]; + return GetNoOfHitsToKOBattlerDmg(AI_DATA->simulatedDmg[battlerAtk][battlerDef][moveIndex], battlerDef); } u32 GetCurrDamageHpPercent(u32 battlerAtk, u32 battlerDef) @@ -1079,7 +1110,6 @@ u32 AI_WhoStrikesFirst(u32 battlerAI, u32 battler2, u32 moveConsidered) { u32 fasterAI = 0, fasterPlayer = 0, i; s8 prioAI = 0; - s8 prioPlayer = 0; s8 prioBattler2 = 0; u16 *battler2Moves = GetMovesArray(battler2); @@ -1125,7 +1155,7 @@ u32 AI_WhoStrikesFirst(u32 battlerAI, u32 battler2, u32 moveConsidered) // Check if target has means to faint ai mon. bool32 CanTargetFaintAi(u32 battlerDef, u32 battlerAtk) { - s32 i, dmg; + s32 i; u32 unusable = AI_DATA->moveLimitations[battlerDef]; u16 *moves = GetMovesArray(battlerDef); @@ -1216,7 +1246,7 @@ bool32 AI_IsAbilityOnSide(u32 battlerId, u32 ability) } // does NOT include ability suppression checks -s32 AI_GetAbility(u32 battlerId) +s32 AI_DecideKnownAbilityForTurn(u32 battlerId) { u32 knownAbility = GetBattlerAbility(battlerId); @@ -1254,7 +1284,7 @@ s32 AI_GetAbility(u32 battlerId) return ABILITY_NONE; // Unknown. } -u32 AI_GetHoldEffect(u32 battlerId) +u32 AI_DecideHoldEffectForTurn(u32 battlerId) { u32 holdEffect; @@ -1314,20 +1344,10 @@ bool32 AI_IsBattlerGrounded(u32 battlerId) bool32 DoesBattlerIgnoreAbilityChecks(u32 atkAbility, u32 move) { - u32 i; - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_NEGATE_UNAWARE) return FALSE; // AI handicap flag: doesn't understand ability suppression concept - for (i = 0; i < ARRAY_COUNT(sIgnoreMoldBreakerMoves); i++) - { - if (move == sIgnoreMoldBreakerMoves[i]) - return TRUE; - } - - if (atkAbility == ABILITY_MOLD_BREAKER - || atkAbility == ABILITY_TERAVOLT - || atkAbility == ABILITY_TURBOBLAZE) + if (IsMoldBreakerTypeAbility(atkAbility) || gBattleMoves[move].ignoresTargetAbility) return TRUE; return FALSE; @@ -1352,8 +1372,6 @@ u32 AI_GetWeather(struct AiLogicData *aiData) u32 AI_GetBattlerMoveTargetType(u32 battlerId, u32 move) { - u32 target; - if (gBattleMoves[move].effect == EFFECT_EXPANDING_FORCE && AI_IsTerrainAffected(battlerId, STATUS_FIELD_PSYCHIC_TERRAIN)) return MOVE_TARGET_BOTH; else @@ -1362,8 +1380,6 @@ u32 AI_GetBattlerMoveTargetType(u32 battlerId, u32 move) bool32 IsAromaVeilProtectedMove(u32 move) { - u32 i; - switch (move) { case MOVE_DISABLE: @@ -1408,30 +1424,6 @@ bool32 IsConfusionMoveEffect(u32 moveEffect) } } -bool32 IsStatLoweringMoveEffect(u32 moveEffect) -{ - switch (moveEffect) - { - case EFFECT_ATTACK_DOWN: - case EFFECT_DEFENSE_DOWN: - case EFFECT_SPEED_DOWN: - case EFFECT_SPECIAL_ATTACK_DOWN: - case EFFECT_SPECIAL_DEFENSE_DOWN: - case EFFECT_ACCURACY_DOWN: - case EFFECT_EVASION_DOWN: - case EFFECT_ATTACK_DOWN_2: - case EFFECT_DEFENSE_DOWN_2: - case EFFECT_SPEED_DOWN_2: - case EFFECT_SPECIAL_ATTACK_DOWN_2: - case EFFECT_SPECIAL_DEFENSE_DOWN_2: - case EFFECT_ACCURACY_DOWN_2: - case EFFECT_EVASION_DOWN_2: - return TRUE; - default: - return FALSE; - } -} - bool32 IsHazardMoveEffect(u32 moveEffect) { switch (moveEffect) @@ -1459,12 +1451,6 @@ bool32 IsMoveRedirectionPrevented(u32 move, u32 atkAbility) return FALSE; } -u32 AI_GetMoveAccuracy(u32 battlerAtk, u32 battlerDef, u32 move) -{ - return GetTotalAccuracy(battlerAtk, battlerDef, move, AI_DATA->abilities[battlerAtk], AI_DATA->abilities[battlerDef], - AI_DATA->holdEffects[battlerAtk], AI_DATA->holdEffects[battlerDef]); -} - bool32 IsSemiInvulnerable(u32 battlerDef, u32 move) { if (gStatuses3[battlerDef] & STATUS3_PHANTOM_FORCE) @@ -1494,10 +1480,8 @@ bool32 IsMoveEncouragedToHit(u32 battlerAtk, u32 battlerDef, u32 move) if (AI_DATA->abilities[battlerDef] == ABILITY_NO_GUARD || AI_DATA->abilities[battlerAtk] == ABILITY_NO_GUARD) return TRUE; -#if B_TOXIC_NEVER_MISS >= GEN_6 - if (gBattleMoves[move].effect == EFFECT_TOXIC && IS_BATTLER_OF_TYPE(battlerAtk, TYPE_POISON)) + if (B_TOXIC_NEVER_MISS >= GEN_6 && gBattleMoves[move].effect == EFFECT_TOXIC && IS_BATTLER_OF_TYPE(battlerAtk, TYPE_POISON)) return TRUE; -#endif // discouraged from hitting weather = AI_GetWeather(AI_DATA); @@ -1509,9 +1493,7 @@ bool32 IsMoveEncouragedToHit(u32 battlerAtk, u32 battlerDef, u32 move) if ((((weather & B_WEATHER_RAIN) && (gBattleMoves[move].effect == EFFECT_THUNDER || gBattleMoves[move].effect == EFFECT_HURRICANE)) || (((weather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) && move == MOVE_BLIZZARD))) || (gBattleMoves[move].effect == EFFECT_VITAL_THROW) - #if B_MINIMIZE_DMG_ACC >= GEN_6 - || ((gStatuses3[battlerDef] & STATUS3_MINIMIZED) && gBattleMoves[move].minimizeDoubleDamage) - #endif + || (B_MINIMIZE_DMG_ACC >= GEN_6 && (gStatuses3[battlerDef] & STATUS3_MINIMIZED) && gBattleMoves[move].minimizeDoubleDamage) || (gBattleMoves[move].accuracy == 0)) { return TRUE; @@ -1523,7 +1505,7 @@ bool32 IsMoveEncouragedToHit(u32 battlerAtk, u32 battlerDef, u32 move) bool32 ShouldTryOHKO(u32 battlerAtk, u32 battlerDef, u32 atkAbility, u32 defAbility, u32 move) { u32 holdEffect = AI_DATA->holdEffects[battlerDef]; - u32 accuracy = AI_GetMoveAccuracy(battlerAtk, battlerDef, move); + u32 accuracy = AI_DATA->moveAccuracy[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex]; gPotentialItemEffectBattler = battlerDef; if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < AI_DATA->holdEffectParams[battlerDef]) @@ -1544,10 +1526,8 @@ bool32 ShouldTryOHKO(u32 battlerAtk, u32 battlerDef, u32 atkAbility, u32 defAbil else // test the odds { u32 odds = accuracy + (gBattleMons[battlerAtk].level - gBattleMons[battlerDef].level); - #if B_SHEER_COLD_ACC >= GEN_7 - if (move == MOVE_SHEER_COLD && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_ICE)) + if (B_SHEER_COLD_ACC >= GEN_7 && move == MOVE_SHEER_COLD && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_ICE)) odds -= 10; - #endif if (Random() % 100 + 1 < odds && gBattleMons[battlerAtk].level >= gBattleMons[battlerDef].level) return TRUE; } @@ -1671,49 +1651,46 @@ bool32 ShouldSetSnow(u32 battler, u32 ability, u32 holdEffect) void ProtectChecks(u32 battlerAtk, u32 battlerDef, u32 move, u32 predictedMove, s32 *score) { // TODO more sophisticated logic - u32 predictedEffect = gBattleMoves[predictedMove].effect; - u32 defAbility = AI_DATA->abilities[battlerDef]; u32 uses = gDisableStructs[battlerAtk].protectUses; /*if (GetMoveResultFlags(predictedMove) & (MOVE_RESULT_NO_EFFECT | MOVE_RESULT_MISSED)) { - (*score) -= 5; + ADJUST_SCORE_PTR(-5); return; }*/ if (uses == 0) { if (predictedMove != MOVE_NONE && predictedMove != 0xFFFF && !IS_MOVE_STATUS(predictedMove)) - (*score) += 2; + ADJUST_SCORE_PTR(2); else if (Random() % 256 < 100) - (*score)++; + ADJUST_SCORE_PTR(1); } else { if (IsDoubleBattle()) - (*score) -= 2 * min(uses, 3); + ADJUST_SCORE_PTR(-(2 * min(uses, 3))); else - (*score) -= min(uses, 3); + ADJUST_SCORE_PTR(-(min(uses, 3))); } if (gBattleMons[battlerAtk].status1 & (STATUS1_PSN_ANY | STATUS1_BURN | STATUS1_FROSTBITE) || gBattleMons[battlerAtk].status2 & (STATUS2_CURSED | STATUS2_INFATUATION) || gStatuses3[battlerAtk] & (STATUS3_PERISH_SONG | STATUS3_LEECHSEED | STATUS3_YAWN)) { - (*score)--; + ADJUST_SCORE_PTR(-1); } if (gBattleMons[battlerDef].status1 & STATUS1_TOXIC_POISON || gBattleMons[battlerDef].status2 & (STATUS2_CURSED | STATUS2_INFATUATION) || gStatuses3[battlerDef] & (STATUS3_PERISH_SONG | STATUS3_LEECHSEED | STATUS3_YAWN)) - (*score) += 2; + ADJUST_SCORE_PTR(2); } // stat stages bool32 ShouldLowerStat(u32 battler, u32 battlerAbility, u32 stat) { - if ((gBattleMons[battler].statStages[stat] > MIN_STAT_STAGE && battlerAbility != ABILITY_CONTRARY) - || (battlerAbility == ABILITY_CONTRARY && gBattleMons[battler].statStages[stat] < MAX_STAT_STAGE)) + if (gBattleMons[battler].statStages[stat] > MIN_STAT_STAGE && battlerAbility != ABILITY_CONTRARY) { if (AI_DATA->holdEffects[battler] == HOLD_EFFECT_CLEAR_AMULET || battlerAbility == ABILITY_CLEAR_BODY @@ -1721,6 +1698,14 @@ bool32 ShouldLowerStat(u32 battler, u32 battlerAbility, u32 stat) || battlerAbility == ABILITY_FULL_METAL_BODY) return FALSE; + // If AI is faster and doesn't have any mons left, lowering speed doesn't give any + if (stat == STAT_SPEED) + { + if (AI_WhoStrikesFirst(sBattler_AI, battler, AI_THINKING_STRUCT->moveConsidered) == AI_IS_FASTER + && CountUsablePartyMons(sBattler_AI) == 0 + && !HasMoveEffect(sBattler_AI, EFFECT_ELECTRO_BALL)) + return FALSE; + } return TRUE; } @@ -1873,6 +1858,7 @@ bool32 ShouldLowerAccuracy(u32 battlerAtk, u32 battlerDef, u32 defAbility) && defAbility != ABILITY_WHITE_SMOKE && defAbility != ABILITY_FULL_METAL_BODY && defAbility != ABILITY_KEEN_EYE + && (B_ILLUMINATE_EFFECT >= GEN_9 && defAbility != ABILITY_ILLUMINATE) && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) return TRUE; return FALSE; @@ -1939,7 +1925,6 @@ bool32 HasMoveWithSplit(u32 battler, u32 split) if (moves[i] != MOVE_NONE && moves[i] != MOVE_UNAVAILABLE && GetBattleMoveSplit(moves[i]) == split) return TRUE; } - return FALSE; } @@ -2004,7 +1989,7 @@ bool32 HasMoveWithLowAccuracy(u32 battlerAtk, u32 battlerDef, u32 accCheck, bool || AI_GetBattlerMoveTargetType(battlerAtk, moves[i]) & (MOVE_TARGET_USER | MOVE_TARGET_OPPONENTS_FIELD)) continue; - if (AI_GetMoveAccuracy(battlerAtk, battlerDef, moves[i]) <= accCheck) + if (AI_DATA->moveAccuracy[battlerAtk][battlerDef][i] <= accCheck) return TRUE; } } @@ -2025,7 +2010,7 @@ bool32 HasSleepMoveWithLowAccuracy(u32 battlerAtk, u32 battlerDef) if (!(gBitTable[i] & moveLimitations)) { if (gBattleMoves[moves[i]].effect == EFFECT_SLEEP - && AI_GetMoveAccuracy(battlerAtk, battlerDef, moves[i]) < 85) + && AI_DATA->moveAccuracy[battlerAtk][battlerDef][i] < 85) return TRUE; } } @@ -2048,6 +2033,8 @@ bool32 IsHealingMoveEffect(u32 effect) case EFFECT_HEAL_PULSE: case EFFECT_REST: case EFFECT_JUNGLE_HEALING: + case EFFECT_ABSORB: + case EFFECT_DREAM_EATER: return TRUE; default: return FALSE; @@ -2155,9 +2142,6 @@ bool32 IsStatRaisingEffect(u32 effect) case EFFECT_EVASION_UP_2: case EFFECT_MINIMIZE: case EFFECT_DEFENSE_CURL: - #if B_CHARGE_SPDEF_RAISE >= GEN_5 - case EFFECT_CHARGE: - #endif case EFFECT_CALM_MIND: case EFFECT_COSMIC_POWER: case EFFECT_DRAGON_DANCE: @@ -2174,6 +2158,8 @@ bool32 IsStatRaisingEffect(u32 effect) case EFFECT_STOCKPILE: case EFFECT_VICTORY_DANCE: return TRUE; + case EFFECT_CHARGE: + return B_CHARGE_SPDEF_RAISE >= GEN_5; default: return FALSE; } @@ -2236,6 +2222,11 @@ bool32 HasDamagingMoveOfType(u32 battlerId, u32 type) return FALSE; } +bool32 HasSubstituteIgnoringMove(u32 battler) +{ + CHECK_MOVE_FLAG(ignoresSubstitute); +} + bool32 HasSoundMove(u32 battler) { CHECK_MOVE_FLAG(soundMove); @@ -2268,26 +2259,22 @@ bool32 IsEncoreEncouragedEffect(u32 moveEffect) return FALSE; } -bool32 MoveRequiresRecharging(u32 move) +bool32 IsChargingMove(u32 battlerAtk, u32 effect) { - u32 i; - for (i = 0; i < ARRAY_COUNT(sRechargeMoves); i++) + switch (effect) { - if (move == sRechargeMoves[i]) - return TRUE; + case EFFECT_SOLAR_BEAM: + if (AI_GetWeather(AI_DATA) & B_WEATHER_SUN) + return FALSE; + case EFFECT_SKULL_BASH: + case EFFECT_METEOR_BEAM: + case EFFECT_TWO_TURNS_ATTACK: + if (AI_DATA->holdEffects[battlerAtk] == HOLD_EFFECT_POWER_HERB) + return FALSE; + return TRUE; + default: + return FALSE; } - return FALSE; -} - -bool32 MoveCallsOtherMove(u32 move) -{ - u32 i; - for (i = 0; i < ARRAY_COUNT(sOtherMoveCallingMoves); i++) - { - if (move == sOtherMoveCallingMoves[i]) - return TRUE; - } - return FALSE; } static u32 GetLeechSeedDamage(u32 battlerId) @@ -2296,7 +2283,7 @@ static u32 GetLeechSeedDamage(u32 battlerId) if ((gStatuses3[battlerId] & STATUS3_LEECHSEED) && gBattleMons[gStatuses3[battlerId] & STATUS3_LEECHSEED_BATTLER].hp != 0) { - damage = gBattleMons[battlerId].maxHP / 8; + damage = GetNonDynamaxMaxHP(battlerId) / 8; if (damage == 0) damage = 1; } @@ -2308,7 +2295,7 @@ static u32 GetNightmareDamage(u32 battlerId) u32 damage = 0; if ((gBattleMons[battlerId].status2 & STATUS2_NIGHTMARE) && gBattleMons[battlerId].status1 & STATUS1_SLEEP) { - damage = gBattleMons[battlerId].maxHP / 4; + damage = GetNonDynamaxMaxHP(battlerId) / 4; if (damage == 0) damage = 1; } @@ -2320,7 +2307,7 @@ static u32 GetCurseDamage(u32 battlerId) u32 damage = 0; if (gBattleMons[battlerId].status2 & STATUS2_CURSED) { - damage = gBattleMons[battlerId].maxHP / 4; + damage = GetNonDynamaxMaxHP(battlerId) / 4; if (damage == 0) damage = 1; } @@ -2335,15 +2322,10 @@ static u32 GetTrapDamage(u32 battlerId) if (gBattleMons[battlerId].status2 & STATUS2_WRAPPED) { if (holdEffect == HOLD_EFFECT_BINDING_BAND) - #if B_BINDING_DAMAGE >= GEN_6 - damage = gBattleMons[battlerId].maxHP / 6; + damage = GetNonDynamaxMaxHP(battlerId) / (B_BINDING_DAMAGE >= GEN_6 ? 6 : 8); else - damage = gBattleMons[battlerId].maxHP / 8; - #else - damage = gBattleMons[battlerId].maxHP / 8; - else - damage = gBattleMons[battlerId].maxHP / 16; - #endif + damage = GetNonDynamaxMaxHP(battlerId) / (B_BINDING_DAMAGE >= GEN_6 ? 8 : 16); + if (damage == 0) damage = 1; } @@ -2413,7 +2395,7 @@ static u32 GetWeatherDamage(u32 battlerId) && !(gStatuses3[battlerId] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) && holdEffect != HOLD_EFFECT_SAFETY_GOGGLES) { - damage = gBattleMons[battlerId].maxHP / 16; + damage = GetNonDynamaxMaxHP(battlerId) / 16; if (damage == 0) damage = 1; } @@ -2424,7 +2406,7 @@ static u32 GetWeatherDamage(u32 battlerId) && !(gStatuses3[battlerId] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) && holdEffect != HOLD_EFFECT_SAFETY_GOGGLES) { - damage = gBattleMons[battlerId].maxHP / 16; + damage = GetNonDynamaxMaxHP(battlerId) / 16; if (damage == 0) damage = 1; } @@ -2583,9 +2565,7 @@ bool32 ShouldPivot(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u32 if (!IS_MOVE_STATUS(move) && (shouldSwitch || (AtMaxHp(battlerDef) && (AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_FOCUS_SASH - #if B_STURDY >= GEN_5 - || defAbility == ABILITY_STURDY - #endif + || (B_STURDY >= GEN_5 && defAbility == ABILITY_STURDY) || defAbility == ABILITY_MULTISCALE || defAbility == ABILITY_SHADOW_SHIELD)))) return PIVOT; // pivot to break sash/sturdy/multiscale @@ -2593,9 +2573,7 @@ bool32 ShouldPivot(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u32 else if (!hasStatBoost) { if (!IS_MOVE_STATUS(move) && (AtMaxHp(battlerDef) && (AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_FOCUS_SASH - #if B_STURDY >= GEN_5 - || (defAbility == ABILITY_STURDY) - #endif + || (B_STURDY >= GEN_5 && defAbility == ABILITY_STURDY) || defAbility == ABILITY_MULTISCALE || defAbility == ABILITY_SHADOW_SHIELD))) return PIVOT; // pivot to break sash/sturdy/multiscale @@ -2736,9 +2714,7 @@ bool32 CanKnockOffItem(u32 battler, u32 item) | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_SECRET_BASE - #if B_TRAINERS_KNOCK_OFF_ITEMS == TRUE - | BATTLE_TYPE_TRAINER - #endif + | (B_TRAINERS_KNOCK_OFF_ITEMS == TRUE ? BATTLE_TYPE_TRAINER : 0) )) && GetBattlerSide(battler) == B_SIDE_PLAYER) return FALSE; @@ -3188,7 +3164,7 @@ bool32 DoesPartnerHaveSameMoveEffect(u32 battlerAtkPartner, u32 battlerDef, u32 return FALSE; if (gBattleMoves[move].effect == gBattleMoves[partnerMove].effect - && gChosenMoveByBattler[battlerAtkPartner] != MOVE_NONE + && partnerMove != MOVE_NONE && gBattleStruct->moveTarget[battlerAtkPartner] == battlerDef) { return TRUE; @@ -3203,7 +3179,7 @@ bool32 PartnerHasSameMoveEffectWithoutTarget(u32 battlerAtkPartner, u32 move, u3 return FALSE; if (gBattleMoves[move].effect == gBattleMoves[partnerMove].effect - && gChosenMoveByBattler[battlerAtkPartner] != MOVE_NONE) + && partnerMove != MOVE_NONE) return TRUE; return FALSE; } @@ -3214,7 +3190,7 @@ bool32 PartnerMoveEffectIsStatusSameTarget(u32 battlerAtkPartner, u32 battlerDef if (!IsDoubleBattle()) return FALSE; - if (gChosenMoveByBattler[battlerAtkPartner] != MOVE_NONE + if (partnerMove != MOVE_NONE && gBattleStruct->moveTarget[battlerAtkPartner] == battlerDef && (gBattleMoves[partnerMove].effect == EFFECT_SLEEP || gBattleMoves[partnerMove].effect == EFFECT_POISON @@ -3226,20 +3202,15 @@ bool32 PartnerMoveEffectIsStatusSameTarget(u32 battlerAtkPartner, u32 battlerDef return FALSE; } -//PARTNER_MOVE_EFFECT_IS_WEATHER -bool32 PartnerMoveEffectIsWeather(u32 battlerAtkPartner, u32 partnerMove) +bool32 IsMoveEffectWeather(u32 move) { - if (!IsDoubleBattle()) - return FALSE; - - if (gChosenMoveByBattler[battlerAtkPartner] != MOVE_NONE - && (gBattleMoves[partnerMove].effect == EFFECT_SUNNY_DAY - || gBattleMoves[partnerMove].effect == EFFECT_RAIN_DANCE - || gBattleMoves[partnerMove].effect == EFFECT_SANDSTORM - || gBattleMoves[partnerMove].effect == EFFECT_HAIL - || gBattleMoves[partnerMove].effect == EFFECT_SNOWSCAPE)) + if (move != MOVE_NONE + && (gBattleMoves[move].effect == EFFECT_SUNNY_DAY + || gBattleMoves[move].effect == EFFECT_RAIN_DANCE + || gBattleMoves[move].effect == EFFECT_SANDSTORM + || gBattleMoves[move].effect == EFFECT_HAIL + || gBattleMoves[move].effect == EFFECT_SNOWSCAPE)) return TRUE; - return FALSE; } @@ -3249,7 +3220,7 @@ bool32 PartnerMoveEffectIsTerrain(u32 battlerAtkPartner, u32 partnerMove) if (!IsDoubleBattle()) return FALSE; - if (gChosenMoveByBattler[battlerAtkPartner] != MOVE_NONE + if (partnerMove != MOVE_NONE && (gBattleMoves[partnerMove].effect == EFFECT_GRASSY_TERRAIN || gBattleMoves[partnerMove].effect == EFFECT_MISTY_TERRAIN || gBattleMoves[partnerMove].effect == EFFECT_ELECTRIC_TERRAIN @@ -3265,7 +3236,7 @@ bool32 PartnerMoveIs(u32 battlerAtkPartner, u32 partnerMove, u32 moveCheck) if (!IsDoubleBattle()) return FALSE; - if (gChosenMoveByBattler[battlerAtkPartner] != MOVE_NONE && partnerMove == moveCheck) + if (partnerMove != MOVE_NONE && partnerMove == moveCheck) return TRUE; return FALSE; } @@ -3276,7 +3247,7 @@ bool32 PartnerMoveIsSameAsAttacker(u32 battlerAtkPartner, u32 battlerDef, u32 mo if (!IsDoubleBattle()) return FALSE; - if (gChosenMoveByBattler[battlerAtkPartner] != MOVE_NONE && move == partnerMove && gBattleStruct->moveTarget[battlerAtkPartner] == battlerDef) + if (partnerMove != MOVE_NONE && move == partnerMove && gBattleStruct->moveTarget[battlerAtkPartner] == battlerDef) return TRUE; return FALSE; } @@ -3286,7 +3257,7 @@ bool32 PartnerMoveIsSameNoTarget(u32 battlerAtkPartner, u32 move, u32 partnerMov { if (!IsDoubleBattle()) return FALSE; - if (gChosenMoveByBattler[battlerAtkPartner] != MOVE_NONE && move == partnerMove) + if (partnerMove != MOVE_NONE && move == partnerMove) return TRUE; return FALSE; } @@ -3294,7 +3265,7 @@ bool32 PartnerMoveIsSameNoTarget(u32 battlerAtkPartner, u32 move, u32 partnerMov bool32 ShouldUseWishAromatherapy(u32 battlerAtk, u32 battlerDef, u32 move) { u32 i; - u32 firstId, lastId; + s32 firstId, lastId; struct Pokemon* party; bool32 hasStatus = FALSE; bool32 needHealing = FALSE; @@ -3375,32 +3346,16 @@ void FreeRestoreBattleMons(struct BattlePokemon *savedBattleMons) } // party logic -s32 AI_CalcPartyMonBestMoveDamage(u32 battlerAtk, u32 battlerDef, struct Pokemon *attackerMon, struct Pokemon *targetMon) +s32 AI_CalcPartyMonDamage(u32 move, u32 battlerAtk, u32 battlerDef, struct BattlePokemon switchinCandidate, bool8 isPartyMonAttacker) { - s32 i, move, bestDmg, dmg; + s32 dmg; u8 effectiveness; struct BattlePokemon *savedBattleMons = AllocSaveBattleMons(); - - if (attackerMon != NULL) - PokemonToBattleMon(attackerMon, &gBattleMons[battlerAtk]); - if (targetMon != NULL) - PokemonToBattleMon(targetMon, &gBattleMons[battlerDef]); - - for (bestDmg = 0, i = 0; i < MAX_MON_MOVES; i++) - { - if (BattlerHasAi(battlerAtk)) - move = GetMonData(attackerMon, MON_DATA_MOVE1 + i); - else - move = AI_PARTY->mons[GetBattlerSide(battlerAtk)][gBattlerPartyIndexes[battlerAtk]].moves[i]; - - if (move != MOVE_NONE && gBattleMoves[move].power != 0) - { - dmg = AI_CalcDamageSaveBattlers(move, battlerAtk, battlerDef, &effectiveness, FALSE); - if (dmg > bestDmg) - bestDmg = dmg; - } - } - + if(isPartyMonAttacker) + gBattleMons[battlerAtk] = switchinCandidate; + else + gBattleMons[battlerDef] = switchinCandidate; + dmg = AI_CalcDamage(move, battlerAtk, battlerDef, &effectiveness, FALSE, AI_GetWeather(AI_DATA)); FreeRestoreBattleMons(savedBattleMons); return dmg; } @@ -3465,7 +3420,6 @@ bool32 IsPartyFullyHealedExceptBattler(u32 battlerId) bool32 PartyHasMoveSplit(u32 battlerId, u32 split) { - u32 firstId, lastId; struct Pokemon *party = GetBattlerParty(battlerId); u32 i, j; @@ -3601,39 +3555,39 @@ void IncreaseStatUpScore(u32 battlerAtk, u32 battlerDef, u32 statId, s32 *score) if (HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL) && AI_DATA->hpPercents[battlerAtk] > 40) { if (gBattleMons[battlerAtk].statStages[STAT_ATK] < STAT_UP_2_STAGE) - *score += 2; + ADJUST_SCORE_PTR(2); else if (gBattleMons[battlerAtk].statStages[STAT_ATK] < STAT_UP_STAGE) - *(score)++; + ADJUST_SCORE_PTR(1); } if (HasMoveEffect(battlerAtk, EFFECT_FOUL_PLAY)) - *(score)++; + ADJUST_SCORE_PTR(1); break; case STAT_DEF: if ((HasMoveWithSplit(battlerDef, SPLIT_PHYSICAL)|| IS_MOVE_PHYSICAL(gLastMoves[battlerDef])) && AI_DATA->hpPercents[battlerAtk] > 70) { if (gBattleMons[battlerAtk].statStages[STAT_DEF] < STAT_UP_2_STAGE) - *score += 2; // seems better to raise def at higher HP + ADJUST_SCORE_PTR(2); // seems better to raise def at higher HP else if (gBattleMons[battlerAtk].statStages[STAT_DEF] < STAT_UP_STAGE) - *(score)++; + ADJUST_SCORE_PTR(1); } break; case STAT_SPEED: if (!AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered)) { if (gBattleMons[battlerAtk].statStages[STAT_SPEED] < STAT_UP_2_STAGE) - *score += 2; + ADJUST_SCORE_PTR(2); else if (gBattleMons[battlerAtk].statStages[STAT_SPEED] < STAT_UP_STAGE) - *(score)++; + ADJUST_SCORE_PTR(1); } break; case STAT_SPATK: if (HasMoveWithSplit(battlerAtk, SPLIT_SPECIAL) && AI_DATA->hpPercents[battlerAtk] > 40) { if (gBattleMons[battlerAtk].statStages[STAT_SPATK] < STAT_UP_2_STAGE) - *score += 2; + ADJUST_SCORE_PTR(2); else if (gBattleMons[battlerAtk].statStages[STAT_SPATK] < STAT_UP_STAGE) - *(score)++; + ADJUST_SCORE_PTR(1); } break; case STAT_SPDEF: @@ -3641,24 +3595,24 @@ void IncreaseStatUpScore(u32 battlerAtk, u32 battlerDef, u32 statId, s32 *score) && AI_DATA->hpPercents[battlerAtk] > 70) { if (gBattleMons[battlerAtk].statStages[STAT_SPDEF] < STAT_UP_2_STAGE) - *score += 2; // seems better to raise spdef at higher HP + ADJUST_SCORE_PTR(2); // seems better to raise spdef at higher HP else if (gBattleMons[battlerAtk].statStages[STAT_SPDEF] < STAT_UP_STAGE) - *(score)++; + ADJUST_SCORE_PTR(1); } break; case STAT_ACC: if (HasMoveWithLowAccuracy(battlerAtk, battlerDef, 80, TRUE, AI_DATA->abilities[battlerAtk], AI_DATA->abilities[battlerDef], AI_DATA->holdEffects[battlerAtk], AI_DATA->holdEffects[battlerDef])) - *score += 2; // has moves with less than 80% accuracy + ADJUST_SCORE_PTR(2); // has moves with less than 80% accuracy else if (HasMoveWithLowAccuracy(battlerAtk, battlerDef, 90, TRUE, AI_DATA->abilities[battlerAtk], AI_DATA->abilities[battlerDef], AI_DATA->holdEffects[battlerAtk], AI_DATA->holdEffects[battlerDef])) - *(score)++; + ADJUST_SCORE_PTR(1); break; case STAT_EVASION: if (!BattlerWillFaintFromWeather(battlerAtk, AI_DATA->abilities[battlerAtk])) { if (!GetBattlerSecondaryDamage(battlerAtk) && !(gStatuses3[battlerAtk] & STATUS3_ROOTED)) - *score += 2; + ADJUST_SCORE_PTR(2); else - *(score)++; + ADJUST_SCORE_PTR(1); } break; } @@ -3673,18 +3627,18 @@ void IncreasePoisonScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) if (AI_CanPoison(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_DATA->partnerMove) && AI_DATA->hpPercents[battlerDef] > 20) { if (!HasDamagingMove(battlerDef)) - *score += 2; + ADJUST_SCORE_PTR(2); if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_STALL && HasMoveEffect(battlerAtk, EFFECT_PROTECT)) - (*score)++; // stall tactic + ADJUST_SCORE_PTR(1); // stall tactic if (HasMoveEffect(battlerAtk, EFFECT_VENOSHOCK) || HasMoveEffect(battlerAtk, EFFECT_HEX) || HasMoveEffect(battlerAtk, EFFECT_VENOM_DRENCH) || AI_DATA->abilities[battlerAtk] == ABILITY_MERCILESS) - *(score) += 2; + ADJUST_SCORE_PTR(2); else - *(score)++; + ADJUST_SCORE_PTR(1); } } @@ -3696,15 +3650,15 @@ void IncreaseBurnScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) if (AI_CanBurn(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)) { - (*score)++; // burning is good + ADJUST_SCORE_PTR(1); // burning is good if (HasMoveWithSplit(battlerDef, SPLIT_PHYSICAL)) { if (CanTargetFaintAi(battlerDef, battlerAtk)) - *score += 2; // burning the target to stay alive is cool + ADJUST_SCORE_PTR(2); // burning the target to stay alive is cool } if (HasMoveEffect(battlerAtk, EFFECT_HEX) || HasMoveEffect(BATTLE_PARTNER(battlerAtk), EFFECT_HEX)) - (*score)++; + ADJUST_SCORE_PTR(1); } } @@ -3724,9 +3678,9 @@ void IncreaseParalyzeScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) || HasMoveEffect(battlerAtk, EFFECT_FLINCH_HIT) || gBattleMons[battlerDef].status2 & STATUS2_INFATUATION || gBattleMons[battlerDef].status2 & STATUS2_CONFUSION) - *score += 4; + ADJUST_SCORE_PTR(4); else - *score += 2; + ADJUST_SCORE_PTR(2); } } @@ -3737,16 +3691,16 @@ void IncreaseSleepScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) return; if (AI_CanPutToSleep(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_DATA->partnerMove)) - *score += 2; + ADJUST_SCORE_PTR(2); else return; if ((HasMoveEffect(battlerAtk, EFFECT_DREAM_EATER) || HasMoveEffect(battlerAtk, EFFECT_NIGHTMARE)) && !(HasMoveEffect(battlerDef, EFFECT_SNORE) || HasMoveEffect(battlerDef, EFFECT_SLEEP_TALK))) - (*score)++; + ADJUST_SCORE_PTR(1); if (HasMoveEffect(battlerAtk, EFFECT_HEX) || HasMoveEffect(BATTLE_PARTNER(battlerAtk), EFFECT_HEX)) - (*score)++; + ADJUST_SCORE_PTR(1); } void IncreaseConfusionScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) @@ -3762,9 +3716,9 @@ void IncreaseConfusionScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score if (gBattleMons[battlerDef].status1 & STATUS1_PARALYSIS || gBattleMons[battlerDef].status2 & STATUS2_INFATUATION || (AI_DATA->abilities[battlerAtk] == ABILITY_SERENE_GRACE && HasMoveEffect(battlerAtk, EFFECT_FLINCH_HIT))) - *score += 3; + ADJUST_SCORE_PTR(3); else - *score += 2; + ADJUST_SCORE_PTR(2); } } @@ -3775,15 +3729,15 @@ void IncreaseFrostbiteScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score if (AI_CanGiveFrostbite(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)) { - (*score)++; // frostbite is good + ADJUST_SCORE_PTR(1); // frostbite is good if (HasMoveWithSplit(battlerDef, SPLIT_SPECIAL)) { if (CanTargetFaintAi(battlerDef, battlerAtk)) - *score += 2; // frostbiting the target to stay alive is cool + ADJUST_SCORE_PTR(2); // frostbiting the target to stay alive is cool } if (HasMoveEffect(battlerAtk, EFFECT_HEX) || HasMoveEffect(BATTLE_PARTNER(battlerAtk), EFFECT_HEX)) - (*score)++; + ADJUST_SCORE_PTR(1); } } @@ -3809,9 +3763,9 @@ bool32 ShouldUseZMove(u32 battlerAtk, u32 battlerDef, u32 chosenMove) { u8 effectiveness; - if (gBattleMons[battlerDef].ability == ABILITY_DISGUISE && gBattleMons[battlerDef].species == SPECIES_MIMIKYU) + if (gBattleMons[battlerDef].ability == ABILITY_DISGUISE && gBattleMons[battlerDef].species == SPECIES_MIMIKYU_DISGUISED) return FALSE; // Don't waste a Z-Move busting disguise - if (gBattleMons[battlerDef].ability == ABILITY_ICE_FACE && gBattleMons[battlerDef].species == SPECIES_EISCUE && IS_MOVE_PHYSICAL(chosenMove)) + if (gBattleMons[battlerDef].ability == ABILITY_ICE_FACE && gBattleMons[battlerDef].species == SPECIES_EISCUE_ICE_FACE && IS_MOVE_PHYSICAL(chosenMove)) return FALSE; // Don't waste a Z-Move busting Ice Face if (IS_MOVE_STATUS(chosenMove) && !IS_MOVE_STATUS(gBattleStruct->zmove.chosenZMove)) @@ -3832,3 +3786,11 @@ bool32 AI_IsBattlerAsleepOrComatose(u32 battlerId) { return (gBattleMons[battlerId].status1 & STATUS1_SLEEP) || AI_DATA->abilities[battlerId] == ABILITY_COMATOSE; } + +u32 AI_CalcSecondaryEffectChance(u32 battler, u32 secondaryEffectChance) +{ + if (AI_DATA->abilities[battler] == ABILITY_SERENE_GRACE) + secondaryEffectChance *= 2; + + return secondaryEffectChance; +} diff --git a/src/battle_anim.c b/src/battle_anim.c index 8caa2850cb..d2216e5155 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -248,6 +248,7 @@ void LaunchBattleAnimation(u32 animType, u32 animId) switch (animType) { case ANIM_TYPE_GENERAL: + default: animsTable = gBattleAnims_General; break; case ANIM_TYPE_MOVE: @@ -277,6 +278,9 @@ void LaunchBattleAnimation(u32 animType, u32 animId) case B_ANIM_PRIMAL_REVERSION: case B_ANIM_ULTRA_BURST: case B_ANIM_GULP_MISSILE: + case B_ANIM_RAINBOW: + case B_ANIM_SEA_OF_FIRE: + case B_ANIM_SWAMP: sAnimHideHpBoxes = TRUE; break; default: @@ -1468,10 +1472,8 @@ static void LoadDefaultBg(void) { if (IsContest()) LoadContestBgAfterMoveAnim(); -#if B_TERRAIN_BG_CHANGE == TRUE - else if (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY) + else if (B_TERRAIN_BG_CHANGE == TRUE && gFieldStatuses & STATUS_FIELD_TERRAIN_ANY) DrawTerrainTypeBattleBackground(); -#endif else DrawMainBattleBackground(); } diff --git a/src/battle_anim_bug.c b/src/battle_anim_bug.c index bd91f18d19..65bfcba2e1 100644 --- a/src/battle_anim_bug.c +++ b/src/battle_anim_bug.c @@ -451,7 +451,7 @@ void AnimMissileArc_Step(struct Sprite *sprite) else { s16 tempData[8]; - u16 *data = sprite->data; + s16 *data = sprite->data; u16 x1 = sprite->x; s16 x2 = sprite->x2; u16 y1 = sprite->y; diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index 4464559ab7..b79c94a6a3 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -158,6 +158,7 @@ static void AnimRockPolishSparkle(struct Sprite *); static void AnimPoisonJabProjectile(struct Sprite *); static void AnimNightSlash(struct Sprite *); static void AnimPluck(struct Sprite *); +static void AnimAcrobaticsSlashes(struct Sprite *); const union AnimCmd gPowderParticlesAnimCmds[] = { @@ -3006,6 +3007,61 @@ const struct SpriteTemplate gSeedFlareGreenCirclesTemplate = .callback = AnimPowerAbsorptionOrb }; +const struct SpriteTemplate gSteelBeamBigOrbSpriteTemplate = +{ + .tileTag = ANIM_TAG_STEEL_BEAM, + .paletteTag = ANIM_TAG_STEEL_BEAM, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gSolarBeamBigOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSolarBeamBigOrb, +}; + +const struct SpriteTemplate gSteelBeamSmallOrbSpriteTemplate = +{ + .tileTag = ANIM_TAG_STEEL_BEAM, + .paletteTag = ANIM_TAG_STEEL_BEAM, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gSolarBeamSmallOrbAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSolarBeamSmallOrb, +}; + +const struct SpriteTemplate gAcrobaticsSlashesSpriteTemplate = +{ + .tileTag = ANIM_TAG_WHITE_STREAK, + .paletteTag = ANIM_TAG_WHITE_STREAK, + .oam = &gOamData_AffineDouble_ObjBlend_32x8, + .anims = gRockPolishStreak_AnimCmds, + .images = NULL, + .affineAnims = gRockPolishStreak_AffineAnimCmds, + .callback = AnimAcrobaticsSlashes, +}; + +const struct SpriteTemplate gPsyshockOrbSpriteTemplate = +{ + .tileTag = ANIM_TAG_RED_ORB_2, + .paletteTag = ANIM_TAG_POISON_JAB, + .oam = &gOamData_AffineOff_ObjNormal_8x8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimPoisonJabProjectile, +}; + +const struct SpriteTemplate gPsyshockSmokeSpriteTemplate = +{ + .tileTag = ANIM_TAG_GRAY_SMOKE, + .paletteTag = ANIM_TAG_WISP_FIRE, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gOctazookaAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSpriteOnMonPos, +}; + // functions static void AnimGrassKnot(struct Sprite *sprite) { @@ -4019,7 +4075,7 @@ static void AnimConstrictBinding(struct Sprite *sprite) static void AnimConstrictBinding_Step1(struct Sprite *sprite) { - u8 spriteId; + u8 UNUSED spriteId; if ((u16)gBattleAnimArgs[7] == 0xFFFF) { @@ -4032,7 +4088,7 @@ static void AnimConstrictBinding_Step1(struct Sprite *sprite) static void AnimConstrictBinding_Step2(struct Sprite *sprite) { - u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); + u8 UNUSED spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); if (!sprite->data[2]) sprite->data[0] += 11; else @@ -5152,7 +5208,7 @@ static void AnimSlice_Step(struct Sprite *sprite) } } -static void UnusedFlickerAnim(struct Sprite *sprite) +static void UNUSED UnusedFlickerAnim(struct Sprite *sprite) { if (sprite->data[2] > 1) { @@ -6002,7 +6058,7 @@ static void AnimFalseSwipeSlice(struct Sprite *sprite) static void AnimFalseSwipePositionedSlice(struct Sprite *sprite) { - sprite->x = sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 0xFFD0 + gBattleAnimArgs[0]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) - 48 + gBattleAnimArgs[0]; sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); StartSpriteAnim(sprite, 1); sprite->data[0] = 0; @@ -6185,8 +6241,7 @@ void AnimTask_Conversion2AlphaBlend(u8 taskId) } } -// Unused -static void AnimTask_HideBattlersHealthbox(u8 taskId) +static void UNUSED AnimTask_HideBattlersHealthbox(u8 taskId) { u8 i; for (i = 0; i < gBattlersCount; i++) @@ -6201,8 +6256,7 @@ static void AnimTask_HideBattlersHealthbox(u8 taskId) DestroyAnimVisualTask(taskId); } -// Unused -static void AnimTask_ShowBattlersHealthbox(u8 taskId) +static void UNUSED AnimTask_ShowBattlersHealthbox(u8 taskId) { u8 i; for (i = 0; i < gBattlersCount; i++) @@ -6973,28 +7027,6 @@ void AnimTask_CompressTargetHorizontally(u8 taskId) task->func = AnimTask_CompressTargetStep; } -const struct SpriteTemplate gSteelBeamBigOrbSpriteTemplate = -{ - .tileTag = ANIM_TAG_STEEL_BEAM, - .paletteTag = ANIM_TAG_STEEL_BEAM, - .oam = &gOamData_AffineOff_ObjNormal_8x8, - .anims = gSolarBeamBigOrbAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimSolarBeamBigOrb, -}; - -const struct SpriteTemplate gSteelBeamSmallOrbSpriteTemplate = -{ - .tileTag = ANIM_TAG_STEEL_BEAM, - .paletteTag = ANIM_TAG_STEEL_BEAM, - .oam = &gOamData_AffineOff_ObjNormal_8x8, - .anims = gSolarBeamSmallOrbAnimTable, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimSolarBeamSmallOrb, -}; - void AnimTask_CreateSmallSteelBeamOrbs(u8 taskId) { if (--gTasks[taskId].data[0] == -1) @@ -7011,3 +7043,12 @@ void AnimTask_CreateSmallSteelBeamOrbs(u8 taskId) if (gTasks[taskId].data[1] == 15) DestroyAnimVisualTask(taskId); } + +static void AnimAcrobaticsSlashes(struct Sprite *sprite) +{ + int affineAnimNum = Random2() % ARRAY_COUNT(gRockPolishStreak_AffineAnimCmds); + InitSpritePosToAnimTarget(sprite, TRUE); + StartSpriteAffineAnim(sprite, affineAnimNum); + StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); + sprite->callback = RunStoredCallbackWhenAnimEnds; +} diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index cd7f4221ba..3520d92fb0 100755 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -2588,8 +2588,8 @@ static void AnimPencil_Step(struct Sprite *sprite) static void AnimBlendThinRing(struct Sprite *sprite) { u8 battler = 0; - u16 sp0 = 0; - u16 sp1 = 0; + s16 x = 0; + s16 y = 0; u8 r4; if (gBattleAnimArgs[2] == 0) @@ -2600,16 +2600,16 @@ static void AnimBlendThinRing(struct Sprite *sprite) r4 = gBattleAnimArgs[3] ^ 1; if (IsDoubleBattle() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler))) { - SetAverageBattlerPositions(battler, r4, &sp0, &sp1); + SetAverageBattlerPositions(battler, r4, &x, &y); if (r4 == 0) r4 = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); else r4 = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2); if (GetBattlerSide(battler) != B_SIDE_PLAYER) - gBattleAnimArgs[0] -= (sp0 - r4) - gBattleAnimArgs[0]; // This is weird. + gBattleAnimArgs[0] -= (x - r4) - gBattleAnimArgs[0]; // This is weird. else - gBattleAnimArgs[0] = sp0 - r4; + gBattleAnimArgs[0] = x - r4; } sprite->callback = AnimSpriteOnMonPos; diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c old mode 100755 new mode 100644 index 82653c1406..2c8572cc8c --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -721,8 +721,6 @@ const struct SpriteTemplate gSweetScentPetalSpriteTemplate = .callback = AnimSweetScentPetal, }; -static const u16 sUnusedPalette[] = INCBIN_U16("graphics/battle_anims/unused/unknown.gbapal"); - const union AnimCmd gPainSplitAnimCmds[] = { ANIMCMD_FRAME(0, 5), @@ -1508,8 +1506,7 @@ static void FadeScreenToWhite_Step(u8 taskId) static void AnimSpikes(struct Sprite *sprite) { - u16 x; - u16 y; + s16 x, y; InitSpritePosToAnimAttacker(sprite, TRUE); SetAverageBattlerPositions(gBattleAnimTarget, FALSE, &x, &y); @@ -4844,8 +4841,8 @@ static void AnimMeteorMashStar_Step(struct Sprite *sprite) // arg 4: duration static void AnimMeteorMashStar(struct Sprite *sprite) { - s16 y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); // unused local variable - s16 x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); // unused local variable + s16 UNUSED y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + s16 UNUSED x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER || IsContest()) { diff --git a/src/battle_anim_fire.c b/src/battle_anim_fire.c index 9a68f929bb..3a770a7c8c 100644 --- a/src/battle_anim_fire.c +++ b/src/battle_anim_fire.c @@ -527,6 +527,18 @@ const struct SpriteTemplate gSpacialRendBladesTemplate2 = .callback = AnimFireSpread }; +// Sea of Fire +const struct SpriteTemplate gTwisterEmberSpriteTemplate = +{ + .tileTag = ANIM_TAG_SMALL_EMBER, + .paletteTag = ANIM_TAG_SMALL_EMBER, + .oam = &gOamData_AffineOff_ObjNormal_32x32, + .anims = gAnims_BasicFire, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMoveTwisterParticle, +}; + static void AnimLavaPlumeOrbitScatter(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); diff --git a/src/battle_anim_flying.c b/src/battle_anim_flying.c index 8dd5a7ff7f..91ac5e7841 100644 --- a/src/battle_anim_flying.c +++ b/src/battle_anim_flying.c @@ -1216,8 +1216,7 @@ void AnimSkyAttackBird_Step(struct Sprite *sprite) DestroySpriteAndMatrix(sprite); } -// Unused -static void AnimTask_SetAttackerVisibility(u8 taskId) +static void UNUSED AnimTask_SetAttackerVisibility(u8 taskId) { if (gBattleAnimArgs[0] == 0) { diff --git a/src/battle_anim_ghost.c b/src/battle_anim_ghost.c index e49d2411de..7bd6a0268e 100644 --- a/src/battle_anim_ghost.c +++ b/src/battle_anim_ghost.c @@ -1447,7 +1447,6 @@ static void AnimPoltergeistItem(struct Sprite *sprite) void AnimTask_PulverizingPancakeWhiteShadow(u8 taskId) { struct Task *task; - s16 battler; u8 spriteId; s16 baseX, baseY; s16 x, y; diff --git a/src/battle_anim_ground.c b/src/battle_anim_ground.c index a89800492f..6119371757 100644 --- a/src/battle_anim_ground.c +++ b/src/battle_anim_ground.c @@ -750,7 +750,7 @@ static void SetBattlersXOffsetForShake(struct Task *task) void AnimTask_IsPowerOver99(u8 taskId) { - gBattleAnimArgs[15] = gAnimMovePower > 99; + gBattleAnimArgs[ARG_RET_ID] = gAnimMovePower > 99; DestroyAnimVisualTask(taskId); } diff --git a/src/battle_anim_ice.c b/src/battle_anim_ice.c index 41566d0471..fde1c228cf 100644 --- a/src/battle_anim_ice.c +++ b/src/battle_anim_ice.c @@ -46,6 +46,8 @@ static void AnimTask_Hail2(u8); static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c); static void AvalancheAnim_Step(struct Sprite *sprite); static void AvalancheAnim_Step2(struct Sprite *sprite); +static void AnimSnowflakes(struct Sprite *sprite); +static void AnimSnowflakes_Step(struct Sprite *sprite); static const union AnimCmd sAnim_Unused[] = { @@ -1673,3 +1675,69 @@ void AnimTask_GetIceBallCounter(u8 taskId) gBattleAnimArgs[arg] = gAnimDisableStructPtr->rolloutTimerStartValue - gAnimDisableStructPtr->rolloutTimer - 1; DestroyAnimVisualTask(taskId); } + +static const union AnimCmd sAnim_Snowflakes[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(8, 2), + ANIMCMD_FRAME(16, 2), + ANIMCMD_FRAME(24, 6), + ANIMCMD_FRAME(32, 2), + ANIMCMD_FRAME(40, 2), + ANIMCMD_FRAME(48, 2), + ANIMCMD_END, +}; + +static const union AnimCmd *const sAnims_Snowflakes[] = +{ + sAnim_Snowflakes, +}; + +const struct SpriteTemplate gSnowFlakesSpriteTemplate = +{ + .tileTag = ANIM_TAG_SNOWFLAKES, + .paletteTag = ANIM_TAG_SNOWFLAKES, + .oam = &gOamData_AffineOff_ObjNormal_16x32, + .anims = sAnims_Snowflakes, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimSnowflakes, +}; + +void AnimTask_CreateSnowflakes(u8 taskId) +{ + u8 x, y; + + if (gTasks[taskId].data[0] == 0) + { + gTasks[taskId].data[1] = gBattleAnimArgs[0]; + gTasks[taskId].data[2] = gBattleAnimArgs[1]; + gTasks[taskId].data[3] = gBattleAnimArgs[2]; + } + gTasks[taskId].data[0]++; + if (gTasks[taskId].data[0] % gTasks[taskId].data[2] == 1) + { + x = Random2() % DISPLAY_WIDTH; + y = Random2() % (DISPLAY_HEIGHT / 2); + CreateSprite(&gSnowFlakesSpriteTemplate, x, y, 4); + } + if (gTasks[taskId].data[0] == gTasks[taskId].data[3]) + DestroyAnimVisualTask(taskId); +} + +static void AnimSnowflakes(struct Sprite *sprite) +{ + sprite->callback = AnimSnowflakes_Step; +} + +static void AnimSnowflakes_Step(struct Sprite *sprite) +{ + if (++sprite->data[0] <= 13) + { + sprite->x2++; + sprite->y2 += 2; + sprite->x2--; + } + if (sprite->animEnded) + DestroySprite(sprite); +} diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 4d97cd2c75..78e1a0a445 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -147,7 +147,7 @@ u8 GetBattlerYDelta(u8 battlerId, u16 species) u32 personality; struct BattleSpriteInfo *spriteInfo; u8 ret; - u16 coordSpecies; + species = SanitizeSpeciesId(species); if (GetBattlerSide(battlerId) == B_SIDE_PLAYER || IsContest()) { @@ -168,17 +168,9 @@ u8 GetBattlerYDelta(u8 battlerId, u16 species) else personality = gTransformedPersonalities[battlerId]; } - coordSpecies = GetUnownSpeciesId(personality); - ret = gMonBackPicCoords[coordSpecies].y_offset; - } - else if (species > NUM_SPECIES) - { - ret = gMonBackPicCoords[0].y_offset; - } - else - { - ret = gMonBackPicCoords[species].y_offset; + species = GetUnownSpeciesId(personality); } + ret = gSpeciesInfo[species].backPicYOffset; } else { @@ -190,17 +182,9 @@ u8 GetBattlerYDelta(u8 battlerId, u16 species) else personality = gTransformedPersonalities[battlerId]; - coordSpecies = GetUnownSpeciesId(personality); - ret = gMonFrontPicCoords[coordSpecies].y_offset; - } - else if (species > NUM_SPECIES) - { - ret = gMonFrontPicCoords[0].y_offset; - } - else - { - ret = gMonFrontPicCoords[species].y_offset; + species = GetUnownSpeciesId(personality); } + ret = gSpeciesInfo[species].frontPicYOffset; } return ret; } @@ -212,10 +196,8 @@ u8 GetBattlerElevation(u8 battlerId, u16 species) { if (!IsContest()) { - if (species > NUM_SPECIES) - ret = gEnemyMonElevation[0]; - else - ret = gEnemyMonElevation[species]; + species = SanitizeSpeciesId(species); + ret = gSpeciesInfo[species].enemyMonElevation; } } return ret; @@ -440,9 +422,8 @@ void TranslateSpriteInGrowingCircle(struct Sprite *sprite) } } -// Unused // Exact shape depends on arguments. Can move in a figure-8-like pattern, or circular, etc. -static void TranslateSpriteInLissajousCurve(struct Sprite *sprite) +static void UNUSED TranslateSpriteInLissajousCurve(struct Sprite *sprite) { if (sprite->sDuration) { @@ -594,8 +575,7 @@ static void TranslateSpriteLinearFixedPointIconFrame(struct Sprite *sprite) UpdateMonIconFrame(sprite); } -// Unused -static void TranslateSpriteToBattleTargetPos(struct Sprite *sprite) +static void UNUSED TranslateSpriteToBattleTargetPos(struct Sprite *sprite) { sprite->sStartX = sprite->x + sprite->x2; sprite->sStartY = sprite->y + sprite->y2; @@ -662,8 +642,7 @@ void DestroySpriteAndMatrix(struct Sprite *sprite) DestroyAnimSprite(sprite); } -// Unused -static void TranslateSpriteToBattleAttackerPos(struct Sprite *sprite) +static void UNUSED TranslateSpriteToBattleAttackerPos(struct Sprite *sprite) { sprite->sStartX = sprite->x + sprite->x2; sprite->sStartY = sprite->y + sprite->y2; @@ -678,8 +657,7 @@ static void TranslateSpriteToBattleAttackerPos(struct Sprite *sprite) #undef sStartY #undef sTargetY -// Unused -static void EndUnkPaletteAnim(struct Sprite *sprite) +static void UNUSED EndUnkPaletteAnim(struct Sprite *sprite) { PaletteStruct_ResetById(sprite->data[5]); DestroySpriteAndMatrix(sprite); @@ -1090,8 +1068,7 @@ void StartAnimLinearTranslation(struct Sprite *sprite) sprite->callback(sprite); } -// Unused -static void StartAnimLinearTranslation_SetCornerVecX(struct Sprite *sprite) +static void UNUSED StartAnimLinearTranslation_SetCornerVecX(struct Sprite *sprite) { sprite->data[1] = sprite->x; sprite->data[3] = sprite->y; @@ -1499,8 +1476,7 @@ u8 GetSpritePalIdxByBattler(u8 battler) return battler; } -// Unused -static u8 GetSpritePalIdxByPosition(u8 position) +static u8 UNUSED GetSpritePalIdxByPosition(u8 position) { return GetBattlerAtPosition(position); } @@ -1905,7 +1881,7 @@ static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId) if (IsContest()) { species = gContestResources->moveAnim->species; - return gMonBackPicCoords[species].y_offset; + return gSpeciesInfo[species].backPicYOffset; } else { @@ -1917,7 +1893,7 @@ static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId) else species = spriteInfo[battlerId].transformSpecies; - return gMonBackPicCoords[species].y_offset; + return gSpeciesInfo[species].backPicYOffset; } else { @@ -1927,7 +1903,7 @@ static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId) else species = spriteInfo[battlerId].transformSpecies; - return gMonFrontPicCoords[species].y_offset; + return gSpeciesInfo[species].frontPicYOffset; } } } @@ -1997,8 +1973,7 @@ void AnimTask_GetFrustrationPowerLevel(u8 taskId) DestroyAnimVisualTask(taskId); } -// Unused -static void SetPriorityForVisibleBattlers(u8 priority) +static void UNUSED SetPriorityForVisibleBattlers(u8 priority) { if (IsBattlerSpriteVisible(gBattleAnimTarget)) gSprites[gBattlerSpriteIds[gBattleAnimTarget]].oam.priority = priority; @@ -2107,9 +2082,9 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 FREE_AND_SET_NULL(gMonSpritesGfxPtr->buffer); if (!isBackpic) - spriteId = CreateSprite(&sSpriteTemplates_MoveEffectMons[id], x, y + gMonFrontPicCoords[species].y_offset, subpriority); + spriteId = CreateSprite(&sSpriteTemplates_MoveEffectMons[id], x, y + gSpeciesInfo[species].frontPicYOffset, subpriority); else - spriteId = CreateSprite(&sSpriteTemplates_MoveEffectMons[id], x, y + gMonBackPicCoords[species].y_offset, subpriority); + spriteId = CreateSprite(&sSpriteTemplates_MoveEffectMons[id], x, y + gSpeciesInfo[species].backPicYOffset, subpriority); if (IsContest()) { @@ -2129,7 +2104,8 @@ s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr) u16 species; u32 personality; int ret; - const struct MonCoords *coords; + u8 size; + u8 y_offset; struct BattleSpriteInfo *spriteInfo; if (IsContest()) @@ -2144,19 +2120,11 @@ s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr) species = gContestResources->moveAnim->species; personality = gContestResources->moveAnim->personality; } + species = SanitizeSpeciesId(species); if (species == SPECIES_UNOWN) - { species = GetUnownSpeciesId(personality); - coords = &gMonBackPicCoords[species]; - } - else if (species <= SPECIES_EGG) - { - coords = &gMonBackPicCoords[species]; - } - else - { - coords = &gMonBackPicCoords[0]; - } + size = gSpeciesInfo[species].backPicSize; + y_offset = gSpeciesInfo[species].backPicYOffset; } else { @@ -2174,19 +2142,14 @@ s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr) personality = gTransformedPersonalities[battlerId]; } + species = SanitizeSpeciesId(species); if (species == SPECIES_UNOWN) - { species = GetUnownSpeciesId(personality); - coords = &gMonBackPicCoords[species]; - } - else if (species > NUM_SPECIES) - { - coords = &gMonBackPicCoords[0]; - } + if (gSpeciesInfo[species].backPicFemale != NULL && IsPersonalityFemale(species, personality)) + size = gSpeciesInfo[species].backPicSizeFemale; else - { - coords = &gMonBackPicCoords[species]; - } + size = gSpeciesInfo[species].backPicSize; + y_offset = gSpeciesInfo[species].backPicYOffset; } else { @@ -2202,39 +2165,34 @@ s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr) personality = gTransformedPersonalities[battlerId]; } + species = SanitizeSpeciesId(species); if (species == SPECIES_UNOWN) - { species = GetUnownSpeciesId(personality); - coords = &gMonFrontPicCoords[species]; - } - else if (species > NUM_SPECIES) - { - coords = &gMonFrontPicCoords[0]; - } + if (gSpeciesInfo[species].frontPicFemale != NULL && IsPersonalityFemale(species, personality)) + size = gSpeciesInfo[species].frontPicSizeFemale; else - { - coords = &gMonFrontPicCoords[species]; - } + size = gSpeciesInfo[species].frontPicSize; + y_offset = gSpeciesInfo[species].frontPicYOffset; } } switch (attr) { case BATTLER_COORD_ATTR_HEIGHT: - return GET_MON_COORDS_HEIGHT(coords->size); + return GET_MON_COORDS_HEIGHT(size); case BATTLER_COORD_ATTR_WIDTH: - return GET_MON_COORDS_WIDTH(coords->size); + return GET_MON_COORDS_WIDTH(size); case BATTLER_COORD_ATTR_LEFT: - return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) - (GET_MON_COORDS_WIDTH(coords->size) / 2); + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) - (GET_MON_COORDS_WIDTH(size) / 2); case BATTLER_COORD_ATTR_RIGHT: - return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + (GET_MON_COORDS_WIDTH(coords->size) / 2); + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + (GET_MON_COORDS_WIDTH(size) / 2); case BATTLER_COORD_ATTR_TOP: - return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) - (GET_MON_COORDS_HEIGHT(coords->size) / 2); + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) - (GET_MON_COORDS_HEIGHT(size) / 2); case BATTLER_COORD_ATTR_BOTTOM: - return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) + (GET_MON_COORDS_HEIGHT(coords->size) / 2); + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) + (GET_MON_COORDS_HEIGHT(size) / 2); case BATTLER_COORD_ATTR_RAW_BOTTOM: ret = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 31; - return ret - coords->y_offset; + return ret - y_offset; default: return 0; } diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index 1f04e01697..5faa0a696a 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -81,8 +81,6 @@ static void SpriteCB_HorizontalSliceStep(struct Sprite *sprite); static void SpriteCB_HorizontalSlice(struct Sprite *sprite); static void SpriteCB_LashOutStrike(struct Sprite* sprite); static void AnimTask_TwinkleTackleLaunchStep(u8 taskId); -static void SpriteCB_ShellSmashShell(struct Sprite* sprite); -static void SpriteCB_ShellSmashShell_DestroyDuringFadeOut(struct Sprite* sprite); static void SpriteCB_AnimSpriteOnTargetSideCentre(struct Sprite *sprite); static void SpriteCB_SpriteOnMonUntilAffineAnimEnds(struct Sprite* sprite); static void SpriteCB_MoveSpriteUpwardsForDurationStep(struct Sprite* sprite); @@ -5682,13 +5680,13 @@ const struct SpriteTemplate gBlackHoleEclipseRedRingInwardsSpriteTemplate = .affineAnims = gThinRingShrinkingAffineAnimTable, .callback = AnimSpriteOnMonPos }; -static const union AffineAnimCmd gGrowingBackHoleTargetAffineCmds[] = { +static const union AffineAnimCmd sGrowingBackHoleTargetAffineCmds[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0, 0, -10, 0x88), AFFINEANIMCMD_END, }; static const union AffineAnimCmd *const gGrowingBlackHoleTargetAffineAnimTable[] = { - gGrowingBackHoleTargetAffineCmds, + sGrowingBackHoleTargetAffineCmds, }; const struct SpriteTemplate gBlackHoleEclipseHoleSpriteTemplate = { @@ -5700,13 +5698,13 @@ const struct SpriteTemplate gBlackHoleEclipseHoleSpriteTemplate = .affineAnims = gGrowingBlackHoleTargetAffineAnimTable, .callback = AnimSpriteOnMonPos }; -static const union AffineAnimCmd gShrinkingBlackHoleAffineCmds[] = { +static const union AffineAnimCmd sShrinkingBlackHoleAffineCmds[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(-0x10, -0x10, 0xf6, 8), AFFINEANIMCMD_END_ALT(1), }; static const union AffineAnimCmd *const gShrinkingBlackHoleAffineAnimTable[] = { - gShrinkingBlackHoleAffineCmds, + sShrinkingBlackHoleAffineCmds, }; const struct SpriteTemplate gBlackHoleEclipseHoleShrinkSpriteTemplate = { @@ -5718,13 +5716,13 @@ const struct SpriteTemplate gBlackHoleEclipseHoleShrinkSpriteTemplate = .affineAnims = gShrinkingBlackHoleAffineAnimTable, .callback = AnimSpriteOnMonPos }; -static const union AffineAnimCmd gGrowingBackHoleAffineCmds[] = { +static const union AffineAnimCmd sGrowingBackHoleAffineCmds[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0, 0, -10, 0x48), AFFINEANIMCMD_END, }; static const union AffineAnimCmd *const gGrowingBlackHoleAffineAnimTable[] = { - gGrowingBackHoleAffineCmds, + sGrowingBackHoleAffineCmds, }; const struct SpriteTemplate gBlackHoleEclipseHoleUserSpriteTemplate = { @@ -8283,7 +8281,7 @@ void AnimTask_ShellSmashShrinkAttacker(u8 taskId) task->func = AnimTask_DynamaxGrowthStep; } -static void AnimTask_DynamaxGrowthStep(u8 taskId) +static void AnimTask_DynamaxGrowthStep(u8 taskId) // from CFRU { struct Task* task = &gTasks[taskId]; if (!RunAffineAnimFromTaskData(task)) @@ -8632,11 +8630,10 @@ void AnimTask_TerrainPulse(u8 taskId) void AnimTask_AffectionHangedOn(u8 taskId) { - gBattleAnimArgs[0] = GetBattlerFriendshipScore(gBattleAnimTarget); + gBattleAnimArgs[0] = GetBattlerAffectionHearts(gBattleAnimTarget); DestroyAnimVisualTask(taskId); } - //Launches the stat ball for Power Shift //arg 0: X starting offset //arg 1: Y starting offset @@ -8727,6 +8724,7 @@ static void SpriteCB_LashOutStrike(struct Sprite* sprite) sprite->callback = AnimKnockOffStrike_Step; } +/* TODO - Use the ShellSmash Anim //Moves the shells towards the attacker and leaves them there until they fade out //arg 0: Initial x-pos //arg 1: Final x-pos @@ -8754,6 +8752,7 @@ static void SpriteCB_ShellSmashShell_DestroyDuringFadeOut(struct Sprite* sprite) if (GetGpuReg(REG_OFFSET_BLDALPHA) >= BLDALPHA_BLEND(0, 8)) //Fade out 1/2 done DestroyAnimSprite(sprite); } +*/ static void SpriteCB_AnimSpriteOnTargetSideCentre(struct Sprite *sprite) { @@ -9099,3 +9098,66 @@ static void SpriteCB_TripleArrowKick(struct Sprite* sprite) InitAnimArcTranslation(sprite); sprite->callback = SpriteCB_PowerShiftBallStep; //Arc until complete } + +// DYNAMAX +static const union AffineAnimCmd sDynamaxGrowthAffineAnimCmds[] = // from CFRU +{ + AFFINEANIMCMD_FRAME(-2, -2, 0, 64), //Double in size over 1 second + AFFINEANIMCMD_FRAME(0, 0, 0, 64), //Pause for 1 seconds + AFFINEANIMCMD_FRAME(16, 16, 0, 8), //Shrink back down in 1/8 of a second + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd sDynamaxGrowthAttackAnimationAffineAnimCmds[] = +{ + AFFINEANIMCMD_FRAME(-4, -4, 0, 32), //Double in size quicker + AFFINEANIMCMD_FRAME(0, 0, 0, 32), //Pause for less + AFFINEANIMCMD_FRAME(16, 16, 0, 8), + AFFINEANIMCMD_END, +}; + +//Arg 0: Animation for attack +void AnimTask_DynamaxGrowth(u8 taskId) // from CFRU +{ + struct Task* task = &gTasks[taskId]; + u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + + if (gBattleAnimArgs[0] == 0) + PrepareAffineAnimInTaskData(task, spriteId, sDynamaxGrowthAffineAnimCmds); + else + PrepareAffineAnimInTaskData(task, spriteId, sDynamaxGrowthAttackAnimationAffineAnimCmds); + task->func = AnimTask_DynamaxGrowthStep; +} + +void AnimTask_GetWeatherToSet(u8 taskId) +{ + switch (gBattleMoves[gCurrentMove].argument) + { + case MAX_EFFECT_SUN: + gBattleAnimArgs[ARG_RET_ID] = 1; + break; + case MAX_EFFECT_RAIN: + gBattleAnimArgs[ARG_RET_ID] = 2; + break; + case MAX_EFFECT_SANDSTORM: + gBattleAnimArgs[ARG_RET_ID] = 3; + break; + case MAX_EFFECT_HAIL: + gBattleAnimArgs[ARG_RET_ID] = 4; + break; + } + DestroyAnimVisualTask(taskId); +} + +void AnimTask_SyrupBomb(u8 taskId) +{ + struct Pokemon *party = GetBattlerParty(gBattleAnimAttacker); + gBattleAnimArgs[0] = IsMonShiny(&party[gBattlerPartyIndexes[gBattleAnimAttacker]]); + DestroyAnimVisualTask(taskId); +} + +void AnimTask_StickySyrup(u8 taskId) +{ + gBattleAnimArgs[0] = gAnimDisableStructPtr->syrupBombIsShiny; + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle_anim_poison.c b/src/battle_anim_poison.c index 8905f5c475..0ed4e43090 100644 --- a/src/battle_anim_poison.c +++ b/src/battle_anim_poison.c @@ -14,6 +14,7 @@ static void AnimSuckerPunch(struct Sprite *sprite); static void AnimGunkShotParticlesStep(struct Sprite *sprite); static void AnimGunkShotParticles(struct Sprite *sprite); static void AnimGunkShotImpact(struct Sprite *sprite); +static void AnimAnimSyrupBomb(struct Sprite *); static const union AnimCmd sAnim_ToxicBubble[] = { @@ -305,6 +306,123 @@ const struct SpriteTemplate gGunkShotImpactSpriteTemplate = .callback = AnimGunkShotImpact, }; +static const union AnimCmd sAnim_SyrupCoat[] = +{ + ANIMCMD_FRAME(128, 10), + ANIMCMD_FRAME(64, 5), + ANIMCMD_FRAME(0, 45), + ANIMCMD_FRAME(64, 15), + ANIMCMD_FRAME(128, 15), + ANIMCMD_FRAME(192, 20), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_SyrupStick[] = +{ + ANIMCMD_FRAME(192, 5), + ANIMCMD_FRAME(128, 35), + ANIMCMD_FRAME(192, 20), + ANIMCMD_END, +}; + +static const union AnimCmd *const sAnims_SyrupCoat[] = +{ + sAnim_SyrupCoat, +}; + +static const union AnimCmd *const sAnims_SyrupStick[] = +{ + sAnim_SyrupStick, +}; + +const struct SpriteTemplate gSyrupRedProjectileSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_BLOB_RED, + .paletteTag = ANIM_TAG_SYRUP_BLOB_RED, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = gAffineAnims_PoisonProjectile, + .callback = AnimSludgeProjectile, +}; + +const struct SpriteTemplate gSyrupYellowProjectileSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .paletteTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .oam = &gOamData_AffineDouble_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = gAffineAnims_PoisonProjectile, + .callback = AnimSludgeProjectile, +}; + +const struct SpriteTemplate gSyrupBombRedHitParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SPLAT_RED, + .paletteTag = ANIM_TAG_SYRUP_BLOB_RED, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = sAffineAnims_SludgeBombHit, + .callback = AnimSludgeBombHitParticle, +}; + +const struct SpriteTemplate gSyrupBombYellowHitParticleSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SPLAT_YELLOW, + .paletteTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .oam = &gOamData_AffineNormal_ObjNormal_16x16, + .anims = gAnims_PoisonProjectile, + .images = NULL, + .affineAnims = sAffineAnims_SludgeBombHit, + .callback = AnimSludgeBombHitParticle, +}; + +const struct SpriteTemplate gSyrupBombRedShellSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SHELL_RED, + .paletteTag = ANIM_TAG_SYRUP_BLOB_RED, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = sAnims_SyrupCoat, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAnimSyrupBomb, +}; + +const struct SpriteTemplate gSyrupBombYellowShellSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SHELL_YELLOW, + .paletteTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = sAnims_SyrupCoat, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAnimSyrupBomb, +}; + +const struct SpriteTemplate gSyrupBombRedShellBSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SHELL_RED, + .paletteTag = ANIM_TAG_SYRUP_BLOB_RED, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = sAnims_SyrupStick, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAnimSyrupBomb, +}; + +const struct SpriteTemplate gSyrupBombYellowShellBSpriteTemplate = +{ + .tileTag = ANIM_TAG_SYRUP_SHELL_YELLOW, + .paletteTag = ANIM_TAG_SYRUP_BLOB_YELLOW, + .oam = &gOamData_AffineOff_ObjNormal_64x64, + .anims = sAnims_SyrupStick, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimAnimSyrupBomb, +}; + static void AnimGunkShotImpact(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); @@ -534,3 +652,26 @@ static void AnimBubbleEffect_Step(struct Sprite *sprite) if (sprite->affineAnimEnded) DestroyAnimSprite(sprite); } + +static void AnimSyrupBomb_Step(struct Sprite *sprite) +{ + if (sprite->data[1] > sprite->data[0] - 10) + sprite->invisible = sprite->data[1] & 1; + + if (sprite->data[1] == sprite->data[0]) + DestroyAnimSprite(sprite); + + sprite->data[1]++; +} + +static void AnimAnimSyrupBomb(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == ANIM_TARGET) + { + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 2; + } + + sprite->data[0] = gBattleAnimArgs[1]; + sprite->callback = AnimSyrupBomb_Step; +} diff --git a/src/battle_anim_rock.c b/src/battle_anim_rock.c index c1dc754c1f..6811c857b3 100644 --- a/src/battle_anim_rock.c +++ b/src/battle_anim_rock.c @@ -351,8 +351,7 @@ const struct SpriteTemplate gSeedFlareGreenWavesTemplate = static void AnimStealthRock(struct Sprite *sprite) { - u16 x; - u16 y; + s16 x, y; InitSpritePosToAnimAttacker(sprite, TRUE); SetAverageBattlerPositions(gBattleAnimTarget, FALSE, &x, &y); diff --git a/src/battle_anim_status_effects.c b/src/battle_anim_status_effects.c index b2a1378ac1..7e7ded7676 100644 --- a/src/battle_anim_status_effects.c +++ b/src/battle_anim_status_effects.c @@ -269,8 +269,7 @@ static const struct SpriteTemplate sFlashingCircleImpactSpriteTemplate = .callback = AnimFlashingCircleImpact, }; -// Unused -static u8 Task_FlashingCircleImpacts(u8 battlerId, bool8 red) +static u8 UNUSED Task_FlashingCircleImpacts(u8 battlerId, bool8 red) { u8 battlerSpriteId = gBattlerSpriteIds[battlerId]; u8 taskId = CreateTask(Task_UpdateFlashingCircleImpacts, 10); diff --git a/src/battle_anim_throw.c b/src/battle_anim_throw.c index 86e832e8ec..4d2873a92a 100644 --- a/src/battle_anim_throw.c +++ b/src/battle_anim_throw.c @@ -2656,11 +2656,11 @@ static void SpriteCB_ShinyStars_Diagonal(struct Sprite *sprite) void AnimTask_LoadPokeblockGfx(u8 taskId) { - u8 paletteIndex; + u8 UNUSED paletteIndex; LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[ANIM_TAG_POKEBLOCK - ANIM_SPRITES_START]); LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[ANIM_TAG_POKEBLOCK - ANIM_SPRITES_START]); - paletteIndex = IndexOfSpritePaletteTag(ANIM_TAG_POKEBLOCK); // unused + paletteIndex = IndexOfSpritePaletteTag(ANIM_TAG_POKEBLOCK); DestroyAnimVisualTask(taskId); } diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index d49d645c07..491ca77a96 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -69,6 +69,9 @@ void AnimTask_BlendBattleAnimPalExclude(u8 taskId) selectedPalettes = 0; // fall through case ANIM_ATTACKER: +#ifdef UBFIX + default: +#endif animBattlers[0] = gBattleAnimAttacker; break; case 3: @@ -278,7 +281,7 @@ void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId) u16 species; int spriteId, newSpriteId; u16 var0; - u16 bg1Cnt; + u32 bg1Cnt; struct BattleAnimBgData animBgData; var0 = 0; @@ -347,7 +350,7 @@ static void AnimTask_DrawFallingWhiteLinesOnAttacker_Step(u8 taskId) { struct BattleAnimBgData animBgData; struct Sprite *sprite; - u16 bg1Cnt; + u32 bg1Cnt; gTasks[taskId].data[10] += 4; gBattle_BG1_Y -= 4; @@ -807,11 +810,11 @@ void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId) DestroyAnimVisualTask(taskId); } -void StartMonScrollingBgMask(u8 taskId, int unused, u16 scrollSpeed, u8 battler, bool8 includePartner, u8 numFadeSteps, u8 fadeStepDelay, u8 duration, const u32 *gfx, const u32 *tilemap, const u32 *palette) +void StartMonScrollingBgMask(u8 taskId, int UNUSED unused, u16 scrollSpeed, u8 battler, bool8 includePartner, u8 numFadeSteps, u8 fadeStepDelay, u8 duration, const u32 *gfx, const u32 *tilemap, const u32 *palette) { u16 species; u8 spriteId, spriteId2; - u16 bg1Cnt; + u32 bg1Cnt; struct BattleAnimBgData animBgData; u8 battler2; @@ -916,7 +919,7 @@ static void UpdateMonScrollingBgMask(u8 taskId) | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); if (!IsContest()) { - u16 bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT); + u32 bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT); ((vBgCnt *)&bg1Cnt)->charBaseBlock = 0; SetGpuReg(REG_OFFSET_BG1CNT, bg1Cnt); } diff --git a/src/battle_anim_water.c b/src/battle_anim_water.c index 961f154baa..159b27dec9 100644 --- a/src/battle_anim_water.c +++ b/src/battle_anim_water.c @@ -57,9 +57,6 @@ static void AnimAquaTail(struct Sprite *sprite); static void AnimKnockOffAquaTail(struct Sprite *sprite); static void AnimKnockOffAquaTailStep(struct Sprite *sprite); -static const u8 sUnusedWater_Gfx[] = INCBIN_U8("graphics/battle_anims/unused/water_gfx.4bpp"); -static const u8 sUnusedWater[] = INCBIN_U8("graphics/battle_anims/unused/water.bin"); - static const union AnimCmd sAnim_RainDrop[] = { ANIMCMD_FRAME(0, 2), @@ -587,6 +584,28 @@ const struct SpriteTemplate gAquaTailHitSpriteTemplate = .callback = AnimAquaTail, }; +static const union AnimCmd sAnimCmdAnimatedSpark2[] = { + ANIMCMD_FRAME((8 * 8) / (16 * 16) * 0, 8), + ANIMCMD_FRAME((8 * 8) / (16 * 16) * 1, 8), + ANIMCMD_FRAME((8 * 8) / (16 * 16) * 2, 8), + ANIMCMD_JUMP(0) +}; + +static const union AnimCmd *const sAnimCmdTable_AnimatedSpark2[] = { + sAnimCmdAnimatedSpark2, +}; + +const struct SpriteTemplate gSparkBeamSpriteTemplate = +{ + .tileTag = ANIM_TAG_SPARK_2, + .paletteTag = ANIM_TAG_SPARK_2, + .oam = &gOamData_AffineOff_ObjNormal_16x16, + .anims = sAnimCmdTable_AnimatedSpark2, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimToTargetInSinWave, +}; + static void AnimAquaTail(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); diff --git a/src/battle_arena.c b/src/battle_arena.c index 37c7406ce1..b554c6bdc8 100644 --- a/src/battle_arena.c +++ b/src/battle_arena.c @@ -445,8 +445,7 @@ void BattleArena_DeductSkillPoints(u8 battler, u16 stringId) } } -// Unused -static void UpdateHPAtStart(u8 battler) +static void UNUSED UpdateHPAtStart(u8 battler) { u16 *hpAtStart = gBattleStruct->arenaStartHp; diff --git a/src/battle_bg.c b/src/battle_bg.c index 97d5cc862f..b18962af99 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -685,9 +685,9 @@ const struct BattleBackground sBattleTerrainTable[] = }, }; -static void CB2_UnusedBattleInit(void); +static void UNUSED CB2_UnusedBattleInit(void); -static void UnusedBattleInit(void) +static void UNUSED UnusedBattleInit(void) { u8 spriteId; @@ -697,7 +697,7 @@ static void UnusedBattleInit(void) SetMainCallback2(CB2_UnusedBattleInit); } -static void CB2_UnusedBattleInit(void) +static void UNUSED CB2_UnusedBattleInit(void) { AnimateSprites(); BuildOamBuffer(); @@ -758,23 +758,31 @@ void DrawMainBattleBackground(void) LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); LoadCompressedPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } - else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON) + else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { - LZDecompressVram(gBattleTerrainTiles_Cave, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Cave, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_Groudon, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); - } - else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE) - { - LZDecompressVram(gBattleTerrainTiles_Water, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Water, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_Kyogre, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); - } - else if (gBattleTypeFlags & BATTLE_TYPE_RAYQUAZA) - { - LZDecompressVram(gBattleTerrainTiles_Rayquaza, (void *)(BG_CHAR_ADDR(2))); - LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void *)(BG_SCREEN_ADDR(26))); - LoadCompressedPalette(gBattleTerrainPalette_Rayquaza, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL)) + { + case SPECIES_GROUDON: + LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleTerrainPalette_Groudon, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + break; + case SPECIES_KYOGRE: + LZDecompressVram(gBattleTerrainTiles_Water, (void*)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleTerrainPalette_Kyogre, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + break; + case SPECIES_RAYQUAZA: + LZDecompressVram(gBattleTerrainTiles_Rayquaza, (void*)(BG_CHAR_ADDR(2))); + LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(gBattleTerrainPalette_Rayquaza, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + break; + default: + LZDecompressVram(sBattleTerrainTable[gBattleTerrain].tileset, (void *)(BG_CHAR_ADDR(2))); + LZDecompressVram(sBattleTerrainTable[gBattleTerrain].tilemap, (void *)(BG_SCREEN_ADDR(26))); + LoadCompressedPalette(sBattleTerrainTable[gBattleTerrain].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); + break; + } } else { @@ -856,11 +864,10 @@ void LoadBattleTextboxAndBackground(void) CopyBgTilemapBufferToVram(0); LoadCompressedPalette(gBattleTextboxPalette, BG_PLTT_ID(0), 2 * PLTT_SIZE_4BPP); LoadBattleMenuWindowGfx(); -#if B_TERRAIN_BG_CHANGE == TRUE - DrawTerrainTypeBattleBackground(); -#else - DrawMainBattleBackground(); -#endif + if (B_TERRAIN_BG_CHANGE == TRUE) + DrawTerrainTypeBattleBackground(); + else + DrawMainBattleBackground(); } static void DrawLinkBattleParticipantPokeballs(u8 taskId, u8 multiplayerId, u8 bgId, u8 destX, u8 destY) @@ -1156,20 +1163,27 @@ void DrawBattleEntryBackground(void) CopyBgTilemapBufferToVram(2); } } - else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON) + else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { - LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void *)(BG_CHAR_ADDR(1))); - LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void *)(BG_SCREEN_ADDR(28))); - } - else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE) - { - LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void *)(BG_CHAR_ADDR(1))); - LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void *)(BG_SCREEN_ADDR(28))); - } - else if (gBattleTypeFlags & BATTLE_TYPE_RAYQUAZA) - { - LZDecompressVram(gBattleTerrainAnimTiles_Rayquaza, (void *)(BG_CHAR_ADDR(1))); - LZDecompressVram(gBattleTerrainAnimTilemap_Rayquaza, (void *)(BG_SCREEN_ADDR(28))); + switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL)) + { + case SPECIES_GROUDON: + LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void*)(BG_CHAR_ADDR(1))); + LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void*)(BG_SCREEN_ADDR(28))); + break; + case SPECIES_KYOGRE: + LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void*)(BG_CHAR_ADDR(1))); + LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void*)(BG_SCREEN_ADDR(28))); + break; + case SPECIES_RAYQUAZA: + LZDecompressVram(gBattleTerrainAnimTiles_Rayquaza, (void*)(BG_CHAR_ADDR(1))); + LZDecompressVram(gBattleTerrainAnimTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(28))); + break; + default: + LZDecompressVram(sBattleTerrainTable[gBattleTerrain].entryTileset, (void *)(BG_CHAR_ADDR(1))); + LZDecompressVram(sBattleTerrainTable[gBattleTerrain].entryTilemap, (void *)(BG_SCREEN_ADDR(28))); + break; + } } else { @@ -1224,9 +1238,17 @@ bool8 LoadChosenBattleElement(u8 caseId) { LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2))); } - else if (gBattleTypeFlags & BATTLE_TYPE_GROUDON) + else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { - LZDecompressVram(gBattleTerrainTiles_Cave, (void *)(BG_CHAR_ADDR(2))); + switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL)) + { + case SPECIES_GROUDON: + LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(BG_CHAR_ADDR(2))); + break; + case SPECIES_KYOGRE: + LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(BG_SCREEN_ADDR(2))); + break; + } } else { @@ -1283,10 +1305,10 @@ bool8 LoadChosenBattleElement(u8 caseId) { LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26))); } - else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) + else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { - if (gGameVersion == VERSION_RUBY) - LZDecompressVram(gBattleTerrainTilemap_Cave, (void *)(BG_SCREEN_ADDR(26))); + if (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) == SPECIES_GROUDON) + LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(BG_SCREEN_ADDR(26))); else LZDecompressVram(gBattleTerrainTilemap_Water, (void *)(BG_SCREEN_ADDR(26))); } @@ -1345,9 +1367,9 @@ bool8 LoadChosenBattleElement(u8 caseId) { LoadCompressedPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); } - else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) + else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) { - if (gGameVersion == VERSION_RUBY) + if (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) == SPECIES_GROUDON) LoadCompressedPalette(gBattleTerrainPalette_Groudon, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); else LoadCompressedPalette(gBattleTerrainPalette_Kyogre, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP); diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index a74ca529b6..6b09f0d41f 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -38,6 +38,7 @@ #include "constants/songs.h" #include "constants/trainers.h" #include "trainer_hill.h" +#include "test_runner.h" static void OpponentHandleLoadMonSprite(u32 battler); static void OpponentHandleSwitchInAnim(u32 battler); @@ -559,10 +560,15 @@ static void OpponentHandleChooseMove(u32 battler) } if (ShouldUseZMove(battler, gBattlerTarget, chosenMove)) QueueZMove(battler, chosenMove); - if (CanMegaEvolve(battler)) // If opponent can mega evolve, do it. + // If opponent can Mega Evolve, do it. + if (CanMegaEvolve(battler)) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (RET_MEGA_EVOLUTION) | (gBattlerTarget << 8)); + // If opponent can Ultra Burst, do it. else if (CanUltraBurst(battler)) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (RET_ULTRA_BURST) | (gBattlerTarget << 8)); + // If opponent can Dynamax and is on final Pokemon, do it. + else if (CanDynamax(battler) && CountAIAliveNonEggMonsExcept(gBattlerPartyIndexes[battler]) == 0) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (RET_DYNAMAX) | (gBattlerTarget << 8)); else BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (gBattlerTarget << 8)); } @@ -589,9 +595,8 @@ static void OpponentHandleChooseMove(u32 battler) target = GetBattlerAtPosition(Random() & 2); } while (!CanTargetBattler(battler, target, move)); - #if B_WILD_NATURAL_ENEMIES == TRUE // Don't bother to loop through table if the move can't attack ally - if (!(gBattleMoves[move].target & MOVE_TARGET_BOTH)) + if (B_WILD_NATURAL_ENEMIES == TRUE && !(gBattleMoves[move].target & MOVE_TARGET_BOTH)) { u16 i, speciesAttacker, speciesTarget, isPartnerEnemy = FALSE; static const u16 naturalEnemies[][2] = @@ -621,8 +626,9 @@ static void OpponentHandleChooseMove(u32 battler) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (target << 8)); } else - #endif + { BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (target << 8)); + } } else BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, (chosenMoveId) | (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) << 8)); @@ -650,7 +656,7 @@ static void OpponentHandleChoosePokemon(u32 battler) // Switching out else if (*(gBattleStruct->AI_monToSwitchIntoId + battler) == PARTY_SIZE) { - chosenMonId = GetMostSuitableMonToSwitchInto(battler); + chosenMonId = GetMostSuitableMonToSwitchInto(battler, TRUE); if (chosenMonId == PARTY_SIZE) { s32 battler1, battler2, firstId, lastId; @@ -689,6 +695,9 @@ static void OpponentHandleChoosePokemon(u32 battler) *(gBattleStruct->AI_monToSwitchIntoId + battler) = PARTY_SIZE; *(gBattleStruct->monToSwitchIntoId + battler) = chosenMonId; } + #if TESTING + TestRunner_Battle_CheckSwitch(battler, chosenMonId); + #endif // TESTING BtlController_EmitChosenMonReturnValue(battler, BUFFER_B, chosenMonId, NULL); OpponentBufferExecCompleted(battler); diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 3a464910e0..43e84f1bff 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -26,10 +26,12 @@ #include "sound.h" #include "string_util.h" #include "task.h" +#include "test_runner.h" #include "text.h" #include "util.h" #include "window.h" #include "constants/battle_anim.h" +#include "constants/hold_effects.h" #include "constants/items.h" #include "constants/moves.h" #include "constants/party_menu.h" @@ -45,7 +47,6 @@ static void PlayerHandleTrainerSlide(u32 battler); static void PlayerHandleTrainerSlideBack(u32 battler); static void PlayerHandlePaletteFade(u32 battler); static void PlayerHandleSuccessBallThrowAnim(u32 battler); -static void PlayerHandleBallThrowAnim(u32 battler); static void PlayerHandlePause(u32 battler); static void PlayerHandleMoveAnimation(u32 battler); static void PlayerHandlePrintString(u32 battler); @@ -202,7 +203,7 @@ static void CompleteOnBattlerSpritePosX_0(u32 battler) static u16 GetPrevBall(u16 ballId) { u16 ballPrev; - u32 i, j; + s32 i, j; CompactItemsInBagPocket(&gBagPockets[BALLS_POCKET]); for (i = 0; i < gBagPockets[BALLS_POCKET].capacity; i++) { @@ -218,28 +219,29 @@ static u16 GetPrevBall(u16 ballId) } } i--; - return gBagPockets[BALLS_POCKET].itemSlots[i].itemId; + break; } } + return gBagPockets[BALLS_POCKET].itemSlots[i].itemId; } static u16 GetNextBall(u16 ballId) { - u16 ballNext; - u32 i; + u16 ballNext = 0; + s32 i; CompactItemsInBagPocket(&gBagPockets[BALLS_POCKET]); for (i = 0; i < gBagPockets[BALLS_POCKET].capacity; i++) { if (ballId == gBagPockets[BALLS_POCKET].itemSlots[i].itemId) { - i++; - ballNext = gBagPockets[BALLS_POCKET].itemSlots[i].itemId; - if (ballNext == ITEM_NONE) - return gBagPockets[BALLS_POCKET].itemSlots[0].itemId; // Zeroth slot - else - return ballNext; + ballNext = gBagPockets[BALLS_POCKET].itemSlots[i+1].itemId; + break; } } + if (ballNext == ITEM_NONE) + return gBagPockets[BALLS_POCKET].itemSlots[0].itemId; // Zeroth slot + else + return ballNext; } static void HandleInputChooseAction(u32 battler) @@ -388,6 +390,16 @@ static void HandleInputChooseAction(u32 battler) BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_CANCEL_PARTNER, 0); PlayerBufferExecCompleted(battler); } + else if (B_QUICK_MOVE_CURSOR_TO_RUN) + { + if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER)) // If wild battle, pressing B moves cursor to "Run". + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[battler]); + gActionSelectionCursor[battler] = 3; + ActionSelectionCreateCursorAt(gActionSelectionCursor[battler], 0); + } + } } else if (JOY_NEW(START_BUTTON)) { @@ -438,6 +450,8 @@ static void HandleInputChooseTarget(u32 battler) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_MEGA_EVOLUTION | (gMultiUsePlayerCursor << 8)); else if (gBattleStruct->burst.playerSelect) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_ULTRA_BURST | (gMultiUsePlayerCursor << 8)); + else if (gBattleStruct->dynamax.playerSelect) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_DYNAMAX | (gMultiUsePlayerCursor << 8)); else BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8)); EndBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX); @@ -598,6 +612,8 @@ static void HandleInputShowEntireFieldTargets(u32 battler) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_MEGA_EVOLUTION | (gMultiUsePlayerCursor << 8)); else if (gBattleStruct->burst.playerSelect) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_ULTRA_BURST | (gMultiUsePlayerCursor << 8)); + else if (gBattleStruct->dynamax.playerSelect) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_DYNAMAX | (gMultiUsePlayerCursor << 8)); else BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8)); HideTriggerSprites(); @@ -628,6 +644,8 @@ static void HandleInputShowTargets(u32 battler) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_MEGA_EVOLUTION | (gMultiUsePlayerCursor << 8)); else if (gBattleStruct->burst.playerSelect) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_ULTRA_BURST | (gMultiUsePlayerCursor << 8)); + else if (gBattleStruct->dynamax.playerSelect) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_DYNAMAX | (gMultiUsePlayerCursor << 8)); else BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8)); HideTriggerSprites(); @@ -689,6 +707,10 @@ static void HandleInputChooseMove(u32 battler) moveTarget = MOVE_TARGET_SELECTED; //damaging z moves always have selected target } + // Status moves turn into Max Guard when Dynamaxed, targets user. + if ((IsDynamaxed(battler) || gBattleStruct->dynamax.playerSelect)) + moveTarget = gBattleMoves[GetMaxMove(battler, moveInfo->moves[gMoveSelectionCursor[battler]])].target; + if (moveTarget & MOVE_TARGET_USER) gMultiUsePlayerCursor = battler; else @@ -716,25 +738,26 @@ static void HandleInputChooseMove(u32 battler) canSelectTarget = 0; } - #if B_SHOW_TARGETS == TRUE - // Show all available targets for multi-target moves - if ((moveTarget & MOVE_TARGET_ALL_BATTLERS) == MOVE_TARGET_ALL_BATTLERS) + if (B_SHOW_TARGETS == TRUE) { - u32 i = 0; - for (i = 0; i < gBattlersCount; i++) - TryShowAsTarget(i); + // Show all available targets for multi-target moves + if ((moveTarget & MOVE_TARGET_ALL_BATTLERS) == MOVE_TARGET_ALL_BATTLERS) + { + u32 i = 0; + for (i = 0; i < gBattlersCount; i++) + TryShowAsTarget(i); - canSelectTarget = 3; + canSelectTarget = 3; + } + else if (moveTarget & (MOVE_TARGET_OPPONENTS_FIELD | MOVE_TARGET_BOTH | MOVE_TARGET_FOES_AND_ALLY)) + { + TryShowAsTarget(gMultiUsePlayerCursor); + TryShowAsTarget(BATTLE_PARTNER(gMultiUsePlayerCursor)); + if (moveTarget & MOVE_TARGET_FOES_AND_ALLY) + TryShowAsTarget(BATTLE_PARTNER(battler)); + canSelectTarget = 2; + } } - else if (moveTarget & (MOVE_TARGET_OPPONENTS_FIELD | MOVE_TARGET_BOTH | MOVE_TARGET_FOES_AND_ALLY)) - { - TryShowAsTarget(gMultiUsePlayerCursor); - TryShowAsTarget(BATTLE_PARTNER(gMultiUsePlayerCursor)); - if (moveTarget & MOVE_TARGET_FOES_AND_ALLY) - TryShowAsTarget(BATTLE_PARTNER(battler)); - canSelectTarget = 2; - } - #endif } switch (canSelectTarget) @@ -745,6 +768,8 @@ static void HandleInputChooseMove(u32 battler) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_MEGA_EVOLUTION | (gMultiUsePlayerCursor << 8)); else if (gBattleStruct->burst.playerSelect) BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_ULTRA_BURST | (gMultiUsePlayerCursor << 8)); + else if (gBattleStruct->dynamax.playerSelect) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | RET_DYNAMAX | (gMultiUsePlayerCursor << 8)); else BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, gMoveSelectionCursor[battler] | (gMultiUsePlayerCursor << 8)); HideTriggerSprites(); @@ -782,6 +807,7 @@ static void HandleInputChooseMove(u32 battler) { gBattleStruct->mega.playerSelect = FALSE; gBattleStruct->burst.playerSelect = FALSE; + gBattleStruct->dynamax.playerSelect = FALSE; gBattleStruct->zmove.viable = FALSE; BtlController_EmitTwoReturnValues(battler, BUFFER_B, 10, 0xFFFF); HideTriggerSprites(); @@ -882,6 +908,14 @@ static void HandleInputChooseMove(u32 battler) else ReloadMoveNames(battler); } + else if (CanDynamax(battler)) + { + gBattleStruct->dynamax.playerSelect ^= 1; + MoveSelectionDisplayMoveNames(battler); + MoveSelectionCreateCursorAt(gMoveSelectionCursor[battler], 0); + ChangeDynamaxTriggerSprite(gBattleStruct->dynamax.triggerSpriteId, gBattleStruct->dynamax.playerSelect); + PlaySE(SE_SELECT); + } } } @@ -889,6 +923,7 @@ static void ReloadMoveNames(u32 battler) { gBattleStruct->mega.playerSelect = FALSE; gBattleStruct->burst.playerSelect = FALSE; + gBattleStruct->dynamax.playerSelect = FALSE; gBattleStruct->zmove.viewing = FALSE; MoveSelectionDestroyCursorAt(battler); MoveSelectionDisplayMoveNames(battler); @@ -897,7 +932,7 @@ static void ReloadMoveNames(u32 battler) MoveSelectionDisplayMoveType(battler); } -static u32 HandleMoveInputUnused(u32 battler) +static u32 UNUSED HandleMoveInputUnused(u32 battler) { u32 var = 0; @@ -1413,7 +1448,18 @@ static void Task_GiveExpToMon(u8 taskId) if (currExp + gainedExp >= nextLvlExp) { SetMonData(mon, MON_DATA_EXP, &nextLvlExp); + gBattleStruct->dynamax.levelUpHP = GetMonData(mon, MON_DATA_HP) \ + + UQ_4_12_TO_INT((gBattleScripting.levelUpHP * UQ_4_12(1.5)) + UQ_4_12_ROUND); CalculateMonStats(mon); + + // Reapply Dynamax HP multiplier after stats are recalculated. + if (IsDynamaxed(battler) && monId == gBattlerPartyIndexes[battler]) + { + ApplyDynamaxHPMultiplier(battler, mon); + gBattleMons[battler].hp = gBattleStruct->dynamax.levelUpHP; + SetMonData(mon, MON_DATA_HP, &gBattleMons[battler].hp); + } + gainedExp -= nextLvlExp - currExp; BtlController_EmitTwoReturnValues(battler, BUFFER_B, RET_VALUE_LEVELED_UP, gainedExp); @@ -1452,6 +1498,7 @@ static void Task_PrepareToGiveExpWithExpBar(u8 taskId) exp -= currLvlExp; expToNextLvl = gExperienceTables[gSpeciesInfo[species].growthRate][level + 1] - currLvlExp; SetBattleBarStruct(battler, gHealthboxSpriteIds[battler], expToNextLvl, exp, -gainedExp); + TestRunner_Battle_RecordExp(battler, exp, -gainedExp); PlaySE(SE_EXP); gTasks[taskId].func = Task_GiveExpWithExpBar; } @@ -1485,7 +1532,18 @@ static void Task_GiveExpWithExpBar(u8 taskId) if (currExp + gainedExp >= expOnNextLvl) { SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &expOnNextLvl); + gBattleStruct->dynamax.levelUpHP = GetMonData(&gPlayerParty[monId], MON_DATA_HP) \ + + UQ_4_12_TO_INT((gBattleScripting.levelUpHP * UQ_4_12(1.5)) + UQ_4_12_ROUND); CalculateMonStats(&gPlayerParty[monId]); + + // Reapply Dynamax HP multiplier after stats are recalculated. + if (IsDynamaxed(battler) && monId == gBattlerPartyIndexes[battler]) + { + ApplyDynamaxHPMultiplier(battler, &gPlayerParty[monId]); + gBattleMons[battler].hp = gBattleStruct->dynamax.levelUpHP; + SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleMons[battler].hp); + } + gainedExp -= expOnNextLvl - currExp; BtlController_EmitTwoReturnValues(battler, BUFFER_B, RET_VALUE_LEVELED_UP, gainedExp); gTasks[taskId].func = Task_LaunchLvlUpAnim; @@ -1632,7 +1690,11 @@ static void MoveSelectionDisplayMoveNames(u32 battler) for (i = 0; i < MAX_MON_MOVES; i++) { MoveSelectionDestroyCursorAt(i); - StringCopy(gDisplayedStringBattle, gMoveNames[moveInfo->moves[i]]); + if ((gBattleStruct->dynamax.playerSelect && CanDynamax(battler)) + || IsDynamaxed(battler)) + StringCopy(gDisplayedStringBattle, gMoveNames[GetMaxMove(battler, moveInfo->moves[i])]); + else + StringCopy(gDisplayedStringBattle, gMoveNames[moveInfo->moves[i]]); // Prints on windows B_WIN_MOVE_NAME_1, B_WIN_MOVE_NAME_2, B_WIN_MOVE_NAME_3, B_WIN_MOVE_NAME_4 BattlePutTextOnWindow(gDisplayedStringBattle, i + B_WIN_MOVE_NAME_1); if (moveInfo->moves[i] != MOVE_NONE) @@ -1666,6 +1728,9 @@ static void MoveSelectionDisplayPpNumber(u32 battler) static void MoveSelectionDisplayMoveType(u32 battler) { u8 *txtPtr; + u8 type; + u32 itemId; + struct Pokemon *mon; struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[battler][4]); txtPtr = StringCopy(gDisplayedStringBattle, gText_MoveInterfaceType); @@ -1673,7 +1738,20 @@ static void MoveSelectionDisplayMoveType(u32 battler) *(txtPtr)++ = EXT_CTRL_CODE_FONT; *(txtPtr)++ = FONT_NORMAL; - StringCopy(txtPtr, gTypeNames[gBattleMoves[moveInfo->moves[gMoveSelectionCursor[battler]]].type]); + if (moveInfo->moves[gMoveSelectionCursor[battler]] == MOVE_IVY_CUDGEL) + { + mon = &GetSideParty(GetBattlerSide(battler))[gBattlerPartyIndexes[battler]]; + itemId = GetMonData(mon, MON_DATA_HELD_ITEM); + + if (ItemId_GetHoldEffect(itemId) == HOLD_EFFECT_MASK) + type = ItemId_GetSecondaryId(itemId); + else + type = gBattleMoves[MOVE_IVY_CUDGEL].type; + } + else + type = gBattleMoves[moveInfo->moves[gMoveSelectionCursor[battler]]].type; + + StringCopy(txtPtr, gTypeNames[type]); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_TYPE); } @@ -1787,7 +1865,7 @@ static void PlayerHandleDrawTrainerPic(u32 battler) { bool32 isFrontPic; s16 xPos, yPos; - u32 trainerPicId, gender; + u32 trainerPicId; trainerPicId = PlayerGetTrainerBackPicId(); if (gBattleTypeFlags & BATTLE_TYPE_MULTI) @@ -1850,7 +1928,7 @@ static void PlayerHandleSuccessBallThrowAnim(u32 battler) BtlController_HandleSuccessBallThrowAnim(battler, gBattlerTarget, B_ANIM_BALL_THROW, TRUE); } -static void PlayerHandleBallThrowAnim(u32 battler) +void PlayerHandleBallThrowAnim(u32 battler) { BtlController_HandleBallThrowAnim(battler, gBattlerTarget, B_ANIM_BALL_THROW, TRUE); } @@ -1976,6 +2054,7 @@ static void PlayerHandleChooseMove(u32 battler) InitMoveSelectionsVarsAndStrings(battler); gBattleStruct->mega.playerSelect = FALSE; gBattleStruct->burst.playerSelect = FALSE; + gBattleStruct->dynamax.playerSelect = FALSE; if (!IsMegaTriggerSpriteActive()) gBattleStruct->mega.triggerSpriteId = 0xFF; if (CanMegaEvolve(battler)) @@ -1984,6 +2063,10 @@ static void PlayerHandleChooseMove(u32 battler) gBattleStruct->burst.triggerSpriteId = 0xFF; if (CanUltraBurst(battler)) CreateBurstTriggerSprite(battler, 0); + if (!IsDynamaxTriggerSpriteActive()) + gBattleStruct->dynamax.triggerSpriteId = 0xFF; + if (CanDynamax(battler)) + CreateDynamaxTriggerSprite(battler, 0); if (!IsZMoveTriggerSpriteActive()) gBattleStruct->zmove.triggerSpriteId = 0xFF; diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 361460ac72..5155db49ec 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -176,6 +176,7 @@ void Controller_PlayerPartnerShowIntroHealthbox(u32 battler) && ++gBattleSpritesDataPtr->healthBoxesData[battler].introEndDelay != 1) { gBattleSpritesDataPtr->healthBoxesData[battler].introEndDelay = 0; + TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]); if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { @@ -399,7 +400,7 @@ static void PlayerPartnerHandleChoosePokemon(u32 battler) // Switching out else if (gBattleStruct->monToSwitchIntoId[battler] >= PARTY_SIZE || !IsValidForBattle(&gPlayerParty[gBattleStruct->monToSwitchIntoId[battler]])) { - chosenMonId = GetMostSuitableMonToSwitchInto(battler); + chosenMonId = GetMostSuitableMonToSwitchInto(battler, TRUE); if (chosenMonId == PARTY_SIZE || !IsValidForBattle(&gPlayerParty[chosenMonId])) // just switch to the next mon { diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index 2443b56f74..58ef101ec9 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -437,25 +437,7 @@ static void RecordedOpponentHandleMoveAnimation(u32 battler) static void RecordedOpponentHandlePrintString(u32 battler) { - u16 *stringId; - - gBattle_BG0_X = 0; - gBattle_BG0_Y = 0; - stringId = (u16 *)(&gBattleResources->bufferA[battler][2]); - BufferStringBattle(*stringId, battler); - - if (gTestRunnerEnabled) - { - TestRunner_Battle_RecordMessage(gDisplayedStringBattle); - if (gTestRunnerHeadless) - { - RecordedOpponentBufferExecCompleted(battler); - return; - } - } - - BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG); - gBattlerControllerFuncs[battler] = Controller_WaitForString; + BtlController_HandlePrintString(battler, FALSE, FALSE); } static void RecordedOpponentHandleChooseAction(u32 battler) @@ -501,27 +483,7 @@ static void RecordedOpponentHandleChoosePokemon(u32 battler) static void RecordedOpponentHandleHealthBarUpdate(u32 battler) { - s16 hpVal; - s32 maxHP, curHP; - - LoadBattleBarGfx(0); - hpVal = gBattleResources->bufferA[battler][2] | (gBattleResources->bufferA[battler][3] << 8); - - maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_MAX_HP); - curHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_HP); - - if (hpVal != INSTANT_HP_BAR_DROP) - { - SetBattleBarStruct(battler, gHealthboxSpriteIds[battler], maxHP, curHP, hpVal); - TestRunner_Battle_RecordHP(battler, curHP, min(maxHP, max(0, curHP - hpVal))); - } - else - { - SetBattleBarStruct(battler, gHealthboxSpriteIds[battler], maxHP, 0, hpVal); - TestRunner_Battle_RecordHP(battler, curHP, 0); - } - - gBattlerControllerFuncs[battler] = Controller_WaitForHealthBar; + BtlController_HandleHealthBarUpdate(battler, FALSE); } static void RecordedOpponentHandleStatusIconUpdate(u32 battler) diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c index 9c8acdbd17..39e869867e 100644 --- a/src/battle_controller_recorded_player.c +++ b/src/battle_controller_recorded_player.c @@ -66,7 +66,7 @@ static void (*const sRecordedPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(u32 ba [CONTROLLER_FAINTANIMATION] = BtlController_HandleFaintAnimation, [CONTROLLER_PALETTEFADE] = BtlController_Empty, [CONTROLLER_SUCCESSBALLTHROWANIM] = BtlController_Empty, - [CONTROLLER_BALLTHROWANIM] = BtlController_Empty, + [CONTROLLER_BALLTHROWANIM] = PlayerHandleBallThrowAnim, [CONTROLLER_PAUSE] = BtlController_Empty, [CONTROLLER_MOVEANIMATION] = RecordedPlayerHandleMoveAnimation, [CONTROLLER_PRINTSTRING] = RecordedPlayerHandlePrintString, @@ -78,7 +78,7 @@ static void (*const sRecordedPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(u32 ba [CONTROLLER_CHOOSEPOKEMON] = RecordedPlayerHandleChoosePokemon, [CONTROLLER_23] = BtlController_Empty, [CONTROLLER_HEALTHBARUPDATE] = RecordedPlayerHandleHealthBarUpdate, - [CONTROLLER_EXPUPDATE] = BtlController_Empty, + [CONTROLLER_EXPUPDATE] = PlayerHandleExpUpdate, [CONTROLLER_STATUSICONUPDATE] = RecordedPlayerHandleStatusIconUpdate, [CONTROLLER_STATUSANIMATION] = RecordedPlayerHandleStatusAnimation, [CONTROLLER_STATUSXOR] = BtlController_Empty, @@ -427,25 +427,7 @@ static void RecordedPlayerHandleMoveAnimation(u32 battler) static void RecordedPlayerHandlePrintString(u32 battler) { - u16 *stringId; - - gBattle_BG0_X = 0; - gBattle_BG0_Y = 0; - stringId = (u16 *)(&gBattleResources->bufferA[battler][2]); - BufferStringBattle(*stringId, battler); - - if (gTestRunnerEnabled) - { - TestRunner_Battle_RecordMessage(gDisplayedStringBattle); - if (gTestRunnerHeadless) - { - RecordedPlayerBufferExecCompleted(battler); - return; - } - } - - BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG); - gBattlerControllerFuncs[battler] = Controller_WaitForString; + BtlController_HandlePrintString(battler, FALSE, FALSE); } static void ChooseActionInBattlePalace(u32 battler) @@ -507,28 +489,7 @@ static void RecordedPlayerHandleChoosePokemon(u32 battler) static void RecordedPlayerHandleHealthBarUpdate(u32 battler) { - s16 hpVal; - s32 maxHP, curHP; - - LoadBattleBarGfx(0); - hpVal = gBattleResources->bufferA[battler][2] | (gBattleResources->bufferA[battler][3] << 8); - - maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_MAX_HP); - curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_HP); - - if (hpVal != INSTANT_HP_BAR_DROP) - { - SetBattleBarStruct(battler, gHealthboxSpriteIds[battler], maxHP, curHP, hpVal); - TestRunner_Battle_RecordHP(battler, curHP, min(maxHP, max(0, curHP - hpVal))); - } - else - { - SetBattleBarStruct(battler, gHealthboxSpriteIds[battler], maxHP, 0, hpVal); - UpdateHpTextInHealthbox(gHealthboxSpriteIds[battler], HP_CURRENT, 0, maxHP); - TestRunner_Battle_RecordHP(battler, curHP, 0); - } - - gBattlerControllerFuncs[battler] = Controller_WaitForHealthBar; + BtlController_HandleHealthBarUpdate(battler, TRUE); } static void RecordedPlayerHandleStatusIconUpdate(u32 battler) diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index 2069082d8c..b5a64c286b 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -184,6 +184,13 @@ static void HandleInputChooseAction(u32 battler) ActionSelectionCreateCursorAt(gActionSelectionCursor[battler], 0); } } + else if (B_QUICK_MOVE_CURSOR_TO_RUN && JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[battler]); + gActionSelectionCursor[battler] = 3; + ActionSelectionCreateCursorAt(gActionSelectionCursor[battler], 0); + } } static void Controller_WaitForHealthbox(u32 battler) diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 5deadd26ed..885e9394bb 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -19,6 +19,7 @@ #include "string_util.h" #include "sound.h" #include "task.h" +#include "test_runner.h" #include "util.h" #include "text.h" #include "constants/abilities.h" @@ -935,8 +936,7 @@ void BtlController_EmitGetMonData(u32 battler, u32 bufferId, u8 requestId, u8 mo PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 4); } -// Unused -static void BtlController_EmitGetRawMonData(u32 battler, u32 bufferId, u8 monId, u8 bytes) +static void UNUSED BtlController_EmitGetRawMonData(u32 battler, u32 bufferId, u8 monId, u8 bytes) { gBattleResources->transferBuffer[0] = CONTROLLER_GETRAWMONDATA; gBattleResources->transferBuffer[1] = monId; @@ -957,8 +957,7 @@ void BtlController_EmitSetMonData(u32 battler, u32 bufferId, u8 requestId, u8 mo PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 3 + bytes); } -// Unused -static void BtlController_EmitSetRawMonData(u32 battler, u32 bufferId, u8 monId, u8 bytes, void *data) +static void UNUSED BtlController_EmitSetRawMonData(u32 battler, u32 bufferId, u8 monId, u8 bytes, void *data) { s32 i; @@ -1031,8 +1030,7 @@ void BtlController_EmitFaintAnimation(u32 battler, u32 bufferId) PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 4); } -// Unused -static void BtlController_EmitPaletteFade(u32 battler, u32 bufferId) +static void UNUSED BtlController_EmitPaletteFade(u32 battler, u32 bufferId) { gBattleResources->transferBuffer[0] = CONTROLLER_PALETTEFADE; gBattleResources->transferBuffer[1] = CONTROLLER_PALETTEFADE; @@ -1041,8 +1039,7 @@ static void BtlController_EmitPaletteFade(u32 battler, u32 bufferId) PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 4); } -// Unused -static void BtlController_EmitSuccessBallThrowAnim(u32 battler, u32 bufferId) +static void UNUSED BtlController_EmitSuccessBallThrowAnim(u32 battler, u32 bufferId) { gBattleResources->transferBuffer[0] = CONTROLLER_SUCCESSBALLTHROWANIM; gBattleResources->transferBuffer[1] = CONTROLLER_SUCCESSBALLTHROWANIM; @@ -1058,8 +1055,7 @@ void BtlController_EmitBallThrowAnim(u32 battler, u32 bufferId, u8 caseId) PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 2); } -// Unused -static void BtlController_EmitPause(u32 battler, u32 bufferId, u8 toWait, void *data) +static void UNUSED BtlController_EmitPause(u32 battler, u32 bufferId, u8 toWait, void *data) { s32 i; @@ -1219,8 +1215,7 @@ void BtlController_EmitChoosePokemon(u32 battler, u32 bufferId, u8 caseId, u8 sl PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 8); // Only 7 bytes were written. } -// Unused -static void BtlController_EmitCmd23(u32 battler, u32 bufferId) +static void UNUSED BtlController_EmitCmd23(u32 battler, u32 bufferId) { gBattleResources->transferBuffer[0] = CONTROLLER_23; gBattleResources->transferBuffer[1] = CONTROLLER_23; @@ -1275,8 +1270,7 @@ void BtlController_EmitStatusAnimation(u32 battler, u32 bufferId, bool8 status2, PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 6); } -// Unused -static void BtlController_EmitStatusXor(u32 battler, u32 bufferId, u8 b) +static void UNUSED BtlController_EmitStatusXor(u32 battler, u32 bufferId, u8 b) { gBattleResources->transferBuffer[0] = CONTROLLER_STATUSXOR; gBattleResources->transferBuffer[1] = b; @@ -1296,8 +1290,7 @@ void BtlController_EmitDataTransfer(u32 battler, u32 bufferId, u16 size, void *d PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, size + 4); } -// Unused -static void BtlController_EmitDMA3Transfer(u32 battler, u32 bufferId, void *dst, u16 size, void *data) +static void UNUSED BtlController_EmitDMA3Transfer(u32 battler, u32 bufferId, void *dst, u16 size, void *data) { s32 i; @@ -1313,8 +1306,7 @@ static void BtlController_EmitDMA3Transfer(u32 battler, u32 bufferId, void *dst, PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, size + 7); } -// Unused -static void BtlController_EmitPlayBGM(u32 battler, u32 bufferId, u16 songId, void *data) +static void UNUSED BtlController_EmitPlayBGM(u32 battler, u32 bufferId, u16 songId, void *data) { s32 i; @@ -1329,8 +1321,7 @@ static void BtlController_EmitPlayBGM(u32 battler, u32 bufferId, u16 songId, voi PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, songId + 3); } -// Unused -static void BtlController_EmitCmd32(u32 battler, u32 bufferId, u16 size, void *data) +static void UNUSED BtlController_EmitCmd32(u32 battler, u32 bufferId, u16 size, void *data) { s32 i; @@ -1382,8 +1373,7 @@ void BtlController_EmitOneReturnValue_Duplicate(u32 battler, u32 bufferId, u16 r PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 4); } -// Unused -static void BtlController_EmitClearUnkVar(u32 battler, u32 bufferId) +static void UNUSED BtlController_EmitClearUnkVar(u32 battler, u32 bufferId) { gBattleResources->transferBuffer[0] = CONTROLLER_CLEARUNKVAR; gBattleResources->transferBuffer[1] = CONTROLLER_CLEARUNKVAR; @@ -1392,16 +1382,14 @@ static void BtlController_EmitClearUnkVar(u32 battler, u32 bufferId) PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 4); } -// Unused -static void BtlController_EmitSetUnkVar(u32 battler, u32 bufferId, u8 b) +static void UNUSED BtlController_EmitSetUnkVar(u32 battler, u32 bufferId, u8 b) { gBattleResources->transferBuffer[0] = CONTROLLER_SETUNKVAR; gBattleResources->transferBuffer[1] = b; PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 2); } -// Unused -static void BtlController_EmitClearUnkFlag(u32 battler, u32 bufferId) +static void UNUSED BtlController_EmitClearUnkFlag(u32 battler, u32 bufferId) { gBattleResources->transferBuffer[0] = CONTROLLER_CLEARUNKFLAG; gBattleResources->transferBuffer[1] = CONTROLLER_CLEARUNKFLAG; @@ -1410,8 +1398,7 @@ static void BtlController_EmitClearUnkFlag(u32 battler, u32 bufferId) PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 4); } -// Unused -static void BtlController_EmitToggleUnkFlag(u32 battler, u32 bufferId) +static void UNUSED BtlController_EmitToggleUnkFlag(u32 battler, u32 bufferId) { gBattleResources->transferBuffer[0] = CONTROLLER_TOGGLEUNKFLAG; gBattleResources->transferBuffer[1] = CONTROLLER_TOGGLEUNKFLAG; @@ -1521,13 +1508,14 @@ void BtlController_EmitSpriteInvisibility(u32 battler, u32 bufferId, bool8 isInv PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 4); } -void BtlController_EmitBattleAnimation(u32 battler, u32 bufferId, u8 animationId, u16 argument) +void BtlController_EmitBattleAnimation(u32 battler, u32 bufferId, u8 animationId, struct DisableStruct* disableStructPtr, u16 argument) { gBattleResources->transferBuffer[0] = CONTROLLER_BATTLEANIMATION; gBattleResources->transferBuffer[1] = animationId; gBattleResources->transferBuffer[2] = argument; gBattleResources->transferBuffer[3] = (argument & 0xFF00) >> 8; - PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 4); + memcpy(&gBattleResources->transferBuffer[4], disableStructPtr, sizeof(struct DisableStruct)); + PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 4 + sizeof(struct DisableStruct)); } // mode is a LINK_STANDBY_* constant @@ -2677,6 +2665,17 @@ void BtlController_HandlePrintString(u32 battler, bool32 updateTvData, bool32 ar gBattle_BG0_Y = 0; stringId = (u16 *)(&gBattleResources->bufferA[battler][2]); BufferStringBattle(*stringId, battler); + + if (gTestRunnerEnabled) + { + TestRunner_Battle_RecordMessage(gDisplayedStringBattle); + if (gTestRunnerHeadless) + { + BattleControllerComplete(battler); + return; + } + } + BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG); gBattlerControllerFuncs[battler] = Controller_WaitForString; if (updateTvData) @@ -2687,26 +2686,26 @@ void BtlController_HandlePrintString(u32 battler, bool32 updateTvData, bool32 ar void BtlController_HandleHealthBarUpdate(u32 battler, bool32 updateHpText) { + s32 maxHP, curHP; s16 hpVal; struct Pokemon *party = GetBattlerParty(battler); LoadBattleBarGfx(0); hpVal = gBattleResources->bufferA[battler][2] | (gBattleResources->bufferA[battler][3] << 8); + maxHP = GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_MAX_HP); + curHP = GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_HP); if (hpVal != INSTANT_HP_BAR_DROP) { - u32 maxHP = GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_MAX_HP); - u32 curHP = GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_HP); - SetBattleBarStruct(battler, gHealthboxSpriteIds[battler], maxHP, curHP, hpVal); + TestRunner_Battle_RecordHP(battler, curHP, min(maxHP, max(0, curHP - hpVal))); } else { - u32 maxHP = GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_MAX_HP); - SetBattleBarStruct(battler, gHealthboxSpriteIds[battler], maxHP, 0, hpVal); if (updateHpText) UpdateHpTextInHealthbox(gHealthboxSpriteIds[battler], HP_CURRENT, 0, maxHP); + TestRunner_Battle_RecordHP(battler, curHP, 0); } gBattlerControllerFuncs[battler] = Controller_WaitForHealthBar; @@ -3037,6 +3036,8 @@ void BtlController_HandleBattleAnimation(u32 battler, bool32 ignoreSE, bool32 up u8 animationId = gBattleResources->bufferA[battler][1]; u16 argument = gBattleResources->bufferA[battler][2] | (gBattleResources->bufferA[battler][3] << 8); + gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[battler][4]; + if (TryHandleLaunchBattleTableAnimation(battler, battler, battler, animationId, argument)) BattleControllerComplete(battler); else diff --git a/src/battle_debug.c b/src/battle_debug.c index 92c1082383..3fca57e38f 100644 --- a/src/battle_debug.c +++ b/src/battle_debug.c @@ -153,6 +153,7 @@ enum LIST_SIDE_STEALTH_ROCK, LIST_SIDE_TOXIC_SPIKES, LIST_SIDE_STICKY_WEB, + LIST_SIDE_STEELSURGE, }; enum @@ -228,6 +229,7 @@ static const u8 sText_PP[] = _("PP"); static const u8 sText_StealthRock[] = _("Stealth Rock"); static const u8 sText_ToxicSpikes[] = _("Toxic Spikes"); static const u8 sText_StickyWeb[] = _("Sticky Web"); +static const u8 sText_Steelsurge[] = _("Steelsurge"); static const u8 sText_AI[] = _("AI"); static const u8 sText_NoBadMoves[] = _("No Bad Moves"); static const u8 sText_Viability[] = _("Viability"); @@ -455,6 +457,7 @@ static const struct ListMenuItem sSideStatusListItems[] = {sText_StealthRock, LIST_SIDE_STEALTH_ROCK}, {sText_ToxicSpikes, LIST_SIDE_TOXIC_SPIKES}, {sText_StickyWeb, LIST_SIDE_STICKY_WEB}, + {sText_Steelsurge, LIST_SIDE_STEELSURGE}, }; static const struct ListMenuItem sSecondaryListItems[] = @@ -716,7 +719,7 @@ void CB2_BattleDebugMenu(void) data->currentMainListItemId = 0; data->activeWindow = ACTIVE_WIN_MAIN; data->secondaryListTaskId = 0xFF; - CopyWindowToVram(data->mainListWindowId, 3); + CopyWindowToVram(data->mainListWindowId, COPYWIN_FULL); gMain.state++; break; case 5: @@ -737,7 +740,7 @@ static void PutMovesPointsText(struct BattleDebugMenu *data) { text[0] = CHAR_SPACE; StringCopy(text + 1, gMoveNames[gBattleMons[data->aiBattlerId].moves[i]]); - AddTextPrinterParameterized(data->aiMovesWindowId, 1, text, 0, i * 15, 0, NULL); + AddTextPrinterParameterized(data->aiMovesWindowId, FONT_NORMAL, text, 0, i * 15, 0, NULL); for (count = 0, j = 0; j < MAX_BATTLERS_COUNT; j++) { if (data->spriteIds.aiIconSpriteIds[j] == 0xFF) @@ -746,18 +749,18 @@ static void PutMovesPointsText(struct BattleDebugMenu *data) ConvertIntToDecimalStringN(text, gBattleStruct->aiFinalScore[data->aiBattlerId][battlerDef][i], STR_CONV_MODE_RIGHT_ALIGN, 3); - AddTextPrinterParameterized(data->aiMovesWindowId, 1, text, 83 + count * 54, i * 15, 0, NULL); + AddTextPrinterParameterized(data->aiMovesWindowId, FONT_NORMAL, text, 83 + count * 54, i * 15, 0, NULL); ConvertIntToDecimalStringN(text, AI_DATA->simulatedDmg[data->aiBattlerId][battlerDef][i], STR_CONV_MODE_RIGHT_ALIGN, 3); - AddTextPrinterParameterized(data->aiMovesWindowId, 1, text, 110 + count * 54, i * 15, 0, NULL); + AddTextPrinterParameterized(data->aiMovesWindowId, FONT_NORMAL, text, 110 + count * 54, i * 15, 0, NULL); count++; } } - CopyWindowToVram(data->aiMovesWindowId, 3); + CopyWindowToVram(data->aiMovesWindowId, COPYWIN_FULL); Free(text); } @@ -841,7 +844,7 @@ static const u8 *const sAiInfoItemNames[] = static void PutAiInfoText(struct BattleDebugMenu *data) { - u32 i, j, count; + u32 i; u8 *text = Alloc(0x50); FillWindowPixelBuffer(data->aiMovesWindowId, 0x11); @@ -849,7 +852,7 @@ static void PutAiInfoText(struct BattleDebugMenu *data) // item names for (i = 0; i < ARRAY_COUNT(sAiInfoItemNames); i++) { - AddTextPrinterParameterized(data->aiMovesWindowId, 1, sAiInfoItemNames[i], 3, i * 15, 0, NULL); + AddTextPrinterParameterized(data->aiMovesWindowId, FONT_NORMAL, sAiInfoItemNames[i], 3, i * 15, 0, NULL); } // items info @@ -857,17 +860,17 @@ static void PutAiInfoText(struct BattleDebugMenu *data) { if (GetBattlerSide(i) == B_SIDE_PLAYER && IsBattlerAlive(i)) { - u16 ability = AI_GetAbility(i); - u16 holdEffect = AI_GetHoldEffect(i); - u16 item = gBattleMons[i].item; + u16 ability = AI_DATA->abilities[i]; + u16 holdEffect = AI_DATA->holdEffects[i]; + u16 item = AI_DATA->items[i]; u8 x = (i == B_POSITION_PLAYER_LEFT) ? 83 + (i) * 75 : 83 + (i-1) * 75; - AddTextPrinterParameterized(data->aiMovesWindowId, 0, gAbilityNames[ability], x, 0, 0, NULL); - AddTextPrinterParameterized(data->aiMovesWindowId, 0, ItemId_GetName(item), x, 15, 0, NULL); - AddTextPrinterParameterized(data->aiMovesWindowId, 0, GetHoldEffectName(holdEffect), x, 30, 0, NULL); + AddTextPrinterParameterized(data->aiMovesWindowId, FONT_SMALL, gAbilityNames[ability], x, 0, 0, NULL); + AddTextPrinterParameterized(data->aiMovesWindowId, FONT_SMALL, ItemId_GetName(item), x, 15, 0, NULL); + AddTextPrinterParameterized(data->aiMovesWindowId, FONT_SMALL, GetHoldEffectName(holdEffect), x, 30, 0, NULL); } } - CopyWindowToVram(data->aiMovesWindowId, 3); + CopyWindowToVram(data->aiMovesWindowId, COPYWIN_FULL); Free(text); } @@ -914,7 +917,7 @@ static void PutAiPartyText(struct BattleDebugMenu *data) AddTextPrinterParameterized5(data->aiMovesWindowId, FONT_SMALL_NARROW, text, i * 41, 35 + (j + 1) * 15, 0, NULL, 0, 0); } - CopyWindowToVram(data->aiMovesWindowId, 3); + CopyWindowToVram(data->aiMovesWindowId, COPYWIN_FULL); Free(text); } @@ -1177,7 +1180,7 @@ static void Task_DebugMenuProcessInput(u8 taskId) data->currentSecondaryListItemId = listItemId; data->modifyWindowId = AddWindow(&sModifyWindowTemplate); PutWindowTilemap(data->modifyWindowId); - CopyWindowToVram(data->modifyWindowId, 3); + CopyWindowToVram(data->modifyWindowId, COPYWIN_FULL); SetUpModifyArrows(data); PrintDigitChars(data); data->activeWindow = ACTIVE_WIN_MODIFY; @@ -1261,8 +1264,8 @@ static void PrintOnBattlerWindow(u8 windowId, u8 battlerId) StringCopy(&text[4], gBattleMons[battlerId].nickname); FillWindowPixelBuffer(windowId, 0x11); - AddTextPrinterParameterized(windowId, 1, text, 0, 0, 0, NULL); - CopyWindowToVram(windowId, 3); + AddTextPrinterParameterized(windowId, FONT_NORMAL, text, 0, 0, 0, NULL); + CopyWindowToVram(windowId, COPYWIN_FULL); } static void UpdateWindowsOnChangedBattler(struct BattleDebugMenu *data) @@ -1368,7 +1371,7 @@ static void CreateSecondaryListMenu(struct BattleDebugMenu *data) listTemplate.windowId = data->secondaryListWindowId; data->secondaryListTaskId = ListMenuInit(&listTemplate, 0, 0); - CopyWindowToVram(data->secondaryListWindowId, 3); + CopyWindowToVram(data->secondaryListWindowId, COPYWIN_FULL); } static void PadString(const u8 *src, u8 *dst) @@ -1497,7 +1500,7 @@ static void PrintDigitChars(struct BattleDebugMenu *data) text[i] = EOS; - AddTextPrinterParameterized(data->modifyWindowId, 1, text, 3, 0, 0, NULL); + AddTextPrinterParameterized(data->modifyWindowId, FONT_NORMAL, text, 3, 0, 0, NULL); } static const u32 GetBitfieldToAndValue(u32 currBit, u32 bitsCount) @@ -1736,6 +1739,15 @@ static u8 *GetSideStatusValue(struct BattleDebugMenu *data, bool32 changeStatus, *(u32 *)(data->modifyArrows.modifiedValPtr) &= ~SIDE_STATUS_STICKY_WEB; } return &sideTimer->stickyWebAmount; + case LIST_SIDE_STEELSURGE: + if (changeStatus) + { + if (statusTrue) + *(u32 *)(data->modifyArrows.modifiedValPtr) |= SIDE_STATUS_STEELSURGE; + else + *(u32 *)(data->modifyArrows.modifiedValPtr) &= ~SIDE_STATUS_STEELSURGE; + } + return &sideTimer->steelsurgeAmount; default: return NULL; } diff --git a/src/battle_dome.c b/src/battle_dome.c index ad7c60dd1c..05b8ebec4a 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -1,6 +1,7 @@ #include "global.h" #include "battle_dome.h" #include "battle.h" +#include "battle_ai_util.h" #include "battle_main.h" #include "battle_setup.h" #include "battle_tower.h" @@ -32,6 +33,7 @@ #include "script_pokemon_util.h" #include "graphics.h" #include "constants/battle_dome.h" +#include "constants/battle_move_effects.h" #include "constants/frontier_util.h" #include "constants/moves.h" #include "constants/trainers.h" @@ -162,367 +164,6 @@ static void InitDomeTrainers(void); static EWRAM_DATA struct TourneyTreeInfoCard *sInfoCard = {0}; static EWRAM_DATA u8 *sTilemapBuffer = NULL; -// Each move has an array of points for different move characteristics which contribute to a tourney trainers listed battle style (see sBattleStyleThresholds) -// All move points are either 1 or 0, so theyre essentially flags saying whether or not the move has that characteristic -static const u8 sBattleStyleMovePoints[MOVES_COUNT][NUM_MOVE_POINT_TYPES] = -{ - [MOVE_NONE] = {0}, - [MOVE_POUND] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_KARATE_CHOP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_DOUBLE_SLAP] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_COMET_PUNCH] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_MEGA_PUNCH] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_PAY_DAY] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_FIRE_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_ICE_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_THUNDER_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SCRATCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_VISE_GRIP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_GUILLOTINE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_RAZOR_WIND] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_SWORDS_DANCE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_POPULAR] = 1}, - [MOVE_CUT] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_GUST] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_WING_ATTACK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_WHIRLWIND] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_FLY] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_BIND] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SLAM] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_VINE_WHIP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_STOMP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_DOUBLE_KICK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_MEGA_KICK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_JUMP_KICK] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_ROLLING_KICK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SAND_ATTACK] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_HEADBUTT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_HORN_ATTACK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_FURY_ATTACK] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_HORN_DRILL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_TACKLE] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_BODY_SLAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_WRAP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_TAKE_DOWN] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_THRASH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_DOUBLE_EDGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_TAIL_WHIP] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_POISON_STING] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_TWINEEDLE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_PIN_MISSILE] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_LEER] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_BITE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_GROWL] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_ROAR] = {[MOVE_POINTS_ACCURATE] = 1}, - [MOVE_SING] = {[MOVE_POINTS_STATUS] = 1}, - [MOVE_SUPERSONIC] = {[MOVE_POINTS_STATUS] = 1}, - [MOVE_SONIC_BOOM] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_DISABLE] = {[MOVE_POINTS_STATUS] = 1}, - [MOVE_ACID] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_EMBER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_FLAMETHROWER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_MIST] = {0}, - [MOVE_WATER_GUN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_HYDRO_PUMP] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_SURF] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1}, - [MOVE_ICE_BEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_BLIZZARD] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_PSYBEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_BUBBLE_BEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_AURORA_BEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_HYPER_BEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_PECK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_DRILL_PECK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_SUBMISSION] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_LOW_KICK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_COUNTER] = {[MOVE_POINTS_DEF] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1}, - [MOVE_SEISMIC_TOSS] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_STRENGTH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_ABSORB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_MEGA_DRAIN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_LEECH_SEED] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STATUS] = 1}, - [MOVE_GROWTH] = {[MOVE_POINTS_STAT_RAISE] = 1}, - [MOVE_RAZOR_LEAF] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_SOLAR_BEAM] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1}, - [MOVE_POISON_POWDER] = {[MOVE_POINTS_STATUS] = 1}, - [MOVE_STUN_SPORE] = {[MOVE_POINTS_STATUS] = 1}, - [MOVE_SLEEP_POWDER] = {[MOVE_POINTS_STATUS] = 1}, - [MOVE_PETAL_DANCE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_STRING_SHOT] = {[MOVE_POINTS_STAT_LOWER] = 1}, - [MOVE_DRAGON_RAGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_FIRE_SPIN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_THUNDER_SHOCK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_THUNDERBOLT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_THUNDER_WAVE] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_THUNDER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_ROCK_THROW] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_EARTHQUAKE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1}, - [MOVE_FISSURE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LUCK] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_DIG] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_TOXIC] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_CONFUSION] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_PSYCHIC] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_HYPNOSIS] = {[MOVE_POINTS_COMBO] = 1}, - [MOVE_MEDITATE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1}, - [MOVE_AGILITY] = {[MOVE_POINTS_STAT_RAISE] = 1}, - [MOVE_QUICK_ATTACK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_RAGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_TELEPORT] = {0}, - [MOVE_NIGHT_SHADE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_MIMIC] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_SCREECH] = {[MOVE_POINTS_STAT_LOWER] = 1}, - [MOVE_DOUBLE_TEAM] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1}, - [MOVE_RECOVER] = {0}, - [MOVE_HARDEN] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1}, - [MOVE_MINIMIZE] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1}, - [MOVE_SMOKESCREEN] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_DEF] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_CONFUSE_RAY] = {[MOVE_POINTS_ACCURATE] = 1}, - [MOVE_WITHDRAW] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1}, - [MOVE_DEFENSE_CURL] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1}, - [MOVE_BARRIER] = {[MOVE_POINTS_DEF] = 1}, - [MOVE_LIGHT_SCREEN] = {[MOVE_POINTS_DEF] = 1}, - [MOVE_HAZE] = {0}, - [MOVE_REFLECT] = {[MOVE_POINTS_DEF] = 1}, - [MOVE_FOCUS_ENERGY] = {[MOVE_POINTS_COMBO] = 1}, - [MOVE_BIDE] = {[MOVE_POINTS_ACCURATE] = 1}, - [MOVE_METRONOME] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_LUCK] = 1}, - [MOVE_MIRROR_MOVE] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_LUCK] = 1}, - [MOVE_SELF_DESTRUCT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_EGG_BOMB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1}, - [MOVE_LICK] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SMOG] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SLUDGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_BONE_CLUB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_FIRE_BLAST] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_WATERFALL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_CLAMP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SWIFT] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_SKULL_BASH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1}, - [MOVE_SPIKE_CANNON] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_CONSTRICT] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_AMNESIA] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1}, - [MOVE_KINESIS] = {[MOVE_POINTS_STAT_LOWER] = 1}, - [MOVE_SOFT_BOILED] = {[MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_HIGH_JUMP_KICK] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_GLARE] = {[MOVE_POINTS_STAT_LOWER] = 1}, - [MOVE_DREAM_EATER] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_RARE] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1}, - [MOVE_POISON_GAS] = {[MOVE_POINTS_STATUS] = 1}, - [MOVE_BARRAGE] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_LEECH_LIFE] = {[MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_LOVELY_KISS] = {[MOVE_POINTS_STATUS] = 1}, - [MOVE_SKY_ATTACK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_TRANSFORM] = {[MOVE_POINTS_RARE] = 1}, - [MOVE_BUBBLE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_DIZZY_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SPORE] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_FLASH] = {0}, - [MOVE_PSYWAVE] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_SPLASH] = {[MOVE_POINTS_RARE] = 1}, - [MOVE_ACID_ARMOR] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1}, - [MOVE_CRABHAMMER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_STRONG] = 1}, - [MOVE_EXPLOSION] = {[MOVE_POINTS_RISKY] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_POPULAR] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_FURY_SWIPES] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_BONEMERANG] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_REST] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1}, - [MOVE_ROCK_SLIDE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_HYPER_FANG] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SHARPEN] = {[MOVE_POINTS_STAT_RAISE] = 1, [MOVE_POINTS_DEF] = 1}, - [MOVE_CONVERSION] = {[MOVE_POINTS_DEF] = 1}, - [MOVE_TRI_ATTACK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SUPER_FANG] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_SLASH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_SUBSTITUTE] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DEF] = 1}, - [MOVE_STRUGGLE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, // Odd that this is assigned qualities - [MOVE_SKETCH] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_LUCK] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_TRIPLE_KICK] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_THIEF] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SPIDER_WEB] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_MIND_READER] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_NIGHTMARE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_FLAME_WHEEL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SNORE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_CURSE] = {[MOVE_POINTS_STATUS] = 1}, - [MOVE_FLAIL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_CONVERSION_2] = {[MOVE_POINTS_ACCURATE] = 1}, - [MOVE_AEROBLAST] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_COTTON_SPORE] = {[MOVE_POINTS_STAT_LOWER] = 1}, - [MOVE_REVERSAL] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_SPITE] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_RISKY] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_POWDER_SNOW] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_PROTECT] = {[MOVE_POINTS_DEF] = 1, [MOVE_POINTS_POPULAR] = 1}, - [MOVE_MACH_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_SCARY_FACE] = {0}, - [MOVE_FEINT_ATTACK] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_SWEET_KISS] = {0}, - [MOVE_BELLY_DRUM] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1}, - [MOVE_SLUDGE_BOMB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_MUD_SLAP] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_OCTAZOOKA] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SPIKES] = {[MOVE_POINTS_COMBO] = 1}, - [MOVE_ZAP_CANNON] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_LUCK] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_FORESIGHT] = {[MOVE_POINTS_ACCURATE] = 1}, - [MOVE_DESTINY_BOND] = {[MOVE_POINTS_RISKY] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_PERISH_SONG] = {[MOVE_POINTS_RISKY] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_ICY_WIND] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_DETECT] = {[MOVE_POINTS_DEF] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_BONE_RUSH] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_LOCK_ON] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_OUTRAGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SANDSTORM] = {0}, - [MOVE_GIGA_DRAIN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_ENDURE] = {[MOVE_POINTS_DEF] = 1}, - [MOVE_CHARM] = {[MOVE_POINTS_ACCURATE] = 1}, - [MOVE_ROLLOUT] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_FALSE_SWIPE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_SWAGGER] = {[MOVE_POINTS_EFFECT] = 1}, - [MOVE_MILK_DRINK] = {[MOVE_POINTS_HEAL] = 1}, - [MOVE_SPARK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_FURY_CUTTER] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_STEEL_WING] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_MEAN_LOOK] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_ATTRACT] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_SLEEP_TALK] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_LUCK] = 1}, - [MOVE_HEAL_BELL] = {[MOVE_POINTS_LOW_PP] = 1}, - [MOVE_RETURN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_PRESENT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LUCK] = 1}, - [MOVE_FRUSTRATION] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_SAFEGUARD] = {[MOVE_POINTS_DEF] = 1}, - [MOVE_PAIN_SPLIT] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_SACRED_FIRE] = {[MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_MAGNITUDE] = {[MOVE_POINTS_ACCURATE] = 1}, - [MOVE_DYNAMIC_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LUCK] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_MEGAHORN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_STRONG] = 1}, - [MOVE_DRAGON_BREATH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_BATON_PASS] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_RARE] = 1}, - [MOVE_ENCORE] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_PURSUIT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_RAPID_SPIN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_SWEET_SCENT] = {[MOVE_POINTS_STAT_LOWER] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_IRON_TAIL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_METAL_CLAW] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_VITAL_THROW] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_MORNING_SUN] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_SYNTHESIS] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_MOONLIGHT] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_HIDDEN_POWER] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_CROSS_CHOP] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_TWISTER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_RAIN_DANCE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_SUNNY_DAY] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_CRUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_MIRROR_COAT] = {[MOVE_POINTS_DEF] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_PSYCH_UP] = {[MOVE_POINTS_STAT_RAISE] = 1}, - [MOVE_EXTREME_SPEED] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_ANCIENT_POWER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SHADOW_BALL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_FUTURE_SIGHT] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1}, - [MOVE_ROCK_SMASH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_WHIRLPOOL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_BEAT_UP] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_FAKE_OUT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_UPROAR] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_STOCKPILE] = {[MOVE_POINTS_COMBO] = 1}, - [MOVE_SPIT_UP] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1}, - [MOVE_SWALLOW] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1}, - [MOVE_HEAT_WAVE] = {[MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_HAIL] = {0}, - [MOVE_TORMENT] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_FLATTER] = {[MOVE_POINTS_ACCURATE] = 1}, - [MOVE_WILL_O_WISP] = {[MOVE_POINTS_STATUS] = 1}, - [MOVE_MEMENTO] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_FACADE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_FOCUS_PUNCH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1}, - [MOVE_SMELLING_SALTS] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_FOLLOW_ME] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_NATURE_POWER] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_CHARGE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_TAUNT] = {[MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_HELPING_HAND] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_TRICK] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_ROLE_PLAY] = {[MOVE_POINTS_ACCURATE] = 1}, - [MOVE_WISH] = {[MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_ASSIST] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1}, - [MOVE_INGRAIN] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_DEF] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_SUPERPOWER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_MAGIC_COAT] = {[MOVE_POINTS_DEF] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1}, - [MOVE_RECYCLE] = {[MOVE_POINTS_ACCURATE] = 1}, - [MOVE_REVENGE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1}, - [MOVE_BRICK_BREAK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_YAWN] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STATUS] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_KNOCK_OFF] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_ENDEAVOR] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_ERUPTION] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_SKILL_SWAP] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_IMPRISON] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1}, - [MOVE_REFRESH] = {[MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_GRUDGE] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_SNATCH] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LUCK] = 1}, - [MOVE_SECRET_POWER] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_DIVE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_ARM_THRUST] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_CAMOUFLAGE] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_TAIL_GLOW] = {[MOVE_POINTS_ACCURATE] = 1}, - [MOVE_LUSTER_PURGE] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_MIST_BALL] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_FEATHER_DANCE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_TEETER_DANCE] = {[MOVE_POINTS_ACCURATE] = 1}, - [MOVE_BLAZE_KICK] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_MUD_SPORT] = {[MOVE_POINTS_ACCURATE] = 1}, - [MOVE_ICE_BALL] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_NEEDLE_ARM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SLACK_OFF] = {[MOVE_POINTS_HEAL] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_HYPER_VOICE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_STRONG] = 1}, - [MOVE_POISON_FANG] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_CRUSH_CLAW] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_BLAST_BURN] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_HYDRO_CANNON] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_METEOR_MASH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_ASTONISH] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_WEATHER_BALL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_AROMATHERAPY] = {[MOVE_POINTS_LOW_PP] = 1}, - [MOVE_FAKE_TEARS] = {[MOVE_POINTS_ACCURATE] = 1}, - [MOVE_AIR_CUTTER] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_OVERHEAT] = {[MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_ODOR_SLEUTH] = {[MOVE_POINTS_ACCURATE] = 1}, - [MOVE_ROCK_TOMB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SILVER_WIND] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_METAL_SOUND] = {0}, - [MOVE_GRASS_WHISTLE] = {0}, - [MOVE_TICKLE] = {[MOVE_POINTS_ACCURATE] = 1}, - [MOVE_COSMIC_POWER] = {0}, - [MOVE_WATER_SPOUT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_SIGNAL_BEAM] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SHADOW_PUNCH] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_EXTRASENSORY] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SKY_UPPERCUT] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_SAND_TOMB] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_SHEER_COLD] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LUCK] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_MUDDY_WATER] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_BULLET_SEED] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_AERIAL_ACE] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_ICICLE_SPEAR] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_IRON_DEFENSE] = {[MOVE_POINTS_DEF] = 1}, - [MOVE_BLOCK] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_HOWL] = {0}, - [MOVE_DRAGON_CLAW] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_FRENZY_PLANT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_BULK_UP] = {[MOVE_POINTS_COMBO] = 1}, - [MOVE_BOUNCE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_MUD_SHOT] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_POISON_TAIL] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_COVET] = {[MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_VOLT_TACKLE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1}, - [MOVE_MAGICAL_LEAF] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_WATER_SPORT] = {[MOVE_POINTS_ACCURATE] = 1}, - [MOVE_CALM_MIND] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1}, - [MOVE_LEAF_BLADE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1}, - [MOVE_DRAGON_DANCE] = {[MOVE_POINTS_COMBO] = 1, [MOVE_POINTS_STAT_RAISE] = 1}, - [MOVE_ROCK_BLAST] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_SHOCK_WAVE] = {[MOVE_POINTS_DMG] = 1}, - [MOVE_WATER_PULSE] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_ACCURATE] = 1, [MOVE_POINTS_EFFECT] = 1}, - [MOVE_DOOM_DESIRE] = {[MOVE_POINTS_RARE] = 1, [MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1}, - [MOVE_PSYCHO_BOOST] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1}, -}; - // This array is searched in-order to determine what battle style a tourney trainer uses. // If the sum of the points for the party's moves meets/exceeds all the point totals of an element, then they use that battle style static const u8 sBattleStyleThresholds[NUM_BATTLE_STYLES - 1][NUM_MOVE_POINT_TYPES] = @@ -2796,7 +2437,6 @@ static int SelectOpponentMonsFromParty(int *partyMovePoints, bool8 allowRandom) static int GetTypeEffectivenessPoints(int move, int targetSpecies, int mode) { int defType1, defType2, defAbility, moveType; - int i = 0; int typePower = TYPE_x1; if (move == MOVE_NONE || move == MOVE_UNAVAILABLE || IS_MOVE_STATUS(move)) @@ -4288,6 +3928,245 @@ static u8 Task_GetInfoCardInput(u8 taskId) #undef tUsingAlternateSlot +static bool32 IsDomeHealingMoveEffect(u32 effect) +{ + if (IsHealingMoveEffect(effect)) + return TRUE; + // Check extra effects not considered plain healing by AI + switch(effect) + { + case EFFECT_INGRAIN: + case EFFECT_REFRESH: + case EFFECT_AQUA_RING: + return TRUE; + default: + return FALSE; + } +} + +static bool32 IsDomeDefensiveMoveEffect(u32 effect) +{ + switch(effect) + { + case EFFECT_COUNTER: + case EFFECT_EVASION_UP: + case EFFECT_DEFENSE_UP: + case EFFECT_DEFENSE_UP_2: + case EFFECT_SPECIAL_DEFENSE_UP: + case EFFECT_SPECIAL_DEFENSE_UP_2: + case EFFECT_MINIMIZE: + case EFFECT_ACCURACY_DOWN: + case EFFECT_DEFENSE_CURL: + case EFFECT_LIGHT_SCREEN: + case EFFECT_REFLECT: + case EFFECT_AURORA_VEIL: + case EFFECT_CONVERSION: + case EFFECT_PROTECT: + case EFFECT_MAT_BLOCK: + case EFFECT_ENDURE: + case EFFECT_SAFEGUARD: + case EFFECT_MIRROR_COAT: + case EFFECT_MAGIC_COAT: + case EFFECT_INGRAIN: + case EFFECT_AQUA_RING: + case EFFECT_SUBSTITUTE: + return TRUE; + default: + return FALSE; + } +} + +static bool32 IsDomeRiskyMoveEffect(u32 effect) +{ + switch(effect) + { + case EFFECT_EXPLOSION: + case EFFECT_SPITE: + case EFFECT_DESTINY_BOND: + case EFFECT_PERISH_SONG: + return TRUE; + default: + return FALSE; + } +} + +static bool32 IsDomeLuckyMove(u32 move) +{ + if (gBattleMoves[move].accuracy <= 50) + return TRUE; + switch(gBattleMoves[move].effect) + { + case EFFECT_COUNTER: + case EFFECT_OHKO: // Technically redundant because of the above accuracy check + case EFFECT_METRONOME: + case EFFECT_MIRROR_MOVE: + case EFFECT_SKETCH: + case EFFECT_SLEEP_TALK: + case EFFECT_PRESENT: + case EFFECT_ASSIST: + case EFFECT_MAGIC_COAT: + case EFFECT_REVENGE: + case EFFECT_IMPRISON: + case EFFECT_SNATCH: + return TRUE; + default: + return FALSE; + } +} + +static bool32 IsDomePopularMove(u32 move) +{ + u8 i; + for (i = 0; i < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; i++) + { + if (ItemIdToBattleMoveId(ITEM_TM01 + i) == move) + return TRUE; + } + if (i == NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES) + return FALSE; + // Filter in TMs/HMs + if (gBattleMoves[move].power >= 90) + return TRUE; + + switch(gBattleMoves[move].effect) + { + case EFFECT_PROTECT: + case EFFECT_MAT_BLOCK: + case EFFECT_ATTACK_UP_2: + case EFFECT_SPECIAL_ATTACK_UP_2: + case EFFECT_SPECIAL_ATTACK_UP_3: + return TRUE; + default: + return FALSE; + } +} + +static bool32 IsDomeStatusMoveEffect(u32 effect) +{ + switch(effect) + { + case EFFECT_TRAP: + case EFFECT_SLEEP: + case EFFECT_CONFUSE: + case EFFECT_DISABLE: + case EFFECT_POISON: + case EFFECT_PARALYZE: + case EFFECT_TOXIC: + case EFFECT_LEECH_SEED: + case EFFECT_TAUNT: + case EFFECT_TORMENT: + case EFFECT_WILL_O_WISP: + case EFFECT_ENCORE: + case EFFECT_ATTRACT: + case EFFECT_NIGHTMARE: + case EFFECT_YAWN: + case EFFECT_CURSE: + return TRUE; + default: + return FALSE; + } +} + +static bool32 IsDomeRareMove(u32 move) +{ + u16 i, j; + u16 species = 0; + for(i = 0; i < NUM_SPECIES; i++) + { + const struct LevelUpMove *learnset = GetSpeciesLevelUpLearnset(i); + for(j = 0; learnset[j].move != LEVEL_UP_MOVE_END; j++) + { + if (learnset[j].move == move) + { + species++; + break; + } + } + if (species >= NUM_SPECIES / 20) // At least 5% of all mons can learn this move + return FALSE; + } + return TRUE; +} + +static bool32 IsDomeComboMoveEffect(u32 effect) +{ + switch(effect) + { + // Weather moves + case EFFECT_SUNNY_DAY: + case EFFECT_RAIN_DANCE: + case EFFECT_SANDSTORM: + case EFFECT_HAIL: + case EFFECT_SNOWSCAPE: + // Terrain moves + case EFFECT_GRASSY_TERRAIN: + case EFFECT_ELECTRIC_TERRAIN: + case EFFECT_MISTY_TERRAIN: + case EFFECT_PSYCHIC_TERRAIN: + // Moves dependent on weather + case EFFECT_SYNTHESIS: + case EFFECT_MORNING_SUN: + case EFFECT_MOONLIGHT: + case EFFECT_SHORE_UP: + case EFFECT_THUNDER: + case EFFECT_HURRICANE: + //case EFFECT_BLIZZARD: (needs a unique effect in gBattleMoves!) + case EFFECT_SOLAR_BEAM: + case EFFECT_GROWTH: + case EFFECT_AURORA_VEIL: + case EFFECT_WEATHER_BALL: + // Moves dependent on terrain + case EFFECT_EXPANDING_FORCE: + case EFFECT_GRASSY_GLIDE: + //case EFFECT_MISTY_EXPLOSION: (needs a unique effect in gBattleMoves!) + case EFFECT_PSYBLADE: + case EFFECT_RISING_VOLTAGE: + case EFFECT_TERRAIN_PULSE: + // Stockpile group + case EFFECT_STOCKPILE: + case EFFECT_SPIT_UP: + case EFFECT_SWALLOW: + // Entry hazards & cleaners + case EFFECT_SPIKES: + case EFFECT_TOXIC_SPIKES: + case EFFECT_STEALTH_ROCK: + case EFFECT_STICKY_WEB: + // Inflicting sleep & related effects + case EFFECT_SLEEP: + case EFFECT_YAWN: + case EFFECT_DREAM_EATER: + case EFFECT_NIGHTMARE: + case EFFECT_REST: + case EFFECT_SLEEP_TALK: + case EFFECT_SNORE: + // Anything that ups offensive stats by more than one + case EFFECT_ATTACK_UP: + case EFFECT_ATTACK_UP_2: + case EFFECT_ATTACK_SPATK_UP: + case EFFECT_SPECIAL_ATTACK_UP: + case EFFECT_SPECIAL_ATTACK_UP_2: + case EFFECT_SPECIAL_ATTACK_UP_3: + case EFFECT_CALM_MIND: + case EFFECT_DRAGON_DANCE: + case EFFECT_BELLY_DRUM: + case EFFECT_CHARGE: + case EFFECT_BULK_UP: + case EFFECT_ATTACK_ACCURACY_UP: + // Others + case EFFECT_FOCUS_ENERGY: + case EFFECT_LOCK_ON: + case EFFECT_FLAIL: + case EFFECT_BATON_PASS: + case EFFECT_INGRAIN: + case EFFECT_AQUA_RING: + case EFFECT_LEECH_SEED: + case EFFECT_ROAR: + return TRUE; + default: + return FALSE; + } +} + // allocatedArray below needs to be large enough to hold stat totals for each mon, or totals of each type of move points #define ALLOC_ARRAY_SIZE max(NUM_STATS * FRONTIER_PARTY_SIZE, NUM_MOVE_POINT_TYPES) @@ -4457,12 +4336,65 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId) { for (k = 0; k < NUM_MOVE_POINT_TYPES; k++) { + u16 move; if (trainerId == TRAINER_FRONTIER_BRAIN) - allocatedArray[k] += sBattleStyleMovePoints[GetFrontierBrainMonMove(i, j)][k]; + move = GetFrontierBrainMonMove(i, j); else if (trainerId == TRAINER_PLAYER) - allocatedArray[k] += sBattleStyleMovePoints[gSaveBlock2Ptr->frontier.domePlayerPartyData[i].moves[j]][k]; + move = gSaveBlock2Ptr->frontier.domePlayerPartyData[i].moves[j]; else - allocatedArray[k] += sBattleStyleMovePoints[gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].moves[j]][k]; + move = gFacilityTrainerMons[DOME_MONS[trainerTourneyId][i]].moves[j]; + + switch (k) + { + case MOVE_POINTS_COMBO: + allocatedArray[k] = IsDomeComboMoveEffect(gBattleMoves[move].effect) ? 1 : 0; + break; + case MOVE_POINTS_STAT_RAISE: + allocatedArray[k] = IsStatRaisingEffect(gBattleMoves[move].effect) ? 1 : 0; + break; + case MOVE_POINTS_STAT_LOWER: + allocatedArray[k] = IsStatLoweringEffect(gBattleMoves[move].effect) ? 1 : 0; + break; + case MOVE_POINTS_RARE: + allocatedArray[k] = IsDomeRareMove(move) ? 1 : 0; + break; + case MOVE_POINTS_HEAL: + allocatedArray[k] = IsDomeHealingMoveEffect(gBattleMoves[move].effect) ? 1 : 0; + break; + case MOVE_POINTS_RISKY: + allocatedArray[k] = IsDomeRiskyMoveEffect(gBattleMoves[move].effect) ? 1 : 0; + break; + case MOVE_POINTS_STATUS: + allocatedArray[k] = IsDomeStatusMoveEffect(gBattleMoves[move].effect) ? 1 : 0; + break; + case MOVE_POINTS_DMG: + allocatedArray[k] = (gBattleMoves[move].power != 0) ? 1 : 0; + break; + case MOVE_POINTS_DEF: + allocatedArray[k] = IsDomeDefensiveMoveEffect(gBattleMoves[move].effect) ? 1 : 0; + break; + case MOVE_POINTS_ACCURATE: + allocatedArray[k] = (gBattleMoves[move].accuracy == 0 || gBattleMoves[move].accuracy == 100) ? 1 : 0; + break; + case MOVE_POINTS_POWERFUL: + allocatedArray[k] = (gBattleMoves[move].power >= 100) ? 1 : 0; + break; + case MOVE_POINTS_POPULAR: + allocatedArray[k] = IsDomePopularMove(move) ? 1 : 0; + break; + case MOVE_POINTS_LUCK: + allocatedArray[k] = IsDomeLuckyMove(move) ? 1 : 0; + break; + case MOVE_POINTS_STRONG: + allocatedArray[k] = (gBattleMoves[move].power >= 90) ? 1 : 0; + break; + case MOVE_POINTS_LOW_PP: + allocatedArray[k] = (gBattleMoves[move].pp <= 5) ? 1 : 0; + break; + case MOVE_POINTS_EFFECT: + allocatedArray[k] = (gBattleMoves[move].secondaryEffectChance > 0) ? 1 : 0; + break; + } } } } @@ -6017,7 +5949,7 @@ static void DecideRoundWinners(u8 roundId) gSaveBlock2Ptr->frontier.domeWinningMoves[tournamentId2] = GetWinningMove(tournamentId1, tournamentId2, roundId); } // Frontier Brain always wins, check tournamentId2. - else if (DOME_TRAINERS[tournamentId2].trainerId == TRAINER_FRONTIER_BRAIN && tournamentId1 != 0xFF) + else if (tournamentId2 != 0xFF && DOME_TRAINERS[tournamentId2].trainerId == TRAINER_FRONTIER_BRAIN && tournamentId1 != 0xFF) { DOME_TRAINERS[tournamentId1].isEliminated = TRUE; DOME_TRAINERS[tournamentId1].eliminatedAt = roundId; diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c new file mode 100644 index 0000000000..fbbd91ae3f --- /dev/null +++ b/src/battle_dynamax.c @@ -0,0 +1,1297 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "battle_interface.h" +#include "battle_scripts.h" +#include "battle_script_commands.h" +#include "data.h" +#include "event_data.h" +#include "graphics.h" +#include "item.h" +#include "pokemon.h" +#include "random.h" +#include "sprite.h" +#include "string_util.h" +#include "util.h" +#include "constants/abilities.h" +#include "constants/battle_move_effects.h" +#include "constants/battle_string_ids.h" +#include "constants/flags.h" +#include "constants/hold_effects.h" +#include "constants/items.h" +#include "constants/moves.h" + +static u8 GetMaxPowerTier(u16 move); + +// Constant Data +static const u16 sMaxMoveTable[NUMBER_OF_MON_TYPES] = +{ + [TYPE_NORMAL] = MOVE_MAX_STRIKE, + [TYPE_FIGHTING] = MOVE_MAX_KNUCKLE, + [TYPE_FLYING] = MOVE_MAX_AIRSTREAM, + [TYPE_POISON] = MOVE_MAX_OOZE, + [TYPE_GROUND] = MOVE_MAX_QUAKE, + [TYPE_ROCK] = MOVE_MAX_ROCKFALL, + [TYPE_BUG] = MOVE_MAX_FLUTTERBY, + [TYPE_GHOST] = MOVE_MAX_PHANTASM, + [TYPE_STEEL] = MOVE_MAX_STEELSPIKE, + [TYPE_FIRE] = MOVE_MAX_FLARE, + [TYPE_WATER] = MOVE_MAX_GEYSER, + [TYPE_GRASS] = MOVE_MAX_OVERGROWTH, + [TYPE_ELECTRIC] = MOVE_MAX_LIGHTNING, + [TYPE_PSYCHIC] = MOVE_MAX_MINDSTORM, + [TYPE_ICE] = MOVE_MAX_HAILSTORM, + [TYPE_DRAGON] = MOVE_MAX_WYRMWIND, + [TYPE_DARK] = MOVE_MAX_DARKNESS, + [TYPE_FAIRY] = MOVE_MAX_STARFALL, +}; + +struct GMaxMove +{ + u16 species; + u8 moveType; + u16 gmaxMove; +}; + +static const struct GMaxMove sGMaxMoveTable[] = +{ + {SPECIES_VENUSAUR_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_VINE_LASH}, + {SPECIES_BLASTOISE_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_CANNONADE}, + {SPECIES_CHARIZARD_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_WILDFIRE}, + {SPECIES_BUTTERFREE_GIGANTAMAX, TYPE_BUG, MOVE_G_MAX_BEFUDDLE}, + {SPECIES_PIKACHU_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_VOLT_CRASH}, + {SPECIES_MEOWTH_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_GOLD_RUSH}, + {SPECIES_MACHAMP_GIGANTAMAX, TYPE_FIGHTING, MOVE_G_MAX_CHI_STRIKE}, + {SPECIES_GENGAR_GIGANTAMAX, TYPE_GHOST, MOVE_G_MAX_TERROR}, + {SPECIES_KINGLER_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_FOAM_BURST}, + {SPECIES_LAPRAS_GIGANTAMAX, TYPE_ICE, MOVE_G_MAX_RESONANCE}, + {SPECIES_EEVEE_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_CUDDLE}, + {SPECIES_SNORLAX_GIGANTAMAX, TYPE_NORMAL, MOVE_G_MAX_REPLENISH}, + {SPECIES_GARBODOR_GIGANTAMAX, TYPE_POISON, MOVE_G_MAX_MALODOR}, + {SPECIES_MELMETAL_GIGANTAMAX, TYPE_STEEL, MOVE_G_MAX_MELTDOWN}, + {SPECIES_RILLABOOM_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_DRUM_SOLO}, + {SPECIES_CINDERACE_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_FIREBALL}, + {SPECIES_INTELEON_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_HYDROSNIPE}, + {SPECIES_CORVIKNIGHT_GIGANTAMAX, TYPE_FLYING, MOVE_G_MAX_WIND_RAGE}, + {SPECIES_ORBEETLE_GIGANTAMAX, TYPE_PSYCHIC, MOVE_G_MAX_GRAVITAS}, + {SPECIES_DREDNAW_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_STONESURGE}, + {SPECIES_COALOSSAL_GIGANTAMAX, TYPE_ROCK, MOVE_G_MAX_VOLCALITH}, + {SPECIES_FLAPPLE_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_TARTNESS}, + {SPECIES_APPLETUN_GIGANTAMAX, TYPE_GRASS, MOVE_G_MAX_SWEETNESS}, + {SPECIES_SANDACONDA_GIGANTAMAX, TYPE_GROUND, MOVE_G_MAX_SANDBLAST}, + {SPECIES_TOXTRICITY_AMPED_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, + {SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX, TYPE_ELECTRIC, MOVE_G_MAX_STUN_SHOCK}, + {SPECIES_CENTISKORCH_GIGANTAMAX, TYPE_FIRE, MOVE_G_MAX_CENTIFERNO}, + {SPECIES_HATTERENE_GIGANTAMAX, TYPE_FAIRY, MOVE_G_MAX_SMITE}, + {SPECIES_GRIMMSNARL_GIGANTAMAX, TYPE_DARK, MOVE_G_MAX_SNOOZE}, + {SPECIES_ALCREMIE_GIGANTAMAX, TYPE_FAIRY, MOVE_G_MAX_FINALE}, + {SPECIES_COPPERAJAH_GIGANTAMAX, TYPE_STEEL, MOVE_G_MAX_STEELSURGE}, + {SPECIES_DURALUDON_GIGANTAMAX, TYPE_DRAGON, MOVE_G_MAX_DEPLETION}, + {SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX,TYPE_DARK, MOVE_G_MAX_ONE_BLOW}, + {SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, TYPE_WATER, MOVE_G_MAX_RAPID_FLOW}, +}; + +// forward declarations +static void SpriteCb_DynamaxTrigger(struct Sprite *); + +// Returns whether a battler is Dynamaxed. +bool32 IsDynamaxed(u16 battlerId) +{ + if (gBattleStruct->dynamax.dynamaxed[battlerId] + /*|| IsRaidBoss(battlerId)*/) + return TRUE; + return FALSE; +} + +// Returns whether a battler can Dynamax. +bool32 CanDynamax(u16 battlerId) +{ + u16 species = gBattleMons[battlerId].species; + u16 holdEffect = ItemId_GetHoldEffect(gBattleMons[battlerId].item); + + // Check if Dynamax battle flag is set. This needs to be defined in include/config/battle.h + #if B_FLAG_DYNAMAX_BATTLE != 0 + if (!FlagGet(B_FLAG_DYNAMAX_BATTLE)) + #endif + return FALSE; + + + // Check if Player has a Dynamax Band. + if ((GetBattlerPosition(battlerId) == B_POSITION_PLAYER_LEFT || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(battlerId) == B_POSITION_PLAYER_RIGHT)) + && !CheckBagHasItem(ITEM_DYNAMAX_BAND, 1)) + return FALSE; + + // Check if species isn't allowed to Dynamax. + if (GET_BASE_SPECIES_ID(species) == SPECIES_ZACIAN + || GET_BASE_SPECIES_ID(species) == SPECIES_ZAMAZENTA + || GET_BASE_SPECIES_ID(species) == SPECIES_ETERNATUS) + return FALSE; + + // Cannot Dynamax if you can Mega Evolve or use a Z-Move + if (holdEffect == HOLD_EFFECT_MEGA_STONE || holdEffect == HOLD_EFFECT_Z_CRYSTAL) + return FALSE; + + // Cannot Dynamax if your side has already or will Dynamax. + if (gBattleStruct->dynamax.alreadyDynamaxed[GetBattlerSide(battlerId)] + || gBattleStruct->dynamax.dynamaxed[BATTLE_PARTNER(battlerId)] + || gBattleStruct->dynamax.toDynamax & gBitTable[BATTLE_PARTNER(battlerId)]) + return FALSE; + + // TODO: Cannot Dynamax in a Max Raid if you don't have Dynamax Energy. + // if (gBattleTypeFlags & BATTLE_TYPE_RAID && gBattleStruct->raid.dynamaxEnergy != battlerId) + // return FALSE; + + // No checks failed, all set! + return TRUE; +} + +// Returns whether a battler is transformed into a Gigantamax form. +bool32 IsGigantamaxed(u16 battlerId) +{ + // TODO: Incorporate Gigantamax factor. + if ((gSpeciesInfo[gBattleMons[battlerId].species].isGigantamax)) + return TRUE; + return FALSE; +} + +// Applies the HP Multiplier for Dynamaxed Pokemon and Raid Bosses. +void ApplyDynamaxHPMultiplier(u32 battler, struct Pokemon* mon) +{ + if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_SHEDINJA) + return; + else + { + u16 mult = UQ_4_12(1.5); // placeholder + u16 hp = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_HP) * mult) + UQ_4_12_ROUND); + u16 maxHP = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_MAX_HP) * mult) + UQ_4_12_ROUND); + SetMonData(mon, MON_DATA_HP, &hp); + SetMonData(mon, MON_DATA_MAX_HP, &maxHP); + } +} + +// Returns the non-Dynamax HP of a Pokemon. +u16 GetNonDynamaxHP(u16 battlerId) +{ + if (!IsDynamaxed(battlerId) || gBattleMons[battlerId].species == SPECIES_SHEDINJA) + return gBattleMons[battlerId].hp; + else + { + u16 mult = UQ_4_12(1.0/1.5); // placeholder + u16 hp = UQ_4_12_TO_INT((gBattleMons[battlerId].hp * mult) + UQ_4_12_ROUND); + return hp; + } +} + +// Returns the non-Dynamax Max HP of a Pokemon. +u16 GetNonDynamaxMaxHP(u32 battlerId) +{ + if (!IsDynamaxed(battlerId) || gBattleMons[battlerId].species == SPECIES_SHEDINJA) + return gBattleMons[battlerId].maxHP; + else + { + u16 mult = UQ_4_12(1.0/1.5); // placeholder + u16 maxHP = UQ_4_12_TO_INT((gBattleMons[battlerId].maxHP * mult) + UQ_4_12_ROUND); + return maxHP; + } +} + +// Sets flags used for Dynamaxing and checks Gigantamax forms. +void PrepareBattlerForDynamax(u16 battlerId) +{ + u8 side = GetBattlerSide(battlerId); + + gBattleStruct->dynamax.alreadyDynamaxed[side] = TRUE; + gBattleStruct->dynamax.dynamaxed[battlerId] = TRUE; + gBattleStruct->dynamax.dynamaxTurns[battlerId] = DYNAMAX_TURNS_COUNT; + + // Substitute is removed upon Dynamaxing. + gBattleMons[battlerId].status2 &= ~STATUS2_SUBSTITUTE; + ClearBehindSubstituteBit(battlerId); + + // Choiced Moves are reset upon Dynamaxing. + gBattleStruct->choicedMove[battlerId] = MOVE_NONE; + + // Try Gigantamax form change. + if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED)) // Ditto cannot Gigantamax. + TryBattleFormChange(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); +} + +// Unsets the flags used for Dynamaxing and reverts max HP if needed. +void UndoDynamax(u16 battlerId) +{ + u8 side = GetBattlerSide(battlerId); + u8 monId = gBattlerPartyIndexes[battlerId]; + + // Revert HP if battler is still Dynamaxed. + if (IsDynamaxed(battlerId)) + { + struct Pokemon *mon = (side == B_SIDE_PLAYER) ? &gPlayerParty[monId] : &gEnemyParty[monId]; + u16 mult = UQ_4_12(1.0/1.5); // placeholder + gBattleMons[battlerId].hp = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_HP) * mult + 1) + UQ_4_12_ROUND); // round up + SetMonData(mon, MON_DATA_HP, &gBattleMons[battlerId].hp); + } + + // Makes sure there are no Dynamax flags set, including on switch / faint. + gBattleStruct->dynamax.dynamaxed[battlerId] = FALSE; + gBattleStruct->dynamax.dynamaxTurns[battlerId] = 0; + + // Undo form change if needed. + if (IsGigantamaxed(battlerId)) + TryBattleFormChange(battlerId, FORM_CHANGE_END_BATTLE); +} + +// Certain moves are blocked by Max Guard that normally ignore protection. +bool32 IsMoveBlockedByMaxGuard(u16 move) +{ + switch (move) + { + case MOVE_BLOCK: + case MOVE_FLOWER_SHIELD: + case MOVE_GEAR_UP: + case MOVE_MAGNETIC_FLUX: + case MOVE_PHANTOM_FORCE: + case MOVE_PSYCH_UP: + case MOVE_SHADOW_FORCE: + case MOVE_TEATIME: + case MOVE_TRANSFORM: + return TRUE; + } + return FALSE; +} + +// Weight-based moves (and some other moves in Raids) are blocked by Dynamax. +bool32 IsMoveBlockedByDynamax(u16 move) +{ + // TODO: Certain moves are banned in raids. + switch (gBattleMoves[move].effect) + { + case EFFECT_HEAT_CRASH: + case EFFECT_LOW_KICK: + return TRUE; + } + return FALSE; +} + +// Returns whether a move should be converted into a Max Move. +bool32 ShouldUseMaxMove(u16 battlerId, u16 baseMove) +{ + // TODO: Raid bosses do not always use Max Moves. + // if (IsRaidBoss(battlerId)) + // return !IsRaidBossUsingRegularMove(battlerId, baseMove); + return IsDynamaxed(battlerId) || gBattleStruct->dynamax.toDynamax & gBitTable[battlerId]; +} + +static u16 GetTypeBasedMaxMove(u16 battlerId, u16 type) +{ + // Gigantamax check + u32 i; + u16 species = gBattleMons[battlerId].species; + u16 targetSpecies = SPECIES_NONE; + + if (!gSpeciesInfo[species].isGigantamax) + targetSpecies = GetBattleFormChangeTargetSpecies(battlerId, FORM_CHANGE_BATTLE_GIGANTAMAX); + + if (targetSpecies != SPECIES_NONE) + species = targetSpecies; + + if (gSpeciesInfo[species].isGigantamax) + { + for (i = 0; i < ARRAY_COUNT(sGMaxMoveTable); i++) + { + if (sGMaxMoveTable[i].species == species && sGMaxMoveTable[i].moveType == type) + return sGMaxMoveTable[i].gmaxMove; + } + } + + // Regular Max Move + if (sMaxMoveTable[type] == MOVE_NONE) // failsafe + return sMaxMoveTable[0]; + return sMaxMoveTable[type]; +} + +// Returns the appropriate Max Move or G-Max Move for a battler to use. +u16 GetMaxMove(u16 battlerId, u16 baseMove) +{ + u16 move = baseMove; + if (baseMove == MOVE_NONE) // for move display + { + return MOVE_NONE; + } + else if (baseMove == MOVE_STRUGGLE) + { + return MOVE_STRUGGLE; + } + else if (gBattleMoves[baseMove].split == SPLIT_STATUS) + { + move = MOVE_MAX_GUARD; + } + else if (gBattleStruct->dynamicMoveType) + { + move = GetTypeBasedMaxMove(battlerId, gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK); + gBattleStruct->dynamax.splits[battlerId] = gBattleMoves[baseMove].split; + } + else + { + move = GetTypeBasedMaxMove(battlerId, gBattleMoves[baseMove].type); + gBattleStruct->dynamax.splits[battlerId] = gBattleMoves[baseMove].split; + } + + return move; +} + +// First value is for Fighting, Poison and Multi-Attack. The second is for everything else. +enum +{ + MAX_POWER_TIER_1, // 70 or 90 damage + MAX_POWER_TIER_2, // 75 or 100 damage + MAX_POWER_TIER_3, // 80 or 110 damage + MAX_POWER_TIER_4, // 85 or 120 damage + MAX_POWER_TIER_5, // 90 or 130 damage + MAX_POWER_TIER_6, // 95 or 140 damage + MAX_POWER_TIER_7, // 100 or 130 damage + MAX_POWER_TIER_8, // 100 or 150 damage +}; + +// Gets the base power of a Max Move. +u8 GetMaxMovePower(u16 move) +{ + u8 tier; + // G-Max Drum Solo, G-Max Hydrosnipe, and G-Max Fireball always have 160 base power. + if (gBattleMoves[GetMaxMove(gBattlerAttacker, move)].argument == MAX_EFFECT_FIXED_POWER) + return 160; + + // Exceptions to all other rules below: + switch (move) + { + case MOVE_TRIPLE_KICK: return 80; + case MOVE_GEAR_GRIND: return 100; + case MOVE_DUAL_WINGBEAT: return 100; + case MOVE_TRIPLE_AXEL: return 140; + } + + tier = GetMaxPowerTier(move); + if (gBattleMoves[move].type == TYPE_FIGHTING + || gBattleMoves[move].type == TYPE_POISON + || move == MOVE_MULTI_ATTACK) + { + switch (tier) + { + default: + case MAX_POWER_TIER_1: return 70; + case MAX_POWER_TIER_2: return 75; + case MAX_POWER_TIER_3: return 80; + case MAX_POWER_TIER_4: return 85; + case MAX_POWER_TIER_5: return 90; + case MAX_POWER_TIER_6: return 95; + case MAX_POWER_TIER_7: return 100; + case MAX_POWER_TIER_8: return 100; + } + } + else + { + switch (tier) + { + default: + case MAX_POWER_TIER_1: return 90; + case MAX_POWER_TIER_2: return 100; + case MAX_POWER_TIER_3: return 110; + case MAX_POWER_TIER_4: return 120; + case MAX_POWER_TIER_5: return 130; + case MAX_POWER_TIER_6: return 140; + case MAX_POWER_TIER_7: return 130; + case MAX_POWER_TIER_8: return 150; + } + } +} + +static u8 GetMaxPowerTier(u16 move) +{ + if (gBattleMoves[move].strikeCount >= 2 && gBattleMoves[move].strikeCount <= 5) + { + switch(gBattleMoves[move].power) + { + case 0 ... 25: return MAX_POWER_TIER_2; + case 26 ... 30: return MAX_POWER_TIER_3; + case 31 ... 35: return MAX_POWER_TIER_4; + case 36 ... 50: return MAX_POWER_TIER_5; + default: + case 51 ... 60: return MAX_POWER_TIER_6; + } + } + + switch (gBattleMoves[move].effect) + { + case EFFECT_BIDE: + case EFFECT_SUPER_FANG: + case EFFECT_LEVEL_DAMAGE: + case EFFECT_PSYWAVE: + case EFFECT_COUNTER: + case EFFECT_PRESENT: + case EFFECT_BEAT_UP: + case EFFECT_WEATHER_BALL: + case EFFECT_FLING: + case EFFECT_ELECTRO_BALL: + case EFFECT_METAL_BURST: + case EFFECT_TERRAIN_PULSE: + case EFFECT_PUNISHMENT: + case EFFECT_TRUMP_CARD: + case EFFECT_SONICBOOM: + case EFFECT_SPIT_UP: + case EFFECT_NATURAL_GIFT: + case EFFECT_MIRROR_COAT: + case EFFECT_DRAGON_RAGE: + case EFFECT_FINAL_GAMBIT: + //case EFFECT_DRAGON_DARTS: + return MAX_POWER_TIER_2; + case EFFECT_OHKO: + case EFFECT_RETURN: + case EFFECT_FRUSTRATION: + case EFFECT_HEAT_CRASH: + case EFFECT_STORED_POWER: + case EFFECT_GYRO_BALL: + return MAX_POWER_TIER_5; + case EFFECT_MAGNITUDE: + case EFFECT_WRING_OUT: + return MAX_POWER_TIER_6; + case EFFECT_FLAIL: + case EFFECT_LOW_KICK: + return MAX_POWER_TIER_7; + case EFFECT_MULTI_HIT: + switch(gBattleMoves[move].power) + { + case 0 ... 15: return MAX_POWER_TIER_1; + case 16 ... 18: return MAX_POWER_TIER_2; + case 19 ... 20: return MAX_POWER_TIER_4; + default: + case 21 ... 25: return MAX_POWER_TIER_5; + } + } + + switch (gBattleMoves[move].power) + { + case 0 ... 40: return MAX_POWER_TIER_1; + case 45 ... 50: return MAX_POWER_TIER_2; + case 55 ... 60: return MAX_POWER_TIER_3; + case 65 ... 70: return MAX_POWER_TIER_4; + case 75 ... 100: return MAX_POWER_TIER_5; + case 110 ... 140: return MAX_POWER_TIER_6; + default: + case 150 ... 250: return MAX_POWER_TIER_8; + } +} + +// Returns whether a move is a Max Move or not. +bool32 IsMaxMove(u16 move) +{ + return move >= FIRST_MAX_MOVE && move <= LAST_MAX_MOVE; +} + +// Returns the full name of a Max Move for the move usage text. +const u8 *GetMaxMoveName(u16 move) +{ + if (IsMaxMove(move)) + return gMaxMoveNames[move - FIRST_MAX_MOVE]; + else + return gMaxMoveNames[0]; // Failsafe +} + +// Assigns the multistring to use for the "Damage Non- Types" G-Max effect. +void ChooseDamageNonTypesString(u8 type) +{ + switch (type) + { + case TYPE_GRASS: + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TRAPPED_WITH_VINES; + break; + case TYPE_WATER: + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CAUGHT_IN_VORTEX; + break; + case TYPE_FIRE: + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SURROUNDED_BY_FIRE; + break; + case TYPE_ROCK: + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SURROUNDED_BY_ROCKS; + break; + } +} + +// Returns the status effect that should be applied by a G-Max Move. +static u32 GetMaxMoveStatusEffect(u16 move) +{ + u8 maxEffect = gBattleMoves[move].argument; + switch (maxEffect) + { + // Status 1 + case MAX_EFFECT_PARALYZE_FOES: + return STATUS1_PARALYSIS; + case MAX_EFFECT_POISON_FOES: + return STATUS1_POISON; + case MAX_EFFECT_POISON_PARALYZE_FOES: + { + static const u8 sStunShockEffects[] = {STATUS1_PARALYSIS, STATUS1_POISON}; + return RandomElement(RNG_G_MAX_STUN_SHOCK, sStunShockEffects); + } + case MAX_EFFECT_EFFECT_SPORE_FOES: + { + static const u8 sBefuddleEffects[] = {STATUS1_PARALYSIS, STATUS1_POISON, STATUS1_SLEEP}; + return RandomElement(RNG_G_MAX_BEFUDDLE, sBefuddleEffects); + } + // Status 2 + case MAX_EFFECT_CONFUSE_FOES: + case MAX_EFFECT_CONFUSE_FOES_PAY_DAY: + return STATUS2_CONFUSION; + case MAX_EFFECT_INFATUATE_FOES: + return STATUS2_INFATUATION; + case MAX_EFFECT_MEAN_LOOK: + return STATUS2_ESCAPE_PREVENTION; + case MAX_EFFECT_TORMENT_FOES: + return STATUS2_TORMENT; + default: + return STATUS1_NONE; + } +} + +// 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) +{ + NATIVE_ARGS(); + u16 battler = gBattleScripting.battler; + struct Pokemon *mon = &GetSideParty(GetBattlerSide(battler))[gBattlerPartyIndexes[battler]]; + + if (!IsGigantamaxed(battler)) // RecalcBattlerStats will get called on form change. + RecalcBattlerStats(battler, mon); + + UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], mon, HEALTHBOX_ALL); + gBattlescriptCurrInstr = cmd->nextInstr; +} + +// Activates the secondary effect of a Max Move. +void BS_SetMaxMoveEffect(void) +{ + NATIVE_ARGS(); + u16 effect = 0; + u8 maxEffect = gBattleMoves[gCurrentMove].argument; + + // Don't continue if the move didn't land. + if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + { + gBattlescriptCurrInstr = cmd->nextInstr; + return; + } + + switch (maxEffect) + { + case MAX_EFFECT_RAISE_TEAM_ATTACK: + case MAX_EFFECT_RAISE_TEAM_DEFENSE: + case MAX_EFFECT_RAISE_TEAM_SPEED: + case MAX_EFFECT_RAISE_TEAM_SP_ATK: + case MAX_EFFECT_RAISE_TEAM_SP_DEF: + if (!NoAliveMonsForEitherParty()) + { + // Max Effects are ordered by stat ID. + SET_STATCHANGER(gBattleMoves[gCurrentMove].argument, 1, FALSE); + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectRaiseStatAllies; + effect++; + } + break; + case MAX_EFFECT_LOWER_ATTACK: + case MAX_EFFECT_LOWER_DEFENSE: + case MAX_EFFECT_LOWER_SPEED: + case MAX_EFFECT_LOWER_SP_ATK: + case MAX_EFFECT_LOWER_SP_DEF: + case MAX_EFFECT_LOWER_SPEED_2_FOES: + case MAX_EFFECT_LOWER_EVASIVENESS_FOES: + if (!NoAliveMonsForEitherParty()) + { + u8 statId = 0; + u8 stage = 1; + switch (maxEffect) + { + case MAX_EFFECT_LOWER_SPEED_2_FOES: + statId = STAT_SPEED; + stage = 2; + break; + case MAX_EFFECT_LOWER_EVASIVENESS_FOES: + statId = STAT_EVASION; + break; + default: + // Max Effects are ordered by stat ID. + statId = gBattleMoves[gCurrentMove].argument - MAX_EFFECT_LOWER_ATTACK + 1; + break; + } + SET_STATCHANGER(statId, stage, TRUE); + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectLowerStatFoes; + effect++; + } + break; + case MAX_EFFECT_SUN: + case MAX_EFFECT_RAIN: + case MAX_EFFECT_SANDSTORM: + case MAX_EFFECT_HAIL: + { + u8 weather, msg; + switch (maxEffect) + { + case MAX_EFFECT_SUN: + weather = ENUM_WEATHER_SUN; + msg = B_MSG_STARTED_SUNLIGHT; + break; + case MAX_EFFECT_RAIN: + weather = ENUM_WEATHER_RAIN; + msg = B_MSG_STARTED_RAIN; + break; + case MAX_EFFECT_SANDSTORM: + weather = ENUM_WEATHER_SANDSTORM; + msg = B_MSG_STARTED_SANDSTORM; + break; + case MAX_EFFECT_HAIL: + weather = ENUM_WEATHER_HAIL; + msg = B_MSG_STARTED_HAIL; + break; + } + if (TryChangeBattleWeather(gBattlerAttacker, weather, FALSE)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = msg; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectSetWeather; + effect++; + } + break; + } + case MAX_EFFECT_MISTY_TERRAIN: + case MAX_EFFECT_GRASSY_TERRAIN: + case MAX_EFFECT_ELECTRIC_TERRAIN: + case MAX_EFFECT_PSYCHIC_TERRAIN: + { + u32 statusFlag = 0; + switch (gBattleMoves[gCurrentMove].argument) + { + case MAX_EFFECT_MISTY_TERRAIN: + statusFlag = STATUS_FIELD_MISTY_TERRAIN; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAIN_SET_MISTY; + break; + case MAX_EFFECT_GRASSY_TERRAIN: + statusFlag = STATUS_FIELD_GRASSY_TERRAIN; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAIN_SET_GRASSY; + break; + case MAX_EFFECT_ELECTRIC_TERRAIN: + statusFlag = STATUS_FIELD_ELECTRIC_TERRAIN; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAIN_SET_ELECTRIC; + break; + case MAX_EFFECT_PSYCHIC_TERRAIN: + statusFlag = STATUS_FIELD_PSYCHIC_TERRAIN; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TERRAIN_SET_PSYCHIC; + break; + } + if (!(gFieldStatuses & statusFlag) && statusFlag != 0) + { + gFieldStatuses &= ~STATUS_FIELD_TERRAIN_ANY; + gFieldStatuses |= statusFlag; + if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_TERRAIN_EXTENDER) + gFieldTimers.terrainTimer = 8; + else + gFieldTimers.terrainTimer = 5; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectSetTerrain; + effect++; + } + break; + } + case MAX_EFFECT_VINE_LASH: + case MAX_EFFECT_CANNONADE: + case MAX_EFFECT_WILDFIRE: + case MAX_EFFECT_VOLCALITH: + { + u8 side = GetBattlerSide(gBattlerTarget); + if (!(gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES)) + { + gSideStatuses[side] |= SIDE_STATUS_DAMAGE_NON_TYPES; + gSideTimers[side].damageNonTypesTimer = 5; // damage is dealt for 4 turns, ends on 5th + gSideTimers[side].damageNonTypesType = gBattleMoves[gCurrentMove].type; + BattleScriptPush(gBattlescriptCurrInstr + 1); + ChooseDamageNonTypesString(gBattleMoves[gCurrentMove].type); + gBattlescriptCurrInstr = BattleScript_DamageNonTypesStarts; + effect++; + } + break; + } + case MAX_EFFECT_STEALTH_ROCK: + if (!(gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_STEALTH_ROCK)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_POINTEDSTONESFLOAT; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectStonesurge; + effect++; + } + break; + case MAX_EFFECT_STEELSURGE: + if (!(gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_STEELSURGE)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SHARPSTEELFLOATS; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectSteelsurge; + effect++; + } + break; + case MAX_EFFECT_DEFOG: + if (gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_SCREEN_ANY + || gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_HAZARDS_ANY + || gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_HAZARDS_ANY + || gFieldStatuses & STATUS_FIELD_TERRAIN_ANY) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_DefogTryHazards; + effect++; + } + break; + case MAX_EFFECT_AURORA_VEIL: + if (!(gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_AURORA_VEIL)) + { + gSideStatuses[GetBattlerSide(gBattlerAttacker)] |= SIDE_STATUS_AURORA_VEIL; + if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_LIGHT_CLAY) + gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 8; + else + gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 5; + gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilBattlerId = gBattlerAttacker; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_SAFEGUARD; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectAuroraVeilSuccess; + effect++; + } + break; + case MAX_EFFECT_GRAVITY: + if (!(gFieldStatuses & STATUS_FIELD_GRAVITY)) + { + gFieldStatuses |= STATUS_FIELD_GRAVITY; + gFieldTimers.gravityTimer = 5; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectGravitySuccess; + effect++; + } + break; + case MAX_EFFECT_SANDBLAST_FOES: + case MAX_EFFECT_FIRE_SPIN_FOES: + { + // Affects both opponents, but doesn't print strings so we can handle it here. + u8 battler; + for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler) + { + if (GetBattlerSide(battler) != GetBattlerSide(gBattlerTarget)) + continue; + if (!(gBattleMons[battler].status2 & STATUS2_WRAPPED)) + { + gBattleMons[battler].status2 |= STATUS2_WRAPPED; + if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_GRIP_CLAW) + #if B_BINDING_TURNS >= GEN_5 + gDisableStructs[battler].wrapTurns = 7; + else + gDisableStructs[battler].wrapTurns = (Random() % 2) + 4; + #else + gDisableStructs[battler].wrapTurns = 5; + else + gDisableStructs[battler].wrapTurns = (Random() % 4) + 2; + #endif + // The Wrap effect does not expire when the user switches, so here's some cheese. + gBattleStruct->wrappedBy[battler] = gBattlerTarget; + if (maxEffect == MAX_EFFECT_SANDBLAST_FOES) + gBattleStruct->wrappedMove[battler] = MOVE_SAND_TOMB; + else + gBattleStruct->wrappedMove[battler] = MOVE_FIRE_SPIN; + } + } + break; + } + case MAX_EFFECT_YAWN_FOE: + { + static const u8 sSnoozeEffects[] = {TRUE, FALSE}; + if (!(gStatuses3[gBattlerTarget] & STATUS3_YAWN) + && CanSleep(gBattlerTarget) + && RandomElement(RNG_G_MAX_SNOOZE, sSnoozeEffects)) // 50% chance of success + { + gStatuses3[gBattlerTarget] |= STATUS3_YAWN_TURN(2); + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectYawnSuccess; + effect++; + } + break; + } + case MAX_EFFECT_SPITE: + if (gLastMoves[gBattlerTarget] != MOVE_NONE + && gLastMoves[gBattlerTarget] != MOVE_UNAVAILABLE) + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectTryReducePP; + effect++; + } + break; + case MAX_EFFECT_PARALYZE_FOES: + case MAX_EFFECT_POISON_FOES: + case MAX_EFFECT_POISON_PARALYZE_FOES: + case MAX_EFFECT_EFFECT_SPORE_FOES: + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectStatus1Foes; + effect++; + break; + case MAX_EFFECT_CONFUSE_FOES_PAY_DAY: + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + u16 payday = gPaydayMoney; + gPaydayMoney += (gBattleMons[gBattlerAttacker].level * 100); + if (payday > gPaydayMoney) + gPaydayMoney = 0xFFFF; + gBattleCommunication[CURSOR_POSITION] = 1; // add "Coins scattered." message + } + // fall through + case MAX_EFFECT_CONFUSE_FOES: + case MAX_EFFECT_INFATUATE_FOES: + case MAX_EFFECT_TORMENT_FOES: + case MAX_EFFECT_MEAN_LOOK: + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectStatus2Foes; + effect++; + break; + case MAX_EFFECT_CRIT_PLUS: + gBattleStruct->bonusCritStages[gBattlerAttacker]++; + gBattleStruct->bonusCritStages[BATTLE_PARTNER(gBattlerAttacker)]++; + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectRaiseCritAlliesAnim; + effect++; + break; + case MAX_EFFECT_HEAL_TEAM: + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectHealOneSixthAllies; + effect++; + break; + case MAX_EFFECT_AROMATHERAPY: + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectCureStatusAllies; + effect++; + break; + case MAX_EFFECT_RECYCLE_BERRIES: + { + static const u8 sReplenishEffects[] = {TRUE, FALSE}; + if (RandomElement(RNG_G_MAX_REPLENISH, sReplenishEffects)) // 50% chance of success + { + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_EffectRecycleBerriesAllies; + effect++; + } + break; + } + } + + if (!effect) + gBattlescriptCurrInstr = cmd->nextInstr; +} + +// Sets up sharp steel on the target's side. +void BS_SetSteelsurge(void) +{ + NATIVE_ARGS(const u8 *failInstr); + u8 targetSide = GetBattlerSide(gBattlerTarget); + if (gSideStatuses[targetSide] & SIDE_STATUS_STEELSURGE) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else + { + gSideStatuses[targetSide] |= SIDE_STATUS_STEELSURGE; + gSideTimers[targetSide].steelsurgeAmount = 1; + gBattlescriptCurrInstr = cmd->nextInstr; + } +} + +// Applies the status1 effect associated with a given G-Max Move. +// Could be expanded to function for any move. +void BS_TrySetStatus1(void) +{ + NATIVE_ARGS(const u8 *failInstr); + u8 effect = 0; + u32 status1 = GetMaxMoveStatusEffect(gCurrentMove); + switch (status1) + { + case STATUS1_POISON: + if (CanBePoisoned(gBattlerAttacker, gBattlerTarget)) + { + gBattleMons[gBattlerTarget].status1 |= STATUS1_POISON; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + effect++; + } + break; + case STATUS1_PARALYSIS: + if (CanBeParalyzed(gBattlerTarget)) + { + gBattleMons[gBattlerTarget].status1 |= STATUS1_PARALYSIS; + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + effect++; + } + break; + case STATUS1_SLEEP: + if (CanSleep(gBattlerTarget)) + { + #if B_SLEEP_TURNS >= GEN_5 + gBattleMons[gBattlerTarget].status1 |= STATUS1_SLEEP_TURN((Random() % 3) + 2); + #else + gBattleMons[gBattlerTarget].status1 |= STATUS1_SLEEP_TURN((Random() % 4) + 3); + #endif + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + effect++; + } + break; + } + if (effect) + { + gEffectBattler = gBattlerTarget; + BtlController_EmitSetMonData(gBattlerTarget, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1); + MarkBattlerForControllerExec(gBattlerTarget); + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + { + gBattlescriptCurrInstr = cmd->failInstr; + } +} + +// Applies the status2 effect associated with a given G-Max Move. +void BS_TrySetStatus2(void) +{ + NATIVE_ARGS(const u8 *failInstr); + u8 effect = 0; + u32 status2 = GetMaxMoveStatusEffect(gCurrentMove); + switch (status2) + { + case STATUS2_CONFUSION: + if (CanBeConfused(gBattlerTarget)) + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_CONFUSION_TURN(((Random()) % 4) + 2); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTIUSE_STATE] = 1; + effect++; + } + break; + case STATUS2_INFATUATION: + { + u8 atkGender = GetGenderFromSpeciesAndPersonality(gBattleMons[gBattlerAttacker].species, gBattleMons[gBattlerAttacker].personality); + u8 defGender = GetGenderFromSpeciesAndPersonality(gBattleMons[gBattlerTarget].species, gBattleMons[gBattlerTarget].personality); + if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_INFATUATION) + && gBattleMons[gBattlerTarget].ability != ABILITY_OBLIVIOUS + && !IsAbilityOnSide(gBattlerTarget, ABILITY_AROMA_VEIL) + && atkGender != defGender + && atkGender != MON_GENDERLESS + && defGender != MON_GENDERLESS) + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_INFATUATED_WITH(gBattlerAttacker); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTIUSE_STATE] = 2; + effect++; + } + break; + } + case STATUS2_ESCAPE_PREVENTION: + if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_ESCAPE_PREVENTION)) + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_ESCAPE_PREVENTION; + gDisableStructs[gBattlerTarget].battlerPreventingEscape = gBattlerAttacker; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + effect++; + } + break; + case STATUS2_TORMENT: + if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_TORMENT) + && !IsAbilityOnSide(gBattlerTarget, ABILITY_AROMA_VEIL)) + { + gBattleMons[gBattlerTarget].status2 |= STATUS2_TORMENT; + gDisableStructs[gBattlerTarget].tormentTimer = 3; // 3 turns excluding current turn + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + effect++; + } + break; + } + if (effect) + { + gEffectBattler = gBattlerTarget; + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + { + gBattlescriptCurrInstr = cmd->failInstr; + } +} + +// Applies the endturn damage effect associated with the "Damage Non-" G-Max moves. +void BS_DamageNonTypes(void) +{ + NATIVE_ARGS(); + u8 side = GetBattlerSide(gBattlerAttacker); + gBattleMoveDamage = 0; + if (gSideTimers[side].damageNonTypesTimer + && !IS_BATTLER_OF_TYPE(gBattlerAttacker, gSideTimers[side].damageNonTypesType) + && IsBattlerAlive(gBattlerAttacker) + && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) + { + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 6; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } + gBattlescriptCurrInstr = cmd->nextInstr; +} + +// Heals one-sixth of the target's HP, including for Dynamaxed targets. +void BS_HealOneSixth(void) +{ + NATIVE_ARGS(const u8* failInstr); + gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 6; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + + if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP) + gBattlescriptCurrInstr = cmd->failInstr; // fail + else + gBattlescriptCurrInstr = cmd->nextInstr; // can heal +} + +// Recycles the target's item if it is specifically holding a berry. +void BS_TryRecycleBerry(void) +{ + NATIVE_ARGS(const u8 *failInstr); + u16* usedHeldItem = &gBattleStruct->usedHeldItems[gBattlerPartyIndexes[gBattlerTarget]][GetBattlerSide(gBattlerTarget)]; + if (gBattleMons[gBattlerTarget].item == ITEM_NONE + && gBattleStruct->changedItems[gBattlerTarget] == ITEM_NONE // Will not inherit an item + && ItemId_GetPocket(*usedHeldItem) == POCKET_BERRIES) + { + gLastUsedItem = *usedHeldItem; + *usedHeldItem = ITEM_NONE; + gBattleMons[gBattlerTarget].item = gLastUsedItem; + + BtlController_EmitSetMonData(gBattlerTarget, BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[gBattlerTarget].item); + MarkBattlerForControllerExec(gBattlerTarget); + + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + { + gBattlescriptCurrInstr = cmd->failInstr; + } +} + +// Goes to the jump instruction if the target is Dynamaxed. +void BS_JumpIfDynamaxed(void) +{ + NATIVE_ARGS(const u8 *jumpInstr); + if (IsDynamaxed(gBattlerTarget)) + gBattlescriptCurrInstr = cmd->jumpInstr; + else + gBattlescriptCurrInstr = cmd->nextInstr; +} + +// DYNAMAX TRIGGER: +static const u8 ALIGNED(4) sDynamaxTriggerGfx[] = INCBIN_U8("graphics/battle_interface/dynamax_trigger.4bpp"); +static const u16 sDynamaxTriggerPal[] = INCBIN_U16("graphics/battle_interface/dynamax_trigger.gbapal"); + +static const struct SpriteSheet sSpriteSheet_DynamaxTrigger = +{ + sDynamaxTriggerGfx, sizeof(sDynamaxTriggerGfx), TAG_DYNAMAX_TRIGGER_TILE +}; +static const struct SpritePalette sSpritePalette_DynamaxTrigger = +{ + sDynamaxTriggerPal, TAG_DYNAMAX_TRIGGER_PAL +}; + +static const struct OamData sOamData_DynamaxTrigger = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = ST_OAM_SQUARE, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sSpriteAnim_DynamaxTriggerOff[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_DynamaxTriggerOn[] = +{ + ANIMCMD_FRAME(16, 0), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_DynamaxTrigger[] = +{ + sSpriteAnim_DynamaxTriggerOff, + sSpriteAnim_DynamaxTriggerOn, +}; + +static const struct SpriteTemplate sSpriteTemplate_DynamaxTrigger = +{ + .tileTag = TAG_DYNAMAX_TRIGGER_TILE, + .paletteTag = TAG_DYNAMAX_TRIGGER_PAL, + .oam = &sOamData_DynamaxTrigger, + .anims = sSpriteAnimTable_DynamaxTrigger, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCb_DynamaxTrigger +}; + +// Dynamax Evolution Trigger icon functions. +void ChangeDynamaxTriggerSprite(u8 spriteId, u8 animId) +{ + StartSpriteAnim(&gSprites[spriteId], animId); +} + +#define SINGLES_DYNAMAX_TRIGGER_POS_X_OPTIMAL (30) +#define SINGLES_DYNAMAX_TRIGGER_POS_X_PRIORITY (31) +#define SINGLES_DYNAMAX_TRIGGER_POS_X_SLIDE (15) +#define SINGLES_DYNAMAX_TRIGGER_POS_Y_DIFF (-11) + +#define DOUBLES_DYNAMAX_TRIGGER_POS_X_OPTIMAL (30) +#define DOUBLES_DYNAMAX_TRIGGER_POS_X_PRIORITY (31) +#define DOUBLES_DYNAMAX_TRIGGER_POS_X_SLIDE (15) +#define DOUBLES_DYNAMAX_TRIGGER_POS_Y_DIFF (-4) + +#define tBattler data[0] +#define tHide data[1] + +void CreateDynamaxTriggerSprite(u8 battlerId, u8 palId) +{ + LoadSpritePalette(&sSpritePalette_DynamaxTrigger); + if (GetSpriteTileStartByTag(TAG_DYNAMAX_TRIGGER_TILE) == 0xFFFF) + LoadSpriteSheet(&sSpriteSheet_DynamaxTrigger); + if (gBattleStruct->dynamax.triggerSpriteId == 0xFF) + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + gBattleStruct->dynamax.triggerSpriteId = CreateSprite(&sSpriteTemplate_DynamaxTrigger, + gSprites[gHealthboxSpriteIds[battlerId]].x - DOUBLES_DYNAMAX_TRIGGER_POS_X_SLIDE, + gSprites[gHealthboxSpriteIds[battlerId]].y - DOUBLES_DYNAMAX_TRIGGER_POS_Y_DIFF, 0); + else + gBattleStruct->dynamax.triggerSpriteId = CreateSprite(&sSpriteTemplate_DynamaxTrigger, + gSprites[gHealthboxSpriteIds[battlerId]].x - SINGLES_DYNAMAX_TRIGGER_POS_X_SLIDE, + gSprites[gHealthboxSpriteIds[battlerId]].y - SINGLES_DYNAMAX_TRIGGER_POS_Y_DIFF, 0); + } + gSprites[gBattleStruct->dynamax.triggerSpriteId].tBattler = battlerId; + gSprites[gBattleStruct->dynamax.triggerSpriteId].tHide = FALSE; + + ChangeDynamaxTriggerSprite(gBattleStruct->dynamax.triggerSpriteId, palId); +} + +static void SpriteCb_DynamaxTrigger(struct Sprite *sprite) +{ + s32 xSlide, xPriority, xOptimal; + s32 yDiff; + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + xSlide = DOUBLES_DYNAMAX_TRIGGER_POS_X_SLIDE; + xPriority = DOUBLES_DYNAMAX_TRIGGER_POS_X_PRIORITY; + xOptimal = DOUBLES_DYNAMAX_TRIGGER_POS_X_OPTIMAL; + yDiff = DOUBLES_DYNAMAX_TRIGGER_POS_Y_DIFF; + } + else + { + xSlide = SINGLES_DYNAMAX_TRIGGER_POS_X_SLIDE; + xPriority = SINGLES_DYNAMAX_TRIGGER_POS_X_PRIORITY; + xOptimal = SINGLES_DYNAMAX_TRIGGER_POS_X_OPTIMAL; + yDiff = SINGLES_DYNAMAX_TRIGGER_POS_Y_DIFF; + } + + if (sprite->tHide) + { + if (sprite->x != gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xSlide) + sprite->x++; + + if (sprite->x >= gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xPriority) + sprite->oam.priority = 2; + else + sprite->oam.priority = 1; + + sprite->y = gSprites[gHealthboxSpriteIds[sprite->tBattler]].y - yDiff; + sprite->y2 = gSprites[gHealthboxSpriteIds[sprite->tBattler]].y2 - yDiff; + if (sprite->x == gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xSlide) + DestroyDynamaxTriggerSprite(); + } + else + { + if (sprite->x != gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xOptimal) + sprite->x--; + + if (sprite->x >= gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xPriority) + sprite->oam.priority = 2; + else + sprite->oam.priority = 1; + + sprite->y = gSprites[gHealthboxSpriteIds[sprite->tBattler]].y - yDiff; + sprite->y2 = gSprites[gHealthboxSpriteIds[sprite->tBattler]].y2 - yDiff; + } +} + +bool32 IsDynamaxTriggerSpriteActive(void) +{ + if (GetSpriteTileStartByTag(TAG_DYNAMAX_TRIGGER_TILE) == 0xFFFF) + return FALSE; + else if (IndexOfSpritePaletteTag(TAG_DYNAMAX_TRIGGER_PAL) != 0xFF) + return TRUE; + else + return FALSE; +} + +void HideDynamaxTriggerSprite(void) +{ + if (gBattleStruct->dynamax.triggerSpriteId >= MAX_SPRITES) + return; + ChangeDynamaxTriggerSprite(gBattleStruct->dynamax.triggerSpriteId, 0); + gSprites[gBattleStruct->dynamax.triggerSpriteId].tHide = TRUE; +} + +void DestroyDynamaxTriggerSprite(void) +{ + FreeSpritePaletteByTag(TAG_DYNAMAX_TRIGGER_PAL); + FreeSpriteTilesByTag(TAG_DYNAMAX_TRIGGER_TILE); + if (gBattleStruct->dynamax.triggerSpriteId != 0xFF) + DestroySprite(&gSprites[gBattleStruct->dynamax.triggerSpriteId]); + gBattleStruct->dynamax.triggerSpriteId = 0xFF; +} + +#undef tBattler +#undef tHide + +// data fields for healthboxMain +// oam.affineParam holds healthboxRight spriteId +#define hMain_DynamaxIndicatorId data[3] +#define hMain_HealthBarSpriteId data[5] +#define hMain_Battler data[6] +#define hMain_Data7 data[7] + +// data fields for healthboxRight +#define hOther_HealthBoxSpriteId data[5] + +// data fields for healthbar +#define hBar_HealthBoxSpriteId data[5] diff --git a/src/battle_factory.c b/src/battle_factory.c index 5d7a199dc3..4543bfbad4 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -741,8 +741,15 @@ u8 GetFactoryMonFixedIV(u8 challengeNum, bool8 isLastBattle) u8 ivSet; bool8 useHigherIV = isLastBattle ? TRUE : FALSE; - if (challengeNum > 8) - ivSet = 7; +// The Factory has an out-of-bounds access when generating the rental draft for round 9 (challengeNum==8), +// or the "elevated" rentals from round 8 (challengeNum+1==8) +// This happens to land on a number higher than 31, which is interpreted as "random IVs" +#ifdef BUGFIX + if (challengeNum >= ARRAY_COUNT(sFixedIVTable)) +#else + if (challengeNum > ARRAY_COUNT(sFixedIVTable)) +#endif + ivSet = ARRAY_COUNT(sFixedIVTable) - 1; else ivSet = challengeNum; diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c index 8cba2bceef..66ff6bcb03 100644 --- a/src/battle_factory_screen.c +++ b/src/battle_factory_screen.c @@ -2004,7 +2004,7 @@ static void Select_PrintMonCategory(void) PutWindowTilemap(SELECT_WIN_MON_CATEGORY); FillWindowPixelBuffer(SELECT_WIN_MON_CATEGORY, PIXEL_FILL(0)); species = GetMonData(&sFactorySelectScreen->mons[monId].monData, MON_DATA_SPECIES, NULL); - CopyMonCategoryText(SpeciesToNationalPokedexNum(species), text); + CopyMonCategoryText(species, text); x = GetStringRightAlignXOffset(FONT_NORMAL, text, 118); AddTextPrinterParameterized(SELECT_WIN_MON_CATEGORY, FONT_NORMAL, text, x, 1, 0, NULL); CopyWindowToVram(SELECT_WIN_MON_CATEGORY, COPYWIN_GFX); @@ -3951,7 +3951,7 @@ static void Swap_PrintMonCategory(void) species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, NULL); else species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, NULL); - CopyMonCategoryText(SpeciesToNationalPokedexNum(species), text); + CopyMonCategoryText(species, text); x = GetStringRightAlignXOffset(FONT_NORMAL, text, 118); AddTextPrinterParameterized(SWAP_WIN_MON_CATEGORY, FONT_NORMAL, text, x, 1, 0, NULL); CopyWindowToVram(SWAP_WIN_MON_CATEGORY, COPYWIN_GFX); diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 3e48a01476..4a4b47440b 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -377,7 +377,7 @@ void SpriteCB_WaitForBattlerBallReleaseAnim(struct Sprite *sprite) } } -static void UnusedDoBattleSpriteAffineAnim(struct Sprite *sprite, bool8 pointless) +static void UNUSED UnusedDoBattleSpriteAffineAnim(struct Sprite *sprite, bool8 pointless) { sprite->animPaused = TRUE; sprite->callback = SpriteCallbackDummy; @@ -591,13 +591,16 @@ void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battler) else { species = gBattleSpritesDataPtr->battlerData[battler].transformSpecies; - #if B_TRANSFORM_SHINY >= GEN_4 + if (B_TRANSFORM_SHINY >= GEN_4) + { currentPersonality = gTransformedPersonalities[battler]; currentOtId = gTransformedOtIds[battler]; - #else + } + else + { currentPersonality = monsPersonality; currentOtId = otId; - #endif + } } position = GetBattlerPosition(battler); @@ -631,6 +634,13 @@ void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battler) BlendPalette(paletteOffset, 16, 6, RGB_WHITE); CpuCopy32(&gPlttBufferFaded[paletteOffset], &gPlttBufferUnfaded[paletteOffset], PLTT_SIZEOF(16)); } + + // dynamax tint + if (IsDynamaxed(battler)) + { + BlendPalette(paletteOffset, 16, 4, RGB(31, 0, 12)); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + } } void BattleGfxSfxDummy2(u16 species) @@ -641,8 +651,7 @@ void DecompressTrainerFrontPic(u16 frontPicId, u8 battler) { u8 position = GetBattlerPosition(battler); DecompressPicFromTable(&gTrainerFrontPicTable[frontPicId], - gMonSpritesGfxPtr->sprites.ptr[position], - SPECIES_NONE); + gMonSpritesGfxPtr->sprites.ptr[position]); LoadCompressedSpritePalette(&gTrainerFrontPicPaletteTable[frontPicId]); } @@ -650,8 +659,7 @@ void DecompressTrainerBackPic(u16 backPicId, u8 battler) { u8 position = GetBattlerPosition(battler); DecompressPicFromTable(&gTrainerBackPicTable[backPicId], - gMonSpritesGfxPtr->sprites.ptr[position], - SPECIES_NONE); + gMonSpritesGfxPtr->sprites.ptr[position]); LoadCompressedPalette(gTrainerBackPicPaletteTable[backPicId].data, OBJ_PLTT_ID(battler), PLTT_SIZE_4BPP); } @@ -886,14 +894,12 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo if (GetBattlerSide(battlerAtk) == B_SIDE_PLAYER) { - #if B_TRANSFORM_SHINY >= GEN_4 - if (trackEnemyPersonality) + if (B_TRANSFORM_SHINY >= GEN_4 && trackEnemyPersonality) { personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); } else - #endif { personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); @@ -907,15 +913,13 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo } else { - #if B_TRANSFORM_SHINY >= GEN_4 - if (trackEnemyPersonality) + if (B_TRANSFORM_SHINY >= GEN_4 && trackEnemyPersonality) { personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); } else - #endif { personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); @@ -1123,6 +1127,7 @@ void SpriteCB_EnemyShadow(struct Sprite *shadowSprite) bool8 invisible = FALSE; u8 battler = shadowSprite->tBattlerId; struct Sprite *battlerSprite = &gSprites[gBattlerSpriteIds[battler]]; + u16 transformSpecies = SanitizeSpeciesId(gBattleSpritesDataPtr->battlerData[battler].transformSpecies); if (!battlerSprite->inUse || !IsBattlerSpritePresent(battler)) { @@ -1131,8 +1136,7 @@ void SpriteCB_EnemyShadow(struct Sprite *shadowSprite) } if (gAnimScriptActive || battlerSprite->invisible) invisible = TRUE; - else if (gBattleSpritesDataPtr->battlerData[battler].transformSpecies != SPECIES_NONE - && gEnemyMonElevation[gBattleSpritesDataPtr->battlerData[battler].transformSpecies] == 0) + else if (transformSpecies != SPECIES_NONE && gSpeciesInfo[transformSpecies].enemyMonElevation == 0) invisible = TRUE; if (gBattleSpritesDataPtr->battlerData[battler].behindSubstitute) @@ -1159,7 +1163,7 @@ void SetBattlerShadowSpriteCallback(u8 battler, u16 species) if (gBattleSpritesDataPtr->battlerData[battler].transformSpecies != SPECIES_NONE) species = gBattleSpritesDataPtr->battlerData[battler].transformSpecies; - if (gEnemyMonElevation[species] != 0) + if (gSpeciesInfo[SanitizeSpeciesId(species)].enemyMonElevation != 0) gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteId].callback = SpriteCB_EnemyShadow; else gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteId].callback = SpriteCB_SetInvisible; diff --git a/src/battle_interface.c b/src/battle_interface.c index bd87bfc0b1..d3751f702f 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -754,12 +754,6 @@ static const struct SpriteTemplate sSpriteTemplate_BurstTrigger = #define hBar_HealthBoxSpriteId data[5] #define hBar_Data6 data[6] -static void InitLastUsedBallAssets(void) -{ - gBattleStruct->ballSpriteIds[0] = MAX_SPRITES; - gBattleStruct->ballSpriteIds[1] = MAX_SPRITES; -} - // This function is here to cover a specific case - one player's mon in a 2 vs 1 double battle. In this scenario - display singles layout. // The same goes for a 2 vs 1 where opponent has only one pokemon. u32 WhichBattleCoords(u32 battlerId) // 0 - singles, 1 - doubles @@ -780,7 +774,7 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId) { s16 data6 = 0; u8 healthboxLeftSpriteId, healthboxRightSpriteId; - u8 healthbarSpriteId, megaIndicatorSpriteId; + u8 healthbarSpriteId; struct Sprite *healthBarSpritePtr; if (WhichBattleCoords(battlerId) == 0) // Singles @@ -995,10 +989,8 @@ void UpdateOamPriorityInAllHealthboxes(u8 priority, bool32 hideHPBoxes) MegaIndicator_UpdateOamPriority(healthboxLeftSpriteId, priority); - #if B_HIDE_HEALTHBOX_IN_ANIMS - if (hideHPBoxes && IsBattlerAlive(i)) + if (B_HIDE_HEALTHBOX_IN_ANIMS == TRUE && hideHPBoxes && IsBattlerAlive(i)) TryToggleHealboxVisibility(priority, healthboxLeftSpriteId, healthboxRightSpriteId, healthbarSpriteId); - #endif } } @@ -1050,8 +1042,8 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) u8 *objVram; u8 battler = gSprites[healthboxSpriteId].hMain_Battler; - // Don't print Lv char if mon is mega evolved or primal reverted. - if (IsBattlerMegaEvolved(battler) || IsBattlerPrimalReverted(battler)) + // Don't print Lv char if mon is mega evolved or primal reverted or Dynamaxed. + if (IsBattlerMegaEvolved(battler) || IsBattlerPrimalReverted(battler) || IsDynamaxed(battler)) { objVram = ConvertIntToDecimalStringN(text, lvl, STR_CONV_MODE_LEFT_ALIGN, 3); xPos = 5 * (3 - (objVram - (text + 2))) - 1; @@ -1065,6 +1057,7 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) objVram = ConvertIntToDecimalStringN(text + 2, lvl, STR_CONV_MODE_LEFT_ALIGN, 3); xPos = 5 * (3 - (objVram - (text + 2))); + MegaIndicator_SetVisibilities(healthboxSpriteId, TRUE); } windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, xPos, 3, 2, &windowId); @@ -1090,7 +1083,7 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) static void PrintHpOnHealthbox(u32 spriteId, s16 currHp, s16 maxHp, u32 bgColor, u32 rightTile, u32 leftTile) { u8 *windowTileData; - u32 windowId, tilesCount, x, healthboxTileNum; + u32 windowId, tilesCount, x; u8 text[28], *txtPtr; void *objVram = (void *)(OBJ_VRAM0) + gSprites[spriteId].oam.tileNum * TILE_SIZE_4BPP; @@ -1479,6 +1472,7 @@ void HideTriggerSprites(void) HideMegaTriggerSprite(); HideBurstTriggerSprite(); HideZMoveTriggerSprite(); + HideDynamaxTriggerSprite(); } void DestroyMegaTriggerSprite(void) @@ -1621,6 +1615,7 @@ enum INDICATOR_MEGA, INDICATOR_ALPHA, INDICATOR_OMEGA, + INDICATOR_DYNAMAX, INDICATOR_COUNT, }; @@ -1628,20 +1623,24 @@ static const u8 ALIGNED(4) sMegaIndicatorGfx[] = INCBIN_U8("graphics/battle_inte static const u16 sMegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/mega_indicator.gbapal"); static const u8 ALIGNED(4) sAlphaIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/alpha_indicator.4bpp"); static const u8 ALIGNED(4) sOmegaIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/omega_indicator.4bpp"); -static const u16 sAlphaOmegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/alpha_indicator.gbapal"); +static const u16 sAlphaOmegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/misc_indicator.gbapal"); +static const u8 ALIGNED(4) sDynamaxIndicatorGfx[] = INCBIN_U8("graphics/battle_interface/dynamax_indicator.4bpp"); +static const u16 sDynamaxIndicatorPal[] = INCBIN_U16("graphics/battle_interface/misc_indicator.gbapal"); static const struct SpriteSheet sMegaIndicator_SpriteSheets[] = { [INDICATOR_MEGA] = {sMegaIndicatorGfx, sizeof(sMegaIndicatorGfx), TAG_MEGA_INDICATOR_TILE}, [INDICATOR_ALPHA] = {sAlphaIndicatorGfx, sizeof(sAlphaIndicatorGfx), TAG_ALPHA_INDICATOR_TILE}, [INDICATOR_OMEGA] = {sOmegaIndicatorGfx, sizeof(sOmegaIndicatorGfx), TAG_OMEGA_INDICATOR_TILE}, + [INDICATOR_DYNAMAX] = {sDynamaxIndicatorGfx, sizeof(sDynamaxIndicatorGfx), TAG_DYNAMAX_INDICATOR_TILE}, [INDICATOR_COUNT] = {0} }; static const struct SpritePalette sMegaIndicator_SpritePalettes[] = { [INDICATOR_MEGA] = {sMegaIndicatorPal, TAG_MEGA_INDICATOR_PAL}, - [INDICATOR_ALPHA] = {sAlphaOmegaIndicatorPal, TAG_ALPHA_OMEGA_INDICATOR_PAL}, - [INDICATOR_OMEGA] = {sAlphaOmegaIndicatorPal, TAG_ALPHA_OMEGA_INDICATOR_PAL}, + [INDICATOR_ALPHA] = {sAlphaOmegaIndicatorPal, TAG_MISC_INDICATOR_PAL}, + [INDICATOR_OMEGA] = {sAlphaOmegaIndicatorPal, TAG_MISC_INDICATOR_PAL}, + [INDICATOR_DYNAMAX] = {sDynamaxIndicatorPal, TAG_MISC_INDICATOR_PAL}, [INDICATOR_COUNT] = {0} }; @@ -1666,8 +1665,9 @@ static const struct SpriteTemplate sSpriteTemplate_MegaIndicator = static const u16 sMegaIndicatorTags[][2] = { [INDICATOR_MEGA] = {TAG_MEGA_INDICATOR_TILE, TAG_MEGA_INDICATOR_PAL}, - [INDICATOR_ALPHA] = {TAG_ALPHA_INDICATOR_TILE, TAG_ALPHA_OMEGA_INDICATOR_PAL}, - [INDICATOR_OMEGA] = {TAG_OMEGA_INDICATOR_TILE, TAG_ALPHA_OMEGA_INDICATOR_PAL}, + [INDICATOR_ALPHA] = {TAG_ALPHA_INDICATOR_TILE, TAG_MISC_INDICATOR_PAL}, + [INDICATOR_OMEGA] = {TAG_OMEGA_INDICATOR_TILE, TAG_MISC_INDICATOR_PAL}, + [INDICATOR_DYNAMAX] = {TAG_DYNAMAX_INDICATOR_TILE, TAG_MISC_INDICATOR_PAL}, }; static const s8 sIndicatorPositions[][2] = @@ -1692,11 +1692,11 @@ void MegaIndicator_LoadSpritesGfx(void) static bool32 MegaIndicator_ShouldBeInvisible(u32 battlerId, struct Sprite *sprite) { - u32 side = GetBattlerSide(battlerId); bool32 megaEvolved = IsBattlerMegaEvolved(battlerId); bool32 primalReverted = IsBattlerPrimalReverted(battlerId); + bool32 dynamaxed = IsDynamaxed(battlerId); - if (!megaEvolved && !primalReverted) + if (!megaEvolved && !primalReverted && !dynamaxed) return TRUE; if (megaEvolved) @@ -1705,6 +1705,8 @@ static bool32 MegaIndicator_ShouldBeInvisible(u32 battlerId, struct Sprite *spri sprite->tType = INDICATOR_ALPHA; else if (primalReverted && gBattleMons[battlerId].species == SPECIES_GROUDON_PRIMAL) sprite->tType = INDICATOR_OMEGA; + else if (dynamaxed) + sprite->tType = INDICATOR_DYNAMAX; sprite->oam.tileNum = GetSpriteTileStartByTag(sMegaIndicatorTags[sprite->tType][0]); sprite->oam.paletteNum = IndexOfSpritePaletteTag(sMegaIndicatorTags[sprite->tType][1]); @@ -1739,7 +1741,6 @@ static void MegaIndicator_UpdateOamPriority(u32 healthboxId, u32 oamPriority) static void MegaIndicator_UpdateLevel(u32 healthboxId, u32 level) { - u32 i; s16 xDelta = 0; u8 *spriteId = MegaIndicator_GetSpriteId(healthboxId); @@ -1754,7 +1755,7 @@ static void MegaIndicator_UpdateLevel(u32 healthboxId, u32 level) static void MegaIndicator_CreateSprite(u32 battlerId, u32 healthboxSpriteId) { struct SpriteTemplate sprTemplate; - u32 position, level; + u32 position; u8 *spriteId; s16 xHealthbox = 0, y = 0; s32 x = 0; @@ -2614,15 +2615,12 @@ 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); currentBarValue = CalcNewBarValue(gBattleSpritesDataPtr->battleBars[battlerId].maxValue, gBattleSpritesDataPtr->battleBars[battlerId].oldValue, gBattleSpritesDataPtr->battleBars[battlerId].receivedValue, &gBattleSpritesDataPtr->battleBars[battlerId].currValue, - #if B_FAST_HP_DRAIN == TRUE - B_HEALTHBAR_PIXELS / 8, max(gBattleSpritesDataPtr->battleBars[battlerId].maxValue / B_HEALTHBAR_PIXELS, 1)); - #else - B_HEALTHBAR_PIXELS / 8, 1); - #endif + B_HEALTHBAR_PIXELS / 8, hpFraction); } else // exp bar { @@ -3239,10 +3237,12 @@ static void RestoreOverwrittenPixels(u8 *tiles) void CreateAbilityPopUp(u8 battlerId, u32 ability, bool32 isDoubleBattle) { -#if B_ABILITY_POP_UP == TRUE const s16 (*coords)[2]; u8 spriteId1, spriteId2, battlerPosition, taskId; + if (B_ABILITY_POP_UP == FALSE) + return; + if (gTestRunnerEnabled) { TestRunner_Battle_RecordAbilityPopUp(battlerId, ability); @@ -3312,7 +3312,6 @@ void CreateAbilityPopUp(u8 battlerId, u32 ability, bool32 isDoubleBattle) PrintBattlerOnAbilityPopUp(battlerId, spriteId1, spriteId2); PrintAbilityOnAbilityPopUp(ability, spriteId1, spriteId2); RestoreOverwrittenPixels((void*)(OBJ_VRAM0) + (gSprites[spriteId1].oam.tileNum * 32)); -#endif } void UpdateAbilityPopup(u8 battlerId) @@ -3395,18 +3394,10 @@ static const struct OamData sOamData_LastUsedBall = .objMode = 0, .mosaic = 0, .bpp = 0, -#if B_LAST_USED_BALL_CYCLE == TRUE - .shape = SPRITE_SHAPE(32x64), -#else - .shape = SPRITE_SHAPE(32x32), -#endif + .shape = (B_LAST_USED_BALL_CYCLE == TRUE ? SPRITE_SHAPE(32x64) : SPRITE_SHAPE(32x32)), .x = 0, .matrixNum = 0, -#if B_LAST_USED_BALL_CYCLE == TRUE - .size = SPRITE_SIZE(32x64), -#else - .size = SPRITE_SIZE(32x32), -#endif + .size = (B_LAST_USED_BALL_CYCLE == TRUE ? SPRITE_SIZE(32x64) : SPRITE_SIZE(32x32)), .tileNum = 0, .priority = 1, .paletteNum = 0, @@ -3457,9 +3448,8 @@ static const struct SpriteSheet sSpriteSheet_LastUsedBallWindow = bool32 CanThrowLastUsedBall(void) { -#if B_LAST_USED_BALL == FALSE - return FALSE; -#else + if (B_LAST_USED_BALL == FALSE) + return FALSE; if (!CanThrowBall()) return FALSE; if (gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_FRONTIER)) @@ -3468,12 +3458,12 @@ bool32 CanThrowLastUsedBall(void) return FALSE; return TRUE; -#endif } void TryAddLastUsedBallItemSprites(void) { -#if B_LAST_USED_BALL == TRUE + if (B_LAST_USED_BALL == FALSE) + return; if (gLastThrownBall == 0 || (gLastThrownBall != 0 && !CheckBagHasItem(gLastThrownBall, 1))) { @@ -3510,10 +3500,8 @@ void TryAddLastUsedBallItemSprites(void) gSprites[gBattleStruct->ballSpriteIds[1]].sHide = FALSE; // restore gLastUsedBallMenuPresent = TRUE; } -#if B_LAST_USED_BALL_CYCLE == TRUE - ArrowsChangeColorLastBallCycle(0); //Default the arrows to be invisible -#endif -#endif + if (B_LAST_USED_BALL_CYCLE == TRUE) + ArrowsChangeColorLastBallCycle(0); //Default the arrows to be invisible } static void DestroyLastUsedBallWinGfx(struct Sprite *sprite) @@ -3571,7 +3559,8 @@ static void SpriteCB_LastUsedBall(struct Sprite *sprite) static void TryHideOrRestoreLastUsedBall(u8 caseId) { -#if B_LAST_USED_BALL == TRUE + if (B_LAST_USED_BALL == FALSE) + return; if (gBattleStruct->ballSpriteIds[0] == MAX_SPRITES) return; @@ -3592,27 +3581,25 @@ static void TryHideOrRestoreLastUsedBall(u8 caseId) gLastUsedBallMenuPresent = TRUE; break; } -#if B_LAST_USED_BALL_CYCLE == TRUE - ArrowsChangeColorLastBallCycle(0); //Default the arrows to be invisible -#endif -#endif + if (B_LAST_USED_BALL_CYCLE == TRUE) + ArrowsChangeColorLastBallCycle(0); //Default the arrows to be invisible } void TryHideLastUsedBall(void) { -#if B_LAST_USED_BALL == TRUE - TryHideOrRestoreLastUsedBall(0); -#endif + if (B_LAST_USED_BALL == TRUE) + TryHideOrRestoreLastUsedBall(0); } void TryRestoreLastUsedBall(void) { -#if B_LAST_USED_BALL == TRUE + if (B_LAST_USED_BALL == FALSE) + return; + if (gBattleStruct->ballSpriteIds[0] != MAX_SPRITES) TryHideOrRestoreLastUsedBall(1); else TryAddLastUsedBallItemSprites(); -#endif } static void SpriteCB_LastUsedBallBounce(struct Sprite *sprite) diff --git a/src/battle_intro.c b/src/battle_intro.c index 490aa94061..90ff736f00 100644 --- a/src/battle_intro.c +++ b/src/battle_intro.c @@ -11,8 +11,6 @@ #include "trig.h" #include "constants/trainers.h" -static EWRAM_DATA u16 sBgCnt = 0; - extern const u8 gBattleAnimBgCntSet[]; extern const u8 gBattleAnimBgCntGet[]; @@ -40,39 +38,39 @@ void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value) { if (bgId < 4) { - sBgCnt = GetGpuReg(gBattleAnimBgCntSet[bgId]); + u32 bgCnt = GetGpuReg(gBattleAnimBgCntSet[bgId]); switch (attributeId) { case BG_ANIM_SCREEN_SIZE: - ((struct BgCnt *)&sBgCnt)->screenSize = value; + ((struct BgCnt *)&bgCnt)->screenSize = value; break; case BG_ANIM_AREA_OVERFLOW_MODE: - ((struct BgCnt *)&sBgCnt)->areaOverflowMode = value; + ((struct BgCnt *)&bgCnt)->areaOverflowMode = value; break; case BG_ANIM_MOSAIC: - ((struct BgCnt *)&sBgCnt)->mosaic = value; + ((struct BgCnt *)&bgCnt)->mosaic = value; break; case BG_ANIM_CHAR_BASE_BLOCK: - ((struct BgCnt *)&sBgCnt)->charBaseBlock = value; + ((struct BgCnt *)&bgCnt)->charBaseBlock = value; break; case BG_ANIM_PRIORITY: - ((struct BgCnt *)&sBgCnt)->priority = value; + ((struct BgCnt *)&bgCnt)->priority = value; break; case BG_ANIM_PALETTES_MODE: - ((struct BgCnt *)&sBgCnt)->palettes = value; + ((struct BgCnt *)&bgCnt)->palettes = value; break; case BG_ANIM_SCREEN_BASE_BLOCK: - ((struct BgCnt *)&sBgCnt)->screenBaseBlock = value; + ((struct BgCnt *)&bgCnt)->screenBaseBlock = value; break; } - SetGpuReg(gBattleAnimBgCntSet[bgId], sBgCnt); + SetGpuReg(gBattleAnimBgCntSet[bgId], bgCnt); } } int GetAnimBgAttribute(u8 bgId, u8 attributeId) { - u16 bgCnt; + u32 bgCnt; if (bgId < 4) { @@ -118,7 +116,7 @@ void HandleIntroSlide(u8 terrain) { taskId = CreateTask(BattleIntroSlide3, 0); } - else if ((gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) && gGameVersion != VERSION_RUBY) + else if (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) == SPECIES_KYOGRE) { terrain = BATTLE_TERRAIN_UNDERWATER; taskId = CreateTask(BattleIntroSlide2, 0); @@ -587,7 +585,6 @@ static void BattleIntroSlidePartner(u8 taskId) void DrawBattlerOnBg(int bgId, u8 x, u8 y, u8 battlerPosition, u8 paletteId, u8 *tiles, u16 *tilemap, u16 tilesOffset) { int i, j; - u8 battler = GetBattlerAtPosition(battlerPosition); int offset = tilesOffset; CpuCopy16(gMonSpritesGfxPtr->sprites.ptr[battlerPosition], tiles, BG_SCREEN_SIZE); LoadBgTiles(bgId, tiles, 0x1000, tilesOffset); @@ -602,7 +599,7 @@ void DrawBattlerOnBg(int bgId, u8 x, u8 y, u8 battlerPosition, u8 paletteId, u8 LoadBgTilemap(bgId, tilemap, BG_SCREEN_SIZE, 0); } -static void DrawBattlerOnBgDMA(u8 x, u8 y, u8 battlerPosition, u8 arg3, u8 paletteId, u16 arg5, u8 arg6, u8 arg7) +static void UNUSED DrawBattlerOnBgDMA(u8 x, u8 y, u8 battlerPosition, u8 arg3, u8 paletteId, u16 arg5, u8 arg6, u8 arg7) { int i, j, offset; diff --git a/src/battle_main.c b/src/battle_main.c index 0ef0caa27a..0f708d41ee 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -65,8 +65,6 @@ #include "constants/trainers.h" #include "cable_club.h" -extern struct Evolution gEvolutionTable[][EVOS_PER_MON]; - extern const struct BgTemplate gBattleBgTemplates[]; extern const struct WindowTemplate *const gBattleWindowTemplates[]; @@ -87,7 +85,6 @@ static void AskRecordBattle(void); static void SpriteCB_MoveWildMonToRight(struct Sprite *sprite); static void SpriteCB_WildMonShowHealthbox(struct Sprite *sprite); static void SpriteCB_WildMonAnimate(struct Sprite *sprite); -static void SpriteCB_Flicker(struct Sprite *sprite); static void SpriteCB_AnimFaintOpponent(struct Sprite *sprite); static void SpriteCB_BlinkVisible(struct Sprite *sprite); static void SpriteCB_Idle(struct Sprite *sprite); @@ -103,8 +100,6 @@ static void SetActionsAndBattlersTurnOrder(void); static void UpdateBattlerPartyOrdersOnSwitch(u32 battler); static bool8 AllAtActionConfirmed(void); static void TryChangeTurnOrder(void); -static void CheckChosenMoveForEffectsBeforeTurnStarts(void); -static void CheckMegaEvolutionBeforeTurn(void); static void TryChangingTurnOrderEffects(u32 battler1, u32 battler2); static void CheckChangingTurnOrderEffects(void); static void FreeResetData_ReturnToOvOrDoEvolutions(void); @@ -135,16 +130,10 @@ EWRAM_DATA u16 gBattle_WIN0H = 0; EWRAM_DATA u16 gBattle_WIN0V = 0; EWRAM_DATA u16 gBattle_WIN1H = 0; EWRAM_DATA u16 gBattle_WIN1V = 0; -EWRAM_DATA u8 gDisplayedStringBattle[400] = {0}; +EWRAM_DATA u8 gDisplayedStringBattle[425] = {0}; // Increased in size to fit Juan's defeat text (SootopolisCity_Gym_1F_Text_JuanDefeat) EWRAM_DATA u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT] = {0}; EWRAM_DATA u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT] = {0}; -EWRAM_DATA u8 gBattleTextBuff3[30] = {0}; //expanded for stupidly long z move names -// The below array is never intentionally used. However, Juan's -// defeat text (SootopolisCity_Gym_1F_Text_JuanDefeat) is too long -// for gDisplayedStringBattle and overflows into this array. If it -// is removed (and none of the buffers above are increased in size) -// it will instead overflow into useful data. -EWRAM_DATA static u32 sFlickerArray[25] = {0}; +EWRAM_DATA u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT + 13] = {0}; // expanded for stupidly long z move names EWRAM_DATA u32 gBattleTypeFlags = 0; EWRAM_DATA u8 gBattleTerrain = 0; EWRAM_DATA u32 gUnusedFirstBattleVar1 = 0; // Never read @@ -169,7 +158,7 @@ EWRAM_DATA u16 gChosenMove = 0; EWRAM_DATA u16 gCalledMove = 0; EWRAM_DATA s32 gBattleMoveDamage = 0; EWRAM_DATA s32 gHpDealt = 0; -EWRAM_DATA s32 gTakenDmg[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA s32 gBideDmg[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u16 gLastUsedItem = 0; EWRAM_DATA u16 gLastUsedAbility = 0; EWRAM_DATA u8 gBattlerAttacker = 0; @@ -195,7 +184,7 @@ EWRAM_DATA u8 gLastHitBy[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u16 gMoveResultFlags = 0; EWRAM_DATA u32 gHitMarker = 0; -EWRAM_DATA u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA u8 gBideTarget[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u8 gUnusedFirstBattleVar2 = 0; // Never read EWRAM_DATA u32 gSideStatuses[NUM_BATTLE_SIDES] = {0}; EWRAM_DATA struct SideTimer gSideTimers[NUM_BATTLE_SIDES] = {0}; @@ -236,7 +225,7 @@ EWRAM_DATA u32 gFieldStatuses = 0; EWRAM_DATA struct FieldTimer gFieldTimers = {0}; EWRAM_DATA u8 gBattlerAbility = 0; EWRAM_DATA u16 gPartnerSpriteId = 0; -EWRAM_DATA struct TotemBoost gTotemBoosts[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA struct QueuedStatBoost gQueuedStatBoosts[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA bool8 gHasFetchedBall = FALSE; EWRAM_DATA u8 gLastUsedBall = 0; EWRAM_DATA u16 gLastThrownBall = 0; @@ -509,7 +498,6 @@ void CB2_InitBattle(void) static void CB2_InitBattleInternal(void) { s32 i; - u16 targetSpecies; SetHBlankCallback(NULL); SetVBlankCallback(NULL); @@ -606,14 +594,11 @@ static void CB2_InitBattleInternal(void) gSaveBlock2Ptr->frontier.disableRecordBattle = FALSE; for (i = 0; i < PARTY_SIZE; i++) + { AdjustFriendship(&gPlayerParty[i], FRIENDSHIP_EVENT_LEAGUE_BATTLE); - // Apply party-wide start-of-battle form changes - for (i = 0; i < PARTY_SIZE; i++) - { - // Player's side + // Apply party-wide start-of-battle form changes for both sides. TryFormChange(i, B_SIDE_PLAYER, FORM_CHANGE_BEGIN_BATTLE); - // Opponent's side TryFormChange(i, B_SIDE_OPPONENT, FORM_CHANGE_BEGIN_BATTLE); } @@ -1941,7 +1926,6 @@ void CustomTrainerPartyAssignMoves(struct Pokemon *mon, const struct TrainerMon u8 CreateNPCTrainerPartyFromTrainer(struct Pokemon *party, const struct Trainer *trainer, bool32 firstTrainer, u32 battleTypeFlags) { u32 personalityValue; - u8 fixedIV; s32 i, j; u8 monsCount; if (battleTypeFlags & BATTLE_TYPE_TRAINER && !(battleTypeFlags & (BATTLE_TYPE_FRONTIER @@ -2697,31 +2681,6 @@ void SpriteCallbackDummy_2(struct Sprite *sprite) } -#define sNumFlickers data[3] -#define sDelay data[4] - -static void SpriteCB_Flicker(struct Sprite *sprite) -{ - sprite->sDelay--; - if (sprite->sDelay == 0) - { - sprite->sDelay = 8; - sprite->invisible ^= 1; - sprite->sNumFlickers--; - if (sprite->sNumFlickers == 0) - { - sprite->invisible = FALSE; - sprite->callback = SpriteCallbackDummy_2; - // sFlickerArray[0] = 0; - } - } -} - -#undef sNumFlickers -#undef sDelay - -extern const struct MonCoords gMonFrontPicCoords[]; - void SpriteCB_FaintOpponentMon(struct Sprite *sprite) { u8 battler = sprite->sBattler; @@ -2734,19 +2693,10 @@ void SpriteCB_FaintOpponentMon(struct Sprite *sprite) else species = sprite->sSpeciesId; + species = SanitizeSpeciesId(species); if (species == SPECIES_UNOWN) - { species = GetUnownSpeciesId(personality); - yOffset = gMonFrontPicCoords[species].y_offset; - } - else if (species > NUM_SPECIES) - { - yOffset = gMonFrontPicCoords[SPECIES_NONE].y_offset; - } - else - { - yOffset = gMonFrontPicCoords[species].y_offset; - } + yOffset = gSpeciesInfo[species].frontPicYOffset; sprite->data[3] = 8 - yOffset / 8; sprite->data[4] = 1; @@ -2834,8 +2784,7 @@ static void SpriteCB_BattleSpriteSlideLeft(struct Sprite *sprite) } } -// Unused -static void SetIdleSpriteCallback(struct Sprite *sprite) +static void UNUSED SetIdleSpriteCallback(struct Sprite *sprite) { sprite->callback = SpriteCB_Idle; } @@ -3192,6 +3141,7 @@ void SwitchInClearSetData(u32 battler) gDisableStructs[battler].battlerWithSureHit = disableStructCopy.battlerWithSureHit; gDisableStructs[battler].perishSongTimer = disableStructCopy.perishSongTimer; gDisableStructs[battler].battlerPreventingEscape = disableStructCopy.battlerPreventingEscape; + gDisableStructs[battler].embargoTimer = disableStructCopy.embargoTimer; } gMoveResultFlags = 0; @@ -3237,12 +3187,19 @@ void SwitchInClearSetData(u32 battler) gSpecialStatuses[battler].physicalDmg = 0; gSpecialStatuses[battler].specialDmg = 0; + // Reset G-Max Chi Strike boosts. + gBattleStruct->bonusCritStages[battler] = 0; + + // Reset Dynamax flags. + UndoDynamax(battler); + gBattleStruct->overwrittenAbilities[battler] = ABILITY_NONE; // Clear selected party ID so Revival Blessing doesn't get confused. gSelectedMonPartyId = PARTY_SIZE; // Allow for illegal abilities within tests. + #if TESTING if (gTestRunnerEnabled) { u32 side = GetBattlerSide(battler); @@ -3250,13 +3207,15 @@ void SwitchInClearSetData(u32 battler) if (TestRunner_Battle_GetForcedAbility(side, partyIndex)) gBattleMons[i].ability = gBattleStruct->overwrittenAbilities[i] = TestRunner_Battle_GetForcedAbility(side, partyIndex); } + #endif // TESTING Ai_UpdateSwitchInData(battler); } -void FaintClearSetData(u32 battler) +const u8* FaintClearSetData(u32 battler) { s32 i; + const u8 *result = NULL; for (i = 0; i < NUM_BATTLE_STATS; i++) gBattleMons[battler].statStages[i] = DEFAULT_STAT_STAGE; @@ -3390,7 +3349,7 @@ void FaintClearSetData(u32 battler) { gBattleMons[otherSkyDropper].status2 |= STATUS2_CONFUSION_TURN(((Random()) % 4) + 2); gBattlerAttacker = otherSkyDropper; - gBattlescriptCurrInstr = BattleScript_ThrashConfuses - 2; + result = BattleScript_ThrashConfuses; } } } @@ -3400,6 +3359,7 @@ void FaintClearSetData(u32 battler) gBattleStruct->zmove.active = FALSE; gBattleStruct->zmove.toBeUsed[battler] = MOVE_NONE; gBattleStruct->zmove.effect = EFFECT_HIT; + return result; } static void DoBattleIntro(void) @@ -3515,11 +3475,10 @@ static void DoBattleIntro(void) } else // Skip party summary since it is a wild battle. { - #if B_FAST_INTRO == TRUE - *state = 7; // Don't wait for sprite, print message at the same time. - #else - *state = 6; // Wait for sprite to load. - #endif + if (B_FAST_INTRO == TRUE) + *state = 7; // Don't wait for sprite, print message at the same time. + else + *state = 6; // Wait for sprite to load. } break; case 5: // draw party summary in trainer battles @@ -3588,11 +3547,10 @@ static void DoBattleIntro(void) } else { - #if B_FAST_INTRO == TRUE - *state = 15; // Wait for text to be printed. - #else - *state = 14; // Wait for text and sprite. - #endif + if (B_FAST_INTRO == TRUE) + *state = 15; // Wait for text to be printed. + else + *state = 14; // Wait for text and sprite. } } break; @@ -3630,11 +3588,10 @@ static void DoBattleIntro(void) BtlController_EmitIntroTrainerBallThrow(battler, BUFFER_A); MarkBattlerForControllerExec(battler); } - #if B_FAST_INTRO == TRUE - if (!(gBattleTypeFlags & (BATTLE_TYPE_RECORDED | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_RECORDED_IS_MASTER | BATTLE_TYPE_LINK))) + if (B_FAST_INTRO == TRUE + && !(gBattleTypeFlags & (BATTLE_TYPE_RECORDED | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_RECORDED_IS_MASTER | BATTLE_TYPE_LINK))) *state = 15; // Print at the same time as trainer sends out second mon. else - #endif (*state)++; break; case 14: // wait for opponent 2 send out @@ -3654,14 +3611,13 @@ static void DoBattleIntro(void) battler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); // A hack that makes fast intro work in trainer battles too. - #if B_FAST_INTRO == TRUE - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER + if (B_FAST_INTRO == TRUE + && gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & (BATTLE_TYPE_RECORDED | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_RECORDED_IS_MASTER | BATTLE_TYPE_LINK)) && gSprites[gHealthboxSpriteIds[battler ^ BIT_SIDE]].callback == SpriteCallbackDummy) { return; } - #endif PrepareStringBattle(STRINGID_INTROSENDOUT, battler); } @@ -3749,6 +3705,7 @@ static void TryDoEventsBeforeFirstTurn(void) } // Allow for illegal abilities within tests. + #if TESTING if (gTestRunnerEnabled && gBattleStruct->switchInAbilitiesCounter == 0) { for (i = 0; i < gBattlersCount; ++i) @@ -3759,6 +3716,7 @@ static void TryDoEventsBeforeFirstTurn(void) gBattleMons[i].ability = gBattleStruct->overwrittenAbilities[i] = TestRunner_Battle_GetForcedAbility(side, partyIndex); } } + #endif // TESTING if (gBattleStruct->switchInAbilitiesCounter == 0) { @@ -3789,14 +3747,13 @@ static void TryDoEventsBeforeFirstTurn(void) // Totem boosts for (i = 0; i < gBattlersCount; i++) { - if (gTotemBoosts[i].stats != 0) + if (gQueuedStatBoosts[i].stats != 0 && !gProtectStructs[i].eatMirrorHerb && gProtectStructs[i].activateOpportunist == 0) { gBattlerAttacker = i; BattleScriptExecute(BattleScript_TotemVar); return; } } - memset(gTotemBoosts, 0, sizeof(gTotemBoosts)); // erase all totem boosts just to be safe // Check neutralizing gas if (AbilityBattleEffects(ABILITYEFFECT_NEUTRALIZINGGAS, 0, 0, 0, 0) != 0) @@ -3821,14 +3778,14 @@ static void TryDoEventsBeforeFirstTurn(void) return; } + if (AbilityBattleEffects(ABILITYEFFECT_OPPORTUNIST, 0, 0, 0, 0)) + return; + for (i = 0; i < MAX_BATTLERS_COUNT; i++) { *(gBattleStruct->monToSwitchIntoId + i) = PARTY_SIZE; gChosenActionByBattler[i] = B_ACTION_NONE; gChosenMoveByBattler[i] = MOVE_NONE; - // Record party slots of player's mons that appeared in battle - if (!BattlerHasAi(i)) - gBattleStruct->appearedInBattle |= gBitTable[gBattlerPartyIndexes[i]]; } TurnValuesCleanUp(FALSE); SpecialStatusesClear(); @@ -3841,7 +3798,12 @@ static void TryDoEventsBeforeFirstTurn(void) gBattleCommunication[i] = 0; for (i = 0; i < gBattlersCount; i++) + { gBattleMons[i].status2 &= ~STATUS2_FLINCHED; + // Record party slots of player's mons that appeared in battle + if (!BattlerHasAi(i)) + gBattleStruct->appearedInBattle |= gBitTable[gBattlerPartyIndexes[i]]; + } *(&gBattleStruct->turnEffectsTracker) = 0; *(&gBattleStruct->turnEffectsBattlerId) = 0; @@ -3852,6 +3814,8 @@ static void TryDoEventsBeforeFirstTurn(void) gBattleStruct->turnCountersTracker = 0; gMoveResultFlags = 0; + memset(gQueuedStatBoosts, 0, sizeof(gQueuedStatBoosts)); // erase all totem boosts just to be safe + SetAiLogicDataForTurn(AI_DATA); // get assumed abilities, hold effects, etc of all battlers if (gBattleTypeFlags & BATTLE_TYPE_ARENA) @@ -3990,10 +3954,8 @@ u8 IsRunningFromBattleImpossible(u32 battler) if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN) return BATTLE_RUN_SUCCESS; - #if B_GHOSTS_ESCAPE >= GEN_6 - if (IS_BATTLER_OF_TYPE(battler, TYPE_GHOST)) - return BATTLE_RUN_SUCCESS; - #endif + if (B_GHOSTS_ESCAPE >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST)) + return BATTLE_RUN_SUCCESS; if (gBattleTypeFlags & BATTLE_TYPE_LINK) return BATTLE_RUN_SUCCESS; if (GetBattlerAbility(battler) == ABILITY_RUN_AWAY) @@ -4075,6 +4037,7 @@ static void HandleTurnActionSelectionState(void) if ((gBattleTypeFlags & BATTLE_TYPE_HAS_AI || IsWildMonSmart()) && (BattlerHasAi(battler) && !(gBattleTypeFlags & BATTLE_TYPE_PALACE))) { + AI_DATA->mostSuitableMonId = GetMostSuitableMonToSwitchInto(battler, FALSE); gBattleStruct->aiMoveOrAction[battler] = ComputeBattleAiScores(battler); } // fallthrough @@ -4276,6 +4239,8 @@ static void HandleTurnActionSelectionState(void) gBattleStruct->mega.toEvolve &= ~(gBitTable[BATTLE_PARTNER(GetBattlerPosition(battler))]); gBattleStruct->burst.toBurst &= ~(gBitTable[BATTLE_PARTNER(GetBattlerPosition(battler))]); + gBattleStruct->dynamax.toDynamax &= ~(gBitTable[BATTLE_PARTNER(GetBattlerPosition(battler))]); + gBattleStruct->dynamax.usingMaxMove[BATTLE_PARTNER(GetBattlerPosition(battler))] = FALSE; gBattleStruct->zmove.toBeUsed[BATTLE_PARTNER(GetBattlerPosition(battler))] = MOVE_NONE; BtlController_EmitEndBounceEffect(battler, BUFFER_A); MarkBattlerForControllerExec(battler); @@ -4363,14 +4328,31 @@ static void HandleTurnActionSelectionState(void) RecordedBattle_SetBattlerAction(battler, gBattleResources->bufferB[battler][3]); } - gBattleStruct->chosenMovePositions[battler] = gBattleResources->bufferB[battler][2] & ~(RET_MEGA_EVOLUTION | RET_ULTRA_BURST); + // Get the chosen move position (and thus the chosen move) and target from the returned buffer. + gBattleStruct->chosenMovePositions[battler] = gBattleResources->bufferB[battler][2] & ~(RET_MEGA_EVOLUTION | RET_ULTRA_BURST | RET_DYNAMAX); gChosenMoveByBattler[battler] = gBattleMons[battler].moves[gBattleStruct->chosenMovePositions[battler]]; gBattleStruct->moveTarget[battler] = gBattleResources->bufferB[battler][3]; + + // Check to see if any gimmicks need to be prepared. if (gBattleResources->bufferB[battler][2] & RET_MEGA_EVOLUTION) gBattleStruct->mega.toEvolve |= gBitTable[battler]; else if (gBattleResources->bufferB[battler][2] & RET_ULTRA_BURST) gBattleStruct->burst.toBurst |= gBitTable[battler]; + else if (gBattleResources->bufferB[battler][2] & RET_DYNAMAX) + gBattleStruct->dynamax.toDynamax |= gBitTable[battler]; + + // Max Move check + if (ShouldUseMaxMove(battler, gChosenMoveByBattler[battler])) + { + gBattleStruct->dynamax.baseMove[battler] = gBattleMons[battler].moves[gBattleStruct->chosenMovePositions[battler]]; + gBattleStruct->dynamax.usingMaxMove[battler] = TRUE; + } gBattleCommunication[battler]++; + + if (gTestRunnerEnabled) + { + TestRunner_Battle_CheckChosenMove(battler, gChosenMoveByBattler[battler], gBattleStruct->moveTarget[battler]); + } } break; } @@ -4639,7 +4621,7 @@ u32 GetBattlerTotalSpeedStatArgs(u32 battler, u32 ability, u32 holdEffect) speed /= 2; else if (holdEffect == HOLD_EFFECT_IRON_BALL) speed /= 2; - else if (holdEffect == HOLD_EFFECT_CHOICE_SCARF) + else if (holdEffect == HOLD_EFFECT_CHOICE_SCARF && !IsDynamaxed(battler)) speed = (speed * 150) / 100; else if (holdEffect == HOLD_EFFECT_QUICK_POWDER && gBattleMons[battler].species == SPECIES_DITTO && !(gBattleMons[battler].status2 & STATUS2_TRANSFORMED)) speed *= 2; @@ -4652,11 +4634,10 @@ u32 GetBattlerTotalSpeedStatArgs(u32 battler, u32 ability, u32 holdEffect) // paralysis drop if (gBattleMons[battler].status1 & STATUS1_PARALYSIS && ability != ABILITY_QUICK_FEET) - #if B_PARALYSIS_SPEED >= GEN_7 - speed /= 2; - #else + speed /= B_PARALYSIS_SPEED >= GEN_7 ? 2 : 4; + + if (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SWAMP) speed /= 4; - #endif return speed; } @@ -4690,10 +4671,13 @@ s8 GetMovePriority(u32 battler, u16 move) move = gBattleStruct->zmove.toBeUsed[battler]; priority = gBattleMoves[move].priority; + + // Max Guard check + if (gBattleStruct->dynamax.usingMaxMove[battler] && gBattleMoves[move].split == SPLIT_STATUS) + return gBattleMoves[MOVE_MAX_GUARD].priority; + if (ability == ABILITY_GALE_WINGS - #if B_GALE_WINGS >= GEN_7 - && BATTLER_MAX_HP(battler) - #endif + && (B_GALE_WINGS < GEN_7 || BATTLER_MAX_HP(battler)) && gBattleMoves[move].type == TYPE_FLYING) { priority++; @@ -4707,27 +4691,8 @@ s8 GetMovePriority(u32 battler, u16 move) { priority++; } - else if (ability == ABILITY_TRIAGE) - { - switch (gBattleMoves[move].effect) - { - case EFFECT_RESTORE_HP: - case EFFECT_REST: - case EFFECT_MORNING_SUN: - case EFFECT_MOONLIGHT: - case EFFECT_SYNTHESIS: - case EFFECT_HEAL_PULSE: - case EFFECT_HEALING_WISH: - case EFFECT_SWALLOW: - case EFFECT_WISH: - case EFFECT_SOFTBOILED: - case EFFECT_ABSORB: - case EFFECT_ROOST: - case EFFECT_JUNGLE_HEALING: - priority += 3; - break; - } - } + else if (ability == ABILITY_TRIAGE && IsHealingMoveEffect(gBattleMoves[move].effect)) + priority += 3; if (gProtectStructs[battler].quash) priority = -8; @@ -4985,51 +4950,56 @@ static void PopulateArrayWithBattlers(u8 *battlers) battlers[i] = i; } -static bool32 TryDoMegaEvosBeforeMoves(void) +static bool32 TryDoGimmicksBeforeMoves(void) { - if (!(gHitMarker & HITMARKER_RUN) && (gBattleStruct->mega.toEvolve || gBattleStruct->burst.toBurst)) + if (!(gHitMarker & HITMARKER_RUN) + && (gBattleStruct->mega.toEvolve || gBattleStruct->burst.toBurst || gBattleStruct->dynamax.toDynamax)) { u32 i, battler; - struct Pokemon *party; - struct Pokemon *mon; - u8 megaOrder[MAX_BATTLERS_COUNT]; + u8 order[MAX_BATTLERS_COUNT]; - PopulateArrayWithBattlers(megaOrder); - SortBattlersBySpeed(megaOrder, FALSE); + PopulateArrayWithBattlers(order); + SortBattlersBySpeed(order, FALSE); for (i = 0; i < gBattlersCount; i++) { - if (gBattleStruct->mega.toEvolve & gBitTable[megaOrder[i]] - && !(gProtectStructs[megaOrder[i]].noValidMoves)) + // Dynamax Check + if (gBattleStruct->dynamax.toDynamax & gBitTable[order[i]]) { - gBattlerAttacker = megaOrder[i]; + gBattlerAttacker = order[i]; + gBattleScripting.battler = gBattlerAttacker; + gBattleStruct->dynamax.toDynamax &= ~(gBitTable[gBattlerAttacker]); + PrepareBattlerForDynamax(gBattlerAttacker); + BattleScriptExecute(BattleScript_DynamaxBegins); + return TRUE; + } + // Mega Evo Check + if (gBattleStruct->mega.toEvolve & gBitTable[order[i]] + && !(gProtectStructs[order[i]].noValidMoves)) + { + gBattlerAttacker = order[i]; gBattleStruct->mega.toEvolve &= ~(gBitTable[gBattlerAttacker]); gLastUsedItem = gBattleMons[gBattlerAttacker].item; - party = GetBattlerParty(gBattlerAttacker); - mon = &party[gBattlerPartyIndexes[gBattlerAttacker]]; if (GetBattleFormChangeTargetSpecies(gBattlerAttacker, FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE) != SPECIES_NONE) BattleScriptExecute(BattleScript_WishMegaEvolution); else BattleScriptExecute(BattleScript_MegaEvolution); return TRUE; } - - if (gBattleStruct->burst.toBurst & gBitTable[megaOrder[i]] - && !(gProtectStructs[megaOrder[i]].noValidMoves)) + // Ultra Burst Check + if (gBattleStruct->burst.toBurst & gBitTable[order[i]] + && !(gProtectStructs[order[i]].noValidMoves)) { - battler = gBattlerAttacker = megaOrder[i]; + battler = gBattlerAttacker = order[i]; gBattleStruct->burst.toBurst &= ~(gBitTable[battler]); gLastUsedItem = gBattleMons[battler].item; - party = GetBattlerParty(battler); - mon = &party[gBattlerPartyIndexes[battler]]; BattleScriptExecute(BattleScript_UltraBurst); return TRUE; } } } - #if B_MEGA_EVO_TURN_ORDER >= GEN_7 + if (B_MEGA_EVO_TURN_ORDER >= GEN_7) TryChangeTurnOrder(); // This will just do nothing if no mon has mega evolved. - #endif return FALSE; } @@ -5038,7 +5008,6 @@ static bool32 TryDoMoveEffectsBeforeMoves(void) if (!(gHitMarker & HITMARKER_RUN)) { u32 i; - struct Pokemon *mon; u8 battlers[MAX_BATTLERS_COUNT]; PopulateArrayWithBattlers(battlers); @@ -5095,9 +5064,7 @@ static void TryChangeTurnOrder(void) static void TryChangingTurnOrderEffects(u32 battler1, u32 battler2) { u32 ability1 = GetBattlerAbility(battler1); - u32 speedBattler1 = GetBattlerTotalSpeedStat(battler1); u32 holdEffectBattler1 = GetBattlerHoldEffect(battler1, TRUE); - u32 speedBattler2 = GetBattlerTotalSpeedStat(battler2); u32 holdEffectBattler2 = GetBattlerHoldEffect(battler2, TRUE); u32 ability2 = GetBattlerAbility(battler2); @@ -5195,7 +5162,7 @@ static void RunTurnActionsFunctions(void) // Mega Evolve / Focus Punch-like moves after switching, items, running, but before using a move. if (gCurrentActionFuncId == B_ACTION_USE_MOVE && !gBattleStruct->effectsBeforeUsingMoveDone) { - if (TryDoMegaEvosBeforeMoves()) + if (TryDoGimmicksBeforeMoves()) return; else if (TryDoMoveEffectsBeforeMoves()) return; @@ -5409,9 +5376,16 @@ 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 == TRUE) TryRestoreHeldItems(); - #endif + + // Undo Dynamax HP multiplier before recalculating stats. + for (i = 0; i < gBattlersCount; ++i) + { + if (IsDynamaxed(i)) + UndoDynamax(i); + } + for (i = 0; i < PARTY_SIZE; i++) { bool8 changedForm = FALSE; @@ -5427,11 +5401,9 @@ static void HandleEndTurn_FinishBattle(void) gBattleStruct->changedSpecies[B_SIDE_PLAYER][i] = SPECIES_NONE; gBattleStruct->changedSpecies[B_SIDE_OPPONENT][i] = SPECIES_NONE; - #if B_RECALCULATE_STATS >= GEN_5 // Recalculate the stats of every party member before the end - if (!changedForm) + if (!changedForm && B_RECALCULATE_STATS >= GEN_5) CalculateMonStats(&gPlayerParty[i]); - #endif } // Clear battle mon species to avoid a bug on the next battle that causes // healthboxes loading incorrectly due to it trying to create a Mega Indicator @@ -5464,10 +5436,9 @@ static void FreeResetData_ReturnToOvOrDoEvolutions(void) | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_WALLY_TUTORIAL)) - #if B_EVOLUTION_AFTER_WHITEOUT <= GEN_5 - && (gBattleOutcome == B_OUTCOME_WON || gBattleOutcome == B_OUTCOME_CAUGHT) - #endif - ) + && (B_EVOLUTION_AFTER_WHITEOUT >= GEN_6 + || gBattleOutcome == B_OUTCOME_WON + || gBattleOutcome == B_OUTCOME_CAUGHT)) { gBattleMainFunc = TrySpecialEvolution; } @@ -5613,15 +5584,15 @@ void SetTypeBeforeUsingMove(u32 move, u32 battlerAtk) if (WEATHER_HAS_EFFECT) { if (gBattleWeather & B_WEATHER_RAIN && holdEffect != HOLD_EFFECT_UTILITY_UMBRELLA) - gBattleStruct->dynamicMoveType = TYPE_WATER | F_DYNAMIC_TYPE_2; + gBattleStruct->dynamicMoveType = TYPE_WATER | F_DYNAMIC_TYPE_SET; else if (gBattleWeather & B_WEATHER_SANDSTORM) - gBattleStruct->dynamicMoveType = TYPE_ROCK | F_DYNAMIC_TYPE_2; + 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_2; + gBattleStruct->dynamicMoveType = TYPE_FIRE | F_DYNAMIC_TYPE_SET; else if (gBattleWeather & (B_WEATHER_HAIL |B_WEATHER_SNOW)) - gBattleStruct->dynamicMoveType = TYPE_ICE | F_DYNAMIC_TYPE_2; + gBattleStruct->dynamicMoveType = TYPE_ICE | F_DYNAMIC_TYPE_SET; else - gBattleStruct->dynamicMoveType = TYPE_NORMAL | F_DYNAMIC_TYPE_2; + gBattleStruct->dynamicMoveType = TYPE_NORMAL | F_DYNAMIC_TYPE_SET; } } else if (gBattleMoves[move].effect == EFFECT_HIDDEN_POWER) @@ -5638,21 +5609,27 @@ void SetTypeBeforeUsingMove(u32 move, u32 battlerAtk) gBattleStruct->dynamicMoveType = ((NUMBER_OF_MON_TYPES - 4) * typeBits) / 63 + 1; if (gBattleStruct->dynamicMoveType >= TYPE_MYSTERY) gBattleStruct->dynamicMoveType++; - gBattleStruct->dynamicMoveType |= F_DYNAMIC_TYPE_1 | F_DYNAMIC_TYPE_2; + gBattleStruct->dynamicMoveType |= F_DYNAMIC_TYPE_IGNORE_PHYSICALITY | F_DYNAMIC_TYPE_SET; } - else if (gBattleMoves[move].effect == EFFECT_CHANGE_TYPE_ON_ITEM) + else if (gBattleMoves[move].effect == EFFECT_CHANGE_TYPE_ON_ITEM && holdEffect == gBattleMoves[move].argument) { - if (holdEffect == gBattleMoves[move].argument) - gBattleStruct->dynamicMoveType = ItemId_GetSecondaryId(gBattleMons[battlerAtk].item) | F_DYNAMIC_TYPE_2; + gBattleStruct->dynamicMoveType = ItemId_GetSecondaryId(gBattleMons[battlerAtk].item) | F_DYNAMIC_TYPE_SET; } else if (gBattleMoves[move].effect == EFFECT_REVELATION_DANCE) { if (gBattleMons[battlerAtk].type1 != TYPE_MYSTERY) - gBattleStruct->dynamicMoveType = gBattleMons[battlerAtk].type1 | F_DYNAMIC_TYPE_2; + gBattleStruct->dynamicMoveType = gBattleMons[battlerAtk].type1 | F_DYNAMIC_TYPE_SET; else if (gBattleMons[battlerAtk].type2 != TYPE_MYSTERY) - gBattleStruct->dynamicMoveType = gBattleMons[battlerAtk].type2 | F_DYNAMIC_TYPE_2; + gBattleStruct->dynamicMoveType = gBattleMons[battlerAtk].type2 | F_DYNAMIC_TYPE_SET; else if (gBattleMons[battlerAtk].type3 != TYPE_MYSTERY) - gBattleStruct->dynamicMoveType = gBattleMons[battlerAtk].type3 | F_DYNAMIC_TYPE_2; + gBattleStruct->dynamicMoveType = gBattleMons[battlerAtk].type3 | F_DYNAMIC_TYPE_SET; + } + else if (gBattleMoves[move].effect == EFFECT_RAGING_BULL + && (gBattleMons[battlerAtk].species == SPECIES_TAUROS_PALDEAN_COMBAT_BREED + || gBattleMons[battlerAtk].species == SPECIES_TAUROS_PALDEAN_BLAZE_BREED + || gBattleMons[battlerAtk].species == SPECIES_TAUROS_PALDEAN_AQUA_BREED)) + { + gBattleStruct->dynamicMoveType = gBattleMons[battlerAtk].type2 | F_DYNAMIC_TYPE_SET; } else if (gBattleMoves[move].effect == EFFECT_NATURAL_GIFT) { @@ -5664,26 +5641,21 @@ void SetTypeBeforeUsingMove(u32 move, u32 battlerAtk) if (IsBattlerTerrainAffected(battlerAtk, STATUS_FIELD_TERRAIN_ANY)) { if (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN) - gBattleStruct->dynamicMoveType = TYPE_ELECTRIC | F_DYNAMIC_TYPE_2; + gBattleStruct->dynamicMoveType = TYPE_ELECTRIC | F_DYNAMIC_TYPE_SET; else if (gFieldStatuses & STATUS_FIELD_GRASSY_TERRAIN) - gBattleStruct->dynamicMoveType = TYPE_GRASS | F_DYNAMIC_TYPE_2; + gBattleStruct->dynamicMoveType = TYPE_GRASS | F_DYNAMIC_TYPE_SET; else if (gFieldStatuses & STATUS_FIELD_MISTY_TERRAIN) - gBattleStruct->dynamicMoveType = TYPE_FAIRY | F_DYNAMIC_TYPE_2; + gBattleStruct->dynamicMoveType = TYPE_FAIRY | F_DYNAMIC_TYPE_SET; else if (gFieldStatuses & STATUS_FIELD_PSYCHIC_TERRAIN) - gBattleStruct->dynamicMoveType = TYPE_PSYCHIC | F_DYNAMIC_TYPE_2; + gBattleStruct->dynamicMoveType = TYPE_PSYCHIC | F_DYNAMIC_TYPE_SET; else //failsafe - gBattleStruct->dynamicMoveType = TYPE_NORMAL | F_DYNAMIC_TYPE_2; + gBattleStruct->dynamicMoveType = TYPE_NORMAL | F_DYNAMIC_TYPE_SET; } } attackerAbility = GetBattlerAbility(battlerAtk); - GET_MOVE_TYPE(move, moveType); - if ((gFieldStatuses & STATUS_FIELD_ION_DELUGE && moveType == TYPE_NORMAL) - || gStatuses4[battlerAtk] & STATUS4_ELECTRIFIED) - { - gBattleStruct->dynamicMoveType = TYPE_ELECTRIC | F_DYNAMIC_TYPE_2; - } - else if (gBattleMoves[move].type == TYPE_NORMAL + + if (gBattleMoves[move].type == TYPE_NORMAL && gBattleMoves[move].effect != EFFECT_HIDDEN_POWER && gBattleMoves[move].effect != EFFECT_WEATHER_BALL && gBattleMoves[move].effect != EFFECT_CHANGE_TYPE_ON_ITEM @@ -5695,30 +5667,33 @@ void SetTypeBeforeUsingMove(u32 move, u32 battlerAtk) ) ) { - gBattleStruct->dynamicMoveType = ateType | F_DYNAMIC_TYPE_2; - gBattleStruct->ateBoost[battlerAtk] = 1; + gBattleStruct->dynamicMoveType = ateType | F_DYNAMIC_TYPE_SET; + if (!IsDynamaxed(battlerAtk)) + gBattleStruct->ateBoost[battlerAtk] = 1; } else if (gBattleMoves[move].type != TYPE_NORMAL && gBattleMoves[move].effect != EFFECT_HIDDEN_POWER && gBattleMoves[move].effect != EFFECT_WEATHER_BALL && attackerAbility == ABILITY_NORMALIZE) { - gBattleStruct->dynamicMoveType = TYPE_NORMAL | F_DYNAMIC_TYPE_2; - gBattleStruct->ateBoost[battlerAtk] = 1; + gBattleStruct->dynamicMoveType = TYPE_NORMAL | F_DYNAMIC_TYPE_SET; + if (!IsDynamaxed(battlerAtk)) + gBattleStruct->ateBoost[battlerAtk] = 1; } else if (gBattleMoves[move].soundMove && attackerAbility == ABILITY_LIQUID_VOICE) { - gBattleStruct->dynamicMoveType = TYPE_WATER | F_DYNAMIC_TYPE_2; - } - else if (gStatuses4[battlerAtk] & STATUS4_PLASMA_FISTS && moveType == TYPE_NORMAL) - { - gBattleStruct->dynamicMoveType = TYPE_ELECTRIC | F_DYNAMIC_TYPE_2; + gBattleStruct->dynamicMoveType = TYPE_WATER | F_DYNAMIC_TYPE_SET; } else if (move == MOVE_AURA_WHEEL && gBattleMons[battlerAtk].species == SPECIES_MORPEKO_HANGRY) { - gBattleStruct->dynamicMoveType = TYPE_DARK | F_DYNAMIC_TYPE_2; + gBattleStruct->dynamicMoveType = TYPE_DARK | F_DYNAMIC_TYPE_SET; } + GET_MOVE_TYPE(move, moveType); + if ((gFieldStatuses & STATUS_FIELD_ION_DELUGE && moveType == TYPE_NORMAL) + || gStatuses4[battlerAtk] & STATUS4_ELECTRIFIED) + gBattleStruct->dynamicMoveType = TYPE_ELECTRIC | F_DYNAMIC_TYPE_SET; + // Check if a gem should activate. GET_MOVE_TYPE(move, moveType); if (holdEffect == HOLD_EFFECT_GEMS @@ -5742,9 +5717,9 @@ void SetTotemBoost(void) { if (*(&gSpecialVar_0x8001 + i)) { - gTotemBoosts[battler].stats |= (1 << i); - gTotemBoosts[battler].statChanges[i] = *(&gSpecialVar_0x8001 + i); - gTotemBoosts[battler].stats |= 0x80; // used as a flag for the "totem flared to life" script + gQueuedStatBoosts[battler].stats |= (1 << i); + gQueuedStatBoosts[battler].statChanges[i] = *(&gSpecialVar_0x8001 + i); + gQueuedStatBoosts[battler].stats |= 0x80; // used as a flag for the "totem flared to life" script } } } diff --git a/src/battle_message.c b/src/battle_message.c index 41e34b44f3..d8dbceab24 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -532,12 +532,12 @@ static const u8 sText_TwoInGameTrainersDefeated[]; static const u8 sText_Trainer2LoseText[]; // New battle strings. -static const s8 sText_EnduredViaSturdy[] = _("{B_DEF_NAME_WITH_PREFIX} endured\nthe hit using {B_DEF_ABILITY}!"); -static const s8 sText_PowerHerbActivation[] = _("{B_ATK_NAME_WITH_PREFIX} became fully charged\ndue to its {B_LAST_ITEM}!"); -static const s8 sText_HurtByItem[] = _("{B_ATK_NAME_WITH_PREFIX} was hurt\nby its {B_LAST_ITEM}!"); -static const s8 sText_BadlyPoisonedByItem[] = _("{B_EFF_NAME_WITH_PREFIX} was badly\npoisoned by the {B_LAST_ITEM}!"); -static const s8 sText_BurnedByItem[] = _("{B_EFF_NAME_WITH_PREFIX} was burned\nby the {B_LAST_ITEM}!"); -static const s8 sText_TargetAbilityActivates[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} activates!"); +static const u8 sText_EnduredViaSturdy[] = _("{B_DEF_NAME_WITH_PREFIX} endured\nthe hit using {B_DEF_ABILITY}!"); +static const u8 sText_PowerHerbActivation[] = _("{B_ATK_NAME_WITH_PREFIX} became fully charged\ndue to its {B_LAST_ITEM}!"); +static const u8 sText_HurtByItem[] = _("{B_ATK_NAME_WITH_PREFIX} was hurt\nby its {B_LAST_ITEM}!"); +static const u8 sText_BadlyPoisonedByItem[] = _("{B_EFF_NAME_WITH_PREFIX} was badly\npoisoned by the {B_LAST_ITEM}!"); +static const u8 sText_BurnedByItem[] = _("{B_EFF_NAME_WITH_PREFIX} was burned\nby the {B_LAST_ITEM}!"); +static const u8 sText_TargetAbilityActivates[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} activates!"); static const u8 sText_GravityIntensified[] = _("Gravity intensified!"); static const u8 sText_TargetIdentified[] = _("{B_DEF_NAME_WITH_PREFIX} was\nidentified!"); static const u8 sText_TargetWokeUp[] = _("{B_DEF_NAME_WITH_PREFIX} woke up!"); @@ -702,7 +702,7 @@ static const u8 sText_PkmnAbsorbingPower[] = _("{B_ATK_NAME_WITH_PREFIX} is abso static const u8 sText_NoOneWillBeAbleToRun[] = _("No one will be able to run away\nduring the next turn!"); static const u8 sText_DestinyKnotActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} fell in love\nfrom the {B_LAST_ITEM}!"); static const u8 sText_CloakedInAFreezingLight[] = _("{B_ATK_NAME_WITH_PREFIX} became cloaked\nin a freezing light!"); -static const u8 sText_StatWasNotLowered[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\nwas not lowered!"); +static const u8 sText_ClearAmuletWontLowerStats[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM} prevents\nits stats from being lowered!"); static const u8 sText_AuraFlaredToLife[] = _("{B_DEF_NAME_WITH_PREFIX}'s aura flared to life!"); static const u8 sText_AirLockActivates[] = _("The effects of weather\ndisappeared."); static const u8 sText_PressureActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is exerting its\npressure!"); @@ -792,8 +792,21 @@ static const u8 sText_AbilityWeakenedSurroundingMonsStat[] = _("{B_ATK_NAME_WITH static const u8 sText_AttackerGainedStrengthFromTheFallen[] = _("{B_ATK_NAME_WITH_PREFIX} gained strength\nfrom the fallen!"); static const u8 sText_PrepareShellTrap[] = _("{B_ATK_NAME_WITH_PREFIX} set a shell trap!"); static const u8 sText_ShellTrapDidntWork[] = _("{B_ATK_NAME_WITH_PREFIX}'s shell trap didn't work!"); +static const u8 sText_SharpSteelFloats[] = _("Sharp-pointed steel floats\naround {B_DEF_TEAM2} team!"); +static const u8 sText_SharpSteelDmg[] = _("Sharp steel bit into {B_DEF_NAME_WITH_PREFIX}!"); +static const u8 sText_PkmnBlewAwaySharpSteel[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nsharp steel!"); +static const u8 sText_SharpSteelDisappearedFromTeam[] = _("The sharp steel disappeared from\nthe ground around {B_ATK_TEAM2} team!"); +static const u8 sText_TeamTrappedWithVines[] = _("{B_DEF_TEAM1} team got trapped\nwith vines!"); +static const u8 sText_PkmnHurtByVines[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt by\nG-Max Vine Lash's ferocious beating!"); +static const u8 sText_TeamCaughtInVortex[] = _("{B_DEF_TEAM1} team got caught\nin a vortex of water!"); +static const u8 sText_PkmnHurtByVortex[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt by\nG-Max Cannonade's vortex!"); +static const u8 sText_TeamSurroundedByFire[] = _("{B_DEF_TEAM1} team was surrounded\nby flames!"); +static const u8 sText_PkmnBurningUp[] = _("{B_ATK_NAME_WITH_PREFIX} is burning up\nwithin G-Max Wildfire's flames!"); +static const u8 sText_TeamSurroundedByRocks[] = _("{B_DEF_TEAM1} team was surrounded\nby rocks!"); +static const u8 sText_PkmnHurtByRocksThrown[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt by\nrocks thrown out by G-Max Volcalith!"); static const u8 sText_CouldntFullyProtect[] = _("{B_DEF_NAME_WITH_PREFIX} couldn't fully protect\nitself and got hurt!"); static const u8 sText_StockpiledEffectWoreOff[] = _("{B_ATK_NAME_WITH_PREFIX}'s stockpiled\neffect wore off!"); +static const u8 sText_MoveBlockedByDynamax[] = _("The move was blocked by\nthe power of Dynamax!"); static const u8 sText_PkmnRevivedReadyToFight[] = _("{B_BUFF1} was revived and\nis ready to fight again!"); static const u8 sText_ItemRestoredSpeciesHealth[] = _("{B_BUFF1} had its\nHP restored!"); static const u8 sText_ItemCuredSpeciesStatus[] = _("{B_BUFF1} had\nits status healed!"); @@ -807,9 +820,35 @@ static const u8 sText_TeamGainedEXP[] = _("The rest of your team gained EXP.\nPo static const u8 sText_CurrentMoveCantSelect[] = _("{B_BUFF1} cannot be used!\p"); static const u8 sText_TargetIsBeingSaltCured[] = _("{B_DEF_NAME_WITH_PREFIX} is being salt cured!"); static const u8 sText_TargetIsHurtBySaltCure[] = _("{B_DEF_NAME_WITH_PREFIX} is hurt by {B_BUFF1}!"); +static const u8 sText_OpportunistCopied[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} copied its\nopponent's stat changes!"); +static const u8 sText_TargetCoveredInStickyCandySyrup[] = _("{B_DEF_NAME_WITH_PREFIX} got covered\nin sticky syrup!"); +static const u8 sText_PkmnTellChillingReceptionJoke[] = _("{B_ATK_NAME_WITH_PREFIX} is preparing to tell a\nchillingly bad joke!"); +static const u8 sText_ZeroToHeroTransformation[] = _("{B_ATK_NAME_WITH_PREFIX} underwent a heroic\ntransformation!"); +static const u8 sText_TheTwoMovesBecomeOne[] = _("The two moves become one!\nIt's a combined move!{PAUSE 16}"); +static const u8 sText_ARainbowAppearedOnSide[] = _("A rainbow appeared in the sky\non {B_ATK_TEAM2} team's side!"); +static const u8 sText_TheRainbowDisappeared[] = _("The rainbow on {B_ATK_TEAM2}\nside disappeared!"); +static const u8 sText_WaitingForPartnersMove[] = _("{B_ATK_NAME_WITH_PREFIX} is waiting\nfor {B_ATK_PARTNER_NAME}'s move…{PAUSE 16}"); +static const u8 sText_SeaOfFireEnvelopedSide[] = _("A sea of fire enveloped\n{B_DEF_TEAM2} team!"); +static const u8 sText_HurtByTheSeaOfFire[] = _("{B_ATK_TEAM1} {B_ATK_NAME_WITH_PREFIX} was hurt\nby the sea of fire!"); +static const u8 sText_TheSeaOfFireDisappeared[] = _("The sea of fire around {B_ATK_TEAM2}\nteam disappeared!"); +static const u8 sText_SwampEnvelopedSide[] = _("A swamp enveloped\n{B_DEF_TEAM2} team!"); +static const u8 sText_TheSwampDisappeared[] = _("The swamp around {B_ATK_TEAM2}\nteam disappeared!"); const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { + [STRINGID_THESWAMPDISAPPEARED - BATTLESTRINGS_TABLE_START] = sText_TheSwampDisappeared, + [STRINGID_SWAMPENVELOPEDSIDE - BATTLESTRINGS_TABLE_START] = sText_SwampEnvelopedSide, + [STRINGID_THESEAOFFIREDISAPPEARED - BATTLESTRINGS_TABLE_START] = sText_TheSeaOfFireDisappeared, + [STRINGID_HURTBYTHESEAOFFIRE - BATTLESTRINGS_TABLE_START] = sText_HurtByTheSeaOfFire, + [STRINGID_SEAOFFIREENVELOPEDSIDE - BATTLESTRINGS_TABLE_START] = sText_SeaOfFireEnvelopedSide, + [STRINGID_WAITINGFORPARTNERSMOVE - BATTLESTRINGS_TABLE_START] = sText_WaitingForPartnersMove, + [STRINGID_THERAINBOWDISAPPEARED - BATTLESTRINGS_TABLE_START] = sText_TheRainbowDisappeared, + [STRINGID_ARAINBOWAPPEAREDONSIDE - BATTLESTRINGS_TABLE_START] = sText_ARainbowAppearedOnSide, + [STRINGID_THETWOMOVESBECOMEONE - BATTLESTRINGS_TABLE_START] = sText_TheTwoMovesBecomeOne, + [STRINGID_ZEROTOHEROTRANSFORMATION - BATTLESTRINGS_TABLE_START] = sText_ZeroToHeroTransformation, + [STRINGID_PKMNTELLCHILLINGRECEPTIONJOKE - BATTLESTRINGS_TABLE_START] = sText_PkmnTellChillingReceptionJoke, + [STRINGID_MOVEBLOCKEDBYDYNAMAX - BATTLESTRINGS_TABLE_START] = sText_MoveBlockedByDynamax, + [STRINGID_OPPORTUNISTCOPIED - BATTLESTRINGS_TABLE_START] = sText_OpportunistCopied, [STRINGID_TARGETISHURTBYSALTCURE - BATTLESTRINGS_TABLE_START] = sText_TargetIsHurtBySaltCure, [STRINGID_TARGETISBEINGSALTCURED - BATTLESTRINGS_TABLE_START] = sText_TargetIsBeingSaltCured, [STRINGID_CURRENTMOVECANTSELECT - BATTLESTRINGS_TABLE_START] = sText_CurrentMoveCantSelect, @@ -822,6 +861,17 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_PKMNREVIVEDREADYTOFIGHT - BATTLESTRINGS_TABLE_START] = sText_PkmnRevivedReadyToFight, [STRINGID_STOCKPILEDEFFECTWOREOFF - BATTLESTRINGS_TABLE_START] = sText_StockpiledEffectWoreOff, [STRINGID_COULDNTFULLYPROTECT - BATTLESTRINGS_TABLE_START] = sText_CouldntFullyProtect, + [STRINGID_PKMNHURTBYROCKSTHROWN - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtByRocksThrown, + [STRINGID_TEAMSURROUNDEDBYROCKS - BATTLESTRINGS_TABLE_START] = sText_TeamSurroundedByRocks, + [STRINGID_PKMNBURNINGUP - BATTLESTRINGS_TABLE_START] = sText_PkmnBurningUp, + [STRINGID_TEAMSURROUNDEDBYFIRE - BATTLESTRINGS_TABLE_START] = sText_TeamSurroundedByFire, + [STRINGID_PKMNHURTBYVORTEX - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtByVortex, + [STRINGID_TEAMCAUGHTINVORTEX - BATTLESTRINGS_TABLE_START] = sText_TeamCaughtInVortex, + [STRINGID_PKMNHURTBYVINES - BATTLESTRINGS_TABLE_START] = sText_PkmnHurtByVines, + [STRINGID_TEAMTRAPPEDWITHVINES - BATTLESTRINGS_TABLE_START] = sText_TeamTrappedWithVines, + [STRINGID_PKMNBLEWAWAYSHARPSTEEL - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwaySharpSteel, + [STRINGID_SHARPSTEELDMG - BATTLESTRINGS_TABLE_START] = sText_SharpSteelDmg, + [STRINGID_SHARPSTEELFLOATS - BATTLESTRINGS_TABLE_START] = sText_SharpSteelFloats, [STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN - BATTLESTRINGS_TABLE_START] = sText_AttackerGainedStrengthFromTheFallen, [STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT - BATTLESTRINGS_TABLE_START] = sText_AbilityWeakenedSurroundingMonsStat, [STRINGID_ELECTRICTERRAINACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainActivatedAbility, @@ -896,7 +946,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_ASANDSTORMKICKEDUP - BATTLESTRINGS_TABLE_START] = sText_ASandstormKickedUp, [STRINGID_BATTLERABILITYRAISEDSTAT - BATTLESTRINGS_TABLE_START] = sText_BattlerAbilityRaisedStat, [STRINGID_FETCHEDPOKEBALL - BATTLESTRINGS_TABLE_START] = sText_FetchedPokeBall, - [STRINGID_STATWASNOTLOWERED - BATTLESTRINGS_TABLE_START] = sText_StatWasNotLowered, + [STRINGID_CLEARAMULETWONTLOWERSTATS - BATTLESTRINGS_TABLE_START] = sText_ClearAmuletWontLowerStats, [STRINGID_CLOAKEDINAFREEZINGLIGHT - BATTLESTRINGS_TABLE_START] = sText_CloakedInAFreezingLight, [STRINGID_DESTINYKNOTACTIVATES - BATTLESTRINGS_TABLE_START] = sText_DestinyKnotActivates, [STRINGID_NOONEWILLBEABLETORUNAWAY - BATTLESTRINGS_TABLE_START] = sText_NoOneWillBeAbleToRun, @@ -1416,6 +1466,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_ToxicSpikesDisappearedFromTeam, [STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_StealthRockDisappearedFromTeam, [STRINGID_STICKYWEBDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_StickyWebDisappearedFromTeam, + [STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_SharpSteelDisappearedFromTeam, [STRINGID_IONDELUGEON - BATTLESTRINGS_TABLE_START] = sText_IonDelugeOn, [STRINGID_TOPSYTURVYSWITCHEDSTATS - BATTLESTRINGS_TABLE_START] = sText_TopsyTurvySwitchedStats, [STRINGID_TERRAINBECOMESMISTY - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesMisty, @@ -1469,6 +1520,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_ULTRABURSTREACTING - BATTLESTRINGS_TABLE_START] = sText_UltraBurstReacting, [STRINGID_ULTRABURSTCOMPLETED - BATTLESTRINGS_TABLE_START] = sText_UltraBurstCompleted, [STRINGID_TEAMGAINEDEXP - BATTLESTRINGS_TABLE_START] = sText_TeamGainedEXP, + [STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP - BATTLESTRINGS_TABLE_START] = sText_TargetCoveredInStickyCandySyrup, }; const u16 gTrainerUsedItemStringIds[] = @@ -1530,8 +1582,10 @@ const u16 gDmgHazardsStringIds[] = { [B_MSG_PKMNHURTBYSPIKES] = STRINGID_PKMNHURTBYSPIKES, [B_MSG_STEALTHROCKDMG] = STRINGID_STEALTHROCKDMG, + [B_MSG_SHARPSTEELDMG] = STRINGID_SHARPSTEELDMG, [B_MSG_POINTEDSTONESFLOAT] = STRINGID_POINTEDSTONESFLOAT, - [B_MSG_SPIKESSCATTERED] = STRINGID_SPIKESSCATTERED + [B_MSG_SPIKESSCATTERED] = STRINGID_SPIKESSCATTERED, + [B_MSG_SHARPSTEELFLOATS] = STRINGID_SHARPSTEELFLOATS, }; const u16 gSwitchInAbilityStringIds[] = @@ -1850,11 +1904,7 @@ const u16 gWeatherStartsStringIds[] = [WEATHER_SUNNY_CLOUDS] = STRINGID_ITISRAINING, [WEATHER_SUNNY] = STRINGID_ITISRAINING, [WEATHER_RAIN] = STRINGID_ITISRAINING, -#if B_OVERWORLD_SNOW >= GEN_9 - [WEATHER_SNOW] = STRINGID_STARTEDSNOW, -#else - [WEATHER_SNOW] = STRINGID_STARTEDHAIL, -#endif + [WEATHER_SNOW] = (B_OVERWORLD_SNOW >= GEN_9 ? STRINGID_STARTEDSNOW : STRINGID_STARTEDHAIL), [WEATHER_RAIN_THUNDERSTORM] = STRINGID_ITISRAINING, [WEATHER_FOG_HORIZONTAL] = STRINGID_ITISRAINING, [WEATHER_VOLCANIC_ASH] = STRINGID_ITISRAINING, @@ -1957,6 +2007,27 @@ const u16 gStatusConditionsStringIds[] = STRINGID_PKMNWASPOISONED, STRINGID_PKMNBADLYPOISONED, STRINGID_PKMNWASBURNED, STRINGID_PKMNWASPARALYZED, STRINGID_PKMNFELLASLEEP, STRINGID_PKMNGOTFROSTBITE }; +const u16 gStatus2StringIds[] = +{ + STRINGID_PKMNWASCONFUSED, STRINGID_PKMNFELLINLOVE, STRINGID_TARGETCANTESCAPENOW, STRINGID_PKMNSUBJECTEDTOTORMENT +}; + +const u16 gDamageNonTypesStartStringIds[] = +{ + [B_MSG_TRAPPED_WITH_VINES] = STRINGID_TEAMTRAPPEDWITHVINES, + [B_MSG_CAUGHT_IN_VORTEX] = STRINGID_TEAMCAUGHTINVORTEX, + [B_MSG_SURROUNDED_BY_FIRE] = STRINGID_TEAMSURROUNDEDBYFIRE, + [B_MSG_SURROUNDED_BY_ROCKS] = STRINGID_TEAMSURROUNDEDBYROCKS, +}; + +const u16 gDamageNonTypesDmgStringIds[] = +{ + [B_MSG_HURT_BY_VINES] = STRINGID_PKMNHURTBYVINES, + [B_MSG_HURT_BY_VORTEX] = STRINGID_PKMNHURTBYVORTEX, + [B_MSG_BURNING_UP] = STRINGID_PKMNBURNINGUP, + [B_MSG_HURT_BY_ROCKS_THROWN] = STRINGID_PKMNHURTBYROCKSTHROWN, +}; + const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!"); const u8 gText_CongratsPkmnEvolved[] = _("Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{WAIT_SE}\p"); const u8 gText_PkmnStoppedEvolving[] = _("Huh? {STR_VAR_1}\nstopped evolving!\p"); @@ -2851,6 +2922,8 @@ void BufferStringBattle(u16 stringID, u32 battler) case STRINGID_USEDMOVE: // pokemon used a move msg if (gBattleStruct->zmove.active && gBattleStruct->zmove.activeSplit != SPLIT_STATUS) StringCopy(gBattleTextBuff3, GetZMoveName(gBattleMsgDataPtr->currentMove)); + else if (IsMaxMove(gBattleMsgDataPtr->currentMove)) + StringCopy(gBattleTextBuff3, GetMaxMoveName(gBattleMsgDataPtr->currentMove)); else if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT) StringCopy(gBattleTextBuff3, sATypeMove_Table[*(&gBattleStruct->stringMoveType)]); else @@ -2948,7 +3021,7 @@ void BufferStringBattle(u16 stringID, u32 battler) u32 BattleStringExpandPlaceholdersToDisplayedString(const u8 *src) { - BattleStringExpandPlaceholders(src, gDisplayedStringBattle); + return BattleStringExpandPlaceholders(src, gDisplayedStringBattle); } static const u8 *TryGetStatusString(u8 *src) @@ -3016,7 +3089,7 @@ static void GetBattlerNick(u32 battler, u8 *dst) static const u8 *BattleStringGetOpponentNameByTrainerId(u16 trainerId, u8 *text, u8 multiplayerId, u8 battler) { - const u8 *toCpy; + const u8 *toCpy = NULL; if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE) { @@ -3068,7 +3141,7 @@ static const u8 *BattleStringGetOpponentNameByTrainerId(u16 trainerId, u8 *text, static const u8 *BattleStringGetOpponentName(u8 *text, u8 multiplayerId, u8 battler) { - const u8 *toCpy; + const u8 *toCpy = NULL; switch (GetBattlerPosition(battler)) { @@ -3088,7 +3161,7 @@ static const u8 *BattleStringGetOpponentName(u8 *text, u8 multiplayerId, u8 batt static const u8 *BattleStringGetPlayerName(u8 *text, u8 battler) { - const u8 *toCpy; + const u8 *toCpy = NULL; switch (GetBattlerPosition(battler)) { @@ -3164,7 +3237,6 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) // This buffer may hold either the name of a trainer, pokemon, or item. u8 text[max(max(max(32, TRAINER_NAME_LENGTH + 1), POKEMON_NAME_LENGTH + 1), ITEM_NAME_LENGTH)]; u8 multiplayerId; - s32 i; if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK) multiplayerId = gRecordedBattleMultiplayerId; @@ -3745,7 +3817,7 @@ void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) // unused, since the value loaded into the buffer is not read; it loaded one of // two particles (either "?" or "?") which works in tandem with ChooseTypeOfMoveUsedString // below to effect changes in the meaning of the line. -static void ChooseMoveUsedParticle(u8 *textBuff) +static void UNUSED ChooseMoveUsedParticle(u8 *textBuff) { s32 counter = 0; u32 i = 0; @@ -3785,7 +3857,7 @@ static void ChooseMoveUsedParticle(u8 *textBuff) // // sText_ExclamationMark5 was " ????!" This resulted in a translation of // "'s attack!". -static void ChooseTypeOfMoveUsedString(u8 *dst) +static void UNUSED ChooseTypeOfMoveUsedString(u8 *dst) { s32 counter = 0; s32 i = 0; @@ -3865,7 +3937,7 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId) else gTextFlags.useAlternateDownArrow = TRUE; - if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED)) + if ((gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED)) || gTestRunnerEnabled) gTextFlags.autoScroll = TRUE; else gTextFlags.autoScroll = FALSE; @@ -3963,6 +4035,7 @@ struct TrainerSlide const u8 *msgMegaEvolution; const u8 *msgZMove; const u8 *msgBeforeFirstTurn; + const u8 *msgDynamax; }; static const struct TrainerSlide sTrainerSlides[] = @@ -3983,6 +4056,7 @@ static const struct TrainerSlide sTrainerSlides[] = .msgMegaEvolution = sText_PowderExplodes, .msgZMove = sText_Electromagnetism, .msgBeforeFirstTurn = sText_GravityIntensified, + .msgDynamax = sText_TargetWokeUp, }, */ }; @@ -4028,9 +4102,8 @@ u32 BattlerHPPercentage(u32 battler, u32 operation, u32 threshold) case GREATER_THAN_OR_EQUAL: return gBattleMons[battler].hp >= (gBattleMons[battler].maxHP / threshold); case NOT_EQUAL: - return gBattleMons[battler].hp != (gBattleMons[battler].maxHP / threshold); default: - break; + return gBattleMons[battler].hp != (gBattleMons[battler].maxHP / threshold); } } @@ -4169,6 +4242,14 @@ u32 ShouldDoTrainerSlide(u32 battler, u32 which) return TRUE; } break; + case TRAINER_SLIDE_DYNAMAX: + if (sTrainerSlides[i].msgDynamax != NULL && !gBattleStruct->trainerSlideDynamaxMsgDone) + { + gBattleStruct->trainerSlideDynamaxMsgDone = TRUE; + gBattleStruct->trainerSlideMsg = sTrainerSlides[i].msgDynamax; + return TRUE; + } + break; } break; } diff --git a/src/battle_pike.c b/src/battle_pike.c index 34aaf2a769..0692b68063 100644 --- a/src/battle_pike.c +++ b/src/battle_pike.c @@ -861,10 +861,7 @@ static bool8 DoesTypePreventStatus(u16 species, u32 status) break; case STATUS1_PARALYSIS: if (gSpeciesInfo[species].types[0] == TYPE_GROUND || gSpeciesInfo[species].types[1] == TYPE_GROUND - #if B_PARALYZE_ELECTRIC >= GEN_6 - || gSpeciesInfo[species].types[0] == TYPE_ELECTRIC || gSpeciesInfo[species].types[1] == TYPE_ELECTRIC - #endif - ) + || (B_PARALYZE_ELECTRIC >= GEN_6 && (gSpeciesInfo[species].types[0] == TYPE_ELECTRIC || gSpeciesInfo[species].types[1] == TYPE_ELECTRIC))) ret = TRUE; break; case STATUS1_BURN: @@ -916,11 +913,7 @@ static bool8 TryInflictRandomStatus(void) if (rand < 35) sStatusFlags = STATUS1_TOXIC_POISON; else if (rand < 60) - #if B_USE_FROSTBITE == TRUE - sStatusFlags = STATUS1_FROSTBITE; - #else - sStatusFlags = STATUS1_FREEZE; - #endif + sStatusFlags = B_USE_FROSTBITE ? STATUS1_FROSTBITE : STATUS1_FREEZE; else if (rand < 80) sStatusFlags = STATUS1_PARALYSIS; else if (rand < 90) @@ -1111,8 +1104,7 @@ static u16 GetNPCRoomGraphicsId(void) return sNPCTable[sNpcId].graphicsId; } -// Unused -static u8 GetInWildMonRoom(void) +static bool8 UNUSED GetInWildMonRoom(void) { return sInWildMonRoom; } diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index 31f8fa6b81..a21034d75a 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -27,6 +27,7 @@ #include "overworld.h" #include "event_scripts.h" #include "graphics.h" +#include "wild_encounter.h" #include "constants/battle_frontier.h" #include "constants/battle_pyramid.h" #include "constants/event_objects.h" @@ -101,8 +102,13 @@ static bool8 TrySetPyramidObjectEventPositionAtCoords(bool8, u8, u8, u8 *, u8, u // Const rom data. #define ABILITY_RANDOM 2 // For wild mons data. -#include "data/battle_frontier/battle_pyramid_level_50_wild_mons.h" -#include "data/battle_frontier/battle_pyramid_open_level_wild_mons.h" +#if BATTLE_PYRAMID_RANDOM_ENCOUNTERS == TRUE + #include "data/battle_frontier/battle_pyramid_wild_requirements.h" +#else + #include "data/battle_frontier/battle_pyramid_level_50_wild_mons.h" + #include "data/battle_frontier/battle_pyramid_open_level_wild_mons.h" +#endif + static const struct PyramidFloorTemplate sPyramidFloorTemplates[] = { @@ -1340,6 +1346,209 @@ static void MarkPyramidTrainerAsBattled(u16 trainerId) gObjectEvents[gSelectedObjectEvent].initialCoords.y = gObjectEvents[gSelectedObjectEvent].currentCoords.y; } +#if BATTLE_PYRAMID_RANDOM_ENCOUNTERS == TRUE +// check if given species evolved from a specific evolutionary stone +// if nItems is passed as 0, it will check for any EVO_ITEM case +static bool32 CheckBattlePyramidEvoRequirement(u16 species, const u16 *evoItems, u8 nItems) +{ + u32 i, j, k; + for (i = 0; i < NUM_SPECIES; i++) + { + const struct Evolution *evolutions = GetSpeciesEvolutions(i); + if (evolutions == NULL) + continue; + for (j = 0; evolutions[j].method != EVOLUTIONS_END; j++) + { + if (evolutions[j].targetSpecies == species + && (evolutions[j].method == EVO_ITEM + || evolutions[j].method == EVO_ITEM_MALE + || evolutions[j].method == EVO_ITEM_FEMALE)) + { + if (nItems == 0) + { + // Any EVO_ITEM case will do + return TRUE; + } + else + { + // Otherwise, need to match specific set provided + for (k = 0; k < nItems; k++) + { + if (evolutions[j].param == evoItems[k]) + return TRUE; + } + } + } + } + } + return FALSE; +} + +extern u32 GetTotalBaseStat(u32 species); +void GenerateBattlePyramidWildMon(void) +{ + u8 name[POKEMON_NAME_LENGTH + 1]; + int i, j; + u32 id; + u32 lvl = gSaveBlock2Ptr->frontier.lvlMode; + u16 round = (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvl] / 7) % TOTAL_PYRAMID_ROUNDS; + const struct BattlePyramidRequirement *reqs = &sBattlePyramidRequirementsByRound[round]; + u16 species; + u32 bstLim; + u16 *moves = NULL; + u16 *abilities = NULL; + int moveCount = 0, abilityCount = 0; + + 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; + // 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) + { + moveCount = 0; + // get list of moves that can be learned + for (i = 0; i < reqs->nMoves; i++) + { + if (CanLearnTeachableMove(species, reqs->moves[i])) + { + moves[moveCount] = reqs->moves[i]; + moveCount++; + } + } + if (moveCount == 0) + continue; + } + + // check abilities + if (reqs->nAbilities != 0) + { + abilityCount = 0; + // get list of moves that can be learned + for (i = 0; i < reqs->nAbilities; i++) + { + for (j = 0; j < NUM_ABILITY_SLOTS; j++) + { + if (gSpeciesInfo[species].abilities[j] == reqs->abilities[i]) + { + abilities[abilityCount] = reqs->abilities[i]; + abilityCount++; + break; + } + } + } + if (abilityCount == 0) + continue; + } + // check evos + if (reqs->evoItems[0] != 0 && !CheckBattlePyramidEvoRequirement(species, reqs->evoItems, reqs->nEvoItems)) + continue; + + // we found a species we can use! + break; + } + + // Set species, name + 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) + { + lvl = SetFacilityPtrsGetLevel(); + lvl -= (5 + (Random() % (TOTAL_PYRAMID_ROUNDS - round)/2)); + } + else + { + lvl = 50 - (5 + (Random() % (TOTAL_PYRAMID_ROUNDS - round)/4)); + } + SetMonData(&gEnemyParty[0], + MON_DATA_EXP, + &gExperienceTables[gSpeciesInfo[species].growthRate][lvl]); + + // Give initial moves and replace one with desired move + GiveBoxMonInitialMoveset(&gEnemyParty[0].box); + if (moves != NULL) + { + // get a random move to give + i = 0; + while (1) + { + id = moves[Random() % moveCount]; + if (!MonKnowsMove(&gEnemyParty[0], id)) + { + // replace random move + SetMonData(&gEnemyParty[0], MON_DATA_MOVE1 + Random() % MAX_MON_MOVES, &id); + break; + } + i++; + if (i == 20) + break; + } + Free(moves); + } + + // Initialize a random ability num + if (gSpeciesInfo[species].abilities[1]) + { + i = GetMonData(&gEnemyParty[0], MON_DATA_PERSONALITY, NULL) % 2; + SetMonData(&gEnemyParty[0], MON_DATA_ABILITY_NUM, &i); + } + else + { + i = 0; + SetMonData(&gEnemyParty[0], MON_DATA_ABILITY_NUM, &i); + } + + // Try to replace with desired ability + if (abilities != NULL) + { + i = 0; + while (1) + { + id = abilities[Random() % abilityCount]; + for (j = 0; j < NUM_ABILITY_SLOTS; j++) + { + if (id == gSpeciesInfo[species].abilities[j]) + { + // Set this ability num + SetMonData(&gEnemyParty[0], MON_DATA_ABILITY_NUM, &id); + } + } + } + Free(abilities); + } + + if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[gSaveBlock2Ptr->frontier.lvlMode] >= 140) + { + id = (Random() % 17) + 15; + for (i = 0; i < NUM_STATS; i++) + SetMonData(&gEnemyParty[0], MON_DATA_HP_IV + i, &id); + } + + CalculateMonStats(&gEnemyParty[0]); +} +#else void GenerateBattlePyramidWildMon(void) { u8 name[POKEMON_NAME_LENGTH + 1]; @@ -1412,6 +1621,7 @@ void GenerateBattlePyramidWildMon(void) } CalculateMonStats(&gEnemyParty[0]); } +#endif u8 GetPyramidRunMultiplier(void) { @@ -1479,8 +1689,7 @@ u8 GetTrainerEncounterMusicIdInBattlePyramid(u16 trainerId) return TRAINER_ENCOUNTER_MUSIC_MALE; } -// Unused -static void BattlePyramidRetireChallenge(void) +static void UNUSED BattlePyramidRetireChallenge(void) { ScriptContext_SetupScript(BattlePyramid_Retire); } diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c index 9d5cee94a5..9f8856a163 100644 --- a/src/battle_pyramid_bag.c +++ b/src/battle_pyramid_bag.c @@ -174,12 +174,12 @@ enum { static const struct MenuAction sMenuActions[] = { - [ACTION_USE_FIELD] = { gMenuText_Use, BagAction_UseOnField }, - [ACTION_TOSS] = { gMenuText_Toss, BagAction_Toss }, - [ACTION_GIVE] = { gMenuText_Give, BagAction_Give }, - [ACTION_CANCEL] = { gText_Cancel2, BagAction_Cancel }, - [ACTION_USE_BATTLE] = { gMenuText_Use, BagAction_UseInBattle }, - [ACTION_DUMMY] = { gText_EmptyString2, NULL }, + [ACTION_USE_FIELD] = { gMenuText_Use, {BagAction_UseOnField} }, + [ACTION_TOSS] = { gMenuText_Toss, {BagAction_Toss} }, + [ACTION_GIVE] = { gMenuText_Give, {BagAction_Give} }, + [ACTION_CANCEL] = { gText_Cancel2, {BagAction_Cancel} }, + [ACTION_USE_BATTLE] = { gMenuText_Use, {BagAction_UseInBattle} }, + [ACTION_DUMMY] = { gText_EmptyString2, {NULL} }, }; static const u8 sMenuActionIds_Field[] = {ACTION_USE_FIELD, ACTION_GIVE, ACTION_TOSS, ACTION_CANCEL}; @@ -382,8 +382,8 @@ void CB2_PyramidBagMenuFromStartMenu(void) GoToBattlePyramidBagMenu(PYRAMIDBAG_LOC_FIELD, CB2_ReturnToFieldWithOpenMenu); } -// Unused, CB2_BagMenuFromBattle is used instead -static void OpenBattlePyramidBagInBattle(void) +// CB2_BagMenuFromBattle is used instead +static void UNUSED OpenBattlePyramidBagInBattle(void) { GoToBattlePyramidBagMenu(PYRAMIDBAG_LOC_BATTLE, CB2_SetUpReshowBattleScreenAfterMenu2); } @@ -1475,8 +1475,7 @@ static void DrawTossNumberWindow(u8 windowId) ScheduleBgCopyTilemapToVram(1); } -// Unused -static u8 GetMenuActionWindowId(u8 windowArrayId) +static u8 UNUSED GetMenuActionWindowId(u8 windowArrayId) { return gPyramidBagMenu->windowIds[windowArrayId]; } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 8e6fab8dfc..1f9b48f478 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -79,7 +79,7 @@ // // 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 = (const void *)gBattlescriptCurrInstr +#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__) @@ -94,8 +94,6 @@ #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; -extern struct Evolution gEvolutionTable[][EVOS_PER_MON]; - extern const u8 *const gBattleScriptsForMoveEffects[]; // table to avoid ugly powing on gba (courtesy of doesnt) @@ -336,9 +334,7 @@ static const u16 sWhiteOutBadgeMoney[9] = { 8, 16, 24, 36, 48, 64, 80, 100, 120 #define TAG_LVLUP_BANNER_MON_ICON 55130 -static bool8 IsTwoTurnsMove(u16 move); static void TrySetDestinyBondToHappen(void); -static u8 AttacksThisTurn(u8 battler, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2. static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr); static bool32 IsMonGettingExpSentOut(void); static void InitLevelUpBanner(void); @@ -356,6 +352,7 @@ static void TryUpdateRoundTurnOrder(void); static bool32 ChangeOrderTargetAfterAttacker(void); void ApplyExperienceMultipliers(s32 *expAmount, u8 expGetterMonId, u8 faintedBattler); static void RemoveAllTerrains(void); +static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 isIntimidate); static void Cmd_attackcanceler(void); static void Cmd_accuracycheck(void); @@ -421,7 +418,7 @@ static void Cmd_return(void); static void Cmd_end(void); static void Cmd_end2(void); static void Cmd_end3(void); -static void Cmd_jumpifaffectedbyprotect(void); +static void Cmd_unused5(void); static void Cmd_call(void); static void Cmd_setroost(void); static void Cmd_jumpifabilitypresent(void); @@ -680,7 +677,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = Cmd_end, //0x3D Cmd_end2, //0x3E Cmd_end3, //0x3F - Cmd_jumpifaffectedbyprotect, //0x40 + Cmd_unused5, //0x40 Cmd_call, //0x41 Cmd_setroost, //0x42 Cmd_jumpifabilitypresent, //0x43 @@ -980,7 +977,7 @@ static const u16 sFinalStrikeOnlyEffects[] = EFFECT_SECRET_POWER, EFFECT_SMACK_DOWN, EFFECT_SPARKLING_ARIA, - EFFECT_SMELLINGSALT, + EFFECT_SMELLING_SALTS, EFFECT_WAKE_UP_SLAP, EFFECT_HIT_ESCAPE, EFFECT_RECOIL_HP_25, @@ -1060,47 +1057,43 @@ static const u16 sNaturePowerMoves[BATTLE_TERRAIN_COUNT] = [BATTLE_TERRAIN_ULTRA_SPACE] = MOVE_PSYSHOCK, }; -static const u16 sPickupItems[] = -{ - ITEM_POTION, - ITEM_ANTIDOTE, - ITEM_SUPER_POTION, - ITEM_GREAT_BALL, - ITEM_REPEL, - ITEM_ESCAPE_ROPE, - ITEM_X_ATTACK, - ITEM_FULL_HEAL, - ITEM_ULTRA_BALL, - ITEM_HYPER_POTION, - ITEM_RARE_CANDY, - ITEM_PROTEIN, - ITEM_REVIVE, - ITEM_HP_UP, - ITEM_FULL_RESTORE, - ITEM_MAX_REVIVE, - ITEM_PP_UP, - ITEM_MAX_ELIXIR, +#define _ 0 + +static const struct PickupItem sPickupTable[] = +{// Item 1+ 11+ 21+ 31+ 41+ 51+ 61+ 71+ 81+ 91+ Levels + { ITEM_POTION, { 35, _, _, _, _, _, _, _, _, _, } }, + { ITEM_TINY_MUSHROOM, { 25, 10, _, _, _, _, _, _, _, _, } }, + { ITEM_REPEL, { 8, 30, _, _, _, _, _, _, _, _, } }, + { ITEM_SUPER_POTION, { 8, 10, 30, _, _, _, _, _, _, _, } }, + { ITEM_POKE_DOLL, { 8, 10, 9, 30, _, _, _, _, _, _, } }, + { ITEM_BIG_MUSHROOM, { 3, 10, 9, _, _, _, _, _, _, _, } }, + { ITEM_SUPER_REPEL, { 3, 10, 9, 9, 30, _, _, _, _, _, } }, + { ITEM_FULL_HEAL, { 3, 3, 9, 8, 9, 30, _, _, _, _, } }, + { ITEM_REVIVE, { 3, 3, 3, 8, 8, 9, 30, _, _, _, } }, + { ITEM_HYPER_POTION, { 3, 3, 3, 4, 8, 9, 8, 30, _, _, } }, + { ITEM_ETHER, { 1, 1, 3, 4, 4, _, _, _, _, _, } }, + { ITEM_MAX_REPEL, { _, 3, 3, 4, 4, 9, 8, 8, 30, _, } }, + { ITEM_MOON_STONE, { _, 3, 3, 4, 4, 4, 4, 5, 9, 10, } }, + { ITEM_SUN_STONE, { _, 3, 3, 4, 4, 4, 4, 5, 9, 10, } }, + { ITEM_RARE_CANDY, { _, 1, 1, 1, 1, 4, 4, 5, 4, 5, } }, + { ITEM_NUGGET, { _, _, 3, 4, 4, 4, 4, 5, 4, 5, } }, + { ITEM_MAX_POTION, { _, _, 3, 4, 4, 4, 8, 8, 9, 30, } }, + { ITEM_MAX_ETHER, { _, _, 1, 1, 4, 4, 4, _, _, _, } }, + { ITEM_PP_UP, { _, _, 1, 1, 1, 4, 4, 5, 4, 5, } }, + { ITEM_BIG_NUGGET, { _, _, 1, 1, 1, 1, 4, 5, 4, 5, } }, + { ITEM_DESTINY_KNOT, { _, _, 1, 1, 1, 1, 1, 1, 1, 1, } }, + { ITEM_LEFTOVERS, { _, _, 1, 1, 1, 1, 1, 1, 1, 1, } }, + { ITEM_MENTAL_HERB, { _, _, 1, 1, 1, 1, 1, 1, 1, 1, } }, + { ITEM_POWER_HERB, { _, _, 1, 1, 1, 1, 1, 1, 1, 1, } }, + { ITEM_WHITE_HERB, { _, _, 1, 1, 1, 1, 1, 1, 1, 1, } }, + { ITEM_BALM_MUSHROOM, { _, _, 1, 4, 4, 4, 4, 5, 4, 5, } }, + { ITEM_MAX_REVIVE, { _, _, _, 4, 4, 4, 4, 7, 9, 9, } }, + { ITEM_ELIXIR, { _, _, _, _, 1, 1, 4, 5, 4, 5, } }, + { ITEM_MAX_ELIXIR, { _, _, _, _, _, _, 1, 1, 4, 5, } }, + { ITEM_BOTTLE_CAP, { _, _, _, _, _, _, _, 1, 1, 1, } }, }; -static const u16 sRarePickupItems[] = -{ - ITEM_HYPER_POTION, - ITEM_NUGGET, - ITEM_KINGS_ROCK, - ITEM_FULL_RESTORE, - ITEM_ETHER, - ITEM_WHITE_HERB, - ITEM_TM_REST, - ITEM_ELIXIR, - ITEM_TM_FOCUS_PUNCH, - ITEM_LEFTOVERS, - ITEM_TM_EARTHQUAKE, -}; - -static const u8 sPickupProbabilities[] = -{ - 30, 40, 50, 60, 70, 80, 90, 94, 98 -}; +#undef _ static const u8 sTerrainToType[BATTLE_TERRAIN_COUNT] = { @@ -1124,16 +1117,8 @@ static const u8 sTerrainToType[BATTLE_TERRAIN_COUNT] = [BATTLE_TERRAIN_DISTORTION_WORLD] = TYPE_NORMAL, [BATTLE_TERRAIN_SPACE] = TYPE_DRAGON, [BATTLE_TERRAIN_ULTRA_SPACE] = TYPE_PSYCHIC, -#if B_CAMOUFLAGE_TYPES >= GEN_5 - [BATTLE_TERRAIN_MOUNTAIN] = TYPE_GROUND, - [BATTLE_TERRAIN_PLAIN] = TYPE_GROUND, -#elif B_CAMOUFLAGE_TYPES == GEN_4 - [BATTLE_TERRAIN_MOUNTAIN] = TYPE_ROCK, - [BATTLE_TERRAIN_PLAIN] = TYPE_GROUND, -#else - [BATTLE_TERRAIN_MOUNTAIN] = TYPE_ROCK, - [BATTLE_TERRAIN_PLAIN] = TYPE_NORMAL, -#endif + [BATTLE_TERRAIN_MOUNTAIN] = (B_CAMOUFLAGE_TYPES >= GEN_5 ? TYPE_GROUND : TYPE_ROCK), + [BATTLE_TERRAIN_PLAIN] = (B_CAMOUFLAGE_TYPES >= GEN_4 ? TYPE_GROUND : TYPE_NORMAL), }; // In Battle Palace, moves are chosen based on the pokemons nature rather than by the player @@ -1239,7 +1224,7 @@ static bool32 TryAegiFormChange(void) { default: return FALSE; - case SPECIES_AEGISLASH: // Shield -> Blade + case SPECIES_AEGISLASH_SHIELD: // Shield -> Blade if (IS_MOVE_STATUS(gCurrentMove)) return FALSE; gBattleMons[gBattlerAttacker].species = SPECIES_AEGISLASH_BLADE; @@ -1247,7 +1232,7 @@ static bool32 TryAegiFormChange(void) case SPECIES_AEGISLASH_BLADE: // Blade -> Shield if (gCurrentMove != MOVE_KINGS_SHIELD) return FALSE; - gBattleMons[gBattlerAttacker].species = SPECIES_AEGISLASH; + gBattleMons[gBattlerAttacker].species = SPECIES_AEGISLASH_SHIELD; break; } @@ -1259,16 +1244,22 @@ static bool32 TryAegiFormChange(void) bool32 ProteanTryChangeType(u32 battler, u32 ability, u32 move, u32 moveType) { if ((ability == ABILITY_PROTEAN || ability == ABILITY_LIBERO) + && !gDisableStructs[gBattlerAttacker].usedProteanLibero && (gBattleMons[battler].type1 != moveType || gBattleMons[battler].type2 != moveType || (gBattleMons[battler].type3 != moveType && gBattleMons[battler].type3 != TYPE_MYSTERY)) && move != MOVE_STRUGGLE) { - SET_BATTLER_TYPE(gBattlerAttacker, moveType); + SET_BATTLER_TYPE(battler, moveType); return TRUE; } return FALSE; } +bool32 IsMoveNotAllowedInSkyBattles(u32 move) +{ + return ((gBattleStruct->isSkyBattle) && (gBattleMoves[gCurrentMove].skyBattleBanned)); +} + static void Cmd_attackcanceler(void) { CMD_ARGS(); @@ -1277,6 +1268,14 @@ static void Cmd_attackcanceler(void) u16 attackerAbility = GetBattlerAbility(gBattlerAttacker); GET_MOVE_TYPE(gCurrentMove, moveType); + // Weight-based moves are blocked by Dynamax. + if (IsDynamaxed(gBattlerTarget) && IsMoveBlockedByDynamax(gCurrentMove)) + { + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MoveBlockedByDynamax; + return; + } + if (gBattleOutcome != 0) { gCurrentActionFuncId = B_ACTION_FINISHED; @@ -1288,10 +1287,8 @@ static void Cmd_attackcanceler(void) gBattlescriptCurrInstr = BattleScript_MoveEnd; return; } -#if B_STANCE_CHANGE_FAIL <= GEN_6 - if (TryAegiFormChange()) + if (B_STANCE_CHANGE_FAIL < GEN_7 && TryAegiFormChange()) return; -#endif if (AtkCanceller_UnableToUseMove(moveType)) return; @@ -1328,6 +1325,8 @@ static void Cmd_attackcanceler(void) // Check Protean activation. if (ProteanTryChangeType(gBattlerAttacker, attackerAbility, gCurrentMove, moveType)) { + if (B_PROTEAN_LIBERO == GEN_9) + gDisableStructs[gBattlerAttacker].usedProteanLibero = TRUE; PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType); gBattlerAbility = gBattlerAttacker; BattleScriptPushCursor(); @@ -1349,10 +1348,8 @@ static void Cmd_attackcanceler(void) gMoveResultFlags |= MOVE_RESULT_MISSED; return; } -#if B_STANCE_CHANGE_FAIL >= GEN_7 - if (TryAegiFormChange()) + if (B_STANCE_CHANGE_FAIL >= GEN_7 && TryAegiFormChange()) return; -#endif gHitMarker &= ~HITMARKER_ALLOW_NO_PP; @@ -1372,16 +1369,17 @@ static void Cmd_attackcanceler(void) } gHitMarker |= HITMARKER_OBEYS; - // Check if no available target present on the field. - if (NoTargetPresent(gBattlerAttacker, gCurrentMove) - && (!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) + // Check if no available target present on the field or if Sky Battles ban the move + if ((NoTargetPresent(gBattlerAttacker, gCurrentMove) + && (!gBattleMoves[gCurrentMove].twoTurnMove || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) + || (IsMoveNotAllowedInSkyBattles(gCurrentMove))) { if (gBattleMoves[gCurrentMove].effect == EFFECT_FLING) // Edge case for removing a mon's item when there is no target available after using Fling. gBattlescriptCurrInstr = BattleScript_FlingFailConsumeItem; else gBattlescriptCurrInstr = BattleScript_FailedFromAtkString; - if (!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) + if (!gBattleMoves[gCurrentMove].twoTurnMove || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) CancelMultiTurnMoves(gBattlerAttacker); return; } @@ -1390,7 +1388,6 @@ static void Cmd_attackcanceler(void) && gBattleMoves[gCurrentMove].magicCoatAffected && !gProtectStructs[gBattlerAttacker].usesBouncedMove) { - PressurePPLose(gBattlerAttacker, gBattlerTarget, MOVE_MAGIC_COAT); gProtectStructs[gBattlerTarget].usesBouncedMove = TRUE; gBattleCommunication[MULTISTRING_CHOOSER] = 0; // Edge case for bouncing a powder move against a grass type pokemon. @@ -1423,7 +1420,8 @@ static void Cmd_attackcanceler(void) } // Z-moves and Max Moves bypass protection, but deal reduced damage (factored in AccumulateOtherModifiers) - if (gBattleStruct->zmove.active && IS_BATTLER_PROTECTED(gBattlerTarget)) + if ((gBattleStruct->zmove.active || IsMaxMove(gCurrentMove)) + && IS_BATTLER_PROTECTED(gBattlerTarget)) { BattleScriptPush(cmd->nextInstr); gBattlescriptCurrInstr = BattleScript_CouldntFullyProtect; @@ -1434,7 +1432,6 @@ static void Cmd_attackcanceler(void) { if ((gProtectStructs[gBattlerByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].snatchAffected) { - PressurePPLose(gBattlerAttacker, gBattlerByTurnOrder[i], MOVE_SNATCH); gProtectStructs[gBattlerByTurnOrder[i]].stealMove = FALSE; gBattleScripting.battler = gBattlerByTurnOrder[i]; BattleScriptPushCursor(); @@ -1461,7 +1458,7 @@ static void Cmd_attackcanceler(void) } else if (IsBattlerProtected(gBattlerTarget, gCurrentMove) && (gCurrentMove != MOVE_CURSE || IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST)) - && ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) + && ((!gBattleMoves[gCurrentMove].twoTurnMove || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))) && gBattleMoves[gCurrentMove].effect != EFFECT_SUCKER_PUNCH) { if (IsMoveMakingContact(gCurrentMove, gBattlerAttacker)) @@ -1510,7 +1507,7 @@ static bool32 JumpIfMoveFailed(u8 adder, u16 move) return FALSE; } -static void Cmd_jumpifaffectedbyprotect(void) +static void Cmd_unused5(void) { CMD_ARGS(const u8 *failInstr); @@ -1541,18 +1538,13 @@ static bool8 JumpIfMoveAffectedByProtect(u16 move) static bool32 AccuracyCalcHelper(u16 move) { - if (gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBattlerTarget].battlerWithSureHit == gBattlerAttacker) + if ((gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBattlerTarget].battlerWithSureHit == gBattlerAttacker) + || (B_TOXIC_NEVER_MISS >= GEN_6 && gBattleMoves[move].effect == EFFECT_TOXIC && IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_POISON)) + || gStatuses4[gBattlerTarget] & STATUS4_GLAIVE_RUSH) { JumpIfMoveFailed(7, move); return TRUE; } -#if B_TOXIC_NEVER_MISS >= GEN_6 - else if (gBattleMoves[move].effect == EFFECT_TOXIC && IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_POISON)) - { - JumpIfMoveFailed(7, move); - return TRUE; - } -#endif // 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(gBattlerAttacker) == ABILITY_NO_GUARD && (move != MOVE_SKY_DROP || gBattleStruct->skyDropTargets[gBattlerTarget] == 0xFF)) { @@ -1592,14 +1584,12 @@ static bool32 AccuracyCalcHelper(u16 move) JumpIfMoveFailed(7, move); return TRUE; } - #if B_BLIZZARD_HAIL >= GEN_4 - else if ((gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) && move == MOVE_BLIZZARD) + else if (B_BLIZZARD_HAIL >= GEN_4 && (gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW)) && move == MOVE_BLIZZARD) { - // thunder/hurricane ignore acc checks in rain unless target is holding utility umbrella + // Blizzard ignores acc checks in Hail in Gen4+ JumpIfMoveFailed(7, move); return TRUE; } - #endif } if (gBattleMoves[move].effect == EFFECT_VITAL_THROW) @@ -1608,13 +1598,13 @@ static bool32 AccuracyCalcHelper(u16 move) return TRUE; } -#if B_MINIMIZE_DMG_ACC >= GEN_6 - if ((gStatuses3[gBattlerTarget] & STATUS3_MINIMIZED) && gBattleMoves[move].minimizeDoubleDamage) + if (B_MINIMIZE_DMG_ACC >= GEN_6 + && (gStatuses3[gBattlerTarget] & STATUS3_MINIMIZED) + && gBattleMoves[move].minimizeDoubleDamage) { JumpIfMoveFailed(7, move); return TRUE; } -#endif if (gBattleMoves[move].accuracy == 0) { @@ -1629,15 +1619,15 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u { u32 calc, moveAcc; s8 buff, accStage, evasionStage; - u8 atkParam = GetBattlerHoldEffectParam(battlerAtk); - u8 defParam = GetBattlerHoldEffectParam(battlerDef); - u8 atkAlly = BATTLE_PARTNER(battlerAtk); - u16 atkAllyAbility = GetBattlerAbility(atkAlly); + u32 atkParam = GetBattlerHoldEffectParam(battlerAtk); + u32 defParam = GetBattlerHoldEffectParam(battlerDef); + u32 atkAlly = BATTLE_PARTNER(battlerAtk); + u32 atkAllyAbility = GetBattlerAbility(atkAlly); gPotentialItemEffectBattler = battlerDef; accStage = gBattleMons[battlerAtk].statStages[STAT_ACC]; evasionStage = gBattleMons[battlerDef].statStages[STAT_EVASION]; - if (atkAbility == ABILITY_UNAWARE || atkAbility == ABILITY_KEEN_EYE) + if (atkAbility == ABILITY_UNAWARE || atkAbility == ABILITY_KEEN_EYE || (B_ILLUMINATE_EFFECT >= GEN_9 && atkAbility == ABILITY_ILLUMINATE)) evasionStage = DEFAULT_STAT_STAGE; if (gBattleMoves[move].ignoresTargetDefenseEvasionStages) evasionStage = DEFAULT_STAT_STAGE; @@ -1739,12 +1729,8 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u if (gFieldStatuses & STATUS_FIELD_GRAVITY) calc = (calc * 5) / 3; // 1.66 Gravity acc boost -#if B_AFFECTION_MECHANICS == TRUE - // With high affection/friendship there's a chance to evade a move by substracting 10% of its accuracy. - // I can't find exact information about that chance, so I'm just gonna write it as a 20% chance for now. - if (GetBattlerFriendshipScore(battlerDef) >= FRIENDSHIP_150_TO_199 && (Random() % 100) <= 20) + if (B_AFFECTION_MECHANICS == TRUE && GetBattlerAffectionHearts(battlerDef) == AFFECTION_FIVE_HEARTS) calc = (calc * 90) / 100; -#endif return calc; } @@ -1768,7 +1754,7 @@ static void Cmd_accuracycheck(void) gBattlescriptCurrInstr = cmd->nextInstr; else if (gStatuses3[gBattlerTarget] & (STATUS3_SEMI_INVULNERABLE)) gBattlescriptCurrInstr = cmd->failInstr; - else if (!JumpIfMoveAffectedByProtect(0)) + else if (!JumpIfMoveAffectedByProtect(gCurrentMove)) gBattlescriptCurrInstr = cmd->nextInstr; } else if (gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_2ND_HIT @@ -1839,35 +1825,27 @@ static void Cmd_ppreduce(void) CMD_ARGS(); s32 i, ppToDeduct = 1; + u32 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); if (gBattleControllerExecFlags) return; - if (!gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure) + if (moveTarget == MOVE_TARGET_BOTH + || moveTarget == MOVE_TARGET_FOES_AND_ALLY + || moveTarget == MOVE_TARGET_ALL_BATTLERS + || gBattleMoves[gCurrentMove].forcePressure) { - switch (GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove)) + for (i = 0; i < gBattlersCount; i++) { - case MOVE_TARGET_FOES_AND_ALLY: - for (i = 0; i < gBattlersCount; i++) - { - if (i != gBattlerAttacker && IsBattlerAlive(i)) - ppToDeduct += (GetBattlerAbility(i) == ABILITY_PRESSURE); - } - break; - case MOVE_TARGET_BOTH: - case MOVE_TARGET_OPPONENTS_FIELD: - for (i = 0; i < gBattlersCount; i++) - { - if (GetBattlerSide(i) != GetBattlerSide(gBattlerAttacker) && IsBattlerAlive(i)) - ppToDeduct += (GetBattlerAbility(i) == ABILITY_PRESSURE); - } - break; - default: - if (gBattlerAttacker != gBattlerTarget && GetBattlerAbility(gBattlerTarget) == ABILITY_PRESSURE) - ppToDeduct++; - break; + if (GetBattlerSide(i) != GetBattlerSide(gBattlerAttacker) && IsBattlerAlive(i)) + ppToDeduct += (GetBattlerAbility(i) == ABILITY_PRESSURE); } } + else if (moveTarget != MOVE_TARGET_OPPONENTS_FIELD) + { + if (gBattlerAttacker != gBattlerTarget && GetBattlerAbility(gBattlerTarget) == ABILITY_PRESSURE) + ppToDeduct++; + } if (!(gHitMarker & (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING)) && gBattleMons[gBattlerAttacker].pp[gCurrMovePos]) { @@ -1931,10 +1909,9 @@ s32 CalcCritChanceStageArgs(u32 battlerAtk, u32 battlerDef, u32 move, bool32 rec + (holdEffectAtk == HOLD_EFFECT_SCOPE_LENS) + 2 * (holdEffectAtk == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[battlerAtk].species == SPECIES_CHANSEY) + 2 * BENEFITS_FROM_LEEK(battlerAtk, holdEffectAtk) - #if B_AFFECTION_MECHANICS == TRUE - + 2 * (GetBattlerFriendshipScore(battlerAtk) >= FRIENDSHIP_200_TO_254) - #endif - + (abilityAtk == ABILITY_SUPER_LUCK); + + 2 * (B_AFFECTION_MECHANICS == TRUE && GetBattlerAffectionHearts(battlerAtk) == AFFECTION_FIVE_HEARTS) + + (abilityAtk == ABILITY_SUPER_LUCK) + + gBattleStruct->bonusCritStages[gBattlerAttacker]; // Record ability only if move had at least +3 chance to get a crit if (critChance >= 3 && recordAbility && (abilityDef == ABILITY_BATTLE_ARMOR || abilityDef == ABILITY_SHELL_ARMOR)) @@ -2019,7 +1996,7 @@ static void Cmd_adjustdamage(void) u8 holdEffect, param; u32 moveType; - u32 friendshipScore = GetBattlerFriendshipScore(gBattlerTarget); + u32 affectionScore = GetBattlerAffectionHearts(gBattlerTarget); u32 rand = Random() % 100; GET_MOVE_TYPE(gCurrentMove, moveType); @@ -2027,7 +2004,10 @@ static void Cmd_adjustdamage(void) if (DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove)) goto END; if (DoesDisguiseBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove)) + { + gBattleStruct->enduredDamage |= gBitTable[gBattlerTarget]; goto END; + } if (gBattleMons[gBattlerTarget].hp > gBattleMoveDamage) goto END; @@ -2041,41 +2021,35 @@ static void Cmd_adjustdamage(void) RecordItemEffectBattle(gBattlerTarget, holdEffect); gSpecialStatuses[gBattlerTarget].focusBanded = TRUE; } - #if B_STURDY >= GEN_5 - else if (GetBattlerAbility(gBattlerTarget) == ABILITY_STURDY && BATTLER_MAX_HP(gBattlerTarget)) + else if (B_STURDY >= GEN_5 && GetBattlerAbility(gBattlerTarget) == ABILITY_STURDY && BATTLER_MAX_HP(gBattlerTarget)) { RecordAbilityBattle(gBattlerTarget, ABILITY_STURDY); gSpecialStatuses[gBattlerTarget].sturdied = TRUE; } - #endif else if (holdEffect == HOLD_EFFECT_FOCUS_SASH && BATTLER_MAX_HP(gBattlerTarget)) { RecordItemEffectBattle(gBattlerTarget, holdEffect); gSpecialStatuses[gBattlerTarget].focusSashed = TRUE; } -#if B_AFFECTION_MECHANICS == TRUE - else if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER && friendshipScore >= FRIENDSHIP_100_TO_149) + else if (B_AFFECTION_MECHANICS == TRUE && GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER && affectionScore >= AFFECTION_THREE_HEARTS) { - if ((friendshipScore == FRIENDSHIP_MAX && rand < 25) - || (friendshipScore == FRIENDSHIP_200_TO_254 && rand < 20) - || (friendshipScore == FRIENDSHIP_150_TO_199 && rand < 15) - || (friendshipScore == FRIENDSHIP_100_TO_149 && rand < 10)) + if ((affectionScore == AFFECTION_FIVE_HEARTS && rand < 20) + || (affectionScore == AFFECTION_FOUR_HEARTS && rand < 15) + || (affectionScore == AFFECTION_THREE_HEARTS && rand < 10)) gSpecialStatuses[gBattlerTarget].affectionEndured = TRUE; } -#endif if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBattlerTarget].endured && !gSpecialStatuses[gBattlerTarget].focusBanded && !gSpecialStatuses[gBattlerTarget].focusSashed -#if B_AFFECTION_MECHANICS == TRUE - && !gSpecialStatuses[gBattlerTarget].affectionEndured -#endif + && (B_AFFECTION_MECHANICS == FALSE || !gSpecialStatuses[gBattlerTarget].affectionEndured) && !gSpecialStatuses[gBattlerTarget].sturdied) goto END; // Handle reducing the dmg to 1 hp. gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1; + gBattleStruct->enduredDamage |= gBitTable[gBattlerTarget]; if (gProtectStructs[gBattlerTarget].endured) { @@ -2091,12 +2065,10 @@ static void Cmd_adjustdamage(void) gMoveResultFlags |= MOVE_RESULT_STURDIED; gLastUsedAbility = ABILITY_STURDY; } -#if B_AFFECTION_MECHANICS == TRUE - else if (gSpecialStatuses[gBattlerTarget].affectionEndured) + else if (B_AFFECTION_MECHANICS == TRUE && gSpecialStatuses[gBattlerTarget].affectionEndured) { gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED_AFFECTION; } -#endif END: gBattlescriptCurrInstr = cmd->nextInstr; @@ -2115,7 +2087,9 @@ END: } if (gSpecialStatuses[gBattlerAttacker].gemBoost && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && gBattleMons[gBattlerAttacker].item) + && gBattleMons[gBattlerAttacker].item + && gBattleMoves[gCurrentMove].effect != EFFECT_PLEDGE + && gCurrentMove != MOVE_STRUGGLE) { BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_GemActivates; @@ -2190,7 +2164,7 @@ static void Cmd_attackanimation(void) if (gBattleControllerExecFlags) return; - if ((gHitMarker & HITMARKER_NO_ANIMATIONS) + if ((gHitMarker & (HITMARKER_NO_ANIMATIONS | HITMARKER_DISABLE_ANIMATION)) && gCurrentMove != MOVE_TRANSFORM && gCurrentMove != MOVE_SUBSTITUTE // In a wild double battle gotta use the teleport animation if two wild pokemon are alive. @@ -2285,22 +2259,16 @@ static void Cmd_healthbarupdate(void) gBattlescriptCurrInstr = cmd->nextInstr; } +// Update the active battler's HP and various HP trackers (Substitute, Bide, etc.) static void Cmd_datahpupdate(void) { CMD_ARGS(u8 battler); - u32 battler, moveType; + u32 battler; if (gBattleControllerExecFlags) return; - if (gBattleStruct->dynamicMoveType == 0) - moveType = gBattleMoves[gCurrentMove].type; - else if (!(gBattleStruct->dynamicMoveType & F_DYNAMIC_TYPE_1)) - moveType = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK; - else - moveType = gBattleMoves[gCurrentMove].type; - if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) || (gHitMarker & HITMARKER_PASSIVE_DAMAGE)) { battler = GetBattlerForBattleScript(cmd->battler); @@ -2308,15 +2276,15 @@ static void Cmd_datahpupdate(void) { if (gDisableStructs[battler].substituteHP >= gBattleMoveDamage) { - if (gSpecialStatuses[battler].dmg == 0) - gSpecialStatuses[battler].dmg = gBattleMoveDamage; + if (gSpecialStatuses[battler].shellBellDmg == 0) + gSpecialStatuses[battler].shellBellDmg = gBattleMoveDamage; gDisableStructs[battler].substituteHP -= gBattleMoveDamage; gHpDealt = gBattleMoveDamage; } else { - if (gSpecialStatuses[battler].dmg == 0) - gSpecialStatuses[battler].dmg = gDisableStructs[battler].substituteHP; + if (gSpecialStatuses[battler].shellBellDmg == 0) + gSpecialStatuses[battler].shellBellDmg = gDisableStructs[battler].substituteHP; gHpDealt = gDisableStructs[battler].substituteHP; gDisableStructs[battler].substituteHP = 0; } @@ -2339,28 +2307,29 @@ static void Cmd_datahpupdate(void) else { gHitMarker &= ~HITMARKER_IGNORE_SUBSTITUTE; - if (gBattleMoveDamage < 0) // hp goes up + if (gBattleMoveDamage < 0) { - gBattleMons[battler].hp -= gBattleMoveDamage; + // Negative damage is HP gain + gBattleMons[battler].hp += -gBattleMoveDamage; if (gBattleMons[battler].hp > gBattleMons[battler].maxHP) gBattleMons[battler].hp = gBattleMons[battler].maxHP; - } - else // hp goes down + else { - if (gHitMarker & HITMARKER_SKIP_DMG_TRACK) + if (gHitMarker & HITMARKER_IGNORE_BIDE) { - gHitMarker &= ~HITMARKER_SKIP_DMG_TRACK; + gHitMarker &= ~HITMARKER_IGNORE_BIDE; } else { - gTakenDmg[battler] += gBattleMoveDamage; + gBideDmg[battler] += gBattleMoveDamage; if (cmd->battler == BS_TARGET) - gTakenDmgByBattler[battler] = gBattlerAttacker; + gBideTarget[battler] = gBattlerAttacker; else - gTakenDmgByBattler[battler] = gBattlerTarget; + gBideTarget[battler] = gBattlerTarget; } + // Deal damage to the battler if (gBattleMons[battler].hp > gBattleMoveDamage) { gBattleMons[battler].hp -= gBattleMoveDamage; @@ -2372,9 +2341,13 @@ static void Cmd_datahpupdate(void) gBattleMons[battler].hp = 0; } - if (!gSpecialStatuses[battler].dmg && !(gHitMarker & HITMARKER_PASSIVE_DAMAGE)) - gSpecialStatuses[battler].dmg = gHpDealt; + // Record damage for Shell Bell + if (gSpecialStatuses[battler].shellBellDmg == 0 && !(gHitMarker & HITMARKER_PASSIVE_DAMAGE)) + gSpecialStatuses[battler].shellBellDmg = gHpDealt; + // Note: While physicalDmg/specialDmg below are only distinguished between for Counter/Mirror Coat, they are + // used in combination as general damage trackers for other purposes. specialDmg is additionally used + // to help determine if a fire move should defrost the target. if (IS_MOVE_PHYSICAL(gCurrentMove) && !(gHitMarker & HITMARKER_PASSIVE_DAMAGE) && gBattleMoves[gCurrentMove].effect != EFFECT_PAIN_SPLIT) { gProtectStructs[battler].physicalDmg = gHpDealt; @@ -2392,6 +2365,7 @@ static void Cmd_datahpupdate(void) } else if (!IS_MOVE_PHYSICAL(gCurrentMove) && !(gHitMarker & HITMARKER_PASSIVE_DAMAGE) && gBattleMoves[gCurrentMove].effect != EFFECT_PAIN_SPLIT) { + // Record special damage/attacker for Mirror Coat gProtectStructs[battler].specialDmg = gHpDealt; gSpecialStatuses[battler].specialDmg = gHpDealt; if (cmd->battler == BS_TARGET) @@ -2407,15 +2381,18 @@ static void Cmd_datahpupdate(void) } } gHitMarker &= ~HITMARKER_PASSIVE_DAMAGE; + + // Send updated HP BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_HP_BATTLE, 0, sizeof(gBattleMons[battler].hp), &gBattleMons[battler].hp); MarkBattlerForControllerExec(battler); } } else { + // MOVE_RESULT_NO_EFFECT was set battler = GetBattlerForBattleScript(cmd->battler); - if (gSpecialStatuses[battler].dmg == 0) - gSpecialStatuses[battler].dmg = 0xFFFF; + if (gSpecialStatuses[battler].shellBellDmg == 0) + gSpecialStatuses[battler].shellBellDmg = IGNORE_SHELL_BELL; } gBattlescriptCurrInstr = cmd->nextInstr; } @@ -2585,8 +2562,7 @@ static void Cmd_resultmessage(void) { stringId = STRINGID_BUTITFAILED; } - #if B_AFFECTION_MECHANICS == TRUE - else if (gMoveResultFlags & MOVE_RESULT_FOE_ENDURED_AFFECTION) + else if (B_AFFECTION_MECHANICS == TRUE && (gMoveResultFlags & MOVE_RESULT_FOE_ENDURED_AFFECTION)) { gSpecialStatuses[gBattlerTarget].affectionEndured = FALSE; gMoveResultFlags &= ~MOVE_RESULT_FOE_ENDURED_AFFECTION; @@ -2594,7 +2570,6 @@ static void Cmd_resultmessage(void) gBattlescriptCurrInstr = BattleScript_AffectionBasedEndurance; return; } - #endif else { gBattleCommunication[MSG_DISPLAY] = 0; @@ -2756,7 +2731,7 @@ void StealTargetItem(u8 battlerStealer, u8 battlerItem) void SetMoveEffect(bool32 primary, u32 certain) { - s32 i, byTwo, affectsUser = 0; + s32 i, affectsUser = 0; bool32 statusChanged = FALSE; bool32 mirrorArmorReflected = (GetBattlerAbility(gBattlerTarget) == ABILITY_MIRROR_ARMOR); u32 flags = 0; @@ -2809,7 +2784,7 @@ void SetMoveEffect(bool32 primary, u32 certain) if ((battlerAbility == ABILITY_SHIELD_DUST || GetBattlerHoldEffect(gEffectBattler, TRUE) == HOLD_EFFECT_COVERT_CLOAK) - && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + && !(gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) && !primary && (gBattleScripting.moveEffect <= MOVE_EFFECT_TRI_ATTACK || gBattleScripting.moveEffect >= MOVE_EFFECT_SMACK_DOWN)) // Exclude stat lowering effects { @@ -2820,7 +2795,7 @@ void SetMoveEffect(bool32 primary, u32 certain) INCREMENT_RESET_RETURN } - if (gSideStatuses[GetBattlerSide(gEffectBattler)] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + if (gSideStatuses[GetBattlerSide(gEffectBattler)] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) && !primary && gBattleScripting.moveEffect <= MOVE_EFFECT_CONFUSION) INCREMENT_RESET_RETURN @@ -2835,6 +2810,7 @@ void SetMoveEffect(bool32 primary, u32 certain) if (gBattleScripting.moveEffect <= PRIMARY_STATUS_MOVE_EFFECT) // status change { + const u8 *cancelMultiTurnMovesResult = NULL; switch (sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]) { case STATUS1_SLEEP: @@ -2854,7 +2830,9 @@ void SetMoveEffect(bool32 primary, u32 certain) if (!CanSleep(gEffectBattler)) break; - CancelMultiTurnMoves(gEffectBattler); + cancelMultiTurnMovesResult = CancelMultiTurnMoves(gEffectBattler); + if (cancelMultiTurnMovesResult) + gBattlescriptCurrInstr = cancelMultiTurnMovesResult; statusChanged = TRUE; break; case STATUS1_POISON: @@ -2867,10 +2845,10 @@ void SetMoveEffect(bool32 primary, u32 certain) BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_PSNPrevention; - if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + if (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) { gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS; - gHitMarker &= ~HITMARKER_IGNORE_SAFEGUARD; + gHitMarker &= ~HITMARKER_STATUS_ABILITY_EFFECT; } else { @@ -2879,7 +2857,7 @@ void SetMoveEffect(bool32 primary, u32 certain) RESET_RETURN } if (!CanPoisonType(gBattleScripting.battler, gEffectBattler) - && (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + && (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) { BattleScriptPush(gBattlescriptCurrInstr + 1); @@ -2905,10 +2883,10 @@ void SetMoveEffect(bool32 primary, u32 certain) BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_BRNPrevention; - if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + if (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) { gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS; - gHitMarker &= ~HITMARKER_IGNORE_SAFEGUARD; + gHitMarker &= ~HITMARKER_STATUS_ABILITY_EFFECT; } else { @@ -2917,7 +2895,7 @@ void SetMoveEffect(bool32 primary, u32 certain) RESET_RETURN } if (IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_FIRE) - && (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + && (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) { BattleScriptPush(gBattlescriptCurrInstr + 1); @@ -2936,7 +2914,9 @@ void SetMoveEffect(bool32 primary, u32 certain) if (!CanBeFrozen(gEffectBattler)) break; - CancelMultiTurnMoves(gEffectBattler); + cancelMultiTurnMovesResult = CancelMultiTurnMoves(gEffectBattler); + if (cancelMultiTurnMovesResult) + gBattlescriptCurrInstr = cancelMultiTurnMovesResult; statusChanged = TRUE; break; case STATUS1_PARALYSIS: @@ -2950,10 +2930,10 @@ void SetMoveEffect(bool32 primary, u32 certain) BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_PRLZPrevention; - if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + if (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) { gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS; - gHitMarker &= ~HITMARKER_IGNORE_SAFEGUARD; + gHitMarker &= ~HITMARKER_STATUS_ABILITY_EFFECT; } else { @@ -2965,7 +2945,7 @@ void SetMoveEffect(bool32 primary, u32 certain) break; } if (!CanParalyzeType(gBattleScripting.battler, gEffectBattler) - && (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + && (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) { BattleScriptPush(gBattlescriptCurrInstr + 1); @@ -2991,10 +2971,10 @@ void SetMoveEffect(bool32 primary, u32 certain) BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_PSNPrevention; - if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + if (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) { gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS; - gHitMarker &= ~HITMARKER_IGNORE_SAFEGUARD; + gHitMarker &= ~HITMARKER_STATUS_ABILITY_EFFECT; } else { @@ -3003,7 +2983,7 @@ void SetMoveEffect(bool32 primary, u32 certain) RESET_RETURN } if (!CanPoisonType(gBattleScripting.battler, gEffectBattler) - && (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + && (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) { BattleScriptPush(gBattlescriptCurrInstr + 1); @@ -3039,23 +3019,26 @@ void SetMoveEffect(bool32 primary, u32 certain) BattleScriptPush(gBattlescriptCurrInstr + 1); if (sStatusFlagsForMoveEffects[gBattleScripting.moveEffect] == STATUS1_SLEEP) - #if B_SLEEP_TURNS >= GEN_5 - gBattleMons[gEffectBattler].status1 |= STATUS1_SLEEP_TURN(1 + RandomUniform(RNG_SLEEP_TURNS, 1, 3)); - #else - gBattleMons[gEffectBattler].status1 |= STATUS1_SLEEP_TURN(1 + RandomUniform(RNG_SLEEP_TURNS, 2, 5)); - #endif + { + if (B_SLEEP_TURNS >= GEN_5) + gBattleMons[gEffectBattler].status1 |= STATUS1_SLEEP_TURN(1 + RandomUniform(RNG_SLEEP_TURNS, 1, 3)); + else + gBattleMons[gEffectBattler].status1 |= STATUS1_SLEEP_TURN(1 + RandomUniform(RNG_SLEEP_TURNS, 2, 5)); + } else + { gBattleMons[gEffectBattler].status1 |= sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]; + } gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleScripting.moveEffect]; BtlController_EmitSetMonData(gEffectBattler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gEffectBattler].status1), &gBattleMons[gEffectBattler].status1); MarkBattlerForControllerExec(gEffectBattler); - if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) + if (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) { gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUSED_BY_ABILITY; - gHitMarker &= ~HITMARKER_IGNORE_SAFEGUARD; + gHitMarker &= ~HITMARKER_STATUS_ABILITY_EFFECT; } else { @@ -3118,37 +3101,27 @@ void SetMoveEffect(bool32 primary, u32 certain) } break; case MOVE_EFFECT_FLINCH: - if (battlerAbility == ABILITY_INNER_FOCUS) + if (battlerAbility == ABILITY_INNER_FOCUS + && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) { - if (primary == TRUE || certain == MOVE_EFFECT_CERTAIN) - { - gLastUsedAbility = ABILITY_INNER_FOCUS; - gBattlerAbility = gEffectBattler; - RecordAbilityBattle(gEffectBattler, ABILITY_INNER_FOCUS); - gBattlescriptCurrInstr = BattleScript_FlinchPrevention; - } - else - { - gBattlescriptCurrInstr++; - } + gLastUsedAbility = ABILITY_INNER_FOCUS; + gBattlerAbility = gEffectBattler; + RecordAbilityBattle(gEffectBattler, ABILITY_INNER_FOCUS); + gBattlescriptCurrInstr = BattleScript_FlinchPrevention; } - else + else if (GetBattlerTurnOrderNum(gEffectBattler) > gCurrentTurnActionNumber + && !IsDynamaxed(gEffectBattler)) { - if (GetBattlerTurnOrderNum(gEffectBattler) > gCurrentTurnActionNumber) - gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]; - gBattlescriptCurrInstr++; + gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]; } + gBattlescriptCurrInstr++; break; case MOVE_EFFECT_UPROAR: if (!(gBattleMons[gEffectBattler].status2 & STATUS2_UPROAR)) { gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS; gLockedMoves[gEffectBattler] = gCurrentMove; - #if B_UPROAR_TURNS >= GEN_5 - gBattleMons[gEffectBattler].status2 |= STATUS2_UPROAR_TURN(3); - #else - gBattleMons[gEffectBattler].status2 |= STATUS2_UPROAR_TURN((Random() & 3) + 2); - #endif + gBattleMons[gEffectBattler].status2 |= STATUS2_UPROAR_TURN(B_UPROAR_TURNS >= GEN_5 ? 3 : (Random() & 3) + 2); BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleScripting.moveEffect]; @@ -3190,11 +3163,12 @@ void SetMoveEffect(bool32 primary, u32 certain) } else { - #if B_USE_FROSTBITE == TRUE - static const u8 sTriAttackEffects[] = { MOVE_EFFECT_BURN, MOVE_EFFECT_FROSTBITE, MOVE_EFFECT_PARALYSIS }; - #else - static const u8 sTriAttackEffects[] = { MOVE_EFFECT_BURN, MOVE_EFFECT_FREEZE, MOVE_EFFECT_PARALYSIS }; - #endif + static const u8 sTriAttackEffects[] = + { + MOVE_EFFECT_BURN, + B_USE_FROSTBITE == TRUE ? MOVE_EFFECT_FROSTBITE : MOVE_EFFECT_FREEZE, + MOVE_EFFECT_PARALYSIS + }; gBattleScripting.moveEffect = RandomElement(RNG_TRI_ATTACK, sTriAttackEffects); SetMoveEffect(FALSE, 0); } @@ -3214,15 +3188,9 @@ void SetMoveEffect(bool32 primary, u32 certain) { gBattleMons[gEffectBattler].status2 |= STATUS2_WRAPPED; if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_GRIP_CLAW) - #if B_BINDING_TURNS >= GEN_5 - gDisableStructs[gEffectBattler].wrapTurns = 7; + gDisableStructs[gEffectBattler].wrapTurns = B_BINDING_TURNS >= GEN_5 ? 7 : 5; else - gDisableStructs[gEffectBattler].wrapTurns = (Random() % 2) + 4; - #else - gDisableStructs[gEffectBattler].wrapTurns = 5; - else - gDisableStructs[gEffectBattler].wrapTurns = (Random() % 4) + 2; - #endif + gDisableStructs[gEffectBattler].wrapTurns = B_BINDING_TURNS >= GEN_5 ? (Random() % 2) + 4 : (Random() % 4) + 2; gBattleStruct->wrappedMove[gEffectBattler] = gCurrentMove; gBattleStruct->wrappedBy[gEffectBattler] = gBattlerAttacker; @@ -3514,6 +3482,8 @@ void SetMoveEffect(bool32 primary, u32 certain) { if (gBattleMons[gBattlerTarget].statStages[i] > DEFAULT_STAT_STAGE && gBattleMons[gBattlerAttacker].statStages[i] != MAX_STAT_STAGE) { + bool32 byTwo = FALSE; + gBattleStruct->stolenStats[0] |= gBitTable[i]; // Store by how many stages to raise the stat. gBattleStruct->stolenStats[i] = gBattleMons[gBattlerTarget].statStages[i] - DEFAULT_STAT_STAGE; @@ -3569,10 +3539,7 @@ void SetMoveEffect(bool32 primary, u32 certain) break; case MOVE_EFFECT_INCINERATE: if ((gBattleMons[gEffectBattler].item >= FIRST_BERRY_INDEX && gBattleMons[gEffectBattler].item <= LAST_BERRY_INDEX) - #if B_INCINERATE_GEMS >= GEN_6 - || (GetBattlerHoldEffect(gEffectBattler, FALSE) == HOLD_EFFECT_GEMS) - #endif - ) + || (B_INCINERATE_GEMS >= GEN_6 && GetBattlerHoldEffect(gEffectBattler, FALSE) == HOLD_EFFECT_GEMS)) { gLastUsedItem = gBattleMons[gEffectBattler].item; gBattleMons[gEffectBattler].item = 0; @@ -3599,21 +3566,6 @@ void SetMoveEffect(bool32 primary, u32 certain) gBattlescriptCurrInstr = BattleScript_MoveEffectBugBite; } break; - case MOVE_EFFECT_RELIC_SONG: - if (GetBattlerAbility(gBattlerAttacker) != ABILITY_SHEER_FORCE && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED)) - { - if (gBattleMons[gBattlerAttacker].species == SPECIES_MELOETTA) - { - gBattleMons[gBattlerAttacker].species = SPECIES_MELOETTA_PIROUETTE; - BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeMoveEffect); - } - else if (gBattleMons[gBattlerAttacker].species == SPECIES_MELOETTA_PIROUETTE) - { - gBattleMons[gBattlerAttacker].species = SPECIES_MELOETTA; - BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeMoveEffect); - } - } - break; case MOVE_EFFECT_TRAP_BOTH: if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_ESCAPE_PREVENTION) && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_ESCAPE_PREVENTION)) { @@ -3664,13 +3616,17 @@ void SetMoveEffect(bool32 primary, u32 certain) { gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SPIKESSCATTERED; BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_SpikesActivates; + + if (gBattleStruct->isSkyBattle) + gBattlescriptCurrInstr++; + else + gBattlescriptCurrInstr = BattleScript_SpikesActivates; } break; case MOVE_EFFECT_TRIPLE_ARROWS: { - u8 randomLowerDefenseChance = RandomPercentage(RNG_TRIPLE_ARROWS_DEFENSE_DOWN, CalcSecondaryEffectChance(gBattlerAttacker, 50)); - u8 randomFlinchChance = RandomPercentage(RNG_TRIPLE_ARROWS_FLINCH, CalcSecondaryEffectChance(gBattlerAttacker, 30)); + u8 randomLowerDefenseChance = RandomPercentage(RNG_TRIPLE_ARROWS_DEFENSE_DOWN, CalcSecondaryEffectChance(gBattlerAttacker, 50, EFFECT_DEFENSE_DOWN_HIT)); + u8 randomFlinchChance = RandomPercentage(RNG_TRIPLE_ARROWS_FLINCH, CalcSecondaryEffectChance(gBattlerAttacker, 30, EFFECT_FLINCH_HIT)); if (randomFlinchChance && battlerAbility != ABILITY_INNER_FOCUS && GetBattlerTurnOrderNum(gEffectBattler) > gCurrentTurnActionNumber) gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[MOVE_EFFECT_FLINCH]; @@ -3685,6 +3641,19 @@ void SetMoveEffect(bool32 primary, u32 certain) gBattlescriptCurrInstr++; } } + + break; + case MOVE_EFFECT_SYRUP_BOMB: + if (!(gStatuses4[gEffectBattler] & STATUS4_SYRUP_BOMB)) + { + struct Pokemon *party = GetBattlerParty(gBattlerAttacker); + + gStatuses4[gEffectBattler] |= STATUS4_SYRUP_BOMB; + gDisableStructs[gEffectBattler].syrupBombTimer = 3; + gDisableStructs[gEffectBattler].syrupBombIsShiny = IsMonShiny(&party[gBattlerPartyIndexes[gBattlerAttacker]]); + BattleScriptPush(gBattlescriptCurrInstr + 1); + gBattlescriptCurrInstr = BattleScript_SyrupBombActivates; + } break; } } @@ -3697,7 +3666,7 @@ static void Cmd_seteffectwithchance(void) { CMD_ARGS(); - u32 percentChance = CalcSecondaryEffectChance(gBattlerAttacker, gBattleMoves[gCurrentMove].secondaryEffectChance); + u32 percentChance = CalcSecondaryEffectChance(gBattlerAttacker, gBattleMoves[gCurrentMove].secondaryEffectChance, gBattleMoves[gCurrentMove].effect); if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && gBattleScripting.moveEffect) @@ -3808,7 +3777,8 @@ static void Cmd_tryfaintmon(void) gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL); gSideTimers[B_SIDE_OPPONENT].retaliateTimer = 2; } - if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBattlerAttacker].hp != 0) + if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBattlerAttacker].hp != 0 + && !IsDynamaxed(gBattlerAttacker)) { gHitMarker &= ~HITMARKER_DESTINYBOND; BattleScriptPush(gBattlescriptCurrInstr); @@ -3859,7 +3829,7 @@ static void Cmd_cleareffectsonfaint(void) if (gBattleControllerExecFlags == 0) { u32 battler = GetBattlerForBattleScript(cmd->battler); - + const u8 *clearDataResult = NULL; if (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || gBattleMons[battler].hp == 0) { gBattleMons[battler].status1 = 0; @@ -3867,8 +3837,11 @@ static void Cmd_cleareffectsonfaint(void) MarkBattlerForControllerExec(battler); } - FaintClearSetData(battler); // Effects like attractions, trapping, etc. - gBattlescriptCurrInstr = cmd->nextInstr; + clearDataResult = FaintClearSetData(battler); // Effects like attractions, trapping, etc. + if (clearDataResult) + gBattlescriptCurrInstr = clearDataResult; + else + gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -4025,6 +3998,23 @@ static void Cmd_jumpbasedontype(void) FEATURE_FLAG_ASSERT(I_EXP_SHARE_FLAG, YouNeedToSetTheExpShareFlagToAnUnusedFlag); +static bool32 BattleTypeAllowsExp(void) +{ + if (RECORDED_WILD_BATTLE) + return TRUE; + else if (gBattleTypeFlags & + ( BATTLE_TYPE_LINK + | BATTLE_TYPE_RECORDED_LINK + | BATTLE_TYPE_TRAINER_HILL + | BATTLE_TYPE_FRONTIER + | BATTLE_TYPE_SAFARI + | BATTLE_TYPE_BATTLE_TOWER + | BATTLE_TYPE_EREADER_TRAINER)) + return FALSE; + else + return TRUE; +} + static u32 GetMonHoldEffect(struct Pokemon *mon) { u32 holdEffect; @@ -4053,14 +4043,7 @@ static void Cmd_getexp(void) case 0: // check if should receive exp at all if (GetBattlerSide(gBattlerFainted) != B_SIDE_OPPONENT || IsAiVsAiBattle() - || (gBattleTypeFlags & - (BATTLE_TYPE_LINK - | BATTLE_TYPE_RECORDED_LINK - | BATTLE_TYPE_TRAINER_HILL - | BATTLE_TYPE_FRONTIER - | BATTLE_TYPE_SAFARI - | BATTLE_TYPE_BATTLE_TOWER - | BATTLE_TYPE_EREADER_TRAINER))) + || !BattleTypeAllowsExp()) { gBattleScripting.getexpState = 6; // goto last case } @@ -4108,16 +4091,17 @@ static void Cmd_getexp(void) if (orderId < PARTY_SIZE) gBattleStruct->expGettersOrder[orderId] = PARTY_SIZE; - #if (B_SCALED_EXP >= GEN_5) && (B_SCALED_EXP != GEN_6) - calculatedExp = gSpeciesInfo[gBattleMons[gBattlerFainted].species].expYield * gBattleMons[gBattlerFainted].level / 5; - #else - calculatedExp = gSpeciesInfo[gBattleMons[gBattlerFainted].species].expYield * gBattleMons[gBattlerFainted].level / 7; - #endif + calculatedExp = gSpeciesInfo[gBattleMons[gBattlerFainted].species].expYield * gBattleMons[gBattlerFainted].level; + if (B_SCALED_EXP >= GEN_5 && B_SCALED_EXP != GEN_6) + calculatedExp /= 5; + else + calculatedExp /= 7; if (B_TRAINER_EXP_MULTIPLIER <= GEN_7 && gBattleTypeFlags & BATTLE_TYPE_TRAINER) calculatedExp = (calculatedExp * 150) / 100; - #if B_SPLIT_EXP < GEN_6 + if (B_SPLIT_EXP < GEN_6) + { if (viaExpShare) // at least one mon is getting exp via exp share { *exp = SAFE_DIV(calculatedExp / 2, viaSentIn); @@ -4135,12 +4119,14 @@ static void Cmd_getexp(void) *exp = 1; gBattleStruct->expShareExpValue = 0; } - #else + } + else + { *exp = calculatedExp; gBattleStruct->expShareExpValue = calculatedExp / 2; if (gBattleStruct->expShareExpValue == 0) gBattleStruct->expShareExpValue = 1; - #endif + } gBattleScripting.getexpState++; gBattleStruct->expOrderId = 0; @@ -4165,9 +4151,8 @@ static void Cmd_getexp(void) { gBattleScripting.getexpState = 5; gBattleMoveDamage = 0; // used for exp - #if B_MAX_LEVEL_EV_GAINS >= GEN_5 - MonGainEVs(&gPlayerParty[*expMonId], gBattleMons[gBattlerFainted].species); - #endif + if (B_MAX_LEVEL_EV_GAINS >= GEN_5) + MonGainEVs(&gPlayerParty[*expMonId], gBattleMons[gBattlerFainted].species); } else { @@ -4191,11 +4176,7 @@ static void Cmd_getexp(void) gBattleMoveDamage = 0; if ((holdEffect == HOLD_EFFECT_EXP_SHARE || IsGen6ExpShareEnabled()) -#if B_SPLIT_EXP >= GEN_6 - // only give exp share bonus in later gens if the mon wasn't sent out - && gBattleMoveDamage == 0 -#endif - ) + && (B_SPLIT_EXP < GEN_6 || gBattleMoveDamage == 0)) // only give exp share bonus in later gens if the mon wasn't sent out { gBattleMoveDamage += gBattleStruct->expShareExpValue; } @@ -4348,7 +4329,6 @@ static void Cmd_getexp(void) } } -#if B_MULTI_BATTLE_WHITEOUT >= GEN_4 static bool32 NoAliveMonsForPlayerAndPartner(void) { u32 i; @@ -4368,9 +4348,8 @@ static bool32 NoAliveMonsForPlayerAndPartner(void) return (HP_count == 0); } -#endif -static bool32 NoAliveMonsForPlayer(void) +bool32 NoAliveMonsForPlayer(void) { u32 i; u32 HP_count = 0; @@ -4433,8 +4412,7 @@ static void Cmd_checkteamslost(void) if (gBattleControllerExecFlags) return; -#if B_MULTI_BATTLE_WHITEOUT >= GEN_4 - if (gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_INGAME_PARTNER)) + if (B_MULTI_BATTLE_WHITEOUT >= GEN_4 && gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_INGAME_PARTNER)) { if (NoAliveMonsForPlayerAndPartner()) gBattleOutcome |= B_OUTCOME_LOST; @@ -4444,10 +4422,6 @@ static void Cmd_checkteamslost(void) if (NoAliveMonsForPlayer()) gBattleOutcome |= B_OUTCOME_LOST; } -#else - if (NoAliveMonsForPlayer()) - gBattleOutcome |= B_OUTCOME_LOST; -#endif if (NoAliveMonsForOpponent()) gBattleOutcome |= B_OUTCOME_WON; @@ -4941,14 +4915,12 @@ static void Cmd_endselectionscript(void) static void PlayAnimation(u32 battler, u8 animId, const u16 *argPtr, const u8 *nextInstr) { -#if B_TERRAIN_BG_CHANGE == FALSE - if (animId == B_ANIM_RESTORE_BG) + if (B_TERRAIN_BG_CHANGE == FALSE && animId == B_ANIM_RESTORE_BG) { // workaround for .if not working gBattlescriptCurrInstr = nextInstr; return; } -#endif if (animId == B_ANIM_STATS_CHANGE || animId == B_ANIM_SNATCH_MOVE @@ -4959,11 +4931,11 @@ static void PlayAnimation(u32 battler, u8 animId, const u16 *argPtr, const u8 *n || animId == B_ANIM_PRIMAL_REVERSION || animId == B_ANIM_ULTRA_BURST) { - BtlController_EmitBattleAnimation(battler, BUFFER_A, animId, *argPtr); + BtlController_EmitBattleAnimation(battler, BUFFER_A, animId, &gDisableStructs[battler], *argPtr); MarkBattlerForControllerExec(battler); gBattlescriptCurrInstr = nextInstr; } - else if (gHitMarker & HITMARKER_NO_ANIMATIONS && animId != B_ANIM_RESTORE_BG) + else if (gHitMarker & (HITMARKER_NO_ANIMATIONS | HITMARKER_DISABLE_ANIMATION) && animId != B_ANIM_RESTORE_BG) { BattleScriptPush(nextInstr); gBattlescriptCurrInstr = BattleScript_Pausex20; @@ -4974,7 +4946,7 @@ static void PlayAnimation(u32 battler, u8 animId, const u16 *argPtr, const u8 *n || animId == B_ANIM_HAIL_CONTINUES || animId == B_ANIM_SNOW_CONTINUES) { - BtlController_EmitBattleAnimation(battler, BUFFER_A, animId, *argPtr); + BtlController_EmitBattleAnimation(battler, BUFFER_A, animId, &gDisableStructs[battler], *argPtr); MarkBattlerForControllerExec(battler); gBattlescriptCurrInstr = nextInstr; } @@ -4984,7 +4956,7 @@ static void PlayAnimation(u32 battler, u8 animId, const u16 *argPtr, const u8 *n } else { - BtlController_EmitBattleAnimation(battler, BUFFER_A, animId, *argPtr); + BtlController_EmitBattleAnimation(battler, BUFFER_A, animId, &gDisableStructs[battler], *argPtr); MarkBattlerForControllerExec(battler); gBattlescriptCurrInstr = nextInstr; } @@ -5060,9 +5032,15 @@ static void Cmd_playstatchangeanimation(void) // Handle Contrary and Simple if (ability == ABILITY_CONTRARY) + { flags ^= STAT_CHANGE_NEGATIVE; + RecordAbilityBattle(battler, ability); + } else if (ability == ABILITY_SIMPLE) + { flags |= STAT_CHANGE_BY_TWO; + RecordAbilityBattle(battler, ability); + } if (flags & STAT_CHANGE_NEGATIVE) // goes down { @@ -5089,6 +5067,7 @@ static void Cmd_playstatchangeanimation(void) && ability != ABILITY_FULL_METAL_BODY && ability != ABILITY_WHITE_SMOKE && !(ability == ABILITY_KEEN_EYE && currStat == STAT_ACC) + && !(B_ILLUMINATE_EFFECT >= GEN_9 && ability == ABILITY_ILLUMINATE && currStat == STAT_ACC) && !(ability == ABILITY_HYPER_CUTTER && currStat == STAT_ATK) && !(ability == ABILITY_BIG_PECKS && currStat == STAT_DEF)) { @@ -5142,7 +5121,7 @@ static void Cmd_playstatchangeanimation(void) } else if (changeableStatsCount != 0 && !gBattleScripting.statAnimPlayed) { - BtlController_EmitBattleAnimation(battler, BUFFER_A, B_ANIM_STATS_CHANGE, statAnimId); + BtlController_EmitBattleAnimation(battler, BUFFER_A, B_ANIM_STATS_CHANGE, &gDisableStructs[battler], statAnimId); MarkBattlerForControllerExec(battler); if (flags & STAT_CHANGE_MULTIPLE_STATS && changeableStatsCount > 1) gBattleScripting.statAnimPlayed = TRUE; @@ -5246,7 +5225,7 @@ static void Cmd_moveend(void) if (gProtectStructs[gBattlerTarget].spikyShielded && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SPIKY_SHIELD); @@ -5260,11 +5239,10 @@ static void Cmd_moveend(void) i = gBattlerAttacker; gBattlerAttacker = gBattlerTarget; gBattlerTarget = i; // gBattlerTarget and gBattlerAttacker are swapped in order to activate Defiant, if applicable - #if B_KINGS_SHIELD_LOWER_ATK >= GEN_8 - gBattleScripting.moveEffect = MOVE_EFFECT_ATK_MINUS_1; - #else - gBattleScripting.moveEffect = MOVE_EFFECT_ATK_MINUS_2; - #endif + if (B_KINGS_SHIELD_LOWER_ATK >= GEN_8) + gBattleScripting.moveEffect = MOVE_EFFECT_ATK_MINUS_1; + else + gBattleScripting.moveEffect = MOVE_EFFECT_ATK_MINUS_2; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_KingsShieldEffect; effect = 1; @@ -5338,10 +5316,7 @@ static void Cmd_moveend(void) && gBattleMons[gBattlerTarget].hp != 0 && gBattlerAttacker != gBattlerTarget && (moveType == TYPE_FIRE - #if B_BURN_HIT_THAW >= GEN_6 - || gBattleMoves[gCurrentMove].effect == EFFECT_BURN_HIT - #endif - ) + || (B_BURN_HIT_THAW >= GEN_6 && gBattleMoves[gCurrentMove].effect == EFFECT_BURN_HIT)) && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) { gBattleMons[gBattlerTarget].status1 &= ~STATUS1_FREEZE; @@ -5417,6 +5392,12 @@ static void Cmd_moveend(void) effect = TRUE; gBattleScripting.moveendState++; break; + case MOVEEND_OPPORTUNIST: + if (AbilityBattleEffects(ABILITYEFFECT_OPPORTUNIST, 0, 0, 0, 0)) + effect = TRUE; // it loops through all battlers, so we increment after its done with all battlers + else + gBattleScripting.moveendState++; + break; case MOVEEND_STATUS_IMMUNITY_ABILITIES: // status immunities if (AbilityBattleEffects(ABILITYEFFECT_IMMUNITY, 0, 0, 0, 0)) effect = TRUE; // it loops through all battlers, so we increment after its done with all battlers @@ -5536,7 +5517,7 @@ static void Cmd_moveend(void) break; case MOVEEND_ATTACKER_INVISIBLE: // make attacker sprite invisible if (gStatuses3[gBattlerAttacker] & (STATUS3_SEMI_INVULNERABLE) - && gHitMarker & HITMARKER_NO_ANIMATIONS) + && gHitMarker & (HITMARKER_NO_ANIMATIONS | HITMARKER_DISABLE_ANIMATION)) { BtlController_EmitSpriteInvisibility(gBattlerAttacker, BUFFER_A, TRUE); MarkBattlerForControllerExec(gBattlerAttacker); @@ -5571,6 +5552,16 @@ static void Cmd_moveend(void) } gBattleScripting.moveendState++; break; + case MOVEEND_NUM_HITS: + if (gBattlerAttacker != gBattlerTarget + && gBattleMoves[gCurrentMove].split != SPLIT_STATUS + && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && TARGET_TURN_DAMAGED) + { + gBattleStruct->timesGotHit[GetBattlerSide(gBattlerTarget)][gBattlerPartyIndexes[gBattlerTarget]]++; + } + gBattleScripting.moveendState++; + break; case MOVEEND_SUBSTITUTE: // update substitute for (i = 0; i < gBattlersCount; i++) { @@ -5642,6 +5633,8 @@ static void Cmd_moveend(void) { gLastPrintedMoves[gBattlerAttacker] = gChosenMove; gLastUsedMove = gCurrentMove; + if (IsMaxMove(gCurrentMove)) + gBattleStruct->dynamax.lastUsedBaseMove = gBattleStruct->dynamax.baseMove[gBattlerAttacker]; } } if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker]) @@ -5861,7 +5854,7 @@ static void Cmd_moveend(void) if (IsBattlerAlive(battler) && gBattlerAttacker != battler && GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_EJECT_BUTTON - && TARGET_TURN_DAMAGED + && BATTLER_TURN_DAMAGED(battler) && CountUsablePartyMons(battler) > 0) // Has mon to switch into { gBattleScripting.battler = battler; @@ -5896,7 +5889,7 @@ static void Cmd_moveend(void) && IsBattlerAlive(battler) && !DoesSubstituteBlockMove(gBattlerAttacker, battler, gCurrentMove) && GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_RED_CARD - && (gSpecialStatuses[battler].physicalDmg != 0 || gSpecialStatuses[battler].specialDmg != 0) + && BATTLER_TURN_DAMAGED(battler) && CanBattlerSwitch(gBattlerAttacker)) { gLastUsedItem = gBattleMons[battler].item; @@ -5960,7 +5953,7 @@ static void Cmd_moveend(void) // Attacker is mon who made contact, battler is mon with pickpocket if (battler != gBattlerAttacker // Cannot pickpocket yourself && GetBattlerAbility(battler) == ABILITY_PICKPOCKET // Target must have pickpocket ability - && BATTLER_DAMAGED(battler) // Target needs to have been damaged + && BATTLER_TURN_DAMAGED(battler) // Target needs to have been damaged && !DoesSubstituteBlockMove(gBattlerAttacker, battler, gCurrentMove) // Subsitute unaffected && IsBattlerAlive(battler) // Battler must be alive to pickpocket && gBattleMons[battler].item == ITEM_NONE // Pickpocketer can't have an item already @@ -6022,19 +6015,17 @@ static void Cmd_moveend(void) BattleScriptPushCursor(); if (gBattleTypeFlags & BATTLE_TYPE_TRAINER || GetBattlerSide(i) == B_SIDE_PLAYER) { - #if B_ABILITY_POP_UP == TRUE - gBattlescriptCurrInstr = BattleScript_EmergencyExit; - #else - gBattlescriptCurrInstr = BattleScript_EmergencyExitNoPopUp; - #endif + if (B_ABILITY_POP_UP == TRUE) + gBattlescriptCurrInstr = BattleScript_EmergencyExit; + else + gBattlescriptCurrInstr = BattleScript_EmergencyExitNoPopUp; } else { - #if B_ABILITY_POP_UP == TRUE - gBattlescriptCurrInstr = BattleScript_EmergencyExitWild; - #else - gBattlescriptCurrInstr = BattleScript_EmergencyExitWildNoPopUp; - #endif + if (B_ABILITY_POP_UP == TRUE) + gBattlescriptCurrInstr = BattleScript_EmergencyExitWild; + else + gBattlescriptCurrInstr = BattleScript_EmergencyExitWildNoPopUp; } return; } @@ -6045,10 +6036,8 @@ static void Cmd_moveend(void) for (i = 0; i < gBattlersCount; i++) { if ((gSpecialStatuses[i].berryReduced - #if B_SYMBIOSIS_GEMS >= GEN_7 - || gSpecialStatuses[i].gemBoost - #endif - ) && SYMBIOSIS_CHECK(i, BATTLE_PARTNER(i))) + || (B_SYMBIOSIS_GEMS >= GEN_7 && gSpecialStatuses[i].gemBoost)) + && SYMBIOSIS_CHECK(i, BATTLE_PARTNER(i))) { BestowItem(BATTLE_PARTNER(i), i); gLastUsedAbility = gBattleMons[BATTLE_PARTNER(i)].ability; @@ -6067,12 +6056,11 @@ static void Cmd_moveend(void) if (gSpecialStatuses[gBattlerAttacker].dancerOriginalTarget) *(gBattleStruct->moveTarget + gBattlerAttacker) = gSpecialStatuses[gBattlerAttacker].dancerOriginalTarget & 0x3; - #if B_RAMPAGE_CANCELLING >= GEN_5 - if (gBattleMoves[gCurrentMove].effect == EFFECT_RAMPAGE // If we're rampaging + if (B_RAMPAGE_CANCELLING >= GEN_5 + && gBattleMoves[gCurrentMove].effect == EFFECT_RAMPAGE // If we're rampaging && (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) // And it is unusable && (gBattleMons[gBattlerAttacker].status2 & STATUS2_LOCK_CONFUSE) != STATUS2_LOCK_CONFUSE_TURN(1)) // And won't end this turn CancelMultiTurnMoves(gBattlerAttacker); // Cancel it - #endif gBattleStruct->targetsDone[gBattlerAttacker] = 0; gProtectStructs[gBattlerAttacker].usesBouncedMove = FALSE; @@ -6091,6 +6079,7 @@ static void Cmd_moveend(void) gBattleStruct->zmove.effect = EFFECT_HIT; gBattleStruct->hitSwitchTargetFailed = FALSE; gBattleStruct->isAtkCancelerForCalledMove = FALSE; + gBattleStruct->enduredDamage = 0; gBattleScripting.moveendState++; break; case MOVEEND_COUNT: @@ -6858,7 +6847,7 @@ static void Cmd_switchineffects(void) && IsBattlerGrounded(battler)) { u8 spikesDmg = (5 - gSideTimers[GetBattlerSide(battler)].spikesAmount) * 2; - gBattleMoveDamage = gBattleMons[battler].maxHP / (spikesDmg); + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (spikesDmg); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -6922,6 +6911,17 @@ static void Cmd_switchineffects(void) BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_StickyWebOnSwitchIn; } + else if (!(gDisableStructs[battler].steelSurgeDone) + && (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_STEELSURGE) + && IsBattlerAffectedByHazards(battler, FALSE) + && GetBattlerAbility(battler) != ABILITY_MAGIC_GUARD) + { + gDisableStructs[battler].steelSurgeDone = TRUE; + gBattleMoveDamage = GetStealthHazardDamage(gBattleMoves[MOVE_G_MAX_STEELSURGE].type, battler); + + if (gBattleMoveDamage != 0) + SetDmgHazardsBattlescript(battler, B_MSG_SHARPSTEELDMG); + } else if (gBattleMons[battler].hp != gBattleMons[battler].maxHP && gBattleStruct->zmove.healReplacement) { gBattleStruct->zmove.healReplacement = FALSE; @@ -6953,12 +6953,15 @@ static void Cmd_switchineffects(void) { if (DoSwitchInAbilitiesItems(battler)) return; + else if (AbilityBattleEffects(ABILITYEFFECT_OPPORTUNIST, battler, 0, 0, 0)) + return; } gDisableStructs[battler].stickyWebDone = FALSE; gDisableStructs[battler].spikesDone = FALSE; gDisableStructs[battler].toxicSpikesDone = FALSE; gDisableStructs[battler].stealthRockDone = FALSE; + gDisableStructs[battler].steelSurgeDone = FALSE; for (i = 0; i < gBattlersCount; i++) { @@ -7061,7 +7064,7 @@ static void Cmd_handlelearnnewmove(void) while (learnMove == MON_ALREADY_KNOWS_MOVE) learnMove = MonTryLearningNewMove(&gPlayerParty[monId], FALSE); - if (learnMove == MOVE_NONE) + if (learnMove == MOVE_NONE || RECORDED_WILD_BATTLE) { gBattlescriptCurrInstr = cmd->nothingToLearnPtr; } @@ -7471,7 +7474,7 @@ static void Cmd_statusanimation(void) u32 battler = GetBattlerForBattleScript(cmd->battler); if (!(gStatuses3[battler] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[battler].substituteHP == 0 - && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + && !(gHitMarker & (HITMARKER_NO_ANIMATIONS | HITMARKER_DISABLE_ANIMATION))) { BtlController_EmitStatusAnimation(battler, BUFFER_A, FALSE, gBattleMons[battler].status1); MarkBattlerForControllerExec(battler); @@ -7490,7 +7493,7 @@ static void Cmd_status2animation(void) u32 status2ToAnim = cmd->status2; if (!(gStatuses3[battler] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[battler].substituteHP == 0 - && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + && !(gHitMarker & (HITMARKER_NO_ANIMATIONS | HITMARKER_DISABLE_ANIMATION))) { BtlController_EmitStatusAnimation(battler, BUFFER_A, TRUE, gBattleMons[battler].status2 & status2ToAnim); MarkBattlerForControllerExec(battler); @@ -7509,7 +7512,7 @@ static void Cmd_chosenstatusanimation(void) u32 wantedStatus = cmd->status; if (!(gStatuses3[battler] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[battler].substituteHP == 0 - && !(gHitMarker & HITMARKER_NO_ANIMATIONS)) + && !(gHitMarker & (HITMARKER_NO_ANIMATIONS | HITMARKER_DISABLE_ANIMATION))) { BtlController_EmitStatusAnimation(battler, BUFFER_A, cmd->isStatus2, wantedStatus); MarkBattlerForControllerExec(battler); @@ -7599,7 +7602,7 @@ static bool32 TryCheekPouch(u32 battler, u32 itemId) && gBattleStruct->ateBerry[GetBattlerSide(battler)] & gBitTable[gBattlerPartyIndexes[battler]] && !BATTLER_MAX_HP(battler)) { - gBattleMoveDamage = gBattleMons[battler].maxHP / 3; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 3; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -7634,9 +7637,7 @@ static bool32 TrySymbiosis(u32 battler, u32 itemId) && gBattleStruct->changedItems[battler] == ITEM_NONE && GetBattlerHoldEffect(battler, TRUE) != HOLD_EFFECT_EJECT_BUTTON && GetBattlerHoldEffect(battler, TRUE) != HOLD_EFFECT_EJECT_PACK - #if B_SYMBIOSIS_GEMS >= GEN_7 - && !(gSpecialStatuses[battler].gemBoost) - #endif + && (B_SYMBIOSIS_GEMS < GEN_7 || !(gSpecialStatuses[battler].gemBoost)) && gCurrentMove != MOVE_FLING //Fling and damage-reducing berries are handled separately. && !gSpecialStatuses[battler].berryReduced && SYMBIOSIS_CHECK(battler, BATTLE_PARTNER(battler))) @@ -7752,7 +7753,7 @@ static void Cmd_drawlvlupbox(void) } break; case 6: - if (gMain.newKeys != 0) + if (gMain.newKeys != 0 || RECORDED_WILD_BATTLE) { // Draw page 2 of level up box PlaySE(SE_SELECT); @@ -7762,7 +7763,7 @@ static void Cmd_drawlvlupbox(void) } break; case 8: - if (gMain.newKeys != 0) + if (gMain.newKeys != 0 || RECORDED_WILD_BATTLE) { // Close level up box PlaySE(SE_SELECT); @@ -8202,15 +8203,14 @@ static bool32 TryDefogClear(u32 battlerAtk, bool32 clear) DEFOG_CLEAR(SIDE_STATUS_STEALTH_ROCK, stealthRockAmount, BattleScript_StealthRockDefog, 0); DEFOG_CLEAR(SIDE_STATUS_TOXIC_SPIKES, toxicSpikesAmount, BattleScript_ToxicSpikesDefog, 0); DEFOG_CLEAR(SIDE_STATUS_STICKY_WEB, stickyWebAmount, BattleScript_StickyWebDefog, 0); - #if B_DEFOG_CLEARS_TERRAIN >= GEN_8 - if (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY) + DEFOG_CLEAR(SIDE_STATUS_STEELSURGE, steelsurgeAmount, BattleScript_SteelsurgeDefog, 0); + if (B_DEFOG_CLEARS_TERRAIN >= GEN_8 && (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY)) { RemoveAllTerrains(); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_TerrainEnds_Ret; return TRUE; } - #endif // B_DEFOG_CLEARS_TERRAIN } gBattlerAttacker = saveBattler; @@ -8285,7 +8285,7 @@ static bool32 IsAbilityRodAffected(void) if (gBattleStruct->dynamicMoveType == 0) moveType = gBattleMoves[gCurrentMove].type; - else if (!(gBattleStruct->dynamicMoveType & F_DYNAMIC_TYPE_1)) + else if (!(gBattleStruct->dynamicMoveType & F_DYNAMIC_TYPE_IGNORE_PHYSICALITY)) moveType = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK; else moveType = gBattleMoves[gCurrentMove].type; @@ -8302,7 +8302,7 @@ static bool32 IsAbilityMotorAffected(void) if (gBattleStruct->dynamicMoveType == 0) moveType = gBattleMoves[gCurrentMove].type; - else if (!(gBattleStruct->dynamicMoveType & F_DYNAMIC_TYPE_1)) + else if (!(gBattleStruct->dynamicMoveType & F_DYNAMIC_TYPE_IGNORE_PHYSICALITY)) moveType = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK; else moveType = gBattleMoves[gCurrentMove].type; @@ -8319,7 +8319,7 @@ static bool32 IsAbilityAbsorbAffected(void) if (gBattleStruct->dynamicMoveType == 0) moveType = gBattleMoves[gCurrentMove].type; - else if (!(gBattleStruct->dynamicMoveType & F_DYNAMIC_TYPE_1)) + else if (!(gBattleStruct->dynamicMoveType & F_DYNAMIC_TYPE_IGNORE_PHYSICALITY)) moveType = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK; else moveType = gBattleMoves[gCurrentMove].type; @@ -8360,15 +8360,12 @@ static bool32 IsTeatimeAffected(u32 battler) sideTimerOpp->structField = BATTLE_OPPOSITE(temp); \ } \ -static bool32 CourtChangeSwapSideStatuses(void) +static void CourtChangeSwapSideStatuses(void) { struct SideTimer *sideTimerPlayer = &gSideTimers[B_SIDE_PLAYER]; struct SideTimer *sideTimerOpp = &gSideTimers[B_SIDE_OPPONENT]; u32 temp; - // TODO: add Pledge-related effects - // TODO: add Gigantamax-related effects - // Swap timers and statuses COURTCHANGE_SWAP(SIDE_STATUS_REFLECT, reflectTimer, temp) COURTCHANGE_SWAP(SIDE_STATUS_LIGHTSCREEN, lightscreenTimer, temp) @@ -8382,6 +8379,12 @@ static bool32 CourtChangeSwapSideStatuses(void) COURTCHANGE_SWAP(SIDE_STATUS_STEALTH_ROCK, stealthRockAmount, temp); COURTCHANGE_SWAP(SIDE_STATUS_TOXIC_SPIKES, toxicSpikesAmount, temp); COURTCHANGE_SWAP(SIDE_STATUS_STICKY_WEB, stickyWebAmount, temp); + COURTCHANGE_SWAP(SIDE_STATUS_STEELSURGE, steelsurgeAmount, temp); + COURTCHANGE_SWAP(SIDE_STATUS_DAMAGE_NON_TYPES, damageNonTypesTimer, temp); + // Track Pledge effect side + COURTCHANGE_SWAP(SIDE_STATUS_RAINBOW, rainbowTimer, temp); + COURTCHANGE_SWAP(SIDE_STATUS_SEA_OF_FIRE, seaOfFireTimer, temp); + COURTCHANGE_SWAP(SIDE_STATUS_SWAMP, swampTimer, temp); // Change battler IDs of swapped effects. Needed for the correct string when they expire // E.g. "Foe's Reflect wore off!" @@ -8396,6 +8399,9 @@ static bool32 CourtChangeSwapSideStatuses(void) // Track which side originally set the Sticky Web SWAP(sideTimerPlayer->stickyWebBattlerSide, sideTimerOpp->stickyWebBattlerSide, temp); + + // Swap what type set the Gigantamax damage over time effect + SWAP(sideTimerPlayer->damageNonTypesType, sideTimerOpp->damageNonTypesType, temp); } static void HandleScriptMegaPrimalBurst(u32 caseId, u32 battler, u32 type) @@ -8483,7 +8489,7 @@ static void Cmd_various(void) CMD_ARGS(u8 battler, u8 id); struct Pokemon *mon; - s32 i, j; + s32 i; u8 data[10]; u32 side, battler, bits; @@ -8710,7 +8716,7 @@ static void Cmd_various(void) } else { - gBattleMoveDamage = gBattleMons[battler].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -8784,7 +8790,13 @@ static void Cmd_various(void) case VARIOUS_CANCEL_MULTI_TURN_MOVES: { VARIOUS_ARGS(); - CancelMultiTurnMoves(battler); + const u8 *result; + result = CancelMultiTurnMoves(battler); + if (result) + { + gBattlescriptCurrInstr = result; + return; + } break; } case VARIOUS_SET_MAGIC_COAT_TARGET: @@ -9057,6 +9069,7 @@ static void Cmd_various(void) AbilityBattleEffects(ABILITYEFFECT_NEUTRALIZINGGAS, battler, 0, 0, 0); AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, battler, 0, 0, 0); AbilityBattleEffects(ABILITYEFFECT_TRACE2, battler, 0, 0, 0); + AbilityBattleEffects(ABILITYEFFECT_OPPORTUNIST, battler, 0, 0, 0); return; } case VARIOUS_SAVE_TARGET: @@ -9166,6 +9179,7 @@ static void Cmd_various(void) case ABILITY_SCHOOLING: case ABILITY_COMATOSE: case ABILITY_SHIELDS_DOWN: case ABILITY_DISGUISE: case ABILITY_RKS_SYSTEM: case ABILITY_TRACE: + case ABILITY_ZERO_TO_HERO: break; default: gBattleStruct->tracedAbility[gBattlerAbility] = gBattleMons[battler].ability; // re-using the variable for trace @@ -9223,11 +9237,7 @@ static void Cmd_various(void) && !NoAliveMonsForEitherParty() && CompareStat(gBattlerAttacker, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN)) { - #if B_FELL_STINGER_STAT_RAISE >= GEN_7 - SET_STATCHANGER(STAT_ATK, 3, FALSE); - #else - SET_STATCHANGER(STAT_ATK, 2, FALSE); - #endif + SET_STATCHANGER(STAT_ATK, (B_FELL_STINGER_STAT_RAISE >= GEN_7 ? 3 : 2), FALSE); PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK); BattleScriptPush(cmd->nextInstr); gBattlescriptCurrInstr = BattleScript_FellStingerRaisesStat; @@ -9312,7 +9322,8 @@ static void Cmd_various(void) } else { - if (gBattleMons[gBattlerTarget].ability == gBattleMons[gBattlerAttacker].ability) + if (gBattleMons[gBattlerTarget].ability == gBattleMons[gBattlerAttacker].ability + || IsDynamaxed(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -9423,8 +9434,10 @@ static void Cmd_various(void) // Change species. if (cmd->case_ == 0) { + /* What was the idea here? if (!gBattleTextBuff1) PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[battler].species); + */ BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_SPECIES_BATTLE, gBitTable[gBattlerPartyIndexes[battler]], sizeof(gBattleMons[battler].species), &gBattleMons[battler].species); MarkBattlerForControllerExec(battler); } @@ -9520,27 +9533,12 @@ static void Cmd_various(void) } return; } - case VARIOUS_TRY_COPYCAT: - { - VARIOUS_ARGS(const u8 *failInstr); - if (gLastUsedMove == MOVE_UNAVAILABLE || gBattleMoves[gLastUsedMove].copycatBanned) - { - gBattlescriptCurrInstr = cmd->failInstr; - } - else - { - gCalledMove = gLastUsedMove; - gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; - gBattlerTarget = GetMoveTarget(gCalledMove, NO_TARGET_OVERRIDE); - gBattlescriptCurrInstr = cmd->nextInstr; - } - return; - } case VARIOUS_TRY_INSTRUCT: { VARIOUS_ARGS(const u8 *failInstr); u16 move = gLastMoves[gBattlerTarget]; - if (move == MOVE_UNAVAILABLE || gBattleMoves[move].instructBanned) + if (move == MOVE_NONE || move == MOVE_UNAVAILABLE || gBattleMoves[move].effect == EFFECT_RECHARGE + || gBattleMoves[move].instructBanned || gBattleMoves[move].twoTurnMove || IsDynamaxed(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -9696,7 +9694,7 @@ static void Cmd_various(void) { VARIOUS_ARGS(const u8 *jumpInstr); if (!IsBattlerGrounded(battler)) - gBattlescriptCurrInstr = gBattlescriptCurrInstr = cmd->jumpInstr; + gBattlescriptCurrInstr = cmd->jumpInstr; else gBattlescriptCurrInstr = cmd->nextInstr; return; @@ -9808,7 +9806,7 @@ static void Cmd_various(void) { VARIOUS_ARGS(const u8 *jumpInstr); battler = gBattlerAttacker; - if (gTotemBoosts[battler].stats == 0) + if (gQueuedStatBoosts[battler].stats == 0) { gBattlescriptCurrInstr = cmd->nextInstr; // stats done, exit } @@ -9816,19 +9814,19 @@ static void Cmd_various(void) { for (i = 0; i < (NUM_BATTLE_STATS - 1); i++) { - if (gTotemBoosts[battler].stats & (1 << i)) + if (gQueuedStatBoosts[battler].stats & (1 << i)) { - if (gTotemBoosts[battler].statChanges[i] <= -1) - SET_STATCHANGER(i + 1, abs(gTotemBoosts[battler].statChanges[i]), TRUE); + if (gQueuedStatBoosts[battler].statChanges[i] <= -1) + SET_STATCHANGER(i + 1, abs(gQueuedStatBoosts[battler].statChanges[i]), TRUE); else - SET_STATCHANGER(i + 1, gTotemBoosts[battler].statChanges[i], FALSE); + SET_STATCHANGER(i + 1, gQueuedStatBoosts[battler].statChanges[i], FALSE); - gTotemBoosts[battler].stats &= ~(1 << i); + gQueuedStatBoosts[battler].stats &= ~(1 << i); gBattleScripting.battler = battler; gBattlerTarget = battler; - if (gTotemBoosts[battler].stats & 0x80) + if (gQueuedStatBoosts[battler].stats & 0x80) { - gTotemBoosts[battler].stats &= ~0x80; // set 'aura flared to life' flag + gQueuedStatBoosts[battler].stats &= ~0x80; // set 'aura flared to life' flag gBattlescriptCurrInstr = BattleScript_TotemFlaredToLife; } else @@ -9973,7 +9971,7 @@ static void Cmd_various(void) case VARIOUS_TRY_HEAL_QUARTER_HP: { VARIOUS_ARGS(const u8 *failInstr); - gBattleMoveDamage = gBattleMons[battler].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -10213,13 +10211,6 @@ static void Cmd_various(void) gBattlescriptCurrInstr = cmd->nextInstr; return; } - case VARIOUS_APPLY_PLASMA_FISTS: - { - VARIOUS_ARGS(); - for (i = 0; i < gBattlersCount; i++) - gStatuses4[i] |= STATUS4_PLASMA_FISTS; - break; - } case VARIOUS_JUMP_IF_SPECIES: { VARIOUS_ARGS(u16 species, const u8 *jumpInstr); @@ -10303,7 +10294,7 @@ static void Cmd_various(void) VARIOUS_ARGS(const u8 *failInstr); bool8 atLeastOneStatBoosted = FALSE; - u16 hpFraction = max(1, gBattleMons[gBattlerAttacker].maxHP / 3); + u16 hpFraction = max(1, GetNonDynamaxMaxHP(gBattlerAttacker) / 3); for (i = 1; i < NUM_STATS; i++) { @@ -10324,22 +10315,6 @@ static void Cmd_various(void) } return; } - case VARIOUS_SET_OCTOLOCK: - { - VARIOUS_ARGS(const u8 *failInstr); - if (gDisableStructs[battler].octolock) - { - gBattlescriptCurrInstr = cmd->failInstr; - } - else - { - gDisableStructs[battler].octolock = TRUE; - gBattleMons[battler].status2 |= STATUS2_ESCAPE_PREVENTION; - gDisableStructs[battler].battlerPreventingEscape = gBattlerAttacker; - gBattlescriptCurrInstr = cmd->nextInstr; - } - return; - } case VARIOUS_CHECK_POLTERGEIST: { VARIOUS_ARGS(const u8 *failInstr); @@ -10650,30 +10625,6 @@ static void Cmd_various(void) } return; } - case VARIOUS_TRY_TRAINER_SLIDE_MSG_Z_MOVE: - { - VARIOUS_ARGS(); - if ((i = ShouldDoTrainerSlide(battler, TRAINER_SLIDE_Z_MOVE))) - { - gBattleScripting.battler = battler; - BattleScriptPush(cmd->nextInstr); - gBattlescriptCurrInstr = (i == 1 ? BattleScript_TrainerASlideMsgRet : BattleScript_TrainerBSlideMsgRet); - return; - } - break; - } - case VARIOUS_TRY_TRAINER_SLIDE_MSG_MEGA_EVOLUTION: - { - VARIOUS_ARGS(); - if ((i = ShouldDoTrainerSlide(battler, TRAINER_SLIDE_MEGA_EVOLUTION))) - { - gBattleScripting.battler = battler; - BattleScriptPush(cmd->nextInstr); - gBattlescriptCurrInstr = (i == 1 ? BattleScript_TrainerASlideMsgRet : BattleScript_TrainerBSlideMsgRet); - return; - } - break; - } } // End of switch (cmd->id) gBattlescriptCurrInstr = cmd->nextInstr; @@ -10693,7 +10644,9 @@ static void Cmd_setprotectlike(void) if (gCurrentTurnActionNumber == (gBattlersCount - 1)) notLastTurn = FALSE; - if (sProtectSuccessRates[gDisableStructs[gBattlerAttacker].protectUses] >= Random() && notLastTurn) + if ((sProtectSuccessRates[gDisableStructs[gBattlerAttacker].protectUses] >= Random() && notLastTurn) + || (gCurrentMove == MOVE_WIDE_GUARD && B_WIDE_GUARD != GEN_5) + || (gCurrentMove == MOVE_QUICK_GUARD && B_QUICK_GUARD != GEN_5)) { if (!gBattleMoves[gCurrentMove].argument) // Protects one mon only. { @@ -10725,12 +10678,17 @@ static void Cmd_setprotectlike(void) else if (gCurrentMove == MOVE_OBSTRUCT) { gProtectStructs[gBattlerAttacker].obstructed = TRUE; - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; + } + else if (gCurrentMove == MOVE_MAX_GUARD) + { + gProtectStructs[gBattlerAttacker].maxGuarded = TRUE; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; } else if (gCurrentMove == MOVE_SILK_TRAP) { gProtectStructs[gBattlerAttacker].silkTrapped = TRUE; - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; } gDisableStructs[gBattlerAttacker].protectUses++; @@ -10845,7 +10803,7 @@ static void Cmd_tryhealhalfhealth(void) if (cmd->battler == BS_ATTACKER) gBattlerTarget = gBattlerAttacker; - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerTarget) / 2; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -10897,7 +10855,6 @@ static void Cmd_trymirrormove(void) } else // no valid moves found { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -10978,14 +10935,19 @@ static void Cmd_manipulatedamage(void) gBattleMoveDamage *= -1; break; case DMG_RECOIL_FROM_MISS: - #if B_RECOIL_IF_MISS_DMG >= GEN_5 - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; - #elif B_RECOIL_IF_MISS_DMG == GEN_4 - if ((gBattleMons[gBattlerTarget].maxHP / 2) < gBattleMoveDamage) - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2; - #else - gBattleMoveDamage /= 2; - #endif + if (B_RECOIL_IF_MISS_DMG >= GEN_5) + { + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; + } + else if (B_RECOIL_IF_MISS_DMG == GEN_4) + { + if ((gBattleMons[gBattlerTarget].maxHP / 2) < gBattleMoveDamage) + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerTarget) / 2; + } + else + { + gBattleMoveDamage /= 2; + } if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; break; @@ -10993,24 +10955,24 @@ static void Cmd_manipulatedamage(void) gBattleMoveDamage *= 2; break; case DMG_1_8_TARGET_HP: - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerTarget) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; break; case DMG_FULL_ATTACKER_HP: - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker); break; case DMG_CURR_ATTACKER_HP: - gBattleMoveDamage = gBattleMons[gBattlerAttacker].hp; + gBattleMoveDamage = GetNonDynamaxHP(gBattlerAttacker); break; case DMG_BIG_ROOT: gBattleMoveDamage = GetDrainedBigRootHp(gBattlerAttacker, gBattleMoveDamage); break; case DMG_1_2_ATTACKER_HP: - gBattleMoveDamage = (gBattleMons[gBattlerAttacker].maxHP + 1) / 2; // Half of Max HP Rounded UP + gBattleMoveDamage = (GetNonDynamaxMaxHP(gBattlerAttacker) + 1) / 2; // Half of Max HP Rounded UP break; case DMG_RECOIL_FROM_IMMUNE: - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerTarget) / 2; break; } @@ -11109,11 +11071,8 @@ static void Cmd_jumpifuproarwakes(void) { CMD_ARGS(const u8 *jumpInstr); - const u8 *jumpInstr = cmd->jumpInstr; - u32 ability = GetBattlerAbility(gBattlerTarget); - if (UproarWakeUpCheck(gBattlerTarget)) - gBattlescriptCurrInstr = jumpInstr; + gBattlescriptCurrInstr = cmd->jumpInstr; else gBattlescriptCurrInstr = cmd->nextInstr; } @@ -11195,7 +11154,7 @@ static void Cmd_stockpiletohpheal(void) } else { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / (1 << (3 - gDisableStructs[gBattlerAttacker].stockpileCounter)); + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / (1 << (3 - gDisableStructs[gBattlerAttacker].stockpileCounter)); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -11288,6 +11247,8 @@ static u16 ReverseStatChangeMoveEffect(u16 moveEffect) return MOVE_EFFECT_ACC_PLUS_2; case MOVE_EFFECT_EVS_MINUS_2: return MOVE_EFFECT_EVS_PLUS_2; + default: + return 0; } } @@ -11323,6 +11284,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr { statValue ^= STAT_BUFF_NEGATIVE; gBattleScripting.statChanger ^= STAT_BUFF_NEGATIVE; + RecordAbilityBattle(battler, battlerAbility); if (flags & STAT_CHANGE_UPDATE_MOVE_EFFECT) { flags &= ~STAT_CHANGE_UPDATE_MOVE_EFFECT; @@ -11365,16 +11327,9 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr return STAT_CHANGE_DIDNT_WORK; } else if ((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET - || battlerAbility == ABILITY_CLEAR_BODY - || battlerAbility == ABILITY_FULL_METAL_BODY - || battlerAbility == ABILITY_WHITE_SMOKE) - && (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE) + || CanAbilityPreventStatLoss(battlerAbility, GetBattlerAbility(gBattlerAttacker) == ABILITY_INTIMIDATE)) + && (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE) { - if (battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET) - { - RecordItemEffectBattle(battler, HOLD_EFFECT_CLEAR_AMULET); - } - if (flags == STAT_CHANGE_ALLOW_PTR) { if (gSpecialStatuses[battler].statLowered) @@ -11387,7 +11342,9 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr gBattleScripting.battler = battler; if (battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET) { + gLastUsedItem = gBattleMons[battler].item; gBattlescriptCurrInstr = BattleScript_ItemNoStatLoss; + RecordItemEffectBattle(battler, HOLD_EFFECT_CLEAR_AMULET); } else { @@ -11423,6 +11380,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr } else if (!certain && ((battlerAbility == ABILITY_KEEN_EYE && statId == STAT_ACC) + || (B_ILLUMINATE_EFFECT >= GEN_9 && battlerAbility == ABILITY_ILLUMINATE && statId == STAT_ACC) || (battlerAbility == ABILITY_HYPER_CUTTER && statId == STAT_ATK) || (battlerAbility == ABILITY_BIG_PECKS && statId == STAT_DEF))) { @@ -11541,12 +11499,19 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr { if (GetBattlerSide(index) == GetBattlerSide(battler)) continue; // Only triggers on opposing side - if (GetBattlerHoldEffect(index, TRUE) == HOLD_EFFECT_MIRROR_HERB + if (GetBattlerAbility(index) == ABILITY_OPPORTUNIST + && gProtectStructs[battler].activateOpportunist == 0) // don't activate opportunist on other mon's opportunist raises + { + gProtectStructs[index].activateOpportunist = 2; // set stats to copy + gQueuedStatBoosts[index].stats |= (1 << (statId - 1)); // -1 to start at atk + gQueuedStatBoosts[index].statChanges[statId - 1] += statValue; // cumulative in case of multiple opponent boosts + } + else if (GetBattlerHoldEffect(index, TRUE) == HOLD_EFFECT_MIRROR_HERB && gBattleMons[index].statStages[statId] < MAX_STAT_STAGE) { gProtectStructs[index].eatMirrorHerb = 1; - gTotemBoosts[index].stats |= (1 << (statId - 1)); // -1 to start at atk - gTotemBoosts[index].statChanges[statId - 1] = statValue; + gQueuedStatBoosts[index].stats |= (1 << (statId - 1)); // -1 to start at atk + gQueuedStatBoosts[index].statChanges[statId - 1] = statValue; } } } @@ -11604,7 +11569,7 @@ static void Cmd_normalisebuffs(void) { CMD_ARGS(); - s32 i, j; + s32 i; for (i = 0; i < gBattlersCount; i++) TryResetBattlerStatChanges(i); @@ -11618,7 +11583,7 @@ static void Cmd_setbide(void) gBattleMons[gBattlerAttacker].status2 |= STATUS2_MULTIPLETURNS; gLockedMoves[gBattlerAttacker] = gCurrentMove; - gTakenDmg[gBattlerAttacker] = 0; + gBideDmg[gBattlerAttacker] = 0; gBattleMons[gBattlerAttacker].status2 |= STATUS2_BIDE_TURN(2); gBattlescriptCurrInstr = cmd->nextInstr; @@ -11651,13 +11616,12 @@ static void Cmd_setmultihitcounter(void) else { // WARNING: These seem to be unused, see SetRandomMultiHitCounter. - #if B_MULTI_HIT_CHANCE >= GEN_5 + if (B_MULTI_HIT_CHANCE >= GEN_5) // 35%: 2 hits, 35%: 3 hits, 15% 4 hits, 15% 5 hits. gMultiHitCounter = RandomWeighted(RNG_HITS, 0, 0, 7, 7, 3, 3); - #else + else // 37.5%: 2 hits, 37.5%: 3 hits, 12.5% 4 hits, 12.5% 5 hits. gMultiHitCounter = RandomWeighted(RNG_HITS, 0, 0, 3, 3, 1, 1); - #endif } } @@ -11683,7 +11647,6 @@ static void Cmd_forcerandomswitch(void) s32 firstMonId; s32 lastMonId = 0; // + 1 - s32 monsCount; struct Pokemon *party = NULL; u8 validMons[PARTY_SIZE]; s32 validMonsCount = 0; @@ -11739,7 +11702,6 @@ static void Cmd_forcerandomswitch(void) { firstMonId = 0; lastMonId = 6; - monsCount = 6; battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; battler1PartyId = gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerTarget)]; } @@ -11757,7 +11719,6 @@ static void Cmd_forcerandomswitch(void) firstMonId = 0; lastMonId = PARTY_SIZE / 2; } - monsCount = PARTY_SIZE / 2; battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; battler1PartyId = gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerTarget)]; } @@ -11774,7 +11735,6 @@ static void Cmd_forcerandomswitch(void) firstMonId = 0; lastMonId = PARTY_SIZE / 2; } - monsCount = PARTY_SIZE / 2; battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; battler1PartyId = gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerTarget)]; } @@ -11784,7 +11744,6 @@ static void Cmd_forcerandomswitch(void) { firstMonId = 0; lastMonId = PARTY_SIZE; - monsCount = PARTY_SIZE; } else { @@ -11798,7 +11757,6 @@ static void Cmd_forcerandomswitch(void) firstMonId = 0; lastMonId = PARTY_SIZE / 2; } - monsCount = PARTY_SIZE / 2; } battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; battler1PartyId = gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerTarget)]; @@ -11807,7 +11765,6 @@ static void Cmd_forcerandomswitch(void) { firstMonId = 0; lastMonId = PARTY_SIZE; - monsCount = PARTY_SIZE; battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; battler1PartyId = gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerTarget)]; } @@ -11815,7 +11772,6 @@ static void Cmd_forcerandomswitch(void) { firstMonId = 0; lastMonId = PARTY_SIZE; - monsCount = PARTY_SIZE; battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; // there is only one pokemon out in single battles battler1PartyId = gBattlerPartyIndexes[gBattlerTarget]; } @@ -11874,68 +11830,44 @@ static void Cmd_tryconversiontypechange(void) CMD_ARGS(const u8 *failInstr); u8 validMoves = 0; - u8 moveChecked; - u8 moveType; + u8 moveChecked = 0; + u8 moveType = 0; -#if B_UPDATED_CONVERSION >= GEN_6 - // Changes user's type to its first move's type - for (moveChecked = 0; moveChecked < MAX_MON_MOVES; moveChecked++) + if (B_UPDATED_CONVERSION >= GEN_6) { - if (gBattleMons[gBattlerAttacker].moves[moveChecked] != MOVE_NONE) + // Changes user's type to its first move's type + for (moveChecked = 0; moveChecked < MAX_MON_MOVES; moveChecked++) { - moveType = gBattleMoves[gBattleMons[gBattlerAttacker].moves[moveChecked]].type; - break; + if (gBattleMons[gBattlerAttacker].moves[moveChecked] != MOVE_NONE) + { + moveType = gBattleMoves[gBattleMons[gBattlerAttacker].moves[moveChecked]].type; + break; + } + } + if (IS_BATTLER_OF_TYPE(gBattlerAttacker, moveType)) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else + { + SET_BATTLER_TYPE(gBattlerAttacker, moveType); + PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType); + gBattlescriptCurrInstr = cmd->nextInstr; } - } - if (IS_BATTLER_OF_TYPE(gBattlerAttacker, moveType)) - { - gBattlescriptCurrInstr = cmd->failInstr; } else { - SET_BATTLER_TYPE(gBattlerAttacker, moveType); - PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType); - gBattlescriptCurrInstr = cmd->nextInstr; - } -#else - // Randomly changes user's type to one of its moves' type - while (validMoves < MAX_MON_MOVES) - { - if (gBattleMons[gBattlerAttacker].moves[validMoves] == MOVE_NONE) - break; - - validMoves++; - } - - for (moveChecked = 0; moveChecked < validMoves; moveChecked++) - { - moveType = gBattleMoves[gBattleMons[gBattlerAttacker].moves[moveChecked]].type; - - if (moveType == TYPE_MYSTERY) + // Randomly changes user's type to one of its moves' type + while (validMoves < MAX_MON_MOVES) { - if (IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST)) - moveType = TYPE_GHOST; - else - moveType = TYPE_NORMAL; + if (gBattleMons[gBattlerAttacker].moves[validMoves] == MOVE_NONE) + break; + + validMoves++; } - if (moveType != gBattleMons[gBattlerAttacker].type1 - && moveType != gBattleMons[gBattlerAttacker].type2 - && moveType != gBattleMons[gBattlerAttacker].type3) - { - break; - } - } - if (moveChecked == validMoves) - { - gBattlescriptCurrInstr = cmd->failInstr; - } - else - { - do + for (moveChecked = 0; moveChecked < validMoves; moveChecked++) { - while ((moveChecked = MOD(Random(), MAX_MON_MOVES)) >= validMoves); - moveType = gBattleMoves[gBattleMons[gBattlerAttacker].moves[moveChecked]].type; if (moveType == TYPE_MYSTERY) @@ -11945,15 +11877,42 @@ static void Cmd_tryconversiontypechange(void) else moveType = TYPE_NORMAL; } + if (moveType != gBattleMons[gBattlerAttacker].type1 + && moveType != gBattleMons[gBattlerAttacker].type2 + && moveType != gBattleMons[gBattlerAttacker].type3) + { + break; + } } - while (moveType == gBattleMons[gBattlerAttacker].type1 || moveType == gBattleMons[gBattlerAttacker].type2 || moveType == gBattleMons[gBattlerAttacker].type3); - SET_BATTLER_TYPE(gBattlerAttacker, moveType); - PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType); + if (moveChecked == validMoves) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else + { + do + { + while ((moveChecked = MOD(Random(), MAX_MON_MOVES)) >= validMoves); - gBattlescriptCurrInstr = cmd->nextInstr; + moveType = gBattleMoves[gBattleMons[gBattlerAttacker].moves[moveChecked]].type; + + if (moveType == TYPE_MYSTERY) + { + if (IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_GHOST)) + moveType = TYPE_GHOST; + else + moveType = TYPE_NORMAL; + } + } + while (moveType == gBattleMons[gBattlerAttacker].type1 || moveType == gBattleMons[gBattlerAttacker].type2 || moveType == gBattleMons[gBattlerAttacker].type3); + + SET_BATTLER_TYPE(gBattlerAttacker, moveType); + PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType); + + gBattlescriptCurrInstr = cmd->nextInstr; + } } -#endif } static void Cmd_givepaydaymoney(void) @@ -12011,6 +11970,15 @@ static void Cmd_tryKO(void) u32 holdEffect = GetBattlerHoldEffect(gBattlerTarget, TRUE); u16 targetAbility = GetBattlerAbility(gBattlerTarget); + // Dynamaxed Pokemon cannot be hit by OHKO moves. + if (IsDynamaxed(gBattlerTarget)) + { + gMoveResultFlags |= MOVE_RESULT_MISSED; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_KO_UNAFFECTED; + gBattlescriptCurrInstr = cmd->failInstr; + return; + } + gPotentialItemEffectBattler = gBattlerTarget; if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < GetBattlerHoldEffectParam(gBattlerTarget)) @@ -12044,10 +12012,8 @@ static void Cmd_tryKO(void) else { u16 odds = gBattleMoves[gCurrentMove].accuracy + (gBattleMons[gBattlerAttacker].level - gBattleMons[gBattlerTarget].level); - #if B_SHEER_COLD_ACC >= GEN_7 - if (gCurrentMove == MOVE_SHEER_COLD && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_ICE)) + if (B_SHEER_COLD_ACC >= GEN_7 && gCurrentMove == MOVE_SHEER_COLD && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_ICE)) odds -= 10; - #endif if (RandomPercentage(RNG_ACCURACY, odds) && gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level) lands = TRUE; } @@ -12065,13 +12031,11 @@ static void Cmd_tryKO(void) gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON; gLastUsedItem = gBattleMons[gBattlerTarget].item; } - #if B_AFFECTION_MECHANICS == TRUE - else if (gSpecialStatuses[gBattlerTarget].affectionEndured) + else if (B_AFFECTION_MECHANICS == TRUE && gSpecialStatuses[gBattlerTarget].affectionEndured) { gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1; gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED_AFFECTION; } - #endif else { gBattleMoveDamage = gBattleMons[gBattlerTarget].hp; @@ -12096,7 +12060,7 @@ static void Cmd_damagetohalftargethp(void) { CMD_ARGS(); - gBattleMoveDamage = gBattleMons[gBattlerTarget].hp / 2; + gBattleMoveDamage = GetNonDynamaxHP(gBattlerTarget) / 2; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -12140,7 +12104,7 @@ static void Cmd_weatherdamage(void) && !(gStatuses3[gBattlerAttacker] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_SAFETY_GOGGLES) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; } @@ -12153,7 +12117,7 @@ static void Cmd_weatherdamage(void) && !(gStatuses3[gBattlerAttacker] & STATUS3_HEAL_BLOCK)) { gBattlerAbility = gBattlerAttacker; - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -12165,7 +12129,7 @@ static void Cmd_weatherdamage(void) && !(gStatuses3[gBattlerAttacker] & (STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) && GetBattlerHoldEffect(gBattlerAttacker, TRUE) != HOLD_EFFECT_SAFETY_GOGGLES) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; } @@ -12303,6 +12267,7 @@ static void Cmd_transformdataexecution(void) { s32 i; u8 *battleMonAttacker, *battleMonTarget; + u8 timesGotHit; gBattleMons[gBattlerAttacker].status2 |= STATUS2_TRANSFORMED; gDisableStructs[gBattlerAttacker].disabledMove = MOVE_NONE; @@ -12312,6 +12277,9 @@ static void Cmd_transformdataexecution(void) gDisableStructs[gBattlerAttacker].mimickedMoves = 0; gDisableStructs[gBattlerAttacker].usedMoves = 0; + timesGotHit = gBattleStruct->timesGotHit[GetBattlerSide(gBattlerTarget)][gBattlerPartyIndexes[gBattlerTarget]]; + gBattleStruct->timesGotHit[GetBattlerSide(gBattlerAttacker)][gBattlerPartyIndexes[gBattlerAttacker]] = timesGotHit; + PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerTarget].species) battleMonAttacker = (u8 *)(&gBattleMons[gBattlerAttacker]); @@ -12343,8 +12311,8 @@ static void Cmd_setsubstitute(void) { CMD_ARGS(); - u32 hp = gBattleMons[gBattlerAttacker].maxHP / 4; - if (gBattleMons[gBattlerAttacker].maxHP / 4 == 0) + u32 hp = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; + if (GetNonDynamaxMaxHP(gBattlerAttacker) / 4 == 0) hp = 1; if (gBattleMons[gBattlerAttacker].hp <= hp) @@ -12354,7 +12322,7 @@ static void Cmd_setsubstitute(void) } else { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; // one bit value will only work for pokemon which max hp can go to 1020(which is more than possible in games) + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; // one bit value will only work for pokemon which max hp can go to 1020(which is more than possible in games) if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -12374,6 +12342,7 @@ static void Cmd_mimicattackcopy(void) if ((gBattleMoves[gLastMoves[gBattlerTarget]].mimicBanned) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED) + || gLastMoves[gBattlerTarget] == MOVE_NONE || gLastMoves[gBattlerTarget] == MOVE_UNAVAILABLE) { gBattlescriptCurrInstr = cmd->failInstr; @@ -12433,6 +12402,10 @@ static void Cmd_metronome(void) u32 moveCount = MOVES_COUNT_GEN4; #elif B_METRONOME_MOVES >= GEN_3 u32 moveCount = MOVES_COUNT_GEN3; +#elif B_METRONOME_MOVES >= GEN_2 + u32 moveCount = MOVES_COUNT_GEN2; +#else + u32 moveCount = MOVES_COUNT_GEN1; #endif gCurrentMove = RandomUniformExcept(RNG_METRONOME, 1, moveCount - 1, InvalidMetronomeMove); @@ -12454,12 +12427,7 @@ static void Cmd_psywavedamageeffect(void) { CMD_ARGS(); - s32 randDamage; -#if B_PSYWAVE_DMG >= GEN_6 - randDamage = (Random() % 101); -#else - randDamage = (Random() % 11) * 10; -#endif + s32 randDamage = B_PSYWAVE_DMG >= GEN_6 ? (Random() % 101) : ((Random() % 11) * 10); gBattleMoveDamage = gBattleMons[gBattlerAttacker].level * (randDamage + 50) / 100; gBattlescriptCurrInstr = cmd->nextInstr; } @@ -12486,7 +12454,6 @@ static void Cmd_counterdamagecalculator(void) } else { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->failInstr; } } @@ -12514,7 +12481,6 @@ static void Cmd_mirrorcoatdamagecalculator(void) } else { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->failInstr; } } @@ -12536,13 +12502,12 @@ static void Cmd_disablelastusedattack(void) PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerTarget].moves[i]) gDisableStructs[gBattlerTarget].disabledMove = gBattleMons[gBattlerTarget].moves[i]; - #if B_DISABLE_TURNS == GEN_3 - gDisableStructs[gBattlerTarget].disableTimer = (Random() & 3) + 2; - #elif B_DISABLE_TURNS == GEN_4 - gDisableStructs[gBattlerTarget].disableTimer = (Random() & 3) + 4; - #else - gDisableStructs[gBattlerTarget].disableTimer = 4; - #endif + if (B_DISABLE_TURNS >= GEN_5) + gDisableStructs[gBattlerTarget].disableTimer = 4; + else if (B_DISABLE_TURNS >= GEN_4) + gDisableStructs[gBattlerTarget].disableTimer = (Random() & 3) + 4; // 4-7 turns + else + gDisableStructs[gBattlerTarget].disableTimer = (Random() & 3) + 2; // 2-5 turns gBattlescriptCurrInstr = cmd->nextInstr; } else @@ -12557,18 +12522,26 @@ static void Cmd_trysetencore(void) s32 i; - for (i = 0; i < MAX_MON_MOVES; i++) + if (IsMaxMove(gLastMoves[gBattlerTarget]) && !IsDynamaxed(gBattlerTarget)) { - if (gBattleMons[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget]) - break; + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (gBattleMons[gBattlerTarget].moves[i] == gBattleStruct->dynamax.baseMove[gBattlerTarget]) + break; + } + } + else + { + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (gBattleMons[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget]) + break; + } } - if (gLastMoves[gBattlerTarget] == MOVE_NONE - || gLastMoves[gBattlerTarget] == MOVE_UNAVAILABLE - || gLastMoves[gBattlerTarget] == MOVE_STRUGGLE - || gLastMoves[gBattlerTarget] == MOVE_ENCORE - || gLastMoves[gBattlerTarget] == MOVE_MIRROR_MOVE - || gLastMoves[gBattlerTarget] == MOVE_SHELL_TRAP) + if ((gBattleMoves[gLastMoves[gBattlerTarget]].encoreBanned) + || gLastMoves[gBattlerTarget] == MOVE_NONE + || gLastMoves[gBattlerTarget] == MOVE_UNAVAILABLE) { i = MAX_MON_MOVES; } @@ -12579,7 +12552,6 @@ static void Cmd_trysetencore(void) gDisableStructs[gBattlerTarget].encoredMove = gBattleMons[gBattlerTarget].moves[i]; gDisableStructs[gBattlerTarget].encoredMovePos = i; gDisableStructs[gBattlerTarget].encoreTimer = 3; - gDisableStructs[gBattlerTarget].encoreTimer; gBattlescriptCurrInstr = cmd->nextInstr; } else @@ -12594,8 +12566,8 @@ static void Cmd_painsplitdmgcalc(void) if (!(DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove))) { - s32 hpDiff = (gBattleMons[gBattlerAttacker].hp + gBattleMons[gBattlerTarget].hp) / 2; - s32 painSplitHp = gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - hpDiff; + s32 hpDiff = (gBattleMons[gBattlerAttacker].hp + GetNonDynamaxHP(gBattlerTarget)) / 2; + s32 painSplitHp = gBattleMoveDamage = GetNonDynamaxHP(gBattlerTarget) - hpDiff; u8 *storeLoc = (void *)(&gBattleScripting.painSplitHp); storeLoc[0] = (painSplitHp); @@ -12604,7 +12576,7 @@ static void Cmd_painsplitdmgcalc(void) storeLoc[3] = (painSplitHp & 0xFF000000) >> 24; gBattleMoveDamage = gBattleMons[gBattlerAttacker].hp - hpDiff; - gSpecialStatuses[gBattlerTarget].dmg = 0xFFFF; + gSpecialStatuses[gBattlerTarget].shellBellDmg = IGNORE_SHELL_BELL; gBattlescriptCurrInstr = cmd->nextInstr; } @@ -12624,7 +12596,7 @@ static void Cmd_settypetorandomresistance(void) { gBattlescriptCurrInstr = cmd->failInstr; } - else if (IsTwoTurnsMove(gLastLandedMoves[gBattlerAttacker]) + else if (gBattleMoves[gLastLandedMoves[gBattlerAttacker]].twoTurnMove && gBattleMons[gLastHitBy[gBattlerAttacker]].status2 & STATUS2_MULTIPLETURNS) { gBattlescriptCurrInstr = cmd->failInstr; @@ -12733,40 +12705,6 @@ static void Cmd_copymovepermanently(void) } } -static bool8 IsTwoTurnsMove(u16 move) -{ - if (gBattleMoves[move].effect == EFFECT_SKULL_BASH - || gBattleMoves[move].effect == EFFECT_TWO_TURNS_ATTACK - || gBattleMoves[move].effect == EFFECT_SOLAR_BEAM - || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE - || gBattleMoves[move].effect == EFFECT_BIDE - || gBattleMoves[move].effect == EFFECT_METEOR_BEAM - || gBattleMoves[move].effect == EFFECT_GEOMANCY) - return TRUE; - else - return FALSE; -} - -// unused -static u8 AttacksThisTurn(u8 battler, u16 move) // Note: returns 1 if it's a charging turn, otherwise 2 -{ - // first argument is unused - if (gBattleMoves[move].effect == EFFECT_SOLAR_BEAM - && IsBattlerWeatherAffected(battler, B_WEATHER_SUN)) - return 2; - - if (gBattleMoves[move].effect == EFFECT_SKULL_BASH - || gBattleMoves[move].effect == EFFECT_TWO_TURNS_ATTACK - || gBattleMoves[move].effect == EFFECT_SOLAR_BEAM - || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE - || gBattleMoves[move].effect == EFFECT_BIDE) - { - if ((gHitMarker & HITMARKER_CHARGING)) - return 1; - } - return 2; -} - static void Cmd_trychoosesleeptalkmove(void) { CMD_ARGS(const u8 *failInstr); @@ -12775,8 +12713,8 @@ static void Cmd_trychoosesleeptalkmove(void) for (i = 0; i < MAX_MON_MOVES; i++) { - if ((gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].sleepTalkBanned) - || IsTwoTurnsMove(gBattleMons[gBattlerAttacker].moves[i])) + if (gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].sleepTalkBanned + || gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].twoTurnMove) { unusableMovesBits |= gBitTable[i]; } @@ -12842,11 +12780,7 @@ static void Cmd_settailwind(void) { gSideStatuses[side] |= SIDE_STATUS_TAILWIND; gSideTimers[side].tailwindBattlerId = gBattlerAttacker; - #if B_TAILWIND_TURNS >= GEN_5 - gSideTimers[side].tailwindTimer = 4; - #else - gSideTimers[side].tailwindTimer = 3; - #endif + gSideTimers[side].tailwindTimer = B_TAILWIND_TURNS >= GEN_5 ? 4 : 3; gBattlescriptCurrInstr = cmd->nextInstr; } else @@ -12864,23 +12798,30 @@ static void Cmd_tryspiteppreduce(void) { s32 i; - for (i = 0; i < MAX_MON_MOVES; i++) + // Get move slot to reduce PP. + if (IsMaxMove(gLastMoves[gBattlerTarget])) { - if (gLastMoves[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i]) - break; + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (gBattleStruct->dynamax.baseMove[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i]) + break; + } + } + else + { + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (gLastMoves[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i]) + break; + } } - #if B_CAN_SPITE_FAIL <= GEN_3 - if (i != MAX_MON_MOVES && gBattleMons[gBattlerTarget].pp[i] > 1) - #else - if (i != MAX_MON_MOVES && gBattleMons[gBattlerTarget].pp[i] != 0) - #endif + if (i != MAX_MON_MOVES && gBattleMons[gBattlerTarget].pp[i] > (B_CAN_SPITE_FAIL >= GEN_4 ? 0 : 1)) { - #if B_PP_REDUCED_BY_SPITE <= GEN_3 - s32 ppToDeduct = (Random() & 3) + 2; - #else - s32 ppToDeduct = 4; - #endif + s32 ppToDeduct = B_PP_REDUCED_BY_SPITE >= GEN_4 ? 4 : (Random() & 3) + 2; + // G-Max Depletion only deducts 2 PP. + if (IsMaxMove(gCurrentMove) && gBattleMoves[gCurrentMove].argument == MAX_EFFECT_SPITE) + ppToDeduct = 2; if (gBattleMons[gBattlerTarget].pp[i] < ppToDeduct) ppToDeduct = gBattleMons[gBattlerTarget].pp[i]; @@ -13024,7 +12965,7 @@ static void Cmd_cursetarget(void) else { gBattleMons[gBattlerTarget].status2 |= STATUS2_CURSED; - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -13040,7 +12981,6 @@ static void Cmd_trysetspikes(void) if (gSideTimers[targetSide].spikesAmount == 3) { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->failInstr; } else @@ -13081,8 +13021,6 @@ static void Cmd_trysetperishsong(void) } } - PressurePPLoseOnUsingPerishSong(gBattlerAttacker); - if (notAffectedCount == gBattlersCount) gBattlescriptCurrInstr = cmd->failInstr; else @@ -13190,7 +13128,7 @@ static void Cmd_presentdamagecalculation(void) } else { - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerTarget) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -13356,9 +13294,9 @@ static void Cmd_maxattackhalvehp(void) { CMD_ARGS(const u8 *failInstr); - u32 halfHp = gBattleMons[gBattlerAttacker].maxHP / 2; + u32 halfHp = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; - if (!(gBattleMons[gBattlerAttacker].maxHP / 2)) + if (!(GetNonDynamaxMaxHP(gBattlerAttacker) / 2)) halfHp = 1; // Belly Drum fails if the user's current HP is less than half its maximum, or if the user's Attack is already at +6 (even if the user has Contrary). @@ -13366,7 +13304,7 @@ static void Cmd_maxattackhalvehp(void) && gBattleMons[gBattlerAttacker].hp > halfHp) { gBattleMons[gBattlerAttacker].statStages[STAT_ATK] = MAX_STAT_STAGE; - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -13443,6 +13381,13 @@ static void Cmd_rapidspinfree(void) BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_StealthRockFree; } + else if (gSideStatuses[atkSide] & SIDE_STATUS_STEELSURGE) + { + gSideStatuses[atkSide] &= ~SIDE_STATUS_STEELSURGE; + gSideTimers[atkSide].steelsurgeAmount = 0; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_SteelsurgeFree; + } else { gBattlescriptCurrInstr = cmd->nextInstr; @@ -13467,18 +13412,18 @@ static void Cmd_recoverbasedonsunlight(void) if (gCurrentMove == MOVE_SHORE_UP) { if (WEATHER_HAS_EFFECT && gBattleWeather & B_WEATHER_SANDSTORM) - gBattleMoveDamage = 20 * gBattleMons[gBattlerAttacker].maxHP / 30; + gBattleMoveDamage = 20 * GetNonDynamaxMaxHP(gBattlerAttacker) / 30; else - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; } else { if (!(gBattleWeather & B_WEATHER_ANY) || !WEATHER_HAS_EFFECT || GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_UTILITY_UMBRELLA) - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; else if (gBattleWeather & B_WEATHER_SUN) - gBattleMoveDamage = 20 * gBattleMons[gBattlerAttacker].maxHP / 30; + gBattleMoveDamage = 20 * GetNonDynamaxMaxHP(gBattlerAttacker) / 30; else // not sunny weather - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; } if (gBattleMoveDamage == 0) @@ -13666,16 +13611,19 @@ static void Cmd_trymemento(void) { CMD_ARGS(const u8 *failInstr); - #if B_MEMENTO_FAIL == GEN_3 - if (gBattleMons[gBattlerTarget].statStages[STAT_ATK] == MIN_STAT_STAGE + if (B_MEMENTO_FAIL >= GEN_4 + && (gBattleCommunication[MISS_TYPE] == B_MSG_PROTECTED + || gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE + || IsBattlerProtected(gBattlerTarget, gCurrentMove) + || DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove))) + { + // Failed, target was protected. + gBattlescriptCurrInstr = cmd->failInstr; + } + else if (B_MEMENTO_FAIL < GEN_4 + && gBattleMons[gBattlerTarget].statStages[STAT_ATK] == MIN_STAT_STAGE && gBattleMons[gBattlerTarget].statStages[STAT_SPATK] == MIN_STAT_STAGE && gBattleCommunication[MISS_TYPE] != B_MSG_PROTECTED) - #else - if (gBattleCommunication[MISS_TYPE] == B_MSG_PROTECTED - || gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE - || IsBattlerProtected(gBattlerTarget, gCurrentMove) - || DoesSubstituteBlockMove(gBattlerAttacker, gBattlerTarget, gCurrentMove)) - #endif { // Failed, unprotected target already has minimum Attack and Special Attack. gBattlescriptCurrInstr = cmd->failInstr; @@ -13734,7 +13682,7 @@ u16 GetNaturePowerMove(void) return MOVE_ENERGY_BALL; else if (gFieldStatuses & STATUS_FIELD_PSYCHIC_TERRAIN) return MOVE_PSYCHIC; - else if (sNaturePowerMoves == MOVE_NONE) + else if (sNaturePowerMoves[gBattleTerrain] == MOVE_NONE) return MOVE_TRI_ATTACK; return sNaturePowerMoves[gBattleTerrain]; } @@ -13761,13 +13709,15 @@ static void Cmd_settorment(void) { CMD_ARGS(const u8 *failInstr); - if (gBattleMons[gBattlerTarget].status2 & STATUS2_TORMENT) + if (gBattleMons[gBattlerTarget].status2 & STATUS2_TORMENT + || IsDynamaxed(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } else { gBattleMons[gBattlerTarget].status2 |= STATUS2_TORMENT; + gDisableStructs[gBattlerTarget].tormentTimer = PERMANENT_TORMENT; // permanent gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -13786,26 +13736,29 @@ static void Cmd_settaunt(void) { CMD_ARGS(const u8 *failInstr); -#if B_OBLIVIOUS_TAUNT >= GEN_6 - if (GetBattlerAbility(gBattlerTarget) == ABILITY_OBLIVIOUS) + if (B_OBLIVIOUS_TAUNT >= GEN_6 && GetBattlerAbility(gBattlerTarget) == ABILITY_OBLIVIOUS) { gBattlescriptCurrInstr = BattleScript_NotAffectedAbilityPopUp; gLastUsedAbility = ABILITY_OBLIVIOUS; RecordAbilityBattle(gBattlerTarget, ABILITY_OBLIVIOUS); } - else -#endif - if (gDisableStructs[gBattlerTarget].tauntTimer == 0) + else if (gDisableStructs[gBattlerTarget].tauntTimer == 0) { - #if B_TAUNT_TURNS >= GEN_5 - u8 turns = 4; + u8 turns; + if (B_TAUNT_TURNS >= GEN_5) + { + turns = 4; if (GetBattlerTurnOrderNum(gBattlerTarget) > GetBattlerTurnOrderNum(gBattlerAttacker)) turns--; // If the target hasn't yet moved this turn, Taunt lasts for only three turns (source: Bulbapedia) - #elif B_TAUNT_TURNS == GEN_4 - u8 turns = (Random() & 2) + 3; - #else - u8 turns = 2; - #endif + } + else if (B_TAUNT_TURNS >= GEN_4) + { + turns = (Random() & 2) + 3; + } + else + { + turns = 2; + } gDisableStructs[gBattlerTarget].tauntTimer = turns; gBattlescriptCurrInstr = cmd->nextInstr; @@ -13849,9 +13802,7 @@ static void Cmd_tryswapitems(void) | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_SECRET_BASE | BATTLE_TYPE_RECORDED_LINK - #if B_TRAINERS_KNOCK_OFF_ITEMS == TRUE - | BATTLE_TYPE_TRAINER - #endif + | (B_TRAINERS_KNOCK_OFF_ITEMS == TRUE ? BATTLE_TYPE_TRAINER : 0) )))) { gBattlescriptCurrInstr = cmd->failInstr; @@ -13990,14 +13941,17 @@ static void Cmd_trywish(void) break; case 1: // heal effect PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattlerTarget, gWishFutureKnock.wishPartyId[gBattlerTarget]) - #if B_WISH_HP_SOURCE >= GEN_5 - if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) - gBattleMoveDamage = max(1, GetMonData(&gPlayerParty[gWishFutureKnock.wishPartyId[gBattlerTarget]], MON_DATA_MAX_HP) / 2); + if (B_WISH_HP_SOURCE >= GEN_5) + { + if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) + gBattleMoveDamage = max(1, GetMonData(&gPlayerParty[gWishFutureKnock.wishPartyId[gBattlerTarget]], MON_DATA_MAX_HP) / 2); + else + gBattleMoveDamage = max(1, GetMonData(&gEnemyParty[gWishFutureKnock.wishPartyId[gBattlerTarget]], MON_DATA_MAX_HP) / 2); + } else - gBattleMoveDamage = max(1, GetMonData(&gEnemyParty[gWishFutureKnock.wishPartyId[gBattlerTarget]], MON_DATA_MAX_HP) / 2); - #else - gBattleMoveDamage = max(1, gBattleMons[gBattlerTarget].maxHP / 2); - #endif + { + gBattleMoveDamage = max(1, GetNonDynamaxMaxHP(gBattlerAttacker) / 2); + } gBattleMoveDamage *= -1; if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP) @@ -14076,13 +14030,13 @@ static void Cmd_setdamagetohealthdifference(void) { CMD_ARGS(const u8 *failInstr); - if (gBattleMons[gBattlerTarget].hp <= gBattleMons[gBattlerAttacker].hp) + if (GetNonDynamaxHP(gBattlerTarget) <= gBattleMons[gBattlerAttacker].hp) { gBattlescriptCurrInstr = cmd->failInstr; } else { - gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - gBattleMons[gBattlerAttacker].hp; + gBattleMoveDamage = GetNonDynamaxHP(gBattlerTarget) - gBattleMons[gBattlerAttacker].hp; gBattlescriptCurrInstr = cmd->nextInstr; } } @@ -14143,7 +14097,7 @@ static void Cmd_tryswapabilities(void) } else { - if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT || IsDynamaxed(gBattlerTarget)) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -14166,12 +14120,16 @@ static void Cmd_tryimprison(void) { gBattlescriptCurrInstr = cmd->failInstr; } + else if (B_IMPRISON >= GEN_5) + { + gStatuses3[gBattlerAttacker] |= STATUS3_IMPRISONED_OTHERS; + gBattlescriptCurrInstr = cmd->nextInstr; + } else { u8 battler, sideAttacker; sideAttacker = GetBattlerSide(gBattlerAttacker); - PressurePPLoseOnUsingImprison(gBattlerAttacker); for (battler = 0; battler < gBattlersCount; battler++) { if (sideAttacker != GetBattlerSide(battler)) @@ -14266,9 +14224,7 @@ static void Cmd_assistattackselect(void) { u16 move = GetMonData(&party[monId], MON_DATA_MOVE1 + moveId); - if (gBattleMoves[move].copycatBanned - || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE - || gBattleMoves[move].effect == EFFECT_SKY_DROP) + if (gBattleMoves[move].assistBanned) continue; validMoves[chooseableMovesNo++] = move; @@ -14295,8 +14251,6 @@ static void Cmd_trysetmagiccoat(void) { CMD_ARGS(const u8 *failInstr); - gBattlerTarget = gBattlerAttacker; - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; if (gCurrentTurnActionNumber == gBattlersCount - 1) // moves last turn { gBattlescriptCurrInstr = cmd->failInstr; @@ -14313,7 +14267,6 @@ static void Cmd_trysetsnatch(void) { CMD_ARGS(const u8 *failInstr); - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; if (gCurrentTurnActionNumber == gBattlersCount - 1) // moves last turn { gBattlescriptCurrInstr = cmd->failInstr; @@ -14353,7 +14306,7 @@ static void Cmd_switchoutabilities(void) MarkBattlerForControllerExec(battler); break; case ABILITY_REGENERATOR: - gBattleMoveDamage = gBattleMons[battler].maxHP / 3; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 3; gBattleMoveDamage += gBattleMons[battler].hp; if (gBattleMoveDamage > gBattleMons[battler].maxHP) gBattleMoveDamage = gBattleMons[battler].maxHP; @@ -14418,31 +14371,26 @@ u16 GetSecretPowerMoveEffect(void) { switch (gBattleTerrain) { - #if B_SECRET_POWER_EFFECT >= GEN_6 - case BATTLE_TERRAIN_GRASS: moveEffect = MOVE_EFFECT_SLEEP; break; - case BATTLE_TERRAIN_UNDERWATER: moveEffect = MOVE_EFFECT_ATK_MINUS_1; break; - case BATTLE_TERRAIN_POND: moveEffect = MOVE_EFFECT_ATK_MINUS_1; break; - case BATTLE_TERRAIN_MOUNTAIN: moveEffect = MOVE_EFFECT_ACC_MINUS_1; break; - case BATTLE_TERRAIN_PUDDLE: moveEffect = MOVE_EFFECT_SPD_MINUS_1; break; - #elif B_SECRET_POWER_EFFECT >= GEN_5 - case BATTLE_TERRAIN_GRASS: moveEffect = MOVE_EFFECT_SLEEP; break; - case BATTLE_TERRAIN_UNDERWATER: moveEffect = MOVE_EFFECT_DEF_MINUS_1; break; - case BATTLE_TERRAIN_POND: moveEffect = MOVE_EFFECT_ATK_MINUS_1; break; - case BATTLE_TERRAIN_MOUNTAIN: moveEffect = MOVE_EFFECT_ACC_MINUS_1; break; - case BATTLE_TERRAIN_PUDDLE: moveEffect = MOVE_EFFECT_SPD_MINUS_1; break; - #elif B_SECRET_POWER_EFFECT >= GEN_4 - case BATTLE_TERRAIN_GRASS: moveEffect = MOVE_EFFECT_SLEEP; break; - case BATTLE_TERRAIN_UNDERWATER: moveEffect = MOVE_EFFECT_DEF_MINUS_1; break; - case BATTLE_TERRAIN_POND: moveEffect = MOVE_EFFECT_ATK_MINUS_1; break; - case BATTLE_TERRAIN_MOUNTAIN: moveEffect = MOVE_EFFECT_FLINCH; break; - case BATTLE_TERRAIN_PUDDLE: moveEffect = MOVE_EFFECT_ACC_MINUS_1; break; - #else - case BATTLE_TERRAIN_GRASS: moveEffect = MOVE_EFFECT_POISON; break; - case BATTLE_TERRAIN_UNDERWATER: moveEffect = MOVE_EFFECT_DEF_MINUS_1; break; - case BATTLE_TERRAIN_POND: moveEffect = MOVE_EFFECT_SPD_MINUS_1; break; - case BATTLE_TERRAIN_MOUNTAIN: moveEffect = MOVE_EFFECT_CONFUSION; break; - case BATTLE_TERRAIN_PUDDLE: moveEffect = MOVE_EFFECT_ACC_MINUS_1; break; - #endif + case BATTLE_TERRAIN_GRASS: + moveEffect = (B_SECRET_POWER_EFFECT >= GEN_4 ? MOVE_EFFECT_SLEEP : MOVE_EFFECT_POISON); + break; + case BATTLE_TERRAIN_UNDERWATER: + moveEffect = (B_SECRET_POWER_EFFECT >= GEN_6 ? MOVE_EFFECT_ATK_MINUS_1 : MOVE_EFFECT_DEF_MINUS_1); + break; + case BATTLE_TERRAIN_POND: + moveEffect = (B_SECRET_POWER_EFFECT >= GEN_4 ? MOVE_EFFECT_ATK_MINUS_1 : MOVE_EFFECT_SPD_MINUS_1); + break; + case BATTLE_TERRAIN_MOUNTAIN: + if (B_SECRET_POWER_EFFECT >= GEN_5) + moveEffect = MOVE_EFFECT_ACC_MINUS_1; + else if (B_SECRET_POWER_EFFECT >= GEN_4) + moveEffect = MOVE_EFFECT_FLINCH; + else + moveEffect = MOVE_EFFECT_CONFUSION; + break; + case BATTLE_TERRAIN_PUDDLE: + moveEffect = (B_SECRET_POWER_EFFECT >= GEN_5 ? MOVE_EFFECT_SPD_MINUS_1 : MOVE_EFFECT_ACC_MINUS_1); + break; case BATTLE_TERRAIN_LONG_GRASS: moveEffect = MOVE_EFFECT_SLEEP; break; @@ -14465,11 +14413,7 @@ u16 GetSecretPowerMoveEffect(void) break; case BATTLE_TERRAIN_SNOW: case BATTLE_TERRAIN_ICE: - #if B_USE_FROSTBITE == TRUE - moveEffect = MOVE_EFFECT_FROSTBITE; - #else - moveEffect = MOVE_EFFECT_FREEZE; - #endif + moveEffect = (B_USE_FROSTBITE == TRUE ? MOVE_EFFECT_FROSTBITE : MOVE_EFFECT_FREEZE); break; case BATTLE_TERRAIN_VOLCANO: moveEffect = MOVE_EFFECT_BURN; @@ -14520,17 +14464,14 @@ static void Cmd_pickup(void) else { u32 rand = Random() % 100; + u32 percentTotal = 0; - for (j = 0; j < ARRAY_COUNT(sPickupProbabilities); j++) + for (j = 0; j < ARRAY_COUNT(sPickupTable); j++) { - if (sPickupProbabilities[j] > rand) + percentTotal += sPickupTable[j].percentage[lvlDivBy10]; + if (rand < percentTotal) { - SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sPickupItems[lvlDivBy10 + j]); - break; - } - else if (rand == 99 || rand == 98) - { - SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sRarePickupItems[lvlDivBy10 + (99 - rand)]); + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sPickupTable[j].itemId); break; } } @@ -14547,7 +14488,7 @@ static void Cmd_pickup(void) SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &heldItem); } } - #if P_SHUCKLE_BERRY_JUICE == TRUE + #if P_SHUCKLE_BERRY_JUICE == GEN_2 else if (species == SPECIES_SHUCKLE && heldItem == ITEM_ORAN_BERRY && (Random() % 16) == 0) @@ -14579,7 +14520,8 @@ static void Cmd_settypebasedhalvers(void) if (gBattleMoves[gCurrentMove].effect == EFFECT_MUD_SPORT) { - #if B_SPORT_TURNS >= GEN_6 + if (B_SPORT_TURNS >= GEN_6) + { if (!(gFieldStatuses & STATUS_FIELD_MUDSPORT)) { gFieldStatuses |= STATUS_FIELD_MUDSPORT; @@ -14587,18 +14529,21 @@ static void Cmd_settypebasedhalvers(void) gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEAKEN_ELECTRIC; worked = TRUE; } - #else + } + else + { if (!(gStatuses4[gBattlerAttacker] & STATUS4_MUD_SPORT)) { gStatuses4[gBattlerAttacker] |= STATUS4_MUD_SPORT; gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEAKEN_ELECTRIC; worked = TRUE; } - #endif + } } else // Water Sport { - #if B_SPORT_TURNS >= GEN_6 + if (B_SPORT_TURNS >= GEN_6) + { if (!(gFieldStatuses & STATUS_FIELD_WATERSPORT)) { gFieldStatuses |= STATUS_FIELD_WATERSPORT; @@ -14606,14 +14551,16 @@ static void Cmd_settypebasedhalvers(void) gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEAKEN_FIRE; worked = TRUE; } - #else + } + else + { if (!(gStatuses4[gBattlerAttacker] & STATUS4_WATER_SPORT)) { gStatuses4[gBattlerAttacker] |= STATUS4_WATER_SPORT; gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEAKEN_FIRE; worked = TRUE; } - #endif + } } if (worked) @@ -14626,10 +14573,6 @@ bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move) { if (!(gBattleMons[battlerDef].status2 & STATUS2_SUBSTITUTE)) return FALSE; -#if B_SOUND_SUBSTITUTE >= GEN_6 - else if (gBattleMoves[move].soundMove) - return FALSE; -#endif else if (gBattleMoves[move].ignoresSubstitute) return FALSE; else if (GetBattlerAbility(battlerAtk) == ABILITY_INFILTRATOR) @@ -14640,7 +14583,7 @@ bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move) bool32 DoesDisguiseBlockMove(u32 battlerAtk, u32 battlerDef, u32 move) { - if (gBattleMons[battlerDef].species != SPECIES_MIMIKYU + if (gBattleMons[battlerDef].species != SPECIES_MIMIKYU_DISGUISED || gBattleMons[battlerDef].status2 & STATUS2_TRANSFORMED || IS_MOVE_STATUS(move) || gHitMarker & HITMARKER_IGNORE_DISGUISE @@ -14776,18 +14719,15 @@ static void Cmd_removelightscreenreflect(void) u8 side; bool32 failed; -#if B_BRICK_BREAK >= GEN_4 -// From Gen 4 onwards, Brick Break can remove screens on the user's side if used on an ally - side = GetBattlerSide(gBattlerTarget); -#else - side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; -#endif + if (B_BRICK_BREAK >= GEN_4) + side = GetBattlerSide(gBattlerTarget); // From Gen 4 onwards, Brick Break can remove screens on the user's side if used on an ally + else + side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; -#if B_BRICK_BREAK >= GEN_5 - failed = (gMoveResultFlags & MOVE_RESULT_NO_EFFECT); -#else - failed = FALSE; -#endif + if (B_BRICK_BREAK >= GEN_5) + failed = (gMoveResultFlags & MOVE_RESULT_NO_EFFECT); + else + failed = FALSE; if (!failed && (gSideTimers[side].reflectTimer @@ -14856,7 +14796,7 @@ static void Cmd_handleballthrow(void) else catchRate = gSpeciesInfo[gBattleMons[gBattlerTarget].species].catchRate; - if (gSpeciesInfo[gBattleMons[gBattlerTarget].species].flags & SPECIES_FLAG_ULTRA_BEAST) + if (gSpeciesInfo[gBattleMons[gBattlerTarget].species].isUltraBeast) { if (gLastUsedItem == ITEM_BEAST_BALL) ballMultiplier = 500; @@ -14870,81 +14810,60 @@ static void Cmd_handleballthrow(void) case ITEM_ULTRA_BALL: ballMultiplier = 200; break; - #if B_SPORT_BALL_MODIFIER <= GEN_7 case ITEM_SPORT_BALL: - #endif + if (B_SPORT_BALL_MODIFIER <= GEN_7) + ballMultiplier = 150; case ITEM_GREAT_BALL: case ITEM_SAFARI_BALL: ballMultiplier = 150; break; case ITEM_NET_BALL: if (IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_WATER) || IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_BUG)) - #if B_NET_BALL_MODIFIER >= GEN_7 - ballMultiplier = 350; - #else - ballMultiplier = 300; - #endif + ballMultiplier = B_NET_BALL_MODIFIER >= GEN_7 ? 350 : 300; break; case ITEM_DIVE_BALL: if (GetCurrentMapType() == MAP_TYPE_UNDERWATER - #if B_DIVE_BALL_MODIFIER >= GEN_4 - || gIsFishingEncounter || gIsSurfingEncounter - #endif - ) + || (B_DIVE_BALL_MODIFIER >= GEN_4 && (gIsFishingEncounter || gIsSurfingEncounter))) ballMultiplier = 350; break; case ITEM_NEST_BALL: - #if B_NEST_BALL_MODIFIER >= GEN_6 - //((41 - Pokémon's level) ÷ 10)× if Pokémon's level is between 1 and 29, 1× otherwise. - if (gBattleMons[gBattlerTarget].level < 30) - ballMultiplier = 410 - (gBattleMons[gBattlerTarget].level * 10); - #elif B_NEST_BALL_MODIFIER == GEN_5 - //((41 - Pokémon's level) ÷ 10)×, minimum 1× - if (gBattleMons[gBattlerTarget].level < 31) - ballMultiplier = 410 - (gBattleMons[gBattlerTarget].level * 10); - #else - //((40 - Pokémon's level) ÷ 10)×, minimum 1× - if (gBattleMons[gBattlerTarget].level < 40) + if (B_NEST_BALL_MODIFIER >= GEN_6) { + //((41 - Pokémon's level) ÷ 10)× if Pokémon's level is between 1 and 29, 1× otherwise. + if (gBattleMons[gBattlerTarget].level < 30) + ballMultiplier = 410 - (gBattleMons[gBattlerTarget].level * 10); + } + else if (B_NEST_BALL_MODIFIER >= GEN_5) + { + //((41 - Pokémon's level) ÷ 10)×, minimum 1× + if (gBattleMons[gBattlerTarget].level < 31) + ballMultiplier = 410 - (gBattleMons[gBattlerTarget].level * 10); + } + else if (gBattleMons[gBattlerTarget].level < 40) + { + //((40 - Pokémon's level) ÷ 10)×, minimum 1× ballMultiplier = 400 - (gBattleMons[gBattlerTarget].level * 10); if (ballMultiplier <= 90) ballMultiplier = 100; } - #endif break; case ITEM_REPEAT_BALL: - if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBattlerTarget].species), FLAG_GET_CAUGHT)) - #if B_REPEAT_BALL_MODIFIER >= GEN_7 - ballMultiplier = 350; - #else - ballMultiplier = 300; - #endif - break; + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBattlerTarget].species), FLAG_GET_CAUGHT)) + ballMultiplier = (B_REPEAT_BALL_MODIFIER >= GEN_7 ? 350 : 300); + break; case ITEM_TIMER_BALL: - #if B_TIMER_BALL_MODIFIER >= GEN_5 - ballMultiplier = (gBattleResults.battleTurnCounter * 30) + 100; - #else - ballMultiplier = (gBattleResults.battleTurnCounter * 10) + 100; - #endif + ballMultiplier = 100 + (gBattleResults.battleTurnCounter * (B_TIMER_BALL_MODIFIER >= GEN_5 ? 30 : 10)); if (ballMultiplier > 400) ballMultiplier = 400; break; case ITEM_DUSK_BALL: - RtcCalcLocalTime(); - if ((gLocalTime.hours >= 20 && gLocalTime.hours <= 3) || gMapHeader.cave || gMapHeader.mapType == MAP_TYPE_UNDERGROUND) - #if B_DUSK_BALL_MODIFIER >= GEN_7 - ballMultiplier = 300; - #else - ballMultiplier = 350; - #endif + i = GetTimeOfDay(); + if (i == TIME_EVENING || i == TIME_NIGHT || gMapHeader.cave || gMapHeader.mapType == MAP_TYPE_UNDERGROUND) + ballMultiplier = (B_DUSK_BALL_MODIFIER >= GEN_7 ? 300 : 350); break; case ITEM_QUICK_BALL: if (gBattleResults.battleTurnCounter == 0) - #if B_QUICK_BALL_MODIFIER >= GEN_5 - ballMultiplier = 500; - #else - ballMultiplier = 400; - #endif + ballMultiplier = (B_QUICK_BALL_MODIFIER >= GEN_5 ? 500 : 400); break; case ITEM_LEVEL_BALL: if (gBattleMons[gBattlerAttacker].level >= 4 * gBattleMons[gBattlerTarget].level) @@ -14956,20 +14875,21 @@ static void Cmd_handleballthrow(void) break; case ITEM_LURE_BALL: if (gIsFishingEncounter) - #if B_LURE_BALL_MODIFIER >= GEN_7 - ballMultiplier = 500; - #else - ballMultiplier = 300; - #endif + ballMultiplier = (B_LURE_BALL_MODIFIER >= GEN_7 ? 500 : 300); break; case ITEM_MOON_BALL: - for (i = 0; i < EVOS_PER_MON; i++) + { + const struct Evolution *evolutions = GetSpeciesEvolutions(gBattleMons[gBattlerTarget].species); + if (evolutions == NULL) + break; + for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) { - if (gEvolutionTable[gBattleMons[gBattlerTarget].species][i].method == EVO_ITEM - && gEvolutionTable[gBattleMons[gBattlerTarget].species][i].param == ITEM_MOON_STONE) + if (evolutions[i].method == EVO_ITEM + && evolutions[i].param == ITEM_MOON_STONE) ballMultiplier = 400; } - break; + } + break; case ITEM_LOVE_BALL: if (gBattleMons[gBattlerTarget].species == gBattleMons[gBattlerAttacker].species) { @@ -14985,45 +14905,46 @@ static void Cmd_handleballthrow(void) ballMultiplier = 400; break; case ITEM_HEAVY_BALL: - i = GetPokedexHeightWeight(SpeciesToNationalPokedexNum(gBattleMons[gBattlerTarget].species), 1); - #if B_HEAVY_BALL_MODIFIER >= GEN_7 - if (i < 1000) - ballAddition = -20; - else if (i < 2000) - ballAddition = 0; - else if (i < 3000) - ballAddition = 20; + i = GetSpeciesWeight(gBattleMons[gBattlerTarget].species); + if (B_HEAVY_BALL_MODIFIER >= GEN_7) + { + if (i < 1000) + ballAddition = -20; + else if (i < 2000) + ballAddition = 0; + else if (i < 3000) + ballAddition = 20; + else + ballAddition = 30; + } + else if (B_HEAVY_BALL_MODIFIER >= GEN_4) + { + if (i < 2048) + ballAddition = -20; + else if (i < 3072) + ballAddition = 20; + else if (i < 4096) + ballAddition = 30; + else + ballAddition = 40; + } else - ballAddition = 30; - #elif B_HEAVY_BALL_MODIFIER >= GEN_4 - if (i < 2048) - ballAddition = -20; - else if (i < 3072) - ballAddition = 20; - else if (i < 4096) - ballAddition = 30; - else - ballAddition = 40; - #else - if (i < 1024) - ballAddition = -20; - else if (i < 2048) - ballAddition = 0; - else if (i < 3072) - ballAddition = 20; - else if (i < 4096) - ballAddition = 30; - else - ballAddition = 40; - #endif + { + if (i < 1024) + ballAddition = -20; + else if (i < 2048) + ballAddition = 0; + else if (i < 3072) + ballAddition = 20; + else if (i < 4096) + ballAddition = 30; + else + ballAddition = 40; + } break; case ITEM_DREAM_BALL: - #if B_DREAM_BALL_MODIFIER >= GEN_8 - if (gBattleMons[gBattlerTarget].status1 & STATUS1_SLEEP || GetBattlerAbility(gBattlerTarget) == ABILITY_COMATOSE) + if (B_DREAM_BALL_MODIFIER >= GEN_8 && (gBattleMons[gBattlerTarget].status1 & STATUS1_SLEEP || GetBattlerAbility(gBattlerTarget) == ABILITY_COMATOSE)) ballMultiplier = 400; - #else - ballMultiplier = 100; - #endif break; case ITEM_BEAST_BALL: ballMultiplier = 10; @@ -15049,7 +14970,7 @@ static void Cmd_handleballthrow(void) if (gBattleResults.catchAttempts[gLastUsedItem - FIRST_BALL] < 255) gBattleResults.catchAttempts[gLastUsedItem - FIRST_BALL]++; - if (odds > 254) // mon caught + if (odds >= 255) // mon caught { BtlController_EmitBallThrowAnim(gBattlerAttacker, BUFFER_A, BALL_3_SHAKES_SUCCESS); MarkBattlerForControllerExec(gBattlerAttacker); @@ -15094,8 +15015,16 @@ static void Cmd_handleballthrow(void) } else { - odds = Sqrt(Sqrt(16711680 / odds)); - odds = 1048560 / odds; + if (P_CATCH_CURVE >= GEN_6) + { + odds = (255 * 255 * 255) / (odds * odds * odds); + odds = 65536 / Sqrt(Sqrt(Sqrt(Sqrt(odds)))); + } + else + { + odds = Sqrt(Sqrt(16711680 / odds)); + odds = 1048560 / odds; + } for (shakes = 0; shakes < maxShakes && Random() < odds; shakes++); } @@ -15176,7 +15105,7 @@ static void Cmd_trysetcaughtmondexflags(void) { CMD_ARGS(const u8 *failInstr); - u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_SPECIES, NULL); + u32 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_SPECIES, NULL); u32 personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_PERSONALITY, NULL); if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) @@ -15206,7 +15135,7 @@ static void Cmd_displaydexinfo(void) if (!gPaletteFade.active) { FreeAllWindowBuffers(); - gBattleCommunication[TASK_ID] = DisplayCaughtMonDexPage(SpeciesToNationalPokedexNum(species), + gBattleCommunication[TASK_ID] = DisplayCaughtMonDexPage(species, gBattleMons[GetCatchingBattler()].otId, gBattleMons[GetCatchingBattler()].personality); gBattleCommunication[0]++; @@ -15403,17 +15332,14 @@ static void Cmd_removeattackerstatus1(void) gBattlescriptCurrInstr = cmd->nextInstr; } +// CMD_ARGS is not needed for these functions as they end the script execution. static void Cmd_finishaction(void) { - CMD_ARGS(); - gCurrentActionFuncId = B_ACTION_FINISHED; } static void Cmd_finishturn(void) { - CMD_ARGS(); - gCurrentActionFuncId = B_ACTION_FINISHED; gCurrentTurnActionNumber = gBattlersCount; } @@ -15578,7 +15504,6 @@ void BS_CalcMetalBurstDmg(void) } else { - gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = TRUE; gBattlescriptCurrInstr = cmd->failInstr; } } @@ -15649,8 +15574,12 @@ void BS_DoStockpileStatChangesWearOff(void) static bool32 CriticalCapture(u32 odds) { -#if B_CRITICAL_CAPTURE == TRUE - u32 numCaught = GetNationalPokedexCount(FLAG_GET_CAUGHT); + u32 numCaught; + + if (B_CRITICAL_CAPTURE == FALSE) + return FALSE; + + numCaught = GetNationalPokedexCount(FLAG_GET_CAUGHT); if (numCaught <= (NATIONAL_DEX_COUNT * 30) / 650) odds = 0; @@ -15673,46 +15602,15 @@ static bool32 CriticalCapture(u32 odds) return TRUE; return FALSE; -#else - return FALSE; -#endif } -static const u16 sParentalBondBannedEffects[] = -{ - EFFECT_BEAT_UP, - EFFECT_BIDE, // Note: Bide should work with Parental Bond. This will be addressed in future. - EFFECT_ENDEAVOR, - EFFECT_EXPLOSION, - EFFECT_FINAL_GAMBIT, - EFFECT_FLING, - EFFECT_GEOMANCY, - EFFECT_METEOR_BEAM, - EFFECT_MULTI_HIT, - EFFECT_OHKO, - EFFECT_ROLLOUT, - EFFECT_SEMI_INVULNERABLE, - EFFECT_SKULL_BASH, - EFFECT_SKY_DROP, - EFFECT_SOLAR_BEAM, - EFFECT_TRIPLE_KICK, - EFFECT_TWO_TURNS_ATTACK, - EFFECT_UPROAR, -}; - bool32 IsMoveAffectedByParentalBond(u32 move, u32 battler) { - if (move != MOVE_NONE && move != MOVE_STRUGGLE + if (move != MOVE_NONE && move != MOVE_UNAVAILABLE && move != MOVE_STRUGGLE + && !gBattleMoves[move].parentalBondBanned && gBattleMoves[move].split != SPLIT_STATUS && gBattleMoves[move].strikeCount < 2) { - u32 i; - for (i = 0; i < ARRAY_COUNT(sParentalBondBannedEffects); i++) - { - if (gBattleMoves[move].effect == sParentalBondBannedEffects[i]) - return FALSE; - } - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { switch (GetBattlerMoveTargetType(battler, move)) @@ -15749,6 +15647,25 @@ static bool8 IsFinalStrikeEffect(u16 move) return FALSE; } +static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 byIntimidate) +{ + switch (abilityDef) + { + case ABILITY_CLEAR_BODY: + case ABILITY_FULL_METAL_BODY: + case ABILITY_WHITE_SMOKE: + return TRUE; + case ABILITY_INNER_FOCUS: + case ABILITY_SCRAPPY: + case ABILITY_OWN_TEMPO: + case ABILITY_OBLIVIOUS: + if (byIntimidate && (B_UPDATED_INTIMIDATE >= GEN_8)) + return TRUE; + break; + } + return FALSE; +} + void BS_CheckParentalBondCounter(void) { NATIVE_ARGS(u8 counter, const u8 *jumpInstr); @@ -15809,7 +15726,7 @@ static void TryUpdateRoundTurnOrder(void) u32 i; u32 j = 0; u32 k = 0; - u32 currRounder; + u32 currRounder = 0; u8 roundUsers[3] = {0xFF, 0xFF, 0xFF}; u8 nonRoundUsers[3] = {0xFF, 0xFF, 0xFF}; for (i = 0; i < gBattlersCount; i++) @@ -15897,7 +15814,7 @@ void ApplyExperienceMultipliers(s32 *expAmount, u8 expGetterMonId, u8 faintedBat *expAmount = (*expAmount * 150) / 100; if (B_UNEVOLVED_EXP_MULTIPLIER >= GEN_6 && IsMonPastEvolutionLevel(&gPlayerParty[expGetterMonId])) *expAmount = (*expAmount * 4915) / 4096; - if (B_AFFECTION_MECHANICS == TRUE && GetBattlerFriendshipScore(expGetterMonId) >= FRIENDSHIP_50_TO_99) + if (B_AFFECTION_MECHANICS == TRUE && GetBattlerAffectionHearts(expGetterMonId) >= AFFECTION_FOUR_HEARTS) *expAmount = (*expAmount * 4915) / 4096; if (CheckBagHasItem(ITEM_EXP_CHARM, 1)) //is also for other exp boosting Powers if/when implemented *expAmount = (*expAmount * 150) / 100; @@ -16317,6 +16234,207 @@ void BS_TryReflectType(void) } } +void BS_TrySetOctolock(void) +{ + NATIVE_ARGS(u8 battler, const u8 *failInstr); + u32 battler = GetBattlerForBattleScript(cmd->battler); + + if (gDisableStructs[battler].octolock) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else + { + gDisableStructs[battler].octolock = TRUE; + gBattleMons[battler].status2 |= STATUS2_ESCAPE_PREVENTION; + gDisableStructs[battler].battlerPreventingEscape = gBattlerAttacker; + gBattlescriptCurrInstr = cmd->nextInstr; + } +} + +void BS_SetGlaiveRush(void) +{ + NATIVE_ARGS(); + + gStatuses4[gBattlerAttacker] |= STATUS4_GLAIVE_RUSH; + + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_TryRelicSong(void) +{ + NATIVE_ARGS(); + + if (GetBattlerAbility(gBattlerAttacker) != ABILITY_SHEER_FORCE && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED)) + { + if (gBattleMons[gBattlerAttacker].species == SPECIES_MELOETTA_ARIA) + gBattleMons[gBattlerAttacker].species = SPECIES_MELOETTA_PIROUETTE; + else if (gBattleMons[gBattlerAttacker].species == SPECIES_MELOETTA_PIROUETTE) + gBattleMons[gBattlerAttacker].species = SPECIES_MELOETTA_ARIA; + + BattleScriptPush(cmd->nextInstr); + gBattlescriptCurrInstr = BattleScript_AttackerFormChangeMoveEffect; + } + else + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_SetPledge(void) +{ + NATIVE_ARGS(const u8 *jumpInstr); + + u32 partner = BATTLE_PARTNER(gBattlerAttacker); + u32 partnerMove = gBattleMons[partner].moves[gBattleStruct->chosenMovePositions[partner]]; + u32 i = 0; + u32 k = 0; + + if (gBattleStruct->pledgeMove) + { + PrepareStringBattle(STRINGID_USEDMOVE, gBattlerAttacker); + gHitMarker |= HITMARKER_ATTACKSTRING_PRINTED; + + if ((gCurrentMove == MOVE_GRASS_PLEDGE && partnerMove == MOVE_WATER_PLEDGE) + || (gCurrentMove == MOVE_WATER_PLEDGE && partnerMove == MOVE_GRASS_PLEDGE)) + { + gCurrentMove = MOVE_GRASS_PLEDGE; + gBattlescriptCurrInstr = BattleScript_EffectCombinedPledge_Grass; + } + else if ((gCurrentMove == MOVE_FIRE_PLEDGE && partnerMove == MOVE_GRASS_PLEDGE) + || (gCurrentMove == MOVE_GRASS_PLEDGE && partnerMove == MOVE_FIRE_PLEDGE)) + { + gCurrentMove = MOVE_FIRE_PLEDGE; + gBattlescriptCurrInstr = BattleScript_EffectCombinedPledge_Fire; + } + else if ((gCurrentMove == MOVE_WATER_PLEDGE && partnerMove == MOVE_FIRE_PLEDGE) + || (gCurrentMove == MOVE_FIRE_PLEDGE && partnerMove == MOVE_WATER_PLEDGE)) + { + gCurrentMove = MOVE_WATER_PLEDGE; + gBattlescriptCurrInstr = BattleScript_EffectCombinedPledge_Water; + } + + gBattleCommunication[MSG_DISPLAY] = 0; + } + else if ((gChosenActionByBattler[partner] == B_ACTION_USE_MOVE) + && gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && IsBattlerAlive(partner) + && gCurrentMove != partnerMove + && gBattleMoves[partnerMove].effect == EFFECT_PLEDGE) + { + u32 currPledgeUser = 0; + u32 newTurnOrder[] = {0xFF, 0xFF}; + + for (i = 0; i < gBattlersCount; i++) + { + if (gBattlerByTurnOrder[i] == gBattlerAttacker) + { + currPledgeUser = i + 1; // Current battler going after attacker + break; + } + } + for (i = currPledgeUser; i < gBattlersCount; i++) + { + if (gBattlerByTurnOrder[i] != partner) + { + newTurnOrder[k] = gBattlerByTurnOrder[i]; + k++; + } + } + + gBattlerByTurnOrder[currPledgeUser] = partner; + currPledgeUser++; + + for (i = 0; newTurnOrder[i] != 0xFF && i < 2; i++) + { + gBattlerByTurnOrder[currPledgeUser] = newTurnOrder[i]; + currPledgeUser++; + } + + gBattleStruct->pledgeMove = TRUE; + gBattleScripting.battler = partner; + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + { + gBattlescriptCurrInstr = cmd->jumpInstr; + + } +} + +void BS_SetPledgeStatus(void) +{ + NATIVE_ARGS(u8 battler, u32 sideStatus); + + u32 battler = GetBattlerForBattleScript(cmd->battler); + u32 side = GetBattlerSide(battler); + + gBattleStruct->pledgeMove = FALSE; + if (!(gSideStatuses[side] & cmd->sideStatus)) + { + gSideStatuses[side] |= cmd->sideStatus; + + switch (cmd->sideStatus) + { + case SIDE_STATUS_RAINBOW: + gSideTimers[side].rainbowTimer = 4; + break; + case SIDE_STATUS_SEA_OF_FIRE: + gSideTimers[side].seaOfFireTimer = 4; + break; + case SIDE_STATUS_SWAMP: + gSideTimers[side].swampTimer = 4; + } + + gBattlescriptCurrInstr = cmd->nextInstr; + } + else + gBattlescriptCurrInstr = BattleScript_MoveEnd; +} + +void BS_TryTrainerSlideZMoveMsg(void) +{ + NATIVE_ARGS(); + s32 shouldSlide; + + if ((shouldSlide = ShouldDoTrainerSlide(gBattlerAttacker, TRAINER_SLIDE_Z_MOVE))) + { + gBattleScripting.battler = gBattlerAttacker; + BattleScriptPush(cmd->nextInstr); + gBattlescriptCurrInstr = (shouldSlide == 1 ? BattleScript_TrainerASlideMsgRet : BattleScript_TrainerBSlideMsgRet); + } + else + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_TryTrainerSlideMegaEvolutionMsg(void) +{ + NATIVE_ARGS(); + s32 shouldSlide; + + if ((shouldSlide = ShouldDoTrainerSlide(gBattlerAttacker, TRAINER_SLIDE_MEGA_EVOLUTION))) + { + gBattleScripting.battler = gBattlerAttacker; + BattleScriptPush(cmd->nextInstr); + gBattlescriptCurrInstr = (shouldSlide == 1 ? BattleScript_TrainerASlideMsgRet : BattleScript_TrainerBSlideMsgRet); + } + else + gBattlescriptCurrInstr = cmd->nextInstr; +} + +void BS_TryTrainerSlideDynamaxMsg(void) +{ + NATIVE_ARGS(); + s32 shouldSlide; + + if ((shouldSlide = ShouldDoTrainerSlide(gBattlerAttacker, TRAINER_SLIDE_DYNAMAX))) + { + gBattleScripting.battler = gBattlerAttacker; + BattleScriptPush(cmd->nextInstr); + gBattlescriptCurrInstr = (shouldSlide == 1 ? BattleScript_TrainerASlideMsgRet : BattleScript_TrainerBSlideMsgRet); + } + else + gBattlescriptCurrInstr = cmd->nextInstr; +} + void BS_TryHealPulse(void) { NATIVE_ARGS(const u8 *failInstr); @@ -16328,11 +16446,11 @@ void BS_TryHealPulse(void) else { if (GetBattlerAbility(gBattlerAttacker) == ABILITY_MEGA_LAUNCHER && gBattleMoves[gCurrentMove].pulseMove) - gBattleMoveDamage = -(gBattleMons[gBattlerTarget].maxHP * 75 / 100); + gBattleMoveDamage = -(GetNonDynamaxMaxHP(gBattlerTarget) * 75 / 100); else if (gFieldStatuses & STATUS_FIELD_GRASSY_TERRAIN && gBattleMoves[gCurrentMove].argument == MOVE_EFFECT_FLORAL_HEALING) - gBattleMoveDamage = -(gBattleMons[gBattlerTarget].maxHP * 2 / 3); + gBattleMoveDamage = -(GetNonDynamaxMaxHP(gBattlerTarget) * 2 / 3); else - gBattleMoveDamage = -(gBattleMons[gBattlerTarget].maxHP / 2); + gBattleMoveDamage = -(GetNonDynamaxMaxHP(gBattlerTarget) / 2); if (gBattleMoveDamage == 0) gBattleMoveDamage = -1; @@ -16340,6 +16458,27 @@ void BS_TryHealPulse(void) } } +void BS_TryCopycat(void) +{ + NATIVE_ARGS(const u8 *failInstr); + + if (gLastUsedMove == MOVE_NONE || gLastUsedMove == MOVE_UNAVAILABLE || gBattleMoves[gLastUsedMove].copycatBanned) + { + gBattlescriptCurrInstr = cmd->failInstr; + } + else + { + if (IsMaxMove(gLastUsedMove)) + gCalledMove = gBattleStruct->dynamax.lastUsedBaseMove; + else + gCalledMove = gLastUsedMove; + + gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED; + gBattlerTarget = GetMoveTarget(gCalledMove, NO_TARGET_OVERRIDE); + gBattlescriptCurrInstr = cmd->nextInstr; + } +} + void BS_TryDefog(void) { NATIVE_ARGS(u8 clear, const u8 *failInstr); @@ -16359,3 +16498,16 @@ void BS_TryDefog(void) gBattlescriptCurrInstr = cmd->failInstr; } } + +void BS_TryTriggerStatusForm(void) +{ + NATIVE_ARGS(); + if (TryBattleFormChange(gBattlerTarget, FORM_CHANGE_STATUS)) + { + gBattleScripting.battler = gBattlerTarget; + BattleScriptPush(cmd->nextInstr); + gBattlescriptCurrInstr = BattleScript_TargetFormChangeWithStringNoPopup; + return; + } + gBattlescriptCurrInstr = cmd->nextInstr; +} diff --git a/src/battle_setup.c b/src/battle_setup.c index 1bc13d8d90..750191d74f 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -1,5 +1,6 @@ #include "global.h" #include "battle.h" +#include "load_save.h" #include "battle_setup.h" #include "battle_transition.h" #include "main.h" @@ -37,6 +38,8 @@ #include "mirage_tower.h" #include "field_screen_effect.h" #include "data.h" +#include "vs_seeker.h" +#include "item.h" #include "constants/battle_frontier.h" #include "constants/battle_setup.h" #include "constants/game_stat.h" @@ -81,6 +84,8 @@ static void TryUpdateGymLeaderRematchFromTrainer(void); static void CB2_GiveStarter(void); static void CB2_StartFirstBattle(void); static void CB2_EndFirstBattle(void); +static void SaveChangesToPlayerParty(void); +static void HandleBattleVariantEndParty(void); static void CB2_EndTrainerBattle(void); static bool32 IsPlayerDefeated(u32 battleOutcome); static u16 GetRematchTrainerId(u16 trainerId); @@ -590,18 +595,21 @@ void BattleSetup_StartLegendaryBattle(void) { default: case SPECIES_GROUDON: - gBattleTypeFlags |= BATTLE_TYPE_GROUDON; + case SPECIES_GROUDON_PRIMAL: CreateBattleStartTask(B_TRANSITION_GROUDON, MUS_VS_KYOGRE_GROUDON); break; case SPECIES_KYOGRE: - gBattleTypeFlags |= BATTLE_TYPE_KYOGRE; + case SPECIES_KYOGRE_PRIMAL: CreateBattleStartTask(B_TRANSITION_KYOGRE, MUS_VS_KYOGRE_GROUDON); break; case SPECIES_RAYQUAZA: - gBattleTypeFlags |= BATTLE_TYPE_RAYQUAZA; + case SPECIES_RAYQUAZA_MEGA: CreateBattleStartTask(B_TRANSITION_RAYQUAZA, MUS_VS_RAYQUAZA); break; - case SPECIES_DEOXYS: + case SPECIES_DEOXYS_NORMAL: + case SPECIES_DEOXYS_ATTACK: + case SPECIES_DEOXYS_DEFENSE: + case SPECIES_DEOXYS_SPEED: CreateBattleStartTask(B_TRANSITION_BLUR, MUS_RG_VS_DEOXYS); break; case SPECIES_LUGIA: @@ -623,7 +631,7 @@ void StartGroudonKyogreBattle(void) { LockPlayerFieldControls(); gMain.savedCallback = CB2_EndScriptedWildBattle; - gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON; + gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; if (gGameVersion == VERSION_RUBY) CreateBattleStartTask(B_TRANSITION_ANGLED_WIPES, MUS_VS_KYOGRE_GROUDON); // GROUDON @@ -643,7 +651,7 @@ void StartRegiBattle(void) LockPlayerFieldControls(); gMain.savedCallback = CB2_EndScriptedWildBattle; - gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI; + gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES); switch (species) @@ -669,6 +677,19 @@ void StartRegiBattle(void) TryUpdateGymLeaderRematchFromWild(); } +static void DowngradeBadPoison(void) +{ + u8 i; + u32 status = STATUS1_POISON; + if (B_TOXIC_REVERSAL < GEN_5) + return; + for(i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_HAS_SPECIES) && GetMonData(&gPlayerParty[i], MON_DATA_STATUS) == STATUS1_TOXIC_POISON) + SetMonData(&gPlayerParty[i], MON_DATA_STATUS, &status); + } +} + static void CB2_EndWildBattle(void) { CpuFill16(0, (void *)(BG_PLTT), BG_PLTT_SIZE); @@ -681,6 +702,7 @@ static void CB2_EndWildBattle(void) else { SetMainCallback2(CB2_ReturnToField); + DowngradeBadPoison(); gFieldCallback = FieldCB_ReturnToFieldNoScriptCheckMusic; } } @@ -699,6 +721,7 @@ static void CB2_EndScriptedWildBattle(void) } else { + DowngradeBadPoison(); SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } } @@ -989,6 +1012,7 @@ static void CB2_StartFirstBattle(void) static void CB2_EndFirstBattle(void) { Overworld_ClearSavedMusic(); + DowngradeBadPoison(); SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } @@ -1289,7 +1313,7 @@ static void SetBattledTrainersFlags(void) FlagSet(GetTrainerAFlag()); } -static void SetBattledTrainerFlag(void) +static void UNUSED SetBattledTrainerFlag(void) { FlagSet(GetTrainerAFlag()); } @@ -1377,15 +1401,41 @@ void BattleSetup_StartTrainerBattle_Debug(void) ScriptContext_Stop(); } +static void SaveChangesToPlayerParty(void) +{ + u8 i = 0, j = 0; + u8 participatedPokemon = VarGet(B_VAR_SKY_BATTLE); + for (i = 0; i < PARTY_SIZE; i++) + { + if ((participatedPokemon >> i & 1) == 1) + { + gSaveBlock1Ptr->playerParty[i] = gPlayerParty[j]; + j++; + } + } +} + +static void HandleBattleVariantEndParty(void) +{ + if (B_FLAG_SKY_BATTLE == 0 || !FlagGet(B_FLAG_SKY_BATTLE)) + return; + SaveChangesToPlayerParty(); + LoadPlayerParty(); + FlagClear(B_FLAG_SKY_BATTLE); +} + static void CB2_EndTrainerBattle(void) { + HandleBattleVariantEndParty(); + if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE) { + DowngradeBadPoison(); SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } else if (IsPlayerDefeated(gBattleOutcome) == TRUE) { - if (InBattlePyramid() || InTrainerHillChallenge()) + if (InBattlePyramid() || InTrainerHillChallenge() || (!NoAliveMonsForPlayer())) SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); else SetMainCallback2(CB2_WhiteOut); @@ -1393,6 +1443,7 @@ static void CB2_EndTrainerBattle(void) else { SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + DowngradeBadPoison(); if (!InBattlePyramid() && !InTrainerHillChallenge()) { RegisterTrainerInMatchCall(); @@ -1405,6 +1456,7 @@ static void CB2_EndRematchBattle(void) { if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE) { + DowngradeBadPoison(); SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } else if (IsPlayerDefeated(gBattleOutcome) == TRUE) @@ -1417,6 +1469,7 @@ static void CB2_EndRematchBattle(void) RegisterTrainerInMatchCall(); SetBattledTrainersFlags(); HandleRematchVarsOnBattleEnd(); + DowngradeBadPoison(); } } @@ -1596,7 +1649,7 @@ static const u8 *GetTrainerCantBattleSpeech(void) return ReturnEmptyStringIfNull(sTrainerCannotBattleSpeech); } -static s32 FirstBattleTrainerIdToRematchTableId(const struct RematchTrainer *table, u16 trainerId) +s32 FirstBattleTrainerIdToRematchTableId(const struct RematchTrainer *table, u16 trainerId) { s32 i; @@ -1609,7 +1662,7 @@ static s32 FirstBattleTrainerIdToRematchTableId(const struct RematchTrainer *tab return -1; } -static s32 TrainerIdToRematchTableId(const struct RematchTrainer *table, u16 trainerId) +s32 TrainerIdToRematchTableId(const struct RematchTrainer *table, u16 trainerId) { s32 i, j; @@ -1655,30 +1708,42 @@ static void SetRematchIdForTrainer(const struct RematchTrainer *table, u32 table gSaveBlock1Ptr->trainerRematches[tableId] = i; } +static bool32 DoesCurrentMapMatchRematchTrainerMap(s32 i, const struct RematchTrainer *table, u16 mapGroup, u16 mapNum) +{ + return table[i].mapGroup == mapGroup && table[i].mapNum == mapNum; +} + +bool32 TrainerIsMatchCallRegistered(s32 i) +{ + return FlagGet(FLAG_MATCH_CALL_REGISTERED + i); +} + static bool32 UpdateRandomTrainerRematches(const struct RematchTrainer *table, u16 mapGroup, u16 mapNum) { s32 i; - bool32 ret = FALSE; + + if (CheckBagHasItem(ITEM_VS_SEEKER, 1) && I_VS_SEEKER_CHARGING != 0) + return FALSE; for (i = 0; i <= REMATCH_SPECIAL_TRAINER_START; i++) { - if (table[i].mapGroup == mapGroup && table[i].mapNum == mapNum && !IsRematchForbidden(i)) + if (DoesCurrentMapMatchRematchTrainerMap(i,table,mapGroup,mapNum) && !IsRematchForbidden(i)) + continue; + + if (gSaveBlock1Ptr->trainerRematches[i] != 0) { - if (gSaveBlock1Ptr->trainerRematches[i] != 0) - { - // Trainer already wants a rematch. Don't bother updating it. - ret = TRUE; - } - else if (FlagGet(FLAG_MATCH_CALL_REGISTERED + i) - && (Random() % 100) <= 30) // 31% chance of getting a rematch. - { - SetRematchIdForTrainer(table, i); - ret = TRUE; - } + // Trainer already wants a rematch. Don't bother updating it. + return TRUE; + } + else if (TrainerIsMatchCallRegistered(i) && ((Random() % 100) <= 30)) + // 31% chance of getting a rematch. + { + SetRematchIdForTrainer(table, i); + return TRUE; } } - return ret; + return FALSE; } void UpdateRematchIfDefeated(s32 rematchTableId) @@ -1741,7 +1806,7 @@ static bool8 IsTrainerReadyForRematch_(const struct RematchTrainer *table, u16 t return TRUE; } -static u16 GetRematchTrainerIdFromTable(const struct RematchTrainer *table, u16 firstBattleTrainerId) +u16 GetRematchTrainerIdFromTable(const struct RematchTrainer *table, u16 firstBattleTrainerId) { const struct RematchTrainer *trainerEntry; s32 i; @@ -1846,7 +1911,9 @@ static bool32 HasAtLeastFiveBadges(void) void IncrementRematchStepCounter(void) { - if (HasAtLeastFiveBadges()) + if (HasAtLeastFiveBadges() + && (I_VS_SEEKER_CHARGING != 0) + && (!CheckBagHasItem(ITEM_VS_SEEKER, 1))) { if (gSaveBlock1Ptr->trainerRematchStepCounter >= STEP_COUNTER_MAX) gSaveBlock1Ptr->trainerRematchStepCounter = STEP_COUNTER_MAX; @@ -1881,7 +1948,10 @@ bool32 IsRematchTrainerIn(u16 mapGroup, u16 mapNum) static u16 GetRematchTrainerId(u16 trainerId) { - return GetRematchTrainerIdFromTable(gRematchTable, trainerId); + if (FlagGet(I_VS_SEEKER_CHARGING) && (I_VS_SEEKER_CHARGING != 0)) + return GetRematchTrainerIdVSSeeker(trainerId); + else + return GetRematchTrainerIdFromTable(gRematchTable, trainerId); } u16 GetLastBeatenRematchTrainerId(u16 trainerId) @@ -1904,6 +1974,9 @@ bool8 IsTrainerReadyForRematch(void) static void HandleRematchVarsOnBattleEnd(void) { + if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) && (I_VS_SEEKER_CHARGING != 0)) + ClearRematchMovementByTrainerId(); + ClearTrainerWantRematchState(gRematchTable, gTrainerBattleOpponent_A); SetBattledTrainersFlags(); } diff --git a/src/battle_tent.c b/src/battle_tent.c index f0f7363f31..b7a9daecba 100644 --- a/src/battle_tent.c +++ b/src/battle_tent.c @@ -313,7 +313,6 @@ static void GenerateInitialRentalMons(void) monSetId = Random() % NUM_SLATEPORT_TENT_MONS; for (j = firstMonId; j < firstMonId + i; j++) { - u16 monId = monIds[j]; if (monIds[j] == monSetId) break; if (species[j] == gFacilityTrainerMons[monSetId].species) diff --git a/src/battle_tower.c b/src/battle_tower.c index 7615c796ee..c30406f798 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -1130,8 +1130,7 @@ u16 GetRandomScaledFrontierTrainerId(u8 challengeNum, u8 battleNum) return trainerId; } -// Unused -static void GetRandomScaledFrontierTrainerIdRange(u8 challengeNum, u8 battleNum, u16 *trainerIdPtr, u8 *rangePtr) +static void UNUSED GetRandomScaledFrontierTrainerIdRange(u8 challengeNum, u8 battleNum, u16 *trainerIdPtr, u8 *rangePtr) { u16 trainerId, range; @@ -1766,7 +1765,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) } // Probably an early draft before the 'CreateApprenticeMon' was written. -static void Unused_CreateApprenticeMons(u16 trainerId, u8 firstMonId) +static void UNUSED Unused_CreateApprenticeMons(u16 trainerId, u8 firstMonId) { s32 i, j; u8 friendship = MAX_FRIENDSHIP; @@ -1842,12 +1841,14 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId) if (trainerId < FRONTIER_TRAINERS_COUNT) { - u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; - u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); // By mistake Battle Tower's Level 50 challenge number is used to determine the IVs for Battle Factory. #ifdef BUGFIX + u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); u8 challengeNum = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode] / FRONTIER_STAGES_PER_CHALLENGE; #else + u8 UNUSED lvlMode = gSaveBlock2Ptr->frontier.lvlMode; + u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE); u8 challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][FRONTIER_LVL_50] / FRONTIER_STAGES_PER_CHALLENGE; #endif if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < FRONTIER_STAGES_PER_CHALLENGE - 1) @@ -2323,7 +2324,7 @@ static void LoadMultiPartnerCandidatesData(void) u32 lvlMode, battleMode; s32 challengeNum; u32 species1, species2; - u32 level; + u32 UNUSED level; struct ObjectEventTemplate *objEventTemplates; objEventTemplates = gSaveBlock1Ptr->objectEventTemplates; @@ -2506,7 +2507,7 @@ static void ShowPartnerCandidateMessage(void) { s32 i, j, partnerId; s32 monId; - s32 level = SetFacilityPtrsGetLevel(); + s32 UNUSED level = SetFacilityPtrsGetLevel(); u16 winStreak = GetCurrentFacilityWinStreak(); s32 challengeNum = winStreak / FRONTIER_STAGES_PER_CHALLENGE; s32 k = gSpecialVar_LastTalked - 2; @@ -2868,7 +2869,7 @@ static void AwardBattleTowerRibbons(void) // This is a leftover debugging function that is used to populate the E-Reader // trainer with the player's current data. -static void FillEReaderTrainerWithPlayerData(void) +static void UNUSED FillEReaderTrainerWithPlayerData(void) { struct BattleTowerEReaderTrainer *ereaderTrainer = &gSaveBlock2Ptr->frontier.ereaderTrainer; s32 i, j; @@ -3003,7 +3004,7 @@ void TryHideBattleTowerReporter(void) static void FillPartnerParty(u16 trainerId) { s32 i, j; - u32 ivs, level; + u32 ivs, level, personality; u32 friendship; u16 monId; u32 otID; @@ -3053,22 +3054,22 @@ static void FillPartnerParty(u16 trainerId) u32 otIdType = OT_ID_RANDOM_NO_SHINY; do { - j = Random32(); - } while (IsShinyOtIdPersonality(otID, j)); + personality = Random32(); + } while (IsShinyOtIdPersonality(otID, personality)); if (partyData[i].gender == TRAINER_MON_MALE) - j = (j & 0xFFFFFF00) | GeneratePersonalityForGender(MON_MALE, partyData[i].species); + personality = (personality & 0xFFFFFF00) | GeneratePersonalityForGender(MON_MALE, partyData[i].species); else if (partyData[i].gender == TRAINER_MON_FEMALE) - j = (j & 0xFFFFFF00) | GeneratePersonalityForGender(MON_FEMALE, partyData[i].species); + personality = (personality & 0xFFFFFF00) | GeneratePersonalityForGender(MON_FEMALE, partyData[i].species); if (partyData[i].nature != 0) - ModifyPersonalityForNature(&j, partyData[i].nature - 1); + ModifyPersonalityForNature(&personality, partyData[i].nature - 1); if (partyData[i].isShiny) { otIdType = OT_ID_PRESET; - otID = HIHALF(j) ^ LOHALF(j); + otID = HIHALF(personality) ^ LOHALF(personality); } - CreateMon(&gPlayerParty[i + 3], partyData[i].species, partyData[i].lvl, 0, TRUE, j, otIdType, otID); + CreateMon(&gPlayerParty[i + 3], partyData[i].species, partyData[i].lvl, 0, TRUE, personality, otIdType, otID); SetMonData(&gPlayerParty[i + 3], MON_DATA_HELD_ITEM, &partyData[i].heldItem); CustomTrainerPartyAssignMoves(&gPlayerParty[i+3], &partyData[i]); diff --git a/src/battle_transition.c b/src/battle_transition.c index 2e87b9c1d7..ae42db1fef 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -779,7 +779,7 @@ static const TransitionStateFunc sTransitionIntroFuncs[] = static const struct SpriteFrameImage sSpriteImage_Pokeball[] = { - sPokeball_Gfx, sizeof(sPokeball_Gfx) + {sPokeball_Gfx, sizeof(sPokeball_Gfx)} }; static const union AnimCmd sSpriteAnim_Pokeball[] = @@ -841,12 +841,12 @@ static const struct OamData sOam_UnusedBrendanLass = static const struct SpriteFrameImage sImageTable_UnusedBrendan[] = { - sUnusedBrendan_Gfx, sizeof(sUnusedBrendan_Gfx) + {sUnusedBrendan_Gfx, sizeof(sUnusedBrendan_Gfx)} }; static const struct SpriteFrameImage sImageTable_UnusedLass[] = { - sUnusedLass_Gfx, sizeof(sUnusedLass_Gfx) + {sUnusedLass_Gfx, sizeof(sUnusedLass_Gfx)} }; static const union AnimCmd sSpriteAnim_UnusedBrendanLass[] = @@ -1017,8 +1017,7 @@ static void CB2_TestBattleTransition(void) UpdatePaletteFade(); } -// Unused -static void TestBattleTransition(u8 transitionId) +static void UNUSED TestBattleTransition(u8 transitionId) { sTestingTransitionId = transitionId; SetMainCallback2(CB2_TestBattleTransition); @@ -1197,7 +1196,7 @@ static bool8 Swirl_Init(struct Task *task) InitTransitionData(); ScanlineEffect_Clear(); BeginNormalPaletteFade(PALETTES_ALL, 4, 0, 16, RGB_BLACK); - SetSinWave(gScanlineEffectRegBuffers[1], sTransitionData->cameraX, 0, 2, 0, DISPLAY_HEIGHT); + SetSinWave((s16*)gScanlineEffectRegBuffers[1], sTransitionData->cameraX, 0, 2, 0, DISPLAY_HEIGHT); SetVBlankCallback(VBlankCB_Swirl); SetHBlankCallback(HBlankCB_Swirl); @@ -1214,7 +1213,7 @@ static bool8 Swirl_End(struct Task *task) task->tSinIndex += 4; task->tAmplitude += 8; - SetSinWave(gScanlineEffectRegBuffers[0], sTransitionData->cameraX, task->tSinIndex, 2, task->tAmplitude, DISPLAY_HEIGHT); + SetSinWave((s16*)gScanlineEffectRegBuffers[0], sTransitionData->cameraX, task->tSinIndex, 2, task->tAmplitude, DISPLAY_HEIGHT); if (!gPaletteFade.active) { @@ -1469,7 +1468,7 @@ static bool8 BigPokeball_SetGfx(struct Task *task) SET_TILE(tilemap, i, j, *bigPokeballMap); } - SetSinWave(gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude, DISPLAY_HEIGHT); + SetSinWave((s16*)gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude, DISPLAY_HEIGHT); task->tState++; return TRUE; @@ -1481,7 +1480,7 @@ static bool8 Aqua_SetGfx(struct Task *task) GetBg0TilesDst(&tilemap, &tileset); LZ77UnCompVram(sTeamAqua_Tilemap, tilemap); - SetSinWave(gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude, DISPLAY_HEIGHT); + SetSinWave((s16*)gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude, DISPLAY_HEIGHT); task->tState++; return FALSE; @@ -1493,7 +1492,7 @@ static bool8 Magma_SetGfx(struct Task *task) GetBg0TilesDst(&tilemap, &tileset); LZ77UnCompVram(sTeamMagma_Tilemap, tilemap); - SetSinWave(gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude, DISPLAY_HEIGHT); + SetSinWave((s16*)gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude, DISPLAY_HEIGHT); task->tState++; return FALSE; @@ -1506,7 +1505,7 @@ static bool8 Regice_SetGfx(struct Task *task) GetBg0TilesDst(&tilemap, &tileset); LoadPalette(sRegice_Palette, BG_PLTT_ID(15), sizeof(sRegice_Palette)); CpuCopy16(sRegice_Tilemap, tilemap, 0x500); - SetSinWave(gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude, DISPLAY_HEIGHT); + SetSinWave((s16*)gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude, DISPLAY_HEIGHT); task->tState++; return FALSE; @@ -1519,7 +1518,7 @@ static bool8 Registeel_SetGfx(struct Task *task) GetBg0TilesDst(&tilemap, &tileset); LoadPalette(sRegisteel_Palette, BG_PLTT_ID(15), sizeof(sRegisteel_Palette)); CpuCopy16(sRegisteel_Tilemap, tilemap, 0x500); - SetSinWave(gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude, DISPLAY_HEIGHT); + SetSinWave((s16*)gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude, DISPLAY_HEIGHT); task->tState++; return FALSE; @@ -1532,7 +1531,7 @@ static bool8 Regirock_SetGfx(struct Task *task) GetBg0TilesDst(&tilemap, &tileset); LoadPalette(sRegirock_Palette, BG_PLTT_ID(15), sizeof(sRegirock_Palette)); CpuCopy16(sRegirock_Tilemap, tilemap, 0x500); - SetSinWave(gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude, DISPLAY_HEIGHT); + SetSinWave((s16*)gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude, DISPLAY_HEIGHT); task->tState++; return FALSE; @@ -1624,7 +1623,7 @@ static bool8 PatternWeave_Blend1(struct Task *task) task->tSinIndex += 8; task->tAmplitude -= 256; - SetSinWave(gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude >> 8, DISPLAY_HEIGHT); + SetSinWave((s16*)gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude >> 8, DISPLAY_HEIGHT); sTransitionData->VBlank_DMA++; return FALSE; @@ -1644,7 +1643,7 @@ static bool8 PatternWeave_Blend2(struct Task *task) task->tSinIndex += 8; task->tAmplitude -= 256; - SetSinWave(gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude >> 8, DISPLAY_HEIGHT); + SetSinWave((s16*)gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude >> 8, DISPLAY_HEIGHT); sTransitionData->VBlank_DMA++; return FALSE; @@ -1656,7 +1655,7 @@ static bool8 PatternWeave_FinishAppear(struct Task *task) task->tSinIndex += 8; task->tAmplitude -= 256; - SetSinWave(gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude >> 8, DISPLAY_HEIGHT); + SetSinWave((s16*)gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude >> 8, DISPLAY_HEIGHT); if (task->tAmplitude <= 0) { @@ -4254,7 +4253,7 @@ static bool8 FrontierLogoWiggle_SetGfx(struct Task *task) GetBg0TilesDst(&tilemap, &tileset); LZ77UnCompVram(sFrontierLogo_Tilemap, tilemap); - SetSinWave(gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude, DISPLAY_HEIGHT); + SetSinWave((s16*)gScanlineEffectRegBuffers[0], 0, task->tSinIndex, 132, task->tAmplitude, DISPLAY_HEIGHT); task->tState++; return TRUE; diff --git a/src/battle_tv.c b/src/battle_tv.c index 361b6fa2b9..af485df70d 100644 --- a/src/battle_tv.c +++ b/src/battle_tv.c @@ -253,7 +253,7 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] = [EFFECT_MEMENTO] = 7, [EFFECT_FACADE] = 1, [EFFECT_FOCUS_PUNCH] = 7, - [EFFECT_SMELLINGSALT] = 1, + [EFFECT_SMELLING_SALTS] = 1, [EFFECT_FOLLOW_ME] = 5, [EFFECT_NATURE_POWER] = 0, [EFFECT_CHARGE] = 4, diff --git a/src/battle_util.c b/src/battle_util.c index 1d45ccc660..cb46689608 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -48,8 +48,6 @@ #include "constants/weather.h" #include "constants/pokemon.h" -extern struct Evolution gEvolutionTable[][EVOS_PER_MON]; - /* NOTE: The data and functions in this file up until (but not including) sSoundMovesTable are actually part of battle_main.c. They needed to be moved to this file in order to @@ -62,7 +60,6 @@ static bool32 IsUnnerveAbilityOnOpposingSide(u32 battler); static u32 GetFlingPowerFromItemId(u32 itemId); static void SetRandomMultiHitCounter(); static u32 GetBattlerItemHoldEffectParam(u32 battler, u32 item); -static uq4_12_t GetInverseTypeMultiplier(uq4_12_t multiplier); static uq4_12_t GetSupremeOverlordModifier(u32 battler); static bool32 CanBeInfinitelyConfused(u32 battler); @@ -114,6 +111,7 @@ static const u16 sSkillSwapBannedAbilities[] = ABILITY_ICE_FACE, ABILITY_HUNGER_SWITCH, ABILITY_GULP_MISSILE, + ABILITY_ZERO_TO_HERO, }; static const u16 sRolePlayBannedAbilities[] = @@ -139,6 +137,7 @@ static const u16 sRolePlayBannedAbilities[] = ABILITY_ICE_FACE, ABILITY_HUNGER_SWITCH, ABILITY_GULP_MISSILE, + ABILITY_ZERO_TO_HERO, }; static const u16 sRolePlayBannedAttackerAbilities[] = @@ -155,6 +154,7 @@ static const u16 sRolePlayBannedAttackerAbilities[] = ABILITY_POWER_CONSTRUCT, ABILITY_ICE_FACE, ABILITY_GULP_MISSILE, + ABILITY_ZERO_TO_HERO, }; static const u16 sWorrySeedBannedAbilities[] = @@ -171,6 +171,7 @@ static const u16 sWorrySeedBannedAbilities[] = ABILITY_TRUANT, ABILITY_ICE_FACE, ABILITY_GULP_MISSILE, + ABILITY_ZERO_TO_HERO, }; static const u16 sGastroAcidBannedAbilities[] = @@ -189,6 +190,7 @@ static const u16 sGastroAcidBannedAbilities[] = ABILITY_SHIELDS_DOWN, ABILITY_STANCE_CHANGE, ABILITY_ZEN_MODE, + ABILITY_ZERO_TO_HERO, }; static const u16 sEntrainmentBannedAttackerAbilities[] = @@ -207,6 +209,7 @@ static const u16 sEntrainmentBannedAttackerAbilities[] = ABILITY_ICE_FACE, ABILITY_HUNGER_SWITCH, ABILITY_GULP_MISSILE, + ABILITY_ZERO_TO_HERO, }; static const u16 sEntrainmentTargetSimpleBeamBannedAbilities[] = @@ -222,6 +225,7 @@ static const u16 sEntrainmentTargetSimpleBeamBannedAbilities[] = ABILITY_BATTLE_BOND, ABILITY_ICE_FACE, ABILITY_GULP_MISSILE, + ABILITY_ZERO_TO_HERO, }; static u8 CalcBeatUpPower(void) @@ -323,8 +327,6 @@ void HandleAction_UseMove(void) gCurrentMove = gBattleStruct->zmove.toBeUsed[gBattlerAttacker]; } - moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); - if (gBattleMons[gBattlerAttacker].hp != 0) { if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) @@ -337,6 +339,15 @@ void HandleAction_UseMove(void) SetTypeBeforeUsingMove(gChosenMove, gBattlerAttacker); GET_MOVE_TYPE(gChosenMove, moveType); + // check max move used + if (gBattleStruct->dynamax.usingMaxMove[gBattlerAttacker]) + { + gCurrentMove = gChosenMove = GetMaxMove(gBattlerAttacker, gCurrentMove); + gBattleStruct->dynamax.activeSplit = gBattleStruct->dynamax.splits[gBattlerAttacker]; + } + + moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); + // choose target side = BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker)); if (IsAffectedByFollowMe(gBattlerAttacker, side, gCurrentMove) @@ -360,6 +371,7 @@ void HandleAction_UseMove(void) || (GetBattlerAbility(battler) == ABILITY_STORM_DRAIN && moveType == TYPE_WATER)) && GetBattlerTurnOrderNum(battler) < var && gBattleMoves[gCurrentMove].effect != EFFECT_SNIPE_SHOT + && gBattleMoves[gCurrentMove].effect != EFFECT_PLEDGE && (GetBattlerAbility(gBattlerAttacker) != ABILITY_PROPELLER_TAIL || GetBattlerAbility(gBattlerAttacker) != ABILITY_STALWART)) { @@ -550,7 +562,7 @@ void HandleAction_UseItem(void) gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; - ClearFuryCutterDestinyBondGrudge(gBattlerAttacker); + ClearVariousBattlerFlags(gBattlerAttacker); gLastUsedItem = gBattleResources->bufferB[gBattlerAttacker][1] | (gBattleResources->bufferB[gBattlerAttacker][2] << 8); gBattlescriptCurrInstr = gBattlescriptsForUsingItem[ItemId_GetBattleUsage(gLastUsedItem) - 1]; @@ -577,12 +589,10 @@ bool32 TryRunFromBattle(u32 battler) gProtectStructs[battler].fleeType = FLEE_ITEM; effect++; } - #if B_GHOSTS_ESCAPE >= GEN_6 - else if (IS_BATTLER_OF_TYPE(battler, TYPE_GHOST)) + else if (B_GHOSTS_ESCAPE >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST)) { effect++; } - #endif else if (GetBattlerAbility(battler) == ABILITY_RUN_AWAY) { if (InBattlePyramid()) @@ -676,7 +686,7 @@ void HandleAction_Run(void) { if (!TryRunFromBattle(gBattlerAttacker)) // failed to run away { - ClearFuryCutterDestinyBondGrudge(gBattlerAttacker); + ClearVariousBattlerFlags(gBattlerAttacker); gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CANT_ESCAPE_2; gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString; gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT; @@ -821,23 +831,21 @@ void HandleAction_NothingIsFainted(void) gCurrentTurnActionNumber++; gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber]; gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED - | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_PASSIVE_DAMAGE + | HITMARKER_NO_PPDEDUCT | HITMARKER_STATUS_ABILITY_EFFECT | HITMARKER_PASSIVE_DAMAGE | HITMARKER_OBEYS | HITMARKER_WAKE_UP_CLEAR | HITMARKER_SYNCHRONISE_EFFECT | HITMARKER_CHARGING | HITMARKER_NEVER_SET); } void HandleAction_ActionFinished(void) { - #if B_RECALC_TURN_AFTER_ACTIONS >= GEN_8 u32 i, j; bool32 afterYouActive = gSpecialStatuses[gBattlerByTurnOrder[gCurrentTurnActionNumber + 1]].afterYou; - #endif *(gBattleStruct->monToSwitchIntoId + gBattlerByTurnOrder[gCurrentTurnActionNumber]) = gSelectedMonPartyId = PARTY_SIZE; gCurrentTurnActionNumber++; gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber]; SpecialStatusesClear(); gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED - | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_PASSIVE_DAMAGE + | HITMARKER_NO_PPDEDUCT | HITMARKER_STATUS_ABILITY_EFFECT | HITMARKER_PASSIVE_DAMAGE | HITMARKER_OBEYS | HITMARKER_WAKE_UP_CLEAR | HITMARKER_SYNCHRONISE_EFFECT | HITMARKER_CHARGING | HITMARKER_NEVER_SET | HITMARKER_IGNORE_DISGUISE); @@ -854,9 +862,9 @@ void HandleAction_ActionFinished(void) gBattleCommunication[4] = 0; gBattleScripting.multihitMoveEffect = 0; gBattleResources->battleScriptsStack->size = 0; + gBattleStruct->dynamax.usingMaxMove[gBattlerAttacker] = 0; - #if B_RECALC_TURN_AFTER_ACTIONS >= GEN_8 - if (!afterYouActive) + if (B_RECALC_TURN_AFTER_ACTIONS >= GEN_8 && !afterYouActive && !gBattleStruct->pledgeMove) { // i starts at `gCurrentTurnActionNumber` because we don't want to recalculate turn order for mon that have already // taken action. It's been previously increased, which we want in order to not recalculate the turn of the mon that just finished its action @@ -886,7 +894,6 @@ void HandleAction_ActionFinished(void) } } } - #endif } static const u8 sAbilitiesAffectedByMoldBreaker[] = @@ -992,6 +999,7 @@ static const u8 sAbilitiesNotTraced[ABILITIES_COUNT] = [ABILITY_STANCE_CHANGE] = 1, [ABILITY_TRACE] = 1, [ABILITY_ZEN_MODE] = 1, + [ABILITY_ZERO_TO_HERO] = 1, }; static const u8 sHoldEffectToType[][2] = @@ -1123,39 +1131,41 @@ static const uq4_12_t sPercentToModifier[] = }; #define X UQ_4_12 +#define ______ X(1.0) // Regular effectiveness. static const uq4_12_t sTypeEffectivenessTable[NUMBER_OF_MON_TYPES][NUMBER_OF_MON_TYPES] = -{ -// normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark fairy - {X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(0.5), X(1.0), X(0.0), X(0.5), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0)}, // normal - {X(2.0), X(1.0), X(0.5), X(0.5), X(1.0), X(2.0), X(0.5), X(0.0), X(2.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(0.5), X(2.0), X(1.0), X(2.0), X(0.5)}, // fight - {X(1.0), X(2.0), X(1.0), X(1.0), X(1.0), X(0.5), X(2.0), X(1.0), X(0.5), X(1.0), X(1.0), X(1.0), X(2.0), X(0.5), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0)}, // flying - {X(1.0), X(1.0), X(1.0), X(0.5), X(0.5), X(0.5), X(1.0), X(0.5), X(0.0), X(1.0), X(1.0), X(1.0), X(2.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(2.0)}, // poison - {X(1.0), X(1.0), X(0.0), X(2.0), X(1.0), X(2.0), X(0.5), X(1.0), X(2.0), X(1.0), X(2.0), X(1.0), X(0.5), X(2.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0)}, // ground - {X(1.0), X(0.5), X(2.0), X(1.0), X(0.5), X(1.0), X(2.0), X(1.0), X(0.5), X(1.0), X(2.0), X(1.0), X(1.0), X(1.0), X(1.0), X(2.0), X(1.0), X(1.0), X(1.0)}, // rock - {X(1.0), X(0.5), X(0.5), X(0.5), X(1.0), X(1.0), X(1.0), X(0.5), X(0.5), X(1.0), X(0.5), X(1.0), X(2.0), X(1.0), X(2.0), X(1.0), X(1.0), X(2.0), X(0.5)}, // bug - #if B_STEEL_RESISTANCES >= GEN_6 - {X(0.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(2.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(2.0), X(1.0), X(1.0), X(0.5), X(1.0)}, // ghost - #else - {X(0.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(2.0), X(0.5), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(2.0), X(1.0), X(1.0), X(0.5), X(1.0)}, // ghost - #endif - {X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(2.0), X(1.0), X(1.0), X(0.5), X(1.0), X(0.5), X(0.5), X(1.0), X(0.5), X(1.0), X(2.0), X(1.0), X(1.0), X(2.0)}, // steel - {X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0)}, // mystery - {X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(0.5), X(2.0), X(1.0), X(2.0), X(1.0), X(0.5), X(0.5), X(2.0), X(1.0), X(1.0), X(2.0), X(0.5), X(1.0), X(1.0)}, // fire - {X(1.0), X(1.0), X(1.0), X(1.0), X(2.0), X(2.0), X(1.0), X(1.0), X(1.0), X(1.0), X(2.0), X(0.5), X(0.5), X(1.0), X(1.0), X(1.0), X(0.5), X(1.0), X(1.0)}, // water - {X(1.0), X(1.0), X(0.5), X(0.5), X(2.0), X(2.0), X(0.5), X(1.0), X(0.5), X(1.0), X(0.5), X(2.0), X(0.5), X(1.0), X(1.0), X(1.0), X(0.5), X(1.0), X(1.0)}, // grass - {X(1.0), X(1.0), X(2.0), X(1.0), X(0.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(2.0), X(0.5), X(0.5), X(1.0), X(1.0), X(0.5), X(1.0), X(1.0)}, // electric - {X(1.0), X(2.0), X(1.0), X(2.0), X(1.0), X(1.0), X(1.0), X(1.0), X(0.5), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(0.5), X(1.0), X(1.0), X(0.0), X(1.0)}, // psychic - {X(1.0), X(1.0), X(2.0), X(1.0), X(2.0), X(1.0), X(1.0), X(1.0), X(0.5), X(1.0), X(0.5), X(0.5), X(2.0), X(1.0), X(1.0), X(0.5), X(2.0), X(1.0), X(1.0)}, // ice - {X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(0.5), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(2.0), X(1.0), X(0.0)}, // dragon - #if B_STEEL_RESISTANCES >= GEN_6 - {X(1.0), X(0.5), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(2.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(2.0), X(1.0), X(1.0), X(0.5), X(0.5)}, // dark - #else - {X(1.0), X(0.5), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(2.0), X(0.5), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(2.0), X(1.0), X(1.0), X(0.5), X(0.5)}, // dark - #endif - {X(1.0), X(2.0), X(1.0), X(0.5), X(1.0), X(1.0), X(1.0), X(1.0), X(0.5), X(1.0), X(0.5), X(1.0), X(1.0), X(1.0), X(1.0), X(1.0), X(2.0), X(2.0), X(1.0)}, // fairy +{// Defender --> + // Attacker Normal Fighting Flying Poison Ground Rock Bug Ghost Steel Mystery Fire Water Grass Electric Psychic Ice Dragon Dark Fairy + [TYPE_NORMAL] = {______, ______, ______, ______, ______, X(0.5), ______, X(0.0), X(0.5), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______}, + [TYPE_FIGHTING] = {X(2.0), ______, X(0.5), X(0.5), ______, X(2.0), X(0.5), X(0.0), X(2.0), ______, ______, ______, ______, ______, X(0.5), X(2.0), ______, X(2.0), X(0.5)}, + [TYPE_FLYING] = {______, X(2.0), ______, ______, ______, X(0.5), X(2.0), ______, X(0.5), ______, ______, ______, X(2.0), X(0.5), ______, ______, ______, ______, ______}, + [TYPE_POISON] = {______, ______, ______, X(0.5), X(0.5), X(0.5), ______, X(0.5), X(0.0), ______, ______, ______, X(2.0), ______, ______, ______, ______, ______, X(2.0)}, + [TYPE_GROUND] = {______, ______, X(0.0), X(2.0), ______, X(2.0), X(0.5), ______, X(2.0), ______, X(2.0), ______, X(0.5), X(2.0), ______, ______, ______, ______, ______}, + [TYPE_ROCK] = {______, X(0.5), X(2.0), ______, X(0.5), ______, X(2.0), ______, X(0.5), ______, X(2.0), ______, ______, ______, ______, X(2.0), ______, ______, ______}, + [TYPE_BUG] = {______, X(0.5), X(0.5), X(0.5), ______, ______, ______, X(0.5), X(0.5), ______, X(0.5), ______, X(2.0), ______, X(2.0), ______, ______, X(2.0), X(0.5)}, +#if B_STEEL_RESISTANCES >= GEN_6 + [TYPE_GHOST] = {X(0.0), ______, ______, ______, ______, ______, ______, X(2.0), ______, ______, ______, ______, ______, ______, X(2.0), ______, ______, X(0.5), ______}, +#else + [TYPE_GHOST] = {X(0.0), ______, ______, ______, ______, ______, ______, X(2.0), X(0.5), ______, ______, ______, ______, ______, X(2.0), ______, ______, X(0.5), ______}, +#endif + [TYPE_STEEL] = {______, ______, ______, ______, ______, X(2.0), ______, ______, X(0.5), ______, X(0.5), X(0.5), ______, X(0.5), ______, X(2.0), ______, ______, X(2.0)}, + [TYPE_MYSTERY] = {______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______}, + [TYPE_FIRE] = {______, ______, ______, ______, ______, X(0.5), X(2.0), ______, X(2.0), ______, X(0.5), X(0.5), X(2.0), ______, ______, X(2.0), X(0.5), ______, ______}, + [TYPE_WATER] = {______, ______, ______, ______, X(2.0), X(2.0), ______, ______, ______, ______, X(2.0), X(0.5), X(0.5), ______, ______, ______, X(0.5), ______, ______}, + [TYPE_GRASS] = {______, ______, X(0.5), X(0.5), X(2.0), X(2.0), X(0.5), ______, X(0.5), ______, X(0.5), X(2.0), X(0.5), ______, ______, ______, X(0.5), ______, ______}, + [TYPE_ELECTRIC] = {______, ______, X(2.0), ______, X(0.0), ______, ______, ______, ______, ______, ______, X(2.0), X(0.5), X(0.5), ______, ______, X(0.5), ______, ______}, + [TYPE_PSYCHIC] = {______, X(2.0), ______, X(2.0), ______, ______, ______, ______, X(0.5), ______, ______, ______, ______, ______, X(0.5), ______, ______, X(0.0), ______}, + [TYPE_ICE] = {______, ______, X(2.0), ______, X(2.0), ______, ______, ______, X(0.5), ______, X(0.5), X(0.5), X(2.0), ______, ______, X(0.5), X(2.0), ______, ______}, + [TYPE_DRAGON] = {______, ______, ______, ______, ______, ______, ______, ______, X(0.5), ______, ______, ______, ______, ______, ______, ______, X(2.0), ______, X(0.0)}, +#if B_STEEL_RESISTANCES >= GEN_6 + [TYPE_DARK] = {______, X(0.5), ______, ______, ______, ______, ______, X(2.0), ______, ______, ______, ______, ______, ______, X(2.0), ______, ______, X(0.5), X(0.5)}, +#else + [TYPE_DARK] = {______, X(0.5), ______, ______, ______, ______, ______, X(2.0), X(0.5), ______, ______, ______, ______, ______, X(2.0), ______, ______, X(0.5), X(0.5)}, +#endif + [TYPE_FAIRY] = {______, X(2.0), ______, X(0.5), ______, ______, ______, ______, X(0.5), ______, X(0.5), ______, ______, ______, ______, ______, X(2.0), X(2.0), ______}, }; +#undef ______ #undef X // code @@ -1211,95 +1221,7 @@ u8 GetBattlerForBattleScript(u8 caseId) return ret; } -void PressurePPLose(u8 target, u8 attacker, u16 move) -{ - int moveIndex; - - if (GetBattlerAbility(target) != ABILITY_PRESSURE) - return; - - for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) - { - if (gBattleMons[attacker].moves[moveIndex] == move) - break; - } - - if (moveIndex == MAX_MON_MOVES) - return; - - if (gBattleMons[attacker].pp[moveIndex] != 0) - gBattleMons[attacker].pp[moveIndex]--; - - if (MOVE_IS_PERMANENT(attacker, moveIndex)) - { - BtlController_EmitSetMonData(attacker, BUFFER_A, REQUEST_PPMOVE1_BATTLE + moveIndex, 0, 1, &gBattleMons[attacker].pp[moveIndex]); - MarkBattlerForControllerExec(attacker); - } -} - -void PressurePPLoseOnUsingImprison(u8 attacker) -{ - int i, j; - int imprisonPos = MAX_MON_MOVES; - u8 atkSide = GetBattlerSide(attacker); - - for (i = 0; i < gBattlersCount; i++) - { - if (atkSide != GetBattlerSide(i) && GetBattlerAbility(i) == ABILITY_PRESSURE) - { - for (j = 0; j < MAX_MON_MOVES; j++) - { - if (gBattleMons[attacker].moves[j] == MOVE_IMPRISON) - break; - } - if (j != MAX_MON_MOVES) - { - imprisonPos = j; - if (gBattleMons[attacker].pp[j] != 0) - gBattleMons[attacker].pp[j]--; - } - } - } - - if (imprisonPos != MAX_MON_MOVES && MOVE_IS_PERMANENT(attacker, imprisonPos)) - { - BtlController_EmitSetMonData(attacker, BUFFER_A, REQUEST_PPMOVE1_BATTLE + imprisonPos, 0, 1, &gBattleMons[attacker].pp[imprisonPos]); - MarkBattlerForControllerExec(attacker); - } -} - -void PressurePPLoseOnUsingPerishSong(u8 attacker) -{ - int i, j; - int perishSongPos = MAX_MON_MOVES; - - for (i = 0; i < gBattlersCount; i++) - { - if (GetBattlerAbility(i) == ABILITY_PRESSURE && i != attacker) - { - for (j = 0; j < MAX_MON_MOVES; j++) - { - if (gBattleMons[attacker].moves[j] == MOVE_PERISH_SONG) - break; - } - if (j != MAX_MON_MOVES) - { - perishSongPos = j; - if (gBattleMons[attacker].pp[j] != 0) - gBattleMons[attacker].pp[j]--; - } - } - } - - if (perishSongPos != MAX_MON_MOVES && MOVE_IS_PERMANENT(attacker, perishSongPos)) - { - BtlController_EmitSetMonData(attacker, BUFFER_A, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[attacker].pp[perishSongPos]); - MarkBattlerForControllerExec(attacker); - } -} - -// Unused -static void MarkAllBattlersForControllerExec(void) +static void UNUSED MarkAllBattlersForControllerExec(void) { int i; @@ -1341,9 +1263,9 @@ void MarkBattlerReceivedLinkData(u32 battler) gBattleControllerExecFlags &= ~((1 << 28) << battler); } -void CancelMultiTurnMoves(u32 battler) +const u8* CancelMultiTurnMoves(u32 battler) { - u8 i; + const u8 *result = NULL; gBattleMons[battler].status2 &= ~(STATUS2_MULTIPLETURNS); gBattleMons[battler].status2 &= ~(STATUS2_LOCK_CONFUSE); gBattleMons[battler].status2 &= ~(STATUS2_UPROAR); @@ -1398,14 +1320,14 @@ void CancelMultiTurnMoves(u32 battler) else if (gBattlescriptCurrInstr[0] == 0x76 && gBattlescriptCurrInstr[2] == 0) { gBattlerAttacker = otherSkyDropper; - gBattlescriptCurrInstr = BattleScript_ThrashConfuses - 3; + result = BattleScript_ThrashConfuses; } // If this CancelMultiTurnMoves is occuring due to receiving Sleep/Freeze status else if (gBattleScripting.moveEffect <= PRIMARY_STATUS_MOVE_EFFECT) { gBattlerAttacker = otherSkyDropper; BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = BattleScript_ThrashConfuses - 1; + result = BattleScript_ThrashConfuses; } } } @@ -1420,6 +1342,8 @@ void CancelMultiTurnMoves(u32 battler) gDisableStructs[battler].rolloutTimer = 0; gDisableStructs[battler].furyCutterCounter = 0; + + return result; } bool32 WasUnableToUseMove(u32 battler) @@ -1574,27 +1498,7 @@ bool32 IsHealBlockPreventingMove(u32 battler, u32 move) if (!(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) return FALSE; - switch (gBattleMoves[move].effect) - { -#if B_HEAL_BLOCKING >= GEN_6 - case EFFECT_ABSORB: - case EFFECT_STRENGTH_SAP: - case EFFECT_DREAM_EATER: -#endif - case EFFECT_MORNING_SUN: - case EFFECT_SYNTHESIS: - case EFFECT_MOONLIGHT: - case EFFECT_RESTORE_HP: - case EFFECT_REST: - case EFFECT_ROOST: - case EFFECT_HEALING_WISH: - case EFFECT_WISH: - case EFFECT_HEAL_PULSE: - case EFFECT_JUNGLE_HEALING: - return TRUE; - default: - return FALSE; - } + return gBattleMoves[move].healBlockBanned; } static bool32 IsBelchPreventingMove(u32 battler, u32 move) @@ -1605,15 +1509,18 @@ static bool32 IsBelchPreventingMove(u32 battler, u32 move) return !(gBattleStruct->ateBerry[battler & BIT_SIDE] & gBitTable[gBattlerPartyIndexes[battler]]); } +// Dynamax bypasses all selection prevention except Taunt and Assault Vest. +#define DYNAMAX_BYPASS_CHECK !gBattleStruct->dynamax.playerSelect && !IsDynamaxed(gBattlerAttacker) + u32 TrySetCantSelectMoveBattleScript(u32 battler) { u32 limitations = 0; - u8 moveId = gBattleResources->bufferB[battler][2] & ~(RET_MEGA_EVOLUTION | RET_ULTRA_BURST); + u8 moveId = gBattleResources->bufferB[battler][2] & ~(RET_MEGA_EVOLUTION | RET_ULTRA_BURST | RET_DYNAMAX); u32 move = gBattleMons[battler].moves[moveId]; u32 holdEffect = GetBattlerHoldEffect(battler, TRUE); u16 *choicedMove = &gBattleStruct->choicedMove[battler]; - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[battler].disabledMove == move && move != MOVE_NONE) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[battler].disabledMove == move && move != MOVE_NONE) { gBattleScripting.battler = battler; gCurrentMove = move; @@ -1629,7 +1536,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && move == gLastMoves[battler] && move != MOVE_STRUGGLE && (gBattleMons[battler].status2 & STATUS2_TORMENT)) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && move == gLastMoves[battler] && move != MOVE_STRUGGLE && (gBattleMons[battler].status2 & STATUS2_TORMENT)) { CancelMultiTurnMoves(battler); if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1646,7 +1553,10 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[battler].tauntTimer != 0 && IS_MOVE_STATUS(move)) { - gCurrentMove = move; + if (IsDynamaxed(gBattlerAttacker)) + gCurrentMove = MOVE_MAX_GUARD; + else + gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { gPalaceSelectionBattleScripts[battler] = BattleScript_SelectingNotAllowedMoveTauntInPalace; @@ -1659,7 +1569,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[battler].throatChopTimer != 0 && gBattleMoves[move].soundMove) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && gDisableStructs[battler].throatChopTimer != 0 && gBattleMoves[move].soundMove) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1674,7 +1584,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && GetImprisonedMovesCount(battler, move)) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && GetImprisonedMovesCount(battler, move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1689,7 +1599,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsGravityPreventingMove(move)) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsGravityPreventingMove(move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1704,7 +1614,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsHealBlockPreventingMove(battler, move)) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsHealBlockPreventingMove(battler, move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1719,7 +1629,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsBelchPreventingMove(battler, move)) + if (DYNAMAX_BYPASS_CHECK && gBattleStruct->zmove.toBeUsed[gBattlerAttacker] == MOVE_NONE && IsBelchPreventingMove(battler, move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1734,7 +1644,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (move == MOVE_STUFF_CHEEKS && ItemId_GetPocket(gBattleMons[battler].item) != POCKET_BERRIES) + if (DYNAMAX_BYPASS_CHECK && move == MOVE_STUFF_CHEEKS && ItemId_GetPocket(gBattleMons[battler].item) != POCKET_BERRIES) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1749,7 +1659,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } } - if (gBattleMoves[move].effect == EFFECT_GIGATON_HAMMER && move == gLastResultingMoves[battler]) + if (gBattleMoves[move].cantUseTwice && move == gLastResultingMoves[battler]) { gCurrentMove = move; PREPARE_MOVE_BUFFER(gBattleTextBuff1, gCurrentMove); @@ -1766,7 +1676,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } gPotentialItemEffectBattler = battler; - if (HOLD_EFFECT_CHOICE(holdEffect) && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != move) + if (DYNAMAX_BYPASS_CHECK && HOLD_EFFECT_CHOICE(holdEffect) && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != move) { gCurrentMove = *choicedMove; gLastUsedItem = gBattleMons[battler].item; @@ -1783,7 +1693,10 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) } else if (holdEffect == HOLD_EFFECT_ASSAULT_VEST && IS_MOVE_STATUS(move) && move != MOVE_ME_FIRST) { - gCurrentMove = move; + if (IsDynamaxed(gBattlerAttacker)) + gCurrentMove = MOVE_MAX_GUARD; + else + gCurrentMove = move; gLastUsedItem = gBattleMons[battler].item; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { @@ -1796,7 +1709,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler) limitations++; } } - if ((GetBattlerAbility(battler) == ABILITY_GORILLA_TACTICS) && *choicedMove != MOVE_NONE + if (DYNAMAX_BYPASS_CHECK && (GetBattlerAbility(battler) == ABILITY_GORILLA_TACTICS) && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != move) { gCurrentMove = *choicedMove; @@ -1901,7 +1814,8 @@ u8 CheckMoveLimitations(u32 battler, u8 unusableMoves, u16 check) // Gorilla Tactics else if (check & MOVE_LIMITATION_CHOICE_ITEM && GetBattlerAbility(battler) == ABILITY_GORILLA_TACTICS && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != gBattleMons[battler].moves[i]) unusableMoves |= gBitTable[i]; - else if (check & MOVE_LIMITATION_GIGATON_HAMMER && gBattleMoves[gBattleMons[battler].moves[i]].effect == EFFECT_GIGATON_HAMMER && gBattleMons[battler].moves[i] == gLastResultingMoves[battler]) + // Can't Use Twice flag + else if (check & MOVE_LIMITATION_CANT_USE_TWICE && gBattleMoves[gBattleMons[battler].moves[i]].cantUseTwice && gBattleMons[battler].moves[i] == gLastResultingMoves[battler]) unusableMoves |= gBitTable[i]; } return unusableMoves; @@ -1949,23 +1863,23 @@ u8 GetImprisonedMovesCount(u32 battler, u16 move) return imprisonedMoves; } -u32 GetBattlerFriendshipScore(u32 battler) +u32 GetBattlerAffectionHearts(u32 battler) { u8 side = GetBattlerSide(battler); struct Pokemon *party = GetSideParty(side); u16 species = GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES); if (side != B_SIDE_PLAYER) - return FRIENDSHIP_NONE; - else if (gSpeciesInfo[species].flags & SPECIES_FLAG_MEGA_EVOLUTION + return AFFECTION_NO_HEARTS; + else if (gSpeciesInfo[species].isMegaEvolution || (gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_SECRET_BASE))) - return FRIENDSHIP_NONE; + return AFFECTION_NO_HEARTS; - return GetMonFriendshipScore(&party[gBattlerPartyIndexes[battler]]); + return GetMonAffectionHearts(&party[gBattlerPartyIndexes[battler]]); } static void TryToRevertMimicryAndFlags(void) @@ -1996,6 +1910,7 @@ enum ENDTURN_SUN, ENDTURN_HAIL, ENDTURN_SNOW, + ENDTURN_DAMAGE_NON_TYPES, ENDTURN_GRAVITY, ENDTURN_WATER_SPORT, ENDTURN_MUD_SPORT, @@ -2011,6 +1926,9 @@ enum ENDTURN_RETALIATE, ENDTURN_WEATHER_FORM, ENDTURN_STATUS_HEAL, + ENDTURN_RAINBOW, + ENDTURN_SEA_OF_FIRE, + ENDTURN_SWAMP, ENDTURN_FIELD_COUNT, }; @@ -2377,6 +2295,34 @@ u8 DoFieldEndTurnEffects(void) } gBattleStruct->turnCountersTracker++; break; + case ENDTURN_DAMAGE_NON_TYPES: + while (gBattleStruct->turnSideTracker < 2) + { + side = gBattleStruct->turnSideTracker; + if (gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES) + { + if (--gSideTimers[side].damageNonTypesTimer == 0) + { + // There is no in-game message when this side status ends. + gSideStatuses[side] &= ~SIDE_STATUS_DAMAGE_NON_TYPES; + effect++; + } + else + { + ChooseDamageNonTypesString(gSideTimers[side].damageNonTypesType); + BattleScriptExecute(BattleScript_DamageNonTypesContinues); + } + } + gBattleStruct->turnSideTracker++; + if (effect != 0) + break; + } + if (!effect) + { + gBattleStruct->turnCountersTracker++; + gBattleStruct->turnSideTracker = 0; + } + break; case ENDTURN_TRICK_ROOM: if (gFieldStatuses & STATUS_FIELD_TRICK_ROOM && --gFieldTimers.trickRoomTimer == 0) { @@ -2421,25 +2367,21 @@ u8 DoFieldEndTurnEffects(void) gBattleStruct->turnCountersTracker++; break; case ENDTURN_WATER_SPORT: - #if B_SPORT_TURNS >= GEN_6 - if (gFieldStatuses & STATUS_FIELD_WATERSPORT && --gFieldTimers.waterSportTimer == 0) - { - gFieldStatuses &= ~STATUS_FIELD_WATERSPORT; - BattleScriptExecute(BattleScript_WaterSportEnds); - effect++; - } - #endif + if (gFieldStatuses & STATUS_FIELD_WATERSPORT && --gFieldTimers.waterSportTimer == 0) + { + gFieldStatuses &= ~STATUS_FIELD_WATERSPORT; + BattleScriptExecute(BattleScript_WaterSportEnds); + effect++; + } gBattleStruct->turnCountersTracker++; break; case ENDTURN_MUD_SPORT: - #if B_SPORT_TURNS >= GEN_6 - if (gFieldStatuses & STATUS_FIELD_MUDSPORT && --gFieldTimers.mudSportTimer == 0) - { - gFieldStatuses &= ~STATUS_FIELD_MUDSPORT; - BattleScriptExecute(BattleScript_MudSportEnds); - effect++; - } - #endif + if (gFieldStatuses & STATUS_FIELD_MUDSPORT && --gFieldTimers.mudSportTimer == 0) + { + gFieldStatuses &= ~STATUS_FIELD_MUDSPORT; + BattleScriptExecute(BattleScript_MudSportEnds); + effect++; + } gBattleStruct->turnCountersTracker++; break; case ENDTURN_GRAVITY: @@ -2484,19 +2426,107 @@ u8 DoFieldEndTurnEffects(void) case ENDTURN_STATUS_HEAL: for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) { - #if B_AFFECTION_MECHANICS == TRUE - if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER - && GetBattlerFriendshipScore(gBattlerAttacker) >= FRIENDSHIP_150_TO_199 + if (B_AFFECTION_MECHANICS == TRUE + && GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER + && GetBattlerAffectionHearts(gBattlerAttacker) >= AFFECTION_FOUR_HEARTS && (Random() % 100 < 20)) { gBattleCommunication[MULTISTRING_CHOOSER] = 1; BattleScriptExecute(BattleScript_AffectionBasedStatusHeal); break; } - #endif } gBattleStruct->turnCountersTracker++; break; + case ENDTURN_RAINBOW: + while (gBattleStruct->turnSideTracker < 2) + { + side = gBattleStruct->turnSideTracker; + if (gSideStatuses[side] & SIDE_STATUS_RAINBOW) + { + for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) + { + if (GetBattlerSide(gBattlerAttacker) == side) + break; + } + + if (gSideTimers[side].rainbowTimer > 0 && --gSideTimers[side].rainbowTimer == 0) + { + gSideStatuses[side] &= ~SIDE_STATUS_RAINBOW; + BattleScriptExecute(BattleScript_TheRainbowDisappeared); + effect++; + } + } + gBattleStruct->turnSideTracker++; + if (effect != 0) + break; + } + if (!effect) + { + gBattleStruct->turnCountersTracker++; + gBattleStruct->turnSideTracker = 0; + } + break; + case ENDTURN_SEA_OF_FIRE: + while (gBattleStruct->turnSideTracker < 2) + { + side = gBattleStruct->turnSideTracker; + + if (gSideStatuses[side] & SIDE_STATUS_SEA_OF_FIRE) + { + for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) + { + if (GetBattlerSide(gBattlerAttacker) == side) + break; + } + + if (gSideTimers[side].seaOfFireTimer > 0 && --gSideTimers[side].seaOfFireTimer == 0) + { + gSideStatuses[side] &= ~SIDE_STATUS_SEA_OF_FIRE; + BattleScriptExecute(BattleScript_TheSeaOfFireDisappeared); + effect++; + } + } + gBattleStruct->turnSideTracker++; + if (effect != 0) + break; + } + if (!effect) + { + gBattleStruct->turnCountersTracker++; + gBattleStruct->turnSideTracker = 0; + } + break; + case ENDTURN_SWAMP: + while (gBattleStruct->turnSideTracker < 2) + { + side = gBattleStruct->turnSideTracker; + + if (gSideStatuses[side] & SIDE_STATUS_SWAMP) + { + for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) + { + if (GetBattlerSide(gBattlerAttacker) == side) + break; + } + + if (gSideTimers[side].swampTimer > 0 && --gSideTimers[side].swampTimer == 0) + { + gSideStatuses[side] &= ~SIDE_STATUS_SWAMP; + BattleScriptExecute(BattleScript_TheSwampDisappeared); + effect++; + } + } + gBattleStruct->turnSideTracker++; + if (effect != 0) + break; + } + if (!effect) + { + gBattleStruct->turnCountersTracker++; + gBattleStruct->turnSideTracker = 0; + } + break; case ENDTURN_FIELD_COUNT: effect++; break; @@ -2542,9 +2572,12 @@ enum ENDTURN_POWDER, ENDTURN_THROAT_CHOP, ENDTURN_SLOW_START, - ENDTURN_PLASMA_FISTS, ENDTURN_CUD_CHEW, + ENDTURN_TORMENT, // supposedly this goes after Taunt, before Encore, but Encore is first right now? ENDTURN_SALT_CURE, + ENDTURN_SYRUP_BOMB, + ENDTURN_DYNAMAX, + ENDTURN_SEA_OF_FIRE_DAMAGE, ENDTURN_BATTLER_COUNT }; @@ -2572,7 +2605,7 @@ u8 DoBattlerEndTurnEffects(void) { u32 battler, ability, i, effect = 0; - gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_SKIP_DMG_TRACK); + gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_IGNORE_BIDE); while (gBattleStruct->turnEffectsBattlerId < gBattlersCount && gBattleStruct->turnEffectsTracker <= ENDTURN_BATTLER_COUNT) { battler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->turnEffectsBattlerId]; @@ -2591,7 +2624,7 @@ u8 DoBattlerEndTurnEffects(void) && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK) && gBattleMons[battler].hp != 0) { - gBattleMoveDamage = GetDrainedBigRootHp(battler, gBattleMons[battler].maxHP / 16); + gBattleMoveDamage = GetDrainedBigRootHp(battler, GetNonDynamaxMaxHP(battler) / 16); BattleScriptExecute(BattleScript_IngrainTurnHeal); effect++; } @@ -2603,7 +2636,7 @@ u8 DoBattlerEndTurnEffects(void) && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK) && gBattleMons[battler].hp != 0) { - gBattleMoveDamage = GetDrainedBigRootHp(battler, gBattleMons[battler].maxHP / 16); + gBattleMoveDamage = GetDrainedBigRootHp(battler, GetNonDynamaxMaxHP(battler) / 16); BattleScriptExecute(BattleScript_AquaRingHeal); effect++; } @@ -2637,7 +2670,7 @@ u8 DoBattlerEndTurnEffects(void) MAGIC_GUARD_CHECK; gBattlerTarget = gStatuses3[battler] & STATUS3_LEECHSEED_BATTLER; // Notice gBattlerTarget is actually the HP receiver. - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleScripting.animArg1 = gBattlerTarget; @@ -2657,7 +2690,7 @@ u8 DoBattlerEndTurnEffects(void) { if (!BATTLER_MAX_HP(battler) && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) { - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -2667,7 +2700,7 @@ u8 DoBattlerEndTurnEffects(void) } else { - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_PoisonTurnDmg); @@ -2686,7 +2719,7 @@ u8 DoBattlerEndTurnEffects(void) { if (!BATTLER_MAX_HP(battler) && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) { - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -2696,7 +2729,7 @@ u8 DoBattlerEndTurnEffects(void) } else { - gBattleMoveDamage = gBattleMons[battler].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; if ((gBattleMons[battler].status1 & STATUS1_TOXIC_COUNTER) != STATUS1_TOXIC_TURN(15)) // not 16 turns @@ -2713,11 +2746,7 @@ u8 DoBattlerEndTurnEffects(void) && gBattleMons[battler].hp != 0) { MAGIC_GUARD_CHECK; - #if B_BURN_DAMAGE >= GEN_7 - gBattleMoveDamage = gBattleMons[battler].maxHP / 16; - #else - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; - #endif + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8); if (ability == ABILITY_HEATPROOF) { if (gBattleMoveDamage > (gBattleMoveDamage / 2) + 1) // Record ability if the burn takes less damage than it normally would. @@ -2736,11 +2765,7 @@ u8 DoBattlerEndTurnEffects(void) && gBattleMons[battler].hp != 0) { MAGIC_GUARD_CHECK; - #if B_BURN_DAMAGE >= GEN_7 - gBattleMoveDamage = gBattleMons[battler].maxHP / 16; - #else - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; - #endif + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_FrostbiteTurnDmg); @@ -2757,7 +2782,7 @@ u8 DoBattlerEndTurnEffects(void) // persist even after the affected Pokemon has been awakened by Shed Skin. if (gBattleMons[battler].status1 & STATUS1_SLEEP) { - gBattleMoveDamage = gBattleMons[battler].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_NightmareTurnDmg); @@ -2775,7 +2800,7 @@ u8 DoBattlerEndTurnEffects(void) && gBattleMons[battler].hp != 0) { MAGIC_GUARD_CHECK; - gBattleMoveDamage = gBattleMons[battler].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_CurseTurnDmg); @@ -2795,15 +2820,9 @@ u8 DoBattlerEndTurnEffects(void) PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleStruct->wrappedMove[battler]); gBattlescriptCurrInstr = BattleScript_WrapTurnDmg; if (GetBattlerHoldEffect(gBattleStruct->wrappedBy[battler], TRUE) == HOLD_EFFECT_BINDING_BAND) - #if B_BINDING_DAMAGE >= GEN_6 - gBattleMoveDamage = gBattleMons[battler].maxHP / 6; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (B_BINDING_DAMAGE >= GEN_6 ? 6 : 8); else - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; - #else - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; - else - gBattleMoveDamage = gBattleMons[battler].maxHP / 16; - #endif + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (B_BINDING_DAMAGE >= GEN_6 ? 8 : 16); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -2821,12 +2840,7 @@ u8 DoBattlerEndTurnEffects(void) break; case ENDTURN_OCTOLOCK: { - u16 battlerAbility = GetBattlerAbility(battler); - if (gDisableStructs[battler].octolock - && !(GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_CLEAR_AMULET - || battlerAbility == ABILITY_CLEAR_BODY - || battlerAbility == ABILITY_FULL_METAL_BODY - || battlerAbility == ABILITY_WHITE_SMOKE)) + if (gDisableStructs[battler].octolock) { gBattlerTarget = battler; BattleScriptExecute(BattleScript_OctolockEndTurn); @@ -2994,11 +3008,11 @@ u8 DoBattlerEndTurnEffects(void) } else { - #if B_SLEEP_TURNS >= GEN_5 - gBattleMons[battler].status1 |= ((Random() % 3) + 2); - #else - gBattleMons[battler].status1 |= ((Random() % 4) + 3); - #endif + if (B_SLEEP_TURNS >= GEN_5) + gBattleMons[battler].status1 |= ((Random() % 3) + 2); + else + gBattleMons[battler].status1 |= ((Random() % 4) + 3); + BtlController_EmitSetMonData(battler, BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1); MarkBattlerForControllerExec(battler); BattleScriptExecute(BattleScript_YawnMakesAsleep); @@ -3095,10 +3109,6 @@ u8 DoBattlerEndTurnEffects(void) } gBattleStruct->turnEffectsTracker++; break; - case ENDTURN_PLASMA_FISTS: - gStatuses4[battler] &= ~STATUS4_PLASMA_FISTS; - gBattleStruct->turnEffectsTracker++; - break; case ENDTURN_CUD_CHEW: if (GetBattlerAbility(battler) == ABILITY_CUD_CHEW && !gDisableStructs[battler].cudChew && ItemId_GetPocket(GetUsedHeldItem(battler)) == POCKET_BERRIES) gDisableStructs[battler].cudChew = TRUE; @@ -3120,6 +3130,51 @@ u8 DoBattlerEndTurnEffects(void) } gBattleStruct->turnEffectsTracker++; break; + case ENDTURN_SYRUP_BOMB: + if ((gStatuses4[battler] & STATUS4_SYRUP_BOMB) && (gBattleMons[battler].hp != 0)) + { + if (gDisableStructs[battler].syrupBombTimer > 0 && --gDisableStructs[battler].syrupBombTimer == 0) + gStatuses4[battler] &= ~STATUS4_SYRUP_BOMB; + gBattlerTarget = battler; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_SYRUP_BOMB); + gBattlescriptCurrInstr = BattleScript_SyrupBombEndTurn; + BattleScriptExecute(gBattlescriptCurrInstr); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_TORMENT: + if (gDisableStructs[battler].tormentTimer != PERMANENT_TORMENT + && --gDisableStructs[battler].tormentTimer == 0) + { + gBattleMons[battler].status2 &= ~STATUS2_TORMENT; + BattleScriptExecute(BattleScript_TormentEnds); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_DYNAMAX: + if (IsDynamaxed(battler) + && --gBattleStruct->dynamax.dynamaxTurns[battler] == 0) + { + gBattleScripting.battler = battler; + UndoDynamax(battler); + BattleScriptExecute(BattleScript_DynamaxEnds); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; + case ENDTURN_SEA_OF_FIRE_DAMAGE: + if (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SEA_OF_FIRE) + { + gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + BtlController_EmitStatusAnimation(battler, BUFFER_A, FALSE, STATUS1_BURN); + MarkBattlerForControllerExec(battler); + BattleScriptExecute(BattleScript_HurtByTheSeaOfFire); + effect++; + } + gBattleStruct->turnEffectsTracker++; + break; case ENDTURN_BATTLER_COUNT: // done gBattleStruct->turnEffectsTracker = 0; gBattleStruct->turnEffectsBattlerId++; @@ -3130,7 +3185,7 @@ u8 DoBattlerEndTurnEffects(void) return effect; } - gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_SKIP_DMG_TRACK); + gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_IGNORE_BIDE); return 0; } @@ -3138,7 +3193,7 @@ bool32 HandleWishPerishSongOnTurnEnd(void) { u32 battler; - gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_SKIP_DMG_TRACK); + gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_IGNORE_BIDE); switch (gBattleStruct->wishPerishSongState) { case 0: @@ -3165,7 +3220,7 @@ bool32 HandleWishPerishSongOnTurnEnd(void) gBattlerTarget = battler; gBattlerAttacker = gWishFutureKnock.futureSightAttacker[battler]; - gSpecialStatuses[gBattlerTarget].dmg = 0xFFFF; + gSpecialStatuses[gBattlerTarget].shellBellDmg = IGNORE_SHELL_BELL; gCurrentMove = gWishFutureKnock.futureSightMove[battler]; SetTypeBeforeUsingMove(gCurrentMove, battler); BattleScriptExecute(BattleScript_MonTookFutureAttack); @@ -3230,7 +3285,7 @@ bool32 HandleWishPerishSongOnTurnEnd(void) break; } - gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_SKIP_DMG_TRACK); + gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_IGNORE_BIDE); return FALSE; } @@ -3276,27 +3331,25 @@ bool32 HandleFaintedMonActions(void) gBattleStruct->faintedActionsState = 3; else gBattleStruct->faintedActionsState = 1; - #if B_FAINT_SWITCH_IN >= GEN_4 // Don't switch mons until all pokemon performed their actions or the battle's over. - if (gBattleOutcome == 0 + if (B_FAINT_SWITCH_IN >= GEN_4 + && gBattleOutcome == 0 && !NoAliveMonsForEitherParty() && gCurrentTurnActionNumber != gBattlersCount) { gAbsentBattlerFlags |= gBitTable[gBattlerFainted]; return FALSE; } - #endif break; case 3: - #if B_FAINT_SWITCH_IN >= GEN_4 // Don't switch mons until all pokemon performed their actions or the battle's over. - if (gBattleOutcome == 0 + if (B_FAINT_SWITCH_IN >= GEN_4 + && gBattleOutcome == 0 && !NoAliveMonsForEitherParty() && gCurrentTurnActionNumber != gBattlersCount) { return FALSE; } - #endif gBattleStruct->faintedActionsBattlerId = 0; gBattleStruct->faintedActionsState++; // fall through @@ -3372,6 +3425,7 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) case CANCELLER_FLAGS: // flags clear gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_DESTINY_BOND; gStatuses3[gBattlerAttacker] &= ~STATUS3_GRUDGE; + gStatuses4[gBattlerAttacker] &= ~ STATUS4_GLAIVE_RUSH; gBattleScripting.tripleKickPower = 0; gBattleStruct->atkCancellerTracker++; break; @@ -3550,11 +3604,7 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) if (gBattleMons[gBattlerAttacker].status2 & STATUS2_CONFUSION) { // confusion dmg - #if B_CONFUSION_SELF_DMG_CHANCE >= GEN_7 - if (RandomWeighted(RNG_CONFUSION, 2, 1)) - #else - if (RandomWeighted(RNG_CONFUSION, 1, 1)) - #endif + if (RandomWeighted(RNG_CONFUSION, (B_CONFUSION_SELF_DMG_CHANCE >= GEN_7 ? 2 : 1), 1)) { gBattleCommunication[MULTISTRING_CHOOSER] = TRUE; gBattlerTarget = gBattlerAttacker; @@ -3622,11 +3672,11 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) { // This is removed in FRLG and Emerald for some reason //gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_MULTIPLETURNS; - if (gTakenDmg[gBattlerAttacker]) + if (gBideDmg[gBattlerAttacker]) { gCurrentMove = MOVE_BIDE; - gBattleScripting.bideDmg = gTakenDmg[gBattlerAttacker] * 2; - gBattlerTarget = gTakenDmgByBattler[gBattlerAttacker]; + gBattleScripting.bideDmg = gBideDmg[gBattlerAttacker] * 2; + gBattlerTarget = gBideTarget[gBattlerAttacker]; if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) gBattlerTarget = GetMoveTarget(MOVE_BIDE, MOVE_TARGET_SELECTED + 1); gBattlescriptCurrInstr = BattleScript_BideAttack; @@ -3668,11 +3718,8 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) case CANCELLER_POWDER_MOVE: if ((gBattleMoves[gCurrentMove].powderMove) && (gBattlerAttacker != gBattlerTarget)) { - #if B_POWDER_GRASS >= GEN_6 - if (IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_GRASS) || GetBattlerAbility(gBattlerTarget) == ABILITY_OVERCOAT) - #else - if (GetBattlerAbility(gBattlerTarget) == ABILITY_OVERCOAT) - #endif + if (B_POWDER_GRASS >= GEN_6 + && (IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_GRASS) || GetBattlerAbility(gBattlerTarget) == ABILITY_OVERCOAT)) { gBattlerAbility = gBattlerTarget; effect = 1; @@ -3698,7 +3745,7 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) if (moveType == TYPE_FIRE) { gProtectStructs[gBattlerAttacker].powderSelfDmg = TRUE; - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; gBattlescriptCurrInstr = BattleScript_MoveUsedPowder; effect = 1; } @@ -3777,8 +3824,7 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) PREPARE_BYTE_NUMBER_BUFFER(gBattleScripting.multihitString, 3, 0) } } - #if B_BEAT_UP >= GEN_5 - else if (gBattleMoves[gCurrentMove].effect == EFFECT_BEAT_UP) + else if (B_BEAT_UP >= GEN_5 && gBattleMoves[gCurrentMove].effect == EFFECT_BEAT_UP) { struct Pokemon* party = GetBattlerParty(gBattlerAttacker); int i; @@ -3795,7 +3841,6 @@ u8 AtkCanceller_UnableToUseMove(u32 moveType) gBattleStruct->beatUpSlot = 0; PREPARE_BYTE_NUMBER_BUFFER(gBattleScripting.multihitString, 1, 0) } - #endif gBattleStruct->atkCancellerTracker++; break; case CANCELLER_END: @@ -4027,14 +4072,12 @@ bool32 TryChangeBattleWeather(u32 battler, u32 weatherEnumId, bool32 viaAbility) { return FALSE; } -#if B_ABILITY_WEATHER <= GEN_5 - else if (viaAbility && !(gBattleWeather & sWeatherFlagsInfo[weatherEnumId][1])) + else if (B_ABILITY_WEATHER < GEN_6 && viaAbility && !(gBattleWeather & sWeatherFlagsInfo[weatherEnumId][1])) { gBattleWeather = (sWeatherFlagsInfo[weatherEnumId][0] | sWeatherFlagsInfo[weatherEnumId][1]); ShouldChangeFormInWeather(battler); return TRUE; } -#endif else if (!(gBattleWeather & (sWeatherFlagsInfo[weatherEnumId][0] | sWeatherFlagsInfo[weatherEnumId][1]))) { gBattleWeather = (sWeatherFlagsInfo[weatherEnumId][0]); @@ -4050,7 +4093,7 @@ bool32 TryChangeBattleWeather(u32 battler, u32 weatherEnumId, bool32 viaAbility) static bool32 TryChangeBattleTerrain(u32 battler, u32 statusFlag, u8 *timer) { - if (!(gFieldStatuses & statusFlag)) + if ((!(gFieldStatuses & statusFlag) && (!gBattleStruct->isSkyBattle))) { gFieldStatuses &= ~(STATUS_FIELD_MISTY_TERRAIN | STATUS_FIELD_GRASSY_TERRAIN | STATUS_FIELD_ELECTRIC_TERRAIN | STATUS_FIELD_PSYCHIC_TERRAIN); gFieldStatuses |= statusFlag; @@ -4177,9 +4220,10 @@ static bool32 HadMoreThanHalfHpNowHasLess(u32 battler) u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 moveArg) { u32 effect = 0; - u32 speciesAtk, speciesDef; u32 moveType, move; + u32 side; u32 i, j; + struct Pokemon *mon; if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) return 0; @@ -4187,9 +4231,6 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (gBattlerAttacker >= gBattlersCount) gBattlerAttacker = battler; - speciesAtk = gBattleMons[gBattlerAttacker].species; - speciesDef = gBattleMons[gBattlerTarget].species; - if (special) gLastUsedAbility = special; else @@ -4229,8 +4270,9 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 BattleScriptPushCursorAndCallback(BattleScript_OverworldTerrain); effect++; } - #if B_THUNDERSTORM_TERRAIN == TRUE - else if (GetCurrentWeather() == WEATHER_RAIN_THUNDERSTORM && !(gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN)) + else if (B_THUNDERSTORM_TERRAIN == TRUE + && GetCurrentWeather() == WEATHER_RAIN_THUNDERSTORM + && !(gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN)) { // overworld weather started rain, so just do electric terrain anim gFieldStatuses = (STATUS_FIELD_ELECTRIC_TERRAIN | STATUS_FIELD_TERRAIN_PERMANENT); @@ -4238,16 +4280,15 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 BattleScriptPushCursorAndCallback(BattleScript_OverworldTerrain); effect++; } - #endif - #if B_FOG_TERRAIN == TRUE - else if ((GetCurrentWeather() == WEATHER_FOG_HORIZONTAL || GetCurrentWeather() == WEATHER_FOG_DIAGONAL) && !(gFieldStatuses & STATUS_FIELD_MISTY_TERRAIN)) + else if (B_FOG_TERRAIN == TRUE + && (GetCurrentWeather() == WEATHER_FOG_HORIZONTAL || GetCurrentWeather() == WEATHER_FOG_DIAGONAL) + && !(gFieldStatuses & STATUS_FIELD_MISTY_TERRAIN)) { gFieldStatuses = (STATUS_FIELD_MISTY_TERRAIN | STATUS_FIELD_TERRAIN_PERMANENT); gBattleCommunication[MULTISTRING_CHOOSER] = 0; BattleScriptPushCursorAndCallback(BattleScript_OverworldTerrain); effect++; } - #endif break; case ABILITYEFFECT_SWITCH_IN_WEATHER: gBattleScripting.battler = battler; @@ -4284,16 +4325,17 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 case WEATHER_SNOW: if (!(gBattleWeather & (B_WEATHER_HAIL | B_WEATHER_SNOW))) { - #if B_OVERWORLD_SNOW >= GEN_9 + if (B_OVERWORLD_SNOW >= GEN_9) + { gBattleWeather = B_WEATHER_SNOW; gBattleScripting.animArg1 = B_ANIM_SNOW_CONTINUES; - effect++; - #else + } + else + { gBattleWeather = B_WEATHER_HAIL; gBattleScripting.animArg1 = B_ANIM_HAIL_CONTINUES; - effect++; - #endif - + } + effect++; } break; } @@ -4381,7 +4423,6 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!gSpecialStatuses[battler].switchInAbilityDone && IsDoubleBattle() && IsBattlerAlive(BATTLE_PARTNER(battler)) && TryResetBattlerStatChanges(BATTLE_PARTNER(battler))) { - u32 i; gEffectBattler = BATTLE_PARTNER(battler); gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SWITCHIN_CURIOUS_MEDICINE; gSpecialStatuses[battler].switchInAbilityDone = TRUE; @@ -4578,19 +4619,16 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } break; case ABILITY_SNOW_WARNING: - #if B_SNOW_WARNING >= GEN_9 - if (TryChangeBattleWeather(battler, ENUM_WEATHER_SNOW, TRUE)) + if (B_SNOW_WARNING >= GEN_9 && TryChangeBattleWeather(battler, ENUM_WEATHER_SNOW, TRUE)) { BattleScriptPushCursorAndCallback(BattleScript_SnowWarningActivatesSnow); effect++; } - #else - if (TryChangeBattleWeather(battler, ENUM_WEATHER_HAIL, TRUE)) + else if (B_SNOW_WARNING < GEN_9 && TryChangeBattleWeather(battler, ENUM_WEATHER_HAIL, TRUE)) { BattleScriptPushCursorAndCallback(BattleScript_SnowWarningActivatesHail); effect++; } - #endif else if (gBattleWeather & B_WEATHER_PRIMAL_ANY && WEATHER_HAS_EFFECT && !gSpecialStatuses[battler].switchInAbilityDone) { gSpecialStatuses[battler].switchInAbilityDone = TRUE; @@ -4666,9 +4704,12 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } break; case ABILITY_INTREPID_SWORD: - if (!gSpecialStatuses[battler].switchInAbilityDone && CompareStat(battler, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN)) + if (!gSpecialStatuses[battler].switchInAbilityDone && CompareStat(battler, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN) + && !(gBattleStruct->intrepidSwordBoost[GetBattlerSide(battler)] & gBitTable[gBattlerPartyIndexes[battler]])) { gBattlerAttacker = battler; + if (B_INTREPID_SWORD == GEN_9) + gBattleStruct->intrepidSwordBoost[GetBattlerSide(battler)] |= gBitTable[gBattlerPartyIndexes[battler]]; gSpecialStatuses[battler].switchInAbilityDone = TRUE; SET_STATCHANGER(STAT_ATK, 1, FALSE); BattleScriptPushCursorAndCallback(BattleScript_BattlerAbilityStatRaiseOnSwitchIn); @@ -4676,9 +4717,12 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } break; case ABILITY_DAUNTLESS_SHIELD: - if (!gSpecialStatuses[battler].switchInAbilityDone && CompareStat(battler, STAT_DEF, MAX_STAT_STAGE, CMP_LESS_THAN)) + if (!gSpecialStatuses[battler].switchInAbilityDone && CompareStat(battler, STAT_DEF, MAX_STAT_STAGE, CMP_LESS_THAN) + && !(gBattleStruct->dauntlessShieldBoost[GetBattlerSide(battler)] & gBitTable[gBattlerPartyIndexes[battler]])) { gBattlerAttacker = battler; + if (B_DAUNTLESS_SHIELD == GEN_9) + gBattleStruct->dauntlessShieldBoost[GetBattlerSide(battler)] |= gBitTable[gBattlerPartyIndexes[battler]]; gSpecialStatuses[battler].switchInAbilityDone = TRUE; SET_STATCHANGER(STAT_DEF, 1, FALSE); BattleScriptPushCursorAndCallback(BattleScript_BattlerAbilityStatRaiseOnSwitchIn); @@ -4772,6 +4816,20 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 effect++; } break; + case ABILITY_ZERO_TO_HERO: + side = GetBattlerSide(battler); + mon = &GetSideParty(side)[gBattlerPartyIndexes[battler]]; + + if (!gSpecialStatuses[battler].switchInAbilityDone + && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_PALAFIN_HERO + && !(gBattleStruct->transformZeroToHero[side] & gBitTable[gBattlerPartyIndexes[battler]])) + { + gSpecialStatuses[battler].switchInAbilityDone = TRUE; + gBattleStruct->transformZeroToHero[side] |= gBitTable[gBattlerPartyIndexes[battler]]; + BattleScriptPushCursorAndCallback(BattleScript_ZeroToHeroActivates); + effect++; + } + break; } break; case ABILITYEFFECT_ENDTURN: // 1 @@ -4801,7 +4859,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) { BattleScriptPushCursorAndCallback(BattleScript_RainDishActivates); - gBattleMoveDamage = gBattleMons[battler].maxHP / (gLastUsedAbility == ABILITY_RAIN_DISH ? 16 : 8); + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / (gLastUsedAbility == ABILITY_RAIN_DISH ? 16 : 8); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -4852,11 +4910,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (gDisableStructs[battler].isFirstTurn != 2) { u32 validToRaise = 0, validToLower = 0; - #if B_MOODY_ACC_EVASION < GEN_8 - u32 statsNum = NUM_BATTLE_STATS; - #else - u32 statsNum = NUM_STATS; - #endif + u32 statsNum = B_MOODY_ACC_EVASION >= GEN_8 ? NUM_STATS : NUM_BATTLE_STATS; for (i = STAT_ATK; i < statsNum; i++) { @@ -4903,7 +4957,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (IsBattlerWeatherAffected(battler, B_WEATHER_SUN)) { BattleScriptPushCursorAndCallback(BattleScript_SolarPowerActivates); - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; effect++; @@ -5006,7 +5060,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattlescriptCurrInstr = BattleScript_GoodAsGoldActivates; effect = 1; } - else if (gLastUsedAbility == ABILITY_ICE_FACE && IS_MOVE_PHYSICAL(move) && gBattleMons[gBattlerTarget].species == SPECIES_EISCUE) + else if (gLastUsedAbility == ABILITY_ICE_FACE && IS_MOVE_PHYSICAL(move) && gBattleMons[gBattlerTarget].species == SPECIES_EISCUE_ICE_FACE) { gBattleMons[gBattlerTarget].species = SPECIES_EISCUE_NOICE_FACE; if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS) @@ -5051,10 +5105,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 break; case ABILITY_FLASH_FIRE: if (moveType == TYPE_FIRE - #if B_FLASH_FIRE_FROZEN <= GEN_4 - && !(gBattleMons[battler].status1 & STATUS1_FREEZE) - #endif - ) + && (B_FLASH_FIRE_FROZEN >= GEN_5 || !(gBattleMons[battler].status1 & STATUS1_FREEZE))) { if (!(gBattleResources->flags->flags[battler] & RESOURCE_FLAG_FLASH_FIRE)) { @@ -5095,11 +5146,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (effect == 1) // Drain Hp ability. { -#if B_HEAL_BLOCKING >= GEN_5 - if (BATTLER_MAX_HP(battler) || gStatuses3[battler] & STATUS3_HEAL_BLOCK) -#else - if (BATTLER_MAX_HP(battler)) -#endif + if (BATTLER_MAX_HP(battler) || (B_HEAL_BLOCKING >= GEN_5 && gStatuses3[battler] & STATUS3_HEAL_BLOCK)) { if ((gProtectStructs[gBattlerAttacker].notFirstStrike)) gBattlescriptCurrInstr = BattleScript_MonMadeMoveUseless; @@ -5113,7 +5160,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 else gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; - gBattleMoveDamage = gBattleMons[battler].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -5136,9 +5183,8 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattlescriptCurrInstr = BattleScript_MoveStatDrain_PPLoss; SET_STATCHANGER(statId, statAmount, FALSE); - #if B_ABSORBING_ABILITY_STRING < GEN_5 - PREPARE_STAT_BUFFER(gBattleTextBuff1, statId); - #endif + if (B_ABSORBING_ABILITY_STRING < GEN_5) + PREPARE_STAT_BUFFER(gBattleTextBuff1, statId); } } @@ -5264,6 +5310,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && IsBattlerAlive(gBattlerAttacker) && !IsAbilityOnSide(gBattlerAttacker, ABILITY_AROMA_VEIL) && gBattleMons[gBattlerAttacker].pp[gChosenMovePos] != 0 + && !IsDynamaxed(gBattlerAttacker) // TODO: Max Moves don't make contact, useless? && (Random() % 3) == 0) { gDisableStructs[gBattlerAttacker].disabledMove = gChosenMove; @@ -5314,7 +5361,8 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && IsBattlerAlive(gBattlerAttacker) && TARGET_TURN_DAMAGED - && IsMoveMakingContact(move, gBattlerAttacker)) + && IsMoveMakingContact(move, gBattlerAttacker) + && !IsDynamaxed(gBattlerTarget)) { switch (gBattleMons[gBattlerAttacker].ability) { @@ -5331,6 +5379,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 case ABILITY_STANCE_CHANGE: case ABILITY_WONDER_GUARD: case ABILITY_ZEN_MODE: + case ABILITY_ZERO_TO_HERO: break; default: if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_ABILITY_SHIELD) @@ -5391,7 +5440,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_GooeyActivates; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } break; @@ -5403,11 +5452,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && TARGET_TURN_DAMAGED && IsMoveMakingContact(move, gBattlerAttacker)) { - #if B_ROUGH_SKIN_DMG >= GEN_4 - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 8; - #else - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; - #endif + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / (B_ROUGH_SKIN_DMG >= GEN_4 ? 8 : 16); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); @@ -5431,7 +5476,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 } else { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptPushCursor(); @@ -5445,7 +5490,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && gBattleMons[gBattlerTarget].hp == 0 && IsBattlerAlive(gBattlerAttacker)) { - gBattleMoveDamage = gSpecialStatuses[gBattlerTarget].dmg; + gBattleMoveDamage = gSpecialStatuses[gBattlerTarget].shellBellDmg; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_AftermathDmg; effect++; @@ -5474,7 +5519,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } } @@ -5493,7 +5538,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } break; @@ -5510,7 +5555,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattleScripting.moveEffect = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_PARALYSIS; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } break; @@ -5526,7 +5571,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattleScripting.moveEffect = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_BURN; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } break; @@ -5635,7 +5680,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattleMons[gBattlerTarget].species = SPECIES_CRAMORANT; if (GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; } @@ -5648,7 +5693,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 gBattleMons[gBattlerTarget].species = SPECIES_CRAMORANT; if (GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; } @@ -5716,6 +5761,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 break; case ABILITY_TOXIC_DEBRIS: if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) + && (!gBattleStruct->isSkyBattle) && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && IS_MOVE_PHYSICAL(gCurrentMove) && TARGET_TURN_DAMAGED @@ -5745,7 +5791,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_AbilityStatusEffect; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } break; @@ -5755,9 +5801,9 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && RandomWeighted(RNG_STENCH, 9, 1) && !IS_MOVE_STATUS(move) - && !gBattleMoves[gCurrentMove].effect != EFFECT_FLINCH_HIT - && !gBattleMoves[gCurrentMove].effect != EFFECT_FLINCH_STATUS - && !gBattleMoves[gCurrentMove].effect != EFFECT_TRIPLE_ARROWS) + && gBattleMoves[gCurrentMove].effect != EFFECT_FLINCH_HIT + && gBattleMoves[gCurrentMove].effect != EFFECT_FLINCH_STATUS + && gBattleMoves[gCurrentMove].effect != EFFECT_TRIPLE_ARROWS) { gBattleScripting.moveEffect = MOVE_EFFECT_FLINCH; BattleScriptPushCursor(); @@ -5806,6 +5852,27 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 break; } break; + case ABILITYEFFECT_OPPORTUNIST: + /* Similar to ABILITYEFFECT_IMMUNITY in that it loops through all battlers. + * Is called after ABILITYEFFECT_ON_SWITCHIN to copy any boosts + * from switch in abilities e.g. intrepid sword, as + */ + for (battler = 0; battler < gBattlersCount; battler++) + { + switch (GetBattlerAbility(battler)) + { + case ABILITY_OPPORTUNIST: + if (gProtectStructs[battler].activateOpportunist == 2) { + gBattleScripting.savedBattler = gBattlerAttacker; + gBattleScripting.battler = gBattlerAttacker = gBattlerAbility = battler; + gProtectStructs[battler].activateOpportunist--; + BattleScriptPushCursorAndCallback(BattleScript_OpportunistCopyStatChange); + effect = 1; + } + break; + } + } + break; case ABILITYEFFECT_IMMUNITY: // 5 for (battler = 0; battler < gBattlersCount; battler++) { @@ -5864,6 +5931,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 effect = 4; break; } + if (effect != 0) { switch (effect) @@ -5905,17 +5973,15 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!(gBattleMons[gBattlerAttacker].status1 & STATUS1_ANY)) { gBattleStruct->synchronizeMoveEffect &= ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN); - #if B_SYNCHRONIZE_TOXIC < GEN_5 - if (gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC) - gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON; - #endif + if (B_SYNCHRONIZE_TOXIC < GEN_5 && gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC) + gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON; gBattleScripting.moveEffect = gBattleStruct->synchronizeMoveEffect + MOVE_EFFECT_AFFECTS_USER; gBattleScripting.battler = gBattlerAbility = gBattlerTarget; PREPARE_ABILITY_BUFFER(gBattleTextBuff1, ABILITY_SYNCHRONIZE); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } } @@ -5936,7 +6002,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 PREPARE_ABILITY_BUFFER(gBattleTextBuff1, ABILITY_SYNCHRONIZE); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT; effect++; } } @@ -6052,7 +6118,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && gBattleStruct->allowedToChangeFormInWeather[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)]) { gBattleStruct->allowedToChangeFormInWeather[gBattlerPartyIndexes[battler]][GetBattlerSide(battler)] = FALSE; - gBattleMons[battler].species = SPECIES_EISCUE; + gBattleMons[battler].species = SPECIES_EISCUE_ICE_FACE; BattleScriptPushCursorAndCallback(BattleScript_BattlerFormChangeWithStringEnd3); effect++; } @@ -6143,6 +6209,7 @@ bool32 IsNeutralizingGasBannedAbility(u32 ability) case ABILITY_ICE_FACE: case ABILITY_AS_ONE_ICE_RIDER: case ABILITY_AS_ONE_SHADOW_RIDER: + case ABILITY_ZERO_TO_HERO: return TRUE; default: return FALSE; @@ -6175,6 +6242,11 @@ bool32 IsMyceliumMightOnField(void) return FALSE; } +bool32 IsMoldBreakerTypeAbility(u32 ability) +{ + return (ability == ABILITY_MOLD_BREAKER || ability == ABILITY_TERAVOLT || ability == ABILITY_TURBOBLAZE); +} + u32 GetBattlerAbility(u32 battler) { if (gStatuses3[battler] & STATUS3_GASTRO_ACID) @@ -6186,9 +6258,7 @@ u32 GetBattlerAbility(u32 battler) if (IsMyceliumMightOnField()) return ABILITY_NONE; - if ((((gBattleMons[gBattlerAttacker].ability == ABILITY_MOLD_BREAKER - || gBattleMons[gBattlerAttacker].ability == ABILITY_TERAVOLT - || gBattleMons[gBattlerAttacker].ability == ABILITY_TURBOBLAZE) + if (((IsMoldBreakerTypeAbility(gBattleMons[gBattlerAttacker].ability) && !(gStatuses3[gBattlerAttacker] & STATUS3_GASTRO_ACID)) || gBattleMoves[gCurrentMove].ignoresTargetAbility) && sAbilitiesAffectedByMoldBreaker[gBattleMons[battler].ability] @@ -6244,15 +6314,10 @@ u32 IsAbilityOnFieldExcept(u32 battler, u32 ability) u32 IsAbilityPreventingEscape(u32 battler) { u32 id; -#if B_GHOSTS_ESCAPE >= GEN_6 - if (IS_BATTLER_OF_TYPE(battler, TYPE_GHOST)) + if (B_GHOSTS_ESCAPE >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST)) return 0; -#endif -#if B_SHADOW_TAG_ESCAPE >= GEN_4 - if ((id = IsAbilityOnOpposingSide(battler, ABILITY_SHADOW_TAG)) && GetBattlerAbility(battler) != ABILITY_SHADOW_TAG) -#else - if ((id = IsAbilityOnOpposingSide(battler, ABILITY_SHADOW_TAG))) -#endif + if ((id = IsAbilityOnOpposingSide(battler, ABILITY_SHADOW_TAG)) + && (B_SHADOW_TAG_ESCAPE >= GEN_4 && GetBattlerAbility(battler) != ABILITY_SHADOW_TAG)) return id; if ((id = IsAbilityOnOpposingSide(battler, ABILITY_ARENA_TRAP)) && IsBattlerGrounded(battler)) return id; @@ -6266,10 +6331,8 @@ bool32 CanBattlerEscape(u32 battler) // no ability check { if (GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_SHED_SHELL) return TRUE; -#if B_GHOSTS_ESCAPE >= GEN_6 - else if (IS_BATTLER_OF_TYPE(battler, TYPE_GHOST)) + else if (B_GHOSTS_ESCAPE >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST)) return TRUE; -#endif else if (gBattleMons[battler].status2 & (STATUS2_ESCAPE_PREVENTION | STATUS2_WRAPPED)) return FALSE; else if (gStatuses3[battler] & STATUS3_ROOTED) @@ -6371,11 +6434,8 @@ bool32 CanBeBurned(u32 battler) bool32 CanBeParalyzed(u32 battler) { u16 ability = GetBattlerAbility(battler); - if ( - #if B_PARALYZE_ELECTRIC >= GEN_6 - IS_BATTLER_OF_TYPE(battler, TYPE_ELECTRIC) || - #endif - gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD + if ((B_PARALYZE_ELECTRIC >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_ELECTRIC)) + || gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SAFEGUARD || ability == ABILITY_LIMBER || ability == ABILITY_COMATOSE || ability == ABILITY_PURIFYING_SALT @@ -6451,23 +6511,14 @@ bool32 HasEnoughHpToEatBerry(u32 battler, u32 hpFraction, u32 itemId) return FALSE; } -#if B_CONFUSE_BERRIES_HEAL >= GEN_7 - #define CONFUSE_BERRY_HP_FRACTION 4 -#else - #define CONFUSE_BERRY_HP_FRACTION 2 -#endif - static u8 HealConfuseBerry(u32 battler, u32 itemId, u32 flavorId, bool32 end2) { - if (HasEnoughHpToEatBerry(battler, CONFUSE_BERRY_HP_FRACTION, itemId) -#if B_HEAL_BLOCKING >= GEN_5 - && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK) -#endif - ) + if (HasEnoughHpToEatBerry(battler, (B_CONFUSE_BERRIES_HEAL >= GEN_7 ? 4 : 2), itemId) + && (B_HEAL_BLOCKING < GEN_5 || !(gStatuses3[battler] & STATUS3_HEAL_BLOCK))) { PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, flavorId); - gBattleMoveDamage = gBattleMons[battler].maxHP / GetBattlerItemHoldEffectParam(battler, itemId); + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / GetBattlerItemHoldEffectParam(battler, itemId); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -6499,8 +6550,6 @@ static u8 HealConfuseBerry(u32 battler, u32 itemId, u32 flavorId, bool32 end2) return 0; } -#undef CONFUSE_BERRY_HP_FRACTION - static u8 StatRaiseBerry(u32 battler, u32 itemId, u32 statId, bool32 end2) { if (CompareStat(battler, statId, MAX_STAT_STAGE, CMP_LESS_THAN) && HasEnoughHpToEatBerry(battler, GetBattlerItemHoldEffectParam(battler, itemId), itemId)) @@ -6606,9 +6655,7 @@ static u8 TrySetEnigmaBerry(u32 battler) && !DoesSubstituteBlockMove(gBattlerAttacker, battler, gCurrentMove) && ((TARGET_TURN_DAMAGED && gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE) || gBattleScripting.overrideBerryRequirements) && !(gBattleScripting.overrideBerryRequirements && gBattleMons[battler].hp == gBattleMons[battler].maxHP) -#if B_HEAL_BLOCKING >= GEN_5 - && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) -#endif + && (B_HEAL_BLOCKING < GEN_5 || !(gStatuses3[battler] & STATUS3_HEAL_BLOCK))) { gBattleScripting.battler = battler; gBattleMoveDamage = (gBattleMons[battler].maxHP * 25 / 100) * -1; @@ -6724,13 +6771,11 @@ static u32 ItemRestorePp(u32 battler, u32 itemId, bool32 execute) static u8 ItemHealHp(u32 battler, u32 itemId, bool32 end2, bool32 percentHeal) { if (!(gBattleScripting.overrideBerryRequirements && gBattleMons[battler].hp == gBattleMons[battler].maxHP) - #if B_HEAL_BLOCKING >= GEN_5 - && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK) - #endif + && (B_HEAL_BLOCKING < GEN_5 || !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) && HasEnoughHpToEatBerry(battler, 2, itemId)) { if (percentHeal) - gBattleMoveDamage = (gBattleMons[battler].maxHP * GetBattlerItemHoldEffectParam(battler, itemId) / 100) * -1; + gBattleMoveDamage = (GetNonDynamaxMaxHP(battler) * GetBattlerItemHoldEffectParam(battler, itemId) / 100) * -1; else gBattleMoveDamage = GetBattlerItemHoldEffectParam(battler, itemId) * -1; @@ -6772,46 +6817,47 @@ static bool32 GetMentalHerbEffect(u32 battler) StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); ret = TRUE; } -#if B_MENTAL_HERB >= GEN_5 - // Check taunt - if (gDisableStructs[battler].tauntTimer != 0) + if (B_MENTAL_HERB >= GEN_5) { - gDisableStructs[battler].tauntTimer = 0; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_TAUNT; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_TAUNT); - ret = TRUE; + // Check taunt + if (gDisableStructs[battler].tauntTimer != 0) + { + gDisableStructs[battler].tauntTimer = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_TAUNT; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_TAUNT); + ret = TRUE; + } + // Check encore + if (gDisableStructs[battler].encoreTimer != 0) + { + gDisableStructs[battler].encoredMove = 0; + gDisableStructs[battler].encoreTimer = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_ENCORE; // STRINGID_PKMNENCOREENDED + ret = TRUE; + } + // Check torment + if (gBattleMons[battler].status2 & STATUS2_TORMENT) + { + gBattleMons[battler].status2 &= ~STATUS2_TORMENT; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_TORMENT; + ret = TRUE; + } + // Check heal block + if (gStatuses3[battler] & STATUS3_HEAL_BLOCK) + { + gStatuses3[battler] &= ~STATUS3_HEAL_BLOCK; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_HEALBLOCK; + ret = TRUE; + } + // Check disable + if (gDisableStructs[battler].disableTimer != 0) + { + gDisableStructs[battler].disableTimer = 0; + gDisableStructs[battler].disabledMove = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_DISABLE; + ret = TRUE; + } } - // Check encore - if (gDisableStructs[battler].encoreTimer != 0) - { - gDisableStructs[battler].encoredMove = 0; - gDisableStructs[battler].encoreTimer = 0; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_ENCORE; // STRINGID_PKMNENCOREENDED - ret = TRUE; - } - // Check torment - if (gBattleMons[battler].status2 & STATUS2_TORMENT) - { - gBattleMons[battler].status2 &= ~STATUS2_TORMENT; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_TORMENT; - ret = TRUE; - } - // Check heal block - if (gStatuses3[battler] & STATUS3_HEAL_BLOCK) - { - gStatuses3[battler] &= ~STATUS3_HEAL_BLOCK; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_HEALBLOCK; - ret = TRUE; - } - // Check disable - if (gDisableStructs[battler].disableTimer != 0) - { - gDisableStructs[battler].disableTimer = 0; - gDisableStructs[battler].disabledMove = 0; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_DISABLE; - ret = TRUE; - } -#endif return ret; } @@ -6842,64 +6888,78 @@ static u8 ItemEffectMoveEnd(u32 battler, u16 holdEffect) switch (holdEffect) { -#if B_HP_BERRIES >= GEN_4 case HOLD_EFFECT_MICLE_BERRY: - effect = TrySetMicleBerry(battler, gLastUsedItem, FALSE); + if (B_HP_BERRIES >= GEN_4) + effect = TrySetMicleBerry(battler, gLastUsedItem, FALSE); break; case HOLD_EFFECT_RESTORE_HP: - effect = ItemHealHp(battler, gLastUsedItem, FALSE, FALSE); + if (B_HP_BERRIES >= GEN_4) + effect = ItemHealHp(battler, gLastUsedItem, FALSE, FALSE); break; -#endif -#if B_BERRIES_INSTANT >= GEN_4 case HOLD_EFFECT_RESTORE_PCT_HP: - effect = ItemHealHp(battler, gLastUsedItem, FALSE, TRUE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = ItemHealHp(battler, gLastUsedItem, FALSE, TRUE); break; case HOLD_EFFECT_RESTORE_PP: - effect = ItemRestorePp(battler, gLastUsedItem, FALSE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = ItemRestorePp(battler, gLastUsedItem, FALSE); break; case HOLD_EFFECT_CONFUSE_SPICY: - effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_SPICY, FALSE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_SPICY, FALSE); break; case HOLD_EFFECT_CONFUSE_DRY: - effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_DRY, FALSE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_DRY, FALSE); break; case HOLD_EFFECT_CONFUSE_SWEET: - effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_SWEET, FALSE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_SWEET, FALSE); break; case HOLD_EFFECT_CONFUSE_BITTER: - effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_BITTER, FALSE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_BITTER, FALSE); break; case HOLD_EFFECT_CONFUSE_SOUR: - effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_SOUR, FALSE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_SOUR, FALSE); break; case HOLD_EFFECT_ATTACK_UP: - effect = StatRaiseBerry(battler, gLastUsedItem, STAT_ATK, FALSE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = StatRaiseBerry(battler, gLastUsedItem, STAT_ATK, FALSE); break; case HOLD_EFFECT_DEFENSE_UP: - effect = StatRaiseBerry(battler, gLastUsedItem, STAT_DEF, FALSE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = StatRaiseBerry(battler, gLastUsedItem, STAT_DEF, FALSE); break; case HOLD_EFFECT_SPEED_UP: - effect = StatRaiseBerry(battler, gLastUsedItem, STAT_SPEED, FALSE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = StatRaiseBerry(battler, gLastUsedItem, STAT_SPEED, FALSE); break; case HOLD_EFFECT_SP_ATTACK_UP: - effect = StatRaiseBerry(battler, gLastUsedItem, STAT_SPATK, FALSE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = StatRaiseBerry(battler, gLastUsedItem, STAT_SPATK, FALSE); break; case HOLD_EFFECT_SP_DEFENSE_UP: - effect = StatRaiseBerry(battler, gLastUsedItem, STAT_SPDEF, FALSE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = StatRaiseBerry(battler, gLastUsedItem, STAT_SPDEF, FALSE); break; case HOLD_EFFECT_ENIGMA_BERRY: // consume and heal if hit by super effective move - effect = TrySetEnigmaBerry(battler); + if (B_BERRIES_INSTANT >= GEN_4) + effect = TrySetEnigmaBerry(battler); break; case HOLD_EFFECT_KEE_BERRY: // consume and boost defense if used physical move - effect = DamagedStatBoostBerryEffect(battler, STAT_DEF, SPLIT_PHYSICAL); + if (B_BERRIES_INSTANT >= GEN_4) + effect = DamagedStatBoostBerryEffect(battler, STAT_DEF, SPLIT_PHYSICAL); break; case HOLD_EFFECT_MARANGA_BERRY: // consume and boost sp. defense if used special move - effect = DamagedStatBoostBerryEffect(battler, STAT_SPDEF, SPLIT_SPECIAL); + if (B_BERRIES_INSTANT >= GEN_4) + effect = DamagedStatBoostBerryEffect(battler, STAT_SPDEF, SPLIT_SPECIAL); break; case HOLD_EFFECT_RANDOM_STAT_UP: - effect = RandomStatRaiseBerry(battler, gLastUsedItem, FALSE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = RandomStatRaiseBerry(battler, gLastUsedItem, FALSE); break; -#endif case HOLD_EFFECT_CURE_PAR: if (gBattleMons[battler].status1 & STATUS1_PARALYSIS && !UnnerveOn(battler, gLastUsedItem)) { @@ -7062,8 +7122,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) { int i = 0, moveType; u8 effect = ITEM_NO_EFFECT; - u8 changedPP = 0; - u32 battlerHoldEffect, atkHoldEffect; + u32 battlerHoldEffect = 0, atkHoldEffect; u8 atkHoldEffectParam; u16 atkItem; @@ -7107,39 +7166,50 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) BattleScriptExecute(BattleScript_WhiteHerbEnd2); } break; - #if B_BERRIES_INSTANT >= GEN_4 case HOLD_EFFECT_CONFUSE_SPICY: - effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_SPICY, TRUE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_SPICY, TRUE); break; case HOLD_EFFECT_CONFUSE_DRY: - effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_DRY, TRUE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_DRY, TRUE); break; case HOLD_EFFECT_CONFUSE_SWEET: - effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_SWEET, TRUE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_SWEET, TRUE); break; case HOLD_EFFECT_CONFUSE_BITTER: - effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_BITTER, TRUE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_BITTER, TRUE); break; case HOLD_EFFECT_CONFUSE_SOUR: - effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_SOUR, TRUE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = HealConfuseBerry(battler, gLastUsedItem, FLAVOR_SOUR, TRUE); break; case HOLD_EFFECT_ATTACK_UP: - effect = StatRaiseBerry(battler, gLastUsedItem, STAT_ATK, TRUE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = StatRaiseBerry(battler, gLastUsedItem, STAT_ATK, TRUE); break; case HOLD_EFFECT_DEFENSE_UP: - effect = StatRaiseBerry(battler, gLastUsedItem, STAT_DEF, TRUE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = StatRaiseBerry(battler, gLastUsedItem, STAT_DEF, TRUE); break; case HOLD_EFFECT_SPEED_UP: - effect = StatRaiseBerry(battler, gLastUsedItem, STAT_SPEED, TRUE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = StatRaiseBerry(battler, gLastUsedItem, STAT_SPEED, TRUE); break; case HOLD_EFFECT_SP_ATTACK_UP: - effect = StatRaiseBerry(battler, gLastUsedItem, STAT_SPATK, TRUE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = StatRaiseBerry(battler, gLastUsedItem, STAT_SPATK, TRUE); break; case HOLD_EFFECT_SP_DEFENSE_UP: - effect = StatRaiseBerry(battler, gLastUsedItem, STAT_SPDEF, TRUE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = StatRaiseBerry(battler, gLastUsedItem, STAT_SPDEF, TRUE); break; case HOLD_EFFECT_CRITICAL_UP: - if (!(gBattleMons[battler].status2 & STATUS2_FOCUS_ENERGY) && HasEnoughHpToEatBerry(battler, GetBattlerItemHoldEffectParam(battler, gLastUsedItem), gLastUsedItem)) + if (B_BERRIES_INSTANT >= GEN_4 + && !(gBattleMons[battler].status2 & STATUS2_FOCUS_ENERGY) + && HasEnoughHpToEatBerry(battler, GetBattlerItemHoldEffectParam(battler, gLastUsedItem), gLastUsedItem)) { gBattleMons[battler].status2 |= STATUS2_FOCUS_ENERGY; gBattleScripting.battler = battler; @@ -7148,10 +7218,13 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) } break; case HOLD_EFFECT_RANDOM_STAT_UP: - effect = RandomStatRaiseBerry(battler, gLastUsedItem, TRUE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = RandomStatRaiseBerry(battler, gLastUsedItem, TRUE); break; case HOLD_EFFECT_CURE_PAR: - if (gBattleMons[battler].status1 & STATUS1_PARALYSIS && !UnnerveOn(battler, gLastUsedItem)) + if (B_BERRIES_INSTANT >= GEN_4 + && gBattleMons[battler].status1 & STATUS1_PARALYSIS + && !UnnerveOn(battler, gLastUsedItem)) { gBattleMons[battler].status1 &= ~STATUS1_PARALYSIS; BattleScriptExecute(BattleScript_BerryCurePrlzEnd2); @@ -7159,7 +7232,9 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) } break; case HOLD_EFFECT_CURE_PSN: - if (gBattleMons[battler].status1 & STATUS1_PSN_ANY && !UnnerveOn(battler, gLastUsedItem)) + if (B_BERRIES_INSTANT >= GEN_4 + && (gBattleMons[battler].status1 & STATUS1_PSN_ANY) + && !UnnerveOn(battler, gLastUsedItem)) { gBattleMons[battler].status1 &= ~(STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER); BattleScriptExecute(BattleScript_BerryCurePsnEnd2); @@ -7167,7 +7242,9 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) } break; case HOLD_EFFECT_CURE_BRN: - if (gBattleMons[battler].status1 & STATUS1_BURN && !UnnerveOn(battler, gLastUsedItem)) + if (B_BERRIES_INSTANT >= GEN_4 + && (gBattleMons[battler].status1 & STATUS1_BURN) + && !UnnerveOn(battler, gLastUsedItem)) { gBattleMons[battler].status1 &= ~STATUS1_BURN; BattleScriptExecute(BattleScript_BerryCureBrnEnd2); @@ -7175,13 +7252,17 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) } break; case HOLD_EFFECT_CURE_FRZ: - if (gBattleMons[battler].status1 & STATUS1_FREEZE && !UnnerveOn(battler, gLastUsedItem)) + if (B_BERRIES_INSTANT >= GEN_4 + && (gBattleMons[battler].status1 & STATUS1_FREEZE) + && !UnnerveOn(battler, gLastUsedItem)) { gBattleMons[battler].status1 &= ~STATUS1_FREEZE; BattleScriptExecute(BattleScript_BerryCureFrzEnd2); effect = ITEM_STATUS_CHANGE; } - if (gBattleMons[battler].status1 & STATUS1_FROSTBITE && !UnnerveOn(battler, gLastUsedItem)) + if (B_BERRIES_INSTANT >= GEN_4 + && (gBattleMons[battler].status1 & STATUS1_FROSTBITE) + && !UnnerveOn(battler, gLastUsedItem)) { gBattleMons[battler].status1 &= ~STATUS1_FROSTBITE; BattleScriptExecute(BattleScript_BerryCureFsbEnd2); @@ -7189,7 +7270,9 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) } break; case HOLD_EFFECT_CURE_SLP: - if (gBattleMons[battler].status1 & STATUS1_SLEEP && !UnnerveOn(battler, gLastUsedItem)) + if (B_BERRIES_INSTANT >= GEN_4 + && (gBattleMons[battler].status1 & STATUS1_SLEEP) + && !UnnerveOn(battler, gLastUsedItem)) { gBattleMons[battler].status1 &= ~STATUS1_SLEEP; gBattleMons[battler].status2 &= ~STATUS2_NIGHTMARE; @@ -7198,7 +7281,9 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) } break; case HOLD_EFFECT_CURE_STATUS: - if ((gBattleMons[battler].status1 & STATUS1_ANY || gBattleMons[battler].status2 & STATUS2_CONFUSION) && !UnnerveOn(battler, gLastUsedItem)) + if (B_BERRIES_INSTANT >= GEN_4 + && (gBattleMons[battler].status1 & STATUS1_ANY || gBattleMons[battler].status2 & STATUS2_CONFUSION) + && !UnnerveOn(battler, gLastUsedItem)) { i = 0; if (gBattleMons[battler].status1 & STATUS1_PSN_ANY) @@ -7243,12 +7328,13 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) } break; case HOLD_EFFECT_RESTORE_HP: - effect = ItemHealHp(battler, gLastUsedItem, TRUE, FALSE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = ItemHealHp(battler, gLastUsedItem, TRUE, FALSE); break; case HOLD_EFFECT_RESTORE_PCT_HP: - effect = ItemHealHp(battler, gLastUsedItem, TRUE, TRUE); + if (B_BERRIES_INSTANT >= GEN_4) + effect = ItemHealHp(battler, gLastUsedItem, TRUE, TRUE); break; - #endif case HOLD_EFFECT_AIR_BALLOON: effect = ITEM_EFFECT_OTHER; gBattleScripting.battler = battler; @@ -7369,7 +7455,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) } else if (GetBattlerAbility(battler) != ABILITY_MAGIC_GUARD && !moveTurn) { - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_ItemHurtEnd2); @@ -7380,13 +7466,10 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) break; case HOLD_EFFECT_LEFTOVERS: LEFTOVERS: -#if B_HEAL_BLOCKING >= GEN_5 - if (gBattleMons[battler].hp < gBattleMons[battler].maxHP && !moveTurn && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) -#else - if (gBattleMons[battler].hp < gBattleMons[battler].maxHP && !moveTurn) -#endif + if (gBattleMons[battler].hp < gBattleMons[battler].maxHP && !moveTurn + && (B_HEAL_BLOCKING < GEN_5 || !(gStatuses3[battler] & STATUS3_HEAL_BLOCK))) { - gBattleMoveDamage = gBattleMons[battler].maxHP / 16; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; @@ -7633,10 +7716,10 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) case HOLD_EFFECT_FLINCH: { u16 ability = GetBattlerAbility(gBattlerAttacker); - #if B_SERENE_GRACE_BOOST >= GEN_5 - if (ability == ABILITY_SERENE_GRACE) + if (B_SERENE_GRACE_BOOST >= GEN_5 && ability == ABILITY_SERENE_GRACE) + atkHoldEffectParam *= 2; + if (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_RAINBOW && gCurrentMove != MOVE_SECRET_POWER) atkHoldEffectParam *= 2; - #endif if (gBattleMoveDamage != 0 // Need to have done damage && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && TARGET_TURN_DAMAGED @@ -7659,7 +7742,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) { gBattleStruct->blunderPolicy = FALSE; gLastUsedItem = atkItem; - gBattleScripting.statChanger = SET_STATCHANGER(STAT_SPEED, 2, FALSE); + SET_STATCHANGER(STAT_SPEED, 2, FALSE); effect = ITEM_STATS_CHANGE; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_AttackerItemStatRaise; @@ -7675,19 +7758,16 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) if (gSpecialStatuses[gBattlerAttacker].damagedMons // Need to have done damage && gBattlerAttacker != gBattlerTarget && gBattleMons[gBattlerAttacker].hp != gBattleMons[gBattlerAttacker].maxHP -#if B_HEAL_BLOCKING >= GEN_5 - && gBattleMons[gBattlerAttacker].hp != 0 && !(gStatuses3[battler] & STATUS3_HEAL_BLOCK)) -#else - && gBattleMons[gBattlerAttacker].hp != 0) -#endif + && gBattleMons[gBattlerAttacker].hp != 0 + && (B_HEAL_BLOCKING < GEN_5 || !(gStatuses3[battler] & STATUS3_HEAL_BLOCK))) { gLastUsedItem = atkItem; gPotentialItemEffectBattler = gBattlerAttacker; gBattleScripting.battler = gBattlerAttacker; - gBattleMoveDamage = (gSpecialStatuses[gBattlerTarget].dmg / atkHoldEffectParam) * -1; + gBattleMoveDamage = (gSpecialStatuses[gBattlerTarget].shellBellDmg / atkHoldEffectParam) * -1; if (gBattleMoveDamage == 0) gBattleMoveDamage = -1; - gSpecialStatuses[gBattlerTarget].dmg = 0; + gSpecialStatuses[gBattlerTarget].shellBellDmg = 0; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ItemHealHP_Ret; effect = ITEM_HP_CHANGE; @@ -7700,7 +7780,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) && !gSpecialStatuses[gBattlerAttacker].magicianStolen && gSpecialStatuses[gBattlerAttacker].damagedMons) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 10; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 10; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; effect = ITEM_HP_CHANGE; @@ -7718,7 +7798,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) { gLastUsedItem = atkItem; gBattleScripting.battler = gBattlerAttacker; - gBattleScripting.statChanger = SET_STATCHANGER(STAT_SPATK, 1, FALSE); + SET_STATCHANGER(STAT_SPATK, 1, FALSE); effect = ITEM_STATS_CHANGE; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_AttackerItemStatRaise; @@ -7746,7 +7826,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) && IsBattlerAlive(gBattlerAttacker) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 6; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 6; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; effect = ITEM_HP_CHANGE; @@ -7774,7 +7854,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) effect = ITEM_STATS_CHANGE; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_TargetItemStatRaise; - gBattleScripting.statChanger = SET_STATCHANGER(STAT_ATK, 1, FALSE); + SET_STATCHANGER(STAT_ATK, 1, FALSE); } break; case HOLD_EFFECT_LUMINOUS_MOSS: @@ -7785,7 +7865,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) effect = ITEM_STATS_CHANGE; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_TargetItemStatRaise; - gBattleScripting.statChanger = SET_STATCHANGER(STAT_SPDEF, 1, FALSE); + SET_STATCHANGER(STAT_SPDEF, 1, FALSE); } break; case HOLD_EFFECT_CELL_BATTERY: @@ -7796,7 +7876,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) effect = ITEM_STATS_CHANGE; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_TargetItemStatRaise; - gBattleScripting.statChanger = SET_STATCHANGER(STAT_ATK, 1, FALSE); + SET_STATCHANGER(STAT_ATK, 1, FALSE); } break; case HOLD_EFFECT_ABSORB_BULB: @@ -7807,7 +7887,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) effect = ITEM_STATS_CHANGE; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_TargetItemStatRaise; - gBattleScripting.statChanger = SET_STATCHANGER(STAT_SPATK, 1, FALSE); + SET_STATCHANGER(STAT_SPATK, 1, FALSE); } break; case HOLD_EFFECT_ENIGMA_BERRY: // consume and heal if hit by super effective move @@ -7820,7 +7900,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) && IS_MOVE_PHYSICAL(gCurrentMove) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; if (GetBattlerAbility(battler) == ABILITY_RIPEN) @@ -7840,7 +7920,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) && IS_MOVE_SPECIAL(gCurrentMove) && GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; if (GetBattlerAbility(battler) == ABILITY_RIPEN) @@ -7905,7 +7985,7 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) case HOLD_EFFECT_STICKY_BARB: // Not an orb per se, but similar effect, and needs to NOT activate with pickpocket if (battlerAbility != ABILITY_MAGIC_GUARD) { - gBattleMoveDamage = gBattleMons[battler].maxHP / 8; + gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_ItemHurtEnd2); @@ -7932,11 +8012,12 @@ u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn) return effect; } -void ClearFuryCutterDestinyBondGrudge(u32 battler) +void ClearVariousBattlerFlags(u32 battler) { gDisableStructs[battler].furyCutterCounter = 0; gBattleMons[battler].status2 &= ~STATUS2_DESTINY_BOND; gStatuses3[battler] &= ~STATUS3_GRUDGE; + gStatuses4[battler] &= ~ STATUS4_GLAIVE_RUSH; } void HandleAction_RunBattleScript(void) // identical to RunBattleScriptCommands @@ -7971,7 +8052,7 @@ u32 SetRandomTarget(u32 battler) u32 GetMoveTarget(u16 move, u8 setTarget) { u8 targetBattler = 0; - u32 i, moveTarget, side; + u32 moveTarget, side; if (setTarget != NO_TARGET_OVERRIDE) moveTarget = setTarget - 1; @@ -8048,12 +8129,7 @@ u32 GetMoveTarget(u16 move, u8 setTarget) static bool32 IsBattlerModernFatefulEncounter(u32 battler) { - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) - return TRUE; - if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS - && GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL) != SPECIES_MEW) - return TRUE; - return GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_MODERN_FATEFUL_ENCOUNTER, NULL); + return TRUE; } u8 IsMonDisobedient(void) @@ -8076,28 +8152,33 @@ u8 IsMonDisobedient(void) return 0; if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) return 0; - #if B_OBEDIENCE_MECHANICS < GEN_8 - if (!IsOtherTrainer(gBattleMons[gBattlerAttacker].otId, gBattleMons[gBattlerAttacker].otName)) + if (B_OBEDIENCE_MECHANICS < GEN_8 && !IsOtherTrainer(gBattleMons[gBattlerAttacker].otId, gBattleMons[gBattlerAttacker].otName)) return 0; - #endif - if (FlagGet(FLAG_BADGE08_GET)) + if (FlagGet(FLAG_BADGE08_GET)) // Rain Badge, ignore obedience altogether return 0; obedienceLevel = 10; - if (FlagGet(FLAG_BADGE02_GET)) + if (FlagGet(FLAG_BADGE01_GET)) // Stone Badge + obedienceLevel = 20; + if (FlagGet(FLAG_BADGE02_GET)) // Knuckle Badge obedienceLevel = 30; - if (FlagGet(FLAG_BADGE04_GET)) + if (FlagGet(FLAG_BADGE03_GET)) // Dynamo Badge + obedienceLevel = 40; + if (FlagGet(FLAG_BADGE04_GET)) // Heat Badge obedienceLevel = 50; - if (FlagGet(FLAG_BADGE06_GET)) + if (FlagGet(FLAG_BADGE05_GET)) // Balance Badge + obedienceLevel = 60; + if (FlagGet(FLAG_BADGE06_GET)) // Feather Badge obedienceLevel = 70; + if (FlagGet(FLAG_BADGE07_GET)) // Mind Badge + obedienceLevel = 80; } -#if B_OBEDIENCE_MECHANICS >= GEN_8 - if (!IsOtherTrainer(gBattleMons[gBattlerAttacker].otId, gBattleMons[gBattlerAttacker].otName)) + if (B_OBEDIENCE_MECHANICS >= GEN_8 + && !IsOtherTrainer(gBattleMons[gBattlerAttacker].otId, gBattleMons[gBattlerAttacker].otName)) levelReferenced = gBattleMons[gBattlerAttacker].metLevel; else -#endif levelReferenced = gBattleMons[gBattlerAttacker].level; if (levelReferenced <= obedienceLevel) @@ -8253,26 +8334,24 @@ bool32 IsBattlerProtected(u32 battler, u32 move) return FALSE; } - if (move == MOVE_TEATIME) - { + // Z-Moves and Max Moves bypass protection (except Max Guard). + if ((IsMaxMove(move) || gBattleStruct->zmove.active) + && (!gProtectStructs[battler].maxGuarded + || gBattleMoves[move].argument == MAX_EFFECT_BYPASS_PROTECT)) return FALSE; - } - // Z-Moves and Max Moves bypass protection - if (gBattleStruct->zmove.active) - { - return FALSE; - } + // Max Guard is silly about the moves it blocks, including Teatime. + if (gProtectStructs[battler].maxGuarded && IsMoveBlockedByMaxGuard(move)) + return TRUE; // Protective Pads doesn't stop Unseen Fist from bypassing Protect effects, so IsMoveMakingContact() isn't used here. // This means extra logic is needed to handle Shell Side Arm. if (GetBattlerAbility(gBattlerAttacker) == ABILITY_UNSEEN_FIST - && (gBattleMoves[move].makesContact || (gBattleMoves[move].effect == EFFECT_SHELL_SIDE_ARM && gBattleStruct->swapDamageCategory))) + && (gBattleMoves[move].makesContact || (gBattleMoves[move].effect == EFFECT_SHELL_SIDE_ARM && gBattleStruct->swapDamageCategory)) + && !gProtectStructs[battler].maxGuarded) // Max Guard cannot be bypassed by Unseen Fist return FALSE; else if (gBattleMoves[move].ignoresProtect) return FALSE; - else if (gBattleMoves[move].effect == EFFECT_FEINT) - return FALSE; else if (gProtectStructs[battler].protected) return TRUE; else if (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_WIDE_GUARD @@ -8286,6 +8365,8 @@ bool32 IsBattlerProtected(u32 battler, u32 move) return TRUE; else if (gProtectStructs[battler].kingsShielded && gBattleMoves[move].power != 0) return TRUE; + else if (gProtectStructs[battler].maxGuarded) + return TRUE; else if (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_QUICK_GUARD && GetChosenMovePriority(gBattlerAttacker) > 0) return TRUE; @@ -8308,10 +8389,8 @@ static bool32 IsBattlerGrounded2(u32 battler, bool32 considerInverse) return TRUE; if (gFieldStatuses & STATUS_FIELD_GRAVITY) return TRUE; -#if B_ROOTED_GROUNDING >= GEN_4 - if (gStatuses3[battler] & STATUS3_ROOTED) + if (B_ROOTED_GROUNDING >= GEN_4 && gStatuses3[battler] & STATUS3_ROOTED) return TRUE; -#endif if (gStatuses3[battler] & STATUS3_SMACKED_DOWN) return TRUE; if (gStatuses3[battler] & STATUS3_TELEKINESIS) @@ -8359,7 +8438,7 @@ u32 GetMoveSlot(u16 *moves, u32 move) u32 GetBattlerWeight(u32 battler) { u32 i; - u32 weight = GetPokedexHeightWeight(SpeciesToNationalPokedexNum(gBattleMons[battler].species), 1); + u32 weight = GetSpeciesWeight(gBattleMons[battler].species); u32 ability = GetBattlerAbility(battler); u32 holdEffect = GetBattlerHoldEffect(battler, TRUE); @@ -8557,7 +8636,8 @@ static inline u32 CalcMoveBasePower(u32 move, u32 battlerAtk, u32 battlerDef, u3 switch (gBattleMoves[move].effect) { case EFFECT_PLEDGE: - // todo + if (gBattleStruct->pledgeMove) + basePower = 150; break; case EFFECT_FLING: basePower = GetFlingPowerFromItemId(gBattleMons[battlerAtk].item); @@ -8623,7 +8703,7 @@ static inline u32 CalcMoveBasePower(u32 move, u32 battlerAtk, u32 battlerDef, u3 if (gBattleMons[battlerDef].status1 & STATUS1_SLEEP || abilityDef == ABILITY_COMATOSE) basePower *= 2; break; - case EFFECT_SMELLINGSALT: + case EFFECT_SMELLING_SALTS: if (gBattleMons[battlerDef].status1 & STATUS1_PARALYSIS) basePower *= 2; break; @@ -8704,10 +8784,7 @@ static inline u32 CalcMoveBasePower(u32 move, u32 battlerAtk, u32 battlerDef, u3 break; case EFFECT_PAYBACK: if (GetBattlerTurnOrderNum(battlerAtk) > GetBattlerTurnOrderNum(battlerDef) - #if B_PAYBACK_SWITCH_BOOST >= GEN_5 - && (gDisableStructs[battlerDef].isFirstTurn != 2) - #endif - ) + && (B_PAYBACK_SWITCH_BOOST < GEN_5 || gDisableStructs[battlerDef].isFirstTurn != 2)) basePower *= 2; break; case EFFECT_BOLT_BEAK: @@ -8738,25 +8815,22 @@ static inline u32 CalcMoveBasePower(u32 move, u32 battlerAtk, u32 battlerDef, u3 basePower = uq4_12_multiply(basePower, UQ_4_12(1.5)); break; case EFFECT_DYNAMAX_DOUBLE_DMG: - #ifdef B_DYNAMAX if (IsDynamaxed(battlerDef)) basePower *= 2; - #endif break; case EFFECT_HIDDEN_POWER: { - #if B_HIDDEN_POWER_DMG < GEN_6 - u8 powerBits; + if (B_HIDDEN_POWER_DMG < GEN_6) + { + u8 powerBits = ((gBattleMons[battlerAtk].hpIV & 2) >> 1) + | ((gBattleMons[battlerAtk].attackIV & 2) << 0) + | ((gBattleMons[battlerAtk].defenseIV & 2) << 1) + | ((gBattleMons[battlerAtk].speedIV & 2) << 2) + | ((gBattleMons[battlerAtk].spAttackIV & 2) << 3) + | ((gBattleMons[battlerAtk].spDefenseIV & 2) << 4); - powerBits = ((gBattleMons[battlerAtk].hpIV & 2) >> 1) - | ((gBattleMons[battlerAtk].attackIV & 2) << 0) - | ((gBattleMons[battlerAtk].defenseIV & 2) << 1) - | ((gBattleMons[battlerAtk].speedIV & 2) << 2) - | ((gBattleMons[battlerAtk].spAttackIV & 2) << 3) - | ((gBattleMons[battlerAtk].spDefenseIV & 2) << 4); - - basePower = (40 * powerBits) / 63 + 30; - #endif + basePower = (40 * powerBits) / 63 + 30; + } break; } case EFFECT_GRAV_APPLE: @@ -8777,14 +8851,20 @@ static inline u32 CalcMoveBasePower(u32 move, u32 battlerAtk, u32 battlerDef, u3 basePower *= 2; break; case EFFECT_BEAT_UP: - #if B_BEAT_UP >= GEN_5 - basePower = CalcBeatUpPower(); - #endif + if (B_BEAT_UP >= GEN_5) + basePower = CalcBeatUpPower(); break; case EFFECT_PSYBLADE: if (IsBattlerTerrainAffected(battlerAtk, STATUS_FIELD_ELECTRIC_TERRAIN)) basePower = uq4_12_multiply(basePower, UQ_4_12(1.5)); break; + case EFFECT_MAX_MOVE: + basePower = GetMaxMovePower(gBattleMons[battlerAtk].moves[gBattleStruct->chosenMovePositions[battlerAtk]]); + break; + case EFFECT_RAGE_FIST: + basePower += 50 * gBattleStruct->timesGotHit[GetBattlerSide(battlerAtk)][gBattlerPartyIndexes[battlerAtk]]; + basePower = (basePower > 350) ? 350 : basePower; + break; } // Move-specific base power changes @@ -8845,20 +8925,13 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 modifier = uq4_12_multiply(modifier, UQ_4_12(0.5)); break; case EFFECT_KNOCK_OFF: - #if B_KNOCK_OFF_DMG >= GEN_6 - if (gBattleMons[battlerDef].item != ITEM_NONE + if (B_KNOCK_OFF_DMG >= GEN_6 + && gBattleMons[battlerDef].item != ITEM_NONE && CanBattlerGetOrLoseItem(battlerDef, gBattleMons[battlerDef].item)) modifier = uq4_12_multiply(modifier, UQ_4_12(1.5)); - #endif break; } -#if B_TERRAIN_TYPE_BOOST >= GEN_8 - #define TERRAIN_TYPE_BOOST UQ_4_12(1.3) -#else - #define TERRAIN_TYPE_BOOST UQ_4_12(1.5) -#endif - // various effects if (gProtectStructs[battlerAtk].helpingHand) modifier = uq4_12_multiply(modifier, UQ_4_12(1.5)); @@ -8869,25 +8942,19 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 if (gStatuses3[battlerAtk] & STATUS3_ME_FIRST) modifier = uq4_12_multiply(modifier, UQ_4_12(1.5)); if (IsBattlerTerrainAffected(battlerAtk, STATUS_FIELD_GRASSY_TERRAIN) && moveType == TYPE_GRASS) - modifier = uq4_12_multiply(modifier, TERRAIN_TYPE_BOOST); + modifier = uq4_12_multiply(modifier, (B_TERRAIN_TYPE_BOOST >= GEN_8 ? UQ_4_12(1.3) : UQ_4_12(1.5))); if (IsBattlerTerrainAffected(battlerDef, STATUS_FIELD_MISTY_TERRAIN) && moveType == TYPE_DRAGON) modifier = uq4_12_multiply(modifier, UQ_4_12(0.5)); if (IsBattlerTerrainAffected(battlerAtk, STATUS_FIELD_ELECTRIC_TERRAIN) && moveType == TYPE_ELECTRIC) - modifier = uq4_12_multiply(modifier, TERRAIN_TYPE_BOOST); + modifier = uq4_12_multiply(modifier, (B_TERRAIN_TYPE_BOOST >= GEN_8 ? UQ_4_12(1.3) : UQ_4_12(1.5))); if (IsBattlerTerrainAffected(battlerAtk, STATUS_FIELD_PSYCHIC_TERRAIN) && moveType == TYPE_PSYCHIC) - modifier = uq4_12_multiply(modifier, TERRAIN_TYPE_BOOST); - #if B_SPORT_TURNS >= GEN_6 - if ((moveType == TYPE_ELECTRIC && gFieldStatuses & STATUS_FIELD_MUDSPORT) - || (moveType == TYPE_FIRE && gFieldStatuses & STATUS_FIELD_WATERSPORT)) - #else - if ((moveType == TYPE_ELECTRIC && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, 0, ABILITYEFFECT_MUD_SPORT, 0)) - || (moveType == TYPE_FIRE && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, 0, ABILITYEFFECT_WATER_SPORT, 0))) - #endif - #if B_SPORT_DMG_REDUCTION >= GEN_5 - modifier = uq4_12_multiply(modifier, UQ_4_12(0.23)); - #else - modifier = uq4_12_multiply(modifier, UQ_4_12(0.5)); - #endif + modifier = uq4_12_multiply(modifier, (B_TERRAIN_TYPE_BOOST >= GEN_8 ? UQ_4_12(1.3) : UQ_4_12(1.5))); + if (moveType == TYPE_ELECTRIC && ((gFieldStatuses & STATUS_FIELD_MUDSPORT) + || AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, 0, ABILITYEFFECT_MUD_SPORT, 0))) + modifier = uq4_12_multiply(modifier, UQ_4_12(B_SPORT_DMG_REDUCTION >= GEN_5 ? 0.23 : 0.5)); + if (moveType == TYPE_FIRE && ((gFieldStatuses & STATUS_FIELD_WATERSPORT) + || AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, 0, ABILITYEFFECT_WATER_SPORT, 0))) + modifier = uq4_12_multiply(modifier, UQ_4_12(B_SPORT_DMG_REDUCTION >= GEN_5 ? 0.23 : 0.5)); // attacker's abilities switch (atkAbility) @@ -8981,7 +9048,11 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 break; case ABILITY_TRANSISTOR: if (moveType == TYPE_ELECTRIC) + #if B_TRANSISTOR_BOOST >= GEN_9 + modifier = uq4_12_multiply(modifier, UQ_4_12(5325 / 4096)); + #else modifier = uq4_12_multiply(modifier, UQ_4_12(1.5)); + #endif break; case ABILITY_DRAGONS_MAW: if (moveType == TYPE_DRAGON) @@ -9121,11 +9192,9 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 modifier = uq4_12_multiply(modifier, holdEffectModifier); break; case HOLD_EFFECT_SOUL_DEW: - #if B_SOUL_DEW_BOOST >= GEN_7 - if ((gBattleMons[battlerAtk].species == SPECIES_LATIAS || gBattleMons[battlerAtk].species == SPECIES_LATIOS) && (moveType == TYPE_PSYCHIC || moveType == TYPE_DRAGON)) - #else - if ((gBattleMons[battlerAtk].species == SPECIES_LATIAS || gBattleMons[battlerAtk].species == SPECIES_LATIOS) && !(gBattleTypeFlags & BATTLE_TYPE_FRONTIER) && IS_MOVE_SPECIAL(move)) - #endif + if ((gBattleMons[battlerAtk].species == SPECIES_LATIAS || gBattleMons[battlerAtk].species == SPECIES_LATIOS) + && ((B_SOUL_DEW_BOOST >= GEN_7 && (moveType == TYPE_PSYCHIC || moveType == TYPE_DRAGON)) + || (B_SOUL_DEW_BOOST < GEN_7 && !(gBattleTypeFlags & BATTLE_TYPE_FRONTIER) && IS_MOVE_SPECIAL(move)))) modifier = uq4_12_multiply(modifier, holdEffectModifier); break; case HOLD_EFFECT_BUG_POWER: @@ -9167,7 +9236,6 @@ static inline u32 CalcMoveBasePowerAfterModifiers(u32 move, u32 battlerAtk, u32 } return uq4_12_multiply_by_int_half_down(modifier, basePower); } -#undef TERRAIN_TYPE_BOOST static inline u32 CalcAttackStat(u32 move, u32 battlerAtk, u32 battlerDef, u32 moveType, bool32 isCrit, bool32 updateFlags, u32 atkAbility, u32 defAbility, u32 holdEffectAtk) { @@ -9263,26 +9331,24 @@ static inline u32 CalcAttackStat(u32 move, u32 battlerAtk, u32 battlerDef, u32 m if (moveType == TYPE_GRASS && gBattleMons[battlerAtk].hp <= (gBattleMons[battlerAtk].maxHP / 3)) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); break; - #if B_PLUS_MINUS_INTERACTION >= GEN_5 case ABILITY_PLUS: + if (IS_MOVE_SPECIAL(move) && IsBattlerAlive(BATTLE_PARTNER(battlerAtk))) + { + u32 partnerAbility = GetBattlerAbility(BATTLE_PARTNER(battlerAtk)); + if (partnerAbility == ABILITY_MINUS + || (B_PLUS_MINUS_INTERACTION >= GEN_5 && partnerAbility == ABILITY_PLUS)) + modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); + } + break; case ABILITY_MINUS: if (IS_MOVE_SPECIAL(move) && IsBattlerAlive(BATTLE_PARTNER(battlerAtk))) { u32 partnerAbility = GetBattlerAbility(BATTLE_PARTNER(battlerAtk)); - if (partnerAbility == ABILITY_PLUS || partnerAbility == ABILITY_MINUS) + if (partnerAbility == ABILITY_PLUS + || (B_PLUS_MINUS_INTERACTION >= GEN_5 && partnerAbility == ABILITY_MINUS)) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); } break; - #else - case ABILITY_PLUS: - if (IS_MOVE_SPECIAL(move) && IsBattlerAlive(BATTLE_PARTNER(battlerAtk)) && GetBattlerAbility(BATTLE_PARTNER(battlerAtk)) == ABILITY_MINUS) - modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); - break; - case ABILITY_MINUS: - if (IS_MOVE_SPECIAL(move) && IsBattlerAlive(BATTLE_PARTNER(battlerAtk)) && GetBattlerAbility(BATTLE_PARTNER(battlerAtk)) == ABILITY_PLUS) - modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); - break; - #endif case ABILITY_FLOWER_GIFT: if (gBattleMons[battlerAtk].species == SPECIES_CHERRIM_SUNSHINE && IsBattlerWeatherAffected(battlerAtk, B_WEATHER_SUN) && IS_MOVE_PHYSICAL(move)) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); @@ -9345,15 +9411,15 @@ static inline u32 CalcAttackStat(u32 move, u32 battlerAtk, u32 battlerDef, u32 m modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(2.0)); break; case HOLD_EFFECT_LIGHT_BALL: - if (atkBaseSpeciesId == SPECIES_PIKACHU) + if (atkBaseSpeciesId == SPECIES_PIKACHU && (B_LIGHT_BALL_ATTACK_BOOST >= GEN_4 || IS_MOVE_SPECIAL(move))) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(2.0)); break; case HOLD_EFFECT_CHOICE_BAND: - if (IS_MOVE_PHYSICAL(move)) + if (IS_MOVE_PHYSICAL(move) && !IsDynamaxed(battlerAtk)) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); break; case HOLD_EFFECT_CHOICE_SPECS: - if (IS_MOVE_SPECIAL(move)) + if (IS_MOVE_SPECIAL(move) && !IsDynamaxed(battlerAtk)) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); break; } @@ -9371,11 +9437,16 @@ static inline u32 CalcAttackStat(u32 move, u32 battlerAtk, u32 battlerDef, u32 m static bool32 CanEvolve(u32 species) { u32 i; + const struct Evolution *evolutions = GetSpeciesEvolutions(species); - for (i = 0; i < EVOS_PER_MON; i++) + if (evolutions != NULL) { - if (gEvolutionTable[species][i].method) - return TRUE; + for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) + { + if (evolutions[i].method + && SanitizeSpeciesId(evolutions[i].targetSpecies) != SPECIES_NONE) + return TRUE; + } } return FALSE; } @@ -9411,11 +9482,9 @@ static inline u32 CalcDefenseStat(u32 move, u32 battlerAtk, u32 battlerDef, u32 usesDefStat = FALSE; } - #if B_EXPLOSION_DEFENSE <= GEN_4 // Self-destruct / Explosion cut defense in half - if (gBattleMoves[gCurrentMove].effect == EFFECT_EXPLOSION) + if (B_EXPLOSION_DEFENSE < GEN_5 && gBattleMoves[gCurrentMove].effect == EFFECT_EXPLOSION) defStat /= 2; - #endif // critical hits ignore positive stat changes if (isCrit && defStage > DEFAULT_STAT_STAGE) @@ -9508,21 +9577,20 @@ static inline u32 CalcDefenseStat(u32 move, u32 battlerAtk, u32 battlerDef, u32 if (!usesDefStat) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); break; -#if B_SOUL_DEW_BOOST <= GEN_6 case HOLD_EFFECT_SOUL_DEW: - if ((gBattleMons[battlerDef].species == SPECIES_LATIAS || gBattleMons[battlerDef].species == SPECIES_LATIOS) + if (B_SOUL_DEW_BOOST < GEN_7 + && (gBattleMons[battlerDef].species == SPECIES_LATIAS || gBattleMons[battlerDef].species == SPECIES_LATIOS) && !(gBattleTypeFlags & BATTLE_TYPE_FRONTIER) && !usesDefStat) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); break; -#endif } // sandstorm sp.def boost for rock types - if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_ROCK) && weather & B_WEATHER_SANDSTORM && !usesDefStat) + if (B_SANDSTORM_SPDEF_BOOST >= GEN_4 && IS_BATTLER_OF_TYPE(battlerDef, TYPE_ROCK) && IsBattlerWeatherAffected(battlerDef, B_WEATHER_SANDSTORM) && !usesDefStat) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); // snow def boost for ice types - if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE) && weather & B_WEATHER_SNOW && usesDefStat) + if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE) && IsBattlerWeatherAffected(battlerDef, B_WEATHER_SNOW) && usesDefStat) modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5)); // The defensive stats of a Player's Pokémon are boosted by x1.1 (+10%) if they have the 5th badge and 7th badges. @@ -9541,34 +9609,10 @@ static inline s32 CalculateBaseDamage(u32 power, u32 userFinalAttack, u32 level, return power * userFinalAttack * (2 * level / 5 + 2) / targetFinalDefense / 50 + 2; } -#if B_MULTIPLE_TARGETS_DMG >= GEN_4 - #define V_MULTIPLE_TARGETS_DMG UQ_4_12(0.75) -#else - #define V_MULTIPLE_TARGETS_DMG UQ_4_12(0.5) -#endif - -#if B_CRIT_MULTIPLIER >= GEN_6 - #define V_CRIT_MULTIPLIER UQ_4_12(1.5) -#else - #define V_CRIT_MULTIPLIER UQ_4_12(2.0) -#endif - -#if B_BURN_FACADE_DMG >= GEN_6 - #define FACADE_PREVENTS_BURN_MALUS(move) (gBattleMoves[move].effect == EFFECT_FACADE) -#else - #define FACADE_PREVENTS_BURN_MALUS(move) (FALSE) -#endif - -#if B_PARENTAL_BOND_DMG < GEN_7 - #define V_PARENTAL_BOND_DMG UQ_4_12(0.5) -#else - #define V_PARENTAL_BOND_DMG UQ_4_12(0.25) -#endif - static inline uq4_12_t GetTargetDamageModifier(u32 move, u32 battlerAtk, u32 battlerDef) { if (GetMoveTargetCount(move, battlerAtk, battlerDef) >= 2) - return V_MULTIPLE_TARGETS_DMG; + return B_MULTIPLE_TARGETS_DMG >= GEN_4 ? UQ_4_12(0.75) : UQ_4_12(0.5); return UQ_4_12(1.0); } @@ -9576,12 +9620,14 @@ static inline uq4_12_t GetParentalBondModifier(u32 battlerAtk) { if (gSpecialStatuses[battlerAtk].parentalBondState != PARENTAL_BOND_2ND_HIT) return UQ_4_12(1.0); - return V_PARENTAL_BOND_DMG; + return B_PARENTAL_BOND_DMG >= GEN_7 ? UQ_4_12(0.25) : UQ_4_12(0.5); } static inline uq4_12_t GetSameTypeAttackBonusModifier(u32 battlerAtk, u32 moveType, u32 move, u32 abilityAtk) { - if (!IS_BATTLER_OF_TYPE(battlerAtk, moveType) || move == MOVE_STRUGGLE || move == MOVE_NONE) + if (gBattleStruct->pledgeMove && IS_BATTLER_OF_TYPE(BATTLE_PARTNER(battlerAtk), moveType)) + return (abilityAtk == ABILITY_ADAPTABILITY) ? UQ_4_12(2.0) : UQ_4_12(1.5); + else if (!IS_BATTLER_OF_TYPE(battlerAtk, moveType) || move == MOVE_STRUGGLE || move == MOVE_NONE) return UQ_4_12(1.0); return (abilityAtk == ABILITY_ADAPTABILITY) ? UQ_4_12(2.0) : UQ_4_12(1.5); } @@ -9615,12 +9661,12 @@ static inline uq4_12_t GetBurnOrFrostBiteModifier(u32 battlerAtk, u32 move, u32 { if (gBattleMons[battlerAtk].status1 & STATUS1_BURN && IS_MOVE_PHYSICAL(move) - && !FACADE_PREVENTS_BURN_MALUS(move) + && (B_BURN_FACADE_DMG < GEN_6 || gBattleMoves[move].effect != EFFECT_FACADE) && abilityAtk != ABILITY_GUTS) return UQ_4_12(0.5); if (gBattleMons[battlerAtk].status1 & STATUS1_FROSTBITE && IS_MOVE_SPECIAL(move) - && !FACADE_PREVENTS_BURN_MALUS(move) + && (B_BURN_FACADE_DMG < GEN_6 || gBattleMoves[move].effect != EFFECT_FACADE) && abilityAtk != ABILITY_GUTS) return UQ_4_12(0.5); return UQ_4_12(1.0); @@ -9628,12 +9674,21 @@ static inline uq4_12_t GetBurnOrFrostBiteModifier(u32 battlerAtk, u32 move, u32 static inline uq4_12_t GetCriticalModifier(bool32 isCrit) { - return isCrit ? V_CRIT_MULTIPLIER : UQ_4_12(1.0); + if (isCrit) + return B_CRIT_MULTIPLIER >= GEN_6 ? UQ_4_12(1.5) : UQ_4_12(2.0); + return UQ_4_12(1.0); } -static inline uq4_12_t GetZMoveAgainstProtectionModifier(u32 battlerDef) +static inline uq4_12_t GetGlaiveRushModifier(u32 battlerDef) { - if (gBattleStruct->zmove.active && IS_BATTLER_PROTECTED(battlerDef)) + if (gStatuses4[battlerDef] & STATUS4_GLAIVE_RUSH) + return UQ_4_12(2.0); + return UQ_4_12(1.0); +} + +static inline uq4_12_t GetZMaxMoveAgainstProtectionModifier(u32 battlerDef, u32 move) +{ + if ((gBattleStruct->zmove.active || IsMaxMove(move)) && IS_BATTLER_PROTECTED(battlerDef)) return UQ_4_12(0.25); return UQ_4_12(1.0); } @@ -9866,7 +9921,8 @@ static inline s32 DoMoveDamageCalcVars(u32 move, u32 battlerAtk, u32 battlerDef, DAMAGE_APPLY_MODIFIER(GetParentalBondModifier(battlerAtk)); DAMAGE_APPLY_MODIFIER(GetWeatherDamageModifier(battlerAtk, move, moveType, holdEffectAtk, holdEffectDef, weather)); DAMAGE_APPLY_MODIFIER(GetCriticalModifier(isCrit)); - // TODO: Glaive Rush (Gen IX effect) + DAMAGE_APPLY_MODIFIER(GetGlaiveRushModifier(battlerDef)); + if (randomFactor) { dmg *= 100 - RandomUniform(RNG_DAMAGE_MODIFIER, 0, 15); @@ -9876,7 +9932,7 @@ static inline s32 DoMoveDamageCalcVars(u32 move, u32 battlerAtk, u32 battlerDef, DAMAGE_APPLY_MODIFIER(GetSameTypeAttackBonusModifier(battlerAtk, moveType, move, abilityAtk)); DAMAGE_APPLY_MODIFIER(typeEffectivenessModifier); DAMAGE_APPLY_MODIFIER(GetBurnOrFrostBiteModifier(battlerAtk, move, abilityAtk)); - DAMAGE_APPLY_MODIFIER(GetZMoveAgainstProtectionModifier(battlerDef)); + DAMAGE_APPLY_MODIFIER(GetZMaxMoveAgainstProtectionModifier(battlerDef, move)); DAMAGE_APPLY_MODIFIER(GetOtherModifiers(move, moveType, battlerAtk, battlerDef, isCrit, typeEffectivenessModifier, updateFlags, abilityAtk, abilityDef, holdEffectAtk, holdEffectDef)); if (dmg == 0) @@ -10018,12 +10074,8 @@ static inline uq4_12_t CalcTypeEffectivenessMultiplierInternal(u32 move, u32 mov if (gBattleMoves[move].split == SPLIT_STATUS && move != MOVE_THUNDER_WAVE) { modifier = UQ_4_12(1.0); - #if B_GLARE_GHOST <= GEN_3 - if (move == MOVE_GLARE && IS_BATTLER_OF_TYPE(battlerDef, TYPE_GHOST)) - { + if (B_GLARE_GHOST < GEN_4 && move == MOVE_GLARE && IS_BATTLER_OF_TYPE(battlerDef, TYPE_GHOST)) modifier = UQ_4_12(0.0); - } - #endif } else if (moveType == TYPE_GROUND && !IsBattlerGrounded2(battlerDef, TRUE) && !(gBattleMoves[move].ignoreTypeIfFlyingAndUngrounded)) { @@ -10037,12 +10089,10 @@ static inline uq4_12_t CalcTypeEffectivenessMultiplierInternal(u32 move, u32 mov RecordAbilityBattle(battlerDef, ABILITY_LEVITATE); } } -#if B_SHEER_COLD_IMMUNITY >= GEN_7 - else if (move == MOVE_SHEER_COLD && IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE)) + else if (B_SHEER_COLD_IMMUNITY >= GEN_7 && move == MOVE_SHEER_COLD && IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE)) { modifier = UQ_4_12(0.0); } -#endif // Thousand Arrows ignores type modifiers for flying mons if (!IsBattlerGrounded(battlerDef) && (gBattleMoves[move].ignoreTypeIfFlyingAndUngrounded) @@ -10127,10 +10177,8 @@ static uq4_12_t GetInverseTypeMultiplier(uq4_12_t multiplier) uq4_12_t GetTypeModifier(u32 atkType, u32 defType) { -#if B_FLAG_INVERSE_BATTLE != 0 - if (FlagGet(B_FLAG_INVERSE_BATTLE)) + if (B_FLAG_INVERSE_BATTLE != 0 && FlagGet(B_FLAG_INVERSE_BATTLE)) return GetInverseTypeMultiplier(sTypeEffectivenessTable[atkType][defType]); -#endif return sTypeEffectivenessTable[atkType][defType]; } @@ -10202,7 +10250,7 @@ bool32 IsPartnerMonFromSameTrainer(u32 battler) bool32 DoesSpeciesUseHoldItemToChangeForm(u16 species, u16 heldItemId) { u32 i; - const struct FormChange *formChanges = gFormChangeTablePointers[species]; + const struct FormChange *formChanges = GetSpeciesFormChanges(species); if (formChanges != NULL) { @@ -10225,7 +10273,7 @@ bool32 DoesSpeciesUseHoldItemToChangeForm(u16 species, u16 heldItemId) bool32 CanMegaEvolve(u32 battler) { - u32 itemId, holdEffect, species; + u32 itemId, holdEffect; struct Pokemon *mon; u32 battlerPosition = GetBattlerPosition(battler); u8 partnerPosition = GetBattlerPosition(BATTLE_PARTNER(battler)); @@ -10259,7 +10307,6 @@ bool32 CanMegaEvolve(u32 battler) else mon = &gPlayerParty[gBattlerPartyIndexes[battler]]; - species = GetMonData(mon, MON_DATA_SPECIES); itemId = GetMonData(mon, MON_DATA_HELD_ITEM); if (itemId == ITEM_ENIGMA_BERRY_E_READER) @@ -10289,7 +10336,7 @@ bool32 CanMegaEvolve(u32 battler) bool32 CanUltraBurst(u32 battler) { - u32 itemId, holdEffect, species; + u32 itemId, holdEffect; struct Pokemon *mon; u32 battlerPosition = GetBattlerPosition(battler); u8 partnerPosition = GetBattlerPosition(BATTLE_PARTNER(battler)); @@ -10322,7 +10369,6 @@ bool32 CanUltraBurst(u32 battler) else mon = &gPlayerParty[gBattlerPartyIndexes[battler]]; - species = GetMonData(mon, MON_DATA_SPECIES); itemId = GetMonData(mon, MON_DATA_HELD_ITEM); // Check if there is an entry in the evolution table for Ultra Burst. @@ -10347,7 +10393,7 @@ bool32 IsBattlerMegaEvolved(u32 battler) // While Transform does copy stats and visuals, it shouldn't be counted as true Mega Evolution. if (gBattleMons[battler].status2 & STATUS2_TRANSFORMED) return FALSE; - return (gSpeciesInfo[gBattleMons[battler].species].flags & SPECIES_FLAG_MEGA_EVOLUTION); + return (gSpeciesInfo[gBattleMons[battler].species].isMegaEvolution); } bool32 IsBattlerPrimalReverted(u32 battler) @@ -10355,7 +10401,7 @@ bool32 IsBattlerPrimalReverted(u32 battler) // While Transform does copy stats and visuals, it shouldn't be counted as true Primal Revesion. if (gBattleMons[battler].status2 & STATUS2_TRANSFORMED) return FALSE; - return (gSpeciesInfo[gBattleMons[battler].species].flags & SPECIES_FLAG_PRIMAL_REVERSION); + return (gSpeciesInfo[gBattleMons[battler].species].isPrimalReversion); } bool32 IsBattlerUltraBursted(u32 battler) @@ -10363,23 +10409,21 @@ bool32 IsBattlerUltraBursted(u32 battler) // While Transform does copy stats and visuals, it shouldn't be counted as true Ultra Burst. if (gBattleMons[battler].status2 & STATUS2_TRANSFORMED) return FALSE; - return (gSpeciesInfo[gBattleMons[battler].species].flags & SPECIES_FLAG_ULTRA_BURST); + return (gSpeciesInfo[gBattleMons[battler].species].isUltraBurst); } // Returns SPECIES_NONE if no form change is possible u16 GetBattleFormChangeTargetSpecies(u32 battler, u16 method) { - u32 i, j; + u32 i; u16 targetSpecies = SPECIES_NONE; u16 species = gBattleMons[battler].species; - const struct FormChange *formChanges = gFormChangeTablePointers[species]; + const struct FormChange *formChanges = GetSpeciesFormChanges(species); u16 heldItem; - u32 ability; if (formChanges != NULL) { heldItem = gBattleMons[battler].item; - ability = GetBattlerAbility(battler); for (i = 0; formChanges[i].method != FORM_CHANGE_TERMINATOR; i++) { @@ -10421,6 +10465,10 @@ u16 GetBattleFormChangeTargetSpecies(u32 battler, u16 method) } } break; + case FORM_CHANGE_BATTLE_GIGANTAMAX: + // TODO: check Gigantamax factor + targetSpecies = formChanges[i].targetSpecies; + break; case FORM_CHANGE_BATTLE_WEATHER: // Check if there is a required ability and if the battler's ability does not match it // or is suppressed. If so, revert to the no weather form. @@ -10446,6 +10494,10 @@ u16 GetBattleFormChangeTargetSpecies(u32 battler, u16 method) if (formChanges[i].param1 == GetBattlerAbility(battler)) targetSpecies = formChanges[i].targetSpecies; break; + case FORM_CHANGE_STATUS: + if (gBattleMons[battler].status1 & formChanges[i].param1) + targetSpecies = formChanges[i].targetSpecies; + break; } } } @@ -10465,6 +10517,9 @@ bool32 CanBattlerFormChange(u32 battler, u16 method) return TRUE; else if (IsBattlerPrimalReverted(battler) && (method == FORM_CHANGE_END_BATTLE)) return TRUE; + // Gigantamaxed Pokemon should revert upon fainting, switching, or ending the battle. + else if (IsGigantamaxed(battler) && (method == FORM_CHANGE_FAINT || method == FORM_CHANGE_BATTLE_SWITCH || method == FORM_CHANGE_END_BATTLE)) + return TRUE; return DoesSpeciesHaveFormChangeMethod(gBattleMons[battler].species, method); } @@ -10483,7 +10538,7 @@ bool32 TryBattleFormChange(u32 battler, u16 method) targetSpecies = GetFormChangeTargetSpecies(&party[monId], method, 0); if (targetSpecies != SPECIES_NONE) { - // Saves the original species on the first form change for the player. + // Saves the original species on the first form change. if (gBattleStruct->changedSpecies[side][monId] == SPECIES_NONE) gBattleStruct->changedSpecies[side][monId] = gBattleMons[battler].species; @@ -10505,6 +10560,10 @@ bool32 TryBattleFormChange(u32 battler, u16 method) else if (IsBattlerPrimalReverted(battler) && (method == FORM_CHANGE_END_BATTLE)) restoreSpecies = TRUE; + // Gigantamax Pokemon have their forms reverted after fainting, switching, or ending the battle. + else if (IsGigantamaxed(battler) && (method == FORM_CHANGE_FAINT || method == FORM_CHANGE_BATTLE_SWITCH || method == FORM_CHANGE_END_BATTLE)) + restoreSpecies = TRUE; + if (restoreSpecies) { // Reverts the original species @@ -10630,16 +10689,17 @@ bool32 SetIllusionMon(struct Pokemon *mon, u32 battler) bool32 ShouldGetStatBadgeBoost(u16 badgeFlag, u32 battler) { -#if B_BADGE_BOOST == GEN_3 - if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_FRONTIER)) - return FALSE; - else if (GetBattlerSide(battler) != B_SIDE_PLAYER) - return FALSE; - else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gTrainerBattleOpponent_A == TRAINER_SECRET_BASE) - return FALSE; - else if (FlagGet(badgeFlag)) - return TRUE; -#endif + if (B_BADGE_BOOST == GEN_3) + { + if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_FRONTIER)) + return FALSE; + else if (GetBattlerSide(battler) != B_SIDE_PLAYER) + return FALSE; + else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gTrainerBattleOpponent_A == TRAINER_SECRET_BASE) + return FALSE; + else if (FlagGet(badgeFlag)) + return TRUE; + } return FALSE; } @@ -10647,19 +10707,19 @@ u8 GetBattleMoveSplit(u32 moveId) { if (gBattleStruct != NULL && gBattleStruct->zmove.active && !IS_MOVE_STATUS(moveId)) return gBattleStruct->zmove.activeSplit; + if (gBattleStruct != NULL && IsMaxMove(moveId)) // TODO: Might be buggy depending on when this is called. + return gBattleStruct->dynamax.activeSplit; if (gBattleStruct != NULL && gBattleStruct->swapDamageCategory) // Photon Geyser, Shell Side Arm, Light That Burns the Sky return SPLIT_PHYSICAL; + if (B_PHYSICAL_SPECIAL_SPLIT >= GEN_4) + return gBattleMoves[moveId].split; -#if B_PHYSICAL_SPECIAL_SPLIT >= GEN_4 - return gBattleMoves[moveId].split; -#else if (IS_MOVE_STATUS(moveId)) return SPLIT_STATUS; else if (gBattleMoves[moveId].type < TYPE_MYSTERY) return SPLIT_PHYSICAL; else return SPLIT_SPECIAL; -#endif } static bool32 TryRemoveScreens(u32 battler) @@ -10736,9 +10796,7 @@ bool32 CanFling(u32 battler) u16 item = gBattleMons[battler].item; if (item == ITEM_NONE - #if B_KLUTZ_FLING_INTERACTION >= GEN_5 - || GetBattlerAbility(battler) == ABILITY_KLUTZ - #endif + || (B_KLUTZ_FLING_INTERACTION >= GEN_5 && GetBattlerAbility(battler) == ABILITY_KLUTZ) || gFieldStatuses & STATUS_FIELD_MAGIC_ROOM || gDisableStructs[battler].embargoTimer != 0 || GetFlingPowerFromItemId(item) == 0 @@ -10873,9 +10931,7 @@ void TryRestoreHeldItems(void) for (i = 0; i < PARTY_SIZE; i++) { - #if B_RESTORE_HELD_BATTLE_ITEMS == FALSE - if (gBattleStruct->itemLost[i].stolen) - #endif + if (B_RESTORE_HELD_BATTLE_ITEMS == TRUE || gBattleStruct->itemLost[i].stolen) { lostItem = gBattleStruct->itemLost[i].originalItem; if (lostItem != ITEM_NONE && ItemId_GetPocket(lostItem) != POCKET_BERRIES) @@ -10899,9 +10955,7 @@ bool32 CanStealItem(u32 battlerStealing, u32 battlerItem, u16 item) | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_SECRET_BASE - #if B_TRAINERS_KNOCK_OFF_ITEMS == TRUE - | BATTLE_TYPE_TRAINER - #endif + | (B_TRAINERS_KNOCK_OFF_ITEMS == TRUE ? BATTLE_TYPE_TRAINER : 0) ))) { return FALSE; @@ -10928,14 +10982,14 @@ void TrySaveExchangedItem(u32 battler, u16 stolenItem) { // Because BtlController_EmitSetMonData does SetMonData, we need to save the stolen item only if it matches the battler's original // So, if the player steals an item during battle and has it stolen from it, it will not end the battle with it (naturally) -#if B_TRAINERS_KNOCK_OFF_ITEMS == TRUE + if (B_TRAINERS_KNOCK_OFF_ITEMS == FALSE) + return; // If regular trainer battle and mon's original item matches what is being stolen, save it to be restored at end of battle if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & BATTLE_TYPE_FRONTIER) && GetBattlerSide(battler) == B_SIDE_PLAYER && stolenItem == gBattleStruct->itemLost[gBattlerPartyIndexes[battler]].originalItem) gBattleStruct->itemLost[gBattlerPartyIndexes[battler]].stolen = TRUE; -#endif } bool32 IsBattlerAffectedByHazards(u32 battler, bool32 toxicSpikes) @@ -11060,7 +11114,8 @@ bool32 TryRoomService(u32 battler) bool32 BlocksPrankster(u16 move, u32 battlerPrankster, u32 battlerDef, bool32 checkTarget) { - #if B_PRANKSTER_DARK_TYPES >= GEN_7 + if (B_PRANKSTER_DARK_TYPES < GEN_7) + return FALSE; if (!gProtectStructs[battlerPrankster].pranksterElevated) return FALSE; if (GetBattlerSide(battlerPrankster) == GetBattlerSide(battlerDef)) @@ -11073,8 +11128,6 @@ bool32 BlocksPrankster(u16 move, u32 battlerPrankster, u32 battlerDef, bool32 ch return FALSE; return TRUE; - #endif - return FALSE; } u16 GetUsedHeldItem(u32 battler) @@ -11099,8 +11152,6 @@ bool32 IsBattlerWeatherAffected(u32 battler, u32 weatherFlags) // Possible return values are defined in battle.h following MOVE_TARGET_SELECTED u32 GetBattlerMoveTargetType(u32 battler, u32 move) { - u32 target; - if (gBattleMoves[move].effect == EFFECT_EXPANDING_FORCE && IsBattlerTerrainAffected(battler, STATUS_FIELD_PSYCHIC_TERRAIN)) return MOVE_TARGET_BOTH; @@ -11114,25 +11165,20 @@ bool32 CanTargetBattler(u32 battlerAtk, u32 battlerDef, u16 move) && GetBattlerSide(battlerAtk) == GetBattlerSide(battlerDef) && gStatuses3[battlerAtk] & STATUS3_HEAL_BLOCK) return FALSE; // Pokémon affected by Heal Block cannot target allies with Pollen Puff + if ((IsDynamaxed(battlerAtk) || gBattleStruct->dynamax.playerSelect) + && GetBattlerSide(battlerAtk) == GetBattlerSide(battlerDef)) + return FALSE; return TRUE; } static void SetRandomMultiHitCounter() { if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_LOADED_DICE) - { gMultiHitCounter = RandomUniform(RNG_LOADED_DICE, 4, 5); - } + else if (B_MULTI_HIT_CHANCE >= GEN_5) + gMultiHitCounter = RandomWeighted(RNG_HITS, 0, 0, 7, 7, 3, 3); // 35%: 2 hits, 35%: 3 hits, 15% 4 hits, 15% 5 hits. else - { -#if B_MULTI_HIT_CHANCE >= GEN_5 - // 35%: 2 hits, 35%: 3 hits, 15% 4 hits, 15% 5 hits. - gMultiHitCounter = RandomWeighted(RNG_HITS, 0, 0, 7, 7, 3, 3); -#else - // 37.5%: 2 hits, 37.5%: 3 hits, 12.5% 4 hits, 12.5% 5 hits. - gMultiHitCounter = RandomWeighted(RNG_HITS, 0, 0, 3, 3, 1, 1); -#endif - } + gMultiHitCounter = RandomWeighted(RNG_HITS, 0, 0, 3, 3, 1, 1); // 37.5%: 2 hits, 37.5%: 3 hits, 12.5% 4 hits, 12.5% 5 hits. } void CopyMonLevelAndBaseStatsToBattleMon(u32 battler, struct Pokemon *mon) @@ -11158,6 +11204,8 @@ void CopyMonAbilityAndTypesToBattleMon(u32 battler, struct Pokemon *mon) void RecalcBattlerStats(u32 battler, struct Pokemon *mon) { CalculateMonStats(mon); + if (IsDynamaxed(battler) && gChosenActionByBattler[battler] != B_ACTION_SWITCH) + ApplyDynamaxHPMultiplier(battler, mon); CopyMonLevelAndBaseStatsToBattleMon(battler, mon); CopyMonAbilityAndTypesToBattleMon(battler, mon); } @@ -11201,9 +11249,17 @@ bool32 AreBattlersOfSameGender(u32 battler1, u32 battler2) return (gender1 != MON_GENDERLESS && gender2 != MON_GENDERLESS && gender1 == gender2); } -u32 CalcSecondaryEffectChance(u32 battler, u8 secondaryEffectChance) +u32 CalcSecondaryEffectChance(u32 battler, u8 secondaryEffectChance, u16 moveEffect) { - if (GetBattlerAbility(battler) == ABILITY_SERENE_GRACE) + bool8 hasSereneGrace = (GetBattlerAbility(battler) == ABILITY_SERENE_GRACE); + bool8 hasRainbow = (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_RAINBOW) != 0; + + if (hasRainbow && hasSereneGrace && moveEffect == EFFECT_FLINCH_HIT) + return secondaryEffectChance *= 2; + + if (hasSereneGrace) + secondaryEffectChance *= 2; + if (hasRainbow && moveEffect != EFFECT_SECRET_POWER) secondaryEffectChance *= 2; return secondaryEffectChance; @@ -11223,6 +11279,56 @@ bool32 IsGen6ExpShareEnabled(void) #endif } +bool8 CanMonParticipateInSkyBattle(struct Pokemon *mon) +{ + u16 species = GetMonData(mon, MON_DATA_SPECIES); + u16 monAbilityNum = GetMonData(mon, MON_DATA_ABILITY_NUM, NULL); + + bool8 hasLevitateAbility = gSpeciesInfo[species].abilities[monAbilityNum] == ABILITY_LEVITATE; + bool8 isFlyingType = gSpeciesInfo[species].types[0] == TYPE_FLYING || gSpeciesInfo[species].types[1] == TYPE_FLYING; + bool8 monIsValidAndNotEgg = GetMonData(mon, MON_DATA_SANITY_HAS_SPECIES) && !GetMonData(mon, MON_DATA_IS_EGG); + + if (monIsValidAndNotEgg) + { + if ((hasLevitateAbility || isFlyingType) && !IsMonBannedFromSkyBattles(species)) + return TRUE; + } + return FALSE; +} + +bool8 IsMonBannedFromSkyBattles(u16 species) +{ + switch (species) + { +#if B_SKY_BATTLE_STRICT_ELIGIBILITY == TRUE + case SPECIES_SPEAROW: + case SPECIES_FARFETCHD: + case SPECIES_DODUO: + case SPECIES_DODRIO: + case SPECIES_HOOTHOOT: + case SPECIES_NATU: + case SPECIES_MURKROW: + case SPECIES_DELIBIRD: + case SPECIES_TAILLOW: + case SPECIES_STARLY: + case SPECIES_CHATOT: + case SPECIES_SHAYMIN: + case SPECIES_PIDOVE: + case SPECIES_ARCHEN: + case SPECIES_DUCKLETT: + case SPECIES_RUFFLET: + case SPECIES_VULLABY: + case SPECIES_FLETCHLING: + case SPECIES_HAWLUCHA: + case SPECIES_ROWLET: + case SPECIES_PIKIPEK: +#endif + case SPECIES_EGG: + return TRUE; + default: + return FALSE; + } +} u8 GetBattlerType(u32 battler, u8 typeIndex) { @@ -11237,11 +11343,7 @@ u8 GetBattlerType(u32 battler, u8 typeIndex) if (gBattleResources->flags->flags[battler] & RESOURCE_FLAG_ROOST) { if (types[0] == TYPE_FLYING && types[1] == TYPE_FLYING) -#if B_ROOST_PURE_FLYING >= GEN_5 - return TYPE_NORMAL; -#else - return TYPE_MYSTERY; -#endif + return B_ROOST_PURE_FLYING >= GEN_5 ? TYPE_NORMAL : TYPE_MYSTERY; else return types[typeIndex] == TYPE_FLYING ? TYPE_MYSTERY : types[typeIndex]; } @@ -11249,4 +11351,3 @@ u8 GetBattlerType(u32 battler, u8 typeIndex) return types[typeIndex]; } - diff --git a/src/battle_util2.c b/src/battle_util2.c index 8dda3004c0..2c333978d2 100644 --- a/src/battle_util2.c +++ b/src/battle_util2.c @@ -19,6 +19,10 @@ void AllocateBattleResources(void) gBattleStruct = AllocZeroed(sizeof(*gBattleStruct)); +#if B_FLAG_SKY_BATTLE + gBattleStruct->isSkyBattle = FlagGet(B_FLAG_SKY_BATTLE); +#endif + gBattleResources = AllocZeroed(sizeof(*gBattleResources)); gBattleResources->secretBase = AllocZeroed(sizeof(*gBattleResources->secretBase)); gBattleResources->flags = AllocZeroed(sizeof(*gBattleResources->flags)); diff --git a/src/battle_z_move.c b/src/battle_z_move.c index d760148b51..7069d17386 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -52,7 +52,6 @@ static void ZMoveSelectionDisplayPpNumber(u32 battler); static void ZMoveSelectionDisplayPower(u16 move, u16 zMove); static void ShowZMoveTriggerSprite(u8 battleId); static bool32 AreStatsMaxed(u8 battler, u8 n); -static u8 GetZMoveScore(u8 battlerAtk, u8 battlerDef, u16 baseMove, u16 zMove); static void ZMoveSelectionDisplayMoveType(u16 zMove, u32 battler); // Const Data @@ -71,12 +70,11 @@ static const struct SignatureZMove sSignatureZMoves[] = {SPECIES_KOMMO_O, ITEM_KOMMONIUM_Z, MOVE_CLANGING_SCALES, MOVE_CLANGOROUS_SOULBLAZE}, {SPECIES_LUNALA, ITEM_LUNALIUM_Z, MOVE_MOONGEIST_BEAM, MOVE_MENACING_MOONRAZE_MAELSTROM}, {SPECIES_NECROZMA_DAWN_WINGS, ITEM_LUNALIUM_Z, MOVE_MOONGEIST_BEAM, MOVE_MENACING_MOONRAZE_MAELSTROM}, - {SPECIES_LYCANROC, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, + {SPECIES_LYCANROC_MIDDAY, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, {SPECIES_LYCANROC_MIDNIGHT, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, - {SPECIES_LYCANROC_DUSK, ITEM_LYCANIUM_Z, MOVE_STONE_EDGE, MOVE_SPLINTERED_STORMSHARDS}, {SPECIES_MARSHADOW, ITEM_MARSHADIUM_Z, MOVE_SPECTRAL_THIEF, MOVE_SOUL_STEALING_7_STAR_STRIKE}, - {SPECIES_MIMIKYU, ITEM_MIMIKIUM_Z, MOVE_PLAY_ROUGH, MOVE_LETS_SNUGGLE_FOREVER}, + {SPECIES_MIMIKYU_DISGUISED, ITEM_MIMIKIUM_Z, MOVE_PLAY_ROUGH, MOVE_LETS_SNUGGLE_FOREVER}, {SPECIES_MIMIKYU_BUSTED, ITEM_MIMIKIUM_Z, MOVE_PLAY_ROUGH, MOVE_LETS_SNUGGLE_FOREVER}, {SPECIES_PIKACHU_ORIGINAL_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, {SPECIES_PIKACHU_HOENN_CAP, ITEM_PIKASHUNIUM_Z, MOVE_THUNDERBOLT, MOVE_10000000_VOLT_THUNDERBOLT}, @@ -158,15 +156,10 @@ void QueueZMove(u8 battler, u16 baseMove) bool32 IsViableZMove(u8 battler, u16 move) { - struct Pokemon *mon; - u8 battlerPosition = GetBattlerPosition(battler); - u8 partnerPosition = GetBattlerPosition(BATTLE_PARTNER(battler)); u32 item; u16 holdEffect; - u16 species; int moveSlotIndex; - species = gBattleMons[battler].species; item = gBattleMons[battler].item; for (moveSlotIndex = 0; moveSlotIndex < MAX_MON_MOVES; moveSlotIndex++) @@ -236,6 +229,8 @@ bool32 TryChangeZIndicator(u8 battler, u8 moveIndex) HideZMoveTriggerSprite(); // Was a viable z move, now is not -> slide out else if (!gBattleStruct->zmove.viable && viableZMove) ShowZMoveTriggerSprite(battler); // Was not a viable z move, now is -> slide back in + + return viableZMove; } #define SINGLES_Z_TRIGGER_POS_X_OPTIMAL (29) @@ -267,7 +262,7 @@ void CreateZMoveTriggerSprite(u8 battler, bool8 viable) else { x = gSprites[gHealthboxSpriteIds[battler]].x - SINGLES_Z_TRIGGER_POS_X_SLIDE; - y = gSprites[gHealthboxSpriteIds[battler]].y - SINGLES_Z_TRIGGER_POS_Y_DIFF, 0; + y = gSprites[gHealthboxSpriteIds[battler]].y - SINGLES_Z_TRIGGER_POS_Y_DIFF; } if (gBattleStruct->zmove.triggerSpriteId == 0xFF) @@ -350,7 +345,6 @@ void HideZMoveTriggerSprite(void) static void ShowZMoveTriggerSprite(u8 battler) { - struct Sprite *sprite = &gSprites[gBattleStruct->zmove.triggerSpriteId]; gBattleStruct->zmove.viable = TRUE; CreateZMoveTriggerSprite(battler, TRUE); } @@ -535,13 +529,11 @@ static void ZMoveSelectionDisplayPower(u16 move, u16 zMove) static void ZMoveSelectionDisplayPpNumber(u32 battler) { u8 *txtPtr; - struct ChooseMoveStruct *moveInfo; if (gBattleResources->bufferA[battler][2] == TRUE) // Check if we didn't want to display pp number return; SetPpNumbersPaletteInMoveSelection(battler); - moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[battler][4]); txtPtr = ConvertIntToDecimalStringN(gDisplayedStringBattle, 1, STR_CONV_MODE_RIGHT_ALIGN, 2); *(txtPtr)++ = CHAR_SLASH; ConvertIntToDecimalStringN(txtPtr, 1, STR_CONV_MODE_RIGHT_ALIGN, 2); @@ -551,7 +543,6 @@ static void ZMoveSelectionDisplayPpNumber(u32 battler) static void ZMoveSelectionDisplayMoveType(u16 zMove, u32 battler) { u8 *txtPtr; - struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[battler][4]); u8 zMoveType; GET_MOVE_TYPE(zMove, zMoveType); diff --git a/src/berry.c b/src/berry.c index e6ee039f40..88a5d0f9f3 100644 --- a/src/berry.c +++ b/src/berry.c @@ -1825,8 +1825,8 @@ bool8 PlayerHasBerries(void) // For all berry trees on screen, allow normal growth void SetBerryTreesSeen(void) { - s16 cam_left; - s16 cam_top; + u16 cam_left; + u16 cam_top; s16 left; s16 top; s16 right; @@ -1842,9 +1842,9 @@ void SetBerryTreesSeen(void) { if (gObjectEvents[i].active && gObjectEvents[i].movementType == MOVEMENT_TYPE_BERRY_TREE_GROWTH) { - cam_left = gObjectEvents[i].currentCoords.x; - cam_top = gObjectEvents[i].currentCoords.y; - if (left <= cam_left && cam_left <= right && top <= cam_top && cam_top <= bottom) + s16 x = gObjectEvents[i].currentCoords.x; + s16 y = gObjectEvents[i].currentCoords.y; + if (left <= x && x <= right && top <= y && y <= bottom) AllowBerryTreeGrowth(gObjectEvents[i].trainerRange_berryTreeId); } } diff --git a/src/berry_blender.c b/src/berry_blender.c index 0f22ad0167..6f827867f2 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -174,8 +174,8 @@ struct BerryBlender u16 progressBarValue; u16 maxProgressBarValue; u16 centerScale; - u16 bg_X; - u16 bg_Y; + s16 bg_X; + s16 bg_Y; u8 opponentTaskIds[BLENDER_MAX_PLAYERS - 1]; u8 perfectOpponents; // for debugging, NPCs will always hit Best u16 scores[BLENDER_MAX_PLAYERS][NUM_SCORE_TYPES]; @@ -2377,8 +2377,7 @@ static void Debug_SetMaxRPMStage(s16 value) sDebug_MaxRPMStage = value; } -// Unused -static s16 Debug_GetMaxRPMStage(void) +static s16 UNUSED Debug_GetMaxRPMStage(void) { return sDebug_MaxRPMStage; } @@ -2388,8 +2387,7 @@ static void Debug_SetGameTimeStage(s16 value) sDebug_GameTimeStage = value; } -// Unued -static s16 Debug_GetGameTimeStage(void) +static s16 UNUSED Debug_GetGameTimeStage(void) { return sDebug_GameTimeStage; } @@ -2501,8 +2499,7 @@ static void CalculatePokeblock(struct BlenderBerry *berries, struct Pokeblock *p flavors[i] = sPokeblockFlavors[i]; } -// Unused -static void Debug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 numPlayers, u8 *flavors, u16 maxRPM) +static void UNUSED Debug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 numPlayers, u8 *flavors, u16 maxRPM) { CalculatePokeblock(berries, pokeblock, numPlayers, flavors, maxRPM); } @@ -3471,7 +3468,7 @@ static bool8 PrintBlendingResults(void) struct Pokeblock pokeblock; u8 flavors[FLAVOR_COUNT + 1]; u8 text[40]; - u16 berryIds[4]; // unused + u16 UNUSED berryIds[4]; switch (sBerryBlender->mainState) { @@ -3866,6 +3863,9 @@ static void Blender_AddTextPrinter(u8 windowId, const u8 *string, u8 x, u8 y, s3 { case 0: case 3: +#ifdef UBFIX + default: +#endif txtColor[0] = TEXT_COLOR_WHITE; txtColor[1] = TEXT_COLOR_DARK_GRAY; txtColor[2] = TEXT_COLOR_LIGHT_GRAY; diff --git a/src/berry_crush.c b/src/berry_crush.c index bee0e9085a..baf0e2fb65 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -1062,7 +1062,7 @@ static void BerryCrush_SetVBlankCB(void) SetVBlankCallback(VBlankCB); } -static void BerryCrush_InitVBlankCB(void) +static void UNUSED BerryCrush_InitVBlankCB(void) { SetVBlankCallback(NULL); } diff --git a/src/berry_fix_graphics.c b/src/berry_fix_graphics.c index d766c39662..80510a4ce1 100644 --- a/src/berry_fix_graphics.c +++ b/src/berry_fix_graphics.c @@ -34,8 +34,8 @@ static const struct { } }; -// Unused. See berry_fix_program.c -static void LoadBerryFixGraphics(u32 idx) +// See berry_fix_program.c +static void UNUSED LoadBerryFixGraphics(u32 idx) { REG_DISPCNT = 0; REG_BG0HOFS = 0; diff --git a/src/berry_powder.c b/src/berry_powder.c index 7066f9d95c..4a9fa421d3 100755 --- a/src/berry_powder.c +++ b/src/berry_powder.c @@ -15,8 +15,7 @@ static EWRAM_DATA u8 sBerryPowderVendorWindowId = 0; -// Unused -static const struct BgTemplate sBerryPowderBgTemplates[] = +static const struct BgTemplate UNUSED sBerryPowderBgTemplates[] = { { .bg = 0, @@ -57,10 +56,9 @@ static const struct BgTemplate sBerryPowderBgTemplates[] = }; // ? Part of the BG templates? -static const u32 sUnknown[] = {0xFF, 0x00}; +static const u32 UNUSED sUnknown[] = {0xFF, 0x00}; -// Unused -static const struct WindowTemplate sBerryPowderWindowTemplates[] = +static const struct WindowTemplate UNUSED sBerryPowderWindowTemplates[] = { { .bg = 0, @@ -177,7 +175,7 @@ bool8 GiveBerryPowder(u32 amountToAdd) } } -static bool8 TakeBerryPowder_(u32 cost) +static bool8 UNUSED TakeBerryPowder_(u32 cost) { u32 *powder = &gSaveBlock2Ptr->berryCrush.berryPowderAmount; if (!HasEnoughBerryPowder_(cost)) diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index 49f73dd6b7..7863f3cc11 100644 --- a/src/braille_puzzles.c +++ b/src/braille_puzzles.c @@ -256,7 +256,7 @@ static void DoBrailleRegisteelEffect(void) } // theory: another commented out DoBrailleWait and Task_BrailleWait. -static void DoBrailleWait(void) +static void UNUSED DoBrailleWait(void) { } diff --git a/src/cable_club.c b/src/cable_club.c index 7668c2aa99..d6a2903fd4 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -195,8 +195,7 @@ static bool32 CheckSioErrored(u8 taskId) return FALSE; } -// Unused -static void Task_DelayedBlockRequest(u8 taskId) +static void UNUSED Task_DelayedBlockRequest(u8 taskId) { gTasks[taskId].data[0]++; if (gTasks[taskId].data[0] == 10) @@ -1166,14 +1165,13 @@ void PlayerEnteredTradeSeat(void) CreateTask_EnterCableClubSeat(Task_StartWiredTrade); } -// Unused -static void CreateTask_StartWiredTrade(void) +static void UNUSED CreateTask_StartWiredTrade(void) { CreateTask(Task_StartWiredTrade, 80); } -// Unused, implemented in Ruby/Sapphire -void Script_StartWiredTrade(void) +// Implemented in Ruby/Sapphire +void UNUSED Script_StartWiredTrade(void) { // CreateTask_StartWiredTrade(); // ScriptContext_Stop(); @@ -1189,10 +1187,9 @@ void ColosseumPlayerSpotTriggered(void) CreateTask_EnterCableClubSeat(Task_StartWiredCableClubBattle); } -// Unused -static void CreateTask_EnterCableClubSeatNoFollowup(void) +static UNUSED void CreateTask_EnterCableClubSeatNoFollowup(void) { - u8 taskId = CreateTask(Task_EnterCableClubSeat, 80); + u8 UNUSED taskId = CreateTask(Task_EnterCableClubSeat, 80); ScriptContext_Stop(); } @@ -1262,8 +1259,7 @@ static void Task_WaitExitToScript(u8 taskId) } } -// Unused -static void ExitLinkToScript(u8 taskId) +static void UNUSED ExitLinkToScript(u8 taskId) { SetCloseLinkCallback(); gTasks[taskId].func = Task_WaitExitToScript; diff --git a/src/clock.c b/src/clock.c index 76297b4f4c..825ccc4448 100644 --- a/src/clock.c +++ b/src/clock.c @@ -11,9 +11,11 @@ #include "main.h" #include "overworld.h" #include "wallclock.h" +#include "constants/form_change_types.h" static void UpdatePerDay(struct Time *localTime); static void UpdatePerMinute(struct Time *localTime); +static void FormChangeTimeUpdate(); void InitTimeBasedEvents(void) { @@ -69,6 +71,23 @@ static void UpdatePerMinute(struct Time *localTime) { BerryTreeTimeUpdate(minutes); gSaveBlock2Ptr->lastBerryTreeUpdate = *localTime; + FormChangeTimeUpdate(); + } + } +} + +static void FormChangeTimeUpdate() +{ + s32 i; + for (i = 0; i < PARTY_SIZE; i++) + { + struct Pokemon *mon = &gPlayerParty[i]; + u16 targetSpecies = GetFormChangeTargetSpecies(mon, FORM_CHANGE_TIME_OF_DAY, 0); + + if (targetSpecies != SPECIES_NONE) + { + SetMonData(mon, MON_DATA_SPECIES, &targetSpecies); + CalculateMonStats(mon); } } } diff --git a/src/contest.c b/src/contest.c index 36e76718c7..8f452b0921 100644 --- a/src/contest.c +++ b/src/contest.c @@ -1409,8 +1409,8 @@ static void Task_RaiseCurtainAtStart(u8 taskId) break; case 3: { - u16 bg0Cnt = GetGpuReg(REG_OFFSET_BG0CNT); - u16 bg2Cnt = GetGpuReg(REG_OFFSET_BG2CNT); + u32 bg0Cnt = GetGpuReg(REG_OFFSET_BG0CNT); + u32 bg2Cnt = GetGpuReg(REG_OFFSET_BG2CNT); ((struct BgCnt *)&bg0Cnt)->priority = 0; ((struct BgCnt *)&bg2Cnt)->priority = 0; SetGpuReg(REG_OFFSET_BG0CNT, bg0Cnt); @@ -2630,8 +2630,8 @@ static void Task_UpdateContestantBoxOrder(u8 taskId) static void Task_TryStartNextRoundOfAppeals(u8 taskId) { - vu16 sp0 = GetGpuReg(REG_OFFSET_BG0CNT); - vu16 sp2 = GetGpuReg(REG_OFFSET_BG2CNT); + vu32 sp0 = GetGpuReg(REG_OFFSET_BG0CNT); + vu32 sp2 = GetGpuReg(REG_OFFSET_BG2CNT); ((vBgCnt *)&sp0)->priority = 0; ((vBgCnt *)&sp2)->priority = 0; SetGpuReg(REG_OFFSET_BG0CNT, sp0); @@ -3245,8 +3245,7 @@ static void DrawMoveEffectSymbol(u16 move, u8 contestant) } } -// Unused -static void DrawMoveEffectSymbols(void) +static void UNUSED DrawMoveEffectSymbols(void) { s32 i; @@ -4215,8 +4214,7 @@ static void SpriteCB_EndBlinkContestantBox(struct Sprite *sprite) ResetBlendForContestantBoxBlink(); } -// Unused. -static void ContestDebugTogglePointTotal(void) +static void UNUSED ContestDebugTogglePointTotal(void) { if(eContestDebugMode == CONTEST_DEBUG_MODE_PRINT_POINT_TOTAL) eContestDebugMode = CONTEST_DEBUG_MODE_OFF; @@ -4870,15 +4868,13 @@ static void Task_ShowAndUpdateApplauseMeter(u8 taskId) } } -// Unused. -static void HideApplauseMeterNoAnim(void) +static void UNUSED HideApplauseMeterNoAnim(void) { gSprites[eContest.applauseMeterSpriteId].x2 = 0; gSprites[eContest.applauseMeterSpriteId].invisible = FALSE; } -// Unused. -static void ShowApplauseMeterNoAnim(void) +static void UNUSED ShowApplauseMeterNoAnim(void) { gSprites[eContest.applauseMeterSpriteId].invisible = TRUE; } @@ -5059,7 +5055,7 @@ bool8 IsContestantAllowedToCombo(u8 contestant) static void SetBgForCurtainDrop(void) { s32 i; - u16 bg0Cnt, bg1Cnt, bg2Cnt; + u32 bg0Cnt, bg1Cnt, bg2Cnt; bg1Cnt = GetGpuReg(REG_OFFSET_BG1CNT); ((vBgCnt *)&bg1Cnt)->priority = 0; @@ -5097,7 +5093,7 @@ static void SetBgForCurtainDrop(void) static void UpdateContestantBoxOrder(void) { s32 i; - u16 bg1Cnt; + u32 bg1Cnt; RequestDma3Fill(0,(void *)(BG_CHAR_ADDR(2)), 0x2000, 1); CpuFill32(0, gContestResources->contestBgTilemaps[1], 0x1000); @@ -5300,7 +5296,6 @@ static u16 SanitizeSpecies(u16 species) static void SetMoveSpecificAnimData(u8 contestant) { - s32 i; u16 move = SanitizeMove(eContestantStatus[contestant].currMove); u16 species = SanitizeSpecies(gContestMons[contestant].species); u8 targetContestant; diff --git a/src/contest_util.c b/src/contest_util.c index 0786902b8c..3bd1c28293 100644 --- a/src/contest_util.c +++ b/src/contest_util.c @@ -881,7 +881,6 @@ static void Task_ShowWinnerMonBanner(u8 taskId) u16 species; u32 otId; u32 personality; - const struct CompressedSpritePalette *pokePal; switch (gTasks[taskId].tState) { @@ -898,10 +897,9 @@ static void Task_ShowWinnerMonBanner(u8 taskId) species, personality); - pokePal = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); - LoadCompressedSpritePalette(pokePal); + LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), species); SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_OPPONENT_LEFT); - gMultiuseSpriteTemplate.paletteTag = pokePal->tag; + gMultiuseSpriteTemplate.paletteTag = species; spriteId = CreateSprite(&gMultiuseSpriteTemplate, DISPLAY_WIDTH + 32, DISPLAY_HEIGHT / 2, 10); gSprites[spriteId].data[1] = species; gSprites[spriteId].oam.priority = 0; @@ -1127,7 +1125,7 @@ static void LoadAllContestMonIconPalettes(void) for (i = 0; i < CONTESTANT_COUNT; i++) { species = gContestMons[i].species; - LoadPalette(gMonIconPalettes[gMonIconPaletteIndices[GetIconSpecies(species, 0)]], BG_PLTT_ID(10 + i), PLTT_SIZE_4BPP); + LoadPalette(gMonIconPalettes[gSpeciesInfo[GetIconSpecies(species, 0)].iconPalIndex], BG_PLTT_ID(10 + i), PLTT_SIZE_4BPP); } } @@ -2554,7 +2552,6 @@ bool8 IsContestDebugActive(void) void ShowContestEntryMonPic(void) { - const struct CompressedSpritePalette *palette; u32 personality, otId; u16 species; u8 spriteId; @@ -2574,10 +2571,9 @@ void ShowContestEntryMonPic(void) gTasks[taskId].data[1] = species; HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], species, personality); - palette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); - LoadCompressedSpritePalette(palette); + LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), species); SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_OPPONENT_LEFT); - gMultiuseSpriteTemplate.paletteTag = palette->tag; + gMultiuseSpriteTemplate.paletteTag = species; spriteId = CreateSprite(&gMultiuseSpriteTemplate, (left + 1) * 8 + 32, (top * 8) + 40, 0); if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK) diff --git a/src/credits.c b/src/credits.c index ecd6af6fca..2b4d919bdc 100644 --- a/src/credits.c +++ b/src/credits.c @@ -81,7 +81,7 @@ struct CreditsEntry const u8 *text; }; -static EWRAM_DATA s16 sUnkVar = 0; // Never read, only set to 0 +static EWRAM_DATA s16 UNUSED sUnkVar = 0; // Never read, only set to 0 static EWRAM_DATA u16 sSavedTaskId = 0; EWRAM_DATA bool8 gHasHallOfFameRecords = 0; static EWRAM_DATA bool8 sUsedSpeedUp = 0; // Never read diff --git a/src/data.c b/src/data.c index 859209a934..1fda8b7876 100644 --- a/src/data.c +++ b/src/data.c @@ -17,103 +17,103 @@ static const u32 sMinigameDigitsThin_Gfx[] = INCBIN_U32("graphics/link/minigame_ const struct SpriteFrameImage gBattlerPicTable_PlayerLeft[] = { - BATTLER_OFFSET(0), MON_PIC_SIZE, - BATTLER_OFFSET(1), MON_PIC_SIZE, - BATTLER_OFFSET(2), MON_PIC_SIZE, - BATTLER_OFFSET(3), MON_PIC_SIZE, + {BATTLER_OFFSET(0), MON_PIC_SIZE}, + {BATTLER_OFFSET(1), MON_PIC_SIZE}, + {BATTLER_OFFSET(2), MON_PIC_SIZE}, + {BATTLER_OFFSET(3), MON_PIC_SIZE}, }; const struct SpriteFrameImage gBattlerPicTable_OpponentLeft[] = { - BATTLER_OFFSET(4), MON_PIC_SIZE, - BATTLER_OFFSET(5), MON_PIC_SIZE, - BATTLER_OFFSET(6), MON_PIC_SIZE, - BATTLER_OFFSET(7), MON_PIC_SIZE, + {BATTLER_OFFSET(4), MON_PIC_SIZE}, + {BATTLER_OFFSET(5), MON_PIC_SIZE}, + {BATTLER_OFFSET(6), MON_PIC_SIZE}, + {BATTLER_OFFSET(7), MON_PIC_SIZE}, }; const struct SpriteFrameImage gBattlerPicTable_PlayerRight[] = { - BATTLER_OFFSET(8), MON_PIC_SIZE, - BATTLER_OFFSET(9), MON_PIC_SIZE, - BATTLER_OFFSET(10), MON_PIC_SIZE, - BATTLER_OFFSET(11), MON_PIC_SIZE, + {BATTLER_OFFSET(8), MON_PIC_SIZE}, + {BATTLER_OFFSET(9), MON_PIC_SIZE}, + {BATTLER_OFFSET(10), MON_PIC_SIZE}, + {BATTLER_OFFSET(11), MON_PIC_SIZE}, }; const struct SpriteFrameImage gBattlerPicTable_OpponentRight[] = { - BATTLER_OFFSET(12), MON_PIC_SIZE, - BATTLER_OFFSET(13), MON_PIC_SIZE, - BATTLER_OFFSET(14), MON_PIC_SIZE, - BATTLER_OFFSET(15), MON_PIC_SIZE, + {BATTLER_OFFSET(12), MON_PIC_SIZE}, + {BATTLER_OFFSET(13), MON_PIC_SIZE}, + {BATTLER_OFFSET(14), MON_PIC_SIZE}, + {BATTLER_OFFSET(15), MON_PIC_SIZE}, }; const struct SpriteFrameImage gTrainerBackPicTable_Brendan[] = { - gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE, - gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE, - gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE, - gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE, + {gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, }; const struct SpriteFrameImage gTrainerBackPicTable_May[] = { - gTrainerBackPic_May + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE, - gTrainerBackPic_May + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE, - gTrainerBackPic_May + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE, - gTrainerBackPic_May + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE, + {gTrainerBackPic_May + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, + {gTrainerBackPic_May + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, + {gTrainerBackPic_May + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, + {gTrainerBackPic_May + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, }; const struct SpriteFrameImage gTrainerBackPicTable_Red[] = { - gTrainerBackPic_Red + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE, - gTrainerBackPic_Red + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE, - gTrainerBackPic_Red + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE, - gTrainerBackPic_Red + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE, - gTrainerBackPic_Red + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE, + {gTrainerBackPic_Red + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Red + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Red + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Red + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Red + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE}, }; const struct SpriteFrameImage gTrainerBackPicTable_Leaf[] = { - gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE, - gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE, - gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE, - gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE, - gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE, + {gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE}, }; const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireBrendan[] = { - gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE, - gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE, - gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE, - gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE, + {gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, + {gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, + {gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, + {gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, }; const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireMay[] = { - gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE, - gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE, - gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE, - gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE, + {gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, + {gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, + {gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, + {gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, }; const struct SpriteFrameImage gTrainerBackPicTable_Wally[] = { - gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE, - gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE, - gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE, - gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE, + {gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, }; const struct SpriteFrameImage gTrainerBackPicTable_Steven[] = { - gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE, - gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE, - gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE, - gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE, + {gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, }; -static const union AnimCmd sAnim_GeneralFrame0[] = +const union AnimCmd sAnim_GeneralFrame0[] = { ANIMCMD_FRAME(0, 0), ANIMCMD_END, @@ -285,28 +285,12 @@ const union AnimCmd *const gAnims_MonPic[MAX_MON_PIC_FRAMES] = sAnim_MonPic_1, }; -#define SPECIES_SPRITE(species, sprite) [SPECIES_##species] = {sprite, MON_PIC_SIZE, SPECIES_##species} -#define SPECIES_PAL(species, pal) [SPECIES_##species] = {pal, SPECIES_##species} -#define SPECIES_SHINY_PAL(species, pal) [SPECIES_##species] = {pal, SPECIES_##species + SPECIES_SHINY_TAG} - -#include "data/pokemon_graphics/front_pic_coordinates.h" -#include "data/pokemon_graphics/back_pic_coordinates.h" - -#include "data/pokemon_graphics/back_pic_table.h" -#include "data/pokemon_graphics/palette_table.h" -#include "data/pokemon_graphics/shiny_palette_table.h" - #include "data/trainer_graphics/front_pic_anims.h" #include "data/trainer_graphics/front_pic_tables.h" #include "data/trainer_graphics/back_pic_anims.h" #include "data/trainer_graphics/back_pic_tables.h" -#include "data/pokemon_graphics/enemy_mon_elevation.h" -#include "data/pokemon_graphics/front_pic_anims.h" -#include "data/pokemon_graphics/front_pic_table.h" - #include "data/trainer_parties.h" #include "data/text/trainer_class_names.h" #include "data/trainers.h" -#include "data/text/species_names.h" #include "data/text/move_names.h" diff --git a/src/data/bard_music/pokemon.h b/src/data/bard_music/pokemon.h index 7d378da6f1..a2ca35aa7d 100644 --- a/src/data/bard_music/pokemon.h +++ b/src/data/bard_music/pokemon.h @@ -2884,7 +2884,7 @@ const struct BardSound gBardSounds_Pokemon[NUM_SPECIES][6] = { NULL_BARD_SOUND, NULL_BARD_SOUND, }, - [SPECIES_CASTFORM] = { + [SPECIES_CASTFORM_NORMAL] = { { .songLengthId = 0 }, { .songLengthId = 26 }, { .songLengthId = 51 }, @@ -3084,7 +3084,7 @@ const struct BardSound gBardSounds_Pokemon[NUM_SPECIES][6] = { NULL_BARD_SOUND, NULL_BARD_SOUND, }, - [SPECIES_DEOXYS] = { + [SPECIES_DEOXYS_NORMAL] = { { .songLengthId = 12 }, { .songLengthId = 27 }, { .songLengthId = 17 }, diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h index 885038725c..239e655918 100644 --- a/src/data/battle_anim.h +++ b/src/data/battle_anim.h @@ -1448,6 +1448,13 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_AuraSphere, 0x200, ANIM_TAG_POLTERGEIST}, {gBattleAnimSpriteGfx_Teapot, 0x1800, ANIM_TAG_TEAPOT}, {gBattleAnimSpriteGfx_WoodHammerHammer, 0x800, ANIM_TAG_WOOD_HAMMER_HAMMER}, + {gBattleAnimSpriteGfx_Snowflakes, 0x0700, ANIM_TAG_SNOWFLAKES}, + {gBattleAnimSpriteGfx_SyrupBlob, 0x400, ANIM_TAG_SYRUP_BLOB_RED}, + {gBattleAnimSpriteGfx_SyrupShell, 0x2000, ANIM_TAG_SYRUP_SHELL_RED}, + {gBattleAnimSpriteGfx_SyrupBlob, 0x400, ANIM_TAG_SYRUP_BLOB_YELLOW}, + {gBattleAnimSpriteGfx_SyrupShell, 0x2000, ANIM_TAG_SYRUP_SHELL_YELLOW}, + {gBattleAnimSpriteGfx_SyrupSplat, 0x400, ANIM_TAG_SYRUP_SPLAT_RED}, + {gBattleAnimSpriteGfx_SyrupSplat, 0x400, ANIM_TAG_SYRUP_SPLAT_YELLOW}, }; const struct CompressedSpritePalette gBattleAnimPaletteTable[] = @@ -1896,6 +1903,13 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_Poltergeist, ANIM_TAG_POLTERGEIST}, {gBattleAnimSpritePal_Teapot, ANIM_TAG_TEAPOT}, {gBattleAnimSpritePal_WoodHammerHammer, ANIM_TAG_WOOD_HAMMER_HAMMER}, + {gBattleAnimSpritePal_RainDrops, ANIM_TAG_SNOWFLAKES}, + {gBattleAnimSpritePal_SyrupRed, ANIM_TAG_SYRUP_BLOB_RED}, + {gBattleAnimSpritePal_SyrupRed, ANIM_TAG_SYRUP_SHELL_RED}, + {gBattleAnimSpritePal_SyrupYellow, ANIM_TAG_SYRUP_BLOB_YELLOW}, + {gBattleAnimSpritePal_SyrupYellow, ANIM_TAG_SYRUP_SHELL_YELLOW}, + {gBattleAnimSpritePal_SyrupRed, ANIM_TAG_SYRUP_SPLAT_RED}, + {gBattleAnimSpritePal_SyrupYellow, ANIM_TAG_SYRUP_SPLAT_YELLOW}, }; const struct BattleAnimBackground gBattleAnimBackgroundTable[] = @@ -1982,4 +1996,5 @@ const struct BattleAnimBackground gBattleAnimBackgroundTable[] = [BG_STEEL_BEAM_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_SteelBeam, gBattleAnimBgTilemap_HighspeedOpponent}, [BG_STEEL_BEAM_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_SteelBeam, gBattleAnimBgTilemap_HighspeedPlayer}, [BG_CHLOROBLAST] = {gBattleAnimBgImage_HydroCannon, gBattleAnimBgPalette_Chloroblast, gBattleAnimBgTilemap_HydroCannon}, + [BG_RAINBOW] = {gBattleAnimBgImage_Rainbow, gBattleAnimBGPalette_Rainbow, gBattleAnimBgTilemap_Rainbow}, }; diff --git a/src/data/battle_frontier/battle_frontier_mons.h b/src/data/battle_frontier/battle_frontier_mons.h index df0a7d9b27..1147ab9080 100644 --- a/src/data/battle_frontier/battle_frontier_mons.h +++ b/src/data/battle_frontier/battle_frontier_mons.h @@ -1429,7 +1429,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = .nature = NATURE_ADAMANT }, [FRONTIER_MON_CASTFORM_1] = { - .species = SPECIES_CASTFORM, + .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, @@ -2164,7 +2164,7 @@ const struct FacilityMon gBattleFrontierMons[NUM_FRONTIER_MONS] = .nature = NATURE_JOLLY }, [FRONTIER_MON_CASTFORM_2] = { - .species = SPECIES_CASTFORM, + .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, diff --git a/src/data/battle_frontier/battle_pyramid_wild_requirements.h b/src/data/battle_frontier/battle_pyramid_wild_requirements.h new file mode 100644 index 0000000000..1b9e359f1f --- /dev/null +++ b/src/data/battle_frontier/battle_pyramid_wild_requirements.h @@ -0,0 +1,237 @@ +#if BATTLE_PYRAMID_RANDOM_ENCOUNTERS == TRUE + +#include "constants/abilities.h" +#include "constants/battle_move_effects.h" + +struct BattlePyramidRequirement { + const u16 *moves; /* use moves instead of effects so we don't need to find moves with said effect in our loop */ + u16 abilities[10]; + u8 nAbilities; + u8 type; + u8 nMoves; + const u16 *evoItems; + u8 nEvoItems; +}; + +// EFFECT_PARALYZE, EFFECT_PARALYZE_HIT (30% or more) +static const u16 sParalyzingMoves[] = { + //MOVE_THUNDER_PUNCH, + MOVE_BODY_SLAM, + MOVE_STUN_SPORE, + //MOVE_THUNDER_SHOCK, + //MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, + MOVE_LICK, + MOVE_GLARE, + MOVE_ZAP_CANNON, + MOVE_SPARK, + MOVE_DRAGON_BREATH, + MOVE_FORCE_PALM, + MOVE_DISCHARGE, + //MOVE_BOLT_STRIKE, + MOVE_NUZZLE, + MOVE_SPLISHY_SPLASH, + MOVE_BUZZY_BUZZ, + MOVE_COMBAT_TORQUE, +}; + +// EFFECT_POISON_HIT (30% or more), EFFECT_POISON, EFFECT_POISON_FANG, EFFECT_TOXIC, EFFECT_TOXIC_THREAD +static const u16 sPoisoningMoves[] = { + MOVE_POISON_STING, + //MOVE_TWINEEDLE, + MOVE_SMOG, + MOVE_SLUDGE, + MOVE_SLUDGE_BOMB, + //MOVE_POISON_TAIL, + MOVE_POISON_JAB, + //MOVE_CROSS_POISON, + MOVE_GUNK_SHOT, + //MOVE_SLUDGE_WAVE, + MOVE_NOXIOUS_TORQUE, + //MOVE_ACID, + MOVE_POISON_POWDER, + MOVE_TOXIC, + MOVE_POISON_GAS, + MOVE_POISON_FANG, + MOVE_BANEFUL_BUNKER, + MOVE_TOXIC_THREAD, +}; + +// EFFECT_BURN_HIT, EFFECT_WILL_O_WISP +static const u16 sBurningMoves[] = { + MOVE_WILL_O_WISP, + //MOVE_EMBER, + //MOVE_FLAMETHROWER, + //MOVE_FIRE_BLAST, + //MOVE_HEAT_WAVE, + //MOVE_BLAZE_KICK, + MOVE_LAVA_PLUME, + MOVE_SCALD, + MOVE_INFERNO, + MOVE_SEARING_SHOT, + MOVE_BLUE_FLARE, + MOVE_STEAM_ERUPTION, + MOVE_SIZZLY_SLIDE, + //MOVE_PYRO_BALL, + MOVE_BURNING_JEALOUSY, + MOVE_SCORCHING_SANDS, + MOVE_SANDSEAR_STORM, + MOVE_BLAZING_TORQUE, +}; + +// EFFECT_FREEZE, EFFECT_FREEZE_HIT +static const u16 sFrostbiteMoves[] = { + MOVE_ICE_PUNCH, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_POWDER_SNOW, + MOVE_FREEZING_GLARE, +}; + +// EFFECT_GRUDGE, EFFECT_SPITE, EFFECT_EERIE_SPELL +static const u16 sPPReducingMoves[] = { + MOVE_GRUDGE, + MOVE_SPITE, + MOVE_EERIE_SPELL, +}; + +// EFFECT_EXPLOSION +static const u16 sExplosionMoves[] = { + MOVE_SELF_DESTRUCT, + MOVE_EXPLOSION, + MOVE_MISTY_EXPLOSION, +}; + +// EFFECT_RAIN_DANCE, EFFECT_SANDSTORM, EFFECT_HAIL, EFFECT_SUNNY_DAY, +static const u16 sWeatherChangingMoves[] = { + MOVE_RAIN_DANCE, + MOVE_SANDSTORM, + MOVE_HAIL, + MOVE_SUNNY_DAY, +}; + +// EFFECT_RECHARGE, EFFECT_RECOIL_33 +static const u16 sPowerfulNormalMoves[] = { + MOVE_HYPER_BEAM, + MOVE_GIGA_IMPACT, + MOVE_THRASH, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, +}; + +static const u16 sEvoItems[] = {ITEM_FIRE_STONE, ITEM_WATER_STONE, ITEM_THUNDER_STONE}; + +static const struct BattlePyramidRequirement sBattlePyramidRequirementsByRound[] = { + [0] = /* pokemon with moves that paraylze */ + { + .type = TYPE_MYSTERY, // no type limitation + .moves = sParalyzingMoves, + .nMoves = NELEMS(sParalyzingMoves), + .abilities = { ABILITY_STATIC }, + .nAbilities = 1, + }, + [1] = /* pokemon with moves that poison */ + { + .type = TYPE_MYSTERY, + .moves = sPoisoningMoves, + .nMoves = NELEMS(sPoisoningMoves), + .abilities = { ABILITY_POISON_POINT }, + }, + [2] = /* Pokemon with moves that burn */ + { + .type = TYPE_MYSTERY, + .moves = sBurningMoves, + .nMoves = NELEMS(sBurningMoves), + .abilities = { ABILITY_FLAME_BODY }, + .nAbilities = 1, + }, + [3] = /* pokemon with moves that waste PP */ + { + .type = TYPE_MYSTERY, + .moves = sPPReducingMoves, + .nMoves = NELEMS(sPPReducingMoves), + .abilities = { ABILITY_PRESSURE }, + .nAbilities = 1, + }, + [4] = /* pokemon with Levitate */ + { + .type = TYPE_MYSTERY, + .abilities = { ABILITY_LEVITATE }, + .nAbilities = 1, + }, + [5] = /* pokemon with trapping abilities */ + { + .type = TYPE_MYSTERY, + .abilities = { ABILITY_SHADOW_TAG, ABILITY_ARENA_TRAP }, // TODO magnet pull? + .nAbilities = 2, + }, + [6] = /* ice types */ + { + .type = TYPE_ICE, + }, + + [7] = /* pokemon with explosion effects */ + { + .type = TYPE_MYSTERY, + .moves = sExplosionMoves, + .nMoves = NELEMS(sExplosionMoves), + }, + [8] = /* psychic types */ + { + .type = TYPE_PSYCHIC, + }, + [9] = /* rock types */ + { + .type = TYPE_ROCK, + }, + [10] = /* fighting types */ + { + .type = TYPE_FIGHTING, + }, + [11] = /* pokemon with weather-altering effects */ + { + .type = TYPE_MYSTERY, + .moves = sWeatherChangingMoves, + .nMoves = NELEMS(sWeatherChangingMoves), + .abilities = { ABILITY_SAND_SPIT, ABILITY_DRIZZLE, ABILITY_SNOW_WARNING, ABILITY_DROUGHT, ABILITY_SAND_STREAM }, + .nAbilities = 5, + }, + [12] = /* bug types */ + { + .type = TYPE_BUG, + }, + [13] = /* dark types */ + { + .type = TYPE_DARK, + }, + [14] = /* water types */ + { + .type = TYPE_WATER, + }, + [15] = /* ghost types */ + { + .type = TYPE_GHOST, + }, + [16] = /* steel types */ + { + .type = TYPE_STEEL, + }, + [17] = /* flying/dragon types */ + { + .type = TYPE_DRAGON, + }, + [18] = /* evolve via water/thunder/fire stone */ + { + .type = TYPE_MYSTERY, + .evoItems = sEvoItems, + .nEvoItems = 3, + }, + [19] = /* normal with powerful moves */ + { + .type = TYPE_NORMAL, + .moves = sPowerfulNormalMoves, + .nMoves = NELEMS(sPowerfulNormalMoves), + }, +}; + +#endif diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 8a92353004..6710af8e39 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -1,4 +1,4 @@ -const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = +const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = { [MOVE_NONE] = { @@ -11,11 +11,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_SELECTED, .priority = 0, .split = SPLIT_PHYSICAL, - .mimicBanned = TRUE, .metronomeBanned = TRUE, - .copycatBanned = TRUE, - .sleepTalkBanned = TRUE, - .instructBanned = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_POUND] = @@ -224,8 +221,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .highCritRatio = TRUE, + .twoTurnMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .windMove = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_SWORDS_DANCE] = @@ -314,8 +313,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .windMove = TRUE, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_FLY] = @@ -334,10 +335,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .gravityBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BIND] = @@ -373,6 +376,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_VINE_WHIP] = @@ -413,6 +417,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .makesContact = TRUE, .sheerForceBoost = TRUE, .minimizeDoubleDamage = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_DOUBLE_KICK] = @@ -601,6 +606,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .makesContact = TRUE, .sheerForceBoost = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_6, + .skyBattleBanned = TRUE, }, [MOVE_WRAP] = @@ -655,6 +661,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .instructBanned = TRUE, }, [MOVE_DOUBLE_EDGE] = @@ -784,6 +791,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_DEF_UP_1, .magicCoatAffected = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_ROAR] = @@ -803,9 +811,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, .soundMove = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SING] = @@ -820,6 +830,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -836,6 +847,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -872,6 +884,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -940,6 +953,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -996,6 +1011,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .damagesUnderwater = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_ICE_BEAM] = @@ -1105,7 +1121,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, - .instructBanned = TRUE, }, [MOVE_PECK] = @@ -1185,11 +1200,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, - .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 .meFirstBanned = TRUE, .metronomeBanned = TRUE, // B_UPDATED_MOVE_FLAGS >= GEN_2 .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SEISMIC_TOSS] = @@ -1205,6 +1220,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_STRENGTH] = @@ -1239,6 +1255,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_MEGA_DRAIN] = @@ -1258,6 +1275,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_LEECH_SEED] = @@ -1295,6 +1313,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1326,6 +1346,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, }, @@ -1400,6 +1421,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .danceMove = TRUE, + .instructBanned = TRUE, }, [MOVE_STRING_SHOT] = @@ -1557,6 +1579,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3, .damagesUnderground = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_FISSURE] = @@ -1572,6 +1595,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .damagesUnderground = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_DIG] = @@ -1590,9 +1614,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_TOXIC] = @@ -1671,6 +1698,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1686,6 +1715,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1731,6 +1762,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -6, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_NIGHT_SHADE] = @@ -1759,11 +1792,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresSubstitute = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, // B_UPDATED_MOVE_FLAGS >= GEN_2 .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SCREECH] = @@ -1778,6 +1814,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -1794,6 +1831,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1815,6 +1854,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .snatchAffected = TRUE, }, @@ -1830,6 +1872,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1849,6 +1893,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1894,6 +1940,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1909,6 +1957,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1928,6 +1978,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1943,6 +1995,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1958,6 +2012,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_REFLECT] = @@ -1972,6 +2029,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -1987,8 +2046,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, - .sleepTalkBanned = TRUE, }, [MOVE_BIDE] = @@ -2011,6 +2071,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_METRONOME] = @@ -2025,10 +2086,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_3, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_MIRROR_MOVE] = @@ -2043,10 +2109,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_2, + .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .copycatBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_3, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SELF_DESTRUCT] = @@ -2061,6 +2130,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .parentalBondBanned = TRUE, }, [MOVE_EGG_BOMB] = @@ -2238,6 +2308,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -2285,6 +2356,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -2319,6 +2392,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = TRUE, }, @@ -2379,6 +2455,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_POISON_GAS] = @@ -2438,6 +2515,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_LOVELY_KISS] = @@ -2468,6 +2546,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_FLINCH, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .sheerForceBoost = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -2486,10 +2565,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .copycatBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BUBBLE] = @@ -2593,6 +2675,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_3, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .gravityBanned = TRUE, }, @@ -2613,6 +2697,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CRABHAMMER] = @@ -2651,6 +2737,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .parentalBondBanned = TRUE, }, [MOVE_FURY_SWIPES] = @@ -2700,6 +2787,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, }, [MOVE_ROCK_SLIDE] = @@ -2747,6 +2837,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CONVERSION] = @@ -2762,6 +2854,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TRI_ATTACK] = @@ -2825,6 +2919,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_STRUGGLE] = @@ -2849,8 +2946,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, + .sleepTalkBanned = TRUE, .copycatBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SKETCH] = @@ -2866,11 +2966,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TRIPLE_KICK] = @@ -2911,6 +3015,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .meFirstBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SPIDER_WEB] = @@ -2999,6 +3104,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .sheerForceBoost = TRUE, .soundMove = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_5, @@ -3021,6 +3127,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_CURSE, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_FLAIL] = @@ -3051,6 +3159,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_AEROBLAST] = @@ -3120,6 +3230,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresSubstitute = TRUE, }, [MOVE_POWDER_SNOW] = @@ -3160,6 +3271,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .protectionMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_MACH_PUNCH] = @@ -3246,6 +3358,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SLUDGE_BOMB] = @@ -3307,7 +3421,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .forcePressure = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_ZAP_CANNON] = @@ -3347,6 +3465,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresSubstitute = TRUE, }, [MOVE_DESTINY_BOND] = @@ -3361,8 +3480,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_FOLLOW_ME, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PERISH_SONG] = @@ -3378,6 +3501,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .ignoresProtect = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, + .mirrorMoveBanned = TRUE, .soundMove = TRUE, }, @@ -3413,9 +3538,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .protectionMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BONE_RUSH] = @@ -3490,6 +3618,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .windMove = TRUE, }, @@ -3514,6 +3644,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_5, // && B_UPDATED_MOVE_FLAGS > GEN_2 + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_ENDURE] = @@ -3532,9 +3663,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .protectionMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_CHARM] = @@ -3570,6 +3704,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .instructBanned = TRUE, + .parentalBondBanned = TRUE, }, [MOVE_FALSE_SWIPE] = @@ -3622,7 +3757,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SPARK] = @@ -3708,6 +3846,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .magicCoatAffected = TRUE, + .ignoresSubstitute = TRUE, }, [MOVE_SLEEP_TALK] = @@ -3722,10 +3861,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .mimicBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_HEAL_BELL] = @@ -3736,11 +3880,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .accuracy = 0, .pp = 5, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, + .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .soundMove = B_UPDATED_MOVE_FLAGS != GEN_5, }, @@ -3802,6 +3949,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_PAIN_SPLIT] = @@ -3847,6 +3996,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .damagesUnderground = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_DYNAMIC_PUNCH] = @@ -3909,6 +4059,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ENCORE] = @@ -3924,6 +4076,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .encoreBanned = TRUE, + .ignoresSubstitute = TRUE, }, [MOVE_PURSUIT] = @@ -4039,7 +4193,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SYNTHESIS] = @@ -4054,7 +4211,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_MOONLIGHT] = @@ -4073,16 +4233,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HIDDEN_POWER] = { - #if B_HIDDEN_POWER_DMG >= GEN_6 - .power = 60, - #else - .power = 1, - #endif + .power = B_HIDDEN_POWER_DMG >= GEN_6 ? 60 : 1, .effect = EFFECT_HIDDEN_POWER, .type = TYPE_NORMAL, .accuracy = 100, @@ -4139,6 +4298,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SUNNY_DAY] = @@ -4153,6 +4314,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CRUNCH] = @@ -4191,7 +4354,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .meFirstBanned = TRUE, .metronomeBanned = TRUE, - .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PSYCH_UP] = @@ -4207,6 +4370,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS < GEN_5, }, @@ -4386,6 +4551,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, @@ -4408,6 +4574,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SPIT_UP] = @@ -4441,7 +4609,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAT_WAVE] = @@ -4476,6 +4647,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TORMENT] = @@ -4572,9 +4745,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .mirrorMoveBanned = TRUE, .punchingMove = TRUE, .meFirstBanned = TRUE, + .sleepTalkBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SMELLING_SALTS] = @@ -4584,7 +4759,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = #else .power = 60, #endif - .effect = EFFECT_SMELLINGSALT, + .effect = EFFECT_SMELLING_SALTS, .type = TYPE_NORMAL, .accuracy = 100, .pp = 10, @@ -4613,8 +4788,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_NATURE_POWER] = @@ -4633,6 +4811,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, }, [MOVE_CHARGE] = @@ -4648,6 +4829,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TAUNT] = @@ -4662,6 +4845,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -4681,8 +4865,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 5, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TRICK] = @@ -4699,6 +4887,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_SPD_UP_2, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_ROLE_PLAY] = @@ -4714,6 +4903,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_WISH] = @@ -4728,7 +4919,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .healBlockBanned = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ASSIST] = @@ -4743,10 +4937,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_4, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, }, [MOVE_INGRAIN] = @@ -4762,6 +4961,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_SUPERPOWER] = @@ -4791,6 +4993,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 4, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_RECYCLE] = @@ -4806,6 +5010,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_REVENGE] = @@ -4885,6 +5091,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .parentalBondBanned = TRUE, }, [MOVE_ERUPTION] = @@ -4913,6 +5120,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = TRUE, }, [MOVE_IMPRISON] = @@ -4928,6 +5136,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, + .forcePressure = TRUE, }, [MOVE_REFRESH] = @@ -4943,6 +5155,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GRUDGE] = @@ -4957,6 +5171,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_FOLLOW_ME, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SNATCH] = @@ -4971,9 +5188,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 4, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .ignoresSubstitute = TRUE, + .forcePressure = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, - .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SECRET_POWER] = @@ -5007,9 +5226,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_ARM_THRUST] = @@ -5040,6 +5262,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TAIL_GLOW] = @@ -5059,6 +5283,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_LUSTER_PURGE] = @@ -5153,6 +5379,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_ICE_BALL] = @@ -5170,6 +5399,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .makesContact = TRUE, .ballisticMove = TRUE, .instructBanned = TRUE, + .parentalBondBanned = TRUE, }, [MOVE_NEEDLE_ARM] = @@ -5205,7 +5435,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HYPER_VOICE] = @@ -5221,6 +5454,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_POISON_FANG] = @@ -5272,7 +5506,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .instructBanned = TRUE, }, [MOVE_HYDRO_CANNON] = @@ -5287,7 +5520,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .instructBanned = TRUE, }, [MOVE_METEOR_MASH] = @@ -5352,11 +5584,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .accuracy = 0, .pp = 5, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, + .target = MOVE_TARGET_USER | MOVE_TARGET_ALLY, .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_FAKE_TEARS] = @@ -5432,6 +5666,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -5469,6 +5704,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .windMove = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_METAL_SOUND] = @@ -5483,6 +5719,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -5499,6 +5736,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -5531,6 +5769,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_WATER_SPOUT] = @@ -5665,6 +5905,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_BULLET_SEED] = @@ -5733,6 +5974,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_BLOCK] = @@ -5768,6 +6011,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .soundMove = B_UPDATED_MOVE_FLAGS >= GEN_8, }, @@ -5798,6 +6043,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .skyBattleBanned = TRUE, }, [MOVE_BULK_UP] = @@ -5813,6 +6059,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_BOUNCE] = @@ -5828,11 +6076,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_PARALYSIS, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .sheerForceBoost = TRUE, .gravityBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_MUD_SHOT] = @@ -5896,6 +6146,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .meFirstBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_VOLT_TACKLE] = @@ -5945,6 +6196,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_CALM_MIND] = @@ -5960,6 +6214,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_LEAF_BLADE] = @@ -5997,6 +6253,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_RESET_STATS, .danceMove = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ROCK_BLAST] = @@ -6099,7 +6357,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GRAVITY] = @@ -6114,6 +6375,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_MIRACLE_EYE] = @@ -6128,6 +6392,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -6195,7 +6460,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .healBlockBanned = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_BRINE] = @@ -6246,6 +6514,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_6, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PLUCK] = @@ -6281,6 +6550,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_BOOST_CRITS, .snatchAffected = TRUE, .windMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ACUPRESSURE] = @@ -6296,6 +6567,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .snatchAffected = B_UPDATED_MOVE_FLAGS < GEN_5, }, @@ -6405,6 +6677,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .parentalBondBanned = TRUE, }, [MOVE_PSYCHO_SHIFT] = @@ -6482,6 +6755,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GASTRO_ACID] = @@ -6512,6 +6787,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ME_FIRST] = @@ -6526,10 +6803,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, }, [MOVE_COPYCAT] = @@ -6544,10 +6827,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, + .mimicBanned = TRUE, }, [MOVE_POWER_SWAP] = @@ -6562,6 +6850,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = TRUE, }, [MOVE_GUARD_SWAP] = @@ -6576,6 +6865,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = TRUE, }, [MOVE_PUNISHMENT] = @@ -6658,7 +6948,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .forcePressure = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_HEART_SWAP] = @@ -6673,6 +6967,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_BOOST_CRITS, + .ignoresSubstitute = TRUE, }, [MOVE_AQUA_RING] = @@ -6688,6 +6983,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_MAGNET_RISE] = @@ -6703,6 +7000,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_EVSN_UP_1, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .gravityBanned = TRUE, }, @@ -6773,6 +7072,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_POISON_JAB] = @@ -6904,6 +7205,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_DRAGON_PULSE] = @@ -6979,6 +7281,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .punchingMove = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_VACUUM_WAVE] = @@ -7059,6 +7362,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_SWITCHEROO] = @@ -7075,6 +7379,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_SPD_UP_2, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_GIGA_IMPACT] = @@ -7090,7 +7395,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, - .instructBanned = TRUE, }, [MOVE_NASTY_PLOT] = @@ -7106,6 +7410,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_BULLET_PUNCH] = @@ -7348,6 +7654,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + //.ignoresSubstitute = TRUE, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, }, @@ -7363,6 +7670,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = -7, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ACC_UP_1, + .ignoresProtect = TRUE, }, [MOVE_DRACO_METEOR] = @@ -7459,7 +7767,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .ballisticMove = TRUE, - .instructBanned = TRUE, }, [MOVE_CROSS_POISON] = @@ -7527,6 +7834,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .ballisticMove = TRUE, }, [MOVE_STONE_EDGE] = @@ -7572,6 +7880,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .magicCoatAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .forcePressure = TRUE, }, [MOVE_GRASS_KNOT] = @@ -7587,6 +7898,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_CHATTER] = @@ -7610,14 +7922,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_6, - .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_JUDGMENT] = @@ -7723,6 +8036,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAL_ORDER] = @@ -7737,7 +8052,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAD_SMASH] = @@ -7783,7 +8101,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .instructBanned = TRUE, }, [MOVE_SPACIAL_REND] = @@ -7814,6 +8131,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = B_UPDATED_MOVE_FLAGS >= GEN_5, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .danceMove = TRUE, }, @@ -7901,6 +8221,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .windMove = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_SHADOW_FORCE] = @@ -7917,10 +8238,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .argument = MOVE_EFFECT_FEINT, + .twoTurnMove = TRUE, .ignoresProtect = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_HONE_CLAWS] = @@ -7936,6 +8259,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_WIDE_GUARD] = @@ -7952,6 +8277,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .protectionMove = TRUE, .metronomeBanned = TRUE, }, @@ -7968,6 +8295,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .mirrorMoveBanned = TRUE, }, [MOVE_POWER_SPLIT] = @@ -7982,6 +8310,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .mirrorMoveBanned = TRUE, }, [MOVE_WONDER_ROOM] = @@ -8000,6 +8329,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_ALL_BATTLERS, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, }, [MOVE_PSYSHOCK] = @@ -8043,6 +8373,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_RAGE_POWDER] = @@ -8062,8 +8394,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .powderMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TELEKINESIS] = @@ -8098,6 +8433,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_ALL_BATTLERS, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, }, [MOVE_SMACK_DOWN] = @@ -8113,6 +8449,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .damagesAirborne = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_STORM_THROW] = @@ -8175,7 +8512,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .danceMove = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAVY_SLAM] = @@ -8191,8 +8531,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, - .danceMove = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS >= GEN_7, + .skyBattleBanned = TRUE, }, [MOVE_SYNCHRONOISE] = @@ -8273,6 +8613,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_LOW_SWEEP] = @@ -8368,6 +8710,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -8383,6 +8728,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -8398,6 +8744,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -8459,6 +8806,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .protectionMove = TRUE, .metronomeBanned = TRUE, }, @@ -8479,6 +8828,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .target = MOVE_TARGET_USER, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SCALD] = @@ -8510,6 +8861,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEAL_PULSE] = @@ -8525,6 +8878,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .magicCoatAffected = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .pulseMove = TRUE, }, @@ -8558,10 +8913,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .gravityBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SHIFT_GEAR] = @@ -8577,6 +8934,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_CIRCLE_THROW] = @@ -8593,6 +8952,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_INCINERATE] = @@ -8625,7 +8985,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, - .magicCoatAffected = TRUE, .metronomeBanned = TRUE, }, @@ -8656,7 +9015,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, - .snatchAffected = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_RETALIATE] = @@ -8687,6 +9047,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .mirrorMoveBanned = TRUE, + .parentalBondBanned = TRUE, }, [MOVE_BESTOW] = @@ -8702,8 +9063,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_2, .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_6, + .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_INFERNO] = @@ -8737,6 +9100,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .skyBattleBanned = TRUE, }, [MOVE_FIRE_PLEDGE] = @@ -8755,6 +9119,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .skyBattleBanned = TRUE, }, [MOVE_GRASS_PLEDGE] = @@ -8773,6 +9138,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .skyBattleBanned = TRUE, }, [MOVE_VOLT_SWITCH] = @@ -8821,6 +9187,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_FROST_BREATH] = @@ -8855,6 +9222,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_WORK_UP] = @@ -8870,6 +9238,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE }, [MOVE_ELECTROWEB] = @@ -8963,6 +9333,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_SACRED_SWORD] = @@ -9032,6 +9403,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + //.windMove = TRUE, }, [MOVE_STEAMROLLER] = @@ -9064,6 +9436,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_NIGHT_DAZE] = @@ -9210,8 +9584,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .argument = STATUS1_SLEEP, .sheerForceBoost = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .metronomeBanned = TRUE, }, @@ -9228,6 +9602,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .slicingMove = TRUE, .metronomeBanned = TRUE, }, @@ -9306,6 +9681,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_PARALYSIS, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .sleepTalkBanned = TRUE, @@ -9325,6 +9701,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .argument = MOVE_EFFECT_BURN, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .sheerForceBoost = TRUE, .metronomeBanned = TRUE, .sleepTalkBanned = TRUE, @@ -9344,6 +9721,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, .metronomeBanned = TRUE, }, @@ -9428,6 +9806,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .makesContact = TRUE, .minimizeDoubleDamage = TRUE, .gravityBanned = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_MAT_BLOCK] = @@ -9444,8 +9823,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_DEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_BELCH] = @@ -9463,9 +9846,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .mirrorMoveBanned = TRUE, .meFirstBanned = TRUE, .metronomeBanned = TRUE, + .mimicBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_ROTOTILLER] = @@ -9481,6 +9866,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_STICKY_WEB] = @@ -9495,7 +9882,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .magicCoatAffected = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_FELL_STINGER] = @@ -9530,11 +9920,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .argument = MOVE_EFFECT_FEINT, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .ignoresProtect = TRUE, .makesContact = TRUE, .minimizeDoubleDamage = B_UPDATED_MOVE_FLAGS == GEN_6, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TRICK_OR_TREAT] = @@ -9550,6 +9942,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .argument = TYPE_GHOST, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_NOBLE_ROAR] = @@ -9564,6 +9957,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .magicCoatAffected = TRUE, .soundMove = TRUE, }, @@ -9580,6 +9974,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 1, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_PARABOLIC_CHARGE] = @@ -9598,6 +9994,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_FORESTS_CURSE] = @@ -9613,6 +10010,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .argument = TYPE_GRASS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .magicCoatAffected = TRUE, }, [MOVE_PETAL_BLIZZARD] = @@ -9657,6 +10055,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -9673,6 +10072,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESTORE_REPLACEMENT_HP, .magicCoatAffected = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -9709,6 +10109,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .argument = 75, // restores 75% HP instead of 50% HP .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_CRAFTY_SHIELD] = @@ -9724,6 +10125,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .argument = TRUE, // Protects the whole side. .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -9740,6 +10143,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GRASSY_TERRAIN] = @@ -9754,6 +10158,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_MISTY_TERRAIN] = @@ -9768,6 +10175,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_ELECTRIFY] = @@ -9842,6 +10252,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -9857,6 +10268,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, }, [MOVE_KINGS_SHIELD] = @@ -9872,9 +10285,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PLAY_NICE] = @@ -9890,6 +10306,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, .magicCoatAffected = TRUE, }, @@ -9907,6 +10324,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .ignoresProtect = TRUE, .magicCoatAffected = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -9960,6 +10378,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, }, @@ -10014,8 +10433,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_AROMATIC_MIST] = @@ -10031,6 +10453,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_EERIE_IMPULSE] = @@ -10075,6 +10499,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 1, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_2, + .powderMove = TRUE, .magicCoatAffected = TRUE, }, @@ -10090,8 +10515,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .twoTurnMove = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_MAGNETIC_FLUX] = @@ -10107,6 +10534,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HAPPY_HOUR] = @@ -10121,6 +10551,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_ELECTRIC_TERRAIN] = @@ -10135,6 +10567,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_DAZZLING_GLEAM] = @@ -10163,10 +10598,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, + .mimicBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_HOLD_HANDS] = @@ -10182,10 +10621,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, .metronomeBanned = TRUE, + .mimicBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_BABY_DOLL_EYES] = @@ -10279,6 +10721,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .argument = 75, // restores 75% HP instead of 50% HP .zMoveEffect = Z_EFFECT_NONE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_THOUSAND_ARROWS] = @@ -10296,6 +10739,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .damagesAirborne = TRUE, .ignoreTypeIfFlyingAndUngrounded = TRUE, .metronomeBanned = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_THOUSAND_WAVES] = @@ -10311,6 +10755,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .metronomeBanned = TRUE, + .skyBattleBanned = TRUE, }, [MOVE_LANDS_WRATH] = @@ -10325,6 +10770,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .skyBattleBanned = TRUE, }, [MOVE_LIGHT_OF_RUIN] = @@ -10421,7 +10867,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .healBlockBanned = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_FIRST_IMPRESSION] = @@ -10452,8 +10901,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_SPIRIT_SHACKLE] = @@ -10501,6 +10953,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .argument = STATUS1_BURN, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -10533,6 +10986,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, .argument = MOVE_EFFECT_FLORAL_HEALING, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .magicCoatAffected = TRUE, }, @@ -10564,6 +11019,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_DEF_UP_1, .magicCoatAffected = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_SOLAR_BLADE] = @@ -10578,6 +11034,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .makesContact = TRUE, .slicingMove = TRUE, .sleepTalkBanned = TRUE, @@ -10611,8 +11068,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPDEF_UP_1, .magicCoatAffected = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_TOXIC_THREAD] = @@ -10643,6 +11102,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_GEAR_UP] = @@ -10658,6 +11119,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_THROAT_CHOP] = @@ -10719,6 +11183,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_LUNGE] = @@ -10795,6 +11261,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresSubstitute = TRUE, }, [MOVE_SMART_STRIKE] = @@ -10824,6 +11291,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_ALL_STATS_UP_1, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .magicCoatAffected = TRUE, }, @@ -10884,6 +11353,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPATK_UP_1, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .instructBanned = TRUE, }, @@ -10907,6 +11378,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_CLANGING_SCALES] = @@ -10921,6 +11393,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .soundMove = TRUE, }, @@ -10967,6 +11440,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_SHELL_TRAP] = @@ -10987,6 +11462,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_FLEUR_CANNON] = @@ -11033,6 +11509,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_SHADOW_BONE] = @@ -11093,7 +11570,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .instructBanned = TRUE, }, [MOVE_SPECTRAL_THIEF] = @@ -11108,6 +11584,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .ignoresSubstitute = TRUE, .makesContact = TRUE, .metronomeBanned = TRUE, }, @@ -11188,7 +11665,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, - .makesContact = TRUE, .metronomeBanned = B_UPDATED_MOVE_FLAGS >= GEN_8, }, @@ -11333,6 +11809,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, + .metronomeBanned = TRUE, }, [MOVE_BOUNCY_BUBBLE] = @@ -11355,6 +11832,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .mirrorMoveBanned = B_UPDATED_MOVE_FLAGS < GEN_8, .metronomeBanned = TRUE, + .healBlockBanned = B_HEAL_BLOCKING >= GEN_6, }, [MOVE_BUZZY_BUZZ] = @@ -11559,10 +12037,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .mimicBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, + .parentalBondBanned = TRUE, }, [MOVE_SNIPE_SHOT] = @@ -11609,6 +12092,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_NO_RETREAT] = @@ -11624,6 +12109,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TAR_SHOT] = @@ -11671,6 +12158,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .strikeCount = 2, + .parentalBondBanned = TRUE, }, [MOVE_TEATIME] = @@ -11681,11 +12169,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .accuracy = 0, .pp = 10, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_OCTOLOCK] = @@ -11745,6 +12235,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, }, [MOVE_CLANGOROUS_SOUL] = @@ -11760,7 +12251,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .soundMove = TRUE, + .danceMove = TRUE, .metronomeBanned = TRUE, }, @@ -11778,11 +12272,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .metronomeBanned = TRUE, + .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_DECORATE] = { - .ignoresProtect = B_UPDATED_MOVE_FLAGS >= GEN_5, .effect = EFFECT_DECORATE, .power = 0, .type = TYPE_FAIRY, @@ -11793,6 +12287,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -11826,6 +12322,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .metronomeBanned = TRUE, + .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_PYRO_BALL] = @@ -11862,6 +12359,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .slicingMove = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .mimicBanned = TRUE, + .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_BEHEMOTH_BASH] = @@ -11879,6 +12378,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .makesContact = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, + .mimicBanned = TRUE, + .assistBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_AURA_WHEEL] = @@ -11942,6 +12443,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, .metronomeBanned = TRUE, }, @@ -12018,11 +12520,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .accuracy = 0, .pp = 10, .secondaryEffectChance = 0, - .target = MOVE_TARGET_USER, + .target = MOVE_TARGET_ALL_BATTLERS, .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .metronomeBanned = TRUE, }, @@ -12039,8 +12545,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, - .copycatBanned = TRUE, .instructBanned = TRUE, }, @@ -12089,7 +12596,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, .metronomeBanned = TRUE, - .instructBanned = TRUE, }, [MOVE_STEEL_BEAM] = @@ -12135,6 +12641,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .argument = ARG_TRY_REMOVE_TERRAIN_FAIL, // Remove a field terrain if there is one and hit, otherwise fail. + .skyBattleBanned = TRUE, }, [MOVE_SCALE_SHOT] = @@ -12164,6 +12671,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .twoTurnMove = TRUE, .instructBanned = TRUE, }, @@ -12199,7 +12707,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_GRASSY_GLIDE] = { #if B_UPDATED_MOVE_DATA >= GEN_9 - .power = 60, + .power = 55, #else .power = 70, #endif @@ -12213,6 +12721,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_RISING_VOLTAGE] = @@ -12331,6 +12840,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_FLIP_TURN] = @@ -12408,6 +12920,10 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .ignoresSubstitute = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, .metronomeBanned = TRUE, }, @@ -12580,6 +13096,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_DIRE_CLAW] = @@ -12630,8 +13147,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, - }, +}, [MOVE_STONE_AXE] = { @@ -12669,6 +13189,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, .windMove = TRUE, + .metronomeBanned = TRUE, }, [MOVE_MYSTICAL_POWER] = @@ -12702,7 +13223,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, - .makesContact = TRUE, .metronomeBanned = TRUE, }, @@ -12723,6 +13243,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_CHLOROBLAST] = @@ -12772,6 +13293,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .danceMove = TRUE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_HEADLONG_RUSH] = @@ -12866,6 +13389,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TRIPLE_ARROWS] = @@ -12998,6 +13523,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, + .healBlockBanned = TRUE, }, [MOVE_TAKE_HEART] = @@ -13013,6 +13541,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, }, [MOVE_TERA_BLAST] = @@ -13027,6 +13557,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, // Only since it isn't implemented yet + .forcePressure = TRUE, }, [MOVE_SILK_TRAP] = @@ -13042,6 +13574,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, .protectionMove = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13073,6 +13607,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .metronomeBanned = TRUE, // Only since it isn't implemented yet }, [MOVE_LUMINA_CRASH] = @@ -13103,6 +13638,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13153,6 +13689,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_POPULATION_BOMB] = @@ -13187,11 +13724,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .argument = ARG_TRY_REMOVE_TERRAIN_HIT, // Remove the active field terrain if there is one. + .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_GLAIVE_RUSH] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_GLAIVE_RUSH + .effect = EFFECT_GLAIVE_RUSH, .power = 120, .type = TYPE_DRAGON, .accuracy = 100, @@ -13201,6 +13739,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .metronomeBanned = TRUE, // Only since it isn't implemented yet }, [MOVE_REVIVAL_BLESSING] = @@ -13215,6 +13755,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13263,6 +13805,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .makesContact = TRUE, }, [MOVE_DOODLE] = @@ -13273,10 +13816,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .accuracy = 100, .pp = 10, .secondaryEffectChance = 0, - .target = MOVE_TARGET_FOES_AND_ALLY, // Supposedly unconfirmed? - .priority = 0, // TO VERIFY + .target = MOVE_TARGET_BOTH, + .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13293,6 +13838,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RECOVER_HP, .snatchAffected = TRUE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13340,6 +13887,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_AQUA_STEP] = @@ -13361,14 +13909,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_RAGING_BULL] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_RAGING_BULL + .effect = EFFECT_RAGING_BULL, .power = 90, .type = TYPE_NORMAL, .accuracy = 100, .pp = 10, .secondaryEffectChance = 0, .target = MOVE_TARGET_SELECTED, - .priority = 0, // TO VERIFY + .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, @@ -13449,12 +13997,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_RESET_STATS, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, [MOVE_CHILLY_RECEPTION] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_CHILLY_RECEPTION + .effect = EFFECT_CHILLY_RECEPTION, .power = 0, .type = TYPE_ICE, .accuracy = 0, @@ -13464,6 +14014,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13479,6 +14031,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_NONE, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13494,6 +14048,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_STATUS, .zMoveEffect = Z_EFFECT_SPD_UP_1, + .ignoresProtect = TRUE, + .mirrorMoveBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13557,6 +14113,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, + .ignoresProtect = TRUE, .metronomeBanned = TRUE, }, @@ -13578,7 +14135,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_RAGE_FIST] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_RAGE_FIST + .effect = EFFECT_RAGE_FIST, .power = 50, .type = TYPE_GHOST, .accuracy = 100, @@ -13622,6 +14179,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMoveEffect = Z_EFFECT_NONE, .makesContact = TRUE, .slicingMove = TRUE, + .healBlockBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_DOUBLE_SHOCK] = @@ -13636,12 +14194,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, .metronomeBanned = TRUE, }, [MOVE_GIGATON_HAMMER] = { - .effect = EFFECT_GIGATON_HAMMER, + .effect = EFFECT_HIT, .power = 160, .type = TYPE_STEEL, .accuracy = 100, @@ -13651,6 +14210,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .cantUseTwice = TRUE, }, [MOVE_COMEUPPANCE] = @@ -13665,6 +14225,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, + .makesContact = TRUE, + .meFirstBanned = TRUE, .metronomeBanned = TRUE, }, @@ -13697,11 +14259,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_WICKED_TORQUE] = @@ -13717,11 +14283,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_NOXIOUS_TORQUE] = @@ -13737,11 +14307,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_COMBAT_TORQUE] = @@ -13757,11 +14331,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_MAGICAL_TORQUE] = @@ -13777,11 +14355,15 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = Z_EFFECT_NONE, .sheerForceBoost = TRUE, + .mirrorMoveBanned = TRUE, + .meFirstBanned = TRUE, .mimicBanned = TRUE, .metronomeBanned = TRUE, .copycatBanned = TRUE, .sleepTalkBanned = TRUE, .instructBanned = TRUE, + .encoreBanned = TRUE, + .assistBanned = TRUE, }, [MOVE_PSYBLADE] = @@ -13812,6 +14394,72 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_SPECIAL, .zMoveEffect = Z_EFFECT_NONE, + .thawsUser = TRUE, + }, + + [MOVE_BLOOD_MOON] = + { + .effect = EFFECT_HIT, + .power = 140, + .type = TYPE_NORMAL, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_SPECIAL, + .zMoveEffect = Z_EFFECT_NONE, + .cantUseTwice = TRUE, + }, + + [MOVE_MATCHA_GOTCHA] = + { + .effect = EFFECT_MATCHA_GOTCHA, + .power = 80, + .type = TYPE_GRASS, + .accuracy = 90, + .pp = 15, + .secondaryEffectChance = 20, + .target = MOVE_TARGET_BOTH, + .priority = 0, + .split = SPLIT_SPECIAL, + .zMoveEffect = Z_EFFECT_NONE, + .thawsUser = TRUE, + .metronomeBanned = TRUE, + .healBlockBanned = B_EXTRAPOLATED_MOVE_FLAGS, + }, + + [MOVE_SYRUP_BOMB] = + { + .effect = EFFECT_SYRUP_BOMB, + .power = 60, + .type = TYPE_GRASS, + .accuracy = 85, + .pp = 10, + .secondaryEffectChance = 100, // syrup bomb volatile status + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_SPECIAL, + .zMoveEffect = Z_EFFECT_NONE, + .ballisticMove = TRUE, + .metronomeBanned = TRUE, + }, + + [MOVE_IVY_CUDGEL] = + { + .effect = EFFECT_CHANGE_TYPE_ON_ITEM, + .power = 100, + .type = TYPE_GRASS, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = HOLD_EFFECT_MASK, + .zMoveEffect = Z_EFFECT_NONE, + .highCritRatio = TRUE, + .metronomeBanned = TRUE, }, // Z-Moves @@ -13879,6 +14527,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .split = SPLIT_PHYSICAL, .zMoveEffect = 0, + .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, }, [MOVE_CONTINENTAL_CRUSH] = { @@ -14208,6 +14857,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_SPECIAL, .zMoveEffect = 0, .soundMove = TRUE, + .ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_6, }, [MOVE_GUARDIAN_OF_ALOLA] = { @@ -14274,4 +14924,738 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .split = SPLIT_PHYSICAL, .zMoveEffect = 0, }, + + [MOVE_MAX_GUARD] = + { + .effect = EFFECT_PROTECT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 4, + .split = SPLIT_STATUS, + .protectionMove = TRUE, + }, + + [MOVE_MAX_FLARE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_SUN, + }, + + [MOVE_MAX_FLUTTERBY] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_BUG, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_SP_ATK, + }, + + [MOVE_MAX_LIGHTNING] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_ELECTRIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_ELECTRIC_TERRAIN, + }, + + [MOVE_MAX_STRIKE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_SPEED, + }, + + [MOVE_MAX_KNUCKLE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_FIGHTING, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAISE_TEAM_ATTACK, + }, + + [MOVE_MAX_PHANTASM] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_GHOST, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_DEFENSE, + }, + + [MOVE_MAX_HAILSTORM] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_ICE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_HAIL, + }, + + [MOVE_MAX_OOZE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_POISON, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAISE_TEAM_SP_ATK, + }, + + [MOVE_MAX_GEYSER] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAIN, + }, + + [MOVE_MAX_AIRSTREAM] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_FLYING, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAISE_TEAM_SPEED, + }, + + [MOVE_MAX_STARFALL] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_FAIRY, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_MISTY_TERRAIN, + }, + + [MOVE_MAX_WYRMWIND] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_DRAGON, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_ATTACK, + }, + + [MOVE_MAX_MINDSTORM] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_PSYCHIC_TERRAIN, + }, + + [MOVE_MAX_ROCKFALL] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_ROCK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_SANDSTORM, + }, + + [MOVE_MAX_QUAKE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_GROUND, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAISE_TEAM_SP_DEF, + .skyBattleBanned = B_EXTRAPOLATED_MOVE_FLAGS, + }, + + [MOVE_MAX_DARKNESS] = + { + .effect = EFFECT_MAX_MOVE, + .power = 1, + .type = TYPE_DARK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_SP_DEF, + }, + + [MOVE_MAX_OVERGROWTH] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_GRASSY_TERRAIN, + }, + + [MOVE_MAX_STEELSPIKE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_STEEL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RAISE_TEAM_DEFENSE, + }, + + [MOVE_G_MAX_VINE_LASH] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_VINE_LASH, + }, + + [MOVE_G_MAX_WILDFIRE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_WILDFIRE, + }, + + [MOVE_G_MAX_CANNONADE] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_CANNONADE, + }, + + [MOVE_G_MAX_BEFUDDLE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_BUG, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_EFFECT_SPORE_FOES, + }, + + [MOVE_G_MAX_VOLT_CRASH] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_ELECTRIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_PARALYZE_FOES, + }, + + [MOVE_G_MAX_GOLD_RUSH] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_CONFUSE_FOES_PAY_DAY, + }, + + [MOVE_G_MAX_CHI_STRIKE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FIGHTING, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_CRIT_PLUS, + }, + + [MOVE_G_MAX_TERROR] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GHOST, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_MEAN_LOOK, + }, + + [MOVE_G_MAX_FOAM_BURST] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_SPEED_2_FOES, + }, + + [MOVE_G_MAX_RESONANCE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_ICE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_AURORA_VEIL, + }, + + [MOVE_G_MAX_CUDDLE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_INFATUATE_FOES, + }, + + [MOVE_G_MAX_REPLENISH] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_RECYCLE_BERRIES, + }, + + [MOVE_G_MAX_MALODOR] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_POISON, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_POISON_FOES, + }, + + [MOVE_G_MAX_MELTDOWN] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_STEEL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_TORMENT_FOES, + }, + + [MOVE_G_MAX_DRUM_SOLO] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO + .ignoresTargetAbility = TRUE, + }, + + [MOVE_G_MAX_FIREBALL] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO + .ignoresTargetAbility = TRUE, + }, + + [MOVE_G_MAX_HYDROSNIPE] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_FIXED_POWER, //EFFECT TODO + .ignoresTargetAbility = TRUE, + }, + + [MOVE_G_MAX_WIND_RAGE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FLYING, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_DEFOG, + }, + + [MOVE_G_MAX_GRAVITAS] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_GRAVITY, + }, + + [MOVE_G_MAX_STONESURGE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_STEALTH_ROCK, + }, + + [MOVE_G_MAX_VOLCALITH] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_ROCK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_VOLCALITH, + }, + + [MOVE_G_MAX_TARTNESS] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_LOWER_EVASIVENESS_FOES, + }, + + [MOVE_G_MAX_SWEETNESS] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GRASS, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_AROMATHERAPY, + }, + + [MOVE_G_MAX_SANDBLAST] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_GROUND, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_SANDBLAST_FOES, + }, + + [MOVE_G_MAX_STUN_SHOCK] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_ELECTRIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_POISON_PARALYZE_FOES, + }, + + [MOVE_G_MAX_CENTIFERNO] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FIRE, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_FIRE_SPIN_FOES, + }, + + [MOVE_G_MAX_SMITE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FAIRY, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_CONFUSE_FOES, + }, + + + [MOVE_G_MAX_SNOOZE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_DARK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_YAWN_FOE, + }, + + [MOVE_G_MAX_FINALE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_FAIRY, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_HEAL_TEAM, + }, + + [MOVE_G_MAX_STEELSURGE] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_STEEL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_STEELSURGE, + }, + + [MOVE_G_MAX_DEPLETION] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_DRAGON, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_SPITE, + }, + + [MOVE_G_MAX_ONE_BLOW] = + { + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_DARK, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_BYPASS_PROTECT, //EFFECT TODO + }, + + [MOVE_G_MAX_RAPID_FLOW] = + { //ANIM TODO + .effect = EFFECT_MAX_MOVE, + .power = 10, + .type = TYPE_WATER, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .split = SPLIT_PHYSICAL, + .argument = MAX_EFFECT_BYPASS_PROTECT, //EFFECT TODO + }, + }; diff --git a/src/data/contest_moves.h b/src/data/contest_moves.h index 3d633a2562..6084091683 100644 --- a/src/data/contest_moves.h +++ b/src/data/contest_moves.h @@ -6066,6 +6066,14 @@ const struct ContestMove gContestMoves[MOVES_COUNT] = [MOVE_PSYBLADE] = {0}, // TODO [MOVE_HYDRO_STEAM] = {0}, // TODO + + [MOVE_BLOOD_MOON] = {0}, // TODO + + [MOVE_MATCHA_GOTCHA] = {0}, // TODO + + [MOVE_SYRUP_BOMB] = {0}, // TODO + + [MOVE_IVY_CUDGEL] = {0}, // TODO }; const struct ContestEffect gContestEffects[] = diff --git a/src/data/contest_opponents.h b/src/data/contest_opponents.h index feeb29524f..d3f02d33ab 100644 --- a/src/data/contest_opponents.h +++ b/src/data/contest_opponents.h @@ -1760,7 +1760,7 @@ const struct ContestPokemon gContestOpponents[] = .otId = CONTEST_AI_TRAINER_ID, }, [CONTEST_OPPONENT_FELICIA] = { - .species = SPECIES_CASTFORM, + .species = SPECIES_CASTFORM_NORMAL, .nickname = _("CASTER"), .trainerName = _("FELICIA"), .trainerGfxId = OBJ_EVENT_GFX_LASS, diff --git a/src/data/credits.h b/src/data/credits.h index 3ae2b1d3be..3b92ae26f7 100644 --- a/src/data/credits.h +++ b/src/data/credits.h @@ -221,565 +221,565 @@ static const u8 sCreditsText_MotoyasuTojima[] = _("Motoyasu Toji static const u8 sCreditsText_NicolaPrattBarlow[] = _("Nicola Pratt-Barlow"); static const u8 sCreditsText_ShellieDow[] = _("Shellie Dow"); static const u8 sCreditsText_ErikJohnson[] = _("Erik Johnson"); -static const struct CreditsEntry sCreditsEntry_EmptyString[] = { 0, FALSE, sCreditsText_EmptyString}; -static const struct CreditsEntry sCreditsEntry_PkmnEmeraldVersion[] = { 7, TRUE, sCreditsText_PkmnEmeraldVersion}; -static const struct CreditsEntry sCreditsEntry_Credits[] = {11, TRUE, sCreditsText_Credits}; -static const struct CreditsEntry sCreditsEntry_ExecutiveDirector[] = { 8, TRUE, sCreditsText_ExecutiveDirector}; -static const struct CreditsEntry sCreditsEntry_Director[] = {12, TRUE, sCreditsText_Director}; -static const struct CreditsEntry sCreditsEntry_ArtDirector[] = {10, TRUE, sCreditsText_ArtDirector}; -static const struct CreditsEntry sCreditsEntry_BattleDirector[] = {10, TRUE, sCreditsText_BattleDirector}; -static const struct CreditsEntry sCreditsEntry_MainProgrammer[] = {10, TRUE, sCreditsText_MainProgrammer}; -static const struct CreditsEntry sCreditsEntry_BattleSystemPgrms[] = { 8, TRUE, sCreditsText_BattleSystemPgrms}; -static const struct CreditsEntry sCreditsEntry_FieldSystemPgrms[] = { 7, TRUE, sCreditsText_FieldSystemPgrms}; -static const struct CreditsEntry sCreditsEntry_Programmers[] = {12, TRUE, sCreditsText_Programmers}; -static const struct CreditsEntry sCreditsEntry_MainGraphicDesigner[] = { 7, TRUE, sCreditsText_MainGraphicDesigner}; -static const struct CreditsEntry sCreditsEntry_GraphicDesigners[] = { 9, TRUE, sCreditsText_GraphicDesigners}; -static const struct CreditsEntry sCreditsEntry_PkmnDesigners[] = {10, TRUE, sCreditsText_PkmnDesigners}; -static const struct CreditsEntry sCreditsEntry_MusicComposition[] = {13, TRUE, sCreditsText_MusicComposition}; -static const struct CreditsEntry sCreditsEntry_SoundEffectsAndPkmnVoices[] = { 4, TRUE, sCreditsText_SoundEffectsAndPkmnVoices}; -static const struct CreditsEntry sCreditsEntry_GameDesigners[] = {11, TRUE, sCreditsText_GameDesigners}; -static const struct CreditsEntry sCreditsEntry_ScenarioPlot[] = {11, TRUE, sCreditsText_ScenarioPlot}; -static const struct CreditsEntry sCreditsEntry_Scenario[] = {13, TRUE, sCreditsText_Scenario}; -static const struct CreditsEntry sCreditsEntry_ScriptDesigners[] = {10, TRUE, sCreditsText_ScriptDesigners}; -static const struct CreditsEntry sCreditsEntry_MapDesigners[] = {11, TRUE, sCreditsText_MapDesigners}; -static const struct CreditsEntry sCreditsEntry_MapDataDesigners[] = { 9, TRUE, sCreditsText_MapDataDesigners}; -static const struct CreditsEntry sCreditsEntry_ParametricDesigners[] = { 9, TRUE, sCreditsText_ParametricDesigners}; -static const struct CreditsEntry sCreditsEntry_PokedexText[] = {11, TRUE, sCreditsText_PokedexText}; -static const struct CreditsEntry sCreditsEntry_EnvAndToolPgrms[] = { 6, TRUE, sCreditsText_EnvAndToolPgrms}; -static const struct CreditsEntry sCreditsEntry_NCLProductTesting[] = {11, TRUE, sCreditsText_NCLProductTesting}; -static const struct CreditsEntry sCreditsEntry_SpecialThanks[] = {10, TRUE, sCreditsText_SpecialThanks}; -static const struct CreditsEntry sCreditsEntry_Coordinators[] = {11, TRUE, sCreditsText_Coordinators}; -static const struct CreditsEntry sCreditsEntry_Producers[] = {11, TRUE, sCreditsText_Producers}; -static const struct CreditsEntry sCreditsEntry_ExecProducers[] = { 7, TRUE, sCreditsText_ExecProducers}; -static const struct CreditsEntry sCreditsEntry_InfoSupervisors[] = {10, TRUE, sCreditsText_InfoSupervisors}; -static const struct CreditsEntry sCreditsEntry_TaskManagers[] = { 8, TRUE, sCreditsText_TaskManagers}; -static const struct CreditsEntry sCreditsEntry_BrailleCodeCheck[] = {10, TRUE, sCreditsText_BrailleCodeCheck}; -static const struct CreditsEntry sCreditsEntry_WorldDirector[] = {10, TRUE, sCreditsText_WorldDirector}; -static const struct CreditsEntry sCreditsEntry_BattleFrontierData[] = { 8, TRUE, sCreditsText_BattleFrontierData}; -static const struct CreditsEntry sCreditsEntry_SupportProgrammers[] = {10, TRUE, sCreditsText_SupportProgrammers}; -static const struct CreditsEntry sCreditsEntry_Artwork[] = {12, TRUE, sCreditsText_Artwork}; -static const struct CreditsEntry sCreditsEntry_LeadProgrammer[] = {10, TRUE, sCreditsText_LeadProgrammer}; -static const struct CreditsEntry sCreditsEntry_LeadGraphicArtist[] = { 9, TRUE, sCreditsText_LeadGraphicArtist}; -static const struct CreditsEntry sCreditsEntry_SatoshiTajiri[] = {11, FALSE, sCreditsText_SatoshiTajiri}; -static const struct CreditsEntry sCreditsEntry_JunichiMasuda[] = {11, FALSE, sCreditsText_JunichiMasuda}; -static const struct CreditsEntry sCreditsEntry_KenSugimori[] = {11, FALSE, sCreditsText_KenSugimori}; -static const struct CreditsEntry sCreditsEntry_ShigekiMorimoto[] = {11, FALSE, sCreditsText_ShigekiMorimoto}; -static const struct CreditsEntry sCreditsEntry_TetsuyaWatanabe[] = {11, FALSE, sCreditsText_TetsuyaWatanabe}; -static const struct CreditsEntry sCreditsEntry_HisashiSogabe[] = {11, FALSE, sCreditsText_HisashiSogabe}; -static const struct CreditsEntry sCreditsEntry_SosukeTamada[] = {11, FALSE, sCreditsText_SosukeTamada}; -static const struct CreditsEntry sCreditsEntry_AkitoMori[] = {11, FALSE, sCreditsText_AkitoMori}; -static const struct CreditsEntry sCreditsEntry_KeitaKagaya[] = {11, FALSE, sCreditsText_KeitaKagaya}; -static const struct CreditsEntry sCreditsEntry_YoshinoriMatsuda[] = {11, FALSE, sCreditsText_YoshinoriMatsuda}; -static const struct CreditsEntry sCreditsEntry_HiroyukiNakamura[] = {11, FALSE, sCreditsText_HiroyukiNakamura}; -static const struct CreditsEntry sCreditsEntry_MasaoTaya[] = {11, FALSE, sCreditsText_MasaoTaya}; -static const struct CreditsEntry sCreditsEntry_SatoshiNohara[] = {11, FALSE, sCreditsText_SatoshiNohara}; -static const struct CreditsEntry sCreditsEntry_TomomichiOhta[] = {11, FALSE, sCreditsText_TomomichiOhta}; -static const struct CreditsEntry sCreditsEntry_MiyukiIwasawa[] = {11, FALSE, sCreditsText_MiyukiIwasawa}; -static const struct CreditsEntry sCreditsEntry_TakenoriOhta[] = {11, FALSE, sCreditsText_TakenoriOhta}; -static const struct CreditsEntry sCreditsEntry_HironobuYoshida[] = {11, FALSE, sCreditsText_HironobuYoshida}; -static const struct CreditsEntry sCreditsEntry_MotofumiFujiwara[] = {11, FALSE, sCreditsText_MotofumiFujiwara}; -static const struct CreditsEntry sCreditsEntry_SatoshiOhta[] = {11, FALSE, sCreditsText_SatoshiOhta}; -static const struct CreditsEntry sCreditsEntry_AsukaIwashita[] = {11, FALSE, sCreditsText_AsukaIwashita}; -static const struct CreditsEntry sCreditsEntry_AimiTomita[] = {11, FALSE, sCreditsText_AimiTomita}; -static const struct CreditsEntry sCreditsEntry_TakaoUnno[] = {11, FALSE, sCreditsText_TakaoUnno}; -static const struct CreditsEntry sCreditsEntry_KanakoEo[] = {11, FALSE, sCreditsText_KanakoEo}; -static const struct CreditsEntry sCreditsEntry_JunOkutani[] = {11, FALSE, sCreditsText_JunOkutani}; -static const struct CreditsEntry sCreditsEntry_AtsukoNishida[] = {11, FALSE, sCreditsText_AtsukoNishida}; -static const struct CreditsEntry sCreditsEntry_MuneoSaito[] = {11, FALSE, sCreditsText_MuneoSaito}; -static const struct CreditsEntry sCreditsEntry_RenaYoshikawa[] = {11, FALSE, sCreditsText_RenaYoshikawa}; -static const struct CreditsEntry sCreditsEntry_GoIchinose[] = {11, FALSE, sCreditsText_GoIchinose}; -static const struct CreditsEntry sCreditsEntry_MorikazuAoki[] = {11, FALSE, sCreditsText_MorikazuAoki}; -static const struct CreditsEntry sCreditsEntry_KojiNishino[] = {11, FALSE, sCreditsText_KojiNishino}; -static const struct CreditsEntry sCreditsEntry_KenjiMatsushima[] = {11, FALSE, sCreditsText_KenjiMatsushima}; -static const struct CreditsEntry sCreditsEntry_TetsujiOhta[] = {11, FALSE, sCreditsText_TetsujiOhta}; -static const struct CreditsEntry sCreditsEntry_HitomiSato[] = {11, FALSE, sCreditsText_HitomiSato}; -static const struct CreditsEntry sCreditsEntry_TakeshiKawachimaru[] = {11, FALSE, sCreditsText_TakeshiKawachimaru}; -static const struct CreditsEntry sCreditsEntry_TeruyukiShimoyamada[] = {11, FALSE, sCreditsText_TeruyukiShimoyamada}; -static const struct CreditsEntry sCreditsEntry_ShigeruOhmori[] = {11, FALSE, sCreditsText_ShigeruOhmori}; -static const struct CreditsEntry sCreditsEntry_TadashiTakahashi[] = {11, FALSE, sCreditsText_TadashiTakahashi}; -static const struct CreditsEntry sCreditsEntry_ToshinobuMatsumiya[] = {11, FALSE, sCreditsText_ToshinobuMatsumiya}; -static const struct CreditsEntry sCreditsEntry_AkihitoTomisawa[] = {11, FALSE, sCreditsText_AkihitoTomisawa}; -static const struct CreditsEntry sCreditsEntry_HirokiEnomoto[] = {11, FALSE, sCreditsText_HirokiEnomoto}; -static const struct CreditsEntry sCreditsEntry_KazuyukiTerada[] = {11, FALSE, sCreditsText_KazuyukiTerada}; -static const struct CreditsEntry sCreditsEntry_YuriSakurai[] = {11, FALSE, sCreditsText_YuriSakurai}; -static const struct CreditsEntry sCreditsEntry_HiromiSagawa[] = {11, FALSE, sCreditsText_HiromiSagawa}; -static const struct CreditsEntry sCreditsEntry_KenjiTominaga[] = {11, FALSE, sCreditsText_KenjiTominaga}; -static const struct CreditsEntry sCreditsEntry_YoshioTajiri[] = {11, FALSE, sCreditsText_YoshioTajiri}; -static const struct CreditsEntry sCreditsEntry_TeikoSasaki[] = {11, FALSE, sCreditsText_TeikoSasaki}; -static const struct CreditsEntry sCreditsEntry_SachikoHamano[] = {11, FALSE, sCreditsText_SachikoHamano}; -static const struct CreditsEntry sCreditsEntry_ChieMatsumiya[] = {11, FALSE, sCreditsText_ChieMatsumiya}; -static const struct CreditsEntry sCreditsEntry_AkikoShinozaki[] = {11, FALSE, sCreditsText_AkikoShinozaki}; -static const struct CreditsEntry sCreditsEntry_AstukoFujii[] = {11, FALSE, sCreditsText_AstukoFujii}; -static const struct CreditsEntry sCreditsEntry_NozomuSaito[] = {11, FALSE, sCreditsText_NozomuSaito}; -static const struct CreditsEntry sCreditsEntry_KenkichiToyama[] = {11, FALSE, sCreditsText_KenkichiToyama}; -static const struct CreditsEntry sCreditsEntry_SuguruNakatsui[] = {11, FALSE, sCreditsText_SuguruNakatsui}; -static const struct CreditsEntry sCreditsEntry_YumiFunasaka[] = {11, FALSE, sCreditsText_YumiFunasaka}; -static const struct CreditsEntry sCreditsEntry_NaokoYanase[] = {11, FALSE, sCreditsText_NaokoYanase}; -static const struct CreditsEntry sCreditsEntry_NCLSuperMarioClub[] = {11, FALSE, sCreditsText_NCLSuperMarioClub}; -static const struct CreditsEntry sCreditsEntry_AtsushiTada[] = {11, FALSE, sCreditsText_AtsushiTada}; -static const struct CreditsEntry sCreditsEntry_TakahiroOhnishi[] = {11, FALSE, sCreditsText_TakahiroOhnishi}; -static const struct CreditsEntry sCreditsEntry_NorihideOkamura[] = {11, FALSE, sCreditsText_NorihideOkamura}; -static const struct CreditsEntry sCreditsEntry_HiroNakamura[] = {11, FALSE, sCreditsText_HiroNakamura}; -static const struct CreditsEntry sCreditsEntry_HiroyukiUesugi[] = {11, FALSE, sCreditsText_HiroyukiUesugi}; -static const struct CreditsEntry sCreditsEntry_TerukiMurakawa[] = {11, FALSE, sCreditsText_TerukiMurakawa}; -static const struct CreditsEntry sCreditsEntry_AkiraKinashi[] = {11, FALSE, sCreditsText_AkiraKinashi}; -static const struct CreditsEntry sCreditsEntry_MichikoTakizawa[] = {11, FALSE, sCreditsText_MichikoTakizawa}; -static const struct CreditsEntry sCreditsEntry_MakikoTakada[] = {11, FALSE, sCreditsText_MakikoTakada}; -static const struct CreditsEntry sCreditsEntry_TakanaoKondo[] = {11, FALSE, sCreditsText_TakanaoKondo}; -static const struct CreditsEntry sCreditsEntry_AiMashima[] = {11, FALSE, sCreditsText_AiMashima}; -static const struct CreditsEntry sCreditsEntry_GakujiNomoto[] = {11, FALSE, sCreditsText_GakujiNomoto}; -static const struct CreditsEntry sCreditsEntry_TakehiroIzushi[] = {11, FALSE, sCreditsText_TakehiroIzushi}; -static const struct CreditsEntry sCreditsEntry_HitoshiYamagami[] = {11, FALSE, sCreditsText_HitoshiYamagami}; -static const struct CreditsEntry sCreditsEntry_KyokoWatanabe[] = {11, FALSE, sCreditsText_KyokoWatanabe}; -static const struct CreditsEntry sCreditsEntry_TakaoNakano[] = {11, FALSE, sCreditsText_TakaoNakano}; -static const struct CreditsEntry sCreditsEntry_HiroyukiJinnai[] = {11, FALSE, sCreditsText_HiroyukiJinnai}; -static const struct CreditsEntry sCreditsEntry_HiroakiTsuru[] = {11, FALSE, sCreditsText_HiroakiTsuru}; -static const struct CreditsEntry sCreditsEntry_TsunekazIshihara[] = {11, FALSE, sCreditsText_TsunekazIshihara}; -static const struct CreditsEntry sCreditsEntry_SatoruIwata[] = {11, FALSE, sCreditsText_SatoruIwata}; -static const struct CreditsEntry sCreditsEntry_KazuyaSuyama[] = {11, FALSE, sCreditsText_KazuyaSuyama}; -static const struct CreditsEntry sCreditsEntry_SatoshiMitsuhara[] = {11, FALSE, sCreditsText_SatoshiMitsuhara}; -static const struct CreditsEntry sCreditsEntry_JapanBrailleLibrary[] = { 9, FALSE, sCreditsText_JapanBrailleLibrary}; -static const struct CreditsEntry sCreditsEntry_TomotakaKomura[] = {11, FALSE, sCreditsText_TomotakaKomura}; -static const struct CreditsEntry sCreditsEntry_MikikoOhhashi[] = {11, FALSE, sCreditsText_MikikoOhhashi}; -static const struct CreditsEntry sCreditsEntry_DaisukeHoshino[] = {11, FALSE, sCreditsText_DaisukeHoshino}; -static const struct CreditsEntry sCreditsEntry_KenjiroIto[] = {11, FALSE, sCreditsText_KenjiroIto}; -static const struct CreditsEntry sCreditsEntry_RuiKawaguchi[] = {11, FALSE, sCreditsText_RuiKawaguchi}; -static const struct CreditsEntry sCreditsEntry_ShunsukeKohori[] = {11, FALSE, sCreditsText_ShunsukeKohori}; -static const struct CreditsEntry sCreditsEntry_SachikoNakamichi[] = {11, FALSE, sCreditsText_SachikoNakamichi}; -static const struct CreditsEntry sCreditsEntry_FujikoNomura[] = {11, FALSE, sCreditsText_FujikoNomura}; -static const struct CreditsEntry sCreditsEntry_KazukiYoshihara[] = {11, FALSE, sCreditsText_KazukiYoshihara}; -static const struct CreditsEntry sCreditsEntry_RetsujiNomoto[] = {11, FALSE, sCreditsText_RetsujiNomoto}; -static const struct CreditsEntry sCreditsEntry_AzusaTajima[] = {11, FALSE, sCreditsText_AzusaTajima}; -static const struct CreditsEntry sCreditsEntry_ShusakuEgami[] = {11, FALSE, sCreditsText_ShusakuEgami}; -static const struct CreditsEntry sCreditsEntry_PackageAndManual[] = { 0, TRUE, sCreditsText_PackageAndManual}; -static const struct CreditsEntry sCreditsEntry_EnglishVersion[] = { 0, TRUE, sCreditsText_EnglishVersion}; -static const struct CreditsEntry sCreditsEntry_Translator[] = { 0, TRUE, sCreditsText_Translator}; -static const struct CreditsEntry sCreditsEntry_TextEditor[] = { 0, TRUE, sCreditsText_TextEditor}; -static const struct CreditsEntry sCreditsEntry_NCLCoordinator[] = { 0, TRUE, sCreditsText_NCLCoordinator}; -static const struct CreditsEntry sCreditsEntry_GraphicDesigner[] = { 0, TRUE, sCreditsText_GraphicDesigner}; -static const struct CreditsEntry sCreditsEntry_NOAProductTesting[] = { 0, TRUE, sCreditsText_NOAProductTesting}; -static const struct CreditsEntry sCreditsEntry_HideyukiNakajima[] = { 0, FALSE, sCreditsText_HideyukiNakajima}; -static const struct CreditsEntry sCreditsEntry_HidenoriSaeki[] = { 0, FALSE, sCreditsText_HidenoriSaeki}; -static const struct CreditsEntry sCreditsEntry_YokoWatanabe[] = { 0, FALSE, sCreditsText_YokoWatanabe}; -static const struct CreditsEntry sCreditsEntry_SakaeKimura[] = { 0, FALSE, sCreditsText_SakaeKimura}; -static const struct CreditsEntry sCreditsEntry_ChiakiShinkai[] = { 0, FALSE, sCreditsText_ChiakiShinkai}; -static const struct CreditsEntry sCreditsEntry_SethMcMahill[] = { 0, FALSE, sCreditsText_SethMcMahill}; -static const struct CreditsEntry sCreditsEntry_NobOgasawara[] = { 0, FALSE, sCreditsText_NobOgasawara}; -static const struct CreditsEntry sCreditsEntry_TeresaLillygren[] = { 0, FALSE, sCreditsText_TeresaLillygren}; -static const struct CreditsEntry sCreditsEntry_KimikoNakamichi[] = { 0, FALSE, sCreditsText_KimikoNakamichi}; -static const struct CreditsEntry sCreditsEntry_SouichiYamamoto[] = { 0, FALSE, sCreditsText_SouichiYamamoto}; -static const struct CreditsEntry sCreditsEntry_YuichiroIto[] = { 0, FALSE, sCreditsText_YuichiroIto}; -static const struct CreditsEntry sCreditsEntry_ThomasHertzog[] = { 0, FALSE, sCreditsText_ThomasHertzog}; -static const struct CreditsEntry sCreditsEntry_MikaKurosawa[] = { 0, FALSE, sCreditsText_MikaKurosawa}; -static const struct CreditsEntry sCreditsEntry_NationalFederationBlind[] = { 0, FALSE, sCreditsText_NationalFederationBlind}; -static const struct CreditsEntry sCreditsEntry_PatriciaAMaurer[] = { 0, FALSE, sCreditsText_PatriciaAMaurer}; -static const struct CreditsEntry sCreditsEntry_EuropeanBlindUnion[] = { 0, FALSE, sCreditsText_EuropeanBlindUnion}; -static const struct CreditsEntry sCreditsEntry_AustralianBrailleAuthority[] = { 0, FALSE, sCreditsText_AustralianBrailleAuthority}; -static const struct CreditsEntry sCreditsEntry_RoyalNewZealandFederationBlind[] = { 0, FALSE, sCreditsText_RoyalNewZealandFederationBlind}; -static const struct CreditsEntry sCreditsEntry_MotoyasuTojima[] = { 0, FALSE, sCreditsText_MotoyasuTojima}; -static const struct CreditsEntry sCreditsEntry_NicolaPrattBarlow[] = { 0, FALSE, sCreditsText_NicolaPrattBarlow}; -static const struct CreditsEntry sCreditsEntry_ShellieDow[] = { 0, FALSE, sCreditsText_ShellieDow}; -static const struct CreditsEntry sCreditsEntry_ErikJohnson[] = { 0, FALSE, sCreditsText_ErikJohnson}; +static const struct CreditsEntry sCreditsEntry_EmptyString = { 0, FALSE, sCreditsText_EmptyString}; +static const struct CreditsEntry sCreditsEntry_PkmnEmeraldVersion = { 7, TRUE, sCreditsText_PkmnEmeraldVersion}; +static const struct CreditsEntry sCreditsEntry_Credits = {11, TRUE, sCreditsText_Credits}; +static const struct CreditsEntry sCreditsEntry_ExecutiveDirector = { 8, TRUE, sCreditsText_ExecutiveDirector}; +static const struct CreditsEntry sCreditsEntry_Director = {12, TRUE, sCreditsText_Director}; +static const struct CreditsEntry sCreditsEntry_ArtDirector = {10, TRUE, sCreditsText_ArtDirector}; +static const struct CreditsEntry sCreditsEntry_BattleDirector = {10, TRUE, sCreditsText_BattleDirector}; +static const struct CreditsEntry sCreditsEntry_MainProgrammer = {10, TRUE, sCreditsText_MainProgrammer}; +static const struct CreditsEntry sCreditsEntry_BattleSystemPgrms = { 8, TRUE, sCreditsText_BattleSystemPgrms}; +static const struct CreditsEntry sCreditsEntry_FieldSystemPgrms = { 7, TRUE, sCreditsText_FieldSystemPgrms}; +static const struct CreditsEntry sCreditsEntry_Programmers = {12, TRUE, sCreditsText_Programmers}; +static const struct CreditsEntry sCreditsEntry_MainGraphicDesigner = { 7, TRUE, sCreditsText_MainGraphicDesigner}; +static const struct CreditsEntry sCreditsEntry_GraphicDesigners = { 9, TRUE, sCreditsText_GraphicDesigners}; +static const struct CreditsEntry sCreditsEntry_PkmnDesigners = {10, TRUE, sCreditsText_PkmnDesigners}; +static const struct CreditsEntry sCreditsEntry_MusicComposition = {13, TRUE, sCreditsText_MusicComposition}; +static const struct CreditsEntry sCreditsEntry_SoundEffectsAndPkmnVoices = { 4, TRUE, sCreditsText_SoundEffectsAndPkmnVoices}; +static const struct CreditsEntry sCreditsEntry_GameDesigners = {11, TRUE, sCreditsText_GameDesigners}; +static const struct CreditsEntry sCreditsEntry_ScenarioPlot = {11, TRUE, sCreditsText_ScenarioPlot}; +static const struct CreditsEntry sCreditsEntry_Scenario = {13, TRUE, sCreditsText_Scenario}; +static const struct CreditsEntry sCreditsEntry_ScriptDesigners = {10, TRUE, sCreditsText_ScriptDesigners}; +static const struct CreditsEntry sCreditsEntry_MapDesigners = {11, TRUE, sCreditsText_MapDesigners}; +static const struct CreditsEntry sCreditsEntry_MapDataDesigners = { 9, TRUE, sCreditsText_MapDataDesigners}; +static const struct CreditsEntry sCreditsEntry_ParametricDesigners = { 9, TRUE, sCreditsText_ParametricDesigners}; +static const struct CreditsEntry sCreditsEntry_PokedexText = {11, TRUE, sCreditsText_PokedexText}; +static const struct CreditsEntry sCreditsEntry_EnvAndToolPgrms = { 6, TRUE, sCreditsText_EnvAndToolPgrms}; +static const struct CreditsEntry sCreditsEntry_NCLProductTesting = {11, TRUE, sCreditsText_NCLProductTesting}; +static const struct CreditsEntry sCreditsEntry_SpecialThanks = {10, TRUE, sCreditsText_SpecialThanks}; +static const struct CreditsEntry sCreditsEntry_Coordinators = {11, TRUE, sCreditsText_Coordinators}; +static const struct CreditsEntry sCreditsEntry_Producers = {11, TRUE, sCreditsText_Producers}; +static const struct CreditsEntry sCreditsEntry_ExecProducers = { 7, TRUE, sCreditsText_ExecProducers}; +static const struct CreditsEntry sCreditsEntry_InfoSupervisors = {10, TRUE, sCreditsText_InfoSupervisors}; +static const struct CreditsEntry sCreditsEntry_TaskManagers = { 8, TRUE, sCreditsText_TaskManagers}; +static const struct CreditsEntry sCreditsEntry_BrailleCodeCheck = {10, TRUE, sCreditsText_BrailleCodeCheck}; +static const struct CreditsEntry sCreditsEntry_WorldDirector = {10, TRUE, sCreditsText_WorldDirector}; +static const struct CreditsEntry sCreditsEntry_BattleFrontierData = { 8, TRUE, sCreditsText_BattleFrontierData}; +static const struct CreditsEntry sCreditsEntry_SupportProgrammers = {10, TRUE, sCreditsText_SupportProgrammers}; +static const struct CreditsEntry sCreditsEntry_Artwork = {12, TRUE, sCreditsText_Artwork}; +static const struct CreditsEntry sCreditsEntry_LeadProgrammer = {10, TRUE, sCreditsText_LeadProgrammer}; +static const struct CreditsEntry sCreditsEntry_LeadGraphicArtist = { 9, TRUE, sCreditsText_LeadGraphicArtist}; +static const struct CreditsEntry sCreditsEntry_SatoshiTajiri = {11, FALSE, sCreditsText_SatoshiTajiri}; +static const struct CreditsEntry sCreditsEntry_JunichiMasuda = {11, FALSE, sCreditsText_JunichiMasuda}; +static const struct CreditsEntry sCreditsEntry_KenSugimori = {11, FALSE, sCreditsText_KenSugimori}; +static const struct CreditsEntry sCreditsEntry_ShigekiMorimoto = {11, FALSE, sCreditsText_ShigekiMorimoto}; +static const struct CreditsEntry sCreditsEntry_TetsuyaWatanabe = {11, FALSE, sCreditsText_TetsuyaWatanabe}; +static const struct CreditsEntry sCreditsEntry_HisashiSogabe = {11, FALSE, sCreditsText_HisashiSogabe}; +static const struct CreditsEntry sCreditsEntry_SosukeTamada = {11, FALSE, sCreditsText_SosukeTamada}; +static const struct CreditsEntry sCreditsEntry_AkitoMori = {11, FALSE, sCreditsText_AkitoMori}; +static const struct CreditsEntry sCreditsEntry_KeitaKagaya = {11, FALSE, sCreditsText_KeitaKagaya}; +static const struct CreditsEntry sCreditsEntry_YoshinoriMatsuda = {11, FALSE, sCreditsText_YoshinoriMatsuda}; +static const struct CreditsEntry sCreditsEntry_HiroyukiNakamura = {11, FALSE, sCreditsText_HiroyukiNakamura}; +static const struct CreditsEntry sCreditsEntry_MasaoTaya = {11, FALSE, sCreditsText_MasaoTaya}; +static const struct CreditsEntry sCreditsEntry_SatoshiNohara = {11, FALSE, sCreditsText_SatoshiNohara}; +static const struct CreditsEntry sCreditsEntry_TomomichiOhta = {11, FALSE, sCreditsText_TomomichiOhta}; +static const struct CreditsEntry sCreditsEntry_MiyukiIwasawa = {11, FALSE, sCreditsText_MiyukiIwasawa}; +static const struct CreditsEntry sCreditsEntry_TakenoriOhta = {11, FALSE, sCreditsText_TakenoriOhta}; +static const struct CreditsEntry sCreditsEntry_HironobuYoshida = {11, FALSE, sCreditsText_HironobuYoshida}; +static const struct CreditsEntry sCreditsEntry_MotofumiFujiwara = {11, FALSE, sCreditsText_MotofumiFujiwara}; +static const struct CreditsEntry sCreditsEntry_SatoshiOhta = {11, FALSE, sCreditsText_SatoshiOhta}; +static const struct CreditsEntry sCreditsEntry_AsukaIwashita = {11, FALSE, sCreditsText_AsukaIwashita}; +static const struct CreditsEntry sCreditsEntry_AimiTomita = {11, FALSE, sCreditsText_AimiTomita}; +static const struct CreditsEntry sCreditsEntry_TakaoUnno = {11, FALSE, sCreditsText_TakaoUnno}; +static const struct CreditsEntry sCreditsEntry_KanakoEo = {11, FALSE, sCreditsText_KanakoEo}; +static const struct CreditsEntry sCreditsEntry_JunOkutani = {11, FALSE, sCreditsText_JunOkutani}; +static const struct CreditsEntry sCreditsEntry_AtsukoNishida = {11, FALSE, sCreditsText_AtsukoNishida}; +static const struct CreditsEntry sCreditsEntry_MuneoSaito = {11, FALSE, sCreditsText_MuneoSaito}; +static const struct CreditsEntry sCreditsEntry_RenaYoshikawa = {11, FALSE, sCreditsText_RenaYoshikawa}; +static const struct CreditsEntry sCreditsEntry_GoIchinose = {11, FALSE, sCreditsText_GoIchinose}; +static const struct CreditsEntry sCreditsEntry_MorikazuAoki = {11, FALSE, sCreditsText_MorikazuAoki}; +static const struct CreditsEntry sCreditsEntry_KojiNishino = {11, FALSE, sCreditsText_KojiNishino}; +static const struct CreditsEntry sCreditsEntry_KenjiMatsushima = {11, FALSE, sCreditsText_KenjiMatsushima}; +static const struct CreditsEntry sCreditsEntry_TetsujiOhta = {11, FALSE, sCreditsText_TetsujiOhta}; +static const struct CreditsEntry sCreditsEntry_HitomiSato = {11, FALSE, sCreditsText_HitomiSato}; +static const struct CreditsEntry sCreditsEntry_TakeshiKawachimaru = {11, FALSE, sCreditsText_TakeshiKawachimaru}; +static const struct CreditsEntry sCreditsEntry_TeruyukiShimoyamada = {11, FALSE, sCreditsText_TeruyukiShimoyamada}; +static const struct CreditsEntry sCreditsEntry_ShigeruOhmori = {11, FALSE, sCreditsText_ShigeruOhmori}; +static const struct CreditsEntry sCreditsEntry_TadashiTakahashi = {11, FALSE, sCreditsText_TadashiTakahashi}; +static const struct CreditsEntry sCreditsEntry_ToshinobuMatsumiya = {11, FALSE, sCreditsText_ToshinobuMatsumiya}; +static const struct CreditsEntry sCreditsEntry_AkihitoTomisawa = {11, FALSE, sCreditsText_AkihitoTomisawa}; +static const struct CreditsEntry sCreditsEntry_HirokiEnomoto = {11, FALSE, sCreditsText_HirokiEnomoto}; +static const struct CreditsEntry sCreditsEntry_KazuyukiTerada = {11, FALSE, sCreditsText_KazuyukiTerada}; +static const struct CreditsEntry sCreditsEntry_YuriSakurai = {11, FALSE, sCreditsText_YuriSakurai}; +static const struct CreditsEntry sCreditsEntry_HiromiSagawa = {11, FALSE, sCreditsText_HiromiSagawa}; +static const struct CreditsEntry sCreditsEntry_KenjiTominaga = {11, FALSE, sCreditsText_KenjiTominaga}; +static const struct CreditsEntry sCreditsEntry_YoshioTajiri = {11, FALSE, sCreditsText_YoshioTajiri}; +static const struct CreditsEntry sCreditsEntry_TeikoSasaki = {11, FALSE, sCreditsText_TeikoSasaki}; +static const struct CreditsEntry sCreditsEntry_SachikoHamano = {11, FALSE, sCreditsText_SachikoHamano}; +static const struct CreditsEntry sCreditsEntry_ChieMatsumiya = {11, FALSE, sCreditsText_ChieMatsumiya}; +static const struct CreditsEntry sCreditsEntry_AkikoShinozaki = {11, FALSE, sCreditsText_AkikoShinozaki}; +static const struct CreditsEntry sCreditsEntry_AstukoFujii = {11, FALSE, sCreditsText_AstukoFujii}; +static const struct CreditsEntry sCreditsEntry_NozomuSaito = {11, FALSE, sCreditsText_NozomuSaito}; +static const struct CreditsEntry sCreditsEntry_KenkichiToyama = {11, FALSE, sCreditsText_KenkichiToyama}; +static const struct CreditsEntry sCreditsEntry_SuguruNakatsui = {11, FALSE, sCreditsText_SuguruNakatsui}; +static const struct CreditsEntry sCreditsEntry_YumiFunasaka = {11, FALSE, sCreditsText_YumiFunasaka}; +static const struct CreditsEntry sCreditsEntry_NaokoYanase = {11, FALSE, sCreditsText_NaokoYanase}; +static const struct CreditsEntry sCreditsEntry_NCLSuperMarioClub = {11, FALSE, sCreditsText_NCLSuperMarioClub}; +static const struct CreditsEntry sCreditsEntry_AtsushiTada = {11, FALSE, sCreditsText_AtsushiTada}; +static const struct CreditsEntry sCreditsEntry_TakahiroOhnishi = {11, FALSE, sCreditsText_TakahiroOhnishi}; +static const struct CreditsEntry sCreditsEntry_NorihideOkamura = {11, FALSE, sCreditsText_NorihideOkamura}; +static const struct CreditsEntry sCreditsEntry_HiroNakamura = {11, FALSE, sCreditsText_HiroNakamura}; +static const struct CreditsEntry sCreditsEntry_HiroyukiUesugi = {11, FALSE, sCreditsText_HiroyukiUesugi}; +static const struct CreditsEntry sCreditsEntry_TerukiMurakawa = {11, FALSE, sCreditsText_TerukiMurakawa}; +static const struct CreditsEntry sCreditsEntry_AkiraKinashi = {11, FALSE, sCreditsText_AkiraKinashi}; +static const struct CreditsEntry sCreditsEntry_MichikoTakizawa = {11, FALSE, sCreditsText_MichikoTakizawa}; +static const struct CreditsEntry sCreditsEntry_MakikoTakada = {11, FALSE, sCreditsText_MakikoTakada}; +static const struct CreditsEntry sCreditsEntry_TakanaoKondo = {11, FALSE, sCreditsText_TakanaoKondo}; +static const struct CreditsEntry sCreditsEntry_AiMashima = {11, FALSE, sCreditsText_AiMashima}; +static const struct CreditsEntry sCreditsEntry_GakujiNomoto = {11, FALSE, sCreditsText_GakujiNomoto}; +static const struct CreditsEntry sCreditsEntry_TakehiroIzushi = {11, FALSE, sCreditsText_TakehiroIzushi}; +static const struct CreditsEntry sCreditsEntry_HitoshiYamagami = {11, FALSE, sCreditsText_HitoshiYamagami}; +static const struct CreditsEntry sCreditsEntry_KyokoWatanabe = {11, FALSE, sCreditsText_KyokoWatanabe}; +static const struct CreditsEntry sCreditsEntry_TakaoNakano = {11, FALSE, sCreditsText_TakaoNakano}; +static const struct CreditsEntry sCreditsEntry_HiroyukiJinnai = {11, FALSE, sCreditsText_HiroyukiJinnai}; +static const struct CreditsEntry sCreditsEntry_HiroakiTsuru = {11, FALSE, sCreditsText_HiroakiTsuru}; +static const struct CreditsEntry sCreditsEntry_TsunekazIshihara = {11, FALSE, sCreditsText_TsunekazIshihara}; +static const struct CreditsEntry sCreditsEntry_SatoruIwata = {11, FALSE, sCreditsText_SatoruIwata}; +static const struct CreditsEntry sCreditsEntry_KazuyaSuyama = {11, FALSE, sCreditsText_KazuyaSuyama}; +static const struct CreditsEntry sCreditsEntry_SatoshiMitsuhara = {11, FALSE, sCreditsText_SatoshiMitsuhara}; +static const struct CreditsEntry sCreditsEntry_JapanBrailleLibrary = { 9, FALSE, sCreditsText_JapanBrailleLibrary}; +static const struct CreditsEntry sCreditsEntry_TomotakaKomura = {11, FALSE, sCreditsText_TomotakaKomura}; +static const struct CreditsEntry sCreditsEntry_MikikoOhhashi = {11, FALSE, sCreditsText_MikikoOhhashi}; +static const struct CreditsEntry sCreditsEntry_DaisukeHoshino = {11, FALSE, sCreditsText_DaisukeHoshino}; +static const struct CreditsEntry sCreditsEntry_KenjiroIto = {11, FALSE, sCreditsText_KenjiroIto}; +static const struct CreditsEntry sCreditsEntry_RuiKawaguchi = {11, FALSE, sCreditsText_RuiKawaguchi}; +static const struct CreditsEntry sCreditsEntry_ShunsukeKohori = {11, FALSE, sCreditsText_ShunsukeKohori}; +static const struct CreditsEntry sCreditsEntry_SachikoNakamichi = {11, FALSE, sCreditsText_SachikoNakamichi}; +static const struct CreditsEntry sCreditsEntry_FujikoNomura = {11, FALSE, sCreditsText_FujikoNomura}; +static const struct CreditsEntry sCreditsEntry_KazukiYoshihara = {11, FALSE, sCreditsText_KazukiYoshihara}; +static const struct CreditsEntry sCreditsEntry_RetsujiNomoto = {11, FALSE, sCreditsText_RetsujiNomoto}; +static const struct CreditsEntry sCreditsEntry_AzusaTajima = {11, FALSE, sCreditsText_AzusaTajima}; +static const struct CreditsEntry sCreditsEntry_ShusakuEgami = {11, FALSE, sCreditsText_ShusakuEgami}; +static const struct CreditsEntry sCreditsEntry_PackageAndManual = { 0, TRUE, sCreditsText_PackageAndManual}; +static const struct CreditsEntry sCreditsEntry_EnglishVersion = { 0, TRUE, sCreditsText_EnglishVersion}; +static const struct CreditsEntry sCreditsEntry_Translator = { 0, TRUE, sCreditsText_Translator}; +static const struct CreditsEntry sCreditsEntry_TextEditor = { 0, TRUE, sCreditsText_TextEditor}; +static const struct CreditsEntry sCreditsEntry_NCLCoordinator = { 0, TRUE, sCreditsText_NCLCoordinator}; +static const struct CreditsEntry sCreditsEntry_GraphicDesigner = { 0, TRUE, sCreditsText_GraphicDesigner}; +static const struct CreditsEntry sCreditsEntry_NOAProductTesting = { 0, TRUE, sCreditsText_NOAProductTesting}; +static const struct CreditsEntry sCreditsEntry_HideyukiNakajima = { 0, FALSE, sCreditsText_HideyukiNakajima}; +static const struct CreditsEntry sCreditsEntry_HidenoriSaeki = { 0, FALSE, sCreditsText_HidenoriSaeki}; +static const struct CreditsEntry sCreditsEntry_YokoWatanabe = { 0, FALSE, sCreditsText_YokoWatanabe}; +static const struct CreditsEntry sCreditsEntry_SakaeKimura = { 0, FALSE, sCreditsText_SakaeKimura}; +static const struct CreditsEntry sCreditsEntry_ChiakiShinkai = { 0, FALSE, sCreditsText_ChiakiShinkai}; +static const struct CreditsEntry sCreditsEntry_SethMcMahill = { 0, FALSE, sCreditsText_SethMcMahill}; +static const struct CreditsEntry sCreditsEntry_NobOgasawara = { 0, FALSE, sCreditsText_NobOgasawara}; +static const struct CreditsEntry sCreditsEntry_TeresaLillygren = { 0, FALSE, sCreditsText_TeresaLillygren}; +static const struct CreditsEntry sCreditsEntry_KimikoNakamichi = { 0, FALSE, sCreditsText_KimikoNakamichi}; +static const struct CreditsEntry sCreditsEntry_SouichiYamamoto = { 0, FALSE, sCreditsText_SouichiYamamoto}; +static const struct CreditsEntry sCreditsEntry_YuichiroIto = { 0, FALSE, sCreditsText_YuichiroIto}; +static const struct CreditsEntry sCreditsEntry_ThomasHertzog = { 0, FALSE, sCreditsText_ThomasHertzog}; +static const struct CreditsEntry sCreditsEntry_MikaKurosawa = { 0, FALSE, sCreditsText_MikaKurosawa}; +static const struct CreditsEntry sCreditsEntry_NationalFederationBlind = { 0, FALSE, sCreditsText_NationalFederationBlind}; +static const struct CreditsEntry sCreditsEntry_PatriciaAMaurer = { 0, FALSE, sCreditsText_PatriciaAMaurer}; +static const struct CreditsEntry sCreditsEntry_EuropeanBlindUnion = { 0, FALSE, sCreditsText_EuropeanBlindUnion}; +static const struct CreditsEntry sCreditsEntry_AustralianBrailleAuthority = { 0, FALSE, sCreditsText_AustralianBrailleAuthority}; +static const struct CreditsEntry sCreditsEntry_RoyalNewZealandFederationBlind = { 0, FALSE, sCreditsText_RoyalNewZealandFederationBlind}; +static const struct CreditsEntry sCreditsEntry_MotoyasuTojima = { 0, FALSE, sCreditsText_MotoyasuTojima}; +static const struct CreditsEntry sCreditsEntry_NicolaPrattBarlow = { 0, FALSE, sCreditsText_NicolaPrattBarlow}; +static const struct CreditsEntry sCreditsEntry_ShellieDow = { 0, FALSE, sCreditsText_ShellieDow}; +static const struct CreditsEntry sCreditsEntry_ErikJohnson = { 0, FALSE, sCreditsText_ErikJohnson}; -#define _ sCreditsEntry_EmptyString +#define _ &sCreditsEntry_EmptyString static const struct CreditsEntry *const sCreditsEntryPointerTable[PAGE_COUNT][ENTRIES_PER_PAGE] = { [PAGE_TITLE] = { _, - sCreditsEntry_PkmnEmeraldVersion, - sCreditsEntry_Credits, + &sCreditsEntry_PkmnEmeraldVersion, + &sCreditsEntry_Credits, _, _ }, [PAGE_DIRECTOR] = { _, - sCreditsEntry_Director, - sCreditsEntry_ShigekiMorimoto, + &sCreditsEntry_Director, + &sCreditsEntry_ShigekiMorimoto, _, _, }, [PAGE_ART_DIRECTOR] = { _, - sCreditsEntry_ArtDirector, - sCreditsEntry_KenSugimori, + &sCreditsEntry_ArtDirector, + &sCreditsEntry_KenSugimori, _, _, }, [PAGE_WORLD_DIRECTOR] = { _, - sCreditsEntry_WorldDirector, - sCreditsEntry_JunichiMasuda, + &sCreditsEntry_WorldDirector, + &sCreditsEntry_JunichiMasuda, _, _, }, [PAGE_LEAD_PROGRAMMER] = { - sCreditsEntry_LeadProgrammer, - sCreditsEntry_HisashiSogabe, - sCreditsEntry_LeadGraphicArtist, - sCreditsEntry_MotofumiFujiwara, + &sCreditsEntry_LeadProgrammer, + &sCreditsEntry_HisashiSogabe, + &sCreditsEntry_LeadGraphicArtist, + &sCreditsEntry_MotofumiFujiwara, _, }, [PAGE_PROGRAMMERS_1] = { - sCreditsEntry_Programmers, - sCreditsEntry_HisashiSogabe, - sCreditsEntry_TomomichiOhta, - sCreditsEntry_NozomuSaito, - sCreditsEntry_EmptyString, + &sCreditsEntry_Programmers, + &sCreditsEntry_HisashiSogabe, + &sCreditsEntry_TomomichiOhta, + &sCreditsEntry_NozomuSaito, + _, }, [PAGE_PROGRAMMERS_2] = { - sCreditsEntry_Programmers, - sCreditsEntry_AkitoMori, - sCreditsEntry_HiroyukiNakamura, - sCreditsEntry_MasaoTaya, + &sCreditsEntry_Programmers, + &sCreditsEntry_AkitoMori, + &sCreditsEntry_HiroyukiNakamura, + &sCreditsEntry_MasaoTaya, _, }, [PAGE_PROGRAMMERS_3] = { - sCreditsEntry_Programmers, - sCreditsEntry_SatoshiNohara, - sCreditsEntry_MiyukiIwasawa, - sCreditsEntry_YoshinoriMatsuda, - sCreditsEntry_KeitaKagaya, + &sCreditsEntry_Programmers, + &sCreditsEntry_SatoshiNohara, + &sCreditsEntry_MiyukiIwasawa, + &sCreditsEntry_YoshinoriMatsuda, + &sCreditsEntry_KeitaKagaya, }, [PAGE_PROGRAMMERS_4] = { - sCreditsEntry_Programmers, - sCreditsEntry_TetsuyaWatanabe, - sCreditsEntry_SosukeTamada, - sCreditsEntry_TakenoriOhta, + &sCreditsEntry_Programmers, + &sCreditsEntry_TetsuyaWatanabe, + &sCreditsEntry_SosukeTamada, + &sCreditsEntry_TakenoriOhta, _, }, [PAGE_GRAPHIC_DESIGNERS_1] = { _, - sCreditsEntry_GraphicDesigners, - sCreditsEntry_MotofumiFujiwara, - sCreditsEntry_SatoshiOhta, + &sCreditsEntry_GraphicDesigners, + &sCreditsEntry_MotofumiFujiwara, + &sCreditsEntry_SatoshiOhta, _, }, [PAGE_GRAPHIC_DESIGNERS_2] = { - sCreditsEntry_GraphicDesigners, - sCreditsEntry_KenkichiToyama, - sCreditsEntry_AsukaIwashita, - sCreditsEntry_TakaoUnno, + &sCreditsEntry_GraphicDesigners, + &sCreditsEntry_KenkichiToyama, + &sCreditsEntry_AsukaIwashita, + &sCreditsEntry_TakaoUnno, _, }, [PAGE_GRAPHIC_DESIGNERS_3] = { - sCreditsEntry_GraphicDesigners, - sCreditsEntry_KenSugimori, - sCreditsEntry_HironobuYoshida, - sCreditsEntry_AimiTomita, - sCreditsEntry_KanakoEo, + &sCreditsEntry_GraphicDesigners, + &sCreditsEntry_KenSugimori, + &sCreditsEntry_HironobuYoshida, + &sCreditsEntry_AimiTomita, + &sCreditsEntry_KanakoEo, }, [PAGE_MUSIC_COMPOSITION] = { - sCreditsEntry_MusicComposition, - sCreditsEntry_GoIchinose, - sCreditsEntry_JunichiMasuda, - sCreditsEntry_MorikazuAoki, - sCreditsEntry_HitomiSato, + &sCreditsEntry_MusicComposition, + &sCreditsEntry_GoIchinose, + &sCreditsEntry_JunichiMasuda, + &sCreditsEntry_MorikazuAoki, + &sCreditsEntry_HitomiSato, }, [PAGE_SOUND_EFFECTS] = { _, - sCreditsEntry_SoundEffectsAndPkmnVoices, - sCreditsEntry_GoIchinose, - sCreditsEntry_MorikazuAoki, + &sCreditsEntry_SoundEffectsAndPkmnVoices, + &sCreditsEntry_GoIchinose, + &sCreditsEntry_MorikazuAoki, _, }, [PAGE_GAME_DESIGNERS_1] = { - sCreditsEntry_GameDesigners, - sCreditsEntry_ShigekiMorimoto, - sCreditsEntry_TeruyukiShimoyamada, - sCreditsEntry_TakeshiKawachimaru, - sCreditsEntry_AkihitoTomisawa, + &sCreditsEntry_GameDesigners, + &sCreditsEntry_ShigekiMorimoto, + &sCreditsEntry_TeruyukiShimoyamada, + &sCreditsEntry_TakeshiKawachimaru, + &sCreditsEntry_AkihitoTomisawa, }, [PAGE_GAME_DESIGNERS_2] = { - sCreditsEntry_GameDesigners, - sCreditsEntry_SuguruNakatsui, - sCreditsEntry_TetsujiOhta, - sCreditsEntry_HitomiSato, - sCreditsEntry_KenjiMatsushima, + &sCreditsEntry_GameDesigners, + &sCreditsEntry_SuguruNakatsui, + &sCreditsEntry_TetsujiOhta, + &sCreditsEntry_HitomiSato, + &sCreditsEntry_KenjiMatsushima, }, [PAGE_GAME_DESIGNERS_3] = { - sCreditsEntry_GameDesigners, - sCreditsEntry_JunichiMasuda, - sCreditsEntry_KojiNishino, - sCreditsEntry_ShigeruOhmori, - sCreditsEntry_TadashiTakahashi, + &sCreditsEntry_GameDesigners, + &sCreditsEntry_JunichiMasuda, + &sCreditsEntry_KojiNishino, + &sCreditsEntry_ShigeruOhmori, + &sCreditsEntry_TadashiTakahashi, }, [PAGE_SCENARIO_PLOT] = { - sCreditsEntry_ScenarioPlot, - sCreditsEntry_AkihitoTomisawa, - sCreditsEntry_JunichiMasuda, - sCreditsEntry_KojiNishino, + &sCreditsEntry_ScenarioPlot, + &sCreditsEntry_AkihitoTomisawa, + &sCreditsEntry_JunichiMasuda, + &sCreditsEntry_KojiNishino, _, }, [PAGE_SCENARIO] = { - sCreditsEntry_Scenario, - sCreditsEntry_AkihitoTomisawa, - sCreditsEntry_HitomiSato, - sCreditsEntry_ToshinobuMatsumiya, + &sCreditsEntry_Scenario, + &sCreditsEntry_AkihitoTomisawa, + &sCreditsEntry_HitomiSato, + &sCreditsEntry_ToshinobuMatsumiya, _, }, [PAGE_SCRIPT_DESIGNERS] = { - sCreditsEntry_ScriptDesigners, - sCreditsEntry_TomomichiOhta, - sCreditsEntry_SatoshiNohara, + &sCreditsEntry_ScriptDesigners, + &sCreditsEntry_TomomichiOhta, + &sCreditsEntry_SatoshiNohara, _, _, }, [PAGE_MAP_DESIGNERS] = { - sCreditsEntry_MapDesigners, - sCreditsEntry_SuguruNakatsui, - sCreditsEntry_TeruyukiShimoyamada, - sCreditsEntry_ShigeruOhmori, - sCreditsEntry_TetsujiOhta, + &sCreditsEntry_MapDesigners, + &sCreditsEntry_SuguruNakatsui, + &sCreditsEntry_TeruyukiShimoyamada, + &sCreditsEntry_ShigeruOhmori, + &sCreditsEntry_TetsujiOhta, }, [PAGE_BATTLE_FRONTIER_DATA] = { _, - sCreditsEntry_BattleFrontierData, - sCreditsEntry_TetsujiOhta, + &sCreditsEntry_BattleFrontierData, + &sCreditsEntry_TetsujiOhta, _, _, }, [PAGE_PARAMETRIC_DESIGNERS] = { - sCreditsEntry_ParametricDesigners, - sCreditsEntry_TeruyukiShimoyamada, - sCreditsEntry_ShigekiMorimoto, - sCreditsEntry_TetsujiOhta, - sCreditsEntry_KojiNishino, + &sCreditsEntry_ParametricDesigners, + &sCreditsEntry_TeruyukiShimoyamada, + &sCreditsEntry_ShigekiMorimoto, + &sCreditsEntry_TetsujiOhta, + &sCreditsEntry_KojiNishino, }, [PAGE_POKEDEX_TEXT] = { _, - sCreditsEntry_PokedexText, - sCreditsEntry_KenjiMatsushima, + &sCreditsEntry_PokedexText, + &sCreditsEntry_KenjiMatsushima, _, _, }, [PAGE_ENVIRONMENT_AND_TOOL_PROGRAMS_1] = { - sCreditsEntry_EnvAndToolPgrms, - sCreditsEntry_HisashiSogabe, - sCreditsEntry_SosukeTamada, - sCreditsEntry_HiroyukiNakamura, - sCreditsEntry_AkitoMori, + &sCreditsEntry_EnvAndToolPgrms, + &sCreditsEntry_HisashiSogabe, + &sCreditsEntry_SosukeTamada, + &sCreditsEntry_HiroyukiNakamura, + &sCreditsEntry_AkitoMori, }, [PAGE_PKMN_DESIGNERS_1] = { - sCreditsEntry_PkmnDesigners, - sCreditsEntry_KenSugimori, - sCreditsEntry_MotofumiFujiwara, - sCreditsEntry_ShigekiMorimoto, + &sCreditsEntry_PkmnDesigners, + &sCreditsEntry_KenSugimori, + &sCreditsEntry_MotofumiFujiwara, + &sCreditsEntry_ShigekiMorimoto, _, }, [PAGE_PKMN_DESIGNERS_2] = { - sCreditsEntry_PkmnDesigners, - sCreditsEntry_HironobuYoshida, - sCreditsEntry_SatoshiOhta, - sCreditsEntry_AsukaIwashita, + &sCreditsEntry_PkmnDesigners, + &sCreditsEntry_HironobuYoshida, + &sCreditsEntry_SatoshiOhta, + &sCreditsEntry_AsukaIwashita, _, }, [PAGE_PKMN_DESIGNERS_3] = { - sCreditsEntry_PkmnDesigners, - sCreditsEntry_TakaoUnno, - sCreditsEntry_KanakoEo, - sCreditsEntry_AimiTomita, + &sCreditsEntry_PkmnDesigners, + &sCreditsEntry_TakaoUnno, + &sCreditsEntry_KanakoEo, + &sCreditsEntry_AimiTomita, _, }, [PAGE_PKMN_DESIGNERS_4] = { - sCreditsEntry_PkmnDesigners, - sCreditsEntry_AtsukoNishida, - sCreditsEntry_MuneoSaito, - sCreditsEntry_RenaYoshikawa, - sCreditsEntry_JunOkutani, + &sCreditsEntry_PkmnDesigners, + &sCreditsEntry_AtsukoNishida, + &sCreditsEntry_MuneoSaito, + &sCreditsEntry_RenaYoshikawa, + &sCreditsEntry_JunOkutani, }, [PAGE_SUPPORT_PROGRAMMERS] = { _, - sCreditsEntry_SupportProgrammers, - sCreditsEntry_SatoshiMitsuhara, - sCreditsEntry_DaisukeHoshino, + &sCreditsEntry_SupportProgrammers, + &sCreditsEntry_SatoshiMitsuhara, + &sCreditsEntry_DaisukeHoshino, _, }, [PAGE_NCL_PRODUCT_TESTING] = { _, - sCreditsEntry_NCLProductTesting, - sCreditsEntry_NCLSuperMarioClub, + &sCreditsEntry_NCLProductTesting, + &sCreditsEntry_NCLSuperMarioClub, _, _, }, [PAGE_PACKAGE_AND_MANUAL] = { _, - sCreditsEntry_PackageAndManual, - sCreditsEntry_KenSugimori, + &sCreditsEntry_PackageAndManual, + &sCreditsEntry_KenSugimori, _, _, }, [PAGE_SPECIAL_THANKS_1] = { _, - sCreditsEntry_SpecialThanks, - sCreditsEntry_KenjiTominaga, - sCreditsEntry_HirokiEnomoto, + &sCreditsEntry_SpecialThanks, + &sCreditsEntry_KenjiTominaga, + &sCreditsEntry_HirokiEnomoto, _, }, [PAGE_SPECIAL_THANKS_2] = { - sCreditsEntry_SpecialThanks, - sCreditsEntry_KazuyaSuyama, - sCreditsEntry_KenjiroIto, - sCreditsEntry_MichikoTakizawa, - sCreditsEntry_MakikoTakada, + &sCreditsEntry_SpecialThanks, + &sCreditsEntry_KazuyaSuyama, + &sCreditsEntry_KenjiroIto, + &sCreditsEntry_MichikoTakizawa, + &sCreditsEntry_MakikoTakada, }, [PAGE_SPECIAL_THANKS_3] = { - sCreditsEntry_SpecialThanks, - sCreditsEntry_MikikoOhhashi, - sCreditsEntry_TakanaoKondo, - sCreditsEntry_RuiKawaguchi, + &sCreditsEntry_SpecialThanks, + &sCreditsEntry_MikikoOhhashi, + &sCreditsEntry_TakanaoKondo, + &sCreditsEntry_RuiKawaguchi, _, }, [PAGE_SPECIAL_THANKS_4] = { - sCreditsEntry_SpecialThanks, - sCreditsEntry_TakahiroOhnishi, - sCreditsEntry_NorihideOkamura, - sCreditsEntry_ShunsukeKohori, + &sCreditsEntry_SpecialThanks, + &sCreditsEntry_TakahiroOhnishi, + &sCreditsEntry_NorihideOkamura, + &sCreditsEntry_ShunsukeKohori, _, }, [PAGE_INFORMATION_SUPERVISORS] = { - sCreditsEntry_InfoSupervisors, - sCreditsEntry_KazuyukiTerada, - sCreditsEntry_YuriSakurai, - sCreditsEntry_YumiFunasaka, - sCreditsEntry_NaokoYanase, + &sCreditsEntry_InfoSupervisors, + &sCreditsEntry_KazuyukiTerada, + &sCreditsEntry_YuriSakurai, + &sCreditsEntry_YumiFunasaka, + &sCreditsEntry_NaokoYanase, }, [PAGE_ARTWORK_1] = { _, - sCreditsEntry_Artwork, - sCreditsEntry_SachikoNakamichi, - sCreditsEntry_FujikoNomura, + &sCreditsEntry_Artwork, + &sCreditsEntry_SachikoNakamichi, + &sCreditsEntry_FujikoNomura, _, }, [PAGE_ARTWORK_2] = { _, - sCreditsEntry_Artwork, - sCreditsEntry_HideyukiNakajima, - sCreditsEntry_HidenoriSaeki, + &sCreditsEntry_Artwork, + &sCreditsEntry_HideyukiNakajima, + &sCreditsEntry_HidenoriSaeki, _, }, [PAGE_ARTWORK_3] = { - sCreditsEntry_Artwork, - sCreditsEntry_YokoWatanabe, - sCreditsEntry_SakaeKimura, - sCreditsEntry_ChiakiShinkai, + &sCreditsEntry_Artwork, + &sCreditsEntry_YokoWatanabe, + &sCreditsEntry_SakaeKimura, + &sCreditsEntry_ChiakiShinkai, _, }, [PAGE_COORDINATORS] = { - sCreditsEntry_Coordinators, - sCreditsEntry_KazukiYoshihara, - sCreditsEntry_AkiraKinashi, - sCreditsEntry_RetsujiNomoto, + &sCreditsEntry_Coordinators, + &sCreditsEntry_KazukiYoshihara, + &sCreditsEntry_AkiraKinashi, + &sCreditsEntry_RetsujiNomoto, _, }, [PAGE_ENGLISH_VERSION] = { _, - sCreditsEntry_EnglishVersion, - sCreditsEntry_HiroNakamura, - sCreditsEntry_SethMcMahill, + &sCreditsEntry_EnglishVersion, + &sCreditsEntry_HiroNakamura, + &sCreditsEntry_SethMcMahill, _, }, [PAGE_TRANSLATOR] = { _, - sCreditsEntry_Translator, - sCreditsEntry_NobOgasawara, + &sCreditsEntry_Translator, + &sCreditsEntry_NobOgasawara, _, _, }, [PAGE_TEXT_EDITOR] = { _, - sCreditsEntry_TextEditor, - sCreditsEntry_TeresaLillygren, + &sCreditsEntry_TextEditor, + &sCreditsEntry_TeresaLillygren, _, _, }, [PAGE_NCL_COORDINATOR] = { _, - sCreditsEntry_NCLCoordinator, - sCreditsEntry_KimikoNakamichi, + &sCreditsEntry_NCLCoordinator, + &sCreditsEntry_KimikoNakamichi, _, _, }, [PAGE_PROGRAMMERS_5] = { - sCreditsEntry_Programmers, - sCreditsEntry_TerukiMurakawa, - sCreditsEntry_SouichiYamamoto, - sCreditsEntry_YuichiroIto, - sCreditsEntry_AkiraKinashi, + &sCreditsEntry_Programmers, + &sCreditsEntry_TerukiMurakawa, + &sCreditsEntry_SouichiYamamoto, + &sCreditsEntry_YuichiroIto, + &sCreditsEntry_AkiraKinashi, }, [PAGE_GRAPHIC_DESIGNER] = { _, - sCreditsEntry_GraphicDesigner, - sCreditsEntry_AkiraKinashi, + &sCreditsEntry_GraphicDesigner, + &sCreditsEntry_AkiraKinashi, _, _, }, [PAGE_ENVIRONMENT_AND_TOOL_PROGRAMS_2] = { - sCreditsEntry_EnvAndToolPgrms, - sCreditsEntry_TerukiMurakawa, - sCreditsEntry_SouichiYamamoto, - sCreditsEntry_KimikoNakamichi, + &sCreditsEntry_EnvAndToolPgrms, + &sCreditsEntry_TerukiMurakawa, + &sCreditsEntry_SouichiYamamoto, + &sCreditsEntry_KimikoNakamichi, _, }, [PAGE_NOA_TESTING] = { - sCreditsEntry_NOAProductTesting, - sCreditsEntry_ThomasHertzog, - sCreditsEntry_ErikJohnson, - sCreditsEntry_MikaKurosawa, + &sCreditsEntry_NOAProductTesting, + &sCreditsEntry_ThomasHertzog, + &sCreditsEntry_ErikJohnson, + &sCreditsEntry_MikaKurosawa, _, }, [PAGE_BRAILLE_CODE_CHECK_1] = { - sCreditsEntry_BrailleCodeCheck, - sCreditsEntry_NationalFederationBlind, - sCreditsEntry_PatriciaAMaurer, - sCreditsEntry_JapanBrailleLibrary, - sCreditsEntry_EuropeanBlindUnion, + &sCreditsEntry_BrailleCodeCheck, + &sCreditsEntry_NationalFederationBlind, + &sCreditsEntry_PatriciaAMaurer, + &sCreditsEntry_JapanBrailleLibrary, + &sCreditsEntry_EuropeanBlindUnion, }, [PAGE_BRAILLE_CODE_CHECK_2] = { _, - sCreditsEntry_BrailleCodeCheck, - sCreditsEntry_AustralianBrailleAuthority, - sCreditsEntry_RoyalNewZealandFederationBlind, + &sCreditsEntry_BrailleCodeCheck, + &sCreditsEntry_AustralianBrailleAuthority, + &sCreditsEntry_RoyalNewZealandFederationBlind, _, }, [PAGE_SPECIAL_THANKS_5] = { - sCreditsEntry_SpecialThanks, - sCreditsEntry_HiroyukiUesugi, - sCreditsEntry_MotoyasuTojima, - sCreditsEntry_NicolaPrattBarlow, - sCreditsEntry_ShellieDow, + &sCreditsEntry_SpecialThanks, + &sCreditsEntry_HiroyukiUesugi, + &sCreditsEntry_MotoyasuTojima, + &sCreditsEntry_NicolaPrattBarlow, + &sCreditsEntry_ShellieDow, }, [PAGE_TASK_MANAGERS] = { _, - sCreditsEntry_TaskManagers, - sCreditsEntry_AzusaTajima, - sCreditsEntry_ShusakuEgami, + &sCreditsEntry_TaskManagers, + &sCreditsEntry_AzusaTajima, + &sCreditsEntry_ShusakuEgami, _, }, [PAGE_PRODUCERS] = { - sCreditsEntry_Producers, - sCreditsEntry_HiroyukiJinnai, - sCreditsEntry_HitoshiYamagami, - sCreditsEntry_GakujiNomoto, - sCreditsEntry_HiroakiTsuru, + &sCreditsEntry_Producers, + &sCreditsEntry_HiroyukiJinnai, + &sCreditsEntry_HitoshiYamagami, + &sCreditsEntry_GakujiNomoto, + &sCreditsEntry_HiroakiTsuru, }, [PAGE_EXECUTIVE_DIRECTOR] = { _, - sCreditsEntry_ExecutiveDirector, - sCreditsEntry_SatoshiTajiri, + &sCreditsEntry_ExecutiveDirector, + &sCreditsEntry_SatoshiTajiri, _, _, }, [PAGE_EXECUTIVE_PRODUCERS_1] = { _, - sCreditsEntry_ExecProducers, - sCreditsEntry_SatoruIwata, + &sCreditsEntry_ExecProducers, + &sCreditsEntry_SatoruIwata, _, _, }, [PAGE_EXECUTIVE_PRODUCERS_2] = { _, - sCreditsEntry_ExecProducers, - sCreditsEntry_TsunekazIshihara, + &sCreditsEntry_ExecProducers, + &sCreditsEntry_TsunekazIshihara, _, _, }, diff --git a/src/data/graphics/items.h b/src/data/graphics/items.h index 60cd7d5187..f273b6d3b0 100644 --- a/src/data/graphics/items.h +++ b/src/data/graphics/items.h @@ -654,6 +654,15 @@ const u32 gItemIconPalette_LinkingCord[] = INCBIN_U32("graphics/items/icon_palet const u32 gItemIcon_PeatBlock[] = INCBIN_U32("graphics/items/icons/peat_block.4bpp.lz"); const u32 gItemIconPalette_PeatBlock[] = INCBIN_U32("graphics/items/icon_palettes/peat_block.gbapal.lz"); +const u32 gItemIcon_SyrupyApple[] = INCBIN_U32("graphics/items/icons/syrupy_apple.4bpp.lz"); +const u32 gItemIconPalette_SyrupyApple[] = INCBIN_U32("graphics/items/icon_palettes/syrupy_apple.gbapal.lz"); + +const u32 gItemIcon_UnremarkableTeacup[] = INCBIN_U32("graphics/items/icons/unremarkable_teacup.4bpp.lz"); +const u32 gItemIconPalette_UnremarkableTeacup[] = INCBIN_U32("graphics/items/icon_palettes/unremarkable_teacup.gbapal.lz"); + +const u32 gItemIcon_MasterpieceTeacup[] = INCBIN_U32("graphics/items/icons/masterpiece_teacup.4bpp.lz"); +const u32 gItemIconPalette_MasterpieceTeacup[] = INCBIN_U32("graphics/items/icon_palettes/masterpiece_teacup.gbapal.lz"); + // Nectars const u32 gItemIcon_RedNectar[] = INCBIN_U32("graphics/items/icons/red_nectar.4bpp.lz"); @@ -1746,6 +1755,9 @@ const u32 gItemIconPalette_CatchingCharm[] = INCBIN_U32("graphics/items/icon_pal const u32 gItemIcon_ExpCharm[] = INCBIN_U32("graphics/items/icons/exp_charm.4bpp.lz"); const u32 gItemIconPalette_ExpCharm[] = INCBIN_U32("graphics/items/icon_palettes/exp_charm.gbapal.lz"); +const u32 gItemIcon_GlimmeringCharm[] = INCBIN_U32("graphics/items/icons/glimmering_charm.4bpp.lz"); +const u32 gItemIconPalette_GlimmeringCharm[] = INCBIN_U32("graphics/items/icon_palettes/glimmering_charm.gbapal.lz"); + // Form-changing Key Items const u32 gItemIcon_RotomCatalog[] = INCBIN_U32("graphics/items/icons/rotom_catalog.4bpp.lz"); @@ -1906,8 +1918,8 @@ const u32 gItemIconPalette_MagmaEmblem[] = INCBIN_U32("graphics/items/icon_palet const u32 gItemIcon_ContestPass[] = INCBIN_U32("graphics/items/icons/contest_pass.4bpp.lz"); const u32 gItemIconPalette_ContestPass[] = INCBIN_U32("graphics/items/icon_palettes/contest_pass.gbapal.lz"); -const u32 gItemIcon_OaksParcel[] = INCBIN_U32("graphics/items/icons/oaks_parcel.4bpp.lz"); -const u32 gItemIconPalette_OaksParcel[] = INCBIN_U32("graphics/items/icon_palettes/oaks_parcel.gbapal.lz"); +const u32 gItemIcon_Parcel[] = INCBIN_U32("graphics/items/icons/parcel.4bpp.lz"); +const u32 gItemIconPalette_Parcel[] = INCBIN_U32("graphics/items/icon_palettes/parcel.gbapal.lz"); const u32 gItemIcon_SecretKey[] = INCBIN_U32("graphics/items/icons/secret_key.4bpp.lz"); const u32 gItemIconPalette_SecretKey[] = INCBIN_U32("graphics/items/icon_palettes/secret_key.gbapal.lz"); @@ -2010,6 +2022,26 @@ const u32 gItemIconPalette_DragonTeraShard[] = INCBIN_U32("graphics/items/icon_p const u32 gItemIconPalette_SteelTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/steel_tera_shard.gbapal.lz"); const u32 gItemIconPalette_FairyTeraShard[] = INCBIN_U32("graphics/items/icon_palettes/fairy_tera_shard.gbapal.lz"); +// Mochi + +const u32 gItemIcon_Mochi[] = INCBIN_U32("graphics/items/icons/mochi.4bpp.lz"); +const u32 gItemIconPalette_HealthMochi[] = INCBIN_U32("graphics/items/icon_palettes/health_mochi.gbapal.lz"); +const u32 gItemIconPalette_MuscleMochi[] = INCBIN_U32("graphics/items/icon_palettes/muscle_mochi.gbapal.lz"); +const u32 gItemIconPalette_ResistMochi[] = INCBIN_U32("graphics/items/icon_palettes/resist_mochi.gbapal.lz"); +const u32 gItemIconPalette_GeniusMochi[] = INCBIN_U32("graphics/items/icon_palettes/genius_mochi.gbapal.lz"); +const u32 gItemIconPalette_CleverMochi[] = INCBIN_U32("graphics/items/icon_palettes/clever_mochi.gbapal.lz"); +const u32 gItemIconPalette_SwiftMochi[] = INCBIN_U32("graphics/items/icon_palettes/swift_mochi.gbapal.lz"); +const u32 gItemIconPalette_FreshStartMochi[] = INCBIN_U32("graphics/items/icon_palettes/fresh_start_mochi.gbapal.lz"); + +// Ogerpon masks + +const u32 gItemIcon_WellspringMask[] = INCBIN_U32("graphics/items/icons/wellspring_mask.4bpp.lz"); +const u32 gItemIconPalette_WellspringMask[] = INCBIN_U32("graphics/items/icon_palettes/wellspring_mask.gbapal.lz"); +const u32 gItemIcon_HearthflameMask[] = INCBIN_U32("graphics/items/icons/hearthflame_mask.4bpp.lz"); +const u32 gItemIconPalette_HearthflameMask[] = INCBIN_U32("graphics/items/icon_palettes/hearthflame_mask.gbapal.lz"); +const u32 gItemIcon_CornerstoneMask[] = INCBIN_U32("graphics/items/icons/cornerstone_mask.4bpp.lz"); +const u32 gItemIconPalette_CornerstoneMask[] = INCBIN_U32("graphics/items/icon_palettes/cornerstone_mask.gbapal.lz"); + // Misc. Items const u32 gItemIcon_AdamantCrystal[] = INCBIN_U32("graphics/items/icons/adamant_crystal.4bpp.lz"); @@ -2023,3 +2055,6 @@ const u32 gItemIconPalette_LustrousGlobe[] = INCBIN_U32("graphics/items/icon_pal const u32 gItemIcon_BerserkGene[] = INCBIN_U32("graphics/items/icons/berserk_gene.4bpp.lz"); const u32 gItemIconPalette_BerserkGene[] = INCBIN_U32("graphics/items/icon_palettes/berserk_gene.gbapal.lz"); + +const u32 gItemIcon_FairyFeather[] = INCBIN_U32("graphics/items/icons/fairy_feather.4bpp.lz"); +const u32 gItemIconPalette_FairyFeather[] = INCBIN_U32("graphics/items/icon_palettes/fairy_feather.gbapal.lz"); diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index 7c8afc0066..68dc952952 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -1,7174 +1,10912 @@ const u32 gMonFrontPic_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/question_mark/circled/anim_front.4bpp.lz"); -const u32 gMonFrontPic_DoubleQuestionMark[] = INCBIN_U32("graphics/pokemon/question_mark/double/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VenusaurF[] = INCBIN_U32("graphics/pokemon/venusaur/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/anim_front.4bpp.lz"); -const u32 gMonFrontPic_ButterfreeF[] = INCBIN_U32("graphics/pokemon/butterfree/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/anim_front.4bpp.lz"); -const u32 gMonFrontPic_RattataF[] = INCBIN_U32("graphics/pokemon/rattata/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/anim_front.4bpp.lz"); -const u32 gMonFrontPic_RaticateF[] = INCBIN_U32("graphics/pokemon/raticate/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/anim_front.4bpp.lz"); -const u32 gMonFrontPic_PikachuF[] = INCBIN_U32("graphics/pokemon/pikachu/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/anim_front.4bpp.lz"); -const u32 gMonFrontPic_RaichuF[] = INCBIN_U32("graphics/pokemon/raichu/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/anim_front.4bpp.lz"); -const u32 gMonFrontPic_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/anim_front.4bpp.lz"); -const u32 gMonFrontPic_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/anim_front.4bpp.lz"); -const u32 gMonFrontPic_ZubatF[] = INCBIN_U32("graphics/pokemon/zubat/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/anim_front.4bpp.lz"); -const u32 gMonFrontPic_GolbatF[] = INCBIN_U32("graphics/pokemon/golbat/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/anim_front.4bpp.lz"); -const u32 gMonFrontPic_GloomF[] = INCBIN_U32("graphics/pokemon/gloom/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VileplumeF[] = INCBIN_U32("graphics/pokemon/vileplume/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Paras[] = INCBIN_U32("graphics/pokemon/paras/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Persian[] = INCBIN_U32("graphics/pokemon/persian/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Abra[] = INCBIN_U32("graphics/pokemon/abra/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/anim_front.4bpp.lz"); -const u32 gMonFrontPic_KadabraF[] = INCBIN_U32("graphics/pokemon/kadabra/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/anim_front.4bpp.lz"); -const u32 gMonFrontPic_AlakazamF[] = INCBIN_U32("graphics/pokemon/alakazam/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Machop[] = INCBIN_U32("graphics/pokemon/machop/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Golem[] = INCBIN_U32("graphics/pokemon/golem/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_DoduoF[] = INCBIN_U32("graphics/pokemon/doduo/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/anim_front.4bpp.lz"); -const u32 gMonFrontPic_DodrioF[] = INCBIN_U32("graphics/pokemon/dodrio/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Seel[] = INCBIN_U32("graphics/pokemon/seel/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Muk[] = INCBIN_U32("graphics/pokemon/muk/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Onix[] = INCBIN_U32("graphics/pokemon/onix/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/anim_front.4bpp.lz"); -const u32 gMonFrontPic_HypnoF[] = INCBIN_U32("graphics/pokemon/hypno/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/anim_front.4bpp.lz"); -const u32 gMonFrontPic_RhyhornF[] = INCBIN_U32("graphics/pokemon/rhyhorn/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_RhydonF[] = INCBIN_U32("graphics/pokemon/rhydon/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/anim_front.4bpp.lz"); -const u32 gMonFrontPic_GoldeenF[] = INCBIN_U32("graphics/pokemon/goldeen/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/anim_front.4bpp.lz"); -const u32 gMonFrontPic_SeakingF[] = INCBIN_U32("graphics/pokemon/seaking/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/anim_front.4bpp.lz"); -const u32 gMonFrontPic_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/anim_front.4bpp.lz"); -const u32 gMonFrontPic_ScytherF[] = INCBIN_U32("graphics/pokemon/scyther/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/anim_front.4bpp.lz"); -const u32 gMonFrontPic_MagikarpF[] = INCBIN_U32("graphics/pokemon/magikarp/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/anim_front.4bpp.lz"); -const u32 gMonFrontPic_GyaradosF[] = INCBIN_U32("graphics/pokemon/gyarados/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/anim_front.4bpp.lz"); -const u32 gMonFrontPic_EeveeF[] = INCBIN_U32("graphics/pokemon/eevee/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Mew[] = INCBIN_U32("graphics/pokemon/mew/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/anim_front.4bpp.lz"); -const u32 gMonFrontPic_MeganiumF[] = INCBIN_U32("graphics/pokemon/meganium/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Furret[] = INCBIN_U32("graphics/pokemon/furret/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/anim_front.4bpp.lz"); -const u32 gMonFrontPic_LedybaF[] = INCBIN_U32("graphics/pokemon/ledyba/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/anim_front.4bpp.lz"); -const u32 gMonFrontPic_LedianF[] = INCBIN_U32("graphics/pokemon/ledian/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Natu[] = INCBIN_U32("graphics/pokemon/natu/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/anim_front.4bpp.lz"); -const u32 gMonFrontPic_XatuF[] = INCBIN_U32("graphics/pokemon/xatu/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Marill[] = INCBIN_U32("graphics/pokemon/marill/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_SudowoodoF[] = INCBIN_U32("graphics/pokemon/sudowoodo/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/anim_front.4bpp.lz"); -const u32 gMonFrontPic_PolitoedF[] = INCBIN_U32("graphics/pokemon/politoed/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/anim_front.4bpp.lz"); -const u32 gMonFrontPic_AipomF[] = INCBIN_U32("graphics/pokemon/aipom/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/anim_front.4bpp.lz"); -const u32 gMonFrontPic_WooperF[] = INCBIN_U32("graphics/pokemon/wooper/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/anim_front.4bpp.lz"); -const u32 gMonFrontPic_QuagsireF[] = INCBIN_U32("graphics/pokemon/quagsire/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/anim_front.4bpp.lz"); -const u32 gMonFrontPic_MurkrowF[] = INCBIN_U32("graphics/pokemon/murkrow/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Unown[] = INCBIN_U32("graphics/pokemon/unown/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/anim_front.4bpp.lz"); -const u32 gMonFrontPic_WobbuffetF[] = INCBIN_U32("graphics/pokemon/wobbuffet/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/anim_front.4bpp.lz"); -const u32 gMonFrontPic_GirafarigF[] = INCBIN_U32("graphics/pokemon/girafarig/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/anim_front.4bpp.lz"); -const u32 gMonFrontPic_GligarF[] = INCBIN_U32("graphics/pokemon/gligar/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/anim_front.4bpp.lz"); -const u32 gMonFrontPic_SteelixF[] = INCBIN_U32("graphics/pokemon/steelix/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/anim_front.4bpp.lz"); -const u32 gMonFrontPic_ScizorF[] = INCBIN_U32("graphics/pokemon/scizor/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/anim_front.4bpp.lz"); -const u32 gMonFrontPic_HeracrossF[] = INCBIN_U32("graphics/pokemon/heracross/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/anim_front.4bpp.lz"); -const u32 gMonFrontPic_SneaselF[] = INCBIN_U32("graphics/pokemon/sneasel/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UrsaringF[] = INCBIN_U32("graphics/pokemon/ursaring/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/anim_front.4bpp.lz"); -const u32 gMonFrontPic_PiloswineF[] = INCBIN_U32("graphics/pokemon/piloswine/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/anim_front.4bpp.lz"); -const u32 gMonFrontPic_OctilleryF[] = INCBIN_U32("graphics/pokemon/octillery/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/anim_front.4bpp.lz"); -const u32 gMonFrontPic_HoundoomF[] = INCBIN_U32("graphics/pokemon/houndoom/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/anim_front.4bpp.lz"); -const u32 gMonFrontPic_DonphanF[] = INCBIN_U32("graphics/pokemon/donphan/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Magby[] = INCBIN_U32("graphics/pokemon/magby/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Entei[] = INCBIN_U32("graphics/pokemon/entei/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/anim_front.4bpp.lz"); -const u32 gMonFrontPic_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/anim_front.4bpp.lz"); -const u32 gMonFrontPic_CombuskenF[] = INCBIN_U32("graphics/pokemon/combusken/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/anim_front.4bpp.lz"); -const u32 gMonFrontPic_BlazikenF[] = INCBIN_U32("graphics/pokemon/blaziken/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/anim_front.4bpp.lz"); -const u32 gMonFrontPic_BeautiflyF[] = INCBIN_U32("graphics/pokemon/beautifly/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/anim_front.4bpp.lz"); -const u32 gMonFrontPic_DustoxF[] = INCBIN_U32("graphics/pokemon/dustox/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_LudicoloF[] = INCBIN_U32("graphics/pokemon/ludicolo/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/anim_front.4bpp.lz"); -const u32 gMonFrontPic_NuzleafF[] = INCBIN_U32("graphics/pokemon/nuzleaf/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/anim_front.4bpp.lz"); -const u32 gMonFrontPic_ShiftryF[] = INCBIN_U32("graphics/pokemon/shiftry/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Aron[] = INCBIN_U32("graphics/pokemon/aron/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/anim_front.4bpp.lz"); -const u32 gMonFrontPic_MedititeF[] = INCBIN_U32("graphics/pokemon/meditite/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/anim_front.4bpp.lz"); -const u32 gMonFrontPic_MedichamF[] = INCBIN_U32("graphics/pokemon/medicham/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Minun[] = INCBIN_U32("graphics/pokemon/minun/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/anim_front.4bpp.lz"); -const u32 gMonFrontPic_RoseliaF[] = INCBIN_U32("graphics/pokemon/roselia/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/anim_front.4bpp.lz"); -const u32 gMonFrontPic_GulpinF[] = INCBIN_U32("graphics/pokemon/gulpin/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/anim_front.4bpp.lz"); -const u32 gMonFrontPic_SwalotF[] = INCBIN_U32("graphics/pokemon/swalot/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Numel[] = INCBIN_U32("graphics/pokemon/numel/anim_front.4bpp.lz"); -const u32 gMonFrontPic_NumelF[] = INCBIN_U32("graphics/pokemon/numel/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/anim_front.4bpp.lz"); -const u32 gMonFrontPic_CameruptF[] = INCBIN_U32("graphics/pokemon/camerupt/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/anim_front.4bpp.lz"); -const u32 gMonFrontPic_CacturneF[] = INCBIN_U32("graphics/pokemon/cacturne/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/anim_front.4bpp.lz"); -const u32 gMonFrontPic_MiloticF[] = INCBIN_U32("graphics/pokemon/milotic/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Castform[] = INCBIN_U32("graphics/pokemon/castform/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Banette[] = INCBIN_U32("graphics/pokemon/banette/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Absol[] = INCBIN_U32("graphics/pokemon/absol/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/anim_front.4bpp.lz"); -const u32 gMonFrontPic_RelicanthF[] = INCBIN_U32("graphics/pokemon/relicanth/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Metang[] = INCBIN_U32("graphics/pokemon/metang/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Regice[] = INCBIN_U32("graphics/pokemon/regice/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Latias[] = INCBIN_U32("graphics/pokemon/latias/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Latios[] = INCBIN_U32("graphics/pokemon/latios/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/anim_front.4bpp.lz"); -#if P_GEN_4_POKEMON == TRUE -const u32 gMonFrontPic_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Torterra[] = INCBIN_U32("graphics/pokemon/torterra/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Chimchar[] = INCBIN_U32("graphics/pokemon/chimchar/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Monferno[] = INCBIN_U32("graphics/pokemon/monferno/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Infernape[] = INCBIN_U32("graphics/pokemon/infernape/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Piplup[] = INCBIN_U32("graphics/pokemon/piplup/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Prinplup[] = INCBIN_U32("graphics/pokemon/prinplup/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Empoleon[] = INCBIN_U32("graphics/pokemon/empoleon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Starly[] = INCBIN_U32("graphics/pokemon/starly/anim_front.4bpp.lz"); -const u32 gMonFrontPic_StarlyF[] = INCBIN_U32("graphics/pokemon/starly/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/anim_front.4bpp.lz"); -const u32 gMonFrontPic_StaraviaF[] = INCBIN_U32("graphics/pokemon/staravia/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/anim_front.4bpp.lz"); -const u32 gMonFrontPic_StaraptorF[] = INCBIN_U32("graphics/pokemon/staraptor/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Bidoof[] = INCBIN_U32("graphics/pokemon/bidoof/anim_front.4bpp.lz"); -const u32 gMonFrontPic_BidoofF[] = INCBIN_U32("graphics/pokemon/bidoof/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/anim_front.4bpp.lz"); -const u32 gMonFrontPic_BibarelF[] = INCBIN_U32("graphics/pokemon/bibarel/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Kricketot[] = INCBIN_U32("graphics/pokemon/kricketot/anim_front.4bpp.lz"); -const u32 gMonFrontPic_KricketotF[] = INCBIN_U32("graphics/pokemon/kricketot/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/anim_front.4bpp.lz"); -const u32 gMonFrontPic_KricketuneF[] = INCBIN_U32("graphics/pokemon/kricketune/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Shinx[] = INCBIN_U32("graphics/pokemon/shinx/anim_front.4bpp.lz"); -const u32 gMonFrontPic_ShinxF[] = INCBIN_U32("graphics/pokemon/shinx/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/anim_front.4bpp.lz"); -const u32 gMonFrontPic_LuxioF[] = INCBIN_U32("graphics/pokemon/luxio/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/anim_front.4bpp.lz"); -const u32 gMonFrontPic_LuxrayF[] = INCBIN_U32("graphics/pokemon/luxray/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Budew[] = INCBIN_U32("graphics/pokemon/budew/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Roserade[] = INCBIN_U32("graphics/pokemon/roserade/anim_front.4bpp.lz"); -const u32 gMonFrontPic_RoseradeF[] = INCBIN_U32("graphics/pokemon/roserade/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Burmy[] = INCBIN_U32("graphics/pokemon/burmy/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Wormadam[] = INCBIN_U32("graphics/pokemon/wormadam/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Combee[] = INCBIN_U32("graphics/pokemon/combee/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/anim_front.4bpp.lz"); -const u32 gMonFrontPic_PachirisuF[] = INCBIN_U32("graphics/pokemon/pachirisu/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cherrim[] = INCBIN_U32("graphics/pokemon/cherrim/normal/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Shellos[] = INCBIN_U32("graphics/pokemon/shellos/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gastrodon[] = INCBIN_U32("graphics/pokemon/gastrodon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/anim_front.4bpp.lz"); -const u32 gMonFrontPic_AmbipomF[] = INCBIN_U32("graphics/pokemon/ambipom/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Buneary[] = INCBIN_U32("graphics/pokemon/buneary/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Lopunny[] = INCBIN_U32("graphics/pokemon/lopunny/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Mismagius[] = INCBIN_U32("graphics/pokemon/mismagius/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Honchkrow[] = INCBIN_U32("graphics/pokemon/honchkrow/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Glameow[] = INCBIN_U32("graphics/pokemon/glameow/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Purugly[] = INCBIN_U32("graphics/pokemon/purugly/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Chingling[] = INCBIN_U32("graphics/pokemon/chingling/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Stunky[] = INCBIN_U32("graphics/pokemon/stunky/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Skuntank[] = INCBIN_U32("graphics/pokemon/skuntank/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Bronzor[] = INCBIN_U32("graphics/pokemon/bronzor/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Bronzong[] = INCBIN_U32("graphics/pokemon/bronzong/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Bonsly[] = INCBIN_U32("graphics/pokemon/bonsly/anim_front.4bpp.lz"); -const u32 gMonFrontPic_MimeJr[] = INCBIN_U32("graphics/pokemon/mime_jr/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Happiny[] = INCBIN_U32("graphics/pokemon/happiny/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Chatot[] = INCBIN_U32("graphics/pokemon/chatot/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Spiritomb[] = INCBIN_U32("graphics/pokemon/spiritomb/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gible[] = INCBIN_U32("graphics/pokemon/gible/anim_front.4bpp.lz"); -const u32 gMonFrontPic_GibleF[] = INCBIN_U32("graphics/pokemon/gible/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/anim_front.4bpp.lz"); -const u32 gMonFrontPic_GabiteF[] = INCBIN_U32("graphics/pokemon/gabite/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/anim_front.4bpp.lz"); -const u32 gMonFrontPic_GarchompF[] = INCBIN_U32("graphics/pokemon/garchomp/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Croagunk[] = INCBIN_U32("graphics/pokemon/croagunk/anim_front.4bpp.lz"); -const u32 gMonFrontPic_CroagunkF[] = INCBIN_U32("graphics/pokemon/croagunk/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/anim_front.4bpp.lz"); -const u32 gMonFrontPic_ToxicroakF[] = INCBIN_U32("graphics/pokemon/toxicroak/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Carnivine[] = INCBIN_U32("graphics/pokemon/carnivine/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Finneon[] = INCBIN_U32("graphics/pokemon/finneon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_FinneonF[] = INCBIN_U32("graphics/pokemon/finneon/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_LumineonF[] = INCBIN_U32("graphics/pokemon/lumineon/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Mantyke[] = INCBIN_U32("graphics/pokemon/mantyke/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Snover[] = INCBIN_U32("graphics/pokemon/snover/anim_front.4bpp.lz"); -const u32 gMonFrontPic_SnoverF[] = INCBIN_U32("graphics/pokemon/snover/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/anim_front.4bpp.lz"); -const u32 gMonFrontPic_AbomasnowF[] = INCBIN_U32("graphics/pokemon/abomasnow/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Weavile[] = INCBIN_U32("graphics/pokemon/weavile/anim_front.4bpp.lz"); -const u32 gMonFrontPic_WeavileF[] = INCBIN_U32("graphics/pokemon/weavile/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Magnezone[] = INCBIN_U32("graphics/pokemon/magnezone/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Lickilicky[] = INCBIN_U32("graphics/pokemon/lickilicky/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Rhyperior[] = INCBIN_U32("graphics/pokemon/rhyperior/anim_front.4bpp.lz"); -const u32 gMonFrontPic_RhyperiorF[] = INCBIN_U32("graphics/pokemon/rhyperior/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Tangrowth[] = INCBIN_U32("graphics/pokemon/tangrowth/anim_front.4bpp.lz"); -const u32 gMonFrontPic_TangrowthF[] = INCBIN_U32("graphics/pokemon/tangrowth/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Electivire[] = INCBIN_U32("graphics/pokemon/electivire/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Magmortar[] = INCBIN_U32("graphics/pokemon/magmortar/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Togekiss[] = INCBIN_U32("graphics/pokemon/togekiss/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Yanmega[] = INCBIN_U32("graphics/pokemon/yanmega/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Leafeon[] = INCBIN_U32("graphics/pokemon/leafeon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Glaceon[] = INCBIN_U32("graphics/pokemon/glaceon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gliscor[] = INCBIN_U32("graphics/pokemon/gliscor/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Mamoswine[] = INCBIN_U32("graphics/pokemon/mamoswine/anim_front.4bpp.lz"); -const u32 gMonFrontPic_MamoswineF[] = INCBIN_U32("graphics/pokemon/mamoswine/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_PorygonZ[] = INCBIN_U32("graphics/pokemon/porygon_z/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gallade[] = INCBIN_U32("graphics/pokemon/gallade/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Probopass[] = INCBIN_U32("graphics/pokemon/probopass/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Dusknoir[] = INCBIN_U32("graphics/pokemon/dusknoir/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Froslass[] = INCBIN_U32("graphics/pokemon/froslass/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Rotom[] = INCBIN_U32("graphics/pokemon/rotom/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Uxie[] = INCBIN_U32("graphics/pokemon/uxie/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Mesprit[] = INCBIN_U32("graphics/pokemon/mesprit/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Azelf[] = INCBIN_U32("graphics/pokemon/azelf/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Giratina[] = INCBIN_U32("graphics/pokemon/giratina/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Phione[] = INCBIN_U32("graphics/pokemon/phione/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Shaymin[] = INCBIN_U32("graphics/pokemon/shaymin/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Arceus[] = INCBIN_U32("graphics/pokemon/arceus/anim_front.4bpp.lz"); -#endif -#if P_GEN_5_POKEMON == TRUE -const u32 gMonFrontPic_Victini[] = INCBIN_U32("graphics/pokemon/victini/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Snivy[] = INCBIN_U32("graphics/pokemon/snivy/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Servine[] = INCBIN_U32("graphics/pokemon/servine/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Serperior[] = INCBIN_U32("graphics/pokemon/serperior/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Tepig[] = INCBIN_U32("graphics/pokemon/tepig/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pignite[] = INCBIN_U32("graphics/pokemon/pignite/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Emboar[] = INCBIN_U32("graphics/pokemon/emboar/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Oshawott[] = INCBIN_U32("graphics/pokemon/oshawott/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Dewott[] = INCBIN_U32("graphics/pokemon/dewott/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Samurott[] = INCBIN_U32("graphics/pokemon/samurott/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Patrat[] = INCBIN_U32("graphics/pokemon/patrat/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Watchog[] = INCBIN_U32("graphics/pokemon/watchog/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Lillipup[] = INCBIN_U32("graphics/pokemon/lillipup/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Herdier[] = INCBIN_U32("graphics/pokemon/herdier/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Stoutland[] = INCBIN_U32("graphics/pokemon/stoutland/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Purrloin[] = INCBIN_U32("graphics/pokemon/purrloin/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Liepard[] = INCBIN_U32("graphics/pokemon/liepard/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pansage[] = INCBIN_U32("graphics/pokemon/pansage/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Simisage[] = INCBIN_U32("graphics/pokemon/simisage/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pansear[] = INCBIN_U32("graphics/pokemon/pansear/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Simisear[] = INCBIN_U32("graphics/pokemon/simisear/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Panpour[] = INCBIN_U32("graphics/pokemon/panpour/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Simipour[] = INCBIN_U32("graphics/pokemon/simipour/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Munna[] = INCBIN_U32("graphics/pokemon/munna/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Musharna[] = INCBIN_U32("graphics/pokemon/musharna/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pidove[] = INCBIN_U32("graphics/pokemon/pidove/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Tranquill[] = INCBIN_U32("graphics/pokemon/tranquill/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Unfezant[] = INCBIN_U32("graphics/pokemon/unfezant/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Blitzle[] = INCBIN_U32("graphics/pokemon/blitzle/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Zebstrika[] = INCBIN_U32("graphics/pokemon/zebstrika/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Roggenrola[] = INCBIN_U32("graphics/pokemon/roggenrola/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Boldore[] = INCBIN_U32("graphics/pokemon/boldore/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gigalith[] = INCBIN_U32("graphics/pokemon/gigalith/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Woobat[] = INCBIN_U32("graphics/pokemon/woobat/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Swoobat[] = INCBIN_U32("graphics/pokemon/swoobat/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Drilbur[] = INCBIN_U32("graphics/pokemon/drilbur/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Excadrill[] = INCBIN_U32("graphics/pokemon/excadrill/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Audino[] = INCBIN_U32("graphics/pokemon/audino/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Timburr[] = INCBIN_U32("graphics/pokemon/timburr/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gurdurr[] = INCBIN_U32("graphics/pokemon/gurdurr/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Conkeldurr[] = INCBIN_U32("graphics/pokemon/conkeldurr/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Tympole[] = INCBIN_U32("graphics/pokemon/tympole/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Palpitoad[] = INCBIN_U32("graphics/pokemon/palpitoad/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Seismitoad[] = INCBIN_U32("graphics/pokemon/seismitoad/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Throh[] = INCBIN_U32("graphics/pokemon/throh/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sawk[] = INCBIN_U32("graphics/pokemon/sawk/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sewaddle[] = INCBIN_U32("graphics/pokemon/sewaddle/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Swadloon[] = INCBIN_U32("graphics/pokemon/swadloon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Leavanny[] = INCBIN_U32("graphics/pokemon/leavanny/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Venipede[] = INCBIN_U32("graphics/pokemon/venipede/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Whirlipede[] = INCBIN_U32("graphics/pokemon/whirlipede/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Scolipede[] = INCBIN_U32("graphics/pokemon/scolipede/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Basculin[] = INCBIN_U32("graphics/pokemon/basculin/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Darmanitan[] = INCBIN_U32("graphics/pokemon/darmanitan/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Scraggy[] = INCBIN_U32("graphics/pokemon/scraggy/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Scrafty[] = INCBIN_U32("graphics/pokemon/scrafty/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sigilyph[] = INCBIN_U32("graphics/pokemon/sigilyph/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Yamask[] = INCBIN_U32("graphics/pokemon/yamask/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cofagrigus[] = INCBIN_U32("graphics/pokemon/cofagrigus/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Tirtouga[] = INCBIN_U32("graphics/pokemon/tirtouga/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Carracosta[] = INCBIN_U32("graphics/pokemon/carracosta/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Archen[] = INCBIN_U32("graphics/pokemon/archen/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Archeops[] = INCBIN_U32("graphics/pokemon/archeops/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Trubbish[] = INCBIN_U32("graphics/pokemon/trubbish/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Garbodor[] = INCBIN_U32("graphics/pokemon/garbodor/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Zorua[] = INCBIN_U32("graphics/pokemon/zorua/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Zoroark[] = INCBIN_U32("graphics/pokemon/zoroark/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Minccino[] = INCBIN_U32("graphics/pokemon/minccino/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cinccino[] = INCBIN_U32("graphics/pokemon/cinccino/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gothita[] = INCBIN_U32("graphics/pokemon/gothita/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gothorita[] = INCBIN_U32("graphics/pokemon/gothorita/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gothitelle[] = INCBIN_U32("graphics/pokemon/gothitelle/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Solosis[] = INCBIN_U32("graphics/pokemon/solosis/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Duosion[] = INCBIN_U32("graphics/pokemon/duosion/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Reuniclus[] = INCBIN_U32("graphics/pokemon/reuniclus/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Ducklett[] = INCBIN_U32("graphics/pokemon/ducklett/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Deerling[] = INCBIN_U32("graphics/pokemon/deerling/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sawsbuck[] = INCBIN_U32("graphics/pokemon/sawsbuck/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Foongus[] = INCBIN_U32("graphics/pokemon/foongus/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Amoonguss[] = INCBIN_U32("graphics/pokemon/amoonguss/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Frillish[] = INCBIN_U32("graphics/pokemon/frillish/anim_front.4bpp.lz"); -const u32 gMonFrontPic_FrillishF[] = INCBIN_U32("graphics/pokemon/frillish/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Jellicent[] = INCBIN_U32("graphics/pokemon/jellicent/anim_front.4bpp.lz"); -const u32 gMonFrontPic_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Alomomola[] = INCBIN_U32("graphics/pokemon/alomomola/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Joltik[] = INCBIN_U32("graphics/pokemon/joltik/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Galvantula[] = INCBIN_U32("graphics/pokemon/galvantula/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Ferroseed[] = INCBIN_U32("graphics/pokemon/ferroseed/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Ferrothorn[] = INCBIN_U32("graphics/pokemon/ferrothorn/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Klink[] = INCBIN_U32("graphics/pokemon/klink/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Klang[] = INCBIN_U32("graphics/pokemon/klang/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Klinklang[] = INCBIN_U32("graphics/pokemon/klinklang/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Tynamo[] = INCBIN_U32("graphics/pokemon/tynamo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Eelektrik[] = INCBIN_U32("graphics/pokemon/eelektrik/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Eelektross[] = INCBIN_U32("graphics/pokemon/eelektross/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Elgyem[] = INCBIN_U32("graphics/pokemon/elgyem/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Beheeyem[] = INCBIN_U32("graphics/pokemon/beheeyem/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Litwick[] = INCBIN_U32("graphics/pokemon/litwick/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Lampent[] = INCBIN_U32("graphics/pokemon/lampent/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Chandelure[] = INCBIN_U32("graphics/pokemon/chandelure/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Axew[] = INCBIN_U32("graphics/pokemon/axew/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Fraxure[] = INCBIN_U32("graphics/pokemon/fraxure/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Haxorus[] = INCBIN_U32("graphics/pokemon/haxorus/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cubchoo[] = INCBIN_U32("graphics/pokemon/cubchoo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Beartic[] = INCBIN_U32("graphics/pokemon/beartic/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cryogonal[] = INCBIN_U32("graphics/pokemon/cryogonal/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Shelmet[] = INCBIN_U32("graphics/pokemon/shelmet/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Accelgor[] = INCBIN_U32("graphics/pokemon/accelgor/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Stunfisk[] = INCBIN_U32("graphics/pokemon/stunfisk/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Mienfoo[] = INCBIN_U32("graphics/pokemon/mienfoo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Mienshao[] = INCBIN_U32("graphics/pokemon/mienshao/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Druddigon[] = INCBIN_U32("graphics/pokemon/druddigon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Golett[] = INCBIN_U32("graphics/pokemon/golett/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Golurk[] = INCBIN_U32("graphics/pokemon/golurk/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pawniard[] = INCBIN_U32("graphics/pokemon/pawniard/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Bisharp[] = INCBIN_U32("graphics/pokemon/bisharp/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Bouffalant[] = INCBIN_U32("graphics/pokemon/bouffalant/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Rufflet[] = INCBIN_U32("graphics/pokemon/rufflet/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Braviary[] = INCBIN_U32("graphics/pokemon/braviary/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Vullaby[] = INCBIN_U32("graphics/pokemon/vullaby/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Mandibuzz[] = INCBIN_U32("graphics/pokemon/mandibuzz/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Heatmor[] = INCBIN_U32("graphics/pokemon/heatmor/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Durant[] = INCBIN_U32("graphics/pokemon/durant/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Deino[] = INCBIN_U32("graphics/pokemon/deino/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Zweilous[] = INCBIN_U32("graphics/pokemon/zweilous/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Hydreigon[] = INCBIN_U32("graphics/pokemon/hydreigon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Larvesta[] = INCBIN_U32("graphics/pokemon/larvesta/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Tornadus[] = INCBIN_U32("graphics/pokemon/tornadus/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Thundurus[] = INCBIN_U32("graphics/pokemon/thundurus/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Landorus[] = INCBIN_U32("graphics/pokemon/landorus/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Keldeo[] = INCBIN_U32("graphics/pokemon/keldeo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Meloetta[] = INCBIN_U32("graphics/pokemon/meloetta/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/anim_front.4bpp.lz"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u32 gMonFrontPic_Chespin[] = INCBIN_U32("graphics/pokemon/chespin/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Quilladin[] = INCBIN_U32("graphics/pokemon/quilladin/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Chesnaught[] = INCBIN_U32("graphics/pokemon/chesnaught/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Fennekin[] = INCBIN_U32("graphics/pokemon/fennekin/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Braixen[] = INCBIN_U32("graphics/pokemon/braixen/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Delphox[] = INCBIN_U32("graphics/pokemon/delphox/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Froakie[] = INCBIN_U32("graphics/pokemon/froakie/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Frogadier[] = INCBIN_U32("graphics/pokemon/frogadier/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Greninja[] = INCBIN_U32("graphics/pokemon/greninja/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Bunnelby[] = INCBIN_U32("graphics/pokemon/bunnelby/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Diggersby[] = INCBIN_U32("graphics/pokemon/diggersby/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Fletchling[] = INCBIN_U32("graphics/pokemon/fletchling/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Vivillon[] = INCBIN_U32("graphics/pokemon/vivillon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/anim_front.4bpp.lz"); -const u32 gMonFrontPic_PyroarF[] = INCBIN_U32("graphics/pokemon/pyroar/anim_frontf.4bpp.lz"); -const u32 gMonFrontPic_Flabebe[] = INCBIN_U32("graphics/pokemon/flabebe/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Floette[] = INCBIN_U32("graphics/pokemon/floette/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Florges[] = INCBIN_U32("graphics/pokemon/florges/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Furfrou[] = INCBIN_U32("graphics/pokemon/furfrou/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Meowstic[] = INCBIN_U32("graphics/pokemon/meowstic/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Aegislash[] = INCBIN_U32("graphics/pokemon/aegislash/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Slurpuff[] = INCBIN_U32("graphics/pokemon/slurpuff/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Inkay[] = INCBIN_U32("graphics/pokemon/inkay/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Malamar[] = INCBIN_U32("graphics/pokemon/malamar/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Binacle[] = INCBIN_U32("graphics/pokemon/binacle/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Barbaracle[] = INCBIN_U32("graphics/pokemon/barbaracle/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Skrelp[] = INCBIN_U32("graphics/pokemon/skrelp/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Dragalge[] = INCBIN_U32("graphics/pokemon/dragalge/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Clauncher[] = INCBIN_U32("graphics/pokemon/clauncher/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Clawitzer[] = INCBIN_U32("graphics/pokemon/clawitzer/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Helioptile[] = INCBIN_U32("graphics/pokemon/helioptile/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Heliolisk[] = INCBIN_U32("graphics/pokemon/heliolisk/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Tyrunt[] = INCBIN_U32("graphics/pokemon/tyrunt/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Tyrantrum[] = INCBIN_U32("graphics/pokemon/tyrantrum/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Amaura[] = INCBIN_U32("graphics/pokemon/amaura/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Aurorus[] = INCBIN_U32("graphics/pokemon/aurorus/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sylveon[] = INCBIN_U32("graphics/pokemon/sylveon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Hawlucha[] = INCBIN_U32("graphics/pokemon/hawlucha/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Dedenne[] = INCBIN_U32("graphics/pokemon/dedenne/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Carbink[] = INCBIN_U32("graphics/pokemon/carbink/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Goomy[] = INCBIN_U32("graphics/pokemon/goomy/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sliggoo[] = INCBIN_U32("graphics/pokemon/sliggoo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Pumpkaboo[] = INCBIN_U32("graphics/pokemon/pumpkaboo/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Gourgeist[] = INCBIN_U32("graphics/pokemon/gourgeist/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Xerneas[] = INCBIN_U32("graphics/pokemon/xerneas/front.4bpp.lz"); -const u32 gMonFrontPic_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Zygarde[] = INCBIN_U32("graphics/pokemon/zygarde/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Hoopa[] = INCBIN_U32("graphics/pokemon/hoopa/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/anim_front.4bpp.lz"); -#endif -#if P_GEN_7_POKEMON == TRUE -const u32 gMonFrontPic_Rowlet[] = INCBIN_U32("graphics/pokemon/rowlet/front.4bpp.lz"); -const u32 gMonFrontPic_Dartrix[] = INCBIN_U32("graphics/pokemon/dartrix/front.4bpp.lz"); -const u32 gMonFrontPic_Decidueye[] = INCBIN_U32("graphics/pokemon/decidueye/front.4bpp.lz"); -const u32 gMonFrontPic_Litten[] = INCBIN_U32("graphics/pokemon/litten/front.4bpp.lz"); -const u32 gMonFrontPic_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/front.4bpp.lz"); -const u32 gMonFrontPic_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/front.4bpp.lz"); -const u32 gMonFrontPic_Popplio[] = INCBIN_U32("graphics/pokemon/popplio/front.4bpp.lz"); -const u32 gMonFrontPic_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/front.4bpp.lz"); -const u32 gMonFrontPic_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/front.4bpp.lz"); -const u32 gMonFrontPic_Pikipek[] = INCBIN_U32("graphics/pokemon/pikipek/front.4bpp.lz"); -const u32 gMonFrontPic_Trumbeak[] = INCBIN_U32("graphics/pokemon/trumbeak/front.4bpp.lz"); -const u32 gMonFrontPic_Toucannon[] = INCBIN_U32("graphics/pokemon/toucannon/front.4bpp.lz"); -const u32 gMonFrontPic_Yungoos[] = INCBIN_U32("graphics/pokemon/yungoos/front.4bpp.lz"); -const u32 gMonFrontPic_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/front.4bpp.lz"); -const u32 gMonFrontPic_Grubbin[] = INCBIN_U32("graphics/pokemon/grubbin/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/front.4bpp.lz"); -const u32 gMonFrontPic_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/front.4bpp.lz"); -const u32 gMonFrontPic_Oricorio[] = INCBIN_U32("graphics/pokemon/oricorio/front.4bpp.lz"); -const u32 gMonFrontPic_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/front.4bpp.lz"); -const u32 gMonFrontPic_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/front.4bpp.lz"); -const u32 gMonFrontPic_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/front.4bpp.lz"); -const u32 gMonFrontPic_Lycanroc[] = INCBIN_U32("graphics/pokemon/lycanroc/front.4bpp.lz"); -const u32 gMonFrontPic_Wishiwashi[] = INCBIN_U32("graphics/pokemon/wishiwashi/front.4bpp.lz"); -const u32 gMonFrontPic_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/front.4bpp.lz"); -const u32 gMonFrontPic_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/front.4bpp.lz"); -const u32 gMonFrontPic_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/front.4bpp.lz"); -const u32 gMonFrontPic_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/front.4bpp.lz"); -const u32 gMonFrontPic_Dewpider[] = INCBIN_U32("graphics/pokemon/dewpider/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Araquanid[] = INCBIN_U32("graphics/pokemon/araquanid/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Fomantis[] = INCBIN_U32("graphics/pokemon/fomantis/front.4bpp.lz"); -const u32 gMonFrontPic_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/front.4bpp.lz"); -const u32 gMonFrontPic_Morelull[] = INCBIN_U32("graphics/pokemon/morelull/front.4bpp.lz"); -const u32 gMonFrontPic_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/front.4bpp.lz"); -const u32 gMonFrontPic_Salandit[] = INCBIN_U32("graphics/pokemon/salandit/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Salazzle[] = INCBIN_U32("graphics/pokemon/salazzle/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Stufful[] = INCBIN_U32("graphics/pokemon/stufful/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Bewear[] = INCBIN_U32("graphics/pokemon/bewear/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Bounsweet[] = INCBIN_U32("graphics/pokemon/bounsweet/front.4bpp.lz"); -const u32 gMonFrontPic_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/front.4bpp.lz"); -const u32 gMonFrontPic_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/front.4bpp.lz"); -const u32 gMonFrontPic_Comfey[] = INCBIN_U32("graphics/pokemon/comfey/front.4bpp.lz"); -const u32 gMonFrontPic_Oranguru[] = INCBIN_U32("graphics/pokemon/oranguru/front.4bpp.lz"); -const u32 gMonFrontPic_Passimian[] = INCBIN_U32("graphics/pokemon/passimian/front.4bpp.lz"); -const u32 gMonFrontPic_Wimpod[] = INCBIN_U32("graphics/pokemon/wimpod/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Golisopod[] = INCBIN_U32("graphics/pokemon/golisopod/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/front.4bpp.lz"); -const u32 gMonFrontPic_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/front.4bpp.lz"); -const u32 gMonFrontPic_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/anim_front.4bpp.lz"); -const u32 gMonFrontPic_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/front.4bpp.lz"); -const u32 gMonFrontPic_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/front.4bpp.lz"); -const u32 gMonFrontPic_Minior[] = INCBIN_U32("graphics/pokemon/minior/front.4bpp.lz"); -const u32 gMonFrontPic_Komala[] = INCBIN_U32("graphics/pokemon/komala/front.4bpp.lz"); -const u32 gMonFrontPic_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/front.4bpp.lz"); -const u32 gMonFrontPic_Mimikyu[] = INCBIN_U32("graphics/pokemon/mimikyu/front.4bpp.lz"); -const u32 gMonFrontPic_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/front.4bpp.lz"); -const u32 gMonFrontPic_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/front.4bpp.lz"); -const u32 gMonFrontPic_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/front.4bpp.lz"); -const u32 gMonFrontPic_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/anim_front.4bpp.lz"); -const u32 gMonFrontPic_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/anim_front.4bpp.lz"); -const u32 gMonFrontPic_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/anim_front.4bpp.lz"); -const u32 gMonFrontPic_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/anim_front.4bpp.lz"); -const u32 gMonFrontPic_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/anim_front.4bpp.lz"); -const u32 gMonFrontPic_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/anim_front.4bpp.lz"); -const u32 gMonFrontPic_TapuFini[] = INCBIN_U32("graphics/pokemon/tapu_fini/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Cosmog[] = INCBIN_U32("graphics/pokemon/cosmog/front.4bpp.lz"); -const u32 gMonFrontPic_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/front.4bpp.lz"); -const u32 gMonFrontPic_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/front.4bpp.lz"); -const u32 gMonFrontPic_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/front.4bpp.lz"); -const u32 gMonFrontPic_Nihilego[] = INCBIN_U32("graphics/pokemon/nihilego/front.4bpp.lz"); -const u32 gMonFrontPic_Buzzwole[] = INCBIN_U32("graphics/pokemon/buzzwole/front.4bpp.lz"); -const u32 gMonFrontPic_Pheromosa[] = INCBIN_U32("graphics/pokemon/pheromosa/front.4bpp.lz"); -const u32 gMonFrontPic_Xurkitree[] = INCBIN_U32("graphics/pokemon/xurkitree/front.4bpp.lz"); -const u32 gMonFrontPic_Celesteela[] = INCBIN_U32("graphics/pokemon/celesteela/front.4bpp.lz"); -const u32 gMonFrontPic_Kartana[] = INCBIN_U32("graphics/pokemon/kartana/front.4bpp.lz"); -const u32 gMonFrontPic_Guzzlord[] = INCBIN_U32("graphics/pokemon/guzzlord/front.4bpp.lz"); -const u32 gMonFrontPic_Necrozma[] = INCBIN_U32("graphics/pokemon/necrozma/front.4bpp.lz"); -const u32 gMonFrontPic_Magearna[] = INCBIN_U32("graphics/pokemon/magearna/front.4bpp.lz"); -const u32 gMonFrontPic_Marshadow[] = INCBIN_U32("graphics/pokemon/marshadow/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Poipole[] = INCBIN_U32("graphics/pokemon/poipole/front.4bpp.lz"); -const u32 gMonFrontPic_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/front.4bpp.lz"); -const u32 gMonFrontPic_Stakataka[] = INCBIN_U32("graphics/pokemon/stakataka/front.4bpp.lz"); -const u32 gMonFrontPic_Blacephalon[] = INCBIN_U32("graphics/pokemon/blacephalon/front.4bpp.lz"); -const u32 gMonFrontPic_Zeraora[] = INCBIN_U32("graphics/pokemon/zeraora/front.4bpp.lz"); -const u32 gMonFrontPic_Meltan[] = INCBIN_U32("graphics/pokemon/meltan/front.4bpp.lz"); -const u32 gMonFrontPic_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/front.4bpp.lz"); -#endif -#if P_GEN_8_POKEMON == TRUE -const u32 gMonFrontPic_Grookey[] = INCBIN_U32("graphics/pokemon/grookey/front.4bpp.lz"); -const u32 gMonFrontPic_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/front.4bpp.lz"); -const u32 gMonFrontPic_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/front.4bpp.lz"); -const u32 gMonFrontPic_Scorbunny[] = INCBIN_U32("graphics/pokemon/scorbunny/front.4bpp.lz"); -const u32 gMonFrontPic_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/front.4bpp.lz"); -const u32 gMonFrontPic_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/front.4bpp.lz"); -const u32 gMonFrontPic_Sobble[] = INCBIN_U32("graphics/pokemon/sobble/front.4bpp.lz"); -const u32 gMonFrontPic_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/front.4bpp.lz"); -const u32 gMonFrontPic_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/front.4bpp.lz"); -const u32 gMonFrontPic_Skwovet[] = INCBIN_U32("graphics/pokemon/skwovet/front.4bpp.lz"); -const u32 gMonFrontPic_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/front.4bpp.lz"); -const u32 gMonFrontPic_Rookidee[] = INCBIN_U32("graphics/pokemon/rookidee/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Corvisquire[] = INCBIN_U32("graphics/pokemon/corvisquire/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Corviknight[] = INCBIN_U32("graphics/pokemon/corviknight/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Blipbug[] = INCBIN_U32("graphics/pokemon/blipbug/front.4bpp.lz"); -const u32 gMonFrontPic_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/front.4bpp.lz"); -const u32 gMonFrontPic_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/front.4bpp.lz"); -const u32 gMonFrontPic_Nickit[] = INCBIN_U32("graphics/pokemon/nickit/front.4bpp.lz"); -const u32 gMonFrontPic_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/front.4bpp.lz"); -const u32 gMonFrontPic_Gossifleur[] = INCBIN_U32("graphics/pokemon/gossifleur/front.4bpp.lz"); -const u32 gMonFrontPic_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/front.4bpp.lz"); -const u32 gMonFrontPic_Wooloo[] = INCBIN_U32("graphics/pokemon/wooloo/front.4bpp.lz"); -const u32 gMonFrontPic_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/front.4bpp.lz"); -const u32 gMonFrontPic_Chewtle[] = INCBIN_U32("graphics/pokemon/chewtle/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Drednaw[] = INCBIN_U32("graphics/pokemon/drednaw/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Yamper[] = INCBIN_U32("graphics/pokemon/yamper/front.4bpp.lz"); -const u32 gMonFrontPic_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/front.4bpp.lz"); -const u32 gMonFrontPic_Rolycoly[] = INCBIN_U32("graphics/pokemon/rolycoly/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Carkol[] = INCBIN_U32("graphics/pokemon/carkol/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Coalossal[] = INCBIN_U32("graphics/pokemon/coalossal/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Applin[] = INCBIN_U32("graphics/pokemon/applin/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Flapple[] = INCBIN_U32("graphics/pokemon/flapple/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Appletun[] = INCBIN_U32("graphics/pokemon/appletun/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Silicobra[] = INCBIN_U32("graphics/pokemon/silicobra/front.4bpp.lz"); -const u32 gMonFrontPic_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/front.4bpp.lz"); -const u32 gMonFrontPic_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/front.4bpp.lz"); -const u32 gMonFrontPic_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/front.4bpp.lz"); -const u32 gMonFrontPic_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/front.4bpp.lz"); -const u32 gMonFrontPic_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/front.4bpp.lz"); -const u32 gMonFrontPic_Toxtricity[] = INCBIN_U32("graphics/pokemon/toxtricity/front.4bpp.lz"); -const u32 gMonFrontPic_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/front.4bpp.lz"); -const u32 gMonFrontPic_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/front.4bpp.lz"); -const u32 gMonFrontPic_Sinistea[] = INCBIN_U32("graphics/pokemon/sinistea/front.4bpp.lz"); -const u32 gMonFrontPic_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/front.4bpp.lz"); -const u32 gMonFrontPic_Hatenna[] = INCBIN_U32("graphics/pokemon/hatenna/front.4bpp.lz"); -const u32 gMonFrontPic_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/front.4bpp.lz"); -const u32 gMonFrontPic_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/front.4bpp.lz"); -const u32 gMonFrontPic_Impidimp[] = INCBIN_U32("graphics/pokemon/impidimp/front.4bpp.lz"); -const u32 gMonFrontPic_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/front.4bpp.lz"); -const u32 gMonFrontPic_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/front.4bpp.lz"); -const u32 gMonFrontPic_Obstagoon[] = INCBIN_U32("graphics/pokemon/obstagoon/front.4bpp.lz"); -const u32 gMonFrontPic_Perrserker[] = INCBIN_U32("graphics/pokemon/perrserker/front.4bpp.lz"); -const u32 gMonFrontPic_Cursola[] = INCBIN_U32("graphics/pokemon/cursola/front.4bpp.lz"); -const u32 gMonFrontPic_Sirfetchd[] = INCBIN_U32("graphics/pokemon/sirfetchd/front.4bpp.lz"); -const u32 gMonFrontPic_MrRime[] = INCBIN_U32("graphics/pokemon/mr_rime/front.4bpp.lz"); -const u32 gMonFrontPic_Runerigus[] = INCBIN_U32("graphics/pokemon/runerigus/front.4bpp.lz"); -const u32 gMonFrontPic_Milcery[] = INCBIN_U32("graphics/pokemon/milcery/front.4bpp.lz"); -const u32 gMonFrontPic_Alcremie[] = INCBIN_U32("graphics/pokemon/alcremie/front.4bpp.lz"); -const u32 gMonFrontPic_Falinks[] = INCBIN_U32("graphics/pokemon/falinks/front.4bpp.lz"); -const u32 gMonFrontPic_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Snom[] = INCBIN_U32("graphics/pokemon/snom/front.4bpp.lz"); -const u32 gMonFrontPic_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/front.4bpp.lz"); -const u32 gMonFrontPic_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/front.4bpp.lz"); -const u32 gMonFrontPic_Eiscue[] = INCBIN_U32("graphics/pokemon/eiscue/front.4bpp.lz"); -const u32 gMonFrontPic_Indeedee[] = INCBIN_U32("graphics/pokemon/indeedee/front.4bpp.lz"); -const u32 gMonFrontPic_Morpeko[] = INCBIN_U32("graphics/pokemon/morpeko/front.4bpp.lz"); -const u32 gMonFrontPic_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/front.4bpp.lz"); -const u32 gMonFrontPic_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/front.4bpp.lz"); -const u32 gMonFrontPic_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/front.4bpp.lz"); -const u32 gMonFrontPic_Arctozolt[] = INCBIN_U32("graphics/pokemon/arctozolt/front.4bpp.lz"); -const u32 gMonFrontPic_Dracovish[] = INCBIN_U32("graphics/pokemon/dracovish/front.4bpp.lz"); -const u32 gMonFrontPic_Arctovish[] = INCBIN_U32("graphics/pokemon/arctovish/front.4bpp.lz"); -const u32 gMonFrontPic_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/front.4bpp.lz"); -const u32 gMonFrontPic_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/front.4bpp.lz"); -const u32 gMonFrontPic_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/front.4bpp.lz"); -const u32 gMonFrontPic_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/front.4bpp.lz"); -const u32 gMonFrontPic_Zacian[] = INCBIN_U32("graphics/pokemon/zacian/front.4bpp.lz"); -const u32 gMonFrontPic_Zamazenta[] = INCBIN_U32("graphics/pokemon/zamazenta/front.4bpp.lz"); -const u32 gMonFrontPic_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/front.4bpp.lz"); -const u32 gMonFrontPic_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/front.4bpp.lz"); -const u32 gMonFrontPic_Urshifu[] = INCBIN_U32("graphics/pokemon/urshifu/front.4bpp.lz"); -const u32 gMonFrontPic_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/front.4bpp.lz"); -const u32 gMonFrontPic_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/front.4bpp.lz"); -const u32 gMonFrontPic_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/front.4bpp.lz"); -const u32 gMonFrontPic_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/front.4bpp.lz"); -const u32 gMonFrontPic_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/front.4bpp.lz"); -const u32 gMonFrontPic_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/front.4bpp.lz"); -const u32 gMonFrontPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/front.4bpp.lz"); -const u32 gMonFrontPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/front.4bpp.lz"); -const u32 gMonFrontPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/front.4bpp.lz"); -const u32 gMonFrontPic_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/front.4bpp.lz"); -const u32 gMonFrontPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/front.4bpp.lz"); -const u32 gMonFrontPic_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/front.4bpp.lz"); -const u32 gMonFrontPic_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/front.4bpp.lz"); -#endif -const u32 gMonFrontPic_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/front.4bpp.lz"); -const u32 gMonFrontPic_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/front.4bpp.lz"); -const u32 gMonFrontPic_CharizardMegaY[] = INCBIN_U32("graphics/pokemon/charizard/mega_y/front.4bpp.lz"); -const u32 gMonFrontPic_BlastoiseMega[] = INCBIN_U32("graphics/pokemon/blastoise/mega/front.4bpp.lz"); -const u32 gMonFrontPic_BeedrillMega[] = INCBIN_U32("graphics/pokemon/beedrill/mega/front.4bpp.lz"); -const u32 gMonFrontPic_PidgeotMega[] = INCBIN_U32("graphics/pokemon/pidgeot/mega/front.4bpp.lz"); -const u32 gMonFrontPic_AlakazamMega[] = INCBIN_U32("graphics/pokemon/alakazam/mega/front.4bpp.lz"); -const u32 gMonFrontPic_SlowbroMega[] = INCBIN_U32("graphics/pokemon/slowbro/mega/front.4bpp.lz"); -const u32 gMonFrontPic_GengarMega[] = INCBIN_U32("graphics/pokemon/gengar/mega/front.4bpp.lz"); -const u32 gMonFrontPic_KangaskhanMega[] = INCBIN_U32("graphics/pokemon/kangaskhan/mega/front.4bpp.lz"); -const u32 gMonFrontPic_PinsirMega[] = INCBIN_U32("graphics/pokemon/pinsir/mega/front.4bpp.lz"); -const u32 gMonFrontPic_GyaradosMega[] = INCBIN_U32("graphics/pokemon/gyarados/mega/front.4bpp.lz"); -const u32 gMonFrontPic_AerodactylMega[] = INCBIN_U32("graphics/pokemon/aerodactyl/mega/front.4bpp.lz"); -const u32 gMonFrontPic_MewtwoMegaX[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_x/front.4bpp.lz"); -const u32 gMonFrontPic_MewtwoMegaY[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_y/front.4bpp.lz"); -const u32 gMonFrontPic_AmpharosMega[] = INCBIN_U32("graphics/pokemon/ampharos/mega/front.4bpp.lz"); -const u32 gMonFrontPic_SteelixMega[] = INCBIN_U32("graphics/pokemon/steelix/mega/front.4bpp.lz"); -const u32 gMonFrontPic_ScizorMega[] = INCBIN_U32("graphics/pokemon/scizor/mega/front.4bpp.lz"); -const u32 gMonFrontPic_HeracrossMega[] = INCBIN_U32("graphics/pokemon/heracross/mega/front.4bpp.lz"); -const u32 gMonFrontPic_HoundoomMega[] = INCBIN_U32("graphics/pokemon/houndoom/mega/front.4bpp.lz"); -const u32 gMonFrontPic_TyranitarMega[] = INCBIN_U32("graphics/pokemon/tyranitar/mega/front.4bpp.lz"); -const u32 gMonFrontPic_SceptileMega[] = INCBIN_U32("graphics/pokemon/sceptile/mega/front.4bpp.lz"); -const u32 gMonFrontPic_BlazikenMega[] = INCBIN_U32("graphics/pokemon/blaziken/mega/front.4bpp.lz"); -const u32 gMonFrontPic_SwampertMega[] = INCBIN_U32("graphics/pokemon/swampert/mega/front.4bpp.lz"); -const u32 gMonFrontPic_GardevoirMega[] = INCBIN_U32("graphics/pokemon/gardevoir/mega/front.4bpp.lz"); -const u32 gMonFrontPic_SableyeMega[] = INCBIN_U32("graphics/pokemon/sableye/mega/front.4bpp.lz"); -const u32 gMonFrontPic_MawileMega[] = INCBIN_U32("graphics/pokemon/mawile/mega/front.4bpp.lz"); -const u32 gMonFrontPic_AggronMega[] = INCBIN_U32("graphics/pokemon/aggron/mega/front.4bpp.lz"); -const u32 gMonFrontPic_MedichamMega[] = INCBIN_U32("graphics/pokemon/medicham/mega/front.4bpp.lz"); -const u32 gMonFrontPic_ManectricMega[] = INCBIN_U32("graphics/pokemon/manectric/mega/front.4bpp.lz"); -const u32 gMonFrontPic_SharpedoMega[] = INCBIN_U32("graphics/pokemon/sharpedo/mega/front.4bpp.lz"); -const u32 gMonFrontPic_CameruptMega[] = INCBIN_U32("graphics/pokemon/camerupt/mega/front.4bpp.lz"); -const u32 gMonFrontPic_AltariaMega[] = INCBIN_U32("graphics/pokemon/altaria/mega/front.4bpp.lz"); -const u32 gMonFrontPic_BanetteMega[] = INCBIN_U32("graphics/pokemon/banette/mega/front.4bpp.lz"); -const u32 gMonFrontPic_AbsolMega[] = INCBIN_U32("graphics/pokemon/absol/mega/front.4bpp.lz"); -const u32 gMonFrontPic_GlalieMega[] = INCBIN_U32("graphics/pokemon/glalie/mega/front.4bpp.lz"); -const u32 gMonFrontPic_SalamenceMega[] = INCBIN_U32("graphics/pokemon/salamence/mega/front.4bpp.lz"); -const u32 gMonFrontPic_MetagrossMega[] = INCBIN_U32("graphics/pokemon/metagross/mega/front.4bpp.lz"); -const u32 gMonFrontPic_LatiasMega[] = INCBIN_U32("graphics/pokemon/latias/mega/front.4bpp.lz"); -const u32 gMonFrontPic_LatiosMega[] = INCBIN_U32("graphics/pokemon/latios/mega/front.4bpp.lz"); -#if P_GEN_4_POKEMON == TRUE -const u32 gMonFrontPic_LopunnyMega[] = INCBIN_U32("graphics/pokemon/lopunny/mega/front.4bpp.lz"); -const u32 gMonFrontPic_GarchompMega[] = INCBIN_U32("graphics/pokemon/garchomp/mega/front.4bpp.lz"); -const u32 gMonFrontPic_LucarioMega[] = INCBIN_U32("graphics/pokemon/lucario/mega/front.4bpp.lz"); -const u32 gMonFrontPic_AbomasnowMega[] = INCBIN_U32("graphics/pokemon/abomasnow/mega/front.4bpp.lz"); -const u32 gMonFrontPic_GalladeMega[] = INCBIN_U32("graphics/pokemon/gallade/mega/front.4bpp.lz"); -#endif -#if P_GEN_5_POKEMON == TRUE -const u32 gMonFrontPic_AudinoMega[] = INCBIN_U32("graphics/pokemon/audino/mega/front.4bpp.lz"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u32 gMonFrontPic_DiancieMega[] = INCBIN_U32("graphics/pokemon/diancie/mega/front.4bpp.lz"); -#endif -const u32 gMonFrontPic_RayquazaMega[] = INCBIN_U32("graphics/pokemon/rayquaza/mega/front.4bpp.lz"); -const u32 gMonFrontPic_KyogrePrimal[] = INCBIN_U32("graphics/pokemon/kyogre/primal/front.4bpp.lz"); -const u32 gMonFrontPic_GroudonPrimal[] = INCBIN_U32("graphics/pokemon/groudon/primal/front.4bpp.lz"); -const u32 gMonFrontPic_RattataAlolan[] = INCBIN_U32("graphics/pokemon/rattata/alolan/front.4bpp.lz"); -const u32 gMonFrontPic_RaticateAlolan[] = INCBIN_U32("graphics/pokemon/raticate/alolan/front.4bpp.lz"); -const u32 gMonFrontPic_RaichuAlolan[] = INCBIN_U32("graphics/pokemon/raichu/alolan/front.4bpp.lz"); -const u32 gMonFrontPic_SandshrewAlolan[] = INCBIN_U32("graphics/pokemon/sandshrew/alolan/front.4bpp.lz"); -const u32 gMonFrontPic_SandslashAlolan[] = INCBIN_U32("graphics/pokemon/sandslash/alolan/front.4bpp.lz"); -const u32 gMonFrontPic_VulpixAlolan[] = INCBIN_U32("graphics/pokemon/vulpix/alolan/front.4bpp.lz"); -const u32 gMonFrontPic_NinetalesAlolan[] = INCBIN_U32("graphics/pokemon/ninetales/alolan/front.4bpp.lz"); -const u32 gMonFrontPic_DiglettAlolan[] = INCBIN_U32("graphics/pokemon/diglett/alolan/front.4bpp.lz"); -const u32 gMonFrontPic_DugtrioAlolan[] = INCBIN_U32("graphics/pokemon/dugtrio/alolan/front.4bpp.lz"); -const u32 gMonFrontPic_MeowthAlolan[] = INCBIN_U32("graphics/pokemon/meowth/alolan/front.4bpp.lz"); -const u32 gMonFrontPic_PersianAlolan[] = INCBIN_U32("graphics/pokemon/persian/alolan/front.4bpp.lz"); -const u32 gMonFrontPic_GeodudeAlolan[] = INCBIN_U32("graphics/pokemon/geodude/alolan/front.4bpp.lz"); -const u32 gMonFrontPic_GravelerAlolan[] = INCBIN_U32("graphics/pokemon/graveler/alolan/front.4bpp.lz"); -const u32 gMonFrontPic_GolemAlolan[] = INCBIN_U32("graphics/pokemon/golem/alolan/front.4bpp.lz"); -const u32 gMonFrontPic_GrimerAlolan[] = INCBIN_U32("graphics/pokemon/grimer/alolan/front.4bpp.lz"); -const u32 gMonFrontPic_MukAlolan[] = INCBIN_U32("graphics/pokemon/muk/alolan/front.4bpp.lz"); -const u32 gMonFrontPic_ExeggutorAlolan[] = INCBIN_U32("graphics/pokemon/exeggutor/alolan/anim_front.4bpp.lz"); -const u32 gMonFrontPic_MarowakAlolan[] = INCBIN_U32("graphics/pokemon/marowak/alolan/front.4bpp.lz"); -const u32 gMonFrontPic_MeowthGalarian[] = INCBIN_U32("graphics/pokemon/meowth/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_PonytaGalarian[] = INCBIN_U32("graphics/pokemon/ponyta/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_RapidashGalarian[] = INCBIN_U32("graphics/pokemon/rapidash/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_SlowpokeGalarian[] = INCBIN_U32("graphics/pokemon/slowpoke/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_SlowbroGalarian[] = INCBIN_U32("graphics/pokemon/slowbro/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_FarfetchdGalarian[] = INCBIN_U32("graphics/pokemon/farfetchd/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_WeezingGalarian[] = INCBIN_U32("graphics/pokemon/weezing/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_MrMimeGalarian[] = INCBIN_U32("graphics/pokemon/mr_mime/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_ArticunoGalarian[] = INCBIN_U32("graphics/pokemon/articuno/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_ZapdosGalarian[] = INCBIN_U32("graphics/pokemon/zapdos/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_MoltresGalarian[] = INCBIN_U32("graphics/pokemon/moltres/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_SlowkingGalarian[] = INCBIN_U32("graphics/pokemon/slowking/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_CorsolaGalarian[] = INCBIN_U32("graphics/pokemon/corsola/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzagoon/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/front.4bpp.lz"); -#if P_GEN_5_POKEMON == TRUE -const u32 gMonFrontPic_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_DarmanitanGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/front.4bpp.lz"); -#endif -const u32 gMonFrontPic_GrowlitheHisuian[] = INCBIN_U32("graphics/pokemon/growlithe/hisuian/front.4bpp.lz"); -const u32 gMonFrontPic_ArcanineHisuian[] = INCBIN_U32("graphics/pokemon/arcanine/hisuian/front.4bpp.lz"); -const u32 gMonFrontPic_VoltorbHisuian[] = INCBIN_U32("graphics/pokemon/voltorb/hisuian/front.4bpp.lz"); -const u32 gMonFrontPic_ElectrodeHisuian[] = INCBIN_U32("graphics/pokemon/electrode/hisuian/front.4bpp.lz"); -const u32 gMonFrontPic_TyphlosionHisuian[] = INCBIN_U32("graphics/pokemon/typhlosion/hisuian/front.4bpp.lz"); -const u32 gMonFrontPic_QwilfishHisuian[] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/front.4bpp.lz"); -const u32 gMonFrontPic_SneaselHisuian[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/front.4bpp.lz"); -const u32 gMonFrontPic_SneaselHisuianF[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/frontf.4bpp.lz"); -#if P_GEN_5_POKEMON == TRUE -const u32 gMonFrontPic_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/front.4bpp.lz"); -const u32 gMonFrontPic_LilligantHisuian[] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/front.4bpp.lz"); -const u32 gMonFrontPic_ZoruaHisuian[] = INCBIN_U32("graphics/pokemon/zorua/hisuian/front.4bpp.lz"); -const u32 gMonFrontPic_ZoroarkHisuian[] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/front.4bpp.lz"); -const u32 gMonFrontPic_BraviaryHisuian[] = INCBIN_U32("graphics/pokemon/braviary/hisuian/front.4bpp.lz"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u32 gMonFrontPic_SliggooHisuian[] = INCBIN_U32("graphics/pokemon/sliggoo/hisuian/front.4bpp.lz"); -const u32 gMonFrontPic_GoodraHisuian[] = INCBIN_U32("graphics/pokemon/goodra/hisuian/front.4bpp.lz"); -const u32 gMonFrontPic_AvaluggHisuian[] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/front.4bpp.lz"); -#endif -#if P_GEN_7_POKEMON == TRUE -const u32 gMonFrontPic_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/front.4bpp.lz"); -#endif -const u32 gMonFrontPic_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/front.4bpp.lz"); -const u32 gMonFrontPic_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/front.4bpp.lz"); -const u32 gMonFrontPic_PikachuBelle[] = INCBIN_U32("graphics/pokemon/pikachu/belle/front.4bpp.lz"); -const u32 gMonFrontPic_PikachuPopStar[] = INCBIN_U32("graphics/pokemon/pikachu/pop_star/front.4bpp.lz"); -const u32 gMonFrontPic_PikachuPhD[] = INCBIN_U32("graphics/pokemon/pikachu/ph_d/front.4bpp.lz"); -const u32 gMonFrontPic_PikachuLibre[] = INCBIN_U32("graphics/pokemon/pikachu/libre/front.4bpp.lz"); -const u32 gMonFrontPic_PikachuOriginalCap[] = INCBIN_U32("graphics/pokemon/pikachu/original_cap/front.4bpp.lz"); -const u32 gMonFrontPic_PikachuHoennCap[] = INCBIN_U32("graphics/pokemon/pikachu/hoenn_cap/front.4bpp.lz"); -const u32 gMonFrontPic_PikachuSinnohCap[] = INCBIN_U32("graphics/pokemon/pikachu/sinnoh_cap/front.4bpp.lz"); -const u32 gMonFrontPic_PikachuUnovaCap[] = INCBIN_U32("graphics/pokemon/pikachu/unova_cap/front.4bpp.lz"); -const u32 gMonFrontPic_PikachuKalosCap[] = INCBIN_U32("graphics/pokemon/pikachu/kalos_cap/front.4bpp.lz"); -const u32 gMonFrontPic_PikachuAlolaCap[] = INCBIN_U32("graphics/pokemon/pikachu/alola_cap/front.4bpp.lz"); -const u32 gMonFrontPic_PikachuPartnerCap[] = INCBIN_U32("graphics/pokemon/pikachu/partner_cap/front.4bpp.lz"); -const u32 gMonFrontPic_PikachuWorldCap[] = INCBIN_U32("graphics/pokemon/pikachu/world_cap/front.4bpp.lz"); -const u32 gMonFrontPic_PichuSpikyEared[] = INCBIN_U32("graphics/pokemon/pichu/spiky_eared/front.4bpp.lz"); -const u32 gMonFrontPic_UnownB[] = INCBIN_U32("graphics/pokemon/unown/b/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownC[] = INCBIN_U32("graphics/pokemon/unown/c/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownD[] = INCBIN_U32("graphics/pokemon/unown/d/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownE[] = INCBIN_U32("graphics/pokemon/unown/e/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownF[] = INCBIN_U32("graphics/pokemon/unown/f/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownG[] = INCBIN_U32("graphics/pokemon/unown/g/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownH[] = INCBIN_U32("graphics/pokemon/unown/h/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownI[] = INCBIN_U32("graphics/pokemon/unown/i/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownJ[] = INCBIN_U32("graphics/pokemon/unown/j/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownK[] = INCBIN_U32("graphics/pokemon/unown/k/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownL[] = INCBIN_U32("graphics/pokemon/unown/l/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownM[] = INCBIN_U32("graphics/pokemon/unown/m/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownN[] = INCBIN_U32("graphics/pokemon/unown/n/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownO[] = INCBIN_U32("graphics/pokemon/unown/o/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownP[] = INCBIN_U32("graphics/pokemon/unown/p/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownQ[] = INCBIN_U32("graphics/pokemon/unown/q/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownR[] = INCBIN_U32("graphics/pokemon/unown/r/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownS[] = INCBIN_U32("graphics/pokemon/unown/s/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownT[] = INCBIN_U32("graphics/pokemon/unown/t/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownU[] = INCBIN_U32("graphics/pokemon/unown/u/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownV[] = INCBIN_U32("graphics/pokemon/unown/v/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownW[] = INCBIN_U32("graphics/pokemon/unown/w/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownX[] = INCBIN_U32("graphics/pokemon/unown/x/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownY[] = INCBIN_U32("graphics/pokemon/unown/y/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownZ[] = INCBIN_U32("graphics/pokemon/unown/z/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownExclamationMark[] = INCBIN_U32("graphics/pokemon/unown/exclamation_mark/anim_front.4bpp.lz"); -const u32 gMonFrontPic_UnownQuestionMark[] = INCBIN_U32("graphics/pokemon/unown/question_mark/anim_front.4bpp.lz"); -const u32 gMonFrontPic_CastformSunny[] = INCBIN_U32("graphics/pokemon/castform/sunny/anim_front.4bpp.lz"); -const u32 gMonFrontPic_CastformRainy[] = INCBIN_U32("graphics/pokemon/castform/rainy/anim_front.4bpp.lz"); -const u32 gMonFrontPic_CastformSnowy[] = INCBIN_U32("graphics/pokemon/castform/snowy/anim_front.4bpp.lz"); -const u32 gMonFrontPic_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/attack/anim_front.4bpp.lz"); -const u32 gMonFrontPic_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/defense/anim_front.4bpp.lz"); -const u32 gMonFrontPic_DeoxysSpeed[] = INCBIN_U32("graphics/pokemon/deoxys/speed/anim_front.4bpp.lz"); -#if P_GEN_4_POKEMON == TRUE -const u32 gMonFrontPic_BurmySandyCloak[] = INCBIN_U32("graphics/pokemon/burmy/sandy_cloak/anim_front.4bpp.lz"); -const u32 gMonFrontPic_BurmyTrashCloak[] = INCBIN_U32("graphics/pokemon/burmy/trash_cloak/anim_front.4bpp.lz"); -const u32 gMonFrontPic_WormadamSandyCloak[] = INCBIN_U32("graphics/pokemon/wormadam/sandy_cloak/anim_front.4bpp.lz"); -const u32 gMonFrontPic_WormadamTrashCloak[] = INCBIN_U32("graphics/pokemon/wormadam/trash_cloak/anim_front.4bpp.lz"); -const u32 gMonFrontPic_CherrimSunshine[] = INCBIN_U32("graphics/pokemon/cherrim/sunshine/anim_front.4bpp.lz"); -const u32 gMonFrontPic_ShellosEastSea[] = INCBIN_U32("graphics/pokemon/shellos/east_sea/anim_front.4bpp.lz"); -const u32 gMonFrontPic_GastrodonEastSea[] = INCBIN_U32("graphics/pokemon/gastrodon/east_sea/anim_front.4bpp.lz"); -const u32 gMonFrontPic_RotomHeat[] = INCBIN_U32("graphics/pokemon/rotom/heat/anim_front.4bpp.lz"); -const u32 gMonFrontPic_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash/anim_front.4bpp.lz"); -const u32 gMonFrontPic_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/anim_front.4bpp.lz"); -const u32 gMonFrontPic_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/anim_front.4bpp.lz"); -const u32 gMonFrontPic_RotomMow[] = INCBIN_U32("graphics/pokemon/rotom/mow/anim_front.4bpp.lz"); -const u32 gMonFrontPic_DialgaOrigin[] = INCBIN_U32("graphics/pokemon/dialga/origin/front.4bpp.lz"); -const u32 gMonFrontPic_PalkiaOrigin[] = INCBIN_U32("graphics/pokemon/palkia/origin/front.4bpp.lz"); -const u32 gMonFrontPic_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/anim_front.4bpp.lz"); -const u32 gMonFrontPic_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/anim_front.4bpp.lz"); -#endif -#if P_GEN_5_POKEMON == TRUE -const u32 gMonFrontPic_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/front.4bpp.lz"); -const u32 gMonFrontPic_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/front.4bpp.lz"); -const u32 gMonFrontPic_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/anim_front.4bpp.lz"); -const u32 gMonFrontPic_DarmanitanZenModeGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/front.4bpp.lz"); -const u32 gMonFrontPic_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/front.4bpp.lz"); -const u32 gMonFrontPic_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/front.4bpp.lz"); -const u32 gMonFrontPic_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/front.4bpp.lz"); -const u32 gMonFrontPic_TornadusTherian[] = INCBIN_U32("graphics/pokemon/tornadus/therian/anim_front.4bpp.lz"); -const u32 gMonFrontPic_ThundurusTherian[] = INCBIN_U32("graphics/pokemon/thundurus/therian/anim_front.4bpp.lz"); -const u32 gMonFrontPic_LandorusTherian[] = INCBIN_U32("graphics/pokemon/landorus/therian/anim_front.4bpp.lz"); -const u32 gMonFrontPic_KyuremWhite[] = INCBIN_U32("graphics/pokemon/kyurem/white/anim_front.4bpp.lz"); -const u32 gMonFrontPic_KyuremBlack[] = INCBIN_U32("graphics/pokemon/kyurem/black/anim_front.4bpp.lz"); -const u32 gMonFrontPic_KeldeoResolute[] = INCBIN_U32("graphics/pokemon/keldeo/resolute/front.4bpp.lz"); -const u32 gMonFrontPic_MeloettaPirouette[] = INCBIN_U32("graphics/pokemon/meloetta/pirouette/front.4bpp.lz"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u32 gMonFrontPic_GreninjaAsh[] = INCBIN_U32("graphics/pokemon/greninja/ash/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonPolar[] = INCBIN_U32("graphics/pokemon/vivillon/polar/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonTundra[] = INCBIN_U32("graphics/pokemon/vivillon/tundra/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonContinental[] = INCBIN_U32("graphics/pokemon/vivillon/continental/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonGarden[] = INCBIN_U32("graphics/pokemon/vivillon/garden/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonElegant[] = INCBIN_U32("graphics/pokemon/vivillon/elegant/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonMeadow[] = INCBIN_U32("graphics/pokemon/vivillon/meadow/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonModern[] = INCBIN_U32("graphics/pokemon/vivillon/modern/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonMarine[] = INCBIN_U32("graphics/pokemon/vivillon/marine/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonArchipelago[] = INCBIN_U32("graphics/pokemon/vivillon/archipelago/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonHighPlains[] = INCBIN_U32("graphics/pokemon/vivillon/high_plains/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonSandstorm[] = INCBIN_U32("graphics/pokemon/vivillon/sandstorm/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonRiver[] = INCBIN_U32("graphics/pokemon/vivillon/river/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonMonsoon[] = INCBIN_U32("graphics/pokemon/vivillon/monsoon/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonSavanna[] = INCBIN_U32("graphics/pokemon/vivillon/savanna/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonSun[] = INCBIN_U32("graphics/pokemon/vivillon/sun/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonOcean[] = INCBIN_U32("graphics/pokemon/vivillon/ocean/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonJungle[] = INCBIN_U32("graphics/pokemon/vivillon/jungle/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonFancy[] = INCBIN_U32("graphics/pokemon/vivillon/fancy/anim_front.4bpp.lz"); -const u32 gMonFrontPic_VivillonPokeBall[] = INCBIN_U32("graphics/pokemon/vivillon/poke_ball/anim_front.4bpp.lz"); -const u32 gMonFrontPic_FloetteEternalFlower[] = INCBIN_U32("graphics/pokemon/floette/eternal_flower/front.4bpp.lz"); -const u32 gMonFrontPic_FurfrouHeartTrim[] = INCBIN_U32("graphics/pokemon/furfrou/heart_trim/anim_front.4bpp.lz"); -const u32 gMonFrontPic_FurfrouStarTrim[] = INCBIN_U32("graphics/pokemon/furfrou/star_trim/anim_front.4bpp.lz"); -const u32 gMonFrontPic_FurfrouDiamondTrim[] = INCBIN_U32("graphics/pokemon/furfrou/diamond_trim/anim_front.4bpp.lz"); -const u32 gMonFrontPic_FurfrouDebutanteTrim[] = INCBIN_U32("graphics/pokemon/furfrou/debutante_trim/anim_front.4bpp.lz"); -const u32 gMonFrontPic_FurfrouMatronTrim[] = INCBIN_U32("graphics/pokemon/furfrou/matron_trim/anim_front.4bpp.lz"); -const u32 gMonFrontPic_FurfrouDandyTrim[] = INCBIN_U32("graphics/pokemon/furfrou/dandy_trim/anim_front.4bpp.lz"); -const u32 gMonFrontPic_FurfrouLaReineTrim[] = INCBIN_U32("graphics/pokemon/furfrou/la_reine_trim/anim_front.4bpp.lz"); -const u32 gMonFrontPic_FurfrouKabukiTrim[] = INCBIN_U32("graphics/pokemon/furfrou/kabuki_trim/anim_front.4bpp.lz"); -const u32 gMonFrontPic_FurfrouPharaohTrim[] = INCBIN_U32("graphics/pokemon/furfrou/pharaoh_trim/anim_front.4bpp.lz"); -const u32 gMonFrontPic_MeowsticFemale[] = INCBIN_U32("graphics/pokemon/meowstic/female/anim_front.4bpp.lz"); -const u32 gMonFrontPic_AegislashBlade[] = INCBIN_U32("graphics/pokemon/aegislash/blade/anim_front.4bpp.lz"); -const u32 gMonFrontPic_PumpkabooSmall[] = INCBIN_U32("graphics/pokemon/pumpkaboo/small/anim_front.4bpp.lz"); -const u32 gMonFrontPic_PumpkabooLarge[] = INCBIN_U32("graphics/pokemon/pumpkaboo/large/anim_front.4bpp.lz"); -const u32 gMonFrontPic_PumpkabooSuper[] = INCBIN_U32("graphics/pokemon/pumpkaboo/super/anim_front.4bpp.lz"); -const u32 gMonFrontPic_GourgeistSmall[] = INCBIN_U32("graphics/pokemon/gourgeist/small/anim_front.4bpp.lz"); -const u32 gMonFrontPic_GourgeistLarge[] = INCBIN_U32("graphics/pokemon/gourgeist/large/anim_front.4bpp.lz"); -const u32 gMonFrontPic_GourgeistSuper[] = INCBIN_U32("graphics/pokemon/gourgeist/super/anim_front.4bpp.lz"); -const u32 gMonFrontPic_XerneasActive[] = INCBIN_U32("graphics/pokemon/xerneas/active/anim_front.4bpp.lz"); -const u32 gMonFrontPic_Zygarde10[] = INCBIN_U32("graphics/pokemon/zygarde/10_percent/anim_front.4bpp.lz"); -const u32 gMonFrontPic_ZygardeComplete[] = INCBIN_U32("graphics/pokemon/zygarde/complete/anim_front.4bpp.lz"); -const u32 gMonFrontPic_HoopaUnbound[] = INCBIN_U32("graphics/pokemon/hoopa/unbound/anim_front.4bpp.lz"); -#endif -#if P_GEN_7_POKEMON == TRUE -const u32 gMonFrontPic_OricorioPomPom[] = INCBIN_U32("graphics/pokemon/oricorio/pom_pom/front.4bpp.lz"); -const u32 gMonFrontPic_OricorioPau[] = INCBIN_U32("graphics/pokemon/oricorio/pau/front.4bpp.lz"); -const u32 gMonFrontPic_OricorioSensu[] = INCBIN_U32("graphics/pokemon/oricorio/sensu/front.4bpp.lz"); -const u32 gMonFrontPic_LycanrocMidnight[] = INCBIN_U32("graphics/pokemon/lycanroc/midnight/front.4bpp.lz"); -const u32 gMonFrontPic_LycanrocDusk[] = INCBIN_U32("graphics/pokemon/lycanroc/dusk/front.4bpp.lz"); -const u32 gMonFrontPic_WishiwashiSchool[] = INCBIN_U32("graphics/pokemon/wishiwashi/school/front.4bpp.lz"); -const u32 gMonFrontPic_MiniorCore[] = INCBIN_U32("graphics/pokemon/minior/core/front.4bpp.lz"); -const u32 gMonFrontPic_MimikyuBusted[] = INCBIN_U32("graphics/pokemon/mimikyu/busted/front.4bpp.lz"); -const u32 gMonFrontPic_NecrozmaDuskMane[] = INCBIN_U32("graphics/pokemon/necrozma/dusk_mane/front.4bpp.lz"); -const u32 gMonFrontPic_NecrozmaDawnWings[] = INCBIN_U32("graphics/pokemon/necrozma/dawn_wings/front.4bpp.lz"); -const u32 gMonFrontPic_NecrozmaUltra[] = INCBIN_U32("graphics/pokemon/necrozma/ultra/front.4bpp.lz"); -const u32 gMonFrontPic_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/magearna/original_color/front.4bpp.lz"); -#endif -#if P_GEN_8_POKEMON == TRUE -const u32 gMonFrontPic_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/front.4bpp.lz"); -const u32 gMonFrontPic_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/front.4bpp.lz"); -const u32 gMonFrontPic_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_cream/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/matcha_cream/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/mint_cream/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/lemon_cream/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/salted_cream/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_swirl/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/caramel_swirl/front.4bpp.lz"); -const u32 gMonFrontPic_AlcremieRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/rainbow_swirl/front.4bpp.lz"); -const u32 gMonFrontPic_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/front.4bpp.lz"); -const u32 gMonFrontPic_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/front.4bpp.lz"); -const u32 gMonFrontPic_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/front.4bpp.lz"); -const u32 gMonFrontPic_ZacianCrownedSword[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/front.4bpp.lz"); -const u32 gMonFrontPic_ZamazentaCrownedShield[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/front.4bpp.lz"); -const u32 gMonFrontPic_EternatusEternamax[] = INCBIN_U32("graphics/pokemon/eternatus/eternamax/front.4bpp.lz"); -const u32 gMonFrontPic_UrshifuRapidStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style/front.4bpp.lz"); -const u32 gMonFrontPic_ZarudeDada[] = INCBIN_U32("graphics/pokemon/zarude/dada/front.4bpp.lz"); -const u32 gMonFrontPic_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ice_rider/front.4bpp.lz"); -const u32 gMonFrontPic_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/front.4bpp.lz"); -const u32 gMonFrontPic_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/front.4bpp.lz"); -const u32 gMonFrontPic_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/front.4bpp.lz"); -#endif -const u32 gMonFrontPic_Egg[] = INCBIN_U32("graphics/pokemon/egg/anim_front.4bpp.lz"); - const u32 gMonBackPic_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/question_mark/circled/back.4bpp.lz"); -const u32 gMonBackPic_DoubleQuestionMark[] = INCBIN_U32("graphics/pokemon/question_mark/double/back.4bpp.lz"); -const u32 gMonBackPic_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/back.4bpp.lz"); -const u32 gMonBackPic_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/back.4bpp.lz"); -const u32 gMonBackPic_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/back.4bpp.lz"); -const u32 gMonBackPic_VenusaurF[] = INCBIN_U32("graphics/pokemon/venusaur/backf.4bpp.lz"); -const u32 gMonBackPic_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/back.4bpp.lz"); -const u32 gMonBackPic_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/back.4bpp.lz"); -const u32 gMonBackPic_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/back.4bpp.lz"); -const u32 gMonBackPic_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/back.4bpp.lz"); -const u32 gMonBackPic_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/back.4bpp.lz"); -const u32 gMonBackPic_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/back.4bpp.lz"); -const u32 gMonBackPic_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/back.4bpp.lz"); -const u32 gMonBackPic_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/back.4bpp.lz"); -const u32 gMonBackPic_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/back.4bpp.lz"); -const u32 gMonBackPic_ButterfreeF[] = INCBIN_U32("graphics/pokemon/butterfree/backf.4bpp.lz"); -const u32 gMonBackPic_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/back.4bpp.lz"); -const u32 gMonBackPic_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/back.4bpp.lz"); -const u32 gMonBackPic_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/back.4bpp.lz"); -const u32 gMonBackPic_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/back.4bpp.lz"); -const u32 gMonBackPic_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/back.4bpp.lz"); -const u32 gMonBackPic_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/back.4bpp.lz"); -const u32 gMonBackPic_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/back.4bpp.lz"); -const u32 gMonBackPic_RattataF[] = INCBIN_U32("graphics/pokemon/rattata/backf.4bpp.lz"); -const u32 gMonBackPic_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/back.4bpp.lz"); -const u32 gMonBackPic_RaticateF[] = INCBIN_U32("graphics/pokemon/raticate/backf.4bpp.lz"); -const u32 gMonBackPic_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/back.4bpp.lz"); -const u32 gMonBackPic_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/back.4bpp.lz"); -const u32 gMonBackPic_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/back.4bpp.lz"); -const u32 gMonBackPic_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/back.4bpp.lz"); -const u32 gMonBackPic_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/back.4bpp.lz"); -const u32 gMonBackPic_PikachuF[] = INCBIN_U32("graphics/pokemon/pikachu/backf.4bpp.lz"); -const u32 gMonBackPic_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/back.4bpp.lz"); -const u32 gMonBackPic_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/back.4bpp.lz"); -const u32 gMonBackPic_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/back.4bpp.lz"); -const u32 gMonBackPic_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/back.4bpp.lz"); -const u32 gMonBackPic_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/back.4bpp.lz"); -const u32 gMonBackPic_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/back.4bpp.lz"); -const u32 gMonBackPic_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/back.4bpp.lz"); -const u32 gMonBackPic_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/back.4bpp.lz"); -const u32 gMonBackPic_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/back.4bpp.lz"); -const u32 gMonBackPic_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/back.4bpp.lz"); -const u32 gMonBackPic_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/back.4bpp.lz"); -const u32 gMonBackPic_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/back.4bpp.lz"); -const u32 gMonBackPic_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/back.4bpp.lz"); -const u32 gMonBackPic_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/back.4bpp.lz"); -const u32 gMonBackPic_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/back.4bpp.lz"); -const u32 gMonBackPic_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/back.4bpp.lz"); -const u32 gMonBackPic_ZubatF[] = INCBIN_U32("graphics/pokemon/zubat/backf.4bpp.lz"); -const u32 gMonBackPic_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/back.4bpp.lz"); -const u32 gMonBackPic_GolbatF[] = INCBIN_U32("graphics/pokemon/golbat/backf.4bpp.lz"); -const u32 gMonBackPic_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/back.4bpp.lz"); -const u32 gMonBackPic_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/back.4bpp.lz"); -const u32 gMonBackPic_GloomF[] = INCBIN_U32("graphics/pokemon/gloom/backf.4bpp.lz"); -const u32 gMonBackPic_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/back.4bpp.lz"); -const u32 gMonBackPic_VileplumeF[] = INCBIN_U32("graphics/pokemon/vileplume/backf.4bpp.lz"); -const u32 gMonBackPic_Paras[] = INCBIN_U32("graphics/pokemon/paras/back.4bpp.lz"); -const u32 gMonBackPic_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/back.4bpp.lz"); -const u32 gMonBackPic_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/back.4bpp.lz"); -const u32 gMonBackPic_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/back.4bpp.lz"); -const u32 gMonBackPic_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/back.4bpp.lz"); -const u32 gMonBackPic_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/back.4bpp.lz"); -const u32 gMonBackPic_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/back.4bpp.lz"); -const u32 gMonBackPic_Persian[] = INCBIN_U32("graphics/pokemon/persian/back.4bpp.lz"); -const u32 gMonBackPic_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/back.4bpp.lz"); -const u32 gMonBackPic_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/back.4bpp.lz"); -const u32 gMonBackPic_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/back.4bpp.lz"); -const u32 gMonBackPic_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/back.4bpp.lz"); -const u32 gMonBackPic_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/back.4bpp.lz"); -const u32 gMonBackPic_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/back.4bpp.lz"); -const u32 gMonBackPic_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/back.4bpp.lz"); -const u32 gMonBackPic_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/back.4bpp.lz"); -const u32 gMonBackPic_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/back.4bpp.lz"); -const u32 gMonBackPic_Abra[] = INCBIN_U32("graphics/pokemon/abra/back.4bpp.lz"); -const u32 gMonBackPic_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/back.4bpp.lz"); -const u32 gMonBackPic_KadabraF[] = INCBIN_U32("graphics/pokemon/kadabra/backf.4bpp.lz"); -const u32 gMonBackPic_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/back.4bpp.lz"); -const u32 gMonBackPic_AlakazamF[] = INCBIN_U32("graphics/pokemon/alakazam/backf.4bpp.lz"); -const u32 gMonBackPic_Machop[] = INCBIN_U32("graphics/pokemon/machop/back.4bpp.lz"); -const u32 gMonBackPic_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/back.4bpp.lz"); -const u32 gMonBackPic_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/back.4bpp.lz"); -const u32 gMonBackPic_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/back.4bpp.lz"); -const u32 gMonBackPic_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/back.4bpp.lz"); -const u32 gMonBackPic_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/back.4bpp.lz"); -const u32 gMonBackPic_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/back.4bpp.lz"); -const u32 gMonBackPic_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/back.4bpp.lz"); -const u32 gMonBackPic_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/back.4bpp.lz"); -const u32 gMonBackPic_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/back.4bpp.lz"); -const u32 gMonBackPic_Golem[] = INCBIN_U32("graphics/pokemon/golem/back.4bpp.lz"); -const u32 gMonBackPic_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/back.4bpp.lz"); -const u32 gMonBackPic_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/back.4bpp.lz"); -const u32 gMonBackPic_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/back.4bpp.lz"); -const u32 gMonBackPic_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/back.4bpp.lz"); -const u32 gMonBackPic_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/back.4bpp.lz"); -const u32 gMonBackPic_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/back.4bpp.lz"); -const u32 gMonBackPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/back.4bpp.lz"); -const u32 gMonBackPic_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/back.4bpp.lz"); -const u32 gMonBackPic_DoduoF[] = INCBIN_U32("graphics/pokemon/doduo/backf.4bpp.lz"); -const u32 gMonBackPic_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/back.4bpp.lz"); -const u32 gMonBackPic_DodrioF[] = INCBIN_U32("graphics/pokemon/dodrio/backf.4bpp.lz"); -const u32 gMonBackPic_Seel[] = INCBIN_U32("graphics/pokemon/seel/back.4bpp.lz"); -const u32 gMonBackPic_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/back.4bpp.lz"); -const u32 gMonBackPic_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/back.4bpp.lz"); -const u32 gMonBackPic_Muk[] = INCBIN_U32("graphics/pokemon/muk/back.4bpp.lz"); -const u32 gMonBackPic_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/back.4bpp.lz"); -const u32 gMonBackPic_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/back.4bpp.lz"); -const u32 gMonBackPic_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/back.4bpp.lz"); -const u32 gMonBackPic_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/back.4bpp.lz"); -const u32 gMonBackPic_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/back.4bpp.lz"); -const u32 gMonBackPic_Onix[] = INCBIN_U32("graphics/pokemon/onix/back.4bpp.lz"); -const u32 gMonBackPic_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/back.4bpp.lz"); -const u32 gMonBackPic_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/back.4bpp.lz"); -const u32 gMonBackPic_HypnoF[] = INCBIN_U32("graphics/pokemon/hypno/backf.4bpp.lz"); -const u32 gMonBackPic_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/back.4bpp.lz"); -const u32 gMonBackPic_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/back.4bpp.lz"); -const u32 gMonBackPic_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/back.4bpp.lz"); -const u32 gMonBackPic_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/back.4bpp.lz"); -const u32 gMonBackPic_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/back.4bpp.lz"); -const u32 gMonBackPic_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/back.4bpp.lz"); -const u32 gMonBackPic_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/back.4bpp.lz"); -const u32 gMonBackPic_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/back.4bpp.lz"); -const u32 gMonBackPic_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/back.4bpp.lz"); -const u32 gMonBackPic_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/back.4bpp.lz"); -const u32 gMonBackPic_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/back.4bpp.lz"); -const u32 gMonBackPic_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/back.4bpp.lz"); -const u32 gMonBackPic_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/back.4bpp.lz"); -const u32 gMonBackPic_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/back.4bpp.lz"); -const u32 gMonBackPic_RhyhornF[] = INCBIN_U32("graphics/pokemon/rhyhorn/backf.4bpp.lz"); -const u32 gMonBackPic_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/back.4bpp.lz"); -const u32 gMonBackPic_RhydonF[] = INCBIN_U32("graphics/pokemon/rhydon/backf.4bpp.lz"); -const u32 gMonBackPic_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/back.4bpp.lz"); -const u32 gMonBackPic_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/back.4bpp.lz"); -const u32 gMonBackPic_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/back.4bpp.lz"); -const u32 gMonBackPic_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/back.4bpp.lz"); -const u32 gMonBackPic_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/back.4bpp.lz"); -const u32 gMonBackPic_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/back.4bpp.lz"); -const u32 gMonBackPic_GoldeenF[] = INCBIN_U32("graphics/pokemon/goldeen/backf.4bpp.lz"); -const u32 gMonBackPic_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/back.4bpp.lz"); -const u32 gMonBackPic_SeakingF[] = INCBIN_U32("graphics/pokemon/seaking/backf.4bpp.lz"); -const u32 gMonBackPic_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/back.4bpp.lz"); -const u32 gMonBackPic_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/back.4bpp.lz"); -const u32 gMonBackPic_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/back.4bpp.lz"); -const u32 gMonBackPic_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/back.4bpp.lz"); -const u32 gMonBackPic_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/back.4bpp.lz"); -const u32 gMonBackPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/back.4bpp.lz"); -const u32 gMonBackPic_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/back.4bpp.lz"); -const u32 gMonBackPic_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/back.4bpp.lz"); -const u32 gMonBackPic_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/back.4bpp.lz"); -const u32 gMonBackPic_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/back.4bpp.lz"); -const u32 gMonBackPic_MagikarpF[] = INCBIN_U32("graphics/pokemon/magikarp/backf.4bpp.lz"); -const u32 gMonBackPic_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/back.4bpp.lz"); -const u32 gMonBackPic_GyaradosF[] = INCBIN_U32("graphics/pokemon/gyarados/backf.4bpp.lz"); -const u32 gMonBackPic_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/back.4bpp.lz"); -const u32 gMonBackPic_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/back.4bpp.lz"); -const u32 gMonBackPic_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/back.4bpp.lz"); -const u32 gMonBackPic_EeveeF[] = INCBIN_U32("graphics/pokemon/eevee/backf.4bpp.lz"); -const u32 gMonBackPic_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/back.4bpp.lz"); -const u32 gMonBackPic_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/back.4bpp.lz"); -const u32 gMonBackPic_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/back.4bpp.lz"); -const u32 gMonBackPic_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/back.4bpp.lz"); -const u32 gMonBackPic_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/back.4bpp.lz"); -const u32 gMonBackPic_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/back.4bpp.lz"); -const u32 gMonBackPic_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/back.4bpp.lz"); -const u32 gMonBackPic_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/back.4bpp.lz"); -const u32 gMonBackPic_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/back.4bpp.lz"); -const u32 gMonBackPic_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/back.4bpp.lz"); -const u32 gMonBackPic_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/back.4bpp.lz"); -const u32 gMonBackPic_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/back.4bpp.lz"); -const u32 gMonBackPic_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/back.4bpp.lz"); -const u32 gMonBackPic_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/back.4bpp.lz"); -const u32 gMonBackPic_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/back.4bpp.lz"); -const u32 gMonBackPic_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/back.4bpp.lz"); -const u32 gMonBackPic_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/back.4bpp.lz"); -const u32 gMonBackPic_Mew[] = INCBIN_U32("graphics/pokemon/mew/back.4bpp.lz"); -const u32 gMonBackPic_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/back.4bpp.lz"); -const u32 gMonBackPic_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/back.4bpp.lz"); -const u32 gMonBackPic_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/back.4bpp.lz"); -const u32 gMonBackPic_MeganiumF[] = INCBIN_U32("graphics/pokemon/meganium/backf.4bpp.lz"); -const u32 gMonBackPic_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/back.4bpp.lz"); -const u32 gMonBackPic_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/back.4bpp.lz"); -const u32 gMonBackPic_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/back.4bpp.lz"); -const u32 gMonBackPic_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/back.4bpp.lz"); -const u32 gMonBackPic_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/back.4bpp.lz"); -const u32 gMonBackPic_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/back.4bpp.lz"); -const u32 gMonBackPic_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/back.4bpp.lz"); -const u32 gMonBackPic_Furret[] = INCBIN_U32("graphics/pokemon/furret/back.4bpp.lz"); -const u32 gMonBackPic_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/back.4bpp.lz"); -const u32 gMonBackPic_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/back.4bpp.lz"); -const u32 gMonBackPic_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/back.4bpp.lz"); -const u32 gMonBackPic_LedybaF[] = INCBIN_U32("graphics/pokemon/ledyba/backf.4bpp.lz"); -const u32 gMonBackPic_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/back.4bpp.lz"); -const u32 gMonBackPic_LedianF[] = INCBIN_U32("graphics/pokemon/ledian/backf.4bpp.lz"); -const u32 gMonBackPic_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/back.4bpp.lz"); -const u32 gMonBackPic_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/back.4bpp.lz"); -const u32 gMonBackPic_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/back.4bpp.lz"); -const u32 gMonBackPic_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/back.4bpp.lz"); -const u32 gMonBackPic_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/back.4bpp.lz"); -const u32 gMonBackPic_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/back.4bpp.lz"); -const u32 gMonBackPic_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/back.4bpp.lz"); -const u32 gMonBackPic_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/back.4bpp.lz"); -const u32 gMonBackPic_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/back.4bpp.lz"); -const u32 gMonBackPic_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/back.4bpp.lz"); -const u32 gMonBackPic_Natu[] = INCBIN_U32("graphics/pokemon/natu/back.4bpp.lz"); -const u32 gMonBackPic_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/back.4bpp.lz"); -const u32 gMonBackPic_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/back.4bpp.lz"); -const u32 gMonBackPic_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/back.4bpp.lz"); -const u32 gMonBackPic_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/back.4bpp.lz"); -const u32 gMonBackPic_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/back.4bpp.lz"); -const u32 gMonBackPic_Marill[] = INCBIN_U32("graphics/pokemon/marill/back.4bpp.lz"); -const u32 gMonBackPic_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/back.4bpp.lz"); -const u32 gMonBackPic_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/back.4bpp.lz"); -const u32 gMonBackPic_SudowoodoF[] = INCBIN_U32("graphics/pokemon/sudowoodo/backf.4bpp.lz"); -const u32 gMonBackPic_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/back.4bpp.lz"); -const u32 gMonBackPic_PolitoedF[] = INCBIN_U32("graphics/pokemon/politoed/backf.4bpp.lz"); -const u32 gMonBackPic_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/back.4bpp.lz"); -const u32 gMonBackPic_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/back.4bpp.lz"); -const u32 gMonBackPic_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/back.4bpp.lz"); -const u32 gMonBackPic_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/back.4bpp.lz"); -const u32 gMonBackPic_AipomF[] = INCBIN_U32("graphics/pokemon/aipom/backf.4bpp.lz"); -const u32 gMonBackPic_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/back.4bpp.lz"); -const u32 gMonBackPic_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/back.4bpp.lz"); -const u32 gMonBackPic_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/back.4bpp.lz"); -const u32 gMonBackPic_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/back.4bpp.lz"); -const u32 gMonBackPic_WooperF[] = INCBIN_U32("graphics/pokemon/wooper/backf.4bpp.lz"); -const u32 gMonBackPic_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/back.4bpp.lz"); -const u32 gMonBackPic_QuagsireF[] = INCBIN_U32("graphics/pokemon/quagsire/backf.4bpp.lz"); -const u32 gMonBackPic_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/back.4bpp.lz"); -const u32 gMonBackPic_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/back.4bpp.lz"); -const u32 gMonBackPic_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/back.4bpp.lz"); -const u32 gMonBackPic_MurkrowF[] = INCBIN_U32("graphics/pokemon/murkrow/backf.4bpp.lz"); -const u32 gMonBackPic_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/back.4bpp.lz"); -const u32 gMonBackPic_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/back.4bpp.lz"); -const u32 gMonBackPic_Unown[] = INCBIN_U32("graphics/pokemon/unown/back.4bpp.lz"); -const u32 gMonBackPic_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/back.4bpp.lz"); -const u32 gMonBackPic_WobbuffetF[] = INCBIN_U32("graphics/pokemon/wobbuffet/backf.4bpp.lz"); -const u32 gMonBackPic_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/back.4bpp.lz"); -const u32 gMonBackPic_GirafarigF[] = INCBIN_U32("graphics/pokemon/girafarig/backf.4bpp.lz"); -const u32 gMonBackPic_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/back.4bpp.lz"); -const u32 gMonBackPic_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/back.4bpp.lz"); -const u32 gMonBackPic_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/back.4bpp.lz"); -const u32 gMonBackPic_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/back.4bpp.lz"); -const u32 gMonBackPic_GligarF[] = INCBIN_U32("graphics/pokemon/gligar/backf.4bpp.lz"); -const u32 gMonBackPic_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/back.4bpp.lz"); -const u32 gMonBackPic_SteelixF[] = INCBIN_U32("graphics/pokemon/steelix/backf.4bpp.lz"); -const u32 gMonBackPic_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/back.4bpp.lz"); -const u32 gMonBackPic_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/back.4bpp.lz"); -const u32 gMonBackPic_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/back.4bpp.lz"); -const u32 gMonBackPic_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/back.4bpp.lz"); -const u32 gMonBackPic_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/back.4bpp.lz"); -const u32 gMonBackPic_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/back.4bpp.lz"); -const u32 gMonBackPic_HeracrossF[] = INCBIN_U32("graphics/pokemon/heracross/backf.4bpp.lz"); -const u32 gMonBackPic_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/back.4bpp.lz"); -const u32 gMonBackPic_SneaselF[] = INCBIN_U32("graphics/pokemon/sneasel/backf.4bpp.lz"); -const u32 gMonBackPic_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/back.4bpp.lz"); -const u32 gMonBackPic_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/back.4bpp.lz"); -const u32 gMonBackPic_UrsaringF[] = INCBIN_U32("graphics/pokemon/ursaring/backf.4bpp.lz"); -const u32 gMonBackPic_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/back.4bpp.lz"); -const u32 gMonBackPic_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/back.4bpp.lz"); -const u32 gMonBackPic_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/back.4bpp.lz"); -const u32 gMonBackPic_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/back.4bpp.lz"); -const u32 gMonBackPic_PiloswineF[] = INCBIN_U32("graphics/pokemon/piloswine/backf.4bpp.lz"); -const u32 gMonBackPic_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/back.4bpp.lz"); -const u32 gMonBackPic_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/back.4bpp.lz"); -const u32 gMonBackPic_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/back.4bpp.lz"); -const u32 gMonBackPic_OctilleryF[] = INCBIN_U32("graphics/pokemon/octillery/backf.4bpp.lz"); -const u32 gMonBackPic_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/back.4bpp.lz"); -const u32 gMonBackPic_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/back.4bpp.lz"); -const u32 gMonBackPic_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/back.4bpp.lz"); -const u32 gMonBackPic_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/back.4bpp.lz"); -const u32 gMonBackPic_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/back.4bpp.lz"); -const u32 gMonBackPic_HoundoomF[] = INCBIN_U32("graphics/pokemon/houndoom/backf.4bpp.lz"); -const u32 gMonBackPic_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/back.4bpp.lz"); -const u32 gMonBackPic_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/back.4bpp.lz"); -const u32 gMonBackPic_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/back.4bpp.lz"); -const u32 gMonBackPic_DonphanF[] = INCBIN_U32("graphics/pokemon/donphan/backf.4bpp.lz"); -const u32 gMonBackPic_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/back.4bpp.lz"); -const u32 gMonBackPic_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/back.4bpp.lz"); -const u32 gMonBackPic_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/back.4bpp.lz"); -const u32 gMonBackPic_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/back.4bpp.lz"); -const u32 gMonBackPic_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/back.4bpp.lz"); -const u32 gMonBackPic_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/back.4bpp.lz"); -const u32 gMonBackPic_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/back.4bpp.lz"); -const u32 gMonBackPic_Magby[] = INCBIN_U32("graphics/pokemon/magby/back.4bpp.lz"); -const u32 gMonBackPic_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/back.4bpp.lz"); -const u32 gMonBackPic_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/back.4bpp.lz"); -const u32 gMonBackPic_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/back.4bpp.lz"); -const u32 gMonBackPic_Entei[] = INCBIN_U32("graphics/pokemon/entei/back.4bpp.lz"); -const u32 gMonBackPic_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/back.4bpp.lz"); -const u32 gMonBackPic_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/back.4bpp.lz"); -const u32 gMonBackPic_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/back.4bpp.lz"); -const u32 gMonBackPic_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/back.4bpp.lz"); -const u32 gMonBackPic_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/back.4bpp.lz"); -const u32 gMonBackPic_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/back.4bpp.lz"); -const u32 gMonBackPic_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/back.4bpp.lz"); -const u32 gMonBackPic_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/back.4bpp.lz"); -const u32 gMonBackPic_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/back.4bpp.lz"); -const u32 gMonBackPic_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/back.4bpp.lz"); -const u32 gMonBackPic_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/back.4bpp.lz"); -const u32 gMonBackPic_TorchicF[] = INCBIN_U32("graphics/pokemon/torchic/backf.4bpp.lz"); -const u32 gMonBackPic_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/back.4bpp.lz"); -const u32 gMonBackPic_CombuskenF[] = INCBIN_U32("graphics/pokemon/combusken/backf.4bpp.lz"); -const u32 gMonBackPic_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/back.4bpp.lz"); -const u32 gMonBackPic_BlazikenF[] = INCBIN_U32("graphics/pokemon/blaziken/backf.4bpp.lz"); -const u32 gMonBackPic_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/back.4bpp.lz"); -const u32 gMonBackPic_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/back.4bpp.lz"); -const u32 gMonBackPic_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/back.4bpp.lz"); -const u32 gMonBackPic_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/back.4bpp.lz"); -const u32 gMonBackPic_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/back.4bpp.lz"); -const u32 gMonBackPic_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/back.4bpp.lz"); -const u32 gMonBackPic_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/back.4bpp.lz"); -const u32 gMonBackPic_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/back.4bpp.lz"); -const u32 gMonBackPic_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/back.4bpp.lz"); -const u32 gMonBackPic_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/back.4bpp.lz"); -const u32 gMonBackPic_BeautiflyF[] = INCBIN_U32("graphics/pokemon/beautifly/backf.4bpp.lz"); -const u32 gMonBackPic_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/back.4bpp.lz"); -const u32 gMonBackPic_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/back.4bpp.lz"); -const u32 gMonBackPic_DustoxF[] = INCBIN_U32("graphics/pokemon/dustox/backf.4bpp.lz"); -const u32 gMonBackPic_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/back.4bpp.lz"); -const u32 gMonBackPic_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/back.4bpp.lz"); -const u32 gMonBackPic_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/back.4bpp.lz"); -const u32 gMonBackPic_LudicoloF[] = INCBIN_U32("graphics/pokemon/ludicolo/backf.4bpp.lz"); -const u32 gMonBackPic_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/back.4bpp.lz"); -const u32 gMonBackPic_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/back.4bpp.lz"); -const u32 gMonBackPic_NuzleafF[] = INCBIN_U32("graphics/pokemon/nuzleaf/backf.4bpp.lz"); -const u32 gMonBackPic_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/back.4bpp.lz"); -const u32 gMonBackPic_ShiftryF[] = INCBIN_U32("graphics/pokemon/shiftry/backf.4bpp.lz"); -const u32 gMonBackPic_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/back.4bpp.lz"); -const u32 gMonBackPic_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/back.4bpp.lz"); -const u32 gMonBackPic_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/back.4bpp.lz"); -const u32 gMonBackPic_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/back.4bpp.lz"); -const u32 gMonBackPic_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/back.4bpp.lz"); -const u32 gMonBackPic_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/back.4bpp.lz"); -const u32 gMonBackPic_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/back.4bpp.lz"); -const u32 gMonBackPic_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/back.4bpp.lz"); -const u32 gMonBackPic_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/back.4bpp.lz"); -const u32 gMonBackPic_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/back.4bpp.lz"); -const u32 gMonBackPic_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/back.4bpp.lz"); -const u32 gMonBackPic_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/back.4bpp.lz"); -const u32 gMonBackPic_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/back.4bpp.lz"); -const u32 gMonBackPic_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/back.4bpp.lz"); -const u32 gMonBackPic_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/back.4bpp.lz"); -const u32 gMonBackPic_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/back.4bpp.lz"); -const u32 gMonBackPic_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/back.4bpp.lz"); -const u32 gMonBackPic_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/back.4bpp.lz"); -const u32 gMonBackPic_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/back.4bpp.lz"); -const u32 gMonBackPic_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/back.4bpp.lz"); -const u32 gMonBackPic_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/back.4bpp.lz"); -const u32 gMonBackPic_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/back.4bpp.lz"); -const u32 gMonBackPic_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/back.4bpp.lz"); -const u32 gMonBackPic_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/back.4bpp.lz"); -const u32 gMonBackPic_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/back.4bpp.lz"); -const u32 gMonBackPic_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/back.4bpp.lz"); -const u32 gMonBackPic_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/back.4bpp.lz"); -const u32 gMonBackPic_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/back.4bpp.lz"); -const u32 gMonBackPic_Aron[] = INCBIN_U32("graphics/pokemon/aron/back.4bpp.lz"); -const u32 gMonBackPic_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/back.4bpp.lz"); -const u32 gMonBackPic_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/back.4bpp.lz"); -const u32 gMonBackPic_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/back.4bpp.lz"); -const u32 gMonBackPic_MedititeF[] = INCBIN_U32("graphics/pokemon/meditite/backf.4bpp.lz"); -const u32 gMonBackPic_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/back.4bpp.lz"); -const u32 gMonBackPic_MedichamF[] = INCBIN_U32("graphics/pokemon/medicham/backf.4bpp.lz"); -const u32 gMonBackPic_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/back.4bpp.lz"); -const u32 gMonBackPic_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/back.4bpp.lz"); -const u32 gMonBackPic_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/back.4bpp.lz"); -const u32 gMonBackPic_Minun[] = INCBIN_U32("graphics/pokemon/minun/back.4bpp.lz"); -const u32 gMonBackPic_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/back.4bpp.lz"); -const u32 gMonBackPic_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/back.4bpp.lz"); -const u32 gMonBackPic_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/back.4bpp.lz"); -const u32 gMonBackPic_RoseliaF[] = INCBIN_U32("graphics/pokemon/roselia/backf.4bpp.lz"); -const u32 gMonBackPic_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/back.4bpp.lz"); -const u32 gMonBackPic_GulpinF[] = INCBIN_U32("graphics/pokemon/gulpin/backf.4bpp.lz"); -const u32 gMonBackPic_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/back.4bpp.lz"); -const u32 gMonBackPic_SwalotF[] = INCBIN_U32("graphics/pokemon/swalot/backf.4bpp.lz"); -const u32 gMonBackPic_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/back.4bpp.lz"); -const u32 gMonBackPic_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/back.4bpp.lz"); -const u32 gMonBackPic_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/back.4bpp.lz"); -const u32 gMonBackPic_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/back.4bpp.lz"); -const u32 gMonBackPic_Numel[] = INCBIN_U32("graphics/pokemon/numel/back.4bpp.lz"); -const u32 gMonBackPic_NumelF[] = INCBIN_U32("graphics/pokemon/numel/backf.4bpp.lz"); -const u32 gMonBackPic_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/back.4bpp.lz"); -const u32 gMonBackPic_CameruptF[] = INCBIN_U32("graphics/pokemon/camerupt/backf.4bpp.lz"); -const u32 gMonBackPic_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/back.4bpp.lz"); -const u32 gMonBackPic_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/back.4bpp.lz"); -const u32 gMonBackPic_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/back.4bpp.lz"); -const u32 gMonBackPic_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/back.4bpp.lz"); -const u32 gMonBackPic_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/back.4bpp.lz"); -const u32 gMonBackPic_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/back.4bpp.lz"); -const u32 gMonBackPic_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/back.4bpp.lz"); -const u32 gMonBackPic_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/back.4bpp.lz"); -const u32 gMonBackPic_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/back.4bpp.lz"); -const u32 gMonBackPic_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/back.4bpp.lz"); -const u32 gMonBackPic_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/back.4bpp.lz"); -const u32 gMonBackPic_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/back.4bpp.lz"); -const u32 gMonBackPic_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/back.4bpp.lz"); -const u32 gMonBackPic_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/back.4bpp.lz"); -const u32 gMonBackPic_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/back.4bpp.lz"); -const u32 gMonBackPic_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/back.4bpp.lz"); -const u32 gMonBackPic_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/back.4bpp.lz"); -const u32 gMonBackPic_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/back.4bpp.lz"); -const u32 gMonBackPic_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/back.4bpp.lz"); -const u32 gMonBackPic_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/back.4bpp.lz"); -const u32 gMonBackPic_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/back.4bpp.lz"); -const u32 gMonBackPic_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/back.4bpp.lz"); -const u32 gMonBackPic_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/back.4bpp.lz"); -const u32 gMonBackPic_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/back.4bpp.lz"); -const u32 gMonBackPic_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/back.4bpp.lz"); -const u32 gMonBackPic_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/back.4bpp.lz"); -const u32 gMonBackPic_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/back.4bpp.lz"); -const u32 gMonBackPic_MiloticF[] = INCBIN_U32("graphics/pokemon/milotic/backf.4bpp.lz"); -const u32 gMonBackPic_Castform[] = INCBIN_U32("graphics/pokemon/castform/back.4bpp.lz"); -const u32 gMonBackPic_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/back.4bpp.lz"); -const u32 gMonBackPic_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/back.4bpp.lz"); -const u32 gMonBackPic_Banette[] = INCBIN_U32("graphics/pokemon/banette/back.4bpp.lz"); -const u32 gMonBackPic_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/back.4bpp.lz"); -const u32 gMonBackPic_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/back.4bpp.lz"); -const u32 gMonBackPic_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/back.4bpp.lz"); -const u32 gMonBackPic_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/back.4bpp.lz"); -const u32 gMonBackPic_Absol[] = INCBIN_U32("graphics/pokemon/absol/back.4bpp.lz"); -const u32 gMonBackPic_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/back.4bpp.lz"); -const u32 gMonBackPic_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/back.4bpp.lz"); -const u32 gMonBackPic_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/back.4bpp.lz"); -const u32 gMonBackPic_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/back.4bpp.lz"); -const u32 gMonBackPic_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/back.4bpp.lz"); -const u32 gMonBackPic_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/back.4bpp.lz"); -const u32 gMonBackPic_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/back.4bpp.lz"); -const u32 gMonBackPic_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/back.4bpp.lz"); -const u32 gMonBackPic_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/back.4bpp.lz"); -const u32 gMonBackPic_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/back.4bpp.lz"); -const u32 gMonBackPic_RelicanthF[] = INCBIN_U32("graphics/pokemon/relicanth/backf.4bpp.lz"); -const u32 gMonBackPic_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/back.4bpp.lz"); -const u32 gMonBackPic_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/back.4bpp.lz"); -const u32 gMonBackPic_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/back.4bpp.lz"); -const u32 gMonBackPic_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/back.4bpp.lz"); -const u32 gMonBackPic_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/back.4bpp.lz"); -const u32 gMonBackPic_Metang[] = INCBIN_U32("graphics/pokemon/metang/back.4bpp.lz"); -const u32 gMonBackPic_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/back.4bpp.lz"); -const u32 gMonBackPic_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/back.4bpp.lz"); -const u32 gMonBackPic_Regice[] = INCBIN_U32("graphics/pokemon/regice/back.4bpp.lz"); -const u32 gMonBackPic_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/back.4bpp.lz"); -const u32 gMonBackPic_Latias[] = INCBIN_U32("graphics/pokemon/latias/back.4bpp.lz"); -const u32 gMonBackPic_Latios[] = INCBIN_U32("graphics/pokemon/latios/back.4bpp.lz"); -const u32 gMonBackPic_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/back.4bpp.lz"); -const u32 gMonBackPic_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/back.4bpp.lz"); -const u32 gMonBackPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/back.4bpp.lz"); -const u32 gMonBackPic_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/back.4bpp.lz"); -const u32 gMonBackPic_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/back.4bpp.lz"); -#if P_GEN_4_POKEMON == TRUE -const u32 gMonBackPic_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/back.4bpp.lz"); -const u32 gMonBackPic_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/back.4bpp.lz"); -const u32 gMonBackPic_Torterra[] = INCBIN_U32("graphics/pokemon/torterra/back.4bpp.lz"); -const u32 gMonBackPic_Chimchar[] = INCBIN_U32("graphics/pokemon/chimchar/back.4bpp.lz"); -const u32 gMonBackPic_Monferno[] = INCBIN_U32("graphics/pokemon/monferno/back.4bpp.lz"); -const u32 gMonBackPic_Infernape[] = INCBIN_U32("graphics/pokemon/infernape/back.4bpp.lz"); -const u32 gMonBackPic_Piplup[] = INCBIN_U32("graphics/pokemon/piplup/back.4bpp.lz"); -const u32 gMonBackPic_Prinplup[] = INCBIN_U32("graphics/pokemon/prinplup/back.4bpp.lz"); -const u32 gMonBackPic_Empoleon[] = INCBIN_U32("graphics/pokemon/empoleon/back.4bpp.lz"); -const u32 gMonBackPic_Starly[] = INCBIN_U32("graphics/pokemon/starly/back.4bpp.lz"); -const u32 gMonBackPic_StarlyF[] = INCBIN_U32("graphics/pokemon/starly/backf.4bpp.lz"); -const u32 gMonBackPic_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/back.4bpp.lz"); -const u32 gMonBackPic_StaraviaF[] = INCBIN_U32("graphics/pokemon/staravia/back.4bpp.lz"); -const u32 gMonBackPic_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/back.4bpp.lz"); -const u32 gMonBackPic_Bidoof[] = INCBIN_U32("graphics/pokemon/bidoof/back.4bpp.lz"); -const u32 gMonBackPic_BidoofF[] = INCBIN_U32("graphics/pokemon/bidoof/backf.4bpp.lz"); -const u32 gMonBackPic_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/back.4bpp.lz"); -const u32 gMonBackPic_Kricketot[] = INCBIN_U32("graphics/pokemon/kricketot/back.4bpp.lz"); -const u32 gMonBackPic_KricketotF[] = INCBIN_U32("graphics/pokemon/kricketot/backf.4bpp.lz"); -const u32 gMonBackPic_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/back.4bpp.lz"); -const u32 gMonBackPic_KricketuneF[] = INCBIN_U32("graphics/pokemon/kricketune/backf.4bpp.lz"); -const u32 gMonBackPic_Shinx[] = INCBIN_U32("graphics/pokemon/shinx/back.4bpp.lz"); -const u32 gMonBackPic_ShinxF[] = INCBIN_U32("graphics/pokemon/shinx/backf.4bpp.lz"); -const u32 gMonBackPic_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/back.4bpp.lz"); -const u32 gMonBackPic_LuxioF[] = INCBIN_U32("graphics/pokemon/luxio/backf.4bpp.lz"); -const u32 gMonBackPic_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/back.4bpp.lz"); -const u32 gMonBackPic_LuxrayF[] = INCBIN_U32("graphics/pokemon/luxray/backf.4bpp.lz"); -const u32 gMonBackPic_Budew[] = INCBIN_U32("graphics/pokemon/budew/back.4bpp.lz"); -const u32 gMonBackPic_Roserade[] = INCBIN_U32("graphics/pokemon/roserade/back.4bpp.lz"); -const u32 gMonBackPic_RoseradeF[] = INCBIN_U32("graphics/pokemon/roserade/backf.4bpp.lz"); -const u32 gMonBackPic_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/back.4bpp.lz"); -const u32 gMonBackPic_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/back.4bpp.lz"); -const u32 gMonBackPic_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/back.4bpp.lz"); -const u32 gMonBackPic_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/back.4bpp.lz"); -const u32 gMonBackPic_Burmy[] = INCBIN_U32("graphics/pokemon/burmy/back.4bpp.lz"); -const u32 gMonBackPic_Wormadam[] = INCBIN_U32("graphics/pokemon/wormadam/back.4bpp.lz"); -const u32 gMonBackPic_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/back.4bpp.lz"); -const u32 gMonBackPic_Combee[] = INCBIN_U32("graphics/pokemon/combee/back.4bpp.lz"); -const u32 gMonBackPic_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/back.4bpp.lz"); -const u32 gMonBackPic_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/back.4bpp.lz"); -const u32 gMonBackPic_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/back.4bpp.lz"); -const u32 gMonBackPic_BuizelF[] = INCBIN_U32("graphics/pokemon/buizel/backf.4bpp.lz"); -const u32 gMonBackPic_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/back.4bpp.lz"); -const u32 gMonBackPic_FloatzelF[] = INCBIN_U32("graphics/pokemon/floatzel/backf.4bpp.lz"); -const u32 gMonBackPic_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/back.4bpp.lz"); -const u32 gMonBackPic_Cherrim[] = INCBIN_U32("graphics/pokemon/cherrim/normal/back.4bpp.lz"); -const u32 gMonBackPic_Shellos[] = INCBIN_U32("graphics/pokemon/shellos/back.4bpp.lz"); -const u32 gMonBackPic_Gastrodon[] = INCBIN_U32("graphics/pokemon/gastrodon/back.4bpp.lz"); -const u32 gMonBackPic_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/back.4bpp.lz"); -const u32 gMonBackPic_AmbipomF[] = INCBIN_U32("graphics/pokemon/ambipom/backf.4bpp.lz"); -const u32 gMonBackPic_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/back.4bpp.lz"); -const u32 gMonBackPic_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/back.4bpp.lz"); -const u32 gMonBackPic_Buneary[] = INCBIN_U32("graphics/pokemon/buneary/back.4bpp.lz"); -const u32 gMonBackPic_Lopunny[] = INCBIN_U32("graphics/pokemon/lopunny/back.4bpp.lz"); -const u32 gMonBackPic_Mismagius[] = INCBIN_U32("graphics/pokemon/mismagius/back.4bpp.lz"); -const u32 gMonBackPic_Honchkrow[] = INCBIN_U32("graphics/pokemon/honchkrow/back.4bpp.lz"); -const u32 gMonBackPic_Glameow[] = INCBIN_U32("graphics/pokemon/glameow/back.4bpp.lz"); -const u32 gMonBackPic_Purugly[] = INCBIN_U32("graphics/pokemon/purugly/back.4bpp.lz"); -const u32 gMonBackPic_Chingling[] = INCBIN_U32("graphics/pokemon/chingling/back.4bpp.lz"); -const u32 gMonBackPic_Stunky[] = INCBIN_U32("graphics/pokemon/stunky/back.4bpp.lz"); -const u32 gMonBackPic_Skuntank[] = INCBIN_U32("graphics/pokemon/skuntank/back.4bpp.lz"); -const u32 gMonBackPic_Bronzor[] = INCBIN_U32("graphics/pokemon/bronzor/back.4bpp.lz"); -const u32 gMonBackPic_Bronzong[] = INCBIN_U32("graphics/pokemon/bronzong/back.4bpp.lz"); -const u32 gMonBackPic_Bonsly[] = INCBIN_U32("graphics/pokemon/bonsly/back.4bpp.lz"); -const u32 gMonBackPic_MimeJr[] = INCBIN_U32("graphics/pokemon/mime_jr/back.4bpp.lz"); -const u32 gMonBackPic_Happiny[] = INCBIN_U32("graphics/pokemon/happiny/back.4bpp.lz"); -const u32 gMonBackPic_Chatot[] = INCBIN_U32("graphics/pokemon/chatot/back.4bpp.lz"); -const u32 gMonBackPic_Spiritomb[] = INCBIN_U32("graphics/pokemon/spiritomb/back.4bpp.lz"); -const u32 gMonBackPic_Gible[] = INCBIN_U32("graphics/pokemon/gible/back.4bpp.lz"); -const u32 gMonBackPic_GibleF[] = INCBIN_U32("graphics/pokemon/gible/backf.4bpp.lz"); -const u32 gMonBackPic_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/back.4bpp.lz"); -const u32 gMonBackPic_GabiteF[] = INCBIN_U32("graphics/pokemon/gabite/backf.4bpp.lz"); -const u32 gMonBackPic_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/back.4bpp.lz"); -const u32 gMonBackPic_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/back.4bpp.lz"); -const u32 gMonBackPic_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/back.4bpp.lz"); -const u32 gMonBackPic_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/back.4bpp.lz"); -const u32 gMonBackPic_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/back.4bpp.lz"); -const u32 gMonBackPic_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/back.4bpp.lz"); -const u32 gMonBackPic_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/back.4bpp.lz"); -const u32 gMonBackPic_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/back.4bpp.lz"); -const u32 gMonBackPic_Croagunk[] = INCBIN_U32("graphics/pokemon/croagunk/back.4bpp.lz"); -const u32 gMonBackPic_CroagunkF[] = INCBIN_U32("graphics/pokemon/croagunk/backf.4bpp.lz"); -const u32 gMonBackPic_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/back.4bpp.lz"); -const u32 gMonBackPic_ToxicroakF[] = INCBIN_U32("graphics/pokemon/toxicroak/backf.4bpp.lz"); -const u32 gMonBackPic_Carnivine[] = INCBIN_U32("graphics/pokemon/carnivine/back.4bpp.lz"); -const u32 gMonBackPic_Finneon[] = INCBIN_U32("graphics/pokemon/finneon/back.4bpp.lz"); -const u32 gMonBackPic_FinneonF[] = INCBIN_U32("graphics/pokemon/finneon/backf.4bpp.lz"); -const u32 gMonBackPic_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/back.4bpp.lz"); -const u32 gMonBackPic_LumineonF[] = INCBIN_U32("graphics/pokemon/lumineon/backf.4bpp.lz"); -const u32 gMonBackPic_Mantyke[] = INCBIN_U32("graphics/pokemon/mantyke/back.4bpp.lz"); -const u32 gMonBackPic_Snover[] = INCBIN_U32("graphics/pokemon/snover/back.4bpp.lz"); -const u32 gMonBackPic_SnoverF[] = INCBIN_U32("graphics/pokemon/snover/backf.4bpp.lz"); -const u32 gMonBackPic_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/back.4bpp.lz"); -const u32 gMonBackPic_Weavile[] = INCBIN_U32("graphics/pokemon/weavile/back.4bpp.lz"); -const u32 gMonBackPic_WeavileF[] = INCBIN_U32("graphics/pokemon/weavile/backf.4bpp.lz"); -const u32 gMonBackPic_Magnezone[] = INCBIN_U32("graphics/pokemon/magnezone/back.4bpp.lz"); -const u32 gMonBackPic_Lickilicky[] = INCBIN_U32("graphics/pokemon/lickilicky/back.4bpp.lz"); -const u32 gMonBackPic_Rhyperior[] = INCBIN_U32("graphics/pokemon/rhyperior/back.4bpp.lz"); -const u32 gMonBackPic_RhyperiorF[] = INCBIN_U32("graphics/pokemon/rhyperior/backf.4bpp.lz"); -const u32 gMonBackPic_Tangrowth[] = INCBIN_U32("graphics/pokemon/tangrowth/back.4bpp.lz"); -const u32 gMonBackPic_Electivire[] = INCBIN_U32("graphics/pokemon/electivire/back.4bpp.lz"); -const u32 gMonBackPic_Magmortar[] = INCBIN_U32("graphics/pokemon/magmortar/back.4bpp.lz"); -const u32 gMonBackPic_Togekiss[] = INCBIN_U32("graphics/pokemon/togekiss/back.4bpp.lz"); -const u32 gMonBackPic_Yanmega[] = INCBIN_U32("graphics/pokemon/yanmega/back.4bpp.lz"); -const u32 gMonBackPic_Leafeon[] = INCBIN_U32("graphics/pokemon/leafeon/back.4bpp.lz"); -const u32 gMonBackPic_Glaceon[] = INCBIN_U32("graphics/pokemon/glaceon/back.4bpp.lz"); -const u32 gMonBackPic_Gliscor[] = INCBIN_U32("graphics/pokemon/gliscor/back.4bpp.lz"); -const u32 gMonBackPic_Mamoswine[] = INCBIN_U32("graphics/pokemon/mamoswine/back.4bpp.lz"); -const u32 gMonBackPic_PorygonZ[] = INCBIN_U32("graphics/pokemon/porygon_z/back.4bpp.lz"); -const u32 gMonBackPic_Gallade[] = INCBIN_U32("graphics/pokemon/gallade/back.4bpp.lz"); -const u32 gMonBackPic_Probopass[] = INCBIN_U32("graphics/pokemon/probopass/back.4bpp.lz"); -const u32 gMonBackPic_Dusknoir[] = INCBIN_U32("graphics/pokemon/dusknoir/back.4bpp.lz"); -const u32 gMonBackPic_Froslass[] = INCBIN_U32("graphics/pokemon/froslass/back.4bpp.lz"); -const u32 gMonBackPic_Rotom[] = INCBIN_U32("graphics/pokemon/rotom/back.4bpp.lz"); -const u32 gMonBackPic_Uxie[] = INCBIN_U32("graphics/pokemon/uxie/back.4bpp.lz"); -const u32 gMonBackPic_Mesprit[] = INCBIN_U32("graphics/pokemon/mesprit/back.4bpp.lz"); -const u32 gMonBackPic_Azelf[] = INCBIN_U32("graphics/pokemon/azelf/back.4bpp.lz"); -const u32 gMonBackPic_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/back.4bpp.lz"); -const u32 gMonBackPic_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/back.4bpp.lz"); -const u32 gMonBackPic_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/back.4bpp.lz"); -const u32 gMonBackPic_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/back.4bpp.lz"); -const u32 gMonBackPic_Giratina[] = INCBIN_U32("graphics/pokemon/giratina/back.4bpp.lz"); -const u32 gMonBackPic_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/back.4bpp.lz"); -const u32 gMonBackPic_Phione[] = INCBIN_U32("graphics/pokemon/phione/back.4bpp.lz"); -const u32 gMonBackPic_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/back.4bpp.lz"); -const u32 gMonBackPic_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/back.4bpp.lz"); -const u32 gMonBackPic_Shaymin[] = INCBIN_U32("graphics/pokemon/shaymin/back.4bpp.lz"); -const u32 gMonBackPic_Arceus[] = INCBIN_U32("graphics/pokemon/arceus/back.4bpp.lz"); -#endif -#if P_GEN_5_POKEMON == TRUE -const u32 gMonBackPic_Victini[] = INCBIN_U32("graphics/pokemon/victini/back.4bpp.lz"); -const u32 gMonBackPic_Snivy[] = INCBIN_U32("graphics/pokemon/snivy/back.4bpp.lz"); -const u32 gMonBackPic_Servine[] = INCBIN_U32("graphics/pokemon/servine/back.4bpp.lz"); -const u32 gMonBackPic_Serperior[] = INCBIN_U32("graphics/pokemon/serperior/back.4bpp.lz"); -const u32 gMonBackPic_Tepig[] = INCBIN_U32("graphics/pokemon/tepig/back.4bpp.lz"); -const u32 gMonBackPic_Pignite[] = INCBIN_U32("graphics/pokemon/pignite/back.4bpp.lz"); -const u32 gMonBackPic_Emboar[] = INCBIN_U32("graphics/pokemon/emboar/back.4bpp.lz"); -const u32 gMonBackPic_Oshawott[] = INCBIN_U32("graphics/pokemon/oshawott/back.4bpp.lz"); -const u32 gMonBackPic_Dewott[] = INCBIN_U32("graphics/pokemon/dewott/back.4bpp.lz"); -const u32 gMonBackPic_Samurott[] = INCBIN_U32("graphics/pokemon/samurott/back.4bpp.lz"); -const u32 gMonBackPic_Patrat[] = INCBIN_U32("graphics/pokemon/patrat/back.4bpp.lz"); -const u32 gMonBackPic_Watchog[] = INCBIN_U32("graphics/pokemon/watchog/back.4bpp.lz"); -const u32 gMonBackPic_Lillipup[] = INCBIN_U32("graphics/pokemon/lillipup/back.4bpp.lz"); -const u32 gMonBackPic_Herdier[] = INCBIN_U32("graphics/pokemon/herdier/back.4bpp.lz"); -const u32 gMonBackPic_Stoutland[] = INCBIN_U32("graphics/pokemon/stoutland/back.4bpp.lz"); -const u32 gMonBackPic_Purrloin[] = INCBIN_U32("graphics/pokemon/purrloin/back.4bpp.lz"); -const u32 gMonBackPic_Liepard[] = INCBIN_U32("graphics/pokemon/liepard/back.4bpp.lz"); -const u32 gMonBackPic_Pansage[] = INCBIN_U32("graphics/pokemon/pansage/back.4bpp.lz"); -const u32 gMonBackPic_Simisage[] = INCBIN_U32("graphics/pokemon/simisage/back.4bpp.lz"); -const u32 gMonBackPic_Pansear[] = INCBIN_U32("graphics/pokemon/pansear/back.4bpp.lz"); -const u32 gMonBackPic_Simisear[] = INCBIN_U32("graphics/pokemon/simisear/back.4bpp.lz"); -const u32 gMonBackPic_Panpour[] = INCBIN_U32("graphics/pokemon/panpour/back.4bpp.lz"); -const u32 gMonBackPic_Simipour[] = INCBIN_U32("graphics/pokemon/simipour/back.4bpp.lz"); -const u32 gMonBackPic_Munna[] = INCBIN_U32("graphics/pokemon/munna/back.4bpp.lz"); -const u32 gMonBackPic_Musharna[] = INCBIN_U32("graphics/pokemon/musharna/back.4bpp.lz"); -const u32 gMonBackPic_Pidove[] = INCBIN_U32("graphics/pokemon/pidove/back.4bpp.lz"); -const u32 gMonBackPic_Tranquill[] = INCBIN_U32("graphics/pokemon/tranquill/back.4bpp.lz"); -const u32 gMonBackPic_Unfezant[] = INCBIN_U32("graphics/pokemon/unfezant/back.4bpp.lz"); -const u32 gMonBackPic_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant/backf.4bpp.lz"); -const u32 gMonBackPic_Blitzle[] = INCBIN_U32("graphics/pokemon/blitzle/back.4bpp.lz"); -const u32 gMonBackPic_Zebstrika[] = INCBIN_U32("graphics/pokemon/zebstrika/back.4bpp.lz"); -const u32 gMonBackPic_Roggenrola[] = INCBIN_U32("graphics/pokemon/roggenrola/back.4bpp.lz"); -const u32 gMonBackPic_Boldore[] = INCBIN_U32("graphics/pokemon/boldore/back.4bpp.lz"); -const u32 gMonBackPic_Gigalith[] = INCBIN_U32("graphics/pokemon/gigalith/back.4bpp.lz"); -const u32 gMonBackPic_Woobat[] = INCBIN_U32("graphics/pokemon/woobat/back.4bpp.lz"); -const u32 gMonBackPic_Swoobat[] = INCBIN_U32("graphics/pokemon/swoobat/back.4bpp.lz"); -const u32 gMonBackPic_Drilbur[] = INCBIN_U32("graphics/pokemon/drilbur/back.4bpp.lz"); -const u32 gMonBackPic_Excadrill[] = INCBIN_U32("graphics/pokemon/excadrill/back.4bpp.lz"); -const u32 gMonBackPic_Audino[] = INCBIN_U32("graphics/pokemon/audino/back.4bpp.lz"); -const u32 gMonBackPic_Timburr[] = INCBIN_U32("graphics/pokemon/timburr/back.4bpp.lz"); -const u32 gMonBackPic_Gurdurr[] = INCBIN_U32("graphics/pokemon/gurdurr/back.4bpp.lz"); -const u32 gMonBackPic_Conkeldurr[] = INCBIN_U32("graphics/pokemon/conkeldurr/back.4bpp.lz"); -const u32 gMonBackPic_Tympole[] = INCBIN_U32("graphics/pokemon/tympole/back.4bpp.lz"); -const u32 gMonBackPic_Palpitoad[] = INCBIN_U32("graphics/pokemon/palpitoad/back.4bpp.lz"); -const u32 gMonBackPic_Seismitoad[] = INCBIN_U32("graphics/pokemon/seismitoad/back.4bpp.lz"); -const u32 gMonBackPic_Throh[] = INCBIN_U32("graphics/pokemon/throh/back.4bpp.lz"); -const u32 gMonBackPic_Sawk[] = INCBIN_U32("graphics/pokemon/sawk/back.4bpp.lz"); -const u32 gMonBackPic_Sewaddle[] = INCBIN_U32("graphics/pokemon/sewaddle/back.4bpp.lz"); -const u32 gMonBackPic_Swadloon[] = INCBIN_U32("graphics/pokemon/swadloon/back.4bpp.lz"); -const u32 gMonBackPic_Leavanny[] = INCBIN_U32("graphics/pokemon/leavanny/back.4bpp.lz"); -const u32 gMonBackPic_Venipede[] = INCBIN_U32("graphics/pokemon/venipede/back.4bpp.lz"); -const u32 gMonBackPic_Whirlipede[] = INCBIN_U32("graphics/pokemon/whirlipede/back.4bpp.lz"); -const u32 gMonBackPic_Scolipede[] = INCBIN_U32("graphics/pokemon/scolipede/back.4bpp.lz"); -const u32 gMonBackPic_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/back.4bpp.lz"); -const u32 gMonBackPic_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/back.4bpp.lz"); -const u32 gMonBackPic_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/back.4bpp.lz"); -const u32 gMonBackPic_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/back.4bpp.lz"); -const u32 gMonBackPic_Basculin[] = INCBIN_U32("graphics/pokemon/basculin/back.4bpp.lz"); -const u32 gMonBackPic_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/back.4bpp.lz"); -const u32 gMonBackPic_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/back.4bpp.lz"); -const u32 gMonBackPic_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/back.4bpp.lz"); -const u32 gMonBackPic_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/back.4bpp.lz"); -const u32 gMonBackPic_Darmanitan[] = INCBIN_U32("graphics/pokemon/darmanitan/back.4bpp.lz"); -const u32 gMonBackPic_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/back.4bpp.lz"); -const u32 gMonBackPic_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/back.4bpp.lz"); -const u32 gMonBackPic_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/back.4bpp.lz"); -const u32 gMonBackPic_Scraggy[] = INCBIN_U32("graphics/pokemon/scraggy/back.4bpp.lz"); -const u32 gMonBackPic_Scrafty[] = INCBIN_U32("graphics/pokemon/scrafty/back.4bpp.lz"); -const u32 gMonBackPic_Sigilyph[] = INCBIN_U32("graphics/pokemon/sigilyph/back.4bpp.lz"); -const u32 gMonBackPic_Yamask[] = INCBIN_U32("graphics/pokemon/yamask/back.4bpp.lz"); -const u32 gMonBackPic_Cofagrigus[] = INCBIN_U32("graphics/pokemon/cofagrigus/back.4bpp.lz"); -const u32 gMonBackPic_Tirtouga[] = INCBIN_U32("graphics/pokemon/tirtouga/back.4bpp.lz"); -const u32 gMonBackPic_Carracosta[] = INCBIN_U32("graphics/pokemon/carracosta/back.4bpp.lz"); -const u32 gMonBackPic_Archen[] = INCBIN_U32("graphics/pokemon/archen/back.4bpp.lz"); -const u32 gMonBackPic_Archeops[] = INCBIN_U32("graphics/pokemon/archeops/back.4bpp.lz"); -const u32 gMonBackPic_Trubbish[] = INCBIN_U32("graphics/pokemon/trubbish/back.4bpp.lz"); -const u32 gMonBackPic_Garbodor[] = INCBIN_U32("graphics/pokemon/garbodor/back.4bpp.lz"); -const u32 gMonBackPic_Zorua[] = INCBIN_U32("graphics/pokemon/zorua/back.4bpp.lz"); -const u32 gMonBackPic_Zoroark[] = INCBIN_U32("graphics/pokemon/zoroark/back.4bpp.lz"); -const u32 gMonBackPic_Minccino[] = INCBIN_U32("graphics/pokemon/minccino/back.4bpp.lz"); -const u32 gMonBackPic_Cinccino[] = INCBIN_U32("graphics/pokemon/cinccino/back.4bpp.lz"); -const u32 gMonBackPic_Gothita[] = INCBIN_U32("graphics/pokemon/gothita/back.4bpp.lz"); -const u32 gMonBackPic_Gothorita[] = INCBIN_U32("graphics/pokemon/gothorita/back.4bpp.lz"); -const u32 gMonBackPic_Gothitelle[] = INCBIN_U32("graphics/pokemon/gothitelle/back.4bpp.lz"); -const u32 gMonBackPic_Solosis[] = INCBIN_U32("graphics/pokemon/solosis/back.4bpp.lz"); -const u32 gMonBackPic_Duosion[] = INCBIN_U32("graphics/pokemon/duosion/back.4bpp.lz"); -const u32 gMonBackPic_Reuniclus[] = INCBIN_U32("graphics/pokemon/reuniclus/back.4bpp.lz"); -const u32 gMonBackPic_Ducklett[] = INCBIN_U32("graphics/pokemon/ducklett/back.4bpp.lz"); -const u32 gMonBackPic_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/back.4bpp.lz"); -const u32 gMonBackPic_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/back.4bpp.lz"); -const u32 gMonBackPic_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/back.4bpp.lz"); -const u32 gMonBackPic_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/back.4bpp.lz"); -const u32 gMonBackPic_Deerling[] = INCBIN_U32("graphics/pokemon/deerling/back.4bpp.lz"); -const u32 gMonBackPic_Sawsbuck[] = INCBIN_U32("graphics/pokemon/sawsbuck/back.4bpp.lz"); -const u32 gMonBackPic_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/back.4bpp.lz"); -const u32 gMonBackPic_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/back.4bpp.lz"); -const u32 gMonBackPic_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/back.4bpp.lz"); -const u32 gMonBackPic_Foongus[] = INCBIN_U32("graphics/pokemon/foongus/back.4bpp.lz"); -const u32 gMonBackPic_Amoonguss[] = INCBIN_U32("graphics/pokemon/amoonguss/back.4bpp.lz"); -const u32 gMonBackPic_Frillish[] = INCBIN_U32("graphics/pokemon/frillish/back.4bpp.lz"); -const u32 gMonBackPic_FrillishF[] = INCBIN_U32("graphics/pokemon/frillish/backf.4bpp.lz"); -const u32 gMonBackPic_Jellicent[] = INCBIN_U32("graphics/pokemon/jellicent/back.4bpp.lz"); -const u32 gMonBackPic_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/backf.4bpp.lz"); -const u32 gMonBackPic_Alomomola[] = INCBIN_U32("graphics/pokemon/alomomola/back.4bpp.lz"); -const u32 gMonBackPic_Joltik[] = INCBIN_U32("graphics/pokemon/joltik/back.4bpp.lz"); -const u32 gMonBackPic_Galvantula[] = INCBIN_U32("graphics/pokemon/galvantula/back.4bpp.lz"); -const u32 gMonBackPic_Ferroseed[] = INCBIN_U32("graphics/pokemon/ferroseed/back.4bpp.lz"); -const u32 gMonBackPic_Ferrothorn[] = INCBIN_U32("graphics/pokemon/ferrothorn/back.4bpp.lz"); -const u32 gMonBackPic_Klink[] = INCBIN_U32("graphics/pokemon/klink/back.4bpp.lz"); -const u32 gMonBackPic_Klang[] = INCBIN_U32("graphics/pokemon/klang/back.4bpp.lz"); -const u32 gMonBackPic_Klinklang[] = INCBIN_U32("graphics/pokemon/klinklang/back.4bpp.lz"); -const u32 gMonBackPic_Tynamo[] = INCBIN_U32("graphics/pokemon/tynamo/back.4bpp.lz"); -const u32 gMonBackPic_Eelektrik[] = INCBIN_U32("graphics/pokemon/eelektrik/back.4bpp.lz"); -const u32 gMonBackPic_Eelektross[] = INCBIN_U32("graphics/pokemon/eelektross/back.4bpp.lz"); -const u32 gMonBackPic_Elgyem[] = INCBIN_U32("graphics/pokemon/elgyem/back.4bpp.lz"); -const u32 gMonBackPic_Beheeyem[] = INCBIN_U32("graphics/pokemon/beheeyem/back.4bpp.lz"); -const u32 gMonBackPic_Litwick[] = INCBIN_U32("graphics/pokemon/litwick/back.4bpp.lz"); -const u32 gMonBackPic_Lampent[] = INCBIN_U32("graphics/pokemon/lampent/back.4bpp.lz"); -const u32 gMonBackPic_Chandelure[] = INCBIN_U32("graphics/pokemon/chandelure/back.4bpp.lz"); -const u32 gMonBackPic_Axew[] = INCBIN_U32("graphics/pokemon/axew/back.4bpp.lz"); -const u32 gMonBackPic_Fraxure[] = INCBIN_U32("graphics/pokemon/fraxure/back.4bpp.lz"); -const u32 gMonBackPic_Haxorus[] = INCBIN_U32("graphics/pokemon/haxorus/back.4bpp.lz"); -const u32 gMonBackPic_Cubchoo[] = INCBIN_U32("graphics/pokemon/cubchoo/back.4bpp.lz"); -const u32 gMonBackPic_Beartic[] = INCBIN_U32("graphics/pokemon/beartic/back.4bpp.lz"); -const u32 gMonBackPic_Cryogonal[] = INCBIN_U32("graphics/pokemon/cryogonal/back.4bpp.lz"); -const u32 gMonBackPic_Shelmet[] = INCBIN_U32("graphics/pokemon/shelmet/back.4bpp.lz"); -const u32 gMonBackPic_Accelgor[] = INCBIN_U32("graphics/pokemon/accelgor/back.4bpp.lz"); -const u32 gMonBackPic_Stunfisk[] = INCBIN_U32("graphics/pokemon/stunfisk/back.4bpp.lz"); -const u32 gMonBackPic_Mienfoo[] = INCBIN_U32("graphics/pokemon/mienfoo/back.4bpp.lz"); -const u32 gMonBackPic_Mienshao[] = INCBIN_U32("graphics/pokemon/mienshao/back.4bpp.lz"); -const u32 gMonBackPic_Druddigon[] = INCBIN_U32("graphics/pokemon/druddigon/back.4bpp.lz"); -const u32 gMonBackPic_Golett[] = INCBIN_U32("graphics/pokemon/golett/back.4bpp.lz"); -const u32 gMonBackPic_Golurk[] = INCBIN_U32("graphics/pokemon/golurk/back.4bpp.lz"); -const u32 gMonBackPic_Pawniard[] = INCBIN_U32("graphics/pokemon/pawniard/back.4bpp.lz"); -const u32 gMonBackPic_Bisharp[] = INCBIN_U32("graphics/pokemon/bisharp/back.4bpp.lz"); -const u32 gMonBackPic_Bouffalant[] = INCBIN_U32("graphics/pokemon/bouffalant/back.4bpp.lz"); -const u32 gMonBackPic_Rufflet[] = INCBIN_U32("graphics/pokemon/rufflet/back.4bpp.lz"); -const u32 gMonBackPic_Braviary[] = INCBIN_U32("graphics/pokemon/braviary/back.4bpp.lz"); -const u32 gMonBackPic_Vullaby[] = INCBIN_U32("graphics/pokemon/vullaby/back.4bpp.lz"); -const u32 gMonBackPic_Mandibuzz[] = INCBIN_U32("graphics/pokemon/mandibuzz/back.4bpp.lz"); -const u32 gMonBackPic_Heatmor[] = INCBIN_U32("graphics/pokemon/heatmor/back.4bpp.lz"); -const u32 gMonBackPic_Durant[] = INCBIN_U32("graphics/pokemon/durant/back.4bpp.lz"); -const u32 gMonBackPic_Deino[] = INCBIN_U32("graphics/pokemon/deino/back.4bpp.lz"); -const u32 gMonBackPic_Zweilous[] = INCBIN_U32("graphics/pokemon/zweilous/back.4bpp.lz"); -const u32 gMonBackPic_Hydreigon[] = INCBIN_U32("graphics/pokemon/hydreigon/back.4bpp.lz"); -const u32 gMonBackPic_Larvesta[] = INCBIN_U32("graphics/pokemon/larvesta/back.4bpp.lz"); -const u32 gMonBackPic_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/back.4bpp.lz"); -const u32 gMonBackPic_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/back.4bpp.lz"); -const u32 gMonBackPic_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/back.4bpp.lz"); -const u32 gMonBackPic_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/back.4bpp.lz"); -const u32 gMonBackPic_Tornadus[] = INCBIN_U32("graphics/pokemon/tornadus/back.4bpp.lz"); -const u32 gMonBackPic_Thundurus[] = INCBIN_U32("graphics/pokemon/thundurus/back.4bpp.lz"); -const u32 gMonBackPic_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/back.4bpp.lz"); -const u32 gMonBackPic_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/back.4bpp.lz"); -const u32 gMonBackPic_Landorus[] = INCBIN_U32("graphics/pokemon/landorus/back.4bpp.lz"); -const u32 gMonBackPic_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/back.4bpp.lz"); -const u32 gMonBackPic_Keldeo[] = INCBIN_U32("graphics/pokemon/keldeo/back.4bpp.lz"); -const u32 gMonBackPic_Meloetta[] = INCBIN_U32("graphics/pokemon/meloetta/back.4bpp.lz"); -const u32 gMonBackPic_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/back.4bpp.lz"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u32 gMonBackPic_Chespin[] = INCBIN_U32("graphics/pokemon/chespin/back.4bpp.lz"); -const u32 gMonBackPic_Quilladin[] = INCBIN_U32("graphics/pokemon/quilladin/back.4bpp.lz"); -const u32 gMonBackPic_Chesnaught[] = INCBIN_U32("graphics/pokemon/chesnaught/back.4bpp.lz"); -const u32 gMonBackPic_Fennekin[] = INCBIN_U32("graphics/pokemon/fennekin/back.4bpp.lz"); -const u32 gMonBackPic_Braixen[] = INCBIN_U32("graphics/pokemon/braixen/back.4bpp.lz"); -const u32 gMonBackPic_Delphox[] = INCBIN_U32("graphics/pokemon/delphox/back.4bpp.lz"); -const u32 gMonBackPic_Froakie[] = INCBIN_U32("graphics/pokemon/froakie/back.4bpp.lz"); -const u32 gMonBackPic_Frogadier[] = INCBIN_U32("graphics/pokemon/frogadier/back.4bpp.lz"); -const u32 gMonBackPic_Greninja[] = INCBIN_U32("graphics/pokemon/greninja/back.4bpp.lz"); -const u32 gMonBackPic_Bunnelby[] = INCBIN_U32("graphics/pokemon/bunnelby/back.4bpp.lz"); -const u32 gMonBackPic_Diggersby[] = INCBIN_U32("graphics/pokemon/diggersby/back.4bpp.lz"); -const u32 gMonBackPic_Fletchling[] = INCBIN_U32("graphics/pokemon/fletchling/back.4bpp.lz"); -const u32 gMonBackPic_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/back.4bpp.lz"); -const u32 gMonBackPic_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/back.4bpp.lz"); -const u32 gMonBackPic_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/back.4bpp.lz"); -const u32 gMonBackPic_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/back.4bpp.lz"); -const u32 gMonBackPic_Vivillon[] = INCBIN_U32("graphics/pokemon/vivillon/back.4bpp.lz"); -const u32 gMonBackPic_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/back.4bpp.lz"); -const u32 gMonBackPic_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/back.4bpp.lz"); -const u32 gMonBackPic_PyroarF[] = INCBIN_U32("graphics/pokemon/pyroar/backf.4bpp.lz"); -const u32 gMonBackPic_Flabebe[] = INCBIN_U32("graphics/pokemon/flabebe/back.4bpp.lz"); -const u32 gMonBackPic_Floette[] = INCBIN_U32("graphics/pokemon/floette/back.4bpp.lz"); -const u32 gMonBackPic_Florges[] = INCBIN_U32("graphics/pokemon/florges/back.4bpp.lz"); -const u32 gMonBackPic_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/back.4bpp.lz"); -const u32 gMonBackPic_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/back.4bpp.lz"); -const u32 gMonBackPic_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/back.4bpp.lz"); -const u32 gMonBackPic_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/back.4bpp.lz"); -const u32 gMonBackPic_Furfrou[] = INCBIN_U32("graphics/pokemon/furfrou/back.4bpp.lz"); -const u32 gMonBackPic_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/back.4bpp.lz"); -const u32 gMonBackPic_Meowstic[] = INCBIN_U32("graphics/pokemon/meowstic/back.4bpp.lz"); -const u32 gMonBackPic_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/back.4bpp.lz"); -const u32 gMonBackPic_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/back.4bpp.lz"); -const u32 gMonBackPic_Aegislash[] = INCBIN_U32("graphics/pokemon/aegislash/back.4bpp.lz"); -const u32 gMonBackPic_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/back.4bpp.lz"); -const u32 gMonBackPic_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/back.4bpp.lz"); -const u32 gMonBackPic_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/back.4bpp.lz"); -const u32 gMonBackPic_Slurpuff[] = INCBIN_U32("graphics/pokemon/slurpuff/back.4bpp.lz"); -const u32 gMonBackPic_Inkay[] = INCBIN_U32("graphics/pokemon/inkay/back.4bpp.lz"); -const u32 gMonBackPic_Malamar[] = INCBIN_U32("graphics/pokemon/malamar/back.4bpp.lz"); -const u32 gMonBackPic_Binacle[] = INCBIN_U32("graphics/pokemon/binacle/back.4bpp.lz"); -const u32 gMonBackPic_Barbaracle[] = INCBIN_U32("graphics/pokemon/barbaracle/back.4bpp.lz"); -const u32 gMonBackPic_Skrelp[] = INCBIN_U32("graphics/pokemon/skrelp/back.4bpp.lz"); -const u32 gMonBackPic_Dragalge[] = INCBIN_U32("graphics/pokemon/dragalge/back.4bpp.lz"); -const u32 gMonBackPic_Clauncher[] = INCBIN_U32("graphics/pokemon/clauncher/back.4bpp.lz"); -const u32 gMonBackPic_Clawitzer[] = INCBIN_U32("graphics/pokemon/clawitzer/back.4bpp.lz"); -const u32 gMonBackPic_Helioptile[] = INCBIN_U32("graphics/pokemon/helioptile/back.4bpp.lz"); -const u32 gMonBackPic_Heliolisk[] = INCBIN_U32("graphics/pokemon/heliolisk/back.4bpp.lz"); -const u32 gMonBackPic_Tyrunt[] = INCBIN_U32("graphics/pokemon/tyrunt/back.4bpp.lz"); -const u32 gMonBackPic_Tyrantrum[] = INCBIN_U32("graphics/pokemon/tyrantrum/back.4bpp.lz"); -const u32 gMonBackPic_Amaura[] = INCBIN_U32("graphics/pokemon/amaura/back.4bpp.lz"); -const u32 gMonBackPic_Aurorus[] = INCBIN_U32("graphics/pokemon/aurorus/back.4bpp.lz"); -const u32 gMonBackPic_Sylveon[] = INCBIN_U32("graphics/pokemon/sylveon/back.4bpp.lz"); -const u32 gMonBackPic_Hawlucha[] = INCBIN_U32("graphics/pokemon/hawlucha/back.4bpp.lz"); -const u32 gMonBackPic_Dedenne[] = INCBIN_U32("graphics/pokemon/dedenne/back.4bpp.lz"); -const u32 gMonBackPic_Carbink[] = INCBIN_U32("graphics/pokemon/carbink/back.4bpp.lz"); -const u32 gMonBackPic_Goomy[] = INCBIN_U32("graphics/pokemon/goomy/back.4bpp.lz"); -const u32 gMonBackPic_Sliggoo[] = INCBIN_U32("graphics/pokemon/sliggoo/back.4bpp.lz"); -const u32 gMonBackPic_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/back.4bpp.lz"); -const u32 gMonBackPic_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/back.4bpp.lz"); -const u32 gMonBackPic_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/back.4bpp.lz"); -const u32 gMonBackPic_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/back.4bpp.lz"); -const u32 gMonBackPic_Pumpkaboo[] = INCBIN_U32("graphics/pokemon/pumpkaboo/back.4bpp.lz"); -const u32 gMonBackPic_Gourgeist[] = INCBIN_U32("graphics/pokemon/gourgeist/back.4bpp.lz"); -const u32 gMonBackPic_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/back.4bpp.lz"); -const u32 gMonBackPic_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/back.4bpp.lz"); -const u32 gMonBackPic_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/back.4bpp.lz"); -const u32 gMonBackPic_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/back.4bpp.lz"); -const u32 gMonBackPic_Xerneas[] = INCBIN_U32("graphics/pokemon/xerneas/back.4bpp.lz"); -const u32 gMonBackPic_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/back.4bpp.lz"); -const u32 gMonBackPic_Zygarde[] = INCBIN_U32("graphics/pokemon/zygarde/back.4bpp.lz"); -const u32 gMonBackPic_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/back.4bpp.lz"); -const u32 gMonBackPic_Hoopa[] = INCBIN_U32("graphics/pokemon/hoopa/back.4bpp.lz"); -const u32 gMonBackPic_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/back.4bpp.lz"); -#endif -#if P_GEN_7_POKEMON == TRUE -const u32 gMonBackPic_Rowlet[] = INCBIN_U32("graphics/pokemon/rowlet/back.4bpp.lz"); -const u32 gMonBackPic_Dartrix[] = INCBIN_U32("graphics/pokemon/dartrix/back.4bpp.lz"); -const u32 gMonBackPic_Decidueye[] = INCBIN_U32("graphics/pokemon/decidueye/back.4bpp.lz"); -const u32 gMonBackPic_Litten[] = INCBIN_U32("graphics/pokemon/litten/back.4bpp.lz"); -const u32 gMonBackPic_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/back.4bpp.lz"); -const u32 gMonBackPic_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/back.4bpp.lz"); -const u32 gMonBackPic_Popplio[] = INCBIN_U32("graphics/pokemon/popplio/back.4bpp.lz"); -const u32 gMonBackPic_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/back.4bpp.lz"); -const u32 gMonBackPic_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/back.4bpp.lz"); -const u32 gMonBackPic_Pikipek[] = INCBIN_U32("graphics/pokemon/pikipek/back.4bpp.lz"); -const u32 gMonBackPic_Trumbeak[] = INCBIN_U32("graphics/pokemon/trumbeak/back.4bpp.lz"); -const u32 gMonBackPic_Toucannon[] = INCBIN_U32("graphics/pokemon/toucannon/back.4bpp.lz"); -const u32 gMonBackPic_Yungoos[] = INCBIN_U32("graphics/pokemon/yungoos/back.4bpp.lz"); -const u32 gMonBackPic_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/back.4bpp.lz"); -const u32 gMonBackPic_Grubbin[] = INCBIN_U32("graphics/pokemon/grubbin/back.4bpp.lz"); -const u32 gMonBackPic_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/back.4bpp.lz"); -const u32 gMonBackPic_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/back.4bpp.lz"); -const u32 gMonBackPic_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/back.4bpp.lz"); -const u32 gMonBackPic_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/back.4bpp.lz"); -const u32 gMonBackPic_Oricorio[] = INCBIN_U32("graphics/pokemon/oricorio/back.4bpp.lz"); -const u32 gMonBackPic_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/back.4bpp.lz"); -const u32 gMonBackPic_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/back.4bpp.lz"); -const u32 gMonBackPic_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/back.4bpp.lz"); -const u32 gMonBackPic_Lycanroc[] = INCBIN_U32("graphics/pokemon/lycanroc/back.4bpp.lz"); -const u32 gMonBackPic_Wishiwashi[] = INCBIN_U32("graphics/pokemon/wishiwashi/back.4bpp.lz"); -const u32 gMonBackPic_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/back.4bpp.lz"); -const u32 gMonBackPic_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/back.4bpp.lz"); -const u32 gMonBackPic_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/back.4bpp.lz"); -const u32 gMonBackPic_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/back.4bpp.lz"); -const u32 gMonBackPic_Dewpider[] = INCBIN_U32("graphics/pokemon/dewpider/back.4bpp.lz"); -const u32 gMonBackPic_Araquanid[] = INCBIN_U32("graphics/pokemon/araquanid/back.4bpp.lz"); -const u32 gMonBackPic_Fomantis[] = INCBIN_U32("graphics/pokemon/fomantis/back.4bpp.lz"); -const u32 gMonBackPic_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/back.4bpp.lz"); -const u32 gMonBackPic_Morelull[] = INCBIN_U32("graphics/pokemon/morelull/back.4bpp.lz"); -const u32 gMonBackPic_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/back.4bpp.lz"); -const u32 gMonBackPic_Salandit[] = INCBIN_U32("graphics/pokemon/salandit/back.4bpp.lz"); -const u32 gMonBackPic_Salazzle[] = INCBIN_U32("graphics/pokemon/salazzle/back.4bpp.lz"); -const u32 gMonBackPic_Stufful[] = INCBIN_U32("graphics/pokemon/stufful/back.4bpp.lz"); -const u32 gMonBackPic_Bewear[] = INCBIN_U32("graphics/pokemon/bewear/back.4bpp.lz"); -const u32 gMonBackPic_Bounsweet[] = INCBIN_U32("graphics/pokemon/bounsweet/back.4bpp.lz"); -const u32 gMonBackPic_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/back.4bpp.lz"); -const u32 gMonBackPic_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/back.4bpp.lz"); -const u32 gMonBackPic_Comfey[] = INCBIN_U32("graphics/pokemon/comfey/back.4bpp.lz"); -const u32 gMonBackPic_Oranguru[] = INCBIN_U32("graphics/pokemon/oranguru/back.4bpp.lz"); -const u32 gMonBackPic_Passimian[] = INCBIN_U32("graphics/pokemon/passimian/back.4bpp.lz"); -const u32 gMonBackPic_Wimpod[] = INCBIN_U32("graphics/pokemon/wimpod/back.4bpp.lz"); -const u32 gMonBackPic_Golisopod[] = INCBIN_U32("graphics/pokemon/golisopod/back.4bpp.lz"); -const u32 gMonBackPic_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/back.4bpp.lz"); -const u32 gMonBackPic_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/back.4bpp.lz"); -const u32 gMonBackPic_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/back.4bpp.lz"); -const u32 gMonBackPic_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/back.4bpp.lz"); -const u32 gMonBackPic_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/back.4bpp.lz"); -const u32 gMonBackPic_Minior[] = INCBIN_U32("graphics/pokemon/minior/back.4bpp.lz"); -const u32 gMonBackPic_Komala[] = INCBIN_U32("graphics/pokemon/komala/back.4bpp.lz"); -const u32 gMonBackPic_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/back.4bpp.lz"); -const u32 gMonBackPic_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/back.4bpp.lz"); -const u32 gMonBackPic_Mimikyu[] = INCBIN_U32("graphics/pokemon/mimikyu/back.4bpp.lz"); -const u32 gMonBackPic_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/back.4bpp.lz"); -const u32 gMonBackPic_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/back.4bpp.lz"); -const u32 gMonBackPic_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/back.4bpp.lz"); -const u32 gMonBackPic_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/back.4bpp.lz"); -const u32 gMonBackPic_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/back.4bpp.lz"); -const u32 gMonBackPic_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/back.4bpp.lz"); -const u32 gMonBackPic_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/back.4bpp.lz"); -const u32 gMonBackPic_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/back.4bpp.lz"); -const u32 gMonBackPic_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/back.4bpp.lz"); -const u32 gMonBackPic_TapuFini[] = INCBIN_U32("graphics/pokemon/tapu_fini/back.4bpp.lz"); -const u32 gMonBackPic_Cosmog[] = INCBIN_U32("graphics/pokemon/cosmog/back.4bpp.lz"); -const u32 gMonBackPic_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/back.4bpp.lz"); -const u32 gMonBackPic_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/back.4bpp.lz"); -const u32 gMonBackPic_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/back.4bpp.lz"); -const u32 gMonBackPic_Nihilego[] = INCBIN_U32("graphics/pokemon/nihilego/back.4bpp.lz"); -const u32 gMonBackPic_Buzzwole[] = INCBIN_U32("graphics/pokemon/buzzwole/back.4bpp.lz"); -const u32 gMonBackPic_Pheromosa[] = INCBIN_U32("graphics/pokemon/pheromosa/back.4bpp.lz"); -const u32 gMonBackPic_Xurkitree[] = INCBIN_U32("graphics/pokemon/xurkitree/back.4bpp.lz"); -const u32 gMonBackPic_Celesteela[] = INCBIN_U32("graphics/pokemon/celesteela/back.4bpp.lz"); -const u32 gMonBackPic_Kartana[] = INCBIN_U32("graphics/pokemon/kartana/back.4bpp.lz"); -const u32 gMonBackPic_Guzzlord[] = INCBIN_U32("graphics/pokemon/guzzlord/back.4bpp.lz"); -const u32 gMonBackPic_Necrozma[] = INCBIN_U32("graphics/pokemon/necrozma/back.4bpp.lz"); -const u32 gMonBackPic_Magearna[] = INCBIN_U32("graphics/pokemon/magearna/back.4bpp.lz"); -const u32 gMonBackPic_Marshadow[] = INCBIN_U32("graphics/pokemon/marshadow/back.4bpp.lz"); -const u32 gMonBackPic_Poipole[] = INCBIN_U32("graphics/pokemon/poipole/back.4bpp.lz"); -const u32 gMonBackPic_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/back.4bpp.lz"); -const u32 gMonBackPic_Stakataka[] = INCBIN_U32("graphics/pokemon/stakataka/back.4bpp.lz"); -const u32 gMonBackPic_Blacephalon[] = INCBIN_U32("graphics/pokemon/blacephalon/back.4bpp.lz"); -const u32 gMonBackPic_Zeraora[] = INCBIN_U32("graphics/pokemon/zeraora/back.4bpp.lz"); -const u32 gMonBackPic_Meltan[] = INCBIN_U32("graphics/pokemon/meltan/back.4bpp.lz"); -const u32 gMonBackPic_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/back.4bpp.lz"); -#endif -#if P_GEN_8_POKEMON == TRUE -const u32 gMonBackPic_Grookey[] = INCBIN_U32("graphics/pokemon/grookey/back.4bpp.lz"); -const u32 gMonBackPic_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/back.4bpp.lz"); -const u32 gMonBackPic_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/back.4bpp.lz"); -const u32 gMonBackPic_Scorbunny[] = INCBIN_U32("graphics/pokemon/scorbunny/back.4bpp.lz"); -const u32 gMonBackPic_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/back.4bpp.lz"); -const u32 gMonBackPic_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/back.4bpp.lz"); -const u32 gMonBackPic_Sobble[] = INCBIN_U32("graphics/pokemon/sobble/back.4bpp.lz"); -const u32 gMonBackPic_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/back.4bpp.lz"); -const u32 gMonBackPic_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/back.4bpp.lz"); -const u32 gMonBackPic_Skwovet[] = INCBIN_U32("graphics/pokemon/skwovet/back.4bpp.lz"); -const u32 gMonBackPic_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/back.4bpp.lz"); -const u32 gMonBackPic_Rookidee[] = INCBIN_U32("graphics/pokemon/rookidee/back.4bpp.lz"); -const u32 gMonBackPic_Corvisquire[] = INCBIN_U32("graphics/pokemon/corvisquire/back.4bpp.lz"); -const u32 gMonBackPic_Corviknight[] = INCBIN_U32("graphics/pokemon/corviknight/back.4bpp.lz"); -const u32 gMonBackPic_Blipbug[] = INCBIN_U32("graphics/pokemon/blipbug/back.4bpp.lz"); -const u32 gMonBackPic_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/back.4bpp.lz"); -const u32 gMonBackPic_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/back.4bpp.lz"); -const u32 gMonBackPic_Nickit[] = INCBIN_U32("graphics/pokemon/nickit/back.4bpp.lz"); -const u32 gMonBackPic_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/back.4bpp.lz"); -const u32 gMonBackPic_Gossifleur[] = INCBIN_U32("graphics/pokemon/gossifleur/back.4bpp.lz"); -const u32 gMonBackPic_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/back.4bpp.lz"); -const u32 gMonBackPic_Wooloo[] = INCBIN_U32("graphics/pokemon/wooloo/back.4bpp.lz"); -const u32 gMonBackPic_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/back.4bpp.lz"); -const u32 gMonBackPic_Chewtle[] = INCBIN_U32("graphics/pokemon/chewtle/back.4bpp.lz"); -const u32 gMonBackPic_Drednaw[] = INCBIN_U32("graphics/pokemon/drednaw/back.4bpp.lz"); -const u32 gMonBackPic_Yamper[] = INCBIN_U32("graphics/pokemon/yamper/back.4bpp.lz"); -const u32 gMonBackPic_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/back.4bpp.lz"); -const u32 gMonBackPic_Rolycoly[] = INCBIN_U32("graphics/pokemon/rolycoly/back.4bpp.lz"); -const u32 gMonBackPic_Carkol[] = INCBIN_U32("graphics/pokemon/carkol/back.4bpp.lz"); -const u32 gMonBackPic_Coalossal[] = INCBIN_U32("graphics/pokemon/coalossal/back.4bpp.lz"); -const u32 gMonBackPic_Applin[] = INCBIN_U32("graphics/pokemon/applin/back.4bpp.lz"); -const u32 gMonBackPic_Flapple[] = INCBIN_U32("graphics/pokemon/flapple/back.4bpp.lz"); -const u32 gMonBackPic_Appletun[] = INCBIN_U32("graphics/pokemon/appletun/back.4bpp.lz"); -const u32 gMonBackPic_Silicobra[] = INCBIN_U32("graphics/pokemon/silicobra/back.4bpp.lz"); -const u32 gMonBackPic_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/back.4bpp.lz"); -const u32 gMonBackPic_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/back.4bpp.lz"); -const u32 gMonBackPic_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/back.4bpp.lz"); -const u32 gMonBackPic_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/back.4bpp.lz"); -const u32 gMonBackPic_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/back.4bpp.lz"); -const u32 gMonBackPic_Toxtricity[] = INCBIN_U32("graphics/pokemon/toxtricity/back.4bpp.lz"); -const u32 gMonBackPic_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/back.4bpp.lz"); -const u32 gMonBackPic_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/back.4bpp.lz"); -const u32 gMonBackPic_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/back.4bpp.lz"); -const u32 gMonBackPic_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/back.4bpp.lz"); -const u32 gMonBackPic_Sinistea[] = INCBIN_U32("graphics/pokemon/sinistea/back.4bpp.lz"); -const u32 gMonBackPic_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/back.4bpp.lz"); -const u32 gMonBackPic_Hatenna[] = INCBIN_U32("graphics/pokemon/hatenna/back.4bpp.lz"); -const u32 gMonBackPic_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/back.4bpp.lz"); -const u32 gMonBackPic_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/back.4bpp.lz"); -const u32 gMonBackPic_Impidimp[] = INCBIN_U32("graphics/pokemon/impidimp/back.4bpp.lz"); -const u32 gMonBackPic_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/back.4bpp.lz"); -const u32 gMonBackPic_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/back.4bpp.lz"); -const u32 gMonBackPic_Obstagoon[] = INCBIN_U32("graphics/pokemon/obstagoon/back.4bpp.lz"); -const u32 gMonBackPic_Perrserker[] = INCBIN_U32("graphics/pokemon/perrserker/back.4bpp.lz"); -const u32 gMonBackPic_Cursola[] = INCBIN_U32("graphics/pokemon/cursola/back.4bpp.lz"); -const u32 gMonBackPic_Sirfetchd[] = INCBIN_U32("graphics/pokemon/sirfetchd/back.4bpp.lz"); -const u32 gMonBackPic_MrRime[] = INCBIN_U32("graphics/pokemon/mr_rime/back.4bpp.lz"); -const u32 gMonBackPic_Runerigus[] = INCBIN_U32("graphics/pokemon/runerigus/back.4bpp.lz"); -const u32 gMonBackPic_Milcery[] = INCBIN_U32("graphics/pokemon/milcery/back.4bpp.lz"); -const u32 gMonBackPic_Alcremie[] = INCBIN_U32("graphics/pokemon/alcremie/back.4bpp.lz"); -const u32 gMonBackPic_Falinks[] = INCBIN_U32("graphics/pokemon/falinks/back.4bpp.lz"); -const u32 gMonBackPic_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/back.4bpp.lz"); -const u32 gMonBackPic_Snom[] = INCBIN_U32("graphics/pokemon/snom/back.4bpp.lz"); -const u32 gMonBackPic_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/back.4bpp.lz"); -const u32 gMonBackPic_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/back.4bpp.lz"); -const u32 gMonBackPic_Eiscue[] = INCBIN_U32("graphics/pokemon/eiscue/back.4bpp.lz"); -const u32 gMonBackPic_Indeedee[] = INCBIN_U32("graphics/pokemon/indeedee/back.4bpp.lz"); -const u32 gMonBackPic_Morpeko[] = INCBIN_U32("graphics/pokemon/morpeko/back.4bpp.lz"); -const u32 gMonBackPic_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/back.4bpp.lz"); -const u32 gMonBackPic_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/back.4bpp.lz"); -const u32 gMonBackPic_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/back.4bpp.lz"); -const u32 gMonBackPic_Arctozolt[] = INCBIN_U32("graphics/pokemon/arctozolt/back.4bpp.lz"); -const u32 gMonBackPic_Dracovish[] = INCBIN_U32("graphics/pokemon/dracovish/back.4bpp.lz"); -const u32 gMonBackPic_Arctovish[] = INCBIN_U32("graphics/pokemon/arctovish/back.4bpp.lz"); -const u32 gMonBackPic_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/back.4bpp.lz"); -const u32 gMonBackPic_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/back.4bpp.lz"); -const u32 gMonBackPic_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/back.4bpp.lz"); -const u32 gMonBackPic_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/back.4bpp.lz"); -const u32 gMonBackPic_Zacian[] = INCBIN_U32("graphics/pokemon/zacian/back.4bpp.lz"); -const u32 gMonBackPic_Zamazenta[] = INCBIN_U32("graphics/pokemon/zamazenta/back.4bpp.lz"); -const u32 gMonBackPic_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/back.4bpp.lz"); -const u32 gMonBackPic_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/back.4bpp.lz"); -const u32 gMonBackPic_Urshifu[] = INCBIN_U32("graphics/pokemon/urshifu/back.4bpp.lz"); -const u32 gMonBackPic_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/back.4bpp.lz"); -const u32 gMonBackPic_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/back.4bpp.lz"); -const u32 gMonBackPic_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/back.4bpp.lz"); -const u32 gMonBackPic_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/back.4bpp.lz"); -const u32 gMonBackPic_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/back.4bpp.lz"); -const u32 gMonBackPic_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/back.4bpp.lz"); -const u32 gMonBackPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/back.4bpp.lz"); -const u32 gMonBackPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/back.4bpp.lz"); -const u32 gMonBackPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/back.4bpp.lz"); -const u32 gMonBackPic_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/back.4bpp.lz"); -const u32 gMonBackPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/back.4bpp.lz"); -const u32 gMonBackPic_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/back.4bpp.lz"); -const u32 gMonBackPic_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/back.4bpp.lz"); -#endif -const u32 gMonBackPic_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/back.4bpp.lz"); -const u32 gMonBackPic_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/back.4bpp.lz"); -const u32 gMonBackPic_CharizardMegaY[] = INCBIN_U32("graphics/pokemon/charizard/mega_y/back.4bpp.lz"); -const u32 gMonBackPic_BlastoiseMega[] = INCBIN_U32("graphics/pokemon/blastoise/mega/back.4bpp.lz"); -const u32 gMonBackPic_BeedrillMega[] = INCBIN_U32("graphics/pokemon/beedrill/mega/back.4bpp.lz"); -const u32 gMonBackPic_PidgeotMega[] = INCBIN_U32("graphics/pokemon/pidgeot/mega/back.4bpp.lz"); -const u32 gMonBackPic_AlakazamMega[] = INCBIN_U32("graphics/pokemon/alakazam/mega/back.4bpp.lz"); -const u32 gMonBackPic_SlowbroMega[] = INCBIN_U32("graphics/pokemon/slowbro/mega/back.4bpp.lz"); -const u32 gMonBackPic_GengarMega[] = INCBIN_U32("graphics/pokemon/gengar/mega/back.4bpp.lz"); -const u32 gMonBackPic_KangaskhanMega[] = INCBIN_U32("graphics/pokemon/kangaskhan/mega/back.4bpp.lz"); -const u32 gMonBackPic_PinsirMega[] = INCBIN_U32("graphics/pokemon/pinsir/mega/back.4bpp.lz"); -const u32 gMonBackPic_GyaradosMega[] = INCBIN_U32("graphics/pokemon/gyarados/mega/back.4bpp.lz"); -const u32 gMonBackPic_AerodactylMega[] = INCBIN_U32("graphics/pokemon/aerodactyl/mega/back.4bpp.lz"); -const u32 gMonBackPic_MewtwoMegaX[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_x/back.4bpp.lz"); -const u32 gMonBackPic_MewtwoMegaY[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_y/back.4bpp.lz"); -const u32 gMonBackPic_AmpharosMega[] = INCBIN_U32("graphics/pokemon/ampharos/mega/back.4bpp.lz"); -const u32 gMonBackPic_SteelixMega[] = INCBIN_U32("graphics/pokemon/steelix/mega/back.4bpp.lz"); -const u32 gMonBackPic_ScizorMega[] = INCBIN_U32("graphics/pokemon/scizor/mega/back.4bpp.lz"); -const u32 gMonBackPic_HeracrossMega[] = INCBIN_U32("graphics/pokemon/heracross/mega/back.4bpp.lz"); -const u32 gMonBackPic_HoundoomMega[] = INCBIN_U32("graphics/pokemon/houndoom/mega/back.4bpp.lz"); -const u32 gMonBackPic_TyranitarMega[] = INCBIN_U32("graphics/pokemon/tyranitar/mega/back.4bpp.lz"); -const u32 gMonBackPic_SceptileMega[] = INCBIN_U32("graphics/pokemon/sceptile/mega/back.4bpp.lz"); -const u32 gMonBackPic_BlazikenMega[] = INCBIN_U32("graphics/pokemon/blaziken/mega/back.4bpp.lz"); -const u32 gMonBackPic_SwampertMega[] = INCBIN_U32("graphics/pokemon/swampert/mega/back.4bpp.lz"); -const u32 gMonBackPic_GardevoirMega[] = INCBIN_U32("graphics/pokemon/gardevoir/mega/back.4bpp.lz"); -const u32 gMonBackPic_SableyeMega[] = INCBIN_U32("graphics/pokemon/sableye/mega/back.4bpp.lz"); -const u32 gMonBackPic_MawileMega[] = INCBIN_U32("graphics/pokemon/mawile/mega/back.4bpp.lz"); -const u32 gMonBackPic_AggronMega[] = INCBIN_U32("graphics/pokemon/aggron/mega/back.4bpp.lz"); -const u32 gMonBackPic_MedichamMega[] = INCBIN_U32("graphics/pokemon/medicham/mega/back.4bpp.lz"); -const u32 gMonBackPic_ManectricMega[] = INCBIN_U32("graphics/pokemon/manectric/mega/back.4bpp.lz"); -const u32 gMonBackPic_SharpedoMega[] = INCBIN_U32("graphics/pokemon/sharpedo/mega/back.4bpp.lz"); -const u32 gMonBackPic_CameruptMega[] = INCBIN_U32("graphics/pokemon/camerupt/mega/back.4bpp.lz"); -const u32 gMonBackPic_AltariaMega[] = INCBIN_U32("graphics/pokemon/altaria/mega/back.4bpp.lz"); -const u32 gMonBackPic_BanetteMega[] = INCBIN_U32("graphics/pokemon/banette/mega/back.4bpp.lz"); -const u32 gMonBackPic_AbsolMega[] = INCBIN_U32("graphics/pokemon/absol/mega/back.4bpp.lz"); -const u32 gMonBackPic_GlalieMega[] = INCBIN_U32("graphics/pokemon/glalie/mega/back.4bpp.lz"); -const u32 gMonBackPic_SalamenceMega[] = INCBIN_U32("graphics/pokemon/salamence/mega/back.4bpp.lz"); -const u32 gMonBackPic_MetagrossMega[] = INCBIN_U32("graphics/pokemon/metagross/mega/back.4bpp.lz"); -const u32 gMonBackPic_LatiasMega[] = INCBIN_U32("graphics/pokemon/latias/mega/back.4bpp.lz"); -const u32 gMonBackPic_LatiosMega[] = INCBIN_U32("graphics/pokemon/latios/mega/back.4bpp.lz"); -#if P_GEN_4_POKEMON == TRUE -const u32 gMonBackPic_LopunnyMega[] = INCBIN_U32("graphics/pokemon/lopunny/mega/back.4bpp.lz"); -const u32 gMonBackPic_GarchompMega[] = INCBIN_U32("graphics/pokemon/garchomp/mega/back.4bpp.lz"); -const u32 gMonBackPic_LucarioMega[] = INCBIN_U32("graphics/pokemon/lucario/mega/back.4bpp.lz"); -const u32 gMonBackPic_AbomasnowMega[] = INCBIN_U32("graphics/pokemon/abomasnow/mega/back.4bpp.lz"); -const u32 gMonBackPic_GalladeMega[] = INCBIN_U32("graphics/pokemon/gallade/mega/back.4bpp.lz"); -#endif -#if P_GEN_5_POKEMON == TRUE -const u32 gMonBackPic_AudinoMega[] = INCBIN_U32("graphics/pokemon/audino/mega/back.4bpp.lz"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u32 gMonBackPic_DiancieMega[] = INCBIN_U32("graphics/pokemon/diancie/mega/back.4bpp.lz"); -#endif -const u32 gMonBackPic_RayquazaMega[] = INCBIN_U32("graphics/pokemon/rayquaza/mega/back.4bpp.lz"); -const u32 gMonBackPic_KyogrePrimal[] = INCBIN_U32("graphics/pokemon/kyogre/primal/back.4bpp.lz"); -const u32 gMonBackPic_GroudonPrimal[] = INCBIN_U32("graphics/pokemon/groudon/primal/back.4bpp.lz"); -const u32 gMonBackPic_RattataAlolan[] = INCBIN_U32("graphics/pokemon/rattata/alolan/back.4bpp.lz"); -const u32 gMonBackPic_RaticateAlolan[] = INCBIN_U32("graphics/pokemon/raticate/alolan/back.4bpp.lz"); -const u32 gMonBackPic_RaichuAlolan[] = INCBIN_U32("graphics/pokemon/raichu/alolan/back.4bpp.lz"); -const u32 gMonBackPic_SandshrewAlolan[] = INCBIN_U32("graphics/pokemon/sandshrew/alolan/back.4bpp.lz"); -const u32 gMonBackPic_SandslashAlolan[] = INCBIN_U32("graphics/pokemon/sandslash/alolan/back.4bpp.lz"); -const u32 gMonBackPic_VulpixAlolan[] = INCBIN_U32("graphics/pokemon/vulpix/alolan/back.4bpp.lz"); -const u32 gMonBackPic_NinetalesAlolan[] = INCBIN_U32("graphics/pokemon/ninetales/alolan/back.4bpp.lz"); -const u32 gMonBackPic_DiglettAlolan[] = INCBIN_U32("graphics/pokemon/diglett/alolan/back.4bpp.lz"); -const u32 gMonBackPic_DugtrioAlolan[] = INCBIN_U32("graphics/pokemon/dugtrio/alolan/back.4bpp.lz"); -const u32 gMonBackPic_MeowthAlolan[] = INCBIN_U32("graphics/pokemon/meowth/alolan/back.4bpp.lz"); -const u32 gMonBackPic_PersianAlolan[] = INCBIN_U32("graphics/pokemon/persian/alolan/back.4bpp.lz"); -const u32 gMonBackPic_GeodudeAlolan[] = INCBIN_U32("graphics/pokemon/geodude/alolan/back.4bpp.lz"); -const u32 gMonBackPic_GravelerAlolan[] = INCBIN_U32("graphics/pokemon/graveler/alolan/back.4bpp.lz"); -const u32 gMonBackPic_GolemAlolan[] = INCBIN_U32("graphics/pokemon/golem/alolan/back.4bpp.lz"); -const u32 gMonBackPic_GrimerAlolan[] = INCBIN_U32("graphics/pokemon/grimer/alolan/back.4bpp.lz"); -const u32 gMonBackPic_MukAlolan[] = INCBIN_U32("graphics/pokemon/muk/alolan/back.4bpp.lz"); -const u32 gMonBackPic_ExeggutorAlolan[] = INCBIN_U32("graphics/pokemon/exeggutor/alolan/back.4bpp.lz"); -const u32 gMonBackPic_MarowakAlolan[] = INCBIN_U32("graphics/pokemon/marowak/alolan/back.4bpp.lz"); -const u32 gMonBackPic_MeowthGalarian[] = INCBIN_U32("graphics/pokemon/meowth/galarian/back.4bpp.lz"); -const u32 gMonBackPic_PonytaGalarian[] = INCBIN_U32("graphics/pokemon/ponyta/galarian/back.4bpp.lz"); -const u32 gMonBackPic_RapidashGalarian[] = INCBIN_U32("graphics/pokemon/rapidash/galarian/back.4bpp.lz"); -const u32 gMonBackPic_SlowpokeGalarian[] = INCBIN_U32("graphics/pokemon/slowpoke/galarian/back.4bpp.lz"); -const u32 gMonBackPic_SlowbroGalarian[] = INCBIN_U32("graphics/pokemon/slowbro/galarian/back.4bpp.lz"); -const u32 gMonBackPic_FarfetchdGalarian[] = INCBIN_U32("graphics/pokemon/farfetchd/galarian/back.4bpp.lz"); -const u32 gMonBackPic_WeezingGalarian[] = INCBIN_U32("graphics/pokemon/weezing/galarian/back.4bpp.lz"); -const u32 gMonBackPic_MrMimeGalarian[] = INCBIN_U32("graphics/pokemon/mr_mime/galarian/back.4bpp.lz"); -const u32 gMonBackPic_ArticunoGalarian[] = INCBIN_U32("graphics/pokemon/articuno/galarian/back.4bpp.lz"); -const u32 gMonBackPic_ZapdosGalarian[] = INCBIN_U32("graphics/pokemon/zapdos/galarian/back.4bpp.lz"); -const u32 gMonBackPic_MoltresGalarian[] = INCBIN_U32("graphics/pokemon/moltres/galarian/back.4bpp.lz"); -const u32 gMonBackPic_SlowkingGalarian[] = INCBIN_U32("graphics/pokemon/slowking/galarian/back.4bpp.lz"); -const u32 gMonBackPic_CorsolaGalarian[] = INCBIN_U32("graphics/pokemon/corsola/galarian/back.4bpp.lz"); -const u32 gMonBackPic_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzagoon/galarian/back.4bpp.lz"); -const u32 gMonBackPic_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/back.4bpp.lz"); -#if P_GEN_5_POKEMON == TRUE -const u32 gMonBackPic_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/back.4bpp.lz"); -const u32 gMonBackPic_DarmanitanGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/back.4bpp.lz"); -const u32 gMonBackPic_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/back.4bpp.lz"); -const u32 gMonBackPic_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/back.4bpp.lz"); -#endif -const u32 gMonBackPic_GrowlitheHisuian[] = INCBIN_U32("graphics/pokemon/growlithe/hisuian/back.4bpp.lz"); -const u32 gMonBackPic_ArcanineHisuian[] = INCBIN_U32("graphics/pokemon/arcanine/hisuian/back.4bpp.lz"); -const u32 gMonBackPic_VoltorbHisuian[] = INCBIN_U32("graphics/pokemon/voltorb/hisuian/back.4bpp.lz"); -const u32 gMonBackPic_ElectrodeHisuian[] = INCBIN_U32("graphics/pokemon/electrode/hisuian/back.4bpp.lz"); -const u32 gMonBackPic_TyphlosionHisuian[] = INCBIN_U32("graphics/pokemon/typhlosion/hisuian/back.4bpp.lz"); -const u32 gMonBackPic_QwilfishHisuian[] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/back.4bpp.lz"); -const u32 gMonBackPic_SneaselHisuian[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/back.4bpp.lz"); -const u32 gMonBackPic_SneaselHisuianF[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/backf.4bpp.lz"); -#if P_GEN_5_POKEMON == TRUE -const u32 gMonBackPic_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/back.4bpp.lz"); -const u32 gMonBackPic_LilligantHisuian[] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/back.4bpp.lz"); -const u32 gMonBackPic_ZoruaHisuian[] = INCBIN_U32("graphics/pokemon/zorua/hisuian/back.4bpp.lz"); -const u32 gMonBackPic_ZoroarkHisuian[] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/back.4bpp.lz"); -const u32 gMonBackPic_BraviaryHisuian[] = INCBIN_U32("graphics/pokemon/braviary/hisuian/back.4bpp.lz"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u32 gMonBackPic_SliggooHisuian[] = INCBIN_U32("graphics/pokemon/sliggoo/hisuian/back.4bpp.lz"); -const u32 gMonBackPic_GoodraHisuian[] = INCBIN_U32("graphics/pokemon/goodra/hisuian/back.4bpp.lz"); -const u32 gMonBackPic_AvaluggHisuian[] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/back.4bpp.lz"); -#endif -#if P_GEN_7_POKEMON == TRUE -const u32 gMonBackPic_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/back.4bpp.lz"); -#endif -const u32 gMonBackPic_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/back.4bpp.lz"); -const u32 gMonBackPic_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/back.4bpp.lz"); -const u32 gMonBackPic_PikachuBelle[] = INCBIN_U32("graphics/pokemon/pikachu/belle/back.4bpp.lz"); -const u32 gMonBackPic_PikachuPopStar[] = INCBIN_U32("graphics/pokemon/pikachu/pop_star/back.4bpp.lz"); -const u32 gMonBackPic_PikachuPhD[] = INCBIN_U32("graphics/pokemon/pikachu/ph_d/back.4bpp.lz"); -const u32 gMonBackPic_PikachuLibre[] = INCBIN_U32("graphics/pokemon/pikachu/libre/back.4bpp.lz"); -const u32 gMonBackPic_PikachuOriginalCap[] = INCBIN_U32("graphics/pokemon/pikachu/original_cap/back.4bpp.lz"); -const u32 gMonBackPic_PikachuHoennCap[] = INCBIN_U32("graphics/pokemon/pikachu/hoenn_cap/back.4bpp.lz"); -const u32 gMonBackPic_PikachuSinnohCap[] = INCBIN_U32("graphics/pokemon/pikachu/sinnoh_cap/back.4bpp.lz"); -const u32 gMonBackPic_PikachuUnovaCap[] = INCBIN_U32("graphics/pokemon/pikachu/unova_cap/back.4bpp.lz"); -const u32 gMonBackPic_PikachuKalosCap[] = INCBIN_U32("graphics/pokemon/pikachu/kalos_cap/back.4bpp.lz"); -const u32 gMonBackPic_PikachuAlolaCap[] = INCBIN_U32("graphics/pokemon/pikachu/alola_cap/back.4bpp.lz"); -const u32 gMonBackPic_PikachuPartnerCap[] = INCBIN_U32("graphics/pokemon/pikachu/partner_cap/back.4bpp.lz"); -const u32 gMonBackPic_PikachuWorldCap[] = INCBIN_U32("graphics/pokemon/pikachu/world_cap/back.4bpp.lz"); -const u32 gMonBackPic_PichuSpikyEared[] = INCBIN_U32("graphics/pokemon/pichu/spiky_eared/back.4bpp.lz"); -const u32 gMonBackPic_UnownB[] = INCBIN_U32("graphics/pokemon/unown/b/back.4bpp.lz"); -const u32 gMonBackPic_UnownC[] = INCBIN_U32("graphics/pokemon/unown/c/back.4bpp.lz"); -const u32 gMonBackPic_UnownD[] = INCBIN_U32("graphics/pokemon/unown/d/back.4bpp.lz"); -const u32 gMonBackPic_UnownE[] = INCBIN_U32("graphics/pokemon/unown/e/back.4bpp.lz"); -const u32 gMonBackPic_UnownF[] = INCBIN_U32("graphics/pokemon/unown/f/back.4bpp.lz"); -const u32 gMonBackPic_UnownG[] = INCBIN_U32("graphics/pokemon/unown/g/back.4bpp.lz"); -const u32 gMonBackPic_UnownH[] = INCBIN_U32("graphics/pokemon/unown/h/back.4bpp.lz"); -const u32 gMonBackPic_UnownI[] = INCBIN_U32("graphics/pokemon/unown/i/back.4bpp.lz"); -const u32 gMonBackPic_UnownJ[] = INCBIN_U32("graphics/pokemon/unown/j/back.4bpp.lz"); -const u32 gMonBackPic_UnownK[] = INCBIN_U32("graphics/pokemon/unown/k/back.4bpp.lz"); -const u32 gMonBackPic_UnownL[] = INCBIN_U32("graphics/pokemon/unown/l/back.4bpp.lz"); -const u32 gMonBackPic_UnownM[] = INCBIN_U32("graphics/pokemon/unown/m/back.4bpp.lz"); -const u32 gMonBackPic_UnownN[] = INCBIN_U32("graphics/pokemon/unown/n/back.4bpp.lz"); -const u32 gMonBackPic_UnownO[] = INCBIN_U32("graphics/pokemon/unown/o/back.4bpp.lz"); -const u32 gMonBackPic_UnownP[] = INCBIN_U32("graphics/pokemon/unown/p/back.4bpp.lz"); -const u32 gMonBackPic_UnownQ[] = INCBIN_U32("graphics/pokemon/unown/q/back.4bpp.lz"); -const u32 gMonBackPic_UnownR[] = INCBIN_U32("graphics/pokemon/unown/r/back.4bpp.lz"); -const u32 gMonBackPic_UnownS[] = INCBIN_U32("graphics/pokemon/unown/s/back.4bpp.lz"); -const u32 gMonBackPic_UnownT[] = INCBIN_U32("graphics/pokemon/unown/t/back.4bpp.lz"); -const u32 gMonBackPic_UnownU[] = INCBIN_U32("graphics/pokemon/unown/u/back.4bpp.lz"); -const u32 gMonBackPic_UnownV[] = INCBIN_U32("graphics/pokemon/unown/v/back.4bpp.lz"); -const u32 gMonBackPic_UnownW[] = INCBIN_U32("graphics/pokemon/unown/w/back.4bpp.lz"); -const u32 gMonBackPic_UnownX[] = INCBIN_U32("graphics/pokemon/unown/x/back.4bpp.lz"); -const u32 gMonBackPic_UnownY[] = INCBIN_U32("graphics/pokemon/unown/y/back.4bpp.lz"); -const u32 gMonBackPic_UnownZ[] = INCBIN_U32("graphics/pokemon/unown/z/back.4bpp.lz"); -const u32 gMonBackPic_UnownExclamationMark[] = INCBIN_U32("graphics/pokemon/unown/exclamation_mark/back.4bpp.lz"); -const u32 gMonBackPic_UnownQuestionMark[] = INCBIN_U32("graphics/pokemon/unown/question_mark/back.4bpp.lz"); -const u32 gMonBackPic_CastformSunny[] = INCBIN_U32("graphics/pokemon/castform/sunny/back.4bpp.lz"); -const u32 gMonBackPic_CastformRainy[] = INCBIN_U32("graphics/pokemon/castform/rainy/back.4bpp.lz"); -const u32 gMonBackPic_CastformSnowy[] = INCBIN_U32("graphics/pokemon/castform/snowy/back.4bpp.lz"); -const u32 gMonBackPic_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/attack/back.4bpp.lz"); -const u32 gMonBackPic_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/defense/back.4bpp.lz"); -const u32 gMonBackPic_DeoxysSpeed[] = INCBIN_U32("graphics/pokemon/deoxys/speed/back.4bpp.lz"); -#if P_GEN_4_POKEMON == TRUE -const u32 gMonBackPic_BurmySandyCloak[] = INCBIN_U32("graphics/pokemon/burmy/sandy_cloak/back.4bpp.lz"); -const u32 gMonBackPic_BurmyTrashCloak[] = INCBIN_U32("graphics/pokemon/burmy/trash_cloak/back.4bpp.lz"); -const u32 gMonBackPic_WormadamSandyCloak[] = INCBIN_U32("graphics/pokemon/wormadam/sandy_cloak/back.4bpp.lz"); -const u32 gMonBackPic_WormadamTrashCloak[] = INCBIN_U32("graphics/pokemon/wormadam/trash_cloak/back.4bpp.lz"); -const u32 gMonBackPic_CherrimSunshine[] = INCBIN_U32("graphics/pokemon/cherrim/sunshine/back.4bpp.lz"); -const u32 gMonBackPic_ShellosEastSea[] = INCBIN_U32("graphics/pokemon/shellos/east_sea/back.4bpp.lz"); -const u32 gMonBackPic_GastrodonEastSea[] = INCBIN_U32("graphics/pokemon/gastrodon/east_sea/back.4bpp.lz"); -const u32 gMonBackPic_RotomHeat[] = INCBIN_U32("graphics/pokemon/rotom/heat/back.4bpp.lz"); -const u32 gMonBackPic_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash/back.4bpp.lz"); -const u32 gMonBackPic_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/back.4bpp.lz"); -const u32 gMonBackPic_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/back.4bpp.lz"); -const u32 gMonBackPic_RotomMow[] = INCBIN_U32("graphics/pokemon/rotom/mow/back.4bpp.lz"); -const u32 gMonBackPic_DialgaOrigin[] = INCBIN_U32("graphics/pokemon/dialga/origin/back.4bpp.lz"); -const u32 gMonBackPic_PalkiaOrigin[] = INCBIN_U32("graphics/pokemon/palkia/origin/back.4bpp.lz"); -const u32 gMonBackPic_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/back.4bpp.lz"); -const u32 gMonBackPic_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/back.4bpp.lz"); -#endif -#if P_GEN_5_POKEMON == TRUE -const u32 gMonBackPic_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/back.4bpp.lz"); -const u32 gMonBackPic_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/back.4bpp.lz"); -const u32 gMonBackPic_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/back.4bpp.lz"); -const u32 gMonBackPic_DarmanitanZenModeGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/back.4bpp.lz"); -const u32 gMonBackPic_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/back.4bpp.lz"); -const u32 gMonBackPic_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/back.4bpp.lz"); -const u32 gMonBackPic_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/back.4bpp.lz"); -const u32 gMonBackPic_TornadusTherian[] = INCBIN_U32("graphics/pokemon/tornadus/therian/back.4bpp.lz"); -const u32 gMonBackPic_ThundurusTherian[] = INCBIN_U32("graphics/pokemon/thundurus/therian/back.4bpp.lz"); -const u32 gMonBackPic_LandorusTherian[] = INCBIN_U32("graphics/pokemon/landorus/therian/back.4bpp.lz"); -const u32 gMonBackPic_KyuremWhite[] = INCBIN_U32("graphics/pokemon/kyurem/white/back.4bpp.lz"); -const u32 gMonBackPic_KyuremBlack[] = INCBIN_U32("graphics/pokemon/kyurem/black/back.4bpp.lz"); -const u32 gMonBackPic_KeldeoResolute[] = INCBIN_U32("graphics/pokemon/keldeo/resolute/back.4bpp.lz"); -const u32 gMonBackPic_MeloettaPirouette[] = INCBIN_U32("graphics/pokemon/meloetta/pirouette/back.4bpp.lz"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u32 gMonBackPic_GreninjaAsh[] = INCBIN_U32("graphics/pokemon/greninja/ash/back.4bpp.lz"); -const u32 gMonBackPic_VivillonPolar[] = INCBIN_U32("graphics/pokemon/vivillon/polar/back.4bpp.lz"); -const u32 gMonBackPic_VivillonTundra[] = INCBIN_U32("graphics/pokemon/vivillon/tundra/back.4bpp.lz"); -const u32 gMonBackPic_VivillonContinental[] = INCBIN_U32("graphics/pokemon/vivillon/continental/back.4bpp.lz"); -const u32 gMonBackPic_VivillonGarden[] = INCBIN_U32("graphics/pokemon/vivillon/garden/back.4bpp.lz"); -const u32 gMonBackPic_VivillonElegant[] = INCBIN_U32("graphics/pokemon/vivillon/elegant/back.4bpp.lz"); -const u32 gMonBackPic_VivillonMeadow[] = INCBIN_U32("graphics/pokemon/vivillon/meadow/back.4bpp.lz"); -const u32 gMonBackPic_VivillonModern[] = INCBIN_U32("graphics/pokemon/vivillon/modern/back.4bpp.lz"); -const u32 gMonBackPic_VivillonMarine[] = INCBIN_U32("graphics/pokemon/vivillon/marine/back.4bpp.lz"); -const u32 gMonBackPic_VivillonArchipelago[] = INCBIN_U32("graphics/pokemon/vivillon/archipelago/back.4bpp.lz"); -const u32 gMonBackPic_VivillonHighPlains[] = INCBIN_U32("graphics/pokemon/vivillon/high_plains/back.4bpp.lz"); -const u32 gMonBackPic_VivillonSandstorm[] = INCBIN_U32("graphics/pokemon/vivillon/sandstorm/back.4bpp.lz"); -const u32 gMonBackPic_VivillonRiver[] = INCBIN_U32("graphics/pokemon/vivillon/river/back.4bpp.lz"); -const u32 gMonBackPic_VivillonMonsoon[] = INCBIN_U32("graphics/pokemon/vivillon/monsoon/back.4bpp.lz"); -const u32 gMonBackPic_VivillonSavanna[] = INCBIN_U32("graphics/pokemon/vivillon/savanna/back.4bpp.lz"); -const u32 gMonBackPic_VivillonSun[] = INCBIN_U32("graphics/pokemon/vivillon/sun/back.4bpp.lz"); -const u32 gMonBackPic_VivillonOcean[] = INCBIN_U32("graphics/pokemon/vivillon/ocean/back.4bpp.lz"); -const u32 gMonBackPic_VivillonJungle[] = INCBIN_U32("graphics/pokemon/vivillon/jungle/back.4bpp.lz"); -const u32 gMonBackPic_VivillonFancy[] = INCBIN_U32("graphics/pokemon/vivillon/fancy/back.4bpp.lz"); -const u32 gMonBackPic_VivillonPokeBall[] = INCBIN_U32("graphics/pokemon/vivillon/poke_ball/back.4bpp.lz"); -const u32 gMonBackPic_FloetteEternalFlower[] = INCBIN_U32("graphics/pokemon/floette/eternal_flower/back.4bpp.lz"); -const u32 gMonBackPic_FurfrouHeartTrim[] = INCBIN_U32("graphics/pokemon/furfrou/heart_trim/back.4bpp.lz"); -const u32 gMonBackPic_FurfrouStarTrim[] = INCBIN_U32("graphics/pokemon/furfrou/star_trim/back.4bpp.lz"); -const u32 gMonBackPic_FurfrouDiamondTrim[] = INCBIN_U32("graphics/pokemon/furfrou/diamond_trim/back.4bpp.lz"); -const u32 gMonBackPic_FurfrouDebutanteTrim[] = INCBIN_U32("graphics/pokemon/furfrou/debutante_trim/back.4bpp.lz"); -const u32 gMonBackPic_FurfrouMatronTrim[] = INCBIN_U32("graphics/pokemon/furfrou/matron_trim/back.4bpp.lz"); -const u32 gMonBackPic_FurfrouDandyTrim[] = INCBIN_U32("graphics/pokemon/furfrou/dandy_trim/back.4bpp.lz"); -const u32 gMonBackPic_FurfrouLaReineTrim[] = INCBIN_U32("graphics/pokemon/furfrou/la_reine_trim/back.4bpp.lz"); -const u32 gMonBackPic_FurfrouKabukiTrim[] = INCBIN_U32("graphics/pokemon/furfrou/kabuki_trim/back.4bpp.lz"); -const u32 gMonBackPic_FurfrouPharaohTrim[] = INCBIN_U32("graphics/pokemon/furfrou/pharaoh_trim/back.4bpp.lz"); -const u32 gMonBackPic_MeowsticFemale[] = INCBIN_U32("graphics/pokemon/meowstic/female/back.4bpp.lz"); -const u32 gMonBackPic_AegislashBlade[] = INCBIN_U32("graphics/pokemon/aegislash/blade/back.4bpp.lz"); -const u32 gMonBackPic_PumpkabooSmall[] = INCBIN_U32("graphics/pokemon/pumpkaboo/small/back.4bpp.lz"); -const u32 gMonBackPic_PumpkabooLarge[] = INCBIN_U32("graphics/pokemon/pumpkaboo/large/back.4bpp.lz"); -const u32 gMonBackPic_PumpkabooSuper[] = INCBIN_U32("graphics/pokemon/pumpkaboo/super/back.4bpp.lz"); -const u32 gMonBackPic_GourgeistSmall[] = INCBIN_U32("graphics/pokemon/gourgeist/small/back.4bpp.lz"); -const u32 gMonBackPic_GourgeistLarge[] = INCBIN_U32("graphics/pokemon/gourgeist/large/back.4bpp.lz"); -const u32 gMonBackPic_GourgeistSuper[] = INCBIN_U32("graphics/pokemon/gourgeist/super/back.4bpp.lz"); -const u32 gMonBackPic_XerneasActive[] = INCBIN_U32("graphics/pokemon/xerneas/active/back.4bpp.lz"); -const u32 gMonBackPic_Zygarde10[] = INCBIN_U32("graphics/pokemon/zygarde/10_percent/back.4bpp.lz"); -const u32 gMonBackPic_ZygardeComplete[] = INCBIN_U32("graphics/pokemon/zygarde/complete/back.4bpp.lz"); -const u32 gMonBackPic_HoopaUnbound[] = INCBIN_U32("graphics/pokemon/hoopa/unbound/back.4bpp.lz"); -#endif -#if P_GEN_7_POKEMON == TRUE -const u32 gMonBackPic_OricorioPomPom[] = INCBIN_U32("graphics/pokemon/oricorio/pom_pom/back.4bpp.lz"); -const u32 gMonBackPic_OricorioPau[] = INCBIN_U32("graphics/pokemon/oricorio/pau/back.4bpp.lz"); -const u32 gMonBackPic_OricorioSensu[] = INCBIN_U32("graphics/pokemon/oricorio/sensu/back.4bpp.lz"); -const u32 gMonBackPic_LycanrocMidnight[] = INCBIN_U32("graphics/pokemon/lycanroc/midnight/back.4bpp.lz"); -const u32 gMonBackPic_LycanrocDusk[] = INCBIN_U32("graphics/pokemon/lycanroc/dusk/back.4bpp.lz"); -const u32 gMonBackPic_WishiwashiSchool[] = INCBIN_U32("graphics/pokemon/wishiwashi/school/back.4bpp.lz"); -const u32 gMonBackPic_MiniorCore[] = INCBIN_U32("graphics/pokemon/minior/core/back.4bpp.lz"); -const u32 gMonBackPic_MimikyuBusted[] = INCBIN_U32("graphics/pokemon/mimikyu/busted/back.4bpp.lz"); -const u32 gMonBackPic_NecrozmaDuskMane[] = INCBIN_U32("graphics/pokemon/necrozma/dusk_mane/back.4bpp.lz"); -const u32 gMonBackPic_NecrozmaDawnWings[] = INCBIN_U32("graphics/pokemon/necrozma/dawn_wings/back.4bpp.lz"); -const u32 gMonBackPic_NecrozmaUltra[] = INCBIN_U32("graphics/pokemon/necrozma/ultra/back.4bpp.lz"); -const u32 gMonBackPic_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/magearna/original_color/back.4bpp.lz"); -#endif -#if P_GEN_8_POKEMON == TRUE -const u32 gMonBackPic_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/back.4bpp.lz"); -const u32 gMonBackPic_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/back.4bpp.lz"); -const u32 gMonBackPic_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_cream/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/matcha_cream/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/mint_cream/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/lemon_cream/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/salted_cream/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_swirl/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/caramel_swirl/back.4bpp.lz"); -const u32 gMonBackPic_AlcremieRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/rainbow_swirl/back.4bpp.lz"); -const u32 gMonBackPic_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/back.4bpp.lz"); -const u32 gMonBackPic_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/back.4bpp.lz"); -const u32 gMonBackPic_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/back.4bpp.lz"); -const u32 gMonBackPic_ZacianCrownedSword[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/back.4bpp.lz"); -const u32 gMonBackPic_ZamazentaCrownedShield[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/back.4bpp.lz"); -const u32 gMonBackPic_EternatusEternamax[] = INCBIN_U32("graphics/pokemon/eternatus/eternamax/back.4bpp.lz"); -const u32 gMonBackPic_UrshifuRapidStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style/back.4bpp.lz"); -const u32 gMonBackPic_ZarudeDada[] = INCBIN_U32("graphics/pokemon/zarude/dada/back.4bpp.lz"); -const u32 gMonBackPic_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ice_rider/back.4bpp.lz"); -const u32 gMonBackPic_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/back.4bpp.lz"); -const u32 gMonBackPic_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/back.4bpp.lz"); -const u32 gMonBackPic_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/back.4bpp.lz"); -#endif - const u32 gMonPalette_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/question_mark/circled/normal.gbapal.lz"); -const u32 gMonPalette_DoubleQuestionMark[] = INCBIN_U32("graphics/pokemon/question_mark/double/normal.gbapal.lz"); -const u32 gMonPalette_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/normal.gbapal.lz"); -const u32 gMonPalette_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/normal.gbapal.lz"); -const u32 gMonPalette_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/normal.gbapal.lz"); -const u32 gMonPalette_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/normal.gbapal.lz"); -const u32 gMonPalette_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/normal.gbapal.lz"); -const u32 gMonPalette_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/normal.gbapal.lz"); -const u32 gMonPalette_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/normal.gbapal.lz"); -const u32 gMonPalette_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/normal.gbapal.lz"); -const u32 gMonPalette_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/normal.gbapal.lz"); -const u32 gMonPalette_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/normal.gbapal.lz"); -const u32 gMonPalette_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/normal.gbapal.lz"); -const u32 gMonPalette_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/normal.gbapal.lz"); -const u32 gMonPalette_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/normal.gbapal.lz"); -const u32 gMonPalette_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/normal.gbapal.lz"); -const u32 gMonPalette_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/normal.gbapal.lz"); -const u32 gMonPalette_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/normal.gbapal.lz"); -const u32 gMonPalette_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/normal.gbapal.lz"); -const u32 gMonPalette_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/normal.gbapal.lz"); -const u32 gMonPalette_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/normal.gbapal.lz"); -const u32 gMonPalette_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/normal.gbapal.lz"); -const u32 gMonPalette_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/normal.gbapal.lz"); -const u32 gMonPalette_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/normal.gbapal.lz"); -const u32 gMonPalette_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/normal.gbapal.lz"); -const u32 gMonPalette_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/normal.gbapal.lz"); -const u32 gMonPalette_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/normal.gbapal.lz"); -const u32 gMonPalette_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/normal.gbapal.lz"); -const u32 gMonPalette_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/normal.gbapal.lz"); -const u32 gMonPalette_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/normal.gbapal.lz"); -const u32 gMonPalette_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/normal.gbapal.lz"); -const u32 gMonPalette_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/normal.gbapal.lz"); -const u32 gMonPalette_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/normal.gbapal.lz"); -const u32 gMonPalette_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/normal.gbapal.lz"); -const u32 gMonPalette_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/normal.gbapal.lz"); -const u32 gMonPalette_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/normal.gbapal.lz"); -const u32 gMonPalette_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/normal.gbapal.lz"); -const u32 gMonPalette_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/normal.gbapal.lz"); -const u32 gMonPalette_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/normal.gbapal.lz"); -const u32 gMonPalette_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/normal.gbapal.lz"); -const u32 gMonPalette_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/normal.gbapal.lz"); -const u32 gMonPalette_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/normal.gbapal.lz"); -const u32 gMonPalette_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/normal.gbapal.lz"); -const u32 gMonPalette_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/normal.gbapal.lz"); -const u32 gMonPalette_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/normal.gbapal.lz"); -const u32 gMonPalette_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/normal.gbapal.lz"); -const u32 gMonPalette_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/normal.gbapal.lz"); -const u32 gMonPalette_Paras[] = INCBIN_U32("graphics/pokemon/paras/normal.gbapal.lz"); -const u32 gMonPalette_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/normal.gbapal.lz"); -const u32 gMonPalette_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/normal.gbapal.lz"); -const u32 gMonPalette_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/normal.gbapal.lz"); -const u32 gMonPalette_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/normal.gbapal.lz"); -const u32 gMonPalette_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/normal.gbapal.lz"); -const u32 gMonPalette_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/normal.gbapal.lz"); -const u32 gMonPalette_Persian[] = INCBIN_U32("graphics/pokemon/persian/normal.gbapal.lz"); -const u32 gMonPalette_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/normal.gbapal.lz"); -const u32 gMonPalette_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/normal.gbapal.lz"); -const u32 gMonPalette_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/normal.gbapal.lz"); -const u32 gMonPalette_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/normal.gbapal.lz"); -const u32 gMonPalette_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/normal.gbapal.lz"); -const u32 gMonPalette_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/normal.gbapal.lz"); -const u32 gMonPalette_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/normal.gbapal.lz"); -const u32 gMonPalette_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/normal.gbapal.lz"); -const u32 gMonPalette_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/normal.gbapal.lz"); -const u32 gMonPalette_Abra[] = INCBIN_U32("graphics/pokemon/abra/normal.gbapal.lz"); -const u32 gMonPalette_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/normal.gbapal.lz"); -const u32 gMonPalette_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/normal.gbapal.lz"); -const u32 gMonPalette_Machop[] = INCBIN_U32("graphics/pokemon/machop/normal.gbapal.lz"); -const u32 gMonPalette_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/normal.gbapal.lz"); -const u32 gMonPalette_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/normal.gbapal.lz"); -const u32 gMonPalette_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/normal.gbapal.lz"); -const u32 gMonPalette_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/normal.gbapal.lz"); -const u32 gMonPalette_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/normal.gbapal.lz"); -const u32 gMonPalette_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/normal.gbapal.lz"); -const u32 gMonPalette_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/normal.gbapal.lz"); -const u32 gMonPalette_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/normal.gbapal.lz"); -const u32 gMonPalette_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/normal.gbapal.lz"); -const u32 gMonPalette_Golem[] = INCBIN_U32("graphics/pokemon/golem/normal.gbapal.lz"); -const u32 gMonPalette_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/normal.gbapal.lz"); -const u32 gMonPalette_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/normal.gbapal.lz"); -const u32 gMonPalette_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/normal.gbapal.lz"); -const u32 gMonPalette_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/normal.gbapal.lz"); -const u32 gMonPalette_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/normal.gbapal.lz"); -const u32 gMonPalette_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/normal.gbapal.lz"); -const u32 gMonPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/normal.gbapal.lz"); -const u32 gMonPalette_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/normal.gbapal.lz"); -const u32 gMonPalette_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/normal.gbapal.lz"); -const u32 gMonPalette_Seel[] = INCBIN_U32("graphics/pokemon/seel/normal.gbapal.lz"); -const u32 gMonPalette_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/normal.gbapal.lz"); -const u32 gMonPalette_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/normal.gbapal.lz"); -const u32 gMonPalette_Muk[] = INCBIN_U32("graphics/pokemon/muk/normal.gbapal.lz"); -const u32 gMonPalette_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/normal.gbapal.lz"); -const u32 gMonPalette_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/normal.gbapal.lz"); -const u32 gMonPalette_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/normal.gbapal.lz"); -const u32 gMonPalette_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/normal.gbapal.lz"); -const u32 gMonPalette_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/normal.gbapal.lz"); -const u32 gMonPalette_Onix[] = INCBIN_U32("graphics/pokemon/onix/normal.gbapal.lz"); -const u32 gMonPalette_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/normal.gbapal.lz"); -const u32 gMonPalette_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/normal.gbapal.lz"); -const u32 gMonPalette_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/normal.gbapal.lz"); -const u32 gMonPalette_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/normal.gbapal.lz"); -const u32 gMonPalette_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/normal.gbapal.lz"); -const u32 gMonPalette_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/normal.gbapal.lz"); -const u32 gMonPalette_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/normal.gbapal.lz"); -const u32 gMonPalette_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/normal.gbapal.lz"); -const u32 gMonPalette_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/normal.gbapal.lz"); -const u32 gMonPalette_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/normal.gbapal.lz"); -const u32 gMonPalette_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/normal.gbapal.lz"); -const u32 gMonPalette_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/normal.gbapal.lz"); -const u32 gMonPalette_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/normal.gbapal.lz"); -const u32 gMonPalette_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/normal.gbapal.lz"); -const u32 gMonPalette_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/normal.gbapal.lz"); -const u32 gMonPalette_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/normal.gbapal.lz"); -const u32 gMonPalette_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/normal.gbapal.lz"); -const u32 gMonPalette_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/normal.gbapal.lz"); -const u32 gMonPalette_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/normal.gbapal.lz"); -const u32 gMonPalette_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/normal.gbapal.lz"); -const u32 gMonPalette_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/normal.gbapal.lz"); -const u32 gMonPalette_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/normal.gbapal.lz"); -const u32 gMonPalette_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/normal.gbapal.lz"); -const u32 gMonPalette_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/normal.gbapal.lz"); -const u32 gMonPalette_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/normal.gbapal.lz"); -const u32 gMonPalette_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/normal.gbapal.lz"); -const u32 gMonPalette_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/normal.gbapal.lz"); -const u32 gMonPalette_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/normal.gbapal.lz"); -const u32 gMonPalette_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/normal.gbapal.lz"); -const u32 gMonPalette_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/normal.gbapal.lz"); -const u32 gMonPalette_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/normal.gbapal.lz"); -const u32 gMonPalette_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/normal.gbapal.lz"); -const u32 gMonPalette_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/normal.gbapal.lz"); -const u32 gMonPalette_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/normal.gbapal.lz"); -const u32 gMonPalette_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/normal.gbapal.lz"); -const u32 gMonPalette_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/normal.gbapal.lz"); -const u32 gMonPalette_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/normal.gbapal.lz"); -const u32 gMonPalette_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/normal.gbapal.lz"); -const u32 gMonPalette_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/normal.gbapal.lz"); -const u32 gMonPalette_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/normal.gbapal.lz"); -const u32 gMonPalette_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/normal.gbapal.lz"); -const u32 gMonPalette_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/normal.gbapal.lz"); -const u32 gMonPalette_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/normal.gbapal.lz"); -const u32 gMonPalette_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/normal.gbapal.lz"); -const u32 gMonPalette_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/normal.gbapal.lz"); -const u32 gMonPalette_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/normal.gbapal.lz"); -const u32 gMonPalette_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/normal.gbapal.lz"); -const u32 gMonPalette_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/normal.gbapal.lz"); -const u32 gMonPalette_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/normal.gbapal.lz"); -const u32 gMonPalette_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/normal.gbapal.lz"); -const u32 gMonPalette_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/normal.gbapal.lz"); -const u32 gMonPalette_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/normal.gbapal.lz"); -const u32 gMonPalette_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/normal.gbapal.lz"); -const u32 gMonPalette_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/normal.gbapal.lz"); -const u32 gMonPalette_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/normal.gbapal.lz"); -const u32 gMonPalette_Mew[] = INCBIN_U32("graphics/pokemon/mew/normal.gbapal.lz"); -const u32 gMonPalette_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/normal.gbapal.lz"); -const u32 gMonPalette_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/normal.gbapal.lz"); -const u32 gMonPalette_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/normal.gbapal.lz"); -const u32 gMonPalette_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/normal.gbapal.lz"); -const u32 gMonPalette_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/normal.gbapal.lz"); -const u32 gMonPalette_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/normal.gbapal.lz"); -const u32 gMonPalette_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/normal.gbapal.lz"); -const u32 gMonPalette_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/normal.gbapal.lz"); -const u32 gMonPalette_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/normal.gbapal.lz"); -const u32 gMonPalette_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/normal.gbapal.lz"); -const u32 gMonPalette_Furret[] = INCBIN_U32("graphics/pokemon/furret/normal.gbapal.lz"); -const u32 gMonPalette_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/normal.gbapal.lz"); -const u32 gMonPalette_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/normal.gbapal.lz"); -const u32 gMonPalette_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/normal.gbapal.lz"); -const u32 gMonPalette_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/normal.gbapal.lz"); -const u32 gMonPalette_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/normal.gbapal.lz"); -const u32 gMonPalette_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/normal.gbapal.lz"); -const u32 gMonPalette_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/normal.gbapal.lz"); -const u32 gMonPalette_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/normal.gbapal.lz"); -const u32 gMonPalette_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/normal.gbapal.lz"); -const u32 gMonPalette_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/normal.gbapal.lz"); -const u32 gMonPalette_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/normal.gbapal.lz"); -const u32 gMonPalette_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/normal.gbapal.lz"); -const u32 gMonPalette_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/normal.gbapal.lz"); -const u32 gMonPalette_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/normal.gbapal.lz"); -const u32 gMonPalette_Natu[] = INCBIN_U32("graphics/pokemon/natu/normal.gbapal.lz"); -const u32 gMonPalette_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/normal.gbapal.lz"); -const u32 gMonPalette_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/normal.gbapal.lz"); -const u32 gMonPalette_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/normal.gbapal.lz"); -const u32 gMonPalette_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/normal.gbapal.lz"); -const u32 gMonPalette_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/normal.gbapal.lz"); -const u32 gMonPalette_Marill[] = INCBIN_U32("graphics/pokemon/marill/normal.gbapal.lz"); -const u32 gMonPalette_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/normal.gbapal.lz"); -const u32 gMonPalette_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/normal.gbapal.lz"); -const u32 gMonPalette_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/normal.gbapal.lz"); -const u32 gMonPalette_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/normal.gbapal.lz"); -const u32 gMonPalette_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/normal.gbapal.lz"); -const u32 gMonPalette_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/normal.gbapal.lz"); -const u32 gMonPalette_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/normal.gbapal.lz"); -const u32 gMonPalette_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/normal.gbapal.lz"); -const u32 gMonPalette_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/normal.gbapal.lz"); -const u32 gMonPalette_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/normal.gbapal.lz"); -const u32 gMonPalette_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/normal.gbapal.lz"); -const u32 gMonPalette_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/normal.gbapal.lz"); -const u32 gMonPalette_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/normal.gbapal.lz"); -const u32 gMonPalette_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/normal.gbapal.lz"); -const u32 gMonPalette_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/normal.gbapal.lz"); -const u32 gMonPalette_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/normal.gbapal.lz"); -const u32 gMonPalette_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/normal.gbapal.lz"); -const u32 gMonPalette_Unown[] = INCBIN_U32("graphics/pokemon/unown/normal.gbapal.lz"); -const u32 gMonPalette_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/normal.gbapal.lz"); -const u32 gMonPalette_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/normal.gbapal.lz"); -const u32 gMonPalette_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/normal.gbapal.lz"); -const u32 gMonPalette_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/normal.gbapal.lz"); -const u32 gMonPalette_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/normal.gbapal.lz"); -const u32 gMonPalette_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/normal.gbapal.lz"); -const u32 gMonPalette_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/normal.gbapal.lz"); -const u32 gMonPalette_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/normal.gbapal.lz"); -const u32 gMonPalette_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/normal.gbapal.lz"); -const u32 gMonPalette_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/normal.gbapal.lz"); -const u32 gMonPalette_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/normal.gbapal.lz"); -const u32 gMonPalette_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/normal.gbapal.lz"); -const u32 gMonPalette_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/normal.gbapal.lz"); -const u32 gMonPalette_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/normal.gbapal.lz"); -const u32 gMonPalette_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/normal.gbapal.lz"); -const u32 gMonPalette_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/normal.gbapal.lz"); -const u32 gMonPalette_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/normal.gbapal.lz"); -const u32 gMonPalette_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/normal.gbapal.lz"); -const u32 gMonPalette_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/normal.gbapal.lz"); -const u32 gMonPalette_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/normal.gbapal.lz"); -const u32 gMonPalette_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/normal.gbapal.lz"); -const u32 gMonPalette_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/normal.gbapal.lz"); -const u32 gMonPalette_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/normal.gbapal.lz"); -const u32 gMonPalette_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/normal.gbapal.lz"); -const u32 gMonPalette_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/normal.gbapal.lz"); -const u32 gMonPalette_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/normal.gbapal.lz"); -const u32 gMonPalette_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/normal.gbapal.lz"); -const u32 gMonPalette_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/normal.gbapal.lz"); -const u32 gMonPalette_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/normal.gbapal.lz"); -const u32 gMonPalette_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/normal.gbapal.lz"); -const u32 gMonPalette_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/normal.gbapal.lz"); -const u32 gMonPalette_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/normal.gbapal.lz"); -const u32 gMonPalette_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/normal.gbapal.lz"); -const u32 gMonPalette_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/normal.gbapal.lz"); -const u32 gMonPalette_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/normal.gbapal.lz"); -const u32 gMonPalette_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/normal.gbapal.lz"); -const u32 gMonPalette_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/normal.gbapal.lz"); -const u32 gMonPalette_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/normal.gbapal.lz"); -const u32 gMonPalette_Magby[] = INCBIN_U32("graphics/pokemon/magby/normal.gbapal.lz"); -const u32 gMonPalette_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/normal.gbapal.lz"); -const u32 gMonPalette_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/normal.gbapal.lz"); -const u32 gMonPalette_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/normal.gbapal.lz"); -const u32 gMonPalette_Entei[] = INCBIN_U32("graphics/pokemon/entei/normal.gbapal.lz"); -const u32 gMonPalette_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/normal.gbapal.lz"); -const u32 gMonPalette_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/normal.gbapal.lz"); -const u32 gMonPalette_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/normal.gbapal.lz"); -const u32 gMonPalette_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/normal.gbapal.lz"); -const u32 gMonPalette_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/normal.gbapal.lz"); -const u32 gMonPalette_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/normal.gbapal.lz"); -const u32 gMonPalette_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/normal.gbapal.lz"); -const u32 gMonPalette_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/normal.gbapal.lz"); -const u32 gMonPalette_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/normal.gbapal.lz"); -const u32 gMonPalette_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/normal.gbapal.lz"); -const u32 gMonPalette_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/normal.gbapal.lz"); -const u32 gMonPalette_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/normal.gbapal.lz"); -const u32 gMonPalette_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/normal.gbapal.lz"); -const u32 gMonPalette_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/normal.gbapal.lz"); -const u32 gMonPalette_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/normal.gbapal.lz"); -const u32 gMonPalette_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/normal.gbapal.lz"); -const u32 gMonPalette_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/normal.gbapal.lz"); -const u32 gMonPalette_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/normal.gbapal.lz"); -const u32 gMonPalette_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/normal.gbapal.lz"); -const u32 gMonPalette_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/normal.gbapal.lz"); -const u32 gMonPalette_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/normal.gbapal.lz"); -const u32 gMonPalette_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/normal.gbapal.lz"); -const u32 gMonPalette_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/normal.gbapal.lz"); -const u32 gMonPalette_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/normal.gbapal.lz"); -const u32 gMonPalette_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/normal.gbapal.lz"); -const u32 gMonPalette_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/normal.gbapal.lz"); -const u32 gMonPalette_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/normal.gbapal.lz"); -const u32 gMonPalette_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/normal.gbapal.lz"); -const u32 gMonPalette_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/normal.gbapal.lz"); -const u32 gMonPalette_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/normal.gbapal.lz"); -const u32 gMonPalette_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/normal.gbapal.lz"); -const u32 gMonPalette_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/normal.gbapal.lz"); -const u32 gMonPalette_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/normal.gbapal.lz"); -const u32 gMonPalette_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/normal.gbapal.lz"); -const u32 gMonPalette_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/normal.gbapal.lz"); -const u32 gMonPalette_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/normal.gbapal.lz"); -const u32 gMonPalette_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/normal.gbapal.lz"); -const u32 gMonPalette_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/normal.gbapal.lz"); -const u32 gMonPalette_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/normal.gbapal.lz"); -const u32 gMonPalette_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/normal.gbapal.lz"); -const u32 gMonPalette_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/normal.gbapal.lz"); -const u32 gMonPalette_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/normal.gbapal.lz"); -const u32 gMonPalette_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/normal.gbapal.lz"); -const u32 gMonPalette_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/normal.gbapal.lz"); -const u32 gMonPalette_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/normal.gbapal.lz"); -const u32 gMonPalette_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/normal.gbapal.lz"); -const u32 gMonPalette_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/normal.gbapal.lz"); -const u32 gMonPalette_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/normal.gbapal.lz"); -const u32 gMonPalette_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/normal.gbapal.lz"); -const u32 gMonPalette_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/normal.gbapal.lz"); -const u32 gMonPalette_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/normal.gbapal.lz"); -const u32 gMonPalette_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/normal.gbapal.lz"); -const u32 gMonPalette_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/normal.gbapal.lz"); -const u32 gMonPalette_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/normal.gbapal.lz"); -const u32 gMonPalette_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/normal.gbapal.lz"); -const u32 gMonPalette_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/normal.gbapal.lz"); -const u32 gMonPalette_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/normal.gbapal.lz"); -const u32 gMonPalette_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/normal.gbapal.lz"); -const u32 gMonPalette_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/normal.gbapal.lz"); -const u32 gMonPalette_Aron[] = INCBIN_U32("graphics/pokemon/aron/normal.gbapal.lz"); -const u32 gMonPalette_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/normal.gbapal.lz"); -const u32 gMonPalette_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/normal.gbapal.lz"); -const u32 gMonPalette_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/normal.gbapal.lz"); -const u32 gMonPalette_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/normal.gbapal.lz"); -const u32 gMonPalette_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/normal.gbapal.lz"); -const u32 gMonPalette_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/normal.gbapal.lz"); -const u32 gMonPalette_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/normal.gbapal.lz"); -const u32 gMonPalette_Minun[] = INCBIN_U32("graphics/pokemon/minun/normal.gbapal.lz"); -const u32 gMonPalette_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/normal.gbapal.lz"); -const u32 gMonPalette_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/normal.gbapal.lz"); -const u32 gMonPalette_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/normal.gbapal.lz"); -const u32 gMonPalette_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/normal.gbapal.lz"); -const u32 gMonPalette_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/normal.gbapal.lz"); -const u32 gMonPalette_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/normal.gbapal.lz"); -const u32 gMonPalette_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/normal.gbapal.lz"); -const u32 gMonPalette_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/normal.gbapal.lz"); -const u32 gMonPalette_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/normal.gbapal.lz"); -const u32 gMonPalette_Numel[] = INCBIN_U32("graphics/pokemon/numel/normal.gbapal.lz"); -const u32 gMonPalette_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/normal.gbapal.lz"); -const u32 gMonPalette_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/normal.gbapal.lz"); -const u32 gMonPalette_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/normal.gbapal.lz"); -const u32 gMonPalette_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/normal.gbapal.lz"); -const u32 gMonPalette_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/normal.gbapal.lz"); -const u32 gMonPalette_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/normal.gbapal.lz"); -const u32 gMonPalette_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/normal.gbapal.lz"); -const u32 gMonPalette_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/normal.gbapal.lz"); -const u32 gMonPalette_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/normal.gbapal.lz"); -const u32 gMonPalette_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/normal.gbapal.lz"); -const u32 gMonPalette_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/normal.gbapal.lz"); -const u32 gMonPalette_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/normal.gbapal.lz"); -const u32 gMonPalette_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/normal.gbapal.lz"); -const u32 gMonPalette_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/normal.gbapal.lz"); -const u32 gMonPalette_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/normal.gbapal.lz"); -const u32 gMonPalette_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/normal.gbapal.lz"); -const u32 gMonPalette_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/normal.gbapal.lz"); -const u32 gMonPalette_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/normal.gbapal.lz"); -const u32 gMonPalette_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/normal.gbapal.lz"); -const u32 gMonPalette_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/normal.gbapal.lz"); -const u32 gMonPalette_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/normal.gbapal.lz"); -const u32 gMonPalette_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/normal.gbapal.lz"); -const u32 gMonPalette_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/normal.gbapal.lz"); -const u32 gMonPalette_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/normal.gbapal.lz"); -const u32 gMonPalette_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/normal.gbapal.lz"); -const u32 gMonPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/normal.gbapal.lz"); -const u32 gMonPalette_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/normal.gbapal.lz"); -const u32 gMonPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/normal.gbapal.lz"); -const u32 gMonPalette_Castform[] = INCBIN_U32("graphics/pokemon/castform/normal.gbapal.lz"); -const u32 gMonPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/normal.gbapal.lz"); -const u32 gMonPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/normal.gbapal.lz"); -const u32 gMonPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/normal.gbapal.lz"); -const u32 gMonPalette_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/normal.gbapal.lz"); -const u32 gMonPalette_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/normal.gbapal.lz"); -const u32 gMonPalette_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/normal.gbapal.lz"); -const u32 gMonPalette_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/normal.gbapal.lz"); -const u32 gMonPalette_Absol[] = INCBIN_U32("graphics/pokemon/absol/normal.gbapal.lz"); -const u32 gMonPalette_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/normal.gbapal.lz"); -const u32 gMonPalette_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/normal.gbapal.lz"); -const u32 gMonPalette_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/normal.gbapal.lz"); -const u32 gMonPalette_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/normal.gbapal.lz"); -const u32 gMonPalette_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/normal.gbapal.lz"); -const u32 gMonPalette_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/normal.gbapal.lz"); -const u32 gMonPalette_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/normal.gbapal.lz"); -const u32 gMonPalette_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/normal.gbapal.lz"); -const u32 gMonPalette_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/normal.gbapal.lz"); -const u32 gMonPalette_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/normal.gbapal.lz"); -const u32 gMonPalette_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/normal.gbapal.lz"); -const u32 gMonPalette_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/normal.gbapal.lz"); -const u32 gMonPalette_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/normal.gbapal.lz"); -const u32 gMonPalette_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/normal.gbapal.lz"); -const u32 gMonPalette_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/normal.gbapal.lz"); -const u32 gMonPalette_Metang[] = INCBIN_U32("graphics/pokemon/metang/normal.gbapal.lz"); -const u32 gMonPalette_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/normal.gbapal.lz"); -const u32 gMonPalette_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/normal.gbapal.lz"); -const u32 gMonPalette_Regice[] = INCBIN_U32("graphics/pokemon/regice/normal.gbapal.lz"); -const u32 gMonPalette_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/normal.gbapal.lz"); -const u32 gMonPalette_Latias[] = INCBIN_U32("graphics/pokemon/latias/normal.gbapal.lz"); -const u32 gMonPalette_Latios[] = INCBIN_U32("graphics/pokemon/latios/normal.gbapal.lz"); -const u32 gMonPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/normal.gbapal.lz"); -const u32 gMonPalette_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/normal.gbapal.lz"); -const u32 gMonPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/normal.gbapal.lz"); -const u32 gMonPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/normal.gbapal.lz"); -const u32 gMonPalette_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/normal.gbapal.lz"); -#if P_GEN_4_POKEMON == TRUE -const u32 gMonPalette_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/normal.gbapal.lz"); -const u32 gMonPalette_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/normal.gbapal.lz"); -const u32 gMonPalette_Torterra[] = INCBIN_U32("graphics/pokemon/torterra/normal.gbapal.lz"); -const u32 gMonPalette_Chimchar[] = INCBIN_U32("graphics/pokemon/chimchar/normal.gbapal.lz"); -const u32 gMonPalette_Monferno[] = INCBIN_U32("graphics/pokemon/monferno/normal.gbapal.lz"); -const u32 gMonPalette_Infernape[] = INCBIN_U32("graphics/pokemon/infernape/normal.gbapal.lz"); -const u32 gMonPalette_Piplup[] = INCBIN_U32("graphics/pokemon/piplup/normal.gbapal.lz"); -const u32 gMonPalette_Prinplup[] = INCBIN_U32("graphics/pokemon/prinplup/normal.gbapal.lz"); -const u32 gMonPalette_Empoleon[] = INCBIN_U32("graphics/pokemon/empoleon/normal.gbapal.lz"); -const u32 gMonPalette_Starly[] = INCBIN_U32("graphics/pokemon/starly/normal.gbapal.lz"); -const u32 gMonPalette_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/normal.gbapal.lz"); -const u32 gMonPalette_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/normal.gbapal.lz"); -const u32 gMonPalette_Bidoof[] = INCBIN_U32("graphics/pokemon/bidoof/normal.gbapal.lz"); -const u32 gMonPalette_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/normal.gbapal.lz"); -const u32 gMonPalette_Kricketot[] = INCBIN_U32("graphics/pokemon/kricketot/normal.gbapal.lz"); -const u32 gMonPalette_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/normal.gbapal.lz"); -const u32 gMonPalette_Shinx[] = INCBIN_U32("graphics/pokemon/shinx/normal.gbapal.lz"); -const u32 gMonPalette_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/normal.gbapal.lz"); -const u32 gMonPalette_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/normal.gbapal.lz"); -const u32 gMonPalette_Budew[] = INCBIN_U32("graphics/pokemon/budew/normal.gbapal.lz"); -const u32 gMonPalette_Roserade[] = INCBIN_U32("graphics/pokemon/roserade/normal.gbapal.lz"); -const u32 gMonPalette_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/normal.gbapal.lz"); -const u32 gMonPalette_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/normal.gbapal.lz"); -const u32 gMonPalette_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/normal.gbapal.lz"); -const u32 gMonPalette_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/normal.gbapal.lz"); -const u32 gMonPalette_Burmy[] = INCBIN_U32("graphics/pokemon/burmy/normal.gbapal.lz"); -const u32 gMonPalette_Wormadam[] = INCBIN_U32("graphics/pokemon/wormadam/normal.gbapal.lz"); -const u32 gMonPalette_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/normal.gbapal.lz"); -const u32 gMonPalette_Combee[] = INCBIN_U32("graphics/pokemon/combee/normal.gbapal.lz"); -const u32 gMonPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/normalf.gbapal.lz"); -const u32 gMonPalette_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/normal.gbapal.lz"); -const u32 gMonPalette_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/normal.gbapal.lz"); -const u32 gMonPalette_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/normal.gbapal.lz"); -const u32 gMonPalette_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/normal.gbapal.lz"); -const u32 gMonPalette_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/normal.gbapal.lz"); -const u32 gMonPalette_Cherrim[] = INCBIN_U32("graphics/pokemon/cherrim/normal/normal.gbapal.lz"); -const u32 gMonPalette_Shellos[] = INCBIN_U32("graphics/pokemon/shellos/normal.gbapal.lz"); -const u32 gMonPalette_Gastrodon[] = INCBIN_U32("graphics/pokemon/gastrodon/normal.gbapal.lz"); -const u32 gMonPalette_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/normal.gbapal.lz"); -const u32 gMonPalette_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/normal.gbapal.lz"); -const u32 gMonPalette_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/normal.gbapal.lz"); -const u32 gMonPalette_Buneary[] = INCBIN_U32("graphics/pokemon/buneary/normal.gbapal.lz"); -const u32 gMonPalette_Lopunny[] = INCBIN_U32("graphics/pokemon/lopunny/normal.gbapal.lz"); -const u32 gMonPalette_Mismagius[] = INCBIN_U32("graphics/pokemon/mismagius/normal.gbapal.lz"); -const u32 gMonPalette_Honchkrow[] = INCBIN_U32("graphics/pokemon/honchkrow/normal.gbapal.lz"); -const u32 gMonPalette_Glameow[] = INCBIN_U32("graphics/pokemon/glameow/normal.gbapal.lz"); -const u32 gMonPalette_Purugly[] = INCBIN_U32("graphics/pokemon/purugly/normal.gbapal.lz"); -const u32 gMonPalette_Chingling[] = INCBIN_U32("graphics/pokemon/chingling/normal.gbapal.lz"); -const u32 gMonPalette_Stunky[] = INCBIN_U32("graphics/pokemon/stunky/normal.gbapal.lz"); -const u32 gMonPalette_Skuntank[] = INCBIN_U32("graphics/pokemon/skuntank/normal.gbapal.lz"); -const u32 gMonPalette_Bronzor[] = INCBIN_U32("graphics/pokemon/bronzor/normal.gbapal.lz"); -const u32 gMonPalette_Bronzong[] = INCBIN_U32("graphics/pokemon/bronzong/normal.gbapal.lz"); -const u32 gMonPalette_Bonsly[] = INCBIN_U32("graphics/pokemon/bonsly/normal.gbapal.lz"); -const u32 gMonPalette_MimeJr[] = INCBIN_U32("graphics/pokemon/mime_jr/normal.gbapal.lz"); -const u32 gMonPalette_Happiny[] = INCBIN_U32("graphics/pokemon/happiny/normal.gbapal.lz"); -const u32 gMonPalette_Chatot[] = INCBIN_U32("graphics/pokemon/chatot/normal.gbapal.lz"); -const u32 gMonPalette_Spiritomb[] = INCBIN_U32("graphics/pokemon/spiritomb/normal.gbapal.lz"); -const u32 gMonPalette_Gible[] = INCBIN_U32("graphics/pokemon/gible/normal.gbapal.lz"); -const u32 gMonPalette_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/normal.gbapal.lz"); -const u32 gMonPalette_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/normal.gbapal.lz"); -const u32 gMonPalette_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/normal.gbapal.lz"); -const u32 gMonPalette_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/normal.gbapal.lz"); -const u32 gMonPalette_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/normal.gbapal.lz"); -const u32 gMonPalette_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/normal.gbapal.lz"); -const u32 gMonPalette_HippopotasF[] = INCBIN_U32("graphics/pokemon/hippopotas/normalf.gbapal.lz"); -const u32 gMonPalette_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/normal.gbapal.lz"); -const u32 gMonPalette_HippowdonF[] = INCBIN_U32("graphics/pokemon/hippowdon/normalf.gbapal.lz"); -const u32 gMonPalette_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/normal.gbapal.lz"); -const u32 gMonPalette_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/normal.gbapal.lz"); -const u32 gMonPalette_Croagunk[] = INCBIN_U32("graphics/pokemon/croagunk/normal.gbapal.lz"); -const u32 gMonPalette_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/normal.gbapal.lz"); -const u32 gMonPalette_Carnivine[] = INCBIN_U32("graphics/pokemon/carnivine/normal.gbapal.lz"); -const u32 gMonPalette_Finneon[] = INCBIN_U32("graphics/pokemon/finneon/normal.gbapal.lz"); -const u32 gMonPalette_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/normal.gbapal.lz"); -const u32 gMonPalette_Mantyke[] = INCBIN_U32("graphics/pokemon/mantyke/normal.gbapal.lz"); -const u32 gMonPalette_Snover[] = INCBIN_U32("graphics/pokemon/snover/normal.gbapal.lz"); -const u32 gMonPalette_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/normal.gbapal.lz"); -const u32 gMonPalette_Weavile[] = INCBIN_U32("graphics/pokemon/weavile/normal.gbapal.lz"); -const u32 gMonPalette_Magnezone[] = INCBIN_U32("graphics/pokemon/magnezone/normal.gbapal.lz"); -const u32 gMonPalette_Lickilicky[] = INCBIN_U32("graphics/pokemon/lickilicky/normal.gbapal.lz"); -const u32 gMonPalette_Rhyperior[] = INCBIN_U32("graphics/pokemon/rhyperior/normal.gbapal.lz"); -const u32 gMonPalette_Tangrowth[] = INCBIN_U32("graphics/pokemon/tangrowth/normal.gbapal.lz"); -const u32 gMonPalette_Electivire[] = INCBIN_U32("graphics/pokemon/electivire/normal.gbapal.lz"); -const u32 gMonPalette_Magmortar[] = INCBIN_U32("graphics/pokemon/magmortar/normal.gbapal.lz"); -const u32 gMonPalette_Togekiss[] = INCBIN_U32("graphics/pokemon/togekiss/normal.gbapal.lz"); -const u32 gMonPalette_Yanmega[] = INCBIN_U32("graphics/pokemon/yanmega/normal.gbapal.lz"); -const u32 gMonPalette_Leafeon[] = INCBIN_U32("graphics/pokemon/leafeon/normal.gbapal.lz"); -const u32 gMonPalette_Glaceon[] = INCBIN_U32("graphics/pokemon/glaceon/normal.gbapal.lz"); -const u32 gMonPalette_Gliscor[] = INCBIN_U32("graphics/pokemon/gliscor/normal.gbapal.lz"); -const u32 gMonPalette_Mamoswine[] = INCBIN_U32("graphics/pokemon/mamoswine/normal.gbapal.lz"); -const u32 gMonPalette_PorygonZ[] = INCBIN_U32("graphics/pokemon/porygon_z/normal.gbapal.lz"); -const u32 gMonPalette_Gallade[] = INCBIN_U32("graphics/pokemon/gallade/normal.gbapal.lz"); -const u32 gMonPalette_Probopass[] = INCBIN_U32("graphics/pokemon/probopass/normal.gbapal.lz"); -const u32 gMonPalette_Dusknoir[] = INCBIN_U32("graphics/pokemon/dusknoir/normal.gbapal.lz"); -const u32 gMonPalette_Froslass[] = INCBIN_U32("graphics/pokemon/froslass/normal.gbapal.lz"); -const u32 gMonPalette_Rotom[] = INCBIN_U32("graphics/pokemon/rotom/normal.gbapal.lz"); -const u32 gMonPalette_Uxie[] = INCBIN_U32("graphics/pokemon/uxie/normal.gbapal.lz"); -const u32 gMonPalette_Mesprit[] = INCBIN_U32("graphics/pokemon/mesprit/normal.gbapal.lz"); -const u32 gMonPalette_Azelf[] = INCBIN_U32("graphics/pokemon/azelf/normal.gbapal.lz"); -const u32 gMonPalette_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/normal.gbapal.lz"); -const u32 gMonPalette_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/normal.gbapal.lz"); -const u32 gMonPalette_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/normal.gbapal.lz"); -const u32 gMonPalette_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/normal.gbapal.lz"); -const u32 gMonPalette_Giratina[] = INCBIN_U32("graphics/pokemon/giratina/normal.gbapal.lz"); -const u32 gMonPalette_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/normal.gbapal.lz"); -const u32 gMonPalette_Phione[] = INCBIN_U32("graphics/pokemon/phione/normal.gbapal.lz"); -const u32 gMonPalette_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/normal.gbapal.lz"); -const u32 gMonPalette_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/normal.gbapal.lz"); -const u32 gMonPalette_Shaymin[] = INCBIN_U32("graphics/pokemon/shaymin/normal.gbapal.lz"); -const u32 gMonPalette_Arceus[] = INCBIN_U32("graphics/pokemon/arceus/normal.gbapal.lz"); -#endif -#if P_GEN_5_POKEMON == TRUE -const u32 gMonPalette_Victini[] = INCBIN_U32("graphics/pokemon/victini/normal.gbapal.lz"); -const u32 gMonPalette_Snivy[] = INCBIN_U32("graphics/pokemon/snivy/normal.gbapal.lz"); -const u32 gMonPalette_Servine[] = INCBIN_U32("graphics/pokemon/servine/normal.gbapal.lz"); -const u32 gMonPalette_Serperior[] = INCBIN_U32("graphics/pokemon/serperior/normal.gbapal.lz"); -const u32 gMonPalette_Tepig[] = INCBIN_U32("graphics/pokemon/tepig/normal.gbapal.lz"); -const u32 gMonPalette_Pignite[] = INCBIN_U32("graphics/pokemon/pignite/normal.gbapal.lz"); -const u32 gMonPalette_Emboar[] = INCBIN_U32("graphics/pokemon/emboar/normal.gbapal.lz"); -const u32 gMonPalette_Oshawott[] = INCBIN_U32("graphics/pokemon/oshawott/normal.gbapal.lz"); -const u32 gMonPalette_Dewott[] = INCBIN_U32("graphics/pokemon/dewott/normal.gbapal.lz"); -const u32 gMonPalette_Samurott[] = INCBIN_U32("graphics/pokemon/samurott/normal.gbapal.lz"); -const u32 gMonPalette_Patrat[] = INCBIN_U32("graphics/pokemon/patrat/normal.gbapal.lz"); -const u32 gMonPalette_Watchog[] = INCBIN_U32("graphics/pokemon/watchog/normal.gbapal.lz"); -const u32 gMonPalette_Lillipup[] = INCBIN_U32("graphics/pokemon/lillipup/normal.gbapal.lz"); -const u32 gMonPalette_Herdier[] = INCBIN_U32("graphics/pokemon/herdier/normal.gbapal.lz"); -const u32 gMonPalette_Stoutland[] = INCBIN_U32("graphics/pokemon/stoutland/normal.gbapal.lz"); -const u32 gMonPalette_Purrloin[] = INCBIN_U32("graphics/pokemon/purrloin/normal.gbapal.lz"); -const u32 gMonPalette_Liepard[] = INCBIN_U32("graphics/pokemon/liepard/normal.gbapal.lz"); -const u32 gMonPalette_Pansage[] = INCBIN_U32("graphics/pokemon/pansage/normal.gbapal.lz"); -const u32 gMonPalette_Simisage[] = INCBIN_U32("graphics/pokemon/simisage/normal.gbapal.lz"); -const u32 gMonPalette_Pansear[] = INCBIN_U32("graphics/pokemon/pansear/normal.gbapal.lz"); -const u32 gMonPalette_Simisear[] = INCBIN_U32("graphics/pokemon/simisear/normal.gbapal.lz"); -const u32 gMonPalette_Panpour[] = INCBIN_U32("graphics/pokemon/panpour/normal.gbapal.lz"); -const u32 gMonPalette_Simipour[] = INCBIN_U32("graphics/pokemon/simipour/normal.gbapal.lz"); -const u32 gMonPalette_Munna[] = INCBIN_U32("graphics/pokemon/munna/normal.gbapal.lz"); -const u32 gMonPalette_Musharna[] = INCBIN_U32("graphics/pokemon/musharna/normal.gbapal.lz"); -const u32 gMonPalette_Pidove[] = INCBIN_U32("graphics/pokemon/pidove/normal.gbapal.lz"); -const u32 gMonPalette_Tranquill[] = INCBIN_U32("graphics/pokemon/tranquill/normal.gbapal.lz"); -const u32 gMonPalette_Unfezant[] = INCBIN_U32("graphics/pokemon/unfezant/normal.gbapal.lz"); -const u32 gMonPalette_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant/normalf.gbapal.lz"); -const u32 gMonPalette_Blitzle[] = INCBIN_U32("graphics/pokemon/blitzle/normal.gbapal.lz"); -const u32 gMonPalette_Zebstrika[] = INCBIN_U32("graphics/pokemon/zebstrika/normal.gbapal.lz"); -const u32 gMonPalette_Roggenrola[] = INCBIN_U32("graphics/pokemon/roggenrola/normal.gbapal.lz"); -const u32 gMonPalette_Boldore[] = INCBIN_U32("graphics/pokemon/boldore/normal.gbapal.lz"); -const u32 gMonPalette_Gigalith[] = INCBIN_U32("graphics/pokemon/gigalith/normal.gbapal.lz"); -const u32 gMonPalette_Woobat[] = INCBIN_U32("graphics/pokemon/woobat/normal.gbapal.lz"); -const u32 gMonPalette_Swoobat[] = INCBIN_U32("graphics/pokemon/swoobat/normal.gbapal.lz"); -const u32 gMonPalette_Drilbur[] = INCBIN_U32("graphics/pokemon/drilbur/normal.gbapal.lz"); -const u32 gMonPalette_Excadrill[] = INCBIN_U32("graphics/pokemon/excadrill/normal.gbapal.lz"); -const u32 gMonPalette_Audino[] = INCBIN_U32("graphics/pokemon/audino/normal.gbapal.lz"); -const u32 gMonPalette_Timburr[] = INCBIN_U32("graphics/pokemon/timburr/normal.gbapal.lz"); -const u32 gMonPalette_Gurdurr[] = INCBIN_U32("graphics/pokemon/gurdurr/normal.gbapal.lz"); -const u32 gMonPalette_Conkeldurr[] = INCBIN_U32("graphics/pokemon/conkeldurr/normal.gbapal.lz"); -const u32 gMonPalette_Tympole[] = INCBIN_U32("graphics/pokemon/tympole/normal.gbapal.lz"); -const u32 gMonPalette_Palpitoad[] = INCBIN_U32("graphics/pokemon/palpitoad/normal.gbapal.lz"); -const u32 gMonPalette_Seismitoad[] = INCBIN_U32("graphics/pokemon/seismitoad/normal.gbapal.lz"); -const u32 gMonPalette_Throh[] = INCBIN_U32("graphics/pokemon/throh/normal.gbapal.lz"); -const u32 gMonPalette_Sawk[] = INCBIN_U32("graphics/pokemon/sawk/normal.gbapal.lz"); -const u32 gMonPalette_Sewaddle[] = INCBIN_U32("graphics/pokemon/sewaddle/normal.gbapal.lz"); -const u32 gMonPalette_Swadloon[] = INCBIN_U32("graphics/pokemon/swadloon/normal.gbapal.lz"); -const u32 gMonPalette_Leavanny[] = INCBIN_U32("graphics/pokemon/leavanny/normal.gbapal.lz"); -const u32 gMonPalette_Venipede[] = INCBIN_U32("graphics/pokemon/venipede/normal.gbapal.lz"); -const u32 gMonPalette_Whirlipede[] = INCBIN_U32("graphics/pokemon/whirlipede/normal.gbapal.lz"); -const u32 gMonPalette_Scolipede[] = INCBIN_U32("graphics/pokemon/scolipede/normal.gbapal.lz"); -const u32 gMonPalette_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/normal.gbapal.lz"); -const u32 gMonPalette_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/normal.gbapal.lz"); -const u32 gMonPalette_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/normal.gbapal.lz"); -const u32 gMonPalette_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/normal.gbapal.lz"); -const u32 gMonPalette_Basculin[] = INCBIN_U32("graphics/pokemon/basculin/normal.gbapal.lz"); -const u32 gMonPalette_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/normal.gbapal.lz"); -const u32 gMonPalette_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/normal.gbapal.lz"); -const u32 gMonPalette_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/normal.gbapal.lz"); -const u32 gMonPalette_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/normal.gbapal.lz"); -const u32 gMonPalette_Darmanitan[] = INCBIN_U32("graphics/pokemon/darmanitan/normal.gbapal.lz"); -const u32 gMonPalette_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/normal.gbapal.lz"); -const u32 gMonPalette_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/normal.gbapal.lz"); -const u32 gMonPalette_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/normal.gbapal.lz"); -const u32 gMonPalette_Scraggy[] = INCBIN_U32("graphics/pokemon/scraggy/normal.gbapal.lz"); -const u32 gMonPalette_Scrafty[] = INCBIN_U32("graphics/pokemon/scrafty/normal.gbapal.lz"); -const u32 gMonPalette_Sigilyph[] = INCBIN_U32("graphics/pokemon/sigilyph/normal.gbapal.lz"); -const u32 gMonPalette_Yamask[] = INCBIN_U32("graphics/pokemon/yamask/normal.gbapal.lz"); -const u32 gMonPalette_Cofagrigus[] = INCBIN_U32("graphics/pokemon/cofagrigus/normal.gbapal.lz"); -const u32 gMonPalette_Tirtouga[] = INCBIN_U32("graphics/pokemon/tirtouga/normal.gbapal.lz"); -const u32 gMonPalette_Carracosta[] = INCBIN_U32("graphics/pokemon/carracosta/normal.gbapal.lz"); -const u32 gMonPalette_Archen[] = INCBIN_U32("graphics/pokemon/archen/normal.gbapal.lz"); -const u32 gMonPalette_Archeops[] = INCBIN_U32("graphics/pokemon/archeops/normal.gbapal.lz"); -const u32 gMonPalette_Trubbish[] = INCBIN_U32("graphics/pokemon/trubbish/normal.gbapal.lz"); -const u32 gMonPalette_Garbodor[] = INCBIN_U32("graphics/pokemon/garbodor/normal.gbapal.lz"); -const u32 gMonPalette_Zorua[] = INCBIN_U32("graphics/pokemon/zorua/normal.gbapal.lz"); -const u32 gMonPalette_Zoroark[] = INCBIN_U32("graphics/pokemon/zoroark/normal.gbapal.lz"); -const u32 gMonPalette_Minccino[] = INCBIN_U32("graphics/pokemon/minccino/normal.gbapal.lz"); -const u32 gMonPalette_Cinccino[] = INCBIN_U32("graphics/pokemon/cinccino/normal.gbapal.lz"); -const u32 gMonPalette_Gothita[] = INCBIN_U32("graphics/pokemon/gothita/normal.gbapal.lz"); -const u32 gMonPalette_Gothorita[] = INCBIN_U32("graphics/pokemon/gothorita/normal.gbapal.lz"); -const u32 gMonPalette_Gothitelle[] = INCBIN_U32("graphics/pokemon/gothitelle/normal.gbapal.lz"); -const u32 gMonPalette_Solosis[] = INCBIN_U32("graphics/pokemon/solosis/normal.gbapal.lz"); -const u32 gMonPalette_Duosion[] = INCBIN_U32("graphics/pokemon/duosion/normal.gbapal.lz"); -const u32 gMonPalette_Reuniclus[] = INCBIN_U32("graphics/pokemon/reuniclus/normal.gbapal.lz"); -const u32 gMonPalette_Ducklett[] = INCBIN_U32("graphics/pokemon/ducklett/normal.gbapal.lz"); -const u32 gMonPalette_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/normal.gbapal.lz"); -const u32 gMonPalette_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/normal.gbapal.lz"); -const u32 gMonPalette_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/normal.gbapal.lz"); -const u32 gMonPalette_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/normal.gbapal.lz"); -const u32 gMonPalette_Deerling[] = INCBIN_U32("graphics/pokemon/deerling/normal.gbapal.lz"); -const u32 gMonPalette_Sawsbuck[] = INCBIN_U32("graphics/pokemon/sawsbuck/normal.gbapal.lz"); -const u32 gMonPalette_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/normal.gbapal.lz"); -const u32 gMonPalette_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/normal.gbapal.lz"); -const u32 gMonPalette_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/normal.gbapal.lz"); -const u32 gMonPalette_Foongus[] = INCBIN_U32("graphics/pokemon/foongus/normal.gbapal.lz"); -const u32 gMonPalette_Amoonguss[] = INCBIN_U32("graphics/pokemon/amoonguss/normal.gbapal.lz"); -const u32 gMonPalette_Frillish[] = INCBIN_U32("graphics/pokemon/frillish/normal.gbapal.lz"); -const u32 gMonPalette_FrillishF[] = INCBIN_U32("graphics/pokemon/frillish/normalf.gbapal.lz"); -const u32 gMonPalette_Jellicent[] = INCBIN_U32("graphics/pokemon/jellicent/normal.gbapal.lz"); -const u32 gMonPalette_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/normalf.gbapal.lz"); -const u32 gMonPalette_Alomomola[] = INCBIN_U32("graphics/pokemon/alomomola/normal.gbapal.lz"); -const u32 gMonPalette_Joltik[] = INCBIN_U32("graphics/pokemon/joltik/normal.gbapal.lz"); -const u32 gMonPalette_Galvantula[] = INCBIN_U32("graphics/pokemon/galvantula/normal.gbapal.lz"); -const u32 gMonPalette_Ferroseed[] = INCBIN_U32("graphics/pokemon/ferroseed/normal.gbapal.lz"); -const u32 gMonPalette_Ferrothorn[] = INCBIN_U32("graphics/pokemon/ferrothorn/normal.gbapal.lz"); -const u32 gMonPalette_Klink[] = INCBIN_U32("graphics/pokemon/klink/normal.gbapal.lz"); -const u32 gMonPalette_Klang[] = INCBIN_U32("graphics/pokemon/klang/normal.gbapal.lz"); -const u32 gMonPalette_Klinklang[] = INCBIN_U32("graphics/pokemon/klinklang/normal.gbapal.lz"); -const u32 gMonPalette_Tynamo[] = INCBIN_U32("graphics/pokemon/tynamo/normal.gbapal.lz"); -const u32 gMonPalette_Eelektrik[] = INCBIN_U32("graphics/pokemon/eelektrik/normal.gbapal.lz"); -const u32 gMonPalette_Eelektross[] = INCBIN_U32("graphics/pokemon/eelektross/normal.gbapal.lz"); -const u32 gMonPalette_Elgyem[] = INCBIN_U32("graphics/pokemon/elgyem/normal.gbapal.lz"); -const u32 gMonPalette_Beheeyem[] = INCBIN_U32("graphics/pokemon/beheeyem/normal.gbapal.lz"); -const u32 gMonPalette_Litwick[] = INCBIN_U32("graphics/pokemon/litwick/normal.gbapal.lz"); -const u32 gMonPalette_Lampent[] = INCBIN_U32("graphics/pokemon/lampent/normal.gbapal.lz"); -const u32 gMonPalette_Chandelure[] = INCBIN_U32("graphics/pokemon/chandelure/normal.gbapal.lz"); -const u32 gMonPalette_Axew[] = INCBIN_U32("graphics/pokemon/axew/normal.gbapal.lz"); -const u32 gMonPalette_Fraxure[] = INCBIN_U32("graphics/pokemon/fraxure/normal.gbapal.lz"); -const u32 gMonPalette_Haxorus[] = INCBIN_U32("graphics/pokemon/haxorus/normal.gbapal.lz"); -const u32 gMonPalette_Cubchoo[] = INCBIN_U32("graphics/pokemon/cubchoo/normal.gbapal.lz"); -const u32 gMonPalette_Beartic[] = INCBIN_U32("graphics/pokemon/beartic/normal.gbapal.lz"); -const u32 gMonPalette_Cryogonal[] = INCBIN_U32("graphics/pokemon/cryogonal/normal.gbapal.lz"); -const u32 gMonPalette_Shelmet[] = INCBIN_U32("graphics/pokemon/shelmet/normal.gbapal.lz"); -const u32 gMonPalette_Accelgor[] = INCBIN_U32("graphics/pokemon/accelgor/normal.gbapal.lz"); -const u32 gMonPalette_Stunfisk[] = INCBIN_U32("graphics/pokemon/stunfisk/normal.gbapal.lz"); -const u32 gMonPalette_Mienfoo[] = INCBIN_U32("graphics/pokemon/mienfoo/normal.gbapal.lz"); -const u32 gMonPalette_Mienshao[] = INCBIN_U32("graphics/pokemon/mienshao/normal.gbapal.lz"); -const u32 gMonPalette_Druddigon[] = INCBIN_U32("graphics/pokemon/druddigon/normal.gbapal.lz"); -const u32 gMonPalette_Golett[] = INCBIN_U32("graphics/pokemon/golett/normal.gbapal.lz"); -const u32 gMonPalette_Golurk[] = INCBIN_U32("graphics/pokemon/golurk/normal.gbapal.lz"); -const u32 gMonPalette_Pawniard[] = INCBIN_U32("graphics/pokemon/pawniard/normal.gbapal.lz"); -const u32 gMonPalette_Bisharp[] = INCBIN_U32("graphics/pokemon/bisharp/normal.gbapal.lz"); -const u32 gMonPalette_Bouffalant[] = INCBIN_U32("graphics/pokemon/bouffalant/normal.gbapal.lz"); -const u32 gMonPalette_Rufflet[] = INCBIN_U32("graphics/pokemon/rufflet/normal.gbapal.lz"); -const u32 gMonPalette_Braviary[] = INCBIN_U32("graphics/pokemon/braviary/normal.gbapal.lz"); -const u32 gMonPalette_Vullaby[] = INCBIN_U32("graphics/pokemon/vullaby/normal.gbapal.lz"); -const u32 gMonPalette_Mandibuzz[] = INCBIN_U32("graphics/pokemon/mandibuzz/normal.gbapal.lz"); -const u32 gMonPalette_Heatmor[] = INCBIN_U32("graphics/pokemon/heatmor/normal.gbapal.lz"); -const u32 gMonPalette_Durant[] = INCBIN_U32("graphics/pokemon/durant/normal.gbapal.lz"); -const u32 gMonPalette_Deino[] = INCBIN_U32("graphics/pokemon/deino/normal.gbapal.lz"); -const u32 gMonPalette_Zweilous[] = INCBIN_U32("graphics/pokemon/zweilous/normal.gbapal.lz"); -const u32 gMonPalette_Hydreigon[] = INCBIN_U32("graphics/pokemon/hydreigon/normal.gbapal.lz"); -const u32 gMonPalette_Larvesta[] = INCBIN_U32("graphics/pokemon/larvesta/normal.gbapal.lz"); -const u32 gMonPalette_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/normal.gbapal.lz"); -const u32 gMonPalette_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/normal.gbapal.lz"); -const u32 gMonPalette_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/normal.gbapal.lz"); -const u32 gMonPalette_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/normal.gbapal.lz"); -const u32 gMonPalette_Tornadus[] = INCBIN_U32("graphics/pokemon/tornadus/normal.gbapal.lz"); -const u32 gMonPalette_Thundurus[] = INCBIN_U32("graphics/pokemon/thundurus/normal.gbapal.lz"); -const u32 gMonPalette_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/normal.gbapal.lz"); -const u32 gMonPalette_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/normal.gbapal.lz"); -const u32 gMonPalette_Landorus[] = INCBIN_U32("graphics/pokemon/landorus/normal.gbapal.lz"); -const u32 gMonPalette_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/normal.gbapal.lz"); -const u32 gMonPalette_Keldeo[] = INCBIN_U32("graphics/pokemon/keldeo/normal.gbapal.lz"); -const u32 gMonPalette_Meloetta[] = INCBIN_U32("graphics/pokemon/meloetta/normal.gbapal.lz"); -const u32 gMonPalette_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/normal.gbapal.lz"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u32 gMonPalette_Chespin[] = INCBIN_U32("graphics/pokemon/chespin/normal.gbapal.lz"); -const u32 gMonPalette_Quilladin[] = INCBIN_U32("graphics/pokemon/quilladin/normal.gbapal.lz"); -const u32 gMonPalette_Chesnaught[] = INCBIN_U32("graphics/pokemon/chesnaught/normal.gbapal.lz"); -const u32 gMonPalette_Fennekin[] = INCBIN_U32("graphics/pokemon/fennekin/normal.gbapal.lz"); -const u32 gMonPalette_Braixen[] = INCBIN_U32("graphics/pokemon/braixen/normal.gbapal.lz"); -const u32 gMonPalette_Delphox[] = INCBIN_U32("graphics/pokemon/delphox/normal.gbapal.lz"); -const u32 gMonPalette_Froakie[] = INCBIN_U32("graphics/pokemon/froakie/normal.gbapal.lz"); -const u32 gMonPalette_Frogadier[] = INCBIN_U32("graphics/pokemon/frogadier/normal.gbapal.lz"); -const u32 gMonPalette_Greninja[] = INCBIN_U32("graphics/pokemon/greninja/normal.gbapal.lz"); -const u32 gMonPalette_Bunnelby[] = INCBIN_U32("graphics/pokemon/bunnelby/normal.gbapal.lz"); -const u32 gMonPalette_Diggersby[] = INCBIN_U32("graphics/pokemon/diggersby/normal.gbapal.lz"); -const u32 gMonPalette_Fletchling[] = INCBIN_U32("graphics/pokemon/fletchling/normal.gbapal.lz"); -const u32 gMonPalette_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/normal.gbapal.lz"); -const u32 gMonPalette_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/normal.gbapal.lz"); -const u32 gMonPalette_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/normal.gbapal.lz"); -const u32 gMonPalette_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/normal.gbapal.lz"); -const u32 gMonPalette_Vivillon[] = INCBIN_U32("graphics/pokemon/vivillon/normal.gbapal.lz"); -const u32 gMonPalette_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/normal.gbapal.lz"); -const u32 gMonPalette_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/normal.gbapal.lz"); -const u32 gMonPalette_Flabebe[] = INCBIN_U32("graphics/pokemon/flabebe/normal.gbapal.lz"); -const u32 gMonPalette_Floette[] = INCBIN_U32("graphics/pokemon/floette/normal.gbapal.lz"); -const u32 gMonPalette_Florges[] = INCBIN_U32("graphics/pokemon/florges/normal.gbapal.lz"); -const u32 gMonPalette_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/normal.gbapal.lz"); -const u32 gMonPalette_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/normal.gbapal.lz"); -const u32 gMonPalette_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/normal.gbapal.lz"); -const u32 gMonPalette_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/normal.gbapal.lz"); -const u32 gMonPalette_Furfrou[] = INCBIN_U32("graphics/pokemon/furfrou/normal.gbapal.lz"); -const u32 gMonPalette_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/normal.gbapal.lz"); -const u32 gMonPalette_Meowstic[] = INCBIN_U32("graphics/pokemon/meowstic/normal.gbapal.lz"); -const u32 gMonPalette_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/normal.gbapal.lz"); -const u32 gMonPalette_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/normal.gbapal.lz"); -const u32 gMonPalette_Aegislash[] = INCBIN_U32("graphics/pokemon/aegislash/normal.gbapal.lz"); -const u32 gMonPalette_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/normal.gbapal.lz"); -const u32 gMonPalette_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/normal.gbapal.lz"); -const u32 gMonPalette_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/normal.gbapal.lz"); -const u32 gMonPalette_Slurpuff[] = INCBIN_U32("graphics/pokemon/slurpuff/normal.gbapal.lz"); -const u32 gMonPalette_Inkay[] = INCBIN_U32("graphics/pokemon/inkay/normal.gbapal.lz"); -const u32 gMonPalette_Malamar[] = INCBIN_U32("graphics/pokemon/malamar/normal.gbapal.lz"); -const u32 gMonPalette_Binacle[] = INCBIN_U32("graphics/pokemon/binacle/normal.gbapal.lz"); -const u32 gMonPalette_Barbaracle[] = INCBIN_U32("graphics/pokemon/barbaracle/normal.gbapal.lz"); -const u32 gMonPalette_Skrelp[] = INCBIN_U32("graphics/pokemon/skrelp/normal.gbapal.lz"); -const u32 gMonPalette_Dragalge[] = INCBIN_U32("graphics/pokemon/dragalge/normal.gbapal.lz"); -const u32 gMonPalette_Clauncher[] = INCBIN_U32("graphics/pokemon/clauncher/normal.gbapal.lz"); -const u32 gMonPalette_Clawitzer[] = INCBIN_U32("graphics/pokemon/clawitzer/normal.gbapal.lz"); -const u32 gMonPalette_Helioptile[] = INCBIN_U32("graphics/pokemon/helioptile/normal.gbapal.lz"); -const u32 gMonPalette_Heliolisk[] = INCBIN_U32("graphics/pokemon/heliolisk/normal.gbapal.lz"); -const u32 gMonPalette_Tyrunt[] = INCBIN_U32("graphics/pokemon/tyrunt/normal.gbapal.lz"); -const u32 gMonPalette_Tyrantrum[] = INCBIN_U32("graphics/pokemon/tyrantrum/normal.gbapal.lz"); -const u32 gMonPalette_Amaura[] = INCBIN_U32("graphics/pokemon/amaura/normal.gbapal.lz"); -const u32 gMonPalette_Aurorus[] = INCBIN_U32("graphics/pokemon/aurorus/normal.gbapal.lz"); -const u32 gMonPalette_Sylveon[] = INCBIN_U32("graphics/pokemon/sylveon/normal.gbapal.lz"); -const u32 gMonPalette_Hawlucha[] = INCBIN_U32("graphics/pokemon/hawlucha/normal.gbapal.lz"); -const u32 gMonPalette_Dedenne[] = INCBIN_U32("graphics/pokemon/dedenne/normal.gbapal.lz"); -const u32 gMonPalette_Carbink[] = INCBIN_U32("graphics/pokemon/carbink/normal.gbapal.lz"); -const u32 gMonPalette_Goomy[] = INCBIN_U32("graphics/pokemon/goomy/normal.gbapal.lz"); -const u32 gMonPalette_Sliggoo[] = INCBIN_U32("graphics/pokemon/sliggoo/normal.gbapal.lz"); -const u32 gMonPalette_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/normal.gbapal.lz"); -const u32 gMonPalette_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/normal.gbapal.lz"); -const u32 gMonPalette_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/normal.gbapal.lz"); -const u32 gMonPalette_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/normal.gbapal.lz"); -const u32 gMonPalette_Pumpkaboo[] = INCBIN_U32("graphics/pokemon/pumpkaboo/normal.gbapal.lz"); -const u32 gMonPalette_Gourgeist[] = INCBIN_U32("graphics/pokemon/gourgeist/normal.gbapal.lz"); -const u32 gMonPalette_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/normal.gbapal.lz"); -const u32 gMonPalette_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/normal.gbapal.lz"); -const u32 gMonPalette_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/normal.gbapal.lz"); -const u32 gMonPalette_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/normal.gbapal.lz"); -const u32 gMonPalette_Xerneas[] = INCBIN_U32("graphics/pokemon/xerneas/normal.gbapal.lz"); -const u32 gMonPalette_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/normal.gbapal.lz"); -const u32 gMonPalette_Zygarde[] = INCBIN_U32("graphics/pokemon/zygarde/normal.gbapal.lz"); -const u32 gMonPalette_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/normal.gbapal.lz"); -const u32 gMonPalette_Hoopa[] = INCBIN_U32("graphics/pokemon/hoopa/normal.gbapal.lz"); -const u32 gMonPalette_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/normal.gbapal.lz"); -#endif -#if P_GEN_7_POKEMON == TRUE -const u32 gMonPalette_Rowlet[] = INCBIN_U32("graphics/pokemon/rowlet/normal.gbapal.lz"); -const u32 gMonPalette_Dartrix[] = INCBIN_U32("graphics/pokemon/dartrix/normal.gbapal.lz"); -const u32 gMonPalette_Decidueye[] = INCBIN_U32("graphics/pokemon/decidueye/normal.gbapal.lz"); -const u32 gMonPalette_Litten[] = INCBIN_U32("graphics/pokemon/litten/normal.gbapal.lz"); -const u32 gMonPalette_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/normal.gbapal.lz"); -const u32 gMonPalette_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/normal.gbapal.lz"); -const u32 gMonPalette_Popplio[] = INCBIN_U32("graphics/pokemon/popplio/normal.gbapal.lz"); -const u32 gMonPalette_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/normal.gbapal.lz"); -const u32 gMonPalette_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/normal.gbapal.lz"); -const u32 gMonPalette_Pikipek[] = INCBIN_U32("graphics/pokemon/pikipek/normal.gbapal.lz"); -const u32 gMonPalette_Trumbeak[] = INCBIN_U32("graphics/pokemon/trumbeak/normal.gbapal.lz"); -const u32 gMonPalette_Toucannon[] = INCBIN_U32("graphics/pokemon/toucannon/normal.gbapal.lz"); -const u32 gMonPalette_Yungoos[] = INCBIN_U32("graphics/pokemon/yungoos/normal.gbapal.lz"); -const u32 gMonPalette_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/normal.gbapal.lz"); -const u32 gMonPalette_Grubbin[] = INCBIN_U32("graphics/pokemon/grubbin/normal.gbapal.lz"); -const u32 gMonPalette_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/normal.gbapal.lz"); -const u32 gMonPalette_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/normal.gbapal.lz"); -const u32 gMonPalette_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/normal.gbapal.lz"); -const u32 gMonPalette_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/normal.gbapal.lz"); -const u32 gMonPalette_Oricorio[] = INCBIN_U32("graphics/pokemon/oricorio/normal.gbapal.lz"); -const u32 gMonPalette_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/normal.gbapal.lz"); -const u32 gMonPalette_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/normal.gbapal.lz"); -const u32 gMonPalette_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/normal.gbapal.lz"); -const u32 gMonPalette_Lycanroc[] = INCBIN_U32("graphics/pokemon/lycanroc/normal.gbapal.lz"); -const u32 gMonPalette_Wishiwashi[] = INCBIN_U32("graphics/pokemon/wishiwashi/normal.gbapal.lz"); -const u32 gMonPalette_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/normal.gbapal.lz"); -const u32 gMonPalette_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/normal.gbapal.lz"); -const u32 gMonPalette_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/normal.gbapal.lz"); -const u32 gMonPalette_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/normal.gbapal.lz"); -const u32 gMonPalette_Dewpider[] = INCBIN_U32("graphics/pokemon/dewpider/normal.gbapal.lz"); -const u32 gMonPalette_Araquanid[] = INCBIN_U32("graphics/pokemon/araquanid/normal.gbapal.lz"); -const u32 gMonPalette_Fomantis[] = INCBIN_U32("graphics/pokemon/fomantis/normal.gbapal.lz"); -const u32 gMonPalette_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/normal.gbapal.lz"); -const u32 gMonPalette_Morelull[] = INCBIN_U32("graphics/pokemon/morelull/normal.gbapal.lz"); -const u32 gMonPalette_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/normal.gbapal.lz"); -const u32 gMonPalette_Salandit[] = INCBIN_U32("graphics/pokemon/salandit/normal.gbapal.lz"); -const u32 gMonPalette_Salazzle[] = INCBIN_U32("graphics/pokemon/salazzle/normal.gbapal.lz"); -const u32 gMonPalette_Stufful[] = INCBIN_U32("graphics/pokemon/stufful/normal.gbapal.lz"); -const u32 gMonPalette_Bewear[] = INCBIN_U32("graphics/pokemon/bewear/normal.gbapal.lz"); -const u32 gMonPalette_Bounsweet[] = INCBIN_U32("graphics/pokemon/bounsweet/normal.gbapal.lz"); -const u32 gMonPalette_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/normal.gbapal.lz"); -const u32 gMonPalette_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/normal.gbapal.lz"); -const u32 gMonPalette_Comfey[] = INCBIN_U32("graphics/pokemon/comfey/normal.gbapal.lz"); -const u32 gMonPalette_Oranguru[] = INCBIN_U32("graphics/pokemon/oranguru/normal.gbapal.lz"); -const u32 gMonPalette_Passimian[] = INCBIN_U32("graphics/pokemon/passimian/normal.gbapal.lz"); -const u32 gMonPalette_Wimpod[] = INCBIN_U32("graphics/pokemon/wimpod/normal.gbapal.lz"); -const u32 gMonPalette_Golisopod[] = INCBIN_U32("graphics/pokemon/golisopod/normal.gbapal.lz"); -const u32 gMonPalette_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/normal.gbapal.lz"); -const u32 gMonPalette_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/normal.gbapal.lz"); -const u32 gMonPalette_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/normal.gbapal.lz"); -const u32 gMonPalette_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/normal.gbapal.lz"); -const u32 gMonPalette_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/normal.gbapal.lz"); -const u32 gMonPalette_Minior[] = INCBIN_U32("graphics/pokemon/minior/normal.gbapal.lz"); -const u32 gMonPalette_Komala[] = INCBIN_U32("graphics/pokemon/komala/normal.gbapal.lz"); -const u32 gMonPalette_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/normal.gbapal.lz"); -const u32 gMonPalette_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/normal.gbapal.lz"); -const u32 gMonPalette_Mimikyu[] = INCBIN_U32("graphics/pokemon/mimikyu/normal.gbapal.lz"); -const u32 gMonPalette_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/normal.gbapal.lz"); -const u32 gMonPalette_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/normal.gbapal.lz"); -const u32 gMonPalette_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/normal.gbapal.lz"); -const u32 gMonPalette_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/normal.gbapal.lz"); -const u32 gMonPalette_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/normal.gbapal.lz"); -const u32 gMonPalette_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/normal.gbapal.lz"); -const u32 gMonPalette_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/normal.gbapal.lz"); -const u32 gMonPalette_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/normal.gbapal.lz"); -const u32 gMonPalette_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/normal.gbapal.lz"); -const u32 gMonPalette_TapuFini[] = INCBIN_U32("graphics/pokemon/tapu_fini/normal.gbapal.lz"); -const u32 gMonPalette_Cosmog[] = INCBIN_U32("graphics/pokemon/cosmog/normal.gbapal.lz"); -const u32 gMonPalette_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/normal.gbapal.lz"); -const u32 gMonPalette_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/normal.gbapal.lz"); -const u32 gMonPalette_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/normal.gbapal.lz"); -const u32 gMonPalette_Nihilego[] = INCBIN_U32("graphics/pokemon/nihilego/normal.gbapal.lz"); -const u32 gMonPalette_Buzzwole[] = INCBIN_U32("graphics/pokemon/buzzwole/normal.gbapal.lz"); -const u32 gMonPalette_Pheromosa[] = INCBIN_U32("graphics/pokemon/pheromosa/normal.gbapal.lz"); -const u32 gMonPalette_Xurkitree[] = INCBIN_U32("graphics/pokemon/xurkitree/normal.gbapal.lz"); -const u32 gMonPalette_Celesteela[] = INCBIN_U32("graphics/pokemon/celesteela/normal.gbapal.lz"); -const u32 gMonPalette_Kartana[] = INCBIN_U32("graphics/pokemon/kartana/normal.gbapal.lz"); -const u32 gMonPalette_Guzzlord[] = INCBIN_U32("graphics/pokemon/guzzlord/normal.gbapal.lz"); -const u32 gMonPalette_Necrozma[] = INCBIN_U32("graphics/pokemon/necrozma/normal.gbapal.lz"); -const u32 gMonPalette_Magearna[] = INCBIN_U32("graphics/pokemon/magearna/normal.gbapal.lz"); -const u32 gMonPalette_Marshadow[] = INCBIN_U32("graphics/pokemon/marshadow/normal.gbapal.lz"); -const u32 gMonPalette_Poipole[] = INCBIN_U32("graphics/pokemon/poipole/normal.gbapal.lz"); -const u32 gMonPalette_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/normal.gbapal.lz"); -const u32 gMonPalette_Stakataka[] = INCBIN_U32("graphics/pokemon/stakataka/normal.gbapal.lz"); -const u32 gMonPalette_Blacephalon[] = INCBIN_U32("graphics/pokemon/blacephalon/normal.gbapal.lz"); -const u32 gMonPalette_Zeraora[] = INCBIN_U32("graphics/pokemon/zeraora/normal.gbapal.lz"); -const u32 gMonPalette_Meltan[] = INCBIN_U32("graphics/pokemon/meltan/normal.gbapal.lz"); -const u32 gMonPalette_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/normal.gbapal.lz"); -#endif -#if P_GEN_8_POKEMON == TRUE -const u32 gMonPalette_Grookey[] = INCBIN_U32("graphics/pokemon/grookey/normal.gbapal.lz"); -const u32 gMonPalette_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/normal.gbapal.lz"); -const u32 gMonPalette_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/normal.gbapal.lz"); -const u32 gMonPalette_Scorbunny[] = INCBIN_U32("graphics/pokemon/scorbunny/normal.gbapal.lz"); -const u32 gMonPalette_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/normal.gbapal.lz"); -const u32 gMonPalette_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/normal.gbapal.lz"); -const u32 gMonPalette_Sobble[] = INCBIN_U32("graphics/pokemon/sobble/normal.gbapal.lz"); -const u32 gMonPalette_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/normal.gbapal.lz"); -const u32 gMonPalette_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/normal.gbapal.lz"); -const u32 gMonPalette_Skwovet[] = INCBIN_U32("graphics/pokemon/skwovet/normal.gbapal.lz"); -const u32 gMonPalette_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/normal.gbapal.lz"); -const u32 gMonPalette_Rookidee[] = INCBIN_U32("graphics/pokemon/rookidee/normal.gbapal.lz"); -const u32 gMonPalette_Corvisquire[] = INCBIN_U32("graphics/pokemon/corvisquire/normal.gbapal.lz"); -const u32 gMonPalette_Corviknight[] = INCBIN_U32("graphics/pokemon/corviknight/normal.gbapal.lz"); -const u32 gMonPalette_Blipbug[] = INCBIN_U32("graphics/pokemon/blipbug/normal.gbapal.lz"); -const u32 gMonPalette_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/normal.gbapal.lz"); -const u32 gMonPalette_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/normal.gbapal.lz"); -const u32 gMonPalette_Nickit[] = INCBIN_U32("graphics/pokemon/nickit/normal.gbapal.lz"); -const u32 gMonPalette_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/normal.gbapal.lz"); -const u32 gMonPalette_Gossifleur[] = INCBIN_U32("graphics/pokemon/gossifleur/normal.gbapal.lz"); -const u32 gMonPalette_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/normal.gbapal.lz"); -const u32 gMonPalette_Wooloo[] = INCBIN_U32("graphics/pokemon/wooloo/normal.gbapal.lz"); -const u32 gMonPalette_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/normal.gbapal.lz"); -const u32 gMonPalette_Chewtle[] = INCBIN_U32("graphics/pokemon/chewtle/normal.gbapal.lz"); -const u32 gMonPalette_Drednaw[] = INCBIN_U32("graphics/pokemon/drednaw/normal.gbapal.lz"); -const u32 gMonPalette_Yamper[] = INCBIN_U32("graphics/pokemon/yamper/normal.gbapal.lz"); -const u32 gMonPalette_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/normal.gbapal.lz"); -const u32 gMonPalette_Rolycoly[] = INCBIN_U32("graphics/pokemon/rolycoly/normal.gbapal.lz"); -const u32 gMonPalette_Carkol[] = INCBIN_U32("graphics/pokemon/carkol/normal.gbapal.lz"); -const u32 gMonPalette_Coalossal[] = INCBIN_U32("graphics/pokemon/coalossal/normal.gbapal.lz"); -const u32 gMonPalette_Applin[] = INCBIN_U32("graphics/pokemon/applin/normal.gbapal.lz"); -const u32 gMonPalette_Flapple[] = INCBIN_U32("graphics/pokemon/flapple/normal.gbapal.lz"); -const u32 gMonPalette_Appletun[] = INCBIN_U32("graphics/pokemon/appletun/normal.gbapal.lz"); -const u32 gMonPalette_Silicobra[] = INCBIN_U32("graphics/pokemon/silicobra/normal.gbapal.lz"); -const u32 gMonPalette_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/normal.gbapal.lz"); -const u32 gMonPalette_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/normal.gbapal.lz"); -const u32 gMonPalette_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/normal.gbapal.lz"); -const u32 gMonPalette_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/normal.gbapal.lz"); -const u32 gMonPalette_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/normal.gbapal.lz"); -const u32 gMonPalette_Toxtricity[] = INCBIN_U32("graphics/pokemon/toxtricity/normal.gbapal.lz"); -const u32 gMonPalette_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/normal.gbapal.lz"); -const u32 gMonPalette_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/normal.gbapal.lz"); -const u32 gMonPalette_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/normal.gbapal.lz"); -const u32 gMonPalette_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/normal.gbapal.lz"); -const u32 gMonPalette_Sinistea[] = INCBIN_U32("graphics/pokemon/sinistea/normal.gbapal.lz"); -const u32 gMonPalette_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/normal.gbapal.lz"); -const u32 gMonPalette_Hatenna[] = INCBIN_U32("graphics/pokemon/hatenna/normal.gbapal.lz"); -const u32 gMonPalette_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/normal.gbapal.lz"); -const u32 gMonPalette_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/normal.gbapal.lz"); -const u32 gMonPalette_Impidimp[] = INCBIN_U32("graphics/pokemon/impidimp/normal.gbapal.lz"); -const u32 gMonPalette_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/normal.gbapal.lz"); -const u32 gMonPalette_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/normal.gbapal.lz"); -const u32 gMonPalette_Obstagoon[] = INCBIN_U32("graphics/pokemon/obstagoon/normal.gbapal.lz"); -const u32 gMonPalette_Perrserker[] = INCBIN_U32("graphics/pokemon/perrserker/normal.gbapal.lz"); -const u32 gMonPalette_Cursola[] = INCBIN_U32("graphics/pokemon/cursola/normal.gbapal.lz"); -const u32 gMonPalette_Sirfetchd[] = INCBIN_U32("graphics/pokemon/sirfetchd/normal.gbapal.lz"); -const u32 gMonPalette_MrRime[] = INCBIN_U32("graphics/pokemon/mr_rime/normal.gbapal.lz"); -const u32 gMonPalette_Runerigus[] = INCBIN_U32("graphics/pokemon/runerigus/normal.gbapal.lz"); -const u32 gMonPalette_Milcery[] = INCBIN_U32("graphics/pokemon/milcery/normal.gbapal.lz"); -const u32 gMonPalette_Alcremie[] = INCBIN_U32("graphics/pokemon/alcremie/normal.gbapal.lz"); -const u32 gMonPalette_Falinks[] = INCBIN_U32("graphics/pokemon/falinks/normal.gbapal.lz"); -const u32 gMonPalette_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/normal.gbapal.lz"); -const u32 gMonPalette_Snom[] = INCBIN_U32("graphics/pokemon/snom/normal.gbapal.lz"); -const u32 gMonPalette_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/normal.gbapal.lz"); -const u32 gMonPalette_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/normal.gbapal.lz"); -const u32 gMonPalette_Eiscue[] = INCBIN_U32("graphics/pokemon/eiscue/normal.gbapal.lz"); -const u32 gMonPalette_Indeedee[] = INCBIN_U32("graphics/pokemon/indeedee/normal.gbapal.lz"); -const u32 gMonPalette_Morpeko[] = INCBIN_U32("graphics/pokemon/morpeko/normal.gbapal.lz"); -const u32 gMonPalette_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/normal.gbapal.lz"); -const u32 gMonPalette_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/normal.gbapal.lz"); -const u32 gMonPalette_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/normal.gbapal.lz"); -const u32 gMonPalette_Arctozolt[] = INCBIN_U32("graphics/pokemon/arctozolt/normal.gbapal.lz"); -const u32 gMonPalette_Dracovish[] = INCBIN_U32("graphics/pokemon/dracovish/normal.gbapal.lz"); -const u32 gMonPalette_Arctovish[] = INCBIN_U32("graphics/pokemon/arctovish/normal.gbapal.lz"); -const u32 gMonPalette_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/normal.gbapal.lz"); -const u32 gMonPalette_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/normal.gbapal.lz"); -const u32 gMonPalette_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/normal.gbapal.lz"); -const u32 gMonPalette_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/normal.gbapal.lz"); -const u32 gMonPalette_Zacian[] = INCBIN_U32("graphics/pokemon/zacian/normal.gbapal.lz"); -const u32 gMonPalette_Zamazenta[] = INCBIN_U32("graphics/pokemon/zamazenta/normal.gbapal.lz"); -const u32 gMonPalette_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/normal.gbapal.lz"); -const u32 gMonPalette_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/normal.gbapal.lz"); -const u32 gMonPalette_Urshifu[] = INCBIN_U32("graphics/pokemon/urshifu/normal.gbapal.lz"); -const u32 gMonPalette_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/normal.gbapal.lz"); -const u32 gMonPalette_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/normal.gbapal.lz"); -const u32 gMonPalette_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/normal.gbapal.lz"); -const u32 gMonPalette_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/normal.gbapal.lz"); -const u32 gMonPalette_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/normal.gbapal.lz"); -const u32 gMonPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/normal.gbapal.lz"); -const u32 gMonPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/normal.gbapal.lz"); -const u32 gMonPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/normal.gbapal.lz"); -const u32 gMonPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/normal.gbapal.lz"); -const u32 gMonPalette_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/normal.gbapal.lz"); -const u32 gMonPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/normal.gbapal.lz"); -const u32 gMonPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/normal.gbapal.lz"); -const u32 gMonPalette_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/normal.gbapal.lz"); -#endif -const u32 gMonPalette_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/normal.gbapal.lz"); -const u32 gMonPalette_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/normal.gbapal.lz"); -const u32 gMonPalette_CharizardMegaY[] = INCBIN_U32("graphics/pokemon/charizard/mega_y/normal.gbapal.lz"); -const u32 gMonPalette_BlastoiseMega[] = INCBIN_U32("graphics/pokemon/blastoise/mega/normal.gbapal.lz"); -const u32 gMonPalette_BeedrillMega[] = INCBIN_U32("graphics/pokemon/beedrill/mega/normal.gbapal.lz"); -const u32 gMonPalette_PidgeotMega[] = INCBIN_U32("graphics/pokemon/pidgeot/mega/normal.gbapal.lz"); -const u32 gMonPalette_AlakazamMega[] = INCBIN_U32("graphics/pokemon/alakazam/mega/normal.gbapal.lz"); -const u32 gMonPalette_SlowbroMega[] = INCBIN_U32("graphics/pokemon/slowbro/mega/normal.gbapal.lz"); -const u32 gMonPalette_GengarMega[] = INCBIN_U32("graphics/pokemon/gengar/mega/normal.gbapal.lz"); -const u32 gMonPalette_KangaskhanMega[] = INCBIN_U32("graphics/pokemon/kangaskhan/mega/normal.gbapal.lz"); -const u32 gMonPalette_PinsirMega[] = INCBIN_U32("graphics/pokemon/pinsir/mega/normal.gbapal.lz"); -const u32 gMonPalette_GyaradosMega[] = INCBIN_U32("graphics/pokemon/gyarados/mega/normal.gbapal.lz"); -const u32 gMonPalette_AerodactylMega[] = INCBIN_U32("graphics/pokemon/aerodactyl/mega/normal.gbapal.lz"); -const u32 gMonPalette_MewtwoMegaX[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_x/normal.gbapal.lz"); -const u32 gMonPalette_MewtwoMegaY[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_y/normal.gbapal.lz"); -const u32 gMonPalette_AmpharosMega[] = INCBIN_U32("graphics/pokemon/ampharos/mega/normal.gbapal.lz"); -const u32 gMonPalette_SteelixMega[] = INCBIN_U32("graphics/pokemon/steelix/mega/normal.gbapal.lz"); -const u32 gMonPalette_ScizorMega[] = INCBIN_U32("graphics/pokemon/scizor/mega/normal.gbapal.lz"); -const u32 gMonPalette_HeracrossMega[] = INCBIN_U32("graphics/pokemon/heracross/mega/normal.gbapal.lz"); -const u32 gMonPalette_HoundoomMega[] = INCBIN_U32("graphics/pokemon/houndoom/mega/normal.gbapal.lz"); -const u32 gMonPalette_TyranitarMega[] = INCBIN_U32("graphics/pokemon/tyranitar/mega/normal.gbapal.lz"); -const u32 gMonPalette_SceptileMega[] = INCBIN_U32("graphics/pokemon/sceptile/mega/normal.gbapal.lz"); -const u32 gMonPalette_BlazikenMega[] = INCBIN_U32("graphics/pokemon/blaziken/mega/normal.gbapal.lz"); -const u32 gMonPalette_SwampertMega[] = INCBIN_U32("graphics/pokemon/swampert/mega/normal.gbapal.lz"); -const u32 gMonPalette_GardevoirMega[] = INCBIN_U32("graphics/pokemon/gardevoir/mega/normal.gbapal.lz"); -const u32 gMonPalette_SableyeMega[] = INCBIN_U32("graphics/pokemon/sableye/mega/normal.gbapal.lz"); -const u32 gMonPalette_MawileMega[] = INCBIN_U32("graphics/pokemon/mawile/mega/normal.gbapal.lz"); -const u32 gMonPalette_AggronMega[] = INCBIN_U32("graphics/pokemon/aggron/mega/normal.gbapal.lz"); -const u32 gMonPalette_MedichamMega[] = INCBIN_U32("graphics/pokemon/medicham/mega/normal.gbapal.lz"); -const u32 gMonPalette_ManectricMega[] = INCBIN_U32("graphics/pokemon/manectric/mega/normal.gbapal.lz"); -const u32 gMonPalette_SharpedoMega[] = INCBIN_U32("graphics/pokemon/sharpedo/mega/normal.gbapal.lz"); -const u32 gMonPalette_CameruptMega[] = INCBIN_U32("graphics/pokemon/camerupt/mega/normal.gbapal.lz"); -const u32 gMonPalette_AltariaMega[] = INCBIN_U32("graphics/pokemon/altaria/mega/normal.gbapal.lz"); -const u32 gMonPalette_BanetteMega[] = INCBIN_U32("graphics/pokemon/banette/mega/normal.gbapal.lz"); -const u32 gMonPalette_AbsolMega[] = INCBIN_U32("graphics/pokemon/absol/mega/normal.gbapal.lz"); -const u32 gMonPalette_GlalieMega[] = INCBIN_U32("graphics/pokemon/glalie/mega/normal.gbapal.lz"); -const u32 gMonPalette_SalamenceMega[] = INCBIN_U32("graphics/pokemon/salamence/mega/normal.gbapal.lz"); -const u32 gMonPalette_MetagrossMega[] = INCBIN_U32("graphics/pokemon/metagross/mega/normal.gbapal.lz"); -const u32 gMonPalette_LatiasMega[] = INCBIN_U32("graphics/pokemon/latias/mega/normal.gbapal.lz"); -const u32 gMonPalette_LatiosMega[] = INCBIN_U32("graphics/pokemon/latios/mega/normal.gbapal.lz"); -#if P_GEN_4_POKEMON == TRUE -const u32 gMonPalette_LopunnyMega[] = INCBIN_U32("graphics/pokemon/lopunny/mega/normal.gbapal.lz"); -const u32 gMonPalette_GarchompMega[] = INCBIN_U32("graphics/pokemon/garchomp/mega/normal.gbapal.lz"); -const u32 gMonPalette_LucarioMega[] = INCBIN_U32("graphics/pokemon/lucario/mega/normal.gbapal.lz"); -const u32 gMonPalette_AbomasnowMega[] = INCBIN_U32("graphics/pokemon/abomasnow/mega/normal.gbapal.lz"); -const u32 gMonPalette_GalladeMega[] = INCBIN_U32("graphics/pokemon/gallade/mega/normal.gbapal.lz"); -#endif -#if P_GEN_5_POKEMON == TRUE -const u32 gMonPalette_AudinoMega[] = INCBIN_U32("graphics/pokemon/audino/mega/normal.gbapal.lz"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u32 gMonPalette_DiancieMega[] = INCBIN_U32("graphics/pokemon/diancie/mega/normal.gbapal.lz"); -#endif -const u32 gMonPalette_RayquazaMega[] = INCBIN_U32("graphics/pokemon/rayquaza/mega/normal.gbapal.lz"); -const u32 gMonPalette_KyogrePrimal[] = INCBIN_U32("graphics/pokemon/kyogre/primal/normal.gbapal.lz"); -const u32 gMonPalette_GroudonPrimal[] = INCBIN_U32("graphics/pokemon/groudon/primal/normal.gbapal.lz"); -const u32 gMonPalette_RattataAlolan[] = INCBIN_U32("graphics/pokemon/rattata/alolan/normal.gbapal.lz"); -const u32 gMonPalette_RaticateAlolan[] = INCBIN_U32("graphics/pokemon/raticate/alolan/normal.gbapal.lz"); -const u32 gMonPalette_RaichuAlolan[] = INCBIN_U32("graphics/pokemon/raichu/alolan/normal.gbapal.lz"); -const u32 gMonPalette_SandshrewAlolan[] = INCBIN_U32("graphics/pokemon/sandshrew/alolan/normal.gbapal.lz"); -const u32 gMonPalette_SandslashAlolan[] = INCBIN_U32("graphics/pokemon/sandslash/alolan/normal.gbapal.lz"); -const u32 gMonPalette_VulpixAlolan[] = INCBIN_U32("graphics/pokemon/vulpix/alolan/normal.gbapal.lz"); -const u32 gMonPalette_NinetalesAlolan[] = INCBIN_U32("graphics/pokemon/ninetales/alolan/normal.gbapal.lz"); -const u32 gMonPalette_DiglettAlolan[] = INCBIN_U32("graphics/pokemon/diglett/alolan/normal.gbapal.lz"); -const u32 gMonPalette_DugtrioAlolan[] = INCBIN_U32("graphics/pokemon/dugtrio/alolan/normal.gbapal.lz"); -const u32 gMonPalette_MeowthAlolan[] = INCBIN_U32("graphics/pokemon/meowth/alolan/normal.gbapal.lz"); -const u32 gMonPalette_PersianAlolan[] = INCBIN_U32("graphics/pokemon/persian/alolan/normal.gbapal.lz"); -const u32 gMonPalette_GeodudeAlolan[] = INCBIN_U32("graphics/pokemon/geodude/alolan/normal.gbapal.lz"); -const u32 gMonPalette_GravelerAlolan[] = INCBIN_U32("graphics/pokemon/graveler/alolan/normal.gbapal.lz"); -const u32 gMonPalette_GolemAlolan[] = INCBIN_U32("graphics/pokemon/golem/alolan/normal.gbapal.lz"); -const u32 gMonPalette_GrimerAlolan[] = INCBIN_U32("graphics/pokemon/grimer/alolan/normal.gbapal.lz"); -const u32 gMonPalette_MukAlolan[] = INCBIN_U32("graphics/pokemon/muk/alolan/normal.gbapal.lz"); -const u32 gMonPalette_ExeggutorAlolan[] = INCBIN_U32("graphics/pokemon/exeggutor/alolan/normal.gbapal.lz"); -const u32 gMonPalette_MarowakAlolan[] = INCBIN_U32("graphics/pokemon/marowak/alolan/normal.gbapal.lz"); -const u32 gMonPalette_MeowthGalarian[] = INCBIN_U32("graphics/pokemon/meowth/galarian/normal.gbapal.lz"); -const u32 gMonPalette_PonytaGalarian[] = INCBIN_U32("graphics/pokemon/ponyta/galarian/normal.gbapal.lz"); -const u32 gMonPalette_RapidashGalarian[] = INCBIN_U32("graphics/pokemon/rapidash/galarian/normal.gbapal.lz"); -const u32 gMonPalette_SlowpokeGalarian[] = INCBIN_U32("graphics/pokemon/slowpoke/galarian/normal.gbapal.lz"); -const u32 gMonPalette_SlowbroGalarian[] = INCBIN_U32("graphics/pokemon/slowbro/galarian/normal.gbapal.lz"); -const u32 gMonPalette_FarfetchdGalarian[] = INCBIN_U32("graphics/pokemon/farfetchd/galarian/normal.gbapal.lz"); -const u32 gMonPalette_WeezingGalarian[] = INCBIN_U32("graphics/pokemon/weezing/galarian/normal.gbapal.lz"); -const u32 gMonPalette_MrMimeGalarian[] = INCBIN_U32("graphics/pokemon/mr_mime/galarian/normal.gbapal.lz"); -const u32 gMonPalette_ArticunoGalarian[] = INCBIN_U32("graphics/pokemon/articuno/galarian/normal.gbapal.lz"); -const u32 gMonPalette_ZapdosGalarian[] = INCBIN_U32("graphics/pokemon/zapdos/galarian/normal.gbapal.lz"); -const u32 gMonPalette_MoltresGalarian[] = INCBIN_U32("graphics/pokemon/moltres/galarian/normal.gbapal.lz"); -const u32 gMonPalette_SlowkingGalarian[] = INCBIN_U32("graphics/pokemon/slowking/galarian/normal.gbapal.lz"); -const u32 gMonPalette_CorsolaGalarian[] = INCBIN_U32("graphics/pokemon/corsola/galarian/normal.gbapal.lz"); -const u32 gMonPalette_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzagoon/galarian/normal.gbapal.lz"); -const u32 gMonPalette_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/normal.gbapal.lz"); -#if P_GEN_5_POKEMON == TRUE -const u32 gMonPalette_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/normal.gbapal.lz"); -const u32 gMonPalette_DarmanitanGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/normal.gbapal.lz"); -const u32 gMonPalette_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/normal.gbapal.lz"); -const u32 gMonPalette_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/normal.gbapal.lz"); -#endif -const u32 gMonPalette_GrowlitheHisuian[] = INCBIN_U32("graphics/pokemon/growlithe/hisuian/normal.gbapal.lz"); -const u32 gMonPalette_ArcanineHisuian[] = INCBIN_U32("graphics/pokemon/arcanine/hisuian/normal.gbapal.lz"); -const u32 gMonPalette_VoltorbHisuian[] = INCBIN_U32("graphics/pokemon/voltorb/hisuian/normal.gbapal.lz"); -const u32 gMonPalette_ElectrodeHisuian[] = INCBIN_U32("graphics/pokemon/electrode/hisuian/normal.gbapal.lz"); -const u32 gMonPalette_TyphlosionHisuian[] = INCBIN_U32("graphics/pokemon/typhlosion/hisuian/normal.gbapal.lz"); -const u32 gMonPalette_QwilfishHisuian[] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/normal.gbapal.lz"); -const u32 gMonPalette_SneaselHisuian[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/normal.gbapal.lz"); -#if P_GEN_5_POKEMON == TRUE -const u32 gMonPalette_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/normal.gbapal.lz"); -const u32 gMonPalette_LilligantHisuian[] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/normal.gbapal.lz"); -const u32 gMonPalette_ZoruaHisuian[] = INCBIN_U32("graphics/pokemon/zorua/hisuian/normal.gbapal.lz"); -const u32 gMonPalette_ZoroarkHisuian[] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/normal.gbapal.lz"); -const u32 gMonPalette_BraviaryHisuian[] = INCBIN_U32("graphics/pokemon/braviary/hisuian/normal.gbapal.lz"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u32 gMonPalette_SliggooHisuian[] = INCBIN_U32("graphics/pokemon/sliggoo/hisuian/normal.gbapal.lz"); -const u32 gMonPalette_GoodraHisuian[] = INCBIN_U32("graphics/pokemon/goodra/hisuian/normal.gbapal.lz"); -const u32 gMonPalette_AvaluggHisuian[] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/normal.gbapal.lz"); -#endif -#if P_GEN_7_POKEMON == TRUE -const u32 gMonPalette_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/normal.gbapal.lz"); -#endif -const u32 gMonPalette_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/normal.gbapal.lz"); -const u32 gMonPalette_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/normal.gbapal.lz"); -const u32 gMonPalette_PikachuBelle[] = INCBIN_U32("graphics/pokemon/pikachu/belle/normal.gbapal.lz"); -const u32 gMonPalette_PikachuPopStar[] = INCBIN_U32("graphics/pokemon/pikachu/pop_star/normal.gbapal.lz"); -const u32 gMonPalette_PikachuPhD[] = INCBIN_U32("graphics/pokemon/pikachu/ph_d/normal.gbapal.lz"); -const u32 gMonPalette_PikachuLibre[] = INCBIN_U32("graphics/pokemon/pikachu/libre/normal.gbapal.lz"); -const u32 gMonPalette_PikachuOriginalCap[] = INCBIN_U32("graphics/pokemon/pikachu/original_cap/normal.gbapal.lz"); -const u32 gMonPalette_PikachuHoennCap[] = INCBIN_U32("graphics/pokemon/pikachu/hoenn_cap/normal.gbapal.lz"); -const u32 gMonPalette_PikachuSinnohCap[] = INCBIN_U32("graphics/pokemon/pikachu/sinnoh_cap/normal.gbapal.lz"); -const u32 gMonPalette_PikachuUnovaCap[] = INCBIN_U32("graphics/pokemon/pikachu/unova_cap/normal.gbapal.lz"); -const u32 gMonPalette_PikachuKalosCap[] = INCBIN_U32("graphics/pokemon/pikachu/kalos_cap/normal.gbapal.lz"); -const u32 gMonPalette_PikachuAlolaCap[] = INCBIN_U32("graphics/pokemon/pikachu/alola_cap/normal.gbapal.lz"); -const u32 gMonPalette_PikachuPartnerCap[] = INCBIN_U32("graphics/pokemon/pikachu/partner_cap/normal.gbapal.lz"); -const u32 gMonPalette_PikachuWorldCap[] = INCBIN_U32("graphics/pokemon/pikachu/world_cap/normal.gbapal.lz"); -const u32 gMonPalette_PichuSpikyEared[] = INCBIN_U32("graphics/pokemon/pichu/spiky_eared/normal.gbapal.lz"); -const u32 gMonPalette_CastformSunny[] = INCBIN_U32("graphics/pokemon/castform/sunny/normal.gbapal.lz"); -const u32 gMonPalette_CastformRainy[] = INCBIN_U32("graphics/pokemon/castform/rainy/normal.gbapal.lz"); -const u32 gMonPalette_CastformSnowy[] = INCBIN_U32("graphics/pokemon/castform/snowy/normal.gbapal.lz"); -const u32 gMonPalette_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/attack/normal.gbapal.lz"); -const u32 gMonPalette_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/defense/normal.gbapal.lz"); -const u32 gMonPalette_DeoxysSpeed[] = INCBIN_U32("graphics/pokemon/deoxys/speed/normal.gbapal.lz"); -#if P_GEN_4_POKEMON == TRUE -const u32 gMonPalette_BurmySandyCloak[] = INCBIN_U32("graphics/pokemon/burmy/sandy_cloak/normal.gbapal.lz"); -const u32 gMonPalette_BurmyTrashCloak[] = INCBIN_U32("graphics/pokemon/burmy/trash_cloak/normal.gbapal.lz"); -const u32 gMonPalette_WormadamSandyCloak[] = INCBIN_U32("graphics/pokemon/wormadam/sandy_cloak/normal.gbapal.lz"); -const u32 gMonPalette_WormadamTrashCloak[] = INCBIN_U32("graphics/pokemon/wormadam/trash_cloak/normal.gbapal.lz"); -const u32 gMonPalette_CherrimSunshine[] = INCBIN_U32("graphics/pokemon/cherrim/sunshine/normal.gbapal.lz"); -const u32 gMonPalette_ShellosEastSea[] = INCBIN_U32("graphics/pokemon/shellos/east_sea/normal.gbapal.lz"); -const u32 gMonPalette_GastrodonEastSea[] = INCBIN_U32("graphics/pokemon/gastrodon/east_sea/normal.gbapal.lz"); -const u32 gMonPalette_RotomHeat[] = INCBIN_U32("graphics/pokemon/rotom/heat/normal.gbapal.lz"); -const u32 gMonPalette_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash/normal.gbapal.lz"); -const u32 gMonPalette_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/normal.gbapal.lz"); -const u32 gMonPalette_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/normal.gbapal.lz"); -const u32 gMonPalette_RotomMow[] = INCBIN_U32("graphics/pokemon/rotom/mow/normal.gbapal.lz"); -const u32 gMonPalette_DialgaOrigin[] = INCBIN_U32("graphics/pokemon/dialga/origin/normal.gbapal.lz"); -const u32 gMonPalette_PalkiaOrigin[] = INCBIN_U32("graphics/pokemon/palkia/origin/normal.gbapal.lz"); -const u32 gMonPalette_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/normal.gbapal.lz"); -const u32 gMonPalette_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/normal.gbapal.lz"); -const u32 gMonPalette_ArceusFighting[] = INCBIN_U32("graphics/pokemon/arceus/fighting/normal.gbapal.lz"); -const u32 gMonPalette_ArceusFlying[] = INCBIN_U32("graphics/pokemon/arceus/flying/normal.gbapal.lz"); -const u32 gMonPalette_ArceusPoison[] = INCBIN_U32("graphics/pokemon/arceus/poison/normal.gbapal.lz"); -const u32 gMonPalette_ArceusGround[] = INCBIN_U32("graphics/pokemon/arceus/ground/normal.gbapal.lz"); -const u32 gMonPalette_ArceusRock[] = INCBIN_U32("graphics/pokemon/arceus/rock/normal.gbapal.lz"); -const u32 gMonPalette_ArceusBug[] = INCBIN_U32("graphics/pokemon/arceus/bug/normal.gbapal.lz"); -const u32 gMonPalette_ArceusGhost[] = INCBIN_U32("graphics/pokemon/arceus/ghost/normal.gbapal.lz"); -const u32 gMonPalette_ArceusSteel[] = INCBIN_U32("graphics/pokemon/arceus/steel/normal.gbapal.lz"); -const u32 gMonPalette_ArceusFire[] = INCBIN_U32("graphics/pokemon/arceus/fire/normal.gbapal.lz"); -const u32 gMonPalette_ArceusWater[] = INCBIN_U32("graphics/pokemon/arceus/water/normal.gbapal.lz"); -const u32 gMonPalette_ArceusGrass[] = INCBIN_U32("graphics/pokemon/arceus/grass/normal.gbapal.lz"); -const u32 gMonPalette_ArceusElectric[] = INCBIN_U32("graphics/pokemon/arceus/electric/normal.gbapal.lz"); -const u32 gMonPalette_ArceusPsychic[] = INCBIN_U32("graphics/pokemon/arceus/psychic/normal.gbapal.lz"); -const u32 gMonPalette_ArceusIce[] = INCBIN_U32("graphics/pokemon/arceus/ice/normal.gbapal.lz"); -const u32 gMonPalette_ArceusDragon[] = INCBIN_U32("graphics/pokemon/arceus/dragon/normal.gbapal.lz"); -const u32 gMonPalette_ArceusDark[] = INCBIN_U32("graphics/pokemon/arceus/dark/normal.gbapal.lz"); -const u32 gMonPalette_ArceusFairy[] = INCBIN_U32("graphics/pokemon/arceus/fairy/normal.gbapal.lz"); -#endif -#if P_GEN_5_POKEMON == TRUE -const u32 gMonPalette_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/normal.gbapal.lz"); -const u32 gMonPalette_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/normal.gbapal.lz"); -const u32 gMonPalette_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/normal.gbapal.lz"); -const u32 gMonPalette_DarmanitanZenModeGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/normal.gbapal.lz"); -const u32 gMonPalette_DeerlingSummer[] = INCBIN_U32("graphics/pokemon/deerling/summer/normal.gbapal.lz"); -const u32 gMonPalette_DeerlingAutumn[] = INCBIN_U32("graphics/pokemon/deerling/autumn/normal.gbapal.lz"); -const u32 gMonPalette_DeerlingWinter[] = INCBIN_U32("graphics/pokemon/deerling/winter/normal.gbapal.lz"); -const u32 gMonPalette_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/normal.gbapal.lz"); -const u32 gMonPalette_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/normal.gbapal.lz"); -const u32 gMonPalette_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/normal.gbapal.lz"); -const u32 gMonPalette_TornadusTherian[] = INCBIN_U32("graphics/pokemon/tornadus/therian/normal.gbapal.lz"); -const u32 gMonPalette_ThundurusTherian[] = INCBIN_U32("graphics/pokemon/thundurus/therian/normal.gbapal.lz"); -const u32 gMonPalette_LandorusTherian[] = INCBIN_U32("graphics/pokemon/landorus/therian/normal.gbapal.lz"); -const u32 gMonPalette_KyuremWhite[] = INCBIN_U32("graphics/pokemon/kyurem/white/normal.gbapal.lz"); -const u32 gMonPalette_KyuremBlack[] = INCBIN_U32("graphics/pokemon/kyurem/black/normal.gbapal.lz"); -const u32 gMonPalette_KeldeoResolute[] = INCBIN_U32("graphics/pokemon/keldeo/resolute/normal.gbapal.lz"); -const u32 gMonPalette_MeloettaPirouette[] = INCBIN_U32("graphics/pokemon/meloetta/pirouette/normal.gbapal.lz"); -const u32 gMonPalette_GenesectDouseDrive[] = INCBIN_U32("graphics/pokemon/genesect/douse_drive/normal.gbapal.lz"); -const u32 gMonPalette_GenesectShockDrive[] = INCBIN_U32("graphics/pokemon/genesect/shock_drive/normal.gbapal.lz"); -const u32 gMonPalette_GenesectBurnDrive[] = INCBIN_U32("graphics/pokemon/genesect/burn_drive/normal.gbapal.lz"); -const u32 gMonPalette_GenesectChillDrive[] = INCBIN_U32("graphics/pokemon/genesect/chill_drive/normal.gbapal.lz"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u32 gMonPalette_GreninjaAsh[] = INCBIN_U32("graphics/pokemon/greninja/ash/normal.gbapal.lz"); -const u32 gMonPalette_VivillonPolar[] = INCBIN_U32("graphics/pokemon/vivillon/polar/normal.gbapal.lz"); -const u32 gMonPalette_VivillonTundra[] = INCBIN_U32("graphics/pokemon/vivillon/tundra/normal.gbapal.lz"); -const u32 gMonPalette_VivillonContinental[] = INCBIN_U32("graphics/pokemon/vivillon/continental/normal.gbapal.lz"); -const u32 gMonPalette_VivillonGarden[] = INCBIN_U32("graphics/pokemon/vivillon/garden/normal.gbapal.lz"); -const u32 gMonPalette_VivillonElegant[] = INCBIN_U32("graphics/pokemon/vivillon/elegant/normal.gbapal.lz"); -const u32 gMonPalette_VivillonMeadow[] = INCBIN_U32("graphics/pokemon/vivillon/meadow/normal.gbapal.lz"); -const u32 gMonPalette_VivillonModern[] = INCBIN_U32("graphics/pokemon/vivillon/modern/normal.gbapal.lz"); -const u32 gMonPalette_VivillonMarine[] = INCBIN_U32("graphics/pokemon/vivillon/marine/normal.gbapal.lz"); -const u32 gMonPalette_VivillonArchipelago[] = INCBIN_U32("graphics/pokemon/vivillon/archipelago/normal.gbapal.lz"); -const u32 gMonPalette_VivillonHighPlains[] = INCBIN_U32("graphics/pokemon/vivillon/high_plains/normal.gbapal.lz"); -const u32 gMonPalette_VivillonSandstorm[] = INCBIN_U32("graphics/pokemon/vivillon/sandstorm/normal.gbapal.lz"); -const u32 gMonPalette_VivillonRiver[] = INCBIN_U32("graphics/pokemon/vivillon/river/normal.gbapal.lz"); -const u32 gMonPalette_VivillonMonsoon[] = INCBIN_U32("graphics/pokemon/vivillon/monsoon/normal.gbapal.lz"); -const u32 gMonPalette_VivillonSavanna[] = INCBIN_U32("graphics/pokemon/vivillon/savanna/normal.gbapal.lz"); -const u32 gMonPalette_VivillonSun[] = INCBIN_U32("graphics/pokemon/vivillon/sun/normal.gbapal.lz"); -const u32 gMonPalette_VivillonOcean[] = INCBIN_U32("graphics/pokemon/vivillon/ocean/normal.gbapal.lz"); -const u32 gMonPalette_VivillonJungle[] = INCBIN_U32("graphics/pokemon/vivillon/jungle/normal.gbapal.lz"); -const u32 gMonPalette_VivillonFancy[] = INCBIN_U32("graphics/pokemon/vivillon/fancy/normal.gbapal.lz"); -const u32 gMonPalette_VivillonPokeBall[] = INCBIN_U32("graphics/pokemon/vivillon/poke_ball/normal.gbapal.lz"); -const u32 gMonPalette_FlabebeYellowFlower[] = INCBIN_U32("graphics/pokemon/flabebe/yellow_flower/normal.gbapal.lz"); -const u32 gMonPalette_FlabebeOrangeFlower[] = INCBIN_U32("graphics/pokemon/flabebe/orange_flower/normal.gbapal.lz"); -const u32 gMonPalette_FlabebeBlueFlower[] = INCBIN_U32("graphics/pokemon/flabebe/blue_flower/normal.gbapal.lz"); -const u32 gMonPalette_FlabebeWhiteFlower[] = INCBIN_U32("graphics/pokemon/flabebe/white_flower/normal.gbapal.lz"); -const u32 gMonPalette_FloetteYellowFlower[] = INCBIN_U32("graphics/pokemon/floette/yellow_flower/normal.gbapal.lz"); -const u32 gMonPalette_FloetteOrangeFlower[] = INCBIN_U32("graphics/pokemon/floette/orange_flower/normal.gbapal.lz"); -const u32 gMonPalette_FloetteBlueFlower[] = INCBIN_U32("graphics/pokemon/floette/blue_flower/normal.gbapal.lz"); -const u32 gMonPalette_FloetteWhiteFlower[] = INCBIN_U32("graphics/pokemon/floette/white_flower/normal.gbapal.lz"); -const u32 gMonPalette_FloetteEternalFlower[] = INCBIN_U32("graphics/pokemon/floette/eternal_flower/normal.gbapal.lz"); -const u32 gMonPalette_FlorgesYellowFlower[] = INCBIN_U32("graphics/pokemon/florges/yellow_flower/normal.gbapal.lz"); -const u32 gMonPalette_FlorgesOrangeFlower[] = INCBIN_U32("graphics/pokemon/florges/orange_flower/normal.gbapal.lz"); -const u32 gMonPalette_FlorgesBlueFlower[] = INCBIN_U32("graphics/pokemon/florges/blue_flower/normal.gbapal.lz"); -const u32 gMonPalette_FlorgesWhiteFlower[] = INCBIN_U32("graphics/pokemon/florges/white_flower/normal.gbapal.lz"); -const u32 gMonPalette_FurfrouHeartTrim[] = INCBIN_U32("graphics/pokemon/furfrou/heart_trim/normal.gbapal.lz"); -const u32 gMonPalette_FurfrouStarTrim[] = INCBIN_U32("graphics/pokemon/furfrou/star_trim/normal.gbapal.lz"); -const u32 gMonPalette_FurfrouDiamondTrim[] = INCBIN_U32("graphics/pokemon/furfrou/diamond_trim/normal.gbapal.lz"); -const u32 gMonPalette_FurfrouDebutanteTrim[] = INCBIN_U32("graphics/pokemon/furfrou/debutante_trim/normal.gbapal.lz"); -const u32 gMonPalette_FurfrouMatronTrim[] = INCBIN_U32("graphics/pokemon/furfrou/matron_trim/normal.gbapal.lz"); -const u32 gMonPalette_FurfrouDandyTrim[] = INCBIN_U32("graphics/pokemon/furfrou/dandy_trim/normal.gbapal.lz"); -const u32 gMonPalette_FurfrouLaReineTrim[] = INCBIN_U32("graphics/pokemon/furfrou/la_reine_trim/normal.gbapal.lz"); -const u32 gMonPalette_FurfrouKabukiTrim[] = INCBIN_U32("graphics/pokemon/furfrou/kabuki_trim/normal.gbapal.lz"); -const u32 gMonPalette_FurfrouPharaohTrim[] = INCBIN_U32("graphics/pokemon/furfrou/pharaoh_trim/normal.gbapal.lz"); -const u32 gMonPalette_MeowsticFemale[] = INCBIN_U32("graphics/pokemon/meowstic/female/normal.gbapal.lz"); -const u32 gMonPalette_AegislashBlade[] = INCBIN_U32("graphics/pokemon/aegislash/blade/normal.gbapal.lz"); -const u32 gMonPalette_XerneasActive[] = INCBIN_U32("graphics/pokemon/xerneas/active/normal.gbapal.lz"); -const u32 gMonPalette_Zygarde10[] = INCBIN_U32("graphics/pokemon/zygarde/10_percent/normal.gbapal.lz"); -const u32 gMonPalette_ZygardeComplete[] = INCBIN_U32("graphics/pokemon/zygarde/complete/normal.gbapal.lz"); -const u32 gMonPalette_HoopaUnbound[] = INCBIN_U32("graphics/pokemon/hoopa/unbound/normal.gbapal.lz"); -#endif -#if P_GEN_7_POKEMON == TRUE -const u32 gMonPalette_OricorioPomPom[] = INCBIN_U32("graphics/pokemon/oricorio/pom_pom/normal.gbapal.lz"); -const u32 gMonPalette_OricorioPau[] = INCBIN_U32("graphics/pokemon/oricorio/pau/normal.gbapal.lz"); -const u32 gMonPalette_OricorioSensu[] = INCBIN_U32("graphics/pokemon/oricorio/sensu/normal.gbapal.lz"); -const u32 gMonPalette_LycanrocMidnight[] = INCBIN_U32("graphics/pokemon/lycanroc/midnight/normal.gbapal.lz"); -const u32 gMonPalette_LycanrocDusk[] = INCBIN_U32("graphics/pokemon/lycanroc/dusk/normal.gbapal.lz"); -const u32 gMonPalette_WishiwashiSchool[] = INCBIN_U32("graphics/pokemon/wishiwashi/school/normal.gbapal.lz"); -const u32 gMonPalette_SilvallyFighting[] = INCBIN_U32("graphics/pokemon/silvally/fighting/normal.gbapal.lz"); -const u32 gMonPalette_SilvallyFlying[] = INCBIN_U32("graphics/pokemon/silvally/flying/normal.gbapal.lz"); -const u32 gMonPalette_SilvallyPoison[] = INCBIN_U32("graphics/pokemon/silvally/poison/normal.gbapal.lz"); -const u32 gMonPalette_SilvallyGround[] = INCBIN_U32("graphics/pokemon/silvally/ground/normal.gbapal.lz"); -const u32 gMonPalette_SilvallyRock[] = INCBIN_U32("graphics/pokemon/silvally/rock/normal.gbapal.lz"); -const u32 gMonPalette_SilvallyBug[] = INCBIN_U32("graphics/pokemon/silvally/bug/normal.gbapal.lz"); -const u32 gMonPalette_SilvallyGhost[] = INCBIN_U32("graphics/pokemon/silvally/ghost/normal.gbapal.lz"); -const u32 gMonPalette_SilvallySteel[] = INCBIN_U32("graphics/pokemon/silvally/steel/normal.gbapal.lz"); -const u32 gMonPalette_SilvallyFire[] = INCBIN_U32("graphics/pokemon/silvally/fire/normal.gbapal.lz"); -const u32 gMonPalette_SilvallyWater[] = INCBIN_U32("graphics/pokemon/silvally/water/normal.gbapal.lz"); -const u32 gMonPalette_SilvallyGrass[] = INCBIN_U32("graphics/pokemon/silvally/grass/normal.gbapal.lz"); -const u32 gMonPalette_SilvallyElectric[] = INCBIN_U32("graphics/pokemon/silvally/electric/normal.gbapal.lz"); -const u32 gMonPalette_SilvallyPsychic[] = INCBIN_U32("graphics/pokemon/silvally/psychic/normal.gbapal.lz"); -const u32 gMonPalette_SilvallyIce[] = INCBIN_U32("graphics/pokemon/silvally/ice/normal.gbapal.lz"); -const u32 gMonPalette_SilvallyDragon[] = INCBIN_U32("graphics/pokemon/silvally/dragon/normal.gbapal.lz"); -const u32 gMonPalette_SilvallyDark[] = INCBIN_U32("graphics/pokemon/silvally/dark/normal.gbapal.lz"); -const u32 gMonPalette_SilvallyFairy[] = INCBIN_U32("graphics/pokemon/silvally/fairy/normal.gbapal.lz"); -const u32 gMonPalette_MiniorCoreRed[] = INCBIN_U32("graphics/pokemon/minior/core/red/normal.gbapal.lz"); -const u32 gMonPalette_MiniorCoreOrange[] = INCBIN_U32("graphics/pokemon/minior/core/orange/normal.gbapal.lz"); -const u32 gMonPalette_MiniorCoreYellow[] = INCBIN_U32("graphics/pokemon/minior/core/yellow/normal.gbapal.lz"); -const u32 gMonPalette_MiniorCoreGreen[] = INCBIN_U32("graphics/pokemon/minior/core/green/normal.gbapal.lz"); -const u32 gMonPalette_MiniorCoreBlue[] = INCBIN_U32("graphics/pokemon/minior/core/blue/normal.gbapal.lz"); -const u32 gMonPalette_MiniorCoreIndigo[] = INCBIN_U32("graphics/pokemon/minior/core/indigo/normal.gbapal.lz"); -const u32 gMonPalette_MiniorCoreViolet[] = INCBIN_U32("graphics/pokemon/minior/core/violet/normal.gbapal.lz"); -const u32 gMonPalette_MimikyuBusted[] = INCBIN_U32("graphics/pokemon/mimikyu/busted/normal.gbapal.lz"); -const u32 gMonPalette_NecrozmaDuskMane[] = INCBIN_U32("graphics/pokemon/necrozma/dusk_mane/normal.gbapal.lz"); -const u32 gMonPalette_NecrozmaDawnWings[] = INCBIN_U32("graphics/pokemon/necrozma/dawn_wings/normal.gbapal.lz"); -const u32 gMonPalette_NecrozmaUltra[] = INCBIN_U32("graphics/pokemon/necrozma/ultra/normal.gbapal.lz"); -const u32 gMonPalette_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/magearna/original_color/normal.gbapal.lz"); -#endif -#if P_GEN_8_POKEMON == TRUE -const u32 gMonPalette_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/normal.gbapal.lz"); -const u32 gMonPalette_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/normal.gbapal.lz"); -const u32 gMonPalette_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_cream/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/matcha_cream/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/mint_cream/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/lemon_cream/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/salted_cream/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_swirl/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/caramel_swirl/normal.gbapal.lz"); -const u32 gMonPalette_AlcremieRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/rainbow_swirl/normal.gbapal.lz"); -const u32 gMonPalette_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/normal.gbapal.lz"); -const u32 gMonPalette_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/normal.gbapal.lz"); -const u32 gMonPalette_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/normal.gbapal.lz"); -const u32 gMonPalette_ZacianCrownedSword[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/normal.gbapal.lz"); -const u32 gMonPalette_ZamazentaCrownedShield[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/normal.gbapal.lz"); -const u32 gMonPalette_EternatusEternamax[] = INCBIN_U32("graphics/pokemon/eternatus/eternamax/normal.gbapal.lz"); -const u32 gMonPalette_UrshifuRapidStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style/normal.gbapal.lz"); -const u32 gMonPalette_ZarudeDada[] = INCBIN_U32("graphics/pokemon/zarude/dada/normal.gbapal.lz"); -const u32 gMonPalette_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ice_rider/normal.gbapal.lz"); -const u32 gMonPalette_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/normal.gbapal.lz"); -const u32 gMonPalette_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/normal.gbapal.lz"); -const u32 gMonPalette_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/normal.gbapal.lz"); -#endif -const u32 gMonPalette_Egg[] = INCBIN_U32("graphics/pokemon/egg/normal.gbapal.lz"); - const u32 gMonShinyPalette_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/question_mark/circled/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DoubleQuestionMark[] = INCBIN_U32("graphics/pokemon/question_mark/double/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/shiny.gbapal.lz"); -const u32 gMonShinyPalette_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/shiny.gbapal.lz"); -const u32 gMonShinyPalette_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Paras[] = INCBIN_U32("graphics/pokemon/paras/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Persian[] = INCBIN_U32("graphics/pokemon/persian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Abra[] = INCBIN_U32("graphics/pokemon/abra/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Machop[] = INCBIN_U32("graphics/pokemon/machop/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Golem[] = INCBIN_U32("graphics/pokemon/golem/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Seel[] = INCBIN_U32("graphics/pokemon/seel/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Muk[] = INCBIN_U32("graphics/pokemon/muk/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Onix[] = INCBIN_U32("graphics/pokemon/onix/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mew[] = INCBIN_U32("graphics/pokemon/mew/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Furret[] = INCBIN_U32("graphics/pokemon/furret/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Natu[] = INCBIN_U32("graphics/pokemon/natu/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Marill[] = INCBIN_U32("graphics/pokemon/marill/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Unown[] = INCBIN_U32("graphics/pokemon/unown/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Magby[] = INCBIN_U32("graphics/pokemon/magby/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Entei[] = INCBIN_U32("graphics/pokemon/entei/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/shiny.gbapal.lz"); -const u32 gMonShinyPalette_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Aron[] = INCBIN_U32("graphics/pokemon/aron/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Minun[] = INCBIN_U32("graphics/pokemon/minun/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Numel[] = INCBIN_U32("graphics/pokemon/numel/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Castform[] = INCBIN_U32("graphics/pokemon/castform/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Absol[] = INCBIN_U32("graphics/pokemon/absol/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Metang[] = INCBIN_U32("graphics/pokemon/metang/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Regice[] = INCBIN_U32("graphics/pokemon/regice/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Latias[] = INCBIN_U32("graphics/pokemon/latias/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Latios[] = INCBIN_U32("graphics/pokemon/latios/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/shiny.gbapal.lz"); -#if P_GEN_4_POKEMON == TRUE -const u32 gMonShinyPalette_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Torterra[] = INCBIN_U32("graphics/pokemon/torterra/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Chimchar[] = INCBIN_U32("graphics/pokemon/chimchar/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Monferno[] = INCBIN_U32("graphics/pokemon/monferno/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Infernape[] = INCBIN_U32("graphics/pokemon/infernape/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Piplup[] = INCBIN_U32("graphics/pokemon/piplup/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Prinplup[] = INCBIN_U32("graphics/pokemon/prinplup/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Empoleon[] = INCBIN_U32("graphics/pokemon/empoleon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Starly[] = INCBIN_U32("graphics/pokemon/starly/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bidoof[] = INCBIN_U32("graphics/pokemon/bidoof/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Kricketot[] = INCBIN_U32("graphics/pokemon/kricketot/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Shinx[] = INCBIN_U32("graphics/pokemon/shinx/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Budew[] = INCBIN_U32("graphics/pokemon/budew/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Roserade[] = INCBIN_U32("graphics/pokemon/roserade/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Burmy[] = INCBIN_U32("graphics/pokemon/burmy/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wormadam[] = INCBIN_U32("graphics/pokemon/wormadam/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Combee[] = INCBIN_U32("graphics/pokemon/combee/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/shinyf.gbapal.lz"); -const u32 gMonShinyPalette_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cherrim[] = INCBIN_U32("graphics/pokemon/cherrim/normal/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Shellos[] = INCBIN_U32("graphics/pokemon/shellos/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gastrodon[] = INCBIN_U32("graphics/pokemon/gastrodon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Buneary[] = INCBIN_U32("graphics/pokemon/buneary/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lopunny[] = INCBIN_U32("graphics/pokemon/lopunny/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mismagius[] = INCBIN_U32("graphics/pokemon/mismagius/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Honchkrow[] = INCBIN_U32("graphics/pokemon/honchkrow/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Glameow[] = INCBIN_U32("graphics/pokemon/glameow/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Purugly[] = INCBIN_U32("graphics/pokemon/purugly/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Chingling[] = INCBIN_U32("graphics/pokemon/chingling/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Stunky[] = INCBIN_U32("graphics/pokemon/stunky/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Skuntank[] = INCBIN_U32("graphics/pokemon/skuntank/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bronzor[] = INCBIN_U32("graphics/pokemon/bronzor/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bronzong[] = INCBIN_U32("graphics/pokemon/bronzong/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bonsly[] = INCBIN_U32("graphics/pokemon/bonsly/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MimeJr[] = INCBIN_U32("graphics/pokemon/mime_jr/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Happiny[] = INCBIN_U32("graphics/pokemon/happiny/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Chatot[] = INCBIN_U32("graphics/pokemon/chatot/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Spiritomb[] = INCBIN_U32("graphics/pokemon/spiritomb/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gible[] = INCBIN_U32("graphics/pokemon/gible/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/shiny.gbapal.lz"); -const u32 gMonShinyPalette_HippopotasF[] = INCBIN_U32("graphics/pokemon/hippopotas/shinyf.gbapal.lz"); -const u32 gMonShinyPalette_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_HippowdonF[] = INCBIN_U32("graphics/pokemon/hippowdon/shinyf.gbapal.lz"); -const u32 gMonShinyPalette_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Croagunk[] = INCBIN_U32("graphics/pokemon/croagunk/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Carnivine[] = INCBIN_U32("graphics/pokemon/carnivine/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Finneon[] = INCBIN_U32("graphics/pokemon/finneon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mantyke[] = INCBIN_U32("graphics/pokemon/mantyke/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Snover[] = INCBIN_U32("graphics/pokemon/snover/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Weavile[] = INCBIN_U32("graphics/pokemon/weavile/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Magnezone[] = INCBIN_U32("graphics/pokemon/magnezone/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lickilicky[] = INCBIN_U32("graphics/pokemon/lickilicky/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Rhyperior[] = INCBIN_U32("graphics/pokemon/rhyperior/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tangrowth[] = INCBIN_U32("graphics/pokemon/tangrowth/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Electivire[] = INCBIN_U32("graphics/pokemon/electivire/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Magmortar[] = INCBIN_U32("graphics/pokemon/magmortar/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Togekiss[] = INCBIN_U32("graphics/pokemon/togekiss/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Yanmega[] = INCBIN_U32("graphics/pokemon/yanmega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Leafeon[] = INCBIN_U32("graphics/pokemon/leafeon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Glaceon[] = INCBIN_U32("graphics/pokemon/glaceon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gliscor[] = INCBIN_U32("graphics/pokemon/gliscor/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mamoswine[] = INCBIN_U32("graphics/pokemon/mamoswine/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PorygonZ[] = INCBIN_U32("graphics/pokemon/porygon_z/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gallade[] = INCBIN_U32("graphics/pokemon/gallade/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Probopass[] = INCBIN_U32("graphics/pokemon/probopass/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dusknoir[] = INCBIN_U32("graphics/pokemon/dusknoir/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Froslass[] = INCBIN_U32("graphics/pokemon/froslass/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Rotom[] = INCBIN_U32("graphics/pokemon/rotom/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Uxie[] = INCBIN_U32("graphics/pokemon/uxie/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mesprit[] = INCBIN_U32("graphics/pokemon/mesprit/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Azelf[] = INCBIN_U32("graphics/pokemon/azelf/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Giratina[] = INCBIN_U32("graphics/pokemon/giratina/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Phione[] = INCBIN_U32("graphics/pokemon/phione/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Shaymin[] = INCBIN_U32("graphics/pokemon/shaymin/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Arceus[] = INCBIN_U32("graphics/pokemon/arceus/shiny.gbapal.lz"); -#endif -#if P_GEN_5_POKEMON == TRUE -const u32 gMonShinyPalette_Victini[] = INCBIN_U32("graphics/pokemon/victini/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Snivy[] = INCBIN_U32("graphics/pokemon/snivy/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Servine[] = INCBIN_U32("graphics/pokemon/servine/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Serperior[] = INCBIN_U32("graphics/pokemon/serperior/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tepig[] = INCBIN_U32("graphics/pokemon/tepig/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pignite[] = INCBIN_U32("graphics/pokemon/pignite/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Emboar[] = INCBIN_U32("graphics/pokemon/emboar/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Oshawott[] = INCBIN_U32("graphics/pokemon/oshawott/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dewott[] = INCBIN_U32("graphics/pokemon/dewott/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Samurott[] = INCBIN_U32("graphics/pokemon/samurott/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Patrat[] = INCBIN_U32("graphics/pokemon/patrat/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Watchog[] = INCBIN_U32("graphics/pokemon/watchog/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lillipup[] = INCBIN_U32("graphics/pokemon/lillipup/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Herdier[] = INCBIN_U32("graphics/pokemon/herdier/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Stoutland[] = INCBIN_U32("graphics/pokemon/stoutland/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Purrloin[] = INCBIN_U32("graphics/pokemon/purrloin/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Liepard[] = INCBIN_U32("graphics/pokemon/liepard/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pansage[] = INCBIN_U32("graphics/pokemon/pansage/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Simisage[] = INCBIN_U32("graphics/pokemon/simisage/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pansear[] = INCBIN_U32("graphics/pokemon/pansear/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Simisear[] = INCBIN_U32("graphics/pokemon/simisear/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Panpour[] = INCBIN_U32("graphics/pokemon/panpour/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Simipour[] = INCBIN_U32("graphics/pokemon/simipour/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Munna[] = INCBIN_U32("graphics/pokemon/munna/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Musharna[] = INCBIN_U32("graphics/pokemon/musharna/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pidove[] = INCBIN_U32("graphics/pokemon/pidove/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tranquill[] = INCBIN_U32("graphics/pokemon/tranquill/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Unfezant[] = INCBIN_U32("graphics/pokemon/unfezant/shiny.gbapal.lz"); -const u32 gMonShinyPalette_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant/shinyf.gbapal.lz"); -const u32 gMonShinyPalette_Blitzle[] = INCBIN_U32("graphics/pokemon/blitzle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zebstrika[] = INCBIN_U32("graphics/pokemon/zebstrika/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Roggenrola[] = INCBIN_U32("graphics/pokemon/roggenrola/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Boldore[] = INCBIN_U32("graphics/pokemon/boldore/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gigalith[] = INCBIN_U32("graphics/pokemon/gigalith/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Woobat[] = INCBIN_U32("graphics/pokemon/woobat/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Swoobat[] = INCBIN_U32("graphics/pokemon/swoobat/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Drilbur[] = INCBIN_U32("graphics/pokemon/drilbur/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Excadrill[] = INCBIN_U32("graphics/pokemon/excadrill/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Audino[] = INCBIN_U32("graphics/pokemon/audino/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Timburr[] = INCBIN_U32("graphics/pokemon/timburr/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gurdurr[] = INCBIN_U32("graphics/pokemon/gurdurr/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Conkeldurr[] = INCBIN_U32("graphics/pokemon/conkeldurr/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tympole[] = INCBIN_U32("graphics/pokemon/tympole/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Palpitoad[] = INCBIN_U32("graphics/pokemon/palpitoad/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Seismitoad[] = INCBIN_U32("graphics/pokemon/seismitoad/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Throh[] = INCBIN_U32("graphics/pokemon/throh/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sawk[] = INCBIN_U32("graphics/pokemon/sawk/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sewaddle[] = INCBIN_U32("graphics/pokemon/sewaddle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Swadloon[] = INCBIN_U32("graphics/pokemon/swadloon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Leavanny[] = INCBIN_U32("graphics/pokemon/leavanny/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Venipede[] = INCBIN_U32("graphics/pokemon/venipede/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Whirlipede[] = INCBIN_U32("graphics/pokemon/whirlipede/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Scolipede[] = INCBIN_U32("graphics/pokemon/scolipede/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Basculin[] = INCBIN_U32("graphics/pokemon/basculin/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Darmanitan[] = INCBIN_U32("graphics/pokemon/darmanitan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Scraggy[] = INCBIN_U32("graphics/pokemon/scraggy/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Scrafty[] = INCBIN_U32("graphics/pokemon/scrafty/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sigilyph[] = INCBIN_U32("graphics/pokemon/sigilyph/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Yamask[] = INCBIN_U32("graphics/pokemon/yamask/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cofagrigus[] = INCBIN_U32("graphics/pokemon/cofagrigus/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tirtouga[] = INCBIN_U32("graphics/pokemon/tirtouga/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Carracosta[] = INCBIN_U32("graphics/pokemon/carracosta/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Archen[] = INCBIN_U32("graphics/pokemon/archen/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Archeops[] = INCBIN_U32("graphics/pokemon/archeops/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Trubbish[] = INCBIN_U32("graphics/pokemon/trubbish/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Garbodor[] = INCBIN_U32("graphics/pokemon/garbodor/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zorua[] = INCBIN_U32("graphics/pokemon/zorua/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zoroark[] = INCBIN_U32("graphics/pokemon/zoroark/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Minccino[] = INCBIN_U32("graphics/pokemon/minccino/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cinccino[] = INCBIN_U32("graphics/pokemon/cinccino/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gothita[] = INCBIN_U32("graphics/pokemon/gothita/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gothorita[] = INCBIN_U32("graphics/pokemon/gothorita/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gothitelle[] = INCBIN_U32("graphics/pokemon/gothitelle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Solosis[] = INCBIN_U32("graphics/pokemon/solosis/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Duosion[] = INCBIN_U32("graphics/pokemon/duosion/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Reuniclus[] = INCBIN_U32("graphics/pokemon/reuniclus/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ducklett[] = INCBIN_U32("graphics/pokemon/ducklett/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Deerling[] = INCBIN_U32("graphics/pokemon/deerling/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sawsbuck[] = INCBIN_U32("graphics/pokemon/sawsbuck/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Foongus[] = INCBIN_U32("graphics/pokemon/foongus/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Amoonguss[] = INCBIN_U32("graphics/pokemon/amoonguss/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Frillish[] = INCBIN_U32("graphics/pokemon/frillish/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FrillishF[] = INCBIN_U32("graphics/pokemon/frillish/shinyf.gbapal.lz"); -const u32 gMonShinyPalette_Jellicent[] = INCBIN_U32("graphics/pokemon/jellicent/shiny.gbapal.lz"); -const u32 gMonShinyPalette_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/shinyf.gbapal.lz"); -const u32 gMonShinyPalette_Alomomola[] = INCBIN_U32("graphics/pokemon/alomomola/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Joltik[] = INCBIN_U32("graphics/pokemon/joltik/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Galvantula[] = INCBIN_U32("graphics/pokemon/galvantula/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ferroseed[] = INCBIN_U32("graphics/pokemon/ferroseed/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ferrothorn[] = INCBIN_U32("graphics/pokemon/ferrothorn/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Klink[] = INCBIN_U32("graphics/pokemon/klink/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Klang[] = INCBIN_U32("graphics/pokemon/klang/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Klinklang[] = INCBIN_U32("graphics/pokemon/klinklang/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tynamo[] = INCBIN_U32("graphics/pokemon/tynamo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Eelektrik[] = INCBIN_U32("graphics/pokemon/eelektrik/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Eelektross[] = INCBIN_U32("graphics/pokemon/eelektross/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Elgyem[] = INCBIN_U32("graphics/pokemon/elgyem/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Beheeyem[] = INCBIN_U32("graphics/pokemon/beheeyem/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Litwick[] = INCBIN_U32("graphics/pokemon/litwick/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lampent[] = INCBIN_U32("graphics/pokemon/lampent/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Chandelure[] = INCBIN_U32("graphics/pokemon/chandelure/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Axew[] = INCBIN_U32("graphics/pokemon/axew/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Fraxure[] = INCBIN_U32("graphics/pokemon/fraxure/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Haxorus[] = INCBIN_U32("graphics/pokemon/haxorus/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cubchoo[] = INCBIN_U32("graphics/pokemon/cubchoo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Beartic[] = INCBIN_U32("graphics/pokemon/beartic/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cryogonal[] = INCBIN_U32("graphics/pokemon/cryogonal/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Shelmet[] = INCBIN_U32("graphics/pokemon/shelmet/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Accelgor[] = INCBIN_U32("graphics/pokemon/accelgor/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Stunfisk[] = INCBIN_U32("graphics/pokemon/stunfisk/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mienfoo[] = INCBIN_U32("graphics/pokemon/mienfoo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mienshao[] = INCBIN_U32("graphics/pokemon/mienshao/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Druddigon[] = INCBIN_U32("graphics/pokemon/druddigon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Golett[] = INCBIN_U32("graphics/pokemon/golett/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Golurk[] = INCBIN_U32("graphics/pokemon/golurk/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pawniard[] = INCBIN_U32("graphics/pokemon/pawniard/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bisharp[] = INCBIN_U32("graphics/pokemon/bisharp/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bouffalant[] = INCBIN_U32("graphics/pokemon/bouffalant/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Rufflet[] = INCBIN_U32("graphics/pokemon/rufflet/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Braviary[] = INCBIN_U32("graphics/pokemon/braviary/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Vullaby[] = INCBIN_U32("graphics/pokemon/vullaby/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mandibuzz[] = INCBIN_U32("graphics/pokemon/mandibuzz/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Heatmor[] = INCBIN_U32("graphics/pokemon/heatmor/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Durant[] = INCBIN_U32("graphics/pokemon/durant/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Deino[] = INCBIN_U32("graphics/pokemon/deino/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zweilous[] = INCBIN_U32("graphics/pokemon/zweilous/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Hydreigon[] = INCBIN_U32("graphics/pokemon/hydreigon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Larvesta[] = INCBIN_U32("graphics/pokemon/larvesta/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tornadus[] = INCBIN_U32("graphics/pokemon/tornadus/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Thundurus[] = INCBIN_U32("graphics/pokemon/thundurus/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Landorus[] = INCBIN_U32("graphics/pokemon/landorus/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Keldeo[] = INCBIN_U32("graphics/pokemon/keldeo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Meloetta[] = INCBIN_U32("graphics/pokemon/meloetta/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/shiny.gbapal.lz"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u32 gMonShinyPalette_Chespin[] = INCBIN_U32("graphics/pokemon/chespin/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Quilladin[] = INCBIN_U32("graphics/pokemon/quilladin/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Chesnaught[] = INCBIN_U32("graphics/pokemon/chesnaught/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Fennekin[] = INCBIN_U32("graphics/pokemon/fennekin/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Braixen[] = INCBIN_U32("graphics/pokemon/braixen/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Delphox[] = INCBIN_U32("graphics/pokemon/delphox/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Froakie[] = INCBIN_U32("graphics/pokemon/froakie/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Frogadier[] = INCBIN_U32("graphics/pokemon/frogadier/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Greninja[] = INCBIN_U32("graphics/pokemon/greninja/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bunnelby[] = INCBIN_U32("graphics/pokemon/bunnelby/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Diggersby[] = INCBIN_U32("graphics/pokemon/diggersby/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Fletchling[] = INCBIN_U32("graphics/pokemon/fletchling/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Vivillon[] = INCBIN_U32("graphics/pokemon/vivillon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Flabebe[] = INCBIN_U32("graphics/pokemon/flabebe/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Floette[] = INCBIN_U32("graphics/pokemon/floette/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Florges[] = INCBIN_U32("graphics/pokemon/florges/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Furfrou[] = INCBIN_U32("graphics/pokemon/furfrou/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Meowstic[] = INCBIN_U32("graphics/pokemon/meowstic/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Aegislash[] = INCBIN_U32("graphics/pokemon/aegislash/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Slurpuff[] = INCBIN_U32("graphics/pokemon/slurpuff/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Inkay[] = INCBIN_U32("graphics/pokemon/inkay/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Malamar[] = INCBIN_U32("graphics/pokemon/malamar/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Binacle[] = INCBIN_U32("graphics/pokemon/binacle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Barbaracle[] = INCBIN_U32("graphics/pokemon/barbaracle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Skrelp[] = INCBIN_U32("graphics/pokemon/skrelp/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dragalge[] = INCBIN_U32("graphics/pokemon/dragalge/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Clauncher[] = INCBIN_U32("graphics/pokemon/clauncher/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Clawitzer[] = INCBIN_U32("graphics/pokemon/clawitzer/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Helioptile[] = INCBIN_U32("graphics/pokemon/helioptile/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Heliolisk[] = INCBIN_U32("graphics/pokemon/heliolisk/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tyrunt[] = INCBIN_U32("graphics/pokemon/tyrunt/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tyrantrum[] = INCBIN_U32("graphics/pokemon/tyrantrum/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Amaura[] = INCBIN_U32("graphics/pokemon/amaura/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Aurorus[] = INCBIN_U32("graphics/pokemon/aurorus/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sylveon[] = INCBIN_U32("graphics/pokemon/sylveon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Hawlucha[] = INCBIN_U32("graphics/pokemon/hawlucha/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dedenne[] = INCBIN_U32("graphics/pokemon/dedenne/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Carbink[] = INCBIN_U32("graphics/pokemon/carbink/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Goomy[] = INCBIN_U32("graphics/pokemon/goomy/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sliggoo[] = INCBIN_U32("graphics/pokemon/sliggoo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pumpkaboo[] = INCBIN_U32("graphics/pokemon/pumpkaboo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gourgeist[] = INCBIN_U32("graphics/pokemon/gourgeist/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Xerneas[] = INCBIN_U32("graphics/pokemon/xerneas/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zygarde[] = INCBIN_U32("graphics/pokemon/zygarde/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Hoopa[] = INCBIN_U32("graphics/pokemon/hoopa/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/shiny.gbapal.lz"); -#endif -#if P_GEN_7_POKEMON == TRUE -const u32 gMonShinyPalette_Rowlet[] = INCBIN_U32("graphics/pokemon/rowlet/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dartrix[] = INCBIN_U32("graphics/pokemon/dartrix/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Decidueye[] = INCBIN_U32("graphics/pokemon/decidueye/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Litten[] = INCBIN_U32("graphics/pokemon/litten/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Popplio[] = INCBIN_U32("graphics/pokemon/popplio/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pikipek[] = INCBIN_U32("graphics/pokemon/pikipek/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Trumbeak[] = INCBIN_U32("graphics/pokemon/trumbeak/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Toucannon[] = INCBIN_U32("graphics/pokemon/toucannon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Yungoos[] = INCBIN_U32("graphics/pokemon/yungoos/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Grubbin[] = INCBIN_U32("graphics/pokemon/grubbin/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Oricorio[] = INCBIN_U32("graphics/pokemon/oricorio/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lycanroc[] = INCBIN_U32("graphics/pokemon/lycanroc/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wishiwashi[] = INCBIN_U32("graphics/pokemon/wishiwashi/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dewpider[] = INCBIN_U32("graphics/pokemon/dewpider/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Araquanid[] = INCBIN_U32("graphics/pokemon/araquanid/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Fomantis[] = INCBIN_U32("graphics/pokemon/fomantis/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Morelull[] = INCBIN_U32("graphics/pokemon/morelull/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Salandit[] = INCBIN_U32("graphics/pokemon/salandit/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Salazzle[] = INCBIN_U32("graphics/pokemon/salazzle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Stufful[] = INCBIN_U32("graphics/pokemon/stufful/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bewear[] = INCBIN_U32("graphics/pokemon/bewear/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bounsweet[] = INCBIN_U32("graphics/pokemon/bounsweet/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Comfey[] = INCBIN_U32("graphics/pokemon/comfey/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Oranguru[] = INCBIN_U32("graphics/pokemon/oranguru/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Passimian[] = INCBIN_U32("graphics/pokemon/passimian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wimpod[] = INCBIN_U32("graphics/pokemon/wimpod/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Golisopod[] = INCBIN_U32("graphics/pokemon/golisopod/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/shiny.gbapal.lz"); -const u32 gMonShinyPalette_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Minior[] = INCBIN_U32("graphics/pokemon/minior/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Komala[] = INCBIN_U32("graphics/pokemon/komala/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Mimikyu[] = INCBIN_U32("graphics/pokemon/mimikyu/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/shiny.gbapal.lz"); -const u32 gMonShinyPalette_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/shiny.gbapal.lz"); -const u32 gMonShinyPalette_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/shiny.gbapal.lz"); -const u32 gMonShinyPalette_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/shiny.gbapal.lz"); -const u32 gMonShinyPalette_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/shiny.gbapal.lz"); -const u32 gMonShinyPalette_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/shiny.gbapal.lz"); -const u32 gMonShinyPalette_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/shiny.gbapal.lz"); -const u32 gMonShinyPalette_TapuFini[] = INCBIN_U32("graphics/pokemon/tapu_fini/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cosmog[] = INCBIN_U32("graphics/pokemon/cosmog/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Nihilego[] = INCBIN_U32("graphics/pokemon/nihilego/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Buzzwole[] = INCBIN_U32("graphics/pokemon/buzzwole/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pheromosa[] = INCBIN_U32("graphics/pokemon/pheromosa/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Xurkitree[] = INCBIN_U32("graphics/pokemon/xurkitree/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Celesteela[] = INCBIN_U32("graphics/pokemon/celesteela/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Kartana[] = INCBIN_U32("graphics/pokemon/kartana/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Guzzlord[] = INCBIN_U32("graphics/pokemon/guzzlord/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Necrozma[] = INCBIN_U32("graphics/pokemon/necrozma/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Magearna[] = INCBIN_U32("graphics/pokemon/magearna/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Marshadow[] = INCBIN_U32("graphics/pokemon/marshadow/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Poipole[] = INCBIN_U32("graphics/pokemon/poipole/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Stakataka[] = INCBIN_U32("graphics/pokemon/stakataka/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Blacephalon[] = INCBIN_U32("graphics/pokemon/blacephalon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zeraora[] = INCBIN_U32("graphics/pokemon/zeraora/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Meltan[] = INCBIN_U32("graphics/pokemon/meltan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/shiny.gbapal.lz"); -#endif -#if P_GEN_8_POKEMON == TRUE -const u32 gMonShinyPalette_Grookey[] = INCBIN_U32("graphics/pokemon/grookey/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Scorbunny[] = INCBIN_U32("graphics/pokemon/scorbunny/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sobble[] = INCBIN_U32("graphics/pokemon/sobble/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Skwovet[] = INCBIN_U32("graphics/pokemon/skwovet/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Rookidee[] = INCBIN_U32("graphics/pokemon/rookidee/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Corvisquire[] = INCBIN_U32("graphics/pokemon/corvisquire/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Corviknight[] = INCBIN_U32("graphics/pokemon/corviknight/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Blipbug[] = INCBIN_U32("graphics/pokemon/blipbug/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Nickit[] = INCBIN_U32("graphics/pokemon/nickit/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Gossifleur[] = INCBIN_U32("graphics/pokemon/gossifleur/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wooloo[] = INCBIN_U32("graphics/pokemon/wooloo/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Chewtle[] = INCBIN_U32("graphics/pokemon/chewtle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Drednaw[] = INCBIN_U32("graphics/pokemon/drednaw/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Yamper[] = INCBIN_U32("graphics/pokemon/yamper/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Rolycoly[] = INCBIN_U32("graphics/pokemon/rolycoly/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Carkol[] = INCBIN_U32("graphics/pokemon/carkol/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Coalossal[] = INCBIN_U32("graphics/pokemon/coalossal/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Applin[] = INCBIN_U32("graphics/pokemon/applin/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Flapple[] = INCBIN_U32("graphics/pokemon/flapple/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Appletun[] = INCBIN_U32("graphics/pokemon/appletun/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Silicobra[] = INCBIN_U32("graphics/pokemon/silicobra/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Toxtricity[] = INCBIN_U32("graphics/pokemon/toxtricity/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sinistea[] = INCBIN_U32("graphics/pokemon/sinistea/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Hatenna[] = INCBIN_U32("graphics/pokemon/hatenna/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Impidimp[] = INCBIN_U32("graphics/pokemon/impidimp/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Obstagoon[] = INCBIN_U32("graphics/pokemon/obstagoon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Perrserker[] = INCBIN_U32("graphics/pokemon/perrserker/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cursola[] = INCBIN_U32("graphics/pokemon/cursola/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sirfetchd[] = INCBIN_U32("graphics/pokemon/sirfetchd/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MrRime[] = INCBIN_U32("graphics/pokemon/mr_rime/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Runerigus[] = INCBIN_U32("graphics/pokemon/runerigus/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Milcery[] = INCBIN_U32("graphics/pokemon/milcery/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Alcremie[] = INCBIN_U32("graphics/pokemon/alcremie/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Falinks[] = INCBIN_U32("graphics/pokemon/falinks/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Snom[] = INCBIN_U32("graphics/pokemon/snom/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Eiscue[] = INCBIN_U32("graphics/pokemon/eiscue/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Indeedee[] = INCBIN_U32("graphics/pokemon/indeedee/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Morpeko[] = INCBIN_U32("graphics/pokemon/morpeko/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Arctozolt[] = INCBIN_U32("graphics/pokemon/arctozolt/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dracovish[] = INCBIN_U32("graphics/pokemon/dracovish/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Arctovish[] = INCBIN_U32("graphics/pokemon/arctovish/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zacian[] = INCBIN_U32("graphics/pokemon/zacian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zamazenta[] = INCBIN_U32("graphics/pokemon/zamazenta/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Urshifu[] = INCBIN_U32("graphics/pokemon/urshifu/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/shiny.gbapal.lz"); -#endif -const u32 gMonShinyPalette_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CharizardMegaY[] = INCBIN_U32("graphics/pokemon/charizard/mega_y/shiny.gbapal.lz"); -const u32 gMonShinyPalette_BlastoiseMega[] = INCBIN_U32("graphics/pokemon/blastoise/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_BeedrillMega[] = INCBIN_U32("graphics/pokemon/beedrill/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PidgeotMega[] = INCBIN_U32("graphics/pokemon/pidgeot/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlakazamMega[] = INCBIN_U32("graphics/pokemon/alakazam/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SlowbroMega[] = INCBIN_U32("graphics/pokemon/slowbro/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GengarMega[] = INCBIN_U32("graphics/pokemon/gengar/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_KangaskhanMega[] = INCBIN_U32("graphics/pokemon/kangaskhan/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PinsirMega[] = INCBIN_U32("graphics/pokemon/pinsir/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GyaradosMega[] = INCBIN_U32("graphics/pokemon/gyarados/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AerodactylMega[] = INCBIN_U32("graphics/pokemon/aerodactyl/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MewtwoMegaX[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_x/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MewtwoMegaY[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_y/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AmpharosMega[] = INCBIN_U32("graphics/pokemon/ampharos/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SteelixMega[] = INCBIN_U32("graphics/pokemon/steelix/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ScizorMega[] = INCBIN_U32("graphics/pokemon/scizor/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_HeracrossMega[] = INCBIN_U32("graphics/pokemon/heracross/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_HoundoomMega[] = INCBIN_U32("graphics/pokemon/houndoom/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_TyranitarMega[] = INCBIN_U32("graphics/pokemon/tyranitar/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SceptileMega[] = INCBIN_U32("graphics/pokemon/sceptile/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_BlazikenMega[] = INCBIN_U32("graphics/pokemon/blaziken/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SwampertMega[] = INCBIN_U32("graphics/pokemon/swampert/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GardevoirMega[] = INCBIN_U32("graphics/pokemon/gardevoir/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SableyeMega[] = INCBIN_U32("graphics/pokemon/sableye/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MawileMega[] = INCBIN_U32("graphics/pokemon/mawile/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AggronMega[] = INCBIN_U32("graphics/pokemon/aggron/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MedichamMega[] = INCBIN_U32("graphics/pokemon/medicham/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ManectricMega[] = INCBIN_U32("graphics/pokemon/manectric/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SharpedoMega[] = INCBIN_U32("graphics/pokemon/sharpedo/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CameruptMega[] = INCBIN_U32("graphics/pokemon/camerupt/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AltariaMega[] = INCBIN_U32("graphics/pokemon/altaria/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_BanetteMega[] = INCBIN_U32("graphics/pokemon/banette/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AbsolMega[] = INCBIN_U32("graphics/pokemon/absol/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GlalieMega[] = INCBIN_U32("graphics/pokemon/glalie/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SalamenceMega[] = INCBIN_U32("graphics/pokemon/salamence/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MetagrossMega[] = INCBIN_U32("graphics/pokemon/metagross/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_LatiasMega[] = INCBIN_U32("graphics/pokemon/latias/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_LatiosMega[] = INCBIN_U32("graphics/pokemon/latios/mega/shiny.gbapal.lz"); -#if P_GEN_4_POKEMON == TRUE -const u32 gMonShinyPalette_LopunnyMega[] = INCBIN_U32("graphics/pokemon/lopunny/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GarchompMega[] = INCBIN_U32("graphics/pokemon/garchomp/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_LucarioMega[] = INCBIN_U32("graphics/pokemon/lucario/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AbomasnowMega[] = INCBIN_U32("graphics/pokemon/abomasnow/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GalladeMega[] = INCBIN_U32("graphics/pokemon/gallade/mega/shiny.gbapal.lz"); -#endif -#if P_GEN_5_POKEMON == TRUE -const u32 gMonShinyPalette_AudinoMega[] = INCBIN_U32("graphics/pokemon/audino/mega/shiny.gbapal.lz"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u32 gMonShinyPalette_DiancieMega[] = INCBIN_U32("graphics/pokemon/diancie/mega/shiny.gbapal.lz"); -#endif -const u32 gMonShinyPalette_RayquazaMega[] = INCBIN_U32("graphics/pokemon/rayquaza/mega/shiny.gbapal.lz"); -const u32 gMonShinyPalette_KyogrePrimal[] = INCBIN_U32("graphics/pokemon/kyogre/primal/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GroudonPrimal[] = INCBIN_U32("graphics/pokemon/groudon/primal/shiny.gbapal.lz"); -const u32 gMonShinyPalette_RattataAlolan[] = INCBIN_U32("graphics/pokemon/rattata/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_RaticateAlolan[] = INCBIN_U32("graphics/pokemon/raticate/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_RaichuAlolan[] = INCBIN_U32("graphics/pokemon/raichu/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SandshrewAlolan[] = INCBIN_U32("graphics/pokemon/sandshrew/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SandslashAlolan[] = INCBIN_U32("graphics/pokemon/sandslash/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VulpixAlolan[] = INCBIN_U32("graphics/pokemon/vulpix/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_NinetalesAlolan[] = INCBIN_U32("graphics/pokemon/ninetales/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DiglettAlolan[] = INCBIN_U32("graphics/pokemon/diglett/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DugtrioAlolan[] = INCBIN_U32("graphics/pokemon/dugtrio/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MeowthAlolan[] = INCBIN_U32("graphics/pokemon/meowth/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PersianAlolan[] = INCBIN_U32("graphics/pokemon/persian/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GeodudeAlolan[] = INCBIN_U32("graphics/pokemon/geodude/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GravelerAlolan[] = INCBIN_U32("graphics/pokemon/graveler/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GolemAlolan[] = INCBIN_U32("graphics/pokemon/golem/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GrimerAlolan[] = INCBIN_U32("graphics/pokemon/grimer/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MukAlolan[] = INCBIN_U32("graphics/pokemon/muk/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ExeggutorAlolan[] = INCBIN_U32("graphics/pokemon/exeggutor/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MarowakAlolan[] = INCBIN_U32("graphics/pokemon/marowak/alolan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MeowthGalarian[] = INCBIN_U32("graphics/pokemon/meowth/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PonytaGalarian[] = INCBIN_U32("graphics/pokemon/ponyta/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_RapidashGalarian[] = INCBIN_U32("graphics/pokemon/rapidash/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SlowpokeGalarian[] = INCBIN_U32("graphics/pokemon/slowpoke/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SlowbroGalarian[] = INCBIN_U32("graphics/pokemon/slowbro/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FarfetchdGalarian[] = INCBIN_U32("graphics/pokemon/farfetchd/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_WeezingGalarian[] = INCBIN_U32("graphics/pokemon/weezing/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MrMimeGalarian[] = INCBIN_U32("graphics/pokemon/mr_mime/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArticunoGalarian[] = INCBIN_U32("graphics/pokemon/articuno/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ZapdosGalarian[] = INCBIN_U32("graphics/pokemon/zapdos/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MoltresGalarian[] = INCBIN_U32("graphics/pokemon/moltres/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SlowkingGalarian[] = INCBIN_U32("graphics/pokemon/slowking/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CorsolaGalarian[] = INCBIN_U32("graphics/pokemon/corsola/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzagoon/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/shiny.gbapal.lz"); -#if P_GEN_5_POKEMON == TRUE -const u32 gMonShinyPalette_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DarmanitanGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/shiny.gbapal.lz"); -#endif -const u32 gMonShinyPalette_GrowlitheHisuian[] = INCBIN_U32("graphics/pokemon/growlithe/hisuian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArcanineHisuian[] = INCBIN_U32("graphics/pokemon/arcanine/hisuian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VoltorbHisuian[] = INCBIN_U32("graphics/pokemon/voltorb/hisuian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ElectrodeHisuian[] = INCBIN_U32("graphics/pokemon/electrode/hisuian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_TyphlosionHisuian[] = INCBIN_U32("graphics/pokemon/typhlosion/hisuian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_QwilfishHisuian[] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SneaselHisuian[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/shiny.gbapal.lz"); -#if P_GEN_5_POKEMON == TRUE -const u32 gMonShinyPalette_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_LilligantHisuian[] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ZoruaHisuian[] = INCBIN_U32("graphics/pokemon/zorua/hisuian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ZoroarkHisuian[] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_BraviaryHisuian[] = INCBIN_U32("graphics/pokemon/braviary/hisuian/shiny.gbapal.lz"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u32 gMonShinyPalette_SliggooHisuian[] = INCBIN_U32("graphics/pokemon/sliggoo/hisuian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GoodraHisuian[] = INCBIN_U32("graphics/pokemon/goodra/hisuian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AvaluggHisuian[] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/shiny.gbapal.lz"); -#endif -#if P_GEN_7_POKEMON == TRUE -const u32 gMonShinyPalette_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/shiny.gbapal.lz"); -#endif -const u32 gMonShinyPalette_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PikachuBelle[] = INCBIN_U32("graphics/pokemon/pikachu/belle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PikachuPopStar[] = INCBIN_U32("graphics/pokemon/pikachu/pop_star/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PikachuPhD[] = INCBIN_U32("graphics/pokemon/pikachu/ph_d/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PikachuLibre[] = INCBIN_U32("graphics/pokemon/pikachu/libre/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PikachuOriginalCap[] = INCBIN_U32("graphics/pokemon/pikachu/original_cap/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PikachuHoennCap[] = INCBIN_U32("graphics/pokemon/pikachu/hoenn_cap/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PikachuSinnohCap[] = INCBIN_U32("graphics/pokemon/pikachu/sinnoh_cap/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PikachuUnovaCap[] = INCBIN_U32("graphics/pokemon/pikachu/unova_cap/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PikachuKalosCap[] = INCBIN_U32("graphics/pokemon/pikachu/kalos_cap/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PikachuAlolaCap[] = INCBIN_U32("graphics/pokemon/pikachu/alola_cap/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PikachuPartnerCap[] = INCBIN_U32("graphics/pokemon/pikachu/partner_cap/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PikachuWorldCap[] = INCBIN_U32("graphics/pokemon/pikachu/world_cap/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PichuSpikyEared[] = INCBIN_U32("graphics/pokemon/pichu/spiky_eared/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CastformSunny[] = INCBIN_U32("graphics/pokemon/castform/sunny/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CastformRainy[] = INCBIN_U32("graphics/pokemon/castform/rainy/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CastformSnowy[] = INCBIN_U32("graphics/pokemon/castform/snowy/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/attack/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/defense/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DeoxysSpeed[] = INCBIN_U32("graphics/pokemon/deoxys/speed/shiny.gbapal.lz"); -#if P_GEN_4_POKEMON == TRUE -const u32 gMonShinyPalette_BurmySandyCloak[] = INCBIN_U32("graphics/pokemon/burmy/sandy_cloak/shiny.gbapal.lz"); -const u32 gMonShinyPalette_BurmyTrashCloak[] = INCBIN_U32("graphics/pokemon/burmy/trash_cloak/shiny.gbapal.lz"); -const u32 gMonShinyPalette_WormadamSandyCloak[] = INCBIN_U32("graphics/pokemon/wormadam/sandy_cloak/shiny.gbapal.lz"); -const u32 gMonShinyPalette_WormadamTrashCloak[] = INCBIN_U32("graphics/pokemon/wormadam/trash_cloak/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CherrimSunshine[] = INCBIN_U32("graphics/pokemon/cherrim/sunshine/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ShellosEastSea[] = INCBIN_U32("graphics/pokemon/shellos/east_sea/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GastrodonEastSea[] = INCBIN_U32("graphics/pokemon/gastrodon/east_sea/shiny.gbapal.lz"); -const u32 gMonShinyPalette_RotomHeat[] = INCBIN_U32("graphics/pokemon/rotom/heat/shiny.gbapal.lz"); -const u32 gMonShinyPalette_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash/shiny.gbapal.lz"); -const u32 gMonShinyPalette_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/shiny.gbapal.lz"); -const u32 gMonShinyPalette_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/shiny.gbapal.lz"); -const u32 gMonShinyPalette_RotomMow[] = INCBIN_U32("graphics/pokemon/rotom/mow/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DialgaOrigin[] = INCBIN_U32("graphics/pokemon/dialga/origin/shiny.gbapal.lz"); -const u32 gMonShinyPalette_PalkiaOrigin[] = INCBIN_U32("graphics/pokemon/palkia/origin/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArceusFighting[] = INCBIN_U32("graphics/pokemon/arceus/fighting/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArceusFlying[] = INCBIN_U32("graphics/pokemon/arceus/flying/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArceusPoison[] = INCBIN_U32("graphics/pokemon/arceus/poison/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArceusGround[] = INCBIN_U32("graphics/pokemon/arceus/ground/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArceusRock[] = INCBIN_U32("graphics/pokemon/arceus/rock/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArceusBug[] = INCBIN_U32("graphics/pokemon/arceus/bug/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArceusGhost[] = INCBIN_U32("graphics/pokemon/arceus/ghost/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArceusSteel[] = INCBIN_U32("graphics/pokemon/arceus/steel/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArceusFire[] = INCBIN_U32("graphics/pokemon/arceus/fire/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArceusWater[] = INCBIN_U32("graphics/pokemon/arceus/water/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArceusGrass[] = INCBIN_U32("graphics/pokemon/arceus/grass/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArceusElectric[] = INCBIN_U32("graphics/pokemon/arceus/electric/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArceusPsychic[] = INCBIN_U32("graphics/pokemon/arceus/psychic/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArceusIce[] = INCBIN_U32("graphics/pokemon/arceus/ice/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArceusDragon[] = INCBIN_U32("graphics/pokemon/arceus/dragon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArceusDark[] = INCBIN_U32("graphics/pokemon/arceus/dark/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ArceusFairy[] = INCBIN_U32("graphics/pokemon/arceus/fairy/shiny.gbapal.lz"); -#endif -#if P_GEN_5_POKEMON == TRUE -const u32 gMonShinyPalette_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/shiny.gbapal.lz"); -const u32 gMonShinyPalette_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DarmanitanZenModeGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DeerlingSummer[] = INCBIN_U32("graphics/pokemon/deerling/summer/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DeerlingAutumn[] = INCBIN_U32("graphics/pokemon/deerling/autumn/shiny.gbapal.lz"); -const u32 gMonShinyPalette_DeerlingWinter[] = INCBIN_U32("graphics/pokemon/deerling/winter/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/shiny.gbapal.lz"); -const u32 gMonShinyPalette_TornadusTherian[] = INCBIN_U32("graphics/pokemon/tornadus/therian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ThundurusTherian[] = INCBIN_U32("graphics/pokemon/thundurus/therian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_LandorusTherian[] = INCBIN_U32("graphics/pokemon/landorus/therian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_KyuremWhite[] = INCBIN_U32("graphics/pokemon/kyurem/white/shiny.gbapal.lz"); -const u32 gMonShinyPalette_KyuremBlack[] = INCBIN_U32("graphics/pokemon/kyurem/black/shiny.gbapal.lz"); -const u32 gMonShinyPalette_KeldeoResolute[] = INCBIN_U32("graphics/pokemon/keldeo/resolute/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MeloettaPirouette[] = INCBIN_U32("graphics/pokemon/meloetta/pirouette/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GenesectDouseDrive[] = INCBIN_U32("graphics/pokemon/genesect/douse_drive/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GenesectShockDrive[] = INCBIN_U32("graphics/pokemon/genesect/shock_drive/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GenesectBurnDrive[] = INCBIN_U32("graphics/pokemon/genesect/burn_drive/shiny.gbapal.lz"); -const u32 gMonShinyPalette_GenesectChillDrive[] = INCBIN_U32("graphics/pokemon/genesect/chill_drive/shiny.gbapal.lz"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u32 gMonShinyPalette_GreninjaAsh[] = INCBIN_U32("graphics/pokemon/greninja/ash/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonPolar[] = INCBIN_U32("graphics/pokemon/vivillon/polar/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonTundra[] = INCBIN_U32("graphics/pokemon/vivillon/tundra/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonContinental[] = INCBIN_U32("graphics/pokemon/vivillon/continental/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonGarden[] = INCBIN_U32("graphics/pokemon/vivillon/garden/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonElegant[] = INCBIN_U32("graphics/pokemon/vivillon/elegant/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonMeadow[] = INCBIN_U32("graphics/pokemon/vivillon/meadow/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonModern[] = INCBIN_U32("graphics/pokemon/vivillon/modern/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonMarine[] = INCBIN_U32("graphics/pokemon/vivillon/marine/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonArchipelago[] = INCBIN_U32("graphics/pokemon/vivillon/archipelago/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonHighPlains[] = INCBIN_U32("graphics/pokemon/vivillon/high_plains/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonSandstorm[] = INCBIN_U32("graphics/pokemon/vivillon/sandstorm/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonRiver[] = INCBIN_U32("graphics/pokemon/vivillon/river/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonMonsoon[] = INCBIN_U32("graphics/pokemon/vivillon/monsoon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonSavanna[] = INCBIN_U32("graphics/pokemon/vivillon/savanna/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonSun[] = INCBIN_U32("graphics/pokemon/vivillon/sun/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonOcean[] = INCBIN_U32("graphics/pokemon/vivillon/ocean/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonJungle[] = INCBIN_U32("graphics/pokemon/vivillon/jungle/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonFancy[] = INCBIN_U32("graphics/pokemon/vivillon/fancy/shiny.gbapal.lz"); -const u32 gMonShinyPalette_VivillonPokeBall[] = INCBIN_U32("graphics/pokemon/vivillon/poke_ball/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FlabebeYellowFlower[] = INCBIN_U32("graphics/pokemon/flabebe/yellow_flower/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FlabebeOrangeFlower[] = INCBIN_U32("graphics/pokemon/flabebe/orange_flower/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FlabebeBlueFlower[] = INCBIN_U32("graphics/pokemon/flabebe/blue_flower/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FlabebeWhiteFlower[] = INCBIN_U32("graphics/pokemon/flabebe/white_flower/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FloetteYellowFlower[] = INCBIN_U32("graphics/pokemon/floette/yellow_flower/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FloetteOrangeFlower[] = INCBIN_U32("graphics/pokemon/floette/orange_flower/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FloetteBlueFlower[] = INCBIN_U32("graphics/pokemon/floette/blue_flower/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FloetteWhiteFlower[] = INCBIN_U32("graphics/pokemon/floette/white_flower/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FloetteEternalFlower[] = INCBIN_U32("graphics/pokemon/floette/eternal_flower/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FlorgesYellowFlower[] = INCBIN_U32("graphics/pokemon/florges/yellow_flower/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FlorgesOrangeFlower[] = INCBIN_U32("graphics/pokemon/florges/orange_flower/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FlorgesBlueFlower[] = INCBIN_U32("graphics/pokemon/florges/blue_flower/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FlorgesWhiteFlower[] = INCBIN_U32("graphics/pokemon/florges/white_flower/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FurfrouHeartTrim[] = INCBIN_U32("graphics/pokemon/furfrou/heart_trim/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FurfrouStarTrim[] = INCBIN_U32("graphics/pokemon/furfrou/star_trim/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FurfrouDiamondTrim[] = INCBIN_U32("graphics/pokemon/furfrou/diamond_trim/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FurfrouDebutanteTrim[] = INCBIN_U32("graphics/pokemon/furfrou/debutante_trim/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FurfrouMatronTrim[] = INCBIN_U32("graphics/pokemon/furfrou/matron_trim/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FurfrouDandyTrim[] = INCBIN_U32("graphics/pokemon/furfrou/dandy_trim/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FurfrouLaReineTrim[] = INCBIN_U32("graphics/pokemon/furfrou/la_reine_trim/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FurfrouKabukiTrim[] = INCBIN_U32("graphics/pokemon/furfrou/kabuki_trim/shiny.gbapal.lz"); -const u32 gMonShinyPalette_FurfrouPharaohTrim[] = INCBIN_U32("graphics/pokemon/furfrou/pharaoh_trim/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MeowsticFemale[] = INCBIN_U32("graphics/pokemon/meowstic/female/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AegislashBlade[] = INCBIN_U32("graphics/pokemon/aegislash/blade/shiny.gbapal.lz"); -const u32 gMonShinyPalette_XerneasActive[] = INCBIN_U32("graphics/pokemon/xerneas/active/shiny.gbapal.lz"); -const u32 gMonShinyPalette_Zygarde10[] = INCBIN_U32("graphics/pokemon/zygarde/10_percent/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ZygardeComplete[] = INCBIN_U32("graphics/pokemon/zygarde/complete/shiny.gbapal.lz"); -const u32 gMonShinyPalette_HoopaUnbound[] = INCBIN_U32("graphics/pokemon/hoopa/unbound/shiny.gbapal.lz"); -#endif -#if P_GEN_7_POKEMON == TRUE -const u32 gMonShinyPalette_OricorioPomPom[] = INCBIN_U32("graphics/pokemon/oricorio/pom_pom/shiny.gbapal.lz"); -const u32 gMonShinyPalette_OricorioPau[] = INCBIN_U32("graphics/pokemon/oricorio/pau/shiny.gbapal.lz"); -const u32 gMonShinyPalette_OricorioSensu[] = INCBIN_U32("graphics/pokemon/oricorio/sensu/shiny.gbapal.lz"); -const u32 gMonShinyPalette_LycanrocMidnight[] = INCBIN_U32("graphics/pokemon/lycanroc/midnight/shiny.gbapal.lz"); -const u32 gMonShinyPalette_LycanrocDusk[] = INCBIN_U32("graphics/pokemon/lycanroc/dusk/shiny.gbapal.lz"); -const u32 gMonShinyPalette_WishiwashiSchool[] = INCBIN_U32("graphics/pokemon/wishiwashi/school/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SilvallyFighting[] = INCBIN_U32("graphics/pokemon/silvally/fighting/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SilvallyFlying[] = INCBIN_U32("graphics/pokemon/silvally/flying/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SilvallyPoison[] = INCBIN_U32("graphics/pokemon/silvally/poison/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SilvallyGround[] = INCBIN_U32("graphics/pokemon/silvally/ground/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SilvallyRock[] = INCBIN_U32("graphics/pokemon/silvally/rock/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SilvallyBug[] = INCBIN_U32("graphics/pokemon/silvally/bug/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SilvallyGhost[] = INCBIN_U32("graphics/pokemon/silvally/ghost/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SilvallySteel[] = INCBIN_U32("graphics/pokemon/silvally/steel/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SilvallyFire[] = INCBIN_U32("graphics/pokemon/silvally/fire/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SilvallyWater[] = INCBIN_U32("graphics/pokemon/silvally/water/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SilvallyGrass[] = INCBIN_U32("graphics/pokemon/silvally/grass/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SilvallyElectric[] = INCBIN_U32("graphics/pokemon/silvally/electric/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SilvallyPsychic[] = INCBIN_U32("graphics/pokemon/silvally/psychic/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SilvallyIce[] = INCBIN_U32("graphics/pokemon/silvally/ice/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SilvallyDragon[] = INCBIN_U32("graphics/pokemon/silvally/dragon/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SilvallyDark[] = INCBIN_U32("graphics/pokemon/silvally/dark/shiny.gbapal.lz"); -const u32 gMonShinyPalette_SilvallyFairy[] = INCBIN_U32("graphics/pokemon/silvally/fairy/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MiniorCore[] = INCBIN_U32("graphics/pokemon/minior/core/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MimikyuBusted[] = INCBIN_U32("graphics/pokemon/mimikyu/busted/shiny.gbapal.lz"); -const u32 gMonShinyPalette_NecrozmaDuskMane[] = INCBIN_U32("graphics/pokemon/necrozma/dusk_mane/shiny.gbapal.lz"); -const u32 gMonShinyPalette_NecrozmaDawnWings[] = INCBIN_U32("graphics/pokemon/necrozma/dawn_wings/shiny.gbapal.lz"); -const u32 gMonShinyPalette_NecrozmaUltra[] = INCBIN_U32("graphics/pokemon/necrozma/ultra/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/magearna/original_color/shiny.gbapal.lz"); -#endif -#if P_GEN_8_POKEMON == TRUE -const u32 gMonShinyPalette_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_cream/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/matcha_cream/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/mint_cream/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/lemon_cream/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/salted_cream/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ruby_swirl/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/caramel_swirl/shiny.gbapal.lz"); -const u32 gMonShinyPalette_AlcremieRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/rainbow_swirl/shiny.gbapal.lz"); -const u32 gMonShinyPalette_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/shiny.gbapal.lz"); -const u32 gMonShinyPalette_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/shiny.gbapal.lz"); -const u32 gMonShinyPalette_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ZacianCrownedSword[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ZamazentaCrownedShield[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/shiny.gbapal.lz"); -const u32 gMonShinyPalette_EternatusEternamax[] = INCBIN_U32("graphics/pokemon/eternatus/eternamax/shiny.gbapal.lz"); -const u32 gMonShinyPalette_UrshifuRapidStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style/shiny.gbapal.lz"); -const u32 gMonShinyPalette_ZarudeDada[] = INCBIN_U32("graphics/pokemon/zarude/dada/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ice_rider/shiny.gbapal.lz"); -const u32 gMonShinyPalette_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/shiny.gbapal.lz"); -const u32 gMonShinyPalette_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/shiny.gbapal.lz"); -const u32 gMonShinyPalette_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/shiny.gbapal.lz"); -#endif - const u8 gMonIcon_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mark/icon.4bpp"); -const u8 gMonIcon_Bulbasaur[] = INCBIN_U8("graphics/pokemon/bulbasaur/icon.4bpp"); -const u8 gMonIcon_Ivysaur[] = INCBIN_U8("graphics/pokemon/ivysaur/icon.4bpp"); -const u8 gMonIcon_Venusaur[] = INCBIN_U8("graphics/pokemon/venusaur/icon.4bpp"); -const u8 gMonIcon_Charmander[] = INCBIN_U8("graphics/pokemon/charmander/icon.4bpp"); -const u8 gMonIcon_Charmeleon[] = INCBIN_U8("graphics/pokemon/charmeleon/icon.4bpp"); -const u8 gMonIcon_Charizard[] = INCBIN_U8("graphics/pokemon/charizard/icon.4bpp"); -const u8 gMonIcon_Squirtle[] = INCBIN_U8("graphics/pokemon/squirtle/icon.4bpp"); -const u8 gMonIcon_Wartortle[] = INCBIN_U8("graphics/pokemon/wartortle/icon.4bpp"); -const u8 gMonIcon_Blastoise[] = INCBIN_U8("graphics/pokemon/blastoise/icon.4bpp"); -const u8 gMonIcon_Caterpie[] = INCBIN_U8("graphics/pokemon/caterpie/icon.4bpp"); -const u8 gMonIcon_Metapod[] = INCBIN_U8( "graphics/pokemon/metapod/icon.4bpp"); -const u8 gMonIcon_Butterfree[] = INCBIN_U8("graphics/pokemon/butterfree/icon.4bpp"); -const u8 gMonIcon_Weedle[] = INCBIN_U8("graphics/pokemon/weedle/icon.4bpp"); -const u8 gMonIcon_Kakuna[] = INCBIN_U8("graphics/pokemon/kakuna/icon.4bpp"); -const u8 gMonIcon_Beedrill[] = INCBIN_U8("graphics/pokemon/beedrill/icon.4bpp"); -const u8 gMonIcon_Pidgey[] = INCBIN_U8("graphics/pokemon/pidgey/icon.4bpp"); -const u8 gMonIcon_Pidgeotto[] = INCBIN_U8("graphics/pokemon/pidgeotto/icon.4bpp"); -const u8 gMonIcon_Pidgeot[] = INCBIN_U8("graphics/pokemon/pidgeot/icon.4bpp"); -const u8 gMonIcon_Rattata[] = INCBIN_U8("graphics/pokemon/rattata/icon.4bpp"); -const u8 gMonIcon_Raticate[] = INCBIN_U8("graphics/pokemon/raticate/icon.4bpp"); -const u8 gMonIcon_Spearow[] = INCBIN_U8("graphics/pokemon/spearow/icon.4bpp"); -const u8 gMonIcon_Fearow[] = INCBIN_U8("graphics/pokemon/fearow/icon.4bpp"); -const u8 gMonIcon_Ekans[] = INCBIN_U8("graphics/pokemon/ekans/icon.4bpp"); -const u8 gMonIcon_Arbok[] = INCBIN_U8("graphics/pokemon/arbok/icon.4bpp"); -const u8 gMonIcon_Pikachu[] = INCBIN_U8("graphics/pokemon/pikachu/icon.4bpp"); -const u8 gMonIcon_Raichu[] = INCBIN_U8("graphics/pokemon/raichu/icon.4bpp"); -const u8 gMonIcon_Sandshrew[] = INCBIN_U8("graphics/pokemon/sandshrew/icon.4bpp"); -const u8 gMonIcon_Sandslash[] = INCBIN_U8("graphics/pokemon/sandslash/icon.4bpp"); -const u8 gMonIcon_NidoranF[] = INCBIN_U8("graphics/pokemon/nidoran_f/icon.4bpp"); -const u8 gMonIcon_Nidorina[] = INCBIN_U8("graphics/pokemon/nidorina/icon.4bpp"); -const u8 gMonIcon_Nidoqueen[] = INCBIN_U8("graphics/pokemon/nidoqueen/icon.4bpp"); -const u8 gMonIcon_NidoranM[] = INCBIN_U8("graphics/pokemon/nidoran_m/icon.4bpp"); -const u8 gMonIcon_Nidorino[] = INCBIN_U8("graphics/pokemon/nidorino/icon.4bpp"); -const u8 gMonIcon_Nidoking[] = INCBIN_U8("graphics/pokemon/nidoking/icon.4bpp"); -const u8 gMonIcon_Clefairy[] = INCBIN_U8("graphics/pokemon/clefairy/icon.4bpp"); -const u8 gMonIcon_Clefable[] = INCBIN_U8("graphics/pokemon/clefable/icon.4bpp"); -const u8 gMonIcon_Vulpix[] = INCBIN_U8("graphics/pokemon/vulpix/icon.4bpp"); -const u8 gMonIcon_Ninetales[] = INCBIN_U8("graphics/pokemon/ninetales/icon.4bpp"); -const u8 gMonIcon_Jigglypuff[] = INCBIN_U8("graphics/pokemon/jigglypuff/icon.4bpp"); -const u8 gMonIcon_Wigglytuff[] = INCBIN_U8("graphics/pokemon/wigglytuff/icon.4bpp"); -const u8 gMonIcon_Zubat[] = INCBIN_U8("graphics/pokemon/zubat/icon.4bpp"); -const u8 gMonIcon_Golbat[] = INCBIN_U8("graphics/pokemon/golbat/icon.4bpp"); -const u8 gMonIcon_Oddish[] = INCBIN_U8("graphics/pokemon/oddish/icon.4bpp"); -const u8 gMonIcon_Gloom[] = INCBIN_U8("graphics/pokemon/gloom/icon.4bpp"); -const u8 gMonIcon_Vileplume[] = INCBIN_U8("graphics/pokemon/vileplume/icon.4bpp"); -const u8 gMonIcon_Paras[] = INCBIN_U8("graphics/pokemon/paras/icon.4bpp"); -const u8 gMonIcon_Parasect[] = INCBIN_U8("graphics/pokemon/parasect/icon.4bpp"); -const u8 gMonIcon_Venonat[] = INCBIN_U8("graphics/pokemon/venonat/icon.4bpp"); -const u8 gMonIcon_Venomoth[] = INCBIN_U8("graphics/pokemon/venomoth/icon.4bpp"); -const u8 gMonIcon_Diglett[] = INCBIN_U8("graphics/pokemon/diglett/icon.4bpp"); -const u8 gMonIcon_Dugtrio[] = INCBIN_U8("graphics/pokemon/dugtrio/icon.4bpp"); -const u8 gMonIcon_Meowth[] = INCBIN_U8("graphics/pokemon/meowth/icon.4bpp"); -const u8 gMonIcon_Persian[] = INCBIN_U8("graphics/pokemon/persian/icon.4bpp"); -const u8 gMonIcon_Psyduck[] = INCBIN_U8("graphics/pokemon/psyduck/icon.4bpp"); -const u8 gMonIcon_Golduck[] = INCBIN_U8("graphics/pokemon/golduck/icon.4bpp"); -const u8 gMonIcon_Mankey[] = INCBIN_U8("graphics/pokemon/mankey/icon.4bpp"); -const u8 gMonIcon_Primeape[] = INCBIN_U8("graphics/pokemon/primeape/icon.4bpp"); -const u8 gMonIcon_Growlithe[] = INCBIN_U8("graphics/pokemon/growlithe/icon.4bpp"); -const u8 gMonIcon_Arcanine[] = INCBIN_U8("graphics/pokemon/arcanine/icon.4bpp"); -const u8 gMonIcon_Poliwag[] = INCBIN_U8("graphics/pokemon/poliwag/icon.4bpp"); -const u8 gMonIcon_Poliwhirl[] = INCBIN_U8("graphics/pokemon/poliwhirl/icon.4bpp"); -const u8 gMonIcon_Poliwrath[] = INCBIN_U8("graphics/pokemon/poliwrath/icon.4bpp"); -const u8 gMonIcon_Abra[] = INCBIN_U8("graphics/pokemon/abra/icon.4bpp"); -const u8 gMonIcon_Kadabra[] = INCBIN_U8("graphics/pokemon/kadabra/icon.4bpp"); -const u8 gMonIcon_Alakazam[] = INCBIN_U8("graphics/pokemon/alakazam/icon.4bpp"); -const u8 gMonIcon_Machop[] = INCBIN_U8("graphics/pokemon/machop/icon.4bpp"); -const u8 gMonIcon_Machoke[] = INCBIN_U8("graphics/pokemon/machoke/icon.4bpp"); -const u8 gMonIcon_Machamp[] = INCBIN_U8("graphics/pokemon/machamp/icon.4bpp"); -const u8 gMonIcon_Bellsprout[] = INCBIN_U8("graphics/pokemon/bellsprout/icon.4bpp"); -const u8 gMonIcon_Weepinbell[] = INCBIN_U8("graphics/pokemon/weepinbell/icon.4bpp"); -const u8 gMonIcon_Victreebel[] = INCBIN_U8("graphics/pokemon/victreebel/icon.4bpp"); -const u8 gMonIcon_Tentacool[] = INCBIN_U8("graphics/pokemon/tentacool/icon.4bpp"); -const u8 gMonIcon_Tentacruel[] = INCBIN_U8("graphics/pokemon/tentacruel/icon.4bpp"); -const u8 gMonIcon_Geodude[] = INCBIN_U8("graphics/pokemon/geodude/icon.4bpp"); -const u8 gMonIcon_Graveler[] = INCBIN_U8("graphics/pokemon/graveler/icon.4bpp"); -const u8 gMonIcon_Golem[] = INCBIN_U8("graphics/pokemon/golem/icon.4bpp"); -const u8 gMonIcon_Ponyta[] = INCBIN_U8("graphics/pokemon/ponyta/icon.4bpp"); -const u8 gMonIcon_Rapidash[] = INCBIN_U8("graphics/pokemon/rapidash/icon.4bpp"); -const u8 gMonIcon_Slowpoke[] = INCBIN_U8("graphics/pokemon/slowpoke/icon.4bpp"); -const u8 gMonIcon_Slowbro[] = INCBIN_U8("graphics/pokemon/slowbro/icon.4bpp"); -const u8 gMonIcon_Magnemite[] = INCBIN_U8("graphics/pokemon/magnemite/icon.4bpp"); -const u8 gMonIcon_Magneton[] = INCBIN_U8("graphics/pokemon/magneton/icon.4bpp"); -const u8 gMonIcon_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetchd/icon.4bpp"); -const u8 gMonIcon_Doduo[] = INCBIN_U8("graphics/pokemon/doduo/icon.4bpp"); -const u8 gMonIcon_Dodrio[] = INCBIN_U8("graphics/pokemon/dodrio/icon.4bpp"); -const u8 gMonIcon_Seel[] = INCBIN_U8("graphics/pokemon/seel/icon.4bpp"); -const u8 gMonIcon_Dewgong[] = INCBIN_U8("graphics/pokemon/dewgong/icon.4bpp"); -const u8 gMonIcon_Grimer[] = INCBIN_U8("graphics/pokemon/grimer/icon.4bpp"); -const u8 gMonIcon_Muk[] = INCBIN_U8("graphics/pokemon/muk/icon.4bpp"); -const u8 gMonIcon_Shellder[] = INCBIN_U8("graphics/pokemon/shellder/icon.4bpp"); -const u8 gMonIcon_Cloyster[] = INCBIN_U8("graphics/pokemon/cloyster/icon.4bpp"); -const u8 gMonIcon_Gastly[] = INCBIN_U8("graphics/pokemon/gastly/icon.4bpp"); -const u8 gMonIcon_Haunter[] = INCBIN_U8("graphics/pokemon/haunter/icon.4bpp"); -const u8 gMonIcon_Gengar[] = INCBIN_U8("graphics/pokemon/gengar/icon.4bpp"); -const u8 gMonIcon_Onix[] = INCBIN_U8("graphics/pokemon/onix/icon.4bpp"); -const u8 gMonIcon_Drowzee[] = INCBIN_U8("graphics/pokemon/drowzee/icon.4bpp"); -const u8 gMonIcon_Hypno[] = INCBIN_U8("graphics/pokemon/hypno/icon.4bpp"); -const u8 gMonIcon_Krabby[] = INCBIN_U8("graphics/pokemon/krabby/icon.4bpp"); -const u8 gMonIcon_Kingler[] = INCBIN_U8("graphics/pokemon/kingler/icon.4bpp"); -const u8 gMonIcon_Voltorb[] = INCBIN_U8("graphics/pokemon/voltorb/icon.4bpp"); -const u8 gMonIcon_Electrode[] = INCBIN_U8("graphics/pokemon/electrode/icon.4bpp"); -const u8 gMonIcon_Exeggcute[] = INCBIN_U8("graphics/pokemon/exeggcute/icon.4bpp"); -const u8 gMonIcon_Exeggutor[] = INCBIN_U8("graphics/pokemon/exeggutor/icon.4bpp"); -const u8 gMonIcon_Cubone[] = INCBIN_U8("graphics/pokemon/cubone/icon.4bpp"); -const u8 gMonIcon_Marowak[] = INCBIN_U8("graphics/pokemon/marowak/icon.4bpp"); -const u8 gMonIcon_Hitmonlee[] = INCBIN_U8("graphics/pokemon/hitmonlee/icon.4bpp"); -const u8 gMonIcon_Hitmonchan[] = INCBIN_U8("graphics/pokemon/hitmonchan/icon.4bpp"); -const u8 gMonIcon_Lickitung[] = INCBIN_U8("graphics/pokemon/lickitung/icon.4bpp"); -const u8 gMonIcon_Koffing[] = INCBIN_U8("graphics/pokemon/koffing/icon.4bpp"); -const u8 gMonIcon_Weezing[] = INCBIN_U8("graphics/pokemon/weezing/icon.4bpp"); -const u8 gMonIcon_Rhyhorn[] = INCBIN_U8("graphics/pokemon/rhyhorn/icon.4bpp"); -const u8 gMonIcon_Rhydon[] = INCBIN_U8("graphics/pokemon/rhydon/icon.4bpp"); -const u8 gMonIcon_Chansey[] = INCBIN_U8("graphics/pokemon/chansey/icon.4bpp"); -const u8 gMonIcon_Tangela[] = INCBIN_U8("graphics/pokemon/tangela/icon.4bpp"); -const u8 gMonIcon_Kangaskhan[] = INCBIN_U8("graphics/pokemon/kangaskhan/icon.4bpp"); -const u8 gMonIcon_Horsea[] = INCBIN_U8("graphics/pokemon/horsea/icon.4bpp"); -const u8 gMonIcon_Seadra[] = INCBIN_U8("graphics/pokemon/seadra/icon.4bpp"); -const u8 gMonIcon_Goldeen[] = INCBIN_U8("graphics/pokemon/goldeen/icon.4bpp"); -const u8 gMonIcon_Seaking[] = INCBIN_U8("graphics/pokemon/seaking/icon.4bpp"); -const u8 gMonIcon_Staryu[] = INCBIN_U8("graphics/pokemon/staryu/icon.4bpp"); -const u8 gMonIcon_Starmie[] = INCBIN_U8("graphics/pokemon/starmie/icon.4bpp"); -const u8 gMonIcon_MrMime[] = INCBIN_U8("graphics/pokemon/mr_mime/icon.4bpp"); -const u8 gMonIcon_Scyther[] = INCBIN_U8("graphics/pokemon/scyther/icon.4bpp"); -const u8 gMonIcon_Jynx[] = INCBIN_U8("graphics/pokemon/jynx/icon.4bpp"); -const u8 gMonIcon_Electabuzz[] = INCBIN_U8("graphics/pokemon/electabuzz/icon.4bpp"); -const u8 gMonIcon_Magmar[] = INCBIN_U8("graphics/pokemon/magmar/icon.4bpp"); -const u8 gMonIcon_Pinsir[] = INCBIN_U8("graphics/pokemon/pinsir/icon.4bpp"); -const u8 gMonIcon_Tauros[] = INCBIN_U8("graphics/pokemon/tauros/icon.4bpp"); -const u8 gMonIcon_Magikarp[] = INCBIN_U8("graphics/pokemon/magikarp/icon.4bpp"); -const u8 gMonIcon_Gyarados[] = INCBIN_U8("graphics/pokemon/gyarados/icon.4bpp"); -const u8 gMonIcon_Lapras[] = INCBIN_U8("graphics/pokemon/lapras/icon.4bpp"); -const u8 gMonIcon_Ditto[] = INCBIN_U8("graphics/pokemon/ditto/icon.4bpp"); -const u8 gMonIcon_Eevee[] = INCBIN_U8("graphics/pokemon/eevee/icon.4bpp"); -const u8 gMonIcon_Vaporeon[] = INCBIN_U8("graphics/pokemon/vaporeon/icon.4bpp"); -const u8 gMonIcon_Jolteon[] = INCBIN_U8("graphics/pokemon/jolteon/icon.4bpp"); -const u8 gMonIcon_Flareon[] = INCBIN_U8("graphics/pokemon/flareon/icon.4bpp"); -const u8 gMonIcon_Porygon[] = INCBIN_U8("graphics/pokemon/porygon/icon.4bpp"); -const u8 gMonIcon_Omanyte[] = INCBIN_U8("graphics/pokemon/omanyte/icon.4bpp"); -const u8 gMonIcon_Omastar[] = INCBIN_U8("graphics/pokemon/omastar/icon.4bpp"); -const u8 gMonIcon_Kabuto[] = INCBIN_U8("graphics/pokemon/kabuto/icon.4bpp"); -const u8 gMonIcon_Kabutops[] = INCBIN_U8("graphics/pokemon/kabutops/icon.4bpp"); -const u8 gMonIcon_Aerodactyl[] = INCBIN_U8("graphics/pokemon/aerodactyl/icon.4bpp"); -const u8 gMonIcon_Snorlax[] = INCBIN_U8("graphics/pokemon/snorlax/icon.4bpp"); -const u8 gMonIcon_Articuno[] = INCBIN_U8("graphics/pokemon/articuno/icon.4bpp"); -const u8 gMonIcon_Zapdos[] = INCBIN_U8("graphics/pokemon/zapdos/icon.4bpp"); -const u8 gMonIcon_Moltres[] = INCBIN_U8("graphics/pokemon/moltres/icon.4bpp"); -const u8 gMonIcon_Dratini[] = INCBIN_U8("graphics/pokemon/dratini/icon.4bpp"); -const u8 gMonIcon_Dragonair[] = INCBIN_U8("graphics/pokemon/dragonair/icon.4bpp"); -const u8 gMonIcon_Dragonite[] = INCBIN_U8("graphics/pokemon/dragonite/icon.4bpp"); -const u8 gMonIcon_Mewtwo[] = INCBIN_U8("graphics/pokemon/mewtwo/icon.4bpp"); -const u8 gMonIcon_Mew[] = INCBIN_U8("graphics/pokemon/mew/icon.4bpp"); -const u8 gMonIcon_Chikorita[] = INCBIN_U8("graphics/pokemon/chikorita/icon.4bpp"); -const u8 gMonIcon_Bayleef[] = INCBIN_U8("graphics/pokemon/bayleef/icon.4bpp"); -const u8 gMonIcon_Meganium[] = INCBIN_U8("graphics/pokemon/meganium/icon.4bpp"); -const u8 gMonIcon_Cyndaquil[] = INCBIN_U8("graphics/pokemon/cyndaquil/icon.4bpp"); -const u8 gMonIcon_Quilava[] = INCBIN_U8("graphics/pokemon/quilava/icon.4bpp"); -const u8 gMonIcon_Typhlosion[] = INCBIN_U8("graphics/pokemon/typhlosion/icon.4bpp"); -const u8 gMonIcon_Totodile[] = INCBIN_U8("graphics/pokemon/totodile/icon.4bpp"); -const u8 gMonIcon_Croconaw[] = INCBIN_U8("graphics/pokemon/croconaw/icon.4bpp"); -const u8 gMonIcon_Feraligatr[] = INCBIN_U8("graphics/pokemon/feraligatr/icon.4bpp"); -const u8 gMonIcon_Sentret[] = INCBIN_U8("graphics/pokemon/sentret/icon.4bpp"); -const u8 gMonIcon_Furret[] = INCBIN_U8("graphics/pokemon/furret/icon.4bpp"); -const u8 gMonIcon_Hoothoot[] = INCBIN_U8("graphics/pokemon/hoothoot/icon.4bpp"); -const u8 gMonIcon_Noctowl[] = INCBIN_U8("graphics/pokemon/noctowl/icon.4bpp"); -const u8 gMonIcon_Ledyba[] = INCBIN_U8("graphics/pokemon/ledyba/icon.4bpp"); -const u8 gMonIcon_Ledian[] = INCBIN_U8("graphics/pokemon/ledian/icon.4bpp"); -const u8 gMonIcon_Spinarak[] = INCBIN_U8("graphics/pokemon/spinarak/icon.4bpp"); -const u8 gMonIcon_Ariados[] = INCBIN_U8("graphics/pokemon/ariados/icon.4bpp"); -const u8 gMonIcon_Crobat[] = INCBIN_U8("graphics/pokemon/crobat/icon.4bpp"); -const u8 gMonIcon_Chinchou[] = INCBIN_U8("graphics/pokemon/chinchou/icon.4bpp"); -const u8 gMonIcon_Lanturn[] = INCBIN_U8("graphics/pokemon/lanturn/icon.4bpp"); -const u8 gMonIcon_Pichu[] = INCBIN_U8("graphics/pokemon/pichu/icon.4bpp"); -const u8 gMonIcon_Cleffa[] = INCBIN_U8("graphics/pokemon/cleffa/icon.4bpp"); -const u8 gMonIcon_Igglybuff[] = INCBIN_U8("graphics/pokemon/igglybuff/icon.4bpp"); -const u8 gMonIcon_Togepi[] = INCBIN_U8("graphics/pokemon/togepi/icon.4bpp"); -const u8 gMonIcon_Togetic[] = INCBIN_U8("graphics/pokemon/togetic/icon.4bpp"); -const u8 gMonIcon_Natu[] = INCBIN_U8("graphics/pokemon/natu/icon.4bpp"); -const u8 gMonIcon_Xatu[] = INCBIN_U8("graphics/pokemon/xatu/icon.4bpp"); -const u8 gMonIcon_Mareep[] = INCBIN_U8("graphics/pokemon/mareep/icon.4bpp"); -const u8 gMonIcon_Flaaffy[] = INCBIN_U8("graphics/pokemon/flaaffy/icon.4bpp"); -const u8 gMonIcon_Ampharos[] = INCBIN_U8("graphics/pokemon/ampharos/icon.4bpp"); -const u8 gMonIcon_Bellossom[] = INCBIN_U8("graphics/pokemon/bellossom/icon.4bpp"); -const u8 gMonIcon_Marill[] = INCBIN_U8("graphics/pokemon/marill/icon.4bpp"); -const u8 gMonIcon_Azumarill[] = INCBIN_U8("graphics/pokemon/azumarill/icon.4bpp"); -const u8 gMonIcon_Sudowoodo[] = INCBIN_U8("graphics/pokemon/sudowoodo/icon.4bpp"); -const u8 gMonIcon_Politoed[] = INCBIN_U8("graphics/pokemon/politoed/icon.4bpp"); -const u8 gMonIcon_Hoppip[] = INCBIN_U8("graphics/pokemon/hoppip/icon.4bpp"); -const u8 gMonIcon_Skiploom[] = INCBIN_U8("graphics/pokemon/skiploom/icon.4bpp"); -const u8 gMonIcon_Jumpluff[] = INCBIN_U8("graphics/pokemon/jumpluff/icon.4bpp"); -const u8 gMonIcon_Aipom[] = INCBIN_U8("graphics/pokemon/aipom/icon.4bpp"); -const u8 gMonIcon_Sunkern[] = INCBIN_U8("graphics/pokemon/sunkern/icon.4bpp"); -const u8 gMonIcon_Sunflora[] = INCBIN_U8("graphics/pokemon/sunflora/icon.4bpp"); -const u8 gMonIcon_Yanma[] = INCBIN_U8("graphics/pokemon/yanma/icon.4bpp"); -const u8 gMonIcon_Wooper[] = INCBIN_U8("graphics/pokemon/wooper/icon.4bpp"); -const u8 gMonIcon_Quagsire[] = INCBIN_U8("graphics/pokemon/quagsire/icon.4bpp"); -const u8 gMonIcon_Espeon[] = INCBIN_U8("graphics/pokemon/espeon/icon.4bpp"); -const u8 gMonIcon_Umbreon[] = INCBIN_U8("graphics/pokemon/umbreon/icon.4bpp"); -const u8 gMonIcon_Murkrow[] = INCBIN_U8("graphics/pokemon/murkrow/icon.4bpp"); -const u8 gMonIcon_Slowking[] = INCBIN_U8("graphics/pokemon/slowking/icon.4bpp"); -const u8 gMonIcon_Misdreavus[] = INCBIN_U8("graphics/pokemon/misdreavus/icon.4bpp"); -const u8 gMonIcon_Unown[] = INCBIN_U8("graphics/pokemon/unown/icon.4bpp"); -const u8 gMonIcon_Wobbuffet[] = INCBIN_U8("graphics/pokemon/wobbuffet/icon.4bpp"); -const u8 gMonIcon_Girafarig[] = INCBIN_U8("graphics/pokemon/girafarig/icon.4bpp"); -const u8 gMonIcon_Pineco[] = INCBIN_U8("graphics/pokemon/pineco/icon.4bpp"); -const u8 gMonIcon_Forretress[] = INCBIN_U8("graphics/pokemon/forretress/icon.4bpp"); -const u8 gMonIcon_Dunsparce[] = INCBIN_U8("graphics/pokemon/dunsparce/icon.4bpp"); -const u8 gMonIcon_Gligar[] = INCBIN_U8("graphics/pokemon/gligar/icon.4bpp"); -const u8 gMonIcon_Steelix[] = INCBIN_U8("graphics/pokemon/steelix/icon.4bpp"); -const u8 gMonIcon_Snubbull[] = INCBIN_U8("graphics/pokemon/snubbull/icon.4bpp"); -const u8 gMonIcon_Granbull[] = INCBIN_U8("graphics/pokemon/granbull/icon.4bpp"); -const u8 gMonIcon_Qwilfish[] = INCBIN_U8("graphics/pokemon/qwilfish/icon.4bpp"); -const u8 gMonIcon_Scizor[] = INCBIN_U8("graphics/pokemon/scizor/icon.4bpp"); -const u8 gMonIcon_Shuckle[] = INCBIN_U8("graphics/pokemon/shuckle/icon.4bpp"); -const u8 gMonIcon_Heracross[] = INCBIN_U8("graphics/pokemon/heracross/icon.4bpp"); -const u8 gMonIcon_Sneasel[] = INCBIN_U8("graphics/pokemon/sneasel/icon.4bpp"); -const u8 gMonIcon_Teddiursa[] = INCBIN_U8("graphics/pokemon/teddiursa/icon.4bpp"); -const u8 gMonIcon_Ursaring[] = INCBIN_U8("graphics/pokemon/ursaring/icon.4bpp"); -const u8 gMonIcon_Slugma[] = INCBIN_U8("graphics/pokemon/slugma/icon.4bpp"); -const u8 gMonIcon_Magcargo[] = INCBIN_U8("graphics/pokemon/magcargo/icon.4bpp"); -const u8 gMonIcon_Swinub[] = INCBIN_U8("graphics/pokemon/swinub/icon.4bpp"); -const u8 gMonIcon_Piloswine[] = INCBIN_U8("graphics/pokemon/piloswine/icon.4bpp"); -const u8 gMonIcon_Corsola[] = INCBIN_U8("graphics/pokemon/corsola/icon.4bpp"); -const u8 gMonIcon_Remoraid[] = INCBIN_U8("graphics/pokemon/remoraid/icon.4bpp"); -const u8 gMonIcon_Octillery[] = INCBIN_U8("graphics/pokemon/octillery/icon.4bpp"); -const u8 gMonIcon_Delibird[] = INCBIN_U8("graphics/pokemon/delibird/icon.4bpp"); -const u8 gMonIcon_Mantine[] = INCBIN_U8("graphics/pokemon/mantine/icon.4bpp"); -const u8 gMonIcon_Skarmory[] = INCBIN_U8("graphics/pokemon/skarmory/icon.4bpp"); -const u8 gMonIcon_Houndour[] = INCBIN_U8("graphics/pokemon/houndour/icon.4bpp"); -const u8 gMonIcon_Houndoom[] = INCBIN_U8("graphics/pokemon/houndoom/icon.4bpp"); -const u8 gMonIcon_Kingdra[] = INCBIN_U8("graphics/pokemon/kingdra/icon.4bpp"); -const u8 gMonIcon_Phanpy[] = INCBIN_U8("graphics/pokemon/phanpy/icon.4bpp"); -const u8 gMonIcon_Donphan[] = INCBIN_U8("graphics/pokemon/donphan/icon.4bpp"); -const u8 gMonIcon_Porygon2[] = INCBIN_U8("graphics/pokemon/porygon2/icon.4bpp"); -const u8 gMonIcon_Stantler[] = INCBIN_U8("graphics/pokemon/stantler/icon.4bpp"); -const u8 gMonIcon_Smeargle[] = INCBIN_U8("graphics/pokemon/smeargle/icon.4bpp"); -const u8 gMonIcon_Tyrogue[] = INCBIN_U8("graphics/pokemon/tyrogue/icon.4bpp"); -const u8 gMonIcon_Hitmontop[] = INCBIN_U8("graphics/pokemon/hitmontop/icon.4bpp"); -const u8 gMonIcon_Smoochum[] = INCBIN_U8("graphics/pokemon/smoochum/icon.4bpp"); -const u8 gMonIcon_Elekid[] = INCBIN_U8("graphics/pokemon/elekid/icon.4bpp"); -const u8 gMonIcon_Magby[] = INCBIN_U8("graphics/pokemon/magby/icon.4bpp"); -const u8 gMonIcon_Miltank[] = INCBIN_U8("graphics/pokemon/miltank/icon.4bpp"); -const u8 gMonIcon_Blissey[] = INCBIN_U8("graphics/pokemon/blissey/icon.4bpp"); -const u8 gMonIcon_Raikou[] = INCBIN_U8("graphics/pokemon/raikou/icon.4bpp"); -const u8 gMonIcon_Entei[] = INCBIN_U8("graphics/pokemon/entei/icon.4bpp"); -const u8 gMonIcon_Suicune[] = INCBIN_U8("graphics/pokemon/suicune/icon.4bpp"); -const u8 gMonIcon_Larvitar[] = INCBIN_U8("graphics/pokemon/larvitar/icon.4bpp"); -const u8 gMonIcon_Pupitar[] = INCBIN_U8("graphics/pokemon/pupitar/icon.4bpp"); -const u8 gMonIcon_Tyranitar[] = INCBIN_U8("graphics/pokemon/tyranitar/icon.4bpp"); -const u8 gMonIcon_Lugia[] = INCBIN_U8("graphics/pokemon/lugia/icon.4bpp"); -const u8 gMonIcon_HoOh[] = INCBIN_U8("graphics/pokemon/ho_oh/icon.4bpp"); -const u8 gMonIcon_Celebi[] = INCBIN_U8("graphics/pokemon/celebi/icon.4bpp"); -const u8 gMonIcon_Treecko[] = INCBIN_U8("graphics/pokemon/treecko/icon.4bpp"); -const u8 gMonIcon_Grovyle[] = INCBIN_U8("graphics/pokemon/grovyle/icon.4bpp"); -const u8 gMonIcon_Sceptile[] = INCBIN_U8("graphics/pokemon/sceptile/icon.4bpp"); -const u8 gMonIcon_Torchic[] = INCBIN_U8("graphics/pokemon/torchic/icon.4bpp"); -const u8 gMonIcon_Combusken[] = INCBIN_U8("graphics/pokemon/combusken/icon.4bpp"); -const u8 gMonIcon_Blaziken[] = INCBIN_U8("graphics/pokemon/blaziken/icon.4bpp"); -const u8 gMonIcon_Mudkip[] = INCBIN_U8("graphics/pokemon/mudkip/icon.4bpp"); -const u8 gMonIcon_Marshtomp[] = INCBIN_U8("graphics/pokemon/marshtomp/icon.4bpp"); -const u8 gMonIcon_Swampert[] = INCBIN_U8("graphics/pokemon/swampert/icon.4bpp"); -const u8 gMonIcon_Poochyena[] = INCBIN_U8("graphics/pokemon/poochyena/icon.4bpp"); -const u8 gMonIcon_Mightyena[] = INCBIN_U8("graphics/pokemon/mightyena/icon.4bpp"); -const u8 gMonIcon_Zigzagoon[] = INCBIN_U8("graphics/pokemon/zigzagoon/icon.4bpp"); -const u8 gMonIcon_Linoone[] = INCBIN_U8("graphics/pokemon/linoone/icon.4bpp"); -const u8 gMonIcon_Wurmple[] = INCBIN_U8("graphics/pokemon/wurmple/icon.4bpp"); -const u8 gMonIcon_Silcoon[] = INCBIN_U8("graphics/pokemon/silcoon/icon.4bpp"); -const u8 gMonIcon_Beautifly[] = INCBIN_U8("graphics/pokemon/beautifly/icon.4bpp"); -const u8 gMonIcon_Cascoon[] = INCBIN_U8("graphics/pokemon/cascoon/icon.4bpp"); -const u8 gMonIcon_Dustox[] = INCBIN_U8("graphics/pokemon/dustox/icon.4bpp"); -const u8 gMonIcon_Lotad[] = INCBIN_U8("graphics/pokemon/lotad/icon.4bpp"); -const u8 gMonIcon_Lombre[] = INCBIN_U8("graphics/pokemon/lombre/icon.4bpp"); -const u8 gMonIcon_Ludicolo[] = INCBIN_U8("graphics/pokemon/ludicolo/icon.4bpp"); -const u8 gMonIcon_Seedot[] = INCBIN_U8("graphics/pokemon/seedot/icon.4bpp"); -const u8 gMonIcon_Nuzleaf[] = INCBIN_U8("graphics/pokemon/nuzleaf/icon.4bpp"); -const u8 gMonIcon_Shiftry[] = INCBIN_U8("graphics/pokemon/shiftry/icon.4bpp"); -const u8 gMonIcon_Taillow[] = INCBIN_U8("graphics/pokemon/taillow/icon.4bpp"); -const u8 gMonIcon_Swellow[] = INCBIN_U8("graphics/pokemon/swellow/icon.4bpp"); -const u8 gMonIcon_Wingull[] = INCBIN_U8("graphics/pokemon/wingull/icon.4bpp"); -const u8 gMonIcon_Pelipper[] = INCBIN_U8("graphics/pokemon/pelipper/icon.4bpp"); -const u8 gMonIcon_Ralts[] = INCBIN_U8("graphics/pokemon/ralts/icon.4bpp"); -const u8 gMonIcon_Kirlia[] = INCBIN_U8("graphics/pokemon/kirlia/icon.4bpp"); -const u8 gMonIcon_Gardevoir[] = INCBIN_U8("graphics/pokemon/gardevoir/icon.4bpp"); -const u8 gMonIcon_Surskit[] = INCBIN_U8("graphics/pokemon/surskit/icon.4bpp"); -const u8 gMonIcon_Masquerain[] = INCBIN_U8("graphics/pokemon/masquerain/icon.4bpp"); -const u8 gMonIcon_Shroomish[] = INCBIN_U8("graphics/pokemon/shroomish/icon.4bpp"); -const u8 gMonIcon_Breloom[] = INCBIN_U8("graphics/pokemon/breloom/icon.4bpp"); -const u8 gMonIcon_Slakoth[] = INCBIN_U8("graphics/pokemon/slakoth/icon.4bpp"); -const u8 gMonIcon_Vigoroth[] = INCBIN_U8("graphics/pokemon/vigoroth/icon.4bpp"); -const u8 gMonIcon_Slaking[] = INCBIN_U8("graphics/pokemon/slaking/icon.4bpp"); -const u8 gMonIcon_Nincada[] = INCBIN_U8("graphics/pokemon/nincada/icon.4bpp"); -const u8 gMonIcon_Ninjask[] = INCBIN_U8("graphics/pokemon/ninjask/icon.4bpp"); -const u8 gMonIcon_Shedinja[] = INCBIN_U8("graphics/pokemon/shedinja/icon.4bpp"); -const u8 gMonIcon_Whismur[] = INCBIN_U8("graphics/pokemon/whismur/icon.4bpp"); -const u8 gMonIcon_Loudred[] = INCBIN_U8("graphics/pokemon/loudred/icon.4bpp"); -const u8 gMonIcon_Exploud[] = INCBIN_U8("graphics/pokemon/exploud/icon.4bpp"); -const u8 gMonIcon_Makuhita[] = INCBIN_U8("graphics/pokemon/makuhita/icon.4bpp"); -const u8 gMonIcon_Hariyama[] = INCBIN_U8("graphics/pokemon/hariyama/icon.4bpp"); -const u8 gMonIcon_Azurill[] = INCBIN_U8("graphics/pokemon/azurill/icon.4bpp"); -const u8 gMonIcon_Nosepass[] = INCBIN_U8("graphics/pokemon/nosepass/icon.4bpp"); -const u8 gMonIcon_Skitty[] = INCBIN_U8("graphics/pokemon/skitty/icon.4bpp"); -const u8 gMonIcon_Delcatty[] = INCBIN_U8("graphics/pokemon/delcatty/icon.4bpp"); -const u8 gMonIcon_Sableye[] = INCBIN_U8("graphics/pokemon/sableye/icon.4bpp"); -const u8 gMonIcon_Mawile[] = INCBIN_U8("graphics/pokemon/mawile/icon.4bpp"); -const u8 gMonIcon_Aron[] = INCBIN_U8("graphics/pokemon/aron/icon.4bpp"); -const u8 gMonIcon_Lairon[] = INCBIN_U8("graphics/pokemon/lairon/icon.4bpp"); -const u8 gMonIcon_Aggron[] = INCBIN_U8("graphics/pokemon/aggron/icon.4bpp"); -const u8 gMonIcon_Meditite[] = INCBIN_U8("graphics/pokemon/meditite/icon.4bpp"); -const u8 gMonIcon_Medicham[] = INCBIN_U8("graphics/pokemon/medicham/icon.4bpp"); -const u8 gMonIcon_Electrike[] = INCBIN_U8("graphics/pokemon/electrike/icon.4bpp"); -const u8 gMonIcon_Manectric[] = INCBIN_U8("graphics/pokemon/manectric/icon.4bpp"); -const u8 gMonIcon_Plusle[] = INCBIN_U8("graphics/pokemon/plusle/icon.4bpp"); -const u8 gMonIcon_Minun[] = INCBIN_U8("graphics/pokemon/minun/icon.4bpp"); -const u8 gMonIcon_Volbeat[] = INCBIN_U8("graphics/pokemon/volbeat/icon.4bpp"); -const u8 gMonIcon_Illumise[] = INCBIN_U8("graphics/pokemon/illumise/icon.4bpp"); -const u8 gMonIcon_Roselia[] = INCBIN_U8("graphics/pokemon/roselia/icon.4bpp"); -const u8 gMonIcon_Gulpin[] = INCBIN_U8("graphics/pokemon/gulpin/icon.4bpp"); -const u8 gMonIcon_Swalot[] = INCBIN_U8("graphics/pokemon/swalot/icon.4bpp"); -const u8 gMonIcon_Carvanha[] = INCBIN_U8("graphics/pokemon/carvanha/icon.4bpp"); -const u8 gMonIcon_Sharpedo[] = INCBIN_U8("graphics/pokemon/sharpedo/icon.4bpp"); -const u8 gMonIcon_Wailmer[] = INCBIN_U8("graphics/pokemon/wailmer/icon.4bpp"); -const u8 gMonIcon_Wailord[] = INCBIN_U8("graphics/pokemon/wailord/icon.4bpp"); -const u8 gMonIcon_Numel[] = INCBIN_U8("graphics/pokemon/numel/icon.4bpp"); -const u8 gMonIcon_Camerupt[] = INCBIN_U8("graphics/pokemon/camerupt/icon.4bpp"); -const u8 gMonIcon_Torkoal[] = INCBIN_U8("graphics/pokemon/torkoal/icon.4bpp"); -const u8 gMonIcon_Spoink[] = INCBIN_U8("graphics/pokemon/spoink/icon.4bpp"); -const u8 gMonIcon_Grumpig[] = INCBIN_U8("graphics/pokemon/grumpig/icon.4bpp"); -const u8 gMonIcon_Spinda[] = INCBIN_U8("graphics/pokemon/spinda/icon.4bpp"); -const u8 gMonIcon_Trapinch[] = INCBIN_U8("graphics/pokemon/trapinch/icon.4bpp"); -const u8 gMonIcon_Vibrava[] = INCBIN_U8("graphics/pokemon/vibrava/icon.4bpp"); -const u8 gMonIcon_Flygon[] = INCBIN_U8("graphics/pokemon/flygon/icon.4bpp"); -const u8 gMonIcon_Cacnea[] = INCBIN_U8("graphics/pokemon/cacnea/icon.4bpp"); -const u8 gMonIcon_Cacturne[] = INCBIN_U8("graphics/pokemon/cacturne/icon.4bpp"); -const u8 gMonIcon_Swablu[] = INCBIN_U8("graphics/pokemon/swablu/icon.4bpp"); -const u8 gMonIcon_Altaria[] = INCBIN_U8("graphics/pokemon/altaria/icon.4bpp"); -const u8 gMonIcon_Zangoose[] = INCBIN_U8("graphics/pokemon/zangoose/icon.4bpp"); -const u8 gMonIcon_Seviper[] = INCBIN_U8("graphics/pokemon/seviper/icon.4bpp"); -const u8 gMonIcon_Lunatone[] = INCBIN_U8("graphics/pokemon/lunatone/icon.4bpp"); -const u8 gMonIcon_Solrock[] = INCBIN_U8("graphics/pokemon/solrock/icon.4bpp"); -const u8 gMonIcon_Barboach[] = INCBIN_U8("graphics/pokemon/barboach/icon.4bpp"); -const u8 gMonIcon_Whiscash[] = INCBIN_U8("graphics/pokemon/whiscash/icon.4bpp"); -const u8 gMonIcon_Corphish[] = INCBIN_U8("graphics/pokemon/corphish/icon.4bpp"); -const u8 gMonIcon_Crawdaunt[] = INCBIN_U8("graphics/pokemon/crawdaunt/icon.4bpp"); -const u8 gMonIcon_Baltoy[] = INCBIN_U8("graphics/pokemon/baltoy/icon.4bpp"); -const u8 gMonIcon_Claydol[] = INCBIN_U8("graphics/pokemon/claydol/icon.4bpp"); -const u8 gMonIcon_Lileep[] = INCBIN_U8("graphics/pokemon/lileep/icon.4bpp"); -const u8 gMonIcon_Cradily[] = INCBIN_U8("graphics/pokemon/cradily/icon.4bpp"); -const u8 gMonIcon_Anorith[] = INCBIN_U8("graphics/pokemon/anorith/icon.4bpp"); -const u8 gMonIcon_Armaldo[] = INCBIN_U8("graphics/pokemon/armaldo/icon.4bpp"); -const u8 gMonIcon_Feebas[] = INCBIN_U8("graphics/pokemon/feebas/icon.4bpp"); -const u8 gMonIcon_Milotic[] = INCBIN_U8("graphics/pokemon/milotic/icon.4bpp"); -const u8 gMonIcon_Castform[] = INCBIN_U8("graphics/pokemon/castform/icon.4bpp"); -const u8 gMonIcon_Kecleon[] = INCBIN_U8("graphics/pokemon/kecleon/icon.4bpp"); -const u8 gMonIcon_Shuppet[] = INCBIN_U8("graphics/pokemon/shuppet/icon.4bpp"); -const u8 gMonIcon_Banette[] = INCBIN_U8("graphics/pokemon/banette/icon.4bpp"); -const u8 gMonIcon_Duskull[] = INCBIN_U8("graphics/pokemon/duskull/icon.4bpp"); -const u8 gMonIcon_Dusclops[] = INCBIN_U8("graphics/pokemon/dusclops/icon.4bpp"); -const u8 gMonIcon_Tropius[] = INCBIN_U8("graphics/pokemon/tropius/icon.4bpp"); -const u8 gMonIcon_Chimecho[] = INCBIN_U8("graphics/pokemon/chimecho/icon.4bpp"); -const u8 gMonIcon_Absol[] = INCBIN_U8("graphics/pokemon/absol/icon.4bpp"); -const u8 gMonIcon_Wynaut[] = INCBIN_U8("graphics/pokemon/wynaut/icon.4bpp"); -const u8 gMonIcon_Snorunt[] = INCBIN_U8("graphics/pokemon/snorunt/icon.4bpp"); -const u8 gMonIcon_Glalie[] = INCBIN_U8("graphics/pokemon/glalie/icon.4bpp"); -const u8 gMonIcon_Spheal[] = INCBIN_U8("graphics/pokemon/spheal/icon.4bpp"); -const u8 gMonIcon_Sealeo[] = INCBIN_U8("graphics/pokemon/sealeo/icon.4bpp"); -const u8 gMonIcon_Walrein[] = INCBIN_U8("graphics/pokemon/walrein/icon.4bpp"); -const u8 gMonIcon_Clamperl[] = INCBIN_U8("graphics/pokemon/clamperl/icon.4bpp"); -const u8 gMonIcon_Huntail[] = INCBIN_U8("graphics/pokemon/huntail/icon.4bpp"); -const u8 gMonIcon_Gorebyss[] = INCBIN_U8("graphics/pokemon/gorebyss/icon.4bpp"); -const u8 gMonIcon_Relicanth[] = INCBIN_U8("graphics/pokemon/relicanth/icon.4bpp"); -const u8 gMonIcon_Luvdisc[] = INCBIN_U8("graphics/pokemon/luvdisc/icon.4bpp"); -const u8 gMonIcon_Bagon[] = INCBIN_U8("graphics/pokemon/bagon/icon.4bpp"); -const u8 gMonIcon_Shelgon[] = INCBIN_U8("graphics/pokemon/shelgon/icon.4bpp"); -const u8 gMonIcon_Salamence[] = INCBIN_U8("graphics/pokemon/salamence/icon.4bpp"); -const u8 gMonIcon_Beldum[] = INCBIN_U8("graphics/pokemon/beldum/icon.4bpp"); -const u8 gMonIcon_Metang[] = INCBIN_U8("graphics/pokemon/metang/icon.4bpp"); -const u8 gMonIcon_Metagross[] = INCBIN_U8("graphics/pokemon/metagross/icon.4bpp"); -const u8 gMonIcon_Regirock[] = INCBIN_U8("graphics/pokemon/regirock/icon.4bpp"); -const u8 gMonIcon_Regice[] = INCBIN_U8("graphics/pokemon/regice/icon.4bpp"); -const u8 gMonIcon_Registeel[] = INCBIN_U8("graphics/pokemon/registeel/icon.4bpp"); -const u8 gMonIcon_Latias[] = INCBIN_U8("graphics/pokemon/latias/icon.4bpp"); -const u8 gMonIcon_Latios[] = INCBIN_U8("graphics/pokemon/latios/icon.4bpp"); -const u8 gMonIcon_Kyogre[] = INCBIN_U8("graphics/pokemon/kyogre/icon.4bpp"); -const u8 gMonIcon_Groudon[] = INCBIN_U8("graphics/pokemon/groudon/icon.4bpp"); -const u8 gMonIcon_Rayquaza[] = INCBIN_U8("graphics/pokemon/rayquaza/icon.4bpp"); -const u8 gMonIcon_Jirachi[] = INCBIN_U8("graphics/pokemon/jirachi/icon.4bpp"); -const u8 gMonIcon_Deoxys[] = INCBIN_U8("graphics/pokemon/deoxys/icon.4bpp"); -#if P_GEN_4_POKEMON == TRUE -const u8 gMonIcon_Turtwig[] = INCBIN_U8("graphics/pokemon/turtwig/icon.4bpp"); -const u8 gMonIcon_Grotle[] = INCBIN_U8("graphics/pokemon/grotle/icon.4bpp"); -const u8 gMonIcon_Torterra[] = INCBIN_U8("graphics/pokemon/torterra/icon.4bpp"); -const u8 gMonIcon_Chimchar[] = INCBIN_U8("graphics/pokemon/chimchar/icon.4bpp"); -const u8 gMonIcon_Monferno[] = INCBIN_U8("graphics/pokemon/monferno/icon.4bpp"); -const u8 gMonIcon_Infernape[] = INCBIN_U8("graphics/pokemon/infernape/icon.4bpp"); -const u8 gMonIcon_Piplup[] = INCBIN_U8("graphics/pokemon/piplup/icon.4bpp"); -const u8 gMonIcon_Prinplup[] = INCBIN_U8("graphics/pokemon/prinplup/icon.4bpp"); -const u8 gMonIcon_Empoleon[] = INCBIN_U8("graphics/pokemon/empoleon/icon.4bpp"); -const u8 gMonIcon_Starly[] = INCBIN_U8("graphics/pokemon/starly/icon.4bpp"); -const u8 gMonIcon_Staravia[] = INCBIN_U8("graphics/pokemon/staravia/icon.4bpp"); -const u8 gMonIcon_Staraptor[] = INCBIN_U8("graphics/pokemon/staraptor/icon.4bpp"); -const u8 gMonIcon_Bidoof[] = INCBIN_U8("graphics/pokemon/bidoof/icon.4bpp"); -const u8 gMonIcon_Bibarel[] = INCBIN_U8("graphics/pokemon/bibarel/icon.4bpp"); -const u8 gMonIcon_Kricketot[] = INCBIN_U8("graphics/pokemon/kricketot/icon.4bpp"); -const u8 gMonIcon_Kricketune[] = INCBIN_U8("graphics/pokemon/kricketune/icon.4bpp"); -const u8 gMonIcon_Shinx[] = INCBIN_U8("graphics/pokemon/shinx/icon.4bpp"); -const u8 gMonIcon_Luxio[] = INCBIN_U8("graphics/pokemon/luxio/icon.4bpp"); -const u8 gMonIcon_Luxray[] = INCBIN_U8("graphics/pokemon/luxray/icon.4bpp"); -const u8 gMonIcon_Budew[] = INCBIN_U8("graphics/pokemon/budew/icon.4bpp"); -const u8 gMonIcon_Roserade[] = INCBIN_U8("graphics/pokemon/roserade/icon.4bpp"); -const u8 gMonIcon_Cranidos[] = INCBIN_U8("graphics/pokemon/cranidos/icon.4bpp"); -const u8 gMonIcon_Rampardos[] = INCBIN_U8("graphics/pokemon/rampardos/icon.4bpp"); -const u8 gMonIcon_Shieldon[] = INCBIN_U8("graphics/pokemon/shieldon/icon.4bpp"); -const u8 gMonIcon_Bastiodon[] = INCBIN_U8("graphics/pokemon/bastiodon/icon.4bpp"); -const u8 gMonIcon_Burmy[] = INCBIN_U8("graphics/pokemon/burmy/icon.4bpp"); -const u8 gMonIcon_Wormadam[] = INCBIN_U8("graphics/pokemon/wormadam/icon.4bpp"); -const u8 gMonIcon_Mothim[] = INCBIN_U8("graphics/pokemon/mothim/icon.4bpp"); -const u8 gMonIcon_Combee[] = INCBIN_U8("graphics/pokemon/combee/icon.4bpp"); -const u8 gMonIcon_Vespiquen[] = INCBIN_U8("graphics/pokemon/vespiquen/icon.4bpp"); -const u8 gMonIcon_Pachirisu[] = INCBIN_U8("graphics/pokemon/pachirisu/icon.4bpp"); -const u8 gMonIcon_Buizel[] = INCBIN_U8("graphics/pokemon/buizel/icon.4bpp"); -const u8 gMonIcon_Floatzel[] = INCBIN_U8("graphics/pokemon/floatzel/icon.4bpp"); -const u8 gMonIcon_Cherubi[] = INCBIN_U8("graphics/pokemon/cherubi/icon.4bpp"); -const u8 gMonIcon_Cherrim[] = INCBIN_U8("graphics/pokemon/cherrim/icon.4bpp"); -const u8 gMonIcon_Shellos[] = INCBIN_U8("graphics/pokemon/shellos/icon.4bpp"); -const u8 gMonIcon_Gastrodon[] = INCBIN_U8("graphics/pokemon/gastrodon/icon.4bpp"); -const u8 gMonIcon_Ambipom[] = INCBIN_U8("graphics/pokemon/ambipom/icon.4bpp"); -const u8 gMonIcon_Drifloon[] = INCBIN_U8("graphics/pokemon/drifloon/icon.4bpp"); -const u8 gMonIcon_Drifblim[] = INCBIN_U8("graphics/pokemon/drifblim/icon.4bpp"); -const u8 gMonIcon_Buneary[] = INCBIN_U8("graphics/pokemon/buneary/icon.4bpp"); -const u8 gMonIcon_Lopunny[] = INCBIN_U8("graphics/pokemon/lopunny/icon.4bpp"); -const u8 gMonIcon_Mismagius[] = INCBIN_U8("graphics/pokemon/mismagius/icon.4bpp"); -const u8 gMonIcon_Honchkrow[] = INCBIN_U8("graphics/pokemon/honchkrow/icon.4bpp"); -const u8 gMonIcon_Glameow[] = INCBIN_U8("graphics/pokemon/glameow/icon.4bpp"); -const u8 gMonIcon_Purugly[] = INCBIN_U8("graphics/pokemon/purugly/icon.4bpp"); -const u8 gMonIcon_Chingling[] = INCBIN_U8("graphics/pokemon/chingling/icon.4bpp"); -const u8 gMonIcon_Stunky[] = INCBIN_U8("graphics/pokemon/stunky/icon.4bpp"); -const u8 gMonIcon_Skuntank[] = INCBIN_U8("graphics/pokemon/skuntank/icon.4bpp"); -const u8 gMonIcon_Bronzor[] = INCBIN_U8("graphics/pokemon/bronzor/icon.4bpp"); -const u8 gMonIcon_Bronzong[] = INCBIN_U8("graphics/pokemon/bronzong/icon.4bpp"); -const u8 gMonIcon_Bonsly[] = INCBIN_U8("graphics/pokemon/bonsly/icon.4bpp"); -const u8 gMonIcon_MimeJr[] = INCBIN_U8("graphics/pokemon/mime_jr/icon.4bpp"); -const u8 gMonIcon_Happiny[] = INCBIN_U8("graphics/pokemon/happiny/icon.4bpp"); -const u8 gMonIcon_Chatot[] = INCBIN_U8("graphics/pokemon/chatot/icon.4bpp"); -const u8 gMonIcon_Spiritomb[] = INCBIN_U8("graphics/pokemon/spiritomb/icon.4bpp"); -const u8 gMonIcon_Gible[] = INCBIN_U8("graphics/pokemon/gible/icon.4bpp"); -const u8 gMonIcon_Gabite[] = INCBIN_U8("graphics/pokemon/gabite/icon.4bpp"); -const u8 gMonIcon_Garchomp[] = INCBIN_U8("graphics/pokemon/garchomp/icon.4bpp"); -const u8 gMonIcon_Munchlax[] = INCBIN_U8("graphics/pokemon/munchlax/icon.4bpp"); -const u8 gMonIcon_Riolu[] = INCBIN_U8("graphics/pokemon/riolu/icon.4bpp"); -const u8 gMonIcon_Lucario[] = INCBIN_U8("graphics/pokemon/lucario/icon.4bpp"); -const u8 gMonIcon_Hippopotas[] = INCBIN_U8("graphics/pokemon/hippopotas/icon.4bpp"); -const u8 gMonIcon_Hippowdon[] = INCBIN_U8("graphics/pokemon/hippowdon/icon.4bpp"); -#if P_HIPPO_GENDER_DIFF_ICONS == TRUE -const u8 gMonIcon_HippopotasF[] = INCBIN_U8("graphics/pokemon/hippopotas/iconf.4bpp"); -const u8 gMonIcon_HippowdonF[] = INCBIN_U8("graphics/pokemon/hippowdon/iconf.4bpp"); -#endif -const u8 gMonIcon_Skorupi[] = INCBIN_U8("graphics/pokemon/skorupi/icon.4bpp"); -const u8 gMonIcon_Drapion[] = INCBIN_U8("graphics/pokemon/drapion/icon.4bpp"); -const u8 gMonIcon_Croagunk[] = INCBIN_U8("graphics/pokemon/croagunk/icon.4bpp"); -const u8 gMonIcon_Toxicroak[] = INCBIN_U8("graphics/pokemon/toxicroak/icon.4bpp"); -const u8 gMonIcon_Carnivine[] = INCBIN_U8("graphics/pokemon/carnivine/icon.4bpp"); -const u8 gMonIcon_Finneon[] = INCBIN_U8("graphics/pokemon/finneon/icon.4bpp"); -const u8 gMonIcon_Lumineon[] = INCBIN_U8("graphics/pokemon/lumineon/icon.4bpp"); -const u8 gMonIcon_Mantyke[] = INCBIN_U8("graphics/pokemon/mantyke/icon.4bpp"); -const u8 gMonIcon_Snover[] = INCBIN_U8("graphics/pokemon/snover/icon.4bpp"); -const u8 gMonIcon_Abomasnow[] = INCBIN_U8("graphics/pokemon/abomasnow/icon.4bpp"); -const u8 gMonIcon_Weavile[] = INCBIN_U8("graphics/pokemon/weavile/icon.4bpp"); -const u8 gMonIcon_Magnezone[] = INCBIN_U8("graphics/pokemon/magnezone/icon.4bpp"); -const u8 gMonIcon_Lickilicky[] = INCBIN_U8("graphics/pokemon/lickilicky/icon.4bpp"); -const u8 gMonIcon_Rhyperior[] = INCBIN_U8("graphics/pokemon/rhyperior/icon.4bpp"); -const u8 gMonIcon_Tangrowth[] = INCBIN_U8("graphics/pokemon/tangrowth/icon.4bpp"); -const u8 gMonIcon_Electivire[] = INCBIN_U8("graphics/pokemon/electivire/icon.4bpp"); -const u8 gMonIcon_Magmortar[] = INCBIN_U8("graphics/pokemon/magmortar/icon.4bpp"); -const u8 gMonIcon_Togekiss[] = INCBIN_U8("graphics/pokemon/togekiss/icon.4bpp"); -const u8 gMonIcon_Yanmega[] = INCBIN_U8("graphics/pokemon/yanmega/icon.4bpp"); -const u8 gMonIcon_Leafeon[] = INCBIN_U8("graphics/pokemon/leafeon/icon.4bpp"); -const u8 gMonIcon_Glaceon[] = INCBIN_U8("graphics/pokemon/glaceon/icon.4bpp"); -const u8 gMonIcon_Gliscor[] = INCBIN_U8("graphics/pokemon/gliscor/icon.4bpp"); -const u8 gMonIcon_Mamoswine[] = INCBIN_U8("graphics/pokemon/mamoswine/icon.4bpp"); -const u8 gMonIcon_Porygon_Z[] = INCBIN_U8("graphics/pokemon/porygon_z/icon.4bpp"); -const u8 gMonIcon_Gallade[] = INCBIN_U8("graphics/pokemon/gallade/icon.4bpp"); -const u8 gMonIcon_Probopass[] = INCBIN_U8("graphics/pokemon/probopass/icon.4bpp"); -const u8 gMonIcon_Dusknoir[] = INCBIN_U8("graphics/pokemon/dusknoir/icon.4bpp"); -const u8 gMonIcon_Froslass[] = INCBIN_U8("graphics/pokemon/froslass/icon.4bpp"); -const u8 gMonIcon_Rotom[] = INCBIN_U8("graphics/pokemon/rotom/icon.4bpp"); -const u8 gMonIcon_Uxie[] = INCBIN_U8("graphics/pokemon/uxie/icon.4bpp"); -const u8 gMonIcon_Mesprit[] = INCBIN_U8("graphics/pokemon/mesprit/icon.4bpp"); -const u8 gMonIcon_Azelf[] = INCBIN_U8("graphics/pokemon/azelf/icon.4bpp"); -const u8 gMonIcon_Dialga[] = INCBIN_U8("graphics/pokemon/dialga/icon.4bpp"); -const u8 gMonIcon_Palkia[] = INCBIN_U8("graphics/pokemon/palkia/icon.4bpp"); -const u8 gMonIcon_Heatran[] = INCBIN_U8("graphics/pokemon/heatran/icon.4bpp"); -const u8 gMonIcon_Regigigas[] = INCBIN_U8("graphics/pokemon/regigigas/icon.4bpp"); -const u8 gMonIcon_Giratina[] = INCBIN_U8("graphics/pokemon/giratina/icon.4bpp"); -const u8 gMonIcon_Cresselia[] = INCBIN_U8("graphics/pokemon/cresselia/icon.4bpp"); -const u8 gMonIcon_Phione[] = INCBIN_U8("graphics/pokemon/phione/icon.4bpp"); -const u8 gMonIcon_Manaphy[] = INCBIN_U8("graphics/pokemon/manaphy/icon.4bpp"); -const u8 gMonIcon_Darkrai[] = INCBIN_U8("graphics/pokemon/darkrai/icon.4bpp"); -const u8 gMonIcon_Shaymin[] = INCBIN_U8("graphics/pokemon/shaymin/icon.4bpp"); -const u8 gMonIcon_Arceus[] = INCBIN_U8("graphics/pokemon/arceus/icon.4bpp"); -#endif -#if P_GEN_5_POKEMON == TRUE -const u8 gMonIcon_Victini[] = INCBIN_U8("graphics/pokemon/victini/icon.4bpp"); -const u8 gMonIcon_Snivy[] = INCBIN_U8("graphics/pokemon/snivy/icon.4bpp"); -const u8 gMonIcon_Servine[] = INCBIN_U8("graphics/pokemon/servine/icon.4bpp"); -const u8 gMonIcon_Serperior[] = INCBIN_U8("graphics/pokemon/serperior/icon.4bpp"); -const u8 gMonIcon_Tepig[] = INCBIN_U8("graphics/pokemon/tepig/icon.4bpp"); -const u8 gMonIcon_Pignite[] = INCBIN_U8("graphics/pokemon/pignite/icon.4bpp"); -const u8 gMonIcon_Emboar[] = INCBIN_U8("graphics/pokemon/emboar/icon.4bpp"); -const u8 gMonIcon_Oshawott[] = INCBIN_U8("graphics/pokemon/oshawott/icon.4bpp"); -const u8 gMonIcon_Dewott[] = INCBIN_U8("graphics/pokemon/dewott/icon.4bpp"); -const u8 gMonIcon_Samurott[] = INCBIN_U8("graphics/pokemon/samurott/icon.4bpp"); -const u8 gMonIcon_Patrat[] = INCBIN_U8("graphics/pokemon/patrat/icon.4bpp"); -const u8 gMonIcon_Watchog[] = INCBIN_U8("graphics/pokemon/watchog/icon.4bpp"); -const u8 gMonIcon_Lillipup[] = INCBIN_U8("graphics/pokemon/lillipup/icon.4bpp"); -const u8 gMonIcon_Herdier[] = INCBIN_U8("graphics/pokemon/herdier/icon.4bpp"); -const u8 gMonIcon_Stoutland[] = INCBIN_U8("graphics/pokemon/stoutland/icon.4bpp"); -const u8 gMonIcon_Purrloin[] = INCBIN_U8("graphics/pokemon/purrloin/icon.4bpp"); -const u8 gMonIcon_Liepard[] = INCBIN_U8("graphics/pokemon/liepard/icon.4bpp"); -const u8 gMonIcon_Pansage[] = INCBIN_U8("graphics/pokemon/pansage/icon.4bpp"); -const u8 gMonIcon_Simisage[] = INCBIN_U8("graphics/pokemon/simisage/icon.4bpp"); -const u8 gMonIcon_Pansear[] = INCBIN_U8("graphics/pokemon/pansear/icon.4bpp"); -const u8 gMonIcon_Simisear[] = INCBIN_U8("graphics/pokemon/simisear/icon.4bpp"); -const u8 gMonIcon_Panpour[] = INCBIN_U8("graphics/pokemon/panpour/icon.4bpp"); -const u8 gMonIcon_Simipour[] = INCBIN_U8("graphics/pokemon/simipour/icon.4bpp"); -const u8 gMonIcon_Munna[] = INCBIN_U8("graphics/pokemon/munna/icon.4bpp"); -const u8 gMonIcon_Musharna[] = INCBIN_U8("graphics/pokemon/musharna/icon.4bpp"); -const u8 gMonIcon_Pidove[] = INCBIN_U8("graphics/pokemon/pidove/icon.4bpp"); -const u8 gMonIcon_Tranquill[] = INCBIN_U8("graphics/pokemon/tranquill/icon.4bpp"); -const u8 gMonIcon_Unfezant[] = INCBIN_U8("graphics/pokemon/unfezant/icon.4bpp"); -const u8 gMonIcon_UnfezantF[] = INCBIN_U8("graphics/pokemon/unfezant/iconf.4bpp"); -const u8 gMonIcon_Blitzle[] = INCBIN_U8("graphics/pokemon/blitzle/icon.4bpp"); -const u8 gMonIcon_Zebstrika[] = INCBIN_U8("graphics/pokemon/zebstrika/icon.4bpp"); -const u8 gMonIcon_Roggenrola[] = INCBIN_U8("graphics/pokemon/roggenrola/icon.4bpp"); -const u8 gMonIcon_Boldore[] = INCBIN_U8("graphics/pokemon/boldore/icon.4bpp"); -const u8 gMonIcon_Gigalith[] = INCBIN_U8("graphics/pokemon/gigalith/icon.4bpp"); -const u8 gMonIcon_Woobat[] = INCBIN_U8("graphics/pokemon/woobat/icon.4bpp"); -const u8 gMonIcon_Swoobat[] = INCBIN_U8("graphics/pokemon/swoobat/icon.4bpp"); -const u8 gMonIcon_Drilbur[] = INCBIN_U8("graphics/pokemon/drilbur/icon.4bpp"); -const u8 gMonIcon_Excadrill[] = INCBIN_U8("graphics/pokemon/excadrill/icon.4bpp"); -const u8 gMonIcon_Audino[] = INCBIN_U8("graphics/pokemon/audino/icon.4bpp"); -const u8 gMonIcon_Timburr[] = INCBIN_U8("graphics/pokemon/timburr/icon.4bpp"); -const u8 gMonIcon_Gurdurr[] = INCBIN_U8("graphics/pokemon/gurdurr/icon.4bpp"); -const u8 gMonIcon_Conkeldurr[] = INCBIN_U8("graphics/pokemon/conkeldurr/icon.4bpp"); -const u8 gMonIcon_Tympole[] = INCBIN_U8("graphics/pokemon/tympole/icon.4bpp"); -const u8 gMonIcon_Palpitoad[] = INCBIN_U8("graphics/pokemon/palpitoad/icon.4bpp"); -const u8 gMonIcon_Seismitoad[] = INCBIN_U8("graphics/pokemon/seismitoad/icon.4bpp"); -const u8 gMonIcon_Throh[] = INCBIN_U8("graphics/pokemon/throh/icon.4bpp"); -const u8 gMonIcon_Sawk[] = INCBIN_U8("graphics/pokemon/sawk/icon.4bpp"); -const u8 gMonIcon_Sewaddle[] = INCBIN_U8("graphics/pokemon/sewaddle/icon.4bpp"); -const u8 gMonIcon_Swadloon[] = INCBIN_U8("graphics/pokemon/swadloon/icon.4bpp"); -const u8 gMonIcon_Leavanny[] = INCBIN_U8("graphics/pokemon/leavanny/icon.4bpp"); -const u8 gMonIcon_Venipede[] = INCBIN_U8("graphics/pokemon/venipede/icon.4bpp"); -const u8 gMonIcon_Whirlipede[] = INCBIN_U8("graphics/pokemon/whirlipede/icon.4bpp"); -const u8 gMonIcon_Scolipede[] = INCBIN_U8("graphics/pokemon/scolipede/icon.4bpp"); -const u8 gMonIcon_Cottonee[] = INCBIN_U8("graphics/pokemon/cottonee/icon.4bpp"); -const u8 gMonIcon_Whimsicott[] = INCBIN_U8("graphics/pokemon/whimsicott/icon.4bpp"); -const u8 gMonIcon_Petilil[] = INCBIN_U8("graphics/pokemon/petilil/icon.4bpp"); -const u8 gMonIcon_Lilligant[] = INCBIN_U8("graphics/pokemon/lilligant/icon.4bpp"); -const u8 gMonIcon_Basculin[] = INCBIN_U8("graphics/pokemon/basculin/icon.4bpp"); -const u8 gMonIcon_Sandile[] = INCBIN_U8("graphics/pokemon/sandile/icon.4bpp"); -const u8 gMonIcon_Krokorok[] = INCBIN_U8("graphics/pokemon/krokorok/icon.4bpp"); -const u8 gMonIcon_Krookodile[] = INCBIN_U8("graphics/pokemon/krookodile/icon.4bpp"); -const u8 gMonIcon_Darumaka[] = INCBIN_U8("graphics/pokemon/darumaka/icon.4bpp"); -const u8 gMonIcon_Darmanitan[] = INCBIN_U8("graphics/pokemon/darmanitan/icon.4bpp"); -const u8 gMonIcon_Maractus[] = INCBIN_U8("graphics/pokemon/maractus/icon.4bpp"); -const u8 gMonIcon_Dwebble[] = INCBIN_U8("graphics/pokemon/dwebble/icon.4bpp"); -const u8 gMonIcon_Crustle[] = INCBIN_U8("graphics/pokemon/crustle/icon.4bpp"); -const u8 gMonIcon_Scraggy[] = INCBIN_U8("graphics/pokemon/scraggy/icon.4bpp"); -const u8 gMonIcon_Scrafty[] = INCBIN_U8("graphics/pokemon/scrafty/icon.4bpp"); -const u8 gMonIcon_Sigilyph[] = INCBIN_U8("graphics/pokemon/sigilyph/icon.4bpp"); -const u8 gMonIcon_Yamask[] = INCBIN_U8("graphics/pokemon/yamask/icon.4bpp"); -const u8 gMonIcon_Cofagrigus[] = INCBIN_U8("graphics/pokemon/cofagrigus/icon.4bpp"); -const u8 gMonIcon_Tirtouga[] = INCBIN_U8("graphics/pokemon/tirtouga/icon.4bpp"); -const u8 gMonIcon_Carracosta[] = INCBIN_U8("graphics/pokemon/carracosta/icon.4bpp"); -const u8 gMonIcon_Archen[] = INCBIN_U8("graphics/pokemon/archen/icon.4bpp"); -const u8 gMonIcon_Archeops[] = INCBIN_U8("graphics/pokemon/archeops/icon.4bpp"); -const u8 gMonIcon_Trubbish[] = INCBIN_U8("graphics/pokemon/trubbish/icon.4bpp"); -const u8 gMonIcon_Garbodor[] = INCBIN_U8("graphics/pokemon/garbodor/icon.4bpp"); -const u8 gMonIcon_Zorua[] = INCBIN_U8("graphics/pokemon/zorua/icon.4bpp"); -const u8 gMonIcon_Zoroark[] = INCBIN_U8("graphics/pokemon/zoroark/icon.4bpp"); -const u8 gMonIcon_Minccino[] = INCBIN_U8("graphics/pokemon/minccino/icon.4bpp"); -const u8 gMonIcon_Cinccino[] = INCBIN_U8("graphics/pokemon/cinccino/icon.4bpp"); -const u8 gMonIcon_Gothita[] = INCBIN_U8("graphics/pokemon/gothita/icon.4bpp"); -const u8 gMonIcon_Gothorita[] = INCBIN_U8("graphics/pokemon/gothorita/icon.4bpp"); -const u8 gMonIcon_Gothitelle[] = INCBIN_U8("graphics/pokemon/gothitelle/icon.4bpp"); -const u8 gMonIcon_Solosis[] = INCBIN_U8("graphics/pokemon/solosis/icon.4bpp"); -const u8 gMonIcon_Duosion[] = INCBIN_U8("graphics/pokemon/duosion/icon.4bpp"); -const u8 gMonIcon_Reuniclus[] = INCBIN_U8("graphics/pokemon/reuniclus/icon.4bpp"); -const u8 gMonIcon_Ducklett[] = INCBIN_U8("graphics/pokemon/ducklett/icon.4bpp"); -const u8 gMonIcon_Swanna[] = INCBIN_U8("graphics/pokemon/swanna/icon.4bpp"); -const u8 gMonIcon_Vanillite[] = INCBIN_U8("graphics/pokemon/vanillite/icon.4bpp"); -const u8 gMonIcon_Vanillish[] = INCBIN_U8("graphics/pokemon/vanillish/icon.4bpp"); -const u8 gMonIcon_Vanilluxe[] = INCBIN_U8("graphics/pokemon/vanilluxe/icon.4bpp"); -const u8 gMonIcon_Deerling[] = INCBIN_U8("graphics/pokemon/deerling/icon.4bpp"); -const u8 gMonIcon_Sawsbuck[] = INCBIN_U8("graphics/pokemon/sawsbuck/icon.4bpp"); -const u8 gMonIcon_Emolga[] = INCBIN_U8("graphics/pokemon/emolga/icon.4bpp"); -const u8 gMonIcon_Karrablast[] = INCBIN_U8("graphics/pokemon/karrablast/icon.4bpp"); -const u8 gMonIcon_Escavalier[] = INCBIN_U8("graphics/pokemon/escavalier/icon.4bpp"); -const u8 gMonIcon_Foongus[] = INCBIN_U8("graphics/pokemon/foongus/icon.4bpp"); -const u8 gMonIcon_Amoonguss[] = INCBIN_U8("graphics/pokemon/amoonguss/icon.4bpp"); -const u8 gMonIcon_Frillish[] = INCBIN_U8("graphics/pokemon/frillish/icon.4bpp"); -const u8 gMonIcon_FrillishF[] = INCBIN_U8("graphics/pokemon/frillish/iconf.4bpp"); -const u8 gMonIcon_Jellicent[] = INCBIN_U8("graphics/pokemon/jellicent/icon.4bpp"); -const u8 gMonIcon_JellicentF[] = INCBIN_U8("graphics/pokemon/jellicent/iconf.4bpp"); -const u8 gMonIcon_Alomomola[] = INCBIN_U8("graphics/pokemon/alomomola/icon.4bpp"); -const u8 gMonIcon_Joltik[] = INCBIN_U8("graphics/pokemon/joltik/icon.4bpp"); -const u8 gMonIcon_Galvantula[] = INCBIN_U8("graphics/pokemon/galvantula/icon.4bpp"); -const u8 gMonIcon_Ferroseed[] = INCBIN_U8("graphics/pokemon/ferroseed/icon.4bpp"); -const u8 gMonIcon_Ferrothorn[] = INCBIN_U8("graphics/pokemon/ferrothorn/icon.4bpp"); -const u8 gMonIcon_Klink[] = INCBIN_U8("graphics/pokemon/klink/icon.4bpp"); -const u8 gMonIcon_Klang[] = INCBIN_U8("graphics/pokemon/klang/icon.4bpp"); -const u8 gMonIcon_Klinklang[] = INCBIN_U8("graphics/pokemon/klinklang/icon.4bpp"); -const u8 gMonIcon_Tynamo[] = INCBIN_U8("graphics/pokemon/tynamo/icon.4bpp"); -const u8 gMonIcon_Eelektrik[] = INCBIN_U8("graphics/pokemon/eelektrik/icon.4bpp"); -const u8 gMonIcon_Eelektross[] = INCBIN_U8("graphics/pokemon/eelektross/icon.4bpp"); -const u8 gMonIcon_Elgyem[] = INCBIN_U8("graphics/pokemon/elgyem/icon.4bpp"); -const u8 gMonIcon_Beheeyem[] = INCBIN_U8("graphics/pokemon/beheeyem/icon.4bpp"); -const u8 gMonIcon_Litwick[] = INCBIN_U8("graphics/pokemon/litwick/icon.4bpp"); -const u8 gMonIcon_Lampent[] = INCBIN_U8("graphics/pokemon/lampent/icon.4bpp"); -const u8 gMonIcon_Chandelure[] = INCBIN_U8("graphics/pokemon/chandelure/icon.4bpp"); -const u8 gMonIcon_Axew[] = INCBIN_U8("graphics/pokemon/axew/icon.4bpp"); -const u8 gMonIcon_Fraxure[] = INCBIN_U8("graphics/pokemon/fraxure/icon.4bpp"); -const u8 gMonIcon_Haxorus[] = INCBIN_U8("graphics/pokemon/haxorus/icon.4bpp"); -const u8 gMonIcon_Cubchoo[] = INCBIN_U8("graphics/pokemon/cubchoo/icon.4bpp"); -const u8 gMonIcon_Beartic[] = INCBIN_U8("graphics/pokemon/beartic/icon.4bpp"); -const u8 gMonIcon_Cryogonal[] = INCBIN_U8("graphics/pokemon/cryogonal/icon.4bpp"); -const u8 gMonIcon_Shelmet[] = INCBIN_U8("graphics/pokemon/shelmet/icon.4bpp"); -const u8 gMonIcon_Accelgor[] = INCBIN_U8("graphics/pokemon/accelgor/icon.4bpp"); -const u8 gMonIcon_Stunfisk[] = INCBIN_U8("graphics/pokemon/stunfisk/icon.4bpp"); -const u8 gMonIcon_Mienfoo[] = INCBIN_U8("graphics/pokemon/mienfoo/icon.4bpp"); -const u8 gMonIcon_Mienshao[] = INCBIN_U8("graphics/pokemon/mienshao/icon.4bpp"); -const u8 gMonIcon_Druddigon[] = INCBIN_U8("graphics/pokemon/druddigon/icon.4bpp"); -const u8 gMonIcon_Golett[] = INCBIN_U8("graphics/pokemon/golett/icon.4bpp"); -const u8 gMonIcon_Golurk[] = INCBIN_U8("graphics/pokemon/golurk/icon.4bpp"); -const u8 gMonIcon_Pawniard[] = INCBIN_U8("graphics/pokemon/pawniard/icon.4bpp"); -const u8 gMonIcon_Bisharp[] = INCBIN_U8("graphics/pokemon/bisharp/icon.4bpp"); -const u8 gMonIcon_Bouffalant[] = INCBIN_U8("graphics/pokemon/bouffalant/icon.4bpp"); -const u8 gMonIcon_Rufflet[] = INCBIN_U8("graphics/pokemon/rufflet/icon.4bpp"); -const u8 gMonIcon_Braviary[] = INCBIN_U8("graphics/pokemon/braviary/icon.4bpp"); -const u8 gMonIcon_Vullaby[] = INCBIN_U8("graphics/pokemon/vullaby/icon.4bpp"); -const u8 gMonIcon_Mandibuzz[] = INCBIN_U8("graphics/pokemon/mandibuzz/icon.4bpp"); -const u8 gMonIcon_Heatmor[] = INCBIN_U8("graphics/pokemon/heatmor/icon.4bpp"); -const u8 gMonIcon_Durant[] = INCBIN_U8("graphics/pokemon/durant/icon.4bpp"); -const u8 gMonIcon_Deino[] = INCBIN_U8("graphics/pokemon/deino/icon.4bpp"); -const u8 gMonIcon_Zweilous[] = INCBIN_U8("graphics/pokemon/zweilous/icon.4bpp"); -const u8 gMonIcon_Hydreigon[] = INCBIN_U8("graphics/pokemon/hydreigon/icon.4bpp"); -const u8 gMonIcon_Larvesta[] = INCBIN_U8("graphics/pokemon/larvesta/icon.4bpp"); -const u8 gMonIcon_Volcarona[] = INCBIN_U8("graphics/pokemon/volcarona/icon.4bpp"); -const u8 gMonIcon_Cobalion[] = INCBIN_U8("graphics/pokemon/cobalion/icon.4bpp"); -const u8 gMonIcon_Terrakion[] = INCBIN_U8("graphics/pokemon/terrakion/icon.4bpp"); -const u8 gMonIcon_Virizion[] = INCBIN_U8("graphics/pokemon/virizion/icon.4bpp"); -const u8 gMonIcon_Tornadus[] = INCBIN_U8("graphics/pokemon/tornadus/icon.4bpp"); -const u8 gMonIcon_Thundurus[] = INCBIN_U8("graphics/pokemon/thundurus/icon.4bpp"); -const u8 gMonIcon_Reshiram[] = INCBIN_U8("graphics/pokemon/reshiram/icon.4bpp"); -const u8 gMonIcon_Zekrom[] = INCBIN_U8("graphics/pokemon/zekrom/icon.4bpp"); -const u8 gMonIcon_Landorus[] = INCBIN_U8("graphics/pokemon/landorus/icon.4bpp"); -const u8 gMonIcon_Kyurem[] = INCBIN_U8("graphics/pokemon/kyurem/icon.4bpp"); -const u8 gMonIcon_Keldeo[] = INCBIN_U8("graphics/pokemon/keldeo/icon.4bpp"); -const u8 gMonIcon_Meloetta[] = INCBIN_U8("graphics/pokemon/meloetta/icon.4bpp"); -const u8 gMonIcon_Genesect[] = INCBIN_U8("graphics/pokemon/genesect/icon.4bpp"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u8 gMonIcon_Chespin[] = INCBIN_U8("graphics/pokemon/chespin/icon.4bpp"); -const u8 gMonIcon_Quilladin[] = INCBIN_U8("graphics/pokemon/quilladin/icon.4bpp"); -const u8 gMonIcon_Chesnaught[] = INCBIN_U8("graphics/pokemon/chesnaught/icon.4bpp"); -const u8 gMonIcon_Fennekin[] = INCBIN_U8("graphics/pokemon/fennekin/icon.4bpp"); -const u8 gMonIcon_Braixen[] = INCBIN_U8("graphics/pokemon/braixen/icon.4bpp"); -const u8 gMonIcon_Delphox[] = INCBIN_U8("graphics/pokemon/delphox/icon.4bpp"); -const u8 gMonIcon_Froakie[] = INCBIN_U8("graphics/pokemon/froakie/icon.4bpp"); -const u8 gMonIcon_Frogadier[] = INCBIN_U8("graphics/pokemon/frogadier/icon.4bpp"); -const u8 gMonIcon_Greninja[] = INCBIN_U8("graphics/pokemon/greninja/icon.4bpp"); -const u8 gMonIcon_Bunnelby[] = INCBIN_U8("graphics/pokemon/bunnelby/icon.4bpp"); -const u8 gMonIcon_Diggersby[] = INCBIN_U8("graphics/pokemon/diggersby/icon.4bpp"); -const u8 gMonIcon_Fletchling[] = INCBIN_U8("graphics/pokemon/fletchling/icon.4bpp"); -const u8 gMonIcon_Fletchinder[] = INCBIN_U8("graphics/pokemon/fletchinder/icon.4bpp"); -const u8 gMonIcon_Talonflame[] = INCBIN_U8("graphics/pokemon/talonflame/icon.4bpp"); -const u8 gMonIcon_Scatterbug[] = INCBIN_U8("graphics/pokemon/scatterbug/icon.4bpp"); -const u8 gMonIcon_Spewpa[] = INCBIN_U8("graphics/pokemon/spewpa/icon.4bpp"); -const u8 gMonIcon_Vivillon[] = INCBIN_U8("graphics/pokemon/vivillon/meadow/icon.4bpp"); -const u8 gMonIcon_Litleo[] = INCBIN_U8("graphics/pokemon/litleo/icon.4bpp"); -const u8 gMonIcon_Pyroar[] = INCBIN_U8("graphics/pokemon/pyroar/icon.4bpp"); -const u8 gMonIcon_PyroarF[] = INCBIN_U8("graphics/pokemon/pyroar/iconf.4bpp"); -const u8 gMonIcon_Flabebe[] = INCBIN_U8("graphics/pokemon/flabebe/icon.4bpp"); -const u8 gMonIcon_Floette[] = INCBIN_U8("graphics/pokemon/floette/icon.4bpp"); -const u8 gMonIcon_Florges[] = INCBIN_U8("graphics/pokemon/florges/icon.4bpp"); -const u8 gMonIcon_Skiddo[] = INCBIN_U8("graphics/pokemon/skiddo/icon.4bpp"); -const u8 gMonIcon_Gogoat[] = INCBIN_U8("graphics/pokemon/gogoat/icon.4bpp"); -const u8 gMonIcon_Pancham[] = INCBIN_U8("graphics/pokemon/pancham/icon.4bpp"); -const u8 gMonIcon_Pangoro[] = INCBIN_U8("graphics/pokemon/pangoro/icon.4bpp"); -const u8 gMonIcon_Furfrou[] = INCBIN_U8("graphics/pokemon/furfrou/icon.4bpp"); -const u8 gMonIcon_Espurr[] = INCBIN_U8("graphics/pokemon/espurr/icon.4bpp"); -const u8 gMonIcon_Meowstic[] = INCBIN_U8("graphics/pokemon/meowstic/icon.4bpp"); -const u8 gMonIcon_Honedge[] = INCBIN_U8("graphics/pokemon/honedge/icon.4bpp"); -const u8 gMonIcon_Doublade[] = INCBIN_U8("graphics/pokemon/doublade/icon.4bpp"); -const u8 gMonIcon_Aegislash[] = INCBIN_U8("graphics/pokemon/aegislash/icon.4bpp"); -const u8 gMonIcon_Spritzee[] = INCBIN_U8("graphics/pokemon/spritzee/icon.4bpp"); -const u8 gMonIcon_Aromatisse[] = INCBIN_U8("graphics/pokemon/aromatisse/icon.4bpp"); -const u8 gMonIcon_Swirlix[] = INCBIN_U8("graphics/pokemon/swirlix/icon.4bpp"); -const u8 gMonIcon_Slurpuff[] = INCBIN_U8("graphics/pokemon/slurpuff/icon.4bpp"); -const u8 gMonIcon_Inkay[] = INCBIN_U8("graphics/pokemon/inkay/icon.4bpp"); -const u8 gMonIcon_Malamar[] = INCBIN_U8("graphics/pokemon/malamar/icon.4bpp"); -const u8 gMonIcon_Binacle[] = INCBIN_U8("graphics/pokemon/binacle/icon.4bpp"); -const u8 gMonIcon_Barbaracle[] = INCBIN_U8("graphics/pokemon/barbaracle/icon.4bpp"); -const u8 gMonIcon_Skrelp[] = INCBIN_U8("graphics/pokemon/skrelp/icon.4bpp"); -const u8 gMonIcon_Dragalge[] = INCBIN_U8("graphics/pokemon/dragalge/icon.4bpp"); -const u8 gMonIcon_Clauncher[] = INCBIN_U8("graphics/pokemon/clauncher/icon.4bpp"); -const u8 gMonIcon_Clawitzer[] = INCBIN_U8("graphics/pokemon/clawitzer/icon.4bpp"); -const u8 gMonIcon_Helioptile[] = INCBIN_U8("graphics/pokemon/helioptile/icon.4bpp"); -const u8 gMonIcon_Heliolisk[] = INCBIN_U8("graphics/pokemon/heliolisk/icon.4bpp"); -const u8 gMonIcon_Tyrunt[] = INCBIN_U8("graphics/pokemon/tyrunt/icon.4bpp"); -const u8 gMonIcon_Tyrantrum[] = INCBIN_U8("graphics/pokemon/tyrantrum/icon.4bpp"); -const u8 gMonIcon_Amaura[] = INCBIN_U8("graphics/pokemon/amaura/icon.4bpp"); -const u8 gMonIcon_Aurorus[] = INCBIN_U8("graphics/pokemon/aurorus/icon.4bpp"); -const u8 gMonIcon_Sylveon[] = INCBIN_U8("graphics/pokemon/sylveon/icon.4bpp"); -const u8 gMonIcon_Hawlucha[] = INCBIN_U8("graphics/pokemon/hawlucha/icon.4bpp"); -const u8 gMonIcon_Dedenne[] = INCBIN_U8("graphics/pokemon/dedenne/icon.4bpp"); -const u8 gMonIcon_Carbink[] = INCBIN_U8("graphics/pokemon/carbink/icon.4bpp"); -const u8 gMonIcon_Goomy[] = INCBIN_U8("graphics/pokemon/goomy/icon.4bpp"); -const u8 gMonIcon_Sliggoo[] = INCBIN_U8("graphics/pokemon/sliggoo/icon.4bpp"); -const u8 gMonIcon_Goodra[] = INCBIN_U8("graphics/pokemon/goodra/icon.4bpp"); -const u8 gMonIcon_Klefki[] = INCBIN_U8("graphics/pokemon/klefki/icon.4bpp"); -const u8 gMonIcon_Phantump[] = INCBIN_U8("graphics/pokemon/phantump/icon.4bpp"); -const u8 gMonIcon_Trevenant[] = INCBIN_U8("graphics/pokemon/trevenant/icon.4bpp"); -const u8 gMonIcon_Pumpkaboo[] = INCBIN_U8("graphics/pokemon/pumpkaboo/icon.4bpp"); -const u8 gMonIcon_Gourgeist[] = INCBIN_U8("graphics/pokemon/gourgeist/icon.4bpp"); -const u8 gMonIcon_Bergmite[] = INCBIN_U8("graphics/pokemon/bergmite/icon.4bpp"); -const u8 gMonIcon_Avalugg[] = INCBIN_U8("graphics/pokemon/avalugg/icon.4bpp"); -const u8 gMonIcon_Noibat[] = INCBIN_U8("graphics/pokemon/noibat/icon.4bpp"); -const u8 gMonIcon_Noivern[] = INCBIN_U8("graphics/pokemon/noivern/icon.4bpp"); -const u8 gMonIcon_Xerneas[] = INCBIN_U8("graphics/pokemon/xerneas/icon.4bpp"); -const u8 gMonIcon_Yveltal[] = INCBIN_U8("graphics/pokemon/yveltal/icon.4bpp"); -const u8 gMonIcon_Zygarde[] = INCBIN_U8("graphics/pokemon/zygarde/icon.4bpp"); -const u8 gMonIcon_Diancie[] = INCBIN_U8("graphics/pokemon/diancie/icon.4bpp"); -const u8 gMonIcon_Hoopa[] = INCBIN_U8("graphics/pokemon/hoopa/icon.4bpp"); -const u8 gMonIcon_Volcanion[] = INCBIN_U8("graphics/pokemon/volcanion/icon.4bpp"); -#endif -#if P_GEN_7_POKEMON == TRUE -const u8 gMonIcon_Rowlet[] = INCBIN_U8("graphics/pokemon/rowlet/icon.4bpp"); -const u8 gMonIcon_Dartrix[] = INCBIN_U8("graphics/pokemon/dartrix/icon.4bpp"); -const u8 gMonIcon_Decidueye[] = INCBIN_U8("graphics/pokemon/decidueye/icon.4bpp"); -const u8 gMonIcon_Litten[] = INCBIN_U8("graphics/pokemon/litten/icon.4bpp"); -const u8 gMonIcon_Torracat[] = INCBIN_U8("graphics/pokemon/torracat/icon.4bpp"); -const u8 gMonIcon_Incineroar[] = INCBIN_U8("graphics/pokemon/incineroar/icon.4bpp"); -const u8 gMonIcon_Popplio[] = INCBIN_U8("graphics/pokemon/popplio/icon.4bpp"); -const u8 gMonIcon_Brionne[] = INCBIN_U8("graphics/pokemon/brionne/icon.4bpp"); -const u8 gMonIcon_Primarina[] = INCBIN_U8("graphics/pokemon/primarina/icon.4bpp"); -const u8 gMonIcon_Pikipek[] = INCBIN_U8("graphics/pokemon/pikipek/icon.4bpp"); -const u8 gMonIcon_Trumbeak[] = INCBIN_U8("graphics/pokemon/trumbeak/icon.4bpp"); -const u8 gMonIcon_Toucannon[] = INCBIN_U8("graphics/pokemon/toucannon/icon.4bpp"); -const u8 gMonIcon_Yungoos[] = INCBIN_U8("graphics/pokemon/yungoos/icon.4bpp"); -const u8 gMonIcon_Gumshoos[] = INCBIN_U8("graphics/pokemon/gumshoos/icon.4bpp"); -const u8 gMonIcon_Grubbin[] = INCBIN_U8("graphics/pokemon/grubbin/icon.4bpp"); -const u8 gMonIcon_Charjabug[] = INCBIN_U8("graphics/pokemon/charjabug/icon.4bpp"); -const u8 gMonIcon_Vikavolt[] = INCBIN_U8("graphics/pokemon/vikavolt/icon.4bpp"); -const u8 gMonIcon_Crabrawler[] = INCBIN_U8("graphics/pokemon/crabrawler/icon.4bpp"); -const u8 gMonIcon_Crabominable[] = INCBIN_U8("graphics/pokemon/crabominable/icon.4bpp"); -const u8 gMonIcon_Oricorio[] = INCBIN_U8("graphics/pokemon/oricorio/icon.4bpp"); -const u8 gMonIcon_Cutiefly[] = INCBIN_U8("graphics/pokemon/cutiefly/icon.4bpp"); -const u8 gMonIcon_Ribombee[] = INCBIN_U8("graphics/pokemon/ribombee/icon.4bpp"); -const u8 gMonIcon_Rockruff[] = INCBIN_U8("graphics/pokemon/rockruff/icon.4bpp"); -const u8 gMonIcon_Lycanroc[] = INCBIN_U8("graphics/pokemon/lycanroc/icon.4bpp"); -const u8 gMonIcon_Wishiwashi[] = INCBIN_U8("graphics/pokemon/wishiwashi/icon.4bpp"); -const u8 gMonIcon_Mareanie[] = INCBIN_U8("graphics/pokemon/mareanie/icon.4bpp"); -const u8 gMonIcon_Toxapex[] = INCBIN_U8("graphics/pokemon/toxapex/icon.4bpp"); -const u8 gMonIcon_Mudbray[] = INCBIN_U8("graphics/pokemon/mudbray/icon.4bpp"); -const u8 gMonIcon_Mudsdale[] = INCBIN_U8("graphics/pokemon/mudsdale/icon.4bpp"); -const u8 gMonIcon_Dewpider[] = INCBIN_U8("graphics/pokemon/dewpider/icon.4bpp"); -const u8 gMonIcon_Araquanid[] = INCBIN_U8("graphics/pokemon/araquanid/icon.4bpp"); -const u8 gMonIcon_Fomantis[] = INCBIN_U8("graphics/pokemon/fomantis/icon.4bpp"); -const u8 gMonIcon_Lurantis[] = INCBIN_U8("graphics/pokemon/lurantis/icon.4bpp"); -const u8 gMonIcon_Morelull[] = INCBIN_U8("graphics/pokemon/morelull/icon.4bpp"); -const u8 gMonIcon_Shiinotic[] = INCBIN_U8("graphics/pokemon/shiinotic/icon.4bpp"); -const u8 gMonIcon_Salandit[] = INCBIN_U8("graphics/pokemon/salandit/icon.4bpp"); -const u8 gMonIcon_Salazzle[] = INCBIN_U8("graphics/pokemon/salazzle/icon.4bpp"); -const u8 gMonIcon_Stufful[] = INCBIN_U8("graphics/pokemon/stufful/icon.4bpp"); -const u8 gMonIcon_Bewear[] = INCBIN_U8("graphics/pokemon/bewear/icon.4bpp"); -const u8 gMonIcon_Bounsweet[] = INCBIN_U8("graphics/pokemon/bounsweet/icon.4bpp"); -const u8 gMonIcon_Steenee[] = INCBIN_U8("graphics/pokemon/steenee/icon.4bpp"); -const u8 gMonIcon_Tsareena[] = INCBIN_U8("graphics/pokemon/tsareena/icon.4bpp"); -const u8 gMonIcon_Comfey[] = INCBIN_U8("graphics/pokemon/comfey/icon.4bpp"); -const u8 gMonIcon_Oranguru[] = INCBIN_U8("graphics/pokemon/oranguru/icon.4bpp"); -const u8 gMonIcon_Passimian[] = INCBIN_U8("graphics/pokemon/passimian/icon.4bpp"); -const u8 gMonIcon_Wimpod[] = INCBIN_U8("graphics/pokemon/wimpod/icon.4bpp"); -const u8 gMonIcon_Golisopod[] = INCBIN_U8("graphics/pokemon/golisopod/icon.4bpp"); -const u8 gMonIcon_Sandygast[] = INCBIN_U8("graphics/pokemon/sandygast/icon.4bpp"); -const u8 gMonIcon_Palossand[] = INCBIN_U8("graphics/pokemon/palossand/icon.4bpp"); -const u8 gMonIcon_Pyukumuku[] = INCBIN_U8("graphics/pokemon/pyukumuku/icon.4bpp"); -const u8 gMonIcon_TypeNull[] = INCBIN_U8("graphics/pokemon/type_null/icon.4bpp"); -const u8 gMonIcon_Silvally[] = INCBIN_U8("graphics/pokemon/silvally/icon.4bpp"); -const u8 gMonIcon_Minior[] = INCBIN_U8("graphics/pokemon/minior/icon.4bpp"); -const u8 gMonIcon_Komala[] = INCBIN_U8("graphics/pokemon/komala/icon.4bpp"); -const u8 gMonIcon_Turtonator[] = INCBIN_U8("graphics/pokemon/turtonator/icon.4bpp"); -const u8 gMonIcon_Togedemaru[] = INCBIN_U8("graphics/pokemon/togedemaru/icon.4bpp"); -const u8 gMonIcon_Mimikyu[] = INCBIN_U8("graphics/pokemon/mimikyu/icon.4bpp"); -const u8 gMonIcon_Bruxish[] = INCBIN_U8("graphics/pokemon/bruxish/icon.4bpp"); -const u8 gMonIcon_Drampa[] = INCBIN_U8("graphics/pokemon/drampa/icon.4bpp"); -const u8 gMonIcon_Dhelmise[] = INCBIN_U8("graphics/pokemon/dhelmise/icon.4bpp"); -const u8 gMonIcon_JangmoO[] = INCBIN_U8("graphics/pokemon/jangmo_o/icon.4bpp"); -const u8 gMonIcon_HakamoO[] = INCBIN_U8("graphics/pokemon/hakamo_o/icon.4bpp"); -const u8 gMonIcon_KommoO[] = INCBIN_U8("graphics/pokemon/kommo_o/icon.4bpp"); -const u8 gMonIcon_TapuKoko[] = INCBIN_U8("graphics/pokemon/tapu_koko/icon.4bpp"); -const u8 gMonIcon_TapuLele[] = INCBIN_U8("graphics/pokemon/tapu_lele/icon.4bpp"); -const u8 gMonIcon_TapuBulu[] = INCBIN_U8("graphics/pokemon/tapu_bulu/icon.4bpp"); -const u8 gMonIcon_TapuFini[] = INCBIN_U8("graphics/pokemon/tapu_fini/icon.4bpp"); -const u8 gMonIcon_Cosmog[] = INCBIN_U8("graphics/pokemon/cosmog/icon.4bpp"); -const u8 gMonIcon_Cosmoem[] = INCBIN_U8("graphics/pokemon/cosmoem/icon.4bpp"); -const u8 gMonIcon_Solgaleo[] = INCBIN_U8("graphics/pokemon/solgaleo/icon.4bpp"); -const u8 gMonIcon_Lunala[] = INCBIN_U8("graphics/pokemon/lunala/icon.4bpp"); -const u8 gMonIcon_Nihilego[] = INCBIN_U8("graphics/pokemon/nihilego/icon.4bpp"); -const u8 gMonIcon_Buzzwole[] = INCBIN_U8("graphics/pokemon/buzzwole/icon.4bpp"); -const u8 gMonIcon_Pheromosa[] = INCBIN_U8("graphics/pokemon/pheromosa/icon.4bpp"); -const u8 gMonIcon_Xurkitree[] = INCBIN_U8("graphics/pokemon/xurkitree/icon.4bpp"); -const u8 gMonIcon_Celesteela[] = INCBIN_U8("graphics/pokemon/celesteela/icon.4bpp"); -const u8 gMonIcon_Kartana[] = INCBIN_U8("graphics/pokemon/kartana/icon.4bpp"); -const u8 gMonIcon_Guzzlord[] = INCBIN_U8("graphics/pokemon/guzzlord/icon.4bpp"); -const u8 gMonIcon_Necrozma[] = INCBIN_U8("graphics/pokemon/necrozma/icon.4bpp"); -const u8 gMonIcon_Magearna[] = INCBIN_U8("graphics/pokemon/magearna/icon.4bpp"); -const u8 gMonIcon_Marshadow[] = INCBIN_U8("graphics/pokemon/marshadow/icon.4bpp"); -const u8 gMonIcon_Poipole[] = INCBIN_U8("graphics/pokemon/poipole/icon.4bpp"); -const u8 gMonIcon_Naganadel[] = INCBIN_U8("graphics/pokemon/naganadel/icon.4bpp"); -const u8 gMonIcon_Stakataka[] = INCBIN_U8("graphics/pokemon/stakataka/icon.4bpp"); -const u8 gMonIcon_Blacephalon[] = INCBIN_U8("graphics/pokemon/blacephalon/icon.4bpp"); -const u8 gMonIcon_Zeraora[] = INCBIN_U8("graphics/pokemon/zeraora/icon.4bpp"); -const u8 gMonIcon_Meltan[] = INCBIN_U8("graphics/pokemon/meltan/icon.4bpp"); -const u8 gMonIcon_Melmetal[] = INCBIN_U8("graphics/pokemon/melmetal/icon.4bpp"); -#endif -#if P_GEN_8_POKEMON == TRUE -const u8 gMonIcon_Grookey[] = INCBIN_U8("graphics/pokemon/grookey/icon.4bpp"); -const u8 gMonIcon_Thwackey[] = INCBIN_U8("graphics/pokemon/thwackey/icon.4bpp"); -const u8 gMonIcon_Rillaboom[] = INCBIN_U8("graphics/pokemon/rillaboom/icon.4bpp"); -const u8 gMonIcon_Scorbunny[] = INCBIN_U8("graphics/pokemon/scorbunny/icon.4bpp"); -const u8 gMonIcon_Raboot[] = INCBIN_U8("graphics/pokemon/raboot/icon.4bpp"); -const u8 gMonIcon_Cinderace[] = INCBIN_U8("graphics/pokemon/cinderace/icon.4bpp"); -const u8 gMonIcon_Sobble[] = INCBIN_U8("graphics/pokemon/sobble/icon.4bpp"); -const u8 gMonIcon_Drizzile[] = INCBIN_U8("graphics/pokemon/drizzile/icon.4bpp"); -const u8 gMonIcon_Inteleon[] = INCBIN_U8("graphics/pokemon/inteleon/icon.4bpp"); -const u8 gMonIcon_Skwovet[] = INCBIN_U8("graphics/pokemon/skwovet/icon.4bpp"); -const u8 gMonIcon_Greedent[] = INCBIN_U8("graphics/pokemon/greedent/icon.4bpp"); -const u8 gMonIcon_Rookidee[] = INCBIN_U8("graphics/pokemon/rookidee/icon.4bpp"); -const u8 gMonIcon_Corvisquire[] = INCBIN_U8("graphics/pokemon/corvisquire/icon.4bpp"); -const u8 gMonIcon_Corviknight[] = INCBIN_U8("graphics/pokemon/corviknight/icon.4bpp"); -const u8 gMonIcon_Blipbug[] = INCBIN_U8("graphics/pokemon/blipbug/icon.4bpp"); -const u8 gMonIcon_Dottler[] = INCBIN_U8("graphics/pokemon/dottler/icon.4bpp"); -const u8 gMonIcon_Orbeetle[] = INCBIN_U8("graphics/pokemon/orbeetle/icon.4bpp"); -const u8 gMonIcon_Nickit[] = INCBIN_U8("graphics/pokemon/nickit/icon.4bpp"); -const u8 gMonIcon_Thievul[] = INCBIN_U8("graphics/pokemon/thievul/icon.4bpp"); -const u8 gMonIcon_Gossifleur[] = INCBIN_U8("graphics/pokemon/gossifleur/icon.4bpp"); -const u8 gMonIcon_Eldegoss[] = INCBIN_U8("graphics/pokemon/eldegoss/icon.4bpp"); -const u8 gMonIcon_Wooloo[] = INCBIN_U8("graphics/pokemon/wooloo/icon.4bpp"); -const u8 gMonIcon_Dubwool[] = INCBIN_U8("graphics/pokemon/dubwool/icon.4bpp"); -const u8 gMonIcon_Chewtle[] = INCBIN_U8("graphics/pokemon/chewtle/icon.4bpp"); -const u8 gMonIcon_Drednaw[] = INCBIN_U8("graphics/pokemon/drednaw/icon.4bpp"); -const u8 gMonIcon_Yamper[] = INCBIN_U8("graphics/pokemon/yamper/icon.4bpp"); -const u8 gMonIcon_Boltund[] = INCBIN_U8("graphics/pokemon/boltund/icon.4bpp"); -const u8 gMonIcon_Rolycoly[] = INCBIN_U8("graphics/pokemon/rolycoly/icon.4bpp"); -const u8 gMonIcon_Carkol[] = INCBIN_U8("graphics/pokemon/carkol/icon.4bpp"); -const u8 gMonIcon_Coalossal[] = INCBIN_U8("graphics/pokemon/coalossal/icon.4bpp"); -const u8 gMonIcon_Applin[] = INCBIN_U8("graphics/pokemon/applin/icon.4bpp"); -const u8 gMonIcon_Flapple[] = INCBIN_U8("graphics/pokemon/flapple/icon.4bpp"); -const u8 gMonIcon_Appletun[] = INCBIN_U8("graphics/pokemon/appletun/icon.4bpp"); -const u8 gMonIcon_Silicobra[] = INCBIN_U8("graphics/pokemon/silicobra/icon.4bpp"); -const u8 gMonIcon_Sandaconda[] = INCBIN_U8("graphics/pokemon/sandaconda/icon.4bpp"); -const u8 gMonIcon_Cramorant[] = INCBIN_U8("graphics/pokemon/cramorant/icon.4bpp"); -const u8 gMonIcon_Arrokuda[] = INCBIN_U8("graphics/pokemon/arrokuda/icon.4bpp"); -const u8 gMonIcon_Barraskewda[] = INCBIN_U8("graphics/pokemon/barraskewda/icon.4bpp"); -const u8 gMonIcon_Toxel[] = INCBIN_U8("graphics/pokemon/toxel/icon.4bpp"); -const u8 gMonIcon_Toxtricity[] = INCBIN_U8("graphics/pokemon/toxtricity/icon.4bpp"); -const u8 gMonIcon_Sizzlipede[] = INCBIN_U8("graphics/pokemon/sizzlipede/icon.4bpp"); -const u8 gMonIcon_Centiskorch[] = INCBIN_U8("graphics/pokemon/centiskorch/icon.4bpp"); -const u8 gMonIcon_Clobbopus[] = INCBIN_U8("graphics/pokemon/clobbopus/icon.4bpp"); -const u8 gMonIcon_Grapploct[] = INCBIN_U8("graphics/pokemon/grapploct/icon.4bpp"); -const u8 gMonIcon_Sinistea[] = INCBIN_U8("graphics/pokemon/sinistea/icon.4bpp"); -const u8 gMonIcon_Polteageist[] = INCBIN_U8("graphics/pokemon/polteageist/icon.4bpp"); -const u8 gMonIcon_Hatenna[] = INCBIN_U8("graphics/pokemon/hatenna/icon.4bpp"); -const u8 gMonIcon_Hattrem[] = INCBIN_U8("graphics/pokemon/hattrem/icon.4bpp"); -const u8 gMonIcon_Hatterene[] = INCBIN_U8("graphics/pokemon/hatterene/icon.4bpp"); -const u8 gMonIcon_Impidimp[] = INCBIN_U8("graphics/pokemon/impidimp/icon.4bpp"); -const u8 gMonIcon_Morgrem[] = INCBIN_U8("graphics/pokemon/morgrem/icon.4bpp"); -const u8 gMonIcon_Grimmsnarl[] = INCBIN_U8("graphics/pokemon/grimmsnarl/icon.4bpp"); -const u8 gMonIcon_Obstagoon[] = INCBIN_U8("graphics/pokemon/obstagoon/icon.4bpp"); -const u8 gMonIcon_Perrserker[] = INCBIN_U8("graphics/pokemon/perrserker/icon.4bpp"); -const u8 gMonIcon_Cursola[] = INCBIN_U8("graphics/pokemon/cursola/icon.4bpp"); -const u8 gMonIcon_Sirfetchd[] = INCBIN_U8("graphics/pokemon/sirfetchd/icon.4bpp"); -const u8 gMonIcon_MrRime[] = INCBIN_U8("graphics/pokemon/mr_rime/icon.4bpp"); -const u8 gMonIcon_Runerigus[] = INCBIN_U8("graphics/pokemon/runerigus/icon.4bpp"); -const u8 gMonIcon_Milcery[] = INCBIN_U8("graphics/pokemon/milcery/icon.4bpp"); -const u8 gMonIcon_Alcremie[] = INCBIN_U8("graphics/pokemon/alcremie/icon.4bpp"); -const u8 gMonIcon_Falinks[] = INCBIN_U8("graphics/pokemon/falinks/icon.4bpp"); -const u8 gMonIcon_Pincurchin[] = INCBIN_U8("graphics/pokemon/pincurchin/icon.4bpp"); -const u8 gMonIcon_Snom[] = INCBIN_U8("graphics/pokemon/snom/icon.4bpp"); -const u8 gMonIcon_Frosmoth[] = INCBIN_U8("graphics/pokemon/frosmoth/icon.4bpp"); -const u8 gMonIcon_Stonjourner[] = INCBIN_U8("graphics/pokemon/stonjourner/icon.4bpp"); -const u8 gMonIcon_Eiscue[] = INCBIN_U8("graphics/pokemon/eiscue/icon.4bpp"); -const u8 gMonIcon_Indeedee[] = INCBIN_U8("graphics/pokemon/indeedee/icon.4bpp"); -const u8 gMonIcon_Morpeko[] = INCBIN_U8("graphics/pokemon/morpeko/icon.4bpp"); -const u8 gMonIcon_Cufant[] = INCBIN_U8("graphics/pokemon/cufant/icon.4bpp"); -const u8 gMonIcon_Copperajah[] = INCBIN_U8("graphics/pokemon/copperajah/icon.4bpp"); -const u8 gMonIcon_Dracozolt[] = INCBIN_U8("graphics/pokemon/dracozolt/icon.4bpp"); -const u8 gMonIcon_Arctozolt[] = INCBIN_U8("graphics/pokemon/arctozolt/icon.4bpp"); -const u8 gMonIcon_Dracovish[] = INCBIN_U8("graphics/pokemon/dracovish/icon.4bpp"); -const u8 gMonIcon_Arctovish[] = INCBIN_U8("graphics/pokemon/arctovish/icon.4bpp"); -const u8 gMonIcon_Duraludon[] = INCBIN_U8("graphics/pokemon/duraludon/icon.4bpp"); -const u8 gMonIcon_Dreepy[] = INCBIN_U8("graphics/pokemon/dreepy/icon.4bpp"); -const u8 gMonIcon_Drakloak[] = INCBIN_U8("graphics/pokemon/drakloak/icon.4bpp"); -const u8 gMonIcon_Dragapult[] = INCBIN_U8("graphics/pokemon/dragapult/icon.4bpp"); -const u8 gMonIcon_Zacian[] = INCBIN_U8("graphics/pokemon/zacian/icon.4bpp"); -const u8 gMonIcon_Zamazenta[] = INCBIN_U8("graphics/pokemon/zamazenta/icon.4bpp"); -const u8 gMonIcon_Eternatus[] = INCBIN_U8("graphics/pokemon/eternatus/icon.4bpp"); -const u8 gMonIcon_Kubfu[] = INCBIN_U8("graphics/pokemon/kubfu/icon.4bpp"); -const u8 gMonIcon_Urshifu[] = INCBIN_U8("graphics/pokemon/urshifu/icon.4bpp"); -const u8 gMonIcon_Zarude[] = INCBIN_U8("graphics/pokemon/zarude/icon.4bpp"); -const u8 gMonIcon_Regieleki[] = INCBIN_U8("graphics/pokemon/regieleki/icon.4bpp"); -const u8 gMonIcon_Regidrago[] = INCBIN_U8("graphics/pokemon/regidrago/icon.4bpp"); -const u8 gMonIcon_Glastrier[] = INCBIN_U8("graphics/pokemon/glastrier/icon.4bpp"); -const u8 gMonIcon_Spectrier[] = INCBIN_U8("graphics/pokemon/spectrier/icon.4bpp"); -const u8 gMonIcon_Calyrex[] = INCBIN_U8("graphics/pokemon/calyrex/icon.4bpp"); -const u8 gMonIcon_Wyrdeer[] = INCBIN_U8("graphics/pokemon/wyrdeer/icon.4bpp"); -const u8 gMonIcon_Kleavor[] = INCBIN_U8("graphics/pokemon/kleavor/icon.4bpp"); -const u8 gMonIcon_Ursaluna[] = INCBIN_U8("graphics/pokemon/ursaluna/icon.4bpp"); -const u8 gMonIcon_Basculegion[] = INCBIN_U8("graphics/pokemon/basculegion/icon.4bpp"); -const u8 gMonIcon_Sneasler[] = INCBIN_U8("graphics/pokemon/sneasler/icon.4bpp"); -const u8 gMonIcon_Overqwil[] = INCBIN_U8("graphics/pokemon/overqwil/icon.4bpp"); -const u8 gMonIcon_Enamorus[] = INCBIN_U8("graphics/pokemon/enamorus/icon.4bpp"); -#endif -const u8 gMonIcon_VenusaurMega[] = INCBIN_U8("graphics/pokemon/venusaur/mega/icon.4bpp"); -const u8 gMonIcon_CharizardMegaX[] = INCBIN_U8("graphics/pokemon/charizard/mega_x/icon.4bpp"); -const u8 gMonIcon_CharizardMegaY[] = INCBIN_U8("graphics/pokemon/charizard/mega_y/icon.4bpp"); -const u8 gMonIcon_BlastoiseMega[] = INCBIN_U8("graphics/pokemon/blastoise/mega/icon.4bpp"); -const u8 gMonIcon_BeedrillMega[] = INCBIN_U8("graphics/pokemon/beedrill/mega/icon.4bpp"); -const u8 gMonIcon_PidgeotMega[] = INCBIN_U8("graphics/pokemon/pidgeot/mega/icon.4bpp"); -const u8 gMonIcon_AlakazamMega[] = INCBIN_U8("graphics/pokemon/alakazam/mega/icon.4bpp"); -const u8 gMonIcon_SlowbroMega[] = INCBIN_U8("graphics/pokemon/slowbro/mega/icon.4bpp"); -const u8 gMonIcon_GengarMega[] = INCBIN_U8("graphics/pokemon/gengar/mega/icon.4bpp"); -const u8 gMonIcon_KangaskhanMega[] = INCBIN_U8("graphics/pokemon/kangaskhan/mega/icon.4bpp"); -const u8 gMonIcon_PinsirMega[] = INCBIN_U8("graphics/pokemon/pinsir/mega/icon.4bpp"); -const u8 gMonIcon_GyaradosMega[] = INCBIN_U8("graphics/pokemon/gyarados/mega/icon.4bpp"); -const u8 gMonIcon_AerodactylMega[] = INCBIN_U8("graphics/pokemon/aerodactyl/mega/icon.4bpp"); -const u8 gMonIcon_MewtwoMegaX[] = INCBIN_U8("graphics/pokemon/mewtwo/mega_x/icon.4bpp"); -const u8 gMonIcon_MewtwoMegaY[] = INCBIN_U8("graphics/pokemon/mewtwo/mega_y/icon.4bpp"); -const u8 gMonIcon_AmpharosMega[] = INCBIN_U8("graphics/pokemon/ampharos/mega/icon.4bpp"); -const u8 gMonIcon_SteelixMega[] = INCBIN_U8("graphics/pokemon/steelix/mega/icon.4bpp"); -const u8 gMonIcon_ScizorMega[] = INCBIN_U8("graphics/pokemon/scizor/mega/icon.4bpp"); -const u8 gMonIcon_HeracrossMega[] = INCBIN_U8("graphics/pokemon/heracross/mega/icon.4bpp"); -const u8 gMonIcon_HoundoomMega[] = INCBIN_U8("graphics/pokemon/houndoom/mega/icon.4bpp"); -const u8 gMonIcon_TyranitarMega[] = INCBIN_U8("graphics/pokemon/tyranitar/mega/icon.4bpp"); -const u8 gMonIcon_SceptileMega[] = INCBIN_U8("graphics/pokemon/sceptile/mega/icon.4bpp"); -const u8 gMonIcon_BlazikenMega[] = INCBIN_U8("graphics/pokemon/blaziken/mega/icon.4bpp"); -const u8 gMonIcon_SwampertMega[] = INCBIN_U8("graphics/pokemon/swampert/mega/icon.4bpp"); -const u8 gMonIcon_GardevoirMega[] = INCBIN_U8("graphics/pokemon/gardevoir/mega/icon.4bpp"); -const u8 gMonIcon_SableyeMega[] = INCBIN_U8("graphics/pokemon/sableye/mega/icon.4bpp"); -const u8 gMonIcon_MawileMega[] = INCBIN_U8("graphics/pokemon/mawile/mega/icon.4bpp"); -const u8 gMonIcon_AggronMega[] = INCBIN_U8("graphics/pokemon/aggron/mega/icon.4bpp"); -const u8 gMonIcon_MedichamMega[] = INCBIN_U8("graphics/pokemon/medicham/mega/icon.4bpp"); -const u8 gMonIcon_ManectricMega[] = INCBIN_U8("graphics/pokemon/manectric/mega/icon.4bpp"); -const u8 gMonIcon_SharpedoMega[] = INCBIN_U8("graphics/pokemon/sharpedo/mega/icon.4bpp"); -const u8 gMonIcon_CameruptMega[] = INCBIN_U8("graphics/pokemon/camerupt/mega/icon.4bpp"); -const u8 gMonIcon_AltariaMega[] = INCBIN_U8("graphics/pokemon/altaria/mega/icon.4bpp"); -const u8 gMonIcon_BanetteMega[] = INCBIN_U8("graphics/pokemon/banette/mega/icon.4bpp"); -const u8 gMonIcon_AbsolMega[] = INCBIN_U8("graphics/pokemon/absol/mega/icon.4bpp"); -const u8 gMonIcon_GlalieMega[] = INCBIN_U8("graphics/pokemon/glalie/mega/icon.4bpp"); -const u8 gMonIcon_SalamenceMega[] = INCBIN_U8("graphics/pokemon/salamence/mega/icon.4bpp"); -const u8 gMonIcon_MetagrossMega[] = INCBIN_U8("graphics/pokemon/metagross/mega/icon.4bpp"); -const u8 gMonIcon_LatiasMega[] = INCBIN_U8("graphics/pokemon/latias/mega/icon.4bpp"); -const u8 gMonIcon_LatiosMega[] = INCBIN_U8("graphics/pokemon/latios/mega/icon.4bpp"); -#if P_GEN_4_POKEMON == TRUE -const u8 gMonIcon_LopunnyMega[] = INCBIN_U8("graphics/pokemon/lopunny/mega/icon.4bpp"); -const u8 gMonIcon_GarchompMega[] = INCBIN_U8("graphics/pokemon/garchomp/mega/icon.4bpp"); -const u8 gMonIcon_LucarioMega[] = INCBIN_U8("graphics/pokemon/lucario/mega/icon.4bpp"); -const u8 gMonIcon_AbomasnowMega[] = INCBIN_U8("graphics/pokemon/abomasnow/mega/icon.4bpp"); -const u8 gMonIcon_GalladeMega[] = INCBIN_U8("graphics/pokemon/gallade/mega/icon.4bpp"); -#endif -#if P_GEN_5_POKEMON == TRUE -const u8 gMonIcon_AudinoMega[] = INCBIN_U8("graphics/pokemon/audino/mega/icon.4bpp"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u8 gMonIcon_DiancieMega[] = INCBIN_U8("graphics/pokemon/diancie/mega/icon.4bpp"); -#endif -const u8 gMonIcon_RayquazaMega[] = INCBIN_U8("graphics/pokemon/rayquaza/mega/icon.4bpp"); -const u8 gMonIcon_KyogrePrimal[] = INCBIN_U8("graphics/pokemon/kyogre/primal/icon.4bpp"); -const u8 gMonIcon_GroudonPrimal[] = INCBIN_U8("graphics/pokemon/groudon/primal/icon.4bpp"); -const u8 gMonIcon_RattataAlolan[] = INCBIN_U8("graphics/pokemon/rattata/alolan/icon.4bpp"); -const u8 gMonIcon_RaticateAlolan[] = INCBIN_U8("graphics/pokemon/raticate/alolan/icon.4bpp"); -const u8 gMonIcon_RaichuAlolan[] = INCBIN_U8("graphics/pokemon/raichu/alolan/icon.4bpp"); -const u8 gMonIcon_SandshrewAlolan[] = INCBIN_U8("graphics/pokemon/sandshrew/alolan/icon.4bpp"); -const u8 gMonIcon_SandslashAlolan[] = INCBIN_U8("graphics/pokemon/sandslash/alolan/icon.4bpp"); -const u8 gMonIcon_VulpixAlolan[] = INCBIN_U8("graphics/pokemon/vulpix/alolan/icon.4bpp"); -const u8 gMonIcon_NinetalesAlolan[] = INCBIN_U8("graphics/pokemon/ninetales/alolan/icon.4bpp"); -const u8 gMonIcon_DiglettAlolan[] = INCBIN_U8("graphics/pokemon/diglett/alolan/icon.4bpp"); -const u8 gMonIcon_DugtrioAlolan[] = INCBIN_U8("graphics/pokemon/dugtrio/alolan/icon.4bpp"); -const u8 gMonIcon_MeowthAlolan[] = INCBIN_U8("graphics/pokemon/meowth/alolan/icon.4bpp"); -const u8 gMonIcon_PersianAlolan[] = INCBIN_U8("graphics/pokemon/persian/alolan/icon.4bpp"); -const u8 gMonIcon_GeodudeAlolan[] = INCBIN_U8("graphics/pokemon/geodude/alolan/icon.4bpp"); -const u8 gMonIcon_GravelerAlolan[] = INCBIN_U8("graphics/pokemon/graveler/alolan/icon.4bpp"); -const u8 gMonIcon_GolemAlolan[] = INCBIN_U8("graphics/pokemon/golem/alolan/icon.4bpp"); -const u8 gMonIcon_GrimerAlolan[] = INCBIN_U8("graphics/pokemon/grimer/alolan/icon.4bpp"); -const u8 gMonIcon_MukAlolan[] = INCBIN_U8("graphics/pokemon/muk/alolan/icon.4bpp"); -const u8 gMonIcon_ExeggutorAlolan[] = INCBIN_U8("graphics/pokemon/exeggutor/alolan/icon.4bpp"); -const u8 gMonIcon_MarowakAlolan[] = INCBIN_U8("graphics/pokemon/marowak/alolan/icon.4bpp"); -const u8 gMonIcon_MeowthGalarian[] = INCBIN_U8("graphics/pokemon/meowth/galarian/icon.4bpp"); -const u8 gMonIcon_PonytaGalarian[] = INCBIN_U8("graphics/pokemon/ponyta/galarian/icon.4bpp"); -const u8 gMonIcon_RapidashGalarian[] = INCBIN_U8("graphics/pokemon/rapidash/galarian/icon.4bpp"); -const u8 gMonIcon_SlowpokeGalarian[] = INCBIN_U8("graphics/pokemon/slowpoke/galarian/icon.4bpp"); -const u8 gMonIcon_SlowbroGalarian[] = INCBIN_U8("graphics/pokemon/slowbro/galarian/icon.4bpp"); -const u8 gMonIcon_FarfetchdGalarian[] = INCBIN_U8("graphics/pokemon/farfetchd/galarian/icon.4bpp"); -const u8 gMonIcon_WeezingGalarian[] = INCBIN_U8("graphics/pokemon/weezing/galarian/icon.4bpp"); -const u8 gMonIcon_MrMimeGalarian[] = INCBIN_U8("graphics/pokemon/mr_mime/galarian/icon.4bpp"); -const u8 gMonIcon_ArticunoGalarian[] = INCBIN_U8("graphics/pokemon/articuno/galarian/icon.4bpp"); -const u8 gMonIcon_ZapdosGalarian[] = INCBIN_U8("graphics/pokemon/zapdos/galarian/icon.4bpp"); -const u8 gMonIcon_MoltresGalarian[] = INCBIN_U8("graphics/pokemon/moltres/galarian/icon.4bpp"); -const u8 gMonIcon_SlowkingGalarian[] = INCBIN_U8("graphics/pokemon/slowking/galarian/icon.4bpp"); -const u8 gMonIcon_CorsolaGalarian[] = INCBIN_U8("graphics/pokemon/corsola/galarian/icon.4bpp"); -const u8 gMonIcon_ZigzagoonGalarian[] = INCBIN_U8("graphics/pokemon/zigzagoon/galarian/icon.4bpp"); -const u8 gMonIcon_LinooneGalarian[] = INCBIN_U8("graphics/pokemon/linoone/galarian/icon.4bpp"); -#if P_GEN_5_POKEMON == TRUE -const u8 gMonIcon_DarumakaGalarian[] = INCBIN_U8("graphics/pokemon/darumaka/galarian/icon.4bpp"); -const u8 gMonIcon_DarmanitanGalarian[] = INCBIN_U8("graphics/pokemon/darmanitan/galarian/icon.4bpp"); -const u8 gMonIcon_YamaskGalarian[] = INCBIN_U8("graphics/pokemon/yamask/galarian/icon.4bpp"); -const u8 gMonIcon_StunfiskGalarian[] = INCBIN_U8("graphics/pokemon/stunfisk/galarian/icon.4bpp"); -#endif -const u8 gMonIcon_GrowlitheHisuian[] = INCBIN_U8("graphics/pokemon/growlithe/hisuian/icon.4bpp"); -const u8 gMonIcon_ArcanineHisuian[] = INCBIN_U8("graphics/pokemon/arcanine/hisuian/icon.4bpp"); -const u8 gMonIcon_VoltorbHisuian[] = INCBIN_U8("graphics/pokemon/voltorb/hisuian/icon.4bpp"); -const u8 gMonIcon_ElectrodeHisuian[] = INCBIN_U8("graphics/pokemon/electrode/hisuian/icon.4bpp"); -const u8 gMonIcon_TyphlosionHisuian[] = INCBIN_U8("graphics/pokemon/typhlosion/hisuian/icon.4bpp"); -const u8 gMonIcon_QwilfishHisuian[] = INCBIN_U8("graphics/pokemon/qwilfish/hisuian/icon.4bpp"); -const u8 gMonIcon_SneaselHisuian[] = INCBIN_U8("graphics/pokemon/sneasel/hisuian/icon.4bpp"); -#if P_GEN_5_POKEMON == TRUE -const u8 gMonIcon_SamurottHisuian[] = INCBIN_U8("graphics/pokemon/samurott/hisuian/icon.4bpp"); -const u8 gMonIcon_LilligantHisuian[] = INCBIN_U8("graphics/pokemon/lilligant/hisuian/icon.4bpp"); -const u8 gMonIcon_ZoruaHisuian[] = INCBIN_U8("graphics/pokemon/zorua/hisuian/icon.4bpp"); -const u8 gMonIcon_ZoroarkHisuian[] = INCBIN_U8("graphics/pokemon/zoroark/hisuian/icon.4bpp"); -const u8 gMonIcon_BraviaryHisuian[] = INCBIN_U8("graphics/pokemon/braviary/hisuian/icon.4bpp"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u8 gMonIcon_SliggooHisuian[] = INCBIN_U8("graphics/pokemon/sliggoo/hisuian/icon.4bpp"); -const u8 gMonIcon_GoodraHisuian[] = INCBIN_U8("graphics/pokemon/goodra/hisuian/icon.4bpp"); -const u8 gMonIcon_AvaluggHisuian[] = INCBIN_U8("graphics/pokemon/avalugg/hisuian/icon.4bpp"); -#endif -#if P_GEN_7_POKEMON == TRUE -const u8 gMonIcon_DecidueyeHisuian[] = INCBIN_U8("graphics/pokemon/decidueye/hisuian/icon.4bpp"); -#endif -const u8 gMonIcon_PikachuCosplay[] = INCBIN_U8("graphics/pokemon/pikachu/cosplay/icon.4bpp"); -const u8 gMonIcon_PikachuRockStar[] = INCBIN_U8("graphics/pokemon/pikachu/rock_star/icon.4bpp"); -const u8 gMonIcon_PikachuBelle[] = INCBIN_U8("graphics/pokemon/pikachu/belle/icon.4bpp"); -const u8 gMonIcon_PikachuPopStar[] = INCBIN_U8("graphics/pokemon/pikachu/pop_star/icon.4bpp"); -const u8 gMonIcon_PikachuPhD[] = INCBIN_U8("graphics/pokemon/pikachu/ph_d/icon.4bpp"); -const u8 gMonIcon_PikachuLibre[] = INCBIN_U8("graphics/pokemon/pikachu/libre/icon.4bpp"); -const u8 gMonIcon_PikachuOriginalCap[] = INCBIN_U8("graphics/pokemon/pikachu/original_cap/icon.4bpp"); -const u8 gMonIcon_PikachuHoennCap[] = INCBIN_U8("graphics/pokemon/pikachu/hoenn_cap/icon.4bpp"); -const u8 gMonIcon_PikachuSinnohCap[] = INCBIN_U8("graphics/pokemon/pikachu/sinnoh_cap/icon.4bpp"); -const u8 gMonIcon_PikachuUnovaCap[] = INCBIN_U8("graphics/pokemon/pikachu/unova_cap/icon.4bpp"); -const u8 gMonIcon_PikachuKalosCap[] = INCBIN_U8("graphics/pokemon/pikachu/kalos_cap/icon.4bpp"); -const u8 gMonIcon_PikachuAlolaCap[] = INCBIN_U8("graphics/pokemon/pikachu/alola_cap/icon.4bpp"); -const u8 gMonIcon_PikachuPartnerCap[] = INCBIN_U8("graphics/pokemon/pikachu/partner_cap/icon.4bpp"); -const u8 gMonIcon_PichuSpikyEared[] = INCBIN_U8("graphics/pokemon/pichu/spiky_eared/icon.4bpp"); -const u8 gMonIcon_UnownB[] = INCBIN_U8("graphics/pokemon/unown/b/icon.4bpp"); -const u8 gMonIcon_UnownC[] = INCBIN_U8("graphics/pokemon/unown/c/icon.4bpp"); -const u8 gMonIcon_UnownD[] = INCBIN_U8("graphics/pokemon/unown/d/icon.4bpp"); -const u8 gMonIcon_UnownE[] = INCBIN_U8("graphics/pokemon/unown/e/icon.4bpp"); -const u8 gMonIcon_UnownF[] = INCBIN_U8("graphics/pokemon/unown/f/icon.4bpp"); -const u8 gMonIcon_UnownG[] = INCBIN_U8("graphics/pokemon/unown/g/icon.4bpp"); -const u8 gMonIcon_UnownH[] = INCBIN_U8("graphics/pokemon/unown/h/icon.4bpp"); -const u8 gMonIcon_UnownI[] = INCBIN_U8("graphics/pokemon/unown/i/icon.4bpp"); -const u8 gMonIcon_UnownJ[] = INCBIN_U8("graphics/pokemon/unown/j/icon.4bpp"); -const u8 gMonIcon_UnownK[] = INCBIN_U8("graphics/pokemon/unown/k/icon.4bpp"); -const u8 gMonIcon_UnownL[] = INCBIN_U8("graphics/pokemon/unown/l/icon.4bpp"); -const u8 gMonIcon_UnownM[] = INCBIN_U8("graphics/pokemon/unown/m/icon.4bpp"); -const u8 gMonIcon_UnownN[] = INCBIN_U8("graphics/pokemon/unown/n/icon.4bpp"); -const u8 gMonIcon_UnownO[] = INCBIN_U8("graphics/pokemon/unown/o/icon.4bpp"); -const u8 gMonIcon_UnownP[] = INCBIN_U8("graphics/pokemon/unown/p/icon.4bpp"); -const u8 gMonIcon_UnownQ[] = INCBIN_U8("graphics/pokemon/unown/q/icon.4bpp"); -const u8 gMonIcon_UnownR[] = INCBIN_U8("graphics/pokemon/unown/r/icon.4bpp"); -const u8 gMonIcon_UnownS[] = INCBIN_U8("graphics/pokemon/unown/s/icon.4bpp"); -const u8 gMonIcon_UnownT[] = INCBIN_U8("graphics/pokemon/unown/t/icon.4bpp"); -const u8 gMonIcon_UnownU[] = INCBIN_U8("graphics/pokemon/unown/u/icon.4bpp"); -const u8 gMonIcon_UnownV[] = INCBIN_U8("graphics/pokemon/unown/v/icon.4bpp"); -const u8 gMonIcon_UnownW[] = INCBIN_U8("graphics/pokemon/unown/w/icon.4bpp"); -const u8 gMonIcon_UnownX[] = INCBIN_U8("graphics/pokemon/unown/x/icon.4bpp"); -const u8 gMonIcon_UnownY[] = INCBIN_U8("graphics/pokemon/unown/y/icon.4bpp"); -const u8 gMonIcon_UnownZ[] = INCBIN_U8("graphics/pokemon/unown/z/icon.4bpp"); -const u8 gMonIcon_UnownExclamationMark[] = INCBIN_U8("graphics/pokemon/unown/exclamation_mark/icon.4bpp"); -const u8 gMonIcon_UnownQuestionMark[] = INCBIN_U8("graphics/pokemon/unown/question_mark/icon.4bpp"); -const u8 gMonIcon_CastformSunny[] = INCBIN_U8("graphics/pokemon/castform/sunny/icon.4bpp"); -const u8 gMonIcon_CastformRainy[] = INCBIN_U8("graphics/pokemon/castform/rainy/icon.4bpp"); -const u8 gMonIcon_CastformSnowy[] = INCBIN_U8("graphics/pokemon/castform/snowy/icon.4bpp"); -const u8 gMonIcon_DeoxysAttack[] = INCBIN_U8("graphics/pokemon/deoxys/attack/icon.4bpp"); -const u8 gMonIcon_DeoxysDefense[] = INCBIN_U8("graphics/pokemon/deoxys/defense/icon.4bpp"); -const u8 gMonIcon_DeoxysSpeed[] = INCBIN_U8("graphics/pokemon/deoxys/speed/icon.4bpp"); -#if P_GEN_4_POKEMON == TRUE -const u8 gMonIcon_BurmySandyCloak[] = INCBIN_U8("graphics/pokemon/burmy/sandy_cloak/icon.4bpp"); -const u8 gMonIcon_BurmyTrashCloak[] = INCBIN_U8("graphics/pokemon/burmy/trash_cloak/icon.4bpp"); -const u8 gMonIcon_WormadamSandyCloak[] = INCBIN_U8("graphics/pokemon/wormadam/sandy_cloak/icon.4bpp"); -const u8 gMonIcon_WormadamTrashCloak[] = INCBIN_U8("graphics/pokemon/wormadam/trash_cloak/icon.4bpp"); -const u8 gMonIcon_CherrimSunshine[] = INCBIN_U8("graphics/pokemon/cherrim/sunshine/icon.4bpp"); -const u8 gMonIcon_ShellosEastSea[] = INCBIN_U8("graphics/pokemon/shellos/east_sea/icon.4bpp"); -const u8 gMonIcon_GastrodonEastSea[] = INCBIN_U8("graphics/pokemon/gastrodon/east_sea/icon.4bpp"); -const u8 gMonIcon_RotomHeat[] = INCBIN_U8("graphics/pokemon/rotom/heat/icon.4bpp"); -const u8 gMonIcon_RotomWash[] = INCBIN_U8("graphics/pokemon/rotom/wash/icon.4bpp"); -const u8 gMonIcon_RotomFrost[] = INCBIN_U8("graphics/pokemon/rotom/frost/icon.4bpp"); -const u8 gMonIcon_RotomFan[] = INCBIN_U8("graphics/pokemon/rotom/fan/icon.4bpp"); -const u8 gMonIcon_RotomMow[] = INCBIN_U8("graphics/pokemon/rotom/mow/icon.4bpp"); -const u8 gMonIcon_DialgaOrigin[] = INCBIN_U8("graphics/pokemon/dialga/origin/icon.4bpp"); -const u8 gMonIcon_PalkiaOrigin[] = INCBIN_U8("graphics/pokemon/palkia/origin/icon.4bpp"); -const u8 gMonIcon_GiratinaOrigin[] = INCBIN_U8("graphics/pokemon/giratina/origin/icon.4bpp"); -const u8 gMonIcon_ShayminSky[] = INCBIN_U8("graphics/pokemon/shaymin/sky/icon.4bpp"); -#endif -#if P_GEN_5_POKEMON == TRUE -const u8 gMonIcon_BasculinBlueStriped[] = INCBIN_U8("graphics/pokemon/basculin/blue_striped/icon.4bpp"); -const u8 gMonIcon_BasculinWhiteStriped[] = INCBIN_U8("graphics/pokemon/basculin/white_striped/icon.4bpp"); -const u8 gMonIcon_DarmanitanZenMode[] = INCBIN_U8("graphics/pokemon/darmanitan/zen_mode/icon.4bpp"); -const u8 gMonIcon_DarmanitanZenModeGalarian[] = INCBIN_U8("graphics/pokemon/darmanitan/zen_mode/galarian/icon.4bpp"); -const u8 gMonIcon_DeerlingSummer[] = INCBIN_U8("graphics/pokemon/deerling/summer/icon.4bpp"); -const u8 gMonIcon_DeerlingAutumn[] = INCBIN_U8("graphics/pokemon/deerling/autumn/icon.4bpp"); -const u8 gMonIcon_DeerlingWinter[] = INCBIN_U8("graphics/pokemon/deerling/winter/icon.4bpp"); -const u8 gMonIcon_SawsbuckSummer[] = INCBIN_U8("graphics/pokemon/sawsbuck/summer/icon.4bpp"); -const u8 gMonIcon_SawsbuckAutumn[] = INCBIN_U8("graphics/pokemon/sawsbuck/autumn/icon.4bpp"); -const u8 gMonIcon_SawsbuckWinter[] = INCBIN_U8("graphics/pokemon/sawsbuck/winter/icon.4bpp"); -const u8 gMonIcon_TornadusTherian[] = INCBIN_U8("graphics/pokemon/tornadus/therian/icon.4bpp"); -const u8 gMonIcon_ThundurusTherian[] = INCBIN_U8("graphics/pokemon/thundurus/therian/icon.4bpp"); -const u8 gMonIcon_LandorusTherian[] = INCBIN_U8("graphics/pokemon/landorus/therian/icon.4bpp"); -const u8 gMonIcon_KyuremWhite[] = INCBIN_U8("graphics/pokemon/kyurem/white/icon.4bpp"); -const u8 gMonIcon_KyuremBlack[] = INCBIN_U8("graphics/pokemon/kyurem/black/icon.4bpp"); -const u8 gMonIcon_KeldeoResolute[] = INCBIN_U8("graphics/pokemon/keldeo/resolute/icon.4bpp"); -const u8 gMonIcon_MeloettaPirouette[] = INCBIN_U8("graphics/pokemon/meloetta/pirouette/icon.4bpp"); -#endif -#if P_GEN_6_POKEMON == TRUE -const u8 gMonIcon_GreninjaAsh[] = INCBIN_U8("graphics/pokemon/greninja/ash/icon.4bpp"); -const u8 gMonIcon_VivillonPolar[] = INCBIN_U8("graphics/pokemon/vivillon/polar/icon.4bpp"); -const u8 gMonIcon_VivillonTundra[] = INCBIN_U8("graphics/pokemon/vivillon/tundra/icon.4bpp"); -const u8 gMonIcon_VivillonContinental[] = INCBIN_U8("graphics/pokemon/vivillon/continental/icon.4bpp"); -const u8 gMonIcon_VivillonGarden[] = INCBIN_U8("graphics/pokemon/vivillon/garden/icon.4bpp"); -const u8 gMonIcon_VivillonElegant[] = INCBIN_U8("graphics/pokemon/vivillon/elegant/icon.4bpp"); -const u8 gMonIcon_VivillonMeadow[] = INCBIN_U8("graphics/pokemon/vivillon/meadow/icon.4bpp"); -const u8 gMonIcon_VivillonModern[] = INCBIN_U8("graphics/pokemon/vivillon/modern/icon.4bpp"); -const u8 gMonIcon_VivillonMarine[] = INCBIN_U8("graphics/pokemon/vivillon/marine/icon.4bpp"); -const u8 gMonIcon_VivillonArchipelago[] = INCBIN_U8("graphics/pokemon/vivillon/archipelago/icon.4bpp"); -const u8 gMonIcon_VivillonHighPlains[] = INCBIN_U8("graphics/pokemon/vivillon/high_plains/icon.4bpp"); -const u8 gMonIcon_VivillonSandstorm[] = INCBIN_U8("graphics/pokemon/vivillon/sandstorm/icon.4bpp"); -const u8 gMonIcon_VivillonRiver[] = INCBIN_U8("graphics/pokemon/vivillon/river/icon.4bpp"); -const u8 gMonIcon_VivillonMonsoon[] = INCBIN_U8("graphics/pokemon/vivillon/monsoon/icon.4bpp"); -const u8 gMonIcon_VivillonSavanna[] = INCBIN_U8("graphics/pokemon/vivillon/savanna/icon.4bpp"); -const u8 gMonIcon_VivillonSun[] = INCBIN_U8("graphics/pokemon/vivillon/sun/icon.4bpp"); -const u8 gMonIcon_VivillonOcean[] = INCBIN_U8("graphics/pokemon/vivillon/ocean/icon.4bpp"); -const u8 gMonIcon_VivillonJungle[] = INCBIN_U8("graphics/pokemon/vivillon/jungle/icon.4bpp"); -const u8 gMonIcon_VivillonFancy[] = INCBIN_U8("graphics/pokemon/vivillon/fancy/icon.4bpp"); -const u8 gMonIcon_VivillonPokeBall[] = INCBIN_U8("graphics/pokemon/vivillon/poke_ball/icon.4bpp"); -const u8 gMonIcon_FlabebeYellowFlower[] = INCBIN_U8("graphics/pokemon/flabebe/yellow_flower/icon.4bpp"); -const u8 gMonIcon_FlabebeOrangeFlower[] = INCBIN_U8("graphics/pokemon/flabebe/orange_flower/icon.4bpp"); -const u8 gMonIcon_FlabebeBlueFlower[] = INCBIN_U8("graphics/pokemon/flabebe/blue_flower/icon.4bpp"); -const u8 gMonIcon_FlabebeWhiteFlower[] = INCBIN_U8("graphics/pokemon/flabebe/white_flower/icon.4bpp"); -const u8 gMonIcon_FloetteYellowFlower[] = INCBIN_U8("graphics/pokemon/floette/yellow_flower/icon.4bpp"); -const u8 gMonIcon_FloetteOrangeFlower[] = INCBIN_U8("graphics/pokemon/floette/orange_flower/icon.4bpp"); -const u8 gMonIcon_FloetteBlueFlower[] = INCBIN_U8("graphics/pokemon/floette/blue_flower/icon.4bpp"); -const u8 gMonIcon_FloetteWhiteFlower[] = INCBIN_U8("graphics/pokemon/floette/white_flower/icon.4bpp"); -const u8 gMonIcon_FloetteEternalFlower[] = INCBIN_U8("graphics/pokemon/floette/eternal_flower/icon.4bpp"); -const u8 gMonIcon_FlorgesYellowFlower[] = INCBIN_U8("graphics/pokemon/florges/yellow_flower/icon.4bpp"); -const u8 gMonIcon_FlorgesOrangeFlower[] = INCBIN_U8("graphics/pokemon/florges/orange_flower/icon.4bpp"); -const u8 gMonIcon_FlorgesBlueFlower[] = INCBIN_U8("graphics/pokemon/florges/blue_flower/icon.4bpp"); -const u8 gMonIcon_FlorgesWhiteFlower[] = INCBIN_U8("graphics/pokemon/florges/white_flower/icon.4bpp"); -const u8 gMonIcon_FurfrouHeartTrim[] = INCBIN_U8("graphics/pokemon/furfrou/heart_trim/icon.4bpp"); -const u8 gMonIcon_FurfrouStarTrim[] = INCBIN_U8("graphics/pokemon/furfrou/star_trim/icon.4bpp"); -const u8 gMonIcon_FurfrouDiamondTrim[] = INCBIN_U8("graphics/pokemon/furfrou/diamond_trim/icon.4bpp"); -const u8 gMonIcon_FurfrouDebutanteTrim[] = INCBIN_U8("graphics/pokemon/furfrou/debutante_trim/icon.4bpp"); -const u8 gMonIcon_FurfrouMatronTrim[] = INCBIN_U8("graphics/pokemon/furfrou/matron_trim/icon.4bpp"); -const u8 gMonIcon_FurfrouDandyTrim[] = INCBIN_U8("graphics/pokemon/furfrou/dandy_trim/icon.4bpp"); -const u8 gMonIcon_FurfrouLaReineTrim[] = INCBIN_U8("graphics/pokemon/furfrou/la_reine_trim/icon.4bpp"); -const u8 gMonIcon_FurfrouKabukiTrim[] = INCBIN_U8("graphics/pokemon/furfrou/kabuki_trim/icon.4bpp"); -const u8 gMonIcon_FurfrouPharaohTrim[] = INCBIN_U8("graphics/pokemon/furfrou/pharaoh_trim/icon.4bpp"); -const u8 gMonIcon_MeowsticFemale[] = INCBIN_U8("graphics/pokemon/meowstic/female/icon.4bpp"); -const u8 gMonIcon_AegislashBlade[] = INCBIN_U8("graphics/pokemon/aegislash/blade/icon.4bpp"); -const u8 gMonIcon_XerneasActive[] = INCBIN_U8("graphics/pokemon/xerneas/active/icon.4bpp"); -const u8 gMonIcon_Zygarde10[] = INCBIN_U8("graphics/pokemon/zygarde/10_percent/icon.4bpp"); -const u8 gMonIcon_ZygardeComplete[] = INCBIN_U8("graphics/pokemon/zygarde/complete/icon.4bpp"); -const u8 gMonIcon_HoopaUnbound[] = INCBIN_U8("graphics/pokemon/hoopa/unbound/icon.4bpp"); -#endif -#if P_GEN_7_POKEMON == TRUE -const u8 gMonIcon_OricorioPomPom[] = INCBIN_U8("graphics/pokemon/oricorio/pom_pom/icon.4bpp"); -const u8 gMonIcon_OricorioPau[] = INCBIN_U8("graphics/pokemon/oricorio/pau/icon.4bpp"); -const u8 gMonIcon_OricorioSensu[] = INCBIN_U8("graphics/pokemon/oricorio/sensu/icon.4bpp"); -const u8 gMonIcon_LycanrocMidnight[] = INCBIN_U8("graphics/pokemon/lycanroc/midnight/icon.4bpp"); -const u8 gMonIcon_LycanrocDusk[] = INCBIN_U8("graphics/pokemon/lycanroc/dusk/icon.4bpp"); -const u8 gMonIcon_WishiwashiSchool[] = INCBIN_U8("graphics/pokemon/wishiwashi/school/icon.4bpp"); -const u8 gMonIcon_MiniorCoreRed[] = INCBIN_U8("graphics/pokemon/minior/core/red/icon.4bpp"); -const u8 gMonIcon_MiniorCoreOrange[] = INCBIN_U8("graphics/pokemon/minior/core/orange/icon.4bpp"); -const u8 gMonIcon_MiniorCoreYellow[] = INCBIN_U8("graphics/pokemon/minior/core/yellow/icon.4bpp"); -const u8 gMonIcon_MiniorCoreGreen[] = INCBIN_U8("graphics/pokemon/minior/core/green/icon.4bpp"); -const u8 gMonIcon_MiniorCoreBlue[] = INCBIN_U8("graphics/pokemon/minior/core/blue/icon.4bpp"); -const u8 gMonIcon_MiniorCoreIndigo[] = INCBIN_U8("graphics/pokemon/minior/core/indigo/icon.4bpp"); -const u8 gMonIcon_MiniorCoreViolet[] = INCBIN_U8("graphics/pokemon/minior/core/violet/icon.4bpp"); -const u8 gMonIcon_MimikyuBusted[] = INCBIN_U8("graphics/pokemon/mimikyu/busted/icon.4bpp"); -const u8 gMonIcon_NecrozmaDuskMane[] = INCBIN_U8("graphics/pokemon/necrozma/dusk_mane/icon.4bpp"); -const u8 gMonIcon_NecrozmaDawnWings[] = INCBIN_U8("graphics/pokemon/necrozma/dawn_wings/icon.4bpp"); -const u8 gMonIcon_NecrozmaUltra[] = INCBIN_U8("graphics/pokemon/necrozma/ultra/icon.4bpp"); -const u8 gMonIcon_MagearnaOriginalColor[] = INCBIN_U8("graphics/pokemon/magearna/original_color/icon.4bpp"); -#endif -#if P_GEN_8_POKEMON == TRUE -const u8 gMonIcon_CramorantGulping[] = INCBIN_U8("graphics/pokemon/cramorant/gulping/icon.4bpp"); -const u8 gMonIcon_CramorantGorging[] = INCBIN_U8("graphics/pokemon/cramorant/gorging/icon.4bpp"); -const u8 gMonIcon_ToxtricityLowKey[] = INCBIN_U8("graphics/pokemon/toxtricity/low_key/icon.4bpp"); -//const u8 gMonIcon_AlcremieRubyCream[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieMatchaCream[] = INCBIN_U8("graphics/pokemon/alcremie/matcha_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieMintCream[] = INCBIN_U8("graphics/pokemon/alcremie/mint_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieLemonCream[] = INCBIN_U8("graphics/pokemon/alcremie/lemon_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieSaltedCream[] = INCBIN_U8("graphics/pokemon/alcremie/salted_cream/icon.4bpp"); -//const u8 gMonIcon_AlcremieRubySwirl[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_swirl/icon.4bpp"); -//const u8 gMonIcon_AlcremieCaramelSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/caramel_swirl/icon.4bpp"); -//const u8 gMonIcon_AlcremieRainbowSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/rainbow_swirl/icon.4bpp"); -const u8 gMonIcon_EiscueNoiceFace[] = INCBIN_U8("graphics/pokemon/eiscue/noice_face/icon.4bpp"); -const u8 gMonIcon_IndeedeeFemale[] = INCBIN_U8("graphics/pokemon/indeedee/female/icon.4bpp"); -const u8 gMonIcon_MorpekoHangry[] = INCBIN_U8("graphics/pokemon/morpeko/hangry/icon.4bpp"); -const u8 gMonIcon_ZacianCrownedSword[] = INCBIN_U8("graphics/pokemon/zacian/crowned_sword/icon.4bpp"); -const u8 gMonIcon_ZamazentaCrownedShield[] = INCBIN_U8("graphics/pokemon/zamazenta/crowned_shield/icon.4bpp"); -const u8 gMonIcon_EternatusEternamax[] = INCBIN_U8("graphics/pokemon/eternatus/eternamax/icon.4bpp"); -const u8 gMonIcon_ZarudeDada[] = INCBIN_U8("graphics/pokemon/zarude/dada/icon.4bpp"); -const u8 gMonIcon_CalyrexIceRider[] = INCBIN_U8("graphics/pokemon/calyrex/ice_rider/icon.4bpp"); -const u8 gMonIcon_CalyrexShadowRider[] = INCBIN_U8("graphics/pokemon/calyrex/shadow_rider/icon.4bpp"); -const u8 gMonIcon_EnamorusTherian[] = INCBIN_U8("graphics/pokemon/enamorus/therian/icon.4bpp"); -const u8 gMonIcon_BasculegionFemale[] = INCBIN_U8("graphics/pokemon/basculegion/female/icon.4bpp"); -#endif -const u8 gMonIcon_Egg[] = INCBIN_U8("graphics/pokemon/egg/icon.4bpp"); - const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mark/footprint.1bpp"); -const u8 gMonFootprint_Bulbasaur[] = INCBIN_U8("graphics/pokemon/bulbasaur/footprint.1bpp"); -const u8 gMonFootprint_Ivysaur[] = INCBIN_U8("graphics/pokemon/ivysaur/footprint.1bpp"); -const u8 gMonFootprint_Venusaur[] = INCBIN_U8("graphics/pokemon/venusaur/footprint.1bpp"); -const u8 gMonFootprint_Charmander[] = INCBIN_U8("graphics/pokemon/charmander/footprint.1bpp"); -const u8 gMonFootprint_Charmeleon[] = INCBIN_U8("graphics/pokemon/charmeleon/footprint.1bpp"); -const u8 gMonFootprint_Charizard[] = INCBIN_U8("graphics/pokemon/charizard/footprint.1bpp"); -const u8 gMonFootprint_Squirtle[] = INCBIN_U8("graphics/pokemon/squirtle/footprint.1bpp"); -const u8 gMonFootprint_Wartortle[] = INCBIN_U8("graphics/pokemon/wartortle/footprint.1bpp"); -const u8 gMonFootprint_Blastoise[] = INCBIN_U8("graphics/pokemon/blastoise/footprint.1bpp"); -const u8 gMonFootprint_Caterpie[] = INCBIN_U8("graphics/pokemon/caterpie/footprint.1bpp"); -const u8 gMonFootprint_Metapod[] = INCBIN_U8("graphics/pokemon/metapod/footprint.1bpp"); -const u8 gMonFootprint_Butterfree[] = INCBIN_U8("graphics/pokemon/butterfree/footprint.1bpp"); -const u8 gMonFootprint_Weedle[] = INCBIN_U8("graphics/pokemon/weedle/footprint.1bpp"); -const u8 gMonFootprint_Kakuna[] = INCBIN_U8("graphics/pokemon/kakuna/footprint.1bpp"); -const u8 gMonFootprint_Beedrill[] = INCBIN_U8("graphics/pokemon/beedrill/footprint.1bpp"); -const u8 gMonFootprint_Pidgey[] = INCBIN_U8("graphics/pokemon/pidgey/footprint.1bpp"); -const u8 gMonFootprint_Pidgeotto[] = INCBIN_U8("graphics/pokemon/pidgeotto/footprint.1bpp"); -const u8 gMonFootprint_Pidgeot[] = INCBIN_U8("graphics/pokemon/pidgeot/footprint.1bpp"); -const u8 gMonFootprint_Rattata[] = INCBIN_U8("graphics/pokemon/rattata/footprint.1bpp"); -const u8 gMonFootprint_Raticate[] = INCBIN_U8("graphics/pokemon/raticate/footprint.1bpp"); -const u8 gMonFootprint_Spearow[] = INCBIN_U8("graphics/pokemon/spearow/footprint.1bpp"); -const u8 gMonFootprint_Fearow[] = INCBIN_U8("graphics/pokemon/fearow/footprint.1bpp"); -const u8 gMonFootprint_Ekans[] = INCBIN_U8("graphics/pokemon/ekans/footprint.1bpp"); -const u8 gMonFootprint_Arbok[] = INCBIN_U8("graphics/pokemon/arbok/footprint.1bpp"); -const u8 gMonFootprint_Pikachu[] = INCBIN_U8("graphics/pokemon/pikachu/footprint.1bpp"); -const u8 gMonFootprint_Raichu[] = INCBIN_U8("graphics/pokemon/raichu/footprint.1bpp"); -const u8 gMonFootprint_Sandshrew[] = INCBIN_U8("graphics/pokemon/sandshrew/footprint.1bpp"); -const u8 gMonFootprint_Sandslash[] = INCBIN_U8("graphics/pokemon/sandslash/footprint.1bpp"); -const u8 gMonFootprint_NidoranF[] = INCBIN_U8("graphics/pokemon/nidoran_f/footprint.1bpp"); -const u8 gMonFootprint_Nidorina[] = INCBIN_U8("graphics/pokemon/nidorina/footprint.1bpp"); -const u8 gMonFootprint_Nidoqueen[] = INCBIN_U8("graphics/pokemon/nidoqueen/footprint.1bpp"); -const u8 gMonFootprint_NidoranM[] = INCBIN_U8("graphics/pokemon/nidoran_m/footprint.1bpp"); -const u8 gMonFootprint_Nidorino[] = INCBIN_U8("graphics/pokemon/nidorino/footprint.1bpp"); -const u8 gMonFootprint_Nidoking[] = INCBIN_U8("graphics/pokemon/nidoking/footprint.1bpp"); -const u8 gMonFootprint_Clefairy[] = INCBIN_U8("graphics/pokemon/clefairy/footprint.1bpp"); -const u8 gMonFootprint_Clefable[] = INCBIN_U8("graphics/pokemon/clefable/footprint.1bpp"); -const u8 gMonFootprint_Vulpix[] = INCBIN_U8("graphics/pokemon/vulpix/footprint.1bpp"); -const u8 gMonFootprint_Ninetales[] = INCBIN_U8("graphics/pokemon/ninetales/footprint.1bpp"); -const u8 gMonFootprint_Jigglypuff[] = INCBIN_U8("graphics/pokemon/jigglypuff/footprint.1bpp"); -const u8 gMonFootprint_Wigglytuff[] = INCBIN_U8("graphics/pokemon/wigglytuff/footprint.1bpp"); -const u8 gMonFootprint_Zubat[] = INCBIN_U8("graphics/pokemon/zubat/footprint.1bpp"); -const u8 gMonFootprint_Golbat[] = INCBIN_U8("graphics/pokemon/golbat/footprint.1bpp"); -const u8 gMonFootprint_Oddish[] = INCBIN_U8("graphics/pokemon/oddish/footprint.1bpp"); -const u8 gMonFootprint_Gloom[] = INCBIN_U8("graphics/pokemon/gloom/footprint.1bpp"); -const u8 gMonFootprint_Vileplume[] = INCBIN_U8("graphics/pokemon/vileplume/footprint.1bpp"); -const u8 gMonFootprint_Paras[] = INCBIN_U8("graphics/pokemon/paras/footprint.1bpp"); -const u8 gMonFootprint_Parasect[] = INCBIN_U8("graphics/pokemon/parasect/footprint.1bpp"); -const u8 gMonFootprint_Venonat[] = INCBIN_U8("graphics/pokemon/venonat/footprint.1bpp"); -const u8 gMonFootprint_Venomoth[] = INCBIN_U8("graphics/pokemon/venomoth/footprint.1bpp"); -const u8 gMonFootprint_Diglett[] = INCBIN_U8("graphics/pokemon/diglett/footprint.1bpp"); -const u8 gMonFootprint_Dugtrio[] = INCBIN_U8("graphics/pokemon/dugtrio/footprint.1bpp"); -const u8 gMonFootprint_Meowth[] = INCBIN_U8("graphics/pokemon/meowth/footprint.1bpp"); -const u8 gMonFootprint_Persian[] = INCBIN_U8("graphics/pokemon/persian/footprint.1bpp"); -const u8 gMonFootprint_Psyduck[] = INCBIN_U8("graphics/pokemon/psyduck/footprint.1bpp"); -const u8 gMonFootprint_Golduck[] = INCBIN_U8("graphics/pokemon/golduck/footprint.1bpp"); -const u8 gMonFootprint_Mankey[] = INCBIN_U8("graphics/pokemon/mankey/footprint.1bpp"); -const u8 gMonFootprint_Primeape[] = INCBIN_U8("graphics/pokemon/primeape/footprint.1bpp"); -const u8 gMonFootprint_Growlithe[] = INCBIN_U8("graphics/pokemon/growlithe/footprint.1bpp"); -const u8 gMonFootprint_Arcanine[] = INCBIN_U8("graphics/pokemon/arcanine/footprint.1bpp"); -const u8 gMonFootprint_Poliwag[] = INCBIN_U8("graphics/pokemon/poliwag/footprint.1bpp"); -const u8 gMonFootprint_Poliwhirl[] = INCBIN_U8("graphics/pokemon/poliwhirl/footprint.1bpp"); -const u8 gMonFootprint_Poliwrath[] = INCBIN_U8("graphics/pokemon/poliwrath/footprint.1bpp"); -const u8 gMonFootprint_Abra[] = INCBIN_U8("graphics/pokemon/abra/footprint.1bpp"); -const u8 gMonFootprint_Kadabra[] = INCBIN_U8("graphics/pokemon/kadabra/footprint.1bpp"); -const u8 gMonFootprint_Alakazam[] = INCBIN_U8("graphics/pokemon/alakazam/footprint.1bpp"); -const u8 gMonFootprint_Machop[] = INCBIN_U8("graphics/pokemon/machop/footprint.1bpp"); -const u8 gMonFootprint_Machoke[] = INCBIN_U8("graphics/pokemon/machoke/footprint.1bpp"); -const u8 gMonFootprint_Machamp[] = INCBIN_U8("graphics/pokemon/machamp/footprint.1bpp"); -const u8 gMonFootprint_Bellsprout[] = INCBIN_U8("graphics/pokemon/bellsprout/footprint.1bpp"); -const u8 gMonFootprint_Weepinbell[] = INCBIN_U8("graphics/pokemon/weepinbell/footprint.1bpp"); -const u8 gMonFootprint_Victreebel[] = INCBIN_U8("graphics/pokemon/victreebel/footprint.1bpp"); -const u8 gMonFootprint_Tentacool[] = INCBIN_U8("graphics/pokemon/tentacool/footprint.1bpp"); -const u8 gMonFootprint_Tentacruel[] = INCBIN_U8("graphics/pokemon/tentacruel/footprint.1bpp"); -const u8 gMonFootprint_Geodude[] = INCBIN_U8("graphics/pokemon/geodude/footprint.1bpp"); -const u8 gMonFootprint_Graveler[] = INCBIN_U8("graphics/pokemon/graveler/footprint.1bpp"); -const u8 gMonFootprint_Golem[] = INCBIN_U8("graphics/pokemon/golem/footprint.1bpp"); -const u8 gMonFootprint_Ponyta[] = INCBIN_U8("graphics/pokemon/ponyta/footprint.1bpp"); -const u8 gMonFootprint_Rapidash[] = INCBIN_U8("graphics/pokemon/rapidash/footprint.1bpp"); -const u8 gMonFootprint_Slowpoke[] = INCBIN_U8("graphics/pokemon/slowpoke/footprint.1bpp"); -const u8 gMonFootprint_Slowbro[] = INCBIN_U8("graphics/pokemon/slowbro/footprint.1bpp"); -const u8 gMonFootprint_Magnemite[] = INCBIN_U8("graphics/pokemon/magnemite/footprint.1bpp"); -const u8 gMonFootprint_Magneton[] = INCBIN_U8("graphics/pokemon/magneton/footprint.1bpp"); -const u8 gMonFootprint_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetchd/footprint.1bpp"); -const u8 gMonFootprint_Doduo[] = INCBIN_U8("graphics/pokemon/doduo/footprint.1bpp"); -const u8 gMonFootprint_Dodrio[] = INCBIN_U8("graphics/pokemon/dodrio/footprint.1bpp"); -const u8 gMonFootprint_Seel[] = INCBIN_U8("graphics/pokemon/seel/footprint.1bpp"); -const u8 gMonFootprint_Dewgong[] = INCBIN_U8("graphics/pokemon/dewgong/footprint.1bpp"); -const u8 gMonFootprint_Grimer[] = INCBIN_U8("graphics/pokemon/grimer/footprint.1bpp"); -const u8 gMonFootprint_Muk[] = INCBIN_U8("graphics/pokemon/muk/footprint.1bpp"); -const u8 gMonFootprint_Shellder[] = INCBIN_U8("graphics/pokemon/shellder/footprint.1bpp"); -const u8 gMonFootprint_Cloyster[] = INCBIN_U8("graphics/pokemon/cloyster/footprint.1bpp"); -const u8 gMonFootprint_Gastly[] = INCBIN_U8("graphics/pokemon/gastly/footprint.1bpp"); -const u8 gMonFootprint_Haunter[] = INCBIN_U8("graphics/pokemon/haunter/footprint.1bpp"); -const u8 gMonFootprint_Gengar[] = INCBIN_U8("graphics/pokemon/gengar/footprint.1bpp"); -const u8 gMonFootprint_Onix[] = INCBIN_U8("graphics/pokemon/onix/footprint.1bpp"); -const u8 gMonFootprint_Drowzee[] = INCBIN_U8("graphics/pokemon/drowzee/footprint.1bpp"); -const u8 gMonFootprint_Hypno[] = INCBIN_U8("graphics/pokemon/hypno/footprint.1bpp"); -const u8 gMonFootprint_Krabby[] = INCBIN_U8("graphics/pokemon/krabby/footprint.1bpp"); -const u8 gMonFootprint_Kingler[] = INCBIN_U8("graphics/pokemon/kingler/footprint.1bpp"); -const u8 gMonFootprint_Voltorb[] = INCBIN_U8("graphics/pokemon/voltorb/footprint.1bpp"); -const u8 gMonFootprint_Electrode[] = INCBIN_U8("graphics/pokemon/electrode/footprint.1bpp"); -const u8 gMonFootprint_Exeggcute[] = INCBIN_U8("graphics/pokemon/exeggcute/footprint.1bpp"); -const u8 gMonFootprint_Exeggutor[] = INCBIN_U8("graphics/pokemon/exeggutor/footprint.1bpp"); -const u8 gMonFootprint_Cubone[] = INCBIN_U8("graphics/pokemon/cubone/footprint.1bpp"); -const u8 gMonFootprint_Marowak[] = INCBIN_U8("graphics/pokemon/marowak/footprint.1bpp"); -const u8 gMonFootprint_Hitmonlee[] = INCBIN_U8("graphics/pokemon/hitmonlee/footprint.1bpp"); -const u8 gMonFootprint_Hitmonchan[] = INCBIN_U8("graphics/pokemon/hitmonchan/footprint.1bpp"); -const u8 gMonFootprint_Lickitung[] = INCBIN_U8("graphics/pokemon/lickitung/footprint.1bpp"); -const u8 gMonFootprint_Koffing[] = INCBIN_U8("graphics/pokemon/koffing/footprint.1bpp"); -const u8 gMonFootprint_Weezing[] = INCBIN_U8("graphics/pokemon/weezing/footprint.1bpp"); -const u8 gMonFootprint_Rhyhorn[] = INCBIN_U8("graphics/pokemon/rhyhorn/footprint.1bpp"); -const u8 gMonFootprint_Rhydon[] = INCBIN_U8("graphics/pokemon/rhydon/footprint.1bpp"); -const u8 gMonFootprint_Chansey[] = INCBIN_U8("graphics/pokemon/chansey/footprint.1bpp"); -const u8 gMonFootprint_Tangela[] = INCBIN_U8("graphics/pokemon/tangela/footprint.1bpp"); -const u8 gMonFootprint_Kangaskhan[] = INCBIN_U8("graphics/pokemon/kangaskhan/footprint.1bpp"); -const u8 gMonFootprint_Horsea[] = INCBIN_U8("graphics/pokemon/horsea/footprint.1bpp"); -const u8 gMonFootprint_Seadra[] = INCBIN_U8("graphics/pokemon/seadra/footprint.1bpp"); -const u8 gMonFootprint_Goldeen[] = INCBIN_U8("graphics/pokemon/goldeen/footprint.1bpp"); -const u8 gMonFootprint_Seaking[] = INCBIN_U8("graphics/pokemon/seaking/footprint.1bpp"); -const u8 gMonFootprint_Staryu[] = INCBIN_U8("graphics/pokemon/staryu/footprint.1bpp"); -const u8 gMonFootprint_Starmie[] = INCBIN_U8("graphics/pokemon/starmie/footprint.1bpp"); -const u8 gMonFootprint_MrMime[] = INCBIN_U8("graphics/pokemon/mr_mime/footprint.1bpp"); -const u8 gMonFootprint_Scyther[] = INCBIN_U8("graphics/pokemon/scyther/footprint.1bpp"); -const u8 gMonFootprint_Jynx[] = INCBIN_U8("graphics/pokemon/jynx/footprint.1bpp"); -const u8 gMonFootprint_Electabuzz[] = INCBIN_U8("graphics/pokemon/electabuzz/footprint.1bpp"); -const u8 gMonFootprint_Magmar[] = INCBIN_U8("graphics/pokemon/magmar/footprint.1bpp"); -const u8 gMonFootprint_Pinsir[] = INCBIN_U8("graphics/pokemon/pinsir/footprint.1bpp"); -const u8 gMonFootprint_Tauros[] = INCBIN_U8("graphics/pokemon/tauros/footprint.1bpp"); -const u8 gMonFootprint_Magikarp[] = INCBIN_U8("graphics/pokemon/magikarp/footprint.1bpp"); -const u8 gMonFootprint_Gyarados[] = INCBIN_U8("graphics/pokemon/gyarados/footprint.1bpp"); -const u8 gMonFootprint_Lapras[] = INCBIN_U8("graphics/pokemon/lapras/footprint.1bpp"); -const u8 gMonFootprint_Ditto[] = INCBIN_U8("graphics/pokemon/ditto/footprint.1bpp"); -const u8 gMonFootprint_Eevee[] = INCBIN_U8("graphics/pokemon/eevee/footprint.1bpp"); -const u8 gMonFootprint_Vaporeon[] = INCBIN_U8("graphics/pokemon/vaporeon/footprint.1bpp"); -const u8 gMonFootprint_Jolteon[] = INCBIN_U8("graphics/pokemon/jolteon/footprint.1bpp"); -const u8 gMonFootprint_Flareon[] = INCBIN_U8("graphics/pokemon/flareon/footprint.1bpp"); -const u8 gMonFootprint_Porygon[] = INCBIN_U8("graphics/pokemon/porygon/footprint.1bpp"); -const u8 gMonFootprint_Omanyte[] = INCBIN_U8("graphics/pokemon/omanyte/footprint.1bpp"); -const u8 gMonFootprint_Omastar[] = INCBIN_U8("graphics/pokemon/omastar/footprint.1bpp"); -const u8 gMonFootprint_Kabuto[] = INCBIN_U8("graphics/pokemon/kabuto/footprint.1bpp"); -const u8 gMonFootprint_Kabutops[] = INCBIN_U8("graphics/pokemon/kabutops/footprint.1bpp"); -const u8 gMonFootprint_Aerodactyl[] = INCBIN_U8("graphics/pokemon/aerodactyl/footprint.1bpp"); -const u8 gMonFootprint_Snorlax[] = INCBIN_U8("graphics/pokemon/snorlax/footprint.1bpp"); -const u8 gMonFootprint_Articuno[] = INCBIN_U8("graphics/pokemon/articuno/footprint.1bpp"); -const u8 gMonFootprint_Zapdos[] = INCBIN_U8("graphics/pokemon/zapdos/footprint.1bpp"); -const u8 gMonFootprint_Moltres[] = INCBIN_U8("graphics/pokemon/moltres/footprint.1bpp"); -const u8 gMonFootprint_Dratini[] = INCBIN_U8("graphics/pokemon/dratini/footprint.1bpp"); -const u8 gMonFootprint_Dragonair[] = INCBIN_U8("graphics/pokemon/dragonair/footprint.1bpp"); -const u8 gMonFootprint_Dragonite[] = INCBIN_U8("graphics/pokemon/dragonite/footprint.1bpp"); -const u8 gMonFootprint_Mewtwo[] = INCBIN_U8("graphics/pokemon/mewtwo/footprint.1bpp"); -const u8 gMonFootprint_Mew[] = INCBIN_U8("graphics/pokemon/mew/footprint.1bpp"); -const u8 gMonFootprint_Chikorita[] = INCBIN_U8("graphics/pokemon/chikorita/footprint.1bpp"); -const u8 gMonFootprint_Bayleef[] = INCBIN_U8("graphics/pokemon/bayleef/footprint.1bpp"); -const u8 gMonFootprint_Meganium[] = INCBIN_U8("graphics/pokemon/meganium/footprint.1bpp"); -const u8 gMonFootprint_Cyndaquil[] = INCBIN_U8("graphics/pokemon/cyndaquil/footprint.1bpp"); -const u8 gMonFootprint_Quilava[] = INCBIN_U8("graphics/pokemon/quilava/footprint.1bpp"); -const u8 gMonFootprint_Typhlosion[] = INCBIN_U8("graphics/pokemon/typhlosion/footprint.1bpp"); -const u8 gMonFootprint_Totodile[] = INCBIN_U8("graphics/pokemon/totodile/footprint.1bpp"); -const u8 gMonFootprint_Croconaw[] = INCBIN_U8("graphics/pokemon/croconaw/footprint.1bpp"); -const u8 gMonFootprint_Feraligatr[] = INCBIN_U8("graphics/pokemon/feraligatr/footprint.1bpp"); -const u8 gMonFootprint_Sentret[] = INCBIN_U8("graphics/pokemon/sentret/footprint.1bpp"); -const u8 gMonFootprint_Furret[] = INCBIN_U8("graphics/pokemon/furret/footprint.1bpp"); -const u8 gMonFootprint_Hoothoot[] = INCBIN_U8("graphics/pokemon/hoothoot/footprint.1bpp"); -const u8 gMonFootprint_Noctowl[] = INCBIN_U8("graphics/pokemon/noctowl/footprint.1bpp"); -const u8 gMonFootprint_Ledyba[] = INCBIN_U8("graphics/pokemon/ledyba/footprint.1bpp"); -const u8 gMonFootprint_Ledian[] = INCBIN_U8("graphics/pokemon/ledian/footprint.1bpp"); -const u8 gMonFootprint_Spinarak[] = INCBIN_U8("graphics/pokemon/spinarak/footprint.1bpp"); -const u8 gMonFootprint_Ariados[] = INCBIN_U8("graphics/pokemon/ariados/footprint.1bpp"); -const u8 gMonFootprint_Crobat[] = INCBIN_U8("graphics/pokemon/crobat/footprint.1bpp"); -const u8 gMonFootprint_Chinchou[] = INCBIN_U8("graphics/pokemon/chinchou/footprint.1bpp"); -const u8 gMonFootprint_Lanturn[] = INCBIN_U8("graphics/pokemon/lanturn/footprint.1bpp"); -const u8 gMonFootprint_Pichu[] = INCBIN_U8("graphics/pokemon/pichu/footprint.1bpp"); -const u8 gMonFootprint_Cleffa[] = INCBIN_U8("graphics/pokemon/cleffa/footprint.1bpp"); -const u8 gMonFootprint_Igglybuff[] = INCBIN_U8("graphics/pokemon/igglybuff/footprint.1bpp"); -const u8 gMonFootprint_Togepi[] = INCBIN_U8("graphics/pokemon/togepi/footprint.1bpp"); -const u8 gMonFootprint_Togetic[] = INCBIN_U8("graphics/pokemon/togetic/footprint.1bpp"); -const u8 gMonFootprint_Natu[] = INCBIN_U8("graphics/pokemon/natu/footprint.1bpp"); -const u8 gMonFootprint_Xatu[] = INCBIN_U8("graphics/pokemon/xatu/footprint.1bpp"); -const u8 gMonFootprint_Mareep[] = INCBIN_U8("graphics/pokemon/mareep/footprint.1bpp"); -const u8 gMonFootprint_Flaaffy[] = INCBIN_U8("graphics/pokemon/flaaffy/footprint.1bpp"); -const u8 gMonFootprint_Ampharos[] = INCBIN_U8("graphics/pokemon/ampharos/footprint.1bpp"); -const u8 gMonFootprint_Bellossom[] = INCBIN_U8("graphics/pokemon/bellossom/footprint.1bpp"); -const u8 gMonFootprint_Marill[] = INCBIN_U8("graphics/pokemon/marill/footprint.1bpp"); -const u8 gMonFootprint_Azumarill[] = INCBIN_U8("graphics/pokemon/azumarill/footprint.1bpp"); -const u8 gMonFootprint_Sudowoodo[] = INCBIN_U8("graphics/pokemon/sudowoodo/footprint.1bpp"); -const u8 gMonFootprint_Politoed[] = INCBIN_U8("graphics/pokemon/politoed/footprint.1bpp"); -const u8 gMonFootprint_Hoppip[] = INCBIN_U8("graphics/pokemon/hoppip/footprint.1bpp"); -const u8 gMonFootprint_Skiploom[] = INCBIN_U8("graphics/pokemon/skiploom/footprint.1bpp"); -const u8 gMonFootprint_Jumpluff[] = INCBIN_U8("graphics/pokemon/jumpluff/footprint.1bpp"); -const u8 gMonFootprint_Aipom[] = INCBIN_U8("graphics/pokemon/aipom/footprint.1bpp"); -const u8 gMonFootprint_Sunkern[] = INCBIN_U8("graphics/pokemon/sunkern/footprint.1bpp"); -const u8 gMonFootprint_Sunflora[] = INCBIN_U8("graphics/pokemon/sunflora/footprint.1bpp"); -const u8 gMonFootprint_Yanma[] = INCBIN_U8("graphics/pokemon/yanma/footprint.1bpp"); -const u8 gMonFootprint_Wooper[] = INCBIN_U8("graphics/pokemon/wooper/footprint.1bpp"); -const u8 gMonFootprint_Quagsire[] = INCBIN_U8("graphics/pokemon/quagsire/footprint.1bpp"); -const u8 gMonFootprint_Espeon[] = INCBIN_U8("graphics/pokemon/espeon/footprint.1bpp"); -const u8 gMonFootprint_Umbreon[] = INCBIN_U8("graphics/pokemon/umbreon/footprint.1bpp"); -const u8 gMonFootprint_Murkrow[] = INCBIN_U8("graphics/pokemon/murkrow/footprint.1bpp"); -const u8 gMonFootprint_Slowking[] = INCBIN_U8("graphics/pokemon/slowking/footprint.1bpp"); -const u8 gMonFootprint_Misdreavus[] = INCBIN_U8("graphics/pokemon/misdreavus/footprint.1bpp"); -const u8 gMonFootprint_Unown[] = INCBIN_U8("graphics/pokemon/unown/footprint.1bpp"); -const u8 gMonFootprint_Wobbuffet[] = INCBIN_U8("graphics/pokemon/wobbuffet/footprint.1bpp"); -const u8 gMonFootprint_Girafarig[] = INCBIN_U8("graphics/pokemon/girafarig/footprint.1bpp"); -const u8 gMonFootprint_Pineco[] = INCBIN_U8("graphics/pokemon/pineco/footprint.1bpp"); -const u8 gMonFootprint_Forretress[] = INCBIN_U8("graphics/pokemon/forretress/footprint.1bpp"); -const u8 gMonFootprint_Dunsparce[] = INCBIN_U8("graphics/pokemon/dunsparce/footprint.1bpp"); -const u8 gMonFootprint_Gligar[] = INCBIN_U8("graphics/pokemon/gligar/footprint.1bpp"); -const u8 gMonFootprint_Steelix[] = INCBIN_U8("graphics/pokemon/steelix/footprint.1bpp"); -const u8 gMonFootprint_Snubbull[] = INCBIN_U8("graphics/pokemon/snubbull/footprint.1bpp"); -const u8 gMonFootprint_Granbull[] = INCBIN_U8("graphics/pokemon/granbull/footprint.1bpp"); -const u8 gMonFootprint_Qwilfish[] = INCBIN_U8("graphics/pokemon/qwilfish/footprint.1bpp"); -const u8 gMonFootprint_Scizor[] = INCBIN_U8("graphics/pokemon/scizor/footprint.1bpp"); -const u8 gMonFootprint_Shuckle[] = INCBIN_U8("graphics/pokemon/shuckle/footprint.1bpp"); -const u8 gMonFootprint_Heracross[] = INCBIN_U8("graphics/pokemon/heracross/footprint.1bpp"); -const u8 gMonFootprint_Sneasel[] = INCBIN_U8("graphics/pokemon/sneasel/footprint.1bpp"); -const u8 gMonFootprint_Teddiursa[] = INCBIN_U8("graphics/pokemon/teddiursa/footprint.1bpp"); -const u8 gMonFootprint_Ursaring[] = INCBIN_U8("graphics/pokemon/ursaring/footprint.1bpp"); -const u8 gMonFootprint_Slugma[] = INCBIN_U8("graphics/pokemon/slugma/footprint.1bpp"); -const u8 gMonFootprint_Magcargo[] = INCBIN_U8("graphics/pokemon/magcargo/footprint.1bpp"); -const u8 gMonFootprint_Swinub[] = INCBIN_U8("graphics/pokemon/swinub/footprint.1bpp"); -const u8 gMonFootprint_Piloswine[] = INCBIN_U8("graphics/pokemon/piloswine/footprint.1bpp"); -const u8 gMonFootprint_Corsola[] = INCBIN_U8("graphics/pokemon/corsola/footprint.1bpp"); -const u8 gMonFootprint_Remoraid[] = INCBIN_U8("graphics/pokemon/remoraid/footprint.1bpp"); -const u8 gMonFootprint_Octillery[] = INCBIN_U8("graphics/pokemon/octillery/footprint.1bpp"); -const u8 gMonFootprint_Delibird[] = INCBIN_U8("graphics/pokemon/delibird/footprint.1bpp"); -const u8 gMonFootprint_Mantine[] = INCBIN_U8("graphics/pokemon/mantine/footprint.1bpp"); -const u8 gMonFootprint_Skarmory[] = INCBIN_U8("graphics/pokemon/skarmory/footprint.1bpp"); -const u8 gMonFootprint_Houndour[] = INCBIN_U8("graphics/pokemon/houndour/footprint.1bpp"); -const u8 gMonFootprint_Houndoom[] = INCBIN_U8("graphics/pokemon/houndoom/footprint.1bpp"); -const u8 gMonFootprint_Kingdra[] = INCBIN_U8("graphics/pokemon/kingdra/footprint.1bpp"); -const u8 gMonFootprint_Phanpy[] = INCBIN_U8("graphics/pokemon/phanpy/footprint.1bpp"); -const u8 gMonFootprint_Donphan[] = INCBIN_U8("graphics/pokemon/donphan/footprint.1bpp"); -const u8 gMonFootprint_Porygon2[] = INCBIN_U8("graphics/pokemon/porygon2/footprint.1bpp"); -const u8 gMonFootprint_Stantler[] = INCBIN_U8("graphics/pokemon/stantler/footprint.1bpp"); -const u8 gMonFootprint_Smeargle[] = INCBIN_U8("graphics/pokemon/smeargle/footprint.1bpp"); -const u8 gMonFootprint_Tyrogue[] = INCBIN_U8("graphics/pokemon/tyrogue/footprint.1bpp"); -const u8 gMonFootprint_Hitmontop[] = INCBIN_U8("graphics/pokemon/hitmontop/footprint.1bpp"); -const u8 gMonFootprint_Smoochum[] = INCBIN_U8("graphics/pokemon/smoochum/footprint.1bpp"); -const u8 gMonFootprint_Elekid[] = INCBIN_U8("graphics/pokemon/elekid/footprint.1bpp"); -const u8 gMonFootprint_Magby[] = INCBIN_U8("graphics/pokemon/magby/footprint.1bpp"); -const u8 gMonFootprint_Miltank[] = INCBIN_U8("graphics/pokemon/miltank/footprint.1bpp"); -const u8 gMonFootprint_Blissey[] = INCBIN_U8("graphics/pokemon/blissey/footprint.1bpp"); -const u8 gMonFootprint_Raikou[] = INCBIN_U8("graphics/pokemon/raikou/footprint.1bpp"); -const u8 gMonFootprint_Entei[] = INCBIN_U8("graphics/pokemon/entei/footprint.1bpp"); -const u8 gMonFootprint_Suicune[] = INCBIN_U8("graphics/pokemon/suicune/footprint.1bpp"); -const u8 gMonFootprint_Larvitar[] = INCBIN_U8("graphics/pokemon/larvitar/footprint.1bpp"); -const u8 gMonFootprint_Pupitar[] = INCBIN_U8("graphics/pokemon/pupitar/footprint.1bpp"); -const u8 gMonFootprint_Tyranitar[] = INCBIN_U8("graphics/pokemon/tyranitar/footprint.1bpp"); -const u8 gMonFootprint_Lugia[] = INCBIN_U8("graphics/pokemon/lugia/footprint.1bpp"); -const u8 gMonFootprint_HoOh[] = INCBIN_U8("graphics/pokemon/ho_oh/footprint.1bpp"); -const u8 gMonFootprint_Celebi[] = INCBIN_U8("graphics/pokemon/celebi/footprint.1bpp"); -const u8 gMonFootprint_Treecko[] = INCBIN_U8("graphics/pokemon/treecko/footprint.1bpp"); -const u8 gMonFootprint_Grovyle[] = INCBIN_U8("graphics/pokemon/grovyle/footprint.1bpp"); -const u8 gMonFootprint_Sceptile[] = INCBIN_U8("graphics/pokemon/sceptile/footprint.1bpp"); -const u8 gMonFootprint_Torchic[] = INCBIN_U8("graphics/pokemon/torchic/footprint.1bpp"); -const u8 gMonFootprint_Combusken[] = INCBIN_U8("graphics/pokemon/combusken/footprint.1bpp"); -const u8 gMonFootprint_Blaziken[] = INCBIN_U8("graphics/pokemon/blaziken/footprint.1bpp"); -const u8 gMonFootprint_Mudkip[] = INCBIN_U8("graphics/pokemon/mudkip/footprint.1bpp"); -const u8 gMonFootprint_Marshtomp[] = INCBIN_U8("graphics/pokemon/marshtomp/footprint.1bpp"); -const u8 gMonFootprint_Swampert[] = INCBIN_U8("graphics/pokemon/swampert/footprint.1bpp"); -const u8 gMonFootprint_Poochyena[] = INCBIN_U8("graphics/pokemon/poochyena/footprint.1bpp"); -const u8 gMonFootprint_Mightyena[] = INCBIN_U8("graphics/pokemon/mightyena/footprint.1bpp"); -const u8 gMonFootprint_Zigzagoon[] = INCBIN_U8("graphics/pokemon/zigzagoon/footprint.1bpp"); -const u8 gMonFootprint_Linoone[] = INCBIN_U8("graphics/pokemon/linoone/footprint.1bpp"); -const u8 gMonFootprint_Wurmple[] = INCBIN_U8("graphics/pokemon/wurmple/footprint.1bpp"); -const u8 gMonFootprint_Silcoon[] = INCBIN_U8("graphics/pokemon/silcoon/footprint.1bpp"); -const u8 gMonFootprint_Beautifly[] = INCBIN_U8("graphics/pokemon/beautifly/footprint.1bpp"); -const u8 gMonFootprint_Cascoon[] = INCBIN_U8("graphics/pokemon/cascoon/footprint.1bpp"); -const u8 gMonFootprint_Dustox[] = INCBIN_U8("graphics/pokemon/dustox/footprint.1bpp"); -const u8 gMonFootprint_Lotad[] = INCBIN_U8("graphics/pokemon/lotad/footprint.1bpp"); -const u8 gMonFootprint_Lombre[] = INCBIN_U8("graphics/pokemon/lombre/footprint.1bpp"); -const u8 gMonFootprint_Ludicolo[] = INCBIN_U8("graphics/pokemon/ludicolo/footprint.1bpp"); -const u8 gMonFootprint_Seedot[] = INCBIN_U8("graphics/pokemon/seedot/footprint.1bpp"); -const u8 gMonFootprint_Nuzleaf[] = INCBIN_U8("graphics/pokemon/nuzleaf/footprint.1bpp"); -const u8 gMonFootprint_Shiftry[] = INCBIN_U8("graphics/pokemon/shiftry/footprint.1bpp"); -const u8 gMonFootprint_Nincada[] = INCBIN_U8("graphics/pokemon/nincada/footprint.1bpp"); -const u8 gMonFootprint_Ninjask[] = INCBIN_U8("graphics/pokemon/ninjask/footprint.1bpp"); -const u8 gMonFootprint_Shedinja[] = INCBIN_U8("graphics/pokemon/shedinja/footprint.1bpp"); -const u8 gMonFootprint_Taillow[] = INCBIN_U8("graphics/pokemon/taillow/footprint.1bpp"); -const u8 gMonFootprint_Swellow[] = INCBIN_U8("graphics/pokemon/swellow/footprint.1bpp"); -const u8 gMonFootprint_Shroomish[] = INCBIN_U8("graphics/pokemon/shroomish/footprint.1bpp"); -const u8 gMonFootprint_Breloom[] = INCBIN_U8("graphics/pokemon/breloom/footprint.1bpp"); -const u8 gMonFootprint_Spinda[] = INCBIN_U8("graphics/pokemon/spinda/footprint.1bpp"); -const u8 gMonFootprint_Wingull[] = INCBIN_U8("graphics/pokemon/wingull/footprint.1bpp"); -const u8 gMonFootprint_Pelipper[] = INCBIN_U8("graphics/pokemon/pelipper/footprint.1bpp"); -const u8 gMonFootprint_Surskit[] = INCBIN_U8("graphics/pokemon/surskit/footprint.1bpp"); -const u8 gMonFootprint_Masquerain[] = INCBIN_U8("graphics/pokemon/masquerain/footprint.1bpp"); -const u8 gMonFootprint_Wailmer[] = INCBIN_U8("graphics/pokemon/wailmer/footprint.1bpp"); -const u8 gMonFootprint_Wailord[] = INCBIN_U8("graphics/pokemon/wailord/footprint.1bpp"); -const u8 gMonFootprint_Skitty[] = INCBIN_U8("graphics/pokemon/skitty/footprint.1bpp"); -const u8 gMonFootprint_Delcatty[] = INCBIN_U8("graphics/pokemon/delcatty/footprint.1bpp"); -const u8 gMonFootprint_Kecleon[] = INCBIN_U8("graphics/pokemon/kecleon/footprint.1bpp"); -const u8 gMonFootprint_Baltoy[] = INCBIN_U8("graphics/pokemon/baltoy/footprint.1bpp"); -const u8 gMonFootprint_Claydol[] = INCBIN_U8("graphics/pokemon/claydol/footprint.1bpp"); -const u8 gMonFootprint_Nosepass[] = INCBIN_U8("graphics/pokemon/nosepass/footprint.1bpp"); -const u8 gMonFootprint_Torkoal[] = INCBIN_U8("graphics/pokemon/torkoal/footprint.1bpp"); -const u8 gMonFootprint_Sableye[] = INCBIN_U8("graphics/pokemon/sableye/footprint.1bpp"); -const u8 gMonFootprint_Barboach[] = INCBIN_U8("graphics/pokemon/barboach/footprint.1bpp"); -const u8 gMonFootprint_Whiscash[] = INCBIN_U8("graphics/pokemon/whiscash/footprint.1bpp"); -const u8 gMonFootprint_Luvdisc[] = INCBIN_U8("graphics/pokemon/luvdisc/footprint.1bpp"); -const u8 gMonFootprint_Corphish[] = INCBIN_U8("graphics/pokemon/corphish/footprint.1bpp"); -const u8 gMonFootprint_Crawdaunt[] = INCBIN_U8("graphics/pokemon/crawdaunt/footprint.1bpp"); -const u8 gMonFootprint_Feebas[] = INCBIN_U8("graphics/pokemon/feebas/footprint.1bpp"); -const u8 gMonFootprint_Milotic[] = INCBIN_U8("graphics/pokemon/milotic/footprint.1bpp"); -const u8 gMonFootprint_Carvanha[] = INCBIN_U8("graphics/pokemon/carvanha/footprint.1bpp"); -const u8 gMonFootprint_Sharpedo[] = INCBIN_U8("graphics/pokemon/sharpedo/footprint.1bpp"); -const u8 gMonFootprint_Trapinch[] = INCBIN_U8("graphics/pokemon/trapinch/footprint.1bpp"); -const u8 gMonFootprint_Vibrava[] = INCBIN_U8("graphics/pokemon/vibrava/footprint.1bpp"); -const u8 gMonFootprint_Flygon[] = INCBIN_U8("graphics/pokemon/flygon/footprint.1bpp"); -const u8 gMonFootprint_Makuhita[] = INCBIN_U8("graphics/pokemon/makuhita/footprint.1bpp"); -const u8 gMonFootprint_Hariyama[] = INCBIN_U8("graphics/pokemon/hariyama/footprint.1bpp"); -const u8 gMonFootprint_Electrike[] = INCBIN_U8("graphics/pokemon/electrike/footprint.1bpp"); -const u8 gMonFootprint_Manectric[] = INCBIN_U8("graphics/pokemon/manectric/footprint.1bpp"); -const u8 gMonFootprint_Numel[] = INCBIN_U8("graphics/pokemon/numel/footprint.1bpp"); -const u8 gMonFootprint_Camerupt[] = INCBIN_U8("graphics/pokemon/camerupt/footprint.1bpp"); -const u8 gMonFootprint_Spheal[] = INCBIN_U8("graphics/pokemon/spheal/footprint.1bpp"); -const u8 gMonFootprint_Sealeo[] = INCBIN_U8("graphics/pokemon/sealeo/footprint.1bpp"); -const u8 gMonFootprint_Walrein[] = INCBIN_U8("graphics/pokemon/walrein/footprint.1bpp"); -const u8 gMonFootprint_Cacnea[] = INCBIN_U8("graphics/pokemon/cacnea/footprint.1bpp"); -const u8 gMonFootprint_Cacturne[] = INCBIN_U8("graphics/pokemon/cacturne/footprint.1bpp"); -const u8 gMonFootprint_Snorunt[] = INCBIN_U8("graphics/pokemon/snorunt/footprint.1bpp"); -const u8 gMonFootprint_Glalie[] = INCBIN_U8("graphics/pokemon/glalie/footprint.1bpp"); -const u8 gMonFootprint_Lunatone[] = INCBIN_U8("graphics/pokemon/lunatone/footprint.1bpp"); -const u8 gMonFootprint_Solrock[] = INCBIN_U8("graphics/pokemon/solrock/footprint.1bpp"); -const u8 gMonFootprint_Azurill[] = INCBIN_U8("graphics/pokemon/azurill/footprint.1bpp"); -const u8 gMonFootprint_Spoink[] = INCBIN_U8("graphics/pokemon/spoink/footprint.1bpp"); -const u8 gMonFootprint_Grumpig[] = INCBIN_U8("graphics/pokemon/grumpig/footprint.1bpp"); -const u8 gMonFootprint_Plusle[] = INCBIN_U8("graphics/pokemon/plusle/footprint.1bpp"); -const u8 gMonFootprint_Minun[] = INCBIN_U8("graphics/pokemon/minun/footprint.1bpp"); -const u8 gMonFootprint_Mawile[] = INCBIN_U8("graphics/pokemon/mawile/footprint.1bpp"); -const u8 gMonFootprint_Meditite[] = INCBIN_U8("graphics/pokemon/meditite/footprint.1bpp"); -const u8 gMonFootprint_Medicham[] = INCBIN_U8("graphics/pokemon/medicham/footprint.1bpp"); -const u8 gMonFootprint_Swablu[] = INCBIN_U8("graphics/pokemon/swablu/footprint.1bpp"); -const u8 gMonFootprint_Altaria[] = INCBIN_U8("graphics/pokemon/altaria/footprint.1bpp"); -const u8 gMonFootprint_Wynaut[] = INCBIN_U8("graphics/pokemon/wynaut/footprint.1bpp"); -const u8 gMonFootprint_Duskull[] = INCBIN_U8("graphics/pokemon/duskull/footprint.1bpp"); -const u8 gMonFootprint_Dusclops[] = INCBIN_U8("graphics/pokemon/dusclops/footprint.1bpp"); -const u8 gMonFootprint_Roselia[] = INCBIN_U8("graphics/pokemon/roselia/footprint.1bpp"); -const u8 gMonFootprint_Slakoth[] = INCBIN_U8("graphics/pokemon/slakoth/footprint.1bpp"); -const u8 gMonFootprint_Vigoroth[] = INCBIN_U8("graphics/pokemon/vigoroth/footprint.1bpp"); -const u8 gMonFootprint_Slaking[] = INCBIN_U8("graphics/pokemon/slaking/footprint.1bpp"); -const u8 gMonFootprint_Gulpin[] = INCBIN_U8("graphics/pokemon/gulpin/footprint.1bpp"); -const u8 gMonFootprint_Swalot[] = INCBIN_U8("graphics/pokemon/swalot/footprint.1bpp"); -const u8 gMonFootprint_Tropius[] = INCBIN_U8("graphics/pokemon/tropius/footprint.1bpp"); -const u8 gMonFootprint_Whismur[] = INCBIN_U8("graphics/pokemon/whismur/footprint.1bpp"); -const u8 gMonFootprint_Loudred[] = INCBIN_U8("graphics/pokemon/loudred/footprint.1bpp"); -const u8 gMonFootprint_Exploud[] = INCBIN_U8("graphics/pokemon/exploud/footprint.1bpp"); -const u8 gMonFootprint_Clamperl[] = INCBIN_U8("graphics/pokemon/clamperl/footprint.1bpp"); -const u8 gMonFootprint_Huntail[] = INCBIN_U8("graphics/pokemon/huntail/footprint.1bpp"); -const u8 gMonFootprint_Gorebyss[] = INCBIN_U8("graphics/pokemon/gorebyss/footprint.1bpp"); -const u8 gMonFootprint_Absol[] = INCBIN_U8("graphics/pokemon/absol/footprint.1bpp"); -const u8 gMonFootprint_Shuppet[] = INCBIN_U8("graphics/pokemon/shuppet/footprint.1bpp"); -const u8 gMonFootprint_Banette[] = INCBIN_U8("graphics/pokemon/banette/footprint.1bpp"); -const u8 gMonFootprint_Seviper[] = INCBIN_U8("graphics/pokemon/seviper/footprint.1bpp"); -const u8 gMonFootprint_Zangoose[] = INCBIN_U8("graphics/pokemon/zangoose/footprint.1bpp"); -const u8 gMonFootprint_Relicanth[] = INCBIN_U8("graphics/pokemon/relicanth/footprint.1bpp"); -const u8 gMonFootprint_Aron[] = INCBIN_U8("graphics/pokemon/aron/footprint.1bpp"); -const u8 gMonFootprint_Lairon[] = INCBIN_U8("graphics/pokemon/lairon/footprint.1bpp"); -const u8 gMonFootprint_Aggron[] = INCBIN_U8("graphics/pokemon/aggron/footprint.1bpp"); -const u8 gMonFootprint_Castform[] = INCBIN_U8("graphics/pokemon/castform/footprint.1bpp"); -const u8 gMonFootprint_Volbeat[] = INCBIN_U8("graphics/pokemon/volbeat/footprint.1bpp"); -const u8 gMonFootprint_Illumise[] = INCBIN_U8("graphics/pokemon/illumise/footprint.1bpp"); -const u8 gMonFootprint_Lileep[] = INCBIN_U8("graphics/pokemon/lileep/footprint.1bpp"); -const u8 gMonFootprint_Cradily[] = INCBIN_U8("graphics/pokemon/cradily/footprint.1bpp"); -const u8 gMonFootprint_Anorith[] = INCBIN_U8("graphics/pokemon/anorith/footprint.1bpp"); -const u8 gMonFootprint_Armaldo[] = INCBIN_U8("graphics/pokemon/armaldo/footprint.1bpp"); -const u8 gMonFootprint_Ralts[] = INCBIN_U8("graphics/pokemon/ralts/footprint.1bpp"); -const u8 gMonFootprint_Kirlia[] = INCBIN_U8("graphics/pokemon/kirlia/footprint.1bpp"); -const u8 gMonFootprint_Gardevoir[] = INCBIN_U8("graphics/pokemon/gardevoir/footprint.1bpp"); -const u8 gMonFootprint_Bagon[] = INCBIN_U8("graphics/pokemon/bagon/footprint.1bpp"); -const u8 gMonFootprint_Shelgon[] = INCBIN_U8("graphics/pokemon/shelgon/footprint.1bpp"); -const u8 gMonFootprint_Salamence[] = INCBIN_U8("graphics/pokemon/salamence/footprint.1bpp"); -const u8 gMonFootprint_Beldum[] = INCBIN_U8("graphics/pokemon/beldum/footprint.1bpp"); -const u8 gMonFootprint_Metang[] = INCBIN_U8("graphics/pokemon/metang/footprint.1bpp"); -const u8 gMonFootprint_Metagross[] = INCBIN_U8("graphics/pokemon/metagross/footprint.1bpp"); -const u8 gMonFootprint_Regirock[] = INCBIN_U8("graphics/pokemon/regirock/footprint.1bpp"); -const u8 gMonFootprint_Regice[] = INCBIN_U8("graphics/pokemon/regice/footprint.1bpp"); -const u8 gMonFootprint_Registeel[] = INCBIN_U8("graphics/pokemon/registeel/footprint.1bpp"); -const u8 gMonFootprint_Kyogre[] = INCBIN_U8("graphics/pokemon/kyogre/footprint.1bpp"); -const u8 gMonFootprint_Groudon[] = INCBIN_U8("graphics/pokemon/groudon/footprint.1bpp"); -const u8 gMonFootprint_Rayquaza[] = INCBIN_U8("graphics/pokemon/rayquaza/footprint.1bpp"); -const u8 gMonFootprint_Latias[] = INCBIN_U8("graphics/pokemon/latias/footprint.1bpp"); -const u8 gMonFootprint_Latios[] = INCBIN_U8("graphics/pokemon/latios/footprint.1bpp"); -const u8 gMonFootprint_Jirachi[] = INCBIN_U8("graphics/pokemon/jirachi/footprint.1bpp"); -const u8 gMonFootprint_Deoxys[] = INCBIN_U8("graphics/pokemon/deoxys/footprint.1bpp"); -const u8 gMonFootprint_Chimecho[] = INCBIN_U8("graphics/pokemon/chimecho/footprint.1bpp"); -#if P_GEN_4_POKEMON == TRUE -const u8 gMonFootprint_Turtwig[] = INCBIN_U8("graphics/pokemon/turtwig/footprint.1bpp"); -const u8 gMonFootprint_Grotle[] = INCBIN_U8("graphics/pokemon/grotle/footprint.1bpp"); -const u8 gMonFootprint_Torterra[] = INCBIN_U8("graphics/pokemon/torterra/footprint.1bpp"); -const u8 gMonFootprint_Chimchar[] = INCBIN_U8("graphics/pokemon/chimchar/footprint.1bpp"); -const u8 gMonFootprint_Monferno[] = INCBIN_U8("graphics/pokemon/monferno/footprint.1bpp"); -const u8 gMonFootprint_Infernape[] = INCBIN_U8("graphics/pokemon/infernape/footprint.1bpp"); -const u8 gMonFootprint_Piplup[] = INCBIN_U8("graphics/pokemon/piplup/footprint.1bpp"); -const u8 gMonFootprint_Prinplup[] = INCBIN_U8("graphics/pokemon/prinplup/footprint.1bpp"); -const u8 gMonFootprint_Empoleon[] = INCBIN_U8("graphics/pokemon/empoleon/footprint.1bpp"); -const u8 gMonFootprint_Starly[] = INCBIN_U8("graphics/pokemon/starly/footprint.1bpp"); -const u8 gMonFootprint_Staravia[] = INCBIN_U8("graphics/pokemon/staravia/footprint.1bpp"); -const u8 gMonFootprint_Staraptor[] = INCBIN_U8("graphics/pokemon/staraptor/footprint.1bpp"); -const u8 gMonFootprint_Bidoof[] = INCBIN_U8("graphics/pokemon/bidoof/footprint.1bpp"); -const u8 gMonFootprint_Bibarel[] = INCBIN_U8("graphics/pokemon/bibarel/footprint.1bpp"); -const u8 gMonFootprint_Kricketot[] = INCBIN_U8("graphics/pokemon/kricketot/footprint.1bpp"); -const u8 gMonFootprint_Kricketune[] = INCBIN_U8("graphics/pokemon/kricketune/footprint.1bpp"); -const u8 gMonFootprint_Shinx[] = INCBIN_U8("graphics/pokemon/shinx/footprint.1bpp"); -const u8 gMonFootprint_Luxio[] = INCBIN_U8("graphics/pokemon/luxio/footprint.1bpp"); -const u8 gMonFootprint_Luxray[] = INCBIN_U8("graphics/pokemon/luxray/footprint.1bpp"); -const u8 gMonFootprint_Budew[] = INCBIN_U8("graphics/pokemon/budew/footprint.1bpp"); -const u8 gMonFootprint_Roserade[] = INCBIN_U8("graphics/pokemon/roserade/footprint.1bpp"); -const u8 gMonFootprint_Cranidos[] = INCBIN_U8("graphics/pokemon/cranidos/footprint.1bpp"); -const u8 gMonFootprint_Rampardos[] = INCBIN_U8("graphics/pokemon/rampardos/footprint.1bpp"); -const u8 gMonFootprint_Shieldon[] = INCBIN_U8("graphics/pokemon/shieldon/footprint.1bpp"); -const u8 gMonFootprint_Bastiodon[] = INCBIN_U8("graphics/pokemon/bastiodon/footprint.1bpp"); -const u8 gMonFootprint_Burmy[] = INCBIN_U8("graphics/pokemon/burmy/plant/footprint.1bpp"); -const u8 gMonFootprint_Wormadam[] = INCBIN_U8("graphics/pokemon/wormadam/plant/footprint.1bpp"); -const u8 gMonFootprint_Mothim[] = INCBIN_U8("graphics/pokemon/mothim/footprint.1bpp"); -const u8 gMonFootprint_Combee[] = INCBIN_U8("graphics/pokemon/combee/footprint.1bpp"); -const u8 gMonFootprint_Vespiquen[] = INCBIN_U8("graphics/pokemon/vespiquen/footprint.1bpp"); -const u8 gMonFootprint_Pachirisu[] = INCBIN_U8("graphics/pokemon/pachirisu/footprint.1bpp"); -const u8 gMonFootprint_Buizel[] = INCBIN_U8("graphics/pokemon/buizel/footprint.1bpp"); -const u8 gMonFootprint_Floatzel[] = INCBIN_U8("graphics/pokemon/floatzel/footprint.1bpp"); -const u8 gMonFootprint_Cherubi[] = INCBIN_U8("graphics/pokemon/cherubi/footprint.1bpp"); -const u8 gMonFootprint_Cherrim[] = INCBIN_U8("graphics/pokemon/cherrim/footprint.1bpp"); -const u8 gMonFootprint_Shellos[] = INCBIN_U8("graphics/pokemon/shellos/footprint.1bpp"); -const u8 gMonFootprint_Gastrodon[] = INCBIN_U8("graphics/pokemon/gastrodon/footprint.1bpp"); -const u8 gMonFootprint_Ambipom[] = INCBIN_U8("graphics/pokemon/ambipom/footprint.1bpp"); -const u8 gMonFootprint_Drifloon[] = INCBIN_U8("graphics/pokemon/drifloon/footprint.1bpp"); -const u8 gMonFootprint_Drifblim[] = INCBIN_U8("graphics/pokemon/drifblim/footprint.1bpp"); -const u8 gMonFootprint_Buneary[] = INCBIN_U8("graphics/pokemon/buneary/footprint.1bpp"); -const u8 gMonFootprint_Lopunny[] = INCBIN_U8("graphics/pokemon/lopunny/footprint.1bpp"); -const u8 gMonFootprint_Mismagius[] = INCBIN_U8("graphics/pokemon/mismagius/footprint.1bpp"); -const u8 gMonFootprint_Honchkrow[] = INCBIN_U8("graphics/pokemon/honchkrow/footprint.1bpp"); -const u8 gMonFootprint_Glameow[] = INCBIN_U8("graphics/pokemon/glameow/footprint.1bpp"); -const u8 gMonFootprint_Purugly[] = INCBIN_U8("graphics/pokemon/purugly/footprint.1bpp"); -const u8 gMonFootprint_Chingling[] = INCBIN_U8("graphics/pokemon/chingling/footprint.1bpp"); -const u8 gMonFootprint_Stunky[] = INCBIN_U8("graphics/pokemon/stunky/footprint.1bpp"); -const u8 gMonFootprint_Skuntank[] = INCBIN_U8("graphics/pokemon/skuntank/footprint.1bpp"); -const u8 gMonFootprint_Bronzor[] = INCBIN_U8("graphics/pokemon/bronzor/footprint.1bpp"); -const u8 gMonFootprint_Bronzong[] = INCBIN_U8("graphics/pokemon/bronzong/footprint.1bpp"); -const u8 gMonFootprint_Bonsly[] = INCBIN_U8("graphics/pokemon/bonsly/footprint.1bpp"); -const u8 gMonFootprint_MimeJr[] = INCBIN_U8("graphics/pokemon/mime_jr/footprint.1bpp"); -const u8 gMonFootprint_Happiny[] = INCBIN_U8("graphics/pokemon/happiny/footprint.1bpp"); -const u8 gMonFootprint_Chatot[] = INCBIN_U8("graphics/pokemon/chatot/footprint.1bpp"); -const u8 gMonFootprint_Spiritomb[] = INCBIN_U8("graphics/pokemon/spiritomb/footprint.1bpp"); -const u8 gMonFootprint_Gible[] = INCBIN_U8("graphics/pokemon/gible/footprint.1bpp"); -const u8 gMonFootprint_Gabite[] = INCBIN_U8("graphics/pokemon/gabite/footprint.1bpp"); -const u8 gMonFootprint_Garchomp[] = INCBIN_U8("graphics/pokemon/garchomp/footprint.1bpp"); -const u8 gMonFootprint_Munchlax[] = INCBIN_U8("graphics/pokemon/munchlax/footprint.1bpp"); -const u8 gMonFootprint_Riolu[] = INCBIN_U8("graphics/pokemon/riolu/footprint.1bpp"); -const u8 gMonFootprint_Lucario[] = INCBIN_U8("graphics/pokemon/lucario/footprint.1bpp"); -const u8 gMonFootprint_Hippopotas[] = INCBIN_U8("graphics/pokemon/hippopotas/footprint.1bpp"); -const u8 gMonFootprint_Hippowdon[] = INCBIN_U8("graphics/pokemon/hippowdon/footprint.1bpp"); -const u8 gMonFootprint_Skorupi[] = INCBIN_U8("graphics/pokemon/skorupi/footprint.1bpp"); -const u8 gMonFootprint_Drapion[] = INCBIN_U8("graphics/pokemon/drapion/footprint.1bpp"); -const u8 gMonFootprint_Croagunk[] = INCBIN_U8("graphics/pokemon/croagunk/footprint.1bpp"); -const u8 gMonFootprint_Toxicroak[] = INCBIN_U8("graphics/pokemon/toxicroak/footprint.1bpp"); -const u8 gMonFootprint_Carnivine[] = INCBIN_U8("graphics/pokemon/carnivine/footprint.1bpp"); -const u8 gMonFootprint_Finneon[] = INCBIN_U8("graphics/pokemon/finneon/footprint.1bpp"); -const u8 gMonFootprint_Lumineon[] = INCBIN_U8("graphics/pokemon/lumineon/footprint.1bpp"); -const u8 gMonFootprint_Mantyke[] = INCBIN_U8("graphics/pokemon/mantyke/footprint.1bpp"); -const u8 gMonFootprint_Snover[] = INCBIN_U8("graphics/pokemon/snover/footprint.1bpp"); -const u8 gMonFootprint_Abomasnow[] = INCBIN_U8("graphics/pokemon/abomasnow/footprint.1bpp"); -const u8 gMonFootprint_Weavile[] = INCBIN_U8("graphics/pokemon/weavile/footprint.1bpp"); -const u8 gMonFootprint_Magnezone[] = INCBIN_U8("graphics/pokemon/magnezone/footprint.1bpp"); -const u8 gMonFootprint_Lickilicky[] = INCBIN_U8("graphics/pokemon/lickilicky/footprint.1bpp"); -const u8 gMonFootprint_Rhyperior[] = INCBIN_U8("graphics/pokemon/rhyperior/footprint.1bpp"); -const u8 gMonFootprint_Tangrowth[] = INCBIN_U8("graphics/pokemon/tangrowth/footprint.1bpp"); -const u8 gMonFootprint_Electivire[] = INCBIN_U8("graphics/pokemon/electivire/footprint.1bpp"); -const u8 gMonFootprint_Magmortar[] = INCBIN_U8("graphics/pokemon/magmortar/footprint.1bpp"); -const u8 gMonFootprint_Togekiss[] = INCBIN_U8("graphics/pokemon/togekiss/footprint.1bpp"); -const u8 gMonFootprint_Yanmega[] = INCBIN_U8("graphics/pokemon/yanmega/footprint.1bpp"); -const u8 gMonFootprint_Leafeon[] = INCBIN_U8("graphics/pokemon/leafeon/footprint.1bpp"); -const u8 gMonFootprint_Glaceon[] = INCBIN_U8("graphics/pokemon/glaceon/footprint.1bpp"); -const u8 gMonFootprint_Gliscor[] = INCBIN_U8("graphics/pokemon/gliscor/footprint.1bpp"); -const u8 gMonFootprint_Mamoswine[] = INCBIN_U8("graphics/pokemon/mamoswine/footprint.1bpp"); -const u8 gMonFootprint_PorygonZ[] = INCBIN_U8("graphics/pokemon/porygon_z/footprint.1bpp"); -const u8 gMonFootprint_Gallade[] = INCBIN_U8("graphics/pokemon/gallade/footprint.1bpp"); -const u8 gMonFootprint_Probopass[] = INCBIN_U8("graphics/pokemon/probopass/footprint.1bpp"); -const u8 gMonFootprint_Dusknoir[] = INCBIN_U8("graphics/pokemon/dusknoir/footprint.1bpp"); -const u8 gMonFootprint_Froslass[] = INCBIN_U8("graphics/pokemon/froslass/footprint.1bpp"); -const u8 gMonFootprint_Rotom[] = INCBIN_U8("graphics/pokemon/rotom/normal/footprint.1bpp"); -const u8 gMonFootprint_Uxie[] = INCBIN_U8("graphics/pokemon/uxie/footprint.1bpp"); -const u8 gMonFootprint_Mesprit[] = INCBIN_U8("graphics/pokemon/mesprit/footprint.1bpp"); -const u8 gMonFootprint_Azelf[] = INCBIN_U8("graphics/pokemon/azelf/footprint.1bpp"); -const u8 gMonFootprint_Dialga[] = INCBIN_U8("graphics/pokemon/dialga/footprint.1bpp"); -const u8 gMonFootprint_Palkia[] = INCBIN_U8("graphics/pokemon/palkia/footprint.1bpp"); -const u8 gMonFootprint_Heatran[] = INCBIN_U8("graphics/pokemon/heatran/footprint.1bpp"); -const u8 gMonFootprint_Regigigas[] = INCBIN_U8("graphics/pokemon/regigigas/footprint.1bpp"); -const u8 gMonFootprint_Giratina[] = INCBIN_U8("graphics/pokemon/giratina/footprint.1bpp"); -const u8 gMonFootprint_Cresselia[] = INCBIN_U8("graphics/pokemon/cresselia/footprint.1bpp"); -const u8 gMonFootprint_Phione[] = INCBIN_U8("graphics/pokemon/phione/footprint.1bpp"); -const u8 gMonFootprint_Manaphy[] = INCBIN_U8("graphics/pokemon/manaphy/footprint.1bpp"); -const u8 gMonFootprint_Darkrai[] = INCBIN_U8("graphics/pokemon/darkrai/footprint.1bpp"); -const u8 gMonFootprint_Shaymin[] = INCBIN_U8("graphics/pokemon/shaymin/footprint.1bpp"); -const u8 gMonFootprint_Arceus[] = INCBIN_U8("graphics/pokemon/arceus/footprint.1bpp"); + +#if P_FAMILY_BULBASAUR + const u32 gMonFrontPic_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/anim_front.4bpp.lz"); + const u32 gMonPalette_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/normal.gbapal.lz"); + const u32 gMonBackPic_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/back.4bpp.lz"); + const u32 gMonShinyPalette_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/shiny.gbapal.lz"); + const u8 gMonIcon_Bulbasaur[] = INCBIN_U8("graphics/pokemon/bulbasaur/icon.4bpp"); + const u8 gMonFootprint_Bulbasaur[] = INCBIN_U8("graphics/pokemon/bulbasaur/footprint.1bpp"); + + const u32 gMonFrontPic_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/anim_front.4bpp.lz"); + const u32 gMonPalette_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/normal.gbapal.lz"); + const u32 gMonBackPic_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/back.4bpp.lz"); + const u32 gMonShinyPalette_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/shiny.gbapal.lz"); + const u8 gMonIcon_Ivysaur[] = INCBIN_U8("graphics/pokemon/ivysaur/icon.4bpp"); + const u8 gMonFootprint_Ivysaur[] = INCBIN_U8("graphics/pokemon/ivysaur/footprint.1bpp"); + + const u32 gMonFrontPic_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/anim_front.4bpp.lz"); + const u32 gMonPalette_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/normal.gbapal.lz"); + const u32 gMonBackPic_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/back.4bpp.lz"); + const u32 gMonShinyPalette_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/shiny.gbapal.lz"); + const u8 gMonIcon_Venusaur[] = INCBIN_U8("graphics/pokemon/venusaur/icon.4bpp"); + const u8 gMonFootprint_Venusaur[] = INCBIN_U8("graphics/pokemon/venusaur/footprint.1bpp"); + + const u32 gMonFrontPic_VenusaurF[] = INCBIN_U32("graphics/pokemon/venusaur/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_VenusaurF[] = INCBIN_U32("graphics/pokemon/venusaur/backf.4bpp.lz"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/front.4bpp.lz"); + const u32 gMonPalette_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/normal.gbapal.lz"); + const u32 gMonBackPic_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_VenusaurMega[] = INCBIN_U32("graphics/pokemon/venusaur/mega/shiny.gbapal.lz"); + const u8 gMonIcon_VenusaurMega[] = INCBIN_U8("graphics/pokemon/venusaur/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_VenusaurGigantamax[] = INCBIN_U32("graphics/pokemon/venusaur/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_VenusaurGigantamax[] = INCBIN_U32("graphics/pokemon/venusaur/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_VenusaurGigantamax[] = INCBIN_U32("graphics/pokemon/venusaur/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_VenusaurGigantamax[] = INCBIN_U32("graphics/pokemon/venusaur/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_VenusaurGigantamax[] = INCBIN_U8("graphics/pokemon/venusaur/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_BULBASAUR + +#if P_FAMILY_CHARMANDER + const u32 gMonFrontPic_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/anim_front.4bpp.lz"); + const u32 gMonPalette_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/normal.gbapal.lz"); + const u32 gMonBackPic_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/back.4bpp.lz"); + const u32 gMonShinyPalette_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/shiny.gbapal.lz"); + const u8 gMonIcon_Charmander[] = INCBIN_U8("graphics/pokemon/charmander/icon.4bpp"); + const u8 gMonFootprint_Charmander[] = INCBIN_U8("graphics/pokemon/charmander/footprint.1bpp"); + + const u32 gMonFrontPic_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/anim_front.4bpp.lz"); + const u32 gMonPalette_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/normal.gbapal.lz"); + const u32 gMonBackPic_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/back.4bpp.lz"); + const u32 gMonShinyPalette_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/shiny.gbapal.lz"); + const u8 gMonIcon_Charmeleon[] = INCBIN_U8("graphics/pokemon/charmeleon/icon.4bpp"); + const u8 gMonFootprint_Charmeleon[] = INCBIN_U8("graphics/pokemon/charmeleon/footprint.1bpp"); + + const u32 gMonFrontPic_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/anim_front.4bpp.lz"); + const u32 gMonPalette_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/normal.gbapal.lz"); + const u32 gMonBackPic_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/back.4bpp.lz"); + const u32 gMonShinyPalette_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/shiny.gbapal.lz"); + const u8 gMonIcon_Charizard[] = INCBIN_U8("graphics/pokemon/charizard/icon.4bpp"); + const u8 gMonFootprint_Charizard[] = INCBIN_U8("graphics/pokemon/charizard/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/front.4bpp.lz"); + const u32 gMonPalette_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/normal.gbapal.lz"); + const u32 gMonBackPic_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/back.4bpp.lz"); + const u32 gMonShinyPalette_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/shiny.gbapal.lz"); + const u8 gMonIcon_CharizardMegaX[] = INCBIN_U8("graphics/pokemon/charizard/mega_x/icon.4bpp"); + + const u32 gMonFrontPic_CharizardMegaY[] = INCBIN_U32("graphics/pokemon/charizard/mega_y/front.4bpp.lz"); + const u32 gMonPalette_CharizardMegaY[] = INCBIN_U32("graphics/pokemon/charizard/mega_y/normal.gbapal.lz"); + const u32 gMonBackPic_CharizardMegaY[] = INCBIN_U32("graphics/pokemon/charizard/mega_y/back.4bpp.lz"); + const u32 gMonShinyPalette_CharizardMegaY[] = INCBIN_U32("graphics/pokemon/charizard/mega_y/shiny.gbapal.lz"); + const u8 gMonIcon_CharizardMegaY[] = INCBIN_U8("graphics/pokemon/charizard/mega_y/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_CharizardGigantamax[] = INCBIN_U32("graphics/pokemon/charizard/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_CharizardGigantamax[] = INCBIN_U32("graphics/pokemon/charizard/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_CharizardGigantamax[] = INCBIN_U32("graphics/pokemon/charizard/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_CharizardGigantamax[] = INCBIN_U32("graphics/pokemon/charizard/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_CharizardGigantamax[] = INCBIN_U8("graphics/pokemon/charizard/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CHARMANDER + +#if P_FAMILY_SQUIRTLE + const u32 gMonFrontPic_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/anim_front.4bpp.lz"); + const u32 gMonPalette_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/normal.gbapal.lz"); + const u32 gMonBackPic_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/back.4bpp.lz"); + const u32 gMonShinyPalette_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/shiny.gbapal.lz"); + const u8 gMonIcon_Squirtle[] = INCBIN_U8("graphics/pokemon/squirtle/icon.4bpp"); + const u8 gMonFootprint_Squirtle[] = INCBIN_U8("graphics/pokemon/squirtle/footprint.1bpp"); + + const u32 gMonFrontPic_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/anim_front.4bpp.lz"); + const u32 gMonPalette_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/normal.gbapal.lz"); + const u32 gMonBackPic_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/back.4bpp.lz"); + const u32 gMonShinyPalette_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/shiny.gbapal.lz"); + const u8 gMonIcon_Wartortle[] = INCBIN_U8("graphics/pokemon/wartortle/icon.4bpp"); + const u8 gMonFootprint_Wartortle[] = INCBIN_U8("graphics/pokemon/wartortle/footprint.1bpp"); + + const u32 gMonFrontPic_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/anim_front.4bpp.lz"); + const u32 gMonPalette_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/normal.gbapal.lz"); + const u32 gMonBackPic_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/back.4bpp.lz"); + const u32 gMonShinyPalette_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/shiny.gbapal.lz"); + const u8 gMonIcon_Blastoise[] = INCBIN_U8("graphics/pokemon/blastoise/icon.4bpp"); + const u8 gMonFootprint_Blastoise[] = INCBIN_U8("graphics/pokemon/blastoise/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_BlastoiseMega[] = INCBIN_U32("graphics/pokemon/blastoise/mega/front.4bpp.lz"); + const u32 gMonPalette_BlastoiseMega[] = INCBIN_U32("graphics/pokemon/blastoise/mega/normal.gbapal.lz"); + const u32 gMonBackPic_BlastoiseMega[] = INCBIN_U32("graphics/pokemon/blastoise/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_BlastoiseMega[] = INCBIN_U32("graphics/pokemon/blastoise/mega/shiny.gbapal.lz"); + const u8 gMonIcon_BlastoiseMega[] = INCBIN_U8("graphics/pokemon/blastoise/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_BlastoiseGigantamax[] = INCBIN_U32("graphics/pokemon/blastoise/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_BlastoiseGigantamax[] = INCBIN_U32("graphics/pokemon/blastoise/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_BlastoiseGigantamax[] = INCBIN_U32("graphics/pokemon/blastoise/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_BlastoiseGigantamax[] = INCBIN_U32("graphics/pokemon/blastoise/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_BlastoiseGigantamax[] = INCBIN_U8("graphics/pokemon/blastoise/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SQUIRTLE + +#if P_FAMILY_CATERPIE + const u32 gMonFrontPic_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/anim_front.4bpp.lz"); + const u32 gMonPalette_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/normal.gbapal.lz"); + const u32 gMonBackPic_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/back.4bpp.lz"); + const u32 gMonShinyPalette_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/shiny.gbapal.lz"); + const u8 gMonIcon_Caterpie[] = INCBIN_U8("graphics/pokemon/caterpie/icon.4bpp"); + const u8 gMonFootprint_Caterpie[] = INCBIN_U8("graphics/pokemon/caterpie/footprint.1bpp"); + + const u32 gMonFrontPic_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/anim_front.4bpp.lz"); + const u32 gMonPalette_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/normal.gbapal.lz"); + const u32 gMonBackPic_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/back.4bpp.lz"); + const u32 gMonShinyPalette_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/shiny.gbapal.lz"); + const u8 gMonIcon_Metapod[] = INCBIN_U8( "graphics/pokemon/metapod/icon.4bpp"); + const u8 gMonFootprint_Metapod[] = INCBIN_U8("graphics/pokemon/metapod/footprint.1bpp"); + + const u32 gMonFrontPic_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/anim_front.4bpp.lz"); + const u32 gMonPalette_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/normal.gbapal.lz"); + const u32 gMonBackPic_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/back.4bpp.lz"); + const u32 gMonShinyPalette_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/shiny.gbapal.lz"); + const u8 gMonIcon_Butterfree[] = INCBIN_U8("graphics/pokemon/butterfree/icon.4bpp"); + const u8 gMonFootprint_Butterfree[] = INCBIN_U8("graphics/pokemon/butterfree/footprint.1bpp"); + + const u32 gMonFrontPic_ButterfreeF[] = INCBIN_U32("graphics/pokemon/butterfree/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_ButterfreeF[] = INCBIN_U32("graphics/pokemon/butterfree/backf.4bpp.lz"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_ButterfreeGigantamax[] = INCBIN_U32("graphics/pokemon/butterfree/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_ButterfreeGigantamax[] = INCBIN_U32("graphics/pokemon/butterfree/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_ButterfreeGigantamax[] = INCBIN_U32("graphics/pokemon/butterfree/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_ButterfreeGigantamax[] = INCBIN_U32("graphics/pokemon/butterfree/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_ButterfreeGigantamax[] = INCBIN_U8("graphics/pokemon/butterfree/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CATERPIE + +#if P_FAMILY_WEEDLE + const u32 gMonFrontPic_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/anim_front.4bpp.lz"); + const u32 gMonPalette_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/normal.gbapal.lz"); + const u32 gMonBackPic_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/back.4bpp.lz"); + const u32 gMonShinyPalette_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/shiny.gbapal.lz"); + const u8 gMonIcon_Weedle[] = INCBIN_U8("graphics/pokemon/weedle/icon.4bpp"); + const u8 gMonFootprint_Weedle[] = INCBIN_U8("graphics/pokemon/weedle/footprint.1bpp"); + + const u32 gMonFrontPic_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/anim_front.4bpp.lz"); + const u32 gMonPalette_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/normal.gbapal.lz"); + const u32 gMonBackPic_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/back.4bpp.lz"); + const u32 gMonShinyPalette_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/shiny.gbapal.lz"); + const u8 gMonIcon_Kakuna[] = INCBIN_U8("graphics/pokemon/kakuna/icon.4bpp"); + const u8 gMonFootprint_Kakuna[] = INCBIN_U8("graphics/pokemon/kakuna/footprint.1bpp"); + + const u32 gMonFrontPic_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/anim_front.4bpp.lz"); + const u32 gMonPalette_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/normal.gbapal.lz"); + const u32 gMonBackPic_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/back.4bpp.lz"); + const u32 gMonShinyPalette_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/shiny.gbapal.lz"); + const u8 gMonIcon_Beedrill[] = INCBIN_U8("graphics/pokemon/beedrill/icon.4bpp"); + const u8 gMonFootprint_Beedrill[] = INCBIN_U8("graphics/pokemon/beedrill/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_BeedrillMega[] = INCBIN_U32("graphics/pokemon/beedrill/mega/front.4bpp.lz"); + const u32 gMonPalette_BeedrillMega[] = INCBIN_U32("graphics/pokemon/beedrill/mega/normal.gbapal.lz"); + const u32 gMonBackPic_BeedrillMega[] = INCBIN_U32("graphics/pokemon/beedrill/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_BeedrillMega[] = INCBIN_U32("graphics/pokemon/beedrill/mega/shiny.gbapal.lz"); + const u8 gMonIcon_BeedrillMega[] = INCBIN_U8("graphics/pokemon/beedrill/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_WEEDLE + +#if P_FAMILY_PIDGEY + const u32 gMonFrontPic_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/anim_front.4bpp.lz"); + const u32 gMonPalette_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/normal.gbapal.lz"); + const u32 gMonBackPic_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/back.4bpp.lz"); + const u32 gMonShinyPalette_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/shiny.gbapal.lz"); + const u8 gMonIcon_Pidgey[] = INCBIN_U8("graphics/pokemon/pidgey/icon.4bpp"); + const u8 gMonFootprint_Pidgey[] = INCBIN_U8("graphics/pokemon/pidgey/footprint.1bpp"); + + const u32 gMonFrontPic_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/anim_front.4bpp.lz"); + const u32 gMonPalette_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/normal.gbapal.lz"); + const u32 gMonBackPic_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/back.4bpp.lz"); + const u32 gMonShinyPalette_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/shiny.gbapal.lz"); + const u8 gMonIcon_Pidgeotto[] = INCBIN_U8("graphics/pokemon/pidgeotto/icon.4bpp"); + const u8 gMonFootprint_Pidgeotto[] = INCBIN_U8("graphics/pokemon/pidgeotto/footprint.1bpp"); + + const u32 gMonFrontPic_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/anim_front.4bpp.lz"); + const u32 gMonPalette_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/normal.gbapal.lz"); + const u32 gMonBackPic_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/back.4bpp.lz"); + const u32 gMonShinyPalette_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/shiny.gbapal.lz"); + const u8 gMonIcon_Pidgeot[] = INCBIN_U8("graphics/pokemon/pidgeot/icon.4bpp"); + const u8 gMonFootprint_Pidgeot[] = INCBIN_U8("graphics/pokemon/pidgeot/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_PidgeotMega[] = INCBIN_U32("graphics/pokemon/pidgeot/mega/front.4bpp.lz"); + const u32 gMonPalette_PidgeotMega[] = INCBIN_U32("graphics/pokemon/pidgeot/mega/normal.gbapal.lz"); + const u32 gMonBackPic_PidgeotMega[] = INCBIN_U32("graphics/pokemon/pidgeot/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_PidgeotMega[] = INCBIN_U32("graphics/pokemon/pidgeot/mega/shiny.gbapal.lz"); + const u8 gMonIcon_PidgeotMega[] = INCBIN_U8("graphics/pokemon/pidgeot/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_PIDGEY + +#if P_FAMILY_RATTATA + const u32 gMonFrontPic_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/anim_front.4bpp.lz"); + const u32 gMonPalette_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/normal.gbapal.lz"); + const u32 gMonBackPic_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/back.4bpp.lz"); + const u32 gMonShinyPalette_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/shiny.gbapal.lz"); + const u8 gMonIcon_Rattata[] = INCBIN_U8("graphics/pokemon/rattata/icon.4bpp"); + const u8 gMonFootprint_Rattata[] = INCBIN_U8("graphics/pokemon/rattata/footprint.1bpp"); + + const u32 gMonFrontPic_RattataF[] = INCBIN_U32("graphics/pokemon/rattata/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_RattataF[] = INCBIN_U32("graphics/pokemon/rattata/backf.4bpp.lz"); + + const u32 gMonFrontPic_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/anim_front.4bpp.lz"); + const u32 gMonPalette_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/normal.gbapal.lz"); + const u32 gMonBackPic_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/back.4bpp.lz"); + const u32 gMonShinyPalette_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/shiny.gbapal.lz"); + const u8 gMonIcon_Raticate[] = INCBIN_U8("graphics/pokemon/raticate/icon.4bpp"); + const u8 gMonFootprint_Raticate[] = INCBIN_U8("graphics/pokemon/raticate/footprint.1bpp"); + + const u32 gMonFrontPic_RaticateF[] = INCBIN_U32("graphics/pokemon/raticate/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_RaticateF[] = INCBIN_U32("graphics/pokemon/raticate/backf.4bpp.lz"); + +#if P_ALOLAN_FORMS + const u32 gMonFrontPic_RattataAlolan[] = INCBIN_U32("graphics/pokemon/rattata/alolan/front.4bpp.lz"); + const u32 gMonPalette_RattataAlolan[] = INCBIN_U32("graphics/pokemon/rattata/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_RattataAlolan[] = INCBIN_U32("graphics/pokemon/rattata/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_RattataAlolan[] = INCBIN_U32("graphics/pokemon/rattata/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_RattataAlolan[] = INCBIN_U8("graphics/pokemon/rattata/alolan/icon.4bpp"); + + const u32 gMonFrontPic_RaticateAlolan[] = INCBIN_U32("graphics/pokemon/raticate/alolan/front.4bpp.lz"); + const u32 gMonPalette_RaticateAlolan[] = INCBIN_U32("graphics/pokemon/raticate/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_RaticateAlolan[] = INCBIN_U32("graphics/pokemon/raticate/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_RaticateAlolan[] = INCBIN_U32("graphics/pokemon/raticate/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_RaticateAlolan[] = INCBIN_U8("graphics/pokemon/raticate/alolan/icon.4bpp"); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_RATTATA + +#if P_FAMILY_SPEAROW + const u32 gMonFrontPic_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/anim_front.4bpp.lz"); + const u32 gMonPalette_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/normal.gbapal.lz"); + const u32 gMonBackPic_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/back.4bpp.lz"); + const u32 gMonShinyPalette_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/shiny.gbapal.lz"); + const u8 gMonIcon_Spearow[] = INCBIN_U8("graphics/pokemon/spearow/icon.4bpp"); + const u8 gMonFootprint_Spearow[] = INCBIN_U8("graphics/pokemon/spearow/footprint.1bpp"); + + const u32 gMonFrontPic_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/anim_front.4bpp.lz"); + const u32 gMonPalette_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/normal.gbapal.lz"); + const u32 gMonBackPic_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/back.4bpp.lz"); + const u32 gMonShinyPalette_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/shiny.gbapal.lz"); + const u8 gMonIcon_Fearow[] = INCBIN_U8("graphics/pokemon/fearow/icon.4bpp"); + const u8 gMonFootprint_Fearow[] = INCBIN_U8("graphics/pokemon/fearow/footprint.1bpp"); +#endif //P_FAMILY_SPEAROW + +#if P_FAMILY_EKANS + const u32 gMonFrontPic_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/anim_front.4bpp.lz"); + const u32 gMonPalette_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/normal.gbapal.lz"); + const u32 gMonBackPic_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/back.4bpp.lz"); + const u32 gMonShinyPalette_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/shiny.gbapal.lz"); + const u8 gMonIcon_Ekans[] = INCBIN_U8("graphics/pokemon/ekans/icon.4bpp"); + const u8 gMonFootprint_Ekans[] = INCBIN_U8("graphics/pokemon/ekans/footprint.1bpp"); + + const u32 gMonFrontPic_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/anim_front.4bpp.lz"); + const u32 gMonPalette_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/normal.gbapal.lz"); + const u32 gMonBackPic_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/back.4bpp.lz"); + const u32 gMonShinyPalette_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/shiny.gbapal.lz"); + const u8 gMonIcon_Arbok[] = INCBIN_U8("graphics/pokemon/arbok/icon.4bpp"); + const u8 gMonFootprint_Arbok[] = INCBIN_U8("graphics/pokemon/arbok/footprint.1bpp"); +#endif //P_FAMILY_EKANS + +#if P_FAMILY_PIKACHU +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/anim_front.4bpp.lz"); + const u32 gMonPalette_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/normal.gbapal.lz"); + const u32 gMonBackPic_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/back.4bpp.lz"); + const u32 gMonShinyPalette_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/shiny.gbapal.lz"); + const u8 gMonIcon_Pichu[] = INCBIN_U8("graphics/pokemon/pichu/icon.4bpp"); + const u8 gMonFootprint_Pichu[] = INCBIN_U8("graphics/pokemon/pichu/footprint.1bpp"); + + const u32 gMonFrontPic_PichuSpikyEared[] = INCBIN_U32("graphics/pokemon/pichu/spiky_eared/anim_front.4bpp.lz"); + const u32 gMonPalette_PichuSpikyEared[] = INCBIN_U32("graphics/pokemon/pichu/spiky_eared/normal.gbapal.lz"); + const u32 gMonBackPic_PichuSpikyEared[] = INCBIN_U32("graphics/pokemon/pichu/spiky_eared/back.4bpp.lz"); + const u32 gMonShinyPalette_PichuSpikyEared[] = INCBIN_U32("graphics/pokemon/pichu/spiky_eared/shiny.gbapal.lz"); + const u8 gMonIcon_PichuSpikyEared[] = INCBIN_U8("graphics/pokemon/pichu/spiky_eared/icon.4bpp"); +#endif //P_GEN_2_CROSS_EVOS + + const u32 gMonFrontPic_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/anim_front.4bpp.lz"); + const u32 gMonPalette_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/normal.gbapal.lz"); + const u32 gMonBackPic_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/back.4bpp.lz"); + const u32 gMonShinyPalette_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/shiny.gbapal.lz"); + const u8 gMonIcon_Pikachu[] = INCBIN_U8("graphics/pokemon/pikachu/icon.4bpp"); + const u8 gMonFootprint_Pikachu[] = INCBIN_U8("graphics/pokemon/pikachu/footprint.1bpp"); + + const u32 gMonFrontPic_PikachuF[] = INCBIN_U32("graphics/pokemon/pikachu/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_PikachuF[] = INCBIN_U32("graphics/pokemon/pikachu/backf.4bpp.lz"); +#if P_CUSTOM_GENDER_DIFF_ICONS + const u8 gMonIcon_PikachuF[] = INCBIN_U8("graphics/pokemon/pikachu/iconf.4bpp"); #endif -#if P_GEN_5_POKEMON == TRUE -const u8 gMonFootprint_Victini[] = INCBIN_U8("graphics/pokemon/victini/footprint.1bpp"); -const u8 gMonFootprint_Snivy[] = INCBIN_U8("graphics/pokemon/snivy/footprint.1bpp"); -const u8 gMonFootprint_Servine[] = INCBIN_U8("graphics/pokemon/servine/footprint.1bpp"); -const u8 gMonFootprint_Serperior[] = INCBIN_U8("graphics/pokemon/serperior/footprint.1bpp"); -const u8 gMonFootprint_Tepig[] = INCBIN_U8("graphics/pokemon/tepig/footprint.1bpp"); -const u8 gMonFootprint_Pignite[] = INCBIN_U8("graphics/pokemon/pignite/footprint.1bpp"); -const u8 gMonFootprint_Emboar[] = INCBIN_U8("graphics/pokemon/emboar/footprint.1bpp"); -const u8 gMonFootprint_Oshawott[] = INCBIN_U8("graphics/pokemon/oshawott/footprint.1bpp"); -const u8 gMonFootprint_Dewott[] = INCBIN_U8("graphics/pokemon/dewott/footprint.1bpp"); -const u8 gMonFootprint_Samurott[] = INCBIN_U8("graphics/pokemon/samurott/footprint.1bpp"); -const u8 gMonFootprint_Patrat[] = INCBIN_U8("graphics/pokemon/patrat/footprint.1bpp"); -const u8 gMonFootprint_Watchog[] = INCBIN_U8("graphics/pokemon/watchog/footprint.1bpp"); -const u8 gMonFootprint_Lillipup[] = INCBIN_U8("graphics/pokemon/lillipup/footprint.1bpp"); -const u8 gMonFootprint_Herdier[] = INCBIN_U8("graphics/pokemon/herdier/footprint.1bpp"); -const u8 gMonFootprint_Stoutland[] = INCBIN_U8("graphics/pokemon/stoutland/footprint.1bpp"); -const u8 gMonFootprint_Purrloin[] = INCBIN_U8("graphics/pokemon/purrloin/footprint.1bpp"); -const u8 gMonFootprint_Liepard[] = INCBIN_U8("graphics/pokemon/liepard/footprint.1bpp"); -const u8 gMonFootprint_Pansage[] = INCBIN_U8("graphics/pokemon/pansage/footprint.1bpp"); -const u8 gMonFootprint_Simisage[] = INCBIN_U8("graphics/pokemon/simisage/footprint.1bpp"); -const u8 gMonFootprint_Pansear[] = INCBIN_U8("graphics/pokemon/pansear/footprint.1bpp"); -const u8 gMonFootprint_Simisear[] = INCBIN_U8("graphics/pokemon/simisear/footprint.1bpp"); -const u8 gMonFootprint_Panpour[] = INCBIN_U8("graphics/pokemon/panpour/footprint.1bpp"); -const u8 gMonFootprint_Simipour[] = INCBIN_U8("graphics/pokemon/simipour/footprint.1bpp"); -const u8 gMonFootprint_Munna[] = INCBIN_U8("graphics/pokemon/munna/footprint.1bpp"); -const u8 gMonFootprint_Musharna[] = INCBIN_U8("graphics/pokemon/musharna/footprint.1bpp"); -const u8 gMonFootprint_Pidove[] = INCBIN_U8("graphics/pokemon/pidove/footprint.1bpp"); -const u8 gMonFootprint_Tranquill[] = INCBIN_U8("graphics/pokemon/tranquill/footprint.1bpp"); -const u8 gMonFootprint_Unfezant[] = INCBIN_U8("graphics/pokemon/unfezant/footprint.1bpp"); -const u8 gMonFootprint_Blitzle[] = INCBIN_U8("graphics/pokemon/blitzle/footprint.1bpp"); -const u8 gMonFootprint_Zebstrika[] = INCBIN_U8("graphics/pokemon/zebstrika/footprint.1bpp"); -const u8 gMonFootprint_Roggenrola[] = INCBIN_U8("graphics/pokemon/roggenrola/footprint.1bpp"); -const u8 gMonFootprint_Boldore[] = INCBIN_U8("graphics/pokemon/boldore/footprint.1bpp"); -const u8 gMonFootprint_Gigalith[] = INCBIN_U8("graphics/pokemon/gigalith/footprint.1bpp"); -const u8 gMonFootprint_Woobat[] = INCBIN_U8("graphics/pokemon/woobat/footprint.1bpp"); -const u8 gMonFootprint_Swoobat[] = INCBIN_U8("graphics/pokemon/swoobat/footprint.1bpp"); -const u8 gMonFootprint_Drilbur[] = INCBIN_U8("graphics/pokemon/drilbur/footprint.1bpp"); -const u8 gMonFootprint_Excadrill[] = INCBIN_U8("graphics/pokemon/excadrill/footprint.1bpp"); -const u8 gMonFootprint_Audino[] = INCBIN_U8("graphics/pokemon/audino/footprint.1bpp"); -const u8 gMonFootprint_Timburr[] = INCBIN_U8("graphics/pokemon/timburr/footprint.1bpp"); -const u8 gMonFootprint_Gurdurr[] = INCBIN_U8("graphics/pokemon/gurdurr/footprint.1bpp"); -const u8 gMonFootprint_Conkeldurr[] = INCBIN_U8("graphics/pokemon/conkeldurr/footprint.1bpp"); -const u8 gMonFootprint_Tympole[] = INCBIN_U8("graphics/pokemon/tympole/footprint.1bpp"); -const u8 gMonFootprint_Palpitoad[] = INCBIN_U8("graphics/pokemon/palpitoad/footprint.1bpp"); -const u8 gMonFootprint_Seismitoad[] = INCBIN_U8("graphics/pokemon/seismitoad/footprint.1bpp"); -const u8 gMonFootprint_Throh[] = INCBIN_U8("graphics/pokemon/throh/footprint.1bpp"); -const u8 gMonFootprint_Sawk[] = INCBIN_U8("graphics/pokemon/sawk/footprint.1bpp"); -const u8 gMonFootprint_Sewaddle[] = INCBIN_U8("graphics/pokemon/sewaddle/footprint.1bpp"); -const u8 gMonFootprint_Swadloon[] = INCBIN_U8("graphics/pokemon/swadloon/footprint.1bpp"); -const u8 gMonFootprint_Leavanny[] = INCBIN_U8("graphics/pokemon/leavanny/footprint.1bpp"); -const u8 gMonFootprint_Venipede[] = INCBIN_U8("graphics/pokemon/venipede/footprint.1bpp"); -const u8 gMonFootprint_Whirlipede[] = INCBIN_U8("graphics/pokemon/whirlipede/footprint.1bpp"); -const u8 gMonFootprint_Scolipede[] = INCBIN_U8("graphics/pokemon/scolipede/footprint.1bpp"); -const u8 gMonFootprint_Cottonee[] = INCBIN_U8("graphics/pokemon/cottonee/footprint.1bpp"); -const u8 gMonFootprint_Whimsicott[] = INCBIN_U8("graphics/pokemon/whimsicott/footprint.1bpp"); -const u8 gMonFootprint_Petilil[] = INCBIN_U8("graphics/pokemon/petilil/footprint.1bpp"); -const u8 gMonFootprint_Lilligant[] = INCBIN_U8("graphics/pokemon/lilligant/footprint.1bpp"); -const u8 gMonFootprint_Basculin[] = INCBIN_U8("graphics/pokemon/basculin/footprint.1bpp"); -const u8 gMonFootprint_Sandile[] = INCBIN_U8("graphics/pokemon/sandile/footprint.1bpp"); -const u8 gMonFootprint_Krokorok[] = INCBIN_U8("graphics/pokemon/krokorok/footprint.1bpp"); -const u8 gMonFootprint_Krookodile[] = INCBIN_U8("graphics/pokemon/krookodile/footprint.1bpp"); -const u8 gMonFootprint_Darumaka[] = INCBIN_U8("graphics/pokemon/darumaka/footprint.1bpp"); -const u8 gMonFootprint_Darmanitan[] = INCBIN_U8("graphics/pokemon/darmanitan/footprint.1bpp"); -const u8 gMonFootprint_Maractus[] = INCBIN_U8("graphics/pokemon/maractus/footprint.1bpp"); -const u8 gMonFootprint_Dwebble[] = INCBIN_U8("graphics/pokemon/dwebble/footprint.1bpp"); -const u8 gMonFootprint_Crustle[] = INCBIN_U8("graphics/pokemon/crustle/footprint.1bpp"); -const u8 gMonFootprint_Scraggy[] = INCBIN_U8("graphics/pokemon/scraggy/footprint.1bpp"); -const u8 gMonFootprint_Scrafty[] = INCBIN_U8("graphics/pokemon/scrafty/footprint.1bpp"); -const u8 gMonFootprint_Sigilyph[] = INCBIN_U8("graphics/pokemon/sigilyph/footprint.1bpp"); -const u8 gMonFootprint_Yamask[] = INCBIN_U8("graphics/pokemon/yamask/footprint.1bpp"); -const u8 gMonFootprint_Cofagrigus[] = INCBIN_U8("graphics/pokemon/cofagrigus/footprint.1bpp"); -const u8 gMonFootprint_Tirtouga[] = INCBIN_U8("graphics/pokemon/tirtouga/footprint.1bpp"); -const u8 gMonFootprint_Carracosta[] = INCBIN_U8("graphics/pokemon/carracosta/footprint.1bpp"); -const u8 gMonFootprint_Archen[] = INCBIN_U8("graphics/pokemon/archen/footprint.1bpp"); -const u8 gMonFootprint_Archeops[] = INCBIN_U8("graphics/pokemon/archeops/footprint.1bpp"); -const u8 gMonFootprint_Trubbish[] = INCBIN_U8("graphics/pokemon/trubbish/footprint.1bpp"); -const u8 gMonFootprint_Garbodor[] = INCBIN_U8("graphics/pokemon/garbodor/footprint.1bpp"); -const u8 gMonFootprint_Zorua[] = INCBIN_U8("graphics/pokemon/zorua/footprint.1bpp"); -const u8 gMonFootprint_Zoroark[] = INCBIN_U8("graphics/pokemon/zoroark/footprint.1bpp"); -const u8 gMonFootprint_Minccino[] = INCBIN_U8("graphics/pokemon/minccino/footprint.1bpp"); -const u8 gMonFootprint_Cinccino[] = INCBIN_U8("graphics/pokemon/cinccino/footprint.1bpp"); -const u8 gMonFootprint_Gothita[] = INCBIN_U8("graphics/pokemon/gothita/footprint.1bpp"); -const u8 gMonFootprint_Gothorita[] = INCBIN_U8("graphics/pokemon/gothorita/footprint.1bpp"); -const u8 gMonFootprint_Gothitelle[] = INCBIN_U8("graphics/pokemon/gothitelle/footprint.1bpp"); -const u8 gMonFootprint_Solosis[] = INCBIN_U8("graphics/pokemon/solosis/footprint.1bpp"); -const u8 gMonFootprint_Duosion[] = INCBIN_U8("graphics/pokemon/duosion/footprint.1bpp"); -const u8 gMonFootprint_Reuniclus[] = INCBIN_U8("graphics/pokemon/reuniclus/footprint.1bpp"); -const u8 gMonFootprint_Ducklett[] = INCBIN_U8("graphics/pokemon/ducklett/footprint.1bpp"); -const u8 gMonFootprint_Swanna[] = INCBIN_U8("graphics/pokemon/swanna/footprint.1bpp"); -const u8 gMonFootprint_Vanillite[] = INCBIN_U8("graphics/pokemon/vanillite/footprint.1bpp"); -const u8 gMonFootprint_Vanillish[] = INCBIN_U8("graphics/pokemon/vanillish/footprint.1bpp"); -const u8 gMonFootprint_Vanilluxe[] = INCBIN_U8("graphics/pokemon/vanilluxe/footprint.1bpp"); -const u8 gMonFootprint_Deerling[] = INCBIN_U8("graphics/pokemon/deerling/footprint.1bpp"); -const u8 gMonFootprint_Sawsbuck[] = INCBIN_U8("graphics/pokemon/sawsbuck/footprint.1bpp"); -const u8 gMonFootprint_Emolga[] = INCBIN_U8("graphics/pokemon/emolga/footprint.1bpp"); -const u8 gMonFootprint_Karrablast[] = INCBIN_U8("graphics/pokemon/karrablast/footprint.1bpp"); -const u8 gMonFootprint_Escavalier[] = INCBIN_U8("graphics/pokemon/escavalier/footprint.1bpp"); -const u8 gMonFootprint_Foongus[] = INCBIN_U8("graphics/pokemon/foongus/footprint.1bpp"); -const u8 gMonFootprint_Amoonguss[] = INCBIN_U8("graphics/pokemon/amoonguss/footprint.1bpp"); -const u8 gMonFootprint_Frillish[] = INCBIN_U8("graphics/pokemon/frillish/footprint.1bpp"); -const u8 gMonFootprint_Jellicent[] = INCBIN_U8("graphics/pokemon/jellicent/footprint.1bpp"); -const u8 gMonFootprint_Alomomola[] = INCBIN_U8("graphics/pokemon/alomomola/footprint.1bpp"); -const u8 gMonFootprint_Joltik[] = INCBIN_U8("graphics/pokemon/joltik/footprint.1bpp"); -const u8 gMonFootprint_Galvantula[] = INCBIN_U8("graphics/pokemon/galvantula/footprint.1bpp"); -const u8 gMonFootprint_Ferroseed[] = INCBIN_U8("graphics/pokemon/ferroseed/footprint.1bpp"); -const u8 gMonFootprint_Ferrothorn[] = INCBIN_U8("graphics/pokemon/ferrothorn/footprint.1bpp"); -const u8 gMonFootprint_Klink[] = INCBIN_U8("graphics/pokemon/klink/footprint.1bpp"); -const u8 gMonFootprint_Klang[] = INCBIN_U8("graphics/pokemon/klang/footprint.1bpp"); -const u8 gMonFootprint_Klinklang[] = INCBIN_U8("graphics/pokemon/klinklang/footprint.1bpp"); -const u8 gMonFootprint_Tynamo[] = INCBIN_U8("graphics/pokemon/tynamo/footprint.1bpp"); -const u8 gMonFootprint_Eelektrik[] = INCBIN_U8("graphics/pokemon/eelektrik/footprint.1bpp"); -const u8 gMonFootprint_Eelektross[] = INCBIN_U8("graphics/pokemon/eelektross/footprint.1bpp"); -const u8 gMonFootprint_Elgyem[] = INCBIN_U8("graphics/pokemon/elgyem/footprint.1bpp"); -const u8 gMonFootprint_Beheeyem[] = INCBIN_U8("graphics/pokemon/beheeyem/footprint.1bpp"); -const u8 gMonFootprint_Litwick[] = INCBIN_U8("graphics/pokemon/litwick/footprint.1bpp"); -const u8 gMonFootprint_Lampent[] = INCBIN_U8("graphics/pokemon/lampent/footprint.1bpp"); -const u8 gMonFootprint_Chandelure[] = INCBIN_U8("graphics/pokemon/chandelure/footprint.1bpp"); -const u8 gMonFootprint_Axew[] = INCBIN_U8("graphics/pokemon/axew/footprint.1bpp"); -const u8 gMonFootprint_Fraxure[] = INCBIN_U8("graphics/pokemon/fraxure/footprint.1bpp"); -const u8 gMonFootprint_Haxorus[] = INCBIN_U8("graphics/pokemon/haxorus/footprint.1bpp"); -const u8 gMonFootprint_Cubchoo[] = INCBIN_U8("graphics/pokemon/cubchoo/footprint.1bpp"); -const u8 gMonFootprint_Beartic[] = INCBIN_U8("graphics/pokemon/beartic/footprint.1bpp"); -const u8 gMonFootprint_Cryogonal[] = INCBIN_U8("graphics/pokemon/cryogonal/footprint.1bpp"); -const u8 gMonFootprint_Shelmet[] = INCBIN_U8("graphics/pokemon/shelmet/footprint.1bpp"); -const u8 gMonFootprint_Accelgor[] = INCBIN_U8("graphics/pokemon/accelgor/footprint.1bpp"); -const u8 gMonFootprint_Stunfisk[] = INCBIN_U8("graphics/pokemon/stunfisk/footprint.1bpp"); -const u8 gMonFootprint_Mienfoo[] = INCBIN_U8("graphics/pokemon/mienfoo/footprint.1bpp"); -const u8 gMonFootprint_Mienshao[] = INCBIN_U8("graphics/pokemon/mienshao/footprint.1bpp"); -const u8 gMonFootprint_Druddigon[] = INCBIN_U8("graphics/pokemon/druddigon/footprint.1bpp"); -const u8 gMonFootprint_Golett[] = INCBIN_U8("graphics/pokemon/golett/footprint.1bpp"); -const u8 gMonFootprint_Golurk[] = INCBIN_U8("graphics/pokemon/golurk/footprint.1bpp"); -const u8 gMonFootprint_Pawniard[] = INCBIN_U8("graphics/pokemon/pawniard/footprint.1bpp"); -const u8 gMonFootprint_Bisharp[] = INCBIN_U8("graphics/pokemon/bisharp/footprint.1bpp"); -const u8 gMonFootprint_Bouffalant[] = INCBIN_U8("graphics/pokemon/bouffalant/footprint.1bpp"); -const u8 gMonFootprint_Rufflet[] = INCBIN_U8("graphics/pokemon/rufflet/footprint.1bpp"); -const u8 gMonFootprint_Braviary[] = INCBIN_U8("graphics/pokemon/braviary/footprint.1bpp"); -const u8 gMonFootprint_Vullaby[] = INCBIN_U8("graphics/pokemon/vullaby/footprint.1bpp"); -const u8 gMonFootprint_Mandibuzz[] = INCBIN_U8("graphics/pokemon/mandibuzz/footprint.1bpp"); -const u8 gMonFootprint_Heatmor[] = INCBIN_U8("graphics/pokemon/heatmor/footprint.1bpp"); -const u8 gMonFootprint_Durant[] = INCBIN_U8("graphics/pokemon/durant/footprint.1bpp"); -const u8 gMonFootprint_Deino[] = INCBIN_U8("graphics/pokemon/deino/footprint.1bpp"); -const u8 gMonFootprint_Zweilous[] = INCBIN_U8("graphics/pokemon/zweilous/footprint.1bpp"); -const u8 gMonFootprint_Hydreigon[] = INCBIN_U8("graphics/pokemon/hydreigon/footprint.1bpp"); -const u8 gMonFootprint_Larvesta[] = INCBIN_U8("graphics/pokemon/larvesta/footprint.1bpp"); -const u8 gMonFootprint_Volcarona[] = INCBIN_U8("graphics/pokemon/volcarona/footprint.1bpp"); -const u8 gMonFootprint_Cobalion[] = INCBIN_U8("graphics/pokemon/cobalion/footprint.1bpp"); -const u8 gMonFootprint_Terrakion[] = INCBIN_U8("graphics/pokemon/terrakion/footprint.1bpp"); -const u8 gMonFootprint_Virizion[] = INCBIN_U8("graphics/pokemon/virizion/footprint.1bpp"); -const u8 gMonFootprint_Tornadus[] = INCBIN_U8("graphics/pokemon/tornadus/footprint.1bpp"); -const u8 gMonFootprint_Thundurus[] = INCBIN_U8("graphics/pokemon/thundurus/footprint.1bpp"); -const u8 gMonFootprint_Reshiram[] = INCBIN_U8("graphics/pokemon/reshiram/footprint.1bpp"); -const u8 gMonFootprint_Zekrom[] = INCBIN_U8("graphics/pokemon/zekrom/footprint.1bpp"); -const u8 gMonFootprint_Landorus[] = INCBIN_U8("graphics/pokemon/landorus/footprint.1bpp"); -const u8 gMonFootprint_Kyurem[] = INCBIN_U8("graphics/pokemon/kyurem/footprint.1bpp"); -const u8 gMonFootprint_Keldeo[] = INCBIN_U8("graphics/pokemon/keldeo/footprint.1bpp"); -const u8 gMonFootprint_Meloetta[] = INCBIN_U8("graphics/pokemon/meloetta/footprint.1bpp"); -const u8 gMonFootprint_Genesect[] = INCBIN_U8("graphics/pokemon/genesect/footprint.1bpp"); + +#if P_COSPLAY_PIKACHU_FORMS + const u32 gMonFrontPic_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/front.4bpp.lz"); + const u32 gMonPalette_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/normal.gbapal.lz"); + const u32 gMonBackPic_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/back.4bpp.lz"); + const u32 gMonShinyPalette_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/shiny.gbapal.lz"); + const u8 gMonIcon_PikachuCosplay[] = INCBIN_U8("graphics/pokemon/pikachu/cosplay/icon.4bpp"); + + const u32 gMonFrontPic_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/front.4bpp.lz"); + const u32 gMonPalette_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/normal.gbapal.lz"); + const u32 gMonBackPic_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/back.4bpp.lz"); + const u32 gMonShinyPalette_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/shiny.gbapal.lz"); + const u8 gMonIcon_PikachuRockStar[] = INCBIN_U8("graphics/pokemon/pikachu/rock_star/icon.4bpp"); + + const u32 gMonFrontPic_PikachuBelle[] = INCBIN_U32("graphics/pokemon/pikachu/belle/front.4bpp.lz"); + const u32 gMonPalette_PikachuBelle[] = INCBIN_U32("graphics/pokemon/pikachu/belle/normal.gbapal.lz"); + const u32 gMonBackPic_PikachuBelle[] = INCBIN_U32("graphics/pokemon/pikachu/belle/back.4bpp.lz"); + const u32 gMonShinyPalette_PikachuBelle[] = INCBIN_U32("graphics/pokemon/pikachu/belle/shiny.gbapal.lz"); + const u8 gMonIcon_PikachuBelle[] = INCBIN_U8("graphics/pokemon/pikachu/belle/icon.4bpp"); + + const u32 gMonFrontPic_PikachuPopStar[] = INCBIN_U32("graphics/pokemon/pikachu/pop_star/front.4bpp.lz"); + const u32 gMonPalette_PikachuPopStar[] = INCBIN_U32("graphics/pokemon/pikachu/pop_star/normal.gbapal.lz"); + const u32 gMonBackPic_PikachuPopStar[] = INCBIN_U32("graphics/pokemon/pikachu/pop_star/back.4bpp.lz"); + const u32 gMonShinyPalette_PikachuPopStar[] = INCBIN_U32("graphics/pokemon/pikachu/pop_star/shiny.gbapal.lz"); + const u8 gMonIcon_PikachuPopStar[] = INCBIN_U8("graphics/pokemon/pikachu/pop_star/icon.4bpp"); + + const u32 gMonFrontPic_PikachuPhD[] = INCBIN_U32("graphics/pokemon/pikachu/ph_d/front.4bpp.lz"); + const u32 gMonPalette_PikachuPhD[] = INCBIN_U32("graphics/pokemon/pikachu/ph_d/normal.gbapal.lz"); + const u32 gMonBackPic_PikachuPhD[] = INCBIN_U32("graphics/pokemon/pikachu/ph_d/back.4bpp.lz"); + const u32 gMonShinyPalette_PikachuPhD[] = INCBIN_U32("graphics/pokemon/pikachu/ph_d/shiny.gbapal.lz"); + const u8 gMonIcon_PikachuPhD[] = INCBIN_U8("graphics/pokemon/pikachu/ph_d/icon.4bpp"); + + const u32 gMonFrontPic_PikachuLibre[] = INCBIN_U32("graphics/pokemon/pikachu/libre/front.4bpp.lz"); + const u32 gMonPalette_PikachuLibre[] = INCBIN_U32("graphics/pokemon/pikachu/libre/normal.gbapal.lz"); + const u32 gMonBackPic_PikachuLibre[] = INCBIN_U32("graphics/pokemon/pikachu/libre/back.4bpp.lz"); + const u32 gMonShinyPalette_PikachuLibre[] = INCBIN_U32("graphics/pokemon/pikachu/libre/shiny.gbapal.lz"); + const u8 gMonIcon_PikachuLibre[] = INCBIN_U8("graphics/pokemon/pikachu/libre/icon.4bpp"); +#endif //P_COSPLAY_PIKACHU_FORMS + +#if P_CAP_PIKACHU_FORMS + const u32 gMonFrontPic_PikachuOriginalCap[] = INCBIN_U32("graphics/pokemon/pikachu/original_cap/front.4bpp.lz"); + const u32 gMonPalette_PikachuOriginalCap[] = INCBIN_U32("graphics/pokemon/pikachu/original_cap/normal.gbapal.lz"); + const u32 gMonBackPic_PikachuOriginalCap[] = INCBIN_U32("graphics/pokemon/pikachu/original_cap/back.4bpp.lz"); + const u32 gMonShinyPalette_PikachuOriginalCap[] = INCBIN_U32("graphics/pokemon/pikachu/original_cap/shiny.gbapal.lz"); + const u8 gMonIcon_PikachuOriginalCap[] = INCBIN_U8("graphics/pokemon/pikachu/original_cap/icon.4bpp"); + + const u32 gMonFrontPic_PikachuHoennCap[] = INCBIN_U32("graphics/pokemon/pikachu/hoenn_cap/front.4bpp.lz"); + const u32 gMonPalette_PikachuHoennCap[] = INCBIN_U32("graphics/pokemon/pikachu/hoenn_cap/normal.gbapal.lz"); + const u32 gMonBackPic_PikachuHoennCap[] = INCBIN_U32("graphics/pokemon/pikachu/hoenn_cap/back.4bpp.lz"); + const u32 gMonShinyPalette_PikachuHoennCap[] = INCBIN_U32("graphics/pokemon/pikachu/hoenn_cap/shiny.gbapal.lz"); + const u8 gMonIcon_PikachuHoennCap[] = INCBIN_U8("graphics/pokemon/pikachu/hoenn_cap/icon.4bpp"); + + const u32 gMonFrontPic_PikachuSinnohCap[] = INCBIN_U32("graphics/pokemon/pikachu/sinnoh_cap/front.4bpp.lz"); + const u32 gMonPalette_PikachuSinnohCap[] = INCBIN_U32("graphics/pokemon/pikachu/sinnoh_cap/normal.gbapal.lz"); + const u32 gMonBackPic_PikachuSinnohCap[] = INCBIN_U32("graphics/pokemon/pikachu/sinnoh_cap/back.4bpp.lz"); + const u32 gMonShinyPalette_PikachuSinnohCap[] = INCBIN_U32("graphics/pokemon/pikachu/sinnoh_cap/shiny.gbapal.lz"); + const u8 gMonIcon_PikachuSinnohCap[] = INCBIN_U8("graphics/pokemon/pikachu/sinnoh_cap/icon.4bpp"); + + const u32 gMonFrontPic_PikachuUnovaCap[] = INCBIN_U32("graphics/pokemon/pikachu/unova_cap/front.4bpp.lz"); + const u32 gMonPalette_PikachuUnovaCap[] = INCBIN_U32("graphics/pokemon/pikachu/unova_cap/normal.gbapal.lz"); + const u32 gMonBackPic_PikachuUnovaCap[] = INCBIN_U32("graphics/pokemon/pikachu/unova_cap/back.4bpp.lz"); + const u32 gMonShinyPalette_PikachuUnovaCap[] = INCBIN_U32("graphics/pokemon/pikachu/unova_cap/shiny.gbapal.lz"); + const u8 gMonIcon_PikachuUnovaCap[] = INCBIN_U8("graphics/pokemon/pikachu/unova_cap/icon.4bpp"); + + const u32 gMonFrontPic_PikachuKalosCap[] = INCBIN_U32("graphics/pokemon/pikachu/kalos_cap/front.4bpp.lz"); + const u32 gMonPalette_PikachuKalosCap[] = INCBIN_U32("graphics/pokemon/pikachu/kalos_cap/normal.gbapal.lz"); + const u32 gMonBackPic_PikachuKalosCap[] = INCBIN_U32("graphics/pokemon/pikachu/kalos_cap/back.4bpp.lz"); + const u32 gMonShinyPalette_PikachuKalosCap[] = INCBIN_U32("graphics/pokemon/pikachu/kalos_cap/shiny.gbapal.lz"); + const u8 gMonIcon_PikachuKalosCap[] = INCBIN_U8("graphics/pokemon/pikachu/kalos_cap/icon.4bpp"); + + const u32 gMonFrontPic_PikachuAlolaCap[] = INCBIN_U32("graphics/pokemon/pikachu/alola_cap/front.4bpp.lz"); + const u32 gMonPalette_PikachuAlolaCap[] = INCBIN_U32("graphics/pokemon/pikachu/alola_cap/normal.gbapal.lz"); + const u32 gMonBackPic_PikachuAlolaCap[] = INCBIN_U32("graphics/pokemon/pikachu/alola_cap/back.4bpp.lz"); + const u32 gMonShinyPalette_PikachuAlolaCap[] = INCBIN_U32("graphics/pokemon/pikachu/alola_cap/shiny.gbapal.lz"); + const u8 gMonIcon_PikachuAlolaCap[] = INCBIN_U8("graphics/pokemon/pikachu/alola_cap/icon.4bpp"); + + const u32 gMonFrontPic_PikachuPartnerCap[] = INCBIN_U32("graphics/pokemon/pikachu/partner_cap/front.4bpp.lz"); + const u32 gMonPalette_PikachuPartnerCap[] = INCBIN_U32("graphics/pokemon/pikachu/partner_cap/normal.gbapal.lz"); + const u32 gMonBackPic_PikachuPartnerCap[] = INCBIN_U32("graphics/pokemon/pikachu/partner_cap/back.4bpp.lz"); + const u32 gMonShinyPalette_PikachuPartnerCap[] = INCBIN_U32("graphics/pokemon/pikachu/partner_cap/shiny.gbapal.lz"); + const u8 gMonIcon_PikachuPartnerCap[] = INCBIN_U8("graphics/pokemon/pikachu/partner_cap/icon.4bpp"); + + const u32 gMonFrontPic_PikachuWorldCap[] = INCBIN_U32("graphics/pokemon/pikachu/world_cap/front.4bpp.lz"); + const u32 gMonPalette_PikachuWorldCap[] = INCBIN_U32("graphics/pokemon/pikachu/world_cap/normal.gbapal.lz"); + const u32 gMonBackPic_PikachuWorldCap[] = INCBIN_U32("graphics/pokemon/pikachu/world_cap/back.4bpp.lz"); + const u32 gMonShinyPalette_PikachuWorldCap[] = INCBIN_U32("graphics/pokemon/pikachu/world_cap/shiny.gbapal.lz"); + const u8 gMonIcon_PikachuWorldCap[] = INCBIN_U8("graphics/pokemon/pikachu/world_cap/icon.4bpp"); +#endif //P_CAP_PIKACHU_FORMS + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_PikachuGigantamax[] = INCBIN_U32("graphics/pokemon/pikachu/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_PikachuGigantamax[] = INCBIN_U32("graphics/pokemon/pikachu/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_PikachuGigantamax[] = INCBIN_U32("graphics/pokemon/pikachu/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_PikachuGigantamax[] = INCBIN_U32("graphics/pokemon/pikachu/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_PikachuGigantamax[] = INCBIN_U8("graphics/pokemon/pikachu/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS + + 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"); + const u32 gMonShinyPalette_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/shiny.gbapal.lz"); + const u8 gMonIcon_Raichu[] = INCBIN_U8("graphics/pokemon/raichu/icon.4bpp"); + const u8 gMonFootprint_Raichu[] = INCBIN_U8("graphics/pokemon/raichu/footprint.1bpp"); + + const u32 gMonFrontPic_RaichuF[] = INCBIN_U32("graphics/pokemon/raichu/anim_frontf.4bpp.lz"); + +#if P_ALOLAN_FORMS + const u32 gMonFrontPic_RaichuAlolan[] = INCBIN_U32("graphics/pokemon/raichu/alolan/front.4bpp.lz"); + const u32 gMonPalette_RaichuAlolan[] = INCBIN_U32("graphics/pokemon/raichu/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_RaichuAlolan[] = INCBIN_U32("graphics/pokemon/raichu/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_RaichuAlolan[] = INCBIN_U32("graphics/pokemon/raichu/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_RaichuAlolan[] = INCBIN_U8("graphics/pokemon/raichu/alolan/icon.4bpp"); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_PIKACHU + +#if P_FAMILY_SANDSHREW + const u32 gMonFrontPic_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/anim_front.4bpp.lz"); + const u32 gMonPalette_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/normal.gbapal.lz"); + const u32 gMonBackPic_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/back.4bpp.lz"); + const u32 gMonShinyPalette_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/shiny.gbapal.lz"); + const u8 gMonIcon_Sandshrew[] = INCBIN_U8("graphics/pokemon/sandshrew/icon.4bpp"); + const u8 gMonFootprint_Sandshrew[] = INCBIN_U8("graphics/pokemon/sandshrew/footprint.1bpp"); + + const u32 gMonFrontPic_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/anim_front.4bpp.lz"); + const u32 gMonPalette_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/normal.gbapal.lz"); + const u32 gMonBackPic_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/back.4bpp.lz"); + const u32 gMonShinyPalette_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/shiny.gbapal.lz"); + const u8 gMonIcon_Sandslash[] = INCBIN_U8("graphics/pokemon/sandslash/icon.4bpp"); + const u8 gMonFootprint_Sandslash[] = INCBIN_U8("graphics/pokemon/sandslash/footprint.1bpp"); + +#if P_ALOLAN_FORMS + const u32 gMonFrontPic_SandshrewAlolan[] = INCBIN_U32("graphics/pokemon/sandshrew/alolan/front.4bpp.lz"); + const u32 gMonPalette_SandshrewAlolan[] = INCBIN_U32("graphics/pokemon/sandshrew/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_SandshrewAlolan[] = INCBIN_U32("graphics/pokemon/sandshrew/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_SandshrewAlolan[] = INCBIN_U32("graphics/pokemon/sandshrew/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_SandshrewAlolan[] = INCBIN_U8("graphics/pokemon/sandshrew/alolan/icon.4bpp"); + + const u32 gMonFrontPic_SandslashAlolan[] = INCBIN_U32("graphics/pokemon/sandslash/alolan/front.4bpp.lz"); + const u32 gMonPalette_SandslashAlolan[] = INCBIN_U32("graphics/pokemon/sandslash/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_SandslashAlolan[] = INCBIN_U32("graphics/pokemon/sandslash/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_SandslashAlolan[] = INCBIN_U32("graphics/pokemon/sandslash/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_SandslashAlolan[] = INCBIN_U8("graphics/pokemon/sandslash/alolan/icon.4bpp"); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_SANDSHREW + +#if P_FAMILY_NIDORAN + const u32 gMonFrontPic_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/anim_front.4bpp.lz"); + const u32 gMonPalette_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/normal.gbapal.lz"); + const u32 gMonBackPic_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/back.4bpp.lz"); + const u32 gMonShinyPalette_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/shiny.gbapal.lz"); + const u8 gMonIcon_NidoranF[] = INCBIN_U8("graphics/pokemon/nidoran_f/icon.4bpp"); + const u8 gMonFootprint_NidoranF[] = INCBIN_U8("graphics/pokemon/nidoran_f/footprint.1bpp"); + + const u32 gMonFrontPic_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/anim_front.4bpp.lz"); + const u32 gMonPalette_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/normal.gbapal.lz"); + const u32 gMonBackPic_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/back.4bpp.lz"); + const u32 gMonShinyPalette_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/shiny.gbapal.lz"); + const u8 gMonIcon_Nidorina[] = INCBIN_U8("graphics/pokemon/nidorina/icon.4bpp"); + const u8 gMonFootprint_Nidorina[] = INCBIN_U8("graphics/pokemon/nidorina/footprint.1bpp"); + + const u32 gMonFrontPic_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/anim_front.4bpp.lz"); + const u32 gMonPalette_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/normal.gbapal.lz"); + const u32 gMonBackPic_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/back.4bpp.lz"); + const u32 gMonShinyPalette_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/shiny.gbapal.lz"); + const u8 gMonIcon_Nidoqueen[] = INCBIN_U8("graphics/pokemon/nidoqueen/icon.4bpp"); + const u8 gMonFootprint_Nidoqueen[] = INCBIN_U8("graphics/pokemon/nidoqueen/footprint.1bpp"); + + const u32 gMonFrontPic_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/anim_front.4bpp.lz"); + const u32 gMonPalette_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/normal.gbapal.lz"); + const u32 gMonBackPic_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/back.4bpp.lz"); + const u32 gMonShinyPalette_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/shiny.gbapal.lz"); + const u8 gMonIcon_NidoranM[] = INCBIN_U8("graphics/pokemon/nidoran_m/icon.4bpp"); + const u8 gMonFootprint_NidoranM[] = INCBIN_U8("graphics/pokemon/nidoran_m/footprint.1bpp"); + + const u32 gMonFrontPic_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/anim_front.4bpp.lz"); + const u32 gMonPalette_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/normal.gbapal.lz"); + const u32 gMonBackPic_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/back.4bpp.lz"); + const u32 gMonShinyPalette_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/shiny.gbapal.lz"); + const u8 gMonIcon_Nidorino[] = INCBIN_U8("graphics/pokemon/nidorino/icon.4bpp"); + const u8 gMonFootprint_Nidorino[] = INCBIN_U8("graphics/pokemon/nidorino/footprint.1bpp"); + + const u32 gMonFrontPic_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/anim_front.4bpp.lz"); + const u32 gMonPalette_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/normal.gbapal.lz"); + const u32 gMonBackPic_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/back.4bpp.lz"); + const u32 gMonShinyPalette_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/shiny.gbapal.lz"); + const u8 gMonIcon_Nidoking[] = INCBIN_U8("graphics/pokemon/nidoking/icon.4bpp"); + const u8 gMonFootprint_Nidoking[] = INCBIN_U8("graphics/pokemon/nidoking/footprint.1bpp"); +#endif //P_FAMILY_NIDORAN + +#if P_FAMILY_CLEFAIRY +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/anim_front.4bpp.lz"); + const u32 gMonPalette_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/normal.gbapal.lz"); + const u32 gMonBackPic_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/back.4bpp.lz"); + const u32 gMonShinyPalette_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/shiny.gbapal.lz"); + const u8 gMonIcon_Cleffa[] = INCBIN_U8("graphics/pokemon/cleffa/icon.4bpp"); + const u8 gMonFootprint_Cleffa[] = INCBIN_U8("graphics/pokemon/cleffa/footprint.1bpp"); +#endif //P_GEN_2_CROSS_EVOS + + const u32 gMonFrontPic_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/anim_front.4bpp.lz"); + const u32 gMonPalette_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/normal.gbapal.lz"); + const u32 gMonBackPic_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/back.4bpp.lz"); + const u32 gMonShinyPalette_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/shiny.gbapal.lz"); + const u8 gMonIcon_Clefairy[] = INCBIN_U8("graphics/pokemon/clefairy/icon.4bpp"); + const u8 gMonFootprint_Clefairy[] = INCBIN_U8("graphics/pokemon/clefairy/footprint.1bpp"); + + const u32 gMonFrontPic_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/anim_front.4bpp.lz"); + const u32 gMonPalette_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/normal.gbapal.lz"); + const u32 gMonBackPic_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/back.4bpp.lz"); + const u32 gMonShinyPalette_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/shiny.gbapal.lz"); + const u8 gMonIcon_Clefable[] = INCBIN_U8("graphics/pokemon/clefable/icon.4bpp"); + const u8 gMonFootprint_Clefable[] = INCBIN_U8("graphics/pokemon/clefable/footprint.1bpp"); +#endif //P_FAMILY_CLEFAIRY + +#if P_FAMILY_VULPIX + const u32 gMonFrontPic_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/anim_front.4bpp.lz"); + const u32 gMonPalette_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/normal.gbapal.lz"); + const u32 gMonBackPic_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/back.4bpp.lz"); + const u32 gMonShinyPalette_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/shiny.gbapal.lz"); + const u8 gMonIcon_Vulpix[] = INCBIN_U8("graphics/pokemon/vulpix/icon.4bpp"); + const u8 gMonFootprint_Vulpix[] = INCBIN_U8("graphics/pokemon/vulpix/footprint.1bpp"); + + const u32 gMonFrontPic_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/anim_front.4bpp.lz"); + const u32 gMonPalette_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/normal.gbapal.lz"); + const u32 gMonBackPic_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/back.4bpp.lz"); + const u32 gMonShinyPalette_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/shiny.gbapal.lz"); + const u8 gMonIcon_Ninetales[] = INCBIN_U8("graphics/pokemon/ninetales/icon.4bpp"); + const u8 gMonFootprint_Ninetales[] = INCBIN_U8("graphics/pokemon/ninetales/footprint.1bpp"); + +#if P_ALOLAN_FORMS + const u32 gMonFrontPic_VulpixAlolan[] = INCBIN_U32("graphics/pokemon/vulpix/alolan/front.4bpp.lz"); + const u32 gMonPalette_VulpixAlolan[] = INCBIN_U32("graphics/pokemon/vulpix/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_VulpixAlolan[] = INCBIN_U32("graphics/pokemon/vulpix/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_VulpixAlolan[] = INCBIN_U32("graphics/pokemon/vulpix/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_VulpixAlolan[] = INCBIN_U8("graphics/pokemon/vulpix/alolan/icon.4bpp"); + + const u32 gMonFrontPic_NinetalesAlolan[] = INCBIN_U32("graphics/pokemon/ninetales/alolan/front.4bpp.lz"); + const u32 gMonPalette_NinetalesAlolan[] = INCBIN_U32("graphics/pokemon/ninetales/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_NinetalesAlolan[] = INCBIN_U32("graphics/pokemon/ninetales/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_NinetalesAlolan[] = INCBIN_U32("graphics/pokemon/ninetales/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_NinetalesAlolan[] = INCBIN_U8("graphics/pokemon/ninetales/alolan/icon.4bpp"); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_VULPIX + +#if P_FAMILY_JIGGLYPUFF +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/anim_front.4bpp.lz"); + const u32 gMonPalette_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/normal.gbapal.lz"); + const u32 gMonBackPic_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/back.4bpp.lz"); + const u32 gMonShinyPalette_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/shiny.gbapal.lz"); + const u8 gMonIcon_Igglybuff[] = INCBIN_U8("graphics/pokemon/igglybuff/icon.4bpp"); + const u8 gMonFootprint_Igglybuff[] = INCBIN_U8("graphics/pokemon/igglybuff/footprint.1bpp"); +#endif //P_GEN_2_CROSS_EVOS + + const u32 gMonFrontPic_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/anim_front.4bpp.lz"); + const u32 gMonPalette_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/normal.gbapal.lz"); + const u32 gMonBackPic_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/back.4bpp.lz"); + const u32 gMonShinyPalette_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/shiny.gbapal.lz"); + const u8 gMonIcon_Jigglypuff[] = INCBIN_U8("graphics/pokemon/jigglypuff/icon.4bpp"); + const u8 gMonFootprint_Jigglypuff[] = INCBIN_U8("graphics/pokemon/jigglypuff/footprint.1bpp"); + + const u32 gMonFrontPic_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/anim_front.4bpp.lz"); + const u32 gMonPalette_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/normal.gbapal.lz"); + const u32 gMonBackPic_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/back.4bpp.lz"); + const u32 gMonShinyPalette_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/shiny.gbapal.lz"); + const u8 gMonIcon_Wigglytuff[] = INCBIN_U8("graphics/pokemon/wigglytuff/icon.4bpp"); + const u8 gMonFootprint_Wigglytuff[] = INCBIN_U8("graphics/pokemon/wigglytuff/footprint.1bpp"); +#endif //P_FAMILY_JIGGLYPUFF + +#if P_FAMILY_ZUBAT + const u32 gMonFrontPic_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/anim_front.4bpp.lz"); + const u32 gMonPalette_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/normal.gbapal.lz"); + const u32 gMonBackPic_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/back.4bpp.lz"); + const u32 gMonShinyPalette_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/shiny.gbapal.lz"); + const u8 gMonIcon_Zubat[] = INCBIN_U8("graphics/pokemon/zubat/icon.4bpp"); + const u8 gMonFootprint_Zubat[] = INCBIN_U8("graphics/pokemon/zubat/footprint.1bpp"); + + const u32 gMonFrontPic_ZubatF[] = INCBIN_U32("graphics/pokemon/zubat/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_ZubatF[] = INCBIN_U32("graphics/pokemon/zubat/backf.4bpp.lz"); + + const u32 gMonFrontPic_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/anim_front.4bpp.lz"); + const u32 gMonPalette_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/normal.gbapal.lz"); + const u32 gMonBackPic_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/back.4bpp.lz"); + const u32 gMonShinyPalette_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/shiny.gbapal.lz"); + const u8 gMonIcon_Golbat[] = INCBIN_U8("graphics/pokemon/golbat/icon.4bpp"); + const u8 gMonFootprint_Golbat[] = INCBIN_U8("graphics/pokemon/golbat/footprint.1bpp"); + + const u32 gMonFrontPic_GolbatF[] = INCBIN_U32("graphics/pokemon/golbat/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_GolbatF[] = INCBIN_U32("graphics/pokemon/golbat/backf.4bpp.lz"); + +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/anim_front.4bpp.lz"); + const u32 gMonPalette_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/normal.gbapal.lz"); + const u32 gMonBackPic_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/back.4bpp.lz"); + const u32 gMonShinyPalette_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/shiny.gbapal.lz"); + const u8 gMonIcon_Crobat[] = INCBIN_U8("graphics/pokemon/crobat/icon.4bpp"); + const u8 gMonFootprint_Crobat[] = INCBIN_U8("graphics/pokemon/crobat/footprint.1bpp"); +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ZUBAT + +#if P_FAMILY_ODDISH + const u32 gMonFrontPic_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/anim_front.4bpp.lz"); + const u32 gMonPalette_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/normal.gbapal.lz"); + const u32 gMonBackPic_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/back.4bpp.lz"); + const u32 gMonShinyPalette_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/shiny.gbapal.lz"); + const u8 gMonIcon_Oddish[] = INCBIN_U8("graphics/pokemon/oddish/icon.4bpp"); + const u8 gMonFootprint_Oddish[] = INCBIN_U8("graphics/pokemon/oddish/footprint.1bpp"); + + const u32 gMonFrontPic_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/anim_front.4bpp.lz"); + const u32 gMonPalette_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/normal.gbapal.lz"); + const u32 gMonBackPic_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/back.4bpp.lz"); + const u32 gMonShinyPalette_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/shiny.gbapal.lz"); + const u8 gMonIcon_Gloom[] = INCBIN_U8("graphics/pokemon/gloom/icon.4bpp"); + const u8 gMonFootprint_Gloom[] = INCBIN_U8("graphics/pokemon/gloom/footprint.1bpp"); + + const u32 gMonFrontPic_GloomF[] = INCBIN_U32("graphics/pokemon/gloom/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_GloomF[] = INCBIN_U32("graphics/pokemon/gloom/backf.4bpp.lz"); + + const u32 gMonFrontPic_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/anim_front.4bpp.lz"); + const u32 gMonPalette_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/normal.gbapal.lz"); + const u32 gMonBackPic_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/back.4bpp.lz"); + const u32 gMonShinyPalette_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/shiny.gbapal.lz"); + const u8 gMonIcon_Vileplume[] = INCBIN_U8("graphics/pokemon/vileplume/icon.4bpp"); + const u8 gMonFootprint_Vileplume[] = INCBIN_U8("graphics/pokemon/vileplume/footprint.1bpp"); + + const u32 gMonFrontPic_VileplumeF[] = INCBIN_U32("graphics/pokemon/vileplume/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_VileplumeF[] = INCBIN_U32("graphics/pokemon/vileplume/backf.4bpp.lz"); + +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/anim_front.4bpp.lz"); + const u32 gMonPalette_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/normal.gbapal.lz"); + const u32 gMonBackPic_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/back.4bpp.lz"); + const u32 gMonShinyPalette_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/shiny.gbapal.lz"); + const u8 gMonIcon_Bellossom[] = INCBIN_U8("graphics/pokemon/bellossom/icon.4bpp"); + const u8 gMonFootprint_Bellossom[] = INCBIN_U8("graphics/pokemon/bellossom/footprint.1bpp"); +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ODDISH + +#if P_FAMILY_PARAS + const u32 gMonFrontPic_Paras[] = INCBIN_U32("graphics/pokemon/paras/anim_front.4bpp.lz"); + const u32 gMonPalette_Paras[] = INCBIN_U32("graphics/pokemon/paras/normal.gbapal.lz"); + const u32 gMonBackPic_Paras[] = INCBIN_U32("graphics/pokemon/paras/back.4bpp.lz"); + const u32 gMonShinyPalette_Paras[] = INCBIN_U32("graphics/pokemon/paras/shiny.gbapal.lz"); + const u8 gMonIcon_Paras[] = INCBIN_U8("graphics/pokemon/paras/icon.4bpp"); + const u8 gMonFootprint_Paras[] = INCBIN_U8("graphics/pokemon/paras/footprint.1bpp"); + + const u32 gMonFrontPic_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/anim_front.4bpp.lz"); + const u32 gMonPalette_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/normal.gbapal.lz"); + const u32 gMonBackPic_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/back.4bpp.lz"); + const u32 gMonShinyPalette_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/shiny.gbapal.lz"); + const u8 gMonIcon_Parasect[] = INCBIN_U8("graphics/pokemon/parasect/icon.4bpp"); + const u8 gMonFootprint_Parasect[] = INCBIN_U8("graphics/pokemon/parasect/footprint.1bpp"); +#endif //P_FAMILY_PARAS + +#if P_FAMILY_VENONAT + const u32 gMonFrontPic_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/anim_front.4bpp.lz"); + const u32 gMonPalette_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/normal.gbapal.lz"); + const u32 gMonBackPic_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/back.4bpp.lz"); + const u32 gMonShinyPalette_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/shiny.gbapal.lz"); + const u8 gMonIcon_Venonat[] = INCBIN_U8("graphics/pokemon/venonat/icon.4bpp"); + const u8 gMonFootprint_Venonat[] = INCBIN_U8("graphics/pokemon/venonat/footprint.1bpp"); + + const u32 gMonFrontPic_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/anim_front.4bpp.lz"); + const u32 gMonPalette_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/normal.gbapal.lz"); + const u32 gMonBackPic_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/back.4bpp.lz"); + const u32 gMonShinyPalette_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/shiny.gbapal.lz"); + const u8 gMonIcon_Venomoth[] = INCBIN_U8("graphics/pokemon/venomoth/icon.4bpp"); + const u8 gMonFootprint_Venomoth[] = INCBIN_U8("graphics/pokemon/venomoth/footprint.1bpp"); +#endif //P_FAMILY_VENONAT + +#if P_FAMILY_DIGLETT + const u32 gMonFrontPic_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/anim_front.4bpp.lz"); + const u32 gMonPalette_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/normal.gbapal.lz"); + const u32 gMonBackPic_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/back.4bpp.lz"); + const u32 gMonShinyPalette_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/shiny.gbapal.lz"); + const u8 gMonIcon_Diglett[] = INCBIN_U8("graphics/pokemon/diglett/icon.4bpp"); + const u8 gMonFootprint_Diglett[] = INCBIN_U8("graphics/pokemon/diglett/footprint.1bpp"); + + const u32 gMonFrontPic_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/anim_front.4bpp.lz"); + const u32 gMonPalette_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/normal.gbapal.lz"); + const u32 gMonBackPic_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/back.4bpp.lz"); + const u32 gMonShinyPalette_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/shiny.gbapal.lz"); + const u8 gMonIcon_Dugtrio[] = INCBIN_U8("graphics/pokemon/dugtrio/icon.4bpp"); + const u8 gMonFootprint_Dugtrio[] = INCBIN_U8("graphics/pokemon/dugtrio/footprint.1bpp"); + +#if P_ALOLAN_FORMS + const u32 gMonFrontPic_DiglettAlolan[] = INCBIN_U32("graphics/pokemon/diglett/alolan/front.4bpp.lz"); + const u32 gMonPalette_DiglettAlolan[] = INCBIN_U32("graphics/pokemon/diglett/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_DiglettAlolan[] = INCBIN_U32("graphics/pokemon/diglett/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_DiglettAlolan[] = INCBIN_U32("graphics/pokemon/diglett/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_DiglettAlolan[] = INCBIN_U8("graphics/pokemon/diglett/alolan/icon.4bpp"); + + const u32 gMonFrontPic_DugtrioAlolan[] = INCBIN_U32("graphics/pokemon/dugtrio/alolan/front.4bpp.lz"); + const u32 gMonPalette_DugtrioAlolan[] = INCBIN_U32("graphics/pokemon/dugtrio/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_DugtrioAlolan[] = INCBIN_U32("graphics/pokemon/dugtrio/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_DugtrioAlolan[] = INCBIN_U32("graphics/pokemon/dugtrio/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_DugtrioAlolan[] = INCBIN_U8("graphics/pokemon/dugtrio/alolan/icon.4bpp"); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_DIGLETT + +#if P_FAMILY_MEOWTH + const u32 gMonFrontPic_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/anim_front.4bpp.lz"); + const u32 gMonPalette_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/normal.gbapal.lz"); + const u32 gMonBackPic_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/back.4bpp.lz"); + const u32 gMonShinyPalette_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/shiny.gbapal.lz"); + const u8 gMonIcon_Meowth[] = INCBIN_U8("graphics/pokemon/meowth/icon.4bpp"); + const u8 gMonFootprint_Meowth[] = INCBIN_U8("graphics/pokemon/meowth/footprint.1bpp"); + + const u32 gMonFrontPic_Persian[] = INCBIN_U32("graphics/pokemon/persian/anim_front.4bpp.lz"); + const u32 gMonPalette_Persian[] = INCBIN_U32("graphics/pokemon/persian/normal.gbapal.lz"); + const u32 gMonBackPic_Persian[] = INCBIN_U32("graphics/pokemon/persian/back.4bpp.lz"); + const u32 gMonShinyPalette_Persian[] = INCBIN_U32("graphics/pokemon/persian/shiny.gbapal.lz"); + const u8 gMonIcon_Persian[] = INCBIN_U8("graphics/pokemon/persian/icon.4bpp"); + const u8 gMonFootprint_Persian[] = INCBIN_U8("graphics/pokemon/persian/footprint.1bpp"); + +#if P_ALOLAN_FORMS + const u32 gMonFrontPic_MeowthAlolan[] = INCBIN_U32("graphics/pokemon/meowth/alolan/front.4bpp.lz"); + const u32 gMonPalette_MeowthAlolan[] = INCBIN_U32("graphics/pokemon/meowth/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_MeowthAlolan[] = INCBIN_U32("graphics/pokemon/meowth/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_MeowthAlolan[] = INCBIN_U32("graphics/pokemon/meowth/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_MeowthAlolan[] = INCBIN_U8("graphics/pokemon/meowth/alolan/icon.4bpp"); + + const u32 gMonFrontPic_PersianAlolan[] = INCBIN_U32("graphics/pokemon/persian/alolan/front.4bpp.lz"); + const u32 gMonPalette_PersianAlolan[] = INCBIN_U32("graphics/pokemon/persian/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_PersianAlolan[] = INCBIN_U32("graphics/pokemon/persian/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_PersianAlolan[] = INCBIN_U32("graphics/pokemon/persian/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_PersianAlolan[] = INCBIN_U8("graphics/pokemon/persian/alolan/icon.4bpp"); +#endif //P_ALOLAN_FORMS + +#if P_GALARIAN_FORMS + const u32 gMonFrontPic_MeowthGalarian[] = INCBIN_U32("graphics/pokemon/meowth/galarian/front.4bpp.lz"); + const u32 gMonPalette_MeowthGalarian[] = INCBIN_U32("graphics/pokemon/meowth/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_MeowthGalarian[] = INCBIN_U32("graphics/pokemon/meowth/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_MeowthGalarian[] = INCBIN_U32("graphics/pokemon/meowth/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_MeowthGalarian[] = INCBIN_U8("graphics/pokemon/meowth/galarian/icon.4bpp"); + + const u32 gMonFrontPic_Perrserker[] = INCBIN_U32("graphics/pokemon/perrserker/front.4bpp.lz"); + const u32 gMonPalette_Perrserker[] = INCBIN_U32("graphics/pokemon/perrserker/normal.gbapal.lz"); + const u32 gMonBackPic_Perrserker[] = INCBIN_U32("graphics/pokemon/perrserker/back.4bpp.lz"); + const u32 gMonShinyPalette_Perrserker[] = INCBIN_U32("graphics/pokemon/perrserker/shiny.gbapal.lz"); + const u8 gMonIcon_Perrserker[] = INCBIN_U8("graphics/pokemon/perrserker/icon.4bpp"); + const u8 gMonFootprint_Perrserker[] = INCBIN_U8("graphics/pokemon/perrserker/footprint.1bpp"); +#endif //P_GALARIAN_FORMS + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_MeowthGigantamax[] = INCBIN_U32("graphics/pokemon/meowth/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_MeowthGigantamax[] = INCBIN_U32("graphics/pokemon/meowth/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_MeowthGigantamax[] = INCBIN_U32("graphics/pokemon/meowth/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_MeowthGigantamax[] = INCBIN_U32("graphics/pokemon/meowth/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_MeowthGigantamax[] = INCBIN_U8("graphics/pokemon/meowth/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MEOWTH + +#if P_FAMILY_PSYDUCK + const u32 gMonFrontPic_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/anim_front.4bpp.lz"); + const u32 gMonPalette_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/normal.gbapal.lz"); + const u32 gMonBackPic_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/back.4bpp.lz"); + const u32 gMonShinyPalette_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/shiny.gbapal.lz"); + const u8 gMonIcon_Psyduck[] = INCBIN_U8("graphics/pokemon/psyduck/icon.4bpp"); + const u8 gMonFootprint_Psyduck[] = INCBIN_U8("graphics/pokemon/psyduck/footprint.1bpp"); + + const u32 gMonFrontPic_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/anim_front.4bpp.lz"); + const u32 gMonPalette_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/normal.gbapal.lz"); + const u32 gMonBackPic_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/back.4bpp.lz"); + const u32 gMonShinyPalette_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/shiny.gbapal.lz"); + const u8 gMonIcon_Golduck[] = INCBIN_U8("graphics/pokemon/golduck/icon.4bpp"); + const u8 gMonFootprint_Golduck[] = INCBIN_U8("graphics/pokemon/golduck/footprint.1bpp"); +#endif //P_FAMILY_PSYDUCK + +#if P_FAMILY_MANKEY + const u32 gMonFrontPic_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/anim_front.4bpp.lz"); + const u32 gMonPalette_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/normal.gbapal.lz"); + const u32 gMonBackPic_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/back.4bpp.lz"); + const u32 gMonShinyPalette_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/shiny.gbapal.lz"); + const u8 gMonIcon_Mankey[] = INCBIN_U8("graphics/pokemon/mankey/icon.4bpp"); + const u8 gMonFootprint_Mankey[] = INCBIN_U8("graphics/pokemon/mankey/footprint.1bpp"); + + const u32 gMonFrontPic_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/anim_front.4bpp.lz"); + const u32 gMonPalette_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/normal.gbapal.lz"); + const u32 gMonBackPic_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/back.4bpp.lz"); + const u32 gMonShinyPalette_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/shiny.gbapal.lz"); + const u8 gMonIcon_Primeape[] = INCBIN_U8("graphics/pokemon/primeape/icon.4bpp"); + const u8 gMonFootprint_Primeape[] = INCBIN_U8("graphics/pokemon/primeape/footprint.1bpp"); + +#if P_GEN_9_CROSS_EVOS + const u32 gMonFrontPic_Annihilape[] = INCBIN_U32("graphics/pokemon/annihilape/front.4bpp.lz"); + const u32 gMonPalette_Annihilape[] = INCBIN_U32("graphics/pokemon/annihilape/normal.gbapal.lz"); + const u32 gMonBackPic_Annihilape[] = INCBIN_U32("graphics/pokemon/annihilape/back.4bpp.lz"); + const u32 gMonShinyPalette_Annihilape[] = INCBIN_U32("graphics/pokemon/annihilape/shiny.gbapal.lz"); + const u8 gMonIcon_Annihilape[] = INCBIN_U8("graphics/pokemon/annihilape/icon.4bpp"); + // const u8 gMonFootprint_Annihilape[] = INCBIN_U8("graphics/pokemon/annihilape/footprint.1bpp"); +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_MANKEY + +#if P_FAMILY_GROWLITHE + const u32 gMonFrontPic_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/anim_front.4bpp.lz"); + const u32 gMonPalette_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/normal.gbapal.lz"); + const u32 gMonBackPic_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/back.4bpp.lz"); + const u32 gMonShinyPalette_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/shiny.gbapal.lz"); + const u8 gMonIcon_Growlithe[] = INCBIN_U8("graphics/pokemon/growlithe/icon.4bpp"); + const u8 gMonFootprint_Growlithe[] = INCBIN_U8("graphics/pokemon/growlithe/footprint.1bpp"); + + const u32 gMonFrontPic_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/anim_front.4bpp.lz"); + const u32 gMonPalette_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/normal.gbapal.lz"); + const u32 gMonBackPic_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/back.4bpp.lz"); + const u32 gMonShinyPalette_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/shiny.gbapal.lz"); + const u8 gMonIcon_Arcanine[] = INCBIN_U8("graphics/pokemon/arcanine/icon.4bpp"); + const u8 gMonFootprint_Arcanine[] = INCBIN_U8("graphics/pokemon/arcanine/footprint.1bpp"); + +#if P_HISUIAN_FORMS + const u32 gMonFrontPic_GrowlitheHisuian[] = INCBIN_U32("graphics/pokemon/growlithe/hisuian/front.4bpp.lz"); + const u32 gMonPalette_GrowlitheHisuian[] = INCBIN_U32("graphics/pokemon/growlithe/hisuian/normal.gbapal.lz"); + const u32 gMonBackPic_GrowlitheHisuian[] = INCBIN_U32("graphics/pokemon/growlithe/hisuian/back.4bpp.lz"); + const u32 gMonShinyPalette_GrowlitheHisuian[] = INCBIN_U32("graphics/pokemon/growlithe/hisuian/shiny.gbapal.lz"); + const u8 gMonIcon_GrowlitheHisuian[] = INCBIN_U8("graphics/pokemon/growlithe/hisuian/icon.4bpp"); + + const u32 gMonFrontPic_ArcanineHisuian[] = INCBIN_U32("graphics/pokemon/arcanine/hisuian/front.4bpp.lz"); + const u32 gMonPalette_ArcanineHisuian[] = INCBIN_U32("graphics/pokemon/arcanine/hisuian/normal.gbapal.lz"); + const u32 gMonBackPic_ArcanineHisuian[] = INCBIN_U32("graphics/pokemon/arcanine/hisuian/back.4bpp.lz"); + const u32 gMonShinyPalette_ArcanineHisuian[] = INCBIN_U32("graphics/pokemon/arcanine/hisuian/shiny.gbapal.lz"); + const u8 gMonIcon_ArcanineHisuian[] = INCBIN_U8("graphics/pokemon/arcanine/hisuian/icon.4bpp"); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_GROWLITHE + +#if P_FAMILY_POLIWAG + const u32 gMonFrontPic_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/anim_front.4bpp.lz"); + const u32 gMonPalette_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/normal.gbapal.lz"); + const u32 gMonBackPic_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/back.4bpp.lz"); + const u32 gMonShinyPalette_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/shiny.gbapal.lz"); + const u8 gMonIcon_Poliwag[] = INCBIN_U8("graphics/pokemon/poliwag/icon.4bpp"); + const u8 gMonFootprint_Poliwag[] = INCBIN_U8("graphics/pokemon/poliwag/footprint.1bpp"); + + const u32 gMonFrontPic_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/anim_front.4bpp.lz"); + const u32 gMonPalette_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/normal.gbapal.lz"); + const u32 gMonBackPic_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/back.4bpp.lz"); + const u32 gMonShinyPalette_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/shiny.gbapal.lz"); + const u8 gMonIcon_Poliwhirl[] = INCBIN_U8("graphics/pokemon/poliwhirl/icon.4bpp"); + const u8 gMonFootprint_Poliwhirl[] = INCBIN_U8("graphics/pokemon/poliwhirl/footprint.1bpp"); + + const u32 gMonFrontPic_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/anim_front.4bpp.lz"); + const u32 gMonPalette_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/normal.gbapal.lz"); + const u32 gMonBackPic_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/back.4bpp.lz"); + const u32 gMonShinyPalette_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/shiny.gbapal.lz"); + const u8 gMonIcon_Poliwrath[] = INCBIN_U8("graphics/pokemon/poliwrath/icon.4bpp"); + const u8 gMonFootprint_Poliwrath[] = INCBIN_U8("graphics/pokemon/poliwrath/footprint.1bpp"); + +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/anim_front.4bpp.lz"); + const u32 gMonPalette_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/normal.gbapal.lz"); + const u32 gMonBackPic_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/back.4bpp.lz"); + const u32 gMonShinyPalette_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/shiny.gbapal.lz"); + const u8 gMonIcon_Politoed[] = INCBIN_U8("graphics/pokemon/politoed/icon.4bpp"); + const u8 gMonFootprint_Politoed[] = INCBIN_U8("graphics/pokemon/politoed/footprint.1bpp"); + + const u32 gMonFrontPic_PolitoedF[] = INCBIN_U32("graphics/pokemon/politoed/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_PolitoedF[] = INCBIN_U32("graphics/pokemon/politoed/backf.4bpp.lz"); +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_POLIWAG + +#if P_FAMILY_ABRA + const u32 gMonFrontPic_Abra[] = INCBIN_U32("graphics/pokemon/abra/anim_front.4bpp.lz"); + const u32 gMonPalette_Abra[] = INCBIN_U32("graphics/pokemon/abra/normal.gbapal.lz"); + const u32 gMonBackPic_Abra[] = INCBIN_U32("graphics/pokemon/abra/back.4bpp.lz"); + const u32 gMonShinyPalette_Abra[] = INCBIN_U32("graphics/pokemon/abra/shiny.gbapal.lz"); + const u8 gMonIcon_Abra[] = INCBIN_U8("graphics/pokemon/abra/icon.4bpp"); + const u8 gMonFootprint_Abra[] = INCBIN_U8("graphics/pokemon/abra/footprint.1bpp"); + + const u32 gMonFrontPic_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/anim_front.4bpp.lz"); + const u32 gMonPalette_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/normal.gbapal.lz"); + const u32 gMonBackPic_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/back.4bpp.lz"); + const u32 gMonShinyPalette_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/shiny.gbapal.lz"); + const u8 gMonIcon_Kadabra[] = INCBIN_U8("graphics/pokemon/kadabra/icon.4bpp"); + const u8 gMonFootprint_Kadabra[] = INCBIN_U8("graphics/pokemon/kadabra/footprint.1bpp"); + + const u32 gMonFrontPic_KadabraF[] = INCBIN_U32("graphics/pokemon/kadabra/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_KadabraF[] = INCBIN_U32("graphics/pokemon/kadabra/backf.4bpp.lz"); + + const u32 gMonFrontPic_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/anim_front.4bpp.lz"); + const u32 gMonPalette_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/normal.gbapal.lz"); + const u32 gMonBackPic_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/back.4bpp.lz"); + const u32 gMonShinyPalette_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/shiny.gbapal.lz"); + const u8 gMonIcon_Alakazam[] = INCBIN_U8("graphics/pokemon/alakazam/icon.4bpp"); + const u8 gMonFootprint_Alakazam[] = INCBIN_U8("graphics/pokemon/alakazam/footprint.1bpp"); + + const u32 gMonFrontPic_AlakazamF[] = INCBIN_U32("graphics/pokemon/alakazam/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_AlakazamF[] = INCBIN_U32("graphics/pokemon/alakazam/backf.4bpp.lz"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_AlakazamMega[] = INCBIN_U32("graphics/pokemon/alakazam/mega/front.4bpp.lz"); + const u32 gMonPalette_AlakazamMega[] = INCBIN_U32("graphics/pokemon/alakazam/mega/normal.gbapal.lz"); + const u32 gMonBackPic_AlakazamMega[] = INCBIN_U32("graphics/pokemon/alakazam/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_AlakazamMega[] = INCBIN_U32("graphics/pokemon/alakazam/mega/shiny.gbapal.lz"); + const u8 gMonIcon_AlakazamMega[] = INCBIN_U8("graphics/pokemon/alakazam/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ABRA + +#if P_FAMILY_MACHOP + const u32 gMonFrontPic_Machop[] = INCBIN_U32("graphics/pokemon/machop/anim_front.4bpp.lz"); + const u32 gMonPalette_Machop[] = INCBIN_U32("graphics/pokemon/machop/normal.gbapal.lz"); + const u32 gMonBackPic_Machop[] = INCBIN_U32("graphics/pokemon/machop/back.4bpp.lz"); + const u32 gMonShinyPalette_Machop[] = INCBIN_U32("graphics/pokemon/machop/shiny.gbapal.lz"); + const u8 gMonIcon_Machop[] = INCBIN_U8("graphics/pokemon/machop/icon.4bpp"); + const u8 gMonFootprint_Machop[] = INCBIN_U8("graphics/pokemon/machop/footprint.1bpp"); + + const u32 gMonFrontPic_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/anim_front.4bpp.lz"); + const u32 gMonPalette_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/normal.gbapal.lz"); + const u32 gMonBackPic_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/back.4bpp.lz"); + const u32 gMonShinyPalette_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/shiny.gbapal.lz"); + const u8 gMonIcon_Machoke[] = INCBIN_U8("graphics/pokemon/machoke/icon.4bpp"); + const u8 gMonFootprint_Machoke[] = INCBIN_U8("graphics/pokemon/machoke/footprint.1bpp"); + + const u32 gMonFrontPic_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/anim_front.4bpp.lz"); + const u32 gMonPalette_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/normal.gbapal.lz"); + const u32 gMonBackPic_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/back.4bpp.lz"); + const u32 gMonShinyPalette_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/shiny.gbapal.lz"); + const u8 gMonIcon_Machamp[] = INCBIN_U8("graphics/pokemon/machamp/icon.4bpp"); + const u8 gMonFootprint_Machamp[] = INCBIN_U8("graphics/pokemon/machamp/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_MachampGigantamax[] = INCBIN_U32("graphics/pokemon/machamp/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_MachampGigantamax[] = INCBIN_U32("graphics/pokemon/machamp/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_MachampGigantamax[] = INCBIN_U32("graphics/pokemon/machamp/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_MachampGigantamax[] = INCBIN_U32("graphics/pokemon/machamp/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_MachampGigantamax[] = INCBIN_U8("graphics/pokemon/machamp/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MACHOP + +#if P_FAMILY_BELLSPROUT + const u32 gMonFrontPic_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/anim_front.4bpp.lz"); + const u32 gMonPalette_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/normal.gbapal.lz"); + const u32 gMonBackPic_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/back.4bpp.lz"); + const u32 gMonShinyPalette_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/shiny.gbapal.lz"); + const u8 gMonIcon_Bellsprout[] = INCBIN_U8("graphics/pokemon/bellsprout/icon.4bpp"); + const u8 gMonFootprint_Bellsprout[] = INCBIN_U8("graphics/pokemon/bellsprout/footprint.1bpp"); + + const u32 gMonFrontPic_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/anim_front.4bpp.lz"); + const u32 gMonPalette_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/normal.gbapal.lz"); + const u32 gMonBackPic_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/back.4bpp.lz"); + const u32 gMonShinyPalette_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/shiny.gbapal.lz"); + const u8 gMonIcon_Weepinbell[] = INCBIN_U8("graphics/pokemon/weepinbell/icon.4bpp"); + const u8 gMonFootprint_Weepinbell[] = INCBIN_U8("graphics/pokemon/weepinbell/footprint.1bpp"); + + const u32 gMonFrontPic_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/anim_front.4bpp.lz"); + const u32 gMonPalette_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/normal.gbapal.lz"); + const u32 gMonBackPic_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/back.4bpp.lz"); + const u32 gMonShinyPalette_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/shiny.gbapal.lz"); + const u8 gMonIcon_Victreebel[] = INCBIN_U8("graphics/pokemon/victreebel/icon.4bpp"); + const u8 gMonFootprint_Victreebel[] = INCBIN_U8("graphics/pokemon/victreebel/footprint.1bpp"); +#endif //P_FAMILY_BELLSPROUT + +#if P_FAMILY_TENTACOOL + const u32 gMonFrontPic_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/anim_front.4bpp.lz"); + const u32 gMonPalette_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/normal.gbapal.lz"); + const u32 gMonBackPic_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/back.4bpp.lz"); + const u32 gMonShinyPalette_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/shiny.gbapal.lz"); + const u8 gMonIcon_Tentacool[] = INCBIN_U8("graphics/pokemon/tentacool/icon.4bpp"); + const u8 gMonFootprint_Tentacool[] = INCBIN_U8("graphics/pokemon/tentacool/footprint.1bpp"); + + const u32 gMonFrontPic_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/anim_front.4bpp.lz"); + const u32 gMonPalette_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/normal.gbapal.lz"); + const u32 gMonBackPic_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/back.4bpp.lz"); + const u32 gMonShinyPalette_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/shiny.gbapal.lz"); + const u8 gMonIcon_Tentacruel[] = INCBIN_U8("graphics/pokemon/tentacruel/icon.4bpp"); + const u8 gMonFootprint_Tentacruel[] = INCBIN_U8("graphics/pokemon/tentacruel/footprint.1bpp"); +#endif //P_FAMILY_TENTACOOL + +#if P_FAMILY_GEODUDE + const u32 gMonFrontPic_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/anim_front.4bpp.lz"); + const u32 gMonPalette_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/normal.gbapal.lz"); + const u32 gMonBackPic_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/back.4bpp.lz"); + const u32 gMonShinyPalette_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/shiny.gbapal.lz"); + const u8 gMonIcon_Geodude[] = INCBIN_U8("graphics/pokemon/geodude/icon.4bpp"); + const u8 gMonFootprint_Geodude[] = INCBIN_U8("graphics/pokemon/geodude/footprint.1bpp"); + + const u32 gMonFrontPic_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/anim_front.4bpp.lz"); + const u32 gMonPalette_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/normal.gbapal.lz"); + const u32 gMonBackPic_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/back.4bpp.lz"); + const u32 gMonShinyPalette_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/shiny.gbapal.lz"); + const u8 gMonIcon_Graveler[] = INCBIN_U8("graphics/pokemon/graveler/icon.4bpp"); + const u8 gMonFootprint_Graveler[] = INCBIN_U8("graphics/pokemon/graveler/footprint.1bpp"); + + const u32 gMonFrontPic_Golem[] = INCBIN_U32("graphics/pokemon/golem/anim_front.4bpp.lz"); + const u32 gMonPalette_Golem[] = INCBIN_U32("graphics/pokemon/golem/normal.gbapal.lz"); + const u32 gMonBackPic_Golem[] = INCBIN_U32("graphics/pokemon/golem/back.4bpp.lz"); + const u32 gMonShinyPalette_Golem[] = INCBIN_U32("graphics/pokemon/golem/shiny.gbapal.lz"); + const u8 gMonIcon_Golem[] = INCBIN_U8("graphics/pokemon/golem/icon.4bpp"); + const u8 gMonFootprint_Golem[] = INCBIN_U8("graphics/pokemon/golem/footprint.1bpp"); + +#if P_ALOLAN_FORMS + const u32 gMonFrontPic_GeodudeAlolan[] = INCBIN_U32("graphics/pokemon/geodude/alolan/front.4bpp.lz"); + const u32 gMonPalette_GeodudeAlolan[] = INCBIN_U32("graphics/pokemon/geodude/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_GeodudeAlolan[] = INCBIN_U32("graphics/pokemon/geodude/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_GeodudeAlolan[] = INCBIN_U32("graphics/pokemon/geodude/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_GeodudeAlolan[] = INCBIN_U8("graphics/pokemon/geodude/alolan/icon.4bpp"); + + const u32 gMonFrontPic_GravelerAlolan[] = INCBIN_U32("graphics/pokemon/graveler/alolan/front.4bpp.lz"); + const u32 gMonPalette_GravelerAlolan[] = INCBIN_U32("graphics/pokemon/graveler/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_GravelerAlolan[] = INCBIN_U32("graphics/pokemon/graveler/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_GravelerAlolan[] = INCBIN_U32("graphics/pokemon/graveler/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_GravelerAlolan[] = INCBIN_U8("graphics/pokemon/graveler/alolan/icon.4bpp"); + + const u32 gMonFrontPic_GolemAlolan[] = INCBIN_U32("graphics/pokemon/golem/alolan/front.4bpp.lz"); + const u32 gMonPalette_GolemAlolan[] = INCBIN_U32("graphics/pokemon/golem/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_GolemAlolan[] = INCBIN_U32("graphics/pokemon/golem/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_GolemAlolan[] = INCBIN_U32("graphics/pokemon/golem/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_GolemAlolan[] = INCBIN_U8("graphics/pokemon/golem/alolan/icon.4bpp"); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GEODUDE + +#if P_FAMILY_PONYTA + const u32 gMonFrontPic_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/anim_front.4bpp.lz"); + const u32 gMonPalette_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/normal.gbapal.lz"); + const u32 gMonBackPic_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/back.4bpp.lz"); + const u32 gMonShinyPalette_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/shiny.gbapal.lz"); + const u8 gMonIcon_Ponyta[] = INCBIN_U8("graphics/pokemon/ponyta/icon.4bpp"); + const u8 gMonFootprint_Ponyta[] = INCBIN_U8("graphics/pokemon/ponyta/footprint.1bpp"); + + const u32 gMonFrontPic_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/anim_front.4bpp.lz"); + const u32 gMonPalette_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/normal.gbapal.lz"); + const u32 gMonBackPic_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/back.4bpp.lz"); + const u32 gMonShinyPalette_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/shiny.gbapal.lz"); + const u8 gMonIcon_Rapidash[] = INCBIN_U8("graphics/pokemon/rapidash/icon.4bpp"); + const u8 gMonFootprint_Rapidash[] = INCBIN_U8("graphics/pokemon/rapidash/footprint.1bpp"); + +#if P_GALARIAN_FORMS + const u32 gMonFrontPic_PonytaGalarian[] = INCBIN_U32("graphics/pokemon/ponyta/galarian/front.4bpp.lz"); + const u32 gMonPalette_PonytaGalarian[] = INCBIN_U32("graphics/pokemon/ponyta/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_PonytaGalarian[] = INCBIN_U32("graphics/pokemon/ponyta/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_PonytaGalarian[] = INCBIN_U32("graphics/pokemon/ponyta/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_PonytaGalarian[] = INCBIN_U8("graphics/pokemon/ponyta/galarian/icon.4bpp"); + + const u32 gMonFrontPic_RapidashGalarian[] = INCBIN_U32("graphics/pokemon/rapidash/galarian/front.4bpp.lz"); + const u32 gMonPalette_RapidashGalarian[] = INCBIN_U32("graphics/pokemon/rapidash/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_RapidashGalarian[] = INCBIN_U32("graphics/pokemon/rapidash/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_RapidashGalarian[] = INCBIN_U32("graphics/pokemon/rapidash/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_RapidashGalarian[] = INCBIN_U8("graphics/pokemon/rapidash/galarian/icon.4bpp"); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_PONYTA + +#if P_FAMILY_SLOWPOKE + const u32 gMonFrontPic_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/anim_front.4bpp.lz"); + const u32 gMonPalette_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/normal.gbapal.lz"); + const u32 gMonBackPic_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/back.4bpp.lz"); + const u32 gMonShinyPalette_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/shiny.gbapal.lz"); + const u8 gMonIcon_Slowpoke[] = INCBIN_U8("graphics/pokemon/slowpoke/icon.4bpp"); + const u8 gMonFootprint_Slowpoke[] = INCBIN_U8("graphics/pokemon/slowpoke/footprint.1bpp"); + + const u32 gMonFrontPic_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/anim_front.4bpp.lz"); + const u32 gMonPalette_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/normal.gbapal.lz"); + const u32 gMonBackPic_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/back.4bpp.lz"); + const u32 gMonShinyPalette_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/shiny.gbapal.lz"); + const u8 gMonIcon_Slowbro[] = INCBIN_U8("graphics/pokemon/slowbro/icon.4bpp"); + const u8 gMonFootprint_Slowbro[] = INCBIN_U8("graphics/pokemon/slowbro/footprint.1bpp"); + +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/anim_front.4bpp.lz"); + const u32 gMonPalette_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/normal.gbapal.lz"); + const u32 gMonBackPic_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/back.4bpp.lz"); + const u32 gMonShinyPalette_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/shiny.gbapal.lz"); + const u8 gMonIcon_Slowking[] = INCBIN_U8("graphics/pokemon/slowking/icon.4bpp"); + const u8 gMonFootprint_Slowking[] = INCBIN_U8("graphics/pokemon/slowking/footprint.1bpp"); +#endif //P_GEN_2_CROSS_EVOS + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_SlowbroMega[] = INCBIN_U32("graphics/pokemon/slowbro/mega/front.4bpp.lz"); + const u32 gMonPalette_SlowbroMega[] = INCBIN_U32("graphics/pokemon/slowbro/mega/normal.gbapal.lz"); + const u32 gMonBackPic_SlowbroMega[] = INCBIN_U32("graphics/pokemon/slowbro/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_SlowbroMega[] = INCBIN_U32("graphics/pokemon/slowbro/mega/shiny.gbapal.lz"); + const u8 gMonIcon_SlowbroMega[] = INCBIN_U8("graphics/pokemon/slowbro/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS + +#if P_GALARIAN_FORMS + const u32 gMonFrontPic_SlowpokeGalarian[] = INCBIN_U32("graphics/pokemon/slowpoke/galarian/front.4bpp.lz"); + const u32 gMonPalette_SlowpokeGalarian[] = INCBIN_U32("graphics/pokemon/slowpoke/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_SlowpokeGalarian[] = INCBIN_U32("graphics/pokemon/slowpoke/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_SlowpokeGalarian[] = INCBIN_U32("graphics/pokemon/slowpoke/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_SlowpokeGalarian[] = INCBIN_U8("graphics/pokemon/slowpoke/galarian/icon.4bpp"); + + const u32 gMonFrontPic_SlowbroGalarian[] = INCBIN_U32("graphics/pokemon/slowbro/galarian/front.4bpp.lz"); + const u32 gMonPalette_SlowbroGalarian[] = INCBIN_U32("graphics/pokemon/slowbro/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_SlowbroGalarian[] = INCBIN_U32("graphics/pokemon/slowbro/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_SlowbroGalarian[] = INCBIN_U32("graphics/pokemon/slowbro/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_SlowbroGalarian[] = INCBIN_U8("graphics/pokemon/slowbro/galarian/icon.4bpp"); + +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_SlowkingGalarian[] = INCBIN_U32("graphics/pokemon/slowking/galarian/front.4bpp.lz"); + const u32 gMonPalette_SlowkingGalarian[] = INCBIN_U32("graphics/pokemon/slowking/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_SlowkingGalarian[] = INCBIN_U32("graphics/pokemon/slowking/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_SlowkingGalarian[] = INCBIN_U32("graphics/pokemon/slowking/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_SlowkingGalarian[] = INCBIN_U8("graphics/pokemon/slowking/galarian/icon.4bpp"); +#endif //P_GEN_2_CROSS_EVOS +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_SLOWPOKE + +#if P_FAMILY_MAGNEMITE + const u32 gMonFrontPic_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/anim_front.4bpp.lz"); + const u32 gMonPalette_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/normal.gbapal.lz"); + const u32 gMonBackPic_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/back.4bpp.lz"); + const u32 gMonShinyPalette_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/shiny.gbapal.lz"); + const u8 gMonIcon_Magnemite[] = INCBIN_U8("graphics/pokemon/magnemite/icon.4bpp"); + const u8 gMonFootprint_Magnemite[] = INCBIN_U8("graphics/pokemon/magnemite/footprint.1bpp"); + + const u32 gMonFrontPic_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/anim_front.4bpp.lz"); + const u32 gMonPalette_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/normal.gbapal.lz"); + const u32 gMonBackPic_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/back.4bpp.lz"); + const u32 gMonShinyPalette_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/shiny.gbapal.lz"); + const u8 gMonIcon_Magneton[] = INCBIN_U8("graphics/pokemon/magneton/icon.4bpp"); + const u8 gMonFootprint_Magneton[] = INCBIN_U8("graphics/pokemon/magneton/footprint.1bpp"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Magnezone[] = INCBIN_U32("graphics/pokemon/magnezone/anim_front.4bpp.lz"); + const u32 gMonPalette_Magnezone[] = INCBIN_U32("graphics/pokemon/magnezone/normal.gbapal.lz"); + const u32 gMonBackPic_Magnezone[] = INCBIN_U32("graphics/pokemon/magnezone/back.4bpp.lz"); + const u32 gMonShinyPalette_Magnezone[] = INCBIN_U32("graphics/pokemon/magnezone/shiny.gbapal.lz"); + const u8 gMonIcon_Magnezone[] = INCBIN_U8("graphics/pokemon/magnezone/icon.4bpp"); + const u8 gMonFootprint_Magnezone[] = INCBIN_U8("graphics/pokemon/magnezone/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGNEMITE + +#if P_FAMILY_FARFETCHD + const u32 gMonFrontPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/anim_front.4bpp.lz"); + const u32 gMonPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/normal.gbapal.lz"); + const u32 gMonBackPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/back.4bpp.lz"); + const u32 gMonShinyPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/shiny.gbapal.lz"); + const u8 gMonIcon_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetchd/icon.4bpp"); + const u8 gMonFootprint_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetchd/footprint.1bpp"); + +#if P_GALARIAN_FORMS + const u32 gMonFrontPic_FarfetchdGalarian[] = INCBIN_U32("graphics/pokemon/farfetchd/galarian/front.4bpp.lz"); + const u32 gMonPalette_FarfetchdGalarian[] = INCBIN_U32("graphics/pokemon/farfetchd/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_FarfetchdGalarian[] = INCBIN_U32("graphics/pokemon/farfetchd/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_FarfetchdGalarian[] = INCBIN_U32("graphics/pokemon/farfetchd/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_FarfetchdGalarian[] = INCBIN_U8("graphics/pokemon/farfetchd/galarian/icon.4bpp"); + + const u32 gMonFrontPic_Sirfetchd[] = INCBIN_U32("graphics/pokemon/sirfetchd/front.4bpp.lz"); + const u32 gMonPalette_Sirfetchd[] = INCBIN_U32("graphics/pokemon/sirfetchd/normal.gbapal.lz"); + const u32 gMonBackPic_Sirfetchd[] = INCBIN_U32("graphics/pokemon/sirfetchd/back.4bpp.lz"); + const u32 gMonShinyPalette_Sirfetchd[] = INCBIN_U32("graphics/pokemon/sirfetchd/shiny.gbapal.lz"); + const u8 gMonIcon_Sirfetchd[] = INCBIN_U8("graphics/pokemon/sirfetchd/icon.4bpp"); + const u8 gMonFootprint_Sirfetchd[] = INCBIN_U8("graphics/pokemon/sirfetchd/footprint.1bpp"); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_FARFETCHD + +#if P_FAMILY_DODUO + const u32 gMonFrontPic_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/anim_front.4bpp.lz"); + const u32 gMonPalette_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/normal.gbapal.lz"); + const u32 gMonBackPic_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/back.4bpp.lz"); + const u32 gMonShinyPalette_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/shiny.gbapal.lz"); + const u8 gMonIcon_Doduo[] = INCBIN_U8("graphics/pokemon/doduo/icon.4bpp"); + const u8 gMonFootprint_Doduo[] = INCBIN_U8("graphics/pokemon/doduo/footprint.1bpp"); + + const u32 gMonFrontPic_DoduoF[] = INCBIN_U32("graphics/pokemon/doduo/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_DoduoF[] = INCBIN_U32("graphics/pokemon/doduo/backf.4bpp.lz"); + + const u32 gMonFrontPic_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/anim_front.4bpp.lz"); + const u32 gMonPalette_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/normal.gbapal.lz"); + const u32 gMonBackPic_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/back.4bpp.lz"); + const u32 gMonShinyPalette_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/shiny.gbapal.lz"); + const u8 gMonIcon_Dodrio[] = INCBIN_U8("graphics/pokemon/dodrio/icon.4bpp"); + const u8 gMonFootprint_Dodrio[] = INCBIN_U8("graphics/pokemon/dodrio/footprint.1bpp"); + + const u32 gMonFrontPic_DodrioF[] = INCBIN_U32("graphics/pokemon/dodrio/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_DodrioF[] = INCBIN_U32("graphics/pokemon/dodrio/backf.4bpp.lz"); +#endif //P_FAMILY_DODUO + +#if P_FAMILY_SEEL + const u32 gMonFrontPic_Seel[] = INCBIN_U32("graphics/pokemon/seel/anim_front.4bpp.lz"); + const u32 gMonPalette_Seel[] = INCBIN_U32("graphics/pokemon/seel/normal.gbapal.lz"); + const u32 gMonBackPic_Seel[] = INCBIN_U32("graphics/pokemon/seel/back.4bpp.lz"); + const u32 gMonShinyPalette_Seel[] = INCBIN_U32("graphics/pokemon/seel/shiny.gbapal.lz"); + const u8 gMonIcon_Seel[] = INCBIN_U8("graphics/pokemon/seel/icon.4bpp"); + const u8 gMonFootprint_Seel[] = INCBIN_U8("graphics/pokemon/seel/footprint.1bpp"); + + const u32 gMonFrontPic_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/anim_front.4bpp.lz"); + const u32 gMonPalette_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/normal.gbapal.lz"); + const u32 gMonBackPic_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/back.4bpp.lz"); + const u32 gMonShinyPalette_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/shiny.gbapal.lz"); + const u8 gMonIcon_Dewgong[] = INCBIN_U8("graphics/pokemon/dewgong/icon.4bpp"); + const u8 gMonFootprint_Dewgong[] = INCBIN_U8("graphics/pokemon/dewgong/footprint.1bpp"); +#endif //P_FAMILY_SEEL + +#if P_FAMILY_GRIMER + const u32 gMonFrontPic_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/anim_front.4bpp.lz"); + const u32 gMonPalette_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/normal.gbapal.lz"); + const u32 gMonBackPic_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/back.4bpp.lz"); + const u32 gMonShinyPalette_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/shiny.gbapal.lz"); + const u8 gMonIcon_Grimer[] = INCBIN_U8("graphics/pokemon/grimer/icon.4bpp"); + const u8 gMonFootprint_Grimer[] = INCBIN_U8("graphics/pokemon/grimer/footprint.1bpp"); + + const u32 gMonFrontPic_Muk[] = INCBIN_U32("graphics/pokemon/muk/anim_front.4bpp.lz"); + const u32 gMonPalette_Muk[] = INCBIN_U32("graphics/pokemon/muk/normal.gbapal.lz"); + const u32 gMonBackPic_Muk[] = INCBIN_U32("graphics/pokemon/muk/back.4bpp.lz"); + const u32 gMonShinyPalette_Muk[] = INCBIN_U32("graphics/pokemon/muk/shiny.gbapal.lz"); + const u8 gMonIcon_Muk[] = INCBIN_U8("graphics/pokemon/muk/icon.4bpp"); + const u8 gMonFootprint_Muk[] = INCBIN_U8("graphics/pokemon/muk/footprint.1bpp"); + +#if P_ALOLAN_FORMS + const u32 gMonFrontPic_GrimerAlolan[] = INCBIN_U32("graphics/pokemon/grimer/alolan/front.4bpp.lz"); + const u32 gMonPalette_GrimerAlolan[] = INCBIN_U32("graphics/pokemon/grimer/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_GrimerAlolan[] = INCBIN_U32("graphics/pokemon/grimer/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_GrimerAlolan[] = INCBIN_U32("graphics/pokemon/grimer/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_GrimerAlolan[] = INCBIN_U8("graphics/pokemon/grimer/alolan/icon.4bpp"); + + const u32 gMonFrontPic_MukAlolan[] = INCBIN_U32("graphics/pokemon/muk/alolan/front.4bpp.lz"); + const u32 gMonPalette_MukAlolan[] = INCBIN_U32("graphics/pokemon/muk/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_MukAlolan[] = INCBIN_U32("graphics/pokemon/muk/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_MukAlolan[] = INCBIN_U32("graphics/pokemon/muk/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_MukAlolan[] = INCBIN_U8("graphics/pokemon/muk/alolan/icon.4bpp"); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GRIMER + +#if P_FAMILY_SHELLDER + const u32 gMonFrontPic_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/anim_front.4bpp.lz"); + const u32 gMonPalette_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/normal.gbapal.lz"); + const u32 gMonBackPic_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/back.4bpp.lz"); + const u32 gMonShinyPalette_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/shiny.gbapal.lz"); + const u8 gMonIcon_Shellder[] = INCBIN_U8("graphics/pokemon/shellder/icon.4bpp"); + const u8 gMonFootprint_Shellder[] = INCBIN_U8("graphics/pokemon/shellder/footprint.1bpp"); + + const u32 gMonFrontPic_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/anim_front.4bpp.lz"); + const u32 gMonPalette_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/normal.gbapal.lz"); + const u32 gMonBackPic_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/back.4bpp.lz"); + const u32 gMonShinyPalette_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/shiny.gbapal.lz"); + const u8 gMonIcon_Cloyster[] = INCBIN_U8("graphics/pokemon/cloyster/icon.4bpp"); + const u8 gMonFootprint_Cloyster[] = INCBIN_U8("graphics/pokemon/cloyster/footprint.1bpp"); +#endif //P_FAMILY_SHELLDER + +#if P_FAMILY_GASTLY + const u32 gMonFrontPic_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/anim_front.4bpp.lz"); + const u32 gMonPalette_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/normal.gbapal.lz"); + const u32 gMonBackPic_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/back.4bpp.lz"); + const u32 gMonShinyPalette_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/shiny.gbapal.lz"); + const u8 gMonIcon_Gastly[] = INCBIN_U8("graphics/pokemon/gastly/icon.4bpp"); + const u8 gMonFootprint_Gastly[] = INCBIN_U8("graphics/pokemon/gastly/footprint.1bpp"); + + const u32 gMonFrontPic_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/anim_front.4bpp.lz"); + const u32 gMonPalette_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/normal.gbapal.lz"); + const u32 gMonBackPic_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/back.4bpp.lz"); + const u32 gMonShinyPalette_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/shiny.gbapal.lz"); + const u8 gMonIcon_Haunter[] = INCBIN_U8("graphics/pokemon/haunter/icon.4bpp"); + const u8 gMonFootprint_Haunter[] = INCBIN_U8("graphics/pokemon/haunter/footprint.1bpp"); + + const u32 gMonFrontPic_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/anim_front.4bpp.lz"); + const u32 gMonPalette_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/normal.gbapal.lz"); + const u32 gMonBackPic_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/back.4bpp.lz"); + const u32 gMonShinyPalette_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/shiny.gbapal.lz"); + const u8 gMonIcon_Gengar[] = INCBIN_U8("graphics/pokemon/gengar/icon.4bpp"); + const u8 gMonFootprint_Gengar[] = INCBIN_U8("graphics/pokemon/gengar/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_GengarMega[] = INCBIN_U32("graphics/pokemon/gengar/mega/front.4bpp.lz"); + const u32 gMonPalette_GengarMega[] = INCBIN_U32("graphics/pokemon/gengar/mega/normal.gbapal.lz"); + const u32 gMonBackPic_GengarMega[] = INCBIN_U32("graphics/pokemon/gengar/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_GengarMega[] = INCBIN_U32("graphics/pokemon/gengar/mega/shiny.gbapal.lz"); + const u8 gMonIcon_GengarMega[] = INCBIN_U8("graphics/pokemon/gengar/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_GengarGigantamax[] = INCBIN_U32("graphics/pokemon/gengar/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_GengarGigantamax[] = INCBIN_U32("graphics/pokemon/gengar/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_GengarGigantamax[] = INCBIN_U32("graphics/pokemon/gengar/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_GengarGigantamax[] = INCBIN_U32("graphics/pokemon/gengar/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_GengarGigantamax[] = INCBIN_U8("graphics/pokemon/gengar/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_GASTLY + +#if P_FAMILY_ONIX + const u32 gMonFrontPic_Onix[] = INCBIN_U32("graphics/pokemon/onix/anim_front.4bpp.lz"); + const u32 gMonPalette_Onix[] = INCBIN_U32("graphics/pokemon/onix/normal.gbapal.lz"); + const u32 gMonBackPic_Onix[] = INCBIN_U32("graphics/pokemon/onix/back.4bpp.lz"); + const u32 gMonShinyPalette_Onix[] = INCBIN_U32("graphics/pokemon/onix/shiny.gbapal.lz"); + const u8 gMonIcon_Onix[] = INCBIN_U8("graphics/pokemon/onix/icon.4bpp"); + const u8 gMonFootprint_Onix[] = INCBIN_U8("graphics/pokemon/onix/footprint.1bpp"); + +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/anim_front.4bpp.lz"); + const u32 gMonPalette_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/normal.gbapal.lz"); + const u32 gMonBackPic_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/back.4bpp.lz"); + const u32 gMonShinyPalette_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/shiny.gbapal.lz"); + const u8 gMonIcon_Steelix[] = INCBIN_U8("graphics/pokemon/steelix/icon.4bpp"); + const u8 gMonFootprint_Steelix[] = INCBIN_U8("graphics/pokemon/steelix/footprint.1bpp"); + + const u32 gMonFrontPic_SteelixF[] = INCBIN_U32("graphics/pokemon/steelix/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_SteelixF[] = INCBIN_U32("graphics/pokemon/steelix/backf.4bpp.lz"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_SteelixMega[] = INCBIN_U32("graphics/pokemon/steelix/mega/front.4bpp.lz"); + const u32 gMonPalette_SteelixMega[] = INCBIN_U32("graphics/pokemon/steelix/mega/normal.gbapal.lz"); + const u32 gMonBackPic_SteelixMega[] = INCBIN_U32("graphics/pokemon/steelix/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_SteelixMega[] = INCBIN_U32("graphics/pokemon/steelix/mega/shiny.gbapal.lz"); + const u8 gMonIcon_SteelixMega[] = INCBIN_U8("graphics/pokemon/steelix/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ONIX + +#if P_FAMILY_DROWZEE + const u32 gMonFrontPic_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/anim_front.4bpp.lz"); + const u32 gMonPalette_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/normal.gbapal.lz"); + const u32 gMonBackPic_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/back.4bpp.lz"); + const u32 gMonShinyPalette_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/shiny.gbapal.lz"); + const u8 gMonIcon_Drowzee[] = INCBIN_U8("graphics/pokemon/drowzee/icon.4bpp"); + const u8 gMonFootprint_Drowzee[] = INCBIN_U8("graphics/pokemon/drowzee/footprint.1bpp"); + + const u32 gMonFrontPic_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/anim_front.4bpp.lz"); + const u32 gMonPalette_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/normal.gbapal.lz"); + const u32 gMonBackPic_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/back.4bpp.lz"); + const u32 gMonShinyPalette_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/shiny.gbapal.lz"); + const u8 gMonIcon_Hypno[] = INCBIN_U8("graphics/pokemon/hypno/icon.4bpp"); + const u8 gMonFootprint_Hypno[] = INCBIN_U8("graphics/pokemon/hypno/footprint.1bpp"); + + const u32 gMonFrontPic_HypnoF[] = INCBIN_U32("graphics/pokemon/hypno/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_HypnoF[] = INCBIN_U32("graphics/pokemon/hypno/backf.4bpp.lz"); +#endif //P_FAMILY_DROWZEE + +#if P_FAMILY_KRABBY + const u32 gMonFrontPic_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/anim_front.4bpp.lz"); + const u32 gMonPalette_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/normal.gbapal.lz"); + const u32 gMonBackPic_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/back.4bpp.lz"); + const u32 gMonShinyPalette_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/shiny.gbapal.lz"); + const u8 gMonIcon_Krabby[] = INCBIN_U8("graphics/pokemon/krabby/icon.4bpp"); + const u8 gMonFootprint_Krabby[] = INCBIN_U8("graphics/pokemon/krabby/footprint.1bpp"); + + const u32 gMonFrontPic_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/anim_front.4bpp.lz"); + const u32 gMonPalette_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/normal.gbapal.lz"); + const u32 gMonBackPic_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/back.4bpp.lz"); + const u32 gMonShinyPalette_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/shiny.gbapal.lz"); + const u8 gMonIcon_Kingler[] = INCBIN_U8("graphics/pokemon/kingler/icon.4bpp"); + const u8 gMonFootprint_Kingler[] = INCBIN_U8("graphics/pokemon/kingler/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_KinglerGigantamax[] = INCBIN_U32("graphics/pokemon/kingler/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_KinglerGigantamax[] = INCBIN_U32("graphics/pokemon/kingler/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_KinglerGigantamax[] = INCBIN_U32("graphics/pokemon/kingler/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_KinglerGigantamax[] = INCBIN_U32("graphics/pokemon/kingler/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_KinglerGigantamax[] = INCBIN_U8("graphics/pokemon/kingler/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_KRABBY + +#if P_FAMILY_VOLTORB + const u32 gMonFrontPic_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/anim_front.4bpp.lz"); + const u32 gMonPalette_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/normal.gbapal.lz"); + const u32 gMonBackPic_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/back.4bpp.lz"); + const u32 gMonShinyPalette_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/shiny.gbapal.lz"); + const u8 gMonIcon_Voltorb[] = INCBIN_U8("graphics/pokemon/voltorb/icon.4bpp"); + const u8 gMonFootprint_Voltorb[] = INCBIN_U8("graphics/pokemon/voltorb/footprint.1bpp"); + + const u32 gMonFrontPic_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/anim_front.4bpp.lz"); + const u32 gMonPalette_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/normal.gbapal.lz"); + const u32 gMonBackPic_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/back.4bpp.lz"); + const u32 gMonShinyPalette_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/shiny.gbapal.lz"); + const u8 gMonIcon_Electrode[] = INCBIN_U8("graphics/pokemon/electrode/icon.4bpp"); + const u8 gMonFootprint_Electrode[] = INCBIN_U8("graphics/pokemon/electrode/footprint.1bpp"); + +#if P_HISUIAN_FORMS + const u32 gMonFrontPic_VoltorbHisuian[] = INCBIN_U32("graphics/pokemon/voltorb/hisuian/front.4bpp.lz"); + const u32 gMonPalette_VoltorbHisuian[] = INCBIN_U32("graphics/pokemon/voltorb/hisuian/normal.gbapal.lz"); + const u32 gMonBackPic_VoltorbHisuian[] = INCBIN_U32("graphics/pokemon/voltorb/hisuian/back.4bpp.lz"); + const u32 gMonShinyPalette_VoltorbHisuian[] = INCBIN_U32("graphics/pokemon/voltorb/hisuian/shiny.gbapal.lz"); + const u8 gMonIcon_VoltorbHisuian[] = INCBIN_U8("graphics/pokemon/voltorb/hisuian/icon.4bpp"); + + const u32 gMonFrontPic_ElectrodeHisuian[] = INCBIN_U32("graphics/pokemon/electrode/hisuian/front.4bpp.lz"); + const u32 gMonPalette_ElectrodeHisuian[] = INCBIN_U32("graphics/pokemon/electrode/hisuian/normal.gbapal.lz"); + const u32 gMonBackPic_ElectrodeHisuian[] = INCBIN_U32("graphics/pokemon/electrode/hisuian/back.4bpp.lz"); + const u32 gMonShinyPalette_ElectrodeHisuian[] = INCBIN_U32("graphics/pokemon/electrode/hisuian/shiny.gbapal.lz"); + const u8 gMonIcon_ElectrodeHisuian[] = INCBIN_U8("graphics/pokemon/electrode/hisuian/icon.4bpp"); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_VOLTORB + +#if P_FAMILY_EXEGGCUTE + const u32 gMonFrontPic_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/anim_front.4bpp.lz"); + const u32 gMonPalette_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/normal.gbapal.lz"); + const u32 gMonBackPic_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/back.4bpp.lz"); + const u32 gMonShinyPalette_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/shiny.gbapal.lz"); + const u8 gMonIcon_Exeggcute[] = INCBIN_U8("graphics/pokemon/exeggcute/icon.4bpp"); + const u8 gMonFootprint_Exeggcute[] = INCBIN_U8("graphics/pokemon/exeggcute/footprint.1bpp"); + + const u32 gMonFrontPic_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/anim_front.4bpp.lz"); + const u32 gMonPalette_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/normal.gbapal.lz"); + const u32 gMonBackPic_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/back.4bpp.lz"); + const u32 gMonShinyPalette_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/shiny.gbapal.lz"); + const u8 gMonIcon_Exeggutor[] = INCBIN_U8("graphics/pokemon/exeggutor/icon.4bpp"); + const u8 gMonFootprint_Exeggutor[] = INCBIN_U8("graphics/pokemon/exeggutor/footprint.1bpp"); + +#if P_ALOLAN_FORMS + const u32 gMonFrontPic_ExeggutorAlolan[] = INCBIN_U32("graphics/pokemon/exeggutor/alolan/anim_front.4bpp.lz"); + const u32 gMonPalette_ExeggutorAlolan[] = INCBIN_U32("graphics/pokemon/exeggutor/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_ExeggutorAlolan[] = INCBIN_U32("graphics/pokemon/exeggutor/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_ExeggutorAlolan[] = INCBIN_U32("graphics/pokemon/exeggutor/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_ExeggutorAlolan[] = INCBIN_U8("graphics/pokemon/exeggutor/alolan/icon.4bpp"); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_EXEGGCUTE + +#if P_FAMILY_CUBONE + const u32 gMonFrontPic_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/anim_front.4bpp.lz"); + const u32 gMonPalette_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/normal.gbapal.lz"); + const u32 gMonBackPic_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/back.4bpp.lz"); + const u32 gMonShinyPalette_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/shiny.gbapal.lz"); + const u8 gMonIcon_Cubone[] = INCBIN_U8("graphics/pokemon/cubone/icon.4bpp"); + const u8 gMonFootprint_Cubone[] = INCBIN_U8("graphics/pokemon/cubone/footprint.1bpp"); + + const u32 gMonFrontPic_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/anim_front.4bpp.lz"); + const u32 gMonPalette_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/normal.gbapal.lz"); + const u32 gMonBackPic_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/back.4bpp.lz"); + const u32 gMonShinyPalette_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/shiny.gbapal.lz"); + const u8 gMonIcon_Marowak[] = INCBIN_U8("graphics/pokemon/marowak/icon.4bpp"); + const u8 gMonFootprint_Marowak[] = INCBIN_U8("graphics/pokemon/marowak/footprint.1bpp"); + +#if P_ALOLAN_FORMS + const u32 gMonFrontPic_MarowakAlolan[] = INCBIN_U32("graphics/pokemon/marowak/alolan/front.4bpp.lz"); + const u32 gMonPalette_MarowakAlolan[] = INCBIN_U32("graphics/pokemon/marowak/alolan/normal.gbapal.lz"); + const u32 gMonBackPic_MarowakAlolan[] = INCBIN_U32("graphics/pokemon/marowak/alolan/back.4bpp.lz"); + const u32 gMonShinyPalette_MarowakAlolan[] = INCBIN_U32("graphics/pokemon/marowak/alolan/shiny.gbapal.lz"); + const u8 gMonIcon_MarowakAlolan[] = INCBIN_U8("graphics/pokemon/marowak/alolan/icon.4bpp"); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_CUBONE + +#if P_FAMILY_HITMONS +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/anim_front.4bpp.lz"); + const u32 gMonPalette_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/normal.gbapal.lz"); + const u32 gMonBackPic_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/back.4bpp.lz"); + const u32 gMonShinyPalette_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/shiny.gbapal.lz"); + const u8 gMonIcon_Tyrogue[] = INCBIN_U8("graphics/pokemon/tyrogue/icon.4bpp"); + const u8 gMonFootprint_Tyrogue[] = INCBIN_U8("graphics/pokemon/tyrogue/footprint.1bpp"); +#endif //P_GEN_2_CROSS_EVOS + + const u32 gMonFrontPic_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/anim_front.4bpp.lz"); + const u32 gMonPalette_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/normal.gbapal.lz"); + const u32 gMonBackPic_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/back.4bpp.lz"); + const u32 gMonShinyPalette_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/shiny.gbapal.lz"); + const u8 gMonIcon_Hitmonlee[] = INCBIN_U8("graphics/pokemon/hitmonlee/icon.4bpp"); + const u8 gMonFootprint_Hitmonlee[] = INCBIN_U8("graphics/pokemon/hitmonlee/footprint.1bpp"); + + const u32 gMonFrontPic_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/anim_front.4bpp.lz"); + const u32 gMonPalette_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/normal.gbapal.lz"); + const u32 gMonBackPic_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/back.4bpp.lz"); + const u32 gMonShinyPalette_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/shiny.gbapal.lz"); + const u8 gMonIcon_Hitmonchan[] = INCBIN_U8("graphics/pokemon/hitmonchan/icon.4bpp"); + const u8 gMonFootprint_Hitmonchan[] = INCBIN_U8("graphics/pokemon/hitmonchan/footprint.1bpp"); + +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/anim_front.4bpp.lz"); + const u32 gMonPalette_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/normal.gbapal.lz"); + const u32 gMonBackPic_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/back.4bpp.lz"); + const u32 gMonShinyPalette_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/shiny.gbapal.lz"); + const u8 gMonIcon_Hitmontop[] = INCBIN_U8("graphics/pokemon/hitmontop/icon.4bpp"); + const u8 gMonFootprint_Hitmontop[] = INCBIN_U8("graphics/pokemon/hitmontop/footprint.1bpp"); +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HITMONS + +#if P_FAMILY_LICKITUNG + const u32 gMonFrontPic_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/anim_front.4bpp.lz"); + const u32 gMonPalette_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/normal.gbapal.lz"); + const u32 gMonBackPic_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/back.4bpp.lz"); + const u32 gMonShinyPalette_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/shiny.gbapal.lz"); + const u8 gMonIcon_Lickitung[] = INCBIN_U8("graphics/pokemon/lickitung/icon.4bpp"); + const u8 gMonFootprint_Lickitung[] = INCBIN_U8("graphics/pokemon/lickitung/footprint.1bpp"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Lickilicky[] = INCBIN_U32("graphics/pokemon/lickilicky/anim_front.4bpp.lz"); + const u32 gMonPalette_Lickilicky[] = INCBIN_U32("graphics/pokemon/lickilicky/normal.gbapal.lz"); + const u32 gMonBackPic_Lickilicky[] = INCBIN_U32("graphics/pokemon/lickilicky/back.4bpp.lz"); + const u32 gMonShinyPalette_Lickilicky[] = INCBIN_U32("graphics/pokemon/lickilicky/shiny.gbapal.lz"); + const u8 gMonIcon_Lickilicky[] = INCBIN_U8("graphics/pokemon/lickilicky/icon.4bpp"); + const u8 gMonFootprint_Lickilicky[] = INCBIN_U8("graphics/pokemon/lickilicky/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_LICKITUNG + +#if P_FAMILY_KOFFING + const u32 gMonFrontPic_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/anim_front.4bpp.lz"); + const u32 gMonPalette_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/normal.gbapal.lz"); + const u32 gMonBackPic_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/back.4bpp.lz"); + const u32 gMonShinyPalette_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/shiny.gbapal.lz"); + const u8 gMonIcon_Koffing[] = INCBIN_U8("graphics/pokemon/koffing/icon.4bpp"); + const u8 gMonFootprint_Koffing[] = INCBIN_U8("graphics/pokemon/koffing/footprint.1bpp"); + + const u32 gMonFrontPic_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/anim_front.4bpp.lz"); + const u32 gMonPalette_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/normal.gbapal.lz"); + const u32 gMonBackPic_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/back.4bpp.lz"); + const u32 gMonShinyPalette_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/shiny.gbapal.lz"); + const u8 gMonIcon_Weezing[] = INCBIN_U8("graphics/pokemon/weezing/icon.4bpp"); + const u8 gMonFootprint_Weezing[] = INCBIN_U8("graphics/pokemon/weezing/footprint.1bpp"); + +#if P_GALARIAN_FORMS + const u32 gMonFrontPic_WeezingGalarian[] = INCBIN_U32("graphics/pokemon/weezing/galarian/front.4bpp.lz"); + const u32 gMonPalette_WeezingGalarian[] = INCBIN_U32("graphics/pokemon/weezing/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_WeezingGalarian[] = INCBIN_U32("graphics/pokemon/weezing/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_WeezingGalarian[] = INCBIN_U32("graphics/pokemon/weezing/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_WeezingGalarian[] = INCBIN_U8("graphics/pokemon/weezing/galarian/icon.4bpp"); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_KOFFING + +#if P_FAMILY_RHYHORN + const u32 gMonFrontPic_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/anim_front.4bpp.lz"); + const u32 gMonPalette_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/normal.gbapal.lz"); + const u32 gMonBackPic_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/back.4bpp.lz"); + const u32 gMonShinyPalette_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/shiny.gbapal.lz"); + const u8 gMonIcon_Rhyhorn[] = INCBIN_U8("graphics/pokemon/rhyhorn/icon.4bpp"); + const u8 gMonFootprint_Rhyhorn[] = INCBIN_U8("graphics/pokemon/rhyhorn/footprint.1bpp"); + + const u32 gMonFrontPic_RhyhornF[] = INCBIN_U32("graphics/pokemon/rhyhorn/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_RhyhornF[] = INCBIN_U32("graphics/pokemon/rhyhorn/backf.4bpp.lz"); + + const u32 gMonFrontPic_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/anim_front.4bpp.lz"); + const u32 gMonPalette_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/normal.gbapal.lz"); + const u32 gMonBackPic_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/back.4bpp.lz"); + const u32 gMonShinyPalette_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/shiny.gbapal.lz"); + const u8 gMonIcon_Rhydon[] = INCBIN_U8("graphics/pokemon/rhydon/icon.4bpp"); + const u8 gMonFootprint_Rhydon[] = INCBIN_U8("graphics/pokemon/rhydon/footprint.1bpp"); + + const u32 gMonFrontPic_RhydonF[] = INCBIN_U32("graphics/pokemon/rhydon/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_RhydonF[] = INCBIN_U32("graphics/pokemon/rhydon/backf.4bpp.lz"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Rhyperior[] = INCBIN_U32("graphics/pokemon/rhyperior/anim_front.4bpp.lz"); + const u32 gMonPalette_Rhyperior[] = INCBIN_U32("graphics/pokemon/rhyperior/normal.gbapal.lz"); + const u32 gMonBackPic_Rhyperior[] = INCBIN_U32("graphics/pokemon/rhyperior/back.4bpp.lz"); + const u32 gMonShinyPalette_Rhyperior[] = INCBIN_U32("graphics/pokemon/rhyperior/shiny.gbapal.lz"); + const u8 gMonIcon_Rhyperior[] = INCBIN_U8("graphics/pokemon/rhyperior/icon.4bpp"); + const u8 gMonFootprint_Rhyperior[] = INCBIN_U8("graphics/pokemon/rhyperior/footprint.1bpp"); + + const u32 gMonFrontPic_RhyperiorF[] = INCBIN_U32("graphics/pokemon/rhyperior/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_RhyperiorF[] = INCBIN_U32("graphics/pokemon/rhyperior/backf.4bpp.lz"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RHYHORN + +#if P_FAMILY_CHANSEY +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Happiny[] = INCBIN_U32("graphics/pokemon/happiny/anim_front.4bpp.lz"); + const u32 gMonPalette_Happiny[] = INCBIN_U32("graphics/pokemon/happiny/normal.gbapal.lz"); + const u32 gMonBackPic_Happiny[] = INCBIN_U32("graphics/pokemon/happiny/back.4bpp.lz"); + const u32 gMonShinyPalette_Happiny[] = INCBIN_U32("graphics/pokemon/happiny/shiny.gbapal.lz"); + const u8 gMonIcon_Happiny[] = INCBIN_U8("graphics/pokemon/happiny/icon.4bpp"); + const u8 gMonFootprint_Happiny[] = INCBIN_U8("graphics/pokemon/happiny/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS + + const u32 gMonFrontPic_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/anim_front.4bpp.lz"); + const u32 gMonPalette_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/normal.gbapal.lz"); + const u32 gMonBackPic_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/back.4bpp.lz"); + const u32 gMonShinyPalette_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/shiny.gbapal.lz"); + const u8 gMonIcon_Chansey[] = INCBIN_U8("graphics/pokemon/chansey/icon.4bpp"); + const u8 gMonFootprint_Chansey[] = INCBIN_U8("graphics/pokemon/chansey/footprint.1bpp"); + +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/anim_front.4bpp.lz"); + const u32 gMonPalette_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/normal.gbapal.lz"); + const u32 gMonBackPic_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/back.4bpp.lz"); + const u32 gMonShinyPalette_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/shiny.gbapal.lz"); + const u8 gMonIcon_Blissey[] = INCBIN_U8("graphics/pokemon/blissey/icon.4bpp"); + const u8 gMonFootprint_Blissey[] = INCBIN_U8("graphics/pokemon/blissey/footprint.1bpp"); +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_CHANSEY + +#if P_FAMILY_TANGELA + const u32 gMonFrontPic_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/anim_front.4bpp.lz"); + const u32 gMonPalette_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/normal.gbapal.lz"); + const u32 gMonBackPic_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/back.4bpp.lz"); + const u32 gMonShinyPalette_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/shiny.gbapal.lz"); + const u8 gMonIcon_Tangela[] = INCBIN_U8("graphics/pokemon/tangela/icon.4bpp"); + const u8 gMonFootprint_Tangela[] = INCBIN_U8("graphics/pokemon/tangela/footprint.1bpp"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Tangrowth[] = INCBIN_U32("graphics/pokemon/tangrowth/anim_front.4bpp.lz"); + const u32 gMonPalette_Tangrowth[] = INCBIN_U32("graphics/pokemon/tangrowth/normal.gbapal.lz"); + const u32 gMonBackPic_Tangrowth[] = INCBIN_U32("graphics/pokemon/tangrowth/back.4bpp.lz"); + const u32 gMonShinyPalette_Tangrowth[] = INCBIN_U32("graphics/pokemon/tangrowth/shiny.gbapal.lz"); + const u8 gMonIcon_Tangrowth[] = INCBIN_U8("graphics/pokemon/tangrowth/icon.4bpp"); + const u8 gMonFootprint_Tangrowth[] = INCBIN_U8("graphics/pokemon/tangrowth/footprint.1bpp"); + + const u32 gMonFrontPic_TangrowthF[] = INCBIN_U32("graphics/pokemon/tangrowth/anim_frontf.4bpp.lz"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TANGELA + +#if P_FAMILY_KANGASKHAN + const u32 gMonFrontPic_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/anim_front.4bpp.lz"); + const u32 gMonPalette_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/normal.gbapal.lz"); + const u32 gMonBackPic_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/back.4bpp.lz"); + const u32 gMonShinyPalette_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/shiny.gbapal.lz"); + const u8 gMonIcon_Kangaskhan[] = INCBIN_U8("graphics/pokemon/kangaskhan/icon.4bpp"); + const u8 gMonFootprint_Kangaskhan[] = INCBIN_U8("graphics/pokemon/kangaskhan/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_KangaskhanMega[] = INCBIN_U32("graphics/pokemon/kangaskhan/mega/front.4bpp.lz"); + const u32 gMonPalette_KangaskhanMega[] = INCBIN_U32("graphics/pokemon/kangaskhan/mega/normal.gbapal.lz"); + const u32 gMonBackPic_KangaskhanMega[] = INCBIN_U32("graphics/pokemon/kangaskhan/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_KangaskhanMega[] = INCBIN_U32("graphics/pokemon/kangaskhan/mega/shiny.gbapal.lz"); + const u8 gMonIcon_KangaskhanMega[] = INCBIN_U8("graphics/pokemon/kangaskhan/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_KANGASKHAN + +#if P_FAMILY_HORSEA + const u32 gMonFrontPic_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/anim_front.4bpp.lz"); + const u32 gMonPalette_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/normal.gbapal.lz"); + const u32 gMonBackPic_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/back.4bpp.lz"); + const u32 gMonShinyPalette_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/shiny.gbapal.lz"); + const u8 gMonIcon_Horsea[] = INCBIN_U8("graphics/pokemon/horsea/icon.4bpp"); + const u8 gMonFootprint_Horsea[] = INCBIN_U8("graphics/pokemon/horsea/footprint.1bpp"); + + const u32 gMonFrontPic_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/anim_front.4bpp.lz"); + const u32 gMonPalette_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/normal.gbapal.lz"); + const u32 gMonBackPic_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/back.4bpp.lz"); + const u32 gMonShinyPalette_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/shiny.gbapal.lz"); + const u8 gMonIcon_Seadra[] = INCBIN_U8("graphics/pokemon/seadra/icon.4bpp"); + const u8 gMonFootprint_Seadra[] = INCBIN_U8("graphics/pokemon/seadra/footprint.1bpp"); + +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/anim_front.4bpp.lz"); + const u32 gMonPalette_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/normal.gbapal.lz"); + const u32 gMonBackPic_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/back.4bpp.lz"); + const u32 gMonShinyPalette_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/shiny.gbapal.lz"); + const u8 gMonIcon_Kingdra[] = INCBIN_U8("graphics/pokemon/kingdra/icon.4bpp"); + const u8 gMonFootprint_Kingdra[] = INCBIN_U8("graphics/pokemon/kingdra/footprint.1bpp"); +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HORSEA + +#if P_FAMILY_GOLDEEN + const u32 gMonFrontPic_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/anim_front.4bpp.lz"); + const u32 gMonPalette_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/normal.gbapal.lz"); + const u32 gMonBackPic_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/back.4bpp.lz"); + const u32 gMonShinyPalette_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/shiny.gbapal.lz"); + const u8 gMonIcon_Goldeen[] = INCBIN_U8("graphics/pokemon/goldeen/icon.4bpp"); + const u8 gMonFootprint_Goldeen[] = INCBIN_U8("graphics/pokemon/goldeen/footprint.1bpp"); + + const u32 gMonFrontPic_GoldeenF[] = INCBIN_U32("graphics/pokemon/goldeen/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_GoldeenF[] = INCBIN_U32("graphics/pokemon/goldeen/backf.4bpp.lz"); + + const u32 gMonFrontPic_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/anim_front.4bpp.lz"); + const u32 gMonPalette_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/normal.gbapal.lz"); + const u32 gMonBackPic_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/back.4bpp.lz"); + const u32 gMonShinyPalette_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/shiny.gbapal.lz"); + const u8 gMonIcon_Seaking[] = INCBIN_U8("graphics/pokemon/seaking/icon.4bpp"); + const u8 gMonFootprint_Seaking[] = INCBIN_U8("graphics/pokemon/seaking/footprint.1bpp"); + + const u32 gMonFrontPic_SeakingF[] = INCBIN_U32("graphics/pokemon/seaking/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_SeakingF[] = INCBIN_U32("graphics/pokemon/seaking/backf.4bpp.lz"); +#endif //P_FAMILY_GOLDEEN + +#if P_FAMILY_STARYU + const u32 gMonFrontPic_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/anim_front.4bpp.lz"); + const u32 gMonPalette_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/normal.gbapal.lz"); + const u32 gMonBackPic_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/back.4bpp.lz"); + const u32 gMonShinyPalette_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/shiny.gbapal.lz"); + const u8 gMonIcon_Staryu[] = INCBIN_U8("graphics/pokemon/staryu/icon.4bpp"); + const u8 gMonFootprint_Staryu[] = INCBIN_U8("graphics/pokemon/staryu/footprint.1bpp"); + + const u32 gMonFrontPic_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/anim_front.4bpp.lz"); + const u32 gMonPalette_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/normal.gbapal.lz"); + const u32 gMonBackPic_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/back.4bpp.lz"); + const u32 gMonShinyPalette_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/shiny.gbapal.lz"); + const u8 gMonIcon_Starmie[] = INCBIN_U8("graphics/pokemon/starmie/icon.4bpp"); + const u8 gMonFootprint_Starmie[] = INCBIN_U8("graphics/pokemon/starmie/footprint.1bpp"); +#endif //P_FAMILY_STARYU + +#if P_FAMILY_MR_MIME +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_MimeJr[] = INCBIN_U32("graphics/pokemon/mime_jr/anim_front.4bpp.lz"); + const u32 gMonPalette_MimeJr[] = INCBIN_U32("graphics/pokemon/mime_jr/normal.gbapal.lz"); + const u32 gMonBackPic_MimeJr[] = INCBIN_U32("graphics/pokemon/mime_jr/back.4bpp.lz"); + const u32 gMonShinyPalette_MimeJr[] = INCBIN_U32("graphics/pokemon/mime_jr/shiny.gbapal.lz"); + const u8 gMonIcon_MimeJr[] = INCBIN_U8("graphics/pokemon/mime_jr/icon.4bpp"); + const u8 gMonFootprint_MimeJr[] = INCBIN_U8("graphics/pokemon/mime_jr/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS + + const u32 gMonFrontPic_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/anim_front.4bpp.lz"); + const u32 gMonPalette_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/normal.gbapal.lz"); + const u32 gMonBackPic_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/back.4bpp.lz"); + const u32 gMonShinyPalette_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/shiny.gbapal.lz"); + const u8 gMonIcon_MrMime[] = INCBIN_U8("graphics/pokemon/mr_mime/icon.4bpp"); + const u8 gMonFootprint_MrMime[] = INCBIN_U8("graphics/pokemon/mr_mime/footprint.1bpp"); + +#if P_GALARIAN_FORMS + const u32 gMonFrontPic_MrMimeGalarian[] = INCBIN_U32("graphics/pokemon/mr_mime/galarian/front.4bpp.lz"); + const u32 gMonPalette_MrMimeGalarian[] = INCBIN_U32("graphics/pokemon/mr_mime/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_MrMimeGalarian[] = INCBIN_U32("graphics/pokemon/mr_mime/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_MrMimeGalarian[] = INCBIN_U32("graphics/pokemon/mr_mime/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_MrMimeGalarian[] = INCBIN_U8("graphics/pokemon/mr_mime/galarian/icon.4bpp"); + + const u32 gMonFrontPic_MrRime[] = INCBIN_U32("graphics/pokemon/mr_rime/front.4bpp.lz"); + const u32 gMonPalette_MrRime[] = INCBIN_U32("graphics/pokemon/mr_rime/normal.gbapal.lz"); + const u32 gMonBackPic_MrRime[] = INCBIN_U32("graphics/pokemon/mr_rime/back.4bpp.lz"); + const u32 gMonShinyPalette_MrRime[] = INCBIN_U32("graphics/pokemon/mr_rime/shiny.gbapal.lz"); + const u8 gMonIcon_MrRime[] = INCBIN_U8("graphics/pokemon/mr_rime/icon.4bpp"); + const u8 gMonFootprint_MrRime[] = INCBIN_U8("graphics/pokemon/mr_rime/footprint.1bpp"); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MR_MIME + +#if P_FAMILY_SCYTHER + const u32 gMonFrontPic_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/anim_front.4bpp.lz"); + const u32 gMonPalette_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/normal.gbapal.lz"); + const u32 gMonBackPic_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/back.4bpp.lz"); + const u32 gMonShinyPalette_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/shiny.gbapal.lz"); + const u8 gMonIcon_Scyther[] = INCBIN_U8("graphics/pokemon/scyther/icon.4bpp"); + const u8 gMonFootprint_Scyther[] = INCBIN_U8("graphics/pokemon/scyther/footprint.1bpp"); + + const u32 gMonFrontPic_ScytherF[] = INCBIN_U32("graphics/pokemon/scyther/anim_frontf.4bpp.lz"); + +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/anim_front.4bpp.lz"); + const u32 gMonPalette_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/normal.gbapal.lz"); + const u32 gMonBackPic_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/back.4bpp.lz"); + const u32 gMonShinyPalette_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/shiny.gbapal.lz"); + const u8 gMonIcon_Scizor[] = INCBIN_U8("graphics/pokemon/scizor/icon.4bpp"); + const u8 gMonFootprint_Scizor[] = INCBIN_U8("graphics/pokemon/scizor/footprint.1bpp"); + + const u32 gMonFrontPic_ScizorF[] = INCBIN_U32("graphics/pokemon/scizor/anim_frontf.4bpp.lz"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_ScizorMega[] = INCBIN_U32("graphics/pokemon/scizor/mega/front.4bpp.lz"); + const u32 gMonPalette_ScizorMega[] = INCBIN_U32("graphics/pokemon/scizor/mega/normal.gbapal.lz"); + const u32 gMonBackPic_ScizorMega[] = INCBIN_U32("graphics/pokemon/scizor/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_ScizorMega[] = INCBIN_U32("graphics/pokemon/scizor/mega/shiny.gbapal.lz"); + const u8 gMonIcon_ScizorMega[] = INCBIN_U8("graphics/pokemon/scizor/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_2_CROSS_EVOS + +#if P_GEN_8_CROSS_EVOS + const u32 gMonFrontPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/front.4bpp.lz"); + const u32 gMonPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/normal.gbapal.lz"); + const u32 gMonBackPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/back.4bpp.lz"); + const u32 gMonShinyPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/shiny.gbapal.lz"); + const u8 gMonIcon_Kleavor[] = INCBIN_U8("graphics/pokemon/kleavor/icon.4bpp"); + //const u8 gMonFootprint_Kleavor[] = INCBIN_U8("graphics/pokemon/kleavor/footprint.1bpp"); +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_SCYTHER + +#if P_FAMILY_JYNX +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/anim_front.4bpp.lz"); + const u32 gMonPalette_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/normal.gbapal.lz"); + const u32 gMonBackPic_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/back.4bpp.lz"); + const u32 gMonShinyPalette_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/shiny.gbapal.lz"); + const u8 gMonIcon_Smoochum[] = INCBIN_U8("graphics/pokemon/smoochum/icon.4bpp"); + const u8 gMonFootprint_Smoochum[] = INCBIN_U8("graphics/pokemon/smoochum/footprint.1bpp"); +#endif //P_GEN_2_CROSS_EVOS + + const u32 gMonFrontPic_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/anim_front.4bpp.lz"); + const u32 gMonPalette_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/normal.gbapal.lz"); + const u32 gMonBackPic_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/back.4bpp.lz"); + const u32 gMonShinyPalette_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/shiny.gbapal.lz"); + const u8 gMonIcon_Jynx[] = INCBIN_U8("graphics/pokemon/jynx/icon.4bpp"); + const u8 gMonFootprint_Jynx[] = INCBIN_U8("graphics/pokemon/jynx/footprint.1bpp"); +#endif //P_FAMILY_JYNX + +#if P_FAMILY_ELECTABUZZ +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/anim_front.4bpp.lz"); + const u32 gMonPalette_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/normal.gbapal.lz"); + const u32 gMonBackPic_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/back.4bpp.lz"); + const u32 gMonShinyPalette_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/shiny.gbapal.lz"); + const u8 gMonIcon_Elekid[] = INCBIN_U8("graphics/pokemon/elekid/icon.4bpp"); + const u8 gMonFootprint_Elekid[] = INCBIN_U8("graphics/pokemon/elekid/footprint.1bpp"); +#endif //P_GEN_2_CROSS_EVOS + + const u32 gMonFrontPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/anim_front.4bpp.lz"); + const u32 gMonPalette_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/normal.gbapal.lz"); + const u32 gMonBackPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/back.4bpp.lz"); + const u32 gMonShinyPalette_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/shiny.gbapal.lz"); + const u8 gMonIcon_Electabuzz[] = INCBIN_U8("graphics/pokemon/electabuzz/icon.4bpp"); + const u8 gMonFootprint_Electabuzz[] = INCBIN_U8("graphics/pokemon/electabuzz/footprint.1bpp"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Electivire[] = INCBIN_U32("graphics/pokemon/electivire/anim_front.4bpp.lz"); + const u32 gMonPalette_Electivire[] = INCBIN_U32("graphics/pokemon/electivire/normal.gbapal.lz"); + const u32 gMonBackPic_Electivire[] = INCBIN_U32("graphics/pokemon/electivire/back.4bpp.lz"); + const u32 gMonShinyPalette_Electivire[] = INCBIN_U32("graphics/pokemon/electivire/shiny.gbapal.lz"); + const u8 gMonIcon_Electivire[] = INCBIN_U8("graphics/pokemon/electivire/icon.4bpp"); + const u8 gMonFootprint_Electivire[] = INCBIN_U8("graphics/pokemon/electivire/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ELECTABUZZ + +#if P_FAMILY_MAGMAR +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Magby[] = INCBIN_U32("graphics/pokemon/magby/anim_front.4bpp.lz"); + const u32 gMonPalette_Magby[] = INCBIN_U32("graphics/pokemon/magby/normal.gbapal.lz"); + const u32 gMonBackPic_Magby[] = INCBIN_U32("graphics/pokemon/magby/back.4bpp.lz"); + const u32 gMonShinyPalette_Magby[] = INCBIN_U32("graphics/pokemon/magby/shiny.gbapal.lz"); + const u8 gMonIcon_Magby[] = INCBIN_U8("graphics/pokemon/magby/icon.4bpp"); + const u8 gMonFootprint_Magby[] = INCBIN_U8("graphics/pokemon/magby/footprint.1bpp"); +#endif //P_GEN_2_CROSS_EVOS + + const u32 gMonFrontPic_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/anim_front.4bpp.lz"); + const u32 gMonPalette_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/normal.gbapal.lz"); + const u32 gMonBackPic_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/back.4bpp.lz"); + const u32 gMonShinyPalette_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/shiny.gbapal.lz"); + const u8 gMonIcon_Magmar[] = INCBIN_U8("graphics/pokemon/magmar/icon.4bpp"); + const u8 gMonFootprint_Magmar[] = INCBIN_U8("graphics/pokemon/magmar/footprint.1bpp"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Magmortar[] = INCBIN_U32("graphics/pokemon/magmortar/anim_front.4bpp.lz"); + const u32 gMonPalette_Magmortar[] = INCBIN_U32("graphics/pokemon/magmortar/normal.gbapal.lz"); + const u32 gMonBackPic_Magmortar[] = INCBIN_U32("graphics/pokemon/magmortar/back.4bpp.lz"); + const u32 gMonShinyPalette_Magmortar[] = INCBIN_U32("graphics/pokemon/magmortar/shiny.gbapal.lz"); + const u8 gMonIcon_Magmortar[] = INCBIN_U8("graphics/pokemon/magmortar/icon.4bpp"); + const u8 gMonFootprint_Magmortar[] = INCBIN_U8("graphics/pokemon/magmortar/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGMAR + +#if P_FAMILY_PINSIR + const u32 gMonFrontPic_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/anim_front.4bpp.lz"); + const u32 gMonPalette_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/normal.gbapal.lz"); + const u32 gMonBackPic_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/back.4bpp.lz"); + const u32 gMonShinyPalette_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/shiny.gbapal.lz"); + const u8 gMonIcon_Pinsir[] = INCBIN_U8("graphics/pokemon/pinsir/icon.4bpp"); + const u8 gMonFootprint_Pinsir[] = INCBIN_U8("graphics/pokemon/pinsir/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_PinsirMega[] = INCBIN_U32("graphics/pokemon/pinsir/mega/front.4bpp.lz"); + const u32 gMonPalette_PinsirMega[] = INCBIN_U32("graphics/pokemon/pinsir/mega/normal.gbapal.lz"); + const u32 gMonBackPic_PinsirMega[] = INCBIN_U32("graphics/pokemon/pinsir/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_PinsirMega[] = INCBIN_U32("graphics/pokemon/pinsir/mega/shiny.gbapal.lz"); + const u8 gMonIcon_PinsirMega[] = INCBIN_U8("graphics/pokemon/pinsir/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_PINSIR + +#if P_FAMILY_TAUROS + const u32 gMonFrontPic_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/anim_front.4bpp.lz"); + const u32 gMonPalette_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/normal.gbapal.lz"); + const u32 gMonBackPic_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/back.4bpp.lz"); + const u32 gMonShinyPalette_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/shiny.gbapal.lz"); + const u8 gMonIcon_Tauros[] = INCBIN_U8("graphics/pokemon/tauros/icon.4bpp"); + const u8 gMonFootprint_Tauros[] = INCBIN_U8("graphics/pokemon/tauros/footprint.1bpp"); + +#if P_PALDEAN_FORMS + const u32 gMonFrontPic_TaurosPaldeanCombatBreed[] = INCBIN_U32("graphics/pokemon/tauros/paldean_combat_breed/front.4bpp.lz"); + const u32 gMonPalette_TaurosPaldeanCombatBreed[] = INCBIN_U32("graphics/pokemon/tauros/paldean_combat_breed/normal.gbapal.lz"); + const u32 gMonBackPic_TaurosPaldeanCombatBreed[] = INCBIN_U32("graphics/pokemon/tauros/paldean_combat_breed/back.4bpp.lz"); + const u32 gMonShinyPalette_TaurosPaldeanCombatBreed[] = INCBIN_U32("graphics/pokemon/tauros/paldean_combat_breed/shiny.gbapal.lz"); + const u8 gMonIcon_TaurosPaldeanCombatBreed[] = INCBIN_U8("graphics/pokemon/tauros/paldean_combat_breed/icon.4bpp"); + + const u32 gMonFrontPic_TaurosPaldeanBlazeBreed[] = INCBIN_U32("graphics/pokemon/tauros/paldean_blaze_breed/front.4bpp.lz"); + const u32 gMonPalette_TaurosPaldeanBlazeBreed[] = INCBIN_U32("graphics/pokemon/tauros/paldean_blaze_breed/normal.gbapal.lz"); + const u32 gMonBackPic_TaurosPaldeanBlazeBreed[] = INCBIN_U32("graphics/pokemon/tauros/paldean_blaze_breed/back.4bpp.lz"); + const u32 gMonShinyPalette_TaurosPaldeanBlazeBreed[] = INCBIN_U32("graphics/pokemon/tauros/paldean_blaze_breed/shiny.gbapal.lz"); + const u8 gMonIcon_TaurosPaldeanBlazeBreed[] = INCBIN_U8("graphics/pokemon/tauros/paldean_blaze_breed/icon.4bpp"); + + const u32 gMonFrontPic_TaurosPaldeanAquaBreed[] = INCBIN_U32("graphics/pokemon/tauros/paldean_aqua_breed/front.4bpp.lz"); + const u32 gMonPalette_TaurosPaldeanAquaBreed[] = INCBIN_U32("graphics/pokemon/tauros/paldean_aqua_breed/normal.gbapal.lz"); + const u32 gMonBackPic_TaurosPaldeanAquaBreed[] = INCBIN_U32("graphics/pokemon/tauros/paldean_aqua_breed/back.4bpp.lz"); + const u32 gMonShinyPalette_TaurosPaldeanAquaBreed[] = INCBIN_U32("graphics/pokemon/tauros/paldean_aqua_breed/shiny.gbapal.lz"); + const u8 gMonIcon_TaurosPaldeanAquaBreed[] = INCBIN_U8("graphics/pokemon/tauros/paldean_aqua_breed/icon.4bpp"); +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_TAUROS + +#if P_FAMILY_MAGIKARP + const u32 gMonFrontPic_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/anim_front.4bpp.lz"); + const u32 gMonPalette_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/normal.gbapal.lz"); + const u32 gMonBackPic_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/back.4bpp.lz"); + const u32 gMonShinyPalette_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/shiny.gbapal.lz"); + const u8 gMonIcon_Magikarp[] = INCBIN_U8("graphics/pokemon/magikarp/icon.4bpp"); + const u8 gMonFootprint_Magikarp[] = INCBIN_U8("graphics/pokemon/magikarp/footprint.1bpp"); + + const u32 gMonFrontPic_MagikarpF[] = INCBIN_U32("graphics/pokemon/magikarp/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_MagikarpF[] = INCBIN_U32("graphics/pokemon/magikarp/backf.4bpp.lz"); + + const u32 gMonFrontPic_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/anim_front.4bpp.lz"); + const u32 gMonPalette_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/normal.gbapal.lz"); + const u32 gMonBackPic_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/back.4bpp.lz"); + const u32 gMonShinyPalette_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/shiny.gbapal.lz"); + const u8 gMonIcon_Gyarados[] = INCBIN_U8("graphics/pokemon/gyarados/icon.4bpp"); + const u8 gMonFootprint_Gyarados[] = INCBIN_U8("graphics/pokemon/gyarados/footprint.1bpp"); + + const u32 gMonFrontPic_GyaradosF[] = INCBIN_U32("graphics/pokemon/gyarados/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_GyaradosF[] = INCBIN_U32("graphics/pokemon/gyarados/backf.4bpp.lz"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_GyaradosMega[] = INCBIN_U32("graphics/pokemon/gyarados/mega/front.4bpp.lz"); + const u32 gMonPalette_GyaradosMega[] = INCBIN_U32("graphics/pokemon/gyarados/mega/normal.gbapal.lz"); + const u32 gMonBackPic_GyaradosMega[] = INCBIN_U32("graphics/pokemon/gyarados/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_GyaradosMega[] = INCBIN_U32("graphics/pokemon/gyarados/mega/shiny.gbapal.lz"); + const u8 gMonIcon_GyaradosMega[] = INCBIN_U8("graphics/pokemon/gyarados/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAGIKARP + +#if P_FAMILY_LAPRAS + const u32 gMonFrontPic_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/anim_front.4bpp.lz"); + const u32 gMonPalette_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/normal.gbapal.lz"); + const u32 gMonBackPic_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/back.4bpp.lz"); + const u32 gMonShinyPalette_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/shiny.gbapal.lz"); + const u8 gMonIcon_Lapras[] = INCBIN_U8("graphics/pokemon/lapras/icon.4bpp"); + const u8 gMonFootprint_Lapras[] = INCBIN_U8("graphics/pokemon/lapras/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_LaprasGigantamax[] = INCBIN_U32("graphics/pokemon/lapras/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_LaprasGigantamax[] = INCBIN_U32("graphics/pokemon/lapras/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_LaprasGigantamax[] = INCBIN_U32("graphics/pokemon/lapras/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_LaprasGigantamax[] = INCBIN_U32("graphics/pokemon/lapras/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_LaprasGigantamax[] = INCBIN_U8("graphics/pokemon/lapras/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_LAPRAS + +#if P_FAMILY_DITTO + const u32 gMonFrontPic_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/anim_front.4bpp.lz"); + const u32 gMonPalette_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/normal.gbapal.lz"); + const u32 gMonBackPic_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/back.4bpp.lz"); + const u32 gMonShinyPalette_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/shiny.gbapal.lz"); + const u8 gMonIcon_Ditto[] = INCBIN_U8("graphics/pokemon/ditto/icon.4bpp"); + const u8 gMonFootprint_Ditto[] = INCBIN_U8("graphics/pokemon/ditto/footprint.1bpp"); +#endif //P_FAMILY_DITTO + +#if P_FAMILY_EEVEE + const u32 gMonFrontPic_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/anim_front.4bpp.lz"); + const u32 gMonPalette_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/normal.gbapal.lz"); + const u32 gMonBackPic_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/back.4bpp.lz"); + const u32 gMonShinyPalette_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/shiny.gbapal.lz"); + const u8 gMonIcon_Eevee[] = INCBIN_U8("graphics/pokemon/eevee/icon.4bpp"); + const u8 gMonFootprint_Eevee[] = INCBIN_U8("graphics/pokemon/eevee/footprint.1bpp"); + + const u32 gMonFrontPic_EeveeF[] = INCBIN_U32("graphics/pokemon/eevee/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_EeveeF[] = INCBIN_U32("graphics/pokemon/eevee/backf.4bpp.lz"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_EeveeGigantamax[] = INCBIN_U32("graphics/pokemon/eevee/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_EeveeGigantamax[] = INCBIN_U32("graphics/pokemon/eevee/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_EeveeGigantamax[] = INCBIN_U32("graphics/pokemon/eevee/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_EeveeGigantamax[] = INCBIN_U32("graphics/pokemon/eevee/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_EeveeGigantamax[] = INCBIN_U8("graphics/pokemon/eevee/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS + + 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"); + const u32 gMonShinyPalette_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/shiny.gbapal.lz"); + const u8 gMonIcon_Vaporeon[] = INCBIN_U8("graphics/pokemon/vaporeon/icon.4bpp"); + const u8 gMonFootprint_Vaporeon[] = INCBIN_U8("graphics/pokemon/vaporeon/footprint.1bpp"); + + const u32 gMonFrontPic_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/anim_front.4bpp.lz"); + const u32 gMonPalette_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/normal.gbapal.lz"); + const u32 gMonBackPic_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/back.4bpp.lz"); + const u32 gMonShinyPalette_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/shiny.gbapal.lz"); + const u8 gMonIcon_Jolteon[] = INCBIN_U8("graphics/pokemon/jolteon/icon.4bpp"); + const u8 gMonFootprint_Jolteon[] = INCBIN_U8("graphics/pokemon/jolteon/footprint.1bpp"); + + const u32 gMonFrontPic_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/anim_front.4bpp.lz"); + const u32 gMonPalette_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/normal.gbapal.lz"); + const u32 gMonBackPic_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/back.4bpp.lz"); + const u32 gMonShinyPalette_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/shiny.gbapal.lz"); + const u8 gMonIcon_Flareon[] = INCBIN_U8("graphics/pokemon/flareon/icon.4bpp"); + const u8 gMonFootprint_Flareon[] = INCBIN_U8("graphics/pokemon/flareon/footprint.1bpp"); + +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/anim_front.4bpp.lz"); + const u32 gMonPalette_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/normal.gbapal.lz"); + const u32 gMonBackPic_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/back.4bpp.lz"); + const u32 gMonShinyPalette_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/shiny.gbapal.lz"); + const u8 gMonIcon_Espeon[] = INCBIN_U8("graphics/pokemon/espeon/icon.4bpp"); + const u8 gMonFootprint_Espeon[] = INCBIN_U8("graphics/pokemon/espeon/footprint.1bpp"); + + const u32 gMonFrontPic_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/anim_front.4bpp.lz"); + const u32 gMonPalette_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/normal.gbapal.lz"); + const u32 gMonBackPic_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/back.4bpp.lz"); + const u32 gMonShinyPalette_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/shiny.gbapal.lz"); + const u8 gMonIcon_Umbreon[] = INCBIN_U8("graphics/pokemon/umbreon/icon.4bpp"); + const u8 gMonFootprint_Umbreon[] = INCBIN_U8("graphics/pokemon/umbreon/footprint.1bpp"); +#endif //P_GEN_2_CROSS_EVOS + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Leafeon[] = INCBIN_U32("graphics/pokemon/leafeon/anim_front.4bpp.lz"); + const u32 gMonPalette_Leafeon[] = INCBIN_U32("graphics/pokemon/leafeon/normal.gbapal.lz"); + const u32 gMonBackPic_Leafeon[] = INCBIN_U32("graphics/pokemon/leafeon/back.4bpp.lz"); + const u32 gMonShinyPalette_Leafeon[] = INCBIN_U32("graphics/pokemon/leafeon/shiny.gbapal.lz"); + const u8 gMonIcon_Leafeon[] = INCBIN_U8("graphics/pokemon/leafeon/icon.4bpp"); + const u8 gMonFootprint_Leafeon[] = INCBIN_U8("graphics/pokemon/leafeon/footprint.1bpp"); + + const u32 gMonFrontPic_Glaceon[] = INCBIN_U32("graphics/pokemon/glaceon/anim_front.4bpp.lz"); + const u32 gMonPalette_Glaceon[] = INCBIN_U32("graphics/pokemon/glaceon/normal.gbapal.lz"); + const u32 gMonBackPic_Glaceon[] = INCBIN_U32("graphics/pokemon/glaceon/back.4bpp.lz"); + const u32 gMonShinyPalette_Glaceon[] = INCBIN_U32("graphics/pokemon/glaceon/shiny.gbapal.lz"); + const u8 gMonIcon_Glaceon[] = INCBIN_U8("graphics/pokemon/glaceon/icon.4bpp"); + const u8 gMonFootprint_Glaceon[] = INCBIN_U8("graphics/pokemon/glaceon/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS + +#if P_GEN_6_CROSS_EVOS + const u32 gMonFrontPic_Sylveon[] = INCBIN_U32("graphics/pokemon/sylveon/anim_front.4bpp.lz"); + const u32 gMonPalette_Sylveon[] = INCBIN_U32("graphics/pokemon/sylveon/normal.gbapal.lz"); + const u32 gMonBackPic_Sylveon[] = INCBIN_U32("graphics/pokemon/sylveon/back.4bpp.lz"); + const u32 gMonShinyPalette_Sylveon[] = INCBIN_U32("graphics/pokemon/sylveon/shiny.gbapal.lz"); + const u8 gMonIcon_Sylveon[] = INCBIN_U8("graphics/pokemon/sylveon/icon.4bpp"); + const u8 gMonFootprint_Sylveon[] = INCBIN_U8("graphics/pokemon/sylveon/footprint.1bpp"); +#endif //P_GEN_6_CROSS_EVOS +#endif //P_FAMILY_EEVEE + +#if P_FAMILY_PORYGON + const u32 gMonFrontPic_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/anim_front.4bpp.lz"); + const u32 gMonPalette_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/normal.gbapal.lz"); + const u32 gMonBackPic_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/back.4bpp.lz"); + const u32 gMonShinyPalette_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/shiny.gbapal.lz"); + const u8 gMonIcon_Porygon[] = INCBIN_U8("graphics/pokemon/porygon/icon.4bpp"); + const u8 gMonFootprint_Porygon[] = INCBIN_U8("graphics/pokemon/porygon/footprint.1bpp"); + +#if P_GEN_2_CROSS_EVOS + const u32 gMonFrontPic_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/anim_front.4bpp.lz"); + const u32 gMonPalette_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/normal.gbapal.lz"); + const u32 gMonBackPic_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/back.4bpp.lz"); + const u32 gMonShinyPalette_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/shiny.gbapal.lz"); + const u8 gMonIcon_Porygon2[] = INCBIN_U8("graphics/pokemon/porygon2/icon.4bpp"); + const u8 gMonFootprint_Porygon2[] = INCBIN_U8("graphics/pokemon/porygon2/footprint.1bpp"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_PorygonZ[] = INCBIN_U32("graphics/pokemon/porygon_z/anim_front.4bpp.lz"); + const u32 gMonPalette_PorygonZ[] = INCBIN_U32("graphics/pokemon/porygon_z/normal.gbapal.lz"); + const u32 gMonBackPic_PorygonZ[] = INCBIN_U32("graphics/pokemon/porygon_z/back.4bpp.lz"); + const u32 gMonShinyPalette_PorygonZ[] = INCBIN_U32("graphics/pokemon/porygon_z/shiny.gbapal.lz"); + const u8 gMonIcon_PorygonZ[] = INCBIN_U8("graphics/pokemon/porygon_z/icon.4bpp"); + const u8 gMonFootprint_PorygonZ[] = INCBIN_U8("graphics/pokemon/porygon_z/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_PORYGON + +#if P_FAMILY_OMANYTE + const u32 gMonFrontPic_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/anim_front.4bpp.lz"); + const u32 gMonPalette_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/normal.gbapal.lz"); + const u32 gMonBackPic_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/back.4bpp.lz"); + const u32 gMonShinyPalette_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/shiny.gbapal.lz"); + const u8 gMonIcon_Omanyte[] = INCBIN_U8("graphics/pokemon/omanyte/icon.4bpp"); + const u8 gMonFootprint_Omanyte[] = INCBIN_U8("graphics/pokemon/omanyte/footprint.1bpp"); + + const u32 gMonFrontPic_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/anim_front.4bpp.lz"); + const u32 gMonPalette_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/normal.gbapal.lz"); + const u32 gMonBackPic_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/back.4bpp.lz"); + const u32 gMonShinyPalette_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/shiny.gbapal.lz"); + const u8 gMonIcon_Omastar[] = INCBIN_U8("graphics/pokemon/omastar/icon.4bpp"); + const u8 gMonFootprint_Omastar[] = INCBIN_U8("graphics/pokemon/omastar/footprint.1bpp"); +#endif //P_FAMILY_OMANYTE + +#if P_FAMILY_KABUTO + const u32 gMonFrontPic_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/anim_front.4bpp.lz"); + const u32 gMonPalette_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/normal.gbapal.lz"); + const u32 gMonBackPic_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/back.4bpp.lz"); + const u32 gMonShinyPalette_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/shiny.gbapal.lz"); + const u8 gMonIcon_Kabuto[] = INCBIN_U8("graphics/pokemon/kabuto/icon.4bpp"); + const u8 gMonFootprint_Kabuto[] = INCBIN_U8("graphics/pokemon/kabuto/footprint.1bpp"); + + const u32 gMonFrontPic_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/anim_front.4bpp.lz"); + const u32 gMonPalette_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/normal.gbapal.lz"); + const u32 gMonBackPic_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/back.4bpp.lz"); + const u32 gMonShinyPalette_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/shiny.gbapal.lz"); + const u8 gMonIcon_Kabutops[] = INCBIN_U8("graphics/pokemon/kabutops/icon.4bpp"); + const u8 gMonFootprint_Kabutops[] = INCBIN_U8("graphics/pokemon/kabutops/footprint.1bpp"); +#endif //P_FAMILY_KABUTO + +#if P_FAMILY_AERODACTYL + const u32 gMonFrontPic_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/anim_front.4bpp.lz"); + const u32 gMonPalette_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/normal.gbapal.lz"); + const u32 gMonBackPic_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/back.4bpp.lz"); + const u32 gMonShinyPalette_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/shiny.gbapal.lz"); + const u8 gMonIcon_Aerodactyl[] = INCBIN_U8("graphics/pokemon/aerodactyl/icon.4bpp"); + const u8 gMonFootprint_Aerodactyl[] = INCBIN_U8("graphics/pokemon/aerodactyl/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_AerodactylMega[] = INCBIN_U32("graphics/pokemon/aerodactyl/mega/front.4bpp.lz"); + const u32 gMonPalette_AerodactylMega[] = INCBIN_U32("graphics/pokemon/aerodactyl/mega/normal.gbapal.lz"); + const u32 gMonBackPic_AerodactylMega[] = INCBIN_U32("graphics/pokemon/aerodactyl/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_AerodactylMega[] = INCBIN_U32("graphics/pokemon/aerodactyl/mega/shiny.gbapal.lz"); + const u8 gMonIcon_AerodactylMega[] = INCBIN_U8("graphics/pokemon/aerodactyl/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_AERODACTYL + +#if P_FAMILY_SNORLAX +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/anim_front.4bpp.lz"); + const u32 gMonPalette_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/normal.gbapal.lz"); + const u32 gMonBackPic_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/back.4bpp.lz"); + const u32 gMonShinyPalette_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/shiny.gbapal.lz"); + const u8 gMonIcon_Munchlax[] = INCBIN_U8("graphics/pokemon/munchlax/icon.4bpp"); + const u8 gMonFootprint_Munchlax[] = INCBIN_U8("graphics/pokemon/munchlax/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS + + const u32 gMonFrontPic_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/anim_front.4bpp.lz"); + const u32 gMonPalette_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/normal.gbapal.lz"); + const u32 gMonBackPic_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/back.4bpp.lz"); + const u32 gMonShinyPalette_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/shiny.gbapal.lz"); + const u8 gMonIcon_Snorlax[] = INCBIN_U8("graphics/pokemon/snorlax/icon.4bpp"); + const u8 gMonFootprint_Snorlax[] = INCBIN_U8("graphics/pokemon/snorlax/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_SnorlaxGigantamax[] = INCBIN_U32("graphics/pokemon/snorlax/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_SnorlaxGigantamax[] = INCBIN_U32("graphics/pokemon/snorlax/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_SnorlaxGigantamax[] = INCBIN_U32("graphics/pokemon/snorlax/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_SnorlaxGigantamax[] = INCBIN_U32("graphics/pokemon/snorlax/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_SnorlaxGigantamax[] = INCBIN_U8("graphics/pokemon/snorlax/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SNORLAX + +#if P_FAMILY_ARTICUNO + const u32 gMonFrontPic_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/anim_front.4bpp.lz"); + const u32 gMonPalette_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/normal.gbapal.lz"); + const u32 gMonBackPic_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/back.4bpp.lz"); + const u32 gMonShinyPalette_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/shiny.gbapal.lz"); + const u8 gMonIcon_Articuno[] = INCBIN_U8("graphics/pokemon/articuno/icon.4bpp"); + const u8 gMonFootprint_Articuno[] = INCBIN_U8("graphics/pokemon/articuno/footprint.1bpp"); + +#if P_GALARIAN_FORMS + const u32 gMonFrontPic_ArticunoGalarian[] = INCBIN_U32("graphics/pokemon/articuno/galarian/front.4bpp.lz"); + const u32 gMonPalette_ArticunoGalarian[] = INCBIN_U32("graphics/pokemon/articuno/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_ArticunoGalarian[] = INCBIN_U32("graphics/pokemon/articuno/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_ArticunoGalarian[] = INCBIN_U32("graphics/pokemon/articuno/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_ArticunoGalarian[] = INCBIN_U8("graphics/pokemon/articuno/galarian/icon.4bpp"); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ARTICUNO + +#if P_FAMILY_ZAPDOS + const u32 gMonFrontPic_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/anim_front.4bpp.lz"); + const u32 gMonPalette_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/normal.gbapal.lz"); + const u32 gMonBackPic_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/back.4bpp.lz"); + const u32 gMonShinyPalette_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/shiny.gbapal.lz"); + const u8 gMonIcon_Zapdos[] = INCBIN_U8("graphics/pokemon/zapdos/icon.4bpp"); + const u8 gMonFootprint_Zapdos[] = INCBIN_U8("graphics/pokemon/zapdos/footprint.1bpp"); + +#if P_GALARIAN_FORMS + const u32 gMonFrontPic_ZapdosGalarian[] = INCBIN_U32("graphics/pokemon/zapdos/galarian/front.4bpp.lz"); + const u32 gMonPalette_ZapdosGalarian[] = INCBIN_U32("graphics/pokemon/zapdos/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_ZapdosGalarian[] = INCBIN_U32("graphics/pokemon/zapdos/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_ZapdosGalarian[] = INCBIN_U32("graphics/pokemon/zapdos/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_ZapdosGalarian[] = INCBIN_U8("graphics/pokemon/zapdos/galarian/icon.4bpp"); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZAPDOS + +#if P_FAMILY_MOLTRES + const u32 gMonFrontPic_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/anim_front.4bpp.lz"); + const u32 gMonPalette_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/normal.gbapal.lz"); + const u32 gMonBackPic_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/back.4bpp.lz"); + const u32 gMonShinyPalette_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/shiny.gbapal.lz"); + const u8 gMonIcon_Moltres[] = INCBIN_U8("graphics/pokemon/moltres/icon.4bpp"); + const u8 gMonFootprint_Moltres[] = INCBIN_U8("graphics/pokemon/moltres/footprint.1bpp"); + +#if P_GALARIAN_FORMS + const u32 gMonFrontPic_MoltresGalarian[] = INCBIN_U32("graphics/pokemon/moltres/galarian/front.4bpp.lz"); + const u32 gMonPalette_MoltresGalarian[] = INCBIN_U32("graphics/pokemon/moltres/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_MoltresGalarian[] = INCBIN_U32("graphics/pokemon/moltres/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_MoltresGalarian[] = INCBIN_U32("graphics/pokemon/moltres/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_MoltresGalarian[] = INCBIN_U8("graphics/pokemon/moltres/galarian/icon.4bpp"); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MOLTRES + +#if P_FAMILY_DRATINI + const u32 gMonFrontPic_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/anim_front.4bpp.lz"); + const u32 gMonPalette_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/normal.gbapal.lz"); + const u32 gMonBackPic_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/back.4bpp.lz"); + const u32 gMonShinyPalette_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/shiny.gbapal.lz"); + const u8 gMonIcon_Dratini[] = INCBIN_U8("graphics/pokemon/dratini/icon.4bpp"); + const u8 gMonFootprint_Dratini[] = INCBIN_U8("graphics/pokemon/dratini/footprint.1bpp"); + + const u32 gMonFrontPic_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/anim_front.4bpp.lz"); + const u32 gMonPalette_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/normal.gbapal.lz"); + const u32 gMonBackPic_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/back.4bpp.lz"); + const u32 gMonShinyPalette_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/shiny.gbapal.lz"); + const u8 gMonIcon_Dragonair[] = INCBIN_U8("graphics/pokemon/dragonair/icon.4bpp"); + const u8 gMonFootprint_Dragonair[] = INCBIN_U8("graphics/pokemon/dragonair/footprint.1bpp"); + + const u32 gMonFrontPic_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/anim_front.4bpp.lz"); + const u32 gMonPalette_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/normal.gbapal.lz"); + const u32 gMonBackPic_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/back.4bpp.lz"); + const u32 gMonShinyPalette_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/shiny.gbapal.lz"); + const u8 gMonIcon_Dragonite[] = INCBIN_U8("graphics/pokemon/dragonite/icon.4bpp"); + const u8 gMonFootprint_Dragonite[] = INCBIN_U8("graphics/pokemon/dragonite/footprint.1bpp"); +#endif //P_FAMILY_DRATINI + +#if P_FAMILY_MEWTWO + const u32 gMonFrontPic_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/anim_front.4bpp.lz"); + const u32 gMonPalette_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/normal.gbapal.lz"); + const u32 gMonBackPic_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/back.4bpp.lz"); + const u32 gMonShinyPalette_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/shiny.gbapal.lz"); + const u8 gMonIcon_Mewtwo[] = INCBIN_U8("graphics/pokemon/mewtwo/icon.4bpp"); + const u8 gMonFootprint_Mewtwo[] = INCBIN_U8("graphics/pokemon/mewtwo/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_MewtwoMegaX[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_x/front.4bpp.lz"); + const u32 gMonPalette_MewtwoMegaX[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_x/normal.gbapal.lz"); + const u32 gMonBackPic_MewtwoMegaX[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_x/back.4bpp.lz"); + const u32 gMonShinyPalette_MewtwoMegaX[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_x/shiny.gbapal.lz"); + const u8 gMonIcon_MewtwoMegaX[] = INCBIN_U8("graphics/pokemon/mewtwo/mega_x/icon.4bpp"); + + const u32 gMonFrontPic_MewtwoMegaY[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_y/front.4bpp.lz"); + const u32 gMonPalette_MewtwoMegaY[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_y/normal.gbapal.lz"); + const u32 gMonBackPic_MewtwoMegaY[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_y/back.4bpp.lz"); + const u32 gMonShinyPalette_MewtwoMegaY[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_y/shiny.gbapal.lz"); + const u8 gMonIcon_MewtwoMegaY[] = INCBIN_U8("graphics/pokemon/mewtwo/mega_y/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MEWTWO + +#if P_FAMILY_MEW + const u32 gMonFrontPic_Mew[] = INCBIN_U32("graphics/pokemon/mew/anim_front.4bpp.lz"); + const u32 gMonPalette_Mew[] = INCBIN_U32("graphics/pokemon/mew/normal.gbapal.lz"); + const u32 gMonBackPic_Mew[] = INCBIN_U32("graphics/pokemon/mew/back.4bpp.lz"); + const u32 gMonShinyPalette_Mew[] = INCBIN_U32("graphics/pokemon/mew/shiny.gbapal.lz"); + const u8 gMonIcon_Mew[] = INCBIN_U8("graphics/pokemon/mew/icon.4bpp"); + const u8 gMonFootprint_Mew[] = INCBIN_U8("graphics/pokemon/mew/footprint.1bpp"); +#endif //P_FAMILY_MEW + +#if P_FAMILY_CHIKORITA + const u32 gMonFrontPic_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/anim_front.4bpp.lz"); + const u32 gMonPalette_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/normal.gbapal.lz"); + const u32 gMonBackPic_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/back.4bpp.lz"); + const u32 gMonShinyPalette_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/shiny.gbapal.lz"); + const u8 gMonIcon_Chikorita[] = INCBIN_U8("graphics/pokemon/chikorita/icon.4bpp"); + const u8 gMonFootprint_Chikorita[] = INCBIN_U8("graphics/pokemon/chikorita/footprint.1bpp"); + + const u32 gMonFrontPic_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/anim_front.4bpp.lz"); + const u32 gMonPalette_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/normal.gbapal.lz"); + const u32 gMonBackPic_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/back.4bpp.lz"); + const u32 gMonShinyPalette_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/shiny.gbapal.lz"); + const u8 gMonIcon_Bayleef[] = INCBIN_U8("graphics/pokemon/bayleef/icon.4bpp"); + const u8 gMonFootprint_Bayleef[] = INCBIN_U8("graphics/pokemon/bayleef/footprint.1bpp"); + + const u32 gMonFrontPic_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/anim_front.4bpp.lz"); + const u32 gMonPalette_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/normal.gbapal.lz"); + const u32 gMonBackPic_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/back.4bpp.lz"); + const u32 gMonShinyPalette_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/shiny.gbapal.lz"); + const u8 gMonIcon_Meganium[] = INCBIN_U8("graphics/pokemon/meganium/icon.4bpp"); + const u8 gMonFootprint_Meganium[] = INCBIN_U8("graphics/pokemon/meganium/footprint.1bpp"); + + const u32 gMonFrontPic_MeganiumF[] = INCBIN_U32("graphics/pokemon/meganium/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_MeganiumF[] = INCBIN_U32("graphics/pokemon/meganium/backf.4bpp.lz"); +#endif //P_FAMILY_CHIKORITA + +#if P_FAMILY_CYNDAQUIL + const u32 gMonFrontPic_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/anim_front.4bpp.lz"); + const u32 gMonPalette_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/normal.gbapal.lz"); + const u32 gMonBackPic_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/back.4bpp.lz"); + const u32 gMonShinyPalette_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/shiny.gbapal.lz"); + const u8 gMonIcon_Cyndaquil[] = INCBIN_U8("graphics/pokemon/cyndaquil/icon.4bpp"); + const u8 gMonFootprint_Cyndaquil[] = INCBIN_U8("graphics/pokemon/cyndaquil/footprint.1bpp"); + + const u32 gMonFrontPic_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/anim_front.4bpp.lz"); + const u32 gMonPalette_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/normal.gbapal.lz"); + const u32 gMonBackPic_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/back.4bpp.lz"); + const u32 gMonShinyPalette_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/shiny.gbapal.lz"); + const u8 gMonIcon_Quilava[] = INCBIN_U8("graphics/pokemon/quilava/icon.4bpp"); + const u8 gMonFootprint_Quilava[] = INCBIN_U8("graphics/pokemon/quilava/footprint.1bpp"); + + const u32 gMonFrontPic_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/anim_front.4bpp.lz"); + const u32 gMonPalette_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/normal.gbapal.lz"); + const u32 gMonBackPic_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/back.4bpp.lz"); + const u32 gMonShinyPalette_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/shiny.gbapal.lz"); + const u8 gMonIcon_Typhlosion[] = INCBIN_U8("graphics/pokemon/typhlosion/icon.4bpp"); + const u8 gMonFootprint_Typhlosion[] = INCBIN_U8("graphics/pokemon/typhlosion/footprint.1bpp"); + +#if P_HISUIAN_FORMS + const u32 gMonFrontPic_TyphlosionHisuian[] = INCBIN_U32("graphics/pokemon/typhlosion/hisuian/front.4bpp.lz"); + const u32 gMonPalette_TyphlosionHisuian[] = INCBIN_U32("graphics/pokemon/typhlosion/hisuian/normal.gbapal.lz"); + const u32 gMonBackPic_TyphlosionHisuian[] = INCBIN_U32("graphics/pokemon/typhlosion/hisuian/back.4bpp.lz"); + const u32 gMonShinyPalette_TyphlosionHisuian[] = INCBIN_U32("graphics/pokemon/typhlosion/hisuian/shiny.gbapal.lz"); + const u8 gMonIcon_TyphlosionHisuian[] = INCBIN_U8("graphics/pokemon/typhlosion/hisuian/icon.4bpp"); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_CYNDAQUIL + +#if P_FAMILY_TOTODILE + const u32 gMonFrontPic_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/anim_front.4bpp.lz"); + const u32 gMonPalette_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/normal.gbapal.lz"); + const u32 gMonBackPic_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/back.4bpp.lz"); + const u32 gMonShinyPalette_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/shiny.gbapal.lz"); + const u8 gMonIcon_Totodile[] = INCBIN_U8("graphics/pokemon/totodile/icon.4bpp"); + const u8 gMonFootprint_Totodile[] = INCBIN_U8("graphics/pokemon/totodile/footprint.1bpp"); + + const u32 gMonFrontPic_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/anim_front.4bpp.lz"); + const u32 gMonPalette_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/normal.gbapal.lz"); + const u32 gMonBackPic_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/back.4bpp.lz"); + const u32 gMonShinyPalette_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/shiny.gbapal.lz"); + const u8 gMonIcon_Croconaw[] = INCBIN_U8("graphics/pokemon/croconaw/icon.4bpp"); + const u8 gMonFootprint_Croconaw[] = INCBIN_U8("graphics/pokemon/croconaw/footprint.1bpp"); + + const u32 gMonFrontPic_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/anim_front.4bpp.lz"); + const u32 gMonPalette_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/normal.gbapal.lz"); + const u32 gMonBackPic_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/back.4bpp.lz"); + const u32 gMonShinyPalette_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/shiny.gbapal.lz"); + const u8 gMonIcon_Feraligatr[] = INCBIN_U8("graphics/pokemon/feraligatr/icon.4bpp"); + const u8 gMonFootprint_Feraligatr[] = INCBIN_U8("graphics/pokemon/feraligatr/footprint.1bpp"); +#endif //P_FAMILY_TOTODILE + +#if P_FAMILY_SENTRET + const u32 gMonFrontPic_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/anim_front.4bpp.lz"); + const u32 gMonPalette_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/normal.gbapal.lz"); + const u32 gMonBackPic_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/back.4bpp.lz"); + const u32 gMonShinyPalette_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/shiny.gbapal.lz"); + const u8 gMonIcon_Sentret[] = INCBIN_U8("graphics/pokemon/sentret/icon.4bpp"); + const u8 gMonFootprint_Sentret[] = INCBIN_U8("graphics/pokemon/sentret/footprint.1bpp"); + + const u32 gMonFrontPic_Furret[] = INCBIN_U32("graphics/pokemon/furret/anim_front.4bpp.lz"); + const u32 gMonPalette_Furret[] = INCBIN_U32("graphics/pokemon/furret/normal.gbapal.lz"); + const u32 gMonBackPic_Furret[] = INCBIN_U32("graphics/pokemon/furret/back.4bpp.lz"); + const u32 gMonShinyPalette_Furret[] = INCBIN_U32("graphics/pokemon/furret/shiny.gbapal.lz"); + const u8 gMonIcon_Furret[] = INCBIN_U8("graphics/pokemon/furret/icon.4bpp"); + const u8 gMonFootprint_Furret[] = INCBIN_U8("graphics/pokemon/furret/footprint.1bpp"); +#endif //P_FAMILY_SENTRET + +#if P_FAMILY_HOOTHOOT + const u32 gMonFrontPic_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/anim_front.4bpp.lz"); + const u32 gMonPalette_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/normal.gbapal.lz"); + const u32 gMonBackPic_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/back.4bpp.lz"); + const u32 gMonShinyPalette_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/shiny.gbapal.lz"); + const u8 gMonIcon_Hoothoot[] = INCBIN_U8("graphics/pokemon/hoothoot/icon.4bpp"); + const u8 gMonFootprint_Hoothoot[] = INCBIN_U8("graphics/pokemon/hoothoot/footprint.1bpp"); + + const u32 gMonFrontPic_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/anim_front.4bpp.lz"); + const u32 gMonPalette_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/normal.gbapal.lz"); + const u32 gMonBackPic_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/back.4bpp.lz"); + const u32 gMonShinyPalette_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/shiny.gbapal.lz"); + const u8 gMonIcon_Noctowl[] = INCBIN_U8("graphics/pokemon/noctowl/icon.4bpp"); + const u8 gMonFootprint_Noctowl[] = INCBIN_U8("graphics/pokemon/noctowl/footprint.1bpp"); +#endif //P_FAMILY_HOOTHOOT + +#if P_FAMILY_LEDYBA + const u32 gMonFrontPic_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/anim_front.4bpp.lz"); + const u32 gMonPalette_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/normal.gbapal.lz"); + const u32 gMonBackPic_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/back.4bpp.lz"); + const u32 gMonShinyPalette_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/shiny.gbapal.lz"); + const u8 gMonIcon_Ledyba[] = INCBIN_U8("graphics/pokemon/ledyba/icon.4bpp"); + const u8 gMonFootprint_Ledyba[] = INCBIN_U8("graphics/pokemon/ledyba/footprint.1bpp"); + + const u32 gMonFrontPic_LedybaF[] = INCBIN_U32("graphics/pokemon/ledyba/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_LedybaF[] = INCBIN_U32("graphics/pokemon/ledyba/backf.4bpp.lz"); + + const u32 gMonFrontPic_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/anim_front.4bpp.lz"); + const u32 gMonPalette_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/normal.gbapal.lz"); + const u32 gMonBackPic_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/back.4bpp.lz"); + const u32 gMonShinyPalette_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/shiny.gbapal.lz"); + const u8 gMonIcon_Ledian[] = INCBIN_U8("graphics/pokemon/ledian/icon.4bpp"); + const u8 gMonFootprint_Ledian[] = INCBIN_U8("graphics/pokemon/ledian/footprint.1bpp"); + + const u32 gMonFrontPic_LedianF[] = INCBIN_U32("graphics/pokemon/ledian/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_LedianF[] = INCBIN_U32("graphics/pokemon/ledian/backf.4bpp.lz"); +#endif //P_FAMILY_LEDYBA + +#if P_FAMILY_SPINARAK + const u32 gMonFrontPic_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/anim_front.4bpp.lz"); + const u32 gMonPalette_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/normal.gbapal.lz"); + const u32 gMonBackPic_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/back.4bpp.lz"); + const u32 gMonShinyPalette_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/shiny.gbapal.lz"); + const u8 gMonIcon_Spinarak[] = INCBIN_U8("graphics/pokemon/spinarak/icon.4bpp"); + const u8 gMonFootprint_Spinarak[] = INCBIN_U8("graphics/pokemon/spinarak/footprint.1bpp"); + + const u32 gMonFrontPic_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/anim_front.4bpp.lz"); + const u32 gMonPalette_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/normal.gbapal.lz"); + const u32 gMonBackPic_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/back.4bpp.lz"); + const u32 gMonShinyPalette_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/shiny.gbapal.lz"); + const u8 gMonIcon_Ariados[] = INCBIN_U8("graphics/pokemon/ariados/icon.4bpp"); + const u8 gMonFootprint_Ariados[] = INCBIN_U8("graphics/pokemon/ariados/footprint.1bpp"); +#endif //P_FAMILY_SPINARAK + +#if P_FAMILY_CHINCHOU + const u32 gMonFrontPic_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/anim_front.4bpp.lz"); + const u32 gMonPalette_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/normal.gbapal.lz"); + const u32 gMonBackPic_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/back.4bpp.lz"); + const u32 gMonShinyPalette_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/shiny.gbapal.lz"); + const u8 gMonIcon_Chinchou[] = INCBIN_U8("graphics/pokemon/chinchou/icon.4bpp"); + const u8 gMonFootprint_Chinchou[] = INCBIN_U8("graphics/pokemon/chinchou/footprint.1bpp"); + + const u32 gMonFrontPic_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/anim_front.4bpp.lz"); + const u32 gMonPalette_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/normal.gbapal.lz"); + const u32 gMonBackPic_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/back.4bpp.lz"); + const u32 gMonShinyPalette_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/shiny.gbapal.lz"); + const u8 gMonIcon_Lanturn[] = INCBIN_U8("graphics/pokemon/lanturn/icon.4bpp"); + const u8 gMonFootprint_Lanturn[] = INCBIN_U8("graphics/pokemon/lanturn/footprint.1bpp"); +#endif //P_FAMILY_CHINCHOU + +#if P_FAMILY_TOGEPI + const u32 gMonFrontPic_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/anim_front.4bpp.lz"); + const u32 gMonPalette_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/normal.gbapal.lz"); + const u32 gMonBackPic_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/back.4bpp.lz"); + const u32 gMonShinyPalette_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/shiny.gbapal.lz"); + const u8 gMonIcon_Togepi[] = INCBIN_U8("graphics/pokemon/togepi/icon.4bpp"); + const u8 gMonFootprint_Togepi[] = INCBIN_U8("graphics/pokemon/togepi/footprint.1bpp"); + + const u32 gMonFrontPic_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/anim_front.4bpp.lz"); + const u32 gMonPalette_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/normal.gbapal.lz"); + const u32 gMonBackPic_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/back.4bpp.lz"); + const u32 gMonShinyPalette_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/shiny.gbapal.lz"); + const u8 gMonIcon_Togetic[] = INCBIN_U8("graphics/pokemon/togetic/icon.4bpp"); + const u8 gMonFootprint_Togetic[] = INCBIN_U8("graphics/pokemon/togetic/footprint.1bpp"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Togekiss[] = INCBIN_U32("graphics/pokemon/togekiss/anim_front.4bpp.lz"); + const u32 gMonPalette_Togekiss[] = INCBIN_U32("graphics/pokemon/togekiss/normal.gbapal.lz"); + const u32 gMonBackPic_Togekiss[] = INCBIN_U32("graphics/pokemon/togekiss/back.4bpp.lz"); + const u32 gMonShinyPalette_Togekiss[] = INCBIN_U32("graphics/pokemon/togekiss/shiny.gbapal.lz"); + const u8 gMonIcon_Togekiss[] = INCBIN_U8("graphics/pokemon/togekiss/icon.4bpp"); + const u8 gMonFootprint_Togekiss[] = INCBIN_U8("graphics/pokemon/togekiss/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TOGEPI + +#if P_FAMILY_NATU + const u32 gMonFrontPic_Natu[] = INCBIN_U32("graphics/pokemon/natu/anim_front.4bpp.lz"); + const u32 gMonPalette_Natu[] = INCBIN_U32("graphics/pokemon/natu/normal.gbapal.lz"); + const u32 gMonBackPic_Natu[] = INCBIN_U32("graphics/pokemon/natu/back.4bpp.lz"); + const u32 gMonShinyPalette_Natu[] = INCBIN_U32("graphics/pokemon/natu/shiny.gbapal.lz"); + const u8 gMonIcon_Natu[] = INCBIN_U8("graphics/pokemon/natu/icon.4bpp"); + const u8 gMonFootprint_Natu[] = INCBIN_U8("graphics/pokemon/natu/footprint.1bpp"); + + const u32 gMonFrontPic_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/anim_front.4bpp.lz"); + const u32 gMonPalette_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/normal.gbapal.lz"); + const u32 gMonBackPic_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/back.4bpp.lz"); + const u32 gMonShinyPalette_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/shiny.gbapal.lz"); + const u8 gMonIcon_Xatu[] = INCBIN_U8("graphics/pokemon/xatu/icon.4bpp"); + const u8 gMonFootprint_Xatu[] = INCBIN_U8("graphics/pokemon/xatu/footprint.1bpp"); + + const u32 gMonFrontPic_XatuF[] = INCBIN_U32("graphics/pokemon/xatu/anim_frontf.4bpp.lz"); +#endif //P_FAMILY_NATU + +#if P_FAMILY_MAREEP + const u32 gMonFrontPic_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/anim_front.4bpp.lz"); + const u32 gMonPalette_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/normal.gbapal.lz"); + const u32 gMonBackPic_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/back.4bpp.lz"); + const u32 gMonShinyPalette_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/shiny.gbapal.lz"); + const u8 gMonIcon_Mareep[] = INCBIN_U8("graphics/pokemon/mareep/icon.4bpp"); + const u8 gMonFootprint_Mareep[] = INCBIN_U8("graphics/pokemon/mareep/footprint.1bpp"); + + const u32 gMonFrontPic_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/anim_front.4bpp.lz"); + const u32 gMonPalette_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/normal.gbapal.lz"); + const u32 gMonBackPic_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/back.4bpp.lz"); + const u32 gMonShinyPalette_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/shiny.gbapal.lz"); + const u8 gMonIcon_Flaaffy[] = INCBIN_U8("graphics/pokemon/flaaffy/icon.4bpp"); + const u8 gMonFootprint_Flaaffy[] = INCBIN_U8("graphics/pokemon/flaaffy/footprint.1bpp"); + + const u32 gMonFrontPic_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/anim_front.4bpp.lz"); + const u32 gMonPalette_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/normal.gbapal.lz"); + const u32 gMonBackPic_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/back.4bpp.lz"); + const u32 gMonShinyPalette_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/shiny.gbapal.lz"); + const u8 gMonIcon_Ampharos[] = INCBIN_U8("graphics/pokemon/ampharos/icon.4bpp"); + const u8 gMonFootprint_Ampharos[] = INCBIN_U8("graphics/pokemon/ampharos/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_AmpharosMega[] = INCBIN_U32("graphics/pokemon/ampharos/mega/front.4bpp.lz"); + const u32 gMonPalette_AmpharosMega[] = INCBIN_U32("graphics/pokemon/ampharos/mega/normal.gbapal.lz"); + const u32 gMonBackPic_AmpharosMega[] = INCBIN_U32("graphics/pokemon/ampharos/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_AmpharosMega[] = INCBIN_U32("graphics/pokemon/ampharos/mega/shiny.gbapal.lz"); + const u8 gMonIcon_AmpharosMega[] = INCBIN_U8("graphics/pokemon/ampharos/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAREEP + +#if P_FAMILY_MARILL +#if P_GEN_3_CROSS_EVOS + const u32 gMonFrontPic_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/anim_front.4bpp.lz"); + const u32 gMonPalette_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/normal.gbapal.lz"); + const u32 gMonBackPic_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/back.4bpp.lz"); + const u32 gMonShinyPalette_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/shiny.gbapal.lz"); + const u8 gMonIcon_Azurill[] = INCBIN_U8("graphics/pokemon/azurill/icon.4bpp"); + const u8 gMonFootprint_Azurill[] = INCBIN_U8("graphics/pokemon/azurill/footprint.1bpp"); +#endif //P_GEN_3_CROSS_EVOS + + const u32 gMonFrontPic_Marill[] = INCBIN_U32("graphics/pokemon/marill/anim_front.4bpp.lz"); + const u32 gMonPalette_Marill[] = INCBIN_U32("graphics/pokemon/marill/normal.gbapal.lz"); + const u32 gMonBackPic_Marill[] = INCBIN_U32("graphics/pokemon/marill/back.4bpp.lz"); + const u32 gMonShinyPalette_Marill[] = INCBIN_U32("graphics/pokemon/marill/shiny.gbapal.lz"); + const u8 gMonIcon_Marill[] = INCBIN_U8("graphics/pokemon/marill/icon.4bpp"); + const u8 gMonFootprint_Marill[] = INCBIN_U8("graphics/pokemon/marill/footprint.1bpp"); + + const u32 gMonFrontPic_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/anim_front.4bpp.lz"); + const u32 gMonPalette_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/normal.gbapal.lz"); + const u32 gMonBackPic_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/back.4bpp.lz"); + const u32 gMonShinyPalette_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/shiny.gbapal.lz"); + const u8 gMonIcon_Azumarill[] = INCBIN_U8("graphics/pokemon/azumarill/icon.4bpp"); + const u8 gMonFootprint_Azumarill[] = INCBIN_U8("graphics/pokemon/azumarill/footprint.1bpp"); +#endif //P_FAMILY_MARILL + +#if P_FAMILY_SUDOWOODO +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Bonsly[] = INCBIN_U32("graphics/pokemon/bonsly/anim_front.4bpp.lz"); + const u32 gMonPalette_Bonsly[] = INCBIN_U32("graphics/pokemon/bonsly/normal.gbapal.lz"); + const u32 gMonBackPic_Bonsly[] = INCBIN_U32("graphics/pokemon/bonsly/back.4bpp.lz"); + const u32 gMonShinyPalette_Bonsly[] = INCBIN_U32("graphics/pokemon/bonsly/shiny.gbapal.lz"); + const u8 gMonIcon_Bonsly[] = INCBIN_U8("graphics/pokemon/bonsly/icon.4bpp"); + const u8 gMonFootprint_Bonsly[] = INCBIN_U8("graphics/pokemon/bonsly/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS + + const u32 gMonFrontPic_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/anim_front.4bpp.lz"); + const u32 gMonPalette_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/normal.gbapal.lz"); + const u32 gMonBackPic_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/back.4bpp.lz"); + const u32 gMonShinyPalette_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/shiny.gbapal.lz"); + const u8 gMonIcon_Sudowoodo[] = INCBIN_U8("graphics/pokemon/sudowoodo/icon.4bpp"); + const u8 gMonFootprint_Sudowoodo[] = INCBIN_U8("graphics/pokemon/sudowoodo/footprint.1bpp"); + + const u32 gMonFrontPic_SudowoodoF[] = INCBIN_U32("graphics/pokemon/sudowoodo/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_SudowoodoF[] = INCBIN_U32("graphics/pokemon/sudowoodo/backf.4bpp.lz"); +#endif //P_FAMILY_SUDOWOODO + +#if P_FAMILY_HOPPIP + const u32 gMonFrontPic_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/anim_front.4bpp.lz"); + const u32 gMonPalette_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/normal.gbapal.lz"); + const u32 gMonBackPic_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/back.4bpp.lz"); + const u32 gMonShinyPalette_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/shiny.gbapal.lz"); + const u8 gMonIcon_Hoppip[] = INCBIN_U8("graphics/pokemon/hoppip/icon.4bpp"); + const u8 gMonFootprint_Hoppip[] = INCBIN_U8("graphics/pokemon/hoppip/footprint.1bpp"); + + const u32 gMonFrontPic_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/anim_front.4bpp.lz"); + const u32 gMonPalette_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/normal.gbapal.lz"); + const u32 gMonBackPic_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/back.4bpp.lz"); + const u32 gMonShinyPalette_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/shiny.gbapal.lz"); + const u8 gMonIcon_Skiploom[] = INCBIN_U8("graphics/pokemon/skiploom/icon.4bpp"); + const u8 gMonFootprint_Skiploom[] = INCBIN_U8("graphics/pokemon/skiploom/footprint.1bpp"); + + const u32 gMonFrontPic_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/anim_front.4bpp.lz"); + const u32 gMonPalette_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/normal.gbapal.lz"); + const u32 gMonBackPic_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/back.4bpp.lz"); + const u32 gMonShinyPalette_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/shiny.gbapal.lz"); + const u8 gMonIcon_Jumpluff[] = INCBIN_U8("graphics/pokemon/jumpluff/icon.4bpp"); + const u8 gMonFootprint_Jumpluff[] = INCBIN_U8("graphics/pokemon/jumpluff/footprint.1bpp"); +#endif //P_FAMILY_HOPPIP + +#if P_FAMILY_AIPOM + const u32 gMonFrontPic_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/anim_front.4bpp.lz"); + const u32 gMonPalette_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/normal.gbapal.lz"); + const u32 gMonBackPic_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/back.4bpp.lz"); + const u32 gMonShinyPalette_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/shiny.gbapal.lz"); + const u8 gMonIcon_Aipom[] = INCBIN_U8("graphics/pokemon/aipom/icon.4bpp"); + const u8 gMonFootprint_Aipom[] = INCBIN_U8("graphics/pokemon/aipom/footprint.1bpp"); + + const u32 gMonFrontPic_AipomF[] = INCBIN_U32("graphics/pokemon/aipom/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_AipomF[] = INCBIN_U32("graphics/pokemon/aipom/backf.4bpp.lz"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/anim_front.4bpp.lz"); + const u32 gMonPalette_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/normal.gbapal.lz"); + const u32 gMonBackPic_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/back.4bpp.lz"); + const u32 gMonShinyPalette_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/shiny.gbapal.lz"); + const u8 gMonIcon_Ambipom[] = INCBIN_U8("graphics/pokemon/ambipom/icon.4bpp"); + const u8 gMonFootprint_Ambipom[] = INCBIN_U8("graphics/pokemon/ambipom/footprint.1bpp"); + + const u32 gMonFrontPic_AmbipomF[] = INCBIN_U32("graphics/pokemon/ambipom/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_AmbipomF[] = INCBIN_U32("graphics/pokemon/ambipom/backf.4bpp.lz"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_AIPOM + +#if P_FAMILY_SUNKERN + const u32 gMonFrontPic_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/anim_front.4bpp.lz"); + const u32 gMonPalette_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/normal.gbapal.lz"); + const u32 gMonBackPic_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/back.4bpp.lz"); + const u32 gMonShinyPalette_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/shiny.gbapal.lz"); + const u8 gMonIcon_Sunkern[] = INCBIN_U8("graphics/pokemon/sunkern/icon.4bpp"); + const u8 gMonFootprint_Sunkern[] = INCBIN_U8("graphics/pokemon/sunkern/footprint.1bpp"); + + const u32 gMonFrontPic_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/anim_front.4bpp.lz"); + const u32 gMonPalette_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/normal.gbapal.lz"); + const u32 gMonBackPic_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/back.4bpp.lz"); + const u32 gMonShinyPalette_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/shiny.gbapal.lz"); + const u8 gMonIcon_Sunflora[] = INCBIN_U8("graphics/pokemon/sunflora/icon.4bpp"); + const u8 gMonFootprint_Sunflora[] = INCBIN_U8("graphics/pokemon/sunflora/footprint.1bpp"); +#endif //P_FAMILY_SUNKERN + +#if P_FAMILY_YANMA + const u32 gMonFrontPic_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/anim_front.4bpp.lz"); + const u32 gMonPalette_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/normal.gbapal.lz"); + const u32 gMonBackPic_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/back.4bpp.lz"); + const u32 gMonShinyPalette_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/shiny.gbapal.lz"); + const u8 gMonIcon_Yanma[] = INCBIN_U8("graphics/pokemon/yanma/icon.4bpp"); + const u8 gMonFootprint_Yanma[] = INCBIN_U8("graphics/pokemon/yanma/footprint.1bpp"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Yanmega[] = INCBIN_U32("graphics/pokemon/yanmega/anim_front.4bpp.lz"); + const u32 gMonPalette_Yanmega[] = INCBIN_U32("graphics/pokemon/yanmega/normal.gbapal.lz"); + const u32 gMonBackPic_Yanmega[] = INCBIN_U32("graphics/pokemon/yanmega/back.4bpp.lz"); + const u32 gMonShinyPalette_Yanmega[] = INCBIN_U32("graphics/pokemon/yanmega/shiny.gbapal.lz"); + const u8 gMonIcon_Yanmega[] = INCBIN_U8("graphics/pokemon/yanmega/icon.4bpp"); + const u8 gMonFootprint_Yanmega[] = INCBIN_U8("graphics/pokemon/yanmega/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_YANMA + +#if P_FAMILY_WOOPER + const u32 gMonFrontPic_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/anim_front.4bpp.lz"); + const u32 gMonPalette_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/normal.gbapal.lz"); + const u32 gMonBackPic_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/back.4bpp.lz"); + const u32 gMonShinyPalette_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/shiny.gbapal.lz"); + const u8 gMonIcon_Wooper[] = INCBIN_U8("graphics/pokemon/wooper/icon.4bpp"); + const u8 gMonFootprint_Wooper[] = INCBIN_U8("graphics/pokemon/wooper/footprint.1bpp"); + + const u32 gMonFrontPic_WooperF[] = INCBIN_U32("graphics/pokemon/wooper/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_WooperF[] = INCBIN_U32("graphics/pokemon/wooper/backf.4bpp.lz"); + + const u32 gMonFrontPic_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/anim_front.4bpp.lz"); + const u32 gMonPalette_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/normal.gbapal.lz"); + const u32 gMonBackPic_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/back.4bpp.lz"); + const u32 gMonShinyPalette_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/shiny.gbapal.lz"); + const u8 gMonIcon_Quagsire[] = INCBIN_U8("graphics/pokemon/quagsire/icon.4bpp"); + const u8 gMonFootprint_Quagsire[] = INCBIN_U8("graphics/pokemon/quagsire/footprint.1bpp"); + + const u32 gMonFrontPic_QuagsireF[] = INCBIN_U32("graphics/pokemon/quagsire/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_QuagsireF[] = INCBIN_U32("graphics/pokemon/quagsire/backf.4bpp.lz"); + +#if P_PALDEAN_FORMS + const u32 gMonFrontPic_WooperPaldean[] = INCBIN_U32("graphics/pokemon/wooper/wooper_paldean/front.4bpp.lz"); + const u32 gMonPalette_WooperPaldean[] = INCBIN_U32("graphics/pokemon/wooper/wooper_paldean/normal.gbapal.lz"); + const u32 gMonBackPic_WooperPaldean[] = INCBIN_U32("graphics/pokemon/wooper/wooper_paldean/back.4bpp.lz"); + const u32 gMonShinyPalette_WooperPaldean[] = INCBIN_U32("graphics/pokemon/wooper/wooper_paldean/shiny.gbapal.lz"); + // const u8 gMonIcon_WooperPaldean[] = INCBIN_U8("graphics/pokemon/wooper/wooper_paldean/icon.4bpp"); + + const u32 gMonFrontPic_Clodsire[] = INCBIN_U32("graphics/pokemon/clodsire/front.4bpp.lz"); + const u32 gMonPalette_Clodsire[] = INCBIN_U32("graphics/pokemon/clodsire/normal.gbapal.lz"); + const u32 gMonBackPic_Clodsire[] = INCBIN_U32("graphics/pokemon/clodsire/back.4bpp.lz"); + const u32 gMonShinyPalette_Clodsire[] = INCBIN_U32("graphics/pokemon/clodsire/shiny.gbapal.lz"); + const u8 gMonIcon_Clodsire[] = INCBIN_U8("graphics/pokemon/clodsire/icon.4bpp"); + // const u8 gMonFootprint_Clodsire[] = INCBIN_U8("graphics/pokemon/clodsire/footprint.1bpp"); +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_WOOPER + +#if P_FAMILY_MURKROW + const u32 gMonFrontPic_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/anim_front.4bpp.lz"); + const u32 gMonPalette_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/normal.gbapal.lz"); + const u32 gMonBackPic_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/back.4bpp.lz"); + const u32 gMonShinyPalette_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/shiny.gbapal.lz"); + const u8 gMonIcon_Murkrow[] = INCBIN_U8("graphics/pokemon/murkrow/icon.4bpp"); + const u8 gMonFootprint_Murkrow[] = INCBIN_U8("graphics/pokemon/murkrow/footprint.1bpp"); + + const u32 gMonFrontPic_MurkrowF[] = INCBIN_U32("graphics/pokemon/murkrow/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_MurkrowF[] = INCBIN_U32("graphics/pokemon/murkrow/backf.4bpp.lz"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Honchkrow[] = INCBIN_U32("graphics/pokemon/honchkrow/anim_front.4bpp.lz"); + const u32 gMonPalette_Honchkrow[] = INCBIN_U32("graphics/pokemon/honchkrow/normal.gbapal.lz"); + const u32 gMonBackPic_Honchkrow[] = INCBIN_U32("graphics/pokemon/honchkrow/back.4bpp.lz"); + const u32 gMonShinyPalette_Honchkrow[] = INCBIN_U32("graphics/pokemon/honchkrow/shiny.gbapal.lz"); + const u8 gMonIcon_Honchkrow[] = INCBIN_U8("graphics/pokemon/honchkrow/icon.4bpp"); + const u8 gMonFootprint_Honchkrow[] = INCBIN_U8("graphics/pokemon/honchkrow/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MURKROW + +#if P_FAMILY_MISDREAVUS + const u32 gMonFrontPic_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/anim_front.4bpp.lz"); + const u32 gMonPalette_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/normal.gbapal.lz"); + const u32 gMonBackPic_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/back.4bpp.lz"); + const u32 gMonShinyPalette_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/shiny.gbapal.lz"); + const u8 gMonIcon_Misdreavus[] = INCBIN_U8("graphics/pokemon/misdreavus/icon.4bpp"); + const u8 gMonFootprint_Misdreavus[] = INCBIN_U8("graphics/pokemon/misdreavus/footprint.1bpp"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Mismagius[] = INCBIN_U32("graphics/pokemon/mismagius/anim_front.4bpp.lz"); + const u32 gMonPalette_Mismagius[] = INCBIN_U32("graphics/pokemon/mismagius/normal.gbapal.lz"); + const u32 gMonBackPic_Mismagius[] = INCBIN_U32("graphics/pokemon/mismagius/back.4bpp.lz"); + const u32 gMonShinyPalette_Mismagius[] = INCBIN_U32("graphics/pokemon/mismagius/shiny.gbapal.lz"); + const u8 gMonIcon_Mismagius[] = INCBIN_U8("graphics/pokemon/mismagius/icon.4bpp"); + const u8 gMonFootprint_Mismagius[] = INCBIN_U8("graphics/pokemon/mismagius/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MISDREAVUS + +#if P_FAMILY_UNOWN + const u32 gMonPalette_Unown[] = INCBIN_U32("graphics/pokemon/unown/normal.gbapal.lz"); + const u32 gMonShinyPalette_Unown[] = INCBIN_U32("graphics/pokemon/unown/shiny.gbapal.lz"); + const u8 gMonFootprint_Unown[] = INCBIN_U8("graphics/pokemon/unown/footprint.1bpp"); + + const u32 gMonFrontPic_UnownA[] = INCBIN_U32("graphics/pokemon/unown/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownA[] = INCBIN_U32("graphics/pokemon/unown/back.4bpp.lz"); + const u8 gMonIcon_UnownA[] = INCBIN_U8("graphics/pokemon/unown/icon.4bpp"); + + const u32 gMonFrontPic_UnownB[] = INCBIN_U32("graphics/pokemon/unown/b/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownB[] = INCBIN_U32("graphics/pokemon/unown/b/back.4bpp.lz"); + const u8 gMonIcon_UnownB[] = INCBIN_U8("graphics/pokemon/unown/b/icon.4bpp"); + + const u32 gMonFrontPic_UnownC[] = INCBIN_U32("graphics/pokemon/unown/c/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownC[] = INCBIN_U32("graphics/pokemon/unown/c/back.4bpp.lz"); + const u8 gMonIcon_UnownC[] = INCBIN_U8("graphics/pokemon/unown/c/icon.4bpp"); + + const u32 gMonFrontPic_UnownD[] = INCBIN_U32("graphics/pokemon/unown/d/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownD[] = INCBIN_U32("graphics/pokemon/unown/d/back.4bpp.lz"); + const u8 gMonIcon_UnownD[] = INCBIN_U8("graphics/pokemon/unown/d/icon.4bpp"); + + const u32 gMonFrontPic_UnownE[] = INCBIN_U32("graphics/pokemon/unown/e/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownE[] = INCBIN_U32("graphics/pokemon/unown/e/back.4bpp.lz"); + const u8 gMonIcon_UnownE[] = INCBIN_U8("graphics/pokemon/unown/e/icon.4bpp"); + + const u32 gMonFrontPic_UnownF[] = INCBIN_U32("graphics/pokemon/unown/f/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownF[] = INCBIN_U32("graphics/pokemon/unown/f/back.4bpp.lz"); + const u8 gMonIcon_UnownF[] = INCBIN_U8("graphics/pokemon/unown/f/icon.4bpp"); + + const u32 gMonFrontPic_UnownG[] = INCBIN_U32("graphics/pokemon/unown/g/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownG[] = INCBIN_U32("graphics/pokemon/unown/g/back.4bpp.lz"); + const u8 gMonIcon_UnownG[] = INCBIN_U8("graphics/pokemon/unown/g/icon.4bpp"); + + const u32 gMonFrontPic_UnownH[] = INCBIN_U32("graphics/pokemon/unown/h/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownH[] = INCBIN_U32("graphics/pokemon/unown/h/back.4bpp.lz"); + const u8 gMonIcon_UnownH[] = INCBIN_U8("graphics/pokemon/unown/h/icon.4bpp"); + + const u32 gMonFrontPic_UnownI[] = INCBIN_U32("graphics/pokemon/unown/i/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownI[] = INCBIN_U32("graphics/pokemon/unown/i/back.4bpp.lz"); + const u8 gMonIcon_UnownI[] = INCBIN_U8("graphics/pokemon/unown/i/icon.4bpp"); + + const u32 gMonFrontPic_UnownJ[] = INCBIN_U32("graphics/pokemon/unown/j/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownJ[] = INCBIN_U32("graphics/pokemon/unown/j/back.4bpp.lz"); + const u8 gMonIcon_UnownJ[] = INCBIN_U8("graphics/pokemon/unown/j/icon.4bpp"); + + const u32 gMonFrontPic_UnownK[] = INCBIN_U32("graphics/pokemon/unown/k/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownK[] = INCBIN_U32("graphics/pokemon/unown/k/back.4bpp.lz"); + const u8 gMonIcon_UnownK[] = INCBIN_U8("graphics/pokemon/unown/k/icon.4bpp"); + + const u32 gMonFrontPic_UnownL[] = INCBIN_U32("graphics/pokemon/unown/l/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownL[] = INCBIN_U32("graphics/pokemon/unown/l/back.4bpp.lz"); + const u8 gMonIcon_UnownL[] = INCBIN_U8("graphics/pokemon/unown/l/icon.4bpp"); + + const u32 gMonFrontPic_UnownM[] = INCBIN_U32("graphics/pokemon/unown/m/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownM[] = INCBIN_U32("graphics/pokemon/unown/m/back.4bpp.lz"); + const u8 gMonIcon_UnownM[] = INCBIN_U8("graphics/pokemon/unown/m/icon.4bpp"); + + const u32 gMonFrontPic_UnownN[] = INCBIN_U32("graphics/pokemon/unown/n/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownN[] = INCBIN_U32("graphics/pokemon/unown/n/back.4bpp.lz"); + const u8 gMonIcon_UnownN[] = INCBIN_U8("graphics/pokemon/unown/n/icon.4bpp"); + + const u32 gMonFrontPic_UnownO[] = INCBIN_U32("graphics/pokemon/unown/o/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownO[] = INCBIN_U32("graphics/pokemon/unown/o/back.4bpp.lz"); + const u8 gMonIcon_UnownO[] = INCBIN_U8("graphics/pokemon/unown/o/icon.4bpp"); + + const u32 gMonFrontPic_UnownP[] = INCBIN_U32("graphics/pokemon/unown/p/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownP[] = INCBIN_U32("graphics/pokemon/unown/p/back.4bpp.lz"); + const u8 gMonIcon_UnownP[] = INCBIN_U8("graphics/pokemon/unown/p/icon.4bpp"); + + const u32 gMonFrontPic_UnownQ[] = INCBIN_U32("graphics/pokemon/unown/q/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownQ[] = INCBIN_U32("graphics/pokemon/unown/q/back.4bpp.lz"); + const u8 gMonIcon_UnownQ[] = INCBIN_U8("graphics/pokemon/unown/q/icon.4bpp"); + + const u32 gMonFrontPic_UnownR[] = INCBIN_U32("graphics/pokemon/unown/r/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownR[] = INCBIN_U32("graphics/pokemon/unown/r/back.4bpp.lz"); + const u8 gMonIcon_UnownR[] = INCBIN_U8("graphics/pokemon/unown/r/icon.4bpp"); + + const u32 gMonFrontPic_UnownS[] = INCBIN_U32("graphics/pokemon/unown/s/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownS[] = INCBIN_U32("graphics/pokemon/unown/s/back.4bpp.lz"); + const u8 gMonIcon_UnownS[] = INCBIN_U8("graphics/pokemon/unown/s/icon.4bpp"); + + const u32 gMonFrontPic_UnownT[] = INCBIN_U32("graphics/pokemon/unown/t/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownT[] = INCBIN_U32("graphics/pokemon/unown/t/back.4bpp.lz"); + const u8 gMonIcon_UnownT[] = INCBIN_U8("graphics/pokemon/unown/t/icon.4bpp"); + + const u32 gMonFrontPic_UnownU[] = INCBIN_U32("graphics/pokemon/unown/u/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownU[] = INCBIN_U32("graphics/pokemon/unown/u/back.4bpp.lz"); + const u8 gMonIcon_UnownU[] = INCBIN_U8("graphics/pokemon/unown/u/icon.4bpp"); + + const u32 gMonFrontPic_UnownV[] = INCBIN_U32("graphics/pokemon/unown/v/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownV[] = INCBIN_U32("graphics/pokemon/unown/v/back.4bpp.lz"); + const u8 gMonIcon_UnownV[] = INCBIN_U8("graphics/pokemon/unown/v/icon.4bpp"); + + const u32 gMonFrontPic_UnownW[] = INCBIN_U32("graphics/pokemon/unown/w/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownW[] = INCBIN_U32("graphics/pokemon/unown/w/back.4bpp.lz"); + const u8 gMonIcon_UnownW[] = INCBIN_U8("graphics/pokemon/unown/w/icon.4bpp"); + + const u32 gMonFrontPic_UnownX[] = INCBIN_U32("graphics/pokemon/unown/x/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownX[] = INCBIN_U32("graphics/pokemon/unown/x/back.4bpp.lz"); + const u8 gMonIcon_UnownX[] = INCBIN_U8("graphics/pokemon/unown/x/icon.4bpp"); + + const u32 gMonFrontPic_UnownY[] = INCBIN_U32("graphics/pokemon/unown/y/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownY[] = INCBIN_U32("graphics/pokemon/unown/y/back.4bpp.lz"); + const u8 gMonIcon_UnownY[] = INCBIN_U8("graphics/pokemon/unown/y/icon.4bpp"); + + const u32 gMonFrontPic_UnownZ[] = INCBIN_U32("graphics/pokemon/unown/z/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownZ[] = INCBIN_U32("graphics/pokemon/unown/z/back.4bpp.lz"); + const u8 gMonIcon_UnownZ[] = INCBIN_U8("graphics/pokemon/unown/z/icon.4bpp"); + + const u32 gMonFrontPic_UnownExclamationMark[] = INCBIN_U32("graphics/pokemon/unown/exclamation_mark/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownExclamationMark[] = INCBIN_U32("graphics/pokemon/unown/exclamation_mark/back.4bpp.lz"); + const u8 gMonIcon_UnownExclamationMark[] = INCBIN_U8("graphics/pokemon/unown/exclamation_mark/icon.4bpp"); + + const u32 gMonFrontPic_UnownQuestionMark[] = INCBIN_U32("graphics/pokemon/unown/question_mark/anim_front.4bpp.lz"); + const u32 gMonBackPic_UnownQuestionMark[] = INCBIN_U32("graphics/pokemon/unown/question_mark/back.4bpp.lz"); + const u8 gMonIcon_UnownQuestionMark[] = INCBIN_U8("graphics/pokemon/unown/question_mark/icon.4bpp"); +#endif //P_FAMILY_UNOWN + +#if P_FAMILY_WOBBUFFET +#if P_GEN_3_CROSS_EVOS + const u32 gMonFrontPic_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/anim_front.4bpp.lz"); + const u32 gMonPalette_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/normal.gbapal.lz"); + const u32 gMonBackPic_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/back.4bpp.lz"); + const u32 gMonShinyPalette_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/shiny.gbapal.lz"); + const u8 gMonIcon_Wynaut[] = INCBIN_U8("graphics/pokemon/wynaut/icon.4bpp"); + const u8 gMonFootprint_Wynaut[] = INCBIN_U8("graphics/pokemon/wynaut/footprint.1bpp"); +#endif //P_GEN_3_CROSS_EVOS + + const u32 gMonFrontPic_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/anim_front.4bpp.lz"); + const u32 gMonPalette_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/normal.gbapal.lz"); + const u32 gMonBackPic_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/back.4bpp.lz"); + const u32 gMonShinyPalette_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/shiny.gbapal.lz"); + const u8 gMonIcon_Wobbuffet[] = INCBIN_U8("graphics/pokemon/wobbuffet/icon.4bpp"); + const u8 gMonFootprint_Wobbuffet[] = INCBIN_U8("graphics/pokemon/wobbuffet/footprint.1bpp"); + + const u32 gMonFrontPic_WobbuffetF[] = INCBIN_U32("graphics/pokemon/wobbuffet/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_WobbuffetF[] = INCBIN_U32("graphics/pokemon/wobbuffet/backf.4bpp.lz"); +#if P_CUSTOM_GENDER_DIFF_ICONS + const u8 gMonIcon_WobbuffetF[] = INCBIN_U8("graphics/pokemon/wobbuffet/iconf.4bpp"); #endif -#if P_GEN_6_POKEMON == TRUE -const u8 gMonFootprint_Chespin[] = INCBIN_U8("graphics/pokemon/chespin/footprint.1bpp"); -const u8 gMonFootprint_Quilladin[] = INCBIN_U8("graphics/pokemon/quilladin/footprint.1bpp"); -const u8 gMonFootprint_Chesnaught[] = INCBIN_U8("graphics/pokemon/chesnaught/footprint.1bpp"); -const u8 gMonFootprint_Fennekin[] = INCBIN_U8("graphics/pokemon/fennekin/footprint.1bpp"); -const u8 gMonFootprint_Braixen[] = INCBIN_U8("graphics/pokemon/braixen/footprint.1bpp"); -const u8 gMonFootprint_Delphox[] = INCBIN_U8("graphics/pokemon/delphox/footprint.1bpp"); -const u8 gMonFootprint_Froakie[] = INCBIN_U8("graphics/pokemon/froakie/footprint.1bpp"); -const u8 gMonFootprint_Frogadier[] = INCBIN_U8("graphics/pokemon/frogadier/footprint.1bpp"); -const u8 gMonFootprint_Greninja[] = INCBIN_U8("graphics/pokemon/greninja/footprint.1bpp"); -const u8 gMonFootprint_Bunnelby[] = INCBIN_U8("graphics/pokemon/bunnelby/footprint.1bpp"); -const u8 gMonFootprint_Diggersby[] = INCBIN_U8("graphics/pokemon/diggersby/footprint.1bpp"); -const u8 gMonFootprint_Fletchling[] = INCBIN_U8("graphics/pokemon/fletchling/footprint.1bpp"); -const u8 gMonFootprint_Fletchinder[] = INCBIN_U8("graphics/pokemon/fletchinder/footprint.1bpp"); -const u8 gMonFootprint_Talonflame[] = INCBIN_U8("graphics/pokemon/talonflame/footprint.1bpp"); -const u8 gMonFootprint_Scatterbug[] = INCBIN_U8("graphics/pokemon/scatterbug/footprint.1bpp"); -const u8 gMonFootprint_Spewpa[] = INCBIN_U8("graphics/pokemon/spewpa/footprint.1bpp"); -const u8 gMonFootprint_Vivillon[] = INCBIN_U8("graphics/pokemon/vivillon/footprint.1bpp"); -const u8 gMonFootprint_Litleo[] = INCBIN_U8("graphics/pokemon/litleo/footprint.1bpp"); -const u8 gMonFootprint_Pyroar[] = INCBIN_U8("graphics/pokemon/pyroar/footprint.1bpp"); -const u8 gMonFootprint_Flabebe[] = INCBIN_U8("graphics/pokemon/flabebe/footprint.1bpp"); -const u8 gMonFootprint_Floette[] = INCBIN_U8("graphics/pokemon/floette/footprint.1bpp"); -const u8 gMonFootprint_Florges[] = INCBIN_U8("graphics/pokemon/florges/footprint.1bpp"); -const u8 gMonFootprint_Skiddo[] = INCBIN_U8("graphics/pokemon/skiddo/footprint.1bpp"); -const u8 gMonFootprint_Gogoat[] = INCBIN_U8("graphics/pokemon/gogoat/footprint.1bpp"); -const u8 gMonFootprint_Pancham[] = INCBIN_U8("graphics/pokemon/pancham/footprint.1bpp"); -const u8 gMonFootprint_Pangoro[] = INCBIN_U8("graphics/pokemon/pangoro/footprint.1bpp"); -const u8 gMonFootprint_Furfrou[] = INCBIN_U8("graphics/pokemon/furfrou/footprint.1bpp"); -const u8 gMonFootprint_Espurr[] = INCBIN_U8("graphics/pokemon/espurr/footprint.1bpp"); -const u8 gMonFootprint_Meowstic[] = INCBIN_U8("graphics/pokemon/meowstic/footprint.1bpp"); -const u8 gMonFootprint_Honedge[] = INCBIN_U8("graphics/pokemon/honedge/footprint.1bpp"); -const u8 gMonFootprint_Doublade[] = INCBIN_U8("graphics/pokemon/doublade/footprint.1bpp"); -const u8 gMonFootprint_Aegislash[] = INCBIN_U8("graphics/pokemon/aegislash/footprint.1bpp"); -const u8 gMonFootprint_Spritzee[] = INCBIN_U8("graphics/pokemon/spritzee/footprint.1bpp"); -const u8 gMonFootprint_Aromatisse[] = INCBIN_U8("graphics/pokemon/aromatisse/footprint.1bpp"); -const u8 gMonFootprint_Swirlix[] = INCBIN_U8("graphics/pokemon/swirlix/footprint.1bpp"); -const u8 gMonFootprint_Slurpuff[] = INCBIN_U8("graphics/pokemon/slurpuff/footprint.1bpp"); -const u8 gMonFootprint_Inkay[] = INCBIN_U8("graphics/pokemon/inkay/footprint.1bpp"); -const u8 gMonFootprint_Malamar[] = INCBIN_U8("graphics/pokemon/malamar/footprint.1bpp"); -const u8 gMonFootprint_Binacle[] = INCBIN_U8("graphics/pokemon/binacle/footprint.1bpp"); -const u8 gMonFootprint_Barbaracle[] = INCBIN_U8("graphics/pokemon/barbaracle/footprint.1bpp"); -const u8 gMonFootprint_Skrelp[] = INCBIN_U8("graphics/pokemon/skrelp/footprint.1bpp"); -const u8 gMonFootprint_Dragalge[] = INCBIN_U8("graphics/pokemon/dragalge/footprint.1bpp"); -const u8 gMonFootprint_Clauncher[] = INCBIN_U8("graphics/pokemon/clauncher/footprint.1bpp"); -const u8 gMonFootprint_Clawitzer[] = INCBIN_U8("graphics/pokemon/clawitzer/footprint.1bpp"); -const u8 gMonFootprint_Helioptile[] = INCBIN_U8("graphics/pokemon/helioptile/footprint.1bpp"); -const u8 gMonFootprint_Heliolisk[] = INCBIN_U8("graphics/pokemon/heliolisk/footprint.1bpp"); -const u8 gMonFootprint_Tyrunt[] = INCBIN_U8("graphics/pokemon/tyrunt/footprint.1bpp"); -const u8 gMonFootprint_Tyrantrum[] = INCBIN_U8("graphics/pokemon/tyrantrum/footprint.1bpp"); -const u8 gMonFootprint_Amaura[] = INCBIN_U8("graphics/pokemon/amaura/footprint.1bpp"); -const u8 gMonFootprint_Aurorus[] = INCBIN_U8("graphics/pokemon/aurorus/footprint.1bpp"); -const u8 gMonFootprint_Sylveon[] = INCBIN_U8("graphics/pokemon/sylveon/footprint.1bpp"); -const u8 gMonFootprint_Hawlucha[] = INCBIN_U8("graphics/pokemon/hawlucha/footprint.1bpp"); -const u8 gMonFootprint_Dedenne[] = INCBIN_U8("graphics/pokemon/dedenne/footprint.1bpp"); -const u8 gMonFootprint_Carbink[] = INCBIN_U8("graphics/pokemon/carbink/footprint.1bpp"); -const u8 gMonFootprint_Goomy[] = INCBIN_U8("graphics/pokemon/goomy/footprint.1bpp"); -const u8 gMonFootprint_Sliggoo[] = INCBIN_U8("graphics/pokemon/sliggoo/footprint.1bpp"); -const u8 gMonFootprint_Goodra[] = INCBIN_U8("graphics/pokemon/goodra/footprint.1bpp"); -const u8 gMonFootprint_Klefki[] = INCBIN_U8("graphics/pokemon/klefki/footprint.1bpp"); -const u8 gMonFootprint_Phantump[] = INCBIN_U8("graphics/pokemon/phantump/footprint.1bpp"); -const u8 gMonFootprint_Trevenant[] = INCBIN_U8("graphics/pokemon/trevenant/footprint.1bpp"); -const u8 gMonFootprint_Pumpkaboo[] = INCBIN_U8("graphics/pokemon/pumpkaboo/footprint.1bpp"); -const u8 gMonFootprint_Gourgeist[] = INCBIN_U8("graphics/pokemon/gourgeist/footprint.1bpp"); -const u8 gMonFootprint_Bergmite[] = INCBIN_U8("graphics/pokemon/bergmite/footprint.1bpp"); -const u8 gMonFootprint_Avalugg[] = INCBIN_U8("graphics/pokemon/avalugg/footprint.1bpp"); -const u8 gMonFootprint_Noibat[] = INCBIN_U8("graphics/pokemon/noibat/footprint.1bpp"); -const u8 gMonFootprint_Noivern[] = INCBIN_U8("graphics/pokemon/noivern/footprint.1bpp"); -const u8 gMonFootprint_Xerneas[] = INCBIN_U8("graphics/pokemon/xerneas/footprint.1bpp"); -const u8 gMonFootprint_Yveltal[] = INCBIN_U8("graphics/pokemon/yveltal/footprint.1bpp"); -const u8 gMonFootprint_Zygarde[] = INCBIN_U8("graphics/pokemon/zygarde/footprint.1bpp"); -const u8 gMonFootprint_Diancie[] = INCBIN_U8("graphics/pokemon/diancie/footprint.1bpp"); -const u8 gMonFootprint_Hoopa[] = INCBIN_U8("graphics/pokemon/hoopa/footprint.1bpp"); -const u8 gMonFootprint_Volcanion[] = INCBIN_U8("graphics/pokemon/volcanion/footprint.1bpp"); +#endif //P_FAMILY_WOBBUFFET + +#if P_FAMILY_GIRAFARIG + const u32 gMonFrontPic_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/anim_front.4bpp.lz"); + const u32 gMonPalette_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/normal.gbapal.lz"); + const u32 gMonBackPic_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/back.4bpp.lz"); + const u32 gMonShinyPalette_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/shiny.gbapal.lz"); + const u8 gMonIcon_Girafarig[] = INCBIN_U8("graphics/pokemon/girafarig/icon.4bpp"); + const u8 gMonFootprint_Girafarig[] = INCBIN_U8("graphics/pokemon/girafarig/footprint.1bpp"); + + const u32 gMonFrontPic_GirafarigF[] = INCBIN_U32("graphics/pokemon/girafarig/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_GirafarigF[] = INCBIN_U32("graphics/pokemon/girafarig/backf.4bpp.lz"); + +#if P_GEN_9_CROSS_EVOS + const u32 gMonFrontPic_Farigiraf[] = INCBIN_U32("graphics/pokemon/farigiraf/front.4bpp.lz"); + const u32 gMonPalette_Farigiraf[] = INCBIN_U32("graphics/pokemon/farigiraf/normal.gbapal.lz"); + const u32 gMonBackPic_Farigiraf[] = INCBIN_U32("graphics/pokemon/farigiraf/back.4bpp.lz"); + const u32 gMonShinyPalette_Farigiraf[] = INCBIN_U32("graphics/pokemon/farigiraf/shiny.gbapal.lz"); + const u8 gMonIcon_Farigiraf[] = INCBIN_U8("graphics/pokemon/farigiraf/icon.4bpp"); + // const u8 gMonFootprint_Farigiraf[] = INCBIN_U8("graphics/pokemon/farigiraf/footprint.1bpp"); +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_GIRAFARIG + +#if P_FAMILY_PINECO + const u32 gMonFrontPic_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/anim_front.4bpp.lz"); + const u32 gMonPalette_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/normal.gbapal.lz"); + const u32 gMonBackPic_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/back.4bpp.lz"); + const u32 gMonShinyPalette_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/shiny.gbapal.lz"); + const u8 gMonIcon_Pineco[] = INCBIN_U8("graphics/pokemon/pineco/icon.4bpp"); + const u8 gMonFootprint_Pineco[] = INCBIN_U8("graphics/pokemon/pineco/footprint.1bpp"); + + const u32 gMonFrontPic_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/anim_front.4bpp.lz"); + const u32 gMonPalette_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/normal.gbapal.lz"); + const u32 gMonBackPic_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/back.4bpp.lz"); + const u32 gMonShinyPalette_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/shiny.gbapal.lz"); + const u8 gMonIcon_Forretress[] = INCBIN_U8("graphics/pokemon/forretress/icon.4bpp"); + const u8 gMonFootprint_Forretress[] = INCBIN_U8("graphics/pokemon/forretress/footprint.1bpp"); +#endif //P_FAMILY_PINECO + +#if P_FAMILY_DUNSPARCE + const u32 gMonFrontPic_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/anim_front.4bpp.lz"); + const u32 gMonPalette_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/normal.gbapal.lz"); + const u32 gMonBackPic_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/back.4bpp.lz"); + const u32 gMonShinyPalette_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/shiny.gbapal.lz"); + const u8 gMonIcon_Dunsparce[] = INCBIN_U8("graphics/pokemon/dunsparce/icon.4bpp"); + const u8 gMonFootprint_Dunsparce[] = INCBIN_U8("graphics/pokemon/dunsparce/footprint.1bpp"); + +#if P_GEN_9_CROSS_EVOS + const u32 gMonPalette_Dudunsparce[] = INCBIN_U32("graphics/pokemon/dudunsparce/normal.gbapal.lz"); + const u32 gMonShinyPalette_Dudunsparce[] = INCBIN_U32("graphics/pokemon/dudunsparce/shiny.gbapal.lz"); + const u8 gMonIcon_Dudunsparce[] = INCBIN_U8("graphics/pokemon/dudunsparce/icon.4bpp"); + // const u8 gMonFootprint_Dudunsparce[] = INCBIN_U8("graphics/pokemon/dudunsparce/footprint.1bpp"); + + const u32 gMonFrontPic_DudunsparceTwoSegment[] = INCBIN_U32("graphics/pokemon/dudunsparce/front.4bpp.lz"); + const u32 gMonBackPic_DudunsparceTwoSegment[] = INCBIN_U32("graphics/pokemon/dudunsparce/back.4bpp.lz"); + + const u32 gMonFrontPic_DudunsparceThreeSegment[] = INCBIN_U32("graphics/pokemon/dudunsparce/three_segment/front.4bpp.lz"); + const u32 gMonBackPic_DudunsparceThreeSegment[] = INCBIN_U32("graphics/pokemon/dudunsparce/three_segment/back.4bpp.lz"); +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_DUNSPARCE + +#if P_FAMILY_GLIGAR + const u32 gMonFrontPic_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/anim_front.4bpp.lz"); + const u32 gMonPalette_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/normal.gbapal.lz"); + const u32 gMonBackPic_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/back.4bpp.lz"); + const u32 gMonShinyPalette_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/shiny.gbapal.lz"); + const u8 gMonIcon_Gligar[] = INCBIN_U8("graphics/pokemon/gligar/icon.4bpp"); + const u8 gMonFootprint_Gligar[] = INCBIN_U8("graphics/pokemon/gligar/footprint.1bpp"); + + const u32 gMonFrontPic_GligarF[] = INCBIN_U32("graphics/pokemon/gligar/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_GligarF[] = INCBIN_U32("graphics/pokemon/gligar/backf.4bpp.lz"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Gliscor[] = INCBIN_U32("graphics/pokemon/gliscor/anim_front.4bpp.lz"); + const u32 gMonPalette_Gliscor[] = INCBIN_U32("graphics/pokemon/gliscor/normal.gbapal.lz"); + const u32 gMonBackPic_Gliscor[] = INCBIN_U32("graphics/pokemon/gliscor/back.4bpp.lz"); + const u32 gMonShinyPalette_Gliscor[] = INCBIN_U32("graphics/pokemon/gliscor/shiny.gbapal.lz"); + const u8 gMonIcon_Gliscor[] = INCBIN_U8("graphics/pokemon/gliscor/icon.4bpp"); + const u8 gMonFootprint_Gliscor[] = INCBIN_U8("graphics/pokemon/gliscor/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_GLIGAR + +#if P_FAMILY_SNUBBULL + const u32 gMonFrontPic_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/anim_front.4bpp.lz"); + const u32 gMonPalette_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/normal.gbapal.lz"); + const u32 gMonBackPic_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/back.4bpp.lz"); + const u32 gMonShinyPalette_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/shiny.gbapal.lz"); + const u8 gMonIcon_Snubbull[] = INCBIN_U8("graphics/pokemon/snubbull/icon.4bpp"); + const u8 gMonFootprint_Snubbull[] = INCBIN_U8("graphics/pokemon/snubbull/footprint.1bpp"); + + const u32 gMonFrontPic_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/anim_front.4bpp.lz"); + const u32 gMonPalette_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/normal.gbapal.lz"); + const u32 gMonBackPic_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/back.4bpp.lz"); + const u32 gMonShinyPalette_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/shiny.gbapal.lz"); + const u8 gMonIcon_Granbull[] = INCBIN_U8("graphics/pokemon/granbull/icon.4bpp"); + const u8 gMonFootprint_Granbull[] = INCBIN_U8("graphics/pokemon/granbull/footprint.1bpp"); +#endif //P_FAMILY_SNUBBULL + +#if P_FAMILY_QWILFISH + const u32 gMonFrontPic_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/anim_front.4bpp.lz"); + const u32 gMonPalette_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/normal.gbapal.lz"); + const u32 gMonBackPic_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/back.4bpp.lz"); + const u32 gMonShinyPalette_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/shiny.gbapal.lz"); + const u8 gMonIcon_Qwilfish[] = INCBIN_U8("graphics/pokemon/qwilfish/icon.4bpp"); + const u8 gMonFootprint_Qwilfish[] = INCBIN_U8("graphics/pokemon/qwilfish/footprint.1bpp"); + +#if P_HISUIAN_FORMS + const u32 gMonFrontPic_QwilfishHisuian[] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/front.4bpp.lz"); + const u32 gMonPalette_QwilfishHisuian[] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/normal.gbapal.lz"); + const u32 gMonBackPic_QwilfishHisuian[] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/back.4bpp.lz"); + const u32 gMonShinyPalette_QwilfishHisuian[] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/shiny.gbapal.lz"); + const u8 gMonIcon_QwilfishHisuian[] = INCBIN_U8("graphics/pokemon/qwilfish/hisuian/icon.4bpp"); + + const u32 gMonFrontPic_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/front.4bpp.lz"); + const u32 gMonPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/normal.gbapal.lz"); + const u32 gMonBackPic_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/back.4bpp.lz"); + const u32 gMonShinyPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/shiny.gbapal.lz"); + const u8 gMonIcon_Overqwil[] = INCBIN_U8("graphics/pokemon/overqwil/icon.4bpp"); + //const u8 gMonFootprint_Overqwil[] = INCBIN_U8("graphics/pokemon/overqwil/footprint.1bpp"); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_QWILFISH + +#if P_FAMILY_SHUCKLE + const u32 gMonFrontPic_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/anim_front.4bpp.lz"); + const u32 gMonPalette_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/normal.gbapal.lz"); + const u32 gMonBackPic_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/back.4bpp.lz"); + const u32 gMonShinyPalette_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/shiny.gbapal.lz"); + const u8 gMonIcon_Shuckle[] = INCBIN_U8("graphics/pokemon/shuckle/icon.4bpp"); + const u8 gMonFootprint_Shuckle[] = INCBIN_U8("graphics/pokemon/shuckle/footprint.1bpp"); +#endif //P_FAMILY_SHUCKLE + +#if P_FAMILY_HERACROSS + const u32 gMonFrontPic_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/anim_front.4bpp.lz"); + const u32 gMonPalette_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/normal.gbapal.lz"); + const u32 gMonBackPic_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/back.4bpp.lz"); + const u32 gMonShinyPalette_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/shiny.gbapal.lz"); + const u8 gMonIcon_Heracross[] = INCBIN_U8("graphics/pokemon/heracross/icon.4bpp"); + const u8 gMonFootprint_Heracross[] = INCBIN_U8("graphics/pokemon/heracross/footprint.1bpp"); + + const u32 gMonFrontPic_HeracrossF[] = INCBIN_U32("graphics/pokemon/heracross/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_HeracrossF[] = INCBIN_U32("graphics/pokemon/heracross/backf.4bpp.lz"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_HeracrossMega[] = INCBIN_U32("graphics/pokemon/heracross/mega/front.4bpp.lz"); + const u32 gMonPalette_HeracrossMega[] = INCBIN_U32("graphics/pokemon/heracross/mega/normal.gbapal.lz"); + const u32 gMonBackPic_HeracrossMega[] = INCBIN_U32("graphics/pokemon/heracross/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_HeracrossMega[] = INCBIN_U32("graphics/pokemon/heracross/mega/shiny.gbapal.lz"); + const u8 gMonIcon_HeracrossMega[] = INCBIN_U8("graphics/pokemon/heracross/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_HERACROSS + +#if P_FAMILY_SNEASEL + const u32 gMonFrontPic_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/anim_front.4bpp.lz"); + const u32 gMonPalette_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/normal.gbapal.lz"); + const u32 gMonBackPic_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/back.4bpp.lz"); + const u32 gMonShinyPalette_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/shiny.gbapal.lz"); + const u8 gMonIcon_Sneasel[] = INCBIN_U8("graphics/pokemon/sneasel/icon.4bpp"); + const u8 gMonFootprint_Sneasel[] = INCBIN_U8("graphics/pokemon/sneasel/footprint.1bpp"); + + const u32 gMonFrontPic_SneaselF[] = INCBIN_U32("graphics/pokemon/sneasel/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_SneaselF[] = INCBIN_U32("graphics/pokemon/sneasel/backf.4bpp.lz"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Weavile[] = INCBIN_U32("graphics/pokemon/weavile/anim_front.4bpp.lz"); + const u32 gMonPalette_Weavile[] = INCBIN_U32("graphics/pokemon/weavile/normal.gbapal.lz"); + const u32 gMonBackPic_Weavile[] = INCBIN_U32("graphics/pokemon/weavile/back.4bpp.lz"); + const u32 gMonShinyPalette_Weavile[] = INCBIN_U32("graphics/pokemon/weavile/shiny.gbapal.lz"); + const u8 gMonIcon_Weavile[] = INCBIN_U8("graphics/pokemon/weavile/icon.4bpp"); + const u8 gMonFootprint_Weavile[] = INCBIN_U8("graphics/pokemon/weavile/footprint.1bpp"); + + const u32 gMonFrontPic_WeavileF[] = INCBIN_U32("graphics/pokemon/weavile/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_WeavileF[] = INCBIN_U32("graphics/pokemon/weavile/backf.4bpp.lz"); +#endif //P_GEN_4_CROSS_EVOS + +#if P_HISUIAN_FORMS + const u32 gMonFrontPic_SneaselHisuian[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/front.4bpp.lz"); + const u32 gMonPalette_SneaselHisuian[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/normal.gbapal.lz"); + const u32 gMonBackPic_SneaselHisuian[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/back.4bpp.lz"); + const u32 gMonShinyPalette_SneaselHisuian[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/shiny.gbapal.lz"); + const u8 gMonIcon_SneaselHisuian[] = INCBIN_U8("graphics/pokemon/sneasel/hisuian/icon.4bpp"); + + const u32 gMonFrontPic_SneaselHisuianF[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/frontf.4bpp.lz"); + const u32 gMonBackPic_SneaselHisuianF[] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/backf.4bpp.lz"); + + const u32 gMonFrontPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/front.4bpp.lz"); + const u32 gMonPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/normal.gbapal.lz"); + const u32 gMonBackPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/back.4bpp.lz"); + const u32 gMonShinyPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/shiny.gbapal.lz"); + const u8 gMonIcon_Sneasler[] = INCBIN_U8("graphics/pokemon/sneasler/icon.4bpp"); + //const u8 gMonFootprint_Sneasler[] = INCBIN_U8("graphics/pokemon/sneasler/footprint.1bpp"); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_SNEASEL + +#if P_FAMILY_TEDDIURSA + const u32 gMonFrontPic_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/anim_front.4bpp.lz"); + const u32 gMonPalette_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/normal.gbapal.lz"); + const u32 gMonBackPic_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/back.4bpp.lz"); + const u32 gMonShinyPalette_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/shiny.gbapal.lz"); + const u8 gMonIcon_Teddiursa[] = INCBIN_U8("graphics/pokemon/teddiursa/icon.4bpp"); + const u8 gMonFootprint_Teddiursa[] = INCBIN_U8("graphics/pokemon/teddiursa/footprint.1bpp"); + + const u32 gMonFrontPic_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/anim_front.4bpp.lz"); + const u32 gMonPalette_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/normal.gbapal.lz"); + const u32 gMonBackPic_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/back.4bpp.lz"); + const u32 gMonShinyPalette_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/shiny.gbapal.lz"); + const u8 gMonIcon_Ursaring[] = INCBIN_U8("graphics/pokemon/ursaring/icon.4bpp"); + const u8 gMonFootprint_Ursaring[] = INCBIN_U8("graphics/pokemon/ursaring/footprint.1bpp"); + + const u32 gMonFrontPic_UrsaringF[] = INCBIN_U32("graphics/pokemon/ursaring/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_UrsaringF[] = INCBIN_U32("graphics/pokemon/ursaring/backf.4bpp.lz"); + +#if P_GEN_8_CROSS_EVOS + const u32 gMonFrontPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/front.4bpp.lz"); + const u32 gMonPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/normal.gbapal.lz"); + const u32 gMonBackPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/back.4bpp.lz"); + const u32 gMonShinyPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/shiny.gbapal.lz"); + const u8 gMonIcon_Ursaluna[] = INCBIN_U8("graphics/pokemon/ursaluna/icon.4bpp"); + //const u8 gMonFootprint_Ursaluna[] = INCBIN_U8("graphics/pokemon/ursaluna/footprint.1bpp"); + + const u32 gMonFrontPic_UrsalunaBloodmoon[] = INCBIN_U32("graphics/pokemon/ursaluna/bloodmoon/front.4bpp.lz"); + 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"); +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_TEDDIURSA + +#if P_FAMILY_SLUGMA + const u32 gMonFrontPic_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/anim_front.4bpp.lz"); + const u32 gMonPalette_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/normal.gbapal.lz"); + const u32 gMonBackPic_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/back.4bpp.lz"); + const u32 gMonShinyPalette_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/shiny.gbapal.lz"); + const u8 gMonIcon_Slugma[] = INCBIN_U8("graphics/pokemon/slugma/icon.4bpp"); + const u8 gMonFootprint_Slugma[] = INCBIN_U8("graphics/pokemon/slugma/footprint.1bpp"); + + const u32 gMonFrontPic_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/anim_front.4bpp.lz"); + const u32 gMonPalette_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/normal.gbapal.lz"); + const u32 gMonBackPic_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/back.4bpp.lz"); + const u32 gMonShinyPalette_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/shiny.gbapal.lz"); + const u8 gMonIcon_Magcargo[] = INCBIN_U8("graphics/pokemon/magcargo/icon.4bpp"); + const u8 gMonFootprint_Magcargo[] = INCBIN_U8("graphics/pokemon/magcargo/footprint.1bpp"); +#endif //P_FAMILY_SLUGMA + +#if P_FAMILY_SWINUB + const u32 gMonFrontPic_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/anim_front.4bpp.lz"); + const u32 gMonPalette_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/normal.gbapal.lz"); + const u32 gMonBackPic_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/back.4bpp.lz"); + const u32 gMonShinyPalette_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/shiny.gbapal.lz"); + const u8 gMonIcon_Swinub[] = INCBIN_U8("graphics/pokemon/swinub/icon.4bpp"); + const u8 gMonFootprint_Swinub[] = INCBIN_U8("graphics/pokemon/swinub/footprint.1bpp"); + + const u32 gMonFrontPic_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/anim_front.4bpp.lz"); + const u32 gMonPalette_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/normal.gbapal.lz"); + const u32 gMonBackPic_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/back.4bpp.lz"); + const u32 gMonShinyPalette_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/shiny.gbapal.lz"); + const u8 gMonIcon_Piloswine[] = INCBIN_U8("graphics/pokemon/piloswine/icon.4bpp"); + const u8 gMonFootprint_Piloswine[] = INCBIN_U8("graphics/pokemon/piloswine/footprint.1bpp"); + + const u32 gMonFrontPic_PiloswineF[] = INCBIN_U32("graphics/pokemon/piloswine/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_PiloswineF[] = INCBIN_U32("graphics/pokemon/piloswine/backf.4bpp.lz"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Mamoswine[] = INCBIN_U32("graphics/pokemon/mamoswine/anim_front.4bpp.lz"); + const u32 gMonPalette_Mamoswine[] = INCBIN_U32("graphics/pokemon/mamoswine/normal.gbapal.lz"); + const u32 gMonBackPic_Mamoswine[] = INCBIN_U32("graphics/pokemon/mamoswine/back.4bpp.lz"); + const u32 gMonShinyPalette_Mamoswine[] = INCBIN_U32("graphics/pokemon/mamoswine/shiny.gbapal.lz"); + const u8 gMonIcon_Mamoswine[] = INCBIN_U8("graphics/pokemon/mamoswine/icon.4bpp"); + const u8 gMonFootprint_Mamoswine[] = INCBIN_U8("graphics/pokemon/mamoswine/footprint.1bpp"); + + const u32 gMonFrontPic_MamoswineF[] = INCBIN_U32("graphics/pokemon/mamoswine/anim_frontf.4bpp.lz"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SWINUB + +#if P_FAMILY_CORSOLA + const u32 gMonFrontPic_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/anim_front.4bpp.lz"); + const u32 gMonPalette_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/normal.gbapal.lz"); + const u32 gMonBackPic_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/back.4bpp.lz"); + const u32 gMonShinyPalette_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/shiny.gbapal.lz"); + const u8 gMonIcon_Corsola[] = INCBIN_U8("graphics/pokemon/corsola/icon.4bpp"); + const u8 gMonFootprint_Corsola[] = INCBIN_U8("graphics/pokemon/corsola/footprint.1bpp"); + +#if P_GALARIAN_FORMS + const u32 gMonFrontPic_CorsolaGalarian[] = INCBIN_U32("graphics/pokemon/corsola/galarian/front.4bpp.lz"); + const u32 gMonPalette_CorsolaGalarian[] = INCBIN_U32("graphics/pokemon/corsola/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_CorsolaGalarian[] = INCBIN_U32("graphics/pokemon/corsola/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_CorsolaGalarian[] = INCBIN_U32("graphics/pokemon/corsola/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_CorsolaGalarian[] = INCBIN_U8("graphics/pokemon/corsola/galarian/icon.4bpp"); + + const u32 gMonFrontPic_Cursola[] = INCBIN_U32("graphics/pokemon/cursola/front.4bpp.lz"); + const u32 gMonPalette_Cursola[] = INCBIN_U32("graphics/pokemon/cursola/normal.gbapal.lz"); + const u32 gMonBackPic_Cursola[] = INCBIN_U32("graphics/pokemon/cursola/back.4bpp.lz"); + const u32 gMonShinyPalette_Cursola[] = INCBIN_U32("graphics/pokemon/cursola/shiny.gbapal.lz"); + const u8 gMonIcon_Cursola[] = INCBIN_U8("graphics/pokemon/cursola/icon.4bpp"); + const u8 gMonFootprint_Cursola[] = INCBIN_U8("graphics/pokemon/cursola/footprint.1bpp"); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_CORSOLA + +#if P_FAMILY_REMORAID + const u32 gMonFrontPic_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/anim_front.4bpp.lz"); + const u32 gMonPalette_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/normal.gbapal.lz"); + const u32 gMonBackPic_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/back.4bpp.lz"); + const u32 gMonShinyPalette_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/shiny.gbapal.lz"); + const u8 gMonIcon_Remoraid[] = INCBIN_U8("graphics/pokemon/remoraid/icon.4bpp"); + const u8 gMonFootprint_Remoraid[] = INCBIN_U8("graphics/pokemon/remoraid/footprint.1bpp"); + + const u32 gMonFrontPic_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/anim_front.4bpp.lz"); + const u32 gMonPalette_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/normal.gbapal.lz"); + const u32 gMonBackPic_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/back.4bpp.lz"); + const u32 gMonShinyPalette_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/shiny.gbapal.lz"); + const u8 gMonIcon_Octillery[] = INCBIN_U8("graphics/pokemon/octillery/icon.4bpp"); + const u8 gMonFootprint_Octillery[] = INCBIN_U8("graphics/pokemon/octillery/footprint.1bpp"); + + const u32 gMonFrontPic_OctilleryF[] = INCBIN_U32("graphics/pokemon/octillery/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_OctilleryF[] = INCBIN_U32("graphics/pokemon/octillery/backf.4bpp.lz"); +#endif //P_FAMILY_REMORAID + +#if P_FAMILY_DELIBIRD + const u32 gMonFrontPic_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/anim_front.4bpp.lz"); + const u32 gMonPalette_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/normal.gbapal.lz"); + const u32 gMonBackPic_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/back.4bpp.lz"); + const u32 gMonShinyPalette_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/shiny.gbapal.lz"); + const u8 gMonIcon_Delibird[] = INCBIN_U8("graphics/pokemon/delibird/icon.4bpp"); + const u8 gMonFootprint_Delibird[] = INCBIN_U8("graphics/pokemon/delibird/footprint.1bpp"); +#endif //P_FAMILY_DELIBIRD + +#if P_FAMILY_MANTINE +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Mantyke[] = INCBIN_U32("graphics/pokemon/mantyke/anim_front.4bpp.lz"); + const u32 gMonPalette_Mantyke[] = INCBIN_U32("graphics/pokemon/mantyke/normal.gbapal.lz"); + const u32 gMonBackPic_Mantyke[] = INCBIN_U32("graphics/pokemon/mantyke/back.4bpp.lz"); + const u32 gMonShinyPalette_Mantyke[] = INCBIN_U32("graphics/pokemon/mantyke/shiny.gbapal.lz"); + const u8 gMonIcon_Mantyke[] = INCBIN_U8("graphics/pokemon/mantyke/icon.4bpp"); + const u8 gMonFootprint_Mantyke[] = INCBIN_U8("graphics/pokemon/mantyke/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS + + const u32 gMonFrontPic_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/anim_front.4bpp.lz"); + const u32 gMonPalette_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/normal.gbapal.lz"); + const u32 gMonBackPic_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/back.4bpp.lz"); + const u32 gMonShinyPalette_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/shiny.gbapal.lz"); + const u8 gMonIcon_Mantine[] = INCBIN_U8("graphics/pokemon/mantine/icon.4bpp"); + const u8 gMonFootprint_Mantine[] = INCBIN_U8("graphics/pokemon/mantine/footprint.1bpp"); +#endif //P_FAMILY_MANTINE + +#if P_FAMILY_SKARMORY + const u32 gMonFrontPic_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/anim_front.4bpp.lz"); + const u32 gMonPalette_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/normal.gbapal.lz"); + const u32 gMonBackPic_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/back.4bpp.lz"); + const u32 gMonShinyPalette_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/shiny.gbapal.lz"); + const u8 gMonIcon_Skarmory[] = INCBIN_U8("graphics/pokemon/skarmory/icon.4bpp"); + const u8 gMonFootprint_Skarmory[] = INCBIN_U8("graphics/pokemon/skarmory/footprint.1bpp"); +#endif //P_FAMILY_SKARMORY + +#if P_FAMILY_HOUNDOUR + const u32 gMonFrontPic_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/anim_front.4bpp.lz"); + const u32 gMonPalette_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/normal.gbapal.lz"); + const u32 gMonBackPic_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/back.4bpp.lz"); + const u32 gMonShinyPalette_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/shiny.gbapal.lz"); + const u8 gMonIcon_Houndour[] = INCBIN_U8("graphics/pokemon/houndour/icon.4bpp"); + const u8 gMonFootprint_Houndour[] = INCBIN_U8("graphics/pokemon/houndour/footprint.1bpp"); + + const u32 gMonFrontPic_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/anim_front.4bpp.lz"); + const u32 gMonPalette_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/normal.gbapal.lz"); + const u32 gMonBackPic_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/back.4bpp.lz"); + const u32 gMonShinyPalette_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/shiny.gbapal.lz"); + const u8 gMonIcon_Houndoom[] = INCBIN_U8("graphics/pokemon/houndoom/icon.4bpp"); + const u8 gMonFootprint_Houndoom[] = INCBIN_U8("graphics/pokemon/houndoom/footprint.1bpp"); + + const u32 gMonFrontPic_HoundoomF[] = INCBIN_U32("graphics/pokemon/houndoom/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_HoundoomF[] = INCBIN_U32("graphics/pokemon/houndoom/backf.4bpp.lz"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_HoundoomMega[] = INCBIN_U32("graphics/pokemon/houndoom/mega/front.4bpp.lz"); + const u32 gMonPalette_HoundoomMega[] = INCBIN_U32("graphics/pokemon/houndoom/mega/normal.gbapal.lz"); + const u32 gMonBackPic_HoundoomMega[] = INCBIN_U32("graphics/pokemon/houndoom/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_HoundoomMega[] = INCBIN_U32("graphics/pokemon/houndoom/mega/shiny.gbapal.lz"); + const u8 gMonIcon_HoundoomMega[] = INCBIN_U8("graphics/pokemon/houndoom/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_HOUNDOUR + +#if P_FAMILY_PHANPY + const u32 gMonFrontPic_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/anim_front.4bpp.lz"); + const u32 gMonPalette_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/normal.gbapal.lz"); + const u32 gMonBackPic_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/back.4bpp.lz"); + const u32 gMonShinyPalette_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/shiny.gbapal.lz"); + const u8 gMonIcon_Phanpy[] = INCBIN_U8("graphics/pokemon/phanpy/icon.4bpp"); + const u8 gMonFootprint_Phanpy[] = INCBIN_U8("graphics/pokemon/phanpy/footprint.1bpp"); + + const u32 gMonFrontPic_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/anim_front.4bpp.lz"); + const u32 gMonPalette_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/normal.gbapal.lz"); + const u32 gMonBackPic_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/back.4bpp.lz"); + const u32 gMonShinyPalette_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/shiny.gbapal.lz"); + const u8 gMonIcon_Donphan[] = INCBIN_U8("graphics/pokemon/donphan/icon.4bpp"); + const u8 gMonFootprint_Donphan[] = INCBIN_U8("graphics/pokemon/donphan/footprint.1bpp"); + + const u32 gMonFrontPic_DonphanF[] = INCBIN_U32("graphics/pokemon/donphan/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_DonphanF[] = INCBIN_U32("graphics/pokemon/donphan/backf.4bpp.lz"); +#endif //P_FAMILY_PHANPY + +#if P_FAMILY_STANTLER + const u32 gMonFrontPic_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/anim_front.4bpp.lz"); + const u32 gMonPalette_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/normal.gbapal.lz"); + const u32 gMonBackPic_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/back.4bpp.lz"); + const u32 gMonShinyPalette_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/shiny.gbapal.lz"); + const u8 gMonIcon_Stantler[] = INCBIN_U8("graphics/pokemon/stantler/icon.4bpp"); + const u8 gMonFootprint_Stantler[] = INCBIN_U8("graphics/pokemon/stantler/footprint.1bpp"); + +#if P_GEN_8_CROSS_EVOS + const u32 gMonFrontPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/front.4bpp.lz"); + const u32 gMonPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/normal.gbapal.lz"); + const u32 gMonBackPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/back.4bpp.lz"); + const u32 gMonShinyPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/shiny.gbapal.lz"); + const u8 gMonIcon_Wyrdeer[] = INCBIN_U8("graphics/pokemon/wyrdeer/icon.4bpp"); + //const u8 gMonFootprint_Wyrdeer[] = INCBIN_U8("graphics/pokemon/wyrdeer/footprint.1bpp"); +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_STANTLER + +#if P_FAMILY_SMEARGLE + const u32 gMonFrontPic_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/anim_front.4bpp.lz"); + const u32 gMonPalette_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/normal.gbapal.lz"); + const u32 gMonBackPic_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/back.4bpp.lz"); + const u32 gMonShinyPalette_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/shiny.gbapal.lz"); + const u8 gMonIcon_Smeargle[] = INCBIN_U8("graphics/pokemon/smeargle/icon.4bpp"); + const u8 gMonFootprint_Smeargle[] = INCBIN_U8("graphics/pokemon/smeargle/footprint.1bpp"); +#endif //P_FAMILY_SMEARGLE + +#if P_FAMILY_MILTANK + const u32 gMonFrontPic_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/anim_front.4bpp.lz"); + const u32 gMonPalette_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/normal.gbapal.lz"); + const u32 gMonBackPic_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/back.4bpp.lz"); + const u32 gMonShinyPalette_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/shiny.gbapal.lz"); + const u8 gMonIcon_Miltank[] = INCBIN_U8("graphics/pokemon/miltank/icon.4bpp"); + const u8 gMonFootprint_Miltank[] = INCBIN_U8("graphics/pokemon/miltank/footprint.1bpp"); +#endif //P_FAMILY_MILTANK + +#if P_FAMILY_RAIKOU + const u32 gMonFrontPic_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/anim_front.4bpp.lz"); + const u32 gMonPalette_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/normal.gbapal.lz"); + const u32 gMonBackPic_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/back.4bpp.lz"); + const u32 gMonShinyPalette_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/shiny.gbapal.lz"); + const u8 gMonIcon_Raikou[] = INCBIN_U8("graphics/pokemon/raikou/icon.4bpp"); + const u8 gMonFootprint_Raikou[] = INCBIN_U8("graphics/pokemon/raikou/footprint.1bpp"); +#endif //P_FAMILY_RAIKOU + +#if P_FAMILY_ENTEI + const u32 gMonFrontPic_Entei[] = INCBIN_U32("graphics/pokemon/entei/anim_front.4bpp.lz"); + const u32 gMonPalette_Entei[] = INCBIN_U32("graphics/pokemon/entei/normal.gbapal.lz"); + const u32 gMonBackPic_Entei[] = INCBIN_U32("graphics/pokemon/entei/back.4bpp.lz"); + const u32 gMonShinyPalette_Entei[] = INCBIN_U32("graphics/pokemon/entei/shiny.gbapal.lz"); + const u8 gMonIcon_Entei[] = INCBIN_U8("graphics/pokemon/entei/icon.4bpp"); + const u8 gMonFootprint_Entei[] = INCBIN_U8("graphics/pokemon/entei/footprint.1bpp"); +#endif //P_FAMILY_ENTEI + +#if P_FAMILY_SUICUNE + const u32 gMonFrontPic_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/anim_front.4bpp.lz"); + const u32 gMonPalette_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/normal.gbapal.lz"); + const u32 gMonBackPic_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/back.4bpp.lz"); + const u32 gMonShinyPalette_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/shiny.gbapal.lz"); + const u8 gMonIcon_Suicune[] = INCBIN_U8("graphics/pokemon/suicune/icon.4bpp"); + const u8 gMonFootprint_Suicune[] = INCBIN_U8("graphics/pokemon/suicune/footprint.1bpp"); +#endif //P_FAMILY_SUICUNE + +#if P_FAMILY_LARVITAR + const u32 gMonFrontPic_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/anim_front.4bpp.lz"); + const u32 gMonPalette_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/normal.gbapal.lz"); + const u32 gMonBackPic_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/back.4bpp.lz"); + const u32 gMonShinyPalette_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/shiny.gbapal.lz"); + const u8 gMonIcon_Larvitar[] = INCBIN_U8("graphics/pokemon/larvitar/icon.4bpp"); + const u8 gMonFootprint_Larvitar[] = INCBIN_U8("graphics/pokemon/larvitar/footprint.1bpp"); + + const u32 gMonFrontPic_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/anim_front.4bpp.lz"); + const u32 gMonPalette_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/normal.gbapal.lz"); + const u32 gMonBackPic_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/back.4bpp.lz"); + const u32 gMonShinyPalette_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/shiny.gbapal.lz"); + const u8 gMonIcon_Pupitar[] = INCBIN_U8("graphics/pokemon/pupitar/icon.4bpp"); + const u8 gMonFootprint_Pupitar[] = INCBIN_U8("graphics/pokemon/pupitar/footprint.1bpp"); + + const u32 gMonFrontPic_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/anim_front.4bpp.lz"); + const u32 gMonPalette_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/normal.gbapal.lz"); + const u32 gMonBackPic_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/back.4bpp.lz"); + const u32 gMonShinyPalette_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/shiny.gbapal.lz"); + const u8 gMonIcon_Tyranitar[] = INCBIN_U8("graphics/pokemon/tyranitar/icon.4bpp"); + const u8 gMonFootprint_Tyranitar[] = INCBIN_U8("graphics/pokemon/tyranitar/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_TyranitarMega[] = INCBIN_U32("graphics/pokemon/tyranitar/mega/front.4bpp.lz"); + const u32 gMonPalette_TyranitarMega[] = INCBIN_U32("graphics/pokemon/tyranitar/mega/normal.gbapal.lz"); + const u32 gMonBackPic_TyranitarMega[] = INCBIN_U32("graphics/pokemon/tyranitar/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_TyranitarMega[] = INCBIN_U32("graphics/pokemon/tyranitar/mega/shiny.gbapal.lz"); + const u8 gMonIcon_TyranitarMega[] = INCBIN_U8("graphics/pokemon/tyranitar/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LARVITAR + +#if P_FAMILY_LUGIA + const u32 gMonFrontPic_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/anim_front.4bpp.lz"); + const u32 gMonPalette_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/normal.gbapal.lz"); + const u32 gMonBackPic_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/back.4bpp.lz"); + const u32 gMonShinyPalette_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/shiny.gbapal.lz"); + const u8 gMonIcon_Lugia[] = INCBIN_U8("graphics/pokemon/lugia/icon.4bpp"); + const u8 gMonFootprint_Lugia[] = INCBIN_U8("graphics/pokemon/lugia/footprint.1bpp"); +#endif //P_FAMILY_LUGIA + +#if P_FAMILY_HO_OH + const u32 gMonFrontPic_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/anim_front.4bpp.lz"); + const u32 gMonPalette_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/normal.gbapal.lz"); + const u32 gMonBackPic_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/back.4bpp.lz"); + const u32 gMonShinyPalette_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/shiny.gbapal.lz"); + const u8 gMonIcon_HoOh[] = INCBIN_U8("graphics/pokemon/ho_oh/icon.4bpp"); + const u8 gMonFootprint_HoOh[] = INCBIN_U8("graphics/pokemon/ho_oh/footprint.1bpp"); +#endif //P_FAMILY_HO_OH + +#if P_FAMILY_CELEBI + const u32 gMonFrontPic_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/anim_front.4bpp.lz"); + const u32 gMonPalette_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/normal.gbapal.lz"); + const u32 gMonBackPic_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/back.4bpp.lz"); + const u32 gMonShinyPalette_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/shiny.gbapal.lz"); + const u8 gMonIcon_Celebi[] = INCBIN_U8("graphics/pokemon/celebi/icon.4bpp"); + const u8 gMonFootprint_Celebi[] = INCBIN_U8("graphics/pokemon/celebi/footprint.1bpp"); +#endif //P_FAMILY_CELEBI + +#if P_FAMILY_TREECKO + const u32 gMonFrontPic_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/anim_front.4bpp.lz"); + const u32 gMonPalette_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/normal.gbapal.lz"); + const u32 gMonBackPic_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/back.4bpp.lz"); + const u32 gMonShinyPalette_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/shiny.gbapal.lz"); + const u8 gMonIcon_Treecko[] = INCBIN_U8("graphics/pokemon/treecko/icon.4bpp"); + const u8 gMonFootprint_Treecko[] = INCBIN_U8("graphics/pokemon/treecko/footprint.1bpp"); + + const u32 gMonFrontPic_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/anim_front.4bpp.lz"); + const u32 gMonPalette_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/normal.gbapal.lz"); + const u32 gMonBackPic_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/back.4bpp.lz"); + const u32 gMonShinyPalette_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/shiny.gbapal.lz"); + const u8 gMonIcon_Grovyle[] = INCBIN_U8("graphics/pokemon/grovyle/icon.4bpp"); + const u8 gMonFootprint_Grovyle[] = INCBIN_U8("graphics/pokemon/grovyle/footprint.1bpp"); + + const u32 gMonFrontPic_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/anim_front.4bpp.lz"); + const u32 gMonPalette_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/normal.gbapal.lz"); + const u32 gMonBackPic_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/back.4bpp.lz"); + const u32 gMonShinyPalette_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/shiny.gbapal.lz"); + const u8 gMonIcon_Sceptile[] = INCBIN_U8("graphics/pokemon/sceptile/icon.4bpp"); + const u8 gMonFootprint_Sceptile[] = INCBIN_U8("graphics/pokemon/sceptile/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_SceptileMega[] = INCBIN_U32("graphics/pokemon/sceptile/mega/front.4bpp.lz"); + const u32 gMonPalette_SceptileMega[] = INCBIN_U32("graphics/pokemon/sceptile/mega/normal.gbapal.lz"); + const u32 gMonBackPic_SceptileMega[] = INCBIN_U32("graphics/pokemon/sceptile/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_SceptileMega[] = INCBIN_U32("graphics/pokemon/sceptile/mega/shiny.gbapal.lz"); + const u8 gMonIcon_SceptileMega[] = INCBIN_U8("graphics/pokemon/sceptile/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_TREECKO + +#if P_FAMILY_TORCHIC + const u32 gMonFrontPic_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/anim_front.4bpp.lz"); + const u32 gMonPalette_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/normal.gbapal.lz"); + const u32 gMonBackPic_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/back.4bpp.lz"); + const u32 gMonShinyPalette_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/shiny.gbapal.lz"); + const u8 gMonIcon_Torchic[] = INCBIN_U8("graphics/pokemon/torchic/icon.4bpp"); + const u8 gMonFootprint_Torchic[] = INCBIN_U8("graphics/pokemon/torchic/footprint.1bpp"); + + const u32 gMonBackPic_TorchicF[] = INCBIN_U32("graphics/pokemon/torchic/backf.4bpp.lz"); + + const u32 gMonFrontPic_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/anim_front.4bpp.lz"); + const u32 gMonPalette_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/normal.gbapal.lz"); + const u32 gMonBackPic_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/back.4bpp.lz"); + const u32 gMonShinyPalette_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/shiny.gbapal.lz"); + const u8 gMonIcon_Combusken[] = INCBIN_U8("graphics/pokemon/combusken/icon.4bpp"); + const u8 gMonFootprint_Combusken[] = INCBIN_U8("graphics/pokemon/combusken/footprint.1bpp"); + + const u32 gMonFrontPic_CombuskenF[] = INCBIN_U32("graphics/pokemon/combusken/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_CombuskenF[] = INCBIN_U32("graphics/pokemon/combusken/backf.4bpp.lz"); + + const u32 gMonFrontPic_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/anim_front.4bpp.lz"); + const u32 gMonPalette_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/normal.gbapal.lz"); + const u32 gMonBackPic_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/back.4bpp.lz"); + const u32 gMonShinyPalette_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/shiny.gbapal.lz"); + const u8 gMonIcon_Blaziken[] = INCBIN_U8("graphics/pokemon/blaziken/icon.4bpp"); + const u8 gMonFootprint_Blaziken[] = INCBIN_U8("graphics/pokemon/blaziken/footprint.1bpp"); + + const u32 gMonFrontPic_BlazikenF[] = INCBIN_U32("graphics/pokemon/blaziken/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_BlazikenF[] = INCBIN_U32("graphics/pokemon/blaziken/backf.4bpp.lz"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_BlazikenMega[] = INCBIN_U32("graphics/pokemon/blaziken/mega/front.4bpp.lz"); + const u32 gMonPalette_BlazikenMega[] = INCBIN_U32("graphics/pokemon/blaziken/mega/normal.gbapal.lz"); + const u32 gMonBackPic_BlazikenMega[] = INCBIN_U32("graphics/pokemon/blaziken/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_BlazikenMega[] = INCBIN_U32("graphics/pokemon/blaziken/mega/shiny.gbapal.lz"); + const u8 gMonIcon_BlazikenMega[] = INCBIN_U8("graphics/pokemon/blaziken/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_TORCHIC + +#if P_FAMILY_MUDKIP + const u32 gMonFrontPic_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/anim_front.4bpp.lz"); + const u32 gMonPalette_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/normal.gbapal.lz"); + const u32 gMonBackPic_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/back.4bpp.lz"); + const u32 gMonShinyPalette_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/shiny.gbapal.lz"); + const u8 gMonIcon_Mudkip[] = INCBIN_U8("graphics/pokemon/mudkip/icon.4bpp"); + const u8 gMonFootprint_Mudkip[] = INCBIN_U8("graphics/pokemon/mudkip/footprint.1bpp"); + + const u32 gMonFrontPic_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/anim_front.4bpp.lz"); + const u32 gMonPalette_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/normal.gbapal.lz"); + const u32 gMonBackPic_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/back.4bpp.lz"); + const u32 gMonShinyPalette_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/shiny.gbapal.lz"); + const u8 gMonIcon_Marshtomp[] = INCBIN_U8("graphics/pokemon/marshtomp/icon.4bpp"); + const u8 gMonFootprint_Marshtomp[] = INCBIN_U8("graphics/pokemon/marshtomp/footprint.1bpp"); + + const u32 gMonFrontPic_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/anim_front.4bpp.lz"); + const u32 gMonPalette_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/normal.gbapal.lz"); + const u32 gMonBackPic_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/back.4bpp.lz"); + const u32 gMonShinyPalette_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/shiny.gbapal.lz"); + const u8 gMonIcon_Swampert[] = INCBIN_U8("graphics/pokemon/swampert/icon.4bpp"); + const u8 gMonFootprint_Swampert[] = INCBIN_U8("graphics/pokemon/swampert/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_SwampertMega[] = INCBIN_U32("graphics/pokemon/swampert/mega/front.4bpp.lz"); + const u32 gMonPalette_SwampertMega[] = INCBIN_U32("graphics/pokemon/swampert/mega/normal.gbapal.lz"); + const u32 gMonBackPic_SwampertMega[] = INCBIN_U32("graphics/pokemon/swampert/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_SwampertMega[] = INCBIN_U32("graphics/pokemon/swampert/mega/shiny.gbapal.lz"); + const u8 gMonIcon_SwampertMega[] = INCBIN_U8("graphics/pokemon/swampert/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MUDKIP + +#if P_FAMILY_POOCHYENA + const u32 gMonFrontPic_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/anim_front.4bpp.lz"); + const u32 gMonPalette_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/normal.gbapal.lz"); + const u32 gMonBackPic_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/back.4bpp.lz"); + const u32 gMonShinyPalette_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/shiny.gbapal.lz"); + const u8 gMonIcon_Poochyena[] = INCBIN_U8("graphics/pokemon/poochyena/icon.4bpp"); + const u8 gMonFootprint_Poochyena[] = INCBIN_U8("graphics/pokemon/poochyena/footprint.1bpp"); + + const u32 gMonFrontPic_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/anim_front.4bpp.lz"); + const u32 gMonPalette_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/normal.gbapal.lz"); + const u32 gMonBackPic_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/back.4bpp.lz"); + const u32 gMonShinyPalette_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/shiny.gbapal.lz"); + const u8 gMonIcon_Mightyena[] = INCBIN_U8("graphics/pokemon/mightyena/icon.4bpp"); + const u8 gMonFootprint_Mightyena[] = INCBIN_U8("graphics/pokemon/mightyena/footprint.1bpp"); +#endif //P_FAMILY_POOCHYENA + +#if P_FAMILY_ZIGZAGOON + const u32 gMonFrontPic_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/anim_front.4bpp.lz"); + const u32 gMonPalette_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/normal.gbapal.lz"); + const u32 gMonBackPic_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/back.4bpp.lz"); + const u32 gMonShinyPalette_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/shiny.gbapal.lz"); + const u8 gMonIcon_Zigzagoon[] = INCBIN_U8("graphics/pokemon/zigzagoon/icon.4bpp"); + const u8 gMonFootprint_Zigzagoon[] = INCBIN_U8("graphics/pokemon/zigzagoon/footprint.1bpp"); + + const u32 gMonFrontPic_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/anim_front.4bpp.lz"); + const u32 gMonPalette_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/normal.gbapal.lz"); + const u32 gMonBackPic_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/back.4bpp.lz"); + const u32 gMonShinyPalette_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/shiny.gbapal.lz"); + const u8 gMonIcon_Linoone[] = INCBIN_U8("graphics/pokemon/linoone/icon.4bpp"); + const u8 gMonFootprint_Linoone[] = INCBIN_U8("graphics/pokemon/linoone/footprint.1bpp"); + +#if P_GALARIAN_FORMS + const u32 gMonFrontPic_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzagoon/galarian/front.4bpp.lz"); + const u32 gMonPalette_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzagoon/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzagoon/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzagoon/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_ZigzagoonGalarian[] = INCBIN_U8("graphics/pokemon/zigzagoon/galarian/icon.4bpp"); + + const u32 gMonFrontPic_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/front.4bpp.lz"); + const u32 gMonPalette_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_LinooneGalarian[] = INCBIN_U32("graphics/pokemon/linoone/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_LinooneGalarian[] = INCBIN_U8("graphics/pokemon/linoone/galarian/icon.4bpp"); + + const u32 gMonFrontPic_Obstagoon[] = INCBIN_U32("graphics/pokemon/obstagoon/front.4bpp.lz"); + const u32 gMonPalette_Obstagoon[] = INCBIN_U32("graphics/pokemon/obstagoon/normal.gbapal.lz"); + const u32 gMonBackPic_Obstagoon[] = INCBIN_U32("graphics/pokemon/obstagoon/back.4bpp.lz"); + const u32 gMonShinyPalette_Obstagoon[] = INCBIN_U32("graphics/pokemon/obstagoon/shiny.gbapal.lz"); + const u8 gMonIcon_Obstagoon[] = INCBIN_U8("graphics/pokemon/obstagoon/icon.4bpp"); + const u8 gMonFootprint_Obstagoon[] = INCBIN_U8("graphics/pokemon/obstagoon/footprint.1bpp"); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZIGZAGOON + +#if P_FAMILY_WURMPLE + const u32 gMonFrontPic_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/anim_front.4bpp.lz"); + const u32 gMonPalette_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/normal.gbapal.lz"); + const u32 gMonBackPic_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/back.4bpp.lz"); + const u32 gMonShinyPalette_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/shiny.gbapal.lz"); + const u8 gMonIcon_Wurmple[] = INCBIN_U8("graphics/pokemon/wurmple/icon.4bpp"); + const u8 gMonFootprint_Wurmple[] = INCBIN_U8("graphics/pokemon/wurmple/footprint.1bpp"); + + const u32 gMonFrontPic_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/anim_front.4bpp.lz"); + const u32 gMonPalette_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/normal.gbapal.lz"); + const u32 gMonBackPic_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/back.4bpp.lz"); + const u32 gMonShinyPalette_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/shiny.gbapal.lz"); + const u8 gMonIcon_Silcoon[] = INCBIN_U8("graphics/pokemon/silcoon/icon.4bpp"); + const u8 gMonFootprint_Silcoon[] = INCBIN_U8("graphics/pokemon/silcoon/footprint.1bpp"); + + const u32 gMonFrontPic_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/anim_front.4bpp.lz"); + const u32 gMonPalette_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/normal.gbapal.lz"); + const u32 gMonBackPic_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/back.4bpp.lz"); + const u32 gMonShinyPalette_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/shiny.gbapal.lz"); + const u8 gMonIcon_Beautifly[] = INCBIN_U8("graphics/pokemon/beautifly/icon.4bpp"); + const u8 gMonFootprint_Beautifly[] = INCBIN_U8("graphics/pokemon/beautifly/footprint.1bpp"); + + const u32 gMonFrontPic_BeautiflyF[] = INCBIN_U32("graphics/pokemon/beautifly/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_BeautiflyF[] = INCBIN_U32("graphics/pokemon/beautifly/backf.4bpp.lz"); + + const u32 gMonFrontPic_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/anim_front.4bpp.lz"); + const u32 gMonPalette_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/normal.gbapal.lz"); + const u32 gMonBackPic_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/back.4bpp.lz"); + const u32 gMonShinyPalette_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/shiny.gbapal.lz"); + const u8 gMonIcon_Cascoon[] = INCBIN_U8("graphics/pokemon/cascoon/icon.4bpp"); + const u8 gMonFootprint_Cascoon[] = INCBIN_U8("graphics/pokemon/cascoon/footprint.1bpp"); + + const u32 gMonFrontPic_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/anim_front.4bpp.lz"); + const u32 gMonPalette_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/normal.gbapal.lz"); + const u32 gMonBackPic_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/back.4bpp.lz"); + const u32 gMonShinyPalette_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/shiny.gbapal.lz"); + const u8 gMonIcon_Dustox[] = INCBIN_U8("graphics/pokemon/dustox/icon.4bpp"); + const u8 gMonFootprint_Dustox[] = INCBIN_U8("graphics/pokemon/dustox/footprint.1bpp"); + + const u32 gMonFrontPic_DustoxF[] = INCBIN_U32("graphics/pokemon/dustox/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_DustoxF[] = INCBIN_U32("graphics/pokemon/dustox/backf.4bpp.lz"); +#endif //P_FAMILY_WURMPLE + +#if P_FAMILY_LOTAD + const u32 gMonFrontPic_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/anim_front.4bpp.lz"); + const u32 gMonPalette_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/normal.gbapal.lz"); + const u32 gMonBackPic_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/back.4bpp.lz"); + const u32 gMonShinyPalette_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/shiny.gbapal.lz"); + const u8 gMonIcon_Lotad[] = INCBIN_U8("graphics/pokemon/lotad/icon.4bpp"); + const u8 gMonFootprint_Lotad[] = INCBIN_U8("graphics/pokemon/lotad/footprint.1bpp"); + + const u32 gMonFrontPic_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/anim_front.4bpp.lz"); + const u32 gMonPalette_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/normal.gbapal.lz"); + const u32 gMonBackPic_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/back.4bpp.lz"); + const u32 gMonShinyPalette_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/shiny.gbapal.lz"); + const u8 gMonIcon_Lombre[] = INCBIN_U8("graphics/pokemon/lombre/icon.4bpp"); + const u8 gMonFootprint_Lombre[] = INCBIN_U8("graphics/pokemon/lombre/footprint.1bpp"); + + const u32 gMonFrontPic_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/anim_front.4bpp.lz"); + const u32 gMonPalette_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/normal.gbapal.lz"); + const u32 gMonBackPic_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/back.4bpp.lz"); + const u32 gMonShinyPalette_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/shiny.gbapal.lz"); + const u8 gMonIcon_Ludicolo[] = INCBIN_U8("graphics/pokemon/ludicolo/icon.4bpp"); + const u8 gMonFootprint_Ludicolo[] = INCBIN_U8("graphics/pokemon/ludicolo/footprint.1bpp"); + + const u32 gMonFrontPic_LudicoloF[] = INCBIN_U32("graphics/pokemon/ludicolo/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_LudicoloF[] = INCBIN_U32("graphics/pokemon/ludicolo/backf.4bpp.lz"); +#endif //P_FAMILY_LOTAD + +#if P_FAMILY_SEEDOT + const u32 gMonFrontPic_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/anim_front.4bpp.lz"); + const u32 gMonPalette_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/normal.gbapal.lz"); + const u32 gMonBackPic_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/back.4bpp.lz"); + const u32 gMonShinyPalette_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/shiny.gbapal.lz"); + const u8 gMonIcon_Seedot[] = INCBIN_U8("graphics/pokemon/seedot/icon.4bpp"); + const u8 gMonFootprint_Seedot[] = INCBIN_U8("graphics/pokemon/seedot/footprint.1bpp"); + + const u32 gMonFrontPic_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/anim_front.4bpp.lz"); + const u32 gMonPalette_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/normal.gbapal.lz"); + const u32 gMonBackPic_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/back.4bpp.lz"); + const u32 gMonShinyPalette_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/shiny.gbapal.lz"); + const u8 gMonIcon_Nuzleaf[] = INCBIN_U8("graphics/pokemon/nuzleaf/icon.4bpp"); + const u8 gMonFootprint_Nuzleaf[] = INCBIN_U8("graphics/pokemon/nuzleaf/footprint.1bpp"); + + const u32 gMonFrontPic_NuzleafF[] = INCBIN_U32("graphics/pokemon/nuzleaf/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_NuzleafF[] = INCBIN_U32("graphics/pokemon/nuzleaf/backf.4bpp.lz"); + + const u32 gMonFrontPic_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/anim_front.4bpp.lz"); + const u32 gMonPalette_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/normal.gbapal.lz"); + const u32 gMonBackPic_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/back.4bpp.lz"); + const u32 gMonShinyPalette_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/shiny.gbapal.lz"); + const u8 gMonIcon_Shiftry[] = INCBIN_U8("graphics/pokemon/shiftry/icon.4bpp"); + const u8 gMonFootprint_Shiftry[] = INCBIN_U8("graphics/pokemon/shiftry/footprint.1bpp"); + + const u32 gMonFrontPic_ShiftryF[] = INCBIN_U32("graphics/pokemon/shiftry/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_ShiftryF[] = INCBIN_U32("graphics/pokemon/shiftry/backf.4bpp.lz"); +#endif //P_FAMILY_SEEDOT + +#if P_FAMILY_TAILLOW + const u32 gMonFrontPic_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/anim_front.4bpp.lz"); + const u32 gMonPalette_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/normal.gbapal.lz"); + const u32 gMonBackPic_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/back.4bpp.lz"); + const u32 gMonShinyPalette_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/shiny.gbapal.lz"); + const u8 gMonIcon_Taillow[] = INCBIN_U8("graphics/pokemon/taillow/icon.4bpp"); + const u8 gMonFootprint_Taillow[] = INCBIN_U8("graphics/pokemon/taillow/footprint.1bpp"); + + const u32 gMonFrontPic_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/anim_front.4bpp.lz"); + const u32 gMonPalette_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/normal.gbapal.lz"); + const u32 gMonBackPic_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/back.4bpp.lz"); + const u32 gMonShinyPalette_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/shiny.gbapal.lz"); + const u8 gMonIcon_Swellow[] = INCBIN_U8("graphics/pokemon/swellow/icon.4bpp"); + const u8 gMonFootprint_Swellow[] = INCBIN_U8("graphics/pokemon/swellow/footprint.1bpp"); +#endif //P_FAMILY_TAILLOW + +#if P_FAMILY_WINGULL + const u32 gMonFrontPic_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/anim_front.4bpp.lz"); + const u32 gMonPalette_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/normal.gbapal.lz"); + const u32 gMonBackPic_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/back.4bpp.lz"); + const u32 gMonShinyPalette_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/shiny.gbapal.lz"); + const u8 gMonIcon_Wingull[] = INCBIN_U8("graphics/pokemon/wingull/icon.4bpp"); + const u8 gMonFootprint_Wingull[] = INCBIN_U8("graphics/pokemon/wingull/footprint.1bpp"); + + const u32 gMonFrontPic_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/anim_front.4bpp.lz"); + const u32 gMonPalette_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/normal.gbapal.lz"); + const u32 gMonBackPic_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/back.4bpp.lz"); + const u32 gMonShinyPalette_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/shiny.gbapal.lz"); + const u8 gMonIcon_Pelipper[] = INCBIN_U8("graphics/pokemon/pelipper/icon.4bpp"); + const u8 gMonFootprint_Pelipper[] = INCBIN_U8("graphics/pokemon/pelipper/footprint.1bpp"); +#endif //P_FAMILY_WINGULL + +#if P_FAMILY_RALTS + const u32 gMonFrontPic_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/anim_front.4bpp.lz"); + const u32 gMonPalette_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/normal.gbapal.lz"); + const u32 gMonBackPic_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/back.4bpp.lz"); + const u32 gMonShinyPalette_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/shiny.gbapal.lz"); + const u8 gMonIcon_Ralts[] = INCBIN_U8("graphics/pokemon/ralts/icon.4bpp"); + const u8 gMonFootprint_Ralts[] = INCBIN_U8("graphics/pokemon/ralts/footprint.1bpp"); + + const u32 gMonFrontPic_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/anim_front.4bpp.lz"); + const u32 gMonPalette_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/normal.gbapal.lz"); + const u32 gMonBackPic_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/back.4bpp.lz"); + const u32 gMonShinyPalette_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/shiny.gbapal.lz"); + const u8 gMonIcon_Kirlia[] = INCBIN_U8("graphics/pokemon/kirlia/icon.4bpp"); + const u8 gMonFootprint_Kirlia[] = INCBIN_U8("graphics/pokemon/kirlia/footprint.1bpp"); + + const u32 gMonFrontPic_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/anim_front.4bpp.lz"); + const u32 gMonPalette_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/normal.gbapal.lz"); + const u32 gMonBackPic_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/back.4bpp.lz"); + const u32 gMonShinyPalette_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/shiny.gbapal.lz"); + const u8 gMonIcon_Gardevoir[] = INCBIN_U8("graphics/pokemon/gardevoir/icon.4bpp"); + const u8 gMonFootprint_Gardevoir[] = INCBIN_U8("graphics/pokemon/gardevoir/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_GardevoirMega[] = INCBIN_U32("graphics/pokemon/gardevoir/mega/front.4bpp.lz"); + const u32 gMonPalette_GardevoirMega[] = INCBIN_U32("graphics/pokemon/gardevoir/mega/normal.gbapal.lz"); + const u32 gMonBackPic_GardevoirMega[] = INCBIN_U32("graphics/pokemon/gardevoir/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_GardevoirMega[] = INCBIN_U32("graphics/pokemon/gardevoir/mega/shiny.gbapal.lz"); + const u8 gMonIcon_GardevoirMega[] = INCBIN_U8("graphics/pokemon/gardevoir/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Gallade[] = INCBIN_U32("graphics/pokemon/gallade/anim_front.4bpp.lz"); + const u32 gMonPalette_Gallade[] = INCBIN_U32("graphics/pokemon/gallade/normal.gbapal.lz"); + const u32 gMonBackPic_Gallade[] = INCBIN_U32("graphics/pokemon/gallade/back.4bpp.lz"); + const u32 gMonShinyPalette_Gallade[] = INCBIN_U32("graphics/pokemon/gallade/shiny.gbapal.lz"); + const u8 gMonIcon_Gallade[] = INCBIN_U8("graphics/pokemon/gallade/icon.4bpp"); + const u8 gMonFootprint_Gallade[] = INCBIN_U8("graphics/pokemon/gallade/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_GalladeMega[] = INCBIN_U32("graphics/pokemon/gallade/mega/front.4bpp.lz"); + const u32 gMonPalette_GalladeMega[] = INCBIN_U32("graphics/pokemon/gallade/mega/normal.gbapal.lz"); + const u32 gMonBackPic_GalladeMega[] = INCBIN_U32("graphics/pokemon/gallade/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_GalladeMega[] = INCBIN_U32("graphics/pokemon/gallade/mega/shiny.gbapal.lz"); + const u8 gMonIcon_GalladeMega[] = INCBIN_U8("graphics/pokemon/gallade/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RALTS + +#if P_FAMILY_SURSKIT + const u32 gMonFrontPic_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/anim_front.4bpp.lz"); + const u32 gMonPalette_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/normal.gbapal.lz"); + const u32 gMonBackPic_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/back.4bpp.lz"); + const u32 gMonShinyPalette_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/shiny.gbapal.lz"); + const u8 gMonIcon_Surskit[] = INCBIN_U8("graphics/pokemon/surskit/icon.4bpp"); + const u8 gMonFootprint_Surskit[] = INCBIN_U8("graphics/pokemon/surskit/footprint.1bpp"); + + const u32 gMonFrontPic_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/anim_front.4bpp.lz"); + const u32 gMonPalette_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/normal.gbapal.lz"); + const u32 gMonBackPic_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/back.4bpp.lz"); + const u32 gMonShinyPalette_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/shiny.gbapal.lz"); + const u8 gMonIcon_Masquerain[] = INCBIN_U8("graphics/pokemon/masquerain/icon.4bpp"); + const u8 gMonFootprint_Masquerain[] = INCBIN_U8("graphics/pokemon/masquerain/footprint.1bpp"); +#endif //P_FAMILY_SURSKIT + +#if P_FAMILY_SHROOMISH + const u32 gMonFrontPic_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/anim_front.4bpp.lz"); + const u32 gMonPalette_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/normal.gbapal.lz"); + const u32 gMonBackPic_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/back.4bpp.lz"); + const u32 gMonShinyPalette_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/shiny.gbapal.lz"); + const u8 gMonIcon_Shroomish[] = INCBIN_U8("graphics/pokemon/shroomish/icon.4bpp"); + const u8 gMonFootprint_Shroomish[] = INCBIN_U8("graphics/pokemon/shroomish/footprint.1bpp"); + + const u32 gMonFrontPic_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/anim_front.4bpp.lz"); + const u32 gMonPalette_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/normal.gbapal.lz"); + const u32 gMonBackPic_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/back.4bpp.lz"); + const u32 gMonShinyPalette_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/shiny.gbapal.lz"); + const u8 gMonIcon_Breloom[] = INCBIN_U8("graphics/pokemon/breloom/icon.4bpp"); + const u8 gMonFootprint_Breloom[] = INCBIN_U8("graphics/pokemon/breloom/footprint.1bpp"); +#endif //P_FAMILY_SHROOMISH + +#if P_FAMILY_SLAKOTH + const u32 gMonFrontPic_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/anim_front.4bpp.lz"); + const u32 gMonPalette_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/normal.gbapal.lz"); + const u32 gMonBackPic_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/back.4bpp.lz"); + const u32 gMonShinyPalette_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/shiny.gbapal.lz"); + const u8 gMonIcon_Slakoth[] = INCBIN_U8("graphics/pokemon/slakoth/icon.4bpp"); + const u8 gMonFootprint_Slakoth[] = INCBIN_U8("graphics/pokemon/slakoth/footprint.1bpp"); + + const u32 gMonFrontPic_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/anim_front.4bpp.lz"); + const u32 gMonPalette_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/normal.gbapal.lz"); + const u32 gMonBackPic_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/back.4bpp.lz"); + const u32 gMonShinyPalette_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/shiny.gbapal.lz"); + const u8 gMonIcon_Vigoroth[] = INCBIN_U8("graphics/pokemon/vigoroth/icon.4bpp"); + const u8 gMonFootprint_Vigoroth[] = INCBIN_U8("graphics/pokemon/vigoroth/footprint.1bpp"); + + const u32 gMonFrontPic_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/anim_front.4bpp.lz"); + const u32 gMonPalette_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/normal.gbapal.lz"); + const u32 gMonBackPic_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/back.4bpp.lz"); + const u32 gMonShinyPalette_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/shiny.gbapal.lz"); + const u8 gMonIcon_Slaking[] = INCBIN_U8("graphics/pokemon/slaking/icon.4bpp"); + const u8 gMonFootprint_Slaking[] = INCBIN_U8("graphics/pokemon/slaking/footprint.1bpp"); +#endif //P_FAMILY_SLAKOTH + +#if P_FAMILY_NINCADA + const u32 gMonFrontPic_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/anim_front.4bpp.lz"); + const u32 gMonPalette_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/normal.gbapal.lz"); + const u32 gMonBackPic_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/back.4bpp.lz"); + const u32 gMonShinyPalette_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/shiny.gbapal.lz"); + const u8 gMonIcon_Nincada[] = INCBIN_U8("graphics/pokemon/nincada/icon.4bpp"); + const u8 gMonFootprint_Nincada[] = INCBIN_U8("graphics/pokemon/nincada/footprint.1bpp"); + + const u32 gMonFrontPic_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/anim_front.4bpp.lz"); + const u32 gMonPalette_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/normal.gbapal.lz"); + const u32 gMonBackPic_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/back.4bpp.lz"); + const u32 gMonShinyPalette_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/shiny.gbapal.lz"); + const u8 gMonIcon_Ninjask[] = INCBIN_U8("graphics/pokemon/ninjask/icon.4bpp"); + const u8 gMonFootprint_Ninjask[] = INCBIN_U8("graphics/pokemon/ninjask/footprint.1bpp"); + + const u32 gMonFrontPic_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/anim_front.4bpp.lz"); + const u32 gMonPalette_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/normal.gbapal.lz"); + const u32 gMonBackPic_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/back.4bpp.lz"); + const u32 gMonShinyPalette_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/shiny.gbapal.lz"); + const u8 gMonIcon_Shedinja[] = INCBIN_U8("graphics/pokemon/shedinja/icon.4bpp"); + const u8 gMonFootprint_Shedinja[] = INCBIN_U8("graphics/pokemon/shedinja/footprint.1bpp"); +#endif //P_FAMILY_NINCADA + +#if P_FAMILY_WHISMUR + const u32 gMonFrontPic_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/anim_front.4bpp.lz"); + const u32 gMonPalette_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/normal.gbapal.lz"); + const u32 gMonBackPic_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/back.4bpp.lz"); + const u32 gMonShinyPalette_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/shiny.gbapal.lz"); + const u8 gMonIcon_Whismur[] = INCBIN_U8("graphics/pokemon/whismur/icon.4bpp"); + const u8 gMonFootprint_Whismur[] = INCBIN_U8("graphics/pokemon/whismur/footprint.1bpp"); + + const u32 gMonFrontPic_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/anim_front.4bpp.lz"); + const u32 gMonPalette_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/normal.gbapal.lz"); + const u32 gMonBackPic_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/back.4bpp.lz"); + const u32 gMonShinyPalette_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/shiny.gbapal.lz"); + const u8 gMonIcon_Loudred[] = INCBIN_U8("graphics/pokemon/loudred/icon.4bpp"); + const u8 gMonFootprint_Loudred[] = INCBIN_U8("graphics/pokemon/loudred/footprint.1bpp"); + + const u32 gMonFrontPic_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/anim_front.4bpp.lz"); + const u32 gMonPalette_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/normal.gbapal.lz"); + const u32 gMonBackPic_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/back.4bpp.lz"); + const u32 gMonShinyPalette_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/shiny.gbapal.lz"); + const u8 gMonIcon_Exploud[] = INCBIN_U8("graphics/pokemon/exploud/icon.4bpp"); + const u8 gMonFootprint_Exploud[] = INCBIN_U8("graphics/pokemon/exploud/footprint.1bpp"); +#endif //P_FAMILY_WHISMUR + +#if P_FAMILY_MAKUHITA + const u32 gMonFrontPic_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/anim_front.4bpp.lz"); + const u32 gMonPalette_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/normal.gbapal.lz"); + const u32 gMonBackPic_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/back.4bpp.lz"); + const u32 gMonShinyPalette_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/shiny.gbapal.lz"); + const u8 gMonIcon_Makuhita[] = INCBIN_U8("graphics/pokemon/makuhita/icon.4bpp"); + const u8 gMonFootprint_Makuhita[] = INCBIN_U8("graphics/pokemon/makuhita/footprint.1bpp"); + + const u32 gMonFrontPic_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/anim_front.4bpp.lz"); + const u32 gMonPalette_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/normal.gbapal.lz"); + const u32 gMonBackPic_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/back.4bpp.lz"); + const u32 gMonShinyPalette_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/shiny.gbapal.lz"); + const u8 gMonIcon_Hariyama[] = INCBIN_U8("graphics/pokemon/hariyama/icon.4bpp"); + const u8 gMonFootprint_Hariyama[] = INCBIN_U8("graphics/pokemon/hariyama/footprint.1bpp"); +#endif //P_FAMILY_MAKUHITA + +#if P_FAMILY_NOSEPASS + const u32 gMonFrontPic_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/anim_front.4bpp.lz"); + const u32 gMonPalette_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/normal.gbapal.lz"); + const u32 gMonBackPic_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/back.4bpp.lz"); + const u32 gMonShinyPalette_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/shiny.gbapal.lz"); + const u8 gMonIcon_Nosepass[] = INCBIN_U8("graphics/pokemon/nosepass/icon.4bpp"); + const u8 gMonFootprint_Nosepass[] = INCBIN_U8("graphics/pokemon/nosepass/footprint.1bpp"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Probopass[] = INCBIN_U32("graphics/pokemon/probopass/anim_front.4bpp.lz"); + const u32 gMonPalette_Probopass[] = INCBIN_U32("graphics/pokemon/probopass/normal.gbapal.lz"); + const u32 gMonBackPic_Probopass[] = INCBIN_U32("graphics/pokemon/probopass/back.4bpp.lz"); + const u32 gMonShinyPalette_Probopass[] = INCBIN_U32("graphics/pokemon/probopass/shiny.gbapal.lz"); + const u8 gMonIcon_Probopass[] = INCBIN_U8("graphics/pokemon/probopass/icon.4bpp"); + const u8 gMonFootprint_Probopass[] = INCBIN_U8("graphics/pokemon/probopass/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_NOSEPASS + +#if P_FAMILY_SKITTY + const u32 gMonFrontPic_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/anim_front.4bpp.lz"); + const u32 gMonPalette_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/normal.gbapal.lz"); + const u32 gMonBackPic_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/back.4bpp.lz"); + const u32 gMonShinyPalette_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/shiny.gbapal.lz"); + const u8 gMonIcon_Skitty[] = INCBIN_U8("graphics/pokemon/skitty/icon.4bpp"); + const u8 gMonFootprint_Skitty[] = INCBIN_U8("graphics/pokemon/skitty/footprint.1bpp"); + + const u32 gMonFrontPic_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/anim_front.4bpp.lz"); + const u32 gMonPalette_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/normal.gbapal.lz"); + const u32 gMonBackPic_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/back.4bpp.lz"); + const u32 gMonShinyPalette_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/shiny.gbapal.lz"); + const u8 gMonIcon_Delcatty[] = INCBIN_U8("graphics/pokemon/delcatty/icon.4bpp"); + const u8 gMonFootprint_Delcatty[] = INCBIN_U8("graphics/pokemon/delcatty/footprint.1bpp"); +#endif //P_FAMILY_SKITTY + +#if P_FAMILY_SABLEYE + const u32 gMonFrontPic_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/anim_front.4bpp.lz"); + const u32 gMonPalette_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/normal.gbapal.lz"); + const u32 gMonBackPic_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/back.4bpp.lz"); + const u32 gMonShinyPalette_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/shiny.gbapal.lz"); + const u8 gMonIcon_Sableye[] = INCBIN_U8("graphics/pokemon/sableye/icon.4bpp"); + const u8 gMonFootprint_Sableye[] = INCBIN_U8("graphics/pokemon/sableye/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_SableyeMega[] = INCBIN_U32("graphics/pokemon/sableye/mega/front.4bpp.lz"); + const u32 gMonPalette_SableyeMega[] = INCBIN_U32("graphics/pokemon/sableye/mega/normal.gbapal.lz"); + const u32 gMonBackPic_SableyeMega[] = INCBIN_U32("graphics/pokemon/sableye/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_SableyeMega[] = INCBIN_U32("graphics/pokemon/sableye/mega/shiny.gbapal.lz"); + const u8 gMonIcon_SableyeMega[] = INCBIN_U8("graphics/pokemon/sableye/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SABLEYE + +#if P_FAMILY_MAWILE + const u32 gMonFrontPic_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/anim_front.4bpp.lz"); + const u32 gMonPalette_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/normal.gbapal.lz"); + const u32 gMonBackPic_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/back.4bpp.lz"); + const u32 gMonShinyPalette_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/shiny.gbapal.lz"); + const u8 gMonIcon_Mawile[] = INCBIN_U8("graphics/pokemon/mawile/icon.4bpp"); + const u8 gMonFootprint_Mawile[] = INCBIN_U8("graphics/pokemon/mawile/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_MawileMega[] = INCBIN_U32("graphics/pokemon/mawile/mega/front.4bpp.lz"); + const u32 gMonPalette_MawileMega[] = INCBIN_U32("graphics/pokemon/mawile/mega/normal.gbapal.lz"); + const u32 gMonBackPic_MawileMega[] = INCBIN_U32("graphics/pokemon/mawile/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_MawileMega[] = INCBIN_U32("graphics/pokemon/mawile/mega/shiny.gbapal.lz"); + const u8 gMonIcon_MawileMega[] = INCBIN_U8("graphics/pokemon/mawile/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAWILE + +#if P_FAMILY_ARON + const u32 gMonFrontPic_Aron[] = INCBIN_U32("graphics/pokemon/aron/anim_front.4bpp.lz"); + const u32 gMonPalette_Aron[] = INCBIN_U32("graphics/pokemon/aron/normal.gbapal.lz"); + const u32 gMonBackPic_Aron[] = INCBIN_U32("graphics/pokemon/aron/back.4bpp.lz"); + const u32 gMonShinyPalette_Aron[] = INCBIN_U32("graphics/pokemon/aron/shiny.gbapal.lz"); + const u8 gMonIcon_Aron[] = INCBIN_U8("graphics/pokemon/aron/icon.4bpp"); + const u8 gMonFootprint_Aron[] = INCBIN_U8("graphics/pokemon/aron/footprint.1bpp"); + + const u32 gMonFrontPic_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/anim_front.4bpp.lz"); + const u32 gMonPalette_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/normal.gbapal.lz"); + const u32 gMonBackPic_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/back.4bpp.lz"); + const u32 gMonShinyPalette_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/shiny.gbapal.lz"); + const u8 gMonIcon_Lairon[] = INCBIN_U8("graphics/pokemon/lairon/icon.4bpp"); + const u8 gMonFootprint_Lairon[] = INCBIN_U8("graphics/pokemon/lairon/footprint.1bpp"); + + const u32 gMonFrontPic_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/anim_front.4bpp.lz"); + const u32 gMonPalette_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/normal.gbapal.lz"); + const u32 gMonBackPic_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/back.4bpp.lz"); + const u32 gMonShinyPalette_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/shiny.gbapal.lz"); + const u8 gMonIcon_Aggron[] = INCBIN_U8("graphics/pokemon/aggron/icon.4bpp"); + const u8 gMonFootprint_Aggron[] = INCBIN_U8("graphics/pokemon/aggron/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_AggronMega[] = INCBIN_U32("graphics/pokemon/aggron/mega/front.4bpp.lz"); + const u32 gMonPalette_AggronMega[] = INCBIN_U32("graphics/pokemon/aggron/mega/normal.gbapal.lz"); + const u32 gMonBackPic_AggronMega[] = INCBIN_U32("graphics/pokemon/aggron/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_AggronMega[] = INCBIN_U32("graphics/pokemon/aggron/mega/shiny.gbapal.lz"); + const u8 gMonIcon_AggronMega[] = INCBIN_U8("graphics/pokemon/aggron/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ARON + +#if P_FAMILY_MEDITITE + const u32 gMonFrontPic_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/anim_front.4bpp.lz"); + const u32 gMonPalette_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/normal.gbapal.lz"); + const u32 gMonBackPic_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/back.4bpp.lz"); + const u32 gMonShinyPalette_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/shiny.gbapal.lz"); + const u8 gMonIcon_Meditite[] = INCBIN_U8("graphics/pokemon/meditite/icon.4bpp"); + const u8 gMonFootprint_Meditite[] = INCBIN_U8("graphics/pokemon/meditite/footprint.1bpp"); + + const u32 gMonFrontPic_MedititeF[] = INCBIN_U32("graphics/pokemon/meditite/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_MedititeF[] = INCBIN_U32("graphics/pokemon/meditite/backf.4bpp.lz"); + + const u32 gMonFrontPic_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/anim_front.4bpp.lz"); + const u32 gMonPalette_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/normal.gbapal.lz"); + const u32 gMonBackPic_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/back.4bpp.lz"); + const u32 gMonShinyPalette_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/shiny.gbapal.lz"); + const u8 gMonIcon_Medicham[] = INCBIN_U8("graphics/pokemon/medicham/icon.4bpp"); + const u8 gMonFootprint_Medicham[] = INCBIN_U8("graphics/pokemon/medicham/footprint.1bpp"); + + const u32 gMonFrontPic_MedichamF[] = INCBIN_U32("graphics/pokemon/medicham/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_MedichamF[] = INCBIN_U32("graphics/pokemon/medicham/backf.4bpp.lz"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_MedichamMega[] = INCBIN_U32("graphics/pokemon/medicham/mega/front.4bpp.lz"); + const u32 gMonPalette_MedichamMega[] = INCBIN_U32("graphics/pokemon/medicham/mega/normal.gbapal.lz"); + const u32 gMonBackPic_MedichamMega[] = INCBIN_U32("graphics/pokemon/medicham/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_MedichamMega[] = INCBIN_U32("graphics/pokemon/medicham/mega/shiny.gbapal.lz"); + const u8 gMonIcon_MedichamMega[] = INCBIN_U8("graphics/pokemon/medicham/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MEDITITE + +#if P_FAMILY_ELECTRIKE + const u32 gMonFrontPic_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/anim_front.4bpp.lz"); + const u32 gMonPalette_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/normal.gbapal.lz"); + const u32 gMonBackPic_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/back.4bpp.lz"); + const u32 gMonShinyPalette_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/shiny.gbapal.lz"); + const u8 gMonIcon_Electrike[] = INCBIN_U8("graphics/pokemon/electrike/icon.4bpp"); + const u8 gMonFootprint_Electrike[] = INCBIN_U8("graphics/pokemon/electrike/footprint.1bpp"); + + const u32 gMonFrontPic_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/anim_front.4bpp.lz"); + const u32 gMonPalette_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/normal.gbapal.lz"); + const u32 gMonBackPic_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/back.4bpp.lz"); + const u32 gMonShinyPalette_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/shiny.gbapal.lz"); + const u8 gMonIcon_Manectric[] = INCBIN_U8("graphics/pokemon/manectric/icon.4bpp"); + const u8 gMonFootprint_Manectric[] = INCBIN_U8("graphics/pokemon/manectric/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_ManectricMega[] = INCBIN_U32("graphics/pokemon/manectric/mega/front.4bpp.lz"); + const u32 gMonPalette_ManectricMega[] = INCBIN_U32("graphics/pokemon/manectric/mega/normal.gbapal.lz"); + const u32 gMonBackPic_ManectricMega[] = INCBIN_U32("graphics/pokemon/manectric/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_ManectricMega[] = INCBIN_U32("graphics/pokemon/manectric/mega/shiny.gbapal.lz"); + const u8 gMonIcon_ManectricMega[] = INCBIN_U8("graphics/pokemon/manectric/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ELECTRIKE + +#if P_FAMILY_PLUSLE + const u32 gMonFrontPic_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/anim_front.4bpp.lz"); + const u32 gMonPalette_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/normal.gbapal.lz"); + const u32 gMonBackPic_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/back.4bpp.lz"); + const u32 gMonShinyPalette_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/shiny.gbapal.lz"); + const u8 gMonIcon_Plusle[] = INCBIN_U8("graphics/pokemon/plusle/icon.4bpp"); + const u8 gMonFootprint_Plusle[] = INCBIN_U8("graphics/pokemon/plusle/footprint.1bpp"); +#endif //P_FAMILY_PLUSLE + +#if P_FAMILY_MINUN + const u32 gMonFrontPic_Minun[] = INCBIN_U32("graphics/pokemon/minun/anim_front.4bpp.lz"); + const u32 gMonPalette_Minun[] = INCBIN_U32("graphics/pokemon/minun/normal.gbapal.lz"); + const u32 gMonBackPic_Minun[] = INCBIN_U32("graphics/pokemon/minun/back.4bpp.lz"); + const u32 gMonShinyPalette_Minun[] = INCBIN_U32("graphics/pokemon/minun/shiny.gbapal.lz"); + const u8 gMonIcon_Minun[] = INCBIN_U8("graphics/pokemon/minun/icon.4bpp"); + const u8 gMonFootprint_Minun[] = INCBIN_U8("graphics/pokemon/minun/footprint.1bpp"); +#endif //P_FAMILY_MINUN + +#if P_FAMILY_VOLBEAT_ILLUMISE + const u32 gMonFrontPic_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/anim_front.4bpp.lz"); + const u32 gMonPalette_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/normal.gbapal.lz"); + const u32 gMonBackPic_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/back.4bpp.lz"); + const u32 gMonShinyPalette_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/shiny.gbapal.lz"); + const u8 gMonIcon_Volbeat[] = INCBIN_U8("graphics/pokemon/volbeat/icon.4bpp"); + const u8 gMonFootprint_Volbeat[] = INCBIN_U8("graphics/pokemon/volbeat/footprint.1bpp"); + + const u32 gMonFrontPic_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/anim_front.4bpp.lz"); + const u32 gMonPalette_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/normal.gbapal.lz"); + const u32 gMonBackPic_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/back.4bpp.lz"); + const u32 gMonShinyPalette_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/shiny.gbapal.lz"); + const u8 gMonIcon_Illumise[] = INCBIN_U8("graphics/pokemon/illumise/icon.4bpp"); + const u8 gMonFootprint_Illumise[] = INCBIN_U8("graphics/pokemon/illumise/footprint.1bpp"); +#endif //P_FAMILY_VOLBEAT_ILLUMISE + +#if P_FAMILY_ROSELIA +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Budew[] = INCBIN_U32("graphics/pokemon/budew/anim_front.4bpp.lz"); + const u32 gMonPalette_Budew[] = INCBIN_U32("graphics/pokemon/budew/normal.gbapal.lz"); + const u32 gMonBackPic_Budew[] = INCBIN_U32("graphics/pokemon/budew/back.4bpp.lz"); + const u32 gMonShinyPalette_Budew[] = INCBIN_U32("graphics/pokemon/budew/shiny.gbapal.lz"); + const u8 gMonIcon_Budew[] = INCBIN_U8("graphics/pokemon/budew/icon.4bpp"); + const u8 gMonFootprint_Budew[] = INCBIN_U8("graphics/pokemon/budew/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS + + const u32 gMonFrontPic_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/anim_front.4bpp.lz"); + const u32 gMonPalette_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/normal.gbapal.lz"); + const u32 gMonBackPic_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/back.4bpp.lz"); + const u32 gMonShinyPalette_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/shiny.gbapal.lz"); + const u8 gMonIcon_Roselia[] = INCBIN_U8("graphics/pokemon/roselia/icon.4bpp"); + const u8 gMonFootprint_Roselia[] = INCBIN_U8("graphics/pokemon/roselia/footprint.1bpp"); + + const u32 gMonFrontPic_RoseliaF[] = INCBIN_U32("graphics/pokemon/roselia/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_RoseliaF[] = INCBIN_U32("graphics/pokemon/roselia/backf.4bpp.lz"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Roserade[] = INCBIN_U32("graphics/pokemon/roserade/anim_front.4bpp.lz"); + const u32 gMonPalette_Roserade[] = INCBIN_U32("graphics/pokemon/roserade/normal.gbapal.lz"); + const u32 gMonBackPic_Roserade[] = INCBIN_U32("graphics/pokemon/roserade/back.4bpp.lz"); + const u32 gMonShinyPalette_Roserade[] = INCBIN_U32("graphics/pokemon/roserade/shiny.gbapal.lz"); + const u8 gMonIcon_Roserade[] = INCBIN_U8("graphics/pokemon/roserade/icon.4bpp"); + const u8 gMonFootprint_Roserade[] = INCBIN_U8("graphics/pokemon/roserade/footprint.1bpp"); + + const u32 gMonFrontPic_RoseradeF[] = INCBIN_U32("graphics/pokemon/roserade/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_RoseradeF[] = INCBIN_U32("graphics/pokemon/roserade/backf.4bpp.lz"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ROSELIA + +#if P_FAMILY_GULPIN + const u32 gMonFrontPic_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/anim_front.4bpp.lz"); + const u32 gMonPalette_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/normal.gbapal.lz"); + const u32 gMonBackPic_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/back.4bpp.lz"); + const u32 gMonShinyPalette_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/shiny.gbapal.lz"); + const u8 gMonIcon_Gulpin[] = INCBIN_U8("graphics/pokemon/gulpin/icon.4bpp"); + const u8 gMonFootprint_Gulpin[] = INCBIN_U8("graphics/pokemon/gulpin/footprint.1bpp"); + + const u32 gMonFrontPic_GulpinF[] = INCBIN_U32("graphics/pokemon/gulpin/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_GulpinF[] = INCBIN_U32("graphics/pokemon/gulpin/backf.4bpp.lz"); + + const u32 gMonFrontPic_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/anim_front.4bpp.lz"); + const u32 gMonPalette_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/normal.gbapal.lz"); + const u32 gMonBackPic_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/back.4bpp.lz"); + const u32 gMonShinyPalette_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/shiny.gbapal.lz"); + const u8 gMonIcon_Swalot[] = INCBIN_U8("graphics/pokemon/swalot/icon.4bpp"); + const u8 gMonFootprint_Swalot[] = INCBIN_U8("graphics/pokemon/swalot/footprint.1bpp"); + + const u32 gMonFrontPic_SwalotF[] = INCBIN_U32("graphics/pokemon/swalot/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_SwalotF[] = INCBIN_U32("graphics/pokemon/swalot/backf.4bpp.lz"); +#endif //P_FAMILY_GULPIN + +#if P_FAMILY_CARVANHA + const u32 gMonFrontPic_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/anim_front.4bpp.lz"); + const u32 gMonPalette_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/normal.gbapal.lz"); + const u32 gMonBackPic_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/back.4bpp.lz"); + const u32 gMonShinyPalette_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/shiny.gbapal.lz"); + const u8 gMonIcon_Carvanha[] = INCBIN_U8("graphics/pokemon/carvanha/icon.4bpp"); + const u8 gMonFootprint_Carvanha[] = INCBIN_U8("graphics/pokemon/carvanha/footprint.1bpp"); + + const u32 gMonFrontPic_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/anim_front.4bpp.lz"); + const u32 gMonPalette_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/normal.gbapal.lz"); + const u32 gMonBackPic_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/back.4bpp.lz"); + const u32 gMonShinyPalette_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/shiny.gbapal.lz"); + const u8 gMonIcon_Sharpedo[] = INCBIN_U8("graphics/pokemon/sharpedo/icon.4bpp"); + const u8 gMonFootprint_Sharpedo[] = INCBIN_U8("graphics/pokemon/sharpedo/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_SharpedoMega[] = INCBIN_U32("graphics/pokemon/sharpedo/mega/front.4bpp.lz"); + const u32 gMonPalette_SharpedoMega[] = INCBIN_U32("graphics/pokemon/sharpedo/mega/normal.gbapal.lz"); + const u32 gMonBackPic_SharpedoMega[] = INCBIN_U32("graphics/pokemon/sharpedo/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_SharpedoMega[] = INCBIN_U32("graphics/pokemon/sharpedo/mega/shiny.gbapal.lz"); + const u8 gMonIcon_SharpedoMega[] = INCBIN_U8("graphics/pokemon/sharpedo/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_CARVANHA + +#if P_FAMILY_WAILMER + const u32 gMonFrontPic_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/anim_front.4bpp.lz"); + const u32 gMonPalette_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/normal.gbapal.lz"); + const u32 gMonBackPic_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/back.4bpp.lz"); + const u32 gMonShinyPalette_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/shiny.gbapal.lz"); + const u8 gMonIcon_Wailmer[] = INCBIN_U8("graphics/pokemon/wailmer/icon.4bpp"); + const u8 gMonFootprint_Wailmer[] = INCBIN_U8("graphics/pokemon/wailmer/footprint.1bpp"); + + const u32 gMonFrontPic_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/anim_front.4bpp.lz"); + const u32 gMonPalette_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/normal.gbapal.lz"); + const u32 gMonBackPic_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/back.4bpp.lz"); + const u32 gMonShinyPalette_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/shiny.gbapal.lz"); + const u8 gMonIcon_Wailord[] = INCBIN_U8("graphics/pokemon/wailord/icon.4bpp"); + const u8 gMonFootprint_Wailord[] = INCBIN_U8("graphics/pokemon/wailord/footprint.1bpp"); +#endif //P_FAMILY_WAILMER + +#if P_FAMILY_NUMEL + const u32 gMonFrontPic_Numel[] = INCBIN_U32("graphics/pokemon/numel/anim_front.4bpp.lz"); + const u32 gMonPalette_Numel[] = INCBIN_U32("graphics/pokemon/numel/normal.gbapal.lz"); + const u32 gMonBackPic_Numel[] = INCBIN_U32("graphics/pokemon/numel/back.4bpp.lz"); + const u32 gMonShinyPalette_Numel[] = INCBIN_U32("graphics/pokemon/numel/shiny.gbapal.lz"); + const u8 gMonIcon_Numel[] = INCBIN_U8("graphics/pokemon/numel/icon.4bpp"); + const u8 gMonFootprint_Numel[] = INCBIN_U8("graphics/pokemon/numel/footprint.1bpp"); + + const u32 gMonFrontPic_NumelF[] = INCBIN_U32("graphics/pokemon/numel/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_NumelF[] = INCBIN_U32("graphics/pokemon/numel/backf.4bpp.lz"); + + const u32 gMonFrontPic_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/anim_front.4bpp.lz"); + const u32 gMonPalette_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/normal.gbapal.lz"); + const u32 gMonBackPic_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/back.4bpp.lz"); + const u32 gMonShinyPalette_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/shiny.gbapal.lz"); + const u8 gMonIcon_Camerupt[] = INCBIN_U8("graphics/pokemon/camerupt/icon.4bpp"); + const u8 gMonFootprint_Camerupt[] = INCBIN_U8("graphics/pokemon/camerupt/footprint.1bpp"); + + const u32 gMonFrontPic_CameruptF[] = INCBIN_U32("graphics/pokemon/camerupt/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_CameruptF[] = INCBIN_U32("graphics/pokemon/camerupt/backf.4bpp.lz"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_CameruptMega[] = INCBIN_U32("graphics/pokemon/camerupt/mega/front.4bpp.lz"); + const u32 gMonPalette_CameruptMega[] = INCBIN_U32("graphics/pokemon/camerupt/mega/normal.gbapal.lz"); + const u32 gMonBackPic_CameruptMega[] = INCBIN_U32("graphics/pokemon/camerupt/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_CameruptMega[] = INCBIN_U32("graphics/pokemon/camerupt/mega/shiny.gbapal.lz"); + const u8 gMonIcon_CameruptMega[] = INCBIN_U8("graphics/pokemon/camerupt/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_NUMEL + +#if P_FAMILY_TORKOAL + const u32 gMonFrontPic_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/anim_front.4bpp.lz"); + const u32 gMonPalette_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/normal.gbapal.lz"); + const u32 gMonBackPic_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/back.4bpp.lz"); + const u32 gMonShinyPalette_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/shiny.gbapal.lz"); + const u8 gMonIcon_Torkoal[] = INCBIN_U8("graphics/pokemon/torkoal/icon.4bpp"); + const u8 gMonFootprint_Torkoal[] = INCBIN_U8("graphics/pokemon/torkoal/footprint.1bpp"); +#endif //P_FAMILY_TORKOAL + +#if P_FAMILY_SPOINK + const u32 gMonFrontPic_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/anim_front.4bpp.lz"); + const u32 gMonPalette_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/normal.gbapal.lz"); + const u32 gMonBackPic_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/back.4bpp.lz"); + const u32 gMonShinyPalette_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/shiny.gbapal.lz"); + const u8 gMonIcon_Spoink[] = INCBIN_U8("graphics/pokemon/spoink/icon.4bpp"); + const u8 gMonFootprint_Spoink[] = INCBIN_U8("graphics/pokemon/spoink/footprint.1bpp"); + + const u32 gMonFrontPic_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/anim_front.4bpp.lz"); + const u32 gMonPalette_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/normal.gbapal.lz"); + const u32 gMonBackPic_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/back.4bpp.lz"); + const u32 gMonShinyPalette_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/shiny.gbapal.lz"); + const u8 gMonIcon_Grumpig[] = INCBIN_U8("graphics/pokemon/grumpig/icon.4bpp"); + const u8 gMonFootprint_Grumpig[] = INCBIN_U8("graphics/pokemon/grumpig/footprint.1bpp"); +#endif //P_FAMILY_SPOINK + +#if P_FAMILY_SPINDA + const u32 gMonFrontPic_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/anim_front.4bpp.lz"); + const u32 gMonPalette_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/normal.gbapal.lz"); + const u32 gMonBackPic_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/back.4bpp.lz"); + const u32 gMonShinyPalette_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/shiny.gbapal.lz"); + const u8 gMonIcon_Spinda[] = INCBIN_U8("graphics/pokemon/spinda/icon.4bpp"); + const u8 gMonFootprint_Spinda[] = INCBIN_U8("graphics/pokemon/spinda/footprint.1bpp"); +#endif //P_FAMILY_SPINDA + +#if P_FAMILY_TRAPINCH + const u32 gMonFrontPic_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/anim_front.4bpp.lz"); + const u32 gMonPalette_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/normal.gbapal.lz"); + const u32 gMonBackPic_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/back.4bpp.lz"); + const u32 gMonShinyPalette_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/shiny.gbapal.lz"); + const u8 gMonIcon_Trapinch[] = INCBIN_U8("graphics/pokemon/trapinch/icon.4bpp"); + const u8 gMonFootprint_Trapinch[] = INCBIN_U8("graphics/pokemon/trapinch/footprint.1bpp"); + + const u32 gMonFrontPic_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/anim_front.4bpp.lz"); + const u32 gMonPalette_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/normal.gbapal.lz"); + const u32 gMonBackPic_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/back.4bpp.lz"); + const u32 gMonShinyPalette_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/shiny.gbapal.lz"); + const u8 gMonIcon_Vibrava[] = INCBIN_U8("graphics/pokemon/vibrava/icon.4bpp"); + const u8 gMonFootprint_Vibrava[] = INCBIN_U8("graphics/pokemon/vibrava/footprint.1bpp"); + + const u32 gMonFrontPic_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/anim_front.4bpp.lz"); + const u32 gMonPalette_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/normal.gbapal.lz"); + const u32 gMonBackPic_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/back.4bpp.lz"); + const u32 gMonShinyPalette_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/shiny.gbapal.lz"); + const u8 gMonIcon_Flygon[] = INCBIN_U8("graphics/pokemon/flygon/icon.4bpp"); + const u8 gMonFootprint_Flygon[] = INCBIN_U8("graphics/pokemon/flygon/footprint.1bpp"); +#endif //P_FAMILY_TRAPINCH + +#if P_FAMILY_CACNEA + const u32 gMonFrontPic_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/anim_front.4bpp.lz"); + const u32 gMonPalette_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/normal.gbapal.lz"); + const u32 gMonBackPic_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/back.4bpp.lz"); + const u32 gMonShinyPalette_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/shiny.gbapal.lz"); + const u8 gMonIcon_Cacnea[] = INCBIN_U8("graphics/pokemon/cacnea/icon.4bpp"); + const u8 gMonFootprint_Cacnea[] = INCBIN_U8("graphics/pokemon/cacnea/footprint.1bpp"); + + const u32 gMonFrontPic_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/anim_front.4bpp.lz"); + const u32 gMonPalette_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/normal.gbapal.lz"); + const u32 gMonBackPic_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/back.4bpp.lz"); + const u32 gMonShinyPalette_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/shiny.gbapal.lz"); + const u8 gMonIcon_Cacturne[] = INCBIN_U8("graphics/pokemon/cacturne/icon.4bpp"); + const u8 gMonFootprint_Cacturne[] = INCBIN_U8("graphics/pokemon/cacturne/footprint.1bpp"); + + const u32 gMonFrontPic_CacturneF[] = INCBIN_U32("graphics/pokemon/cacturne/anim_frontf.4bpp.lz"); +#endif //P_FAMILY_CACNEA + +#if P_FAMILY_SWABLU + const u32 gMonFrontPic_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/anim_front.4bpp.lz"); + const u32 gMonPalette_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/normal.gbapal.lz"); + const u32 gMonBackPic_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/back.4bpp.lz"); + const u32 gMonShinyPalette_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/shiny.gbapal.lz"); + const u8 gMonIcon_Swablu[] = INCBIN_U8("graphics/pokemon/swablu/icon.4bpp"); + const u8 gMonFootprint_Swablu[] = INCBIN_U8("graphics/pokemon/swablu/footprint.1bpp"); + + const u32 gMonFrontPic_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/anim_front.4bpp.lz"); + const u32 gMonPalette_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/normal.gbapal.lz"); + const u32 gMonBackPic_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/back.4bpp.lz"); + const u32 gMonShinyPalette_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/shiny.gbapal.lz"); + const u8 gMonIcon_Altaria[] = INCBIN_U8("graphics/pokemon/altaria/icon.4bpp"); + const u8 gMonFootprint_Altaria[] = INCBIN_U8("graphics/pokemon/altaria/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_AltariaMega[] = INCBIN_U32("graphics/pokemon/altaria/mega/front.4bpp.lz"); + const u32 gMonPalette_AltariaMega[] = INCBIN_U32("graphics/pokemon/altaria/mega/normal.gbapal.lz"); + const u32 gMonBackPic_AltariaMega[] = INCBIN_U32("graphics/pokemon/altaria/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_AltariaMega[] = INCBIN_U32("graphics/pokemon/altaria/mega/shiny.gbapal.lz"); + const u8 gMonIcon_AltariaMega[] = INCBIN_U8("graphics/pokemon/altaria/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SWABLU + +#if P_FAMILY_ZANGOOSE + const u32 gMonFrontPic_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/anim_front.4bpp.lz"); + const u32 gMonPalette_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/normal.gbapal.lz"); + const u32 gMonBackPic_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/back.4bpp.lz"); + const u32 gMonShinyPalette_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/shiny.gbapal.lz"); + const u8 gMonIcon_Zangoose[] = INCBIN_U8("graphics/pokemon/zangoose/icon.4bpp"); + const u8 gMonFootprint_Zangoose[] = INCBIN_U8("graphics/pokemon/zangoose/footprint.1bpp"); +#endif //P_FAMILY_ZANGOOSE + +#if P_FAMILY_SEVIPER + const u32 gMonFrontPic_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/anim_front.4bpp.lz"); + const u32 gMonPalette_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/normal.gbapal.lz"); + const u32 gMonBackPic_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/back.4bpp.lz"); + const u32 gMonShinyPalette_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/shiny.gbapal.lz"); + const u8 gMonIcon_Seviper[] = INCBIN_U8("graphics/pokemon/seviper/icon.4bpp"); + const u8 gMonFootprint_Seviper[] = INCBIN_U8("graphics/pokemon/seviper/footprint.1bpp"); +#endif //P_FAMILY_SEVIPER + +#if P_FAMILY_LUNATONE + const u32 gMonFrontPic_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/anim_front.4bpp.lz"); + const u32 gMonPalette_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/normal.gbapal.lz"); + const u32 gMonBackPic_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/back.4bpp.lz"); + const u32 gMonShinyPalette_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/shiny.gbapal.lz"); + const u8 gMonIcon_Lunatone[] = INCBIN_U8("graphics/pokemon/lunatone/icon.4bpp"); + const u8 gMonFootprint_Lunatone[] = INCBIN_U8("graphics/pokemon/lunatone/footprint.1bpp"); +#endif //P_FAMILY_LUNATONE + +#if P_FAMILY_SOLROCK + const u32 gMonFrontPic_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/anim_front.4bpp.lz"); + const u32 gMonPalette_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/normal.gbapal.lz"); + const u32 gMonBackPic_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/back.4bpp.lz"); + const u32 gMonShinyPalette_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/shiny.gbapal.lz"); + const u8 gMonIcon_Solrock[] = INCBIN_U8("graphics/pokemon/solrock/icon.4bpp"); + const u8 gMonFootprint_Solrock[] = INCBIN_U8("graphics/pokemon/solrock/footprint.1bpp"); +#endif //P_FAMILY_SOLROCK + +#if P_FAMILY_BARBOACH + const u32 gMonFrontPic_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/anim_front.4bpp.lz"); + const u32 gMonPalette_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/normal.gbapal.lz"); + const u32 gMonBackPic_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/back.4bpp.lz"); + const u32 gMonShinyPalette_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/shiny.gbapal.lz"); + const u8 gMonIcon_Barboach[] = INCBIN_U8("graphics/pokemon/barboach/icon.4bpp"); + const u8 gMonFootprint_Barboach[] = INCBIN_U8("graphics/pokemon/barboach/footprint.1bpp"); + + const u32 gMonFrontPic_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/anim_front.4bpp.lz"); + const u32 gMonPalette_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/normal.gbapal.lz"); + const u32 gMonBackPic_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/back.4bpp.lz"); + const u32 gMonShinyPalette_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/shiny.gbapal.lz"); + const u8 gMonIcon_Whiscash[] = INCBIN_U8("graphics/pokemon/whiscash/icon.4bpp"); + const u8 gMonFootprint_Whiscash[] = INCBIN_U8("graphics/pokemon/whiscash/footprint.1bpp"); +#endif //P_FAMILY_BARBOACH + +#if P_FAMILY_CORPHISH + const u32 gMonFrontPic_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/anim_front.4bpp.lz"); + const u32 gMonPalette_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/normal.gbapal.lz"); + const u32 gMonBackPic_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/back.4bpp.lz"); + const u32 gMonShinyPalette_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/shiny.gbapal.lz"); + const u8 gMonIcon_Corphish[] = INCBIN_U8("graphics/pokemon/corphish/icon.4bpp"); + const u8 gMonFootprint_Corphish[] = INCBIN_U8("graphics/pokemon/corphish/footprint.1bpp"); + + const u32 gMonFrontPic_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/anim_front.4bpp.lz"); + const u32 gMonPalette_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/normal.gbapal.lz"); + const u32 gMonBackPic_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/back.4bpp.lz"); + const u32 gMonShinyPalette_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/shiny.gbapal.lz"); + const u8 gMonIcon_Crawdaunt[] = INCBIN_U8("graphics/pokemon/crawdaunt/icon.4bpp"); + const u8 gMonFootprint_Crawdaunt[] = INCBIN_U8("graphics/pokemon/crawdaunt/footprint.1bpp"); +#endif //P_FAMILY_CORPHISH + +#if P_FAMILY_BALTOY + const u32 gMonFrontPic_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/anim_front.4bpp.lz"); + const u32 gMonPalette_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/normal.gbapal.lz"); + const u32 gMonBackPic_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/back.4bpp.lz"); + const u32 gMonShinyPalette_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/shiny.gbapal.lz"); + const u8 gMonIcon_Baltoy[] = INCBIN_U8("graphics/pokemon/baltoy/icon.4bpp"); + const u8 gMonFootprint_Baltoy[] = INCBIN_U8("graphics/pokemon/baltoy/footprint.1bpp"); + + const u32 gMonFrontPic_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/anim_front.4bpp.lz"); + const u32 gMonPalette_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/normal.gbapal.lz"); + const u32 gMonBackPic_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/back.4bpp.lz"); + const u32 gMonShinyPalette_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/shiny.gbapal.lz"); + const u8 gMonIcon_Claydol[] = INCBIN_U8("graphics/pokemon/claydol/icon.4bpp"); + const u8 gMonFootprint_Claydol[] = INCBIN_U8("graphics/pokemon/claydol/footprint.1bpp"); +#endif //P_FAMILY_BALTOY + +#if P_FAMILY_LILEEP + const u32 gMonFrontPic_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/anim_front.4bpp.lz"); + const u32 gMonPalette_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/normal.gbapal.lz"); + const u32 gMonBackPic_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/back.4bpp.lz"); + const u32 gMonShinyPalette_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/shiny.gbapal.lz"); + const u8 gMonIcon_Lileep[] = INCBIN_U8("graphics/pokemon/lileep/icon.4bpp"); + const u8 gMonFootprint_Lileep[] = INCBIN_U8("graphics/pokemon/lileep/footprint.1bpp"); + + const u32 gMonFrontPic_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/anim_front.4bpp.lz"); + const u32 gMonPalette_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/normal.gbapal.lz"); + const u32 gMonBackPic_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/back.4bpp.lz"); + const u32 gMonShinyPalette_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/shiny.gbapal.lz"); + const u8 gMonIcon_Cradily[] = INCBIN_U8("graphics/pokemon/cradily/icon.4bpp"); + const u8 gMonFootprint_Cradily[] = INCBIN_U8("graphics/pokemon/cradily/footprint.1bpp"); +#endif //P_FAMILY_LILEEP + +#if P_FAMILY_ANORITH + const u32 gMonFrontPic_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/anim_front.4bpp.lz"); + const u32 gMonPalette_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/normal.gbapal.lz"); + const u32 gMonBackPic_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/back.4bpp.lz"); + const u32 gMonShinyPalette_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/shiny.gbapal.lz"); + const u8 gMonIcon_Anorith[] = INCBIN_U8("graphics/pokemon/anorith/icon.4bpp"); + const u8 gMonFootprint_Anorith[] = INCBIN_U8("graphics/pokemon/anorith/footprint.1bpp"); + + const u32 gMonFrontPic_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/anim_front.4bpp.lz"); + const u32 gMonPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/normal.gbapal.lz"); + const u32 gMonBackPic_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/back.4bpp.lz"); + const u32 gMonShinyPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/shiny.gbapal.lz"); + const u8 gMonIcon_Armaldo[] = INCBIN_U8("graphics/pokemon/armaldo/icon.4bpp"); + const u8 gMonFootprint_Armaldo[] = INCBIN_U8("graphics/pokemon/armaldo/footprint.1bpp"); +#endif //P_FAMILY_ANORITH + +#if P_FAMILY_FEEBAS + const u32 gMonFrontPic_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/anim_front.4bpp.lz"); + const u32 gMonPalette_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/normal.gbapal.lz"); + const u32 gMonBackPic_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/back.4bpp.lz"); + const u32 gMonShinyPalette_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/shiny.gbapal.lz"); + const u8 gMonIcon_Feebas[] = INCBIN_U8("graphics/pokemon/feebas/icon.4bpp"); + const u8 gMonFootprint_Feebas[] = INCBIN_U8("graphics/pokemon/feebas/footprint.1bpp"); + + const u32 gMonFrontPic_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/anim_front.4bpp.lz"); + const u32 gMonPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/normal.gbapal.lz"); + const u32 gMonBackPic_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/back.4bpp.lz"); + const u32 gMonShinyPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/shiny.gbapal.lz"); + const u8 gMonIcon_Milotic[] = INCBIN_U8("graphics/pokemon/milotic/icon.4bpp"); + const u8 gMonFootprint_Milotic[] = INCBIN_U8("graphics/pokemon/milotic/footprint.1bpp"); + + const u32 gMonFrontPic_MiloticF[] = INCBIN_U32("graphics/pokemon/milotic/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_MiloticF[] = INCBIN_U32("graphics/pokemon/milotic/backf.4bpp.lz"); +#endif //P_FAMILY_FEEBAS + +#if P_FAMILY_CASTFORM + const u32 gMonFrontPic_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/anim_front.4bpp.lz"); + const u32 gMonPalette_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/normal.gbapal.lz"); + const u32 gMonBackPic_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/back.4bpp.lz"); + const u32 gMonShinyPalette_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/shiny.gbapal.lz"); + const u8 gMonIcon_CastformNormal[] = INCBIN_U8("graphics/pokemon/castform/icon.4bpp"); + const u8 gMonFootprint_Castform[] = INCBIN_U8("graphics/pokemon/castform/footprint.1bpp"); + + const u32 gMonFrontPic_CastformSunny[] = INCBIN_U32("graphics/pokemon/castform/sunny/anim_front.4bpp.lz"); + const u32 gMonPalette_CastformSunny[] = INCBIN_U32("graphics/pokemon/castform/sunny/normal.gbapal.lz"); + const u32 gMonBackPic_CastformSunny[] = INCBIN_U32("graphics/pokemon/castform/sunny/back.4bpp.lz"); + const u32 gMonShinyPalette_CastformSunny[] = INCBIN_U32("graphics/pokemon/castform/sunny/shiny.gbapal.lz"); + const u8 gMonIcon_CastformSunny[] = INCBIN_U8("graphics/pokemon/castform/sunny/icon.4bpp"); + + const u32 gMonFrontPic_CastformRainy[] = INCBIN_U32("graphics/pokemon/castform/rainy/anim_front.4bpp.lz"); + const u32 gMonPalette_CastformRainy[] = INCBIN_U32("graphics/pokemon/castform/rainy/normal.gbapal.lz"); + const u32 gMonBackPic_CastformRainy[] = INCBIN_U32("graphics/pokemon/castform/rainy/back.4bpp.lz"); + const u32 gMonShinyPalette_CastformRainy[] = INCBIN_U32("graphics/pokemon/castform/rainy/shiny.gbapal.lz"); + const u8 gMonIcon_CastformRainy[] = INCBIN_U8("graphics/pokemon/castform/rainy/icon.4bpp"); + + const u32 gMonFrontPic_CastformSnowy[] = INCBIN_U32("graphics/pokemon/castform/snowy/anim_front.4bpp.lz"); + const u32 gMonPalette_CastformSnowy[] = INCBIN_U32("graphics/pokemon/castform/snowy/normal.gbapal.lz"); + const u32 gMonBackPic_CastformSnowy[] = INCBIN_U32("graphics/pokemon/castform/snowy/back.4bpp.lz"); + const u32 gMonShinyPalette_CastformSnowy[] = INCBIN_U32("graphics/pokemon/castform/snowy/shiny.gbapal.lz"); + const u8 gMonIcon_CastformSnowy[] = INCBIN_U8("graphics/pokemon/castform/snowy/icon.4bpp"); +#endif //P_FAMILY_CASTFORM + +#if P_FAMILY_KECLEON + const u32 gMonFrontPic_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/anim_front.4bpp.lz"); + const u32 gMonPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/normal.gbapal.lz"); + const u32 gMonBackPic_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/back.4bpp.lz"); + const u32 gMonShinyPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/shiny.gbapal.lz"); + const u8 gMonIcon_Kecleon[] = INCBIN_U8("graphics/pokemon/kecleon/icon.4bpp"); + const u8 gMonFootprint_Kecleon[] = INCBIN_U8("graphics/pokemon/kecleon/footprint.1bpp"); +#endif //P_FAMILY_KECLEON + +#if P_FAMILY_SHUPPET + const u32 gMonFrontPic_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/anim_front.4bpp.lz"); + const u32 gMonPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/normal.gbapal.lz"); + const u32 gMonBackPic_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/back.4bpp.lz"); + const u32 gMonShinyPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/shiny.gbapal.lz"); + const u8 gMonIcon_Shuppet[] = INCBIN_U8("graphics/pokemon/shuppet/icon.4bpp"); + const u8 gMonFootprint_Shuppet[] = INCBIN_U8("graphics/pokemon/shuppet/footprint.1bpp"); + + const u32 gMonFrontPic_Banette[] = INCBIN_U32("graphics/pokemon/banette/anim_front.4bpp.lz"); + const u32 gMonPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/normal.gbapal.lz"); + const u32 gMonBackPic_Banette[] = INCBIN_U32("graphics/pokemon/banette/back.4bpp.lz"); + const u32 gMonShinyPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/shiny.gbapal.lz"); + const u8 gMonIcon_Banette[] = INCBIN_U8("graphics/pokemon/banette/icon.4bpp"); + const u8 gMonFootprint_Banette[] = INCBIN_U8("graphics/pokemon/banette/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_BanetteMega[] = INCBIN_U32("graphics/pokemon/banette/mega/front.4bpp.lz"); + const u32 gMonPalette_BanetteMega[] = INCBIN_U32("graphics/pokemon/banette/mega/normal.gbapal.lz"); + const u32 gMonBackPic_BanetteMega[] = INCBIN_U32("graphics/pokemon/banette/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_BanetteMega[] = INCBIN_U32("graphics/pokemon/banette/mega/shiny.gbapal.lz"); + const u8 gMonIcon_BanetteMega[] = INCBIN_U8("graphics/pokemon/banette/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SHUPPET + +#if P_FAMILY_DUSKULL + const u32 gMonFrontPic_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/anim_front.4bpp.lz"); + const u32 gMonPalette_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/normal.gbapal.lz"); + const u32 gMonBackPic_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/back.4bpp.lz"); + const u32 gMonShinyPalette_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/shiny.gbapal.lz"); + const u8 gMonIcon_Duskull[] = INCBIN_U8("graphics/pokemon/duskull/icon.4bpp"); + const u8 gMonFootprint_Duskull[] = INCBIN_U8("graphics/pokemon/duskull/footprint.1bpp"); + + const u32 gMonFrontPic_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/anim_front.4bpp.lz"); + const u32 gMonPalette_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/normal.gbapal.lz"); + const u32 gMonBackPic_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/back.4bpp.lz"); + const u32 gMonShinyPalette_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/shiny.gbapal.lz"); + const u8 gMonIcon_Dusclops[] = INCBIN_U8("graphics/pokemon/dusclops/icon.4bpp"); + const u8 gMonFootprint_Dusclops[] = INCBIN_U8("graphics/pokemon/dusclops/footprint.1bpp"); + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Dusknoir[] = INCBIN_U32("graphics/pokemon/dusknoir/anim_front.4bpp.lz"); + const u32 gMonPalette_Dusknoir[] = INCBIN_U32("graphics/pokemon/dusknoir/normal.gbapal.lz"); + const u32 gMonBackPic_Dusknoir[] = INCBIN_U32("graphics/pokemon/dusknoir/back.4bpp.lz"); + const u32 gMonShinyPalette_Dusknoir[] = INCBIN_U32("graphics/pokemon/dusknoir/shiny.gbapal.lz"); + const u8 gMonIcon_Dusknoir[] = INCBIN_U8("graphics/pokemon/dusknoir/icon.4bpp"); + const u8 gMonFootprint_Dusknoir[] = INCBIN_U8("graphics/pokemon/dusknoir/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_DUSKULL + +#if P_FAMILY_TROPIUS + const u32 gMonFrontPic_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/anim_front.4bpp.lz"); + const u32 gMonPalette_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/normal.gbapal.lz"); + const u32 gMonBackPic_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/back.4bpp.lz"); + const u32 gMonShinyPalette_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/shiny.gbapal.lz"); + const u8 gMonIcon_Tropius[] = INCBIN_U8("graphics/pokemon/tropius/icon.4bpp"); + const u8 gMonFootprint_Tropius[] = INCBIN_U8("graphics/pokemon/tropius/footprint.1bpp"); +#endif //P_FAMILY_TROPIUS + +#if P_FAMILY_CHIMECHO +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Chingling[] = INCBIN_U32("graphics/pokemon/chingling/anim_front.4bpp.lz"); + const u32 gMonPalette_Chingling[] = INCBIN_U32("graphics/pokemon/chingling/normal.gbapal.lz"); + const u32 gMonBackPic_Chingling[] = INCBIN_U32("graphics/pokemon/chingling/back.4bpp.lz"); + const u32 gMonShinyPalette_Chingling[] = INCBIN_U32("graphics/pokemon/chingling/shiny.gbapal.lz"); + const u8 gMonIcon_Chingling[] = INCBIN_U8("graphics/pokemon/chingling/icon.4bpp"); + const u8 gMonFootprint_Chingling[] = INCBIN_U8("graphics/pokemon/chingling/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS + + const u32 gMonFrontPic_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/anim_front.4bpp.lz"); + const u32 gMonPalette_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/normal.gbapal.lz"); + const u32 gMonBackPic_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/back.4bpp.lz"); + const u32 gMonShinyPalette_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/shiny.gbapal.lz"); + const u8 gMonIcon_Chimecho[] = INCBIN_U8("graphics/pokemon/chimecho/icon.4bpp"); + const u8 gMonFootprint_Chimecho[] = INCBIN_U8("graphics/pokemon/chimecho/footprint.1bpp"); +#endif //P_FAMILY_CHIMECHO + +#if P_FAMILY_ABSOL + const u32 gMonFrontPic_Absol[] = INCBIN_U32("graphics/pokemon/absol/anim_front.4bpp.lz"); + const u32 gMonPalette_Absol[] = INCBIN_U32("graphics/pokemon/absol/normal.gbapal.lz"); + const u32 gMonBackPic_Absol[] = INCBIN_U32("graphics/pokemon/absol/back.4bpp.lz"); + const u32 gMonShinyPalette_Absol[] = INCBIN_U32("graphics/pokemon/absol/shiny.gbapal.lz"); + const u8 gMonIcon_Absol[] = INCBIN_U8("graphics/pokemon/absol/icon.4bpp"); + const u8 gMonFootprint_Absol[] = INCBIN_U8("graphics/pokemon/absol/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_AbsolMega[] = INCBIN_U32("graphics/pokemon/absol/mega/front.4bpp.lz"); + const u32 gMonPalette_AbsolMega[] = INCBIN_U32("graphics/pokemon/absol/mega/normal.gbapal.lz"); + const u32 gMonBackPic_AbsolMega[] = INCBIN_U32("graphics/pokemon/absol/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_AbsolMega[] = INCBIN_U32("graphics/pokemon/absol/mega/shiny.gbapal.lz"); + const u8 gMonIcon_AbsolMega[] = INCBIN_U8("graphics/pokemon/absol/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ABSOL + +#if P_FAMILY_SNORUNT + const u32 gMonFrontPic_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/anim_front.4bpp.lz"); + const u32 gMonPalette_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/normal.gbapal.lz"); + const u32 gMonBackPic_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/back.4bpp.lz"); + const u32 gMonShinyPalette_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/shiny.gbapal.lz"); + const u8 gMonIcon_Snorunt[] = INCBIN_U8("graphics/pokemon/snorunt/icon.4bpp"); + const u8 gMonFootprint_Snorunt[] = INCBIN_U8("graphics/pokemon/snorunt/footprint.1bpp"); + + const u32 gMonFrontPic_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/anim_front.4bpp.lz"); + const u32 gMonPalette_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/normal.gbapal.lz"); + const u32 gMonBackPic_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/back.4bpp.lz"); + const u32 gMonShinyPalette_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/shiny.gbapal.lz"); + const u8 gMonIcon_Glalie[] = INCBIN_U8("graphics/pokemon/glalie/icon.4bpp"); + const u8 gMonFootprint_Glalie[] = INCBIN_U8("graphics/pokemon/glalie/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_GlalieMega[] = INCBIN_U32("graphics/pokemon/glalie/mega/front.4bpp.lz"); + const u32 gMonPalette_GlalieMega[] = INCBIN_U32("graphics/pokemon/glalie/mega/normal.gbapal.lz"); + const u32 gMonBackPic_GlalieMega[] = INCBIN_U32("graphics/pokemon/glalie/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_GlalieMega[] = INCBIN_U32("graphics/pokemon/glalie/mega/shiny.gbapal.lz"); + const u8 gMonIcon_GlalieMega[] = INCBIN_U8("graphics/pokemon/glalie/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS + +#if P_GEN_4_CROSS_EVOS + const u32 gMonFrontPic_Froslass[] = INCBIN_U32("graphics/pokemon/froslass/anim_front.4bpp.lz"); + const u32 gMonPalette_Froslass[] = INCBIN_U32("graphics/pokemon/froslass/normal.gbapal.lz"); + const u32 gMonBackPic_Froslass[] = INCBIN_U32("graphics/pokemon/froslass/back.4bpp.lz"); + const u32 gMonShinyPalette_Froslass[] = INCBIN_U32("graphics/pokemon/froslass/shiny.gbapal.lz"); + const u8 gMonIcon_Froslass[] = INCBIN_U8("graphics/pokemon/froslass/icon.4bpp"); + const u8 gMonFootprint_Froslass[] = INCBIN_U8("graphics/pokemon/froslass/footprint.1bpp"); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SNORUNT + +#if P_FAMILY_SPHEAL + const u32 gMonFrontPic_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/anim_front.4bpp.lz"); + const u32 gMonPalette_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/normal.gbapal.lz"); + const u32 gMonBackPic_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/back.4bpp.lz"); + const u32 gMonShinyPalette_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/shiny.gbapal.lz"); + const u8 gMonIcon_Spheal[] = INCBIN_U8("graphics/pokemon/spheal/icon.4bpp"); + const u8 gMonFootprint_Spheal[] = INCBIN_U8("graphics/pokemon/spheal/footprint.1bpp"); + + const u32 gMonFrontPic_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/anim_front.4bpp.lz"); + const u32 gMonPalette_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/normal.gbapal.lz"); + const u32 gMonBackPic_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/back.4bpp.lz"); + const u32 gMonShinyPalette_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/shiny.gbapal.lz"); + const u8 gMonIcon_Sealeo[] = INCBIN_U8("graphics/pokemon/sealeo/icon.4bpp"); + const u8 gMonFootprint_Sealeo[] = INCBIN_U8("graphics/pokemon/sealeo/footprint.1bpp"); + + const u32 gMonFrontPic_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/anim_front.4bpp.lz"); + const u32 gMonPalette_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/normal.gbapal.lz"); + const u32 gMonBackPic_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/back.4bpp.lz"); + const u32 gMonShinyPalette_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/shiny.gbapal.lz"); + const u8 gMonIcon_Walrein[] = INCBIN_U8("graphics/pokemon/walrein/icon.4bpp"); + const u8 gMonFootprint_Walrein[] = INCBIN_U8("graphics/pokemon/walrein/footprint.1bpp"); +#endif //P_FAMILY_SPHEAL + +#if P_FAMILY_CLAMPERL + const u32 gMonFrontPic_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/anim_front.4bpp.lz"); + const u32 gMonPalette_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/normal.gbapal.lz"); + const u32 gMonBackPic_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/back.4bpp.lz"); + const u32 gMonShinyPalette_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/shiny.gbapal.lz"); + const u8 gMonIcon_Clamperl[] = INCBIN_U8("graphics/pokemon/clamperl/icon.4bpp"); + const u8 gMonFootprint_Clamperl[] = INCBIN_U8("graphics/pokemon/clamperl/footprint.1bpp"); + + const u32 gMonFrontPic_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/anim_front.4bpp.lz"); + const u32 gMonPalette_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/normal.gbapal.lz"); + const u32 gMonBackPic_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/back.4bpp.lz"); + const u32 gMonShinyPalette_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/shiny.gbapal.lz"); + const u8 gMonIcon_Huntail[] = INCBIN_U8("graphics/pokemon/huntail/icon.4bpp"); + const u8 gMonFootprint_Huntail[] = INCBIN_U8("graphics/pokemon/huntail/footprint.1bpp"); + + const u32 gMonFrontPic_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/anim_front.4bpp.lz"); + const u32 gMonPalette_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/normal.gbapal.lz"); + const u32 gMonBackPic_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/back.4bpp.lz"); + const u32 gMonShinyPalette_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/shiny.gbapal.lz"); + const u8 gMonIcon_Gorebyss[] = INCBIN_U8("graphics/pokemon/gorebyss/icon.4bpp"); + const u8 gMonFootprint_Gorebyss[] = INCBIN_U8("graphics/pokemon/gorebyss/footprint.1bpp"); +#endif //P_FAMILY_CLAMPERL + +#if P_FAMILY_RELICANTH + const u32 gMonFrontPic_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/anim_front.4bpp.lz"); + const u32 gMonPalette_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/normal.gbapal.lz"); + const u32 gMonBackPic_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/back.4bpp.lz"); + const u32 gMonShinyPalette_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/shiny.gbapal.lz"); + const u8 gMonIcon_Relicanth[] = INCBIN_U8("graphics/pokemon/relicanth/icon.4bpp"); + const u8 gMonFootprint_Relicanth[] = INCBIN_U8("graphics/pokemon/relicanth/footprint.1bpp"); + + const u32 gMonFrontPic_RelicanthF[] = INCBIN_U32("graphics/pokemon/relicanth/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_RelicanthF[] = INCBIN_U32("graphics/pokemon/relicanth/backf.4bpp.lz"); +#endif //P_FAMILY_RELICANTH + +#if P_FAMILY_LUVDISC + const u32 gMonFrontPic_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/anim_front.4bpp.lz"); + const u32 gMonPalette_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/normal.gbapal.lz"); + const u32 gMonBackPic_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/back.4bpp.lz"); + const u32 gMonShinyPalette_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/shiny.gbapal.lz"); + const u8 gMonIcon_Luvdisc[] = INCBIN_U8("graphics/pokemon/luvdisc/icon.4bpp"); + const u8 gMonFootprint_Luvdisc[] = INCBIN_U8("graphics/pokemon/luvdisc/footprint.1bpp"); +#endif //P_FAMILY_LUVDISC + +#if P_FAMILY_BAGON + const u32 gMonFrontPic_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/anim_front.4bpp.lz"); + const u32 gMonPalette_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/normal.gbapal.lz"); + const u32 gMonBackPic_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/back.4bpp.lz"); + const u32 gMonShinyPalette_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/shiny.gbapal.lz"); + const u8 gMonIcon_Bagon[] = INCBIN_U8("graphics/pokemon/bagon/icon.4bpp"); + const u8 gMonFootprint_Bagon[] = INCBIN_U8("graphics/pokemon/bagon/footprint.1bpp"); + + const u32 gMonFrontPic_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/anim_front.4bpp.lz"); + const u32 gMonPalette_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/normal.gbapal.lz"); + const u32 gMonBackPic_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/back.4bpp.lz"); + const u32 gMonShinyPalette_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/shiny.gbapal.lz"); + const u8 gMonIcon_Shelgon[] = INCBIN_U8("graphics/pokemon/shelgon/icon.4bpp"); + const u8 gMonFootprint_Shelgon[] = INCBIN_U8("graphics/pokemon/shelgon/footprint.1bpp"); + + const u32 gMonFrontPic_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/anim_front.4bpp.lz"); + const u32 gMonPalette_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/normal.gbapal.lz"); + const u32 gMonBackPic_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/back.4bpp.lz"); + const u32 gMonShinyPalette_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/shiny.gbapal.lz"); + const u8 gMonIcon_Salamence[] = INCBIN_U8("graphics/pokemon/salamence/icon.4bpp"); + const u8 gMonFootprint_Salamence[] = INCBIN_U8("graphics/pokemon/salamence/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_SalamenceMega[] = INCBIN_U32("graphics/pokemon/salamence/mega/front.4bpp.lz"); + const u32 gMonPalette_SalamenceMega[] = INCBIN_U32("graphics/pokemon/salamence/mega/normal.gbapal.lz"); + const u32 gMonBackPic_SalamenceMega[] = INCBIN_U32("graphics/pokemon/salamence/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_SalamenceMega[] = INCBIN_U32("graphics/pokemon/salamence/mega/shiny.gbapal.lz"); + const u8 gMonIcon_SalamenceMega[] = INCBIN_U8("graphics/pokemon/salamence/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BAGON + +#if P_FAMILY_BELDUM + const u32 gMonFrontPic_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/anim_front.4bpp.lz"); + const u32 gMonPalette_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/normal.gbapal.lz"); + const u32 gMonBackPic_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/back.4bpp.lz"); + const u32 gMonShinyPalette_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/shiny.gbapal.lz"); + const u8 gMonIcon_Beldum[] = INCBIN_U8("graphics/pokemon/beldum/icon.4bpp"); + const u8 gMonFootprint_Beldum[] = INCBIN_U8("graphics/pokemon/beldum/footprint.1bpp"); + + const u32 gMonFrontPic_Metang[] = INCBIN_U32("graphics/pokemon/metang/anim_front.4bpp.lz"); + const u32 gMonPalette_Metang[] = INCBIN_U32("graphics/pokemon/metang/normal.gbapal.lz"); + const u32 gMonBackPic_Metang[] = INCBIN_U32("graphics/pokemon/metang/back.4bpp.lz"); + const u32 gMonShinyPalette_Metang[] = INCBIN_U32("graphics/pokemon/metang/shiny.gbapal.lz"); + const u8 gMonIcon_Metang[] = INCBIN_U8("graphics/pokemon/metang/icon.4bpp"); + const u8 gMonFootprint_Metang[] = INCBIN_U8("graphics/pokemon/metang/footprint.1bpp"); + + const u32 gMonFrontPic_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/anim_front.4bpp.lz"); + const u32 gMonPalette_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/normal.gbapal.lz"); + const u32 gMonBackPic_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/back.4bpp.lz"); + const u32 gMonShinyPalette_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/shiny.gbapal.lz"); + const u8 gMonIcon_Metagross[] = INCBIN_U8("graphics/pokemon/metagross/icon.4bpp"); + const u8 gMonFootprint_Metagross[] = INCBIN_U8("graphics/pokemon/metagross/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_MetagrossMega[] = INCBIN_U32("graphics/pokemon/metagross/mega/front.4bpp.lz"); + const u32 gMonPalette_MetagrossMega[] = INCBIN_U32("graphics/pokemon/metagross/mega/normal.gbapal.lz"); + const u32 gMonBackPic_MetagrossMega[] = INCBIN_U32("graphics/pokemon/metagross/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_MetagrossMega[] = INCBIN_U32("graphics/pokemon/metagross/mega/shiny.gbapal.lz"); + const u8 gMonIcon_MetagrossMega[] = INCBIN_U8("graphics/pokemon/metagross/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BELDUM + +#if P_FAMILY_REGIROCK + const u32 gMonFrontPic_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/anim_front.4bpp.lz"); + const u32 gMonPalette_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/normal.gbapal.lz"); + const u32 gMonBackPic_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/back.4bpp.lz"); + const u32 gMonShinyPalette_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/shiny.gbapal.lz"); + const u8 gMonIcon_Regirock[] = INCBIN_U8("graphics/pokemon/regirock/icon.4bpp"); + const u8 gMonFootprint_Regirock[] = INCBIN_U8("graphics/pokemon/regirock/footprint.1bpp"); +#endif //P_FAMILY_REGIROCK + +#if P_FAMILY_REGICE + const u32 gMonFrontPic_Regice[] = INCBIN_U32("graphics/pokemon/regice/anim_front.4bpp.lz"); + const u32 gMonPalette_Regice[] = INCBIN_U32("graphics/pokemon/regice/normal.gbapal.lz"); + const u32 gMonBackPic_Regice[] = INCBIN_U32("graphics/pokemon/regice/back.4bpp.lz"); + const u32 gMonShinyPalette_Regice[] = INCBIN_U32("graphics/pokemon/regice/shiny.gbapal.lz"); + const u8 gMonIcon_Regice[] = INCBIN_U8("graphics/pokemon/regice/icon.4bpp"); + const u8 gMonFootprint_Regice[] = INCBIN_U8("graphics/pokemon/regice/footprint.1bpp"); +#endif //P_FAMILY_REGICE + +#if P_FAMILY_REGISTEEL + const u32 gMonFrontPic_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/anim_front.4bpp.lz"); + const u32 gMonPalette_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/normal.gbapal.lz"); + const u32 gMonBackPic_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/back.4bpp.lz"); + const u32 gMonShinyPalette_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/shiny.gbapal.lz"); + const u8 gMonIcon_Registeel[] = INCBIN_U8("graphics/pokemon/registeel/icon.4bpp"); + const u8 gMonFootprint_Registeel[] = INCBIN_U8("graphics/pokemon/registeel/footprint.1bpp"); +#endif //P_FAMILY_REGISTEEL + +#if P_FAMILY_LATIAS + const u32 gMonFrontPic_Latias[] = INCBIN_U32("graphics/pokemon/latias/anim_front.4bpp.lz"); + const u32 gMonPalette_Latias[] = INCBIN_U32("graphics/pokemon/latias/normal.gbapal.lz"); + const u32 gMonBackPic_Latias[] = INCBIN_U32("graphics/pokemon/latias/back.4bpp.lz"); + const u32 gMonShinyPalette_Latias[] = INCBIN_U32("graphics/pokemon/latias/shiny.gbapal.lz"); + const u8 gMonIcon_Latias[] = INCBIN_U8("graphics/pokemon/latias/icon.4bpp"); + const u8 gMonFootprint_Latias[] = INCBIN_U8("graphics/pokemon/latias/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_LatiasMega[] = INCBIN_U32("graphics/pokemon/latias/mega/front.4bpp.lz"); + const u32 gMonPalette_LatiasMega[] = INCBIN_U32("graphics/pokemon/latias/mega/normal.gbapal.lz"); + const u32 gMonBackPic_LatiasMega[] = INCBIN_U32("graphics/pokemon/latias/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_LatiasMega[] = INCBIN_U32("graphics/pokemon/latias/mega/shiny.gbapal.lz"); + const u8 gMonIcon_LatiasMega[] = INCBIN_U8("graphics/pokemon/latias/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LATIAS + +#if P_FAMILY_LATIOS + const u32 gMonFrontPic_Latios[] = INCBIN_U32("graphics/pokemon/latios/anim_front.4bpp.lz"); + const u32 gMonPalette_Latios[] = INCBIN_U32("graphics/pokemon/latios/normal.gbapal.lz"); + const u32 gMonBackPic_Latios[] = INCBIN_U32("graphics/pokemon/latios/back.4bpp.lz"); + const u32 gMonShinyPalette_Latios[] = INCBIN_U32("graphics/pokemon/latios/shiny.gbapal.lz"); + const u8 gMonIcon_Latios[] = INCBIN_U8("graphics/pokemon/latios/icon.4bpp"); + const u8 gMonFootprint_Latios[] = INCBIN_U8("graphics/pokemon/latios/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_LatiosMega[] = INCBIN_U32("graphics/pokemon/latios/mega/front.4bpp.lz"); + const u32 gMonPalette_LatiosMega[] = INCBIN_U32("graphics/pokemon/latios/mega/normal.gbapal.lz"); + const u32 gMonBackPic_LatiosMega[] = INCBIN_U32("graphics/pokemon/latios/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_LatiosMega[] = INCBIN_U32("graphics/pokemon/latios/mega/shiny.gbapal.lz"); + const u8 gMonIcon_LatiosMega[] = INCBIN_U8("graphics/pokemon/latios/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LATIOS + +#if P_FAMILY_KYOGRE + const u32 gMonFrontPic_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/anim_front.4bpp.lz"); + const u32 gMonPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/normal.gbapal.lz"); + const u32 gMonBackPic_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/back.4bpp.lz"); + const u32 gMonShinyPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/shiny.gbapal.lz"); + const u8 gMonIcon_Kyogre[] = INCBIN_U8("graphics/pokemon/kyogre/icon.4bpp"); + const u8 gMonFootprint_Kyogre[] = INCBIN_U8("graphics/pokemon/kyogre/footprint.1bpp"); + +#if P_PRIMAL_REVERSIONS + const u32 gMonFrontPic_KyogrePrimal[] = INCBIN_U32("graphics/pokemon/kyogre/primal/front.4bpp.lz"); + const u32 gMonPalette_KyogrePrimal[] = INCBIN_U32("graphics/pokemon/kyogre/primal/normal.gbapal.lz"); + const u32 gMonBackPic_KyogrePrimal[] = INCBIN_U32("graphics/pokemon/kyogre/primal/back.4bpp.lz"); + const u32 gMonShinyPalette_KyogrePrimal[] = INCBIN_U32("graphics/pokemon/kyogre/primal/shiny.gbapal.lz"); + const u8 gMonIcon_KyogrePrimal[] = INCBIN_U8("graphics/pokemon/kyogre/primal/icon.4bpp"); +#endif //P_PRIMAL_REVERSIONS +#endif //P_FAMILY_KYOGRE + +#if P_FAMILY_GROUDON + const u32 gMonFrontPic_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/anim_front.4bpp.lz"); + const u32 gMonPalette_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/normal.gbapal.lz"); + const u32 gMonBackPic_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/back.4bpp.lz"); + const u32 gMonShinyPalette_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/shiny.gbapal.lz"); + const u8 gMonIcon_Groudon[] = INCBIN_U8("graphics/pokemon/groudon/icon.4bpp"); + const u8 gMonFootprint_Groudon[] = INCBIN_U8("graphics/pokemon/groudon/footprint.1bpp"); + +#if P_PRIMAL_REVERSIONS + const u32 gMonFrontPic_GroudonPrimal[] = INCBIN_U32("graphics/pokemon/groudon/primal/front.4bpp.lz"); + const u32 gMonPalette_GroudonPrimal[] = INCBIN_U32("graphics/pokemon/groudon/primal/normal.gbapal.lz"); + const u32 gMonBackPic_GroudonPrimal[] = INCBIN_U32("graphics/pokemon/groudon/primal/back.4bpp.lz"); + const u32 gMonShinyPalette_GroudonPrimal[] = INCBIN_U32("graphics/pokemon/groudon/primal/shiny.gbapal.lz"); + const u8 gMonIcon_GroudonPrimal[] = INCBIN_U8("graphics/pokemon/groudon/primal/icon.4bpp"); +#endif //P_PRIMAL_REVERSIONS +#endif //P_FAMILY_GROUDON + +#if P_FAMILY_RAYQUAZA + const u32 gMonFrontPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/anim_front.4bpp.lz"); + const u32 gMonPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/normal.gbapal.lz"); + const u32 gMonBackPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/back.4bpp.lz"); + const u32 gMonShinyPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/shiny.gbapal.lz"); + const u8 gMonIcon_Rayquaza[] = INCBIN_U8("graphics/pokemon/rayquaza/icon.4bpp"); + const u8 gMonFootprint_Rayquaza[] = INCBIN_U8("graphics/pokemon/rayquaza/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_RayquazaMega[] = INCBIN_U32("graphics/pokemon/rayquaza/mega/front.4bpp.lz"); + const u32 gMonPalette_RayquazaMega[] = INCBIN_U32("graphics/pokemon/rayquaza/mega/normal.gbapal.lz"); + const u32 gMonBackPic_RayquazaMega[] = INCBIN_U32("graphics/pokemon/rayquaza/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_RayquazaMega[] = INCBIN_U32("graphics/pokemon/rayquaza/mega/shiny.gbapal.lz"); + const u8 gMonIcon_RayquazaMega[] = INCBIN_U8("graphics/pokemon/rayquaza/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_RAYQUAZA + +#if P_FAMILY_JIRACHI + const u32 gMonFrontPic_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/anim_front.4bpp.lz"); + const u32 gMonPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/normal.gbapal.lz"); + const u32 gMonBackPic_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/back.4bpp.lz"); + const u32 gMonShinyPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/shiny.gbapal.lz"); + const u8 gMonIcon_Jirachi[] = INCBIN_U8("graphics/pokemon/jirachi/icon.4bpp"); + const u8 gMonFootprint_Jirachi[] = INCBIN_U8("graphics/pokemon/jirachi/footprint.1bpp"); +#endif //P_FAMILY_JIRACHI + +#if P_FAMILY_DEOXYS + const u32 gMonFrontPic_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/anim_front.4bpp.lz"); + const u32 gMonPalette_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/normal.gbapal.lz"); + const u32 gMonBackPic_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/back.4bpp.lz"); + const u32 gMonShinyPalette_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/shiny.gbapal.lz"); + const u8 gMonIcon_DeoxysNormal[] = INCBIN_U8("graphics/pokemon/deoxys/icon.4bpp"); + const u8 gMonFootprint_Deoxys[] = INCBIN_U8("graphics/pokemon/deoxys/footprint.1bpp"); + + const u32 gMonFrontPic_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/attack/anim_front.4bpp.lz"); + const u32 gMonPalette_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/attack/normal.gbapal.lz"); + const u32 gMonBackPic_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/attack/back.4bpp.lz"); + const u32 gMonShinyPalette_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/attack/shiny.gbapal.lz"); + const u8 gMonIcon_DeoxysAttack[] = INCBIN_U8("graphics/pokemon/deoxys/attack/icon.4bpp"); + + const u32 gMonFrontPic_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/defense/anim_front.4bpp.lz"); + const u32 gMonPalette_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/defense/normal.gbapal.lz"); + const u32 gMonBackPic_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/defense/back.4bpp.lz"); + const u32 gMonShinyPalette_DeoxysDefense[] = INCBIN_U32("graphics/pokemon/deoxys/defense/shiny.gbapal.lz"); + const u8 gMonIcon_DeoxysDefense[] = INCBIN_U8("graphics/pokemon/deoxys/defense/icon.4bpp"); + + const u32 gMonFrontPic_DeoxysSpeed[] = INCBIN_U32("graphics/pokemon/deoxys/speed/anim_front.4bpp.lz"); + const u32 gMonPalette_DeoxysSpeed[] = INCBIN_U32("graphics/pokemon/deoxys/speed/normal.gbapal.lz"); + const u32 gMonBackPic_DeoxysSpeed[] = INCBIN_U32("graphics/pokemon/deoxys/speed/back.4bpp.lz"); + const u32 gMonShinyPalette_DeoxysSpeed[] = INCBIN_U32("graphics/pokemon/deoxys/speed/shiny.gbapal.lz"); + const u8 gMonIcon_DeoxysSpeed[] = INCBIN_U8("graphics/pokemon/deoxys/speed/icon.4bpp"); +#endif //P_FAMILY_DEOXYS + +#if P_FAMILY_TURTWIG + const u32 gMonFrontPic_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/anim_front.4bpp.lz"); + const u32 gMonPalette_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/normal.gbapal.lz"); + const u32 gMonBackPic_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/back.4bpp.lz"); + const u32 gMonShinyPalette_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/shiny.gbapal.lz"); + const u8 gMonIcon_Turtwig[] = INCBIN_U8("graphics/pokemon/turtwig/icon.4bpp"); + const u8 gMonFootprint_Turtwig[] = INCBIN_U8("graphics/pokemon/turtwig/footprint.1bpp"); + + const u32 gMonFrontPic_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/anim_front.4bpp.lz"); + const u32 gMonPalette_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/normal.gbapal.lz"); + const u32 gMonBackPic_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/back.4bpp.lz"); + const u32 gMonShinyPalette_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/shiny.gbapal.lz"); + const u8 gMonIcon_Grotle[] = INCBIN_U8("graphics/pokemon/grotle/icon.4bpp"); + const u8 gMonFootprint_Grotle[] = INCBIN_U8("graphics/pokemon/grotle/footprint.1bpp"); + + const u32 gMonFrontPic_Torterra[] = INCBIN_U32("graphics/pokemon/torterra/anim_front.4bpp.lz"); + const u32 gMonPalette_Torterra[] = INCBIN_U32("graphics/pokemon/torterra/normal.gbapal.lz"); + const u32 gMonBackPic_Torterra[] = INCBIN_U32("graphics/pokemon/torterra/back.4bpp.lz"); + const u32 gMonShinyPalette_Torterra[] = INCBIN_U32("graphics/pokemon/torterra/shiny.gbapal.lz"); + const u8 gMonIcon_Torterra[] = INCBIN_U8("graphics/pokemon/torterra/icon.4bpp"); + const u8 gMonFootprint_Torterra[] = INCBIN_U8("graphics/pokemon/torterra/footprint.1bpp"); +#endif //P_FAMILY_TURTWIG + +#if P_FAMILY_CHIMCHAR + const u32 gMonFrontPic_Chimchar[] = INCBIN_U32("graphics/pokemon/chimchar/anim_front.4bpp.lz"); + const u32 gMonPalette_Chimchar[] = INCBIN_U32("graphics/pokemon/chimchar/normal.gbapal.lz"); + const u32 gMonBackPic_Chimchar[] = INCBIN_U32("graphics/pokemon/chimchar/back.4bpp.lz"); + const u32 gMonShinyPalette_Chimchar[] = INCBIN_U32("graphics/pokemon/chimchar/shiny.gbapal.lz"); + const u8 gMonIcon_Chimchar[] = INCBIN_U8("graphics/pokemon/chimchar/icon.4bpp"); + const u8 gMonFootprint_Chimchar[] = INCBIN_U8("graphics/pokemon/chimchar/footprint.1bpp"); + + const u32 gMonFrontPic_Monferno[] = INCBIN_U32("graphics/pokemon/monferno/anim_front.4bpp.lz"); + const u32 gMonPalette_Monferno[] = INCBIN_U32("graphics/pokemon/monferno/normal.gbapal.lz"); + const u32 gMonBackPic_Monferno[] = INCBIN_U32("graphics/pokemon/monferno/back.4bpp.lz"); + const u32 gMonShinyPalette_Monferno[] = INCBIN_U32("graphics/pokemon/monferno/shiny.gbapal.lz"); + const u8 gMonIcon_Monferno[] = INCBIN_U8("graphics/pokemon/monferno/icon.4bpp"); + const u8 gMonFootprint_Monferno[] = INCBIN_U8("graphics/pokemon/monferno/footprint.1bpp"); + + const u32 gMonFrontPic_Infernape[] = INCBIN_U32("graphics/pokemon/infernape/anim_front.4bpp.lz"); + const u32 gMonPalette_Infernape[] = INCBIN_U32("graphics/pokemon/infernape/normal.gbapal.lz"); + const u32 gMonBackPic_Infernape[] = INCBIN_U32("graphics/pokemon/infernape/back.4bpp.lz"); + const u32 gMonShinyPalette_Infernape[] = INCBIN_U32("graphics/pokemon/infernape/shiny.gbapal.lz"); + const u8 gMonIcon_Infernape[] = INCBIN_U8("graphics/pokemon/infernape/icon.4bpp"); + const u8 gMonFootprint_Infernape[] = INCBIN_U8("graphics/pokemon/infernape/footprint.1bpp"); +#endif //P_FAMILY_CHIMCHAR + +#if P_FAMILY_PIPLUP + const u32 gMonFrontPic_Piplup[] = INCBIN_U32("graphics/pokemon/piplup/anim_front.4bpp.lz"); + const u32 gMonPalette_Piplup[] = INCBIN_U32("graphics/pokemon/piplup/normal.gbapal.lz"); + const u32 gMonBackPic_Piplup[] = INCBIN_U32("graphics/pokemon/piplup/back.4bpp.lz"); + const u32 gMonShinyPalette_Piplup[] = INCBIN_U32("graphics/pokemon/piplup/shiny.gbapal.lz"); + const u8 gMonIcon_Piplup[] = INCBIN_U8("graphics/pokemon/piplup/icon.4bpp"); + const u8 gMonFootprint_Piplup[] = INCBIN_U8("graphics/pokemon/piplup/footprint.1bpp"); + + const u32 gMonFrontPic_Prinplup[] = INCBIN_U32("graphics/pokemon/prinplup/anim_front.4bpp.lz"); + const u32 gMonPalette_Prinplup[] = INCBIN_U32("graphics/pokemon/prinplup/normal.gbapal.lz"); + const u32 gMonBackPic_Prinplup[] = INCBIN_U32("graphics/pokemon/prinplup/back.4bpp.lz"); + const u32 gMonShinyPalette_Prinplup[] = INCBIN_U32("graphics/pokemon/prinplup/shiny.gbapal.lz"); + const u8 gMonIcon_Prinplup[] = INCBIN_U8("graphics/pokemon/prinplup/icon.4bpp"); + const u8 gMonFootprint_Prinplup[] = INCBIN_U8("graphics/pokemon/prinplup/footprint.1bpp"); + + const u32 gMonFrontPic_Empoleon[] = INCBIN_U32("graphics/pokemon/empoleon/anim_front.4bpp.lz"); + const u32 gMonPalette_Empoleon[] = INCBIN_U32("graphics/pokemon/empoleon/normal.gbapal.lz"); + const u32 gMonBackPic_Empoleon[] = INCBIN_U32("graphics/pokemon/empoleon/back.4bpp.lz"); + const u32 gMonShinyPalette_Empoleon[] = INCBIN_U32("graphics/pokemon/empoleon/shiny.gbapal.lz"); + const u8 gMonIcon_Empoleon[] = INCBIN_U8("graphics/pokemon/empoleon/icon.4bpp"); + const u8 gMonFootprint_Empoleon[] = INCBIN_U8("graphics/pokemon/empoleon/footprint.1bpp"); +#endif //P_FAMILY_PIPLUP + +#if P_FAMILY_STARLY + const u32 gMonFrontPic_Starly[] = INCBIN_U32("graphics/pokemon/starly/anim_front.4bpp.lz"); + const u32 gMonPalette_Starly[] = INCBIN_U32("graphics/pokemon/starly/normal.gbapal.lz"); + const u32 gMonBackPic_Starly[] = INCBIN_U32("graphics/pokemon/starly/back.4bpp.lz"); + const u32 gMonShinyPalette_Starly[] = INCBIN_U32("graphics/pokemon/starly/shiny.gbapal.lz"); + const u8 gMonIcon_Starly[] = INCBIN_U8("graphics/pokemon/starly/icon.4bpp"); + const u8 gMonFootprint_Starly[] = INCBIN_U8("graphics/pokemon/starly/footprint.1bpp"); + + const u32 gMonFrontPic_StarlyF[] = INCBIN_U32("graphics/pokemon/starly/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_StarlyF[] = INCBIN_U32("graphics/pokemon/starly/backf.4bpp.lz"); + + const u32 gMonFrontPic_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/anim_front.4bpp.lz"); + const u32 gMonPalette_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/normal.gbapal.lz"); + const u32 gMonBackPic_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/back.4bpp.lz"); + const u32 gMonShinyPalette_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/shiny.gbapal.lz"); + const u8 gMonIcon_Staravia[] = INCBIN_U8("graphics/pokemon/staravia/icon.4bpp"); + const u8 gMonFootprint_Staravia[] = INCBIN_U8("graphics/pokemon/staravia/footprint.1bpp"); + + const u32 gMonFrontPic_StaraviaF[] = INCBIN_U32("graphics/pokemon/staravia/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_StaraviaF[] = INCBIN_U32("graphics/pokemon/staravia/back.4bpp.lz"); + + const u32 gMonFrontPic_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/anim_front.4bpp.lz"); + const u32 gMonPalette_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/normal.gbapal.lz"); + const u32 gMonBackPic_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/back.4bpp.lz"); + const u32 gMonShinyPalette_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/shiny.gbapal.lz"); + const u8 gMonIcon_Staraptor[] = INCBIN_U8("graphics/pokemon/staraptor/icon.4bpp"); + const u8 gMonFootprint_Staraptor[] = INCBIN_U8("graphics/pokemon/staraptor/footprint.1bpp"); + + const u32 gMonFrontPic_StaraptorF[] = INCBIN_U32("graphics/pokemon/staraptor/anim_frontf.4bpp.lz"); +#endif //P_FAMILY_STARLY + +#if P_FAMILY_BIDOOF + const u32 gMonFrontPic_Bidoof[] = INCBIN_U32("graphics/pokemon/bidoof/anim_front.4bpp.lz"); + const u32 gMonPalette_Bidoof[] = INCBIN_U32("graphics/pokemon/bidoof/normal.gbapal.lz"); + const u32 gMonBackPic_Bidoof[] = INCBIN_U32("graphics/pokemon/bidoof/back.4bpp.lz"); + const u32 gMonShinyPalette_Bidoof[] = INCBIN_U32("graphics/pokemon/bidoof/shiny.gbapal.lz"); + const u8 gMonIcon_Bidoof[] = INCBIN_U8("graphics/pokemon/bidoof/icon.4bpp"); + const u8 gMonFootprint_Bidoof[] = INCBIN_U8("graphics/pokemon/bidoof/footprint.1bpp"); + + const u32 gMonFrontPic_BidoofF[] = INCBIN_U32("graphics/pokemon/bidoof/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_BidoofF[] = INCBIN_U32("graphics/pokemon/bidoof/backf.4bpp.lz"); + + const u32 gMonFrontPic_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/anim_front.4bpp.lz"); + const u32 gMonPalette_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/normal.gbapal.lz"); + const u32 gMonBackPic_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/back.4bpp.lz"); + const u32 gMonShinyPalette_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/shiny.gbapal.lz"); + const u8 gMonIcon_Bibarel[] = INCBIN_U8("graphics/pokemon/bibarel/icon.4bpp"); + const u8 gMonFootprint_Bibarel[] = INCBIN_U8("graphics/pokemon/bibarel/footprint.1bpp"); + + const u32 gMonFrontPic_BibarelF[] = INCBIN_U32("graphics/pokemon/bibarel/anim_frontf.4bpp.lz"); +#endif //P_FAMILY_BIDOOF + +#if P_FAMILY_KRICKETOT + const u32 gMonFrontPic_Kricketot[] = INCBIN_U32("graphics/pokemon/kricketot/anim_front.4bpp.lz"); + const u32 gMonPalette_Kricketot[] = INCBIN_U32("graphics/pokemon/kricketot/normal.gbapal.lz"); + const u32 gMonBackPic_Kricketot[] = INCBIN_U32("graphics/pokemon/kricketot/back.4bpp.lz"); + const u32 gMonShinyPalette_Kricketot[] = INCBIN_U32("graphics/pokemon/kricketot/shiny.gbapal.lz"); + const u8 gMonIcon_Kricketot[] = INCBIN_U8("graphics/pokemon/kricketot/icon.4bpp"); + const u8 gMonFootprint_Kricketot[] = INCBIN_U8("graphics/pokemon/kricketot/footprint.1bpp"); + + const u32 gMonFrontPic_KricketotF[] = INCBIN_U32("graphics/pokemon/kricketot/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_KricketotF[] = INCBIN_U32("graphics/pokemon/kricketot/backf.4bpp.lz"); + + const u32 gMonFrontPic_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/anim_front.4bpp.lz"); + const u32 gMonPalette_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/normal.gbapal.lz"); + const u32 gMonBackPic_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/back.4bpp.lz"); + const u32 gMonShinyPalette_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/shiny.gbapal.lz"); + const u8 gMonIcon_Kricketune[] = INCBIN_U8("graphics/pokemon/kricketune/icon.4bpp"); + const u8 gMonFootprint_Kricketune[] = INCBIN_U8("graphics/pokemon/kricketune/footprint.1bpp"); + + const u32 gMonFrontPic_KricketuneF[] = INCBIN_U32("graphics/pokemon/kricketune/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_KricketuneF[] = INCBIN_U32("graphics/pokemon/kricketune/backf.4bpp.lz"); +#endif //P_FAMILY_KRICKETOT + +#if P_FAMILY_SHINX + const u32 gMonFrontPic_Shinx[] = INCBIN_U32("graphics/pokemon/shinx/anim_front.4bpp.lz"); + const u32 gMonPalette_Shinx[] = INCBIN_U32("graphics/pokemon/shinx/normal.gbapal.lz"); + const u32 gMonBackPic_Shinx[] = INCBIN_U32("graphics/pokemon/shinx/back.4bpp.lz"); + const u32 gMonShinyPalette_Shinx[] = INCBIN_U32("graphics/pokemon/shinx/shiny.gbapal.lz"); + const u8 gMonIcon_Shinx[] = INCBIN_U8("graphics/pokemon/shinx/icon.4bpp"); + const u8 gMonFootprint_Shinx[] = INCBIN_U8("graphics/pokemon/shinx/footprint.1bpp"); + + const u32 gMonFrontPic_ShinxF[] = INCBIN_U32("graphics/pokemon/shinx/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_ShinxF[] = INCBIN_U32("graphics/pokemon/shinx/backf.4bpp.lz"); + + const u32 gMonFrontPic_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/anim_front.4bpp.lz"); + const u32 gMonPalette_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/normal.gbapal.lz"); + const u32 gMonBackPic_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/back.4bpp.lz"); + const u32 gMonShinyPalette_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/shiny.gbapal.lz"); + const u8 gMonIcon_Luxio[] = INCBIN_U8("graphics/pokemon/luxio/icon.4bpp"); + const u8 gMonFootprint_Luxio[] = INCBIN_U8("graphics/pokemon/luxio/footprint.1bpp"); + + const u32 gMonFrontPic_LuxioF[] = INCBIN_U32("graphics/pokemon/luxio/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_LuxioF[] = INCBIN_U32("graphics/pokemon/luxio/backf.4bpp.lz"); + + const u32 gMonFrontPic_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/anim_front.4bpp.lz"); + const u32 gMonPalette_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/normal.gbapal.lz"); + const u32 gMonBackPic_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/back.4bpp.lz"); + const u32 gMonShinyPalette_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/shiny.gbapal.lz"); + const u8 gMonIcon_Luxray[] = INCBIN_U8("graphics/pokemon/luxray/icon.4bpp"); + const u8 gMonFootprint_Luxray[] = INCBIN_U8("graphics/pokemon/luxray/footprint.1bpp"); + + const u32 gMonFrontPic_LuxrayF[] = INCBIN_U32("graphics/pokemon/luxray/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_LuxrayF[] = INCBIN_U32("graphics/pokemon/luxray/backf.4bpp.lz"); +#endif //P_FAMILY_SHINX + +#if P_FAMILY_CRANIDOS + const u32 gMonFrontPic_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/anim_front.4bpp.lz"); + const u32 gMonPalette_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/normal.gbapal.lz"); + const u32 gMonBackPic_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/back.4bpp.lz"); + const u32 gMonShinyPalette_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/shiny.gbapal.lz"); + const u8 gMonIcon_Cranidos[] = INCBIN_U8("graphics/pokemon/cranidos/icon.4bpp"); + const u8 gMonFootprint_Cranidos[] = INCBIN_U8("graphics/pokemon/cranidos/footprint.1bpp"); + + const u32 gMonFrontPic_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/anim_front.4bpp.lz"); + const u32 gMonPalette_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/normal.gbapal.lz"); + const u32 gMonBackPic_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/back.4bpp.lz"); + const u32 gMonShinyPalette_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/shiny.gbapal.lz"); + const u8 gMonIcon_Rampardos[] = INCBIN_U8("graphics/pokemon/rampardos/icon.4bpp"); + const u8 gMonFootprint_Rampardos[] = INCBIN_U8("graphics/pokemon/rampardos/footprint.1bpp"); +#endif //P_FAMILY_CRANIDOS + +#if P_FAMILY_SHIELDON + const u32 gMonFrontPic_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/anim_front.4bpp.lz"); + const u32 gMonPalette_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/normal.gbapal.lz"); + const u32 gMonBackPic_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/back.4bpp.lz"); + const u32 gMonShinyPalette_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/shiny.gbapal.lz"); + const u8 gMonIcon_Shieldon[] = INCBIN_U8("graphics/pokemon/shieldon/icon.4bpp"); + const u8 gMonFootprint_Shieldon[] = INCBIN_U8("graphics/pokemon/shieldon/footprint.1bpp"); + + const u32 gMonFrontPic_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/anim_front.4bpp.lz"); + const u32 gMonPalette_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/normal.gbapal.lz"); + const u32 gMonBackPic_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/back.4bpp.lz"); + const u32 gMonShinyPalette_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/shiny.gbapal.lz"); + const u8 gMonIcon_Bastiodon[] = INCBIN_U8("graphics/pokemon/bastiodon/icon.4bpp"); + const u8 gMonFootprint_Bastiodon[] = INCBIN_U8("graphics/pokemon/bastiodon/footprint.1bpp"); +#endif //P_FAMILY_SHIELDON + +#if P_FAMILY_BURMY + const u32 gMonFrontPic_BurmyPlantCloak[] = INCBIN_U32("graphics/pokemon/burmy/anim_front.4bpp.lz"); + const u32 gMonPalette_BurmyPlantCloak[] = INCBIN_U32("graphics/pokemon/burmy/normal.gbapal.lz"); + const u32 gMonBackPic_BurmyPlantCloak[] = INCBIN_U32("graphics/pokemon/burmy/back.4bpp.lz"); + const u32 gMonShinyPalette_BurmyPlantCloak[] = INCBIN_U32("graphics/pokemon/burmy/shiny.gbapal.lz"); + const u8 gMonIcon_BurmyPlantCloak[] = INCBIN_U8("graphics/pokemon/burmy/icon.4bpp"); + const u8 gMonFootprint_Burmy[] = INCBIN_U8("graphics/pokemon/burmy/plant/footprint.1bpp"); + + const u32 gMonFrontPic_BurmySandyCloak[] = INCBIN_U32("graphics/pokemon/burmy/sandy_cloak/anim_front.4bpp.lz"); + const u32 gMonPalette_BurmySandyCloak[] = INCBIN_U32("graphics/pokemon/burmy/sandy_cloak/normal.gbapal.lz"); + const u32 gMonBackPic_BurmySandyCloak[] = INCBIN_U32("graphics/pokemon/burmy/sandy_cloak/back.4bpp.lz"); + const u32 gMonShinyPalette_BurmySandyCloak[] = INCBIN_U32("graphics/pokemon/burmy/sandy_cloak/shiny.gbapal.lz"); + const u8 gMonIcon_BurmySandyCloak[] = INCBIN_U8("graphics/pokemon/burmy/sandy_cloak/icon.4bpp"); + + const u32 gMonFrontPic_BurmyTrashCloak[] = INCBIN_U32("graphics/pokemon/burmy/trash_cloak/anim_front.4bpp.lz"); + const u32 gMonPalette_BurmyTrashCloak[] = INCBIN_U32("graphics/pokemon/burmy/trash_cloak/normal.gbapal.lz"); + const u32 gMonBackPic_BurmyTrashCloak[] = INCBIN_U32("graphics/pokemon/burmy/trash_cloak/back.4bpp.lz"); + const u32 gMonShinyPalette_BurmyTrashCloak[] = INCBIN_U32("graphics/pokemon/burmy/trash_cloak/shiny.gbapal.lz"); + const u8 gMonIcon_BurmyTrashCloak[] = INCBIN_U8("graphics/pokemon/burmy/trash_cloak/icon.4bpp"); + + const u32 gMonFrontPic_WormadamPlantCloak[] = INCBIN_U32("graphics/pokemon/wormadam/anim_front.4bpp.lz"); + const u32 gMonPalette_WormadamPlantCloak[] = INCBIN_U32("graphics/pokemon/wormadam/normal.gbapal.lz"); + const u32 gMonBackPic_WormadamPlantCloak[] = INCBIN_U32("graphics/pokemon/wormadam/back.4bpp.lz"); + const u32 gMonShinyPalette_WormadamPlantCloak[] = INCBIN_U32("graphics/pokemon/wormadam/shiny.gbapal.lz"); + const u8 gMonIcon_WormadamPlantCloak[] = INCBIN_U8("graphics/pokemon/wormadam/icon.4bpp"); + const u8 gMonFootprint_Wormadam[] = INCBIN_U8("graphics/pokemon/wormadam/plant/footprint.1bpp"); + + const u32 gMonFrontPic_WormadamSandyCloak[] = INCBIN_U32("graphics/pokemon/wormadam/sandy_cloak/anim_front.4bpp.lz"); + const u32 gMonPalette_WormadamSandyCloak[] = INCBIN_U32("graphics/pokemon/wormadam/sandy_cloak/normal.gbapal.lz"); + const u32 gMonBackPic_WormadamSandyCloak[] = INCBIN_U32("graphics/pokemon/wormadam/sandy_cloak/back.4bpp.lz"); + const u32 gMonShinyPalette_WormadamSandyCloak[] = INCBIN_U32("graphics/pokemon/wormadam/sandy_cloak/shiny.gbapal.lz"); + const u8 gMonIcon_WormadamSandyCloak[] = INCBIN_U8("graphics/pokemon/wormadam/sandy_cloak/icon.4bpp"); + + const u32 gMonFrontPic_WormadamTrashCloak[] = INCBIN_U32("graphics/pokemon/wormadam/trash_cloak/anim_front.4bpp.lz"); + const u32 gMonPalette_WormadamTrashCloak[] = INCBIN_U32("graphics/pokemon/wormadam/trash_cloak/normal.gbapal.lz"); + const u32 gMonBackPic_WormadamTrashCloak[] = INCBIN_U32("graphics/pokemon/wormadam/trash_cloak/back.4bpp.lz"); + const u32 gMonShinyPalette_WormadamTrashCloak[] = INCBIN_U32("graphics/pokemon/wormadam/trash_cloak/shiny.gbapal.lz"); + const u8 gMonIcon_WormadamTrashCloak[] = INCBIN_U8("graphics/pokemon/wormadam/trash_cloak/icon.4bpp"); + + const u32 gMonFrontPic_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/anim_front.4bpp.lz"); + const u32 gMonPalette_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/normal.gbapal.lz"); + const u32 gMonBackPic_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/back.4bpp.lz"); + const u32 gMonShinyPalette_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/shiny.gbapal.lz"); + const u8 gMonIcon_Mothim[] = INCBIN_U8("graphics/pokemon/mothim/icon.4bpp"); + const u8 gMonFootprint_Mothim[] = INCBIN_U8("graphics/pokemon/mothim/footprint.1bpp"); +#endif //P_FAMILY_BURMY + +#if P_FAMILY_COMBEE + const u32 gMonFrontPic_Combee[] = INCBIN_U32("graphics/pokemon/combee/anim_front.4bpp.lz"); + const u32 gMonPalette_Combee[] = INCBIN_U32("graphics/pokemon/combee/normal.gbapal.lz"); + const u32 gMonBackPic_Combee[] = INCBIN_U32("graphics/pokemon/combee/back.4bpp.lz"); + const u32 gMonShinyPalette_Combee[] = INCBIN_U32("graphics/pokemon/combee/shiny.gbapal.lz"); + const u8 gMonIcon_Combee[] = INCBIN_U8("graphics/pokemon/combee/icon.4bpp"); + const u8 gMonFootprint_Combee[] = INCBIN_U8("graphics/pokemon/combee/footprint.1bpp"); + + const u32 gMonPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/normalf.gbapal.lz"); + const u32 gMonShinyPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/shinyf.gbapal.lz"); + + const u32 gMonFrontPic_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/anim_front.4bpp.lz"); + const u32 gMonPalette_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/normal.gbapal.lz"); + const u32 gMonBackPic_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/back.4bpp.lz"); + const u32 gMonShinyPalette_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/shiny.gbapal.lz"); + const u8 gMonIcon_Vespiquen[] = INCBIN_U8("graphics/pokemon/vespiquen/icon.4bpp"); + const u8 gMonFootprint_Vespiquen[] = INCBIN_U8("graphics/pokemon/vespiquen/footprint.1bpp"); +#endif //P_FAMILY_COMBEE + +#if P_FAMILY_PACHIRISU + const u32 gMonFrontPic_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/anim_front.4bpp.lz"); + const u32 gMonPalette_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/normal.gbapal.lz"); + const u32 gMonBackPic_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/back.4bpp.lz"); + const u32 gMonShinyPalette_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/shiny.gbapal.lz"); + const u8 gMonIcon_Pachirisu[] = INCBIN_U8("graphics/pokemon/pachirisu/icon.4bpp"); + const u8 gMonFootprint_Pachirisu[] = INCBIN_U8("graphics/pokemon/pachirisu/footprint.1bpp"); + + const u32 gMonFrontPic_PachirisuF[] = INCBIN_U32("graphics/pokemon/pachirisu/anim_frontf.4bpp.lz"); +#endif //P_FAMILY_PACHIRISU + +#if P_FAMILY_BUIZEL + const u32 gMonFrontPic_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/anim_front.4bpp.lz"); + const u32 gMonPalette_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/normal.gbapal.lz"); + const u32 gMonBackPic_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/back.4bpp.lz"); + const u32 gMonShinyPalette_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/shiny.gbapal.lz"); + const u8 gMonIcon_Buizel[] = INCBIN_U8("graphics/pokemon/buizel/icon.4bpp"); + const u8 gMonFootprint_Buizel[] = INCBIN_U8("graphics/pokemon/buizel/footprint.1bpp"); + + const u32 gMonBackPic_BuizelF[] = INCBIN_U32("graphics/pokemon/buizel/backf.4bpp.lz"); + + const u32 gMonFrontPic_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/anim_front.4bpp.lz"); + const u32 gMonPalette_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/normal.gbapal.lz"); + const u32 gMonBackPic_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/back.4bpp.lz"); + const u32 gMonShinyPalette_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/shiny.gbapal.lz"); + const u8 gMonIcon_Floatzel[] = INCBIN_U8("graphics/pokemon/floatzel/icon.4bpp"); + const u8 gMonFootprint_Floatzel[] = INCBIN_U8("graphics/pokemon/floatzel/footprint.1bpp"); + + const u32 gMonBackPic_FloatzelF[] = INCBIN_U32("graphics/pokemon/floatzel/backf.4bpp.lz"); +#endif //P_FAMILY_BUIZEL + +#if P_FAMILY_CHERUBI + const u32 gMonFrontPic_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/anim_front.4bpp.lz"); + const u32 gMonPalette_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/normal.gbapal.lz"); + const u32 gMonBackPic_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/back.4bpp.lz"); + const u32 gMonShinyPalette_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/shiny.gbapal.lz"); + const u8 gMonIcon_Cherubi[] = INCBIN_U8("graphics/pokemon/cherubi/icon.4bpp"); + const u8 gMonFootprint_Cherubi[] = INCBIN_U8("graphics/pokemon/cherubi/footprint.1bpp"); + + const u32 gMonFrontPic_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/anim_front.4bpp.lz"); + const u32 gMonPalette_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/normal.gbapal.lz"); + const u32 gMonBackPic_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/back.4bpp.lz"); + const u32 gMonShinyPalette_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/shiny.gbapal.lz"); + const u8 gMonIcon_CherrimOvercast[] = INCBIN_U8("graphics/pokemon/cherrim/icon.4bpp"); + const u8 gMonFootprint_Cherrim[] = INCBIN_U8("graphics/pokemon/cherrim/footprint.1bpp"); + + const u32 gMonFrontPic_CherrimSunshine[] = INCBIN_U32("graphics/pokemon/cherrim/sunshine/anim_front.4bpp.lz"); + const u32 gMonPalette_CherrimSunshine[] = INCBIN_U32("graphics/pokemon/cherrim/sunshine/normal.gbapal.lz"); + const u32 gMonBackPic_CherrimSunshine[] = INCBIN_U32("graphics/pokemon/cherrim/sunshine/back.4bpp.lz"); + const u32 gMonShinyPalette_CherrimSunshine[] = INCBIN_U32("graphics/pokemon/cherrim/sunshine/shiny.gbapal.lz"); + const u8 gMonIcon_CherrimSunshine[] = INCBIN_U8("graphics/pokemon/cherrim/sunshine/icon.4bpp"); +#endif //P_FAMILY_CHERUBI + +#if P_FAMILY_SHELLOS + const u32 gMonFrontPic_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/anim_front.4bpp.lz"); + const u32 gMonPalette_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/normal.gbapal.lz"); + const u32 gMonBackPic_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/back.4bpp.lz"); + const u32 gMonShinyPalette_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/shiny.gbapal.lz"); + const u8 gMonIcon_ShellosWestSea[] = INCBIN_U8("graphics/pokemon/shellos/icon.4bpp"); + const u8 gMonFootprint_Shellos[] = INCBIN_U8("graphics/pokemon/shellos/footprint.1bpp"); + + const u32 gMonFrontPic_ShellosEastSea[] = INCBIN_U32("graphics/pokemon/shellos/east_sea/anim_front.4bpp.lz"); + const u32 gMonPalette_ShellosEastSea[] = INCBIN_U32("graphics/pokemon/shellos/east_sea/normal.gbapal.lz"); + const u32 gMonBackPic_ShellosEastSea[] = INCBIN_U32("graphics/pokemon/shellos/east_sea/back.4bpp.lz"); + const u32 gMonShinyPalette_ShellosEastSea[] = INCBIN_U32("graphics/pokemon/shellos/east_sea/shiny.gbapal.lz"); + const u8 gMonIcon_ShellosEastSea[] = INCBIN_U8("graphics/pokemon/shellos/east_sea/icon.4bpp"); + + const u32 gMonFrontPic_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/anim_front.4bpp.lz"); + const u32 gMonPalette_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/normal.gbapal.lz"); + const u32 gMonBackPic_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/back.4bpp.lz"); + const u32 gMonShinyPalette_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/shiny.gbapal.lz"); + const u8 gMonIcon_GastrodonWestSea[] = INCBIN_U8("graphics/pokemon/gastrodon/icon.4bpp"); + const u8 gMonFootprint_Gastrodon[] = INCBIN_U8("graphics/pokemon/gastrodon/footprint.1bpp"); + + const u32 gMonFrontPic_GastrodonEastSea[] = INCBIN_U32("graphics/pokemon/gastrodon/east_sea/anim_front.4bpp.lz"); + const u32 gMonPalette_GastrodonEastSea[] = INCBIN_U32("graphics/pokemon/gastrodon/east_sea/normal.gbapal.lz"); + const u32 gMonBackPic_GastrodonEastSea[] = INCBIN_U32("graphics/pokemon/gastrodon/east_sea/back.4bpp.lz"); + const u32 gMonShinyPalette_GastrodonEastSea[] = INCBIN_U32("graphics/pokemon/gastrodon/east_sea/shiny.gbapal.lz"); + const u8 gMonIcon_GastrodonEastSea[] = INCBIN_U8("graphics/pokemon/gastrodon/east_sea/icon.4bpp"); +#endif //P_FAMILY_SHELLOS + +#if P_FAMILY_DRIFLOON + const u32 gMonFrontPic_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/anim_front.4bpp.lz"); + const u32 gMonPalette_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/normal.gbapal.lz"); + const u32 gMonBackPic_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/back.4bpp.lz"); + const u32 gMonShinyPalette_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/shiny.gbapal.lz"); + const u8 gMonIcon_Drifloon[] = INCBIN_U8("graphics/pokemon/drifloon/icon.4bpp"); + const u8 gMonFootprint_Drifloon[] = INCBIN_U8("graphics/pokemon/drifloon/footprint.1bpp"); + + const u32 gMonFrontPic_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/anim_front.4bpp.lz"); + const u32 gMonPalette_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/normal.gbapal.lz"); + const u32 gMonBackPic_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/back.4bpp.lz"); + const u32 gMonShinyPalette_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/shiny.gbapal.lz"); + const u8 gMonIcon_Drifblim[] = INCBIN_U8("graphics/pokemon/drifblim/icon.4bpp"); + const u8 gMonFootprint_Drifblim[] = INCBIN_U8("graphics/pokemon/drifblim/footprint.1bpp"); +#endif //P_FAMILY_DRIFLOON + +#if P_FAMILY_BUNEARY + const u32 gMonFrontPic_Buneary[] = INCBIN_U32("graphics/pokemon/buneary/anim_front.4bpp.lz"); + const u32 gMonPalette_Buneary[] = INCBIN_U32("graphics/pokemon/buneary/normal.gbapal.lz"); + const u32 gMonBackPic_Buneary[] = INCBIN_U32("graphics/pokemon/buneary/back.4bpp.lz"); + const u32 gMonShinyPalette_Buneary[] = INCBIN_U32("graphics/pokemon/buneary/shiny.gbapal.lz"); + const u8 gMonIcon_Buneary[] = INCBIN_U8("graphics/pokemon/buneary/icon.4bpp"); + const u8 gMonFootprint_Buneary[] = INCBIN_U8("graphics/pokemon/buneary/footprint.1bpp"); + + const u32 gMonFrontPic_Lopunny[] = INCBIN_U32("graphics/pokemon/lopunny/anim_front.4bpp.lz"); + const u32 gMonPalette_Lopunny[] = INCBIN_U32("graphics/pokemon/lopunny/normal.gbapal.lz"); + const u32 gMonBackPic_Lopunny[] = INCBIN_U32("graphics/pokemon/lopunny/back.4bpp.lz"); + const u32 gMonShinyPalette_Lopunny[] = INCBIN_U32("graphics/pokemon/lopunny/shiny.gbapal.lz"); + const u8 gMonIcon_Lopunny[] = INCBIN_U8("graphics/pokemon/lopunny/icon.4bpp"); + const u8 gMonFootprint_Lopunny[] = INCBIN_U8("graphics/pokemon/lopunny/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_LopunnyMega[] = INCBIN_U32("graphics/pokemon/lopunny/mega/front.4bpp.lz"); + const u32 gMonPalette_LopunnyMega[] = INCBIN_U32("graphics/pokemon/lopunny/mega/normal.gbapal.lz"); + const u32 gMonBackPic_LopunnyMega[] = INCBIN_U32("graphics/pokemon/lopunny/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_LopunnyMega[] = INCBIN_U32("graphics/pokemon/lopunny/mega/shiny.gbapal.lz"); + const u8 gMonIcon_LopunnyMega[] = INCBIN_U8("graphics/pokemon/lopunny/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BUNEARY + +#if P_FAMILY_GLAMEOW + const u32 gMonFrontPic_Glameow[] = INCBIN_U32("graphics/pokemon/glameow/anim_front.4bpp.lz"); + const u32 gMonPalette_Glameow[] = INCBIN_U32("graphics/pokemon/glameow/normal.gbapal.lz"); + const u32 gMonBackPic_Glameow[] = INCBIN_U32("graphics/pokemon/glameow/back.4bpp.lz"); + const u32 gMonShinyPalette_Glameow[] = INCBIN_U32("graphics/pokemon/glameow/shiny.gbapal.lz"); + const u8 gMonIcon_Glameow[] = INCBIN_U8("graphics/pokemon/glameow/icon.4bpp"); + const u8 gMonFootprint_Glameow[] = INCBIN_U8("graphics/pokemon/glameow/footprint.1bpp"); + + const u32 gMonFrontPic_Purugly[] = INCBIN_U32("graphics/pokemon/purugly/anim_front.4bpp.lz"); + const u32 gMonPalette_Purugly[] = INCBIN_U32("graphics/pokemon/purugly/normal.gbapal.lz"); + const u32 gMonBackPic_Purugly[] = INCBIN_U32("graphics/pokemon/purugly/back.4bpp.lz"); + const u32 gMonShinyPalette_Purugly[] = INCBIN_U32("graphics/pokemon/purugly/shiny.gbapal.lz"); + const u8 gMonIcon_Purugly[] = INCBIN_U8("graphics/pokemon/purugly/icon.4bpp"); + const u8 gMonFootprint_Purugly[] = INCBIN_U8("graphics/pokemon/purugly/footprint.1bpp"); +#endif //P_FAMILY_GLAMEOW + +#if P_FAMILY_STUNKY + const u32 gMonFrontPic_Stunky[] = INCBIN_U32("graphics/pokemon/stunky/anim_front.4bpp.lz"); + const u32 gMonPalette_Stunky[] = INCBIN_U32("graphics/pokemon/stunky/normal.gbapal.lz"); + const u32 gMonBackPic_Stunky[] = INCBIN_U32("graphics/pokemon/stunky/back.4bpp.lz"); + const u32 gMonShinyPalette_Stunky[] = INCBIN_U32("graphics/pokemon/stunky/shiny.gbapal.lz"); + const u8 gMonIcon_Stunky[] = INCBIN_U8("graphics/pokemon/stunky/icon.4bpp"); + const u8 gMonFootprint_Stunky[] = INCBIN_U8("graphics/pokemon/stunky/footprint.1bpp"); + + const u32 gMonFrontPic_Skuntank[] = INCBIN_U32("graphics/pokemon/skuntank/anim_front.4bpp.lz"); + const u32 gMonPalette_Skuntank[] = INCBIN_U32("graphics/pokemon/skuntank/normal.gbapal.lz"); + const u32 gMonBackPic_Skuntank[] = INCBIN_U32("graphics/pokemon/skuntank/back.4bpp.lz"); + const u32 gMonShinyPalette_Skuntank[] = INCBIN_U32("graphics/pokemon/skuntank/shiny.gbapal.lz"); + const u8 gMonIcon_Skuntank[] = INCBIN_U8("graphics/pokemon/skuntank/icon.4bpp"); + const u8 gMonFootprint_Skuntank[] = INCBIN_U8("graphics/pokemon/skuntank/footprint.1bpp"); +#endif //P_FAMILY_STUNKY + +#if P_FAMILY_BRONZOR + const u32 gMonFrontPic_Bronzor[] = INCBIN_U32("graphics/pokemon/bronzor/anim_front.4bpp.lz"); + const u32 gMonPalette_Bronzor[] = INCBIN_U32("graphics/pokemon/bronzor/normal.gbapal.lz"); + const u32 gMonBackPic_Bronzor[] = INCBIN_U32("graphics/pokemon/bronzor/back.4bpp.lz"); + const u32 gMonShinyPalette_Bronzor[] = INCBIN_U32("graphics/pokemon/bronzor/shiny.gbapal.lz"); + const u8 gMonIcon_Bronzor[] = INCBIN_U8("graphics/pokemon/bronzor/icon.4bpp"); + const u8 gMonFootprint_Bronzor[] = INCBIN_U8("graphics/pokemon/bronzor/footprint.1bpp"); + + const u32 gMonFrontPic_Bronzong[] = INCBIN_U32("graphics/pokemon/bronzong/anim_front.4bpp.lz"); + const u32 gMonPalette_Bronzong[] = INCBIN_U32("graphics/pokemon/bronzong/normal.gbapal.lz"); + const u32 gMonBackPic_Bronzong[] = INCBIN_U32("graphics/pokemon/bronzong/back.4bpp.lz"); + const u32 gMonShinyPalette_Bronzong[] = INCBIN_U32("graphics/pokemon/bronzong/shiny.gbapal.lz"); + const u8 gMonIcon_Bronzong[] = INCBIN_U8("graphics/pokemon/bronzong/icon.4bpp"); + const u8 gMonFootprint_Bronzong[] = INCBIN_U8("graphics/pokemon/bronzong/footprint.1bpp"); +#endif //P_FAMILY_BRONZOR + +#if P_FAMILY_CHATOT + const u32 gMonFrontPic_Chatot[] = INCBIN_U32("graphics/pokemon/chatot/anim_front.4bpp.lz"); + const u32 gMonPalette_Chatot[] = INCBIN_U32("graphics/pokemon/chatot/normal.gbapal.lz"); + const u32 gMonBackPic_Chatot[] = INCBIN_U32("graphics/pokemon/chatot/back.4bpp.lz"); + const u32 gMonShinyPalette_Chatot[] = INCBIN_U32("graphics/pokemon/chatot/shiny.gbapal.lz"); + const u8 gMonIcon_Chatot[] = INCBIN_U8("graphics/pokemon/chatot/icon.4bpp"); + const u8 gMonFootprint_Chatot[] = INCBIN_U8("graphics/pokemon/chatot/footprint.1bpp"); +#endif //P_FAMILY_CHATOT + +#if P_FAMILY_SPIRITOMB + const u32 gMonFrontPic_Spiritomb[] = INCBIN_U32("graphics/pokemon/spiritomb/anim_front.4bpp.lz"); + const u32 gMonPalette_Spiritomb[] = INCBIN_U32("graphics/pokemon/spiritomb/normal.gbapal.lz"); + const u32 gMonBackPic_Spiritomb[] = INCBIN_U32("graphics/pokemon/spiritomb/back.4bpp.lz"); + const u32 gMonShinyPalette_Spiritomb[] = INCBIN_U32("graphics/pokemon/spiritomb/shiny.gbapal.lz"); + const u8 gMonIcon_Spiritomb[] = INCBIN_U8("graphics/pokemon/spiritomb/icon.4bpp"); + const u8 gMonFootprint_Spiritomb[] = INCBIN_U8("graphics/pokemon/spiritomb/footprint.1bpp"); +#endif //P_FAMILY_SPIRITOMB + +#if P_FAMILY_GIBLE + const u32 gMonFrontPic_Gible[] = INCBIN_U32("graphics/pokemon/gible/anim_front.4bpp.lz"); + const u32 gMonPalette_Gible[] = INCBIN_U32("graphics/pokemon/gible/normal.gbapal.lz"); + const u32 gMonBackPic_Gible[] = INCBIN_U32("graphics/pokemon/gible/back.4bpp.lz"); + const u32 gMonShinyPalette_Gible[] = INCBIN_U32("graphics/pokemon/gible/shiny.gbapal.lz"); + const u8 gMonIcon_Gible[] = INCBIN_U8("graphics/pokemon/gible/icon.4bpp"); + const u8 gMonFootprint_Gible[] = INCBIN_U8("graphics/pokemon/gible/footprint.1bpp"); + + const u32 gMonFrontPic_GibleF[] = INCBIN_U32("graphics/pokemon/gible/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_GibleF[] = INCBIN_U32("graphics/pokemon/gible/backf.4bpp.lz"); + + const u32 gMonFrontPic_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/anim_front.4bpp.lz"); + const u32 gMonPalette_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/normal.gbapal.lz"); + const u32 gMonBackPic_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/back.4bpp.lz"); + const u32 gMonShinyPalette_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/shiny.gbapal.lz"); + const u8 gMonIcon_Gabite[] = INCBIN_U8("graphics/pokemon/gabite/icon.4bpp"); + const u8 gMonFootprint_Gabite[] = INCBIN_U8("graphics/pokemon/gabite/footprint.1bpp"); + + const u32 gMonFrontPic_GabiteF[] = INCBIN_U32("graphics/pokemon/gabite/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_GabiteF[] = INCBIN_U32("graphics/pokemon/gabite/backf.4bpp.lz"); + + const u32 gMonFrontPic_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/anim_front.4bpp.lz"); + const u32 gMonPalette_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/normal.gbapal.lz"); + const u32 gMonBackPic_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/back.4bpp.lz"); + const u32 gMonShinyPalette_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/shiny.gbapal.lz"); + const u8 gMonIcon_Garchomp[] = INCBIN_U8("graphics/pokemon/garchomp/icon.4bpp"); + const u8 gMonFootprint_Garchomp[] = INCBIN_U8("graphics/pokemon/garchomp/footprint.1bpp"); + + const u32 gMonFrontPic_GarchompF[] = INCBIN_U32("graphics/pokemon/garchomp/anim_frontf.4bpp.lz"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_GarchompMega[] = INCBIN_U32("graphics/pokemon/garchomp/mega/front.4bpp.lz"); + const u32 gMonPalette_GarchompMega[] = INCBIN_U32("graphics/pokemon/garchomp/mega/normal.gbapal.lz"); + const u32 gMonBackPic_GarchompMega[] = INCBIN_U32("graphics/pokemon/garchomp/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_GarchompMega[] = INCBIN_U32("graphics/pokemon/garchomp/mega/shiny.gbapal.lz"); + const u8 gMonIcon_GarchompMega[] = INCBIN_U8("graphics/pokemon/garchomp/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_GIBLE + +#if P_FAMILY_RIOLU + const u32 gMonFrontPic_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/anim_front.4bpp.lz"); + const u32 gMonPalette_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/normal.gbapal.lz"); + const u32 gMonBackPic_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/back.4bpp.lz"); + const u32 gMonShinyPalette_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/shiny.gbapal.lz"); + const u8 gMonIcon_Riolu[] = INCBIN_U8("graphics/pokemon/riolu/icon.4bpp"); + const u8 gMonFootprint_Riolu[] = INCBIN_U8("graphics/pokemon/riolu/footprint.1bpp"); + + const u32 gMonFrontPic_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/anim_front.4bpp.lz"); + const u32 gMonPalette_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/normal.gbapal.lz"); + const u32 gMonBackPic_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/back.4bpp.lz"); + const u32 gMonShinyPalette_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/shiny.gbapal.lz"); + const u8 gMonIcon_Lucario[] = INCBIN_U8("graphics/pokemon/lucario/icon.4bpp"); + const u8 gMonFootprint_Lucario[] = INCBIN_U8("graphics/pokemon/lucario/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_LucarioMega[] = INCBIN_U32("graphics/pokemon/lucario/mega/front.4bpp.lz"); + const u32 gMonPalette_LucarioMega[] = INCBIN_U32("graphics/pokemon/lucario/mega/normal.gbapal.lz"); + const u32 gMonBackPic_LucarioMega[] = INCBIN_U32("graphics/pokemon/lucario/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_LucarioMega[] = INCBIN_U32("graphics/pokemon/lucario/mega/shiny.gbapal.lz"); + const u8 gMonIcon_LucarioMega[] = INCBIN_U8("graphics/pokemon/lucario/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_RIOLU + +#if P_FAMILY_HIPPOPOTAS + const u32 gMonFrontPic_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/anim_front.4bpp.lz"); + const u32 gMonPalette_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/normal.gbapal.lz"); + const u32 gMonBackPic_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/back.4bpp.lz"); + const u32 gMonShinyPalette_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/shiny.gbapal.lz"); + const u8 gMonIcon_Hippopotas[] = INCBIN_U8("graphics/pokemon/hippopotas/icon.4bpp"); + const u8 gMonFootprint_Hippopotas[] = INCBIN_U8("graphics/pokemon/hippopotas/footprint.1bpp"); + + const u32 gMonPalette_HippopotasF[] = INCBIN_U32("graphics/pokemon/hippopotas/normalf.gbapal.lz"); + const u32 gMonShinyPalette_HippopotasF[] = INCBIN_U32("graphics/pokemon/hippopotas/shinyf.gbapal.lz"); +#if P_CUSTOM_GENDER_DIFF_ICONS + const u8 gMonIcon_HippopotasF[] = INCBIN_U8("graphics/pokemon/hippopotas/iconf.4bpp"); #endif -#if P_GEN_7_POKEMON == TRUE -const u8 gMonFootprint_Rowlet[] = INCBIN_U8("graphics/pokemon/rowlet/footprint.1bpp"); -const u8 gMonFootprint_Dartrix[] = INCBIN_U8("graphics/pokemon/dartrix/footprint.1bpp"); -const u8 gMonFootprint_Decidueye[] = INCBIN_U8("graphics/pokemon/decidueye/footprint.1bpp"); -const u8 gMonFootprint_Litten[] = INCBIN_U8("graphics/pokemon/litten/footprint.1bpp"); -const u8 gMonFootprint_Torracat[] = INCBIN_U8("graphics/pokemon/torracat/footprint.1bpp"); -const u8 gMonFootprint_Incineroar[] = INCBIN_U8("graphics/pokemon/incineroar/footprint.1bpp"); -const u8 gMonFootprint_Popplio[] = INCBIN_U8("graphics/pokemon/popplio/footprint.1bpp"); -const u8 gMonFootprint_Brionne[] = INCBIN_U8("graphics/pokemon/brionne/footprint.1bpp"); -const u8 gMonFootprint_Primarina[] = INCBIN_U8("graphics/pokemon/primarina/footprint.1bpp"); -const u8 gMonFootprint_Pikipek[] = INCBIN_U8("graphics/pokemon/pikipek/footprint.1bpp"); -const u8 gMonFootprint_Trumbeak[] = INCBIN_U8("graphics/pokemon/trumbeak/footprint.1bpp"); -const u8 gMonFootprint_Toucannon[] = INCBIN_U8("graphics/pokemon/toucannon/footprint.1bpp"); -const u8 gMonFootprint_Yungoos[] = INCBIN_U8("graphics/pokemon/yungoos/footprint.1bpp"); -const u8 gMonFootprint_Gumshoos[] = INCBIN_U8("graphics/pokemon/gumshoos/footprint.1bpp"); -const u8 gMonFootprint_Grubbin[] = INCBIN_U8("graphics/pokemon/grubbin/footprint.1bpp"); -const u8 gMonFootprint_Charjabug[] = INCBIN_U8("graphics/pokemon/charjabug/footprint.1bpp"); -const u8 gMonFootprint_Vikavolt[] = INCBIN_U8("graphics/pokemon/vikavolt/footprint.1bpp"); -const u8 gMonFootprint_Crabrawler[] = INCBIN_U8("graphics/pokemon/crabrawler/footprint.1bpp"); -const u8 gMonFootprint_Crabominable[] = INCBIN_U8("graphics/pokemon/crabominable/footprint.1bpp"); -const u8 gMonFootprint_Oricorio[] = INCBIN_U8("graphics/pokemon/oricorio/footprint.1bpp"); -const u8 gMonFootprint_Cutiefly[] = INCBIN_U8("graphics/pokemon/cutiefly/footprint.1bpp"); -const u8 gMonFootprint_Ribombee[] = INCBIN_U8("graphics/pokemon/ribombee/footprint.1bpp"); -const u8 gMonFootprint_Rockruff[] = INCBIN_U8("graphics/pokemon/rockruff/footprint.1bpp"); -const u8 gMonFootprint_Lycanroc[] = INCBIN_U8("graphics/pokemon/lycanroc/footprint.1bpp"); -const u8 gMonFootprint_Wishiwashi[] = INCBIN_U8("graphics/pokemon/wishiwashi/footprint.1bpp"); -const u8 gMonFootprint_Mareanie[] = INCBIN_U8("graphics/pokemon/mareanie/footprint.1bpp"); -const u8 gMonFootprint_Toxapex[] = INCBIN_U8("graphics/pokemon/toxapex/footprint.1bpp"); -const u8 gMonFootprint_Mudbray[] = INCBIN_U8("graphics/pokemon/mudbray/footprint.1bpp"); -const u8 gMonFootprint_Mudsdale[] = INCBIN_U8("graphics/pokemon/mudsdale/footprint.1bpp"); -const u8 gMonFootprint_Dewpider[] = INCBIN_U8("graphics/pokemon/dewpider/footprint.1bpp"); -const u8 gMonFootprint_Araquanid[] = INCBIN_U8("graphics/pokemon/araquanid/footprint.1bpp"); -const u8 gMonFootprint_Fomantis[] = INCBIN_U8("graphics/pokemon/fomantis/footprint.1bpp"); -const u8 gMonFootprint_Lurantis[] = INCBIN_U8("graphics/pokemon/lurantis/footprint.1bpp"); -const u8 gMonFootprint_Morelull[] = INCBIN_U8("graphics/pokemon/morelull/footprint.1bpp"); -const u8 gMonFootprint_Shiinotic[] = INCBIN_U8("graphics/pokemon/shiinotic/footprint.1bpp"); -const u8 gMonFootprint_Salandit[] = INCBIN_U8("graphics/pokemon/salandit/footprint.1bpp"); -const u8 gMonFootprint_Salazzle[] = INCBIN_U8("graphics/pokemon/salazzle/footprint.1bpp"); -const u8 gMonFootprint_Stufful[] = INCBIN_U8("graphics/pokemon/stufful/footprint.1bpp"); -const u8 gMonFootprint_Bewear[] = INCBIN_U8("graphics/pokemon/bewear/footprint.1bpp"); -const u8 gMonFootprint_Bounsweet[] = INCBIN_U8("graphics/pokemon/bounsweet/footprint.1bpp"); -const u8 gMonFootprint_Steenee[] = INCBIN_U8("graphics/pokemon/steenee/footprint.1bpp"); -const u8 gMonFootprint_Tsareena[] = INCBIN_U8("graphics/pokemon/tsareena/footprint.1bpp"); -const u8 gMonFootprint_Comfey[] = INCBIN_U8("graphics/pokemon/comfey/footprint.1bpp"); -const u8 gMonFootprint_Oranguru[] = INCBIN_U8("graphics/pokemon/oranguru/footprint.1bpp"); -const u8 gMonFootprint_Passimian[] = INCBIN_U8("graphics/pokemon/passimian/footprint.1bpp"); -const u8 gMonFootprint_Wimpod[] = INCBIN_U8("graphics/pokemon/wimpod/footprint.1bpp"); -const u8 gMonFootprint_Golisopod[] = INCBIN_U8("graphics/pokemon/golisopod/footprint.1bpp"); -const u8 gMonFootprint_Sandygast[] = INCBIN_U8("graphics/pokemon/sandygast/footprint.1bpp"); -const u8 gMonFootprint_Palossand[] = INCBIN_U8("graphics/pokemon/palossand/footprint.1bpp"); -const u8 gMonFootprint_Pyukumuku[] = INCBIN_U8("graphics/pokemon/pyukumuku/footprint.1bpp"); -const u8 gMonFootprint_Type_Null[] = INCBIN_U8("graphics/pokemon/type_null/footprint.1bpp"); -const u8 gMonFootprint_Silvally[] = INCBIN_U8("graphics/pokemon/silvally/footprint.1bpp"); -const u8 gMonFootprint_Minior[] = INCBIN_U8("graphics/pokemon/minior/footprint.1bpp"); -const u8 gMonFootprint_Komala[] = INCBIN_U8("graphics/pokemon/komala/footprint.1bpp"); -const u8 gMonFootprint_Turtonator[] = INCBIN_U8("graphics/pokemon/turtonator/footprint.1bpp"); -const u8 gMonFootprint_Togedemaru[] = INCBIN_U8("graphics/pokemon/togedemaru/footprint.1bpp"); -const u8 gMonFootprint_Mimikyu[] = INCBIN_U8("graphics/pokemon/mimikyu/footprint.1bpp"); -const u8 gMonFootprint_Bruxish[] = INCBIN_U8("graphics/pokemon/bruxish/footprint.1bpp"); -const u8 gMonFootprint_Drampa[] = INCBIN_U8("graphics/pokemon/drampa/footprint.1bpp"); -const u8 gMonFootprint_Dhelmise[] = INCBIN_U8("graphics/pokemon/dhelmise/footprint.1bpp"); -const u8 gMonFootprint_JangmoO[] = INCBIN_U8("graphics/pokemon/jangmo_o/footprint.1bpp"); -const u8 gMonFootprint_HakamoO[] = INCBIN_U8("graphics/pokemon/hakamo_o/footprint.1bpp"); -const u8 gMonFootprint_KommoO[] = INCBIN_U8("graphics/pokemon/kommo_o/footprint.1bpp"); -const u8 gMonFootprint_Tapu_Koko[] = INCBIN_U8("graphics/pokemon/tapu_koko/footprint.1bpp"); -const u8 gMonFootprint_Tapu_Lele[] = INCBIN_U8("graphics/pokemon/tapu_lele/footprint.1bpp"); -const u8 gMonFootprint_Tapu_Bulu[] = INCBIN_U8("graphics/pokemon/tapu_bulu/footprint.1bpp"); -const u8 gMonFootprint_Tapu_Fini[] = INCBIN_U8("graphics/pokemon/tapu_fini/footprint.1bpp"); -const u8 gMonFootprint_Cosmog[] = INCBIN_U8("graphics/pokemon/cosmog/footprint.1bpp"); -const u8 gMonFootprint_Cosmoem[] = INCBIN_U8("graphics/pokemon/cosmoem/footprint.1bpp"); -const u8 gMonFootprint_Solgaleo[] = INCBIN_U8("graphics/pokemon/solgaleo/footprint.1bpp"); -const u8 gMonFootprint_Lunala[] = INCBIN_U8("graphics/pokemon/lunala/footprint.1bpp"); -const u8 gMonFootprint_Nihilego[] = INCBIN_U8("graphics/pokemon/nihilego/footprint.1bpp"); -const u8 gMonFootprint_Buzzwole[] = INCBIN_U8("graphics/pokemon/buzzwole/footprint.1bpp"); -const u8 gMonFootprint_Pheromosa[] = INCBIN_U8("graphics/pokemon/pheromosa/footprint.1bpp"); -const u8 gMonFootprint_Xurkitree[] = INCBIN_U8("graphics/pokemon/xurkitree/footprint.1bpp"); -const u8 gMonFootprint_Celesteela[] = INCBIN_U8("graphics/pokemon/celesteela/footprint.1bpp"); -const u8 gMonFootprint_Kartana[] = INCBIN_U8("graphics/pokemon/kartana/footprint.1bpp"); -const u8 gMonFootprint_Guzzlord[] = INCBIN_U8("graphics/pokemon/guzzlord/footprint.1bpp"); -const u8 gMonFootprint_Necrozma[] = INCBIN_U8("graphics/pokemon/necrozma/footprint.1bpp"); -const u8 gMonFootprint_Magearna[] = INCBIN_U8("graphics/pokemon/magearna/footprint.1bpp"); -const u8 gMonFootprint_Marshadow[] = INCBIN_U8("graphics/pokemon/marshadow/footprint.1bpp"); -const u8 gMonFootprint_Poipole[] = INCBIN_U8("graphics/pokemon/poipole/footprint.1bpp"); -const u8 gMonFootprint_Naganadel[] = INCBIN_U8("graphics/pokemon/naganadel/footprint.1bpp"); -const u8 gMonFootprint_Stakataka[] = INCBIN_U8("graphics/pokemon/stakataka/footprint.1bpp"); -const u8 gMonFootprint_Blacephalon[] = INCBIN_U8("graphics/pokemon/blacephalon/footprint.1bpp"); -const u8 gMonFootprint_Zeraora[] = INCBIN_U8("graphics/pokemon/zeraora/footprint.1bpp"); -const u8 gMonFootprint_Meltan[] = INCBIN_U8("graphics/pokemon/meltan/footprint.1bpp"); -const u8 gMonFootprint_Melmetal[] = INCBIN_U8("graphics/pokemon/melmetal/footprint.1bpp"); -#endif -#if P_GEN_8_POKEMON == TRUE -const u8 gMonFootprint_Grookey[] = INCBIN_U8("graphics/pokemon/grookey/footprint.1bpp"); -const u8 gMonFootprint_Thwackey[] = INCBIN_U8("graphics/pokemon/thwackey/footprint.1bpp"); -const u8 gMonFootprint_Rillaboom[] = INCBIN_U8("graphics/pokemon/rillaboom/footprint.1bpp"); -const u8 gMonFootprint_Scorbunny[] = INCBIN_U8("graphics/pokemon/scorbunny/footprint.1bpp"); -const u8 gMonFootprint_Raboot[] = INCBIN_U8("graphics/pokemon/raboot/footprint.1bpp"); -const u8 gMonFootprint_Cinderace[] = INCBIN_U8("graphics/pokemon/cinderace/footprint.1bpp"); -const u8 gMonFootprint_Sobble[] = INCBIN_U8("graphics/pokemon/sobble/footprint.1bpp"); -const u8 gMonFootprint_Drizzile[] = INCBIN_U8("graphics/pokemon/drizzile/footprint.1bpp"); -const u8 gMonFootprint_Inteleon[] = INCBIN_U8("graphics/pokemon/inteleon/footprint.1bpp"); -const u8 gMonFootprint_Skwovet[] = INCBIN_U8("graphics/pokemon/skwovet/footprint.1bpp"); -const u8 gMonFootprint_Greedent[] = INCBIN_U8("graphics/pokemon/greedent/footprint.1bpp"); -const u8 gMonFootprint_Rookidee[] = INCBIN_U8("graphics/pokemon/rookidee/footprint.1bpp"); -const u8 gMonFootprint_Corvisquire[] = INCBIN_U8("graphics/pokemon/corvisquire/footprint.1bpp"); -const u8 gMonFootprint_Corviknight[] = INCBIN_U8("graphics/pokemon/corviknight/footprint.1bpp"); -const u8 gMonFootprint_Blipbug[] = INCBIN_U8("graphics/pokemon/blipbug/footprint.1bpp"); -const u8 gMonFootprint_Dottler[] = INCBIN_U8("graphics/pokemon/dottler/footprint.1bpp"); -const u8 gMonFootprint_Orbeetle[] = INCBIN_U8("graphics/pokemon/orbeetle/footprint.1bpp"); -const u8 gMonFootprint_Nickit[] = INCBIN_U8("graphics/pokemon/nickit/footprint.1bpp"); -const u8 gMonFootprint_Thievul[] = INCBIN_U8("graphics/pokemon/thievul/footprint.1bpp"); -const u8 gMonFootprint_Gossifleur[] = INCBIN_U8("graphics/pokemon/gossifleur/footprint.1bpp"); -const u8 gMonFootprint_Eldegoss[] = INCBIN_U8("graphics/pokemon/eldegoss/footprint.1bpp"); -const u8 gMonFootprint_Wooloo[] = INCBIN_U8("graphics/pokemon/wooloo/footprint.1bpp"); -const u8 gMonFootprint_Dubwool[] = INCBIN_U8("graphics/pokemon/dubwool/footprint.1bpp"); -const u8 gMonFootprint_Chewtle[] = INCBIN_U8("graphics/pokemon/chewtle/footprint.1bpp"); -const u8 gMonFootprint_Drednaw[] = INCBIN_U8("graphics/pokemon/drednaw/footprint.1bpp"); -const u8 gMonFootprint_Yamper[] = INCBIN_U8("graphics/pokemon/yamper/footprint.1bpp"); -const u8 gMonFootprint_Boltund[] = INCBIN_U8("graphics/pokemon/boltund/footprint.1bpp"); -const u8 gMonFootprint_Rolycoly[] = INCBIN_U8("graphics/pokemon/rolycoly/footprint.1bpp"); -const u8 gMonFootprint_Carkol[] = INCBIN_U8("graphics/pokemon/carkol/footprint.1bpp"); -const u8 gMonFootprint_Coalossal[] = INCBIN_U8("graphics/pokemon/coalossal/footprint.1bpp"); -const u8 gMonFootprint_Applin[] = INCBIN_U8("graphics/pokemon/applin/footprint.1bpp"); -const u8 gMonFootprint_Flapple[] = INCBIN_U8("graphics/pokemon/flapple/footprint.1bpp"); -const u8 gMonFootprint_Appletun[] = INCBIN_U8("graphics/pokemon/appletun/footprint.1bpp"); -const u8 gMonFootprint_Silicobra[] = INCBIN_U8("graphics/pokemon/silicobra/footprint.1bpp"); -const u8 gMonFootprint_Sandaconda[] = INCBIN_U8("graphics/pokemon/sandaconda/footprint.1bpp"); -const u8 gMonFootprint_Cramorant[] = INCBIN_U8("graphics/pokemon/cramorant/footprint.1bpp"); -const u8 gMonFootprint_Arrokuda[] = INCBIN_U8("graphics/pokemon/arrokuda/footprint.1bpp"); -const u8 gMonFootprint_Barraskewda[] = INCBIN_U8("graphics/pokemon/barraskewda/footprint.1bpp"); -const u8 gMonFootprint_Toxel[] = INCBIN_U8("graphics/pokemon/toxel/footprint.1bpp"); -const u8 gMonFootprint_Toxtricity[] = INCBIN_U8("graphics/pokemon/toxtricity/footprint.1bpp"); -const u8 gMonFootprint_Sizzlipede[] = INCBIN_U8("graphics/pokemon/sizzlipede/footprint.1bpp"); -const u8 gMonFootprint_Centiskorch[] = INCBIN_U8("graphics/pokemon/centiskorch/footprint.1bpp"); -const u8 gMonFootprint_Clobbopus[] = INCBIN_U8("graphics/pokemon/clobbopus/footprint.1bpp"); -const u8 gMonFootprint_Grapploct[] = INCBIN_U8("graphics/pokemon/grapploct/footprint.1bpp"); -const u8 gMonFootprint_Sinistea[] = INCBIN_U8("graphics/pokemon/sinistea/footprint.1bpp"); -const u8 gMonFootprint_Polteageist[] = INCBIN_U8("graphics/pokemon/polteageist/footprint.1bpp"); -const u8 gMonFootprint_Hatenna[] = INCBIN_U8("graphics/pokemon/hatenna/footprint.1bpp"); -const u8 gMonFootprint_Hattrem[] = INCBIN_U8("graphics/pokemon/hattrem/footprint.1bpp"); -const u8 gMonFootprint_Hatterene[] = INCBIN_U8("graphics/pokemon/hatterene/footprint.1bpp"); -const u8 gMonFootprint_Impidimp[] = INCBIN_U8("graphics/pokemon/impidimp/footprint.1bpp"); -const u8 gMonFootprint_Morgrem[] = INCBIN_U8("graphics/pokemon/morgrem/footprint.1bpp"); -const u8 gMonFootprint_Grimmsnarl[] = INCBIN_U8("graphics/pokemon/grimmsnarl/footprint.1bpp"); -const u8 gMonFootprint_Obstagoon[] = INCBIN_U8("graphics/pokemon/obstagoon/footprint.1bpp"); -const u8 gMonFootprint_Perrserker[] = INCBIN_U8("graphics/pokemon/perrserker/footprint.1bpp"); -const u8 gMonFootprint_Cursola[] = INCBIN_U8("graphics/pokemon/cursola/footprint.1bpp"); -const u8 gMonFootprint_Sirfetchd[] = INCBIN_U8("graphics/pokemon/sirfetchd/footprint.1bpp"); -const u8 gMonFootprint_Mr_Rime[] = INCBIN_U8("graphics/pokemon/mr_rime/footprint.1bpp"); -const u8 gMonFootprint_Runerigus[] = INCBIN_U8("graphics/pokemon/runerigus/footprint.1bpp"); -const u8 gMonFootprint_Milcery[] = INCBIN_U8("graphics/pokemon/milcery/footprint.1bpp"); -const u8 gMonFootprint_Alcremie[] = INCBIN_U8("graphics/pokemon/alcremie/footprint.1bpp"); -const u8 gMonFootprint_Falinks[] = INCBIN_U8("graphics/pokemon/falinks/footprint.1bpp"); -const u8 gMonFootprint_Pincurchin[] = INCBIN_U8("graphics/pokemon/pincurchin/footprint.1bpp"); -const u8 gMonFootprint_Snom[] = INCBIN_U8("graphics/pokemon/snom/footprint.1bpp"); -const u8 gMonFootprint_Frosmoth[] = INCBIN_U8("graphics/pokemon/frosmoth/footprint.1bpp"); -const u8 gMonFootprint_Stonjourner[] = INCBIN_U8("graphics/pokemon/stonjourner/footprint.1bpp"); -const u8 gMonFootprint_Eiscue[] = INCBIN_U8("graphics/pokemon/eiscue/footprint.1bpp"); -const u8 gMonFootprint_Indeedee[] = INCBIN_U8("graphics/pokemon/indeedee/footprint.1bpp"); -const u8 gMonFootprint_Morpeko[] = INCBIN_U8("graphics/pokemon/morpeko/footprint.1bpp"); -const u8 gMonFootprint_Cufant[] = INCBIN_U8("graphics/pokemon/cufant/footprint.1bpp"); -const u8 gMonFootprint_Copperajah[] = INCBIN_U8("graphics/pokemon/copperajah/footprint.1bpp"); -const u8 gMonFootprint_Dracozolt[] = INCBIN_U8("graphics/pokemon/dracozolt/footprint.1bpp"); -const u8 gMonFootprint_Arctozolt[] = INCBIN_U8("graphics/pokemon/arctozolt/footprint.1bpp"); -const u8 gMonFootprint_Dracovish[] = INCBIN_U8("graphics/pokemon/dracovish/footprint.1bpp"); -const u8 gMonFootprint_Arctovish[] = INCBIN_U8("graphics/pokemon/arctovish/footprint.1bpp"); -const u8 gMonFootprint_Duraludon[] = INCBIN_U8("graphics/pokemon/duraludon/footprint.1bpp"); -const u8 gMonFootprint_Dreepy[] = INCBIN_U8("graphics/pokemon/dreepy/footprint.1bpp"); -const u8 gMonFootprint_Drakloak[] = INCBIN_U8("graphics/pokemon/drakloak/footprint.1bpp"); -const u8 gMonFootprint_Dragapult[] = INCBIN_U8("graphics/pokemon/dragapult/footprint.1bpp"); -const u8 gMonFootprint_Zacian[] = INCBIN_U8("graphics/pokemon/zacian/footprint.1bpp"); -const u8 gMonFootprint_Zamazenta[] = INCBIN_U8("graphics/pokemon/zamazenta/footprint.1bpp"); -const u8 gMonFootprint_Eternatus[] = INCBIN_U8("graphics/pokemon/eternatus/footprint.1bpp"); -const u8 gMonFootprint_Kubfu[] = INCBIN_U8("graphics/pokemon/kubfu/footprint.1bpp"); -const u8 gMonFootprint_Urshifu[] = INCBIN_U8("graphics/pokemon/urshifu/footprint.1bpp"); -const u8 gMonFootprint_Zarude[] = INCBIN_U8("graphics/pokemon/zarude/footprint.1bpp"); -const u8 gMonFootprint_Regieleki[] = INCBIN_U8("graphics/pokemon/regieleki/footprint.1bpp"); -const u8 gMonFootprint_Regidrago[] = INCBIN_U8("graphics/pokemon/regidrago/footprint.1bpp"); -const u8 gMonFootprint_Glastrier[] = INCBIN_U8("graphics/pokemon/glastrier/footprint.1bpp"); -const u8 gMonFootprint_Spectrier[] = INCBIN_U8("graphics/pokemon/spectrier/footprint.1bpp"); -const u8 gMonFootprint_Calyrex[] = INCBIN_U8("graphics/pokemon/calyrex/footprint.1bpp"); -//const u8 gMonFootprint_Wyrdeer[] = INCBIN_U8("graphics/pokemon/wyrdeer/footprint.1bpp"); -//const u8 gMonFootprint_Kleavor[] = INCBIN_U8("graphics/pokemon/kleavor/footprint.1bpp"); -//const u8 gMonFootprint_Ursaluna[] = INCBIN_U8("graphics/pokemon/ursaluna/footprint.1bpp"); -//const u8 gMonFootprint_Basculegion[] = INCBIN_U8("graphics/pokemon/basculegion/footprint.1bpp"); -//const u8 gMonFootprint_Sneasler[] = INCBIN_U8("graphics/pokemon/sneasler/footprint.1bpp"); -//const u8 gMonFootprint_Overqwil[] = INCBIN_U8("graphics/pokemon/overqwil/footprint.1bpp"); -//const u8 gMonFootprint_Enamorus[] = INCBIN_U8("graphics/pokemon/enamorus/footprint.1bpp"); + + const u32 gMonFrontPic_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/anim_front.4bpp.lz"); + const u32 gMonPalette_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/normal.gbapal.lz"); + const u32 gMonBackPic_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/back.4bpp.lz"); + const u32 gMonShinyPalette_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/shiny.gbapal.lz"); + const u8 gMonIcon_Hippowdon[] = INCBIN_U8("graphics/pokemon/hippowdon/icon.4bpp"); + const u8 gMonFootprint_Hippowdon[] = INCBIN_U8("graphics/pokemon/hippowdon/footprint.1bpp"); + + const u32 gMonPalette_HippowdonF[] = INCBIN_U32("graphics/pokemon/hippowdon/normalf.gbapal.lz"); + const u32 gMonShinyPalette_HippowdonF[] = INCBIN_U32("graphics/pokemon/hippowdon/shinyf.gbapal.lz"); +#if P_CUSTOM_GENDER_DIFF_ICONS + const u8 gMonIcon_HippowdonF[] = INCBIN_U8("graphics/pokemon/hippowdon/iconf.4bpp"); #endif +#endif //P_FAMILY_HIPPOPOTAS + +#if P_FAMILY_SKORUPI + const u32 gMonFrontPic_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/anim_front.4bpp.lz"); + const u32 gMonPalette_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/normal.gbapal.lz"); + const u32 gMonBackPic_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/back.4bpp.lz"); + const u32 gMonShinyPalette_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/shiny.gbapal.lz"); + const u8 gMonIcon_Skorupi[] = INCBIN_U8("graphics/pokemon/skorupi/icon.4bpp"); + const u8 gMonFootprint_Skorupi[] = INCBIN_U8("graphics/pokemon/skorupi/footprint.1bpp"); + + const u32 gMonFrontPic_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/anim_front.4bpp.lz"); + const u32 gMonPalette_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/normal.gbapal.lz"); + const u32 gMonBackPic_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/back.4bpp.lz"); + const u32 gMonShinyPalette_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/shiny.gbapal.lz"); + const u8 gMonIcon_Drapion[] = INCBIN_U8("graphics/pokemon/drapion/icon.4bpp"); + const u8 gMonFootprint_Drapion[] = INCBIN_U8("graphics/pokemon/drapion/footprint.1bpp"); +#endif //P_FAMILY_SKORUPI + +#if P_FAMILY_CROAGUNK + const u32 gMonFrontPic_Croagunk[] = INCBIN_U32("graphics/pokemon/croagunk/anim_front.4bpp.lz"); + const u32 gMonPalette_Croagunk[] = INCBIN_U32("graphics/pokemon/croagunk/normal.gbapal.lz"); + const u32 gMonBackPic_Croagunk[] = INCBIN_U32("graphics/pokemon/croagunk/back.4bpp.lz"); + const u32 gMonShinyPalette_Croagunk[] = INCBIN_U32("graphics/pokemon/croagunk/shiny.gbapal.lz"); + const u8 gMonIcon_Croagunk[] = INCBIN_U8("graphics/pokemon/croagunk/icon.4bpp"); + const u8 gMonFootprint_Croagunk[] = INCBIN_U8("graphics/pokemon/croagunk/footprint.1bpp"); + + const u32 gMonFrontPic_CroagunkF[] = INCBIN_U32("graphics/pokemon/croagunk/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_CroagunkF[] = INCBIN_U32("graphics/pokemon/croagunk/backf.4bpp.lz"); + + const u32 gMonFrontPic_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/anim_front.4bpp.lz"); + const u32 gMonPalette_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/normal.gbapal.lz"); + const u32 gMonBackPic_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/back.4bpp.lz"); + const u32 gMonShinyPalette_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/shiny.gbapal.lz"); + const u8 gMonIcon_Toxicroak[] = INCBIN_U8("graphics/pokemon/toxicroak/icon.4bpp"); + const u8 gMonFootprint_Toxicroak[] = INCBIN_U8("graphics/pokemon/toxicroak/footprint.1bpp"); + + const u32 gMonFrontPic_ToxicroakF[] = INCBIN_U32("graphics/pokemon/toxicroak/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_ToxicroakF[] = INCBIN_U32("graphics/pokemon/toxicroak/backf.4bpp.lz"); +#endif //P_FAMILY_CROAGUNK + +#if P_FAMILY_CARNIVINE + const u32 gMonFrontPic_Carnivine[] = INCBIN_U32("graphics/pokemon/carnivine/anim_front.4bpp.lz"); + const u32 gMonPalette_Carnivine[] = INCBIN_U32("graphics/pokemon/carnivine/normal.gbapal.lz"); + const u32 gMonBackPic_Carnivine[] = INCBIN_U32("graphics/pokemon/carnivine/back.4bpp.lz"); + const u32 gMonShinyPalette_Carnivine[] = INCBIN_U32("graphics/pokemon/carnivine/shiny.gbapal.lz"); + const u8 gMonIcon_Carnivine[] = INCBIN_U8("graphics/pokemon/carnivine/icon.4bpp"); + const u8 gMonFootprint_Carnivine[] = INCBIN_U8("graphics/pokemon/carnivine/footprint.1bpp"); +#endif //P_FAMILY_CARNIVINE + +#if P_FAMILY_FINNEON + const u32 gMonFrontPic_Finneon[] = INCBIN_U32("graphics/pokemon/finneon/anim_front.4bpp.lz"); + const u32 gMonPalette_Finneon[] = INCBIN_U32("graphics/pokemon/finneon/normal.gbapal.lz"); + const u32 gMonBackPic_Finneon[] = INCBIN_U32("graphics/pokemon/finneon/back.4bpp.lz"); + const u32 gMonShinyPalette_Finneon[] = INCBIN_U32("graphics/pokemon/finneon/shiny.gbapal.lz"); + const u8 gMonIcon_Finneon[] = INCBIN_U8("graphics/pokemon/finneon/icon.4bpp"); + const u8 gMonFootprint_Finneon[] = INCBIN_U8("graphics/pokemon/finneon/footprint.1bpp"); + + const u32 gMonFrontPic_FinneonF[] = INCBIN_U32("graphics/pokemon/finneon/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_FinneonF[] = INCBIN_U32("graphics/pokemon/finneon/backf.4bpp.lz"); + + const u32 gMonFrontPic_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/anim_front.4bpp.lz"); + const u32 gMonPalette_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/normal.gbapal.lz"); + const u32 gMonBackPic_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/back.4bpp.lz"); + const u32 gMonShinyPalette_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/shiny.gbapal.lz"); + const u8 gMonIcon_Lumineon[] = INCBIN_U8("graphics/pokemon/lumineon/icon.4bpp"); + const u8 gMonFootprint_Lumineon[] = INCBIN_U8("graphics/pokemon/lumineon/footprint.1bpp"); + + const u32 gMonFrontPic_LumineonF[] = INCBIN_U32("graphics/pokemon/lumineon/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_LumineonF[] = INCBIN_U32("graphics/pokemon/lumineon/backf.4bpp.lz"); +#endif //P_FAMILY_FINNEON + +#if P_FAMILY_SNOVER + const u32 gMonFrontPic_Snover[] = INCBIN_U32("graphics/pokemon/snover/anim_front.4bpp.lz"); + const u32 gMonPalette_Snover[] = INCBIN_U32("graphics/pokemon/snover/normal.gbapal.lz"); + const u32 gMonBackPic_Snover[] = INCBIN_U32("graphics/pokemon/snover/back.4bpp.lz"); + const u32 gMonShinyPalette_Snover[] = INCBIN_U32("graphics/pokemon/snover/shiny.gbapal.lz"); + const u8 gMonIcon_Snover[] = INCBIN_U8("graphics/pokemon/snover/icon.4bpp"); + const u8 gMonFootprint_Snover[] = INCBIN_U8("graphics/pokemon/snover/footprint.1bpp"); + + const u32 gMonFrontPic_SnoverF[] = INCBIN_U32("graphics/pokemon/snover/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_SnoverF[] = INCBIN_U32("graphics/pokemon/snover/backf.4bpp.lz"); + + const u32 gMonFrontPic_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/anim_front.4bpp.lz"); + const u32 gMonPalette_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/normal.gbapal.lz"); + const u32 gMonBackPic_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/back.4bpp.lz"); + const u32 gMonShinyPalette_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/shiny.gbapal.lz"); + const u8 gMonIcon_Abomasnow[] = INCBIN_U8("graphics/pokemon/abomasnow/icon.4bpp"); + const u8 gMonFootprint_Abomasnow[] = INCBIN_U8("graphics/pokemon/abomasnow/footprint.1bpp"); + + const u32 gMonFrontPic_AbomasnowF[] = INCBIN_U32("graphics/pokemon/abomasnow/anim_frontf.4bpp.lz"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_AbomasnowMega[] = INCBIN_U32("graphics/pokemon/abomasnow/mega/front.4bpp.lz"); + const u32 gMonPalette_AbomasnowMega[] = INCBIN_U32("graphics/pokemon/abomasnow/mega/normal.gbapal.lz"); + const u32 gMonBackPic_AbomasnowMega[] = INCBIN_U32("graphics/pokemon/abomasnow/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_AbomasnowMega[] = INCBIN_U32("graphics/pokemon/abomasnow/mega/shiny.gbapal.lz"); + const u8 gMonIcon_AbomasnowMega[] = INCBIN_U8("graphics/pokemon/abomasnow/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SNOVER + +#if P_FAMILY_ROTOM + const u32 gMonFrontPic_Rotom[] = INCBIN_U32("graphics/pokemon/rotom/anim_front.4bpp.lz"); + const u32 gMonPalette_Rotom[] = INCBIN_U32("graphics/pokemon/rotom/normal.gbapal.lz"); + const u32 gMonBackPic_Rotom[] = INCBIN_U32("graphics/pokemon/rotom/back.4bpp.lz"); + const u32 gMonShinyPalette_Rotom[] = INCBIN_U32("graphics/pokemon/rotom/shiny.gbapal.lz"); + const u8 gMonIcon_Rotom[] = INCBIN_U8("graphics/pokemon/rotom/icon.4bpp"); + const u8 gMonFootprint_Rotom[] = INCBIN_U8("graphics/pokemon/rotom/normal/footprint.1bpp"); + + const u32 gMonFrontPic_RotomHeat[] = INCBIN_U32("graphics/pokemon/rotom/heat/anim_front.4bpp.lz"); + const u32 gMonPalette_RotomHeat[] = INCBIN_U32("graphics/pokemon/rotom/heat/normal.gbapal.lz"); + const u32 gMonBackPic_RotomHeat[] = INCBIN_U32("graphics/pokemon/rotom/heat/back.4bpp.lz"); + const u32 gMonShinyPalette_RotomHeat[] = INCBIN_U32("graphics/pokemon/rotom/heat/shiny.gbapal.lz"); + const u8 gMonIcon_RotomHeat[] = INCBIN_U8("graphics/pokemon/rotom/heat/icon.4bpp"); + + const u32 gMonFrontPic_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash/anim_front.4bpp.lz"); + const u32 gMonPalette_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash/normal.gbapal.lz"); + const u32 gMonBackPic_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash/back.4bpp.lz"); + const u32 gMonShinyPalette_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash/shiny.gbapal.lz"); + const u8 gMonIcon_RotomWash[] = INCBIN_U8("graphics/pokemon/rotom/wash/icon.4bpp"); + + const u32 gMonFrontPic_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/anim_front.4bpp.lz"); + const u32 gMonPalette_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/normal.gbapal.lz"); + const u32 gMonBackPic_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/back.4bpp.lz"); + const u32 gMonShinyPalette_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/shiny.gbapal.lz"); + const u8 gMonIcon_RotomFrost[] = INCBIN_U8("graphics/pokemon/rotom/frost/icon.4bpp"); + + const u32 gMonFrontPic_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/anim_front.4bpp.lz"); + const u32 gMonPalette_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/normal.gbapal.lz"); + const u32 gMonBackPic_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/back.4bpp.lz"); + const u32 gMonShinyPalette_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/shiny.gbapal.lz"); + const u8 gMonIcon_RotomFan[] = INCBIN_U8("graphics/pokemon/rotom/fan/icon.4bpp"); + + const u32 gMonFrontPic_RotomMow[] = INCBIN_U32("graphics/pokemon/rotom/mow/anim_front.4bpp.lz"); + const u32 gMonPalette_RotomMow[] = INCBIN_U32("graphics/pokemon/rotom/mow/normal.gbapal.lz"); + const u32 gMonBackPic_RotomMow[] = INCBIN_U32("graphics/pokemon/rotom/mow/back.4bpp.lz"); + const u32 gMonShinyPalette_RotomMow[] = INCBIN_U32("graphics/pokemon/rotom/mow/shiny.gbapal.lz"); + const u8 gMonIcon_RotomMow[] = INCBIN_U8("graphics/pokemon/rotom/mow/icon.4bpp"); +#endif //P_FAMILY_ROTOM + +#if P_FAMILY_UXIE + const u32 gMonFrontPic_Uxie[] = INCBIN_U32("graphics/pokemon/uxie/anim_front.4bpp.lz"); + const u32 gMonPalette_Uxie[] = INCBIN_U32("graphics/pokemon/uxie/normal.gbapal.lz"); + const u32 gMonBackPic_Uxie[] = INCBIN_U32("graphics/pokemon/uxie/back.4bpp.lz"); + const u32 gMonShinyPalette_Uxie[] = INCBIN_U32("graphics/pokemon/uxie/shiny.gbapal.lz"); + const u8 gMonIcon_Uxie[] = INCBIN_U8("graphics/pokemon/uxie/icon.4bpp"); + const u8 gMonFootprint_Uxie[] = INCBIN_U8("graphics/pokemon/uxie/footprint.1bpp"); +#endif //P_FAMILY_UXIE + +#if P_FAMILY_MESPRIT + const u32 gMonFrontPic_Mesprit[] = INCBIN_U32("graphics/pokemon/mesprit/anim_front.4bpp.lz"); + const u32 gMonPalette_Mesprit[] = INCBIN_U32("graphics/pokemon/mesprit/normal.gbapal.lz"); + const u32 gMonBackPic_Mesprit[] = INCBIN_U32("graphics/pokemon/mesprit/back.4bpp.lz"); + const u32 gMonShinyPalette_Mesprit[] = INCBIN_U32("graphics/pokemon/mesprit/shiny.gbapal.lz"); + const u8 gMonIcon_Mesprit[] = INCBIN_U8("graphics/pokemon/mesprit/icon.4bpp"); + const u8 gMonFootprint_Mesprit[] = INCBIN_U8("graphics/pokemon/mesprit/footprint.1bpp"); +#endif //P_FAMILY_MESPRIT + +#if P_FAMILY_AZELF + const u32 gMonFrontPic_Azelf[] = INCBIN_U32("graphics/pokemon/azelf/anim_front.4bpp.lz"); + const u32 gMonPalette_Azelf[] = INCBIN_U32("graphics/pokemon/azelf/normal.gbapal.lz"); + const u32 gMonBackPic_Azelf[] = INCBIN_U32("graphics/pokemon/azelf/back.4bpp.lz"); + const u32 gMonShinyPalette_Azelf[] = INCBIN_U32("graphics/pokemon/azelf/shiny.gbapal.lz"); + const u8 gMonIcon_Azelf[] = INCBIN_U8("graphics/pokemon/azelf/icon.4bpp"); + const u8 gMonFootprint_Azelf[] = INCBIN_U8("graphics/pokemon/azelf/footprint.1bpp"); +#endif //P_FAMILY_AZELF + +#if P_FAMILY_DIALGA + const u32 gMonFrontPic_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/anim_front.4bpp.lz"); + const u32 gMonPalette_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/normal.gbapal.lz"); + const u32 gMonBackPic_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/back.4bpp.lz"); + const u32 gMonShinyPalette_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/shiny.gbapal.lz"); + const u8 gMonIcon_Dialga[] = INCBIN_U8("graphics/pokemon/dialga/icon.4bpp"); + const u8 gMonFootprint_Dialga[] = INCBIN_U8("graphics/pokemon/dialga/footprint.1bpp"); + + const u32 gMonFrontPic_DialgaOrigin[] = INCBIN_U32("graphics/pokemon/dialga/origin/front.4bpp.lz"); + const u32 gMonPalette_DialgaOrigin[] = INCBIN_U32("graphics/pokemon/dialga/origin/normal.gbapal.lz"); + const u32 gMonBackPic_DialgaOrigin[] = INCBIN_U32("graphics/pokemon/dialga/origin/back.4bpp.lz"); + const u32 gMonShinyPalette_DialgaOrigin[] = INCBIN_U32("graphics/pokemon/dialga/origin/shiny.gbapal.lz"); + const u8 gMonIcon_DialgaOrigin[] = INCBIN_U8("graphics/pokemon/dialga/origin/icon.4bpp"); +#endif //P_FAMILY_DIALGA + +#if P_FAMILY_PALKIA + const u32 gMonFrontPic_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/anim_front.4bpp.lz"); + const u32 gMonPalette_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/normal.gbapal.lz"); + const u32 gMonBackPic_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/back.4bpp.lz"); + const u32 gMonShinyPalette_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/shiny.gbapal.lz"); + const u8 gMonIcon_Palkia[] = INCBIN_U8("graphics/pokemon/palkia/icon.4bpp"); + const u8 gMonFootprint_Palkia[] = INCBIN_U8("graphics/pokemon/palkia/footprint.1bpp"); + + const u32 gMonFrontPic_PalkiaOrigin[] = INCBIN_U32("graphics/pokemon/palkia/origin/front.4bpp.lz"); + const u32 gMonPalette_PalkiaOrigin[] = INCBIN_U32("graphics/pokemon/palkia/origin/normal.gbapal.lz"); + const u32 gMonBackPic_PalkiaOrigin[] = INCBIN_U32("graphics/pokemon/palkia/origin/back.4bpp.lz"); + const u32 gMonShinyPalette_PalkiaOrigin[] = INCBIN_U32("graphics/pokemon/palkia/origin/shiny.gbapal.lz"); + const u8 gMonIcon_PalkiaOrigin[] = INCBIN_U8("graphics/pokemon/palkia/origin/icon.4bpp"); +#endif //P_FAMILY_PALKIA + +#if P_FAMILY_HEATRAN + const u32 gMonFrontPic_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/anim_front.4bpp.lz"); + const u32 gMonPalette_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/normal.gbapal.lz"); + const u32 gMonBackPic_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/back.4bpp.lz"); + const u32 gMonShinyPalette_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/shiny.gbapal.lz"); + const u8 gMonIcon_Heatran[] = INCBIN_U8("graphics/pokemon/heatran/icon.4bpp"); + const u8 gMonFootprint_Heatran[] = INCBIN_U8("graphics/pokemon/heatran/footprint.1bpp"); +#endif //P_FAMILY_HEATRAN + +#if P_FAMILY_REGIGIGAS + const u32 gMonFrontPic_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/anim_front.4bpp.lz"); + const u32 gMonPalette_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/normal.gbapal.lz"); + const u32 gMonBackPic_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/back.4bpp.lz"); + const u32 gMonShinyPalette_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/shiny.gbapal.lz"); + const u8 gMonIcon_Regigigas[] = INCBIN_U8("graphics/pokemon/regigigas/icon.4bpp"); + const u8 gMonFootprint_Regigigas[] = INCBIN_U8("graphics/pokemon/regigigas/footprint.1bpp"); +#endif //P_FAMILY_REGIGIGAS + +#if P_FAMILY_GIRATINA + const u32 gMonFrontPic_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/anim_front.4bpp.lz"); + const u32 gMonPalette_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/normal.gbapal.lz"); + const u32 gMonBackPic_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/back.4bpp.lz"); + const u32 gMonShinyPalette_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/shiny.gbapal.lz"); + const u8 gMonIcon_GiratinaAltered[] = INCBIN_U8("graphics/pokemon/giratina/icon.4bpp"); + const u8 gMonFootprint_Giratina[] = INCBIN_U8("graphics/pokemon/giratina/footprint.1bpp"); + + const u32 gMonFrontPic_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/anim_front.4bpp.lz"); + const u32 gMonPalette_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/normal.gbapal.lz"); + const u32 gMonBackPic_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/back.4bpp.lz"); + const u32 gMonShinyPalette_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/shiny.gbapal.lz"); + const u8 gMonIcon_GiratinaOrigin[] = INCBIN_U8("graphics/pokemon/giratina/origin/icon.4bpp"); +#endif //P_FAMILY_GIRATINA + +#if P_FAMILY_CRESSELIA + const u32 gMonFrontPic_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/anim_front.4bpp.lz"); + const u32 gMonPalette_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/normal.gbapal.lz"); + const u32 gMonBackPic_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/back.4bpp.lz"); + const u32 gMonShinyPalette_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/shiny.gbapal.lz"); + const u8 gMonIcon_Cresselia[] = INCBIN_U8("graphics/pokemon/cresselia/icon.4bpp"); + const u8 gMonFootprint_Cresselia[] = INCBIN_U8("graphics/pokemon/cresselia/footprint.1bpp"); +#endif //P_FAMILY_CRESSELIA + +#if P_FAMILY_MANAPHY + const u32 gMonFrontPic_Phione[] = INCBIN_U32("graphics/pokemon/phione/anim_front.4bpp.lz"); + const u32 gMonPalette_Phione[] = INCBIN_U32("graphics/pokemon/phione/normal.gbapal.lz"); + const u32 gMonBackPic_Phione[] = INCBIN_U32("graphics/pokemon/phione/back.4bpp.lz"); + const u32 gMonShinyPalette_Phione[] = INCBIN_U32("graphics/pokemon/phione/shiny.gbapal.lz"); + const u8 gMonIcon_Phione[] = INCBIN_U8("graphics/pokemon/phione/icon.4bpp"); + const u8 gMonFootprint_Phione[] = INCBIN_U8("graphics/pokemon/phione/footprint.1bpp"); + + const u32 gMonFrontPic_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/anim_front.4bpp.lz"); + const u32 gMonPalette_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/normal.gbapal.lz"); + const u32 gMonBackPic_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/back.4bpp.lz"); + const u32 gMonShinyPalette_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/shiny.gbapal.lz"); + const u8 gMonIcon_Manaphy[] = INCBIN_U8("graphics/pokemon/manaphy/icon.4bpp"); + const u8 gMonFootprint_Manaphy[] = INCBIN_U8("graphics/pokemon/manaphy/footprint.1bpp"); +#endif //P_FAMILY_MANAPHY + +#if P_FAMILY_DARKRAI + const u32 gMonFrontPic_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/anim_front.4bpp.lz"); + const u32 gMonPalette_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/normal.gbapal.lz"); + const u32 gMonBackPic_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/back.4bpp.lz"); + const u32 gMonShinyPalette_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/shiny.gbapal.lz"); + const u8 gMonIcon_Darkrai[] = INCBIN_U8("graphics/pokemon/darkrai/icon.4bpp"); + const u8 gMonFootprint_Darkrai[] = INCBIN_U8("graphics/pokemon/darkrai/footprint.1bpp"); +#endif //P_FAMILY_DARKRAI + +#if P_FAMILY_SHAYMIN + const u32 gMonFrontPic_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/anim_front.4bpp.lz"); + const u32 gMonPalette_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/normal.gbapal.lz"); + const u32 gMonBackPic_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/back.4bpp.lz"); + const u32 gMonShinyPalette_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/shiny.gbapal.lz"); + const u8 gMonIcon_ShayminLand[] = INCBIN_U8("graphics/pokemon/shaymin/icon.4bpp"); + const u8 gMonFootprint_Shaymin[] = INCBIN_U8("graphics/pokemon/shaymin/footprint.1bpp"); + + const u32 gMonFrontPic_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/anim_front.4bpp.lz"); + const u32 gMonPalette_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/normal.gbapal.lz"); + const u32 gMonBackPic_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/back.4bpp.lz"); + const u32 gMonShinyPalette_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/shiny.gbapal.lz"); + const u8 gMonIcon_ShayminSky[] = INCBIN_U8("graphics/pokemon/shaymin/sky/icon.4bpp"); +#endif //P_FAMILY_SHAYMIN + +#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"); + const u8 gMonFootprint_Arceus[] = INCBIN_U8("graphics/pokemon/arceus/footprint.1bpp"); + + 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 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"); + + const u32 gMonPalette_ArceusFlying[] = INCBIN_U32("graphics/pokemon/arceus/flying/normal.gbapal.lz"); + const u32 gMonShinyPalette_ArceusFlying[] = INCBIN_U32("graphics/pokemon/arceus/flying/shiny.gbapal.lz"); + + const u32 gMonPalette_ArceusPoison[] = INCBIN_U32("graphics/pokemon/arceus/poison/normal.gbapal.lz"); + const u32 gMonShinyPalette_ArceusPoison[] = INCBIN_U32("graphics/pokemon/arceus/poison/shiny.gbapal.lz"); + + const u32 gMonPalette_ArceusGround[] = INCBIN_U32("graphics/pokemon/arceus/ground/normal.gbapal.lz"); + const u32 gMonShinyPalette_ArceusGround[] = INCBIN_U32("graphics/pokemon/arceus/ground/shiny.gbapal.lz"); + + const u32 gMonPalette_ArceusRock[] = INCBIN_U32("graphics/pokemon/arceus/rock/normal.gbapal.lz"); + const u32 gMonShinyPalette_ArceusRock[] = INCBIN_U32("graphics/pokemon/arceus/rock/shiny.gbapal.lz"); + + const u32 gMonPalette_ArceusBug[] = INCBIN_U32("graphics/pokemon/arceus/bug/normal.gbapal.lz"); + const u32 gMonShinyPalette_ArceusBug[] = INCBIN_U32("graphics/pokemon/arceus/bug/shiny.gbapal.lz"); + + const u32 gMonPalette_ArceusGhost[] = INCBIN_U32("graphics/pokemon/arceus/ghost/normal.gbapal.lz"); + const u32 gMonShinyPalette_ArceusGhost[] = INCBIN_U32("graphics/pokemon/arceus/ghost/shiny.gbapal.lz"); + + const u32 gMonPalette_ArceusSteel[] = INCBIN_U32("graphics/pokemon/arceus/steel/normal.gbapal.lz"); + const u32 gMonShinyPalette_ArceusSteel[] = INCBIN_U32("graphics/pokemon/arceus/steel/shiny.gbapal.lz"); + + const u32 gMonPalette_ArceusFire[] = INCBIN_U32("graphics/pokemon/arceus/fire/normal.gbapal.lz"); + const u32 gMonShinyPalette_ArceusFire[] = INCBIN_U32("graphics/pokemon/arceus/fire/shiny.gbapal.lz"); + + const u32 gMonPalette_ArceusWater[] = INCBIN_U32("graphics/pokemon/arceus/water/normal.gbapal.lz"); + const u32 gMonShinyPalette_ArceusWater[] = INCBIN_U32("graphics/pokemon/arceus/water/shiny.gbapal.lz"); + + const u32 gMonPalette_ArceusGrass[] = INCBIN_U32("graphics/pokemon/arceus/grass/normal.gbapal.lz"); + const u32 gMonShinyPalette_ArceusGrass[] = INCBIN_U32("graphics/pokemon/arceus/grass/shiny.gbapal.lz"); + + const u32 gMonPalette_ArceusElectric[] = INCBIN_U32("graphics/pokemon/arceus/electric/normal.gbapal.lz"); + const u32 gMonShinyPalette_ArceusElectric[] = INCBIN_U32("graphics/pokemon/arceus/electric/shiny.gbapal.lz"); + + const u32 gMonPalette_ArceusPsychic[] = INCBIN_U32("graphics/pokemon/arceus/psychic/normal.gbapal.lz"); + const u32 gMonShinyPalette_ArceusPsychic[] = INCBIN_U32("graphics/pokemon/arceus/psychic/shiny.gbapal.lz"); + + const u32 gMonPalette_ArceusIce[] = INCBIN_U32("graphics/pokemon/arceus/ice/normal.gbapal.lz"); + const u32 gMonShinyPalette_ArceusIce[] = INCBIN_U32("graphics/pokemon/arceus/ice/shiny.gbapal.lz"); + + const u32 gMonPalette_ArceusDragon[] = INCBIN_U32("graphics/pokemon/arceus/dragon/normal.gbapal.lz"); + const u32 gMonShinyPalette_ArceusDragon[] = INCBIN_U32("graphics/pokemon/arceus/dragon/shiny.gbapal.lz"); + + const u32 gMonPalette_ArceusDark[] = INCBIN_U32("graphics/pokemon/arceus/dark/normal.gbapal.lz"); + const u32 gMonShinyPalette_ArceusDark[] = INCBIN_U32("graphics/pokemon/arceus/dark/shiny.gbapal.lz"); + + 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"); +#endif //P_FAMILY_ARCEUS + +#if P_FAMILY_VICTINI + const u32 gMonFrontPic_Victini[] = INCBIN_U32("graphics/pokemon/victini/anim_front.4bpp.lz"); + const u32 gMonPalette_Victini[] = INCBIN_U32("graphics/pokemon/victini/normal.gbapal.lz"); + const u32 gMonBackPic_Victini[] = INCBIN_U32("graphics/pokemon/victini/back.4bpp.lz"); + const u32 gMonShinyPalette_Victini[] = INCBIN_U32("graphics/pokemon/victini/shiny.gbapal.lz"); + const u8 gMonIcon_Victini[] = INCBIN_U8("graphics/pokemon/victini/icon.4bpp"); + const u8 gMonFootprint_Victini[] = INCBIN_U8("graphics/pokemon/victini/footprint.1bpp"); +#endif //P_FAMILY_VICTINI + +#if P_FAMILY_SNIVY + const u32 gMonFrontPic_Snivy[] = INCBIN_U32("graphics/pokemon/snivy/anim_front.4bpp.lz"); + const u32 gMonPalette_Snivy[] = INCBIN_U32("graphics/pokemon/snivy/normal.gbapal.lz"); + const u32 gMonBackPic_Snivy[] = INCBIN_U32("graphics/pokemon/snivy/back.4bpp.lz"); + const u32 gMonShinyPalette_Snivy[] = INCBIN_U32("graphics/pokemon/snivy/shiny.gbapal.lz"); + const u8 gMonIcon_Snivy[] = INCBIN_U8("graphics/pokemon/snivy/icon.4bpp"); + const u8 gMonFootprint_Snivy[] = INCBIN_U8("graphics/pokemon/snivy/footprint.1bpp"); + + const u32 gMonFrontPic_Servine[] = INCBIN_U32("graphics/pokemon/servine/anim_front.4bpp.lz"); + const u32 gMonPalette_Servine[] = INCBIN_U32("graphics/pokemon/servine/normal.gbapal.lz"); + const u32 gMonBackPic_Servine[] = INCBIN_U32("graphics/pokemon/servine/back.4bpp.lz"); + const u32 gMonShinyPalette_Servine[] = INCBIN_U32("graphics/pokemon/servine/shiny.gbapal.lz"); + const u8 gMonIcon_Servine[] = INCBIN_U8("graphics/pokemon/servine/icon.4bpp"); + const u8 gMonFootprint_Servine[] = INCBIN_U8("graphics/pokemon/servine/footprint.1bpp"); + + const u32 gMonFrontPic_Serperior[] = INCBIN_U32("graphics/pokemon/serperior/anim_front.4bpp.lz"); + const u32 gMonPalette_Serperior[] = INCBIN_U32("graphics/pokemon/serperior/normal.gbapal.lz"); + const u32 gMonBackPic_Serperior[] = INCBIN_U32("graphics/pokemon/serperior/back.4bpp.lz"); + const u32 gMonShinyPalette_Serperior[] = INCBIN_U32("graphics/pokemon/serperior/shiny.gbapal.lz"); + const u8 gMonIcon_Serperior[] = INCBIN_U8("graphics/pokemon/serperior/icon.4bpp"); + const u8 gMonFootprint_Serperior[] = INCBIN_U8("graphics/pokemon/serperior/footprint.1bpp"); +#endif //P_FAMILY_SNIVY + +#if P_FAMILY_TEPIG + const u32 gMonFrontPic_Tepig[] = INCBIN_U32("graphics/pokemon/tepig/anim_front.4bpp.lz"); + const u32 gMonPalette_Tepig[] = INCBIN_U32("graphics/pokemon/tepig/normal.gbapal.lz"); + const u32 gMonBackPic_Tepig[] = INCBIN_U32("graphics/pokemon/tepig/back.4bpp.lz"); + const u32 gMonShinyPalette_Tepig[] = INCBIN_U32("graphics/pokemon/tepig/shiny.gbapal.lz"); + const u8 gMonIcon_Tepig[] = INCBIN_U8("graphics/pokemon/tepig/icon.4bpp"); + const u8 gMonFootprint_Tepig[] = INCBIN_U8("graphics/pokemon/tepig/footprint.1bpp"); + + const u32 gMonFrontPic_Pignite[] = INCBIN_U32("graphics/pokemon/pignite/anim_front.4bpp.lz"); + const u32 gMonPalette_Pignite[] = INCBIN_U32("graphics/pokemon/pignite/normal.gbapal.lz"); + const u32 gMonBackPic_Pignite[] = INCBIN_U32("graphics/pokemon/pignite/back.4bpp.lz"); + const u32 gMonShinyPalette_Pignite[] = INCBIN_U32("graphics/pokemon/pignite/shiny.gbapal.lz"); + const u8 gMonIcon_Pignite[] = INCBIN_U8("graphics/pokemon/pignite/icon.4bpp"); + const u8 gMonFootprint_Pignite[] = INCBIN_U8("graphics/pokemon/pignite/footprint.1bpp"); + + const u32 gMonFrontPic_Emboar[] = INCBIN_U32("graphics/pokemon/emboar/anim_front.4bpp.lz"); + const u32 gMonPalette_Emboar[] = INCBIN_U32("graphics/pokemon/emboar/normal.gbapal.lz"); + const u32 gMonBackPic_Emboar[] = INCBIN_U32("graphics/pokemon/emboar/back.4bpp.lz"); + const u32 gMonShinyPalette_Emboar[] = INCBIN_U32("graphics/pokemon/emboar/shiny.gbapal.lz"); + const u8 gMonIcon_Emboar[] = INCBIN_U8("graphics/pokemon/emboar/icon.4bpp"); + const u8 gMonFootprint_Emboar[] = INCBIN_U8("graphics/pokemon/emboar/footprint.1bpp"); +#endif //P_FAMILY_TEPIG + +#if P_FAMILY_OSHAWOTT + const u32 gMonFrontPic_Oshawott[] = INCBIN_U32("graphics/pokemon/oshawott/anim_front.4bpp.lz"); + const u32 gMonPalette_Oshawott[] = INCBIN_U32("graphics/pokemon/oshawott/normal.gbapal.lz"); + const u32 gMonBackPic_Oshawott[] = INCBIN_U32("graphics/pokemon/oshawott/back.4bpp.lz"); + const u32 gMonShinyPalette_Oshawott[] = INCBIN_U32("graphics/pokemon/oshawott/shiny.gbapal.lz"); + const u8 gMonIcon_Oshawott[] = INCBIN_U8("graphics/pokemon/oshawott/icon.4bpp"); + const u8 gMonFootprint_Oshawott[] = INCBIN_U8("graphics/pokemon/oshawott/footprint.1bpp"); + + const u32 gMonFrontPic_Dewott[] = INCBIN_U32("graphics/pokemon/dewott/anim_front.4bpp.lz"); + const u32 gMonPalette_Dewott[] = INCBIN_U32("graphics/pokemon/dewott/normal.gbapal.lz"); + const u32 gMonBackPic_Dewott[] = INCBIN_U32("graphics/pokemon/dewott/back.4bpp.lz"); + const u32 gMonShinyPalette_Dewott[] = INCBIN_U32("graphics/pokemon/dewott/shiny.gbapal.lz"); + const u8 gMonIcon_Dewott[] = INCBIN_U8("graphics/pokemon/dewott/icon.4bpp"); + const u8 gMonFootprint_Dewott[] = INCBIN_U8("graphics/pokemon/dewott/footprint.1bpp"); + + const u32 gMonFrontPic_Samurott[] = INCBIN_U32("graphics/pokemon/samurott/anim_front.4bpp.lz"); + const u32 gMonPalette_Samurott[] = INCBIN_U32("graphics/pokemon/samurott/normal.gbapal.lz"); + const u32 gMonBackPic_Samurott[] = INCBIN_U32("graphics/pokemon/samurott/back.4bpp.lz"); + const u32 gMonShinyPalette_Samurott[] = INCBIN_U32("graphics/pokemon/samurott/shiny.gbapal.lz"); + const u8 gMonIcon_Samurott[] = INCBIN_U8("graphics/pokemon/samurott/icon.4bpp"); + const u8 gMonFootprint_Samurott[] = INCBIN_U8("graphics/pokemon/samurott/footprint.1bpp"); + +#if P_HISUIAN_FORMS + const u32 gMonFrontPic_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/front.4bpp.lz"); + const u32 gMonPalette_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/normal.gbapal.lz"); + const u32 gMonBackPic_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/back.4bpp.lz"); + const u32 gMonShinyPalette_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/shiny.gbapal.lz"); + const u8 gMonIcon_SamurottHisuian[] = INCBIN_U8("graphics/pokemon/samurott/hisuian/icon.4bpp"); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_OSHAWOTT + +#if P_FAMILY_PATRAT + const u32 gMonFrontPic_Patrat[] = INCBIN_U32("graphics/pokemon/patrat/anim_front.4bpp.lz"); + const u32 gMonPalette_Patrat[] = INCBIN_U32("graphics/pokemon/patrat/normal.gbapal.lz"); + const u32 gMonBackPic_Patrat[] = INCBIN_U32("graphics/pokemon/patrat/back.4bpp.lz"); + const u32 gMonShinyPalette_Patrat[] = INCBIN_U32("graphics/pokemon/patrat/shiny.gbapal.lz"); + const u8 gMonIcon_Patrat[] = INCBIN_U8("graphics/pokemon/patrat/icon.4bpp"); + const u8 gMonFootprint_Patrat[] = INCBIN_U8("graphics/pokemon/patrat/footprint.1bpp"); + + const u32 gMonFrontPic_Watchog[] = INCBIN_U32("graphics/pokemon/watchog/anim_front.4bpp.lz"); + const u32 gMonPalette_Watchog[] = INCBIN_U32("graphics/pokemon/watchog/normal.gbapal.lz"); + const u32 gMonBackPic_Watchog[] = INCBIN_U32("graphics/pokemon/watchog/back.4bpp.lz"); + const u32 gMonShinyPalette_Watchog[] = INCBIN_U32("graphics/pokemon/watchog/shiny.gbapal.lz"); + const u8 gMonIcon_Watchog[] = INCBIN_U8("graphics/pokemon/watchog/icon.4bpp"); + const u8 gMonFootprint_Watchog[] = INCBIN_U8("graphics/pokemon/watchog/footprint.1bpp"); +#endif //P_FAMILY_PATRAT + +#if P_FAMILY_LILLIPUP + const u32 gMonFrontPic_Lillipup[] = INCBIN_U32("graphics/pokemon/lillipup/anim_front.4bpp.lz"); + const u32 gMonPalette_Lillipup[] = INCBIN_U32("graphics/pokemon/lillipup/normal.gbapal.lz"); + const u32 gMonBackPic_Lillipup[] = INCBIN_U32("graphics/pokemon/lillipup/back.4bpp.lz"); + const u32 gMonShinyPalette_Lillipup[] = INCBIN_U32("graphics/pokemon/lillipup/shiny.gbapal.lz"); + const u8 gMonIcon_Lillipup[] = INCBIN_U8("graphics/pokemon/lillipup/icon.4bpp"); + const u8 gMonFootprint_Lillipup[] = INCBIN_U8("graphics/pokemon/lillipup/footprint.1bpp"); + + const u32 gMonFrontPic_Herdier[] = INCBIN_U32("graphics/pokemon/herdier/anim_front.4bpp.lz"); + const u32 gMonPalette_Herdier[] = INCBIN_U32("graphics/pokemon/herdier/normal.gbapal.lz"); + const u32 gMonBackPic_Herdier[] = INCBIN_U32("graphics/pokemon/herdier/back.4bpp.lz"); + const u32 gMonShinyPalette_Herdier[] = INCBIN_U32("graphics/pokemon/herdier/shiny.gbapal.lz"); + const u8 gMonIcon_Herdier[] = INCBIN_U8("graphics/pokemon/herdier/icon.4bpp"); + const u8 gMonFootprint_Herdier[] = INCBIN_U8("graphics/pokemon/herdier/footprint.1bpp"); + + const u32 gMonFrontPic_Stoutland[] = INCBIN_U32("graphics/pokemon/stoutland/anim_front.4bpp.lz"); + const u32 gMonPalette_Stoutland[] = INCBIN_U32("graphics/pokemon/stoutland/normal.gbapal.lz"); + const u32 gMonBackPic_Stoutland[] = INCBIN_U32("graphics/pokemon/stoutland/back.4bpp.lz"); + const u32 gMonShinyPalette_Stoutland[] = INCBIN_U32("graphics/pokemon/stoutland/shiny.gbapal.lz"); + const u8 gMonIcon_Stoutland[] = INCBIN_U8("graphics/pokemon/stoutland/icon.4bpp"); + const u8 gMonFootprint_Stoutland[] = INCBIN_U8("graphics/pokemon/stoutland/footprint.1bpp"); +#endif //P_FAMILY_LILLIPUP + +#if P_FAMILY_PURRLOIN + const u32 gMonFrontPic_Purrloin[] = INCBIN_U32("graphics/pokemon/purrloin/anim_front.4bpp.lz"); + const u32 gMonPalette_Purrloin[] = INCBIN_U32("graphics/pokemon/purrloin/normal.gbapal.lz"); + const u32 gMonBackPic_Purrloin[] = INCBIN_U32("graphics/pokemon/purrloin/back.4bpp.lz"); + const u32 gMonShinyPalette_Purrloin[] = INCBIN_U32("graphics/pokemon/purrloin/shiny.gbapal.lz"); + const u8 gMonIcon_Purrloin[] = INCBIN_U8("graphics/pokemon/purrloin/icon.4bpp"); + const u8 gMonFootprint_Purrloin[] = INCBIN_U8("graphics/pokemon/purrloin/footprint.1bpp"); + + const u32 gMonFrontPic_Liepard[] = INCBIN_U32("graphics/pokemon/liepard/anim_front.4bpp.lz"); + const u32 gMonPalette_Liepard[] = INCBIN_U32("graphics/pokemon/liepard/normal.gbapal.lz"); + const u32 gMonBackPic_Liepard[] = INCBIN_U32("graphics/pokemon/liepard/back.4bpp.lz"); + const u32 gMonShinyPalette_Liepard[] = INCBIN_U32("graphics/pokemon/liepard/shiny.gbapal.lz"); + const u8 gMonIcon_Liepard[] = INCBIN_U8("graphics/pokemon/liepard/icon.4bpp"); + const u8 gMonFootprint_Liepard[] = INCBIN_U8("graphics/pokemon/liepard/footprint.1bpp"); +#endif //P_FAMILY_PURRLOIN + +#if P_FAMILY_PANSAGE + const u32 gMonFrontPic_Pansage[] = INCBIN_U32("graphics/pokemon/pansage/anim_front.4bpp.lz"); + const u32 gMonPalette_Pansage[] = INCBIN_U32("graphics/pokemon/pansage/normal.gbapal.lz"); + const u32 gMonBackPic_Pansage[] = INCBIN_U32("graphics/pokemon/pansage/back.4bpp.lz"); + const u32 gMonShinyPalette_Pansage[] = INCBIN_U32("graphics/pokemon/pansage/shiny.gbapal.lz"); + const u8 gMonIcon_Pansage[] = INCBIN_U8("graphics/pokemon/pansage/icon.4bpp"); + const u8 gMonFootprint_Pansage[] = INCBIN_U8("graphics/pokemon/pansage/footprint.1bpp"); + + const u32 gMonFrontPic_Simisage[] = INCBIN_U32("graphics/pokemon/simisage/anim_front.4bpp.lz"); + const u32 gMonPalette_Simisage[] = INCBIN_U32("graphics/pokemon/simisage/normal.gbapal.lz"); + const u32 gMonBackPic_Simisage[] = INCBIN_U32("graphics/pokemon/simisage/back.4bpp.lz"); + const u32 gMonShinyPalette_Simisage[] = INCBIN_U32("graphics/pokemon/simisage/shiny.gbapal.lz"); + const u8 gMonIcon_Simisage[] = INCBIN_U8("graphics/pokemon/simisage/icon.4bpp"); + const u8 gMonFootprint_Simisage[] = INCBIN_U8("graphics/pokemon/simisage/footprint.1bpp"); +#endif //P_FAMILY_PANSAGE + +#if P_FAMILY_PANSEAR + const u32 gMonFrontPic_Pansear[] = INCBIN_U32("graphics/pokemon/pansear/anim_front.4bpp.lz"); + const u32 gMonPalette_Pansear[] = INCBIN_U32("graphics/pokemon/pansear/normal.gbapal.lz"); + const u32 gMonBackPic_Pansear[] = INCBIN_U32("graphics/pokemon/pansear/back.4bpp.lz"); + const u32 gMonShinyPalette_Pansear[] = INCBIN_U32("graphics/pokemon/pansear/shiny.gbapal.lz"); + const u8 gMonIcon_Pansear[] = INCBIN_U8("graphics/pokemon/pansear/icon.4bpp"); + const u8 gMonFootprint_Pansear[] = INCBIN_U8("graphics/pokemon/pansear/footprint.1bpp"); + + const u32 gMonFrontPic_Simisear[] = INCBIN_U32("graphics/pokemon/simisear/anim_front.4bpp.lz"); + const u32 gMonPalette_Simisear[] = INCBIN_U32("graphics/pokemon/simisear/normal.gbapal.lz"); + const u32 gMonBackPic_Simisear[] = INCBIN_U32("graphics/pokemon/simisear/back.4bpp.lz"); + const u32 gMonShinyPalette_Simisear[] = INCBIN_U32("graphics/pokemon/simisear/shiny.gbapal.lz"); + const u8 gMonIcon_Simisear[] = INCBIN_U8("graphics/pokemon/simisear/icon.4bpp"); + const u8 gMonFootprint_Simisear[] = INCBIN_U8("graphics/pokemon/simisear/footprint.1bpp"); +#endif //P_FAMILY_PANSEAR + +#if P_FAMILY_PANPOUR + const u32 gMonFrontPic_Panpour[] = INCBIN_U32("graphics/pokemon/panpour/anim_front.4bpp.lz"); + const u32 gMonPalette_Panpour[] = INCBIN_U32("graphics/pokemon/panpour/normal.gbapal.lz"); + const u32 gMonBackPic_Panpour[] = INCBIN_U32("graphics/pokemon/panpour/back.4bpp.lz"); + const u32 gMonShinyPalette_Panpour[] = INCBIN_U32("graphics/pokemon/panpour/shiny.gbapal.lz"); + const u8 gMonIcon_Panpour[] = INCBIN_U8("graphics/pokemon/panpour/icon.4bpp"); + const u8 gMonFootprint_Panpour[] = INCBIN_U8("graphics/pokemon/panpour/footprint.1bpp"); + + const u32 gMonFrontPic_Simipour[] = INCBIN_U32("graphics/pokemon/simipour/anim_front.4bpp.lz"); + const u32 gMonPalette_Simipour[] = INCBIN_U32("graphics/pokemon/simipour/normal.gbapal.lz"); + const u32 gMonBackPic_Simipour[] = INCBIN_U32("graphics/pokemon/simipour/back.4bpp.lz"); + const u32 gMonShinyPalette_Simipour[] = INCBIN_U32("graphics/pokemon/simipour/shiny.gbapal.lz"); + const u8 gMonIcon_Simipour[] = INCBIN_U8("graphics/pokemon/simipour/icon.4bpp"); + const u8 gMonFootprint_Simipour[] = INCBIN_U8("graphics/pokemon/simipour/footprint.1bpp"); +#endif //P_FAMILY_PANPOUR + +#if P_FAMILY_MUNNA + const u32 gMonFrontPic_Munna[] = INCBIN_U32("graphics/pokemon/munna/anim_front.4bpp.lz"); + const u32 gMonPalette_Munna[] = INCBIN_U32("graphics/pokemon/munna/normal.gbapal.lz"); + const u32 gMonBackPic_Munna[] = INCBIN_U32("graphics/pokemon/munna/back.4bpp.lz"); + const u32 gMonShinyPalette_Munna[] = INCBIN_U32("graphics/pokemon/munna/shiny.gbapal.lz"); + const u8 gMonIcon_Munna[] = INCBIN_U8("graphics/pokemon/munna/icon.4bpp"); + const u8 gMonFootprint_Munna[] = INCBIN_U8("graphics/pokemon/munna/footprint.1bpp"); + + const u32 gMonFrontPic_Musharna[] = INCBIN_U32("graphics/pokemon/musharna/anim_front.4bpp.lz"); + const u32 gMonPalette_Musharna[] = INCBIN_U32("graphics/pokemon/musharna/normal.gbapal.lz"); + const u32 gMonBackPic_Musharna[] = INCBIN_U32("graphics/pokemon/musharna/back.4bpp.lz"); + const u32 gMonShinyPalette_Musharna[] = INCBIN_U32("graphics/pokemon/musharna/shiny.gbapal.lz"); + const u8 gMonIcon_Musharna[] = INCBIN_U8("graphics/pokemon/musharna/icon.4bpp"); + const u8 gMonFootprint_Musharna[] = INCBIN_U8("graphics/pokemon/musharna/footprint.1bpp"); +#endif //P_FAMILY_MUNNA + +#if P_FAMILY_PIDOVE + const u32 gMonFrontPic_Pidove[] = INCBIN_U32("graphics/pokemon/pidove/anim_front.4bpp.lz"); + const u32 gMonPalette_Pidove[] = INCBIN_U32("graphics/pokemon/pidove/normal.gbapal.lz"); + const u32 gMonBackPic_Pidove[] = INCBIN_U32("graphics/pokemon/pidove/back.4bpp.lz"); + const u32 gMonShinyPalette_Pidove[] = INCBIN_U32("graphics/pokemon/pidove/shiny.gbapal.lz"); + const u8 gMonIcon_Pidove[] = INCBIN_U8("graphics/pokemon/pidove/icon.4bpp"); + const u8 gMonFootprint_Pidove[] = INCBIN_U8("graphics/pokemon/pidove/footprint.1bpp"); + + const u32 gMonFrontPic_Tranquill[] = INCBIN_U32("graphics/pokemon/tranquill/anim_front.4bpp.lz"); + const u32 gMonPalette_Tranquill[] = INCBIN_U32("graphics/pokemon/tranquill/normal.gbapal.lz"); + const u32 gMonBackPic_Tranquill[] = INCBIN_U32("graphics/pokemon/tranquill/back.4bpp.lz"); + const u32 gMonShinyPalette_Tranquill[] = INCBIN_U32("graphics/pokemon/tranquill/shiny.gbapal.lz"); + const u8 gMonIcon_Tranquill[] = INCBIN_U8("graphics/pokemon/tranquill/icon.4bpp"); + const u8 gMonFootprint_Tranquill[] = INCBIN_U8("graphics/pokemon/tranquill/footprint.1bpp"); + + const u32 gMonFrontPic_Unfezant[] = INCBIN_U32("graphics/pokemon/unfezant/anim_front.4bpp.lz"); + const u32 gMonPalette_Unfezant[] = INCBIN_U32("graphics/pokemon/unfezant/normal.gbapal.lz"); + const u32 gMonBackPic_Unfezant[] = INCBIN_U32("graphics/pokemon/unfezant/back.4bpp.lz"); + const u32 gMonShinyPalette_Unfezant[] = INCBIN_U32("graphics/pokemon/unfezant/shiny.gbapal.lz"); + const u8 gMonIcon_Unfezant[] = INCBIN_U8("graphics/pokemon/unfezant/icon.4bpp"); + const u8 gMonFootprint_Unfezant[] = INCBIN_U8("graphics/pokemon/unfezant/footprint.1bpp"); + + const u32 gMonFrontPic_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant/anim_frontf.4bpp.lz"); + const u32 gMonPalette_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant/normalf.gbapal.lz"); + const u32 gMonBackPic_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant/backf.4bpp.lz"); + const u32 gMonShinyPalette_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant/shinyf.gbapal.lz"); + const u8 gMonIcon_UnfezantF[] = INCBIN_U8("graphics/pokemon/unfezant/iconf.4bpp"); +#endif //P_FAMILY_PIDOVE + +#if P_FAMILY_BLITZLE + const u32 gMonFrontPic_Blitzle[] = INCBIN_U32("graphics/pokemon/blitzle/anim_front.4bpp.lz"); + const u32 gMonPalette_Blitzle[] = INCBIN_U32("graphics/pokemon/blitzle/normal.gbapal.lz"); + const u32 gMonBackPic_Blitzle[] = INCBIN_U32("graphics/pokemon/blitzle/back.4bpp.lz"); + const u32 gMonShinyPalette_Blitzle[] = INCBIN_U32("graphics/pokemon/blitzle/shiny.gbapal.lz"); + const u8 gMonIcon_Blitzle[] = INCBIN_U8("graphics/pokemon/blitzle/icon.4bpp"); + const u8 gMonFootprint_Blitzle[] = INCBIN_U8("graphics/pokemon/blitzle/footprint.1bpp"); + + const u32 gMonFrontPic_Zebstrika[] = INCBIN_U32("graphics/pokemon/zebstrika/anim_front.4bpp.lz"); + const u32 gMonPalette_Zebstrika[] = INCBIN_U32("graphics/pokemon/zebstrika/normal.gbapal.lz"); + const u32 gMonBackPic_Zebstrika[] = INCBIN_U32("graphics/pokemon/zebstrika/back.4bpp.lz"); + const u32 gMonShinyPalette_Zebstrika[] = INCBIN_U32("graphics/pokemon/zebstrika/shiny.gbapal.lz"); + const u8 gMonIcon_Zebstrika[] = INCBIN_U8("graphics/pokemon/zebstrika/icon.4bpp"); + const u8 gMonFootprint_Zebstrika[] = INCBIN_U8("graphics/pokemon/zebstrika/footprint.1bpp"); +#endif //P_FAMILY_BLITZLE + +#if P_FAMILY_ROGGENROLA + const u32 gMonFrontPic_Roggenrola[] = INCBIN_U32("graphics/pokemon/roggenrola/anim_front.4bpp.lz"); + const u32 gMonPalette_Roggenrola[] = INCBIN_U32("graphics/pokemon/roggenrola/normal.gbapal.lz"); + const u32 gMonBackPic_Roggenrola[] = INCBIN_U32("graphics/pokemon/roggenrola/back.4bpp.lz"); + const u32 gMonShinyPalette_Roggenrola[] = INCBIN_U32("graphics/pokemon/roggenrola/shiny.gbapal.lz"); + const u8 gMonIcon_Roggenrola[] = INCBIN_U8("graphics/pokemon/roggenrola/icon.4bpp"); + const u8 gMonFootprint_Roggenrola[] = INCBIN_U8("graphics/pokemon/roggenrola/footprint.1bpp"); + + const u32 gMonFrontPic_Boldore[] = INCBIN_U32("graphics/pokemon/boldore/anim_front.4bpp.lz"); + const u32 gMonPalette_Boldore[] = INCBIN_U32("graphics/pokemon/boldore/normal.gbapal.lz"); + const u32 gMonBackPic_Boldore[] = INCBIN_U32("graphics/pokemon/boldore/back.4bpp.lz"); + const u32 gMonShinyPalette_Boldore[] = INCBIN_U32("graphics/pokemon/boldore/shiny.gbapal.lz"); + const u8 gMonIcon_Boldore[] = INCBIN_U8("graphics/pokemon/boldore/icon.4bpp"); + const u8 gMonFootprint_Boldore[] = INCBIN_U8("graphics/pokemon/boldore/footprint.1bpp"); + + const u32 gMonFrontPic_Gigalith[] = INCBIN_U32("graphics/pokemon/gigalith/anim_front.4bpp.lz"); + const u32 gMonPalette_Gigalith[] = INCBIN_U32("graphics/pokemon/gigalith/normal.gbapal.lz"); + const u32 gMonBackPic_Gigalith[] = INCBIN_U32("graphics/pokemon/gigalith/back.4bpp.lz"); + const u32 gMonShinyPalette_Gigalith[] = INCBIN_U32("graphics/pokemon/gigalith/shiny.gbapal.lz"); + const u8 gMonIcon_Gigalith[] = INCBIN_U8("graphics/pokemon/gigalith/icon.4bpp"); + const u8 gMonFootprint_Gigalith[] = INCBIN_U8("graphics/pokemon/gigalith/footprint.1bpp"); +#endif //P_FAMILY_ROGGENROLA + +#if P_FAMILY_WOOBAT + const u32 gMonFrontPic_Woobat[] = INCBIN_U32("graphics/pokemon/woobat/anim_front.4bpp.lz"); + const u32 gMonPalette_Woobat[] = INCBIN_U32("graphics/pokemon/woobat/normal.gbapal.lz"); + const u32 gMonBackPic_Woobat[] = INCBIN_U32("graphics/pokemon/woobat/back.4bpp.lz"); + const u32 gMonShinyPalette_Woobat[] = INCBIN_U32("graphics/pokemon/woobat/shiny.gbapal.lz"); + const u8 gMonIcon_Woobat[] = INCBIN_U8("graphics/pokemon/woobat/icon.4bpp"); + const u8 gMonFootprint_Woobat[] = INCBIN_U8("graphics/pokemon/woobat/footprint.1bpp"); + + const u32 gMonFrontPic_Swoobat[] = INCBIN_U32("graphics/pokemon/swoobat/anim_front.4bpp.lz"); + const u32 gMonPalette_Swoobat[] = INCBIN_U32("graphics/pokemon/swoobat/normal.gbapal.lz"); + const u32 gMonBackPic_Swoobat[] = INCBIN_U32("graphics/pokemon/swoobat/back.4bpp.lz"); + const u32 gMonShinyPalette_Swoobat[] = INCBIN_U32("graphics/pokemon/swoobat/shiny.gbapal.lz"); + const u8 gMonIcon_Swoobat[] = INCBIN_U8("graphics/pokemon/swoobat/icon.4bpp"); + const u8 gMonFootprint_Swoobat[] = INCBIN_U8("graphics/pokemon/swoobat/footprint.1bpp"); +#endif //P_FAMILY_WOOBAT + +#if P_FAMILY_DRILBUR + const u32 gMonFrontPic_Drilbur[] = INCBIN_U32("graphics/pokemon/drilbur/anim_front.4bpp.lz"); + const u32 gMonPalette_Drilbur[] = INCBIN_U32("graphics/pokemon/drilbur/normal.gbapal.lz"); + const u32 gMonBackPic_Drilbur[] = INCBIN_U32("graphics/pokemon/drilbur/back.4bpp.lz"); + const u32 gMonShinyPalette_Drilbur[] = INCBIN_U32("graphics/pokemon/drilbur/shiny.gbapal.lz"); + const u8 gMonIcon_Drilbur[] = INCBIN_U8("graphics/pokemon/drilbur/icon.4bpp"); + const u8 gMonFootprint_Drilbur[] = INCBIN_U8("graphics/pokemon/drilbur/footprint.1bpp"); + + const u32 gMonFrontPic_Excadrill[] = INCBIN_U32("graphics/pokemon/excadrill/anim_front.4bpp.lz"); + const u32 gMonPalette_Excadrill[] = INCBIN_U32("graphics/pokemon/excadrill/normal.gbapal.lz"); + const u32 gMonBackPic_Excadrill[] = INCBIN_U32("graphics/pokemon/excadrill/back.4bpp.lz"); + const u32 gMonShinyPalette_Excadrill[] = INCBIN_U32("graphics/pokemon/excadrill/shiny.gbapal.lz"); + const u8 gMonIcon_Excadrill[] = INCBIN_U8("graphics/pokemon/excadrill/icon.4bpp"); + const u8 gMonFootprint_Excadrill[] = INCBIN_U8("graphics/pokemon/excadrill/footprint.1bpp"); +#endif //P_FAMILY_DRILBUR + +#if P_FAMILY_AUDINO + const u32 gMonFrontPic_Audino[] = INCBIN_U32("graphics/pokemon/audino/anim_front.4bpp.lz"); + const u32 gMonPalette_Audino[] = INCBIN_U32("graphics/pokemon/audino/normal.gbapal.lz"); + const u32 gMonBackPic_Audino[] = INCBIN_U32("graphics/pokemon/audino/back.4bpp.lz"); + const u32 gMonShinyPalette_Audino[] = INCBIN_U32("graphics/pokemon/audino/shiny.gbapal.lz"); + const u8 gMonIcon_Audino[] = INCBIN_U8("graphics/pokemon/audino/icon.4bpp"); + const u8 gMonFootprint_Audino[] = INCBIN_U8("graphics/pokemon/audino/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_AudinoMega[] = INCBIN_U32("graphics/pokemon/audino/mega/front.4bpp.lz"); + const u32 gMonPalette_AudinoMega[] = INCBIN_U32("graphics/pokemon/audino/mega/normal.gbapal.lz"); + const u32 gMonBackPic_AudinoMega[] = INCBIN_U32("graphics/pokemon/audino/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_AudinoMega[] = INCBIN_U32("graphics/pokemon/audino/mega/shiny.gbapal.lz"); + const u8 gMonIcon_AudinoMega[] = INCBIN_U8("graphics/pokemon/audino/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_AUDINO + +#if P_FAMILY_TIMBURR + const u32 gMonFrontPic_Timburr[] = INCBIN_U32("graphics/pokemon/timburr/anim_front.4bpp.lz"); + const u32 gMonPalette_Timburr[] = INCBIN_U32("graphics/pokemon/timburr/normal.gbapal.lz"); + const u32 gMonBackPic_Timburr[] = INCBIN_U32("graphics/pokemon/timburr/back.4bpp.lz"); + const u32 gMonShinyPalette_Timburr[] = INCBIN_U32("graphics/pokemon/timburr/shiny.gbapal.lz"); + const u8 gMonIcon_Timburr[] = INCBIN_U8("graphics/pokemon/timburr/icon.4bpp"); + const u8 gMonFootprint_Timburr[] = INCBIN_U8("graphics/pokemon/timburr/footprint.1bpp"); + + const u32 gMonFrontPic_Gurdurr[] = INCBIN_U32("graphics/pokemon/gurdurr/anim_front.4bpp.lz"); + const u32 gMonPalette_Gurdurr[] = INCBIN_U32("graphics/pokemon/gurdurr/normal.gbapal.lz"); + const u32 gMonBackPic_Gurdurr[] = INCBIN_U32("graphics/pokemon/gurdurr/back.4bpp.lz"); + const u32 gMonShinyPalette_Gurdurr[] = INCBIN_U32("graphics/pokemon/gurdurr/shiny.gbapal.lz"); + const u8 gMonIcon_Gurdurr[] = INCBIN_U8("graphics/pokemon/gurdurr/icon.4bpp"); + const u8 gMonFootprint_Gurdurr[] = INCBIN_U8("graphics/pokemon/gurdurr/footprint.1bpp"); + + const u32 gMonFrontPic_Conkeldurr[] = INCBIN_U32("graphics/pokemon/conkeldurr/anim_front.4bpp.lz"); + const u32 gMonPalette_Conkeldurr[] = INCBIN_U32("graphics/pokemon/conkeldurr/normal.gbapal.lz"); + const u32 gMonBackPic_Conkeldurr[] = INCBIN_U32("graphics/pokemon/conkeldurr/back.4bpp.lz"); + const u32 gMonShinyPalette_Conkeldurr[] = INCBIN_U32("graphics/pokemon/conkeldurr/shiny.gbapal.lz"); + const u8 gMonIcon_Conkeldurr[] = INCBIN_U8("graphics/pokemon/conkeldurr/icon.4bpp"); + const u8 gMonFootprint_Conkeldurr[] = INCBIN_U8("graphics/pokemon/conkeldurr/footprint.1bpp"); +#endif //P_FAMILY_TIMBURR + +#if P_FAMILY_TYMPOLE + const u32 gMonFrontPic_Tympole[] = INCBIN_U32("graphics/pokemon/tympole/anim_front.4bpp.lz"); + const u32 gMonPalette_Tympole[] = INCBIN_U32("graphics/pokemon/tympole/normal.gbapal.lz"); + const u32 gMonBackPic_Tympole[] = INCBIN_U32("graphics/pokemon/tympole/back.4bpp.lz"); + const u32 gMonShinyPalette_Tympole[] = INCBIN_U32("graphics/pokemon/tympole/shiny.gbapal.lz"); + const u8 gMonIcon_Tympole[] = INCBIN_U8("graphics/pokemon/tympole/icon.4bpp"); + const u8 gMonFootprint_Tympole[] = INCBIN_U8("graphics/pokemon/tympole/footprint.1bpp"); + + const u32 gMonFrontPic_Palpitoad[] = INCBIN_U32("graphics/pokemon/palpitoad/anim_front.4bpp.lz"); + const u32 gMonPalette_Palpitoad[] = INCBIN_U32("graphics/pokemon/palpitoad/normal.gbapal.lz"); + const u32 gMonBackPic_Palpitoad[] = INCBIN_U32("graphics/pokemon/palpitoad/back.4bpp.lz"); + const u32 gMonShinyPalette_Palpitoad[] = INCBIN_U32("graphics/pokemon/palpitoad/shiny.gbapal.lz"); + const u8 gMonIcon_Palpitoad[] = INCBIN_U8("graphics/pokemon/palpitoad/icon.4bpp"); + const u8 gMonFootprint_Palpitoad[] = INCBIN_U8("graphics/pokemon/palpitoad/footprint.1bpp"); + + const u32 gMonFrontPic_Seismitoad[] = INCBIN_U32("graphics/pokemon/seismitoad/anim_front.4bpp.lz"); + const u32 gMonPalette_Seismitoad[] = INCBIN_U32("graphics/pokemon/seismitoad/normal.gbapal.lz"); + const u32 gMonBackPic_Seismitoad[] = INCBIN_U32("graphics/pokemon/seismitoad/back.4bpp.lz"); + const u32 gMonShinyPalette_Seismitoad[] = INCBIN_U32("graphics/pokemon/seismitoad/shiny.gbapal.lz"); + const u8 gMonIcon_Seismitoad[] = INCBIN_U8("graphics/pokemon/seismitoad/icon.4bpp"); + const u8 gMonFootprint_Seismitoad[] = INCBIN_U8("graphics/pokemon/seismitoad/footprint.1bpp"); +#endif //P_FAMILY_TYMPOLE + +#if P_FAMILY_THROH + const u32 gMonFrontPic_Throh[] = INCBIN_U32("graphics/pokemon/throh/anim_front.4bpp.lz"); + const u32 gMonPalette_Throh[] = INCBIN_U32("graphics/pokemon/throh/normal.gbapal.lz"); + const u32 gMonBackPic_Throh[] = INCBIN_U32("graphics/pokemon/throh/back.4bpp.lz"); + const u32 gMonShinyPalette_Throh[] = INCBIN_U32("graphics/pokemon/throh/shiny.gbapal.lz"); + const u8 gMonIcon_Throh[] = INCBIN_U8("graphics/pokemon/throh/icon.4bpp"); + const u8 gMonFootprint_Throh[] = INCBIN_U8("graphics/pokemon/throh/footprint.1bpp"); +#endif //P_FAMILY_THROH + +#if P_FAMILY_SAWK + const u32 gMonFrontPic_Sawk[] = INCBIN_U32("graphics/pokemon/sawk/anim_front.4bpp.lz"); + const u32 gMonPalette_Sawk[] = INCBIN_U32("graphics/pokemon/sawk/normal.gbapal.lz"); + const u32 gMonBackPic_Sawk[] = INCBIN_U32("graphics/pokemon/sawk/back.4bpp.lz"); + const u32 gMonShinyPalette_Sawk[] = INCBIN_U32("graphics/pokemon/sawk/shiny.gbapal.lz"); + const u8 gMonIcon_Sawk[] = INCBIN_U8("graphics/pokemon/sawk/icon.4bpp"); + const u8 gMonFootprint_Sawk[] = INCBIN_U8("graphics/pokemon/sawk/footprint.1bpp"); +#endif //P_FAMILY_SAWK + +#if P_FAMILY_SEWADDLE + const u32 gMonFrontPic_Sewaddle[] = INCBIN_U32("graphics/pokemon/sewaddle/anim_front.4bpp.lz"); + const u32 gMonPalette_Sewaddle[] = INCBIN_U32("graphics/pokemon/sewaddle/normal.gbapal.lz"); + const u32 gMonBackPic_Sewaddle[] = INCBIN_U32("graphics/pokemon/sewaddle/back.4bpp.lz"); + const u32 gMonShinyPalette_Sewaddle[] = INCBIN_U32("graphics/pokemon/sewaddle/shiny.gbapal.lz"); + const u8 gMonIcon_Sewaddle[] = INCBIN_U8("graphics/pokemon/sewaddle/icon.4bpp"); + const u8 gMonFootprint_Sewaddle[] = INCBIN_U8("graphics/pokemon/sewaddle/footprint.1bpp"); + + const u32 gMonFrontPic_Swadloon[] = INCBIN_U32("graphics/pokemon/swadloon/anim_front.4bpp.lz"); + const u32 gMonPalette_Swadloon[] = INCBIN_U32("graphics/pokemon/swadloon/normal.gbapal.lz"); + const u32 gMonBackPic_Swadloon[] = INCBIN_U32("graphics/pokemon/swadloon/back.4bpp.lz"); + const u32 gMonShinyPalette_Swadloon[] = INCBIN_U32("graphics/pokemon/swadloon/shiny.gbapal.lz"); + const u8 gMonIcon_Swadloon[] = INCBIN_U8("graphics/pokemon/swadloon/icon.4bpp"); + const u8 gMonFootprint_Swadloon[] = INCBIN_U8("graphics/pokemon/swadloon/footprint.1bpp"); + + const u32 gMonFrontPic_Leavanny[] = INCBIN_U32("graphics/pokemon/leavanny/anim_front.4bpp.lz"); + const u32 gMonPalette_Leavanny[] = INCBIN_U32("graphics/pokemon/leavanny/normal.gbapal.lz"); + const u32 gMonBackPic_Leavanny[] = INCBIN_U32("graphics/pokemon/leavanny/back.4bpp.lz"); + const u32 gMonShinyPalette_Leavanny[] = INCBIN_U32("graphics/pokemon/leavanny/shiny.gbapal.lz"); + const u8 gMonIcon_Leavanny[] = INCBIN_U8("graphics/pokemon/leavanny/icon.4bpp"); + const u8 gMonFootprint_Leavanny[] = INCBIN_U8("graphics/pokemon/leavanny/footprint.1bpp"); +#endif //P_FAMILY_SEWADDLE + +#if P_FAMILY_VENIPEDE + const u32 gMonFrontPic_Venipede[] = INCBIN_U32("graphics/pokemon/venipede/anim_front.4bpp.lz"); + const u32 gMonPalette_Venipede[] = INCBIN_U32("graphics/pokemon/venipede/normal.gbapal.lz"); + const u32 gMonBackPic_Venipede[] = INCBIN_U32("graphics/pokemon/venipede/back.4bpp.lz"); + const u32 gMonShinyPalette_Venipede[] = INCBIN_U32("graphics/pokemon/venipede/shiny.gbapal.lz"); + const u8 gMonIcon_Venipede[] = INCBIN_U8("graphics/pokemon/venipede/icon.4bpp"); + const u8 gMonFootprint_Venipede[] = INCBIN_U8("graphics/pokemon/venipede/footprint.1bpp"); + + const u32 gMonFrontPic_Whirlipede[] = INCBIN_U32("graphics/pokemon/whirlipede/anim_front.4bpp.lz"); + const u32 gMonPalette_Whirlipede[] = INCBIN_U32("graphics/pokemon/whirlipede/normal.gbapal.lz"); + const u32 gMonBackPic_Whirlipede[] = INCBIN_U32("graphics/pokemon/whirlipede/back.4bpp.lz"); + const u32 gMonShinyPalette_Whirlipede[] = INCBIN_U32("graphics/pokemon/whirlipede/shiny.gbapal.lz"); + const u8 gMonIcon_Whirlipede[] = INCBIN_U8("graphics/pokemon/whirlipede/icon.4bpp"); + const u8 gMonFootprint_Whirlipede[] = INCBIN_U8("graphics/pokemon/whirlipede/footprint.1bpp"); + + const u32 gMonFrontPic_Scolipede[] = INCBIN_U32("graphics/pokemon/scolipede/anim_front.4bpp.lz"); + const u32 gMonPalette_Scolipede[] = INCBIN_U32("graphics/pokemon/scolipede/normal.gbapal.lz"); + const u32 gMonBackPic_Scolipede[] = INCBIN_U32("graphics/pokemon/scolipede/back.4bpp.lz"); + const u32 gMonShinyPalette_Scolipede[] = INCBIN_U32("graphics/pokemon/scolipede/shiny.gbapal.lz"); + const u8 gMonIcon_Scolipede[] = INCBIN_U8("graphics/pokemon/scolipede/icon.4bpp"); + const u8 gMonFootprint_Scolipede[] = INCBIN_U8("graphics/pokemon/scolipede/footprint.1bpp"); +#endif //P_FAMILY_VENIPEDE + +#if P_FAMILY_COTTONEE + const u32 gMonFrontPic_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/anim_front.4bpp.lz"); + const u32 gMonPalette_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/normal.gbapal.lz"); + const u32 gMonBackPic_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/back.4bpp.lz"); + const u32 gMonShinyPalette_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/shiny.gbapal.lz"); + const u8 gMonIcon_Cottonee[] = INCBIN_U8("graphics/pokemon/cottonee/icon.4bpp"); + const u8 gMonFootprint_Cottonee[] = INCBIN_U8("graphics/pokemon/cottonee/footprint.1bpp"); + + const u32 gMonFrontPic_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/anim_front.4bpp.lz"); + const u32 gMonPalette_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/normal.gbapal.lz"); + const u32 gMonBackPic_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/back.4bpp.lz"); + const u32 gMonShinyPalette_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/shiny.gbapal.lz"); + const u8 gMonIcon_Whimsicott[] = INCBIN_U8("graphics/pokemon/whimsicott/icon.4bpp"); + const u8 gMonFootprint_Whimsicott[] = INCBIN_U8("graphics/pokemon/whimsicott/footprint.1bpp"); +#endif //P_FAMILY_COTTONEE + +#if P_FAMILY_PETILIL + const u32 gMonFrontPic_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/anim_front.4bpp.lz"); + const u32 gMonPalette_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/normal.gbapal.lz"); + const u32 gMonBackPic_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/back.4bpp.lz"); + const u32 gMonShinyPalette_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/shiny.gbapal.lz"); + const u8 gMonIcon_Petilil[] = INCBIN_U8("graphics/pokemon/petilil/icon.4bpp"); + const u8 gMonFootprint_Petilil[] = INCBIN_U8("graphics/pokemon/petilil/footprint.1bpp"); + + const u32 gMonFrontPic_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/anim_front.4bpp.lz"); + const u32 gMonPalette_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/normal.gbapal.lz"); + const u32 gMonBackPic_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/back.4bpp.lz"); + const u32 gMonShinyPalette_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/shiny.gbapal.lz"); + const u8 gMonIcon_Lilligant[] = INCBIN_U8("graphics/pokemon/lilligant/icon.4bpp"); + const u8 gMonFootprint_Lilligant[] = INCBIN_U8("graphics/pokemon/lilligant/footprint.1bpp"); + +#if P_HISUIAN_FORMS + const u32 gMonFrontPic_LilligantHisuian[] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/front.4bpp.lz"); + const u32 gMonPalette_LilligantHisuian[] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/normal.gbapal.lz"); + const u32 gMonBackPic_LilligantHisuian[] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/back.4bpp.lz"); + const u32 gMonShinyPalette_LilligantHisuian[] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/shiny.gbapal.lz"); + const u8 gMonIcon_LilligantHisuian[] = INCBIN_U8("graphics/pokemon/lilligant/hisuian/icon.4bpp"); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_PETILIL + +#if P_FAMILY_BASCULIN + const u32 gMonFrontPic_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/anim_front.4bpp.lz"); + const u32 gMonPalette_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/normal.gbapal.lz"); + const u32 gMonBackPic_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/back.4bpp.lz"); + const u32 gMonShinyPalette_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/shiny.gbapal.lz"); + const u8 gMonIcon_BasculinRedStriped[] = INCBIN_U8("graphics/pokemon/basculin/icon.4bpp"); + const u8 gMonFootprint_Basculin[] = INCBIN_U8("graphics/pokemon/basculin/footprint.1bpp"); + + const u32 gMonFrontPic_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/front.4bpp.lz"); + const u32 gMonPalette_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/normal.gbapal.lz"); + const u32 gMonBackPic_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/back.4bpp.lz"); + const u32 gMonShinyPalette_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/shiny.gbapal.lz"); + const u8 gMonIcon_BasculinBlueStriped[] = INCBIN_U8("graphics/pokemon/basculin/blue_striped/icon.4bpp"); + +#if P_HISUIAN_FORMS + const u32 gMonFrontPic_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/front.4bpp.lz"); + const u32 gMonPalette_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/normal.gbapal.lz"); + const u32 gMonBackPic_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/back.4bpp.lz"); + const u32 gMonShinyPalette_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/shiny.gbapal.lz"); + const u8 gMonIcon_BasculinWhiteStriped[] = INCBIN_U8("graphics/pokemon/basculin/white_striped/icon.4bpp"); + + const u32 gMonFrontPic_BasculegionMale[] = INCBIN_U32("graphics/pokemon/basculegion/front.4bpp.lz"); + const u32 gMonPalette_BasculegionMale[] = INCBIN_U32("graphics/pokemon/basculegion/normal.gbapal.lz"); + const u32 gMonBackPic_BasculegionMale[] = INCBIN_U32("graphics/pokemon/basculegion/back.4bpp.lz"); + const u32 gMonShinyPalette_BasculegionMale[] = INCBIN_U32("graphics/pokemon/basculegion/shiny.gbapal.lz"); + const u8 gMonIcon_BasculegionMale[] = INCBIN_U8("graphics/pokemon/basculegion/icon.4bpp"); + //const u8 gMonFootprint_Basculegion[] = INCBIN_U8("graphics/pokemon/basculegion/footprint.1bpp"); + + const u32 gMonFrontPic_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/front.4bpp.lz"); + const u32 gMonPalette_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/normal.gbapal.lz"); + const u32 gMonBackPic_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/back.4bpp.lz"); + const u32 gMonShinyPalette_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/shiny.gbapal.lz"); + const u8 gMonIcon_BasculegionFemale[] = INCBIN_U8("graphics/pokemon/basculegion/female/icon.4bpp"); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_BASCULIN + +#if P_FAMILY_SANDILE + const u32 gMonFrontPic_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/anim_front.4bpp.lz"); + const u32 gMonPalette_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/normal.gbapal.lz"); + const u32 gMonBackPic_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/back.4bpp.lz"); + const u32 gMonShinyPalette_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/shiny.gbapal.lz"); + const u8 gMonIcon_Sandile[] = INCBIN_U8("graphics/pokemon/sandile/icon.4bpp"); + const u8 gMonFootprint_Sandile[] = INCBIN_U8("graphics/pokemon/sandile/footprint.1bpp"); + + const u32 gMonFrontPic_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/anim_front.4bpp.lz"); + const u32 gMonPalette_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/normal.gbapal.lz"); + const u32 gMonBackPic_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/back.4bpp.lz"); + const u32 gMonShinyPalette_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/shiny.gbapal.lz"); + const u8 gMonIcon_Krokorok[] = INCBIN_U8("graphics/pokemon/krokorok/icon.4bpp"); + const u8 gMonFootprint_Krokorok[] = INCBIN_U8("graphics/pokemon/krokorok/footprint.1bpp"); + + const u32 gMonFrontPic_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/anim_front.4bpp.lz"); + const u32 gMonPalette_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/normal.gbapal.lz"); + const u32 gMonBackPic_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/back.4bpp.lz"); + const u32 gMonShinyPalette_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/shiny.gbapal.lz"); + const u8 gMonIcon_Krookodile[] = INCBIN_U8("graphics/pokemon/krookodile/icon.4bpp"); + const u8 gMonFootprint_Krookodile[] = INCBIN_U8("graphics/pokemon/krookodile/footprint.1bpp"); +#endif //P_FAMILY_SANDILE + +#if P_FAMILY_DARUMAKA + const u32 gMonFrontPic_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/anim_front.4bpp.lz"); + const u32 gMonPalette_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/normal.gbapal.lz"); + const u32 gMonBackPic_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/back.4bpp.lz"); + const u32 gMonShinyPalette_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/shiny.gbapal.lz"); + const u8 gMonIcon_Darumaka[] = INCBIN_U8("graphics/pokemon/darumaka/icon.4bpp"); + const u8 gMonFootprint_Darumaka[] = INCBIN_U8("graphics/pokemon/darumaka/footprint.1bpp"); + + const u32 gMonFrontPic_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/anim_front.4bpp.lz"); + const u32 gMonPalette_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/normal.gbapal.lz"); + const u32 gMonBackPic_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/back.4bpp.lz"); + const u32 gMonShinyPalette_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/shiny.gbapal.lz"); + const u8 gMonIcon_DarmanitanStandardMode[] = INCBIN_U8("graphics/pokemon/darmanitan/icon.4bpp"); + const u8 gMonFootprint_Darmanitan[] = INCBIN_U8("graphics/pokemon/darmanitan/footprint.1bpp"); + + const u32 gMonFrontPic_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/anim_front.4bpp.lz"); + const u32 gMonPalette_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/normal.gbapal.lz"); + const u32 gMonBackPic_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/back.4bpp.lz"); + const u32 gMonShinyPalette_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/shiny.gbapal.lz"); + const u8 gMonIcon_DarmanitanZenMode[] = INCBIN_U8("graphics/pokemon/darmanitan/zen_mode/icon.4bpp"); + +#if P_GALARIAN_FORMS + const u32 gMonFrontPic_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/front.4bpp.lz"); + const u32 gMonPalette_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_DarumakaGalarian[] = INCBIN_U8("graphics/pokemon/darumaka/galarian/icon.4bpp"); + + const u32 gMonFrontPic_DarmanitanGalarianStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/front.4bpp.lz"); + const u32 gMonPalette_DarmanitanGalarianStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_DarmanitanGalarianStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_DarmanitanGalarianStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_DarmanitanGalarianStandardMode[] = INCBIN_U8("graphics/pokemon/darmanitan/galarian/icon.4bpp"); + + const u32 gMonFrontPic_DarmanitanGalarianZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/front.4bpp.lz"); + const u32 gMonPalette_DarmanitanGalarianZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_DarmanitanGalarianZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_DarmanitanGalarianZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_DarmanitanGalarianZenMode[] = INCBIN_U8("graphics/pokemon/darmanitan/zen_mode/galarian/icon.4bpp"); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_DARUMAKA + +#if P_FAMILY_MARACTUS + const u32 gMonFrontPic_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/anim_front.4bpp.lz"); + const u32 gMonPalette_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/normal.gbapal.lz"); + const u32 gMonBackPic_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/back.4bpp.lz"); + const u32 gMonShinyPalette_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/shiny.gbapal.lz"); + const u8 gMonIcon_Maractus[] = INCBIN_U8("graphics/pokemon/maractus/icon.4bpp"); + const u8 gMonFootprint_Maractus[] = INCBIN_U8("graphics/pokemon/maractus/footprint.1bpp"); +#endif //P_FAMILY_MARACTUS + +#if P_FAMILY_DWEBBLE + const u32 gMonFrontPic_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/anim_front.4bpp.lz"); + const u32 gMonPalette_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/normal.gbapal.lz"); + const u32 gMonBackPic_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/back.4bpp.lz"); + const u32 gMonShinyPalette_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/shiny.gbapal.lz"); + const u8 gMonIcon_Dwebble[] = INCBIN_U8("graphics/pokemon/dwebble/icon.4bpp"); + const u8 gMonFootprint_Dwebble[] = INCBIN_U8("graphics/pokemon/dwebble/footprint.1bpp"); + + const u32 gMonFrontPic_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/anim_front.4bpp.lz"); + const u32 gMonPalette_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/normal.gbapal.lz"); + const u32 gMonBackPic_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/back.4bpp.lz"); + const u32 gMonShinyPalette_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/shiny.gbapal.lz"); + const u8 gMonIcon_Crustle[] = INCBIN_U8("graphics/pokemon/crustle/icon.4bpp"); + const u8 gMonFootprint_Crustle[] = INCBIN_U8("graphics/pokemon/crustle/footprint.1bpp"); +#endif //P_FAMILY_DWEBBLE + +#if P_FAMILY_SCRAGGY + const u32 gMonFrontPic_Scraggy[] = INCBIN_U32("graphics/pokemon/scraggy/anim_front.4bpp.lz"); + const u32 gMonPalette_Scraggy[] = INCBIN_U32("graphics/pokemon/scraggy/normal.gbapal.lz"); + const u32 gMonBackPic_Scraggy[] = INCBIN_U32("graphics/pokemon/scraggy/back.4bpp.lz"); + const u32 gMonShinyPalette_Scraggy[] = INCBIN_U32("graphics/pokemon/scraggy/shiny.gbapal.lz"); + const u8 gMonIcon_Scraggy[] = INCBIN_U8("graphics/pokemon/scraggy/icon.4bpp"); + const u8 gMonFootprint_Scraggy[] = INCBIN_U8("graphics/pokemon/scraggy/footprint.1bpp"); + + const u32 gMonFrontPic_Scrafty[] = INCBIN_U32("graphics/pokemon/scrafty/anim_front.4bpp.lz"); + const u32 gMonPalette_Scrafty[] = INCBIN_U32("graphics/pokemon/scrafty/normal.gbapal.lz"); + const u32 gMonBackPic_Scrafty[] = INCBIN_U32("graphics/pokemon/scrafty/back.4bpp.lz"); + const u32 gMonShinyPalette_Scrafty[] = INCBIN_U32("graphics/pokemon/scrafty/shiny.gbapal.lz"); + const u8 gMonIcon_Scrafty[] = INCBIN_U8("graphics/pokemon/scrafty/icon.4bpp"); + const u8 gMonFootprint_Scrafty[] = INCBIN_U8("graphics/pokemon/scrafty/footprint.1bpp"); +#endif //P_FAMILY_SCRAGGY + +#if P_FAMILY_SIGILYPH + const u32 gMonFrontPic_Sigilyph[] = INCBIN_U32("graphics/pokemon/sigilyph/anim_front.4bpp.lz"); + const u32 gMonPalette_Sigilyph[] = INCBIN_U32("graphics/pokemon/sigilyph/normal.gbapal.lz"); + const u32 gMonBackPic_Sigilyph[] = INCBIN_U32("graphics/pokemon/sigilyph/back.4bpp.lz"); + const u32 gMonShinyPalette_Sigilyph[] = INCBIN_U32("graphics/pokemon/sigilyph/shiny.gbapal.lz"); + const u8 gMonIcon_Sigilyph[] = INCBIN_U8("graphics/pokemon/sigilyph/icon.4bpp"); + const u8 gMonFootprint_Sigilyph[] = INCBIN_U8("graphics/pokemon/sigilyph/footprint.1bpp"); +#endif //P_FAMILY_SIGILYPH + +#if P_FAMILY_YAMASK + const u32 gMonFrontPic_Yamask[] = INCBIN_U32("graphics/pokemon/yamask/anim_front.4bpp.lz"); + const u32 gMonPalette_Yamask[] = INCBIN_U32("graphics/pokemon/yamask/normal.gbapal.lz"); + const u32 gMonBackPic_Yamask[] = INCBIN_U32("graphics/pokemon/yamask/back.4bpp.lz"); + const u32 gMonShinyPalette_Yamask[] = INCBIN_U32("graphics/pokemon/yamask/shiny.gbapal.lz"); + const u8 gMonIcon_Yamask[] = INCBIN_U8("graphics/pokemon/yamask/icon.4bpp"); + const u8 gMonFootprint_Yamask[] = INCBIN_U8("graphics/pokemon/yamask/footprint.1bpp"); + + const u32 gMonFrontPic_Cofagrigus[] = INCBIN_U32("graphics/pokemon/cofagrigus/anim_front.4bpp.lz"); + const u32 gMonPalette_Cofagrigus[] = INCBIN_U32("graphics/pokemon/cofagrigus/normal.gbapal.lz"); + const u32 gMonBackPic_Cofagrigus[] = INCBIN_U32("graphics/pokemon/cofagrigus/back.4bpp.lz"); + const u32 gMonShinyPalette_Cofagrigus[] = INCBIN_U32("graphics/pokemon/cofagrigus/shiny.gbapal.lz"); + const u8 gMonIcon_Cofagrigus[] = INCBIN_U8("graphics/pokemon/cofagrigus/icon.4bpp"); + const u8 gMonFootprint_Cofagrigus[] = INCBIN_U8("graphics/pokemon/cofagrigus/footprint.1bpp"); + +#if P_GALARIAN_FORMS + const u32 gMonFrontPic_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/front.4bpp.lz"); + const u32 gMonPalette_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_YamaskGalarian[] = INCBIN_U8("graphics/pokemon/yamask/galarian/icon.4bpp"); + + const u32 gMonFrontPic_Runerigus[] = INCBIN_U32("graphics/pokemon/runerigus/front.4bpp.lz"); + const u32 gMonPalette_Runerigus[] = INCBIN_U32("graphics/pokemon/runerigus/normal.gbapal.lz"); + const u32 gMonBackPic_Runerigus[] = INCBIN_U32("graphics/pokemon/runerigus/back.4bpp.lz"); + const u32 gMonShinyPalette_Runerigus[] = INCBIN_U32("graphics/pokemon/runerigus/shiny.gbapal.lz"); + const u8 gMonIcon_Runerigus[] = INCBIN_U8("graphics/pokemon/runerigus/icon.4bpp"); + const u8 gMonFootprint_Runerigus[] = INCBIN_U8("graphics/pokemon/runerigus/footprint.1bpp"); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_YAMASK + +#if P_FAMILY_TIRTOUGA + const u32 gMonFrontPic_Tirtouga[] = INCBIN_U32("graphics/pokemon/tirtouga/anim_front.4bpp.lz"); + const u32 gMonPalette_Tirtouga[] = INCBIN_U32("graphics/pokemon/tirtouga/normal.gbapal.lz"); + const u32 gMonBackPic_Tirtouga[] = INCBIN_U32("graphics/pokemon/tirtouga/back.4bpp.lz"); + const u32 gMonShinyPalette_Tirtouga[] = INCBIN_U32("graphics/pokemon/tirtouga/shiny.gbapal.lz"); + const u8 gMonIcon_Tirtouga[] = INCBIN_U8("graphics/pokemon/tirtouga/icon.4bpp"); + const u8 gMonFootprint_Tirtouga[] = INCBIN_U8("graphics/pokemon/tirtouga/footprint.1bpp"); + + const u32 gMonFrontPic_Carracosta[] = INCBIN_U32("graphics/pokemon/carracosta/anim_front.4bpp.lz"); + const u32 gMonPalette_Carracosta[] = INCBIN_U32("graphics/pokemon/carracosta/normal.gbapal.lz"); + const u32 gMonBackPic_Carracosta[] = INCBIN_U32("graphics/pokemon/carracosta/back.4bpp.lz"); + const u32 gMonShinyPalette_Carracosta[] = INCBIN_U32("graphics/pokemon/carracosta/shiny.gbapal.lz"); + const u8 gMonIcon_Carracosta[] = INCBIN_U8("graphics/pokemon/carracosta/icon.4bpp"); + const u8 gMonFootprint_Carracosta[] = INCBIN_U8("graphics/pokemon/carracosta/footprint.1bpp"); +#endif //P_FAMILY_TIRTOUGA + +#if P_FAMILY_ARCHEN + const u32 gMonFrontPic_Archen[] = INCBIN_U32("graphics/pokemon/archen/anim_front.4bpp.lz"); + const u32 gMonPalette_Archen[] = INCBIN_U32("graphics/pokemon/archen/normal.gbapal.lz"); + const u32 gMonBackPic_Archen[] = INCBIN_U32("graphics/pokemon/archen/back.4bpp.lz"); + const u32 gMonShinyPalette_Archen[] = INCBIN_U32("graphics/pokemon/archen/shiny.gbapal.lz"); + const u8 gMonIcon_Archen[] = INCBIN_U8("graphics/pokemon/archen/icon.4bpp"); + const u8 gMonFootprint_Archen[] = INCBIN_U8("graphics/pokemon/archen/footprint.1bpp"); + + const u32 gMonFrontPic_Archeops[] = INCBIN_U32("graphics/pokemon/archeops/anim_front.4bpp.lz"); + const u32 gMonPalette_Archeops[] = INCBIN_U32("graphics/pokemon/archeops/normal.gbapal.lz"); + const u32 gMonBackPic_Archeops[] = INCBIN_U32("graphics/pokemon/archeops/back.4bpp.lz"); + const u32 gMonShinyPalette_Archeops[] = INCBIN_U32("graphics/pokemon/archeops/shiny.gbapal.lz"); + const u8 gMonIcon_Archeops[] = INCBIN_U8("graphics/pokemon/archeops/icon.4bpp"); + const u8 gMonFootprint_Archeops[] = INCBIN_U8("graphics/pokemon/archeops/footprint.1bpp"); +#endif //P_FAMILY_ARCHEN + +#if P_FAMILY_TRUBBISH + const u32 gMonFrontPic_Trubbish[] = INCBIN_U32("graphics/pokemon/trubbish/anim_front.4bpp.lz"); + const u32 gMonPalette_Trubbish[] = INCBIN_U32("graphics/pokemon/trubbish/normal.gbapal.lz"); + const u32 gMonBackPic_Trubbish[] = INCBIN_U32("graphics/pokemon/trubbish/back.4bpp.lz"); + const u32 gMonShinyPalette_Trubbish[] = INCBIN_U32("graphics/pokemon/trubbish/shiny.gbapal.lz"); + const u8 gMonIcon_Trubbish[] = INCBIN_U8("graphics/pokemon/trubbish/icon.4bpp"); + const u8 gMonFootprint_Trubbish[] = INCBIN_U8("graphics/pokemon/trubbish/footprint.1bpp"); + + const u32 gMonFrontPic_Garbodor[] = INCBIN_U32("graphics/pokemon/garbodor/anim_front.4bpp.lz"); + const u32 gMonPalette_Garbodor[] = INCBIN_U32("graphics/pokemon/garbodor/normal.gbapal.lz"); + const u32 gMonBackPic_Garbodor[] = INCBIN_U32("graphics/pokemon/garbodor/back.4bpp.lz"); + const u32 gMonShinyPalette_Garbodor[] = INCBIN_U32("graphics/pokemon/garbodor/shiny.gbapal.lz"); + const u8 gMonIcon_Garbodor[] = INCBIN_U8("graphics/pokemon/garbodor/icon.4bpp"); + const u8 gMonFootprint_Garbodor[] = INCBIN_U8("graphics/pokemon/garbodor/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_GarbodorGigantamax[] = INCBIN_U32("graphics/pokemon/garbodor/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_GarbodorGigantamax[] = INCBIN_U32("graphics/pokemon/garbodor/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_GarbodorGigantamax[] = INCBIN_U32("graphics/pokemon/garbodor/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_GarbodorGigantamax[] = INCBIN_U32("graphics/pokemon/garbodor/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_GarbodorGigantamax[] = INCBIN_U8("graphics/pokemon/garbodor/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_TRUBBISH + +#if P_FAMILY_ZORUA + const u32 gMonFrontPic_Zorua[] = INCBIN_U32("graphics/pokemon/zorua/anim_front.4bpp.lz"); + const u32 gMonPalette_Zorua[] = INCBIN_U32("graphics/pokemon/zorua/normal.gbapal.lz"); + const u32 gMonBackPic_Zorua[] = INCBIN_U32("graphics/pokemon/zorua/back.4bpp.lz"); + const u32 gMonShinyPalette_Zorua[] = INCBIN_U32("graphics/pokemon/zorua/shiny.gbapal.lz"); + const u8 gMonIcon_Zorua[] = INCBIN_U8("graphics/pokemon/zorua/icon.4bpp"); + const u8 gMonFootprint_Zorua[] = INCBIN_U8("graphics/pokemon/zorua/footprint.1bpp"); + + const u32 gMonFrontPic_Zoroark[] = INCBIN_U32("graphics/pokemon/zoroark/anim_front.4bpp.lz"); + const u32 gMonPalette_Zoroark[] = INCBIN_U32("graphics/pokemon/zoroark/normal.gbapal.lz"); + const u32 gMonBackPic_Zoroark[] = INCBIN_U32("graphics/pokemon/zoroark/back.4bpp.lz"); + const u32 gMonShinyPalette_Zoroark[] = INCBIN_U32("graphics/pokemon/zoroark/shiny.gbapal.lz"); + const u8 gMonIcon_Zoroark[] = INCBIN_U8("graphics/pokemon/zoroark/icon.4bpp"); + const u8 gMonFootprint_Zoroark[] = INCBIN_U8("graphics/pokemon/zoroark/footprint.1bpp"); + +#if P_HISUIAN_FORMS + const u32 gMonFrontPic_ZoruaHisuian[] = INCBIN_U32("graphics/pokemon/zorua/hisuian/front.4bpp.lz"); + const u32 gMonPalette_ZoruaHisuian[] = INCBIN_U32("graphics/pokemon/zorua/hisuian/normal.gbapal.lz"); + const u32 gMonBackPic_ZoruaHisuian[] = INCBIN_U32("graphics/pokemon/zorua/hisuian/back.4bpp.lz"); + const u32 gMonShinyPalette_ZoruaHisuian[] = INCBIN_U32("graphics/pokemon/zorua/hisuian/shiny.gbapal.lz"); + const u8 gMonIcon_ZoruaHisuian[] = INCBIN_U8("graphics/pokemon/zorua/hisuian/icon.4bpp"); + + const u32 gMonFrontPic_ZoroarkHisuian[] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/front.4bpp.lz"); + const u32 gMonPalette_ZoroarkHisuian[] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/normal.gbapal.lz"); + const u32 gMonBackPic_ZoroarkHisuian[] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/back.4bpp.lz"); + const u32 gMonShinyPalette_ZoroarkHisuian[] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/shiny.gbapal.lz"); + const u8 gMonIcon_ZoroarkHisuian[] = INCBIN_U8("graphics/pokemon/zoroark/hisuian/icon.4bpp"); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_ZORUA + +#if P_FAMILY_MINCCINO + const u32 gMonFrontPic_Minccino[] = INCBIN_U32("graphics/pokemon/minccino/anim_front.4bpp.lz"); + const u32 gMonPalette_Minccino[] = INCBIN_U32("graphics/pokemon/minccino/normal.gbapal.lz"); + const u32 gMonBackPic_Minccino[] = INCBIN_U32("graphics/pokemon/minccino/back.4bpp.lz"); + const u32 gMonShinyPalette_Minccino[] = INCBIN_U32("graphics/pokemon/minccino/shiny.gbapal.lz"); + const u8 gMonIcon_Minccino[] = INCBIN_U8("graphics/pokemon/minccino/icon.4bpp"); + const u8 gMonFootprint_Minccino[] = INCBIN_U8("graphics/pokemon/minccino/footprint.1bpp"); + + const u32 gMonFrontPic_Cinccino[] = INCBIN_U32("graphics/pokemon/cinccino/anim_front.4bpp.lz"); + const u32 gMonPalette_Cinccino[] = INCBIN_U32("graphics/pokemon/cinccino/normal.gbapal.lz"); + const u32 gMonBackPic_Cinccino[] = INCBIN_U32("graphics/pokemon/cinccino/back.4bpp.lz"); + const u32 gMonShinyPalette_Cinccino[] = INCBIN_U32("graphics/pokemon/cinccino/shiny.gbapal.lz"); + const u8 gMonIcon_Cinccino[] = INCBIN_U8("graphics/pokemon/cinccino/icon.4bpp"); + const u8 gMonFootprint_Cinccino[] = INCBIN_U8("graphics/pokemon/cinccino/footprint.1bpp"); +#endif //P_FAMILY_MINCCINO + +#if P_FAMILY_GOTHITA + const u32 gMonFrontPic_Gothita[] = INCBIN_U32("graphics/pokemon/gothita/anim_front.4bpp.lz"); + const u32 gMonPalette_Gothita[] = INCBIN_U32("graphics/pokemon/gothita/normal.gbapal.lz"); + const u32 gMonBackPic_Gothita[] = INCBIN_U32("graphics/pokemon/gothita/back.4bpp.lz"); + const u32 gMonShinyPalette_Gothita[] = INCBIN_U32("graphics/pokemon/gothita/shiny.gbapal.lz"); + const u8 gMonIcon_Gothita[] = INCBIN_U8("graphics/pokemon/gothita/icon.4bpp"); + const u8 gMonFootprint_Gothita[] = INCBIN_U8("graphics/pokemon/gothita/footprint.1bpp"); + + const u32 gMonFrontPic_Gothorita[] = INCBIN_U32("graphics/pokemon/gothorita/anim_front.4bpp.lz"); + const u32 gMonPalette_Gothorita[] = INCBIN_U32("graphics/pokemon/gothorita/normal.gbapal.lz"); + const u32 gMonBackPic_Gothorita[] = INCBIN_U32("graphics/pokemon/gothorita/back.4bpp.lz"); + const u32 gMonShinyPalette_Gothorita[] = INCBIN_U32("graphics/pokemon/gothorita/shiny.gbapal.lz"); + const u8 gMonIcon_Gothorita[] = INCBIN_U8("graphics/pokemon/gothorita/icon.4bpp"); + const u8 gMonFootprint_Gothorita[] = INCBIN_U8("graphics/pokemon/gothorita/footprint.1bpp"); + + const u32 gMonFrontPic_Gothitelle[] = INCBIN_U32("graphics/pokemon/gothitelle/anim_front.4bpp.lz"); + const u32 gMonPalette_Gothitelle[] = INCBIN_U32("graphics/pokemon/gothitelle/normal.gbapal.lz"); + const u32 gMonBackPic_Gothitelle[] = INCBIN_U32("graphics/pokemon/gothitelle/back.4bpp.lz"); + const u32 gMonShinyPalette_Gothitelle[] = INCBIN_U32("graphics/pokemon/gothitelle/shiny.gbapal.lz"); + const u8 gMonIcon_Gothitelle[] = INCBIN_U8("graphics/pokemon/gothitelle/icon.4bpp"); + const u8 gMonFootprint_Gothitelle[] = INCBIN_U8("graphics/pokemon/gothitelle/footprint.1bpp"); +#endif //P_FAMILY_GOTHITA + +#if P_FAMILY_SOLOSIS + const u32 gMonFrontPic_Solosis[] = INCBIN_U32("graphics/pokemon/solosis/anim_front.4bpp.lz"); + const u32 gMonPalette_Solosis[] = INCBIN_U32("graphics/pokemon/solosis/normal.gbapal.lz"); + const u32 gMonBackPic_Solosis[] = INCBIN_U32("graphics/pokemon/solosis/back.4bpp.lz"); + const u32 gMonShinyPalette_Solosis[] = INCBIN_U32("graphics/pokemon/solosis/shiny.gbapal.lz"); + const u8 gMonIcon_Solosis[] = INCBIN_U8("graphics/pokemon/solosis/icon.4bpp"); + const u8 gMonFootprint_Solosis[] = INCBIN_U8("graphics/pokemon/solosis/footprint.1bpp"); + + const u32 gMonFrontPic_Duosion[] = INCBIN_U32("graphics/pokemon/duosion/anim_front.4bpp.lz"); + const u32 gMonPalette_Duosion[] = INCBIN_U32("graphics/pokemon/duosion/normal.gbapal.lz"); + const u32 gMonBackPic_Duosion[] = INCBIN_U32("graphics/pokemon/duosion/back.4bpp.lz"); + const u32 gMonShinyPalette_Duosion[] = INCBIN_U32("graphics/pokemon/duosion/shiny.gbapal.lz"); + const u8 gMonIcon_Duosion[] = INCBIN_U8("graphics/pokemon/duosion/icon.4bpp"); + const u8 gMonFootprint_Duosion[] = INCBIN_U8("graphics/pokemon/duosion/footprint.1bpp"); + + const u32 gMonFrontPic_Reuniclus[] = INCBIN_U32("graphics/pokemon/reuniclus/anim_front.4bpp.lz"); + const u32 gMonPalette_Reuniclus[] = INCBIN_U32("graphics/pokemon/reuniclus/normal.gbapal.lz"); + const u32 gMonBackPic_Reuniclus[] = INCBIN_U32("graphics/pokemon/reuniclus/back.4bpp.lz"); + const u32 gMonShinyPalette_Reuniclus[] = INCBIN_U32("graphics/pokemon/reuniclus/shiny.gbapal.lz"); + const u8 gMonIcon_Reuniclus[] = INCBIN_U8("graphics/pokemon/reuniclus/icon.4bpp"); + const u8 gMonFootprint_Reuniclus[] = INCBIN_U8("graphics/pokemon/reuniclus/footprint.1bpp"); +#endif //P_FAMILY_SOLOSIS + +#if P_FAMILY_DUCKLETT + const u32 gMonFrontPic_Ducklett[] = INCBIN_U32("graphics/pokemon/ducklett/anim_front.4bpp.lz"); + const u32 gMonPalette_Ducklett[] = INCBIN_U32("graphics/pokemon/ducklett/normal.gbapal.lz"); + const u32 gMonBackPic_Ducklett[] = INCBIN_U32("graphics/pokemon/ducklett/back.4bpp.lz"); + const u32 gMonShinyPalette_Ducklett[] = INCBIN_U32("graphics/pokemon/ducklett/shiny.gbapal.lz"); + const u8 gMonIcon_Ducklett[] = INCBIN_U8("graphics/pokemon/ducklett/icon.4bpp"); + const u8 gMonFootprint_Ducklett[] = INCBIN_U8("graphics/pokemon/ducklett/footprint.1bpp"); + + const u32 gMonFrontPic_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/anim_front.4bpp.lz"); + const u32 gMonPalette_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/normal.gbapal.lz"); + const u32 gMonBackPic_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/back.4bpp.lz"); + const u32 gMonShinyPalette_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/shiny.gbapal.lz"); + const u8 gMonIcon_Swanna[] = INCBIN_U8("graphics/pokemon/swanna/icon.4bpp"); + const u8 gMonFootprint_Swanna[] = INCBIN_U8("graphics/pokemon/swanna/footprint.1bpp"); +#endif //P_FAMILY_DUCKLETT + +#if P_FAMILY_VANILLITE + const u32 gMonFrontPic_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/anim_front.4bpp.lz"); + const u32 gMonPalette_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/normal.gbapal.lz"); + const u32 gMonBackPic_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/back.4bpp.lz"); + const u32 gMonShinyPalette_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/shiny.gbapal.lz"); + const u8 gMonIcon_Vanillite[] = INCBIN_U8("graphics/pokemon/vanillite/icon.4bpp"); + const u8 gMonFootprint_Vanillite[] = INCBIN_U8("graphics/pokemon/vanillite/footprint.1bpp"); + + const u32 gMonFrontPic_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/anim_front.4bpp.lz"); + const u32 gMonPalette_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/normal.gbapal.lz"); + const u32 gMonBackPic_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/back.4bpp.lz"); + const u32 gMonShinyPalette_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/shiny.gbapal.lz"); + const u8 gMonIcon_Vanillish[] = INCBIN_U8("graphics/pokemon/vanillish/icon.4bpp"); + const u8 gMonFootprint_Vanillish[] = INCBIN_U8("graphics/pokemon/vanillish/footprint.1bpp"); + + const u32 gMonFrontPic_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/anim_front.4bpp.lz"); + const u32 gMonPalette_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/normal.gbapal.lz"); + const u32 gMonBackPic_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/back.4bpp.lz"); + const u32 gMonShinyPalette_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/shiny.gbapal.lz"); + const u8 gMonIcon_Vanilluxe[] = INCBIN_U8("graphics/pokemon/vanilluxe/icon.4bpp"); + const u8 gMonFootprint_Vanilluxe[] = INCBIN_U8("graphics/pokemon/vanilluxe/footprint.1bpp"); +#endif //P_FAMILY_VANILLITE + +#if P_FAMILY_DEERLING + const u32 gMonFrontPic_Deerling[] = INCBIN_U32("graphics/pokemon/deerling/anim_front.4bpp.lz"); + const u32 gMonBackPic_Deerling[] = INCBIN_U32("graphics/pokemon/deerling/back.4bpp.lz"); + const u8 gMonFootprint_Deerling[] = INCBIN_U8("graphics/pokemon/deerling/footprint.1bpp"); + + const u32 gMonPalette_DeerlingSpring[] = INCBIN_U32("graphics/pokemon/deerling/normal.gbapal.lz"); + const u32 gMonShinyPalette_DeerlingSpring[] = INCBIN_U32("graphics/pokemon/deerling/shiny.gbapal.lz"); + const u8 gMonIcon_DeerlingSpring[] = INCBIN_U8("graphics/pokemon/deerling/icon.4bpp"); + + const u32 gMonPalette_DeerlingSummer[] = INCBIN_U32("graphics/pokemon/deerling/summer/normal.gbapal.lz"); + const u32 gMonShinyPalette_DeerlingSummer[] = INCBIN_U32("graphics/pokemon/deerling/summer/shiny.gbapal.lz"); + const u8 gMonIcon_DeerlingSummer[] = INCBIN_U8("graphics/pokemon/deerling/summer/icon.4bpp"); + + const u32 gMonPalette_DeerlingAutumn[] = INCBIN_U32("graphics/pokemon/deerling/autumn/normal.gbapal.lz"); + const u32 gMonShinyPalette_DeerlingAutumn[] = INCBIN_U32("graphics/pokemon/deerling/autumn/shiny.gbapal.lz"); + const u8 gMonIcon_DeerlingAutumn[] = INCBIN_U8("graphics/pokemon/deerling/autumn/icon.4bpp"); + + const u32 gMonPalette_DeerlingWinter[] = INCBIN_U32("graphics/pokemon/deerling/winter/normal.gbapal.lz"); + const u32 gMonShinyPalette_DeerlingWinter[] = INCBIN_U32("graphics/pokemon/deerling/winter/shiny.gbapal.lz"); + const u8 gMonIcon_DeerlingWinter[] = INCBIN_U8("graphics/pokemon/deerling/winter/icon.4bpp"); + + const u32 gMonFrontPic_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/anim_front.4bpp.lz"); + const u32 gMonPalette_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/normal.gbapal.lz"); + const u32 gMonBackPic_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/back.4bpp.lz"); + const u32 gMonShinyPalette_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/shiny.gbapal.lz"); + const u8 gMonIcon_SawsbuckSpring[] = INCBIN_U8("graphics/pokemon/sawsbuck/icon.4bpp"); + const u8 gMonFootprint_Sawsbuck[] = INCBIN_U8("graphics/pokemon/sawsbuck/footprint.1bpp"); + + const u32 gMonFrontPic_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/front.4bpp.lz"); + const u32 gMonPalette_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/normal.gbapal.lz"); + const u32 gMonBackPic_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/back.4bpp.lz"); + const u32 gMonShinyPalette_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/shiny.gbapal.lz"); + const u8 gMonIcon_SawsbuckSummer[] = INCBIN_U8("graphics/pokemon/sawsbuck/summer/icon.4bpp"); + + const u32 gMonFrontPic_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/front.4bpp.lz"); + const u32 gMonPalette_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/normal.gbapal.lz"); + const u32 gMonBackPic_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/back.4bpp.lz"); + const u32 gMonShinyPalette_SawsbuckAutumn[] = INCBIN_U32("graphics/pokemon/sawsbuck/autumn/shiny.gbapal.lz"); + const u8 gMonIcon_SawsbuckAutumn[] = INCBIN_U8("graphics/pokemon/sawsbuck/autumn/icon.4bpp"); + + const u32 gMonFrontPic_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/front.4bpp.lz"); + const u32 gMonPalette_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/normal.gbapal.lz"); + const u32 gMonBackPic_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/back.4bpp.lz"); + const u32 gMonShinyPalette_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/winter/shiny.gbapal.lz"); + const u8 gMonIcon_SawsbuckWinter[] = INCBIN_U8("graphics/pokemon/sawsbuck/winter/icon.4bpp"); +#endif //P_FAMILY_DEERLING + +#if P_FAMILY_EMOLGA + const u32 gMonFrontPic_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/anim_front.4bpp.lz"); + const u32 gMonPalette_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/normal.gbapal.lz"); + const u32 gMonBackPic_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/back.4bpp.lz"); + const u32 gMonShinyPalette_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/shiny.gbapal.lz"); + const u8 gMonIcon_Emolga[] = INCBIN_U8("graphics/pokemon/emolga/icon.4bpp"); + const u8 gMonFootprint_Emolga[] = INCBIN_U8("graphics/pokemon/emolga/footprint.1bpp"); +#endif //P_FAMILY_EMOLGA + +#if P_FAMILY_KARRABLAST + const u32 gMonFrontPic_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/anim_front.4bpp.lz"); + const u32 gMonPalette_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/normal.gbapal.lz"); + const u32 gMonBackPic_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/back.4bpp.lz"); + const u32 gMonShinyPalette_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/shiny.gbapal.lz"); + const u8 gMonIcon_Karrablast[] = INCBIN_U8("graphics/pokemon/karrablast/icon.4bpp"); + const u8 gMonFootprint_Karrablast[] = INCBIN_U8("graphics/pokemon/karrablast/footprint.1bpp"); + + const u32 gMonFrontPic_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/anim_front.4bpp.lz"); + const u32 gMonPalette_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/normal.gbapal.lz"); + const u32 gMonBackPic_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/back.4bpp.lz"); + const u32 gMonShinyPalette_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/shiny.gbapal.lz"); + const u8 gMonIcon_Escavalier[] = INCBIN_U8("graphics/pokemon/escavalier/icon.4bpp"); + const u8 gMonFootprint_Escavalier[] = INCBIN_U8("graphics/pokemon/escavalier/footprint.1bpp"); +#endif //P_FAMILY_KARRABLAST + +#if P_FAMILY_FOONGUS + const u32 gMonFrontPic_Foongus[] = INCBIN_U32("graphics/pokemon/foongus/anim_front.4bpp.lz"); + const u32 gMonPalette_Foongus[] = INCBIN_U32("graphics/pokemon/foongus/normal.gbapal.lz"); + const u32 gMonBackPic_Foongus[] = INCBIN_U32("graphics/pokemon/foongus/back.4bpp.lz"); + const u32 gMonShinyPalette_Foongus[] = INCBIN_U32("graphics/pokemon/foongus/shiny.gbapal.lz"); + const u8 gMonIcon_Foongus[] = INCBIN_U8("graphics/pokemon/foongus/icon.4bpp"); + const u8 gMonFootprint_Foongus[] = INCBIN_U8("graphics/pokemon/foongus/footprint.1bpp"); + + const u32 gMonFrontPic_Amoonguss[] = INCBIN_U32("graphics/pokemon/amoonguss/anim_front.4bpp.lz"); + const u32 gMonPalette_Amoonguss[] = INCBIN_U32("graphics/pokemon/amoonguss/normal.gbapal.lz"); + const u32 gMonBackPic_Amoonguss[] = INCBIN_U32("graphics/pokemon/amoonguss/back.4bpp.lz"); + const u32 gMonShinyPalette_Amoonguss[] = INCBIN_U32("graphics/pokemon/amoonguss/shiny.gbapal.lz"); + const u8 gMonIcon_Amoonguss[] = INCBIN_U8("graphics/pokemon/amoonguss/icon.4bpp"); + const u8 gMonFootprint_Amoonguss[] = INCBIN_U8("graphics/pokemon/amoonguss/footprint.1bpp"); +#endif //P_FAMILY_FOONGUS + +#if P_FAMILY_FRILLISH + const u32 gMonFrontPic_Frillish[] = INCBIN_U32("graphics/pokemon/frillish/anim_front.4bpp.lz"); + const u32 gMonPalette_Frillish[] = INCBIN_U32("graphics/pokemon/frillish/normal.gbapal.lz"); + const u32 gMonBackPic_Frillish[] = INCBIN_U32("graphics/pokemon/frillish/back.4bpp.lz"); + const u32 gMonShinyPalette_Frillish[] = INCBIN_U32("graphics/pokemon/frillish/shiny.gbapal.lz"); + const u8 gMonIcon_Frillish[] = INCBIN_U8("graphics/pokemon/frillish/icon.4bpp"); + const u8 gMonFootprint_Frillish[] = INCBIN_U8("graphics/pokemon/frillish/footprint.1bpp"); + + const u32 gMonFrontPic_FrillishF[] = INCBIN_U32("graphics/pokemon/frillish/anim_frontf.4bpp.lz"); + const u32 gMonPalette_FrillishF[] = INCBIN_U32("graphics/pokemon/frillish/normalf.gbapal.lz"); + const u32 gMonBackPic_FrillishF[] = INCBIN_U32("graphics/pokemon/frillish/backf.4bpp.lz"); + const u32 gMonShinyPalette_FrillishF[] = INCBIN_U32("graphics/pokemon/frillish/shinyf.gbapal.lz"); + const u8 gMonIcon_FrillishF[] = INCBIN_U8("graphics/pokemon/frillish/iconf.4bpp"); + + const u32 gMonFrontPic_Jellicent[] = INCBIN_U32("graphics/pokemon/jellicent/anim_front.4bpp.lz"); + const u32 gMonPalette_Jellicent[] = INCBIN_U32("graphics/pokemon/jellicent/normal.gbapal.lz"); + const u32 gMonBackPic_Jellicent[] = INCBIN_U32("graphics/pokemon/jellicent/back.4bpp.lz"); + const u32 gMonShinyPalette_Jellicent[] = INCBIN_U32("graphics/pokemon/jellicent/shiny.gbapal.lz"); + const u8 gMonIcon_Jellicent[] = INCBIN_U8("graphics/pokemon/jellicent/icon.4bpp"); + const u8 gMonFootprint_Jellicent[] = INCBIN_U8("graphics/pokemon/jellicent/footprint.1bpp"); + + const u32 gMonFrontPic_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/anim_frontf.4bpp.lz"); + const u32 gMonPalette_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/normalf.gbapal.lz"); + const u32 gMonBackPic_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/backf.4bpp.lz"); + const u32 gMonShinyPalette_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/shinyf.gbapal.lz"); + const u8 gMonIcon_JellicentF[] = INCBIN_U8("graphics/pokemon/jellicent/iconf.4bpp"); +#endif //P_FAMILY_FRILLISH + +#if P_FAMILY_ALOMOMOLA + const u32 gMonFrontPic_Alomomola[] = INCBIN_U32("graphics/pokemon/alomomola/anim_front.4bpp.lz"); + const u32 gMonPalette_Alomomola[] = INCBIN_U32("graphics/pokemon/alomomola/normal.gbapal.lz"); + const u32 gMonBackPic_Alomomola[] = INCBIN_U32("graphics/pokemon/alomomola/back.4bpp.lz"); + const u32 gMonShinyPalette_Alomomola[] = INCBIN_U32("graphics/pokemon/alomomola/shiny.gbapal.lz"); + const u8 gMonIcon_Alomomola[] = INCBIN_U8("graphics/pokemon/alomomola/icon.4bpp"); + const u8 gMonFootprint_Alomomola[] = INCBIN_U8("graphics/pokemon/alomomola/footprint.1bpp"); +#endif //P_FAMILY_ALOMOMOLA + +#if P_FAMILY_JOLTIK + const u32 gMonFrontPic_Joltik[] = INCBIN_U32("graphics/pokemon/joltik/anim_front.4bpp.lz"); + const u32 gMonPalette_Joltik[] = INCBIN_U32("graphics/pokemon/joltik/normal.gbapal.lz"); + const u32 gMonBackPic_Joltik[] = INCBIN_U32("graphics/pokemon/joltik/back.4bpp.lz"); + const u32 gMonShinyPalette_Joltik[] = INCBIN_U32("graphics/pokemon/joltik/shiny.gbapal.lz"); + const u8 gMonIcon_Joltik[] = INCBIN_U8("graphics/pokemon/joltik/icon.4bpp"); + const u8 gMonFootprint_Joltik[] = INCBIN_U8("graphics/pokemon/joltik/footprint.1bpp"); + + const u32 gMonFrontPic_Galvantula[] = INCBIN_U32("graphics/pokemon/galvantula/anim_front.4bpp.lz"); + const u32 gMonPalette_Galvantula[] = INCBIN_U32("graphics/pokemon/galvantula/normal.gbapal.lz"); + const u32 gMonBackPic_Galvantula[] = INCBIN_U32("graphics/pokemon/galvantula/back.4bpp.lz"); + const u32 gMonShinyPalette_Galvantula[] = INCBIN_U32("graphics/pokemon/galvantula/shiny.gbapal.lz"); + const u8 gMonIcon_Galvantula[] = INCBIN_U8("graphics/pokemon/galvantula/icon.4bpp"); + const u8 gMonFootprint_Galvantula[] = INCBIN_U8("graphics/pokemon/galvantula/footprint.1bpp"); +#endif //P_FAMILY_JOLTIK + +#if P_FAMILY_FERROSEED + const u32 gMonFrontPic_Ferroseed[] = INCBIN_U32("graphics/pokemon/ferroseed/anim_front.4bpp.lz"); + const u32 gMonPalette_Ferroseed[] = INCBIN_U32("graphics/pokemon/ferroseed/normal.gbapal.lz"); + const u32 gMonBackPic_Ferroseed[] = INCBIN_U32("graphics/pokemon/ferroseed/back.4bpp.lz"); + const u32 gMonShinyPalette_Ferroseed[] = INCBIN_U32("graphics/pokemon/ferroseed/shiny.gbapal.lz"); + const u8 gMonIcon_Ferroseed[] = INCBIN_U8("graphics/pokemon/ferroseed/icon.4bpp"); + const u8 gMonFootprint_Ferroseed[] = INCBIN_U8("graphics/pokemon/ferroseed/footprint.1bpp"); + + const u32 gMonFrontPic_Ferrothorn[] = INCBIN_U32("graphics/pokemon/ferrothorn/anim_front.4bpp.lz"); + const u32 gMonPalette_Ferrothorn[] = INCBIN_U32("graphics/pokemon/ferrothorn/normal.gbapal.lz"); + const u32 gMonBackPic_Ferrothorn[] = INCBIN_U32("graphics/pokemon/ferrothorn/back.4bpp.lz"); + const u32 gMonShinyPalette_Ferrothorn[] = INCBIN_U32("graphics/pokemon/ferrothorn/shiny.gbapal.lz"); + const u8 gMonIcon_Ferrothorn[] = INCBIN_U8("graphics/pokemon/ferrothorn/icon.4bpp"); + const u8 gMonFootprint_Ferrothorn[] = INCBIN_U8("graphics/pokemon/ferrothorn/footprint.1bpp"); +#endif //P_FAMILY_FERROSEED + +#if P_FAMILY_KLINK + const u32 gMonFrontPic_Klink[] = INCBIN_U32("graphics/pokemon/klink/anim_front.4bpp.lz"); + const u32 gMonPalette_Klink[] = INCBIN_U32("graphics/pokemon/klink/normal.gbapal.lz"); + const u32 gMonBackPic_Klink[] = INCBIN_U32("graphics/pokemon/klink/back.4bpp.lz"); + const u32 gMonShinyPalette_Klink[] = INCBIN_U32("graphics/pokemon/klink/shiny.gbapal.lz"); + const u8 gMonIcon_Klink[] = INCBIN_U8("graphics/pokemon/klink/icon.4bpp"); + const u8 gMonFootprint_Klink[] = INCBIN_U8("graphics/pokemon/klink/footprint.1bpp"); + + const u32 gMonFrontPic_Klang[] = INCBIN_U32("graphics/pokemon/klang/anim_front.4bpp.lz"); + const u32 gMonPalette_Klang[] = INCBIN_U32("graphics/pokemon/klang/normal.gbapal.lz"); + const u32 gMonBackPic_Klang[] = INCBIN_U32("graphics/pokemon/klang/back.4bpp.lz"); + const u32 gMonShinyPalette_Klang[] = INCBIN_U32("graphics/pokemon/klang/shiny.gbapal.lz"); + const u8 gMonIcon_Klang[] = INCBIN_U8("graphics/pokemon/klang/icon.4bpp"); + const u8 gMonFootprint_Klang[] = INCBIN_U8("graphics/pokemon/klang/footprint.1bpp"); + + const u32 gMonFrontPic_Klinklang[] = INCBIN_U32("graphics/pokemon/klinklang/anim_front.4bpp.lz"); + const u32 gMonPalette_Klinklang[] = INCBIN_U32("graphics/pokemon/klinklang/normal.gbapal.lz"); + const u32 gMonBackPic_Klinklang[] = INCBIN_U32("graphics/pokemon/klinklang/back.4bpp.lz"); + const u32 gMonShinyPalette_Klinklang[] = INCBIN_U32("graphics/pokemon/klinklang/shiny.gbapal.lz"); + const u8 gMonIcon_Klinklang[] = INCBIN_U8("graphics/pokemon/klinklang/icon.4bpp"); + const u8 gMonFootprint_Klinklang[] = INCBIN_U8("graphics/pokemon/klinklang/footprint.1bpp"); +#endif //P_FAMILY_KLINK + +#if P_FAMILY_TYNAMO + const u32 gMonFrontPic_Tynamo[] = INCBIN_U32("graphics/pokemon/tynamo/anim_front.4bpp.lz"); + const u32 gMonPalette_Tynamo[] = INCBIN_U32("graphics/pokemon/tynamo/normal.gbapal.lz"); + const u32 gMonBackPic_Tynamo[] = INCBIN_U32("graphics/pokemon/tynamo/back.4bpp.lz"); + const u32 gMonShinyPalette_Tynamo[] = INCBIN_U32("graphics/pokemon/tynamo/shiny.gbapal.lz"); + const u8 gMonIcon_Tynamo[] = INCBIN_U8("graphics/pokemon/tynamo/icon.4bpp"); + const u8 gMonFootprint_Tynamo[] = INCBIN_U8("graphics/pokemon/tynamo/footprint.1bpp"); + + const u32 gMonFrontPic_Eelektrik[] = INCBIN_U32("graphics/pokemon/eelektrik/anim_front.4bpp.lz"); + const u32 gMonPalette_Eelektrik[] = INCBIN_U32("graphics/pokemon/eelektrik/normal.gbapal.lz"); + const u32 gMonBackPic_Eelektrik[] = INCBIN_U32("graphics/pokemon/eelektrik/back.4bpp.lz"); + const u32 gMonShinyPalette_Eelektrik[] = INCBIN_U32("graphics/pokemon/eelektrik/shiny.gbapal.lz"); + const u8 gMonIcon_Eelektrik[] = INCBIN_U8("graphics/pokemon/eelektrik/icon.4bpp"); + const u8 gMonFootprint_Eelektrik[] = INCBIN_U8("graphics/pokemon/eelektrik/footprint.1bpp"); + + const u32 gMonFrontPic_Eelektross[] = INCBIN_U32("graphics/pokemon/eelektross/anim_front.4bpp.lz"); + const u32 gMonPalette_Eelektross[] = INCBIN_U32("graphics/pokemon/eelektross/normal.gbapal.lz"); + const u32 gMonBackPic_Eelektross[] = INCBIN_U32("graphics/pokemon/eelektross/back.4bpp.lz"); + const u32 gMonShinyPalette_Eelektross[] = INCBIN_U32("graphics/pokemon/eelektross/shiny.gbapal.lz"); + const u8 gMonIcon_Eelektross[] = INCBIN_U8("graphics/pokemon/eelektross/icon.4bpp"); + const u8 gMonFootprint_Eelektross[] = INCBIN_U8("graphics/pokemon/eelektross/footprint.1bpp"); +#endif //P_FAMILY_TYNAMO + +#if P_FAMILY_ELGYEM + const u32 gMonFrontPic_Elgyem[] = INCBIN_U32("graphics/pokemon/elgyem/anim_front.4bpp.lz"); + const u32 gMonPalette_Elgyem[] = INCBIN_U32("graphics/pokemon/elgyem/normal.gbapal.lz"); + const u32 gMonBackPic_Elgyem[] = INCBIN_U32("graphics/pokemon/elgyem/back.4bpp.lz"); + const u32 gMonShinyPalette_Elgyem[] = INCBIN_U32("graphics/pokemon/elgyem/shiny.gbapal.lz"); + const u8 gMonIcon_Elgyem[] = INCBIN_U8("graphics/pokemon/elgyem/icon.4bpp"); + const u8 gMonFootprint_Elgyem[] = INCBIN_U8("graphics/pokemon/elgyem/footprint.1bpp"); + + const u32 gMonFrontPic_Beheeyem[] = INCBIN_U32("graphics/pokemon/beheeyem/anim_front.4bpp.lz"); + const u32 gMonPalette_Beheeyem[] = INCBIN_U32("graphics/pokemon/beheeyem/normal.gbapal.lz"); + const u32 gMonBackPic_Beheeyem[] = INCBIN_U32("graphics/pokemon/beheeyem/back.4bpp.lz"); + const u32 gMonShinyPalette_Beheeyem[] = INCBIN_U32("graphics/pokemon/beheeyem/shiny.gbapal.lz"); + const u8 gMonIcon_Beheeyem[] = INCBIN_U8("graphics/pokemon/beheeyem/icon.4bpp"); + const u8 gMonFootprint_Beheeyem[] = INCBIN_U8("graphics/pokemon/beheeyem/footprint.1bpp"); +#endif //P_FAMILY_ELGYEM + +#if P_FAMILY_LITWICK + const u32 gMonFrontPic_Litwick[] = INCBIN_U32("graphics/pokemon/litwick/anim_front.4bpp.lz"); + const u32 gMonPalette_Litwick[] = INCBIN_U32("graphics/pokemon/litwick/normal.gbapal.lz"); + const u32 gMonBackPic_Litwick[] = INCBIN_U32("graphics/pokemon/litwick/back.4bpp.lz"); + const u32 gMonShinyPalette_Litwick[] = INCBIN_U32("graphics/pokemon/litwick/shiny.gbapal.lz"); + const u8 gMonIcon_Litwick[] = INCBIN_U8("graphics/pokemon/litwick/icon.4bpp"); + const u8 gMonFootprint_Litwick[] = INCBIN_U8("graphics/pokemon/litwick/footprint.1bpp"); + + const u32 gMonFrontPic_Lampent[] = INCBIN_U32("graphics/pokemon/lampent/anim_front.4bpp.lz"); + const u32 gMonPalette_Lampent[] = INCBIN_U32("graphics/pokemon/lampent/normal.gbapal.lz"); + const u32 gMonBackPic_Lampent[] = INCBIN_U32("graphics/pokemon/lampent/back.4bpp.lz"); + const u32 gMonShinyPalette_Lampent[] = INCBIN_U32("graphics/pokemon/lampent/shiny.gbapal.lz"); + const u8 gMonIcon_Lampent[] = INCBIN_U8("graphics/pokemon/lampent/icon.4bpp"); + const u8 gMonFootprint_Lampent[] = INCBIN_U8("graphics/pokemon/lampent/footprint.1bpp"); + + const u32 gMonFrontPic_Chandelure[] = INCBIN_U32("graphics/pokemon/chandelure/anim_front.4bpp.lz"); + const u32 gMonPalette_Chandelure[] = INCBIN_U32("graphics/pokemon/chandelure/normal.gbapal.lz"); + const u32 gMonBackPic_Chandelure[] = INCBIN_U32("graphics/pokemon/chandelure/back.4bpp.lz"); + const u32 gMonShinyPalette_Chandelure[] = INCBIN_U32("graphics/pokemon/chandelure/shiny.gbapal.lz"); + const u8 gMonIcon_Chandelure[] = INCBIN_U8("graphics/pokemon/chandelure/icon.4bpp"); + const u8 gMonFootprint_Chandelure[] = INCBIN_U8("graphics/pokemon/chandelure/footprint.1bpp"); +#endif //P_FAMILY_LITWICK + +#if P_FAMILY_AXEW + const u32 gMonFrontPic_Axew[] = INCBIN_U32("graphics/pokemon/axew/anim_front.4bpp.lz"); + const u32 gMonPalette_Axew[] = INCBIN_U32("graphics/pokemon/axew/normal.gbapal.lz"); + const u32 gMonBackPic_Axew[] = INCBIN_U32("graphics/pokemon/axew/back.4bpp.lz"); + const u32 gMonShinyPalette_Axew[] = INCBIN_U32("graphics/pokemon/axew/shiny.gbapal.lz"); + const u8 gMonIcon_Axew[] = INCBIN_U8("graphics/pokemon/axew/icon.4bpp"); + const u8 gMonFootprint_Axew[] = INCBIN_U8("graphics/pokemon/axew/footprint.1bpp"); + + const u32 gMonFrontPic_Fraxure[] = INCBIN_U32("graphics/pokemon/fraxure/anim_front.4bpp.lz"); + const u32 gMonPalette_Fraxure[] = INCBIN_U32("graphics/pokemon/fraxure/normal.gbapal.lz"); + const u32 gMonBackPic_Fraxure[] = INCBIN_U32("graphics/pokemon/fraxure/back.4bpp.lz"); + const u32 gMonShinyPalette_Fraxure[] = INCBIN_U32("graphics/pokemon/fraxure/shiny.gbapal.lz"); + const u8 gMonIcon_Fraxure[] = INCBIN_U8("graphics/pokemon/fraxure/icon.4bpp"); + const u8 gMonFootprint_Fraxure[] = INCBIN_U8("graphics/pokemon/fraxure/footprint.1bpp"); + + const u32 gMonFrontPic_Haxorus[] = INCBIN_U32("graphics/pokemon/haxorus/anim_front.4bpp.lz"); + const u32 gMonPalette_Haxorus[] = INCBIN_U32("graphics/pokemon/haxorus/normal.gbapal.lz"); + const u32 gMonBackPic_Haxorus[] = INCBIN_U32("graphics/pokemon/haxorus/back.4bpp.lz"); + const u32 gMonShinyPalette_Haxorus[] = INCBIN_U32("graphics/pokemon/haxorus/shiny.gbapal.lz"); + const u8 gMonIcon_Haxorus[] = INCBIN_U8("graphics/pokemon/haxorus/icon.4bpp"); + const u8 gMonFootprint_Haxorus[] = INCBIN_U8("graphics/pokemon/haxorus/footprint.1bpp"); +#endif //P_FAMILY_AXEW + +#if P_FAMILY_CUBCHOO + const u32 gMonFrontPic_Cubchoo[] = INCBIN_U32("graphics/pokemon/cubchoo/anim_front.4bpp.lz"); + const u32 gMonPalette_Cubchoo[] = INCBIN_U32("graphics/pokemon/cubchoo/normal.gbapal.lz"); + const u32 gMonBackPic_Cubchoo[] = INCBIN_U32("graphics/pokemon/cubchoo/back.4bpp.lz"); + const u32 gMonShinyPalette_Cubchoo[] = INCBIN_U32("graphics/pokemon/cubchoo/shiny.gbapal.lz"); + const u8 gMonIcon_Cubchoo[] = INCBIN_U8("graphics/pokemon/cubchoo/icon.4bpp"); + const u8 gMonFootprint_Cubchoo[] = INCBIN_U8("graphics/pokemon/cubchoo/footprint.1bpp"); + + const u32 gMonFrontPic_Beartic[] = INCBIN_U32("graphics/pokemon/beartic/anim_front.4bpp.lz"); + const u32 gMonPalette_Beartic[] = INCBIN_U32("graphics/pokemon/beartic/normal.gbapal.lz"); + const u32 gMonBackPic_Beartic[] = INCBIN_U32("graphics/pokemon/beartic/back.4bpp.lz"); + const u32 gMonShinyPalette_Beartic[] = INCBIN_U32("graphics/pokemon/beartic/shiny.gbapal.lz"); + const u8 gMonIcon_Beartic[] = INCBIN_U8("graphics/pokemon/beartic/icon.4bpp"); + const u8 gMonFootprint_Beartic[] = INCBIN_U8("graphics/pokemon/beartic/footprint.1bpp"); +#endif //P_FAMILY_CUBCHOO + +#if P_FAMILY_CRYOGONAL + const u32 gMonFrontPic_Cryogonal[] = INCBIN_U32("graphics/pokemon/cryogonal/anim_front.4bpp.lz"); + const u32 gMonPalette_Cryogonal[] = INCBIN_U32("graphics/pokemon/cryogonal/normal.gbapal.lz"); + const u32 gMonBackPic_Cryogonal[] = INCBIN_U32("graphics/pokemon/cryogonal/back.4bpp.lz"); + const u32 gMonShinyPalette_Cryogonal[] = INCBIN_U32("graphics/pokemon/cryogonal/shiny.gbapal.lz"); + const u8 gMonIcon_Cryogonal[] = INCBIN_U8("graphics/pokemon/cryogonal/icon.4bpp"); + const u8 gMonFootprint_Cryogonal[] = INCBIN_U8("graphics/pokemon/cryogonal/footprint.1bpp"); +#endif //P_FAMILY_CRYOGONAL + +#if P_FAMILY_SHELMET + const u32 gMonFrontPic_Shelmet[] = INCBIN_U32("graphics/pokemon/shelmet/anim_front.4bpp.lz"); + const u32 gMonPalette_Shelmet[] = INCBIN_U32("graphics/pokemon/shelmet/normal.gbapal.lz"); + const u32 gMonBackPic_Shelmet[] = INCBIN_U32("graphics/pokemon/shelmet/back.4bpp.lz"); + const u32 gMonShinyPalette_Shelmet[] = INCBIN_U32("graphics/pokemon/shelmet/shiny.gbapal.lz"); + const u8 gMonIcon_Shelmet[] = INCBIN_U8("graphics/pokemon/shelmet/icon.4bpp"); + const u8 gMonFootprint_Shelmet[] = INCBIN_U8("graphics/pokemon/shelmet/footprint.1bpp"); + + const u32 gMonFrontPic_Accelgor[] = INCBIN_U32("graphics/pokemon/accelgor/anim_front.4bpp.lz"); + const u32 gMonPalette_Accelgor[] = INCBIN_U32("graphics/pokemon/accelgor/normal.gbapal.lz"); + const u32 gMonBackPic_Accelgor[] = INCBIN_U32("graphics/pokemon/accelgor/back.4bpp.lz"); + const u32 gMonShinyPalette_Accelgor[] = INCBIN_U32("graphics/pokemon/accelgor/shiny.gbapal.lz"); + const u8 gMonIcon_Accelgor[] = INCBIN_U8("graphics/pokemon/accelgor/icon.4bpp"); + const u8 gMonFootprint_Accelgor[] = INCBIN_U8("graphics/pokemon/accelgor/footprint.1bpp"); +#endif //P_FAMILY_SHELMET + +#if P_FAMILY_STUNFISK + const u32 gMonFrontPic_Stunfisk[] = INCBIN_U32("graphics/pokemon/stunfisk/anim_front.4bpp.lz"); + const u32 gMonPalette_Stunfisk[] = INCBIN_U32("graphics/pokemon/stunfisk/normal.gbapal.lz"); + const u32 gMonBackPic_Stunfisk[] = INCBIN_U32("graphics/pokemon/stunfisk/back.4bpp.lz"); + const u32 gMonShinyPalette_Stunfisk[] = INCBIN_U32("graphics/pokemon/stunfisk/shiny.gbapal.lz"); + const u8 gMonIcon_Stunfisk[] = INCBIN_U8("graphics/pokemon/stunfisk/icon.4bpp"); + const u8 gMonFootprint_Stunfisk[] = INCBIN_U8("graphics/pokemon/stunfisk/footprint.1bpp"); + +#if P_GALARIAN_FORMS + const u32 gMonFrontPic_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/front.4bpp.lz"); + const u32 gMonPalette_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/normal.gbapal.lz"); + const u32 gMonBackPic_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/back.4bpp.lz"); + const u32 gMonShinyPalette_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/shiny.gbapal.lz"); + const u8 gMonIcon_StunfiskGalarian[] = INCBIN_U8("graphics/pokemon/stunfisk/galarian/icon.4bpp"); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_STUNFISK + +#if P_FAMILY_MIENFOO + const u32 gMonFrontPic_Mienfoo[] = INCBIN_U32("graphics/pokemon/mienfoo/anim_front.4bpp.lz"); + const u32 gMonPalette_Mienfoo[] = INCBIN_U32("graphics/pokemon/mienfoo/normal.gbapal.lz"); + const u32 gMonBackPic_Mienfoo[] = INCBIN_U32("graphics/pokemon/mienfoo/back.4bpp.lz"); + const u32 gMonShinyPalette_Mienfoo[] = INCBIN_U32("graphics/pokemon/mienfoo/shiny.gbapal.lz"); + const u8 gMonIcon_Mienfoo[] = INCBIN_U8("graphics/pokemon/mienfoo/icon.4bpp"); + const u8 gMonFootprint_Mienfoo[] = INCBIN_U8("graphics/pokemon/mienfoo/footprint.1bpp"); + + const u32 gMonFrontPic_Mienshao[] = INCBIN_U32("graphics/pokemon/mienshao/anim_front.4bpp.lz"); + const u32 gMonPalette_Mienshao[] = INCBIN_U32("graphics/pokemon/mienshao/normal.gbapal.lz"); + const u32 gMonBackPic_Mienshao[] = INCBIN_U32("graphics/pokemon/mienshao/back.4bpp.lz"); + const u32 gMonShinyPalette_Mienshao[] = INCBIN_U32("graphics/pokemon/mienshao/shiny.gbapal.lz"); + const u8 gMonIcon_Mienshao[] = INCBIN_U8("graphics/pokemon/mienshao/icon.4bpp"); + const u8 gMonFootprint_Mienshao[] = INCBIN_U8("graphics/pokemon/mienshao/footprint.1bpp"); +#endif //P_FAMILY_MIENFOO + +#if P_FAMILY_DRUDDIGON + const u32 gMonFrontPic_Druddigon[] = INCBIN_U32("graphics/pokemon/druddigon/anim_front.4bpp.lz"); + const u32 gMonPalette_Druddigon[] = INCBIN_U32("graphics/pokemon/druddigon/normal.gbapal.lz"); + const u32 gMonBackPic_Druddigon[] = INCBIN_U32("graphics/pokemon/druddigon/back.4bpp.lz"); + const u32 gMonShinyPalette_Druddigon[] = INCBIN_U32("graphics/pokemon/druddigon/shiny.gbapal.lz"); + const u8 gMonIcon_Druddigon[] = INCBIN_U8("graphics/pokemon/druddigon/icon.4bpp"); + const u8 gMonFootprint_Druddigon[] = INCBIN_U8("graphics/pokemon/druddigon/footprint.1bpp"); +#endif //P_FAMILY_DRUDDIGON + +#if P_FAMILY_GOLETT + const u32 gMonFrontPic_Golett[] = INCBIN_U32("graphics/pokemon/golett/anim_front.4bpp.lz"); + const u32 gMonPalette_Golett[] = INCBIN_U32("graphics/pokemon/golett/normal.gbapal.lz"); + const u32 gMonBackPic_Golett[] = INCBIN_U32("graphics/pokemon/golett/back.4bpp.lz"); + const u32 gMonShinyPalette_Golett[] = INCBIN_U32("graphics/pokemon/golett/shiny.gbapal.lz"); + const u8 gMonIcon_Golett[] = INCBIN_U8("graphics/pokemon/golett/icon.4bpp"); + const u8 gMonFootprint_Golett[] = INCBIN_U8("graphics/pokemon/golett/footprint.1bpp"); + + const u32 gMonFrontPic_Golurk[] = INCBIN_U32("graphics/pokemon/golurk/anim_front.4bpp.lz"); + const u32 gMonPalette_Golurk[] = INCBIN_U32("graphics/pokemon/golurk/normal.gbapal.lz"); + const u32 gMonBackPic_Golurk[] = INCBIN_U32("graphics/pokemon/golurk/back.4bpp.lz"); + const u32 gMonShinyPalette_Golurk[] = INCBIN_U32("graphics/pokemon/golurk/shiny.gbapal.lz"); + const u8 gMonIcon_Golurk[] = INCBIN_U8("graphics/pokemon/golurk/icon.4bpp"); + const u8 gMonFootprint_Golurk[] = INCBIN_U8("graphics/pokemon/golurk/footprint.1bpp"); +#endif //P_FAMILY_GOLETT + +#if P_FAMILY_PAWNIARD + const u32 gMonFrontPic_Pawniard[] = INCBIN_U32("graphics/pokemon/pawniard/anim_front.4bpp.lz"); + const u32 gMonPalette_Pawniard[] = INCBIN_U32("graphics/pokemon/pawniard/normal.gbapal.lz"); + const u32 gMonBackPic_Pawniard[] = INCBIN_U32("graphics/pokemon/pawniard/back.4bpp.lz"); + const u32 gMonShinyPalette_Pawniard[] = INCBIN_U32("graphics/pokemon/pawniard/shiny.gbapal.lz"); + const u8 gMonIcon_Pawniard[] = INCBIN_U8("graphics/pokemon/pawniard/icon.4bpp"); + const u8 gMonFootprint_Pawniard[] = INCBIN_U8("graphics/pokemon/pawniard/footprint.1bpp"); + + const u32 gMonFrontPic_Bisharp[] = INCBIN_U32("graphics/pokemon/bisharp/anim_front.4bpp.lz"); + const u32 gMonPalette_Bisharp[] = INCBIN_U32("graphics/pokemon/bisharp/normal.gbapal.lz"); + const u32 gMonBackPic_Bisharp[] = INCBIN_U32("graphics/pokemon/bisharp/back.4bpp.lz"); + const u32 gMonShinyPalette_Bisharp[] = INCBIN_U32("graphics/pokemon/bisharp/shiny.gbapal.lz"); + const u8 gMonIcon_Bisharp[] = INCBIN_U8("graphics/pokemon/bisharp/icon.4bpp"); + const u8 gMonFootprint_Bisharp[] = INCBIN_U8("graphics/pokemon/bisharp/footprint.1bpp"); + +#if P_GEN_9_CROSS_EVOS + const u32 gMonFrontPic_Kingambit[] = INCBIN_U32("graphics/pokemon/kingambit/front.4bpp.lz"); + const u32 gMonPalette_Kingambit[] = INCBIN_U32("graphics/pokemon/kingambit/normal.gbapal.lz"); + const u32 gMonBackPic_Kingambit[] = INCBIN_U32("graphics/pokemon/kingambit/back.4bpp.lz"); + const u32 gMonShinyPalette_Kingambit[] = INCBIN_U32("graphics/pokemon/kingambit/shiny.gbapal.lz"); + const u8 gMonIcon_Kingambit[] = INCBIN_U8("graphics/pokemon/kingambit/icon.4bpp"); + // const u8 gMonFootprint_Kingambit[] = INCBIN_U8("graphics/pokemon/kingambit/footprint.1bpp"); +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_PAWNIARD + +#if P_FAMILY_BOUFFALANT + const u32 gMonFrontPic_Bouffalant[] = INCBIN_U32("graphics/pokemon/bouffalant/anim_front.4bpp.lz"); + const u32 gMonPalette_Bouffalant[] = INCBIN_U32("graphics/pokemon/bouffalant/normal.gbapal.lz"); + const u32 gMonBackPic_Bouffalant[] = INCBIN_U32("graphics/pokemon/bouffalant/back.4bpp.lz"); + const u32 gMonShinyPalette_Bouffalant[] = INCBIN_U32("graphics/pokemon/bouffalant/shiny.gbapal.lz"); + const u8 gMonIcon_Bouffalant[] = INCBIN_U8("graphics/pokemon/bouffalant/icon.4bpp"); + const u8 gMonFootprint_Bouffalant[] = INCBIN_U8("graphics/pokemon/bouffalant/footprint.1bpp"); +#endif //P_FAMILY_BOUFFALANT + +#if P_FAMILY_RUFFLET + const u32 gMonFrontPic_Rufflet[] = INCBIN_U32("graphics/pokemon/rufflet/anim_front.4bpp.lz"); + const u32 gMonPalette_Rufflet[] = INCBIN_U32("graphics/pokemon/rufflet/normal.gbapal.lz"); + const u32 gMonBackPic_Rufflet[] = INCBIN_U32("graphics/pokemon/rufflet/back.4bpp.lz"); + const u32 gMonShinyPalette_Rufflet[] = INCBIN_U32("graphics/pokemon/rufflet/shiny.gbapal.lz"); + const u8 gMonIcon_Rufflet[] = INCBIN_U8("graphics/pokemon/rufflet/icon.4bpp"); + const u8 gMonFootprint_Rufflet[] = INCBIN_U8("graphics/pokemon/rufflet/footprint.1bpp"); + + const u32 gMonFrontPic_Braviary[] = INCBIN_U32("graphics/pokemon/braviary/anim_front.4bpp.lz"); + const u32 gMonPalette_Braviary[] = INCBIN_U32("graphics/pokemon/braviary/normal.gbapal.lz"); + const u32 gMonBackPic_Braviary[] = INCBIN_U32("graphics/pokemon/braviary/back.4bpp.lz"); + const u32 gMonShinyPalette_Braviary[] = INCBIN_U32("graphics/pokemon/braviary/shiny.gbapal.lz"); + const u8 gMonIcon_Braviary[] = INCBIN_U8("graphics/pokemon/braviary/icon.4bpp"); + const u8 gMonFootprint_Braviary[] = INCBIN_U8("graphics/pokemon/braviary/footprint.1bpp"); + +#if P_HISUIAN_FORMS + const u32 gMonFrontPic_BraviaryHisuian[] = INCBIN_U32("graphics/pokemon/braviary/hisuian/front.4bpp.lz"); + const u32 gMonPalette_BraviaryHisuian[] = INCBIN_U32("graphics/pokemon/braviary/hisuian/normal.gbapal.lz"); + const u32 gMonBackPic_BraviaryHisuian[] = INCBIN_U32("graphics/pokemon/braviary/hisuian/back.4bpp.lz"); + const u32 gMonShinyPalette_BraviaryHisuian[] = INCBIN_U32("graphics/pokemon/braviary/hisuian/shiny.gbapal.lz"); + const u8 gMonIcon_BraviaryHisuian[] = INCBIN_U8("graphics/pokemon/braviary/hisuian/icon.4bpp"); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_RUFFLET + +#if P_FAMILY_VULLABY + const u32 gMonFrontPic_Vullaby[] = INCBIN_U32("graphics/pokemon/vullaby/anim_front.4bpp.lz"); + const u32 gMonPalette_Vullaby[] = INCBIN_U32("graphics/pokemon/vullaby/normal.gbapal.lz"); + const u32 gMonBackPic_Vullaby[] = INCBIN_U32("graphics/pokemon/vullaby/back.4bpp.lz"); + const u32 gMonShinyPalette_Vullaby[] = INCBIN_U32("graphics/pokemon/vullaby/shiny.gbapal.lz"); + const u8 gMonIcon_Vullaby[] = INCBIN_U8("graphics/pokemon/vullaby/icon.4bpp"); + const u8 gMonFootprint_Vullaby[] = INCBIN_U8("graphics/pokemon/vullaby/footprint.1bpp"); + + const u32 gMonFrontPic_Mandibuzz[] = INCBIN_U32("graphics/pokemon/mandibuzz/anim_front.4bpp.lz"); + const u32 gMonPalette_Mandibuzz[] = INCBIN_U32("graphics/pokemon/mandibuzz/normal.gbapal.lz"); + const u32 gMonBackPic_Mandibuzz[] = INCBIN_U32("graphics/pokemon/mandibuzz/back.4bpp.lz"); + const u32 gMonShinyPalette_Mandibuzz[] = INCBIN_U32("graphics/pokemon/mandibuzz/shiny.gbapal.lz"); + const u8 gMonIcon_Mandibuzz[] = INCBIN_U8("graphics/pokemon/mandibuzz/icon.4bpp"); + const u8 gMonFootprint_Mandibuzz[] = INCBIN_U8("graphics/pokemon/mandibuzz/footprint.1bpp"); +#endif //P_FAMILY_VULLABY + +#if P_FAMILY_HEATMOR + const u32 gMonFrontPic_Heatmor[] = INCBIN_U32("graphics/pokemon/heatmor/anim_front.4bpp.lz"); + const u32 gMonPalette_Heatmor[] = INCBIN_U32("graphics/pokemon/heatmor/normal.gbapal.lz"); + const u32 gMonBackPic_Heatmor[] = INCBIN_U32("graphics/pokemon/heatmor/back.4bpp.lz"); + const u32 gMonShinyPalette_Heatmor[] = INCBIN_U32("graphics/pokemon/heatmor/shiny.gbapal.lz"); + const u8 gMonIcon_Heatmor[] = INCBIN_U8("graphics/pokemon/heatmor/icon.4bpp"); + const u8 gMonFootprint_Heatmor[] = INCBIN_U8("graphics/pokemon/heatmor/footprint.1bpp"); +#endif //P_FAMILY_HEATMOR + +#if P_FAMILY_DURANT + const u32 gMonFrontPic_Durant[] = INCBIN_U32("graphics/pokemon/durant/anim_front.4bpp.lz"); + const u32 gMonPalette_Durant[] = INCBIN_U32("graphics/pokemon/durant/normal.gbapal.lz"); + const u32 gMonBackPic_Durant[] = INCBIN_U32("graphics/pokemon/durant/back.4bpp.lz"); + const u32 gMonShinyPalette_Durant[] = INCBIN_U32("graphics/pokemon/durant/shiny.gbapal.lz"); + const u8 gMonIcon_Durant[] = INCBIN_U8("graphics/pokemon/durant/icon.4bpp"); + const u8 gMonFootprint_Durant[] = INCBIN_U8("graphics/pokemon/durant/footprint.1bpp"); +#endif //P_FAMILY_DURANT + +#if P_FAMILY_DEINO + const u32 gMonFrontPic_Deino[] = INCBIN_U32("graphics/pokemon/deino/anim_front.4bpp.lz"); + const u32 gMonPalette_Deino[] = INCBIN_U32("graphics/pokemon/deino/normal.gbapal.lz"); + const u32 gMonBackPic_Deino[] = INCBIN_U32("graphics/pokemon/deino/back.4bpp.lz"); + const u32 gMonShinyPalette_Deino[] = INCBIN_U32("graphics/pokemon/deino/shiny.gbapal.lz"); + const u8 gMonIcon_Deino[] = INCBIN_U8("graphics/pokemon/deino/icon.4bpp"); + const u8 gMonFootprint_Deino[] = INCBIN_U8("graphics/pokemon/deino/footprint.1bpp"); + + const u32 gMonFrontPic_Zweilous[] = INCBIN_U32("graphics/pokemon/zweilous/anim_front.4bpp.lz"); + const u32 gMonPalette_Zweilous[] = INCBIN_U32("graphics/pokemon/zweilous/normal.gbapal.lz"); + const u32 gMonBackPic_Zweilous[] = INCBIN_U32("graphics/pokemon/zweilous/back.4bpp.lz"); + const u32 gMonShinyPalette_Zweilous[] = INCBIN_U32("graphics/pokemon/zweilous/shiny.gbapal.lz"); + const u8 gMonIcon_Zweilous[] = INCBIN_U8("graphics/pokemon/zweilous/icon.4bpp"); + const u8 gMonFootprint_Zweilous[] = INCBIN_U8("graphics/pokemon/zweilous/footprint.1bpp"); + + const u32 gMonFrontPic_Hydreigon[] = INCBIN_U32("graphics/pokemon/hydreigon/anim_front.4bpp.lz"); + const u32 gMonPalette_Hydreigon[] = INCBIN_U32("graphics/pokemon/hydreigon/normal.gbapal.lz"); + const u32 gMonBackPic_Hydreigon[] = INCBIN_U32("graphics/pokemon/hydreigon/back.4bpp.lz"); + const u32 gMonShinyPalette_Hydreigon[] = INCBIN_U32("graphics/pokemon/hydreigon/shiny.gbapal.lz"); + const u8 gMonIcon_Hydreigon[] = INCBIN_U8("graphics/pokemon/hydreigon/icon.4bpp"); + const u8 gMonFootprint_Hydreigon[] = INCBIN_U8("graphics/pokemon/hydreigon/footprint.1bpp"); +#endif //P_FAMILY_DEINO + +#if P_FAMILY_LARVESTA + const u32 gMonFrontPic_Larvesta[] = INCBIN_U32("graphics/pokemon/larvesta/anim_front.4bpp.lz"); + const u32 gMonPalette_Larvesta[] = INCBIN_U32("graphics/pokemon/larvesta/normal.gbapal.lz"); + const u32 gMonBackPic_Larvesta[] = INCBIN_U32("graphics/pokemon/larvesta/back.4bpp.lz"); + const u32 gMonShinyPalette_Larvesta[] = INCBIN_U32("graphics/pokemon/larvesta/shiny.gbapal.lz"); + const u8 gMonIcon_Larvesta[] = INCBIN_U8("graphics/pokemon/larvesta/icon.4bpp"); + const u8 gMonFootprint_Larvesta[] = INCBIN_U8("graphics/pokemon/larvesta/footprint.1bpp"); + + const u32 gMonFrontPic_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/anim_front.4bpp.lz"); + const u32 gMonPalette_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/normal.gbapal.lz"); + const u32 gMonBackPic_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/back.4bpp.lz"); + const u32 gMonShinyPalette_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/shiny.gbapal.lz"); + const u8 gMonIcon_Volcarona[] = INCBIN_U8("graphics/pokemon/volcarona/icon.4bpp"); + const u8 gMonFootprint_Volcarona[] = INCBIN_U8("graphics/pokemon/volcarona/footprint.1bpp"); +#endif //P_FAMILY_LARVESTA + +#if P_FAMILY_COBALION + const u32 gMonFrontPic_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/anim_front.4bpp.lz"); + const u32 gMonPalette_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/normal.gbapal.lz"); + const u32 gMonBackPic_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/back.4bpp.lz"); + const u32 gMonShinyPalette_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/shiny.gbapal.lz"); + const u8 gMonIcon_Cobalion[] = INCBIN_U8("graphics/pokemon/cobalion/icon.4bpp"); + const u8 gMonFootprint_Cobalion[] = INCBIN_U8("graphics/pokemon/cobalion/footprint.1bpp"); +#endif //P_FAMILY_COBALION + +#if P_FAMILY_TERRAKION + const u32 gMonFrontPic_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/anim_front.4bpp.lz"); + const u32 gMonPalette_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/normal.gbapal.lz"); + const u32 gMonBackPic_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/back.4bpp.lz"); + const u32 gMonShinyPalette_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/shiny.gbapal.lz"); + const u8 gMonIcon_Terrakion[] = INCBIN_U8("graphics/pokemon/terrakion/icon.4bpp"); + const u8 gMonFootprint_Terrakion[] = INCBIN_U8("graphics/pokemon/terrakion/footprint.1bpp"); +#endif //P_FAMILY_TERRAKION + +#if P_FAMILY_VIRIZION + const u32 gMonFrontPic_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/anim_front.4bpp.lz"); + const u32 gMonPalette_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/normal.gbapal.lz"); + const u32 gMonBackPic_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/back.4bpp.lz"); + const u32 gMonShinyPalette_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/shiny.gbapal.lz"); + const u8 gMonIcon_Virizion[] = INCBIN_U8("graphics/pokemon/virizion/icon.4bpp"); + const u8 gMonFootprint_Virizion[] = INCBIN_U8("graphics/pokemon/virizion/footprint.1bpp"); +#endif //P_FAMILY_VIRIZION + +#if P_FAMILY_TORNADUS + const u32 gMonFrontPic_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/anim_front.4bpp.lz"); + const u32 gMonPalette_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/normal.gbapal.lz"); + const u32 gMonBackPic_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/back.4bpp.lz"); + const u32 gMonShinyPalette_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/shiny.gbapal.lz"); + const u8 gMonIcon_TornadusIncarnate[] = INCBIN_U8("graphics/pokemon/tornadus/icon.4bpp"); + const u8 gMonFootprint_Tornadus[] = INCBIN_U8("graphics/pokemon/tornadus/footprint.1bpp"); + + const u32 gMonFrontPic_TornadusTherian[] = INCBIN_U32("graphics/pokemon/tornadus/therian/anim_front.4bpp.lz"); + const u32 gMonPalette_TornadusTherian[] = INCBIN_U32("graphics/pokemon/tornadus/therian/normal.gbapal.lz"); + const u32 gMonBackPic_TornadusTherian[] = INCBIN_U32("graphics/pokemon/tornadus/therian/back.4bpp.lz"); + const u32 gMonShinyPalette_TornadusTherian[] = INCBIN_U32("graphics/pokemon/tornadus/therian/shiny.gbapal.lz"); + const u8 gMonIcon_TornadusTherian[] = INCBIN_U8("graphics/pokemon/tornadus/therian/icon.4bpp"); +#endif //P_FAMILY_TORNADUS + +#if P_FAMILY_THUNDURUS + const u32 gMonFrontPic_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/anim_front.4bpp.lz"); + const u32 gMonPalette_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/normal.gbapal.lz"); + const u32 gMonBackPic_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/back.4bpp.lz"); + const u32 gMonShinyPalette_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/shiny.gbapal.lz"); + const u8 gMonIcon_ThundurusIncarnate[] = INCBIN_U8("graphics/pokemon/thundurus/icon.4bpp"); + const u8 gMonFootprint_Thundurus[] = INCBIN_U8("graphics/pokemon/thundurus/footprint.1bpp"); + + const u32 gMonFrontPic_ThundurusTherian[] = INCBIN_U32("graphics/pokemon/thundurus/therian/anim_front.4bpp.lz"); + const u32 gMonPalette_ThundurusTherian[] = INCBIN_U32("graphics/pokemon/thundurus/therian/normal.gbapal.lz"); + const u32 gMonBackPic_ThundurusTherian[] = INCBIN_U32("graphics/pokemon/thundurus/therian/back.4bpp.lz"); + const u32 gMonShinyPalette_ThundurusTherian[] = INCBIN_U32("graphics/pokemon/thundurus/therian/shiny.gbapal.lz"); + const u8 gMonIcon_ThundurusTherian[] = INCBIN_U8("graphics/pokemon/thundurus/therian/icon.4bpp"); +#endif //P_FAMILY_THUNDURUS + +#if P_FAMILY_RESHIRAM + const u32 gMonFrontPic_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/anim_front.4bpp.lz"); + const u32 gMonPalette_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/normal.gbapal.lz"); + const u32 gMonBackPic_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/back.4bpp.lz"); + const u32 gMonShinyPalette_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/shiny.gbapal.lz"); + const u8 gMonIcon_Reshiram[] = INCBIN_U8("graphics/pokemon/reshiram/icon.4bpp"); + const u8 gMonFootprint_Reshiram[] = INCBIN_U8("graphics/pokemon/reshiram/footprint.1bpp"); +#endif //P_FAMILY_RESHIRAM + +#if P_FAMILY_ZEKROM + const u32 gMonFrontPic_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/anim_front.4bpp.lz"); + const u32 gMonPalette_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/normal.gbapal.lz"); + const u32 gMonBackPic_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/back.4bpp.lz"); + const u32 gMonShinyPalette_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/shiny.gbapal.lz"); + const u8 gMonIcon_Zekrom[] = INCBIN_U8("graphics/pokemon/zekrom/icon.4bpp"); + const u8 gMonFootprint_Zekrom[] = INCBIN_U8("graphics/pokemon/zekrom/footprint.1bpp"); +#endif //P_FAMILY_ZEKROM + +#if P_FAMILY_LANDORUS + const u32 gMonFrontPic_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/anim_front.4bpp.lz"); + const u32 gMonPalette_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/normal.gbapal.lz"); + const u32 gMonBackPic_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/back.4bpp.lz"); + const u32 gMonShinyPalette_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/shiny.gbapal.lz"); + const u8 gMonIcon_LandorusIncarnate[] = INCBIN_U8("graphics/pokemon/landorus/icon.4bpp"); + const u8 gMonFootprint_Landorus[] = INCBIN_U8("graphics/pokemon/landorus/footprint.1bpp"); + + const u32 gMonFrontPic_LandorusTherian[] = INCBIN_U32("graphics/pokemon/landorus/therian/anim_front.4bpp.lz"); + const u32 gMonPalette_LandorusTherian[] = INCBIN_U32("graphics/pokemon/landorus/therian/normal.gbapal.lz"); + const u32 gMonBackPic_LandorusTherian[] = INCBIN_U32("graphics/pokemon/landorus/therian/back.4bpp.lz"); + const u32 gMonShinyPalette_LandorusTherian[] = INCBIN_U32("graphics/pokemon/landorus/therian/shiny.gbapal.lz"); + const u8 gMonIcon_LandorusTherian[] = INCBIN_U8("graphics/pokemon/landorus/therian/icon.4bpp"); +#endif //P_FAMILY_LANDORUS + +#if P_FAMILY_ENAMORUS + const u32 gMonFrontPic_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/front.4bpp.lz"); + const u32 gMonPalette_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/normal.gbapal.lz"); + const u32 gMonBackPic_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/back.4bpp.lz"); + const u32 gMonShinyPalette_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/shiny.gbapal.lz"); + const u8 gMonIcon_EnamorusIncarnate[] = INCBIN_U8("graphics/pokemon/enamorus/icon.4bpp"); + //const u8 gMonFootprint_Enamorus[] = INCBIN_U8("graphics/pokemon/enamorus/footprint.1bpp"); + + const u32 gMonFrontPic_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/front.4bpp.lz"); + const u32 gMonPalette_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/normal.gbapal.lz"); + const u32 gMonBackPic_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/back.4bpp.lz"); + const u32 gMonShinyPalette_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/shiny.gbapal.lz"); + const u8 gMonIcon_EnamorusTherian[] = INCBIN_U8("graphics/pokemon/enamorus/therian/icon.4bpp"); +#endif //P_FAMILY_ENAMORUS + +#if P_FAMILY_KYUREM + const u32 gMonFrontPic_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/anim_front.4bpp.lz"); + const u32 gMonPalette_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/normal.gbapal.lz"); + const u32 gMonBackPic_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/back.4bpp.lz"); + const u32 gMonShinyPalette_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/shiny.gbapal.lz"); + const u8 gMonIcon_Kyurem[] = INCBIN_U8("graphics/pokemon/kyurem/icon.4bpp"); + const u8 gMonFootprint_Kyurem[] = INCBIN_U8("graphics/pokemon/kyurem/footprint.1bpp"); + +#if P_FUSION_FORMS + const u32 gMonFrontPic_KyuremWhite[] = INCBIN_U32("graphics/pokemon/kyurem/white/anim_front.4bpp.lz"); + const u32 gMonPalette_KyuremWhite[] = INCBIN_U32("graphics/pokemon/kyurem/white/normal.gbapal.lz"); + const u32 gMonBackPic_KyuremWhite[] = INCBIN_U32("graphics/pokemon/kyurem/white/back.4bpp.lz"); + const u32 gMonShinyPalette_KyuremWhite[] = INCBIN_U32("graphics/pokemon/kyurem/white/shiny.gbapal.lz"); + const u8 gMonIcon_KyuremWhite[] = INCBIN_U8("graphics/pokemon/kyurem/white/icon.4bpp"); + + const u32 gMonFrontPic_KyuremBlack[] = INCBIN_U32("graphics/pokemon/kyurem/black/anim_front.4bpp.lz"); + const u32 gMonPalette_KyuremBlack[] = INCBIN_U32("graphics/pokemon/kyurem/black/normal.gbapal.lz"); + const u32 gMonBackPic_KyuremBlack[] = INCBIN_U32("graphics/pokemon/kyurem/black/back.4bpp.lz"); + const u32 gMonShinyPalette_KyuremBlack[] = INCBIN_U32("graphics/pokemon/kyurem/black/shiny.gbapal.lz"); + const u8 gMonIcon_KyuremBlack[] = INCBIN_U8("graphics/pokemon/kyurem/black/icon.4bpp"); +#endif //P_FUSION_FORMS +#endif //P_FAMILY_KYUREM + +#if P_FAMILY_KELDEO + const u32 gMonFrontPic_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/anim_front.4bpp.lz"); + const u32 gMonPalette_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/normal.gbapal.lz"); + const u32 gMonBackPic_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/back.4bpp.lz"); + const u32 gMonShinyPalette_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/shiny.gbapal.lz"); + const u8 gMonIcon_KeldeoOrdinary[] = INCBIN_U8("graphics/pokemon/keldeo/icon.4bpp"); + const u8 gMonFootprint_Keldeo[] = INCBIN_U8("graphics/pokemon/keldeo/footprint.1bpp"); + + const u32 gMonFrontPic_KeldeoResolute[] = INCBIN_U32("graphics/pokemon/keldeo/resolute/front.4bpp.lz"); + const u32 gMonPalette_KeldeoResolute[] = INCBIN_U32("graphics/pokemon/keldeo/resolute/normal.gbapal.lz"); + const u32 gMonBackPic_KeldeoResolute[] = INCBIN_U32("graphics/pokemon/keldeo/resolute/back.4bpp.lz"); + const u32 gMonShinyPalette_KeldeoResolute[] = INCBIN_U32("graphics/pokemon/keldeo/resolute/shiny.gbapal.lz"); + const u8 gMonIcon_KeldeoResolute[] = INCBIN_U8("graphics/pokemon/keldeo/resolute/icon.4bpp"); +#endif //P_FAMILY_KELDEO + +#if P_FAMILY_MELOETTA + const u32 gMonFrontPic_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/anim_front.4bpp.lz"); + const u32 gMonPalette_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/normal.gbapal.lz"); + const u32 gMonBackPic_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/back.4bpp.lz"); + const u32 gMonShinyPalette_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/shiny.gbapal.lz"); + const u8 gMonIcon_MeloettaAria[] = INCBIN_U8("graphics/pokemon/meloetta/icon.4bpp"); + const u8 gMonFootprint_Meloetta[] = INCBIN_U8("graphics/pokemon/meloetta/footprint.1bpp"); + + const u32 gMonFrontPic_MeloettaPirouette[] = INCBIN_U32("graphics/pokemon/meloetta/pirouette/front.4bpp.lz"); + const u32 gMonPalette_MeloettaPirouette[] = INCBIN_U32("graphics/pokemon/meloetta/pirouette/normal.gbapal.lz"); + const u32 gMonBackPic_MeloettaPirouette[] = INCBIN_U32("graphics/pokemon/meloetta/pirouette/back.4bpp.lz"); + const u32 gMonShinyPalette_MeloettaPirouette[] = INCBIN_U32("graphics/pokemon/meloetta/pirouette/shiny.gbapal.lz"); + const u8 gMonIcon_MeloettaPirouette[] = INCBIN_U8("graphics/pokemon/meloetta/pirouette/icon.4bpp"); +#endif //P_FAMILY_MELOETTA + +#if P_FAMILY_GENESECT + const u32 gMonFrontPic_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/anim_front.4bpp.lz"); + const u32 gMonPalette_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/normal.gbapal.lz"); + const u32 gMonBackPic_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/back.4bpp.lz"); + const u32 gMonShinyPalette_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/shiny.gbapal.lz"); + const u8 gMonIcon_Genesect[] = INCBIN_U8("graphics/pokemon/genesect/icon.4bpp"); + const u8 gMonFootprint_Genesect[] = INCBIN_U8("graphics/pokemon/genesect/footprint.1bpp"); + + const u32 gMonPalette_GenesectDouseDrive[] = INCBIN_U32("graphics/pokemon/genesect/douse_drive/normal.gbapal.lz"); + const u32 gMonShinyPalette_GenesectDouseDrive[] = INCBIN_U32("graphics/pokemon/genesect/douse_drive/shiny.gbapal.lz"); + + const u32 gMonPalette_GenesectShockDrive[] = INCBIN_U32("graphics/pokemon/genesect/shock_drive/normal.gbapal.lz"); + const u32 gMonShinyPalette_GenesectShockDrive[] = INCBIN_U32("graphics/pokemon/genesect/shock_drive/shiny.gbapal.lz"); + + const u32 gMonPalette_GenesectBurnDrive[] = INCBIN_U32("graphics/pokemon/genesect/burn_drive/normal.gbapal.lz"); + const u32 gMonShinyPalette_GenesectBurnDrive[] = INCBIN_U32("graphics/pokemon/genesect/burn_drive/shiny.gbapal.lz"); + + const u32 gMonPalette_GenesectChillDrive[] = INCBIN_U32("graphics/pokemon/genesect/chill_drive/normal.gbapal.lz"); + const u32 gMonShinyPalette_GenesectChillDrive[] = INCBIN_U32("graphics/pokemon/genesect/chill_drive/shiny.gbapal.lz"); +#endif //P_FAMILY_GENESECT + +#if P_FAMILY_CHESPIN + const u32 gMonFrontPic_Chespin[] = INCBIN_U32("graphics/pokemon/chespin/anim_front.4bpp.lz"); + const u32 gMonPalette_Chespin[] = INCBIN_U32("graphics/pokemon/chespin/normal.gbapal.lz"); + const u32 gMonBackPic_Chespin[] = INCBIN_U32("graphics/pokemon/chespin/back.4bpp.lz"); + const u32 gMonShinyPalette_Chespin[] = INCBIN_U32("graphics/pokemon/chespin/shiny.gbapal.lz"); + const u8 gMonIcon_Chespin[] = INCBIN_U8("graphics/pokemon/chespin/icon.4bpp"); + const u8 gMonFootprint_Chespin[] = INCBIN_U8("graphics/pokemon/chespin/footprint.1bpp"); + + const u32 gMonFrontPic_Quilladin[] = INCBIN_U32("graphics/pokemon/quilladin/anim_front.4bpp.lz"); + const u32 gMonPalette_Quilladin[] = INCBIN_U32("graphics/pokemon/quilladin/normal.gbapal.lz"); + const u32 gMonBackPic_Quilladin[] = INCBIN_U32("graphics/pokemon/quilladin/back.4bpp.lz"); + const u32 gMonShinyPalette_Quilladin[] = INCBIN_U32("graphics/pokemon/quilladin/shiny.gbapal.lz"); + const u8 gMonIcon_Quilladin[] = INCBIN_U8("graphics/pokemon/quilladin/icon.4bpp"); + const u8 gMonFootprint_Quilladin[] = INCBIN_U8("graphics/pokemon/quilladin/footprint.1bpp"); + + const u32 gMonFrontPic_Chesnaught[] = INCBIN_U32("graphics/pokemon/chesnaught/anim_front.4bpp.lz"); + const u32 gMonPalette_Chesnaught[] = INCBIN_U32("graphics/pokemon/chesnaught/normal.gbapal.lz"); + const u32 gMonBackPic_Chesnaught[] = INCBIN_U32("graphics/pokemon/chesnaught/back.4bpp.lz"); + const u32 gMonShinyPalette_Chesnaught[] = INCBIN_U32("graphics/pokemon/chesnaught/shiny.gbapal.lz"); + const u8 gMonIcon_Chesnaught[] = INCBIN_U8("graphics/pokemon/chesnaught/icon.4bpp"); + const u8 gMonFootprint_Chesnaught[] = INCBIN_U8("graphics/pokemon/chesnaught/footprint.1bpp"); +#endif //P_FAMILY_CHESPIN + +#if P_FAMILY_FENNEKIN + const u32 gMonFrontPic_Fennekin[] = INCBIN_U32("graphics/pokemon/fennekin/anim_front.4bpp.lz"); + const u32 gMonPalette_Fennekin[] = INCBIN_U32("graphics/pokemon/fennekin/normal.gbapal.lz"); + const u32 gMonBackPic_Fennekin[] = INCBIN_U32("graphics/pokemon/fennekin/back.4bpp.lz"); + const u32 gMonShinyPalette_Fennekin[] = INCBIN_U32("graphics/pokemon/fennekin/shiny.gbapal.lz"); + const u8 gMonIcon_Fennekin[] = INCBIN_U8("graphics/pokemon/fennekin/icon.4bpp"); + const u8 gMonFootprint_Fennekin[] = INCBIN_U8("graphics/pokemon/fennekin/footprint.1bpp"); + + const u32 gMonFrontPic_Braixen[] = INCBIN_U32("graphics/pokemon/braixen/anim_front.4bpp.lz"); + const u32 gMonPalette_Braixen[] = INCBIN_U32("graphics/pokemon/braixen/normal.gbapal.lz"); + const u32 gMonBackPic_Braixen[] = INCBIN_U32("graphics/pokemon/braixen/back.4bpp.lz"); + const u32 gMonShinyPalette_Braixen[] = INCBIN_U32("graphics/pokemon/braixen/shiny.gbapal.lz"); + const u8 gMonIcon_Braixen[] = INCBIN_U8("graphics/pokemon/braixen/icon.4bpp"); + const u8 gMonFootprint_Braixen[] = INCBIN_U8("graphics/pokemon/braixen/footprint.1bpp"); + + const u32 gMonFrontPic_Delphox[] = INCBIN_U32("graphics/pokemon/delphox/anim_front.4bpp.lz"); + const u32 gMonPalette_Delphox[] = INCBIN_U32("graphics/pokemon/delphox/normal.gbapal.lz"); + const u32 gMonBackPic_Delphox[] = INCBIN_U32("graphics/pokemon/delphox/back.4bpp.lz"); + const u32 gMonShinyPalette_Delphox[] = INCBIN_U32("graphics/pokemon/delphox/shiny.gbapal.lz"); + const u8 gMonIcon_Delphox[] = INCBIN_U8("graphics/pokemon/delphox/icon.4bpp"); + const u8 gMonFootprint_Delphox[] = INCBIN_U8("graphics/pokemon/delphox/footprint.1bpp"); +#endif //P_FAMILY_FENNEKIN + +#if P_FAMILY_FROAKIE + const u32 gMonFrontPic_Froakie[] = INCBIN_U32("graphics/pokemon/froakie/anim_front.4bpp.lz"); + const u32 gMonPalette_Froakie[] = INCBIN_U32("graphics/pokemon/froakie/normal.gbapal.lz"); + const u32 gMonBackPic_Froakie[] = INCBIN_U32("graphics/pokemon/froakie/back.4bpp.lz"); + const u32 gMonShinyPalette_Froakie[] = INCBIN_U32("graphics/pokemon/froakie/shiny.gbapal.lz"); + const u8 gMonIcon_Froakie[] = INCBIN_U8("graphics/pokemon/froakie/icon.4bpp"); + const u8 gMonFootprint_Froakie[] = INCBIN_U8("graphics/pokemon/froakie/footprint.1bpp"); + + const u32 gMonFrontPic_Frogadier[] = INCBIN_U32("graphics/pokemon/frogadier/anim_front.4bpp.lz"); + const u32 gMonPalette_Frogadier[] = INCBIN_U32("graphics/pokemon/frogadier/normal.gbapal.lz"); + const u32 gMonBackPic_Frogadier[] = INCBIN_U32("graphics/pokemon/frogadier/back.4bpp.lz"); + const u32 gMonShinyPalette_Frogadier[] = INCBIN_U32("graphics/pokemon/frogadier/shiny.gbapal.lz"); + const u8 gMonIcon_Frogadier[] = INCBIN_U8("graphics/pokemon/frogadier/icon.4bpp"); + const u8 gMonFootprint_Frogadier[] = INCBIN_U8("graphics/pokemon/frogadier/footprint.1bpp"); + + const u32 gMonFrontPic_Greninja[] = INCBIN_U32("graphics/pokemon/greninja/anim_front.4bpp.lz"); + const u32 gMonPalette_Greninja[] = INCBIN_U32("graphics/pokemon/greninja/normal.gbapal.lz"); + const u32 gMonBackPic_Greninja[] = INCBIN_U32("graphics/pokemon/greninja/back.4bpp.lz"); + const u32 gMonShinyPalette_Greninja[] = INCBIN_U32("graphics/pokemon/greninja/shiny.gbapal.lz"); + const u8 gMonIcon_Greninja[] = INCBIN_U8("graphics/pokemon/greninja/icon.4bpp"); + const u8 gMonFootprint_Greninja[] = INCBIN_U8("graphics/pokemon/greninja/footprint.1bpp"); + + const u32 gMonFrontPic_GreninjaAsh[] = INCBIN_U32("graphics/pokemon/greninja/ash/anim_front.4bpp.lz"); + const u32 gMonPalette_GreninjaAsh[] = INCBIN_U32("graphics/pokemon/greninja/ash/normal.gbapal.lz"); + const u32 gMonBackPic_GreninjaAsh[] = INCBIN_U32("graphics/pokemon/greninja/ash/back.4bpp.lz"); + const u32 gMonShinyPalette_GreninjaAsh[] = INCBIN_U32("graphics/pokemon/greninja/ash/shiny.gbapal.lz"); + const u8 gMonIcon_GreninjaAsh[] = INCBIN_U8("graphics/pokemon/greninja/ash/icon.4bpp"); +#endif //P_FAMILY_FROAKIE + +#if P_FAMILY_BUNNELBY + const u32 gMonFrontPic_Bunnelby[] = INCBIN_U32("graphics/pokemon/bunnelby/anim_front.4bpp.lz"); + const u32 gMonPalette_Bunnelby[] = INCBIN_U32("graphics/pokemon/bunnelby/normal.gbapal.lz"); + const u32 gMonBackPic_Bunnelby[] = INCBIN_U32("graphics/pokemon/bunnelby/back.4bpp.lz"); + const u32 gMonShinyPalette_Bunnelby[] = INCBIN_U32("graphics/pokemon/bunnelby/shiny.gbapal.lz"); + const u8 gMonIcon_Bunnelby[] = INCBIN_U8("graphics/pokemon/bunnelby/icon.4bpp"); + const u8 gMonFootprint_Bunnelby[] = INCBIN_U8("graphics/pokemon/bunnelby/footprint.1bpp"); + + const u32 gMonFrontPic_Diggersby[] = INCBIN_U32("graphics/pokemon/diggersby/anim_front.4bpp.lz"); + const u32 gMonPalette_Diggersby[] = INCBIN_U32("graphics/pokemon/diggersby/normal.gbapal.lz"); + const u32 gMonBackPic_Diggersby[] = INCBIN_U32("graphics/pokemon/diggersby/back.4bpp.lz"); + const u32 gMonShinyPalette_Diggersby[] = INCBIN_U32("graphics/pokemon/diggersby/shiny.gbapal.lz"); + const u8 gMonIcon_Diggersby[] = INCBIN_U8("graphics/pokemon/diggersby/icon.4bpp"); + const u8 gMonFootprint_Diggersby[] = INCBIN_U8("graphics/pokemon/diggersby/footprint.1bpp"); +#endif //P_FAMILY_BUNNELBY + +#if P_FAMILY_FLETCHLING + const u32 gMonFrontPic_Fletchling[] = INCBIN_U32("graphics/pokemon/fletchling/anim_front.4bpp.lz"); + const u32 gMonPalette_Fletchling[] = INCBIN_U32("graphics/pokemon/fletchling/normal.gbapal.lz"); + const u32 gMonBackPic_Fletchling[] = INCBIN_U32("graphics/pokemon/fletchling/back.4bpp.lz"); + const u32 gMonShinyPalette_Fletchling[] = INCBIN_U32("graphics/pokemon/fletchling/shiny.gbapal.lz"); + const u8 gMonIcon_Fletchling[] = INCBIN_U8("graphics/pokemon/fletchling/icon.4bpp"); + const u8 gMonFootprint_Fletchling[] = INCBIN_U8("graphics/pokemon/fletchling/footprint.1bpp"); + + const u32 gMonFrontPic_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/anim_front.4bpp.lz"); + const u32 gMonPalette_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/normal.gbapal.lz"); + const u32 gMonBackPic_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/back.4bpp.lz"); + const u32 gMonShinyPalette_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/shiny.gbapal.lz"); + const u8 gMonIcon_Fletchinder[] = INCBIN_U8("graphics/pokemon/fletchinder/icon.4bpp"); + const u8 gMonFootprint_Fletchinder[] = INCBIN_U8("graphics/pokemon/fletchinder/footprint.1bpp"); + + const u32 gMonFrontPic_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/anim_front.4bpp.lz"); + const u32 gMonPalette_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/normal.gbapal.lz"); + const u32 gMonBackPic_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/back.4bpp.lz"); + const u32 gMonShinyPalette_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/shiny.gbapal.lz"); + const u8 gMonIcon_Talonflame[] = INCBIN_U8("graphics/pokemon/talonflame/icon.4bpp"); + const u8 gMonFootprint_Talonflame[] = INCBIN_U8("graphics/pokemon/talonflame/footprint.1bpp"); +#endif //P_FAMILY_FLETCHLING + +#if P_FAMILY_SCATTERBUG + const u32 gMonFrontPic_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/anim_front.4bpp.lz"); + const u32 gMonPalette_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/normal.gbapal.lz"); + const u32 gMonBackPic_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/back.4bpp.lz"); + const u32 gMonShinyPalette_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/shiny.gbapal.lz"); + const u8 gMonIcon_Scatterbug[] = INCBIN_U8("graphics/pokemon/scatterbug/icon.4bpp"); + const u8 gMonFootprint_Scatterbug[] = INCBIN_U8("graphics/pokemon/scatterbug/footprint.1bpp"); + + const u32 gMonFrontPic_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/anim_front.4bpp.lz"); + const u32 gMonPalette_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/normal.gbapal.lz"); + const u32 gMonBackPic_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/back.4bpp.lz"); + const u32 gMonShinyPalette_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/shiny.gbapal.lz"); + const u8 gMonIcon_Spewpa[] = INCBIN_U8("graphics/pokemon/spewpa/icon.4bpp"); + const u8 gMonFootprint_Spewpa[] = INCBIN_U8("graphics/pokemon/spewpa/footprint.1bpp"); + + const u32 gMonFrontPic_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonIcySnow[] = INCBIN_U8("graphics/pokemon/vivillon/meadow/icon.4bpp"); + const u8 gMonFootprint_Vivillon[] = INCBIN_U8("graphics/pokemon/vivillon/footprint.1bpp"); + + const u32 gMonFrontPic_VivillonPolar[] = INCBIN_U32("graphics/pokemon/vivillon/polar/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonPolar[] = INCBIN_U32("graphics/pokemon/vivillon/polar/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonPolar[] = INCBIN_U32("graphics/pokemon/vivillon/polar/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonPolar[] = INCBIN_U32("graphics/pokemon/vivillon/polar/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonPolar[] = INCBIN_U8("graphics/pokemon/vivillon/polar/icon.4bpp"); + + const u32 gMonFrontPic_VivillonTundra[] = INCBIN_U32("graphics/pokemon/vivillon/tundra/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonTundra[] = INCBIN_U32("graphics/pokemon/vivillon/tundra/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonTundra[] = INCBIN_U32("graphics/pokemon/vivillon/tundra/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonTundra[] = INCBIN_U32("graphics/pokemon/vivillon/tundra/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonTundra[] = INCBIN_U8("graphics/pokemon/vivillon/tundra/icon.4bpp"); + + const u32 gMonFrontPic_VivillonContinental[] = INCBIN_U32("graphics/pokemon/vivillon/continental/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonContinental[] = INCBIN_U32("graphics/pokemon/vivillon/continental/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonContinental[] = INCBIN_U32("graphics/pokemon/vivillon/continental/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonContinental[] = INCBIN_U32("graphics/pokemon/vivillon/continental/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonContinental[] = INCBIN_U8("graphics/pokemon/vivillon/continental/icon.4bpp"); + + const u32 gMonFrontPic_VivillonGarden[] = INCBIN_U32("graphics/pokemon/vivillon/garden/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonGarden[] = INCBIN_U32("graphics/pokemon/vivillon/garden/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonGarden[] = INCBIN_U32("graphics/pokemon/vivillon/garden/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonGarden[] = INCBIN_U32("graphics/pokemon/vivillon/garden/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonGarden[] = INCBIN_U8("graphics/pokemon/vivillon/garden/icon.4bpp"); + + const u32 gMonFrontPic_VivillonElegant[] = INCBIN_U32("graphics/pokemon/vivillon/elegant/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonElegant[] = INCBIN_U32("graphics/pokemon/vivillon/elegant/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonElegant[] = INCBIN_U32("graphics/pokemon/vivillon/elegant/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonElegant[] = INCBIN_U32("graphics/pokemon/vivillon/elegant/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonElegant[] = INCBIN_U8("graphics/pokemon/vivillon/elegant/icon.4bpp"); + + const u32 gMonFrontPic_VivillonMeadow[] = INCBIN_U32("graphics/pokemon/vivillon/meadow/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonMeadow[] = INCBIN_U32("graphics/pokemon/vivillon/meadow/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonMeadow[] = INCBIN_U32("graphics/pokemon/vivillon/meadow/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonMeadow[] = INCBIN_U32("graphics/pokemon/vivillon/meadow/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonMeadow[] = INCBIN_U8("graphics/pokemon/vivillon/meadow/icon.4bpp"); + + const u32 gMonFrontPic_VivillonModern[] = INCBIN_U32("graphics/pokemon/vivillon/modern/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonModern[] = INCBIN_U32("graphics/pokemon/vivillon/modern/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonModern[] = INCBIN_U32("graphics/pokemon/vivillon/modern/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonModern[] = INCBIN_U32("graphics/pokemon/vivillon/modern/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonModern[] = INCBIN_U8("graphics/pokemon/vivillon/modern/icon.4bpp"); + + const u32 gMonFrontPic_VivillonMarine[] = INCBIN_U32("graphics/pokemon/vivillon/marine/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonMarine[] = INCBIN_U32("graphics/pokemon/vivillon/marine/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonMarine[] = INCBIN_U32("graphics/pokemon/vivillon/marine/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonMarine[] = INCBIN_U32("graphics/pokemon/vivillon/marine/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonMarine[] = INCBIN_U8("graphics/pokemon/vivillon/marine/icon.4bpp"); + + const u32 gMonFrontPic_VivillonArchipelago[] = INCBIN_U32("graphics/pokemon/vivillon/archipelago/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonArchipelago[] = INCBIN_U32("graphics/pokemon/vivillon/archipelago/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonArchipelago[] = INCBIN_U32("graphics/pokemon/vivillon/archipelago/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonArchipelago[] = INCBIN_U32("graphics/pokemon/vivillon/archipelago/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonArchipelago[] = INCBIN_U8("graphics/pokemon/vivillon/archipelago/icon.4bpp"); + + const u32 gMonFrontPic_VivillonHighPlains[] = INCBIN_U32("graphics/pokemon/vivillon/high_plains/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonHighPlains[] = INCBIN_U32("graphics/pokemon/vivillon/high_plains/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonHighPlains[] = INCBIN_U32("graphics/pokemon/vivillon/high_plains/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonHighPlains[] = INCBIN_U32("graphics/pokemon/vivillon/high_plains/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonHighPlains[] = INCBIN_U8("graphics/pokemon/vivillon/high_plains/icon.4bpp"); + + const u32 gMonFrontPic_VivillonSandstorm[] = INCBIN_U32("graphics/pokemon/vivillon/sandstorm/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonSandstorm[] = INCBIN_U32("graphics/pokemon/vivillon/sandstorm/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonSandstorm[] = INCBIN_U32("graphics/pokemon/vivillon/sandstorm/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonSandstorm[] = INCBIN_U32("graphics/pokemon/vivillon/sandstorm/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonSandstorm[] = INCBIN_U8("graphics/pokemon/vivillon/sandstorm/icon.4bpp"); + + const u32 gMonFrontPic_VivillonRiver[] = INCBIN_U32("graphics/pokemon/vivillon/river/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonRiver[] = INCBIN_U32("graphics/pokemon/vivillon/river/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonRiver[] = INCBIN_U32("graphics/pokemon/vivillon/river/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonRiver[] = INCBIN_U32("graphics/pokemon/vivillon/river/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonRiver[] = INCBIN_U8("graphics/pokemon/vivillon/river/icon.4bpp"); + + const u32 gMonFrontPic_VivillonMonsoon[] = INCBIN_U32("graphics/pokemon/vivillon/monsoon/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonMonsoon[] = INCBIN_U32("graphics/pokemon/vivillon/monsoon/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonMonsoon[] = INCBIN_U32("graphics/pokemon/vivillon/monsoon/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonMonsoon[] = INCBIN_U32("graphics/pokemon/vivillon/monsoon/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonMonsoon[] = INCBIN_U8("graphics/pokemon/vivillon/monsoon/icon.4bpp"); + + const u32 gMonFrontPic_VivillonSavanna[] = INCBIN_U32("graphics/pokemon/vivillon/savanna/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonSavanna[] = INCBIN_U32("graphics/pokemon/vivillon/savanna/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonSavanna[] = INCBIN_U32("graphics/pokemon/vivillon/savanna/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonSavanna[] = INCBIN_U32("graphics/pokemon/vivillon/savanna/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonSavanna[] = INCBIN_U8("graphics/pokemon/vivillon/savanna/icon.4bpp"); + + const u32 gMonFrontPic_VivillonSun[] = INCBIN_U32("graphics/pokemon/vivillon/sun/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonSun[] = INCBIN_U32("graphics/pokemon/vivillon/sun/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonSun[] = INCBIN_U32("graphics/pokemon/vivillon/sun/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonSun[] = INCBIN_U32("graphics/pokemon/vivillon/sun/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonSun[] = INCBIN_U8("graphics/pokemon/vivillon/sun/icon.4bpp"); + + const u32 gMonFrontPic_VivillonOcean[] = INCBIN_U32("graphics/pokemon/vivillon/ocean/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonOcean[] = INCBIN_U32("graphics/pokemon/vivillon/ocean/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonOcean[] = INCBIN_U32("graphics/pokemon/vivillon/ocean/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonOcean[] = INCBIN_U32("graphics/pokemon/vivillon/ocean/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonOcean[] = INCBIN_U8("graphics/pokemon/vivillon/ocean/icon.4bpp"); + + const u32 gMonFrontPic_VivillonJungle[] = INCBIN_U32("graphics/pokemon/vivillon/jungle/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonJungle[] = INCBIN_U32("graphics/pokemon/vivillon/jungle/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonJungle[] = INCBIN_U32("graphics/pokemon/vivillon/jungle/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonJungle[] = INCBIN_U32("graphics/pokemon/vivillon/jungle/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonJungle[] = INCBIN_U8("graphics/pokemon/vivillon/jungle/icon.4bpp"); + + const u32 gMonFrontPic_VivillonFancy[] = INCBIN_U32("graphics/pokemon/vivillon/fancy/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonFancy[] = INCBIN_U32("graphics/pokemon/vivillon/fancy/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonFancy[] = INCBIN_U32("graphics/pokemon/vivillon/fancy/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonFancy[] = INCBIN_U32("graphics/pokemon/vivillon/fancy/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonFancy[] = INCBIN_U8("graphics/pokemon/vivillon/fancy/icon.4bpp"); + + const u32 gMonFrontPic_VivillonPokeBall[] = INCBIN_U32("graphics/pokemon/vivillon/poke_ball/anim_front.4bpp.lz"); + const u32 gMonPalette_VivillonPokeBall[] = INCBIN_U32("graphics/pokemon/vivillon/poke_ball/normal.gbapal.lz"); + const u32 gMonBackPic_VivillonPokeBall[] = INCBIN_U32("graphics/pokemon/vivillon/poke_ball/back.4bpp.lz"); + const u32 gMonShinyPalette_VivillonPokeBall[] = INCBIN_U32("graphics/pokemon/vivillon/poke_ball/shiny.gbapal.lz"); + const u8 gMonIcon_VivillonPokeBall[] = INCBIN_U8("graphics/pokemon/vivillon/poke_ball/icon.4bpp"); +#endif //P_FAMILY_SCATTERBUG + +#if P_FAMILY_LITLEO + const u32 gMonFrontPic_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/anim_front.4bpp.lz"); + const u32 gMonPalette_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/normal.gbapal.lz"); + const u32 gMonBackPic_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/back.4bpp.lz"); + const u32 gMonShinyPalette_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/shiny.gbapal.lz"); + const u8 gMonIcon_Litleo[] = INCBIN_U8("graphics/pokemon/litleo/icon.4bpp"); + const u8 gMonFootprint_Litleo[] = INCBIN_U8("graphics/pokemon/litleo/footprint.1bpp"); + + const u32 gMonFrontPic_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/anim_front.4bpp.lz"); + const u32 gMonPalette_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/normal.gbapal.lz"); + const u32 gMonBackPic_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/back.4bpp.lz"); + const u32 gMonShinyPalette_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/shiny.gbapal.lz"); + const u8 gMonIcon_Pyroar[] = INCBIN_U8("graphics/pokemon/pyroar/icon.4bpp"); + const u8 gMonFootprint_Pyroar[] = INCBIN_U8("graphics/pokemon/pyroar/footprint.1bpp"); + + const u32 gMonFrontPic_PyroarF[] = INCBIN_U32("graphics/pokemon/pyroar/anim_frontf.4bpp.lz"); + const u32 gMonBackPic_PyroarF[] = INCBIN_U32("graphics/pokemon/pyroar/backf.4bpp.lz"); + const u8 gMonIcon_PyroarF[] = INCBIN_U8("graphics/pokemon/pyroar/iconf.4bpp"); +#endif //P_FAMILY_LITLEO + +#if P_FAMILY_FLABEBE + const u32 gMonFrontPic_Flabebe[] = INCBIN_U32("graphics/pokemon/flabebe/anim_front.4bpp.lz"); + const u32 gMonBackPic_Flabebe[] = INCBIN_U32("graphics/pokemon/flabebe/back.4bpp.lz"); + const u8 gMonFootprint_Flabebe[] = INCBIN_U8("graphics/pokemon/flabebe/footprint.1bpp"); + + const u32 gMonPalette_FlabebeRedFlower[] = INCBIN_U32("graphics/pokemon/flabebe/normal.gbapal.lz"); + const u32 gMonShinyPalette_FlabebeRedFlower[] = INCBIN_U32("graphics/pokemon/flabebe/shiny.gbapal.lz"); + const u8 gMonIcon_FlabebeRedFlower[] = INCBIN_U8("graphics/pokemon/flabebe/icon.4bpp"); + + const u32 gMonPalette_FlabebeYellowFlower[] = INCBIN_U32("graphics/pokemon/flabebe/yellow_flower/normal.gbapal.lz"); + const u32 gMonShinyPalette_FlabebeYellowFlower[] = INCBIN_U32("graphics/pokemon/flabebe/yellow_flower/shiny.gbapal.lz"); + const u8 gMonIcon_FlabebeYellowFlower[] = INCBIN_U8("graphics/pokemon/flabebe/yellow_flower/icon.4bpp"); + + const u32 gMonPalette_FlabebeOrangeFlower[] = INCBIN_U32("graphics/pokemon/flabebe/orange_flower/normal.gbapal.lz"); + const u32 gMonShinyPalette_FlabebeOrangeFlower[] = INCBIN_U32("graphics/pokemon/flabebe/orange_flower/shiny.gbapal.lz"); + const u8 gMonIcon_FlabebeOrangeFlower[] = INCBIN_U8("graphics/pokemon/flabebe/orange_flower/icon.4bpp"); + + const u32 gMonPalette_FlabebeBlueFlower[] = INCBIN_U32("graphics/pokemon/flabebe/blue_flower/normal.gbapal.lz"); + const u32 gMonShinyPalette_FlabebeBlueFlower[] = INCBIN_U32("graphics/pokemon/flabebe/blue_flower/shiny.gbapal.lz"); + const u8 gMonIcon_FlabebeBlueFlower[] = INCBIN_U8("graphics/pokemon/flabebe/blue_flower/icon.4bpp"); + + const u32 gMonPalette_FlabebeWhiteFlower[] = INCBIN_U32("graphics/pokemon/flabebe/white_flower/normal.gbapal.lz"); + const u32 gMonShinyPalette_FlabebeWhiteFlower[] = INCBIN_U32("graphics/pokemon/flabebe/white_flower/shiny.gbapal.lz"); + const u8 gMonIcon_FlabebeWhiteFlower[] = INCBIN_U8("graphics/pokemon/flabebe/white_flower/icon.4bpp"); + + const u32 gMonFrontPic_Floette[] = INCBIN_U32("graphics/pokemon/floette/anim_front.4bpp.lz"); + const u32 gMonBackPic_Floette[] = INCBIN_U32("graphics/pokemon/floette/back.4bpp.lz"); + const u8 gMonFootprint_Floette[] = INCBIN_U8("graphics/pokemon/floette/footprint.1bpp"); + + const u32 gMonPalette_FloetteRedFlower[] = INCBIN_U32("graphics/pokemon/floette/normal.gbapal.lz"); + const u32 gMonShinyPalette_FloetteRedFlower[] = INCBIN_U32("graphics/pokemon/floette/shiny.gbapal.lz"); + const u8 gMonIcon_FloetteRedFlower[] = INCBIN_U8("graphics/pokemon/floette/icon.4bpp"); + + const u32 gMonPalette_FloetteYellowFlower[] = INCBIN_U32("graphics/pokemon/floette/yellow_flower/normal.gbapal.lz"); + const u32 gMonShinyPalette_FloetteYellowFlower[] = INCBIN_U32("graphics/pokemon/floette/yellow_flower/shiny.gbapal.lz"); + const u8 gMonIcon_FloetteYellowFlower[] = INCBIN_U8("graphics/pokemon/floette/yellow_flower/icon.4bpp"); + + const u32 gMonPalette_FloetteOrangeFlower[] = INCBIN_U32("graphics/pokemon/floette/orange_flower/normal.gbapal.lz"); + const u32 gMonShinyPalette_FloetteOrangeFlower[] = INCBIN_U32("graphics/pokemon/floette/orange_flower/shiny.gbapal.lz"); + const u8 gMonIcon_FloetteOrangeFlower[] = INCBIN_U8("graphics/pokemon/floette/orange_flower/icon.4bpp"); + + const u32 gMonPalette_FloetteBlueFlower[] = INCBIN_U32("graphics/pokemon/floette/blue_flower/normal.gbapal.lz"); + const u32 gMonShinyPalette_FloetteBlueFlower[] = INCBIN_U32("graphics/pokemon/floette/blue_flower/shiny.gbapal.lz"); + const u8 gMonIcon_FloetteBlueFlower[] = INCBIN_U8("graphics/pokemon/floette/blue_flower/icon.4bpp"); + + const u32 gMonPalette_FloetteWhiteFlower[] = INCBIN_U32("graphics/pokemon/floette/white_flower/normal.gbapal.lz"); + const u32 gMonShinyPalette_FloetteWhiteFlower[] = INCBIN_U32("graphics/pokemon/floette/white_flower/shiny.gbapal.lz"); + const u8 gMonIcon_FloetteWhiteFlower[] = INCBIN_U8("graphics/pokemon/floette/white_flower/icon.4bpp"); + + const u32 gMonFrontPic_FloetteEternalFlower[] = INCBIN_U32("graphics/pokemon/floette/eternal_flower/anim_front.4bpp.lz"); + const u32 gMonPalette_FloetteEternalFlower[] = INCBIN_U32("graphics/pokemon/floette/eternal_flower/normal.gbapal.lz"); + const u32 gMonBackPic_FloetteEternalFlower[] = INCBIN_U32("graphics/pokemon/floette/eternal_flower/back.4bpp.lz"); + const u32 gMonShinyPalette_FloetteEternalFlower[] = INCBIN_U32("graphics/pokemon/floette/eternal_flower/shiny.gbapal.lz"); + const u8 gMonIcon_FloetteEternalFlower[] = INCBIN_U8("graphics/pokemon/floette/eternal_flower/icon.4bpp"); + + const u32 gMonFrontPic_Florges[] = INCBIN_U32("graphics/pokemon/florges/anim_front.4bpp.lz"); + const u32 gMonBackPic_Florges[] = INCBIN_U32("graphics/pokemon/florges/back.4bpp.lz"); + const u8 gMonFootprint_Florges[] = INCBIN_U8("graphics/pokemon/florges/footprint.1bpp"); + + const u32 gMonPalette_FlorgesRedFlower[] = INCBIN_U32("graphics/pokemon/florges/normal.gbapal.lz"); + const u32 gMonShinyPalette_FlorgesRedFlower[] = INCBIN_U32("graphics/pokemon/florges/shiny.gbapal.lz"); + const u8 gMonIcon_FlorgesRedFlower[] = INCBIN_U8("graphics/pokemon/florges/icon.4bpp"); + + const u32 gMonPalette_FlorgesYellowFlower[] = INCBIN_U32("graphics/pokemon/florges/yellow_flower/normal.gbapal.lz"); + const u32 gMonShinyPalette_FlorgesYellowFlower[] = INCBIN_U32("graphics/pokemon/florges/yellow_flower/shiny.gbapal.lz"); + const u8 gMonIcon_FlorgesYellowFlower[] = INCBIN_U8("graphics/pokemon/florges/yellow_flower/icon.4bpp"); + + const u32 gMonPalette_FlorgesOrangeFlower[] = INCBIN_U32("graphics/pokemon/florges/orange_flower/normal.gbapal.lz"); + const u32 gMonShinyPalette_FlorgesOrangeFlower[] = INCBIN_U32("graphics/pokemon/florges/orange_flower/shiny.gbapal.lz"); + const u8 gMonIcon_FlorgesOrangeFlower[] = INCBIN_U8("graphics/pokemon/florges/orange_flower/icon.4bpp"); + + const u32 gMonPalette_FlorgesBlueFlower[] = INCBIN_U32("graphics/pokemon/florges/blue_flower/normal.gbapal.lz"); + const u32 gMonShinyPalette_FlorgesBlueFlower[] = INCBIN_U32("graphics/pokemon/florges/blue_flower/shiny.gbapal.lz"); + const u8 gMonIcon_FlorgesBlueFlower[] = INCBIN_U8("graphics/pokemon/florges/blue_flower/icon.4bpp"); + + const u32 gMonPalette_FlorgesWhiteFlower[] = INCBIN_U32("graphics/pokemon/florges/white_flower/normal.gbapal.lz"); + const u32 gMonShinyPalette_FlorgesWhiteFlower[] = INCBIN_U32("graphics/pokemon/florges/white_flower/shiny.gbapal.lz"); + const u8 gMonIcon_FlorgesWhiteFlower[] = INCBIN_U8("graphics/pokemon/florges/white_flower/icon.4bpp"); +#endif //P_FAMILY_FLABEBE + +#if P_FAMILY_SKIDDO + const u32 gMonFrontPic_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/anim_front.4bpp.lz"); + const u32 gMonPalette_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/normal.gbapal.lz"); + const u32 gMonBackPic_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/back.4bpp.lz"); + const u32 gMonShinyPalette_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/shiny.gbapal.lz"); + const u8 gMonIcon_Skiddo[] = INCBIN_U8("graphics/pokemon/skiddo/icon.4bpp"); + const u8 gMonFootprint_Skiddo[] = INCBIN_U8("graphics/pokemon/skiddo/footprint.1bpp"); + + const u32 gMonFrontPic_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/anim_front.4bpp.lz"); + const u32 gMonPalette_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/normal.gbapal.lz"); + const u32 gMonBackPic_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/back.4bpp.lz"); + const u32 gMonShinyPalette_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/shiny.gbapal.lz"); + const u8 gMonIcon_Gogoat[] = INCBIN_U8("graphics/pokemon/gogoat/icon.4bpp"); + const u8 gMonFootprint_Gogoat[] = INCBIN_U8("graphics/pokemon/gogoat/footprint.1bpp"); +#endif //P_FAMILY_SKIDDO + +#if P_FAMILY_PANCHAM + const u32 gMonFrontPic_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/anim_front.4bpp.lz"); + const u32 gMonPalette_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/normal.gbapal.lz"); + const u32 gMonBackPic_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/back.4bpp.lz"); + const u32 gMonShinyPalette_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/shiny.gbapal.lz"); + const u8 gMonIcon_Pancham[] = INCBIN_U8("graphics/pokemon/pancham/icon.4bpp"); + const u8 gMonFootprint_Pancham[] = INCBIN_U8("graphics/pokemon/pancham/footprint.1bpp"); + + const u32 gMonFrontPic_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/anim_front.4bpp.lz"); + const u32 gMonPalette_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/normal.gbapal.lz"); + const u32 gMonBackPic_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/back.4bpp.lz"); + const u32 gMonShinyPalette_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/shiny.gbapal.lz"); + const u8 gMonIcon_Pangoro[] = INCBIN_U8("graphics/pokemon/pangoro/icon.4bpp"); + const u8 gMonFootprint_Pangoro[] = INCBIN_U8("graphics/pokemon/pangoro/footprint.1bpp"); +#endif //P_FAMILY_PANCHAM + +#if P_FAMILY_FURFROU + const u32 gMonFrontPic_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/anim_front.4bpp.lz"); + const u32 gMonPalette_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/normal.gbapal.lz"); + const u32 gMonBackPic_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/back.4bpp.lz"); + const u32 gMonShinyPalette_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/shiny.gbapal.lz"); + const u8 gMonIcon_FurfrouNatural[] = INCBIN_U8("graphics/pokemon/furfrou/icon.4bpp"); + const u8 gMonFootprint_Furfrou[] = INCBIN_U8("graphics/pokemon/furfrou/footprint.1bpp"); + + const u32 gMonFrontPic_FurfrouHeartTrim[] = INCBIN_U32("graphics/pokemon/furfrou/heart_trim/anim_front.4bpp.lz"); + const u32 gMonPalette_FurfrouHeartTrim[] = INCBIN_U32("graphics/pokemon/furfrou/heart_trim/normal.gbapal.lz"); + const u32 gMonBackPic_FurfrouHeartTrim[] = INCBIN_U32("graphics/pokemon/furfrou/heart_trim/back.4bpp.lz"); + const u32 gMonShinyPalette_FurfrouHeartTrim[] = INCBIN_U32("graphics/pokemon/furfrou/heart_trim/shiny.gbapal.lz"); + const u8 gMonIcon_FurfrouHeartTrim[] = INCBIN_U8("graphics/pokemon/furfrou/heart_trim/icon.4bpp"); + + const u32 gMonFrontPic_FurfrouStarTrim[] = INCBIN_U32("graphics/pokemon/furfrou/star_trim/anim_front.4bpp.lz"); + const u32 gMonPalette_FurfrouStarTrim[] = INCBIN_U32("graphics/pokemon/furfrou/star_trim/normal.gbapal.lz"); + const u32 gMonBackPic_FurfrouStarTrim[] = INCBIN_U32("graphics/pokemon/furfrou/star_trim/back.4bpp.lz"); + const u32 gMonShinyPalette_FurfrouStarTrim[] = INCBIN_U32("graphics/pokemon/furfrou/star_trim/shiny.gbapal.lz"); + const u8 gMonIcon_FurfrouStarTrim[] = INCBIN_U8("graphics/pokemon/furfrou/star_trim/icon.4bpp"); + + const u32 gMonFrontPic_FurfrouDiamondTrim[] = INCBIN_U32("graphics/pokemon/furfrou/diamond_trim/anim_front.4bpp.lz"); + const u32 gMonPalette_FurfrouDiamondTrim[] = INCBIN_U32("graphics/pokemon/furfrou/diamond_trim/normal.gbapal.lz"); + const u32 gMonBackPic_FurfrouDiamondTrim[] = INCBIN_U32("graphics/pokemon/furfrou/diamond_trim/back.4bpp.lz"); + const u32 gMonShinyPalette_FurfrouDiamondTrim[] = INCBIN_U32("graphics/pokemon/furfrou/diamond_trim/shiny.gbapal.lz"); + const u8 gMonIcon_FurfrouDiamondTrim[] = INCBIN_U8("graphics/pokemon/furfrou/diamond_trim/icon.4bpp"); + + const u32 gMonFrontPic_FurfrouDebutanteTrim[] = INCBIN_U32("graphics/pokemon/furfrou/debutante_trim/anim_front.4bpp.lz"); + const u32 gMonPalette_FurfrouDebutanteTrim[] = INCBIN_U32("graphics/pokemon/furfrou/debutante_trim/normal.gbapal.lz"); + const u32 gMonBackPic_FurfrouDebutanteTrim[] = INCBIN_U32("graphics/pokemon/furfrou/debutante_trim/back.4bpp.lz"); + const u32 gMonShinyPalette_FurfrouDebutanteTrim[] = INCBIN_U32("graphics/pokemon/furfrou/debutante_trim/shiny.gbapal.lz"); + const u8 gMonIcon_FurfrouDebutanteTrim[] = INCBIN_U8("graphics/pokemon/furfrou/debutante_trim/icon.4bpp"); + + const u32 gMonFrontPic_FurfrouMatronTrim[] = INCBIN_U32("graphics/pokemon/furfrou/matron_trim/anim_front.4bpp.lz"); + const u32 gMonPalette_FurfrouMatronTrim[] = INCBIN_U32("graphics/pokemon/furfrou/matron_trim/normal.gbapal.lz"); + const u32 gMonBackPic_FurfrouMatronTrim[] = INCBIN_U32("graphics/pokemon/furfrou/matron_trim/back.4bpp.lz"); + const u32 gMonShinyPalette_FurfrouMatronTrim[] = INCBIN_U32("graphics/pokemon/furfrou/matron_trim/shiny.gbapal.lz"); + const u8 gMonIcon_FurfrouMatronTrim[] = INCBIN_U8("graphics/pokemon/furfrou/matron_trim/icon.4bpp"); + + const u32 gMonFrontPic_FurfrouDandyTrim[] = INCBIN_U32("graphics/pokemon/furfrou/dandy_trim/anim_front.4bpp.lz"); + const u32 gMonPalette_FurfrouDandyTrim[] = INCBIN_U32("graphics/pokemon/furfrou/dandy_trim/normal.gbapal.lz"); + const u32 gMonBackPic_FurfrouDandyTrim[] = INCBIN_U32("graphics/pokemon/furfrou/dandy_trim/back.4bpp.lz"); + const u32 gMonShinyPalette_FurfrouDandyTrim[] = INCBIN_U32("graphics/pokemon/furfrou/dandy_trim/shiny.gbapal.lz"); + const u8 gMonIcon_FurfrouDandyTrim[] = INCBIN_U8("graphics/pokemon/furfrou/dandy_trim/icon.4bpp"); + + const u32 gMonFrontPic_FurfrouLaReineTrim[] = INCBIN_U32("graphics/pokemon/furfrou/la_reine_trim/anim_front.4bpp.lz"); + const u32 gMonPalette_FurfrouLaReineTrim[] = INCBIN_U32("graphics/pokemon/furfrou/la_reine_trim/normal.gbapal.lz"); + const u32 gMonBackPic_FurfrouLaReineTrim[] = INCBIN_U32("graphics/pokemon/furfrou/la_reine_trim/back.4bpp.lz"); + const u32 gMonShinyPalette_FurfrouLaReineTrim[] = INCBIN_U32("graphics/pokemon/furfrou/la_reine_trim/shiny.gbapal.lz"); + const u8 gMonIcon_FurfrouLaReineTrim[] = INCBIN_U8("graphics/pokemon/furfrou/la_reine_trim/icon.4bpp"); + + const u32 gMonFrontPic_FurfrouKabukiTrim[] = INCBIN_U32("graphics/pokemon/furfrou/kabuki_trim/anim_front.4bpp.lz"); + const u32 gMonPalette_FurfrouKabukiTrim[] = INCBIN_U32("graphics/pokemon/furfrou/kabuki_trim/normal.gbapal.lz"); + const u32 gMonBackPic_FurfrouKabukiTrim[] = INCBIN_U32("graphics/pokemon/furfrou/kabuki_trim/back.4bpp.lz"); + const u32 gMonShinyPalette_FurfrouKabukiTrim[] = INCBIN_U32("graphics/pokemon/furfrou/kabuki_trim/shiny.gbapal.lz"); + const u8 gMonIcon_FurfrouKabukiTrim[] = INCBIN_U8("graphics/pokemon/furfrou/kabuki_trim/icon.4bpp"); + + const u32 gMonFrontPic_FurfrouPharaohTrim[] = INCBIN_U32("graphics/pokemon/furfrou/pharaoh_trim/anim_front.4bpp.lz"); + const u32 gMonPalette_FurfrouPharaohTrim[] = INCBIN_U32("graphics/pokemon/furfrou/pharaoh_trim/normal.gbapal.lz"); + const u32 gMonBackPic_FurfrouPharaohTrim[] = INCBIN_U32("graphics/pokemon/furfrou/pharaoh_trim/back.4bpp.lz"); + const u32 gMonShinyPalette_FurfrouPharaohTrim[] = INCBIN_U32("graphics/pokemon/furfrou/pharaoh_trim/shiny.gbapal.lz"); + const u8 gMonIcon_FurfrouPharaohTrim[] = INCBIN_U8("graphics/pokemon/furfrou/pharaoh_trim/icon.4bpp"); +#endif //P_FAMILY_FURFROU + +#if P_FAMILY_ESPURR + const u32 gMonFrontPic_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/anim_front.4bpp.lz"); + const u32 gMonPalette_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/normal.gbapal.lz"); + const u32 gMonBackPic_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/back.4bpp.lz"); + const u32 gMonShinyPalette_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/shiny.gbapal.lz"); + const u8 gMonIcon_Espurr[] = INCBIN_U8("graphics/pokemon/espurr/icon.4bpp"); + const u8 gMonFootprint_Espurr[] = INCBIN_U8("graphics/pokemon/espurr/footprint.1bpp"); + + const u32 gMonFrontPic_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/anim_front.4bpp.lz"); + const u32 gMonPalette_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/normal.gbapal.lz"); + const u32 gMonBackPic_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/back.4bpp.lz"); + const u32 gMonShinyPalette_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/shiny.gbapal.lz"); + const u8 gMonIcon_MeowsticMale[] = INCBIN_U8("graphics/pokemon/meowstic/icon.4bpp"); + const u8 gMonFootprint_Meowstic[] = INCBIN_U8("graphics/pokemon/meowstic/footprint.1bpp"); + + const u32 gMonFrontPic_MeowsticFemale[] = INCBIN_U32("graphics/pokemon/meowstic/female/anim_front.4bpp.lz"); + const u32 gMonPalette_MeowsticFemale[] = INCBIN_U32("graphics/pokemon/meowstic/female/normal.gbapal.lz"); + const u32 gMonBackPic_MeowsticFemale[] = INCBIN_U32("graphics/pokemon/meowstic/female/back.4bpp.lz"); + const u32 gMonShinyPalette_MeowsticFemale[] = INCBIN_U32("graphics/pokemon/meowstic/female/shiny.gbapal.lz"); + const u8 gMonIcon_MeowsticFemale[] = INCBIN_U8("graphics/pokemon/meowstic/female/icon.4bpp"); +#endif //P_FAMILY_ESPURR + +#if P_FAMILY_HONEDGE + const u32 gMonFrontPic_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/anim_front.4bpp.lz"); + const u32 gMonPalette_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/normal.gbapal.lz"); + const u32 gMonBackPic_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/back.4bpp.lz"); + const u32 gMonShinyPalette_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/shiny.gbapal.lz"); + const u8 gMonIcon_Honedge[] = INCBIN_U8("graphics/pokemon/honedge/icon.4bpp"); + const u8 gMonFootprint_Honedge[] = INCBIN_U8("graphics/pokemon/honedge/footprint.1bpp"); + + const u32 gMonFrontPic_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/anim_front.4bpp.lz"); + const u32 gMonPalette_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/normal.gbapal.lz"); + const u32 gMonBackPic_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/back.4bpp.lz"); + const u32 gMonShinyPalette_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/shiny.gbapal.lz"); + const u8 gMonIcon_Doublade[] = INCBIN_U8("graphics/pokemon/doublade/icon.4bpp"); + const u8 gMonFootprint_Doublade[] = INCBIN_U8("graphics/pokemon/doublade/footprint.1bpp"); + + const u32 gMonFrontPic_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/anim_front.4bpp.lz"); + const u32 gMonPalette_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/normal.gbapal.lz"); + const u32 gMonBackPic_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/back.4bpp.lz"); + const u32 gMonShinyPalette_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/shiny.gbapal.lz"); + const u8 gMonIcon_AegislashShield[] = INCBIN_U8("graphics/pokemon/aegislash/icon.4bpp"); + const u8 gMonFootprint_Aegislash[] = INCBIN_U8("graphics/pokemon/aegislash/footprint.1bpp"); + + const u32 gMonFrontPic_AegislashBlade[] = INCBIN_U32("graphics/pokemon/aegislash/blade/anim_front.4bpp.lz"); + const u32 gMonPalette_AegislashBlade[] = INCBIN_U32("graphics/pokemon/aegislash/blade/normal.gbapal.lz"); + const u32 gMonBackPic_AegislashBlade[] = INCBIN_U32("graphics/pokemon/aegislash/blade/back.4bpp.lz"); + const u32 gMonShinyPalette_AegislashBlade[] = INCBIN_U32("graphics/pokemon/aegislash/blade/shiny.gbapal.lz"); + const u8 gMonIcon_AegislashBlade[] = INCBIN_U8("graphics/pokemon/aegislash/blade/icon.4bpp"); +#endif //P_FAMILY_HONEDGE + +#if P_FAMILY_SPRITZEE + const u32 gMonFrontPic_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/anim_front.4bpp.lz"); + const u32 gMonPalette_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/normal.gbapal.lz"); + const u32 gMonBackPic_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/back.4bpp.lz"); + const u32 gMonShinyPalette_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/shiny.gbapal.lz"); + const u8 gMonIcon_Spritzee[] = INCBIN_U8("graphics/pokemon/spritzee/icon.4bpp"); + const u8 gMonFootprint_Spritzee[] = INCBIN_U8("graphics/pokemon/spritzee/footprint.1bpp"); + + const u32 gMonFrontPic_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/anim_front.4bpp.lz"); + const u32 gMonPalette_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/normal.gbapal.lz"); + const u32 gMonBackPic_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/back.4bpp.lz"); + const u32 gMonShinyPalette_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/shiny.gbapal.lz"); + const u8 gMonIcon_Aromatisse[] = INCBIN_U8("graphics/pokemon/aromatisse/icon.4bpp"); + const u8 gMonFootprint_Aromatisse[] = INCBIN_U8("graphics/pokemon/aromatisse/footprint.1bpp"); +#endif //P_FAMILY_SPRITZEE + +#if P_FAMILY_SWIRLIX + const u32 gMonFrontPic_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/anim_front.4bpp.lz"); + const u32 gMonPalette_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/normal.gbapal.lz"); + const u32 gMonBackPic_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/back.4bpp.lz"); + const u32 gMonShinyPalette_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/shiny.gbapal.lz"); + const u8 gMonIcon_Swirlix[] = INCBIN_U8("graphics/pokemon/swirlix/icon.4bpp"); + const u8 gMonFootprint_Swirlix[] = INCBIN_U8("graphics/pokemon/swirlix/footprint.1bpp"); + + const u32 gMonFrontPic_Slurpuff[] = INCBIN_U32("graphics/pokemon/slurpuff/anim_front.4bpp.lz"); + const u32 gMonPalette_Slurpuff[] = INCBIN_U32("graphics/pokemon/slurpuff/normal.gbapal.lz"); + const u32 gMonBackPic_Slurpuff[] = INCBIN_U32("graphics/pokemon/slurpuff/back.4bpp.lz"); + const u32 gMonShinyPalette_Slurpuff[] = INCBIN_U32("graphics/pokemon/slurpuff/shiny.gbapal.lz"); + const u8 gMonIcon_Slurpuff[] = INCBIN_U8("graphics/pokemon/slurpuff/icon.4bpp"); + const u8 gMonFootprint_Slurpuff[] = INCBIN_U8("graphics/pokemon/slurpuff/footprint.1bpp"); +#endif //P_FAMILY_SWIRLIX + +#if P_FAMILY_INKAY + const u32 gMonFrontPic_Inkay[] = INCBIN_U32("graphics/pokemon/inkay/anim_front.4bpp.lz"); + const u32 gMonPalette_Inkay[] = INCBIN_U32("graphics/pokemon/inkay/normal.gbapal.lz"); + const u32 gMonBackPic_Inkay[] = INCBIN_U32("graphics/pokemon/inkay/back.4bpp.lz"); + const u32 gMonShinyPalette_Inkay[] = INCBIN_U32("graphics/pokemon/inkay/shiny.gbapal.lz"); + const u8 gMonIcon_Inkay[] = INCBIN_U8("graphics/pokemon/inkay/icon.4bpp"); + const u8 gMonFootprint_Inkay[] = INCBIN_U8("graphics/pokemon/inkay/footprint.1bpp"); + + const u32 gMonFrontPic_Malamar[] = INCBIN_U32("graphics/pokemon/malamar/anim_front.4bpp.lz"); + const u32 gMonPalette_Malamar[] = INCBIN_U32("graphics/pokemon/malamar/normal.gbapal.lz"); + const u32 gMonBackPic_Malamar[] = INCBIN_U32("graphics/pokemon/malamar/back.4bpp.lz"); + const u32 gMonShinyPalette_Malamar[] = INCBIN_U32("graphics/pokemon/malamar/shiny.gbapal.lz"); + const u8 gMonIcon_Malamar[] = INCBIN_U8("graphics/pokemon/malamar/icon.4bpp"); + const u8 gMonFootprint_Malamar[] = INCBIN_U8("graphics/pokemon/malamar/footprint.1bpp"); +#endif //P_FAMILY_INKAY + +#if P_FAMILY_BINACLE + const u32 gMonFrontPic_Binacle[] = INCBIN_U32("graphics/pokemon/binacle/anim_front.4bpp.lz"); + const u32 gMonPalette_Binacle[] = INCBIN_U32("graphics/pokemon/binacle/normal.gbapal.lz"); + const u32 gMonBackPic_Binacle[] = INCBIN_U32("graphics/pokemon/binacle/back.4bpp.lz"); + const u32 gMonShinyPalette_Binacle[] = INCBIN_U32("graphics/pokemon/binacle/shiny.gbapal.lz"); + const u8 gMonIcon_Binacle[] = INCBIN_U8("graphics/pokemon/binacle/icon.4bpp"); + const u8 gMonFootprint_Binacle[] = INCBIN_U8("graphics/pokemon/binacle/footprint.1bpp"); + + const u32 gMonFrontPic_Barbaracle[] = INCBIN_U32("graphics/pokemon/barbaracle/anim_front.4bpp.lz"); + const u32 gMonPalette_Barbaracle[] = INCBIN_U32("graphics/pokemon/barbaracle/normal.gbapal.lz"); + const u32 gMonBackPic_Barbaracle[] = INCBIN_U32("graphics/pokemon/barbaracle/back.4bpp.lz"); + const u32 gMonShinyPalette_Barbaracle[] = INCBIN_U32("graphics/pokemon/barbaracle/shiny.gbapal.lz"); + const u8 gMonIcon_Barbaracle[] = INCBIN_U8("graphics/pokemon/barbaracle/icon.4bpp"); + const u8 gMonFootprint_Barbaracle[] = INCBIN_U8("graphics/pokemon/barbaracle/footprint.1bpp"); +#endif //P_FAMILY_BINACLE + +#if P_FAMILY_SKRELP + const u32 gMonFrontPic_Skrelp[] = INCBIN_U32("graphics/pokemon/skrelp/anim_front.4bpp.lz"); + const u32 gMonPalette_Skrelp[] = INCBIN_U32("graphics/pokemon/skrelp/normal.gbapal.lz"); + const u32 gMonBackPic_Skrelp[] = INCBIN_U32("graphics/pokemon/skrelp/back.4bpp.lz"); + const u32 gMonShinyPalette_Skrelp[] = INCBIN_U32("graphics/pokemon/skrelp/shiny.gbapal.lz"); + const u8 gMonIcon_Skrelp[] = INCBIN_U8("graphics/pokemon/skrelp/icon.4bpp"); + const u8 gMonFootprint_Skrelp[] = INCBIN_U8("graphics/pokemon/skrelp/footprint.1bpp"); + + const u32 gMonFrontPic_Dragalge[] = INCBIN_U32("graphics/pokemon/dragalge/anim_front.4bpp.lz"); + const u32 gMonPalette_Dragalge[] = INCBIN_U32("graphics/pokemon/dragalge/normal.gbapal.lz"); + const u32 gMonBackPic_Dragalge[] = INCBIN_U32("graphics/pokemon/dragalge/back.4bpp.lz"); + const u32 gMonShinyPalette_Dragalge[] = INCBIN_U32("graphics/pokemon/dragalge/shiny.gbapal.lz"); + const u8 gMonIcon_Dragalge[] = INCBIN_U8("graphics/pokemon/dragalge/icon.4bpp"); + const u8 gMonFootprint_Dragalge[] = INCBIN_U8("graphics/pokemon/dragalge/footprint.1bpp"); +#endif //P_FAMILY_SKRELP + +#if P_FAMILY_CLAUNCHER + const u32 gMonFrontPic_Clauncher[] = INCBIN_U32("graphics/pokemon/clauncher/anim_front.4bpp.lz"); + const u32 gMonPalette_Clauncher[] = INCBIN_U32("graphics/pokemon/clauncher/normal.gbapal.lz"); + const u32 gMonBackPic_Clauncher[] = INCBIN_U32("graphics/pokemon/clauncher/back.4bpp.lz"); + const u32 gMonShinyPalette_Clauncher[] = INCBIN_U32("graphics/pokemon/clauncher/shiny.gbapal.lz"); + const u8 gMonIcon_Clauncher[] = INCBIN_U8("graphics/pokemon/clauncher/icon.4bpp"); + const u8 gMonFootprint_Clauncher[] = INCBIN_U8("graphics/pokemon/clauncher/footprint.1bpp"); + + const u32 gMonFrontPic_Clawitzer[] = INCBIN_U32("graphics/pokemon/clawitzer/anim_front.4bpp.lz"); + const u32 gMonPalette_Clawitzer[] = INCBIN_U32("graphics/pokemon/clawitzer/normal.gbapal.lz"); + const u32 gMonBackPic_Clawitzer[] = INCBIN_U32("graphics/pokemon/clawitzer/back.4bpp.lz"); + const u32 gMonShinyPalette_Clawitzer[] = INCBIN_U32("graphics/pokemon/clawitzer/shiny.gbapal.lz"); + const u8 gMonIcon_Clawitzer[] = INCBIN_U8("graphics/pokemon/clawitzer/icon.4bpp"); + const u8 gMonFootprint_Clawitzer[] = INCBIN_U8("graphics/pokemon/clawitzer/footprint.1bpp"); +#endif //P_FAMILY_CLAUNCHER + +#if P_FAMILY_HELIOPTILE + const u32 gMonFrontPic_Helioptile[] = INCBIN_U32("graphics/pokemon/helioptile/anim_front.4bpp.lz"); + const u32 gMonPalette_Helioptile[] = INCBIN_U32("graphics/pokemon/helioptile/normal.gbapal.lz"); + const u32 gMonBackPic_Helioptile[] = INCBIN_U32("graphics/pokemon/helioptile/back.4bpp.lz"); + const u32 gMonShinyPalette_Helioptile[] = INCBIN_U32("graphics/pokemon/helioptile/shiny.gbapal.lz"); + const u8 gMonIcon_Helioptile[] = INCBIN_U8("graphics/pokemon/helioptile/icon.4bpp"); + const u8 gMonFootprint_Helioptile[] = INCBIN_U8("graphics/pokemon/helioptile/footprint.1bpp"); + + const u32 gMonFrontPic_Heliolisk[] = INCBIN_U32("graphics/pokemon/heliolisk/anim_front.4bpp.lz"); + const u32 gMonPalette_Heliolisk[] = INCBIN_U32("graphics/pokemon/heliolisk/normal.gbapal.lz"); + const u32 gMonBackPic_Heliolisk[] = INCBIN_U32("graphics/pokemon/heliolisk/back.4bpp.lz"); + const u32 gMonShinyPalette_Heliolisk[] = INCBIN_U32("graphics/pokemon/heliolisk/shiny.gbapal.lz"); + const u8 gMonIcon_Heliolisk[] = INCBIN_U8("graphics/pokemon/heliolisk/icon.4bpp"); + const u8 gMonFootprint_Heliolisk[] = INCBIN_U8("graphics/pokemon/heliolisk/footprint.1bpp"); +#endif //P_FAMILY_HELIOPTILE + +#if P_FAMILY_TYRUNT + const u32 gMonFrontPic_Tyrunt[] = INCBIN_U32("graphics/pokemon/tyrunt/anim_front.4bpp.lz"); + const u32 gMonPalette_Tyrunt[] = INCBIN_U32("graphics/pokemon/tyrunt/normal.gbapal.lz"); + const u32 gMonBackPic_Tyrunt[] = INCBIN_U32("graphics/pokemon/tyrunt/back.4bpp.lz"); + const u32 gMonShinyPalette_Tyrunt[] = INCBIN_U32("graphics/pokemon/tyrunt/shiny.gbapal.lz"); + const u8 gMonIcon_Tyrunt[] = INCBIN_U8("graphics/pokemon/tyrunt/icon.4bpp"); + const u8 gMonFootprint_Tyrunt[] = INCBIN_U8("graphics/pokemon/tyrunt/footprint.1bpp"); + + const u32 gMonFrontPic_Tyrantrum[] = INCBIN_U32("graphics/pokemon/tyrantrum/anim_front.4bpp.lz"); + const u32 gMonPalette_Tyrantrum[] = INCBIN_U32("graphics/pokemon/tyrantrum/normal.gbapal.lz"); + const u32 gMonBackPic_Tyrantrum[] = INCBIN_U32("graphics/pokemon/tyrantrum/back.4bpp.lz"); + const u32 gMonShinyPalette_Tyrantrum[] = INCBIN_U32("graphics/pokemon/tyrantrum/shiny.gbapal.lz"); + const u8 gMonIcon_Tyrantrum[] = INCBIN_U8("graphics/pokemon/tyrantrum/icon.4bpp"); + const u8 gMonFootprint_Tyrantrum[] = INCBIN_U8("graphics/pokemon/tyrantrum/footprint.1bpp"); +#endif //P_FAMILY_TYRUNT + +#if P_FAMILY_AMAURA + const u32 gMonFrontPic_Amaura[] = INCBIN_U32("graphics/pokemon/amaura/anim_front.4bpp.lz"); + const u32 gMonPalette_Amaura[] = INCBIN_U32("graphics/pokemon/amaura/normal.gbapal.lz"); + const u32 gMonBackPic_Amaura[] = INCBIN_U32("graphics/pokemon/amaura/back.4bpp.lz"); + const u32 gMonShinyPalette_Amaura[] = INCBIN_U32("graphics/pokemon/amaura/shiny.gbapal.lz"); + const u8 gMonIcon_Amaura[] = INCBIN_U8("graphics/pokemon/amaura/icon.4bpp"); + const u8 gMonFootprint_Amaura[] = INCBIN_U8("graphics/pokemon/amaura/footprint.1bpp"); + + const u32 gMonFrontPic_Aurorus[] = INCBIN_U32("graphics/pokemon/aurorus/anim_front.4bpp.lz"); + const u32 gMonPalette_Aurorus[] = INCBIN_U32("graphics/pokemon/aurorus/normal.gbapal.lz"); + const u32 gMonBackPic_Aurorus[] = INCBIN_U32("graphics/pokemon/aurorus/back.4bpp.lz"); + const u32 gMonShinyPalette_Aurorus[] = INCBIN_U32("graphics/pokemon/aurorus/shiny.gbapal.lz"); + const u8 gMonIcon_Aurorus[] = INCBIN_U8("graphics/pokemon/aurorus/icon.4bpp"); + const u8 gMonFootprint_Aurorus[] = INCBIN_U8("graphics/pokemon/aurorus/footprint.1bpp"); +#endif //P_FAMILY_AMAURA + +#if P_FAMILY_HAWLUCHA + const u32 gMonFrontPic_Hawlucha[] = INCBIN_U32("graphics/pokemon/hawlucha/anim_front.4bpp.lz"); + const u32 gMonPalette_Hawlucha[] = INCBIN_U32("graphics/pokemon/hawlucha/normal.gbapal.lz"); + const u32 gMonBackPic_Hawlucha[] = INCBIN_U32("graphics/pokemon/hawlucha/back.4bpp.lz"); + const u32 gMonShinyPalette_Hawlucha[] = INCBIN_U32("graphics/pokemon/hawlucha/shiny.gbapal.lz"); + const u8 gMonIcon_Hawlucha[] = INCBIN_U8("graphics/pokemon/hawlucha/icon.4bpp"); + const u8 gMonFootprint_Hawlucha[] = INCBIN_U8("graphics/pokemon/hawlucha/footprint.1bpp"); +#endif //P_FAMILY_HAWLUCHA + +#if P_FAMILY_DEDENNE + const u32 gMonFrontPic_Dedenne[] = INCBIN_U32("graphics/pokemon/dedenne/anim_front.4bpp.lz"); + const u32 gMonPalette_Dedenne[] = INCBIN_U32("graphics/pokemon/dedenne/normal.gbapal.lz"); + const u32 gMonBackPic_Dedenne[] = INCBIN_U32("graphics/pokemon/dedenne/back.4bpp.lz"); + const u32 gMonShinyPalette_Dedenne[] = INCBIN_U32("graphics/pokemon/dedenne/shiny.gbapal.lz"); + const u8 gMonIcon_Dedenne[] = INCBIN_U8("graphics/pokemon/dedenne/icon.4bpp"); + const u8 gMonFootprint_Dedenne[] = INCBIN_U8("graphics/pokemon/dedenne/footprint.1bpp"); +#endif //P_FAMILY_DEDENNE + +#if P_FAMILY_CARBINK + const u32 gMonFrontPic_Carbink[] = INCBIN_U32("graphics/pokemon/carbink/anim_front.4bpp.lz"); + const u32 gMonPalette_Carbink[] = INCBIN_U32("graphics/pokemon/carbink/normal.gbapal.lz"); + const u32 gMonBackPic_Carbink[] = INCBIN_U32("graphics/pokemon/carbink/back.4bpp.lz"); + const u32 gMonShinyPalette_Carbink[] = INCBIN_U32("graphics/pokemon/carbink/shiny.gbapal.lz"); + const u8 gMonIcon_Carbink[] = INCBIN_U8("graphics/pokemon/carbink/icon.4bpp"); + const u8 gMonFootprint_Carbink[] = INCBIN_U8("graphics/pokemon/carbink/footprint.1bpp"); +#endif //P_FAMILY_CARBINK + +#if P_FAMILY_GOOMY + const u32 gMonFrontPic_Goomy[] = INCBIN_U32("graphics/pokemon/goomy/anim_front.4bpp.lz"); + const u32 gMonPalette_Goomy[] = INCBIN_U32("graphics/pokemon/goomy/normal.gbapal.lz"); + const u32 gMonBackPic_Goomy[] = INCBIN_U32("graphics/pokemon/goomy/back.4bpp.lz"); + const u32 gMonShinyPalette_Goomy[] = INCBIN_U32("graphics/pokemon/goomy/shiny.gbapal.lz"); + const u8 gMonIcon_Goomy[] = INCBIN_U8("graphics/pokemon/goomy/icon.4bpp"); + const u8 gMonFootprint_Goomy[] = INCBIN_U8("graphics/pokemon/goomy/footprint.1bpp"); + + const u32 gMonFrontPic_Sliggoo[] = INCBIN_U32("graphics/pokemon/sliggoo/anim_front.4bpp.lz"); + const u32 gMonPalette_Sliggoo[] = INCBIN_U32("graphics/pokemon/sliggoo/normal.gbapal.lz"); + const u32 gMonBackPic_Sliggoo[] = INCBIN_U32("graphics/pokemon/sliggoo/back.4bpp.lz"); + const u32 gMonShinyPalette_Sliggoo[] = INCBIN_U32("graphics/pokemon/sliggoo/shiny.gbapal.lz"); + const u8 gMonIcon_Sliggoo[] = INCBIN_U8("graphics/pokemon/sliggoo/icon.4bpp"); + const u8 gMonFootprint_Sliggoo[] = INCBIN_U8("graphics/pokemon/sliggoo/footprint.1bpp"); + +#if P_HISUIAN_FORMS + const u32 gMonFrontPic_SliggooHisuian[] = INCBIN_U32("graphics/pokemon/sliggoo/hisuian/front.4bpp.lz"); + const u32 gMonPalette_SliggooHisuian[] = INCBIN_U32("graphics/pokemon/sliggoo/hisuian/normal.gbapal.lz"); + const u32 gMonBackPic_SliggooHisuian[] = INCBIN_U32("graphics/pokemon/sliggoo/hisuian/back.4bpp.lz"); + const u32 gMonShinyPalette_SliggooHisuian[] = INCBIN_U32("graphics/pokemon/sliggoo/hisuian/shiny.gbapal.lz"); + const u8 gMonIcon_SliggooHisuian[] = INCBIN_U8("graphics/pokemon/sliggoo/hisuian/icon.4bpp"); +#endif //P_HISUIAN_FORMS + + const u32 gMonFrontPic_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/anim_front.4bpp.lz"); + const u32 gMonPalette_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/normal.gbapal.lz"); + const u32 gMonBackPic_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/back.4bpp.lz"); + const u32 gMonShinyPalette_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/shiny.gbapal.lz"); + const u8 gMonIcon_Goodra[] = INCBIN_U8("graphics/pokemon/goodra/icon.4bpp"); + const u8 gMonFootprint_Goodra[] = INCBIN_U8("graphics/pokemon/goodra/footprint.1bpp"); + +#if P_HISUIAN_FORMS + const u32 gMonFrontPic_GoodraHisuian[] = INCBIN_U32("graphics/pokemon/goodra/hisuian/front.4bpp.lz"); + const u32 gMonPalette_GoodraHisuian[] = INCBIN_U32("graphics/pokemon/goodra/hisuian/normal.gbapal.lz"); + const u32 gMonBackPic_GoodraHisuian[] = INCBIN_U32("graphics/pokemon/goodra/hisuian/back.4bpp.lz"); + const u32 gMonShinyPalette_GoodraHisuian[] = INCBIN_U32("graphics/pokemon/goodra/hisuian/shiny.gbapal.lz"); + const u8 gMonIcon_GoodraHisuian[] = INCBIN_U8("graphics/pokemon/goodra/hisuian/icon.4bpp"); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_GOOMY + +#if P_FAMILY_KLEFKI + const u32 gMonFrontPic_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/anim_front.4bpp.lz"); + const u32 gMonPalette_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/normal.gbapal.lz"); + const u32 gMonBackPic_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/back.4bpp.lz"); + const u32 gMonShinyPalette_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/shiny.gbapal.lz"); + const u8 gMonIcon_Klefki[] = INCBIN_U8("graphics/pokemon/klefki/icon.4bpp"); + const u8 gMonFootprint_Klefki[] = INCBIN_U8("graphics/pokemon/klefki/footprint.1bpp"); +#endif //P_FAMILY_KLEFKI + +#if P_FAMILY_PHANTUMP + const u32 gMonFrontPic_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/anim_front.4bpp.lz"); + const u32 gMonPalette_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/normal.gbapal.lz"); + const u32 gMonBackPic_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/back.4bpp.lz"); + const u32 gMonShinyPalette_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/shiny.gbapal.lz"); + const u8 gMonIcon_Phantump[] = INCBIN_U8("graphics/pokemon/phantump/icon.4bpp"); + const u8 gMonFootprint_Phantump[] = INCBIN_U8("graphics/pokemon/phantump/footprint.1bpp"); + + const u32 gMonFrontPic_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/anim_front.4bpp.lz"); + const u32 gMonPalette_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/normal.gbapal.lz"); + const u32 gMonBackPic_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/back.4bpp.lz"); + const u32 gMonShinyPalette_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/shiny.gbapal.lz"); + const u8 gMonIcon_Trevenant[] = INCBIN_U8("graphics/pokemon/trevenant/icon.4bpp"); + const u8 gMonFootprint_Trevenant[] = INCBIN_U8("graphics/pokemon/trevenant/footprint.1bpp"); +#endif //P_FAMILY_PHANTUMP + +#if P_FAMILY_PUMPKABOO + const u32 gMonPalette_Pumpkaboo[] = INCBIN_U32("graphics/pokemon/pumpkaboo/normal.gbapal.lz"); + const u32 gMonShinyPalette_Pumpkaboo[] = INCBIN_U32("graphics/pokemon/pumpkaboo/shiny.gbapal.lz"); + const u8 gMonIcon_Pumpkaboo[] = INCBIN_U8("graphics/pokemon/pumpkaboo/icon.4bpp"); + const u8 gMonFootprint_Pumpkaboo[] = INCBIN_U8("graphics/pokemon/pumpkaboo/footprint.1bpp"); + + const u32 gMonFrontPic_PumpkabooAverage[] = INCBIN_U32("graphics/pokemon/pumpkaboo/anim_front.4bpp.lz"); + const u32 gMonBackPic_PumpkabooAverage[] = INCBIN_U32("graphics/pokemon/pumpkaboo/back.4bpp.lz"); + + const u32 gMonFrontPic_PumpkabooSmall[] = INCBIN_U32("graphics/pokemon/pumpkaboo/small/anim_front.4bpp.lz"); + const u32 gMonBackPic_PumpkabooSmall[] = INCBIN_U32("graphics/pokemon/pumpkaboo/small/back.4bpp.lz"); + + const u32 gMonFrontPic_PumpkabooLarge[] = INCBIN_U32("graphics/pokemon/pumpkaboo/large/anim_front.4bpp.lz"); + const u32 gMonBackPic_PumpkabooLarge[] = INCBIN_U32("graphics/pokemon/pumpkaboo/large/back.4bpp.lz"); + + const u32 gMonFrontPic_PumpkabooSuper[] = INCBIN_U32("graphics/pokemon/pumpkaboo/super/anim_front.4bpp.lz"); + const u32 gMonBackPic_PumpkabooSuper[] = INCBIN_U32("graphics/pokemon/pumpkaboo/super/back.4bpp.lz"); + + const u32 gMonPalette_Gourgeist[] = INCBIN_U32("graphics/pokemon/gourgeist/normal.gbapal.lz"); + const u32 gMonShinyPalette_Gourgeist[] = INCBIN_U32("graphics/pokemon/gourgeist/shiny.gbapal.lz"); + const u8 gMonIcon_Gourgeist[] = INCBIN_U8("graphics/pokemon/gourgeist/icon.4bpp"); + const u8 gMonFootprint_Gourgeist[] = INCBIN_U8("graphics/pokemon/gourgeist/footprint.1bpp"); + + const u32 gMonFrontPic_GourgeistAverage[] = INCBIN_U32("graphics/pokemon/gourgeist/anim_front.4bpp.lz"); + const u32 gMonBackPic_GourgeistAverage[] = INCBIN_U32("graphics/pokemon/gourgeist/back.4bpp.lz"); + + const u32 gMonFrontPic_GourgeistSmall[] = INCBIN_U32("graphics/pokemon/gourgeist/small/anim_front.4bpp.lz"); + const u32 gMonBackPic_GourgeistSmall[] = INCBIN_U32("graphics/pokemon/gourgeist/small/back.4bpp.lz"); + + const u32 gMonFrontPic_GourgeistLarge[] = INCBIN_U32("graphics/pokemon/gourgeist/large/anim_front.4bpp.lz"); + const u32 gMonBackPic_GourgeistLarge[] = INCBIN_U32("graphics/pokemon/gourgeist/large/back.4bpp.lz"); + + const u32 gMonFrontPic_GourgeistSuper[] = INCBIN_U32("graphics/pokemon/gourgeist/super/anim_front.4bpp.lz"); + const u32 gMonBackPic_GourgeistSuper[] = INCBIN_U32("graphics/pokemon/gourgeist/super/back.4bpp.lz"); +#endif //P_FAMILY_PUMPKABOO + +#if P_FAMILY_BERGMITE + const u32 gMonFrontPic_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/anim_front.4bpp.lz"); + const u32 gMonPalette_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/normal.gbapal.lz"); + const u32 gMonBackPic_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/back.4bpp.lz"); + const u32 gMonShinyPalette_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/shiny.gbapal.lz"); + const u8 gMonIcon_Bergmite[] = INCBIN_U8("graphics/pokemon/bergmite/icon.4bpp"); + const u8 gMonFootprint_Bergmite[] = INCBIN_U8("graphics/pokemon/bergmite/footprint.1bpp"); + + const u32 gMonFrontPic_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/anim_front.4bpp.lz"); + const u32 gMonPalette_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/normal.gbapal.lz"); + const u32 gMonBackPic_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/back.4bpp.lz"); + const u32 gMonShinyPalette_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/shiny.gbapal.lz"); + const u8 gMonIcon_Avalugg[] = INCBIN_U8("graphics/pokemon/avalugg/icon.4bpp"); + const u8 gMonFootprint_Avalugg[] = INCBIN_U8("graphics/pokemon/avalugg/footprint.1bpp"); + +#if P_HISUIAN_FORMS + const u32 gMonFrontPic_AvaluggHisuian[] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/front.4bpp.lz"); + const u32 gMonPalette_AvaluggHisuian[] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/normal.gbapal.lz"); + const u32 gMonBackPic_AvaluggHisuian[] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/back.4bpp.lz"); + const u32 gMonShinyPalette_AvaluggHisuian[] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/shiny.gbapal.lz"); + const u8 gMonIcon_AvaluggHisuian[] = INCBIN_U8("graphics/pokemon/avalugg/hisuian/icon.4bpp"); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_BERGMITE + +#if P_FAMILY_NOIBAT + const u32 gMonFrontPic_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/anim_front.4bpp.lz"); + const u32 gMonPalette_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/normal.gbapal.lz"); + const u32 gMonBackPic_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/back.4bpp.lz"); + const u32 gMonShinyPalette_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/shiny.gbapal.lz"); + const u8 gMonIcon_Noibat[] = INCBIN_U8("graphics/pokemon/noibat/icon.4bpp"); + const u8 gMonFootprint_Noibat[] = INCBIN_U8("graphics/pokemon/noibat/footprint.1bpp"); + + const u32 gMonFrontPic_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/anim_front.4bpp.lz"); + const u32 gMonPalette_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/normal.gbapal.lz"); + const u32 gMonBackPic_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/back.4bpp.lz"); + const u32 gMonShinyPalette_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/shiny.gbapal.lz"); + const u8 gMonIcon_Noivern[] = INCBIN_U8("graphics/pokemon/noivern/icon.4bpp"); + const u8 gMonFootprint_Noivern[] = INCBIN_U8("graphics/pokemon/noivern/footprint.1bpp"); +#endif //P_FAMILY_NOIBAT + +#if P_FAMILY_XERNEAS + const u32 gMonFrontPic_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/front.4bpp.lz"); + const u32 gMonPalette_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/normal.gbapal.lz"); + const u32 gMonBackPic_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/back.4bpp.lz"); + const u32 gMonShinyPalette_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/shiny.gbapal.lz"); + const u8 gMonIcon_XerneasNeutral[] = INCBIN_U8("graphics/pokemon/xerneas/icon.4bpp"); + const u8 gMonFootprint_Xerneas[] = INCBIN_U8("graphics/pokemon/xerneas/footprint.1bpp"); + + const u32 gMonFrontPic_XerneasActive[] = INCBIN_U32("graphics/pokemon/xerneas/active/anim_front.4bpp.lz"); + const u32 gMonPalette_XerneasActive[] = INCBIN_U32("graphics/pokemon/xerneas/active/normal.gbapal.lz"); + const u32 gMonBackPic_XerneasActive[] = INCBIN_U32("graphics/pokemon/xerneas/active/back.4bpp.lz"); + const u32 gMonShinyPalette_XerneasActive[] = INCBIN_U32("graphics/pokemon/xerneas/active/shiny.gbapal.lz"); + const u8 gMonIcon_XerneasActive[] = INCBIN_U8("graphics/pokemon/xerneas/active/icon.4bpp"); +#endif //P_FAMILY_XERNEAS + +#if P_FAMILY_YVELTAL + const u32 gMonFrontPic_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/anim_front.4bpp.lz"); + const u32 gMonPalette_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/normal.gbapal.lz"); + const u32 gMonBackPic_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/back.4bpp.lz"); + const u32 gMonShinyPalette_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/shiny.gbapal.lz"); + const u8 gMonIcon_Yveltal[] = INCBIN_U8("graphics/pokemon/yveltal/icon.4bpp"); + const u8 gMonFootprint_Yveltal[] = INCBIN_U8("graphics/pokemon/yveltal/footprint.1bpp"); +#endif //P_FAMILY_YVELTAL + +#if P_FAMILY_ZYGARDE + const u32 gMonFrontPic_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/anim_front.4bpp.lz"); + const u32 gMonPalette_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/normal.gbapal.lz"); + const u32 gMonBackPic_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/back.4bpp.lz"); + const u32 gMonShinyPalette_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/shiny.gbapal.lz"); + const u8 gMonIcon_Zygarde50[] = INCBIN_U8("graphics/pokemon/zygarde/icon.4bpp"); + const u8 gMonFootprint_Zygarde[] = INCBIN_U8("graphics/pokemon/zygarde/footprint.1bpp"); + + const u32 gMonFrontPic_Zygarde10[] = INCBIN_U32("graphics/pokemon/zygarde/10_percent/anim_front.4bpp.lz"); + const u32 gMonPalette_Zygarde10[] = INCBIN_U32("graphics/pokemon/zygarde/10_percent/normal.gbapal.lz"); + const u32 gMonBackPic_Zygarde10[] = INCBIN_U32("graphics/pokemon/zygarde/10_percent/back.4bpp.lz"); + const u32 gMonShinyPalette_Zygarde10[] = INCBIN_U32("graphics/pokemon/zygarde/10_percent/shiny.gbapal.lz"); + const u8 gMonIcon_Zygarde10[] = INCBIN_U8("graphics/pokemon/zygarde/10_percent/icon.4bpp"); + + const u32 gMonFrontPic_ZygardeComplete[] = INCBIN_U32("graphics/pokemon/zygarde/complete/anim_front.4bpp.lz"); + const u32 gMonPalette_ZygardeComplete[] = INCBIN_U32("graphics/pokemon/zygarde/complete/normal.gbapal.lz"); + const u32 gMonBackPic_ZygardeComplete[] = INCBIN_U32("graphics/pokemon/zygarde/complete/back.4bpp.lz"); + const u32 gMonShinyPalette_ZygardeComplete[] = INCBIN_U32("graphics/pokemon/zygarde/complete/shiny.gbapal.lz"); + const u8 gMonIcon_ZygardeComplete[] = INCBIN_U8("graphics/pokemon/zygarde/complete/icon.4bpp"); +#endif //P_FAMILY_ZYGARDE + +#if P_FAMILY_DIANCIE + const u32 gMonFrontPic_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/anim_front.4bpp.lz"); + const u32 gMonPalette_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/normal.gbapal.lz"); + const u32 gMonBackPic_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/back.4bpp.lz"); + const u32 gMonShinyPalette_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/shiny.gbapal.lz"); + const u8 gMonIcon_Diancie[] = INCBIN_U8("graphics/pokemon/diancie/icon.4bpp"); + const u8 gMonFootprint_Diancie[] = INCBIN_U8("graphics/pokemon/diancie/footprint.1bpp"); + +#if P_MEGA_EVOLUTIONS + const u32 gMonFrontPic_DiancieMega[] = INCBIN_U32("graphics/pokemon/diancie/mega/front.4bpp.lz"); + const u32 gMonPalette_DiancieMega[] = INCBIN_U32("graphics/pokemon/diancie/mega/normal.gbapal.lz"); + const u32 gMonBackPic_DiancieMega[] = INCBIN_U32("graphics/pokemon/diancie/mega/back.4bpp.lz"); + const u32 gMonShinyPalette_DiancieMega[] = INCBIN_U32("graphics/pokemon/diancie/mega/shiny.gbapal.lz"); + const u8 gMonIcon_DiancieMega[] = INCBIN_U8("graphics/pokemon/diancie/mega/icon.4bpp"); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_DIANCIE + +#if P_FAMILY_HOOPA + const u32 gMonFrontPic_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/anim_front.4bpp.lz"); + const u32 gMonPalette_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/normal.gbapal.lz"); + const u32 gMonBackPic_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/back.4bpp.lz"); + const u32 gMonShinyPalette_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/shiny.gbapal.lz"); + const u8 gMonIcon_HoopaConfined[] = INCBIN_U8("graphics/pokemon/hoopa/icon.4bpp"); + const u8 gMonFootprint_Hoopa[] = INCBIN_U8("graphics/pokemon/hoopa/footprint.1bpp"); + + const u32 gMonFrontPic_HoopaUnbound[] = INCBIN_U32("graphics/pokemon/hoopa/unbound/anim_front.4bpp.lz"); + const u32 gMonPalette_HoopaUnbound[] = INCBIN_U32("graphics/pokemon/hoopa/unbound/normal.gbapal.lz"); + const u32 gMonBackPic_HoopaUnbound[] = INCBIN_U32("graphics/pokemon/hoopa/unbound/back.4bpp.lz"); + const u32 gMonShinyPalette_HoopaUnbound[] = INCBIN_U32("graphics/pokemon/hoopa/unbound/shiny.gbapal.lz"); + const u8 gMonIcon_HoopaUnbound[] = INCBIN_U8("graphics/pokemon/hoopa/unbound/icon.4bpp"); +#endif //P_FAMILY_HOOPA + +#if P_FAMILY_VOLCANION + const u32 gMonFrontPic_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/anim_front.4bpp.lz"); + const u32 gMonPalette_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/normal.gbapal.lz"); + const u32 gMonBackPic_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/back.4bpp.lz"); + const u32 gMonShinyPalette_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/shiny.gbapal.lz"); + const u8 gMonIcon_Volcanion[] = INCBIN_U8("graphics/pokemon/volcanion/icon.4bpp"); + const u8 gMonFootprint_Volcanion[] = INCBIN_U8("graphics/pokemon/volcanion/footprint.1bpp"); +#endif //P_FAMILY_VOLCANION + +#if P_FAMILY_ROWLET + const u32 gMonFrontPic_Rowlet[] = INCBIN_U32("graphics/pokemon/rowlet/anim_front.4bpp.lz"); + const u32 gMonPalette_Rowlet[] = INCBIN_U32("graphics/pokemon/rowlet/normal.gbapal.lz"); + const u32 gMonBackPic_Rowlet[] = INCBIN_U32("graphics/pokemon/rowlet/back.4bpp.lz"); + const u32 gMonShinyPalette_Rowlet[] = INCBIN_U32("graphics/pokemon/rowlet/shiny.gbapal.lz"); + const u8 gMonIcon_Rowlet[] = INCBIN_U8("graphics/pokemon/rowlet/icon.4bpp"); + const u8 gMonFootprint_Rowlet[] = INCBIN_U8("graphics/pokemon/rowlet/footprint.1bpp"); + + const u32 gMonFrontPic_Dartrix[] = INCBIN_U32("graphics/pokemon/dartrix/anim_front.4bpp.lz"); + const u32 gMonPalette_Dartrix[] = INCBIN_U32("graphics/pokemon/dartrix/normal.gbapal.lz"); + const u32 gMonBackPic_Dartrix[] = INCBIN_U32("graphics/pokemon/dartrix/back.4bpp.lz"); + const u32 gMonShinyPalette_Dartrix[] = INCBIN_U32("graphics/pokemon/dartrix/shiny.gbapal.lz"); + const u8 gMonIcon_Dartrix[] = INCBIN_U8("graphics/pokemon/dartrix/icon.4bpp"); + const u8 gMonFootprint_Dartrix[] = INCBIN_U8("graphics/pokemon/dartrix/footprint.1bpp"); + + const u32 gMonFrontPic_Decidueye[] = INCBIN_U32("graphics/pokemon/decidueye/anim_front.4bpp.lz"); + const u32 gMonPalette_Decidueye[] = INCBIN_U32("graphics/pokemon/decidueye/normal.gbapal.lz"); + const u32 gMonBackPic_Decidueye[] = INCBIN_U32("graphics/pokemon/decidueye/back.4bpp.lz"); + const u32 gMonShinyPalette_Decidueye[] = INCBIN_U32("graphics/pokemon/decidueye/shiny.gbapal.lz"); + const u8 gMonIcon_Decidueye[] = INCBIN_U8("graphics/pokemon/decidueye/icon.4bpp"); + const u8 gMonFootprint_Decidueye[] = INCBIN_U8("graphics/pokemon/decidueye/footprint.1bpp"); + +#if P_HISUIAN_FORMS + const u32 gMonFrontPic_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/front.4bpp.lz"); + const u32 gMonPalette_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/normal.gbapal.lz"); + const u32 gMonBackPic_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/back.4bpp.lz"); + const u32 gMonShinyPalette_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/shiny.gbapal.lz"); + const u8 gMonIcon_DecidueyeHisuian[] = INCBIN_U8("graphics/pokemon/decidueye/hisuian/icon.4bpp"); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_ROWLET + +#if P_FAMILY_LITTEN + const u32 gMonFrontPic_Litten[] = INCBIN_U32("graphics/pokemon/litten/front.4bpp.lz"); + const u32 gMonPalette_Litten[] = INCBIN_U32("graphics/pokemon/litten/normal.gbapal.lz"); + const u32 gMonBackPic_Litten[] = INCBIN_U32("graphics/pokemon/litten/back.4bpp.lz"); + const u32 gMonShinyPalette_Litten[] = INCBIN_U32("graphics/pokemon/litten/shiny.gbapal.lz"); + const u8 gMonIcon_Litten[] = INCBIN_U8("graphics/pokemon/litten/icon.4bpp"); + const u8 gMonFootprint_Litten[] = INCBIN_U8("graphics/pokemon/litten/footprint.1bpp"); + + const u32 gMonFrontPic_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/front.4bpp.lz"); + const u32 gMonPalette_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/normal.gbapal.lz"); + const u32 gMonBackPic_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/back.4bpp.lz"); + const u32 gMonShinyPalette_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/shiny.gbapal.lz"); + const u8 gMonIcon_Torracat[] = INCBIN_U8("graphics/pokemon/torracat/icon.4bpp"); + const u8 gMonFootprint_Torracat[] = INCBIN_U8("graphics/pokemon/torracat/footprint.1bpp"); + + const u32 gMonFrontPic_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/front.4bpp.lz"); + const u32 gMonPalette_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/normal.gbapal.lz"); + const u32 gMonBackPic_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/back.4bpp.lz"); + const u32 gMonShinyPalette_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/shiny.gbapal.lz"); + const u8 gMonIcon_Incineroar[] = INCBIN_U8("graphics/pokemon/incineroar/icon.4bpp"); + const u8 gMonFootprint_Incineroar[] = INCBIN_U8("graphics/pokemon/incineroar/footprint.1bpp"); +#endif //P_FAMILY_LITTEN + +#if P_FAMILY_POPPLIO + const u32 gMonFrontPic_Popplio[] = INCBIN_U32("graphics/pokemon/popplio/front.4bpp.lz"); + const u32 gMonPalette_Popplio[] = INCBIN_U32("graphics/pokemon/popplio/normal.gbapal.lz"); + const u32 gMonBackPic_Popplio[] = INCBIN_U32("graphics/pokemon/popplio/back.4bpp.lz"); + const u32 gMonShinyPalette_Popplio[] = INCBIN_U32("graphics/pokemon/popplio/shiny.gbapal.lz"); + const u8 gMonIcon_Popplio[] = INCBIN_U8("graphics/pokemon/popplio/icon.4bpp"); + const u8 gMonFootprint_Popplio[] = INCBIN_U8("graphics/pokemon/popplio/footprint.1bpp"); + + const u32 gMonFrontPic_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/front.4bpp.lz"); + const u32 gMonPalette_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/normal.gbapal.lz"); + const u32 gMonBackPic_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/back.4bpp.lz"); + const u32 gMonShinyPalette_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/shiny.gbapal.lz"); + const u8 gMonIcon_Brionne[] = INCBIN_U8("graphics/pokemon/brionne/icon.4bpp"); + const u8 gMonFootprint_Brionne[] = INCBIN_U8("graphics/pokemon/brionne/footprint.1bpp"); + + const u32 gMonFrontPic_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/front.4bpp.lz"); + const u32 gMonPalette_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/normal.gbapal.lz"); + const u32 gMonBackPic_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/back.4bpp.lz"); + const u32 gMonShinyPalette_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/shiny.gbapal.lz"); + const u8 gMonIcon_Primarina[] = INCBIN_U8("graphics/pokemon/primarina/icon.4bpp"); + const u8 gMonFootprint_Primarina[] = INCBIN_U8("graphics/pokemon/primarina/footprint.1bpp"); +#endif //P_FAMILY_POPPLIO + +#if P_FAMILY_PIKIPEK + const u32 gMonFrontPic_Pikipek[] = INCBIN_U32("graphics/pokemon/pikipek/anim_front.4bpp.lz"); + const u32 gMonPalette_Pikipek[] = INCBIN_U32("graphics/pokemon/pikipek/normal.gbapal.lz"); + const u32 gMonBackPic_Pikipek[] = INCBIN_U32("graphics/pokemon/pikipek/back.4bpp.lz"); + const u32 gMonShinyPalette_Pikipek[] = INCBIN_U32("graphics/pokemon/pikipek/shiny.gbapal.lz"); + const u8 gMonIcon_Pikipek[] = INCBIN_U8("graphics/pokemon/pikipek/icon.4bpp"); + const u8 gMonFootprint_Pikipek[] = INCBIN_U8("graphics/pokemon/pikipek/footprint.1bpp"); + + const u32 gMonFrontPic_Trumbeak[] = INCBIN_U32("graphics/pokemon/trumbeak/anim_front.4bpp.lz"); + const u32 gMonPalette_Trumbeak[] = INCBIN_U32("graphics/pokemon/trumbeak/normal.gbapal.lz"); + const u32 gMonBackPic_Trumbeak[] = INCBIN_U32("graphics/pokemon/trumbeak/back.4bpp.lz"); + const u32 gMonShinyPalette_Trumbeak[] = INCBIN_U32("graphics/pokemon/trumbeak/shiny.gbapal.lz"); + const u8 gMonIcon_Trumbeak[] = INCBIN_U8("graphics/pokemon/trumbeak/icon.4bpp"); + const u8 gMonFootprint_Trumbeak[] = INCBIN_U8("graphics/pokemon/trumbeak/footprint.1bpp"); + + const u32 gMonFrontPic_Toucannon[] = INCBIN_U32("graphics/pokemon/toucannon/anim_front.4bpp.lz"); + const u32 gMonPalette_Toucannon[] = INCBIN_U32("graphics/pokemon/toucannon/normal.gbapal.lz"); + const u32 gMonBackPic_Toucannon[] = INCBIN_U32("graphics/pokemon/toucannon/back.4bpp.lz"); + const u32 gMonShinyPalette_Toucannon[] = INCBIN_U32("graphics/pokemon/toucannon/shiny.gbapal.lz"); + const u8 gMonIcon_Toucannon[] = INCBIN_U8("graphics/pokemon/toucannon/icon.4bpp"); + const u8 gMonFootprint_Toucannon[] = INCBIN_U8("graphics/pokemon/toucannon/footprint.1bpp"); +#endif //P_FAMILY_PIKIPEK + +#if P_FAMILY_YUNGOOS + const u32 gMonFrontPic_Yungoos[] = INCBIN_U32("graphics/pokemon/yungoos/front.4bpp.lz"); + const u32 gMonPalette_Yungoos[] = INCBIN_U32("graphics/pokemon/yungoos/normal.gbapal.lz"); + const u32 gMonBackPic_Yungoos[] = INCBIN_U32("graphics/pokemon/yungoos/back.4bpp.lz"); + const u32 gMonShinyPalette_Yungoos[] = INCBIN_U32("graphics/pokemon/yungoos/shiny.gbapal.lz"); + const u8 gMonIcon_Yungoos[] = INCBIN_U8("graphics/pokemon/yungoos/icon.4bpp"); + const u8 gMonFootprint_Yungoos[] = INCBIN_U8("graphics/pokemon/yungoos/footprint.1bpp"); + + const u32 gMonFrontPic_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/front.4bpp.lz"); + const u32 gMonPalette_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/normal.gbapal.lz"); + const u32 gMonBackPic_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/back.4bpp.lz"); + const u32 gMonShinyPalette_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/shiny.gbapal.lz"); + const u8 gMonIcon_Gumshoos[] = INCBIN_U8("graphics/pokemon/gumshoos/icon.4bpp"); + const u8 gMonFootprint_Gumshoos[] = INCBIN_U8("graphics/pokemon/gumshoos/footprint.1bpp"); +#endif //P_FAMILY_YUNGOOS + +#if P_FAMILY_GRUBBIN + const u32 gMonFrontPic_Grubbin[] = INCBIN_U32("graphics/pokemon/grubbin/anim_front.4bpp.lz"); + const u32 gMonPalette_Grubbin[] = INCBIN_U32("graphics/pokemon/grubbin/normal.gbapal.lz"); + const u32 gMonBackPic_Grubbin[] = INCBIN_U32("graphics/pokemon/grubbin/back.4bpp.lz"); + const u32 gMonShinyPalette_Grubbin[] = INCBIN_U32("graphics/pokemon/grubbin/shiny.gbapal.lz"); + const u8 gMonIcon_Grubbin[] = INCBIN_U8("graphics/pokemon/grubbin/icon.4bpp"); + const u8 gMonFootprint_Grubbin[] = INCBIN_U8("graphics/pokemon/grubbin/footprint.1bpp"); + + const u32 gMonFrontPic_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/anim_front.4bpp.lz"); + const u32 gMonPalette_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/normal.gbapal.lz"); + const u32 gMonBackPic_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/back.4bpp.lz"); + const u32 gMonShinyPalette_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/shiny.gbapal.lz"); + const u8 gMonIcon_Charjabug[] = INCBIN_U8("graphics/pokemon/charjabug/icon.4bpp"); + const u8 gMonFootprint_Charjabug[] = INCBIN_U8("graphics/pokemon/charjabug/footprint.1bpp"); + + const u32 gMonFrontPic_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/anim_front.4bpp.lz"); + const u32 gMonPalette_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/normal.gbapal.lz"); + const u32 gMonBackPic_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/back.4bpp.lz"); + const u32 gMonShinyPalette_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/shiny.gbapal.lz"); + const u8 gMonIcon_Vikavolt[] = INCBIN_U8("graphics/pokemon/vikavolt/icon.4bpp"); + const u8 gMonFootprint_Vikavolt[] = INCBIN_U8("graphics/pokemon/vikavolt/footprint.1bpp"); +#endif //P_FAMILY_GRUBBIN + +#if P_FAMILY_CRABRAWLER + const u32 gMonFrontPic_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/front.4bpp.lz"); + const u32 gMonPalette_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/normal.gbapal.lz"); + const u32 gMonBackPic_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/back.4bpp.lz"); + const u32 gMonShinyPalette_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/shiny.gbapal.lz"); + const u8 gMonIcon_Crabrawler[] = INCBIN_U8("graphics/pokemon/crabrawler/icon.4bpp"); + const u8 gMonFootprint_Crabrawler[] = INCBIN_U8("graphics/pokemon/crabrawler/footprint.1bpp"); + + const u32 gMonFrontPic_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/front.4bpp.lz"); + const u32 gMonPalette_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/normal.gbapal.lz"); + const u32 gMonBackPic_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/back.4bpp.lz"); + const u32 gMonShinyPalette_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/shiny.gbapal.lz"); + const u8 gMonIcon_Crabominable[] = INCBIN_U8("graphics/pokemon/crabominable/icon.4bpp"); + const u8 gMonFootprint_Crabominable[] = INCBIN_U8("graphics/pokemon/crabominable/footprint.1bpp"); +#endif //P_FAMILY_CRABRAWLER + +#if P_FAMILY_ORICORIO + const u32 gMonFrontPic_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/front.4bpp.lz"); + const u32 gMonPalette_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/normal.gbapal.lz"); + const u32 gMonBackPic_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/back.4bpp.lz"); + const u32 gMonShinyPalette_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/shiny.gbapal.lz"); + const u8 gMonIcon_OricorioBaile[] = INCBIN_U8("graphics/pokemon/oricorio/icon.4bpp"); + const u8 gMonFootprint_Oricorio[] = INCBIN_U8("graphics/pokemon/oricorio/footprint.1bpp"); + + const u32 gMonFrontPic_OricorioPomPom[] = INCBIN_U32("graphics/pokemon/oricorio/pom_pom/front.4bpp.lz"); + const u32 gMonPalette_OricorioPomPom[] = INCBIN_U32("graphics/pokemon/oricorio/pom_pom/normal.gbapal.lz"); + const u32 gMonBackPic_OricorioPomPom[] = INCBIN_U32("graphics/pokemon/oricorio/pom_pom/back.4bpp.lz"); + const u32 gMonShinyPalette_OricorioPomPom[] = INCBIN_U32("graphics/pokemon/oricorio/pom_pom/shiny.gbapal.lz"); + const u8 gMonIcon_OricorioPomPom[] = INCBIN_U8("graphics/pokemon/oricorio/pom_pom/icon.4bpp"); + + const u32 gMonFrontPic_OricorioPau[] = INCBIN_U32("graphics/pokemon/oricorio/pau/front.4bpp.lz"); + const u32 gMonPalette_OricorioPau[] = INCBIN_U32("graphics/pokemon/oricorio/pau/normal.gbapal.lz"); + const u32 gMonBackPic_OricorioPau[] = INCBIN_U32("graphics/pokemon/oricorio/pau/back.4bpp.lz"); + const u32 gMonShinyPalette_OricorioPau[] = INCBIN_U32("graphics/pokemon/oricorio/pau/shiny.gbapal.lz"); + const u8 gMonIcon_OricorioPau[] = INCBIN_U8("graphics/pokemon/oricorio/pau/icon.4bpp"); + + const u32 gMonFrontPic_OricorioSensu[] = INCBIN_U32("graphics/pokemon/oricorio/sensu/front.4bpp.lz"); + const u32 gMonPalette_OricorioSensu[] = INCBIN_U32("graphics/pokemon/oricorio/sensu/normal.gbapal.lz"); + const u32 gMonBackPic_OricorioSensu[] = INCBIN_U32("graphics/pokemon/oricorio/sensu/back.4bpp.lz"); + const u32 gMonShinyPalette_OricorioSensu[] = INCBIN_U32("graphics/pokemon/oricorio/sensu/shiny.gbapal.lz"); + const u8 gMonIcon_OricorioSensu[] = INCBIN_U8("graphics/pokemon/oricorio/sensu/icon.4bpp"); +#endif //P_FAMILY_ORICORIO + +#if P_FAMILY_CUTIEFLY + const u32 gMonFrontPic_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/anim_front.4bpp.lz"); + const u32 gMonPalette_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/normal.gbapal.lz"); + const u32 gMonBackPic_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/back.4bpp.lz"); + const u32 gMonShinyPalette_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/shiny.gbapal.lz"); + const u8 gMonIcon_Cutiefly[] = INCBIN_U8("graphics/pokemon/cutiefly/icon.4bpp"); + const u8 gMonFootprint_Cutiefly[] = INCBIN_U8("graphics/pokemon/cutiefly/footprint.1bpp"); + + const u32 gMonFrontPic_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/anim_front.4bpp.lz"); + const u32 gMonPalette_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/normal.gbapal.lz"); + const u32 gMonBackPic_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/back.4bpp.lz"); + const u32 gMonShinyPalette_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/shiny.gbapal.lz"); + const u8 gMonIcon_Ribombee[] = INCBIN_U8("graphics/pokemon/ribombee/icon.4bpp"); + const u8 gMonFootprint_Ribombee[] = INCBIN_U8("graphics/pokemon/ribombee/footprint.1bpp"); +#endif //P_FAMILY_CUTIEFLY + +#if P_FAMILY_ROCKRUFF + const u32 gMonFrontPic_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/anim_front.4bpp.lz"); + const u32 gMonPalette_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/normal.gbapal.lz"); + const u32 gMonBackPic_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/back.4bpp.lz"); + const u32 gMonShinyPalette_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/shiny.gbapal.lz"); + const u8 gMonIcon_Rockruff[] = INCBIN_U8("graphics/pokemon/rockruff/icon.4bpp"); + const u8 gMonFootprint_Rockruff[] = INCBIN_U8("graphics/pokemon/rockruff/footprint.1bpp"); + + const u32 gMonFrontPic_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/anim_front.4bpp.lz"); + const u32 gMonPalette_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/normal.gbapal.lz"); + const u32 gMonBackPic_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/back.4bpp.lz"); + const u32 gMonShinyPalette_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/shiny.gbapal.lz"); + const u8 gMonIcon_LycanrocMidday[] = INCBIN_U8("graphics/pokemon/lycanroc/icon.4bpp"); + const u8 gMonFootprint_Lycanroc[] = INCBIN_U8("graphics/pokemon/lycanroc/footprint.1bpp"); + + const u32 gMonFrontPic_LycanrocMidnight[] = INCBIN_U32("graphics/pokemon/lycanroc/midnight/anim_front.4bpp.lz"); + const u32 gMonPalette_LycanrocMidnight[] = INCBIN_U32("graphics/pokemon/lycanroc/midnight/normal.gbapal.lz"); + const u32 gMonBackPic_LycanrocMidnight[] = INCBIN_U32("graphics/pokemon/lycanroc/midnight/back.4bpp.lz"); + const u32 gMonShinyPalette_LycanrocMidnight[] = INCBIN_U32("graphics/pokemon/lycanroc/midnight/shiny.gbapal.lz"); + const u8 gMonIcon_LycanrocMidnight[] = INCBIN_U8("graphics/pokemon/lycanroc/midnight/icon.4bpp"); + + const u32 gMonFrontPic_LycanrocDusk[] = INCBIN_U32("graphics/pokemon/lycanroc/dusk/anim_front.4bpp.lz"); + const u32 gMonPalette_LycanrocDusk[] = INCBIN_U32("graphics/pokemon/lycanroc/dusk/normal.gbapal.lz"); + const u32 gMonBackPic_LycanrocDusk[] = INCBIN_U32("graphics/pokemon/lycanroc/dusk/back.4bpp.lz"); + const u32 gMonShinyPalette_LycanrocDusk[] = INCBIN_U32("graphics/pokemon/lycanroc/dusk/shiny.gbapal.lz"); + const u8 gMonIcon_LycanrocDusk[] = INCBIN_U8("graphics/pokemon/lycanroc/dusk/icon.4bpp"); +#endif //P_FAMILY_ROCKRUFF + +#if P_FAMILY_WISHIWASHI + const u32 gMonFrontPic_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/front.4bpp.lz"); + const u32 gMonPalette_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/normal.gbapal.lz"); + const u32 gMonBackPic_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/back.4bpp.lz"); + const u32 gMonShinyPalette_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/shiny.gbapal.lz"); + const u8 gMonIcon_WishiwashiSolo[] = INCBIN_U8("graphics/pokemon/wishiwashi/icon.4bpp"); + const u8 gMonFootprint_Wishiwashi[] = INCBIN_U8("graphics/pokemon/wishiwashi/footprint.1bpp"); + + const u32 gMonFrontPic_WishiwashiSchool[] = INCBIN_U32("graphics/pokemon/wishiwashi/school/front.4bpp.lz"); + const u32 gMonPalette_WishiwashiSchool[] = INCBIN_U32("graphics/pokemon/wishiwashi/school/normal.gbapal.lz"); + const u32 gMonBackPic_WishiwashiSchool[] = INCBIN_U32("graphics/pokemon/wishiwashi/school/back.4bpp.lz"); + const u32 gMonShinyPalette_WishiwashiSchool[] = INCBIN_U32("graphics/pokemon/wishiwashi/school/shiny.gbapal.lz"); + const u8 gMonIcon_WishiwashiSchool[] = INCBIN_U8("graphics/pokemon/wishiwashi/school/icon.4bpp"); +#endif //P_FAMILY_WISHIWASHI + +#if P_FAMILY_MAREANIE + const u32 gMonFrontPic_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/front.4bpp.lz"); + const u32 gMonPalette_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/normal.gbapal.lz"); + const u32 gMonBackPic_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/back.4bpp.lz"); + const u32 gMonShinyPalette_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/shiny.gbapal.lz"); + const u8 gMonIcon_Mareanie[] = INCBIN_U8("graphics/pokemon/mareanie/icon.4bpp"); + const u8 gMonFootprint_Mareanie[] = INCBIN_U8("graphics/pokemon/mareanie/footprint.1bpp"); + + const u32 gMonFrontPic_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/front.4bpp.lz"); + const u32 gMonPalette_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/normal.gbapal.lz"); + const u32 gMonBackPic_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/back.4bpp.lz"); + const u32 gMonShinyPalette_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/shiny.gbapal.lz"); + const u8 gMonIcon_Toxapex[] = INCBIN_U8("graphics/pokemon/toxapex/icon.4bpp"); + const u8 gMonFootprint_Toxapex[] = INCBIN_U8("graphics/pokemon/toxapex/footprint.1bpp"); +#endif //P_FAMILY_MAREANIE + +#if P_FAMILY_MUDBRAY + const u32 gMonFrontPic_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/front.4bpp.lz"); + const u32 gMonPalette_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/normal.gbapal.lz"); + const u32 gMonBackPic_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/back.4bpp.lz"); + const u32 gMonShinyPalette_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/shiny.gbapal.lz"); + const u8 gMonIcon_Mudbray[] = INCBIN_U8("graphics/pokemon/mudbray/icon.4bpp"); + const u8 gMonFootprint_Mudbray[] = INCBIN_U8("graphics/pokemon/mudbray/footprint.1bpp"); + + const u32 gMonFrontPic_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/front.4bpp.lz"); + const u32 gMonPalette_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/normal.gbapal.lz"); + const u32 gMonBackPic_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/back.4bpp.lz"); + const u32 gMonShinyPalette_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/shiny.gbapal.lz"); + const u8 gMonIcon_Mudsdale[] = INCBIN_U8("graphics/pokemon/mudsdale/icon.4bpp"); + const u8 gMonFootprint_Mudsdale[] = INCBIN_U8("graphics/pokemon/mudsdale/footprint.1bpp"); +#endif //P_FAMILY_MUDBRAY + +#if P_FAMILY_DEWPIDER + const u32 gMonFrontPic_Dewpider[] = INCBIN_U32("graphics/pokemon/dewpider/anim_front.4bpp.lz"); + const u32 gMonPalette_Dewpider[] = INCBIN_U32("graphics/pokemon/dewpider/normal.gbapal.lz"); + const u32 gMonBackPic_Dewpider[] = INCBIN_U32("graphics/pokemon/dewpider/back.4bpp.lz"); + const u32 gMonShinyPalette_Dewpider[] = INCBIN_U32("graphics/pokemon/dewpider/shiny.gbapal.lz"); + const u8 gMonIcon_Dewpider[] = INCBIN_U8("graphics/pokemon/dewpider/icon.4bpp"); + const u8 gMonFootprint_Dewpider[] = INCBIN_U8("graphics/pokemon/dewpider/footprint.1bpp"); + + const u32 gMonFrontPic_Araquanid[] = INCBIN_U32("graphics/pokemon/araquanid/anim_front.4bpp.lz"); + const u32 gMonPalette_Araquanid[] = INCBIN_U32("graphics/pokemon/araquanid/normal.gbapal.lz"); + const u32 gMonBackPic_Araquanid[] = INCBIN_U32("graphics/pokemon/araquanid/back.4bpp.lz"); + const u32 gMonShinyPalette_Araquanid[] = INCBIN_U32("graphics/pokemon/araquanid/shiny.gbapal.lz"); + const u8 gMonIcon_Araquanid[] = INCBIN_U8("graphics/pokemon/araquanid/icon.4bpp"); + const u8 gMonFootprint_Araquanid[] = INCBIN_U8("graphics/pokemon/araquanid/footprint.1bpp"); +#endif //P_FAMILY_DEWPIDER + +#if P_FAMILY_FOMANTIS + const u32 gMonFrontPic_Fomantis[] = INCBIN_U32("graphics/pokemon/fomantis/front.4bpp.lz"); + const u32 gMonPalette_Fomantis[] = INCBIN_U32("graphics/pokemon/fomantis/normal.gbapal.lz"); + const u32 gMonBackPic_Fomantis[] = INCBIN_U32("graphics/pokemon/fomantis/back.4bpp.lz"); + const u32 gMonShinyPalette_Fomantis[] = INCBIN_U32("graphics/pokemon/fomantis/shiny.gbapal.lz"); + const u8 gMonIcon_Fomantis[] = INCBIN_U8("graphics/pokemon/fomantis/icon.4bpp"); + const u8 gMonFootprint_Fomantis[] = INCBIN_U8("graphics/pokemon/fomantis/footprint.1bpp"); + + const u32 gMonFrontPic_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/front.4bpp.lz"); + const u32 gMonPalette_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/normal.gbapal.lz"); + const u32 gMonBackPic_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/back.4bpp.lz"); + const u32 gMonShinyPalette_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/shiny.gbapal.lz"); + const u8 gMonIcon_Lurantis[] = INCBIN_U8("graphics/pokemon/lurantis/icon.4bpp"); + const u8 gMonFootprint_Lurantis[] = INCBIN_U8("graphics/pokemon/lurantis/footprint.1bpp"); +#endif //P_FAMILY_FOMANTIS + +#if P_FAMILY_MORELULL + const u32 gMonFrontPic_Morelull[] = INCBIN_U32("graphics/pokemon/morelull/front.4bpp.lz"); + const u32 gMonPalette_Morelull[] = INCBIN_U32("graphics/pokemon/morelull/normal.gbapal.lz"); + const u32 gMonBackPic_Morelull[] = INCBIN_U32("graphics/pokemon/morelull/back.4bpp.lz"); + const u32 gMonShinyPalette_Morelull[] = INCBIN_U32("graphics/pokemon/morelull/shiny.gbapal.lz"); + const u8 gMonIcon_Morelull[] = INCBIN_U8("graphics/pokemon/morelull/icon.4bpp"); + const u8 gMonFootprint_Morelull[] = INCBIN_U8("graphics/pokemon/morelull/footprint.1bpp"); + + const u32 gMonFrontPic_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/front.4bpp.lz"); + const u32 gMonPalette_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/normal.gbapal.lz"); + const u32 gMonBackPic_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/back.4bpp.lz"); + const u32 gMonShinyPalette_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/shiny.gbapal.lz"); + const u8 gMonIcon_Shiinotic[] = INCBIN_U8("graphics/pokemon/shiinotic/icon.4bpp"); + const u8 gMonFootprint_Shiinotic[] = INCBIN_U8("graphics/pokemon/shiinotic/footprint.1bpp"); +#endif //P_FAMILY_MORELULL + +#if P_FAMILY_SALANDIT + const u32 gMonFrontPic_Salandit[] = INCBIN_U32("graphics/pokemon/salandit/anim_front.4bpp.lz"); + const u32 gMonPalette_Salandit[] = INCBIN_U32("graphics/pokemon/salandit/normal.gbapal.lz"); + const u32 gMonBackPic_Salandit[] = INCBIN_U32("graphics/pokemon/salandit/back.4bpp.lz"); + const u32 gMonShinyPalette_Salandit[] = INCBIN_U32("graphics/pokemon/salandit/shiny.gbapal.lz"); + const u8 gMonIcon_Salandit[] = INCBIN_U8("graphics/pokemon/salandit/icon.4bpp"); + const u8 gMonFootprint_Salandit[] = INCBIN_U8("graphics/pokemon/salandit/footprint.1bpp"); + + const u32 gMonFrontPic_Salazzle[] = INCBIN_U32("graphics/pokemon/salazzle/anim_front.4bpp.lz"); + const u32 gMonPalette_Salazzle[] = INCBIN_U32("graphics/pokemon/salazzle/normal.gbapal.lz"); + const u32 gMonBackPic_Salazzle[] = INCBIN_U32("graphics/pokemon/salazzle/back.4bpp.lz"); + const u32 gMonShinyPalette_Salazzle[] = INCBIN_U32("graphics/pokemon/salazzle/shiny.gbapal.lz"); + const u8 gMonIcon_Salazzle[] = INCBIN_U8("graphics/pokemon/salazzle/icon.4bpp"); + const u8 gMonFootprint_Salazzle[] = INCBIN_U8("graphics/pokemon/salazzle/footprint.1bpp"); +#endif //P_FAMILY_SALANDIT + +#if P_FAMILY_STUFFUL + const u32 gMonFrontPic_Stufful[] = INCBIN_U32("graphics/pokemon/stufful/anim_front.4bpp.lz"); + const u32 gMonPalette_Stufful[] = INCBIN_U32("graphics/pokemon/stufful/normal.gbapal.lz"); + const u32 gMonBackPic_Stufful[] = INCBIN_U32("graphics/pokemon/stufful/back.4bpp.lz"); + const u32 gMonShinyPalette_Stufful[] = INCBIN_U32("graphics/pokemon/stufful/shiny.gbapal.lz"); + const u8 gMonIcon_Stufful[] = INCBIN_U8("graphics/pokemon/stufful/icon.4bpp"); + const u8 gMonFootprint_Stufful[] = INCBIN_U8("graphics/pokemon/stufful/footprint.1bpp"); + + const u32 gMonFrontPic_Bewear[] = INCBIN_U32("graphics/pokemon/bewear/anim_front.4bpp.lz"); + const u32 gMonPalette_Bewear[] = INCBIN_U32("graphics/pokemon/bewear/normal.gbapal.lz"); + const u32 gMonBackPic_Bewear[] = INCBIN_U32("graphics/pokemon/bewear/back.4bpp.lz"); + const u32 gMonShinyPalette_Bewear[] = INCBIN_U32("graphics/pokemon/bewear/shiny.gbapal.lz"); + const u8 gMonIcon_Bewear[] = INCBIN_U8("graphics/pokemon/bewear/icon.4bpp"); + const u8 gMonFootprint_Bewear[] = INCBIN_U8("graphics/pokemon/bewear/footprint.1bpp"); +#endif //P_FAMILY_STUFFUL + +#if P_FAMILY_BOUNSWEET + const u32 gMonFrontPic_Bounsweet[] = INCBIN_U32("graphics/pokemon/bounsweet/front.4bpp.lz"); + const u32 gMonPalette_Bounsweet[] = INCBIN_U32("graphics/pokemon/bounsweet/normal.gbapal.lz"); + const u32 gMonBackPic_Bounsweet[] = INCBIN_U32("graphics/pokemon/bounsweet/back.4bpp.lz"); + const u32 gMonShinyPalette_Bounsweet[] = INCBIN_U32("graphics/pokemon/bounsweet/shiny.gbapal.lz"); + const u8 gMonIcon_Bounsweet[] = INCBIN_U8("graphics/pokemon/bounsweet/icon.4bpp"); + const u8 gMonFootprint_Bounsweet[] = INCBIN_U8("graphics/pokemon/bounsweet/footprint.1bpp"); + + const u32 gMonFrontPic_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/front.4bpp.lz"); + const u32 gMonPalette_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/normal.gbapal.lz"); + const u32 gMonBackPic_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/back.4bpp.lz"); + const u32 gMonShinyPalette_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/shiny.gbapal.lz"); + const u8 gMonIcon_Steenee[] = INCBIN_U8("graphics/pokemon/steenee/icon.4bpp"); + const u8 gMonFootprint_Steenee[] = INCBIN_U8("graphics/pokemon/steenee/footprint.1bpp"); + + const u32 gMonFrontPic_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/front.4bpp.lz"); + const u32 gMonPalette_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/normal.gbapal.lz"); + const u32 gMonBackPic_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/back.4bpp.lz"); + const u32 gMonShinyPalette_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/shiny.gbapal.lz"); + const u8 gMonIcon_Tsareena[] = INCBIN_U8("graphics/pokemon/tsareena/icon.4bpp"); + const u8 gMonFootprint_Tsareena[] = INCBIN_U8("graphics/pokemon/tsareena/footprint.1bpp"); +#endif //P_FAMILY_BOUNSWEET + +#if P_FAMILY_COMFEY + const u32 gMonFrontPic_Comfey[] = INCBIN_U32("graphics/pokemon/comfey/front.4bpp.lz"); + const u32 gMonPalette_Comfey[] = INCBIN_U32("graphics/pokemon/comfey/normal.gbapal.lz"); + const u32 gMonBackPic_Comfey[] = INCBIN_U32("graphics/pokemon/comfey/back.4bpp.lz"); + const u32 gMonShinyPalette_Comfey[] = INCBIN_U32("graphics/pokemon/comfey/shiny.gbapal.lz"); + const u8 gMonIcon_Comfey[] = INCBIN_U8("graphics/pokemon/comfey/icon.4bpp"); + const u8 gMonFootprint_Comfey[] = INCBIN_U8("graphics/pokemon/comfey/footprint.1bpp"); +#endif //P_FAMILY_COMFEY + +#if P_FAMILY_ORANGURU + const u32 gMonFrontPic_Oranguru[] = INCBIN_U32("graphics/pokemon/oranguru/anim_front.4bpp.lz"); + const u32 gMonPalette_Oranguru[] = INCBIN_U32("graphics/pokemon/oranguru/normal.gbapal.lz"); + const u32 gMonBackPic_Oranguru[] = INCBIN_U32("graphics/pokemon/oranguru/back.4bpp.lz"); + const u32 gMonShinyPalette_Oranguru[] = INCBIN_U32("graphics/pokemon/oranguru/shiny.gbapal.lz"); + const u8 gMonIcon_Oranguru[] = INCBIN_U8("graphics/pokemon/oranguru/icon.4bpp"); + const u8 gMonFootprint_Oranguru[] = INCBIN_U8("graphics/pokemon/oranguru/footprint.1bpp"); +#endif //P_FAMILY_ORANGURU + +#if P_FAMILY_PASSIMIAN + const u32 gMonFrontPic_Passimian[] = INCBIN_U32("graphics/pokemon/passimian/anim_front.4bpp.lz"); + const u32 gMonPalette_Passimian[] = INCBIN_U32("graphics/pokemon/passimian/normal.gbapal.lz"); + const u32 gMonBackPic_Passimian[] = INCBIN_U32("graphics/pokemon/passimian/back.4bpp.lz"); + const u32 gMonShinyPalette_Passimian[] = INCBIN_U32("graphics/pokemon/passimian/shiny.gbapal.lz"); + const u8 gMonIcon_Passimian[] = INCBIN_U8("graphics/pokemon/passimian/icon.4bpp"); + const u8 gMonFootprint_Passimian[] = INCBIN_U8("graphics/pokemon/passimian/footprint.1bpp"); +#endif //P_FAMILY_PASSIMIAN + +#if P_FAMILY_WIMPOD + const u32 gMonFrontPic_Wimpod[] = INCBIN_U32("graphics/pokemon/wimpod/anim_front.4bpp.lz"); + const u32 gMonPalette_Wimpod[] = INCBIN_U32("graphics/pokemon/wimpod/normal.gbapal.lz"); + const u32 gMonBackPic_Wimpod[] = INCBIN_U32("graphics/pokemon/wimpod/back.4bpp.lz"); + const u32 gMonShinyPalette_Wimpod[] = INCBIN_U32("graphics/pokemon/wimpod/shiny.gbapal.lz"); + const u8 gMonIcon_Wimpod[] = INCBIN_U8("graphics/pokemon/wimpod/icon.4bpp"); + const u8 gMonFootprint_Wimpod[] = INCBIN_U8("graphics/pokemon/wimpod/footprint.1bpp"); + + const u32 gMonFrontPic_Golisopod[] = INCBIN_U32("graphics/pokemon/golisopod/anim_front.4bpp.lz"); + const u32 gMonPalette_Golisopod[] = INCBIN_U32("graphics/pokemon/golisopod/normal.gbapal.lz"); + const u32 gMonBackPic_Golisopod[] = INCBIN_U32("graphics/pokemon/golisopod/back.4bpp.lz"); + const u32 gMonShinyPalette_Golisopod[] = INCBIN_U32("graphics/pokemon/golisopod/shiny.gbapal.lz"); + const u8 gMonIcon_Golisopod[] = INCBIN_U8("graphics/pokemon/golisopod/icon.4bpp"); + const u8 gMonFootprint_Golisopod[] = INCBIN_U8("graphics/pokemon/golisopod/footprint.1bpp"); +#endif //P_FAMILY_WIMPOD + +#if P_FAMILY_SANDYGAST + const u32 gMonFrontPic_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/front.4bpp.lz"); + const u32 gMonPalette_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/normal.gbapal.lz"); + const u32 gMonBackPic_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/back.4bpp.lz"); + const u32 gMonShinyPalette_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/shiny.gbapal.lz"); + const u8 gMonIcon_Sandygast[] = INCBIN_U8("graphics/pokemon/sandygast/icon.4bpp"); + const u8 gMonFootprint_Sandygast[] = INCBIN_U8("graphics/pokemon/sandygast/footprint.1bpp"); + + const u32 gMonFrontPic_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/front.4bpp.lz"); + const u32 gMonPalette_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/normal.gbapal.lz"); + const u32 gMonBackPic_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/back.4bpp.lz"); + const u32 gMonShinyPalette_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/shiny.gbapal.lz"); + const u8 gMonIcon_Palossand[] = INCBIN_U8("graphics/pokemon/palossand/icon.4bpp"); + const u8 gMonFootprint_Palossand[] = INCBIN_U8("graphics/pokemon/palossand/footprint.1bpp"); +#endif //P_FAMILY_SANDYGAST + +#if P_FAMILY_PYUKUMUKU + const u32 gMonFrontPic_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/anim_front.4bpp.lz"); + const u32 gMonPalette_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/normal.gbapal.lz"); + const u32 gMonBackPic_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/back.4bpp.lz"); + const u32 gMonShinyPalette_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/shiny.gbapal.lz"); + const u8 gMonIcon_Pyukumuku[] = INCBIN_U8("graphics/pokemon/pyukumuku/icon.4bpp"); + const u8 gMonFootprint_Pyukumuku[] = INCBIN_U8("graphics/pokemon/pyukumuku/footprint.1bpp"); +#endif //P_FAMILY_PYUKUMUKU + +#if P_FAMILY_TYPE_NULL + const u32 gMonFrontPic_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/front.4bpp.lz"); + const u32 gMonPalette_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/normal.gbapal.lz"); + const u32 gMonBackPic_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/back.4bpp.lz"); + const u32 gMonShinyPalette_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/shiny.gbapal.lz"); + const u8 gMonIcon_TypeNull[] = INCBIN_U8("graphics/pokemon/type_null/icon.4bpp"); + const u8 gMonFootprint_Type_Null[] = INCBIN_U8("graphics/pokemon/type_null/footprint.1bpp"); + + const u32 gMonFrontPic_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/front.4bpp.lz"); + const u32 gMonBackPic_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/back.4bpp.lz"); + const u8 gMonIcon_Silvally[] = INCBIN_U8("graphics/pokemon/silvally/icon.4bpp"); + const u8 gMonFootprint_Silvally[] = INCBIN_U8("graphics/pokemon/silvally/footprint.1bpp"); + + const u32 gMonPalette_SilvallyNormal[] = INCBIN_U32("graphics/pokemon/silvally/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallyNormal[] = INCBIN_U32("graphics/pokemon/silvally/shiny.gbapal.lz"); + + const u32 gMonPalette_SilvallyFighting[] = INCBIN_U32("graphics/pokemon/silvally/fighting/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallyFighting[] = INCBIN_U32("graphics/pokemon/silvally/fighting/shiny.gbapal.lz"); + + const u32 gMonPalette_SilvallyFlying[] = INCBIN_U32("graphics/pokemon/silvally/flying/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallyFlying[] = INCBIN_U32("graphics/pokemon/silvally/flying/shiny.gbapal.lz"); + + const u32 gMonPalette_SilvallyPoison[] = INCBIN_U32("graphics/pokemon/silvally/poison/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallyPoison[] = INCBIN_U32("graphics/pokemon/silvally/poison/shiny.gbapal.lz"); + + const u32 gMonPalette_SilvallyGround[] = INCBIN_U32("graphics/pokemon/silvally/ground/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallyGround[] = INCBIN_U32("graphics/pokemon/silvally/ground/shiny.gbapal.lz"); + + const u32 gMonPalette_SilvallyRock[] = INCBIN_U32("graphics/pokemon/silvally/rock/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallyRock[] = INCBIN_U32("graphics/pokemon/silvally/rock/shiny.gbapal.lz"); + + const u32 gMonPalette_SilvallyBug[] = INCBIN_U32("graphics/pokemon/silvally/bug/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallyBug[] = INCBIN_U32("graphics/pokemon/silvally/bug/shiny.gbapal.lz"); + + const u32 gMonPalette_SilvallyGhost[] = INCBIN_U32("graphics/pokemon/silvally/ghost/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallyGhost[] = INCBIN_U32("graphics/pokemon/silvally/ghost/shiny.gbapal.lz"); + + const u32 gMonPalette_SilvallySteel[] = INCBIN_U32("graphics/pokemon/silvally/steel/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallySteel[] = INCBIN_U32("graphics/pokemon/silvally/steel/shiny.gbapal.lz"); + + const u32 gMonPalette_SilvallyFire[] = INCBIN_U32("graphics/pokemon/silvally/fire/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallyFire[] = INCBIN_U32("graphics/pokemon/silvally/fire/shiny.gbapal.lz"); + + const u32 gMonPalette_SilvallyWater[] = INCBIN_U32("graphics/pokemon/silvally/water/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallyWater[] = INCBIN_U32("graphics/pokemon/silvally/water/shiny.gbapal.lz"); + + const u32 gMonPalette_SilvallyGrass[] = INCBIN_U32("graphics/pokemon/silvally/grass/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallyGrass[] = INCBIN_U32("graphics/pokemon/silvally/grass/shiny.gbapal.lz"); + + const u32 gMonPalette_SilvallyElectric[] = INCBIN_U32("graphics/pokemon/silvally/electric/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallyElectric[] = INCBIN_U32("graphics/pokemon/silvally/electric/shiny.gbapal.lz"); + + const u32 gMonPalette_SilvallyPsychic[] = INCBIN_U32("graphics/pokemon/silvally/psychic/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallyPsychic[] = INCBIN_U32("graphics/pokemon/silvally/psychic/shiny.gbapal.lz"); + + const u32 gMonPalette_SilvallyIce[] = INCBIN_U32("graphics/pokemon/silvally/ice/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallyIce[] = INCBIN_U32("graphics/pokemon/silvally/ice/shiny.gbapal.lz"); + + const u32 gMonPalette_SilvallyDragon[] = INCBIN_U32("graphics/pokemon/silvally/dragon/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallyDragon[] = INCBIN_U32("graphics/pokemon/silvally/dragon/shiny.gbapal.lz"); + + const u32 gMonPalette_SilvallyDark[] = INCBIN_U32("graphics/pokemon/silvally/dark/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallyDark[] = INCBIN_U32("graphics/pokemon/silvally/dark/shiny.gbapal.lz"); + + const u32 gMonPalette_SilvallyFairy[] = INCBIN_U32("graphics/pokemon/silvally/fairy/normal.gbapal.lz"); + const u32 gMonShinyPalette_SilvallyFairy[] = INCBIN_U32("graphics/pokemon/silvally/fairy/shiny.gbapal.lz"); +#endif //P_FAMILY_TYPE_NULL + +#if P_FAMILY_MINIOR + const u32 gMonFrontPic_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/front.4bpp.lz"); + const u32 gMonPalette_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/normal.gbapal.lz"); + const u32 gMonBackPic_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/back.4bpp.lz"); + const u32 gMonShinyPalette_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/shiny.gbapal.lz"); + const u8 gMonIcon_MiniorMeteor[] = INCBIN_U8("graphics/pokemon/minior/icon.4bpp"); + const u8 gMonFootprint_Minior[] = INCBIN_U8("graphics/pokemon/minior/footprint.1bpp"); + + const u32 gMonFrontPic_MiniorCore[] = INCBIN_U32("graphics/pokemon/minior/core/front.4bpp.lz"); + const u32 gMonBackPic_MiniorCore[] = INCBIN_U32("graphics/pokemon/minior/core/back.4bpp.lz"); + const u32 gMonShinyPalette_MiniorCore[] = INCBIN_U32("graphics/pokemon/minior/core/shiny.gbapal.lz"); + + const u32 gMonPalette_MiniorCoreRed[] = INCBIN_U32("graphics/pokemon/minior/core/red/normal.gbapal.lz"); + const u8 gMonIcon_MiniorCoreRed[] = INCBIN_U8("graphics/pokemon/minior/core/red/icon.4bpp"); + + const u32 gMonPalette_MiniorCoreOrange[] = INCBIN_U32("graphics/pokemon/minior/core/orange/normal.gbapal.lz"); + const u8 gMonIcon_MiniorCoreOrange[] = INCBIN_U8("graphics/pokemon/minior/core/orange/icon.4bpp"); + + const u32 gMonPalette_MiniorCoreYellow[] = INCBIN_U32("graphics/pokemon/minior/core/yellow/normal.gbapal.lz"); + const u8 gMonIcon_MiniorCoreYellow[] = INCBIN_U8("graphics/pokemon/minior/core/yellow/icon.4bpp"); + + const u32 gMonPalette_MiniorCoreGreen[] = INCBIN_U32("graphics/pokemon/minior/core/green/normal.gbapal.lz"); + const u8 gMonIcon_MiniorCoreGreen[] = INCBIN_U8("graphics/pokemon/minior/core/green/icon.4bpp"); + + const u32 gMonPalette_MiniorCoreBlue[] = INCBIN_U32("graphics/pokemon/minior/core/blue/normal.gbapal.lz"); + const u8 gMonIcon_MiniorCoreBlue[] = INCBIN_U8("graphics/pokemon/minior/core/blue/icon.4bpp"); + + const u32 gMonPalette_MiniorCoreIndigo[] = INCBIN_U32("graphics/pokemon/minior/core/indigo/normal.gbapal.lz"); + const u8 gMonIcon_MiniorCoreIndigo[] = INCBIN_U8("graphics/pokemon/minior/core/indigo/icon.4bpp"); + + const u32 gMonPalette_MiniorCoreViolet[] = INCBIN_U32("graphics/pokemon/minior/core/violet/normal.gbapal.lz"); + const u8 gMonIcon_MiniorCoreViolet[] = INCBIN_U8("graphics/pokemon/minior/core/violet/icon.4bpp"); +#endif //P_FAMILY_MINIOR + +#if P_FAMILY_KOMALA + const u32 gMonFrontPic_Komala[] = INCBIN_U32("graphics/pokemon/komala/front.4bpp.lz"); + const u32 gMonPalette_Komala[] = INCBIN_U32("graphics/pokemon/komala/normal.gbapal.lz"); + const u32 gMonBackPic_Komala[] = INCBIN_U32("graphics/pokemon/komala/back.4bpp.lz"); + const u32 gMonShinyPalette_Komala[] = INCBIN_U32("graphics/pokemon/komala/shiny.gbapal.lz"); + const u8 gMonIcon_Komala[] = INCBIN_U8("graphics/pokemon/komala/icon.4bpp"); + const u8 gMonFootprint_Komala[] = INCBIN_U8("graphics/pokemon/komala/footprint.1bpp"); +#endif //P_FAMILY_KOMALA + +#if P_FAMILY_TURTONATOR + const u32 gMonFrontPic_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/anim_front.4bpp.lz"); + const u32 gMonPalette_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/normal.gbapal.lz"); + const u32 gMonBackPic_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/back.4bpp.lz"); + const u32 gMonShinyPalette_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/shiny.gbapal.lz"); + const u8 gMonIcon_Turtonator[] = INCBIN_U8("graphics/pokemon/turtonator/icon.4bpp"); + const u8 gMonFootprint_Turtonator[] = INCBIN_U8("graphics/pokemon/turtonator/footprint.1bpp"); +#endif //P_FAMILY_TURTONATOR + +#if P_FAMILY_TOGEDEMARU + const u32 gMonFrontPic_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/anim_front.4bpp.lz"); + const u32 gMonPalette_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/normal.gbapal.lz"); + const u32 gMonBackPic_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/back.4bpp.lz"); + const u32 gMonShinyPalette_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/shiny.gbapal.lz"); + const u8 gMonIcon_Togedemaru[] = INCBIN_U8("graphics/pokemon/togedemaru/icon.4bpp"); + const u8 gMonFootprint_Togedemaru[] = INCBIN_U8("graphics/pokemon/togedemaru/footprint.1bpp"); +#endif //P_FAMILY_TOGEDEMARU + +#if P_FAMILY_MIMIKYU + const u32 gMonFrontPic_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/front.4bpp.lz"); + const u32 gMonPalette_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/normal.gbapal.lz"); + const u32 gMonBackPic_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/back.4bpp.lz"); + const u32 gMonShinyPalette_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/shiny.gbapal.lz"); + const u8 gMonIcon_MimikyuDisguised[] = INCBIN_U8("graphics/pokemon/mimikyu/icon.4bpp"); + const u8 gMonFootprint_Mimikyu[] = INCBIN_U8("graphics/pokemon/mimikyu/footprint.1bpp"); + + const u32 gMonFrontPic_MimikyuBusted[] = INCBIN_U32("graphics/pokemon/mimikyu/busted/front.4bpp.lz"); + const u32 gMonPalette_MimikyuBusted[] = INCBIN_U32("graphics/pokemon/mimikyu/busted/normal.gbapal.lz"); + const u32 gMonBackPic_MimikyuBusted[] = INCBIN_U32("graphics/pokemon/mimikyu/busted/back.4bpp.lz"); + const u32 gMonShinyPalette_MimikyuBusted[] = INCBIN_U32("graphics/pokemon/mimikyu/busted/shiny.gbapal.lz"); + const u8 gMonIcon_MimikyuBusted[] = INCBIN_U8("graphics/pokemon/mimikyu/busted/icon.4bpp"); +#endif //P_FAMILY_MIMIKYU + +#if P_FAMILY_BRUXISH + const u32 gMonFrontPic_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/front.4bpp.lz"); + const u32 gMonPalette_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/normal.gbapal.lz"); + const u32 gMonBackPic_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/back.4bpp.lz"); + const u32 gMonShinyPalette_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/shiny.gbapal.lz"); + const u8 gMonIcon_Bruxish[] = INCBIN_U8("graphics/pokemon/bruxish/icon.4bpp"); + const u8 gMonFootprint_Bruxish[] = INCBIN_U8("graphics/pokemon/bruxish/footprint.1bpp"); +#endif //P_FAMILY_BRUXISH + +#if P_FAMILY_DRAMPA + const u32 gMonFrontPic_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/anim_front.4bpp.lz"); + const u32 gMonPalette_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/normal.gbapal.lz"); + const u32 gMonBackPic_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/back.4bpp.lz"); + const u32 gMonShinyPalette_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/shiny.gbapal.lz"); + const u8 gMonIcon_Drampa[] = INCBIN_U8("graphics/pokemon/drampa/icon.4bpp"); + const u8 gMonFootprint_Drampa[] = INCBIN_U8("graphics/pokemon/drampa/footprint.1bpp"); +#endif //P_FAMILY_DRAMPA + +#if P_FAMILY_DHELMISE + const u32 gMonFrontPic_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/front.4bpp.lz"); + const u32 gMonPalette_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/normal.gbapal.lz"); + const u32 gMonBackPic_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/back.4bpp.lz"); + const u32 gMonShinyPalette_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/shiny.gbapal.lz"); + const u8 gMonIcon_Dhelmise[] = INCBIN_U8("graphics/pokemon/dhelmise/icon.4bpp"); + const u8 gMonFootprint_Dhelmise[] = INCBIN_U8("graphics/pokemon/dhelmise/footprint.1bpp"); +#endif //P_FAMILY_DHELMISE + +#if P_FAMILY_JANGMO_O + const u32 gMonFrontPic_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/anim_front.4bpp.lz"); + const u32 gMonPalette_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/normal.gbapal.lz"); + const u32 gMonBackPic_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/back.4bpp.lz"); + const u32 gMonShinyPalette_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/shiny.gbapal.lz"); + const u8 gMonIcon_JangmoO[] = INCBIN_U8("graphics/pokemon/jangmo_o/icon.4bpp"); + const u8 gMonFootprint_JangmoO[] = INCBIN_U8("graphics/pokemon/jangmo_o/footprint.1bpp"); + + const u32 gMonFrontPic_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/anim_front.4bpp.lz"); + const u32 gMonPalette_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/normal.gbapal.lz"); + const u32 gMonBackPic_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/back.4bpp.lz"); + const u32 gMonShinyPalette_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/shiny.gbapal.lz"); + const u8 gMonIcon_HakamoO[] = INCBIN_U8("graphics/pokemon/hakamo_o/icon.4bpp"); + const u8 gMonFootprint_HakamoO[] = INCBIN_U8("graphics/pokemon/hakamo_o/footprint.1bpp"); + + const u32 gMonFrontPic_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/anim_front.4bpp.lz"); + const u32 gMonPalette_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/normal.gbapal.lz"); + const u32 gMonBackPic_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/back.4bpp.lz"); + const u32 gMonShinyPalette_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/shiny.gbapal.lz"); + const u8 gMonIcon_KommoO[] = INCBIN_U8("graphics/pokemon/kommo_o/icon.4bpp"); + const u8 gMonFootprint_KommoO[] = INCBIN_U8("graphics/pokemon/kommo_o/footprint.1bpp"); +#endif //P_FAMILY_JANGMO_O + +#if P_FAMILY_TAPU_KOKO + const u32 gMonFrontPic_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/anim_front.4bpp.lz"); + const u32 gMonPalette_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/normal.gbapal.lz"); + const u32 gMonBackPic_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/back.4bpp.lz"); + const u32 gMonShinyPalette_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/shiny.gbapal.lz"); + const u8 gMonIcon_TapuKoko[] = INCBIN_U8("graphics/pokemon/tapu_koko/icon.4bpp"); + const u8 gMonFootprint_Tapu_Koko[] = INCBIN_U8("graphics/pokemon/tapu_koko/footprint.1bpp"); +#endif //P_FAMILY_TAPU_KOKO + +#if P_FAMILY_TAPU_LELE + const u32 gMonFrontPic_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/anim_front.4bpp.lz"); + const u32 gMonPalette_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/normal.gbapal.lz"); + const u32 gMonBackPic_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/back.4bpp.lz"); + const u32 gMonShinyPalette_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/shiny.gbapal.lz"); + const u8 gMonIcon_TapuLele[] = INCBIN_U8("graphics/pokemon/tapu_lele/icon.4bpp"); + const u8 gMonFootprint_Tapu_Lele[] = INCBIN_U8("graphics/pokemon/tapu_lele/footprint.1bpp"); +#endif //P_FAMILY_TAPU_LELE + +#if P_FAMILY_TAPU_BULU + const u32 gMonFrontPic_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/anim_front.4bpp.lz"); + const u32 gMonPalette_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/normal.gbapal.lz"); + const u32 gMonBackPic_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/back.4bpp.lz"); + const u32 gMonShinyPalette_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/shiny.gbapal.lz"); + const u8 gMonIcon_TapuBulu[] = INCBIN_U8("graphics/pokemon/tapu_bulu/icon.4bpp"); + const u8 gMonFootprint_Tapu_Bulu[] = INCBIN_U8("graphics/pokemon/tapu_bulu/footprint.1bpp"); +#endif //P_FAMILY_TAPU_BULU + +#if P_FAMILY_TAPU_FINI + const u32 gMonFrontPic_TapuFini[] = INCBIN_U32("graphics/pokemon/tapu_fini/anim_front.4bpp.lz"); + const u32 gMonPalette_TapuFini[] = INCBIN_U32("graphics/pokemon/tapu_fini/normal.gbapal.lz"); + const u32 gMonBackPic_TapuFini[] = INCBIN_U32("graphics/pokemon/tapu_fini/back.4bpp.lz"); + const u32 gMonShinyPalette_TapuFini[] = INCBIN_U32("graphics/pokemon/tapu_fini/shiny.gbapal.lz"); + const u8 gMonIcon_TapuFini[] = INCBIN_U8("graphics/pokemon/tapu_fini/icon.4bpp"); + const u8 gMonFootprint_Tapu_Fini[] = INCBIN_U8("graphics/pokemon/tapu_fini/footprint.1bpp"); +#endif //P_FAMILY_TAPU_FINI + +#if P_FAMILY_COSMOG + const u32 gMonFrontPic_Cosmog[] = INCBIN_U32("graphics/pokemon/cosmog/front.4bpp.lz"); + const u32 gMonPalette_Cosmog[] = INCBIN_U32("graphics/pokemon/cosmog/normal.gbapal.lz"); + const u32 gMonBackPic_Cosmog[] = INCBIN_U32("graphics/pokemon/cosmog/back.4bpp.lz"); + const u32 gMonShinyPalette_Cosmog[] = INCBIN_U32("graphics/pokemon/cosmog/shiny.gbapal.lz"); + const u8 gMonIcon_Cosmog[] = INCBIN_U8("graphics/pokemon/cosmog/icon.4bpp"); + const u8 gMonFootprint_Cosmog[] = INCBIN_U8("graphics/pokemon/cosmog/footprint.1bpp"); + + const u32 gMonFrontPic_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/front.4bpp.lz"); + const u32 gMonPalette_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/normal.gbapal.lz"); + const u32 gMonBackPic_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/back.4bpp.lz"); + const u32 gMonShinyPalette_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/shiny.gbapal.lz"); + const u8 gMonIcon_Cosmoem[] = INCBIN_U8("graphics/pokemon/cosmoem/icon.4bpp"); + const u8 gMonFootprint_Cosmoem[] = INCBIN_U8("graphics/pokemon/cosmoem/footprint.1bpp"); + + const u32 gMonFrontPic_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/front.4bpp.lz"); + const u32 gMonPalette_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/normal.gbapal.lz"); + const u32 gMonBackPic_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/back.4bpp.lz"); + const u32 gMonShinyPalette_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/shiny.gbapal.lz"); + const u8 gMonIcon_Solgaleo[] = INCBIN_U8("graphics/pokemon/solgaleo/icon.4bpp"); + const u8 gMonFootprint_Solgaleo[] = INCBIN_U8("graphics/pokemon/solgaleo/footprint.1bpp"); + + const u32 gMonFrontPic_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/front.4bpp.lz"); + const u32 gMonPalette_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/normal.gbapal.lz"); + const u32 gMonBackPic_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/back.4bpp.lz"); + const u32 gMonShinyPalette_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/shiny.gbapal.lz"); + const u8 gMonIcon_Lunala[] = INCBIN_U8("graphics/pokemon/lunala/icon.4bpp"); + const u8 gMonFootprint_Lunala[] = INCBIN_U8("graphics/pokemon/lunala/footprint.1bpp"); +#endif //P_FAMILY_COSMOG + +#if P_FAMILY_NIHILEGO + const u32 gMonFrontPic_Nihilego[] = INCBIN_U32("graphics/pokemon/nihilego/front.4bpp.lz"); + const u32 gMonPalette_Nihilego[] = INCBIN_U32("graphics/pokemon/nihilego/normal.gbapal.lz"); + const u32 gMonBackPic_Nihilego[] = INCBIN_U32("graphics/pokemon/nihilego/back.4bpp.lz"); + const u32 gMonShinyPalette_Nihilego[] = INCBIN_U32("graphics/pokemon/nihilego/shiny.gbapal.lz"); + const u8 gMonIcon_Nihilego[] = INCBIN_U8("graphics/pokemon/nihilego/icon.4bpp"); + const u8 gMonFootprint_Nihilego[] = INCBIN_U8("graphics/pokemon/nihilego/footprint.1bpp"); +#endif //P_FAMILY_NIHILEGO + +#if P_FAMILY_BUZZWOLE + const u32 gMonFrontPic_Buzzwole[] = INCBIN_U32("graphics/pokemon/buzzwole/front.4bpp.lz"); + const u32 gMonPalette_Buzzwole[] = INCBIN_U32("graphics/pokemon/buzzwole/normal.gbapal.lz"); + const u32 gMonBackPic_Buzzwole[] = INCBIN_U32("graphics/pokemon/buzzwole/back.4bpp.lz"); + const u32 gMonShinyPalette_Buzzwole[] = INCBIN_U32("graphics/pokemon/buzzwole/shiny.gbapal.lz"); + const u8 gMonIcon_Buzzwole[] = INCBIN_U8("graphics/pokemon/buzzwole/icon.4bpp"); + const u8 gMonFootprint_Buzzwole[] = INCBIN_U8("graphics/pokemon/buzzwole/footprint.1bpp"); +#endif //P_FAMILY_BUZZWOLE + +#if P_FAMILY_PHEROMOSA + const u32 gMonFrontPic_Pheromosa[] = INCBIN_U32("graphics/pokemon/pheromosa/front.4bpp.lz"); + const u32 gMonPalette_Pheromosa[] = INCBIN_U32("graphics/pokemon/pheromosa/normal.gbapal.lz"); + const u32 gMonBackPic_Pheromosa[] = INCBIN_U32("graphics/pokemon/pheromosa/back.4bpp.lz"); + const u32 gMonShinyPalette_Pheromosa[] = INCBIN_U32("graphics/pokemon/pheromosa/shiny.gbapal.lz"); + const u8 gMonIcon_Pheromosa[] = INCBIN_U8("graphics/pokemon/pheromosa/icon.4bpp"); + const u8 gMonFootprint_Pheromosa[] = INCBIN_U8("graphics/pokemon/pheromosa/footprint.1bpp"); +#endif //P_FAMILY_PHEROMOSA + +#if P_FAMILY_XURKITREE + const u32 gMonFrontPic_Xurkitree[] = INCBIN_U32("graphics/pokemon/xurkitree/front.4bpp.lz"); + const u32 gMonPalette_Xurkitree[] = INCBIN_U32("graphics/pokemon/xurkitree/normal.gbapal.lz"); + const u32 gMonBackPic_Xurkitree[] = INCBIN_U32("graphics/pokemon/xurkitree/back.4bpp.lz"); + const u32 gMonShinyPalette_Xurkitree[] = INCBIN_U32("graphics/pokemon/xurkitree/shiny.gbapal.lz"); + const u8 gMonIcon_Xurkitree[] = INCBIN_U8("graphics/pokemon/xurkitree/icon.4bpp"); + const u8 gMonFootprint_Xurkitree[] = INCBIN_U8("graphics/pokemon/xurkitree/footprint.1bpp"); +#endif //P_FAMILY_XURKITREE + +#if P_FAMILY_CELESTEELA + const u32 gMonFrontPic_Celesteela[] = INCBIN_U32("graphics/pokemon/celesteela/front.4bpp.lz"); + const u32 gMonPalette_Celesteela[] = INCBIN_U32("graphics/pokemon/celesteela/normal.gbapal.lz"); + const u32 gMonBackPic_Celesteela[] = INCBIN_U32("graphics/pokemon/celesteela/back.4bpp.lz"); + const u32 gMonShinyPalette_Celesteela[] = INCBIN_U32("graphics/pokemon/celesteela/shiny.gbapal.lz"); + const u8 gMonIcon_Celesteela[] = INCBIN_U8("graphics/pokemon/celesteela/icon.4bpp"); + const u8 gMonFootprint_Celesteela[] = INCBIN_U8("graphics/pokemon/celesteela/footprint.1bpp"); +#endif //P_FAMILY_CELESTEELA + +#if P_FAMILY_KARTANA + const u32 gMonFrontPic_Kartana[] = INCBIN_U32("graphics/pokemon/kartana/front.4bpp.lz"); + const u32 gMonPalette_Kartana[] = INCBIN_U32("graphics/pokemon/kartana/normal.gbapal.lz"); + const u32 gMonBackPic_Kartana[] = INCBIN_U32("graphics/pokemon/kartana/back.4bpp.lz"); + const u32 gMonShinyPalette_Kartana[] = INCBIN_U32("graphics/pokemon/kartana/shiny.gbapal.lz"); + const u8 gMonIcon_Kartana[] = INCBIN_U8("graphics/pokemon/kartana/icon.4bpp"); + const u8 gMonFootprint_Kartana[] = INCBIN_U8("graphics/pokemon/kartana/footprint.1bpp"); +#endif //P_FAMILY_KARTANA + +#if P_FAMILY_GUZZLORD + const u32 gMonFrontPic_Guzzlord[] = INCBIN_U32("graphics/pokemon/guzzlord/front.4bpp.lz"); + const u32 gMonPalette_Guzzlord[] = INCBIN_U32("graphics/pokemon/guzzlord/normal.gbapal.lz"); + const u32 gMonBackPic_Guzzlord[] = INCBIN_U32("graphics/pokemon/guzzlord/back.4bpp.lz"); + const u32 gMonShinyPalette_Guzzlord[] = INCBIN_U32("graphics/pokemon/guzzlord/shiny.gbapal.lz"); + const u8 gMonIcon_Guzzlord[] = INCBIN_U8("graphics/pokemon/guzzlord/icon.4bpp"); + const u8 gMonFootprint_Guzzlord[] = INCBIN_U8("graphics/pokemon/guzzlord/footprint.1bpp"); +#endif //P_FAMILY_GUZZLORD + +#if P_FAMILY_NECROZMA + const u32 gMonFrontPic_Necrozma[] = INCBIN_U32("graphics/pokemon/necrozma/front.4bpp.lz"); + const u32 gMonPalette_Necrozma[] = INCBIN_U32("graphics/pokemon/necrozma/normal.gbapal.lz"); + const u32 gMonBackPic_Necrozma[] = INCBIN_U32("graphics/pokemon/necrozma/back.4bpp.lz"); + const u32 gMonShinyPalette_Necrozma[] = INCBIN_U32("graphics/pokemon/necrozma/shiny.gbapal.lz"); + const u8 gMonIcon_Necrozma[] = INCBIN_U8("graphics/pokemon/necrozma/icon.4bpp"); + const u8 gMonFootprint_Necrozma[] = INCBIN_U8("graphics/pokemon/necrozma/footprint.1bpp"); + +#if P_FUSION_FORMS + const u32 gMonFrontPic_NecrozmaDuskMane[] = INCBIN_U32("graphics/pokemon/necrozma/dusk_mane/front.4bpp.lz"); + const u32 gMonPalette_NecrozmaDuskMane[] = INCBIN_U32("graphics/pokemon/necrozma/dusk_mane/normal.gbapal.lz"); + const u32 gMonBackPic_NecrozmaDuskMane[] = INCBIN_U32("graphics/pokemon/necrozma/dusk_mane/back.4bpp.lz"); + const u32 gMonShinyPalette_NecrozmaDuskMane[] = INCBIN_U32("graphics/pokemon/necrozma/dusk_mane/shiny.gbapal.lz"); + const u8 gMonIcon_NecrozmaDuskMane[] = INCBIN_U8("graphics/pokemon/necrozma/dusk_mane/icon.4bpp"); + + const u32 gMonFrontPic_NecrozmaDawnWings[] = INCBIN_U32("graphics/pokemon/necrozma/dawn_wings/front.4bpp.lz"); + const u32 gMonPalette_NecrozmaDawnWings[] = INCBIN_U32("graphics/pokemon/necrozma/dawn_wings/normal.gbapal.lz"); + const u32 gMonBackPic_NecrozmaDawnWings[] = INCBIN_U32("graphics/pokemon/necrozma/dawn_wings/back.4bpp.lz"); + const u32 gMonShinyPalette_NecrozmaDawnWings[] = INCBIN_U32("graphics/pokemon/necrozma/dawn_wings/shiny.gbapal.lz"); + const u8 gMonIcon_NecrozmaDawnWings[] = INCBIN_U8("graphics/pokemon/necrozma/dawn_wings/icon.4bpp"); + +#if P_ULTRA_BURST_FORMS + const u32 gMonFrontPic_NecrozmaUltra[] = INCBIN_U32("graphics/pokemon/necrozma/ultra/front.4bpp.lz"); + const u32 gMonPalette_NecrozmaUltra[] = INCBIN_U32("graphics/pokemon/necrozma/ultra/normal.gbapal.lz"); + const u32 gMonBackPic_NecrozmaUltra[] = INCBIN_U32("graphics/pokemon/necrozma/ultra/back.4bpp.lz"); + const u32 gMonShinyPalette_NecrozmaUltra[] = INCBIN_U32("graphics/pokemon/necrozma/ultra/shiny.gbapal.lz"); + const u8 gMonIcon_NecrozmaUltra[] = INCBIN_U8("graphics/pokemon/necrozma/ultra/icon.4bpp"); +#endif //P_ULTRA_BURST_FORMS +#endif //P_FUSION_FORMS +#endif //P_FAMILY_NECROZMA + +#if P_FAMILY_MAGEARNA + const u32 gMonFrontPic_Magearna[] = INCBIN_U32("graphics/pokemon/magearna/front.4bpp.lz"); + const u32 gMonPalette_Magearna[] = INCBIN_U32("graphics/pokemon/magearna/normal.gbapal.lz"); + const u32 gMonBackPic_Magearna[] = INCBIN_U32("graphics/pokemon/magearna/back.4bpp.lz"); + const u32 gMonShinyPalette_Magearna[] = INCBIN_U32("graphics/pokemon/magearna/shiny.gbapal.lz"); + const u8 gMonIcon_Magearna[] = INCBIN_U8("graphics/pokemon/magearna/icon.4bpp"); + const u8 gMonFootprint_Magearna[] = INCBIN_U8("graphics/pokemon/magearna/footprint.1bpp"); + + const u32 gMonFrontPic_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/magearna/original_color/front.4bpp.lz"); + const u32 gMonPalette_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/magearna/original_color/normal.gbapal.lz"); + const u32 gMonBackPic_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/magearna/original_color/back.4bpp.lz"); + const u32 gMonShinyPalette_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/magearna/original_color/shiny.gbapal.lz"); + const u8 gMonIcon_MagearnaOriginalColor[] = INCBIN_U8("graphics/pokemon/magearna/original_color/icon.4bpp"); +#endif //P_FAMILY_MAGEARNA + +#if P_FAMILY_MARSHADOW + const u32 gMonFrontPic_Marshadow[] = INCBIN_U32("graphics/pokemon/marshadow/anim_front.4bpp.lz"); + const u32 gMonPalette_Marshadow[] = INCBIN_U32("graphics/pokemon/marshadow/normal.gbapal.lz"); + const u32 gMonBackPic_Marshadow[] = INCBIN_U32("graphics/pokemon/marshadow/back.4bpp.lz"); + const u32 gMonShinyPalette_Marshadow[] = INCBIN_U32("graphics/pokemon/marshadow/shiny.gbapal.lz"); + const u8 gMonIcon_Marshadow[] = INCBIN_U8("graphics/pokemon/marshadow/icon.4bpp"); + const u8 gMonFootprint_Marshadow[] = INCBIN_U8("graphics/pokemon/marshadow/footprint.1bpp"); +#endif //P_FAMILY_MARSHADOW + +#if P_FAMILY_POIPOLE + const u32 gMonFrontPic_Poipole[] = INCBIN_U32("graphics/pokemon/poipole/front.4bpp.lz"); + const u32 gMonPalette_Poipole[] = INCBIN_U32("graphics/pokemon/poipole/normal.gbapal.lz"); + const u32 gMonBackPic_Poipole[] = INCBIN_U32("graphics/pokemon/poipole/back.4bpp.lz"); + const u32 gMonShinyPalette_Poipole[] = INCBIN_U32("graphics/pokemon/poipole/shiny.gbapal.lz"); + const u8 gMonIcon_Poipole[] = INCBIN_U8("graphics/pokemon/poipole/icon.4bpp"); + const u8 gMonFootprint_Poipole[] = INCBIN_U8("graphics/pokemon/poipole/footprint.1bpp"); + + const u32 gMonFrontPic_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/front.4bpp.lz"); + const u32 gMonPalette_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/normal.gbapal.lz"); + const u32 gMonBackPic_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/back.4bpp.lz"); + const u32 gMonShinyPalette_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/shiny.gbapal.lz"); + const u8 gMonIcon_Naganadel[] = INCBIN_U8("graphics/pokemon/naganadel/icon.4bpp"); + const u8 gMonFootprint_Naganadel[] = INCBIN_U8("graphics/pokemon/naganadel/footprint.1bpp"); +#endif //P_FAMILY_POIPOLE + +#if P_FAMILY_STAKATAKA + const u32 gMonFrontPic_Stakataka[] = INCBIN_U32("graphics/pokemon/stakataka/front.4bpp.lz"); + const u32 gMonPalette_Stakataka[] = INCBIN_U32("graphics/pokemon/stakataka/normal.gbapal.lz"); + const u32 gMonBackPic_Stakataka[] = INCBIN_U32("graphics/pokemon/stakataka/back.4bpp.lz"); + const u32 gMonShinyPalette_Stakataka[] = INCBIN_U32("graphics/pokemon/stakataka/shiny.gbapal.lz"); + const u8 gMonIcon_Stakataka[] = INCBIN_U8("graphics/pokemon/stakataka/icon.4bpp"); + const u8 gMonFootprint_Stakataka[] = INCBIN_U8("graphics/pokemon/stakataka/footprint.1bpp"); +#endif //P_FAMILY_STAKATAKA + +#if P_FAMILY_BLACEPHALON + const u32 gMonFrontPic_Blacephalon[] = INCBIN_U32("graphics/pokemon/blacephalon/front.4bpp.lz"); + const u32 gMonPalette_Blacephalon[] = INCBIN_U32("graphics/pokemon/blacephalon/normal.gbapal.lz"); + const u32 gMonBackPic_Blacephalon[] = INCBIN_U32("graphics/pokemon/blacephalon/back.4bpp.lz"); + const u32 gMonShinyPalette_Blacephalon[] = INCBIN_U32("graphics/pokemon/blacephalon/shiny.gbapal.lz"); + const u8 gMonIcon_Blacephalon[] = INCBIN_U8("graphics/pokemon/blacephalon/icon.4bpp"); + const u8 gMonFootprint_Blacephalon[] = INCBIN_U8("graphics/pokemon/blacephalon/footprint.1bpp"); +#endif //P_FAMILY_BLACEPHALON + +#if P_FAMILY_ZERAORA + const u32 gMonFrontPic_Zeraora[] = INCBIN_U32("graphics/pokemon/zeraora/front.4bpp.lz"); + const u32 gMonPalette_Zeraora[] = INCBIN_U32("graphics/pokemon/zeraora/normal.gbapal.lz"); + const u32 gMonBackPic_Zeraora[] = INCBIN_U32("graphics/pokemon/zeraora/back.4bpp.lz"); + const u32 gMonShinyPalette_Zeraora[] = INCBIN_U32("graphics/pokemon/zeraora/shiny.gbapal.lz"); + const u8 gMonIcon_Zeraora[] = INCBIN_U8("graphics/pokemon/zeraora/icon.4bpp"); + const u8 gMonFootprint_Zeraora[] = INCBIN_U8("graphics/pokemon/zeraora/footprint.1bpp"); +#endif //P_FAMILY_ZERAORA + +#if P_FAMILY_MELTAN + const u32 gMonFrontPic_Meltan[] = INCBIN_U32("graphics/pokemon/meltan/front.4bpp.lz"); + const u32 gMonPalette_Meltan[] = INCBIN_U32("graphics/pokemon/meltan/normal.gbapal.lz"); + const u32 gMonBackPic_Meltan[] = INCBIN_U32("graphics/pokemon/meltan/back.4bpp.lz"); + const u32 gMonShinyPalette_Meltan[] = INCBIN_U32("graphics/pokemon/meltan/shiny.gbapal.lz"); + const u8 gMonIcon_Meltan[] = INCBIN_U8("graphics/pokemon/meltan/icon.4bpp"); + const u8 gMonFootprint_Meltan[] = INCBIN_U8("graphics/pokemon/meltan/footprint.1bpp"); + + const u32 gMonFrontPic_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/front.4bpp.lz"); + const u32 gMonPalette_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/normal.gbapal.lz"); + const u32 gMonBackPic_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/back.4bpp.lz"); + const u32 gMonShinyPalette_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/shiny.gbapal.lz"); + const u8 gMonIcon_Melmetal[] = INCBIN_U8("graphics/pokemon/melmetal/icon.4bpp"); + const u8 gMonFootprint_Melmetal[] = INCBIN_U8("graphics/pokemon/melmetal/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_MelmetalGigantamax[] = INCBIN_U32("graphics/pokemon/melmetal/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_MelmetalGigantamax[] = INCBIN_U32("graphics/pokemon/melmetal/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_MelmetalGigantamax[] = INCBIN_U32("graphics/pokemon/melmetal/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_MelmetalGigantamax[] = INCBIN_U32("graphics/pokemon/melmetal/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_MelmetalGigantamax[] = INCBIN_U8("graphics/pokemon/melmetal/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MELTAN + +#if P_FAMILY_GROOKEY + const u32 gMonFrontPic_Grookey[] = INCBIN_U32("graphics/pokemon/grookey/front.4bpp.lz"); + const u32 gMonPalette_Grookey[] = INCBIN_U32("graphics/pokemon/grookey/normal.gbapal.lz"); + const u32 gMonBackPic_Grookey[] = INCBIN_U32("graphics/pokemon/grookey/back.4bpp.lz"); + const u32 gMonShinyPalette_Grookey[] = INCBIN_U32("graphics/pokemon/grookey/shiny.gbapal.lz"); + const u8 gMonIcon_Grookey[] = INCBIN_U8("graphics/pokemon/grookey/icon.4bpp"); + const u8 gMonFootprint_Grookey[] = INCBIN_U8("graphics/pokemon/grookey/footprint.1bpp"); + + const u32 gMonFrontPic_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/front.4bpp.lz"); + const u32 gMonPalette_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/normal.gbapal.lz"); + const u32 gMonBackPic_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/back.4bpp.lz"); + const u32 gMonShinyPalette_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/shiny.gbapal.lz"); + const u8 gMonIcon_Thwackey[] = INCBIN_U8("graphics/pokemon/thwackey/icon.4bpp"); + const u8 gMonFootprint_Thwackey[] = INCBIN_U8("graphics/pokemon/thwackey/footprint.1bpp"); + + const u32 gMonFrontPic_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/front.4bpp.lz"); + const u32 gMonPalette_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/normal.gbapal.lz"); + const u32 gMonBackPic_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/back.4bpp.lz"); + const u32 gMonShinyPalette_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/shiny.gbapal.lz"); + const u8 gMonIcon_Rillaboom[] = INCBIN_U8("graphics/pokemon/rillaboom/icon.4bpp"); + const u8 gMonFootprint_Rillaboom[] = INCBIN_U8("graphics/pokemon/rillaboom/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_RillaboomGigantamax[] = INCBIN_U32("graphics/pokemon/rillaboom/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_RillaboomGigantamax[] = INCBIN_U32("graphics/pokemon/rillaboom/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_RillaboomGigantamax[] = INCBIN_U32("graphics/pokemon/rillaboom/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_RillaboomGigantamax[] = INCBIN_U32("graphics/pokemon/rillaboom/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_RillaboomGigantamax[] = INCBIN_U8("graphics/pokemon/rillaboom/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_GROOKEY + +#if P_FAMILY_SCORBUNNY + const u32 gMonFrontPic_Scorbunny[] = INCBIN_U32("graphics/pokemon/scorbunny/front.4bpp.lz"); + const u32 gMonPalette_Scorbunny[] = INCBIN_U32("graphics/pokemon/scorbunny/normal.gbapal.lz"); + const u32 gMonBackPic_Scorbunny[] = INCBIN_U32("graphics/pokemon/scorbunny/back.4bpp.lz"); + const u32 gMonShinyPalette_Scorbunny[] = INCBIN_U32("graphics/pokemon/scorbunny/shiny.gbapal.lz"); + const u8 gMonIcon_Scorbunny[] = INCBIN_U8("graphics/pokemon/scorbunny/icon.4bpp"); + const u8 gMonFootprint_Scorbunny[] = INCBIN_U8("graphics/pokemon/scorbunny/footprint.1bpp"); + + const u32 gMonFrontPic_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/front.4bpp.lz"); + const u32 gMonPalette_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/normal.gbapal.lz"); + const u32 gMonBackPic_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/back.4bpp.lz"); + const u32 gMonShinyPalette_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/shiny.gbapal.lz"); + const u8 gMonIcon_Raboot[] = INCBIN_U8("graphics/pokemon/raboot/icon.4bpp"); + const u8 gMonFootprint_Raboot[] = INCBIN_U8("graphics/pokemon/raboot/footprint.1bpp"); + + const u32 gMonFrontPic_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/front.4bpp.lz"); + const u32 gMonPalette_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/normal.gbapal.lz"); + const u32 gMonBackPic_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/back.4bpp.lz"); + const u32 gMonShinyPalette_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/shiny.gbapal.lz"); + const u8 gMonIcon_Cinderace[] = INCBIN_U8("graphics/pokemon/cinderace/icon.4bpp"); + const u8 gMonFootprint_Cinderace[] = INCBIN_U8("graphics/pokemon/cinderace/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_CinderaceGigantamax[] = INCBIN_U32("graphics/pokemon/cinderace/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_CinderaceGigantamax[] = INCBIN_U32("graphics/pokemon/cinderace/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_CinderaceGigantamax[] = INCBIN_U32("graphics/pokemon/cinderace/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_CinderaceGigantamax[] = INCBIN_U32("graphics/pokemon/cinderace/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_CinderaceGigantamax[] = INCBIN_U8("graphics/pokemon/cinderace/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SCORBUNNY + +#if P_FAMILY_SOBBLE + const u32 gMonFrontPic_Sobble[] = INCBIN_U32("graphics/pokemon/sobble/front.4bpp.lz"); + const u32 gMonPalette_Sobble[] = INCBIN_U32("graphics/pokemon/sobble/normal.gbapal.lz"); + const u32 gMonBackPic_Sobble[] = INCBIN_U32("graphics/pokemon/sobble/back.4bpp.lz"); + const u32 gMonShinyPalette_Sobble[] = INCBIN_U32("graphics/pokemon/sobble/shiny.gbapal.lz"); + const u8 gMonIcon_Sobble[] = INCBIN_U8("graphics/pokemon/sobble/icon.4bpp"); + const u8 gMonFootprint_Sobble[] = INCBIN_U8("graphics/pokemon/sobble/footprint.1bpp"); + + const u32 gMonFrontPic_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/front.4bpp.lz"); + const u32 gMonPalette_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/normal.gbapal.lz"); + const u32 gMonBackPic_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/back.4bpp.lz"); + const u32 gMonShinyPalette_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/shiny.gbapal.lz"); + const u8 gMonIcon_Drizzile[] = INCBIN_U8("graphics/pokemon/drizzile/icon.4bpp"); + const u8 gMonFootprint_Drizzile[] = INCBIN_U8("graphics/pokemon/drizzile/footprint.1bpp"); + + const u32 gMonFrontPic_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/front.4bpp.lz"); + const u32 gMonPalette_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/normal.gbapal.lz"); + const u32 gMonBackPic_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/back.4bpp.lz"); + const u32 gMonShinyPalette_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/shiny.gbapal.lz"); + const u8 gMonIcon_Inteleon[] = INCBIN_U8("graphics/pokemon/inteleon/icon.4bpp"); + const u8 gMonFootprint_Inteleon[] = INCBIN_U8("graphics/pokemon/inteleon/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_InteleonGigantamax[] = INCBIN_U32("graphics/pokemon/inteleon/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_InteleonGigantamax[] = INCBIN_U32("graphics/pokemon/inteleon/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_InteleonGigantamax[] = INCBIN_U32("graphics/pokemon/inteleon/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_InteleonGigantamax[] = INCBIN_U32("graphics/pokemon/inteleon/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_InteleonGigantamax[] = INCBIN_U8("graphics/pokemon/inteleon/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SOBBLE + +#if P_FAMILY_SKWOVET + const u32 gMonFrontPic_Skwovet[] = INCBIN_U32("graphics/pokemon/skwovet/front.4bpp.lz"); + const u32 gMonPalette_Skwovet[] = INCBIN_U32("graphics/pokemon/skwovet/normal.gbapal.lz"); + const u32 gMonBackPic_Skwovet[] = INCBIN_U32("graphics/pokemon/skwovet/back.4bpp.lz"); + const u32 gMonShinyPalette_Skwovet[] = INCBIN_U32("graphics/pokemon/skwovet/shiny.gbapal.lz"); + const u8 gMonIcon_Skwovet[] = INCBIN_U8("graphics/pokemon/skwovet/icon.4bpp"); + const u8 gMonFootprint_Skwovet[] = INCBIN_U8("graphics/pokemon/skwovet/footprint.1bpp"); + + const u32 gMonFrontPic_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/front.4bpp.lz"); + const u32 gMonPalette_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/normal.gbapal.lz"); + const u32 gMonBackPic_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/back.4bpp.lz"); + const u32 gMonShinyPalette_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/shiny.gbapal.lz"); + const u8 gMonIcon_Greedent[] = INCBIN_U8("graphics/pokemon/greedent/icon.4bpp"); + const u8 gMonFootprint_Greedent[] = INCBIN_U8("graphics/pokemon/greedent/footprint.1bpp"); +#endif //P_FAMILY_SKWOVET + +#if P_FAMILY_ROOKIDEE + const u32 gMonFrontPic_Rookidee[] = INCBIN_U32("graphics/pokemon/rookidee/anim_front.4bpp.lz"); + const u32 gMonPalette_Rookidee[] = INCBIN_U32("graphics/pokemon/rookidee/normal.gbapal.lz"); + const u32 gMonBackPic_Rookidee[] = INCBIN_U32("graphics/pokemon/rookidee/back.4bpp.lz"); + const u32 gMonShinyPalette_Rookidee[] = INCBIN_U32("graphics/pokemon/rookidee/shiny.gbapal.lz"); + const u8 gMonIcon_Rookidee[] = INCBIN_U8("graphics/pokemon/rookidee/icon.4bpp"); + const u8 gMonFootprint_Rookidee[] = INCBIN_U8("graphics/pokemon/rookidee/footprint.1bpp"); + + const u32 gMonFrontPic_Corvisquire[] = INCBIN_U32("graphics/pokemon/corvisquire/anim_front.4bpp.lz"); + const u32 gMonPalette_Corvisquire[] = INCBIN_U32("graphics/pokemon/corvisquire/normal.gbapal.lz"); + const u32 gMonBackPic_Corvisquire[] = INCBIN_U32("graphics/pokemon/corvisquire/back.4bpp.lz"); + const u32 gMonShinyPalette_Corvisquire[] = INCBIN_U32("graphics/pokemon/corvisquire/shiny.gbapal.lz"); + const u8 gMonIcon_Corvisquire[] = INCBIN_U8("graphics/pokemon/corvisquire/icon.4bpp"); + const u8 gMonFootprint_Corvisquire[] = INCBIN_U8("graphics/pokemon/corvisquire/footprint.1bpp"); + + const u32 gMonFrontPic_Corviknight[] = INCBIN_U32("graphics/pokemon/corviknight/anim_front.4bpp.lz"); + const u32 gMonPalette_Corviknight[] = INCBIN_U32("graphics/pokemon/corviknight/normal.gbapal.lz"); + const u32 gMonBackPic_Corviknight[] = INCBIN_U32("graphics/pokemon/corviknight/back.4bpp.lz"); + const u32 gMonShinyPalette_Corviknight[] = INCBIN_U32("graphics/pokemon/corviknight/shiny.gbapal.lz"); + const u8 gMonIcon_Corviknight[] = INCBIN_U8("graphics/pokemon/corviknight/icon.4bpp"); + const u8 gMonFootprint_Corviknight[] = INCBIN_U8("graphics/pokemon/corviknight/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_CorviknightGigantamax[] = INCBIN_U32("graphics/pokemon/corviknight/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_CorviknightGigantamax[] = INCBIN_U32("graphics/pokemon/corviknight/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_CorviknightGigantamax[] = INCBIN_U32("graphics/pokemon/corviknight/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_CorviknightGigantamax[] = INCBIN_U32("graphics/pokemon/corviknight/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_CorviknightGigantamax[] = INCBIN_U8("graphics/pokemon/corviknight/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_ROOKIDEE + +#if P_FAMILY_BLIPBUG + const u32 gMonFrontPic_Blipbug[] = INCBIN_U32("graphics/pokemon/blipbug/front.4bpp.lz"); + const u32 gMonPalette_Blipbug[] = INCBIN_U32("graphics/pokemon/blipbug/normal.gbapal.lz"); + const u32 gMonBackPic_Blipbug[] = INCBIN_U32("graphics/pokemon/blipbug/back.4bpp.lz"); + const u32 gMonShinyPalette_Blipbug[] = INCBIN_U32("graphics/pokemon/blipbug/shiny.gbapal.lz"); + const u8 gMonIcon_Blipbug[] = INCBIN_U8("graphics/pokemon/blipbug/icon.4bpp"); + const u8 gMonFootprint_Blipbug[] = INCBIN_U8("graphics/pokemon/blipbug/footprint.1bpp"); + + const u32 gMonFrontPic_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/front.4bpp.lz"); + const u32 gMonPalette_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/normal.gbapal.lz"); + const u32 gMonBackPic_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/back.4bpp.lz"); + const u32 gMonShinyPalette_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/shiny.gbapal.lz"); + const u8 gMonIcon_Dottler[] = INCBIN_U8("graphics/pokemon/dottler/icon.4bpp"); + const u8 gMonFootprint_Dottler[] = INCBIN_U8("graphics/pokemon/dottler/footprint.1bpp"); + + const u32 gMonFrontPic_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/front.4bpp.lz"); + const u32 gMonPalette_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/normal.gbapal.lz"); + const u32 gMonBackPic_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/back.4bpp.lz"); + const u32 gMonShinyPalette_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/shiny.gbapal.lz"); + const u8 gMonIcon_Orbeetle[] = INCBIN_U8("graphics/pokemon/orbeetle/icon.4bpp"); + const u8 gMonFootprint_Orbeetle[] = INCBIN_U8("graphics/pokemon/orbeetle/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_OrbeetleGigantamax[] = INCBIN_U32("graphics/pokemon/orbeetle/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_OrbeetleGigantamax[] = INCBIN_U32("graphics/pokemon/orbeetle/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_OrbeetleGigantamax[] = INCBIN_U32("graphics/pokemon/orbeetle/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_OrbeetleGigantamax[] = INCBIN_U32("graphics/pokemon/orbeetle/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_OrbeetleGigantamax[] = INCBIN_U8("graphics/pokemon/orbeetle/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_BLIPBUG + +#if P_FAMILY_NICKIT + const u32 gMonFrontPic_Nickit[] = INCBIN_U32("graphics/pokemon/nickit/front.4bpp.lz"); + const u32 gMonPalette_Nickit[] = INCBIN_U32("graphics/pokemon/nickit/normal.gbapal.lz"); + const u32 gMonBackPic_Nickit[] = INCBIN_U32("graphics/pokemon/nickit/back.4bpp.lz"); + const u32 gMonShinyPalette_Nickit[] = INCBIN_U32("graphics/pokemon/nickit/shiny.gbapal.lz"); + const u8 gMonIcon_Nickit[] = INCBIN_U8("graphics/pokemon/nickit/icon.4bpp"); + const u8 gMonFootprint_Nickit[] = INCBIN_U8("graphics/pokemon/nickit/footprint.1bpp"); + + const u32 gMonFrontPic_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/front.4bpp.lz"); + const u32 gMonPalette_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/normal.gbapal.lz"); + const u32 gMonBackPic_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/back.4bpp.lz"); + const u32 gMonShinyPalette_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/shiny.gbapal.lz"); + const u8 gMonIcon_Thievul[] = INCBIN_U8("graphics/pokemon/thievul/icon.4bpp"); + const u8 gMonFootprint_Thievul[] = INCBIN_U8("graphics/pokemon/thievul/footprint.1bpp"); +#endif //P_FAMILY_NICKIT + +#if P_FAMILY_GOSSIFLEUR + const u32 gMonFrontPic_Gossifleur[] = INCBIN_U32("graphics/pokemon/gossifleur/front.4bpp.lz"); + const u32 gMonPalette_Gossifleur[] = INCBIN_U32("graphics/pokemon/gossifleur/normal.gbapal.lz"); + const u32 gMonBackPic_Gossifleur[] = INCBIN_U32("graphics/pokemon/gossifleur/back.4bpp.lz"); + const u32 gMonShinyPalette_Gossifleur[] = INCBIN_U32("graphics/pokemon/gossifleur/shiny.gbapal.lz"); + const u8 gMonIcon_Gossifleur[] = INCBIN_U8("graphics/pokemon/gossifleur/icon.4bpp"); + const u8 gMonFootprint_Gossifleur[] = INCBIN_U8("graphics/pokemon/gossifleur/footprint.1bpp"); + + const u32 gMonFrontPic_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/front.4bpp.lz"); + const u32 gMonPalette_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/normal.gbapal.lz"); + const u32 gMonBackPic_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/back.4bpp.lz"); + const u32 gMonShinyPalette_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/shiny.gbapal.lz"); + const u8 gMonIcon_Eldegoss[] = INCBIN_U8("graphics/pokemon/eldegoss/icon.4bpp"); + const u8 gMonFootprint_Eldegoss[] = INCBIN_U8("graphics/pokemon/eldegoss/footprint.1bpp"); +#endif //P_FAMILY_GOSSIFLEUR + +#if P_FAMILY_WOOLOO + const u32 gMonFrontPic_Wooloo[] = INCBIN_U32("graphics/pokemon/wooloo/front.4bpp.lz"); + const u32 gMonPalette_Wooloo[] = INCBIN_U32("graphics/pokemon/wooloo/normal.gbapal.lz"); + const u32 gMonBackPic_Wooloo[] = INCBIN_U32("graphics/pokemon/wooloo/back.4bpp.lz"); + const u32 gMonShinyPalette_Wooloo[] = INCBIN_U32("graphics/pokemon/wooloo/shiny.gbapal.lz"); + const u8 gMonIcon_Wooloo[] = INCBIN_U8("graphics/pokemon/wooloo/icon.4bpp"); + const u8 gMonFootprint_Wooloo[] = INCBIN_U8("graphics/pokemon/wooloo/footprint.1bpp"); + + const u32 gMonFrontPic_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/front.4bpp.lz"); + const u32 gMonPalette_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/normal.gbapal.lz"); + const u32 gMonBackPic_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/back.4bpp.lz"); + const u32 gMonShinyPalette_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/shiny.gbapal.lz"); + const u8 gMonIcon_Dubwool[] = INCBIN_U8("graphics/pokemon/dubwool/icon.4bpp"); + const u8 gMonFootprint_Dubwool[] = INCBIN_U8("graphics/pokemon/dubwool/footprint.1bpp"); +#endif //P_FAMILY_WOOLOO + +#if P_FAMILY_CHEWTLE + const u32 gMonFrontPic_Chewtle[] = INCBIN_U32("graphics/pokemon/chewtle/anim_front.4bpp.lz"); + const u32 gMonPalette_Chewtle[] = INCBIN_U32("graphics/pokemon/chewtle/normal.gbapal.lz"); + const u32 gMonBackPic_Chewtle[] = INCBIN_U32("graphics/pokemon/chewtle/back.4bpp.lz"); + const u32 gMonShinyPalette_Chewtle[] = INCBIN_U32("graphics/pokemon/chewtle/shiny.gbapal.lz"); + const u8 gMonIcon_Chewtle[] = INCBIN_U8("graphics/pokemon/chewtle/icon.4bpp"); + const u8 gMonFootprint_Chewtle[] = INCBIN_U8("graphics/pokemon/chewtle/footprint.1bpp"); + + const u32 gMonFrontPic_Drednaw[] = INCBIN_U32("graphics/pokemon/drednaw/anim_front.4bpp.lz"); + const u32 gMonPalette_Drednaw[] = INCBIN_U32("graphics/pokemon/drednaw/normal.gbapal.lz"); + const u32 gMonBackPic_Drednaw[] = INCBIN_U32("graphics/pokemon/drednaw/back.4bpp.lz"); + const u32 gMonShinyPalette_Drednaw[] = INCBIN_U32("graphics/pokemon/drednaw/shiny.gbapal.lz"); + const u8 gMonIcon_Drednaw[] = INCBIN_U8("graphics/pokemon/drednaw/icon.4bpp"); + const u8 gMonFootprint_Drednaw[] = INCBIN_U8("graphics/pokemon/drednaw/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_DrednawGigantamax[] = INCBIN_U32("graphics/pokemon/drednaw/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_DrednawGigantamax[] = INCBIN_U32("graphics/pokemon/drednaw/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_DrednawGigantamax[] = INCBIN_U32("graphics/pokemon/drednaw/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_DrednawGigantamax[] = INCBIN_U32("graphics/pokemon/drednaw/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_DrednawGigantamax[] = INCBIN_U8("graphics/pokemon/drednaw/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CHEWTLE + +#if P_FAMILY_YAMPER + const u32 gMonFrontPic_Yamper[] = INCBIN_U32("graphics/pokemon/yamper/front.4bpp.lz"); + const u32 gMonPalette_Yamper[] = INCBIN_U32("graphics/pokemon/yamper/normal.gbapal.lz"); + const u32 gMonBackPic_Yamper[] = INCBIN_U32("graphics/pokemon/yamper/back.4bpp.lz"); + const u32 gMonShinyPalette_Yamper[] = INCBIN_U32("graphics/pokemon/yamper/shiny.gbapal.lz"); + const u8 gMonIcon_Yamper[] = INCBIN_U8("graphics/pokemon/yamper/icon.4bpp"); + const u8 gMonFootprint_Yamper[] = INCBIN_U8("graphics/pokemon/yamper/footprint.1bpp"); + + const u32 gMonFrontPic_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/front.4bpp.lz"); + const u32 gMonPalette_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/normal.gbapal.lz"); + const u32 gMonBackPic_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/back.4bpp.lz"); + const u32 gMonShinyPalette_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/shiny.gbapal.lz"); + const u8 gMonIcon_Boltund[] = INCBIN_U8("graphics/pokemon/boltund/icon.4bpp"); + const u8 gMonFootprint_Boltund[] = INCBIN_U8("graphics/pokemon/boltund/footprint.1bpp"); +#endif //P_FAMILY_YAMPER + +#if P_FAMILY_ROLYCOLY + const u32 gMonFrontPic_Rolycoly[] = INCBIN_U32("graphics/pokemon/rolycoly/anim_front.4bpp.lz"); + const u32 gMonPalette_Rolycoly[] = INCBIN_U32("graphics/pokemon/rolycoly/normal.gbapal.lz"); + const u32 gMonBackPic_Rolycoly[] = INCBIN_U32("graphics/pokemon/rolycoly/back.4bpp.lz"); + const u32 gMonShinyPalette_Rolycoly[] = INCBIN_U32("graphics/pokemon/rolycoly/shiny.gbapal.lz"); + const u8 gMonIcon_Rolycoly[] = INCBIN_U8("graphics/pokemon/rolycoly/icon.4bpp"); + const u8 gMonFootprint_Rolycoly[] = INCBIN_U8("graphics/pokemon/rolycoly/footprint.1bpp"); + + const u32 gMonFrontPic_Carkol[] = INCBIN_U32("graphics/pokemon/carkol/anim_front.4bpp.lz"); + const u32 gMonPalette_Carkol[] = INCBIN_U32("graphics/pokemon/carkol/normal.gbapal.lz"); + const u32 gMonBackPic_Carkol[] = INCBIN_U32("graphics/pokemon/carkol/back.4bpp.lz"); + const u32 gMonShinyPalette_Carkol[] = INCBIN_U32("graphics/pokemon/carkol/shiny.gbapal.lz"); + const u8 gMonIcon_Carkol[] = INCBIN_U8("graphics/pokemon/carkol/icon.4bpp"); + const u8 gMonFootprint_Carkol[] = INCBIN_U8("graphics/pokemon/carkol/footprint.1bpp"); + + const u32 gMonFrontPic_Coalossal[] = INCBIN_U32("graphics/pokemon/coalossal/anim_front.4bpp.lz"); + const u32 gMonPalette_Coalossal[] = INCBIN_U32("graphics/pokemon/coalossal/normal.gbapal.lz"); + const u32 gMonBackPic_Coalossal[] = INCBIN_U32("graphics/pokemon/coalossal/back.4bpp.lz"); + const u32 gMonShinyPalette_Coalossal[] = INCBIN_U32("graphics/pokemon/coalossal/shiny.gbapal.lz"); + const u8 gMonIcon_Coalossal[] = INCBIN_U8("graphics/pokemon/coalossal/icon.4bpp"); + const u8 gMonFootprint_Coalossal[] = INCBIN_U8("graphics/pokemon/coalossal/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_CoalossalGigantamax[] = INCBIN_U32("graphics/pokemon/coalossal/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_CoalossalGigantamax[] = INCBIN_U32("graphics/pokemon/coalossal/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_CoalossalGigantamax[] = INCBIN_U32("graphics/pokemon/coalossal/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_CoalossalGigantamax[] = INCBIN_U32("graphics/pokemon/coalossal/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_CoalossalGigantamax[] = INCBIN_U8("graphics/pokemon/coalossal/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_ROLYCOLY + +#if P_FAMILY_APPLIN + const u32 gMonFrontPic_Applin[] = INCBIN_U32("graphics/pokemon/applin/anim_front.4bpp.lz"); + const u32 gMonPalette_Applin[] = INCBIN_U32("graphics/pokemon/applin/normal.gbapal.lz"); + const u32 gMonBackPic_Applin[] = INCBIN_U32("graphics/pokemon/applin/back.4bpp.lz"); + const u32 gMonShinyPalette_Applin[] = INCBIN_U32("graphics/pokemon/applin/shiny.gbapal.lz"); + const u8 gMonIcon_Applin[] = INCBIN_U8("graphics/pokemon/applin/icon.4bpp"); + const u8 gMonFootprint_Applin[] = INCBIN_U8("graphics/pokemon/applin/footprint.1bpp"); + + const u32 gMonFrontPic_Flapple[] = INCBIN_U32("graphics/pokemon/flapple/anim_front.4bpp.lz"); + const u32 gMonPalette_Flapple[] = INCBIN_U32("graphics/pokemon/flapple/normal.gbapal.lz"); + const u32 gMonBackPic_Flapple[] = INCBIN_U32("graphics/pokemon/flapple/back.4bpp.lz"); + const u32 gMonShinyPalette_Flapple[] = INCBIN_U32("graphics/pokemon/flapple/shiny.gbapal.lz"); + const u8 gMonIcon_Flapple[] = INCBIN_U8("graphics/pokemon/flapple/icon.4bpp"); + const u8 gMonFootprint_Flapple[] = INCBIN_U8("graphics/pokemon/flapple/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_FlappleGigantamax[] = INCBIN_U32("graphics/pokemon/flapple/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_FlappleGigantamax[] = INCBIN_U32("graphics/pokemon/flapple/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_FlappleGigantamax[] = INCBIN_U32("graphics/pokemon/flapple/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_FlappleGigantamax[] = INCBIN_U32("graphics/pokemon/flapple/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_FlappleGigantamax[] = INCBIN_U8("graphics/pokemon/flapple/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS + + const u32 gMonFrontPic_Appletun[] = INCBIN_U32("graphics/pokemon/appletun/anim_front.4bpp.lz"); + const u32 gMonPalette_Appletun[] = INCBIN_U32("graphics/pokemon/appletun/normal.gbapal.lz"); + const u32 gMonBackPic_Appletun[] = INCBIN_U32("graphics/pokemon/appletun/back.4bpp.lz"); + const u32 gMonShinyPalette_Appletun[] = INCBIN_U32("graphics/pokemon/appletun/shiny.gbapal.lz"); + const u8 gMonIcon_Appletun[] = INCBIN_U8("graphics/pokemon/appletun/icon.4bpp"); + const u8 gMonFootprint_Appletun[] = INCBIN_U8("graphics/pokemon/appletun/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_AppletunGigantamax[] = INCBIN_U32("graphics/pokemon/appletun/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_AppletunGigantamax[] = INCBIN_U32("graphics/pokemon/appletun/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_AppletunGigantamax[] = INCBIN_U32("graphics/pokemon/appletun/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_AppletunGigantamax[] = INCBIN_U32("graphics/pokemon/appletun/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_AppletunGigantamax[] = INCBIN_U8("graphics/pokemon/appletun/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS + +#if P_GEN_9_CROSS_EVOS + const u32 gMonFrontPic_Dipplin[] = INCBIN_U32("graphics/pokemon/dipplin/front.4bpp.lz"); + const u32 gMonPalette_Dipplin[] = INCBIN_U32("graphics/pokemon/dipplin/normal.gbapal.lz"); + const u32 gMonBackPic_Dipplin[] = INCBIN_U32("graphics/pokemon/dipplin/back.4bpp.lz"); + const u32 gMonShinyPalette_Dipplin[] = INCBIN_U32("graphics/pokemon/dipplin/shiny.gbapal.lz"); + const u8 gMonIcon_Dipplin[] = INCBIN_U8("graphics/pokemon/dipplin/icon.4bpp"); + // const u8 gMonFootprint_Dipplin[] = INCBIN_U8("graphics/pokemon/dipplin/footprint.1bpp"); +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_APPLIN + +#if P_FAMILY_SILICOBRA + const u32 gMonFrontPic_Silicobra[] = INCBIN_U32("graphics/pokemon/silicobra/front.4bpp.lz"); + const u32 gMonPalette_Silicobra[] = INCBIN_U32("graphics/pokemon/silicobra/normal.gbapal.lz"); + const u32 gMonBackPic_Silicobra[] = INCBIN_U32("graphics/pokemon/silicobra/back.4bpp.lz"); + const u32 gMonShinyPalette_Silicobra[] = INCBIN_U32("graphics/pokemon/silicobra/shiny.gbapal.lz"); + const u8 gMonIcon_Silicobra[] = INCBIN_U8("graphics/pokemon/silicobra/icon.4bpp"); + const u8 gMonFootprint_Silicobra[] = INCBIN_U8("graphics/pokemon/silicobra/footprint.1bpp"); + + const u32 gMonFrontPic_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/front.4bpp.lz"); + const u32 gMonPalette_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/normal.gbapal.lz"); + const u32 gMonBackPic_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/back.4bpp.lz"); + const u32 gMonShinyPalette_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/shiny.gbapal.lz"); + const u8 gMonIcon_Sandaconda[] = INCBIN_U8("graphics/pokemon/sandaconda/icon.4bpp"); + const u8 gMonFootprint_Sandaconda[] = INCBIN_U8("graphics/pokemon/sandaconda/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_SandacondaGigantamax[] = INCBIN_U32("graphics/pokemon/sandaconda/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_SandacondaGigantamax[] = INCBIN_U32("graphics/pokemon/sandaconda/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_SandacondaGigantamax[] = INCBIN_U32("graphics/pokemon/sandaconda/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_SandacondaGigantamax[] = INCBIN_U32("graphics/pokemon/sandaconda/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_SandacondaGigantamax[] = INCBIN_U8("graphics/pokemon/sandaconda/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SILICOBRA + +#if P_FAMILY_CRAMORANT + const u32 gMonFrontPic_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/front.4bpp.lz"); + const u32 gMonPalette_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/normal.gbapal.lz"); + const u32 gMonBackPic_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/back.4bpp.lz"); + const u32 gMonShinyPalette_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/shiny.gbapal.lz"); + const u8 gMonIcon_Cramorant[] = INCBIN_U8("graphics/pokemon/cramorant/icon.4bpp"); + const u8 gMonFootprint_Cramorant[] = INCBIN_U8("graphics/pokemon/cramorant/footprint.1bpp"); + + const u32 gMonFrontPic_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/front.4bpp.lz"); + const u32 gMonPalette_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/normal.gbapal.lz"); + const u32 gMonBackPic_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/back.4bpp.lz"); + const u32 gMonShinyPalette_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/shiny.gbapal.lz"); + const u8 gMonIcon_CramorantGulping[] = INCBIN_U8("graphics/pokemon/cramorant/gulping/icon.4bpp"); + + const u32 gMonFrontPic_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/front.4bpp.lz"); + const u32 gMonPalette_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/normal.gbapal.lz"); + const u32 gMonBackPic_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/back.4bpp.lz"); + const u32 gMonShinyPalette_CramorantGorging[] = INCBIN_U32("graphics/pokemon/cramorant/gorging/shiny.gbapal.lz"); + const u8 gMonIcon_CramorantGorging[] = INCBIN_U8("graphics/pokemon/cramorant/gorging/icon.4bpp"); +#endif //P_FAMILY_CRAMORANT + +#if P_FAMILY_ARROKUDA + const u32 gMonFrontPic_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/front.4bpp.lz"); + const u32 gMonPalette_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/normal.gbapal.lz"); + const u32 gMonBackPic_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/back.4bpp.lz"); + const u32 gMonShinyPalette_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/shiny.gbapal.lz"); + const u8 gMonIcon_Arrokuda[] = INCBIN_U8("graphics/pokemon/arrokuda/icon.4bpp"); + const u8 gMonFootprint_Arrokuda[] = INCBIN_U8("graphics/pokemon/arrokuda/footprint.1bpp"); + + const u32 gMonFrontPic_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/front.4bpp.lz"); + const u32 gMonPalette_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/normal.gbapal.lz"); + const u32 gMonBackPic_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/back.4bpp.lz"); + const u32 gMonShinyPalette_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/shiny.gbapal.lz"); + const u8 gMonIcon_Barraskewda[] = INCBIN_U8("graphics/pokemon/barraskewda/icon.4bpp"); + const u8 gMonFootprint_Barraskewda[] = INCBIN_U8("graphics/pokemon/barraskewda/footprint.1bpp"); +#endif //P_FAMILY_ARROKUDA + +#if P_FAMILY_TOXEL + const u32 gMonFrontPic_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/front.4bpp.lz"); + const u32 gMonPalette_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/normal.gbapal.lz"); + const u32 gMonBackPic_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/back.4bpp.lz"); + const u32 gMonShinyPalette_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/shiny.gbapal.lz"); + const u8 gMonIcon_Toxel[] = INCBIN_U8("graphics/pokemon/toxel/icon.4bpp"); + const u8 gMonFootprint_Toxel[] = INCBIN_U8("graphics/pokemon/toxel/footprint.1bpp"); + + const u32 gMonFrontPic_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/front.4bpp.lz"); + const u32 gMonPalette_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/normal.gbapal.lz"); + const u32 gMonBackPic_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/back.4bpp.lz"); + const u32 gMonShinyPalette_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/shiny.gbapal.lz"); + const u8 gMonIcon_ToxtricityAmped[] = INCBIN_U8("graphics/pokemon/toxtricity/icon.4bpp"); + const u8 gMonFootprint_Toxtricity[] = INCBIN_U8("graphics/pokemon/toxtricity/footprint.1bpp"); + + const u32 gMonFrontPic_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/front.4bpp.lz"); + const u32 gMonPalette_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/normal.gbapal.lz"); + const u32 gMonBackPic_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/back.4bpp.lz"); + const u32 gMonShinyPalette_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/shiny.gbapal.lz"); + const u8 gMonIcon_ToxtricityLowKey[] = INCBIN_U8("graphics/pokemon/toxtricity/low_key/icon.4bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_ToxtricityGigantamax[] = INCBIN_U32("graphics/pokemon/toxtricity/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_ToxtricityGigantamax[] = INCBIN_U32("graphics/pokemon/toxtricity/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_ToxtricityGigantamax[] = INCBIN_U32("graphics/pokemon/toxtricity/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_ToxtricityGigantamax[] = INCBIN_U32("graphics/pokemon/toxtricity/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_ToxtricityGigantamax[] = INCBIN_U8("graphics/pokemon/toxtricity/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_TOXEL + +#if P_FAMILY_SIZZLIPEDE + const u32 gMonFrontPic_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/anim_front.4bpp.lz"); + const u32 gMonPalette_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/normal.gbapal.lz"); + const u32 gMonBackPic_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/back.4bpp.lz"); + const u32 gMonShinyPalette_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/shiny.gbapal.lz"); + const u8 gMonIcon_Sizzlipede[] = INCBIN_U8("graphics/pokemon/sizzlipede/icon.4bpp"); + const u8 gMonFootprint_Sizzlipede[] = INCBIN_U8("graphics/pokemon/sizzlipede/footprint.1bpp"); + + const u32 gMonFrontPic_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/anim_front.4bpp.lz"); + const u32 gMonPalette_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/normal.gbapal.lz"); + const u32 gMonBackPic_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/back.4bpp.lz"); + const u32 gMonShinyPalette_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/shiny.gbapal.lz"); + const u8 gMonIcon_Centiskorch[] = INCBIN_U8("graphics/pokemon/centiskorch/icon.4bpp"); + const u8 gMonFootprint_Centiskorch[] = INCBIN_U8("graphics/pokemon/centiskorch/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_CentiskorchGigantamax[] = INCBIN_U32("graphics/pokemon/centiskorch/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_CentiskorchGigantamax[] = INCBIN_U32("graphics/pokemon/centiskorch/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_CentiskorchGigantamax[] = INCBIN_U32("graphics/pokemon/centiskorch/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_CentiskorchGigantamax[] = INCBIN_U32("graphics/pokemon/centiskorch/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_CentiskorchGigantamax[] = INCBIN_U8("graphics/pokemon/centiskorch/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SIZZLIPEDE + +#if P_FAMILY_CLOBBOPUS + const u32 gMonFrontPic_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/front.4bpp.lz"); + const u32 gMonPalette_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/normal.gbapal.lz"); + const u32 gMonBackPic_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/back.4bpp.lz"); + const u32 gMonShinyPalette_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/shiny.gbapal.lz"); + const u8 gMonIcon_Clobbopus[] = INCBIN_U8("graphics/pokemon/clobbopus/icon.4bpp"); + const u8 gMonFootprint_Clobbopus[] = INCBIN_U8("graphics/pokemon/clobbopus/footprint.1bpp"); + + const u32 gMonFrontPic_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/front.4bpp.lz"); + const u32 gMonPalette_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/normal.gbapal.lz"); + const u32 gMonBackPic_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/back.4bpp.lz"); + const u32 gMonShinyPalette_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/shiny.gbapal.lz"); + const u8 gMonIcon_Grapploct[] = INCBIN_U8("graphics/pokemon/grapploct/icon.4bpp"); + const u8 gMonFootprint_Grapploct[] = INCBIN_U8("graphics/pokemon/grapploct/footprint.1bpp"); +#endif //P_FAMILY_CLOBBOPUS + +#if P_FAMILY_SINISTEA + const u32 gMonFrontPic_Sinistea[] = INCBIN_U32("graphics/pokemon/sinistea/front.4bpp.lz"); + const u32 gMonPalette_Sinistea[] = INCBIN_U32("graphics/pokemon/sinistea/normal.gbapal.lz"); + const u32 gMonBackPic_Sinistea[] = INCBIN_U32("graphics/pokemon/sinistea/back.4bpp.lz"); + const u32 gMonShinyPalette_Sinistea[] = INCBIN_U32("graphics/pokemon/sinistea/shiny.gbapal.lz"); + const u8 gMonIcon_Sinistea[] = INCBIN_U8("graphics/pokemon/sinistea/icon.4bpp"); + const u8 gMonFootprint_Sinistea[] = INCBIN_U8("graphics/pokemon/sinistea/footprint.1bpp"); + + const u32 gMonFrontPic_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/front.4bpp.lz"); + const u32 gMonPalette_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/normal.gbapal.lz"); + const u32 gMonBackPic_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/back.4bpp.lz"); + const u32 gMonShinyPalette_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/shiny.gbapal.lz"); + const u8 gMonIcon_Polteageist[] = INCBIN_U8("graphics/pokemon/polteageist/icon.4bpp"); + const u8 gMonFootprint_Polteageist[] = INCBIN_U8("graphics/pokemon/polteageist/footprint.1bpp"); +#endif //P_FAMILY_SINISTEA + +#if P_FAMILY_HATENNA + const u32 gMonFrontPic_Hatenna[] = INCBIN_U32("graphics/pokemon/hatenna/front.4bpp.lz"); + const u32 gMonPalette_Hatenna[] = INCBIN_U32("graphics/pokemon/hatenna/normal.gbapal.lz"); + const u32 gMonBackPic_Hatenna[] = INCBIN_U32("graphics/pokemon/hatenna/back.4bpp.lz"); + const u32 gMonShinyPalette_Hatenna[] = INCBIN_U32("graphics/pokemon/hatenna/shiny.gbapal.lz"); + const u8 gMonIcon_Hatenna[] = INCBIN_U8("graphics/pokemon/hatenna/icon.4bpp"); + const u8 gMonFootprint_Hatenna[] = INCBIN_U8("graphics/pokemon/hatenna/footprint.1bpp"); + + const u32 gMonFrontPic_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/front.4bpp.lz"); + const u32 gMonPalette_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/normal.gbapal.lz"); + const u32 gMonBackPic_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/back.4bpp.lz"); + const u32 gMonShinyPalette_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/shiny.gbapal.lz"); + const u8 gMonIcon_Hattrem[] = INCBIN_U8("graphics/pokemon/hattrem/icon.4bpp"); + const u8 gMonFootprint_Hattrem[] = INCBIN_U8("graphics/pokemon/hattrem/footprint.1bpp"); + + const u32 gMonFrontPic_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/front.4bpp.lz"); + const u32 gMonPalette_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/normal.gbapal.lz"); + const u32 gMonBackPic_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/back.4bpp.lz"); + const u32 gMonShinyPalette_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/shiny.gbapal.lz"); + const u8 gMonIcon_Hatterene[] = INCBIN_U8("graphics/pokemon/hatterene/icon.4bpp"); + const u8 gMonFootprint_Hatterene[] = INCBIN_U8("graphics/pokemon/hatterene/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_HattereneGigantamax[] = INCBIN_U32("graphics/pokemon/hatterene/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_HattereneGigantamax[] = INCBIN_U32("graphics/pokemon/hatterene/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_HattereneGigantamax[] = INCBIN_U32("graphics/pokemon/hatterene/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_HattereneGigantamax[] = INCBIN_U32("graphics/pokemon/hatterene/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_HattereneGigantamax[] = INCBIN_U8("graphics/pokemon/hatterene/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_HATENNA + +#if P_FAMILY_IMPIDIMP + const u32 gMonFrontPic_Impidimp[] = INCBIN_U32("graphics/pokemon/impidimp/front.4bpp.lz"); + const u32 gMonPalette_Impidimp[] = INCBIN_U32("graphics/pokemon/impidimp/normal.gbapal.lz"); + const u32 gMonBackPic_Impidimp[] = INCBIN_U32("graphics/pokemon/impidimp/back.4bpp.lz"); + const u32 gMonShinyPalette_Impidimp[] = INCBIN_U32("graphics/pokemon/impidimp/shiny.gbapal.lz"); + const u8 gMonIcon_Impidimp[] = INCBIN_U8("graphics/pokemon/impidimp/icon.4bpp"); + const u8 gMonFootprint_Impidimp[] = INCBIN_U8("graphics/pokemon/impidimp/footprint.1bpp"); + + const u32 gMonFrontPic_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/front.4bpp.lz"); + const u32 gMonPalette_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/normal.gbapal.lz"); + const u32 gMonBackPic_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/back.4bpp.lz"); + const u32 gMonShinyPalette_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/shiny.gbapal.lz"); + const u8 gMonIcon_Morgrem[] = INCBIN_U8("graphics/pokemon/morgrem/icon.4bpp"); + const u8 gMonFootprint_Morgrem[] = INCBIN_U8("graphics/pokemon/morgrem/footprint.1bpp"); + + const u32 gMonFrontPic_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/front.4bpp.lz"); + const u32 gMonPalette_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/normal.gbapal.lz"); + const u32 gMonBackPic_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/back.4bpp.lz"); + const u32 gMonShinyPalette_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/shiny.gbapal.lz"); + const u8 gMonIcon_Grimmsnarl[] = INCBIN_U8("graphics/pokemon/grimmsnarl/icon.4bpp"); + const u8 gMonFootprint_Grimmsnarl[] = INCBIN_U8("graphics/pokemon/grimmsnarl/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_GrimmsnarlGigantamax[] = INCBIN_U8("graphics/pokemon/grimmsnarl/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_IMPIDIMP + +#if P_FAMILY_MILCERY + const u32 gMonFrontPic_Milcery[] = INCBIN_U32("graphics/pokemon/milcery/front.4bpp.lz"); + const u32 gMonPalette_Milcery[] = INCBIN_U32("graphics/pokemon/milcery/normal.gbapal.lz"); + const u32 gMonBackPic_Milcery[] = INCBIN_U32("graphics/pokemon/milcery/back.4bpp.lz"); + const u32 gMonShinyPalette_Milcery[] = INCBIN_U32("graphics/pokemon/milcery/shiny.gbapal.lz"); + const u8 gMonIcon_Milcery[] = INCBIN_U8("graphics/pokemon/milcery/icon.4bpp"); + const u8 gMonFootprint_Milcery[] = INCBIN_U8("graphics/pokemon/milcery/footprint.1bpp"); + const u32 gMonFrontPic_Alcremie[] = INCBIN_U32("graphics/pokemon/alcremie/front.4bpp.lz"); + const u32 gMonBackPic_Alcremie[] = INCBIN_U32("graphics/pokemon/alcremie/back.4bpp.lz"); + const u32 gMonPalette_Alcremie[] = INCBIN_U32("graphics/pokemon/alcremie/normal.gbapal.lz"); + const u32 gMonShinyPalette_Alcremie[] = INCBIN_U32("graphics/pokemon/alcremie/shiny.gbapal.lz"); + + const u8 gMonIcon_AlcremieStrawberryVanillaCream[] = INCBIN_U8("graphics/pokemon/alcremie/icon.4bpp"); + //const u8 gMonIcon_AlcremieStrawberryRubyCream[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_cream/icon.4bpp"); + //const u8 gMonIcon_AlcremieStrawberryMatchaCream[] = INCBIN_U8("graphics/pokemon/alcremie/matcha_cream/icon.4bpp"); + //const u8 gMonIcon_AlcremieStrawberryMintCream[] = INCBIN_U8("graphics/pokemon/alcremie/mint_cream/icon.4bpp"); + //const u8 gMonIcon_AlcremieStrawberryLemonCream[] = INCBIN_U8("graphics/pokemon/alcremie/lemon_cream/icon.4bpp"); + //const u8 gMonIcon_AlcremieStrawberrySaltedCream[] = INCBIN_U8("graphics/pokemon/alcremie/salted_cream/icon.4bpp"); + //const u8 gMonIcon_AlcremieStrawberryRubySwirl[] = INCBIN_U8("graphics/pokemon/alcremie/ruby_swirl/icon.4bpp"); + //const u8 gMonIcon_AlcremieStrawberryCaramelSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/caramel_swirl/icon.4bpp"); + //const u8 gMonIcon_AlcremieStrawberryRainbowSwirl[] = INCBIN_U8("graphics/pokemon/alcremie/rainbow_swirl/icon.4bpp"); + + const u32 gMonFrontPic_AlcremieStrawberry[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/front.4bpp.lz"); + const u32 gMonPalette_AlcremieStrawberryVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_default.gbapal.lz"); + const u32 gMonPalette_AlcremieStrawberryRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_ruby_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieStrawberryMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_matcha_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieStrawberryMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_mint_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieStrawberryLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_lemon_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieStrawberrySaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_salted_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieStrawberryRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_ruby_swirl.gbapal.lz"); + const u32 gMonPalette_AlcremieStrawberryCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_caramel_swirl.gbapal.lz"); + const u32 gMonPalette_AlcremieStrawberryRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_rainbow_swirl.gbapal.lz"); + const u32 gMonBackPic_AlcremieStrawberry[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/back.4bpp.lz"); + const u32 gMonShinyPalette_AlcremieStrawberry[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_shiny.gbapal.lz"); + const u8 gMonFootprint_Alcremie[] = INCBIN_U8("graphics/pokemon/alcremie/footprint.1bpp"); + + const u32 gMonFrontPic_AlcremieBerry[] = INCBIN_U32("graphics/pokemon/alcremie/berry/front.4bpp.lz"); + const u32 gMonPalette_AlcremieBerryVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_default.gbapal.lz"); + const u32 gMonPalette_AlcremieBerryRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_ruby_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieBerryMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_matcha_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieBerryMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_mint_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieBerryLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_lemon_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieBerrySaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_salted_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieBerryRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_ruby_swirl.gbapal.lz"); + const u32 gMonPalette_AlcremieBerryCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_caramel_swirl.gbapal.lz"); + const u32 gMonPalette_AlcremieBerryRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_rainbow_swirl.gbapal.lz"); + const u32 gMonBackPic_AlcremieBerry[] = INCBIN_U32("graphics/pokemon/alcremie/berry/back.4bpp.lz"); + const u32 gMonShinyPalette_AlcremieBerry[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_shiny.gbapal.lz"); + + const u32 gMonFrontPic_AlcremieLove[] = INCBIN_U32("graphics/pokemon/alcremie/love/front.4bpp.lz"); + const u32 gMonPalette_AlcremieLoveVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_default.gbapal.lz"); + const u32 gMonPalette_AlcremieLoveRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_ruby_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieLoveMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_matcha_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieLoveMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_mint_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieLoveLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_lemon_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieLoveSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_salted_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieLoveRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_ruby_swirl.gbapal.lz"); + const u32 gMonPalette_AlcremieLoveCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_caramel_swirl.gbapal.lz"); + const u32 gMonPalette_AlcremieLoveRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_rainbow_swirl.gbapal.lz"); + const u32 gMonBackPic_AlcremieLove[] = INCBIN_U32("graphics/pokemon/alcremie/love/back.4bpp.lz"); + const u32 gMonShinyPalette_AlcremieLove[] = INCBIN_U32("graphics/pokemon/alcremie/love/love_shiny.gbapal.lz"); + + const u32 gMonFrontPic_AlcremieStar[] = INCBIN_U32("graphics/pokemon/alcremie/star/front.4bpp.lz"); + const u32 gMonPalette_AlcremieStarVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_default.gbapal.lz"); + const u32 gMonPalette_AlcremieStarRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_ruby_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieStarMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_matcha_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieStarMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_mint_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieStarLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_lemon_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieStarSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_salted_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieStarRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_ruby_swirl.gbapal.lz"); + const u32 gMonPalette_AlcremieStarCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_caramel_swirl.gbapal.lz"); + const u32 gMonPalette_AlcremieStarRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_rainbow_swirl.gbapal.lz"); + const u32 gMonBackPic_AlcremieStar[] = INCBIN_U32("graphics/pokemon/alcremie/star/back.4bpp.lz"); + const u32 gMonShinyPalette_AlcremieStar[] = INCBIN_U32("graphics/pokemon/alcremie/star/star_shiny.gbapal.lz"); + + const u32 gMonFrontPic_AlcremieClover[] = INCBIN_U32("graphics/pokemon/alcremie/clover/front.4bpp.lz"); + const u32 gMonPalette_AlcremieCloverVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_default.gbapal.lz"); + const u32 gMonPalette_AlcremieCloverRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_ruby_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieCloverMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_matcha_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieCloverMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_mint_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieCloverLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_lemon_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieCloverSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_salted_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieCloverRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_ruby_swirl.gbapal.lz"); + const u32 gMonPalette_AlcremieCloverCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_caramel_swirl.gbapal.lz"); + const u32 gMonPalette_AlcremieCloverRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_rainbow_swirl.gbapal.lz"); + const u32 gMonBackPic_AlcremieClover[] = INCBIN_U32("graphics/pokemon/alcremie/clover/back.4bpp.lz"); + const u32 gMonShinyPalette_AlcremieClover[] = INCBIN_U32("graphics/pokemon/alcremie/clover/clover_shiny.gbapal.lz"); + + const u32 gMonFrontPic_AlcremieFlower[] = INCBIN_U32("graphics/pokemon/alcremie/flower/front.4bpp.lz"); + const u32 gMonPalette_AlcremieFlowerVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_default.gbapal.lz"); + const u32 gMonPalette_AlcremieFlowerRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_ruby_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieFlowerMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_matcha_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieFlowerMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_mint_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieFlowerLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_lemon_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieFlowerSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_salted_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieFlowerRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_ruby_swirl.gbapal.lz"); + const u32 gMonPalette_AlcremieFlowerCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_caramel_swirl.gbapal.lz"); + const u32 gMonPalette_AlcremieFlowerRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_rainbow_swirl.gbapal.lz"); + const u32 gMonBackPic_AlcremieFlower[] = INCBIN_U32("graphics/pokemon/alcremie/flower/back.4bpp.lz"); + const u32 gMonShinyPalette_AlcremieFlower[] = INCBIN_U32("graphics/pokemon/alcremie/flower/flower_shiny.gbapal.lz"); + + const u32 gMonFrontPic_AlcremieRibbon[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/front.4bpp.lz"); + const u32 gMonPalette_AlcremieRibbonVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_default.gbapal.lz"); + const u32 gMonPalette_AlcremieRibbonRubyCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_ruby_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieRibbonMatchaCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_matcha_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieRibbonMintCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_mint_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieRibbonLemonCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_lemon_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieRibbonSaltedCream[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_salted_cream.gbapal.lz"); + const u32 gMonPalette_AlcremieRibbonRubySwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_ruby_swirl.gbapal.lz"); + const u32 gMonPalette_AlcremieRibbonCaramelSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_caramel_swirl.gbapal.lz"); + const u32 gMonPalette_AlcremieRibbonRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_rainbow_swirl.gbapal.lz"); + const u32 gMonBackPic_AlcremieRibbon[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/back.4bpp.lz"); + const u32 gMonShinyPalette_AlcremieRibbon[] = INCBIN_U32("graphics/pokemon/alcremie/ribbon/ribbon_shiny.gbapal.lz"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_AlcremieGigantamax[] = INCBIN_U32("graphics/pokemon/alcremie/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_AlcremieGigantamax[] = INCBIN_U8("graphics/pokemon/alcremie/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MILCERY + +#if P_FAMILY_FALINKS + const u32 gMonFrontPic_Falinks[] = INCBIN_U32("graphics/pokemon/falinks/front.4bpp.lz"); + const u32 gMonPalette_Falinks[] = INCBIN_U32("graphics/pokemon/falinks/normal.gbapal.lz"); + const u32 gMonBackPic_Falinks[] = INCBIN_U32("graphics/pokemon/falinks/back.4bpp.lz"); + const u32 gMonShinyPalette_Falinks[] = INCBIN_U32("graphics/pokemon/falinks/shiny.gbapal.lz"); + const u8 gMonIcon_Falinks[] = INCBIN_U8("graphics/pokemon/falinks/icon.4bpp"); + const u8 gMonFootprint_Falinks[] = INCBIN_U8("graphics/pokemon/falinks/footprint.1bpp"); +#endif //P_FAMILY_FALINKS + +#if P_FAMILY_PINCURCHIN + const u32 gMonFrontPic_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/anim_front.4bpp.lz"); + const u32 gMonPalette_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/normal.gbapal.lz"); + const u32 gMonBackPic_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/back.4bpp.lz"); + const u32 gMonShinyPalette_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/shiny.gbapal.lz"); + const u8 gMonIcon_Pincurchin[] = INCBIN_U8("graphics/pokemon/pincurchin/icon.4bpp"); + const u8 gMonFootprint_Pincurchin[] = INCBIN_U8("graphics/pokemon/pincurchin/footprint.1bpp"); +#endif //P_FAMILY_PINCURCHIN + +#if P_FAMILY_SNOM + const u32 gMonFrontPic_Snom[] = INCBIN_U32("graphics/pokemon/snom/front.4bpp.lz"); + const u32 gMonPalette_Snom[] = INCBIN_U32("graphics/pokemon/snom/normal.gbapal.lz"); + const u32 gMonBackPic_Snom[] = INCBIN_U32("graphics/pokemon/snom/back.4bpp.lz"); + const u32 gMonShinyPalette_Snom[] = INCBIN_U32("graphics/pokemon/snom/shiny.gbapal.lz"); + const u8 gMonIcon_Snom[] = INCBIN_U8("graphics/pokemon/snom/icon.4bpp"); + const u8 gMonFootprint_Snom[] = INCBIN_U8("graphics/pokemon/snom/footprint.1bpp"); + + const u32 gMonFrontPic_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/front.4bpp.lz"); + const u32 gMonPalette_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/normal.gbapal.lz"); + const u32 gMonBackPic_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/back.4bpp.lz"); + const u32 gMonShinyPalette_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/shiny.gbapal.lz"); + const u8 gMonIcon_Frosmoth[] = INCBIN_U8("graphics/pokemon/frosmoth/icon.4bpp"); + const u8 gMonFootprint_Frosmoth[] = INCBIN_U8("graphics/pokemon/frosmoth/footprint.1bpp"); +#endif //P_FAMILY_SNOM + +#if P_FAMILY_STONJOURNER + const u32 gMonFrontPic_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/front.4bpp.lz"); + const u32 gMonPalette_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/normal.gbapal.lz"); + const u32 gMonBackPic_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/back.4bpp.lz"); + const u32 gMonShinyPalette_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/shiny.gbapal.lz"); + const u8 gMonIcon_Stonjourner[] = INCBIN_U8("graphics/pokemon/stonjourner/icon.4bpp"); + const u8 gMonFootprint_Stonjourner[] = INCBIN_U8("graphics/pokemon/stonjourner/footprint.1bpp"); +#endif //P_FAMILY_STONJOURNER + +#if P_FAMILY_EISCUE + const u32 gMonFrontPic_EiscueIceFace[] = INCBIN_U32("graphics/pokemon/eiscue/front.4bpp.lz"); + const u32 gMonPalette_EiscueIceFace[] = INCBIN_U32("graphics/pokemon/eiscue/normal.gbapal.lz"); + const u32 gMonBackPic_EiscueIceFace[] = INCBIN_U32("graphics/pokemon/eiscue/back.4bpp.lz"); + const u32 gMonShinyPalette_EiscueIceFace[] = INCBIN_U32("graphics/pokemon/eiscue/shiny.gbapal.lz"); + const u8 gMonIcon_EiscueIceFace[] = INCBIN_U8("graphics/pokemon/eiscue/icon.4bpp"); + const u8 gMonFootprint_Eiscue[] = INCBIN_U8("graphics/pokemon/eiscue/footprint.1bpp"); + + const u32 gMonFrontPic_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/front.4bpp.lz"); + const u32 gMonPalette_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/normal.gbapal.lz"); + const u32 gMonBackPic_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/back.4bpp.lz"); + const u32 gMonShinyPalette_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/shiny.gbapal.lz"); + const u8 gMonIcon_EiscueNoiceFace[] = INCBIN_U8("graphics/pokemon/eiscue/noice_face/icon.4bpp"); +#endif //P_FAMILY_EISCUE + +#if P_FAMILY_INDEEDEE + const u32 gMonFrontPic_IndeedeeMale[] = INCBIN_U32("graphics/pokemon/indeedee/front.4bpp.lz"); + const u32 gMonPalette_IndeedeeMale[] = INCBIN_U32("graphics/pokemon/indeedee/normal.gbapal.lz"); + const u32 gMonBackPic_IndeedeeMale[] = INCBIN_U32("graphics/pokemon/indeedee/back.4bpp.lz"); + const u32 gMonShinyPalette_IndeedeeMale[] = INCBIN_U32("graphics/pokemon/indeedee/shiny.gbapal.lz"); + const u8 gMonIcon_IndeedeeMale[] = INCBIN_U8("graphics/pokemon/indeedee/icon.4bpp"); + const u8 gMonFootprint_Indeedee[] = INCBIN_U8("graphics/pokemon/indeedee/footprint.1bpp"); + + const u32 gMonFrontPic_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/front.4bpp.lz"); + const u32 gMonPalette_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/normal.gbapal.lz"); + const u32 gMonBackPic_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/back.4bpp.lz"); + const u32 gMonShinyPalette_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/shiny.gbapal.lz"); + const u8 gMonIcon_IndeedeeFemale[] = INCBIN_U8("graphics/pokemon/indeedee/female/icon.4bpp"); +#endif //P_FAMILY_INDEEDEE + +#if P_FAMILY_MORPEKO + const u32 gMonFrontPic_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/front.4bpp.lz"); + const u32 gMonPalette_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/normal.gbapal.lz"); + const u32 gMonBackPic_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/back.4bpp.lz"); + const u32 gMonShinyPalette_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/shiny.gbapal.lz"); + const u8 gMonIcon_MorpekoFullBelly[] = INCBIN_U8("graphics/pokemon/morpeko/icon.4bpp"); + const u8 gMonFootprint_Morpeko[] = INCBIN_U8("graphics/pokemon/morpeko/footprint.1bpp"); + + const u32 gMonFrontPic_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/front.4bpp.lz"); + const u32 gMonPalette_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/normal.gbapal.lz"); + const u32 gMonBackPic_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/back.4bpp.lz"); + const u32 gMonShinyPalette_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/shiny.gbapal.lz"); + const u8 gMonIcon_MorpekoHangry[] = INCBIN_U8("graphics/pokemon/morpeko/hangry/icon.4bpp"); +#endif //P_FAMILY_MORPEKO + +#if P_FAMILY_CUFANT + const u32 gMonFrontPic_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/front.4bpp.lz"); + const u32 gMonPalette_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/normal.gbapal.lz"); + const u32 gMonBackPic_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/back.4bpp.lz"); + const u32 gMonShinyPalette_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/shiny.gbapal.lz"); + const u8 gMonIcon_Cufant[] = INCBIN_U8("graphics/pokemon/cufant/icon.4bpp"); + const u8 gMonFootprint_Cufant[] = INCBIN_U8("graphics/pokemon/cufant/footprint.1bpp"); + + const u32 gMonFrontPic_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/front.4bpp.lz"); + const u32 gMonPalette_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/normal.gbapal.lz"); + const u32 gMonBackPic_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/back.4bpp.lz"); + const u32 gMonShinyPalette_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/shiny.gbapal.lz"); + const u8 gMonIcon_Copperajah[] = INCBIN_U8("graphics/pokemon/copperajah/icon.4bpp"); + const u8 gMonFootprint_Copperajah[] = INCBIN_U8("graphics/pokemon/copperajah/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_CopperajahGigantamax[] = INCBIN_U8("graphics/pokemon/copperajah/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CUFANT + +#if P_FAMILY_DRACOZOLT + const u32 gMonFrontPic_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/front.4bpp.lz"); + const u32 gMonPalette_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/normal.gbapal.lz"); + const u32 gMonBackPic_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/back.4bpp.lz"); + const u32 gMonShinyPalette_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/shiny.gbapal.lz"); + const u8 gMonIcon_Dracozolt[] = INCBIN_U8("graphics/pokemon/dracozolt/icon.4bpp"); + const u8 gMonFootprint_Dracozolt[] = INCBIN_U8("graphics/pokemon/dracozolt/footprint.1bpp"); +#endif //P_FAMILY_DRACOZOLT + +#if P_FAMILY_ARCTOZOLT + const u32 gMonFrontPic_Arctozolt[] = INCBIN_U32("graphics/pokemon/arctozolt/front.4bpp.lz"); + const u32 gMonPalette_Arctozolt[] = INCBIN_U32("graphics/pokemon/arctozolt/normal.gbapal.lz"); + const u32 gMonBackPic_Arctozolt[] = INCBIN_U32("graphics/pokemon/arctozolt/back.4bpp.lz"); + const u32 gMonShinyPalette_Arctozolt[] = INCBIN_U32("graphics/pokemon/arctozolt/shiny.gbapal.lz"); + const u8 gMonIcon_Arctozolt[] = INCBIN_U8("graphics/pokemon/arctozolt/icon.4bpp"); + const u8 gMonFootprint_Arctozolt[] = INCBIN_U8("graphics/pokemon/arctozolt/footprint.1bpp"); +#endif //P_FAMILY_ARCTOZOLT + +#if P_FAMILY_DRACOVISH + const u32 gMonFrontPic_Dracovish[] = INCBIN_U32("graphics/pokemon/dracovish/front.4bpp.lz"); + const u32 gMonPalette_Dracovish[] = INCBIN_U32("graphics/pokemon/dracovish/normal.gbapal.lz"); + const u32 gMonBackPic_Dracovish[] = INCBIN_U32("graphics/pokemon/dracovish/back.4bpp.lz"); + const u32 gMonShinyPalette_Dracovish[] = INCBIN_U32("graphics/pokemon/dracovish/shiny.gbapal.lz"); + const u8 gMonIcon_Dracovish[] = INCBIN_U8("graphics/pokemon/dracovish/icon.4bpp"); + const u8 gMonFootprint_Dracovish[] = INCBIN_U8("graphics/pokemon/dracovish/footprint.1bpp"); +#endif //P_FAMILY_DRACOVISH + +#if P_FAMILY_ARCTOVISH + const u32 gMonFrontPic_Arctovish[] = INCBIN_U32("graphics/pokemon/arctovish/front.4bpp.lz"); + const u32 gMonPalette_Arctovish[] = INCBIN_U32("graphics/pokemon/arctovish/normal.gbapal.lz"); + const u32 gMonBackPic_Arctovish[] = INCBIN_U32("graphics/pokemon/arctovish/back.4bpp.lz"); + const u32 gMonShinyPalette_Arctovish[] = INCBIN_U32("graphics/pokemon/arctovish/shiny.gbapal.lz"); + const u8 gMonIcon_Arctovish[] = INCBIN_U8("graphics/pokemon/arctovish/icon.4bpp"); + const u8 gMonFootprint_Arctovish[] = INCBIN_U8("graphics/pokemon/arctovish/footprint.1bpp"); +#endif //P_FAMILY_ARCTOVISH + +#if P_FAMILY_DURALUDON + const u32 gMonFrontPic_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/front.4bpp.lz"); + const u32 gMonPalette_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/normal.gbapal.lz"); + const u32 gMonBackPic_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/back.4bpp.lz"); + const u32 gMonShinyPalette_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/shiny.gbapal.lz"); + const u8 gMonIcon_Duraludon[] = INCBIN_U8("graphics/pokemon/duraludon/icon.4bpp"); + const u8 gMonFootprint_Duraludon[] = INCBIN_U8("graphics/pokemon/duraludon/footprint.1bpp"); + +#if P_GIGANTAMAX_FORMS + const u32 gMonFrontPic_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/back.4bpp.lz"); + const u32 gMonPalette_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_DuraludonGigantamax[] = INCBIN_U8("graphics/pokemon/duraludon/gigantamax/icon.4bpp"); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_DURALUDON + +#if P_FAMILY_DREEPY + const u32 gMonFrontPic_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/front.4bpp.lz"); + const u32 gMonPalette_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/normal.gbapal.lz"); + const u32 gMonBackPic_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/back.4bpp.lz"); + const u32 gMonShinyPalette_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/shiny.gbapal.lz"); + const u8 gMonIcon_Dreepy[] = INCBIN_U8("graphics/pokemon/dreepy/icon.4bpp"); + const u8 gMonFootprint_Dreepy[] = INCBIN_U8("graphics/pokemon/dreepy/footprint.1bpp"); + + const u32 gMonFrontPic_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/front.4bpp.lz"); + const u32 gMonPalette_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/normal.gbapal.lz"); + const u32 gMonBackPic_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/back.4bpp.lz"); + const u32 gMonShinyPalette_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/shiny.gbapal.lz"); + const u8 gMonIcon_Drakloak[] = INCBIN_U8("graphics/pokemon/drakloak/icon.4bpp"); + const u8 gMonFootprint_Drakloak[] = INCBIN_U8("graphics/pokemon/drakloak/footprint.1bpp"); + + const u32 gMonFrontPic_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/front.4bpp.lz"); + const u32 gMonPalette_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/normal.gbapal.lz"); + const u32 gMonBackPic_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/back.4bpp.lz"); + const u32 gMonShinyPalette_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/shiny.gbapal.lz"); + const u8 gMonIcon_Dragapult[] = INCBIN_U8("graphics/pokemon/dragapult/icon.4bpp"); + const u8 gMonFootprint_Dragapult[] = INCBIN_U8("graphics/pokemon/dragapult/footprint.1bpp"); +#endif //P_FAMILY_DREEPY + +#if P_FAMILY_ZACIAN + const u32 gMonFrontPic_ZacianHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zacian/front.4bpp.lz"); + const u32 gMonPalette_ZacianHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zacian/normal.gbapal.lz"); + const u32 gMonBackPic_ZacianHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zacian/back.4bpp.lz"); + const u32 gMonShinyPalette_ZacianHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zacian/shiny.gbapal.lz"); + const u8 gMonIcon_ZacianHeroOfManyBattles[] = INCBIN_U8("graphics/pokemon/zacian/icon.4bpp"); + const u8 gMonFootprint_Zacian[] = INCBIN_U8("graphics/pokemon/zacian/footprint.1bpp"); + + const u32 gMonFrontPic_ZacianCrownedSword[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/front.4bpp.lz"); + const u32 gMonPalette_ZacianCrownedSword[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/normal.gbapal.lz"); + const u32 gMonBackPic_ZacianCrownedSword[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/back.4bpp.lz"); + const u32 gMonShinyPalette_ZacianCrownedSword[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/shiny.gbapal.lz"); + const u8 gMonIcon_ZacianCrownedSword[] = INCBIN_U8("graphics/pokemon/zacian/crowned_sword/icon.4bpp"); +#endif //P_FAMILY_ZACIAN + +#if P_FAMILY_ZAMAZENTA + const u32 gMonFrontPic_ZamazentaHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zamazenta/front.4bpp.lz"); + const u32 gMonPalette_ZamazentaHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zamazenta/normal.gbapal.lz"); + const u32 gMonBackPic_ZamazentaHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zamazenta/back.4bpp.lz"); + const u32 gMonShinyPalette_ZamazentaHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zamazenta/shiny.gbapal.lz"); + const u8 gMonIcon_ZamazentaHeroOfManyBattles[] = INCBIN_U8("graphics/pokemon/zamazenta/icon.4bpp"); + const u8 gMonFootprint_Zamazenta[] = INCBIN_U8("graphics/pokemon/zamazenta/footprint.1bpp"); + + const u32 gMonFrontPic_ZamazentaCrownedShield[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/front.4bpp.lz"); + const u32 gMonPalette_ZamazentaCrownedShield[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/normal.gbapal.lz"); + const u32 gMonBackPic_ZamazentaCrownedShield[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/back.4bpp.lz"); + const u32 gMonShinyPalette_ZamazentaCrownedShield[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/shiny.gbapal.lz"); + const u8 gMonIcon_ZamazentaCrownedShield[] = INCBIN_U8("graphics/pokemon/zamazenta/crowned_shield/icon.4bpp"); +#endif //P_FAMILY_ZAMAZENTA + +#if P_FAMILY_ETERNATUS + const u32 gMonFrontPic_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/front.4bpp.lz"); + const u32 gMonPalette_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/normal.gbapal.lz"); + const u32 gMonBackPic_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/back.4bpp.lz"); + const u32 gMonShinyPalette_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/shiny.gbapal.lz"); + const u8 gMonIcon_Eternatus[] = INCBIN_U8("graphics/pokemon/eternatus/icon.4bpp"); + const u8 gMonFootprint_Eternatus[] = INCBIN_U8("graphics/pokemon/eternatus/footprint.1bpp"); + + const u32 gMonFrontPic_EternatusEternamax[] = INCBIN_U32("graphics/pokemon/eternatus/eternamax/front.4bpp.lz"); + const u32 gMonPalette_EternatusEternamax[] = INCBIN_U32("graphics/pokemon/eternatus/eternamax/normal.gbapal.lz"); + const u32 gMonBackPic_EternatusEternamax[] = INCBIN_U32("graphics/pokemon/eternatus/eternamax/back.4bpp.lz"); + const u32 gMonShinyPalette_EternatusEternamax[] = INCBIN_U32("graphics/pokemon/eternatus/eternamax/shiny.gbapal.lz"); + const u8 gMonIcon_EternatusEternamax[] = INCBIN_U8("graphics/pokemon/eternatus/eternamax/icon.4bpp"); +#endif //P_FAMILY_ETERNATUS + +#if P_FAMILY_KUBFU + const u32 gMonFrontPic_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/front.4bpp.lz"); + const u32 gMonPalette_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/normal.gbapal.lz"); + const u32 gMonBackPic_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/back.4bpp.lz"); + const u32 gMonShinyPalette_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/shiny.gbapal.lz"); + const u8 gMonIcon_Kubfu[] = INCBIN_U8("graphics/pokemon/kubfu/icon.4bpp"); + const u8 gMonFootprint_Kubfu[] = INCBIN_U8("graphics/pokemon/kubfu/footprint.1bpp"); + + const u32 gMonFrontPic_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/front.4bpp.lz"); + const u32 gMonPalette_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/normal.gbapal.lz"); + const u32 gMonBackPic_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/back.4bpp.lz"); + const u32 gMonShinyPalette_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/shiny.gbapal.lz"); + const u8 gMonIcon_Urshifu[] = INCBIN_U8("graphics/pokemon/urshifu/icon.4bpp"); + const u8 gMonFootprint_Urshifu[] = INCBIN_U8("graphics/pokemon/urshifu/footprint.1bpp"); + + const u32 gMonFrontPic_UrshifuRapidStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style/front.4bpp.lz"); + const u32 gMonPalette_UrshifuRapidStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style/normal.gbapal.lz"); + const u32 gMonBackPic_UrshifuRapidStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style/back.4bpp.lz"); + const u32 gMonShinyPalette_UrshifuRapidStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style/shiny.gbapal.lz"); + + const u32 gMonFrontPic_UrshifuSingleStrikeStyleGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_UrshifuSingleStrikeStyleGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/back.4bpp.lz"); + const u32 gMonPalette_UrshifuSingleStrikeStyleGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_UrshifuSingleStrikeStyleGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/single_strike_style_gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_UrshifuSingleStrikeStyleGigantamax[] = INCBIN_U8("graphics/pokemon/urshifu/single_strike_style_gigantamax/icon.4bpp"); + + const u32 gMonFrontPic_UrshifuRapidStrikeStyleGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/front.4bpp.lz"); + const u32 gMonBackPic_UrshifuRapidStrikeStyleGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/back.4bpp.lz"); + const u32 gMonPalette_UrshifuRapidStrikeStyleGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/normal.gbapal.lz"); + const u32 gMonShinyPalette_UrshifuRapidStrikeStyleGigantamax[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/shiny.gbapal.lz"); + const u8 gMonIcon_UrshifuRapidStrikeStyleGigantamax[] = INCBIN_U8("graphics/pokemon/urshifu/rapid_strike_style_gigantamax/icon.4bpp"); +#endif //P_FAMILY_KUBFU + +#if P_FAMILY_ZARUDE + const u32 gMonFrontPic_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/front.4bpp.lz"); + const u32 gMonPalette_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/normal.gbapal.lz"); + const u32 gMonBackPic_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/back.4bpp.lz"); + const u32 gMonShinyPalette_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/shiny.gbapal.lz"); + const u8 gMonIcon_Zarude[] = INCBIN_U8("graphics/pokemon/zarude/icon.4bpp"); + const u8 gMonFootprint_Zarude[] = INCBIN_U8("graphics/pokemon/zarude/footprint.1bpp"); + + const u32 gMonFrontPic_ZarudeDada[] = INCBIN_U32("graphics/pokemon/zarude/dada/front.4bpp.lz"); + const u32 gMonPalette_ZarudeDada[] = INCBIN_U32("graphics/pokemon/zarude/dada/normal.gbapal.lz"); + const u32 gMonBackPic_ZarudeDada[] = INCBIN_U32("graphics/pokemon/zarude/dada/back.4bpp.lz"); + const u32 gMonShinyPalette_ZarudeDada[] = INCBIN_U32("graphics/pokemon/zarude/dada/shiny.gbapal.lz"); + const u8 gMonIcon_ZarudeDada[] = INCBIN_U8("graphics/pokemon/zarude/dada/icon.4bpp"); +#endif //P_FAMILY_ZARUDE + +#if P_FAMILY_REGIELEKI + const u32 gMonFrontPic_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/front.4bpp.lz"); + const u32 gMonPalette_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/normal.gbapal.lz"); + const u32 gMonBackPic_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/back.4bpp.lz"); + const u32 gMonShinyPalette_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/shiny.gbapal.lz"); + const u8 gMonIcon_Regieleki[] = INCBIN_U8("graphics/pokemon/regieleki/icon.4bpp"); + const u8 gMonFootprint_Regieleki[] = INCBIN_U8("graphics/pokemon/regieleki/footprint.1bpp"); +#endif //P_FAMILY_REGIELEKI + +#if P_FAMILY_REGIDRAGO + const u32 gMonFrontPic_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/front.4bpp.lz"); + const u32 gMonPalette_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/normal.gbapal.lz"); + const u32 gMonBackPic_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/back.4bpp.lz"); + const u32 gMonShinyPalette_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/shiny.gbapal.lz"); + const u8 gMonIcon_Regidrago[] = INCBIN_U8("graphics/pokemon/regidrago/icon.4bpp"); + const u8 gMonFootprint_Regidrago[] = INCBIN_U8("graphics/pokemon/regidrago/footprint.1bpp"); +#endif //P_FAMILY_REGIDRAGO + +#if P_FAMILY_GLASTRIER + const u32 gMonFrontPic_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/front.4bpp.lz"); + const u32 gMonPalette_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/normal.gbapal.lz"); + const u32 gMonBackPic_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/back.4bpp.lz"); + const u32 gMonShinyPalette_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/shiny.gbapal.lz"); + const u8 gMonIcon_Glastrier[] = INCBIN_U8("graphics/pokemon/glastrier/icon.4bpp"); + const u8 gMonFootprint_Glastrier[] = INCBIN_U8("graphics/pokemon/glastrier/footprint.1bpp"); +#endif //P_FAMILY_GLASTRIER + +#if P_FAMILY_SPECTRIER + const u32 gMonFrontPic_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/front.4bpp.lz"); + const u32 gMonPalette_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/normal.gbapal.lz"); + const u32 gMonBackPic_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/back.4bpp.lz"); + const u32 gMonShinyPalette_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/shiny.gbapal.lz"); + const u8 gMonIcon_Spectrier[] = INCBIN_U8("graphics/pokemon/spectrier/icon.4bpp"); + const u8 gMonFootprint_Spectrier[] = INCBIN_U8("graphics/pokemon/spectrier/footprint.1bpp"); +#endif //P_FAMILY_SPECTRIER + +#if P_FAMILY_CALYREX + const u32 gMonFrontPic_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/front.4bpp.lz"); + const u32 gMonPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/normal.gbapal.lz"); + const u32 gMonBackPic_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/back.4bpp.lz"); + const u32 gMonShinyPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/shiny.gbapal.lz"); + const u8 gMonIcon_Calyrex[] = INCBIN_U8("graphics/pokemon/calyrex/icon.4bpp"); + const u8 gMonFootprint_Calyrex[] = INCBIN_U8("graphics/pokemon/calyrex/footprint.1bpp"); + +#if P_FUSION_FORMS + const u32 gMonFrontPic_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ice_rider/front.4bpp.lz"); + const u32 gMonPalette_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ice_rider/normal.gbapal.lz"); + const u32 gMonBackPic_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ice_rider/back.4bpp.lz"); + const u32 gMonShinyPalette_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ice_rider/shiny.gbapal.lz"); + const u8 gMonIcon_CalyrexIceRider[] = INCBIN_U8("graphics/pokemon/calyrex/ice_rider/icon.4bpp"); +#endif //P_FUSION_FORMS + +#if P_FUSION_FORMS + const u32 gMonFrontPic_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/front.4bpp.lz"); + const u32 gMonPalette_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/normal.gbapal.lz"); + const u32 gMonBackPic_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/back.4bpp.lz"); + const u32 gMonShinyPalette_CalyrexShadowRider[] = INCBIN_U32("graphics/pokemon/calyrex/shadow_rider/shiny.gbapal.lz"); + const u8 gMonIcon_CalyrexShadowRider[] = INCBIN_U8("graphics/pokemon/calyrex/shadow_rider/icon.4bpp"); +#endif //P_FUSION_FORMS +#endif //P_FAMILY_CALYREX + +#if P_FAMILY_SPRIGATITO + const u32 gMonFrontPic_Sprigatito[] = INCBIN_U32("graphics/pokemon/sprigatito/front.4bpp.lz"); + const u32 gMonPalette_Sprigatito[] = INCBIN_U32("graphics/pokemon/sprigatito/normal.gbapal.lz"); + const u32 gMonBackPic_Sprigatito[] = INCBIN_U32("graphics/pokemon/sprigatito/back.4bpp.lz"); + const u32 gMonShinyPalette_Sprigatito[] = INCBIN_U32("graphics/pokemon/sprigatito/shiny.gbapal.lz"); + const u8 gMonIcon_Sprigatito[] = INCBIN_U8("graphics/pokemon/sprigatito/icon.4bpp"); + // const u8 gMonFootprint_Sprigatito[] = INCBIN_U8("graphics/pokemon/sprigatito/footprint.1bpp"); + + const u32 gMonFrontPic_Floragato[] = INCBIN_U32("graphics/pokemon/floragato/front.4bpp.lz"); + const u32 gMonPalette_Floragato[] = INCBIN_U32("graphics/pokemon/floragato/normal.gbapal.lz"); + const u32 gMonBackPic_Floragato[] = INCBIN_U32("graphics/pokemon/floragato/back.4bpp.lz"); + const u32 gMonShinyPalette_Floragato[] = INCBIN_U32("graphics/pokemon/floragato/shiny.gbapal.lz"); + const u8 gMonIcon_Floragato[] = INCBIN_U8("graphics/pokemon/floragato/icon.4bpp"); + // const u8 gMonFootprint_Floragato[] = INCBIN_U8("graphics/pokemon/floragato/footprint.1bpp"); + + const u32 gMonFrontPic_Meowscarada[] = INCBIN_U32("graphics/pokemon/meowscarada/front.4bpp.lz"); + const u32 gMonPalette_Meowscarada[] = INCBIN_U32("graphics/pokemon/meowscarada/normal.gbapal.lz"); + const u32 gMonBackPic_Meowscarada[] = INCBIN_U32("graphics/pokemon/meowscarada/back.4bpp.lz"); + const u32 gMonShinyPalette_Meowscarada[] = INCBIN_U32("graphics/pokemon/meowscarada/shiny.gbapal.lz"); + const u8 gMonIcon_Meowscarada[] = INCBIN_U8("graphics/pokemon/meowscarada/icon.4bpp"); + // const u8 gMonFootprint_Meowscarada[] = INCBIN_U8("graphics/pokemon/meowscarada/footprint.1bpp"); +#endif //P_FAMILY_SPRIGATITO + +#if P_FAMILY_FUECOCO + const u32 gMonFrontPic_Fuecoco[] = INCBIN_U32("graphics/pokemon/fuecoco/front.4bpp.lz"); + const u32 gMonPalette_Fuecoco[] = INCBIN_U32("graphics/pokemon/fuecoco/normal.gbapal.lz"); + const u32 gMonBackPic_Fuecoco[] = INCBIN_U32("graphics/pokemon/fuecoco/back.4bpp.lz"); + const u32 gMonShinyPalette_Fuecoco[] = INCBIN_U32("graphics/pokemon/fuecoco/shiny.gbapal.lz"); + const u8 gMonIcon_Fuecoco[] = INCBIN_U8("graphics/pokemon/fuecoco/icon.4bpp"); + // const u8 gMonFootprint_Fuecoco[] = INCBIN_U8("graphics/pokemon/fuecoco/footprint.1bpp"); + + const u32 gMonFrontPic_Crocalor[] = INCBIN_U32("graphics/pokemon/crocalor/front.4bpp.lz"); + const u32 gMonPalette_Crocalor[] = INCBIN_U32("graphics/pokemon/crocalor/normal.gbapal.lz"); + const u32 gMonBackPic_Crocalor[] = INCBIN_U32("graphics/pokemon/crocalor/back.4bpp.lz"); + const u32 gMonShinyPalette_Crocalor[] = INCBIN_U32("graphics/pokemon/crocalor/shiny.gbapal.lz"); + const u8 gMonIcon_Crocalor[] = INCBIN_U8("graphics/pokemon/crocalor/icon.4bpp"); + // const u8 gMonFootprint_Crocalor[] = INCBIN_U8("graphics/pokemon/crocalor/footprint.1bpp"); + + const u32 gMonFrontPic_Skeledirge[] = INCBIN_U32("graphics/pokemon/skeledirge/front.4bpp.lz"); + const u32 gMonPalette_Skeledirge[] = INCBIN_U32("graphics/pokemon/skeledirge/normal.gbapal.lz"); + const u32 gMonBackPic_Skeledirge[] = INCBIN_U32("graphics/pokemon/skeledirge/back.4bpp.lz"); + const u32 gMonShinyPalette_Skeledirge[] = INCBIN_U32("graphics/pokemon/skeledirge/shiny.gbapal.lz"); + const u8 gMonIcon_Skeledirge[] = INCBIN_U8("graphics/pokemon/skeledirge/icon.4bpp"); + // const u8 gMonFootprint_Skeledirge[] = INCBIN_U8("graphics/pokemon/skeledirge/footprint.1bpp"); +#endif //P_FAMILY_FUECOCO + +#if P_FAMILY_QUAXLY + const u32 gMonFrontPic_Quaxly[] = INCBIN_U32("graphics/pokemon/quaxly/front.4bpp.lz"); + const u32 gMonPalette_Quaxly[] = INCBIN_U32("graphics/pokemon/quaxly/normal.gbapal.lz"); + const u32 gMonBackPic_Quaxly[] = INCBIN_U32("graphics/pokemon/quaxly/back.4bpp.lz"); + const u32 gMonShinyPalette_Quaxly[] = INCBIN_U32("graphics/pokemon/quaxly/shiny.gbapal.lz"); + const u8 gMonIcon_Quaxly[] = INCBIN_U8("graphics/pokemon/quaxly/icon.4bpp"); + // const u8 gMonFootprint_Quaxly[] = INCBIN_U8("graphics/pokemon/quaxly/footprint.1bpp"); + + const u32 gMonFrontPic_Quaxwell[] = INCBIN_U32("graphics/pokemon/quaxwell/front.4bpp.lz"); + const u32 gMonPalette_Quaxwell[] = INCBIN_U32("graphics/pokemon/quaxwell/normal.gbapal.lz"); + const u32 gMonBackPic_Quaxwell[] = INCBIN_U32("graphics/pokemon/quaxwell/back.4bpp.lz"); + const u32 gMonShinyPalette_Quaxwell[] = INCBIN_U32("graphics/pokemon/quaxwell/shiny.gbapal.lz"); + const u8 gMonIcon_Quaxwell[] = INCBIN_U8("graphics/pokemon/quaxwell/icon.4bpp"); + // const u8 gMonFootprint_Quaxwell[] = INCBIN_U8("graphics/pokemon/quaxwell/footprint.1bpp"); + + const u32 gMonFrontPic_Quaquaval[] = INCBIN_U32("graphics/pokemon/quaquaval/front.4bpp.lz"); + const u32 gMonPalette_Quaquaval[] = INCBIN_U32("graphics/pokemon/quaquaval/normal.gbapal.lz"); + const u32 gMonBackPic_Quaquaval[] = INCBIN_U32("graphics/pokemon/quaquaval/back.4bpp.lz"); + const u32 gMonShinyPalette_Quaquaval[] = INCBIN_U32("graphics/pokemon/quaquaval/shiny.gbapal.lz"); + const u8 gMonIcon_Quaquaval[] = INCBIN_U8("graphics/pokemon/quaquaval/icon.4bpp"); + // const u8 gMonFootprint_Quaquaval[] = INCBIN_U8("graphics/pokemon/quaquaval/footprint.1bpp"); +#endif //P_FAMILY_QUAXLY + +#if P_FAMILY_LECHONK + const u32 gMonFrontPic_Lechonk[] = INCBIN_U32("graphics/pokemon/lechonk/front.4bpp.lz"); + const u32 gMonPalette_Lechonk[] = INCBIN_U32("graphics/pokemon/lechonk/normal.gbapal.lz"); + const u32 gMonBackPic_Lechonk[] = INCBIN_U32("graphics/pokemon/lechonk/back.4bpp.lz"); + const u32 gMonShinyPalette_Lechonk[] = INCBIN_U32("graphics/pokemon/lechonk/shiny.gbapal.lz"); + const u8 gMonIcon_Lechonk[] = INCBIN_U8("graphics/pokemon/lechonk/icon.4bpp"); + // const u8 gMonFootprint_Lechonk[] = INCBIN_U8("graphics/pokemon/lechonk/footprint.1bpp"); + + const u32 gMonFrontPic_OinkologneMale[] = INCBIN_U32("graphics/pokemon/oinkologne/front.4bpp.lz"); + const u32 gMonPalette_OinkologneMale[] = INCBIN_U32("graphics/pokemon/oinkologne/normal.gbapal.lz"); + const u32 gMonBackPic_OinkologneMale[] = INCBIN_U32("graphics/pokemon/oinkologne/back.4bpp.lz"); + const u32 gMonShinyPalette_OinkologneMale[] = INCBIN_U32("graphics/pokemon/oinkologne/shiny.gbapal.lz"); + const u8 gMonIcon_OinkologneMale[] = INCBIN_U8("graphics/pokemon/oinkologne/icon.4bpp"); + // const u8 gMonFootprint_Oinkologne[] = INCBIN_U8("graphics/pokemon/oinkologne/footprint.1bpp"); + + const u32 gMonFrontPic_OinkologneFemale[] = INCBIN_U32("graphics/pokemon/oinkologne/female/front.4bpp.lz"); + const u32 gMonPalette_OinkologneFemale[] = INCBIN_U32("graphics/pokemon/oinkologne/female/normal.gbapal.lz"); + const u32 gMonBackPic_OinkologneFemale[] = INCBIN_U32("graphics/pokemon/oinkologne/female/back.4bpp.lz"); + const u32 gMonShinyPalette_OinkologneFemale[] = INCBIN_U32("graphics/pokemon/oinkologne/female/shiny.gbapal.lz"); + const u8 gMonIcon_OinkologneFemale[] = INCBIN_U8("graphics/pokemon/oinkologne/female/icon.4bpp"); +#endif //P_FAMILY_LECHONK + +#if P_FAMILY_TAROUNTULA + const u32 gMonFrontPic_Tarountula[] = INCBIN_U32("graphics/pokemon/tarountula/front.4bpp.lz"); + const u32 gMonPalette_Tarountula[] = INCBIN_U32("graphics/pokemon/tarountula/normal.gbapal.lz"); + const u32 gMonBackPic_Tarountula[] = INCBIN_U32("graphics/pokemon/tarountula/back.4bpp.lz"); + const u32 gMonShinyPalette_Tarountula[] = INCBIN_U32("graphics/pokemon/tarountula/shiny.gbapal.lz"); + const u8 gMonIcon_Tarountula[] = INCBIN_U8("graphics/pokemon/tarountula/icon.4bpp"); + // const u8 gMonFootprint_Tarountula[] = INCBIN_U8("graphics/pokemon/tarountula/footprint.1bpp"); + + const u32 gMonFrontPic_Spidops[] = INCBIN_U32("graphics/pokemon/spidops/front.4bpp.lz"); + const u32 gMonPalette_Spidops[] = INCBIN_U32("graphics/pokemon/spidops/normal.gbapal.lz"); + const u32 gMonBackPic_Spidops[] = INCBIN_U32("graphics/pokemon/spidops/back.4bpp.lz"); + const u32 gMonShinyPalette_Spidops[] = INCBIN_U32("graphics/pokemon/spidops/shiny.gbapal.lz"); + const u8 gMonIcon_Spidops[] = INCBIN_U8("graphics/pokemon/spidops/icon.4bpp"); + // const u8 gMonFootprint_Spidops[] = INCBIN_U8("graphics/pokemon/spidops/footprint.1bpp"); +#endif //P_FAMILY_TAROUNTULA + +#if P_FAMILY_NYMBLE + const u32 gMonFrontPic_Nymble[] = INCBIN_U32("graphics/pokemon/nymble/front.4bpp.lz"); + const u32 gMonPalette_Nymble[] = INCBIN_U32("graphics/pokemon/nymble/normal.gbapal.lz"); + const u32 gMonBackPic_Nymble[] = INCBIN_U32("graphics/pokemon/nymble/back.4bpp.lz"); + const u32 gMonShinyPalette_Nymble[] = INCBIN_U32("graphics/pokemon/nymble/shiny.gbapal.lz"); + const u8 gMonIcon_Nymble[] = INCBIN_U8("graphics/pokemon/nymble/icon.4bpp"); + // const u8 gMonFootprint_Nymble[] = INCBIN_U8("graphics/pokemon/nymble/footprint.1bpp"); + + const u32 gMonFrontPic_Lokix[] = INCBIN_U32("graphics/pokemon/lokix/front.4bpp.lz"); + const u32 gMonPalette_Lokix[] = INCBIN_U32("graphics/pokemon/lokix/normal.gbapal.lz"); + const u32 gMonBackPic_Lokix[] = INCBIN_U32("graphics/pokemon/lokix/back.4bpp.lz"); + const u32 gMonShinyPalette_Lokix[] = INCBIN_U32("graphics/pokemon/lokix/shiny.gbapal.lz"); + const u8 gMonIcon_Lokix[] = INCBIN_U8("graphics/pokemon/lokix/icon.4bpp"); + // const u8 gMonFootprint_Lokix[] = INCBIN_U8("graphics/pokemon/lokix/footprint.1bpp"); +#endif //P_FAMILY_NYMBLE + +#if P_FAMILY_PAWMI + const u32 gMonFrontPic_Pawmi[] = INCBIN_U32("graphics/pokemon/pawmi/front.4bpp.lz"); + const u32 gMonPalette_Pawmi[] = INCBIN_U32("graphics/pokemon/pawmi/normal.gbapal.lz"); + const u32 gMonBackPic_Pawmi[] = INCBIN_U32("graphics/pokemon/pawmi/back.4bpp.lz"); + const u32 gMonShinyPalette_Pawmi[] = INCBIN_U32("graphics/pokemon/pawmi/shiny.gbapal.lz"); + const u8 gMonIcon_Pawmi[] = INCBIN_U8("graphics/pokemon/pawmi/icon.4bpp"); + // const u8 gMonFootprint_Pawmi[] = INCBIN_U8("graphics/pokemon/pawmi/footprint.1bpp"); + + const u32 gMonFrontPic_Pawmo[] = INCBIN_U32("graphics/pokemon/pawmo/front.4bpp.lz"); + const u32 gMonPalette_Pawmo[] = INCBIN_U32("graphics/pokemon/pawmo/normal.gbapal.lz"); + const u32 gMonBackPic_Pawmo[] = INCBIN_U32("graphics/pokemon/pawmo/back.4bpp.lz"); + const u32 gMonShinyPalette_Pawmo[] = INCBIN_U32("graphics/pokemon/pawmo/shiny.gbapal.lz"); + const u8 gMonIcon_Pawmo[] = INCBIN_U8("graphics/pokemon/pawmo/icon.4bpp"); + // const u8 gMonFootprint_Pawmo[] = INCBIN_U8("graphics/pokemon/pawmo/footprint.1bpp"); + + const u32 gMonFrontPic_Pawmot[] = INCBIN_U32("graphics/pokemon/pawmot/front.4bpp.lz"); + const u32 gMonPalette_Pawmot[] = INCBIN_U32("graphics/pokemon/pawmot/normal.gbapal.lz"); + const u32 gMonBackPic_Pawmot[] = INCBIN_U32("graphics/pokemon/pawmot/back.4bpp.lz"); + const u32 gMonShinyPalette_Pawmot[] = INCBIN_U32("graphics/pokemon/pawmot/shiny.gbapal.lz"); + const u8 gMonIcon_Pawmot[] = INCBIN_U8("graphics/pokemon/pawmot/icon.4bpp"); + // const u8 gMonFootprint_Pawmot[] = INCBIN_U8("graphics/pokemon/pawmot/footprint.1bpp"); +#endif //P_FAMILY_PAWMI + +#if P_FAMILY_TANDEMAUS + const u32 gMonFrontPic_Tandemaus[] = INCBIN_U32("graphics/pokemon/tandemaus/front.4bpp.lz"); + const u32 gMonPalette_Tandemaus[] = INCBIN_U32("graphics/pokemon/tandemaus/normal.gbapal.lz"); + const u32 gMonBackPic_Tandemaus[] = INCBIN_U32("graphics/pokemon/tandemaus/back.4bpp.lz"); + const u32 gMonShinyPalette_Tandemaus[] = INCBIN_U32("graphics/pokemon/tandemaus/shiny.gbapal.lz"); + const u8 gMonIcon_Tandemaus[] = INCBIN_U8("graphics/pokemon/tandemaus/icon.4bpp"); + // const u8 gMonFootprint_Tandemaus[] = INCBIN_U8("graphics/pokemon/tandemaus/footprint.1bpp"); + + const u32 gMonPalette_Maushold[] = INCBIN_U32("graphics/pokemon/maushold/normal.gbapal.lz"); + const u32 gMonShinyPalette_Maushold[] = INCBIN_U32("graphics/pokemon/maushold/shiny.gbapal.lz"); + // const u8 gMonFootprint_Maushold[] = INCBIN_U8("graphics/pokemon/maushold/footprint.1bpp"); + + const u32 gMonFrontPic_MausholdFamilyOfThree[] = INCBIN_U32("graphics/pokemon/maushold/front.4bpp.lz"); + const u32 gMonBackPic_MausholdFamilyOfThree[] = INCBIN_U32("graphics/pokemon/maushold/back.4bpp.lz"); + const u8 gMonIcon_MausholdFamilyOfThree[] = INCBIN_U8("graphics/pokemon/maushold/icon.4bpp"); + + const u32 gMonFrontPic_MausholdFamilyOfFour[] = INCBIN_U32("graphics/pokemon/maushold/four/front.4bpp.lz"); + const u32 gMonBackPic_MausholdFamilyOfFour[] = INCBIN_U32("graphics/pokemon/maushold/four/back.4bpp.lz"); + const u8 gMonIcon_MausholdFamilyOfFour[] = INCBIN_U8("graphics/pokemon/maushold/four/icon.4bpp"); +#endif //P_FAMILY_TANDEMAUS + +#if P_FAMILY_FIDOUGH + const u32 gMonFrontPic_Fidough[] = INCBIN_U32("graphics/pokemon/fidough/front.4bpp.lz"); + const u32 gMonPalette_Fidough[] = INCBIN_U32("graphics/pokemon/fidough/normal.gbapal.lz"); + const u32 gMonBackPic_Fidough[] = INCBIN_U32("graphics/pokemon/fidough/back.4bpp.lz"); + const u32 gMonShinyPalette_Fidough[] = INCBIN_U32("graphics/pokemon/fidough/shiny.gbapal.lz"); + const u8 gMonIcon_Fidough[] = INCBIN_U8("graphics/pokemon/fidough/icon.4bpp"); + // const u8 gMonFootprint_Fidough[] = INCBIN_U8("graphics/pokemon/fidough/footprint.1bpp"); + + const u32 gMonFrontPic_Dachsbun[] = INCBIN_U32("graphics/pokemon/dachsbun/front.4bpp.lz"); + const u32 gMonPalette_Dachsbun[] = INCBIN_U32("graphics/pokemon/dachsbun/normal.gbapal.lz"); + const u32 gMonBackPic_Dachsbun[] = INCBIN_U32("graphics/pokemon/dachsbun/back.4bpp.lz"); + const u32 gMonShinyPalette_Dachsbun[] = INCBIN_U32("graphics/pokemon/dachsbun/shiny.gbapal.lz"); + const u8 gMonIcon_Dachsbun[] = INCBIN_U8("graphics/pokemon/dachsbun/icon.4bpp"); + // const u8 gMonFootprint_Dachsbun[] = INCBIN_U8("graphics/pokemon/dachsbun/footprint.1bpp"); +#endif //P_FAMILY_FIDOUGH + +#if P_FAMILY_SMOLIV + const u32 gMonFrontPic_Smoliv[] = INCBIN_U32("graphics/pokemon/smoliv/front.4bpp.lz"); + const u32 gMonPalette_Smoliv[] = INCBIN_U32("graphics/pokemon/smoliv/normal.gbapal.lz"); + const u32 gMonBackPic_Smoliv[] = INCBIN_U32("graphics/pokemon/smoliv/back.4bpp.lz"); + const u32 gMonShinyPalette_Smoliv[] = INCBIN_U32("graphics/pokemon/smoliv/shiny.gbapal.lz"); + const u8 gMonIcon_Smoliv[] = INCBIN_U8("graphics/pokemon/smoliv/icon.4bpp"); + // const u8 gMonFootprint_Smoliv[] = INCBIN_U8("graphics/pokemon/smoliv/footprint.1bpp"); + + const u32 gMonFrontPic_Dolliv[] = INCBIN_U32("graphics/pokemon/dolliv/front.4bpp.lz"); + const u32 gMonPalette_Dolliv[] = INCBIN_U32("graphics/pokemon/dolliv/normal.gbapal.lz"); + const u32 gMonBackPic_Dolliv[] = INCBIN_U32("graphics/pokemon/dolliv/back.4bpp.lz"); + const u32 gMonShinyPalette_Dolliv[] = INCBIN_U32("graphics/pokemon/dolliv/shiny.gbapal.lz"); + const u8 gMonIcon_Dolliv[] = INCBIN_U8("graphics/pokemon/dolliv/icon.4bpp"); + // const u8 gMonFootprint_Dolliv[] = INCBIN_U8("graphics/pokemon/dolliv/footprint.1bpp"); + + const u32 gMonFrontPic_Arboliva[] = INCBIN_U32("graphics/pokemon/arboliva/front.4bpp.lz"); + const u32 gMonPalette_Arboliva[] = INCBIN_U32("graphics/pokemon/arboliva/normal.gbapal.lz"); + const u32 gMonBackPic_Arboliva[] = INCBIN_U32("graphics/pokemon/arboliva/back.4bpp.lz"); + const u32 gMonShinyPalette_Arboliva[] = INCBIN_U32("graphics/pokemon/arboliva/shiny.gbapal.lz"); + const u8 gMonIcon_Arboliva[] = INCBIN_U8("graphics/pokemon/arboliva/icon.4bpp"); + // const u8 gMonFootprint_Arboliva[] = INCBIN_U8("graphics/pokemon/arboliva/footprint.1bpp"); +#endif //P_FAMILY_SMOLIV + +#if P_FAMILY_SQUAWKABILLY + const u32 gMonFrontPic_Squawkabilly[] = INCBIN_U32("graphics/pokemon/squawkabilly/front.4bpp.lz"); + const u32 gMonBackPic_Squawkabilly[] = INCBIN_U32("graphics/pokemon/squawkabilly/back.4bpp.lz"); + // const u8 gMonFootprint_Squawkabilly[] = INCBIN_U8("graphics/pokemon/squawkabilly/footprint.1bpp"); + + const u32 gMonPalette_SquawkabillyGreenPlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/green_plumage/normal.gbapal.lz"); + const u32 gMonShinyPalette_SquawkabillyGreenPlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/green_plumage/shiny.gbapal.lz"); + const u8 gMonIcon_SquawkabillyGreenPlumage[] = INCBIN_U8("graphics/pokemon/squawkabilly/green_plumage/icon.4bpp"); + + const u32 gMonPalette_SquawkabillyBluePlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/blue_plumage/normal.gbapal.lz"); + const u32 gMonShinyPalette_SquawkabillyBluePlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/blue_plumage/shiny.gbapal.lz"); + const u8 gMonIcon_SquawkabillyBluePlumage[] = INCBIN_U8("graphics/pokemon/squawkabilly/blue_plumage/icon.4bpp"); + + const u32 gMonPalette_SquawkabillyYellowPlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/yellow_plumage/normal.gbapal.lz"); + const u32 gMonShinyPalette_SquawkabillyYellowPlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/yellow_plumage/shiny.gbapal.lz"); + const u8 gMonIcon_SquawkabillyYellowPlumage[] = INCBIN_U8("graphics/pokemon/squawkabilly/yellow_plumage/icon.4bpp"); + + const u32 gMonPalette_SquawkabillyWhitePlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/white_plumage/normal.gbapal.lz"); + const u32 gMonShinyPalette_SquawkabillyWhitePlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/white_plumage/shiny.gbapal.lz"); + const u8 gMonIcon_SquawkabillyWhitePlumage[] = INCBIN_U8("graphics/pokemon/squawkabilly/white_plumage/icon.4bpp"); +#endif //P_FAMILY_SQUAWKABILLY + +#if P_FAMILY_NACLI + const u32 gMonFrontPic_Nacli[] = INCBIN_U32("graphics/pokemon/nacli/front.4bpp.lz"); + const u32 gMonPalette_Nacli[] = INCBIN_U32("graphics/pokemon/nacli/normal.gbapal.lz"); + const u32 gMonBackPic_Nacli[] = INCBIN_U32("graphics/pokemon/nacli/back.4bpp.lz"); + const u32 gMonShinyPalette_Nacli[] = INCBIN_U32("graphics/pokemon/nacli/shiny.gbapal.lz"); + const u8 gMonIcon_Nacli[] = INCBIN_U8("graphics/pokemon/nacli/icon.4bpp"); + // const u8 gMonFootprint_Nacli[] = INCBIN_U8("graphics/pokemon/nacli/footprint.1bpp"); + + const u32 gMonFrontPic_Naclstack[] = INCBIN_U32("graphics/pokemon/naclstack/front.4bpp.lz"); + const u32 gMonPalette_Naclstack[] = INCBIN_U32("graphics/pokemon/naclstack/normal.gbapal.lz"); + const u32 gMonBackPic_Naclstack[] = INCBIN_U32("graphics/pokemon/naclstack/back.4bpp.lz"); + const u32 gMonShinyPalette_Naclstack[] = INCBIN_U32("graphics/pokemon/naclstack/shiny.gbapal.lz"); + const u8 gMonIcon_Naclstack[] = INCBIN_U8("graphics/pokemon/naclstack/icon.4bpp"); + // const u8 gMonFootprint_Naclstack[] = INCBIN_U8("graphics/pokemon/naclstack/footprint.1bpp"); + + const u32 gMonFrontPic_Garganacl[] = INCBIN_U32("graphics/pokemon/garganacl/front.4bpp.lz"); + const u32 gMonPalette_Garganacl[] = INCBIN_U32("graphics/pokemon/garganacl/normal.gbapal.lz"); + const u32 gMonBackPic_Garganacl[] = INCBIN_U32("graphics/pokemon/garganacl/back.4bpp.lz"); + const u32 gMonShinyPalette_Garganacl[] = INCBIN_U32("graphics/pokemon/garganacl/shiny.gbapal.lz"); + const u8 gMonIcon_Garganacl[] = INCBIN_U8("graphics/pokemon/garganacl/icon.4bpp"); + // const u8 gMonFootprint_Garganacl[] = INCBIN_U8("graphics/pokemon/garganacl/footprint.1bpp"); +#endif //P_FAMILY_NACLI + +#if P_FAMILY_CHARCADET + const u32 gMonFrontPic_Charcadet[] = INCBIN_U32("graphics/pokemon/charcadet/front.4bpp.lz"); + const u32 gMonPalette_Charcadet[] = INCBIN_U32("graphics/pokemon/charcadet/normal.gbapal.lz"); + const u32 gMonBackPic_Charcadet[] = INCBIN_U32("graphics/pokemon/charcadet/back.4bpp.lz"); + const u32 gMonShinyPalette_Charcadet[] = INCBIN_U32("graphics/pokemon/charcadet/shiny.gbapal.lz"); + const u8 gMonIcon_Charcadet[] = INCBIN_U8("graphics/pokemon/charcadet/icon.4bpp"); + // const u8 gMonFootprint_Charcadet[] = INCBIN_U8("graphics/pokemon/charcadet/footprint.1bpp"); + + const u32 gMonFrontPic_Armarouge[] = INCBIN_U32("graphics/pokemon/armarouge/front.4bpp.lz"); + const u32 gMonPalette_Armarouge[] = INCBIN_U32("graphics/pokemon/armarouge/normal.gbapal.lz"); + const u32 gMonBackPic_Armarouge[] = INCBIN_U32("graphics/pokemon/armarouge/back.4bpp.lz"); + const u32 gMonShinyPalette_Armarouge[] = INCBIN_U32("graphics/pokemon/armarouge/shiny.gbapal.lz"); + const u8 gMonIcon_Armarouge[] = INCBIN_U8("graphics/pokemon/armarouge/icon.4bpp"); + // const u8 gMonFootprint_Armarouge[] = INCBIN_U8("graphics/pokemon/armarouge/footprint.1bpp"); + + const u32 gMonFrontPic_Ceruledge[] = INCBIN_U32("graphics/pokemon/ceruledge/front.4bpp.lz"); + const u32 gMonPalette_Ceruledge[] = INCBIN_U32("graphics/pokemon/ceruledge/normal.gbapal.lz"); + const u32 gMonBackPic_Ceruledge[] = INCBIN_U32("graphics/pokemon/ceruledge/back.4bpp.lz"); + const u32 gMonShinyPalette_Ceruledge[] = INCBIN_U32("graphics/pokemon/ceruledge/shiny.gbapal.lz"); + const u8 gMonIcon_Ceruledge[] = INCBIN_U8("graphics/pokemon/ceruledge/icon.4bpp"); + // const u8 gMonFootprint_Ceruledge[] = INCBIN_U8("graphics/pokemon/ceruledge/footprint.1bpp"); +#endif //P_FAMILY_CHARCADET + +#if P_FAMILY_TADBULB + const u32 gMonFrontPic_Tadbulb[] = INCBIN_U32("graphics/pokemon/tadbulb/front.4bpp.lz"); + const u32 gMonPalette_Tadbulb[] = INCBIN_U32("graphics/pokemon/tadbulb/normal.gbapal.lz"); + const u32 gMonBackPic_Tadbulb[] = INCBIN_U32("graphics/pokemon/tadbulb/back.4bpp.lz"); + const u32 gMonShinyPalette_Tadbulb[] = INCBIN_U32("graphics/pokemon/tadbulb/shiny.gbapal.lz"); + const u8 gMonIcon_Tadbulb[] = INCBIN_U8("graphics/pokemon/tadbulb/icon.4bpp"); + // const u8 gMonFootprint_Tadbulb[] = INCBIN_U8("graphics/pokemon/tadbulb/footprint.1bpp"); + + const u32 gMonFrontPic_Bellibolt[] = INCBIN_U32("graphics/pokemon/bellibolt/front.4bpp.lz"); + const u32 gMonPalette_Bellibolt[] = INCBIN_U32("graphics/pokemon/bellibolt/normal.gbapal.lz"); + const u32 gMonBackPic_Bellibolt[] = INCBIN_U32("graphics/pokemon/bellibolt/back.4bpp.lz"); + const u32 gMonShinyPalette_Bellibolt[] = INCBIN_U32("graphics/pokemon/bellibolt/shiny.gbapal.lz"); + const u8 gMonIcon_Bellibolt[] = INCBIN_U8("graphics/pokemon/bellibolt/icon.4bpp"); + // const u8 gMonFootprint_Bellibolt[] = INCBIN_U8("graphics/pokemon/bellibolt/footprint.1bpp"); +#endif //P_FAMILY_TADBULB + +#if P_FAMILY_WATTREL + const u32 gMonFrontPic_Wattrel[] = INCBIN_U32("graphics/pokemon/wattrel/front.4bpp.lz"); + const u32 gMonPalette_Wattrel[] = INCBIN_U32("graphics/pokemon/wattrel/normal.gbapal.lz"); + const u32 gMonBackPic_Wattrel[] = INCBIN_U32("graphics/pokemon/wattrel/back.4bpp.lz"); + const u32 gMonShinyPalette_Wattrel[] = INCBIN_U32("graphics/pokemon/wattrel/shiny.gbapal.lz"); + const u8 gMonIcon_Wattrel[] = INCBIN_U8("graphics/pokemon/wattrel/icon.4bpp"); + // const u8 gMonFootprint_Wattrel[] = INCBIN_U8("graphics/pokemon/wattrel/footprint.1bpp"); + + const u32 gMonFrontPic_Kilowattrel[] = INCBIN_U32("graphics/pokemon/kilowattrel/front.4bpp.lz"); + const u32 gMonPalette_Kilowattrel[] = INCBIN_U32("graphics/pokemon/kilowattrel/normal.gbapal.lz"); + const u32 gMonBackPic_Kilowattrel[] = INCBIN_U32("graphics/pokemon/kilowattrel/back.4bpp.lz"); + const u32 gMonShinyPalette_Kilowattrel[] = INCBIN_U32("graphics/pokemon/kilowattrel/shiny.gbapal.lz"); + const u8 gMonIcon_Kilowattrel[] = INCBIN_U8("graphics/pokemon/kilowattrel/icon.4bpp"); + // const u8 gMonFootprint_Kilowattrel[] = INCBIN_U8("graphics/pokemon/kilowattrel/footprint.1bpp"); +#endif //P_FAMILY_WATTREL + +#if P_FAMILY_MASCHIFF + const u32 gMonFrontPic_Maschiff[] = INCBIN_U32("graphics/pokemon/maschiff/front.4bpp.lz"); + const u32 gMonPalette_Maschiff[] = INCBIN_U32("graphics/pokemon/maschiff/normal.gbapal.lz"); + const u32 gMonBackPic_Maschiff[] = INCBIN_U32("graphics/pokemon/maschiff/back.4bpp.lz"); + const u32 gMonShinyPalette_Maschiff[] = INCBIN_U32("graphics/pokemon/maschiff/shiny.gbapal.lz"); + const u8 gMonIcon_Maschiff[] = INCBIN_U8("graphics/pokemon/maschiff/icon.4bpp"); + // const u8 gMonFootprint_Maschiff[] = INCBIN_U8("graphics/pokemon/maschiff/footprint.1bpp"); + + const u32 gMonFrontPic_Mabosstiff[] = INCBIN_U32("graphics/pokemon/mabosstiff/front.4bpp.lz"); + const u32 gMonPalette_Mabosstiff[] = INCBIN_U32("graphics/pokemon/mabosstiff/normal.gbapal.lz"); + const u32 gMonBackPic_Mabosstiff[] = INCBIN_U32("graphics/pokemon/mabosstiff/back.4bpp.lz"); + const u32 gMonShinyPalette_Mabosstiff[] = INCBIN_U32("graphics/pokemon/mabosstiff/shiny.gbapal.lz"); + const u8 gMonIcon_Mabosstiff[] = INCBIN_U8("graphics/pokemon/mabosstiff/icon.4bpp"); + // const u8 gMonFootprint_Mabosstiff[] = INCBIN_U8("graphics/pokemon/mabosstiff/footprint.1bpp"); +#endif //P_FAMILY_MASCHIFF + +#if P_FAMILY_SHROODLE + const u32 gMonFrontPic_Shroodle[] = INCBIN_U32("graphics/pokemon/shroodle/front.4bpp.lz"); + const u32 gMonPalette_Shroodle[] = INCBIN_U32("graphics/pokemon/shroodle/normal.gbapal.lz"); + const u32 gMonBackPic_Shroodle[] = INCBIN_U32("graphics/pokemon/shroodle/back.4bpp.lz"); + const u32 gMonShinyPalette_Shroodle[] = INCBIN_U32("graphics/pokemon/shroodle/shiny.gbapal.lz"); + const u8 gMonIcon_Shroodle[] = INCBIN_U8("graphics/pokemon/shroodle/icon.4bpp"); + // const u8 gMonFootprint_Shroodle[] = INCBIN_U8("graphics/pokemon/shroodle/footprint.1bpp"); + + const u32 gMonFrontPic_Grafaiai[] = INCBIN_U32("graphics/pokemon/grafaiai/front.4bpp.lz"); + const u32 gMonPalette_Grafaiai[] = INCBIN_U32("graphics/pokemon/grafaiai/normal.gbapal.lz"); + const u32 gMonBackPic_Grafaiai[] = INCBIN_U32("graphics/pokemon/grafaiai/back.4bpp.lz"); + const u32 gMonShinyPalette_Grafaiai[] = INCBIN_U32("graphics/pokemon/grafaiai/shiny.gbapal.lz"); + const u8 gMonIcon_Grafaiai[] = INCBIN_U8("graphics/pokemon/grafaiai/icon.4bpp"); + // const u8 gMonFootprint_Grafaiai[] = INCBIN_U8("graphics/pokemon/grafaiai/footprint.1bpp"); +#endif //P_FAMILY_SHROODLE + +#if P_FAMILY_BRAMBLIN + const u32 gMonFrontPic_Bramblin[] = INCBIN_U32("graphics/pokemon/bramblin/front.4bpp.lz"); + const u32 gMonPalette_Bramblin[] = INCBIN_U32("graphics/pokemon/bramblin/normal.gbapal.lz"); + const u32 gMonBackPic_Bramblin[] = INCBIN_U32("graphics/pokemon/bramblin/back.4bpp.lz"); + const u32 gMonShinyPalette_Bramblin[] = INCBIN_U32("graphics/pokemon/bramblin/shiny.gbapal.lz"); + const u8 gMonIcon_Bramblin[] = INCBIN_U8("graphics/pokemon/bramblin/icon.4bpp"); + // const u8 gMonFootprint_Bramblin[] = INCBIN_U8("graphics/pokemon/bramblin/footprint.1bpp"); + + const u32 gMonFrontPic_Brambleghast[] = INCBIN_U32("graphics/pokemon/brambleghast/front.4bpp.lz"); + const u32 gMonPalette_Brambleghast[] = INCBIN_U32("graphics/pokemon/brambleghast/normal.gbapal.lz"); + const u32 gMonBackPic_Brambleghast[] = INCBIN_U32("graphics/pokemon/brambleghast/back.4bpp.lz"); + const u32 gMonShinyPalette_Brambleghast[] = INCBIN_U32("graphics/pokemon/brambleghast/shiny.gbapal.lz"); + const u8 gMonIcon_Brambleghast[] = INCBIN_U8("graphics/pokemon/brambleghast/icon.4bpp"); + // const u8 gMonFootprint_Brambleghast[] = INCBIN_U8("graphics/pokemon/brambleghast/footprint.1bpp"); +#endif //P_FAMILY_BRAMBLIN + +#if P_FAMILY_TOEDSCOOL + const u32 gMonFrontPic_Toedscool[] = INCBIN_U32("graphics/pokemon/toedscool/front.4bpp.lz"); + const u32 gMonPalette_Toedscool[] = INCBIN_U32("graphics/pokemon/toedscool/normal.gbapal.lz"); + const u32 gMonBackPic_Toedscool[] = INCBIN_U32("graphics/pokemon/toedscool/back.4bpp.lz"); + const u32 gMonShinyPalette_Toedscool[] = INCBIN_U32("graphics/pokemon/toedscool/shiny.gbapal.lz"); + const u8 gMonIcon_Toedscool[] = INCBIN_U8("graphics/pokemon/toedscool/icon.4bpp"); + // const u8 gMonFootprint_Toedscool[] = INCBIN_U8("graphics/pokemon/toedscool/footprint.1bpp"); + + const u32 gMonFrontPic_Toedscruel[] = INCBIN_U32("graphics/pokemon/toedscruel/front.4bpp.lz"); + const u32 gMonPalette_Toedscruel[] = INCBIN_U32("graphics/pokemon/toedscruel/normal.gbapal.lz"); + const u32 gMonBackPic_Toedscruel[] = INCBIN_U32("graphics/pokemon/toedscruel/back.4bpp.lz"); + const u32 gMonShinyPalette_Toedscruel[] = INCBIN_U32("graphics/pokemon/toedscruel/shiny.gbapal.lz"); + const u8 gMonIcon_Toedscruel[] = INCBIN_U8("graphics/pokemon/toedscruel/icon.4bpp"); + // const u8 gMonFootprint_Toedscruel[] = INCBIN_U8("graphics/pokemon/toedscruel/footprint.1bpp"); +#endif //P_FAMILY_TOEDSCOOL + +#if P_FAMILY_KLAWF + const u32 gMonFrontPic_Klawf[] = INCBIN_U32("graphics/pokemon/klawf/front.4bpp.lz"); + const u32 gMonPalette_Klawf[] = INCBIN_U32("graphics/pokemon/klawf/normal.gbapal.lz"); + const u32 gMonBackPic_Klawf[] = INCBIN_U32("graphics/pokemon/klawf/back.4bpp.lz"); + const u32 gMonShinyPalette_Klawf[] = INCBIN_U32("graphics/pokemon/klawf/shiny.gbapal.lz"); + const u8 gMonIcon_Klawf[] = INCBIN_U8("graphics/pokemon/klawf/icon.4bpp"); + // const u8 gMonFootprint_Klawf[] = INCBIN_U8("graphics/pokemon/klawf/footprint.1bpp"); +#endif //P_FAMILY_KLAWF + +#if P_FAMILY_CAPSAKID + const u32 gMonFrontPic_Capsakid[] = INCBIN_U32("graphics/pokemon/capsakid/front.4bpp.lz"); + const u32 gMonPalette_Capsakid[] = INCBIN_U32("graphics/pokemon/capsakid/normal.gbapal.lz"); + const u32 gMonBackPic_Capsakid[] = INCBIN_U32("graphics/pokemon/capsakid/back.4bpp.lz"); + const u32 gMonShinyPalette_Capsakid[] = INCBIN_U32("graphics/pokemon/capsakid/shiny.gbapal.lz"); + const u8 gMonIcon_Capsakid[] = INCBIN_U8("graphics/pokemon/capsakid/icon.4bpp"); + // const u8 gMonFootprint_Capsakid[] = INCBIN_U8("graphics/pokemon/capsakid/footprint.1bpp"); + + const u32 gMonFrontPic_Scovillain[] = INCBIN_U32("graphics/pokemon/scovillain/front.4bpp.lz"); + const u32 gMonPalette_Scovillain[] = INCBIN_U32("graphics/pokemon/scovillain/normal.gbapal.lz"); + const u32 gMonBackPic_Scovillain[] = INCBIN_U32("graphics/pokemon/scovillain/back.4bpp.lz"); + const u32 gMonShinyPalette_Scovillain[] = INCBIN_U32("graphics/pokemon/scovillain/shiny.gbapal.lz"); + const u8 gMonIcon_Scovillain[] = INCBIN_U8("graphics/pokemon/scovillain/icon.4bpp"); + // const u8 gMonFootprint_Scovillain[] = INCBIN_U8("graphics/pokemon/scovillain/footprint.1bpp"); +#endif //P_FAMILY_CAPSAKID + +#if P_FAMILY_RELLOR + const u32 gMonFrontPic_Rellor[] = INCBIN_U32("graphics/pokemon/rellor/front.4bpp.lz"); + const u32 gMonPalette_Rellor[] = INCBIN_U32("graphics/pokemon/rellor/normal.gbapal.lz"); + const u32 gMonBackPic_Rellor[] = INCBIN_U32("graphics/pokemon/rellor/back.4bpp.lz"); + const u32 gMonShinyPalette_Rellor[] = INCBIN_U32("graphics/pokemon/rellor/shiny.gbapal.lz"); + const u8 gMonIcon_Rellor[] = INCBIN_U8("graphics/pokemon/rellor/icon.4bpp"); + // const u8 gMonFootprint_Rellor[] = INCBIN_U8("graphics/pokemon/rellor/footprint.1bpp"); + + const u32 gMonFrontPic_Rabsca[] = INCBIN_U32("graphics/pokemon/rabsca/front.4bpp.lz"); + const u32 gMonPalette_Rabsca[] = INCBIN_U32("graphics/pokemon/rabsca/normal.gbapal.lz"); + const u32 gMonBackPic_Rabsca[] = INCBIN_U32("graphics/pokemon/rabsca/back.4bpp.lz"); + const u32 gMonShinyPalette_Rabsca[] = INCBIN_U32("graphics/pokemon/rabsca/shiny.gbapal.lz"); + const u8 gMonIcon_Rabsca[] = INCBIN_U8("graphics/pokemon/rabsca/icon.4bpp"); + // const u8 gMonFootprint_Rabsca[] = INCBIN_U8("graphics/pokemon/rabsca/footprint.1bpp"); +#endif //P_FAMILY_RELLOR + +#if P_FAMILY_FLITTLE + const u32 gMonFrontPic_Flittle[] = INCBIN_U32("graphics/pokemon/flittle/front.4bpp.lz"); + const u32 gMonPalette_Flittle[] = INCBIN_U32("graphics/pokemon/flittle/normal.gbapal.lz"); + const u32 gMonBackPic_Flittle[] = INCBIN_U32("graphics/pokemon/flittle/back.4bpp.lz"); + const u32 gMonShinyPalette_Flittle[] = INCBIN_U32("graphics/pokemon/flittle/shiny.gbapal.lz"); + const u8 gMonIcon_Flittle[] = INCBIN_U8("graphics/pokemon/flittle/icon.4bpp"); + // const u8 gMonFootprint_Flittle[] = INCBIN_U8("graphics/pokemon/flittle/footprint.1bpp"); + + const u32 gMonFrontPic_Espathra[] = INCBIN_U32("graphics/pokemon/espathra/front.4bpp.lz"); + const u32 gMonPalette_Espathra[] = INCBIN_U32("graphics/pokemon/espathra/normal.gbapal.lz"); + const u32 gMonBackPic_Espathra[] = INCBIN_U32("graphics/pokemon/espathra/back.4bpp.lz"); + const u32 gMonShinyPalette_Espathra[] = INCBIN_U32("graphics/pokemon/espathra/shiny.gbapal.lz"); + const u8 gMonIcon_Espathra[] = INCBIN_U8("graphics/pokemon/espathra/icon.4bpp"); + // const u8 gMonFootprint_Espathra[] = INCBIN_U8("graphics/pokemon/espathra/footprint.1bpp"); +#endif //P_FAMILY_FLITTLE + +#if P_FAMILY_TINKATINK + const u32 gMonFrontPic_Tinkatink[] = INCBIN_U32("graphics/pokemon/tinkatink/front.4bpp.lz"); + const u32 gMonPalette_Tinkatink[] = INCBIN_U32("graphics/pokemon/tinkatink/normal.gbapal.lz"); + const u32 gMonBackPic_Tinkatink[] = INCBIN_U32("graphics/pokemon/tinkatink/back.4bpp.lz"); + const u32 gMonShinyPalette_Tinkatink[] = INCBIN_U32("graphics/pokemon/tinkatink/shiny.gbapal.lz"); + const u8 gMonIcon_Tinkatink[] = INCBIN_U8("graphics/pokemon/tinkatink/icon.4bpp"); + // const u8 gMonFootprint_Tinkatink[] = INCBIN_U8("graphics/pokemon/tinkatink/footprint.1bpp"); + + const u32 gMonFrontPic_Tinkatuff[] = INCBIN_U32("graphics/pokemon/tinkatuff/front.4bpp.lz"); + const u32 gMonPalette_Tinkatuff[] = INCBIN_U32("graphics/pokemon/tinkatuff/normal.gbapal.lz"); + const u32 gMonBackPic_Tinkatuff[] = INCBIN_U32("graphics/pokemon/tinkatuff/back.4bpp.lz"); + const u32 gMonShinyPalette_Tinkatuff[] = INCBIN_U32("graphics/pokemon/tinkatuff/shiny.gbapal.lz"); + const u8 gMonIcon_Tinkatuff[] = INCBIN_U8("graphics/pokemon/tinkatuff/icon.4bpp"); + // const u8 gMonFootprint_Tinkatuff[] = INCBIN_U8("graphics/pokemon/tinkatuff/footprint.1bpp"); + + const u32 gMonFrontPic_Tinkaton[] = INCBIN_U32("graphics/pokemon/tinkaton/front.4bpp.lz"); + const u32 gMonPalette_Tinkaton[] = INCBIN_U32("graphics/pokemon/tinkaton/normal.gbapal.lz"); + const u32 gMonBackPic_Tinkaton[] = INCBIN_U32("graphics/pokemon/tinkaton/back.4bpp.lz"); + const u32 gMonShinyPalette_Tinkaton[] = INCBIN_U32("graphics/pokemon/tinkaton/shiny.gbapal.lz"); + const u8 gMonIcon_Tinkaton[] = INCBIN_U8("graphics/pokemon/tinkaton/icon.4bpp"); + // const u8 gMonFootprint_Tinkaton[] = INCBIN_U8("graphics/pokemon/tinkaton/footprint.1bpp"); +#endif //P_FAMILY_TINKATINK + +#if P_FAMILY_WIGLETT + const u32 gMonFrontPic_Wiglett[] = INCBIN_U32("graphics/pokemon/wiglett/front.4bpp.lz"); + const u32 gMonPalette_Wiglett[] = INCBIN_U32("graphics/pokemon/wiglett/normal.gbapal.lz"); + const u32 gMonBackPic_Wiglett[] = INCBIN_U32("graphics/pokemon/wiglett/back.4bpp.lz"); + const u32 gMonShinyPalette_Wiglett[] = INCBIN_U32("graphics/pokemon/wiglett/shiny.gbapal.lz"); + const u8 gMonIcon_Wiglett[] = INCBIN_U8("graphics/pokemon/wiglett/icon.4bpp"); + // const u8 gMonFootprint_Wiglett[] = INCBIN_U8("graphics/pokemon/wiglett/footprint.1bpp"); + + const u32 gMonFrontPic_Wugtrio[] = INCBIN_U32("graphics/pokemon/wugtrio/front.4bpp.lz"); + const u32 gMonPalette_Wugtrio[] = INCBIN_U32("graphics/pokemon/wugtrio/normal.gbapal.lz"); + const u32 gMonBackPic_Wugtrio[] = INCBIN_U32("graphics/pokemon/wugtrio/back.4bpp.lz"); + const u32 gMonShinyPalette_Wugtrio[] = INCBIN_U32("graphics/pokemon/wugtrio/shiny.gbapal.lz"); + const u8 gMonIcon_Wugtrio[] = INCBIN_U8("graphics/pokemon/wugtrio/icon.4bpp"); + // const u8 gMonFootprint_Wugtrio[] = INCBIN_U8("graphics/pokemon/wugtrio/footprint.1bpp"); +#endif //P_FAMILY_WIGLETT + +#if P_FAMILY_BOMBIRDIER + const u32 gMonFrontPic_Bombirdier[] = INCBIN_U32("graphics/pokemon/bombirdier/front.4bpp.lz"); + const u32 gMonPalette_Bombirdier[] = INCBIN_U32("graphics/pokemon/bombirdier/normal.gbapal.lz"); + const u32 gMonBackPic_Bombirdier[] = INCBIN_U32("graphics/pokemon/bombirdier/back.4bpp.lz"); + const u32 gMonShinyPalette_Bombirdier[] = INCBIN_U32("graphics/pokemon/bombirdier/shiny.gbapal.lz"); + const u8 gMonIcon_Bombirdier[] = INCBIN_U8("graphics/pokemon/bombirdier/icon.4bpp"); + // const u8 gMonFootprint_Bombirdier[] = INCBIN_U8("graphics/pokemon/bombirdier/footprint.1bpp"); +#endif //P_FAMILY_BOMBIRDIER + +#if P_FAMILY_FINIZEN + const u32 gMonFrontPic_Finizen[] = INCBIN_U32("graphics/pokemon/finizen/front.4bpp.lz"); + const u32 gMonPalette_Finizen[] = INCBIN_U32("graphics/pokemon/finizen/normal.gbapal.lz"); + const u32 gMonBackPic_Finizen[] = INCBIN_U32("graphics/pokemon/finizen/back.4bpp.lz"); + const u32 gMonShinyPalette_Finizen[] = INCBIN_U32("graphics/pokemon/finizen/shiny.gbapal.lz"); + const u8 gMonIcon_Finizen[] = INCBIN_U8("graphics/pokemon/finizen/icon.4bpp"); + // const u8 gMonFootprint_Finizen[] = INCBIN_U8("graphics/pokemon/finizen/footprint.1bpp"); + + const u32 gMonFrontPic_PalafinZero[] = INCBIN_U32("graphics/pokemon/palafin/front.4bpp.lz"); + const u32 gMonPalette_PalafinZero[] = INCBIN_U32("graphics/pokemon/palafin/normal.gbapal.lz"); + const u32 gMonBackPic_PalafinZero[] = INCBIN_U32("graphics/pokemon/palafin/back.4bpp.lz"); + const u32 gMonShinyPalette_PalafinZero[] = INCBIN_U32("graphics/pokemon/palafin/shiny.gbapal.lz"); + const u8 gMonIcon_PalafinZero[] = INCBIN_U8("graphics/pokemon/palafin/icon.4bpp"); + // const u8 gMonFootprint_Palafin[] = INCBIN_U8("graphics/pokemon/palafin/footprint.1bpp"); + + const u32 gMonFrontPic_PalafinHero[] = INCBIN_U32("graphics/pokemon/palafin/hero/front.4bpp.lz"); + const u32 gMonPalette_PalafinHero[] = INCBIN_U32("graphics/pokemon/palafin/hero/normal.gbapal.lz"); + const u32 gMonBackPic_PalafinHero[] = INCBIN_U32("graphics/pokemon/palafin/hero/back.4bpp.lz"); + const u32 gMonShinyPalette_PalafinHero[] = INCBIN_U32("graphics/pokemon/palafin/hero/shiny.gbapal.lz"); + const u8 gMonIcon_PalafinHero[] = INCBIN_U8("graphics/pokemon/palafin/hero/icon.4bpp"); +#endif //P_FAMILY_FINIZEN + +#if P_FAMILY_VAROOM + const u32 gMonFrontPic_Varoom[] = INCBIN_U32("graphics/pokemon/varoom/front.4bpp.lz"); + const u32 gMonPalette_Varoom[] = INCBIN_U32("graphics/pokemon/varoom/normal.gbapal.lz"); + const u32 gMonBackPic_Varoom[] = INCBIN_U32("graphics/pokemon/varoom/back.4bpp.lz"); + const u32 gMonShinyPalette_Varoom[] = INCBIN_U32("graphics/pokemon/varoom/shiny.gbapal.lz"); + const u8 gMonIcon_Varoom[] = INCBIN_U8("graphics/pokemon/varoom/icon.4bpp"); + // const u8 gMonFootprint_Varoom[] = INCBIN_U8("graphics/pokemon/varoom/footprint.1bpp"); + + const u32 gMonFrontPic_Revavroom[] = INCBIN_U32("graphics/pokemon/revavroom/front.4bpp.lz"); + const u32 gMonPalette_Revavroom[] = INCBIN_U32("graphics/pokemon/revavroom/normal.gbapal.lz"); + const u32 gMonBackPic_Revavroom[] = INCBIN_U32("graphics/pokemon/revavroom/back.4bpp.lz"); + const u32 gMonShinyPalette_Revavroom[] = INCBIN_U32("graphics/pokemon/revavroom/shiny.gbapal.lz"); + const u8 gMonIcon_Revavroom[] = INCBIN_U8("graphics/pokemon/revavroom/icon.4bpp"); + // const u8 gMonFootprint_Revavroom[] = INCBIN_U8("graphics/pokemon/revavroom/footprint.1bpp"); +#endif //P_FAMILY_VAROOM + +#if P_FAMILY_CYCLIZAR + const u32 gMonFrontPic_Cyclizar[] = INCBIN_U32("graphics/pokemon/cyclizar/front.4bpp.lz"); + const u32 gMonPalette_Cyclizar[] = INCBIN_U32("graphics/pokemon/cyclizar/normal.gbapal.lz"); + const u32 gMonBackPic_Cyclizar[] = INCBIN_U32("graphics/pokemon/cyclizar/back.4bpp.lz"); + const u32 gMonShinyPalette_Cyclizar[] = INCBIN_U32("graphics/pokemon/cyclizar/shiny.gbapal.lz"); + const u8 gMonIcon_Cyclizar[] = INCBIN_U8("graphics/pokemon/cyclizar/icon.4bpp"); + // const u8 gMonFootprint_Cyclizar[] = INCBIN_U8("graphics/pokemon/cyclizar/footprint.1bpp"); +#endif //P_FAMILY_CYCLIZAR + +#if P_FAMILY_ORTHWORM + const u32 gMonFrontPic_Orthworm[] = INCBIN_U32("graphics/pokemon/orthworm/front.4bpp.lz"); + const u32 gMonPalette_Orthworm[] = INCBIN_U32("graphics/pokemon/orthworm/normal.gbapal.lz"); + const u32 gMonBackPic_Orthworm[] = INCBIN_U32("graphics/pokemon/orthworm/back.4bpp.lz"); + const u32 gMonShinyPalette_Orthworm[] = INCBIN_U32("graphics/pokemon/orthworm/shiny.gbapal.lz"); + const u8 gMonIcon_Orthworm[] = INCBIN_U8("graphics/pokemon/orthworm/icon.4bpp"); + // const u8 gMonFootprint_Orthworm[] = INCBIN_U8("graphics/pokemon/orthworm/footprint.1bpp"); +#endif //P_FAMILY_ORTHWORM + +#if P_FAMILY_GLIMMET + const u32 gMonFrontPic_Glimmet[] = INCBIN_U32("graphics/pokemon/glimmet/front.4bpp.lz"); + const u32 gMonPalette_Glimmet[] = INCBIN_U32("graphics/pokemon/glimmet/normal.gbapal.lz"); + const u32 gMonBackPic_Glimmet[] = INCBIN_U32("graphics/pokemon/glimmet/back.4bpp.lz"); + const u32 gMonShinyPalette_Glimmet[] = INCBIN_U32("graphics/pokemon/glimmet/shiny.gbapal.lz"); + const u8 gMonIcon_Glimmet[] = INCBIN_U8("graphics/pokemon/glimmet/icon.4bpp"); + // const u8 gMonFootprint_Glimmet[] = INCBIN_U8("graphics/pokemon/glimmet/footprint.1bpp"); + + const u32 gMonFrontPic_Glimmora[] = INCBIN_U32("graphics/pokemon/glimmora/front.4bpp.lz"); + const u32 gMonPalette_Glimmora[] = INCBIN_U32("graphics/pokemon/glimmora/normal.gbapal.lz"); + const u32 gMonBackPic_Glimmora[] = INCBIN_U32("graphics/pokemon/glimmora/back.4bpp.lz"); + const u32 gMonShinyPalette_Glimmora[] = INCBIN_U32("graphics/pokemon/glimmora/shiny.gbapal.lz"); + const u8 gMonIcon_Glimmora[] = INCBIN_U8("graphics/pokemon/glimmora/icon.4bpp"); + // const u8 gMonFootprint_Glimmora[] = INCBIN_U8("graphics/pokemon/glimmora/footprint.1bpp"); +#endif //P_FAMILY_GLIMMET + +#if P_FAMILY_GREAVARD + const u32 gMonFrontPic_Greavard[] = INCBIN_U32("graphics/pokemon/greavard/front.4bpp.lz"); + const u32 gMonPalette_Greavard[] = INCBIN_U32("graphics/pokemon/greavard/normal.gbapal.lz"); + const u32 gMonBackPic_Greavard[] = INCBIN_U32("graphics/pokemon/greavard/back.4bpp.lz"); + const u32 gMonShinyPalette_Greavard[] = INCBIN_U32("graphics/pokemon/greavard/shiny.gbapal.lz"); + const u8 gMonIcon_Greavard[] = INCBIN_U8("graphics/pokemon/greavard/icon.4bpp"); + // const u8 gMonFootprint_Greavard[] = INCBIN_U8("graphics/pokemon/greavard/footprint.1bpp"); + + const u32 gMonFrontPic_Houndstone[] = INCBIN_U32("graphics/pokemon/houndstone/front.4bpp.lz"); + const u32 gMonPalette_Houndstone[] = INCBIN_U32("graphics/pokemon/houndstone/normal.gbapal.lz"); + const u32 gMonBackPic_Houndstone[] = INCBIN_U32("graphics/pokemon/houndstone/back.4bpp.lz"); + const u32 gMonShinyPalette_Houndstone[] = INCBIN_U32("graphics/pokemon/houndstone/shiny.gbapal.lz"); + const u8 gMonIcon_Houndstone[] = INCBIN_U8("graphics/pokemon/houndstone/icon.4bpp"); + // const u8 gMonFootprint_Houndstone[] = INCBIN_U8("graphics/pokemon/houndstone/footprint.1bpp"); +#endif //P_FAMILY_GREAVARD + +#if P_FAMILY_FLAMIGO + const u32 gMonFrontPic_Flamigo[] = INCBIN_U32("graphics/pokemon/flamigo/front.4bpp.lz"); + const u32 gMonPalette_Flamigo[] = INCBIN_U32("graphics/pokemon/flamigo/normal.gbapal.lz"); + const u32 gMonBackPic_Flamigo[] = INCBIN_U32("graphics/pokemon/flamigo/back.4bpp.lz"); + const u32 gMonShinyPalette_Flamigo[] = INCBIN_U32("graphics/pokemon/flamigo/shiny.gbapal.lz"); + const u8 gMonIcon_Flamigo[] = INCBIN_U8("graphics/pokemon/flamigo/icon.4bpp"); + // const u8 gMonFootprint_Flamigo[] = INCBIN_U8("graphics/pokemon/flamigo/footprint.1bpp"); +#endif //P_FAMILY_FLAMIGO + +#if P_FAMILY_CETODDLE + const u32 gMonFrontPic_Cetoddle[] = INCBIN_U32("graphics/pokemon/cetoddle/front.4bpp.lz"); + const u32 gMonPalette_Cetoddle[] = INCBIN_U32("graphics/pokemon/cetoddle/normal.gbapal.lz"); + const u32 gMonBackPic_Cetoddle[] = INCBIN_U32("graphics/pokemon/cetoddle/back.4bpp.lz"); + const u32 gMonShinyPalette_Cetoddle[] = INCBIN_U32("graphics/pokemon/cetoddle/shiny.gbapal.lz"); + const u8 gMonIcon_Cetoddle[] = INCBIN_U8("graphics/pokemon/cetoddle/icon.4bpp"); + // const u8 gMonFootprint_Cetoddle[] = INCBIN_U8("graphics/pokemon/cetoddle/footprint.1bpp"); + + const u32 gMonFrontPic_Cetitan[] = INCBIN_U32("graphics/pokemon/cetitan/front.4bpp.lz"); + const u32 gMonPalette_Cetitan[] = INCBIN_U32("graphics/pokemon/cetitan/normal.gbapal.lz"); + const u32 gMonBackPic_Cetitan[] = INCBIN_U32("graphics/pokemon/cetitan/back.4bpp.lz"); + const u32 gMonShinyPalette_Cetitan[] = INCBIN_U32("graphics/pokemon/cetitan/shiny.gbapal.lz"); + const u8 gMonIcon_Cetitan[] = INCBIN_U8("graphics/pokemon/cetitan/icon.4bpp"); + // const u8 gMonFootprint_Cetitan[] = INCBIN_U8("graphics/pokemon/cetitan/footprint.1bpp"); +#endif //P_FAMILY_CETODDLE + +#if P_FAMILY_VELUZA + const u32 gMonFrontPic_Veluza[] = INCBIN_U32("graphics/pokemon/veluza/front.4bpp.lz"); + const u32 gMonPalette_Veluza[] = INCBIN_U32("graphics/pokemon/veluza/normal.gbapal.lz"); + const u32 gMonBackPic_Veluza[] = INCBIN_U32("graphics/pokemon/veluza/back.4bpp.lz"); + const u32 gMonShinyPalette_Veluza[] = INCBIN_U32("graphics/pokemon/veluza/shiny.gbapal.lz"); + const u8 gMonIcon_Veluza[] = INCBIN_U8("graphics/pokemon/veluza/icon.4bpp"); + // const u8 gMonFootprint_Veluza[] = INCBIN_U8("graphics/pokemon/veluza/footprint.1bpp"); +#endif //P_FAMILY_VELUZA + +#if P_FAMILY_DONDOZO + const u32 gMonFrontPic_Dondozo[] = INCBIN_U32("graphics/pokemon/dondozo/front.4bpp.lz"); + const u32 gMonPalette_Dondozo[] = INCBIN_U32("graphics/pokemon/dondozo/normal.gbapal.lz"); + const u32 gMonBackPic_Dondozo[] = INCBIN_U32("graphics/pokemon/dondozo/back.4bpp.lz"); + const u32 gMonShinyPalette_Dondozo[] = INCBIN_U32("graphics/pokemon/dondozo/shiny.gbapal.lz"); + const u8 gMonIcon_Dondozo[] = INCBIN_U8("graphics/pokemon/dondozo/icon.4bpp"); + // const u8 gMonFootprint_Dondozo[] = INCBIN_U8("graphics/pokemon/dondozo/footprint.1bpp"); +#endif //P_FAMILY_DONDOZO + +#if P_FAMILY_TATSUGIRI + const u32 gMonFrontPic_TatsugiriCurly[] = INCBIN_U32("graphics/pokemon/tatsugiri/curly/front.4bpp.lz"); + const u32 gMonPalette_TatsugiriCurly[] = INCBIN_U32("graphics/pokemon/tatsugiri/curly/normal.gbapal.lz"); + const u32 gMonBackPic_TatsugiriCurly[] = INCBIN_U32("graphics/pokemon/tatsugiri/curly/back.4bpp.lz"); + const u32 gMonShinyPalette_TatsugiriCurly[] = INCBIN_U32("graphics/pokemon/tatsugiri/curly/shiny.gbapal.lz"); + const u8 gMonIcon_TatsugiriCurly[] = INCBIN_U8("graphics/pokemon/tatsugiri/curly/icon.4bpp"); + // const u8 gMonFootprint_Tatsugiri[] = INCBIN_U8("graphics/pokemon/tatsugiri/footprint.1bpp"); + + const u32 gMonFrontPic_TatsugiriDroopy[] = INCBIN_U32("graphics/pokemon/tatsugiri/droopy/front.4bpp.lz"); + const u32 gMonPalette_TatsugiriDroopy[] = INCBIN_U32("graphics/pokemon/tatsugiri/droopy/normal.gbapal.lz"); + const u32 gMonBackPic_TatsugiriDroopy[] = INCBIN_U32("graphics/pokemon/tatsugiri/droopy/back.4bpp.lz"); + const u32 gMonShinyPalette_TatsugiriDroopy[] = INCBIN_U32("graphics/pokemon/tatsugiri/droopy/shiny.gbapal.lz"); + const u8 gMonIcon_TatsugiriDroopy[] = INCBIN_U8("graphics/pokemon/tatsugiri/droopy/icon.4bpp"); + + const u32 gMonFrontPic_TatsugiriStretchy[] = INCBIN_U32("graphics/pokemon/tatsugiri/stretchy/front.4bpp.lz"); + const u32 gMonPalette_TatsugiriStretchy[] = INCBIN_U32("graphics/pokemon/tatsugiri/stretchy/normal.gbapal.lz"); + const u32 gMonBackPic_TatsugiriStretchy[] = INCBIN_U32("graphics/pokemon/tatsugiri/stretchy/back.4bpp.lz"); + const u32 gMonShinyPalette_TatsugiriStretchy[] = INCBIN_U32("graphics/pokemon/tatsugiri/stretchy/shiny.gbapal.lz"); + const u8 gMonIcon_TatsugiriStretchy[] = INCBIN_U8("graphics/pokemon/tatsugiri/stretchy/icon.4bpp"); +#endif //P_FAMILY_DONDOZO + +#if P_FAMILY_GREAT_TUSK + const u32 gMonFrontPic_GreatTusk[] = INCBIN_U32("graphics/pokemon/great_tusk/anim_front.4bpp.lz"); + const u32 gMonPalette_GreatTusk[] = INCBIN_U32("graphics/pokemon/great_tusk/normal.gbapal.lz"); + const u32 gMonBackPic_GreatTusk[] = INCBIN_U32("graphics/pokemon/great_tusk/back.4bpp.lz"); + const u32 gMonShinyPalette_GreatTusk[] = INCBIN_U32("graphics/pokemon/great_tusk/shiny.gbapal.lz"); + const u8 gMonIcon_GreatTusk[] = INCBIN_U8("graphics/pokemon/great_tusk/icon.4bpp"); + // const u8 gMonFootprint_GreatTusk[] = INCBIN_U8("graphics/pokemon/great_tusk/footprint.1bpp"); +#endif //P_FAMILY_GREAT_TUSK + +#if P_FAMILY_SCREAM_TAIL + const u32 gMonFrontPic_ScreamTail[] = INCBIN_U32("graphics/pokemon/scream_tail/front.4bpp.lz"); + const u32 gMonPalette_ScreamTail[] = INCBIN_U32("graphics/pokemon/scream_tail/normal.gbapal.lz"); + const u32 gMonBackPic_ScreamTail[] = INCBIN_U32("graphics/pokemon/scream_tail/back.4bpp.lz"); + const u32 gMonShinyPalette_ScreamTail[] = INCBIN_U32("graphics/pokemon/scream_tail/shiny.gbapal.lz"); + const u8 gMonIcon_ScreamTail[] = INCBIN_U8("graphics/pokemon/scream_tail/icon.4bpp"); + // const u8 gMonFootprint_ScreamTail[] = INCBIN_U8("graphics/pokemon/scream_tail/footprint.1bpp"); +#endif //P_FAMILY_SCREAM_TAIL + +#if P_FAMILY_BRUTE_BONNET + const u32 gMonFrontPic_BruteBonnet[] = INCBIN_U32("graphics/pokemon/brute_bonnet/front.4bpp.lz"); + const u32 gMonPalette_BruteBonnet[] = INCBIN_U32("graphics/pokemon/brute_bonnet/normal.gbapal.lz"); + const u32 gMonBackPic_BruteBonnet[] = INCBIN_U32("graphics/pokemon/brute_bonnet/back.4bpp.lz"); + const u32 gMonShinyPalette_BruteBonnet[] = INCBIN_U32("graphics/pokemon/brute_bonnet/shiny.gbapal.lz"); + const u8 gMonIcon_BruteBonnet[] = INCBIN_U8("graphics/pokemon/brute_bonnet/icon.4bpp"); + // const u8 gMonFootprint_BruteBonnet[] = INCBIN_U8("graphics/pokemon/brute_bonnet/footprint.1bpp"); +#endif //P_FAMILY_BRUTE_BONNET + +#if P_FAMILY_FLUTTER_MANE + const u32 gMonFrontPic_FlutterMane[] = INCBIN_U32("graphics/pokemon/flutter_mane/front.4bpp.lz"); + const u32 gMonPalette_FlutterMane[] = INCBIN_U32("graphics/pokemon/flutter_mane/normal.gbapal.lz"); + const u32 gMonBackPic_FlutterMane[] = INCBIN_U32("graphics/pokemon/flutter_mane/back.4bpp.lz"); + const u32 gMonShinyPalette_FlutterMane[] = INCBIN_U32("graphics/pokemon/flutter_mane/shiny.gbapal.lz"); + const u8 gMonIcon_FlutterMane[] = INCBIN_U8("graphics/pokemon/flutter_mane/icon.4bpp"); + // const u8 gMonFootprint_FlutterMane[] = INCBIN_U8("graphics/pokemon/flutter_mane/footprint.1bpp"); +#endif //P_FAMILY_FLUTTER_MANE + +#if P_FAMILY_SLITHER_WING + const u32 gMonFrontPic_SlitherWing[] = INCBIN_U32("graphics/pokemon/slither_wing/front.4bpp.lz"); + const u32 gMonPalette_SlitherWing[] = INCBIN_U32("graphics/pokemon/slither_wing/normal.gbapal.lz"); + const u32 gMonBackPic_SlitherWing[] = INCBIN_U32("graphics/pokemon/slither_wing/back.4bpp.lz"); + const u32 gMonShinyPalette_SlitherWing[] = INCBIN_U32("graphics/pokemon/slither_wing/shiny.gbapal.lz"); + const u8 gMonIcon_SlitherWing[] = INCBIN_U8("graphics/pokemon/slither_wing/icon.4bpp"); + // const u8 gMonFootprint_SlitherWing[] = INCBIN_U8("graphics/pokemon/slither_wing/footprint.1bpp"); +#endif //P_FAMILY_SLITHER_WING + +#if P_FAMILY_SANDY_SHOCKS + const u32 gMonFrontPic_SandyShocks[] = INCBIN_U32("graphics/pokemon/sandy_shocks/front.4bpp.lz"); + const u32 gMonPalette_SandyShocks[] = INCBIN_U32("graphics/pokemon/sandy_shocks/normal.gbapal.lz"); + const u32 gMonBackPic_SandyShocks[] = INCBIN_U32("graphics/pokemon/sandy_shocks/back.4bpp.lz"); + const u32 gMonShinyPalette_SandyShocks[] = INCBIN_U32("graphics/pokemon/sandy_shocks/shiny.gbapal.lz"); + const u8 gMonIcon_SandyShocks[] = INCBIN_U8("graphics/pokemon/sandy_shocks/icon.4bpp"); + // const u8 gMonFootprint_SandyShocks[] = INCBIN_U8("graphics/pokemon/sandy_shocks/footprint.1bpp"); +#endif //P_FAMILY_SANDY_SHOCKS + +#if P_FAMILY_IRON_TREADS + const u32 gMonFrontPic_IronTreads[] = INCBIN_U32("graphics/pokemon/iron_treads/front.4bpp.lz"); + const u32 gMonPalette_IronTreads[] = INCBIN_U32("graphics/pokemon/iron_treads/normal.gbapal.lz"); + const u32 gMonBackPic_IronTreads[] = INCBIN_U32("graphics/pokemon/iron_treads/back.4bpp.lz"); + const u32 gMonShinyPalette_IronTreads[] = INCBIN_U32("graphics/pokemon/iron_treads/shiny.gbapal.lz"); + const u8 gMonIcon_IronTreads[] = INCBIN_U8("graphics/pokemon/iron_treads/icon.4bpp"); + // const u8 gMonFootprint_IronTreads[] = INCBIN_U8("graphics/pokemon/iron_treads/footprint.1bpp"); +#endif //P_FAMILY_IRON_TREADS + +#if P_FAMILY_IRON_BUNDLE + const u32 gMonFrontPic_IronBundle[] = INCBIN_U32("graphics/pokemon/iron_bundle/front.4bpp.lz"); + const u32 gMonPalette_IronBundle[] = INCBIN_U32("graphics/pokemon/iron_bundle/normal.gbapal.lz"); + const u32 gMonBackPic_IronBundle[] = INCBIN_U32("graphics/pokemon/iron_bundle/back.4bpp.lz"); + const u32 gMonShinyPalette_IronBundle[] = INCBIN_U32("graphics/pokemon/iron_bundle/shiny.gbapal.lz"); + const u8 gMonIcon_IronBundle[] = INCBIN_U8("graphics/pokemon/iron_bundle/icon.4bpp"); + // const u8 gMonFootprint_IronBundle[] = INCBIN_U8("graphics/pokemon/iron_bundle/footprint.1bpp"); +#endif //P_FAMILY_IRON_BUNDLE + +#if P_FAMILY_IRON_HANDS + const u32 gMonFrontPic_IronHands[] = INCBIN_U32("graphics/pokemon/iron_hands/front.4bpp.lz"); + const u32 gMonPalette_IronHands[] = INCBIN_U32("graphics/pokemon/iron_hands/normal.gbapal.lz"); + const u32 gMonBackPic_IronHands[] = INCBIN_U32("graphics/pokemon/iron_hands/back.4bpp.lz"); + const u32 gMonShinyPalette_IronHands[] = INCBIN_U32("graphics/pokemon/iron_hands/shiny.gbapal.lz"); + const u8 gMonIcon_IronHands[] = INCBIN_U8("graphics/pokemon/iron_hands/icon.4bpp"); + // const u8 gMonFootprint_IronHands[] = INCBIN_U8("graphics/pokemon/iron_hands/footprint.1bpp"); +#endif //P_FAMILY_IRON_HANDS + +#if P_FAMILY_IRON_JUGULIS + const u32 gMonFrontPic_IronJugulis[] = INCBIN_U32("graphics/pokemon/iron_jugulis/front.4bpp.lz"); + const u32 gMonPalette_IronJugulis[] = INCBIN_U32("graphics/pokemon/iron_jugulis/normal.gbapal.lz"); + const u32 gMonBackPic_IronJugulis[] = INCBIN_U32("graphics/pokemon/iron_jugulis/back.4bpp.lz"); + const u32 gMonShinyPalette_IronJugulis[] = INCBIN_U32("graphics/pokemon/iron_jugulis/shiny.gbapal.lz"); + const u8 gMonIcon_IronJugulis[] = INCBIN_U8("graphics/pokemon/iron_jugulis/icon.4bpp"); + // const u8 gMonFootprint_IronJugulis[] = INCBIN_U8("graphics/pokemon/iron_jugulis/footprint.1bpp"); +#endif //P_FAMILY_IRON_JUGULIS + +#if P_FAMILY_IRON_MOTH + const u32 gMonFrontPic_IronMoth[] = INCBIN_U32("graphics/pokemon/iron_moth/front.4bpp.lz"); + const u32 gMonPalette_IronMoth[] = INCBIN_U32("graphics/pokemon/iron_moth/normal.gbapal.lz"); + const u32 gMonBackPic_IronMoth[] = INCBIN_U32("graphics/pokemon/iron_moth/back.4bpp.lz"); + const u32 gMonShinyPalette_IronMoth[] = INCBIN_U32("graphics/pokemon/iron_moth/shiny.gbapal.lz"); + const u8 gMonIcon_IronMoth[] = INCBIN_U8("graphics/pokemon/iron_moth/icon.4bpp"); + // const u8 gMonFootprint_IronMoth[] = INCBIN_U8("graphics/pokemon/iron_moth/footprint.1bpp"); +#endif //P_FAMILY_IRON_MOTH + +#if P_FAMILY_IRON_THORNS + const u32 gMonFrontPic_IronThorns[] = INCBIN_U32("graphics/pokemon/iron_thorns/front.4bpp.lz"); + const u32 gMonPalette_IronThorns[] = INCBIN_U32("graphics/pokemon/iron_thorns/normal.gbapal.lz"); + const u32 gMonBackPic_IronThorns[] = INCBIN_U32("graphics/pokemon/iron_thorns/back.4bpp.lz"); + const u32 gMonShinyPalette_IronThorns[] = INCBIN_U32("graphics/pokemon/iron_thorns/shiny.gbapal.lz"); + const u8 gMonIcon_IronThorns[] = INCBIN_U8("graphics/pokemon/iron_thorns/icon.4bpp"); + // const u8 gMonFootprint_IronThorns[] = INCBIN_U8("graphics/pokemon/iron_thorns/footprint.1bpp"); +#endif //P_FAMILY_IRON_THORNS + +#if P_FAMILY_FRIGIBAX + const u32 gMonFrontPic_Frigibax[] = INCBIN_U32("graphics/pokemon/frigibax/anim_front.4bpp.lz"); + const u32 gMonPalette_Frigibax[] = INCBIN_U32("graphics/pokemon/frigibax/normal.gbapal.lz"); + const u32 gMonBackPic_Frigibax[] = INCBIN_U32("graphics/pokemon/frigibax/back.4bpp.lz"); + const u32 gMonShinyPalette_Frigibax[] = INCBIN_U32("graphics/pokemon/frigibax/shiny.gbapal.lz"); + const u8 gMonIcon_Frigibax[] = INCBIN_U8("graphics/pokemon/frigibax/icon.4bpp"); + // const u8 gMonFootprint_Frigibax[] = INCBIN_U8("graphics/pokemon/frigibax/footprint.1bpp"); + + const u32 gMonFrontPic_Arctibax[] = INCBIN_U32("graphics/pokemon/arctibax/front.4bpp.lz"); + const u32 gMonPalette_Arctibax[] = INCBIN_U32("graphics/pokemon/arctibax/normal.gbapal.lz"); + const u32 gMonBackPic_Arctibax[] = INCBIN_U32("graphics/pokemon/arctibax/back.4bpp.lz"); + const u32 gMonShinyPalette_Arctibax[] = INCBIN_U32("graphics/pokemon/arctibax/shiny.gbapal.lz"); + const u8 gMonIcon_Arctibax[] = INCBIN_U8("graphics/pokemon/arctibax/icon.4bpp"); + // const u8 gMonFootprint_Arctibax[] = INCBIN_U8("graphics/pokemon/arctibax/footprint.1bpp"); + + const u32 gMonFrontPic_Baxcalibur[] = INCBIN_U32("graphics/pokemon/baxcalibur/front.4bpp.lz"); + const u32 gMonPalette_Baxcalibur[] = INCBIN_U32("graphics/pokemon/baxcalibur/normal.gbapal.lz"); + const u32 gMonBackPic_Baxcalibur[] = INCBIN_U32("graphics/pokemon/baxcalibur/back.4bpp.lz"); + const u32 gMonShinyPalette_Baxcalibur[] = INCBIN_U32("graphics/pokemon/baxcalibur/shiny.gbapal.lz"); + const u8 gMonIcon_Baxcalibur[] = INCBIN_U8("graphics/pokemon/baxcalibur/icon.4bpp"); + // const u8 gMonFootprint_Baxcalibur[] = INCBIN_U8("graphics/pokemon/baxcalibur/footprint.1bpp"); +#endif //P_FAMILY_FRIGIBAX + +#if P_FAMILY_GIMMIGHOUL + const u32 gMonFrontPic_GimmighoulChest[] = INCBIN_U32("graphics/pokemon/gimmighoul/front.4bpp.lz"); + const u32 gMonPalette_GimmighoulChest[] = INCBIN_U32("graphics/pokemon/gimmighoul/normal.gbapal.lz"); + const u32 gMonBackPic_GimmighoulChest[] = INCBIN_U32("graphics/pokemon/gimmighoul/back.4bpp.lz"); + const u32 gMonShinyPalette_GimmighoulChest[] = INCBIN_U32("graphics/pokemon/gimmighoul/shiny.gbapal.lz"); + const u8 gMonIcon_GimmighoulChest[] = INCBIN_U8("graphics/pokemon/gimmighoul/icon.4bpp"); + // const u8 gMonFootprint_Gimmighoul[] = INCBIN_U8("graphics/pokemon/gimmighoul/footprint.1bpp"); + + const u32 gMonFrontPic_GimmighoulRoaming[] = INCBIN_U32("graphics/pokemon/gimmighoul/roaming/front.4bpp.lz"); + const u32 gMonPalette_GimmighoulRoaming[] = INCBIN_U32("graphics/pokemon/gimmighoul/roaming/normal.gbapal.lz"); + const u32 gMonBackPic_GimmighoulRoaming[] = INCBIN_U32("graphics/pokemon/gimmighoul/roaming/back.4bpp.lz"); + const u32 gMonShinyPalette_GimmighoulRoaming[] = INCBIN_U32("graphics/pokemon/gimmighoul/roaming/shiny.gbapal.lz"); + const u8 gMonIcon_GimmighoulRoaming[] = INCBIN_U8("graphics/pokemon/gimmighoul/roaming/icon.4bpp"); + + const u32 gMonFrontPic_Gholdengo[] = INCBIN_U32("graphics/pokemon/gholdengo/front.4bpp.lz"); + const u32 gMonPalette_Gholdengo[] = INCBIN_U32("graphics/pokemon/gholdengo/normal.gbapal.lz"); + const u32 gMonBackPic_Gholdengo[] = INCBIN_U32("graphics/pokemon/gholdengo/back.4bpp.lz"); + const u32 gMonShinyPalette_Gholdengo[] = INCBIN_U32("graphics/pokemon/gholdengo/shiny.gbapal.lz"); + const u8 gMonIcon_Gholdengo[] = INCBIN_U8("graphics/pokemon/gholdengo/icon.4bpp"); + // const u8 gMonFootprint_Gholdengo[] = INCBIN_U8("graphics/pokemon/gholdengo/footprint.1bpp"); +#endif //P_FAMILY_GIMMIGHOUL + +#if P_FAMILY_WO_CHIEN + const u32 gMonFrontPic_WoChien[] = INCBIN_U32("graphics/pokemon/wo_chien/front.4bpp.lz"); + const u32 gMonPalette_WoChien[] = INCBIN_U32("graphics/pokemon/wo_chien/normal.gbapal.lz"); + const u32 gMonBackPic_WoChien[] = INCBIN_U32("graphics/pokemon/wo_chien/back.4bpp.lz"); + const u32 gMonShinyPalette_WoChien[] = INCBIN_U32("graphics/pokemon/wo_chien/shiny.gbapal.lz"); + const u8 gMonIcon_WoChien[] = INCBIN_U8("graphics/pokemon/wo_chien/icon.4bpp"); + // const u8 gMonFootprint_WoChien[] = INCBIN_U8("graphics/pokemon/wo_chien/footprint.1bpp"); +#endif //P_FAMILY_WO_CHIEN + +#if P_FAMILY_CHIEN_PAO + const u32 gMonFrontPic_ChienPao[] = INCBIN_U32("graphics/pokemon/chien_pao/front.4bpp.lz"); + const u32 gMonPalette_ChienPao[] = INCBIN_U32("graphics/pokemon/chien_pao/normal.gbapal.lz"); + const u32 gMonBackPic_ChienPao[] = INCBIN_U32("graphics/pokemon/chien_pao/back.4bpp.lz"); + const u32 gMonShinyPalette_ChienPao[] = INCBIN_U32("graphics/pokemon/chien_pao/shiny.gbapal.lz"); + const u8 gMonIcon_ChienPao[] = INCBIN_U8("graphics/pokemon/chien_pao/icon.4bpp"); + // const u8 gMonFootprint_ChienPao[] = INCBIN_U8("graphics/pokemon/chien_pao/footprint.1bpp"); +#endif //P_FAMILY_CHIEN_PAO + +#if P_FAMILY_TING_LU + const u32 gMonFrontPic_TingLu[] = INCBIN_U32("graphics/pokemon/ting_lu/front.4bpp.lz"); + const u32 gMonPalette_TingLu[] = INCBIN_U32("graphics/pokemon/ting_lu/normal.gbapal.lz"); + const u32 gMonBackPic_TingLu[] = INCBIN_U32("graphics/pokemon/ting_lu/back.4bpp.lz"); + const u32 gMonShinyPalette_TingLu[] = INCBIN_U32("graphics/pokemon/ting_lu/shiny.gbapal.lz"); + const u8 gMonIcon_TingLu[] = INCBIN_U8("graphics/pokemon/ting_lu/icon.4bpp"); + // const u8 gMonFootprint_TingLu[] = INCBIN_U8("graphics/pokemon/ting_lu/footprint.1bpp"); +#endif //P_FAMILY_TING_LU + +#if P_FAMILY_CHI_YU + const u32 gMonFrontPic_ChiYu[] = INCBIN_U32("graphics/pokemon/chi_yu/front.4bpp.lz"); + const u32 gMonPalette_ChiYu[] = INCBIN_U32("graphics/pokemon/chi_yu/normal.gbapal.lz"); + const u32 gMonBackPic_ChiYu[] = INCBIN_U32("graphics/pokemon/chi_yu/back.4bpp.lz"); + const u32 gMonShinyPalette_ChiYu[] = INCBIN_U32("graphics/pokemon/chi_yu/shiny.gbapal.lz"); + const u8 gMonIcon_ChiYu[] = INCBIN_U8("graphics/pokemon/chi_yu/icon.4bpp"); + // const u8 gMonFootprint_ChiYu[] = INCBIN_U8("graphics/pokemon/chi_yu/footprint.1bpp"); +#endif //P_FAMILY_CHI_YU + +#if P_FAMILY_ROARING_MOON + const u32 gMonFrontPic_RoaringMoon[] = INCBIN_U32("graphics/pokemon/roaring_moon/front.4bpp.lz"); + const u32 gMonPalette_RoaringMoon[] = INCBIN_U32("graphics/pokemon/roaring_moon/normal.gbapal.lz"); + const u32 gMonBackPic_RoaringMoon[] = INCBIN_U32("graphics/pokemon/roaring_moon/back.4bpp.lz"); + const u32 gMonShinyPalette_RoaringMoon[] = INCBIN_U32("graphics/pokemon/roaring_moon/shiny.gbapal.lz"); + const u8 gMonIcon_RoaringMoon[] = INCBIN_U8("graphics/pokemon/roaring_moon/icon.4bpp"); + // const u8 gMonFootprint_RoaringMoon[] = INCBIN_U8("graphics/pokemon/roaring_moon/footprint.1bpp"); +#endif //P_FAMILY_ROARING_MOON + +#if P_FAMILY_IRON_VALIANT + const u32 gMonFrontPic_IronValiant[] = INCBIN_U32("graphics/pokemon/iron_valiant/front.4bpp.lz"); + const u32 gMonPalette_IronValiant[] = INCBIN_U32("graphics/pokemon/iron_valiant/normal.gbapal.lz"); + const u32 gMonBackPic_IronValiant[] = INCBIN_U32("graphics/pokemon/iron_valiant/back.4bpp.lz"); + const u32 gMonShinyPalette_IronValiant[] = INCBIN_U32("graphics/pokemon/iron_valiant/shiny.gbapal.lz"); + const u8 gMonIcon_IronValiant[] = INCBIN_U8("graphics/pokemon/iron_valiant/icon.4bpp"); + // const u8 gMonFootprint_IronValiant[] = INCBIN_U8("graphics/pokemon/iron_valiant/footprint.1bpp"); +#endif //P_FAMILY_IRON_VALIANT + +#if P_FAMILY_KORAIDON + const u32 gMonFrontPic_Koraidon[] = INCBIN_U32("graphics/pokemon/koraidon/front.4bpp.lz"); + const u32 gMonPalette_Koraidon[] = INCBIN_U32("graphics/pokemon/koraidon/normal.gbapal.lz"); + const u32 gMonBackPic_Koraidon[] = INCBIN_U32("graphics/pokemon/koraidon/back.4bpp.lz"); + const u32 gMonShinyPalette_Koraidon[] = INCBIN_U32("graphics/pokemon/koraidon/shiny.gbapal.lz"); + const u8 gMonIcon_Koraidon[] = INCBIN_U8("graphics/pokemon/koraidon/icon.4bpp"); + // const u8 gMonFootprint_Koraidon[] = INCBIN_U8("graphics/pokemon/koraidon/footprint.1bpp"); +#endif //P_FAMILY_KORAIDON + +#if P_FAMILY_MIRAIDON + const u32 gMonFrontPic_Miraidon[] = INCBIN_U32("graphics/pokemon/miraidon/front.4bpp.lz"); + const u32 gMonPalette_Miraidon[] = INCBIN_U32("graphics/pokemon/miraidon/normal.gbapal.lz"); + const u32 gMonBackPic_Miraidon[] = INCBIN_U32("graphics/pokemon/miraidon/back.4bpp.lz"); + const u32 gMonShinyPalette_Miraidon[] = INCBIN_U32("graphics/pokemon/miraidon/shiny.gbapal.lz"); + const u8 gMonIcon_Miraidon[] = INCBIN_U8("graphics/pokemon/miraidon/icon.4bpp"); + // const u8 gMonFootprint_Miraidon[] = INCBIN_U8("graphics/pokemon/miraidon/footprint.1bpp"); +#endif //P_FAMILY_MIRAIDON + +#if P_FAMILY_WALKING_WAKE + const u32 gMonFrontPic_WalkingWake[] = INCBIN_U32("graphics/pokemon/walking_wake/front.4bpp.lz"); + const u32 gMonPalette_WalkingWake[] = INCBIN_U32("graphics/pokemon/walking_wake/normal.gbapal.lz"); + const u32 gMonBackPic_WalkingWake[] = INCBIN_U32("graphics/pokemon/walking_wake/back.4bpp.lz"); + const u32 gMonShinyPalette_WalkingWake[] = INCBIN_U32("graphics/pokemon/walking_wake/shiny.gbapal.lz"); + const u8 gMonIcon_WalkingWake[] = INCBIN_U8("graphics/pokemon/walking_wake/icon.4bpp"); + // const u8 gMonFootprint_WalkingWake[] = INCBIN_U8("graphics/pokemon/walking_wake/footprint.1bpp"); +#endif //P_FAMILY_WALKING_WAKE + +#if P_FAMILY_IRON_LEAVES + const u32 gMonFrontPic_IronLeaves[] = INCBIN_U32("graphics/pokemon/iron_leaves/front.4bpp.lz"); + const u32 gMonPalette_IronLeaves[] = INCBIN_U32("graphics/pokemon/iron_leaves/normal.gbapal.lz"); + const u32 gMonBackPic_IronLeaves[] = INCBIN_U32("graphics/pokemon/iron_leaves/back.4bpp.lz"); + const u32 gMonShinyPalette_IronLeaves[] = INCBIN_U32("graphics/pokemon/iron_leaves/shiny.gbapal.lz"); + const u8 gMonIcon_IronLeaves[] = INCBIN_U8("graphics/pokemon/iron_leaves/icon.4bpp"); + // const u8 gMonFootprint_IronLeaves[] = INCBIN_U8("graphics/pokemon/iron_leaves/footprint.1bpp"); +#endif //P_FAMILY_IRON_LEAVES + +#if P_FAMILY_POLTCHAGEIST + const u32 gMonFrontPic_Poltchageist[] = INCBIN_U32("graphics/pokemon/poltchageist/front.4bpp.lz"); + const u32 gMonPalette_Poltchageist[] = INCBIN_U32("graphics/pokemon/poltchageist/normal.gbapal.lz"); + const u32 gMonBackPic_Poltchageist[] = INCBIN_U32("graphics/pokemon/poltchageist/back.4bpp.lz"); + const u32 gMonShinyPalette_Poltchageist[] = INCBIN_U32("graphics/pokemon/poltchageist/shiny.gbapal.lz"); + const u8 gMonIcon_Poltchageist[] = INCBIN_U8("graphics/pokemon/poltchageist/icon.4bpp"); + // const u8 gMonFootprint_Poltchageist[] = INCBIN_U8("graphics/pokemon/poltchageist/footprint.1bpp"); + + const u32 gMonFrontPic_Sinistcha[] = INCBIN_U32("graphics/pokemon/sinistcha/front.4bpp.lz"); + const u32 gMonPalette_Sinistcha[] = INCBIN_U32("graphics/pokemon/sinistcha/normal.gbapal.lz"); + const u32 gMonBackPic_Sinistcha[] = INCBIN_U32("graphics/pokemon/sinistcha/back.4bpp.lz"); + const u32 gMonShinyPalette_Sinistcha[] = INCBIN_U32("graphics/pokemon/sinistcha/shiny.gbapal.lz"); + const u8 gMonIcon_Sinistcha[] = INCBIN_U8("graphics/pokemon/sinistcha/icon.4bpp"); + // const u8 gMonFootprint_Sinistcha[] = INCBIN_U8("graphics/pokemon/sinistcha/footprint.1bpp"); +#endif //P_FAMILY_POLTCHAGEIST + +#if P_FAMILY_OKIDOGI + const u32 gMonFrontPic_Okidogi[] = INCBIN_U32("graphics/pokemon/okidogi/front.4bpp.lz"); + const u32 gMonPalette_Okidogi[] = INCBIN_U32("graphics/pokemon/okidogi/normal.gbapal.lz"); + const u32 gMonBackPic_Okidogi[] = INCBIN_U32("graphics/pokemon/okidogi/back.4bpp.lz"); + const u32 gMonShinyPalette_Okidogi[] = INCBIN_U32("graphics/pokemon/okidogi/shiny.gbapal.lz"); + const u8 gMonIcon_Okidogi[] = INCBIN_U8("graphics/pokemon/okidogi/icon.4bpp"); + // const u8 gMonFootprint_Okidogi[] = INCBIN_U8("graphics/pokemon/okidogi/footprint.1bpp"); +#endif //P_FAMILY_OKIDOGI + +#if P_FAMILY_MUNKIDORI + const u32 gMonFrontPic_Munkidori[] = INCBIN_U32("graphics/pokemon/munkidori/front.4bpp.lz"); + const u32 gMonPalette_Munkidori[] = INCBIN_U32("graphics/pokemon/munkidori/normal.gbapal.lz"); + const u32 gMonBackPic_Munkidori[] = INCBIN_U32("graphics/pokemon/munkidori/back.4bpp.lz"); + const u32 gMonShinyPalette_Munkidori[] = INCBIN_U32("graphics/pokemon/munkidori/shiny.gbapal.lz"); + const u8 gMonIcon_Munkidori[] = INCBIN_U8("graphics/pokemon/munkidori/icon.4bpp"); + // const u8 gMonFootprint_Munkidori[] = INCBIN_U8("graphics/pokemon/munkidori/footprint.1bpp"); +#endif //P_FAMILY_MUNKIDORI + +#if P_FAMILY_FEZANDIPITI + const u32 gMonFrontPic_Fezandipiti[] = INCBIN_U32("graphics/pokemon/fezandipiti/front.4bpp.lz"); + const u32 gMonPalette_Fezandipiti[] = INCBIN_U32("graphics/pokemon/fezandipiti/normal.gbapal.lz"); + const u32 gMonBackPic_Fezandipiti[] = INCBIN_U32("graphics/pokemon/fezandipiti/back.4bpp.lz"); + const u32 gMonShinyPalette_Fezandipiti[] = INCBIN_U32("graphics/pokemon/fezandipiti/shiny.gbapal.lz"); + const u8 gMonIcon_Fezandipiti[] = INCBIN_U8("graphics/pokemon/fezandipiti/icon.4bpp"); + // const u8 gMonFootprint_Fezandipiti[] = INCBIN_U8("graphics/pokemon/fezandipiti/footprint.1bpp"); +#endif //P_FAMILY_FEZANDIPITI + +#if P_FAMILY_OGERPON + const u32 gMonFrontPic_OgerponTealMask[] = INCBIN_U32("graphics/pokemon/ogerpon/front.4bpp.lz"); + const u32 gMonPalette_OgerponTealMask[] = INCBIN_U32("graphics/pokemon/ogerpon/normal.gbapal.lz"); + const u32 gMonBackPic_OgerponTealMask[] = INCBIN_U32("graphics/pokemon/ogerpon/back.4bpp.lz"); + // const u32 gMonShinyPalette_OgerponTealMask[] = INCBIN_U32("graphics/pokemon/ogerpon/shiny.gbapal.lz"); + const u8 gMonIcon_OgerponTealMask[] = INCBIN_U8("graphics/pokemon/ogerpon/icon.4bpp"); + // const u8 gMonFootprint_Ogerpon[] = INCBIN_U8("graphics/pokemon/ogerpon/footprint.1bpp"); + + const u32 gMonFrontPic_OgerponWellspringMask[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/front.4bpp.lz"); + 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 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 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 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"); + // const u32 gMonBackPic_OgerponTealMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/tera/back.4bpp.lz"); + // const u32 gMonShinyPalette_OgerponTealMaskTera[]] = INCBIN_U32("graphics/pokemon/ogerpon/tera/shiny.gbapal.lz"); + + // const u32 gMonFrontPic_OgerponWellspringMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/tera/front.4bpp.lz"); + // const u32 gMonPalette_OgerponWellspringMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/tera/normal.gbapal.lz"); + // const u32 gMonBackPic_OgerponWellspringMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/tera/back.4bpp.lz"); + // const u32 gMonShinyPalette_OgerponWellspringMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/tera/shiny.gbapal.lz"); + + // const u32 gMonFrontPic_OgerponHearthflameMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/tera/front.4bpp.lz"); + // const u32 gMonPalette_OgerponHearthflameMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/tera/normal.gbapal.lz"); + // const u32 gMonBackPic_OgerponHearthflameMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/tera/back.4bpp.lz"); + // const u32 gMonShinyPalette_OgerponHearthflameMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/hearthflame/tera/shiny.gbapal.lz"); + + // const u32 gMonFrontPic_OgerponCornerstoneMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/tera/front.4bpp.lz"); + // const u32 gMonPalette_OgerponCornerstoneMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/tera/normal.gbapal.lz"); + // const u32 gMonBackPic_OgerponCornerstoneMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/tera/back.4bpp.lz"); + // const u32 gMonShinyPalette_OgerponCornerstoneMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/tera/shiny.gbapal.lz"); +#endif //P_FAMILY_OGERPON + + const u32 gMonFrontPic_Egg[] = INCBIN_U32("graphics/pokemon/egg/anim_front.4bpp.lz"); + const u32 gMonPalette_Egg[] = INCBIN_U32("graphics/pokemon/egg/normal.gbapal.lz"); + const u8 gMonIcon_Egg[] = INCBIN_U8("graphics/pokemon/egg/icon.4bpp"); + diff --git a/src/data/item_icon_table.h b/src/data/item_icon_table.h index a0a207be2d..33ed4aed8d 100644 --- a/src/data/item_icon_table.h +++ b/src/data/item_icon_table.h @@ -791,7 +791,7 @@ const u32 *const gItemIconTable[ITEMS_COUNT + 1][2] = [ITEM_METEORITE] = {gItemIcon_Meteorite, gItemIconPalette_Meteorite}, [ITEM_MAGMA_EMBLEM] = {gItemIcon_MagmaEmblem, gItemIconPalette_MagmaEmblem}, [ITEM_CONTEST_PASS] = {gItemIcon_ContestPass, gItemIconPalette_ContestPass}, - [ITEM_OAKS_PARCEL] = {gItemIcon_OaksParcel, gItemIconPalette_OaksParcel}, + [ITEM_PARCEL] = {gItemIcon_Parcel, gItemIconPalette_Parcel}, [ITEM_SECRET_KEY] = {gItemIcon_SecretKey, gItemIconPalette_SecretKey}, [ITEM_BIKE_VOUCHER] = {gItemIcon_BikeVoucher, gItemIconPalette_BikeVoucher}, [ITEM_GOLD_TEETH] = {gItemIcon_GoldTeeth, gItemIconPalette_GoldTeeth}, @@ -844,6 +844,21 @@ const u32 *const gItemIconTable[ITEMS_COUNT + 1][2] = [ITEM_LINKING_CORD] = {gItemIcon_LinkingCord, gItemIconPalette_LinkingCord}, [ITEM_PEAT_BLOCK] = {gItemIcon_PeatBlock, gItemIconPalette_PeatBlock}, [ITEM_BERSERK_GENE] = {gItemIcon_BerserkGene, gItemIconPalette_BerserkGene}, + [ITEM_FAIRY_FEATHER] = {gItemIcon_FairyFeather, gItemIconPalette_FairyFeather}, + [ITEM_SYRUPY_APPLE] = {gItemIcon_SyrupyApple, gItemIconPalette_SyrupyApple}, + [ITEM_UNREMARKABLE_TEACUP] = {gItemIcon_UnremarkableTeacup, gItemIconPalette_UnremarkableTeacup}, + [ITEM_MASTERPIECE_TEACUP] = {gItemIcon_MasterpieceTeacup, gItemIconPalette_MasterpieceTeacup}, + [ITEM_CORNERSTONE_MASK] = {gItemIcon_CornerstoneMask, gItemIconPalette_CornerstoneMask}, + [ITEM_WELLSPRING_MASK] = {gItemIcon_WellspringMask, gItemIconPalette_WellspringMask}, + [ITEM_HEARTHFLAME_MASK] = {gItemIcon_HearthflameMask, gItemIconPalette_HearthflameMask}, + [ITEM_HEALTH_MOCHI] = {gItemIcon_Mochi, gItemIconPalette_HealthMochi}, + [ITEM_MUSCLE_MOCHI] = {gItemIcon_Mochi, gItemIconPalette_MuscleMochi}, + [ITEM_RESIST_MOCHI] = {gItemIcon_Mochi, gItemIconPalette_ResistMochi}, + [ITEM_GENIUS_MOCHI] = {gItemIcon_Mochi, gItemIconPalette_GeniusMochi}, + [ITEM_CLEVER_MOCHI] = {gItemIcon_Mochi, gItemIconPalette_CleverMochi}, + [ITEM_SWIFT_MOCHI] = {gItemIcon_Mochi, gItemIconPalette_SwiftMochi}, + [ITEM_FRESH_START_MOCHI] = {gItemIcon_Mochi, gItemIconPalette_FreshStartMochi}, + [ITEM_GLIMMERING_CHARM] = {gItemIcon_GlimmeringCharm, gItemIconPalette_GlimmeringCharm}, // Return to field arrow [ITEMS_COUNT] = {gItemIcon_ReturnToFieldArrow, gItemIconPalette_ReturnToFieldArrow}, }; diff --git a/src/data/items.h b/src/data/items.h index cb32c14cd0..85fa2dc893 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -4844,11 +4844,7 @@ const struct Item gItems[] = .name = _("Soul Dew"), .price = 0, .holdEffect = HOLD_EFFECT_SOUL_DEW, - #if B_SOUL_DEW_BOOST >= GEN_7 - .holdEffectParam = 20, - #else - .holdEffectParam = 50, - #endif + .holdEffectParam = B_SOUL_DEW_BOOST >= GEN_7 ? 20 : 50, .description = sSoulDewDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, @@ -6436,14 +6432,6 @@ const struct Item gItems[] = .flingPower = 10, }, -#if B_CONFUSE_BERRIES_HEAL >= GEN_8 - #define CONFUSE_BERRY_HEAL_FRACTION 3 -#elif B_CONFUSE_BERRIES_HEAL == GEN_7 - #define CONFUSE_BERRY_HEAL_FRACTION 2 -#else - #define CONFUSE_BERRY_HEAL_FRACTION 8 -#endif - [ITEM_FIGY_BERRY] = { .name = _("Figy Berry"), @@ -6509,8 +6497,6 @@ const struct Item gItems[] = .flingPower = 10, }, -#undef CONFUSE_BERRY_HEAL_FRACTION - [ITEM_RAZZ_BERRY] = { .name = _("Razz Berry"), @@ -8508,14 +8494,15 @@ const struct Item gItems[] = .importance = 1, .description = sRotomCatalogDesc, .pocket = POCKET_KEY_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_RotomCatalog, }, [ITEM_GRACIDEA] = { .name = _("Gracidea"), .price = 0, + .importance = 1, .description = sGracideaDesc, .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -8526,6 +8513,7 @@ const struct Item gItems[] = { .name = _("Reveal Glass"), .price = 0, + .importance = 1, .description = sRevealGlassDesc, .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -8536,10 +8524,11 @@ const struct Item gItems[] = { .name = _("DNA Splicers"), .price = 0, + .importance = 1, .description = sDNASplicersDesc, .pocket = POCKET_KEY_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo: ItemUseOutOfBattle_FormChange_Fusion + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_Fusion, }, [ITEM_ZYGARDE_CUBE] = @@ -8549,14 +8538,15 @@ const struct Item gItems[] = .importance = 1, .description = sZygardeCubeDesc, .pocket = POCKET_KEY_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_ZygardeCube, }, [ITEM_PRISON_BOTTLE] = { .name = _("Prison Bottle"), .price = 0, + .importance = 1, .description = sPrisonBottleDesc, .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -8567,30 +8557,33 @@ const struct Item gItems[] = { .name = _("N-Solarizer"), .price = 0, + .importance = 1, .description = sNSolarizerDesc, .pocket = POCKET_KEY_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo: ItemUseOutOfBattle_FormChange_Fusion + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_Fusion, }, [ITEM_N_LUNARIZER] = { .name = _("N-Lunarizer"), .price = 0, + .importance = 1, .description = sNLunarizerDesc, .pocket = POCKET_KEY_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo: ItemUseOutOfBattle_FormChange_Fusion + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_Fusion, }, [ITEM_REINS_OF_UNITY] = { .name = _("ReinsOfUnity"), .price = 0, + .importance = 1, .description = sReinsOfUnityDesc, .pocket = POCKET_KEY_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo: ItemUseOutOfBattle_FormChange_Fusion + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_Fusion, }, // Battle Mechanic Key Items @@ -8730,7 +8723,11 @@ const struct Item gItems[] = .importance = 1, .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_FIELD, +#if I_VS_SEEKER_CHARGING != 0 + .fieldUseFunc = FieldUseFunc_VsSeeker, +#else .fieldUseFunc = ItemUseOutOfBattle_CannotUse, +#endif }, [ITEM_TM_CASE] = @@ -9077,11 +9074,11 @@ const struct Item gItems[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, }, - [ITEM_OAKS_PARCEL] = + [ITEM_PARCEL] = { - .name = _("Oak's Parcel"), + .name = _("Parcel"), .price = 0, - .description = sOaksParcelDesc, + .description = sParcelDesc, .importance = 2, .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_BAG_MENU, @@ -9647,4 +9644,174 @@ const struct Item gItems[] = .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 10, }, + + [ITEM_FAIRY_FEATHER] = + { + .name = _("Fairy Feather"), + .price = 1000, + .holdEffect = HOLD_EFFECT_FAIRY_POWER, + .holdEffectParam = TYPE_BOOST_PARAM, + .description = sFairyFeatherDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .flingPower = 10, + }, + + [ITEM_SYRUPY_APPLE] = + { + .name = _("Syrupy Apple"), + .price = 2200, + .description = sSyrupyAppleDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .flingPower = 30, + }, + + [ITEM_UNREMARKABLE_TEACUP] = + { + .name = _("UnrmkblTeacup"), + .price = 1600, + .description = sUnremarkableTeacupDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .flingPower = 80, + }, + + [ITEM_MASTERPIECE_TEACUP] = + { + .name = _("MstrpceTeacup"), + .price = 38000, + .description = sMasterpieceTeacupDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + .flingPower = 80, + }, + + [ITEM_CORNERSTONE_MASK] = + { + .name = _("CornrstneMask"), + .price = 0, + .holdEffect = HOLD_EFFECT_MASK, + .description = sCornerstoneMaskDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_ROCK, + }, + + [ITEM_WELLSPRING_MASK] = + { + .name = _("WellsprngMask"), + .price = 0, + .holdEffect = HOLD_EFFECT_MASK, + .description = sWellspringMaskDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_WATER, + }, + + [ITEM_HEARTHFLAME_MASK] = + { + .name = _("HrthflameMask"), + .price = 0, + .holdEffect = HOLD_EFFECT_MASK, + .description = sHearthflameMaskDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = TYPE_FIRE, + }, + + [ITEM_HEALTH_MOCHI] = + { + .name = _("Health Mochi"), + .price = 500, + .description = sHealthMochiDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .flingPower = 30, + }, + + [ITEM_MUSCLE_MOCHI] = + { + .name = _("Muscle Mochi"), + .price = 500, + .description = sMuscleMochiDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .flingPower = 30, + }, + + [ITEM_RESIST_MOCHI] = + { + .name = _("Resist Mochi"), + .price = 500, + .description = sResistMochiDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .flingPower = 30, + }, + + [ITEM_GENIUS_MOCHI] = + { + .name = _("Genius Mochi"), + .price = 500, + .description = sGeniusMochiDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .flingPower = 30, + }, + + [ITEM_CLEVER_MOCHI] = + { + .name = _("Clever Mochi"), + .price = 500, + .description = sCleverMochiDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .flingPower = 30, + }, + + [ITEM_SWIFT_MOCHI] = + { + .name = _("Swift Mochi"), + .price = 500, + .description = sSwiftMochiDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_Medicine, + .flingPower = 30, + }, + + [ITEM_FRESH_START_MOCHI] = + { + .name = _("FrshStrtMochi"), + .price = 300, + .description = sFreshStartMochiDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_ResetEVs, + .flingPower = 30, + }, + + [ITEM_GLIMMERING_CHARM] = + { + .name = _("GlmmringCharm"), + .price = 0, + .importance = 1, + .description = sGlimmeringCharmDesc, + .pocket = POCKET_KEY_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, }; diff --git a/src/data/object_events/movement_action_func_tables.h b/src/data/object_events/movement_action_func_tables.h index 2e1b6b3b31..e16cae74fc 100755 --- a/src/data/object_events/movement_action_func_tables.h +++ b/src/data/object_events/movement_action_func_tables.h @@ -420,6 +420,8 @@ u8 (*const gMovementActionFuncs_StopLevitateAtTop[])(struct ObjectEvent *, struc u8 (*const gMovementActionFuncs_Figure8[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_FlyUp[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_FlyDown[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_EmoteX[])(struct ObjectEvent *, struct Sprite *); +u8 (*const gMovementActionFuncs_EmoteDoubleExclMark[])(struct ObjectEvent *, struct Sprite *); u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *) = { [MOVEMENT_ACTION_FACE_DOWN] = gMovementActionFuncs_FaceDown, @@ -580,6 +582,8 @@ u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *) [MOVEMENT_ACTION_FIGURE_8] = gMovementActionFuncs_Figure8, [MOVEMENT_ACTION_FLY_UP] = gMovementActionFuncs_FlyUp, [MOVEMENT_ACTION_FLY_DOWN] = gMovementActionFuncs_FlyDown, + [MOVEMENT_ACTION_EMOTE_X] = gMovementActionFuncs_EmoteX, + [MOVEMENT_ACTION_EMOTE_DOUBLE_EXCL_MARK] = gMovementActionFuncs_EmoteDoubleExclMark, }; u8 (*const gMovementActionFuncs_FaceDown[])(struct ObjectEvent *, struct Sprite *) = { @@ -1519,3 +1523,13 @@ u8 (*const gMovementActionFuncs_StopLevitateAtTop[])(struct ObjectEvent *, struc MovementAction_StopLevitateAtTop_Step0, MovementAction_Finish, }; + +u8 (*const gMovementActionFuncs_EmoteX[])(struct ObjectEvent *, struct Sprite *) = { + MovementAction_EmoteX_Step0, + MovementAction_Finish, +}; + +u8 (*const gMovementActionFuncs_EmoteDoubleExclMark[])(struct ObjectEvent *, struct Sprite *) = { + MovementAction_EmoteDoubleExclamationMark_Step0, + MovementAction_Finish, +}; diff --git a/src/data/party_menu.h b/src/data/party_menu.h index 4a1c5344c6..168520a48c 100644 --- a/src/data/party_menu.h +++ b/src/data/party_menu.h @@ -482,6 +482,17 @@ static const struct WindowTemplate sAlreadyHoldingOneMsgWindowTemplate = .baseBlock = 0x299, }; +static const struct WindowTemplate sOrderWhichApplianceMsgWindowTemplate = +{ + .bg = 2, + .tilemapLeft = 1, + .tilemapTop = 15, + .width = 14, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x299, +}; + static const struct WindowTemplate sItemGiveTakeWindowTemplate = { .bg = 2, @@ -515,6 +526,28 @@ static const struct WindowTemplate sMoveSelectWindowTemplate = .baseBlock = 0x2E9, }; +static const struct WindowTemplate sCatalogSelectWindowTemplate = +{ + .bg = 2, + .tilemapLeft = 17, + .tilemapTop = 5, + .width = 12, + .height = 14, + .paletteNum = 14, + .baseBlock = 0x2E9, +}; + +static const struct WindowTemplate sZygardeCubeSelectWindowTemplate = +{ + .bg = 2, + .tilemapLeft = 18, + .tilemapTop = 13, + .width = 11, + .height = 6, + .paletteNum = 14, + .baseBlock = 0x2E9, +}; + static const struct WindowTemplate sPartyMenuYesNoWindowTemplate = { .bg = 2, @@ -624,6 +657,8 @@ static const u8 *const sActionStringTable[] = [PARTY_MSG_DO_WHAT_WITH_ITEM] = gText_DoWhatWithItem, [PARTY_MSG_DO_WHAT_WITH_MAIL] = gText_DoWhatWithMail, [PARTY_MSG_ALREADY_HOLDING_ONE] = gText_AlreadyHoldingOne, + [PARTY_MSG_WHICH_APPLIANCE] = gText_WhichAppliance, + [PARTY_MSG_CHOOSE_SECOND_FUSION] = gText_NextFusionMon, }; static const u8 *const sDescriptionStringTable[] = @@ -676,6 +711,14 @@ struct [MENU_TRADE1] = {gText_Trade4, CursorCb_Trade1}, [MENU_TRADE2] = {gText_Trade4, CursorCb_Trade2}, [MENU_TOSS] = {gMenuText_Toss, CursorCb_Toss}, + [MENU_CATALOG_BULB] = {gText_LightBulb, CursorCb_CatalogBulb}, + [MENU_CATALOG_OVEN] = {gText_MicrowaveOven, CursorCb_CatalogOven}, + [MENU_CATALOG_WASHING] = {gText_WashingMachine, CursorCb_CatalogWashing}, + [MENU_CATALOG_FRIDGE] = {gText_Refrigerator, CursorCb_CatalogFridge}, + [MENU_CATALOG_FAN] = {gText_ElectricFan, CursorCb_CatalogFan}, + [MENU_CATALOG_MOWER] = {gText_LawnMower, CursorCb_CatalogMower}, + [MENU_CHANGE_FORM] = {gText_ChangeForm, CursorCb_ChangeForm}, + [MENU_CHANGE_ABILITY] = {gText_ChangeAbility, CursorCb_ChangeAbility}, [MENU_FIELD_MOVES + FIELD_MOVE_CUT] = {gMoveNames[MOVE_CUT], CursorCb_FieldMove}, [MENU_FIELD_MOVES + FIELD_MOVE_FLASH] = {gMoveNames[MOVE_FLASH], CursorCb_FieldMove}, [MENU_FIELD_MOVES + FIELD_MOVE_ROCK_SMASH] = {gMoveNames[MOVE_ROCK_SMASH], CursorCb_FieldMove}, @@ -705,6 +748,10 @@ static const u8 sPartyMenuAction_RegisterSummaryCancel[] = {MENU_REGISTER, MENU_ static const u8 sPartyMenuAction_TradeSummaryCancel1[] = {MENU_TRADE1, MENU_SUMMARY, MENU_CANCEL1}; static const u8 sPartyMenuAction_TradeSummaryCancel2[] = {MENU_TRADE2, MENU_SUMMARY, MENU_CANCEL1}; static const u8 sPartyMenuAction_TakeItemTossCancel[] = {MENU_TAKE_ITEM, MENU_TOSS, MENU_CANCEL1}; +static const u8 sPartyMenuAction_RotomCatalog[] = {MENU_CATALOG_BULB, MENU_CATALOG_OVEN, MENU_CATALOG_WASHING, MENU_CATALOG_FRIDGE, MENU_CATALOG_FAN, MENU_CATALOG_MOWER, MENU_CANCEL1}; +static const u8 sPartyMenuAction_ZygardeCube[] = {MENU_CHANGE_FORM, MENU_CHANGE_ABILITY, MENU_CANCEL1}; + + static const u8 *const sPartyMenuActions[] = { @@ -722,6 +769,8 @@ static const u8 *const sPartyMenuActions[] = [ACTIONS_TRADE] = sPartyMenuAction_TradeSummaryCancel1, [ACTIONS_SPIN_TRADE] = sPartyMenuAction_TradeSummaryCancel2, [ACTIONS_TAKEITEM_TOSS] = sPartyMenuAction_TakeItemTossCancel, + [ACTIONS_ROTOM_CATALOG] = sPartyMenuAction_RotomCatalog, + [ACTIONS_ZYGARDE_CUBE] = sPartyMenuAction_ZygardeCube, }; static const u8 sPartyMenuActionCounts[] = @@ -739,7 +788,9 @@ static const u8 sPartyMenuActionCounts[] = [ACTIONS_REGISTER] = ARRAY_COUNT(sPartyMenuAction_RegisterSummaryCancel), [ACTIONS_TRADE] = ARRAY_COUNT(sPartyMenuAction_TradeSummaryCancel1), [ACTIONS_SPIN_TRADE] = ARRAY_COUNT(sPartyMenuAction_TradeSummaryCancel2), - [ACTIONS_TAKEITEM_TOSS] = ARRAY_COUNT(sPartyMenuAction_TakeItemTossCancel) + [ACTIONS_TAKEITEM_TOSS] = ARRAY_COUNT(sPartyMenuAction_TakeItemTossCancel), + [ACTIONS_ROTOM_CATALOG] = ARRAY_COUNT(sPartyMenuAction_RotomCatalog), + [ACTIONS_ZYGARDE_CUBE] = ARRAY_COUNT(sPartyMenuAction_ZygardeCube), }; static const u16 sFieldMoves[FIELD_MOVES_COUNT + 1] = @@ -1102,3 +1153,12 @@ static const u8 *const sUnused_StatStrings[] = gText_SpDef4, gText_Speed2 }; + +static const u16 sRotomFormChangeMoves[5] = +{ + MOVE_HYDRO_PUMP, + MOVE_BLIZZARD, + MOVE_OVERHEAT, + MOVE_AIR_SLASH, + MOVE_LEAF_STORM, +}; diff --git a/src/data/pointillism_points.h b/src/data/pointillism_points.h index 708f5c02e6..9d19d13140 100644 --- a/src/data/pointillism_points.h +++ b/src/data/pointillism_points.h @@ -2,7 +2,7 @@ #define GET_POINT_COLOR_TYPE(bits) (((bits) >> 1) & 3) #define GET_POINT_DELTA(bits) (((bits) >> 3) & 7) -#define PT(x, y, delta, colorType, offsetDownLeft) x, y, (delta << 3) | (colorType << 1) | offsetDownLeft +#define PT(x, y, delta, colorType, offsetDownLeft) {x, y, (delta << 3) | (colorType << 1) | offsetDownLeft} static const u8 sPointillismPoints[][3] = { PT( 0, 29, 3, 2, FALSE), diff --git a/src/data/pokemon/egg_moves.h b/src/data/pokemon/egg_moves.h index b6cc938b70..61b0259638 100644 --- a/src/data/pokemon/egg_moves.h +++ b/src/data/pokemon/egg_moves.h @@ -1,8 +1,11 @@ +#include "constants/moves.h" + #define EGG_MOVES_SPECIES_OFFSET 20000 #define EGG_MOVES_TERMINATOR 0xFFFF #define egg_moves(species, moves...) (SPECIES_##species + EGG_MOVES_SPECIES_OFFSET), moves const u16 gEggMoves[] = { +#if P_FAMILY_BULBASAUR egg_moves(BULBASAUR, MOVE_SKULL_BASH, MOVE_CHARM, @@ -19,7 +22,9 @@ const u16 gEggMoves[] = { MOVE_ENDURE, MOVE_GIGA_DRAIN, MOVE_GRASSY_TERRAIN), +#endif //P_FAMILY_BULBASAUR +#if P_FAMILY_CHARMANDER egg_moves(CHARMANDER, MOVE_BELLY_DRUM, MOVE_ANCIENT_POWER, @@ -35,7 +40,9 @@ const u16 gEggMoves[] = { MOVE_DRAGON_PULSE, MOVE_FOCUS_PUNCH, MOVE_AIR_CUTTER), +#endif //P_FAMILY_CHARMANDER +#if P_FAMILY_SQUIRTLE egg_moves(SQUIRTLE, MOVE_MIRROR_COAT, MOVE_HAZE, @@ -53,7 +60,9 @@ const u16 gEggMoves[] = { MOVE_BRINE, MOVE_DRAGON_PULSE, MOVE_AURA_SPHERE), +#endif //P_FAMILY_SQUIRTLE +#if P_FAMILY_PIDGEY egg_moves(PIDGEY, MOVE_PURSUIT, MOVE_FEINT_ATTACK, @@ -64,7 +73,9 @@ const u16 gEggMoves[] = { MOVE_BRAVE_BIRD, MOVE_UPROAR, MOVE_DEFOG), +#endif //P_FAMILY_PIDGEY +#if P_FAMILY_RATTATA egg_moves(RATTATA, MOVE_SCREECH, MOVE_FLAME_WHEEL, @@ -78,6 +89,23 @@ const u16 gEggMoves[] = { MOVE_REVENGE, MOVE_FINAL_GAMBIT), +#if P_ALOLAN_FORMS + egg_moves(RATTATA_ALOLAN, + MOVE_COUNTER, + MOVE_FINAL_GAMBIT, + MOVE_FURY_SWIPES, + MOVE_ME_FIRST, + MOVE_REVENGE, + MOVE_REVERSAL, + MOVE_SNATCH, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_SWITCHEROO, + MOVE_UPROAR), +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_RATTATA + +#if P_FAMILY_SPEAROW egg_moves(SPEAROW, MOVE_FEINT_ATTACK, MOVE_SCARY_FACE, @@ -90,7 +118,9 @@ const u16 gEggMoves[] = { MOVE_FEATHER_DANCE, MOVE_STEEL_WING, MOVE_RAZOR_WIND), +#endif //P_FAMILY_SPEAROW +#if P_FAMILY_EKANS egg_moves(EKANS, MOVE_PURSUIT, MOVE_SLAM, @@ -104,7 +134,31 @@ const u16 gEggMoves[] = { MOVE_IRON_TAIL, MOVE_SUCKER_PUNCH, MOVE_SNATCH), +#endif //P_FAMILY_EKANS +#if P_FAMILY_PIKACHU +#if P_GEN_2_CROSS_EVOS + egg_moves(PICHU, + MOVE_REVERSAL, + MOVE_BIDE, + MOVE_PRESENT, + MOVE_ENCORE, + MOVE_DOUBLE_SLAP, + MOVE_WISH, + MOVE_CHARGE, + MOVE_FAKE_OUT, + MOVE_THUNDER_PUNCH, + MOVE_TICKLE, + MOVE_FLAIL, + MOVE_ENDURE, + MOVE_LUCKY_CHANT, + MOVE_BESTOW, + MOVE_DISARMING_VOICE, + MOVE_ELECTRIC_TERRAIN), +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_PIKACHU + +#if P_FAMILY_SANDSHREW egg_moves(SANDSHREW, MOVE_FLAIL, MOVE_COUNTER, @@ -118,7 +172,24 @@ const u16 gEggMoves[] = { MOVE_ROCK_CLIMB, MOVE_ROTOTILLER, MOVE_HONE_CLAWS), +#if P_ALOLAN_FORMS + egg_moves(SANDSHREW_ALOLAN, + MOVE_AMNESIA, + MOVE_CHIP_AWAY, + MOVE_COUNTER, + MOVE_CRUSH_CLAW, + MOVE_CURSE, + MOVE_ENDURE, + MOVE_FLAIL, + MOVE_HONE_CLAWS, + MOVE_ICICLE_CRASH, + MOVE_ICICLE_SPEAR, + MOVE_METAL_CLAW, + MOVE_NIGHT_SLASH), +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_SANDSHREW +#if P_FAMILY_NIDORAN egg_moves(NIDORAN_F, MOVE_SUPERSONIC, MOVE_DISABLE, @@ -150,7 +221,29 @@ const u16 gEggMoves[] = { MOVE_ENDURE, MOVE_CHIP_AWAY, MOVE_VENOM_DRENCH), +#endif //P_FAMILY_NIDORAN +#if P_FAMILY_CLEFAIRY +#if P_GEN_2_CROSS_EVOS + egg_moves(CLEFFA, + MOVE_PRESENT, + MOVE_METRONOME, + MOVE_AMNESIA, + MOVE_BELLY_DRUM, + MOVE_SPLASH, + MOVE_MIMIC, + MOVE_WISH, + MOVE_FAKE_TEARS, + MOVE_COVET, + MOVE_AROMATHERAPY, + MOVE_STORED_POWER, + MOVE_TICKLE, + MOVE_MISTY_TERRAIN, + MOVE_HEAL_PULSE), +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_CLEFAIRY + +#if P_FAMILY_VULPIX egg_moves(VULPIX, MOVE_FEINT_ATTACK, MOVE_HYPNOSIS, @@ -166,7 +259,45 @@ const u16 gEggMoves[] = { MOVE_HEX, MOVE_TAIL_SLAP, MOVE_CAPTIVATE), +#if P_ALOLAN_FORMS + egg_moves(VULPIX_ALOLAN, + MOVE_AGILITY, + MOVE_CHARM, + MOVE_DISABLE, + MOVE_ENCORE, + MOVE_EXTRASENSORY, + MOVE_FLAIL, + MOVE_FREEZE_DRY, + MOVE_HOWL, + MOVE_HYPNOSIS, + MOVE_MOONBLAST, + MOVE_POWER_SWAP, + MOVE_SPITE, + MOVE_SECRET_POWER, + MOVE_TAIL_SLAP), +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_VULPIX +#if P_FAMILY_JIGGLYPUFF +#if P_GEN_2_CROSS_EVOS + egg_moves(IGGLYBUFF, + MOVE_PERISH_SONG, + MOVE_PRESENT, + MOVE_FEINT_ATTACK, + MOVE_WISH, + MOVE_FAKE_TEARS, + MOVE_LAST_RESORT, + MOVE_COVET, + MOVE_GRAVITY, + MOVE_SLEEP_TALK, + MOVE_CAPTIVATE, + MOVE_PUNISHMENT, + MOVE_MISTY_TERRAIN, + MOVE_HEAL_PULSE), +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_JIGGLYPUFF + +#if P_FAMILY_ZUBAT egg_moves(ZUBAT, MOVE_QUICK_ATTACK, MOVE_PURSUIT, @@ -182,7 +313,9 @@ const u16 gEggMoves[] = { MOVE_STEEL_WING, MOVE_DEFOG, MOVE_VENOM_DRENCH), +#endif //P_FAMILY_ZUBAT +#if P_FAMILY_ODDISH egg_moves(ODDISH, MOVE_RAZOR_LEAF, MOVE_FLAIL, @@ -195,7 +328,9 @@ const u16 gEggMoves[] = { MOVE_NATURE_POWER, MOVE_AFTER_YOU, MOVE_STRENGTH_SAP), +#endif //P_FAMILY_ODDISH +#if P_FAMILY_PARAS egg_moves(PARAS, MOVE_SCREECH, MOVE_COUNTER, @@ -214,7 +349,9 @@ const u16 gEggMoves[] = { MOVE_ROTOTILLER, MOVE_FELL_STINGER, MOVE_GRASSY_TERRAIN), +#endif //P_FAMILY_PARAS +#if P_FAMILY_VENONAT egg_moves(VENONAT, MOVE_BATON_PASS, MOVE_SCREECH, @@ -227,7 +364,9 @@ const u16 gEggMoves[] = { MOVE_SECRET_POWER, MOVE_SKILL_SWAP, MOVE_RAGE_POWDER), +#endif //P_FAMILY_VENONAT +#if P_FAMILY_DIGLETT egg_moves(DIGLETT, MOVE_FEINT_ATTACK, MOVE_SCREECH, @@ -242,7 +381,23 @@ const u16 gEggMoves[] = { MOVE_ENDURE, MOVE_FINAL_GAMBIT, MOVE_MEMENTO), +#if P_ALOLAN_FORMS + egg_moves(DIGLETT_ALOLAN, + MOVE_ANCIENT_POWER, + MOVE_BEAT_UP, + MOVE_ENDURE, + MOVE_FEINT_ATTACK, + MOVE_FINAL_GAMBIT, + MOVE_HEADBUTT, + MOVE_MEMENTO, + MOVE_METAL_SOUND, + MOVE_PURSUIT, + MOVE_REVERSAL, + MOVE_THRASH), +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_DIGLETT +#if P_FAMILY_MEOWTH egg_moves(MEOWTH, MOVE_SPITE, MOVE_CHARM, @@ -257,7 +412,33 @@ const u16 gEggMoves[] = { MOVE_SNATCH, MOVE_IRON_TAIL, MOVE_FOUL_PLAY), +#if P_ALOLAN_FORMS + egg_moves(MEOWTH_ALOLAN, + MOVE_AMNESIA, + MOVE_ASSIST, + MOVE_CHARM, + MOVE_COVET, + MOVE_FLAIL, + MOVE_FLATTER, + MOVE_FOUL_PLAY, + MOVE_HYPNOSIS, + MOVE_PARTING_SHOT, + MOVE_PUNISHMENT, + MOVE_SNATCH, + MOVE_SPITE), +#endif //P_ALOLAN_FORMS +#if P_GALARIAN_FORMS + egg_moves(MEOWTH_GALARIAN, + MOVE_SPITE, + MOVE_DOUBLE_EDGE, + MOVE_CURSE, + MOVE_FLAIL, + MOVE_NIGHT_SLASH, + MOVE_COVET), +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MEOWTH +#if P_FAMILY_PSYDUCK egg_moves(PSYDUCK, MOVE_HYPNOSIS, MOVE_PSYBEAM, @@ -274,7 +455,9 @@ const u16 gEggMoves[] = { MOVE_SYNCHRONOISE, MOVE_SIMPLE_BEAM, MOVE_CLEAR_SMOG), +#endif //P_FAMILY_PSYDUCK +#if P_FAMILY_MANKEY egg_moves(MANKEY, MOVE_FORESIGHT, MOVE_MEDITATE, @@ -289,7 +472,9 @@ const u16 gEggMoves[] = { MOVE_SLEEP_TALK, MOVE_NIGHT_SLASH, MOVE_POWER_TRIP), +#endif //P_FAMILY_MANKEY +#if P_FAMILY_GROWLITHE egg_moves(GROWLITHE, MOVE_BODY_SLAM, MOVE_CRUNCH, @@ -305,7 +490,9 @@ const u16 gEggMoves[] = { MOVE_DOUBLE_KICK, MOVE_CLOSE_COMBAT, MOVE_BURN_UP), +#endif //P_FAMILY_GROWLITHE +#if P_FAMILY_POLIWAG egg_moves(POLIWAG, MOVE_MIST, MOVE_SPLASH, @@ -320,7 +507,9 @@ const u16 gEggMoves[] = { MOVE_ENCORE, MOVE_ENDURE, MOVE_WATER_PULSE), +#endif //P_FAMILY_POLIWAG +#if P_FAMILY_ABRA egg_moves(ABRA, MOVE_ENCORE, MOVE_BARRIER, @@ -335,7 +524,9 @@ const u16 gEggMoves[] = { MOVE_PSYCHO_SHIFT, MOVE_ALLY_SWITCH, MOVE_PSYCHIC_TERRAIN), +#endif //P_FAMILY_ABRA +#if P_FAMILY_MACHOP egg_moves(MACHOP, MOVE_MEDITATE, MOVE_ROLLING_KICK, @@ -352,7 +543,9 @@ const u16 gEggMoves[] = { MOVE_KNOCK_OFF, MOVE_TICKLE, MOVE_QUICK_GUARD), +#endif //P_FAMILY_MACHOP +#if P_FAMILY_BELLSPROUT egg_moves(BELLSPROUT, MOVE_ENCORE, MOVE_SYNTHESIS, @@ -370,7 +563,9 @@ const u16 gEggMoves[] = { MOVE_ACID_SPRAY, MOVE_BELCH, MOVE_STRENGTH_SAP), +#endif //P_FAMILY_BELLSPROUT +#if P_FAMILY_TENTACOOL egg_moves(TENTACOOL, MOVE_AURORA_BEAM, MOVE_MIRROR_COAT, @@ -383,7 +578,9 @@ const u16 gEggMoves[] = { MOVE_BUBBLE, MOVE_AQUA_RING, MOVE_TICKLE), +#endif //P_FAMILY_TENTACOOL +#if P_FAMILY_GEODUDE egg_moves(GEODUDE, MOVE_MEGA_PUNCH, MOVE_BLOCK, @@ -395,7 +592,22 @@ const u16 gEggMoves[] = { MOVE_ENDURE, MOVE_AUTOTOMIZE, MOVE_WIDE_GUARD), +#if P_ALOLAN_FORMS + egg_moves(GEODUDE_ALOLAN, + MOVE_AUTOTOMIZE, + MOVE_BLOCK, + MOVE_COUNTER, + MOVE_CURSE, + MOVE_ENDURE, + MOVE_FLAIL, + MOVE_MAGNET_RISE, + MOVE_ROCK_CLIMB, + MOVE_SCREECH, + MOVE_WIDE_GUARD), +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GEODUDE +#if P_FAMILY_PONYTA egg_moves(PONYTA, MOVE_FLAME_WHEEL, MOVE_THRASH, @@ -409,7 +621,18 @@ const u16 gEggMoves[] = { MOVE_CAPTIVATE, MOVE_ALLY_SWITCH, MOVE_HIGH_HORSEPOWER), +#if P_GALARIAN_FORMS + egg_moves(PONYTA_GALARIAN, + MOVE_THRASH, + MOVE_DOUBLE_KICK, + MOVE_HYPNOSIS, + MOVE_DOUBLE_EDGE, + MOVE_HORN_DRILL, + MOVE_MORNING_SUN), +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_PONYTA +#if P_FAMILY_SLOWPOKE egg_moves(SLOWPOKE, MOVE_BELLY_DRUM, MOVE_FUTURE_SIGHT, @@ -422,7 +645,16 @@ const u16 gEggMoves[] = { MOVE_ZEN_HEADBUTT, MOVE_WONDER_ROOM, MOVE_BELCH), +#if P_GALARIAN_FORMS + egg_moves(SLOWPOKE_GALARIAN, + MOVE_BELCH, + MOVE_BELLY_DRUM, + MOVE_BLOCK, + MOVE_STOMP), +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_SLOWPOKE +#if P_FAMILY_FARFETCHD egg_moves(FARFETCHD, MOVE_STEEL_WING, MOVE_FORESIGHT, @@ -442,7 +674,23 @@ const u16 gEggMoves[] = { MOVE_SIMPLE_BEAM, MOVE_FIRST_IMPRESSION, MOVE_FINAL_GAMBIT), +#if P_GALARIAN_FORMS + egg_moves(FARFETCHD_GALARIAN, + MOVE_COUNTER, + MOVE_QUICK_ATTACK, + MOVE_FLAIL, + MOVE_QUICK_GUARD, + MOVE_CURSE, + MOVE_COVET, + MOVE_NIGHT_SLASH, + MOVE_SIMPLE_BEAM, + MOVE_DOUBLE_EDGE, + MOVE_FEINT, + MOVE_SKY_ATTACK), +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_FARFETCHD +#if P_FAMILY_DODUO egg_moves(DODUO, MOVE_QUICK_ATTACK, MOVE_SUPERSONIC, @@ -454,7 +702,9 @@ const u16 gEggMoves[] = { MOVE_BRAVE_BIRD, MOVE_NATURAL_GIFT, MOVE_ASSURANCE), +#endif //P_FAMILY_DODUO +#if P_FAMILY_SEEL egg_moves(SEEL, MOVE_LICK, MOVE_PERISH_SONG, @@ -473,7 +723,9 @@ const u16 gEggMoves[] = { MOVE_SLEEP_TALK, MOVE_BELCH, MOVE_ENTRAINMENT), +#endif //P_FAMILY_SEEL +#if P_FAMILY_GRIMER egg_moves(GRIMER, MOVE_HAZE, MOVE_MEAN_LOOK, @@ -488,7 +740,25 @@ const u16 gEggMoves[] = { MOVE_SCARY_FACE, MOVE_ACID_SPRAY, MOVE_POWER_UP_PUNCH), +#if P_ALOLAN_FORMS + egg_moves(GRIMER_ALOLAN, + MOVE_ASSURANCE, + MOVE_CLEAR_SMOG, + MOVE_CURSE, + MOVE_IMPRISON, + MOVE_MEAN_LOOK, + MOVE_POWER_UP_PUNCH, + MOVE_PURSUIT, + MOVE_SCARY_FACE, + MOVE_SHADOW_SNEAK, + MOVE_SPITE, + MOVE_SPIT_UP, + MOVE_STOCKPILE, + MOVE_SWALLOW), +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GRIMER +#if P_FAMILY_SHELLDER egg_moves(SHELLDER, MOVE_BUBBLE_BEAM, MOVE_TAKE_DOWN, @@ -502,7 +772,9 @@ const u16 gEggMoves[] = { MOVE_AQUA_RING, MOVE_AVALANCHE, MOVE_TWINEEDLE), +#endif //P_FAMILY_SHELLDER +#if P_FAMILY_GASTLY egg_moves(GASTLY, MOVE_PSYWAVE, MOVE_PERISH_SONG, @@ -517,7 +789,9 @@ const u16 gEggMoves[] = { MOVE_CLEAR_SMOG, MOVE_SMOG, MOVE_REFLECT_TYPE), +#endif //P_FAMILY_GASTLY +#if P_FAMILY_ONIX egg_moves(ONIX, MOVE_FLAIL, MOVE_BLOCK, @@ -529,7 +803,9 @@ const u16 gEggMoves[] = { MOVE_STEALTH_ROCK, MOVE_ROTOTILLER, MOVE_WIDE_GUARD), +#endif //P_FAMILY_ONIX +#if P_FAMILY_DROWZEE egg_moves(DROWZEE, MOVE_BARRIER, MOVE_ASSIST, @@ -545,7 +821,9 @@ const u16 gEggMoves[] = { MOVE_SKILL_SWAP, MOVE_POWER_SPLIT, MOVE_PSYCHIC_TERRAIN), +#endif //P_FAMILY_DROWZEE +#if P_FAMILY_KRABBY egg_moves(KRABBY, MOVE_HAZE, MOVE_AMNESIA, @@ -559,7 +837,9 @@ const u16 gEggMoves[] = { MOVE_CHIP_AWAY, MOVE_BIDE, MOVE_ALLY_SWITCH), +#endif //P_FAMILY_KRABBY +#if P_FAMILY_EXEGGCUTE egg_moves(EXEGGCUTE, MOVE_SYNTHESIS, MOVE_MOONLIGHT, @@ -575,7 +855,9 @@ const u16 gEggMoves[] = { MOVE_NATURAL_GIFT, MOVE_BLOCK, MOVE_GRASSY_TERRAIN), +#endif //P_FAMILY_EXEGGCUTE +#if P_FAMILY_CUBONE egg_moves(CUBONE, MOVE_ANCIENT_POWER, MOVE_BELLY_DRUM, @@ -588,7 +870,26 @@ const u16 gEggMoves[] = { MOVE_ENDURE, MOVE_CHIP_AWAY, MOVE_CURSE), +#endif //P_FAMILY_CUBONE +#if P_FAMILY_HITMONS +#if P_GEN_2_CROSS_EVOS + egg_moves(TYROGUE, + MOVE_RAPID_SPIN, + MOVE_HIGH_JUMP_KICK, + MOVE_MACH_PUNCH, + MOVE_MIND_READER, + MOVE_HELPING_HAND, + MOVE_COUNTER, + MOVE_VACUUM_WAVE, + MOVE_BULLET_PUNCH, + MOVE_ENDURE, + MOVE_PURSUIT, + MOVE_FEINT), +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HITMONS + +#if P_FAMILY_LICKITUNG egg_moves(LICKITUNG, MOVE_BELLY_DRUM, MOVE_MAGNITUDE, @@ -603,7 +904,9 @@ const u16 gEggMoves[] = { MOVE_ZEN_HEADBUTT, MOVE_BELCH, MOVE_THRASH), +#endif //P_FAMILY_LICKITUNG +#if P_FAMILY_KOFFING egg_moves(KOFFING, MOVE_SCREECH, MOVE_PSYWAVE, @@ -618,7 +921,9 @@ const u16 gEggMoves[] = { MOVE_SPIT_UP, MOVE_TOXIC_SPIKES, MOVE_VENOM_DRENCH), +#endif //P_FAMILY_KOFFING +#if P_FAMILY_RHYHORN egg_moves(RHYHORN, MOVE_CRUNCH, MOVE_REVERSAL, @@ -636,7 +941,23 @@ const u16 gEggMoves[] = { MOVE_ROTOTILLER, MOVE_METAL_BURST, MOVE_GUARD_SPLIT), +#endif //P_FAMILY_RHYHORN +#if P_FAMILY_CHANSEY +#if P_GEN_4_CROSS_EVOS + egg_moves(HAPPINY, + MOVE_PRESENT, + MOVE_METRONOME, + MOVE_HEAL_BELL, + MOVE_AROMATHERAPY, + MOVE_COUNTER, + MOVE_HELPING_HAND, + MOVE_GRAVITY, + MOVE_LAST_RESORT, + MOVE_MUD_BOMB, + MOVE_NATURAL_GIFT, + MOVE_ENDURE), +#endif //P_GEN_4_CROSS_EVOS egg_moves(CHANSEY, MOVE_PRESENT, MOVE_METRONOME, @@ -649,7 +970,9 @@ const u16 gEggMoves[] = { MOVE_NATURAL_GIFT, MOVE_ENDURE, MOVE_SEISMIC_TOSS), +#endif //P_FAMILY_CHANSEY +#if P_FAMILY_TANGELA egg_moves(TANGELA, MOVE_FLAIL, MOVE_CONFUSION, @@ -664,7 +987,9 @@ const u16 gEggMoves[] = { MOVE_RAGE_POWDER, MOVE_NATURAL_GIFT, MOVE_WAKE_UP_SLAP), +#endif //P_FAMILY_TANGELA +#if P_FAMILY_KANGASKHAN egg_moves(KANGASKHAN, MOVE_STOMP, MOVE_FORESIGHT, @@ -679,7 +1004,9 @@ const u16 gEggMoves[] = { MOVE_TRUMP_CARD, MOVE_UPROAR, MOVE_CIRCLE_THROW), +#endif //P_FAMILY_KANGASKHAN +#if P_FAMILY_HORSEA egg_moves(HORSEA, MOVE_FLAIL, MOVE_AURORA_BEAM, @@ -694,7 +1021,9 @@ const u16 gEggMoves[] = { MOVE_WATER_PULSE, MOVE_CLEAR_SMOG, MOVE_OUTRAGE), +#endif //P_FAMILY_HORSEA +#if P_FAMILY_GOLDEEN egg_moves(GOLDEEN, MOVE_PSYBEAM, MOVE_HAZE, @@ -707,7 +1036,27 @@ const u16 gEggMoves[] = { MOVE_MUD_SHOT, MOVE_SKULL_BASH, MOVE_SIGNAL_BEAM), +#endif //P_FAMILY_GOLDEEN +#if P_FAMILY_MR_MIME +#if P_GEN_4_CROSS_EVOS + egg_moves(MIME_JR, + MOVE_FUTURE_SIGHT, + MOVE_HYPNOSIS, + MOVE_MIMIC, + MOVE_FAKE_OUT, + MOVE_TRICK, + MOVE_CONFUSE_RAY, + MOVE_WAKE_UP_SLAP, + MOVE_TEETER_DANCE, + MOVE_HEALING_WISH, + MOVE_CHARM, + MOVE_NASTY_PLOT, + MOVE_POWER_SPLIT, + MOVE_MAGIC_ROOM, + MOVE_ICY_WIND, + MOVE_PSYCHIC_TERRAIN), +#endif //P_GEN_4_CROSS_EVOS egg_moves(MR_MIME, MOVE_FUTURE_SIGHT, MOVE_HYPNOSIS, @@ -722,7 +1071,16 @@ const u16 gEggMoves[] = { MOVE_MAGIC_ROOM, MOVE_ICY_WIND, MOVE_PSYCHIC_TERRAIN), +#if P_GALARIAN_FORMS + egg_moves(MR_MIME_GALARIAN, + MOVE_FAKE_OUT, + MOVE_CONFUSE_RAY, + MOVE_POWER_SPLIT, + MOVE_TICKLE), +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MR_MIME +#if P_FAMILY_SCYTHER egg_moves(SCYTHER, MOVE_COUNTER, MOVE_BATON_PASS, @@ -735,7 +1093,60 @@ const u16 gEggMoves[] = { MOVE_DEFOG, MOVE_STEEL_WING, MOVE_QUICK_GUARD), +#endif //P_FAMILY_SCYTHER +#if P_FAMILY_JYNX +#if P_GEN_2_CROSS_EVOS + egg_moves(SMOOCHUM, + MOVE_MEDITATE, + MOVE_FAKE_OUT, + MOVE_WISH, + MOVE_ICE_PUNCH, + MOVE_MIRACLE_EYE, + MOVE_NASTY_PLOT, + MOVE_WAKE_UP_SLAP, + MOVE_CAPTIVATE), +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_JYNX + +#if P_FAMILY_ELECTABUZZ +#if P_GEN_2_CROSS_EVOS + egg_moves(ELEKID, + MOVE_KARATE_CHOP, + MOVE_BARRIER, + MOVE_ROLLING_KICK, + MOVE_MEDITATE, + MOVE_CROSS_CHOP, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_DYNAMIC_PUNCH, + MOVE_FEINT, + MOVE_HAMMER_ARM, + MOVE_FOCUS_PUNCH), +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ELECTABUZZ + +#if P_FAMILY_MAGMAR +#if P_GEN_2_CROSS_EVOS + egg_moves(MAGBY, + MOVE_KARATE_CHOP, + MOVE_MEGA_PUNCH, + MOVE_BARRIER, + MOVE_SCREECH, + MOVE_CROSS_CHOP, + MOVE_THUNDER_PUNCH, + MOVE_MACH_PUNCH, + MOVE_DYNAMIC_PUNCH, + MOVE_FLARE_BLITZ, + MOVE_BELLY_DRUM, + MOVE_IRON_TAIL, + MOVE_FOCUS_ENERGY, + MOVE_POWER_SWAP, + MOVE_BELCH), +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_MAGMAR + +#if P_FAMILY_PINSIR egg_moves(PINSIR, MOVE_FURY_ATTACK, MOVE_FLAIL, @@ -746,7 +1157,25 @@ const u16 gEggMoves[] = { MOVE_ME_FIRST, MOVE_BUG_BITE, MOVE_SUPERPOWER), +#endif //P_FAMILY_PINSIR +#if P_FAMILY_TAUROS +#if P_PALDEAN_FORMS + egg_moves(TAUROS_PALDEAN_COMBAT_BREED, + MOVE_CURSE, + MOVE_ENDEAVOR), + + egg_moves(TAUROS_PALDEAN_BLAZE_BREED, + MOVE_CURSE, + MOVE_ENDEAVOR), + + egg_moves(TAUROS_PALDEAN_AQUA_BREED, + MOVE_CURSE, + MOVE_ENDEAVOR), +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_TAUROS + +#if P_FAMILY_LAPRAS egg_moves(LAPRAS, MOVE_FORESIGHT, MOVE_TICKLE, @@ -762,7 +1191,9 @@ const u16 gEggMoves[] = { MOVE_AVALANCHE, MOVE_FUTURE_SIGHT, MOVE_FREEZE_DRY), +#endif //P_FAMILY_LAPRAS +#if P_FAMILY_EEVEE egg_moves(EEVEE, MOVE_CHARM, MOVE_FLAIL, @@ -778,7 +1209,9 @@ const u16 gEggMoves[] = { MOVE_STORED_POWER, MOVE_SYNCHRONOISE, MOVE_CAPTIVATE), +#endif //P_FAMILY_EEVEE +#if P_FAMILY_OMANYTE egg_moves(OMANYTE, MOVE_BUBBLE_BEAM, MOVE_AURORA_BEAM, @@ -794,7 +1227,9 @@ const u16 gEggMoves[] = { MOVE_WATER_PULSE, MOVE_WHIRLPOOL, MOVE_REFLECT_TYPE), +#endif //P_FAMILY_OMANYTE +#if P_FAMILY_KABUTO egg_moves(KABUTO, MOVE_BUBBLE_BEAM, MOVE_AURORA_BEAM, @@ -808,7 +1243,9 @@ const u16 gEggMoves[] = { MOVE_GIGA_DRAIN, MOVE_FORESIGHT, MOVE_TAKE_DOWN), +#endif //P_FAMILY_KABUTO +#if P_FAMILY_AERODACTYL egg_moves(AERODACTYL, MOVE_WHIRLWIND, MOVE_PURSUIT, @@ -820,7 +1257,24 @@ const u16 gEggMoves[] = { MOVE_ROOST, MOVE_TAILWIND, MOVE_WIDE_GUARD), +#endif //P_FAMILY_AERODACTYL +#if P_FAMILY_SNORLAX +#if P_GEN_4_CROSS_EVOS + egg_moves(MUNCHLAX, + MOVE_LICK, + MOVE_CHARM, + MOVE_DOUBLE_EDGE, + MOVE_CURSE, + MOVE_WHIRLWIND, + MOVE_PURSUIT, + MOVE_ZEN_HEADBUTT, + MOVE_COUNTER, + MOVE_NATURAL_GIFT, + MOVE_AFTER_YOU, + MOVE_SELF_DESTRUCT, + MOVE_BELCH), +#endif //P_GEN_4_CROSS_EVOS egg_moves(SNORLAX, MOVE_LICK, MOVE_CHARM, @@ -834,7 +1288,9 @@ const u16 gEggMoves[] = { MOVE_AFTER_YOU, MOVE_BELCH, MOVE_POWER_UP_PUNCH), +#endif //P_FAMILY_SNORLAX +#if P_FAMILY_DRATINI egg_moves(DRATINI, MOVE_MIST, MOVE_HAZE, @@ -847,7 +1303,9 @@ const u16 gEggMoves[] = { MOVE_AQUA_JET, MOVE_DRAGON_PULSE, MOVE_IRON_TAIL), +#endif //P_FAMILY_DRATINI +#if P_FAMILY_CHIKORITA egg_moves(CHIKORITA, MOVE_VINE_WHIP, MOVE_LEECH_SEED, @@ -864,7 +1322,9 @@ const u16 gEggMoves[] = { MOVE_REFRESH, MOVE_HEAL_PULSE, MOVE_GRASSY_TERRAIN), +#endif //P_FAMILY_CHIKORITA +#if P_FAMILY_CYNDAQUIL egg_moves(CYNDAQUIL, MOVE_FURY_SWIPES, MOVE_QUICK_ATTACK, @@ -880,7 +1340,9 @@ const u16 gEggMoves[] = { MOVE_EXTRASENSORY, MOVE_NATURE_POWER, MOVE_FLAME_BURST), +#endif //P_FAMILY_CYNDAQUIL +#if P_FAMILY_TOTODILE egg_moves(TOTODILE, MOVE_CRUNCH, MOVE_THRASH, @@ -896,7 +1358,9 @@ const u16 gEggMoves[] = { MOVE_BLOCK, MOVE_WATER_PULSE, MOVE_FLATTER), +#endif //P_FAMILY_TOTODILE +#if P_FAMILY_SENTRET egg_moves(SENTRET, MOVE_DOUBLE_EDGE, MOVE_PURSUIT, @@ -912,7 +1376,9 @@ const u16 gEggMoves[] = { MOVE_IRON_TAIL, MOVE_CAPTIVATE, MOVE_BABY_DOLL_EYES), +#endif //P_FAMILY_SENTRET +#if P_FAMILY_HOOTHOOT egg_moves(HOOTHOOT, MOVE_MIRROR_MOVE, MOVE_SUPERSONIC, @@ -926,7 +1392,9 @@ const u16 gEggMoves[] = { MOVE_DEFOG, MOVE_MEAN_LOOK, MOVE_HURRICANE), +#endif //P_FAMILY_HOOTHOOT +#if P_FAMILY_LEDYBA egg_moves(LEDYBA, MOVE_PSYBEAM, MOVE_BIDE, @@ -942,7 +1410,9 @@ const u16 gEggMoves[] = { MOVE_TAILWIND, MOVE_ENDURE, MOVE_COUNTER), +#endif //P_FAMILY_LEDYBA +#if P_FAMILY_SPINARAK egg_moves(SPINARAK, MOVE_PSYBEAM, MOVE_DISABLE, @@ -957,7 +1427,9 @@ const u16 gEggMoves[] = { MOVE_NIGHT_SLASH, MOVE_MEGAHORN, MOVE_LUNGE), +#endif //P_FAMILY_SPINARAK +#if P_FAMILY_CHINCHOU egg_moves(CHINCHOU, MOVE_FLAIL, MOVE_SCREECH, @@ -970,56 +1442,9 @@ const u16 gEggMoves[] = { MOVE_BRINE, MOVE_WATER_PULSE, MOVE_SOAK), +#endif //P_FAMILY_CHINCHOU - egg_moves(PICHU, - MOVE_REVERSAL, - MOVE_BIDE, - MOVE_PRESENT, - MOVE_ENCORE, - MOVE_DOUBLE_SLAP, - MOVE_WISH, - MOVE_CHARGE, - MOVE_FAKE_OUT, - MOVE_THUNDER_PUNCH, - MOVE_TICKLE, - MOVE_FLAIL, - MOVE_ENDURE, - MOVE_LUCKY_CHANT, - MOVE_BESTOW, - MOVE_DISARMING_VOICE, - MOVE_ELECTRIC_TERRAIN), - - egg_moves(CLEFFA, - MOVE_PRESENT, - MOVE_METRONOME, - MOVE_AMNESIA, - MOVE_BELLY_DRUM, - MOVE_SPLASH, - MOVE_MIMIC, - MOVE_WISH, - MOVE_FAKE_TEARS, - MOVE_COVET, - MOVE_AROMATHERAPY, - MOVE_STORED_POWER, - MOVE_TICKLE, - MOVE_MISTY_TERRAIN, - MOVE_HEAL_PULSE), - - egg_moves(IGGLYBUFF, - MOVE_PERISH_SONG, - MOVE_PRESENT, - MOVE_FEINT_ATTACK, - MOVE_WISH, - MOVE_FAKE_TEARS, - MOVE_LAST_RESORT, - MOVE_COVET, - MOVE_GRAVITY, - MOVE_SLEEP_TALK, - MOVE_CAPTIVATE, - MOVE_PUNISHMENT, - MOVE_MISTY_TERRAIN, - MOVE_HEAL_PULSE), - +#if P_FAMILY_TOGEPI egg_moves(TOGEPI, MOVE_PRESENT, MOVE_MIRROR_MOVE, @@ -1033,7 +1458,9 @@ const u16 gEggMoves[] = { MOVE_SECRET_POWER, MOVE_STORED_POWER, MOVE_MORNING_SUN), +#endif //P_FAMILY_TOGEPI +#if P_FAMILY_NATU egg_moves(NATU, MOVE_HAZE, MOVE_DRILL_PECK, @@ -1049,7 +1476,9 @@ const u16 gEggMoves[] = { MOVE_SKILL_SWAP, MOVE_SIMPLE_BEAM, MOVE_ALLY_SWITCH), +#endif //P_FAMILY_NATU +#if P_FAMILY_MAREEP egg_moves(MAREEP, MOVE_TAKE_DOWN, MOVE_BODY_SLAM, @@ -1063,7 +1492,24 @@ const u16 gEggMoves[] = { MOVE_AGILITY, MOVE_EERIE_IMPULSE, MOVE_ELECTRIC_TERRAIN), +#endif //P_FAMILY_MAREEP +#if P_FAMILY_MARILL +#if P_GEN_3_CROSS_EVOS + egg_moves(AZURILL, + MOVE_ENCORE, + MOVE_SING, + MOVE_REFRESH, + MOVE_SLAM, + MOVE_TICKLE, + MOVE_FAKE_TEARS, + MOVE_BODY_SLAM, + MOVE_WATER_SPORT, + MOVE_SOAK, + MOVE_MUDDY_WATER, + MOVE_COPYCAT, + MOVE_CAMOUFLAGE), +#endif //P_GEN_3_CROSS_EVOS egg_moves(MARILL, MOVE_PRESENT, MOVE_AMNESIA, @@ -1078,7 +1524,21 @@ const u16 gEggMoves[] = { MOVE_WATER_SPORT, MOVE_MUDDY_WATER, MOVE_CAMOUFLAGE), +#endif //P_FAMILY_MARILL +#if P_FAMILY_SUDOWOODO +#if P_GEN_4_CROSS_EVOS + egg_moves(BONSLY, + MOVE_SELF_DESTRUCT, + MOVE_HEADBUTT, + MOVE_HARDEN, + MOVE_DEFENSE_CURL, + MOVE_ROLLOUT, + MOVE_SAND_TOMB, + MOVE_STEALTH_ROCK, + MOVE_CURSE, + MOVE_ENDURE), +#endif //P_GEN_4_CROSS_EVOS egg_moves(SUDOWOODO, MOVE_SELF_DESTRUCT, MOVE_HEADBUTT, @@ -1089,7 +1549,9 @@ const u16 gEggMoves[] = { MOVE_STEALTH_ROCK, MOVE_CURSE, MOVE_ENDURE), +#endif //P_FAMILY_SUDOWOODO +#if P_FAMILY_HOPPIP egg_moves(HOPPIP, MOVE_CONFUSION, MOVE_ENCORE, @@ -1103,7 +1565,9 @@ const u16 gEggMoves[] = { MOVE_ENDURE, MOVE_GRASSY_TERRAIN, MOVE_STRENGTH_SAP), +#endif //P_FAMILY_HOPPIP +#if P_FAMILY_AIPOM egg_moves(AIPOM, MOVE_COUNTER, MOVE_SCREECH, @@ -1120,7 +1584,9 @@ const u16 gEggMoves[] = { MOVE_SWITCHEROO, MOVE_QUICK_GUARD, MOVE_TAIL_SLAP), +#endif //P_FAMILY_AIPOM +#if P_FAMILY_SUNKERN egg_moves(SUNKERN, MOVE_GRASS_WHISTLE, MOVE_ENCORE, @@ -1135,7 +1601,9 @@ const u16 gEggMoves[] = { MOVE_NATURAL_GIFT, MOVE_MORNING_SUN, MOVE_GRASSY_TERRAIN), +#endif //P_FAMILY_SUNKERN +#if P_FAMILY_YANMA egg_moves(YANMA, MOVE_WHIRLWIND, MOVE_REVERSAL, @@ -1147,7 +1615,9 @@ const u16 gEggMoves[] = { MOVE_PURSUIT, MOVE_DOUBLE_EDGE, MOVE_SECRET_POWER), +#endif //P_FAMILY_YANMA +#if P_FAMILY_WOOPER egg_moves(WOOPER, MOVE_BODY_SLAM, MOVE_ANCIENT_POWER, @@ -1166,7 +1636,24 @@ const u16 gEggMoves[] = { MOVE_GUARD_SWAP, MOVE_EERIE_IMPULSE, MOVE_POWER_UP_PUNCH), +#if P_PALDEAN_FORMS + egg_moves(WOOPER_PALDEAN, + MOVE_ACID_SPRAY, + MOVE_AFTER_YOU, + MOVE_ANCIENT_POWER, + MOVE_COUNTER, + MOVE_CURSE, + MOVE_DOUBLE_KICK, + MOVE_HAZE, + MOVE_MIST, + MOVE_RECOVER, + MOVE_SPIT_UP, + MOVE_STOCKPILE, + MOVE_SWALLOW), +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_WOOPER +#if P_FAMILY_MURKROW egg_moves(MURKROW, MOVE_WHIRLWIND, MOVE_DRILL_PECK, @@ -1184,7 +1671,9 @@ const u16 gEggMoves[] = { MOVE_ASSURANCE, MOVE_FLATTER, MOVE_PUNISHMENT), +#endif //P_FAMILY_MURKROW +#if P_FAMILY_MISDREAVUS egg_moves(MISDREAVUS, MOVE_SCREECH, MOVE_DESTINY_BOND, @@ -1199,7 +1688,9 @@ const u16 gEggMoves[] = { MOVE_SKILL_SWAP, MOVE_WONDER_ROOM, MOVE_ME_FIRST), +#endif //P_FAMILY_MISDREAVUS +#if P_FAMILY_GIRAFARIG egg_moves(GIRAFARIG, MOVE_TAKE_DOWN, MOVE_AMNESIA, @@ -1216,7 +1707,9 @@ const u16 gEggMoves[] = { MOVE_MEAN_LOOK, MOVE_PSYCHIC_TERRAIN, MOVE_PSYCHIC_FANGS), +#endif //P_FAMILY_GIRAFARIG +#if P_FAMILY_PINECO egg_moves(PINECO, MOVE_PIN_MISSILE, MOVE_FLAIL, @@ -1229,7 +1722,9 @@ const u16 gEggMoves[] = { MOVE_POWER_TRICK, MOVE_ENDURE, MOVE_STEALTH_ROCK), +#endif //P_FAMILY_PINECO +#if P_FAMILY_DUNSPARCE egg_moves(DUNSPARCE, MOVE_BIDE, MOVE_ANCIENT_POWER, @@ -1244,7 +1739,9 @@ const u16 gEggMoves[] = { MOVE_SECRET_POWER, MOVE_SLEEP_TALK, MOVE_HEX), +#endif //P_FAMILY_DUNSPARCE +#if P_FAMILY_GLIGAR egg_moves(GLIGAR, MOVE_METAL_CLAW, MOVE_WING_ATTACK, @@ -1260,7 +1757,9 @@ const u16 gEggMoves[] = { MOVE_POWER_TRICK, MOVE_ROCK_CLIMB, MOVE_POISON_TAIL), +#endif //P_FAMILY_GLIGAR +#if P_FAMILY_SNUBBULL egg_moves(SNUBBULL, MOVE_METRONOME, MOVE_FEINT_ATTACK, @@ -1277,7 +1776,9 @@ const u16 gEggMoves[] = { MOVE_DOUBLE_EDGE, MOVE_MIMIC, MOVE_FAKE_TEARS), +#endif //P_FAMILY_SNUBBULL +#if P_FAMILY_QWILFISH egg_moves(QWILFISH, MOVE_FLAIL, MOVE_HAZE, @@ -1289,7 +1790,9 @@ const u16 gEggMoves[] = { MOVE_WATER_PULSE, MOVE_BRINE, MOVE_ACID_SPRAY), +#endif //P_FAMILY_QWILFISH +#if P_FAMILY_SHUCKLE egg_moves(SHUCKLE, MOVE_SWEET_SCENT, MOVE_KNOCK_OFF, @@ -1300,7 +1803,9 @@ const u16 gEggMoves[] = { MOVE_ACID, MOVE_ROCK_BLAST, MOVE_FINAL_GAMBIT), +#endif //P_FAMILY_SHUCKLE +#if P_FAMILY_HERACROSS egg_moves(HERACROSS, MOVE_HARDEN, MOVE_BIDE, @@ -1312,7 +1817,9 @@ const u16 gEggMoves[] = { MOVE_FOCUS_PUNCH, MOVE_MEGAHORN, MOVE_ROCK_BLAST), +#endif //P_FAMILY_HERACROSS +#if P_FAMILY_SNEASEL egg_moves(SNEASEL, MOVE_COUNTER, MOVE_SPITE, @@ -1330,7 +1837,9 @@ const u16 gEggMoves[] = { MOVE_FEINT, MOVE_ICICLE_CRASH, MOVE_THROAT_CHOP), +#endif //P_FAMILY_SNEASEL +#if P_FAMILY_TEDDIURSA egg_moves(TEDDIURSA, MOVE_CRUNCH, MOVE_TAKE_DOWN, @@ -1347,7 +1856,9 @@ const u16 gEggMoves[] = { MOVE_BELLY_DRUM, MOVE_CHIP_AWAY, MOVE_PLAY_ROUGH), +#endif //P_FAMILY_TEDDIURSA +#if P_FAMILY_SLUGMA egg_moves(SLUGMA, MOVE_ACID_ARMOR, MOVE_HEAT_WAVE, @@ -1361,7 +1872,9 @@ const u16 gEggMoves[] = { MOVE_INFERNO, MOVE_EARTH_POWER, MOVE_GUARD_SWAP), +#endif //P_FAMILY_SLUGMA +#if P_FAMILY_SWINUB egg_moves(SWINUB, MOVE_TAKE_DOWN, MOVE_BITE, @@ -1377,7 +1890,9 @@ const u16 gEggMoves[] = { MOVE_STEALTH_ROCK, MOVE_ICICLE_CRASH, MOVE_FREEZE_DRY), +#endif //P_FAMILY_SWINUB +#if P_FAMILY_CORSOLA egg_moves(CORSOLA, MOVE_SCREECH, MOVE_MIST, @@ -1394,7 +1909,18 @@ const u16 gEggMoves[] = { MOVE_HEAD_SMASH, MOVE_CAMOUFLAGE, MOVE_LIQUIDATION), +#if P_GALARIAN_FORMS + egg_moves(CORSOLA_GALARIAN, + MOVE_HAZE, + MOVE_CONFUSE_RAY, + MOVE_NATURE_POWER, + MOVE_DESTINY_BOND, + MOVE_WATER_PULSE, + MOVE_HEAD_SMASH), +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_CORSOLA +#if P_FAMILY_REMORAID egg_moves(REMORAID, MOVE_AURORA_BEAM, MOVE_OCTAZOOKA, @@ -1410,7 +1936,9 @@ const u16 gEggMoves[] = { MOVE_ACID_SPRAY, MOVE_WATER_PULSE, MOVE_ENTRAINMENT), +#endif //P_FAMILY_REMORAID +#if P_FAMILY_DELIBIRD egg_moves(DELIBIRD, MOVE_AURORA_BEAM, MOVE_QUICK_ATTACK, @@ -1427,7 +1955,24 @@ const u16 gEggMoves[] = { MOVE_DESTINY_BOND, MOVE_SPIKES, MOVE_COUNTER), +#endif //P_FAMILY_DELIBIRD +#if P_FAMILY_MANTINE +#if P_GEN_4_CROSS_EVOS + egg_moves(MANTYKE, + MOVE_TWISTER, + MOVE_HYDRO_PUMP, + MOVE_HAZE, + MOVE_SLAM, + MOVE_MUD_SPORT, + MOVE_MIRROR_COAT, + MOVE_WATER_SPORT, + MOVE_SPLASH, + MOVE_SIGNAL_BEAM, + MOVE_WIDE_GUARD, + MOVE_AMNESIA, + MOVE_TAILWIND), +#endif //P_GEN_4_CROSS_EVOS egg_moves(MANTINE, MOVE_TWISTER, MOVE_HYDRO_PUMP, @@ -1439,7 +1984,9 @@ const u16 gEggMoves[] = { MOVE_SPLASH, MOVE_WIDE_GUARD, MOVE_AMNESIA), +#endif //P_FAMILY_MANTINE +#if P_FAMILY_SKARMORY egg_moves(SKARMORY, MOVE_DRILL_PECK, MOVE_PURSUIT, @@ -1451,7 +1998,9 @@ const u16 gEggMoves[] = { MOVE_GUARD_SWAP, MOVE_STEALTH_ROCK, MOVE_ENDURE), +#endif //P_FAMILY_SKARMORY +#if P_FAMILY_HOUNDOUR egg_moves(HOUNDOUR, MOVE_FIRE_SPIN, MOVE_RAGE, @@ -1467,7 +2016,9 @@ const u16 gEggMoves[] = { MOVE_FEINT, MOVE_SUCKER_PUNCH, MOVE_DESTINY_BOND), +#endif //P_FAMILY_HOUNDOUR +#if P_FAMILY_PHANPY egg_moves(PHANPY, MOVE_FOCUS_ENERGY, MOVE_BODY_SLAM, @@ -1482,7 +2033,9 @@ const u16 gEggMoves[] = { MOVE_HEAVY_SLAM, MOVE_PLAY_ROUGH, MOVE_HIGH_HORSEPOWER), +#endif //P_FAMILY_PHANPY +#if P_FAMILY_STANTLER egg_moves(STANTLER, MOVE_SPITE, MOVE_DISABLE, @@ -1495,59 +2048,9 @@ const u16 gEggMoves[] = { MOVE_MUD_SPORT, MOVE_RAGE, MOVE_ME_FIRST), +#endif //P_FAMILY_STANTLER - egg_moves(TYROGUE, - MOVE_RAPID_SPIN, - MOVE_HIGH_JUMP_KICK, - MOVE_MACH_PUNCH, - MOVE_MIND_READER, - MOVE_HELPING_HAND, - MOVE_COUNTER, - MOVE_VACUUM_WAVE, - MOVE_BULLET_PUNCH, - MOVE_ENDURE, - MOVE_PURSUIT, - MOVE_FEINT), - - egg_moves(SMOOCHUM, - MOVE_MEDITATE, - MOVE_FAKE_OUT, - MOVE_WISH, - MOVE_ICE_PUNCH, - MOVE_MIRACLE_EYE, - MOVE_NASTY_PLOT, - MOVE_WAKE_UP_SLAP, - MOVE_CAPTIVATE), - - egg_moves(ELEKID, - MOVE_KARATE_CHOP, - MOVE_BARRIER, - MOVE_ROLLING_KICK, - MOVE_MEDITATE, - MOVE_CROSS_CHOP, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_DYNAMIC_PUNCH, - MOVE_FEINT, - MOVE_HAMMER_ARM, - MOVE_FOCUS_PUNCH), - - egg_moves(MAGBY, - MOVE_KARATE_CHOP, - MOVE_MEGA_PUNCH, - MOVE_BARRIER, - MOVE_SCREECH, - MOVE_CROSS_CHOP, - MOVE_THUNDER_PUNCH, - MOVE_MACH_PUNCH, - MOVE_DYNAMIC_PUNCH, - MOVE_FLARE_BLITZ, - MOVE_BELLY_DRUM, - MOVE_IRON_TAIL, - MOVE_FOCUS_ENERGY, - MOVE_POWER_SWAP, - MOVE_BELCH), - +#if P_FAMILY_MILTANK egg_moves(MILTANK, MOVE_PRESENT, MOVE_REVERSAL, @@ -1563,7 +2066,9 @@ const u16 gEggMoves[] = { MOVE_NATURAL_GIFT, MOVE_HEART_STAMP, MOVE_BELCH), +#endif //P_FAMILY_MILTANK +#if P_FAMILY_LARVITAR egg_moves(LARVITAR, MOVE_PURSUIT, MOVE_STOMP, @@ -1577,7 +2082,9 @@ const u16 gEggMoves[] = { MOVE_IRON_HEAD, MOVE_STEALTH_ROCK, MOVE_IRON_TAIL), +#endif //P_FAMILY_LARVITAR +#if P_FAMILY_TREECKO egg_moves(TREECKO, MOVE_CRUNCH, MOVE_MUD_SPORT, @@ -1595,7 +2102,9 @@ const u16 gEggMoves[] = { MOVE_BULLET_SEED, MOVE_NATURAL_GIFT, MOVE_GRASSY_TERRAIN), +#endif //P_FAMILY_TREECKO +#if P_FAMILY_TORCHIC egg_moves(TORCHIC, MOVE_COUNTER, MOVE_REVERSAL, @@ -1611,7 +2120,9 @@ const u16 gEggMoves[] = { MOVE_CURSE, MOVE_FLAME_BURST, MOVE_LOW_KICK), +#endif //P_FAMILY_TORCHIC +#if P_FAMILY_MUDKIP egg_moves(MUDKIP, MOVE_REFRESH, MOVE_UPROAR, @@ -1630,7 +2141,9 @@ const u16 gEggMoves[] = { MOVE_AVALANCHE, MOVE_WIDE_GUARD, MOVE_BARRIER), +#endif //P_FAMILY_MUDKIP +#if P_FAMILY_POOCHYENA egg_moves(POOCHYENA, MOVE_ASTONISH, MOVE_POISON_FANG, @@ -1645,7 +2158,9 @@ const u16 gEggMoves[] = { MOVE_SNATCH, MOVE_SLEEP_TALK, MOVE_PLAY_ROUGH), +#endif //P_FAMILY_POOCHYENA +#if P_FAMILY_ZIGZAGOON egg_moves(ZIGZAGOON, MOVE_CHARM, MOVE_PURSUIT, @@ -1657,7 +2172,15 @@ const u16 gEggMoves[] = { MOVE_ROCK_CLIMB, MOVE_SIMPLE_BEAM, MOVE_EXTREME_SPEED), +#if P_GALARIAN_FORMS + egg_moves(ZIGZAGOON_GALARIAN, + MOVE_PARTING_SHOT, + MOVE_QUICK_GUARD, + MOVE_KNOCK_OFF), +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZIGZAGOON +#if P_FAMILY_LOTAD egg_moves(LOTAD, MOVE_SYNTHESIS, MOVE_RAZOR_LEAF, @@ -1669,7 +2192,9 @@ const u16 gEggMoves[] = { MOVE_COUNTER, MOVE_GIGA_DRAIN, MOVE_TEETER_DANCE), +#endif //P_FAMILY_LOTAD +#if P_FAMILY_SEEDOT egg_moves(SEEDOT, MOVE_LEECH_SEED, MOVE_AMNESIA, @@ -1684,7 +2209,9 @@ const u16 gEggMoves[] = { MOVE_BEAT_UP, MOVE_BULLET_SEED, MOVE_GRASSY_TERRAIN), +#endif //P_FAMILY_SEEDOT +#if P_FAMILY_TAILLOW egg_moves(TAILLOW, MOVE_PURSUIT, MOVE_SUPERSONIC, @@ -1699,7 +2226,9 @@ const u16 gEggMoves[] = { MOVE_DEFOG, MOVE_BOOMBURST, MOVE_HURRICANE), +#endif //P_FAMILY_TAILLOW +#if P_FAMILY_WINGULL egg_moves(WINGULL, MOVE_MIST, MOVE_TWISTER, @@ -1712,7 +2241,9 @@ const u16 gEggMoves[] = { MOVE_ROOST, MOVE_SOAK, MOVE_WIDE_GUARD), +#endif //P_FAMILY_WINGULL +#if P_FAMILY_RALTS egg_moves(RALTS, MOVE_DISABLE, MOVE_MEAN_LOOK, @@ -1726,7 +2257,9 @@ const u16 gEggMoves[] = { MOVE_SKILL_SWAP, MOVE_MISTY_TERRAIN, MOVE_ALLY_SWITCH), +#endif //P_FAMILY_RALTS +#if P_FAMILY_SURSKIT egg_moves(SURSKIT, MOVE_FORESIGHT, MOVE_MUD_SHOT, @@ -1740,7 +2273,9 @@ const u16 gEggMoves[] = { MOVE_FELL_STINGER, MOVE_POWER_SPLIT, MOVE_LUNGE), +#endif //P_FAMILY_SURSKIT +#if P_FAMILY_SHROOMISH egg_moves(SHROOMISH, MOVE_FAKE_TEARS, MOVE_CHARM, @@ -1752,7 +2287,9 @@ const u16 gEggMoves[] = { MOVE_FOCUS_PUNCH, MOVE_NATURAL_GIFT, MOVE_DRAIN_PUNCH), +#endif //P_FAMILY_SHROOMISH +#if P_FAMILY_SLAKOTH egg_moves(SLAKOTH, MOVE_PURSUIT, MOVE_SLASH, @@ -1765,7 +2302,9 @@ const u16 gEggMoves[] = { MOVE_NIGHT_SLASH, MOVE_AFTER_YOU, MOVE_TICKLE), +#endif //P_FAMILY_SLAKOTH +#if P_FAMILY_NINCADA egg_moves(NINCADA, MOVE_ENDURE, MOVE_FEINT_ATTACK, @@ -1775,7 +2314,9 @@ const u16 gEggMoves[] = { MOVE_NIGHT_SLASH, MOVE_BUG_BITE, MOVE_FINAL_GAMBIT), +#endif //P_FAMILY_NINCADA +#if P_FAMILY_WHISMUR egg_moves(WHISMUR, MOVE_TAKE_DOWN, MOVE_SNORE, @@ -1788,7 +2329,9 @@ const u16 gEggMoves[] = { MOVE_CIRCLE_THROW, MOVE_DISARMING_VOICE, MOVE_WHIRLWIND), +#endif //P_FAMILY_WHISMUR +#if P_FAMILY_MAKUHITA egg_moves(MAKUHITA, MOVE_FEINT_ATTACK, MOVE_DETECT, @@ -1804,21 +2347,9 @@ const u16 gEggMoves[] = { MOVE_WIDE_GUARD, MOVE_FOCUS_PUNCH, MOVE_CHIP_AWAY), +#endif //P_FAMILY_MAKUHITA - egg_moves(AZURILL, - MOVE_ENCORE, - MOVE_SING, - MOVE_REFRESH, - MOVE_SLAM, - MOVE_TICKLE, - MOVE_FAKE_TEARS, - MOVE_BODY_SLAM, - MOVE_WATER_SPORT, - MOVE_SOAK, - MOVE_MUDDY_WATER, - MOVE_COPYCAT, - MOVE_CAMOUFLAGE), - +#if P_FAMILY_NOSEPASS egg_moves(NOSEPASS, MOVE_MAGNITUDE, MOVE_ROLLOUT, @@ -1827,7 +2358,9 @@ const u16 gEggMoves[] = { MOVE_STEALTH_ROCK, MOVE_ENDURE, MOVE_WIDE_GUARD), +#endif //P_FAMILY_NOSEPASS +#if P_FAMILY_SKITTY egg_moves(SKITTY, MOVE_HELPING_HAND, MOVE_UPROAR, @@ -1843,7 +2376,9 @@ const u16 gEggMoves[] = { MOVE_SIMPLE_BEAM, MOVE_CAPTIVATE, MOVE_COSMIC_POWER), +#endif //P_FAMILY_SKITTY +#if P_FAMILY_SABLEYE egg_moves(SABLEYE, MOVE_RECOVER, MOVE_MOONLIGHT, @@ -1856,7 +2391,9 @@ const u16 gEggMoves[] = { MOVE_MEAN_LOOK, MOVE_METAL_BURST, MOVE_IMPRISON), +#endif //P_FAMILY_SABLEYE +#if P_FAMILY_MAWILE egg_moves(MAWILE, MOVE_POISON_FANG, MOVE_ANCIENT_POWER, @@ -1873,7 +2410,9 @@ const u16 gEggMoves[] = { MOVE_MISTY_TERRAIN, MOVE_SEISMIC_TOSS, MOVE_POWER_UP_PUNCH), +#endif //P_FAMILY_MAWILE +#if P_FAMILY_ARON egg_moves(ARON, MOVE_ENDEAVOR, MOVE_BODY_SLAM, @@ -1887,7 +2426,9 @@ const u16 gEggMoves[] = { MOVE_SUPERPOWER, MOVE_STEALTH_ROCK, MOVE_REVERSAL), +#endif //P_FAMILY_ARON +#if P_FAMILY_MEDITITE egg_moves(MEDITITE, MOVE_FIRE_PUNCH, MOVE_THUNDER_PUNCH, @@ -1903,7 +2444,9 @@ const u16 gEggMoves[] = { MOVE_DRAIN_PUNCH, MOVE_SECRET_POWER, MOVE_QUICK_GUARD), +#endif //P_FAMILY_MEDITITE +#if P_FAMILY_ELECTRIKE egg_moves(ELECTRIKE, MOVE_CRUNCH, MOVE_HEADBUTT, @@ -1919,7 +2462,9 @@ const u16 gEggMoves[] = { MOVE_SHOCK_WAVE, MOVE_FLAME_BURST, MOVE_EERIE_IMPULSE), +#endif //P_FAMILY_ELECTRIKE +#if P_FAMILY_PLUSLE egg_moves(PLUSLE, MOVE_WISH, MOVE_SING, @@ -1929,7 +2474,9 @@ const u16 gEggMoves[] = { MOVE_CHARM, MOVE_FAKE_TEARS, MOVE_TEARFUL_LOOK), +#endif //P_FAMILY_PLUSLE +#if P_FAMILY_MINUN egg_moves(MINUN, MOVE_WISH, MOVE_SING, @@ -1939,7 +2486,9 @@ const u16 gEggMoves[] = { MOVE_CHARM, MOVE_FAKE_TEARS, MOVE_TEARFUL_LOOK), +#endif //P_FAMILY_MINUN +#if P_FAMILY_VOLBEAT_ILLUMISE egg_moves(VOLBEAT, MOVE_BATON_PASS, MOVE_SILVER_WIND, @@ -1960,7 +2509,25 @@ const u16 gEggMoves[] = { MOVE_FAKE_TEARS, MOVE_CONFUSE_RAY, MOVE_AROMATHERAPY), +#endif //P_FAMILY_VOLBEAT_ILLUMISE +#if P_FAMILY_ROSELIA +#if P_GEN_4_CROSS_EVOS + egg_moves(BUDEW, + MOVE_SPIKES, + MOVE_SYNTHESIS, + MOVE_PIN_MISSILE, + MOVE_COTTON_SPORE, + MOVE_SLEEP_POWDER, + MOVE_RAZOR_LEAF, + MOVE_MIND_READER, + MOVE_LEAF_STORM, + MOVE_EXTRASENSORY, + MOVE_SEED_BOMB, + MOVE_GIGA_DRAIN, + MOVE_NATURAL_GIFT, + MOVE_GRASS_WHISTLE), +#endif //P_GEN_4_CROSS_EVOS egg_moves(ROSELIA, MOVE_SPIKES, MOVE_SYNTHESIS, @@ -1976,7 +2543,9 @@ const u16 gEggMoves[] = { MOVE_GRASS_WHISTLE, MOVE_BULLET_SEED, MOVE_POWER_WHIP), +#endif //P_FAMILY_ROSELIA +#if P_FAMILY_GULPIN egg_moves(GULPIN, MOVE_ACID_ARMOR, MOVE_SMOG, @@ -1986,7 +2555,9 @@ const u16 gEggMoves[] = { MOVE_MUD_SLAP, MOVE_GUNK_SHOT, MOVE_VENOM_DRENCH), +#endif //P_FAMILY_GULPIN +#if P_FAMILY_CARVANHA egg_moves(CARVANHA, MOVE_HYDRO_PUMP, MOVE_DOUBLE_EDGE, @@ -1996,7 +2567,9 @@ const u16 gEggMoves[] = { MOVE_BRINE, MOVE_DESTINY_BOND, MOVE_PSYCHIC_FANGS), +#endif //P_FAMILY_CARVANHA +#if P_FAMILY_WAILMER egg_moves(WAILMER, MOVE_DOUBLE_EDGE, MOVE_THRASH, @@ -2011,7 +2584,9 @@ const u16 gEggMoves[] = { MOVE_SOAK, MOVE_ZEN_HEADBUTT, MOVE_CLEAR_SMOG), +#endif //P_FAMILY_WAILMER +#if P_FAMILY_NUMEL egg_moves(NUMEL, MOVE_HOWL, MOVE_SCARY_FACE, @@ -2030,7 +2605,9 @@ const u16 gEggMoves[] = { MOVE_IRON_HEAD, MOVE_GROWTH, MOVE_HEAVY_SLAM), +#endif //P_FAMILY_NUMEL +#if P_FAMILY_TORKOAL egg_moves(TORKOAL, MOVE_ERUPTION, MOVE_ENDURE, @@ -2041,7 +2618,9 @@ const u16 gEggMoves[] = { MOVE_FLAME_BURST, MOVE_CLEAR_SMOG, MOVE_SUPERPOWER), +#endif //P_FAMILY_TORKOAL +#if P_FAMILY_SPOINK egg_moves(SPOINK, MOVE_FUTURE_SIGHT, MOVE_EXTRASENSORY, @@ -2054,7 +2633,9 @@ const u16 gEggMoves[] = { MOVE_LUCKY_CHANT, MOVE_ENDURE, MOVE_SIMPLE_BEAM), +#endif //P_FAMILY_SPOINK +#if P_FAMILY_SPINDA egg_moves(SPINDA, MOVE_ENCORE, MOVE_ASSIST, @@ -2073,7 +2654,9 @@ const u16 gEggMoves[] = { MOVE_PSYCHO_SHIFT, MOVE_GUARD_SPLIT, MOVE_SPOTLIGHT), +#endif //P_FAMILY_SPINDA +#if P_FAMILY_TRAPINCH egg_moves(TRAPINCH, MOVE_FOCUS_ENERGY, MOVE_QUICK_ATTACK, @@ -2085,7 +2668,9 @@ const u16 gEggMoves[] = { MOVE_EARTH_POWER, MOVE_BUG_BITE, MOVE_SIGNAL_BEAM), +#endif //P_FAMILY_TRAPINCH +#if P_FAMILY_CACNEA egg_moves(CACNEA, MOVE_GRASS_WHISTLE, MOVE_ACID, @@ -2105,7 +2690,9 @@ const u16 gEggMoves[] = { MOVE_BELCH, MOVE_ROTOTILLER, MOVE_POWER_UP_PUNCH), +#endif //P_FAMILY_CACNEA +#if P_FAMILY_SWABLU egg_moves(SWABLU, MOVE_AGILITY, MOVE_HAZE, @@ -2118,7 +2705,9 @@ const u16 gEggMoves[] = { MOVE_HYPER_VOICE, MOVE_STEEL_WING, MOVE_PLAY_ROUGH), +#endif //P_FAMILY_SWABLU +#if P_FAMILY_ZANGOOSE egg_moves(ZANGOOSE, MOVE_FLAIL, MOVE_DOUBLE_KICK, @@ -2135,7 +2724,9 @@ const u16 gEggMoves[] = { MOVE_FEINT, MOVE_QUICK_GUARD, MOVE_BELLY_DRUM), +#endif //P_FAMILY_ZANGOOSE +#if P_FAMILY_SEVIPER egg_moves(SEVIPER, MOVE_STOCKPILE, MOVE_SWALLOW, @@ -2149,7 +2740,9 @@ const u16 gEggMoves[] = { MOVE_WRING_OUT, MOVE_PUNISHMENT, MOVE_FINAL_GAMBIT), +#endif //P_FAMILY_SEVIPER +#if P_FAMILY_BARBOACH egg_moves(BARBOACH, MOVE_THRASH, MOVE_WHIRLPOOL, @@ -2161,7 +2754,9 @@ const u16 gEggMoves[] = { MOVE_EARTH_POWER, MOVE_MUD_SHOT, MOVE_MUDDY_WATER), +#endif //P_FAMILY_BARBOACH +#if P_FAMILY_CORPHISH egg_moves(CORPHISH, MOVE_MUD_SPORT, MOVE_ENDEAVOR, @@ -2176,7 +2771,9 @@ const u16 gEggMoves[] = { MOVE_DOUBLE_EDGE, MOVE_AQUA_JET, MOVE_SWITCHEROO), +#endif //P_FAMILY_CORPHISH +#if P_FAMILY_LILEEP egg_moves(LILEEP, MOVE_BARRIER, MOVE_RECOVER, @@ -2187,7 +2784,9 @@ const u16 gEggMoves[] = { MOVE_MEGA_DRAIN, MOVE_ENDURE, MOVE_STEALTH_ROCK), +#endif //P_FAMILY_LILEEP +#if P_FAMILY_ANORITH egg_moves(ANORITH, MOVE_RAPID_SPIN, MOVE_KNOCK_OFF, @@ -2198,7 +2797,9 @@ const u16 gEggMoves[] = { MOVE_IRON_DEFENSE, MOVE_WATER_PULSE, MOVE_AQUA_JET), +#endif //P_FAMILY_ANORITH +#if P_FAMILY_FEEBAS egg_moves(FEEBAS, MOVE_MIRROR_COAT, MOVE_DRAGON_BREATH, @@ -2212,7 +2813,9 @@ const u16 gEggMoves[] = { MOVE_IRON_TAIL, MOVE_DRAGON_PULSE, MOVE_CAPTIVATE), +#endif //P_FAMILY_FEEBAS +#if P_FAMILY_CASTFORM egg_moves(CASTFORM, MOVE_FUTURE_SIGHT, MOVE_LUCKY_CHANT, @@ -2224,7 +2827,9 @@ const u16 gEggMoves[] = { MOVE_REFLECT_TYPE, MOVE_GUARD_SWAP, MOVE_COSMIC_POWER), +#endif //P_FAMILY_CASTFORM +#if P_FAMILY_KECLEON egg_moves(KECLEON, MOVE_DISABLE, MOVE_MAGIC_COAT, @@ -2238,7 +2843,9 @@ const u16 gEggMoves[] = { MOVE_FOUL_PLAY, MOVE_CAMOUFLAGE, MOVE_POWER_UP_PUNCH), +#endif //P_FAMILY_KECLEON +#if P_FAMILY_SHUPPET egg_moves(SHUPPET, MOVE_DISABLE, MOVE_DESTINY_BOND, @@ -2251,7 +2858,9 @@ const u16 gEggMoves[] = { MOVE_OMINOUS_WIND, MOVE_GUNK_SHOT, MOVE_PHANTOM_FORCE), +#endif //P_FAMILY_SHUPPET +#if P_FAMILY_DUSKULL egg_moves(DUSKULL, MOVE_IMPRISON, MOVE_DESTINY_BOND, @@ -2263,7 +2872,9 @@ const u16 gEggMoves[] = { MOVE_DARK_PULSE, MOVE_SKILL_SWAP, MOVE_HAZE), +#endif //P_FAMILY_DUSKULL +#if P_FAMILY_TROPIUS egg_moves(TROPIUS, MOVE_HEADBUTT, MOVE_SLAM, @@ -2278,7 +2889,21 @@ const u16 gEggMoves[] = { MOVE_BULLET_SEED, MOVE_NATURAL_GIFT, MOVE_DRAGON_HAMMER), +#endif //P_FAMILY_TROPIUS +#if P_FAMILY_CHIMECHO +#if P_GEN_4_CROSS_EVOS + egg_moves(CHINGLING, + MOVE_DISABLE, + MOVE_CURSE, + MOVE_HYPNOSIS, + MOVE_WISH, + MOVE_FUTURE_SIGHT, + MOVE_RECOVER, + MOVE_STORED_POWER, + MOVE_SKILL_SWAP, + MOVE_COSMIC_POWER), +#endif //P_GEN_4_CROSS_EVOS egg_moves(CHIMECHO, MOVE_DISABLE, MOVE_CURSE, @@ -2291,7 +2916,9 @@ const u16 gEggMoves[] = { MOVE_COSMIC_POWER, MOVE_CRAFTY_SHIELD, MOVE_PERISH_SONG), +#endif //P_FAMILY_CHIMECHO +#if P_FAMILY_ABSOL egg_moves(ABSOL, MOVE_BATON_PASS, MOVE_FEINT_ATTACK, @@ -2308,7 +2935,9 @@ const u16 gEggMoves[] = { MOVE_HEX, MOVE_PERISH_SONG, MOVE_PLAY_ROUGH), +#endif //P_FAMILY_ABSOL +#if P_FAMILY_SNORUNT egg_moves(SNORUNT, MOVE_BLOCK, MOVE_SPIKES, @@ -2320,7 +2949,9 @@ const u16 gEggMoves[] = { MOVE_HEX, MOVE_FAKE_TEARS, MOVE_SWITCHEROO), +#endif //P_FAMILY_SNORUNT +#if P_FAMILY_SPHEAL egg_moves(SPHEAL, MOVE_WATER_SPORT, MOVE_STOCKPILE, @@ -2335,7 +2966,9 @@ const u16 gEggMoves[] = { MOVE_SLEEP_TALK, MOVE_WATER_PULSE, MOVE_BELLY_DRUM), +#endif //P_FAMILY_SPHEAL +#if P_FAMILY_CLAMPERL egg_moves(CLAMPERL, MOVE_REFRESH, MOVE_MUD_SPORT, @@ -2348,7 +2981,9 @@ const u16 gEggMoves[] = { MOVE_WATER_PULSE, MOVE_BRINE, MOVE_ENDURE), +#endif //P_FAMILY_CLAMPERL +#if P_FAMILY_RELICANTH egg_moves(RELICANTH, MOVE_MAGNITUDE, MOVE_SKULL_BASH, @@ -2362,7 +2997,9 @@ const u16 gEggMoves[] = { MOVE_MUD_SHOT, MOVE_BRINE, MOVE_ZEN_HEADBUTT), +#endif //P_FAMILY_RELICANTH +#if P_FAMILY_LUVDISC egg_moves(LUVDISC, MOVE_SPLASH, MOVE_SUPERSONIC, @@ -2374,7 +3011,9 @@ const u16 gEggMoves[] = { MOVE_HEAL_PULSE, MOVE_BRINE, MOVE_ENTRAINMENT), +#endif //P_FAMILY_LUVDISC +#if P_FAMILY_BAGON egg_moves(BAGON, MOVE_HYDRO_PUMP, MOVE_THRASH, @@ -2386,8 +3025,9 @@ const u16 gEggMoves[] = { MOVE_DRAGON_PULSE, MOVE_ENDURE, MOVE_DEFENSE_CURL), +#endif //P_FAMILY_BAGON -#if P_GEN_4_POKEMON == TRUE +#if P_FAMILY_TURTWIG egg_moves(TURTWIG, MOVE_WORRY_SEED, MOVE_GROWTH, @@ -2406,7 +3046,9 @@ const u16 gEggMoves[] = { MOVE_WIDE_GUARD, MOVE_GRASSY_TERRAIN, MOVE_HEAVY_SLAM), +#endif //P_FAMILY_TURTWIG +#if P_FAMILY_CHIMCHAR egg_moves(CHIMCHAR, MOVE_FIRE_PUNCH, MOVE_THUNDER_PUNCH, @@ -2423,7 +3065,9 @@ const u16 gEggMoves[] = { MOVE_FOCUS_PUNCH, MOVE_SUBMISSION, MOVE_POWER_UP_PUNCH), +#endif //P_FAMILY_CHIMCHAR +#if P_FAMILY_PIPLUP egg_moves(PIPLUP, MOVE_DOUBLE_HIT, MOVE_SUPERSONIC, @@ -2439,7 +3083,9 @@ const u16 gEggMoves[] = { MOVE_BIDE, MOVE_ICY_WIND, MOVE_POWER_TRIP), +#endif //P_FAMILY_PIPLUP +#if P_FAMILY_STARLY egg_moves(STARLY, MOVE_FEATHER_DANCE, MOVE_FURY_ATTACK, @@ -2454,7 +3100,9 @@ const u16 gEggMoves[] = { MOVE_DETECT, MOVE_REVENGE, MOVE_MIRROR_MOVE), +#endif //P_FAMILY_STARLY +#if P_FAMILY_BIDOOF egg_moves(BIDOOF, MOVE_QUICK_ATTACK, MOVE_WATER_SPORT, @@ -2469,7 +3117,9 @@ const u16 gEggMoves[] = { MOVE_ENDURE, MOVE_SKULL_BASH, MOVE_MUD_SPORT), +#endif //P_FAMILY_BIDOOF +#if P_FAMILY_SHINX egg_moves(SHINX, MOVE_ICE_FANG, MOVE_FIRE_FANG, @@ -2485,22 +3135,9 @@ const u16 gEggMoves[] = { MOVE_HELPING_HAND, MOVE_EERIE_IMPULSE, MOVE_FAKE_TEARS), +#endif //P_FAMILY_SHINX - egg_moves(BUDEW, - MOVE_SPIKES, - MOVE_SYNTHESIS, - MOVE_PIN_MISSILE, - MOVE_COTTON_SPORE, - MOVE_SLEEP_POWDER, - MOVE_RAZOR_LEAF, - MOVE_MIND_READER, - MOVE_LEAF_STORM, - MOVE_EXTRASENSORY, - MOVE_SEED_BOMB, - MOVE_GIGA_DRAIN, - MOVE_NATURAL_GIFT, - MOVE_GRASS_WHISTLE), - +#if P_FAMILY_CRANIDOS egg_moves(CRANIDOS, MOVE_CRUNCH, MOVE_THRASH, @@ -2513,7 +3150,9 @@ const u16 gEggMoves[] = { MOVE_CURSE, MOVE_IRON_TAIL, MOVE_IRON_HEAD), +#endif //P_FAMILY_CRANIDOS +#if P_FAMILY_SHIELDON egg_moves(SHIELDON, MOVE_HEADBUTT, MOVE_SCARY_FACE, @@ -2528,7 +3167,9 @@ const u16 gEggMoves[] = { MOVE_STEALTH_ROCK, MOVE_WIDE_GUARD, MOVE_GUARD_SPLIT), +#endif //P_FAMILY_SHIELDON +#if P_FAMILY_PACHIRISU egg_moves(PACHIRISU, MOVE_COVET, MOVE_BITE, @@ -2544,7 +3185,9 @@ const u16 gEggMoves[] = { MOVE_BESTOW, MOVE_ION_DELUGE, MOVE_BABY_DOLL_EYES), +#endif //P_FAMILY_PACHIRISU +#if P_FAMILY_BUIZEL egg_moves(BUIZEL, MOVE_MUD_SLAP, MOVE_HEADBUTT, @@ -2561,7 +3204,9 @@ const u16 gEggMoves[] = { MOVE_TAIL_SLAP, MOVE_SOAK, MOVE_HELPING_HAND), +#endif //P_FAMILY_BUIZEL +#if P_FAMILY_CHERUBI egg_moves(CHERUBI, MOVE_RAZOR_LEAF, MOVE_SWEET_SCENT, @@ -2578,8 +3223,10 @@ const u16 gEggMoves[] = { MOVE_ROLLOUT, MOVE_FLOWER_SHIELD, MOVE_GRASSY_TERRAIN), +#endif //P_FAMILY_CHERUBI - egg_moves(SHELLOS, +#if P_FAMILY_SHELLOS + egg_moves(SHELLOS_WEST_SEA, MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_STOCKPILE, @@ -2596,7 +3243,9 @@ const u16 gEggMoves[] = { MOVE_BRINE, MOVE_MIST, MOVE_ACID_ARMOR), +#endif //P_FAMILY_SHELLOS +#if P_FAMILY_DRIFLOON egg_moves(DRIFLOON, MOVE_MEMENTO, MOVE_BODY_SLAM, @@ -2608,7 +3257,9 @@ const u16 gEggMoves[] = { MOVE_CLEAR_SMOG, MOVE_DEFOG, MOVE_TAILWIND), +#endif //P_FAMILY_DRIFLOON +#if P_FAMILY_BUNEARY egg_moves(BUNEARY, MOVE_FAKE_TEARS, MOVE_FAKE_OUT, @@ -2629,7 +3280,9 @@ const u16 gEggMoves[] = { MOVE_COSMIC_POWER, MOVE_MUD_SPORT, MOVE_POWER_UP_PUNCH), +#endif //P_FAMILY_BUNEARY +#if P_FAMILY_GLAMEOW egg_moves(GLAMEOW, MOVE_BITE, MOVE_TAIL_WHIP, @@ -2641,18 +3294,9 @@ const u16 gEggMoves[] = { MOVE_SNATCH, MOVE_WAKE_UP_SLAP, MOVE_LAST_RESORT), +#endif //P_FAMILY_GLAMEOW - egg_moves(CHINGLING, - MOVE_DISABLE, - MOVE_CURSE, - MOVE_HYPNOSIS, - MOVE_WISH, - MOVE_FUTURE_SIGHT, - MOVE_RECOVER, - MOVE_STORED_POWER, - MOVE_SKILL_SWAP, - MOVE_COSMIC_POWER), - +#if P_FAMILY_STUNKY egg_moves(STUNKY, MOVE_PURSUIT, MOVE_LEER, @@ -2667,48 +3311,9 @@ const u16 gEggMoves[] = { MOVE_FOUL_PLAY, MOVE_FLAME_BURST, MOVE_PLAY_ROUGH), +#endif //P_FAMILY_STUNKY - egg_moves(BONSLY, - MOVE_SELF_DESTRUCT, - MOVE_HEADBUTT, - MOVE_HARDEN, - MOVE_DEFENSE_CURL, - MOVE_ROLLOUT, - MOVE_SAND_TOMB, - MOVE_STEALTH_ROCK, - MOVE_CURSE, - MOVE_ENDURE), - - egg_moves(MIME_JR, - MOVE_FUTURE_SIGHT, - MOVE_HYPNOSIS, - MOVE_MIMIC, - MOVE_FAKE_OUT, - MOVE_TRICK, - MOVE_CONFUSE_RAY, - MOVE_WAKE_UP_SLAP, - MOVE_TEETER_DANCE, - MOVE_HEALING_WISH, - MOVE_CHARM, - MOVE_NASTY_PLOT, - MOVE_POWER_SPLIT, - MOVE_MAGIC_ROOM, - MOVE_ICY_WIND, - MOVE_PSYCHIC_TERRAIN), - - egg_moves(HAPPINY, - MOVE_PRESENT, - MOVE_METRONOME, - MOVE_HEAL_BELL, - MOVE_AROMATHERAPY, - MOVE_COUNTER, - MOVE_HELPING_HAND, - MOVE_GRAVITY, - MOVE_LAST_RESORT, - MOVE_MUD_BOMB, - MOVE_NATURAL_GIFT, - MOVE_ENDURE), - +#if P_FAMILY_CHATOT egg_moves(CHATOT, MOVE_ENCORE, MOVE_NIGHT_SHADE, @@ -2720,7 +3325,9 @@ const u16 gEggMoves[] = { MOVE_DEFOG, MOVE_AIR_CUTTER, MOVE_BOOMBURST), +#endif //P_FAMILY_CHATOT +#if P_FAMILY_SPIRITOMB egg_moves(SPIRITOMB, MOVE_DESTINY_BOND, MOVE_PAIN_SPLIT, @@ -2732,7 +3339,9 @@ const u16 gEggMoves[] = { MOVE_NIGHTMARE, MOVE_FOUL_PLAY, MOVE_DISABLE), +#endif //P_FAMILY_SPIRITOMB +#if P_FAMILY_GIBLE egg_moves(GIBLE, MOVE_DRAGON_BREATH, MOVE_OUTRAGE, @@ -2747,21 +3356,9 @@ const u16 gEggMoves[] = { MOVE_MUD_SHOT, MOVE_ROCK_CLIMB, MOVE_IRON_TAIL), +#endif //P_FAMILY_GIBLE - egg_moves(MUNCHLAX, - MOVE_LICK, - MOVE_CHARM, - MOVE_DOUBLE_EDGE, - MOVE_CURSE, - MOVE_WHIRLWIND, - MOVE_PURSUIT, - MOVE_ZEN_HEADBUTT, - MOVE_COUNTER, - MOVE_NATURAL_GIFT, - MOVE_AFTER_YOU, - MOVE_SELF_DESTRUCT, - MOVE_BELCH), - +#if P_FAMILY_RIOLU egg_moves(RIOLU, MOVE_CROSS_CHOP, MOVE_DETECT, @@ -2779,7 +3376,9 @@ const u16 gEggMoves[] = { MOVE_FOLLOW_ME, MOVE_CIRCLE_THROW, MOVE_METEOR_MASH), +#endif //P_FAMILY_RIOLU +#if P_FAMILY_HIPPOPOTAS egg_moves(HIPPOPOTAS, MOVE_STOCKPILE, MOVE_SWALLOW, @@ -2791,7 +3390,9 @@ const u16 gEggMoves[] = { MOVE_REVENGE, MOVE_SLEEP_TALK, MOVE_WHIRLWIND), +#endif //P_FAMILY_HIPPOPOTAS +#if P_FAMILY_SKORUPI egg_moves(SKORUPI, MOVE_FEINT_ATTACK, MOVE_SCREECH, @@ -2805,7 +3406,9 @@ const u16 gEggMoves[] = { MOVE_IRON_TAIL, MOVE_TWINEEDLE, MOVE_POISON_TAIL), +#endif //P_FAMILY_SKORUPI +#if P_FAMILY_CROAGUNK egg_moves(CROAGUNK, MOVE_ME_FIRST, MOVE_FEINT, @@ -2822,7 +3425,9 @@ const u16 gEggMoves[] = { MOVE_DRAIN_PUNCH, MOVE_ACUPRESSURE, MOVE_QUICK_GUARD), +#endif //P_FAMILY_CROAGUNK +#if P_FAMILY_CARNIVINE egg_moves(CARNIVINE, MOVE_SLEEP_POWDER, MOVE_STUN_SPORE, @@ -2836,7 +3441,9 @@ const u16 gEggMoves[] = { MOVE_RAGE_POWDER, MOVE_GRASS_WHISTLE, MOVE_ACID_SPRAY), +#endif //P_FAMILY_CARNIVINE +#if P_FAMILY_FINNEON egg_moves(FINNEON, MOVE_SWEET_KISS, MOVE_CHARM, @@ -2850,21 +3457,9 @@ const u16 gEggMoves[] = { MOVE_AURORA_BEAM, MOVE_SIGNAL_BEAM, MOVE_CONFUSE_RAY), +#endif //P_FAMILY_FINNEON - egg_moves(MANTYKE, - MOVE_TWISTER, - MOVE_HYDRO_PUMP, - MOVE_HAZE, - MOVE_SLAM, - MOVE_MUD_SPORT, - MOVE_MIRROR_COAT, - MOVE_WATER_SPORT, - MOVE_SPLASH, - MOVE_SIGNAL_BEAM, - MOVE_WIDE_GUARD, - MOVE_AMNESIA, - MOVE_TAILWIND), - +#if P_FAMILY_SNOVER egg_moves(SNOVER, MOVE_LEECH_SEED, MOVE_MAGICAL_LEAF, @@ -2877,9 +3472,9 @@ const u16 gEggMoves[] = { MOVE_AVALANCHE, MOVE_NATURAL_GIFT, MOVE_BULLET_SEED), -#endif +#endif //P_FAMILY_SNOVER -#if P_GEN_5_POKEMON == TRUE +#if P_FAMILY_SNIVY egg_moves(SNIVY, MOVE_CAPTIVATE, MOVE_NATURAL_GIFT, @@ -2892,7 +3487,9 @@ const u16 gEggMoves[] = { MOVE_MEAN_LOOK, MOVE_TWISTER, MOVE_GRASSY_TERRAIN), +#endif //P_FAMILY_SNIVY +#if P_FAMILY_TEPIG egg_moves(TEPIG, MOVE_COVET, MOVE_BODY_SLAM, @@ -2906,7 +3503,9 @@ const u16 gEggMoves[] = { MOVE_HEAVY_SLAM, MOVE_SUCKER_PUNCH, MOVE_BURN_UP), +#endif //P_FAMILY_TEPIG +#if P_FAMILY_OSHAWOTT egg_moves(OSHAWOTT, MOVE_COPYCAT, MOVE_DETECT, @@ -2917,7 +3516,9 @@ const u16 gEggMoves[] = { MOVE_TRUMP_CARD, MOVE_SCREECH, MOVE_SACRED_SWORD), +#endif //P_FAMILY_OSHAWOTT +#if P_FAMILY_PATRAT egg_moves(PATRAT, MOVE_FORESIGHT, MOVE_IRON_TAIL, @@ -2928,7 +3529,9 @@ const u16 gEggMoves[] = { MOVE_FLAIL, MOVE_TEARFUL_LOOK, MOVE_BULLET_SEED), +#endif //P_FAMILY_PATRAT +#if P_FAMILY_LILLIPUP egg_moves(LILLIPUP, MOVE_HOWL, MOVE_SAND_ATTACK, @@ -2943,7 +3546,9 @@ const u16 gEggMoves[] = { MOVE_ICE_FANG, MOVE_AFTER_YOU, MOVE_PSYCHIC_FANGS), +#endif //P_FAMILY_LILLIPUP +#if P_FAMILY_PURRLOIN egg_moves(PURRLOIN, MOVE_PAY_DAY, MOVE_FOUL_PLAY, @@ -2954,7 +3559,9 @@ const u16 gEggMoves[] = { MOVE_YAWN, MOVE_COVET, MOVE_COPYCAT), +#endif //P_FAMILY_PURRLOIN +#if P_FAMILY_PANSAGE egg_moves(PANSAGE, MOVE_COVET, MOVE_LOW_KICK, @@ -2968,7 +3575,9 @@ const u16 gEggMoves[] = { MOVE_LEAF_STORM, MOVE_DISARMING_VOICE, MOVE_SPIKY_SHIELD), +#endif //P_FAMILY_PANSAGE +#if P_FAMILY_PANSEAR egg_moves(PANSEAR, MOVE_COVET, MOVE_LOW_KICK, @@ -2983,7 +3592,9 @@ const u16 gEggMoves[] = { MOVE_DISARMING_VOICE, MOVE_BELCH, MOVE_FLARE_BLITZ), +#endif //P_FAMILY_PANSEAR +#if P_FAMILY_PANPOUR egg_moves(PANPOUR, MOVE_COVET, MOVE_LOW_KICK, @@ -2996,7 +3607,9 @@ const u16 gEggMoves[] = { MOVE_MUD_SPORT, MOVE_HYDRO_PUMP, MOVE_DISARMING_VOICE), +#endif //P_FAMILY_PANPOUR +#if P_FAMILY_MUNNA egg_moves(MUNNA, MOVE_SLEEP_TALK, MOVE_SECRET_POWER, @@ -3008,7 +3621,9 @@ const u16 gEggMoves[] = { MOVE_CURSE, MOVE_SONIC_BOOM, MOVE_HEALING_WISH), +#endif //P_FAMILY_MUNNA +#if P_FAMILY_PIDOVE egg_moves(PIDOVE, MOVE_STEEL_WING, MOVE_HYPNOSIS, @@ -3018,7 +3633,9 @@ const u16 gEggMoves[] = { MOVE_MORNING_SUN, MOVE_LUCKY_CHANT, MOVE_NIGHT_SLASH), +#endif //P_FAMILY_PIDOVE +#if P_FAMILY_BLITZLE egg_moves(BLITZLE, MOVE_ME_FIRST, MOVE_TAKE_DOWN, @@ -3031,7 +3648,9 @@ const u16 gEggMoves[] = { MOVE_SHOCK_WAVE, MOVE_SNATCH, MOVE_FEINT), +#endif //P_FAMILY_BLITZLE +#if P_FAMILY_ROGGENROLA egg_moves(ROGGENROLA, MOVE_MAGNITUDE, MOVE_CURSE, @@ -3042,7 +3661,9 @@ const u16 gEggMoves[] = { MOVE_TAKE_DOWN, MOVE_GRAVITY, MOVE_WIDE_GUARD), +#endif //P_FAMILY_ROGGENROLA +#if P_FAMILY_WOOBAT egg_moves(WOOBAT, MOVE_CHARM, MOVE_KNOCK_OFF, @@ -3056,7 +3677,9 @@ const u16 gEggMoves[] = { MOVE_CAPTIVATE, MOVE_VENOM_DRENCH, MOVE_PSYCHO_SHIFT), +#endif //P_FAMILY_WOOBAT +#if P_FAMILY_DRILBUR egg_moves(DRILBUR, MOVE_IRON_DEFENSE, MOVE_RAPID_SPIN, @@ -3066,7 +3689,9 @@ const u16 gEggMoves[] = { MOVE_SUBMISSION, MOVE_SKULL_BASH, MOVE_ROCK_CLIMB), +#endif //P_FAMILY_DRILBUR +#if P_FAMILY_AUDINO egg_moves(AUDINO, MOVE_WISH, MOVE_HEAL_BELL, @@ -3079,7 +3704,9 @@ const u16 gEggMoves[] = { MOVE_HEALING_WISH, MOVE_AMNESIA, MOVE_DRAINING_KISS), +#endif //P_FAMILY_AUDINO +#if P_FAMILY_TIMBURR egg_moves(TIMBURR, MOVE_DRAIN_PUNCH, MOVE_ENDURE, @@ -3093,7 +3720,9 @@ const u16 gEggMoves[] = { MOVE_REVERSAL, MOVE_MACH_PUNCH, MOVE_POWER_UP_PUNCH), +#endif //P_FAMILY_TIMBURR +#if P_FAMILY_TYMPOLE egg_moves(TYMPOLE, MOVE_WATER_PULSE, MOVE_REFRESH, @@ -3105,7 +3734,9 @@ const u16 gEggMoves[] = { MOVE_EARTH_POWER, MOVE_AFTER_YOU, MOVE_VENOM_DRENCH), +#endif //P_FAMILY_TYMPOLE +#if P_FAMILY_SEWADDLE egg_moves(SEWADDLE, MOVE_SILVER_WIND, MOVE_SCREECH, @@ -3117,7 +3748,9 @@ const u16 gEggMoves[] = { MOVE_CAMOUFLAGE, MOVE_AIR_SLASH, MOVE_GRASSY_TERRAIN), +#endif //P_FAMILY_SEWADDLE +#if P_FAMILY_VENIPEDE egg_moves(VENIPEDE, MOVE_TWINEEDLE, MOVE_PIN_MISSILE, @@ -3125,7 +3758,9 @@ const u16 gEggMoves[] = { MOVE_SPIKES, MOVE_TAKE_DOWN, MOVE_ROCK_CLIMB), +#endif //P_FAMILY_VENIPEDE +#if P_FAMILY_COTTONEE egg_moves(COTTONEE, MOVE_NATURAL_GIFT, MOVE_ENCORE, @@ -3138,7 +3773,9 @@ const u16 gEggMoves[] = { MOVE_WORRY_SEED, MOVE_CAPTIVATE, MOVE_MISTY_TERRAIN), +#endif //P_FAMILY_COTTONEE +#if P_FAMILY_PETILIL egg_moves(PETILIL, MOVE_NATURAL_GIFT, MOVE_CHARM, @@ -3150,7 +3787,9 @@ const u16 gEggMoves[] = { MOVE_BIDE, MOVE_HEALING_WISH, MOVE_ENCORE), +#endif //P_FAMILY_PETILIL +#if P_FAMILY_BASCULIN egg_moves(BASCULIN, MOVE_SWIFT, MOVE_BUBBLE_BEAM, @@ -3162,7 +3801,9 @@ const u16 gEggMoves[] = { MOVE_BRINE, MOVE_REVENGE, MOVE_HEAD_SMASH), +#endif //P_FAMILY_BASCULIN +#if P_FAMILY_SANDILE egg_moves(SANDILE, MOVE_DOUBLE_EDGE, MOVE_ROCK_CLIMB, @@ -3176,7 +3817,9 @@ const u16 gEggMoves[] = { MOVE_MEAN_LOOK, MOVE_ME_FIRST, MOVE_POWER_TRIP), +#endif //P_FAMILY_SANDILE +#if P_FAMILY_DARUMAKA egg_moves(DARUMAKA, MOVE_SLEEP_TALK, MOVE_FOCUS_PUNCH, @@ -3189,7 +3832,20 @@ const u16 gEggMoves[] = { MOVE_YAWN, MOVE_SNATCH, MOVE_EXTRASENSORY), +#if P_GALARIAN_FORMS + egg_moves(DARUMAKA_GALARIAN, + MOVE_FOCUS_PUNCH, + MOVE_HAMMER_ARM, + MOVE_TAKE_DOWN, + MOVE_FLAME_WHEEL, + MOVE_YAWN, + MOVE_FREEZE_DRY, + MOVE_INCINERATE, + MOVE_POWER_UP_PUNCH), +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_DARUMAKA +#if P_FAMILY_MARACTUS egg_moves(MARACTUS, MOVE_BULLET_SEED, MOVE_BOUNCE, @@ -3200,7 +3856,9 @@ const u16 gEggMoves[] = { MOVE_SPIKES, MOVE_GRASS_WHISTLE, MOVE_GRASSY_TERRAIN), +#endif //P_FAMILY_MARACTUS +#if P_FAMILY_DWEBBLE egg_moves(DWEBBLE, MOVE_ENDURE, MOVE_IRON_DEFENSE, @@ -3212,7 +3870,9 @@ const u16 gEggMoves[] = { MOVE_BLOCK, MOVE_WIDE_GUARD, MOVE_ROTOTILLER), +#endif //P_FAMILY_DWEBBLE +#if P_FAMILY_SCRAGGY egg_moves(SCRAGGY, MOVE_DRAIN_PUNCH, MOVE_COUNTER, @@ -3228,7 +3888,9 @@ const u16 gEggMoves[] = { MOVE_QUICK_GUARD, MOVE_POWER_UP_PUNCH, MOVE_ACID_SPRAY), +#endif //P_FAMILY_SCRAGGY +#if P_FAMILY_SIGILYPH egg_moves(SIGILYPH, MOVE_STORED_POWER, MOVE_PSYCHO_SHIFT, @@ -3237,7 +3899,9 @@ const u16 gEggMoves[] = { MOVE_ROOST, MOVE_SKILL_SWAP, MOVE_FUTURE_SIGHT), +#endif //P_FAMILY_SIGILYPH +#if P_FAMILY_YAMASK egg_moves(YAMASK, MOVE_MEMENTO, MOVE_FAKE_TEARS, @@ -3250,7 +3914,13 @@ const u16 gEggMoves[] = { MOVE_ALLY_SWITCH, MOVE_TOXIC_SPIKES, MOVE_CRAFTY_SHIELD), +#if P_GALARIAN_FORMS + egg_moves(YAMASK_GALARIAN, + MOVE_MEMENTO), +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_YAMASK +#if P_FAMILY_TIRTOUGA egg_moves(TIRTOUGA, MOVE_WATER_PULSE, MOVE_KNOCK_OFF, @@ -3263,7 +3933,9 @@ const u16 gEggMoves[] = { MOVE_BIDE, MOVE_GUARD_SWAP, MOVE_LIQUIDATION), +#endif //P_FAMILY_TIRTOUGA +#if P_FAMILY_ARCHEN egg_moves(ARCHEN, MOVE_STEEL_WING, MOVE_DEFOG, @@ -3274,7 +3946,9 @@ const u16 gEggMoves[] = { MOVE_BITE, MOVE_ALLY_SWITCH, MOVE_SWITCHEROO), +#endif //P_FAMILY_ARCHEN +#if P_FAMILY_TRUBBISH egg_moves(TRUBBISH, MOVE_SPIKES, MOVE_ROLLOUT, @@ -3285,7 +3959,9 @@ const u16 gEggMoves[] = { MOVE_MUD_SPORT, MOVE_SELF_DESTRUCT, MOVE_AUTOTOMIZE), +#endif //P_FAMILY_TRUBBISH +#if P_FAMILY_ZORUA egg_moves(ZORUA, MOVE_DETECT, MOVE_CAPTIVATE, @@ -3296,7 +3972,9 @@ const u16 gEggMoves[] = { MOVE_EXTRASENSORY, MOVE_COUNTER, MOVE_COPYCAT), +#endif //P_FAMILY_ZORUA +#if P_FAMILY_MINCCINO egg_moves(MINCCINO, MOVE_IRON_TAIL, MOVE_TAIL_WHIP, @@ -3307,7 +3985,9 @@ const u16 gEggMoves[] = { MOVE_SLEEP_TALK, MOVE_ENDURE, MOVE_FLAIL), +#endif //P_FAMILY_MINCCINO +#if P_FAMILY_GOTHITA egg_moves(GOTHITA, MOVE_MIRROR_COAT, MOVE_UPROAR, @@ -3316,7 +3996,9 @@ const u16 gEggMoves[] = { MOVE_MEAN_LOOK, MOVE_DARK_PULSE, MOVE_HEAL_PULSE), +#endif //P_FAMILY_GOTHITA +#if P_FAMILY_SOLOSIS egg_moves(SOLOSIS, MOVE_NIGHT_SHADE, MOVE_ASTONISH, @@ -3327,7 +4009,9 @@ const u16 gEggMoves[] = { MOVE_SECRET_POWER, MOVE_ASTONISH, MOVE_HELPING_HAND), +#endif //P_FAMILY_SOLOSIS +#if P_FAMILY_DUCKLETT egg_moves(DUCKLETT, MOVE_STEEL_WING, MOVE_BRINE, @@ -3338,7 +4022,9 @@ const u16 gEggMoves[] = { MOVE_LUCKY_CHANT, MOVE_MUD_SPORT, MOVE_AQUA_JET), +#endif //P_FAMILY_DUCKLETT +#if P_FAMILY_VANILLITE egg_moves(VANILLITE, MOVE_WATER_PULSE, MOVE_NATURAL_GIFT, @@ -3348,7 +4034,9 @@ const u16 gEggMoves[] = { MOVE_MAGNET_RISE, MOVE_ICE_SHARD, MOVE_POWDER_SNOW), +#endif //P_FAMILY_VANILLITE +#if P_FAMILY_DEERLING egg_moves(DEERLING, MOVE_FAKE_TEARS, MOVE_NATURAL_GIFT, @@ -3360,7 +4048,9 @@ const u16 gEggMoves[] = { MOVE_BATON_PASS, MOVE_GRASS_WHISTLE, MOVE_HEADBUTT), +#endif //P_FAMILY_DEERLING +#if P_FAMILY_EMOLGA egg_moves(EMOLGA, MOVE_ROOST, MOVE_IRON_TAIL, @@ -3373,7 +4063,9 @@ const u16 gEggMoves[] = { MOVE_BATON_PASS, MOVE_ION_DELUGE, MOVE_SPEED_SWAP), +#endif //P_FAMILY_EMOLGA +#if P_FAMILY_KARRABLAST egg_moves(KARRABLAST, MOVE_MEGAHORN, MOVE_PURSUIT, @@ -3384,7 +4076,9 @@ const u16 gEggMoves[] = { MOVE_SCREECH, MOVE_KNOCK_OFF, MOVE_DRILL_RUN), +#endif //P_FAMILY_KARRABLAST +#if P_FAMILY_FOONGUS egg_moves(FOONGUS, MOVE_GASTRO_ACID, MOVE_GROWTH, @@ -3394,7 +4088,9 @@ const u16 gEggMoves[] = { MOVE_DEFENSE_CURL, MOVE_ENDURE, MOVE_BODY_SLAM), +#endif //P_FAMILY_FOONGUS +#if P_FAMILY_FRILLISH egg_moves(FRILLISH, MOVE_ACID_ARMOR, MOVE_CONFUSE_RAY, @@ -3402,7 +4098,9 @@ const u16 gEggMoves[] = { MOVE_MIST, MOVE_RECOVER, MOVE_CONSTRICT), +#endif //P_FAMILY_FRILLISH +#if P_FAMILY_ALOMOMOLA egg_moves(ALOMOMOLA, MOVE_PAIN_SPLIT, MOVE_REFRESH, @@ -3410,7 +4108,9 @@ const u16 gEggMoves[] = { MOVE_MIRROR_COAT, MOVE_MIST, MOVE_ENDURE), +#endif //P_FAMILY_ALOMOMOLA +#if P_FAMILY_JOLTIK egg_moves(JOLTIK, MOVE_PIN_MISSILE, MOVE_POISON_STING, @@ -3421,7 +4121,9 @@ const u16 gEggMoves[] = { MOVE_FEINT_ATTACK, MOVE_CAMOUFLAGE, MOVE_LUNGE), +#endif //P_FAMILY_JOLTIK +#if P_FAMILY_FERROSEED egg_moves(FERROSEED, MOVE_BULLET_SEED, MOVE_LEECH_SEED, @@ -3432,7 +4134,9 @@ const u16 gEggMoves[] = { MOVE_ROCK_CLIMB, MOVE_STEALTH_ROCK, MOVE_ACID_SPRAY), +#endif //P_FAMILY_FERROSEED +#if P_FAMILY_ELGYEM egg_moves(ELGYEM, MOVE_TELEPORT, MOVE_DISABLE, @@ -3444,7 +4148,9 @@ const u16 gEggMoves[] = { MOVE_SKILL_SWAP, MOVE_COSMIC_POWER, MOVE_ALLY_SWITCH), +#endif //P_FAMILY_ELGYEM +#if P_FAMILY_LITWICK egg_moves(LITWICK, MOVE_ACID_ARMOR, MOVE_HEAT_WAVE, @@ -3454,7 +4160,9 @@ const u16 gEggMoves[] = { MOVE_ACID, MOVE_CLEAR_SMOG, MOVE_POWER_SPLIT), +#endif //P_FAMILY_LITWICK +#if P_FAMILY_AXEW egg_moves(AXEW, MOVE_COUNTER, MOVE_FOCUS_ENERGY, @@ -3466,7 +4174,9 @@ const u16 gEggMoves[] = { MOVE_IRON_TAIL, MOVE_DRAGON_PULSE, MOVE_HARDEN), +#endif //P_FAMILY_AXEW +#if P_FAMILY_CUBCHOO egg_moves(CUBCHOO, MOVE_YAWN, MOVE_AVALANCHE, @@ -3477,7 +4187,9 @@ const u16 gEggMoves[] = { MOVE_SLEEP_TALK, MOVE_FOCUS_PUNCH, MOVE_PLAY_ROUGH), +#endif //P_FAMILY_CUBCHOO +#if P_FAMILY_SHELMET egg_moves(SHELMET, MOVE_ENDURE, MOVE_BATON_PASS, @@ -3490,7 +4202,9 @@ const u16 gEggMoves[] = { MOVE_FEINT, MOVE_PURSUIT, MOVE_TOXIC_SPIKES), +#endif //P_FAMILY_SHELMET +#if P_FAMILY_STUNFISK egg_moves(STUNFISK, MOVE_SHOCK_WAVE, MOVE_EARTH_POWER, @@ -3504,7 +4218,20 @@ const u16 gEggMoves[] = { MOVE_EERIE_IMPULSE, MOVE_REFLECT_TYPE, MOVE_ME_FIRST), +#if P_GALARIAN_FORMS + egg_moves(STUNFISK_GALARIAN, + MOVE_BIND, + MOVE_YAWN, + MOVE_ASTONISH, + MOVE_CURSE, + MOVE_SPITE, + MOVE_COUNTER, + MOVE_PAIN_SPLIT, + MOVE_REFLECT_TYPE), +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_STUNFISK +#if P_FAMILY_MIENFOO egg_moves(MIENFOO, MOVE_ENDURE, MOVE_VITAL_THROW, @@ -3515,7 +4242,9 @@ const u16 gEggMoves[] = { MOVE_ME_FIRST, MOVE_KNOCK_OFF, MOVE_ALLY_SWITCH), +#endif //P_FAMILY_MIENFOO +#if P_FAMILY_DRUDDIGON egg_moves(DRUDDIGON, MOVE_FIRE_FANG, MOVE_THUNDER_FANG, @@ -3528,7 +4257,9 @@ const u16 gEggMoves[] = { MOVE_METAL_CLAW, MOVE_GLARE, MOVE_SUCKER_PUNCH), +#endif //P_FAMILY_DRUDDIGON +#if P_FAMILY_PAWNIARD egg_moves(PAWNIARD, MOVE_REVENGE, MOVE_SUCKER_PUNCH, @@ -3538,7 +4269,9 @@ const u16 gEggMoves[] = { MOVE_PSYCHO_CUT, MOVE_MEAN_LOOK, MOVE_QUICK_GUARD), +#endif //P_FAMILY_PAWNIARD +#if P_FAMILY_BOUFFALANT egg_moves(BOUFFALANT, MOVE_STOMP, MOVE_ROCK_CLIMB, @@ -3550,7 +4283,9 @@ const u16 gEggMoves[] = { MOVE_AMNESIA, MOVE_BELCH, MOVE_COTTON_GUARD), +#endif //P_FAMILY_BOUFFALANT +#if P_FAMILY_VULLABY egg_moves(VULLABY, MOVE_STEEL_WING, MOVE_MEAN_LOOK, @@ -3559,7 +4294,9 @@ const u16 gEggMoves[] = { MOVE_KNOCK_OFF, MOVE_FAKE_TEARS, MOVE_FOUL_PLAY), +#endif //P_FAMILY_VULLABY +#if P_FAMILY_HEATMOR egg_moves(HEATMOR, MOVE_PURSUIT, MOVE_WRAP, @@ -3572,7 +4309,9 @@ const u16 gEggMoves[] = { MOVE_TICKLE, MOVE_SLEEP_TALK, MOVE_BELCH), +#endif //P_FAMILY_HEATMOR +#if P_FAMILY_DURANT egg_moves(DURANT, MOVE_SCREECH, MOVE_ENDURE, @@ -3580,7 +4319,9 @@ const u16 gEggMoves[] = { MOVE_BATON_PASS, MOVE_THUNDER_FANG, MOVE_FEINT_ATTACK), +#endif //P_FAMILY_DURANT +#if P_FAMILY_DEINO egg_moves(DEINO, MOVE_FIRE_FANG, MOVE_THUNDER_FANG, @@ -3593,7 +4334,9 @@ const u16 gEggMoves[] = { MOVE_ASSURANCE, MOVE_DARK_PULSE, MOVE_BELCH), +#endif //P_FAMILY_DEINO +#if P_FAMILY_LARVESTA egg_moves(LARVESTA, MOVE_STRING_SHOT, MOVE_HARDEN, @@ -3602,9 +4345,9 @@ const u16 gEggMoves[] = { MOVE_ZEN_HEADBUTT, MOVE_MORNING_SUN, MOVE_MAGNET_RISE), -#endif +#endif //P_FAMILY_LARVESTA -#if P_GEN_6_POKEMON == TRUE +#if P_FAMILY_CHESPIN egg_moves(CHESPIN, MOVE_SYNTHESIS, MOVE_BELLY_DRUM, @@ -3614,14 +4357,18 @@ const u16 gEggMoves[] = { MOVE_DEFENSE_CURL, MOVE_ROLLOUT, MOVE_POWER_UP_PUNCH), +#endif //P_FAMILY_CHESPIN +#if P_FAMILY_FENNEKIN egg_moves(FENNEKIN, MOVE_WISH, MOVE_HYPNOSIS, MOVE_HEAT_WAVE, MOVE_MAGIC_COAT, MOVE_PSYCHIC_TERRAIN), +#endif //P_FAMILY_FENNEKIN +#if P_FAMILY_FROAKIE egg_moves(FROAKIE, MOVE_BESTOW, MOVE_MIND_READER, @@ -3630,41 +4377,55 @@ const u16 gEggMoves[] = { MOVE_CAMOUFLAGE, MOVE_WATER_SPORT, MOVE_POWER_UP_PUNCH), +#endif //P_FAMILY_FROAKIE +#if P_FAMILY_BUNNELBY egg_moves(BUNNELBY, MOVE_SPIKES, MOVE_DEFENSE_CURL, MOVE_ROLLOUT), +#endif //P_FAMILY_BUNNELBY +#if P_FAMILY_FLETCHLING egg_moves(FLETCHLING, MOVE_TAILWIND, MOVE_SNATCH, MOVE_QUICK_GUARD), +#endif //P_FAMILY_FLETCHLING +#if P_FAMILY_SCATTERBUG egg_moves(SCATTERBUG, MOVE_STUN_SPORE, MOVE_POISON_POWDER, MOVE_RAGE_POWDER), +#endif //P_FAMILY_SCATTERBUG +#if P_FAMILY_LITLEO egg_moves(LITLEO, MOVE_ENTRAINMENT, MOVE_YAWN, MOVE_SNATCH, MOVE_FIRE_SPIN, MOVE_FLARE_BLITZ), +#endif //P_FAMILY_LITLEO +#if P_FAMILY_FLABEBE egg_moves(FLABEBE, MOVE_COPYCAT, MOVE_CAPTIVATE, MOVE_CAMOUFLAGE, MOVE_TEARFUL_LOOK), +#endif //P_FAMILY_FLABEBE +#if P_FAMILY_SKIDDO egg_moves(SKIDDO, MOVE_DEFENSE_CURL, MOVE_ROLLOUT, MOVE_MILK_DRINK, MOVE_GRASSY_TERRAIN), +#endif //P_FAMILY_SKIDDO +#if P_FAMILY_PANCHAM egg_moves(PANCHAM, MOVE_QUASH, MOVE_ME_FIRST, @@ -3672,40 +4433,52 @@ const u16 gEggMoves[] = { MOVE_FOUL_PLAY, MOVE_STORM_THROW, MOVE_POWER_TRIP), +#endif //P_FAMILY_PANCHAM +#if P_FAMILY_FURFROU egg_moves(FURFROU, MOVE_ROLE_PLAY, MOVE_WORK_UP, MOVE_MIMIC, MOVE_CAPTIVATE, MOVE_REFRESH), +#endif //P_FAMILY_FURFROU +#if P_FAMILY_ESPURR egg_moves(ESPURR, MOVE_TRICK, MOVE_YAWN, MOVE_ASSIST, MOVE_BARRIER), +#endif //P_FAMILY_ESPURR +#if P_FAMILY_HONEDGE egg_moves(HONEDGE, MOVE_METAL_SOUND, MOVE_SHADOW_SNEAK, MOVE_DESTINY_BOND, MOVE_WIDE_GUARD), +#endif //P_FAMILY_HONEDGE +#if P_FAMILY_SPRITZEE egg_moves(SPRITZEE, MOVE_DISABLE, MOVE_WISH, MOVE_CAPTIVATE, MOVE_REFRESH, MOVE_NASTY_PLOT), +#endif //P_FAMILY_SPRITZEE +#if P_FAMILY_SWIRLIX egg_moves(SWIRLIX, MOVE_AFTER_YOU, MOVE_YAWN, MOVE_BELLY_DRUM, MOVE_COPYCAT, MOVE_STICKY_WEB), +#endif //P_FAMILY_SWIRLIX +#if P_FAMILY_INKAY egg_moves(INKAY, MOVE_SIMPLE_BEAM, MOVE_POWER_SPLIT, @@ -3713,33 +4486,43 @@ const u16 gEggMoves[] = { MOVE_FLATTER, MOVE_DESTINY_BOND, MOVE_GUARD_SWAP), +#endif //P_FAMILY_INKAY +#if P_FAMILY_BINACLE egg_moves(BINACLE, MOVE_TICKLE, MOVE_SWITCHEROO, MOVE_HELPING_HAND, MOVE_WATER_SPORT), +#endif //P_FAMILY_BINACLE +#if P_FAMILY_SKRELP egg_moves(SKRELP, MOVE_TOXIC_SPIKES, MOVE_PLAY_ROUGH, MOVE_HAZE, MOVE_ACID_ARMOR, MOVE_VENOM_DRENCH), +#endif //P_FAMILY_SKRELP +#if P_FAMILY_CLAUNCHER egg_moves(CLAUNCHER, MOVE_AQUA_JET, MOVE_ENTRAINMENT, MOVE_ENDURE, MOVE_CRABHAMMER, MOVE_HELPING_HAND), +#endif //P_FAMILY_CLAUNCHER +#if P_FAMILY_HELIOPTILE egg_moves(HELIOPTILE, MOVE_AGILITY, MOVE_GLARE, MOVE_CAMOUFLAGE, MOVE_ELECTRIC_TERRAIN), +#endif //P_FAMILY_HELIOPTILE +#if P_FAMILY_TYRUNT egg_moves(TYRUNT, MOVE_DRAGON_DANCE, MOVE_THUNDER_FANG, @@ -3748,14 +4531,18 @@ const u16 gEggMoves[] = { MOVE_ROCK_POLISH, MOVE_FIRE_FANG, MOVE_CURSE), +#endif //P_FAMILY_TYRUNT +#if P_FAMILY_AMAURA egg_moves(AMAURA, MOVE_HAZE, MOVE_BARRIER, MOVE_MIRROR_COAT, MOVE_MAGNET_RISE, MOVE_DISCHARGE), +#endif //P_FAMILY_AMAURA +#if P_FAMILY_HAWLUCHA egg_moves(HAWLUCHA, MOVE_AGILITY, MOVE_ME_FIRST, @@ -3765,14 +4552,18 @@ const u16 gEggMoves[] = { MOVE_BATON_PASS, MOVE_QUICK_GUARD, MOVE_FEINT), +#endif //P_FAMILY_HAWLUCHA +#if P_FAMILY_DEDENNE egg_moves(DEDENNE, MOVE_EERIE_IMPULSE, MOVE_COVET, MOVE_HELPING_HAND, MOVE_NATURAL_GIFT, MOVE_TEARFUL_LOOK), +#endif //P_FAMILY_DEDENNE +#if P_FAMILY_GOOMY egg_moves(GOOMY, MOVE_ACID_ARMOR, MOVE_CURSE, @@ -3780,40 +4571,50 @@ const u16 gEggMoves[] = { MOVE_POISON_TAIL, MOVE_COUNTER, MOVE_ENDURE), +#endif //P_FAMILY_GOOMY +#if P_FAMILY_KLEFKI egg_moves(KLEFKI, MOVE_SWITCHEROO, MOVE_THIEF, MOVE_LOCK_ON, MOVE_IRON_DEFENSE), +#endif //P_FAMILY_KLEFKI +#if P_FAMILY_PHANTUMP egg_moves(PHANTUMP, MOVE_GRUDGE, MOVE_BESTOW, MOVE_IMPRISON, MOVE_VENOM_DRENCH, MOVE_POWER_UP_PUNCH), +#endif //P_FAMILY_PHANTUMP +#if P_FAMILY_PUMPKABOO egg_moves(PUMPKABOO, MOVE_DISABLE, MOVE_BESTOW, MOVE_DESTINY_BOND, MOVE_CURSE), +#endif //P_FAMILY_PUMPKABOO +#if P_FAMILY_BERGMITE egg_moves(BERGMITE, MOVE_RECOVER, MOVE_MIST, MOVE_BARRIER, MOVE_MIRROR_COAT), +#endif //P_FAMILY_BERGMITE +#if P_FAMILY_NOIBAT egg_moves(NOIBAT, MOVE_SWITCHEROO, MOVE_SNATCH, MOVE_OUTRAGE, MOVE_TAILWIND), -#endif +#endif //P_FAMILY_NOIBAT -#if P_GEN_7_POKEMON == TRUE +#if P_FAMILY_ROWLET egg_moves(ROWLET, MOVE_CURSE, MOVE_CONFUSE_RAY, @@ -3821,7 +4622,9 @@ const u16 gEggMoves[] = { MOVE_HAZE, MOVE_BATON_PASS, MOVE_DEFOG), +#endif //P_FAMILY_ROWLET +#if P_FAMILY_LITTEN egg_moves(LITTEN, MOVE_NASTY_PLOT, MOVE_BODY_SLAM, @@ -3830,7 +4633,9 @@ const u16 gEggMoves[] = { MOVE_REVENGE, MOVE_HEAT_WAVE, MOVE_POWER_TRIP), +#endif //P_FAMILY_LITTEN +#if P_FAMILY_POPPLIO egg_moves(POPPLIO, MOVE_CHARM, MOVE_AMNESIA, @@ -3838,39 +4643,51 @@ const u16 gEggMoves[] = { MOVE_AROMATIC_MIST, MOVE_PERISH_SONG, MOVE_WONDER_ROOM), +#endif //P_FAMILY_POPPLIO +#if P_FAMILY_PIKIPEK egg_moves(PIKIPEK, MOVE_BRAVE_BIRD, MOVE_BOOMBURST, MOVE_MIRROR_MOVE, MOVE_TAILWIND, MOVE_UPROAR), +#endif //P_FAMILY_PIKIPEK +#if P_FAMILY_YUNGOOS egg_moves(YUNGOOS, MOVE_REVENGE, MOVE_LAST_RESORT, MOVE_FIRE_FANG, MOVE_ICE_FANG, MOVE_THUNDER_FANG), +#endif //P_FAMILY_YUNGOOS +#if P_FAMILY_GRUBBIN egg_moves(GRUBBIN, MOVE_HARDEN, MOVE_ELECTROWEB, MOVE_MUD_SHOT, MOVE_ENDURE), +#endif //P_FAMILY_GRUBBIN +#if P_FAMILY_CRABRAWLER egg_moves(CRABRAWLER, MOVE_WIDE_GUARD, MOVE_SUPERPOWER, MOVE_ENDEAVOR, MOVE_AMNESIA), +#endif //P_FAMILY_CRABRAWLER - egg_moves(ORICORIO, +#if P_FAMILY_ORICORIO + egg_moves(ORICORIO_BAILE, MOVE_PLUCK, MOVE_TAILWIND, MOVE_SAFEGUARD, MOVE_CAPTIVATE), +#endif //P_FAMILY_ORICORIO +#if P_FAMILY_CUTIEFLY egg_moves(CUTIEFLY, MOVE_BATON_PASS, MOVE_SKILL_SWAP, @@ -3879,62 +4696,80 @@ const u16 gEggMoves[] = { MOVE_MOONBLAST, MOVE_POWDER, MOVE_STICKY_WEB), +#endif //P_FAMILY_CUTIEFLY +#if P_FAMILY_ROCKRUFF egg_moves(ROCKRUFF, MOVE_CRUSH_CLAW, MOVE_FIRE_FANG, MOVE_THUNDER_FANG, MOVE_SUCKER_PUNCH, MOVE_THRASH), +#endif //P_FAMILY_ROCKRUFF +#if P_FAMILY_WISHIWASHI egg_moves(WISHIWASHI, MOVE_MUDDY_WATER, MOVE_MIST, MOVE_WATER_PULSE, MOVE_WATER_SPORT, MOVE_WHIRLPOOL), +#endif //P_FAMILY_WISHIWASHI +#if P_FAMILY_MAREANIE egg_moves(MAREANIE, MOVE_STOCKPILE, MOVE_SWALLOW, MOVE_SPIT_UP, MOVE_HAZE), +#endif //P_FAMILY_MAREANIE +#if P_FAMILY_MUDBRAY egg_moves(MUDBRAY, MOVE_BODY_SLAM, MOVE_DOUBLE_EDGE, MOVE_MAGNITUDE, MOVE_CLOSE_COMBAT, MOVE_MUD_BOMB), +#endif //P_FAMILY_MUDBRAY +#if P_FAMILY_DEWPIDER egg_moves(DEWPIDER, MOVE_POWER_SPLIT, MOVE_AURORA_BEAM, MOVE_STOCKPILE, MOVE_SPIT_UP, MOVE_STICKY_WEB), +#endif //P_FAMILY_DEWPIDER +#if P_FAMILY_FOMANTIS egg_moves(FOMANTIS, MOVE_WEATHER_BALL, MOVE_GIGA_DRAIN, MOVE_AROMATHERAPY, MOVE_DEFOG, MOVE_LEAF_STORM), +#endif //P_FAMILY_FOMANTIS +#if P_FAMILY_MORELULL egg_moves(MORELULL, MOVE_AMNESIA, MOVE_POISON_POWDER, MOVE_STUN_SPORE, MOVE_GROWTH, MOVE_LEECH_SEED), +#endif //P_FAMILY_MORELULL +#if P_FAMILY_SALANDIT egg_moves(SALANDIT, MOVE_BELCH, MOVE_KNOCK_OFF, MOVE_SAND_ATTACK, MOVE_SNATCH, MOVE_FAKE_OUT), +#endif //P_FAMILY_SALANDIT +#if P_FAMILY_STUFFUL egg_moves(STUFFUL, MOVE_ICE_PUNCH, MOVE_THUNDER_PUNCH, @@ -3943,7 +4778,9 @@ const u16 gEggMoves[] = { MOVE_WIDE_GUARD, MOVE_MEGA_KICK, MOVE_STOMPING_TANTRUM), +#endif //P_FAMILY_STUFFUL +#if P_FAMILY_BOUNSWEET egg_moves(BOUNSWEET, MOVE_GRASS_WHISTLE, MOVE_SYNTHESIS, @@ -3951,18 +4788,24 @@ const u16 gEggMoves[] = { MOVE_FEINT, MOVE_CHARM, MOVE_ACUPRESSURE), +#endif //P_FAMILY_BOUNSWEET +#if P_FAMILY_COMFEY egg_moves(COMFEY, MOVE_ENDURE, MOVE_AMNESIA, MOVE_AFTER_YOU, MOVE_LUCKY_CHANT), +#endif //P_FAMILY_COMFEY +#if P_FAMILY_ORANGURU egg_moves(ORANGURU, MOVE_EXTRASENSORY, MOVE_WONDER_ROOM, MOVE_PSYCHIC_TERRAIN), +#endif //P_FAMILY_ORANGURU +#if P_FAMILY_PASSIMIAN egg_moves(PASSIMIAN, MOVE_SEISMIC_TOSS, MOVE_VITAL_THROW, @@ -3970,14 +4813,18 @@ const u16 gEggMoves[] = { MOVE_IRON_HEAD, MOVE_QUICK_ATTACK, MOVE_FEINT), +#endif //P_FAMILY_PASSIMIAN +#if P_FAMILY_WIMPOD egg_moves(WIMPOD, MOVE_SPIKES, MOVE_METAL_CLAW, MOVE_WIDE_GUARD, MOVE_HARDEN, MOVE_AQUA_JET), +#endif //P_FAMILY_WIMPOD +#if P_FAMILY_SANDYGAST egg_moves(SANDYGAST, MOVE_AMNESIA, MOVE_DESTINY_BOND, @@ -3986,26 +4833,34 @@ const u16 gEggMoves[] = { MOVE_SWALLOW, MOVE_SPIT_UP, MOVE_CURSE), +#endif //P_FAMILY_SANDYGAST +#if P_FAMILY_PYUKUMUKU egg_moves(PYUKUMUKU, MOVE_ENDURE, MOVE_VENOM_DRENCH, MOVE_BESTOW, MOVE_TICKLE, MOVE_SPITE), +#endif //P_FAMILY_PYUKUMUKU +#if P_FAMILY_KOMALA egg_moves(KOMALA, MOVE_CHARM, MOVE_WISH, MOVE_PLAY_ROUGH, MOVE_SING), +#endif //P_FAMILY_KOMALA +#if P_FAMILY_TURTONATOR egg_moves(TURTONATOR, MOVE_WIDE_GUARD, MOVE_REVENGE, MOVE_HEAD_SMASH, MOVE_FIRE_SPIN), +#endif //P_FAMILY_TURTONATOR +#if P_FAMILY_TOGEDEMARU egg_moves(TOGEDEMARU, MOVE_REVERSAL, MOVE_PRESENT, @@ -4016,33 +4871,41 @@ const u16 gEggMoves[] = { MOVE_TICKLE, MOVE_FLAIL, MOVE_DISARMING_VOICE), +#endif //P_FAMILY_TOGEDEMARU +#if P_FAMILY_MIMIKYU egg_moves(MIMIKYU, MOVE_GRUDGE, MOVE_DESTINY_BOND, MOVE_CURSE, MOVE_NIGHTMARE), +#endif //P_FAMILY_MIMIKYU +#if P_FAMILY_BRUXISH egg_moves(BRUXISH, MOVE_WATER_PULSE, MOVE_POISON_FANG, MOVE_ICE_FANG, MOVE_RAGE), +#endif //P_FAMILY_BRUXISH +#if P_FAMILY_DRAMPA egg_moves(DRAMPA, MOVE_HURRICANE, MOVE_DRAGON_RUSH, MOVE_RAZOR_WIND, MOVE_MIST, MOVE_PLAY_ROUGH), +#endif //P_FAMILY_DRAMPA +#if P_FAMILY_JANGMO_O egg_moves(JANGMO_O, MOVE_COUNTER, MOVE_REVERSAL, MOVE_DRAGON_BREATH), -#endif +#endif //P_FAMILY_JANGMO_O -#if P_GEN_8_POKEMON == TRUE +#if P_FAMILY_GROOKEY egg_moves(GROOKEY, MOVE_GROWTH, MOVE_HAMMER_ARM, @@ -4051,13 +4914,17 @@ const u16 gEggMoves[] = { MOVE_NATURE_POWER, MOVE_WORRY_SEED, MOVE_LEECH_SEED), +#endif //P_FAMILY_GROOKEY +#if P_FAMILY_SCORBUNNY egg_moves(SCORBUNNY, MOVE_HIGH_JUMP_KICK, MOVE_SAND_ATTACK, MOVE_SUCKER_PUNCH, MOVE_SUPER_FANG), +#endif //P_FAMILY_SCORBUNNY +#if P_FAMILY_SOBBLE egg_moves(SOBBLE, MOVE_AQUA_JET, MOVE_DOUBLE_TEAM, @@ -4066,13 +4933,17 @@ const u16 gEggMoves[] = { MOVE_HAZE, MOVE_ICE_SHARD, MOVE_FELL_STINGER), +#endif //P_FAMILY_SOBBLE +#if P_FAMILY_SKWOVET egg_moves(SKWOVET, MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_LAST_RESORT, MOVE_BELLY_DRUM), +#endif //P_FAMILY_SKWOVET +#if P_FAMILY_ROOKIDEE egg_moves(ROOKIDEE, MOVE_SKY_ATTACK, MOVE_SAND_ATTACK, @@ -4081,19 +4952,25 @@ const u16 gEggMoves[] = { MOVE_ROCK_SMASH, MOVE_SPITE, MOVE_ROOST), +#endif //P_FAMILY_ROOKIDEE +#if P_FAMILY_BLIPBUG egg_moves(BLIPBUG, MOVE_INFESTATION, MOVE_SUPERSONIC, MOVE_STICKY_WEB, MOVE_RECOVER), +#endif //P_FAMILY_BLIPBUG +#if P_FAMILY_NICKIT egg_moves(NICKIT, MOVE_QUICK_GUARD, MOVE_KNOCK_OFF, MOVE_HOWL, MOVE_TORMENT), +#endif //P_FAMILY_NICKIT +#if P_FAMILY_GOSSIFLEUR egg_moves(GOSSIFLEUR, MOVE_GROWTH, MOVE_LEECH_SEED, @@ -4101,66 +4978,88 @@ const u16 gEggMoves[] = { MOVE_POISON_POWDER, MOVE_STUN_SPORE, MOVE_SLEEP_POWDER), +#endif //P_FAMILY_GOSSIFLEUR +#if P_FAMILY_WOOLOO egg_moves(WOOLOO, MOVE_STOMP, MOVE_SWAGGER, MOVE_COUNTER), +#endif //P_FAMILY_WOOLOO +#if P_FAMILY_CHEWTLE egg_moves(CHEWTLE, MOVE_SKULL_BASH, MOVE_GASTRO_ACID, MOVE_DRAGON_TAIL), +#endif //P_FAMILY_CHEWTLE +#if P_FAMILY_YAMPER egg_moves(YAMPER, MOVE_DOUBLE_EDGE, MOVE_SAND_ATTACK, MOVE_FLAME_CHARGE, MOVE_DISCHARGE, MOVE_HOWL), +#endif //P_FAMILY_YAMPER +#if P_FAMILY_ROLYCOLY egg_moves(ROLYCOLY, MOVE_EXPLOSION, MOVE_MUD_SLAP, MOVE_BLOCK), +#endif //P_FAMILY_ROLYCOLY +#if P_FAMILY_APPLIN egg_moves(APPLIN, MOVE_SUCKER_PUNCH, MOVE_ROLLOUT, MOVE_DEFENSE_CURL, MOVE_RECYCLE), +#endif //P_FAMILY_APPLIN +#if P_FAMILY_SILICOBRA egg_moves(SILICOBRA, MOVE_DRAGON_RUSH, MOVE_MUD_SLAP, MOVE_LAST_RESORT, MOVE_BELCH, MOVE_POISON_TAIL), +#endif //P_FAMILY_SILICOBRA +#if P_FAMILY_CRAMORANT egg_moves(CRAMORANT, MOVE_DEFOG, MOVE_AERIAL_ACE, MOVE_FEATHER_DANCE, MOVE_AQUA_RING, MOVE_ROOST), +#endif //P_FAMILY_CRAMORANT +#if P_FAMILY_ARROKUDA egg_moves(ARROKUDA, MOVE_THRASH, MOVE_ACUPRESSURE, MOVE_SLASH, MOVE_NIGHT_SLASH), +#endif //P_FAMILY_ARROKUDA +#if P_FAMILY_TOXEL egg_moves(TOXEL, MOVE_ENDEAVOR, MOVE_METAL_SOUND, MOVE_POWER_UP_PUNCH), +#endif //P_FAMILY_TOXEL +#if P_FAMILY_SIZZLIPEDE egg_moves(SIZZLIPEDE, MOVE_KNOCK_OFF, MOVE_STRUGGLE_BUG, MOVE_ROLLOUT, MOVE_DEFENSE_CURL), +#endif //P_FAMILY_SIZZLIPEDE +#if P_FAMILY_CLOBBOPUS egg_moves(CLOBBOPUS, MOVE_PAIN_SPLIT, MOVE_SOAK, @@ -4168,30 +5067,42 @@ const u16 gEggMoves[] = { MOVE_CIRCLE_THROW, MOVE_SEISMIC_TOSS, MOVE_POWER_UP_PUNCH), +#endif //P_FAMILY_CLOBBOPUS +#if P_FAMILY_HATENNA egg_moves(HATENNA, MOVE_AROMATIC_MIST, MOVE_NUZZLE, MOVE_AFTER_YOU, MOVE_QUASH), +#endif //P_FAMILY_HATENNA +#if P_FAMILY_MILCERY egg_moves(MILCERY, MOVE_BABY_DOLL_EYES, MOVE_LAST_RESORT), +#endif //P_FAMILY_MILCERY +#if P_FAMILY_PINCURCHIN egg_moves(PINCURCHIN, MOVE_MEMENTO, MOVE_SUCKER_PUNCH), +#endif //P_FAMILY_PINCURCHIN +#if P_FAMILY_SNOM egg_moves(SNOM, MOVE_FAIRY_WIND, MOVE_MIRROR_COAT, MOVE_BUG_BITE), +#endif //P_FAMILY_SNOM +#if P_FAMILY_STONJOURNER egg_moves(STONJOURNER, MOVE_CURSE, MOVE_ANCIENT_POWER), +#endif //P_FAMILY_STONJOURNER +#if P_FAMILY_EISCUE egg_moves(EISCUE, MOVE_SOAK, MOVE_AQUA_RING, @@ -4199,12 +5110,22 @@ const u16 gEggMoves[] = { MOVE_DOUBLE_EDGE, MOVE_ICICLE_CRASH, MOVE_HEAD_SMASH), +#endif //P_FAMILY_EISCUE +#if P_FAMILY_INDEEDEE egg_moves(INDEEDEE, MOVE_PSYCH_UP, MOVE_FAKE_OUT, MOVE_EXTRASENSORY), + egg_moves(INDEEDEE_FEMALE, + MOVE_PSYCH_UP, + MOVE_FAKE_OUT, + MOVE_PSYCHO_SHIFT, + MOVE_HEAL_PULSE), +#endif //P_FAMILY_INDEEDEE + +#if P_FAMILY_MORPEKO egg_moves(MORPEKO, MOVE_SWAGGER, MOVE_SUPER_FANG, @@ -4214,7 +5135,9 @@ const u16 gEggMoves[] = { MOVE_QUASH, MOVE_PARTING_SHOT, MOVE_FAKE_OUT), +#endif //P_FAMILY_MORPEKO +#if P_FAMILY_CUFANT egg_moves(CUFANT, MOVE_DOUBLE_EDGE, MOVE_BELCH, @@ -4224,12 +5147,16 @@ const u16 gEggMoves[] = { MOVE_SWAGGER, MOVE_WHIRLWIND, MOVE_DEFENSE_CURL), +#endif //P_FAMILY_CUFANT +#if P_FAMILY_DURALUDON egg_moves(DURALUDON, MOVE_SLASH, MOVE_NIGHT_SLASH, MOVE_MIRROR_COAT), +#endif //P_FAMILY_DURALUDON +#if P_FAMILY_DREEPY egg_moves(DREEPY, MOVE_CURSE, MOVE_GRUDGE, @@ -4238,189 +5165,320 @@ const u16 gEggMoves[] = { MOVE_DISABLE, MOVE_DRAGON_TAIL, MOVE_SUCKER_PUNCH), -#endif +#endif //P_FAMILY_DREEPY - egg_moves(RATTATA_ALOLAN, - MOVE_COUNTER, - MOVE_FINAL_GAMBIT, - MOVE_FURY_SWIPES, - MOVE_ME_FIRST, - MOVE_REVENGE, - MOVE_REVERSAL, - MOVE_SNATCH, - MOVE_STOCKPILE, - MOVE_SWALLOW, - MOVE_SWITCHEROO, - MOVE_UPROAR), +#if P_FAMILY_SPRIGATITO + egg_moves(SPRIGATITO, + MOVE_ALLY_SWITCH, + MOVE_COPYCAT, + MOVE_LEECH_SEED, + MOVE_PETAL_BLIZZARD, + MOVE_SUCKER_PUNCH), +#endif //P_FAMILY_SPRIGATITO - egg_moves(SANDSHREW_ALOLAN, - MOVE_AMNESIA, - MOVE_CHIP_AWAY, - MOVE_COUNTER, - MOVE_CRUSH_CLAW, +#if P_FAMILY_FUECOCO + egg_moves(FUECOCO, + MOVE_BELCH, MOVE_CURSE, - MOVE_ENDURE, - MOVE_FLAIL, - MOVE_HONE_CLAWS, - MOVE_ICICLE_CRASH, - MOVE_ICICLE_SPEAR, - MOVE_METAL_CLAW, - MOVE_NIGHT_SLASH), - - egg_moves(VULPIX_ALOLAN, - MOVE_AGILITY, - MOVE_CHARM, - MOVE_DISABLE, MOVE_ENCORE, - MOVE_EXTRASENSORY, - MOVE_FLAIL, - MOVE_FREEZE_DRY, - MOVE_HOWL, - MOVE_HYPNOSIS, - MOVE_MOONBLAST, - MOVE_POWER_SWAP, - MOVE_SPITE, - MOVE_SECRET_POWER, - MOVE_TAIL_SLAP), + MOVE_SLACK_OFF), +#endif //P_FAMILY_FUECOCO - egg_moves(DIGLETT_ALOLAN, - MOVE_ANCIENT_POWER, - MOVE_BEAT_UP, - MOVE_ENDURE, - MOVE_FEINT_ATTACK, - MOVE_FINAL_GAMBIT, - MOVE_HEADBUTT, - MOVE_MEMENTO, - MOVE_METAL_SOUND, - MOVE_PURSUIT, - MOVE_REVERSAL, - MOVE_THRASH), +#if P_FAMILY_QUAXLY + egg_moves(QUAXLY, + MOVE_DETECT, + MOVE_LAST_RESORT, + MOVE_RAPID_SPIN, + MOVE_ROOST), +#endif //P_FAMILY_QUAXLY - egg_moves(MEOWTH_ALOLAN, - MOVE_AMNESIA, - MOVE_ASSIST, - MOVE_CHARM, - MOVE_COVET, - MOVE_FLAIL, - MOVE_FLATTER, - MOVE_FOUL_PLAY, - MOVE_HYPNOSIS, - MOVE_PARTING_SHOT, - MOVE_PUNISHMENT, - MOVE_SNATCH, - MOVE_SPITE), - - egg_moves(GEODUDE_ALOLAN, - MOVE_AUTOTOMIZE, - MOVE_BLOCK, - MOVE_COUNTER, - MOVE_CURSE, - MOVE_ENDURE, - MOVE_FLAIL, - MOVE_MAGNET_RISE, - MOVE_ROCK_CLIMB, - MOVE_SCREECH, - MOVE_WIDE_GUARD), - - egg_moves(GRIMER_ALOLAN, - MOVE_ASSURANCE, - MOVE_CLEAR_SMOG, - MOVE_CURSE, - MOVE_IMPRISON, - MOVE_MEAN_LOOK, - MOVE_POWER_UP_PUNCH, - MOVE_PURSUIT, - MOVE_SCARY_FACE, - MOVE_SHADOW_SNEAK, - MOVE_SPITE, +#if P_FAMILY_LECHONK + egg_moves(LECHONK, + MOVE_ENDEAVOR, MOVE_SPIT_UP, MOVE_STOCKPILE, + MOVE_STUFF_CHEEKS, MOVE_SWALLOW), +#endif //P_FAMILY_LECHONK - egg_moves(MEOWTH_GALARIAN, - MOVE_SPITE, - MOVE_DOUBLE_EDGE, - MOVE_CURSE, - MOVE_FLAIL, - MOVE_NIGHT_SLASH, - MOVE_COVET), +#if P_FAMILY_TAROUNTULA + egg_moves(TAROUNTULA, + MOVE_FIRST_IMPRESSION, + MOVE_LUNGE, + MOVE_MEMENTO, + MOVE_SUCKER_PUNCH), +#endif //P_FAMILY_TAROUNTULA - egg_moves(PONYTA_GALARIAN, - MOVE_THRASH, - MOVE_DOUBLE_KICK, - MOVE_HYPNOSIS, - MOVE_DOUBLE_EDGE, - MOVE_HORN_DRILL, - MOVE_MORNING_SUN), - - egg_moves(SLOWPOKE_GALARIAN, - MOVE_BELCH, - MOVE_BELLY_DRUM, - MOVE_BLOCK, - MOVE_STOMP), - - egg_moves(FARFETCHD_GALARIAN, +#if P_FAMILY_NYMBLE + egg_moves(NYMBLE, MOVE_COUNTER, - MOVE_QUICK_ATTACK, - MOVE_FLAIL, - MOVE_QUICK_GUARD, - MOVE_CURSE, - MOVE_COVET, - MOVE_NIGHT_SLASH, - MOVE_SIMPLE_BEAM, - MOVE_DOUBLE_EDGE, + MOVE_SKITTER_SMACK), +#endif //P_FAMILY_NYMBLE + +#if P_FAMILY_PAWMI + egg_moves(PAWMI, + MOVE_FAKE_OUT, + MOVE_MACH_PUNCH, + MOVE_SWEET_KISS, + MOVE_WISH), +#endif //P_FAMILY_PAWMI + +#if P_FAMILY_TANDEMAUS + egg_moves(TANDEMAUS, + MOVE_AFTER_YOU, + MOVE_BATON_PASS, + MOVE_BITE, MOVE_FEINT, - MOVE_SKY_ATTACK), - - egg_moves(MR_MIME_GALARIAN, - MOVE_FAKE_OUT, - MOVE_CONFUSE_RAY, - MOVE_POWER_SPLIT, + MOVE_SWITCHEROO, MOVE_TICKLE), +#endif //P_FAMILY_TANDEMAUS - egg_moves(CORSOLA_GALARIAN, - MOVE_HAZE, - MOVE_CONFUSE_RAY, - MOVE_NATURE_POWER, - MOVE_DESTINY_BOND, - MOVE_WATER_PULSE, - MOVE_HEAD_SMASH), +#if P_FAMILY_FIDOUGH + egg_moves(FIDOUGH, + MOVE_COPYCAT, + MOVE_HOWL, + MOVE_SWEET_SCENT, + MOVE_WISH, + MOVE_YAWN), +#endif //P_FAMILY_FIDOUGH - egg_moves(ZIGZAGOON_GALARIAN, - MOVE_PARTING_SHOT, - MOVE_QUICK_GUARD, - MOVE_KNOCK_OFF), +#if P_FAMILY_SMOLIV + egg_moves(SMOLIV, + MOVE_MEMENTO, + MOVE_STRENGTH_SAP, + MOVE_SYNTHESIS, + MOVE_WEATHER_BALL), +#endif //P_FAMILY_SMOLIV -#if P_GEN_5_POKEMON == TRUE - egg_moves(DARUMAKA_GALARIAN, - MOVE_FOCUS_PUNCH, - MOVE_HAMMER_ARM, - MOVE_TAKE_DOWN, - MOVE_FLAME_WHEEL, - MOVE_YAWN, - MOVE_FREEZE_DRY, - MOVE_INCINERATE, - MOVE_POWER_UP_PUNCH), +#if P_FAMILY_SQUAWKABILLY + egg_moves(SQUAWKABILLY, + MOVE_DOUBLE_EDGE, + MOVE_FINAL_GAMBIT, + MOVE_FLATTER, + MOVE_PARTING_SHOT), +#endif //P_FAMILY_SQUAWKABILLY - egg_moves(YAMASK_GALARIAN, - MOVE_MEMENTO), - - egg_moves(STUNFISK_GALARIAN, - MOVE_BIND, - MOVE_YAWN, - MOVE_ASTONISH, +#if P_FAMILY_NACLI + egg_moves(NACLI, + MOVE_ANCIENT_POWER, MOVE_CURSE, - MOVE_SPITE, - MOVE_COUNTER, - MOVE_PAIN_SPLIT, - MOVE_REFLECT_TYPE), -#endif + MOVE_FISSURE, + MOVE_POWER_GEM), +#endif //P_FAMILY_NACLI - egg_moves(INDEEDEE_FEMALE, - MOVE_PSYCH_UP, - MOVE_FAKE_OUT, - MOVE_PSYCHO_SHIFT, - MOVE_HEAL_PULSE), +#if P_FAMILY_CHARCADET + egg_moves(CHARCADET, + MOVE_DESTINY_BOND, + MOVE_DISABLE, + MOVE_SPITE), +#endif //P_FAMILY_CHARCADET + +#if P_FAMILY_TADBULB + egg_moves(TADBULB, + MOVE_MUDDY_WATER, + MOVE_PARABOLIC_CHARGE, + MOVE_SOAK), +#endif //P_FAMILY_TADBULB + +#if P_FAMILY_WATTREL + egg_moves(WATTREL, + MOVE_ENDEAVOR, + MOVE_FEATHER_DANCE, + MOVE_SPIT_UP, + MOVE_STOCKPILE, + MOVE_SWALLOW, + MOVE_WEATHER_BALL), +#endif //P_FAMILY_WATTREL + +#if P_FAMILY_MASCHIFF + egg_moves(MASCHIFF, + MOVE_DESTINY_BOND, + MOVE_ENDEAVOR, + MOVE_PLAY_ROUGH, + MOVE_RETALIATE), +#endif //P_FAMILY_MASCHIFF + +#if P_FAMILY_SHROODLE + egg_moves(SHROODLE, + MOVE_COPYCAT, + MOVE_CROSS_POISON, + MOVE_PARTING_SHOT, + MOVE_SUPER_FANG, + MOVE_SWAGGER, + MOVE_TOXIC), +#endif //P_FAMILY_SHROODLE + +#if P_FAMILY_BRAMBLIN + egg_moves(BRAMBLIN, + MOVE_BEAT_UP, + MOVE_BLOCK, + MOVE_LEECH_SEED, + MOVE_SHADOW_SNEAK, + MOVE_STRENGTH_SAP), +#endif //P_FAMILY_BRAMBLIN + +#if P_FAMILY_TOEDSCOOL + egg_moves(TOEDSCOOL, + MOVE_ACUPRESSURE, + MOVE_KNOCK_OFF, + MOVE_LEECH_SEED, + MOVE_MIRROR_COAT, + MOVE_RAGE_POWDER, + MOVE_RAPID_SPIN, + MOVE_TICKLE, + MOVE_TOXIC), +#endif //P_FAMILY_TOEDSCOOL + +#if P_FAMILY_KLAWF + egg_moves(KLAWF, + MOVE_ANCIENT_POWER, + MOVE_CRABHAMMER, + MOVE_ENDEAVOR, + MOVE_KNOCK_OFF), +#endif //P_FAMILY_KLAWF + +#if P_FAMILY_CAPSAKID + egg_moves(CAPSAKID, + MOVE_INGRAIN, + MOVE_LEECH_SEED, + MOVE_RAGE_POWDER, + MOVE_ROLLOUT, + MOVE_WORRY_SEED), +#endif //P_FAMILY_CAPSAKID + +#if P_FAMILY_RELLOR + egg_moves(RELLOR, + MOVE_COSMIC_POWER, + MOVE_MEMENTO, + MOVE_RECOVER, + MOVE_WEATHER_BALL), +#endif //P_FAMILY_RELLOR + +#if P_FAMILY_FLITTLE + egg_moves(FLITTLE, + MOVE_ALLY_SWITCH, + MOVE_HYPNOSIS, + MOVE_ROOST), +#endif //P_FAMILY_FLITTLE + +#if P_FAMILY_TINKATINK + egg_moves(TINKATINK, + MOVE_FEINT, + MOVE_ICE_HAMMER, + MOVE_QUASH), +#endif //P_FAMILY_TINKATINK + +#if P_FAMILY_WIGLETT + egg_moves(WIGLETT, + MOVE_FINAL_GAMBIT, + MOVE_MEMENTO), +#endif //P_FAMILY_WIGLETT + +#if P_FAMILY_BOMBIRDIER + egg_moves(BOMBIRDIER, + MOVE_FEATHER_DANCE, + MOVE_POWER_TRIP, + MOVE_ROOST, + MOVE_SKY_ATTACK, + MOVE_SUCKER_PUNCH), +#endif //P_FAMILY_BOMBIRDIER + +#if P_FAMILY_FINIZEN + egg_moves(FINIZEN, + MOVE_BOOMBURST, + MOVE_BOUNCE, + MOVE_COUNTER, + MOVE_HAZE, + MOVE_TICKLE), +#endif //P_FAMILY_FINIZEN + +#if P_FAMILY_VAROOM + egg_moves(VAROOM, + MOVE_HAZE, + MOVE_PARTING_SHOT, + MOVE_SELF_DESTRUCT, + MOVE_TORMENT, + MOVE_TOXIC), +#endif //P_FAMILY_VAROOM + +#if P_FAMILY_CYCLIZAR + egg_moves(CYCLIZAR, + MOVE_AQUA_TAIL, + MOVE_IRON_TAIL, + MOVE_KNOCK_OFF, + MOVE_POWER_WHIP), +#endif //P_FAMILY_CYCLIZAR + +#if P_FAMILY_ORTHWORM + egg_moves(ORTHWORM, + MOVE_COIL, + MOVE_CURSE, + MOVE_METAL_BURST), +#endif //P_FAMILY_ORTHWORM + +#if P_FAMILY_GLIMMET + egg_moves(GLIMMET, + MOVE_EXPLOSION, + MOVE_MEMENTO, + MOVE_TOXIC), +#endif //P_FAMILY_GLIMMET + +#if P_FAMILY_GREAVARD + egg_moves(GREAVARD, + MOVE_ALLY_SWITCH, + MOVE_DESTINY_BOND, + MOVE_DISABLE, + MOVE_HOWL, + MOVE_MEMENTO, + MOVE_SHADOW_SNEAK, + MOVE_YAWN), +#endif //P_FAMILY_GREAVARD + +#if P_FAMILY_FLAMIGO + egg_moves(FLAMIGO, + MOVE_DOUBLE_TEAM, + MOVE_QUICK_GUARD, + MOVE_SKY_ATTACK), +#endif //P_FAMILY_FLAMIGO + +#if P_FAMILY_CETODDLE + egg_moves(CETODDLE, + MOVE_BELLY_DRUM, + MOVE_ENTRAINMENT, + MOVE_ICICLE_CRASH, + MOVE_SUPERPOWER, + MOVE_YAWN), +#endif //P_FAMILY_CETODDLE + +#if P_FAMILY_VELUZA + egg_moves(VELUZA, + MOVE_RECOVER, + MOVE_THRASH), +#endif //P_FAMILY_VELUZA + +#if P_FAMILY_DONDOZO + egg_moves(DONDOZO, + MOVE_CURSE, + MOVE_FISSURE, + MOVE_THRASH, + MOVE_YAWN), +#endif //P_FAMILY_DONDOZO + +#if P_FAMILY_TATSUGIRI + egg_moves(TATSUGIRI, + MOVE_BATON_PASS, + MOVE_COUNTER, + MOVE_RAPID_SPIN), +#endif //P_FAMILY_TATSUGIRI + +#if P_FAMILY_FRIGIBAX + egg_moves(FRIGIBAX, + MOVE_AQUA_TAIL, + MOVE_DRAGON_RUSH, + MOVE_FREEZE_DRY, + MOVE_ICICLE_SPEAR), +#endif //P_FAMILY_FRIGIBAX EGG_MOVES_TERMINATOR }; + diff --git a/src/data/pokemon/evolution.h b/src/data/pokemon/evolution.h deleted file mode 100644 index b26f577257..0000000000 --- a/src/data/pokemon/evolution.h +++ /dev/null @@ -1,608 +0,0 @@ -const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] = -{ - [SPECIES_BULBASAUR] = {{EVO_LEVEL, 16, SPECIES_IVYSAUR}}, - [SPECIES_IVYSAUR] = {{EVO_LEVEL, 32, SPECIES_VENUSAUR}}, - [SPECIES_CHARMANDER] = {{EVO_LEVEL, 16, SPECIES_CHARMELEON}}, - [SPECIES_CHARMELEON] = {{EVO_LEVEL, 36, SPECIES_CHARIZARD}}, - [SPECIES_SQUIRTLE] = {{EVO_LEVEL, 16, SPECIES_WARTORTLE}}, - [SPECIES_WARTORTLE] = {{EVO_LEVEL, 36, SPECIES_BLASTOISE}}, - [SPECIES_CATERPIE] = {{EVO_LEVEL, 7, SPECIES_METAPOD}}, - [SPECIES_METAPOD] = {{EVO_LEVEL, 10, SPECIES_BUTTERFREE}}, - [SPECIES_WEEDLE] = {{EVO_LEVEL, 7, SPECIES_KAKUNA}}, - [SPECIES_KAKUNA] = {{EVO_LEVEL, 10, SPECIES_BEEDRILL}}, - [SPECIES_PIDGEY] = {{EVO_LEVEL, 18, SPECIES_PIDGEOTTO}}, - [SPECIES_PIDGEOTTO] = {{EVO_LEVEL, 36, SPECIES_PIDGEOT}}, - [SPECIES_RATTATA] = {{EVO_LEVEL, 20, SPECIES_RATICATE}}, - [SPECIES_SPEAROW] = {{EVO_LEVEL, 20, SPECIES_FEAROW}}, - [SPECIES_EKANS] = {{EVO_LEVEL, 22, SPECIES_ARBOK}}, - [SPECIES_PIKACHU] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU}, - {EVO_NONE, 0, SPECIES_RAICHU_ALOLAN}}, - [SPECIES_SANDSHREW] = {{EVO_LEVEL, 22, SPECIES_SANDSLASH}}, - [SPECIES_NIDORAN_F] = {{EVO_LEVEL, 16, SPECIES_NIDORINA}}, - [SPECIES_NIDORINA] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}}, - [SPECIES_NIDORAN_M] = {{EVO_LEVEL, 16, SPECIES_NIDORINO}}, - [SPECIES_NIDORINO] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}}, - [SPECIES_CLEFAIRY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}}, - [SPECIES_VULPIX] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}}, - [SPECIES_JIGGLYPUFF] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}}, - [SPECIES_ZUBAT] = {{EVO_LEVEL, 22, SPECIES_GOLBAT}}, - [SPECIES_GOLBAT] = {{EVO_FRIENDSHIP, 0, SPECIES_CROBAT}}, - [SPECIES_ODDISH] = {{EVO_LEVEL, 21, SPECIES_GLOOM}}, - [SPECIES_GLOOM] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME}, - {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}}, - [SPECIES_PARAS] = {{EVO_LEVEL, 24, SPECIES_PARASECT}}, - [SPECIES_VENONAT] = {{EVO_LEVEL, 31, SPECIES_VENOMOTH}}, - [SPECIES_DIGLETT] = {{EVO_LEVEL, 26, SPECIES_DUGTRIO}}, - [SPECIES_MEOWTH] = {{EVO_LEVEL, 28, SPECIES_PERSIAN}}, - [SPECIES_PSYDUCK] = {{EVO_LEVEL, 33, SPECIES_GOLDUCK}}, - [SPECIES_MANKEY] = {{EVO_LEVEL, 28, SPECIES_PRIMEAPE}}, - [SPECIES_GROWLITHE] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}}, - [SPECIES_GROWLITHE_HISUIAN] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE_HISUIAN}}, - [SPECIES_POLIWAG] = {{EVO_LEVEL, 25, SPECIES_POLIWHIRL}}, - [SPECIES_POLIWHIRL] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH}, - {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}, - {EVO_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}}, - [SPECIES_ABRA] = {{EVO_LEVEL, 16, SPECIES_KADABRA}}, - [SPECIES_KADABRA] = {{EVO_TRADE, 0, SPECIES_ALAKAZAM}, - {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_ALAKAZAM}}, - [SPECIES_MACHOP] = {{EVO_LEVEL, 28, SPECIES_MACHOKE}}, - [SPECIES_MACHOKE] = {{EVO_TRADE, 0, SPECIES_MACHAMP}, - {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_MACHAMP}}, - [SPECIES_BELLSPROUT] = {{EVO_LEVEL, 21, SPECIES_WEEPINBELL}}, - [SPECIES_WEEPINBELL] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}}, - [SPECIES_TENTACOOL] = {{EVO_LEVEL, 30, SPECIES_TENTACRUEL}}, - [SPECIES_GEODUDE] = {{EVO_LEVEL, 25, SPECIES_GRAVELER}}, - [SPECIES_GRAVELER] = {{EVO_TRADE, 0, SPECIES_GOLEM}, - {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOLEM}}, - [SPECIES_PONYTA] = {{EVO_LEVEL, 40, SPECIES_RAPIDASH}}, - [SPECIES_SLOWPOKE] = {{EVO_LEVEL, 37, SPECIES_SLOWBRO}, - {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}, - {EVO_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}}, - [SPECIES_MAGNEMITE] = {{EVO_LEVEL, 30, SPECIES_MAGNETON}}, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_MAGNETON] = {{EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_MAGNEZONE}, - {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_MAGNEZONE}}, -#endif - [SPECIES_DODUO] = {{EVO_LEVEL, 31, SPECIES_DODRIO}}, - [SPECIES_SEEL] = {{EVO_LEVEL, 34, SPECIES_DEWGONG}}, - [SPECIES_GRIMER] = {{EVO_LEVEL, 38, SPECIES_MUK}}, - [SPECIES_SHELLDER] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}}, - [SPECIES_GASTLY] = {{EVO_LEVEL, 25, SPECIES_HAUNTER}}, - [SPECIES_HAUNTER] = {{EVO_TRADE, 0, SPECIES_GENGAR}, - {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GENGAR}}, - [SPECIES_ONIX] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}, - {EVO_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}}, - [SPECIES_DROWZEE] = {{EVO_LEVEL, 26, SPECIES_HYPNO}}, - [SPECIES_KRABBY] = {{EVO_LEVEL, 28, SPECIES_KINGLER}}, - [SPECIES_VOLTORB] = {{EVO_LEVEL, 30, SPECIES_ELECTRODE}}, - [SPECIES_VOLTORB_HISUIAN] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_ELECTRODE_HISUIAN}}, - [SPECIES_EXEGGCUTE] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}, - {EVO_NONE, 0, SPECIES_EXEGGUTOR_ALOLAN}}, - [SPECIES_CUBONE] = {{EVO_LEVEL, 28, SPECIES_MAROWAK}, - {EVO_NONE, 0, SPECIES_MAROWAK_ALOLAN}}, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_LICKITUNG] = {{EVO_MOVE, MOVE_ROLLOUT, SPECIES_LICKILICKY}}, -#endif - [SPECIES_KOFFING] = {{EVO_LEVEL, 35, SPECIES_WEEZING}, - {EVO_NONE, 0, SPECIES_WEEZING_GALARIAN}}, - [SPECIES_RHYHORN] = {{EVO_LEVEL, 42, SPECIES_RHYDON}}, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_RHYDON] = {{EVO_TRADE_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}, - {EVO_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}}, -#endif - [SPECIES_CHANSEY] = {{EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}}, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_TANGELA] = {{EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_TANGROWTH}}, -#endif - [SPECIES_HORSEA] = {{EVO_LEVEL, 32, SPECIES_SEADRA}}, - [SPECIES_SEADRA] = {{EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}, - {EVO_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}}, - [SPECIES_GOLDEEN] = {{EVO_LEVEL, 33, SPECIES_SEAKING}}, - [SPECIES_STARYU] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}}, - [SPECIES_SCYTHER] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}, - {EVO_ITEM, ITEM_BLACK_AUGURITE, SPECIES_KLEAVOR}, - {EVO_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}}, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_ELECTABUZZ] = {{EVO_TRADE_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}, - {EVO_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}}, - [SPECIES_MAGMAR] = {{EVO_TRADE_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}, - {EVO_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}}, -#endif - [SPECIES_MAGIKARP] = {{EVO_LEVEL, 20, SPECIES_GYARADOS}}, - [SPECIES_EEVEE] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON}, - {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON}, - {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON}, - {EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON}, - {EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON}, - #if P_GEN_4_POKEMON == TRUE - {EVO_SPECIFIC_MAP, MAP_PETALBURG_WOODS, SPECIES_LEAFEON}, - {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_LEAFEON}, - {EVO_SPECIFIC_MAP, MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM, SPECIES_GLACEON}, - {EVO_ITEM, ITEM_ICE_STONE, SPECIES_GLACEON}, - #endif - #if P_GEN_6_POKEMON == TRUE - {EVO_FRIENDSHIP_MOVE_TYPE, TYPE_FAIRY, SPECIES_SYLVEON} - #endif - }, - [SPECIES_PORYGON] = {{EVO_TRADE_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}, - {EVO_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}}, - [SPECIES_OMANYTE] = {{EVO_LEVEL, 40, SPECIES_OMASTAR}}, - [SPECIES_KABUTO] = {{EVO_LEVEL, 40, SPECIES_KABUTOPS}}, - [SPECIES_DRATINI] = {{EVO_LEVEL, 30, SPECIES_DRAGONAIR}}, - [SPECIES_DRAGONAIR] = {{EVO_LEVEL, 55, SPECIES_DRAGONITE}}, - [SPECIES_CHIKORITA] = {{EVO_LEVEL, 16, SPECIES_BAYLEEF}}, - [SPECIES_BAYLEEF] = {{EVO_LEVEL, 32, SPECIES_MEGANIUM}}, - [SPECIES_CYNDAQUIL] = {{EVO_LEVEL, 14, SPECIES_QUILAVA}}, - [SPECIES_QUILAVA] = {{EVO_LEVEL, 36, SPECIES_TYPHLOSION}, - {EVO_NONE, 0, SPECIES_TYPHLOSION_HISUIAN}}, - [SPECIES_TOTODILE] = {{EVO_LEVEL, 18, SPECIES_CROCONAW}}, - [SPECIES_CROCONAW] = {{EVO_LEVEL, 30, SPECIES_FERALIGATR}}, - [SPECIES_SENTRET] = {{EVO_LEVEL, 15, SPECIES_FURRET}}, - [SPECIES_HOOTHOOT] = {{EVO_LEVEL, 20, SPECIES_NOCTOWL}}, - [SPECIES_LEDYBA] = {{EVO_LEVEL, 18, SPECIES_LEDIAN}}, - [SPECIES_SPINARAK] = {{EVO_LEVEL, 22, SPECIES_ARIADOS}}, - [SPECIES_CHINCHOU] = {{EVO_LEVEL, 27, SPECIES_LANTURN}}, - [SPECIES_PICHU] = {{EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}}, - [SPECIES_CLEFFA] = {{EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}}, - [SPECIES_IGGLYBUFF] = {{EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}}, - [SPECIES_TOGEPI] = {{EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}}, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_TOGETIC] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_TOGEKISS}}, -#endif - [SPECIES_NATU] = {{EVO_LEVEL, 25, SPECIES_XATU}}, - [SPECIES_MAREEP] = {{EVO_LEVEL, 15, SPECIES_FLAAFFY}}, - [SPECIES_FLAAFFY] = {{EVO_LEVEL, 30, SPECIES_AMPHAROS}}, - [SPECIES_MARILL] = {{EVO_LEVEL, 18, SPECIES_AZUMARILL}}, - [SPECIES_HOPPIP] = {{EVO_LEVEL, 18, SPECIES_SKIPLOOM}}, - [SPECIES_SKIPLOOM] = {{EVO_LEVEL, 27, SPECIES_JUMPLUFF}}, - [SPECIES_AIPOM] = {{EVO_MOVE, MOVE_DOUBLE_HIT, SPECIES_AMBIPOM}}, - [SPECIES_SUNKERN] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}}, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_YANMA] = {{EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_YANMEGA}}, -#endif - [SPECIES_WOOPER] = {{EVO_LEVEL, 20, SPECIES_QUAGSIRE}}, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_MURKROW] = {{EVO_ITEM, ITEM_DUSK_STONE, SPECIES_HONCHKROW}}, - [SPECIES_MISDREAVUS] = {{EVO_ITEM, ITEM_DUSK_STONE, SPECIES_MISMAGIUS}}, -#endif - [SPECIES_PINECO] = {{EVO_LEVEL, 31, SPECIES_FORRETRESS}}, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_GLIGAR] = {{EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR}, - {EVO_ITEM_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR}}, -#endif - [SPECIES_SNUBBULL] = {{EVO_LEVEL, 23, SPECIES_GRANBULL}}, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_SNEASEL] = {{EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_CLAW, SPECIES_WEAVILE}, - {EVO_ITEM_NIGHT, ITEM_RAZOR_CLAW, SPECIES_WEAVILE}}, -#endif - [SPECIES_TEDDIURSA] = {{EVO_LEVEL, 30, SPECIES_URSARING}}, - [SPECIES_SLUGMA] = {{EVO_LEVEL, 38, SPECIES_MAGCARGO}}, - [SPECIES_SWINUB] = {{EVO_LEVEL, 33, SPECIES_PILOSWINE}}, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_PILOSWINE] = {{EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_MAMOSWINE}}, -#endif - [SPECIES_REMORAID] = {{EVO_LEVEL, 25, SPECIES_OCTILLERY}}, - [SPECIES_HOUNDOUR] = {{EVO_LEVEL, 24, SPECIES_HOUNDOOM}}, - [SPECIES_PHANPY] = {{EVO_LEVEL, 25, SPECIES_DONPHAN}}, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_PORYGON2] = {{EVO_TRADE_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}, - {EVO_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}}, -#endif - [SPECIES_TYROGUE] = {{EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN}, - {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE}, - {EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP}}, - [SPECIES_SMOOCHUM] = {{EVO_LEVEL, 30, SPECIES_JYNX}}, - [SPECIES_ELEKID] = {{EVO_LEVEL, 30, SPECIES_ELECTABUZZ}}, - [SPECIES_MAGBY] = {{EVO_LEVEL, 30, SPECIES_MAGMAR}}, - [SPECIES_LARVITAR] = {{EVO_LEVEL, 30, SPECIES_PUPITAR}}, - [SPECIES_PUPITAR] = {{EVO_LEVEL, 55, SPECIES_TYRANITAR}}, - [SPECIES_TREECKO] = {{EVO_LEVEL, 16, SPECIES_GROVYLE}}, - [SPECIES_GROVYLE] = {{EVO_LEVEL, 36, SPECIES_SCEPTILE}}, - [SPECIES_TORCHIC] = {{EVO_LEVEL, 16, SPECIES_COMBUSKEN}}, - [SPECIES_COMBUSKEN] = {{EVO_LEVEL, 36, SPECIES_BLAZIKEN}}, - [SPECIES_MUDKIP] = {{EVO_LEVEL, 16, SPECIES_MARSHTOMP}}, - [SPECIES_MARSHTOMP] = {{EVO_LEVEL, 36, SPECIES_SWAMPERT}}, - [SPECIES_POOCHYENA] = {{EVO_LEVEL, 18, SPECIES_MIGHTYENA}}, - [SPECIES_ZIGZAGOON] = {{EVO_LEVEL, 20, SPECIES_LINOONE}}, - [SPECIES_WURMPLE] = {{EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON}, - {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}}, - [SPECIES_SILCOON] = {{EVO_LEVEL, 10, SPECIES_BEAUTIFLY}}, - [SPECIES_CASCOON] = {{EVO_LEVEL, 10, SPECIES_DUSTOX}}, - [SPECIES_LOTAD] = {{EVO_LEVEL, 14, SPECIES_LOMBRE}}, - [SPECIES_LOMBRE] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}}, - [SPECIES_SEEDOT] = {{EVO_LEVEL, 14, SPECIES_NUZLEAF}}, - [SPECIES_NUZLEAF] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}}, - [SPECIES_NINCADA] = {{EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK}, - {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}}, - [SPECIES_TAILLOW] = {{EVO_LEVEL, 22, SPECIES_SWELLOW}}, - [SPECIES_SHROOMISH] = {{EVO_LEVEL, 23, SPECIES_BRELOOM}}, - [SPECIES_WINGULL] = {{EVO_LEVEL, 25, SPECIES_PELIPPER}}, - [SPECIES_SURSKIT] = {{EVO_LEVEL, 22, SPECIES_MASQUERAIN}}, - [SPECIES_WAILMER] = {{EVO_LEVEL, 40, SPECIES_WAILORD}}, - [SPECIES_SKITTY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}}, - [SPECIES_BALTOY] = {{EVO_LEVEL, 36, SPECIES_CLAYDOL}}, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_NOSEPASS] = {{EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_PROBOPASS}, - {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_PROBOPASS}}, -#endif - [SPECIES_BARBOACH] = {{EVO_LEVEL, 30, SPECIES_WHISCASH}}, - [SPECIES_CORPHISH] = {{EVO_LEVEL, 30, SPECIES_CRAWDAUNT}}, - [SPECIES_FEEBAS] = {{EVO_BEAUTY, 170, SPECIES_MILOTIC}, - {EVO_TRADE_ITEM, ITEM_PRISM_SCALE, SPECIES_MILOTIC}, - {EVO_ITEM, ITEM_PRISM_SCALE, SPECIES_MILOTIC}}, - [SPECIES_CARVANHA] = {{EVO_LEVEL, 30, SPECIES_SHARPEDO}}, - [SPECIES_TRAPINCH] = {{EVO_LEVEL, 35, SPECIES_VIBRAVA}}, - [SPECIES_VIBRAVA] = {{EVO_LEVEL, 45, SPECIES_FLYGON}}, - [SPECIES_MAKUHITA] = {{EVO_LEVEL, 24, SPECIES_HARIYAMA}}, - [SPECIES_ELECTRIKE] = {{EVO_LEVEL, 26, SPECIES_MANECTRIC}}, - [SPECIES_NUMEL] = {{EVO_LEVEL, 33, SPECIES_CAMERUPT}}, - [SPECIES_SPHEAL] = {{EVO_LEVEL, 32, SPECIES_SEALEO}}, - [SPECIES_SEALEO] = {{EVO_LEVEL, 44, SPECIES_WALREIN}}, - [SPECIES_CACNEA] = {{EVO_LEVEL, 32, SPECIES_CACTURNE}}, - [SPECIES_SNORUNT] = {{EVO_LEVEL, 42, SPECIES_GLALIE}, - #if P_GEN_4_POKEMON == TRUE - {EVO_ITEM_FEMALE, ITEM_DAWN_STONE, SPECIES_FROSLASS} - #endif - }, - [SPECIES_AZURILL] = {{EVO_FRIENDSHIP, 0, SPECIES_MARILL}}, - [SPECIES_SPOINK] = {{EVO_LEVEL, 32, SPECIES_GRUMPIG}}, - [SPECIES_MEDITITE] = {{EVO_LEVEL, 37, SPECIES_MEDICHAM}}, - [SPECIES_SWABLU] = {{EVO_LEVEL, 35, SPECIES_ALTARIA}}, - [SPECIES_WYNAUT] = {{EVO_LEVEL, 15, SPECIES_WOBBUFFET}}, - [SPECIES_DUSKULL] = {{EVO_LEVEL, 37, SPECIES_DUSCLOPS}}, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_DUSCLOPS] = {{EVO_TRADE_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}, - {EVO_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}}, - [SPECIES_ROSELIA] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_ROSERADE}}, -#endif - [SPECIES_SLAKOTH] = {{EVO_LEVEL, 18, SPECIES_VIGOROTH}}, - [SPECIES_VIGOROTH] = {{EVO_LEVEL, 36, SPECIES_SLAKING}}, - [SPECIES_GULPIN] = {{EVO_LEVEL, 26, SPECIES_SWALOT}}, - [SPECIES_WHISMUR] = {{EVO_LEVEL, 20, SPECIES_LOUDRED}}, - [SPECIES_LOUDRED] = {{EVO_LEVEL, 40, SPECIES_EXPLOUD}}, - [SPECIES_CLAMPERL] = {{EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, - {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}, - {EVO_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, - {EVO_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}}, - [SPECIES_SHUPPET] = {{EVO_LEVEL, 37, SPECIES_BANETTE}}, - [SPECIES_ARON] = {{EVO_LEVEL, 32, SPECIES_LAIRON}}, - [SPECIES_LAIRON] = {{EVO_LEVEL, 42, SPECIES_AGGRON}}, - [SPECIES_LILEEP] = {{EVO_LEVEL, 40, SPECIES_CRADILY}}, - [SPECIES_ANORITH] = {{EVO_LEVEL, 40, SPECIES_ARMALDO}}, - [SPECIES_RALTS] = {{EVO_LEVEL, 20, SPECIES_KIRLIA}}, - [SPECIES_KIRLIA] = {{EVO_LEVEL, 30, SPECIES_GARDEVOIR}, - #if P_GEN_4_POKEMON == TRUE - {EVO_ITEM_MALE, ITEM_DAWN_STONE, SPECIES_GALLADE} - #endif - }, - [SPECIES_BAGON] = {{EVO_LEVEL, 30, SPECIES_SHELGON}}, - [SPECIES_SHELGON] = {{EVO_LEVEL, 50, SPECIES_SALAMENCE}}, - [SPECIES_BELDUM] = {{EVO_LEVEL, 20, SPECIES_METANG}}, - [SPECIES_METANG] = {{EVO_LEVEL, 45, SPECIES_METAGROSS}}, -#if P_GEN_4_POKEMON == TRUE - // Gens 4-7 - [SPECIES_TURTWIG] = {{EVO_LEVEL, 18, SPECIES_GROTLE}}, - [SPECIES_GROTLE] = {{EVO_LEVEL, 32, SPECIES_TORTERRA}}, - [SPECIES_CHIMCHAR] = {{EVO_LEVEL, 14, SPECIES_MONFERNO}}, - [SPECIES_MONFERNO] = {{EVO_LEVEL, 36, SPECIES_INFERNAPE}}, - [SPECIES_PIPLUP] = {{EVO_LEVEL, 16, SPECIES_PRINPLUP}}, - [SPECIES_PRINPLUP] = {{EVO_LEVEL, 36, SPECIES_EMPOLEON}}, - [SPECIES_STARLY] = {{EVO_LEVEL, 14, SPECIES_STARAVIA}}, - [SPECIES_STARAVIA] = {{EVO_LEVEL, 34, SPECIES_STARAPTOR}}, - [SPECIES_BIDOOF] = {{EVO_LEVEL, 15, SPECIES_BIBAREL}}, - [SPECIES_KRICKETOT] = {{EVO_LEVEL, 10, SPECIES_KRICKETUNE}}, - [SPECIES_SHINX] = {{EVO_LEVEL, 15, SPECIES_LUXIO}}, - [SPECIES_LUXIO] = {{EVO_LEVEL, 30, SPECIES_LUXRAY}}, - [SPECIES_BUDEW] = {{EVO_FRIENDSHIP_DAY, 0, SPECIES_ROSELIA}}, - [SPECIES_CRANIDOS] = {{EVO_LEVEL, 30, SPECIES_RAMPARDOS}}, - [SPECIES_SHIELDON] = {{EVO_LEVEL, 30, SPECIES_BASTIODON}}, - [SPECIES_BURMY] = {{EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM}, - {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM}}, - [SPECIES_COMBEE] = {{EVO_LEVEL_FEMALE, 21, SPECIES_VESPIQUEN}}, - [SPECIES_BUIZEL] = {{EVO_LEVEL, 26, SPECIES_FLOATZEL}}, - [SPECIES_CHERUBI] = {{EVO_LEVEL, 25, SPECIES_CHERRIM}}, - [SPECIES_SHELLOS] = {{EVO_LEVEL, 30, SPECIES_GASTRODON}}, - [SPECIES_DRIFLOON] = {{EVO_LEVEL, 28, SPECIES_DRIFBLIM}}, - [SPECIES_BUNEARY] = {{EVO_FRIENDSHIP, 0, SPECIES_LOPUNNY}}, - [SPECIES_GLAMEOW] = {{EVO_LEVEL, 38, SPECIES_PURUGLY}}, - [SPECIES_CHINGLING] = {{EVO_FRIENDSHIP_NIGHT, 0, SPECIES_CHIMECHO}}, - [SPECIES_STUNKY] = {{EVO_LEVEL, 34, SPECIES_SKUNTANK}}, - [SPECIES_BRONZOR] = {{EVO_LEVEL, 33, SPECIES_BRONZONG}}, - [SPECIES_BONSLY] = {{EVO_MOVE, MOVE_MIMIC, SPECIES_SUDOWOODO}}, - [SPECIES_MIME_JR] = {{EVO_MOVE, MOVE_MIMIC, SPECIES_MR_MIME}, - {EVO_NONE, 0, SPECIES_MR_MIME_GALARIAN}}, - [SPECIES_HAPPINY] = {{EVO_ITEM_HOLD_DAY, ITEM_OVAL_STONE, SPECIES_CHANSEY}, - {EVO_ITEM_DAY, ITEM_OVAL_STONE, SPECIES_CHANSEY}}, - [SPECIES_GIBLE] = {{EVO_LEVEL, 24, SPECIES_GABITE}}, - [SPECIES_GABITE] = {{EVO_LEVEL, 48, SPECIES_GARCHOMP}}, - [SPECIES_MUNCHLAX] = {{EVO_FRIENDSHIP, 0, SPECIES_SNORLAX}}, - [SPECIES_RIOLU] = {{EVO_FRIENDSHIP_DAY, 0, SPECIES_LUCARIO}}, - [SPECIES_HIPPOPOTAS] = {{EVO_LEVEL, 34, SPECIES_HIPPOWDON}}, - [SPECIES_SKORUPI] = {{EVO_LEVEL, 40, SPECIES_DRAPION}}, - [SPECIES_CROAGUNK] = {{EVO_LEVEL, 37, SPECIES_TOXICROAK}}, - [SPECIES_FINNEON] = {{EVO_LEVEL, 31, SPECIES_LUMINEON}}, - [SPECIES_MANTYKE] = {{EVO_SPECIFIC_MON_IN_PARTY, SPECIES_REMORAID, SPECIES_MANTINE}}, - [SPECIES_SNOVER] = {{EVO_LEVEL, 40, SPECIES_ABOMASNOW}}, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_SNIVY] = {{EVO_LEVEL, 17, SPECIES_SERVINE}}, - [SPECIES_SERVINE] = {{EVO_LEVEL, 36, SPECIES_SERPERIOR}}, - [SPECIES_TEPIG] = {{EVO_LEVEL, 17, SPECIES_PIGNITE}}, - [SPECIES_PIGNITE] = {{EVO_LEVEL, 36, SPECIES_EMBOAR}}, - [SPECIES_OSHAWOTT] = {{EVO_LEVEL, 17, SPECIES_DEWOTT}}, - [SPECIES_DEWOTT] = {{EVO_LEVEL, 36, SPECIES_SAMUROTT}, - {EVO_NONE, 0, SPECIES_SAMUROTT_HISUIAN}}, - [SPECIES_PATRAT] = {{EVO_LEVEL, 20, SPECIES_WATCHOG}}, - [SPECIES_LILLIPUP] = {{EVO_LEVEL, 16, SPECIES_HERDIER}}, - [SPECIES_HERDIER] = {{EVO_LEVEL, 32, SPECIES_STOUTLAND}}, - [SPECIES_PURRLOIN] = {{EVO_LEVEL, 20, SPECIES_LIEPARD}}, - [SPECIES_PANSAGE] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SIMISAGE}}, - [SPECIES_PANSEAR] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_SIMISEAR}}, - [SPECIES_PANPOUR] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_SIMIPOUR}}, - [SPECIES_MUNNA] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_MUSHARNA}}, - [SPECIES_PIDOVE] = {{EVO_LEVEL, 21, SPECIES_TRANQUILL}}, - [SPECIES_TRANQUILL] = {{EVO_LEVEL, 32, SPECIES_UNFEZANT}}, - [SPECIES_BLITZLE] = {{EVO_LEVEL, 27, SPECIES_ZEBSTRIKA}}, - [SPECIES_ROGGENROLA] = {{EVO_LEVEL, 25, SPECIES_BOLDORE}}, - [SPECIES_BOLDORE] = {{EVO_TRADE, 0, SPECIES_GIGALITH}, - {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GIGALITH}}, - [SPECIES_WOOBAT] = {{EVO_FRIENDSHIP, 0, SPECIES_SWOOBAT}}, - [SPECIES_DRILBUR] = {{EVO_LEVEL, 31, SPECIES_EXCADRILL}}, - [SPECIES_TIMBURR] = {{EVO_LEVEL, 25, SPECIES_GURDURR}}, - [SPECIES_GURDURR] = {{EVO_TRADE, 0, SPECIES_CONKELDURR}, - {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_CONKELDURR}}, - [SPECIES_TYMPOLE] = {{EVO_LEVEL, 25, SPECIES_PALPITOAD}}, - [SPECIES_PALPITOAD] = {{EVO_LEVEL, 36, SPECIES_SEISMITOAD}}, - [SPECIES_SEWADDLE] = {{EVO_LEVEL, 20, SPECIES_SWADLOON}}, - [SPECIES_SWADLOON] = {{EVO_FRIENDSHIP, 0, SPECIES_LEAVANNY}}, - [SPECIES_VENIPEDE] = {{EVO_LEVEL, 22, SPECIES_WHIRLIPEDE}}, - [SPECIES_WHIRLIPEDE] = {{EVO_LEVEL, 30, SPECIES_SCOLIPEDE}}, - [SPECIES_COTTONEE] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_WHIMSICOTT}}, - [SPECIES_PETILIL] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_LILLIGANT}, - {EVO_NONE, 0, SPECIES_LILLIGANT_HISUIAN}}, - [SPECIES_SANDILE] = {{EVO_LEVEL, 29, SPECIES_KROKOROK}}, - [SPECIES_KROKOROK] = {{EVO_LEVEL, 40, SPECIES_KROOKODILE}}, - [SPECIES_DARUMAKA] = {{EVO_LEVEL, 35, SPECIES_DARMANITAN}}, - [SPECIES_DWEBBLE] = {{EVO_LEVEL, 34, SPECIES_CRUSTLE}}, - [SPECIES_SCRAGGY] = {{EVO_LEVEL, 39, SPECIES_SCRAFTY}}, - [SPECIES_YAMASK] = {{EVO_LEVEL, 34, SPECIES_COFAGRIGUS}}, - [SPECIES_TIRTOUGA] = {{EVO_LEVEL, 37, SPECIES_CARRACOSTA}}, - [SPECIES_ARCHEN] = {{EVO_LEVEL, 37, SPECIES_ARCHEOPS}}, - [SPECIES_TRUBBISH] = {{EVO_LEVEL, 36, SPECIES_GARBODOR}}, - [SPECIES_ZORUA] = {{EVO_LEVEL, 30, SPECIES_ZOROARK}}, - [SPECIES_ZORUA_HISUIAN] = {{EVO_LEVEL, 30, SPECIES_ZOROARK_HISUIAN}}, - [SPECIES_MINCCINO] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_CINCCINO}}, - [SPECIES_GOTHITA] = {{EVO_LEVEL, 32, SPECIES_GOTHORITA}}, - [SPECIES_GOTHORITA] = {{EVO_LEVEL, 41, SPECIES_GOTHITELLE}}, - [SPECIES_SOLOSIS] = {{EVO_LEVEL, 32, SPECIES_DUOSION}}, - [SPECIES_DUOSION] = {{EVO_LEVEL, 41, SPECIES_REUNICLUS}}, - [SPECIES_DUCKLETT] = {{EVO_LEVEL, 35, SPECIES_SWANNA}}, - [SPECIES_VANILLITE] = {{EVO_LEVEL, 35, SPECIES_VANILLISH}}, - [SPECIES_VANILLISH] = {{EVO_LEVEL, 47, SPECIES_VANILLUXE}}, - [SPECIES_DEERLING] = {{EVO_LEVEL, 34, SPECIES_SAWSBUCK}}, - [SPECIES_KARRABLAST] = {{EVO_TRADE_SPECIFIC_MON, SPECIES_SHELMET, SPECIES_ESCAVALIER}}, - [SPECIES_FOONGUS] = {{EVO_LEVEL, 39, SPECIES_AMOONGUSS}}, - [SPECIES_FRILLISH] = {{EVO_LEVEL, 40, SPECIES_JELLICENT}}, - [SPECIES_JOLTIK] = {{EVO_LEVEL, 36, SPECIES_GALVANTULA}}, - [SPECIES_FERROSEED] = {{EVO_LEVEL, 40, SPECIES_FERROTHORN}}, - [SPECIES_KLINK] = {{EVO_LEVEL, 38, SPECIES_KLANG}}, - [SPECIES_KLANG] = {{EVO_LEVEL, 49, SPECIES_KLINKLANG}}, - [SPECIES_TYNAMO] = {{EVO_LEVEL, 39, SPECIES_EELEKTRIK}}, - [SPECIES_EELEKTRIK] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_EELEKTROSS}}, - [SPECIES_ELGYEM] = {{EVO_LEVEL, 42, SPECIES_BEHEEYEM}}, - [SPECIES_LITWICK] = {{EVO_LEVEL, 41, SPECIES_LAMPENT}}, - [SPECIES_LAMPENT] = {{EVO_ITEM, ITEM_DUSK_STONE, SPECIES_CHANDELURE}}, - [SPECIES_AXEW] = {{EVO_LEVEL, 38, SPECIES_FRAXURE}}, - [SPECIES_FRAXURE] = {{EVO_LEVEL, 48, SPECIES_HAXORUS}}, - [SPECIES_CUBCHOO] = {{EVO_LEVEL, 37, SPECIES_BEARTIC}}, - [SPECIES_SHELMET] = {{EVO_TRADE_SPECIFIC_MON, SPECIES_KARRABLAST, SPECIES_ACCELGOR}}, - [SPECIES_MIENFOO] = {{EVO_LEVEL, 50, SPECIES_MIENSHAO}}, - [SPECIES_GOLETT] = {{EVO_LEVEL, 43, SPECIES_GOLURK}}, - [SPECIES_PAWNIARD] = {{EVO_LEVEL, 52, SPECIES_BISHARP}}, - [SPECIES_RUFFLET] = {{EVO_LEVEL, 54, SPECIES_BRAVIARY}, - {EVO_NONE, 0, SPECIES_BRAVIARY_HISUIAN}}, - [SPECIES_VULLABY] = {{EVO_LEVEL, 54, SPECIES_MANDIBUZZ}}, - [SPECIES_DEINO] = {{EVO_LEVEL, 50, SPECIES_ZWEILOUS}}, - [SPECIES_ZWEILOUS] = {{EVO_LEVEL, 64, SPECIES_HYDREIGON}}, - [SPECIES_LARVESTA] = {{EVO_LEVEL, 59, SPECIES_VOLCARONA}}, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_CHESPIN] = {{EVO_LEVEL, 16, SPECIES_QUILLADIN}}, - [SPECIES_QUILLADIN] = {{EVO_LEVEL, 36, SPECIES_CHESNAUGHT}}, - [SPECIES_FENNEKIN] = {{EVO_LEVEL, 16, SPECIES_BRAIXEN}}, - [SPECIES_BRAIXEN] = {{EVO_LEVEL, 36, SPECIES_DELPHOX}}, - [SPECIES_FROAKIE] = {{EVO_LEVEL, 16, SPECIES_FROGADIER}}, - [SPECIES_FROGADIER] = {{EVO_LEVEL, 36, SPECIES_GRENINJA}}, - [SPECIES_BUNNELBY] = {{EVO_LEVEL, 20, SPECIES_DIGGERSBY}}, - [SPECIES_FLETCHLING] = {{EVO_LEVEL, 17, SPECIES_FLETCHINDER}}, - [SPECIES_FLETCHINDER] = {{EVO_LEVEL, 35, SPECIES_TALONFLAME}}, - [SPECIES_SCATTERBUG] = {{EVO_LEVEL, 9, SPECIES_SPEWPA}}, - [SPECIES_SPEWPA] = {{EVO_LEVEL, 12, SPECIES_VIVILLON}}, - [SPECIES_LITLEO] = {{EVO_LEVEL, 35, SPECIES_PYROAR}}, - [SPECIES_FLABEBE] = {{EVO_LEVEL, 19, SPECIES_FLOETTE}}, - [SPECIES_FLOETTE] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES}}, - [SPECIES_SKIDDO] = {{EVO_LEVEL, 32, SPECIES_GOGOAT}}, - [SPECIES_PANCHAM] = {{EVO_LEVEL_DARK_TYPE_MON_IN_PARTY, 32, SPECIES_PANGORO}}, - [SPECIES_ESPURR] = {{EVO_LEVEL_MALE, 25, SPECIES_MEOWSTIC}, - {EVO_LEVEL_FEMALE, 25, SPECIES_MEOWSTIC_FEMALE}}, - [SPECIES_HONEDGE] = {{EVO_LEVEL, 35, SPECIES_DOUBLADE}}, - [SPECIES_DOUBLADE] = {{EVO_ITEM, ITEM_DUSK_STONE, SPECIES_AEGISLASH}}, - [SPECIES_SPRITZEE] = {{EVO_TRADE_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}, - {EVO_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}}, - [SPECIES_SWIRLIX] = {{EVO_TRADE_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}, - {EVO_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}}, - [SPECIES_INKAY] = {{EVO_LEVEL, 30, SPECIES_MALAMAR}}, - [SPECIES_BINACLE] = {{EVO_LEVEL, 39, SPECIES_BARBARACLE}}, - [SPECIES_SKRELP] = {{EVO_LEVEL, 48, SPECIES_DRAGALGE}}, - [SPECIES_CLAUNCHER] = {{EVO_LEVEL, 37, SPECIES_CLAWITZER}}, - [SPECIES_HELIOPTILE] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_HELIOLISK}}, - [SPECIES_TYRUNT] = {{EVO_LEVEL_DAY, 39, SPECIES_TYRANTRUM}}, - [SPECIES_AMAURA] = {{EVO_LEVEL_NIGHT, 39, SPECIES_AURORUS}}, - [SPECIES_GOOMY] = {{EVO_LEVEL, 40, SPECIES_SLIGGOO}, - {EVO_NONE, 0, SPECIES_SLIGGOO_HISUIAN}}, - [SPECIES_SLIGGOO] = {{EVO_LEVEL_RAIN, 50, SPECIES_GOODRA}, - {EVO_LEVEL_FOG, 50, SPECIES_GOODRA}}, - [SPECIES_SLIGGOO_HISUIAN] = {{EVO_LEVEL_RAIN, 50, SPECIES_GOODRA_HISUIAN}, - {EVO_LEVEL_FOG, 50, SPECIES_GOODRA_HISUIAN}}, - [SPECIES_PHANTUMP] = {{EVO_TRADE, 0, SPECIES_TREVENANT}, - {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_TREVENANT}}, - [SPECIES_PUMPKABOO] = {{EVO_TRADE, 0, SPECIES_GOURGEIST}, - {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST}}, - [SPECIES_BERGMITE] = {{EVO_LEVEL, 37, SPECIES_AVALUGG}, - {EVO_NONE, 0, SPECIES_AVALUGG_HISUIAN}}, - [SPECIES_NOIBAT] = {{EVO_LEVEL, 48, SPECIES_NOIVERN}}, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_ROWLET] = {{EVO_LEVEL, 17, SPECIES_DARTRIX}}, - [SPECIES_DARTRIX] = {{EVO_LEVEL, 34, SPECIES_DECIDUEYE}, - {EVO_NONE, 0, SPECIES_DECIDUEYE_HISUIAN}}, - [SPECIES_LITTEN] = {{EVO_LEVEL, 17, SPECIES_TORRACAT}}, - [SPECIES_TORRACAT] = {{EVO_LEVEL, 34, SPECIES_INCINEROAR}}, - [SPECIES_POPPLIO] = {{EVO_LEVEL, 17, SPECIES_BRIONNE}}, - [SPECIES_BRIONNE] = {{EVO_LEVEL, 34, SPECIES_PRIMARINA}}, - [SPECIES_PIKIPEK] = {{EVO_LEVEL, 14, SPECIES_TRUMBEAK}}, - [SPECIES_TRUMBEAK] = {{EVO_LEVEL, 28, SPECIES_TOUCANNON}}, - [SPECIES_YUNGOOS] = {{EVO_LEVEL_DAY, 20, SPECIES_GUMSHOOS}}, - [SPECIES_GRUBBIN] = {{EVO_LEVEL, 20, SPECIES_CHARJABUG}}, - [SPECIES_CHARJABUG] = {{EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_VIKAVOLT}, - {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_VIKAVOLT}}, - [SPECIES_CRABRAWLER] = {{EVO_SPECIFIC_MAP, MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM, SPECIES_CRABOMINABLE}, - {EVO_ITEM, ITEM_ICE_STONE, SPECIES_CRABOMINABLE}}, - [SPECIES_CUTIEFLY] = {{EVO_LEVEL, 25, SPECIES_RIBOMBEE}}, - [SPECIES_ROCKRUFF] = {{EVO_LEVEL_DAY, 25, SPECIES_LYCANROC}, - {EVO_LEVEL_NIGHT, 25, SPECIES_LYCANROC_MIDNIGHT}}, - [SPECIES_MAREANIE] = {{EVO_LEVEL, 38, SPECIES_TOXAPEX}}, - [SPECIES_MUDBRAY] = {{EVO_LEVEL, 30, SPECIES_MUDSDALE}}, - [SPECIES_DEWPIDER] = {{EVO_LEVEL, 22, SPECIES_ARAQUANID}}, - [SPECIES_FOMANTIS] = {{EVO_LEVEL_DAY, 34, SPECIES_LURANTIS}}, - [SPECIES_MORELULL] = {{EVO_LEVEL, 24, SPECIES_SHIINOTIC}}, - [SPECIES_SALANDIT] = {{EVO_LEVEL_FEMALE, 33, SPECIES_SALAZZLE}}, - [SPECIES_STUFFUL] = {{EVO_LEVEL, 27, SPECIES_BEWEAR}}, - [SPECIES_BOUNSWEET] = {{EVO_LEVEL, 18, SPECIES_STEENEE}}, - [SPECIES_STEENEE] = {{EVO_MOVE, MOVE_STOMP, SPECIES_TSAREENA}}, - [SPECIES_WIMPOD] = {{EVO_LEVEL, 30, SPECIES_GOLISOPOD}}, - [SPECIES_SANDYGAST] = {{EVO_LEVEL, 42, SPECIES_PALOSSAND}}, - [SPECIES_TYPE_NULL] = {{EVO_FRIENDSHIP, 0, SPECIES_SILVALLY}}, - [SPECIES_JANGMO_O] = {{EVO_LEVEL, 35, SPECIES_HAKAMO_O}}, - [SPECIES_HAKAMO_O] = {{EVO_LEVEL, 45, SPECIES_KOMMO_O}}, - [SPECIES_COSMOG] = {{EVO_LEVEL, 43, SPECIES_COSMOEM}}, - [SPECIES_COSMOEM] = {{EVO_LEVEL_DAY, 53, SPECIES_SOLGALEO}, - {EVO_LEVEL_NIGHT, 53, SPECIES_LUNALA}}, - [SPECIES_POIPOLE] = {{EVO_MOVE, MOVE_DRAGON_PULSE, SPECIES_NAGANADEL}}, -#endif -#if P_GEN_8_POKEMON == TRUE - [SPECIES_GROOKEY] = {{EVO_LEVEL, 16, SPECIES_THWACKEY}}, - [SPECIES_THWACKEY] = {{EVO_LEVEL, 35, SPECIES_RILLABOOM}}, - [SPECIES_SCORBUNNY] = {{EVO_LEVEL, 16, SPECIES_RABOOT}}, - [SPECIES_RABOOT] = {{EVO_LEVEL, 35, SPECIES_CINDERACE}}, - [SPECIES_SOBBLE] = {{EVO_LEVEL, 16, SPECIES_DRIZZILE}}, - [SPECIES_DRIZZILE] = {{EVO_LEVEL, 35, SPECIES_INTELEON}}, - [SPECIES_SKWOVET] = {{EVO_LEVEL, 24, SPECIES_GREEDENT}}, - [SPECIES_ROOKIDEE] = {{EVO_LEVEL, 18, SPECIES_CORVISQUIRE}}, - [SPECIES_CORVISQUIRE] = {{EVO_LEVEL, 38, SPECIES_CORVIKNIGHT}}, - [SPECIES_BLIPBUG] = {{EVO_LEVEL, 10, SPECIES_DOTTLER}}, - [SPECIES_DOTTLER] = {{EVO_LEVEL, 30, SPECIES_ORBEETLE}}, - [SPECIES_NICKIT] = {{EVO_LEVEL, 18, SPECIES_THIEVUL}}, - [SPECIES_GOSSIFLEUR] = {{EVO_LEVEL, 20, SPECIES_ELDEGOSS}}, - [SPECIES_WOOLOO] = {{EVO_LEVEL, 24, SPECIES_DUBWOOL}}, - [SPECIES_CHEWTLE] = {{EVO_LEVEL, 22, SPECIES_DREDNAW}}, - [SPECIES_YAMPER] = {{EVO_LEVEL, 25, SPECIES_BOLTUND}}, - [SPECIES_ROLYCOLY] = {{EVO_LEVEL, 18, SPECIES_CARKOL}}, - [SPECIES_CARKOL] = {{EVO_LEVEL, 34, SPECIES_COALOSSAL}}, - [SPECIES_APPLIN] = {{EVO_ITEM, ITEM_TART_APPLE, SPECIES_FLAPPLE}, - {EVO_ITEM, ITEM_SWEET_APPLE, SPECIES_APPLETUN}}, - [SPECIES_SILICOBRA] = {{EVO_LEVEL, 36, SPECIES_SANDACONDA}}, - [SPECIES_ARROKUDA] = {{EVO_LEVEL, 26, SPECIES_BARRASKEWDA}}, - [SPECIES_TOXEL] = {{EVO_LEVEL_NATURE_AMPED, 30, SPECIES_TOXTRICITY}, - {EVO_LEVEL_NATURE_LOW_KEY, 30, SPECIES_TOXTRICITY_LOW_KEY}}, - [SPECIES_SIZZLIPEDE] = {{EVO_LEVEL, 28, SPECIES_CENTISKORCH}}, - [SPECIES_CLOBBOPUS] = {{EVO_MOVE, MOVE_TAUNT, SPECIES_GRAPPLOCT}}, - [SPECIES_SINISTEA] = {{EVO_ITEM, ITEM_CRACKED_POT, SPECIES_POLTEAGEIST}}, - [SPECIES_HATENNA] = {{EVO_LEVEL, 32, SPECIES_HATTREM}}, - [SPECIES_HATTREM] = {{EVO_LEVEL, 42, SPECIES_HATTERENE}}, - [SPECIES_IMPIDIMP] = {{EVO_LEVEL, 32, SPECIES_MORGREM}}, - [SPECIES_MORGREM] = {{EVO_LEVEL, 42, SPECIES_GRIMMSNARL}}, - [SPECIES_MILCERY] = {{EVO_LEVEL, 0, SPECIES_ALCREMIE}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_RUBY_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_MATCHA_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_MINT_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_LEMON_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_SALTED_CREAM}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_RUBY_SWIRL}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_CARAMEL_SWIRL}, - {EVO_LEVEL, 0, SPECIES_ALCREMIE_RAINBOW_SWIRL}}, - [SPECIES_SNOM] = {{EVO_FRIENDSHIP_NIGHT, 0, SPECIES_FROSMOTH}}, - [SPECIES_CUFANT] = {{EVO_LEVEL, 34, SPECIES_COPPERAJAH}}, - [SPECIES_DREEPY] = {{EVO_LEVEL, 50, SPECIES_DRAKLOAK}}, - [SPECIES_DRAKLOAK] = {{EVO_LEVEL, 60, SPECIES_DRAGAPULT}}, - [SPECIES_KUBFU] = {{EVO_DARK_SCROLL, 0, SPECIES_URSHIFU}, - {EVO_ITEM, ITEM_SCROLL_OF_DARKNESS, SPECIES_URSHIFU}, - {EVO_WATER_SCROLL, 0, SPECIES_URSHIFU_RAPID_STRIKE_STYLE}, - {EVO_ITEM, ITEM_SCROLL_OF_WATERS, SPECIES_URSHIFU_RAPID_STRIKE_STYLE}}, -#endif - [SPECIES_RATTATA_ALOLAN] = {{EVO_LEVEL_NIGHT, 20, SPECIES_RATICATE_ALOLAN}}, - [SPECIES_SANDSHREW_ALOLAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_SANDSLASH_ALOLAN}}, - [SPECIES_VULPIX_ALOLAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_NINETALES_ALOLAN}}, - [SPECIES_DIGLETT_ALOLAN] = {{EVO_LEVEL, 26, SPECIES_DUGTRIO_ALOLAN}}, - [SPECIES_MEOWTH_ALOLAN] = {{EVO_FRIENDSHIP, 28, SPECIES_PERSIAN_ALOLAN}}, - [SPECIES_GEODUDE_ALOLAN] = {{EVO_LEVEL, 25, SPECIES_GRAVELER_ALOLAN}}, - [SPECIES_GRAVELER_ALOLAN] = {{EVO_TRADE, 0, SPECIES_GOLEM_ALOLAN}, - {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOLEM_ALOLAN}}, - [SPECIES_GRIMER_ALOLAN] = {{EVO_LEVEL, 38, SPECIES_MUK_ALOLAN}}, -#if P_GEN_8_POKEMON == TRUE - [SPECIES_MEOWTH_GALARIAN] = {{EVO_LEVEL, 28, SPECIES_PERRSERKER}}, -#endif - [SPECIES_PONYTA_GALARIAN] = {{EVO_LEVEL, 40, SPECIES_RAPIDASH_GALARIAN}}, - [SPECIES_SLOWPOKE_GALARIAN] = {{EVO_ITEM, ITEM_GALARICA_CUFF, SPECIES_SLOWBRO_GALARIAN}, - {EVO_ITEM, ITEM_GALARICA_WREATH, SPECIES_SLOWKING_GALARIAN}}, -#if P_GEN_8_POKEMON == TRUE - [SPECIES_FARFETCHD_GALARIAN] = {{EVO_CRITICAL_HITS, 3, SPECIES_SIRFETCHD}}, - [SPECIES_MR_MIME_GALARIAN] = {{EVO_LEVEL, 42, SPECIES_MR_RIME}}, - [SPECIES_CORSOLA_GALARIAN] = {{EVO_LEVEL, 38, SPECIES_CURSOLA}}, - [SPECIES_ZIGZAGOON_GALARIAN] = {{EVO_LEVEL, 20, SPECIES_LINOONE_GALARIAN}}, - [SPECIES_LINOONE_GALARIAN] = {{EVO_LEVEL_NIGHT, 35, SPECIES_OBSTAGOON}}, - [SPECIES_DARUMAKA_GALARIAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_DARMANITAN_GALARIAN}}, - [SPECIES_YAMASK_GALARIAN] = {{EVO_SCRIPT_TRIGGER_DMG, 49, SPECIES_RUNERIGUS}}, -#else - [SPECIES_ZIGZAGOON_GALARIAN] = {{EVO_LEVEL, 20, SPECIES_LINOONE_GALARIAN}}, - [SPECIES_DARUMAKA_GALARIAN] = {{EVO_ITEM, ITEM_ICE_STONE, SPECIES_DARMANITAN_GALARIAN}}, -#endif -#if P_GEN_4_POKEMON == TRUE - [SPECIES_BURMY_SANDY_CLOAK] = {{EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_SANDY_CLOAK}, - {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM}}, - [SPECIES_BURMY_TRASH_CLOAK] = {{EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_TRASH_CLOAK}, - {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM}}, - [SPECIES_SHELLOS_EAST_SEA] = {{EVO_LEVEL, 30, SPECIES_GASTRODON_EAST_SEA}}, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_DEERLING_SUMMER] = {{EVO_LEVEL, 34, SPECIES_SAWSBUCK_SUMMER}}, - [SPECIES_DEERLING_AUTUMN] = {{EVO_LEVEL, 34, SPECIES_SAWSBUCK_AUTUMN}}, - [SPECIES_DEERLING_WINTER] = {{EVO_LEVEL, 34, SPECIES_SAWSBUCK_WINTER}}, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_FLABEBE_YELLOW_FLOWER] = {{EVO_LEVEL, 19, SPECIES_FLOETTE_YELLOW_FLOWER}}, - [SPECIES_FLABEBE_ORANGE_FLOWER] = {{EVO_LEVEL, 19, SPECIES_FLOETTE_ORANGE_FLOWER}}, - [SPECIES_FLABEBE_BLUE_FLOWER] = {{EVO_LEVEL, 19, SPECIES_FLOETTE_BLUE_FLOWER}}, - [SPECIES_FLABEBE_WHITE_FLOWER] = {{EVO_LEVEL, 19, SPECIES_FLOETTE_WHITE_FLOWER}}, - [SPECIES_FLOETTE_YELLOW_FLOWER] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES_YELLOW_FLOWER}}, - [SPECIES_FLOETTE_ORANGE_FLOWER] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES_ORANGE_FLOWER}}, - [SPECIES_FLOETTE_BLUE_FLOWER] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES_BLUE_FLOWER}}, - [SPECIES_FLOETTE_WHITE_FLOWER] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES_WHITE_FLOWER}}, - [SPECIES_PUMPKABOO_SMALL] = {{EVO_TRADE, 0, SPECIES_GOURGEIST_SMALL}, - {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_SMALL}}, - [SPECIES_PUMPKABOO_LARGE] = {{EVO_TRADE, 0, SPECIES_GOURGEIST_LARGE}, - {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_LARGE}}, - [SPECIES_PUMPKABOO_SUPER] = {{EVO_TRADE, 0, SPECIES_GOURGEIST_SUPER}, - {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_SUPER}}, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_ROCKRUFF_OWN_TEMPO] = {{EVO_LEVEL_DUSK, 25, SPECIES_LYCANROC_DUSK}}, -#endif -#if P_GEN_8_POKEMON == TRUE - [SPECIES_SINISTEA_ANTIQUE] = {{EVO_ITEM, ITEM_CHIPPED_POT, SPECIES_POLTEAGEIST_ANTIQUE}}, - [SPECIES_URSARING] = {{EVO_ITEM_NIGHT, ITEM_PEAT_BLOCK, SPECIES_URSALUNA}}, - [SPECIES_QWILFISH_HISUIAN] = {{EVO_MOVE, MOVE_BARB_BARRAGE, SPECIES_OVERQWIL}}, - [SPECIES_SNEASEL_HISUIAN] = {{EVO_ITEM_DAY, ITEM_RAZOR_CLAW, SPECIES_SNEASLER}, - {EVO_ITEM_HOLD_DAY, ITEM_RAZOR_CLAW, SPECIES_SNEASLER}}, -#endif -}; diff --git a/src/data/pokemon/form_change_table_pointers.h b/src/data/pokemon/form_change_table_pointers.h index 9f75ee3e27..282ea29d3a 100644 --- a/src/data/pokemon/form_change_table_pointers.h +++ b/src/data/pokemon/form_change_table_pointers.h @@ -1,231 +1,34 @@ -const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = +const struct Fusion *const gFusionTablePointers[NUM_SPECIES] = { - [SPECIES_VENUSAUR] = sVenusaurFormChangeTable, - [SPECIES_VENUSAUR_MEGA] = sVenusaurFormChangeTable, - [SPECIES_CHARIZARD] = sCharizardFormChangeTable, - [SPECIES_CHARIZARD_MEGA_X] = sCharizardFormChangeTable, - [SPECIES_CHARIZARD_MEGA_Y] = sCharizardFormChangeTable, - [SPECIES_BLASTOISE] = sBlastoiseFormChangeTable, - [SPECIES_BLASTOISE_MEGA] = sBlastoiseFormChangeTable, - [SPECIES_BEEDRILL] = sBeedrillFormChangeTable, - [SPECIES_BEEDRILL_MEGA] = sBeedrillFormChangeTable, - [SPECIES_PIDGEOT] = sPidgeotFormChangeTable, - [SPECIES_PIDGEOT_MEGA] = sPidgeotFormChangeTable, - [SPECIES_ALAKAZAM] = sAlakazamFormChangeTable, - [SPECIES_ALAKAZAM_MEGA] = sAlakazamFormChangeTable, - [SPECIES_SLOWBRO] = sSlowbroFormChangeTable, - [SPECIES_SLOWBRO_MEGA] = sSlowbroFormChangeTable, - [SPECIES_GENGAR] = sGengarFormChangeTable, - [SPECIES_GENGAR_MEGA] = sGengarFormChangeTable, - [SPECIES_KANGASKHAN] = sKangaskhanFormChangeTable, - [SPECIES_KANGASKHAN_MEGA] = sKangaskhanFormChangeTable, - [SPECIES_PINSIR] = sPinsirFormChangeTable, - [SPECIES_PINSIR_MEGA] = sPinsirFormChangeTable, - [SPECIES_GYARADOS] = sGyaradosFormChangeTable, - [SPECIES_GYARADOS_MEGA] = sGyaradosFormChangeTable, - [SPECIES_AERODACTYL] = sAerodactylFormChangeTable, - [SPECIES_AERODACTYL_MEGA] = sAerodactylFormChangeTable, - [SPECIES_MEWTWO] = sMewtwoFormChangeTable, - [SPECIES_MEWTWO_MEGA_X] = sMewtwoFormChangeTable, - [SPECIES_MEWTWO_MEGA_Y] = sMewtwoFormChangeTable, - [SPECIES_AMPHAROS] = sAmpharosFormChangeTable, - [SPECIES_AMPHAROS_MEGA] = sAmpharosFormChangeTable, - [SPECIES_STEELIX] = sSteelixFormChangeTable, - [SPECIES_STEELIX_MEGA] = sSteelixFormChangeTable, - [SPECIES_SCIZOR] = sScizorFormChangeTable, - [SPECIES_SCIZOR_MEGA] = sScizorFormChangeTable, - [SPECIES_HERACROSS] = sHeracrossFormChangeTable, - [SPECIES_HERACROSS_MEGA] = sHeracrossFormChangeTable, - [SPECIES_HOUNDOOM] = sHoundoomFormChangeTable, - [SPECIES_HOUNDOOM_MEGA] = sHoundoomFormChangeTable, - [SPECIES_TYRANITAR] = sTyranitarFormChangeTable, - [SPECIES_TYRANITAR_MEGA] = sTyranitarFormChangeTable, - [SPECIES_SCEPTILE] = sSceptileFormChangeTable, - [SPECIES_SCEPTILE_MEGA] = sSceptileFormChangeTable, - [SPECIES_BLAZIKEN] = sBlazikenFormChangeTable, - [SPECIES_BLAZIKEN_MEGA] = sBlazikenFormChangeTable, - [SPECIES_SWAMPERT] = sSwampertFormChangeTable, - [SPECIES_SWAMPERT_MEGA] = sSwampertFormChangeTable, - [SPECIES_SABLEYE] = sSableyeFormChangeTable, - [SPECIES_SABLEYE_MEGA] = sSableyeFormChangeTable, - [SPECIES_SHARPEDO] = sSharpedoFormChangeTable, - [SPECIES_SHARPEDO_MEGA] = sSharpedoFormChangeTable, - [SPECIES_MANECTRIC] = sManectricFormChangeTable, - [SPECIES_MANECTRIC_MEGA] = sManectricFormChangeTable, - [SPECIES_CAMERUPT] = sCameruptFormChangeTable, - [SPECIES_CAMERUPT_MEGA] = sCameruptFormChangeTable, - [SPECIES_GLALIE] = sGlalieFormChangeTable, - [SPECIES_GLALIE_MEGA] = sGlalieFormChangeTable, - [SPECIES_MAWILE] = sMawileFormChangeTable, - [SPECIES_MAWILE_MEGA] = sMawileFormChangeTable, - [SPECIES_MEDICHAM] = sMedichamFormChangeTable, - [SPECIES_MEDICHAM_MEGA] = sMedichamFormChangeTable, - [SPECIES_ALTARIA] = sAltariaFormChangeTable, - [SPECIES_ALTARIA_MEGA] = sAltariaFormChangeTable, - [SPECIES_ABSOL] = sAbsolFormChangeTable, - [SPECIES_ABSOL_MEGA] = sAbsolFormChangeTable, - [SPECIES_CASTFORM] = sCastformFormChangeTable, - [SPECIES_CASTFORM_SUNNY] = sCastformFormChangeTable, - [SPECIES_CASTFORM_RAINY] = sCastformFormChangeTable, - [SPECIES_CASTFORM_SNOWY] = sCastformFormChangeTable, - [SPECIES_BANETTE] = sBanetteFormChangeTable, - [SPECIES_BANETTE_MEGA] = sBanetteFormChangeTable, - [SPECIES_AGGRON] = sAggronFormChangeTable, - [SPECIES_AGGRON_MEGA] = sAggronFormChangeTable, - [SPECIES_GARDEVOIR] = sGardevoirFormChangeTable, - [SPECIES_GARDEVOIR_MEGA] = sGardevoirFormChangeTable, - [SPECIES_SALAMENCE] = sSalamenceFormChangeTable, - [SPECIES_SALAMENCE_MEGA] = sSalamenceFormChangeTable, - [SPECIES_METAGROSS] = sMetagrossFormChangeTable, - [SPECIES_METAGROSS_MEGA] = sMetagrossFormChangeTable, - [SPECIES_LATIAS] = sLatiasFormChangeTable, - [SPECIES_LATIAS_MEGA] = sLatiasFormChangeTable, - [SPECIES_LATIOS] = sLatiosFormChangeTable, - [SPECIES_LATIOS_MEGA] = sLatiosFormChangeTable, - [SPECIES_KYOGRE] = sKyogreFormChangeTable, - [SPECIES_KYOGRE_PRIMAL] = sKyogreFormChangeTable, - [SPECIES_GROUDON] = sGroudonFormChangeTable, - [SPECIES_GROUDON_PRIMAL] = sGroudonFormChangeTable, - [SPECIES_RAYQUAZA] = sRayquazaFormChangeTable, - [SPECIES_RAYQUAZA_MEGA] = sRayquazaFormChangeTable, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_BURMY] = sBurmyFormChangeTable, - [SPECIES_BURMY_SANDY_CLOAK] = sBurmyFormChangeTable, - [SPECIES_BURMY_TRASH_CLOAK] = sBurmyFormChangeTable, - [SPECIES_CHERRIM] = sCherrimFormChangeTable, - [SPECIES_CHERRIM_SUNSHINE] = sCherrimFormChangeTable, - [SPECIES_LOPUNNY] = sLopunnyFormChangeTable, - [SPECIES_LOPUNNY_MEGA] = sLopunnyFormChangeTable, - [SPECIES_GARCHOMP] = sGarchompFormChangeTable, - [SPECIES_GARCHOMP_MEGA] = sGarchompFormChangeTable, - [SPECIES_LUCARIO] = sLucarioFormChangeTable, - [SPECIES_LUCARIO_MEGA] = sLucarioFormChangeTable, - [SPECIES_ABOMASNOW] = sAbomasnowFormChangeTable, - [SPECIES_ABOMASNOW_MEGA] = sAbomasnowFormChangeTable, - [SPECIES_GALLADE] = sGalladeFormChangeTable, - [SPECIES_GALLADE_MEGA] = sGalladeFormChangeTable, - [SPECIES_DIALGA] = sDialgaFormChangeTable, - [SPECIES_DIALGA_ORIGIN] = sDialgaFormChangeTable, - [SPECIES_PALKIA] = sPalkiaFormChangeTable, - [SPECIES_PALKIA_ORIGIN] = sPalkiaFormChangeTable, - [SPECIES_GIRATINA] = sGiratinaFormChangeTable, - [SPECIES_GIRATINA_ORIGIN] = sGiratinaFormChangeTable, - [SPECIES_SHAYMIN] = sShayminFormChangeTable, - [SPECIES_SHAYMIN_SKY] = sShayminFormChangeTable, - [SPECIES_ARCEUS] = sArceusFormChangeTable, - [SPECIES_ARCEUS_FIGHTING] = sArceusFormChangeTable, - [SPECIES_ARCEUS_FLYING] = sArceusFormChangeTable, - [SPECIES_ARCEUS_POISON] = sArceusFormChangeTable, - [SPECIES_ARCEUS_ROCK] = sArceusFormChangeTable, - [SPECIES_ARCEUS_GROUND] = sArceusFormChangeTable, - [SPECIES_ARCEUS_BUG] = sArceusFormChangeTable, - [SPECIES_ARCEUS_GHOST] = sArceusFormChangeTable, - [SPECIES_ARCEUS_STEEL] = sArceusFormChangeTable, - [SPECIES_ARCEUS_FIRE] = sArceusFormChangeTable, - [SPECIES_ARCEUS_WATER] = sArceusFormChangeTable, - [SPECIES_ARCEUS_GRASS] = sArceusFormChangeTable, - [SPECIES_ARCEUS_ELECTRIC] = sArceusFormChangeTable, - [SPECIES_ARCEUS_PSYCHIC] = sArceusFormChangeTable, - [SPECIES_ARCEUS_ICE] = sArceusFormChangeTable, - [SPECIES_ARCEUS_DRAGON] = sArceusFormChangeTable, - [SPECIES_ARCEUS_DARK] = sArceusFormChangeTable, - [SPECIES_ARCEUS_FAIRY] = sArceusFormChangeTable, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_AUDINO] = sAudinoFormChangeTable, - [SPECIES_AUDINO_MEGA] = sAudinoFormChangeTable, - [SPECIES_DARMANITAN] = sDarmanitanFormChangeTable, - [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanFormChangeTable, - [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanGalarianFormChangeTable, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanGalarianFormChangeTable, - [SPECIES_TORNADUS] = sTornadusFormChangeTable, - [SPECIES_TORNADUS_THERIAN] = sTornadusFormChangeTable, - [SPECIES_THUNDURUS] = sThundurusFormChangeTable, - [SPECIES_THUNDURUS_THERIAN] = sThundurusFormChangeTable, - [SPECIES_LANDORUS] = sLandorusFormChangeTable, - [SPECIES_LANDORUS_THERIAN] = sLandorusFormChangeTable, - [SPECIES_KELDEO] = sKeldeoFormChangeTable, - [SPECIES_KELDEO_RESOLUTE] = sKeldeoFormChangeTable, - [SPECIES_MELOETTA] = sMeloettaFormChangeTable, - [SPECIES_MELOETTA_PIROUETTE] = sMeloettaFormChangeTable, - [SPECIES_GENESECT] = sGenesectFormChangeTable, - [SPECIES_GENESECT_DOUSE_DRIVE] = sGenesectFormChangeTable, - [SPECIES_GENESECT_SHOCK_DRIVE] = sGenesectFormChangeTable, - [SPECIES_GENESECT_BURN_DRIVE] = sGenesectFormChangeTable, - [SPECIES_GENESECT_CHILL_DRIVE] = sGenesectFormChangeTable, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_GRENINJA_BATTLE_BOND] = sGreninjaBattleBondFormChangeTable, - [SPECIES_GRENINJA_ASH] = sGreninjaBattleBondFormChangeTable, - [SPECIES_AEGISLASH] = sAegislashFormChangeTable, - [SPECIES_AEGISLASH_BLADE] = sAegislashFormChangeTable, - [SPECIES_XERNEAS] = sXerneasFormChangeTable, - [SPECIES_XERNEAS_ACTIVE] = sXerneasFormChangeTable, - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardePowerConstructFormChangeTable, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardePowerConstructFormChangeTable, - [SPECIES_ZYGARDE_COMPLETE] = sZygardePowerConstructFormChangeTable, - [SPECIES_DIANCIE] = sDiancieFormChangeTable, - [SPECIES_DIANCIE_MEGA] = sDiancieFormChangeTable, - [SPECIES_HOOPA] = sHoopaFormChangeTable, - [SPECIES_HOOPA_UNBOUND] = sHoopaFormChangeTable, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_ORICORIO] = sOricorioFormChangeTable, - [SPECIES_ORICORIO_POM_POM] = sOricorioFormChangeTable, - [SPECIES_ORICORIO_PAU] = sOricorioFormChangeTable, - [SPECIES_ORICORIO_SENSU] = sOricorioFormChangeTable, - [SPECIES_WISHIWASHI] = sWishiwashiFormChangeTable, - [SPECIES_WISHIWASHI_SCHOOL] = sWishiwashiFormChangeTable, - [SPECIES_SILVALLY] = sSilvallyFormChangeTable, - [SPECIES_SILVALLY_BUG] = sSilvallyFormChangeTable, - [SPECIES_SILVALLY_DARK] = sSilvallyFormChangeTable, - [SPECIES_SILVALLY_DRAGON] = sSilvallyFormChangeTable, - [SPECIES_SILVALLY_ELECTRIC] = sSilvallyFormChangeTable, - [SPECIES_SILVALLY_FAIRY] = sSilvallyFormChangeTable, - [SPECIES_SILVALLY_FIGHTING] = sSilvallyFormChangeTable, - [SPECIES_SILVALLY_FIRE] = sSilvallyFormChangeTable, - [SPECIES_SILVALLY_FLYING] = sSilvallyFormChangeTable, - [SPECIES_SILVALLY_GHOST] = sSilvallyFormChangeTable, - [SPECIES_SILVALLY_GRASS] = sSilvallyFormChangeTable, - [SPECIES_SILVALLY_GROUND] = sSilvallyFormChangeTable, - [SPECIES_SILVALLY_ICE] = sSilvallyFormChangeTable, - [SPECIES_SILVALLY_POISON] = sSilvallyFormChangeTable, - [SPECIES_SILVALLY_PSYCHIC] = sSilvallyFormChangeTable, - [SPECIES_SILVALLY_ROCK] = sSilvallyFormChangeTable, - [SPECIES_SILVALLY_STEEL] = sSilvallyFormChangeTable, - [SPECIES_SILVALLY_WATER] = sSilvallyFormChangeTable, - [SPECIES_MIMIKYU] = sMimikyuFormChangeTable, - [SPECIES_MIMIKYU_BUSTED] = sMimikyuFormChangeTable, - [SPECIES_MINIOR] = sMiniorRedFormChangeTable, - [SPECIES_MINIOR_CORE_RED] = sMiniorRedFormChangeTable, - [SPECIES_MINIOR_METEOR_BLUE] = sMiniorBlueFormChangeTable, - [SPECIES_MINIOR_CORE_BLUE] = sMiniorBlueFormChangeTable, - [SPECIES_MINIOR_METEOR_GREEN] = sMiniorGreenFormChangeTable, - [SPECIES_MINIOR_CORE_GREEN] = sMiniorGreenFormChangeTable, - [SPECIES_MINIOR_METEOR_INDIGO] = sMiniorIndigoFormChangeTable, - [SPECIES_MINIOR_CORE_INDIGO] = sMiniorIndigoFormChangeTable, - [SPECIES_MINIOR_METEOR_ORANGE] = sMiniorOrangeFormChangeTable, - [SPECIES_MINIOR_CORE_ORANGE] = sMiniorOrangeFormChangeTable, - [SPECIES_MINIOR_METEOR_VIOLET] = sMiniorVioletFormChangeTable, - [SPECIES_MINIOR_CORE_VIOLET] = sMiniorVioletFormChangeTable, - [SPECIES_MINIOR_METEOR_YELLOW] = sMiniorYellowFormChangeTable, - [SPECIES_MINIOR_CORE_YELLOW] = sMiniorYellowFormChangeTable, - [SPECIES_NECROZMA_DUSK_MANE] = sNecrozmaDuskManeFormChangeTable, - [SPECIES_NECROZMA_DAWN_WINGS] = sNecrozmaDawnWingsFormChangeTable, -#endif -#if P_GEN_8_POKEMON == TRUE - [SPECIES_CRAMORANT] = sCramorantFormChangeTable, - [SPECIES_CRAMORANT_GULPING] = sCramorantFormChangeTable, - [SPECIES_CRAMORANT_GORGING] = sCramorantFormChangeTable, - [SPECIES_EISCUE] = sEiscueFormChangeTable, - [SPECIES_EISCUE_NOICE_FACE] = sEiscueFormChangeTable, - [SPECIES_MORPEKO] = sMorpekoFormChangeTable, - [SPECIES_MORPEKO_HANGRY] = sMorpekoFormChangeTable, - [SPECIES_ZACIAN] = sZacianFormChangeTable, - [SPECIES_ZACIAN_CROWNED_SWORD] = sZacianFormChangeTable, - [SPECIES_ZAMAZENTA] = sZamazentaFormChangeTable, - [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = sZamazentaFormChangeTable, - [SPECIES_ENAMORUS] = sEnamorusFormChangeTable, - [SPECIES_ENAMORUS_THERIAN] = sEnamorusFormChangeTable, -#endif +#if P_FAMILY_KYUREM + [SPECIES_KYUREM] = sKyuremFusionTable, +#if P_FAMILY_RESHIRAM + [SPECIES_KYUREM_WHITE] = sKyuremFusionTable, + [SPECIES_RESHIRAM] = sKyuremFusionTable, +#endif //P_FAMILY_RESHIRAM +#if P_FAMILY_ZEKROM + [SPECIES_KYUREM_BLACK] = sKyuremFusionTable, + [SPECIES_ZEKROM] = sKyuremFusionTable, +#endif //P_FAMILY_ZEKROM +#endif //P_FAMILY_KYUREM +#if P_FAMILY_NECROZMA + [SPECIES_NECROZMA] = sNecrozmaFusionTable, +#if P_FAMILY_COSMOG + [SPECIES_NECROZMA_DAWN_WINGS] = sNecrozmaFusionTable, + [SPECIES_SOLGALEO] = sNecrozmaFusionTable, + [SPECIES_NECROZMA_DUSK_MANE] = sNecrozmaFusionTable, + [SPECIES_LUNALA] = sNecrozmaFusionTable, +#endif //P_FAMILY_COSMOG +#endif //P_FAMILY_NECROZMA +#if P_FAMILY_CALYREX + [SPECIES_CALYREX] = sCalyrexFusionTable, +#if P_FAMILY_SPECTRIER + [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexFusionTable, + [SPECIES_SPECTRIER] = sCalyrexFusionTable, +#endif //P_FAMILY_SPECTRIER +#if P_FAMILY_GLASTRIER + [SPECIES_CALYREX_ICE_RIDER] = sCalyrexFusionTable, + [SPECIES_GLASTRIER] = sCalyrexFusionTable, +#endif //P_FAMILY_GLASTRIER +#endif //P_FAMILY_CALYREX }; diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index 2db4d8a1d3..3720770a1f 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -1,313 +1,502 @@ +#if P_FAMILY_BULBASAUR static const struct FormChange sVenusaurFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_VENUSAUR_MEGA, ITEM_VENUSAURITE}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_VENUSAUR_GIGANTAMAX}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_BULBASAUR +#if P_FAMILY_CHARMANDER static const struct FormChange sCharizardFormChangeTable[] = { {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}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CHARIZARD_GIGANTAMAX}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_CHARMANDER +#if P_FAMILY_SQUIRTLE static const struct FormChange sBlastoiseFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BLASTOISE_MEGA, ITEM_BLASTOISINITE}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_BLASTOISE_GIGANTAMAX}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_SQUIRTLE +#if P_FAMILY_CATERPIE +static const struct FormChange sButterfreeFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_BUTTERFREE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_CATERPIE + +#if P_FAMILY_WEEDLE static const struct FormChange sBeedrillFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BEEDRILL_MEGA, ITEM_BEEDRILLITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_WEEDLE +#if P_FAMILY_PIDGEY static const struct FormChange sPidgeotFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_PIDGEOT_MEGA, ITEM_PIDGEOTITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_PIDGEY +#if P_FAMILY_PIKACHU +static const struct FormChange sPikachuFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_PIKACHU_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_PIKACHU + +#if P_FAMILY_MEOWTH +static const struct FormChange sMeowthFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MEOWTH_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_MEOWTH + +#if P_FAMILY_ABRA static const struct FormChange sAlakazamFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ALAKAZAM_MEGA, ITEM_ALAKAZITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_ABRA +#if P_FAMILY_MACHOP +static const struct FormChange sMachampFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MACHAMP_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_MACHOP + +#if P_FAMILY_SLOWPOKE static const struct FormChange sSlowbroFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SLOWBRO_MEGA, ITEM_SLOWBRONITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_SLOWPOKE +#if P_FAMILY_GASTLY static const struct FormChange sGengarFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GENGAR_MEGA, ITEM_GENGARITE}, + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GENGAR_GIGANTAMAX}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_GASTLY +#if P_FAMILY_ONIX +#if P_GEN_2_CROSS_EVOS +static const struct FormChange sSteelixFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_STEELIX_MEGA, ITEM_STEELIXITE}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ONIX + +#if P_FAMILY_KRABBY +static const struct FormChange sKinglerFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_KINGLER_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_KRABBY + +#if P_FAMILY_KANGASKHAN static const struct FormChange sKangaskhanFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_KANGASKHAN_MEGA, ITEM_KANGASKHANITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_KANGASKHAN +#if P_FAMILY_SCYTHER +#if P_GEN_2_CROSS_EVOS +static const struct FormChange sScizorFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SCIZOR_MEGA, ITEM_SCIZORITE}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_SCYTHER + +#if P_FAMILY_PINSIR static const struct FormChange sPinsirFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_PINSIR_MEGA, ITEM_PINSIRITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_PINSIR +#if P_FAMILY_MAGIKARP static const struct FormChange sGyaradosFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GYARADOS_MEGA, ITEM_GYARADOSITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_MAGIKARP +#if P_FAMILY_LAPRAS +static const struct FormChange sLaprasFormChangeTable[] = { + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_LAPRAS_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_LAPRAS + +#if P_FAMILY_EEVEE +static const struct FormChange sEeveeFormChangeTable[] = { + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_EEVEE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_EEVEE + +#if P_FAMILY_AERODACTYL static const struct FormChange sAerodactylFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_AERODACTYL_MEGA, ITEM_AERODACTYLITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_AERODACTYL +#if P_FAMILY_SNORLAX +static const struct FormChange sSnorlaxFormChangeTable[] = { + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_SNORLAX_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_SNORLAX + +#if P_FAMILY_MEWTWO static const struct FormChange sMewtwoFormChangeTable[] = { {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}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_MEWTWO +#if P_FAMILY_MAREEP static const struct FormChange sAmpharosFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_AMPHAROS_MEGA, ITEM_AMPHAROSITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_MAREEP -static const struct FormChange sSteelixFormChangeTable[] = { - {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_STEELIX_MEGA, ITEM_STEELIXITE}, - {FORM_CHANGE_TERMINATOR}, -}; - -static const struct FormChange sScizorFormChangeTable[] = { - {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SCIZOR_MEGA, ITEM_SCIZORITE}, - {FORM_CHANGE_TERMINATOR}, -}; - +#if P_FAMILY_HERACROSS static const struct FormChange sHeracrossFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_HERACROSS_MEGA, ITEM_HERACRONITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_HERACROSS +#if P_FAMILY_HOUNDOUR static const struct FormChange sHoundoomFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_HOUNDOOM_MEGA, ITEM_HOUNDOOMINITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_HOUNDOUR +#if P_FAMILY_LARVITAR static const struct FormChange sTyranitarFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_TYRANITAR_MEGA, ITEM_TYRANITARITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_LARVITAR +#if P_FAMILY_TREECKO static const struct FormChange sSceptileFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SCEPTILE_MEGA, ITEM_SCEPTILITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_TREECKO +#if P_FAMILY_TORCHIC static const struct FormChange sBlazikenFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BLAZIKEN_MEGA, ITEM_BLAZIKENITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_TORCHIC +#if P_FAMILY_MUDKIP static const struct FormChange sSwampertFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SWAMPERT_MEGA, ITEM_SWAMPERTITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_MUDKIP -static const struct FormChange sSableyeFormChangeTable[] = { - {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SABLEYE_MEGA, ITEM_SABLENITE}, - {FORM_CHANGE_TERMINATOR}, -}; - -static const struct FormChange sSharpedoFormChangeTable[] = { - {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SHARPEDO_MEGA, ITEM_SHARPEDONITE}, - {FORM_CHANGE_TERMINATOR}, -}; - -static const struct FormChange sManectricFormChangeTable[] = { - {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MANECTRIC_MEGA, ITEM_MANECTITE}, - {FORM_CHANGE_TERMINATOR}, -}; - -static const struct FormChange sCameruptFormChangeTable[] = { - {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CAMERUPT_MEGA, ITEM_CAMERUPTITE}, - {FORM_CHANGE_TERMINATOR}, -}; - -static const struct FormChange sGlalieFormChangeTable[] = { - {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GLALIE_MEGA, ITEM_GLALITITE}, - {FORM_CHANGE_TERMINATOR}, -}; - -static const struct FormChange sMawileFormChangeTable[] = { - {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MAWILE_MEGA, ITEM_MAWILITE}, - {FORM_CHANGE_TERMINATOR}, -}; - -static const struct FormChange sMedichamFormChangeTable[] = { - {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MEDICHAM_MEGA, ITEM_MEDICHAMITE}, - {FORM_CHANGE_TERMINATOR}, -}; - -static const struct FormChange sAltariaFormChangeTable[] = { - {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ALTARIA_MEGA, ITEM_ALTARIANITE}, - {FORM_CHANGE_TERMINATOR}, -}; - -static const struct FormChange sAbsolFormChangeTable[] = { - {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ABSOL_MEGA, ITEM_ABSOLITE}, - {FORM_CHANGE_TERMINATOR}, -}; - -static const struct FormChange sCastformFormChangeTable[] = { -#if B_WEATHER_FORMS >= GEN_5 - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SUNNY, B_WEATHER_SUN, ABILITY_FORECAST}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_RAINY, B_WEATHER_RAIN, ABILITY_FORECAST}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SNOWY, B_WEATHER_HAIL | B_WEATHER_SNOW, ABILITY_FORECAST}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM, ~(B_WEATHER_SUN | B_WEATHER_RAIN | B_WEATHER_HAIL | B_WEATHER_SNOW), ABILITY_FORECAST}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM, B_WEATHER_NONE, ABILITY_FORECAST}, -#else - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SUNNY, B_WEATHER_SUN}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_RAINY, B_WEATHER_RAIN}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SNOWY, B_WEATHER_HAIL | B_WEATHER_SNOW}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM, ~(B_WEATHER_SUN | B_WEATHER_RAIN | B_WEATHER_HAIL | B_WEATHER_SNOW)}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM, B_WEATHER_NONE}, -#endif - {FORM_CHANGE_BATTLE_SWITCH, SPECIES_CASTFORM}, - {FORM_CHANGE_FAINT, SPECIES_CASTFORM}, - {FORM_CHANGE_END_BATTLE, SPECIES_CASTFORM}, - {FORM_CHANGE_TERMINATOR}, -}; - -static const struct FormChange sBanetteFormChangeTable[] = { - {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BANETTE_MEGA, ITEM_BANETTITE}, - {FORM_CHANGE_TERMINATOR}, -}; - -static const struct FormChange sAggronFormChangeTable[] = { - {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_AGGRON_MEGA, ITEM_AGGRONITE}, - {FORM_CHANGE_TERMINATOR}, -}; - +#if P_FAMILY_RALTS static const struct FormChange sGardevoirFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GARDEVOIR_MEGA, ITEM_GARDEVOIRITE}, {FORM_CHANGE_TERMINATOR}, }; +#if P_GEN_4_CROSS_EVOS +static const struct FormChange sGalladeFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GALLADE_MEGA, ITEM_GALLADITE}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RALTS + +#if P_FAMILY_SABLEYE +static const struct FormChange sSableyeFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SABLEYE_MEGA, ITEM_SABLENITE}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_SABLEYE + +#if P_FAMILY_MAWILE +static const struct FormChange sMawileFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MAWILE_MEGA, ITEM_MAWILITE}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_MAWILE + +#if P_FAMILY_ARON +static const struct FormChange sAggronFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_AGGRON_MEGA, ITEM_AGGRONITE}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_ARON + +#if P_FAMILY_MEDITITE +static const struct FormChange sMedichamFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MEDICHAM_MEGA, ITEM_MEDICHAMITE}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_MEDITITE + +#if P_FAMILY_ELECTRIKE +static const struct FormChange sManectricFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_MANECTRIC_MEGA, ITEM_MANECTITE}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_ELECTRIKE + +#if P_FAMILY_CARVANHA +static const struct FormChange sSharpedoFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SHARPEDO_MEGA, ITEM_SHARPEDONITE}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_CARVANHA + +#if P_FAMILY_NUMEL +static const struct FormChange sCameruptFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_CAMERUPT_MEGA, ITEM_CAMERUPTITE}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_NUMEL + +#if P_FAMILY_SWABLU +static const struct FormChange sAltariaFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ALTARIA_MEGA, ITEM_ALTARIANITE}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_SWABLU + +#if P_FAMILY_SHUPPET +static const struct FormChange sBanetteFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_BANETTE_MEGA, ITEM_BANETTITE}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_SHUPPET + +#if P_FAMILY_ABSOL +static const struct FormChange sAbsolFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ABSOL_MEGA, ITEM_ABSOLITE}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_ABSOL + +#if P_FAMILY_SNORUNT +static const struct FormChange sGlalieFormChangeTable[] = { + {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GLALIE_MEGA, ITEM_GLALITITE}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_SNORUNT + +#if P_FAMILY_CASTFORM +static const struct FormChange sCastformFormChangeTable[] = { +#if B_WEATHER_FORMS >= GEN_5 + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SUNNY, B_WEATHER_SUN, ABILITY_FORECAST}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_RAINY, B_WEATHER_RAIN, ABILITY_FORECAST}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SNOWY, B_WEATHER_HAIL | B_WEATHER_SNOW, ABILITY_FORECAST}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_NORMAL, ~(B_WEATHER_SUN | B_WEATHER_RAIN | B_WEATHER_HAIL | B_WEATHER_SNOW), ABILITY_FORECAST}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_NORMAL, B_WEATHER_NONE, ABILITY_FORECAST}, +#else + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SUNNY, B_WEATHER_SUN}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_RAINY, B_WEATHER_RAIN}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_SNOWY, B_WEATHER_HAIL | B_WEATHER_SNOW}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_NORMAL, ~(B_WEATHER_SUN | B_WEATHER_RAIN | B_WEATHER_HAIL | B_WEATHER_SNOW)}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CASTFORM_NORMAL, B_WEATHER_NONE}, +#endif + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_CASTFORM_NORMAL}, + {FORM_CHANGE_FAINT, SPECIES_CASTFORM_NORMAL}, + {FORM_CHANGE_END_BATTLE, SPECIES_CASTFORM_NORMAL}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_CASTFORM + +#if P_FAMILY_BAGON static const struct FormChange sSalamenceFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_SALAMENCE_MEGA, ITEM_SALAMENCITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_BAGON +#if P_FAMILY_BELDUM static const struct FormChange sMetagrossFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_METAGROSS_MEGA, ITEM_METAGROSSITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_BELDUM +#if P_FAMILY_LATIAS static const struct FormChange sLatiasFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_LATIAS_MEGA, ITEM_LATIASITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_LATIAS +#if P_FAMILY_LATIOS static const struct FormChange sLatiosFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_LATIOS_MEGA, ITEM_LATIOSITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_LATIOS +#if P_FAMILY_KYOGRE static const struct FormChange sKyogreFormChangeTable[] = { {FORM_CHANGE_BATTLE_PRIMAL_REVERSION, SPECIES_KYOGRE_PRIMAL, ITEM_BLUE_ORB}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_KYOGRE +#if P_FAMILY_GROUDON static const struct FormChange sGroudonFormChangeTable[] = { {FORM_CHANGE_BATTLE_PRIMAL_REVERSION, SPECIES_GROUDON_PRIMAL, ITEM_RED_ORB}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_GROUDON +#if P_FAMILY_RAYQUAZA static const struct FormChange sRayquazaFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE, SPECIES_RAYQUAZA_MEGA, MOVE_DRAGON_ASCENT}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_RAYQUAZA -#if P_GEN_4_POKEMON == TRUE +#if P_FAMILY_BURMY static const struct FormChange sBurmyFormChangeTable[] = { - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_GRASS}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_LONG_GRASS}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_POND}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_MOUNTAIN}, - {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY, BATTLE_TERRAIN_PLAIN}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_GRASS}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_LONG_GRASS}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_POND}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_MOUNTAIN}, + {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT_CLOAK, BATTLE_TERRAIN_PLAIN}, {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY_CLOAK, BATTLE_TERRAIN_CAVE}, {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY_CLOAK, BATTLE_TERRAIN_SAND}, {FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_TRASH_CLOAK, BATTLE_TERRAIN_BUILDING}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_BURMY +#if P_FAMILY_CHERUBI static const struct FormChange sCherrimFormChangeTable[] = { #if B_WEATHER_FORMS >= GEN_5 {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_SUNSHINE, B_WEATHER_SUN, ABILITY_FLOWER_GIFT}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM, ~B_WEATHER_SUN, ABILITY_FLOWER_GIFT}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM, B_WEATHER_NONE, ABILITY_FLOWER_GIFT}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_OVERCAST, ~B_WEATHER_SUN, ABILITY_FLOWER_GIFT}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_OVERCAST, B_WEATHER_NONE, ABILITY_FLOWER_GIFT}, #else {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_SUNSHINE, B_WEATHER_SUN}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM, ~B_WEATHER_SUN}, - {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM, B_WEATHER_NONE}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_OVERCAST, ~B_WEATHER_SUN}, + {FORM_CHANGE_BATTLE_WEATHER, SPECIES_CHERRIM_OVERCAST, B_WEATHER_NONE}, #endif - {FORM_CHANGE_BATTLE_SWITCH, SPECIES_CHERRIM}, - {FORM_CHANGE_FAINT, SPECIES_CHERRIM}, - {FORM_CHANGE_END_BATTLE, SPECIES_CHERRIM}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_CHERRIM_OVERCAST}, + {FORM_CHANGE_FAINT, SPECIES_CHERRIM_OVERCAST}, + {FORM_CHANGE_END_BATTLE, SPECIES_CHERRIM_OVERCAST}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_CHERUBI +#if P_FAMILY_BUNEARY static const struct FormChange sLopunnyFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_LOPUNNY_MEGA, ITEM_LOPUNNITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_BUNEARY +#if P_FAMILY_GIBLE static const struct FormChange sGarchompFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GARCHOMP_MEGA, ITEM_GARCHOMPITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_GIBLE +#if P_FAMILY_RIOLU static const struct FormChange sLucarioFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_LUCARIO_MEGA, ITEM_LUCARIONITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_RIOLU +#if P_FAMILY_SNOVER static const struct FormChange sAbomasnowFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_ABOMASNOW_MEGA, ITEM_ABOMASITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_SNOVER -static const struct FormChange sGalladeFormChangeTable[] = { - {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_GALLADE_MEGA, ITEM_GALLADITE}, +#if P_FAMILY_ROTOM +static const struct FormChange sRotomFormChangeTable[] = { + {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ROTOM, ITEM_ROTOM_CATALOG, 0}, + {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ROTOM_HEAT, ITEM_ROTOM_CATALOG, 1}, + {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ROTOM_WASH, ITEM_ROTOM_CATALOG, 2}, + {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ROTOM_FROST, ITEM_ROTOM_CATALOG, 3}, + {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ROTOM_FAN, ITEM_ROTOM_CATALOG, 4}, + {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ROTOM_MOW, ITEM_ROTOM_CATALOG, 5}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_ROTOM +#if P_FAMILY_DIALGA static const struct FormChange sDialgaFormChangeTable[] = { {FORM_CHANGE_ITEM_HOLD, SPECIES_DIALGA, ITEM_NONE}, {FORM_CHANGE_ITEM_HOLD, SPECIES_DIALGA_ORIGIN, ITEM_ADAMANT_CRYSTAL}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_DIALGA +#if P_FAMILY_PALKIA static const struct FormChange sPalkiaFormChangeTable[] = { {FORM_CHANGE_ITEM_HOLD, SPECIES_PALKIA, ITEM_NONE}, {FORM_CHANGE_ITEM_HOLD, SPECIES_PALKIA_ORIGIN, ITEM_LUSTROUS_GLOBE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_PALKIA +#if P_FAMILY_GIRATINA static const struct FormChange sGiratinaFormChangeTable[] = { - {FORM_CHANGE_ITEM_HOLD, SPECIES_GIRATINA, ITEM_NONE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_GIRATINA_ALTERED, ITEM_NONE}, #if I_GRISEOUS_ORB_FORM_CHANGE < GEN_9 {FORM_CHANGE_ITEM_HOLD, SPECIES_GIRATINA_ORIGIN, ITEM_GRISEOUS_ORB}, #endif {FORM_CHANGE_ITEM_HOLD, SPECIES_GIRATINA_ORIGIN, ITEM_GRISEOUS_CORE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_GIRATINA +#if P_FAMILY_SHAYMIN static const struct FormChange sShayminFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_SHAYMIN_SKY, ITEM_GRACIDEA, DAY}, - // {FORM_CHANGE_WITHDRAW, SPECIES_SHAYMIN}, + {FORM_CHANGE_ITEM_USE, SPECIES_SHAYMIN_SKY, ITEM_GRACIDEA, DAY}, + {FORM_CHANGE_WITHDRAW, SPECIES_SHAYMIN_LAND}, + {FORM_CHANGE_TIME_OF_DAY, SPECIES_SHAYMIN_LAND, NIGHT}, + {FORM_CHANGE_STATUS, SPECIES_SHAYMIN_LAND, (STATUS1_FREEZE | STATUS1_FROSTBITE)}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_SHAYMIN +#if P_FAMILY_ARCEUS static const struct FormChange sArceusFormChangeTable[] = { - {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS, ITEM_NONE, ABILITY_MULTITYPE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_NORMAL, ITEM_NONE, ABILITY_MULTITYPE}, {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FIGHTING, ITEM_FIST_PLATE, ABILITY_MULTITYPE}, {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FIGHTING, ITEM_FIGHTINIUM_Z, ABILITY_MULTITYPE}, {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FLYING, ITEM_SKY_PLATE, ABILITY_MULTITYPE}, @@ -344,60 +533,92 @@ static const struct FormChange sArceusFormChangeTable[] = { {FORM_CHANGE_ITEM_HOLD, SPECIES_ARCEUS_FAIRY, ITEM_FAIRIUM_Z, ABILITY_MULTITYPE}, {FORM_CHANGE_TERMINATOR}, }; -#endif +#endif //P_FAMILY_ARCEUS -#if P_GEN_5_POKEMON == TRUE +#if P_FAMILY_AUDINO static const struct FormChange sAudinoFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_AUDINO_MEGA, ITEM_AUDINITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_AUDINO +#if P_FAMILY_DARUMAKA static const struct FormChange sDarmanitanFormChangeTable[] = { - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_ZEN_MODE, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, - {FORM_CHANGE_FAINT, SPECIES_DARMANITAN}, - {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_STANDARD_MODE, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_ZEN_MODE, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_FAINT, SPECIES_DARMANITAN_STANDARD_MODE}, + {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_STANDARD_MODE}, {FORM_CHANGE_TERMINATOR}, }; +#if P_GALARIAN_FORMS static const struct FormChange sDarmanitanGalarianFormChangeTable[] = { - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_GALARIAN, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_ZEN_MODE_GALARIAN, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, - {FORM_CHANGE_FAINT, SPECIES_DARMANITAN_GALARIAN}, - {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_GALARIAN}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_DARMANITAN_GALARIAN_ZEN_MODE, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_FAINT, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE}, + {FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_DARUMAKA -static const struct FormChange sMeloettaFormChangeTable[] = { - {FORM_CHANGE_FAINT, SPECIES_MELOETTA}, - {FORM_CHANGE_END_BATTLE, SPECIES_MELOETTA}, +#if P_FAMILY_TRUBBISH +static const struct FormChange sGarbodorFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GARBODOR_GIGANTAMAX}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_TRUBBISH +#if P_FAMILY_TORNADUS static const struct FormChange sTornadusFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_TORNADUS_THERIAN, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_ITEM_USE, SPECIES_TORNADUS, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_TORNADUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_TORNADUS_INCARNATE, ITEM_REVEAL_GLASS}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_TORNADUS +#if P_FAMILY_THUNDURUS static const struct FormChange sThundurusFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_THUNDURUS_THERIAN, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_ITEM_USE, SPECIES_THUNDURUS, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_THUNDURUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_THUNDURUS_INCARNATE, ITEM_REVEAL_GLASS}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_THUNDURUS +#if P_FAMILY_LANDORUS static const struct FormChange sLandorusFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_LANDORUS_THERIAN, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_ITEM_USE, SPECIES_LANDORUS, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_LANDORUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_LANDORUS_INCARNATE, ITEM_REVEAL_GLASS}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_LANDORUS +#if P_FAMILY_KYUREM +static const struct Fusion sKyuremFusionTable[] = { + {0, ITEM_DNA_SPLICERS, SPECIES_KYUREM, SPECIES_RESHIRAM, SPECIES_KYUREM_WHITE}, + {0, ITEM_DNA_SPLICERS, SPECIES_KYUREM, SPECIES_ZEKROM, SPECIES_KYUREM_BLACK}, + {FUSION_TERMINATOR}, +}; +#endif //P_FAMILY_KYUREM + +#if P_FAMILY_KELDEO static const struct FormChange sKeldeoFormChangeTable[] = { - // {FORM_CHANGE_MOVE, SPECIES_KELDEO_RESOLUTE, MOVE_SECRET_SWORD, WHEN_LEARNED}, - // {FORM_CHANGE_MOVE, SPECIES_KELDEO, MOVE_SECRET_SWORD, WHEN_FORGOTTEN}, + {FORM_CHANGE_MOVE, SPECIES_KELDEO_RESOLUTE, MOVE_SECRET_SWORD, WHEN_LEARNED}, + {FORM_CHANGE_MOVE, SPECIES_KELDEO_ORDINARY, MOVE_SECRET_SWORD, WHEN_FORGOTTEN}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_KELDEO +#if P_FAMILY_MELOETTA +static const struct FormChange sMeloettaFormChangeTable[] = { + {FORM_CHANGE_FAINT, SPECIES_MELOETTA_ARIA}, + {FORM_CHANGE_END_BATTLE, SPECIES_MELOETTA_ARIA}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_MELOETTA + +#if P_FAMILY_GENESECT static const struct FormChange sGenesectFormChangeTable[] = { {FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT, ITEM_NONE}, {FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_DOUSE_DRIVE, ITEM_DOUSE_DRIVE}, @@ -406,66 +627,106 @@ static const struct FormChange sGenesectFormChangeTable[] = { {FORM_CHANGE_ITEM_HOLD, SPECIES_GENESECT_CHILL_DRIVE, ITEM_CHILL_DRIVE}, {FORM_CHANGE_TERMINATOR}, }; -#endif +#endif //P_FAMILY_GENESECT -#if P_GEN_6_POKEMON == TRUE +#if P_FAMILY_FROAKIE static const struct FormChange sGreninjaBattleBondFormChangeTable[] = { {FORM_CHANGE_FAINT, SPECIES_GRENINJA_BATTLE_BOND}, {FORM_CHANGE_END_BATTLE, SPECIES_GRENINJA_BATTLE_BOND}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_FROAKIE +#if P_FAMILY_HONEDGE static const struct FormChange sAegislashFormChangeTable[] = { - {FORM_CHANGE_BATTLE_SWITCH, SPECIES_AEGISLASH}, - {FORM_CHANGE_FAINT, SPECIES_AEGISLASH}, - {FORM_CHANGE_END_BATTLE, SPECIES_AEGISLASH}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_AEGISLASH_SHIELD}, + {FORM_CHANGE_FAINT, SPECIES_AEGISLASH_SHIELD}, + {FORM_CHANGE_END_BATTLE, SPECIES_AEGISLASH_SHIELD}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_HONEDGE +#if P_FAMILY_XERNEAS static const struct FormChange sXerneasFormChangeTable[] = { {FORM_CHANGE_BEGIN_BATTLE, SPECIES_XERNEAS_ACTIVE}, - {FORM_CHANGE_END_BATTLE, SPECIES_XERNEAS, }, + {FORM_CHANGE_END_BATTLE, SPECIES_XERNEAS_NEUTRAL}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_XERNEAS + +#if P_FAMILY_ZYGARDE +static const struct FormChange sZygarde50AuraBreakFormChangeTable[] = { + {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_10_AURA_BREAK, ITEM_ZYGARDE_CUBE, 0}, + {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_50_POWER_CONSTRUCT, ITEM_ZYGARDE_CUBE, 1}, {FORM_CHANGE_TERMINATOR}, }; -static const struct FormChange sZygardePowerConstructFormChangeTable[] = { - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_ZYGARDE_COMPLETE, ABILITY_POWER_CONSTRUCT, HP_LOWER_EQ_THAN, 50}, +static const struct FormChange sZygarde10AuraBreakFormChangeTable[] = { + {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_50_AURA_BREAK, ITEM_ZYGARDE_CUBE, 0}, + {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_10_POWER_CONSTRUCT, ITEM_ZYGARDE_CUBE, 1}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sZygarde50PowerConstructFormChangeTable[] = { + {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_10_POWER_CONSTRUCT, ITEM_ZYGARDE_CUBE, 0}, + {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_50_AURA_BREAK, ITEM_ZYGARDE_CUBE, 1}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_ZYGARDE_COMPLETE, ABILITY_POWER_CONSTRUCT, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sZygarde10PowerConstructFormChangeTable[] = { + {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_50_POWER_CONSTRUCT, ITEM_ZYGARDE_CUBE, 0}, + {FORM_CHANGE_ITEM_USE_MULTICHOICE, SPECIES_ZYGARDE_10_AURA_BREAK, ITEM_ZYGARDE_CUBE, 1}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_ZYGARDE_COMPLETE, ABILITY_POWER_CONSTRUCT, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sZygardeCompleteFormChangeTable[] = { {FORM_CHANGE_FAINT}, {FORM_CHANGE_END_BATTLE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_ZYGARDE +#if P_FAMILY_DIANCIE static const struct FormChange sDiancieFormChangeTable[] = { {FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM, SPECIES_DIANCIE_MEGA, ITEM_DIANCITE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_DIANCIE +#if P_FAMILY_HOOPA static const struct FormChange sHoopaFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_HOOPA_UNBOUND, ITEM_PRISON_BOTTLE, SPECIES_HOOPA}, - {FORM_CHANGE_WITHDRAW, SPECIES_HOOPA}, + {FORM_CHANGE_ITEM_USE, SPECIES_HOOPA_UNBOUND, ITEM_PRISON_BOTTLE, SPECIES_HOOPA_CONFINED}, + {FORM_CHANGE_WITHDRAW, SPECIES_HOOPA_CONFINED}, {FORM_CHANGE_TERMINATOR}, }; -#endif +#endif //P_FAMILY_HOOPA -#if P_GEN_7_POKEMON == TRUE +#if P_FAMILY_ORICORIO static const struct FormChange sOricorioFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO, ITEM_RED_NECTAR}, + {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_BAILE, ITEM_RED_NECTAR}, {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_POM_POM, ITEM_YELLOW_NECTAR}, {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_PAU, ITEM_PINK_NECTAR}, {FORM_CHANGE_ITEM_USE, SPECIES_ORICORIO_SENSU, ITEM_PURPLE_NECTAR}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_ORICORIO + +#if P_FAMILY_WISHIWASHI static const struct FormChange sWishiwashiFormChangeTable[] = { {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_WISHIWASHI_SCHOOL, ABILITY_SCHOOLING, HP_HIGHER_THAN, 25}, - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_WISHIWASHI, ABILITY_SCHOOLING, HP_LOWER_EQ_THAN, 25}, - {FORM_CHANGE_BATTLE_SWITCH, SPECIES_WISHIWASHI}, - {FORM_CHANGE_FAINT, SPECIES_WISHIWASHI}, - {FORM_CHANGE_END_BATTLE, SPECIES_WISHIWASHI}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_WISHIWASHI_SOLO, ABILITY_SCHOOLING, HP_LOWER_EQ_THAN, 25}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_WISHIWASHI_SOLO}, + {FORM_CHANGE_FAINT, SPECIES_WISHIWASHI_SOLO}, + {FORM_CHANGE_END_BATTLE, SPECIES_WISHIWASHI_SOLO}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_WISHIWASHI +#if P_FAMILY_TYPE_NULL static const struct FormChange sSilvallyFormChangeTable[] = { - {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY, ITEM_NONE, ABILITY_RKS_SYSTEM}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_NORMAL, ITEM_NONE, ABILITY_RKS_SYSTEM}, {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_FIGHTING, ITEM_FIGHTING_MEMORY, ABILITY_RKS_SYSTEM}, {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_FLYING, ITEM_FLYING_MEMORY, ABILITY_RKS_SYSTEM}, {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_POISON, ITEM_POISON_MEMORY, ABILITY_RKS_SYSTEM}, @@ -485,16 +746,12 @@ static const struct FormChange sSilvallyFormChangeTable[] = { {FORM_CHANGE_ITEM_HOLD, SPECIES_SILVALLY_FAIRY, ITEM_FAIRY_MEMORY, ABILITY_RKS_SYSTEM}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_TYPE_NULL -static const struct FormChange sMimikyuFormChangeTable[] = { - {FORM_CHANGE_FAINT, SPECIES_MIMIKYU}, - {FORM_CHANGE_END_BATTLE, SPECIES_MIMIKYU}, - {FORM_CHANGE_TERMINATOR}, -}; - +#if P_FAMILY_MINIOR static const struct FormChange sMiniorRedFormChangeTable[] = { - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50}, - {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_RED, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_METEOR_RED, ABILITY_SHIELDS_DOWN, HP_HIGHER_THAN, 50}, + {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_MINIOR_CORE_RED, ABILITY_SHIELDS_DOWN, HP_LOWER_EQ_THAN, 50}, {FORM_CHANGE_BATTLE_SWITCH, SPECIES_MINIOR_CORE_RED}, {FORM_CHANGE_FAINT, SPECIES_MINIOR_CORE_RED}, {FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_RED}, @@ -548,6 +805,23 @@ static const struct FormChange sMiniorYellowFormChangeTable[] = { {FORM_CHANGE_END_BATTLE, SPECIES_MINIOR_CORE_YELLOW}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_MINIOR + +#if P_FAMILY_MIMIKYU +static const struct FormChange sMimikyuFormChangeTable[] = { + {FORM_CHANGE_FAINT, SPECIES_MIMIKYU_DISGUISED}, + {FORM_CHANGE_END_BATTLE, SPECIES_MIMIKYU_DISGUISED}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_MIMIKYU + +#if P_FAMILY_NECROZMA +static const struct Fusion sNecrozmaFusionTable[] = { + {1, ITEM_N_SOLARIZER, SPECIES_NECROZMA, SPECIES_SOLGALEO, SPECIES_NECROZMA_DUSK_MANE, MOVE_SUNSTEEL_STRIKE, MOVE_CONFUSION}, + {2, ITEM_N_LUNARIZER, SPECIES_NECROZMA, SPECIES_LUNALA, SPECIES_NECROZMA_DAWN_WINGS, MOVE_MOONGEIST_BEAM, MOVE_CONFUSION}, + {FUSION_TERMINATOR}, +}; + static const struct FormChange sNecrozmaDuskManeFormChangeTable[] = { {FORM_CHANGE_BATTLE_ULTRA_BURST, SPECIES_NECROZMA_ULTRA, ITEM_ULTRANECROZIUM_Z}, {FORM_CHANGE_TERMINATOR}, @@ -556,9 +830,95 @@ static const struct FormChange sNecrozmaDawnWingsFormChangeTable[] = { {FORM_CHANGE_BATTLE_ULTRA_BURST, SPECIES_NECROZMA_ULTRA, ITEM_ULTRANECROZIUM_Z}, {FORM_CHANGE_TERMINATOR}, }; -#endif +#endif //P_FAMILY_NECROZMA -#if P_GEN_8_POKEMON == TRUE +#if P_FAMILY_MELTAN +static const struct FormChange sMelmetalFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_MELMETAL_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_MELTAN + +#if P_FAMILY_GROOKEY +static const struct FormChange sRillaboomFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_RILLABOOM_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_GROOKEY + +#if P_FAMILY_SCORBUNNY +static const struct FormChange sCinderaceFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CINDERACE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_SCORBUNNY + +#if P_FAMILY_SOBBLE +static const struct FormChange sInteleonFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_INTELEON_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_SOBBLE + +#if P_FAMILY_ROOKIDEE +static const struct FormChange sCorviknightFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CORVIKNIGHT_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_ROOKIDEE + +#if P_FAMILY_BLIPBUG +static const struct FormChange sOrbeetleFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_ORBEETLE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_BLIPBUG + +#if P_FAMILY_CHEWTLE +static const struct FormChange sDrednawFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_DREDNAW_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_CHEWTLE + +#if P_FAMILY_ROLYCOLY +static const struct FormChange sCoalossalFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_COALOSSAL_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_ROLYCOLY + +#if P_FAMILY_APPLIN +static const struct FormChange sFlappleFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_FLAPPLE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sAppletunFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_APPLETUN_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_APPLIN + +#if P_FAMILY_SILICOBRA +static const struct FormChange sSandacondaFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_SANDACONDA_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_SILICOBRA + +#if P_FAMILY_CRAMORANT static const struct FormChange sCramorantFormChangeTable[] = { {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_CRAMORANT_GULPING, ABILITY_GULP_MISSILE, HP_HIGHER_THAN, 50}, {FORM_CHANGE_BATTLE_HP_PERCENT, SPECIES_CRAMORANT_GORGING, ABILITY_GULP_MISSILE, HP_LOWER_EQ_THAN, 50}, @@ -567,40 +927,148 @@ static const struct FormChange sCramorantFormChangeTable[] = { {FORM_CHANGE_END_BATTLE, SPECIES_CRAMORANT}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_CRAMORANT +#if P_FAMILY_TOXEL +static const struct FormChange sToxtricityAmpedFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_TOXTRICITY_AMPED_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; + +static const struct FormChange sToxtricityLowKeyFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_TOXEL + +#if P_FAMILY_SIZZLIPEDE +static const struct FormChange sCentiskorchFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_CENTISKORCH_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_SIZZLIPEDE + +#if P_FAMILY_HATENNA +static const struct FormChange sHattereneFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_HATTERENE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_HATENNA + +#if P_FAMILY_IMPIDIMP +static const struct FormChange sGrimmsnarlFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_GRIMMSNARL_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_IMPIDIMP + +#if P_FAMILY_MILCERY +static const struct FormChange sAlcremieFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_ALCREMIE_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_MILCERY + +#if P_FAMILY_EISCUE static const struct FormChange sEiscueFormChangeTable[] = { - {FORM_CHANGE_FAINT, SPECIES_EISCUE}, - {FORM_CHANGE_END_BATTLE, SPECIES_EISCUE}, + {FORM_CHANGE_FAINT, SPECIES_EISCUE_ICE_FACE}, + {FORM_CHANGE_END_BATTLE, SPECIES_EISCUE_ICE_FACE}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_EISCUE +#if P_FAMILY_MORPEKO static const struct FormChange sMorpekoFormChangeTable[] = { - {FORM_CHANGE_BATTLE_TURN_END, SPECIES_MORPEKO_HANGRY, ABILITY_HUNGER_SWITCH}, - {FORM_CHANGE_BATTLE_TURN_END, SPECIES_MORPEKO , ABILITY_HUNGER_SWITCH}, - {FORM_CHANGE_BATTLE_SWITCH, SPECIES_MORPEKO}, - {FORM_CHANGE_FAINT, SPECIES_MORPEKO}, - {FORM_CHANGE_END_BATTLE, SPECIES_MORPEKO}, + {FORM_CHANGE_BATTLE_TURN_END, SPECIES_MORPEKO_HANGRY, ABILITY_HUNGER_SWITCH}, + {FORM_CHANGE_BATTLE_TURN_END, SPECIES_MORPEKO_FULL_BELLY, ABILITY_HUNGER_SWITCH}, + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_MORPEKO_FULL_BELLY}, + {FORM_CHANGE_FAINT, SPECIES_MORPEKO_FULL_BELLY}, + {FORM_CHANGE_END_BATTLE, SPECIES_MORPEKO_FULL_BELLY}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_MORPEKO +#if P_FAMILY_CUFANT +static const struct FormChange sCopperajahFormChangeTable[] = { + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_COPPERAJAH_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_CUFANT + +#if P_FAMILY_DURALUDON +static const struct FormChange sDuraludonFormChangeTable[] = { + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_DURALUDON_GIGANTAMAX}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_DURALUDON + +#if P_FAMILY_ZACIAN static const struct FormChange sZacianFormChangeTable[] = { - {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZACIAN_CROWNED_SWORD, ITEM_RUSTED_SWORD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BLADE}, - {FORM_CHANGE_END_BATTLE, SPECIES_ZACIAN, ITEM_RUSTED_SWORD, MOVE_BEHEMOTH_BLADE, MOVE_IRON_HEAD}, + {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZACIAN_CROWNED_SWORD, ITEM_RUSTED_SWORD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BLADE}, + {FORM_CHANGE_END_BATTLE, SPECIES_ZACIAN_HERO_OF_MANY_BATTLES, ITEM_RUSTED_SWORD, MOVE_BEHEMOTH_BLADE, MOVE_IRON_HEAD}, {FORM_CHANGE_TERMINATOR}, }; +#endif //P_FAMILY_ZACIAN +#if P_FAMILY_ZAMAZENTA static const struct FormChange sZamazentaFormChangeTable[] = { - {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZAMAZENTA_CROWNED_SHIELD, ITEM_RUSTED_SHIELD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BASH}, - {FORM_CHANGE_END_BATTLE, SPECIES_ZAMAZENTA, ITEM_RUSTED_SHIELD, MOVE_BEHEMOTH_BASH, MOVE_IRON_HEAD}, + {FORM_CHANGE_BEGIN_BATTLE, SPECIES_ZAMAZENTA_CROWNED_SHIELD, ITEM_RUSTED_SHIELD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BASH}, + {FORM_CHANGE_END_BATTLE, SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES, ITEM_RUSTED_SHIELD, MOVE_BEHEMOTH_BASH, MOVE_IRON_HEAD}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_ZAMAZENTA + +#if P_FAMILY_KUBFU +static const struct FormChange sUrshifuSingleStrikeFormChangeTable[] = { + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX}, {FORM_CHANGE_TERMINATOR}, }; -static const struct FormChange sEnamorusFormChangeTable[] = { - {FORM_CHANGE_ITEM_USE, SPECIES_ENAMORUS, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_ITEM_USE, SPECIES_ENAMORUS_THERIAN, ITEM_REVEAL_GLASS}, +static const struct FormChange sUrshifuRapidStrikeFormChangeTable[] = { + {FORM_CHANGE_BATTLE_GIGANTAMAX, SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX}, {FORM_CHANGE_TERMINATOR}, }; -#endif +#endif //P_FAMILY_KUBFU + +#if P_FAMILY_CALYREX +static const struct Fusion sCalyrexFusionTable[] = { + {3, ITEM_REINS_OF_UNITY, SPECIES_CALYREX, SPECIES_GLASTRIER, SPECIES_CALYREX_ICE_RIDER, MOVE_GLACIAL_LANCE, MOVE_CONFUSION}, + {3, ITEM_REINS_OF_UNITY, SPECIES_CALYREX, SPECIES_SPECTRIER, SPECIES_CALYREX_SHADOW_RIDER, MOVE_ASTRAL_BARRAGE, MOVE_CONFUSION}, + {FUSION_TERMINATOR}, +}; +#endif //P_FAMILY_CALYREX + +#if P_FAMILY_ENAMORUS +static const struct FormChange sEnamorusFormChangeTable[] = { + {FORM_CHANGE_ITEM_USE, SPECIES_ENAMORUS_INCARNATE, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_ITEM_USE, SPECIES_ENAMORUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_ENAMORUS + +#if P_FAMILY_FINIZEN +static const struct FormChange sPalafinZeroFormChangeTable[] = +{ + {FORM_CHANGE_BATTLE_SWITCH, SPECIES_PALAFIN_HERO}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_FINIZEN + +#if P_FAMILY_OGERPON +static const struct FormChange sOgerponFormChangeTable[] = { + {FORM_CHANGE_ITEM_HOLD, SPECIES_OGERPON_TEAL_MASK, ITEM_NONE}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_OGERPON_WELLSPRING_MASK, ITEM_WELLSPRING_MASK}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_OGERPON_HEARTHFLAME_MASK, ITEM_HEARTHFLAME_MASK}, + {FORM_CHANGE_ITEM_HOLD, SPECIES_OGERPON_CORNERSTONE_MASK, ITEM_CORNERSTONE_MASK}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_OGERPON #undef WHEN_LEARNED #undef WHEN_FORGOTTEN diff --git a/src/data/pokemon/form_species_table_pointers.h b/src/data/pokemon/form_species_table_pointers.h deleted file mode 100644 index cc66c12ed8..0000000000 --- a/src/data/pokemon/form_species_table_pointers.h +++ /dev/null @@ -1,597 +0,0 @@ -const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = -{ - [SPECIES_VENUSAUR] = sVenusaurFormSpeciesIdTable, - [SPECIES_CHARIZARD] = sCharizardFormSpeciesIdTable, - [SPECIES_BLASTOISE] = sBlastoiseFormSpeciesIdTable, - [SPECIES_BEEDRILL] = sBeedrillFormSpeciesIdTable, - [SPECIES_PIDGEOT] = sPidgeotFormSpeciesIdTable, - [SPECIES_RATTATA] = sRattataFormSpeciesIdTable, - [SPECIES_RATICATE] = sRaticateFormSpeciesIdTable, - [SPECIES_PIKACHU] = sPikachuFormSpeciesIdTable, - [SPECIES_RAICHU] = sRaichuFormSpeciesIdTable, - [SPECIES_SANDSHREW] = sSandshrewFormSpeciesIdTable, - [SPECIES_SANDSLASH] = sSandslashFormSpeciesIdTable, - [SPECIES_VULPIX] = sVulpixFormSpeciesIdTable, - [SPECIES_NINETALES] = sNinetalesFormSpeciesIdTable, - [SPECIES_DIGLETT] = sDiglettFormSpeciesIdTable, - [SPECIES_DUGTRIO] = sDugtrioFormSpeciesIdTable, - [SPECIES_MEOWTH] = sMeowthFormSpeciesIdTable, - [SPECIES_PERSIAN] = sPersianFormSpeciesIdTable, - [SPECIES_ALAKAZAM] = sAlakazamFormSpeciesIdTable, - [SPECIES_GROWLITHE] = sGrowlitheFormSpeciesIdTable, - [SPECIES_ARCANINE] = sArcanineFormSpeciesIdTable, - [SPECIES_GEODUDE] = sGeodudeFormSpeciesIdTable, - [SPECIES_GRAVELER] = sGravelerFormSpeciesIdTable, - [SPECIES_GOLEM] = sGolemFormSpeciesIdTable, - [SPECIES_PONYTA] = sPonytaFormSpeciesIdTable, - [SPECIES_RAPIDASH] = sRapidashFormSpeciesIdTable, - [SPECIES_SLOWPOKE] = sSlowpokeFormSpeciesIdTable, - [SPECIES_SLOWBRO] = sSlowbroFormSpeciesIdTable, - [SPECIES_FARFETCHD] = sFarfetchdFormSpeciesIdTable, - [SPECIES_GRIMER] = sGrimerFormSpeciesIdTable, - [SPECIES_MUK] = sMukFormSpeciesIdTable, - [SPECIES_GENGAR] = sGengarFormSpeciesIdTable, - [SPECIES_VOLTORB] = sVoltorbFormSpeciesIdTable, - [SPECIES_ELECTRODE] = sElectrodeFormSpeciesIdTable, - [SPECIES_EXEGGUTOR] = sExeggutorFormSpeciesIdTable, - [SPECIES_MAROWAK] = sMarowakFormSpeciesIdTable, - [SPECIES_WEEZING] = sWeezingFormSpeciesIdTable, - [SPECIES_KANGASKHAN] = sKangaskhanFormSpeciesIdTable, - [SPECIES_MR_MIME] = sMrMimeFormSpeciesIdTable, - [SPECIES_PINSIR] = sPinsirFormSpeciesIdTable, - [SPECIES_GYARADOS] = sGyaradosFormSpeciesIdTable, - [SPECIES_AERODACTYL] = sAerodactylFormSpeciesIdTable, - [SPECIES_ARTICUNO] = sArticunoFormSpeciesIdTable, - [SPECIES_ZAPDOS] = sZapdosFormSpeciesIdTable, - [SPECIES_MOLTRES] = sMoltresFormSpeciesIdTable, - [SPECIES_MEWTWO] = sMewtwoFormSpeciesIdTable, - [SPECIES_TYPHLOSION] = sTyphlosionFormSpeciesIdTable, - [SPECIES_PICHU] = sPichuFormSpeciesIdTable, - [SPECIES_AMPHAROS] = sAmpharosFormSpeciesIdTable, - [SPECIES_SLOWKING] = sSlowkingFormSpeciesIdTable, - [SPECIES_QWILFISH] = sQwilfishFormSpeciesIdTable, - [SPECIES_SNEASEL] = sSneaselFormSpeciesIdTable, - [SPECIES_UNOWN] = sUnownFormSpeciesIdTable, - [SPECIES_STEELIX] = sSteelixFormSpeciesIdTable, - [SPECIES_SCIZOR] = sScizorFormSpeciesIdTable, - [SPECIES_HERACROSS] = sHeracrossFormSpeciesIdTable, - [SPECIES_CORSOLA] = sCorsolaFormSpeciesIdTable, - [SPECIES_HOUNDOOM] = sHoundoomFormSpeciesIdTable, - [SPECIES_TYRANITAR] = sTyranitarFormSpeciesIdTable, - [SPECIES_SCEPTILE] = sSceptileFormSpeciesIdTable, - [SPECIES_BLAZIKEN] = sBlazikenFormSpeciesIdTable, - [SPECIES_SWAMPERT] = sSwampertFormSpeciesIdTable, - [SPECIES_ZIGZAGOON] = sZigzagoonFormSpeciesIdTable, - [SPECIES_LINOONE] = sLinooneFormSpeciesIdTable, - [SPECIES_GARDEVOIR] = sGardevoirFormSpeciesIdTable, - [SPECIES_SABLEYE] = sSableyeFormSpeciesIdTable, - [SPECIES_MAWILE] = sMawileFormSpeciesIdTable, - [SPECIES_AGGRON] = sAggronFormSpeciesIdTable, - [SPECIES_MEDICHAM] = sMedichamFormSpeciesIdTable, - [SPECIES_MANECTRIC] = sManectricFormSpeciesIdTable, - [SPECIES_SHARPEDO] = sSharpedoFormSpeciesIdTable, - [SPECIES_CAMERUPT] = sCameruptFormSpeciesIdTable, - [SPECIES_ALTARIA] = sAltariaFormSpeciesIdTable, - [SPECIES_CASTFORM] = sCastformFormSpeciesIdTable, - [SPECIES_BANETTE] = sBanetteFormSpeciesIdTable, - [SPECIES_ABSOL] = sAbsolFormSpeciesIdTable, - [SPECIES_GLALIE] = sGlalieFormSpeciesIdTable, - [SPECIES_SALAMENCE] = sSalamenceFormSpeciesIdTable, - [SPECIES_METAGROSS] = sMetagrossFormSpeciesIdTable, - [SPECIES_LATIAS] = sLatiasFormSpeciesIdTable, - [SPECIES_LATIOS] = sLatiosFormSpeciesIdTable, - [SPECIES_KYOGRE] = sKyogreFormSpeciesIdTable, - [SPECIES_GROUDON] = sGroudonFormSpeciesIdTable, - [SPECIES_RAYQUAZA] = sRayquazaFormSpeciesIdTable, - [SPECIES_DEOXYS] = sDeoxysFormSpeciesIdTable, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_BURMY] = sBurmyFormSpeciesIdTable, - [SPECIES_WORMADAM] = sWormadamFormSpeciesIdTable, - [SPECIES_CHERRIM] = sCherrimFormSpeciesIdTable, - [SPECIES_SHELLOS] = sShellosFormSpeciesIdTable, - [SPECIES_GASTRODON] = sGastrodonFormSpeciesIdTable, - [SPECIES_LOPUNNY] = sLopunnyFormSpeciesIdTable, - [SPECIES_GARCHOMP] = sGarchompFormSpeciesIdTable, - [SPECIES_LUCARIO] = sLucarioFormSpeciesIdTable, - [SPECIES_ABOMASNOW] = sAbomasnowFormSpeciesIdTable, - [SPECIES_GALLADE] = sGalladeFormSpeciesIdTable, - [SPECIES_ROTOM] = sRotomFormSpeciesIdTable, - [SPECIES_DIALGA] = sDialgaFormSpeciesIdTable, - [SPECIES_PALKIA] = sPalkiaFormSpeciesIdTable, - [SPECIES_GIRATINA] = sGiratinaFormSpeciesIdTable, - [SPECIES_SHAYMIN] = sShayminFormSpeciesIdTable, - [SPECIES_ARCEUS] = sArceusFormSpeciesIdTable, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_SAMUROTT] = sSamurottFormSpeciesIdTable, - [SPECIES_AUDINO] = sAudinoFormSpeciesIdTable, - [SPECIES_BASCULIN] = sBasculinFormSpeciesIdTable, - [SPECIES_LILLIGANT] = sLilligantFormSpeciesIdTable, - [SPECIES_DARUMAKA] = sDarumakaFormSpeciesIdTable, - [SPECIES_DARMANITAN] = sDarmanitanFormSpeciesIdTable, - [SPECIES_YAMASK] = sYamaskFormSpeciesIdTable, - [SPECIES_ZORUA] = sZoruaFormSpeciesIdTable, - [SPECIES_ZOROARK] = sZoroarkFormSpeciesIdTable, - [SPECIES_DEERLING] = sDeerlingFormSpeciesIdTable, - [SPECIES_SAWSBUCK] = sSawsbuckFormSpeciesIdTable, - [SPECIES_STUNFISK] = sStunfiskFormSpeciesIdTable, - [SPECIES_BRAVIARY] = sBraviaryFormSpeciesIdTable, - [SPECIES_TORNADUS] = sTornadusFormSpeciesIdTable, - [SPECIES_THUNDURUS] = sThundurusFormSpeciesIdTable, - [SPECIES_LANDORUS] = sLandorusFormSpeciesIdTable, - [SPECIES_KYUREM] = sKyuremFormSpeciesIdTable, - [SPECIES_KELDEO] = sKeldeoFormSpeciesIdTable, - [SPECIES_MELOETTA] = sMeloettaFormSpeciesIdTable, - [SPECIES_GENESECT] = sGenesectFormSpeciesIdTable, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_GRENINJA] = sGreninjaFormSpeciesIdTable, - [SPECIES_VIVILLON] = sVivillonFormSpeciesIdTable, - [SPECIES_FLABEBE] = sFlabebeFormSpeciesIdTable, - [SPECIES_FLOETTE] = sFloetteFormSpeciesIdTable, - [SPECIES_FLORGES] = sFlorgesFormSpeciesIdTable, - [SPECIES_FURFROU] = sFurfrouFormSpeciesIdTable, - [SPECIES_MEOWSTIC] = sMeowsticFormSpeciesIdTable, - [SPECIES_AEGISLASH] = sAegislashFormSpeciesIdTable, - [SPECIES_SLIGGOO] = sSliggooFormSpeciesIdTable, - [SPECIES_GOODRA] = sGoodraFormSpeciesIdTable, - [SPECIES_PUMPKABOO] = sPumpkabooFormSpeciesIdTable, - [SPECIES_GOURGEIST] = sGourgeistFormSpeciesIdTable, - [SPECIES_AVALUGG] = sAvaluggFormSpeciesIdTable, - [SPECIES_XERNEAS] = sXerneasFormSpeciesIdTable, - [SPECIES_ZYGARDE] = sZygardeFormSpeciesIdTable, - [SPECIES_DIANCIE] = sDiancieFormSpeciesIdTable, - [SPECIES_HOOPA] = sHoopaFormSpeciesIdTable, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_DECIDUEYE] = sDecidueyeFormSpeciesIdTable, - [SPECIES_ORICORIO] = sOricorioFormSpeciesIdTable, - [SPECIES_ROCKRUFF] = sRockruffFormSpeciesIdTable, - [SPECIES_LYCANROC] = sLycanrocFormSpeciesIdTable, - [SPECIES_WISHIWASHI] = sWishiwashiFormSpeciesIdTable, - [SPECIES_SILVALLY] = sSilvallyFormSpeciesIdTable, - [SPECIES_MINIOR] = sMiniorFormSpeciesIdTable, - [SPECIES_MIMIKYU] = sMimikyuFormSpeciesIdTable, - [SPECIES_NECROZMA] = sNecrozmaFormSpeciesIdTable, - [SPECIES_MAGEARNA] = sMagearnaFormSpeciesIdTable, -#endif -#if P_GEN_8_POKEMON == TRUE - [SPECIES_CRAMORANT] = sCramorantFormSpeciesIdTable, - [SPECIES_TOXTRICITY] = sToxtricityFormSpeciesIdTable, - [SPECIES_SINISTEA] = sSinisteaFormSpeciesIdTable, - [SPECIES_POLTEAGEIST] = sPolteageistFormSpeciesIdTable, - [SPECIES_ALCREMIE] = sAlcremieFormSpeciesIdTable, - [SPECIES_EISCUE] = sEiscueFormSpeciesIdTable, - [SPECIES_INDEEDEE] = sIndeedeeFormSpeciesIdTable, - [SPECIES_MORPEKO] = sMorpekoFormSpeciesIdTable, - [SPECIES_ZACIAN] = sZacianFormSpeciesIdTable, - [SPECIES_ZAMAZENTA] = sZamazentaFormSpeciesIdTable, - [SPECIES_ETERNATUS] = sEternatusFormSpeciesIdTable, - [SPECIES_URSHIFU] = sUrshifuFormSpeciesIdTable, - [SPECIES_ZARUDE] = sZarudeFormSpeciesIdTable, - [SPECIES_CALYREX] = sCalyrexFormSpeciesIdTable, - [SPECIES_ENAMORUS] = sEnamorusFormSpeciesIdTable, - [SPECIES_BASCULEGION] = sBasculegionFormSpeciesIdTable, -#endif - // Megas - [SPECIES_VENUSAUR_MEGA] = sVenusaurFormSpeciesIdTable, - [SPECIES_CHARIZARD_MEGA_X] = sCharizardFormSpeciesIdTable, - [SPECIES_CHARIZARD_MEGA_Y] = sCharizardFormSpeciesIdTable, - [SPECIES_BLASTOISE_MEGA] = sBlastoiseFormSpeciesIdTable, - [SPECIES_BEEDRILL_MEGA] = sBeedrillFormSpeciesIdTable, - [SPECIES_PIDGEOT_MEGA] = sPidgeotFormSpeciesIdTable, - [SPECIES_ALAKAZAM_MEGA] = sAlakazamFormSpeciesIdTable, - [SPECIES_SLOWBRO_MEGA] = sSlowbroFormSpeciesIdTable, - [SPECIES_GENGAR_MEGA] = sGengarFormSpeciesIdTable, - [SPECIES_KANGASKHAN_MEGA] = sKangaskhanFormSpeciesIdTable, - [SPECIES_PINSIR_MEGA] = sPinsirFormSpeciesIdTable, - [SPECIES_GYARADOS_MEGA] = sGyaradosFormSpeciesIdTable, - [SPECIES_AERODACTYL_MEGA] = sAerodactylFormSpeciesIdTable, - [SPECIES_MEWTWO_MEGA_X] = sMewtwoFormSpeciesIdTable, - [SPECIES_MEWTWO_MEGA_Y] = sMewtwoFormSpeciesIdTable, - [SPECIES_AMPHAROS_MEGA] = sAmpharosFormSpeciesIdTable, - [SPECIES_STEELIX_MEGA] = sSteelixFormSpeciesIdTable, - [SPECIES_SCIZOR_MEGA] = sScizorFormSpeciesIdTable, - [SPECIES_HERACROSS_MEGA] = sHeracrossFormSpeciesIdTable, - [SPECIES_HOUNDOOM_MEGA] = sHoundoomFormSpeciesIdTable, - [SPECIES_TYRANITAR_MEGA] = sTyranitarFormSpeciesIdTable, - [SPECIES_SCEPTILE_MEGA] = sSceptileFormSpeciesIdTable, - [SPECIES_BLAZIKEN_MEGA] = sBlazikenFormSpeciesIdTable, - [SPECIES_SWAMPERT_MEGA] = sSwampertFormSpeciesIdTable, - [SPECIES_GARDEVOIR_MEGA] = sGardevoirFormSpeciesIdTable, - [SPECIES_SABLEYE_MEGA] = sSableyeFormSpeciesIdTable, - [SPECIES_MAWILE_MEGA] = sMawileFormSpeciesIdTable, - [SPECIES_AGGRON_MEGA] = sAggronFormSpeciesIdTable, - [SPECIES_MEDICHAM_MEGA] = sMedichamFormSpeciesIdTable, - [SPECIES_MANECTRIC_MEGA] = sManectricFormSpeciesIdTable, - [SPECIES_SHARPEDO_MEGA] = sSharpedoFormSpeciesIdTable, - [SPECIES_CAMERUPT_MEGA] = sCameruptFormSpeciesIdTable, - [SPECIES_ALTARIA_MEGA] = sAltariaFormSpeciesIdTable, - [SPECIES_BANETTE_MEGA] = sBanetteFormSpeciesIdTable, - [SPECIES_ABSOL_MEGA] = sAbsolFormSpeciesIdTable, - [SPECIES_GLALIE_MEGA] = sGlalieFormSpeciesIdTable, - [SPECIES_SALAMENCE_MEGA] = sSalamenceFormSpeciesIdTable, - [SPECIES_METAGROSS_MEGA] = sMetagrossFormSpeciesIdTable, - [SPECIES_LATIAS_MEGA] = sLatiasFormSpeciesIdTable, - [SPECIES_LATIOS_MEGA] = sLatiosFormSpeciesIdTable, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_LOPUNNY_MEGA] = sLopunnyFormSpeciesIdTable, - [SPECIES_GARCHOMP_MEGA] = sGarchompFormSpeciesIdTable, - [SPECIES_LUCARIO_MEGA] = sLucarioFormSpeciesIdTable, - [SPECIES_ABOMASNOW_MEGA] = sAbomasnowFormSpeciesIdTable, - [SPECIES_GALLADE_MEGA] = sGalladeFormSpeciesIdTable, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_AUDINO_MEGA] = sAudinoFormSpeciesIdTable, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_DIANCIE_MEGA] = sDiancieFormSpeciesIdTable, -#endif - // Special Mega + Primals - [SPECIES_RAYQUAZA_MEGA] = sRayquazaFormSpeciesIdTable, - [SPECIES_KYOGRE_PRIMAL] = sKyogreFormSpeciesIdTable, - [SPECIES_GROUDON_PRIMAL] = sGroudonFormSpeciesIdTable, - // Alolan Forms - [SPECIES_RATTATA_ALOLAN] = sRattataFormSpeciesIdTable, - [SPECIES_RATICATE_ALOLAN] = sRaticateFormSpeciesIdTable, - [SPECIES_RAICHU_ALOLAN] = sRaichuFormSpeciesIdTable, - [SPECIES_SANDSHREW_ALOLAN] = sSandshrewFormSpeciesIdTable, - [SPECIES_SANDSLASH_ALOLAN] = sSandslashFormSpeciesIdTable, - [SPECIES_VULPIX_ALOLAN] = sVulpixFormSpeciesIdTable, - [SPECIES_NINETALES_ALOLAN] = sNinetalesFormSpeciesIdTable, - [SPECIES_DIGLETT_ALOLAN] = sDiglettFormSpeciesIdTable, - [SPECIES_DUGTRIO_ALOLAN] = sDugtrioFormSpeciesIdTable, - [SPECIES_MEOWTH_ALOLAN] = sMeowthFormSpeciesIdTable, - [SPECIES_PERSIAN_ALOLAN] = sPersianFormSpeciesIdTable, - [SPECIES_GEODUDE_ALOLAN] = sGeodudeFormSpeciesIdTable, - [SPECIES_GRAVELER_ALOLAN] = sGravelerFormSpeciesIdTable, - [SPECIES_GOLEM_ALOLAN] = sGolemFormSpeciesIdTable, - [SPECIES_GRIMER_ALOLAN] = sGrimerFormSpeciesIdTable, - [SPECIES_MUK_ALOLAN] = sMukFormSpeciesIdTable, - [SPECIES_EXEGGUTOR_ALOLAN] = sExeggutorFormSpeciesIdTable, - [SPECIES_MAROWAK_ALOLAN] = sMarowakFormSpeciesIdTable, - // Galarian Forms - [SPECIES_MEOWTH_GALARIAN] = sMeowthFormSpeciesIdTable, - [SPECIES_PONYTA_GALARIAN] = sPonytaFormSpeciesIdTable, - [SPECIES_RAPIDASH_GALARIAN] = sRapidashFormSpeciesIdTable, - [SPECIES_SLOWPOKE_GALARIAN] = sSlowpokeFormSpeciesIdTable, - [SPECIES_SLOWBRO_GALARIAN] = sSlowbroFormSpeciesIdTable, - [SPECIES_FARFETCHD_GALARIAN] = sFarfetchdFormSpeciesIdTable, - [SPECIES_WEEZING_GALARIAN] = sWeezingFormSpeciesIdTable, - [SPECIES_MR_MIME_GALARIAN] = sMrMimeFormSpeciesIdTable, - [SPECIES_ARTICUNO_GALARIAN] = sArticunoFormSpeciesIdTable, - [SPECIES_ZAPDOS_GALARIAN] = sZapdosFormSpeciesIdTable, - [SPECIES_MOLTRES_GALARIAN] = sMoltresFormSpeciesIdTable, - [SPECIES_SLOWKING_GALARIAN] = sSlowkingFormSpeciesIdTable, - [SPECIES_CORSOLA_GALARIAN] = sCorsolaFormSpeciesIdTable, - [SPECIES_ZIGZAGOON_GALARIAN] = sZigzagoonFormSpeciesIdTable, - [SPECIES_LINOONE_GALARIAN] = sLinooneFormSpeciesIdTable, -#if P_GEN_5_POKEMON == TRUE - [SPECIES_DARUMAKA_GALARIAN] = sDarumakaFormSpeciesIdTable, - [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanFormSpeciesIdTable, - [SPECIES_YAMASK_GALARIAN] = sYamaskFormSpeciesIdTable, - [SPECIES_STUNFISK_GALARIAN] = sStunfiskFormSpeciesIdTable, -#endif - //Hisuian Forms - [SPECIES_GROWLITHE_HISUIAN] = sGrowlitheFormSpeciesIdTable, - [SPECIES_ARCANINE_HISUIAN] = sArcanineFormSpeciesIdTable, - [SPECIES_VOLTORB_HISUIAN] = sVoltorbFormSpeciesIdTable, - [SPECIES_ELECTRODE_HISUIAN] = sElectrodeFormSpeciesIdTable, - [SPECIES_TYPHLOSION_HISUIAN] = sTyphlosionFormSpeciesIdTable, - [SPECIES_QWILFISH_HISUIAN] = sQwilfishFormSpeciesIdTable, - [SPECIES_SNEASEL_HISUIAN] = sSneaselFormSpeciesIdTable, -#if P_GEN_5_POKEMON == TRUE - [SPECIES_SAMUROTT_HISUIAN] = sSamurottFormSpeciesIdTable, - [SPECIES_LILLIGANT_HISUIAN] = sLilligantFormSpeciesIdTable, - [SPECIES_ZORUA_HISUIAN] = sZoruaFormSpeciesIdTable, - [SPECIES_ZOROARK_HISUIAN] = sZoroarkFormSpeciesIdTable, - [SPECIES_BRAVIARY_HISUIAN] = sBraviaryFormSpeciesIdTable, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_SLIGGOO_HISUIAN] = sSliggooFormSpeciesIdTable, - [SPECIES_GOODRA_HISUIAN] = sGoodraFormSpeciesIdTable, - [SPECIES_AVALUGG_HISUIAN] = sAvaluggFormSpeciesIdTable, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_DECIDUEYE_HISUIAN] = sDecidueyeFormSpeciesIdTable, -#endif - // Misc Forms - // Cosplay Pikachu - [SPECIES_PIKACHU_COSPLAY] = sPikachuFormSpeciesIdTable, - [SPECIES_PIKACHU_ROCK_STAR] = sPikachuFormSpeciesIdTable, - [SPECIES_PIKACHU_BELLE] = sPikachuFormSpeciesIdTable, - [SPECIES_PIKACHU_POP_STAR] = sPikachuFormSpeciesIdTable, - [SPECIES_PIKACHU_PH_D] = sPikachuFormSpeciesIdTable, - [SPECIES_PIKACHU_LIBRE] = sPikachuFormSpeciesIdTable, - // Cap Pikachu - [SPECIES_PIKACHU_ORIGINAL_CAP] = sPikachuFormSpeciesIdTable, - [SPECIES_PIKACHU_HOENN_CAP] = sPikachuFormSpeciesIdTable, - [SPECIES_PIKACHU_SINNOH_CAP] = sPikachuFormSpeciesIdTable, - [SPECIES_PIKACHU_UNOVA_CAP] = sPikachuFormSpeciesIdTable, - [SPECIES_PIKACHU_KALOS_CAP] = sPikachuFormSpeciesIdTable, - [SPECIES_PIKACHU_ALOLA_CAP] = sPikachuFormSpeciesIdTable, - [SPECIES_PIKACHU_PARTNER_CAP] = sPikachuFormSpeciesIdTable, - [SPECIES_PIKACHU_WORLD_CAP] = sPikachuFormSpeciesIdTable, - // Pichu - [SPECIES_PICHU_SPIKY_EARED] = sPichuFormSpeciesIdTable, - // Unown - [SPECIES_UNOWN_B] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_C] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_D] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_E] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_F] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_G] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_H] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_I] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_J] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_K] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_L] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_M] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_N] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_O] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_P] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_Q] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_R] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_S] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_T] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_U] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_V] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_W] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_X] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_Y] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_Z] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_EMARK] = sUnownFormSpeciesIdTable, - [SPECIES_UNOWN_QMARK] = sUnownFormSpeciesIdTable, - // Castform - [SPECIES_CASTFORM_SUNNY] = sCastformFormSpeciesIdTable, - [SPECIES_CASTFORM_RAINY] = sCastformFormSpeciesIdTable, - [SPECIES_CASTFORM_SNOWY] = sCastformFormSpeciesIdTable, - // Deoxys - [SPECIES_DEOXYS_ATTACK] = sDeoxysFormSpeciesIdTable, - [SPECIES_DEOXYS_DEFENSE] = sDeoxysFormSpeciesIdTable, - [SPECIES_DEOXYS_SPEED] = sDeoxysFormSpeciesIdTable, -#if P_GEN_4_POKEMON == TRUE - // Burmy - [SPECIES_BURMY_SANDY_CLOAK] = sBurmyFormSpeciesIdTable, - [SPECIES_BURMY_TRASH_CLOAK] = sBurmyFormSpeciesIdTable, - // Wormadam - [SPECIES_WORMADAM_SANDY_CLOAK] = sWormadamFormSpeciesIdTable, - [SPECIES_WORMADAM_TRASH_CLOAK] = sWormadamFormSpeciesIdTable, - // Cherrim - [SPECIES_CHERRIM_SUNSHINE] = sCherrimFormSpeciesIdTable, - // Shellos - [SPECIES_SHELLOS_EAST_SEA] = sShellosFormSpeciesIdTable, - // Gastrodon - [SPECIES_GASTRODON_EAST_SEA] = sGastrodonFormSpeciesIdTable, - // Rotom - [SPECIES_ROTOM_HEAT] = sRotomFormSpeciesIdTable, - [SPECIES_ROTOM_WASH] = sRotomFormSpeciesIdTable, - [SPECIES_ROTOM_FROST] = sRotomFormSpeciesIdTable, - [SPECIES_ROTOM_FAN] = sRotomFormSpeciesIdTable, - [SPECIES_ROTOM_MOW] = sRotomFormSpeciesIdTable, - // Origin Forme - [SPECIES_DIALGA_ORIGIN] = sDialgaFormSpeciesIdTable, - [SPECIES_PALKIA_ORIGIN] = sPalkiaFormSpeciesIdTable, - [SPECIES_GIRATINA_ORIGIN] = sGiratinaFormSpeciesIdTable, - // Shaymin - [SPECIES_SHAYMIN_SKY] = sShayminFormSpeciesIdTable, - // Arceus - [SPECIES_ARCEUS_FIGHTING] = sArceusFormSpeciesIdTable, - [SPECIES_ARCEUS_FLYING] = sArceusFormSpeciesIdTable, - [SPECIES_ARCEUS_POISON] = sArceusFormSpeciesIdTable, - [SPECIES_ARCEUS_GROUND] = sArceusFormSpeciesIdTable, - [SPECIES_ARCEUS_ROCK] = sArceusFormSpeciesIdTable, - [SPECIES_ARCEUS_BUG] = sArceusFormSpeciesIdTable, - [SPECIES_ARCEUS_GHOST] = sArceusFormSpeciesIdTable, - [SPECIES_ARCEUS_STEEL] = sArceusFormSpeciesIdTable, - [SPECIES_ARCEUS_FIRE] = sArceusFormSpeciesIdTable, - [SPECIES_ARCEUS_WATER] = sArceusFormSpeciesIdTable, - [SPECIES_ARCEUS_GRASS] = sArceusFormSpeciesIdTable, - [SPECIES_ARCEUS_ELECTRIC] = sArceusFormSpeciesIdTable, - [SPECIES_ARCEUS_PSYCHIC] = sArceusFormSpeciesIdTable, - [SPECIES_ARCEUS_ICE] = sArceusFormSpeciesIdTable, - [SPECIES_ARCEUS_DRAGON] = sArceusFormSpeciesIdTable, - [SPECIES_ARCEUS_DARK] = sArceusFormSpeciesIdTable, - [SPECIES_ARCEUS_FAIRY] = sArceusFormSpeciesIdTable, -#endif -#if P_GEN_5_POKEMON == TRUE - // Basculin - [SPECIES_BASCULIN_BLUE_STRIPED] = sBasculinFormSpeciesIdTable, - [SPECIES_BASCULIN_WHITE_STRIPED] = sBasculinFormSpeciesIdTable, - // Darmanitan - [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanFormSpeciesIdTable, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanFormSpeciesIdTable, - // Deerling - [SPECIES_DEERLING_SUMMER] = sDeerlingFormSpeciesIdTable, - [SPECIES_DEERLING_AUTUMN] = sDeerlingFormSpeciesIdTable, - [SPECIES_DEERLING_WINTER] = sDeerlingFormSpeciesIdTable, - // Sawsbuck - [SPECIES_SAWSBUCK_SUMMER] = sSawsbuckFormSpeciesIdTable, - [SPECIES_SAWSBUCK_AUTUMN] = sSawsbuckFormSpeciesIdTable, - [SPECIES_SAWSBUCK_WINTER] = sSawsbuckFormSpeciesIdTable, - // Therian Forms - [SPECIES_TORNADUS_THERIAN] = sTornadusFormSpeciesIdTable, - [SPECIES_THUNDURUS_THERIAN] = sThundurusFormSpeciesIdTable, - [SPECIES_LANDORUS_THERIAN] = sLandorusFormSpeciesIdTable, - // Kyurem - [SPECIES_KYUREM_WHITE] = sKyuremFormSpeciesIdTable, - [SPECIES_KYUREM_BLACK] = sKyuremFormSpeciesIdTable, - // Keldeo - [SPECIES_KELDEO_RESOLUTE] = sKeldeoFormSpeciesIdTable, - // Meloetta - [SPECIES_MELOETTA_PIROUETTE] = sMeloettaFormSpeciesIdTable, - // Genesect - [SPECIES_GENESECT_DOUSE_DRIVE] = sGenesectFormSpeciesIdTable, - [SPECIES_GENESECT_SHOCK_DRIVE] = sGenesectFormSpeciesIdTable, - [SPECIES_GENESECT_BURN_DRIVE] = sGenesectFormSpeciesIdTable, - [SPECIES_GENESECT_CHILL_DRIVE] = sGenesectFormSpeciesIdTable, -#endif -#if P_GEN_6_POKEMON == TRUE - // Greninja - [SPECIES_GRENINJA_BATTLE_BOND] = sGreninjaFormSpeciesIdTable, - [SPECIES_GRENINJA_ASH] = sGreninjaFormSpeciesIdTable, - // Vivillon - [SPECIES_VIVILLON_POLAR] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_TUNDRA] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_CONTINENTAL] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_GARDEN] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_ELEGANT] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_MEADOW] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_MODERN] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_MARINE] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_ARCHIPELAGO] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_HIGH_PLAINS] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_SANDSTORM] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_RIVER] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_MONSOON] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_SAVANNA] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_SUN] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_OCEAN] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_JUNGLE] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_FANCY] = sVivillonFormSpeciesIdTable, - [SPECIES_VIVILLON_POKE_BALL] = sVivillonFormSpeciesIdTable, - // Flabébé - [SPECIES_FLABEBE_YELLOW_FLOWER] = sFlabebeFormSpeciesIdTable, - [SPECIES_FLABEBE_ORANGE_FLOWER] = sFlabebeFormSpeciesIdTable, - [SPECIES_FLABEBE_BLUE_FLOWER] = sFlabebeFormSpeciesIdTable, - [SPECIES_FLABEBE_WHITE_FLOWER] = sFlabebeFormSpeciesIdTable, - // Floette - [SPECIES_FLOETTE_YELLOW_FLOWER] = sFloetteFormSpeciesIdTable, - [SPECIES_FLOETTE_ORANGE_FLOWER] = sFloetteFormSpeciesIdTable, - [SPECIES_FLOETTE_BLUE_FLOWER] = sFloetteFormSpeciesIdTable, - [SPECIES_FLOETTE_WHITE_FLOWER] = sFloetteFormSpeciesIdTable, - [SPECIES_FLOETTE_ETERNAL_FLOWER] = sFloetteFormSpeciesIdTable, - // Florges - [SPECIES_FLORGES_YELLOW_FLOWER] = sFlorgesFormSpeciesIdTable, - [SPECIES_FLORGES_ORANGE_FLOWER] = sFlorgesFormSpeciesIdTable, - [SPECIES_FLORGES_BLUE_FLOWER] = sFlorgesFormSpeciesIdTable, - [SPECIES_FLORGES_WHITE_FLOWER] = sFlorgesFormSpeciesIdTable, - //Furfrou - [SPECIES_FURFROU_HEART_TRIM] = sFurfrouFormSpeciesIdTable, - [SPECIES_FURFROU_STAR_TRIM] = sFurfrouFormSpeciesIdTable, - [SPECIES_FURFROU_DIAMOND_TRIM] = sFurfrouFormSpeciesIdTable, - [SPECIES_FURFROU_DEBUTANTE_TRIM] = sFurfrouFormSpeciesIdTable, - [SPECIES_FURFROU_MATRON_TRIM] = sFurfrouFormSpeciesIdTable, - [SPECIES_FURFROU_DANDY_TRIM] = sFurfrouFormSpeciesIdTable, - [SPECIES_FURFROU_LA_REINE_TRIM] = sFurfrouFormSpeciesIdTable, - [SPECIES_FURFROU_KABUKI_TRIM] = sFurfrouFormSpeciesIdTable, - [SPECIES_FURFROU_PHARAOH_TRIM] = sFurfrouFormSpeciesIdTable, - // Meowstic - [SPECIES_MEOWSTIC_FEMALE] = sMeowsticFormSpeciesIdTable, - // Aegislash - [SPECIES_AEGISLASH_BLADE] = sAegislashFormSpeciesIdTable, - // Pumpkaboo - [SPECIES_PUMPKABOO_SMALL] = sPumpkabooFormSpeciesIdTable, - [SPECIES_PUMPKABOO_LARGE] = sPumpkabooFormSpeciesIdTable, - [SPECIES_PUMPKABOO_SUPER] = sPumpkabooFormSpeciesIdTable, - // Gourgeist - [SPECIES_GOURGEIST_SMALL] = sGourgeistFormSpeciesIdTable, - [SPECIES_GOURGEIST_LARGE] = sGourgeistFormSpeciesIdTable, - [SPECIES_GOURGEIST_SUPER] = sGourgeistFormSpeciesIdTable, - // Xerneas - [SPECIES_XERNEAS_ACTIVE] = sXerneasFormSpeciesIdTable, - // Zygarde - [SPECIES_ZYGARDE_10] = sZygardeFormSpeciesIdTable, - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardeFormSpeciesIdTable, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardeFormSpeciesIdTable, - [SPECIES_ZYGARDE_COMPLETE] = sZygardeFormSpeciesIdTable, - // Hoopa - [SPECIES_HOOPA_UNBOUND] = sHoopaFormSpeciesIdTable, -#endif -#if P_GEN_7_POKEMON == TRUE - // Oricorio - [SPECIES_ORICORIO_POM_POM] = sOricorioFormSpeciesIdTable, - [SPECIES_ORICORIO_PAU] = sOricorioFormSpeciesIdTable, - [SPECIES_ORICORIO_SENSU] = sOricorioFormSpeciesIdTable, - // Rockruff - [SPECIES_ROCKRUFF_OWN_TEMPO] = sRockruffFormSpeciesIdTable, - // Lycanroc - [SPECIES_LYCANROC_MIDNIGHT] = sLycanrocFormSpeciesIdTable, - [SPECIES_LYCANROC_DUSK] = sLycanrocFormSpeciesIdTable, - // Wishiwashi - [SPECIES_WISHIWASHI_SCHOOL] = sWishiwashiFormSpeciesIdTable, - // Silvally - [SPECIES_SILVALLY_FIGHTING] = sSilvallyFormSpeciesIdTable, - [SPECIES_SILVALLY_FLYING] = sSilvallyFormSpeciesIdTable, - [SPECIES_SILVALLY_POISON] = sSilvallyFormSpeciesIdTable, - [SPECIES_SILVALLY_GROUND] = sSilvallyFormSpeciesIdTable, - [SPECIES_SILVALLY_ROCK] = sSilvallyFormSpeciesIdTable, - [SPECIES_SILVALLY_BUG] = sSilvallyFormSpeciesIdTable, - [SPECIES_SILVALLY_GHOST] = sSilvallyFormSpeciesIdTable, - [SPECIES_SILVALLY_STEEL] = sSilvallyFormSpeciesIdTable, - [SPECIES_SILVALLY_FIRE] = sSilvallyFormSpeciesIdTable, - [SPECIES_SILVALLY_WATER] = sSilvallyFormSpeciesIdTable, - [SPECIES_SILVALLY_GRASS] = sSilvallyFormSpeciesIdTable, - [SPECIES_SILVALLY_ELECTRIC] = sSilvallyFormSpeciesIdTable, - [SPECIES_SILVALLY_PSYCHIC] = sSilvallyFormSpeciesIdTable, - [SPECIES_SILVALLY_ICE] = sSilvallyFormSpeciesIdTable, - [SPECIES_SILVALLY_DRAGON] = sSilvallyFormSpeciesIdTable, - [SPECIES_SILVALLY_DARK] = sSilvallyFormSpeciesIdTable, - [SPECIES_SILVALLY_FAIRY] = sSilvallyFormSpeciesIdTable, - // Minior - [SPECIES_MINIOR_METEOR_ORANGE] = sMiniorFormSpeciesIdTable, - [SPECIES_MINIOR_METEOR_YELLOW] = sMiniorFormSpeciesIdTable, - [SPECIES_MINIOR_METEOR_GREEN] = sMiniorFormSpeciesIdTable, - [SPECIES_MINIOR_METEOR_BLUE] = sMiniorFormSpeciesIdTable, - [SPECIES_MINIOR_METEOR_INDIGO] = sMiniorFormSpeciesIdTable, - [SPECIES_MINIOR_METEOR_VIOLET] = sMiniorFormSpeciesIdTable, - [SPECIES_MINIOR_CORE_RED] = sMiniorFormSpeciesIdTable, - [SPECIES_MINIOR_CORE_ORANGE] = sMiniorFormSpeciesIdTable, - [SPECIES_MINIOR_CORE_YELLOW] = sMiniorFormSpeciesIdTable, - [SPECIES_MINIOR_CORE_GREEN] = sMiniorFormSpeciesIdTable, - [SPECIES_MINIOR_CORE_BLUE] = sMiniorFormSpeciesIdTable, - [SPECIES_MINIOR_CORE_INDIGO] = sMiniorFormSpeciesIdTable, - [SPECIES_MINIOR_CORE_VIOLET] = sMiniorFormSpeciesIdTable, - // Mimikyu - [SPECIES_MIMIKYU_BUSTED] = sMimikyuFormSpeciesIdTable, - // Necrozma - [SPECIES_NECROZMA_DUSK_MANE] = sNecrozmaFormSpeciesIdTable, - [SPECIES_NECROZMA_DAWN_WINGS] = sNecrozmaFormSpeciesIdTable, - [SPECIES_NECROZMA_ULTRA] = sNecrozmaFormSpeciesIdTable, - // Magearna - [SPECIES_MAGEARNA_ORIGINAL_COLOR] = sMagearnaFormSpeciesIdTable, -#endif -#if P_GEN_8_POKEMON == TRUE - // Cramorant - [SPECIES_CRAMORANT_GULPING] = sCramorantFormSpeciesIdTable, - [SPECIES_CRAMORANT_GORGING] = sCramorantFormSpeciesIdTable, - // Toxtricity - [SPECIES_TOXTRICITY_LOW_KEY] = sToxtricityFormSpeciesIdTable, - // Sinistea - [SPECIES_SINISTEA_ANTIQUE] = sSinisteaFormSpeciesIdTable, - // Polteageist - [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistFormSpeciesIdTable, - // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_MATCHA_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_MINT_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_LEMON_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_SALTED_CREAM] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_RUBY_SWIRL] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAlcremieFormSpeciesIdTable, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAlcremieFormSpeciesIdTable, - // Eiscue - [SPECIES_EISCUE_NOICE_FACE] = sEiscueFormSpeciesIdTable, - // Indeedee - [SPECIES_INDEEDEE_FEMALE] = sIndeedeeFormSpeciesIdTable, - // Morpeko - [SPECIES_MORPEKO_HANGRY] = sMorpekoFormSpeciesIdTable, - // Zacian - [SPECIES_ZACIAN_CROWNED_SWORD] = sZacianFormSpeciesIdTable, - // Zamazenta - [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = sZamazentaFormSpeciesIdTable, - // Eternatus - [SPECIES_ETERNATUS_ETERNAMAX] = sEternatusFormSpeciesIdTable, - // Urshifu - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = sUrshifuFormSpeciesIdTable, - // Zarude - [SPECIES_ZARUDE_DADA] = sZarudeFormSpeciesIdTable, - // Calyrex - [SPECIES_CALYREX_ICE_RIDER] = sCalyrexFormSpeciesIdTable, - [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexFormSpeciesIdTable, - // Enamorus - [SPECIES_ENAMORUS_THERIAN] = sEnamorusFormSpeciesIdTable, - // Basculegion - [SPECIES_BASCULEGION_FEMALE] = sBasculegionFormSpeciesIdTable, -#endif -}; diff --git a/src/data/pokemon/form_species_tables.h b/src/data/pokemon/form_species_tables.h index 2f4e9088e0..b9d2631739 100644 --- a/src/data/pokemon/form_species_tables.h +++ b/src/data/pokemon/form_species_tables.h @@ -1,34 +1,56 @@ +#if P_FAMILY_BULBASAUR static const u16 sVenusaurFormSpeciesIdTable[] = { SPECIES_VENUSAUR, SPECIES_VENUSAUR_MEGA, + SPECIES_VENUSAUR_GIGANTAMAX, FORM_SPECIES_END, }; +#endif //P_FAMILY_BULBASAUR +#if P_FAMILY_CHARMANDER static const u16 sCharizardFormSpeciesIdTable[] = { SPECIES_CHARIZARD, SPECIES_CHARIZARD_MEGA_X, SPECIES_CHARIZARD_MEGA_Y, + SPECIES_CHARIZARD_GIGANTAMAX, FORM_SPECIES_END, }; +#endif //P_FAMILY_CHARMANDER +#if P_FAMILY_SQUIRTLE static const u16 sBlastoiseFormSpeciesIdTable[] = { SPECIES_BLASTOISE, SPECIES_BLASTOISE_MEGA, + SPECIES_BLASTOISE_GIGANTAMAX, FORM_SPECIES_END, }; +#endif //P_FAMILY_SQUIRTLE +#if P_FAMILY_CATERPIE +static const u16 sButterfreeFormSpeciesIdTable[] = { + SPECIES_BUTTERFREE, + SPECIES_BUTTERFREE_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_CATERPIE + +#if P_FAMILY_WEEDLE static const u16 sBeedrillFormSpeciesIdTable[] = { SPECIES_BEEDRILL, SPECIES_BEEDRILL_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_WEEDLE +#if P_FAMILY_PIDGEY static const u16 sPidgeotFormSpeciesIdTable[] = { SPECIES_PIDGEOT, SPECIES_PIDGEOT_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_PIDGEY +#if P_FAMILY_RATTATA static const u16 sRattataFormSpeciesIdTable[] = { SPECIES_RATTATA, SPECIES_RATTATA_ALOLAN, @@ -40,6 +62,16 @@ static const u16 sRaticateFormSpeciesIdTable[] = { SPECIES_RATICATE_ALOLAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_RATTATA + +#if P_FAMILY_PIKACHU +#if P_GEN_2_CROSS_EVOS +static const u16 sPichuFormSpeciesIdTable[] = { + SPECIES_PICHU, + SPECIES_PICHU_SPIKY_EARED, + FORM_SPECIES_END, +}; +#endif //P_GEN_2_CROSS_EVOS static const u16 sPikachuFormSpeciesIdTable[] = { SPECIES_PIKACHU, @@ -57,6 +89,7 @@ static const u16 sPikachuFormSpeciesIdTable[] = { SPECIES_PIKACHU_ALOLA_CAP, SPECIES_PIKACHU_PARTNER_CAP, SPECIES_PIKACHU_WORLD_CAP, + SPECIES_PIKACHU_GIGANTAMAX, FORM_SPECIES_END, }; @@ -65,7 +98,9 @@ static const u16 sRaichuFormSpeciesIdTable[] = { SPECIES_RAICHU_ALOLAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_PIKACHU +#if P_FAMILY_SANDSHREW static const u16 sSandshrewFormSpeciesIdTable[] = { SPECIES_SANDSHREW, SPECIES_SANDSHREW_ALOLAN, @@ -77,7 +112,9 @@ static const u16 sSandslashFormSpeciesIdTable[] = { SPECIES_SANDSLASH_ALOLAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_SANDSHREW +#if P_FAMILY_VULPIX static const u16 sVulpixFormSpeciesIdTable[] = { SPECIES_VULPIX, SPECIES_VULPIX_ALOLAN, @@ -89,7 +126,9 @@ static const u16 sNinetalesFormSpeciesIdTable[] = { SPECIES_NINETALES_ALOLAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_VULPIX +#if P_FAMILY_DIGLETT static const u16 sDiglettFormSpeciesIdTable[] = { SPECIES_DIGLETT, SPECIES_DIGLETT_ALOLAN, @@ -101,11 +140,14 @@ static const u16 sDugtrioFormSpeciesIdTable[] = { SPECIES_DUGTRIO_ALOLAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_DIGLETT +#if P_FAMILY_MEOWTH static const u16 sMeowthFormSpeciesIdTable[] = { SPECIES_MEOWTH, SPECIES_MEOWTH_ALOLAN, SPECIES_MEOWTH_GALARIAN, + SPECIES_MEOWTH_GIGANTAMAX, FORM_SPECIES_END, }; @@ -114,13 +156,9 @@ static const u16 sPersianFormSpeciesIdTable[] = { SPECIES_PERSIAN_ALOLAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_MEOWTH -static const u16 sAlakazamFormSpeciesIdTable[] = { - SPECIES_ALAKAZAM, - SPECIES_ALAKAZAM_MEGA, - FORM_SPECIES_END, -}; - +#if P_FAMILY_GROWLITHE static const u16 sGrowlitheFormSpeciesIdTable[] = { SPECIES_GROWLITHE, SPECIES_GROWLITHE_HISUIAN, @@ -132,7 +170,25 @@ static const u16 sArcanineFormSpeciesIdTable[] = { SPECIES_ARCANINE_HISUIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_GROWLITHE +#if P_FAMILY_ABRA +static const u16 sAlakazamFormSpeciesIdTable[] = { + SPECIES_ALAKAZAM, + SPECIES_ALAKAZAM_MEGA, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_ABRA + +#if P_FAMILY_MACHOP +static const u16 sMachampFormSpeciesIdTable[] = { + SPECIES_MACHAMP, + SPECIES_MACHAMP_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_MACHOP + +#if P_FAMILY_GEODUDE static const u16 sGeodudeFormSpeciesIdTable[] = { SPECIES_GEODUDE, SPECIES_GEODUDE_ALOLAN, @@ -150,7 +206,9 @@ static const u16 sGolemFormSpeciesIdTable[] = { SPECIES_GOLEM_ALOLAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_GEODUDE +#if P_FAMILY_PONYTA static const u16 sPonytaFormSpeciesIdTable[] = { SPECIES_PONYTA, SPECIES_PONYTA_GALARIAN, @@ -162,7 +220,9 @@ static const u16 sRapidashFormSpeciesIdTable[] = { SPECIES_RAPIDASH_GALARIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_PONYTA +#if P_FAMILY_SLOWPOKE static const u16 sSlowpokeFormSpeciesIdTable[] = { SPECIES_SLOWPOKE, SPECIES_SLOWPOKE_GALARIAN, @@ -176,12 +236,24 @@ static const u16 sSlowbroFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +#if P_GEN_2_CROSS_EVOS +static const u16 sSlowkingFormSpeciesIdTable[] = { + SPECIES_SLOWKING, + SPECIES_SLOWKING_GALARIAN, + FORM_SPECIES_END, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_SLOWPOKE + +#if P_FAMILY_FARFETCHD static const u16 sFarfetchdFormSpeciesIdTable[] = { SPECIES_FARFETCHD, SPECIES_FARFETCHD_GALARIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_FARFETCHD +#if P_FAMILY_GRIMER static const u16 sGrimerFormSpeciesIdTable[] = { SPECIES_GRIMER, SPECIES_GRIMER_ALOLAN, @@ -193,13 +265,36 @@ static const u16 sMukFormSpeciesIdTable[] = { SPECIES_MUK_ALOLAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_GRIMER +#if P_FAMILY_GASTLY static const u16 sGengarFormSpeciesIdTable[] = { SPECIES_GENGAR, SPECIES_GENGAR_MEGA, + SPECIES_GENGAR_GIGANTAMAX, FORM_SPECIES_END, }; +#endif //P_FAMILY_GASTLY +#if P_FAMILY_ONIX +#if P_GEN_2_CROSS_EVOS +static const u16 sSteelixFormSpeciesIdTable[] = { + SPECIES_STEELIX, + SPECIES_STEELIX_MEGA, + FORM_SPECIES_END, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ONIX + +#if P_FAMILY_KRABBY +static const u16 sKinglerFormSpeciesIdTable[] = { + SPECIES_KINGLER, + SPECIES_KINGLER_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_KRABBY + +#if P_FAMILY_VOLTORB static const u16 sVoltorbFormSpeciesIdTable[] = { SPECIES_VOLTORB, SPECIES_VOLTORB_HISUIAN, @@ -211,116 +306,174 @@ static const u16 sElectrodeFormSpeciesIdTable[] = { SPECIES_ELECTRODE_HISUIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_VOLTORB +#if P_FAMILY_EXEGGCUTE static const u16 sExeggutorFormSpeciesIdTable[] = { SPECIES_EXEGGUTOR, SPECIES_EXEGGUTOR_ALOLAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_EXEGGCUTE +#if P_FAMILY_CUBONE static const u16 sMarowakFormSpeciesIdTable[] = { SPECIES_MAROWAK, SPECIES_MAROWAK_ALOLAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_CUBONE +#if P_FAMILY_KOFFING static const u16 sWeezingFormSpeciesIdTable[] = { SPECIES_WEEZING, SPECIES_WEEZING_GALARIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_KOFFING +#if P_FAMILY_KANGASKHAN static const u16 sKangaskhanFormSpeciesIdTable[] = { SPECIES_KANGASKHAN, SPECIES_KANGASKHAN_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_KANGASKHAN +#if P_FAMILY_MR_MIME static const u16 sMrMimeFormSpeciesIdTable[] = { SPECIES_MR_MIME, SPECIES_MR_MIME_GALARIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_MR_MIME +#if P_FAMILY_SCYTHER +#if P_GEN_2_CROSS_EVOS +static const u16 sScizorFormSpeciesIdTable[] = { + SPECIES_SCIZOR, + SPECIES_SCIZOR_MEGA, + FORM_SPECIES_END, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_SCYTHER + +#if P_FAMILY_PINSIR static const u16 sPinsirFormSpeciesIdTable[] = { SPECIES_PINSIR, SPECIES_PINSIR_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_PINSIR +#if P_FAMILY_TAUROS +static const u16 sTaurosFormSpeciesIdTable[] = { + SPECIES_TAUROS, + SPECIES_TAUROS_PALDEAN_COMBAT_BREED, + SPECIES_TAUROS_PALDEAN_BLAZE_BREED, + SPECIES_TAUROS_PALDEAN_AQUA_BREED, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_TAUROS + +#if P_FAMILY_MAGIKARP static const u16 sGyaradosFormSpeciesIdTable[] = { SPECIES_GYARADOS, SPECIES_GYARADOS_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_MAGIKARP +#if P_FAMILY_LAPRAS +static const u16 sLaprasFormSpeciesIdTable[] = { + SPECIES_LAPRAS, + SPECIES_LAPRAS_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_LAPRAS + +#if P_FAMILY_EEVEE +static const u16 sEeveeFormSpeciesIdTable[] = { + SPECIES_EEVEE, + SPECIES_EEVEE_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_EEVEE + +#if P_FAMILY_AERODACTYL static const u16 sAerodactylFormSpeciesIdTable[] = { SPECIES_AERODACTYL, SPECIES_AERODACTYL_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_AERODACTYL +#if P_FAMILY_SNORLAX +static const u16 sSnorlaxFormSpeciesIdTable[] = { + SPECIES_SNORLAX, + SPECIES_SNORLAX_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_SNORLAX + +#if P_FAMILY_ARTICUNO static const u16 sArticunoFormSpeciesIdTable[] = { SPECIES_ARTICUNO, SPECIES_ARTICUNO_GALARIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_ARTICUNO +#if P_FAMILY_ZAPDOS static const u16 sZapdosFormSpeciesIdTable[] = { SPECIES_ZAPDOS, SPECIES_ZAPDOS_GALARIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_ZAPDOS +#if P_FAMILY_MOLTRES static const u16 sMoltresFormSpeciesIdTable[] = { SPECIES_MOLTRES, SPECIES_MOLTRES_GALARIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_MOLTRES -static const u16 sTyphlosionFormSpeciesIdTable[] = { - SPECIES_TYPHLOSION, - SPECIES_TYPHLOSION_HISUIAN, - FORM_SPECIES_END, -}; - +#if P_FAMILY_MEWTWO static const u16 sMewtwoFormSpeciesIdTable[] = { SPECIES_MEWTWO, SPECIES_MEWTWO_MEGA_X, SPECIES_MEWTWO_MEGA_Y, FORM_SPECIES_END, }; +#endif //P_FAMILY_MEWTWO -static const u16 sPichuFormSpeciesIdTable[] = { - SPECIES_PICHU, - SPECIES_PICHU_SPIKY_EARED, +#if P_FAMILY_CYNDAQUIL +static const u16 sTyphlosionFormSpeciesIdTable[] = { + SPECIES_TYPHLOSION, + SPECIES_TYPHLOSION_HISUIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_CYNDAQUIL +#if P_FAMILY_MAREEP static const u16 sAmpharosFormSpeciesIdTable[] = { SPECIES_AMPHAROS, SPECIES_AMPHAROS_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_MAREEP -static const u16 sSlowkingFormSpeciesIdTable[] = { - SPECIES_SLOWKING, - SPECIES_SLOWKING_GALARIAN, - FORM_SPECIES_END, -}; - -static const u16 sQwilfishFormSpeciesIdTable[] = { - SPECIES_QWILFISH, - SPECIES_QWILFISH_HISUIAN, - FORM_SPECIES_END, -}; - -static const u16 sSneaselFormSpeciesIdTable[] = { - SPECIES_SNEASEL, - SPECIES_SNEASEL_HISUIAN, +#if P_FAMILY_WOOPER +static const u16 sWooperFormSpeciesIdTable[] = { + SPECIES_WOOPER, + SPECIES_WOOPER_PALDEAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_WOOPER +#if P_FAMILY_UNOWN static const u16 sUnownFormSpeciesIdTable[] = { SPECIES_UNOWN, SPECIES_UNOWN_B, @@ -352,61 +505,97 @@ static const u16 sUnownFormSpeciesIdTable[] = { SPECIES_UNOWN_QMARK, FORM_SPECIES_END, }; +#endif //P_FAMILY_UNOWN -static const u16 sSteelixFormSpeciesIdTable[] = { - SPECIES_STEELIX, - SPECIES_STEELIX_MEGA, +#if P_FAMILY_DUNSPARCE +static const u16 sDudunsparceFormSpeciesIdTable[] = { + SPECIES_DUDUNSPARCE_TWO_SEGMENT, + SPECIES_DUDUNSPARCE_THREE_SEGMENT, FORM_SPECIES_END, }; +#endif //P_FAMILY_DUNSPARCE -static const u16 sScizorFormSpeciesIdTable[] = { - SPECIES_SCIZOR, - SPECIES_SCIZOR_MEGA, +#if P_FAMILY_QWILFISH +static const u16 sQwilfishFormSpeciesIdTable[] = { + SPECIES_QWILFISH, + SPECIES_QWILFISH_HISUIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_QWILFISH +#if P_FAMILY_HERACROSS static const u16 sHeracrossFormSpeciesIdTable[] = { SPECIES_HERACROSS, SPECIES_HERACROSS_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_HERACROSS +#if P_FAMILY_SNEASEL +static const u16 sSneaselFormSpeciesIdTable[] = { + SPECIES_SNEASEL, + SPECIES_SNEASEL_HISUIAN, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_SNEASEL + +#if P_FAMILY_TEDDIURSA +static const u16 sUrsalunaFormSpeciesIdTable[] = { + SPECIES_URSALUNA, + SPECIES_URSALUNA_BLOODMOON, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_TEDDIURSA + +#if P_FAMILY_CORSOLA static const u16 sCorsolaFormSpeciesIdTable[] = { SPECIES_CORSOLA, SPECIES_CORSOLA_GALARIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_CORSOLA +#if P_FAMILY_HOUNDOUR static const u16 sHoundoomFormSpeciesIdTable[] = { SPECIES_HOUNDOOM, SPECIES_HOUNDOOM_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_HOUNDOUR +#if P_FAMILY_LARVITAR static const u16 sTyranitarFormSpeciesIdTable[] = { SPECIES_TYRANITAR, SPECIES_TYRANITAR_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_LARVITAR +#if P_FAMILY_TREECKO static const u16 sSceptileFormSpeciesIdTable[] = { SPECIES_SCEPTILE, SPECIES_SCEPTILE_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_TREECKO +#if P_FAMILY_TORCHIC static const u16 sBlazikenFormSpeciesIdTable[] = { SPECIES_BLAZIKEN, SPECIES_BLAZIKEN_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_TORCHIC +#if P_FAMILY_MUDKIP static const u16 sSwampertFormSpeciesIdTable[] = { SPECIES_SWAMPERT, SPECIES_SWAMPERT_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_MUDKIP +#if P_FAMILY_ZIGZAGOON static const u16 sZigzagoonFormSpeciesIdTable[] = { SPECIES_ZIGZAGOON, SPECIES_ZIGZAGOON_GALARIAN, @@ -418,200 +607,259 @@ static const u16 sLinooneFormSpeciesIdTable[] = { SPECIES_LINOONE_GALARIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_ZIGZAGOON +#if P_FAMILY_RALTS static const u16 sGardevoirFormSpeciesIdTable[] = { SPECIES_GARDEVOIR, SPECIES_GARDEVOIR_MEGA, FORM_SPECIES_END, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sGalladeFormSpeciesIdTable[] = { + SPECIES_GALLADE, + SPECIES_GALLADE_MEGA, + FORM_SPECIES_END, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RALTS + +#if P_FAMILY_SABLEYE static const u16 sSableyeFormSpeciesIdTable[] = { SPECIES_SABLEYE, SPECIES_SABLEYE_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_SABLEYE +#if P_FAMILY_MAWILE static const u16 sMawileFormSpeciesIdTable[] = { SPECIES_MAWILE, SPECIES_MAWILE_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_MAWILE +#if P_FAMILY_ARON static const u16 sAggronFormSpeciesIdTable[] = { SPECIES_AGGRON, SPECIES_AGGRON_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_ARON +#if P_FAMILY_MEDITITE static const u16 sMedichamFormSpeciesIdTable[] = { SPECIES_MEDICHAM, SPECIES_MEDICHAM_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_MEDITITE +#if P_FAMILY_ELECTRIKE static const u16 sManectricFormSpeciesIdTable[] = { SPECIES_MANECTRIC, SPECIES_MANECTRIC_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_ELECTRIKE +#if P_FAMILY_CARVANHA static const u16 sSharpedoFormSpeciesIdTable[] = { SPECIES_SHARPEDO, SPECIES_SHARPEDO_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_CARVANHA +#if P_FAMILY_NUMEL static const u16 sCameruptFormSpeciesIdTable[] = { SPECIES_CAMERUPT, SPECIES_CAMERUPT_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_NUMEL +#if P_FAMILY_SWABLU static const u16 sAltariaFormSpeciesIdTable[] = { SPECIES_ALTARIA, SPECIES_ALTARIA_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_SWABLU +#if P_FAMILY_CASTFORM static const u16 sCastformFormSpeciesIdTable[] = { - SPECIES_CASTFORM, + SPECIES_CASTFORM_NORMAL, SPECIES_CASTFORM_SUNNY, SPECIES_CASTFORM_RAINY, SPECIES_CASTFORM_SNOWY, FORM_SPECIES_END, }; +#endif //P_FAMILY_CASTFORM +#if P_FAMILY_SHUPPET static const u16 sBanetteFormSpeciesIdTable[] = { SPECIES_BANETTE, SPECIES_BANETTE_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_SHUPPET +#if P_FAMILY_ABSOL static const u16 sAbsolFormSpeciesIdTable[] = { SPECIES_ABSOL, SPECIES_ABSOL_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_ABSOL +#if P_FAMILY_SNORUNT static const u16 sGlalieFormSpeciesIdTable[] = { SPECIES_GLALIE, SPECIES_GLALIE_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_SNORUNT +#if P_FAMILY_BAGON static const u16 sSalamenceFormSpeciesIdTable[] = { SPECIES_SALAMENCE, SPECIES_SALAMENCE_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_BAGON +#if P_FAMILY_BELDUM static const u16 sMetagrossFormSpeciesIdTable[] = { SPECIES_METAGROSS, SPECIES_METAGROSS_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_BELDUM +#if P_FAMILY_LATIAS static const u16 sLatiasFormSpeciesIdTable[] = { SPECIES_LATIAS, SPECIES_LATIAS_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_LATIAS +#if P_FAMILY_LATIOS static const u16 sLatiosFormSpeciesIdTable[] = { SPECIES_LATIOS, SPECIES_LATIOS_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_LATIOS +#if P_FAMILY_KYOGRE static const u16 sKyogreFormSpeciesIdTable[] = { SPECIES_KYOGRE, SPECIES_KYOGRE_PRIMAL, FORM_SPECIES_END, }; +#endif //P_FAMILY_KYOGRE +#if P_FAMILY_GROUDON static const u16 sGroudonFormSpeciesIdTable[] = { SPECIES_GROUDON, SPECIES_GROUDON_PRIMAL, FORM_SPECIES_END, }; +#endif //P_FAMILY_GROUDON +#if P_FAMILY_RAYQUAZA static const u16 sRayquazaFormSpeciesIdTable[] = { SPECIES_RAYQUAZA, SPECIES_RAYQUAZA_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_RAYQUAZA +#if P_FAMILY_DEOXYS static const u16 sDeoxysFormSpeciesIdTable[] = { - SPECIES_DEOXYS, + SPECIES_DEOXYS_NORMAL, SPECIES_DEOXYS_ATTACK, SPECIES_DEOXYS_DEFENSE, SPECIES_DEOXYS_SPEED, FORM_SPECIES_END, }; +#endif //P_FAMILY_DEOXYS -#if P_GEN_4_POKEMON == TRUE +#if P_FAMILY_BURMY static const u16 sBurmyFormSpeciesIdTable[] = { - SPECIES_BURMY, + SPECIES_BURMY_PLANT_CLOAK, SPECIES_BURMY_SANDY_CLOAK, SPECIES_BURMY_TRASH_CLOAK, FORM_SPECIES_END, }; static const u16 sWormadamFormSpeciesIdTable[] = { - SPECIES_WORMADAM, + SPECIES_WORMADAM_PLANT_CLOAK, SPECIES_WORMADAM_SANDY_CLOAK, SPECIES_WORMADAM_TRASH_CLOAK, FORM_SPECIES_END, }; +#endif //P_FAMILY_BURMY +#if P_FAMILY_CHERUBI static const u16 sCherrimFormSpeciesIdTable[] = { - SPECIES_CHERRIM, + SPECIES_CHERRIM_OVERCAST, SPECIES_CHERRIM_SUNSHINE, FORM_SPECIES_END, }; +#endif //P_FAMILY_CHERUBI +#if P_FAMILY_SHELLOS static const u16 sShellosFormSpeciesIdTable[] = { - SPECIES_SHELLOS, + SPECIES_SHELLOS_WEST_SEA, SPECIES_SHELLOS_EAST_SEA, FORM_SPECIES_END, }; static const u16 sGastrodonFormSpeciesIdTable[] = { - SPECIES_GASTRODON, + SPECIES_GASTRODON_WEST_SEA, SPECIES_GASTRODON_EAST_SEA, FORM_SPECIES_END, }; +#endif //P_FAMILY_SHELLOS +#if P_FAMILY_BUNEARY static const u16 sLopunnyFormSpeciesIdTable[] = { SPECIES_LOPUNNY, SPECIES_LOPUNNY_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_BUNEARY +#if P_FAMILY_GIBLE static const u16 sGarchompFormSpeciesIdTable[] = { SPECIES_GARCHOMP, SPECIES_GARCHOMP_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_GIBLE +#if P_FAMILY_RIOLU static const u16 sLucarioFormSpeciesIdTable[] = { SPECIES_LUCARIO, SPECIES_LUCARIO_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_RIOLU +#if P_FAMILY_SNOVER static const u16 sAbomasnowFormSpeciesIdTable[] = { SPECIES_ABOMASNOW, SPECIES_ABOMASNOW_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_SNOVER -static const u16 sGalladeFormSpeciesIdTable[] = { - SPECIES_GALLADE, - SPECIES_GALLADE_MEGA, - FORM_SPECIES_END, -}; - +#if P_FAMILY_ROTOM static const u16 sRotomFormSpeciesIdTable[] = { SPECIES_ROTOM, SPECIES_ROTOM_HEAT, @@ -621,33 +869,43 @@ static const u16 sRotomFormSpeciesIdTable[] = { SPECIES_ROTOM_MOW, FORM_SPECIES_END, }; +#endif //P_FAMILY_ROTOM +#if P_FAMILY_DIALGA static const u16 sDialgaFormSpeciesIdTable[] = { SPECIES_DIALGA, SPECIES_DIALGA_ORIGIN, FORM_SPECIES_END, }; +#endif //P_FAMILY_DIALGA +#if P_FAMILY_PALKIA static const u16 sPalkiaFormSpeciesIdTable[] = { SPECIES_PALKIA, SPECIES_PALKIA_ORIGIN, FORM_SPECIES_END, }; +#endif //P_FAMILY_PALKIA +#if P_FAMILY_GIRATINA static const u16 sGiratinaFormSpeciesIdTable[] = { - SPECIES_GIRATINA, + SPECIES_GIRATINA_ALTERED, SPECIES_GIRATINA_ORIGIN, FORM_SPECIES_END, }; +#endif //P_FAMILY_GIRATINA +#if P_FAMILY_SHAYMIN static const u16 sShayminFormSpeciesIdTable[] = { - SPECIES_SHAYMIN, + SPECIES_SHAYMIN_LAND, SPECIES_SHAYMIN_SKY, FORM_SPECIES_END, }; +#endif //P_FAMILY_SHAYMIN +#if P_FAMILY_ARCEUS static const u16 sArceusFormSpeciesIdTable[] = { - SPECIES_ARCEUS, + SPECIES_ARCEUS_NORMAL, SPECIES_ARCEUS_FIGHTING, SPECIES_ARCEUS_FLYING, SPECIES_ARCEUS_POISON, @@ -667,34 +925,48 @@ static const u16 sArceusFormSpeciesIdTable[] = { SPECIES_ARCEUS_FAIRY, FORM_SPECIES_END, }; -#endif +#endif //P_FAMILY_ARCEUS -#if P_GEN_5_POKEMON == TRUE +#if P_FAMILY_OSHAWOTT static const u16 sSamurottFormSpeciesIdTable[] = { SPECIES_SAMUROTT, SPECIES_SAMUROTT_HISUIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_OSHAWOTT +#if P_FAMILY_AUDINO static const u16 sAudinoFormSpeciesIdTable[] = { SPECIES_AUDINO, SPECIES_AUDINO_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_AUDINO -static const u16 sBasculinFormSpeciesIdTable[] = { - SPECIES_BASCULIN, - SPECIES_BASCULIN_BLUE_STRIPED, - SPECIES_BASCULIN_WHITE_STRIPED, - FORM_SPECIES_END, -}; - +#if P_FAMILY_PETILIL static const u16 sLilligantFormSpeciesIdTable[] = { SPECIES_LILLIGANT, SPECIES_LILLIGANT_HISUIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_PETILIL +#if P_FAMILY_BASCULIN +static const u16 sBasculinFormSpeciesIdTable[] = { + SPECIES_BASCULIN_RED_STRIPED, + SPECIES_BASCULIN_BLUE_STRIPED, + SPECIES_BASCULIN_WHITE_STRIPED, + FORM_SPECIES_END, +}; + +static const u16 sBasculegionFormSpeciesIdTable[] = { + SPECIES_BASCULEGION_MALE, + SPECIES_BASCULEGION_FEMALE, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_BASCULIN + +#if P_FAMILY_DARUMAKA static const u16 sDarumakaFormSpeciesIdTable[] = { SPECIES_DARUMAKA, SPECIES_DARUMAKA_GALARIAN, @@ -702,19 +974,31 @@ static const u16 sDarumakaFormSpeciesIdTable[] = { }; static const u16 sDarmanitanFormSpeciesIdTable[] = { - SPECIES_DARMANITAN, + SPECIES_DARMANITAN_STANDARD_MODE, SPECIES_DARMANITAN_ZEN_MODE, - SPECIES_DARMANITAN_GALARIAN, - SPECIES_DARMANITAN_ZEN_MODE_GALARIAN, + SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE, + SPECIES_DARMANITAN_GALARIAN_ZEN_MODE, FORM_SPECIES_END, }; +#endif //P_FAMILY_DARUMAKA +#if P_FAMILY_YAMASK static const u16 sYamaskFormSpeciesIdTable[] = { SPECIES_YAMASK, SPECIES_YAMASK_GALARIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_YAMASK +#if P_FAMILY_TRUBBISH +static const u16 sGarbodorFormSpeciesIdTable[] = { + SPECIES_GARBODOR, + SPECIES_GARBODOR_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_TRUBBISH + +#if P_FAMILY_ZORUA static const u16 sZoruaFormSpeciesIdTable[] = { SPECIES_ZORUA, SPECIES_ZORUA_HISUIAN, @@ -726,9 +1010,11 @@ static const u16 sZoroarkFormSpeciesIdTable[] = { SPECIES_ZOROARK_HISUIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_ZORUA +#if P_FAMILY_DEERLING static const u16 sDeerlingFormSpeciesIdTable[] = { - SPECIES_DEERLING, + SPECIES_DEERLING_SPRING, SPECIES_DEERLING_SUMMER, SPECIES_DEERLING_AUTUMN, SPECIES_DEERLING_WINTER, @@ -736,62 +1022,80 @@ static const u16 sDeerlingFormSpeciesIdTable[] = { }; static const u16 sSawsbuckFormSpeciesIdTable[] = { - SPECIES_SAWSBUCK, + SPECIES_SAWSBUCK_SPRING, SPECIES_SAWSBUCK_SUMMER, SPECIES_SAWSBUCK_AUTUMN, SPECIES_SAWSBUCK_WINTER, FORM_SPECIES_END, }; +#endif //P_FAMILY_DEERLING +#if P_FAMILY_STUNFISK static const u16 sStunfiskFormSpeciesIdTable[] = { SPECIES_STUNFISK, SPECIES_STUNFISK_GALARIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_STUNFISK +#if P_FAMILY_RUFFLET static const u16 sBraviaryFormSpeciesIdTable[] = { SPECIES_BRAVIARY, SPECIES_BRAVIARY_HISUIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_RUFFLET +#if P_FAMILY_TORNADUS static const u16 sTornadusFormSpeciesIdTable[] = { - SPECIES_TORNADUS, + SPECIES_TORNADUS_INCARNATE, SPECIES_TORNADUS_THERIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_TORNADUS +#if P_FAMILY_THUNDURUS static const u16 sThundurusFormSpeciesIdTable[] = { - SPECIES_THUNDURUS, + SPECIES_THUNDURUS_INCARNATE, SPECIES_THUNDURUS_THERIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_THUNDURUS +#if P_FAMILY_LANDORUS static const u16 sLandorusFormSpeciesIdTable[] = { - SPECIES_LANDORUS, + SPECIES_LANDORUS_INCARNATE, SPECIES_LANDORUS_THERIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_LANDORUS +#if P_FAMILY_KYUREM static const u16 sKyuremFormSpeciesIdTable[] = { SPECIES_KYUREM, SPECIES_KYUREM_WHITE, SPECIES_KYUREM_BLACK, FORM_SPECIES_END, }; +#endif //P_FAMILY_KYUREM +#if P_FAMILY_KELDEO static const u16 sKeldeoFormSpeciesIdTable[] = { - SPECIES_KELDEO, + SPECIES_KELDEO_ORDINARY, SPECIES_KELDEO_RESOLUTE, FORM_SPECIES_END, }; +#endif //P_FAMILY_KELDEO +#if P_FAMILY_MELOETTA static const u16 sMeloettaFormSpeciesIdTable[] = { - SPECIES_MELOETTA, + SPECIES_MELOETTA_ARIA, SPECIES_MELOETTA_PIROUETTE, FORM_SPECIES_END, }; +#endif //P_FAMILY_MELOETTA +#if P_FAMILY_GENESECT static const u16 sGenesectFormSpeciesIdTable[] = { SPECIES_GENESECT, SPECIES_GENESECT_DOUSE_DRIVE, @@ -800,18 +1104,20 @@ static const u16 sGenesectFormSpeciesIdTable[] = { SPECIES_GENESECT_CHILL_DRIVE, FORM_SPECIES_END, }; -#endif +#endif //P_FAMILY_GENESECT -#if P_GEN_6_POKEMON == TRUE +#if P_FAMILY_FROAKIE static const u16 sGreninjaFormSpeciesIdTable[] = { SPECIES_GRENINJA, SPECIES_GRENINJA_BATTLE_BOND, SPECIES_GRENINJA_ASH, FORM_SPECIES_END, }; +#endif //P_FAMILY_FROAKIE +#if P_FAMILY_SCATTERBUG static const u16 sVivillonFormSpeciesIdTable[] = { - SPECIES_VIVILLON, + SPECIES_VIVILLON_ICY_SNOW, SPECIES_VIVILLON_POLAR, SPECIES_VIVILLON_TUNDRA, SPECIES_VIVILLON_CONTINENTAL, @@ -833,9 +1139,11 @@ static const u16 sVivillonFormSpeciesIdTable[] = { SPECIES_VIVILLON_POKE_BALL, FORM_SPECIES_END, }; +#endif //P_FAMILY_SCATTERBUG +#if P_FAMILY_FLABEBE static const u16 sFlabebeFormSpeciesIdTable[] = { - SPECIES_FLABEBE, + SPECIES_FLABEBE_RED_FLOWER, SPECIES_FLABEBE_YELLOW_FLOWER, SPECIES_FLABEBE_ORANGE_FLOWER, SPECIES_FLABEBE_BLUE_FLOWER, @@ -844,7 +1152,7 @@ static const u16 sFlabebeFormSpeciesIdTable[] = { }; static const u16 sFloetteFormSpeciesIdTable[] = { - SPECIES_FLOETTE, + SPECIES_FLOETTE_RED_FLOWER, SPECIES_FLOETTE_YELLOW_FLOWER, SPECIES_FLOETTE_ORANGE_FLOWER, SPECIES_FLOETTE_BLUE_FLOWER, @@ -854,16 +1162,18 @@ static const u16 sFloetteFormSpeciesIdTable[] = { }; static const u16 sFlorgesFormSpeciesIdTable[] = { - SPECIES_FLORGES, + SPECIES_FLORGES_RED_FLOWER, SPECIES_FLORGES_YELLOW_FLOWER, SPECIES_FLORGES_ORANGE_FLOWER, SPECIES_FLORGES_BLUE_FLOWER, SPECIES_FLORGES_WHITE_FLOWER, FORM_SPECIES_END, }; +#endif //P_FAMILY_FLABEBE +#if P_FAMILY_FURFROU static const u16 sFurfrouFormSpeciesIdTable[] = { - SPECIES_FURFROU, + SPECIES_FURFROU_NATURAL, SPECIES_FURFROU_HEART_TRIM, SPECIES_FURFROU_STAR_TRIM, SPECIES_FURFROU_DIAMOND_TRIM, @@ -875,19 +1185,25 @@ static const u16 sFurfrouFormSpeciesIdTable[] = { SPECIES_FURFROU_PHARAOH_TRIM, FORM_SPECIES_END, }; +#endif //P_FAMILY_FURFROU +#if P_FAMILY_ESPURR static const u16 sMeowsticFormSpeciesIdTable[] = { - SPECIES_MEOWSTIC, + SPECIES_MEOWSTIC_MALE, SPECIES_MEOWSTIC_FEMALE, FORM_SPECIES_END, }; +#endif //P_FAMILY_ESPURR +#if P_FAMILY_HONEDGE static const u16 sAegislashFormSpeciesIdTable[] = { - SPECIES_AEGISLASH, + SPECIES_AEGISLASH_SHIELD, SPECIES_AEGISLASH_BLADE, FORM_SPECIES_END, }; +#endif //P_FAMILY_HONEDGE +#if P_FAMILY_GOOMY static const u16 sSliggooFormSpeciesIdTable[] = { SPECIES_SLIGGOO, SPECIES_SLIGGOO_HISUIAN, @@ -899,9 +1215,11 @@ static const u16 sGoodraFormSpeciesIdTable[] = { SPECIES_GOODRA_HISUIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_GOOMY +#if P_FAMILY_PUMPKABOO static const u16 sPumpkabooFormSpeciesIdTable[] = { - SPECIES_PUMPKABOO, + SPECIES_PUMPKABOO_AVERAGE, SPECIES_PUMPKABOO_SMALL, SPECIES_PUMPKABOO_LARGE, SPECIES_PUMPKABOO_SUPER, @@ -909,62 +1227,76 @@ static const u16 sPumpkabooFormSpeciesIdTable[] = { }; static const u16 sGourgeistFormSpeciesIdTable[] = { - SPECIES_GOURGEIST, + SPECIES_GOURGEIST_AVERAGE, SPECIES_GOURGEIST_SMALL, SPECIES_GOURGEIST_LARGE, SPECIES_GOURGEIST_SUPER, FORM_SPECIES_END, }; +#endif //P_FAMILY_PUMPKABOO +#if P_FAMILY_BERGMITE static const u16 sAvaluggFormSpeciesIdTable[] = { SPECIES_AVALUGG, SPECIES_AVALUGG_HISUIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_BERGMITE +#if P_FAMILY_XERNEAS static const u16 sXerneasFormSpeciesIdTable[] = { - SPECIES_XERNEAS, + SPECIES_XERNEAS_NEUTRAL, SPECIES_XERNEAS_ACTIVE, FORM_SPECIES_END, }; +#endif //P_FAMILY_XERNEAS +#if P_FAMILY_ZYGARDE static const u16 sZygardeFormSpeciesIdTable[] = { - SPECIES_ZYGARDE, - SPECIES_ZYGARDE_10, + SPECIES_ZYGARDE_50_AURA_BREAK, + SPECIES_ZYGARDE_10_AURA_BREAK, SPECIES_ZYGARDE_10_POWER_CONSTRUCT, SPECIES_ZYGARDE_50_POWER_CONSTRUCT, SPECIES_ZYGARDE_COMPLETE, FORM_SPECIES_END, }; +#endif //P_FAMILY_ZYGARDE +#if P_FAMILY_DIANCIE static const u16 sDiancieFormSpeciesIdTable[] = { SPECIES_DIANCIE, SPECIES_DIANCIE_MEGA, FORM_SPECIES_END, }; +#endif //P_FAMILY_DIANCIE +#if P_FAMILY_HOOPA static const u16 sHoopaFormSpeciesIdTable[] = { - SPECIES_HOOPA, + SPECIES_HOOPA_CONFINED, SPECIES_HOOPA_UNBOUND, FORM_SPECIES_END, }; -#endif +#endif //P_FAMILY_HOOPA -#if P_GEN_7_POKEMON == TRUE +#if P_FAMILY_ROWLET static const u16 sDecidueyeFormSpeciesIdTable[] = { SPECIES_DECIDUEYE, SPECIES_DECIDUEYE_HISUIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_ROWLET +#if P_FAMILY_ORICORIO static const u16 sOricorioFormSpeciesIdTable[] = { - SPECIES_ORICORIO, + SPECIES_ORICORIO_BAILE, SPECIES_ORICORIO_POM_POM, SPECIES_ORICORIO_PAU, SPECIES_ORICORIO_SENSU, FORM_SPECIES_END, }; +#endif //P_FAMILY_ORICORIO +#if P_FAMILY_ROCKRUFF static const u16 sRockruffFormSpeciesIdTable[] = { SPECIES_ROCKRUFF, SPECIES_ROCKRUFF_OWN_TEMPO, @@ -972,20 +1304,24 @@ static const u16 sRockruffFormSpeciesIdTable[] = { }; static const u16 sLycanrocFormSpeciesIdTable[] = { - SPECIES_LYCANROC, + SPECIES_LYCANROC_MIDDAY, SPECIES_LYCANROC_MIDNIGHT, SPECIES_LYCANROC_DUSK, FORM_SPECIES_END, }; +#endif //P_FAMILY_ROCKRUFF +#if P_FAMILY_WISHIWASHI static const u16 sWishiwashiFormSpeciesIdTable[] = { - SPECIES_WISHIWASHI, + SPECIES_WISHIWASHI_SOLO, SPECIES_WISHIWASHI_SCHOOL, FORM_SPECIES_END, }; +#endif //P_FAMILY_WISHIWASHI +#if P_FAMILY_TYPE_NULL static const u16 sSilvallyFormSpeciesIdTable[] = { - SPECIES_SILVALLY, + SPECIES_SILVALLY_NORMAL, SPECIES_SILVALLY_FIGHTING, SPECIES_SILVALLY_FLYING, SPECIES_SILVALLY_POISON, @@ -1005,9 +1341,11 @@ static const u16 sSilvallyFormSpeciesIdTable[] = { SPECIES_SILVALLY_FAIRY, FORM_SPECIES_END, }; +#endif //P_FAMILY_TYPE_NULL +#if P_FAMILY_MINIOR static const u16 sMiniorFormSpeciesIdTable[] = { - SPECIES_MINIOR, + SPECIES_MINIOR_METEOR_RED, SPECIES_MINIOR_METEOR_ORANGE, SPECIES_MINIOR_METEOR_YELLOW, SPECIES_MINIOR_METEOR_GREEN, @@ -1023,13 +1361,17 @@ static const u16 sMiniorFormSpeciesIdTable[] = { SPECIES_MINIOR_CORE_VIOLET, FORM_SPECIES_END, }; +#endif //P_FAMILY_MINIOR +#if P_FAMILY_MIMIKYU static const u16 sMimikyuFormSpeciesIdTable[] = { - SPECIES_MIMIKYU, + SPECIES_MIMIKYU_DISGUISED, SPECIES_MIMIKYU_BUSTED, FORM_SPECIES_END, }; +#endif //P_FAMILY_MIMIKYU +#if P_FAMILY_NECROZMA static const u16 sNecrozmaFormSpeciesIdTable[] = { SPECIES_NECROZMA, SPECIES_NECROZMA_DUSK_MANE, @@ -1037,118 +1379,385 @@ static const u16 sNecrozmaFormSpeciesIdTable[] = { SPECIES_NECROZMA_ULTRA, FORM_SPECIES_END, }; +#endif //P_FAMILY_NECROZMA +#if P_FAMILY_MAGEARNA static const u16 sMagearnaFormSpeciesIdTable[] = { SPECIES_MAGEARNA, SPECIES_MAGEARNA_ORIGINAL_COLOR, FORM_SPECIES_END, }; -#endif +#endif //P_FAMILY_MAGEARNA -#if P_GEN_8_POKEMON == TRUE +#if P_FAMILY_MELTAN +static const u16 sMelmetalFormSpeciesIdTable[] = { + SPECIES_MELMETAL, + SPECIES_MELMETAL_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_MELTAN + +#if P_FAMILY_GROOKEY +static const u16 sRillaboomFormSpeciesIdTable[] = { + SPECIES_RILLABOOM, + SPECIES_RILLABOOM_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_GROOKEY + +#if P_FAMILY_SCORBUNNY +static const u16 sCinderaceFormSpeciesIdTable[] = { + SPECIES_CINDERACE, + SPECIES_CINDERACE_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_SCORBUNNY + +#if P_FAMILY_SOBBLE +static const u16 sInteleonFormSpeciesIdTable[] = { + SPECIES_INTELEON, + SPECIES_INTELEON_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_SOBBLE + +#if P_FAMILY_ROOKIDEE +static const u16 sCorviknightFormSpeciesIdTable[] = { + SPECIES_CORVIKNIGHT, + SPECIES_CORVIKNIGHT_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_ROOKIDEE + +#if P_FAMILY_BLIPBUG +static const u16 sOrbeetleFormSpeciesIdTable[] = { + SPECIES_ORBEETLE, + SPECIES_ORBEETLE_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_BLIPBUG + +#if P_FAMILY_CHEWTLE +static const u16 sDrednawFormSpeciesIdTable[] = { + SPECIES_DREDNAW, + SPECIES_DREDNAW_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_CHEWTLE + +#if P_FAMILY_ROLYCOLY +static const u16 sCoalossalFormSpeciesIdTable[] = { + SPECIES_COALOSSAL, + SPECIES_COALOSSAL_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_ROLYCOLY + +#if P_FAMILY_APPLIN +static const u16 sFlappleFormSpeciesIdTable[] = { + SPECIES_FLAPPLE, + SPECIES_FLAPPLE_GIGANTAMAX, + FORM_SPECIES_END, +}; + +static const u16 sAppletunFormSpeciesIdTable[] = { + SPECIES_APPLETUN, + SPECIES_APPLETUN_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_APPLIN + +#if P_FAMILY_SILICOBRA +static const u16 sSandacondaFormSpeciesIdTable[] = { + SPECIES_SANDACONDA, + SPECIES_SANDACONDA_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_SILICOBRA + +#if P_FAMILY_CRAMORANT static const u16 sCramorantFormSpeciesIdTable[] = { SPECIES_CRAMORANT, SPECIES_CRAMORANT_GULPING, SPECIES_CRAMORANT_GORGING, FORM_SPECIES_END, }; +#endif //P_FAMILY_CRAMORANT +#if P_FAMILY_TOXEL static const u16 sToxtricityFormSpeciesIdTable[] = { - SPECIES_TOXTRICITY, + SPECIES_TOXTRICITY_AMPED, SPECIES_TOXTRICITY_LOW_KEY, + SPECIES_TOXTRICITY_AMPED_GIGANTAMAX, + SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX, FORM_SPECIES_END, }; +#endif //P_FAMILY_TOXEL +#if P_FAMILY_SIZZLIPEDE +static const u16 sCentiskorchFormSpeciesIdTable[] = { + SPECIES_CENTISKORCH, + SPECIES_CENTISKORCH_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_SIZZLIPEDE + +#if P_FAMILY_SINISTEA static const u16 sSinisteaFormSpeciesIdTable[] = { - SPECIES_SINISTEA, + SPECIES_SINISTEA_PHONY, SPECIES_SINISTEA_ANTIQUE, FORM_SPECIES_END, }; static const u16 sPolteageistFormSpeciesIdTable[] = { - SPECIES_POLTEAGEIST, + SPECIES_POLTEAGEIST_PHONY, SPECIES_POLTEAGEIST_ANTIQUE, FORM_SPECIES_END, }; +#endif //P_FAMILY_SINISTEA -static const u16 sAlcremieFormSpeciesIdTable[] = { - SPECIES_ALCREMIE, - SPECIES_ALCREMIE_RUBY_CREAM, - SPECIES_ALCREMIE_MATCHA_CREAM, - SPECIES_ALCREMIE_MINT_CREAM, - SPECIES_ALCREMIE_LEMON_CREAM, - SPECIES_ALCREMIE_SALTED_CREAM, - SPECIES_ALCREMIE_RUBY_SWIRL, - SPECIES_ALCREMIE_CARAMEL_SWIRL, - SPECIES_ALCREMIE_RAINBOW_SWIRL, +#if P_FAMILY_HATENNA +static const u16 sHattereneFormSpeciesIdTable[] = { + SPECIES_HATTERENE, + SPECIES_HATTERENE_GIGANTAMAX, FORM_SPECIES_END, }; +#endif //P_FAMILY_HATENNA +#if P_FAMILY_IMPIDIMP +static const u16 sGrimmsnarlFormSpeciesIdTable[] = { + SPECIES_GRIMMSNARL, + SPECIES_GRIMMSNARL_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_IMPIDIMP + +#if P_FAMILY_MILCERY +static const u16 sAlcremieFormSpeciesIdTable[] = { + SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM, + SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL, + SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, + SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, + SPECIES_ALCREMIE_BERRY_VANILLA_CREAM, + SPECIES_ALCREMIE_BERRY_RUBY_CREAM, + SPECIES_ALCREMIE_BERRY_MATCHA_CREAM, + SPECIES_ALCREMIE_BERRY_MINT_CREAM, + SPECIES_ALCREMIE_BERRY_LEMON_CREAM, + SPECIES_ALCREMIE_BERRY_SALTED_CREAM, + SPECIES_ALCREMIE_BERRY_RUBY_SWIRL, + SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL, + SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL, + SPECIES_ALCREMIE_LOVE_VANILLA_CREAM, + SPECIES_ALCREMIE_LOVE_RUBY_CREAM, + SPECIES_ALCREMIE_LOVE_MATCHA_CREAM, + SPECIES_ALCREMIE_LOVE_MINT_CREAM, + SPECIES_ALCREMIE_LOVE_LEMON_CREAM, + SPECIES_ALCREMIE_LOVE_SALTED_CREAM, + SPECIES_ALCREMIE_LOVE_RUBY_SWIRL, + SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL, + SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL, + SPECIES_ALCREMIE_STAR_VANILLA_CREAM, + SPECIES_ALCREMIE_STAR_RUBY_CREAM, + SPECIES_ALCREMIE_STAR_MATCHA_CREAM, + SPECIES_ALCREMIE_STAR_MINT_CREAM, + SPECIES_ALCREMIE_STAR_LEMON_CREAM, + SPECIES_ALCREMIE_STAR_SALTED_CREAM, + SPECIES_ALCREMIE_STAR_RUBY_SWIRL, + SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL, + SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL, + SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM, + SPECIES_ALCREMIE_CLOVER_RUBY_CREAM, + SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM, + SPECIES_ALCREMIE_CLOVER_MINT_CREAM, + SPECIES_ALCREMIE_CLOVER_LEMON_CREAM, + SPECIES_ALCREMIE_CLOVER_SALTED_CREAM, + SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL, + SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL, + SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL, + SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM, + SPECIES_ALCREMIE_FLOWER_RUBY_CREAM, + SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM, + SPECIES_ALCREMIE_FLOWER_MINT_CREAM, + SPECIES_ALCREMIE_FLOWER_LEMON_CREAM, + SPECIES_ALCREMIE_FLOWER_SALTED_CREAM, + SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL, + SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL, + SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL, + SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM, + SPECIES_ALCREMIE_RIBBON_RUBY_CREAM, + SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM, + SPECIES_ALCREMIE_RIBBON_MINT_CREAM, + SPECIES_ALCREMIE_RIBBON_LEMON_CREAM, + SPECIES_ALCREMIE_RIBBON_SALTED_CREAM, + SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL, + SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL, + SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL, + SPECIES_ALCREMIE_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_MILCERY + +#if P_FAMILY_EISCUE static const u16 sEiscueFormSpeciesIdTable[] = { - SPECIES_EISCUE, + SPECIES_EISCUE_ICE_FACE, SPECIES_EISCUE_NOICE_FACE, FORM_SPECIES_END, }; +#endif //P_FAMILY_EISCUE +#if P_FAMILY_INDEEDEE static const u16 sIndeedeeFormSpeciesIdTable[] = { - SPECIES_INDEEDEE, + SPECIES_INDEEDEE_MALE, SPECIES_INDEEDEE_FEMALE, FORM_SPECIES_END, }; +#endif //P_FAMILY_INDEEDEE +#if P_FAMILY_MORPEKO static const u16 sMorpekoFormSpeciesIdTable[] = { - SPECIES_MORPEKO, + SPECIES_MORPEKO_FULL_BELLY, SPECIES_MORPEKO_HANGRY, FORM_SPECIES_END, }; +#endif //P_FAMILY_MORPEKO +#if P_FAMILY_CUFANT +static const u16 sCopperajahFormSpeciesIdTable[] = { + SPECIES_COPPERAJAH, + SPECIES_COPPERAJAH_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_CUFANT + +#if P_FAMILY_DURALUDON +static const u16 sDuraludonFormSpeciesIdTable[] = { + SPECIES_DURALUDON, + SPECIES_DURALUDON_GIGANTAMAX, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_DURALUDON + +#if P_FAMILY_ZACIAN static const u16 sZacianFormSpeciesIdTable[] = { - SPECIES_ZACIAN, + SPECIES_ZACIAN_HERO_OF_MANY_BATTLES, SPECIES_ZACIAN_CROWNED_SWORD, FORM_SPECIES_END, }; +#endif //P_FAMILY_ZACIAN +#if P_FAMILY_ZAMAZENTA static const u16 sZamazentaFormSpeciesIdTable[] = { - SPECIES_ZAMAZENTA, + SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES, SPECIES_ZAMAZENTA_CROWNED_SHIELD, FORM_SPECIES_END, }; +#endif //P_FAMILY_ZAMAZENTA +#if P_FAMILY_ETERNATUS static const u16 sEternatusFormSpeciesIdTable[] = { SPECIES_ETERNATUS, SPECIES_ETERNATUS_ETERNAMAX, FORM_SPECIES_END, }; +#endif //P_FAMILY_ETERNATUS +#if P_FAMILY_KUBFU static const u16 sUrshifuFormSpeciesIdTable[] = { - SPECIES_URSHIFU, + SPECIES_URSHIFU_SINGLE_STRIKE_STYLE, SPECIES_URSHIFU_RAPID_STRIKE_STYLE, + SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX, + SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX, FORM_SPECIES_END, }; +#endif //P_FAMILY_KUBFU +#if P_FAMILY_ZARUDE static const u16 sZarudeFormSpeciesIdTable[] = { SPECIES_ZARUDE, SPECIES_ZARUDE_DADA, FORM_SPECIES_END, }; +#endif //P_FAMILY_ZARUDE +#if P_FAMILY_CALYREX static const u16 sCalyrexFormSpeciesIdTable[] = { SPECIES_CALYREX, SPECIES_CALYREX_ICE_RIDER, SPECIES_CALYREX_SHADOW_RIDER, FORM_SPECIES_END, }; +#endif //P_FAMILY_CALYREX +#if P_FAMILY_ENAMORUS static const u16 sEnamorusFormSpeciesIdTable[] = { - SPECIES_ENAMORUS, + SPECIES_ENAMORUS_INCARNATE, SPECIES_ENAMORUS_THERIAN, FORM_SPECIES_END, }; +#endif //P_FAMILY_ENAMORUS -static const u16 sBasculegionFormSpeciesIdTable[] = { - SPECIES_BASCULEGION, - SPECIES_BASCULEGION_FEMALE, +#if P_FAMILY_LECHONK +static const u16 sOinkologneFormSpeciesIdTable[] = { + SPECIES_OINKOLOGNE_MALE, + SPECIES_OINKOLOGNE_FEMALE, FORM_SPECIES_END, }; +#endif //P_FAMILY_LECHONK -#endif +#if P_FAMILY_TANDEMAUS +static const u16 sMausholdFormSpeciesIdTable[] = { + SPECIES_MAUSHOLD_FAMILY_OF_THREE, + SPECIES_MAUSHOLD_FAMILY_OF_FOUR, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_TANDEMAUS + +#if P_FAMILY_SQUAWKABILLY +static const u16 sSquawkabillyFormSpeciesIdTable[] = { + SPECIES_SQUAWKABILLY_GREEN_PLUMAGE, + SPECIES_SQUAWKABILLY_BLUE_PLUMAGE, + SPECIES_SQUAWKABILLY_YELLOW_PLUMAGE, + SPECIES_SQUAWKABILLY_WHITE_PLUMAGE, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_SQUAWKABILLY + +#if P_FAMILY_FINIZEN +static const u16 sPalafinFormSpeciesIdTable[] = { + SPECIES_PALAFIN_ZERO, + SPECIES_PALAFIN_HERO, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_FINIZEN + +#if P_FAMILY_TATSUGIRI +static const u16 sTatsugiriFormSpeciesIdTable[] = { + SPECIES_TATSUGIRI_CURLY, + SPECIES_TATSUGIRI_DROOPY, + SPECIES_TATSUGIRI_STRETCHY, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_TATSUGIRI + +#if P_FAMILY_GIMMIGHOUL +static const u16 sGimmighoulFormSpeciesIdTable[] = { + SPECIES_GIMMIGHOUL_CHEST, + SPECIES_GIMMIGHOUL_ROAMING, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_GIMMIGHOUL + +#if P_FAMILY_OGERPON +static const u16 sOgerponFormSpeciesIdTable[] = { + SPECIES_OGERPON_TEAL_MASK, + SPECIES_OGERPON_WELLSPRING_MASK, + SPECIES_OGERPON_HEARTHFLAME_MASK, + SPECIES_OGERPON_CORNERSTONE_MASK, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_OGERPON diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h index dc2e4f755d..2c7401059e 100644 --- a/src/data/pokemon/item_effects.h +++ b/src/data/pokemon/item_effects.h @@ -282,6 +282,49 @@ const u8 gItemEffect_SpdefFeather[11] = { [10] = 0, }; +const u8 gItemEffect_HpMochi[11] = { + [4] = ITEM4_EV_HP, + [6] = ITEM6_ADD_EV, + [10] = 0, +}; + +const u8 gItemEffect_AtkMochi[11] = { + [4] = ITEM4_EV_ATK, + [6] = ITEM6_ADD_EV, + [10] = 0, +}; + +const u8 gItemEffect_DefMochi[11] = { + [5] = ITEM5_EV_DEF, + [6] = ITEM6_ADD_EV, + [10] = 0, +}; + +const u8 gItemEffect_SpeedMochi[11] = { + [5] = ITEM5_EV_SPEED, + [6] = ITEM6_ADD_EV, + [10] = 0, +}; + +const u8 gItemEffect_SpatkMochi[11] = { + [5] = ITEM5_EV_SPATK, + [6] = ITEM6_ADD_EV, + [10] = 0, +}; + +const u8 gItemEffect_SpdefMochi[11] = { + [5] = ITEM5_EV_SPDEF, + [6] = ITEM6_ADD_EV, + [10] = 0, +}; + +const u8 gItemEffect_ResetMochi[11] = { + [4] = ITEM4_EV_HP | ITEM4_EV_ATK, + [5] = ITEM5_EV_DEF | ITEM5_EV_SPEED | ITEM5_EV_SPATK | ITEM5_EV_SPDEF, + [6] = ITEM6_RESET_EV, + [10] = 0, +}; + const u8 gItemEffect_RareCandy[10] = { [3] = ITEM3_LEVEL_UP, [4] = ITEM4_REVIVE | ITEM4_HEAL_HP, @@ -508,6 +551,15 @@ const u8 *const gItemEffectTable[ITEMS_COUNT] = [ITEM_CLEVER_FEATHER] = gItemEffect_SpdefFeather, [ITEM_SWIFT_FEATHER] = gItemEffect_SpeedFeather, + //Mochi + [ITEM_HEALTH_MOCHI] = gItemEffect_HpMochi, + [ITEM_MUSCLE_MOCHI] = gItemEffect_AtkMochi, + [ITEM_RESIST_MOCHI] = gItemEffect_DefMochi, + [ITEM_GENIUS_MOCHI] = gItemEffect_SpatkMochi, + [ITEM_CLEVER_MOCHI] = gItemEffect_SpdefMochi, + [ITEM_SWIFT_MOCHI] = gItemEffect_SpeedMochi, + [ITEM_FRESH_START_MOCHI] = gItemEffect_ResetMochi, + // Candy [ITEM_RARE_CANDY] = gItemEffect_RareCandy, [ITEM_EXP_CANDY_XS] = gItemEffect_RareCandy, diff --git a/src/data/pokemon/level_up_learnset_pointers.h b/src/data/pokemon/level_up_learnset_pointers.h deleted file mode 100644 index 19b4e42e44..0000000000 --- a/src/data/pokemon/level_up_learnset_pointers.h +++ /dev/null @@ -1,1339 +0,0 @@ -const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = -{ - [SPECIES_NONE] = sBulbasaurLevelUpLearnset, - [SPECIES_BULBASAUR] = sBulbasaurLevelUpLearnset, - [SPECIES_IVYSAUR] = sIvysaurLevelUpLearnset, - [SPECIES_VENUSAUR] = sVenusaurLevelUpLearnset, - [SPECIES_CHARMANDER] = sCharmanderLevelUpLearnset, - [SPECIES_CHARMELEON] = sCharmeleonLevelUpLearnset, - [SPECIES_CHARIZARD] = sCharizardLevelUpLearnset, - [SPECIES_SQUIRTLE] = sSquirtleLevelUpLearnset, - [SPECIES_WARTORTLE] = sWartortleLevelUpLearnset, - [SPECIES_BLASTOISE] = sBlastoiseLevelUpLearnset, - [SPECIES_CATERPIE] = sCaterpieLevelUpLearnset, - [SPECIES_METAPOD] = sMetapodLevelUpLearnset, - [SPECIES_BUTTERFREE] = sButterfreeLevelUpLearnset, - [SPECIES_WEEDLE] = sWeedleLevelUpLearnset, - [SPECIES_KAKUNA] = sKakunaLevelUpLearnset, - [SPECIES_BEEDRILL] = sBeedrillLevelUpLearnset, - [SPECIES_PIDGEY] = sPidgeyLevelUpLearnset, - [SPECIES_PIDGEOTTO] = sPidgeottoLevelUpLearnset, - [SPECIES_PIDGEOT] = sPidgeotLevelUpLearnset, - [SPECIES_RATTATA] = sRattataLevelUpLearnset, - [SPECIES_RATICATE] = sRaticateLevelUpLearnset, - [SPECIES_SPEAROW] = sSpearowLevelUpLearnset, - [SPECIES_FEAROW] = sFearowLevelUpLearnset, - [SPECIES_EKANS] = sEkansLevelUpLearnset, - [SPECIES_ARBOK] = sArbokLevelUpLearnset, - [SPECIES_PIKACHU] = sPikachuLevelUpLearnset, - [SPECIES_RAICHU] = sRaichuLevelUpLearnset, - [SPECIES_SANDSHREW] = sSandshrewLevelUpLearnset, - [SPECIES_SANDSLASH] = sSandslashLevelUpLearnset, - [SPECIES_NIDORAN_F] = sNidoranFLevelUpLearnset, - [SPECIES_NIDORINA] = sNidorinaLevelUpLearnset, - [SPECIES_NIDOQUEEN] = sNidoqueenLevelUpLearnset, - [SPECIES_NIDORAN_M] = sNidoranMLevelUpLearnset, - [SPECIES_NIDORINO] = sNidorinoLevelUpLearnset, - [SPECIES_NIDOKING] = sNidokingLevelUpLearnset, - [SPECIES_CLEFAIRY] = sClefairyLevelUpLearnset, - [SPECIES_CLEFABLE] = sClefableLevelUpLearnset, - [SPECIES_VULPIX] = sVulpixLevelUpLearnset, - [SPECIES_NINETALES] = sNinetalesLevelUpLearnset, - [SPECIES_JIGGLYPUFF] = sJigglypuffLevelUpLearnset, - [SPECIES_WIGGLYTUFF] = sWigglytuffLevelUpLearnset, - [SPECIES_ZUBAT] = sZubatLevelUpLearnset, - [SPECIES_GOLBAT] = sGolbatLevelUpLearnset, - [SPECIES_ODDISH] = sOddishLevelUpLearnset, - [SPECIES_GLOOM] = sGloomLevelUpLearnset, - [SPECIES_VILEPLUME] = sVileplumeLevelUpLearnset, - [SPECIES_PARAS] = sParasLevelUpLearnset, - [SPECIES_PARASECT] = sParasectLevelUpLearnset, - [SPECIES_VENONAT] = sVenonatLevelUpLearnset, - [SPECIES_VENOMOTH] = sVenomothLevelUpLearnset, - [SPECIES_DIGLETT] = sDiglettLevelUpLearnset, - [SPECIES_DUGTRIO] = sDugtrioLevelUpLearnset, - [SPECIES_MEOWTH] = sMeowthLevelUpLearnset, - [SPECIES_PERSIAN] = sPersianLevelUpLearnset, - [SPECIES_PSYDUCK] = sPsyduckLevelUpLearnset, - [SPECIES_GOLDUCK] = sGolduckLevelUpLearnset, - [SPECIES_MANKEY] = sMankeyLevelUpLearnset, - [SPECIES_PRIMEAPE] = sPrimeapeLevelUpLearnset, - [SPECIES_GROWLITHE] = sGrowlitheLevelUpLearnset, - [SPECIES_ARCANINE] = sArcanineLevelUpLearnset, - [SPECIES_POLIWAG] = sPoliwagLevelUpLearnset, - [SPECIES_POLIWHIRL] = sPoliwhirlLevelUpLearnset, - [SPECIES_POLIWRATH] = sPoliwrathLevelUpLearnset, - [SPECIES_ABRA] = sAbraLevelUpLearnset, - [SPECIES_KADABRA] = sKadabraLevelUpLearnset, - [SPECIES_ALAKAZAM] = sAlakazamLevelUpLearnset, - [SPECIES_MACHOP] = sMachopLevelUpLearnset, - [SPECIES_MACHOKE] = sMachokeLevelUpLearnset, - [SPECIES_MACHAMP] = sMachampLevelUpLearnset, - [SPECIES_BELLSPROUT] = sBellsproutLevelUpLearnset, - [SPECIES_WEEPINBELL] = sWeepinbellLevelUpLearnset, - [SPECIES_VICTREEBEL] = sVictreebelLevelUpLearnset, - [SPECIES_TENTACOOL] = sTentacoolLevelUpLearnset, - [SPECIES_TENTACRUEL] = sTentacruelLevelUpLearnset, - [SPECIES_GEODUDE] = sGeodudeLevelUpLearnset, - [SPECIES_GRAVELER] = sGravelerLevelUpLearnset, - [SPECIES_GOLEM] = sGolemLevelUpLearnset, - [SPECIES_PONYTA] = sPonytaLevelUpLearnset, - [SPECIES_RAPIDASH] = sRapidashLevelUpLearnset, - [SPECIES_SLOWPOKE] = sSlowpokeLevelUpLearnset, - [SPECIES_SLOWBRO] = sSlowbroLevelUpLearnset, - [SPECIES_MAGNEMITE] = sMagnemiteLevelUpLearnset, - [SPECIES_MAGNETON] = sMagnetonLevelUpLearnset, - [SPECIES_FARFETCHD] = sFarfetchdLevelUpLearnset, - [SPECIES_DODUO] = sDoduoLevelUpLearnset, - [SPECIES_DODRIO] = sDodrioLevelUpLearnset, - [SPECIES_SEEL] = sSeelLevelUpLearnset, - [SPECIES_DEWGONG] = sDewgongLevelUpLearnset, - [SPECIES_GRIMER] = sGrimerLevelUpLearnset, - [SPECIES_MUK] = sMukLevelUpLearnset, - [SPECIES_SHELLDER] = sShellderLevelUpLearnset, - [SPECIES_CLOYSTER] = sCloysterLevelUpLearnset, - [SPECIES_GASTLY] = sGastlyLevelUpLearnset, - [SPECIES_HAUNTER] = sHaunterLevelUpLearnset, - [SPECIES_GENGAR] = sGengarLevelUpLearnset, - [SPECIES_ONIX] = sOnixLevelUpLearnset, - [SPECIES_DROWZEE] = sDrowzeeLevelUpLearnset, - [SPECIES_HYPNO] = sHypnoLevelUpLearnset, - [SPECIES_KRABBY] = sKrabbyLevelUpLearnset, - [SPECIES_KINGLER] = sKinglerLevelUpLearnset, - [SPECIES_VOLTORB] = sVoltorbLevelUpLearnset, - [SPECIES_ELECTRODE] = sElectrodeLevelUpLearnset, - [SPECIES_EXEGGCUTE] = sExeggcuteLevelUpLearnset, - [SPECIES_EXEGGUTOR] = sExeggutorLevelUpLearnset, - [SPECIES_CUBONE] = sCuboneLevelUpLearnset, - [SPECIES_MAROWAK] = sMarowakLevelUpLearnset, - [SPECIES_HITMONLEE] = sHitmonleeLevelUpLearnset, - [SPECIES_HITMONCHAN] = sHitmonchanLevelUpLearnset, - [SPECIES_LICKITUNG] = sLickitungLevelUpLearnset, - [SPECIES_KOFFING] = sKoffingLevelUpLearnset, - [SPECIES_WEEZING] = sWeezingLevelUpLearnset, - [SPECIES_RHYHORN] = sRhyhornLevelUpLearnset, - [SPECIES_RHYDON] = sRhydonLevelUpLearnset, - [SPECIES_CHANSEY] = sChanseyLevelUpLearnset, - [SPECIES_TANGELA] = sTangelaLevelUpLearnset, - [SPECIES_KANGASKHAN] = sKangaskhanLevelUpLearnset, - [SPECIES_HORSEA] = sHorseaLevelUpLearnset, - [SPECIES_SEADRA] = sSeadraLevelUpLearnset, - [SPECIES_GOLDEEN] = sGoldeenLevelUpLearnset, - [SPECIES_SEAKING] = sSeakingLevelUpLearnset, - [SPECIES_STARYU] = sStaryuLevelUpLearnset, - [SPECIES_STARMIE] = sStarmieLevelUpLearnset, - [SPECIES_MR_MIME] = sMrMimeLevelUpLearnset, - [SPECIES_SCYTHER] = sScytherLevelUpLearnset, - [SPECIES_JYNX] = sJynxLevelUpLearnset, - [SPECIES_ELECTABUZZ] = sElectabuzzLevelUpLearnset, - [SPECIES_MAGMAR] = sMagmarLevelUpLearnset, - [SPECIES_PINSIR] = sPinsirLevelUpLearnset, - [SPECIES_TAUROS] = sTaurosLevelUpLearnset, - [SPECIES_MAGIKARP] = sMagikarpLevelUpLearnset, - [SPECIES_GYARADOS] = sGyaradosLevelUpLearnset, - [SPECIES_LAPRAS] = sLaprasLevelUpLearnset, - [SPECIES_DITTO] = sDittoLevelUpLearnset, - [SPECIES_EEVEE] = sEeveeLevelUpLearnset, - [SPECIES_VAPOREON] = sVaporeonLevelUpLearnset, - [SPECIES_JOLTEON] = sJolteonLevelUpLearnset, - [SPECIES_FLAREON] = sFlareonLevelUpLearnset, - [SPECIES_PORYGON] = sPorygonLevelUpLearnset, - [SPECIES_OMANYTE] = sOmanyteLevelUpLearnset, - [SPECIES_OMASTAR] = sOmastarLevelUpLearnset, - [SPECIES_KABUTO] = sKabutoLevelUpLearnset, - [SPECIES_KABUTOPS] = sKabutopsLevelUpLearnset, - [SPECIES_AERODACTYL] = sAerodactylLevelUpLearnset, - [SPECIES_SNORLAX] = sSnorlaxLevelUpLearnset, - [SPECIES_ARTICUNO] = sArticunoLevelUpLearnset, - [SPECIES_ZAPDOS] = sZapdosLevelUpLearnset, - [SPECIES_MOLTRES] = sMoltresLevelUpLearnset, - [SPECIES_DRATINI] = sDratiniLevelUpLearnset, - [SPECIES_DRAGONAIR] = sDragonairLevelUpLearnset, - [SPECIES_DRAGONITE] = sDragoniteLevelUpLearnset, - [SPECIES_MEWTWO] = sMewtwoLevelUpLearnset, - [SPECIES_MEW] = sMewLevelUpLearnset, - [SPECIES_CHIKORITA] = sChikoritaLevelUpLearnset, - [SPECIES_BAYLEEF] = sBayleefLevelUpLearnset, - [SPECIES_MEGANIUM] = sMeganiumLevelUpLearnset, - [SPECIES_CYNDAQUIL] = sCyndaquilLevelUpLearnset, - [SPECIES_QUILAVA] = sQuilavaLevelUpLearnset, - [SPECIES_TYPHLOSION] = sTyphlosionLevelUpLearnset, - [SPECIES_TOTODILE] = sTotodileLevelUpLearnset, - [SPECIES_CROCONAW] = sCroconawLevelUpLearnset, - [SPECIES_FERALIGATR] = sFeraligatrLevelUpLearnset, - [SPECIES_SENTRET] = sSentretLevelUpLearnset, - [SPECIES_FURRET] = sFurretLevelUpLearnset, - [SPECIES_HOOTHOOT] = sHoothootLevelUpLearnset, - [SPECIES_NOCTOWL] = sNoctowlLevelUpLearnset, - [SPECIES_LEDYBA] = sLedybaLevelUpLearnset, - [SPECIES_LEDIAN] = sLedianLevelUpLearnset, - [SPECIES_SPINARAK] = sSpinarakLevelUpLearnset, - [SPECIES_ARIADOS] = sAriadosLevelUpLearnset, - [SPECIES_CROBAT] = sCrobatLevelUpLearnset, - [SPECIES_CHINCHOU] = sChinchouLevelUpLearnset, - [SPECIES_LANTURN] = sLanturnLevelUpLearnset, - [SPECIES_PICHU] = sPichuLevelUpLearnset, - [SPECIES_CLEFFA] = sCleffaLevelUpLearnset, - [SPECIES_IGGLYBUFF] = sIgglybuffLevelUpLearnset, - [SPECIES_TOGEPI] = sTogepiLevelUpLearnset, - [SPECIES_TOGETIC] = sTogeticLevelUpLearnset, - [SPECIES_NATU] = sNatuLevelUpLearnset, - [SPECIES_XATU] = sXatuLevelUpLearnset, - [SPECIES_MAREEP] = sMareepLevelUpLearnset, - [SPECIES_FLAAFFY] = sFlaaffyLevelUpLearnset, - [SPECIES_AMPHAROS] = sAmpharosLevelUpLearnset, - [SPECIES_BELLOSSOM] = sBellossomLevelUpLearnset, - [SPECIES_MARILL] = sMarillLevelUpLearnset, - [SPECIES_AZUMARILL] = sAzumarillLevelUpLearnset, - [SPECIES_SUDOWOODO] = sSudowoodoLevelUpLearnset, - [SPECIES_POLITOED] = sPolitoedLevelUpLearnset, - [SPECIES_HOPPIP] = sHoppipLevelUpLearnset, - [SPECIES_SKIPLOOM] = sSkiploomLevelUpLearnset, - [SPECIES_JUMPLUFF] = sJumpluffLevelUpLearnset, - [SPECIES_AIPOM] = sAipomLevelUpLearnset, - [SPECIES_SUNKERN] = sSunkernLevelUpLearnset, - [SPECIES_SUNFLORA] = sSunfloraLevelUpLearnset, - [SPECIES_YANMA] = sYanmaLevelUpLearnset, - [SPECIES_WOOPER] = sWooperLevelUpLearnset, - [SPECIES_QUAGSIRE] = sQuagsireLevelUpLearnset, - [SPECIES_ESPEON] = sEspeonLevelUpLearnset, - [SPECIES_UMBREON] = sUmbreonLevelUpLearnset, - [SPECIES_MURKROW] = sMurkrowLevelUpLearnset, - [SPECIES_SLOWKING] = sSlowkingLevelUpLearnset, - [SPECIES_MISDREAVUS] = sMisdreavusLevelUpLearnset, - [SPECIES_UNOWN] = sUnownLevelUpLearnset, - [SPECIES_WOBBUFFET] = sWobbuffetLevelUpLearnset, - [SPECIES_GIRAFARIG] = sGirafarigLevelUpLearnset, - [SPECIES_PINECO] = sPinecoLevelUpLearnset, - [SPECIES_FORRETRESS] = sForretressLevelUpLearnset, - [SPECIES_DUNSPARCE] = sDunsparceLevelUpLearnset, - [SPECIES_GLIGAR] = sGligarLevelUpLearnset, - [SPECIES_STEELIX] = sSteelixLevelUpLearnset, - [SPECIES_SNUBBULL] = sSnubbullLevelUpLearnset, - [SPECIES_GRANBULL] = sGranbullLevelUpLearnset, - [SPECIES_QWILFISH] = sQwilfishLevelUpLearnset, - [SPECIES_SCIZOR] = sScizorLevelUpLearnset, - [SPECIES_SHUCKLE] = sShuckleLevelUpLearnset, - [SPECIES_HERACROSS] = sHeracrossLevelUpLearnset, - [SPECIES_SNEASEL] = sSneaselLevelUpLearnset, - [SPECIES_TEDDIURSA] = sTeddiursaLevelUpLearnset, - [SPECIES_URSARING] = sUrsaringLevelUpLearnset, - [SPECIES_SLUGMA] = sSlugmaLevelUpLearnset, - [SPECIES_MAGCARGO] = sMagcargoLevelUpLearnset, - [SPECIES_SWINUB] = sSwinubLevelUpLearnset, - [SPECIES_PILOSWINE] = sPiloswineLevelUpLearnset, - [SPECIES_CORSOLA] = sCorsolaLevelUpLearnset, - [SPECIES_REMORAID] = sRemoraidLevelUpLearnset, - [SPECIES_OCTILLERY] = sOctilleryLevelUpLearnset, - [SPECIES_DELIBIRD] = sDelibirdLevelUpLearnset, - [SPECIES_MANTINE] = sMantineLevelUpLearnset, - [SPECIES_SKARMORY] = sSkarmoryLevelUpLearnset, - [SPECIES_HOUNDOUR] = sHoundourLevelUpLearnset, - [SPECIES_HOUNDOOM] = sHoundoomLevelUpLearnset, - [SPECIES_KINGDRA] = sKingdraLevelUpLearnset, - [SPECIES_PHANPY] = sPhanpyLevelUpLearnset, - [SPECIES_DONPHAN] = sDonphanLevelUpLearnset, - [SPECIES_PORYGON2] = sPorygon2LevelUpLearnset, - [SPECIES_STANTLER] = sStantlerLevelUpLearnset, - [SPECIES_SMEARGLE] = sSmeargleLevelUpLearnset, - [SPECIES_TYROGUE] = sTyrogueLevelUpLearnset, - [SPECIES_HITMONTOP] = sHitmontopLevelUpLearnset, - [SPECIES_SMOOCHUM] = sSmoochumLevelUpLearnset, - [SPECIES_ELEKID] = sElekidLevelUpLearnset, - [SPECIES_MAGBY] = sMagbyLevelUpLearnset, - [SPECIES_MILTANK] = sMiltankLevelUpLearnset, - [SPECIES_BLISSEY] = sBlisseyLevelUpLearnset, - [SPECIES_RAIKOU] = sRaikouLevelUpLearnset, - [SPECIES_ENTEI] = sEnteiLevelUpLearnset, - [SPECIES_SUICUNE] = sSuicuneLevelUpLearnset, - [SPECIES_LARVITAR] = sLarvitarLevelUpLearnset, - [SPECIES_PUPITAR] = sPupitarLevelUpLearnset, - [SPECIES_TYRANITAR] = sTyranitarLevelUpLearnset, - [SPECIES_LUGIA] = sLugiaLevelUpLearnset, - [SPECIES_HO_OH] = sHoOhLevelUpLearnset, - [SPECIES_CELEBI] = sCelebiLevelUpLearnset, - [SPECIES_TREECKO] = sTreeckoLevelUpLearnset, - [SPECIES_GROVYLE] = sGrovyleLevelUpLearnset, - [SPECIES_SCEPTILE] = sSceptileLevelUpLearnset, - [SPECIES_TORCHIC] = sTorchicLevelUpLearnset, - [SPECIES_COMBUSKEN] = sCombuskenLevelUpLearnset, - [SPECIES_BLAZIKEN] = sBlazikenLevelUpLearnset, - [SPECIES_MUDKIP] = sMudkipLevelUpLearnset, - [SPECIES_MARSHTOMP] = sMarshtompLevelUpLearnset, - [SPECIES_SWAMPERT] = sSwampertLevelUpLearnset, - [SPECIES_POOCHYENA] = sPoochyenaLevelUpLearnset, - [SPECIES_MIGHTYENA] = sMightyenaLevelUpLearnset, - [SPECIES_ZIGZAGOON] = sZigzagoonLevelUpLearnset, - [SPECIES_LINOONE] = sLinooneLevelUpLearnset, - [SPECIES_WURMPLE] = sWurmpleLevelUpLearnset, - [SPECIES_SILCOON] = sSilcoonLevelUpLearnset, - [SPECIES_BEAUTIFLY] = sBeautiflyLevelUpLearnset, - [SPECIES_CASCOON] = sCascoonLevelUpLearnset, - [SPECIES_DUSTOX] = sDustoxLevelUpLearnset, - [SPECIES_LOTAD] = sLotadLevelUpLearnset, - [SPECIES_LOMBRE] = sLombreLevelUpLearnset, - [SPECIES_LUDICOLO] = sLudicoloLevelUpLearnset, - [SPECIES_SEEDOT] = sSeedotLevelUpLearnset, - [SPECIES_NUZLEAF] = sNuzleafLevelUpLearnset, - [SPECIES_SHIFTRY] = sShiftryLevelUpLearnset, - [SPECIES_NINCADA] = sNincadaLevelUpLearnset, - [SPECIES_NINJASK] = sNinjaskLevelUpLearnset, - [SPECIES_SHEDINJA] = sShedinjaLevelUpLearnset, - [SPECIES_TAILLOW] = sTaillowLevelUpLearnset, - [SPECIES_SWELLOW] = sSwellowLevelUpLearnset, - [SPECIES_SHROOMISH] = sShroomishLevelUpLearnset, - [SPECIES_BRELOOM] = sBreloomLevelUpLearnset, - [SPECIES_SPINDA] = sSpindaLevelUpLearnset, - [SPECIES_WINGULL] = sWingullLevelUpLearnset, - [SPECIES_PELIPPER] = sPelipperLevelUpLearnset, - [SPECIES_SURSKIT] = sSurskitLevelUpLearnset, - [SPECIES_MASQUERAIN] = sMasquerainLevelUpLearnset, - [SPECIES_WAILMER] = sWailmerLevelUpLearnset, - [SPECIES_WAILORD] = sWailordLevelUpLearnset, - [SPECIES_SKITTY] = sSkittyLevelUpLearnset, - [SPECIES_DELCATTY] = sDelcattyLevelUpLearnset, - [SPECIES_KECLEON] = sKecleonLevelUpLearnset, - [SPECIES_BALTOY] = sBaltoyLevelUpLearnset, - [SPECIES_CLAYDOL] = sClaydolLevelUpLearnset, - [SPECIES_NOSEPASS] = sNosepassLevelUpLearnset, - [SPECIES_TORKOAL] = sTorkoalLevelUpLearnset, - [SPECIES_SABLEYE] = sSableyeLevelUpLearnset, - [SPECIES_BARBOACH] = sBarboachLevelUpLearnset, - [SPECIES_WHISCASH] = sWhiscashLevelUpLearnset, - [SPECIES_LUVDISC] = sLuvdiscLevelUpLearnset, - [SPECIES_CORPHISH] = sCorphishLevelUpLearnset, - [SPECIES_CRAWDAUNT] = sCrawdauntLevelUpLearnset, - [SPECIES_FEEBAS] = sFeebasLevelUpLearnset, - [SPECIES_MILOTIC] = sMiloticLevelUpLearnset, - [SPECIES_CARVANHA] = sCarvanhaLevelUpLearnset, - [SPECIES_SHARPEDO] = sSharpedoLevelUpLearnset, - [SPECIES_TRAPINCH] = sTrapinchLevelUpLearnset, - [SPECIES_VIBRAVA] = sVibravaLevelUpLearnset, - [SPECIES_FLYGON] = sFlygonLevelUpLearnset, - [SPECIES_MAKUHITA] = sMakuhitaLevelUpLearnset, - [SPECIES_HARIYAMA] = sHariyamaLevelUpLearnset, - [SPECIES_ELECTRIKE] = sElectrikeLevelUpLearnset, - [SPECIES_MANECTRIC] = sManectricLevelUpLearnset, - [SPECIES_NUMEL] = sNumelLevelUpLearnset, - [SPECIES_CAMERUPT] = sCameruptLevelUpLearnset, - [SPECIES_SPHEAL] = sSphealLevelUpLearnset, - [SPECIES_SEALEO] = sSealeoLevelUpLearnset, - [SPECIES_WALREIN] = sWalreinLevelUpLearnset, - [SPECIES_CACNEA] = sCacneaLevelUpLearnset, - [SPECIES_CACTURNE] = sCacturneLevelUpLearnset, - [SPECIES_SNORUNT] = sSnoruntLevelUpLearnset, - [SPECIES_GLALIE] = sGlalieLevelUpLearnset, - [SPECIES_LUNATONE] = sLunatoneLevelUpLearnset, - [SPECIES_SOLROCK] = sSolrockLevelUpLearnset, - [SPECIES_AZURILL] = sAzurillLevelUpLearnset, - [SPECIES_SPOINK] = sSpoinkLevelUpLearnset, - [SPECIES_GRUMPIG] = sGrumpigLevelUpLearnset, - [SPECIES_PLUSLE] = sPlusleLevelUpLearnset, - [SPECIES_MINUN] = sMinunLevelUpLearnset, - [SPECIES_MAWILE] = sMawileLevelUpLearnset, - [SPECIES_MEDITITE] = sMedititeLevelUpLearnset, - [SPECIES_MEDICHAM] = sMedichamLevelUpLearnset, - [SPECIES_SWABLU] = sSwabluLevelUpLearnset, - [SPECIES_ALTARIA] = sAltariaLevelUpLearnset, - [SPECIES_WYNAUT] = sWynautLevelUpLearnset, - [SPECIES_DUSKULL] = sDuskullLevelUpLearnset, - [SPECIES_DUSCLOPS] = sDusclopsLevelUpLearnset, - [SPECIES_ROSELIA] = sRoseliaLevelUpLearnset, - [SPECIES_SLAKOTH] = sSlakothLevelUpLearnset, - [SPECIES_VIGOROTH] = sVigorothLevelUpLearnset, - [SPECIES_SLAKING] = sSlakingLevelUpLearnset, - [SPECIES_GULPIN] = sGulpinLevelUpLearnset, - [SPECIES_SWALOT] = sSwalotLevelUpLearnset, - [SPECIES_TROPIUS] = sTropiusLevelUpLearnset, - [SPECIES_WHISMUR] = sWhismurLevelUpLearnset, - [SPECIES_LOUDRED] = sLoudredLevelUpLearnset, - [SPECIES_EXPLOUD] = sExploudLevelUpLearnset, - [SPECIES_CLAMPERL] = sClamperlLevelUpLearnset, - [SPECIES_HUNTAIL] = sHuntailLevelUpLearnset, - [SPECIES_GOREBYSS] = sGorebyssLevelUpLearnset, - [SPECIES_ABSOL] = sAbsolLevelUpLearnset, - [SPECIES_SHUPPET] = sShuppetLevelUpLearnset, - [SPECIES_BANETTE] = sBanetteLevelUpLearnset, - [SPECIES_SEVIPER] = sSeviperLevelUpLearnset, - [SPECIES_ZANGOOSE] = sZangooseLevelUpLearnset, - [SPECIES_RELICANTH] = sRelicanthLevelUpLearnset, - [SPECIES_ARON] = sAronLevelUpLearnset, - [SPECIES_LAIRON] = sLaironLevelUpLearnset, - [SPECIES_AGGRON] = sAggronLevelUpLearnset, - [SPECIES_CASTFORM] = sCastformLevelUpLearnset, - [SPECIES_VOLBEAT] = sVolbeatLevelUpLearnset, - [SPECIES_ILLUMISE] = sIllumiseLevelUpLearnset, - [SPECIES_LILEEP] = sLileepLevelUpLearnset, - [SPECIES_CRADILY] = sCradilyLevelUpLearnset, - [SPECIES_ANORITH] = sAnorithLevelUpLearnset, - [SPECIES_ARMALDO] = sArmaldoLevelUpLearnset, - [SPECIES_RALTS] = sRaltsLevelUpLearnset, - [SPECIES_KIRLIA] = sKirliaLevelUpLearnset, - [SPECIES_GARDEVOIR] = sGardevoirLevelUpLearnset, - [SPECIES_BAGON] = sBagonLevelUpLearnset, - [SPECIES_SHELGON] = sShelgonLevelUpLearnset, - [SPECIES_SALAMENCE] = sSalamenceLevelUpLearnset, - [SPECIES_BELDUM] = sBeldumLevelUpLearnset, - [SPECIES_METANG] = sMetangLevelUpLearnset, - [SPECIES_METAGROSS] = sMetagrossLevelUpLearnset, - [SPECIES_REGIROCK] = sRegirockLevelUpLearnset, - [SPECIES_REGICE] = sRegiceLevelUpLearnset, - [SPECIES_REGISTEEL] = sRegisteelLevelUpLearnset, - [SPECIES_KYOGRE] = sKyogreLevelUpLearnset, - [SPECIES_GROUDON] = sGroudonLevelUpLearnset, - [SPECIES_RAYQUAZA] = sRayquazaLevelUpLearnset, - [SPECIES_LATIAS] = sLatiasLevelUpLearnset, - [SPECIES_LATIOS] = sLatiosLevelUpLearnset, - [SPECIES_JIRACHI] = sJirachiLevelUpLearnset, - [SPECIES_DEOXYS] = sDeoxysLevelUpLearnset, - [SPECIES_CHIMECHO] = sChimechoLevelUpLearnset, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_TURTWIG] = sTurtwigLevelUpLearnset, - [SPECIES_GROTLE] = sGrotleLevelUpLearnset, - [SPECIES_TORTERRA] = sTorterraLevelUpLearnset, - [SPECIES_CHIMCHAR] = sChimcharLevelUpLearnset, - [SPECIES_MONFERNO] = sMonfernoLevelUpLearnset, - [SPECIES_INFERNAPE] = sInfernapeLevelUpLearnset, - [SPECIES_PIPLUP] = sPiplupLevelUpLearnset, - [SPECIES_PRINPLUP] = sPrinplupLevelUpLearnset, - [SPECIES_EMPOLEON] = sEmpoleonLevelUpLearnset, - [SPECIES_STARLY] = sStarlyLevelUpLearnset, - [SPECIES_STARAVIA] = sStaraviaLevelUpLearnset, - [SPECIES_STARAPTOR] = sStaraptorLevelUpLearnset, - [SPECIES_BIDOOF] = sBidoofLevelUpLearnset, - [SPECIES_BIBAREL] = sBibarelLevelUpLearnset, - [SPECIES_KRICKETOT] = sKricketotLevelUpLearnset, - [SPECIES_KRICKETUNE] = sKricketuneLevelUpLearnset, - [SPECIES_SHINX] = sShinxLevelUpLearnset, - [SPECIES_LUXIO] = sLuxioLevelUpLearnset, - [SPECIES_LUXRAY] = sLuxrayLevelUpLearnset, - [SPECIES_BUDEW] = sBudewLevelUpLearnset, - [SPECIES_ROSERADE] = sRoseradeLevelUpLearnset, - [SPECIES_CRANIDOS] = sCranidosLevelUpLearnset, - [SPECIES_RAMPARDOS] = sRampardosLevelUpLearnset, - [SPECIES_SHIELDON] = sShieldonLevelUpLearnset, - [SPECIES_BASTIODON] = sBastiodonLevelUpLearnset, - [SPECIES_BURMY] = sBurmyLevelUpLearnset, - [SPECIES_WORMADAM] = sWormadamLevelUpLearnset, - [SPECIES_MOTHIM] = sMothimLevelUpLearnset, - [SPECIES_COMBEE] = sCombeeLevelUpLearnset, - [SPECIES_VESPIQUEN] = sVespiquenLevelUpLearnset, - [SPECIES_PACHIRISU] = sPachirisuLevelUpLearnset, - [SPECIES_BUIZEL] = sBuizelLevelUpLearnset, - [SPECIES_FLOATZEL] = sFloatzelLevelUpLearnset, - [SPECIES_CHERUBI] = sCherubiLevelUpLearnset, - [SPECIES_CHERRIM] = sCherrimLevelUpLearnset, - [SPECIES_SHELLOS] = sShellosLevelUpLearnset, - [SPECIES_GASTRODON] = sGastrodonLevelUpLearnset, - [SPECIES_AMBIPOM] = sAmbipomLevelUpLearnset, - [SPECIES_DRIFLOON] = sDrifloonLevelUpLearnset, - [SPECIES_DRIFBLIM] = sDrifblimLevelUpLearnset, - [SPECIES_BUNEARY] = sBunearyLevelUpLearnset, - [SPECIES_LOPUNNY] = sLopunnyLevelUpLearnset, - [SPECIES_MISMAGIUS] = sMismagiusLevelUpLearnset, - [SPECIES_HONCHKROW] = sHonchkrowLevelUpLearnset, - [SPECIES_GLAMEOW] = sGlameowLevelUpLearnset, - [SPECIES_PURUGLY] = sPuruglyLevelUpLearnset, - [SPECIES_CHINGLING] = sChinglingLevelUpLearnset, - [SPECIES_STUNKY] = sStunkyLevelUpLearnset, - [SPECIES_SKUNTANK] = sSkuntankLevelUpLearnset, - [SPECIES_BRONZOR] = sBronzorLevelUpLearnset, - [SPECIES_BRONZONG] = sBronzongLevelUpLearnset, - [SPECIES_BONSLY] = sBonslyLevelUpLearnset, - [SPECIES_MIME_JR] = sMimeJrLevelUpLearnset, - [SPECIES_HAPPINY] = sHappinyLevelUpLearnset, - [SPECIES_CHATOT] = sChatotLevelUpLearnset, - [SPECIES_SPIRITOMB] = sSpiritombLevelUpLearnset, - [SPECIES_GIBLE] = sGibleLevelUpLearnset, - [SPECIES_GABITE] = sGabiteLevelUpLearnset, - [SPECIES_GARCHOMP] = sGarchompLevelUpLearnset, - [SPECIES_MUNCHLAX] = sMunchlaxLevelUpLearnset, - [SPECIES_RIOLU] = sRioluLevelUpLearnset, - [SPECIES_LUCARIO] = sLucarioLevelUpLearnset, - [SPECIES_HIPPOPOTAS] = sHippopotasLevelUpLearnset, - [SPECIES_HIPPOWDON] = sHippowdonLevelUpLearnset, - [SPECIES_SKORUPI] = sSkorupiLevelUpLearnset, - [SPECIES_DRAPION] = sDrapionLevelUpLearnset, - [SPECIES_CROAGUNK] = sCroagunkLevelUpLearnset, - [SPECIES_TOXICROAK] = sToxicroakLevelUpLearnset, - [SPECIES_CARNIVINE] = sCarnivineLevelUpLearnset, - [SPECIES_FINNEON] = sFinneonLevelUpLearnset, - [SPECIES_LUMINEON] = sLumineonLevelUpLearnset, - [SPECIES_MANTYKE] = sMantykeLevelUpLearnset, - [SPECIES_SNOVER] = sSnoverLevelUpLearnset, - [SPECIES_ABOMASNOW] = sAbomasnowLevelUpLearnset, - [SPECIES_WEAVILE] = sWeavileLevelUpLearnset, - [SPECIES_MAGNEZONE] = sMagnezoneLevelUpLearnset, - [SPECIES_LICKILICKY] = sLickilickyLevelUpLearnset, - [SPECIES_RHYPERIOR] = sRhyperiorLevelUpLearnset, - [SPECIES_TANGROWTH] = sTangrowthLevelUpLearnset, - [SPECIES_ELECTIVIRE] = sElectivireLevelUpLearnset, - [SPECIES_MAGMORTAR] = sMagmortarLevelUpLearnset, - [SPECIES_TOGEKISS] = sTogekissLevelUpLearnset, - [SPECIES_YANMEGA] = sYanmegaLevelUpLearnset, - [SPECIES_LEAFEON] = sLeafeonLevelUpLearnset, - [SPECIES_GLACEON] = sGlaceonLevelUpLearnset, - [SPECIES_GLISCOR] = sGliscorLevelUpLearnset, - [SPECIES_MAMOSWINE] = sMamoswineLevelUpLearnset, - [SPECIES_PORYGON_Z] = sPorygonZLevelUpLearnset, - [SPECIES_GALLADE] = sGalladeLevelUpLearnset, - [SPECIES_PROBOPASS] = sProbopassLevelUpLearnset, - [SPECIES_DUSKNOIR] = sDusknoirLevelUpLearnset, - [SPECIES_FROSLASS] = sFroslassLevelUpLearnset, - [SPECIES_ROTOM] = sRotomLevelUpLearnset, - [SPECIES_UXIE] = sUxieLevelUpLearnset, - [SPECIES_MESPRIT] = sMespritLevelUpLearnset, - [SPECIES_AZELF] = sAzelfLevelUpLearnset, - [SPECIES_DIALGA] = sDialgaLevelUpLearnset, - [SPECIES_PALKIA] = sPalkiaLevelUpLearnset, - [SPECIES_HEATRAN] = sHeatranLevelUpLearnset, - [SPECIES_REGIGIGAS] = sRegigigasLevelUpLearnset, - [SPECIES_GIRATINA] = sGiratinaLevelUpLearnset, - [SPECIES_CRESSELIA] = sCresseliaLevelUpLearnset, - [SPECIES_PHIONE] = sPhioneLevelUpLearnset, - [SPECIES_MANAPHY] = sManaphyLevelUpLearnset, - [SPECIES_DARKRAI] = sDarkraiLevelUpLearnset, - [SPECIES_SHAYMIN] = sShayminLevelUpLearnset, - [SPECIES_ARCEUS] = sArceusLevelUpLearnset, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_VICTINI] = sVictiniLevelUpLearnset, - [SPECIES_SNIVY] = sSnivyLevelUpLearnset, - [SPECIES_SERVINE] = sServineLevelUpLearnset, - [SPECIES_SERPERIOR] = sSerperiorLevelUpLearnset, - [SPECIES_TEPIG] = sTepigLevelUpLearnset, - [SPECIES_PIGNITE] = sPigniteLevelUpLearnset, - [SPECIES_EMBOAR] = sEmboarLevelUpLearnset, - [SPECIES_OSHAWOTT] = sOshawottLevelUpLearnset, - [SPECIES_DEWOTT] = sDewottLevelUpLearnset, - [SPECIES_SAMUROTT] = sSamurottLevelUpLearnset, - [SPECIES_PATRAT] = sPatratLevelUpLearnset, - [SPECIES_WATCHOG] = sWatchogLevelUpLearnset, - [SPECIES_LILLIPUP] = sLillipupLevelUpLearnset, - [SPECIES_HERDIER] = sHerdierLevelUpLearnset, - [SPECIES_STOUTLAND] = sStoutlandLevelUpLearnset, - [SPECIES_PURRLOIN] = sPurrloinLevelUpLearnset, - [SPECIES_LIEPARD] = sLiepardLevelUpLearnset, - [SPECIES_PANSAGE] = sPansageLevelUpLearnset, - [SPECIES_SIMISAGE] = sSimisageLevelUpLearnset, - [SPECIES_PANSEAR] = sPansearLevelUpLearnset, - [SPECIES_SIMISEAR] = sSimisearLevelUpLearnset, - [SPECIES_PANPOUR] = sPanpourLevelUpLearnset, - [SPECIES_SIMIPOUR] = sSimipourLevelUpLearnset, - [SPECIES_MUNNA] = sMunnaLevelUpLearnset, - [SPECIES_MUSHARNA] = sMusharnaLevelUpLearnset, - [SPECIES_PIDOVE] = sPidoveLevelUpLearnset, - [SPECIES_TRANQUILL] = sTranquillLevelUpLearnset, - [SPECIES_UNFEZANT] = sUnfezantLevelUpLearnset, - [SPECIES_BLITZLE] = sBlitzleLevelUpLearnset, - [SPECIES_ZEBSTRIKA] = sZebstrikaLevelUpLearnset, - [SPECIES_ROGGENROLA] = sRoggenrolaLevelUpLearnset, - [SPECIES_BOLDORE] = sBoldoreLevelUpLearnset, - [SPECIES_GIGALITH] = sGigalithLevelUpLearnset, - [SPECIES_WOOBAT] = sWoobatLevelUpLearnset, - [SPECIES_SWOOBAT] = sSwoobatLevelUpLearnset, - [SPECIES_DRILBUR] = sDrilburLevelUpLearnset, - [SPECIES_EXCADRILL] = sExcadrillLevelUpLearnset, - [SPECIES_AUDINO] = sAudinoLevelUpLearnset, - [SPECIES_TIMBURR] = sTimburrLevelUpLearnset, - [SPECIES_GURDURR] = sGurdurrLevelUpLearnset, - [SPECIES_CONKELDURR] = sConkeldurrLevelUpLearnset, - [SPECIES_TYMPOLE] = sTympoleLevelUpLearnset, - [SPECIES_PALPITOAD] = sPalpitoadLevelUpLearnset, - [SPECIES_SEISMITOAD] = sSeismitoadLevelUpLearnset, - [SPECIES_THROH] = sThrohLevelUpLearnset, - [SPECIES_SAWK] = sSawkLevelUpLearnset, - [SPECIES_SEWADDLE] = sSewaddleLevelUpLearnset, - [SPECIES_SWADLOON] = sSwadloonLevelUpLearnset, - [SPECIES_LEAVANNY] = sLeavannyLevelUpLearnset, - [SPECIES_VENIPEDE] = sVenipedeLevelUpLearnset, - [SPECIES_WHIRLIPEDE] = sWhirlipedeLevelUpLearnset, - [SPECIES_SCOLIPEDE] = sScolipedeLevelUpLearnset, - [SPECIES_COTTONEE] = sCottoneeLevelUpLearnset, - [SPECIES_WHIMSICOTT] = sWhimsicottLevelUpLearnset, - [SPECIES_PETILIL] = sPetililLevelUpLearnset, - [SPECIES_LILLIGANT] = sLilligantLevelUpLearnset, - [SPECIES_BASCULIN] = sBasculinLevelUpLearnset, - [SPECIES_SANDILE] = sSandileLevelUpLearnset, - [SPECIES_KROKOROK] = sKrokorokLevelUpLearnset, - [SPECIES_KROOKODILE] = sKrookodileLevelUpLearnset, - [SPECIES_DARUMAKA] = sDarumakaLevelUpLearnset, - [SPECIES_DARMANITAN] = sDarmanitanLevelUpLearnset, - [SPECIES_MARACTUS] = sMaractusLevelUpLearnset, - [SPECIES_DWEBBLE] = sDwebbleLevelUpLearnset, - [SPECIES_CRUSTLE] = sCrustleLevelUpLearnset, - [SPECIES_SCRAGGY] = sScraggyLevelUpLearnset, - [SPECIES_SCRAFTY] = sScraftyLevelUpLearnset, - [SPECIES_SIGILYPH] = sSigilyphLevelUpLearnset, - [SPECIES_YAMASK] = sYamaskLevelUpLearnset, - [SPECIES_COFAGRIGUS] = sCofagrigusLevelUpLearnset, - [SPECIES_TIRTOUGA] = sTirtougaLevelUpLearnset, - [SPECIES_CARRACOSTA] = sCarracostaLevelUpLearnset, - [SPECIES_ARCHEN] = sArchenLevelUpLearnset, - [SPECIES_ARCHEOPS] = sArcheopsLevelUpLearnset, - [SPECIES_TRUBBISH] = sTrubbishLevelUpLearnset, - [SPECIES_GARBODOR] = sGarbodorLevelUpLearnset, - [SPECIES_ZORUA] = sZoruaLevelUpLearnset, - [SPECIES_ZOROARK] = sZoroarkLevelUpLearnset, - [SPECIES_MINCCINO] = sMinccinoLevelUpLearnset, - [SPECIES_CINCCINO] = sCinccinoLevelUpLearnset, - [SPECIES_GOTHITA] = sGothitaLevelUpLearnset, - [SPECIES_GOTHORITA] = sGothoritaLevelUpLearnset, - [SPECIES_GOTHITELLE] = sGothitelleLevelUpLearnset, - [SPECIES_SOLOSIS] = sSolosisLevelUpLearnset, - [SPECIES_DUOSION] = sDuosionLevelUpLearnset, - [SPECIES_REUNICLUS] = sReuniclusLevelUpLearnset, - [SPECIES_DUCKLETT] = sDucklettLevelUpLearnset, - [SPECIES_SWANNA] = sSwannaLevelUpLearnset, - [SPECIES_VANILLITE] = sVanilliteLevelUpLearnset, - [SPECIES_VANILLISH] = sVanillishLevelUpLearnset, - [SPECIES_VANILLUXE] = sVanilluxeLevelUpLearnset, - [SPECIES_DEERLING] = sDeerlingLevelUpLearnset, - [SPECIES_SAWSBUCK] = sSawsbuckLevelUpLearnset, - [SPECIES_EMOLGA] = sEmolgaLevelUpLearnset, - [SPECIES_KARRABLAST] = sKarrablastLevelUpLearnset, - [SPECIES_ESCAVALIER] = sEscavalierLevelUpLearnset, - [SPECIES_FOONGUS] = sFoongusLevelUpLearnset, - [SPECIES_AMOONGUSS] = sAmoongussLevelUpLearnset, - [SPECIES_FRILLISH] = sFrillishLevelUpLearnset, - [SPECIES_JELLICENT] = sJellicentLevelUpLearnset, - [SPECIES_ALOMOMOLA] = sAlomomolaLevelUpLearnset, - [SPECIES_JOLTIK] = sJoltikLevelUpLearnset, - [SPECIES_GALVANTULA] = sGalvantulaLevelUpLearnset, - [SPECIES_FERROSEED] = sFerroseedLevelUpLearnset, - [SPECIES_FERROTHORN] = sFerrothornLevelUpLearnset, - [SPECIES_KLINK] = sKlinkLevelUpLearnset, - [SPECIES_KLANG] = sKlangLevelUpLearnset, - [SPECIES_KLINKLANG] = sKlinklangLevelUpLearnset, - [SPECIES_TYNAMO] = sTynamoLevelUpLearnset, - [SPECIES_EELEKTRIK] = sEelektrikLevelUpLearnset, - [SPECIES_EELEKTROSS] = sEelektrossLevelUpLearnset, - [SPECIES_ELGYEM] = sElgyemLevelUpLearnset, - [SPECIES_BEHEEYEM] = sBeheeyemLevelUpLearnset, - [SPECIES_LITWICK] = sLitwickLevelUpLearnset, - [SPECIES_LAMPENT] = sLampentLevelUpLearnset, - [SPECIES_CHANDELURE] = sChandelureLevelUpLearnset, - [SPECIES_AXEW] = sAxewLevelUpLearnset, - [SPECIES_FRAXURE] = sFraxureLevelUpLearnset, - [SPECIES_HAXORUS] = sHaxorusLevelUpLearnset, - [SPECIES_CUBCHOO] = sCubchooLevelUpLearnset, - [SPECIES_BEARTIC] = sBearticLevelUpLearnset, - [SPECIES_CRYOGONAL] = sCryogonalLevelUpLearnset, - [SPECIES_SHELMET] = sShelmetLevelUpLearnset, - [SPECIES_ACCELGOR] = sAccelgorLevelUpLearnset, - [SPECIES_STUNFISK] = sStunfiskLevelUpLearnset, - [SPECIES_MIENFOO] = sMienfooLevelUpLearnset, - [SPECIES_MIENSHAO] = sMienshaoLevelUpLearnset, - [SPECIES_DRUDDIGON] = sDruddigonLevelUpLearnset, - [SPECIES_GOLETT] = sGolettLevelUpLearnset, - [SPECIES_GOLURK] = sGolurkLevelUpLearnset, - [SPECIES_PAWNIARD] = sPawniardLevelUpLearnset, - [SPECIES_BISHARP] = sBisharpLevelUpLearnset, - [SPECIES_BOUFFALANT] = sBouffalantLevelUpLearnset, - [SPECIES_RUFFLET] = sRuffletLevelUpLearnset, - [SPECIES_BRAVIARY] = sBraviaryLevelUpLearnset, - [SPECIES_VULLABY] = sVullabyLevelUpLearnset, - [SPECIES_MANDIBUZZ] = sMandibuzzLevelUpLearnset, - [SPECIES_HEATMOR] = sHeatmorLevelUpLearnset, - [SPECIES_DURANT] = sDurantLevelUpLearnset, - [SPECIES_DEINO] = sDeinoLevelUpLearnset, - [SPECIES_ZWEILOUS] = sZweilousLevelUpLearnset, - [SPECIES_HYDREIGON] = sHydreigonLevelUpLearnset, - [SPECIES_LARVESTA] = sLarvestaLevelUpLearnset, - [SPECIES_VOLCARONA] = sVolcaronaLevelUpLearnset, - [SPECIES_COBALION] = sCobalionLevelUpLearnset, - [SPECIES_TERRAKION] = sTerrakionLevelUpLearnset, - [SPECIES_VIRIZION] = sVirizionLevelUpLearnset, - [SPECIES_TORNADUS] = sTornadusLevelUpLearnset, - [SPECIES_THUNDURUS] = sThundurusLevelUpLearnset, - [SPECIES_RESHIRAM] = sReshiramLevelUpLearnset, - [SPECIES_ZEKROM] = sZekromLevelUpLearnset, - [SPECIES_LANDORUS] = sLandorusLevelUpLearnset, - [SPECIES_KYUREM] = sKyuremLevelUpLearnset, - [SPECIES_KELDEO] = sKeldeoLevelUpLearnset, - [SPECIES_MELOETTA] = sMeloettaLevelUpLearnset, - [SPECIES_GENESECT] = sGenesectLevelUpLearnset, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_CHESPIN] = sChespinLevelUpLearnset, - [SPECIES_QUILLADIN] = sQuilladinLevelUpLearnset, - [SPECIES_CHESNAUGHT] = sChesnaughtLevelUpLearnset, - [SPECIES_FENNEKIN] = sFennekinLevelUpLearnset, - [SPECIES_BRAIXEN] = sBraixenLevelUpLearnset, - [SPECIES_DELPHOX] = sDelphoxLevelUpLearnset, - [SPECIES_FROAKIE] = sFroakieLevelUpLearnset, - [SPECIES_FROGADIER] = sFrogadierLevelUpLearnset, - [SPECIES_GRENINJA] = sGreninjaLevelUpLearnset, - [SPECIES_BUNNELBY] = sBunnelbyLevelUpLearnset, - [SPECIES_DIGGERSBY] = sDiggersbyLevelUpLearnset, - [SPECIES_FLETCHLING] = sFletchlingLevelUpLearnset, - [SPECIES_FLETCHINDER] = sFletchinderLevelUpLearnset, - [SPECIES_TALONFLAME] = sTalonflameLevelUpLearnset, - [SPECIES_SCATTERBUG] = sScatterbugLevelUpLearnset, - [SPECIES_SPEWPA] = sSpewpaLevelUpLearnset, - [SPECIES_VIVILLON] = sVivillonLevelUpLearnset, - [SPECIES_LITLEO] = sLitleoLevelUpLearnset, - [SPECIES_PYROAR] = sPyroarLevelUpLearnset, - [SPECIES_FLABEBE] = sFlabebeLevelUpLearnset, - [SPECIES_FLOETTE] = sFloetteLevelUpLearnset, - [SPECIES_FLORGES] = sFlorgesLevelUpLearnset, - [SPECIES_SKIDDO] = sSkiddoLevelUpLearnset, - [SPECIES_GOGOAT] = sGogoatLevelUpLearnset, - [SPECIES_PANCHAM] = sPanchamLevelUpLearnset, - [SPECIES_PANGORO] = sPangoroLevelUpLearnset, - [SPECIES_FURFROU] = sFurfrouLevelUpLearnset, - [SPECIES_ESPURR] = sEspurrLevelUpLearnset, - [SPECIES_MEOWSTIC] = sMeowsticLevelUpLearnset, - [SPECIES_HONEDGE] = sHonedgeLevelUpLearnset, - [SPECIES_DOUBLADE] = sDoubladeLevelUpLearnset, - [SPECIES_AEGISLASH] = sAegislashLevelUpLearnset, - [SPECIES_SPRITZEE] = sSpritzeeLevelUpLearnset, - [SPECIES_AROMATISSE] = sAromatisseLevelUpLearnset, - [SPECIES_SWIRLIX] = sSwirlixLevelUpLearnset, - [SPECIES_SLURPUFF] = sSlurpuffLevelUpLearnset, - [SPECIES_INKAY] = sInkayLevelUpLearnset, - [SPECIES_MALAMAR] = sMalamarLevelUpLearnset, - [SPECIES_BINACLE] = sBinacleLevelUpLearnset, - [SPECIES_BARBARACLE] = sBarbaracleLevelUpLearnset, - [SPECIES_SKRELP] = sSkrelpLevelUpLearnset, - [SPECIES_DRAGALGE] = sDragalgeLevelUpLearnset, - [SPECIES_CLAUNCHER] = sClauncherLevelUpLearnset, - [SPECIES_CLAWITZER] = sClawitzerLevelUpLearnset, - [SPECIES_HELIOPTILE] = sHelioptileLevelUpLearnset, - [SPECIES_HELIOLISK] = sHelioliskLevelUpLearnset, - [SPECIES_TYRUNT] = sTyruntLevelUpLearnset, - [SPECIES_TYRANTRUM] = sTyrantrumLevelUpLearnset, - [SPECIES_AMAURA] = sAmauraLevelUpLearnset, - [SPECIES_AURORUS] = sAurorusLevelUpLearnset, - [SPECIES_SYLVEON] = sSylveonLevelUpLearnset, - [SPECIES_HAWLUCHA] = sHawluchaLevelUpLearnset, - [SPECIES_DEDENNE] = sDedenneLevelUpLearnset, - [SPECIES_CARBINK] = sCarbinkLevelUpLearnset, - [SPECIES_GOOMY] = sGoomyLevelUpLearnset, - [SPECIES_SLIGGOO] = sSliggooLevelUpLearnset, - [SPECIES_GOODRA] = sGoodraLevelUpLearnset, - [SPECIES_KLEFKI] = sKlefkiLevelUpLearnset, - [SPECIES_PHANTUMP] = sPhantumpLevelUpLearnset, - [SPECIES_TREVENANT] = sTrevenantLevelUpLearnset, - [SPECIES_PUMPKABOO] = sPumpkabooLevelUpLearnset, - [SPECIES_GOURGEIST] = sGourgeistLevelUpLearnset, - [SPECIES_BERGMITE] = sBergmiteLevelUpLearnset, - [SPECIES_AVALUGG] = sAvaluggLevelUpLearnset, - [SPECIES_NOIBAT] = sNoibatLevelUpLearnset, - [SPECIES_NOIVERN] = sNoivernLevelUpLearnset, - [SPECIES_XERNEAS] = sXerneasLevelUpLearnset, - [SPECIES_YVELTAL] = sYveltalLevelUpLearnset, - [SPECIES_ZYGARDE] = sZygardeLevelUpLearnset, - [SPECIES_DIANCIE] = sDiancieLevelUpLearnset, - [SPECIES_HOOPA] = sHoopaLevelUpLearnset, - [SPECIES_VOLCANION] = sVolcanionLevelUpLearnset, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_ROWLET] = sRowletLevelUpLearnset, - [SPECIES_DARTRIX] = sDartrixLevelUpLearnset, - [SPECIES_DECIDUEYE] = sDecidueyeLevelUpLearnset, - [SPECIES_LITTEN] = sLittenLevelUpLearnset, - [SPECIES_TORRACAT] = sTorracatLevelUpLearnset, - [SPECIES_INCINEROAR] = sIncineroarLevelUpLearnset, - [SPECIES_POPPLIO] = sPopplioLevelUpLearnset, - [SPECIES_BRIONNE] = sBrionneLevelUpLearnset, - [SPECIES_PRIMARINA] = sPrimarinaLevelUpLearnset, - [SPECIES_PIKIPEK] = sPikipekLevelUpLearnset, - [SPECIES_TRUMBEAK] = sTrumbeakLevelUpLearnset, - [SPECIES_TOUCANNON] = sToucannonLevelUpLearnset, - [SPECIES_YUNGOOS] = sYungoosLevelUpLearnset, - [SPECIES_GUMSHOOS] = sGumshoosLevelUpLearnset, - [SPECIES_GRUBBIN] = sGrubbinLevelUpLearnset, - [SPECIES_CHARJABUG] = sCharjabugLevelUpLearnset, - [SPECIES_VIKAVOLT] = sVikavoltLevelUpLearnset, - [SPECIES_CRABRAWLER] = sCrabrawlerLevelUpLearnset, - [SPECIES_CRABOMINABLE] = sCrabominableLevelUpLearnset, - [SPECIES_ORICORIO] = sOricorioLevelUpLearnset, - [SPECIES_CUTIEFLY] = sCutieflyLevelUpLearnset, - [SPECIES_RIBOMBEE] = sRibombeeLevelUpLearnset, - [SPECIES_ROCKRUFF] = sRockruffLevelUpLearnset, - [SPECIES_LYCANROC] = sLycanrocLevelUpLearnset, - [SPECIES_WISHIWASHI] = sWishiwashiLevelUpLearnset, - [SPECIES_MAREANIE] = sMareanieLevelUpLearnset, - [SPECIES_TOXAPEX] = sToxapexLevelUpLearnset, - [SPECIES_MUDBRAY] = sMudbrayLevelUpLearnset, - [SPECIES_MUDSDALE] = sMudsdaleLevelUpLearnset, - [SPECIES_DEWPIDER] = sDewpiderLevelUpLearnset, - [SPECIES_ARAQUANID] = sAraquanidLevelUpLearnset, - [SPECIES_FOMANTIS] = sFomantisLevelUpLearnset, - [SPECIES_LURANTIS] = sLurantisLevelUpLearnset, - [SPECIES_MORELULL] = sMorelullLevelUpLearnset, - [SPECIES_SHIINOTIC] = sShiinoticLevelUpLearnset, - [SPECIES_SALANDIT] = sSalanditLevelUpLearnset, - [SPECIES_SALAZZLE] = sSalazzleLevelUpLearnset, - [SPECIES_STUFFUL] = sStuffulLevelUpLearnset, - [SPECIES_BEWEAR] = sBewearLevelUpLearnset, - [SPECIES_BOUNSWEET] = sBounsweetLevelUpLearnset, - [SPECIES_STEENEE] = sSteeneeLevelUpLearnset, - [SPECIES_TSAREENA] = sTsareenaLevelUpLearnset, - [SPECIES_COMFEY] = sComfeyLevelUpLearnset, - [SPECIES_ORANGURU] = sOranguruLevelUpLearnset, - [SPECIES_PASSIMIAN] = sPassimianLevelUpLearnset, - [SPECIES_WIMPOD] = sWimpodLevelUpLearnset, - [SPECIES_GOLISOPOD] = sGolisopodLevelUpLearnset, - [SPECIES_SANDYGAST] = sSandygastLevelUpLearnset, - [SPECIES_PALOSSAND] = sPalossandLevelUpLearnset, - [SPECIES_PYUKUMUKU] = sPyukumukuLevelUpLearnset, - [SPECIES_TYPE_NULL] = sTypeNullLevelUpLearnset, - [SPECIES_SILVALLY] = sSilvallyLevelUpLearnset, - [SPECIES_MINIOR] = sMiniorLevelUpLearnset, - [SPECIES_KOMALA] = sKomalaLevelUpLearnset, - [SPECIES_TURTONATOR] = sTurtonatorLevelUpLearnset, - [SPECIES_TOGEDEMARU] = sTogedemaruLevelUpLearnset, - [SPECIES_MIMIKYU] = sMimikyuLevelUpLearnset, - [SPECIES_BRUXISH] = sBruxishLevelUpLearnset, - [SPECIES_DRAMPA] = sDrampaLevelUpLearnset, - [SPECIES_DHELMISE] = sDhelmiseLevelUpLearnset, - [SPECIES_JANGMO_O] = sJangmoOLevelUpLearnset, - [SPECIES_HAKAMO_O] = sHakamoOLevelUpLearnset, - [SPECIES_KOMMO_O] = sKommoOLevelUpLearnset, - [SPECIES_TAPU_KOKO] = sTapuKokoLevelUpLearnset, - [SPECIES_TAPU_LELE] = sTapuLeleLevelUpLearnset, - [SPECIES_TAPU_BULU] = sTapuBuluLevelUpLearnset, - [SPECIES_TAPU_FINI] = sTapuFiniLevelUpLearnset, - [SPECIES_COSMOG] = sCosmogLevelUpLearnset, - [SPECIES_COSMOEM] = sCosmoemLevelUpLearnset, - [SPECIES_SOLGALEO] = sSolgaleoLevelUpLearnset, - [SPECIES_LUNALA] = sLunalaLevelUpLearnset, - [SPECIES_NIHILEGO] = sNihilegoLevelUpLearnset, - [SPECIES_BUZZWOLE] = sBuzzwoleLevelUpLearnset, - [SPECIES_PHEROMOSA] = sPheromosaLevelUpLearnset, - [SPECIES_XURKITREE] = sXurkitreeLevelUpLearnset, - [SPECIES_CELESTEELA] = sCelesteelaLevelUpLearnset, - [SPECIES_KARTANA] = sKartanaLevelUpLearnset, - [SPECIES_GUZZLORD] = sGuzzlordLevelUpLearnset, - [SPECIES_NECROZMA] = sNecrozmaLevelUpLearnset, - [SPECIES_MAGEARNA] = sMagearnaLevelUpLearnset, - [SPECIES_MARSHADOW] = sMarshadowLevelUpLearnset, - [SPECIES_POIPOLE] = sPoipoleLevelUpLearnset, - [SPECIES_NAGANADEL] = sNaganadelLevelUpLearnset, - [SPECIES_STAKATAKA] = sStakatakaLevelUpLearnset, - [SPECIES_BLACEPHALON] = sBlacephalonLevelUpLearnset, - [SPECIES_ZERAORA] = sZeraoraLevelUpLearnset, - [SPECIES_MELTAN] = sMeltanLevelUpLearnset, - [SPECIES_MELMETAL] = sMelmetalLevelUpLearnset, -#endif -#if P_GEN_8_POKEMON == TRUE - [SPECIES_GROOKEY] = sGrookeyLevelUpLearnset, - [SPECIES_THWACKEY] = sThwackeyLevelUpLearnset, - [SPECIES_RILLABOOM] = sRillaboomLevelUpLearnset, - [SPECIES_SCORBUNNY] = sScorbunnyLevelUpLearnset, - [SPECIES_RABOOT] = sRabootLevelUpLearnset, - [SPECIES_CINDERACE] = sCinderaceLevelUpLearnset, - [SPECIES_SOBBLE] = sSobbleLevelUpLearnset, - [SPECIES_DRIZZILE] = sDrizzileLevelUpLearnset, - [SPECIES_INTELEON] = sInteleonLevelUpLearnset, - [SPECIES_SKWOVET] = sSkwovetLevelUpLearnset, - [SPECIES_GREEDENT] = sGreedentLevelUpLearnset, - [SPECIES_ROOKIDEE] = sRookideeLevelUpLearnset, - [SPECIES_CORVISQUIRE] = sCorvisquireLevelUpLearnset, - [SPECIES_CORVIKNIGHT] = sCorviknightLevelUpLearnset, - [SPECIES_BLIPBUG] = sBlipbugLevelUpLearnset, - [SPECIES_DOTTLER] = sDottlerLevelUpLearnset, - [SPECIES_ORBEETLE] = sOrbeetleLevelUpLearnset, - [SPECIES_NICKIT] = sNickitLevelUpLearnset, - [SPECIES_THIEVUL] = sThievulLevelUpLearnset, - [SPECIES_GOSSIFLEUR] = sGossifleurLevelUpLearnset, - [SPECIES_ELDEGOSS] = sEldegossLevelUpLearnset, - [SPECIES_WOOLOO] = sWoolooLevelUpLearnset, - [SPECIES_DUBWOOL] = sDubwoolLevelUpLearnset, - [SPECIES_CHEWTLE] = sChewtleLevelUpLearnset, - [SPECIES_DREDNAW] = sDrednawLevelUpLearnset, - [SPECIES_YAMPER] = sYamperLevelUpLearnset, - [SPECIES_BOLTUND] = sBoltundLevelUpLearnset, - [SPECIES_ROLYCOLY] = sRolycolyLevelUpLearnset, - [SPECIES_CARKOL] = sCarkolLevelUpLearnset, - [SPECIES_COALOSSAL] = sCoalossalLevelUpLearnset, - [SPECIES_APPLIN] = sApplinLevelUpLearnset, - [SPECIES_FLAPPLE] = sFlappleLevelUpLearnset, - [SPECIES_APPLETUN] = sAppletunLevelUpLearnset, - [SPECIES_SILICOBRA] = sSilicobraLevelUpLearnset, - [SPECIES_SANDACONDA] = sSandacondaLevelUpLearnset, - [SPECIES_CRAMORANT] = sCramorantLevelUpLearnset, - [SPECIES_ARROKUDA] = sArrokudaLevelUpLearnset, - [SPECIES_BARRASKEWDA] = sBarraskewdaLevelUpLearnset, - [SPECIES_TOXEL] = sToxelLevelUpLearnset, - [SPECIES_TOXTRICITY] = sToxtricityLevelUpLearnset, - [SPECIES_SIZZLIPEDE] = sSizzlipedeLevelUpLearnset, - [SPECIES_CENTISKORCH] = sCentiskorchLevelUpLearnset, - [SPECIES_CLOBBOPUS] = sClobbopusLevelUpLearnset, - [SPECIES_GRAPPLOCT] = sGrapploctLevelUpLearnset, - [SPECIES_SINISTEA] = sSinisteaLevelUpLearnset, - [SPECIES_POLTEAGEIST] = sPolteageistLevelUpLearnset, - [SPECIES_HATENNA] = sHatennaLevelUpLearnset, - [SPECIES_HATTREM] = sHattremLevelUpLearnset, - [SPECIES_HATTERENE] = sHattereneLevelUpLearnset, - [SPECIES_IMPIDIMP] = sImpidimpLevelUpLearnset, - [SPECIES_MORGREM] = sMorgremLevelUpLearnset, - [SPECIES_GRIMMSNARL] = sGrimmsnarlLevelUpLearnset, - [SPECIES_OBSTAGOON] = sObstagoonLevelUpLearnset, - [SPECIES_PERRSERKER] = sPerrserkerLevelUpLearnset, - [SPECIES_CURSOLA] = sCursolaLevelUpLearnset, - [SPECIES_SIRFETCHD] = sSirfetchdLevelUpLearnset, - [SPECIES_MR_RIME] = sMrRimeLevelUpLearnset, - [SPECIES_RUNERIGUS] = sRunerigusLevelUpLearnset, - [SPECIES_MILCERY] = sMilceryLevelUpLearnset, - [SPECIES_ALCREMIE] = sAlcremieLevelUpLearnset, - [SPECIES_FALINKS] = sFalinksLevelUpLearnset, - [SPECIES_PINCURCHIN] = sPincurchinLevelUpLearnset, - [SPECIES_SNOM] = sSnomLevelUpLearnset, - [SPECIES_FROSMOTH] = sFrosmothLevelUpLearnset, - [SPECIES_STONJOURNER] = sStonjournerLevelUpLearnset, - [SPECIES_EISCUE] = sEiscueLevelUpLearnset, - [SPECIES_INDEEDEE] = sIndeedeeLevelUpLearnset, - [SPECIES_MORPEKO] = sMorpekoLevelUpLearnset, - [SPECIES_CUFANT] = sCufantLevelUpLearnset, - [SPECIES_COPPERAJAH] = sCopperajahLevelUpLearnset, - [SPECIES_DRACOZOLT] = sDracozoltLevelUpLearnset, - [SPECIES_ARCTOZOLT] = sArctozoltLevelUpLearnset, - [SPECIES_DRACOVISH] = sDracovishLevelUpLearnset, - [SPECIES_ARCTOVISH] = sArctovishLevelUpLearnset, - [SPECIES_DURALUDON] = sDuraludonLevelUpLearnset, - [SPECIES_DREEPY] = sDreepyLevelUpLearnset, - [SPECIES_DRAKLOAK] = sDrakloakLevelUpLearnset, - [SPECIES_DRAGAPULT] = sDragapultLevelUpLearnset, - [SPECIES_ZACIAN] = sZacianLevelUpLearnset, - [SPECIES_ZAMAZENTA] = sZamazentaLevelUpLearnset, - [SPECIES_ETERNATUS] = sEternatusLevelUpLearnset, - [SPECIES_KUBFU] = sKubfuLevelUpLearnset, - [SPECIES_URSHIFU] = sUrshifuLevelUpLearnset, - [SPECIES_ZARUDE] = sZarudeLevelUpLearnset, - [SPECIES_REGIELEKI] = sRegielekiLevelUpLearnset, - [SPECIES_REGIDRAGO] = sRegidragoLevelUpLearnset, - [SPECIES_GLASTRIER] = sGlastrierLevelUpLearnset, - [SPECIES_SPECTRIER] = sSpectrierLevelUpLearnset, - [SPECIES_CALYREX] = sCalyrexLevelUpLearnset, - [SPECIES_WYRDEER] = sWyrdeerLevelUpLearnset, - [SPECIES_KLEAVOR] = sKleavorLevelUpLearnset, - [SPECIES_URSALUNA] = sUrsalunaLevelUpLearnset, - [SPECIES_BASCULEGION] = sBasculegionLevelUpLearnset, - [SPECIES_SNEASLER] = sSneaslerLevelUpLearnset, - [SPECIES_OVERQWIL] = sOverqwilLevelUpLearnset, - [SPECIES_ENAMORUS] = sEnamorusLevelUpLearnset, -#endif - // Megas - [SPECIES_VENUSAUR_MEGA] = sVenusaurLevelUpLearnset, - [SPECIES_CHARIZARD_MEGA_X] = sCharizardLevelUpLearnset, - [SPECIES_CHARIZARD_MEGA_Y] = sCharizardLevelUpLearnset, - [SPECIES_BLASTOISE_MEGA] = sBlastoiseLevelUpLearnset, - [SPECIES_BEEDRILL_MEGA] = sBeedrillLevelUpLearnset, - [SPECIES_PIDGEOT_MEGA] = sPidgeotLevelUpLearnset, - [SPECIES_ALAKAZAM_MEGA] = sAlakazamLevelUpLearnset, - [SPECIES_SLOWBRO_MEGA] = sSlowbroLevelUpLearnset, - [SPECIES_GENGAR_MEGA] = sGengarLevelUpLearnset, - [SPECIES_KANGASKHAN_MEGA] = sKangaskhanLevelUpLearnset, - [SPECIES_PINSIR_MEGA] = sPinsirLevelUpLearnset, - [SPECIES_GYARADOS_MEGA] = sGyaradosLevelUpLearnset, - [SPECIES_AERODACTYL_MEGA] = sAerodactylLevelUpLearnset, - [SPECIES_MEWTWO_MEGA_X] = sMewtwoLevelUpLearnset, - [SPECIES_MEWTWO_MEGA_Y] = sMewtwoLevelUpLearnset, - [SPECIES_AMPHAROS_MEGA] = sAmpharosLevelUpLearnset, - [SPECIES_STEELIX_MEGA] = sSteelixLevelUpLearnset, - [SPECIES_SCIZOR_MEGA] = sScizorLevelUpLearnset, - [SPECIES_HERACROSS_MEGA] = sHeracrossLevelUpLearnset, - [SPECIES_HOUNDOOM_MEGA] = sHoundoomLevelUpLearnset, - [SPECIES_TYRANITAR_MEGA] = sTyranitarLevelUpLearnset, - [SPECIES_SCEPTILE_MEGA] = sSceptileLevelUpLearnset, - [SPECIES_BLAZIKEN_MEGA] = sBlazikenLevelUpLearnset, - [SPECIES_SWAMPERT_MEGA] = sSwampertLevelUpLearnset, - [SPECIES_GARDEVOIR_MEGA] = sGardevoirLevelUpLearnset, - [SPECIES_SABLEYE_MEGA] = sSableyeLevelUpLearnset, - [SPECIES_MAWILE_MEGA] = sMawileLevelUpLearnset, - [SPECIES_AGGRON_MEGA] = sAggronLevelUpLearnset, - [SPECIES_MEDICHAM_MEGA] = sMedichamLevelUpLearnset, - [SPECIES_MANECTRIC_MEGA] = sManectricLevelUpLearnset, - [SPECIES_SHARPEDO_MEGA] = sSharpedoLevelUpLearnset, - [SPECIES_CAMERUPT_MEGA] = sCameruptLevelUpLearnset, - [SPECIES_ALTARIA_MEGA] = sAltariaLevelUpLearnset, - [SPECIES_BANETTE_MEGA] = sBanetteLevelUpLearnset, - [SPECIES_ABSOL_MEGA] = sAbsolLevelUpLearnset, - [SPECIES_GLALIE_MEGA] = sGlalieLevelUpLearnset, - [SPECIES_SALAMENCE_MEGA] = sSalamenceLevelUpLearnset, - [SPECIES_METAGROSS_MEGA] = sMetagrossLevelUpLearnset, - [SPECIES_LATIAS_MEGA] = sLatiasLevelUpLearnset, - [SPECIES_LATIOS_MEGA] = sLatiosLevelUpLearnset, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_LOPUNNY_MEGA] = sLopunnyLevelUpLearnset, - [SPECIES_GARCHOMP_MEGA] = sGarchompLevelUpLearnset, - [SPECIES_LUCARIO_MEGA] = sLucarioLevelUpLearnset, - [SPECIES_ABOMASNOW_MEGA] = sAbomasnowLevelUpLearnset, - [SPECIES_GALLADE_MEGA] = sGalladeLevelUpLearnset, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_AUDINO_MEGA] = sAudinoLevelUpLearnset, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_DIANCIE_MEGA] = sDiancieLevelUpLearnset, -#endif - // Special Mega + Primals - [SPECIES_RAYQUAZA_MEGA] = sRayquazaLevelUpLearnset, - [SPECIES_KYOGRE_PRIMAL] = sKyogreLevelUpLearnset, - [SPECIES_GROUDON_PRIMAL] = sGroudonLevelUpLearnset, - // Alolan Forms - [SPECIES_RATTATA_ALOLAN] = sRattataAlolanLevelUpLearnset, - [SPECIES_RATICATE_ALOLAN] = sRaticateAlolanLevelUpLearnset, - [SPECIES_RAICHU_ALOLAN] = sRaichuAlolanLevelUpLearnset, - [SPECIES_SANDSHREW_ALOLAN] = sSandshrewAlolanLevelUpLearnset, - [SPECIES_SANDSLASH_ALOLAN] = sSandslashAlolanLevelUpLearnset, - [SPECIES_VULPIX_ALOLAN] = sVulpixAlolanLevelUpLearnset, - [SPECIES_NINETALES_ALOLAN] = sNinetalesAlolanLevelUpLearnset, - [SPECIES_DIGLETT_ALOLAN] = sDiglettAlolanLevelUpLearnset, - [SPECIES_DUGTRIO_ALOLAN] = sDugtrioAlolanLevelUpLearnset, - [SPECIES_MEOWTH_ALOLAN] = sMeowthAlolanLevelUpLearnset, - [SPECIES_PERSIAN_ALOLAN] = sPersianAlolanLevelUpLearnset, - [SPECIES_GEODUDE_ALOLAN] = sGeodudeAlolanLevelUpLearnset, - [SPECIES_GRAVELER_ALOLAN] = sGravelerAlolanLevelUpLearnset, - [SPECIES_GOLEM_ALOLAN] = sGolemAlolanLevelUpLearnset, - [SPECIES_GRIMER_ALOLAN] = sGrimerAlolanLevelUpLearnset, - [SPECIES_MUK_ALOLAN] = sMukAlolanLevelUpLearnset, - [SPECIES_EXEGGUTOR_ALOLAN] = sExeggutorAlolanLevelUpLearnset, - [SPECIES_MAROWAK_ALOLAN] = sMarowakAlolanLevelUpLearnset, - // Galarian Forms - [SPECIES_MEOWTH_GALARIAN] = sMeowthGalarianLevelUpLearnset, - [SPECIES_PONYTA_GALARIAN] = sPonytaGalarianLevelUpLearnset, - [SPECIES_RAPIDASH_GALARIAN] = sRapidashGalarianLevelUpLearnset, - [SPECIES_SLOWPOKE_GALARIAN] = sSlowpokeGalarianLevelUpLearnset, - [SPECIES_SLOWBRO_GALARIAN] = sSlowbroGalarianLevelUpLearnset, - [SPECIES_FARFETCHD_GALARIAN] = sFarfetchdGalarianLevelUpLearnset, - [SPECIES_WEEZING_GALARIAN] = sWeezingGalarianLevelUpLearnset, - [SPECIES_MR_MIME_GALARIAN] = sMrMimeGalarianLevelUpLearnset, - [SPECIES_ARTICUNO_GALARIAN] = sArticunoGalarianLevelUpLearnset, - [SPECIES_ZAPDOS_GALARIAN] = sZapdosGalarianLevelUpLearnset, - [SPECIES_MOLTRES_GALARIAN] = sMoltresGalarianLevelUpLearnset, - [SPECIES_SLOWKING_GALARIAN] = sSlowkingGalarianLevelUpLearnset, - [SPECIES_CORSOLA_GALARIAN] = sCorsolaGalarianLevelUpLearnset, - [SPECIES_ZIGZAGOON_GALARIAN] = sZigzagoonGalarianLevelUpLearnset, - [SPECIES_LINOONE_GALARIAN] = sLinooneGalarianLevelUpLearnset, -#if P_GEN_5_POKEMON == TRUE - [SPECIES_DARUMAKA_GALARIAN] = sDarumakaGalarianLevelUpLearnset, - [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanGalarianLevelUpLearnset, - [SPECIES_YAMASK_GALARIAN] = sYamaskGalarianLevelUpLearnset, - [SPECIES_STUNFISK_GALARIAN] = sStunfiskGalarianLevelUpLearnset, -#endif - // Hisuian Forms - [SPECIES_GROWLITHE_HISUIAN] = sGrowlitheHisuianLevelUpLearnset, - [SPECIES_ARCANINE_HISUIAN] = sArcanineHisuianLevelUpLearnset, - [SPECIES_VOLTORB_HISUIAN] = sVoltorbHisuianLevelUpLearnset, - [SPECIES_ELECTRODE_HISUIAN] = sElectrodeHisuianLevelUpLearnset, - [SPECIES_TYPHLOSION_HISUIAN] = sTyphlosionHisuianLevelUpLearnset, - [SPECIES_QWILFISH_HISUIAN] = sQwilfishHisuianLevelUpLearnset, - [SPECIES_SNEASEL_HISUIAN] = sSneaselHisuianLevelUpLearnset, -#if P_GEN_5_POKEMON == TRUE - [SPECIES_SAMUROTT_HISUIAN] = sSamurottHisuianLevelUpLearnset, - [SPECIES_LILLIGANT_HISUIAN] = sLilligantHisuianLevelUpLearnset, - [SPECIES_ZORUA_HISUIAN] = sZoruaHisuianLevelUpLearnset, - [SPECIES_ZOROARK_HISUIAN] = sZoroarkHisuianLevelUpLearnset, - [SPECIES_BRAVIARY_HISUIAN] = sBraviaryHisuianLevelUpLearnset, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_SLIGGOO_HISUIAN] = sSliggooHisuianLevelUpLearnset, - [SPECIES_GOODRA_HISUIAN] = sGoodraHisuianLevelUpLearnset, - [SPECIES_AVALUGG_HISUIAN] = sAvaluggHisuianLevelUpLearnset, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_DECIDUEYE_HISUIAN] = sDecidueyeHisuianLevelUpLearnset, -#endif - // Misc Forms - // Cosplay Pikachu - [SPECIES_PIKACHU_COSPLAY] = sPikachuLevelUpLearnset, - [SPECIES_PIKACHU_ROCK_STAR] = sPikachuLevelUpLearnset, - [SPECIES_PIKACHU_BELLE] = sPikachuLevelUpLearnset, - [SPECIES_PIKACHU_POP_STAR] = sPikachuLevelUpLearnset, - [SPECIES_PIKACHU_PH_D] = sPikachuLevelUpLearnset, - [SPECIES_PIKACHU_LIBRE] = sPikachuLevelUpLearnset, - // Cap Pikachu - [SPECIES_PIKACHU_ORIGINAL_CAP] = sPikachuLevelUpLearnset, - [SPECIES_PIKACHU_HOENN_CAP] = sPikachuLevelUpLearnset, - [SPECIES_PIKACHU_SINNOH_CAP] = sPikachuLevelUpLearnset, - [SPECIES_PIKACHU_UNOVA_CAP] = sPikachuLevelUpLearnset, - [SPECIES_PIKACHU_KALOS_CAP] = sPikachuLevelUpLearnset, - [SPECIES_PIKACHU_ALOLA_CAP] = sPikachuLevelUpLearnset, - [SPECIES_PIKACHU_PARTNER_CAP] = sPikachuLevelUpLearnset, - [SPECIES_PIKACHU_WORLD_CAP] = sPikachuLevelUpLearnset, - // Pichu - [SPECIES_PICHU_SPIKY_EARED] = sPichuLevelUpLearnset, - // Unown - [SPECIES_UNOWN_B] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_C] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_D] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_E] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_F] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_G] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_H] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_I] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_J] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_K] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_L] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_M] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_N] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_O] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_P] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_Q] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_R] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_S] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_T] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_U] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_V] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_W] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_X] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_Y] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_Z] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_EMARK] = sUnownLevelUpLearnset, - [SPECIES_UNOWN_QMARK] = sUnownLevelUpLearnset, - // Castform - [SPECIES_CASTFORM_SUNNY] = sCastformLevelUpLearnset, - [SPECIES_CASTFORM_RAINY] = sCastformLevelUpLearnset, - [SPECIES_CASTFORM_SNOWY] = sCastformLevelUpLearnset, - // Deoxys - [SPECIES_DEOXYS_ATTACK] = sDeoxysAttackLevelUpLearnset, - [SPECIES_DEOXYS_DEFENSE] = sDeoxysDefenseLevelUpLearnset, - [SPECIES_DEOXYS_SPEED] = sDeoxysSpeedLevelUpLearnset, -#if P_GEN_4_POKEMON == TRUE - // Burmy - [SPECIES_BURMY_SANDY_CLOAK] = sBurmyLevelUpLearnset, - [SPECIES_BURMY_TRASH_CLOAK] = sBurmyLevelUpLearnset, - // Wormadam - [SPECIES_WORMADAM_SANDY_CLOAK] = sWormadamSandyCloakLevelUpLearnset, - [SPECIES_WORMADAM_TRASH_CLOAK] = sWormadamTrashCloakLevelUpLearnset, - // Cherrim - [SPECIES_CHERRIM_SUNSHINE] = sCherrimLevelUpLearnset, - // Shellos - [SPECIES_SHELLOS_EAST_SEA] = sShellosLevelUpLearnset, - // Gastrodon - [SPECIES_GASTRODON_EAST_SEA] = sGastrodonLevelUpLearnset, - // Rotom - [SPECIES_ROTOM_HEAT] = sRotomLevelUpLearnset, - [SPECIES_ROTOM_WASH] = sRotomLevelUpLearnset, - [SPECIES_ROTOM_FROST] = sRotomLevelUpLearnset, - [SPECIES_ROTOM_FAN] = sRotomLevelUpLearnset, - [SPECIES_ROTOM_MOW] = sRotomLevelUpLearnset, - // Origin Forme - [SPECIES_DIALGA_ORIGIN] = sDialgaLevelUpLearnset, - [SPECIES_PALKIA_ORIGIN] = sPalkiaLevelUpLearnset, - [SPECIES_GIRATINA_ORIGIN] = sGiratinaLevelUpLearnset, - // Shaymin - [SPECIES_SHAYMIN_SKY] = sShayminSkyLevelUpLearnset, - // Arceus - [SPECIES_ARCEUS_FIGHTING] = sArceusLevelUpLearnset, - [SPECIES_ARCEUS_FLYING] = sArceusLevelUpLearnset, - [SPECIES_ARCEUS_POISON] = sArceusLevelUpLearnset, - [SPECIES_ARCEUS_GROUND] = sArceusLevelUpLearnset, - [SPECIES_ARCEUS_ROCK] = sArceusLevelUpLearnset, - [SPECIES_ARCEUS_BUG] = sArceusLevelUpLearnset, - [SPECIES_ARCEUS_GHOST] = sArceusLevelUpLearnset, - [SPECIES_ARCEUS_STEEL] = sArceusLevelUpLearnset, - [SPECIES_ARCEUS_FIRE] = sArceusLevelUpLearnset, - [SPECIES_ARCEUS_WATER] = sArceusLevelUpLearnset, - [SPECIES_ARCEUS_GRASS] = sArceusLevelUpLearnset, - [SPECIES_ARCEUS_ELECTRIC] = sArceusLevelUpLearnset, - [SPECIES_ARCEUS_PSYCHIC] = sArceusLevelUpLearnset, - [SPECIES_ARCEUS_ICE] = sArceusLevelUpLearnset, - [SPECIES_ARCEUS_DRAGON] = sArceusLevelUpLearnset, - [SPECIES_ARCEUS_DARK] = sArceusLevelUpLearnset, - [SPECIES_ARCEUS_FAIRY] = sArceusLevelUpLearnset, -#endif -#if P_GEN_5_POKEMON == TRUE - // Basculin - [SPECIES_BASCULIN_BLUE_STRIPED] = sBasculinLevelUpLearnset, - [SPECIES_BASCULIN_WHITE_STRIPED] = sBasculinLevelUpLearnset, - // Darmanitan - [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanLevelUpLearnset, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanGalarianLevelUpLearnset, - // Deerling - [SPECIES_DEERLING_SUMMER] = sDeerlingLevelUpLearnset, - [SPECIES_DEERLING_AUTUMN] = sDeerlingLevelUpLearnset, - [SPECIES_DEERLING_WINTER] = sDeerlingLevelUpLearnset, - // Sawsbuck - [SPECIES_SAWSBUCK_SUMMER] = sSawsbuckLevelUpLearnset, - [SPECIES_SAWSBUCK_AUTUMN] = sSawsbuckLevelUpLearnset, - [SPECIES_SAWSBUCK_WINTER] = sSawsbuckLevelUpLearnset, - // Therian Forms - [SPECIES_TORNADUS_THERIAN] = sTornadusLevelUpLearnset, - [SPECIES_THUNDURUS_THERIAN] = sThundurusLevelUpLearnset, - [SPECIES_LANDORUS_THERIAN] = sLandorusLevelUpLearnset, - // Kyurem - [SPECIES_KYUREM_WHITE] = sKyuremWhiteLevelUpLearnset, - [SPECIES_KYUREM_BLACK] = sKyuremBlackLevelUpLearnset, - // Keldeo - [SPECIES_KELDEO_RESOLUTE] = sKeldeoLevelUpLearnset, - // Meloetta - [SPECIES_MELOETTA_PIROUETTE] = sMeloettaLevelUpLearnset, - // Genesect - [SPECIES_GENESECT_DOUSE_DRIVE] = sGenesectLevelUpLearnset, - [SPECIES_GENESECT_SHOCK_DRIVE] = sGenesectLevelUpLearnset, - [SPECIES_GENESECT_BURN_DRIVE] = sGenesectLevelUpLearnset, - [SPECIES_GENESECT_CHILL_DRIVE] = sGenesectLevelUpLearnset, -#endif -#if P_GEN_6_POKEMON == TRUE - // Greninja - [SPECIES_GRENINJA_BATTLE_BOND] = sGreninjaLevelUpLearnset, - [SPECIES_GRENINJA_ASH] = sGreninjaLevelUpLearnset, - // Vivillon - [SPECIES_VIVILLON_POLAR] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_TUNDRA] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_CONTINENTAL] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_GARDEN] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_ELEGANT] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_MEADOW] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_MODERN] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_MARINE] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_ARCHIPELAGO] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_HIGH_PLAINS] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_SANDSTORM] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_RIVER] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_MONSOON] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_SAVANNA] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_SUN] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_OCEAN] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_JUNGLE] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_FANCY] = sVivillonLevelUpLearnset, - [SPECIES_VIVILLON_POKE_BALL] = sVivillonLevelUpLearnset, - // Flabébé - [SPECIES_FLABEBE_YELLOW_FLOWER] = sFlabebeLevelUpLearnset, - [SPECIES_FLABEBE_ORANGE_FLOWER] = sFlabebeLevelUpLearnset, - [SPECIES_FLABEBE_BLUE_FLOWER] = sFlabebeLevelUpLearnset, - [SPECIES_FLABEBE_WHITE_FLOWER] = sFlabebeLevelUpLearnset, - // Floette - [SPECIES_FLOETTE_YELLOW_FLOWER] = sFloetteLevelUpLearnset, - [SPECIES_FLOETTE_ORANGE_FLOWER] = sFloetteLevelUpLearnset, - [SPECIES_FLOETTE_BLUE_FLOWER] = sFloetteLevelUpLearnset, - [SPECIES_FLOETTE_WHITE_FLOWER] = sFloetteLevelUpLearnset, - [SPECIES_FLOETTE_ETERNAL_FLOWER] = sFloetteEternalFlowerLevelUpLearnset, - // Florges - [SPECIES_FLORGES_YELLOW_FLOWER] = sFlorgesLevelUpLearnset, - [SPECIES_FLORGES_ORANGE_FLOWER] = sFlorgesLevelUpLearnset, - [SPECIES_FLORGES_BLUE_FLOWER] = sFlorgesLevelUpLearnset, - [SPECIES_FLORGES_WHITE_FLOWER] = sFlorgesLevelUpLearnset, - //Furfrou - [SPECIES_FURFROU_HEART_TRIM] = sFurfrouLevelUpLearnset, - [SPECIES_FURFROU_STAR_TRIM] = sFurfrouLevelUpLearnset, - [SPECIES_FURFROU_DIAMOND_TRIM] = sFurfrouLevelUpLearnset, - [SPECIES_FURFROU_DEBUTANTE_TRIM] = sFurfrouLevelUpLearnset, - [SPECIES_FURFROU_MATRON_TRIM] = sFurfrouLevelUpLearnset, - [SPECIES_FURFROU_DANDY_TRIM] = sFurfrouLevelUpLearnset, - [SPECIES_FURFROU_LA_REINE_TRIM] = sFurfrouLevelUpLearnset, - [SPECIES_FURFROU_KABUKI_TRIM] = sFurfrouLevelUpLearnset, - [SPECIES_FURFROU_PHARAOH_TRIM] = sFurfrouLevelUpLearnset, - // Meowstic - [SPECIES_MEOWSTIC_FEMALE] = sMeowsticFemaleLevelUpLearnset, - // Aegislash - [SPECIES_AEGISLASH_BLADE] = sAegislashLevelUpLearnset, - // Pumpkaboo - [SPECIES_PUMPKABOO_SMALL] = sPumpkabooLevelUpLearnset, - [SPECIES_PUMPKABOO_LARGE] = sPumpkabooLevelUpLearnset, - [SPECIES_PUMPKABOO_SUPER] = sPumpkabooLevelUpLearnset, - // Gourgeist - [SPECIES_GOURGEIST_SMALL] = sGourgeistLevelUpLearnset, - [SPECIES_GOURGEIST_LARGE] = sGourgeistLevelUpLearnset, - [SPECIES_GOURGEIST_SUPER] = sGourgeistLevelUpLearnset, - // Xerneas - [SPECIES_XERNEAS_ACTIVE] = sXerneasLevelUpLearnset, - // Zygarde - [SPECIES_ZYGARDE_10] = sZygardeLevelUpLearnset, - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardeLevelUpLearnset, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardeLevelUpLearnset, - [SPECIES_ZYGARDE_COMPLETE] = sZygardeLevelUpLearnset, - // Hoopa - [SPECIES_HOOPA_UNBOUND] = sHoopaUnboundLevelUpLearnset, -#endif -#if P_GEN_7_POKEMON == TRUE - // Oricorio - [SPECIES_ORICORIO_POM_POM] = sOricorioLevelUpLearnset, - [SPECIES_ORICORIO_PAU] = sOricorioLevelUpLearnset, - [SPECIES_ORICORIO_SENSU] = sOricorioLevelUpLearnset, - // Rockruff - [SPECIES_ROCKRUFF_OWN_TEMPO] = sRockruffLevelUpLearnset, - // Lycanroc - [SPECIES_LYCANROC_MIDNIGHT] = sLycanrocMidnightLevelUpLearnset, - [SPECIES_LYCANROC_DUSK] = sLycanrocDuskLevelUpLearnset, - // Wishiwashi - [SPECIES_WISHIWASHI_SCHOOL] = sWishiwashiLevelUpLearnset, - // Silvally - [SPECIES_SILVALLY_FIGHTING] = sSilvallyLevelUpLearnset, - [SPECIES_SILVALLY_FLYING] = sSilvallyLevelUpLearnset, - [SPECIES_SILVALLY_POISON] = sSilvallyLevelUpLearnset, - [SPECIES_SILVALLY_GROUND] = sSilvallyLevelUpLearnset, - [SPECIES_SILVALLY_ROCK] = sSilvallyLevelUpLearnset, - [SPECIES_SILVALLY_BUG] = sSilvallyLevelUpLearnset, - [SPECIES_SILVALLY_GHOST] = sSilvallyLevelUpLearnset, - [SPECIES_SILVALLY_STEEL] = sSilvallyLevelUpLearnset, - [SPECIES_SILVALLY_FIRE] = sSilvallyLevelUpLearnset, - [SPECIES_SILVALLY_WATER] = sSilvallyLevelUpLearnset, - [SPECIES_SILVALLY_GRASS] = sSilvallyLevelUpLearnset, - [SPECIES_SILVALLY_ELECTRIC] = sSilvallyLevelUpLearnset, - [SPECIES_SILVALLY_PSYCHIC] = sSilvallyLevelUpLearnset, - [SPECIES_SILVALLY_ICE] = sSilvallyLevelUpLearnset, - [SPECIES_SILVALLY_DRAGON] = sSilvallyLevelUpLearnset, - [SPECIES_SILVALLY_DARK] = sSilvallyLevelUpLearnset, - [SPECIES_SILVALLY_FAIRY] = sSilvallyLevelUpLearnset, - // Minior - [SPECIES_MINIOR_METEOR_ORANGE] = sMiniorLevelUpLearnset, - [SPECIES_MINIOR_METEOR_YELLOW] = sMiniorLevelUpLearnset, - [SPECIES_MINIOR_METEOR_GREEN] = sMiniorLevelUpLearnset, - [SPECIES_MINIOR_METEOR_BLUE] = sMiniorLevelUpLearnset, - [SPECIES_MINIOR_METEOR_INDIGO] = sMiniorLevelUpLearnset, - [SPECIES_MINIOR_METEOR_VIOLET] = sMiniorLevelUpLearnset, - [SPECIES_MINIOR_CORE_RED] = sMiniorLevelUpLearnset, - [SPECIES_MINIOR_CORE_ORANGE] = sMiniorLevelUpLearnset, - [SPECIES_MINIOR_CORE_YELLOW] = sMiniorLevelUpLearnset, - [SPECIES_MINIOR_CORE_GREEN] = sMiniorLevelUpLearnset, - [SPECIES_MINIOR_CORE_BLUE] = sMiniorLevelUpLearnset, - [SPECIES_MINIOR_CORE_INDIGO] = sMiniorLevelUpLearnset, - [SPECIES_MINIOR_CORE_VIOLET] = sMiniorLevelUpLearnset, - // Mimikyu - [SPECIES_MIMIKYU_BUSTED] = sMimikyuLevelUpLearnset, - // Necrozma - [SPECIES_NECROZMA_DUSK_MANE] = sNecrozmaLevelUpLearnset, - [SPECIES_NECROZMA_DAWN_WINGS] = sNecrozmaLevelUpLearnset, - [SPECIES_NECROZMA_ULTRA] = sNecrozmaLevelUpLearnset, - // Magearna - [SPECIES_MAGEARNA_ORIGINAL_COLOR] = sMagearnaLevelUpLearnset, -#endif -#if P_GEN_8_POKEMON == TRUE - // Cramorant - [SPECIES_CRAMORANT_GULPING] = sCramorantLevelUpLearnset, - [SPECIES_CRAMORANT_GORGING] = sCramorantLevelUpLearnset, - // Toxtricity - [SPECIES_TOXTRICITY_LOW_KEY] = sToxtricityLowKeyLevelUpLearnset, - // Sinistea - [SPECIES_SINISTEA_ANTIQUE] = sSinisteaLevelUpLearnset, - // Polteageist - [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistLevelUpLearnset, - // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_MATCHA_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_MINT_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_LEMON_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_SALTED_CREAM] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_RUBY_SWIRL] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAlcremieLevelUpLearnset, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAlcremieLevelUpLearnset, - // Eiscue - [SPECIES_EISCUE_NOICE_FACE] = sEiscueLevelUpLearnset, - // Indeedee - [SPECIES_INDEEDEE_FEMALE] = sIndeedeeFemaleLevelUpLearnset, - // Morpeko - [SPECIES_MORPEKO_HANGRY] = sMorpekoLevelUpLearnset, - // Zacian - [SPECIES_ZACIAN_CROWNED_SWORD] = sZacianLevelUpLearnset, - // Zamazenta - [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = sZamazentaLevelUpLearnset, - // Eternatus - [SPECIES_ETERNATUS_ETERNAMAX] = sEternatusLevelUpLearnset, - // Urshifu - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = sUrshifuRapidStrikeStyleLevelUpLearnset, - // Zarude - [SPECIES_ZARUDE_DADA] = sZarudeLevelUpLearnset, - // Calyrex - [SPECIES_CALYREX_ICE_RIDER] = sCalyrexIceRiderLevelUpLearnset, - [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexShadowRiderLevelUpLearnset, - // Enamorus - [SPECIES_ENAMORUS_THERIAN] = sEnamorusLevelUpLearnset, - [SPECIES_BASCULEGION_FEMALE] = sBasculegionLevelUpLearnset, -#endif -}; diff --git a/src/data/pokemon/level_up_learnsets.h b/src/data/pokemon/level_up_learnsets.h index 17af6b8888..3325cb2b8a 100644 --- a/src/data/pokemon/level_up_learnsets.h +++ b/src/data/pokemon/level_up_learnsets.h @@ -1,5 +1,12 @@ #define LEVEL_UP_MOVE(lvl, moveLearned) {.move = moveLearned, .level = lvl} +#define LEVEL_UP_END {.move = LEVEL_UP_MOVE_END, .level = 0} +static const struct LevelUpMove sNoneLevelUpLearnset[] = { + LEVEL_UP_MOVE(1, MOVE_POUND), + LEVEL_UP_END +}; + +#if P_FAMILY_BULBASAUR static const struct LevelUpMove sBulbasaurLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 3, MOVE_GROWL), @@ -61,7 +68,9 @@ static const struct LevelUpMove sVenusaurLevelUpLearnset[] = { LEVEL_UP_MOVE(53, MOVE_SOLAR_BEAM), LEVEL_UP_END }; +#endif //P_FAMILY_BULBASAUR +#if P_FAMILY_CHARMANDER static const struct LevelUpMove sCharmanderLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -120,7 +129,9 @@ static const struct LevelUpMove sCharizardLevelUpLearnset[] = { LEVEL_UP_MOVE(77, MOVE_FLARE_BLITZ), LEVEL_UP_END }; +#endif //P_FAMILY_CHARMANDER +#if P_FAMILY_SQUIRTLE static const struct LevelUpMove sSquirtleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), @@ -180,7 +191,9 @@ static const struct LevelUpMove sBlastoiseLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_HYDRO_PUMP), LEVEL_UP_END }; +#endif //P_FAMILY_SQUIRTLE +#if P_FAMILY_CATERPIE static const struct LevelUpMove sCaterpieLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), @@ -215,7 +228,9 @@ static const struct LevelUpMove sButterfreeLevelUpLearnset[] = { LEVEL_UP_MOVE(47, MOVE_QUIVER_DANCE), LEVEL_UP_END }; +#endif //P_FAMILY_CATERPIE +#if P_FAMILY_WEEDLE static const struct LevelUpMove sWeedleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POISON_STING), LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), @@ -247,7 +262,9 @@ static const struct LevelUpMove sBeedrillLevelUpLearnset[] = { LEVEL_UP_MOVE(44, MOVE_FELL_STINGER), LEVEL_UP_END }; +#endif //P_FAMILY_WEEDLE +#if P_FAMILY_PIDGEY static const struct LevelUpMove sPidgeyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), @@ -307,7 +324,9 @@ static const struct LevelUpMove sPidgeotLevelUpLearnset[] = { LEVEL_UP_MOVE(68, MOVE_HURRICANE), LEVEL_UP_END }; +#endif //P_FAMILY_PIDGEY +#if P_FAMILY_RATTATA static const struct LevelUpMove sRattataLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), @@ -347,6 +366,49 @@ static const struct LevelUpMove sRaticateLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_ALOLAN_FORMS +static const struct LevelUpMove sRattataAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 4, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_PURSUIT), + LEVEL_UP_MOVE(16, MOVE_HYPER_FANG), + LEVEL_UP_MOVE(19, MOVE_ASSURANCE), + LEVEL_UP_MOVE(22, MOVE_CRUNCH), + LEVEL_UP_MOVE(25, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(28, MOVE_SUPER_FANG), + LEVEL_UP_MOVE(31, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(34, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRaticateAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 1, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 4, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_PURSUIT), + LEVEL_UP_MOVE(16, MOVE_HYPER_FANG), + LEVEL_UP_MOVE(19, MOVE_ASSURANCE), + LEVEL_UP_MOVE(24, MOVE_CRUNCH), + LEVEL_UP_MOVE(29, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(34, MOVE_SUPER_FANG), + LEVEL_UP_MOVE(39, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(44, MOVE_ENDEAVOR), + LEVEL_UP_END +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_RATTATA + +#if P_FAMILY_SPEAROW static const struct LevelUpMove sSpearowLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -383,7 +445,9 @@ static const struct LevelUpMove sFearowLevelUpLearnset[] = { LEVEL_UP_MOVE(45, MOVE_DRILL_RUN), LEVEL_UP_END }; +#endif //P_FAMILY_SPEAROW +#if P_FAMILY_EKANS static const struct LevelUpMove sEkansLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WRAP), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -432,6 +496,20 @@ static const struct LevelUpMove sArbokLevelUpLearnset[] = { LEVEL_UP_MOVE(63, MOVE_GUNK_SHOT), LEVEL_UP_END }; +#endif //P_FAMILY_EKANS + +#if P_FAMILY_PIKACHU +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sPichuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(13, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(18, MOVE_THUNDER_WAVE), + LEVEL_UP_END +}; +#endif //P_GEN_2_CROSS_EVOS static const struct LevelUpMove sPikachuLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), @@ -463,6 +541,21 @@ static const struct LevelUpMove sRaichuLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_ALOLAN_FORMS +static const struct LevelUpMove sRaichuAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_PSYCHIC), + LEVEL_UP_MOVE( 1, MOVE_PSYCHIC), + LEVEL_UP_MOVE( 1, MOVE_SPEED_SWAP), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_THUNDERBOLT), + LEVEL_UP_END +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_PIKACHU + +#if P_FAMILY_SANDSHREW static const struct LevelUpMove sSandshrewLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), @@ -509,6 +602,43 @@ static const struct LevelUpMove sSandslashLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_ALOLAN_FORMS +static const struct LevelUpMove sSandshrewAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 3, MOVE_BIDE), + LEVEL_UP_MOVE( 5, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 7, MOVE_ICE_BALL), + LEVEL_UP_MOVE( 9, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(11, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(14, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(17, MOVE_SWIFT), + LEVEL_UP_MOVE(20, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(23, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(26, MOVE_SLASH), + LEVEL_UP_MOVE(30, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(34, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(38, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(42, MOVE_HAIL), + LEVEL_UP_MOVE(46, MOVE_BLIZZARD), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSandslashAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_ICICLE_SPEAR), + LEVEL_UP_MOVE( 1, MOVE_ICICLE_SPEAR), + LEVEL_UP_MOVE( 1, MOVE_METAL_BURST), + LEVEL_UP_MOVE( 1, MOVE_ICICLE_CRASH), + LEVEL_UP_MOVE( 1, MOVE_SLASH), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_ICE_BALL), + LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), + LEVEL_UP_END +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_SANDSHREW + +#if P_FAMILY_NIDORAN static const struct LevelUpMove sNidoranFLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_SCRATCH), @@ -602,6 +732,21 @@ static const struct LevelUpMove sNidokingLevelUpLearnset[] = { LEVEL_UP_MOVE(58, MOVE_MEGAHORN), LEVEL_UP_END }; +#endif //P_FAMILY_NIDORAN + +#if P_FAMILY_CLEFAIRY +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sCleffaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 4, MOVE_ENCORE), + LEVEL_UP_MOVE( 7, MOVE_SING), + LEVEL_UP_MOVE(10, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(13, MOVE_COPYCAT), + LEVEL_UP_MOVE(16, MOVE_MAGICAL_LEAF), + LEVEL_UP_END +}; +#endif //P_GEN_2_CROSS_EVOS static const struct LevelUpMove sClefairyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SPOTLIGHT), @@ -639,7 +784,9 @@ static const struct LevelUpMove sClefableLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_METRONOME), LEVEL_UP_END }; +#endif //P_FAMILY_CLEFAIRY +#if P_FAMILY_VULPIX static const struct LevelUpMove sVulpixLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_EMBER), LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), @@ -674,6 +821,58 @@ static const struct LevelUpMove sNinetalesLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_ALOLAN_FORMS +static const struct LevelUpMove sVulpixAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_ROAR), + LEVEL_UP_MOVE( 9, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE(10, MOVE_ICE_SHARD), + LEVEL_UP_MOVE(12, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(15, MOVE_ICY_WIND), + LEVEL_UP_MOVE(18, MOVE_PAYBACK), + LEVEL_UP_MOVE(20, MOVE_MIST), + LEVEL_UP_MOVE(23, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(26, MOVE_HEX), + LEVEL_UP_MOVE(28, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(31, MOVE_EXTRASENSORY), + LEVEL_UP_MOVE(34, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(36, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(39, MOVE_IMPRISON), + LEVEL_UP_MOVE(42, MOVE_BLIZZARD), + LEVEL_UP_MOVE(44, MOVE_GRUDGE), + LEVEL_UP_MOVE(47, MOVE_CAPTIVATE), + LEVEL_UP_MOVE(50, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +static const struct LevelUpMove sNinetalesAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_DAZZLING_GLEAM), + LEVEL_UP_MOVE( 1, MOVE_DAZZLING_GLEAM), + LEVEL_UP_MOVE( 1, MOVE_IMPRISON), + LEVEL_UP_MOVE( 1, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE( 1, MOVE_ICE_BEAM), + LEVEL_UP_MOVE( 1, MOVE_ICE_SHARD), + LEVEL_UP_MOVE( 1, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), + LEVEL_UP_END +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_VULPIX + +#if P_FAMILY_JIGGLYPUFF +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sIgglybuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 3, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 5, MOVE_POUND), + LEVEL_UP_MOVE( 9, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(11, MOVE_COPYCAT), + LEVEL_UP_END +}; +#endif //P_GEN_2_CROSS_EVOS + static const struct LevelUpMove sJigglypuffLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SING), LEVEL_UP_MOVE( 3, MOVE_DEFENSE_CURL), @@ -706,7 +905,9 @@ static const struct LevelUpMove sWigglytuffLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), LEVEL_UP_END }; +#endif //P_FAMILY_JIGGLYPUFF +#if P_FAMILY_ZUBAT static const struct LevelUpMove sZubatLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ABSORB), LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), @@ -749,6 +950,35 @@ static const struct LevelUpMove sGolbatLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sCrobatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_CROSS_POISON), + LEVEL_UP_MOVE( 1, MOVE_CROSS_POISON), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(19, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(24, MOVE_SWIFT), + LEVEL_UP_MOVE(27, MOVE_POISON_FANG), + LEVEL_UP_MOVE(32, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(35, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(40, MOVE_HAZE), + LEVEL_UP_MOVE(43, MOVE_VENOSHOCK), + LEVEL_UP_MOVE(48, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(51, MOVE_QUICK_GUARD), + LEVEL_UP_END +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ZUBAT + +#if P_FAMILY_ODDISH static const struct LevelUpMove sOddishLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ABSORB), LEVEL_UP_MOVE( 1, MOVE_GROWTH), @@ -802,6 +1032,26 @@ static const struct LevelUpMove sVileplumeLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sBellossomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE( 1, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE( 1, MOVE_LEAF_STORM), + LEVEL_UP_MOVE( 1, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE( 1, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(39, MOVE_QUIVER_DANCE), + LEVEL_UP_MOVE(49, MOVE_PETAL_BLIZZARD), + LEVEL_UP_MOVE(59, MOVE_PETAL_DANCE), + LEVEL_UP_MOVE(69, MOVE_LEAF_STORM), + LEVEL_UP_END +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ODDISH + +#if P_FAMILY_PARAS static const struct LevelUpMove sParasLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 6, MOVE_STUN_SPORE), @@ -837,7 +1087,9 @@ static const struct LevelUpMove sParasectLevelUpLearnset[] = { LEVEL_UP_MOVE(66, MOVE_X_SCISSOR), LEVEL_UP_END }; +#endif //P_FAMILY_PARAS +#if P_FAMILY_VENONAT static const struct LevelUpMove sVenonatLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_DISABLE), @@ -881,7 +1133,9 @@ static const struct LevelUpMove sVenomothLevelUpLearnset[] = { LEVEL_UP_MOVE(63, MOVE_QUIVER_DANCE), LEVEL_UP_END }; +#endif //P_FAMILY_VENONAT +#if P_FAMILY_DIGLETT static const struct LevelUpMove sDiglettLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), LEVEL_UP_MOVE( 1, MOVE_SCRATCH), @@ -924,6 +1178,52 @@ static const struct LevelUpMove sDugtrioLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_ALOLAN_FORMS +static const struct LevelUpMove sDiglettAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(10, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(14, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(18, MOVE_BULLDOZE), + LEVEL_UP_MOVE(22, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(25, MOVE_MUD_BOMB), + LEVEL_UP_MOVE(28, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(31, MOVE_DIG), + LEVEL_UP_MOVE(35, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(39, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(43, MOVE_FISSURE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDugtrioAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 1, MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 1, MOVE_ROTOTILLER), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE( 1, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(10, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(14, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(18, MOVE_BULLDOZE), + LEVEL_UP_MOVE(22, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(25, MOVE_MUD_BOMB), + LEVEL_UP_MOVE(30, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(35, MOVE_DIG), + LEVEL_UP_MOVE(41, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(47, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(53, MOVE_FISSURE), + LEVEL_UP_END +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_DIGLETT + +#if P_FAMILY_MEOWTH static const struct LevelUpMove sMeowthLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -968,6 +1268,97 @@ static const struct LevelUpMove sPersianLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_ALOLAN_FORMS +static const struct LevelUpMove sMeowthAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_TAUNT), + LEVEL_UP_MOVE(30, MOVE_PAY_DAY), + LEVEL_UP_MOVE(33, MOVE_SLASH), + LEVEL_UP_MOVE(38, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(41, MOVE_ASSURANCE), + LEVEL_UP_MOVE(46, MOVE_CAPTIVATE), + LEVEL_UP_MOVE(49, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(50, MOVE_FEINT), + LEVEL_UP_MOVE(55, MOVE_DARK_PULSE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPersianAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SWIFT), + LEVEL_UP_MOVE( 1, MOVE_SWIFT), + LEVEL_UP_MOVE( 1, MOVE_QUASH), + LEVEL_UP_MOVE( 1, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE( 1, MOVE_SWITCHEROO), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_FAKE_OUT), + LEVEL_UP_MOVE( 6, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_TAUNT), + LEVEL_UP_MOVE(32, MOVE_POWER_GEM), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(44, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(49, MOVE_ASSURANCE), + LEVEL_UP_MOVE(56, MOVE_CAPTIVATE), + LEVEL_UP_MOVE(61, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(65, MOVE_FEINT), + LEVEL_UP_MOVE(69, MOVE_DARK_PULSE), + LEVEL_UP_END +}; +#endif //P_ALOLAN_FORMS + +#if P_GALARIAN_FORMS +static const struct LevelUpMove sMeowthGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FAKE_OUT), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE( 8, MOVE_SCRATCH), + LEVEL_UP_MOVE(12, MOVE_PAY_DAY), + LEVEL_UP_MOVE(16, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(20, MOVE_TAUNT), + LEVEL_UP_MOVE(24, MOVE_SWAGGER), + LEVEL_UP_MOVE(29, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(32, MOVE_SCREECH), + LEVEL_UP_MOVE(36, MOVE_SLASH), + LEVEL_UP_MOVE(40, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(44, MOVE_THRASH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPerrserkerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_IRON_HEAD), + LEVEL_UP_MOVE( 1, MOVE_IRON_HEAD), + LEVEL_UP_MOVE( 1, MOVE_METAL_BURST), + LEVEL_UP_MOVE( 1, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 1, MOVE_FAKE_OUT), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE(12, MOVE_PAY_DAY), + LEVEL_UP_MOVE(16, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(20, MOVE_TAUNT), + LEVEL_UP_MOVE(24, MOVE_SWAGGER), + LEVEL_UP_MOVE(31, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(36, MOVE_SCREECH), + LEVEL_UP_MOVE(42, MOVE_SLASH), + LEVEL_UP_MOVE(48, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(54, MOVE_THRASH), + LEVEL_UP_END +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MEOWTH + +#if P_FAMILY_PSYDUCK static const struct LevelUpMove sPsyduckLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), LEVEL_UP_MOVE( 1, MOVE_SCRATCH), @@ -1011,7 +1402,9 @@ static const struct LevelUpMove sGolduckLevelUpLearnset[] = { LEVEL_UP_MOVE(51, MOVE_WONDER_ROOM), LEVEL_UP_END }; +#endif //P_FAMILY_PSYDUCK +#if P_FAMILY_MANKEY static const struct LevelUpMove sMankeyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_COVET), LEVEL_UP_MOVE( 1, MOVE_SCRATCH), @@ -1061,6 +1454,33 @@ static const struct LevelUpMove sPrimeapeLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_9_CROSS_EVOS +static const struct LevelUpMove sAnnihilapeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_COUNTER), + LEVEL_UP_MOVE( 1, MOVE_FLING), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 5, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 8, MOVE_LOW_KICK), + LEVEL_UP_MOVE(12, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(17, MOVE_SWAGGER), + LEVEL_UP_MOVE(22, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(26, MOVE_ASSURANCE), + LEVEL_UP_MOVE(30, MOVE_THRASH), + LEVEL_UP_MOVE(35, MOVE_RAGE_FIST), + LEVEL_UP_MOVE(39, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE(44, MOVE_SCREECH), + LEVEL_UP_MOVE(48, MOVE_STOMPING_TANTRUM), + LEVEL_UP_MOVE(53, MOVE_OUTRAGE), + LEVEL_UP_MOVE(57, MOVE_FINAL_GAMBIT), + LEVEL_UP_END +}; +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_MANKEY + +#if P_FAMILY_GROWLITHE static const struct LevelUpMove sGrowlitheLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BITE), LEVEL_UP_MOVE( 1, MOVE_ROAR), @@ -1093,6 +1513,52 @@ static const struct LevelUpMove sArcanineLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_HISUIAN_FORMS +static const struct LevelUpMove sGrowlitheHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 4, MOVE_HOWL), + LEVEL_UP_MOVE( 8, MOVE_BITE), + LEVEL_UP_MOVE(12, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(16, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(24, MOVE_FIRE_FANG), + LEVEL_UP_MOVE(28, MOVE_RETALIATE), + LEVEL_UP_MOVE(32, MOVE_CRUNCH), + LEVEL_UP_MOVE(36, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(40, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(44, MOVE_ROAR), + LEVEL_UP_MOVE(48, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(52, MOVE_REVERSAL), + LEVEL_UP_MOVE(56, MOVE_FLARE_BLITZ), + LEVEL_UP_END +}; + +static const struct LevelUpMove sArcanineHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_EXTREME_SPEED), + LEVEL_UP_MOVE( 1, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE( 1, MOVE_FIRE_FANG), + LEVEL_UP_MOVE( 1, MOVE_FLARE_BLITZ), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1, MOVE_CRUNCH), + LEVEL_UP_MOVE( 1, MOVE_REVERSAL), + LEVEL_UP_MOVE( 1, MOVE_RETALIATE), + LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 1, MOVE_AGILITY), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_ROAR), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 5, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(64, MOVE_RAGING_FURY), + LEVEL_UP_END +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_GROWLITHE + +#if P_FAMILY_POLIWAG static const struct LevelUpMove sPoliwagLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), LEVEL_UP_MOVE( 5, MOVE_WATER_GUN), @@ -1142,6 +1608,21 @@ static const struct LevelUpMove sPoliwrathLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sPolitoedLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE( 1, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(27, MOVE_SWAGGER), + LEVEL_UP_MOVE(37, MOVE_BOUNCE), + LEVEL_UP_MOVE(48, MOVE_HYPER_VOICE), + LEVEL_UP_END +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_POLIWAG + +#if P_FAMILY_ABRA static const struct LevelUpMove sAbraLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TELEPORT), LEVEL_UP_END @@ -1188,7 +1669,9 @@ static const struct LevelUpMove sAlakazamLevelUpLearnset[] = { LEVEL_UP_MOVE(46, MOVE_TRICK), LEVEL_UP_END }; +#endif //P_FAMILY_ABRA +#if P_FAMILY_MACHOP static const struct LevelUpMove sMachopLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -1258,7 +1741,9 @@ static const struct LevelUpMove sMachampLevelUpLearnset[] = { LEVEL_UP_MOVE(57, MOVE_DYNAMIC_PUNCH), LEVEL_UP_END }; +#endif //P_FAMILY_MACHOP +#if P_FAMILY_BELLSPROUT static const struct LevelUpMove sBellsproutLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), LEVEL_UP_MOVE( 7, MOVE_GROWTH), @@ -1311,7 +1796,9 @@ static const struct LevelUpMove sVictreebelLevelUpLearnset[] = { LEVEL_UP_MOVE(44, MOVE_LEAF_BLADE), LEVEL_UP_END }; +#endif //P_FAMILY_BELLSPROUT +#if P_FAMILY_TENTACOOL static const struct LevelUpMove sTentacoolLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POISON_STING), LEVEL_UP_MOVE( 4, MOVE_SUPERSONIC), @@ -1358,7 +1845,9 @@ static const struct LevelUpMove sTentacruelLevelUpLearnset[] = { LEVEL_UP_MOVE(56, MOVE_WRING_OUT), LEVEL_UP_END }; +#endif //P_FAMILY_TENTACOOL +#if P_FAMILY_GEODUDE static const struct LevelUpMove sGeodudeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), @@ -1425,6 +1914,76 @@ static const struct LevelUpMove sGolemLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_ALOLAN_FORMS +static const struct LevelUpMove sGeodudeAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 4, MOVE_CHARGE), + LEVEL_UP_MOVE( 6, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE(10, MOVE_ROLLOUT), + LEVEL_UP_MOVE(12, MOVE_SPARK), + LEVEL_UP_MOVE(16, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(18, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(22, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(24, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(28, MOVE_STEALTH_ROCK), + LEVEL_UP_MOVE(30, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(34, MOVE_DISCHARGE), + LEVEL_UP_MOVE(36, MOVE_EXPLOSION), + LEVEL_UP_MOVE(40, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(42, MOVE_STONE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGravelerAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_CHARGE), + LEVEL_UP_MOVE( 1, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE( 4, MOVE_CHARGE), + LEVEL_UP_MOVE( 6, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE(10, MOVE_ROLLOUT), + LEVEL_UP_MOVE(12, MOVE_SPARK), + LEVEL_UP_MOVE(16, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(18, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(22, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(24, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(30, MOVE_STEALTH_ROCK), + LEVEL_UP_MOVE(34, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(40, MOVE_DISCHARGE), + LEVEL_UP_MOVE(44, MOVE_EXPLOSION), + LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(54, MOVE_STONE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGolemAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_CHARGE), + LEVEL_UP_MOVE( 1, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE( 4, MOVE_CHARGE), + LEVEL_UP_MOVE( 6, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE(10, MOVE_STEAMROLLER), + LEVEL_UP_MOVE(12, MOVE_SPARK), + LEVEL_UP_MOVE(16, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(18, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(22, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(24, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(30, MOVE_STEALTH_ROCK), + LEVEL_UP_MOVE(34, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(40, MOVE_DISCHARGE), + LEVEL_UP_MOVE(44, MOVE_EXPLOSION), + LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(54, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(60, MOVE_HEAVY_SLAM), + LEVEL_UP_END +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GEODUDE + +#if P_FAMILY_PONYTA static const struct LevelUpMove sPonytaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -1467,6 +2026,48 @@ static const struct LevelUpMove sRapidashLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GALARIAN_FORMS +static const struct LevelUpMove sPonytaGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_CONFUSION), + LEVEL_UP_MOVE(15, MOVE_FAIRY_WIND), + LEVEL_UP_MOVE(20, MOVE_AGILITY), + LEVEL_UP_MOVE(25, MOVE_PSYBEAM), + LEVEL_UP_MOVE(30, MOVE_STOMP), + LEVEL_UP_MOVE(35, MOVE_HEAL_PULSE), + LEVEL_UP_MOVE(41, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(45, MOVE_DAZZLING_GLEAM), + LEVEL_UP_MOVE(50, MOVE_PSYCHIC), + LEVEL_UP_MOVE(55, MOVE_HEALING_WISH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRapidashGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_PSYCHO_CUT), + LEVEL_UP_MOVE( 1, MOVE_PSYCHO_CUT), + LEVEL_UP_MOVE( 1, MOVE_MEGAHORN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(15, MOVE_FAIRY_WIND), + LEVEL_UP_MOVE(20, MOVE_AGILITY), + LEVEL_UP_MOVE(25, MOVE_PSYBEAM), + LEVEL_UP_MOVE(30, MOVE_STOMP), + LEVEL_UP_MOVE(35, MOVE_HEAL_PULSE), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(49, MOVE_DAZZLING_GLEAM), + LEVEL_UP_MOVE(56, MOVE_PSYCHIC), + LEVEL_UP_MOVE(63, MOVE_HEALING_WISH), + LEVEL_UP_END +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_PONYTA + +#if P_FAMILY_SLOWPOKE static const struct LevelUpMove sSlowpokeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CURSE), LEVEL_UP_MOVE( 1, MOVE_YAWN), @@ -1511,6 +2112,108 @@ static const struct LevelUpMove sSlowbroLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sSlowkingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HEAL_PULSE), + LEVEL_UP_MOVE( 1, MOVE_POWER_GEM), + LEVEL_UP_MOVE( 1, MOVE_HIDDEN_POWER), + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_WATER_GUN), + LEVEL_UP_MOVE(14, MOVE_CONFUSION), + LEVEL_UP_MOVE(19, MOVE_DISABLE), + LEVEL_UP_MOVE(23, MOVE_HEADBUTT), + LEVEL_UP_MOVE(28, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(32, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(36, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(41, MOVE_SWAGGER), + LEVEL_UP_MOVE(45, MOVE_PSYCHIC), + LEVEL_UP_MOVE(49, MOVE_TRUMP_CARD), + LEVEL_UP_MOVE(54, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(58, MOVE_HEAL_PULSE), + LEVEL_UP_END +}; +#endif //P_GEN_2_CROSS_EVOS + +#if P_GALARIAN_FORMS +static const struct LevelUpMove sSlowpokeGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 3, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_ACID), + LEVEL_UP_MOVE( 9, MOVE_YAWN), + LEVEL_UP_MOVE(12, MOVE_CONFUSION), + LEVEL_UP_MOVE(15, MOVE_DISABLE), + LEVEL_UP_MOVE(18, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(21, MOVE_HEADBUTT), + LEVEL_UP_MOVE(24, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(27, MOVE_AMNESIA), + LEVEL_UP_MOVE(30, MOVE_SURF), + LEVEL_UP_MOVE(33, MOVE_SLACK_OFF), + LEVEL_UP_MOVE(36, MOVE_PSYCHIC), + LEVEL_UP_MOVE(39, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(42, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(45, MOVE_HEAL_PULSE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSlowbroGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SHELL_SIDE_ARM), + LEVEL_UP_MOVE( 1, MOVE_SHELL_SIDE_ARM), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ACID), + LEVEL_UP_MOVE( 9, MOVE_YAWN), + LEVEL_UP_MOVE(12, MOVE_CONFUSION), + LEVEL_UP_MOVE(15, MOVE_DISABLE), + LEVEL_UP_MOVE(18, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(21, MOVE_HEADBUTT), + LEVEL_UP_MOVE(24, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(27, MOVE_AMNESIA), + LEVEL_UP_MOVE(30, MOVE_SURF), + LEVEL_UP_MOVE(33, MOVE_SLACK_OFF), + LEVEL_UP_MOVE(36, MOVE_PSYCHIC), + LEVEL_UP_MOVE(39, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(42, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(45, MOVE_HEAL_PULSE), + LEVEL_UP_END +}; + +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sSlowkingGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_EERIE_SPELL), + LEVEL_UP_MOVE( 1, MOVE_EERIE_SPELL), + LEVEL_UP_MOVE( 1, MOVE_POWER_GEM), + LEVEL_UP_MOVE( 1, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE( 1, MOVE_SWAGGER), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ACID), + LEVEL_UP_MOVE( 9, MOVE_YAWN), + LEVEL_UP_MOVE(12, MOVE_CONFUSION), + LEVEL_UP_MOVE(15, MOVE_DISABLE), + LEVEL_UP_MOVE(18, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(21, MOVE_HEADBUTT), + LEVEL_UP_MOVE(24, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(27, MOVE_AMNESIA), + LEVEL_UP_MOVE(30, MOVE_SURF), + LEVEL_UP_MOVE(33, MOVE_SLACK_OFF), + LEVEL_UP_MOVE(36, MOVE_PSYCHIC), + LEVEL_UP_MOVE(39, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(42, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(45, MOVE_HEAL_PULSE), + LEVEL_UP_END +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_SLOWPOKE + +#if P_FAMILY_MAGNEMITE static const struct LevelUpMove sMagnemiteLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), @@ -1561,6 +2264,40 @@ static const struct LevelUpMove sMagnetonLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sMagnezoneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 1, MOVE_MAGNETIC_FLUX), + LEVEL_UP_MOVE( 1, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 1, MOVE_BARRIER), + LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 5, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 7, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(11, MOVE_MAGNET_BOMB), + LEVEL_UP_MOVE(13, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(17, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(19, MOVE_SPARK), + LEVEL_UP_MOVE(23, MOVE_MIRROR_SHOT), + LEVEL_UP_MOVE(25, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(29, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(33, MOVE_FLASH_CANNON), + LEVEL_UP_MOVE(39, MOVE_SCREECH), + LEVEL_UP_MOVE(43, MOVE_DISCHARGE), + LEVEL_UP_MOVE(49, MOVE_LOCK_ON), + LEVEL_UP_MOVE(53, MOVE_MAGNET_RISE), + LEVEL_UP_MOVE(59, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(63, MOVE_ZAP_CANNON), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGNEMITE + +#if P_FAMILY_FARFETCHD static const struct LevelUpMove sFarfetchdLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BRAVE_BIRD), LEVEL_UP_MOVE( 1, MOVE_POISON_JAB), @@ -1584,6 +2321,52 @@ static const struct LevelUpMove sFarfetchdLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GALARIAN_FORMS +static const struct LevelUpMove sFarfetchdGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_LEER), + LEVEL_UP_MOVE(10, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(15, MOVE_ROCK_SMASH), + LEVEL_UP_MOVE(20, MOVE_BRUTAL_SWING), + LEVEL_UP_MOVE(25, MOVE_DETECT), + LEVEL_UP_MOVE(30, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(35, MOVE_DEFOG), + LEVEL_UP_MOVE(40, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(45, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(50, MOVE_SLAM), + LEVEL_UP_MOVE(55, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(60, MOVE_FINAL_GAMBIT), + LEVEL_UP_MOVE(65, MOVE_BRAVE_BIRD), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSirfetchdLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 1, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 1, MOVE_FIRST_IMPRESSION), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(15, MOVE_ROCK_SMASH), + LEVEL_UP_MOVE(20, MOVE_BRUTAL_SWING), + LEVEL_UP_MOVE(25, MOVE_DETECT), + LEVEL_UP_MOVE(30, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(35, MOVE_DEFOG), + LEVEL_UP_MOVE(40, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(45, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(50, MOVE_SLAM), + LEVEL_UP_MOVE(55, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(60, MOVE_FINAL_GAMBIT), + LEVEL_UP_MOVE(65, MOVE_BRAVE_BIRD), + LEVEL_UP_MOVE(70, MOVE_METEOR_ASSAULT), + LEVEL_UP_END +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_FARFETCHD + +#if P_FAMILY_DODUO static const struct LevelUpMove sDoduoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -1627,7 +2410,9 @@ static const struct LevelUpMove sDodrioLevelUpLearnset[] = { LEVEL_UP_MOVE(56, MOVE_THRASH), LEVEL_UP_END }; +#endif //P_FAMILY_DODUO +#if P_FAMILY_SEEL static const struct LevelUpMove sSeelLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), LEVEL_UP_MOVE( 3, MOVE_GROWL), @@ -1674,7 +2459,9 @@ static const struct LevelUpMove sDewgongLevelUpLearnset[] = { LEVEL_UP_MOVE(65, MOVE_HAIL), LEVEL_UP_END }; +#endif //P_FAMILY_SEEL +#if P_FAMILY_GRIMER static const struct LevelUpMove sGrimerLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), @@ -1719,6 +2506,54 @@ static const struct LevelUpMove sMukLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_ALOLAN_FORMS +static const struct LevelUpMove sGrimerAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_BITE), + LEVEL_UP_MOVE(12, MOVE_DISABLE), + LEVEL_UP_MOVE(15, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE(18, MOVE_POISON_FANG), + LEVEL_UP_MOVE(21, MOVE_MINIMIZE), + LEVEL_UP_MOVE(26, MOVE_FLING), + LEVEL_UP_MOVE(29, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(32, MOVE_CRUNCH), + LEVEL_UP_MOVE(37, MOVE_SCREECH), + LEVEL_UP_MOVE(40, MOVE_GUNK_SHOT), + LEVEL_UP_MOVE(43, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(46, MOVE_BELCH), + LEVEL_UP_MOVE(48, MOVE_MEMENTO), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMukAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_VENOM_DRENCH), + LEVEL_UP_MOVE( 1, MOVE_VENOM_DRENCH), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_BITE), + LEVEL_UP_MOVE(12, MOVE_DISABLE), + LEVEL_UP_MOVE(15, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE(18, MOVE_POISON_FANG), + LEVEL_UP_MOVE(21, MOVE_MINIMIZE), + LEVEL_UP_MOVE(26, MOVE_FLING), + LEVEL_UP_MOVE(29, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(32, MOVE_CRUNCH), + LEVEL_UP_MOVE(37, MOVE_SCREECH), + LEVEL_UP_MOVE(40, MOVE_GUNK_SHOT), + LEVEL_UP_MOVE(46, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(52, MOVE_BELCH), + LEVEL_UP_MOVE(57, MOVE_MEMENTO), + LEVEL_UP_END +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GRIMER + +#if P_FAMILY_SHELLDER static const struct LevelUpMove sShellderLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), @@ -1753,7 +2588,9 @@ static const struct LevelUpMove sCloysterLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_ICICLE_CRASH), LEVEL_UP_END }; +#endif //P_FAMILY_SHELLDER +#if P_FAMILY_GASTLY static const struct LevelUpMove sGastlyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), LEVEL_UP_MOVE( 1, MOVE_LICK), @@ -1816,7 +2653,9 @@ static const struct LevelUpMove sGengarLevelUpLearnset[] = { LEVEL_UP_MOVE(61, MOVE_NIGHTMARE), LEVEL_UP_END }; +#endif //P_FAMILY_GASTLY +#if P_FAMILY_ONIX static const struct LevelUpMove sOnixLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -1843,6 +2682,39 @@ static const struct LevelUpMove sOnixLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sSteelixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_FANG), + LEVEL_UP_MOVE( 1, MOVE_ICE_FANG), + LEVEL_UP_MOVE( 1, MOVE_FIRE_FANG), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_BIND), + LEVEL_UP_MOVE( 4, MOVE_CURSE), + LEVEL_UP_MOVE( 7, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(10, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(13, MOVE_RAGE), + LEVEL_UP_MOVE(16, MOVE_STEALTH_ROCK), + LEVEL_UP_MOVE(19, MOVE_AUTOTOMIZE), + LEVEL_UP_MOVE(20, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(22, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(25, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(28, MOVE_SLAM), + LEVEL_UP_MOVE(31, MOVE_SCREECH), + LEVEL_UP_MOVE(34, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(37, MOVE_CRUNCH), + LEVEL_UP_MOVE(40, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(43, MOVE_DIG), + LEVEL_UP_MOVE(46, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(52, MOVE_SANDSTORM), + LEVEL_UP_END +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ONIX + +#if P_FAMILY_DROWZEE static const struct LevelUpMove sDrowzeeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), @@ -1890,7 +2762,9 @@ static const struct LevelUpMove sHypnoLevelUpLearnset[] = { LEVEL_UP_MOVE(61, MOVE_FUTURE_SIGHT), LEVEL_UP_END }; +#endif //P_FAMILY_DROWZEE +#if P_FAMILY_KRABBY static const struct LevelUpMove sKrabbyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), LEVEL_UP_MOVE( 1, MOVE_BUBBLE), @@ -1931,7 +2805,9 @@ static const struct LevelUpMove sKinglerLevelUpLearnset[] = { LEVEL_UP_MOVE(63, MOVE_FLAIL), LEVEL_UP_END }; +#endif //P_FAMILY_KRABBY +#if P_FAMILY_VOLTORB static const struct LevelUpMove sVoltorbLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CHARGE), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -1977,6 +2853,53 @@ static const struct LevelUpMove sElectrodeLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_HISUIAN_FORMS +static const struct LevelUpMove sVoltorbHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CHARGE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 6, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 9, MOVE_BULLET_SEED), + LEVEL_UP_MOVE(11, MOVE_ROLLOUT), + LEVEL_UP_MOVE(13, MOVE_SCREECH), + LEVEL_UP_MOVE(16, MOVE_CHARGE_BEAM), + LEVEL_UP_MOVE(20, MOVE_SWIFT), + LEVEL_UP_MOVE(22, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(26, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(29, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(34, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(34, MOVE_DISCHARGE), + LEVEL_UP_MOVE(41, MOVE_EXPLOSION), + LEVEL_UP_MOVE(46, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(50, MOVE_GRASSY_TERRAIN), + LEVEL_UP_END +}; + +static const struct LevelUpMove sElectrodeHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_CHLOROBLAST), + LEVEL_UP_MOVE( 1, MOVE_CHARGE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 6, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 9, MOVE_BULLET_SEED), + LEVEL_UP_MOVE(11, MOVE_ROLLOUT), + LEVEL_UP_MOVE(13, MOVE_SCREECH), + LEVEL_UP_MOVE(16, MOVE_CHARGE_BEAM), + LEVEL_UP_MOVE(20, MOVE_SWIFT), + LEVEL_UP_MOVE(22, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(26, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(29, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(34, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(34, MOVE_DISCHARGE), + LEVEL_UP_MOVE(41, MOVE_EXPLOSION), + LEVEL_UP_MOVE(46, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(50, MOVE_GRASSY_TERRAIN), + LEVEL_UP_END +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_VOLTORB + +#if P_FAMILY_EXEGGCUTE static const struct LevelUpMove sExeggcuteLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BARRAGE), LEVEL_UP_MOVE( 1, MOVE_UPROAR), @@ -2010,6 +2933,24 @@ static const struct LevelUpMove sExeggutorLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_ALOLAN_FORMS +static const struct LevelUpMove sExeggutorAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_DRAGON_HAMMER), + LEVEL_UP_MOVE( 1, MOVE_DRAGON_HAMMER), + LEVEL_UP_MOVE( 1, MOVE_SEED_BOMB), + LEVEL_UP_MOVE( 1, MOVE_BARRAGE), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(17, MOVE_PSYSHOCK), + LEVEL_UP_MOVE(27, MOVE_EGG_BOMB), + LEVEL_UP_MOVE(37, MOVE_WOOD_HAMMER), + LEVEL_UP_MOVE(47, MOVE_LEAF_STORM), + LEVEL_UP_END +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_EXEGGCUTE + +#if P_FAMILY_CUBONE static const struct LevelUpMove sCuboneLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 3, MOVE_TAIL_WHIP), @@ -2053,6 +2994,43 @@ static const struct LevelUpMove sMarowakLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_ALOLAN_FORMS +static const struct LevelUpMove sMarowakAlolanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_BONE_CLUB), + LEVEL_UP_MOVE( 1, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE( 3, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_BONE_CLUB), + LEVEL_UP_MOVE(11, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(13, MOVE_LEER), + LEVEL_UP_MOVE(17, MOVE_HEX), + LEVEL_UP_MOVE(21, MOVE_BONEMERANG), + LEVEL_UP_MOVE(23, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(27, MOVE_SHADOW_BONE), + LEVEL_UP_MOVE(33, MOVE_THRASH), + LEVEL_UP_MOVE(37, MOVE_FLING), + LEVEL_UP_MOVE(43, MOVE_STOMPING_TANTRUM), + LEVEL_UP_MOVE(49, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(53, MOVE_FLARE_BLITZ), + LEVEL_UP_MOVE(59, MOVE_RETALIATE), + LEVEL_UP_MOVE(65, MOVE_BONE_RUSH), + LEVEL_UP_END +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_CUBONE + +#if P_FAMILY_HITMONS +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sTyrogueLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1, MOVE_FAKE_OUT), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_END +}; +#endif //P_GEN_2_CROSS_EVOS + static const struct LevelUpMove sHitmonleeLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_DOUBLE_KICK), LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), @@ -2110,6 +3088,37 @@ static const struct LevelUpMove sHitmonchanLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sHitmontopLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_ROLLING_KICK), + LEVEL_UP_MOVE( 1, MOVE_ROLLING_KICK), + LEVEL_UP_MOVE( 1, MOVE_ENDEAVOR), + LEVEL_UP_MOVE( 1, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE( 1, MOVE_DETECT), + LEVEL_UP_MOVE( 1, MOVE_REVENGE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_PURSUIT), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(10, MOVE_PURSUIT), + LEVEL_UP_MOVE(15, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(19, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(24, MOVE_FEINT), + LEVEL_UP_MOVE(28, MOVE_COUNTER), + LEVEL_UP_MOVE(33, MOVE_TRIPLE_KICK), + LEVEL_UP_MOVE(37, MOVE_AGILITY), + LEVEL_UP_MOVE(42, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(46, MOVE_WIDE_GUARD), + LEVEL_UP_MOVE(46, MOVE_QUICK_GUARD), + LEVEL_UP_MOVE(50, MOVE_DETECT), + LEVEL_UP_MOVE(55, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE(60, MOVE_ENDEAVOR), + LEVEL_UP_END +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HITMONS + +#if P_FAMILY_LICKITUNG static const struct LevelUpMove sLickitungLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LICK), LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), @@ -2129,6 +3138,32 @@ static const struct LevelUpMove sLickitungLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sLickilickyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRING_OUT), + LEVEL_UP_MOVE( 1, MOVE_POWER_WHIP), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 9, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(13, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(17, MOVE_WRAP), + LEVEL_UP_MOVE(21, MOVE_STOMP), + LEVEL_UP_MOVE(25, MOVE_DISABLE), + LEVEL_UP_MOVE(29, MOVE_SLAM), + LEVEL_UP_MOVE(33, MOVE_ROLLOUT), + LEVEL_UP_MOVE(37, MOVE_CHIP_AWAY), + LEVEL_UP_MOVE(41, MOVE_ME_FIRST), + LEVEL_UP_MOVE(45, MOVE_REFRESH), + LEVEL_UP_MOVE(49, MOVE_SCREECH), + LEVEL_UP_MOVE(53, MOVE_POWER_WHIP), + LEVEL_UP_MOVE(57, MOVE_WRING_OUT), + LEVEL_UP_MOVE(61, MOVE_GYRO_BALL), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_LICKITUNG + +#if P_FAMILY_KOFFING static const struct LevelUpMove sKoffingLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -2171,6 +3206,38 @@ static const struct LevelUpMove sWeezingLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GALARIAN_FORMS +static const struct LevelUpMove sWeezingGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE( 1, MOVE_STRANGE_STEAM), + LEVEL_UP_MOVE( 1, MOVE_DEFOG), + LEVEL_UP_MOVE( 1, MOVE_HEAT_WAVE), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1, MOVE_HAZE), + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FAIRY_WIND), + LEVEL_UP_MOVE( 1, MOVE_AROMATIC_MIST), + LEVEL_UP_MOVE(12, MOVE_CLEAR_SMOG), + LEVEL_UP_MOVE(16, MOVE_ASSURANCE), + LEVEL_UP_MOVE(20, MOVE_SLUDGE), + LEVEL_UP_MOVE(24, MOVE_AROMATHERAPY), + LEVEL_UP_MOVE(28, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(32, MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE(38, MOVE_TOXIC), + LEVEL_UP_MOVE(44, MOVE_BELCH), + LEVEL_UP_MOVE(50, MOVE_EXPLOSION), + LEVEL_UP_MOVE(56, MOVE_MEMENTO), + LEVEL_UP_MOVE(62, MOVE_DESTINY_BOND), + LEVEL_UP_MOVE(68, MOVE_MISTY_TERRAIN), + LEVEL_UP_END +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_KOFFING + +#if P_FAMILY_RHYHORN static const struct LevelUpMove sRhyhornLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), @@ -2214,6 +3281,47 @@ static const struct LevelUpMove sRhydonLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sRhyperiorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HAMMER_ARM), + LEVEL_UP_MOVE( 1, MOVE_ROCK_WRECKER), + LEVEL_UP_MOVE( 1, MOVE_HORN_DRILL), + LEVEL_UP_MOVE( 1, MOVE_POISON_JAB), + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 5, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(13, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(17, MOVE_STOMP), + LEVEL_UP_MOVE(21, MOVE_BULLDOZE), + LEVEL_UP_MOVE(25, MOVE_CHIP_AWAY), + LEVEL_UP_MOVE(29, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(33, MOVE_DRILL_RUN), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(48, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(55, MOVE_MEGAHORN), + LEVEL_UP_MOVE(62, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(69, MOVE_ROCK_WRECKER), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RHYHORN + +#if P_FAMILY_CHANSEY +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sHappinyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 5, MOVE_COPYCAT), + LEVEL_UP_MOVE( 9, MOVE_REFRESH), + LEVEL_UP_MOVE(12, MOVE_SWEET_KISS), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS + static const struct LevelUpMove sChanseyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DOUBLE_EDGE), LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), @@ -2236,6 +3344,32 @@ static const struct LevelUpMove sChanseyLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sBlisseyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_REFRESH), + LEVEL_UP_MOVE(12, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(16, MOVE_SOFT_BOILED), + LEVEL_UP_MOVE(20, MOVE_BESTOW), + LEVEL_UP_MOVE(23, MOVE_MINIMIZE), + LEVEL_UP_MOVE(27, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_SING), + LEVEL_UP_MOVE(34, MOVE_FLING), + LEVEL_UP_MOVE(39, MOVE_HEAL_PULSE), + LEVEL_UP_MOVE(44, MOVE_EGG_BOMB), + LEVEL_UP_MOVE(50, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(57, MOVE_HEALING_WISH), + LEVEL_UP_MOVE(65, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_CHANSEY + +#if P_FAMILY_TANGELA static const struct LevelUpMove sTangelaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_INGRAIN), LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), @@ -2259,6 +3393,35 @@ static const struct LevelUpMove sTangelaLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sTangrowthLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BLOCK), + LEVEL_UP_MOVE( 1, MOVE_INGRAIN), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 4, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 7, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(10, MOVE_ABSORB), + LEVEL_UP_MOVE(14, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(17, MOVE_BIND), + LEVEL_UP_MOVE(20, MOVE_GROWTH), + LEVEL_UP_MOVE(23, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(27, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(30, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(33, MOVE_NATURAL_GIFT), + LEVEL_UP_MOVE(36, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(40, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(43, MOVE_SLAM), + LEVEL_UP_MOVE(46, MOVE_TICKLE), + LEVEL_UP_MOVE(49, MOVE_WRING_OUT), + LEVEL_UP_MOVE(50, MOVE_GRASSY_TERRAIN), + LEVEL_UP_MOVE(53, MOVE_POWER_WHIP), + LEVEL_UP_MOVE(56, MOVE_BLOCK), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TANGELA + +#if P_FAMILY_KANGASKHAN static const struct LevelUpMove sKangaskhanLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_COMET_PUNCH), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -2277,7 +3440,9 @@ static const struct LevelUpMove sKangaskhanLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_REVERSAL), LEVEL_UP_END }; +#endif //P_FAMILY_KANGASKHAN +#if P_FAMILY_HORSEA static const struct LevelUpMove sHorseaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BUBBLE), LEVEL_UP_MOVE( 5, MOVE_SMOKESCREEN), @@ -2314,6 +3479,31 @@ static const struct LevelUpMove sSeadraLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sKingdraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 5, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(17, MOVE_TWISTER), + LEVEL_UP_MOVE(21, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(26, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(31, MOVE_BRINE), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(45, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(52, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(60, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_HORSEA + +#if P_FAMILY_GOLDEEN static const struct LevelUpMove sGoldeenLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), @@ -2352,7 +3542,9 @@ static const struct LevelUpMove sSeakingLevelUpLearnset[] = { LEVEL_UP_MOVE(54, MOVE_MEGAHORN), LEVEL_UP_END }; +#endif //P_FAMILY_GOLDEEN +#if P_FAMILY_STARYU static const struct LevelUpMove sStaryuLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_HARDEN), @@ -2386,6 +3578,33 @@ static const struct LevelUpMove sStarmieLevelUpLearnset[] = { LEVEL_UP_MOVE(40, MOVE_CONFUSE_RAY), LEVEL_UP_END }; +#endif //P_FAMILY_STARYU + +#if P_FAMILY_MR_MIME +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sMimeJrLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TICKLE), + LEVEL_UP_MOVE( 1, MOVE_BARRIER), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 4, MOVE_COPYCAT), + LEVEL_UP_MOVE( 8, MOVE_MEDITATE), + LEVEL_UP_MOVE(11, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(15, MOVE_MIMIC), + LEVEL_UP_MOVE(18, MOVE_ENCORE), + LEVEL_UP_MOVE(22, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(22, MOVE_REFLECT), + LEVEL_UP_MOVE(25, MOVE_PSYBEAM), + LEVEL_UP_MOVE(29, MOVE_SUBSTITUTE), + LEVEL_UP_MOVE(32, MOVE_RECYCLE), + LEVEL_UP_MOVE(36, MOVE_TRICK), + LEVEL_UP_MOVE(39, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_ROLE_PLAY), + LEVEL_UP_MOVE(46, MOVE_BATON_PASS), + LEVEL_UP_MOVE(50, MOVE_SAFEGUARD), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS static const struct LevelUpMove sMrMimeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_MISTY_TERRAIN), @@ -2416,6 +3635,74 @@ static const struct LevelUpMove sMrMimeLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GALARIAN_FORMS +static const struct LevelUpMove sMrMimeGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_COPYCAT), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 1, MOVE_ROLE_PLAY), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE( 1, MOVE_RECYCLE), + LEVEL_UP_MOVE( 1, MOVE_MIMIC), + LEVEL_UP_MOVE( 1, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 1, MOVE_REFLECT), + LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 1, MOVE_DAZZLING_GLEAM), + LEVEL_UP_MOVE( 1, MOVE_MISTY_TERRAIN), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 1, MOVE_BATON_PASS), + LEVEL_UP_MOVE( 1, MOVE_ICE_SHARD), + LEVEL_UP_MOVE(12, MOVE_CONFUSION), + LEVEL_UP_MOVE(16, MOVE_ALLY_SWITCH), + LEVEL_UP_MOVE(20, MOVE_ICY_WIND), + LEVEL_UP_MOVE(24, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(28, MOVE_PSYBEAM), + LEVEL_UP_MOVE(32, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(36, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(40, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(44, MOVE_FREEZE_DRY), + LEVEL_UP_MOVE(48, MOVE_PSYCHIC), + LEVEL_UP_MOVE(52, MOVE_TEETER_DANCE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMrRimeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE( 1, MOVE_SLACK_OFF), + LEVEL_UP_MOVE( 1, MOVE_AFTER_YOU), + LEVEL_UP_MOVE( 1, MOVE_BLOCK), + LEVEL_UP_MOVE( 1, MOVE_COPYCAT), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 1, MOVE_ROLE_PLAY), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE( 1, MOVE_RECYCLE), + LEVEL_UP_MOVE( 1, MOVE_MIMIC), + LEVEL_UP_MOVE( 1, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE( 1, MOVE_REFLECT), + LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 1, MOVE_DAZZLING_GLEAM), + LEVEL_UP_MOVE( 1, MOVE_MISTY_TERRAIN), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 1, MOVE_BATON_PASS), + LEVEL_UP_MOVE( 1, MOVE_ICE_SHARD), + LEVEL_UP_MOVE(12, MOVE_CONFUSION), + LEVEL_UP_MOVE(16, MOVE_ALLY_SWITCH), + LEVEL_UP_MOVE(20, MOVE_ICY_WIND), + LEVEL_UP_MOVE(24, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(28, MOVE_PSYBEAM), + LEVEL_UP_MOVE(32, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(36, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(40, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(44, MOVE_FREEZE_DRY), + LEVEL_UP_MOVE(48, MOVE_PSYCHIC), + LEVEL_UP_MOVE(52, MOVE_TEETER_DANCE), + LEVEL_UP_END +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MR_MIME + +#if P_FAMILY_SCYTHER static const struct LevelUpMove sScytherLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_VACUUM_WAVE), LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), @@ -2438,6 +3725,74 @@ static const struct LevelUpMove sScytherLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sScizorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FEINT), + LEVEL_UP_MOVE( 1, MOVE_BULLET_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 5, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 9, MOVE_PURSUIT), + LEVEL_UP_MOVE(13, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(17, MOVE_AGILITY), + LEVEL_UP_MOVE(21, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(25, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(29, MOVE_SLASH), + LEVEL_UP_MOVE(33, MOVE_RAZOR_WIND), + LEVEL_UP_MOVE(37, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(41, MOVE_X_SCISSOR), + LEVEL_UP_MOVE(45, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(50, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(57, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(61, MOVE_FEINT), + LEVEL_UP_END +}; +#endif //P_GEN_2_CROSS_EVOS + +#if P_GEN_8_CROSS_EVOS +static const struct LevelUpMove sKleavorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_STONE_AXE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 4, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE( 8, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(12, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(16, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(20, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(24, MOVE_SLASH), + LEVEL_UP_MOVE(28, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(32, MOVE_AGILITY), + LEVEL_UP_MOVE(36, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(40, MOVE_X_SCISSOR), + LEVEL_UP_MOVE(44, MOVE_SWORDS_DANCE), + LEVEL_UP_END +}; +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_SCYTHER + +#if P_FAMILY_JYNX +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sSmoochumLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 5, MOVE_LICK), + LEVEL_UP_MOVE( 8, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(11, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(15, MOVE_CONFUSION), + LEVEL_UP_MOVE(18, MOVE_SING), + LEVEL_UP_MOVE(21, MOVE_HEART_STAMP), + LEVEL_UP_MOVE(25, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(28, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(31, MOVE_LUCKY_CHANT), + LEVEL_UP_MOVE(35, MOVE_AVALANCHE), + LEVEL_UP_MOVE(38, MOVE_PSYCHIC), + LEVEL_UP_MOVE(41, MOVE_COPYCAT), + LEVEL_UP_MOVE(45, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(48, MOVE_BLIZZARD), + LEVEL_UP_END +}; +#endif //P_GEN_2_CROSS_EVOS + static const struct LevelUpMove sJynxLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DRAINING_KISS), LEVEL_UP_MOVE( 1, MOVE_PERISH_SONG), @@ -2461,6 +3816,28 @@ static const struct LevelUpMove sJynxLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_BLIZZARD), LEVEL_UP_END }; +#endif //P_FAMILY_JYNX + +#if P_FAMILY_ELECTABUZZ +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sElekidLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 5, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 8, MOVE_LOW_KICK), + LEVEL_UP_MOVE(12, MOVE_SWIFT), + LEVEL_UP_MOVE(15, MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE(19, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(22, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(26, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(29, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(33, MOVE_DISCHARGE), + LEVEL_UP_MOVE(36, MOVE_SCREECH), + LEVEL_UP_MOVE(40, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(43, MOVE_THUNDER), + LEVEL_UP_END +}; +#endif //P_GEN_2_CROSS_EVOS static const struct LevelUpMove sElectabuzzLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), @@ -2481,6 +3858,55 @@ static const struct LevelUpMove sElectabuzzLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sElectivireLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN), + LEVEL_UP_MOVE( 1, MOVE_ION_DELUGE), + LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 5, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 8, MOVE_LOW_KICK), + LEVEL_UP_MOVE(12, MOVE_SWIFT), + LEVEL_UP_MOVE(15, MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE(19, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(22, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(26, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(29, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(36, MOVE_DISCHARGE), + LEVEL_UP_MOVE(42, MOVE_SCREECH), + LEVEL_UP_MOVE(49, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(55, MOVE_THUNDER), + LEVEL_UP_MOVE(62, MOVE_GIGA_IMPACT), + LEVEL_UP_MOVE(65, MOVE_ELECTRIC_TERRAIN), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ELECTABUZZ + +#if P_FAMILY_MAGMAR +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sMagbyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 5, MOVE_EMBER), + LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(12, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(15, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(19, MOVE_CLEAR_SMOG), + LEVEL_UP_MOVE(22, MOVE_FLAME_BURST), + LEVEL_UP_MOVE(26, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(29, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE(33, MOVE_LAVA_PLUME), + LEVEL_UP_MOVE(36, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(40, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(43, MOVE_FIRE_BLAST), + LEVEL_UP_END +}; +#endif //P_GEN_2_CROSS_EVOS + static const struct LevelUpMove sMagmarLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SMOG), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -2500,6 +3926,32 @@ static const struct LevelUpMove sMagmarLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sMagmortarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 5, MOVE_EMBER), + LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(12, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(15, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(19, MOVE_CLEAR_SMOG), + LEVEL_UP_MOVE(22, MOVE_FLAME_BURST), + LEVEL_UP_MOVE(26, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(29, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE(36, MOVE_LAVA_PLUME), + LEVEL_UP_MOVE(42, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(49, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(55, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(62, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGMAR + +#if P_FAMILY_PINSIR static const struct LevelUpMove sPinsirLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_VISE_GRIP), LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), @@ -2519,7 +3971,9 @@ static const struct LevelUpMove sPinsirLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_GUILLOTINE), LEVEL_UP_END }; +#endif //P_FAMILY_PINSIR +#if P_FAMILY_TAUROS static const struct LevelUpMove sTaurosLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 3, MOVE_TAIL_WHIP), @@ -2539,6 +3993,64 @@ static const struct LevelUpMove sTaurosLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_PALDEAN_FORMS +static const struct LevelUpMove sTaurosPaldeanCombatBreedLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 5, MOVE_WORK_UP), + LEVEL_UP_MOVE(10, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(15, MOVE_ASSURANCE), + LEVEL_UP_MOVE(20, MOVE_HEADBUTT), + LEVEL_UP_MOVE(25, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(30, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(35, MOVE_RAGING_BULL), + LEVEL_UP_MOVE(40, MOVE_REST), + LEVEL_UP_MOVE(45, MOVE_SWAGGER), + LEVEL_UP_MOVE(50, MOVE_THRASH), + LEVEL_UP_MOVE(55, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(60, MOVE_CLOSE_COMBAT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sTaurosPaldeanBlazeBreedLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 5, MOVE_WORK_UP), + LEVEL_UP_MOVE(10, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(15, MOVE_FLAME_CHARGE), + LEVEL_UP_MOVE(20, MOVE_HEADBUTT), + LEVEL_UP_MOVE(25, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(30, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(35, MOVE_RAGING_BULL), + LEVEL_UP_MOVE(40, MOVE_REST), + LEVEL_UP_MOVE(45, MOVE_SWAGGER), + LEVEL_UP_MOVE(50, MOVE_THRASH), + LEVEL_UP_MOVE(55, MOVE_FLARE_BLITZ), + LEVEL_UP_MOVE(60, MOVE_CLOSE_COMBAT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sTaurosPaldeanAquaBreedLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 5, MOVE_WORK_UP), + LEVEL_UP_MOVE(10, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(15, MOVE_AQUA_JET), + LEVEL_UP_MOVE(20, MOVE_HEADBUTT), + LEVEL_UP_MOVE(25, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(30, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(35, MOVE_RAGING_BULL), + LEVEL_UP_MOVE(40, MOVE_REST), + LEVEL_UP_MOVE(45, MOVE_SWAGGER), + LEVEL_UP_MOVE(50, MOVE_THRASH), + LEVEL_UP_MOVE(55, MOVE_WAVE_CRASH), + LEVEL_UP_MOVE(60, MOVE_CLOSE_COMBAT), + LEVEL_UP_END +}; +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_TAUROS + +#if P_FAMILY_MAGIKARP static const struct LevelUpMove sMagikarpLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SPLASH), LEVEL_UP_MOVE(15, MOVE_TACKLE), @@ -2564,7 +4076,9 @@ static const struct LevelUpMove sGyaradosLevelUpLearnset[] = { LEVEL_UP_MOVE(54, MOVE_HYPER_BEAM), LEVEL_UP_END }; +#endif //P_FAMILY_MAGIKARP +#if P_FAMILY_LAPRAS static const struct LevelUpMove sLaprasLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SING), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -2583,12 +4097,16 @@ static const struct LevelUpMove sLaprasLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_SHEER_COLD), LEVEL_UP_END }; +#endif //P_FAMILY_LAPRAS +#if P_FAMILY_DITTO static const struct LevelUpMove sDittoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TRANSFORM), LEVEL_UP_END }; +#endif //P_FAMILY_DITTO +#if P_FAMILY_EEVEE static const struct LevelUpMove sEeveeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_COVET), LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), @@ -2670,6 +4188,115 @@ static const struct LevelUpMove sFlareonLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sEspeonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(17, MOVE_SWIFT), + LEVEL_UP_MOVE(20, MOVE_PSYBEAM), + LEVEL_UP_MOVE(25, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(29, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(33, MOVE_MORNING_SUN), + LEVEL_UP_MOVE(37, MOVE_PSYCHIC), + LEVEL_UP_MOVE(41, MOVE_LAST_RESORT), + LEVEL_UP_MOVE(45, MOVE_POWER_SWAP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sUmbreonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_PURSUIT), + LEVEL_UP_MOVE( 1, MOVE_PURSUIT), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(20, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_ASSURANCE), + LEVEL_UP_MOVE(29, MOVE_SCREECH), + LEVEL_UP_MOVE(33, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(37, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(41, MOVE_LAST_RESORT), + LEVEL_UP_MOVE(45, MOVE_GUARD_SWAP), + LEVEL_UP_END +}; +#endif //P_GEN_2_CROSS_EVOS + +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sLeafeonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(17, MOVE_GRASS_WHISTLE), + LEVEL_UP_MOVE(20, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(25, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(29, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(33, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(37, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(41, MOVE_LAST_RESORT), + LEVEL_UP_MOVE(45, MOVE_LEAF_BLADE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGlaceonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_ICY_WIND), + LEVEL_UP_MOVE( 1, MOVE_ICY_WIND), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(17, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_ICE_FANG), + LEVEL_UP_MOVE(25, MOVE_ICE_SHARD), + LEVEL_UP_MOVE(29, MOVE_BARRIER), + LEVEL_UP_MOVE(33, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(37, MOVE_HAIL), + LEVEL_UP_MOVE(41, MOVE_LAST_RESORT), + LEVEL_UP_MOVE(45, MOVE_BLIZZARD), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS + +#if P_GEN_6_CROSS_EVOS +static const struct LevelUpMove sSylveonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_FAIRY_WIND), + LEVEL_UP_MOVE( 1, MOVE_FAIRY_WIND), + LEVEL_UP_MOVE( 1, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(17, MOVE_SWIFT), + LEVEL_UP_MOVE(20, MOVE_DRAINING_KISS), + LEVEL_UP_MOVE(25, MOVE_SKILL_SWAP), + LEVEL_UP_MOVE(29, MOVE_MISTY_TERRAIN), + LEVEL_UP_MOVE(33, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(37, MOVE_MOONBLAST), + LEVEL_UP_MOVE(41, MOVE_LAST_RESORT), + LEVEL_UP_MOVE(45, MOVE_PSYCH_UP), + LEVEL_UP_END +}; +#endif //P_GEN_6_CROSS_EVOS +#endif //P_FAMILY_EEVEE + +#if P_FAMILY_PORYGON static const struct LevelUpMove sPorygonLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CONVERSION_2), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -2689,6 +4316,57 @@ static const struct LevelUpMove sPorygonLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_2_CROSS_EVOS +static const struct LevelUpMove sPorygon2LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 1, MOVE_MAGIC_COAT), + LEVEL_UP_MOVE( 1, MOVE_CONVERSION_2), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_CONVERSION), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 7, MOVE_PSYBEAM), + LEVEL_UP_MOVE(12, MOVE_AGILITY), + LEVEL_UP_MOVE(18, MOVE_RECOVER), + LEVEL_UP_MOVE(23, MOVE_MAGNET_RISE), + LEVEL_UP_MOVE(29, MOVE_SIGNAL_BEAM), + LEVEL_UP_MOVE(34, MOVE_RECYCLE), + LEVEL_UP_MOVE(40, MOVE_DISCHARGE), + LEVEL_UP_MOVE(45, MOVE_LOCK_ON), + LEVEL_UP_MOVE(50, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(56, MOVE_MAGIC_COAT), + LEVEL_UP_MOVE(62, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(67, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sPorygonZLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TRICK_ROOM), + LEVEL_UP_MOVE( 1, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE( 1, MOVE_MAGIC_COAT), + LEVEL_UP_MOVE( 1, MOVE_CONVERSION_2), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_CONVERSION), + LEVEL_UP_MOVE( 1, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE( 7, MOVE_PSYBEAM), + LEVEL_UP_MOVE(12, MOVE_AGILITY), + LEVEL_UP_MOVE(18, MOVE_RECOVER), + LEVEL_UP_MOVE(23, MOVE_MAGNET_RISE), + LEVEL_UP_MOVE(29, MOVE_SIGNAL_BEAM), + LEVEL_UP_MOVE(34, MOVE_EMBARGO), + LEVEL_UP_MOVE(40, MOVE_DISCHARGE), + LEVEL_UP_MOVE(45, MOVE_LOCK_ON), + LEVEL_UP_MOVE(50, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(56, MOVE_MAGIC_COAT), + LEVEL_UP_MOVE(62, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(67, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_PORYGON + +#if P_FAMILY_OMANYTE static const struct LevelUpMove sOmanyteLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), @@ -2728,7 +4406,9 @@ static const struct LevelUpMove sOmastarLevelUpLearnset[] = { LEVEL_UP_MOVE(75, MOVE_HYDRO_PUMP), LEVEL_UP_END }; +#endif //P_FAMILY_OMANYTE +#if P_FAMILY_KABUTO static const struct LevelUpMove sKabutoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_HARDEN), @@ -2767,7 +4447,9 @@ static const struct LevelUpMove sKabutopsLevelUpLearnset[] = { LEVEL_UP_MOVE(72, MOVE_NIGHT_SLASH), LEVEL_UP_END }; +#endif //P_FAMILY_KABUTO +#if P_FAMILY_AERODACTYL static const struct LevelUpMove sAerodactylLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_IRON_HEAD), LEVEL_UP_MOVE( 1, MOVE_ICE_FANG), @@ -2789,6 +4471,34 @@ static const struct LevelUpMove sAerodactylLevelUpLearnset[] = { LEVEL_UP_MOVE(81, MOVE_GIGA_IMPACT), LEVEL_UP_END }; +#endif //P_FAMILY_AERODACTYL + +#if P_FAMILY_SNORLAX +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sMunchlaxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LAST_RESORT), + LEVEL_UP_MOVE( 1, MOVE_RECYCLE), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_METRONOME), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 9, MOVE_AMNESIA), + LEVEL_UP_MOVE(12, MOVE_LICK), + LEVEL_UP_MOVE(17, MOVE_CHIP_AWAY), + LEVEL_UP_MOVE(20, MOVE_SCREECH), + LEVEL_UP_MOVE(25, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(28, MOVE_STOCKPILE), + LEVEL_UP_MOVE(33, MOVE_SWALLOW), + LEVEL_UP_MOVE(36, MOVE_ROLLOUT), + LEVEL_UP_MOVE(41, MOVE_FLING), + LEVEL_UP_MOVE(44, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(49, MOVE_NATURAL_GIFT), + LEVEL_UP_MOVE(50, MOVE_SNATCH), + LEVEL_UP_MOVE(57, MOVE_LAST_RESORT), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS static const struct LevelUpMove sSnorlaxLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -2810,7 +4520,9 @@ static const struct LevelUpMove sSnorlaxLevelUpLearnset[] = { LEVEL_UP_MOVE(57, MOVE_HIGH_HORSEPOWER), LEVEL_UP_END }; +#endif //P_FAMILY_SNORLAX +#if P_FAMILY_ARTICUNO static const struct LevelUpMove sArticunoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GUST), LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), @@ -2831,6 +4543,30 @@ static const struct LevelUpMove sArticunoLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GALARIAN_FORMS +static const struct LevelUpMove sArticunoGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 1, MOVE_PSYCHO_SHIFT), + LEVEL_UP_MOVE( 5, MOVE_CONFUSION), + LEVEL_UP_MOVE(10, MOVE_REFLECT), + LEVEL_UP_MOVE(15, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(20, MOVE_AGILITY), + LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(30, MOVE_TAILWIND), + LEVEL_UP_MOVE(35, MOVE_PSYCHO_CUT), + LEVEL_UP_MOVE(40, MOVE_RECOVER), + LEVEL_UP_MOVE(45, MOVE_FREEZING_GLARE), + LEVEL_UP_MOVE(50, MOVE_DREAM_EATER), + LEVEL_UP_MOVE(55, MOVE_HURRICANE), + LEVEL_UP_MOVE(60, MOVE_MIND_READER), + LEVEL_UP_MOVE(65, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(70, MOVE_TRICK_ROOM), + LEVEL_UP_END +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ARTICUNO + +#if P_FAMILY_ZAPDOS static const struct LevelUpMove sZapdosLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), @@ -2851,6 +4587,30 @@ static const struct LevelUpMove sZapdosLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GALARIAN_FORMS +static const struct LevelUpMove sZapdosGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 5, MOVE_ROCK_SMASH), + LEVEL_UP_MOVE(10, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(15, MOVE_PLUCK), + LEVEL_UP_MOVE(20, MOVE_AGILITY), + LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(30, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(35, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(40, MOVE_QUICK_GUARD), + LEVEL_UP_MOVE(45, MOVE_THUNDEROUS_KICK), + LEVEL_UP_MOVE(50, MOVE_BULK_UP), + LEVEL_UP_MOVE(55, MOVE_COUNTER), + LEVEL_UP_MOVE(60, MOVE_DETECT), + LEVEL_UP_MOVE(65, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE(70, MOVE_REVERSAL), + LEVEL_UP_END +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZAPDOS + +#if P_FAMILY_MOLTRES static const struct LevelUpMove sMoltresLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), LEVEL_UP_MOVE( 1, MOVE_EMBER), @@ -2871,6 +4631,30 @@ static const struct LevelUpMove sMoltresLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GALARIAN_FORMS +static const struct LevelUpMove sMoltresGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 5, MOVE_PAYBACK), + LEVEL_UP_MOVE(10, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(15, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(20, MOVE_AGILITY), + LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(30, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(35, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(40, MOVE_AFTER_YOU), + LEVEL_UP_MOVE(45, MOVE_FIERY_WRATH), + LEVEL_UP_MOVE(50, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(55, MOVE_HURRICANE), + LEVEL_UP_MOVE(60, MOVE_ENDURE), + LEVEL_UP_MOVE(65, MOVE_MEMENTO), + LEVEL_UP_MOVE(70, MOVE_SKY_ATTACK), + LEVEL_UP_END +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MOLTRES + +#if P_FAMILY_DRATINI static const struct LevelUpMove sDratiniLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WRAP), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -2935,7 +4719,9 @@ static const struct LevelUpMove sDragoniteLevelUpLearnset[] = { LEVEL_UP_MOVE(81, MOVE_HURRICANE), LEVEL_UP_END }; +#endif //P_FAMILY_DRATINI +#if P_FAMILY_MEWTWO static const struct LevelUpMove sMewtwoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LASER_FOCUS), LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), @@ -2959,7 +4745,9 @@ static const struct LevelUpMove sMewtwoLevelUpLearnset[] = { LEVEL_UP_MOVE(100, MOVE_PSYSTRIKE), LEVEL_UP_END }; +#endif //P_FAMILY_MEWTWO +#if P_FAMILY_MEW static const struct LevelUpMove sMewLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 1, MOVE_REFLECT_TYPE), @@ -2976,7 +4764,9 @@ static const struct LevelUpMove sMewLevelUpLearnset[] = { LEVEL_UP_MOVE(100, MOVE_AURA_SPHERE), LEVEL_UP_END }; +#endif //P_FAMILY_MEW +#if P_FAMILY_CHIKORITA static const struct LevelUpMove sChikoritaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -3038,7 +4828,9 @@ static const struct LevelUpMove sMeganiumLevelUpLearnset[] = { LEVEL_UP_MOVE(70, MOVE_PETAL_BLIZZARD), LEVEL_UP_END }; +#endif //P_FAMILY_CHIKORITA +#if P_FAMILY_CYNDAQUIL static const struct LevelUpMove sCyndaquilLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -3105,6 +4897,32 @@ static const struct LevelUpMove sTyphlosionLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_HISUIAN_FORMS +static const struct LevelUpMove sTyphlosionHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_INFERNAL_PARADE), + LEVEL_UP_MOVE( 1, MOVE_GYRO_BALL), + LEVEL_UP_MOVE( 1, MOVE_ERUPTION), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(24, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(31, MOVE_SWIFT), + LEVEL_UP_MOVE(35, MOVE_FLAME_CHARGE), + LEVEL_UP_MOVE(43, MOVE_LAVA_PLUME), + LEVEL_UP_MOVE(48, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(56, MOVE_INFERNO), + LEVEL_UP_MOVE(61, MOVE_ROLLOUT), + LEVEL_UP_MOVE(74, MOVE_OVERHEAT), + LEVEL_UP_END +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_CYNDAQUIL + +#if P_FAMILY_TOTODILE static const struct LevelUpMove sTotodileLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -3168,7 +4986,9 @@ static const struct LevelUpMove sFeraligatrLevelUpLearnset[] = { LEVEL_UP_MOVE(76, MOVE_HYDRO_PUMP), LEVEL_UP_END }; +#endif //P_FAMILY_TOTODILE +#if P_FAMILY_SENTRET static const struct LevelUpMove sSentretLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), @@ -3209,7 +5029,9 @@ static const struct LevelUpMove sFurretLevelUpLearnset[] = { LEVEL_UP_MOVE(56, MOVE_HYPER_VOICE), LEVEL_UP_END }; +#endif //P_FAMILY_SENTRET +#if P_FAMILY_HOOTHOOT static const struct LevelUpMove sHoothootLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -3256,7 +5078,9 @@ static const struct LevelUpMove sNoctowlLevelUpLearnset[] = { LEVEL_UP_MOVE(55, MOVE_DREAM_EATER), LEVEL_UP_END }; +#endif //P_FAMILY_HOOTHOOT +#if P_FAMILY_LEDYBA static const struct LevelUpMove sLedybaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), @@ -3294,7 +5118,9 @@ static const struct LevelUpMove sLedianLevelUpLearnset[] = { LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), LEVEL_UP_END }; +#endif //P_FAMILY_LEDYBA +#if P_FAMILY_SPINARAK static const struct LevelUpMove sSpinarakLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POISON_STING), LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), @@ -3345,32 +5171,9 @@ static const struct LevelUpMove sAriadosLevelUpLearnset[] = { LEVEL_UP_MOVE(63, MOVE_TOXIC_THREAD), LEVEL_UP_END }; +#endif //P_FAMILY_SPINARAK -static const struct LevelUpMove sCrobatLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_CROSS_POISON), - LEVEL_UP_MOVE( 1, MOVE_CROSS_POISON), - LEVEL_UP_MOVE( 1, MOVE_SCREECH), - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 7, MOVE_ASTONISH), - LEVEL_UP_MOVE(11, MOVE_BITE), - LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(19, MOVE_AIR_CUTTER), - LEVEL_UP_MOVE(24, MOVE_SWIFT), - LEVEL_UP_MOVE(27, MOVE_POISON_FANG), - LEVEL_UP_MOVE(32, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(35, MOVE_LEECH_LIFE), - LEVEL_UP_MOVE(40, MOVE_HAZE), - LEVEL_UP_MOVE(43, MOVE_VENOSHOCK), - LEVEL_UP_MOVE(48, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(51, MOVE_QUICK_GUARD), - LEVEL_UP_END -}; - +#if P_FAMILY_CHINCHOU static const struct LevelUpMove sChinchouLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BUBBLE), LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), @@ -3420,38 +5223,9 @@ static const struct LevelUpMove sLanturnLevelUpLearnset[] = { LEVEL_UP_MOVE(58, MOVE_CHARGE), LEVEL_UP_END }; +#endif //P_FAMILY_CHINCHOU -static const struct LevelUpMove sPichuLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 1, MOVE_CHARM), - LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(10, MOVE_SWEET_KISS), - LEVEL_UP_MOVE(13, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE(18, MOVE_THUNDER_WAVE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sCleffaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_CHARM), - LEVEL_UP_MOVE( 4, MOVE_ENCORE), - LEVEL_UP_MOVE( 7, MOVE_SING), - LEVEL_UP_MOVE(10, MOVE_SWEET_KISS), - LEVEL_UP_MOVE(13, MOVE_COPYCAT), - LEVEL_UP_MOVE(16, MOVE_MAGICAL_LEAF), - LEVEL_UP_END -}; - -static const struct LevelUpMove sIgglybuffLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SING), - LEVEL_UP_MOVE( 1, MOVE_CHARM), - LEVEL_UP_MOVE( 3, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 5, MOVE_POUND), - LEVEL_UP_MOVE( 9, MOVE_SWEET_KISS), - LEVEL_UP_MOVE(11, MOVE_COPYCAT), - LEVEL_UP_END -}; - +#if P_FAMILY_TOGEPI static const struct LevelUpMove sTogepiLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_CHARM), @@ -3494,6 +5268,19 @@ static const struct LevelUpMove sTogeticLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sTogekissLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_AFTER_YOU), + LEVEL_UP_MOVE( 1, MOVE_SKY_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_EXTREME_SPEED), + LEVEL_UP_MOVE( 1, MOVE_AURA_SPHERE), + LEVEL_UP_MOVE( 1, MOVE_AIR_SLASH), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TOGEPI + +#if P_FAMILY_NATU static const struct LevelUpMove sNatuLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -3538,7 +5325,9 @@ static const struct LevelUpMove sXatuLevelUpLearnset[] = { LEVEL_UP_MOVE(57, MOVE_ME_FIRST), LEVEL_UP_END }; +#endif //P_FAMILY_NATU +#if P_FAMILY_MAREEP static const struct LevelUpMove sMareepLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -3607,22 +5396,24 @@ static const struct LevelUpMove sAmpharosLevelUpLearnset[] = { LEVEL_UP_MOVE(65, MOVE_DRAGON_PULSE), LEVEL_UP_END }; +#endif //P_FAMILY_MAREEP -static const struct LevelUpMove sBellossomLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE( 1, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE( 1, MOVE_LEAF_STORM), - LEVEL_UP_MOVE( 1, MOVE_LEAF_BLADE), - LEVEL_UP_MOVE( 1, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), - LEVEL_UP_MOVE( 1, MOVE_SUNNY_DAY), - LEVEL_UP_MOVE(39, MOVE_QUIVER_DANCE), - LEVEL_UP_MOVE(49, MOVE_PETAL_BLIZZARD), - LEVEL_UP_MOVE(59, MOVE_PETAL_DANCE), - LEVEL_UP_MOVE(69, MOVE_LEAF_STORM), +#if P_FAMILY_MARILL +#if P_GEN_3_CROSS_EVOS +static const struct LevelUpMove sAzurillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 2, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 5, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 7, MOVE_BUBBLE), + LEVEL_UP_MOVE(10, MOVE_CHARM), + LEVEL_UP_MOVE(13, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(16, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(20, MOVE_SLAM), + LEVEL_UP_MOVE(23, MOVE_BOUNCE), LEVEL_UP_END }; +#endif //P_GEN_3_CROSS_EVOS static const struct LevelUpMove sMarillLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -3665,6 +5456,28 @@ static const struct LevelUpMove sAzumarillLevelUpLearnset[] = { LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP), LEVEL_UP_END }; +#endif //P_FAMILY_MARILL + +#if P_FAMILY_SUDOWOODO +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sBonslyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE( 1, MOVE_COPYCAT), + LEVEL_UP_MOVE( 5, MOVE_FLAIL), + LEVEL_UP_MOVE( 8, MOVE_LOW_KICK), + LEVEL_UP_MOVE(12, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(15, MOVE_MIMIC), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(22, MOVE_TEARFUL_LOOK), + LEVEL_UP_MOVE(26, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(29, MOVE_BLOCK), + LEVEL_UP_MOVE(33, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(36, MOVE_COUNTER), + LEVEL_UP_MOVE(40, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS static const struct LevelUpMove sSudowoodoLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_SLAM), @@ -3691,18 +5504,9 @@ static const struct LevelUpMove sSudowoodoLevelUpLearnset[] = { LEVEL_UP_MOVE(54, MOVE_HEAD_SMASH), LEVEL_UP_END }; +#endif //P_FAMILY_SUDOWOODO -static const struct LevelUpMove sPolitoedLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE( 1, MOVE_PERISH_SONG), - LEVEL_UP_MOVE(27, MOVE_SWAGGER), - LEVEL_UP_MOVE(37, MOVE_BOUNCE), - LEVEL_UP_MOVE(48, MOVE_HYPER_VOICE), - LEVEL_UP_END -}; - +#if P_FAMILY_HOPPIP static const struct LevelUpMove sHoppipLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SPLASH), LEVEL_UP_MOVE( 1, MOVE_ABSORB), @@ -3778,7 +5582,9 @@ static const struct LevelUpMove sJumpluffLevelUpLearnset[] = { LEVEL_UP_MOVE(69, MOVE_MEMENTO), LEVEL_UP_END }; +#endif //P_FAMILY_HOPPIP +#if P_FAMILY_AIPOM static const struct LevelUpMove sAipomLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), @@ -3797,6 +5603,31 @@ static const struct LevelUpMove sAipomLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sAmbipomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_DUAL_CHOP), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 8, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_BATON_PASS), + LEVEL_UP_MOVE(15, MOVE_TICKLE), + LEVEL_UP_MOVE(18, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(22, MOVE_SWIFT), + LEVEL_UP_MOVE(25, MOVE_SCREECH), + LEVEL_UP_MOVE(29, MOVE_AGILITY), + LEVEL_UP_MOVE(32, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(36, MOVE_FLING), + LEVEL_UP_MOVE(39, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(43, MOVE_LAST_RESORT), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_AIPOM + +#if P_FAMILY_SUNKERN static const struct LevelUpMove sSunkernLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ABSORB), LEVEL_UP_MOVE( 1, MOVE_GROWTH), @@ -3839,7 +5670,9 @@ static const struct LevelUpMove sSunfloraLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_PETAL_BLIZZARD), LEVEL_UP_END }; +#endif //P_FAMILY_SUNKERN +#if P_FAMILY_YANMA static const struct LevelUpMove sYanmaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), @@ -3860,6 +5693,36 @@ static const struct LevelUpMove sYanmaLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sYanmegaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUG_BUZZ), + LEVEL_UP_MOVE( 1, MOVE_AIR_SLASH), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE( 1, MOVE_BUG_BITE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 6, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(14, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(17, MOVE_DETECT), + LEVEL_UP_MOVE(22, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(27, MOVE_UPROAR), + LEVEL_UP_MOVE(30, MOVE_PURSUIT), + LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(38, MOVE_FEINT), + LEVEL_UP_MOVE(43, MOVE_SLASH), + LEVEL_UP_MOVE(46, MOVE_SCREECH), + LEVEL_UP_MOVE(49, MOVE_U_TURN), + LEVEL_UP_MOVE(54, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(57, MOVE_BUG_BUZZ), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_YANMA + +#if P_FAMILY_WOOPER static const struct LevelUpMove sWooperLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), @@ -3895,46 +5758,43 @@ static const struct LevelUpMove sQuagsireLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sEspeonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), +#if P_PALDEAN_FORMS +static const struct LevelUpMove sWooperPaldeanLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 9, MOVE_BABY_DOLL_EYES), - LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(17, MOVE_SWIFT), - LEVEL_UP_MOVE(20, MOVE_PSYBEAM), - LEVEL_UP_MOVE(25, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(29, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(33, MOVE_MORNING_SUN), - LEVEL_UP_MOVE(37, MOVE_PSYCHIC), - LEVEL_UP_MOVE(41, MOVE_LAST_RESORT), - LEVEL_UP_MOVE(45, MOVE_POWER_SWAP), + LEVEL_UP_MOVE( 1, MOVE_MUD_SHOT), + LEVEL_UP_MOVE( 4, MOVE_TACKLE), + LEVEL_UP_MOVE( 8, MOVE_POISON_TAIL), + LEVEL_UP_MOVE(12, MOVE_TOXIC_SPIKES), + LEVEL_UP_MOVE(16, MOVE_SLAM), + LEVEL_UP_MOVE(21, MOVE_YAWN), + LEVEL_UP_MOVE(24, MOVE_POISON_JAB), + LEVEL_UP_MOVE(28, MOVE_SLUDGE_WAVE), + LEVEL_UP_MOVE(32, MOVE_AMNESIA), + LEVEL_UP_MOVE(36, MOVE_TOXIC), + LEVEL_UP_MOVE(40, MOVE_EARTHQUAKE), LEVEL_UP_END }; -static const struct LevelUpMove sUmbreonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_PURSUIT), - LEVEL_UP_MOVE( 1, MOVE_PURSUIT), - LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), +static const struct LevelUpMove sClodsireLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_AMNESIA), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 9, MOVE_BABY_DOLL_EYES), - LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(20, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(25, MOVE_ASSURANCE), - LEVEL_UP_MOVE(29, MOVE_SCREECH), - LEVEL_UP_MOVE(33, MOVE_MOONLIGHT), - LEVEL_UP_MOVE(37, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(41, MOVE_LAST_RESORT), - LEVEL_UP_MOVE(45, MOVE_GUARD_SWAP), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 4, MOVE_TOXIC_SPIKES), + LEVEL_UP_MOVE( 8, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(12, MOVE_POISON_TAIL), + LEVEL_UP_MOVE(16, MOVE_SLAM), + LEVEL_UP_MOVE(21, MOVE_YAWN), + LEVEL_UP_MOVE(24, MOVE_POISON_JAB), + LEVEL_UP_MOVE(30, MOVE_SLUDGE_WAVE), + LEVEL_UP_MOVE(36, MOVE_MEGAHORN), + LEVEL_UP_MOVE(40, MOVE_TOXIC), + LEVEL_UP_MOVE(48, MOVE_EARTHQUAKE), LEVEL_UP_END }; +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_WOOPER +#if P_FAMILY_MURKROW static const struct LevelUpMove sMurkrowLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 1, MOVE_ASTONISH), @@ -3954,29 +5814,26 @@ static const struct LevelUpMove sMurkrowLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sSlowkingLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HEAL_PULSE), - LEVEL_UP_MOVE( 1, MOVE_POWER_GEM), - LEVEL_UP_MOVE( 1, MOVE_HIDDEN_POWER), - LEVEL_UP_MOVE( 1, MOVE_CURSE), - LEVEL_UP_MOVE( 1, MOVE_YAWN), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_GROWL), - LEVEL_UP_MOVE( 9, MOVE_WATER_GUN), - LEVEL_UP_MOVE(14, MOVE_CONFUSION), - LEVEL_UP_MOVE(19, MOVE_DISABLE), - LEVEL_UP_MOVE(23, MOVE_HEADBUTT), - LEVEL_UP_MOVE(28, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(32, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(36, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE(41, MOVE_SWAGGER), - LEVEL_UP_MOVE(45, MOVE_PSYCHIC), - LEVEL_UP_MOVE(49, MOVE_TRUMP_CARD), - LEVEL_UP_MOVE(54, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(58, MOVE_HEAL_PULSE), +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sHonchkrowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE( 1, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_PURSUIT), + LEVEL_UP_MOVE( 1, MOVE_HAZE), + LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(25, MOVE_SWAGGER), + LEVEL_UP_MOVE(35, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(45, MOVE_FOUL_PLAY), + LEVEL_UP_MOVE(55, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(65, MOVE_QUASH), + LEVEL_UP_MOVE(75, MOVE_DARK_PULSE), LEVEL_UP_END }; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MURKROW +#if P_FAMILY_MISDREAVUS static const struct LevelUpMove sMisdreavusLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), @@ -3995,10 +5852,42 @@ static const struct LevelUpMove sMisdreavusLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sMismagiusLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_MYSTICAL_FIRE), + LEVEL_UP_MOVE( 1, MOVE_POWER_GEM), + LEVEL_UP_MOVE( 1, MOVE_PHANTOM_FORCE), + LEVEL_UP_MOVE( 1, MOVE_LUCKY_CHANT), + LEVEL_UP_MOVE( 1, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 1, MOVE_SPITE), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MISDREAVUS + +#if P_FAMILY_UNOWN static const struct LevelUpMove sUnownLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HIDDEN_POWER), LEVEL_UP_END }; +#endif //P_FAMILY_UNOWN + +#if P_FAMILY_WOBBUFFET +#if P_GEN_3_CROSS_EVOS +static const struct LevelUpMove sWynautLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE(15, MOVE_COUNTER), + LEVEL_UP_MOVE(15, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(15, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; +#endif //P_GEN_3_CROSS_EVOS static const struct LevelUpMove sWobbuffetLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_COUNTER), @@ -4007,7 +5896,9 @@ static const struct LevelUpMove sWobbuffetLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DESTINY_BOND), LEVEL_UP_END }; +#endif //P_FAMILY_WOBBUFFET +#if P_FAMILY_GIRAFARIG static const struct LevelUpMove sGirafarigLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POWER_SWAP), LEVEL_UP_MOVE( 1, MOVE_GUARD_SWAP), @@ -4029,6 +5920,30 @@ static const struct LevelUpMove sGirafarigLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_9_CROSS_EVOS +static const struct LevelUpMove sFarigirafLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_POWER_SWAP), + LEVEL_UP_MOVE( 1, MOVE_GUARD_SWAP), + LEVEL_UP_MOVE( 5, MOVE_CONFUSION), + LEVEL_UP_MOVE(10, MOVE_ASSURANCE), + LEVEL_UP_MOVE(14, MOVE_STOMP), + LEVEL_UP_MOVE(19, MOVE_PSYBEAM), + LEVEL_UP_MOVE(23, MOVE_AGILITY), + LEVEL_UP_MOVE(28, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(32, MOVE_TWIN_BEAM), + LEVEL_UP_MOVE(37, MOVE_CRUNCH), + LEVEL_UP_MOVE(41, MOVE_BATON_PASS), + LEVEL_UP_MOVE(46, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(50, MOVE_PSYCHIC), + LEVEL_UP_END +}; +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_GIRAFARIG + +#if P_FAMILY_PINECO static const struct LevelUpMove sPinecoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_PROTECT), @@ -4077,7 +5992,9 @@ static const struct LevelUpMove sForretressLevelUpLearnset[] = { LEVEL_UP_MOVE(64, MOVE_HEAVY_SLAM), LEVEL_UP_END }; +#endif //P_FAMILY_PINECO +#if P_FAMILY_DUNSPARCE static const struct LevelUpMove sDunsparceLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_RAGE), LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), @@ -4104,6 +6021,31 @@ static const struct LevelUpMove sDunsparceLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_9_CROSS_EVOS +static const struct LevelUpMove sDudunsparceLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_FLAIL), + LEVEL_UP_MOVE( 4, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 8, MOVE_ROLLOUT), + LEVEL_UP_MOVE(12, MOVE_GLARE), + LEVEL_UP_MOVE(16, MOVE_SCREECH), + LEVEL_UP_MOVE(20, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(24, MOVE_DRILL_RUN), + LEVEL_UP_MOVE(28, MOVE_YAWN), + LEVEL_UP_MOVE(32, MOVE_HYPER_DRILL), + LEVEL_UP_MOVE(36, MOVE_ROOST), + LEVEL_UP_MOVE(40, MOVE_DRAGON_RUSH), + LEVEL_UP_MOVE(44, MOVE_COIL), + LEVEL_UP_MOVE(48, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(52, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(56, MOVE_HURRICANE), + LEVEL_UP_MOVE(62, MOVE_BOOMBURST), + LEVEL_UP_END +}; +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_DUNSPARCE + +#if P_FAMILY_GLIGAR static const struct LevelUpMove sGligarLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POISON_STING), LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), @@ -4123,35 +6065,36 @@ static const struct LevelUpMove sGligarLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sSteelixLevelUpLearnset[] = { +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sGliscorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GUILLOTINE), LEVEL_UP_MOVE( 1, MOVE_THUNDER_FANG), LEVEL_UP_MOVE( 1, MOVE_ICE_FANG), LEVEL_UP_MOVE( 1, MOVE_FIRE_FANG), - LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_POISON_JAB), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_BIND), - LEVEL_UP_MOVE( 4, MOVE_CURSE), - LEVEL_UP_MOVE( 7, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(10, MOVE_ROCK_TOMB), - LEVEL_UP_MOVE(13, MOVE_RAGE), - LEVEL_UP_MOVE(16, MOVE_STEALTH_ROCK), - LEVEL_UP_MOVE(19, MOVE_AUTOTOMIZE), - LEVEL_UP_MOVE(20, MOVE_GYRO_BALL), - LEVEL_UP_MOVE(22, MOVE_SMACK_DOWN), - LEVEL_UP_MOVE(25, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(28, MOVE_SLAM), - LEVEL_UP_MOVE(31, MOVE_SCREECH), - LEVEL_UP_MOVE(34, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(37, MOVE_CRUNCH), - LEVEL_UP_MOVE(40, MOVE_IRON_TAIL), - LEVEL_UP_MOVE(43, MOVE_DIG), - LEVEL_UP_MOVE(46, MOVE_STONE_EDGE), - LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(52, MOVE_SANDSTORM), + LEVEL_UP_MOVE( 1, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(10, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(16, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(22, MOVE_ACROBATICS), + LEVEL_UP_MOVE(27, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(30, MOVE_U_TURN), + LEVEL_UP_MOVE(35, MOVE_SCREECH), + LEVEL_UP_MOVE(40, MOVE_X_SCISSOR), + LEVEL_UP_MOVE(45, MOVE_SKY_UPPERCUT), + LEVEL_UP_MOVE(50, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(55, MOVE_GUILLOTINE), LEVEL_UP_END }; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_GLIGAR +#if P_FAMILY_SNUBBULL static const struct LevelUpMove sSnubbullLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ICE_FANG), LEVEL_UP_MOVE( 1, MOVE_FIRE_FANG), @@ -4191,7 +6134,9 @@ static const struct LevelUpMove sGranbullLevelUpLearnset[] = { LEVEL_UP_MOVE(67, MOVE_OUTRAGE), LEVEL_UP_END }; +#endif //P_FAMILY_SNUBBULL +#if P_FAMILY_QWILFISH static const struct LevelUpMove sQwilfishLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_FELL_STINGER), LEVEL_UP_MOVE( 1, MOVE_HYDRO_PUMP), @@ -4219,29 +6164,52 @@ static const struct LevelUpMove sQwilfishLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sScizorLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FEINT), - LEVEL_UP_MOVE( 1, MOVE_BULLET_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 5, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 9, MOVE_PURSUIT), - LEVEL_UP_MOVE(13, MOVE_FALSE_SWIPE), - LEVEL_UP_MOVE(17, MOVE_AGILITY), - LEVEL_UP_MOVE(21, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(25, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(29, MOVE_SLASH), - LEVEL_UP_MOVE(33, MOVE_RAZOR_WIND), - LEVEL_UP_MOVE(37, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(41, MOVE_X_SCISSOR), - LEVEL_UP_MOVE(45, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE(49, MOVE_DOUBLE_HIT), - LEVEL_UP_MOVE(50, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(57, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(61, MOVE_FEINT), +#if P_HISUIAN_FORMS +static const struct LevelUpMove sQwilfishHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 8, MOVE_BITE), + LEVEL_UP_MOVE(12, MOVE_FELL_STINGER), + LEVEL_UP_MOVE(16, MOVE_MINIMIZE), + LEVEL_UP_MOVE(20, MOVE_SPIKES), + LEVEL_UP_MOVE(24, MOVE_BRINE), + LEVEL_UP_MOVE(28, MOVE_BARB_BARRAGE), + LEVEL_UP_MOVE(32, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(36, MOVE_TOXIC_SPIKES), + LEVEL_UP_MOVE(40, MOVE_STOCKPILE), + LEVEL_UP_MOVE(40, MOVE_SPIT_UP), + LEVEL_UP_MOVE(44, MOVE_TOXIC), + LEVEL_UP_MOVE(48, MOVE_CRUNCH), + LEVEL_UP_MOVE(52, MOVE_ACUPRESSURE), + LEVEL_UP_MOVE(56, MOVE_DESTINY_BOND), LEVEL_UP_END }; +static const struct LevelUpMove sOverqwilLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 8, MOVE_BITE), + LEVEL_UP_MOVE(12, MOVE_FELL_STINGER), + LEVEL_UP_MOVE(16, MOVE_MINIMIZE), + LEVEL_UP_MOVE(20, MOVE_SPIKES), + LEVEL_UP_MOVE(24, MOVE_BRINE), + LEVEL_UP_MOVE(28, MOVE_BARB_BARRAGE), + LEVEL_UP_MOVE(32, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(36, MOVE_TOXIC_SPIKES), + LEVEL_UP_MOVE(40, MOVE_STOCKPILE), + LEVEL_UP_MOVE(40, MOVE_SPIT_UP), + LEVEL_UP_MOVE(44, MOVE_TOXIC), + LEVEL_UP_MOVE(48, MOVE_CRUNCH), + LEVEL_UP_MOVE(52, MOVE_ACUPRESSURE), + LEVEL_UP_MOVE(56, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_QWILFISH + +#if P_FAMILY_SHUCKLE static const struct LevelUpMove sShuckleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_STICKY_WEB), LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), @@ -4265,7 +6233,9 @@ static const struct LevelUpMove sShuckleLevelUpLearnset[] = { LEVEL_UP_MOVE(53, MOVE_STICKY_WEB), LEVEL_UP_END }; +#endif //P_FAMILY_SHUCKLE +#if P_FAMILY_HERACROSS static const struct LevelUpMove sHeracrossLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ARM_THRUST), LEVEL_UP_MOVE( 1, MOVE_BULLET_SEED), @@ -4287,7 +6257,9 @@ static const struct LevelUpMove sHeracrossLevelUpLearnset[] = { LEVEL_UP_MOVE(46, MOVE_REVERSAL), LEVEL_UP_END }; +#endif //P_FAMILY_HERACROSS +#if P_FAMILY_SNEASEL static const struct LevelUpMove sSneaselLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -4308,6 +6280,72 @@ static const struct LevelUpMove sSneaselLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sWeavileLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBARGO), + LEVEL_UP_MOVE( 1, MOVE_REVENGE), + LEVEL_UP_MOVE( 1, MOVE_ASSURANCE), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_TAUNT), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(10, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(14, MOVE_ICY_WIND), + LEVEL_UP_MOVE(16, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(20, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(22, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(25, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(28, MOVE_FLING), + LEVEL_UP_MOVE(32, MOVE_SCREECH), + LEVEL_UP_MOVE(35, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(40, MOVE_SNATCH), + LEVEL_UP_MOVE(44, MOVE_PUNISHMENT), + LEVEL_UP_MOVE(47, MOVE_DARK_PULSE), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS + +#if P_HISUIAN_FORMS +static const struct LevelUpMove sSneaselHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ROCK_SMASH), + LEVEL_UP_MOVE( 6, MOVE_TAUNT), + LEVEL_UP_MOVE(12, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(18, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(24, MOVE_POISON_JAB), + LEVEL_UP_MOVE(30, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(36, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(42, MOVE_SLASH), + LEVEL_UP_MOVE(48, MOVE_AGILITY), + LEVEL_UP_MOVE(54, MOVE_SCREECH), + LEVEL_UP_MOVE(60, MOVE_CLOSE_COMBAT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSneaslerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_DIRE_CLAW), + LEVEL_UP_MOVE( 1, MOVE_FLING), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ROCK_SMASH), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 6, MOVE_TAUNT), + LEVEL_UP_MOVE(12, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(18, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(24, MOVE_POISON_JAB), + LEVEL_UP_MOVE(30, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(36, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(42, MOVE_SLASH), + LEVEL_UP_MOVE(48, MOVE_AGILITY), + LEVEL_UP_MOVE(54, MOVE_SCREECH), + LEVEL_UP_MOVE(60, MOVE_CLOSE_COMBAT), + LEVEL_UP_END +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_SNEASEL + +#if P_FAMILY_TEDDIURSA static const struct LevelUpMove sTeddiursaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_FLING), LEVEL_UP_MOVE( 1, MOVE_COVET), @@ -4348,6 +6386,52 @@ static const struct LevelUpMove sUrsaringLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_8_CROSS_EVOS +static const struct LevelUpMove sUrsalunaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_HEADLONG_RUSH), + LEVEL_UP_MOVE( 1, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE( 1, MOVE_COVET), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 8, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(13, MOVE_PAYBACK), + LEVEL_UP_MOVE(17, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(22, MOVE_SLASH), + LEVEL_UP_MOVE(25, MOVE_PLAY_NICE), + LEVEL_UP_MOVE(29, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(35, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(41, MOVE_REST), + LEVEL_UP_MOVE(41, MOVE_SNORE), + LEVEL_UP_MOVE(48, MOVE_HIGH_HORSEPOWER), + LEVEL_UP_MOVE(56, MOVE_THRASH), + LEVEL_UP_MOVE(64, MOVE_HAMMER_ARM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sUrsalunaBloodmoonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_HEADLONG_RUSH), + LEVEL_UP_MOVE( 8, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(13, MOVE_PAYBACK), + LEVEL_UP_MOVE(17, MOVE_HARDEN), + LEVEL_UP_MOVE(22, MOVE_SLASH), + LEVEL_UP_MOVE(25, MOVE_PLAY_NICE), + LEVEL_UP_MOVE(35, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(41, MOVE_REST), + LEVEL_UP_MOVE(41, MOVE_SNORE), + LEVEL_UP_MOVE(48, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(56, MOVE_MOONBLAST), + LEVEL_UP_MOVE(64, MOVE_HAMMER_ARM), + LEVEL_UP_MOVE(70, MOVE_BLOOD_MOON), + LEVEL_UP_END +}; +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_TEDDIURSA + +#if P_FAMILY_SLUGMA static const struct LevelUpMove sSlugmaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_YAWN), LEVEL_UP_MOVE( 1, MOVE_SMOG), @@ -4392,7 +6476,9 @@ static const struct LevelUpMove sMagcargoLevelUpLearnset[] = { LEVEL_UP_MOVE(58, MOVE_EARTH_POWER), LEVEL_UP_END }; +#endif //P_FAMILY_SLUGMA +#if P_FAMILY_SWINUB static const struct LevelUpMove sSwinubLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), @@ -4436,6 +6522,35 @@ static const struct LevelUpMove sPiloswineLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sMamoswineLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 1, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 5, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 8, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(11, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(14, MOVE_ENDURE), + LEVEL_UP_MOVE(18, MOVE_MUD_BOMB), + LEVEL_UP_MOVE(21, MOVE_HAIL), + LEVEL_UP_MOVE(24, MOVE_ICE_FANG), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(33, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(37, MOVE_MIST), + LEVEL_UP_MOVE(41, MOVE_THRASH), + LEVEL_UP_MOVE(46, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(52, MOVE_BLIZZARD), + LEVEL_UP_MOVE(58, MOVE_SCARY_FACE), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SWINUB + +#if P_FAMILY_CORSOLA static const struct LevelUpMove sCorsolaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_HARDEN), @@ -4458,6 +6573,45 @@ static const struct LevelUpMove sCorsolaLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GALARIAN_FORMS +static const struct LevelUpMove sCorsolaGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_ASTONISH), + LEVEL_UP_MOVE(10, MOVE_DISABLE), + LEVEL_UP_MOVE(15, MOVE_SPITE), + LEVEL_UP_MOVE(20, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(25, MOVE_HEX), + LEVEL_UP_MOVE(30, MOVE_CURSE), + LEVEL_UP_MOVE(35, MOVE_STRENGTH_SAP), + LEVEL_UP_MOVE(40, MOVE_POWER_GEM), + LEVEL_UP_MOVE(45, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(50, MOVE_GRUDGE), + LEVEL_UP_MOVE(55, MOVE_MIRROR_COAT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sCursolaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PERISH_SONG), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE(15, MOVE_SPITE), + LEVEL_UP_MOVE(20, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(25, MOVE_HEX), + LEVEL_UP_MOVE(30, MOVE_CURSE), + LEVEL_UP_MOVE(35, MOVE_STRENGTH_SAP), + LEVEL_UP_MOVE(40, MOVE_POWER_GEM), + LEVEL_UP_MOVE(45, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(50, MOVE_GRUDGE), + LEVEL_UP_MOVE(55, MOVE_MIRROR_COAT), + LEVEL_UP_END +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_CORSOLA + +#if P_FAMILY_REMORAID static const struct LevelUpMove sRemoraidLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), LEVEL_UP_MOVE( 6, MOVE_LOCK_ON), @@ -4498,12 +6652,37 @@ static const struct LevelUpMove sOctilleryLevelUpLearnset[] = { LEVEL_UP_MOVE(64, MOVE_SOAK), LEVEL_UP_END }; +#endif //P_FAMILY_REMORAID +#if P_FAMILY_DELIBIRD static const struct LevelUpMove sDelibirdLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PRESENT), LEVEL_UP_MOVE(25, MOVE_DRILL_PECK), LEVEL_UP_END }; +#endif //P_FAMILY_DELIBIRD + +#if P_FAMILY_MANTINE +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sMantykeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 3, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 7, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(11, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(14, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(16, MOVE_HEADBUTT), + LEVEL_UP_MOVE(19, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(23, MOVE_WIDE_GUARD), + LEVEL_UP_MOVE(27, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(32, MOVE_AGILITY), + LEVEL_UP_MOVE(36, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(39, MOVE_AQUA_RING), + LEVEL_UP_MOVE(46, MOVE_BOUNCE), + LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS static const struct LevelUpMove sMantineLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PSYBEAM), @@ -4529,7 +6708,9 @@ static const struct LevelUpMove sMantineLevelUpLearnset[] = { LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), LEVEL_UP_END }; +#endif //P_FAMILY_MANTINE +#if P_FAMILY_SKARMORY static const struct LevelUpMove sSkarmoryLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_PECK), @@ -4549,7 +6730,9 @@ static const struct LevelUpMove sSkarmoryLevelUpLearnset[] = { LEVEL_UP_MOVE(53, MOVE_NIGHT_SLASH), LEVEL_UP_END }; +#endif //P_FAMILY_SKARMORY +#if P_FAMILY_HOUNDOUR static const struct LevelUpMove sHoundourLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_EMBER), @@ -4594,28 +6777,9 @@ static const struct LevelUpMove sHoundoomLevelUpLearnset[] = { LEVEL_UP_MOVE(65, MOVE_INFERNO), LEVEL_UP_END }; +#endif //P_FAMILY_HOUNDOUR -static const struct LevelUpMove sKingdraLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE( 1, MOVE_YAWN), - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 5, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE( 9, MOVE_LEER), - LEVEL_UP_MOVE(13, MOVE_WATER_GUN), - LEVEL_UP_MOVE(17, MOVE_TWISTER), - LEVEL_UP_MOVE(21, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(26, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(31, MOVE_BRINE), - LEVEL_UP_MOVE(38, MOVE_AGILITY), - LEVEL_UP_MOVE(45, MOVE_DRAGON_PULSE), - LEVEL_UP_MOVE(52, MOVE_DRAGON_DANCE), - LEVEL_UP_MOVE(60, MOVE_HYDRO_PUMP), - LEVEL_UP_END -}; - +#if P_FAMILY_PHANPY static const struct LevelUpMove sPhanpyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -4653,29 +6817,9 @@ static const struct LevelUpMove sDonphanLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_GIGA_IMPACT), LEVEL_UP_END }; +#endif //P_FAMILY_PHANPY -static const struct LevelUpMove sPorygon2LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE( 1, MOVE_MAGIC_COAT), - LEVEL_UP_MOVE( 1, MOVE_CONVERSION_2), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_CONVERSION), - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 7, MOVE_PSYBEAM), - LEVEL_UP_MOVE(12, MOVE_AGILITY), - LEVEL_UP_MOVE(18, MOVE_RECOVER), - LEVEL_UP_MOVE(23, MOVE_MAGNET_RISE), - LEVEL_UP_MOVE(29, MOVE_SIGNAL_BEAM), - LEVEL_UP_MOVE(34, MOVE_RECYCLE), - LEVEL_UP_MOVE(40, MOVE_DISCHARGE), - LEVEL_UP_MOVE(45, MOVE_LOCK_ON), - LEVEL_UP_MOVE(50, MOVE_TRI_ATTACK), - LEVEL_UP_MOVE(56, MOVE_MAGIC_COAT), - LEVEL_UP_MOVE(62, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE(67, MOVE_HYPER_BEAM), - LEVEL_UP_END -}; - +#if P_FAMILY_STANTLER static const struct LevelUpMove sStantlerLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ME_FIRST), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -4696,6 +6840,29 @@ static const struct LevelUpMove sStantlerLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_8_CROSS_EVOS +static const struct LevelUpMove sWyrdeerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_PSYSHIELD_BASH), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 3, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(10, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(13, MOVE_STOMP), + LEVEL_UP_MOVE(16, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(21, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(23, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(27, MOVE_CALM_MIND), + LEVEL_UP_MOVE(32, MOVE_ROLE_PLAY), + LEVEL_UP_MOVE(37, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(49, MOVE_IMPRISON), + LEVEL_UP_MOVE(55, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(62, MOVE_MEGAHORN), + LEVEL_UP_END +}; +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_STANTLER + +#if P_FAMILY_SMEARGLE static const struct LevelUpMove sSmeargleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SKETCH), LEVEL_UP_MOVE(11, MOVE_SKETCH), @@ -4709,97 +6876,9 @@ static const struct LevelUpMove sSmeargleLevelUpLearnset[] = { LEVEL_UP_MOVE(91, MOVE_SKETCH), LEVEL_UP_END }; +#endif //P_FAMILY_SMEARGLE -static const struct LevelUpMove sTyrogueLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), - LEVEL_UP_MOVE( 1, MOVE_FAKE_OUT), - LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sHitmontopLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_ROLLING_KICK), - LEVEL_UP_MOVE( 1, MOVE_ROLLING_KICK), - LEVEL_UP_MOVE( 1, MOVE_ENDEAVOR), - LEVEL_UP_MOVE( 1, MOVE_CLOSE_COMBAT), - LEVEL_UP_MOVE( 1, MOVE_DETECT), - LEVEL_UP_MOVE( 1, MOVE_REVENGE), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 1, MOVE_PURSUIT), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(10, MOVE_PURSUIT), - LEVEL_UP_MOVE(15, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(19, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE(24, MOVE_FEINT), - LEVEL_UP_MOVE(28, MOVE_COUNTER), - LEVEL_UP_MOVE(33, MOVE_TRIPLE_KICK), - LEVEL_UP_MOVE(37, MOVE_AGILITY), - LEVEL_UP_MOVE(42, MOVE_GYRO_BALL), - LEVEL_UP_MOVE(46, MOVE_WIDE_GUARD), - LEVEL_UP_MOVE(46, MOVE_QUICK_GUARD), - LEVEL_UP_MOVE(50, MOVE_DETECT), - LEVEL_UP_MOVE(55, MOVE_CLOSE_COMBAT), - LEVEL_UP_MOVE(60, MOVE_ENDEAVOR), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSmoochumLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 5, MOVE_LICK), - LEVEL_UP_MOVE( 8, MOVE_SWEET_KISS), - LEVEL_UP_MOVE(11, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE(15, MOVE_CONFUSION), - LEVEL_UP_MOVE(18, MOVE_SING), - LEVEL_UP_MOVE(21, MOVE_HEART_STAMP), - LEVEL_UP_MOVE(25, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(28, MOVE_FAKE_TEARS), - LEVEL_UP_MOVE(31, MOVE_LUCKY_CHANT), - LEVEL_UP_MOVE(35, MOVE_AVALANCHE), - LEVEL_UP_MOVE(38, MOVE_PSYCHIC), - LEVEL_UP_MOVE(41, MOVE_COPYCAT), - LEVEL_UP_MOVE(45, MOVE_PERISH_SONG), - LEVEL_UP_MOVE(48, MOVE_BLIZZARD), - LEVEL_UP_END -}; - -static const struct LevelUpMove sElekidLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 5, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 8, MOVE_LOW_KICK), - LEVEL_UP_MOVE(12, MOVE_SWIFT), - LEVEL_UP_MOVE(15, MOVE_SHOCK_WAVE), - LEVEL_UP_MOVE(19, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(22, MOVE_ELECTRO_BALL), - LEVEL_UP_MOVE(26, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(29, MOVE_THUNDER_PUNCH), - LEVEL_UP_MOVE(33, MOVE_DISCHARGE), - LEVEL_UP_MOVE(36, MOVE_SCREECH), - LEVEL_UP_MOVE(40, MOVE_THUNDERBOLT), - LEVEL_UP_MOVE(43, MOVE_THUNDER), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMagbyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SMOG), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 5, MOVE_EMBER), - LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(12, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(15, MOVE_FIRE_SPIN), - LEVEL_UP_MOVE(19, MOVE_CLEAR_SMOG), - LEVEL_UP_MOVE(22, MOVE_FLAME_BURST), - LEVEL_UP_MOVE(26, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(29, MOVE_FIRE_PUNCH), - LEVEL_UP_MOVE(33, MOVE_LAVA_PLUME), - LEVEL_UP_MOVE(36, MOVE_SUNNY_DAY), - LEVEL_UP_MOVE(40, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(43, MOVE_FIRE_BLAST), - LEVEL_UP_END -}; - +#if P_FAMILY_MILTANK static const struct LevelUpMove sMiltankLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 3, MOVE_GROWL), @@ -4816,29 +6895,9 @@ static const struct LevelUpMove sMiltankLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_WAKE_UP_SLAP), LEVEL_UP_END }; +#endif //P_FAMILY_MILTANK -static const struct LevelUpMove sBlisseyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 9, MOVE_REFRESH), - LEVEL_UP_MOVE(12, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE(16, MOVE_SOFT_BOILED), - LEVEL_UP_MOVE(20, MOVE_BESTOW), - LEVEL_UP_MOVE(23, MOVE_MINIMIZE), - LEVEL_UP_MOVE(27, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(31, MOVE_SING), - LEVEL_UP_MOVE(34, MOVE_FLING), - LEVEL_UP_MOVE(39, MOVE_HEAL_PULSE), - LEVEL_UP_MOVE(44, MOVE_EGG_BOMB), - LEVEL_UP_MOVE(50, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(57, MOVE_HEALING_WISH), - LEVEL_UP_MOVE(65, MOVE_DOUBLE_EDGE), - LEVEL_UP_END -}; - +#if P_FAMILY_RAIKOU static const struct LevelUpMove sRaikouLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_EXTRASENSORY), LEVEL_UP_MOVE( 1, MOVE_DISCHARGE), @@ -4858,7 +6917,9 @@ static const struct LevelUpMove sRaikouLevelUpLearnset[] = { LEVEL_UP_MOVE(85, MOVE_THUNDER), LEVEL_UP_END }; +#endif //P_FAMILY_RAIKOU +#if P_FAMILY_ENTEI static const struct LevelUpMove sEnteiLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SACRED_FIRE), LEVEL_UP_MOVE( 1, MOVE_ERUPTION), @@ -4880,7 +6941,9 @@ static const struct LevelUpMove sEnteiLevelUpLearnset[] = { LEVEL_UP_MOVE(85, MOVE_ERUPTION), LEVEL_UP_END }; +#endif //P_FAMILY_ENTEI +#if P_FAMILY_SUICUNE static const struct LevelUpMove sSuicuneLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SHEER_COLD), LEVEL_UP_MOVE( 1, MOVE_BITE), @@ -4901,7 +6964,9 @@ static const struct LevelUpMove sSuicuneLevelUpLearnset[] = { LEVEL_UP_MOVE(85, MOVE_BLIZZARD), LEVEL_UP_END }; +#endif //P_FAMILY_SUICUNE +#if P_FAMILY_LARVITAR static const struct LevelUpMove sLarvitarLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BITE), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -4963,7 +7028,9 @@ static const struct LevelUpMove sTyranitarLevelUpLearnset[] = { LEVEL_UP_MOVE(82, MOVE_GIGA_IMPACT), LEVEL_UP_END }; +#endif //P_FAMILY_LARVITAR +#if P_FAMILY_LUGIA static const struct LevelUpMove sLugiaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), LEVEL_UP_MOVE( 1, MOVE_WEATHER_BALL), @@ -4983,7 +7050,9 @@ static const struct LevelUpMove sLugiaLevelUpLearnset[] = { LEVEL_UP_MOVE(99, MOVE_SKY_ATTACK), LEVEL_UP_END }; +#endif //P_FAMILY_LUGIA +#if P_FAMILY_HO_OH static const struct LevelUpMove sHoOhLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), LEVEL_UP_MOVE( 1, MOVE_WEATHER_BALL), @@ -5003,7 +7072,9 @@ static const struct LevelUpMove sHoOhLevelUpLearnset[] = { LEVEL_UP_MOVE(99, MOVE_SKY_ATTACK), LEVEL_UP_END }; +#endif //P_FAMILY_HO_OH +#if P_FAMILY_CELEBI static const struct LevelUpMove sCelebiLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), LEVEL_UP_MOVE( 1, MOVE_CONFUSION), @@ -5021,132 +7092,9 @@ static const struct LevelUpMove sCelebiLevelUpLearnset[] = { LEVEL_UP_MOVE(91, MOVE_PERISH_SONG), LEVEL_UP_END }; +#endif //P_FAMILY_CELEBI -static const struct LevelUpMove sSpecies252LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies253LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies254LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies255LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies256LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies257LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies258LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies259LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies260LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies261LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies262LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies263LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies264LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies265LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies266LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies267LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies268LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies269LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies270LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies271LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies272LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies273LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies274LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies275LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpecies276LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_END -}; - +#if P_FAMILY_TREECKO static const struct LevelUpMove sTreeckoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -5213,7 +7161,9 @@ static const struct LevelUpMove sSceptileLevelUpLearnset[] = { LEVEL_UP_MOVE(69, MOVE_SCREECH), LEVEL_UP_END }; +#endif //P_FAMILY_TREECKO +#if P_FAMILY_TORCHIC static const struct LevelUpMove sTorchicLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -5275,7 +7225,9 @@ static const struct LevelUpMove sBlazikenLevelUpLearnset[] = { LEVEL_UP_MOVE(63, MOVE_FLARE_BLITZ), LEVEL_UP_END }; +#endif //P_FAMILY_TORCHIC +#if P_FAMILY_MUDKIP static const struct LevelUpMove sMudkipLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -5335,7 +7287,9 @@ static const struct LevelUpMove sSwampertLevelUpLearnset[] = { LEVEL_UP_MOVE(63, MOVE_HAMMER_ARM), LEVEL_UP_END }; +#endif //P_FAMILY_MUDKIP +#if P_FAMILY_POOCHYENA static const struct LevelUpMove sPoochyenaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 4, MOVE_HOWL), @@ -5385,7 +7339,9 @@ static const struct LevelUpMove sMightyenaLevelUpLearnset[] = { LEVEL_UP_MOVE(56, MOVE_PLAY_ROUGH), LEVEL_UP_END }; +#endif //P_FAMILY_POOCHYENA +#if P_FAMILY_ZIGZAGOON static const struct LevelUpMove sZigzagoonLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -5430,6 +7386,77 @@ static const struct LevelUpMove sLinooneLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GALARIAN_FORMS +static const struct LevelUpMove sZigzagoonGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 3, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_LICK), + LEVEL_UP_MOVE( 9, MOVE_SNARL), + LEVEL_UP_MOVE(12, MOVE_HEADBUTT), + LEVEL_UP_MOVE(15, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE(18, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(21, MOVE_REST), + LEVEL_UP_MOVE(24, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(27, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(30, MOVE_COUNTER), + LEVEL_UP_MOVE(33, MOVE_TAUNT), + LEVEL_UP_MOVE(36, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sLinooneGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE( 1, MOVE_SWITCHEROO), + LEVEL_UP_MOVE( 1, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE( 1, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 9, MOVE_SNARL), + LEVEL_UP_MOVE(12, MOVE_HEADBUTT), + LEVEL_UP_MOVE(15, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(18, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(23, MOVE_REST), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(33, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(38, MOVE_COUNTER), + LEVEL_UP_MOVE(43, MOVE_TAUNT), + LEVEL_UP_MOVE(48, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sObstagoonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_OBSTRUCT), + LEVEL_UP_MOVE( 1, MOVE_OBSTRUCT), + LEVEL_UP_MOVE( 1, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE( 1, MOVE_SUBMISSION), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE( 1, MOVE_SWITCHEROO), + LEVEL_UP_MOVE( 1, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE( 1, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 9, MOVE_SNARL), + LEVEL_UP_MOVE(12, MOVE_HEADBUTT), + LEVEL_UP_MOVE(15, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(18, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(23, MOVE_REST), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(35, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(42, MOVE_COUNTER), + LEVEL_UP_MOVE(49, MOVE_TAUNT), + LEVEL_UP_MOVE(56, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZIGZAGOON + +#if P_FAMILY_WURMPLE static const struct LevelUpMove sWurmpleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), @@ -5485,7 +7512,9 @@ static const struct LevelUpMove sDustoxLevelUpLearnset[] = { LEVEL_UP_MOVE(40, MOVE_QUIVER_DANCE), LEVEL_UP_END }; +#endif //P_FAMILY_WURMPLE +#if P_FAMILY_LOTAD static const struct LevelUpMove sLotadLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ASTONISH), LEVEL_UP_MOVE( 3, MOVE_GROWL), @@ -5527,7 +7556,9 @@ static const struct LevelUpMove sLudicoloLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_NATURE_POWER), LEVEL_UP_END }; +#endif //P_FAMILY_LOTAD +#if P_FAMILY_SEEDOT static const struct LevelUpMove sSeedotLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BIDE), LEVEL_UP_MOVE( 3, MOVE_HARDEN), @@ -5566,65 +7597,9 @@ static const struct LevelUpMove sShiftryLevelUpLearnset[] = { LEVEL_UP_MOVE(44, MOVE_LEAF_STORM), LEVEL_UP_END }; +#endif //P_FAMILY_SEEDOT -static const struct LevelUpMove sNincadaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 5, MOVE_ABSORB), - LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(17, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(21, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(25, MOVE_MIND_READER), - LEVEL_UP_MOVE(29, MOVE_BIDE), - LEVEL_UP_MOVE(33, MOVE_FALSE_SWIPE), - LEVEL_UP_MOVE(37, MOVE_DIG), - LEVEL_UP_END -}; - -static const struct LevelUpMove sNinjaskLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE( 0, MOVE_SCREECH), - LEVEL_UP_MOVE( 0, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE( 1, MOVE_SCREECH), - LEVEL_UP_MOVE( 1, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE( 1, MOVE_BUG_BITE), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 5, MOVE_ABSORB), - LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(17, MOVE_AGILITY), - LEVEL_UP_MOVE(23, MOVE_SLASH), - LEVEL_UP_MOVE(29, MOVE_MIND_READER), - LEVEL_UP_MOVE(35, MOVE_BATON_PASS), - LEVEL_UP_MOVE(41, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(47, MOVE_X_SCISSOR), - LEVEL_UP_END -}; - -static const struct LevelUpMove sShedinjaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 5, MOVE_ABSORB), - LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(17, MOVE_SPITE), - LEVEL_UP_MOVE(21, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE(25, MOVE_MIND_READER), - LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(33, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(37, MOVE_GRUDGE), - LEVEL_UP_MOVE(41, MOVE_HEAL_BLOCK), - LEVEL_UP_MOVE(45, MOVE_PHANTOM_FORCE), - LEVEL_UP_END -}; - +#if P_FAMILY_TAILLOW static const struct LevelUpMove sTaillowLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -5663,62 +7638,9 @@ static const struct LevelUpMove sSwellowLevelUpLearnset[] = { LEVEL_UP_MOVE(57, MOVE_REVERSAL), LEVEL_UP_END }; +#endif //P_FAMILY_TAILLOW -static const struct LevelUpMove sShroomishLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_STUN_SPORE), - LEVEL_UP_MOVE( 8, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(12, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(15, MOVE_HEADBUTT), - LEVEL_UP_MOVE(19, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(22, MOVE_WORRY_SEED), - LEVEL_UP_MOVE(26, MOVE_GIGA_DRAIN), - LEVEL_UP_MOVE(29, MOVE_GROWTH), - LEVEL_UP_MOVE(33, MOVE_TOXIC), - LEVEL_UP_MOVE(36, MOVE_SEED_BOMB), - LEVEL_UP_MOVE(40, MOVE_SPORE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sBreloomLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_MACH_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_MACH_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), - LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), - LEVEL_UP_MOVE( 5, MOVE_STUN_SPORE), - LEVEL_UP_MOVE( 8, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(12, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(15, MOVE_HEADBUTT), - LEVEL_UP_MOVE(19, MOVE_FEINT), - LEVEL_UP_MOVE(22, MOVE_COUNTER), - LEVEL_UP_MOVE(28, MOVE_FORCE_PALM), - LEVEL_UP_MOVE(33, MOVE_MIND_READER), - LEVEL_UP_MOVE(39, MOVE_SKY_UPPERCUT), - LEVEL_UP_MOVE(44, MOVE_SEED_BOMB), - LEVEL_UP_MOVE(50, MOVE_DYNAMIC_PUNCH), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpindaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_COPYCAT), - LEVEL_UP_MOVE(10, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(14, MOVE_PSYBEAM), - LEVEL_UP_MOVE(19, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(23, MOVE_DIZZY_PUNCH), - LEVEL_UP_MOVE(28, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(32, MOVE_TEETER_DANCE), - LEVEL_UP_MOVE(37, MOVE_UPROAR), - LEVEL_UP_MOVE(41, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(46, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(50, MOVE_FLAIL), - LEVEL_UP_MOVE(55, MOVE_THRASH), - LEVEL_UP_END -}; - +#if P_FAMILY_WINGULL static const struct LevelUpMove sWingullLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), @@ -5764,1733 +7686,9 @@ static const struct LevelUpMove sPelipperLevelUpLearnset[] = { LEVEL_UP_MOVE(55, MOVE_HURRICANE), LEVEL_UP_END }; +#endif //P_FAMILY_WINGULL -static const struct LevelUpMove sSurskitLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 6, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 9, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(14, MOVE_WATER_SPORT), - LEVEL_UP_MOVE(17, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(22, MOVE_AGILITY), - LEVEL_UP_MOVE(25, MOVE_MIST), - LEVEL_UP_MOVE(25, MOVE_HAZE), - LEVEL_UP_MOVE(30, MOVE_AQUA_JET), - LEVEL_UP_MOVE(35, MOVE_BATON_PASS), - LEVEL_UP_MOVE(38, MOVE_STICKY_WEB), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMasquerainLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_QUIVER_DANCE), - LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), - LEVEL_UP_MOVE( 1, MOVE_BUG_BUZZ), - LEVEL_UP_MOVE( 1, MOVE_OMINOUS_WIND), - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 6, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 9, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(14, MOVE_WATER_SPORT), - LEVEL_UP_MOVE(17, MOVE_GUST), - LEVEL_UP_MOVE(22, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(22, MOVE_AIR_CUTTER), - LEVEL_UP_MOVE(26, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(32, MOVE_SILVER_WIND), - LEVEL_UP_MOVE(38, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(42, MOVE_BUG_BUZZ), - LEVEL_UP_MOVE(48, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(52, MOVE_QUIVER_DANCE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sWailmerLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE( 4, MOVE_GROWL), - LEVEL_UP_MOVE( 7, MOVE_WATER_GUN), - LEVEL_UP_MOVE(10, MOVE_ROLLOUT), - LEVEL_UP_MOVE(13, MOVE_WHIRLPOOL), - LEVEL_UP_MOVE(16, MOVE_ASTONISH), - LEVEL_UP_MOVE(19, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(22, MOVE_MIST), - LEVEL_UP_MOVE(25, MOVE_BRINE), - LEVEL_UP_MOVE(29, MOVE_REST), - LEVEL_UP_MOVE(33, MOVE_WATER_SPOUT), - LEVEL_UP_MOVE(37, MOVE_AMNESIA), - LEVEL_UP_MOVE(41, MOVE_DIVE), - LEVEL_UP_MOVE(45, MOVE_BOUNCE), - LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(53, MOVE_HEAVY_SLAM), - LEVEL_UP_END -}; - -static const struct LevelUpMove sWailordLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SOAK), - LEVEL_UP_MOVE( 1, MOVE_NOBLE_ROAR), - LEVEL_UP_MOVE( 1, MOVE_HEAVY_SLAM), - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 1, MOVE_ROLLOUT), - LEVEL_UP_MOVE( 4, MOVE_GROWL), - LEVEL_UP_MOVE( 7, MOVE_WATER_GUN), - LEVEL_UP_MOVE(10, MOVE_ROLLOUT), - LEVEL_UP_MOVE(13, MOVE_WHIRLPOOL), - LEVEL_UP_MOVE(16, MOVE_ASTONISH), - LEVEL_UP_MOVE(19, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(22, MOVE_MIST), - LEVEL_UP_MOVE(25, MOVE_BRINE), - LEVEL_UP_MOVE(29, MOVE_REST), - LEVEL_UP_MOVE(33, MOVE_WATER_SPOUT), - LEVEL_UP_MOVE(37, MOVE_AMNESIA), - LEVEL_UP_MOVE(44, MOVE_DIVE), - LEVEL_UP_MOVE(51, MOVE_BOUNCE), - LEVEL_UP_MOVE(58, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(65, MOVE_HEAVY_SLAM), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSkittyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FAKE_OUT), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 4, MOVE_FORESIGHT), - LEVEL_UP_MOVE( 7, MOVE_SING), - LEVEL_UP_MOVE(10, MOVE_ATTRACT), - LEVEL_UP_MOVE(13, MOVE_DISARMING_VOICE), - LEVEL_UP_MOVE(16, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE(19, MOVE_COPYCAT), - LEVEL_UP_MOVE(22, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(25, MOVE_CHARM), - LEVEL_UP_MOVE(28, MOVE_WAKE_UP_SLAP), - LEVEL_UP_MOVE(31, MOVE_ASSIST), - LEVEL_UP_MOVE(34, MOVE_COVET), - LEVEL_UP_MOVE(37, MOVE_HEAL_BELL), - LEVEL_UP_MOVE(40, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(43, MOVE_CAPTIVATE), - LEVEL_UP_MOVE(46, MOVE_PLAY_ROUGH), - LEVEL_UP_END -}; - -static const struct LevelUpMove sDelcattyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FAKE_OUT), - LEVEL_UP_MOVE( 1, MOVE_SING), - LEVEL_UP_MOVE( 1, MOVE_ATTRACT), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), - LEVEL_UP_END -}; - -static const struct LevelUpMove sKecleonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_THIEF), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_LICK), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 4, MOVE_BIND), - LEVEL_UP_MOVE( 7, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE(10, MOVE_FEINT), - LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(16, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(18, MOVE_PSYBEAM), - LEVEL_UP_MOVE(21, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(25, MOVE_SLASH), - LEVEL_UP_MOVE(30, MOVE_CAMOUFLAGE), - LEVEL_UP_MOVE(33, MOVE_SHADOW_CLAW), - LEVEL_UP_MOVE(38, MOVE_SCREECH), - LEVEL_UP_MOVE(42, MOVE_SUBSTITUTE), - LEVEL_UP_MOVE(46, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(50, MOVE_SYNCHRONOISE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sBaltoyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 4, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(10, MOVE_HEAL_BLOCK), - LEVEL_UP_MOVE(13, MOVE_ROCK_TOMB), - LEVEL_UP_MOVE(16, MOVE_PSYBEAM), - LEVEL_UP_MOVE(19, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(22, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(25, MOVE_POWER_TRICK), - LEVEL_UP_MOVE(28, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(31, MOVE_EXTRASENSORY), - LEVEL_UP_MOVE(34, MOVE_GUARD_SPLIT), - LEVEL_UP_MOVE(34, MOVE_POWER_SPLIT), - LEVEL_UP_MOVE(37, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(40, MOVE_SANDSTORM), - LEVEL_UP_MOVE(43, MOVE_IMPRISON), - LEVEL_UP_MOVE(46, MOVE_EXPLOSION), - LEVEL_UP_END -}; - -static const struct LevelUpMove sClaydolLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_HYPER_BEAM), - LEVEL_UP_MOVE( 1, MOVE_HYPER_BEAM), - LEVEL_UP_MOVE( 1, MOVE_TELEPORT), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE( 4, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(10, MOVE_HEAL_BLOCK), - LEVEL_UP_MOVE(13, MOVE_ROCK_TOMB), - LEVEL_UP_MOVE(16, MOVE_PSYBEAM), - LEVEL_UP_MOVE(19, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(22, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(25, MOVE_POWER_TRICK), - LEVEL_UP_MOVE(28, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(31, MOVE_EXTRASENSORY), - LEVEL_UP_MOVE(34, MOVE_GUARD_SPLIT), - LEVEL_UP_MOVE(34, MOVE_POWER_SPLIT), - LEVEL_UP_MOVE(40, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(46, MOVE_SANDSTORM), - LEVEL_UP_MOVE(52, MOVE_IMPRISON), - LEVEL_UP_MOVE(58, MOVE_EXPLOSION), - LEVEL_UP_END -}; - -static const struct LevelUpMove sNosepassLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 4, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_BLOCK), - LEVEL_UP_MOVE(10, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(13, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(16, MOVE_REST), - LEVEL_UP_MOVE(19, MOVE_SPARK), - LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(25, MOVE_POWER_GEM), - LEVEL_UP_MOVE(28, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(31, MOVE_DISCHARGE), - LEVEL_UP_MOVE(34, MOVE_SANDSTORM), - LEVEL_UP_MOVE(37, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(40, MOVE_STONE_EDGE), - LEVEL_UP_MOVE(43, MOVE_LOCK_ON), - LEVEL_UP_MOVE(43, MOVE_ZAP_CANNON), - LEVEL_UP_END -}; - -static const struct LevelUpMove sTorkoalLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 4, MOVE_SMOG), - LEVEL_UP_MOVE( 7, MOVE_WITHDRAW), - LEVEL_UP_MOVE(10, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE(13, MOVE_FIRE_SPIN), - LEVEL_UP_MOVE(15, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(18, MOVE_FLAME_WHEEL), - LEVEL_UP_MOVE(22, MOVE_CURSE), - LEVEL_UP_MOVE(25, MOVE_LAVA_PLUME), - LEVEL_UP_MOVE(27, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(30, MOVE_PROTECT), - LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(38, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(40, MOVE_AMNESIA), - LEVEL_UP_MOVE(42, MOVE_FLAIL), - LEVEL_UP_MOVE(45, MOVE_HEAT_WAVE), - LEVEL_UP_MOVE(47, MOVE_SHELL_SMASH), - LEVEL_UP_MOVE(50, MOVE_INFERNO), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSableyeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 4, MOVE_FORESIGHT), - LEVEL_UP_MOVE( 6, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE( 9, MOVE_ASTONISH), - LEVEL_UP_MOVE(11, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(14, MOVE_DETECT), - LEVEL_UP_MOVE(16, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(21, MOVE_FAKE_OUT), - LEVEL_UP_MOVE(24, MOVE_PUNISHMENT), - LEVEL_UP_MOVE(26, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(29, MOVE_SHADOW_CLAW), - LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(34, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(36, MOVE_POWER_GEM), - LEVEL_UP_MOVE(39, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(41, MOVE_FOUL_PLAY), - LEVEL_UP_MOVE(44, MOVE_QUASH), - LEVEL_UP_MOVE(46, MOVE_MEAN_LOOK), - LEVEL_UP_END -}; - -static const struct LevelUpMove sBarboachLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 6, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 9, MOVE_WATER_GUN), - LEVEL_UP_MOVE(13, MOVE_MUD_BOMB), - LEVEL_UP_MOVE(15, MOVE_AMNESIA), - LEVEL_UP_MOVE(17, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(20, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(25, MOVE_REST), - LEVEL_UP_MOVE(25, MOVE_SNORE), - LEVEL_UP_MOVE(28, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(32, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(35, MOVE_MUDDY_WATER), - LEVEL_UP_MOVE(39, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(44, MOVE_FISSURE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sWhiscashLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_THRASH), - LEVEL_UP_MOVE( 1, MOVE_THRASH), - LEVEL_UP_MOVE( 1, MOVE_BELCH), - LEVEL_UP_MOVE( 1, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE( 1, MOVE_TICKLE), - LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 6, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 9, MOVE_WATER_GUN), - LEVEL_UP_MOVE(13, MOVE_MUD_BOMB), - LEVEL_UP_MOVE(15, MOVE_AMNESIA), - LEVEL_UP_MOVE(17, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(20, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(25, MOVE_REST), - LEVEL_UP_MOVE(25, MOVE_SNORE), - LEVEL_UP_MOVE(28, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(34, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(39, MOVE_MUDDY_WATER), - LEVEL_UP_MOVE(45, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(52, MOVE_FISSURE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sLuvdiscLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_CHARM), - LEVEL_UP_MOVE( 4, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 7, MOVE_AGILITY), - LEVEL_UP_MOVE( 9, MOVE_DRAINING_KISS), - LEVEL_UP_MOVE(13, MOVE_LUCKY_CHANT), - LEVEL_UP_MOVE(17, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(20, MOVE_ATTRACT), - LEVEL_UP_MOVE(22, MOVE_HEART_STAMP), - LEVEL_UP_MOVE(26, MOVE_FLAIL), - LEVEL_UP_MOVE(31, MOVE_SWEET_KISS), - LEVEL_UP_MOVE(34, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(37, MOVE_CAPTIVATE), - LEVEL_UP_MOVE(40, MOVE_AQUA_RING), - LEVEL_UP_MOVE(42, MOVE_SOAK), - LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(49, MOVE_SAFEGUARD), - LEVEL_UP_END -}; - -static const struct LevelUpMove sCorphishLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 5, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_VISE_GRIP), - LEVEL_UP_MOVE(10, MOVE_LEER), - LEVEL_UP_MOVE(14, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(17, MOVE_PROTECT), - LEVEL_UP_MOVE(20, MOVE_DOUBLE_HIT), - LEVEL_UP_MOVE(23, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(26, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE(31, MOVE_RAZOR_SHELL), - LEVEL_UP_MOVE(34, MOVE_TAUNT), - LEVEL_UP_MOVE(37, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(39, MOVE_CRUNCH), - LEVEL_UP_MOVE(43, MOVE_CRABHAMMER), - LEVEL_UP_MOVE(48, MOVE_GUILLOTINE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sCrawdauntLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_SWIFT), - LEVEL_UP_MOVE( 1, MOVE_SWIFT), - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_VISE_GRIP), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 5, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_VISE_GRIP), - LEVEL_UP_MOVE(10, MOVE_LEER), - LEVEL_UP_MOVE(14, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(17, MOVE_PROTECT), - LEVEL_UP_MOVE(20, MOVE_DOUBLE_HIT), - LEVEL_UP_MOVE(23, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(26, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE(32, MOVE_RAZOR_SHELL), - LEVEL_UP_MOVE(36, MOVE_TAUNT), - LEVEL_UP_MOVE(40, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(43, MOVE_CRUNCH), - LEVEL_UP_MOVE(48, MOVE_CRABHAMMER), - LEVEL_UP_MOVE(54, MOVE_GUILLOTINE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sFeebasLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE(15, MOVE_TACKLE), - LEVEL_UP_MOVE(30, MOVE_FLAIL), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMiloticLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_WATER_PULSE), - LEVEL_UP_MOVE( 1, MOVE_WATER_PULSE), - LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 1, MOVE_REFRESH), - LEVEL_UP_MOVE( 4, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 7, MOVE_REFRESH), - LEVEL_UP_MOVE(11, MOVE_DISARMING_VOICE), - LEVEL_UP_MOVE(14, MOVE_TWISTER), - LEVEL_UP_MOVE(17, MOVE_AQUA_RING), - LEVEL_UP_MOVE(21, MOVE_CAPTIVATE), - LEVEL_UP_MOVE(24, MOVE_DRAGON_TAIL), - LEVEL_UP_MOVE(27, MOVE_RECOVER), - LEVEL_UP_MOVE(31, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(34, MOVE_ATTRACT), - LEVEL_UP_MOVE(37, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(41, MOVE_COIL), - LEVEL_UP_MOVE(44, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(47, MOVE_RAIN_DANCE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sCarvanhaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 4, MOVE_RAGE), - LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(11, MOVE_AQUA_JET), - LEVEL_UP_MOVE(15, MOVE_ASSURANCE), - LEVEL_UP_MOVE(18, MOVE_SCREECH), - LEVEL_UP_MOVE(22, MOVE_SWAGGER), - LEVEL_UP_MOVE(25, MOVE_ICE_FANG), - LEVEL_UP_MOVE(29, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(32, MOVE_POISON_FANG), - LEVEL_UP_MOVE(36, MOVE_CRUNCH), - LEVEL_UP_MOVE(39, MOVE_AGILITY), - LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSharpedoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_SLASH), - LEVEL_UP_MOVE( 1, MOVE_SLASH), - LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE( 1, MOVE_FEINT), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_RAGE), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 4, MOVE_RAGE), - LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(11, MOVE_AQUA_JET), - LEVEL_UP_MOVE(15, MOVE_ASSURANCE), - LEVEL_UP_MOVE(18, MOVE_SCREECH), - LEVEL_UP_MOVE(22, MOVE_SWAGGER), - LEVEL_UP_MOVE(25, MOVE_ICE_FANG), - LEVEL_UP_MOVE(29, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(34, MOVE_POISON_FANG), - LEVEL_UP_MOVE(40, MOVE_CRUNCH), - LEVEL_UP_MOVE(45, MOVE_AGILITY), - LEVEL_UP_MOVE(51, MOVE_SKULL_BASH), - LEVEL_UP_MOVE(56, MOVE_TAUNT), - LEVEL_UP_MOVE(62, MOVE_NIGHT_SLASH), - LEVEL_UP_END -}; - -static const struct LevelUpMove sTrapinchLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_BIDE), - LEVEL_UP_MOVE( 5, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 8, MOVE_BULLDOZE), - LEVEL_UP_MOVE(12, MOVE_SAND_TOMB), - LEVEL_UP_MOVE(15, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(19, MOVE_DIG), - LEVEL_UP_MOVE(22, MOVE_CRUNCH), - LEVEL_UP_MOVE(26, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(29, MOVE_FEINT), - LEVEL_UP_MOVE(33, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(36, MOVE_SANDSTORM), - LEVEL_UP_MOVE(40, MOVE_SUPERPOWER), - LEVEL_UP_MOVE(43, MOVE_HYPER_BEAM), - LEVEL_UP_MOVE(47, MOVE_FISSURE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sVibravaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE( 1, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE( 1, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_BIDE), - LEVEL_UP_MOVE( 5, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 8, MOVE_BULLDOZE), - LEVEL_UP_MOVE(12, MOVE_SAND_TOMB), - LEVEL_UP_MOVE(15, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(19, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(22, MOVE_SCREECH), - LEVEL_UP_MOVE(26, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(29, MOVE_BUG_BUZZ), - LEVEL_UP_MOVE(33, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(36, MOVE_SANDSTORM), - LEVEL_UP_MOVE(40, MOVE_UPROAR), - LEVEL_UP_MOVE(43, MOVE_HYPER_BEAM), - LEVEL_UP_MOVE(47, MOVE_BOOMBURST), - LEVEL_UP_END -}; - -static const struct LevelUpMove sFlygonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_DRAGON_CLAW), - LEVEL_UP_MOVE( 1, MOVE_DRAGON_CLAW), - LEVEL_UP_MOVE( 1, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE( 1, MOVE_DRAGON_DANCE), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE( 1, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_BIDE), - LEVEL_UP_MOVE( 5, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 8, MOVE_BULLDOZE), - LEVEL_UP_MOVE(12, MOVE_SAND_TOMB), - LEVEL_UP_MOVE(15, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(19, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(22, MOVE_SCREECH), - LEVEL_UP_MOVE(26, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(29, MOVE_DRAGON_TAIL), - LEVEL_UP_MOVE(33, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(36, MOVE_SANDSTORM), - LEVEL_UP_MOVE(40, MOVE_UPROAR), - LEVEL_UP_MOVE(43, MOVE_HYPER_BEAM), - LEVEL_UP_MOVE(47, MOVE_DRAGON_RUSH), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMakuhitaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 7, MOVE_ARM_THRUST), - LEVEL_UP_MOVE(10, MOVE_FAKE_OUT), - LEVEL_UP_MOVE(13, MOVE_FORCE_PALM), - LEVEL_UP_MOVE(16, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(22, MOVE_VITAL_THROW), - LEVEL_UP_MOVE(25, MOVE_BELLY_DRUM), - LEVEL_UP_MOVE(28, MOVE_SMELLING_SALTS), - LEVEL_UP_MOVE(31, MOVE_SEISMIC_TOSS), - LEVEL_UP_MOVE(34, MOVE_WAKE_UP_SLAP), - LEVEL_UP_MOVE(37, MOVE_ENDURE), - LEVEL_UP_MOVE(40, MOVE_CLOSE_COMBAT), - LEVEL_UP_MOVE(43, MOVE_REVERSAL), - LEVEL_UP_MOVE(46, MOVE_HEAVY_SLAM), - LEVEL_UP_END -}; - -static const struct LevelUpMove sHariyamaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BRINE), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_ARM_THRUST), - LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 7, MOVE_ARM_THRUST), - LEVEL_UP_MOVE(10, MOVE_FAKE_OUT), - LEVEL_UP_MOVE(13, MOVE_FORCE_PALM), - LEVEL_UP_MOVE(16, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(22, MOVE_VITAL_THROW), - LEVEL_UP_MOVE(26, MOVE_BELLY_DRUM), - LEVEL_UP_MOVE(30, MOVE_SMELLING_SALTS), - LEVEL_UP_MOVE(34, MOVE_SEISMIC_TOSS), - LEVEL_UP_MOVE(38, MOVE_WAKE_UP_SLAP), - LEVEL_UP_MOVE(42, MOVE_ENDURE), - LEVEL_UP_MOVE(46, MOVE_CLOSE_COMBAT), - LEVEL_UP_MOVE(50, MOVE_REVERSAL), - LEVEL_UP_MOVE(54, MOVE_HEAVY_SLAM), - LEVEL_UP_END -}; - -static const struct LevelUpMove sElectrikeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 4, MOVE_LEER), - LEVEL_UP_MOVE( 7, MOVE_HOWL), - LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(13, MOVE_SPARK), - LEVEL_UP_MOVE(16, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(19, MOVE_THUNDER_FANG), - LEVEL_UP_MOVE(24, MOVE_BITE), - LEVEL_UP_MOVE(29, MOVE_DISCHARGE), - LEVEL_UP_MOVE(34, MOVE_ROAR), - LEVEL_UP_MOVE(39, MOVE_WILD_CHARGE), - LEVEL_UP_MOVE(44, MOVE_CHARGE), - LEVEL_UP_MOVE(49, MOVE_THUNDER), - LEVEL_UP_END -}; - -static const struct LevelUpMove sManectricLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN), - LEVEL_UP_MOVE( 1, MOVE_FIRE_FANG), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_HOWL), - LEVEL_UP_MOVE( 4, MOVE_LEER), - LEVEL_UP_MOVE( 7, MOVE_HOWL), - LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(13, MOVE_SPARK), - LEVEL_UP_MOVE(16, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(19, MOVE_THUNDER_FANG), - LEVEL_UP_MOVE(24, MOVE_BITE), - LEVEL_UP_MOVE(30, MOVE_DISCHARGE), - LEVEL_UP_MOVE(36, MOVE_ROAR), - LEVEL_UP_MOVE(42, MOVE_WILD_CHARGE), - LEVEL_UP_MOVE(48, MOVE_CHARGE), - LEVEL_UP_MOVE(54, MOVE_THUNDER), - LEVEL_UP_MOVE(60, MOVE_ELECTRIC_TERRAIN), - LEVEL_UP_END -}; - -static const struct LevelUpMove sNumelLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_EMBER), - LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(12, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(15, MOVE_FLAME_BURST), - LEVEL_UP_MOVE(19, MOVE_AMNESIA), - LEVEL_UP_MOVE(22, MOVE_LAVA_PLUME), - LEVEL_UP_MOVE(26, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(29, MOVE_CURSE), - LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(36, MOVE_YAWN), - LEVEL_UP_MOVE(40, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(43, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sCameruptLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE( 1, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE( 1, MOVE_FISSURE), - LEVEL_UP_MOVE( 1, MOVE_ERUPTION), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 8, MOVE_EMBER), - LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(12, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(15, MOVE_FLAME_BURST), - LEVEL_UP_MOVE(19, MOVE_AMNESIA), - LEVEL_UP_MOVE(22, MOVE_LAVA_PLUME), - LEVEL_UP_MOVE(26, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(29, MOVE_CURSE), - LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(39, MOVE_YAWN), - LEVEL_UP_MOVE(46, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(52, MOVE_ERUPTION), - LEVEL_UP_MOVE(59, MOVE_FISSURE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSphealLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 5, MOVE_ROLLOUT), - LEVEL_UP_MOVE( 9, MOVE_ENCORE), - LEVEL_UP_MOVE(13, MOVE_ICE_BALL), - LEVEL_UP_MOVE(17, MOVE_BRINE), - LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE(26, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(31, MOVE_REST), - LEVEL_UP_MOVE(31, MOVE_SNORE), - LEVEL_UP_MOVE(36, MOVE_HAIL), - LEVEL_UP_MOVE(41, MOVE_BLIZZARD), - LEVEL_UP_MOVE(46, MOVE_SHEER_COLD), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSealeoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_SWAGGER), - LEVEL_UP_MOVE( 1, MOVE_SWAGGER), - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 5, MOVE_ROLLOUT), - LEVEL_UP_MOVE( 9, MOVE_ENCORE), - LEVEL_UP_MOVE(13, MOVE_ICE_BALL), - LEVEL_UP_MOVE(17, MOVE_BRINE), - LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE(26, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(31, MOVE_REST), - LEVEL_UP_MOVE(31, MOVE_SNORE), - LEVEL_UP_MOVE(38, MOVE_HAIL), - LEVEL_UP_MOVE(45, MOVE_BLIZZARD), - LEVEL_UP_MOVE(52, MOVE_SHEER_COLD), - LEVEL_UP_END -}; - -static const struct LevelUpMove sWalreinLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_ICE_FANG), - LEVEL_UP_MOVE( 1, MOVE_ICE_FANG), - LEVEL_UP_MOVE( 1, MOVE_SWAGGER), - LEVEL_UP_MOVE( 1, MOVE_CRUNCH), - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 7, MOVE_ROLLOUT), - LEVEL_UP_MOVE( 7, MOVE_ENCORE), - LEVEL_UP_MOVE(13, MOVE_ICE_BALL), - LEVEL_UP_MOVE(19, MOVE_BRINE), - LEVEL_UP_MOVE(19, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE(25, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(31, MOVE_REST), - LEVEL_UP_MOVE(31, MOVE_SNORE), - LEVEL_UP_MOVE(38, MOVE_HAIL), - LEVEL_UP_MOVE(49, MOVE_BLIZZARD), - LEVEL_UP_MOVE(60, MOVE_SHEER_COLD), - LEVEL_UP_END -}; - -static const struct LevelUpMove sCacneaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 4, MOVE_ABSORB), - LEVEL_UP_MOVE( 7, MOVE_GROWTH), - LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(16, MOVE_NEEDLE_ARM), - LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(22, MOVE_INGRAIN), - LEVEL_UP_MOVE(26, MOVE_PAYBACK), - LEVEL_UP_MOVE(30, MOVE_SPIKES), - LEVEL_UP_MOVE(34, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(38, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE(42, MOVE_ENERGY_BALL), - LEVEL_UP_MOVE(46, MOVE_COTTON_SPORE), - LEVEL_UP_MOVE(50, MOVE_SANDSTORM), - LEVEL_UP_MOVE(54, MOVE_DESTINY_BOND), - LEVEL_UP_END -}; - -static const struct LevelUpMove sCacturneLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_SPIKY_SHIELD), - LEVEL_UP_MOVE( 1, MOVE_SPIKY_SHIELD), - LEVEL_UP_MOVE( 1, MOVE_DESTINY_BOND), - LEVEL_UP_MOVE( 1, MOVE_REVENGE), - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 1, MOVE_GROWTH), - LEVEL_UP_MOVE( 4, MOVE_ABSORB), - LEVEL_UP_MOVE( 7, MOVE_GROWTH), - LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(16, MOVE_NEEDLE_ARM), - LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(22, MOVE_INGRAIN), - LEVEL_UP_MOVE(26, MOVE_PAYBACK), - LEVEL_UP_MOVE(30, MOVE_SPIKES), - LEVEL_UP_MOVE(35, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(38, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE(44, MOVE_ENERGY_BALL), - LEVEL_UP_MOVE(49, MOVE_COTTON_SPORE), - LEVEL_UP_MOVE(54, MOVE_SANDSTORM), - LEVEL_UP_MOVE(59, MOVE_DESTINY_BOND), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSnoruntLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 5, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(10, MOVE_ICE_SHARD), - LEVEL_UP_MOVE(14, MOVE_ICY_WIND), - LEVEL_UP_MOVE(19, MOVE_BITE), - LEVEL_UP_MOVE(23, MOVE_ICE_FANG), - LEVEL_UP_MOVE(28, MOVE_HEADBUTT), - LEVEL_UP_MOVE(32, MOVE_PROTECT), - LEVEL_UP_MOVE(37, MOVE_FROST_BREATH), - LEVEL_UP_MOVE(41, MOVE_CRUNCH), - LEVEL_UP_MOVE(46, MOVE_BLIZZARD), - LEVEL_UP_MOVE(50, MOVE_HAIL), - LEVEL_UP_END -}; - -static const struct LevelUpMove sGlalieLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_FREEZE_DRY), - LEVEL_UP_MOVE( 1, MOVE_FREEZE_DRY), - LEVEL_UP_MOVE( 1, MOVE_SHEER_COLD), - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE( 1, MOVE_ICE_SHARD), - LEVEL_UP_MOVE( 5, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(10, MOVE_ICE_SHARD), - LEVEL_UP_MOVE(14, MOVE_ICY_WIND), - LEVEL_UP_MOVE(19, MOVE_BITE), - LEVEL_UP_MOVE(23, MOVE_ICE_FANG), - LEVEL_UP_MOVE(28, MOVE_HEADBUTT), - LEVEL_UP_MOVE(32, MOVE_PROTECT), - LEVEL_UP_MOVE(37, MOVE_FROST_BREATH), - LEVEL_UP_MOVE(41, MOVE_CRUNCH), - LEVEL_UP_MOVE(48, MOVE_BLIZZARD), - LEVEL_UP_MOVE(54, MOVE_HAIL), - LEVEL_UP_MOVE(61, MOVE_SHEER_COLD), - LEVEL_UP_END -}; - -static const struct LevelUpMove sLunatoneLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POWER_GEM), - LEVEL_UP_MOVE( 1, MOVE_PSYSHOCK), - LEVEL_UP_MOVE( 1, MOVE_MOONBLAST), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), - LEVEL_UP_MOVE( 5, MOVE_HYPNOSIS), - LEVEL_UP_MOVE( 9, MOVE_ROCK_POLISH), - LEVEL_UP_MOVE(13, MOVE_PSYWAVE), - LEVEL_UP_MOVE(17, MOVE_EMBARGO), - LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(25, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(29, MOVE_PSYCHIC), - LEVEL_UP_MOVE(33, MOVE_HEAL_BLOCK), - LEVEL_UP_MOVE(37, MOVE_STONE_EDGE), - LEVEL_UP_MOVE(41, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(45, MOVE_EXPLOSION), - LEVEL_UP_MOVE(49, MOVE_MAGIC_ROOM), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSolrockLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FLARE_BLITZ), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), - LEVEL_UP_MOVE( 5, MOVE_FIRE_SPIN), - LEVEL_UP_MOVE( 9, MOVE_ROCK_POLISH), - LEVEL_UP_MOVE(13, MOVE_PSYWAVE), - LEVEL_UP_MOVE(17, MOVE_EMBARGO), - LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(25, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(29, MOVE_PSYCHIC), - LEVEL_UP_MOVE(33, MOVE_HEAL_BLOCK), - LEVEL_UP_MOVE(37, MOVE_STONE_EDGE), - LEVEL_UP_MOVE(41, MOVE_SOLAR_BEAM), - LEVEL_UP_MOVE(45, MOVE_EXPLOSION), - LEVEL_UP_MOVE(49, MOVE_WONDER_ROOM), - LEVEL_UP_END -}; - -static const struct LevelUpMove sAzurillLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 2, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 5, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 7, MOVE_BUBBLE), - LEVEL_UP_MOVE(10, MOVE_CHARM), - LEVEL_UP_MOVE(13, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(16, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(20, MOVE_SLAM), - LEVEL_UP_MOVE(23, MOVE_BOUNCE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpoinkLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE( 7, MOVE_PSYWAVE), - LEVEL_UP_MOVE(10, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(14, MOVE_PSYBEAM), - LEVEL_UP_MOVE(15, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(18, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(21, MOVE_MAGIC_COAT), - LEVEL_UP_MOVE(26, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(29, MOVE_POWER_GEM), - LEVEL_UP_MOVE(29, MOVE_REST), - LEVEL_UP_MOVE(33, MOVE_SNORE), - LEVEL_UP_MOVE(38, MOVE_PSYSHOCK), - LEVEL_UP_MOVE(40, MOVE_PAYBACK), - LEVEL_UP_MOVE(44, MOVE_PSYCHIC), - LEVEL_UP_MOVE(50, MOVE_BOUNCE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sGrumpigLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_TEETER_DANCE), - LEVEL_UP_MOVE( 1, MOVE_TEETER_DANCE), - LEVEL_UP_MOVE( 1, MOVE_BELCH), - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), - LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE( 1, MOVE_PSYBEAM), - LEVEL_UP_MOVE( 7, MOVE_PSYWAVE), - LEVEL_UP_MOVE(10, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(14, MOVE_PSYBEAM), - LEVEL_UP_MOVE(15, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(18, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(21, MOVE_MAGIC_COAT), - LEVEL_UP_MOVE(26, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(29, MOVE_POWER_GEM), - LEVEL_UP_MOVE(35, MOVE_REST), - LEVEL_UP_MOVE(35, MOVE_SNORE), - LEVEL_UP_MOVE(42, MOVE_PSYSHOCK), - LEVEL_UP_MOVE(46, MOVE_PAYBACK), - LEVEL_UP_MOVE(52, MOVE_PSYCHIC), - LEVEL_UP_MOVE(60, MOVE_BOUNCE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sPlusleLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_NUZZLE), - LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 4, MOVE_HELPING_HAND), - LEVEL_UP_MOVE( 7, MOVE_SPARK), - LEVEL_UP_MOVE(10, MOVE_ENCORE), - LEVEL_UP_MOVE(13, MOVE_BESTOW), - LEVEL_UP_MOVE(16, MOVE_SWIFT), - LEVEL_UP_MOVE(19, MOVE_ELECTRO_BALL), - LEVEL_UP_MOVE(22, MOVE_COPYCAT), - LEVEL_UP_MOVE(25, MOVE_CHARM), - LEVEL_UP_MOVE(28, MOVE_CHARGE), - LEVEL_UP_MOVE(31, MOVE_DISCHARGE), - LEVEL_UP_MOVE(34, MOVE_BATON_PASS), - LEVEL_UP_MOVE(37, MOVE_AGILITY), - LEVEL_UP_MOVE(40, MOVE_LAST_RESORT), - LEVEL_UP_MOVE(43, MOVE_THUNDER), - LEVEL_UP_MOVE(46, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE(49, MOVE_ENTRAINMENT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMinunLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_NUZZLE), - LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 4, MOVE_HELPING_HAND), - LEVEL_UP_MOVE( 7, MOVE_SPARK), - LEVEL_UP_MOVE(10, MOVE_ENCORE), - LEVEL_UP_MOVE(13, MOVE_SWITCHEROO), - LEVEL_UP_MOVE(16, MOVE_SWIFT), - LEVEL_UP_MOVE(19, MOVE_ELECTRO_BALL), - LEVEL_UP_MOVE(22, MOVE_COPYCAT), - LEVEL_UP_MOVE(25, MOVE_FAKE_TEARS), - LEVEL_UP_MOVE(28, MOVE_CHARGE), - LEVEL_UP_MOVE(31, MOVE_DISCHARGE), - LEVEL_UP_MOVE(34, MOVE_BATON_PASS), - LEVEL_UP_MOVE(37, MOVE_AGILITY), - LEVEL_UP_MOVE(40, MOVE_TRUMP_CARD), - LEVEL_UP_MOVE(43, MOVE_THUNDER), - LEVEL_UP_MOVE(46, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE(49, MOVE_ENTRAINMENT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMawileLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PLAY_ROUGH), - LEVEL_UP_MOVE( 1, MOVE_IRON_HEAD), - LEVEL_UP_MOVE( 1, MOVE_TAUNT), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_FAIRY_WIND), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 5, MOVE_FAKE_TEARS), - LEVEL_UP_MOVE( 9, MOVE_BITE), - LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(17, MOVE_VISE_GRIP), - LEVEL_UP_MOVE(21, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(25, MOVE_BATON_PASS), - LEVEL_UP_MOVE(29, MOVE_CRUNCH), - LEVEL_UP_MOVE(33, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(37, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(41, MOVE_STOCKPILE), - LEVEL_UP_MOVE(41, MOVE_SWALLOW), - LEVEL_UP_MOVE(41, MOVE_SPIT_UP), - LEVEL_UP_MOVE(45, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(49, MOVE_PLAY_ROUGH), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMedititeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BIDE), - LEVEL_UP_MOVE( 4, MOVE_MEDITATE), - LEVEL_UP_MOVE( 7, MOVE_CONFUSION), - LEVEL_UP_MOVE( 9, MOVE_DETECT), - LEVEL_UP_MOVE(12, MOVE_ENDURE), - LEVEL_UP_MOVE(15, MOVE_FEINT), - LEVEL_UP_MOVE(17, MOVE_FORCE_PALM), - LEVEL_UP_MOVE(20, MOVE_HIDDEN_POWER), - LEVEL_UP_MOVE(23, MOVE_CALM_MIND), - LEVEL_UP_MOVE(25, MOVE_MIND_READER), - LEVEL_UP_MOVE(28, MOVE_HIGH_JUMP_KICK), - LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(33, MOVE_ACUPRESSURE), - LEVEL_UP_MOVE(36, MOVE_POWER_TRICK), - LEVEL_UP_MOVE(39, MOVE_REVERSAL), - LEVEL_UP_MOVE(41, MOVE_RECOVER), - LEVEL_UP_MOVE(44, MOVE_COUNTER), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMedichamLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_ICE_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_BIDE), - LEVEL_UP_MOVE( 1, MOVE_MEDITATE), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_DETECT), - LEVEL_UP_MOVE( 4, MOVE_MEDITATE), - LEVEL_UP_MOVE( 7, MOVE_CONFUSION), - LEVEL_UP_MOVE( 9, MOVE_DETECT), - LEVEL_UP_MOVE(12, MOVE_ENDURE), - LEVEL_UP_MOVE(15, MOVE_FEINT), - LEVEL_UP_MOVE(17, MOVE_FORCE_PALM), - LEVEL_UP_MOVE(20, MOVE_HIDDEN_POWER), - LEVEL_UP_MOVE(23, MOVE_CALM_MIND), - LEVEL_UP_MOVE(25, MOVE_MIND_READER), - LEVEL_UP_MOVE(28, MOVE_HIGH_JUMP_KICK), - LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(33, MOVE_ACUPRESSURE), - LEVEL_UP_MOVE(36, MOVE_POWER_TRICK), - LEVEL_UP_MOVE(42, MOVE_REVERSAL), - LEVEL_UP_MOVE(47, MOVE_RECOVER), - LEVEL_UP_MOVE(53, MOVE_COUNTER), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSwabluLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 3, MOVE_ASTONISH), - LEVEL_UP_MOVE( 5, MOVE_SING), - LEVEL_UP_MOVE( 7, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE( 9, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(11, MOVE_DISARMING_VOICE), - LEVEL_UP_MOVE(14, MOVE_MIST), - LEVEL_UP_MOVE(17, MOVE_ROUND), - LEVEL_UP_MOVE(20, MOVE_NATURAL_GIFT), - LEVEL_UP_MOVE(23, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(26, MOVE_REFRESH), - LEVEL_UP_MOVE(30, MOVE_MIRROR_MOVE), - LEVEL_UP_MOVE(34, MOVE_COTTON_GUARD), - LEVEL_UP_MOVE(38, MOVE_DRAGON_PULSE), - LEVEL_UP_MOVE(42, MOVE_PERISH_SONG), - LEVEL_UP_MOVE(46, MOVE_MOONBLAST), - LEVEL_UP_END -}; - -static const struct LevelUpMove sAltariaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE( 1, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE( 1, MOVE_SKY_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_PLUCK), - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_SING), - LEVEL_UP_MOVE( 3, MOVE_ASTONISH), - LEVEL_UP_MOVE( 5, MOVE_SING), - LEVEL_UP_MOVE( 7, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE( 9, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(11, MOVE_DISARMING_VOICE), - LEVEL_UP_MOVE(14, MOVE_MIST), - LEVEL_UP_MOVE(17, MOVE_ROUND), - LEVEL_UP_MOVE(20, MOVE_NATURAL_GIFT), - LEVEL_UP_MOVE(23, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(26, MOVE_REFRESH), - LEVEL_UP_MOVE(30, MOVE_DRAGON_DANCE), - LEVEL_UP_MOVE(34, MOVE_COTTON_GUARD), - LEVEL_UP_MOVE(40, MOVE_DRAGON_PULSE), - LEVEL_UP_MOVE(46, MOVE_PERISH_SONG), - LEVEL_UP_MOVE(52, MOVE_MOONBLAST), - LEVEL_UP_MOVE(59, MOVE_SKY_ATTACK), - LEVEL_UP_END -}; - -static const struct LevelUpMove sWynautLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE( 1, MOVE_CHARM), - LEVEL_UP_MOVE( 1, MOVE_ENCORE), - LEVEL_UP_MOVE(15, MOVE_COUNTER), - LEVEL_UP_MOVE(15, MOVE_MIRROR_COAT), - LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(15, MOVE_DESTINY_BOND), - LEVEL_UP_END -}; - -static const struct LevelUpMove sDuskullLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE( 6, MOVE_DISABLE), - LEVEL_UP_MOVE( 9, MOVE_ASTONISH), - LEVEL_UP_MOVE(14, MOVE_FORESIGHT), - LEVEL_UP_MOVE(17, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE(22, MOVE_PURSUIT), - LEVEL_UP_MOVE(25, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(30, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(33, MOVE_CURSE), - LEVEL_UP_MOVE(38, MOVE_HEX), - LEVEL_UP_MOVE(41, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(46, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(49, MOVE_PAYBACK), - LEVEL_UP_MOVE(54, MOVE_FUTURE_SIGHT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sDusclopsLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_SHADOW_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_SHADOW_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_ICE_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_GRAVITY), - LEVEL_UP_MOVE( 1, MOVE_BIND), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE( 1, MOVE_DISABLE), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 6, MOVE_DISABLE), - LEVEL_UP_MOVE( 9, MOVE_ASTONISH), - LEVEL_UP_MOVE(14, MOVE_FORESIGHT), - LEVEL_UP_MOVE(17, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE(22, MOVE_PURSUIT), - LEVEL_UP_MOVE(25, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(30, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(33, MOVE_CURSE), - LEVEL_UP_MOVE(40, MOVE_HEX), - LEVEL_UP_MOVE(45, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(52, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(57, MOVE_PAYBACK), - LEVEL_UP_MOVE(64, MOVE_FUTURE_SIGHT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sRoseliaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 4, MOVE_GROWTH), - LEVEL_UP_MOVE( 7, MOVE_POISON_STING), - LEVEL_UP_MOVE(10, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(13, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(16, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(19, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE(22, MOVE_GRASS_WHISTLE), - LEVEL_UP_MOVE(25, MOVE_GIGA_DRAIN), - LEVEL_UP_MOVE(28, MOVE_TOXIC_SPIKES), - LEVEL_UP_MOVE(31, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(34, MOVE_INGRAIN), - LEVEL_UP_MOVE(37, MOVE_PETAL_BLIZZARD), - LEVEL_UP_MOVE(40, MOVE_TOXIC), - LEVEL_UP_MOVE(43, MOVE_AROMATHERAPY), - LEVEL_UP_MOVE(46, MOVE_SYNTHESIS), - LEVEL_UP_MOVE(50, MOVE_PETAL_DANCE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSlakothLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_YAWN), - LEVEL_UP_MOVE( 6, MOVE_ENCORE), - LEVEL_UP_MOVE( 9, MOVE_SLACK_OFF), - LEVEL_UP_MOVE(14, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(17, MOVE_AMNESIA), - LEVEL_UP_MOVE(22, MOVE_COVET), - LEVEL_UP_MOVE(25, MOVE_CHIP_AWAY), - LEVEL_UP_MOVE(30, MOVE_COUNTER), - LEVEL_UP_MOVE(33, MOVE_FLAIL), - LEVEL_UP_MOVE(38, MOVE_PLAY_ROUGH), - LEVEL_UP_END -}; - -static const struct LevelUpMove sVigorothLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_REVERSAL), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 1, MOVE_ENCORE), - LEVEL_UP_MOVE( 1, MOVE_UPROAR), - LEVEL_UP_MOVE( 6, MOVE_ENCORE), - LEVEL_UP_MOVE( 9, MOVE_UPROAR), - LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(17, MOVE_ENDURE), - LEVEL_UP_MOVE(23, MOVE_SLASH), - LEVEL_UP_MOVE(27, MOVE_CHIP_AWAY), - LEVEL_UP_MOVE(33, MOVE_COUNTER), - LEVEL_UP_MOVE(37, MOVE_FOCUS_PUNCH), - LEVEL_UP_MOVE(43, MOVE_REVERSAL), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSlakingLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_SWAGGER), - LEVEL_UP_MOVE( 1, MOVE_SWAGGER), - LEVEL_UP_MOVE( 1, MOVE_HAMMER_ARM), - LEVEL_UP_MOVE( 1, MOVE_PUNISHMENT), - LEVEL_UP_MOVE( 1, MOVE_FLING), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_YAWN), - LEVEL_UP_MOVE( 1, MOVE_ENCORE), - LEVEL_UP_MOVE( 1, MOVE_SLACK_OFF), - LEVEL_UP_MOVE( 6, MOVE_ENCORE), - LEVEL_UP_MOVE( 9, MOVE_SLACK_OFF), - LEVEL_UP_MOVE(14, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(17, MOVE_AMNESIA), - LEVEL_UP_MOVE(23, MOVE_COVET), - LEVEL_UP_MOVE(27, MOVE_CHIP_AWAY), - LEVEL_UP_MOVE(33, MOVE_COUNTER), - LEVEL_UP_MOVE(39, MOVE_FLAIL), - LEVEL_UP_MOVE(47, MOVE_FLING), - LEVEL_UP_MOVE(53, MOVE_PUNISHMENT), - LEVEL_UP_MOVE(61, MOVE_HAMMER_ARM), - LEVEL_UP_END -}; - -static const struct LevelUpMove sGulpinLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 5, MOVE_YAWN), - LEVEL_UP_MOVE( 8, MOVE_POISON_GAS), - LEVEL_UP_MOVE(10, MOVE_SLUDGE), - LEVEL_UP_MOVE(12, MOVE_AMNESIA), - LEVEL_UP_MOVE(17, MOVE_ACID_SPRAY), - LEVEL_UP_MOVE(20, MOVE_ENCORE), - LEVEL_UP_MOVE(25, MOVE_TOXIC), - LEVEL_UP_MOVE(28, MOVE_STOCKPILE), - LEVEL_UP_MOVE(28, MOVE_SPIT_UP), - LEVEL_UP_MOVE(28, MOVE_SWALLOW), - LEVEL_UP_MOVE(33, MOVE_SLUDGE_BOMB), - LEVEL_UP_MOVE(36, MOVE_GASTRO_ACID), - LEVEL_UP_MOVE(41, MOVE_BELCH), - LEVEL_UP_MOVE(44, MOVE_WRING_OUT), - LEVEL_UP_MOVE(49, MOVE_GUNK_SHOT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSwalotLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_BODY_SLAM), - LEVEL_UP_MOVE( 1, MOVE_BODY_SLAM), - LEVEL_UP_MOVE( 1, MOVE_VENOM_DRENCH), - LEVEL_UP_MOVE( 1, MOVE_GUNK_SHOT), - LEVEL_UP_MOVE( 1, MOVE_WRING_OUT), - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_YAWN), - LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), - LEVEL_UP_MOVE( 1, MOVE_SLUDGE), - LEVEL_UP_MOVE( 5, MOVE_YAWN), - LEVEL_UP_MOVE( 8, MOVE_POISON_GAS), - LEVEL_UP_MOVE(10, MOVE_SLUDGE), - LEVEL_UP_MOVE(12, MOVE_AMNESIA), - LEVEL_UP_MOVE(17, MOVE_ACID_SPRAY), - LEVEL_UP_MOVE(20, MOVE_ENCORE), - LEVEL_UP_MOVE(25, MOVE_TOXIC), - LEVEL_UP_MOVE(30, MOVE_STOCKPILE), - LEVEL_UP_MOVE(30, MOVE_SPIT_UP), - LEVEL_UP_MOVE(30, MOVE_SWALLOW), - LEVEL_UP_MOVE(37, MOVE_SLUDGE_BOMB), - LEVEL_UP_MOVE(42, MOVE_GASTRO_ACID), - LEVEL_UP_MOVE(49, MOVE_BELCH), - LEVEL_UP_MOVE(54, MOVE_WRING_OUT), - LEVEL_UP_MOVE(61, MOVE_GUNK_SHOT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sTropiusLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEAF_STORM), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_GUST), - LEVEL_UP_MOVE( 1, MOVE_GROWTH), - LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE( 6, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(10, MOVE_STOMP), - LEVEL_UP_MOVE(16, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE(21, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(26, MOVE_LEAF_TORNADO), - LEVEL_UP_MOVE(30, MOVE_NATURAL_GIFT), - LEVEL_UP_MOVE(36, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(41, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(46, MOVE_BESTOW), - LEVEL_UP_MOVE(50, MOVE_SYNTHESIS), - LEVEL_UP_MOVE(56, MOVE_SOLAR_BEAM), - LEVEL_UP_MOVE(61, MOVE_LEAF_STORM), - LEVEL_UP_END -}; - -static const struct LevelUpMove sWhismurLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 4, MOVE_ECHOED_VOICE), - LEVEL_UP_MOVE( 8, MOVE_ASTONISH), - LEVEL_UP_MOVE(11, MOVE_HOWL), - LEVEL_UP_MOVE(15, MOVE_SCREECH), - LEVEL_UP_MOVE(18, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(22, MOVE_STOMP), - LEVEL_UP_MOVE(25, MOVE_UPROAR), - LEVEL_UP_MOVE(29, MOVE_ROAR), - LEVEL_UP_MOVE(32, MOVE_REST), - LEVEL_UP_MOVE(36, MOVE_SLEEP_TALK), - LEVEL_UP_MOVE(39, MOVE_HYPER_VOICE), - LEVEL_UP_MOVE(43, MOVE_SYNCHRONOISE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sLoudredLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_ECHOED_VOICE), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_HOWL), - LEVEL_UP_MOVE( 4, MOVE_ECHOED_VOICE), - LEVEL_UP_MOVE( 9, MOVE_ASTONISH), - LEVEL_UP_MOVE(11, MOVE_HOWL), - LEVEL_UP_MOVE(15, MOVE_SCREECH), - LEVEL_UP_MOVE(18, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(23, MOVE_STOMP), - LEVEL_UP_MOVE(27, MOVE_UPROAR), - LEVEL_UP_MOVE(32, MOVE_ROAR), - LEVEL_UP_MOVE(36, MOVE_REST), - LEVEL_UP_MOVE(41, MOVE_SLEEP_TALK), - LEVEL_UP_MOVE(45, MOVE_HYPER_VOICE), - LEVEL_UP_MOVE(50, MOVE_SYNCHRONOISE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sExploudLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_CRUNCH), - LEVEL_UP_MOVE( 1, MOVE_CRUNCH), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_BOOMBURST), - LEVEL_UP_MOVE( 1, MOVE_ICE_FANG), - LEVEL_UP_MOVE( 1, MOVE_FIRE_FANG), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_FANG), - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_ECHOED_VOICE), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_HOWL), - LEVEL_UP_MOVE( 4, MOVE_ECHOED_VOICE), - LEVEL_UP_MOVE( 9, MOVE_ASTONISH), - LEVEL_UP_MOVE(11, MOVE_HOWL), - LEVEL_UP_MOVE(15, MOVE_SCREECH), - LEVEL_UP_MOVE(18, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(23, MOVE_STOMP), - LEVEL_UP_MOVE(27, MOVE_UPROAR), - LEVEL_UP_MOVE(32, MOVE_ROAR), - LEVEL_UP_MOVE(36, MOVE_REST), - LEVEL_UP_MOVE(42, MOVE_SLEEP_TALK), - LEVEL_UP_MOVE(47, MOVE_HYPER_VOICE), - LEVEL_UP_MOVE(53, MOVE_SYNCHRONOISE), - LEVEL_UP_MOVE(58, MOVE_BOOMBURST), - LEVEL_UP_MOVE(64, MOVE_HYPER_BEAM), - LEVEL_UP_END -}; - -static const struct LevelUpMove sClamperlLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CLAMP), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), - LEVEL_UP_MOVE( 1, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(50, MOVE_SHELL_SMASH), - LEVEL_UP_END -}; - -static const struct LevelUpMove sHuntailLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 5, MOVE_SCREECH), - LEVEL_UP_MOVE( 9, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(11, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(14, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(16, MOVE_ICE_FANG), - LEVEL_UP_MOVE(19, MOVE_BRINE), - LEVEL_UP_MOVE(23, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(26, MOVE_DIVE), - LEVEL_UP_MOVE(29, MOVE_BATON_PASS), - LEVEL_UP_MOVE(34, MOVE_CRUNCH), - LEVEL_UP_MOVE(39, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(45, MOVE_COIL), - LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), - LEVEL_UP_END -}; - -static const struct LevelUpMove sGorebyssLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 5, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 9, MOVE_AGILITY), - LEVEL_UP_MOVE(11, MOVE_DRAINING_KISS), - LEVEL_UP_MOVE(14, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(16, MOVE_AMNESIA), - LEVEL_UP_MOVE(19, MOVE_AQUA_RING), - LEVEL_UP_MOVE(23, MOVE_CAPTIVATE), - LEVEL_UP_MOVE(26, MOVE_DIVE), - LEVEL_UP_MOVE(29, MOVE_BATON_PASS), - LEVEL_UP_MOVE(34, MOVE_PSYCHIC), - LEVEL_UP_MOVE(39, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(45, MOVE_COIL), - LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), - LEVEL_UP_END -}; - -static const struct LevelUpMove sAbsolLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PERISH_SONG), - LEVEL_UP_MOVE( 1, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_FEINT), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 4, MOVE_LEER), - LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(10, MOVE_PURSUIT), - LEVEL_UP_MOVE(13, MOVE_TAUNT), - LEVEL_UP_MOVE(16, MOVE_BITE), - LEVEL_UP_MOVE(19, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(22, MOVE_SLASH), - LEVEL_UP_MOVE(25, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(29, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE(33, MOVE_DETECT), - LEVEL_UP_MOVE(37, MOVE_PSYCHO_CUT), - LEVEL_UP_MOVE(41, MOVE_ME_FIRST), - LEVEL_UP_MOVE(45, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(49, MOVE_RAZOR_WIND), - LEVEL_UP_MOVE(53, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(57, MOVE_PERISH_SONG), - LEVEL_UP_END -}; - -static const struct LevelUpMove sShuppetLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE( 4, MOVE_SCREECH), - LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(10, MOVE_SPITE), - LEVEL_UP_MOVE(13, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE(16, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(22, MOVE_HEX), - LEVEL_UP_MOVE(26, MOVE_CURSE), - LEVEL_UP_MOVE(30, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(34, MOVE_EMBARGO), - LEVEL_UP_MOVE(38, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(42, MOVE_SNATCH), - LEVEL_UP_MOVE(46, MOVE_GRUDGE), - LEVEL_UP_MOVE(50, MOVE_TRICK), - LEVEL_UP_MOVE(54, MOVE_PHANTOM_FORCE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sBanetteLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PHANTOM_FORCE), - LEVEL_UP_MOVE( 1, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE( 1, MOVE_SCREECH), - LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE( 1, MOVE_SPITE), - LEVEL_UP_MOVE( 4, MOVE_SCREECH), - LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(10, MOVE_SPITE), - LEVEL_UP_MOVE(13, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE(16, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(22, MOVE_HEX), - LEVEL_UP_MOVE(26, MOVE_CURSE), - LEVEL_UP_MOVE(30, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(34, MOVE_EMBARGO), - LEVEL_UP_MOVE(40, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(46, MOVE_SNATCH), - LEVEL_UP_MOVE(52, MOVE_GRUDGE), - LEVEL_UP_MOVE(58, MOVE_TRICK), - LEVEL_UP_MOVE(64, MOVE_PHANTOM_FORCE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSeviperLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 1, MOVE_SWAGGER), - LEVEL_UP_MOVE( 4, MOVE_BITE), - LEVEL_UP_MOVE( 6, MOVE_LICK), - LEVEL_UP_MOVE( 9, MOVE_POISON_TAIL), - LEVEL_UP_MOVE(11, MOVE_FEINT), - LEVEL_UP_MOVE(14, MOVE_SCREECH), - LEVEL_UP_MOVE(16, MOVE_VENOSHOCK), - LEVEL_UP_MOVE(19, MOVE_GLARE), - LEVEL_UP_MOVE(21, MOVE_POISON_FANG), - LEVEL_UP_MOVE(24, MOVE_VENOM_DRENCH), - LEVEL_UP_MOVE(26, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE(29, MOVE_GASTRO_ACID), - LEVEL_UP_MOVE(31, MOVE_POISON_JAB), - LEVEL_UP_MOVE(34, MOVE_HAZE), - LEVEL_UP_MOVE(36, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(39, MOVE_CRUNCH), - LEVEL_UP_MOVE(41, MOVE_BELCH), - LEVEL_UP_MOVE(44, MOVE_COIL), - LEVEL_UP_MOVE(46, MOVE_WRING_OUT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sZangooseLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 5, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 8, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(12, MOVE_PURSUIT), - LEVEL_UP_MOVE(15, MOVE_HONE_CLAWS), - LEVEL_UP_MOVE(19, MOVE_SLASH), - LEVEL_UP_MOVE(22, MOVE_REVENGE), - LEVEL_UP_MOVE(26, MOVE_CRUSH_CLAW), - LEVEL_UP_MOVE(29, MOVE_FALSE_SWIPE), - LEVEL_UP_MOVE(33, MOVE_EMBARGO), - LEVEL_UP_MOVE(36, MOVE_DETECT), - LEVEL_UP_MOVE(40, MOVE_X_SCISSOR), - LEVEL_UP_MOVE(43, MOVE_TAUNT), - LEVEL_UP_MOVE(47, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(50, MOVE_CLOSE_COMBAT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sRelicanthLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FLAIL), - LEVEL_UP_MOVE( 1, MOVE_HEAD_SMASH), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(10, MOVE_WATER_GUN), - LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), - LEVEL_UP_MOVE(21, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(26, MOVE_DIVE), - LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(35, MOVE_YAWN), - LEVEL_UP_MOVE(41, MOVE_REST), - LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(56, MOVE_HEAD_SMASH), - LEVEL_UP_END -}; - -static const struct LevelUpMove sAronLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 4, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 7, MOVE_HEADBUTT), - LEVEL_UP_MOVE(10, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(13, MOVE_ROCK_TOMB), - LEVEL_UP_MOVE(16, MOVE_PROTECT), - LEVEL_UP_MOVE(19, MOVE_ROAR), - LEVEL_UP_MOVE(22, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(31, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(34, MOVE_IRON_TAIL), - LEVEL_UP_MOVE(37, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(40, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(43, MOVE_AUTOTOMIZE), - LEVEL_UP_MOVE(46, MOVE_HEAVY_SLAM), - LEVEL_UP_MOVE(49, MOVE_METAL_BURST), - LEVEL_UP_END -}; - -static const struct LevelUpMove sLaironLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), - LEVEL_UP_MOVE( 4, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 7, MOVE_HEADBUTT), - LEVEL_UP_MOVE(10, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(13, MOVE_ROCK_TOMB), - LEVEL_UP_MOVE(16, MOVE_PROTECT), - LEVEL_UP_MOVE(19, MOVE_ROAR), - LEVEL_UP_MOVE(22, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(31, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(35, MOVE_IRON_TAIL), - LEVEL_UP_MOVE(39, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(47, MOVE_AUTOTOMIZE), - LEVEL_UP_MOVE(51, MOVE_HEAVY_SLAM), - LEVEL_UP_MOVE(55, MOVE_METAL_BURST), - LEVEL_UP_END -}; - -static const struct LevelUpMove sAggronLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), - LEVEL_UP_MOVE( 4, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 7, MOVE_HEADBUTT), - LEVEL_UP_MOVE(10, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(13, MOVE_ROCK_TOMB), - LEVEL_UP_MOVE(16, MOVE_PROTECT), - LEVEL_UP_MOVE(19, MOVE_ROAR), - LEVEL_UP_MOVE(22, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(31, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(35, MOVE_IRON_TAIL), - LEVEL_UP_MOVE(39, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(45, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(51, MOVE_AUTOTOMIZE), - LEVEL_UP_MOVE(57, MOVE_HEAVY_SLAM), - LEVEL_UP_MOVE(63, MOVE_METAL_BURST), - LEVEL_UP_END -}; - -static const struct LevelUpMove sCastformLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE(10, MOVE_WATER_GUN), - LEVEL_UP_MOVE(10, MOVE_EMBER), - LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE(15, MOVE_HEADBUTT), - LEVEL_UP_MOVE(20, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(20, MOVE_SUNNY_DAY), - LEVEL_UP_MOVE(20, MOVE_HAIL), - LEVEL_UP_MOVE(25, MOVE_WEATHER_BALL), - LEVEL_UP_MOVE(35, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(35, MOVE_FIRE_BLAST), - LEVEL_UP_MOVE(35, MOVE_BLIZZARD), - LEVEL_UP_MOVE(45, MOVE_HURRICANE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sVolbeatLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FLASH), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE( 8, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(12, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(15, MOVE_STRUGGLE_BUG), - LEVEL_UP_MOVE(19, MOVE_MOONLIGHT), - LEVEL_UP_MOVE(22, MOVE_TAIL_GLOW), - LEVEL_UP_MOVE(26, MOVE_SIGNAL_BEAM), - LEVEL_UP_MOVE(29, MOVE_PROTECT), - LEVEL_UP_MOVE(33, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(36, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(40, MOVE_BUG_BUZZ), - LEVEL_UP_MOVE(43, MOVE_PLAY_ROUGH), - LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(50, MOVE_INFESTATION), - LEVEL_UP_END -}; - -static const struct LevelUpMove sIllumiseLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE( 9, MOVE_CHARM), - LEVEL_UP_MOVE(12, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(15, MOVE_STRUGGLE_BUG), - LEVEL_UP_MOVE(19, MOVE_MOONLIGHT), - LEVEL_UP_MOVE(22, MOVE_WISH), - LEVEL_UP_MOVE(26, MOVE_ENCORE), - LEVEL_UP_MOVE(29, MOVE_FLATTER), - LEVEL_UP_MOVE(33, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(36, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(40, MOVE_BUG_BUZZ), - LEVEL_UP_MOVE(43, MOVE_PLAY_ROUGH), - LEVEL_UP_MOVE(47, MOVE_COVET), - LEVEL_UP_MOVE(50, MOVE_INFESTATION), - LEVEL_UP_END -}; - -static const struct LevelUpMove sLileepLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), - LEVEL_UP_MOVE( 5, MOVE_ACID), - LEVEL_UP_MOVE( 9, MOVE_INGRAIN), - LEVEL_UP_MOVE(13, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(17, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(21, MOVE_BRINE), - LEVEL_UP_MOVE(26, MOVE_GIGA_DRAIN), - LEVEL_UP_MOVE(31, MOVE_GASTRO_ACID), - LEVEL_UP_MOVE(36, MOVE_AMNESIA), - LEVEL_UP_MOVE(41, MOVE_ENERGY_BALL), - LEVEL_UP_MOVE(46, MOVE_STOCKPILE), - LEVEL_UP_MOVE(46, MOVE_SPIT_UP), - LEVEL_UP_MOVE(46, MOVE_SWALLOW), - LEVEL_UP_MOVE(52, MOVE_WRING_OUT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sCradilyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WRING_OUT), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), - LEVEL_UP_MOVE( 1, MOVE_ACID), - LEVEL_UP_MOVE( 1, MOVE_INGRAIN), - LEVEL_UP_MOVE( 5, MOVE_ACID), - LEVEL_UP_MOVE( 9, MOVE_INGRAIN), - LEVEL_UP_MOVE(13, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(17, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(21, MOVE_BRINE), - LEVEL_UP_MOVE(26, MOVE_GIGA_DRAIN), - LEVEL_UP_MOVE(31, MOVE_GASTRO_ACID), - LEVEL_UP_MOVE(36, MOVE_AMNESIA), - LEVEL_UP_MOVE(44, MOVE_ENERGY_BALL), - LEVEL_UP_MOVE(52, MOVE_STOCKPILE), - LEVEL_UP_MOVE(52, MOVE_SPIT_UP), - LEVEL_UP_MOVE(52, MOVE_SWALLOW), - LEVEL_UP_MOVE(61, MOVE_WRING_OUT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sAnorithLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 4, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 7, MOVE_WATER_GUN), - LEVEL_UP_MOVE(10, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(13, MOVE_SMACK_DOWN), - LEVEL_UP_MOVE(17, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(21, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(25, MOVE_BUG_BITE), - LEVEL_UP_MOVE(29, MOVE_BRINE), - LEVEL_UP_MOVE(34, MOVE_SLASH), - LEVEL_UP_MOVE(39, MOVE_CRUSH_CLAW), - LEVEL_UP_MOVE(44, MOVE_X_SCISSOR), - LEVEL_UP_MOVE(49, MOVE_PROTECT), - LEVEL_UP_MOVE(55, MOVE_ROCK_BLAST), - LEVEL_UP_END -}; - -static const struct LevelUpMove sArmaldoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 4, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 7, MOVE_WATER_GUN), - LEVEL_UP_MOVE(10, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(13, MOVE_SMACK_DOWN), - LEVEL_UP_MOVE(17, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(21, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(25, MOVE_BUG_BITE), - LEVEL_UP_MOVE(29, MOVE_BRINE), - LEVEL_UP_MOVE(34, MOVE_SLASH), - LEVEL_UP_MOVE(39, MOVE_CRUSH_CLAW), - LEVEL_UP_MOVE(46, MOVE_X_SCISSOR), - LEVEL_UP_MOVE(53, MOVE_PROTECT), - LEVEL_UP_MOVE(61, MOVE_ROCK_BLAST), - LEVEL_UP_END -}; - +#if P_FAMILY_RALTS static const struct LevelUpMove sRaltsLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 4, MOVE_CONFUSION), @@ -7565,6 +7763,2102 @@ static const struct LevelUpMove sGardevoirLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sGalladeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SLASH), + LEVEL_UP_MOVE( 1, MOVE_SLASH), + LEVEL_UP_MOVE( 1, MOVE_STORED_POWER), + LEVEL_UP_MOVE( 1, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE( 1, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 4, MOVE_CONFUSION), + LEVEL_UP_MOVE( 6, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 9, MOVE_TELEPORT), + LEVEL_UP_MOVE(11, MOVE_QUICK_GUARD), + LEVEL_UP_MOVE(14, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(17, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(19, MOVE_HEAL_PULSE), + LEVEL_UP_MOVE(23, MOVE_WIDE_GUARD), + LEVEL_UP_MOVE(26, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(31, MOVE_PSYCHO_CUT), + LEVEL_UP_MOVE(35, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(40, MOVE_FEINT), + LEVEL_UP_MOVE(44, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(49, MOVE_PROTECT), + LEVEL_UP_MOVE(53, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE(58, MOVE_STORED_POWER), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RALTS + +#if P_FAMILY_SURSKIT +static const struct LevelUpMove sSurskitLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 6, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(14, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(17, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(22, MOVE_AGILITY), + LEVEL_UP_MOVE(25, MOVE_MIST), + LEVEL_UP_MOVE(25, MOVE_HAZE), + LEVEL_UP_MOVE(30, MOVE_AQUA_JET), + LEVEL_UP_MOVE(35, MOVE_BATON_PASS), + LEVEL_UP_MOVE(38, MOVE_STICKY_WEB), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMasquerainLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUIVER_DANCE), + LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), + LEVEL_UP_MOVE( 1, MOVE_BUG_BUZZ), + LEVEL_UP_MOVE( 1, MOVE_OMINOUS_WIND), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 6, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(14, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(17, MOVE_GUST), + LEVEL_UP_MOVE(22, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(22, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(26, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(32, MOVE_SILVER_WIND), + LEVEL_UP_MOVE(38, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(42, MOVE_BUG_BUZZ), + LEVEL_UP_MOVE(48, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(52, MOVE_QUIVER_DANCE), + LEVEL_UP_END +}; +#endif //P_FAMILY_SURSKIT + +#if P_FAMILY_SHROOMISH +static const struct LevelUpMove sShroomishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 8, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(12, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(15, MOVE_HEADBUTT), + LEVEL_UP_MOVE(19, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(22, MOVE_WORRY_SEED), + LEVEL_UP_MOVE(26, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(29, MOVE_GROWTH), + LEVEL_UP_MOVE(33, MOVE_TOXIC), + LEVEL_UP_MOVE(36, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(40, MOVE_SPORE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sBreloomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_MACH_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_MACH_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 5, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 8, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(12, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(15, MOVE_HEADBUTT), + LEVEL_UP_MOVE(19, MOVE_FEINT), + LEVEL_UP_MOVE(22, MOVE_COUNTER), + LEVEL_UP_MOVE(28, MOVE_FORCE_PALM), + LEVEL_UP_MOVE(33, MOVE_MIND_READER), + LEVEL_UP_MOVE(39, MOVE_SKY_UPPERCUT), + LEVEL_UP_MOVE(44, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(50, MOVE_DYNAMIC_PUNCH), + LEVEL_UP_END +}; +#endif //P_FAMILY_SHROOMISH + +#if P_FAMILY_SLAKOTH +static const struct LevelUpMove sSlakothLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 6, MOVE_ENCORE), + LEVEL_UP_MOVE( 9, MOVE_SLACK_OFF), + LEVEL_UP_MOVE(14, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(17, MOVE_AMNESIA), + LEVEL_UP_MOVE(22, MOVE_COVET), + LEVEL_UP_MOVE(25, MOVE_CHIP_AWAY), + LEVEL_UP_MOVE(30, MOVE_COUNTER), + LEVEL_UP_MOVE(33, MOVE_FLAIL), + LEVEL_UP_MOVE(38, MOVE_PLAY_ROUGH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sVigorothLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_REVERSAL), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 6, MOVE_ENCORE), + LEVEL_UP_MOVE( 9, MOVE_UPROAR), + LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_ENDURE), + LEVEL_UP_MOVE(23, MOVE_SLASH), + LEVEL_UP_MOVE(27, MOVE_CHIP_AWAY), + LEVEL_UP_MOVE(33, MOVE_COUNTER), + LEVEL_UP_MOVE(37, MOVE_FOCUS_PUNCH), + LEVEL_UP_MOVE(43, MOVE_REVERSAL), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSlakingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SWAGGER), + LEVEL_UP_MOVE( 1, MOVE_SWAGGER), + LEVEL_UP_MOVE( 1, MOVE_HAMMER_ARM), + LEVEL_UP_MOVE( 1, MOVE_PUNISHMENT), + LEVEL_UP_MOVE( 1, MOVE_FLING), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 1, MOVE_SLACK_OFF), + LEVEL_UP_MOVE( 6, MOVE_ENCORE), + LEVEL_UP_MOVE( 9, MOVE_SLACK_OFF), + LEVEL_UP_MOVE(14, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(17, MOVE_AMNESIA), + LEVEL_UP_MOVE(23, MOVE_COVET), + LEVEL_UP_MOVE(27, MOVE_CHIP_AWAY), + LEVEL_UP_MOVE(33, MOVE_COUNTER), + LEVEL_UP_MOVE(39, MOVE_FLAIL), + LEVEL_UP_MOVE(47, MOVE_FLING), + LEVEL_UP_MOVE(53, MOVE_PUNISHMENT), + LEVEL_UP_MOVE(61, MOVE_HAMMER_ARM), + LEVEL_UP_END +}; +#endif //P_FAMILY_SLAKOTH + +#if P_FAMILY_NINCADA +static const struct LevelUpMove sNincadaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(21, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(25, MOVE_MIND_READER), + LEVEL_UP_MOVE(29, MOVE_BIDE), + LEVEL_UP_MOVE(33, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(37, MOVE_DIG), + LEVEL_UP_END +}; + +static const struct LevelUpMove sNinjaskLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 0, MOVE_SCREECH), + LEVEL_UP_MOVE( 0, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE( 1, MOVE_BUG_BITE), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_AGILITY), + LEVEL_UP_MOVE(23, MOVE_SLASH), + LEVEL_UP_MOVE(29, MOVE_MIND_READER), + LEVEL_UP_MOVE(35, MOVE_BATON_PASS), + LEVEL_UP_MOVE(41, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(47, MOVE_X_SCISSOR), + LEVEL_UP_END +}; + +static const struct LevelUpMove sShedinjaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_SPITE), + LEVEL_UP_MOVE(21, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(25, MOVE_MIND_READER), + LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(33, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(37, MOVE_GRUDGE), + LEVEL_UP_MOVE(41, MOVE_HEAL_BLOCK), + LEVEL_UP_MOVE(45, MOVE_PHANTOM_FORCE), + LEVEL_UP_END +}; +#endif //P_FAMILY_NINCADA + +#if P_FAMILY_WHISMUR +static const struct LevelUpMove sWhismurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 4, MOVE_ECHOED_VOICE), + LEVEL_UP_MOVE( 8, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_HOWL), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(18, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(22, MOVE_STOMP), + LEVEL_UP_MOVE(25, MOVE_UPROAR), + LEVEL_UP_MOVE(29, MOVE_ROAR), + LEVEL_UP_MOVE(32, MOVE_REST), + LEVEL_UP_MOVE(36, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(39, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(43, MOVE_SYNCHRONOISE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sLoudredLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_ECHOED_VOICE), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 4, MOVE_ECHOED_VOICE), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_HOWL), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(18, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(23, MOVE_STOMP), + LEVEL_UP_MOVE(27, MOVE_UPROAR), + LEVEL_UP_MOVE(32, MOVE_ROAR), + LEVEL_UP_MOVE(36, MOVE_REST), + LEVEL_UP_MOVE(41, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(45, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(50, MOVE_SYNCHRONOISE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sExploudLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_CRUNCH), + LEVEL_UP_MOVE( 1, MOVE_CRUNCH), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_BOOMBURST), + LEVEL_UP_MOVE( 1, MOVE_ICE_FANG), + LEVEL_UP_MOVE( 1, MOVE_FIRE_FANG), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_FANG), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_ECHOED_VOICE), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 4, MOVE_ECHOED_VOICE), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_HOWL), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(18, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(23, MOVE_STOMP), + LEVEL_UP_MOVE(27, MOVE_UPROAR), + LEVEL_UP_MOVE(32, MOVE_ROAR), + LEVEL_UP_MOVE(36, MOVE_REST), + LEVEL_UP_MOVE(42, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(47, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(53, MOVE_SYNCHRONOISE), + LEVEL_UP_MOVE(58, MOVE_BOOMBURST), + LEVEL_UP_MOVE(64, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; +#endif //P_FAMILY_WHISMUR + +#if P_FAMILY_MAKUHITA +static const struct LevelUpMove sMakuhitaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 7, MOVE_ARM_THRUST), + LEVEL_UP_MOVE(10, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(13, MOVE_FORCE_PALM), + LEVEL_UP_MOVE(16, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(22, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(25, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(28, MOVE_SMELLING_SALTS), + LEVEL_UP_MOVE(31, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(34, MOVE_WAKE_UP_SLAP), + LEVEL_UP_MOVE(37, MOVE_ENDURE), + LEVEL_UP_MOVE(40, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE(43, MOVE_REVERSAL), + LEVEL_UP_MOVE(46, MOVE_HEAVY_SLAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sHariyamaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BRINE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_ARM_THRUST), + LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 7, MOVE_ARM_THRUST), + LEVEL_UP_MOVE(10, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(13, MOVE_FORCE_PALM), + LEVEL_UP_MOVE(16, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(22, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(26, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(30, MOVE_SMELLING_SALTS), + LEVEL_UP_MOVE(34, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(38, MOVE_WAKE_UP_SLAP), + LEVEL_UP_MOVE(42, MOVE_ENDURE), + LEVEL_UP_MOVE(46, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE(50, MOVE_REVERSAL), + LEVEL_UP_MOVE(54, MOVE_HEAVY_SLAM), + LEVEL_UP_END +}; +#endif //P_FAMILY_MAKUHITA + +#if P_FAMILY_NOSEPASS +static const struct LevelUpMove sNosepassLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_BLOCK), + LEVEL_UP_MOVE(10, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(13, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(16, MOVE_REST), + LEVEL_UP_MOVE(19, MOVE_SPARK), + LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(25, MOVE_POWER_GEM), + LEVEL_UP_MOVE(28, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(31, MOVE_DISCHARGE), + LEVEL_UP_MOVE(34, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(40, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(43, MOVE_LOCK_ON), + LEVEL_UP_MOVE(43, MOVE_ZAP_CANNON), + LEVEL_UP_END +}; + +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sProbopassLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_MAGNETIC_FLUX), + LEVEL_UP_MOVE( 1, MOVE_MAGNET_RISE), + LEVEL_UP_MOVE( 1, MOVE_GRAVITY), + LEVEL_UP_MOVE( 1, MOVE_WIDE_GUARD), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 1, MOVE_BLOCK), + LEVEL_UP_MOVE( 1, MOVE_MAGNET_BOMB), + LEVEL_UP_MOVE( 4, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 7, MOVE_BLOCK), + LEVEL_UP_MOVE(10, MOVE_MAGNET_BOMB), + LEVEL_UP_MOVE(13, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(16, MOVE_REST), + LEVEL_UP_MOVE(19, MOVE_SPARK), + LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(25, MOVE_POWER_GEM), + LEVEL_UP_MOVE(28, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(31, MOVE_DISCHARGE), + LEVEL_UP_MOVE(34, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(40, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(43, MOVE_LOCK_ON), + LEVEL_UP_MOVE(43, MOVE_ZAP_CANNON), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_NOSEPASS + +#if P_FAMILY_SKITTY +static const struct LevelUpMove sSkittyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FAKE_OUT), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 7, MOVE_SING), + LEVEL_UP_MOVE(10, MOVE_ATTRACT), + LEVEL_UP_MOVE(13, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE(16, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(19, MOVE_COPYCAT), + LEVEL_UP_MOVE(22, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_CHARM), + LEVEL_UP_MOVE(28, MOVE_WAKE_UP_SLAP), + LEVEL_UP_MOVE(31, MOVE_ASSIST), + LEVEL_UP_MOVE(34, MOVE_COVET), + LEVEL_UP_MOVE(37, MOVE_HEAL_BELL), + LEVEL_UP_MOVE(40, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(43, MOVE_CAPTIVATE), + LEVEL_UP_MOVE(46, MOVE_PLAY_ROUGH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDelcattyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FAKE_OUT), + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_ATTRACT), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_END +}; +#endif //P_FAMILY_SKITTY + +#if P_FAMILY_SABLEYE +static const struct LevelUpMove sSableyeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 4, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 6, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(14, MOVE_DETECT), + LEVEL_UP_MOVE(16, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(21, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(24, MOVE_PUNISHMENT), + LEVEL_UP_MOVE(26, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(29, MOVE_SHADOW_CLAW), + LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(34, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(36, MOVE_POWER_GEM), + LEVEL_UP_MOVE(39, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(41, MOVE_FOUL_PLAY), + LEVEL_UP_MOVE(44, MOVE_QUASH), + LEVEL_UP_MOVE(46, MOVE_MEAN_LOOK), + LEVEL_UP_END +}; +#endif //P_FAMILY_SABLEYE + +#if P_FAMILY_MAWILE +static const struct LevelUpMove sMawileLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE( 1, MOVE_IRON_HEAD), + LEVEL_UP_MOVE( 1, MOVE_TAUNT), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FAIRY_WIND), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 5, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE( 9, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(17, MOVE_VISE_GRIP), + LEVEL_UP_MOVE(21, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_BATON_PASS), + LEVEL_UP_MOVE(29, MOVE_CRUNCH), + LEVEL_UP_MOVE(33, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(37, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(41, MOVE_STOCKPILE), + LEVEL_UP_MOVE(41, MOVE_SWALLOW), + LEVEL_UP_MOVE(41, MOVE_SPIT_UP), + LEVEL_UP_MOVE(45, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(49, MOVE_PLAY_ROUGH), + LEVEL_UP_END +}; +#endif //P_FAMILY_MAWILE + +#if P_FAMILY_ARON +static const struct LevelUpMove sAronLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 4, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 7, MOVE_HEADBUTT), + LEVEL_UP_MOVE(10, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(13, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(16, MOVE_PROTECT), + LEVEL_UP_MOVE(19, MOVE_ROAR), + LEVEL_UP_MOVE(22, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(34, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(37, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(40, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(43, MOVE_AUTOTOMIZE), + LEVEL_UP_MOVE(46, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE(49, MOVE_METAL_BURST), + LEVEL_UP_END +}; + +static const struct LevelUpMove sLaironLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 4, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 7, MOVE_HEADBUTT), + LEVEL_UP_MOVE(10, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(13, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(16, MOVE_PROTECT), + LEVEL_UP_MOVE(19, MOVE_ROAR), + LEVEL_UP_MOVE(22, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(35, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(39, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(47, MOVE_AUTOTOMIZE), + LEVEL_UP_MOVE(51, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE(55, MOVE_METAL_BURST), + LEVEL_UP_END +}; + +static const struct LevelUpMove sAggronLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 4, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 7, MOVE_HEADBUTT), + LEVEL_UP_MOVE(10, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(13, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(16, MOVE_PROTECT), + LEVEL_UP_MOVE(19, MOVE_ROAR), + LEVEL_UP_MOVE(22, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(35, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(39, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(45, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(51, MOVE_AUTOTOMIZE), + LEVEL_UP_MOVE(57, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE(63, MOVE_METAL_BURST), + LEVEL_UP_END +}; +#endif //P_FAMILY_ARON + +#if P_FAMILY_MEDITITE +static const struct LevelUpMove sMedititeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 4, MOVE_MEDITATE), + LEVEL_UP_MOVE( 7, MOVE_CONFUSION), + LEVEL_UP_MOVE( 9, MOVE_DETECT), + LEVEL_UP_MOVE(12, MOVE_ENDURE), + LEVEL_UP_MOVE(15, MOVE_FEINT), + LEVEL_UP_MOVE(17, MOVE_FORCE_PALM), + LEVEL_UP_MOVE(20, MOVE_HIDDEN_POWER), + LEVEL_UP_MOVE(23, MOVE_CALM_MIND), + LEVEL_UP_MOVE(25, MOVE_MIND_READER), + LEVEL_UP_MOVE(28, MOVE_HIGH_JUMP_KICK), + LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(33, MOVE_ACUPRESSURE), + LEVEL_UP_MOVE(36, MOVE_POWER_TRICK), + LEVEL_UP_MOVE(39, MOVE_REVERSAL), + LEVEL_UP_MOVE(41, MOVE_RECOVER), + LEVEL_UP_MOVE(44, MOVE_COUNTER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMedichamLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 1, MOVE_MEDITATE), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DETECT), + LEVEL_UP_MOVE( 4, MOVE_MEDITATE), + LEVEL_UP_MOVE( 7, MOVE_CONFUSION), + LEVEL_UP_MOVE( 9, MOVE_DETECT), + LEVEL_UP_MOVE(12, MOVE_ENDURE), + LEVEL_UP_MOVE(15, MOVE_FEINT), + LEVEL_UP_MOVE(17, MOVE_FORCE_PALM), + LEVEL_UP_MOVE(20, MOVE_HIDDEN_POWER), + LEVEL_UP_MOVE(23, MOVE_CALM_MIND), + LEVEL_UP_MOVE(25, MOVE_MIND_READER), + LEVEL_UP_MOVE(28, MOVE_HIGH_JUMP_KICK), + LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(33, MOVE_ACUPRESSURE), + LEVEL_UP_MOVE(36, MOVE_POWER_TRICK), + LEVEL_UP_MOVE(42, MOVE_REVERSAL), + LEVEL_UP_MOVE(47, MOVE_RECOVER), + LEVEL_UP_MOVE(53, MOVE_COUNTER), + LEVEL_UP_END +}; +#endif //P_FAMILY_MEDITITE + +#if P_FAMILY_ELECTRIKE +static const struct LevelUpMove sElectrikeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 4, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_HOWL), + LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_SPARK), + LEVEL_UP_MOVE(16, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(19, MOVE_THUNDER_FANG), + LEVEL_UP_MOVE(24, MOVE_BITE), + LEVEL_UP_MOVE(29, MOVE_DISCHARGE), + LEVEL_UP_MOVE(34, MOVE_ROAR), + LEVEL_UP_MOVE(39, MOVE_WILD_CHARGE), + LEVEL_UP_MOVE(44, MOVE_CHARGE), + LEVEL_UP_MOVE(49, MOVE_THUNDER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sManectricLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN), + LEVEL_UP_MOVE( 1, MOVE_FIRE_FANG), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 4, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_HOWL), + LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_SPARK), + LEVEL_UP_MOVE(16, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(19, MOVE_THUNDER_FANG), + LEVEL_UP_MOVE(24, MOVE_BITE), + LEVEL_UP_MOVE(30, MOVE_DISCHARGE), + LEVEL_UP_MOVE(36, MOVE_ROAR), + LEVEL_UP_MOVE(42, MOVE_WILD_CHARGE), + LEVEL_UP_MOVE(48, MOVE_CHARGE), + LEVEL_UP_MOVE(54, MOVE_THUNDER), + LEVEL_UP_MOVE(60, MOVE_ELECTRIC_TERRAIN), + LEVEL_UP_END +}; +#endif //P_FAMILY_ELECTRIKE + +#if P_FAMILY_PLUSLE +static const struct LevelUpMove sPlusleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_NUZZLE), + LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 4, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 7, MOVE_SPARK), + LEVEL_UP_MOVE(10, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_BESTOW), + LEVEL_UP_MOVE(16, MOVE_SWIFT), + LEVEL_UP_MOVE(19, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(22, MOVE_COPYCAT), + LEVEL_UP_MOVE(25, MOVE_CHARM), + LEVEL_UP_MOVE(28, MOVE_CHARGE), + LEVEL_UP_MOVE(31, MOVE_DISCHARGE), + LEVEL_UP_MOVE(34, MOVE_BATON_PASS), + LEVEL_UP_MOVE(37, MOVE_AGILITY), + LEVEL_UP_MOVE(40, MOVE_LAST_RESORT), + LEVEL_UP_MOVE(43, MOVE_THUNDER), + LEVEL_UP_MOVE(46, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(49, MOVE_ENTRAINMENT), + LEVEL_UP_END +}; +#endif //P_FAMILY_PLUSLE + +#if P_FAMILY_MINUN +static const struct LevelUpMove sMinunLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_NUZZLE), + LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 4, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 7, MOVE_SPARK), + LEVEL_UP_MOVE(10, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_SWITCHEROO), + LEVEL_UP_MOVE(16, MOVE_SWIFT), + LEVEL_UP_MOVE(19, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE(22, MOVE_COPYCAT), + LEVEL_UP_MOVE(25, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(28, MOVE_CHARGE), + LEVEL_UP_MOVE(31, MOVE_DISCHARGE), + LEVEL_UP_MOVE(34, MOVE_BATON_PASS), + LEVEL_UP_MOVE(37, MOVE_AGILITY), + LEVEL_UP_MOVE(40, MOVE_TRUMP_CARD), + LEVEL_UP_MOVE(43, MOVE_THUNDER), + LEVEL_UP_MOVE(46, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(49, MOVE_ENTRAINMENT), + LEVEL_UP_END +}; +#endif //P_FAMILY_MINUN + +#if P_FAMILY_VOLBEAT_ILLUMISE +static const struct LevelUpMove sVolbeatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FLASH), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 8, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(12, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(15, MOVE_STRUGGLE_BUG), + LEVEL_UP_MOVE(19, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(22, MOVE_TAIL_GLOW), + LEVEL_UP_MOVE(26, MOVE_SIGNAL_BEAM), + LEVEL_UP_MOVE(29, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(36, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(40, MOVE_BUG_BUZZ), + LEVEL_UP_MOVE(43, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(50, MOVE_INFESTATION), + LEVEL_UP_END +}; + +static const struct LevelUpMove sIllumiseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 9, MOVE_CHARM), + LEVEL_UP_MOVE(12, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(15, MOVE_STRUGGLE_BUG), + LEVEL_UP_MOVE(19, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(22, MOVE_WISH), + LEVEL_UP_MOVE(26, MOVE_ENCORE), + LEVEL_UP_MOVE(29, MOVE_FLATTER), + LEVEL_UP_MOVE(33, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(36, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(40, MOVE_BUG_BUZZ), + LEVEL_UP_MOVE(43, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(47, MOVE_COVET), + LEVEL_UP_MOVE(50, MOVE_INFESTATION), + LEVEL_UP_END +}; +#endif //P_FAMILY_VOLBEAT_ILLUMISE + +#if P_FAMILY_ROSELIA +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sBudewLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 4, MOVE_GROWTH), + LEVEL_UP_MOVE( 7, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(10, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(13, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(16, MOVE_WORRY_SEED), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS + +static const struct LevelUpMove sRoseliaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 4, MOVE_GROWTH), + LEVEL_UP_MOVE( 7, MOVE_POISON_STING), + LEVEL_UP_MOVE(10, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(13, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(16, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(19, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(22, MOVE_GRASS_WHISTLE), + LEVEL_UP_MOVE(25, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(28, MOVE_TOXIC_SPIKES), + LEVEL_UP_MOVE(31, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(34, MOVE_INGRAIN), + LEVEL_UP_MOVE(37, MOVE_PETAL_BLIZZARD), + LEVEL_UP_MOVE(40, MOVE_TOXIC), + LEVEL_UP_MOVE(43, MOVE_AROMATHERAPY), + LEVEL_UP_MOVE(46, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(50, MOVE_PETAL_DANCE), + LEVEL_UP_END +}; + +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sRoseradeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VENOM_DRENCH), + LEVEL_UP_MOVE( 1, MOVE_GRASSY_TERRAIN), + LEVEL_UP_MOVE( 1, MOVE_WEATHER_BALL), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE( 1, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ROSELIA + +#if P_FAMILY_GULPIN +static const struct LevelUpMove sGulpinLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 5, MOVE_YAWN), + LEVEL_UP_MOVE( 8, MOVE_POISON_GAS), + LEVEL_UP_MOVE(10, MOVE_SLUDGE), + LEVEL_UP_MOVE(12, MOVE_AMNESIA), + LEVEL_UP_MOVE(17, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE(20, MOVE_ENCORE), + LEVEL_UP_MOVE(25, MOVE_TOXIC), + LEVEL_UP_MOVE(28, MOVE_STOCKPILE), + LEVEL_UP_MOVE(28, MOVE_SPIT_UP), + LEVEL_UP_MOVE(28, MOVE_SWALLOW), + LEVEL_UP_MOVE(33, MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE(36, MOVE_GASTRO_ACID), + LEVEL_UP_MOVE(41, MOVE_BELCH), + LEVEL_UP_MOVE(44, MOVE_WRING_OUT), + LEVEL_UP_MOVE(49, MOVE_GUNK_SHOT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSwalotLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 1, MOVE_BODY_SLAM), + LEVEL_UP_MOVE( 1, MOVE_VENOM_DRENCH), + LEVEL_UP_MOVE( 1, MOVE_GUNK_SHOT), + LEVEL_UP_MOVE( 1, MOVE_WRING_OUT), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_SLUDGE), + LEVEL_UP_MOVE( 5, MOVE_YAWN), + LEVEL_UP_MOVE( 8, MOVE_POISON_GAS), + LEVEL_UP_MOVE(10, MOVE_SLUDGE), + LEVEL_UP_MOVE(12, MOVE_AMNESIA), + LEVEL_UP_MOVE(17, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE(20, MOVE_ENCORE), + LEVEL_UP_MOVE(25, MOVE_TOXIC), + LEVEL_UP_MOVE(30, MOVE_STOCKPILE), + LEVEL_UP_MOVE(30, MOVE_SPIT_UP), + LEVEL_UP_MOVE(30, MOVE_SWALLOW), + LEVEL_UP_MOVE(37, MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE(42, MOVE_GASTRO_ACID), + LEVEL_UP_MOVE(49, MOVE_BELCH), + LEVEL_UP_MOVE(54, MOVE_WRING_OUT), + LEVEL_UP_MOVE(61, MOVE_GUNK_SHOT), + LEVEL_UP_END +}; +#endif //P_FAMILY_GULPIN + +#if P_FAMILY_CARVANHA +static const struct LevelUpMove sCarvanhaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 4, MOVE_RAGE), + LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(11, MOVE_AQUA_JET), + LEVEL_UP_MOVE(15, MOVE_ASSURANCE), + LEVEL_UP_MOVE(18, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_SWAGGER), + LEVEL_UP_MOVE(25, MOVE_ICE_FANG), + LEVEL_UP_MOVE(29, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(32, MOVE_POISON_FANG), + LEVEL_UP_MOVE(36, MOVE_CRUNCH), + LEVEL_UP_MOVE(39, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSharpedoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SLASH), + LEVEL_UP_MOVE( 1, MOVE_SLASH), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE( 1, MOVE_FEINT), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 4, MOVE_RAGE), + LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(11, MOVE_AQUA_JET), + LEVEL_UP_MOVE(15, MOVE_ASSURANCE), + LEVEL_UP_MOVE(18, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_SWAGGER), + LEVEL_UP_MOVE(25, MOVE_ICE_FANG), + LEVEL_UP_MOVE(29, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(34, MOVE_POISON_FANG), + LEVEL_UP_MOVE(40, MOVE_CRUNCH), + LEVEL_UP_MOVE(45, MOVE_AGILITY), + LEVEL_UP_MOVE(51, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(56, MOVE_TAUNT), + LEVEL_UP_MOVE(62, MOVE_NIGHT_SLASH), + LEVEL_UP_END +}; +#endif //P_FAMILY_CARVANHA + +#if P_FAMILY_WAILMER +static const struct LevelUpMove sWailmerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_WATER_GUN), + LEVEL_UP_MOVE(10, MOVE_ROLLOUT), + LEVEL_UP_MOVE(13, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE(16, MOVE_ASTONISH), + LEVEL_UP_MOVE(19, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(22, MOVE_MIST), + LEVEL_UP_MOVE(25, MOVE_BRINE), + LEVEL_UP_MOVE(29, MOVE_REST), + LEVEL_UP_MOVE(33, MOVE_WATER_SPOUT), + LEVEL_UP_MOVE(37, MOVE_AMNESIA), + LEVEL_UP_MOVE(41, MOVE_DIVE), + LEVEL_UP_MOVE(45, MOVE_BOUNCE), + LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(53, MOVE_HEAVY_SLAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sWailordLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SOAK), + LEVEL_UP_MOVE( 1, MOVE_NOBLE_ROAR), + LEVEL_UP_MOVE( 1, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_ROLLOUT), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_WATER_GUN), + LEVEL_UP_MOVE(10, MOVE_ROLLOUT), + LEVEL_UP_MOVE(13, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE(16, MOVE_ASTONISH), + LEVEL_UP_MOVE(19, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(22, MOVE_MIST), + LEVEL_UP_MOVE(25, MOVE_BRINE), + LEVEL_UP_MOVE(29, MOVE_REST), + LEVEL_UP_MOVE(33, MOVE_WATER_SPOUT), + LEVEL_UP_MOVE(37, MOVE_AMNESIA), + LEVEL_UP_MOVE(44, MOVE_DIVE), + LEVEL_UP_MOVE(51, MOVE_BOUNCE), + LEVEL_UP_MOVE(58, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(65, MOVE_HEAVY_SLAM), + LEVEL_UP_END +}; +#endif //P_FAMILY_WAILMER + +#if P_FAMILY_NUMEL +static const struct LevelUpMove sNumelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_EMBER), + LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(12, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(15, MOVE_FLAME_BURST), + LEVEL_UP_MOVE(19, MOVE_AMNESIA), + LEVEL_UP_MOVE(22, MOVE_LAVA_PLUME), + LEVEL_UP_MOVE(26, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(29, MOVE_CURSE), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(36, MOVE_YAWN), + LEVEL_UP_MOVE(40, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(43, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sCameruptLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 1, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 1, MOVE_FISSURE), + LEVEL_UP_MOVE( 1, MOVE_ERUPTION), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 8, MOVE_EMBER), + LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(12, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(15, MOVE_FLAME_BURST), + LEVEL_UP_MOVE(19, MOVE_AMNESIA), + LEVEL_UP_MOVE(22, MOVE_LAVA_PLUME), + LEVEL_UP_MOVE(26, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(29, MOVE_CURSE), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(39, MOVE_YAWN), + LEVEL_UP_MOVE(46, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(52, MOVE_ERUPTION), + LEVEL_UP_MOVE(59, MOVE_FISSURE), + LEVEL_UP_END +}; +#endif //P_FAMILY_NUMEL + +#if P_FAMILY_TORKOAL +static const struct LevelUpMove sTorkoalLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 4, MOVE_SMOG), + LEVEL_UP_MOVE( 7, MOVE_WITHDRAW), + LEVEL_UP_MOVE(10, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(13, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(15, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(18, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(22, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_LAVA_PLUME), + LEVEL_UP_MOVE(27, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(30, MOVE_PROTECT), + LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(38, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(40, MOVE_AMNESIA), + LEVEL_UP_MOVE(42, MOVE_FLAIL), + LEVEL_UP_MOVE(45, MOVE_HEAT_WAVE), + LEVEL_UP_MOVE(47, MOVE_SHELL_SMASH), + LEVEL_UP_MOVE(50, MOVE_INFERNO), + LEVEL_UP_END +}; +#endif //P_FAMILY_TORKOAL + +#if P_FAMILY_SPOINK +static const struct LevelUpMove sSpoinkLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 7, MOVE_PSYWAVE), + LEVEL_UP_MOVE(10, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(14, MOVE_PSYBEAM), + LEVEL_UP_MOVE(15, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(18, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(21, MOVE_MAGIC_COAT), + LEVEL_UP_MOVE(26, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(29, MOVE_POWER_GEM), + LEVEL_UP_MOVE(29, MOVE_REST), + LEVEL_UP_MOVE(33, MOVE_SNORE), + LEVEL_UP_MOVE(38, MOVE_PSYSHOCK), + LEVEL_UP_MOVE(40, MOVE_PAYBACK), + LEVEL_UP_MOVE(44, MOVE_PSYCHIC), + LEVEL_UP_MOVE(50, MOVE_BOUNCE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGrumpigLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_TEETER_DANCE), + LEVEL_UP_MOVE( 1, MOVE_TEETER_DANCE), + LEVEL_UP_MOVE( 1, MOVE_BELCH), + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_PSYBEAM), + LEVEL_UP_MOVE( 7, MOVE_PSYWAVE), + LEVEL_UP_MOVE(10, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(14, MOVE_PSYBEAM), + LEVEL_UP_MOVE(15, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(18, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(21, MOVE_MAGIC_COAT), + LEVEL_UP_MOVE(26, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(29, MOVE_POWER_GEM), + LEVEL_UP_MOVE(35, MOVE_REST), + LEVEL_UP_MOVE(35, MOVE_SNORE), + LEVEL_UP_MOVE(42, MOVE_PSYSHOCK), + LEVEL_UP_MOVE(46, MOVE_PAYBACK), + LEVEL_UP_MOVE(52, MOVE_PSYCHIC), + LEVEL_UP_MOVE(60, MOVE_BOUNCE), + LEVEL_UP_END +}; +#endif //P_FAMILY_SPOINK + +#if P_FAMILY_SPINDA +static const struct LevelUpMove sSpindaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_COPYCAT), + LEVEL_UP_MOVE(10, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(14, MOVE_PSYBEAM), + LEVEL_UP_MOVE(19, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(23, MOVE_DIZZY_PUNCH), + LEVEL_UP_MOVE(28, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(32, MOVE_TEETER_DANCE), + LEVEL_UP_MOVE(37, MOVE_UPROAR), + LEVEL_UP_MOVE(41, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(46, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(50, MOVE_FLAIL), + LEVEL_UP_MOVE(55, MOVE_THRASH), + LEVEL_UP_END +}; +#endif //P_FAMILY_SPINDA + +#if P_FAMILY_TRAPINCH +static const struct LevelUpMove sTrapinchLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 5, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 8, MOVE_BULLDOZE), + LEVEL_UP_MOVE(12, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(15, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(19, MOVE_DIG), + LEVEL_UP_MOVE(22, MOVE_CRUNCH), + LEVEL_UP_MOVE(26, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(29, MOVE_FEINT), + LEVEL_UP_MOVE(33, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(36, MOVE_SANDSTORM), + LEVEL_UP_MOVE(40, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(43, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(47, MOVE_FISSURE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sVibravaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE( 1, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE( 1, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 5, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 8, MOVE_BULLDOZE), + LEVEL_UP_MOVE(12, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(15, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(19, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(22, MOVE_SCREECH), + LEVEL_UP_MOVE(26, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(29, MOVE_BUG_BUZZ), + LEVEL_UP_MOVE(33, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(36, MOVE_SANDSTORM), + LEVEL_UP_MOVE(40, MOVE_UPROAR), + LEVEL_UP_MOVE(43, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(47, MOVE_BOOMBURST), + LEVEL_UP_END +}; + +static const struct LevelUpMove sFlygonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE( 1, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE( 1, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE( 1, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE( 1, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 5, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 8, MOVE_BULLDOZE), + LEVEL_UP_MOVE(12, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(15, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(19, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(22, MOVE_SCREECH), + LEVEL_UP_MOVE(26, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(29, MOVE_DRAGON_TAIL), + LEVEL_UP_MOVE(33, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(36, MOVE_SANDSTORM), + LEVEL_UP_MOVE(40, MOVE_UPROAR), + LEVEL_UP_MOVE(43, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(47, MOVE_DRAGON_RUSH), + LEVEL_UP_END +}; +#endif //P_FAMILY_TRAPINCH + +#if P_FAMILY_CACNEA +static const struct LevelUpMove sCacneaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 4, MOVE_ABSORB), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_NEEDLE_ARM), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(22, MOVE_INGRAIN), + LEVEL_UP_MOVE(26, MOVE_PAYBACK), + LEVEL_UP_MOVE(30, MOVE_SPIKES), + LEVEL_UP_MOVE(34, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(38, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(42, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(46, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(50, MOVE_SANDSTORM), + LEVEL_UP_MOVE(54, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +static const struct LevelUpMove sCacturneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SPIKY_SHIELD), + LEVEL_UP_MOVE( 1, MOVE_SPIKY_SHIELD), + LEVEL_UP_MOVE( 1, MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 1, MOVE_REVENGE), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 4, MOVE_ABSORB), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_NEEDLE_ARM), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(22, MOVE_INGRAIN), + LEVEL_UP_MOVE(26, MOVE_PAYBACK), + LEVEL_UP_MOVE(30, MOVE_SPIKES), + LEVEL_UP_MOVE(35, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(38, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(44, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(49, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(54, MOVE_SANDSTORM), + LEVEL_UP_MOVE(59, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; +#endif //P_FAMILY_CACNEA + +#if P_FAMILY_SWABLU +static const struct LevelUpMove sSwabluLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 3, MOVE_ASTONISH), + LEVEL_UP_MOVE( 5, MOVE_SING), + LEVEL_UP_MOVE( 7, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(11, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE(14, MOVE_MIST), + LEVEL_UP_MOVE(17, MOVE_ROUND), + LEVEL_UP_MOVE(20, MOVE_NATURAL_GIFT), + LEVEL_UP_MOVE(23, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(26, MOVE_REFRESH), + LEVEL_UP_MOVE(30, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(34, MOVE_COTTON_GUARD), + LEVEL_UP_MOVE(38, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(42, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(46, MOVE_MOONBLAST), + LEVEL_UP_END +}; + +static const struct LevelUpMove sAltariaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE( 1, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE( 1, MOVE_SKY_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_PLUCK), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 3, MOVE_ASTONISH), + LEVEL_UP_MOVE( 5, MOVE_SING), + LEVEL_UP_MOVE( 7, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(11, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE(14, MOVE_MIST), + LEVEL_UP_MOVE(17, MOVE_ROUND), + LEVEL_UP_MOVE(20, MOVE_NATURAL_GIFT), + LEVEL_UP_MOVE(23, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(26, MOVE_REFRESH), + LEVEL_UP_MOVE(30, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(34, MOVE_COTTON_GUARD), + LEVEL_UP_MOVE(40, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(46, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(52, MOVE_MOONBLAST), + LEVEL_UP_MOVE(59, MOVE_SKY_ATTACK), + LEVEL_UP_END +}; +#endif //P_FAMILY_SWABLU + +#if P_FAMILY_ZANGOOSE +static const struct LevelUpMove sZangooseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 5, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 8, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(12, MOVE_PURSUIT), + LEVEL_UP_MOVE(15, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(19, MOVE_SLASH), + LEVEL_UP_MOVE(22, MOVE_REVENGE), + LEVEL_UP_MOVE(26, MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE(29, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(33, MOVE_EMBARGO), + LEVEL_UP_MOVE(36, MOVE_DETECT), + LEVEL_UP_MOVE(40, MOVE_X_SCISSOR), + LEVEL_UP_MOVE(43, MOVE_TAUNT), + LEVEL_UP_MOVE(47, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(50, MOVE_CLOSE_COMBAT), + LEVEL_UP_END +}; +#endif //P_FAMILY_ZANGOOSE + +#if P_FAMILY_SEVIPER +static const struct LevelUpMove sSeviperLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_SWAGGER), + LEVEL_UP_MOVE( 4, MOVE_BITE), + LEVEL_UP_MOVE( 6, MOVE_LICK), + LEVEL_UP_MOVE( 9, MOVE_POISON_TAIL), + LEVEL_UP_MOVE(11, MOVE_FEINT), + LEVEL_UP_MOVE(14, MOVE_SCREECH), + LEVEL_UP_MOVE(16, MOVE_VENOSHOCK), + LEVEL_UP_MOVE(19, MOVE_GLARE), + LEVEL_UP_MOVE(21, MOVE_POISON_FANG), + LEVEL_UP_MOVE(24, MOVE_VENOM_DRENCH), + LEVEL_UP_MOVE(26, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(29, MOVE_GASTRO_ACID), + LEVEL_UP_MOVE(31, MOVE_POISON_JAB), + LEVEL_UP_MOVE(34, MOVE_HAZE), + LEVEL_UP_MOVE(36, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(39, MOVE_CRUNCH), + LEVEL_UP_MOVE(41, MOVE_BELCH), + LEVEL_UP_MOVE(44, MOVE_COIL), + LEVEL_UP_MOVE(46, MOVE_WRING_OUT), + LEVEL_UP_END +}; +#endif //P_FAMILY_SEVIPER + +#if P_FAMILY_LUNATONE +static const struct LevelUpMove sLunatoneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWER_GEM), + LEVEL_UP_MOVE( 1, MOVE_PSYSHOCK), + LEVEL_UP_MOVE( 1, MOVE_MOONBLAST), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 5, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 9, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE(13, MOVE_PSYWAVE), + LEVEL_UP_MOVE(17, MOVE_EMBARGO), + LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(25, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(29, MOVE_PSYCHIC), + LEVEL_UP_MOVE(33, MOVE_HEAL_BLOCK), + LEVEL_UP_MOVE(37, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(41, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(45, MOVE_EXPLOSION), + LEVEL_UP_MOVE(49, MOVE_MAGIC_ROOM), + LEVEL_UP_END +}; +#endif //P_FAMILY_LUNATONE + +#if P_FAMILY_SOLROCK +static const struct LevelUpMove sSolrockLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FLARE_BLITZ), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 5, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE( 9, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE(13, MOVE_PSYWAVE), + LEVEL_UP_MOVE(17, MOVE_EMBARGO), + LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(25, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(29, MOVE_PSYCHIC), + LEVEL_UP_MOVE(33, MOVE_HEAL_BLOCK), + LEVEL_UP_MOVE(37, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(41, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(45, MOVE_EXPLOSION), + LEVEL_UP_MOVE(49, MOVE_WONDER_ROOM), + LEVEL_UP_END +}; +#endif //P_FAMILY_SOLROCK + +#if P_FAMILY_BARBOACH +static const struct LevelUpMove sBarboachLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 6, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 9, MOVE_WATER_GUN), + LEVEL_UP_MOVE(13, MOVE_MUD_BOMB), + LEVEL_UP_MOVE(15, MOVE_AMNESIA), + LEVEL_UP_MOVE(17, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(20, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(25, MOVE_REST), + LEVEL_UP_MOVE(25, MOVE_SNORE), + LEVEL_UP_MOVE(28, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(32, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(35, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(39, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(44, MOVE_FISSURE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sWhiscashLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_THRASH), + LEVEL_UP_MOVE( 1, MOVE_THRASH), + LEVEL_UP_MOVE( 1, MOVE_BELCH), + LEVEL_UP_MOVE( 1, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE( 1, MOVE_TICKLE), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 6, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 9, MOVE_WATER_GUN), + LEVEL_UP_MOVE(13, MOVE_MUD_BOMB), + LEVEL_UP_MOVE(15, MOVE_AMNESIA), + LEVEL_UP_MOVE(17, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(20, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(25, MOVE_REST), + LEVEL_UP_MOVE(25, MOVE_SNORE), + LEVEL_UP_MOVE(28, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(34, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(39, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(45, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(52, MOVE_FISSURE), + LEVEL_UP_END +}; +#endif //P_FAMILY_BARBOACH + +#if P_FAMILY_CORPHISH +static const struct LevelUpMove sCorphishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 5, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_VISE_GRIP), + LEVEL_UP_MOVE(10, MOVE_LEER), + LEVEL_UP_MOVE(14, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(17, MOVE_PROTECT), + LEVEL_UP_MOVE(20, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(23, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(26, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(31, MOVE_RAZOR_SHELL), + LEVEL_UP_MOVE(34, MOVE_TAUNT), + LEVEL_UP_MOVE(37, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(39, MOVE_CRUNCH), + LEVEL_UP_MOVE(43, MOVE_CRABHAMMER), + LEVEL_UP_MOVE(48, MOVE_GUILLOTINE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sCrawdauntLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SWIFT), + LEVEL_UP_MOVE( 1, MOVE_SWIFT), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_VISE_GRIP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 5, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_VISE_GRIP), + LEVEL_UP_MOVE(10, MOVE_LEER), + LEVEL_UP_MOVE(14, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(17, MOVE_PROTECT), + LEVEL_UP_MOVE(20, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(23, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(26, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(32, MOVE_RAZOR_SHELL), + LEVEL_UP_MOVE(36, MOVE_TAUNT), + LEVEL_UP_MOVE(40, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(43, MOVE_CRUNCH), + LEVEL_UP_MOVE(48, MOVE_CRABHAMMER), + LEVEL_UP_MOVE(54, MOVE_GUILLOTINE), + LEVEL_UP_END +}; +#endif //P_FAMILY_CORPHISH + +#if P_FAMILY_BALTOY +static const struct LevelUpMove sBaltoyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 4, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_HEAL_BLOCK), + LEVEL_UP_MOVE(13, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(16, MOVE_PSYBEAM), + LEVEL_UP_MOVE(19, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(22, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(25, MOVE_POWER_TRICK), + LEVEL_UP_MOVE(28, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(31, MOVE_EXTRASENSORY), + LEVEL_UP_MOVE(34, MOVE_GUARD_SPLIT), + LEVEL_UP_MOVE(34, MOVE_POWER_SPLIT), + LEVEL_UP_MOVE(37, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(40, MOVE_SANDSTORM), + LEVEL_UP_MOVE(43, MOVE_IMPRISON), + LEVEL_UP_MOVE(46, MOVE_EXPLOSION), + LEVEL_UP_END +}; + +static const struct LevelUpMove sClaydolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 1, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 4, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_HEAL_BLOCK), + LEVEL_UP_MOVE(13, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(16, MOVE_PSYBEAM), + LEVEL_UP_MOVE(19, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(22, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(25, MOVE_POWER_TRICK), + LEVEL_UP_MOVE(28, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(31, MOVE_EXTRASENSORY), + LEVEL_UP_MOVE(34, MOVE_GUARD_SPLIT), + LEVEL_UP_MOVE(34, MOVE_POWER_SPLIT), + LEVEL_UP_MOVE(40, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(46, MOVE_SANDSTORM), + LEVEL_UP_MOVE(52, MOVE_IMPRISON), + LEVEL_UP_MOVE(58, MOVE_EXPLOSION), + LEVEL_UP_END +}; +#endif //P_FAMILY_BALTOY + +#if P_FAMILY_LILEEP +static const struct LevelUpMove sLileepLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 5, MOVE_ACID), + LEVEL_UP_MOVE( 9, MOVE_INGRAIN), + LEVEL_UP_MOVE(13, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(17, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(21, MOVE_BRINE), + LEVEL_UP_MOVE(26, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(31, MOVE_GASTRO_ACID), + LEVEL_UP_MOVE(36, MOVE_AMNESIA), + LEVEL_UP_MOVE(41, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(46, MOVE_STOCKPILE), + LEVEL_UP_MOVE(46, MOVE_SPIT_UP), + LEVEL_UP_MOVE(46, MOVE_SWALLOW), + LEVEL_UP_MOVE(52, MOVE_WRING_OUT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sCradilyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRING_OUT), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_ACID), + LEVEL_UP_MOVE( 1, MOVE_INGRAIN), + LEVEL_UP_MOVE( 5, MOVE_ACID), + LEVEL_UP_MOVE( 9, MOVE_INGRAIN), + LEVEL_UP_MOVE(13, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(17, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(21, MOVE_BRINE), + LEVEL_UP_MOVE(26, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(31, MOVE_GASTRO_ACID), + LEVEL_UP_MOVE(36, MOVE_AMNESIA), + LEVEL_UP_MOVE(44, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(52, MOVE_STOCKPILE), + LEVEL_UP_MOVE(52, MOVE_SPIT_UP), + LEVEL_UP_MOVE(52, MOVE_SWALLOW), + LEVEL_UP_MOVE(61, MOVE_WRING_OUT), + LEVEL_UP_END +}; +#endif //P_FAMILY_LILEEP + +#if P_FAMILY_ANORITH +static const struct LevelUpMove sAnorithLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 4, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 7, MOVE_WATER_GUN), + LEVEL_UP_MOVE(10, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(13, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(17, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(21, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(25, MOVE_BUG_BITE), + LEVEL_UP_MOVE(29, MOVE_BRINE), + LEVEL_UP_MOVE(34, MOVE_SLASH), + LEVEL_UP_MOVE(39, MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE(44, MOVE_X_SCISSOR), + LEVEL_UP_MOVE(49, MOVE_PROTECT), + LEVEL_UP_MOVE(55, MOVE_ROCK_BLAST), + LEVEL_UP_END +}; + +static const struct LevelUpMove sArmaldoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 4, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 7, MOVE_WATER_GUN), + LEVEL_UP_MOVE(10, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(13, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(17, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(21, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(25, MOVE_BUG_BITE), + LEVEL_UP_MOVE(29, MOVE_BRINE), + LEVEL_UP_MOVE(34, MOVE_SLASH), + LEVEL_UP_MOVE(39, MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE(46, MOVE_X_SCISSOR), + LEVEL_UP_MOVE(53, MOVE_PROTECT), + LEVEL_UP_MOVE(61, MOVE_ROCK_BLAST), + LEVEL_UP_END +}; +#endif //P_FAMILY_ANORITH + +#if P_FAMILY_FEEBAS +static const struct LevelUpMove sFeebasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE(15, MOVE_TACKLE), + LEVEL_UP_MOVE(30, MOVE_FLAIL), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMiloticLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 1, MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_REFRESH), + LEVEL_UP_MOVE( 4, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 7, MOVE_REFRESH), + LEVEL_UP_MOVE(11, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE(14, MOVE_TWISTER), + LEVEL_UP_MOVE(17, MOVE_AQUA_RING), + LEVEL_UP_MOVE(21, MOVE_CAPTIVATE), + LEVEL_UP_MOVE(24, MOVE_DRAGON_TAIL), + LEVEL_UP_MOVE(27, MOVE_RECOVER), + LEVEL_UP_MOVE(31, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(34, MOVE_ATTRACT), + LEVEL_UP_MOVE(37, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(41, MOVE_COIL), + LEVEL_UP_MOVE(44, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(47, MOVE_RAIN_DANCE), + LEVEL_UP_END +}; +#endif //P_FAMILY_FEEBAS + +#if P_FAMILY_CASTFORM +static const struct LevelUpMove sCastformLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(10, MOVE_EMBER), + LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(15, MOVE_HEADBUTT), + LEVEL_UP_MOVE(20, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(20, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(20, MOVE_HAIL), + LEVEL_UP_MOVE(25, MOVE_WEATHER_BALL), + LEVEL_UP_MOVE(35, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(35, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(35, MOVE_BLIZZARD), + LEVEL_UP_MOVE(45, MOVE_HURRICANE), + LEVEL_UP_END +}; +#endif //P_FAMILY_CASTFORM + +#if P_FAMILY_KECLEON +static const struct LevelUpMove sKecleonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THIEF), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 4, MOVE_BIND), + LEVEL_UP_MOVE( 7, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(10, MOVE_FEINT), + LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(16, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(18, MOVE_PSYBEAM), + LEVEL_UP_MOVE(21, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(25, MOVE_SLASH), + LEVEL_UP_MOVE(30, MOVE_CAMOUFLAGE), + LEVEL_UP_MOVE(33, MOVE_SHADOW_CLAW), + LEVEL_UP_MOVE(38, MOVE_SCREECH), + LEVEL_UP_MOVE(42, MOVE_SUBSTITUTE), + LEVEL_UP_MOVE(46, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(50, MOVE_SYNCHRONOISE), + LEVEL_UP_END +}; +#endif //P_FAMILY_KECLEON + +#if P_FAMILY_SHUPPET +static const struct LevelUpMove sShuppetLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 4, MOVE_SCREECH), + LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(10, MOVE_SPITE), + LEVEL_UP_MOVE(13, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(16, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(22, MOVE_HEX), + LEVEL_UP_MOVE(26, MOVE_CURSE), + LEVEL_UP_MOVE(30, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(34, MOVE_EMBARGO), + LEVEL_UP_MOVE(38, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(42, MOVE_SNATCH), + LEVEL_UP_MOVE(46, MOVE_GRUDGE), + LEVEL_UP_MOVE(50, MOVE_TRICK), + LEVEL_UP_MOVE(54, MOVE_PHANTOM_FORCE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sBanetteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PHANTOM_FORCE), + LEVEL_UP_MOVE( 1, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 1, MOVE_SPITE), + LEVEL_UP_MOVE( 4, MOVE_SCREECH), + LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(10, MOVE_SPITE), + LEVEL_UP_MOVE(13, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(16, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(22, MOVE_HEX), + LEVEL_UP_MOVE(26, MOVE_CURSE), + LEVEL_UP_MOVE(30, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(34, MOVE_EMBARGO), + LEVEL_UP_MOVE(40, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(46, MOVE_SNATCH), + LEVEL_UP_MOVE(52, MOVE_GRUDGE), + LEVEL_UP_MOVE(58, MOVE_TRICK), + LEVEL_UP_MOVE(64, MOVE_PHANTOM_FORCE), + LEVEL_UP_END +}; +#endif //P_FAMILY_SHUPPET + +#if P_FAMILY_DUSKULL +static const struct LevelUpMove sDuskullLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 6, MOVE_DISABLE), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(14, MOVE_FORESIGHT), + LEVEL_UP_MOVE(17, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(22, MOVE_PURSUIT), + LEVEL_UP_MOVE(25, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(30, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(33, MOVE_CURSE), + LEVEL_UP_MOVE(38, MOVE_HEX), + LEVEL_UP_MOVE(41, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(46, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(49, MOVE_PAYBACK), + LEVEL_UP_MOVE(54, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDusclopsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_GRAVITY), + LEVEL_UP_MOVE( 1, MOVE_BIND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 6, MOVE_DISABLE), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(14, MOVE_FORESIGHT), + LEVEL_UP_MOVE(17, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(22, MOVE_PURSUIT), + LEVEL_UP_MOVE(25, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(30, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(33, MOVE_CURSE), + LEVEL_UP_MOVE(40, MOVE_HEX), + LEVEL_UP_MOVE(45, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(52, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(57, MOVE_PAYBACK), + LEVEL_UP_MOVE(64, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sDusknoirLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_GRAVITY), + LEVEL_UP_MOVE( 1, MOVE_BIND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 6, MOVE_DISABLE), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(14, MOVE_FORESIGHT), + LEVEL_UP_MOVE(17, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(22, MOVE_PURSUIT), + LEVEL_UP_MOVE(25, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(30, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(33, MOVE_CURSE), + LEVEL_UP_MOVE(40, MOVE_HEX), + LEVEL_UP_MOVE(45, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(52, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(57, MOVE_PAYBACK), + LEVEL_UP_MOVE(64, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_DUSKULL + +#if P_FAMILY_TROPIUS +static const struct LevelUpMove sTropiusLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEAF_STORM), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 6, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(10, MOVE_STOMP), + LEVEL_UP_MOVE(16, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(21, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(26, MOVE_LEAF_TORNADO), + LEVEL_UP_MOVE(30, MOVE_NATURAL_GIFT), + LEVEL_UP_MOVE(36, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(41, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(46, MOVE_BESTOW), + LEVEL_UP_MOVE(50, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(56, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(61, MOVE_LEAF_STORM), + LEVEL_UP_END +}; +#endif //P_FAMILY_TROPIUS + +#if P_FAMILY_CHIMECHO +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sChinglingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(10, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_YAWN), + LEVEL_UP_MOVE(16, MOVE_LAST_RESORT), + LEVEL_UP_MOVE(19, MOVE_ENTRAINMENT), + LEVEL_UP_MOVE(32, MOVE_UPROAR), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS + +static const struct LevelUpMove sChimechoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HEALING_WISH), + LEVEL_UP_MOVE( 1, MOVE_SYNCHRONOISE), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(10, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_YAWN), + LEVEL_UP_MOVE(16, MOVE_PSYWAVE), + LEVEL_UP_MOVE(19, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(22, MOVE_EXTRASENSORY), + LEVEL_UP_MOVE(27, MOVE_HEAL_BELL), + LEVEL_UP_MOVE(32, MOVE_UPROAR), + LEVEL_UP_MOVE(37, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(42, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(47, MOVE_HEAL_PULSE), + LEVEL_UP_MOVE(52, MOVE_SYNCHRONOISE), + LEVEL_UP_MOVE(57, MOVE_HEALING_WISH), + LEVEL_UP_END +}; +#endif //P_FAMILY_CHIMECHO + +#if P_FAMILY_ABSOL +static const struct LevelUpMove sAbsolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PERISH_SONG), + LEVEL_UP_MOVE( 1, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_FEINT), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 4, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(10, MOVE_PURSUIT), + LEVEL_UP_MOVE(13, MOVE_TAUNT), + LEVEL_UP_MOVE(16, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(22, MOVE_SLASH), + LEVEL_UP_MOVE(25, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(29, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(33, MOVE_DETECT), + LEVEL_UP_MOVE(37, MOVE_PSYCHO_CUT), + LEVEL_UP_MOVE(41, MOVE_ME_FIRST), + LEVEL_UP_MOVE(45, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(49, MOVE_RAZOR_WIND), + LEVEL_UP_MOVE(53, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(57, MOVE_PERISH_SONG), + LEVEL_UP_END +}; +#endif //P_FAMILY_ABSOL + +#if P_FAMILY_SNORUNT +static const struct LevelUpMove sSnoruntLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 5, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(10, MOVE_ICE_SHARD), + LEVEL_UP_MOVE(14, MOVE_ICY_WIND), + LEVEL_UP_MOVE(19, MOVE_BITE), + LEVEL_UP_MOVE(23, MOVE_ICE_FANG), + LEVEL_UP_MOVE(28, MOVE_HEADBUTT), + LEVEL_UP_MOVE(32, MOVE_PROTECT), + LEVEL_UP_MOVE(37, MOVE_FROST_BREATH), + LEVEL_UP_MOVE(41, MOVE_CRUNCH), + LEVEL_UP_MOVE(46, MOVE_BLIZZARD), + LEVEL_UP_MOVE(50, MOVE_HAIL), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGlalieLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_FREEZE_DRY), + LEVEL_UP_MOVE( 1, MOVE_FREEZE_DRY), + LEVEL_UP_MOVE( 1, MOVE_SHEER_COLD), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_ICE_SHARD), + LEVEL_UP_MOVE( 5, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(10, MOVE_ICE_SHARD), + LEVEL_UP_MOVE(14, MOVE_ICY_WIND), + LEVEL_UP_MOVE(19, MOVE_BITE), + LEVEL_UP_MOVE(23, MOVE_ICE_FANG), + LEVEL_UP_MOVE(28, MOVE_HEADBUTT), + LEVEL_UP_MOVE(32, MOVE_PROTECT), + LEVEL_UP_MOVE(37, MOVE_FROST_BREATH), + LEVEL_UP_MOVE(41, MOVE_CRUNCH), + LEVEL_UP_MOVE(48, MOVE_BLIZZARD), + LEVEL_UP_MOVE(54, MOVE_HAIL), + LEVEL_UP_MOVE(61, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +#if P_GEN_4_CROSS_EVOS +static const struct LevelUpMove sFroslassLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_OMINOUS_WIND), + LEVEL_UP_MOVE( 1, MOVE_OMINOUS_WIND), + LEVEL_UP_MOVE( 1, MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_ICE_SHARD), + LEVEL_UP_MOVE( 5, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(10, MOVE_ICE_SHARD), + LEVEL_UP_MOVE(14, MOVE_ICY_WIND), + LEVEL_UP_MOVE(19, MOVE_ASTONISH), + LEVEL_UP_MOVE(23, MOVE_DRAINING_KISS), + LEVEL_UP_MOVE(28, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(32, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(37, MOVE_WAKE_UP_SLAP), + LEVEL_UP_MOVE(41, MOVE_CAPTIVATE), + LEVEL_UP_MOVE(42, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(48, MOVE_BLIZZARD), + LEVEL_UP_MOVE(54, MOVE_HAIL), + LEVEL_UP_MOVE(61, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SNORUNT + +#if P_FAMILY_SPHEAL +static const struct LevelUpMove sSphealLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 5, MOVE_ROLLOUT), + LEVEL_UP_MOVE( 9, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_ICE_BALL), + LEVEL_UP_MOVE(17, MOVE_BRINE), + LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(26, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(31, MOVE_REST), + LEVEL_UP_MOVE(31, MOVE_SNORE), + LEVEL_UP_MOVE(36, MOVE_HAIL), + LEVEL_UP_MOVE(41, MOVE_BLIZZARD), + LEVEL_UP_MOVE(46, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSealeoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SWAGGER), + LEVEL_UP_MOVE( 1, MOVE_SWAGGER), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 5, MOVE_ROLLOUT), + LEVEL_UP_MOVE( 9, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_ICE_BALL), + LEVEL_UP_MOVE(17, MOVE_BRINE), + LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(26, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(31, MOVE_REST), + LEVEL_UP_MOVE(31, MOVE_SNORE), + LEVEL_UP_MOVE(38, MOVE_HAIL), + LEVEL_UP_MOVE(45, MOVE_BLIZZARD), + LEVEL_UP_MOVE(52, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +static const struct LevelUpMove sWalreinLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_ICE_FANG), + LEVEL_UP_MOVE( 1, MOVE_ICE_FANG), + LEVEL_UP_MOVE( 1, MOVE_SWAGGER), + LEVEL_UP_MOVE( 1, MOVE_CRUNCH), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_ROLLOUT), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_ICE_BALL), + LEVEL_UP_MOVE(19, MOVE_BRINE), + LEVEL_UP_MOVE(19, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(25, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(31, MOVE_REST), + LEVEL_UP_MOVE(31, MOVE_SNORE), + LEVEL_UP_MOVE(38, MOVE_HAIL), + LEVEL_UP_MOVE(49, MOVE_BLIZZARD), + LEVEL_UP_MOVE(60, MOVE_SHEER_COLD), + LEVEL_UP_END +}; +#endif //P_FAMILY_SPHEAL + +#if P_FAMILY_CLAMPERL +static const struct LevelUpMove sClamperlLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CLAMP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 1, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(50, MOVE_SHELL_SMASH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sHuntailLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 5, MOVE_SCREECH), + LEVEL_UP_MOVE( 9, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(11, MOVE_FEINT_ATTACK), + LEVEL_UP_MOVE(14, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(16, MOVE_ICE_FANG), + LEVEL_UP_MOVE(19, MOVE_BRINE), + LEVEL_UP_MOVE(23, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(26, MOVE_DIVE), + LEVEL_UP_MOVE(29, MOVE_BATON_PASS), + LEVEL_UP_MOVE(34, MOVE_CRUNCH), + LEVEL_UP_MOVE(39, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(45, MOVE_COIL), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGorebyssLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 5, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 9, MOVE_AGILITY), + LEVEL_UP_MOVE(11, MOVE_DRAINING_KISS), + LEVEL_UP_MOVE(14, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(16, MOVE_AMNESIA), + LEVEL_UP_MOVE(19, MOVE_AQUA_RING), + LEVEL_UP_MOVE(23, MOVE_CAPTIVATE), + LEVEL_UP_MOVE(26, MOVE_DIVE), + LEVEL_UP_MOVE(29, MOVE_BATON_PASS), + LEVEL_UP_MOVE(34, MOVE_PSYCHIC), + LEVEL_UP_MOVE(39, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(45, MOVE_COIL), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; +#endif //P_FAMILY_CLAMPERL + +#if P_FAMILY_RELICANTH +static const struct LevelUpMove sRelicanthLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FLAIL), + LEVEL_UP_MOVE( 1, MOVE_HEAD_SMASH), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(21, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(26, MOVE_DIVE), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(35, MOVE_YAWN), + LEVEL_UP_MOVE(41, MOVE_REST), + LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(56, MOVE_HEAD_SMASH), + LEVEL_UP_END +}; +#endif //P_FAMILY_RELICANTH + +#if P_FAMILY_LUVDISC +static const struct LevelUpMove sLuvdiscLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 4, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_AGILITY), + LEVEL_UP_MOVE( 9, MOVE_DRAINING_KISS), + LEVEL_UP_MOVE(13, MOVE_LUCKY_CHANT), + LEVEL_UP_MOVE(17, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(20, MOVE_ATTRACT), + LEVEL_UP_MOVE(22, MOVE_HEART_STAMP), + LEVEL_UP_MOVE(26, MOVE_FLAIL), + LEVEL_UP_MOVE(31, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(34, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_CAPTIVATE), + LEVEL_UP_MOVE(40, MOVE_AQUA_RING), + LEVEL_UP_MOVE(42, MOVE_SOAK), + LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(49, MOVE_SAFEGUARD), + LEVEL_UP_END +}; +#endif //P_FAMILY_LUVDISC + +#if P_FAMILY_BAGON static const struct LevelUpMove sBagonLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_RAGE), LEVEL_UP_MOVE( 4, MOVE_EMBER), @@ -7629,7 +9923,9 @@ static const struct LevelUpMove sSalamenceLevelUpLearnset[] = { LEVEL_UP_MOVE(63, MOVE_DOUBLE_EDGE), LEVEL_UP_END }; +#endif //P_FAMILY_BAGON +#if P_FAMILY_BELDUM static const struct LevelUpMove sBeldumLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), LEVEL_UP_END @@ -7674,7 +9970,9 @@ static const struct LevelUpMove sMetagrossLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_HYPER_BEAM), LEVEL_UP_END }; +#endif //P_FAMILY_BELDUM +#if P_FAMILY_REGIROCK static const struct LevelUpMove sRegirockLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), LEVEL_UP_MOVE( 1, MOVE_STOMP), @@ -7695,7 +9993,9 @@ static const struct LevelUpMove sRegirockLevelUpLearnset[] = { LEVEL_UP_MOVE(67, MOVE_HYPER_BEAM), LEVEL_UP_END }; +#endif //P_FAMILY_REGIROCK +#if P_FAMILY_REGICE static const struct LevelUpMove sRegiceLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), LEVEL_UP_MOVE( 1, MOVE_STOMP), @@ -7716,7 +10016,9 @@ static const struct LevelUpMove sRegiceLevelUpLearnset[] = { LEVEL_UP_MOVE(67, MOVE_HYPER_BEAM), LEVEL_UP_END }; +#endif //P_FAMILY_REGICE +#if P_FAMILY_REGISTEEL static const struct LevelUpMove sRegisteelLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), LEVEL_UP_MOVE( 1, MOVE_STOMP), @@ -7739,60 +10041,9 @@ static const struct LevelUpMove sRegisteelLevelUpLearnset[] = { LEVEL_UP_MOVE(67, MOVE_HYPER_BEAM), LEVEL_UP_END }; +#endif //P_FAMILY_REGISTEEL -static const struct LevelUpMove sKyogreLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE( 1, MOVE_WATER_PULSE), - LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(15, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(20, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(30, MOVE_AQUA_RING), - LEVEL_UP_MOVE(35, MOVE_ICE_BEAM), - LEVEL_UP_MOVE(45, MOVE_ORIGIN_PULSE), - LEVEL_UP_MOVE(50, MOVE_CALM_MIND), - LEVEL_UP_MOVE(60, MOVE_MUDDY_WATER), - LEVEL_UP_MOVE(65, MOVE_SHEER_COLD), - LEVEL_UP_MOVE(75, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(80, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(90, MOVE_WATER_SPOUT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sGroudonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE( 1, MOVE_MUD_SHOT), - LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(15, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(20, MOVE_LAVA_PLUME), - LEVEL_UP_MOVE(30, MOVE_REST), - LEVEL_UP_MOVE(35, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(45, MOVE_PRECIPICE_BLADES), - LEVEL_UP_MOVE(50, MOVE_BULK_UP), - LEVEL_UP_MOVE(60, MOVE_SOLAR_BEAM), - LEVEL_UP_MOVE(65, MOVE_FISSURE), - LEVEL_UP_MOVE(75, MOVE_FIRE_BLAST), - LEVEL_UP_MOVE(80, MOVE_HAMMER_ARM), - LEVEL_UP_MOVE(90, MOVE_ERUPTION), - LEVEL_UP_END -}; - -static const struct LevelUpMove sRayquazaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TWISTER), - LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(20, MOVE_CRUNCH), - LEVEL_UP_MOVE(30, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(35, MOVE_REST), - LEVEL_UP_MOVE(45, MOVE_EXTREME_SPEED), - LEVEL_UP_MOVE(50, MOVE_DRAGON_PULSE), - LEVEL_UP_MOVE(60, MOVE_DRAGON_DANCE), - LEVEL_UP_MOVE(65, MOVE_FLY), - LEVEL_UP_MOVE(75, MOVE_HYPER_VOICE), - LEVEL_UP_MOVE(80, MOVE_OUTRAGE), - LEVEL_UP_MOVE(90, MOVE_HYPER_BEAM), - LEVEL_UP_END -}; - +#if P_FAMILY_LATIAS static const struct LevelUpMove sLatiasLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HEALING_WISH), LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), @@ -7816,7 +10067,9 @@ static const struct LevelUpMove sLatiasLevelUpLearnset[] = { LEVEL_UP_MOVE(61, MOVE_HEALING_WISH), LEVEL_UP_END }; +#endif //P_FAMILY_LATIAS +#if P_FAMILY_LATIOS static const struct LevelUpMove sLatiosLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_MEMENTO), LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), @@ -7840,7 +10093,68 @@ static const struct LevelUpMove sLatiosLevelUpLearnset[] = { LEVEL_UP_MOVE(61, MOVE_MEMENTO), LEVEL_UP_END }; +#endif //P_FAMILY_LATIOS +#if P_FAMILY_KYOGRE +static const struct LevelUpMove sKyogreLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE( 1, MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(15, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(20, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(30, MOVE_AQUA_RING), + LEVEL_UP_MOVE(35, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(45, MOVE_ORIGIN_PULSE), + LEVEL_UP_MOVE(50, MOVE_CALM_MIND), + LEVEL_UP_MOVE(60, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(65, MOVE_SHEER_COLD), + LEVEL_UP_MOVE(75, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(80, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(90, MOVE_WATER_SPOUT), + LEVEL_UP_END +}; +#endif //P_FAMILY_KYOGRE + +#if P_FAMILY_GROUDON +static const struct LevelUpMove sGroudonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE( 1, MOVE_MUD_SHOT), + LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(15, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(20, MOVE_LAVA_PLUME), + LEVEL_UP_MOVE(30, MOVE_REST), + LEVEL_UP_MOVE(35, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(45, MOVE_PRECIPICE_BLADES), + LEVEL_UP_MOVE(50, MOVE_BULK_UP), + LEVEL_UP_MOVE(60, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(65, MOVE_FISSURE), + LEVEL_UP_MOVE(75, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(80, MOVE_HAMMER_ARM), + LEVEL_UP_MOVE(90, MOVE_ERUPTION), + LEVEL_UP_END +}; +#endif //P_FAMILY_GROUDON + +#if P_FAMILY_RAYQUAZA +static const struct LevelUpMove sRayquazaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TWISTER), + LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(20, MOVE_CRUNCH), + LEVEL_UP_MOVE(30, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(35, MOVE_REST), + LEVEL_UP_MOVE(45, MOVE_EXTREME_SPEED), + LEVEL_UP_MOVE(50, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(60, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(65, MOVE_FLY), + LEVEL_UP_MOVE(75, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(80, MOVE_OUTRAGE), + LEVEL_UP_MOVE(90, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; +#endif //P_FAMILY_RAYQUAZA + +#if P_FAMILY_JIRACHI static const struct LevelUpMove sJirachiLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WISH), LEVEL_UP_MOVE( 1, MOVE_CONFUSION), @@ -7860,8 +10174,10 @@ static const struct LevelUpMove sJirachiLevelUpLearnset[] = { LEVEL_UP_MOVE(70, MOVE_DOOM_DESIRE), LEVEL_UP_END }; +#endif //P_FAMILY_JIRACHI -static const struct LevelUpMove sDeoxysLevelUpLearnset[] = { +#if P_FAMILY_DEOXYS +static const struct LevelUpMove sDeoxysNormalLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_WRAP), LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), @@ -7879,31 +10195,64 @@ static const struct LevelUpMove sDeoxysLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sChimechoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HEALING_WISH), - LEVEL_UP_MOVE( 1, MOVE_SYNCHRONOISE), +static const struct LevelUpMove sDeoxysAttackLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 4, MOVE_GROWL), - LEVEL_UP_MOVE( 7, MOVE_ASTONISH), - LEVEL_UP_MOVE(10, MOVE_CONFUSION), - LEVEL_UP_MOVE(13, MOVE_YAWN), - LEVEL_UP_MOVE(16, MOVE_PSYWAVE), - LEVEL_UP_MOVE(19, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(22, MOVE_EXTRASENSORY), - LEVEL_UP_MOVE(27, MOVE_HEAL_BELL), - LEVEL_UP_MOVE(32, MOVE_UPROAR), - LEVEL_UP_MOVE(37, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(42, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(47, MOVE_HEAL_PULSE), - LEVEL_UP_MOVE(52, MOVE_SYNCHRONOISE), - LEVEL_UP_MOVE(57, MOVE_HEALING_WISH), + LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(13, MOVE_TELEPORT), + LEVEL_UP_MOVE(19, MOVE_TAUNT), + LEVEL_UP_MOVE(25, MOVE_PURSUIT), + LEVEL_UP_MOVE(31, MOVE_PSYCHIC), + LEVEL_UP_MOVE(37, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(43, MOVE_PSYCHO_SHIFT), + LEVEL_UP_MOVE(49, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(55, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(61, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(67, MOVE_PSYCHO_BOOST), + LEVEL_UP_MOVE(73, MOVE_HYPER_BEAM), LEVEL_UP_END }; -#if P_GEN_4_POKEMON == TRUE +static const struct LevelUpMove sDeoxysDefenseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(13, MOVE_TELEPORT), + LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(25, MOVE_SPIKES), + LEVEL_UP_MOVE(31, MOVE_PSYCHIC), + LEVEL_UP_MOVE(37, MOVE_SNATCH), + LEVEL_UP_MOVE(43, MOVE_PSYCHO_SHIFT), + LEVEL_UP_MOVE(49, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(55, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(55, MOVE_AMNESIA), + LEVEL_UP_MOVE(61, MOVE_RECOVER), + LEVEL_UP_MOVE(67, MOVE_PSYCHO_BOOST), + LEVEL_UP_MOVE(73, MOVE_COUNTER), + LEVEL_UP_MOVE(73, MOVE_MIRROR_COAT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDeoxysSpeedLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(13, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(25, MOVE_PURSUIT), + LEVEL_UP_MOVE(31, MOVE_PSYCHIC), + LEVEL_UP_MOVE(37, MOVE_SWIFT), + LEVEL_UP_MOVE(43, MOVE_PSYCHO_SHIFT), + LEVEL_UP_MOVE(49, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(55, MOVE_AGILITY), + LEVEL_UP_MOVE(61, MOVE_RECOVER), + LEVEL_UP_MOVE(67, MOVE_PSYCHO_BOOST), + LEVEL_UP_MOVE(73, MOVE_EXTREME_SPEED), + LEVEL_UP_END +}; +#endif //P_FAMILY_DEOXYS + +#if P_FAMILY_TURTWIG static const struct LevelUpMove sTurtwigLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 5, MOVE_WITHDRAW), @@ -7959,7 +10308,9 @@ static const struct LevelUpMove sTorterraLevelUpLearnset[] = { LEVEL_UP_MOVE(57, MOVE_LEAF_STORM), LEVEL_UP_END }; +#endif //P_FAMILY_TURTWIG +#if P_FAMILY_CHIMCHAR static const struct LevelUpMove sChimcharLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -8018,7 +10369,9 @@ static const struct LevelUpMove sInfernapeLevelUpLearnset[] = { LEVEL_UP_MOVE(68, MOVE_FLARE_BLITZ), LEVEL_UP_END }; +#endif //P_FAMILY_CHIMCHAR +#if P_FAMILY_PIPLUP static const struct LevelUpMove sPiplupLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 4, MOVE_GROWL), @@ -8078,7 +10431,9 @@ static const struct LevelUpMove sEmpoleonLevelUpLearnset[] = { LEVEL_UP_MOVE(59, MOVE_HYDRO_PUMP), LEVEL_UP_END }; +#endif //P_FAMILY_PIPLUP +#if P_FAMILY_STARLY static const struct LevelUpMove sStarlyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -8131,7 +10486,9 @@ static const struct LevelUpMove sStaraptorLevelUpLearnset[] = { LEVEL_UP_MOVE(57, MOVE_FINAL_GAMBIT), LEVEL_UP_END }; +#endif //P_FAMILY_STARLY +#if P_FAMILY_BIDOOF static const struct LevelUpMove sBidoofLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -8171,7 +10528,9 @@ static const struct LevelUpMove sBibarelLevelUpLearnset[] = { LEVEL_UP_MOVE(58, MOVE_CURSE), LEVEL_UP_END }; +#endif //P_FAMILY_BIDOOF +#if P_FAMILY_KRICKETOT static const struct LevelUpMove sKricketotLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_BIDE), @@ -8199,7 +10558,9 @@ static const struct LevelUpMove sKricketuneLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_PERISH_SONG), LEVEL_UP_END }; +#endif //P_FAMILY_KRICKETOT +#if P_FAMILY_SHINX static const struct LevelUpMove sShinxLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 5, MOVE_LEER), @@ -8253,28 +10614,9 @@ static const struct LevelUpMove sLuxrayLevelUpLearnset[] = { LEVEL_UP_MOVE(67, MOVE_ELECTRIC_TERRAIN), LEVEL_UP_END }; +#endif //P_FAMILY_SHINX -static const struct LevelUpMove sBudewLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 4, MOVE_GROWTH), - LEVEL_UP_MOVE( 7, MOVE_WATER_SPORT), - LEVEL_UP_MOVE(10, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(13, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(16, MOVE_WORRY_SEED), - LEVEL_UP_END -}; - -static const struct LevelUpMove sRoseradeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_VENOM_DRENCH), - LEVEL_UP_MOVE( 1, MOVE_GRASSY_TERRAIN), - LEVEL_UP_MOVE( 1, MOVE_WEATHER_BALL), - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 1, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE( 1, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), - LEVEL_UP_END -}; - +#if P_FAMILY_CRANIDOS static const struct LevelUpMove sCranidosLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -8310,7 +10652,9 @@ static const struct LevelUpMove sRampardosLevelUpLearnset[] = { LEVEL_UP_MOVE(58, MOVE_HEAD_SMASH), LEVEL_UP_END }; +#endif //P_FAMILY_CRANIDOS +#if P_FAMILY_SHIELDON static const struct LevelUpMove sShieldonLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_PROTECT), @@ -8346,7 +10690,9 @@ static const struct LevelUpMove sBastiodonLevelUpLearnset[] = { LEVEL_UP_MOVE(58, MOVE_HEAVY_SLAM), LEVEL_UP_END }; +#endif //P_FAMILY_SHIELDON +#if P_FAMILY_BURMY static const struct LevelUpMove sBurmyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PROTECT), LEVEL_UP_MOVE(10, MOVE_TACKLE), @@ -8355,7 +10701,7 @@ static const struct LevelUpMove sBurmyLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sWormadamLevelUpLearnset[] = { +static const struct LevelUpMove sWormadamPlantCloakLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_QUIVER_DANCE), LEVEL_UP_MOVE( 1, MOVE_QUIVER_DANCE), LEVEL_UP_MOVE( 1, MOVE_SUCKER_PUNCH), @@ -8378,6 +10724,53 @@ static const struct LevelUpMove sWormadamLevelUpLearnset[] = { LEVEL_UP_END }; +static const struct LevelUpMove sWormadamSandyCloakLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_QUIVER_DANCE), + LEVEL_UP_MOVE( 1, MOVE_QUIVER_DANCE), + LEVEL_UP_MOVE( 1, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE( 1, MOVE_BUG_BITE), + LEVEL_UP_MOVE(10, MOVE_PROTECT), + LEVEL_UP_MOVE(15, MOVE_BUG_BITE), + LEVEL_UP_MOVE(20, MOVE_HIDDEN_POWER), + LEVEL_UP_MOVE(23, MOVE_CONFUSION), + LEVEL_UP_MOVE(26, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(29, MOVE_HARDEN), + LEVEL_UP_MOVE(32, MOVE_PSYBEAM), + LEVEL_UP_MOVE(35, MOVE_CAPTIVATE), + LEVEL_UP_MOVE(38, MOVE_FLAIL), + LEVEL_UP_MOVE(41, MOVE_ATTRACT), + LEVEL_UP_MOVE(44, MOVE_PSYCHIC), + LEVEL_UP_MOVE(47, MOVE_FISSURE), + LEVEL_UP_MOVE(50, MOVE_BUG_BUZZ), + LEVEL_UP_END +}; + +static const struct LevelUpMove sWormadamTrashCloakLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_QUIVER_DANCE), + LEVEL_UP_MOVE( 1, MOVE_QUIVER_DANCE), + LEVEL_UP_MOVE( 1, MOVE_METAL_BURST), + LEVEL_UP_MOVE( 1, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE( 1, MOVE_BUG_BITE), + LEVEL_UP_MOVE(10, MOVE_PROTECT), + LEVEL_UP_MOVE(15, MOVE_BUG_BITE), + LEVEL_UP_MOVE(20, MOVE_HIDDEN_POWER), + LEVEL_UP_MOVE(23, MOVE_CONFUSION), + LEVEL_UP_MOVE(26, MOVE_MIRROR_SHOT), + LEVEL_UP_MOVE(29, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(32, MOVE_PSYBEAM), + LEVEL_UP_MOVE(35, MOVE_CAPTIVATE), + LEVEL_UP_MOVE(38, MOVE_FLAIL), + LEVEL_UP_MOVE(41, MOVE_ATTRACT), + LEVEL_UP_MOVE(44, MOVE_PSYCHIC), + LEVEL_UP_MOVE(47, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(50, MOVE_BUG_BUZZ), + LEVEL_UP_END +}; + static const struct LevelUpMove sMothimLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_QUIVER_DANCE), LEVEL_UP_MOVE( 1, MOVE_QUIVER_DANCE), @@ -8399,7 +10792,9 @@ static const struct LevelUpMove sMothimLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_BUG_BUZZ), LEVEL_UP_END }; +#endif //P_FAMILY_BURMY +#if P_FAMILY_COMBEE static const struct LevelUpMove sCombeeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), LEVEL_UP_MOVE( 1, MOVE_GUST), @@ -8432,7 +10827,9 @@ static const struct LevelUpMove sVespiquenLevelUpLearnset[] = { LEVEL_UP_MOVE(57, MOVE_FELL_STINGER), LEVEL_UP_END }; +#endif //P_FAMILY_COMBEE +#if P_FAMILY_PACHIRISU static const struct LevelUpMove sPachirisuLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_BIDE), @@ -8451,7 +10848,9 @@ static const struct LevelUpMove sPachirisuLevelUpLearnset[] = { LEVEL_UP_MOVE(49, MOVE_HYPER_FANG), LEVEL_UP_END }; +#endif //P_FAMILY_PACHIRISU +#if P_FAMILY_BUIZEL static const struct LevelUpMove sBuizelLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), LEVEL_UP_MOVE( 4, MOVE_GROWL), @@ -8492,7 +10891,9 @@ static const struct LevelUpMove sFloatzelLevelUpLearnset[] = { LEVEL_UP_MOVE(57, MOVE_HYDRO_PUMP), LEVEL_UP_END }; +#endif //P_FAMILY_BUIZEL +#if P_FAMILY_CHERUBI static const struct LevelUpMove sCherubiLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_MORNING_SUN), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -8528,7 +10929,9 @@ static const struct LevelUpMove sCherrimLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_PETAL_BLIZZARD), LEVEL_UP_END }; +#endif //P_FAMILY_CHERUBI +#if P_FAMILY_SHELLOS static const struct LevelUpMove sShellosLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), LEVEL_UP_MOVE( 2, MOVE_MUD_SPORT), @@ -8559,28 +10962,9 @@ static const struct LevelUpMove sGastrodonLevelUpLearnset[] = { LEVEL_UP_MOVE(54, MOVE_RECOVER), LEVEL_UP_END }; +#endif //P_FAMILY_SHELLOS -static const struct LevelUpMove sAmbipomLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_DUAL_CHOP), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 8, MOVE_ASTONISH), - LEVEL_UP_MOVE(11, MOVE_BATON_PASS), - LEVEL_UP_MOVE(15, MOVE_TICKLE), - LEVEL_UP_MOVE(18, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(22, MOVE_SWIFT), - LEVEL_UP_MOVE(25, MOVE_SCREECH), - LEVEL_UP_MOVE(29, MOVE_AGILITY), - LEVEL_UP_MOVE(32, MOVE_DOUBLE_HIT), - LEVEL_UP_MOVE(36, MOVE_FLING), - LEVEL_UP_MOVE(39, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE(43, MOVE_LAST_RESORT), - LEVEL_UP_END -}; - +#if P_FAMILY_DRIFLOON static const struct LevelUpMove sDrifloonLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), LEVEL_UP_MOVE( 1, MOVE_MINIMIZE), @@ -8622,7 +11006,9 @@ static const struct LevelUpMove sDrifblimLevelUpLearnset[] = { LEVEL_UP_MOVE(65, MOVE_PHANTOM_FORCE), LEVEL_UP_END }; +#endif //P_FAMILY_DRIFLOON +#if P_FAMILY_BUNEARY static const struct LevelUpMove sBunearyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_FRUSTRATION), LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), @@ -8671,36 +11057,9 @@ static const struct LevelUpMove sLopunnyLevelUpLearnset[] = { LEVEL_UP_MOVE(66, MOVE_HIGH_JUMP_KICK), LEVEL_UP_END }; +#endif //P_FAMILY_BUNEARY -static const struct LevelUpMove sMismagiusLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_MYSTICAL_FIRE), - LEVEL_UP_MOVE( 1, MOVE_POWER_GEM), - LEVEL_UP_MOVE( 1, MOVE_PHANTOM_FORCE), - LEVEL_UP_MOVE( 1, MOVE_LUCKY_CHANT), - LEVEL_UP_MOVE( 1, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), - LEVEL_UP_MOVE( 1, MOVE_SPITE), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_END -}; - -static const struct LevelUpMove sHonchkrowLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE( 1, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_PURSUIT), - LEVEL_UP_MOVE( 1, MOVE_HAZE), - LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(25, MOVE_SWAGGER), - LEVEL_UP_MOVE(35, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE(45, MOVE_FOUL_PLAY), - LEVEL_UP_MOVE(55, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE(65, MOVE_QUASH), - LEVEL_UP_MOVE(75, MOVE_DARK_PULSE), - LEVEL_UP_END -}; - +#if P_FAMILY_GLAMEOW static const struct LevelUpMove sGlameowLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_FAKE_OUT), LEVEL_UP_MOVE( 5, MOVE_SCRATCH), @@ -8739,19 +11098,9 @@ static const struct LevelUpMove sPuruglyLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_HONE_CLAWS), LEVEL_UP_END }; +#endif //P_FAMILY_GLAMEOW -static const struct LevelUpMove sChinglingLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 4, MOVE_GROWL), - LEVEL_UP_MOVE( 7, MOVE_ASTONISH), - LEVEL_UP_MOVE(10, MOVE_CONFUSION), - LEVEL_UP_MOVE(13, MOVE_YAWN), - LEVEL_UP_MOVE(16, MOVE_LAST_RESORT), - LEVEL_UP_MOVE(19, MOVE_ENTRAINMENT), - LEVEL_UP_MOVE(32, MOVE_UPROAR), - LEVEL_UP_END -}; - +#if P_FAMILY_STUNKY static const struct LevelUpMove sStunkyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), @@ -8797,7 +11146,9 @@ static const struct LevelUpMove sSkuntankLevelUpLearnset[] = { LEVEL_UP_MOVE(45, MOVE_EXPLOSION), LEVEL_UP_END }; +#endif //P_FAMILY_STUNKY +#if P_FAMILY_BRONZOR static const struct LevelUpMove sBronzorLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_CONFUSION), @@ -8843,57 +11194,9 @@ static const struct LevelUpMove sBronzongLevelUpLearnset[] = { LEVEL_UP_MOVE(58, MOVE_HEAVY_SLAM), LEVEL_UP_END }; +#endif //P_FAMILY_BRONZOR -static const struct LevelUpMove sBonslyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FAKE_TEARS), - LEVEL_UP_MOVE( 1, MOVE_COPYCAT), - LEVEL_UP_MOVE( 5, MOVE_FLAIL), - LEVEL_UP_MOVE( 8, MOVE_LOW_KICK), - LEVEL_UP_MOVE(12, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(15, MOVE_MIMIC), - LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(22, MOVE_TEARFUL_LOOK), - LEVEL_UP_MOVE(26, MOVE_ROCK_TOMB), - LEVEL_UP_MOVE(29, MOVE_BLOCK), - LEVEL_UP_MOVE(33, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(36, MOVE_COUNTER), - LEVEL_UP_MOVE(40, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMimeJrLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TICKLE), - LEVEL_UP_MOVE( 1, MOVE_BARRIER), - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 4, MOVE_COPYCAT), - LEVEL_UP_MOVE( 8, MOVE_MEDITATE), - LEVEL_UP_MOVE(11, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE(15, MOVE_MIMIC), - LEVEL_UP_MOVE(18, MOVE_ENCORE), - LEVEL_UP_MOVE(22, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(22, MOVE_REFLECT), - LEVEL_UP_MOVE(25, MOVE_PSYBEAM), - LEVEL_UP_MOVE(29, MOVE_SUBSTITUTE), - LEVEL_UP_MOVE(32, MOVE_RECYCLE), - LEVEL_UP_MOVE(36, MOVE_TRICK), - LEVEL_UP_MOVE(39, MOVE_PSYCHIC), - LEVEL_UP_MOVE(43, MOVE_ROLE_PLAY), - LEVEL_UP_MOVE(46, MOVE_BATON_PASS), - LEVEL_UP_MOVE(50, MOVE_SAFEGUARD), - LEVEL_UP_END -}; - -static const struct LevelUpMove sHappinyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_CHARM), - LEVEL_UP_MOVE( 5, MOVE_COPYCAT), - LEVEL_UP_MOVE( 9, MOVE_REFRESH), - LEVEL_UP_MOVE(12, MOVE_SWEET_KISS), - LEVEL_UP_END -}; - +#if P_FAMILY_CHATOT static const struct LevelUpMove sChatotLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HYPER_VOICE), LEVEL_UP_MOVE( 1, MOVE_CHATTER), @@ -8916,7 +11219,9 @@ static const struct LevelUpMove sChatotLevelUpLearnset[] = { LEVEL_UP_MOVE(57, MOVE_HYPER_VOICE), LEVEL_UP_END }; +#endif //P_FAMILY_CHATOT +#if P_FAMILY_SPIRITOMB static const struct LevelUpMove sSpiritombLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CURSE), LEVEL_UP_MOVE( 1, MOVE_PURSUIT), @@ -8933,7 +11238,9 @@ static const struct LevelUpMove sSpiritombLevelUpLearnset[] = { LEVEL_UP_MOVE(49, MOVE_DARK_PULSE), LEVEL_UP_END }; +#endif //P_FAMILY_SPIRITOMB +#if P_FAMILY_GIBLE static const struct LevelUpMove sGibleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 3, MOVE_SAND_ATTACK), @@ -8986,31 +11293,9 @@ static const struct LevelUpMove sGarchompLevelUpLearnset[] = { LEVEL_UP_MOVE(55, MOVE_DRAGON_RUSH), LEVEL_UP_END }; +#endif //P_FAMILY_GIBLE -static const struct LevelUpMove sMunchlaxLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LAST_RESORT), - LEVEL_UP_MOVE( 1, MOVE_RECYCLE), - LEVEL_UP_MOVE( 1, MOVE_LICK), - LEVEL_UP_MOVE( 1, MOVE_METRONOME), - LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 9, MOVE_AMNESIA), - LEVEL_UP_MOVE(12, MOVE_LICK), - LEVEL_UP_MOVE(17, MOVE_CHIP_AWAY), - LEVEL_UP_MOVE(20, MOVE_SCREECH), - LEVEL_UP_MOVE(25, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(28, MOVE_STOCKPILE), - LEVEL_UP_MOVE(33, MOVE_SWALLOW), - LEVEL_UP_MOVE(36, MOVE_ROLLOUT), - LEVEL_UP_MOVE(41, MOVE_FLING), - LEVEL_UP_MOVE(44, MOVE_BELLY_DRUM), - LEVEL_UP_MOVE(49, MOVE_NATURAL_GIFT), - LEVEL_UP_MOVE(50, MOVE_SNATCH), - LEVEL_UP_MOVE(57, MOVE_LAST_RESORT), - LEVEL_UP_END -}; - +#if P_FAMILY_RIOLU static const struct LevelUpMove sRioluLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), @@ -9050,7 +11335,9 @@ static const struct LevelUpMove sLucarioLevelUpLearnset[] = { LEVEL_UP_MOVE(65, MOVE_EXTREME_SPEED), LEVEL_UP_END }; +#endif //P_FAMILY_RIOLU +#if P_FAMILY_HIPPOPOTAS static const struct LevelUpMove sHippopotasLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), @@ -9085,7 +11372,9 @@ static const struct LevelUpMove sHippowdonLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_FISSURE), LEVEL_UP_END }; +#endif //P_FAMILY_HIPPOPOTAS +#if P_FAMILY_SKORUPI static const struct LevelUpMove sSkorupiLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BITE), LEVEL_UP_MOVE( 1, MOVE_POISON_STING), @@ -9131,7 +11420,9 @@ static const struct LevelUpMove sDrapionLevelUpLearnset[] = { LEVEL_UP_MOVE(57, MOVE_CROSS_POISON), LEVEL_UP_END }; +#endif //P_FAMILY_SKORUPI +#if P_FAMILY_CROAGUNK static const struct LevelUpMove sCroagunkLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ASTONISH), LEVEL_UP_MOVE( 3, MOVE_MUD_SLAP), @@ -9173,7 +11464,9 @@ static const struct LevelUpMove sToxicroakLevelUpLearnset[] = { LEVEL_UP_MOVE(62, MOVE_FLATTER), LEVEL_UP_END }; +#endif //P_FAMILY_CROAGUNK +#if P_FAMILY_CARNIVINE static const struct LevelUpMove sCarnivineLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BIND), LEVEL_UP_MOVE( 1, MOVE_GROWTH), @@ -9191,7 +11484,9 @@ static const struct LevelUpMove sCarnivineLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_POWER_WHIP), LEVEL_UP_END }; +#endif //P_FAMILY_CARNIVINE +#if P_FAMILY_FINNEON static const struct LevelUpMove sFinneonLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 6, MOVE_WATER_GUN), @@ -9231,26 +11526,9 @@ static const struct LevelUpMove sLumineonLevelUpLearnset[] = { LEVEL_UP_MOVE(66, MOVE_SOAK), LEVEL_UP_END }; +#endif //P_FAMILY_FINNEON -static const struct LevelUpMove sMantykeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 3, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 7, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(11, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(14, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(16, MOVE_HEADBUTT), - LEVEL_UP_MOVE(19, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(23, MOVE_WIDE_GUARD), - LEVEL_UP_MOVE(27, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(32, MOVE_AGILITY), - LEVEL_UP_MOVE(36, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(39, MOVE_AQUA_RING), - LEVEL_UP_MOVE(46, MOVE_BOUNCE), - LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), - LEVEL_UP_END -}; - +#if P_FAMILY_SNOVER static const struct LevelUpMove sSnoverLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -9285,441 +11563,9 @@ static const struct LevelUpMove sAbomasnowLevelUpLearnset[] = { LEVEL_UP_MOVE(58, MOVE_SHEER_COLD), LEVEL_UP_END }; +#endif //P_FAMILY_SNOVER -static const struct LevelUpMove sWeavileLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_EMBARGO), - LEVEL_UP_MOVE( 1, MOVE_REVENGE), - LEVEL_UP_MOVE( 1, MOVE_ASSURANCE), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_TAUNT), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(10, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(14, MOVE_ICY_WIND), - LEVEL_UP_MOVE(16, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(20, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE(22, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(25, MOVE_HONE_CLAWS), - LEVEL_UP_MOVE(28, MOVE_FLING), - LEVEL_UP_MOVE(32, MOVE_SCREECH), - LEVEL_UP_MOVE(35, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE(40, MOVE_SNATCH), - LEVEL_UP_MOVE(44, MOVE_PUNISHMENT), - LEVEL_UP_MOVE(47, MOVE_DARK_PULSE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMagnezoneLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TRI_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE( 1, MOVE_MAGNETIC_FLUX), - LEVEL_UP_MOVE( 1, MOVE_MIRROR_COAT), - LEVEL_UP_MOVE( 1, MOVE_BARRIER), - LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 5, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 7, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(11, MOVE_MAGNET_BOMB), - LEVEL_UP_MOVE(13, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(17, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE(19, MOVE_SPARK), - LEVEL_UP_MOVE(23, MOVE_MIRROR_SHOT), - LEVEL_UP_MOVE(25, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(29, MOVE_ELECTRO_BALL), - LEVEL_UP_MOVE(33, MOVE_FLASH_CANNON), - LEVEL_UP_MOVE(39, MOVE_SCREECH), - LEVEL_UP_MOVE(43, MOVE_DISCHARGE), - LEVEL_UP_MOVE(49, MOVE_LOCK_ON), - LEVEL_UP_MOVE(53, MOVE_MAGNET_RISE), - LEVEL_UP_MOVE(59, MOVE_GYRO_BALL), - LEVEL_UP_MOVE(63, MOVE_ZAP_CANNON), - LEVEL_UP_END -}; - -static const struct LevelUpMove sLickilickyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WRING_OUT), - LEVEL_UP_MOVE( 1, MOVE_POWER_WHIP), - LEVEL_UP_MOVE( 1, MOVE_LICK), - LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 9, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE(13, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(17, MOVE_WRAP), - LEVEL_UP_MOVE(21, MOVE_STOMP), - LEVEL_UP_MOVE(25, MOVE_DISABLE), - LEVEL_UP_MOVE(29, MOVE_SLAM), - LEVEL_UP_MOVE(33, MOVE_ROLLOUT), - LEVEL_UP_MOVE(37, MOVE_CHIP_AWAY), - LEVEL_UP_MOVE(41, MOVE_ME_FIRST), - LEVEL_UP_MOVE(45, MOVE_REFRESH), - LEVEL_UP_MOVE(49, MOVE_SCREECH), - LEVEL_UP_MOVE(53, MOVE_POWER_WHIP), - LEVEL_UP_MOVE(57, MOVE_WRING_OUT), - LEVEL_UP_MOVE(61, MOVE_GYRO_BALL), - LEVEL_UP_END -}; - -static const struct LevelUpMove sRhyperiorLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HAMMER_ARM), - LEVEL_UP_MOVE( 1, MOVE_ROCK_WRECKER), - LEVEL_UP_MOVE( 1, MOVE_HORN_DRILL), - LEVEL_UP_MOVE( 1, MOVE_POISON_JAB), - LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), - LEVEL_UP_MOVE( 5, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE( 9, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(13, MOVE_SMACK_DOWN), - LEVEL_UP_MOVE(17, MOVE_STOMP), - LEVEL_UP_MOVE(21, MOVE_BULLDOZE), - LEVEL_UP_MOVE(25, MOVE_CHIP_AWAY), - LEVEL_UP_MOVE(29, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(33, MOVE_DRILL_RUN), - LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(41, MOVE_STONE_EDGE), - LEVEL_UP_MOVE(48, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(55, MOVE_MEGAHORN), - LEVEL_UP_MOVE(62, MOVE_HORN_DRILL), - LEVEL_UP_MOVE(69, MOVE_ROCK_WRECKER), - LEVEL_UP_END -}; - -static const struct LevelUpMove sTangrowthLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BLOCK), - LEVEL_UP_MOVE( 1, MOVE_INGRAIN), - LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), - LEVEL_UP_MOVE( 4, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE( 7, MOVE_VINE_WHIP), - LEVEL_UP_MOVE(10, MOVE_ABSORB), - LEVEL_UP_MOVE(14, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(17, MOVE_BIND), - LEVEL_UP_MOVE(20, MOVE_GROWTH), - LEVEL_UP_MOVE(23, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(27, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(30, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(33, MOVE_NATURAL_GIFT), - LEVEL_UP_MOVE(36, MOVE_GIGA_DRAIN), - LEVEL_UP_MOVE(40, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(43, MOVE_SLAM), - LEVEL_UP_MOVE(46, MOVE_TICKLE), - LEVEL_UP_MOVE(49, MOVE_WRING_OUT), - LEVEL_UP_MOVE(50, MOVE_GRASSY_TERRAIN), - LEVEL_UP_MOVE(53, MOVE_POWER_WHIP), - LEVEL_UP_MOVE(56, MOVE_BLOCK), - LEVEL_UP_END -}; - -static const struct LevelUpMove sElectivireLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN), - LEVEL_UP_MOVE( 1, MOVE_ION_DELUGE), - LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), - LEVEL_UP_MOVE( 5, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 8, MOVE_LOW_KICK), - LEVEL_UP_MOVE(12, MOVE_SWIFT), - LEVEL_UP_MOVE(15, MOVE_SHOCK_WAVE), - LEVEL_UP_MOVE(19, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(22, MOVE_ELECTRO_BALL), - LEVEL_UP_MOVE(26, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(29, MOVE_THUNDER_PUNCH), - LEVEL_UP_MOVE(36, MOVE_DISCHARGE), - LEVEL_UP_MOVE(42, MOVE_SCREECH), - LEVEL_UP_MOVE(49, MOVE_THUNDERBOLT), - LEVEL_UP_MOVE(55, MOVE_THUNDER), - LEVEL_UP_MOVE(62, MOVE_GIGA_IMPACT), - LEVEL_UP_MOVE(65, MOVE_ELECTRIC_TERRAIN), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMagmortarLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_SMOG), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE( 5, MOVE_EMBER), - LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(12, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(15, MOVE_FIRE_SPIN), - LEVEL_UP_MOVE(19, MOVE_CLEAR_SMOG), - LEVEL_UP_MOVE(22, MOVE_FLAME_BURST), - LEVEL_UP_MOVE(26, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(29, MOVE_FIRE_PUNCH), - LEVEL_UP_MOVE(36, MOVE_LAVA_PLUME), - LEVEL_UP_MOVE(42, MOVE_SUNNY_DAY), - LEVEL_UP_MOVE(49, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(55, MOVE_FIRE_BLAST), - LEVEL_UP_MOVE(62, MOVE_HYPER_BEAM), - LEVEL_UP_END -}; - -static const struct LevelUpMove sTogekissLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_AFTER_YOU), - LEVEL_UP_MOVE( 1, MOVE_SKY_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_EXTREME_SPEED), - LEVEL_UP_MOVE( 1, MOVE_AURA_SPHERE), - LEVEL_UP_MOVE( 1, MOVE_AIR_SLASH), - LEVEL_UP_END -}; - -static const struct LevelUpMove sYanmegaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUG_BUZZ), - LEVEL_UP_MOVE( 1, MOVE_AIR_SLASH), - LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE( 1, MOVE_BUG_BITE), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE( 6, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(14, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE(17, MOVE_DETECT), - LEVEL_UP_MOVE(22, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(27, MOVE_UPROAR), - LEVEL_UP_MOVE(30, MOVE_PURSUIT), - LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(38, MOVE_FEINT), - LEVEL_UP_MOVE(43, MOVE_SLASH), - LEVEL_UP_MOVE(46, MOVE_SCREECH), - LEVEL_UP_MOVE(49, MOVE_U_TURN), - LEVEL_UP_MOVE(54, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(57, MOVE_BUG_BUZZ), - LEVEL_UP_END -}; - -static const struct LevelUpMove sLeafeonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 9, MOVE_BABY_DOLL_EYES), - LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(17, MOVE_GRASS_WHISTLE), - LEVEL_UP_MOVE(20, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE(25, MOVE_GIGA_DRAIN), - LEVEL_UP_MOVE(29, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(33, MOVE_SYNTHESIS), - LEVEL_UP_MOVE(37, MOVE_SUNNY_DAY), - LEVEL_UP_MOVE(41, MOVE_LAST_RESORT), - LEVEL_UP_MOVE(45, MOVE_LEAF_BLADE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sGlaceonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_ICY_WIND), - LEVEL_UP_MOVE( 1, MOVE_ICY_WIND), - LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 9, MOVE_BABY_DOLL_EYES), - LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(17, MOVE_BITE), - LEVEL_UP_MOVE(20, MOVE_ICE_FANG), - LEVEL_UP_MOVE(25, MOVE_ICE_SHARD), - LEVEL_UP_MOVE(29, MOVE_BARRIER), - LEVEL_UP_MOVE(33, MOVE_MIRROR_COAT), - LEVEL_UP_MOVE(37, MOVE_HAIL), - LEVEL_UP_MOVE(41, MOVE_LAST_RESORT), - LEVEL_UP_MOVE(45, MOVE_BLIZZARD), - LEVEL_UP_END -}; - -static const struct LevelUpMove sGliscorLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GUILLOTINE), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_FANG), - LEVEL_UP_MOVE( 1, MOVE_ICE_FANG), - LEVEL_UP_MOVE( 1, MOVE_FIRE_FANG), - LEVEL_UP_MOVE( 1, MOVE_POISON_JAB), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 7, MOVE_HARDEN), - LEVEL_UP_MOVE(10, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(16, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(19, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(22, MOVE_ACROBATICS), - LEVEL_UP_MOVE(27, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE(30, MOVE_U_TURN), - LEVEL_UP_MOVE(35, MOVE_SCREECH), - LEVEL_UP_MOVE(40, MOVE_X_SCISSOR), - LEVEL_UP_MOVE(45, MOVE_SKY_UPPERCUT), - LEVEL_UP_MOVE(50, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(55, MOVE_GUILLOTINE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMamoswineLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), - LEVEL_UP_MOVE( 1, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 5, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 8, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE(11, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(14, MOVE_ENDURE), - LEVEL_UP_MOVE(18, MOVE_MUD_BOMB), - LEVEL_UP_MOVE(21, MOVE_HAIL), - LEVEL_UP_MOVE(24, MOVE_ICE_FANG), - LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(33, MOVE_DOUBLE_HIT), - LEVEL_UP_MOVE(37, MOVE_MIST), - LEVEL_UP_MOVE(41, MOVE_THRASH), - LEVEL_UP_MOVE(46, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(52, MOVE_BLIZZARD), - LEVEL_UP_MOVE(58, MOVE_SCARY_FACE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sPorygonZLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TRICK_ROOM), - LEVEL_UP_MOVE( 1, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE( 1, MOVE_MAGIC_COAT), - LEVEL_UP_MOVE( 1, MOVE_CONVERSION_2), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_CONVERSION), - LEVEL_UP_MOVE( 1, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE( 7, MOVE_PSYBEAM), - LEVEL_UP_MOVE(12, MOVE_AGILITY), - LEVEL_UP_MOVE(18, MOVE_RECOVER), - LEVEL_UP_MOVE(23, MOVE_MAGNET_RISE), - LEVEL_UP_MOVE(29, MOVE_SIGNAL_BEAM), - LEVEL_UP_MOVE(34, MOVE_EMBARGO), - LEVEL_UP_MOVE(40, MOVE_DISCHARGE), - LEVEL_UP_MOVE(45, MOVE_LOCK_ON), - LEVEL_UP_MOVE(50, MOVE_TRI_ATTACK), - LEVEL_UP_MOVE(56, MOVE_MAGIC_COAT), - LEVEL_UP_MOVE(62, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE(67, MOVE_HYPER_BEAM), - LEVEL_UP_END -}; - -static const struct LevelUpMove sGalladeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_SLASH), - LEVEL_UP_MOVE( 1, MOVE_SLASH), - LEVEL_UP_MOVE( 1, MOVE_STORED_POWER), - LEVEL_UP_MOVE( 1, MOVE_CLOSE_COMBAT), - LEVEL_UP_MOVE( 1, MOVE_LEAF_BLADE), - LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE( 1, MOVE_TELEPORT), - LEVEL_UP_MOVE( 4, MOVE_CONFUSION), - LEVEL_UP_MOVE( 6, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE( 9, MOVE_TELEPORT), - LEVEL_UP_MOVE(11, MOVE_QUICK_GUARD), - LEVEL_UP_MOVE(14, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(17, MOVE_AERIAL_ACE), - LEVEL_UP_MOVE(19, MOVE_HEAL_PULSE), - LEVEL_UP_MOVE(23, MOVE_WIDE_GUARD), - LEVEL_UP_MOVE(26, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(31, MOVE_PSYCHO_CUT), - LEVEL_UP_MOVE(35, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(40, MOVE_FEINT), - LEVEL_UP_MOVE(44, MOVE_FALSE_SWIPE), - LEVEL_UP_MOVE(49, MOVE_PROTECT), - LEVEL_UP_MOVE(53, MOVE_CLOSE_COMBAT), - LEVEL_UP_MOVE(58, MOVE_STORED_POWER), - LEVEL_UP_END -}; - -static const struct LevelUpMove sProbopassLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_TRI_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_TRI_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_MAGNETIC_FLUX), - LEVEL_UP_MOVE( 1, MOVE_MAGNET_RISE), - LEVEL_UP_MOVE( 1, MOVE_GRAVITY), - LEVEL_UP_MOVE( 1, MOVE_WIDE_GUARD), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE( 1, MOVE_BLOCK), - LEVEL_UP_MOVE( 1, MOVE_MAGNET_BOMB), - LEVEL_UP_MOVE( 4, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE( 7, MOVE_BLOCK), - LEVEL_UP_MOVE(10, MOVE_MAGNET_BOMB), - LEVEL_UP_MOVE(13, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(16, MOVE_REST), - LEVEL_UP_MOVE(19, MOVE_SPARK), - LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(25, MOVE_POWER_GEM), - LEVEL_UP_MOVE(28, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(31, MOVE_DISCHARGE), - LEVEL_UP_MOVE(34, MOVE_SANDSTORM), - LEVEL_UP_MOVE(37, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(40, MOVE_STONE_EDGE), - LEVEL_UP_MOVE(43, MOVE_LOCK_ON), - LEVEL_UP_MOVE(43, MOVE_ZAP_CANNON), - LEVEL_UP_END -}; - -static const struct LevelUpMove sDusknoirLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SHADOW_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_ICE_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_GRAVITY), - LEVEL_UP_MOVE( 1, MOVE_BIND), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE( 1, MOVE_DISABLE), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 6, MOVE_DISABLE), - LEVEL_UP_MOVE( 9, MOVE_ASTONISH), - LEVEL_UP_MOVE(14, MOVE_FORESIGHT), - LEVEL_UP_MOVE(17, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE(22, MOVE_PURSUIT), - LEVEL_UP_MOVE(25, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(30, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(33, MOVE_CURSE), - LEVEL_UP_MOVE(40, MOVE_HEX), - LEVEL_UP_MOVE(45, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(52, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(57, MOVE_PAYBACK), - LEVEL_UP_MOVE(64, MOVE_FUTURE_SIGHT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sFroslassLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_OMINOUS_WIND), - LEVEL_UP_MOVE( 1, MOVE_OMINOUS_WIND), - LEVEL_UP_MOVE( 1, MOVE_DESTINY_BOND), - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE( 1, MOVE_ICE_SHARD), - LEVEL_UP_MOVE( 5, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(10, MOVE_ICE_SHARD), - LEVEL_UP_MOVE(14, MOVE_ICY_WIND), - LEVEL_UP_MOVE(19, MOVE_ASTONISH), - LEVEL_UP_MOVE(23, MOVE_DRAINING_KISS), - LEVEL_UP_MOVE(28, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(32, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(37, MOVE_WAKE_UP_SLAP), - LEVEL_UP_MOVE(41, MOVE_CAPTIVATE), - LEVEL_UP_MOVE(42, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(48, MOVE_BLIZZARD), - LEVEL_UP_MOVE(54, MOVE_HAIL), - LEVEL_UP_MOVE(61, MOVE_DESTINY_BOND), - LEVEL_UP_END -}; - +#if P_FAMILY_ROTOM static const struct LevelUpMove sRotomLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DISCHARGE), LEVEL_UP_MOVE( 1, MOVE_CHARGE), @@ -9739,7 +11585,9 @@ static const struct LevelUpMove sRotomLevelUpLearnset[] = { LEVEL_UP_MOVE(64, MOVE_DISCHARGE), LEVEL_UP_END }; +#endif //P_FAMILY_ROTOM +#if P_FAMILY_UXIE static const struct LevelUpMove sUxieLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_MEMENTO), LEVEL_UP_MOVE( 1, MOVE_NATURAL_GIFT), @@ -9758,7 +11606,9 @@ static const struct LevelUpMove sUxieLevelUpLearnset[] = { LEVEL_UP_MOVE(76, MOVE_MEMENTO), LEVEL_UP_END }; +#endif //P_FAMILY_UXIE +#if P_FAMILY_MESPRIT static const struct LevelUpMove sMespritLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HEALING_WISH), LEVEL_UP_MOVE( 1, MOVE_NATURAL_GIFT), @@ -9777,7 +11627,9 @@ static const struct LevelUpMove sMespritLevelUpLearnset[] = { LEVEL_UP_MOVE(76, MOVE_HEALING_WISH), LEVEL_UP_END }; +#endif //P_FAMILY_MESPRIT +#if P_FAMILY_AZELF static const struct LevelUpMove sAzelfLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_NATURAL_GIFT), LEVEL_UP_MOVE( 1, MOVE_LAST_RESORT), @@ -9795,7 +11647,9 @@ static const struct LevelUpMove sAzelfLevelUpLearnset[] = { LEVEL_UP_MOVE(76, MOVE_EXPLOSION), LEVEL_UP_END }; +#endif //P_FAMILY_AZELF +#if P_FAMILY_DIALGA static const struct LevelUpMove sDialgaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DRAGON_BREATH), LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), @@ -9812,7 +11666,9 @@ static const struct LevelUpMove sDialgaLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_FLASH_CANNON), LEVEL_UP_END }; +#endif //P_FAMILY_DIALGA +#if P_FAMILY_PALKIA static const struct LevelUpMove sPalkiaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DRAGON_BREATH), LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), @@ -9829,7 +11685,9 @@ static const struct LevelUpMove sPalkiaLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), LEVEL_UP_END }; +#endif //P_FAMILY_PALKIA +#if P_FAMILY_HEATRAN static const struct LevelUpMove sHeatranLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_MAGMA_STORM), LEVEL_UP_MOVE( 1, MOVE_HEAT_WAVE), @@ -9851,7 +11709,9 @@ static const struct LevelUpMove sHeatranLevelUpLearnset[] = { LEVEL_UP_MOVE(96, MOVE_MAGMA_STORM), LEVEL_UP_END }; +#endif //P_FAMILY_HEATRAN +#if P_FAMILY_REGIGIGAS static const struct LevelUpMove sRegigigasLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HEAVY_SLAM), LEVEL_UP_MOVE( 1, MOVE_CRUSH_GRIP), @@ -9871,7 +11731,9 @@ static const struct LevelUpMove sRegigigasLevelUpLearnset[] = { LEVEL_UP_MOVE(100, MOVE_GIGA_IMPACT), LEVEL_UP_END }; +#endif //P_FAMILY_REGIGIGAS +#if P_FAMILY_GIRATINA static const struct LevelUpMove sGiratinaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DRAGON_BREATH), LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), @@ -9888,7 +11750,9 @@ static const struct LevelUpMove sGiratinaLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_HEX), LEVEL_UP_END }; +#endif //P_FAMILY_GIRATINA +#if P_FAMILY_CRESSELIA static const struct LevelUpMove sCresseliaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LUNAR_DANCE), LEVEL_UP_MOVE( 1, MOVE_PSYCHO_SHIFT), @@ -9909,7 +11773,9 @@ static const struct LevelUpMove sCresseliaLevelUpLearnset[] = { LEVEL_UP_MOVE(99, MOVE_MOONBLAST), LEVEL_UP_END }; +#endif //P_FAMILY_CRESSELIA +#if P_FAMILY_MANAPHY static const struct LevelUpMove sPhioneLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BUBBLE), LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), @@ -9941,7 +11807,9 @@ static const struct LevelUpMove sManaphyLevelUpLearnset[] = { LEVEL_UP_MOVE(76, MOVE_HEART_SWAP), LEVEL_UP_END }; +#endif //P_FAMILY_MANAPHY +#if P_FAMILY_DARKRAI static const struct LevelUpMove sDarkraiLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_OMINOUS_WIND), LEVEL_UP_MOVE( 1, MOVE_DISABLE), @@ -9957,8 +11825,10 @@ static const struct LevelUpMove sDarkraiLevelUpLearnset[] = { LEVEL_UP_MOVE(93, MOVE_DARK_PULSE), LEVEL_UP_END }; +#endif //P_FAMILY_DARKRAI -static const struct LevelUpMove sShayminLevelUpLearnset[] = { +#if P_FAMILY_SHAYMIN +static const struct LevelUpMove sShayminLandLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWTH), LEVEL_UP_MOVE(10, MOVE_MAGICAL_LEAF), LEVEL_UP_MOVE(19, MOVE_LEECH_SEED), @@ -9974,6 +11844,24 @@ static const struct LevelUpMove sShayminLevelUpLearnset[] = { LEVEL_UP_END }; +static const struct LevelUpMove sShayminSkyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE(10, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(19, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(28, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(37, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(46, MOVE_NATURAL_GIFT), + LEVEL_UP_MOVE(55, MOVE_WORRY_SEED), + LEVEL_UP_MOVE(64, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(73, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(82, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(91, MOVE_LEAF_STORM), + LEVEL_UP_MOVE(100, MOVE_SEED_FLARE), + LEVEL_UP_END +}; +#endif //P_FAMILY_SHAYMIN + +#if P_FAMILY_ARCEUS static const struct LevelUpMove sArceusLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SEISMIC_TOSS), LEVEL_UP_MOVE( 1, MOVE_COSMIC_POWER), @@ -9991,9 +11879,9 @@ static const struct LevelUpMove sArceusLevelUpLearnset[] = { LEVEL_UP_MOVE(100, MOVE_JUDGMENT), LEVEL_UP_END }; -#endif +#endif //P_FAMILY_ARCEUS -#if P_GEN_5_POKEMON == TRUE +#if P_FAMILY_VICTINI static const struct LevelUpMove sVictiniLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SEARING_SHOT), LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), @@ -10014,7 +11902,9 @@ static const struct LevelUpMove sVictiniLevelUpLearnset[] = { LEVEL_UP_MOVE(97, MOVE_OVERHEAT), LEVEL_UP_END }; +#endif //P_FAMILY_VICTINI +#if P_FAMILY_SNIVY static const struct LevelUpMove sSnivyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 4, MOVE_LEER), @@ -10077,7 +11967,9 @@ static const struct LevelUpMove sSerperiorLevelUpLearnset[] = { LEVEL_UP_MOVE(62, MOVE_LEAF_STORM), LEVEL_UP_END }; +#endif //P_FAMILY_SNIVY +#if P_FAMILY_TEPIG static const struct LevelUpMove sTepigLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 3, MOVE_TAIL_WHIP), @@ -10144,7 +12036,9 @@ static const struct LevelUpMove sEmboarLevelUpLearnset[] = { LEVEL_UP_MOVE(62, MOVE_FLARE_BLITZ), LEVEL_UP_END }; +#endif //P_FAMILY_TEPIG +#if P_FAMILY_OSHAWOTT static const struct LevelUpMove sOshawottLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), @@ -10211,6 +12105,32 @@ static const struct LevelUpMove sSamurottLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_HISUIAN_FORMS +static const struct LevelUpMove sSamurottHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_CEASELESS_EDGE), + LEVEL_UP_MOVE( 1, MOVE_SLASH), + LEVEL_UP_MOVE( 1, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_MEGAHORN), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE(13, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(18, MOVE_RAZOR_SHELL), + LEVEL_UP_MOVE(21, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(25, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(29, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(34, MOVE_AQUA_JET), + LEVEL_UP_MOVE(39, MOVE_ENCORE), + LEVEL_UP_MOVE(46, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(51, MOVE_RETALIATE), + LEVEL_UP_MOVE(58, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(63, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_OSHAWOTT + +#if P_FAMILY_PATRAT static const struct LevelUpMove sPatratLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 3, MOVE_LEER), @@ -10258,7 +12178,9 @@ static const struct LevelUpMove sWatchogLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_SLAM), LEVEL_UP_END }; +#endif //P_FAMILY_PATRAT +#if P_FAMILY_LILLIPUP static const struct LevelUpMove sLillipupLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -10320,7 +12242,9 @@ static const struct LevelUpMove sStoutlandLevelUpLearnset[] = { LEVEL_UP_MOVE(63, MOVE_PLAY_ROUGH), LEVEL_UP_END }; +#endif //P_FAMILY_LILLIPUP +#if P_FAMILY_PURRLOIN static const struct LevelUpMove sPurrloinLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 3, MOVE_GROWL), @@ -10365,7 +12289,9 @@ static const struct LevelUpMove sLiepardLevelUpLearnset[] = { LEVEL_UP_MOVE(58, MOVE_PLAY_ROUGH), LEVEL_UP_END }; +#endif //P_FAMILY_PURRLOIN +#if P_FAMILY_PANSAGE static const struct LevelUpMove sPansageLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), @@ -10393,7 +12319,9 @@ static const struct LevelUpMove sSimisageLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SEED_BOMB), LEVEL_UP_END }; +#endif //P_FAMILY_PANSAGE +#if P_FAMILY_PANSEAR static const struct LevelUpMove sPansearLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), @@ -10421,7 +12349,9 @@ static const struct LevelUpMove sSimisearLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_FLAME_BURST), LEVEL_UP_END }; +#endif //P_FAMILY_PANSEAR +#if P_FAMILY_PANPOUR static const struct LevelUpMove sPanpourLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), @@ -10449,7 +12379,9 @@ static const struct LevelUpMove sSimipourLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCALD), LEVEL_UP_END }; +#endif //P_FAMILY_PANPOUR +#if P_FAMILY_MUNNA static const struct LevelUpMove sMunnaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), @@ -10479,7 +12411,9 @@ static const struct LevelUpMove sMusharnaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), LEVEL_UP_END }; +#endif //P_FAMILY_MUNNA +#if P_FAMILY_PIDOVE static const struct LevelUpMove sPidoveLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GUST), LEVEL_UP_MOVE( 4, MOVE_GROWL), @@ -10542,7 +12476,9 @@ static const struct LevelUpMove sUnfezantLevelUpLearnset[] = { LEVEL_UP_MOVE(66, MOVE_SKY_ATTACK), LEVEL_UP_END }; +#endif //P_FAMILY_PIDOVE +#if P_FAMILY_BLITZLE static const struct LevelUpMove sBlitzleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), @@ -10581,7 +12517,9 @@ static const struct LevelUpMove sZebstrikaLevelUpLearnset[] = { LEVEL_UP_MOVE(58, MOVE_ION_DELUGE), LEVEL_UP_END }; +#endif //P_FAMILY_BLITZLE +#if P_FAMILY_ROGGENROLA static const struct LevelUpMove sRoggenrolaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 4, MOVE_HARDEN), @@ -10641,7 +12579,9 @@ static const struct LevelUpMove sGigalithLevelUpLearnset[] = { LEVEL_UP_MOVE(55, MOVE_EXPLOSION), LEVEL_UP_END }; +#endif //P_FAMILY_ROGGENROLA +#if P_FAMILY_WOOBAT static const struct LevelUpMove sWoobatLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CONFUSION), LEVEL_UP_MOVE( 4, MOVE_ODOR_SLEUTH), @@ -10680,7 +12620,9 @@ static const struct LevelUpMove sSwoobatLevelUpLearnset[] = { LEVEL_UP_MOVE(47, MOVE_ENDEAVOR), LEVEL_UP_END }; +#endif //P_FAMILY_WOOBAT +#if P_FAMILY_DRILBUR static const struct LevelUpMove sDrilburLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), @@ -10723,7 +12665,9 @@ static const struct LevelUpMove sExcadrillLevelUpLearnset[] = { LEVEL_UP_MOVE(62, MOVE_FISSURE), LEVEL_UP_END }; +#endif //P_FAMILY_DRILBUR +#if P_FAMILY_AUDINO static const struct LevelUpMove sAudinoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LAST_RESORT), LEVEL_UP_MOVE( 1, MOVE_HYPER_VOICE), @@ -10748,7 +12692,9 @@ static const struct LevelUpMove sAudinoLevelUpLearnset[] = { LEVEL_UP_MOVE(57, MOVE_LAST_RESORT), LEVEL_UP_END }; +#endif //P_FAMILY_AUDINO +#if P_FAMILY_TIMBURR static const struct LevelUpMove sTimburrLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -10812,7 +12758,9 @@ static const struct LevelUpMove sConkeldurrLevelUpLearnset[] = { LEVEL_UP_MOVE(57, MOVE_SUPERPOWER), LEVEL_UP_END }; +#endif //P_FAMILY_TIMBURR +#if P_FAMILY_TYMPOLE static const struct LevelUpMove sTympoleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BUBBLE), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -10873,7 +12821,9 @@ static const struct LevelUpMove sSeismitoadLevelUpLearnset[] = { LEVEL_UP_MOVE(59, MOVE_HYPER_VOICE), LEVEL_UP_END }; +#endif //P_FAMILY_TYMPOLE +#if P_FAMILY_THROH static const struct LevelUpMove sThrohLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_MAT_BLOCK), LEVEL_UP_MOVE( 1, MOVE_BIND), @@ -10893,7 +12843,9 @@ static const struct LevelUpMove sThrohLevelUpLearnset[] = { LEVEL_UP_MOVE(45, MOVE_REVERSAL), LEVEL_UP_END }; +#endif //P_FAMILY_THROH +#if P_FAMILY_SAWK static const struct LevelUpMove sSawkLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ROCK_SMASH), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -10912,7 +12864,9 @@ static const struct LevelUpMove sSawkLevelUpLearnset[] = { LEVEL_UP_MOVE(45, MOVE_REVERSAL), LEVEL_UP_END }; +#endif //P_FAMILY_SAWK +#if P_FAMILY_SEWADDLE static const struct LevelUpMove sSewaddleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), @@ -10957,7 +12911,9 @@ static const struct LevelUpMove sLeavannyLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_LEAF_STORM), LEVEL_UP_END }; +#endif //P_FAMILY_SEWADDLE +#if P_FAMILY_VENIPEDE static const struct LevelUpMove sVenipedeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), LEVEL_UP_MOVE( 1, MOVE_ROLLOUT), @@ -11025,7 +12981,9 @@ static const struct LevelUpMove sScolipedeLevelUpLearnset[] = { LEVEL_UP_MOVE(65, MOVE_MEGAHORN), LEVEL_UP_END }; +#endif //P_FAMILY_VENIPEDE +#if P_FAMILY_COTTONEE static const struct LevelUpMove sCottoneeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ABSORB), LEVEL_UP_MOVE( 1, MOVE_FAIRY_WIND), @@ -11058,7 +13016,9 @@ static const struct LevelUpMove sWhimsicottLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_MOONBLAST), LEVEL_UP_END }; +#endif //P_FAMILY_COTTONEE +#if P_FAMILY_PETILIL static const struct LevelUpMove sPetililLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ABSORB), LEVEL_UP_MOVE( 4, MOVE_GROWTH), @@ -11091,6 +13051,37 @@ static const struct LevelUpMove sLilligantLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_HISUIAN_FORMS +static const struct LevelUpMove sLilligantHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_VICTORY_DANCE), + LEVEL_UP_MOVE( 1, MOVE_TEETER_DANCE), + LEVEL_UP_MOVE( 1, MOVE_SOLAR_BLADE), + LEVEL_UP_MOVE( 1, MOVE_PETAL_BLIZZARD), + LEVEL_UP_MOVE( 1, MOVE_AFTER_YOU), + LEVEL_UP_MOVE( 1, MOVE_ENTRAINMENT), + LEVEL_UP_MOVE( 1, MOVE_LEAF_STORM), + LEVEL_UP_MOVE( 1, MOVE_DEFOG), + LEVEL_UP_MOVE( 1, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE( 1, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE( 1, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE( 1, MOVE_MEGA_KICK), + LEVEL_UP_MOVE( 1, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 1, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 1, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE( 1, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 1, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 5, MOVE_AXE_KICK), + LEVEL_UP_END +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_PETILIL + +#if P_FAMILY_BASCULIN static const struct LevelUpMove sBasculinLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -11113,6 +13104,54 @@ static const struct LevelUpMove sBasculinLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_HISUIAN_FORMS +static const struct LevelUpMove sBasculinWhiteStripedLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 3, MOVE_UPROAR), + LEVEL_UP_MOVE( 5, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 7, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_AQUA_JET), + LEVEL_UP_MOVE(11, MOVE_CHIP_AWAY), + LEVEL_UP_MOVE(14, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(17, MOVE_CRUNCH), + LEVEL_UP_MOVE(20, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(23, MOVE_SOAK), + LEVEL_UP_MOVE(26, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(30, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(34, MOVE_FLAIL), + LEVEL_UP_MOVE(38, MOVE_UPROAR), + LEVEL_UP_MOVE(42, MOVE_THRASH), + LEVEL_UP_MOVE(46, MOVE_HEAD_SMASH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sBasculegionLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_PHANTOM_FORCE), + LEVEL_UP_MOVE( 4, MOVE_TACKLE), + LEVEL_UP_MOVE( 8, MOVE_FLAIL), + LEVEL_UP_MOVE(12, MOVE_AQUA_JET), + LEVEL_UP_MOVE(16, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(24, MOVE_HEADBUTT), + LEVEL_UP_MOVE(28, MOVE_SOAK), + LEVEL_UP_MOVE(32, MOVE_CRUNCH), + LEVEL_UP_MOVE(36, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(40, MOVE_UPROAR), + LEVEL_UP_MOVE(44, MOVE_WAVE_CRASH), + LEVEL_UP_MOVE(48, MOVE_THRASH), + LEVEL_UP_MOVE(52, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(56, MOVE_HEAD_SMASH), + LEVEL_UP_END +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_BASCULIN + +#if P_FAMILY_SANDILE static const struct LevelUpMove sSandileLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_RAGE), @@ -11180,7 +13219,9 @@ static const struct LevelUpMove sKrookodileLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_OUTRAGE), LEVEL_UP_END }; +#endif //P_FAMILY_SANDILE +#if P_FAMILY_DARUMAKA static const struct LevelUpMove sDarumakaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 3, MOVE_ROLLOUT), @@ -11226,6 +13267,48 @@ static const struct LevelUpMove sDarmanitanLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GALARIAN_FORMS +static const struct LevelUpMove sDarumakaGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_TAUNT), + LEVEL_UP_MOVE( 8, MOVE_BITE), + LEVEL_UP_MOVE(12, MOVE_AVALANCHE), + LEVEL_UP_MOVE(16, MOVE_WORK_UP), + LEVEL_UP_MOVE(20, MOVE_ICE_FANG), + LEVEL_UP_MOVE(24, MOVE_HEADBUTT), + LEVEL_UP_MOVE(28, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE(32, MOVE_UPROAR), + LEVEL_UP_MOVE(36, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(40, MOVE_BLIZZARD), + LEVEL_UP_MOVE(44, MOVE_THRASH), + LEVEL_UP_MOVE(48, MOVE_SUPERPOWER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDarmanitanGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_ICICLE_CRASH), + LEVEL_UP_MOVE( 1, MOVE_ICICLE_CRASH), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAUNT), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE(12, MOVE_AVALANCHE), + LEVEL_UP_MOVE(16, MOVE_WORK_UP), + LEVEL_UP_MOVE(20, MOVE_ICE_FANG), + LEVEL_UP_MOVE(24, MOVE_HEADBUTT), + LEVEL_UP_MOVE(28, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE(32, MOVE_UPROAR), + LEVEL_UP_MOVE(38, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(44, MOVE_BLIZZARD), + LEVEL_UP_MOVE(50, MOVE_THRASH), + LEVEL_UP_MOVE(56, MOVE_SUPERPOWER), + LEVEL_UP_END +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_DARUMAKA + +#if P_FAMILY_MARACTUS static const struct LevelUpMove sMaractusLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SPIKY_SHIELD), LEVEL_UP_MOVE( 1, MOVE_COTTON_GUARD), @@ -11251,7 +13334,9 @@ static const struct LevelUpMove sMaractusLevelUpLearnset[] = { LEVEL_UP_MOVE(57, MOVE_AFTER_YOU), LEVEL_UP_END }; +#endif //P_FAMILY_MARACTUS +#if P_FAMILY_DWEBBLE static const struct LevelUpMove sDwebbleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_FURY_CUTTER), LEVEL_UP_MOVE( 5, MOVE_ROCK_BLAST), @@ -11292,7 +13377,9 @@ static const struct LevelUpMove sCrustleLevelUpLearnset[] = { LEVEL_UP_MOVE(55, MOVE_ROCK_WRECKER), LEVEL_UP_END }; +#endif //P_FAMILY_DWEBBLE +#if P_FAMILY_SCRAGGY static const struct LevelUpMove sScraggyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), @@ -11334,7 +13421,9 @@ static const struct LevelUpMove sScraftyLevelUpLearnset[] = { LEVEL_UP_MOVE(65, MOVE_HEAD_SMASH), LEVEL_UP_END }; +#endif //P_FAMILY_SCRAGGY +#if P_FAMILY_SIGILYPH static const struct LevelUpMove sSigilyphLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GUST), LEVEL_UP_MOVE( 1, MOVE_MIRACLE_EYE), @@ -11355,7 +13444,9 @@ static const struct LevelUpMove sSigilyphLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_SKY_ATTACK), LEVEL_UP_END }; +#endif //P_FAMILY_SIGILYPH +#if P_FAMILY_YAMASK static const struct LevelUpMove sYamaskLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ASTONISH), LEVEL_UP_MOVE( 1, MOVE_PROTECT), @@ -11398,6 +13489,53 @@ static const struct LevelUpMove sCofagrigusLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GALARIAN_FORMS +static const struct LevelUpMove sYamaskGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE( 4, MOVE_HAZE), + LEVEL_UP_MOVE( 8, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(12, MOVE_DISABLE), + LEVEL_UP_MOVE(16, MOVE_BRUTAL_SWING), + LEVEL_UP_MOVE(20, MOVE_CRAFTY_SHIELD), + LEVEL_UP_MOVE(24, MOVE_HEX), + LEVEL_UP_MOVE(28, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(32, MOVE_SLAM), + LEVEL_UP_MOVE(36, MOVE_CURSE), + LEVEL_UP_MOVE(40, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(44, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(48, MOVE_POWER_SPLIT), + LEVEL_UP_MOVE(48, MOVE_GUARD_SPLIT), + LEVEL_UP_MOVE(52, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRunerigusLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SHADOW_CLAW), + LEVEL_UP_MOVE( 1, MOVE_SHADOW_CLAW), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE( 1, MOVE_HAZE), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(12, MOVE_DISABLE), + LEVEL_UP_MOVE(16, MOVE_BRUTAL_SWING), + LEVEL_UP_MOVE(20, MOVE_CRAFTY_SHIELD), + LEVEL_UP_MOVE(24, MOVE_HEX), + LEVEL_UP_MOVE(28, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(32, MOVE_SLAM), + LEVEL_UP_MOVE(38, MOVE_CURSE), + LEVEL_UP_MOVE(44, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(50, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(56, MOVE_POWER_SPLIT), + LEVEL_UP_MOVE(56, MOVE_GUARD_SPLIT), + LEVEL_UP_MOVE(62, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_YAMASK + +#if P_FAMILY_TIRTOUGA static const struct LevelUpMove sTirtougaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BIDE), LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), @@ -11442,7 +13580,9 @@ static const struct LevelUpMove sCarracostaLevelUpLearnset[] = { LEVEL_UP_MOVE(61, MOVE_HYDRO_PUMP), LEVEL_UP_END }; +#endif //P_FAMILY_TIRTOUGA +#if P_FAMILY_ARCHEN static const struct LevelUpMove sArchenLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -11487,7 +13627,9 @@ static const struct LevelUpMove sArcheopsLevelUpLearnset[] = { LEVEL_UP_MOVE(61, MOVE_THRASH), LEVEL_UP_END }; +#endif //P_FAMILY_ARCHEN +#if P_FAMILY_TRUBBISH static const struct LevelUpMove sTrubbishLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), @@ -11531,7 +13673,9 @@ static const struct LevelUpMove sGarbodorLevelUpLearnset[] = { LEVEL_UP_MOVE(59, MOVE_EXPLOSION), LEVEL_UP_END }; +#endif //P_FAMILY_TRUBBISH +#if P_FAMILY_ZORUA static const struct LevelUpMove sZoruaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -11579,6 +13723,48 @@ static const struct LevelUpMove sZoroarkLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_HISUIAN_FORMS +static const struct LevelUpMove sZoruaHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 4, MOVE_TORMENT), + LEVEL_UP_MOVE( 8, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(12, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(16, MOVE_CURSE), + LEVEL_UP_MOVE(20, MOVE_TAUNT), + LEVEL_UP_MOVE(24, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(28, MOVE_SPITE), + LEVEL_UP_MOVE(32, MOVE_AGILITY), + LEVEL_UP_MOVE(36, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(40, MOVE_BITTER_MALICE), + LEVEL_UP_MOVE(44, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(48, MOVE_FOUL_PLAY), + LEVEL_UP_END +}; + +static const struct LevelUpMove sZoroarkHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SHADOW_CLAW), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_TORMENT), + LEVEL_UP_MOVE( 1, MOVE_U_TURN), + LEVEL_UP_MOVE( 1, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(12, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(16, MOVE_CURSE), + LEVEL_UP_MOVE(20, MOVE_TAUNT), + LEVEL_UP_MOVE(24, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(28, MOVE_SPITE), + LEVEL_UP_MOVE(34, MOVE_AGILITY), + LEVEL_UP_MOVE(40, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(46, MOVE_BITTER_MALICE), + LEVEL_UP_MOVE(52, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(58, MOVE_FOUL_PLAY), + LEVEL_UP_END +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_ZORUA + +#if P_FAMILY_MINCCINO static const struct LevelUpMove sMinccinoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 3, MOVE_BABY_DOLL_EYES), @@ -11609,7 +13795,9 @@ static const struct LevelUpMove sCinccinoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TAIL_SLAP), LEVEL_UP_END }; +#endif //P_FAMILY_MINCCINO +#if P_FAMILY_GOTHITA static const struct LevelUpMove sGothitaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 3, MOVE_CONFUSION), @@ -11676,7 +13864,9 @@ static const struct LevelUpMove sGothitelleLevelUpLearnset[] = { LEVEL_UP_MOVE(59, MOVE_MAGIC_ROOM), LEVEL_UP_END }; +#endif //P_FAMILY_GOTHITA +#if P_FAMILY_SOLOSIS static const struct LevelUpMove sSolosisLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), LEVEL_UP_MOVE( 3, MOVE_REFLECT), @@ -11744,7 +13934,9 @@ static const struct LevelUpMove sReuniclusLevelUpLearnset[] = { LEVEL_UP_MOVE(59, MOVE_WONDER_ROOM), LEVEL_UP_END }; +#endif //P_FAMILY_SOLOSIS +#if P_FAMILY_DUCKLETT static const struct LevelUpMove sDucklettLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), LEVEL_UP_MOVE( 3, MOVE_WATER_SPORT), @@ -11785,7 +13977,9 @@ static const struct LevelUpMove sSwannaLevelUpLearnset[] = { LEVEL_UP_MOVE(55, MOVE_HURRICANE), LEVEL_UP_END }; +#endif //P_FAMILY_DUCKLETT +#if P_FAMILY_VANILLITE static const struct LevelUpMove sVanilliteLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ICICLE_SPEAR), LEVEL_UP_MOVE( 4, MOVE_HARDEN), @@ -11851,7 +14045,9 @@ static const struct LevelUpMove sVanilluxeLevelUpLearnset[] = { LEVEL_UP_MOVE(67, MOVE_SHEER_COLD), LEVEL_UP_END }; +#endif //P_FAMILY_VANILLITE +#if P_FAMILY_DEERLING static const struct LevelUpMove sDeerlingLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_CAMOUFLAGE), @@ -11894,7 +14090,9 @@ static const struct LevelUpMove sSawsbuckLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_SOLAR_BEAM), LEVEL_UP_END }; +#endif //P_FAMILY_DEERLING +#if P_FAMILY_EMOLGA static const struct LevelUpMove sEmolgaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), LEVEL_UP_MOVE( 4, MOVE_QUICK_ATTACK), @@ -11914,7 +14112,9 @@ static const struct LevelUpMove sEmolgaLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_DISCHARGE), LEVEL_UP_END }; +#endif //P_FAMILY_EMOLGA +#if P_FAMILY_KARRABLAST static const struct LevelUpMove sKarrablastLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 4, MOVE_LEER), @@ -11958,7 +14158,9 @@ static const struct LevelUpMove sEscavalierLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_FELL_STINGER), LEVEL_UP_END }; +#endif //P_FAMILY_KARRABLAST +#if P_FAMILY_FOONGUS static const struct LevelUpMove sFoongusLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ABSORB), LEVEL_UP_MOVE( 6, MOVE_GROWTH), @@ -11999,7 +14201,9 @@ static const struct LevelUpMove sAmoongussLevelUpLearnset[] = { LEVEL_UP_MOVE(62, MOVE_SPORE), LEVEL_UP_END }; +#endif //P_FAMILY_FOONGUS +#if P_FAMILY_FRILLISH static const struct LevelUpMove sFrillishLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BUBBLE), LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), @@ -12039,7 +14243,9 @@ static const struct LevelUpMove sJellicentLevelUpLearnset[] = { LEVEL_UP_MOVE(69, MOVE_WATER_SPOUT), LEVEL_UP_END }; +#endif //P_FAMILY_FRILLISH +#if P_FAMILY_ALOMOMOLA static const struct LevelUpMove sAlomomolaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), LEVEL_UP_MOVE( 1, MOVE_HYDRO_PUMP), @@ -12066,7 +14272,9 @@ static const struct LevelUpMove sAlomomolaLevelUpLearnset[] = { LEVEL_UP_MOVE(65, MOVE_HYDRO_PUMP), LEVEL_UP_END }; +#endif //P_FAMILY_ALOMOMOLA +#if P_FAMILY_JOLTIK static const struct LevelUpMove sJoltikLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), LEVEL_UP_MOVE( 1, MOVE_ABSORB), @@ -12109,7 +14317,9 @@ static const struct LevelUpMove sGalvantulaLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_BUG_BUZZ), LEVEL_UP_END }; +#endif //P_FAMILY_JOLTIK +#if P_FAMILY_FERROSEED static const struct LevelUpMove sFerroseedLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_HARDEN), @@ -12152,7 +14362,9 @@ static const struct LevelUpMove sFerrothornLevelUpLearnset[] = { LEVEL_UP_MOVE(67, MOVE_EXPLOSION), LEVEL_UP_END }; +#endif //P_FAMILY_FERROSEED +#if P_FAMILY_KLINK static const struct LevelUpMove sKlinkLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_VISE_GRIP), LEVEL_UP_MOVE( 6, MOVE_CHARGE), @@ -12218,7 +14430,9 @@ static const struct LevelUpMove sKlinklangLevelUpLearnset[] = { LEVEL_UP_MOVE(72, MOVE_HYPER_BEAM), LEVEL_UP_END }; +#endif //P_FAMILY_KLINK +#if P_FAMILY_TYNAMO static const struct LevelUpMove sTynamoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), @@ -12260,7 +14474,9 @@ static const struct LevelUpMove sEelektrossLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DISCHARGE), LEVEL_UP_END }; +#endif //P_FAMILY_TYNAMO +#if P_FAMILY_ELGYEM static const struct LevelUpMove sElgyemLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CONFUSION), LEVEL_UP_MOVE( 4, MOVE_GROWL), @@ -12310,7 +14526,9 @@ static const struct LevelUpMove sBeheeyemLevelUpLearnset[] = { LEVEL_UP_MOVE(68, MOVE_WONDER_ROOM), LEVEL_UP_END }; +#endif //P_FAMILY_ELGYEM +#if P_FAMILY_LITWICK static const struct LevelUpMove sLitwickLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_EMBER), LEVEL_UP_MOVE( 1, MOVE_ASTONISH), @@ -12363,7 +14581,9 @@ static const struct LevelUpMove sChandelureLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HEX), LEVEL_UP_END }; +#endif //P_FAMILY_LITWICK +#if P_FAMILY_AXEW static const struct LevelUpMove sAxewLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 4, MOVE_LEER), @@ -12430,7 +14650,9 @@ static const struct LevelUpMove sHaxorusLevelUpLearnset[] = { LEVEL_UP_MOVE(74, MOVE_GIGA_IMPACT), LEVEL_UP_END }; +#endif //P_FAMILY_AXEW +#if P_FAMILY_CUBCHOO static const struct LevelUpMove sCubchooLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 5, MOVE_POWDER_SNOW), @@ -12479,7 +14701,9 @@ static const struct LevelUpMove sBearticLevelUpLearnset[] = { LEVEL_UP_MOVE(66, MOVE_SHEER_COLD), LEVEL_UP_END }; +#endif //P_FAMILY_CUBCHOO +#if P_FAMILY_CRYOGONAL static const struct LevelUpMove sCryogonalLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SHEER_COLD), LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), @@ -12505,7 +14729,9 @@ static const struct LevelUpMove sCryogonalLevelUpLearnset[] = { LEVEL_UP_MOVE(57, MOVE_SHEER_COLD), LEVEL_UP_END }; +#endif //P_FAMILY_CRYOGONAL +#if P_FAMILY_SHELMET static const struct LevelUpMove sShelmetLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ABSORB), LEVEL_UP_MOVE( 4, MOVE_ACID), @@ -12549,7 +14775,9 @@ static const struct LevelUpMove sAccelgorLevelUpLearnset[] = { LEVEL_UP_MOVE(56, MOVE_FINAL_GAMBIT), LEVEL_UP_END }; +#endif //P_FAMILY_SHELMET +#if P_FAMILY_STUNFISK static const struct LevelUpMove sStunfiskLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_FISSURE), LEVEL_UP_MOVE( 1, MOVE_FLAIL), @@ -12573,6 +14801,29 @@ static const struct LevelUpMove sStunfiskLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GALARIAN_FORMS +static const struct LevelUpMove sStunfiskGalarianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 5, MOVE_ENDURE), + LEVEL_UP_MOVE(10, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(15, MOVE_REVENGE), + LEVEL_UP_MOVE(20, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(25, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(30, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(35, MOVE_BOUNCE), + LEVEL_UP_MOVE(40, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(45, MOVE_SNAP_TRAP), + LEVEL_UP_MOVE(50, MOVE_FLAIL), + LEVEL_UP_MOVE(55, MOVE_FISSURE), + LEVEL_UP_END +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_STUNFISK + +#if P_FAMILY_MIENFOO static const struct LevelUpMove sMienfooLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 5, MOVE_MEDITATE), @@ -12617,7 +14868,9 @@ static const struct LevelUpMove sMienshaoLevelUpLearnset[] = { LEVEL_UP_MOVE(70, MOVE_AURA_SPHERE), LEVEL_UP_END }; +#endif //P_FAMILY_MIENFOO +#if P_FAMILY_DRUDDIGON static const struct LevelUpMove sDruddigonLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_SCRATCH), @@ -12637,7 +14890,9 @@ static const struct LevelUpMove sDruddigonLevelUpLearnset[] = { LEVEL_UP_MOVE(62, MOVE_OUTRAGE), LEVEL_UP_END }; +#endif //P_FAMILY_DRUDDIGON +#if P_FAMILY_GOLETT static const struct LevelUpMove sGolettLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 1, MOVE_ASTONISH), @@ -12682,7 +14937,9 @@ static const struct LevelUpMove sGolurkLevelUpLearnset[] = { LEVEL_UP_MOVE(76, MOVE_PHANTOM_FORCE), LEVEL_UP_END }; +#endif //P_FAMILY_GOLETT +#if P_FAMILY_PAWNIARD static const struct LevelUpMove sPawniardLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 6, MOVE_LEER), @@ -12729,6 +14986,31 @@ static const struct LevelUpMove sBisharpLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_9_CROSS_EVOS +static const struct LevelUpMove sKingambitLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_KOWTOW_CLEAVE), + LEVEL_UP_MOVE( 1, MOVE_METAL_BURST), + LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 1, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(15, MOVE_TORMENT), + LEVEL_UP_MOVE(20, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(25, MOVE_ASSURANCE), + LEVEL_UP_MOVE(30, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(35, MOVE_SLASH), + LEVEL_UP_MOVE(40, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(45, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(50, MOVE_RETALIATE), + LEVEL_UP_MOVE(57, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(64, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(71, MOVE_GUILLOTINE), + LEVEL_UP_END +}; +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_PAWNIARD + +#if P_FAMILY_BOUFFALANT static const struct LevelUpMove sBouffalantLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PURSUIT), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -12746,7 +15028,9 @@ static const struct LevelUpMove sBouffalantLevelUpLearnset[] = { LEVEL_UP_MOVE(61, MOVE_GIGA_IMPACT), LEVEL_UP_END }; +#endif //P_FAMILY_BOUFFALANT +#if P_FAMILY_RUFFLET static const struct LevelUpMove sRuffletLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -12794,6 +15078,31 @@ static const struct LevelUpMove sBraviaryLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_HISUIAN_FORMS +static const struct LevelUpMove sBraviaryHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_ESPER_WING), + LEVEL_UP_MOVE( 1, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE( 1, MOVE_SKY_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_SUPERPOWER), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(18, MOVE_TAILWIND), + LEVEL_UP_MOVE(24, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(30, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(36, MOVE_SLASH), + LEVEL_UP_MOVE(42, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(48, MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE(57, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(64, MOVE_DEFOG), + LEVEL_UP_MOVE(72, MOVE_THRASH), + LEVEL_UP_MOVE(80, MOVE_HURRICANE), + LEVEL_UP_END +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_RUFFLET + +#if P_FAMILY_VULLABY static const struct LevelUpMove sVullabyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GUST), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -12840,7 +15149,9 @@ static const struct LevelUpMove sMandibuzzLevelUpLearnset[] = { LEVEL_UP_MOVE(70, MOVE_MIRROR_MOVE), LEVEL_UP_END }; +#endif //P_FAMILY_VULLABY +#if P_FAMILY_HEATMOR static const struct LevelUpMove sHeatmorLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HONE_CLAWS), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -12864,7 +15175,9 @@ static const struct LevelUpMove sHeatmorLevelUpLearnset[] = { LEVEL_UP_MOVE(66, MOVE_INFERNO), LEVEL_UP_END }; +#endif //P_FAMILY_HEATMOR +#if P_FAMILY_DURANT static const struct LevelUpMove sDurantLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_METAL_SOUND), LEVEL_UP_MOVE( 1, MOVE_GUILLOTINE), @@ -12885,7 +15198,9 @@ static const struct LevelUpMove sDurantLevelUpLearnset[] = { LEVEL_UP_MOVE(56, MOVE_METAL_SOUND), LEVEL_UP_END }; +#endif //P_FAMILY_DURANT +#if P_FAMILY_DEINO static const struct LevelUpMove sDeinoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_DRAGON_RAGE), @@ -12951,7 +15266,9 @@ static const struct LevelUpMove sHydreigonLevelUpLearnset[] = { LEVEL_UP_MOVE(79, MOVE_OUTRAGE), LEVEL_UP_END }; +#endif //P_FAMILY_DEINO +#if P_FAMILY_LARVESTA static const struct LevelUpMove sLarvestaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_EMBER), LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), @@ -12996,7 +15313,9 @@ static const struct LevelUpMove sVolcaronaLevelUpLearnset[] = { LEVEL_UP_MOVE(100, MOVE_FIERY_DANCE), LEVEL_UP_END }; +#endif //P_FAMILY_LARVESTA +#if P_FAMILY_COBALION static const struct LevelUpMove sCobalionLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CLOSE_COMBAT), LEVEL_UP_MOVE( 1, MOVE_METAL_BURST), @@ -13016,7 +15335,9 @@ static const struct LevelUpMove sCobalionLevelUpLearnset[] = { LEVEL_UP_MOVE(61, MOVE_CLOSE_COMBAT), LEVEL_UP_END }; +#endif //P_FAMILY_COBALION +#if P_FAMILY_TERRAKION static const struct LevelUpMove sTerrakionLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CLOSE_COMBAT), LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), @@ -13035,7 +15356,9 @@ static const struct LevelUpMove sTerrakionLevelUpLearnset[] = { LEVEL_UP_MOVE(61, MOVE_CLOSE_COMBAT), LEVEL_UP_END }; +#endif //P_FAMILY_TERRAKION +#if P_FAMILY_VIRIZION static const struct LevelUpMove sVirizionLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CLOSE_COMBAT), LEVEL_UP_MOVE( 1, MOVE_LEAF_BLADE), @@ -13055,7 +15378,9 @@ static const struct LevelUpMove sVirizionLevelUpLearnset[] = { LEVEL_UP_MOVE(61, MOVE_CLOSE_COMBAT), LEVEL_UP_END }; +#endif //P_FAMILY_VIRIZION +#if P_FAMILY_TORNADUS static const struct LevelUpMove sTornadusLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_THRASH), LEVEL_UP_MOVE( 1, MOVE_HAMMER_ARM), @@ -13079,7 +15404,9 @@ static const struct LevelUpMove sTornadusLevelUpLearnset[] = { LEVEL_UP_MOVE(79, MOVE_THRASH), LEVEL_UP_END }; +#endif //P_FAMILY_TORNADUS +#if P_FAMILY_THUNDURUS static const struct LevelUpMove sThundurusLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_THRASH), LEVEL_UP_MOVE( 1, MOVE_HAMMER_ARM), @@ -13103,7 +15430,9 @@ static const struct LevelUpMove sThundurusLevelUpLearnset[] = { LEVEL_UP_MOVE(79, MOVE_THRASH), LEVEL_UP_END }; +#endif //P_FAMILY_THUNDURUS +#if P_FAMILY_RESHIRAM static const struct LevelUpMove sReshiramLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_FIRE_FANG), LEVEL_UP_MOVE( 1, MOVE_DRAGON_RAGE), @@ -13123,7 +15452,9 @@ static const struct LevelUpMove sReshiramLevelUpLearnset[] = { LEVEL_UP_MOVE(100, MOVE_BLUE_FLARE), LEVEL_UP_END }; +#endif //P_FAMILY_RESHIRAM +#if P_FAMILY_ZEKROM static const struct LevelUpMove sZekromLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_THUNDER_FANG), LEVEL_UP_MOVE( 1, MOVE_DRAGON_RAGE), @@ -13143,7 +15474,9 @@ static const struct LevelUpMove sZekromLevelUpLearnset[] = { LEVEL_UP_MOVE(100, MOVE_BOLT_STRIKE), LEVEL_UP_END }; +#endif //P_FAMILY_ZEKROM +#if P_FAMILY_LANDORUS static const struct LevelUpMove sLandorusLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_OUTRAGE), LEVEL_UP_MOVE( 1, MOVE_HAMMER_ARM), @@ -13167,7 +15500,9 @@ static const struct LevelUpMove sLandorusLevelUpLearnset[] = { LEVEL_UP_MOVE(79, MOVE_OUTRAGE), LEVEL_UP_END }; +#endif //P_FAMILY_LANDORUS +#if P_FAMILY_KYUREM static const struct LevelUpMove sKyuremLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ICY_WIND), LEVEL_UP_MOVE( 1, MOVE_DRAGON_RAGE), @@ -13187,6 +15522,50 @@ static const struct LevelUpMove sKyuremLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_FUSION_FORMS +static const struct LevelUpMove sKyuremWhiteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ICY_WIND), + LEVEL_UP_MOVE( 1, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE( 8, MOVE_IMPRISON), + LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(22, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(29, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(36, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_FUSION_FLARE), + LEVEL_UP_MOVE(50, MOVE_ICE_BURN), + LEVEL_UP_MOVE(57, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(64, MOVE_NOBLE_ROAR), + LEVEL_UP_MOVE(71, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(78, MOVE_BLIZZARD), + LEVEL_UP_MOVE(85, MOVE_OUTRAGE), + LEVEL_UP_MOVE(92, MOVE_HYPER_VOICE), + LEVEL_UP_END +}; +#endif //P_FUSION_FORMS + +#if P_FUSION_FORMS +static const struct LevelUpMove sKyuremBlackLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ICY_WIND), + LEVEL_UP_MOVE( 1, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE( 8, MOVE_IMPRISON), + LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(22, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(29, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(36, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_FUSION_BOLT), + LEVEL_UP_MOVE(50, MOVE_FREEZE_SHOCK), + LEVEL_UP_MOVE(57, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(64, MOVE_NOBLE_ROAR), + LEVEL_UP_MOVE(71, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(78, MOVE_BLIZZARD), + LEVEL_UP_MOVE(85, MOVE_OUTRAGE), + LEVEL_UP_MOVE(92, MOVE_HYPER_VOICE), + LEVEL_UP_END +}; +#endif //P_FUSION_FORMS +#endif //P_FAMILY_KYUREM + +#if P_FAMILY_KELDEO static const struct LevelUpMove sKeldeoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_AQUA_JET), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -13206,7 +15585,9 @@ static const struct LevelUpMove sKeldeoLevelUpLearnset[] = { LEVEL_UP_MOVE(73, MOVE_CLOSE_COMBAT), LEVEL_UP_END }; +#endif //P_FAMILY_KELDEO +#if P_FAMILY_MELOETTA static const struct LevelUpMove sMeloettaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ROUND), LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), @@ -13228,7 +15609,9 @@ static const struct LevelUpMove sMeloettaLevelUpLearnset[] = { LEVEL_UP_MOVE(85, MOVE_PERISH_SONG), LEVEL_UP_END }; +#endif //P_FAMILY_MELOETTA +#if P_FAMILY_GENESECT static const struct LevelUpMove sGenesectLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_FELL_STINGER), LEVEL_UP_MOVE( 1, MOVE_TECHNO_BLAST), @@ -13252,9 +15635,9 @@ static const struct LevelUpMove sGenesectLevelUpLearnset[] = { LEVEL_UP_MOVE(77, MOVE_SELF_DESTRUCT), LEVEL_UP_END }; -#endif +#endif //P_FAMILY_GENESECT -#if P_GEN_6_POKEMON == TRUE +#if P_FAMILY_CHESPIN static const struct LevelUpMove sChespinLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), @@ -13320,7 +15703,9 @@ static const struct LevelUpMove sChesnaughtLevelUpLearnset[] = { LEVEL_UP_MOVE(78, MOVE_GIGA_IMPACT), LEVEL_UP_END }; +#endif //P_FAMILY_CHESPIN +#if P_FAMILY_FENNEKIN static const struct LevelUpMove sFennekinLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), @@ -13390,7 +15775,9 @@ static const struct LevelUpMove sDelphoxLevelUpLearnset[] = { LEVEL_UP_MOVE(80, MOVE_FUTURE_SIGHT), LEVEL_UP_END }; +#endif //P_FAMILY_FENNEKIN +#if P_FAMILY_FROAKIE static const struct LevelUpMove sFroakieLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -13455,7 +15842,9 @@ static const struct LevelUpMove sGreninjaLevelUpLearnset[] = { LEVEL_UP_MOVE(77, MOVE_NIGHT_SLASH), LEVEL_UP_END }; +#endif //P_FAMILY_FROAKIE +#if P_FAMILY_BUNNELBY static const struct LevelUpMove sBunnelbyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_AGILITY), @@ -13500,7 +15889,9 @@ static const struct LevelUpMove sDiggersbyLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_HAMMER_ARM), LEVEL_UP_END }; +#endif //P_FAMILY_BUNNELBY +#if P_FAMILY_FLETCHLING static const struct LevelUpMove sFletchlingLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -13563,7 +15954,9 @@ static const struct LevelUpMove sTalonflameLevelUpLearnset[] = { LEVEL_UP_MOVE(64, MOVE_BRAVE_BIRD), LEVEL_UP_END }; +#endif //P_FAMILY_FLETCHLING +#if P_FAMILY_SCATTERBUG static const struct LevelUpMove sScatterbugLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), @@ -13599,7 +15992,9 @@ static const struct LevelUpMove sVivillonLevelUpLearnset[] = { LEVEL_UP_MOVE(55, MOVE_POWDER), LEVEL_UP_END }; +#endif //P_FAMILY_SCATTERBUG +#if P_FAMILY_LITLEO static const struct LevelUpMove sLitleoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -13640,7 +16035,9 @@ static const struct LevelUpMove sPyroarLevelUpLearnset[] = { LEVEL_UP_MOVE(57, MOVE_OVERHEAT), LEVEL_UP_END }; +#endif //P_FAMILY_LITLEO +#if P_FAMILY_FLABEBE static const struct LevelUpMove sFlabebeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), @@ -13678,6 +16075,26 @@ static const struct LevelUpMove sFloetteLevelUpLearnset[] = { LEVEL_UP_END }; +static const struct LevelUpMove sFloetteEternalFlowerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 1, MOVE_FAIRY_WIND), + LEVEL_UP_MOVE( 6, MOVE_FAIRY_WIND), + LEVEL_UP_MOVE(10, MOVE_LUCKY_CHANT), + LEVEL_UP_MOVE(15, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(20, MOVE_WISH), + LEVEL_UP_MOVE(25, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(27, MOVE_GRASSY_TERRAIN), + LEVEL_UP_MOVE(33, MOVE_PETAL_BLIZZARD), + LEVEL_UP_MOVE(38, MOVE_AROMATHERAPY), + LEVEL_UP_MOVE(43, MOVE_MISTY_TERRAIN), + LEVEL_UP_MOVE(46, MOVE_MOONBLAST), + LEVEL_UP_MOVE(50, MOVE_LIGHT_OF_RUIN), + LEVEL_UP_MOVE(51, MOVE_PETAL_DANCE), + LEVEL_UP_MOVE(58, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + static const struct LevelUpMove sFlorgesLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DISARMING_VOICE), LEVEL_UP_MOVE( 1, MOVE_LUCKY_CHANT), @@ -13693,7 +16110,9 @@ static const struct LevelUpMove sFlorgesLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_AROMATHERAPY), LEVEL_UP_END }; +#endif //P_FAMILY_FLABEBE +#if P_FAMILY_SKIDDO static const struct LevelUpMove sSkiddoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_GROWTH), @@ -13738,7 +16157,9 @@ static const struct LevelUpMove sGogoatLevelUpLearnset[] = { LEVEL_UP_MOVE(58, MOVE_MILK_DRINK), LEVEL_UP_END }; +#endif //P_FAMILY_SKIDDO +#if P_FAMILY_PANCHAM static const struct LevelUpMove sPanchamLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -13784,7 +16205,9 @@ static const struct LevelUpMove sPangoroLevelUpLearnset[] = { LEVEL_UP_MOVE(70, MOVE_HAMMER_ARM), LEVEL_UP_END }; +#endif //P_FAMILY_PANCHAM +#if P_FAMILY_FURFROU static const struct LevelUpMove sFurfrouLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -13801,7 +16224,9 @@ static const struct LevelUpMove sFurfrouLevelUpLearnset[] = { LEVEL_UP_MOVE(48, MOVE_COTTON_GUARD), LEVEL_UP_END }; +#endif //P_FAMILY_FURFROU +#if P_FAMILY_ESPURR static const struct LevelUpMove sEspurrLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -13815,7 +16240,7 @@ static const struct LevelUpMove sEspurrLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sMeowsticLevelUpLearnset[] = { +static const struct LevelUpMove sMeowsticMaleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_QUICK_GUARD), LEVEL_UP_MOVE( 1, MOVE_MEAN_LOOK), LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), @@ -13842,6 +16267,35 @@ static const struct LevelUpMove sMeowsticLevelUpLearnset[] = { LEVEL_UP_END }; +static const struct LevelUpMove sMeowsticFemaleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_STORED_POWER), + LEVEL_UP_MOVE( 1, MOVE_ME_FIRST), + LEVEL_UP_MOVE( 1, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_COVET), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 5, MOVE_COVET), + LEVEL_UP_MOVE( 9, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(17, MOVE_PSYBEAM), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(22, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE(25, MOVE_PSYSHOCK), + LEVEL_UP_MOVE(28, MOVE_CHARGE_BEAM), + LEVEL_UP_MOVE(31, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(35, MOVE_EXTRASENSORY), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_ROLE_PLAY), + LEVEL_UP_MOVE(45, MOVE_SIGNAL_BEAM), + LEVEL_UP_MOVE(48, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(50, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(53, MOVE_STORED_POWER), + LEVEL_UP_END +}; +#endif //P_FAMILY_ESPURR + +#if P_FAMILY_HONEDGE static const struct LevelUpMove sHonedgeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_SWORDS_DANCE), @@ -13898,7 +16352,9 @@ static const struct LevelUpMove sAegislashLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SACRED_SWORD), LEVEL_UP_END }; +#endif //P_FAMILY_HONEDGE +#if P_FAMILY_SPRITZEE static const struct LevelUpMove sSpritzeeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), LEVEL_UP_MOVE( 1, MOVE_FAIRY_WIND), @@ -13944,7 +16400,9 @@ static const struct LevelUpMove sAromatisseLevelUpLearnset[] = { LEVEL_UP_MOVE(64, MOVE_PSYCH_UP), LEVEL_UP_END }; +#endif //P_FAMILY_SPRITZEE +#if P_FAMILY_SWIRLIX static const struct LevelUpMove sSwirlixLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -13986,7 +16444,9 @@ static const struct LevelUpMove sSlurpuffLevelUpLearnset[] = { LEVEL_UP_MOVE(67, MOVE_SAFEGUARD), LEVEL_UP_END }; +#endif //P_FAMILY_SWIRLIX +#if P_FAMILY_INKAY static const struct LevelUpMove sInkayLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_PECK), @@ -14032,7 +16492,9 @@ static const struct LevelUpMove sMalamarLevelUpLearnset[] = { LEVEL_UP_MOVE(48, MOVE_SUPERPOWER), LEVEL_UP_END }; +#endif //P_FAMILY_INKAY +#if P_FAMILY_BINACLE static const struct LevelUpMove sBinacleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SHELL_SMASH), LEVEL_UP_MOVE( 1, MOVE_SCRATCH), @@ -14077,7 +16539,9 @@ static const struct LevelUpMove sBarbaracleLevelUpLearnset[] = { LEVEL_UP_MOVE(65, MOVE_SKULL_BASH), LEVEL_UP_END }; +#endif //P_FAMILY_BINACLE +#if P_FAMILY_SKRELP static const struct LevelUpMove sSkrelpLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), @@ -14122,7 +16586,9 @@ static const struct LevelUpMove sDragalgeLevelUpLearnset[] = { LEVEL_UP_MOVE(59, MOVE_DRAGON_TAIL), LEVEL_UP_END }; +#endif //P_FAMILY_SKRELP +#if P_FAMILY_CLAUNCHER static const struct LevelUpMove sClauncherLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SPLASH), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), @@ -14163,7 +16629,9 @@ static const struct LevelUpMove sClawitzerLevelUpLearnset[] = { LEVEL_UP_MOVE(57, MOVE_MUDDY_WATER), LEVEL_UP_END }; +#endif //P_FAMILY_CLAUNCHER +#if P_FAMILY_HELIOPTILE static const struct LevelUpMove sHelioptileLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), @@ -14191,7 +16659,9 @@ static const struct LevelUpMove sHelioliskLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PARABOLIC_CHARGE), LEVEL_UP_END }; +#endif //P_FAMILY_HELIOPTILE +#if P_FAMILY_TYRUNT static const struct LevelUpMove sTyruntLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -14236,7 +16706,9 @@ static const struct LevelUpMove sTyrantrumLevelUpLearnset[] = { LEVEL_UP_MOVE(68, MOVE_GIGA_IMPACT), LEVEL_UP_END }; +#endif //P_FAMILY_TYRUNT +#if P_FAMILY_AMAURA static const struct LevelUpMove sAmauraLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GROWL), LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), @@ -14284,28 +16756,9 @@ static const struct LevelUpMove sAurorusLevelUpLearnset[] = { LEVEL_UP_MOVE(74, MOVE_BLIZZARD), LEVEL_UP_END }; +#endif //P_FAMILY_AMAURA -static const struct LevelUpMove sSylveonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_FAIRY_WIND), - LEVEL_UP_MOVE( 1, MOVE_FAIRY_WIND), - LEVEL_UP_MOVE( 1, MOVE_DISARMING_VOICE), - LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 9, MOVE_BABY_DOLL_EYES), - LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(17, MOVE_SWIFT), - LEVEL_UP_MOVE(20, MOVE_DRAINING_KISS), - LEVEL_UP_MOVE(25, MOVE_SKILL_SWAP), - LEVEL_UP_MOVE(29, MOVE_MISTY_TERRAIN), - LEVEL_UP_MOVE(33, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(37, MOVE_MOONBLAST), - LEVEL_UP_MOVE(41, MOVE_LAST_RESORT), - LEVEL_UP_MOVE(45, MOVE_PSYCH_UP), - LEVEL_UP_END -}; - +#if P_FAMILY_HAWLUCHA static const struct LevelUpMove sHawluchaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DETECT), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -14326,7 +16779,9 @@ static const struct LevelUpMove sHawluchaLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_SWORDS_DANCE), LEVEL_UP_END }; +#endif //P_FAMILY_HAWLUCHA +#if P_FAMILY_DEDENNE static const struct LevelUpMove sDedenneLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), @@ -14346,7 +16801,9 @@ static const struct LevelUpMove sDedenneLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_DISCHARGE), LEVEL_UP_END }; +#endif //P_FAMILY_DEDENNE +#if P_FAMILY_CARBINK static const struct LevelUpMove sCarbinkLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_HARDEN), @@ -14366,7 +16823,9 @@ static const struct LevelUpMove sCarbinkLevelUpLearnset[] = { LEVEL_UP_MOVE(70, MOVE_SAFEGUARD), LEVEL_UP_END }; +#endif //P_FAMILY_CARBINK +#if P_FAMILY_GOOMY static const struct LevelUpMove sGoomyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_BUBBLE), @@ -14421,6 +16880,51 @@ static const struct LevelUpMove sGoodraLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_HISUIAN_FORMS +static const struct LevelUpMove sSliggooHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SHELTER), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE( 1, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(15, MOVE_PROTECT), + LEVEL_UP_MOVE(20, MOVE_FLAIL), + LEVEL_UP_MOVE(25, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(30, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(35, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(43, MOVE_CURSE), + LEVEL_UP_MOVE(49, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(56, MOVE_MUDDY_WATER), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGoodraHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_IRON_TAIL), + LEVEL_UP_MOVE( 1, MOVE_SHELTER), + LEVEL_UP_MOVE( 1, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE( 1, MOVE_FEINT), + LEVEL_UP_MOVE( 1, MOVE_TEARFUL_LOOK), + LEVEL_UP_MOVE( 1, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_PROTECT), + LEVEL_UP_MOVE(20, MOVE_FLAIL), + LEVEL_UP_MOVE(25, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(30, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(35, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(43, MOVE_CURSE), + LEVEL_UP_MOVE(49, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(49, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(58, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(67, MOVE_HEAVY_SLAM), + LEVEL_UP_END +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_GOOMY + +#if P_FAMILY_KLEFKI static const struct LevelUpMove sKlefkiLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_FAIRY_LOCK), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -14440,7 +16944,9 @@ static const struct LevelUpMove sKlefkiLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_HEAL_BLOCK), LEVEL_UP_END }; +#endif //P_FAMILY_KLEFKI +#if P_FAMILY_PHANTUMP static const struct LevelUpMove sPhantumpLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_CONFUSE_RAY), @@ -14481,7 +16987,9 @@ static const struct LevelUpMove sTrevenantLevelUpLearnset[] = { LEVEL_UP_MOVE(54, MOVE_HORN_LEECH), LEVEL_UP_END }; +#endif //P_FAMILY_PHANTUMP +#if P_FAMILY_PUMPKABOO static const struct LevelUpMove sPumpkabooLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TRICK), LEVEL_UP_MOVE( 1, MOVE_ASTONISH), @@ -14525,7 +17033,9 @@ static const struct LevelUpMove sGourgeistLevelUpLearnset[] = { LEVEL_UP_MOVE(70, MOVE_EXPLOSION), LEVEL_UP_END }; +#endif //P_FAMILY_PUMPKABOO +#if P_FAMILY_BERGMITE static const struct LevelUpMove sBergmiteLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_BITE), @@ -14573,6 +17083,34 @@ static const struct LevelUpMove sAvaluggLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_HISUIAN_FORMS +static const struct LevelUpMove sAvaluggHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 1, MOVE_WIDE_GUARD), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 9, MOVE_CURSE), + LEVEL_UP_MOVE(12, MOVE_ICY_WIND), + LEVEL_UP_MOVE(15, MOVE_PROTECT), + LEVEL_UP_MOVE(18, MOVE_AVALANCHE), + LEVEL_UP_MOVE(21, MOVE_BITE), + LEVEL_UP_MOVE(24, MOVE_ICE_FANG), + LEVEL_UP_MOVE(27, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(30, MOVE_RECOVER), + LEVEL_UP_MOVE(33, MOVE_CRUNCH), + LEVEL_UP_MOVE(36, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_BLIZZARD), + LEVEL_UP_MOVE(46, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(51, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(61, MOVE_MOUNTAIN_GALE), + LEVEL_UP_END +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_BERGMITE + +#if P_FAMILY_NOIBAT static const struct LevelUpMove sNoibatLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCREECH), LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), @@ -14619,7 +17157,9 @@ static const struct LevelUpMove sNoivernLevelUpLearnset[] = { LEVEL_UP_MOVE(75, MOVE_BOOMBURST), LEVEL_UP_END }; +#endif //P_FAMILY_NOIBAT +#if P_FAMILY_XERNEAS static const struct LevelUpMove sXerneasLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HEAL_PULSE), LEVEL_UP_MOVE( 1, MOVE_AROMATHERAPY), @@ -14641,7 +17181,9 @@ static const struct LevelUpMove sXerneasLevelUpLearnset[] = { LEVEL_UP_MOVE(93, MOVE_OUTRAGE), LEVEL_UP_END }; +#endif //P_FAMILY_XERNEAS +#if P_FAMILY_YVELTAL static const struct LevelUpMove sYveltalLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HURRICANE), LEVEL_UP_MOVE( 1, MOVE_RAZOR_WIND), @@ -14663,7 +17205,9 @@ static const struct LevelUpMove sYveltalLevelUpLearnset[] = { LEVEL_UP_MOVE(93, MOVE_SKY_ATTACK), LEVEL_UP_END }; +#endif //P_FAMILY_YVELTAL +#if P_FAMILY_ZYGARDE static const struct LevelUpMove sZygardeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GLARE), LEVEL_UP_MOVE( 1, MOVE_BULLDOZE), @@ -14683,7 +17227,9 @@ static const struct LevelUpMove sZygardeLevelUpLearnset[] = { LEVEL_UP_MOVE(80, MOVE_OUTRAGE), LEVEL_UP_END }; +#endif //P_FAMILY_ZYGARDE +#if P_FAMILY_DIANCIE static const struct LevelUpMove sDiancieLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_HARDEN), @@ -14705,8 +17251,10 @@ static const struct LevelUpMove sDiancieLevelUpLearnset[] = { LEVEL_UP_MOVE(70, MOVE_SAFEGUARD), LEVEL_UP_END }; +#endif //P_FAMILY_DIANCIE -static const struct LevelUpMove sHoopaLevelUpLearnset[] = { +#if P_FAMILY_HOOPA +static const struct LevelUpMove sHoopaConfinedLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HYPERSPACE_HOLE), LEVEL_UP_MOVE( 1, MOVE_TRICK), LEVEL_UP_MOVE( 1, MOVE_DESTINY_BOND), @@ -14730,6 +17278,30 @@ static const struct LevelUpMove sHoopaLevelUpLearnset[] = { LEVEL_UP_END }; +static const struct LevelUpMove sHoopaUnboundLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HYPERSPACE_HOLE), + LEVEL_UP_MOVE( 1, MOVE_TRICK), + LEVEL_UP_MOVE( 1, MOVE_DESTINY_BOND), + LEVEL_UP_MOVE( 1, MOVE_ALLY_SWITCH), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 6, MOVE_ASTONISH), + LEVEL_UP_MOVE(10, MOVE_MAGIC_COAT), + LEVEL_UP_MOVE(15, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(19, MOVE_PSYBEAM), + LEVEL_UP_MOVE(25, MOVE_SKILL_SWAP), + LEVEL_UP_MOVE(29, MOVE_POWER_SPLIT), + LEVEL_UP_MOVE(29, MOVE_GUARD_SPLIT), + LEVEL_UP_MOVE(46, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(50, MOVE_WONDER_ROOM), + LEVEL_UP_MOVE(50, MOVE_TRICK_ROOM), + LEVEL_UP_MOVE(55, MOVE_DARK_PULSE), + LEVEL_UP_MOVE(75, MOVE_PSYCHIC), + LEVEL_UP_MOVE(85, MOVE_HYPERSPACE_FURY), + LEVEL_UP_END +}; +#endif //P_FAMILY_HOOPA + +#if P_FAMILY_VOLCANION static const struct LevelUpMove sVolcanionLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_STEAM_ERUPTION), LEVEL_UP_MOVE( 1, MOVE_FLARE_BLITZ), @@ -14749,9 +17321,9 @@ static const struct LevelUpMove sVolcanionLevelUpLearnset[] = { LEVEL_UP_MOVE(85, MOVE_STEAM_ERUPTION), LEVEL_UP_END }; -#endif +#endif //P_FAMILY_VOLCANION -#if P_GEN_7_POKEMON == TRUE +#if P_FAMILY_ROWLET static const struct LevelUpMove sRowletLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_LEAFAGE), @@ -14822,6 +17394,30 @@ static const struct LevelUpMove sDecidueyeLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_HISUIAN_FORMS +static const struct LevelUpMove sDecidueyeHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_TRIPLE_ARROWS), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_U_TURN), + LEVEL_UP_MOVE( 1, MOVE_LEAF_STORM), + LEVEL_UP_MOVE( 1, MOVE_LEAFAGE), + LEVEL_UP_MOVE( 9, MOVE_PECK), + LEVEL_UP_MOVE(12, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE(15, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(20, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(25, MOVE_PLUCK), + LEVEL_UP_MOVE(30, MOVE_BULK_UP), + LEVEL_UP_MOVE(37, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(44, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(51, MOVE_FEATHER_DANCE), + LEVEL_UP_MOVE(58, MOVE_BRAVE_BIRD), + LEVEL_UP_END +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_ROWLET + +#if P_FAMILY_LITTEN static const struct LevelUpMove sLittenLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_EMBER), @@ -14890,7 +17486,9 @@ static const struct LevelUpMove sIncineroarLevelUpLearnset[] = { LEVEL_UP_MOVE(66, MOVE_CROSS_CHOP), LEVEL_UP_END }; +#endif //P_FAMILY_LITTEN +#if P_FAMILY_POPPLIO static const struct LevelUpMove sPopplioLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), @@ -14956,7 +17554,9 @@ static const struct LevelUpMove sPrimarinaLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_MISTY_TERRAIN), LEVEL_UP_END }; +#endif //P_FAMILY_POPPLIO +#if P_FAMILY_PIKIPEK static const struct LevelUpMove sPikipekLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 3, MOVE_GROWL), @@ -15017,7 +17617,9 @@ static const struct LevelUpMove sToucannonLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_HYPER_VOICE), LEVEL_UP_END }; +#endif //P_FAMILY_PIKIPEK +#if P_FAMILY_YUNGOOS static const struct LevelUpMove sYungoosLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 3, MOVE_LEER), @@ -15060,7 +17662,9 @@ static const struct LevelUpMove sGumshoosLevelUpLearnset[] = { LEVEL_UP_MOVE(55, MOVE_REST), LEVEL_UP_END }; +#endif //P_FAMILY_YUNGOOS +#if P_FAMILY_GRUBBIN static const struct LevelUpMove sGrubbinLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_VISE_GRIP), LEVEL_UP_MOVE( 4, MOVE_STRING_SHOT), @@ -15118,7 +17722,9 @@ static const struct LevelUpMove sVikavoltLevelUpLearnset[] = { LEVEL_UP_MOVE(49, MOVE_AGILITY), LEVEL_UP_END }; +#endif //P_FAMILY_GRUBBIN +#if P_FAMILY_CRABRAWLER static const struct LevelUpMove sCrabrawlerLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BUBBLE), LEVEL_UP_MOVE( 5, MOVE_ROCK_SMASH), @@ -15157,7 +17763,9 @@ static const struct LevelUpMove sCrabominableLevelUpLearnset[] = { LEVEL_UP_MOVE(49, MOVE_CLOSE_COMBAT), LEVEL_UP_END }; +#endif //P_FAMILY_CRABRAWLER +#if P_FAMILY_ORICORIO static const struct LevelUpMove sOricorioLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 4, MOVE_GROWL), @@ -15177,7 +17785,9 @@ static const struct LevelUpMove sOricorioLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_HURRICANE), LEVEL_UP_END }; +#endif //P_FAMILY_ORICORIO +#if P_FAMILY_CUTIEFLY static const struct LevelUpMove sCutieflyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ABSORB), LEVEL_UP_MOVE( 4, MOVE_FAIRY_WIND), @@ -15212,7 +17822,9 @@ static const struct LevelUpMove sRibombeeLevelUpLearnset[] = { LEVEL_UP_MOVE(49, MOVE_QUIVER_DANCE), LEVEL_UP_END }; +#endif //P_FAMILY_CUTIEFLY +#if P_FAMILY_ROCKRUFF static const struct LevelUpMove sRockruffLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -15232,7 +17844,7 @@ static const struct LevelUpMove sRockruffLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sLycanrocLevelUpLearnset[] = { +static const struct LevelUpMove sLycanrocMiddayLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_ACCELEROCK), LEVEL_UP_MOVE( 1, MOVE_ACCELEROCK), LEVEL_UP_MOVE( 1, MOVE_QUICK_GUARD), @@ -15257,6 +17869,52 @@ static const struct LevelUpMove sLycanrocLevelUpLearnset[] = { LEVEL_UP_END }; +static const struct LevelUpMove sLycanrocMidnightLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_COUNTER), + LEVEL_UP_MOVE( 1, MOVE_REVERSAL), + LEVEL_UP_MOVE( 1, MOVE_TAUNT), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE(12, MOVE_HOWL), + LEVEL_UP_MOVE(15, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(18, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(23, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(26, MOVE_ROAR), + LEVEL_UP_MOVE(29, MOVE_STEALTH_ROCK), + LEVEL_UP_MOVE(34, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(37, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(40, MOVE_CRUNCH), + LEVEL_UP_MOVE(45, MOVE_ROCK_CLIMB), + LEVEL_UP_MOVE(48, MOVE_STONE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sLycanrocDuskLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_THRASH), + LEVEL_UP_MOVE( 1, MOVE_ACCELEROCK), + LEVEL_UP_MOVE( 1, MOVE_COUNTER), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE(12, MOVE_HOWL), + LEVEL_UP_MOVE(15, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(18, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(23, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(26, MOVE_ROAR), + LEVEL_UP_MOVE(29, MOVE_STEALTH_ROCK), + LEVEL_UP_MOVE(34, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(37, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(40, MOVE_CRUNCH), + LEVEL_UP_MOVE(45, MOVE_ROCK_CLIMB), + LEVEL_UP_MOVE(48, MOVE_STONE_EDGE), + LEVEL_UP_END +}; +#endif //P_FAMILY_ROCKRUFF + +#if P_FAMILY_WISHIWASHI static const struct LevelUpMove sWishiwashiLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -15275,7 +17933,9 @@ static const struct LevelUpMove sWishiwashiLevelUpLearnset[] = { LEVEL_UP_MOVE(54, MOVE_HYDRO_PUMP), LEVEL_UP_END }; +#endif //P_FAMILY_WISHIWASHI +#if P_FAMILY_MAREANIE static const struct LevelUpMove sMareanieLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POISON_STING), LEVEL_UP_MOVE( 5, MOVE_PECK), @@ -15314,7 +17974,9 @@ static const struct LevelUpMove sToxapexLevelUpLearnset[] = { LEVEL_UP_MOVE(58, MOVE_LIQUIDATION), LEVEL_UP_END }; +#endif //P_FAMILY_MAREANIE +#if P_FAMILY_MUDBRAY static const struct LevelUpMove sMudbrayLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), LEVEL_UP_MOVE( 3, MOVE_MUD_SPORT), @@ -15353,7 +18015,9 @@ static const struct LevelUpMove sMudsdaleLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_SUPERPOWER), LEVEL_UP_END }; +#endif //P_FAMILY_MUDBRAY +#if P_FAMILY_DEWPIDER static const struct LevelUpMove sDewpiderLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), LEVEL_UP_MOVE( 1, MOVE_BUBBLE), @@ -15393,7 +18057,9 @@ static const struct LevelUpMove sAraquanidLevelUpLearnset[] = { LEVEL_UP_MOVE(62, MOVE_ENTRAINMENT), LEVEL_UP_END }; +#endif //P_FAMILY_DEWPIDER +#if P_FAMILY_FOMANTIS static const struct LevelUpMove sFomantisLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_FURY_CUTTER), LEVEL_UP_MOVE( 5, MOVE_LEAFAGE), @@ -15430,7 +18096,9 @@ static const struct LevelUpMove sLurantisLevelUpLearnset[] = { LEVEL_UP_MOVE(55, MOVE_SUNNY_DAY), LEVEL_UP_END }; +#endif //P_FAMILY_FOMANTIS +#if P_FAMILY_MORELULL static const struct LevelUpMove sMorelullLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ABSORB), LEVEL_UP_MOVE( 4, MOVE_ASTONISH), @@ -15469,7 +18137,9 @@ static const struct LevelUpMove sShiinoticLevelUpLearnset[] = { LEVEL_UP_MOVE(53, MOVE_SPOTLIGHT), LEVEL_UP_END }; +#endif //P_FAMILY_MORELULL +#if P_FAMILY_SALANDIT static const struct LevelUpMove sSalanditLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), @@ -15513,7 +18183,9 @@ static const struct LevelUpMove sSalazzleLevelUpLearnset[] = { LEVEL_UP_MOVE(56, MOVE_DRAGON_PULSE), LEVEL_UP_END }; +#endif //P_FAMILY_SALANDIT +#if P_FAMILY_STUFFUL static const struct LevelUpMove sStuffulLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -15549,7 +18221,9 @@ static const struct LevelUpMove sBewearLevelUpLearnset[] = { LEVEL_UP_MOVE(62, MOVE_SUPERPOWER), LEVEL_UP_END }; +#endif //P_FAMILY_STUFFUL +#if P_FAMILY_BOUNSWEET static const struct LevelUpMove sBounsweetLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SPLASH), LEVEL_UP_MOVE( 5, MOVE_PLAY_NICE), @@ -15608,7 +18282,9 @@ static const struct LevelUpMove sTsareenaLevelUpLearnset[] = { LEVEL_UP_MOVE(53, MOVE_POWER_WHIP), LEVEL_UP_END }; +#endif //P_FAMILY_BOUNSWEET +#if P_FAMILY_COMFEY static const struct LevelUpMove sComfeyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), @@ -15631,7 +18307,9 @@ static const struct LevelUpMove sComfeyLevelUpLearnset[] = { LEVEL_UP_MOVE(49, MOVE_PLAY_ROUGH), LEVEL_UP_END }; +#endif //P_FAMILY_COMFEY +#if P_FAMILY_ORANGURU static const struct LevelUpMove sOranguruLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CONFUSION), LEVEL_UP_MOVE( 4, MOVE_AFTER_YOU), @@ -15650,7 +18328,9 @@ static const struct LevelUpMove sOranguruLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_TRICK_ROOM), LEVEL_UP_END }; +#endif //P_FAMILY_ORANGURU +#if P_FAMILY_PASSIMIAN static const struct LevelUpMove sPassimianLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 4, MOVE_LEER), @@ -15669,7 +18349,9 @@ static const struct LevelUpMove sPassimianLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_GIGA_IMPACT), LEVEL_UP_END }; +#endif //P_FAMILY_PASSIMIAN +#if P_FAMILY_WIMPOD static const struct LevelUpMove sWimpodLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_STRUGGLE_BUG), LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), @@ -15696,7 +18378,9 @@ static const struct LevelUpMove sGolisopodLevelUpLearnset[] = { LEVEL_UP_MOVE(48, MOVE_LIQUIDATION), LEVEL_UP_END }; +#endif //P_FAMILY_WIMPOD +#if P_FAMILY_SANDYGAST static const struct LevelUpMove sSandygastLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HARDEN), LEVEL_UP_MOVE( 1, MOVE_ABSORB), @@ -15734,7 +18418,9 @@ static const struct LevelUpMove sPalossandLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_SANDSTORM), LEVEL_UP_END }; +#endif //P_FAMILY_SANDYGAST +#if P_FAMILY_PYUKUMUKU static const struct LevelUpMove sPyukumukuLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BATON_PASS), LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), @@ -15755,7 +18441,9 @@ static const struct LevelUpMove sPyukumukuLevelUpLearnset[] = { LEVEL_UP_MOVE(49, MOVE_MEMENTO), LEVEL_UP_END }; +#endif //P_FAMILY_PYUKUMUKU +#if P_FAMILY_TYPE_NULL static const struct LevelUpMove sTypeNullLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 5, MOVE_RAGE), @@ -15808,7 +18496,9 @@ static const struct LevelUpMove sSilvallyLevelUpLearnset[] = { LEVEL_UP_MOVE(85, MOVE_PARTING_SHOT), LEVEL_UP_END }; +#endif //P_FAMILY_TYPE_NULL +#if P_FAMILY_MINIOR static const struct LevelUpMove sMiniorLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 3, MOVE_DEFENSE_CURL), @@ -15827,7 +18517,9 @@ static const struct LevelUpMove sMiniorLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_EXPLOSION), LEVEL_UP_END }; +#endif //P_FAMILY_MINIOR +#if P_FAMILY_KOMALA static const struct LevelUpMove sKomalaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), LEVEL_UP_MOVE( 1, MOVE_ROLLOUT), @@ -15844,7 +18536,9 @@ static const struct LevelUpMove sKomalaLevelUpLearnset[] = { LEVEL_UP_MOVE(46, MOVE_THRASH), LEVEL_UP_END }; +#endif //P_FAMILY_KOMALA +#if P_FAMILY_TURTONATOR static const struct LevelUpMove sTurtonatorLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_EMBER), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -15863,7 +18557,9 @@ static const struct LevelUpMove sTurtonatorLevelUpLearnset[] = { LEVEL_UP_MOVE(53, MOVE_EXPLOSION), LEVEL_UP_END }; +#endif //P_FAMILY_TURTONATOR +#if P_FAMILY_TOGEDEMARU static const struct LevelUpMove sTogedemaruLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), @@ -15882,7 +18578,9 @@ static const struct LevelUpMove sTogedemaruLevelUpLearnset[] = { LEVEL_UP_MOVE(53, MOVE_FELL_STINGER), LEVEL_UP_END }; +#endif //P_FAMILY_TOGEDEMARU +#if P_FAMILY_MIMIKYU static const struct LevelUpMove sMimikyuLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WOOD_HAMMER), LEVEL_UP_MOVE( 1, MOVE_SPLASH), @@ -15902,7 +18600,9 @@ static const struct LevelUpMove sMimikyuLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_PAIN_SPLIT), LEVEL_UP_END }; +#endif //P_FAMILY_MIMIKYU +#if P_FAMILY_BRUXISH static const struct LevelUpMove sBruxishLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), LEVEL_UP_MOVE( 4, MOVE_ASTONISH), @@ -15918,7 +18618,9 @@ static const struct LevelUpMove sBruxishLevelUpLearnset[] = { LEVEL_UP_MOVE(44, MOVE_SYNCHRONOISE), LEVEL_UP_END }; +#endif //P_FAMILY_BRUXISH +#if P_FAMILY_DRAMPA static const struct LevelUpMove sDrampaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), LEVEL_UP_MOVE( 1, MOVE_ECHOED_VOICE), @@ -15937,7 +18639,9 @@ static const struct LevelUpMove sDrampaLevelUpLearnset[] = { LEVEL_UP_MOVE(53, MOVE_OUTRAGE), LEVEL_UP_END }; +#endif //P_FAMILY_DRAMPA +#if P_FAMILY_DHELMISE static const struct LevelUpMove sDhelmiseLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SWITCHEROO), LEVEL_UP_MOVE( 1, MOVE_ABSORB), @@ -15959,7 +18663,9 @@ static const struct LevelUpMove sDhelmiseLevelUpLearnset[] = { LEVEL_UP_MOVE(59, MOVE_POWER_WHIP), LEVEL_UP_END }; +#endif //P_FAMILY_DHELMISE +#if P_FAMILY_JANGMO_O static const struct LevelUpMove sJangmoOLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 5, MOVE_LEER), @@ -16029,7 +18735,9 @@ static const struct LevelUpMove sKommoOLevelUpLearnset[] = { LEVEL_UP_MOVE(75, MOVE_CLOSE_COMBAT), LEVEL_UP_END }; +#endif //P_FAMILY_JANGMO_O +#if P_FAMILY_TAPU_KOKO static const struct LevelUpMove sTapuKokoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN), LEVEL_UP_MOVE( 1, MOVE_BRAVE_BIRD), @@ -16051,7 +18759,9 @@ static const struct LevelUpMove sTapuKokoLevelUpLearnset[] = { LEVEL_UP_MOVE(58, MOVE_ELECTRO_BALL), LEVEL_UP_END }; +#endif //P_FAMILY_TAPU_KOKO +#if P_FAMILY_TAPU_LELE static const struct LevelUpMove sTapuLeleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PSYCHIC_TERRAIN), LEVEL_UP_MOVE( 1, MOVE_AROMATIC_MIST), @@ -16073,7 +18783,9 @@ static const struct LevelUpMove sTapuLeleLevelUpLearnset[] = { LEVEL_UP_MOVE(58, MOVE_MOONBLAST), LEVEL_UP_END }; +#endif //P_FAMILY_TAPU_LELE +#if P_FAMILY_TAPU_BULU static const struct LevelUpMove sTapuBuluLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GRASSY_TERRAIN), LEVEL_UP_MOVE( 1, MOVE_WOOD_HAMMER), @@ -16095,7 +18807,9 @@ static const struct LevelUpMove sTapuBuluLevelUpLearnset[] = { LEVEL_UP_MOVE(58, MOVE_SKULL_BASH), LEVEL_UP_END }; +#endif //P_FAMILY_TAPU_BULU +#if P_FAMILY_TAPU_FINI static const struct LevelUpMove sTapuFiniLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_MISTY_TERRAIN), LEVEL_UP_MOVE( 1, MOVE_MOONBLAST), @@ -16117,7 +18831,9 @@ static const struct LevelUpMove sTapuFiniLevelUpLearnset[] = { LEVEL_UP_MOVE(58, MOVE_HYDRO_PUMP), LEVEL_UP_END }; +#endif //P_FAMILY_TAPU_FINI +#if P_FAMILY_COSMOG static const struct LevelUpMove sCosmogLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SPLASH), LEVEL_UP_MOVE(23, MOVE_TELEPORT), @@ -16174,7 +18890,9 @@ static const struct LevelUpMove sLunalaLevelUpLearnset[] = { LEVEL_UP_MOVE(73, MOVE_HYPER_BEAM), LEVEL_UP_END }; +#endif //P_FAMILY_COSMOG +#if P_FAMILY_NIHILEGO static const struct LevelUpMove sNihilegoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POWER_SPLIT), LEVEL_UP_MOVE( 1, MOVE_GUARD_SPLIT), @@ -16197,7 +18915,9 @@ static const struct LevelUpMove sNihilegoLevelUpLearnset[] = { LEVEL_UP_MOVE(73, MOVE_HEAD_SMASH), LEVEL_UP_END }; +#endif //P_FAMILY_NIHILEGO +#if P_FAMILY_BUZZWOLE static const struct LevelUpMove sBuzzwoleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_FELL_STINGER), LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), @@ -16221,7 +18941,9 @@ static const struct LevelUpMove sBuzzwoleLevelUpLearnset[] = { LEVEL_UP_MOVE(73, MOVE_FOCUS_PUNCH), LEVEL_UP_END }; +#endif //P_FAMILY_BUZZWOLE +#if P_FAMILY_PHEROMOSA static const struct LevelUpMove sPheromosaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_QUIVER_DANCE), LEVEL_UP_MOVE( 1, MOVE_QUICK_GUARD), @@ -16244,7 +18966,9 @@ static const struct LevelUpMove sPheromosaLevelUpLearnset[] = { LEVEL_UP_MOVE(73, MOVE_SPEED_SWAP), LEVEL_UP_END }; +#endif //P_FAMILY_PHEROMOSA +#if P_FAMILY_XURKITREE static const struct LevelUpMove sXurkitreeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TAIL_GLOW), LEVEL_UP_MOVE( 1, MOVE_SPARK), @@ -16266,7 +18990,9 @@ static const struct LevelUpMove sXurkitreeLevelUpLearnset[] = { LEVEL_UP_MOVE(73, MOVE_ZAP_CANNON), LEVEL_UP_END }; +#endif //P_FAMILY_XURKITREE +#if P_FAMILY_CELESTEELA static const struct LevelUpMove sCelesteelaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WIDE_GUARD), LEVEL_UP_MOVE( 1, MOVE_AIR_SLASH), @@ -16289,7 +19015,9 @@ static const struct LevelUpMove sCelesteelaLevelUpLearnset[] = { LEVEL_UP_MOVE(73, MOVE_DOUBLE_EDGE), LEVEL_UP_END }; +#endif //P_FAMILY_CELESTEELA +#if P_FAMILY_KARTANA static const struct LevelUpMove sKartanaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SACRED_SWORD), LEVEL_UP_MOVE( 1, MOVE_DEFOG), @@ -16312,7 +19040,9 @@ static const struct LevelUpMove sKartanaLevelUpLearnset[] = { LEVEL_UP_MOVE(73, MOVE_GUILLOTINE), LEVEL_UP_END }; +#endif //P_FAMILY_KARTANA +#if P_FAMILY_GUZZLORD static const struct LevelUpMove sGuzzlordLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BELCH), LEVEL_UP_MOVE( 1, MOVE_WIDE_GUARD), @@ -16335,7 +19065,9 @@ static const struct LevelUpMove sGuzzlordLevelUpLearnset[] = { LEVEL_UP_MOVE(73, MOVE_DRAGON_RUSH), LEVEL_UP_END }; +#endif //P_FAMILY_GUZZLORD +#if P_FAMILY_NECROZMA static const struct LevelUpMove sNecrozmaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_MOONLIGHT), LEVEL_UP_MOVE( 1, MOVE_MORNING_SUN), @@ -16358,7 +19090,9 @@ static const struct LevelUpMove sNecrozmaLevelUpLearnset[] = { LEVEL_UP_MOVE(73, MOVE_PRISMATIC_LASER), LEVEL_UP_END }; +#endif //P_FAMILY_NECROZMA +#if P_FAMILY_MAGEARNA static const struct LevelUpMove sMagearnaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CRAFTY_SHIELD), LEVEL_UP_MOVE( 1, MOVE_GEAR_UP), @@ -16382,7 +19116,9 @@ static const struct LevelUpMove sMagearnaLevelUpLearnset[] = { LEVEL_UP_MOVE(97, MOVE_TRUMP_CARD), LEVEL_UP_END }; +#endif //P_FAMILY_MAGEARNA +#if P_FAMILY_MARSHADOW static const struct LevelUpMove sMarshadowLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LASER_FOCUS), LEVEL_UP_MOVE( 1, MOVE_ASSURANCE), @@ -16407,7 +19143,9 @@ static const struct LevelUpMove sMarshadowLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_ENDEAVOR), LEVEL_UP_END }; +#endif //P_FAMILY_MARSHADOW +#if P_FAMILY_POIPOLE static const struct LevelUpMove sPoipoleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_DRAGON_PULSE), LEVEL_UP_MOVE( 1, MOVE_PECK), @@ -16445,7 +19183,9 @@ static const struct LevelUpMove sNaganadelLevelUpLearnset[] = { LEVEL_UP_MOVE(61, MOVE_DRAGON_PULSE), LEVEL_UP_END }; +#endif //P_FAMILY_POIPOLE +#if P_FAMILY_STAKATAKA static const struct LevelUpMove sStakatakaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PROTECT), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -16462,7 +19202,9 @@ static const struct LevelUpMove sStakatakaLevelUpLearnset[] = { LEVEL_UP_MOVE(61, MOVE_DOUBLE_EDGE), LEVEL_UP_END }; +#endif //P_FAMILY_STAKATAKA +#if P_FAMILY_BLACEPHALON static const struct LevelUpMove sBlacephalonLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_EMBER), LEVEL_UP_MOVE( 1, MOVE_ASTONISH), @@ -16478,7 +19220,9 @@ static const struct LevelUpMove sBlacephalonLevelUpLearnset[] = { LEVEL_UP_MOVE(59, MOVE_MIND_BLOWN), LEVEL_UP_END }; +#endif //P_FAMILY_BLACEPHALON +#if P_FAMILY_ZERAORA static const struct LevelUpMove sZeraoraLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_SPARK), @@ -16498,7 +19242,9 @@ static const struct LevelUpMove sZeraoraLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_DISCHARGE), LEVEL_UP_END }; +#endif //P_FAMILY_ZERAORA +#if P_FAMILY_MELTAN static const struct LevelUpMove sMeltanLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), LEVEL_UP_MOVE( 1, MOVE_HARDEN), @@ -16529,9 +19275,9 @@ static const struct LevelUpMove sMelmetalLevelUpLearnset[] = { LEVEL_UP_MOVE( 90, MOVE_HYPER_BEAM), LEVEL_UP_END }; -#endif +#endif //P_FAMILY_MELTAN -#if P_GEN_8_POKEMON == TRUE +#if P_FAMILY_GROOKEY static const struct LevelUpMove sGrookeyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SCRATCH), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -16584,7 +19330,9 @@ static const struct LevelUpMove sRillaboomLevelUpLearnset[] = { LEVEL_UP_MOVE(62, MOVE_BOOMBURST), LEVEL_UP_END }; +#endif //P_FAMILY_GROOKEY +#if P_FAMILY_SCORBUNNY static const struct LevelUpMove sScorbunnyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -16633,7 +19381,9 @@ static const struct LevelUpMove sCinderaceLevelUpLearnset[] = { LEVEL_UP_MOVE(62, MOVE_COURT_CHANGE), LEVEL_UP_END }; +#endif //P_FAMILY_SCORBUNNY +#if P_FAMILY_SOBBLE static const struct LevelUpMove sSobbleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POUND), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -16682,7 +19432,9 @@ static const struct LevelUpMove sInteleonLevelUpLearnset[] = { LEVEL_UP_MOVE(62, MOVE_HYDRO_PUMP), LEVEL_UP_END }; +#endif //P_FAMILY_SOBBLE +#if P_FAMILY_SKWOVET static const struct LevelUpMove sSkwovetLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), @@ -16718,7 +19470,9 @@ static const struct LevelUpMove sGreedentLevelUpLearnset[] = { LEVEL_UP_MOVE(55, MOVE_BELCH), LEVEL_UP_END }; +#endif //P_FAMILY_SKWOVET +#if P_FAMILY_ROOKIDEE static const struct LevelUpMove sRookideeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -16767,7 +19521,9 @@ static const struct LevelUpMove sCorviknightLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_BRAVE_BIRD), LEVEL_UP_END }; +#endif //P_FAMILY_ROOKIDEE +#if P_FAMILY_BLIPBUG static const struct LevelUpMove sBlipbugLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_STRUGGLE_BUG), LEVEL_UP_END @@ -16803,7 +19559,9 @@ static const struct LevelUpMove sOrbeetleLevelUpLearnset[] = { LEVEL_UP_MOVE(48, MOVE_PSYCHIC_TERRAIN), LEVEL_UP_END }; +#endif //P_FAMILY_BLIPBUG +#if P_FAMILY_NICKIT static const struct LevelUpMove sNickitLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), @@ -16836,7 +19594,9 @@ static const struct LevelUpMove sThievulLevelUpLearnset[] = { LEVEL_UP_MOVE(52, MOVE_PARTING_SHOT), LEVEL_UP_END }; +#endif //P_FAMILY_NICKIT +#if P_FAMILY_GOSSIFLEUR static const struct LevelUpMove sGossifleurLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEAFAGE), LEVEL_UP_MOVE( 1, MOVE_SING), @@ -16869,7 +19629,9 @@ static const struct LevelUpMove sEldegossLevelUpLearnset[] = { LEVEL_UP_MOVE(52, MOVE_COTTON_GUARD), LEVEL_UP_END }; +#endif //P_FAMILY_GOSSIFLEUR +#if P_FAMILY_WOOLOO static const struct LevelUpMove sWoolooLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -16902,7 +19664,9 @@ static const struct LevelUpMove sDubwoolLevelUpLearnset[] = { LEVEL_UP_MOVE(56, MOVE_LAST_RESORT), LEVEL_UP_END }; +#endif //P_FAMILY_WOOLOO +#if P_FAMILY_CHEWTLE static const struct LevelUpMove sChewtleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), @@ -16934,7 +19698,9 @@ static const struct LevelUpMove sDrednawLevelUpLearnset[] = { LEVEL_UP_MOVE(66, MOVE_HEAD_SMASH), LEVEL_UP_END }; +#endif //P_FAMILY_CHEWTLE +#if P_FAMILY_YAMPER static const struct LevelUpMove sYamperLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), @@ -16966,7 +19732,9 @@ static const struct LevelUpMove sBoltundLevelUpLearnset[] = { LEVEL_UP_MOVE(62, MOVE_ELECTRIC_TERRAIN), LEVEL_UP_END }; +#endif //P_FAMILY_YAMPER +#if P_FAMILY_ROLYCOLY static const struct LevelUpMove sRolycolyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), @@ -17015,7 +19783,9 @@ static const struct LevelUpMove sCoalossalLevelUpLearnset[] = { LEVEL_UP_MOVE(63, MOVE_BURN_UP), LEVEL_UP_END }; +#endif //P_FAMILY_ROLYCOLY +#if P_FAMILY_APPLIN static const struct LevelUpMove sApplinLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), LEVEL_UP_MOVE( 1, MOVE_ASTONISH), @@ -17066,6 +19836,29 @@ static const struct LevelUpMove sAppletunLevelUpLearnset[] = { LEVEL_UP_END }; +#if P_GEN_9_CROSS_EVOS +static const struct LevelUpMove sDipplinLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_RECYCLE), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 4, MOVE_DRAGON_TAIL), + LEVEL_UP_MOVE( 8, MOVE_GROWTH), + LEVEL_UP_MOVE(12, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(16, MOVE_PROTECT), + LEVEL_UP_MOVE(20, MOVE_BULLET_SEED), + LEVEL_UP_MOVE(28, MOVE_SYRUP_BOMB), + LEVEL_UP_MOVE(32, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(36, MOVE_RECOVER), + LEVEL_UP_MOVE(40, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(44, MOVE_SUBSTITUTE), + LEVEL_UP_END +}; +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_APPLIN + +#if P_FAMILY_SILICOBRA static const struct LevelUpMove sSilicobraLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_WRAP), LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), @@ -17098,7 +19891,9 @@ static const struct LevelUpMove sSandacondaLevelUpLearnset[] = { LEVEL_UP_MOVE(51, MOVE_SAND_TOMB), LEVEL_UP_END }; +#endif //P_FAMILY_SILICOBRA +#if P_FAMILY_CRAMORANT static const struct LevelUpMove sCramorantLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BELCH), LEVEL_UP_MOVE( 1, MOVE_PECK), @@ -17115,7 +19910,9 @@ static const struct LevelUpMove sCramorantLevelUpLearnset[] = { LEVEL_UP_MOVE(56, MOVE_HYDRO_PUMP), LEVEL_UP_END }; +#endif //P_FAMILY_CRAMORANT +#if P_FAMILY_ARROKUDA static const struct LevelUpMove sArrokudaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 1, MOVE_AQUA_JET), @@ -17144,7 +19941,9 @@ static const struct LevelUpMove sBarraskewdaLevelUpLearnset[] = { LEVEL_UP_MOVE(56, MOVE_DOUBLE_EDGE), LEVEL_UP_END }; +#endif //P_FAMILY_ARROKUDA +#if P_FAMILY_TOXEL static const struct LevelUpMove sToxelLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_BELCH), LEVEL_UP_MOVE( 1, MOVE_TEARFUL_LOOK), @@ -17155,7 +19954,7 @@ static const struct LevelUpMove sToxelLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sToxtricityLevelUpLearnset[] = { +static const struct LevelUpMove sToxtricityAmpedLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_SPARK), LEVEL_UP_MOVE( 1, MOVE_SPARK), LEVEL_UP_MOVE( 1, MOVE_EERIE_IMPULSE), @@ -17185,6 +19984,38 @@ static const struct LevelUpMove sToxtricityLevelUpLearnset[] = { LEVEL_UP_END }; +static const struct LevelUpMove sToxtricityLowKeyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SPARK), + LEVEL_UP_MOVE( 1, MOVE_SPARK), + LEVEL_UP_MOVE( 1, MOVE_EERIE_IMPULSE), + LEVEL_UP_MOVE( 1, MOVE_BELCH), + LEVEL_UP_MOVE( 1, MOVE_TEARFUL_LOOK), + LEVEL_UP_MOVE( 1, MOVE_NUZZLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FLAIL), + LEVEL_UP_MOVE( 1, MOVE_ACID), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_NOBLE_ROAR), + LEVEL_UP_MOVE( 4, MOVE_CHARGE), + LEVEL_UP_MOVE( 8, MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE(12, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(16, MOVE_TAUNT), + LEVEL_UP_MOVE(20, MOVE_VENOM_DRENCH), + LEVEL_UP_MOVE(24, MOVE_SCREECH), + LEVEL_UP_MOVE(28, MOVE_SWAGGER), + LEVEL_UP_MOVE(32, MOVE_TOXIC), + LEVEL_UP_MOVE(36, MOVE_DISCHARGE), + LEVEL_UP_MOVE(40, MOVE_POISON_JAB), + LEVEL_UP_MOVE(44, MOVE_OVERDRIVE), + LEVEL_UP_MOVE(48, MOVE_BOOMBURST), + LEVEL_UP_MOVE(52, MOVE_MAGNETIC_FLUX), + LEVEL_UP_END +}; +#endif //P_FAMILY_TOXEL + +#if P_FAMILY_SIZZLIPEDE static const struct LevelUpMove sSizzlipedeLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_EMBER), LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), @@ -17219,7 +20050,9 @@ static const struct LevelUpMove sCentiskorchLevelUpLearnset[] = { LEVEL_UP_MOVE(67, MOVE_BURN_UP), LEVEL_UP_END }; +#endif //P_FAMILY_SIZZLIPEDE +#if P_FAMILY_CLOBBOPUS static const struct LevelUpMove sClobbopusLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ROCK_SMASH), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -17253,7 +20086,9 @@ static const struct LevelUpMove sGrapploctLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_TOPSY_TURVY), LEVEL_UP_END }; +#endif //P_FAMILY_CLOBBOPUS +#if P_FAMILY_SINISTEA static const struct LevelUpMove sSinisteaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ASTONISH), LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), @@ -17289,7 +20124,9 @@ static const struct LevelUpMove sPolteageistLevelUpLearnset[] = { LEVEL_UP_MOVE(66, MOVE_CURSE), LEVEL_UP_END }; +#endif //P_FAMILY_SINISTEA +#if P_FAMILY_HATENNA static const struct LevelUpMove sHatennaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_CONFUSION), LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), @@ -17340,7 +20177,9 @@ static const struct LevelUpMove sHattereneLevelUpLearnset[] = { LEVEL_UP_MOVE(64, MOVE_MAGIC_POWDER), LEVEL_UP_END }; +#endif //P_FAMILY_HATENNA +#if P_FAMILY_IMPIDIMP static const struct LevelUpMove sImpidimpLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_FAKE_OUT), LEVEL_UP_MOVE( 1, MOVE_CONFIDE), @@ -17399,152 +20238,9 @@ static const struct LevelUpMove sGrimmsnarlLevelUpLearnset[] = { LEVEL_UP_MOVE(64, MOVE_HAMMER_ARM), LEVEL_UP_END }; +#endif //P_FAMILY_IMPIDIMP -static const struct LevelUpMove sObstagoonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_OBSTRUCT), - LEVEL_UP_MOVE( 1, MOVE_OBSTRUCT), - LEVEL_UP_MOVE( 1, MOVE_CROSS_CHOP), - LEVEL_UP_MOVE( 1, MOVE_SUBMISSION), - LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE( 1, MOVE_SWITCHEROO), - LEVEL_UP_MOVE( 1, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE( 1, MOVE_BABY_DOLL_EYES), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_LICK), - LEVEL_UP_MOVE( 9, MOVE_SNARL), - LEVEL_UP_MOVE(12, MOVE_HEADBUTT), - LEVEL_UP_MOVE(15, MOVE_HONE_CLAWS), - LEVEL_UP_MOVE(18, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(23, MOVE_REST), - LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(35, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(42, MOVE_COUNTER), - LEVEL_UP_MOVE(49, MOVE_TAUNT), - LEVEL_UP_MOVE(56, MOVE_DOUBLE_EDGE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sPerrserkerLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_IRON_HEAD), - LEVEL_UP_MOVE( 1, MOVE_IRON_HEAD), - LEVEL_UP_MOVE( 1, MOVE_METAL_BURST), - LEVEL_UP_MOVE( 1, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE( 1, MOVE_FAKE_OUT), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_HONE_CLAWS), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE(12, MOVE_PAY_DAY), - LEVEL_UP_MOVE(16, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(20, MOVE_TAUNT), - LEVEL_UP_MOVE(24, MOVE_SWAGGER), - LEVEL_UP_MOVE(31, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(36, MOVE_SCREECH), - LEVEL_UP_MOVE(42, MOVE_SLASH), - LEVEL_UP_MOVE(48, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(54, MOVE_THRASH), - LEVEL_UP_END -}; - -static const struct LevelUpMove sCursolaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PERISH_SONG), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_DISABLE), - LEVEL_UP_MOVE(15, MOVE_SPITE), - LEVEL_UP_MOVE(20, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(25, MOVE_HEX), - LEVEL_UP_MOVE(30, MOVE_CURSE), - LEVEL_UP_MOVE(35, MOVE_STRENGTH_SAP), - LEVEL_UP_MOVE(40, MOVE_POWER_GEM), - LEVEL_UP_MOVE(45, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(50, MOVE_GRUDGE), - LEVEL_UP_MOVE(55, MOVE_MIRROR_COAT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSirfetchdLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE( 1, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE( 1, MOVE_FIRST_IMPRESSION), - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(15, MOVE_ROCK_SMASH), - LEVEL_UP_MOVE(20, MOVE_BRUTAL_SWING), - LEVEL_UP_MOVE(25, MOVE_DETECT), - LEVEL_UP_MOVE(30, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(35, MOVE_DEFOG), - LEVEL_UP_MOVE(40, MOVE_BRICK_BREAK), - LEVEL_UP_MOVE(45, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(50, MOVE_SLAM), - LEVEL_UP_MOVE(55, MOVE_LEAF_BLADE), - LEVEL_UP_MOVE(60, MOVE_FINAL_GAMBIT), - LEVEL_UP_MOVE(65, MOVE_BRAVE_BIRD), - LEVEL_UP_MOVE(70, MOVE_METEOR_ASSAULT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMrRimeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FAKE_TEARS), - LEVEL_UP_MOVE( 1, MOVE_SLACK_OFF), - LEVEL_UP_MOVE( 1, MOVE_AFTER_YOU), - LEVEL_UP_MOVE( 1, MOVE_BLOCK), - LEVEL_UP_MOVE( 1, MOVE_COPYCAT), - LEVEL_UP_MOVE( 1, MOVE_ENCORE), - LEVEL_UP_MOVE( 1, MOVE_ROLE_PLAY), - LEVEL_UP_MOVE( 1, MOVE_PROTECT), - LEVEL_UP_MOVE( 1, MOVE_RECYCLE), - LEVEL_UP_MOVE( 1, MOVE_MIMIC), - LEVEL_UP_MOVE( 1, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE( 1, MOVE_REFLECT), - LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), - LEVEL_UP_MOVE( 1, MOVE_DAZZLING_GLEAM), - LEVEL_UP_MOVE( 1, MOVE_MISTY_TERRAIN), - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE( 1, MOVE_BATON_PASS), - LEVEL_UP_MOVE( 1, MOVE_ICE_SHARD), - LEVEL_UP_MOVE(12, MOVE_CONFUSION), - LEVEL_UP_MOVE(16, MOVE_ALLY_SWITCH), - LEVEL_UP_MOVE(20, MOVE_ICY_WIND), - LEVEL_UP_MOVE(24, MOVE_DOUBLE_KICK), - LEVEL_UP_MOVE(28, MOVE_PSYBEAM), - LEVEL_UP_MOVE(32, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(36, MOVE_MIRROR_COAT), - LEVEL_UP_MOVE(40, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(44, MOVE_FREEZE_DRY), - LEVEL_UP_MOVE(48, MOVE_PSYCHIC), - LEVEL_UP_MOVE(52, MOVE_TEETER_DANCE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sRunerigusLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_SHADOW_CLAW), - LEVEL_UP_MOVE( 1, MOVE_SHADOW_CLAW), - LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_PROTECT), - LEVEL_UP_MOVE( 1, MOVE_HAZE), - LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(12, MOVE_DISABLE), - LEVEL_UP_MOVE(16, MOVE_BRUTAL_SWING), - LEVEL_UP_MOVE(20, MOVE_CRAFTY_SHIELD), - LEVEL_UP_MOVE(24, MOVE_HEX), - LEVEL_UP_MOVE(28, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(32, MOVE_SLAM), - LEVEL_UP_MOVE(38, MOVE_CURSE), - LEVEL_UP_MOVE(44, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(50, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(56, MOVE_POWER_SPLIT), - LEVEL_UP_MOVE(56, MOVE_GUARD_SPLIT), - LEVEL_UP_MOVE(62, MOVE_DESTINY_BOND), - LEVEL_UP_END -}; - +#if P_FAMILY_MILCERY static const struct LevelUpMove sMilceryLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_AROMATIC_MIST), @@ -17578,7 +20274,9 @@ static const struct LevelUpMove sAlcremieLevelUpLearnset[] = { LEVEL_UP_MOVE(50, MOVE_ENTRAINMENT), LEVEL_UP_END }; +#endif //P_FAMILY_MILCERY +#if P_FAMILY_FALINKS static const struct LevelUpMove sFalinksLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_PROTECT), @@ -17596,7 +20294,9 @@ static const struct LevelUpMove sFalinksLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_COUNTER), LEVEL_UP_END }; +#endif //P_FAMILY_FALINKS +#if P_FAMILY_PINCURCHIN static const struct LevelUpMove sPincurchinLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_PECK), LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), @@ -17614,7 +20314,9 @@ static const struct LevelUpMove sPincurchinLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_DISCHARGE), LEVEL_UP_END }; +#endif //P_FAMILY_PINCURCHIN +#if P_FAMILY_SNOM static const struct LevelUpMove sSnomLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), LEVEL_UP_MOVE( 1, MOVE_STRUGGLE_BUG), @@ -17643,7 +20345,9 @@ static const struct LevelUpMove sFrosmothLevelUpLearnset[] = { LEVEL_UP_MOVE(52, MOVE_QUIVER_DANCE), LEVEL_UP_END }; +#endif //P_FAMILY_SNOM +#if P_FAMILY_STONJOURNER static const struct LevelUpMove sStonjournerLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), LEVEL_UP_MOVE( 1, MOVE_BLOCK), @@ -17660,7 +20364,9 @@ static const struct LevelUpMove sStonjournerLevelUpLearnset[] = { LEVEL_UP_MOVE(66, MOVE_MEGA_KICK), LEVEL_UP_END }; +#endif //P_FAMILY_STONJOURNER +#if P_FAMILY_EISCUE static const struct LevelUpMove sEiscueLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -17676,8 +20382,10 @@ static const struct LevelUpMove sEiscueLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_BLIZZARD), LEVEL_UP_END }; +#endif //P_FAMILY_EISCUE -static const struct LevelUpMove sIndeedeeLevelUpLearnset[] = { +#if P_FAMILY_INDEEDEE +static const struct LevelUpMove sIndeedeeMaleLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_STORED_POWER), LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), LEVEL_UP_MOVE( 5, MOVE_ENCORE), @@ -17694,6 +20402,25 @@ static const struct LevelUpMove sIndeedeeLevelUpLearnset[] = { LEVEL_UP_END }; +static const struct LevelUpMove sIndeedeeFemaleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_STORED_POWER), + LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), + LEVEL_UP_MOVE( 5, MOVE_BATON_PASS), + LEVEL_UP_MOVE(10, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE(15, MOVE_PSYBEAM), + LEVEL_UP_MOVE(20, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(25, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(30, MOVE_AROMATHERAPY), + LEVEL_UP_MOVE(35, MOVE_PSYCHIC), + LEVEL_UP_MOVE(40, MOVE_CALM_MIND), + LEVEL_UP_MOVE(45, MOVE_GUARD_SPLIT), + LEVEL_UP_MOVE(50, MOVE_PSYCHIC_TERRAIN), + LEVEL_UP_MOVE(55, MOVE_HEALING_WISH), + LEVEL_UP_END +}; +#endif //P_FAMILY_INDEEDEE + +#if P_FAMILY_MORPEKO static const struct LevelUpMove sMorpekoLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), @@ -17711,7 +20438,9 @@ static const struct LevelUpMove sMorpekoLevelUpLearnset[] = { LEVEL_UP_MOVE(60, MOVE_THRASH), LEVEL_UP_END }; +#endif //P_FAMILY_MORPEKO +#if P_FAMILY_CUFANT static const struct LevelUpMove sCufantLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_GROWL), @@ -17747,7 +20476,9 @@ static const struct LevelUpMove sCopperajahLevelUpLearnset[] = { LEVEL_UP_MOVE(65, MOVE_SUPERPOWER), LEVEL_UP_END }; +#endif //P_FAMILY_CUFANT +#if P_FAMILY_DRACOZOLT static const struct LevelUpMove sDracozoltLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), @@ -17764,7 +20495,9 @@ static const struct LevelUpMove sDracozoltLevelUpLearnset[] = { LEVEL_UP_MOVE(77, MOVE_DRAGON_RUSH), LEVEL_UP_END }; +#endif //P_FAMILY_DRACOZOLT +#if P_FAMILY_ARCTOZOLT static const struct LevelUpMove sArctozoltLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), @@ -17781,7 +20514,9 @@ static const struct LevelUpMove sArctozoltLevelUpLearnset[] = { LEVEL_UP_MOVE(77, MOVE_BLIZZARD), LEVEL_UP_END }; +#endif //P_FAMILY_ARCTOZOLT +#if P_FAMILY_DRACOVISH static const struct LevelUpMove sDracovishLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), @@ -17798,7 +20533,9 @@ static const struct LevelUpMove sDracovishLevelUpLearnset[] = { LEVEL_UP_MOVE(77, MOVE_DRAGON_RUSH), LEVEL_UP_END }; +#endif //P_FAMILY_DRACOVISH +#if P_FAMILY_ARCTOVISH static const struct LevelUpMove sArctovishLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), @@ -17815,7 +20552,9 @@ static const struct LevelUpMove sArctovishLevelUpLearnset[] = { LEVEL_UP_MOVE(77, MOVE_BLIZZARD), LEVEL_UP_END }; +#endif //P_FAMILY_ARCTOVISH +#if P_FAMILY_DURALUDON static const struct LevelUpMove sDuraludonLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -17832,7 +20571,9 @@ static const struct LevelUpMove sDuraludonLevelUpLearnset[] = { LEVEL_UP_MOVE(66, MOVE_HYPER_BEAM), LEVEL_UP_END }; +#endif //P_FAMILY_DURALUDON +#if P_FAMILY_DREEPY static const struct LevelUpMove sDreepyLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ASTONISH), LEVEL_UP_MOVE( 1, MOVE_INFESTATION), @@ -17886,7 +20627,9 @@ static const struct LevelUpMove sDragapultLevelUpLearnset[] = { LEVEL_UP_MOVE(78, MOVE_LAST_RESORT), LEVEL_UP_END }; +#endif //P_FAMILY_DREEPY +#if P_FAMILY_ZACIAN static const struct LevelUpMove sZacianLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_SACRED_SWORD), LEVEL_UP_MOVE( 1, MOVE_QUICK_GUARD), @@ -17904,7 +20647,9 @@ static const struct LevelUpMove sZacianLevelUpLearnset[] = { LEVEL_UP_MOVE(88, MOVE_GIGA_IMPACT), LEVEL_UP_END }; +#endif //P_FAMILY_ZACIAN +#if P_FAMILY_ZAMAZENTA static const struct LevelUpMove sZamazentaLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_METAL_BURST), LEVEL_UP_MOVE( 1, MOVE_WIDE_GUARD), @@ -17922,7 +20667,9 @@ static const struct LevelUpMove sZamazentaLevelUpLearnset[] = { LEVEL_UP_MOVE(88, MOVE_GIGA_IMPACT), LEVEL_UP_END }; +#endif //P_FAMILY_ZAMAZENTA +#if P_FAMILY_ETERNATUS static const struct LevelUpMove sEternatusLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_POISON_TAIL), LEVEL_UP_MOVE( 1, MOVE_CONFUSE_RAY), @@ -17941,7 +20688,9 @@ static const struct LevelUpMove sEternatusLevelUpLearnset[] = { LEVEL_UP_MOVE(88, MOVE_ETERNABEAM), LEVEL_UP_END }; +#endif //P_FAMILY_ETERNATUS +#if P_FAMILY_KUBFU static const struct LevelUpMove sKubfuLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ROCK_SMASH), LEVEL_UP_MOVE( 1, MOVE_LEER), @@ -17961,7 +20710,7 @@ static const struct LevelUpMove sKubfuLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sUrshifuLevelUpLearnset[] = { +static const struct LevelUpMove sUrshifuSingleStrikeStyleLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_WICKED_BLOW), LEVEL_UP_MOVE( 1, MOVE_WICKED_BLOW), LEVEL_UP_MOVE( 1, MOVE_SUCKER_PUNCH), @@ -17983,1513 +20732,6 @@ static const struct LevelUpMove sUrshifuLevelUpLearnset[] = { LEVEL_UP_END }; -static const struct LevelUpMove sZarudeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BIND), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 6, MOVE_LEER), - LEVEL_UP_MOVE(12, MOVE_VINE_WHIP), - LEVEL_UP_MOVE(18, MOVE_GROWTH), - LEVEL_UP_MOVE(24, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(30, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(36, MOVE_GRASS_KNOT), - LEVEL_UP_MOVE(42, MOVE_BITE), - LEVEL_UP_MOVE(48, MOVE_U_TURN), - LEVEL_UP_MOVE(54, MOVE_SWAGGER), - LEVEL_UP_MOVE(60, MOVE_ENERGY_BALL), - LEVEL_UP_MOVE(66, MOVE_SYNTHESIS), - LEVEL_UP_MOVE(72, MOVE_HAMMER_ARM), - LEVEL_UP_MOVE(78, MOVE_THRASH), - LEVEL_UP_MOVE(84, MOVE_POWER_WHIP), - LEVEL_UP_MOVE(90, MOVE_JUNGLE_HEALING), - LEVEL_UP_END -}; - -static const struct LevelUpMove sRegielekiLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE( 6, MOVE_ELECTROWEB), - LEVEL_UP_MOVE(12, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(18, MOVE_SHOCK_WAVE), - LEVEL_UP_MOVE(24, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(30, MOVE_EXTREME_SPEED), - LEVEL_UP_MOVE(36, MOVE_THUNDER_CAGE), - LEVEL_UP_MOVE(42, MOVE_THUNDERBOLT), - LEVEL_UP_MOVE(48, MOVE_MAGNET_RISE), - LEVEL_UP_MOVE(54, MOVE_THRASH), - LEVEL_UP_MOVE(60, MOVE_LOCK_ON), - LEVEL_UP_MOVE(66, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE(72, MOVE_HYPER_BEAM), - LEVEL_UP_MOVE(78, MOVE_EXPLOSION), - LEVEL_UP_END -}; - -static const struct LevelUpMove sRegidragoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TWISTER), - LEVEL_UP_MOVE( 1, MOVE_VISE_GRIP), - LEVEL_UP_MOVE( 6, MOVE_BITE), - LEVEL_UP_MOVE(12, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(18, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(24, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(30, MOVE_CRUNCH), - LEVEL_UP_MOVE(36, MOVE_DRAGON_CLAW), - LEVEL_UP_MOVE(42, MOVE_HAMMER_ARM), - LEVEL_UP_MOVE(48, MOVE_DRAGON_DANCE), - LEVEL_UP_MOVE(54, MOVE_THRASH), - LEVEL_UP_MOVE(60, MOVE_LASER_FOCUS), - LEVEL_UP_MOVE(66, MOVE_DRAGON_ENERGY), - LEVEL_UP_MOVE(72, MOVE_HYPER_BEAM), - LEVEL_UP_MOVE(78, MOVE_EXPLOSION), - LEVEL_UP_END -}; - -static const struct LevelUpMove sGlastrierLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 6, MOVE_DOUBLE_KICK), - LEVEL_UP_MOVE(12, MOVE_AVALANCHE), - LEVEL_UP_MOVE(18, MOVE_STOMP), - LEVEL_UP_MOVE(24, MOVE_TORMENT), - LEVEL_UP_MOVE(30, MOVE_MIST), - LEVEL_UP_MOVE(36, MOVE_ICICLE_CRASH), - LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(48, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(54, MOVE_THRASH), - LEVEL_UP_MOVE(60, MOVE_TAUNT), - LEVEL_UP_MOVE(66, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(72, MOVE_SWORDS_DANCE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSpectrierLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 6, MOVE_DOUBLE_KICK), - LEVEL_UP_MOVE(12, MOVE_HEX), - LEVEL_UP_MOVE(18, MOVE_STOMP), - LEVEL_UP_MOVE(24, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(30, MOVE_HAZE), - LEVEL_UP_MOVE(36, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(48, MOVE_AGILITY), - LEVEL_UP_MOVE(54, MOVE_THRASH), - LEVEL_UP_MOVE(60, MOVE_DISABLE), - LEVEL_UP_MOVE(66, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(72, MOVE_NASTY_PLOT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sCalyrexLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_GROWTH), - LEVEL_UP_MOVE( 8, MOVE_LIFE_DEW), - LEVEL_UP_MOVE(16, MOVE_GIGA_DRAIN), - LEVEL_UP_MOVE(24, MOVE_PSYSHOCK), - LEVEL_UP_MOVE(32, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(40, MOVE_AROMATHERAPY), - LEVEL_UP_MOVE(48, MOVE_ENERGY_BALL), - LEVEL_UP_MOVE(56, MOVE_PSYCHIC), - LEVEL_UP_MOVE(64, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(72, MOVE_HEAL_PULSE), - LEVEL_UP_MOVE(80, MOVE_SOLAR_BEAM), - LEVEL_UP_MOVE(88, MOVE_FUTURE_SIGHT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sWyrdeerLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_CONFUSION), - LEVEL_UP_MOVE( 9, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(15, MOVE_CALM_MIND), - LEVEL_UP_MOVE(21, MOVE_PSYSHIELD_BASH), - LEVEL_UP_MOVE(29, MOVE_EXTRASENSORY), - LEVEL_UP_MOVE(37, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sKleavorLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_SILVER_WIND), - LEVEL_UP_MOVE(11, MOVE_AERIAL_ACE), - LEVEL_UP_MOVE(14, MOVE_DOUBLE_HIT), - LEVEL_UP_MOVE(14, MOVE_STEALTH_ROCK), - LEVEL_UP_MOVE(18, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(25, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(29, MOVE_STONE_AXE), - LEVEL_UP_MOVE(34, MOVE_X_SCISSOR), - LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sUrsalunaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 6, MOVE_BABY_DOLL_EYES), - LEVEL_UP_MOVE(11, MOVE_BULLDOZE), - LEVEL_UP_MOVE(18, MOVE_SLASH), - LEVEL_UP_MOVE(25, MOVE_PLAY_ROUGH), - LEVEL_UP_MOVE(34, MOVE_HIGH_HORSEPOWER), - LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(47, MOVE_HEADLONG_RUSH), - LEVEL_UP_END -}; - -static const struct LevelUpMove sBasculegionLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 6, MOVE_AQUA_JET), - LEVEL_UP_MOVE(11, MOVE_BITE), - LEVEL_UP_MOVE(11, MOVE_HEX), - LEVEL_UP_MOVE(18, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(25, MOVE_CRUNCH), - LEVEL_UP_MOVE(25, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(34, MOVE_WAVE_CRASH), - LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSneaslerLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_ROCK_SMASH), - LEVEL_UP_MOVE(11, MOVE_DIRE_CLAW), - LEVEL_UP_MOVE(11, MOVE_SWIFT), - LEVEL_UP_MOVE(18, MOVE_SLASH), - LEVEL_UP_MOVE(25, MOVE_POISON_JAB), - LEVEL_UP_MOVE(34, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sOverqwilLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 5, MOVE_SPIKES), - LEVEL_UP_MOVE( 9, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE(15, MOVE_BARB_BARRAGE), - LEVEL_UP_MOVE(21, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(26, MOVE_DARK_PULSE), - LEVEL_UP_MOVE(29, MOVE_POISON_JAB), - LEVEL_UP_MOVE(37, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(57, MOVE_SELF_DESTRUCT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sEnamorusLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 7, MOVE_BITE), - LEVEL_UP_MOVE(11, MOVE_TWISTER), - LEVEL_UP_MOVE(14, MOVE_DRAINING_KISS), - LEVEL_UP_MOVE(22, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(31, MOVE_EXTRASENSORY), - LEVEL_UP_MOVE(41, MOVE_CRUNCH), - LEVEL_UP_MOVE(47, MOVE_MOONBLAST), - LEVEL_UP_MOVE( 1, MOVE_SPRINGTIDE_STORM), - LEVEL_UP_END -}; -#endif - -static const struct LevelUpMove sRattataAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 4, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(10, MOVE_BITE), - LEVEL_UP_MOVE(13, MOVE_PURSUIT), - LEVEL_UP_MOVE(16, MOVE_HYPER_FANG), - LEVEL_UP_MOVE(19, MOVE_ASSURANCE), - LEVEL_UP_MOVE(22, MOVE_CRUNCH), - LEVEL_UP_MOVE(25, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(28, MOVE_SUPER_FANG), - LEVEL_UP_MOVE(31, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(34, MOVE_ENDEAVOR), - LEVEL_UP_END -}; - -static const struct LevelUpMove sRaticateAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_SCARY_FACE), - LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), - LEVEL_UP_MOVE( 1, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 4, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(10, MOVE_BITE), - LEVEL_UP_MOVE(13, MOVE_PURSUIT), - LEVEL_UP_MOVE(16, MOVE_HYPER_FANG), - LEVEL_UP_MOVE(19, MOVE_ASSURANCE), - LEVEL_UP_MOVE(24, MOVE_CRUNCH), - LEVEL_UP_MOVE(29, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(34, MOVE_SUPER_FANG), - LEVEL_UP_MOVE(39, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(44, MOVE_ENDEAVOR), - LEVEL_UP_END -}; - -static const struct LevelUpMove sRaichuAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_PSYCHIC), - LEVEL_UP_MOVE( 1, MOVE_PSYCHIC), - LEVEL_UP_MOVE( 1, MOVE_SPEED_SWAP), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_THUNDERBOLT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSandshrewAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 3, MOVE_BIDE), - LEVEL_UP_MOVE( 5, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 7, MOVE_ICE_BALL), - LEVEL_UP_MOVE( 9, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE(11, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(14, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(17, MOVE_SWIFT), - LEVEL_UP_MOVE(20, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(23, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(26, MOVE_SLASH), - LEVEL_UP_MOVE(30, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(34, MOVE_GYRO_BALL), - LEVEL_UP_MOVE(38, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(42, MOVE_HAIL), - LEVEL_UP_MOVE(46, MOVE_BLIZZARD), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSandslashAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_ICICLE_SPEAR), - LEVEL_UP_MOVE( 1, MOVE_ICICLE_SPEAR), - LEVEL_UP_MOVE( 1, MOVE_METAL_BURST), - LEVEL_UP_MOVE( 1, MOVE_ICICLE_CRASH), - LEVEL_UP_MOVE( 1, MOVE_SLASH), - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 1, MOVE_ICE_BALL), - LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), - LEVEL_UP_END -}; - -static const struct LevelUpMove sVulpixAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 7, MOVE_ROAR), - LEVEL_UP_MOVE( 9, MOVE_BABY_DOLL_EYES), - LEVEL_UP_MOVE(10, MOVE_ICE_SHARD), - LEVEL_UP_MOVE(12, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(15, MOVE_ICY_WIND), - LEVEL_UP_MOVE(18, MOVE_PAYBACK), - LEVEL_UP_MOVE(20, MOVE_MIST), - LEVEL_UP_MOVE(23, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(26, MOVE_HEX), - LEVEL_UP_MOVE(28, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE(31, MOVE_EXTRASENSORY), - LEVEL_UP_MOVE(34, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(36, MOVE_ICE_BEAM), - LEVEL_UP_MOVE(39, MOVE_IMPRISON), - LEVEL_UP_MOVE(42, MOVE_BLIZZARD), - LEVEL_UP_MOVE(44, MOVE_GRUDGE), - LEVEL_UP_MOVE(47, MOVE_CAPTIVATE), - LEVEL_UP_MOVE(50, MOVE_SHEER_COLD), - LEVEL_UP_END -}; - -static const struct LevelUpMove sNinetalesAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_DAZZLING_GLEAM), - LEVEL_UP_MOVE( 1, MOVE_DAZZLING_GLEAM), - LEVEL_UP_MOVE( 1, MOVE_IMPRISON), - LEVEL_UP_MOVE( 1, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE( 1, MOVE_ICE_BEAM), - LEVEL_UP_MOVE( 1, MOVE_ICE_SHARD), - LEVEL_UP_MOVE( 1, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), - LEVEL_UP_END -}; - -static const struct LevelUpMove sDiglettAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), - LEVEL_UP_MOVE( 4, MOVE_GROWL), - LEVEL_UP_MOVE( 7, MOVE_ASTONISH), - LEVEL_UP_MOVE(10, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(14, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(18, MOVE_BULLDOZE), - LEVEL_UP_MOVE(22, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(25, MOVE_MUD_BOMB), - LEVEL_UP_MOVE(28, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(31, MOVE_DIG), - LEVEL_UP_MOVE(35, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(39, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(43, MOVE_FISSURE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sDugtrioAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_SAND_TOMB), - LEVEL_UP_MOVE( 1, MOVE_SAND_TOMB), - LEVEL_UP_MOVE( 1, MOVE_ROTOTILLER), - LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE( 1, MOVE_TRI_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 4, MOVE_GROWL), - LEVEL_UP_MOVE( 7, MOVE_ASTONISH), - LEVEL_UP_MOVE(10, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(14, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(18, MOVE_BULLDOZE), - LEVEL_UP_MOVE(22, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(25, MOVE_MUD_BOMB), - LEVEL_UP_MOVE(30, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(35, MOVE_DIG), - LEVEL_UP_MOVE(41, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(47, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(53, MOVE_FISSURE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMeowthAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 6, MOVE_BITE), - LEVEL_UP_MOVE( 9, MOVE_FAKE_OUT), - LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(17, MOVE_SCREECH), - LEVEL_UP_MOVE(22, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(25, MOVE_TAUNT), - LEVEL_UP_MOVE(30, MOVE_PAY_DAY), - LEVEL_UP_MOVE(33, MOVE_SLASH), - LEVEL_UP_MOVE(38, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE(41, MOVE_ASSURANCE), - LEVEL_UP_MOVE(46, MOVE_CAPTIVATE), - LEVEL_UP_MOVE(49, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE(50, MOVE_FEINT), - LEVEL_UP_MOVE(55, MOVE_DARK_PULSE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sPersianAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_SWIFT), - LEVEL_UP_MOVE( 1, MOVE_SWIFT), - LEVEL_UP_MOVE( 1, MOVE_QUASH), - LEVEL_UP_MOVE( 1, MOVE_PLAY_ROUGH), - LEVEL_UP_MOVE( 1, MOVE_SWITCHEROO), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_FAKE_OUT), - LEVEL_UP_MOVE( 6, MOVE_BITE), - LEVEL_UP_MOVE( 9, MOVE_FAKE_OUT), - LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(17, MOVE_SCREECH), - LEVEL_UP_MOVE(22, MOVE_FEINT_ATTACK), - LEVEL_UP_MOVE(25, MOVE_TAUNT), - LEVEL_UP_MOVE(32, MOVE_POWER_GEM), - LEVEL_UP_MOVE(37, MOVE_SLASH), - LEVEL_UP_MOVE(44, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE(49, MOVE_ASSURANCE), - LEVEL_UP_MOVE(56, MOVE_CAPTIVATE), - LEVEL_UP_MOVE(61, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE(65, MOVE_FEINT), - LEVEL_UP_MOVE(69, MOVE_DARK_PULSE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sGeodudeAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 4, MOVE_CHARGE), - LEVEL_UP_MOVE( 6, MOVE_ROCK_POLISH), - LEVEL_UP_MOVE(10, MOVE_ROLLOUT), - LEVEL_UP_MOVE(12, MOVE_SPARK), - LEVEL_UP_MOVE(16, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(18, MOVE_SMACK_DOWN), - LEVEL_UP_MOVE(22, MOVE_THUNDER_PUNCH), - LEVEL_UP_MOVE(24, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(28, MOVE_STEALTH_ROCK), - LEVEL_UP_MOVE(30, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(34, MOVE_DISCHARGE), - LEVEL_UP_MOVE(36, MOVE_EXPLOSION), - LEVEL_UP_MOVE(40, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(42, MOVE_STONE_EDGE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sGravelerAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 1, MOVE_CHARGE), - LEVEL_UP_MOVE( 1, MOVE_ROCK_POLISH), - LEVEL_UP_MOVE( 4, MOVE_CHARGE), - LEVEL_UP_MOVE( 6, MOVE_ROCK_POLISH), - LEVEL_UP_MOVE(10, MOVE_ROLLOUT), - LEVEL_UP_MOVE(12, MOVE_SPARK), - LEVEL_UP_MOVE(16, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(18, MOVE_SMACK_DOWN), - LEVEL_UP_MOVE(22, MOVE_THUNDER_PUNCH), - LEVEL_UP_MOVE(24, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(30, MOVE_STEALTH_ROCK), - LEVEL_UP_MOVE(34, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(40, MOVE_DISCHARGE), - LEVEL_UP_MOVE(44, MOVE_EXPLOSION), - LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(54, MOVE_STONE_EDGE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sGolemAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HEAVY_SLAM), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 1, MOVE_CHARGE), - LEVEL_UP_MOVE( 1, MOVE_ROCK_POLISH), - LEVEL_UP_MOVE( 4, MOVE_CHARGE), - LEVEL_UP_MOVE( 6, MOVE_ROCK_POLISH), - LEVEL_UP_MOVE(10, MOVE_STEAMROLLER), - LEVEL_UP_MOVE(12, MOVE_SPARK), - LEVEL_UP_MOVE(16, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(18, MOVE_SMACK_DOWN), - LEVEL_UP_MOVE(22, MOVE_THUNDER_PUNCH), - LEVEL_UP_MOVE(24, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(30, MOVE_STEALTH_ROCK), - LEVEL_UP_MOVE(34, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(40, MOVE_DISCHARGE), - LEVEL_UP_MOVE(44, MOVE_EXPLOSION), - LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(54, MOVE_STONE_EDGE), - LEVEL_UP_MOVE(60, MOVE_HEAVY_SLAM), - LEVEL_UP_END -}; - -static const struct LevelUpMove sGrimerAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), - LEVEL_UP_MOVE( 4, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_BITE), - LEVEL_UP_MOVE(12, MOVE_DISABLE), - LEVEL_UP_MOVE(15, MOVE_ACID_SPRAY), - LEVEL_UP_MOVE(18, MOVE_POISON_FANG), - LEVEL_UP_MOVE(21, MOVE_MINIMIZE), - LEVEL_UP_MOVE(26, MOVE_FLING), - LEVEL_UP_MOVE(29, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(32, MOVE_CRUNCH), - LEVEL_UP_MOVE(37, MOVE_SCREECH), - LEVEL_UP_MOVE(40, MOVE_GUNK_SHOT), - LEVEL_UP_MOVE(43, MOVE_ACID_ARMOR), - LEVEL_UP_MOVE(46, MOVE_BELCH), - LEVEL_UP_MOVE(48, MOVE_MEMENTO), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMukAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_VENOM_DRENCH), - LEVEL_UP_MOVE( 1, MOVE_VENOM_DRENCH), - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 4, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_BITE), - LEVEL_UP_MOVE(12, MOVE_DISABLE), - LEVEL_UP_MOVE(15, MOVE_ACID_SPRAY), - LEVEL_UP_MOVE(18, MOVE_POISON_FANG), - LEVEL_UP_MOVE(21, MOVE_MINIMIZE), - LEVEL_UP_MOVE(26, MOVE_FLING), - LEVEL_UP_MOVE(29, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(32, MOVE_CRUNCH), - LEVEL_UP_MOVE(37, MOVE_SCREECH), - LEVEL_UP_MOVE(40, MOVE_GUNK_SHOT), - LEVEL_UP_MOVE(46, MOVE_ACID_ARMOR), - LEVEL_UP_MOVE(52, MOVE_BELCH), - LEVEL_UP_MOVE(57, MOVE_MEMENTO), - LEVEL_UP_END -}; - -static const struct LevelUpMove sExeggutorAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_DRAGON_HAMMER), - LEVEL_UP_MOVE( 1, MOVE_DRAGON_HAMMER), - LEVEL_UP_MOVE( 1, MOVE_SEED_BOMB), - LEVEL_UP_MOVE( 1, MOVE_BARRAGE), - LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE(17, MOVE_PSYSHOCK), - LEVEL_UP_MOVE(27, MOVE_EGG_BOMB), - LEVEL_UP_MOVE(37, MOVE_WOOD_HAMMER), - LEVEL_UP_MOVE(47, MOVE_LEAF_STORM), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMarowakAlolanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_BONE_CLUB), - LEVEL_UP_MOVE( 1, MOVE_FLAME_WHEEL), - LEVEL_UP_MOVE( 3, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 7, MOVE_BONE_CLUB), - LEVEL_UP_MOVE(11, MOVE_FLAME_WHEEL), - LEVEL_UP_MOVE(13, MOVE_LEER), - LEVEL_UP_MOVE(17, MOVE_HEX), - LEVEL_UP_MOVE(21, MOVE_BONEMERANG), - LEVEL_UP_MOVE(23, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(27, MOVE_SHADOW_BONE), - LEVEL_UP_MOVE(33, MOVE_THRASH), - LEVEL_UP_MOVE(37, MOVE_FLING), - LEVEL_UP_MOVE(43, MOVE_STOMPING_TANTRUM), - LEVEL_UP_MOVE(49, MOVE_ENDEAVOR), - LEVEL_UP_MOVE(53, MOVE_FLARE_BLITZ), - LEVEL_UP_MOVE(59, MOVE_RETALIATE), - LEVEL_UP_MOVE(65, MOVE_BONE_RUSH), - LEVEL_UP_END -}; - - -static const struct LevelUpMove sMeowthGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FAKE_OUT), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 4, MOVE_HONE_CLAWS), - LEVEL_UP_MOVE( 8, MOVE_SCRATCH), - LEVEL_UP_MOVE(12, MOVE_PAY_DAY), - LEVEL_UP_MOVE(16, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(20, MOVE_TAUNT), - LEVEL_UP_MOVE(24, MOVE_SWAGGER), - LEVEL_UP_MOVE(29, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(32, MOVE_SCREECH), - LEVEL_UP_MOVE(36, MOVE_SLASH), - LEVEL_UP_MOVE(40, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(44, MOVE_THRASH), - LEVEL_UP_END -}; - -static const struct LevelUpMove sPonytaGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(10, MOVE_CONFUSION), - LEVEL_UP_MOVE(15, MOVE_FAIRY_WIND), - LEVEL_UP_MOVE(20, MOVE_AGILITY), - LEVEL_UP_MOVE(25, MOVE_PSYBEAM), - LEVEL_UP_MOVE(30, MOVE_STOMP), - LEVEL_UP_MOVE(35, MOVE_HEAL_PULSE), - LEVEL_UP_MOVE(41, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(45, MOVE_DAZZLING_GLEAM), - LEVEL_UP_MOVE(50, MOVE_PSYCHIC), - LEVEL_UP_MOVE(55, MOVE_HEALING_WISH), - LEVEL_UP_END -}; - -static const struct LevelUpMove sRapidashGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_PSYCHO_CUT), - LEVEL_UP_MOVE( 1, MOVE_PSYCHO_CUT), - LEVEL_UP_MOVE( 1, MOVE_MEGAHORN), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE(15, MOVE_FAIRY_WIND), - LEVEL_UP_MOVE(20, MOVE_AGILITY), - LEVEL_UP_MOVE(25, MOVE_PSYBEAM), - LEVEL_UP_MOVE(30, MOVE_STOMP), - LEVEL_UP_MOVE(35, MOVE_HEAL_PULSE), - LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(49, MOVE_DAZZLING_GLEAM), - LEVEL_UP_MOVE(56, MOVE_PSYCHIC), - LEVEL_UP_MOVE(63, MOVE_HEALING_WISH), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSlowpokeGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_CURSE), - LEVEL_UP_MOVE( 3, MOVE_GROWL), - LEVEL_UP_MOVE( 6, MOVE_ACID), - LEVEL_UP_MOVE( 9, MOVE_YAWN), - LEVEL_UP_MOVE(12, MOVE_CONFUSION), - LEVEL_UP_MOVE(15, MOVE_DISABLE), - LEVEL_UP_MOVE(18, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(21, MOVE_HEADBUTT), - LEVEL_UP_MOVE(24, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(27, MOVE_AMNESIA), - LEVEL_UP_MOVE(30, MOVE_SURF), - LEVEL_UP_MOVE(33, MOVE_SLACK_OFF), - LEVEL_UP_MOVE(36, MOVE_PSYCHIC), - LEVEL_UP_MOVE(39, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(42, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(45, MOVE_HEAL_PULSE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSlowbroGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_SHELL_SIDE_ARM), - LEVEL_UP_MOVE( 1, MOVE_SHELL_SIDE_ARM), - LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_CURSE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_ACID), - LEVEL_UP_MOVE( 9, MOVE_YAWN), - LEVEL_UP_MOVE(12, MOVE_CONFUSION), - LEVEL_UP_MOVE(15, MOVE_DISABLE), - LEVEL_UP_MOVE(18, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(21, MOVE_HEADBUTT), - LEVEL_UP_MOVE(24, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(27, MOVE_AMNESIA), - LEVEL_UP_MOVE(30, MOVE_SURF), - LEVEL_UP_MOVE(33, MOVE_SLACK_OFF), - LEVEL_UP_MOVE(36, MOVE_PSYCHIC), - LEVEL_UP_MOVE(39, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(42, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(45, MOVE_HEAL_PULSE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sFarfetchdGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 5, MOVE_LEER), - LEVEL_UP_MOVE(10, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(15, MOVE_ROCK_SMASH), - LEVEL_UP_MOVE(20, MOVE_BRUTAL_SWING), - LEVEL_UP_MOVE(25, MOVE_DETECT), - LEVEL_UP_MOVE(30, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(35, MOVE_DEFOG), - LEVEL_UP_MOVE(40, MOVE_BRICK_BREAK), - LEVEL_UP_MOVE(45, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(50, MOVE_SLAM), - LEVEL_UP_MOVE(55, MOVE_LEAF_BLADE), - LEVEL_UP_MOVE(60, MOVE_FINAL_GAMBIT), - LEVEL_UP_MOVE(65, MOVE_BRAVE_BIRD), - LEVEL_UP_END -}; - -static const struct LevelUpMove sWeezingGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_DOUBLE_HIT), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_HIT), - LEVEL_UP_MOVE( 1, MOVE_STRANGE_STEAM), - LEVEL_UP_MOVE( 1, MOVE_DEFOG), - LEVEL_UP_MOVE( 1, MOVE_HEAT_WAVE), - LEVEL_UP_MOVE( 1, MOVE_SMOG), - LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE( 1, MOVE_HAZE), - LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_FAIRY_WIND), - LEVEL_UP_MOVE( 1, MOVE_AROMATIC_MIST), - LEVEL_UP_MOVE(12, MOVE_CLEAR_SMOG), - LEVEL_UP_MOVE(16, MOVE_ASSURANCE), - LEVEL_UP_MOVE(20, MOVE_SLUDGE), - LEVEL_UP_MOVE(24, MOVE_AROMATHERAPY), - LEVEL_UP_MOVE(28, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(32, MOVE_SLUDGE_BOMB), - LEVEL_UP_MOVE(38, MOVE_TOXIC), - LEVEL_UP_MOVE(44, MOVE_BELCH), - LEVEL_UP_MOVE(50, MOVE_EXPLOSION), - LEVEL_UP_MOVE(56, MOVE_MEMENTO), - LEVEL_UP_MOVE(62, MOVE_DESTINY_BOND), - LEVEL_UP_MOVE(68, MOVE_MISTY_TERRAIN), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMrMimeGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_COPYCAT), - LEVEL_UP_MOVE( 1, MOVE_ENCORE), - LEVEL_UP_MOVE( 1, MOVE_ROLE_PLAY), - LEVEL_UP_MOVE( 1, MOVE_PROTECT), - LEVEL_UP_MOVE( 1, MOVE_RECYCLE), - LEVEL_UP_MOVE( 1, MOVE_MIMIC), - LEVEL_UP_MOVE( 1, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE( 1, MOVE_REFLECT), - LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), - LEVEL_UP_MOVE( 1, MOVE_DAZZLING_GLEAM), - LEVEL_UP_MOVE( 1, MOVE_MISTY_TERRAIN), - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE( 1, MOVE_BATON_PASS), - LEVEL_UP_MOVE( 1, MOVE_ICE_SHARD), - LEVEL_UP_MOVE(12, MOVE_CONFUSION), - LEVEL_UP_MOVE(16, MOVE_ALLY_SWITCH), - LEVEL_UP_MOVE(20, MOVE_ICY_WIND), - LEVEL_UP_MOVE(24, MOVE_DOUBLE_KICK), - LEVEL_UP_MOVE(28, MOVE_PSYBEAM), - LEVEL_UP_MOVE(32, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(36, MOVE_MIRROR_COAT), - LEVEL_UP_MOVE(40, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(44, MOVE_FREEZE_DRY), - LEVEL_UP_MOVE(48, MOVE_PSYCHIC), - LEVEL_UP_MOVE(52, MOVE_TEETER_DANCE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sArticunoGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GUST), - LEVEL_UP_MOVE( 1, MOVE_PSYCHO_SHIFT), - LEVEL_UP_MOVE( 5, MOVE_CONFUSION), - LEVEL_UP_MOVE(10, MOVE_REFLECT), - LEVEL_UP_MOVE(15, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(20, MOVE_AGILITY), - LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(30, MOVE_TAILWIND), - LEVEL_UP_MOVE(35, MOVE_PSYCHO_CUT), - LEVEL_UP_MOVE(40, MOVE_RECOVER), - LEVEL_UP_MOVE(45, MOVE_FREEZING_GLARE), - LEVEL_UP_MOVE(50, MOVE_DREAM_EATER), - LEVEL_UP_MOVE(55, MOVE_HURRICANE), - LEVEL_UP_MOVE(60, MOVE_MIND_READER), - LEVEL_UP_MOVE(65, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(70, MOVE_TRICK_ROOM), - LEVEL_UP_END -}; - -static const struct LevelUpMove sZapdosGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 5, MOVE_ROCK_SMASH), - LEVEL_UP_MOVE(10, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(15, MOVE_PLUCK), - LEVEL_UP_MOVE(20, MOVE_AGILITY), - LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(30, MOVE_BRICK_BREAK), - LEVEL_UP_MOVE(35, MOVE_DRILL_PECK), - LEVEL_UP_MOVE(40, MOVE_QUICK_GUARD), - LEVEL_UP_MOVE(45, MOVE_THUNDEROUS_KICK), - LEVEL_UP_MOVE(50, MOVE_BULK_UP), - LEVEL_UP_MOVE(55, MOVE_COUNTER), - LEVEL_UP_MOVE(60, MOVE_DETECT), - LEVEL_UP_MOVE(65, MOVE_CLOSE_COMBAT), - LEVEL_UP_MOVE(70, MOVE_REVERSAL), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMoltresGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GUST), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 5, MOVE_PAYBACK), - LEVEL_UP_MOVE(10, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(15, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(20, MOVE_AGILITY), - LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(30, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(35, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(40, MOVE_AFTER_YOU), - LEVEL_UP_MOVE(45, MOVE_FIERY_WRATH), - LEVEL_UP_MOVE(50, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE(55, MOVE_HURRICANE), - LEVEL_UP_MOVE(60, MOVE_ENDURE), - LEVEL_UP_MOVE(65, MOVE_MEMENTO), - LEVEL_UP_MOVE(70, MOVE_SKY_ATTACK), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSlowkingGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_EERIE_SPELL), - LEVEL_UP_MOVE( 1, MOVE_EERIE_SPELL), - LEVEL_UP_MOVE( 1, MOVE_POWER_GEM), - LEVEL_UP_MOVE( 1, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE( 1, MOVE_SWAGGER), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_CURSE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_ACID), - LEVEL_UP_MOVE( 9, MOVE_YAWN), - LEVEL_UP_MOVE(12, MOVE_CONFUSION), - LEVEL_UP_MOVE(15, MOVE_DISABLE), - LEVEL_UP_MOVE(18, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(21, MOVE_HEADBUTT), - LEVEL_UP_MOVE(24, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(27, MOVE_AMNESIA), - LEVEL_UP_MOVE(30, MOVE_SURF), - LEVEL_UP_MOVE(33, MOVE_SLACK_OFF), - LEVEL_UP_MOVE(36, MOVE_PSYCHIC), - LEVEL_UP_MOVE(39, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(42, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(45, MOVE_HEAL_PULSE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sCorsolaGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 5, MOVE_ASTONISH), - LEVEL_UP_MOVE(10, MOVE_DISABLE), - LEVEL_UP_MOVE(15, MOVE_SPITE), - LEVEL_UP_MOVE(20, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(25, MOVE_HEX), - LEVEL_UP_MOVE(30, MOVE_CURSE), - LEVEL_UP_MOVE(35, MOVE_STRENGTH_SAP), - LEVEL_UP_MOVE(40, MOVE_POWER_GEM), - LEVEL_UP_MOVE(45, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(50, MOVE_GRUDGE), - LEVEL_UP_MOVE(55, MOVE_MIRROR_COAT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sZigzagoonGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 3, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_LICK), - LEVEL_UP_MOVE( 9, MOVE_SNARL), - LEVEL_UP_MOVE(12, MOVE_HEADBUTT), - LEVEL_UP_MOVE(15, MOVE_BABY_DOLL_EYES), - LEVEL_UP_MOVE(18, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE(21, MOVE_REST), - LEVEL_UP_MOVE(24, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(27, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(30, MOVE_COUNTER), - LEVEL_UP_MOVE(33, MOVE_TAUNT), - LEVEL_UP_MOVE(36, MOVE_DOUBLE_EDGE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sLinooneGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE( 1, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE( 1, MOVE_SWITCHEROO), - LEVEL_UP_MOVE( 1, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE( 1, MOVE_BABY_DOLL_EYES), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_LICK), - LEVEL_UP_MOVE( 9, MOVE_SNARL), - LEVEL_UP_MOVE(12, MOVE_HEADBUTT), - LEVEL_UP_MOVE(15, MOVE_HONE_CLAWS), - LEVEL_UP_MOVE(18, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(23, MOVE_REST), - LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(33, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(38, MOVE_COUNTER), - LEVEL_UP_MOVE(43, MOVE_TAUNT), - LEVEL_UP_MOVE(48, MOVE_DOUBLE_EDGE), - LEVEL_UP_END -}; - -#if P_GEN_5_POKEMON == TRUE -static const struct LevelUpMove sDarumakaGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 4, MOVE_TAUNT), - LEVEL_UP_MOVE( 8, MOVE_BITE), - LEVEL_UP_MOVE(12, MOVE_AVALANCHE), - LEVEL_UP_MOVE(16, MOVE_WORK_UP), - LEVEL_UP_MOVE(20, MOVE_ICE_FANG), - LEVEL_UP_MOVE(24, MOVE_HEADBUTT), - LEVEL_UP_MOVE(28, MOVE_ICE_PUNCH), - LEVEL_UP_MOVE(32, MOVE_UPROAR), - LEVEL_UP_MOVE(36, MOVE_BELLY_DRUM), - LEVEL_UP_MOVE(40, MOVE_BLIZZARD), - LEVEL_UP_MOVE(44, MOVE_THRASH), - LEVEL_UP_MOVE(48, MOVE_SUPERPOWER), - LEVEL_UP_END -}; - -static const struct LevelUpMove sDarmanitanGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_ICICLE_CRASH), - LEVEL_UP_MOVE( 1, MOVE_ICICLE_CRASH), - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAUNT), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE(12, MOVE_AVALANCHE), - LEVEL_UP_MOVE(16, MOVE_WORK_UP), - LEVEL_UP_MOVE(20, MOVE_ICE_FANG), - LEVEL_UP_MOVE(24, MOVE_HEADBUTT), - LEVEL_UP_MOVE(28, MOVE_ICE_PUNCH), - LEVEL_UP_MOVE(32, MOVE_UPROAR), - LEVEL_UP_MOVE(38, MOVE_BELLY_DRUM), - LEVEL_UP_MOVE(44, MOVE_BLIZZARD), - LEVEL_UP_MOVE(50, MOVE_THRASH), - LEVEL_UP_MOVE(56, MOVE_SUPERPOWER), - LEVEL_UP_END -}; - -static const struct LevelUpMove sYamaskGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_PROTECT), - LEVEL_UP_MOVE( 4, MOVE_HAZE), - LEVEL_UP_MOVE( 8, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(12, MOVE_DISABLE), - LEVEL_UP_MOVE(16, MOVE_BRUTAL_SWING), - LEVEL_UP_MOVE(20, MOVE_CRAFTY_SHIELD), - LEVEL_UP_MOVE(24, MOVE_HEX), - LEVEL_UP_MOVE(28, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(32, MOVE_SLAM), - LEVEL_UP_MOVE(36, MOVE_CURSE), - LEVEL_UP_MOVE(40, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(44, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(48, MOVE_POWER_SPLIT), - LEVEL_UP_MOVE(48, MOVE_GUARD_SPLIT), - LEVEL_UP_MOVE(52, MOVE_DESTINY_BOND), - LEVEL_UP_END -}; - -static const struct LevelUpMove sStunfiskGalarianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), - LEVEL_UP_MOVE( 5, MOVE_ENDURE), - LEVEL_UP_MOVE(10, MOVE_MUD_SHOT), - LEVEL_UP_MOVE(15, MOVE_REVENGE), - LEVEL_UP_MOVE(20, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(25, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(30, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(35, MOVE_BOUNCE), - LEVEL_UP_MOVE(40, MOVE_MUDDY_WATER), - LEVEL_UP_MOVE(45, MOVE_SNAP_TRAP), - LEVEL_UP_MOVE(50, MOVE_FLAIL), - LEVEL_UP_MOVE(55, MOVE_FISSURE), - LEVEL_UP_END -}; -#endif - -static const struct LevelUpMove sGrowlitheHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_EMBER), - LEVEL_UP_MOVE( 9, MOVE_BITE), - LEVEL_UP_MOVE(15, MOVE_FIRE_FANG), - LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(29, MOVE_CRUNCH), - LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(47, MOVE_FLARE_BLITZ), - LEVEL_UP_END -}; - -static const struct LevelUpMove sArcanineHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_EMBER), - LEVEL_UP_MOVE( 9, MOVE_BITE), - LEVEL_UP_MOVE(15, MOVE_FIRE_FANG), - LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(29, MOVE_CRUNCH), - LEVEL_UP_MOVE(29, MOVE_RAGING_FURY), - LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(47, MOVE_FLARE_BLITZ), - LEVEL_UP_END -}; - -static const struct LevelUpMove sVoltorbHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 5, MOVE_TACKLE), - LEVEL_UP_MOVE( 9, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(15, MOVE_SPARK), - LEVEL_UP_MOVE(21, MOVE_ENERGY_BALL), - LEVEL_UP_MOVE(29, MOVE_THUNDERBOLT), - LEVEL_UP_MOVE(37, MOVE_THUNDER), - LEVEL_UP_MOVE(47, MOVE_SELF_DESTRUCT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sElectrodeHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 5, MOVE_TACKLE), - LEVEL_UP_MOVE( 9, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(15, MOVE_SPARK), - LEVEL_UP_MOVE(21, MOVE_ENERGY_BALL), - LEVEL_UP_MOVE(29, MOVE_THUNDERBOLT), - LEVEL_UP_MOVE(37, MOVE_THUNDER), - LEVEL_UP_MOVE(47, MOVE_CHLOROBLAST), - LEVEL_UP_MOVE(47, MOVE_SELF_DESTRUCT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sTyphlosionHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_HEX), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_EMBER), - LEVEL_UP_MOVE(11, MOVE_ROLLOUT), - LEVEL_UP_MOVE(18, MOVE_FLAME_WHEEL), - LEVEL_UP_MOVE(25, MOVE_SWIFT), - LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(40, MOVE_INFERNAL_PARADE), - LEVEL_UP_MOVE(43, MOVE_OVERHEAT), - LEVEL_UP_MOVE(43, MOVE_SHADOW_BALL), - LEVEL_UP_END -}; - -static const struct LevelUpMove sQwilfishHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 5, MOVE_SPIKES), - LEVEL_UP_MOVE( 9, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE(15, MOVE_BARB_BARRAGE), - LEVEL_UP_MOVE(21, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(26, MOVE_DARK_PULSE), - LEVEL_UP_MOVE(29, MOVE_POISON_JAB), - LEVEL_UP_MOVE(37, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(57, MOVE_SELF_DESTRUCT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sSneaselHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_ROCK_SMASH), - LEVEL_UP_MOVE(11, MOVE_SWIFT), - LEVEL_UP_MOVE(18, MOVE_SLASH), - LEVEL_UP_MOVE(25, MOVE_POISON_JAB), - LEVEL_UP_MOVE(34, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT), - LEVEL_UP_END -}; - -#if P_GEN_5_POKEMON == TRUE -static const struct LevelUpMove sSamurottHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_NIGHT_SLASH), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 6, MOVE_AQUA_JET), - LEVEL_UP_MOVE(11, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(18, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(21, MOVE_CEASELESS_EDGE), - LEVEL_UP_MOVE(25, MOVE_SLASH), - LEVEL_UP_MOVE(34, MOVE_AQUA_TAIL), - LEVEL_UP_MOVE(40, MOVE_DARK_PULSE), - LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), - LEVEL_UP_END -}; - -static const struct LevelUpMove sLilligantHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_ROCK_SMASH), - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 5, MOVE_LEAFAGE), - LEVEL_UP_MOVE( 9, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(21, MOVE_ENERGY_BALL), - LEVEL_UP_MOVE(29, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(34, MOVE_DRAIN_PUNCH), - LEVEL_UP_MOVE(37, MOVE_LEAF_BLADE), - LEVEL_UP_MOVE(37, MOVE_RECOVER), - LEVEL_UP_MOVE(42, MOVE_VICTORY_DANCE), - LEVEL_UP_MOVE(47, MOVE_LEAF_STORM), - LEVEL_UP_MOVE(53, MOVE_PETAL_DANCE), - LEVEL_UP_MOVE(57, MOVE_CLOSE_COMBAT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sZoruaHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE( 6, MOVE_SNARL), - LEVEL_UP_MOVE(11, MOVE_SWIFT), - LEVEL_UP_MOVE(18, MOVE_BITTER_MALICE), - LEVEL_UP_MOVE(25, MOVE_SLASH), - LEVEL_UP_MOVE(34, MOVE_SHADOW_CLAW), - LEVEL_UP_MOVE(43, MOVE_NASTY_PLOT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sZoroarkHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SHADOW_SNEAK), - LEVEL_UP_MOVE( 6, MOVE_SNARL), - LEVEL_UP_MOVE(11, MOVE_SWIFT), - LEVEL_UP_MOVE(18, MOVE_BITTER_MALICE), - LEVEL_UP_MOVE(25, MOVE_SLASH), - LEVEL_UP_MOVE(34, MOVE_SHADOW_CLAW), - LEVEL_UP_MOVE(40, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(43, MOVE_NASTY_PLOT), - LEVEL_UP_MOVE(52, MOVE_EXTRASENSORY), - LEVEL_UP_END -}; - -static const struct LevelUpMove sBraviaryHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_AERIAL_ACE), - LEVEL_UP_MOVE(11, MOVE_TWISTER), - LEVEL_UP_MOVE(18, MOVE_SLASH), - LEVEL_UP_MOVE(20, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(25, MOVE_ESPER_WING), - LEVEL_UP_MOVE(25, MOVE_ROOST), - LEVEL_UP_MOVE(34, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(43, MOVE_BRAVE_BIRD), - LEVEL_UP_MOVE(52, MOVE_HURRICANE), - LEVEL_UP_END -}; -#endif - -#if P_GEN_6_POKEMON == TRUE -static const struct LevelUpMove sSliggooHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 6, MOVE_ACID_SPRAY), - LEVEL_UP_MOVE(11, MOVE_ACID_ARMOR), - LEVEL_UP_MOVE(18, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(25, MOVE_DRAGON_PULSE), - LEVEL_UP_MOVE(25, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(34, MOVE_SHELTER), - LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), - LEVEL_UP_END -}; - -static const struct LevelUpMove sGoodraHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 6, MOVE_ACID_SPRAY), - LEVEL_UP_MOVE(11, MOVE_ACID_ARMOR), - LEVEL_UP_MOVE(18, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(25, MOVE_DRAGON_PULSE), - LEVEL_UP_MOVE(25, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(34, MOVE_SHELTER), - LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), - LEVEL_UP_END -}; - -static const struct LevelUpMove sAvaluggHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 9, MOVE_ICE_SHARD), - LEVEL_UP_MOVE(15, MOVE_BITE), - LEVEL_UP_MOVE(21, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(29, MOVE_CRUNCH), - LEVEL_UP_MOVE(29, MOVE_EARTH_POWER), - LEVEL_UP_MOVE(37, MOVE_BLIZZARD), - LEVEL_UP_MOVE(37, MOVE_MOUNTAIN_GALE), - LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), - LEVEL_UP_END -}; -#endif - -#if P_GEN_7_POKEMON == TRUE -static const struct LevelUpMove sDecidueyeHisuianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_ROCK_SMASH), - LEVEL_UP_MOVE( 1, MOVE_GUST), - LEVEL_UP_MOVE( 6, MOVE_LEAFAGE), - LEVEL_UP_MOVE(11, MOVE_ROOST), - LEVEL_UP_MOVE(18, MOVE_AERIAL_ACE), - LEVEL_UP_MOVE(21, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE(25, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(30, MOVE_AURA_SPHERE), - LEVEL_UP_MOVE(34, MOVE_LEAF_BLADE), - LEVEL_UP_MOVE(34, MOVE_TRIPLE_ARROWS), - LEVEL_UP_MOVE(40, MOVE_BRAVE_BIRD), - LEVEL_UP_MOVE(43, MOVE_LEAF_STORM), - LEVEL_UP_END -}; -#endif - -static const struct LevelUpMove sDeoxysAttackLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(13, MOVE_TELEPORT), - LEVEL_UP_MOVE(19, MOVE_TAUNT), - LEVEL_UP_MOVE(25, MOVE_PURSUIT), - LEVEL_UP_MOVE(31, MOVE_PSYCHIC), - LEVEL_UP_MOVE(37, MOVE_SUPERPOWER), - LEVEL_UP_MOVE(43, MOVE_PSYCHO_SHIFT), - LEVEL_UP_MOVE(49, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(55, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(61, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE(67, MOVE_PSYCHO_BOOST), - LEVEL_UP_MOVE(73, MOVE_HYPER_BEAM), - LEVEL_UP_END -}; - -static const struct LevelUpMove sDeoxysDefenseLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(13, MOVE_TELEPORT), - LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(25, MOVE_SPIKES), - LEVEL_UP_MOVE(31, MOVE_PSYCHIC), - LEVEL_UP_MOVE(37, MOVE_SNATCH), - LEVEL_UP_MOVE(43, MOVE_PSYCHO_SHIFT), - LEVEL_UP_MOVE(49, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(55, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(55, MOVE_AMNESIA), - LEVEL_UP_MOVE(61, MOVE_RECOVER), - LEVEL_UP_MOVE(67, MOVE_PSYCHO_BOOST), - LEVEL_UP_MOVE(73, MOVE_COUNTER), - LEVEL_UP_MOVE(73, MOVE_MIRROR_COAT), - LEVEL_UP_END -}; - -static const struct LevelUpMove sDeoxysSpeedLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(13, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(19, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(25, MOVE_PURSUIT), - LEVEL_UP_MOVE(31, MOVE_PSYCHIC), - LEVEL_UP_MOVE(37, MOVE_SWIFT), - LEVEL_UP_MOVE(43, MOVE_PSYCHO_SHIFT), - LEVEL_UP_MOVE(49, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(55, MOVE_AGILITY), - LEVEL_UP_MOVE(61, MOVE_RECOVER), - LEVEL_UP_MOVE(67, MOVE_PSYCHO_BOOST), - LEVEL_UP_MOVE(73, MOVE_EXTREME_SPEED), - LEVEL_UP_END -}; - -#if P_GEN_4_POKEMON == TRUE -static const struct LevelUpMove sWormadamSandyCloakLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_QUIVER_DANCE), - LEVEL_UP_MOVE( 1, MOVE_QUIVER_DANCE), - LEVEL_UP_MOVE( 1, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_PROTECT), - LEVEL_UP_MOVE( 1, MOVE_BUG_BITE), - LEVEL_UP_MOVE(10, MOVE_PROTECT), - LEVEL_UP_MOVE(15, MOVE_BUG_BITE), - LEVEL_UP_MOVE(20, MOVE_HIDDEN_POWER), - LEVEL_UP_MOVE(23, MOVE_CONFUSION), - LEVEL_UP_MOVE(26, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(29, MOVE_HARDEN), - LEVEL_UP_MOVE(32, MOVE_PSYBEAM), - LEVEL_UP_MOVE(35, MOVE_CAPTIVATE), - LEVEL_UP_MOVE(38, MOVE_FLAIL), - LEVEL_UP_MOVE(41, MOVE_ATTRACT), - LEVEL_UP_MOVE(44, MOVE_PSYCHIC), - LEVEL_UP_MOVE(47, MOVE_FISSURE), - LEVEL_UP_MOVE(50, MOVE_BUG_BUZZ), - LEVEL_UP_END -}; - -static const struct LevelUpMove sWormadamTrashCloakLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_QUIVER_DANCE), - LEVEL_UP_MOVE( 1, MOVE_QUIVER_DANCE), - LEVEL_UP_MOVE( 1, MOVE_METAL_BURST), - LEVEL_UP_MOVE( 1, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_PROTECT), - LEVEL_UP_MOVE( 1, MOVE_BUG_BITE), - LEVEL_UP_MOVE(10, MOVE_PROTECT), - LEVEL_UP_MOVE(15, MOVE_BUG_BITE), - LEVEL_UP_MOVE(20, MOVE_HIDDEN_POWER), - LEVEL_UP_MOVE(23, MOVE_CONFUSION), - LEVEL_UP_MOVE(26, MOVE_MIRROR_SHOT), - LEVEL_UP_MOVE(29, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(32, MOVE_PSYBEAM), - LEVEL_UP_MOVE(35, MOVE_CAPTIVATE), - LEVEL_UP_MOVE(38, MOVE_FLAIL), - LEVEL_UP_MOVE(41, MOVE_ATTRACT), - LEVEL_UP_MOVE(44, MOVE_PSYCHIC), - LEVEL_UP_MOVE(47, MOVE_IRON_HEAD), - LEVEL_UP_MOVE(50, MOVE_BUG_BUZZ), - LEVEL_UP_END -}; - -static const struct LevelUpMove sShayminSkyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWTH), - LEVEL_UP_MOVE(10, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE(19, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(28, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(37, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(46, MOVE_NATURAL_GIFT), - LEVEL_UP_MOVE(55, MOVE_WORRY_SEED), - LEVEL_UP_MOVE(64, MOVE_AIR_SLASH), - LEVEL_UP_MOVE(73, MOVE_ENERGY_BALL), - LEVEL_UP_MOVE(82, MOVE_SWEET_KISS), - LEVEL_UP_MOVE(91, MOVE_LEAF_STORM), - LEVEL_UP_MOVE(100, MOVE_SEED_FLARE), - LEVEL_UP_END -}; -#endif - -#if P_GEN_5_POKEMON == TRUE -static const struct LevelUpMove sKyuremWhiteLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ICY_WIND), - LEVEL_UP_MOVE( 1, MOVE_DRAGON_RAGE), - LEVEL_UP_MOVE( 8, MOVE_IMPRISON), - LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(22, MOVE_ICE_BEAM), - LEVEL_UP_MOVE(29, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(36, MOVE_SLASH), - LEVEL_UP_MOVE(43, MOVE_FUSION_FLARE), - LEVEL_UP_MOVE(50, MOVE_ICE_BURN), - LEVEL_UP_MOVE(57, MOVE_DRAGON_PULSE), - LEVEL_UP_MOVE(64, MOVE_NOBLE_ROAR), - LEVEL_UP_MOVE(71, MOVE_ENDEAVOR), - LEVEL_UP_MOVE(78, MOVE_BLIZZARD), - LEVEL_UP_MOVE(85, MOVE_OUTRAGE), - LEVEL_UP_MOVE(92, MOVE_HYPER_VOICE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sKyuremBlackLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ICY_WIND), - LEVEL_UP_MOVE( 1, MOVE_DRAGON_RAGE), - LEVEL_UP_MOVE( 8, MOVE_IMPRISON), - LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(22, MOVE_ICE_BEAM), - LEVEL_UP_MOVE(29, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(36, MOVE_SLASH), - LEVEL_UP_MOVE(43, MOVE_FUSION_BOLT), - LEVEL_UP_MOVE(50, MOVE_FREEZE_SHOCK), - LEVEL_UP_MOVE(57, MOVE_DRAGON_PULSE), - LEVEL_UP_MOVE(64, MOVE_NOBLE_ROAR), - LEVEL_UP_MOVE(71, MOVE_ENDEAVOR), - LEVEL_UP_MOVE(78, MOVE_BLIZZARD), - LEVEL_UP_MOVE(85, MOVE_OUTRAGE), - LEVEL_UP_MOVE(92, MOVE_HYPER_VOICE), - LEVEL_UP_END -}; -#endif - -#if P_GEN_6_POKEMON == TRUE -static const struct LevelUpMove sFloetteEternalFlowerLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), - LEVEL_UP_MOVE( 1, MOVE_FAIRY_WIND), - LEVEL_UP_MOVE( 6, MOVE_FAIRY_WIND), - LEVEL_UP_MOVE(10, MOVE_LUCKY_CHANT), - LEVEL_UP_MOVE(15, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE(20, MOVE_WISH), - LEVEL_UP_MOVE(25, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE(27, MOVE_GRASSY_TERRAIN), - LEVEL_UP_MOVE(33, MOVE_PETAL_BLIZZARD), - LEVEL_UP_MOVE(38, MOVE_AROMATHERAPY), - LEVEL_UP_MOVE(43, MOVE_MISTY_TERRAIN), - LEVEL_UP_MOVE(46, MOVE_MOONBLAST), - LEVEL_UP_MOVE(50, MOVE_LIGHT_OF_RUIN), - LEVEL_UP_MOVE(51, MOVE_PETAL_DANCE), - LEVEL_UP_MOVE(58, MOVE_SOLAR_BEAM), - LEVEL_UP_END -}; - -static const struct LevelUpMove sMeowsticFemaleLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_STORED_POWER), - LEVEL_UP_MOVE( 1, MOVE_ME_FIRST), - LEVEL_UP_MOVE( 1, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_COVET), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 5, MOVE_COVET), - LEVEL_UP_MOVE( 9, MOVE_CONFUSION), - LEVEL_UP_MOVE(13, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(17, MOVE_PSYBEAM), - LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), - LEVEL_UP_MOVE(22, MOVE_DISARMING_VOICE), - LEVEL_UP_MOVE(25, MOVE_PSYSHOCK), - LEVEL_UP_MOVE(28, MOVE_CHARGE_BEAM), - LEVEL_UP_MOVE(31, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(35, MOVE_EXTRASENSORY), - LEVEL_UP_MOVE(40, MOVE_PSYCHIC), - LEVEL_UP_MOVE(43, MOVE_ROLE_PLAY), - LEVEL_UP_MOVE(45, MOVE_SIGNAL_BEAM), - LEVEL_UP_MOVE(48, MOVE_SUCKER_PUNCH), - LEVEL_UP_MOVE(50, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(53, MOVE_STORED_POWER), - LEVEL_UP_END -}; - -static const struct LevelUpMove sHoopaUnboundLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HYPERSPACE_HOLE), - LEVEL_UP_MOVE( 1, MOVE_TRICK), - LEVEL_UP_MOVE( 1, MOVE_DESTINY_BOND), - LEVEL_UP_MOVE( 1, MOVE_ALLY_SWITCH), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 6, MOVE_ASTONISH), - LEVEL_UP_MOVE(10, MOVE_MAGIC_COAT), - LEVEL_UP_MOVE(15, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(19, MOVE_PSYBEAM), - LEVEL_UP_MOVE(25, MOVE_SKILL_SWAP), - LEVEL_UP_MOVE(29, MOVE_POWER_SPLIT), - LEVEL_UP_MOVE(29, MOVE_GUARD_SPLIT), - LEVEL_UP_MOVE(46, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(50, MOVE_WONDER_ROOM), - LEVEL_UP_MOVE(50, MOVE_TRICK_ROOM), - LEVEL_UP_MOVE(55, MOVE_DARK_PULSE), - LEVEL_UP_MOVE(75, MOVE_PSYCHIC), - LEVEL_UP_MOVE(85, MOVE_HYPERSPACE_FURY), - LEVEL_UP_END -}; -#endif - -#if P_GEN_7_POKEMON == TRUE -static const struct LevelUpMove sLycanrocMidnightLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_COUNTER), - LEVEL_UP_MOVE( 1, MOVE_REVERSAL), - LEVEL_UP_MOVE( 1, MOVE_TAUNT), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE(12, MOVE_HOWL), - LEVEL_UP_MOVE(15, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(18, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(23, MOVE_ROCK_TOMB), - LEVEL_UP_MOVE(26, MOVE_ROAR), - LEVEL_UP_MOVE(29, MOVE_STEALTH_ROCK), - LEVEL_UP_MOVE(34, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(37, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(40, MOVE_CRUNCH), - LEVEL_UP_MOVE(45, MOVE_ROCK_CLIMB), - LEVEL_UP_MOVE(48, MOVE_STONE_EDGE), - LEVEL_UP_END -}; - -static const struct LevelUpMove sLycanrocDuskLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_THRASH), - LEVEL_UP_MOVE( 1, MOVE_ACCELEROCK), - LEVEL_UP_MOVE( 1, MOVE_COUNTER), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE(12, MOVE_HOWL), - LEVEL_UP_MOVE(15, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(18, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(23, MOVE_ROCK_TOMB), - LEVEL_UP_MOVE(26, MOVE_ROAR), - LEVEL_UP_MOVE(29, MOVE_STEALTH_ROCK), - LEVEL_UP_MOVE(34, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(37, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(40, MOVE_CRUNCH), - LEVEL_UP_MOVE(45, MOVE_ROCK_CLIMB), - LEVEL_UP_MOVE(48, MOVE_STONE_EDGE), - LEVEL_UP_END -}; -#endif - -#if P_GEN_8_POKEMON == TRUE -static const struct LevelUpMove sToxtricityLowKeyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 0, MOVE_SPARK), - LEVEL_UP_MOVE( 1, MOVE_SPARK), - LEVEL_UP_MOVE( 1, MOVE_EERIE_IMPULSE), - LEVEL_UP_MOVE( 1, MOVE_BELCH), - LEVEL_UP_MOVE( 1, MOVE_TEARFUL_LOOK), - LEVEL_UP_MOVE( 1, MOVE_NUZZLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_FLAIL), - LEVEL_UP_MOVE( 1, MOVE_ACID), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 1, MOVE_ACID_SPRAY), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_NOBLE_ROAR), - LEVEL_UP_MOVE( 4, MOVE_CHARGE), - LEVEL_UP_MOVE( 8, MOVE_SHOCK_WAVE), - LEVEL_UP_MOVE(12, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(16, MOVE_TAUNT), - LEVEL_UP_MOVE(20, MOVE_VENOM_DRENCH), - LEVEL_UP_MOVE(24, MOVE_SCREECH), - LEVEL_UP_MOVE(28, MOVE_SWAGGER), - LEVEL_UP_MOVE(32, MOVE_TOXIC), - LEVEL_UP_MOVE(36, MOVE_DISCHARGE), - LEVEL_UP_MOVE(40, MOVE_POISON_JAB), - LEVEL_UP_MOVE(44, MOVE_OVERDRIVE), - LEVEL_UP_MOVE(48, MOVE_BOOMBURST), - LEVEL_UP_MOVE(52, MOVE_MAGNETIC_FLUX), - LEVEL_UP_END -}; - -static const struct LevelUpMove sIndeedeeFemaleLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_STORED_POWER), - LEVEL_UP_MOVE( 1, MOVE_PLAY_NICE), - LEVEL_UP_MOVE( 5, MOVE_BATON_PASS), - LEVEL_UP_MOVE(10, MOVE_DISARMING_VOICE), - LEVEL_UP_MOVE(15, MOVE_PSYBEAM), - LEVEL_UP_MOVE(20, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(25, MOVE_FOLLOW_ME), - LEVEL_UP_MOVE(30, MOVE_AROMATHERAPY), - LEVEL_UP_MOVE(35, MOVE_PSYCHIC), - LEVEL_UP_MOVE(40, MOVE_CALM_MIND), - LEVEL_UP_MOVE(45, MOVE_GUARD_SPLIT), - LEVEL_UP_MOVE(50, MOVE_PSYCHIC_TERRAIN), - LEVEL_UP_MOVE(55, MOVE_HEALING_WISH), - LEVEL_UP_END -}; - static const struct LevelUpMove sUrshifuRapidStrikeStyleLevelUpLearnset[] = { LEVEL_UP_MOVE( 0, MOVE_SURGING_STRIKES), LEVEL_UP_MOVE( 1, MOVE_SURGING_STRIKES), @@ -19511,7 +20753,134 @@ static const struct LevelUpMove sUrshifuRapidStrikeStyleLevelUpLearnset[] = { LEVEL_UP_MOVE(52, MOVE_FOCUS_PUNCH), LEVEL_UP_END }; +#endif //P_FAMILY_KUBFU +#if P_FAMILY_ZARUDE +static const struct LevelUpMove sZarudeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BIND), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 6, MOVE_LEER), + LEVEL_UP_MOVE(12, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(18, MOVE_GROWTH), + LEVEL_UP_MOVE(24, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(30, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(36, MOVE_GRASS_KNOT), + LEVEL_UP_MOVE(42, MOVE_BITE), + LEVEL_UP_MOVE(48, MOVE_U_TURN), + LEVEL_UP_MOVE(54, MOVE_SWAGGER), + LEVEL_UP_MOVE(60, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(66, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(72, MOVE_HAMMER_ARM), + LEVEL_UP_MOVE(78, MOVE_THRASH), + LEVEL_UP_MOVE(84, MOVE_POWER_WHIP), + LEVEL_UP_MOVE(90, MOVE_JUNGLE_HEALING), + LEVEL_UP_END +}; +#endif //P_FAMILY_ZARUDE + +#if P_FAMILY_REGIELEKI +static const struct LevelUpMove sRegielekiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 6, MOVE_ELECTROWEB), + LEVEL_UP_MOVE(12, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(18, MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE(24, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(30, MOVE_EXTREME_SPEED), + LEVEL_UP_MOVE(36, MOVE_THUNDER_CAGE), + LEVEL_UP_MOVE(42, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(48, MOVE_MAGNET_RISE), + LEVEL_UP_MOVE(54, MOVE_THRASH), + LEVEL_UP_MOVE(60, MOVE_LOCK_ON), + LEVEL_UP_MOVE(66, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(72, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(78, MOVE_EXPLOSION), + LEVEL_UP_END +}; +#endif //P_FAMILY_REGIELEKI + +#if P_FAMILY_REGIDRAGO +static const struct LevelUpMove sRegidragoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TWISTER), + LEVEL_UP_MOVE( 1, MOVE_VISE_GRIP), + LEVEL_UP_MOVE( 6, MOVE_BITE), + LEVEL_UP_MOVE(12, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(18, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(24, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(30, MOVE_CRUNCH), + LEVEL_UP_MOVE(36, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(42, MOVE_HAMMER_ARM), + LEVEL_UP_MOVE(48, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(54, MOVE_THRASH), + LEVEL_UP_MOVE(60, MOVE_LASER_FOCUS), + LEVEL_UP_MOVE(66, MOVE_DRAGON_ENERGY), + LEVEL_UP_MOVE(72, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(78, MOVE_EXPLOSION), + LEVEL_UP_END +}; +#endif //P_FAMILY_REGIDRAGO + +#if P_FAMILY_GLASTRIER +static const struct LevelUpMove sGlastrierLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 6, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(12, MOVE_AVALANCHE), + LEVEL_UP_MOVE(18, MOVE_STOMP), + LEVEL_UP_MOVE(24, MOVE_TORMENT), + LEVEL_UP_MOVE(30, MOVE_MIST), + LEVEL_UP_MOVE(36, MOVE_ICICLE_CRASH), + LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(48, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(54, MOVE_THRASH), + LEVEL_UP_MOVE(60, MOVE_TAUNT), + LEVEL_UP_MOVE(66, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(72, MOVE_SWORDS_DANCE), + LEVEL_UP_END +}; +#endif //P_FAMILY_GLASTRIER + +#if P_FAMILY_SPECTRIER +static const struct LevelUpMove sSpectrierLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 6, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(12, MOVE_HEX), + LEVEL_UP_MOVE(18, MOVE_STOMP), + LEVEL_UP_MOVE(24, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(30, MOVE_HAZE), + LEVEL_UP_MOVE(36, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(48, MOVE_AGILITY), + LEVEL_UP_MOVE(54, MOVE_THRASH), + LEVEL_UP_MOVE(60, MOVE_DISABLE), + LEVEL_UP_MOVE(66, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(72, MOVE_NASTY_PLOT), + LEVEL_UP_END +}; +#endif //P_FAMILY_SPECTRIER + +#if P_FAMILY_CALYREX +static const struct LevelUpMove sCalyrexLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 8, MOVE_LIFE_DEW), + LEVEL_UP_MOVE(16, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(24, MOVE_PSYSHOCK), + LEVEL_UP_MOVE(32, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(40, MOVE_AROMATHERAPY), + LEVEL_UP_MOVE(48, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(56, MOVE_PSYCHIC), + LEVEL_UP_MOVE(64, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(72, MOVE_HEAL_PULSE), + LEVEL_UP_MOVE(80, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(88, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +#if P_FUSION_FORMS static const struct LevelUpMove sCalyrexIceRiderLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_GLACIAL_LANCE), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -19545,7 +20914,9 @@ static const struct LevelUpMove sCalyrexIceRiderLevelUpLearnset[] = { LEVEL_UP_MOVE(88, MOVE_FUTURE_SIGHT), LEVEL_UP_END }; +#endif //P_FUSION_FORMS +#if P_FUSION_FORMS static const struct LevelUpMove sCalyrexShadowRiderLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_ASTRAL_BARRAGE), LEVEL_UP_MOVE( 1, MOVE_TACKLE), @@ -19579,4 +20950,2200 @@ static const struct LevelUpMove sCalyrexShadowRiderLevelUpLearnset[] = { LEVEL_UP_MOVE(88, MOVE_FUTURE_SIGHT), LEVEL_UP_END }; +#endif //P_FUSION_FORMS +#endif //P_FAMILY_CALYREX + +#if P_FAMILY_ENAMORUS +static const struct LevelUpMove sEnamorusLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_FAIRY_WIND), + LEVEL_UP_MOVE( 5, MOVE_TORMENT), + LEVEL_UP_MOVE(10, MOVE_FLATTER), + LEVEL_UP_MOVE(15, MOVE_TWISTER), + LEVEL_UP_MOVE(20, MOVE_DRAINING_KISS), + LEVEL_UP_MOVE(25, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(30, MOVE_IMPRISON), + LEVEL_UP_MOVE(35, MOVE_MYSTICAL_FIRE), + LEVEL_UP_MOVE(40, MOVE_DAZZLING_GLEAM), + LEVEL_UP_MOVE(45, MOVE_EXTRASENSORY), + LEVEL_UP_MOVE(50, MOVE_UPROAR), + LEVEL_UP_MOVE(55, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(60, MOVE_HEALING_WISH), + LEVEL_UP_MOVE(65, MOVE_MOONBLAST), + LEVEL_UP_MOVE(70, MOVE_OUTRAGE), + LEVEL_UP_MOVE(75, MOVE_SPRINGTIDE_STORM), + LEVEL_UP_END +}; +#endif //P_FAMILY_ENAMORUS + +#if P_FAMILY_SPRIGATITO +static const struct LevelUpMove sSprigatitoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_LEAFAGE), + LEVEL_UP_MOVE( 7, MOVE_BITE), + LEVEL_UP_MOVE(10, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(13, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(15, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(17, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(21, MOVE_U_TURN), + LEVEL_UP_MOVE(25, MOVE_WORRY_SEED), + LEVEL_UP_MOVE(28, MOVE_SLASH), + LEVEL_UP_MOVE(32, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(36, MOVE_PLAY_ROUGH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sFloragatoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_LEAFAGE), + LEVEL_UP_MOVE( 7, MOVE_BITE), + LEVEL_UP_MOVE(10, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(13, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(15, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(24, MOVE_U_TURN), + LEVEL_UP_MOVE(28, MOVE_WORRY_SEED), + LEVEL_UP_MOVE(33, MOVE_SLASH), + LEVEL_UP_MOVE(38, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(42, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(46, MOVE_LEAF_STORM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMeowscaradaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_FLOWER_TRICK), + LEVEL_UP_MOVE( 1, MOVE_LEAFAGE), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_BITE), + LEVEL_UP_MOVE(10, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(13, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(15, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(24, MOVE_U_TURN), + LEVEL_UP_MOVE(29, MOVE_WORRY_SEED), + LEVEL_UP_MOVE(33, MOVE_SLASH), + LEVEL_UP_MOVE(38, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(42, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(47, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(52, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(58, MOVE_GRASSY_TERRAIN), + LEVEL_UP_MOVE(64, MOVE_LEAF_STORM), + LEVEL_UP_END +}; +#endif //P_FAMILY_SPRIGATITO + +#if P_FAMILY_FUECOCO +static const struct LevelUpMove sFuecocoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_ROUND), + LEVEL_UP_MOVE(12, MOVE_BITE), + LEVEL_UP_MOVE(15, MOVE_INCINERATE), + LEVEL_UP_MOVE(17, MOVE_YAWN), + LEVEL_UP_MOVE(21, MOVE_SNARL), + LEVEL_UP_MOVE(25, MOVE_ROAR), + LEVEL_UP_MOVE(28, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(32, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(36, MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +static const struct LevelUpMove sCrocalorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_LICK), + LEVEL_UP_MOVE(10, MOVE_ROUND), + LEVEL_UP_MOVE(12, MOVE_BITE), + LEVEL_UP_MOVE(15, MOVE_YAWN), + LEVEL_UP_MOVE(17, MOVE_INCINERATE), + LEVEL_UP_MOVE(24, MOVE_SNARL), + LEVEL_UP_MOVE(28, MOVE_ROAR), + LEVEL_UP_MOVE(32, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(38, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(42, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(47, MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSkeledirgeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_TORCH_SONG), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_LICK), + LEVEL_UP_MOVE(10, MOVE_ROUND), + LEVEL_UP_MOVE(12, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(15, MOVE_BITE), + LEVEL_UP_MOVE(17, MOVE_INCINERATE), + LEVEL_UP_MOVE(24, MOVE_SNARL), + LEVEL_UP_MOVE(28, MOVE_ROAR), + LEVEL_UP_MOVE(32, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(38, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(42, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(47, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(47, MOVE_HEX), + LEVEL_UP_MOVE(58, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(64, MOVE_OVERHEAT), + LEVEL_UP_END +}; +#endif //P_FAMILY_FUECOCO + +#if P_FAMILY_QUAXLY +static const struct LevelUpMove sQuaxlyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_WORK_UP), + LEVEL_UP_MOVE(10, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(13, MOVE_AQUA_JET), + LEVEL_UP_MOVE(17, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(21, MOVE_AQUA_CUTTER), + LEVEL_UP_MOVE(24, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(28, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(31, MOVE_ACROBATICS), + LEVEL_UP_MOVE(35, MOVE_LIQUIDATION), + LEVEL_UP_END +}; + +static const struct LevelUpMove sQuaxwellLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE( 7, MOVE_WORK_UP), + LEVEL_UP_MOVE(10, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(13, MOVE_AQUA_JET), + LEVEL_UP_MOVE(17, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(19, MOVE_LOW_SWEEP), + LEVEL_UP_MOVE(23, MOVE_AQUA_CUTTER), + LEVEL_UP_MOVE(27, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(32, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(38, MOVE_ACROBATICS), + LEVEL_UP_MOVE(43, MOVE_LIQUIDATION), + LEVEL_UP_MOVE(48, MOVE_FEATHER_DANCE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sQuaquavalLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_AQUA_STEP), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE( 7, MOVE_WORK_UP), + LEVEL_UP_MOVE(10, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(13, MOVE_AQUA_JET), + LEVEL_UP_MOVE(17, MOVE_LOW_SWEEP), + LEVEL_UP_MOVE(17, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(21, MOVE_AQUA_CUTTER), + LEVEL_UP_MOVE(27, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(32, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(38, MOVE_MEGA_KICK), + LEVEL_UP_MOVE(43, MOVE_ACROBATICS), + LEVEL_UP_MOVE(47, MOVE_LIQUIDATION), + LEVEL_UP_MOVE(52, MOVE_FEATHER_DANCE), + LEVEL_UP_MOVE(58, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE(64, MOVE_WAVE_CRASH), + LEVEL_UP_END +}; +#endif //P_FAMILY_QUAXLY + +#if P_FAMILY_LECHONK +static const struct LevelUpMove sLechonkLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 5, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE( 8, MOVE_ECHOED_VOICE), + LEVEL_UP_MOVE(12, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(15, MOVE_COVET), + LEVEL_UP_MOVE(17, MOVE_DIG), + LEVEL_UP_MOVE(21, MOVE_HEADBUTT), + LEVEL_UP_MOVE(24, MOVE_YAWN), + LEVEL_UP_MOVE(27, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(30, MOVE_WORK_UP), + LEVEL_UP_MOVE(32, MOVE_UPROAR), + LEVEL_UP_MOVE(35, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sOinkologneMaleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 5, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE( 8, MOVE_ECHOED_VOICE), + LEVEL_UP_MOVE(12, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(15, MOVE_COVET), + LEVEL_UP_MOVE(17, MOVE_DIG), + LEVEL_UP_MOVE(23, MOVE_HEADBUTT), + LEVEL_UP_MOVE(26, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(27, MOVE_YAWN), + LEVEL_UP_MOVE(34, MOVE_WORK_UP), + LEVEL_UP_MOVE(38, MOVE_UPROAR), + LEVEL_UP_MOVE(42, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(48, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(54, MOVE_BELCH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sOinkologneFemaleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 3, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE( 6, MOVE_ECHOED_VOICE), + LEVEL_UP_MOVE( 9, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(12, MOVE_COVET), + LEVEL_UP_MOVE(15, MOVE_DIG), + LEVEL_UP_MOVE(17, MOVE_HEADBUTT), + LEVEL_UP_MOVE(23, MOVE_YAWN), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(30, MOVE_WORK_UP), + LEVEL_UP_MOVE(34, MOVE_UPROAR), + LEVEL_UP_MOVE(39, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(45, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(51, MOVE_BELCH), + LEVEL_UP_END +}; +#endif //P_FAMILY_LECHONK + +#if P_FAMILY_TAROUNTULA +static const struct LevelUpMove sTarountulaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_MOVE( 5, MOVE_STRUGGLE_BUG), + LEVEL_UP_MOVE( 8, MOVE_ASSURANCE), + LEVEL_UP_MOVE(11, MOVE_FEINT), + LEVEL_UP_MOVE(14, MOVE_BUG_BITE), + LEVEL_UP_MOVE(18, MOVE_BLOCK), + LEVEL_UP_MOVE(22, MOVE_COUNTER), + LEVEL_UP_MOVE(25, MOVE_HEADBUTT), + LEVEL_UP_MOVE(29, MOVE_STICKY_WEB), + LEVEL_UP_MOVE(33, MOVE_GASTRO_ACID), + LEVEL_UP_MOVE(36, MOVE_CIRCLE_THROW), + LEVEL_UP_MOVE(40, MOVE_THROAT_CHOP), + LEVEL_UP_MOVE(44, MOVE_SKITTER_SMACK), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSpidopsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SILK_TRAP), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_MOVE( 5, MOVE_STRUGGLE_BUG), + LEVEL_UP_MOVE( 8, MOVE_ASSURANCE), + LEVEL_UP_MOVE(11, MOVE_FEINT), + LEVEL_UP_MOVE(14, MOVE_BUG_BITE), + LEVEL_UP_MOVE(19, MOVE_BLOCK), + LEVEL_UP_MOVE(24, MOVE_COUNTER), + LEVEL_UP_MOVE(28, MOVE_HEADBUTT), + LEVEL_UP_MOVE(33, MOVE_STICKY_WEB), + LEVEL_UP_MOVE(37, MOVE_GASTRO_ACID), + LEVEL_UP_MOVE(41, MOVE_CIRCLE_THROW), + LEVEL_UP_MOVE(45, MOVE_THROAT_CHOP), + LEVEL_UP_MOVE(49, MOVE_SKITTER_SMACK), + LEVEL_UP_END +}; +#endif //P_FAMILY_TAROUNTULA + +#if P_FAMILY_NYMBLE +static const struct LevelUpMove sNymbleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 4, MOVE_STRUGGLE_BUG), + LEVEL_UP_MOVE( 6, MOVE_ASTONISH), + LEVEL_UP_MOVE( 9, MOVE_ASSURANCE), + LEVEL_UP_MOVE(11, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(14, MOVE_SCREECH), + LEVEL_UP_MOVE(18, MOVE_ENDURE), + LEVEL_UP_MOVE(22, MOVE_BUG_BITE), + LEVEL_UP_MOVE(26, MOVE_FEINT), + LEVEL_UP_MOVE(30, MOVE_AGILITY), + LEVEL_UP_MOVE(38, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(41, MOVE_FIRST_IMPRESSION), + LEVEL_UP_END +}; + +static const struct LevelUpMove sLokixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_LUNGE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_DETECT), + LEVEL_UP_MOVE( 4, MOVE_STRUGGLE_BUG), + LEVEL_UP_MOVE( 6, MOVE_ASTONISH), + LEVEL_UP_MOVE( 9, MOVE_ASSURANCE), + LEVEL_UP_MOVE(11, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(14, MOVE_SCREECH), + LEVEL_UP_MOVE(18, MOVE_ENDURE), + LEVEL_UP_MOVE(22, MOVE_BUG_BITE), + LEVEL_UP_MOVE(28, MOVE_FEINT), + LEVEL_UP_MOVE(32, MOVE_AGILITY), + LEVEL_UP_MOVE(36, MOVE_THROAT_CHOP), + LEVEL_UP_MOVE(40, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(44, MOVE_FIRST_IMPRESSION), + LEVEL_UP_MOVE(48, MOVE_BOUNCE), + LEVEL_UP_MOVE(53, MOVE_AXE_KICK), + LEVEL_UP_END +}; +#endif //P_FAMILY_NYMBLE + +#if P_FAMILY_PAWMI +static const struct LevelUpMove sPawmiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 3, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 6, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 8, MOVE_CHARGE), + LEVEL_UP_MOVE(12, MOVE_NUZZLE), + LEVEL_UP_MOVE(15, MOVE_DIG), + LEVEL_UP_MOVE(19, MOVE_BITE), + LEVEL_UP_MOVE(23, MOVE_SPARK), + LEVEL_UP_MOVE(27, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(31, MOVE_ENTRAINMENT), + LEVEL_UP_MOVE(35, MOVE_SLAM), + LEVEL_UP_MOVE(38, MOVE_DISCHARGE), + LEVEL_UP_MOVE(40, MOVE_AGILITY), + LEVEL_UP_MOVE(44, MOVE_WILD_CHARGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPawmoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_ARM_THRUST), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 3, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 6, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 8, MOVE_CHARGE), + LEVEL_UP_MOVE(12, MOVE_NUZZLE), + LEVEL_UP_MOVE(15, MOVE_DIG), + LEVEL_UP_MOVE(19, MOVE_BITE), + LEVEL_UP_MOVE(23, MOVE_SPARK), + LEVEL_UP_MOVE(27, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(32, MOVE_SLAM), + LEVEL_UP_MOVE(38, MOVE_ENTRAINMENT), + LEVEL_UP_MOVE(42, MOVE_DISCHARGE), + LEVEL_UP_MOVE(46, MOVE_AGILITY), + LEVEL_UP_MOVE(52, MOVE_WILD_CHARGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPawmotLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_REVIVAL_BLESSING), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WILD_CHARGE), + LEVEL_UP_MOVE( 3, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 6, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 8, MOVE_CHARGE), + LEVEL_UP_MOVE(12, MOVE_NUZZLE), + LEVEL_UP_MOVE(15, MOVE_DIG), + LEVEL_UP_MOVE(19, MOVE_BITE), + LEVEL_UP_MOVE(23, MOVE_SPARK), + LEVEL_UP_MOVE(25, MOVE_ARM_THRUST), + LEVEL_UP_MOVE(29, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(33, MOVE_SLAM), + LEVEL_UP_MOVE(39, MOVE_ENTRAINMENT), + LEVEL_UP_MOVE(44, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE(49, MOVE_DISCHARGE), + LEVEL_UP_MOVE(54, MOVE_AGILITY), + LEVEL_UP_MOVE(60, MOVE_DOUBLE_SHOCK), + LEVEL_UP_END +}; +#endif //P_FAMILY_PAWMI + +#if P_FAMILY_TANDEMAUS +static const struct LevelUpMove sTandemausLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE( 5, MOVE_ECHOED_VOICE), + LEVEL_UP_MOVE( 8, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(11, MOVE_SUPER_FANG), + LEVEL_UP_MOVE(14, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(18, MOVE_BULLET_SEED), + LEVEL_UP_MOVE(22, MOVE_ENCORE), + LEVEL_UP_MOVE(26, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(30, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(33, MOVE_CHARM), + LEVEL_UP_MOVE(37, MOVE_BEAT_UP), + LEVEL_UP_MOVE(41, MOVE_COPYCAT), + LEVEL_UP_MOVE(46, MOVE_POPULATION_BOMB), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMausholdLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE( 1, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE( 1, MOVE_TIDY_UP), + LEVEL_UP_MOVE( 5, MOVE_ECHOED_VOICE), + LEVEL_UP_MOVE( 8, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(11, MOVE_SUPER_FANG), + LEVEL_UP_MOVE(14, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(18, MOVE_BULLET_SEED), + LEVEL_UP_MOVE(22, MOVE_ENCORE), + LEVEL_UP_MOVE(29, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(33, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(37, MOVE_CHARM), + LEVEL_UP_MOVE(41, MOVE_BEAT_UP), + LEVEL_UP_MOVE(46, MOVE_COPYCAT), + LEVEL_UP_MOVE(53, MOVE_POPULATION_BOMB), + LEVEL_UP_END +}; +#endif //P_FAMILY_TANDEMAUS + +#if P_FAMILY_FIDOUGH +static const struct LevelUpMove sFidoughLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 3, MOVE_LICK), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_COVET), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(15, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE(18, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(22, MOVE_WORK_UP), + LEVEL_UP_MOVE(26, MOVE_BATON_PASS), + LEVEL_UP_MOVE(30, MOVE_ROAR), + LEVEL_UP_MOVE(33, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(36, MOVE_CHARM), + LEVEL_UP_MOVE(40, MOVE_CRUNCH), + LEVEL_UP_MOVE(45, MOVE_LAST_RESORT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDachsbunLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 3, MOVE_LICK), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_COVET), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(15, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE(18, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(22, MOVE_WORK_UP), + LEVEL_UP_MOVE(29, MOVE_BATON_PASS), + LEVEL_UP_MOVE(33, MOVE_ROAR), + LEVEL_UP_MOVE(38, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(42, MOVE_CHARM), + LEVEL_UP_MOVE(47, MOVE_CRUNCH), + LEVEL_UP_MOVE(53, MOVE_LAST_RESORT), + LEVEL_UP_END +}; +#endif //P_FAMILY_FIDOUGH + +#if P_FAMILY_SMOLIV +static const struct LevelUpMove sSmolivLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(10, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(13, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(16, MOVE_FLAIL), + LEVEL_UP_MOVE(20, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(23, MOVE_GRASSY_TERRAIN), + LEVEL_UP_MOVE(27, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(30, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(34, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(38, MOVE_TERRAIN_PULSE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDollivLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(10, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(13, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(16, MOVE_FLAIL), + LEVEL_UP_MOVE(20, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(23, MOVE_GRASSY_TERRAIN), + LEVEL_UP_MOVE(29, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(34, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(37, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(42, MOVE_TERRAIN_PULSE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sArbolivaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(10, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(13, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(16, MOVE_FLAIL), + LEVEL_UP_MOVE(20, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(23, MOVE_GRASSY_TERRAIN), + LEVEL_UP_MOVE(29, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(34, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(39, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(46, MOVE_TERRAIN_PULSE), + LEVEL_UP_MOVE(52, MOVE_PETAL_BLIZZARD), + LEVEL_UP_MOVE(58, MOVE_PETAL_DANCE), + LEVEL_UP_END +}; +#endif //P_FAMILY_SMOLIV + +#if P_FAMILY_SQUAWKABILLY +static const struct LevelUpMove sSquawkabillyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_MIMIC), + LEVEL_UP_MOVE( 6, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(10, MOVE_TORMENT), + LEVEL_UP_MOVE(13, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(17, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(20, MOVE_TAUNT), + LEVEL_UP_MOVE(24, MOVE_UPROAR), + LEVEL_UP_MOVE(27, MOVE_COPYCAT), + LEVEL_UP_MOVE(30, MOVE_FLY), + LEVEL_UP_MOVE(34, MOVE_FACADE), + LEVEL_UP_MOVE(38, MOVE_SWAGGER), + LEVEL_UP_MOVE(42, MOVE_BRAVE_BIRD), + LEVEL_UP_MOVE(47, MOVE_ROOST), + LEVEL_UP_MOVE(52, MOVE_REVERSAL), + LEVEL_UP_END +}; +#endif //P_FAMILY_SQUAWKABILLY + +#if P_FAMILY_NACLI +static const struct LevelUpMove sNacliLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 7, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(10, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(13, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE(16, MOVE_HEADBUTT), + LEVEL_UP_MOVE(20, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(25, MOVE_RECOVER), + LEVEL_UP_MOVE(30, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(33, MOVE_STEALTH_ROCK), + LEVEL_UP_MOVE(35, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE(40, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(45, MOVE_STONE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sNaclstackLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SALT_CURE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 7, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(10, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(13, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE(16, MOVE_HEADBUTT), + LEVEL_UP_MOVE(20, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(30, MOVE_RECOVER), + LEVEL_UP_MOVE(34, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(38, MOVE_STEALTH_ROCK), + LEVEL_UP_MOVE(41, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE(45, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(51, MOVE_STONE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGarganaclLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_HAMMER_ARM), + LEVEL_UP_MOVE( 1, MOVE_BLOCK), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_WIDE_GUARD), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE( 5, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 7, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(10, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(13, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE(16, MOVE_HEADBUTT), + LEVEL_UP_MOVE(24, MOVE_SALT_CURE), + LEVEL_UP_MOVE(30, MOVE_RECOVER), + LEVEL_UP_MOVE(34, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(40, MOVE_STEALTH_ROCK), + LEVEL_UP_MOVE(44, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE(49, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(54, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(60, MOVE_EXPLOSION), + LEVEL_UP_END +}; +#endif //P_FAMILY_NACLI + +#if P_FAMILY_CHARCADET +static const struct LevelUpMove sCharcadetLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 8, MOVE_CLEAR_SMOG), + LEVEL_UP_MOVE(12, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(16, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(20, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(24, MOVE_FLAME_CHARGE), + LEVEL_UP_MOVE(28, MOVE_INCINERATE), + LEVEL_UP_MOVE(32, MOVE_LAVA_PLUME), + LEVEL_UP_END +}; + +static const struct LevelUpMove sArmarougeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_PSYSHOCK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_MYSTICAL_FIRE), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_WIDE_GUARD), + LEVEL_UP_MOVE( 8, MOVE_CLEAR_SMOG), + LEVEL_UP_MOVE(12, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(16, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(20, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(24, MOVE_FLAME_CHARGE), + LEVEL_UP_MOVE(28, MOVE_INCINERATE), + LEVEL_UP_MOVE(32, MOVE_LAVA_PLUME), + LEVEL_UP_MOVE(37, MOVE_CALM_MIND), + LEVEL_UP_MOVE(42, MOVE_ALLY_SWITCH), + LEVEL_UP_MOVE(48, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(56, MOVE_EXPANDING_FORCE), + LEVEL_UP_MOVE(62, MOVE_ARMOR_CANNON), + LEVEL_UP_END +}; + +static const struct LevelUpMove sCeruledgeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SHADOW_CLAW), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 8, MOVE_CLEAR_SMOG), + LEVEL_UP_MOVE(12, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(16, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(20, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(24, MOVE_FLAME_CHARGE), + LEVEL_UP_MOVE(28, MOVE_INCINERATE), + LEVEL_UP_MOVE(32, MOVE_LAVA_PLUME), + LEVEL_UP_MOVE(37, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(42, MOVE_ALLY_SWITCH), + LEVEL_UP_MOVE(48, MOVE_BITTER_BLADE), + LEVEL_UP_MOVE(56, MOVE_PSYCHO_CUT), + LEVEL_UP_MOVE(62, MOVE_FLARE_BLITZ), + LEVEL_UP_END +}; +#endif //P_FAMILY_CHARCADET + +#if P_FAMILY_TADBULB +static const struct LevelUpMove sTadbulbLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 7, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(11, MOVE_WATER_GUN), + LEVEL_UP_MOVE(17, MOVE_CHARGE), + LEVEL_UP_MOVE(21, MOVE_SPARK), + LEVEL_UP_MOVE(24, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(25, MOVE_FLAIL), + LEVEL_UP_MOVE(32, MOVE_DISCHARGE), + LEVEL_UP_MOVE(36, MOVE_WEATHER_BALL), + LEVEL_UP_MOVE(40, MOVE_ELECTRIC_TERRAIN), + LEVEL_UP_MOVE(45, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(50, MOVE_ZAP_CANNON), + LEVEL_UP_END +}; + +static const struct LevelUpMove sBelliboltLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_SLACK_OFF), + LEVEL_UP_MOVE( 7, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(11, MOVE_WATER_GUN), + LEVEL_UP_MOVE(17, MOVE_CHARGE), + LEVEL_UP_MOVE(21, MOVE_SPARK), + LEVEL_UP_MOVE(24, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(25, MOVE_FLAIL), + LEVEL_UP_MOVE(32, MOVE_DISCHARGE), + LEVEL_UP_MOVE(36, MOVE_WEATHER_BALL), + LEVEL_UP_MOVE(40, MOVE_ELECTRIC_TERRAIN), + LEVEL_UP_MOVE(45, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(50, MOVE_ZAP_CANNON), + LEVEL_UP_END +}; +#endif //P_FAMILY_TADBULB + +#if P_FAMILY_WATTREL +static const struct LevelUpMove sWattrelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(11, MOVE_PLUCK), + LEVEL_UP_MOVE(15, MOVE_SPARK), + LEVEL_UP_MOVE(19, MOVE_UPROAR), + LEVEL_UP_MOVE(23, MOVE_ROOST), + LEVEL_UP_MOVE(27, MOVE_DUAL_WINGBEAT), + LEVEL_UP_MOVE(32, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_VOLT_SWITCH), + LEVEL_UP_MOVE(43, MOVE_DISCHARGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sKilowattrelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_ELECTRO_BALL), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(11, MOVE_PLUCK), + LEVEL_UP_MOVE(15, MOVE_SPARK), + LEVEL_UP_MOVE(19, MOVE_UPROAR), + LEVEL_UP_MOVE(24, MOVE_ROOST), + LEVEL_UP_MOVE(30, MOVE_DUAL_WINGBEAT), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_VOLT_SWITCH), + LEVEL_UP_MOVE(48, MOVE_DISCHARGE), + LEVEL_UP_MOVE(55, MOVE_HURRICANE), + LEVEL_UP_END +}; +#endif //P_FAMILY_WATTREL + +#if P_FAMILY_MASCHIFF +static const struct LevelUpMove sMaschiffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 4, MOVE_LICK), + LEVEL_UP_MOVE( 7, MOVE_SNARL), + LEVEL_UP_MOVE(10, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(14, MOVE_BITE), + LEVEL_UP_MOVE(18, MOVE_ROAR), + LEVEL_UP_MOVE(22, MOVE_HEADBUTT), + LEVEL_UP_MOVE(26, MOVE_PAYBACK), + LEVEL_UP_MOVE(31, MOVE_CRUNCH), + LEVEL_UP_MOVE(35, MOVE_SWAGGER), + LEVEL_UP_MOVE(39, MOVE_REVERSAL), + LEVEL_UP_MOVE(43, MOVE_JAW_LOCK), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sMabosstiffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_COMEUPPANCE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_LICK), + LEVEL_UP_MOVE( 7, MOVE_SNARL), + LEVEL_UP_MOVE(10, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(14, MOVE_BITE), + LEVEL_UP_MOVE(18, MOVE_ROAR), + LEVEL_UP_MOVE(22, MOVE_HEADBUTT), + LEVEL_UP_MOVE(26, MOVE_PAYBACK), + LEVEL_UP_MOVE(34, MOVE_CRUNCH), + LEVEL_UP_MOVE(39, MOVE_SWAGGER), + LEVEL_UP_MOVE(43, MOVE_REVERSAL), + LEVEL_UP_MOVE(48, MOVE_JAW_LOCK), + LEVEL_UP_MOVE(55, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(60, MOVE_OUTRAGE), + LEVEL_UP_END +}; +#endif //P_FAMILY_MASCHIFF + +#if P_FAMILY_SHROODLE +static const struct LevelUpMove sShroodleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 5, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE( 8, MOVE_BITE), + LEVEL_UP_MOVE( 8, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(11, MOVE_SWITCHEROO), + LEVEL_UP_MOVE(14, MOVE_POISON_FANG), + LEVEL_UP_MOVE(18, MOVE_FLATTER), + LEVEL_UP_MOVE(21, MOVE_SLASH), + LEVEL_UP_MOVE(25, MOVE_U_TURN), + LEVEL_UP_MOVE(29, MOVE_POISON_JAB), + LEVEL_UP_MOVE(33, MOVE_TAUNT), + LEVEL_UP_MOVE(36, MOVE_SUBSTITUTE), + LEVEL_UP_MOVE(40, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(45, MOVE_GUNK_SHOT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGrafaiaiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_DOODLE), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 5, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE( 8, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(11, MOVE_SWITCHEROO), + LEVEL_UP_MOVE(14, MOVE_POISON_FANG), + LEVEL_UP_MOVE(18, MOVE_FLATTER), + LEVEL_UP_MOVE(21, MOVE_SLASH), + LEVEL_UP_MOVE(25, MOVE_U_TURN), + LEVEL_UP_MOVE(33, MOVE_POISON_JAB), + LEVEL_UP_MOVE(37, MOVE_TAUNT), + LEVEL_UP_MOVE(40, MOVE_SUBSTITUTE), + LEVEL_UP_MOVE(45, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(51, MOVE_GUNK_SHOT), + LEVEL_UP_END +}; +#endif //P_FAMILY_SHROODLE + +#if P_FAMILY_BRAMBLIN +static const struct LevelUpMove sBramblinLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_ROLLOUT), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(13, MOVE_BULLET_SEED), + LEVEL_UP_MOVE(17, MOVE_INFESTATION), + LEVEL_UP_MOVE(21, MOVE_HEX), + LEVEL_UP_MOVE(25, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(29, MOVE_DISABLE), + LEVEL_UP_MOVE(35, MOVE_PHANTOM_FORCE), + LEVEL_UP_MOVE(40, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(45, MOVE_CURSE), + LEVEL_UP_MOVE(50, MOVE_PAIN_SPLIT), + LEVEL_UP_MOVE(55, MOVE_POWER_WHIP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sBrambleghastLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_ROLLOUT), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(13, MOVE_BULLET_SEED), + LEVEL_UP_MOVE(17, MOVE_INFESTATION), + LEVEL_UP_MOVE(21, MOVE_HEX), + LEVEL_UP_MOVE(25, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(29, MOVE_DISABLE), + LEVEL_UP_MOVE(35, MOVE_PHANTOM_FORCE), + LEVEL_UP_MOVE(40, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(45, MOVE_CURSE), + LEVEL_UP_MOVE(50, MOVE_PAIN_SPLIT), + LEVEL_UP_MOVE(55, MOVE_POWER_WHIP), + LEVEL_UP_END +}; +#endif //P_FAMILY_BRAMBLIN + +#if P_FAMILY_TOEDSCOOL +static const struct LevelUpMove sToedscoolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 4, MOVE_ABSORB), + LEVEL_UP_MOVE( 8, MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 8, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(12, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_TACKLE), + LEVEL_UP_MOVE(16, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(20, MOVE_SCREECH), + LEVEL_UP_MOVE(24, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(28, MOVE_HEX), + LEVEL_UP_MOVE(32, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(36, MOVE_SPORE), + LEVEL_UP_MOVE(40, MOVE_GROWTH), + LEVEL_UP_MOVE(44, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(48, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(52, MOVE_POWER_WHIP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sToedscruelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_REFLECT_TYPE), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 4, MOVE_ABSORB), + LEVEL_UP_MOVE( 8, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 8, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(12, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_TACKLE), + LEVEL_UP_MOVE(16, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(20, MOVE_SCREECH), + LEVEL_UP_MOVE(24, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(28, MOVE_HEX), + LEVEL_UP_MOVE(34, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(40, MOVE_SPORE), + LEVEL_UP_MOVE(44, MOVE_GROWTH), + LEVEL_UP_MOVE(48, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(54, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(58, MOVE_POWER_WHIP), + LEVEL_UP_END +}; +#endif //P_FAMILY_TOEDSCOOL + +#if P_FAMILY_KLAWF +static const struct LevelUpMove sKlawfLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VISE_GRIP), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 6, MOVE_HARDEN), + LEVEL_UP_MOVE( 9, MOVE_ROCK_SMASH), + LEVEL_UP_MOVE(13, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(17, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(21, MOVE_PROTECT), + LEVEL_UP_MOVE(24, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(29, MOVE_X_SCISSOR), + LEVEL_UP_MOVE(33, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(37, MOVE_FLAIL), + LEVEL_UP_MOVE(42, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(47, MOVE_HIGH_HORSEPOWER), + LEVEL_UP_MOVE(51, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(56, MOVE_GUILLOTINE), + LEVEL_UP_END +}; +#endif //P_FAMILY_KLAWF + +#if P_FAMILY_CAPSAKID +static const struct LevelUpMove sCapsakidLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_LEAFAGE), + LEVEL_UP_MOVE( 4, MOVE_BITE), + LEVEL_UP_MOVE(10, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(17, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(21, MOVE_BULLET_SEED), + LEVEL_UP_MOVE(24, MOVE_HEADBUTT), + LEVEL_UP_MOVE(28, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(38, MOVE_CRUNCH), + LEVEL_UP_MOVE(44, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(48, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sScovillainLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SPICY_EXTRACT), + LEVEL_UP_MOVE( 0, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_FIRE_FANG), + LEVEL_UP_MOVE( 1, MOVE_LEAFAGE), + LEVEL_UP_MOVE( 4, MOVE_BITE), + LEVEL_UP_MOVE(10, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(17, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(21, MOVE_BULLET_SEED), + LEVEL_UP_MOVE(24, MOVE_HEADBUTT), + LEVEL_UP_MOVE(28, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(33, MOVE_WORRY_SEED), + LEVEL_UP_MOVE(38, MOVE_CRUNCH), + LEVEL_UP_MOVE(44, MOVE_SEED_BOMB), + LEVEL_UP_MOVE(48, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(48, MOVE_OVERHEAT), + LEVEL_UP_END +}; +#endif //P_FAMILY_CAPSAKID + +#if P_FAMILY_RELLOR +static const struct LevelUpMove sRellorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 7, MOVE_STRUGGLE_BUG), + LEVEL_UP_MOVE(11, MOVE_ROLLOUT), + LEVEL_UP_MOVE(15, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(20, MOVE_BUG_BITE), + LEVEL_UP_MOVE(24, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_DIG), + LEVEL_UP_MOVE(35, MOVE_LUNGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRabscaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_REVIVAL_BLESSING), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 7, MOVE_STRUGGLE_BUG), + LEVEL_UP_MOVE(11, MOVE_ROLLOUT), + LEVEL_UP_MOVE(15, MOVE_PSYBEAM), + LEVEL_UP_MOVE(20, MOVE_BUG_BITE), + LEVEL_UP_MOVE(24, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_EXTRASENSORY), + LEVEL_UP_MOVE(35, MOVE_LUNGE), + LEVEL_UP_MOVE(40, MOVE_SPEED_SWAP), + LEVEL_UP_MOVE(40, MOVE_POWER_SWAP), + LEVEL_UP_MOVE(40, MOVE_GUARD_SWAP), + LEVEL_UP_MOVE(45, MOVE_BUG_BUZZ), + LEVEL_UP_MOVE(50, MOVE_PSYCHIC), + LEVEL_UP_END +}; +#endif //P_FAMILY_RELLOR + +#if P_FAMILY_FLITTLE +static const struct LevelUpMove sFlittleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 5, MOVE_CONFUSION), + LEVEL_UP_MOVE( 8, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE(11, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE(15, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(19, MOVE_PSYBEAM), + LEVEL_UP_MOVE(24, MOVE_PLUCK), + LEVEL_UP_MOVE(29, MOVE_AGILITY), + LEVEL_UP_MOVE(34, MOVE_UPROAR), + LEVEL_UP_END +}; + +static const struct LevelUpMove sEspathraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_LUMINA_CRASH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_DRILL_PECK), + LEVEL_UP_MOVE( 1, MOVE_FEATHER_DANCE), + LEVEL_UP_MOVE( 5, MOVE_CONFUSION), + LEVEL_UP_MOVE( 8, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE(11, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE(15, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(19, MOVE_PSYBEAM), + LEVEL_UP_MOVE(24, MOVE_PLUCK), + LEVEL_UP_MOVE(29, MOVE_AGILITY), + LEVEL_UP_MOVE(34, MOVE_UPROAR), + LEVEL_UP_MOVE(43, MOVE_DAZZLING_GLEAM), + LEVEL_UP_MOVE(49, MOVE_PSYCHIC), + LEVEL_UP_MOVE(54, MOVE_LAST_RESORT), + LEVEL_UP_END +}; +#endif //P_FAMILY_FLITTLE + +#if P_FAMILY_TINKATINK +static const struct LevelUpMove sTinkatinkLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_FAIRY_WIND), + LEVEL_UP_MOVE( 5, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE( 8, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(11, MOVE_COVET), + LEVEL_UP_MOVE(14, MOVE_ROCK_SMASH), + LEVEL_UP_MOVE(17, MOVE_DRAINING_KISS), + LEVEL_UP_MOVE(21, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(24, MOVE_BRUTAL_SWING), + LEVEL_UP_MOVE(27, MOVE_SLAM), + LEVEL_UP_MOVE(31, MOVE_FLASH_CANNON), + LEVEL_UP_MOVE(35, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(39, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(43, MOVE_FLATTER), + LEVEL_UP_MOVE(47, MOVE_SKITTER_SMACK), + LEVEL_UP_MOVE(52, MOVE_KNOCK_OFF), + LEVEL_UP_END +}; + +static const struct LevelUpMove sTinkatuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_FAIRY_WIND), + LEVEL_UP_MOVE( 5, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE( 8, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(11, MOVE_COVET), + LEVEL_UP_MOVE(14, MOVE_ROCK_SMASH), + LEVEL_UP_MOVE(17, MOVE_DRAINING_KISS), + LEVEL_UP_MOVE(21, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(24, MOVE_BRUTAL_SWING), + LEVEL_UP_MOVE(27, MOVE_SLAM), + LEVEL_UP_MOVE(31, MOVE_FLASH_CANNON), + LEVEL_UP_MOVE(35, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(39, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(43, MOVE_FLATTER), + LEVEL_UP_MOVE(47, MOVE_SKITTER_SMACK), + LEVEL_UP_MOVE(52, MOVE_KNOCK_OFF), + LEVEL_UP_END +}; + +static const struct LevelUpMove sTinkatonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_GIGATON_HAMMER), + LEVEL_UP_MOVE( 1, MOVE_FAIRY_WIND), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 5, MOVE_BABY_DOLL_EYES), + LEVEL_UP_MOVE( 8, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(11, MOVE_COVET), + LEVEL_UP_MOVE(14, MOVE_ROCK_SMASH), + LEVEL_UP_MOVE(17, MOVE_DRAINING_KISS), + LEVEL_UP_MOVE(21, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(24, MOVE_BRUTAL_SWING), + LEVEL_UP_MOVE(27, MOVE_SLAM), + LEVEL_UP_MOVE(31, MOVE_FLASH_CANNON), + LEVEL_UP_MOVE(35, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(39, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(43, MOVE_FLATTER), + LEVEL_UP_MOVE(47, MOVE_SKITTER_SMACK), + LEVEL_UP_MOVE(52, MOVE_KNOCK_OFF), + LEVEL_UP_END +}; +#endif //P_FAMILY_TINKATINK + +#if P_FAMILY_WIGLETT +static const struct LevelUpMove sWiglettLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 4, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 8, MOVE_WRAP), + LEVEL_UP_MOVE(12, MOVE_AQUA_JET), + LEVEL_UP_MOVE(20, MOVE_SLAM), + LEVEL_UP_MOVE(20, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(24, MOVE_HEADBUTT), + LEVEL_UP_MOVE(28, MOVE_DIG), + LEVEL_UP_MOVE(32, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(36, MOVE_THROAT_CHOP), + LEVEL_UP_MOVE(40, MOVE_LIQUIDATION), + LEVEL_UP_END +}; + +static const struct LevelUpMove sWugtrioLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(12, MOVE_AQUA_JET), + LEVEL_UP_MOVE(16, MOVE_SLAM), + LEVEL_UP_MOVE(20, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(24, MOVE_HEADBUTT), + LEVEL_UP_MOVE(30, MOVE_TRIPLE_DIVE), + LEVEL_UP_MOVE(36, MOVE_DIG), + LEVEL_UP_MOVE(42, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(48, MOVE_THROAT_CHOP), + LEVEL_UP_MOVE(54, MOVE_LIQUIDATION), + LEVEL_UP_END +}; +#endif //P_FAMILY_WIGLETT + +#if P_FAMILY_BOMBIRDIER +static const struct LevelUpMove sBombirdierLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_MEMENTO), + LEVEL_UP_MOVE( 1, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE( 7, MOVE_THIEF), + LEVEL_UP_MOVE(11, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(16, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(20, MOVE_PLUCK), + LEVEL_UP_MOVE(24, MOVE_TORMENT), + LEVEL_UP_MOVE(29, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(36, MOVE_PAYBACK), + LEVEL_UP_MOVE(42, MOVE_DUAL_WINGBEAT), + LEVEL_UP_MOVE(47, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(53, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(60, MOVE_PARTING_SHOT), + LEVEL_UP_END +}; +#endif //P_FAMILY_BOMBIRDIER + +#if P_FAMILY_FINIZEN +static const struct LevelUpMove sFinizenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(10, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_AQUA_JET), + LEVEL_UP_MOVE(17, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(21, MOVE_DIVE), + LEVEL_UP_MOVE(25, MOVE_CHARM), + LEVEL_UP_MOVE(29, MOVE_ACROBATICS), + LEVEL_UP_MOVE(34, MOVE_ENCORE), + LEVEL_UP_MOVE(39, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(44, MOVE_MIST), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sPalafinLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_FLIP_TURN), + LEVEL_UP_MOVE( 1, MOVE_JET_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(10, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_AQUA_JET), + LEVEL_UP_MOVE(17, MOVE_DOUBLE_HIT), + LEVEL_UP_MOVE(21, MOVE_DIVE), + LEVEL_UP_MOVE(25, MOVE_CHARM), + LEVEL_UP_MOVE(29, MOVE_ACROBATICS), + LEVEL_UP_MOVE(34, MOVE_ENCORE), + LEVEL_UP_MOVE(39, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(44, MOVE_MIST), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(55, MOVE_FOCUS_PUNCH), + LEVEL_UP_MOVE(61, MOVE_WAVE_CRASH), + LEVEL_UP_END +}; +#endif //P_FAMILY_FINIZEN + +#if P_FAMILY_VAROOM +static const struct LevelUpMove sVaroomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 4, MOVE_SMOG), + LEVEL_UP_MOVE( 7, MOVE_TAUNT), + LEVEL_UP_MOVE(10, MOVE_ASSURANCE), + LEVEL_UP_MOVE(13, MOVE_SLUDGE), + LEVEL_UP_MOVE(17, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(21, MOVE_HEADBUTT), + LEVEL_UP_MOVE(25, MOVE_SCREECH), + LEVEL_UP_MOVE(28, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(32, MOVE_SWAGGER), + LEVEL_UP_MOVE(36, MOVE_POISON_JAB), + LEVEL_UP_MOVE(41, MOVE_UPROAR), + LEVEL_UP_MOVE(46, MOVE_SPIN_OUT), + LEVEL_UP_MOVE(50, MOVE_GUNK_SHOT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sRevavroomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_SHIFT_GEAR), + LEVEL_UP_MOVE( 1, MOVE_MAGNET_RISE), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 4, MOVE_SMOG), + LEVEL_UP_MOVE( 7, MOVE_TAUNT), + LEVEL_UP_MOVE(10, MOVE_ASSURANCE), + LEVEL_UP_MOVE(13, MOVE_SLUDGE), + LEVEL_UP_MOVE(17, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(21, MOVE_HEADBUTT), + LEVEL_UP_MOVE(25, MOVE_SCREECH), + LEVEL_UP_MOVE(28, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(32, MOVE_SWAGGER), + LEVEL_UP_MOVE(36, MOVE_POISON_JAB), + LEVEL_UP_MOVE(46, MOVE_UPROAR), + LEVEL_UP_MOVE(52, MOVE_SPIN_OUT), + LEVEL_UP_MOVE(58, MOVE_GUNK_SHOT), + LEVEL_UP_END +}; +#endif //P_FAMILY_VAROOM + +#if P_FAMILY_CYCLIZAR +static const struct LevelUpMove sCyclizarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(11, MOVE_TAUNT), + LEVEL_UP_MOVE(14, MOVE_BREAKING_SWIPE), + LEVEL_UP_MOVE(18, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(23, MOVE_BITE), + LEVEL_UP_MOVE(27, MOVE_U_TURN), + LEVEL_UP_MOVE(31, MOVE_SHED_TAIL), + LEVEL_UP_MOVE(36, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(40, MOVE_SHIFT_GEAR), + LEVEL_UP_MOVE(45, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(51, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(57, MOVE_DRAGON_RUSH), + LEVEL_UP_END +}; +#endif //P_FAMILY_CYCLIZAR + +#if P_FAMILY_ORTHWORM +static const struct LevelUpMove sOrthwormLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(12, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE(16, MOVE_BULLDOZE), + LEVEL_UP_MOVE(21, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(26, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(30, MOVE_DIG), + LEVEL_UP_MOVE(34, MOVE_SANDSTORM), + LEVEL_UP_MOVE(38, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(43, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(47, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(52, MOVE_SHED_TAIL), + LEVEL_UP_END +}; +#endif //P_FAMILY_ORTHWORM + +#if P_FAMILY_GLIMMET +static const struct LevelUpMove sGlimmetLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE( 7, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE(11, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(15, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE(18, MOVE_STEALTH_ROCK), + LEVEL_UP_MOVE(22, MOVE_VENOSHOCK), + LEVEL_UP_MOVE(26, MOVE_SANDSTORM), + LEVEL_UP_MOVE(29, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(33, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(37, MOVE_POWER_GEM), + LEVEL_UP_MOVE(41, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(46, MOVE_SLUDGE_WAVE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGlimmoraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_MORTAL_SPIN), + LEVEL_UP_MOVE( 1, MOVE_SMACK_DOWN), + LEVEL_UP_MOVE( 1, MOVE_SPIKY_SHIELD), + LEVEL_UP_MOVE( 1, MOVE_TOXIC_SPIKES), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE(11, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(15, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE(18, MOVE_STEALTH_ROCK), + LEVEL_UP_MOVE(22, MOVE_VENOSHOCK), + LEVEL_UP_MOVE(26, MOVE_SANDSTORM), + LEVEL_UP_MOVE(29, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(33, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(39, MOVE_POWER_GEM), + LEVEL_UP_MOVE(44, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(50, MOVE_SLUDGE_WAVE), + LEVEL_UP_END +}; +#endif //P_FAMILY_GLIMMET + +#if P_FAMILY_GREAVARD +static const struct LevelUpMove sGreavardLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 3, MOVE_LICK), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 6, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_ROAR), + LEVEL_UP_MOVE(12, MOVE_HEADBUTT), + LEVEL_UP_MOVE(16, MOVE_DIG), + LEVEL_UP_MOVE(24, MOVE_REST), + LEVEL_UP_MOVE(28, MOVE_CRUNCH), + LEVEL_UP_MOVE(32, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(37, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(41, MOVE_PHANTOM_FORCE), + LEVEL_UP_MOVE(46, MOVE_CHARM), + LEVEL_UP_MOVE(52, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sHoundstoneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_LAST_RESPECTS), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 3, MOVE_LICK), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 6, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_ROAR), + LEVEL_UP_MOVE(12, MOVE_HEADBUTT), + LEVEL_UP_MOVE(16, MOVE_DIG), + LEVEL_UP_MOVE(24, MOVE_REST), + LEVEL_UP_MOVE(28, MOVE_CRUNCH), + LEVEL_UP_MOVE(36, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(41, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(46, MOVE_PHANTOM_FORCE), + LEVEL_UP_MOVE(51, MOVE_CHARM), + LEVEL_UP_MOVE(58, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; +#endif //P_FAMILY_GREAVARD + +#if P_FAMILY_FLAMIGO +static const struct LevelUpMove sFlamigoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_COPYCAT), + LEVEL_UP_MOVE( 5, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 9, MOVE_DETECT), + LEVEL_UP_MOVE(12, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(15, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(18, MOVE_LOW_KICK), + LEVEL_UP_MOVE(21, MOVE_FEINT), + LEVEL_UP_MOVE(27, MOVE_PAYBACK), + LEVEL_UP_MOVE(31, MOVE_ROOST), + LEVEL_UP_MOVE(35, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(39, MOVE_MEGA_KICK), + LEVEL_UP_MOVE(44, MOVE_WIDE_GUARD), + LEVEL_UP_MOVE(48, MOVE_THROAT_CHOP), + LEVEL_UP_MOVE(54, MOVE_BRAVE_BIRD), + LEVEL_UP_END +}; +#endif //P_FAMILY_FLAMIGO + +#if P_FAMILY_CETODDLE +static const struct LevelUpMove sCetoddleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_ECHOED_VOICE), + LEVEL_UP_MOVE(12, MOVE_ICE_SHARD), + LEVEL_UP_MOVE(15, MOVE_REST), + LEVEL_UP_MOVE(19, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(25, MOVE_FLAIL), + LEVEL_UP_MOVE(27, MOVE_AVALANCHE), + LEVEL_UP_MOVE(31, MOVE_BOUNCE), + LEVEL_UP_MOVE(36, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(40, MOVE_AMNESIA), + LEVEL_UP_MOVE(44, MOVE_ICE_SPINNER), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(53, MOVE_BLIZZARD), + LEVEL_UP_END +}; + +static const struct LevelUpMove sCetitanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_ECHOED_VOICE), + LEVEL_UP_MOVE(12, MOVE_ICE_SHARD), + LEVEL_UP_MOVE(15, MOVE_REST), + LEVEL_UP_MOVE(19, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(25, MOVE_FLAIL), + LEVEL_UP_MOVE(27, MOVE_AVALANCHE), + LEVEL_UP_MOVE(31, MOVE_BOUNCE), + LEVEL_UP_MOVE(36, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(40, MOVE_AMNESIA), + LEVEL_UP_MOVE(44, MOVE_ICE_SPINNER), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(53, MOVE_BLIZZARD), + LEVEL_UP_END +}; +#endif //P_FAMILY_CETODDLE + +#if P_FAMILY_VELUZA +static const struct LevelUpMove sVeluzaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_AQUA_JET), + LEVEL_UP_MOVE( 7, MOVE_PLUCK), + LEVEL_UP_MOVE(11, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(15, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(20, MOVE_SLASH), + LEVEL_UP_MOVE(25, MOVE_AQUA_CUTTER), + LEVEL_UP_MOVE(30, MOVE_FILLET_AWAY), + LEVEL_UP_MOVE(35, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(40, MOVE_PSYCHO_CUT), + LEVEL_UP_MOVE(45, MOVE_LIQUIDATION), + LEVEL_UP_MOVE(50, MOVE_CRUNCH), + LEVEL_UP_MOVE(55, MOVE_FINAL_GAMBIT), + LEVEL_UP_END +}; +#endif //P_FAMILY_VELUZA + +#if P_FAMILY_DONDOZO +static const struct LevelUpMove sDondozoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 5, MOVE_TICKLE), + LEVEL_UP_MOVE(10, MOVE_FLAIL), + LEVEL_UP_MOVE(15, MOVE_REST), + LEVEL_UP_MOVE(15, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(20, MOVE_DIVE), + LEVEL_UP_MOVE(25, MOVE_NOBLE_ROAR), + LEVEL_UP_MOVE(30, MOVE_SOAK), + LEVEL_UP_MOVE(35, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(40, MOVE_AQUA_TAIL), + LEVEL_UP_MOVE(45, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(50, MOVE_ORDER_UP), + LEVEL_UP_MOVE(55, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE(60, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(65, MOVE_WAVE_CRASH), + LEVEL_UP_END +}; +#endif //P_FAMILY_DONDOZO + +#if P_FAMILY_TATSUGIRI +static const struct LevelUpMove sTatsugiriLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 6, MOVE_HARDEN), + LEVEL_UP_MOVE(12, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(17, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(23, MOVE_SOAK), + LEVEL_UP_MOVE(28, MOVE_TAUNT), + LEVEL_UP_MOVE(34, MOVE_MEMENTO), + LEVEL_UP_MOVE(39, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(43, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(47, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(52, MOVE_DRAGON_PULSE), + LEVEL_UP_END +}; +#endif //P_FAMILY_TATSUGIRI + +#if P_FAMILY_GREAT_TUSK +static const struct LevelUpMove sGreatTuskLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_ROLLOUT), + LEVEL_UP_MOVE( 1, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 7, MOVE_BULLDOZE), + LEVEL_UP_MOVE(14, MOVE_TAUNT), + LEVEL_UP_MOVE(21, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(28, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(35, MOVE_STOMPING_TANTRUM), + LEVEL_UP_MOVE(42, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(49, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(56, MOVE_GIGA_IMPACT), + LEVEL_UP_MOVE(63, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE(70, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(77, MOVE_MEGAHORN), + LEVEL_UP_MOVE(84, MOVE_HEAD_SMASH), + LEVEL_UP_MOVE(91, MOVE_HEADLONG_RUSH), + LEVEL_UP_END +}; +#endif //P_FAMILY_GREAT_TUSK + +#if P_FAMILY_SCREAM_TAIL +static const struct LevelUpMove sScreamTailLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 7, MOVE_HOWL), + LEVEL_UP_MOVE(14, MOVE_NOBLE_ROAR), + LEVEL_UP_MOVE(21, MOVE_BITE), + LEVEL_UP_MOVE(28, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(35, MOVE_REST), + LEVEL_UP_MOVE(42, MOVE_PLAY_ROUGH), + LEVEL_UP_MOVE(49, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(56, MOVE_PSYCHIC_FANGS), + LEVEL_UP_MOVE(63, MOVE_CRUNCH), + LEVEL_UP_MOVE(70, MOVE_WISH), + LEVEL_UP_MOVE(77, MOVE_GYRO_BALL), + LEVEL_UP_MOVE(84, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(91, MOVE_BOOMBURST), + LEVEL_UP_END +}; +#endif //P_FAMILY_SCREAM_TAIL + +#if P_FAMILY_BRUTE_BONNET +static const struct LevelUpMove sBruteBonnetLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(14, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(21, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(28, MOVE_CLEAR_SMOG), + LEVEL_UP_MOVE(35, MOVE_PAYBACK), + LEVEL_UP_MOVE(42, MOVE_THRASH), + LEVEL_UP_MOVE(49, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(56, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(63, MOVE_SPORE), + LEVEL_UP_MOVE(70, MOVE_INGRAIN), + LEVEL_UP_MOVE(77, MOVE_RAGE_POWDER), + LEVEL_UP_MOVE(91, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; +#endif //P_FAMILY_BRUTE_BONNET + +#if P_FAMILY_FLUTTER_MANE +static const struct LevelUpMove sFlutterManeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 1, MOVE_SPITE), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 7, MOVE_PSYBEAM), + LEVEL_UP_MOVE(14, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(21, MOVE_MEMENTO), + LEVEL_UP_MOVE(28, MOVE_WISH), + LEVEL_UP_MOVE(35, MOVE_DAZZLING_GLEAM), + LEVEL_UP_MOVE(42, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(49, MOVE_MYSTICAL_FIRE), + LEVEL_UP_MOVE(56, MOVE_POWER_GEM), + LEVEL_UP_MOVE(63, MOVE_PSYSHOCK), + LEVEL_UP_MOVE(70, MOVE_PHANTOM_FORCE), + LEVEL_UP_MOVE(77, MOVE_PAIN_SPLIT), + LEVEL_UP_MOVE(84, MOVE_MOONBLAST), + LEVEL_UP_MOVE(91, MOVE_PERISH_SONG), + LEVEL_UP_END +}; +#endif //P_FAMILY_FLUTTER_MANE + +#if P_FAMILY_SLITHER_WING +static const struct LevelUpMove sSlitherWingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_BUG_BITE), + LEVEL_UP_MOVE( 7, MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(14, MOVE_FLAME_CHARGE), + LEVEL_UP_MOVE(21, MOVE_STOMP), + LEVEL_UP_MOVE(28, MOVE_LOW_SWEEP), + LEVEL_UP_MOVE(35, MOVE_MORNING_SUN), + LEVEL_UP_MOVE(42, MOVE_LUNGE), + LEVEL_UP_MOVE(49, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(56, MOVE_BULK_UP), + LEVEL_UP_MOVE(63, MOVE_DUAL_WINGBEAT), + LEVEL_UP_MOVE(70, MOVE_FIRST_IMPRESSION), + LEVEL_UP_MOVE(77, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(84, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(91, MOVE_THRASH), + LEVEL_UP_END +}; +#endif //P_FAMILY_SLITHER_WING + +#if P_FAMILY_SANDY_SHOCKS +static const struct LevelUpMove sSandyShocksLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 7, MOVE_SPARK), + LEVEL_UP_MOVE(14, MOVE_BULLDOZE), + LEVEL_UP_MOVE(21, MOVE_CHARGE_BEAM), + LEVEL_UP_MOVE(28, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(35, MOVE_SCREECH), + LEVEL_UP_MOVE(42, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE(49, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(56, MOVE_DISCHARGE), + LEVEL_UP_MOVE(63, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(70, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(77, MOVE_GRAVITY), + LEVEL_UP_MOVE(84, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(91, MOVE_MAGNETIC_FLUX), + LEVEL_UP_END +}; +#endif //P_FAMILY_SANDY_SHOCKS + +#if P_FAMILY_IRON_TREADS +static const struct LevelUpMove sIronTreadsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_ROLLOUT), + LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN), + LEVEL_UP_MOVE( 7, MOVE_BULLDOZE), + LEVEL_UP_MOVE(21, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(28, MOVE_IRON_HEAD), + LEVEL_UP_MOVE(35, MOVE_STOMPING_TANTRUM), + LEVEL_UP_MOVE(42, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(49, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(56, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE(63, MOVE_WILD_CHARGE), + LEVEL_UP_MOVE(70, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(77, MOVE_MEGAHORN), + LEVEL_UP_MOVE(84, MOVE_GIGA_IMPACT), + LEVEL_UP_MOVE(91, MOVE_STEEL_ROLLER), + LEVEL_UP_END +}; +#endif //P_FAMILY_IRON_TREADS + +#if P_FAMILY_IRON_BUNDLE +static const struct LevelUpMove sIronBundleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PRESENT), + LEVEL_UP_MOVE( 7, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(14, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE(21, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(28, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(35, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(42, MOVE_FREEZE_DRY), + LEVEL_UP_MOVE(49, MOVE_FLIP_TURN), + LEVEL_UP_MOVE(56, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(63, MOVE_AGILITY), + LEVEL_UP_MOVE(70, MOVE_SNOWSCAPE), + LEVEL_UP_MOVE(77, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(84, MOVE_AURORA_VEIL), + LEVEL_UP_MOVE(91, MOVE_BLIZZARD), + LEVEL_UP_END +}; +#endif //P_FAMILY_IRON_BUNDLE + +#if P_FAMILY_IRON_HANDS +static const struct LevelUpMove sIronHandsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_ARM_THRUST), + LEVEL_UP_MOVE( 7, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(14, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(21, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(28, MOVE_SLAM), + LEVEL_UP_MOVE(35, MOVE_FORCE_PALM), + LEVEL_UP_MOVE(42, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(49, MOVE_CHARGE), + LEVEL_UP_MOVE(56, MOVE_WILD_CHARGE), + LEVEL_UP_MOVE(63, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE(70, MOVE_DETECT), + LEVEL_UP_MOVE(77, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE(84, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(91, MOVE_FOCUS_PUNCH), + LEVEL_UP_END +}; +#endif //P_FAMILY_IRON_HANDS + +#if P_FAMILY_IRON_JUGULIS +static const struct LevelUpMove sIronJugulisLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN), + LEVEL_UP_MOVE( 1, MOVE_WORK_UP), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE( 7, MOVE_ROAR), + LEVEL_UP_MOVE(14, MOVE_ASSURANCE), + LEVEL_UP_MOVE(21, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(28, MOVE_SNARL), + LEVEL_UP_MOVE(35, MOVE_CRUNCH), + LEVEL_UP_MOVE(42, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(56, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(63, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(70, MOVE_DARK_PULSE), + LEVEL_UP_MOVE(77, MOVE_OUTRAGE), + LEVEL_UP_MOVE(84, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(91, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; +#endif //P_FAMILY_IRON_JUGULIS + +#if P_FAMILY_IRON_MOTH +static const struct LevelUpMove sIronMothLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE( 7, MOVE_STRUGGLE_BUG), + LEVEL_UP_MOVE(14, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(21, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(28, MOVE_LUNGE), + LEVEL_UP_MOVE(35, MOVE_SCREECH), + LEVEL_UP_MOVE(42, MOVE_DISCHARGE), + LEVEL_UP_MOVE(49, MOVE_SLUDGE_WAVE), + LEVEL_UP_MOVE(56, MOVE_FIERY_DANCE), + LEVEL_UP_MOVE(63, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(70, MOVE_MORNING_SUN), + LEVEL_UP_MOVE(77, MOVE_HURRICANE), + LEVEL_UP_MOVE(84, MOVE_BUG_BUZZ), + LEVEL_UP_MOVE(91, MOVE_OVERHEAT), + LEVEL_UP_END +}; +#endif //P_FAMILY_IRON_MOTH + +#if P_FAMILY_IRON_THORNS +static const struct LevelUpMove sIronThornsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 1, MOVE_FIRE_FANG), + LEVEL_UP_MOVE( 1, MOVE_ICE_FANG), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_FANG), + LEVEL_UP_MOVE( 1, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE( 7, MOVE_SCREECH), + LEVEL_UP_MOVE(21, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(28, MOVE_BITE), + LEVEL_UP_MOVE(35, MOVE_CHARGE), + LEVEL_UP_MOVE(42, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(49, MOVE_SANDSTORM), + LEVEL_UP_MOVE(56, MOVE_WILD_CHARGE), + LEVEL_UP_MOVE(63, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(70, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(77, MOVE_STEALTH_ROCK), + LEVEL_UP_MOVE(84, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(91, MOVE_GIGA_IMPACT), + LEVEL_UP_END +}; +#endif //P_FAMILY_IRON_THORNS + +#if P_FAMILY_FRIGIBAX +static const struct LevelUpMove sFrigibaxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_DRAGON_TAIL), + LEVEL_UP_MOVE( 6, MOVE_ICY_WIND), + LEVEL_UP_MOVE(12, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(18, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(24, MOVE_BITE), + LEVEL_UP_MOVE(29, MOVE_ICE_FANG), + LEVEL_UP_MOVE(32, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(36, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(40, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(44, MOVE_CRUNCH), + LEVEL_UP_MOVE(48, MOVE_ICICLE_CRASH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sArctibaxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_DRAGON_TAIL), + LEVEL_UP_MOVE( 6, MOVE_ICY_WIND), + LEVEL_UP_MOVE(12, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(18, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(24, MOVE_BITE), + LEVEL_UP_MOVE(29, MOVE_ICE_FANG), + LEVEL_UP_MOVE(40, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(45, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(50, MOVE_CRUNCH), + LEVEL_UP_MOVE(55, MOVE_ICICLE_CRASH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sBaxcaliburLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_GLAIVE_RUSH), + LEVEL_UP_MOVE( 1, MOVE_SNOWSCAPE), + LEVEL_UP_MOVE( 1, MOVE_BREAKING_SWIPE), + LEVEL_UP_MOVE( 1, MOVE_DRAGON_TAIL), + LEVEL_UP_MOVE( 1, MOVE_ICE_SHARD), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_ICY_WIND), + LEVEL_UP_MOVE(12, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(18, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(24, MOVE_BITE), + LEVEL_UP_MOVE(29, MOVE_ICE_FANG), + LEVEL_UP_MOVE(35, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(48, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(55, MOVE_CRUNCH), + LEVEL_UP_MOVE(62, MOVE_ICICLE_CRASH), + LEVEL_UP_END +}; +#endif //P_FAMILY_FRIGIBAX + +#if P_FAMILY_GIMMIGHOUL +static const struct LevelUpMove sGimmighoulLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGholdengoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 7, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(14, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(21, MOVE_SUBSTITUTE), + LEVEL_UP_MOVE(28, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(35, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(42, MOVE_RECOVER), + LEVEL_UP_MOVE(49, MOVE_POWER_GEM), + LEVEL_UP_MOVE(56, MOVE_MAKE_IT_RAIN), + LEVEL_UP_MOVE(63, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(70, MOVE_MEMENTO), + LEVEL_UP_END +}; +#endif //P_FAMILY_GIMMIGHOUL + +#if P_FAMILY_WO_CHIEN +static const struct LevelUpMove sWoChienLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_SPITE), + LEVEL_UP_MOVE( 1, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 5, MOVE_TICKLE), + LEVEL_UP_MOVE(10, MOVE_PAYBACK), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(20, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(25, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(30, MOVE_GROWTH), + LEVEL_UP_MOVE(35, MOVE_INGRAIN), + LEVEL_UP_MOVE(40, MOVE_DARK_PULSE), + LEVEL_UP_MOVE(45, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(50, MOVE_RUINATION), + LEVEL_UP_MOVE(55, MOVE_FOUL_PLAY), + LEVEL_UP_MOVE(60, MOVE_POWER_WHIP), + LEVEL_UP_MOVE(65, MOVE_GRASSY_TERRAIN), + LEVEL_UP_MOVE(70, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(75, MOVE_LEAF_STORM), + LEVEL_UP_END +}; +#endif //P_FAMILY_WO_CHIEN + +#if P_FAMILY_CHIEN_PAO +static const struct LevelUpMove sChienPaoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPITE), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 5, MOVE_ICY_WIND), + LEVEL_UP_MOVE(10, MOVE_PAYBACK), + LEVEL_UP_MOVE(15, MOVE_MIST), + LEVEL_UP_MOVE(15, MOVE_HAZE), + LEVEL_UP_MOVE(20, MOVE_ICE_SHARD), + LEVEL_UP_MOVE(25, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(30, MOVE_SNOWSCAPE), + LEVEL_UP_MOVE(35, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(40, MOVE_DARK_PULSE), + LEVEL_UP_MOVE(45, MOVE_ICICLE_CRASH), + LEVEL_UP_MOVE(50, MOVE_RUINATION), + LEVEL_UP_MOVE(55, MOVE_SUCKER_PUNCH), + LEVEL_UP_MOVE(60, MOVE_SACRED_SWORD), + LEVEL_UP_MOVE(65, MOVE_RECOVER), + LEVEL_UP_MOVE(70, MOVE_THROAT_CHOP), + LEVEL_UP_MOVE(75, MOVE_SHEER_COLD), + LEVEL_UP_END +}; +#endif //P_FAMILY_CHIEN_PAO + +#if P_FAMILY_TING_LU +static const struct LevelUpMove sTingLuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 1, MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 1, MOVE_SPITE), + LEVEL_UP_MOVE( 5, MOVE_SPIKES), + LEVEL_UP_MOVE(10, MOVE_PAYBACK), + LEVEL_UP_MOVE(15, MOVE_STOMP), + LEVEL_UP_MOVE(20, MOVE_BULLDOZE), + LEVEL_UP_MOVE(25, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(30, MOVE_TAUNT), + LEVEL_UP_MOVE(35, MOVE_THRASH), + LEVEL_UP_MOVE(40, MOVE_DARK_PULSE), + LEVEL_UP_MOVE(45, MOVE_STOMPING_TANTRUM), + LEVEL_UP_MOVE(50, MOVE_RUINATION), + LEVEL_UP_MOVE(55, MOVE_THROAT_CHOP), + LEVEL_UP_MOVE(60, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(65, MOVE_MEMENTO), + LEVEL_UP_MOVE(70, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(75, MOVE_FISSURE), + LEVEL_UP_END +}; +#endif //P_FAMILY_TING_LU + +#if P_FAMILY_CHI_YU +static const struct LevelUpMove sChiYuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_SPITE), + LEVEL_UP_MOVE( 1, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE( 5, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(10, MOVE_PAYBACK), + LEVEL_UP_MOVE(15, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(20, MOVE_FLAME_CHARGE), + LEVEL_UP_MOVE(25, MOVE_INCINERATE), + LEVEL_UP_MOVE(30, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(35, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(40, MOVE_DARK_PULSE), + LEVEL_UP_MOVE(45, MOVE_LAVA_PLUME), + LEVEL_UP_MOVE(50, MOVE_RUINATION), + LEVEL_UP_MOVE(55, MOVE_BOUNCE), + LEVEL_UP_MOVE(60, MOVE_SWAGGER), + LEVEL_UP_MOVE(65, MOVE_INFERNO), + LEVEL_UP_MOVE(70, MOVE_MEMENTO), + LEVEL_UP_MOVE(75, MOVE_OVERHEAT), + LEVEL_UP_END +}; +#endif //P_FAMILY_CHI_YU + +#if P_FAMILY_ROARING_MOON +static const struct LevelUpMove sRoaringMoonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_INCINERATE), + LEVEL_UP_MOVE(14, MOVE_HEADBUTT), + LEVEL_UP_MOVE(21, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(28, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(35, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(42, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(49, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(56, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(63, MOVE_DRAGON_RUSH), + LEVEL_UP_MOVE(70, MOVE_FLY), + LEVEL_UP_MOVE(77, MOVE_THROAT_CHOP), + LEVEL_UP_MOVE(84, MOVE_ROOST), + LEVEL_UP_MOVE(91, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; +#endif //P_FAMILY_ROARING_MOON + +#if P_FAMILY_IRON_VALIANT +static const struct LevelUpMove sIronValiantLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_SHADOW_SNEAK), + LEVEL_UP_MOVE( 1, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE( 7, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(14, MOVE_FEINT), + LEVEL_UP_MOVE(21, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(28, MOVE_DAZZLING_GLEAM), + LEVEL_UP_MOVE(35, MOVE_PSYCHO_CUT), + LEVEL_UP_MOVE(42, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(49, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(56, MOVE_MOONBLAST), + LEVEL_UP_MOVE(63, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE(70, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(77, MOVE_DESTINY_BOND), + LEVEL_UP_MOVE(84, MOVE_QUICK_GUARD), + LEVEL_UP_MOVE(84, MOVE_WIDE_GUARD), + LEVEL_UP_MOVE(91, MOVE_SPIRIT_BREAK), + LEVEL_UP_END +}; +#endif //P_FAMILY_IRON_VALIANT + +#if P_FAMILY_KORAIDON +static const struct LevelUpMove sKoraidonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 1, MOVE_BREAKING_SWIPE), + LEVEL_UP_MOVE( 7, MOVE_ROCK_SMASH), + LEVEL_UP_MOVE(14, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(21, MOVE_DRAIN_PUNCH), + LEVEL_UP_MOVE(28, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(35, MOVE_AGILITY), + LEVEL_UP_MOVE(42, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(49, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(56, MOVE_COLLISION_COURSE), + LEVEL_UP_MOVE(63, MOVE_SCREECH), + LEVEL_UP_MOVE(70, MOVE_COUNTER), + LEVEL_UP_MOVE(77, MOVE_OUTRAGE), + LEVEL_UP_MOVE(84, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE(91, MOVE_FLARE_BLITZ), + LEVEL_UP_MOVE(98, MOVE_GIGA_IMPACT), + LEVEL_UP_END +}; +#endif //P_FAMILY_KORAIDON + +#if P_FAMILY_MIRAIDON +static const struct LevelUpMove sMiraidonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN), + LEVEL_UP_MOVE( 7, MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE(14, MOVE_CHARGE), + LEVEL_UP_MOVE(21, MOVE_PARABOLIC_CHARGE), + LEVEL_UP_MOVE(28, MOVE_DISCHARGE), + LEVEL_UP_MOVE(35, MOVE_AGILITY), + LEVEL_UP_MOVE(42, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(56, MOVE_ELECTRO_DRIFT), + LEVEL_UP_MOVE(63, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(70, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(77, MOVE_OUTRAGE), + LEVEL_UP_MOVE(84, MOVE_THUNDER), + LEVEL_UP_MOVE(91, MOVE_OVERHEAT), + LEVEL_UP_MOVE(98, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; +#endif //P_FAMILY_MIRAIDON + +#if P_FAMILY_WALKING_WAKE +static const struct LevelUpMove sWalkingWakeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ROAR), + LEVEL_UP_MOVE( 1, MOVE_TWISTER), + LEVEL_UP_MOVE( 1, MOVE_AQUA_JET), + LEVEL_UP_MOVE( 7, MOVE_BITE), + LEVEL_UP_MOVE(14, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(21, MOVE_NOBLE_ROAR), + LEVEL_UP_MOVE(28, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(35, MOVE_BREAKING_SWIPE), + LEVEL_UP_MOVE(42, MOVE_DRAGON_RUSH), + LEVEL_UP_MOVE(56, MOVE_HYDRO_STEAM), + LEVEL_UP_MOVE(63, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(70, MOVE_OUTRAGE), + LEVEL_UP_MOVE(77, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(84, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; +#endif //P_FAMILY_WALKING_WAKE + +#if P_FAMILY_IRON_LEAVES +static const struct LevelUpMove sIronLeavesLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 1, MOVE_WORK_UP), + LEVEL_UP_MOVE( 7, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(14, MOVE_RETALIATE), + LEVEL_UP_MOVE(21, MOVE_QUICK_GUARD), + LEVEL_UP_MOVE(28, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE(35, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(42, MOVE_SACRED_SWORD), + LEVEL_UP_MOVE(49, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(56, MOVE_PSYBLADE), + LEVEL_UP_MOVE(63, MOVE_CLOSE_COMBAT), + LEVEL_UP_MOVE(70, MOVE_IMPRISON), + LEVEL_UP_MOVE(77, MOVE_MEGAHORN), + LEVEL_UP_MOVE(84, MOVE_ALLY_SWITCH), + LEVEL_UP_MOVE(91, MOVE_SOLAR_BLADE), + LEVEL_UP_END +}; +#endif //P_FAMILY_IRON_LEAVES + +#if P_FAMILY_POLTCHAGEIST +static const struct LevelUpMove sPoltchageistLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 6, MOVE_ABSORB), + LEVEL_UP_MOVE(12, MOVE_LIFE_DEW), + LEVEL_UP_MOVE(18, MOVE_FOUL_PLAY), + LEVEL_UP_MOVE(24, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(30, MOVE_HEX), + LEVEL_UP_MOVE(36, MOVE_RAGE_POWDER), + LEVEL_UP_MOVE(42, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(48, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(54, MOVE_MEMENTO), + LEVEL_UP_MOVE(60, MOVE_LEAF_STORM), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSinistchaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_MATCHA_GOTCHA), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 6, MOVE_ABSORB), + LEVEL_UP_MOVE(12, MOVE_LIFE_DEW), + LEVEL_UP_MOVE(18, MOVE_FOUL_PLAY), + LEVEL_UP_MOVE(24, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(30, MOVE_HEX), + LEVEL_UP_MOVE(36, MOVE_RAGE_POWDER), + LEVEL_UP_MOVE(42, MOVE_STRENGTH_SAP), + LEVEL_UP_MOVE(48, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(54, MOVE_MEMENTO), + LEVEL_UP_MOVE(60, MOVE_LEAF_STORM), + LEVEL_UP_END +}; +#endif //P_FAMILY_POLTCHAGEIST + +#if P_FAMILY_OKIDOGI +static const struct LevelUpMove sOkidogiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_BULK_UP), + LEVEL_UP_MOVE( 8, MOVE_HOWL), + LEVEL_UP_MOVE(16, MOVE_POISON_FANG), + LEVEL_UP_MOVE(24, MOVE_FORCE_PALM), + LEVEL_UP_MOVE(32, MOVE_COUNTER), + LEVEL_UP_MOVE(40, MOVE_POISON_JAB), + LEVEL_UP_MOVE(48, MOVE_BRUTAL_SWING), + LEVEL_UP_MOVE(56, MOVE_CRUNCH), + LEVEL_UP_MOVE(64, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(72, MOVE_GIGA_IMPACT), + LEVEL_UP_END +}; +#endif //P_FAMILY_OKIDOGI + +#if P_FAMILY_MUNKIDORI +static const struct LevelUpMove sMunkidoriLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_FAKE_OUT), + LEVEL_UP_MOVE( 1, MOVE_FLATTER), + LEVEL_UP_MOVE( 8, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(16, MOVE_PSYBEAM), + LEVEL_UP_MOVE(24, MOVE_CLEAR_SMOG), + LEVEL_UP_MOVE(32, MOVE_POISON_JAB), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(48, MOVE_SLUDGE_WAVE), + LEVEL_UP_MOVE(56, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(64, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(72, MOVE_PARTING_SHOT), + LEVEL_UP_END +}; +#endif //P_FAMILY_MUNKIDORI + +#if P_FAMILY_FEZANDIPITI +static const struct LevelUpMove sFezandipitiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_DISARMING_VOICE), + LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(16, MOVE_ATTRACT), + LEVEL_UP_MOVE(24, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(32, MOVE_CROSS_POISON), + LEVEL_UP_MOVE(40, MOVE_TAIL_SLAP), + LEVEL_UP_MOVE(48, MOVE_BEAT_UP), + LEVEL_UP_MOVE(56, MOVE_FLATTER), + LEVEL_UP_MOVE(56, MOVE_SWAGGER), + LEVEL_UP_MOVE(64, MOVE_ROOST), + LEVEL_UP_MOVE(72, MOVE_MOONBLAST), + LEVEL_UP_END +}; +#endif //P_FAMILY_FEZANDIPITI + +#if P_FAMILY_OGERPON +static const struct LevelUpMove sOgerponLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE( 6, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(12, MOVE_GROWTH), + LEVEL_UP_MOVE(18, MOVE_SLAM), + LEVEL_UP_MOVE(24, MOVE_LOW_SWEEP), + LEVEL_UP_MOVE(30, MOVE_IVY_CUDGEL), + LEVEL_UP_MOVE(36, MOVE_THROAT_CHOP), + LEVEL_UP_MOVE(42, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(48, MOVE_SPIKY_SHIELD), + LEVEL_UP_MOVE(54, MOVE_POWER_WHIP), + LEVEL_UP_MOVE(60, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(66, MOVE_WOOD_HAMMER), + LEVEL_UP_END +}; #endif diff --git a/src/data/pokemon/pokedex_entries.h b/src/data/pokemon/pokedex_entries.h deleted file mode 100644 index 56af95f1b7..0000000000 --- a/src/data/pokemon/pokedex_entries.h +++ /dev/null @@ -1,10884 +0,0 @@ -const struct PokedexEntry gPokedexEntries[] = -{ - [NATIONAL_DEX_NONE] = - { - .categoryName = _("Unknown"), - .height = 0, - .weight = 0, - .description = gDummyPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BULBASAUR] = - { - .categoryName = _("Seed"), - .height = 7, - .weight = 69, - .description = gBulbasaurPokedexText, - .pokemonScale = 356, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_IVYSAUR] = - { - .categoryName = _("Seed"), - .height = 10, - .weight = 130, - .description = gIvysaurPokedexText, - .pokemonScale = 335, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VENUSAUR] = - { - .categoryName = _("Seed"), - .height = 20, - .weight = 1000, - .description = gVenusaurPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 388, - .trainerOffset = 6, - }, - - [NATIONAL_DEX_CHARMANDER] = - { - .categoryName = _("Lizard"), - .height = 6, - .weight = 85, - .description = gCharmanderPokedexText, - .pokemonScale = 444, - .pokemonOffset = 18, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CHARMELEON] = - { - .categoryName = _("Flame"), - .height = 11, - .weight = 190, - .description = gCharmeleonPokedexText, - .pokemonScale = 302, - .pokemonOffset = 9, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CHARIZARD] = - { - .categoryName = _("Flame"), - .height = 17, - .weight = 905, - .description = gCharizardPokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 302, - .trainerOffset = 3, - }, - - [NATIONAL_DEX_SQUIRTLE] = - { - .categoryName = _("Tiny Turtle"), - .height = 5, - .weight = 90, - .description = gSquirtlePokedexText, - .pokemonScale = 412, - .pokemonOffset = 18, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WARTORTLE] = - { - .categoryName = _("Turtle"), - .height = 10, - .weight = 225, - .description = gWartortlePokedexText, - .pokemonScale = 332, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BLASTOISE] = - { - .categoryName = _("Shellfish"), - .height = 16, - .weight = 855, - .description = gBlastoisePokedexText, - .pokemonScale = 256, - .pokemonOffset = -1, - .trainerScale = 293, - .trainerOffset = 2, - }, - - [NATIONAL_DEX_CATERPIE] = - { - .categoryName = _("Worm"), - .height = 3, - .weight = 29, - .description = gCaterpiePokedexText, - .pokemonScale = 549, - .pokemonOffset = 22, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_METAPOD] = - { - .categoryName = _("Cocoon"), - .height = 7, - .weight = 99, - .description = gMetapodPokedexText, - .pokemonScale = 350, - .pokemonOffset = 18, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BUTTERFREE] = - { - .categoryName = _("Butterfly"), - .height = 11, - .weight = 320, - .description = gButterfreePokedexText, - .pokemonScale = 312, - .pokemonOffset = 2, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WEEDLE] = - { - .categoryName = _("Hairy Bug"), - .height = 3, - .weight = 32, - .description = gWeedlePokedexText, - .pokemonScale = 455, - .pokemonOffset = 22, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KAKUNA] = - { - .categoryName = _("Cocoon"), - .height = 6, - .weight = 100, - .description = gKakunaPokedexText, - .pokemonScale = 424, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BEEDRILL] = - { - .categoryName = _("Poison Bee"), - .height = 10, - .weight = 295, - .description = gBeedrillPokedexText, - .pokemonScale = 366, - .pokemonOffset = 2, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PIDGEY] = - { - .categoryName = _("Tiny Bird"), - .height = 3, - .weight = 18, - .description = gPidgeyPokedexText, - .pokemonScale = 508, - .pokemonOffset = -3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PIDGEOTTO] = - { - .categoryName = _("Bird"), - .height = 11, - .weight = 300, - .description = gPidgeottoPokedexText, - .pokemonScale = 331, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PIDGEOT] = - { - .categoryName = _("Bird"), - .height = 15, - .weight = 395, - .description = gPidgeotPokedexText, - .pokemonScale = 269, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_RATTATA] = - { - .categoryName = _("Mouse"), - .height = 3, - .weight = 35, - .description = gRattataPokedexText, - .pokemonScale = 481, - .pokemonOffset = 21, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_RATICATE] = - { - .categoryName = _("Mouse"), - .height = 7, - .weight = 185, - .description = gRaticatePokedexText, - .pokemonScale = 459, - .pokemonOffset = 18, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SPEAROW] = - { - .categoryName = _("Tiny Bird"), - .height = 3, - .weight = 20, - .description = gSpearowPokedexText, - .pokemonScale = 571, - .pokemonOffset = 22, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FEAROW] = - { - .categoryName = _("Beak"), - .height = 12, - .weight = 380, - .description = gFearowPokedexText, - .pokemonScale = 278, - .pokemonOffset = 1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_EKANS] = - { - .categoryName = _("Snake"), - .height = 20, - .weight = 69, - .description = gEkansPokedexText, - .pokemonScale = 298, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ARBOK] = - { - .categoryName = _("Cobra"), - .height = 35, - .weight = 650, - .description = gArbokPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 296, - .trainerOffset = 2, - }, - - [NATIONAL_DEX_PIKACHU] = - { - .categoryName = _("Mouse"), - .height = 4, - .weight = 60, - .description = gPikachuPokedexText, - .pokemonScale = 479, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_RAICHU] = - { - .categoryName = _("Mouse"), - .height = 8, - .weight = 300, - .description = gRaichuPokedexText, - .pokemonScale = 426, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SANDSHREW] = - { - .categoryName = _("Mouse"), - .height = 6, - .weight = 120, - .description = gSandshrewPokedexText, - .pokemonScale = 365, - .pokemonOffset = 18, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SANDSLASH] = - { - .categoryName = _("Mouse"), - .height = 10, - .weight = 295, - .description = gSandslashPokedexText, - .pokemonScale = 341, - .pokemonOffset = 11, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_NIDORAN_F] = - { - .categoryName = _("Poison Pin"), - .height = 4, - .weight = 70, - .description = gNidoranFPokedexText, - .pokemonScale = 488, - .pokemonOffset = 21, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_NIDORINA] = - { - .categoryName = _("Poison Pin"), - .height = 8, - .weight = 200, - .description = gNidorinaPokedexText, - .pokemonScale = 381, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_NIDOQUEEN] = - { - .categoryName = _("Drill"), - .height = 13, - .weight = 600, - .description = gNidoqueenPokedexText, - .pokemonScale = 293, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_NIDORAN_M] = - { - .categoryName = _("Poison Pin"), - .height = 5, - .weight = 90, - .description = gNidoranMPokedexText, - .pokemonScale = 511, - .pokemonOffset = 20, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_NIDORINO] = - { - .categoryName = _("Poison Pin"), - .height = 9, - .weight = 195, - .description = gNidorinoPokedexText, - .pokemonScale = 408, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_NIDOKING] = - { - .categoryName = _("Drill"), - .height = 14, - .weight = 620, - .description = gNidokingPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CLEFAIRY] = - { - .categoryName = _("Fairy"), - .height = 6, - .weight = 75, - .description = gClefairyPokedexText, - .pokemonScale = 441, - .pokemonOffset = 20, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CLEFABLE] = - { - .categoryName = _("Fairy"), - .height = 13, - .weight = 400, - .description = gClefablePokedexText, - .pokemonScale = 256, - .pokemonOffset = 5, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VULPIX] = - { - .categoryName = _("Fox"), - .height = 6, - .weight = 99, - .description = gVulpixPokedexText, - .pokemonScale = 542, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_NINETALES] = - { - .categoryName = _("Fox"), - .height = 11, - .weight = 199, - .description = gNinetalesPokedexText, - .pokemonScale = 339, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_JIGGLYPUFF] = - { - .categoryName = _("Balloon"), - .height = 5, - .weight = 55, - .description = gJigglypuffPokedexText, - .pokemonScale = 433, - .pokemonOffset = 2, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WIGGLYTUFF] = - { - .categoryName = _("Balloon"), - .height = 10, - .weight = 120, - .description = gWigglytuffPokedexText, - .pokemonScale = 328, - .pokemonOffset = 11, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ZUBAT] = - { - .categoryName = _("Bat"), - .height = 8, - .weight = 75, - .description = gZubatPokedexText, - .pokemonScale = 362, - .pokemonOffset = -5, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GOLBAT] = - { - .categoryName = _("Bat"), - .height = 16, - .weight = 550, - .description = gGolbatPokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ODDISH] = - { - .categoryName = _("Weed"), - .height = 5, - .weight = 54, - .description = gOddishPokedexText, - .pokemonScale = 423, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GLOOM] = - { - .categoryName = _("Weed"), - .height = 8, - .weight = 86, - .description = gGloomPokedexText, - .pokemonScale = 329, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VILEPLUME] = - { - .categoryName = _("Flower"), - .height = 12, - .weight = 186, - .description = gVileplumePokedexText, - .pokemonScale = 256, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PARAS] = - { - .categoryName = _("Mushroom"), - .height = 3, - .weight = 54, - .description = gParasPokedexText, - .pokemonScale = 593, - .pokemonOffset = 22, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PARASECT] = - { - .categoryName = _("Mushroom"), - .height = 10, - .weight = 295, - .description = gParasectPokedexText, - .pokemonScale = 307, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VENONAT] = - { - .categoryName = _("Insect"), - .height = 10, - .weight = 300, - .description = gVenonatPokedexText, - .pokemonScale = 360, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = -1, - }, - - [NATIONAL_DEX_VENOMOTH] = - { - .categoryName = _("Poison Moth"), - .height = 15, - .weight = 125, - .description = gVenomothPokedexText, - .pokemonScale = 285, - .pokemonOffset = 2, - .trainerScale = 256, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_DIGLETT] = - { - .categoryName = _("Mole"), - .height = 2, - .weight = 8, - .description = gDiglettPokedexText, - .pokemonScale = 833, - .pokemonOffset = 25, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DUGTRIO] = - { - .categoryName = _("Mole"), - .height = 7, - .weight = 333, - .description = gDugtrioPokedexText, - .pokemonScale = 406, - .pokemonOffset = 18, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MEOWTH] = - { - .categoryName = _("Scratch Cat"), - .height = 4, - .weight = 42, - .description = gMeowthPokedexText, - .pokemonScale = 480, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PERSIAN] = - { - .categoryName = _("Classy Cat"), - .height = 10, - .weight = 320, - .description = gPersianPokedexText, - .pokemonScale = 320, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PSYDUCK] = - { - .categoryName = _("Duck"), - .height = 8, - .weight = 196, - .description = gPsyduckPokedexText, - .pokemonScale = 369, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GOLDUCK] = - { - .categoryName = _("Duck"), - .height = 17, - .weight = 766, - .description = gGolduckPokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 273, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_MANKEY] = - { - .categoryName = _("Pig Monkey"), - .height = 5, - .weight = 280, - .description = gMankeyPokedexText, - .pokemonScale = 404, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PRIMEAPE] = - { - .categoryName = _("Pig Monkey"), - .height = 10, - .weight = 320, - .description = gPrimeapePokedexText, - .pokemonScale = 326, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GROWLITHE] = - { - .categoryName = _("Puppy"), - .height = 7, - .weight = 190, - .description = gGrowlithePokedexText, - .pokemonScale = 346, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ARCANINE] = - { - .categoryName = _("Legendary"), - .height = 19, - .weight = 1550, - .description = gArcaninePokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 312, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_POLIWAG] = - { - .categoryName = _("Tadpole"), - .height = 6, - .weight = 124, - .description = gPoliwagPokedexText, - .pokemonScale = 369, - .pokemonOffset = 20, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_POLIWHIRL] = - { - .categoryName = _("Tadpole"), - .height = 10, - .weight = 200, - .description = gPoliwhirlPokedexText, - .pokemonScale = 288, - .pokemonOffset = 11, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_POLIWRATH] = - { - .categoryName = _("Tadpole"), - .height = 13, - .weight = 540, - .description = gPoliwrathPokedexText, - .pokemonScale = 256, - .pokemonOffset = 6, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ABRA] = - { - .categoryName = _("Psi"), - .height = 9, - .weight = 195, - .description = gAbraPokedexText, - .pokemonScale = 363, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KADABRA] = - { - .categoryName = _("Psi"), - .height = 13, - .weight = 565, - .description = gKadabraPokedexText, - .pokemonScale = 256, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ALAKAZAM] = - { - .categoryName = _("Psi"), - .height = 15, - .weight = 480, - .description = gAlakazamPokedexText, - .pokemonScale = 256, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MACHOP] = - { - .categoryName = _("Superpower"), - .height = 8, - .weight = 195, - .description = gMachopPokedexText, - .pokemonScale = 342, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MACHOKE] = - { - .categoryName = _("Superpower"), - .height = 15, - .weight = 705, - .description = gMachokePokedexText, - .pokemonScale = 323, - .pokemonOffset = 9, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MACHAMP] = - { - .categoryName = _("Superpower"), - .height = 16, - .weight = 1300, - .description = gMachampPokedexText, - .pokemonScale = 280, - .pokemonOffset = 1, - .trainerScale = 269, - .trainerOffset = -1, - }, - - [NATIONAL_DEX_BELLSPROUT] = - { - .categoryName = _("Flower"), - .height = 7, - .weight = 40, - .description = gBellsproutPokedexText, - .pokemonScale = 354, - .pokemonOffset = 16, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WEEPINBELL] = - { - .categoryName = _("Flycatcher"), - .height = 10, - .weight = 64, - .description = gWeepinbellPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VICTREEBEL] = - { - .categoryName = _("Flycatcher"), - .height = 17, - .weight = 155, - .description = gVictreebelPokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 312, - .trainerOffset = 3, - }, - - [NATIONAL_DEX_TENTACOOL] = - { - .categoryName = _("Jellyfish"), - .height = 9, - .weight = 455, - .description = gTentacoolPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TENTACRUEL] = - { - .categoryName = _("Jellyfish"), - .height = 16, - .weight = 550, - .description = gTentacruelPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 312, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_GEODUDE] = - { - .categoryName = _("Rock"), - .height = 4, - .weight = 200, - .description = gGeodudePokedexText, - .pokemonScale = 347, - .pokemonOffset = 18, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GRAVELER] = - { - .categoryName = _("Rock"), - .height = 10, - .weight = 1050, - .description = gGravelerPokedexText, - .pokemonScale = 256, - .pokemonOffset = 2, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GOLEM] = - { - .categoryName = _("Megaton"), - .height = 14, - .weight = 3000, - .description = gGolemPokedexText, - .pokemonScale = 256, - .pokemonOffset = 3, - .trainerScale = 296, - .trainerOffset = 2, - }, - - [NATIONAL_DEX_PONYTA] = - { - .categoryName = _("Fire Horse"), - .height = 10, - .weight = 300, - .description = gPonytaPokedexText, - .pokemonScale = 283, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_RAPIDASH] = - { - .categoryName = _("Fire Horse"), - .height = 17, - .weight = 950, - .description = gRapidashPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 289, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_SLOWPOKE] = - { - .categoryName = _("Dopey"), - .height = 12, - .weight = 360, - .description = gSlowpokePokedexText, - .pokemonScale = 256, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SLOWBRO] = - { - .categoryName = _("Hermit Crab"), - .height = 16, - .weight = 785, - .description = gSlowbroPokedexText, - .pokemonScale = 256, - .pokemonOffset = 6, - .trainerScale = 296, - .trainerOffset = 2, - }, - - [NATIONAL_DEX_MAGNEMITE] = - { - .categoryName = _("Magnet"), - .height = 3, - .weight = 60, - .description = gMagnemitePokedexText, - .pokemonScale = 288, - .pokemonOffset = -9, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MAGNETON] = - { - .categoryName = _("Magnet"), - .height = 10, - .weight = 600, - .description = gMagnetonPokedexText, - .pokemonScale = 292, - .pokemonOffset = 1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FARFETCHD] = - { - .categoryName = _("Wild Duck"), - .height = 8, - .weight = 150, - .description = gFarfetchdPokedexText, - .pokemonScale = 330, - .pokemonOffset = 2, - .trainerScale = 293, - .trainerOffset = 2, - }, - - [NATIONAL_DEX_DODUO] = - { - .categoryName = _("Twin Bird"), - .height = 14, - .weight = 392, - .description = gDoduoPokedexText, - .pokemonScale = 256, - .pokemonOffset = 3, - .trainerScale = 257, - .trainerOffset = -1, - }, - - [NATIONAL_DEX_DODRIO] = - { - .categoryName = _("Triple Bird"), - .height = 18, - .weight = 852, - .description = gDodrioPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 268, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SEEL] = - { - .categoryName = _("Sea Lion"), - .height = 11, - .weight = 900, - .description = gSeelPokedexText, - .pokemonScale = 297, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DEWGONG] = - { - .categoryName = _("Sea Lion"), - .height = 17, - .weight = 1200, - .description = gDewgongPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 275, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GRIMER] = - { - .categoryName = _("Sludge"), - .height = 9, - .weight = 300, - .description = gGrimerPokedexText, - .pokemonScale = 258, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MUK] = - { - .categoryName = _("Sludge"), - .height = 12, - .weight = 300, - .description = gMukPokedexText, - .pokemonScale = 256, - .pokemonOffset = 2, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SHELLDER] = - { - .categoryName = _("Bivalve"), - .height = 3, - .weight = 40, - .description = gShellderPokedexText, - .pokemonScale = 675, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CLOYSTER] = - { - .categoryName = _("Bivalve"), - .height = 15, - .weight = 1325, - .description = gCloysterPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 269, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_GASTLY] = - { - .categoryName = _("Gas"), - .height = 13, - .weight = 1, - .description = gGastlyPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HAUNTER] = - { - .categoryName = _("Gas"), - .height = 16, - .weight = 1, - .description = gHaunterPokedexText, - .pokemonScale = 256, - .pokemonOffset = 2, - .trainerScale = 293, - .trainerOffset = 2, - }, - - [NATIONAL_DEX_GENGAR] = - { - .categoryName = _("Shadow"), - .height = 15, - .weight = 405, - .description = gGengarPokedexText, - .pokemonScale = 256, - .pokemonOffset = 2, - .trainerScale = 302, - .trainerOffset = 2, - }, - - [NATIONAL_DEX_ONIX] = - { - .categoryName = _("Rock Snake"), - .height = 88, - .weight = 2100, - .description = gOnixPokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 515, - .trainerOffset = 14, - }, - - [NATIONAL_DEX_DROWZEE] = - { - .categoryName = _("Hypnosis"), - .height = 10, - .weight = 324, - .description = gDrowzeePokedexText, - .pokemonScale = 274, - .pokemonOffset = 6, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HYPNO] = - { - .categoryName = _("Hypnosis"), - .height = 16, - .weight = 756, - .description = gHypnoPokedexText, - .pokemonScale = 256, - .pokemonOffset = 3, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KRABBY] = - { - .categoryName = _("River Crab"), - .height = 4, - .weight = 65, - .description = gKrabbyPokedexText, - .pokemonScale = 469, - .pokemonOffset = 20, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KINGLER] = - { - .categoryName = _("Pincer"), - .height = 13, - .weight = 600, - .description = gKinglerPokedexText, - .pokemonScale = 256, - .pokemonOffset = 2, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VOLTORB] = - { - .categoryName = _("Ball"), - .height = 5, - .weight = 104, - .description = gVoltorbPokedexText, - .pokemonScale = 364, - .pokemonOffset = -8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ELECTRODE] = - { - .categoryName = _("Ball"), - .height = 12, - .weight = 666, - .description = gElectrodePokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_EXEGGCUTE] = - { - .categoryName = _("Egg"), - .height = 4, - .weight = 25, - .description = gExeggcutePokedexText, - .pokemonScale = 489, - .pokemonOffset = -4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_EXEGGUTOR] = - { - .categoryName = _("Coconut"), - .height = 20, - .weight = 1200, - .description = gExeggutorPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 309, - .trainerOffset = 5, - }, - - [NATIONAL_DEX_CUBONE] = - { - .categoryName = _("Lonely"), - .height = 4, - .weight = 65, - .description = gCubonePokedexText, - .pokemonScale = 545, - .pokemonOffset = 21, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MAROWAK] = - { - .categoryName = _("Bone Keeper"), - .height = 10, - .weight = 450, - .description = gMarowakPokedexText, - .pokemonScale = 293, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HITMONLEE] = - { - .categoryName = _("Kicking"), - .height = 15, - .weight = 498, - .description = gHitmonleePokedexText, - .pokemonScale = 256, - .pokemonOffset = 3, - .trainerScale = 259, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_HITMONCHAN] = - { - .categoryName = _("Punching"), - .height = 14, - .weight = 502, - .description = gHitmonchanPokedexText, - .pokemonScale = 256, - .pokemonOffset = 2, - .trainerScale = 277, - .trainerOffset = 2, - }, - - [NATIONAL_DEX_LICKITUNG] = - { - .categoryName = _("Licking"), - .height = 12, - .weight = 655, - .description = gLickitungPokedexText, - .pokemonScale = 256, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KOFFING] = - { - .categoryName = _("Poison Gas"), - .height = 6, - .weight = 10, - .description = gKoffingPokedexText, - .pokemonScale = 369, - .pokemonOffset = -1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WEEZING] = - { - .categoryName = _("Poison Gas"), - .height = 12, - .weight = 95, - .description = gWeezingPokedexText, - .pokemonScale = 305, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_RHYHORN] = - { - .categoryName = _("Spikes"), - .height = 10, - .weight = 1150, - .description = gRhyhornPokedexText, - .pokemonScale = 267, - .pokemonOffset = 6, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_RHYDON] = - { - .categoryName = _("Drill"), - .height = 19, - .weight = 1200, - .description = gRhydonPokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 299, - .trainerOffset = 2, - }, - - [NATIONAL_DEX_CHANSEY] = - { - .categoryName = _("Egg"), - .height = 11, - .weight = 346, - .description = gChanseyPokedexText, - .pokemonScale = 257, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TANGELA] = - { - .categoryName = _("Vine"), - .height = 10, - .weight = 350, - .description = gTangelaPokedexText, - .pokemonScale = 304, - .pokemonOffset = 1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KANGASKHAN] = - { - .categoryName = _("Parent"), - .height = 22, - .weight = 800, - .description = gKangaskhanPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 387, - .trainerOffset = 8, - }, - - [NATIONAL_DEX_HORSEA] = - { - .categoryName = _("Dragon"), - .height = 4, - .weight = 80, - .description = gHorseaPokedexText, - .pokemonScale = 399, - .pokemonOffset = -1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SEADRA] = - { - .categoryName = _("Dragon"), - .height = 12, - .weight = 250, - .description = gSeadraPokedexText, - .pokemonScale = 299, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GOLDEEN] = - { - .categoryName = _("Goldfish"), - .height = 6, - .weight = 150, - .description = gGoldeenPokedexText, - .pokemonScale = 379, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SEAKING] = - { - .categoryName = _("Goldfish"), - .height = 13, - .weight = 390, - .description = gSeakingPokedexText, - .pokemonScale = 256, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_STARYU] = - { - .categoryName = _("Star Shape"), - .height = 8, - .weight = 345, - .description = gStaryuPokedexText, - .pokemonScale = 326, - .pokemonOffset = 1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_STARMIE] = - { - .categoryName = _("Mysterious"), - .height = 11, - .weight = 800, - .description = gStarmiePokedexText, - .pokemonScale = 301, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MR_MIME] = - { - .categoryName = _("Barrier"), - .height = 13, - .weight = 545, - .description = gMrMimePokedexText, - .pokemonScale = 258, - .pokemonOffset = 6, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SCYTHER] = - { - .categoryName = _("Mantis"), - .height = 15, - .weight = 560, - .description = gScytherPokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 293, - .trainerOffset = 2, - }, - - [NATIONAL_DEX_JYNX] = - { - .categoryName = _("Human Shape"), - .height = 14, - .weight = 406, - .description = gJynxPokedexText, - .pokemonScale = 256, - .pokemonOffset = 3, - .trainerScale = 300, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_ELECTABUZZ] = - { - .categoryName = _("Electric"), - .height = 11, - .weight = 300, - .description = gElectabuzzPokedexText, - .pokemonScale = 351, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MAGMAR] = - { - .categoryName = _("Spitfire"), - .height = 13, - .weight = 445, - .description = gMagmarPokedexText, - .pokemonScale = 277, - .pokemonOffset = 5, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PINSIR] = - { - .categoryName = _("Stag Beetle"), - .height = 15, - .weight = 550, - .description = gPinsirPokedexText, - .pokemonScale = 256, - .pokemonOffset = 2, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TAUROS] = - { - .categoryName = _("Wild Bull"), - .height = 14, - .weight = 884, - .description = gTaurosPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MAGIKARP] = - { - .categoryName = _("Fish"), - .height = 9, - .weight = 100, - .description = gMagikarpPokedexText, - .pokemonScale = 310, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GYARADOS] = - { - .categoryName = _("Atrocious"), - .height = 65, - .weight = 2350, - .description = gGyaradosPokedexText, - .pokemonScale = 256, - .pokemonOffset = 6, - .trainerScale = 481, - .trainerOffset = 13, - }, - - [NATIONAL_DEX_LAPRAS] = - { - .categoryName = _("Transport"), - .height = 25, - .weight = 2200, - .description = gLaprasPokedexText, - .pokemonScale = 257, - .pokemonOffset = 10, - .trainerScale = 423, - .trainerOffset = 8, - }, - - [NATIONAL_DEX_DITTO] = - { - .categoryName = _("Transform"), - .height = 3, - .weight = 40, - .description = gDittoPokedexText, - .pokemonScale = 633, - .pokemonOffset = 23, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_EEVEE] = - { - .categoryName = _("Evolution"), - .height = 3, - .weight = 65, - .description = gEeveePokedexText, - .pokemonScale = 476, - .pokemonOffset = 18, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VAPOREON] = - { - .categoryName = _("Bubble Jet"), - .height = 10, - .weight = 290, - .description = gVaporeonPokedexText, - .pokemonScale = 316, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_JOLTEON] = - { - .categoryName = _("Lightning"), - .height = 8, - .weight = 245, - .description = gJolteonPokedexText, - .pokemonScale = 283, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FLAREON] = - { - .categoryName = _("Flame"), - .height = 9, - .weight = 250, - .description = gFlareonPokedexText, - .pokemonScale = 306, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PORYGON] = - { - .categoryName = _("Virtual"), - .height = 8, - .weight = 365, - .description = gPorygonPokedexText, - .pokemonScale = 328, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_OMANYTE] = - { - .categoryName = _("Spiral"), - .height = 4, - .weight = 75, - .description = gOmanytePokedexText, - .pokemonScale = 521, - .pokemonOffset = 22, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_OMASTAR] = - { - .categoryName = _("Spiral"), - .height = 10, - .weight = 350, - .description = gOmastarPokedexText, - .pokemonScale = 307, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KABUTO] = - { - .categoryName = _("Shellfish"), - .height = 5, - .weight = 115, - .description = gKabutoPokedexText, - .pokemonScale = 454, - .pokemonOffset = 21, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KABUTOPS] = - { - .categoryName = _("Shellfish"), - .height = 13, - .weight = 405, - .description = gKabutopsPokedexText, - .pokemonScale = 271, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_AERODACTYL] = - { - .categoryName = _("Fossil"), - .height = 18, - .weight = 590, - .description = gAerodactylPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 302, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_SNORLAX] = - { - .categoryName = _("Sleeping"), - .height = 21, - .weight = 4600, - .description = gSnorlaxPokedexText, - .pokemonScale = 256, - .pokemonOffset = 4, - .trainerScale = 423, - .trainerOffset = 11, - }, - - [NATIONAL_DEX_ARTICUNO] = - { - .categoryName = _("Freeze"), - .height = 17, - .weight = 554, - .description = gArticunoPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 309, - .trainerOffset = 2, - }, - - [NATIONAL_DEX_ZAPDOS] = - { - .categoryName = _("Electric"), - .height = 16, - .weight = 526, - .description = gZapdosPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 318, - .trainerOffset = 3, - }, - - [NATIONAL_DEX_MOLTRES] = - { - .categoryName = _("Flame"), - .height = 20, - .weight = 600, - .description = gMoltresPokedexText, - .pokemonScale = 270, - .pokemonOffset = 0, - .trainerScale = 387, - .trainerOffset = 8, - }, - - [NATIONAL_DEX_DRATINI] = - { - .categoryName = _("Dragon"), - .height = 18, - .weight = 33, - .description = gDratiniPokedexText, - .pokemonScale = 256, - .pokemonOffset = 8, - .trainerScale = 386, - .trainerOffset = 6, - }, - - [NATIONAL_DEX_DRAGONAIR] = - { - .categoryName = _("Dragon"), - .height = 40, - .weight = 165, - .description = gDragonairPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 411, - .trainerOffset = 5, - }, - - [NATIONAL_DEX_DRAGONITE] = - { - .categoryName = _("Dragon"), - .height = 22, - .weight = 2100, - .description = gDragonitePokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 309, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_MEWTWO] = - { - .categoryName = _("Genetic"), - .height = 20, - .weight = 1220, - .description = gMewtwoPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 309, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_MEW] = - { - .categoryName = _("New Species"), - .height = 4, - .weight = 40, - .description = gMewPokedexText, - .pokemonScale = 457, - .pokemonOffset = -2, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CHIKORITA] = - { - .categoryName = _("Leaf"), - .height = 9, - .weight = 64, - .description = gChikoritaPokedexText, - .pokemonScale = 512, - .pokemonOffset = 20, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BAYLEEF] = - { - .categoryName = _("Leaf"), - .height = 12, - .weight = 158, - .description = gBayleefPokedexText, - .pokemonScale = 296, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MEGANIUM] = - { - .categoryName = _("Herb"), - .height = 18, - .weight = 1005, - .description = gMeganiumPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 277, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_CYNDAQUIL] = - { - .categoryName = _("Fire Mouse"), - .height = 5, - .weight = 79, - .description = gCyndaquilPokedexText, - .pokemonScale = 539, - .pokemonOffset = 21, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_QUILAVA] = - { - .categoryName = _("Volcano"), - .height = 9, - .weight = 190, - .description = gQuilavaPokedexText, - .pokemonScale = 329, - .pokemonOffset = 11, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TYPHLOSION] = - { - .categoryName = _("Volcano"), - .height = 17, - .weight = 795, - .description = gTyphlosionPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 268, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_TOTODILE] = - { - .categoryName = _("Big Jaw"), - .height = 6, - .weight = 95, - .description = gTotodilePokedexText, - .pokemonScale = 487, - .pokemonOffset = 20, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CROCONAW] = - { - .categoryName = _("Big Jaw"), - .height = 11, - .weight = 250, - .description = gCroconawPokedexText, - .pokemonScale = 378, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FERALIGATR] = - { - .categoryName = _("Big Jaw"), - .height = 23, - .weight = 888, - .description = gFeraligatrPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 342, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_SENTRET] = - { - .categoryName = _("Scout"), - .height = 8, - .weight = 60, - .description = gSentretPokedexText, - .pokemonScale = 439, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FURRET] = - { - .categoryName = _("Long Body"), - .height = 18, - .weight = 325, - .description = gFurretPokedexText, - .pokemonScale = 346, - .pokemonOffset = 11, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HOOTHOOT] = - { - .categoryName = _("Owl"), - .height = 7, - .weight = 212, - .description = gHoothootPokedexText, - .pokemonScale = 380, - .pokemonOffset = -2, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_NOCTOWL] = - { - .categoryName = _("Owl"), - .height = 16, - .weight = 408, - .description = gNoctowlPokedexText, - .pokemonScale = 278, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LEDYBA] = - { - .categoryName = _("Five Star"), - .height = 10, - .weight = 108, - .description = gLedybaPokedexText, - .pokemonScale = 256, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LEDIAN] = - { - .categoryName = _("Five Star"), - .height = 14, - .weight = 356, - .description = gLedianPokedexText, - .pokemonScale = 256, - .pokemonOffset = 2, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SPINARAK] = - { - .categoryName = _("String Spit"), - .height = 5, - .weight = 85, - .description = gSpinarakPokedexText, - .pokemonScale = 414, - .pokemonOffset = 21, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ARIADOS] = - { - .categoryName = _("Long Leg"), - .height = 11, - .weight = 335, - .description = gAriadosPokedexText, - .pokemonScale = 316, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CROBAT] = - { - .categoryName = _("Bat"), - .height = 18, - .weight = 750, - .description = gCrobatPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 281, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_CHINCHOU] = - { - .categoryName = _("Angler"), - .height = 5, - .weight = 120, - .description = gChinchouPokedexText, - .pokemonScale = 424, - .pokemonOffset = -2, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LANTURN] = - { - .categoryName = _("Light"), - .height = 12, - .weight = 225, - .description = gLanturnPokedexText, - .pokemonScale = 269, - .pokemonOffset = 6, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PICHU] = - { - .categoryName = _("Tiny Mouse"), - .height = 3, - .weight = 20, - .description = gPichuPokedexText, - .pokemonScale = 508, - .pokemonOffset = 20, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CLEFFA] = - { - .categoryName = _("Star Shape"), - .height = 3, - .weight = 30, - .description = gCleffaPokedexText, - .pokemonScale = 462, - .pokemonOffset = 23, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_IGGLYBUFF] = - { - .categoryName = _("Balloon"), - .height = 3, - .weight = 10, - .description = gIgglybuffPokedexText, - .pokemonScale = 457, - .pokemonOffset = -1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TOGEPI] = - { - .categoryName = _("Spike Ball"), - .height = 3, - .weight = 15, - .description = gTogepiPokedexText, - .pokemonScale = 507, - .pokemonOffset = 23, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TOGETIC] = - { - .categoryName = _("Happiness"), - .height = 6, - .weight = 32, - .description = gTogeticPokedexText, - .pokemonScale = 424, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_NATU] = - { - .categoryName = _("Tiny Bird"), - .height = 2, - .weight = 20, - .description = gNatuPokedexText, - .pokemonScale = 610, - .pokemonOffset = 25, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_XATU] = - { - .categoryName = _("Mystic"), - .height = 15, - .weight = 150, - .description = gXatuPokedexText, - .pokemonScale = 256, - .pokemonOffset = 6, - .trainerScale = 318, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_MAREEP] = - { - .categoryName = _("Wool"), - .height = 6, - .weight = 78, - .description = gMareepPokedexText, - .pokemonScale = 379, - .pokemonOffset = 18, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FLAAFFY] = - { - .categoryName = _("Wool"), - .height = 8, - .weight = 133, - .description = gFlaaffyPokedexText, - .pokemonScale = 372, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_AMPHAROS] = - { - .categoryName = _("Light"), - .height = 14, - .weight = 615, - .description = gAmpharosPokedexText, - .pokemonScale = 256, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BELLOSSOM] = - { - .categoryName = _("Flower"), - .height = 4, - .weight = 58, - .description = gBellossomPokedexText, - .pokemonScale = 472, - .pokemonOffset = 21, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MARILL] = - { - .categoryName = _("Aqua Mouse"), - .height = 4, - .weight = 85, - .description = gMarillPokedexText, - .pokemonScale = 476, - .pokemonOffset = 20, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_AZUMARILL] = - { - .categoryName = _("Aqua Rabbit"), - .height = 8, - .weight = 285, - .description = gAzumarillPokedexText, - .pokemonScale = 448, - .pokemonOffset = 16, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SUDOWOODO] = - { - .categoryName = _("Imitation"), - .height = 12, - .weight = 380, - .description = gSudowoodoPokedexText, - .pokemonScale = 305, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_POLITOED] = - { - .categoryName = _("Frog"), - .height = 11, - .weight = 339, - .description = gPolitoedPokedexText, - .pokemonScale = 289, - .pokemonOffset = 6, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HOPPIP] = - { - .categoryName = _("Cottonweed"), - .height = 4, - .weight = 5, - .description = gHoppipPokedexText, - .pokemonScale = 562, - .pokemonOffset = -7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SKIPLOOM] = - { - .categoryName = _("Cottonweed"), - .height = 6, - .weight = 10, - .description = gSkiploomPokedexText, - .pokemonScale = 387, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_JUMPLUFF] = - { - .categoryName = _("Cottonweed"), - .height = 8, - .weight = 30, - .description = gJumpluffPokedexText, - .pokemonScale = 418, - .pokemonOffset = -4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_AIPOM] = - { - .categoryName = _("Long Tail"), - .height = 8, - .weight = 115, - .description = gAipomPokedexText, - .pokemonScale = 363, - .pokemonOffset = 6, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SUNKERN] = - { - .categoryName = _("Seed"), - .height = 3, - .weight = 18, - .description = gSunkernPokedexText, - .pokemonScale = 541, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SUNFLORA] = - { - .categoryName = _("Sun"), - .height = 8, - .weight = 85, - .description = gSunfloraPokedexText, - .pokemonScale = 444, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_YANMA] = - { - .categoryName = _("Clear Wing"), - .height = 12, - .weight = 380, - .description = gYanmaPokedexText, - .pokemonScale = 274, - .pokemonOffset = -1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WOOPER] = - { - .categoryName = _("Water Fish"), - .height = 4, - .weight = 85, - .description = gWooperPokedexText, - .pokemonScale = 479, - .pokemonOffset = 21, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_QUAGSIRE] = - { - .categoryName = _("Water Fish"), - .height = 14, - .weight = 750, - .description = gQuagsirePokedexText, - .pokemonScale = 256, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ESPEON] = - { - .categoryName = _("Sun"), - .height = 9, - .weight = 265, - .description = gEspeonPokedexText, - .pokemonScale = 363, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_UMBREON] = - { - .categoryName = _("Moonlight"), - .height = 10, - .weight = 270, - .description = gUmbreonPokedexText, - .pokemonScale = 317, - .pokemonOffset = 11, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MURKROW] = - { - .categoryName = _("Darkness"), - .height = 5, - .weight = 21, - .description = gMurkrowPokedexText, - .pokemonScale = 401, - .pokemonOffset = -8, - .trainerScale = 256, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_SLOWKING] = - { - .categoryName = _("Royal"), - .height = 20, - .weight = 795, - .description = gSlowkingPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 309, - .trainerOffset = 5, - }, - - [NATIONAL_DEX_MISDREAVUS] = - { - .categoryName = _("Screech"), - .height = 7, - .weight = 10, - .description = gMisdreavusPokedexText, - .pokemonScale = 407, - .pokemonOffset = -8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_UNOWN] = - { - .categoryName = _("Symbol"), - .height = 5, - .weight = 50, - .description = gUnownPokedexText, - .pokemonScale = 411, - .pokemonOffset = 2, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WOBBUFFET] = - { - .categoryName = _("Patient"), - .height = 13, - .weight = 285, - .description = gWobbuffetPokedexText, - .pokemonScale = 274, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GIRAFARIG] = - { - .categoryName = _("Long Neck"), - .height = 15, - .weight = 415, - .description = gGirafarigPokedexText, - .pokemonScale = 281, - .pokemonOffset = 1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PINECO] = - { - .categoryName = _("Bagworm"), - .height = 6, - .weight = 72, - .description = gPinecoPokedexText, - .pokemonScale = 445, - .pokemonOffset = 2, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FORRETRESS] = - { - .categoryName = _("Bagworm"), - .height = 12, - .weight = 1258, - .description = gForretressPokedexText, - .pokemonScale = 293, - .pokemonOffset = 5, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DUNSPARCE] = - { - .categoryName = _("Land Snake"), - .height = 15, - .weight = 140, - .description = gDunsparcePokedexText, - .pokemonScale = 316, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GLIGAR] = - { - .categoryName = _("Fly Scorpion"), - .height = 11, - .weight = 648, - .description = gGligarPokedexText, - .pokemonScale = 350, - .pokemonOffset = -1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_STEELIX] = - { - .categoryName = _("Iron Snake"), - .height = 92, - .weight = 4000, - .description = gSteelixPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 516, - .trainerOffset = 13, - }, - - [NATIONAL_DEX_SNUBBULL] = - { - .categoryName = _("Fairy"), - .height = 6, - .weight = 78, - .description = gSnubbullPokedexText, - .pokemonScale = 465, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GRANBULL] = - { - .categoryName = _("Fairy"), - .height = 14, - .weight = 487, - .description = gGranbullPokedexText, - .pokemonScale = 256, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_QWILFISH] = - { - .categoryName = _("Balloon"), - .height = 5, - .weight = 39, - .description = gQwilfishPokedexText, - .pokemonScale = 430, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SCIZOR] = - { - .categoryName = _("Pincer"), - .height = 18, - .weight = 1180, - .description = gScizorPokedexText, - .pokemonScale = 278, - .pokemonOffset = 1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SHUCKLE] = - { - .categoryName = _("Mold"), - .height = 6, - .weight = 205, - .description = gShucklePokedexText, - .pokemonScale = 485, - .pokemonOffset = 18, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HERACROSS] = - { - .categoryName = _("Single Horn"), - .height = 15, - .weight = 540, - .description = gHeracrossPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SNEASEL] = - { - .categoryName = _("Sharp Claw"), - .height = 9, - .weight = 280, - .description = gSneaselPokedexText, - .pokemonScale = 413, - .pokemonOffset = -3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TEDDIURSA] = - { - .categoryName = _("Little Bear"), - .height = 6, - .weight = 88, - .description = gTeddiursaPokedexText, - .pokemonScale = 455, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_URSARING] = - { - .categoryName = _("Hibernator"), - .height = 18, - .weight = 1258, - .description = gUrsaringPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SLUGMA] = - { - .categoryName = _("Lava"), - .height = 7, - .weight = 350, - .description = gSlugmaPokedexText, - .pokemonScale = 329, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MAGCARGO] = - { - .categoryName = _("Lava"), - .height = 8, - .weight = 550, - .description = gMagcargoPokedexText, - .pokemonScale = 332, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SWINUB] = - { - .categoryName = _("Pig"), - .height = 4, - .weight = 65, - .description = gSwinubPokedexText, - .pokemonScale = 324, - .pokemonOffset = 20, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PILOSWINE] = - { - .categoryName = _("Swine"), - .height = 11, - .weight = 558, - .description = gPiloswinePokedexText, - .pokemonScale = 306, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CORSOLA] = - { - .categoryName = _("Coral"), - .height = 6, - .weight = 50, - .description = gCorsolaPokedexText, - .pokemonScale = 410, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_REMORAID] = - { - .categoryName = _("Jet"), - .height = 6, - .weight = 120, - .description = gRemoraidPokedexText, - .pokemonScale = 316, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_OCTILLERY] = - { - .categoryName = _("Jet"), - .height = 9, - .weight = 285, - .description = gOctilleryPokedexText, - .pokemonScale = 296, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DELIBIRD] = - { - .categoryName = _("Delivery"), - .height = 9, - .weight = 160, - .description = gDelibirdPokedexText, - .pokemonScale = 293, - .pokemonOffset = 11, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MANTINE] = - { - .categoryName = _("Kite"), - .height = 21, - .weight = 2200, - .description = gMantinePokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 342, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_SKARMORY] = - { - .categoryName = _("Armor Bird"), - .height = 17, - .weight = 505, - .description = gSkarmoryPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 271, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_HOUNDOUR] = - { - .categoryName = _("Dark"), - .height = 6, - .weight = 108, - .description = gHoundourPokedexText, - .pokemonScale = 393, - .pokemonOffset = 16, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HOUNDOOM] = - { - .categoryName = _("Dark"), - .height = 14, - .weight = 350, - .description = gHoundoomPokedexText, - .pokemonScale = 256, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KINGDRA] = - { - .categoryName = _("Dragon"), - .height = 18, - .weight = 1520, - .description = gKingdraPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 287, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PHANPY] = - { - .categoryName = _("Long Nose"), - .height = 5, - .weight = 335, - .description = gPhanpyPokedexText, - .pokemonScale = 465, - .pokemonOffset = 21, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DONPHAN] = - { - .categoryName = _("Armor"), - .height = 11, - .weight = 1200, - .description = gDonphanPokedexText, - .pokemonScale = 313, - .pokemonOffset = 9, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PORYGON2] = - { - .categoryName = _("Virtual"), - .height = 6, - .weight = 325, - .description = gPorygon2PokedexText, - .pokemonScale = 320, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_STANTLER] = - { - .categoryName = _("Big Horn"), - .height = 14, - .weight = 712, - .description = gStantlerPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SMEARGLE] = - { - .categoryName = _("Painter"), - .height = 12, - .weight = 580, - .description = gSmearglePokedexText, - .pokemonScale = 287, - .pokemonOffset = 5, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TYROGUE] = - { - .categoryName = _("Scuffle"), - .height = 7, - .weight = 210, - .description = gTyroguePokedexText, - .pokemonScale = 292, - .pokemonOffset = 9, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HITMONTOP] = - { - .categoryName = _("Handstand"), - .height = 14, - .weight = 480, - .description = gHitmontopPokedexText, - .pokemonScale = 256, - .pokemonOffset = 2, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SMOOCHUM] = - { - .categoryName = _("Kiss"), - .height = 4, - .weight = 60, - .description = gSmoochumPokedexText, - .pokemonScale = 440, - .pokemonOffset = 20, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ELEKID] = - { - .categoryName = _("Electric"), - .height = 6, - .weight = 235, - .description = gElekidPokedexText, - .pokemonScale = 363, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MAGBY] = - { - .categoryName = _("Live Coal"), - .height = 7, - .weight = 214, - .description = gMagbyPokedexText, - .pokemonScale = 284, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MILTANK] = - { - .categoryName = _("Milk Cow"), - .height = 12, - .weight = 755, - .description = gMiltankPokedexText, - .pokemonScale = 280, - .pokemonOffset = 5, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BLISSEY] = - { - .categoryName = _("Happiness"), - .height = 15, - .weight = 468, - .description = gBlisseyPokedexText, - .pokemonScale = 256, - .pokemonOffset = 4, - .trainerScale = 310, - .trainerOffset = 3, - }, - - [NATIONAL_DEX_RAIKOU] = - { - .categoryName = _("Thunder"), - .height = 19, - .weight = 1780, - .description = gRaikouPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 345, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_ENTEI] = - { - .categoryName = _("Volcano"), - .height = 21, - .weight = 1980, - .description = gEnteiPokedexText, - .pokemonScale = 259, - .pokemonOffset = 0, - .trainerScale = 345, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_SUICUNE] = - { - .categoryName = _("Aurora"), - .height = 20, - .weight = 1870, - .description = gSuicunePokedexText, - .pokemonScale = 269, - .pokemonOffset = 0, - .trainerScale = 345, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_LARVITAR] = - { - .categoryName = _("Rock Skin"), - .height = 6, - .weight = 720, - .description = gLarvitarPokedexText, - .pokemonScale = 472, - .pokemonOffset = 18, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PUPITAR] = - { - .categoryName = _("Hard Shell"), - .height = 12, - .weight = 1520, - .description = gPupitarPokedexText, - .pokemonScale = 292, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TYRANITAR] = - { - .categoryName = _("Armor"), - .height = 20, - .weight = 2020, - .description = gTyranitarPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 345, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_LUGIA] = - { - .categoryName = _("Diving"), - .height = 52, - .weight = 2160, - .description = gLugiaPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 721, - .trainerOffset = 19, - }, - - [NATIONAL_DEX_HO_OH] = - { - .categoryName = _("Rainbow"), - .height = 38, - .weight = 1990, - .description = gHoOhPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 610, - .trainerOffset = 17, - }, - - [NATIONAL_DEX_CELEBI] = - { - .categoryName = _("Time Travel"), - .height = 6, - .weight = 50, - .description = gCelebiPokedexText, - .pokemonScale = 393, - .pokemonOffset = -10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TREECKO] = - { - .categoryName = _("Wood Gecko"), - .height = 5, - .weight = 50, - .description = gTreeckoPokedexText, - .pokemonScale = 541, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GROVYLE] = - { - .categoryName = _("Wood Gecko"), - .height = 9, - .weight = 216, - .description = gGrovylePokedexText, - .pokemonScale = 360, - .pokemonOffset = 5, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SCEPTILE] = - { - .categoryName = _("Forest"), - .height = 17, - .weight = 522, - .description = gSceptilePokedexText, - .pokemonScale = 256, - .pokemonOffset = -1, - .trainerScale = 275, - .trainerOffset = 2, - }, - - [NATIONAL_DEX_TORCHIC] = - { - .categoryName = _("Chick"), - .height = 4, - .weight = 25, - .description = gTorchicPokedexText, - .pokemonScale = 566, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_COMBUSKEN] = - { - .categoryName = _("Young Fowl"), - .height = 9, - .weight = 195, - .description = gCombuskenPokedexText, - .pokemonScale = 343, - .pokemonOffset = 5, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BLAZIKEN] = - { - .categoryName = _("Blaze"), - .height = 19, - .weight = 520, - .description = gBlazikenPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 301, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_MUDKIP] = - { - .categoryName = _("Mud Fish"), - .height = 4, - .weight = 76, - .description = gMudkipPokedexText, - .pokemonScale = 535, - .pokemonOffset = 20, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MARSHTOMP] = - { - .categoryName = _("Mud Fish"), - .height = 7, - .weight = 280, - .description = gMarshtompPokedexText, - .pokemonScale = 340, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SWAMPERT] = - { - .categoryName = _("Mud Fish"), - .height = 15, - .weight = 819, - .description = gSwampertPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_POOCHYENA] = - { - .categoryName = _("Bite"), - .height = 5, - .weight = 136, - .description = gPoochyenaPokedexText, - .pokemonScale = 481, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MIGHTYENA] = - { - .categoryName = _("Bite"), - .height = 10, - .weight = 370, - .description = gMightyenaPokedexText, - .pokemonScale = 362, - .pokemonOffset = 9, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ZIGZAGOON] = - { - .categoryName = _("Tiny Raccoon"), - .height = 4, - .weight = 175, - .description = gZigzagoonPokedexText, - .pokemonScale = 560, - .pokemonOffset = 22, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LINOONE] = - { - .categoryName = _("Rushing"), - .height = 5, - .weight = 325, - .description = gLinoonePokedexText, - .pokemonScale = 321, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WURMPLE] = - { - .categoryName = _("Worm"), - .height = 3, - .weight = 36, - .description = gWurmplePokedexText, - .pokemonScale = 711, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SILCOON] = - { - .categoryName = _("Cocoon"), - .height = 6, - .weight = 100, - .description = gSilcoonPokedexText, - .pokemonScale = 431, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BEAUTIFLY] = - { - .categoryName = _("Butterfly"), - .height = 10, - .weight = 284, - .description = gBeautiflyPokedexText, - .pokemonScale = 298, - .pokemonOffset = -1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CASCOON] = - { - .categoryName = _("Cocoon"), - .height = 7, - .weight = 115, - .description = gCascoonPokedexText, - .pokemonScale = 391, - .pokemonOffset = 20, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DUSTOX] = - { - .categoryName = _("Poison Moth"), - .height = 12, - .weight = 316, - .description = gDustoxPokedexText, - .pokemonScale = 269, - .pokemonOffset = 1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LOTAD] = - { - .categoryName = _("Water Weed"), - .height = 5, - .weight = 26, - .description = gLotadPokedexText, - .pokemonScale = 406, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LOMBRE] = - { - .categoryName = _("Jolly"), - .height = 12, - .weight = 325, - .description = gLombrePokedexText, - .pokemonScale = 277, - .pokemonOffset = 9, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LUDICOLO] = - { - .categoryName = _("Carefree"), - .height = 15, - .weight = 550, - .description = gLudicoloPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 268, - .trainerOffset = -1, - }, - - [NATIONAL_DEX_SEEDOT] = - { - .categoryName = _("Acorn"), - .height = 5, - .weight = 40, - .description = gSeedotPokedexText, - .pokemonScale = 472, - .pokemonOffset = 20, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_NUZLEAF] = - { - .categoryName = _("Wily"), - .height = 10, - .weight = 280, - .description = gNuzleafPokedexText, - .pokemonScale = 299, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SHIFTRY] = - { - .categoryName = _("Wicked"), - .height = 13, - .weight = 596, - .description = gShiftryPokedexText, - .pokemonScale = 290, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TAILLOW] = - { - .categoryName = _("Tiny Swallow"), - .height = 3, - .weight = 23, - .description = gTaillowPokedexText, - .pokemonScale = 465, - .pokemonOffset = 21, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SWELLOW] = - { - .categoryName = _("Swallow"), - .height = 7, - .weight = 198, - .description = gSwellowPokedexText, - .pokemonScale = 428, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WINGULL] = - { - .categoryName = _("Seagull"), - .height = 6, - .weight = 95, - .description = gWingullPokedexText, - .pokemonScale = 295, - .pokemonOffset = -2, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PELIPPER] = - { - .categoryName = _("Water Bird"), - .height = 12, - .weight = 280, - .description = gPelipperPokedexText, - .pokemonScale = 288, - .pokemonOffset = 1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_RALTS] = - { - .categoryName = _("Feeling"), - .height = 4, - .weight = 66, - .description = gRaltsPokedexText, - .pokemonScale = 457, - .pokemonOffset = -3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KIRLIA] = - { - .categoryName = _("Emotion"), - .height = 8, - .weight = 202, - .description = gKirliaPokedexText, - .pokemonScale = 354, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GARDEVOIR] = - { - .categoryName = _("Embrace"), - .height = 16, - .weight = 484, - .description = gGardevoirPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SURSKIT] = - { - .categoryName = _("Pond Skater"), - .height = 5, - .weight = 17, - .description = gSurskitPokedexText, - .pokemonScale = 375, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MASQUERAIN] = - { - .categoryName = _("Eyeball"), - .height = 8, - .weight = 36, - .description = gMasquerainPokedexText, - .pokemonScale = 378, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SHROOMISH] = - { - .categoryName = _("Mushroom"), - .height = 4, - .weight = 45, - .description = gShroomishPokedexText, - .pokemonScale = 513, - .pokemonOffset = 22, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BRELOOM] = - { - .categoryName = _("Mushroom"), - .height = 12, - .weight = 392, - .description = gBreloomPokedexText, - .pokemonScale = 324, - .pokemonOffset = 6, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SLAKOTH] = - { - .categoryName = _("Slacker"), - .height = 8, - .weight = 240, - .description = gSlakothPokedexText, - .pokemonScale = 291, - .pokemonOffset = 16, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VIGOROTH] = - { - .categoryName = _("Wild Monkey"), - .height = 14, - .weight = 465, - .description = gVigorothPokedexText, - .pokemonScale = 301, - .pokemonOffset = 2, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SLAKING] = - { - .categoryName = _("Lazy"), - .height = 20, - .weight = 1305, - .description = gSlakingPokedexText, - .pokemonScale = 256, - .pokemonOffset = 2, - .trainerScale = 300, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_NINCADA] = - { - .categoryName = _("Trainee"), - .height = 5, - .weight = 55, - .description = gNincadaPokedexText, - .pokemonScale = 405, - .pokemonOffset = 21, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_NINJASK] = - { - .categoryName = _("Ninja"), - .height = 8, - .weight = 120, - .description = gNinjaskPokedexText, - .pokemonScale = 383, - .pokemonOffset = -9, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SHEDINJA] = - { - .categoryName = _("Shed"), - .height = 8, - .weight = 12, - .description = gShedinjaPokedexText, - .pokemonScale = 372, - .pokemonOffset = -8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WHISMUR] = - { - .categoryName = _("Whisper"), - .height = 6, - .weight = 163, - .description = gWhismurPokedexText, - .pokemonScale = 373, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LOUDRED] = - { - .categoryName = _("Big Voice"), - .height = 10, - .weight = 405, - .description = gLoudredPokedexText, - .pokemonScale = 356, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_EXPLOUD] = - { - .categoryName = _("Loud Noise"), - .height = 15, - .weight = 840, - .description = gExploudPokedexText, - .pokemonScale = 284, - .pokemonOffset = 1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MAKUHITA] = - { - .categoryName = _("Guts"), - .height = 10, - .weight = 864, - .description = gMakuhitaPokedexText, - .pokemonScale = 256, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HARIYAMA] = - { - .categoryName = _("Arm Thrust"), - .height = 23, - .weight = 2538, - .description = gHariyamaPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 343, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_AZURILL] = - { - .categoryName = _("Polka Dot"), - .height = 2, - .weight = 20, - .description = gAzurillPokedexText, - .pokemonScale = 603, - .pokemonOffset = 23, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_NOSEPASS] = - { - .categoryName = _("Compass"), - .height = 10, - .weight = 970, - .description = gNosepassPokedexText, - .pokemonScale = 256, - .pokemonOffset = 9, - .trainerScale = 289, - .trainerOffset = 3, - }, - - [NATIONAL_DEX_SKITTY] = - { - .categoryName = _("Kitten"), - .height = 6, - .weight = 110, - .description = gSkittyPokedexText, - .pokemonScale = 492, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DELCATTY] = - { - .categoryName = _("Prim"), - .height = 11, - .weight = 326, - .description = gDelcattyPokedexText, - .pokemonScale = 322, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SABLEYE] = - { - .categoryName = _("Darkness"), - .height = 5, - .weight = 110, - .description = gSableyePokedexText, - .pokemonScale = 451, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MAWILE] = - { - .categoryName = _("Deceiver"), - .height = 6, - .weight = 115, - .description = gMawilePokedexText, - .pokemonScale = 466, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ARON] = - { - .categoryName = _("Iron Armor"), - .height = 4, - .weight = 600, - .description = gAronPokedexText, - .pokemonScale = 419, - .pokemonOffset = 23, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LAIRON] = - { - .categoryName = _("Iron Armor"), - .height = 9, - .weight = 1200, - .description = gLaironPokedexText, - .pokemonScale = 275, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_AGGRON] = - { - .categoryName = _("Iron Armor"), - .height = 21, - .weight = 3600, - .description = gAggronPokedexText, - .pokemonScale = 256, - .pokemonOffset = -1, - .trainerScale = 350, - .trainerOffset = 6, - }, - - [NATIONAL_DEX_MEDITITE] = - { - .categoryName = _("Meditate"), - .height = 6, - .weight = 112, - .description = gMedititePokedexText, - .pokemonScale = 465, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MEDICHAM] = - { - .categoryName = _("Meditate"), - .height = 13, - .weight = 315, - .description = gMedichamPokedexText, - .pokemonScale = 298, - .pokemonOffset = 5, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ELECTRIKE] = - { - .categoryName = _("Lightning"), - .height = 6, - .weight = 152, - .description = gElectrikePokedexText, - .pokemonScale = 290, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MANECTRIC] = - { - .categoryName = _("Discharge"), - .height = 15, - .weight = 402, - .description = gManectricPokedexText, - .pokemonScale = 256, - .pokemonOffset = 3, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PLUSLE] = - { - .categoryName = _("Cheering"), - .height = 4, - .weight = 42, - .description = gPluslePokedexText, - .pokemonScale = 515, - .pokemonOffset = -9, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MINUN] = - { - .categoryName = _("Cheering"), - .height = 4, - .weight = 42, - .description = gMinunPokedexText, - .pokemonScale = 512, - .pokemonOffset = -7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VOLBEAT] = - { - .categoryName = _("Firefly"), - .height = 7, - .weight = 177, - .description = gVolbeatPokedexText, - .pokemonScale = 442, - .pokemonOffset = 16, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ILLUMISE] = - { - .categoryName = _("Firefly"), - .height = 6, - .weight = 177, - .description = gIllumisePokedexText, - .pokemonScale = 572, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ROSELIA] = - { - .categoryName = _("Thorn"), - .height = 3, - .weight = 20, - .description = gRoseliaPokedexText, - .pokemonScale = 677, - .pokemonOffset = 20, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GULPIN] = - { - .categoryName = _("Stomach"), - .height = 4, - .weight = 103, - .description = gGulpinPokedexText, - .pokemonScale = 593, - .pokemonOffset = 23, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SWALOT] = - { - .categoryName = _("Poison Bag"), - .height = 17, - .weight = 800, - .description = gSwalotPokedexText, - .pokemonScale = 256, - .pokemonOffset = 6, - .trainerScale = 345, - .trainerOffset = 3, - }, - - [NATIONAL_DEX_CARVANHA] = - { - .categoryName = _("Savage"), - .height = 8, - .weight = 208, - .description = gCarvanhaPokedexText, - .pokemonScale = 362, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SHARPEDO] = - { - .categoryName = _("Brutal"), - .height = 18, - .weight = 888, - .description = gSharpedoPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 317, - .trainerOffset = 3, - }, - - [NATIONAL_DEX_WAILMER] = - { - .categoryName = _("Ball Whale"), - .height = 20, - .weight = 1300, - .description = gWailmerPokedexText, - .pokemonScale = 256, - .pokemonOffset = 2, - .trainerScale = 493, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WAILORD] = - { - .categoryName = _("Float Whale"), - .height = 145, - .weight = 3980, - .description = gWailordPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 1352, - .trainerOffset = 18, - }, - - [NATIONAL_DEX_NUMEL] = - { - .categoryName = _("Numb"), - .height = 7, - .weight = 240, - .description = gNumelPokedexText, - .pokemonScale = 342, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CAMERUPT] = - { - .categoryName = _("Eruption"), - .height = 19, - .weight = 2200, - .description = gCameruptPokedexText, - .pokemonScale = 256, - .pokemonOffset = 7, - .trainerScale = 345, - .trainerOffset = 6, - }, - - [NATIONAL_DEX_TORKOAL] = - { - .categoryName = _("Coal"), - .height = 5, - .weight = 804, - .description = gTorkoalPokedexText, - .pokemonScale = 390, - .pokemonOffset = 9, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SPOINK] = - { - .categoryName = _("Bounce"), - .height = 7, - .weight = 306, - .description = gSpoinkPokedexText, - .pokemonScale = 423, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GRUMPIG] = - { - .categoryName = _("Manipulate"), - .height = 9, - .weight = 715, - .description = gGrumpigPokedexText, - .pokemonScale = 358, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SPINDA] = - { - .categoryName = _("Spot Panda"), - .height = 11, - .weight = 50, - .description = gSpindaPokedexText, - .pokemonScale = 321, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TRAPINCH] = - { - .categoryName = _("Ant Pit"), - .height = 7, - .weight = 150, - .description = gTrapinchPokedexText, - .pokemonScale = 298, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VIBRAVA] = - { - .categoryName = _("Vibration"), - .height = 11, - .weight = 153, - .description = gVibravaPokedexText, - .pokemonScale = 370, - .pokemonOffset = 11, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FLYGON] = - { - .categoryName = _("Mystic"), - .height = 20, - .weight = 820, - .description = gFlygonPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 268, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_CACNEA] = - { - .categoryName = _("Cactus"), - .height = 4, - .weight = 513, - .description = gCacneaPokedexText, - .pokemonScale = 455, - .pokemonOffset = 20, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CACTURNE] = - { - .categoryName = _("Scarecrow"), - .height = 13, - .weight = 774, - .description = gCacturnePokedexText, - .pokemonScale = 327, - .pokemonOffset = 5, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SWABLU] = - { - .categoryName = _("Cotton Bird"), - .height = 4, - .weight = 12, - .description = gSwabluPokedexText, - .pokemonScale = 422, - .pokemonOffset = -8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ALTARIA] = - { - .categoryName = _("Humming"), - .height = 11, - .weight = 206, - .description = gAltariaPokedexText, - .pokemonScale = 327, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ZANGOOSE] = - { - .categoryName = _("Cat Ferret"), - .height = 13, - .weight = 403, - .description = gZangoosePokedexText, - .pokemonScale = 256, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SEVIPER] = - { - .categoryName = _("Fang Snake"), - .height = 27, - .weight = 525, - .description = gSeviperPokedexText, - .pokemonScale = 275, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LUNATONE] = - { - .categoryName = _("Meteorite"), - .height = 10, - .weight = 1680, - .description = gLunatonePokedexText, - .pokemonScale = 300, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SOLROCK] = - { - .categoryName = _("Meteorite"), - .height = 12, - .weight = 1540, - .description = gSolrockPokedexText, - .pokemonScale = 328, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BARBOACH] = - { - .categoryName = _("Whiskers"), - .height = 4, - .weight = 19, - .description = gBarboachPokedexText, - .pokemonScale = 581, - .pokemonOffset = -3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WHISCASH] = - { - .categoryName = _("Whiskers"), - .height = 9, - .weight = 236, - .description = gWhiscashPokedexText, - .pokemonScale = 317, - .pokemonOffset = 1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CORPHISH] = - { - .categoryName = _("Ruffian"), - .height = 6, - .weight = 115, - .description = gCorphishPokedexText, - .pokemonScale = 484, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CRAWDAUNT] = - { - .categoryName = _("Rogue"), - .height = 11, - .weight = 328, - .description = gCrawdauntPokedexText, - .pokemonScale = 365, - .pokemonOffset = 9, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BALTOY] = - { - .categoryName = _("Clay Doll"), - .height = 5, - .weight = 215, - .description = gBaltoyPokedexText, - .pokemonScale = 457, - .pokemonOffset = 21, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CLAYDOL] = - { - .categoryName = _("Clay Doll"), - .height = 15, - .weight = 1080, - .description = gClaydolPokedexText, - .pokemonScale = 256, - .pokemonOffset = 3, - .trainerScale = 280, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_LILEEP] = - { - .categoryName = _("Sea Lily"), - .height = 10, - .weight = 238, - .description = gLileepPokedexText, - .pokemonScale = 305, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CRADILY] = - { - .categoryName = _("Barnacle"), - .height = 15, - .weight = 604, - .description = gCradilyPokedexText, - .pokemonScale = 267, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ANORITH] = - { - .categoryName = _("Old Shrimp"), - .height = 7, - .weight = 125, - .description = gAnorithPokedexText, - .pokemonScale = 296, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ARMALDO] = - { - .categoryName = _("Plate"), - .height = 15, - .weight = 682, - .description = gArmaldoPokedexText, - .pokemonScale = 312, - .pokemonOffset = 3, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FEEBAS] = - { - .categoryName = _("Fish"), - .height = 6, - .weight = 74, - .description = gFeebasPokedexText, - .pokemonScale = 423, - .pokemonOffset = -4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MILOTIC] = - { - .categoryName = _("Tender"), - .height = 62, - .weight = 1620, - .description = gMiloticPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 360, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_CASTFORM] = - { - .categoryName = _("Weather"), - .height = 3, - .weight = 8, - .description = gCastformPokedexText, - .pokemonScale = 435, - .pokemonOffset = -5, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KECLEON] = - { - .categoryName = _("Color Swap"), - .height = 10, - .weight = 220, - .description = gKecleonPokedexText, - .pokemonScale = 316, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SHUPPET] = - { - .categoryName = _("Puppet"), - .height = 6, - .weight = 23, - .description = gShuppetPokedexText, - .pokemonScale = 440, - .pokemonOffset = 20, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BANETTE] = - { - .categoryName = _("Marionette"), - .height = 11, - .weight = 125, - .description = gBanettePokedexText, - .pokemonScale = 262, - .pokemonOffset = 9, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DUSKULL] = - { - .categoryName = _("Requiem"), - .height = 8, - .weight = 150, - .description = gDuskullPokedexText, - .pokemonScale = 406, - .pokemonOffset = -4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DUSCLOPS] = - { - .categoryName = _("Beckon"), - .height = 16, - .weight = 306, - .description = gDusclopsPokedexText, - .pokemonScale = 256, - .pokemonOffset = 3, - .trainerScale = 299, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_TROPIUS] = - { - .categoryName = _("Fruit"), - .height = 20, - .weight = 1000, - .description = gTropiusPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 344, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_CHIMECHO] = - { - .categoryName = _("Wind Chime"), - .height = 6, - .weight = 10, - .description = gChimechoPokedexText, - .pokemonScale = 505, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ABSOL] = - { - .categoryName = _("Disaster"), - .height = 12, - .weight = 470, - .description = gAbsolPokedexText, - .pokemonScale = 301, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WYNAUT] = - { - .categoryName = _("Bright"), - .height = 6, - .weight = 140, - .description = gWynautPokedexText, - .pokemonScale = 484, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SNORUNT] = - { - .categoryName = _("Snow Hat"), - .height = 7, - .weight = 168, - .description = gSnoruntPokedexText, - .pokemonScale = 380, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GLALIE] = - { - .categoryName = _("Face"), - .height = 15, - .weight = 2565, - .description = gGlaliePokedexText, - .pokemonScale = 256, - .pokemonOffset = 3, - .trainerScale = 344, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SPHEAL] = - { - .categoryName = _("Clap"), - .height = 8, - .weight = 395, - .description = gSphealPokedexText, - .pokemonScale = 315, - .pokemonOffset = 16, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SEALEO] = - { - .categoryName = _("Ball Roll"), - .height = 11, - .weight = 876, - .description = gSealeoPokedexText, - .pokemonScale = 338, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WALREIN] = - { - .categoryName = _("Ice Break"), - .height = 14, - .weight = 1506, - .description = gWalreinPokedexText, - .pokemonScale = 316, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CLAMPERL] = - { - .categoryName = _("Bivalve"), - .height = 4, - .weight = 525, - .description = gClamperlPokedexText, - .pokemonScale = 691, - .pokemonOffset = 22, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HUNTAIL] = - { - .categoryName = _("Deep Sea"), - .height = 17, - .weight = 270, - .description = gHuntailPokedexText, - .pokemonScale = 307, - .pokemonOffset = 1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GOREBYSS] = - { - .categoryName = _("South Sea"), - .height = 18, - .weight = 226, - .description = gGorebyssPokedexText, - .pokemonScale = 278, - .pokemonOffset = 5, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_RELICANTH] = - { - .categoryName = _("Longevity"), - .height = 10, - .weight = 234, - .description = gRelicanthPokedexText, - .pokemonScale = 316, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LUVDISC] = - { - .categoryName = _("Rendezvous"), - .height = 6, - .weight = 87, - .description = gLuvdiscPokedexText, - .pokemonScale = 371, - .pokemonOffset = 2, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BAGON] = - { - .categoryName = _("Rock Head"), - .height = 6, - .weight = 421, - .description = gBagonPokedexText, - .pokemonScale = 448, - .pokemonOffset = 18, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SHELGON] = - { - .categoryName = _("Endurance"), - .height = 11, - .weight = 1105, - .description = gShelgonPokedexText, - .pokemonScale = 311, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SALAMENCE] = - { - .categoryName = _("Dragon"), - .height = 15, - .weight = 1026, - .description = gSalamencePokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BELDUM] = - { - .categoryName = _("Iron Ball"), - .height = 6, - .weight = 952, - .description = gBeldumPokedexText, - .pokemonScale = 414, - .pokemonOffset = -1, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_METANG] = - { - .categoryName = _("Iron Claw"), - .height = 12, - .weight = 2025, - .description = gMetangPokedexText, - .pokemonScale = 256, - .pokemonOffset = 6, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_METAGROSS] = - { - .categoryName = _("Iron Leg"), - .height = 16, - .weight = 5500, - .description = gMetagrossPokedexText, - .pokemonScale = 256, - .pokemonOffset = 4, - .trainerScale = 447, - .trainerOffset = 9, - }, - - [NATIONAL_DEX_REGIROCK] = - { - .categoryName = _("Rock Peak"), - .height = 17, - .weight = 2300, - .description = gRegirockPokedexText, - .pokemonScale = 256, - .pokemonOffset = 2, - .trainerScale = 309, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_REGICE] = - { - .categoryName = _("Iceberg"), - .height = 18, - .weight = 1750, - .description = gRegicePokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 301, - .trainerOffset = 2, - }, - - [NATIONAL_DEX_REGISTEEL] = - { - .categoryName = _("Iron"), - .height = 19, - .weight = 2050, - .description = gRegisteelPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 359, - .trainerOffset = 6, - }, - - [NATIONAL_DEX_LATIAS] = - { - .categoryName = _("Eon"), - .height = 14, - .weight = 400, - .description = gLatiasPokedexText, - .pokemonScale = 304, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LATIOS] = - { - .categoryName = _("Eon"), - .height = 20, - .weight = 600, - .description = gLatiosPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 294, - .trainerOffset = 3, - }, - - [NATIONAL_DEX_KYOGRE] = - { - .categoryName = _("Sea Basin"), - .height = 45, - .weight = 3520, - .description = gKyogrePokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 614, - .trainerOffset = 13, - }, - - [NATIONAL_DEX_GROUDON] = - { - .categoryName = _("Continent"), - .height = 35, - .weight = 9500, - .description = gGroudonPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 515, - .trainerOffset = 14, - }, - - [NATIONAL_DEX_RAYQUAZA] = - { - .categoryName = _("Sky High"), - .height = 70, - .weight = 2065, - .description = gRayquazaPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 448, - .trainerOffset = 12, - }, - - [NATIONAL_DEX_JIRACHI] = - { - .categoryName = _("Wish"), - .height = 3, - .weight = 11, - .description = gJirachiPokedexText, - .pokemonScale = 608, - .pokemonOffset = -8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DEOXYS] = - { - .categoryName = _("DNA"), - .height = 17, - .weight = 608, - .description = gDeoxysPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 290, - .trainerOffset = 2, - }, - -#if P_GEN_4_POKEMON == TRUE - [NATIONAL_DEX_TURTWIG] = - { - .categoryName = _("Tiny Leaf"), - .height = 4, - .weight = 102, - .description = gTurtwigPokedexText, - .pokemonScale = 491, - .pokemonOffset = 20, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GROTLE] = - { - .categoryName = _("Grove"), - .height = 11, - .weight = 970, - .description = gGrotlePokedexText, - .pokemonScale = 320, - .pokemonOffset = 9, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TORTERRA] = - { - .categoryName = _("Continent"), - .height = 22, - .weight = 3100, - .description = gTorterraPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 348, - .trainerOffset = 6, - }, - - [NATIONAL_DEX_CHIMCHAR] = - { - .categoryName = _("Chimp"), - .height = 5, - .weight = 62, - .description = gChimcharPokedexText, - .pokemonScale = 432, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MONFERNO] = - { - .categoryName = _("Playful"), - .height = 9, - .weight = 220, - .description = gMonfernoPokedexText, - .pokemonScale = 338, - .pokemonOffset = 9, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_INFERNAPE] = - { - .categoryName = _("Flame"), - .height = 12, - .weight = 550, - .description = gInfernapePokedexText, - .pokemonScale = 282, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PIPLUP] = - { - .categoryName = _("Penguin"), - .height = 4, - .weight = 52, - .description = gPiplupPokedexText, - .pokemonScale = 491, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PRINPLUP] = - { - .categoryName = _("Penguin"), - .height = 8, - .weight = 230, - .description = gPrinplupPokedexText, - .pokemonScale = 366, - .pokemonOffset = 10, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_EMPOLEON] = - { - .categoryName = _("Emperor"), - .height = 17, - .weight = 845, - .description = gEmpoleonPokedexText, - .pokemonScale = 259, - .pokemonOffset = 0, - .trainerScale = 290, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_STARLY] = - { - .categoryName = _("Starling"), - .height = 3, - .weight = 20, - .description = gStarlyPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_STARAVIA] = - { - .categoryName = _("Starling"), - .height = 6, - .weight = 155, - .description = gStaraviaPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_STARAPTOR] = - { - .categoryName = _("Predator"), - .height = 12, - .weight = 249, - .description = gStaraptorPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BIDOOF] = - { - .categoryName = _("Plump Mouse"), - .height = 5, - .weight = 200, - .description = gBidoofPokedexText, - .pokemonScale = 432, - .pokemonOffset = 16, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BIBAREL] = - { - .categoryName = _("Beaver"), - .height = 10, - .weight = 315, - .description = gBibarelPokedexText, - .pokemonScale = 305, - .pokemonOffset = 8, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KRICKETOT] = - { - .categoryName = _("Cricket"), - .height = 3, - .weight = 22, - .description = gKricketotPokedexText, - .pokemonScale = 530, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KRICKETUNE] = - { - .categoryName = _("Cricket"), - .height = 10, - .weight = 255, - .description = gKricketunePokedexText, - .pokemonScale = 305, - .pokemonOffset = 8, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SHINX] = - { - .categoryName = _("Flash"), - .height = 5, - .weight = 95, - .description = gShinxPokedexText, - .pokemonScale = 432, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LUXIO] = - { - .categoryName = _("Spark"), - .height = 9, - .weight = 305, - .description = gLuxioPokedexText, - .pokemonScale = 338, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LUXRAY] = - { - .categoryName = _("Gleam Eyes"), - .height = 14, - .weight = 420, - .description = gLuxrayPokedexText, - .pokemonScale = 265, - .pokemonOffset = 2, - .trainerScale = 262, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BUDEW] = - { - .categoryName = _("Bud"), - .height = 2, - .weight = 12, - .description = gBudewPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ROSERADE] = - { - .categoryName = _("Bouquet"), - .height = 9, - .weight = 145, - .description = gRoseradePokedexText, - .pokemonScale = 338, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CRANIDOS] = - { - .categoryName = _("Head Butt"), - .height = 9, - .weight = 315, - .description = gCranidosPokedexText, - .pokemonScale = 338, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_RAMPARDOS] = - { - .categoryName = _("Head Butt"), - .height = 16, - .weight = 1025, - .description = gRampardosPokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_SHIELDON] = - { - .categoryName = _("Shield"), - .height = 5, - .weight = 570, - .description = gShieldonPokedexText, - .pokemonScale = 432, - .pokemonOffset = 16, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BASTIODON] = - { - .categoryName = _("Shield"), - .height = 13, - .weight = 1495, - .description = gBastiodonPokedexText, - .pokemonScale = 272, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BURMY] = - { - .categoryName = _("Bagworm"), - .height = 2, - .weight = 34, - .description = gBurmyPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WORMADAM] = - { - .categoryName = _("Bagworm"), - .height = 5, - .weight = 65, - .description = gWormadamPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MOTHIM] = - { - .categoryName = _("Moth"), - .height = 9, - .weight = 233, - .description = gMothimPokedexText, - .pokemonScale = 338, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_COMBEE] = - { - .categoryName = _("Tiny Bee"), - .height = 3, - .weight = 55, - .description = gCombeePokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VESPIQUEN] = - { - .categoryName = _("Beehive"), - .height = 12, - .weight = 385, - .description = gVespiquenPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PACHIRISU] = - { - .categoryName = _("EleSquirrel"), - .height = 4, - .weight = 39, - .description = gPachirisuPokedexText, - .pokemonScale = 491, - .pokemonOffset = 16, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BUIZEL] = - { - .categoryName = _("Sea Weasel"), - .height = 7, - .weight = 295, - .description = gBuizelPokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FLOATZEL] = - { - .categoryName = _("Sea Weasel"), - .height = 11, - .weight = 335, - .description = gFloatzelPokedexText, - .pokemonScale = 320, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CHERUBI] = - { - .categoryName = _("Cherry"), - .height = 4, - .weight = 33, - .description = gCherubiPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CHERRIM] = - { - .categoryName = _("Blossom"), - .height = 5, - .weight = 93, - .description = gCherrimPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SHELLOS] = - { - .categoryName = _("Sea Slug"), - .height = 3, - .weight = 63, - .description = gShellosPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GASTRODON] = - { - .categoryName = _("Sea Slug"), - .height = 9, - .weight = 299, - .description = gGastrodonPokedexText, - .pokemonScale = 338, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_AMBIPOM] = - { - .categoryName = _("Long Tail"), - .height = 12, - .weight = 203, - .description = gAmbipomPokedexText, - .pokemonScale = 282, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DRIFLOON] = - { - .categoryName = _("Balloon"), - .height = 4, - .weight = 12, - .description = gDrifloonPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DRIFBLIM] = - { - .categoryName = _("Blimp"), - .height = 12, - .weight = 150, - .description = gDrifblimPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BUNEARY] = - { - .categoryName = _("Rabbit"), - .height = 4, - .weight = 55, - .description = gBunearyPokedexText, - .pokemonScale = 491, - .pokemonOffset = 16, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LOPUNNY] = - { - .categoryName = _("Rabbit"), - .height = 12, - .weight = 333, - .description = gLopunnyPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MISMAGIUS] = - { - .categoryName = _("Magical"), - .height = 9, - .weight = 44, - .description = gMismagiusPokedexText, - .pokemonScale = 338, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HONCHKROW] = - { - .categoryName = _("Big Boss"), - .height = 9, - .weight = 273, - .description = gHonchkrowPokedexText, - .pokemonScale = 338, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GLAMEOW] = - { - .categoryName = _("Catty"), - .height = 5, - .weight = 39, - .description = gGlameowPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PURUGLY] = - { - .categoryName = _("Tiger Cat"), - .height = 10, - .weight = 438, - .description = gPuruglyPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CHINGLING] = - { - .categoryName = _("Bell"), - .height = 2, - .weight = 6, - .description = gChinglingPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_STUNKY] = - { - .categoryName = _("Skunk"), - .height = 4, - .weight = 192, - .description = gStunkyPokedexText, - .pokemonScale = 491, - .pokemonOffset = 17, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SKUNTANK] = - { - .categoryName = _("Skunk"), - .height = 10, - .weight = 380, - .description = gSkuntankPokedexText, - .pokemonScale = 305, - .pokemonOffset = 9, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BRONZOR] = - { - .categoryName = _("Bronze"), - .height = 5, - .weight = 605, - .description = gBronzorPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BRONZONG] = - { - .categoryName = _("Bronze Bell"), - .height = 13, - .weight = 1870, - .description = gBronzongPokedexText, - .pokemonScale = 272, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BONSLY] = - { - .categoryName = _("Bonsai"), - .height = 5, - .weight = 150, - .description = gBonslyPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MIME_JR] = - { - .categoryName = _("Mime"), - .height = 6, - .weight = 130, - .description = gMimeJrPokedexText, - .pokemonScale = 422, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HAPPINY] = - { - .categoryName = _("Playhouse"), - .height = 6, - .weight = 244, - .description = gHappinyPokedexText, - .pokemonScale = 422, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CHATOT] = - { - .categoryName = _("Music Note"), - .height = 5, - .weight = 19, - .description = gChatotPokedexText, - .pokemonScale = 432, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SPIRITOMB] = - { - .categoryName = _("Forbidden"), - .height = 10, - .weight = 1080, - .description = gSpiritombPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GIBLE] = - { - .categoryName = _("Land Shark"), - .height = 7, - .weight = 205, - .description = gGiblePokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GABITE] = - { - .categoryName = _("Cave"), - .height = 14, - .weight = 560, - .description = gGabitePokedexText, - .pokemonScale = 265, - .pokemonOffset = 2, - .trainerScale = 262, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GARCHOMP] = - { - .categoryName = _("Mach"), - .height = 19, - .weight = 950, - .description = gGarchompPokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 326, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_MUNCHLAX] = - { - .categoryName = _("Big Eater"), - .height = 6, - .weight = 1050, - .description = gMunchlaxPokedexText, - .pokemonScale = 422, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_RIOLU] = - { - .categoryName = _("Emanation"), - .height = 7, - .weight = 202, - .description = gRioluPokedexText, - .pokemonScale = 365, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LUCARIO] = - { - .categoryName = _("Aura"), - .height = 12, - .weight = 540, - .description = gLucarioPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HIPPOPOTAS] = - { - .categoryName = _("Hippo"), - .height = 8, - .weight = 495, - .description = gHippopotasPokedexText, - .pokemonScale = 366, - .pokemonOffset = 11, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HIPPOWDON] = - { - .categoryName = _("Heavyweight"), - .height = 20, - .weight = 3000, - .description = gHippowdonPokedexText, - .pokemonScale = 261, - .pokemonOffset = 2, - .trainerScale = 334, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_SKORUPI] = - { - .categoryName = _("Scorpion"), - .height = 8, - .weight = 120, - .description = gSkorupiPokedexText, - .pokemonScale = 366, - .pokemonOffset = 12, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DRAPION] = - { - .categoryName = _("Ogre Scorp"), - .height = 13, - .weight = 615, - .description = gDrapionPokedexText, - .pokemonScale = 272, - .pokemonOffset = 5, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CROAGUNK] = - { - .categoryName = _("Toxic Mouth"), - .height = 7, - .weight = 230, - .description = gCroagunkPokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TOXICROAK] = - { - .categoryName = _("Toxic Mouth"), - .height = 13, - .weight = 444, - .description = gToxicroakPokedexText, - .pokemonScale = 272, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CARNIVINE] = - { - .categoryName = _("Bug Catcher"), - .height = 14, - .weight = 270, - .description = gCarnivinePokedexText, - .pokemonScale = 265, - .pokemonOffset = 2, - .trainerScale = 262, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FINNEON] = - { - .categoryName = _("Wing Fish"), - .height = 4, - .weight = 70, - .description = gFinneonPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LUMINEON] = - { - .categoryName = _("Neon"), - .height = 12, - .weight = 240, - .description = gLumineonPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MANTYKE] = - { - .categoryName = _("Kite"), - .height = 10, - .weight = 650, - .description = gMantykePokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SNOVER] = - { - .categoryName = _("Frost Tree"), - .height = 10, - .weight = 505, - .description = gSnoverPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ABOMASNOW] = - { - .categoryName = _("Frost Tree"), - .height = 22, - .weight = 1355, - .description = gAbomasnowPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 348, - .trainerOffset = 6, - }, - - [NATIONAL_DEX_WEAVILE] = - { - .categoryName = _("Sharp Claw"), - .height = 11, - .weight = 340, - .description = gWeavilePokedexText, - .pokemonScale = 320, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MAGNEZONE] = - { - .categoryName = _("Magnet Area"), - .height = 12, - .weight = 1800, - .description = gMagnezonePokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LICKILICKY] = - { - .categoryName = _("Licking"), - .height = 17, - .weight = 1400, - .description = gLickilickyPokedexText, - .pokemonScale = 259, - .pokemonOffset = 0, - .trainerScale = 290, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_RHYPERIOR] = - { - .categoryName = _("Drill"), - .height = 24, - .weight = 2828, - .description = gRhyperiorPokedexText, - .pokemonScale = 256, - .pokemonOffset = 3, - .trainerScale = 369, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_TANGROWTH] = - { - .categoryName = _("Vine"), - .height = 20, - .weight = 1286, - .description = gTangrowthPokedexText, - .pokemonScale = 261, - .pokemonOffset = 1, - .trainerScale = 334, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_ELECTIVIRE] = - { - .categoryName = _("Thunderbolt"), - .height = 18, - .weight = 1386, - .description = gElectivirePokedexText, - .pokemonScale = 267, - .pokemonOffset = 2, - .trainerScale = 286, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_MAGMORTAR] = - { - .categoryName = _("Blast"), - .height = 16, - .weight = 680, - .description = gMagmortarPokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_TOGEKISS] = - { - .categoryName = _("Jubilee"), - .height = 15, - .weight = 380, - .description = gTogekissPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_YANMEGA] = - { - .categoryName = _("Ogre Darner"), - .height = 19, - .weight = 515, - .description = gYanmegaPokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 326, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_LEAFEON] = - { - .categoryName = _("Verdant"), - .height = 10, - .weight = 255, - .description = gLeafeonPokedexText, - .pokemonScale = 305, - .pokemonOffset = 8, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GLACEON] = - { - .categoryName = _("Fresh Snow"), - .height = 8, - .weight = 259, - .description = gGlaceonPokedexText, - .pokemonScale = 366, - .pokemonOffset = 10, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GLISCOR] = - { - .categoryName = _("Fang Scorp"), - .height = 20, - .weight = 425, - .description = gGliscorPokedexText, - .pokemonScale = 261, - .pokemonOffset = 1, - .trainerScale = 334, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_MAMOSWINE] = - { - .categoryName = _("Twin Tusk"), - .height = 25, - .weight = 2910, - .description = gMamoswinePokedexText, - .pokemonScale = 257, - .pokemonOffset = 6, - .trainerScale = 423, - .trainerOffset = 8, - }, - - [NATIONAL_DEX_PORYGON_Z] = - { - .categoryName = _("Virtual"), - .height = 9, - .weight = 340, - .description = gPorygonZPokedexText, - .pokemonScale = 338, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GALLADE] = - { - .categoryName = _("Blade"), - .height = 16, - .weight = 520, - .description = gGalladePokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_PROBOPASS] = - { - .categoryName = _("Compass"), - .height = 14, - .weight = 3400, - .description = gProbopassPokedexText, - .pokemonScale = 265, - .pokemonOffset = 2, - .trainerScale = 262, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DUSKNOIR] = - { - .categoryName = _("Gripper"), - .height = 22, - .weight = 1066, - .description = gDusknoirPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 348, - .trainerOffset = 6, - }, - - [NATIONAL_DEX_FROSLASS] = - { - .categoryName = _("Snow Land"), - .height = 13, - .weight = 266, - .description = gFroslassPokedexText, - .pokemonScale = 272, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ROTOM] = - { - .categoryName = _("Plasma"), - .height = 3, - .weight = 3, - .description = gRotomPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_UXIE] = - { - .categoryName = _("Knowledge"), - .height = 3, - .weight = 3, - .description = gUxiePokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MESPRIT] = - { - .categoryName = _("Emotion"), - .height = 3, - .weight = 3, - .description = gMespritPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_AZELF] = - { - .categoryName = _("Willpower"), - .height = 3, - .weight = 3, - .description = gAzelfPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DIALGA] = - { - .categoryName = _("Temporal"), - .height = 54, - .weight = 6830, - .description = gDialgaPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 721, - .trainerOffset = 19, - }, - - [NATIONAL_DEX_PALKIA] = - { - .categoryName = _("Spatial"), - .height = 42, - .weight = 3360, - .description = gPalkiaPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 650, - .trainerOffset = 16, - }, - - [NATIONAL_DEX_HEATRAN] = - { - .categoryName = _("Lava Dome"), - .height = 17, - .weight = 4300, - .description = gHeatranPokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 290, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_REGIGIGAS] = - { - .categoryName = _("Colossal"), - .height = 37, - .weight = 4200, - .description = gRegigigasPokedexText, - .pokemonScale = 256, - .pokemonOffset = 2, - .trainerScale = 610, - .trainerOffset = 17, - }, - - [NATIONAL_DEX_GIRATINA] = - { - .categoryName = _("Renegade"), - .height = 45, - .weight = 7500, - .description = gGiratinaPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 614, - .trainerOffset = 13, - }, - - [NATIONAL_DEX_CRESSELIA] = - { - .categoryName = _("Lunar"), - .height = 15, - .weight = 856, - .description = gCresseliaPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PHIONE] = - { - .categoryName = _("Sea Drifter"), - .height = 4, - .weight = 31, - .description = gPhionePokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MANAPHY] = - { - .categoryName = _("Seafaring"), - .height = 3, - .weight = 14, - .description = gManaphyPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DARKRAI] = - { - .categoryName = _("Pitch-Black"), - .height = 15, - .weight = 505, - .description = gDarkraiPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SHAYMIN] = - { - .categoryName = _("Gratitude"), - .height = 2, - .weight = 21, - .description = gShayminPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ARCEUS] = - { - .categoryName = _("Alpha"), - .height = 32, - .weight = 3200, - .description = gArceusPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 495, - .trainerOffset = 10, - }, -#endif - -#if P_GEN_5_POKEMON == TRUE - [NATIONAL_DEX_VICTINI] = - { - .categoryName = _("Victory"), - .height = 4, - .weight = 40, - .description = gVictiniPokedexText, - .pokemonScale = 491, - .pokemonOffset = 16, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SNIVY] = - { - .categoryName = _("Grass Snake"), - .height = 6, - .weight = 81, - .description = gSnivyPokedexText, - .pokemonScale = 422, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SERVINE] = - { - .categoryName = _("Grass Snake"), - .height = 8, - .weight = 160, - .description = gServinePokedexText, - .pokemonScale = 366, - .pokemonOffset = 9, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SERPERIOR] = - { - .categoryName = _("Regal"), - .height = 33, - .weight = 630, - .description = gSerperiorPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 405, - .trainerOffset = 8, - }, - - [NATIONAL_DEX_TEPIG] = - { - .categoryName = _("Fire Pig"), - .height = 5, - .weight = 99, - .description = gTepigPokedexText, - .pokemonScale = 432, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PIGNITE] = - { - .categoryName = _("Fire Pig"), - .height = 10, - .weight = 555, - .description = gPignitePokedexText, - .pokemonScale = 305, - .pokemonOffset = 8, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_EMBOAR] = - { - .categoryName = _("Fire Pig"), - .height = 16, - .weight = 1500, - .description = gEmboarPokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_OSHAWOTT] = - { - .categoryName = _("Sea Otter"), - .height = 5, - .weight = 59, - .description = gOshawottPokedexText, - .pokemonScale = 432, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DEWOTT] = - { - .categoryName = _("Discipline"), - .height = 8, - .weight = 245, - .description = gDewottPokedexText, - .pokemonScale = 366, - .pokemonOffset = 9, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SAMUROTT] = - { - .categoryName = _("Formidable"), - .height = 15, - .weight = 946, - .description = gSamurottPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PATRAT] = - { - .categoryName = _("Scout"), - .height = 5, - .weight = 116, - .description = gPatratPokedexText, - .pokemonScale = 432, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WATCHOG] = - { - .categoryName = _("Lookout"), - .height = 11, - .weight = 270, - .description = gWatchogPokedexText, - .pokemonScale = 320, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LILLIPUP] = - { - .categoryName = _("Puppy"), - .height = 4, - .weight = 41, - .description = gLillipupPokedexText, - .pokemonScale = 491, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HERDIER] = - { - .categoryName = _("Loyal Dog"), - .height = 9, - .weight = 147, - .description = gHerdierPokedexText, - .pokemonScale = 338, - .pokemonOffset = 9, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_STOUTLAND] = - { - .categoryName = _("Big-Hearted"), - .height = 12, - .weight = 610, - .description = gStoutlandPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PURRLOIN] = - { - .categoryName = _("Devious"), - .height = 4, - .weight = 101, - .description = gPurrloinPokedexText, - .pokemonScale = 491, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LIEPARD] = - { - .categoryName = _("Cruel"), - .height = 11, - .weight = 375, - .description = gLiepardPokedexText, - .pokemonScale = 320, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PANSAGE] = - { - .categoryName = _("Grass Monkey"), - .height = 6, - .weight = 105, - .description = gPansagePokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SIMISAGE] = - { - .categoryName = _("Thorn Monkey"), - .height = 11, - .weight = 305, - .description = gSimisagePokedexText, - .pokemonScale = 320, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PANSEAR] = - { - .categoryName = _("High Temp"), - .height = 6, - .weight = 110, - .description = gPansearPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SIMISEAR] = - { - .categoryName = _("Ember"), - .height = 10, - .weight = 280, - .description = gSimisearPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PANPOUR] = - { - .categoryName = _("Spray"), - .height = 6, - .weight = 135, - .description = gPanpourPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SIMIPOUR] = - { - .categoryName = _("Geyser"), - .height = 10, - .weight = 290, - .description = gSimipourPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MUNNA] = - { - .categoryName = _("Dream Eater"), - .height = 6, - .weight = 233, - .description = gMunnaPokedexText, - .pokemonScale = 422, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MUSHARNA] = - { - .categoryName = _("Drowsing"), - .height = 11, - .weight = 605, - .description = gMusharnaPokedexText, - .pokemonScale = 320, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PIDOVE] = - { - .categoryName = _("Tiny Pigeon"), - .height = 3, - .weight = 21, - .description = gPidovePokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TRANQUILL] = - { - .categoryName = _("Wild Pigeon"), - .height = 6, - .weight = 150, - .description = gTranquillPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_UNFEZANT] = - { - .categoryName = _("Proud"), - .height = 12, - .weight = 290, - .description = gUnfezantPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BLITZLE] = - { - .categoryName = _("Electrified"), - .height = 8, - .weight = 298, - .description = gBlitzlePokedexText, - .pokemonScale = 366, - .pokemonOffset = 8, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ZEBSTRIKA] = - { - .categoryName = _("Thunderbolt"), - .height = 16, - .weight = 795, - .description = gZebstrikaPokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_ROGGENROLA] = - { - .categoryName = _("Mantle"), - .height = 4, - .weight = 180, - .description = gRoggenrolaPokedexText, - .pokemonScale = 491, - .pokemonOffset = 16, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BOLDORE] = - { - .categoryName = _("Ore"), - .height = 9, - .weight = 1020, - .description = gBoldorePokedexText, - .pokemonScale = 338, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GIGALITH] = - { - .categoryName = _("Compressed"), - .height = 17, - .weight = 2600, - .description = gGigalithPokedexText, - .pokemonScale = 259, - .pokemonOffset = 0, - .trainerScale = 290, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_WOOBAT] = - { - .categoryName = _("Bat"), - .height = 4, - .weight = 21, - .description = gWoobatPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SWOOBAT] = - { - .categoryName = _("Courting"), - .height = 9, - .weight = 105, - .description = gSwoobatPokedexText, - .pokemonScale = 338, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DRILBUR] = - { - .categoryName = _("Mole"), - .height = 3, - .weight = 85, - .description = gDrilburPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_EXCADRILL] = - { - .categoryName = _("Subterrene"), - .height = 7, - .weight = 404, - .description = gExcadrillPokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_AUDINO] = - { - .categoryName = _("Hearing"), - .height = 11, - .weight = 310, - .description = gAudinoPokedexText, - .pokemonScale = 320, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TIMBURR] = - { - .categoryName = _("Muscular"), - .height = 6, - .weight = 125, - .description = gTimburrPokedexText, - .pokemonScale = 422, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GURDURR] = - { - .categoryName = _("Muscular"), - .height = 12, - .weight = 400, - .description = gGurdurrPokedexText, - .pokemonScale = 282, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CONKELDURR] = - { - .categoryName = _("Muscular"), - .height = 14, - .weight = 870, - .description = gConkeldurrPokedexText, - .pokemonScale = 265, - .pokemonOffset = 3, - .trainerScale = 262, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TYMPOLE] = - { - .categoryName = _("Tadpole"), - .height = 5, - .weight = 45, - .description = gTympolePokedexText, - .pokemonScale = 432, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PALPITOAD] = - { - .categoryName = _("Vibration"), - .height = 8, - .weight = 170, - .description = gPalpitoadPokedexText, - .pokemonScale = 366, - .pokemonOffset = 10, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SEISMITOAD] = - { - .categoryName = _("Vibration"), - .height = 15, - .weight = 620, - .description = gSeismitoadPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_THROH] = - { - .categoryName = _("Judo"), - .height = 13, - .weight = 555, - .description = gThrohPokedexText, - .pokemonScale = 272, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SAWK] = - { - .categoryName = _("Karate"), - .height = 14, - .weight = 510, - .description = gSawkPokedexText, - .pokemonScale = 265, - .pokemonOffset = 4, - .trainerScale = 262, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SEWADDLE] = - { - .categoryName = _("Sewing"), - .height = 3, - .weight = 25, - .description = gSewaddlePokedexText, - .pokemonScale = 530, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SWADLOON] = - { - .categoryName = _("Leaf-Wrapped"), - .height = 5, - .weight = 73, - .description = gSwadloonPokedexText, - .pokemonScale = 432, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LEAVANNY] = - { - .categoryName = _("Nurturing"), - .height = 12, - .weight = 205, - .description = gLeavannyPokedexText, - .pokemonScale = 282, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VENIPEDE] = - { - .categoryName = _("Centipede"), - .height = 4, - .weight = 53, - .description = gVenipedePokedexText, - .pokemonScale = 491, - .pokemonOffset = 16, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WHIRLIPEDE] = - { - .categoryName = _("Curlipede"), - .height = 12, - .weight = 585, - .description = gWhirlipedePokedexText, - .pokemonScale = 282, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SCOLIPEDE] = - { - .categoryName = _("Megapede"), - .height = 25, - .weight = 2005, - .description = gScolipedePokedexText, - .pokemonScale = 257, - .pokemonOffset = 2, - .trainerScale = 423, - .trainerOffset = 8, - }, - - [NATIONAL_DEX_COTTONEE] = - { - .categoryName = _("Cotton Puff"), - .height = 3, - .weight = 6, - .description = gCottoneePokedexText, - .pokemonScale = 530, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WHIMSICOTT] = - { - .categoryName = _("Windveiled"), - .height = 7, - .weight = 66, - .description = gWhimsicottPokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PETILIL] = - { - .categoryName = _("Bulb"), - .height = 5, - .weight = 66, - .description = gPetililPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LILLIGANT] = - { - .categoryName = _("Flowering"), - .height = 11, - .weight = 163, - .description = gLilligantPokedexText, - .pokemonScale = 320, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BASCULIN] = - { - .categoryName = _("Hostile"), - .height = 10, - .weight = 180, - .description = gBasculinPokedexText, - .pokemonScale = 316, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SANDILE] = - { - .categoryName = _("Desert Croc"), - .height = 7, - .weight = 152, - .description = gSandilePokedexText, - .pokemonScale = 365, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KROKOROK] = - { - .categoryName = _("Desert Croc"), - .height = 10, - .weight = 334, - .description = gKrokorokPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KROOKODILE] = - { - .categoryName = _("Intimidate"), - .height = 15, - .weight = 963, - .description = gKrookodilePokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DARUMAKA] = - { - .categoryName = _("Zen Charm"), - .height = 6, - .weight = 375, - .description = gDarumakaPokedexText, - .pokemonScale = 422, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DARMANITAN] = - { - .categoryName = _("Blazing"), - .height = 13, - .weight = 929, - .description = gDarmanitanPokedexText, - .pokemonScale = 272, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MARACTUS] = - { - .categoryName = _("Cactus"), - .height = 10, - .weight = 280, - .description = gMaractusPokedexText, - .pokemonScale = 305, - .pokemonOffset = 6, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DWEBBLE] = - { - .categoryName = _("Rock Inn"), - .height = 3, - .weight = 145, - .description = gDwebblePokedexText, - .pokemonScale = 530, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CRUSTLE] = - { - .categoryName = _("Stone Home"), - .height = 14, - .weight = 2000, - .description = gCrustlePokedexText, - .pokemonScale = 265, - .pokemonOffset = 2, - .trainerScale = 262, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SCRAGGY] = - { - .categoryName = _("Shedding"), - .height = 6, - .weight = 118, - .description = gScraggyPokedexText, - .pokemonScale = 422, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SCRAFTY] = - { - .categoryName = _("Hoodlum"), - .height = 11, - .weight = 300, - .description = gScraftyPokedexText, - .pokemonScale = 320, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SIGILYPH] = - { - .categoryName = _("Avianoid"), - .height = 14, - .weight = 140, - .description = gSigilyphPokedexText, - .pokemonScale = 265, - .pokemonOffset = 2, - .trainerScale = 262, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_YAMASK] = - { - .categoryName = _("Spirit"), - .height = 5, - .weight = 15, - .description = gYamaskPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_COFAGRIGUS] = - { - .categoryName = _("Coffin"), - .height = 17, - .weight = 765, - .description = gCofagrigusPokedexText, - .pokemonScale = 259, - .pokemonOffset = 0, - .trainerScale = 290, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_TIRTOUGA] = - { - .categoryName = _("Prototurtle"), - .height = 7, - .weight = 165, - .description = gTirtougaPokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CARRACOSTA] = - { - .categoryName = _("Prototurtle"), - .height = 12, - .weight = 810, - .description = gCarracostaPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ARCHEN] = - { - .categoryName = _("First Bird"), - .height = 5, - .weight = 95, - .description = gArchenPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ARCHEOPS] = - { - .categoryName = _("First Bird"), - .height = 14, - .weight = 320, - .description = gArcheopsPokedexText, - .pokemonScale = 265, - .pokemonOffset = 2, - .trainerScale = 262, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TRUBBISH] = - { - .categoryName = _("Trash Bag"), - .height = 6, - .weight = 310, - .description = gTrubbishPokedexText, - .pokemonScale = 422, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GARBODOR] = - { - .categoryName = _("Trash Heap"), - .height = 19, - .weight = 1073, - .description = gGarbodorPokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 326, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_ZORUA] = - { - .categoryName = _("Tricky Fox"), - .height = 7, - .weight = 125, - .description = gZoruaPokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ZOROARK] = - { - .categoryName = _("Illusion Fox"), - .height = 16, - .weight = 811, - .description = gZoroarkPokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_MINCCINO] = - { - .categoryName = _("Chinchilla"), - .height = 4, - .weight = 58, - .description = gMinccinoPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CINCCINO] = - { - .categoryName = _("Scarf"), - .height = 5, - .weight = 75, - .description = gCinccinoPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GOTHITA] = - { - .categoryName = _("Fixation"), - .height = 4, - .weight = 58, - .description = gGothitaPokedexText, - .pokemonScale = 491, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GOTHORITA] = - { - .categoryName = _("Manipulate"), - .height = 7, - .weight = 180, - .description = gGothoritaPokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GOTHITELLE] = - { - .categoryName = _("Astral Body"), - .height = 15, - .weight = 440, - .description = gGothitellePokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SOLOSIS] = - { - .categoryName = _("Cell"), - .height = 3, - .weight = 10, - .description = gSolosisPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DUOSION] = - { - .categoryName = _("Mitosis"), - .height = 6, - .weight = 80, - .description = gDuosionPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_REUNICLUS] = - { - .categoryName = _("Multiplying"), - .height = 10, - .weight = 201, - .description = gReuniclusPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DUCKLETT] = - { - .categoryName = _("Water Bird"), - .height = 5, - .weight = 55, - .description = gDucklettPokedexText, - .pokemonScale = 432, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SWANNA] = - { - .categoryName = _("White Bird"), - .height = 13, - .weight = 242, - .description = gSwannaPokedexText, - .pokemonScale = 272, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VANILLITE] = - { - .categoryName = _("Fresh Snow"), - .height = 4, - .weight = 57, - .description = gVanillitePokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VANILLISH] = - { - .categoryName = _("Icy Snow"), - .height = 11, - .weight = 410, - .description = gVanillishPokedexText, - .pokemonScale = 320, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VANILLUXE] = - { - .categoryName = _("Snowstorm"), - .height = 13, - .weight = 575, - .description = gVanilluxePokedexText, - .pokemonScale = 272, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DEERLING] = - { - .categoryName = _("Season"), - .height = 6, - .weight = 195, - .description = gDeerlingPokedexText, - .pokemonScale = 422, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SAWSBUCK] = - { - .categoryName = _("Season"), - .height = 19, - .weight = 925, - .description = gSawsbuckPokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 326, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_EMOLGA] = - { - .categoryName = _("Sky Squirrel"), - .height = 4, - .weight = 50, - .description = gEmolgaPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KARRABLAST] = - { - .categoryName = _("Clamping"), - .height = 5, - .weight = 59, - .description = gKarrablastPokedexText, - .pokemonScale = 432, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ESCAVALIER] = - { - .categoryName = _("Cavalry"), - .height = 10, - .weight = 330, - .description = gEscavalierPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FOONGUS] = - { - .categoryName = _("Mushroom"), - .height = 2, - .weight = 10, - .description = gFoongusPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_AMOONGUSS] = - { - .categoryName = _("Mushroom"), - .height = 6, - .weight = 105, - .description = gAmoongussPokedexText, - .pokemonScale = 422, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FRILLISH] = - { - .categoryName = _("Floating"), - .height = 12, - .weight = 330, - .description = gFrillishPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_JELLICENT] = - { - .categoryName = _("Floating"), - .height = 22, - .weight = 1350, - .description = gJellicentPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 348, - .trainerOffset = 6, - }, - - [NATIONAL_DEX_ALOMOMOLA] = - { - .categoryName = _("Caring"), - .height = 12, - .weight = 316, - .description = gAlomomolaPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_JOLTIK] = - { - .categoryName = _("Attaching"), - .height = 1, - .weight = 6, - .description = gJoltikPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GALVANTULA] = - { - .categoryName = _("EleSpider"), - .height = 8, - .weight = 143, - .description = gGalvantulaPokedexText, - .pokemonScale = 366, - .pokemonOffset = 10, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FERROSEED] = - { - .categoryName = _("Thorn Seed"), - .height = 6, - .weight = 188, - .description = gFerroseedPokedexText, - .pokemonScale = 422, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FERROTHORN] = - { - .categoryName = _("Thorn Pod"), - .height = 10, - .weight = 1100, - .description = gFerrothornPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KLINK] = - { - .categoryName = _("Gear"), - .height = 3, - .weight = 210, - .description = gKlinkPokedexText, - .pokemonScale = 530, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KLANG] = - { - .categoryName = _("Gear"), - .height = 6, - .weight = 510, - .description = gKlangPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KLINKLANG] = - { - .categoryName = _("Gear"), - .height = 6, - .weight = 810, - .description = gKlinklangPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TYNAMO] = - { - .categoryName = _("EleFish"), - .height = 2, - .weight = 3, - .description = gTynamoPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_EELEKTRIK] = - { - .categoryName = _("EleFish"), - .height = 12, - .weight = 220, - .description = gEelektrikPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_EELEKTROSS] = - { - .categoryName = _("EleFish"), - .height = 21, - .weight = 805, - .description = gEelektrossPokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 365, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_ELGYEM] = - { - .categoryName = _("Cerebral"), - .height = 5, - .weight = 90, - .description = gElgyemPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BEHEEYEM] = - { - .categoryName = _("Cerebral"), - .height = 10, - .weight = 345, - .description = gBeheeyemPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LITWICK] = - { - .categoryName = _("Candle"), - .height = 3, - .weight = 31, - .description = gLitwickPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LAMPENT] = - { - .categoryName = _("Lamp"), - .height = 6, - .weight = 130, - .description = gLampentPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CHANDELURE] = - { - .categoryName = _("Luring"), - .height = 10, - .weight = 343, - .description = gChandelurePokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_AXEW] = - { - .categoryName = _("Tusk"), - .height = 6, - .weight = 180, - .description = gAxewPokedexText, - .pokemonScale = 422, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FRAXURE] = - { - .categoryName = _("Axe Jaw"), - .height = 10, - .weight = 360, - .description = gFraxurePokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HAXORUS] = - { - .categoryName = _("Axe Jaw"), - .height = 18, - .weight = 1055, - .description = gHaxorusPokedexText, - .pokemonScale = 267, - .pokemonOffset = 2, - .trainerScale = 286, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_CUBCHOO] = - { - .categoryName = _("Chill"), - .height = 5, - .weight = 85, - .description = gCubchooPokedexText, - .pokemonScale = 432, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BEARTIC] = - { - .categoryName = _("Freezing"), - .height = 26, - .weight = 2600, - .description = gBearticPokedexText, - .pokemonScale = 266, - .pokemonOffset = 3, - .trainerScale = 399, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_CRYOGONAL] = - { - .categoryName = _("Crystallize"), - .height = 11, - .weight = 1480, - .description = gCryogonalPokedexText, - .pokemonScale = 320, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SHELMET] = - { - .categoryName = _("Snail"), - .height = 4, - .weight = 77, - .description = gShelmetPokedexText, - .pokemonScale = 491, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ACCELGOR] = - { - .categoryName = _("Shell Out"), - .height = 8, - .weight = 253, - .description = gAccelgorPokedexText, - .pokemonScale = 366, - .pokemonOffset = 9, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_STUNFISK] = - { - .categoryName = _("Trap"), - .height = 7, - .weight = 110, - .description = gStunfiskPokedexText, - .pokemonScale = 365, - .pokemonOffset = 14, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MIENFOO] = - { - .categoryName = _("Martial Arts"), - .height = 9, - .weight = 200, - .description = gMienfooPokedexText, - .pokemonScale = 338, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MIENSHAO] = - { - .categoryName = _("Martial Arts"), - .height = 14, - .weight = 355, - .description = gMienshaoPokedexText, - .pokemonScale = 265, - .pokemonOffset = 2, - .trainerScale = 262, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DRUDDIGON] = - { - .categoryName = _("Cave"), - .height = 16, - .weight = 1390, - .description = gDruddigonPokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_GOLETT] = - { - .categoryName = _("Automaton"), - .height = 10, - .weight = 920, - .description = gGolettPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GOLURK] = - { - .categoryName = _("Automaton"), - .height = 28, - .weight = 3300, - .description = gGolurkPokedexText, - .pokemonScale = 275, - .pokemonOffset = 3, - .trainerScale = 300, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PAWNIARD] = - { - .categoryName = _("Sharp Blade"), - .height = 5, - .weight = 102, - .description = gPawniardPokedexText, - .pokemonScale = 432, - .pokemonOffset = 15, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BISHARP] = - { - .categoryName = _("Sword Blade"), - .height = 16, - .weight = 700, - .description = gBisharpPokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_BOUFFALANT] = - { - .categoryName = _("Bash Buffalo"), - .height = 16, - .weight = 946, - .description = gBouffalantPokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_RUFFLET] = - { - .categoryName = _("Eaglet"), - .height = 5, - .weight = 105, - .description = gRuffletPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BRAVIARY] = - { - .categoryName = _("Valiant"), - .height = 15, - .weight = 410, - .description = gBraviaryPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VULLABY] = - { - .categoryName = _("Diapered"), - .height = 5, - .weight = 90, - .description = gVullabyPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MANDIBUZZ] = - { - .categoryName = _("Bone Vulture"), - .height = 12, - .weight = 395, - .description = gMandibuzzPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HEATMOR] = - { - .categoryName = _("Anteater"), - .height = 14, - .weight = 580, - .description = gHeatmorPokedexText, - .pokemonScale = 265, - .pokemonOffset = 2, - .trainerScale = 262, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DURANT] = - { - .categoryName = _("Iron Ant"), - .height = 3, - .weight = 330, - .description = gDurantPokedexText, - .pokemonScale = 530, - .pokemonOffset = 19, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DEINO] = - { - .categoryName = _("Irate"), - .height = 8, - .weight = 173, - .description = gDeinoPokedexText, - .pokemonScale = 366, - .pokemonOffset = 12, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ZWEILOUS] = - { - .categoryName = _("Hostile"), - .height = 14, - .weight = 500, - .description = gZweilousPokedexText, - .pokemonScale = 265, - .pokemonOffset = 3, - .trainerScale = 262, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HYDREIGON] = - { - .categoryName = _("Brutal"), - .height = 18, - .weight = 1600, - .description = gHydreigonPokedexText, - .pokemonScale = 267, - .pokemonOffset = 2, - .trainerScale = 286, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_LARVESTA] = - { - .categoryName = _("Torch"), - .height = 11, - .weight = 288, - .description = gLarvestaPokedexText, - .pokemonScale = 320, - .pokemonOffset = 10, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VOLCARONA] = - { - .categoryName = _("Sun"), - .height = 16, - .weight = 460, - .description = gVolcaronaPokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_COBALION] = - { - .categoryName = _("Iron Will"), - .height = 21, - .weight = 2500, - .description = gCobalionPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 365, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_TERRAKION] = - { - .categoryName = _("Cavern"), - .height = 19, - .weight = 2600, - .description = gTerrakionPokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 336, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_VIRIZION] = - { - .categoryName = _("Grassland"), - .height = 20, - .weight = 2000, - .description = gVirizionPokedexText, - .pokemonScale = 261, - .pokemonOffset = 1, - .trainerScale = 344, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_TORNADUS] = - { - .categoryName = _("Cyclone"), - .height = 15, - .weight = 630, - .description = gTornadusPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_THUNDURUS] = - { - .categoryName = _("Bolt Strike"), - .height = 15, - .weight = 610, - .description = gThundurusPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_RESHIRAM] = - { - .categoryName = _("Vast White"), - .height = 32, - .weight = 3300, - .description = gReshiramPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 445, - .trainerOffset = 8, - }, - - [NATIONAL_DEX_ZEKROM] = - { - .categoryName = _("Deep Black"), - .height = 29, - .weight = 3450, - .description = gZekromPokedexText, - .pokemonScale = 275, - .pokemonOffset = 2, - .trainerScale = 412, - .trainerOffset = 10, - }, - - [NATIONAL_DEX_LANDORUS] = - { - .categoryName = _("Abundance"), - .height = 15, - .weight = 680, - .description = gLandorusPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KYUREM] = - { - .categoryName = _("Boundary"), - .height = 30, - .weight = 3250, - .description = gKyuremPokedexText, - .pokemonScale = 275, - .pokemonOffset = 7, - .trainerScale = 356, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KELDEO] = - { - .categoryName = _("Colt"), - .height = 14, - .weight = 485, - .description = gKeldeoPokedexText, - .pokemonScale = 265, - .pokemonOffset = 2, - .trainerScale = 262, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MELOETTA] = - { - .categoryName = _("Melody"), - .height = 6, - .weight = 65, - .description = gMeloettaPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GENESECT] = - { - .categoryName = _("Paleozoic"), - .height = 15, - .weight = 825, - .description = gGenesectPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, -#endif - -#if P_GEN_6_POKEMON == TRUE - [NATIONAL_DEX_CHESPIN] = - { - .categoryName = _("Spiny Nut"), - .height = 4, - .weight = 90, - .description = gChespinPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_QUILLADIN] = - { - .categoryName = _("Spiny Armor"), - .height = 7, - .weight = 290, - .description = gQuilladinPokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CHESNAUGHT] = - { - .categoryName = _("Spiny Armor"), - .height = 16, - .weight = 900, - .description = gChesnaughtPokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_FENNEKIN] = - { - .categoryName = _("Fox"), - .height = 4, - .weight = 94, - .description = gFennekinPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BRAIXEN] = - { - .categoryName = _("Fox"), - .height = 10, - .weight = 145, - .description = gBraixenPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DELPHOX] = - { - .categoryName = _("Fox"), - .height = 15, - .weight = 390, - .description = gDelphoxPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FROAKIE] = - { - .categoryName = _("Bubble Frog"), - .height = 3, - .weight = 70, - .description = gFroakiePokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FROGADIER] = - { - .categoryName = _("Bubble Frog"), - .height = 6, - .weight = 109, - .description = gFrogadierPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GRENINJA] = - { - .categoryName = _("Ninja"), - .height = 15, - .weight = 400, - .description = gGreninjaPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BUNNELBY] = - { - .categoryName = _("Digging"), - .height = 4, - .weight = 50, - .description = gBunnelbyPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DIGGERSBY] = - { - .categoryName = _("Digging"), - .height = 10, - .weight = 424, - .description = gDiggersbyPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FLETCHLING] = - { - .categoryName = _("Tiny Robin"), - .height = 3, - .weight = 17, - .description = gFletchlingPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FLETCHINDER] = - { - .categoryName = _("Ember"), - .height = 7, - .weight = 160, - .description = gFletchinderPokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TALONFLAME] = - { - .categoryName = _("Scorching"), - .height = 12, - .weight = 245, - .description = gTalonflamePokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SCATTERBUG] = - { - .categoryName = _("Scatterdust"), - .height = 3, - .weight = 25, - .description = gScatterbugPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SPEWPA] = - { - .categoryName = _("Scatterdust"), - .height = 3, - .weight = 84, - .description = gSpewpaPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VIVILLON] = - { - .categoryName = _("Scale"), - .height = 12, - .weight = 170, - .description = gVivillonPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LITLEO] = - { - .categoryName = _("Lion Cub"), - .height = 6, - .weight = 135, - .description = gLitleoPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PYROAR] = - { - .categoryName = _("Royal"), - .height = 15, - .weight = 815, - .description = gPyroarPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FLABEBE] = - { - .categoryName = _("Single Bloom"), - .height = 1, - .weight = 1, - .description = gFlabebePokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FLOETTE] = - { - .categoryName = _("Single Bloom"), - .height = 2, - .weight = 9, - .description = gFloettePokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FLORGES] = - { - .categoryName = _("Garden"), - .height = 11, - .weight = 100, - .description = gFlorgesPokedexText, - .pokemonScale = 320, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SKIDDO] = - { - .categoryName = _("Mount"), - .height = 9, - .weight = 310, - .description = gSkiddoPokedexText, - .pokemonScale = 338, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GOGOAT] = - { - .categoryName = _("Mount"), - .height = 17, - .weight = 910, - .description = gGogoatPokedexText, - .pokemonScale = 259, - .pokemonOffset = 0, - .trainerScale = 290, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_PANCHAM] = - { - .categoryName = _("Playful"), - .height = 6, - .weight = 80, - .description = gPanchamPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PANGORO] = - { - .categoryName = _("Daunting"), - .height = 21, - .weight = 1360, - .description = gPangoroPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 365, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_FURFROU] = - { - .categoryName = _("Poodle"), - .height = 12, - .weight = 280, - .description = gFurfrouPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ESPURR] = - { - .categoryName = _("Restraint"), - .height = 3, - .weight = 35, - .description = gEspurrPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MEOWSTIC] = - { - .categoryName = _("Constraint"), - .height = 6, - .weight = 85, - .description = gMeowsticPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HONEDGE] = - { - .categoryName = _("Sword"), - .height = 8, - .weight = 20, - .description = gHonedgePokedexText, - .pokemonScale = 366, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DOUBLADE] = - { - .categoryName = _("Sword"), - .height = 8, - .weight = 45, - .description = gDoubladePokedexText, - .pokemonScale = 366, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_AEGISLASH] = - { - .categoryName = _("Royal Sword"), - .height = 17, - .weight = 530, - .description = gAegislashPokedexText, - .pokemonScale = 259, - .pokemonOffset = 0, - .trainerScale = 290, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_SPRITZEE] = - { - .categoryName = _("Perfume"), - .height = 2, - .weight = 5, - .description = gSpritzeePokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_AROMATISSE] = - { - .categoryName = _("Fragrance"), - .height = 8, - .weight = 155, - .description = gAromatissePokedexText, - .pokemonScale = 366, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SWIRLIX] = - { - .categoryName = _("Cotton Candy"), - .height = 4, - .weight = 35, - .description = gSwirlixPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SLURPUFF] = - { - .categoryName = _("Meringue"), - .height = 8, - .weight = 50, - .description = gSlurpuffPokedexText, - .pokemonScale = 366, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_INKAY] = - { - .categoryName = _("Revolving"), - .height = 4, - .weight = 35, - .description = gInkayPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MALAMAR] = - { - .categoryName = _("Overturning"), - .height = 15, - .weight = 470, - .description = gMalamarPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BINACLE] = - { - .categoryName = _("Two-Handed"), - .height = 5, - .weight = 310, - .description = gBinaclePokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BARBARACLE] = - { - .categoryName = _("Collective"), - .height = 13, - .weight = 960, - .description = gBarbaraclePokedexText, - .pokemonScale = 272, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SKRELP] = - { - .categoryName = _("Mock Kelp"), - .height = 5, - .weight = 73, - .description = gSkrelpPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DRAGALGE] = - { - .categoryName = _("Mock Kelp"), - .height = 18, - .weight = 815, - .description = gDragalgePokedexText, - .pokemonScale = 267, - .pokemonOffset = 2, - .trainerScale = 286, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_CLAUNCHER] = - { - .categoryName = _("Water Gun"), - .height = 5, - .weight = 83, - .description = gClauncherPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CLAWITZER] = - { - .categoryName = _("Howitzer"), - .height = 13, - .weight = 353, - .description = gClawitzerPokedexText, - .pokemonScale = 272, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HELIOPTILE] = - { - .categoryName = _("Generator"), - .height = 5, - .weight = 60, - .description = gHelioptilePokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HELIOLISK] = - { - .categoryName = _("Generator"), - .height = 10, - .weight = 210, - .description = gHelioliskPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TYRUNT] = - { - .categoryName = _("Royal Heir"), - .height = 8, - .weight = 260, - .description = gTyruntPokedexText, - .pokemonScale = 366, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TYRANTRUM] = - { - .categoryName = _("Despot"), - .height = 25, - .weight = 2700, - .description = gTyrantrumPokedexText, - .pokemonScale = 257, - .pokemonOffset = 10, - .trainerScale = 423, - .trainerOffset = 8, - }, - - [NATIONAL_DEX_AMAURA] = - { - .categoryName = _("Tundra"), - .height = 13, - .weight = 252, - .description = gAmauraPokedexText, - .pokemonScale = 272, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_AURORUS] = - { - .categoryName = _("Tundra"), - .height = 27, - .weight = 2250, - .description = gAurorusPokedexText, - .pokemonScale = 275, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SYLVEON] = - { - .categoryName = _("Intertwine"), - .height = 10, - .weight = 235, - .description = gSylveonPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HAWLUCHA] = - { - .categoryName = _("Wrestling"), - .height = 8, - .weight = 215, - .description = gHawluchaPokedexText, - .pokemonScale = 366, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DEDENNE] = - { - .categoryName = _("Antenna"), - .height = 2, - .weight = 22, - .description = gDedennePokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CARBINK] = - { - .categoryName = _("Jewel"), - .height = 3, - .weight = 57, - .description = gCarbinkPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GOOMY] = - { - .categoryName = _("Soft Tissue"), - .height = 3, - .weight = 28, - .description = gGoomyPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SLIGGOO] = - { - .categoryName = _("Soft Tissue"), - .height = 8, - .weight = 175, - .description = gSliggooPokedexText, - .pokemonScale = 366, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GOODRA] = - { - .categoryName = _("Dragon"), - .height = 20, - .weight = 1505, - .description = gGoodraPokedexText, - .pokemonScale = 261, - .pokemonOffset = 1, - .trainerScale = 334, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_KLEFKI] = - { - .categoryName = _("Key Ring"), - .height = 2, - .weight = 30, - .description = gKlefkiPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PHANTUMP] = - { - .categoryName = _("Stump"), - .height = 4, - .weight = 70, - .description = gPhantumpPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TREVENANT] = - { - .categoryName = _("Elder Tree"), - .height = 15, - .weight = 710, - .description = gTrevenantPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PUMPKABOO] = - { - .categoryName = _("Pumpkin"), - .height = 4, - .weight = 50, - .description = gPumpkabooPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GOURGEIST] = - { - .categoryName = _("Pumpkin"), - .height = 9, - .weight = 125, - .description = gGourgeistPokedexText, - .pokemonScale = 338, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BERGMITE] = - { - .categoryName = _("Ice Chunk"), - .height = 10, - .weight = 995, - .description = gBergmitePokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_AVALUGG] = - { - .categoryName = _("Iceberg"), - .height = 20, - .weight = 5050, - .description = gAvaluggPokedexText, - .pokemonScale = 261, - .pokemonOffset = 1, - .trainerScale = 334, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_NOIBAT] = - { - .categoryName = _("Sound Wave"), - .height = 5, - .weight = 80, - .description = gNoibatPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_NOIVERN] = - { - .categoryName = _("Sound Wave"), - .height = 15, - .weight = 850, - .description = gNoivernPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_XERNEAS] = - { - .categoryName = _("Life"), - .height = 30, - .weight = 2150, - .description = gXerneasPokedexText, - .pokemonScale = 275, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_YVELTAL] = - { - .categoryName = _("Destruction"), - .height = 58, - .weight = 2030, - .description = gYveltalPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 360, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_ZYGARDE] = - { - .categoryName = _("Order"), - .height = 50, - .weight = 3050, - .description = gZygardePokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 721, - .trainerOffset = 19, - }, - - [NATIONAL_DEX_DIANCIE] = - { - .categoryName = _("Jewel"), - .height = 7, - .weight = 88, - .description = gDianciePokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HOOPA] = - { - .categoryName = _("Mischief"), - .height = 5, - .weight = 90, - .description = gHoopaPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VOLCANION] = - { - .categoryName = _("Steam"), - .height = 17, - .weight = 1950, - .description = gVolcanionPokedexText, - .pokemonScale = 259, - .pokemonOffset = 0, - .trainerScale = 290, - .trainerOffset = 1, - }, -#endif - -#if P_GEN_7_POKEMON == TRUE - [NATIONAL_DEX_ROWLET] = - { - .categoryName = _("Grass Quill"), - .height = 3, - .weight = 15, - .description = gRowletPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DARTRIX] = - { - .categoryName = _("Blade Quill"), - .height = 7, - .weight = 160, - .description = gDartrixPokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DECIDUEYE] = - { - .categoryName = _("Arrow Quill"), - .height = 16, - .weight = 366, - .description = gDecidueyePokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_LITTEN] = - { - .categoryName = _("Fire Cat"), - .height = 4, - .weight = 43, - .description = gLittenPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TORRACAT] = - { - .categoryName = _("Fire Cat"), - .height = 7, - .weight = 250, - .description = gTorracatPokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_INCINEROAR] = - { - .categoryName = _("Heel"), - .height = 18, - .weight = 830, - .description = gIncineroarPokedexText, - .pokemonScale = 267, - .pokemonOffset = 2, - .trainerScale = 286, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_POPPLIO] = - { - .categoryName = _("Sea Lion"), - .height = 4, - .weight = 75, - .description = gPopplioPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BRIONNE] = - { - .categoryName = _("Pop Star"), - .height = 6, - .weight = 175, - .description = gBrionnePokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PRIMARINA] = - { - .categoryName = _("Soloist"), - .height = 18, - .weight = 440, - .description = gPrimarinaPokedexText, - .pokemonScale = 267, - .pokemonOffset = 2, - .trainerScale = 286, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_PIKIPEK] = - { - .categoryName = _("Woodpecker"), - .height = 3, - .weight = 12, - .description = gPikipekPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TRUMBEAK] = - { - .categoryName = _("Bugle Beak"), - .height = 6, - .weight = 148, - .description = gTrumbeakPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TOUCANNON] = - { - .categoryName = _("Cannon"), - .height = 11, - .weight = 260, - .description = gToucannonPokedexText, - .pokemonScale = 320, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_YUNGOOS] = - { - .categoryName = _("Loitering"), - .height = 4, - .weight = 60, - .description = gYungoosPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GUMSHOOS] = - { - .categoryName = _("Stakeout"), - .height = 7, - .weight = 142, - .description = gGumshoosPokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GRUBBIN] = - { - .categoryName = _("Larva"), - .height = 4, - .weight = 44, - .description = gGrubbinPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CHARJABUG] = - { - .categoryName = _("Battery"), - .height = 5, - .weight = 105, - .description = gCharjabugPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_VIKAVOLT] = - { - .categoryName = _("Stag Beetle"), - .height = 15, - .weight = 450, - .description = gVikavoltPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CRABRAWLER] = - { - .categoryName = _("Boxing"), - .height = 6, - .weight = 70, - .description = gCrabrawlerPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CRABOMINABLE] = - { - .categoryName = _("Woolly Crab"), - .height = 17, - .weight = 1800, - .description = gCrabominablePokedexText, - .pokemonScale = 259, - .pokemonOffset = 0, - .trainerScale = 290, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_ORICORIO] = - { - .categoryName = _("Dancing"), - .height = 6, - .weight = 34, - .description = gOricorioPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CUTIEFLY] = - { - .categoryName = _("Bee Fly"), - .height = 1, - .weight = 2, - .description = gCutieflyPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_RIBOMBEE] = - { - .categoryName = _("Bee Fly"), - .height = 2, - .weight = 5, - .description = gRibombeePokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ROCKRUFF] = - { - .categoryName = _("Puppy"), - .height = 5, - .weight = 92, - .description = gRockruffPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LYCANROC] = - { - .categoryName = _("Wolf"), - .height = 8, - .weight = 250, - .description = gLycanrocPokedexText, - .pokemonScale = 366, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WISHIWASHI] = - { - .categoryName = _("Small Fry"), - .height = 2, - .weight = 3, - .description = gWishiwashiPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MAREANIE] = - { - .categoryName = _("Brutal Star"), - .height = 4, - .weight = 80, - .description = gMareaniePokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TOXAPEX] = - { - .categoryName = _("Brutal Star"), - .height = 7, - .weight = 145, - .description = gToxapexPokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MUDBRAY] = - { - .categoryName = _("Donkey"), - .height = 10, - .weight = 1100, - .description = gMudbrayPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MUDSDALE] = - { - .categoryName = _("Draft Horse"), - .height = 25, - .weight = 9200, - .description = gMudsdalePokedexText, - .pokemonScale = 257, - .pokemonOffset = 10, - .trainerScale = 423, - .trainerOffset = 8, - }, - - [NATIONAL_DEX_DEWPIDER] = - { - .categoryName = _("Water Bubble"), - .height = 3, - .weight = 40, - .description = gDewpiderPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ARAQUANID] = - { - .categoryName = _("Water Bubble"), - .height = 18, - .weight = 820, - .description = gAraquanidPokedexText, - .pokemonScale = 267, - .pokemonOffset = 2, - .trainerScale = 286, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_FOMANTIS] = - { - .categoryName = _("Sickle Grass"), - .height = 3, - .weight = 15, - .description = gFomantisPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_LURANTIS] = - { - .categoryName = _("Bloom Sickle"), - .height = 9, - .weight = 185, - .description = gLurantisPokedexText, - .pokemonScale = 338, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MORELULL] = - { - .categoryName = _("Illuminate"), - .height = 2, - .weight = 15, - .description = gMorelullPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SHIINOTIC] = - { - .categoryName = _("Illuminate"), - .height = 10, - .weight = 115, - .description = gShiinoticPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SALANDIT] = - { - .categoryName = _("Toxic Lizard"), - .height = 6, - .weight = 48, - .description = gSalanditPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SALAZZLE] = - { - .categoryName = _("Toxic Lizard"), - .height = 12, - .weight = 222, - .description = gSalazzlePokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_STUFFUL] = - { - .categoryName = _("Flailing"), - .height = 5, - .weight = 68, - .description = gStuffulPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BEWEAR] = - { - .categoryName = _("Strong Arm"), - .height = 21, - .weight = 1350, - .description = gBewearPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 365, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_BOUNSWEET] = - { - .categoryName = _("Fruit"), - .height = 3, - .weight = 32, - .description = gBounsweetPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_STEENEE] = - { - .categoryName = _("Fruit"), - .height = 7, - .weight = 82, - .description = gSteeneePokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TSAREENA] = - { - .categoryName = _("Fruit"), - .height = 12, - .weight = 214, - .description = gTsareenaPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_COMFEY] = - { - .categoryName = _("Posy Picker"), - .height = 1, - .weight = 3, - .description = gComfeyPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ORANGURU] = - { - .categoryName = _("Sage"), - .height = 15, - .weight = 760, - .description = gOranguruPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PASSIMIAN] = - { - .categoryName = _("Teamwork"), - .height = 20, - .weight = 828, - .description = gPassimianPokedexText, - .pokemonScale = 261, - .pokemonOffset = 1, - .trainerScale = 334, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_WIMPOD] = - { - .categoryName = _("Turn Tail"), - .height = 5, - .weight = 120, - .description = gWimpodPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GOLISOPOD] = - { - .categoryName = _("Hard Scale"), - .height = 20, - .weight = 1080, - .description = gGolisopodPokedexText, - .pokemonScale = 261, - .pokemonOffset = 1, - .trainerScale = 334, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_SANDYGAST] = - { - .categoryName = _("Sand Heap"), - .height = 5, - .weight = 700, - .description = gSandygastPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PALOSSAND] = - { - .categoryName = _("Sand Castle"), - .height = 13, - .weight = 2500, - .description = gPalossandPokedexText, - .pokemonScale = 272, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PYUKUMUKU] = - { - .categoryName = _("Sea Cucumber"), - .height = 3, - .weight = 12, - .description = gPyukumukuPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TYPE_NULL] = - { - .categoryName = _("Synthetic"), - .height = 19, - .weight = 1205, - .description = gTypeNullPokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 326, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_SILVALLY] = - { - .categoryName = _("Synthetic"), - .height = 23, - .weight = 1005, - .description = gSilvallyPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 342, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_MINIOR] = - { - .categoryName = _("Meteor"), - .height = 3, - .weight = 400, - .description = gMiniorPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KOMALA] = - { - .categoryName = _("Drowsing"), - .height = 4, - .weight = 199, - .description = gKomalaPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TURTONATOR] = - { - .categoryName = _("Blast Turtle"), - .height = 20, - .weight = 2120, - .description = gTurtonatorPokedexText, - .pokemonScale = 261, - .pokemonOffset = 1, - .trainerScale = 334, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_TOGEDEMARU] = - { - .categoryName = _("Roly-Poly"), - .height = 3, - .weight = 33, - .description = gTogedemaruPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MIMIKYU] = - { - .categoryName = _("Disguise"), - .height = 2, - .weight = 7, - .description = gMimikyuPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BRUXISH] = - { - .categoryName = _("Gnash Teeth"), - .height = 9, - .weight = 190, - .description = gBruxishPokedexText, - .pokemonScale = 338, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DRAMPA] = - { - .categoryName = _("Placid"), - .height = 30, - .weight = 1850, - .description = gDrampaPokedexText, - .pokemonScale = 275, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DHELMISE] = - { - .categoryName = _("Sea Creeper"), - .height = 39, - .weight = 2100, - .description = gDhelmisePokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 510, - .trainerOffset = 11, - }, - - [NATIONAL_DEX_JANGMO_O] = - { - .categoryName = _("Scaly"), - .height = 6, - .weight = 297, - .description = gJangmoOPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HAKAMO_O] = - { - .categoryName = _("Scaly"), - .height = 12, - .weight = 470, - .description = gHakamoOPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_KOMMO_O] = - { - .categoryName = _("Scaly"), - .height = 16, - .weight = 782, - .description = gKommoOPokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_TAPU_KOKO] = - { - .categoryName = _("Land Spirit"), - .height = 18, - .weight = 205, - .description = gTapuKokoPokedexText, - .pokemonScale = 267, - .pokemonOffset = 2, - .trainerScale = 286, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_TAPU_LELE] = - { - .categoryName = _("Land Spirit"), - .height = 12, - .weight = 186, - .description = gTapuLelePokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TAPU_BULU] = - { - .categoryName = _("Land Spirit"), - .height = 19, - .weight = 455, - .description = gTapuBuluPokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 326, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_TAPU_FINI] = - { - .categoryName = _("Land Spirit"), - .height = 13, - .weight = 212, - .description = gTapuFiniPokedexText, - .pokemonScale = 272, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_COSMOG] = - { - .categoryName = _("Nebula"), - .height = 2, - .weight = 1, - .description = gCosmogPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_COSMOEM] = - { - .categoryName = _("Protostar"), - .height = 1, - .weight = 9999, - .description = gCosmoemPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SOLGALEO] = - { - .categoryName = _("Sunne"), - .height = 34, - .weight = 2300, - .description = gSolgaleoPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 405, - .trainerOffset = 8, - }, - - [NATIONAL_DEX_LUNALA] = - { - .categoryName = _("Moone"), - .height = 40, - .weight = 1200, - .description = gLunalaPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 411, - .trainerOffset = 5, - }, - - [NATIONAL_DEX_NIHILEGO] = - { - .categoryName = _("Parasite"), - .height = 12, - .weight = 555, - .description = gNihilegoPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BUZZWOLE] = - { - .categoryName = _("Swollen"), - .height = 24, - .weight = 3336, - .description = gBuzzwolePokedexText, - .pokemonScale = 256, - .pokemonOffset = 3, - .trainerScale = 369, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_PHEROMOSA] = - { - .categoryName = _("Lissome"), - .height = 18, - .weight = 250, - .description = gPheromosaPokedexText, - .pokemonScale = 267, - .pokemonOffset = 2, - .trainerScale = 286, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_XURKITREE] = - { - .categoryName = _("Glowing"), - .height = 38, - .weight = 1000, - .description = gXurkitreePokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 610, - .trainerOffset = 17, - }, - - [NATIONAL_DEX_CELESTEELA] = - { - .categoryName = _("Launch"), - .height = 92, - .weight = 9999, - .description = gCelesteelaPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 516, - .trainerOffset = 13, - }, - - [NATIONAL_DEX_KARTANA] = - { - .categoryName = _("Drawn Sword"), - .height = 3, - .weight = 1, - .description = gKartanaPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GUZZLORD] = - { - .categoryName = _("Junkivore"), - .height = 55, - .weight = 8880, - .description = gGuzzlordPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 721, - .trainerOffset = 19, - }, - - [NATIONAL_DEX_NECROZMA] = - { - .categoryName = _("Prism"), - .height = 24, - .weight = 2300, - .description = gNecrozmaPokedexText, - .pokemonScale = 256, - .pokemonOffset = 3, - .trainerScale = 369, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_MAGEARNA] = - { - .categoryName = _("Artificial"), - .height = 10, - .weight = 805, - .description = gMagearnaPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MARSHADOW] = - { - .categoryName = _("Gloomdwellr"), - .height = 7, - .weight = 222, - .description = gMarshadowPokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_POIPOLE] = - { - .categoryName = _("Poison Pin"), - .height = 6, - .weight = 18, - .description = gPoipolePokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_NAGANADEL] = - { - .categoryName = _("Poison Pin"), - .height = 36, - .weight = 1500, - .description = gNaganadelPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 405, - .trainerOffset = 8, - }, - - [NATIONAL_DEX_STAKATAKA] = - { - .categoryName = _("Rampart"), - .height = 55, - .weight = 8200, - .description = gStakatakaPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 721, - .trainerOffset = 19, - }, - - [NATIONAL_DEX_BLACEPHALON] = - { - .categoryName = _("Fireworks"), - .height = 18, - .weight = 130, - .description = gBlacephalonPokedexText, - .pokemonScale = 267, - .pokemonOffset = 2, - .trainerScale = 286, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_ZERAORA] = - { - .categoryName = _("Thunderclap"), - .height = 15, - .weight = 445, - .description = gZeraoraPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MELTAN] = - { - .categoryName = _("Hex Nut"), - .height = 2, - .weight = 80, - .description = gMeltanPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MELMETAL] = - { - .categoryName = _("Hex Nut"), - .height = 25, - .weight = 800, - .description = gMelmetalPokedexText, - .pokemonScale = 257, - .pokemonOffset = 10, - .trainerScale = 423, - .trainerOffset = 8, - }, -#endif - -#if P_GEN_8_POKEMON == TRUE - [NATIONAL_DEX_GROOKEY] = - { - .categoryName = _("Chimp"), - .height = 3, - .weight = 50, - .description = gGrookeyPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_THWACKEY] = - { - .categoryName = _("Beat"), - .height = 7, - .weight = 140, - .description = gThwackeyPokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_RILLABOOM] = - { - .categoryName = _("Drummer"), - .height = 21, - .weight = 900, - .description = gRillaboomPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 365, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_SCORBUNNY] = - { - .categoryName = _("Rabbit"), - .height = 3, - .weight = 45, - .description = gScorbunnyPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_RABOOT] = - { - .categoryName = _("Rabbit"), - .height = 6, - .weight = 90, - .description = gRabootPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CINDERACE] = - { - .categoryName = _("Striker"), - .height = 14, - .weight = 330, - .description = gCinderacePokedexText, - .pokemonScale = 265, - .pokemonOffset = 2, - .trainerScale = 262, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SOBBLE] = - { - .categoryName = _("Water Lizard"), - .height = 3, - .weight = 40, - .description = gSobblePokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DRIZZILE] = - { - .categoryName = _("Water Lizard"), - .height = 7, - .weight = 115, - .description = gDrizzilePokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_INTELEON] = - { - .categoryName = _("Secret Agent"), - .height = 19, - .weight = 452, - .description = gInteleonPokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 326, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_SKWOVET] = - { - .categoryName = _("Cheeky"), - .height = 3, - .weight = 25, - .description = gSkwovetPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GREEDENT] = - { - .categoryName = _("Greedy"), - .height = 6, - .weight = 60, - .description = gGreedentPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ROOKIDEE] = - { - .categoryName = _("Tiny Bird"), - .height = 2, - .weight = 18, - .description = gRookideePokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CORVISQUIRE] = - { - .categoryName = _("Raven"), - .height = 8, - .weight = 160, - .description = gCorvisquirePokedexText, - .pokemonScale = 366, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CORVIKNIGHT] = - { - .categoryName = _("Raven"), - .height = 22, - .weight = 750, - .description = gCorviknightPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 348, - .trainerOffset = 6, - }, - - [NATIONAL_DEX_BLIPBUG] = - { - .categoryName = _("Larva"), - .height = 4, - .weight = 80, - .description = gBlipbugPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DOTTLER] = - { - .categoryName = _("Radome"), - .height = 4, - .weight = 195, - .description = gDottlerPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ORBEETLE] = - { - .categoryName = _("Seven Spot"), - .height = 4, - .weight = 408, - .description = gOrbeetlePokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_NICKIT] = - { - .categoryName = _("Fox"), - .height = 6, - .weight = 89, - .description = gNickitPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_THIEVUL] = - { - .categoryName = _("Fox"), - .height = 12, - .weight = 199, - .description = gThievulPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GOSSIFLEUR] = - { - .categoryName = _("Flowering"), - .height = 4, - .weight = 22, - .description = gGossifleurPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ELDEGOSS] = - { - .categoryName = _("Cotton Bloom"), - .height = 5, - .weight = 25, - .description = gEldegossPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WOOLOO] = - { - .categoryName = _("Sheep"), - .height = 6, - .weight = 60, - .description = gWoolooPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DUBWOOL] = - { - .categoryName = _("Sheep"), - .height = 13, - .weight = 430, - .description = gDubwoolPokedexText, - .pokemonScale = 272, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CHEWTLE] = - { - .categoryName = _("Snapping"), - .height = 3, - .weight = 85, - .description = gChewtlePokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DREDNAW] = - { - .categoryName = _("Bite"), - .height = 10, - .weight = 1155, - .description = gDrednawPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_YAMPER] = - { - .categoryName = _("Puppy"), - .height = 3, - .weight = 135, - .description = gYamperPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BOLTUND] = - { - .categoryName = _("Dog"), - .height = 10, - .weight = 340, - .description = gBoltundPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ROLYCOLY] = - { - .categoryName = _("Coal"), - .height = 3, - .weight = 120, - .description = gRolycolyPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CARKOL] = - { - .categoryName = _("Coal"), - .height = 11, - .weight = 780, - .description = gCarkolPokedexText, - .pokemonScale = 320, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_COALOSSAL] = - { - .categoryName = _("Coal"), - .height = 28, - .weight = 3105, - .description = gCoalossalPokedexText, - .pokemonScale = 275, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_APPLIN] = - { - .categoryName = _("Apple Core"), - .height = 2, - .weight = 5, - .description = gApplinPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FLAPPLE] = - { - .categoryName = _("Apple Wing"), - .height = 3, - .weight = 10, - .description = gFlapplePokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_APPLETUN] = - { - .categoryName = _("Apple Nectar"), - .height = 4, - .weight = 130, - .description = gAppletunPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SILICOBRA] = - { - .categoryName = _("Sand Snake"), - .height = 22, - .weight = 76, - .description = gSilicobraPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 348, - .trainerOffset = 6, - }, - - [NATIONAL_DEX_SANDACONDA] = - { - .categoryName = _("Sand Snake"), - .height = 38, - .weight = 655, - .description = gSandacondaPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 610, - .trainerOffset = 17, - }, - - [NATIONAL_DEX_CRAMORANT] = - { - .categoryName = _("Gulp"), - .height = 8, - .weight = 180, - .description = gCramorantPokedexText, - .pokemonScale = 366, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ARROKUDA] = - { - .categoryName = _("Rush"), - .height = 5, - .weight = 10, - .description = gArrokudaPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_BARRASKEWDA] = - { - .categoryName = _("Skewer"), - .height = 13, - .weight = 300, - .description = gBarraskewdaPokedexText, - .pokemonScale = 272, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TOXEL] = - { - .categoryName = _("Baby"), - .height = 4, - .weight = 110, - .description = gToxelPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_TOXTRICITY] = - { - .categoryName = _("Punk"), - .height = 16, - .weight = 400, - .description = gToxtricityPokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_SIZZLIPEDE] = - { - .categoryName = _("Radiator"), - .height = 7, - .weight = 10, - .description = gSizzlipedePokedexText, - .pokemonScale = 365, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CENTISKORCH] = - { - .categoryName = _("Radiator"), - .height = 30, - .weight = 1200, - .description = gCentiskorchPokedexText, - .pokemonScale = 275, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CLOBBOPUS] = - { - .categoryName = _("Tantrum"), - .height = 6, - .weight = 40, - .description = gClobbopusPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GRAPPLOCT] = - { - .categoryName = _("Jujitsu"), - .height = 16, - .weight = 390, - .description = gGrapploctPokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_SINISTEA] = - { - .categoryName = _("Black Tea"), - .height = 1, - .weight = 2, - .description = gSinisteaPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_POLTEAGEIST] = - { - .categoryName = _("Black Tea"), - .height = 2, - .weight = 4, - .description = gPolteageistPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HATENNA] = - { - .categoryName = _("Calm"), - .height = 4, - .weight = 34, - .description = gHatennaPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HATTREM] = - { - .categoryName = _("Serene"), - .height = 6, - .weight = 48, - .description = gHattremPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_HATTERENE] = - { - .categoryName = _("Silent"), - .height = 21, - .weight = 51, - .description = gHatterenePokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 365, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_IMPIDIMP] = - { - .categoryName = _("Wily"), - .height = 4, - .weight = 55, - .description = gImpidimpPokedexText, - .pokemonScale = 491, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MORGREM] = - { - .categoryName = _("Devious"), - .height = 8, - .weight = 125, - .description = gMorgremPokedexText, - .pokemonScale = 366, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_GRIMMSNARL] = - { - .categoryName = _("Bulk Up"), - .height = 15, - .weight = 610, - .description = gGrimmsnarlPokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_OBSTAGOON] = - { - .categoryName = _("Blocking"), - .height = 16, - .weight = 460, - .description = gObstagoonPokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_PERRSERKER] = - { - .categoryName = _("Viking"), - .height = 8, - .weight = 280, - .description = gPerrserkerPokedexText, - .pokemonScale = 366, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CURSOLA] = - { - .categoryName = _("Coral"), - .height = 10, - .weight = 4, - .description = gCursolaPokedexText, - .pokemonScale = 305, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SIRFETCHD] = - { - .categoryName = _("Wild Duck"), - .height = 8, - .weight = 1170, - .description = gSirfetchdPokedexText, - .pokemonScale = 366, - .pokemonOffset = 7, - .trainerScale = 257, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MR_RIME] = - { - .categoryName = _("Comedian"), - .height = 15, - .weight = 582, - .description = gMrRimePokedexText, - .pokemonScale = 268, - .pokemonOffset = 2, - .trainerScale = 271, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_RUNERIGUS] = - { - .categoryName = _("Grudge"), - .height = 16, - .weight = 666, - .description = gRunerigusPokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_MILCERY] = - { - .categoryName = _("Cream"), - .height = 2, - .weight = 3, - .description = gMilceryPokedexText, - .pokemonScale = 682, - .pokemonOffset = 24, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ALCREMIE] = - { - .categoryName = _("Cream"), - .height = 3, - .weight = 5, - .description = gAlcremiePokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FALINKS] = - { - .categoryName = _("Formation"), - .height = 30, - .weight = 620, - .description = gFalinksPokedexText, - .pokemonScale = 275, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_PINCURCHIN] = - { - .categoryName = _("Sea Urchin"), - .height = 3, - .weight = 10, - .description = gPincurchinPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SNOM] = - { - .categoryName = _("Worm"), - .height = 3, - .weight = 38, - .description = gSnomPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_FROSMOTH] = - { - .categoryName = _("Frost Moth"), - .height = 13, - .weight = 420, - .description = gFrosmothPokedexText, - .pokemonScale = 272, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_STONJOURNER] = - { - .categoryName = _("Big Rock"), - .height = 25, - .weight = 5200, - .description = gStonjournerPokedexText, - .pokemonScale = 257, - .pokemonOffset = 10, - .trainerScale = 423, - .trainerOffset = 8, - }, - - [NATIONAL_DEX_EISCUE] = - { - .categoryName = _("Penguin"), - .height = 14, - .weight = 890, - .description = gEiscuePokedexText, - .pokemonScale = 265, - .pokemonOffset = 2, - .trainerScale = 262, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_INDEEDEE] = - { - .categoryName = _("Emotion"), - .height = 9, - .weight = 280, - .description = gIndeedeePokedexText, - .pokemonScale = 338, - .pokemonOffset = 8, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_MORPEKO] = - { - .categoryName = _("Two-Sided"), - .height = 3, - .weight = 30, - .description = gMorpekoPokedexText, - .pokemonScale = 530, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_CUFANT] = - { - .categoryName = _("Copperderm"), - .height = 12, - .weight = 1000, - .description = gCufantPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_COPPERAJAH] = - { - .categoryName = _("Copperderm"), - .height = 30, - .weight = 6500, - .description = gCopperajahPokedexText, - .pokemonScale = 275, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DRACOZOLT] = - { - .categoryName = _("Fossil"), - .height = 18, - .weight = 1900, - .description = gDracozoltPokedexText, - .pokemonScale = 267, - .pokemonOffset = 2, - .trainerScale = 286, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_ARCTOZOLT] = - { - .categoryName = _("Fossil"), - .height = 23, - .weight = 1500, - .description = gArctozoltPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 342, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_DRACOVISH] = - { - .categoryName = _("Fossil"), - .height = 23, - .weight = 2150, - .description = gDracovishPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 342, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_ARCTOVISH] = - { - .categoryName = _("Fossil"), - .height = 20, - .weight = 1750, - .description = gArctovishPokedexText, - .pokemonScale = 261, - .pokemonOffset = 1, - .trainerScale = 334, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_DURALUDON] = - { - .categoryName = _("Alloy"), - .height = 18, - .weight = 400, - .description = gDuraludonPokedexText, - .pokemonScale = 267, - .pokemonOffset = 2, - .trainerScale = 286, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_DREEPY] = - { - .categoryName = _("Lingering"), - .height = 5, - .weight = 20, - .description = gDreepyPokedexText, - .pokemonScale = 432, - .pokemonOffset = 13, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DRAKLOAK] = - { - .categoryName = _("Caretaker"), - .height = 14, - .weight = 110, - .description = gDrakloakPokedexText, - .pokemonScale = 265, - .pokemonOffset = 2, - .trainerScale = 262, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_DRAGAPULT] = - { - .categoryName = _("Stealth"), - .height = 30, - .weight = 500, - .description = gDragapultPokedexText, - .pokemonScale = 275, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ZACIAN] = - { - .categoryName = _("Warrior"), - .height = 28, - .weight = 1100, - .description = gZacianPokedexText, - .pokemonScale = 275, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ZAMAZENTA] = - { - .categoryName = _("Warrior"), - .height = 29, - .weight = 2100, - .description = gZamazentaPokedexText, - .pokemonScale = 275, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_ETERNATUS] = - { - .categoryName = _("Gigantic"), - .height = 200, - .weight = 9500, - .description = gEternatusPokedexText, - .pokemonScale = 230, - .pokemonOffset = 0, - .trainerScale = 4852, - .trainerOffset = 20, - }, - - [NATIONAL_DEX_KUBFU] = - { - .categoryName = _("Wushu"), - .height = 6, - .weight = 120, - .description = gKubfuPokedexText, - .pokemonScale = 422, - .pokemonOffset = 12, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_URSHIFU] = - { - .categoryName = _("Wushu"), - .height = 19, - .weight = 1050, - .description = gUrshifuPokedexText, - .pokemonScale = 256, - .pokemonOffset = 1, - .trainerScale = 326, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_ZARUDE] = - { - .categoryName = _("Rogue Monkey"), - .height = 18, - .weight = 700, - .description = gZarudePokedexText, - .pokemonScale = 267, - .pokemonOffset = 2, - .trainerScale = 286, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_REGIELEKI] = - { - .categoryName = _("Electron"), - .height = 12, - .weight = 1450, - .description = gRegielekiPokedexText, - .pokemonScale = 282, - .pokemonOffset = 4, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_REGIDRAGO] = - { - .categoryName = _("Dragon Orb"), - .height = 21, - .weight = 2000, - .description = gRegidragoPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 365, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_GLASTRIER] = - { - .categoryName = _("Wild Horse"), - .height = 22, - .weight = 8000, - .description = gGlastrierPokedexText, - .pokemonScale = 256, - .pokemonOffset = 0, - .trainerScale = 348, - .trainerOffset = 6, - }, - - [NATIONAL_DEX_SPECTRIER] = - { - .categoryName = _("Swift Horse"), - .height = 20, - .weight = 445, - .description = gSpectrierPokedexText, - .pokemonScale = 261, - .pokemonOffset = 1, - .trainerScale = 334, - .trainerOffset = 4, - }, - - [NATIONAL_DEX_CALYREX] = - { - .categoryName = _("King"), - .height = 11, - .weight = 77, - .description = gCalyrexPokedexText, - .pokemonScale = 320, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_WYRDEER] = - { - .categoryName = _("Big Horn"), - .height = 18, - .weight = 951, - .description = gWyrdeerPokedexText, - .pokemonScale = 267, - .pokemonOffset = 2, - .trainerScale = 286, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_KLEAVOR] = - { - .categoryName = _("Axe"), - .height = 18, - .weight = 890, - .description = gKleavorPokedexText, - .pokemonScale = 267, - .pokemonOffset = 2, - .trainerScale = 286, - .trainerOffset = 1, - }, - - [NATIONAL_DEX_URSALUNA] = - { - .categoryName = _("Peat"), - .height = 24, - .weight = 2900, - .description = gUrsalunaPokedexText, - .pokemonScale = 256, - .pokemonOffset = 3, - .trainerScale = 369, - .trainerOffset = 7, - }, - - [NATIONAL_DEX_BASCULEGION] = - { - .categoryName = _("Big Fish"), - .height = 30, - .weight = 1100, - .description = gBasculegionPokedexText, - .pokemonScale = 275, - .pokemonOffset = 7, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_SNEASLER] = - { - .categoryName = _("Free Climb"), - .height = 13, - .weight = 430, - .description = gSneaslerPokedexText, - .pokemonScale = 272, - .pokemonOffset = 3, - .trainerScale = 256, - .trainerOffset = 0, - }, - - [NATIONAL_DEX_OVERQWIL] = - { - .categoryName = _("Pin Cluster"), - .height = 25, - .weight = 605, - .description = gOverqwilPokedexText, - .pokemonScale = 257, - .pokemonOffset = 10, - .trainerScale = 423, - .trainerOffset = 8, - }, - - [NATIONAL_DEX_ENAMORUS] = - { - .categoryName = _("Love-Hate"), - .height = 16, - .weight = 480, - .description = gEnamorusPokedexText, - .pokemonScale = 259, - .pokemonOffset = 1, - .trainerScale = 296, - .trainerOffset = 1, - }, -#endif -}; diff --git a/src/data/pokemon/pokedex_orders.h b/src/data/pokemon/pokedex_orders.h index e1d8cc4792..e877bbb17f 100644 --- a/src/data/pokemon/pokedex_orders.h +++ b/src/data/pokemon/pokedex_orders.h @@ -1,3 +1,4 @@ +// Only list base species here. const u16 gPokedexOrder_Alphabetical[] = { NATIONAL_DEX_ABOMASNOW, @@ -16,19 +17,23 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_AMBIPOM, NATIONAL_DEX_AMOONGUSS, NATIONAL_DEX_AMPHAROS, + NATIONAL_DEX_ANNIHILAPE, NATIONAL_DEX_ANORITH, NATIONAL_DEX_APPLETUN, NATIONAL_DEX_APPLIN, NATIONAL_DEX_ARAQUANID, NATIONAL_DEX_ARBOK, + NATIONAL_DEX_ARBOLIVA, NATIONAL_DEX_ARCANINE, NATIONAL_DEX_ARCEUS, NATIONAL_DEX_ARCHEN, NATIONAL_DEX_ARCHEOPS, + NATIONAL_DEX_ARCTIBAX, NATIONAL_DEX_ARCTOVISH, NATIONAL_DEX_ARCTOZOLT, NATIONAL_DEX_ARIADOS, NATIONAL_DEX_ARMALDO, + NATIONAL_DEX_ARMAROUGE, NATIONAL_DEX_AROMATISSE, NATIONAL_DEX_ARON, NATIONAL_DEX_ARROKUDA, @@ -50,12 +55,14 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_BASCULEGION, NATIONAL_DEX_BASCULIN, NATIONAL_DEX_BASTIODON, + NATIONAL_DEX_BAXCALIBUR, NATIONAL_DEX_BAYLEEF, NATIONAL_DEX_BEARTIC, NATIONAL_DEX_BEAUTIFLY, NATIONAL_DEX_BEEDRILL, NATIONAL_DEX_BEHEEYEM, NATIONAL_DEX_BELDUM, + NATIONAL_DEX_BELLIBOLT, NATIONAL_DEX_BELLOSSOM, NATIONAL_DEX_BELLSPROUT, NATIONAL_DEX_BERGMITE, @@ -72,15 +79,19 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_BLITZLE, NATIONAL_DEX_BOLDORE, NATIONAL_DEX_BOLTUND, + NATIONAL_DEX_BOMBIRDIER, NATIONAL_DEX_BONSLY, NATIONAL_DEX_BOUFFALANT, NATIONAL_DEX_BOUNSWEET, NATIONAL_DEX_BRAIXEN, + NATIONAL_DEX_BRAMBLEGHAST, + NATIONAL_DEX_BRAMBLIN, NATIONAL_DEX_BRAVIARY, NATIONAL_DEX_BRELOOM, NATIONAL_DEX_BRIONNE, NATIONAL_DEX_BRONZONG, NATIONAL_DEX_BRONZOR, + NATIONAL_DEX_BRUTE_BONNET, NATIONAL_DEX_BRUXISH, NATIONAL_DEX_BUDEW, NATIONAL_DEX_BUIZEL, @@ -95,6 +106,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_CACTURNE, NATIONAL_DEX_CALYREX, NATIONAL_DEX_CAMERUPT, + NATIONAL_DEX_CAPSAKID, NATIONAL_DEX_CARBINK, NATIONAL_DEX_CARKOL, NATIONAL_DEX_CARNIVINE, @@ -106,8 +118,12 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_CELEBI, NATIONAL_DEX_CELESTEELA, NATIONAL_DEX_CENTISKORCH, + NATIONAL_DEX_CERULEDGE, + NATIONAL_DEX_CETITAN, + NATIONAL_DEX_CETODDLE, NATIONAL_DEX_CHANDELURE, NATIONAL_DEX_CHANSEY, + NATIONAL_DEX_CHARCADET, NATIONAL_DEX_CHARIZARD, NATIONAL_DEX_CHARJABUG, NATIONAL_DEX_CHARMANDER, @@ -118,6 +134,8 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_CHESNAUGHT, NATIONAL_DEX_CHESPIN, NATIONAL_DEX_CHEWTLE, + NATIONAL_DEX_CHI_YU, + NATIONAL_DEX_CHIEN_PAO, NATIONAL_DEX_CHIKORITA, NATIONAL_DEX_CHIMCHAR, NATIONAL_DEX_CHIMECHO, @@ -133,6 +151,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_CLEFAIRY, NATIONAL_DEX_CLEFFA, NATIONAL_DEX_CLOBBOPUS, + NATIONAL_DEX_CLODSIRE, NATIONAL_DEX_CLOYSTER, NATIONAL_DEX_COALOSSAL, NATIONAL_DEX_COBALION, @@ -158,6 +177,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_CRESSELIA, NATIONAL_DEX_CROAGUNK, NATIONAL_DEX_CROBAT, + NATIONAL_DEX_CROCALOR, NATIONAL_DEX_CROCONAW, NATIONAL_DEX_CRUSTLE, NATIONAL_DEX_CRYOGONAL, @@ -166,8 +186,10 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_CUFANT, NATIONAL_DEX_CURSOLA, NATIONAL_DEX_CUTIEFLY, + NATIONAL_DEX_CYCLIZAR, NATIONAL_DEX_CYNDAQUIL, + NATIONAL_DEX_DACHSBUN, NATIONAL_DEX_DARKRAI, NATIONAL_DEX_DARMANITAN, NATIONAL_DEX_DARTRIX, @@ -188,9 +210,12 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_DIANCIE, NATIONAL_DEX_DIGGERSBY, NATIONAL_DEX_DIGLETT, + NATIONAL_DEX_DIPPLIN, NATIONAL_DEX_DITTO, NATIONAL_DEX_DODRIO, NATIONAL_DEX_DODUO, + NATIONAL_DEX_DOLLIV, + NATIONAL_DEX_DONDOZO, NATIONAL_DEX_DONPHAN, NATIONAL_DEX_DOTTLER, NATIONAL_DEX_DOUBLADE, @@ -214,6 +239,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_DRUDDIGON, NATIONAL_DEX_DUBWOOL, NATIONAL_DEX_DUCKLETT, + NATIONAL_DEX_DUDUNSPARCE, NATIONAL_DEX_DUGTRIO, NATIONAL_DEX_DUNSPARCE, NATIONAL_DEX_DUOSION, @@ -243,6 +269,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_ENAMORUS, NATIONAL_DEX_ENTEI, NATIONAL_DEX_ESCAVALIER, + NATIONAL_DEX_ESPATHRA, NATIONAL_DEX_ESPEON, NATIONAL_DEX_ESPURR, NATIONAL_DEX_ETERNATUS, @@ -253,32 +280,42 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_FALINKS, NATIONAL_DEX_FARFETCHD, + NATIONAL_DEX_FARIGIRAF, NATIONAL_DEX_FEAROW, NATIONAL_DEX_FEEBAS, NATIONAL_DEX_FENNEKIN, NATIONAL_DEX_FERALIGATR, NATIONAL_DEX_FERROSEED, NATIONAL_DEX_FERROTHORN, + NATIONAL_DEX_FEZANDIPITI, + NATIONAL_DEX_FIDOUGH, + NATIONAL_DEX_FINIZEN, NATIONAL_DEX_FINNEON, NATIONAL_DEX_FLAAFFY, NATIONAL_DEX_FLABEBE, + NATIONAL_DEX_FLAMIGO, NATIONAL_DEX_FLAPPLE, NATIONAL_DEX_FLAREON, NATIONAL_DEX_FLETCHINDER, NATIONAL_DEX_FLETCHLING, + NATIONAL_DEX_FLITTLE, NATIONAL_DEX_FLOATZEL, NATIONAL_DEX_FLOETTE, + NATIONAL_DEX_FLORAGATO, NATIONAL_DEX_FLORGES, + NATIONAL_DEX_FLUTTER_MANE, NATIONAL_DEX_FLYGON, NATIONAL_DEX_FOMANTIS, NATIONAL_DEX_FOONGUS, NATIONAL_DEX_FORRETRESS, NATIONAL_DEX_FRAXURE, + NATIONAL_DEX_FRIGIBAX, NATIONAL_DEX_FRILLISH, NATIONAL_DEX_FROAKIE, NATIONAL_DEX_FROGADIER, NATIONAL_DEX_FROSLASS, NATIONAL_DEX_FROSMOTH, + NATIONAL_DEX_FUECOCO, NATIONAL_DEX_FURFROU, NATIONAL_DEX_FURRET, @@ -288,13 +325,16 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_GARBODOR, NATIONAL_DEX_GARCHOMP, NATIONAL_DEX_GARDEVOIR, + NATIONAL_DEX_GARGANACL, NATIONAL_DEX_GASTLY, NATIONAL_DEX_GASTRODON, NATIONAL_DEX_GENESECT, NATIONAL_DEX_GENGAR, NATIONAL_DEX_GEODUDE, + NATIONAL_DEX_GHOLDENGO, NATIONAL_DEX_GIBLE, NATIONAL_DEX_GIGALITH, + NATIONAL_DEX_GIMMIGHOUL, NATIONAL_DEX_GIRAFARIG, NATIONAL_DEX_GIRATINA, NATIONAL_DEX_GLACEON, @@ -302,6 +342,8 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_GLAMEOW, NATIONAL_DEX_GLASTRIER, NATIONAL_DEX_GLIGAR, + NATIONAL_DEX_GLIMMET, + NATIONAL_DEX_GLIMMORA, NATIONAL_DEX_GLISCOR, NATIONAL_DEX_GLOOM, NATIONAL_DEX_GOGOAT, @@ -320,9 +362,12 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_GOTHITELLE, NATIONAL_DEX_GOTHORITA, NATIONAL_DEX_GOURGEIST, + NATIONAL_DEX_GRAFAIAI, NATIONAL_DEX_GRANBULL, NATIONAL_DEX_GRAPPLOCT, NATIONAL_DEX_GRAVELER, + NATIONAL_DEX_GREAT_TUSK, + NATIONAL_DEX_GREAVARD, NATIONAL_DEX_GREEDENT, NATIONAL_DEX_GRENINJA, NATIONAL_DEX_GRIMER, @@ -369,6 +414,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_HORSEA, NATIONAL_DEX_HOUNDOOM, NATIONAL_DEX_HOUNDOUR, + NATIONAL_DEX_HOUNDSTONE, NATIONAL_DEX_HUNTAIL, NATIONAL_DEX_HYDREIGON, NATIONAL_DEX_HYPNO, @@ -381,6 +427,14 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_INFERNAPE, NATIONAL_DEX_INKAY, NATIONAL_DEX_INTELEON, + NATIONAL_DEX_IRON_BUNDLE, + NATIONAL_DEX_IRON_HANDS, + NATIONAL_DEX_IRON_JUGULIS, + NATIONAL_DEX_IRON_LEAVES, + NATIONAL_DEX_IRON_MOTH, + NATIONAL_DEX_IRON_THORNS, + NATIONAL_DEX_IRON_TREADS, + NATIONAL_DEX_IRON_VALIANT, NATIONAL_DEX_IVYSAUR, NATIONAL_DEX_JANGMO_O, @@ -401,10 +455,13 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_KARTANA, NATIONAL_DEX_KECLEON, NATIONAL_DEX_KELDEO, + NATIONAL_DEX_KILOWATTREL, + NATIONAL_DEX_KINGAMBIT, NATIONAL_DEX_KINGDRA, NATIONAL_DEX_KINGLER, NATIONAL_DEX_KIRLIA, NATIONAL_DEX_KLANG, + NATIONAL_DEX_KLAWF, NATIONAL_DEX_KLEAVOR, NATIONAL_DEX_KLEFKI, NATIONAL_DEX_KLINK, @@ -412,6 +469,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_KOFFING, NATIONAL_DEX_KOMALA, NATIONAL_DEX_KOMMO_O, + NATIONAL_DEX_KORAIDON, NATIONAL_DEX_KRABBY, NATIONAL_DEX_KRICKETOT, NATIONAL_DEX_KRICKETUNE, @@ -432,6 +490,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_LATIOS, NATIONAL_DEX_LEAFEON, NATIONAL_DEX_LEAVANNY, + NATIONAL_DEX_LECHONK, NATIONAL_DEX_LEDIAN, NATIONAL_DEX_LEDYBA, NATIONAL_DEX_LICKILICKY, @@ -444,6 +503,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_LITLEO, NATIONAL_DEX_LITTEN, NATIONAL_DEX_LITWICK, + NATIONAL_DEX_LOKIX, NATIONAL_DEX_LOMBRE, NATIONAL_DEX_LOPUNNY, NATIONAL_DEX_LOTAD, @@ -460,6 +520,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_LUXRAY, NATIONAL_DEX_LYCANROC, + NATIONAL_DEX_MABOSSTIFF, NATIONAL_DEX_MACHAMP, NATIONAL_DEX_MACHOKE, NATIONAL_DEX_MACHOP, @@ -488,7 +549,9 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_MAROWAK, NATIONAL_DEX_MARSHADOW, NATIONAL_DEX_MARSHTOMP, + NATIONAL_DEX_MASCHIFF, NATIONAL_DEX_MASQUERAIN, + NATIONAL_DEX_MAUSHOLD, NATIONAL_DEX_MAWILE, NATIONAL_DEX_MEDICHAM, NATIONAL_DEX_MEDITITE, @@ -496,6 +559,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_MELMETAL, NATIONAL_DEX_MELOETTA, NATIONAL_DEX_MELTAN, + NATIONAL_DEX_MEOWSCARADA, NATIONAL_DEX_MEOWSTIC, NATIONAL_DEX_MEOWTH, NATIONAL_DEX_MESPRIT, @@ -515,6 +579,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_MINCCINO, NATIONAL_DEX_MINIOR, NATIONAL_DEX_MINUN, + NATIONAL_DEX_MIRAIDON, NATIONAL_DEX_MISDREAVUS, NATIONAL_DEX_MISMAGIUS, NATIONAL_DEX_MOLTRES, @@ -530,10 +595,13 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_MUDSDALE, NATIONAL_DEX_MUK, NATIONAL_DEX_MUNCHLAX, + NATIONAL_DEX_MUNKIDORI, NATIONAL_DEX_MUNNA, NATIONAL_DEX_MURKROW, NATIONAL_DEX_MUSHARNA, + NATIONAL_DEX_NACLI, + NATIONAL_DEX_NACLSTACK, NATIONAL_DEX_NAGANADEL, NATIONAL_DEX_NATU, NATIONAL_DEX_NECROZMA, @@ -554,20 +622,26 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_NOSEPASS, NATIONAL_DEX_NUMEL, NATIONAL_DEX_NUZLEAF, + NATIONAL_DEX_NYMBLE, NATIONAL_DEX_OBSTAGOON, NATIONAL_DEX_OCTILLERY, NATIONAL_DEX_ODDISH, + NATIONAL_DEX_OGERPON, + NATIONAL_DEX_OINKOLOGNE, + NATIONAL_DEX_OKIDOGI, NATIONAL_DEX_OMANYTE, NATIONAL_DEX_OMASTAR, NATIONAL_DEX_ONIX, NATIONAL_DEX_ORANGURU, NATIONAL_DEX_ORBEETLE, NATIONAL_DEX_ORICORIO, + NATIONAL_DEX_ORTHWORM, NATIONAL_DEX_OSHAWOTT, NATIONAL_DEX_OVERQWIL, NATIONAL_DEX_PACHIRISU, + NATIONAL_DEX_PALAFIN, NATIONAL_DEX_PALKIA, NATIONAL_DEX_PALOSSAND, NATIONAL_DEX_PALPITOAD, @@ -580,6 +654,9 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_PARASECT, NATIONAL_DEX_PASSIMIAN, NATIONAL_DEX_PATRAT, + NATIONAL_DEX_PAWMI, + NATIONAL_DEX_PAWMO, + NATIONAL_DEX_PAWMOT, NATIONAL_DEX_PAWNIARD, NATIONAL_DEX_PELIPPER, NATIONAL_DEX_PERRSERKER, @@ -608,6 +685,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_POLIWAG, NATIONAL_DEX_POLIWHIRL, NATIONAL_DEX_POLIWRATH, + NATIONAL_DEX_POLTCHAGEIST, NATIONAL_DEX_POLTEAGEIST, NATIONAL_DEX_PONYTA, NATIONAL_DEX_POOCHYENA, @@ -628,11 +706,15 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_PYUKUMUKU, NATIONAL_DEX_QUAGSIRE, + NATIONAL_DEX_QUAQUAVAL, + NATIONAL_DEX_QUAXLY, + NATIONAL_DEX_QUAXWELL, NATIONAL_DEX_QUILAVA, NATIONAL_DEX_QUILLADIN, NATIONAL_DEX_QWILFISH, NATIONAL_DEX_RABOOT, + NATIONAL_DEX_RABSCA, NATIONAL_DEX_RAICHU, NATIONAL_DEX_RAIKOU, NATIONAL_DEX_RALTS, @@ -648,15 +730,18 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_REGIROCK, NATIONAL_DEX_REGISTEEL, NATIONAL_DEX_RELICANTH, + NATIONAL_DEX_RELLOR, NATIONAL_DEX_REMORAID, NATIONAL_DEX_RESHIRAM, NATIONAL_DEX_REUNICLUS, + NATIONAL_DEX_REVAVROOM, NATIONAL_DEX_RHYDON, NATIONAL_DEX_RHYHORN, NATIONAL_DEX_RHYPERIOR, NATIONAL_DEX_RIBOMBEE, NATIONAL_DEX_RILLABOOM, NATIONAL_DEX_RIOLU, + NATIONAL_DEX_ROARING_MOON, NATIONAL_DEX_ROCKRUFF, NATIONAL_DEX_ROGGENROLA, NATIONAL_DEX_ROLYCOLY, @@ -677,6 +762,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_SANDILE, NATIONAL_DEX_SANDSHREW, NATIONAL_DEX_SANDSLASH, + NATIONAL_DEX_SANDY_SHOCKS, NATIONAL_DEX_SANDYGAST, NATIONAL_DEX_SAWK, NATIONAL_DEX_SAWSBUCK, @@ -685,8 +771,10 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_SCIZOR, NATIONAL_DEX_SCOLIPEDE, NATIONAL_DEX_SCORBUNNY, + NATIONAL_DEX_SCOVILLAIN, NATIONAL_DEX_SCRAFTY, NATIONAL_DEX_SCRAGGY, + NATIONAL_DEX_SCREAM_TAIL, NATIONAL_DEX_SCYTHER, NATIONAL_DEX_SEADRA, NATIONAL_DEX_SEAKING, @@ -710,6 +798,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_SHIFTRY, NATIONAL_DEX_SHIINOTIC, NATIONAL_DEX_SHINX, + NATIONAL_DEX_SHROODLE, NATIONAL_DEX_SHROOMISH, NATIONAL_DEX_SHUCKLE, NATIONAL_DEX_SHUPPET, @@ -720,10 +809,12 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_SIMIPOUR, NATIONAL_DEX_SIMISAGE, NATIONAL_DEX_SIMISEAR, + NATIONAL_DEX_SINISTCHA, NATIONAL_DEX_SINISTEA, NATIONAL_DEX_SIRFETCHD, NATIONAL_DEX_SIZZLIPEDE, NATIONAL_DEX_SKARMORY, + NATIONAL_DEX_SKELEDIRGE, NATIONAL_DEX_SKIDDO, NATIONAL_DEX_SKIPLOOM, NATIONAL_DEX_SKITTY, @@ -734,12 +825,14 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_SLAKING, NATIONAL_DEX_SLAKOTH, NATIONAL_DEX_SLIGGOO, + NATIONAL_DEX_SLITHER_WING, NATIONAL_DEX_SLOWBRO, NATIONAL_DEX_SLOWKING, NATIONAL_DEX_SLOWPOKE, NATIONAL_DEX_SLUGMA, NATIONAL_DEX_SLURPUFF, NATIONAL_DEX_SMEARGLE, + NATIONAL_DEX_SMOLIV, NATIONAL_DEX_SMOOCHUM, NATIONAL_DEX_SNEASEL, NATIONAL_DEX_SNEASLER, @@ -757,11 +850,14 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_SPECTRIER, NATIONAL_DEX_SPEWPA, NATIONAL_DEX_SPHEAL, + NATIONAL_DEX_SPIDOPS, NATIONAL_DEX_SPINARAK, NATIONAL_DEX_SPINDA, NATIONAL_DEX_SPIRITOMB, NATIONAL_DEX_SPOINK, + NATIONAL_DEX_SPRIGATITO, NATIONAL_DEX_SPRITZEE, + NATIONAL_DEX_SQUAWKABILLY, NATIONAL_DEX_SQUIRTLE, NATIONAL_DEX_STAKATAKA, NATIONAL_DEX_STANTLER, @@ -793,14 +889,18 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_SWOOBAT, NATIONAL_DEX_SYLVEON, + NATIONAL_DEX_TADBULB, NATIONAL_DEX_TAILLOW, NATIONAL_DEX_TALONFLAME, + NATIONAL_DEX_TANDEMAUS, NATIONAL_DEX_TANGELA, NATIONAL_DEX_TANGROWTH, NATIONAL_DEX_TAPU_BULU, NATIONAL_DEX_TAPU_FINI, NATIONAL_DEX_TAPU_KOKO, NATIONAL_DEX_TAPU_LELE, + NATIONAL_DEX_TAROUNTULA, + NATIONAL_DEX_TATSUGIRI, NATIONAL_DEX_TAUROS, NATIONAL_DEX_TEDDIURSA, NATIONAL_DEX_TENTACOOL, @@ -812,7 +912,13 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_THUNDURUS, NATIONAL_DEX_THWACKEY, NATIONAL_DEX_TIMBURR, + NATIONAL_DEX_TING_LU, + NATIONAL_DEX_TINKATINK, + NATIONAL_DEX_TINKATON, + NATIONAL_DEX_TINKATUFF, NATIONAL_DEX_TIRTOUGA, + NATIONAL_DEX_TOEDSCOOL, + NATIONAL_DEX_TOEDSCRUEL, NATIONAL_DEX_TOGEDEMARU, NATIONAL_DEX_TOGEKISS, NATIONAL_DEX_TOGEPI, @@ -859,6 +965,8 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_VANILLITE, NATIONAL_DEX_VANILLUXE, NATIONAL_DEX_VAPOREON, + NATIONAL_DEX_VAROOM, + NATIONAL_DEX_VELUZA, NATIONAL_DEX_VENIPEDE, NATIONAL_DEX_VENOMOTH, NATIONAL_DEX_VENONAT, @@ -881,9 +989,11 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_WAILMER, NATIONAL_DEX_WAILORD, + NATIONAL_DEX_WALKING_WAKE, NATIONAL_DEX_WALREIN, NATIONAL_DEX_WARTORTLE, NATIONAL_DEX_WATCHOG, + NATIONAL_DEX_WATTREL, NATIONAL_DEX_WEAVILE, NATIONAL_DEX_WEEDLE, NATIONAL_DEX_WEEPINBELL, @@ -893,14 +1003,17 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_WHISCASH, NATIONAL_DEX_WHISMUR, NATIONAL_DEX_WIGGLYTUFF, + NATIONAL_DEX_WIGLETT, NATIONAL_DEX_WIMPOD, NATIONAL_DEX_WINGULL, NATIONAL_DEX_WISHIWASHI, + NATIONAL_DEX_WO_CHIEN, NATIONAL_DEX_WOBBUFFET, NATIONAL_DEX_WOOBAT, NATIONAL_DEX_WOOLOO, NATIONAL_DEX_WOOPER, NATIONAL_DEX_WORMADAM, + NATIONAL_DEX_WUGTRIO, NATIONAL_DEX_WURMPLE, NATIONAL_DEX_WYNAUT, NATIONAL_DEX_WYRDEER, @@ -937,36 +1050,69 @@ const u16 gPokedexOrder_Weight[] = // 0.0 - 21.8 lbs / 0.0 - 9.9 kg NATIONAL_DEX_GASTLY, NATIONAL_DEX_HAUNTER, - NATIONAL_DEX_FLABEBE, + NATIONAL_DEX_FLABEBE,//_RED_FLOWER, + //NATIONAL_DEX_FLABEBE_YELLOW_FLOWER, + //NATIONAL_DEX_FLABEBE_ORANGE_FLOWER, + //NATIONAL_DEX_FLABEBE_BLUE_FLOWER, + //NATIONAL_DEX_FLABEBE_WHITE_FLOWER, NATIONAL_DEX_COSMOG, NATIONAL_DEX_KARTANA, + //NATIONAL_DEX_GIMMIGHOUL_ROAMING, + // 0.4 lbs / 0.2 kg NATIONAL_DEX_CUTIEFLY, - NATIONAL_DEX_SINISTEA, + NATIONAL_DEX_SINISTEA,//_PHONY, + //NATIONAL_DEX_SINISTEA_ANTIQUE, + // 0.7 lbs / 0.3 kg NATIONAL_DEX_ROTOM, NATIONAL_DEX_UXIE, NATIONAL_DEX_MESPRIT, NATIONAL_DEX_AZELF, NATIONAL_DEX_TYNAMO, - NATIONAL_DEX_WISHIWASHI, // Solo Form + NATIONAL_DEX_WISHIWASHI,//_SOLO, NATIONAL_DEX_COMFEY, - //NATIONAL_DEX_MINIOR, // Core Form + NATIONAL_DEX_MINIOR,//_CORE_RED, + //NATIONAL_DEX_MINIOR_CORE_ORANGE, + //NATIONAL_DEX_MINIOR_CORE_YELLOW, + //NATIONAL_DEX_MINIOR_CORE_GREEN, + //NATIONAL_DEX_MINIOR_CORE_BLUE, + //NATIONAL_DEX_MINIOR_CORE_INDIGO, + //NATIONAL_DEX_MINIOR_CORE_VIOLET, NATIONAL_DEX_MILCERY, + // 0.9 lbs / 0.4 kg NATIONAL_DEX_POLTEAGEIST, NATIONAL_DEX_CURSOLA, + NATIONAL_DEX_TADBULB, + // 1.1 lbs / 0.5 kg NATIONAL_DEX_HOPPIP, NATIONAL_DEX_SPRITZEE, NATIONAL_DEX_RIBOMBEE, NATIONAL_DEX_APPLIN, NATIONAL_DEX_ALCREMIE, - //NATIONAL_DEX_CORSOLA, // Galarian Form + //NATIONAL_DEX_CORSOLA_GALARIAN, + // 1.3 lbs / 0.6 kg NATIONAL_DEX_CHINGLING, NATIONAL_DEX_COTTONEE, NATIONAL_DEX_JOLTIK, - NATIONAL_DEX_MIMIKYU, + NATIONAL_DEX_BRAMBLIN, + // 1.5 lbs / 0.7 kg + NATIONAL_DEX_MIMIKYU,//_DISGUISED, + //NATIONAL_DEX_MIMIKYU_BUSTED, + NATIONAL_DEX_SHROODLE, + // 1.8 lbs / 0.8 kg NATIONAL_DEX_DIGLETT, - NATIONAL_DEX_CASTFORM, - NATIONAL_DEX_FLOETTE, - //NATIONAL_DEX_DIGLETT, // Alolan Form + NATIONAL_DEX_CASTFORM,//_NORMAL, + //NATIONAL_DEX_CASTFORM_SUNNY, + //NATIONAL_DEX_CASTFORM_RAINY, + //NATIONAL_DEX_CASTFORM_SNOWY, + // 2.0 lbs / 0.9 kg + NATIONAL_DEX_FLOETTE,//_RED_FLOWER, + //NATIONAL_DEX_FLOETTE_YELLOW_FLOWER, + //NATIONAL_DEX_FLOETTE_ORANGE_FLOWER, + //NATIONAL_DEX_FLOETTE_BLUE_FLOWER, + //NATIONAL_DEX_FLOETTE_WHITE_FLOWER, + //NATIONAL_DEX_FLOETTE_ETERNAL_FLOWER, + // 2.2 lbs / 1.0 kg + //NATIONAL_DEX_DIGLETT_ALOLAN, NATIONAL_DEX_KOFFING, NATIONAL_DEX_IGGLYBUFF, NATIONAL_DEX_SKIPLOOM, @@ -978,28 +1124,42 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_ARROKUDA, NATIONAL_DEX_SIZZLIPEDE, NATIONAL_DEX_PINCURCHIN, + NATIONAL_DEX_NYMBLE, + NATIONAL_DEX_RELLOR, + // 2.4 lbs / 1.1 kg NATIONAL_DEX_JIRACHI, + NATIONAL_DEX_POLTCHAGEIST, + // 2.6 lbs / 1.2 kg NATIONAL_DEX_SHEDINJA, NATIONAL_DEX_SWABLU, NATIONAL_DEX_BUDEW, NATIONAL_DEX_DRIFLOON, NATIONAL_DEX_PIKIPEK, NATIONAL_DEX_PYUKUMUKU, + // 3.1 lbs / 1.4 kg NATIONAL_DEX_MANAPHY, + // 3.3 lbs / 1.5 kg NATIONAL_DEX_TOGEPI, NATIONAL_DEX_YAMASK, - //NATIONAL_DEX_YAMASK, // Galarian Form + //NATIONAL_DEX_YAMASK_GALARIAN, NATIONAL_DEX_ROWLET, NATIONAL_DEX_FOMANTIS, NATIONAL_DEX_MORELULL, + NATIONAL_DEX_FLITTLE, + // 3.7 lbs / 1.7 kg NATIONAL_DEX_SURSKIT, NATIONAL_DEX_FLETCHLING, + // 4.0 lbs / 1.8 kg NATIONAL_DEX_PIDGEY, NATIONAL_DEX_SUNKERN, NATIONAL_DEX_POIPOLE, NATIONAL_DEX_ROOKIDEE, + NATIONAL_DEX_TANDEMAUS, + NATIONAL_DEX_WIGLETT, + // 4.2 lbs / 1.9 kg NATIONAL_DEX_BARBOACH, NATIONAL_DEX_CHATOT, + // 4.4 lbs / 2.0 kg NATIONAL_DEX_SPEAROW, NATIONAL_DEX_PICHU, NATIONAL_DEX_NATU, @@ -1007,54 +1167,89 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_ROSELIA, NATIONAL_DEX_STARLY, NATIONAL_DEX_HONEDGE, - //NATIONAL_DEX_RIBOMBEE, // Totem-sized + //NATIONAL_DEX_RIBOMBEE_TOTEM_SIZED, NATIONAL_DEX_DREEPY, + // 4.6 lbs / 2.1 kg NATIONAL_DEX_MURKROW, - NATIONAL_DEX_SHAYMIN, // Land Form + NATIONAL_DEX_SHAYMIN,//_LAND, NATIONAL_DEX_PIDOVE, NATIONAL_DEX_WOOBAT, + // 4.9 lbs / 2.2 kg NATIONAL_DEX_KRICKETOT, NATIONAL_DEX_DEDENNE, NATIONAL_DEX_GOSSIFLEUR, + NATIONAL_DEX_SINISTCHA, + // 5.1 lbs / 2.3 kg NATIONAL_DEX_TAILLOW, NATIONAL_DEX_SHUPPET, + NATIONAL_DEX_MAUSHOLD,//_FAMILY_OF_THREE, + // 5.3 lbs / 2.4 kg + NATIONAL_DEX_SQUAWKABILLY,//_GREEN_PLUMAGE, + //NATIONAL_DEX_SQUAWKABILLY_BLUE_PLUMAGE, + //NATIONAL_DEX_SQUAWKABILLY_YELLOW_PLUMAGE, + //NATIONAL_DEX_SQUAWKABILLY_WHITE_PLUMAGE, + // 5.5 lbs / 2.5 kg NATIONAL_DEX_EXEGGCUTE, NATIONAL_DEX_TORCHIC, NATIONAL_DEX_SEWADDLE, NATIONAL_DEX_SCATTERBUG, NATIONAL_DEX_SKWOVET, NATIONAL_DEX_ELDEGOSS, + NATIONAL_DEX_PAWMI, + // 5.7 lbs / 2.6 kg NATIONAL_DEX_LOTAD, + // 6.2 lbs / 2.8 kg NATIONAL_DEX_GOOMY, - //NATIONAL_DEX_MIMIKYU, // Totem-sized + //NATIONAL_DEX_MIMIKYU_TOTEM_SIZED, + //NATIONAL_DEX_MAUSHOLD_FAMILY_OF_FOUR, + // 6.4 lbs / 2.9 kg NATIONAL_DEX_CATERPIE, + // 6.6 lbs / 3.0 kg NATIONAL_DEX_CLEFFA, NATIONAL_DEX_JUMPLUFF, NATIONAL_DEX_KLEFKI, - NATIONAL_DEX_MORPEKO, + NATIONAL_DEX_MORPEKO,//_FULL_BELLY, + //NATIONAL_DEX_MORPEKO_HANGRY, + NATIONAL_DEX_CAPSAKID, + // 6.8 lbs / 3.1 kg NATIONAL_DEX_PHIONE, NATIONAL_DEX_LITWICK, + // 7.1 lbs / 3.2 kg NATIONAL_DEX_WEEDLE, NATIONAL_DEX_TOGETIC, NATIONAL_DEX_BOUNSWEET, + // 7.3 lbs / 3.3 kg NATIONAL_DEX_DRATINI, NATIONAL_DEX_CHERUBI, NATIONAL_DEX_TOGEDEMARU, - NATIONAL_DEX_BURMY, - NATIONAL_DEX_ORICORIO, + // 7.5 lbs / 3.4 kg + NATIONAL_DEX_BURMY,//_PLANT_CLOAK, + //NATIONAL_DEX_BURMY_SANDY_CLOAK, + //NATIONAL_DEX_BURMY_TRASH_CLOAK, + NATIONAL_DEX_ORICORIO,//_BAILE, + //NATIONAL_DEX_ORICORIO_POM_POM, + //NATIONAL_DEX_ORICORIO_PAU, + //NATIONAL_DEX_ORICORIO_SENSU, NATIONAL_DEX_HATENNA, + // 7.7 lbs / 3.5 kg NATIONAL_DEX_RATTATA, NATIONAL_DEX_ESPURR, NATIONAL_DEX_SWIRLIX, NATIONAL_DEX_INKAY, - //NATIONAL_DEX_PUMPKABOO, // Small Size + //NATIONAL_DEX_PUMPKABOO_SMALL, + NATIONAL_DEX_RABSCA, + // 7.9 lbs / 3.6 kg NATIONAL_DEX_WURMPLE, NATIONAL_DEX_MASQUERAIN, - //NATIONAL_DEX_RATTATA, // Alolan Form + NATIONAL_DEX_WATTREL, + // 8.4 lbs / 3.8 kg + //NATIONAL_DEX_RATTATA_ALOLAN, NATIONAL_DEX_SNOM, + // 8.6 lbs / 3.9 kg NATIONAL_DEX_QWILFISH, NATIONAL_DEX_PACHIRISU, NATIONAL_DEX_GLAMEOW, + // 8.8 lbs / 4.0 kg NATIONAL_DEX_BELLSPROUT, NATIONAL_DEX_SHELLDER, NATIONAL_DEX_DITTO, @@ -1064,21 +1259,60 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_DEWPIDER, NATIONAL_DEX_SOBBLE, NATIONAL_DEX_CLOBBOPUS, + NATIONAL_DEX_TAROUNTULA, + NATIONAL_DEX_FLUTTER_MANE, + // 9.0 lbs / 4.1 kg NATIONAL_DEX_LILLIPUP, + NATIONAL_DEX_SPRIGATITO, + // 9.3 lbs / 4.2 kg NATIONAL_DEX_MEOWTH, - //NATIONAL_DEX_MEOWTH, // Alolan Form + //NATIONAL_DEX_MEOWTH_ALOLAN, NATIONAL_DEX_PLUSLE, NATIONAL_DEX_MINUN, + // 9.5 lbs / 4.3 kg NATIONAL_DEX_LITTEN, + // 9.7 lbs / 4.4 kg NATIONAL_DEX_MISMAGIUS, NATIONAL_DEX_GRUBBIN, + // 9.9 lbs / 4.5 kg NATIONAL_DEX_SHROOMISH, NATIONAL_DEX_TYMPOLE, NATIONAL_DEX_DOUBLADE, NATIONAL_DEX_SCORBUNNY, + // 10.6 lbs / 4.8 kg NATIONAL_DEX_SALANDIT, NATIONAL_DEX_HATTREM, - NATIONAL_DEX_UNOWN, + // 10.8 lbs / 4.9 kg + NATIONAL_DEX_CHI_YU, + // 11.0 lbs / 5.0 kg + NATIONAL_DEX_UNOWN,//_A, + //NATIONAL_DEX_UNOWN_B, + //NATIONAL_DEX_UNOWN_C, + //NATIONAL_DEX_UNOWN_D, + //NATIONAL_DEX_UNOWN_E, + //NATIONAL_DEX_UNOWN_F, + //NATIONAL_DEX_UNOWN_G, + //NATIONAL_DEX_UNOWN_H, + //NATIONAL_DEX_UNOWN_I, + //NATIONAL_DEX_UNOWN_J, + //NATIONAL_DEX_UNOWN_K, + //NATIONAL_DEX_UNOWN_L, + //NATIONAL_DEX_UNOWN_M, + //NATIONAL_DEX_UNOWN_N, + //NATIONAL_DEX_UNOWN_O, + //NATIONAL_DEX_UNOWN_P, + //NATIONAL_DEX_UNOWN_Q, + //NATIONAL_DEX_UNOWN_R, + //NATIONAL_DEX_UNOWN_S, + //NATIONAL_DEX_UNOWN_T, + //NATIONAL_DEX_UNOWN_U, + //NATIONAL_DEX_UNOWN_V, + //NATIONAL_DEX_UNOWN_W, + //NATIONAL_DEX_UNOWN_X, + //NATIONAL_DEX_UNOWN_Y, + //NATIONAL_DEX_UNOWN_Z, + //NATIONAL_DEX_UNOWN_EMARK, + //NATIONAL_DEX_UNOWN_QMARK, NATIONAL_DEX_CORSOLA, NATIONAL_DEX_CELEBI, NATIONAL_DEX_TREECKO, @@ -1086,28 +1320,53 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_EMOLGA, NATIONAL_DEX_BUNNELBY, NATIONAL_DEX_SLURPUFF, - NATIONAL_DEX_PUMPKABOO, // Average Size + NATIONAL_DEX_PUMPKABOO,//_AVERAGE, NATIONAL_DEX_GROOKEY, + NATIONAL_DEX_GIMMIGHOUL,//_CHEST, + // 11.2 lbs / 5.1 kg NATIONAL_DEX_HATTERENE, + // 11.5 lbs / 5.2 kg NATIONAL_DEX_PIPLUP, - //NATIONAL_DEX_SHAYMIN, // Sky Form + //NATIONAL_DEX_SHAYMIN_SKY, + // 11.7 lbs / 5.3 kg NATIONAL_DEX_VENIPEDE, + // 11.9 lbs / 5.4 kg NATIONAL_DEX_ODDISH, NATIONAL_DEX_PARAS, + NATIONAL_DEX_WUGTRIO, + // 12.1 lbs / 5.5 kg NATIONAL_DEX_JIGGLYPUFF, NATIONAL_DEX_NINCADA, NATIONAL_DEX_COMBEE, NATIONAL_DEX_BUNEARY, NATIONAL_DEX_DUCKLETT, NATIONAL_DEX_IMPIDIMP, + // 12.6 lbs / 5.7 kg NATIONAL_DEX_VANILLITE, NATIONAL_DEX_CARBINK, + // 12.8 lbs / 5.8 kg NATIONAL_DEX_BELLOSSOM, NATIONAL_DEX_MINCCINO, NATIONAL_DEX_GOTHITA, + // 13.0 lbs / 5.9 kg NATIONAL_DEX_OSHAWOTT, NATIONAL_DEX_KARRABLAST, + // 13.2 lbs / 6.0 kg NATIONAL_DEX_PIKACHU, + //NATIONAL_DEX_PIKACHU_COSPLAY, + //NATIONAL_DEX_PIKACHU_ROCK_STAR, + //NATIONAL_DEX_PIKACHU_BELLE, + //NATIONAL_DEX_PIKACHU_POP_STAR, + //NATIONAL_DEX_PIKACHU_PH_D, + //NATIONAL_DEX_PIKACHU_LIBRE, + //NATIONAL_DEX_PIKACHU_ORIGINAL_CAP, + //NATIONAL_DEX_PIKACHU_HOENN_CAP, + //NATIONAL_DEX_PIKACHU_SINNOH_CAP, + //NATIONAL_DEX_PIKACHU_UNOVA_CAP, + //NATIONAL_DEX_PIKACHU_KALOS_CAP, + //NATIONAL_DEX_PIKACHU_ALOLA_CAP, + //NATIONAL_DEX_PIKACHU_PARTNER_CAP, + //NATIONAL_DEX_PIKACHU_WORLD_CAP, NATIONAL_DEX_MAGNEMITE, NATIONAL_DEX_SENTRET, NATIONAL_DEX_SMOOCHUM, @@ -1115,49 +1374,71 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_YUNGOOS, NATIONAL_DEX_GREEDENT, NATIONAL_DEX_WOOLOO, + NATIONAL_DEX_BRAMBLEGHAST, + // 13.4 lbs / 6.1 kg + NATIONAL_DEX_QUAXLY, + // 13.7 lbs / 6.2 kg NATIONAL_DEX_CHIMCHAR, - NATIONAL_DEX_SHELLOS, // West Sea - //NATIONAL_DEX_SHELLOS, // East Sea + // 13.9 lbs / 6.3 kg + NATIONAL_DEX_SHELLOS,//_WEST_SEA, + //NATIONAL_DEX_SHELLOS_EAST_SEA, + // 14.1 lbs / 6.4 kg NATIONAL_DEX_WEEPINBELL, NATIONAL_DEX_CHIKORITA, + // 14.3 lbs / 6.5 kg NATIONAL_DEX_KRABBY, NATIONAL_DEX_CUBONE, NATIONAL_DEX_EEVEE, NATIONAL_DEX_SWINUB, - NATIONAL_DEX_WORMADAM, // Plant Cloak - //NATIONAL_DEX_WORMADAM, // Sandy Cloak - //NATIONAL_DEX_WORMADAM, // Trash Cloak - NATIONAL_DEX_MELOETTA, // Aria Forme - //NATIONAL_DEX_MELOETTA, // Pirouette Forme + NATIONAL_DEX_WORMADAM,//_PLANT_CLOAK, + //NATIONAL_DEX_WORMADAM_SANDY_CLOAK, + //NATIONAL_DEX_WORMADAM_TRASH_CLOAK, + NATIONAL_DEX_MELOETTA,//_ARIA, + //NATIONAL_DEX_MELOETTA_PIROUETTE, + NATIONAL_DEX_PAWMO, + NATIONAL_DEX_SMOLIV, + // 14.6 lbs / 6.6 kg NATIONAL_DEX_RALTS, NATIONAL_DEX_WHIMSICOTT, NATIONAL_DEX_PETILIL, + // 15.0 lbs / 6.8 kg NATIONAL_DEX_STUFFUL, + // 15.2 lbs / 6.9 kg NATIONAL_DEX_BULBASAUR, NATIONAL_DEX_EKANS, + // 15.4 lbs / 7.0 kg NATIONAL_DEX_NIDORAN_F, NATIONAL_DEX_FINNEON, NATIONAL_DEX_FROAKIE, NATIONAL_DEX_PHANTUMP, NATIONAL_DEX_CRABRAWLER, + // 15.9 lbs / 7.2 kg NATIONAL_DEX_PINECO, + // 16.1 lbs / 7.3 kg NATIONAL_DEX_SWADLOON, NATIONAL_DEX_SKRELP, + // 16.3 lbs / 7.4 kg NATIONAL_DEX_FEEBAS, + // 16.5 lbs / 7.5 kg NATIONAL_DEX_CLEFAIRY, NATIONAL_DEX_ZUBAT, - //NATIONAL_DEX_MEOWTH, // Galarian Form + //NATIONAL_DEX_MEOWTH_GALARIAN, NATIONAL_DEX_OMANYTE, NATIONAL_DEX_CINCCINO, - //NATIONAL_DEX_PUMPKABOO, // Large Size + //NATIONAL_DEX_PUMPKABOO_LARGE, NATIONAL_DEX_POPPLIO, + // 16.8 lbs / 7.6 kg NATIONAL_DEX_MUDKIP, NATIONAL_DEX_SILICOBRA, + // 17.0 lbs / 7.7 kg NATIONAL_DEX_SHELMET, NATIONAL_DEX_CALYREX, + // 17.2 lbs / 7.8 kg NATIONAL_DEX_MAREEP, NATIONAL_DEX_SNUBBULL, + // 17.4 lbs / 7.9 kg NATIONAL_DEX_CYNDAQUIL, + // 17.6 lbs / 8.0 kg NATIONAL_DEX_HORSEA, NATIONAL_DEX_DUOSION, NATIONAL_DEX_PANCHAM, @@ -1165,10 +1446,20 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_MAREANIE, NATIONAL_DEX_MELTAN, NATIONAL_DEX_BLIPBUG, + NATIONAL_DEX_GLIMMET, + NATIONAL_DEX_TATSUGIRI,//_CURLY, + //NATIONAL_DEX_TATSUGIRI_DROOPY, + //NATIONAL_DEX_TATSUGIRI_STRETCHY, + NATIONAL_DEX_SCREAM_TAIL, + // 17.9 lbs / 8.1 kg NATIONAL_DEX_SNIVY, + // 18.1 lbs / 8.2 kg NATIONAL_DEX_STEENEE, + // 18.3 lbs / 8.3 kg NATIONAL_DEX_CLAUNCHER, + // 18.5 lbs / 8.4 kg NATIONAL_DEX_SPEWPA, + // 18.7 lbs / 8.5 kg NATIONAL_DEX_CHARMANDER, NATIONAL_DEX_SPINARAK, NATIONAL_DEX_MARILL, @@ -1176,58 +1467,94 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_WOOPER, NATIONAL_DEX_DRILBUR, NATIONAL_DEX_CUBCHOO, - NATIONAL_DEX_MEOWSTIC, + NATIONAL_DEX_MEOWSTIC,//_MALE, + //NATIONAL_DEX_MEOWSTIC_FEMALE, NATIONAL_DEX_CHEWTLE, + // 19.0 lbs / 8.6 kg NATIONAL_DEX_GLOOM, + // 19.2 lbs / 8.7 kg NATIONAL_DEX_LUVDISC, + // 19.4 lbs / 8.8 kg NATIONAL_DEX_TEDDIURSA, NATIONAL_DEX_DIANCIE, + // 19.6 lbs / 8.9 kg NATIONAL_DEX_NICKIT, + NATIONAL_DEX_TINKATINK, + // 19.8 lbs / 9.0 kg NATIONAL_DEX_SQUIRTLE, NATIONAL_DEX_NIDORAN_M, NATIONAL_DEX_ELGYEM, NATIONAL_DEX_VULLABY, NATIONAL_DEX_CHESPIN, - NATIONAL_DEX_HOOPA, // Confined + NATIONAL_DEX_HOOPA,//_CONFINED, NATIONAL_DEX_RABOOT, + // 20.3 lbs / 9.2 kg NATIONAL_DEX_ROCKRUFF, - NATIONAL_DEX_CHERRIM, + // 20.5 lbs / 9.3 kg + NATIONAL_DEX_CHERRIM,//_OVERCAST, + //NATIONAL_DEX_CHERRIM_SUNSHINE, + // 20.7 lbs / 9.4 kg NATIONAL_DEX_FENNEKIN, + // 20.9 lbs / 9.5 kg NATIONAL_DEX_WEEZING, NATIONAL_DEX_TOTODILE, NATIONAL_DEX_WINGULL, NATIONAL_DEX_SHINX, NATIONAL_DEX_ARCHEN, - //NATIONAL_DEX_GOURGEIST, // Small Size + //NATIONAL_DEX_GOURGEIST_SMALL, + // 21.6 lbs / 9.7 kg + NATIONAL_DEX_DIPPLIN, + // 21.6 lbs / 9.8 kg + NATIONAL_DEX_FUECOCO, + // 21.8 lbs / 9.9 kg NATIONAL_DEX_METAPOD, NATIONAL_DEX_VULPIX, - //NATIONAL_DEX_VULPIX, // Alolan Form + //NATIONAL_DEX_VULPIX_ALOLAN, NATIONAL_DEX_TEPIG, - // 22.0 - 44.1 lbs / 10.0 - 20.0 kg + // 22.0 lbs / 10.0 kg NATIONAL_DEX_KAKUNA, NATIONAL_DEX_MAGIKARP, NATIONAL_DEX_SILCOON, - NATIONAL_DEX_FLORGES, + NATIONAL_DEX_FLORGES,//_RED_FLOWER, + //NATIONAL_DEX_FLORGES_YELLOW_FLOWER, + //NATIONAL_DEX_FLORGES_ORANGE_FLOWER, + //NATIONAL_DEX_FLORGES_BLUE_FLOWER, + //NATIONAL_DEX_FLORGES_WHITE_FLOWER, + // 22.3 lbs / 10.1 kg NATIONAL_DEX_PURRLOIN, + // 22.5 lbs / 10.2 kg NATIONAL_DEX_TURTWIG, NATIONAL_DEX_PAWNIARD, + NATIONAL_DEX_LECHONK, + // 22.7 lbs / 10.3 kg NATIONAL_DEX_GULPIN, + // 22.9 lbs / 10.4 kg NATIONAL_DEX_VOLTORB, + // 23.1 lbs / 10.5 kg NATIONAL_DEX_PANSAGE, NATIONAL_DEX_SWOOBAT, NATIONAL_DEX_AMOONGUSS, NATIONAL_DEX_RUFFLET, NATIONAL_DEX_CHARJABUG, + NATIONAL_DEX_CHARCADET, + // 23.8 lbs / 10.8 kg NATIONAL_DEX_LEDYBA, NATIONAL_DEX_HOUNDOUR, + // 24.0 lbs / 10.9 kg NATIONAL_DEX_FROGADIER, + NATIONAL_DEX_FIDOUGH, + //NATIONAL_DEX_WOOPER_PALDEAN, + // 24.3 lbs / 11.0 kg NATIONAL_DEX_SKITTY, NATIONAL_DEX_SABLEYE, NATIONAL_DEX_PANSEAR, NATIONAL_DEX_STUNFISK, NATIONAL_DEX_TOXEL, NATIONAL_DEX_DRAKLOAK, + NATIONAL_DEX_IRON_BUNDLE, + // 24.7 lbs / 11.2 kg NATIONAL_DEX_MEDITITE, + // 25.4 lbs / 11.5 kg NATIONAL_DEX_KABUTO, NATIONAL_DEX_AIPOM, NATIONAL_DEX_CASCOON, @@ -1235,8 +1562,13 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_CORPHISH, NATIONAL_DEX_SHIINOTIC, NATIONAL_DEX_DRIZZILE, + // 25.6 lbs / 11.6 kg NATIONAL_DEX_PATRAT, + // 26.0 lbs / 11.8 kg NATIONAL_DEX_SCRAGGY, + // 26.2 lbs / 11.9 kg + NATIONAL_DEX_DOLLIV, + // 26.5 lbs / 12.0 kg NATIONAL_DEX_SANDSHREW, NATIONAL_DEX_WIGGLYTUFF, NATIONAL_DEX_CHINCHOU, @@ -1246,40 +1578,59 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_WIMPOD, NATIONAL_DEX_ROLYCOLY, NATIONAL_DEX_KUBFU, + // 26.9 lbs / 12.2 kg + NATIONAL_DEX_FLORAGATO, + NATIONAL_DEX_MUNKIDORI, + // 27.3 lbs / 12.4 kg NATIONAL_DEX_POLIWAG, + // 27.6 lbs / 12.5 kg NATIONAL_DEX_VENOMOTH, NATIONAL_DEX_ANORITH, NATIONAL_DEX_BANETTE, NATIONAL_DEX_TIMBURR, NATIONAL_DEX_ZORUA, - NATIONAL_DEX_GOURGEIST, // Average Size + //NATIONAL_DEX_ZORUA_HISUIAN, + NATIONAL_DEX_GOURGEIST,//_AVERAGE, NATIONAL_DEX_MORGREM, + // 28.7 lbs / 13.0 kg NATIONAL_DEX_IVYSAUR, - //NATIONAL_DEX_VOLTORB, //Hisuian Form - //NATIONAL_DEX_BANETTE, // Mega + //NATIONAL_DEX_VOLTORB_HISUIAN, + //NATIONAL_DEX_BANETTE_MEGA, NATIONAL_DEX_MIME_JR, NATIONAL_DEX_LAMPENT, - //NATIONAL_DEX_TOGEDEMARU, // Totem-sized + //NATIONAL_DEX_TOGEDEMARU_TOTEM_SIZED, NATIONAL_DEX_BLACEPHALON, NATIONAL_DEX_APPLETUN, + // 29.3 lbs / 13.3 kg NATIONAL_DEX_FLAAFFY, + // 29.8 lbs / 13.5 kg NATIONAL_DEX_PANPOUR, NATIONAL_DEX_LITLEO, NATIONAL_DEX_YAMPER, + // 30.0 lbs / 13.6 kg NATIONAL_DEX_POOCHYENA, + // 30.9 lbs / 14.0 kg NATIONAL_DEX_DUNSPARCE, NATIONAL_DEX_WYNAUT, NATIONAL_DEX_SIGILYPH, - //NATIONAL_DEX_GOURGEIST, // Large Size + //NATIONAL_DEX_GOURGEIST_LARGE, NATIONAL_DEX_THWACKEY, + // 31.3 lbs / 14.2 kg NATIONAL_DEX_GUMSHOOS, + // 31.5 lbs / 14.3 kg NATIONAL_DEX_GALVANTULA, + // 32.0 lbs / 14.5 kg NATIONAL_DEX_ROSERADE, NATIONAL_DEX_DWEBBLE, NATIONAL_DEX_BRAIXEN, NATIONAL_DEX_TOXAPEX, + // 32.4 lbs / 14.7 kg NATIONAL_DEX_HERDIER, + // 32.6 lbs / 14.8 kg NATIONAL_DEX_TRUMBEAK, + // 32.8 lbs / 14.9 kg + NATIONAL_DEX_DACHSBUN, + // 33.1 lbs / 15.0 kg NATIONAL_DEX_FARFETCHD, NATIONAL_DEX_GOLDEEN, NATIONAL_DEX_XATU, @@ -1288,147 +1639,242 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_DRIFBLIM, NATIONAL_DEX_BONSLY, NATIONAL_DEX_TRANQUILL, - //NATIONAL_DEX_PUMPKABOO, // Super Size + //NATIONAL_DEX_PUMPKABOO_SUPER, + NATIONAL_DEX_SCOVILLAIN, + NATIONAL_DEX_HOUNDSTONE, + // 33.5 lbs / 15.2 kg NATIONAL_DEX_ELECTRIKE, NATIONAL_DEX_SANDILE, + // 33.7 lbs / 15.3 kg NATIONAL_DEX_VIBRAVA, + // 34.2 lbs / 15.5 kg NATIONAL_DEX_VICTREEBEL, NATIONAL_DEX_STARAVIA, NATIONAL_DEX_AROMATISSE, + // 34.8 lbs / 15.8 kg NATIONAL_DEX_BAYLEEF, - //NATIONAL_DEX_WEEZING, // Galarian Form + // 35.3 lbs / 16.0 kg + //NATIONAL_DEX_WEEZING_GALARIAN, NATIONAL_DEX_DELIBIRD, NATIONAL_DEX_SERVINE, NATIONAL_DEX_FLETCHINDER, NATIONAL_DEX_DARTRIX, NATIONAL_DEX_CORVISQUIRE, + NATIONAL_DEX_NACLI, + NATIONAL_DEX_MASCHIFF, + // 35.9 lbs / 16.3 kg NATIONAL_DEX_WHISMUR, NATIONAL_DEX_LILLIGANT, + // 36.4 lbs / 16.5 kg NATIONAL_DEX_DRAGONAIR, NATIONAL_DEX_TIRTOUGA, + NATIONAL_DEX_SPIDOPS, + // 37.0 lbs / 16.8 kg NATIONAL_DEX_SNORUNT, + // 37.5 lbs / 17.0 kg NATIONAL_DEX_PALPITOAD, - NATIONAL_DEX_VIVILLON, + NATIONAL_DEX_VIVILLON,//_ICY_SNOW, + //NATIONAL_DEX_VIVILLON_POLAR, + //NATIONAL_DEX_VIVILLON_TUNDRA, + //NATIONAL_DEX_VIVILLON_CONTINENTAL, + //NATIONAL_DEX_VIVILLON_GARDEN, + //NATIONAL_DEX_VIVILLON_ELEGANT, + //NATIONAL_DEX_VIVILLON_MEADOW, + //NATIONAL_DEX_VIVILLON_MODERN, + //NATIONAL_DEX_VIVILLON_MARINE, + //NATIONAL_DEX_VIVILLON_ARCHIPELAGO, + //NATIONAL_DEX_VIVILLON_HIGH_PLAINS, + //NATIONAL_DEX_VIVILLON_SANDSTORM, + //NATIONAL_DEX_VIVILLON_RIVER, + //NATIONAL_DEX_VIVILLON_MONSOON, + //NATIONAL_DEX_VIVILLON_SAVANNA, + //NATIONAL_DEX_VIVILLON_SUN, + //NATIONAL_DEX_VIVILLON_OCEAN, + //NATIONAL_DEX_VIVILLON_JUNGLE, + //NATIONAL_DEX_VIVILLON_FANCY, + //NATIONAL_DEX_VIVILLON_POKE_BALL, + NATIONAL_DEX_FRIGIBAX, + // 38.1 lbs / 17.3 kg NATIONAL_DEX_DEINO, + // 38.6 lbs / 17.5 kg NATIONAL_DEX_ZIGZAGOON, - //NATIONAL_DEX_ZIGZAGOON, // Galarian Form + //NATIONAL_DEX_ZIGZAGOON_GALARIAN, NATIONAL_DEX_SLIGGOO, NATIONAL_DEX_BRIONNE, + NATIONAL_DEX_LOKIX, + // 39.0 lbs / 17.7 kg NATIONAL_DEX_VOLBEAT, NATIONAL_DEX_ILLUMISE, + // 39.7 lbs / 18.0 kg NATIONAL_DEX_ROGGENROLA, - NATIONAL_DEX_BASCULIN, // Red-Striped Form - //NATIONAL_DEX_BASCULIN, // Blue-Striped Form + NATIONAL_DEX_BASCULIN,//_RED_STRIPED, + //NATIONAL_DEX_BASCULIN_BLUE_STRIPED, + //NATIONAL_DEX_BASCULIN_WHITE_STRIPED, NATIONAL_DEX_GOTHORITA, NATIONAL_DEX_AXEW, NATIONAL_DEX_CRAMORANT, + // 40.8 lbs / 18.5 kg NATIONAL_DEX_RATICATE, NATIONAL_DEX_LURANTIS, + // 41.0 lbs / 18.6 kg NATIONAL_DEX_VILEPLUME, NATIONAL_DEX_TAPU_LELE, + // 41.4 lbs / 18.8 kg NATIONAL_DEX_FERROSEED, + // 41.9 lbs / 19.0 kg NATIONAL_DEX_CHARMELEON, NATIONAL_DEX_GROWLITHE, NATIONAL_DEX_QUILAVA, NATIONAL_DEX_BRUXISH, + // 42.3 lbs / 19.2 kg NATIONAL_DEX_STUNKY, - //NATIONAL_DEX_LILLIGANT, // Hisuian Form + //NATIONAL_DEX_LILLIGANT_HISUIAN, + // 43.0 lbs / 19.5 kg NATIONAL_DEX_NIDORINO, NATIONAL_DEX_ABRA, NATIONAL_DEX_MACHOP, NATIONAL_DEX_COMBUSKEN, - NATIONAL_DEX_DEERLING, + NATIONAL_DEX_DEERLING,//_SPRING, + //NATIONAL_DEX_DEERLING_SUMMER, + //NATIONAL_DEX_DEERLING_AUTUMN, + //NATIONAL_DEX_DEERLING_WINTER, NATIONAL_DEX_DOTTLER, + // 43.2 lbs / 19.6 kg NATIONAL_DEX_PSYDUCK, + // 43.7 lbs / 19.8 kg NATIONAL_DEX_SWELLOW, + // 43.9 lbs / 19.9 kg NATIONAL_DEX_NINETALES, - //NATIONAL_DEX_NINETALES, // Alolan Form + //NATIONAL_DEX_NINETALES_ALOLAN, NATIONAL_DEX_KOMALA, + NATIONAL_DEX_THIEVUL, + // 44.1 lbs / 20.0 kg NATIONAL_DEX_NIDORINA, NATIONAL_DEX_POLIWHIRL, NATIONAL_DEX_GEODUDE, NATIONAL_DEX_BIDOOF, NATIONAL_DEX_MIENFOO, - // 44.3 - 54.9 lbs / 20.1 - 24.9 kg + // 44.3 lbs / 20.1 kg NATIONAL_DEX_REUNICLUS, + // 44.5 lbs / 20.2 kg NATIONAL_DEX_KIRLIA, NATIONAL_DEX_RIOLU, - //NATIONAL_DEX_GEODUDE, // Alolan Form + // 44.8 lbs / 20.3 kg + //NATIONAL_DEX_GEODUDE_ALOLAN, NATIONAL_DEX_AMBIPOM, + // 45.2 lbs / 20.5 kg NATIONAL_DEX_SHUCKLE, NATIONAL_DEX_GIBLE, NATIONAL_DEX_LEAVANNY, NATIONAL_DEX_TAPU_KOKO, - //NATIONAL_DEX_STUNFISK, // Galarian Form + //NATIONAL_DEX_STUNFISK_GALARIAN, + // 45.4 lbs / 20.6 kg NATIONAL_DEX_ALTARIA, - //NATIONAL_DEX_ALTARIA, // Mega + //NATIONAL_DEX_ALTARIA_MEGA, + // 45.9 lbs / 20.8 kg NATIONAL_DEX_CARVANHA, + // 46.3 lbs / 21.0 kg NATIONAL_DEX_TYROGUE, NATIONAL_DEX_KLINK, NATIONAL_DEX_HELIOLISK, - //NATIONAL_DEX_RAICHU, // Alolan Form + //NATIONAL_DEX_RAICHU_ALOLAN, + NATIONAL_DEX_BRUTE_BONNET, + // 46.7 lbs / 21.2 kg NATIONAL_DEX_HOOTHOOT, NATIONAL_DEX_TAPU_FINI, + // 47.2 lbs / 21.4 kg NATIONAL_DEX_MAGBY, NATIONAL_DEX_TSAREENA, + // 47.4 lbs / 21.5 kg NATIONAL_DEX_BALTOY, NATIONAL_DEX_HAWLUCHA, + NATIONAL_DEX_QUAXWELL, + // 47.6 lbs / 21.6 kg NATIONAL_DEX_GROVYLE, + // 48.5 lbs / 22.0 kg NATIONAL_DEX_KECLEON, NATIONAL_DEX_MONFERNO, NATIONAL_DEX_EELEKTRIK, + // 48.9 lbs / 22.2 kg NATIONAL_DEX_SALAZZLE, NATIONAL_DEX_MARSHADOW, + // 49.6 lbs / 22.5 kg NATIONAL_DEX_WARTORTLE, NATIONAL_DEX_LANTURN, + // 49.8 lbs / 22.6 kg NATIONAL_DEX_GOREBYSS, - //NATIONAL_DEX_GROWLITHE, //Hisuian Form + // 50.0 lbs / 22.7 kg + //NATIONAL_DEX_GROWLITHE_HISUIAN, + // 50.7 lbs / 23.0 kg NATIONAL_DEX_PRINPLUP, NATIONAL_DEX_CROAGUNK, + // 51.4 lbs / 23.3 kg NATIONAL_DEX_MOTHIM, NATIONAL_DEX_MUNNA, + // 51.6 lbs / 23.4 kg NATIONAL_DEX_RELICANTH, + // 51.8 lbs / 23.5 kg NATIONAL_DEX_ELEKID, - //NATIONAL_DEX_MAWILE, // Mega + //NATIONAL_DEX_MAWILE_MEGA, NATIONAL_DEX_SYLVEON, + // 52.0 lbs / 23.6 kg NATIONAL_DEX_WHISCASH, + // 52.5 lbs / 23.8 kg NATIONAL_DEX_LILEEP, - //NATIONAL_DEX_PONYTA, // Galarian Form + // 52.9 lbs / 24.0 kg + //NATIONAL_DEX_PONYTA_GALARIAN, NATIONAL_DEX_SLAKOTH, NATIONAL_DEX_NUMEL, NATIONAL_DEX_LUMINEON, + // 53.4 lbs / 24.2 kg NATIONAL_DEX_SWANNA, + // 53.8 lbs / 24.4 kg NATIONAL_DEX_HAPPINY, + // 54.0 lbs / 24.5 kg NATIONAL_DEX_JOLTEON, NATIONAL_DEX_DEWOTT, NATIONAL_DEX_TALONFLAME, + // 54.9 lbs / 24.9 kg NATIONAL_DEX_STARAPTOR, - // 55.1 - 110.0 lbs / 25.0 - 49.9 kg + // 55.1 lbs / 25.0 kg NATIONAL_DEX_SEADRA, NATIONAL_DEX_FLAREON, NATIONAL_DEX_CROCONAW, NATIONAL_DEX_TORRACAT, - NATIONAL_DEX_LYCANROC, // Midday Form - //NATIONAL_DEX_LYCANROC, // Midnight Form - //NATIONAL_DEX_LYCANROC, // Dusk Form + NATIONAL_DEX_LYCANROC,//_MIDDAY, + //NATIONAL_DEX_LYCANROC_MIDNIGHT, + //NATIONAL_DEX_LYCANROC_DUSK, NATIONAL_DEX_PHEROMOSA, + // 55.6 lbs / 25.2 kg NATIONAL_DEX_AMAURA, + // 55.8 lbs / 25.3 kg NATIONAL_DEX_ACCELGOR, + // 56.2 lbs / 25.5 kg NATIONAL_DEX_KRICKETUNE, NATIONAL_DEX_LEAFEON, - //NATIONAL_DEX_RATICATE, // Alolan Form + //NATIONAL_DEX_RATICATE_ALOLAN, + // 57.1 lbs / 25.5 kg NATIONAL_DEX_GLACEON, + // 57.3 lbs / 26.0 kg NATIONAL_DEX_TYRUNT, NATIONAL_DEX_TOUCANNON, + // 58.4 lbs / 26.5 kg NATIONAL_DEX_ESPEON, + // 58.6 lbs / 26.6 kg NATIONAL_DEX_FROSLASS, + // 59.5 lbs / 27.0 kg NATIONAL_DEX_UMBREON, - //NATIONAL_DEX_SNEASEL, //Hisuian Form + //NATIONAL_DEX_SNEASEL_HISUIAN, NATIONAL_DEX_HUNTAIL, NATIONAL_DEX_CARNIVINE, NATIONAL_DEX_WATCHOG, + // 60.0 lbs / 27.2 kg + NATIONAL_DEX_GRAFAIAI, + // 60.2 lbs / 27.3 kg NATIONAL_DEX_HONCHKROW, - //NATIONAL_DEX_DIANCIE, // Mega + // 61.3 lbs / 27.8 kg + //NATIONAL_DEX_DIANCIE_MEGA, + // 61.7 lbs / 28.0 kg NATIONAL_DEX_MANKEY, NATIONAL_DEX_SNEASEL, NATIONAL_DEX_MARSHTOMP, @@ -1436,27 +1882,47 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_PELIPPER, NATIONAL_DEX_SIMISEAR, NATIONAL_DEX_MARACTUS, - NATIONAL_DEX_FURFROU, + NATIONAL_DEX_FURFROU,//_NATURAL, + //NATIONAL_DEX_FURFROU_HEART_TRIM, + //NATIONAL_DEX_FURFROU_STAR_TRIM, + //NATIONAL_DEX_FURFROU_DIAMOND_TRIM, + //NATIONAL_DEX_FURFROU_DEBUTANTE_TRIM, + //NATIONAL_DEX_FURFROU_MATRON_TRIM, + //NATIONAL_DEX_FURFROU_DANDY_TRIM, + //NATIONAL_DEX_FURFROU_LA_REINE_TRIM, + //NATIONAL_DEX_FURFROU_KABUKI_TRIM, + //NATIONAL_DEX_FURFROU_PHARAOH_TRIM, NATIONAL_DEX_PERRSERKER, - NATIONAL_DEX_INDEEDEE, - //NATIONAL_DEX_LOPUNNY, // Mega + NATIONAL_DEX_INDEEDEE,//_MALE, + //NATIONAL_DEX_INDEEDEE_FEMALE, + // 62.4 lbs / 28.3 kg + //NATIONAL_DEX_LOPUNNY_MEGA, + // 62.6 lbs / 28.4 kg NATIONAL_DEX_BEAUTIFLY, + // 62.8 lbs / 28.5 kg NATIONAL_DEX_AZUMARILL, NATIONAL_DEX_WOBBUFFET, NATIONAL_DEX_OCTILLERY, + // 63.5 lbs / 28.8 kg NATIONAL_DEX_LARVESTA, + // 63.9 lbs / 29.0 kg NATIONAL_DEX_VAPOREON, NATIONAL_DEX_SIMIPOUR, NATIONAL_DEX_UNFEZANT, NATIONAL_DEX_QUILLADIN, + // 65.0 lbs / 29.5 kg NATIONAL_DEX_BEEDRILL, NATIONAL_DEX_SANDSLASH, NATIONAL_DEX_PARASECT, NATIONAL_DEX_BUIZEL, + // 65.5 lbs / 29.7 kg NATIONAL_DEX_JANGMO_O, + // 65.7 lbs / 29.8 kg NATIONAL_DEX_BLITZLE, - NATIONAL_DEX_GASTRODON, // West Sea - //NATIONAL_DEX_GASTRODON, // East Sea + // 65.9 lbs / 29.9 kg + NATIONAL_DEX_GASTRODON,//_WEST_SEA, + //NATIONAL_DEX_GASTRODON_EAST_SEA, + // 66.1 lbs / 30.0 kg NATIONAL_DEX_PIDGEOTTO, NATIONAL_DEX_RAICHU, NATIONAL_DEX_VENONAT, @@ -1466,533 +1932,981 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_ELECTABUZZ, NATIONAL_DEX_SCRAFTY, NATIONAL_DEX_BARRASKEWDA, + NATIONAL_DEX_ARCTIBAX, + NATIONAL_DEX_GHOLDENGO, + // 66.4 lbs / 30.1 kg + NATIONAL_DEX_FEZANDIPITI, + // 67.2 lbs / 30.5 kg NATIONAL_DEX_LUXIO, NATIONAL_DEX_SIMISAGE, + // 67.5 lbs / 30.6 kg NATIONAL_DEX_SPOINK, NATIONAL_DEX_DUSCLOPS, + // 67.7 lbs / 30.7 kg + NATIONAL_DEX_CROCALOR, + // 68.3 lbs / 31.0 kg NATIONAL_DEX_AUDINO, NATIONAL_DEX_TRUBBISH, NATIONAL_DEX_SKIDDO, NATIONAL_DEX_BINACLE, + // 68.8 lbs / 31.2 kg + NATIONAL_DEX_MEOWSCARADA, + // 69.4 lbs / 31.5 kg NATIONAL_DEX_MEDICHAM, NATIONAL_DEX_BIBAREL, NATIONAL_DEX_CRANIDOS, + // 69.7 lbs / 31.6 kg NATIONAL_DEX_DUSTOX, NATIONAL_DEX_ALOMOMOLA, + // 70.5 lbs / 32.0 kg NATIONAL_DEX_BUTTERFREE, NATIONAL_DEX_PERSIAN, NATIONAL_DEX_PRIMEAPE, - //NATIONAL_DEX_AUDINO, // Mega + //NATIONAL_DEX_AUDINO_MEGA, NATIONAL_DEX_ARCHEOPS, + // 71.4 lbs / 32.4 kg NATIONAL_DEX_DROWZEE, + // 71.7 lbs / 32.5 kg NATIONAL_DEX_FURRET, NATIONAL_DEX_PORYGON2, NATIONAL_DEX_LINOONE, - //NATIONAL_DEX_LINOONE, // Galarian Form + //NATIONAL_DEX_LINOONE_GALARIAN, NATIONAL_DEX_LOMBRE, + // 71.9 lbs / 32.6 kg NATIONAL_DEX_DELCATTY, + // 72.3 lbs / 32.8 kg NATIONAL_DEX_CRAWDAUNT, - //NATIONAL_DEX_MEWTWO, // Mega Y + // 72.8 lbs / 33.0 kg + //NATIONAL_DEX_MEWTWO_MEGA_Y, NATIONAL_DEX_ESCAVALIER, NATIONAL_DEX_FRILLISH, NATIONAL_DEX_DURANT, NATIONAL_DEX_CINDERACE, - //NATIONAL_DEX_PERSIAN, // Alolan Form + //NATIONAL_DEX_PERSIAN_ALOLAN, + NATIONAL_DEX_TOEDSCOOL, + // 73.4 lbs / 33.3 kg NATIONAL_DEX_DUGTRIO, NATIONAL_DEX_LOPUNNY, + // 73.6 lbs / 33.4 kg NATIONAL_DEX_KROKOROK, + // 73.9 lbs / 33.5 kg NATIONAL_DEX_ARIADOS, NATIONAL_DEX_PHANPY, NATIONAL_DEX_FLOATZEL, - //NATIONAL_DEX_ZYGARDE, // 10% Forme + //NATIONAL_DEX_ZYGARDE_10, + //NATIONAL_DEX_ZYGARDE_10_POWER_CONSTRUCT, + // 74.7 lbs / 33.9 kg NATIONAL_DEX_POLITOED, - //NATIONAL_DEX_MAROWAK, // Alolan Form + // 75.0 lbs / 34.0 kg + //NATIONAL_DEX_MAROWAK_ALOLAN, NATIONAL_DEX_WEAVILE, NATIONAL_DEX_PORYGON_Z, NATIONAL_DEX_BOLTUND, + // 75.6 lbs / 34.3 kg NATIONAL_DEX_CHANDELURE, + // 76.1 lbs / 34.5 kg NATIONAL_DEX_STARYU, NATIONAL_DEX_BEHEEYEM, + // 76.3 lbs / 34.6 kg NATIONAL_DEX_CHANSEY, + // 77.2 lbs / 35.0 kg NATIONAL_DEX_TANGELA, NATIONAL_DEX_OMASTAR, NATIONAL_DEX_SLUGMA, NATIONAL_DEX_HOUNDOOM, + NATIONAL_DEX_VAROOM, + NATIONAL_DEX_GREAVARD, + NATIONAL_DEX_IRON_VALIANT, + // 77.8 lbs / 35.3 kg NATIONAL_DEX_CLAWITZER, + // 78.3 lbs / 35.5 kg NATIONAL_DEX_MIENSHAO, + // 78.5 lbs / 35.6 kg NATIONAL_DEX_LEDIAN, + // 79.4 lbs / 36.0 kg NATIONAL_DEX_SLOWPOKE, - //NATIONAL_DEX_SLOWPOKE, // Galarian Form + //NATIONAL_DEX_SLOWPOKE_GALARIAN, NATIONAL_DEX_FRAXURE, + NATIONAL_DEX_IRON_MOTH, + // 80.5 lbs / 36.5 kg NATIONAL_DEX_PORYGON, + // 80.7 lbs / 36.6 kg NATIONAL_DEX_DECIDUEYE, + // 81.6 lbs / 37.0 kg NATIONAL_DEX_MIGHTYENA, - //NATIONAL_DEX_DECIDUEYE, //Hisuian Form + //NATIONAL_DEX_DECIDUEYE_HISUIAN, + NATIONAL_DEX_FLAMIGO, + // 82.7 lbs / 37.5 kg NATIONAL_DEX_LIEPARD, NATIONAL_DEX_DARUMAKA, + // 83.8 lbs / 38.0 kg NATIONAL_DEX_FEAROW, NATIONAL_DEX_SUDOWOODO, NATIONAL_DEX_YANMA, NATIONAL_DEX_SKUNTANK, NATIONAL_DEX_TOGEKISS, + // 84.9 lbs / 38.5 kg NATIONAL_DEX_VESPIQUEN, + // 85.1 lbs / 38.6 kg + NATIONAL_DEX_KILOWATTREL, + // 86.0 lbs / 39.0 kg NATIONAL_DEX_SEAKING, NATIONAL_DEX_DELPHOX, - //NATIONAL_DEX_GOURGEIST, // Super Size + //NATIONAL_DEX_GOURGEIST_SUPER, NATIONAL_DEX_GRAPPLOCT, + // 86.4 lbs / 39.2 kg NATIONAL_DEX_DODUO, NATIONAL_DEX_BRELOOM, + NATIONAL_DEX_DUDUNSPARCE,//_TWO_SEGMENT, + // 87.1 lbs / 39.5 kg NATIONAL_DEX_PIDGEOT, NATIONAL_DEX_SPHEAL, NATIONAL_DEX_MANDIBUZZ, - //NATIONAL_DEX_SANDSHREW, // Alolan Form + // 87.7 lbs / 39.8 kg + NATIONAL_DEX_OGERPON, + // 88.2 lbs / 40.0 kg + //NATIONAL_DEX_SANDSHREW_ALOLAN, NATIONAL_DEX_CLEFABLE, NATIONAL_DEX_LATIAS, NATIONAL_DEX_GURDURR, - //NATIONAL_DEX_DARUMAKA, // Galarian Form + //NATIONAL_DEX_DARUMAKA_GALARIAN, NATIONAL_DEX_GRENINJA, - //NATIONAL_DEX_GRENINJA, // Ash-Greninja - NATIONAL_DEX_MINIOR, // Meteor Form - NATIONAL_DEX_TOXTRICITY, + //NATIONAL_DEX_GRENINJA_ASH, + //NATIONAL_DEX_MINIOR_METEOR, + //NATIONAL_DEX_MINIOR_METEOR_RED, + //NATIONAL_DEX_MINIOR_METEOR_ORANGE, + //NATIONAL_DEX_MINIOR_METEOR_YELLOW, + //NATIONAL_DEX_MINIOR_METEOR_GREEN, + //NATIONAL_DEX_MINIOR_METEOR_BLUE, + //NATIONAL_DEX_MINIOR_METEOR_INDIGO, + //NATIONAL_DEX_MINIOR_METEOR_VIOLET, + NATIONAL_DEX_TOXTRICITY,//_AMPED, + //NATIONAL_DEX_TOXTRICITY_LOW_KEY, NATIONAL_DEX_DURALUDON, + // 88.6 lbs / 40.2 kg NATIONAL_DEX_MANECTRIC, + // 88.8 lbs / 40.3 kg NATIONAL_DEX_ZANGOOSE, + // 89.1 lbs / 40.4 kg NATIONAL_DEX_EXCADRILL, - //NATIONAL_DEX_BEEDRILL, // Mega + // 89.3 lbs / 40.5 kg + //NATIONAL_DEX_BEEDRILL_MEGA, NATIONAL_DEX_GENGAR, NATIONAL_DEX_KABUTOPS, NATIONAL_DEX_LOUDRED, + // 89.5 lbs / 40.6 kg NATIONAL_DEX_JYNX, + // 89.9 lbs / 40.8 kg NATIONAL_DEX_NOCTOWL, NATIONAL_DEX_ORBEETLE, + // 90.4 lbs / 41.0 kg NATIONAL_DEX_VANILLISH, NATIONAL_DEX_BRAVIARY, + NATIONAL_DEX_PAWMOT, + // 91.5 lbs / 41.5 kg NATIONAL_DEX_GIRAFARIG, - //NATIONAL_DEX_FARFETCHD, // Galarian Form - //NATIONAL_DEX_GRIMER, // Alolan Form + // 92.6 lbs / 42.0 kg + //NATIONAL_DEX_FARFETCHD_GALARIAN, + //NATIONAL_DEX_GRIMER_ALOLAN, NATIONAL_DEX_LUXRAY, NATIONAL_DEX_FROSMOTH, + // 92.8 lbs / 42.1 kg NATIONAL_DEX_BAGON, + // 93.5 lbs / 42.4 kg NATIONAL_DEX_DIGGERSBY, + // 93.7 lbs / 42.5 kg NATIONAL_DEX_GLISCOR, + // 94.6 lbs / 42.9 kg + NATIONAL_DEX_BOMBIRDIER, + // 94.8 lbs / 43.0 kg NATIONAL_DEX_DUBWOOL, NATIONAL_DEX_SNEASLER, - //NATIONAL_DEX_BRAVIARY, //Hisuian Form + // 95.7 lbs / 43.4 kg + //NATIONAL_DEX_BRAVIARY_HISUIAN, + // 96.6 lbs / 43.8 kg NATIONAL_DEX_PURUGLY, - //NATIONAL_DEX_MANECTRIC, // Mega + // 97.0 lbs / 44.0 kg + //NATIONAL_DEX_MANECTRIC_MEGA, NATIONAL_DEX_GOTHITELLE, NATIONAL_DEX_PRIMARINA, + // 97.9 lbs / 44.4 kg NATIONAL_DEX_TOXICROAK, + // 98.1 lbs / 44.5 kg NATIONAL_DEX_MAGMAR, NATIONAL_DEX_ZERAORA, NATIONAL_DEX_SPECTRIER, + // 99.2 lbs / 45.0 kg NATIONAL_DEX_MAROWAK, NATIONAL_DEX_VIKAVOLT, + NATIONAL_DEX_GLIMMORA, + NATIONAL_DEX_CETODDLE, + // 99.6 lbs / 45.2 kg NATIONAL_DEX_INTELEON, + // 100.3 lbs / 45.5 kg NATIONAL_DEX_TENTACOOL, NATIONAL_DEX_TAPU_BULU, + // 101.4 lbs / 46.0 kg NATIONAL_DEX_VOLCARONA, NATIONAL_DEX_OBSTAGOON, + // 102.5 lbs / 46.5 kg NATIONAL_DEX_VIGOROTH, + // 103.2 lbs / 46.8 kg NATIONAL_DEX_BLISSEY, + // 103.2 lbs / 46.8 kg NATIONAL_DEX_ABSOL, NATIONAL_DEX_MALAMAR, NATIONAL_DEX_HAKAMO_O, + // 104.5 lbs / 47.4 kg + //NATIONAL_DEX_DUDUNSPARCE_THREE_SEGMENT, + // 105.8 lbs / 48.0 kg NATIONAL_DEX_ALAKAZAM, NATIONAL_DEX_HITMONTOP, - NATIONAL_DEX_ENAMORUS, + NATIONAL_DEX_ENAMORUS,//_INCARNATE, + //NATIONAL_DEX_ENAMORUS_THERIAN, + // 106.3 lbs / 48.2 kg + NATIONAL_DEX_ARBOLIVA, + // 106.7 lbs / 48.4 kg NATIONAL_DEX_GARDEVOIR, - NATIONAL_DEX_KELDEO, + // 106.9 lbs / 48.5 kg + NATIONAL_DEX_KELDEO,//_ORDINARY, + //NATIONAL_DEX_KELDEO_RESOLUTE, + // 107.4 lbs / 48.7 kg NATIONAL_DEX_GRANBULL, - //NATIONAL_DEX_ABSOL, // Mega - //NATIONAL_DEX_HOUNDOOM, // Mega + // 108.0 lbs / 49.0 kg + //NATIONAL_DEX_ABSOL_MEGA, + // 109.1 lbs / 49.5 kg + //NATIONAL_DEX_HOUNDOOM_MEGA, NATIONAL_DEX_HIPPOPOTAS, + // 109.8 lbs / 49.8 kg NATIONAL_DEX_HITMONLEE, - // 110.2 - 132.1 lbs / 50.0 - 59.9 kg + // 110.2 lbs / 50.0 kg NATIONAL_DEX_ZWEILOUS, NATIONAL_DEX_DRAGAPULT, + // 110.7 lbs / 50.2 kg NATIONAL_DEX_HITMONCHAN, - //NATIONAL_DEX_PIDGEOT, // Mega + // 111.3 lbs / 50.5 kg + //NATIONAL_DEX_PIDGEOT_MEGA, NATIONAL_DEX_SKARMORY, NATIONAL_DEX_SNOVER, NATIONAL_DEX_DARKRAI, - //NATIONAL_DEX_ARTICUNO, // Galarian Form + // 112.2 lbs / 50.9 kg + //NATIONAL_DEX_ARTICUNO_GALARIAN, + // 112.4 lbs / 51.0 kg NATIONAL_DEX_SAWK, NATIONAL_DEX_KLANG, + // 113.1 lbs / 51.3 kg NATIONAL_DEX_CACNEA, + // 113.5 lbs / 51.5 kg NATIONAL_DEX_YANMEGA, - //NATIONAL_DEX_MUK, // Alolan Form + // 114.6 lbs / 52.0 kg + //NATIONAL_DEX_MUK_ALOLAN, NATIONAL_DEX_BLAZIKEN, - //NATIONAL_DEX_LATIAS, // Mega + //NATIONAL_DEX_LATIAS_MEGA, NATIONAL_DEX_GALLADE, + // 115.1 lbs / 52.2 kg NATIONAL_DEX_SCEPTILE, + // 115.7 lbs / 52.5 kg NATIONAL_DEX_SEVIPER, NATIONAL_DEX_CLAMPERL, + // 116.0 lbs / 52.6 kg NATIONAL_DEX_ZAPDOS, - NATIONAL_DEX_AEGISLASH, - //NATIONAL_DEX_CALYREX, // Shadow Rider + // 116.8 lbs / 53.0 kg + NATIONAL_DEX_AEGISLASH,//_SHIELD, + //NATIONAL_DEX_AEGISLASH_BLADE, + // 118.2 lbs / 53.6 kg + //NATIONAL_DEX_CALYREX_SHADOW_RIDER, + // 119.0 lbs / 54.0 kg NATIONAL_DEX_POLIWRATH, NATIONAL_DEX_HERACROSS, NATIONAL_DEX_LUCARIO, + // 120.2 lbs / 54.5 kg NATIONAL_DEX_MR_MIME, - //NATIONAL_DEX_SANDSLASH, // Alolan Form + // 121.3 lbs / 55.0 kg + //NATIONAL_DEX_SANDSLASH_ALOLAN, NATIONAL_DEX_GOLBAT, NATIONAL_DEX_TENTACRUEL, NATIONAL_DEX_PINSIR, NATIONAL_DEX_MAGCARGO, NATIONAL_DEX_LUDICOLO, NATIONAL_DEX_INFERNAPE, - //NATIONAL_DEX_SCEPTILE, // Mega + // 121.7 lbs / 55.2 kg + //NATIONAL_DEX_SCEPTILE_MEGA, + // 122.1 lbs / 55.4 kg NATIONAL_DEX_ARTICUNO, + // 122.4 lbs / 55.5 kg NATIONAL_DEX_PIGNITE, NATIONAL_DEX_THROH, NATIONAL_DEX_NIHILEGO, + // 123.0 lbs / 55.8 kg NATIONAL_DEX_PILOSWINE, + // 123.5 lbs / 56.0 kg NATIONAL_DEX_SCYTHER, NATIONAL_DEX_GABITE, - //NATIONAL_DEX_GALLADE, // Mega + NATIONAL_DEX_ANNIHILAPE, + // 124.3 lbs / 56.4 kg + //NATIONAL_DEX_GALLADE_MEGA, + // 124.6 lbs / 56.5 kg NATIONAL_DEX_KADABRA, - //NATIONAL_DEX_MR_MIME, // Galarian Form + // 125.2 lbs / 56.8 kg + //NATIONAL_DEX_MR_MIME_GALARIAN, + // 125.7 lbs / 57.0 kg NATIONAL_DEX_SHIELDON, - //NATIONAL_DEX_LUCARIO, // Mega + // 126.8 lbs / 57.5 kg + //NATIONAL_DEX_LUCARIO_MEGA, NATIONAL_DEX_VANILLUXE, + // 127.9 lbs / 58.0 kg NATIONAL_DEX_SMEARGLE, NATIONAL_DEX_HEATMOR, - //NATIONAL_DEX_LURANTIS, // Totem-sized - //NATIONAL_DEX_ZAPDOS, // Galarian Form - //NATIONAL_DEX_SAMUROTT, // Hisuian Form + //NATIONAL_DEX_LURANTIS_TOTEM_SIZED, + NATIONAL_DEX_TOEDSCRUEL, + // 128.3 lbs / 58.2 kg + //NATIONAL_DEX_ZAPDOS_GALARIAN, + //NATIONAL_DEX_SAMUROTT_HISUIAN, NATIONAL_DEX_MR_RIME, + // 129.0 lbs / 58.5 kg NATIONAL_DEX_WHIRLIPEDE, - //NATIONAL_DEX_PINSIR, // Mega + // 130.1 lbs / 59.0 kg + //NATIONAL_DEX_PINSIR_MEGA, NATIONAL_DEX_AERODACTYL, + // 130.3 lbs / 59.1 kg + NATIONAL_DEX_TINKATUFF, + // 131.4 lbs / 59.6 kg NATIONAL_DEX_SHIFTRY, - // 132.3 - 218.0 lbs / 60.0 - 98.9 kg + // 132.3 lbs / 60.0 kg NATIONAL_DEX_NIDOQUEEN, NATIONAL_DEX_MAGNETON, NATIONAL_DEX_KINGLER, NATIONAL_DEX_MOLTRES, NATIONAL_DEX_ARON, NATIONAL_DEX_LATIOS, - //NATIONAL_DEX_GUMSHOOS, // Totem-sized + //NATIONAL_DEX_GUMSHOOS_TOTEM_SIZED, + NATIONAL_DEX_SANDY_SHOCKS, + // 132.7 lbs / 60.2 kg + NATIONAL_DEX_FINIZEN, + NATIONAL_DEX_PALAFIN,//_ZERO, + // 133.2 lbs / 60.4 kg NATIONAL_DEX_CRADILY, + // 133.4 lbs / 60.5 kg NATIONAL_DEX_BRONZOR, NATIONAL_DEX_MUSHARNA, NATIONAL_DEX_OVERQWIL, - NATIONAL_DEX_DEOXYS, // Normal Forme - //NATIONAL_DEX_DEOXYS, // Attack Forme - //NATIONAL_DEX_DEOXYS, // Defense Forme - //NATIONAL_DEX_DEOXYS, // Speed Forme + // 134.0 lbs / 60.8 kg + NATIONAL_DEX_DEOXYS,//_NORMAL, + //NATIONAL_DEX_DEOXYS_ATTACK, + //NATIONAL_DEX_DEOXYS_DEFENSE, + //NATIONAL_DEX_DEOXYS_SPEED, + // 134.5 lbs / 61.0 kg NATIONAL_DEX_STOUTLAND, - NATIONAL_DEX_THUNDURUS, + NATIONAL_DEX_THUNDURUS,//_INCARNATE, + //NATIONAL_DEX_THUNDURUS_THERIAN, NATIONAL_DEX_GRIMMSNARL, + NATIONAL_DEX_MABOSSTIFF, + // 135.6 lbs / 61.5 kg NATIONAL_DEX_AMPHAROS, NATIONAL_DEX_DRAPION, + // 136.5 lbs / 61.9 kg + NATIONAL_DEX_QUAQUAVAL, + // 136.7 lbs / 62.0 kg NATIONAL_DEX_NIDOKING, NATIONAL_DEX_SEISMITOAD, NATIONAL_DEX_FALINKS, - //NATIONAL_DEX_HERACROSS, // Mega + NATIONAL_DEX_CERULEDGE, + // 137.8 lbs / 62.5 kg + //NATIONAL_DEX_HERACROSS_MEGA, + // 138.9 lbs / 63.0 kg NATIONAL_DEX_SERPERIOR, - NATIONAL_DEX_TORNADUS, + NATIONAL_DEX_TORNADUS,//_INCARNATE, + //NATIONAL_DEX_TORNADUS_THERIAN, + NATIONAL_DEX_CYCLIZAR, + // 142.9 lbs / 64.8 kg NATIONAL_DEX_GLIGAR, + // 143.3 lbs / 65.0 kg NATIONAL_DEX_ARBOK, NATIONAL_DEX_MANTYKE, + // 144.4 lbs / 65.5 kg NATIONAL_DEX_LICKITUNG, NATIONAL_DEX_SANDACONDA, - //NATIONAL_DEX_MOLTRES, // Galarian Form + // 145.5 lbs / 66.0 kg + //NATIONAL_DEX_MOLTRES_GALARIAN, + // 146.8 lbs / 66.6 kg NATIONAL_DEX_ELECTRODE, NATIONAL_DEX_RUNERIGUS, - //NATIONAL_DEX_DUGTRIO, // Alolan Form + //NATIONAL_DEX_DUGTRIO_ALOLAN, + // 149.9 lbs / 68.0 kg NATIONAL_DEX_MAGMORTAR, - NATIONAL_DEX_LANDORUS, + NATIONAL_DEX_LANDORUS,//_INCARNATE, + //NATIONAL_DEX_LANDORUS_THERIAN, + // 150.4 lbs / 68.2 kg NATIONAL_DEX_ARMALDO, - //NATIONAL_DEX_SLIGGOO, //Hisuian Form - //NATIONAL_DEX_TYPHLOSION, //Hisuian Form - //NATIONAL_DEX_LATIOS, // Mega + // 151.0 lbs / 68.5 kg + //NATIONAL_DEX_SLIGGOO_HISUIAN, + // 153.9 lbs / 69.8 kg + //NATIONAL_DEX_TYPHLOSION_HISUIAN, + // 154.3 lbs / 70.0 kg + //NATIONAL_DEX_LATIOS_MEGA, NATIONAL_DEX_BISHARP, NATIONAL_DEX_SANDYGAST, NATIONAL_DEX_ZARUDE, + // 155.4 lbs / 70.5 kg NATIONAL_DEX_MACHOKE, - //NATIONAL_DEX_SLOWBRO, // Galarian Form - //NATIONAL_DEX_ELECTRODE //Hisuian Form + //NATIONAL_DEX_SLOWBRO_GALARIAN, + // 156.5 lbs / 71.0 kg + //NATIONAL_DEX_ELECTRODE_HISUIAN, NATIONAL_DEX_TREVENANT, + // 157.0 lbs / 71.2 kg NATIONAL_DEX_STANTLER, + // 157.6 lbs / 71.5 kg NATIONAL_DEX_GRUMPIG, + // 158.7 lbs / 72.0 kg NATIONAL_DEX_LARVITAR, - //NATIONAL_DEX_ZOROARK, //Hisuian Form + // 160.9 lbs / 73.0 kg + //NATIONAL_DEX_ZOROARK_HISUIAN, + // 163.6 lbs / 74.2 kg + NATIONAL_DEX_WO_CHIEN, + // 165.3 lbs / 75.0 kg NATIONAL_DEX_CROBAT, NATIONAL_DEX_QUAGSIRE, NATIONAL_DEX_CORVIKNIGHT, + // 166.4 lbs / 75.5 kg NATIONAL_DEX_MILTANK, + // 166.7 lbs / 75.6 kg NATIONAL_DEX_HYPNO, + // 167.6 lbs / 76.0 kg NATIONAL_DEX_ORANGURU, + // 168.7 lbs / 76.5 kg NATIONAL_DEX_COFAGRIGUS, + // 168.9 lbs / 76.6 kg NATIONAL_DEX_GOLDUCK, + // 170.6 lbs / 77.4 kg NATIONAL_DEX_CACTURNE, + // 172.0 lbs / 78.0 kg NATIONAL_DEX_CARKOL, + // 172.4 lbs / 78.2 kg NATIONAL_DEX_KOMMO_O, + // 173.1 lbs / 78.5 kg NATIONAL_DEX_SLOWBRO, - //NATIONAL_DEX_WISHIWASHI, // School Form - //NATIONAL_DEX_AERODACTYL, // Mega + // 173.3 lbs / 78.6 kg + //NATIONAL_DEX_WISHIWASHI_SCHOOL, + // 174.2 lbs / 79.0 kg + //NATIONAL_DEX_AERODACTYL_MEGA, + NATIONAL_DEX_KLAWF, + // 175.3 lbs / 79.5 kg NATIONAL_DEX_TYPHLOSION, NATIONAL_DEX_SLOWKING, - //NATIONAL_DEX_SLOWKING, // Galarian Form + //NATIONAL_DEX_SLOWKING_GALARIAN, NATIONAL_DEX_ZEBSTRIKA, + // 176.4 lbs / 80.0 kg NATIONAL_DEX_KANGASKHAN, NATIONAL_DEX_STARMIE, NATIONAL_DEX_SWALOT, - //NATIONAL_DEX_RAPIDASH, // Galarian Form + //NATIONAL_DEX_RAPIDASH_GALARIAN, NATIONAL_DEX_TORKOAL, + // 177.5 lbs / 80.5 kg NATIONAL_DEX_EELEKTROSS, NATIONAL_DEX_MAGEARNA, - //NATIONAL_DEX_MAGEARNA, // Original Color + //NATIONAL_DEX_MAGEARNA_ORIGINAL_COLOR, + // 178.6 lbs / 81.0 kg NATIONAL_DEX_CARRACOSTA, NATIONAL_DEX_KLINKLANG, + // 178.8 lbs / 81.1 kg NATIONAL_DEX_ZOROARK, - //NATIONAL_DEX_SALAZZLE, // Totem-sized + //NATIONAL_DEX_SALAZZLE_TOTEM_SIZED, + // 179.7 lbs / 81.5 kg NATIONAL_DEX_PYROAR, NATIONAL_DEX_DRAGALGE, + // 180.6 lbs / 81.9 kg NATIONAL_DEX_SWAMPERT, + // 180.8 lbs / 82.0 kg NATIONAL_DEX_FLYGON, NATIONAL_DEX_ARAQUANID, + // 181.9 lbs / 82.5 kg NATIONAL_DEX_GENESECT, + // 182.5 lbs / 82.8 kg NATIONAL_DEX_PASSIMIAN, + // 183.0 lbs / 83.0 kg NATIONAL_DEX_INCINEROAR, + // 185.2 lbs / 84.0 kg NATIONAL_DEX_EXPLOUD, + // 186.3 lbs / 84.5 kg NATIONAL_DEX_EMPOLEON, + // 187.4 lbs / 85.0 kg + //NATIONAL_DEX_TAUROS_PALDEAN_BLAZE_BREED, NATIONAL_DEX_NOIVERN, + NATIONAL_DEX_ARMAROUGE, + // 187.8 lbs / 85.2 kg NATIONAL_DEX_DODRIO, + // 188.5 lbs / 85.5 kg NATIONAL_DEX_BLASTOISE, + // 188.7 lbs / 85.6 kg NATIONAL_DEX_CRESSELIA, + // 190.5 lbs / 86.4 kg NATIONAL_DEX_MAKUHITA, + // 191.8 lbs / 87.0 kg NATIONAL_DEX_CONKELDURR, + // 193.1 lbs / 87.6 kg NATIONAL_DEX_SEALEO, + // 194.9 lbs / 88.4 kg NATIONAL_DEX_TAUROS, + // 195.8 lbs / 88.8 kg NATIONAL_DEX_FERALIGATR, NATIONAL_DEX_SHARPEDO, - NATIONAL_DEX_EISCUE, + // 196.2 lbs / 89.0 kg + NATIONAL_DEX_EISCUE,//_ICE_FACE, + //NATIONAL_DEX_EISCUE_NOICE_FACE, NATIONAL_DEX_KLEAVOR, + // 198.4 lbs / 90.0 kg NATIONAL_DEX_SEEL, NATIONAL_DEX_CHESNAUGHT, NATIONAL_DEX_RILLABOOM, + NATIONAL_DEX_ESPATHRA, + NATIONAL_DEX_VELUZA, + // 199.5 lbs / 90.5 kg NATIONAL_DEX_CHARIZARD, - NATIONAL_DEX_RAPIDASH, + // 200.6 lbs / 91.0 kg NATIONAL_DEX_GOGOAT, + // 202.8 lbs / 92.0 kg NATIONAL_DEX_GOLETT, - NATIONAL_DEX_SAWSBUCK, - NATIONAL_DEX_DARMANITAN, + NATIONAL_DEX_SLITHER_WING, + // 203.3 lbs / 92.2 kg + NATIONAL_DEX_OKIDOGI, + // 203.9 lbs / 92.5 kg + NATIONAL_DEX_SAWSBUCK,//_SPRING, + //NATIONAL_DEX_SAWSBUCK_SUMMER, + //NATIONAL_DEX_SAWSBUCK_AUTUMN, + //NATIONAL_DEX_SAWSBUCK_WINTER, + // 204.8 lbs / 92.9 kg + NATIONAL_DEX_DARMANITAN,//_STANDARD_MODE, + //NATIONAL_DEX_DARMANITAN_ZEN_MODE, + // 208.6 lbs / 94.6 kg NATIONAL_DEX_BOUFFALANT, NATIONAL_DEX_SAMUROTT, + // 209.4 lbs / 95.0 kg NATIONAL_DEX_RAPIDASH, NATIONAL_DEX_GARCHOMP, + // 209.7 lbs / 95.1 kg NATIONAL_DEX_WYRDEER, + // 209.9 lbs / 95.2 kg NATIONAL_DEX_BELDUM, + // 211.6 lbs / 96.0 kg NATIONAL_DEX_BARBARACLE, + // 212.3 lbs / 96.3 kg NATIONAL_DEX_KROOKODILE, + // 212.8 lbs / 97.0 kg NATIONAL_DEX_NOSEPASS, NATIONAL_DEX_GROTLE, - //NATIONAL_DEX_MAROWAK, // Alolan Form, Totem-sized - // 218.3 - 220.2 lbs / 99.0 - 99.9 kg + // 214.7 lbs / 97.4 kg + //NATIONAL_DEX_PALAFIN_HERO, + // 216.1 lbs / 98.0 kg + //NATIONAL_DEX_MAROWAK_ALOLAN_TOTEM_SIZED, + // 219.4 lbs / 99.5 kg NATIONAL_DEX_BERGMITE, - // 220.5 - 225.5 lbs / 100.0 - 102.3 kg + // 220.5 lbs / 100.0 kg NATIONAL_DEX_VENUSAUR, - //NATIONAL_DEX_KANGASKHAN, // Mega + //NATIONAL_DEX_KANGASKHAN_MEGA, NATIONAL_DEX_TROPIUS, NATIONAL_DEX_XURKITREE, NATIONAL_DEX_CUFANT, - //NATIONAL_DEX_CHARIZARD, // Mega Y + // 221.6 lbs / 100.5 kg + //NATIONAL_DEX_CHARIZARD_MEGA_Y, NATIONAL_DEX_MEGANIUM, - NATIONAL_DEX_SILVALLY, - //NATIONAL_DEX_BLASTOISE, // Mega - //NATIONAL_DEX_SWAMPERT, // Mega + NATIONAL_DEX_SILVALLY,//_NORMAL, + //NATIONAL_DEX_SILVALLY_FIGHTING, + //NATIONAL_DEX_SILVALLY_FLYING, + //NATIONAL_DEX_SILVALLY_POISON, + //NATIONAL_DEX_SILVALLY_GROUND, + //NATIONAL_DEX_SILVALLY_ROCK, + //NATIONAL_DEX_SILVALLY_BUG, + //NATIONAL_DEX_SILVALLY_GHOST, + //NATIONAL_DEX_SILVALLY_STEEL, + //NATIONAL_DEX_SILVALLY_FIRE, + //NATIONAL_DEX_SILVALLY_WATER, + //NATIONAL_DEX_SILVALLY_GRASS, + //NATIONAL_DEX_SILVALLY_ELECTRIC, + //NATIONAL_DEX_SILVALLY_PSYCHIC, + //NATIONAL_DEX_SILVALLY_ICE, + //NATIONAL_DEX_SILVALLY_DRAGON, + //NATIONAL_DEX_SILVALLY_DARK, + //NATIONAL_DEX_SILVALLY_FAIRY, + // 222.9 lbs / 101.1 kg + //NATIONAL_DEX_BLASTOISE_MEGA, + // 224.9 lbs / 102.0 kg + //NATIONAL_DEX_SWAMPERT_MEGA, NATIONAL_DEX_BOLDORE, - // 225.8 - 330.5 lbs / 102.4 - 149.9 kg + // 226.0 lbs / 102.5 kg NATIONAL_DEX_RAMPARDOS, + // 226.2 lbs / 102.6 kg NATIONAL_DEX_SALAMENCE, + // 231.5 lbs / 105.0 kg NATIONAL_DEX_GRAVELER, NATIONAL_DEX_MUNCHLAX, - //NATIONAL_DEX_RATICATE, // Alolan Form, Totem-sized - NATIONAL_DEX_URSHIFU, // Single Strike Style - //NATIONAL_DEX_URSHIFU, // Rapid Strike Style + //NATIONAL_DEX_RATICATE_ALOLAN_TOTEM_SIZED, + NATIONAL_DEX_URSHIFU,//_SINGLE_STRIKE_STYLE, + //NATIONAL_DEX_URSHIFU_RAPID_STRIKE_STYLE, + NATIONAL_DEX_NACLSTACK, + // 232.6 lbs / 105.5 kg NATIONAL_DEX_HAXORUS, + // 235.0 lbs / 106.6 kg NATIONAL_DEX_DUSKNOIR, + // 236.6 lbs / 107.3 kg NATIONAL_DEX_GARBODOR, + // 238.1 lbs / 108.0 kg NATIONAL_DEX_CLAYDOL, NATIONAL_DEX_SPIRITOMB, NATIONAL_DEX_GOLISOPOD, - //NATIONAL_DEX_GRAVELER, // Alolan Form + // 242.5 lbs / 110.0 kg + //NATIONAL_DEX_GRAVELER_ALOLAN, + //NATIONAL_DEX_TAUROS_PALDEAN_AQUA_BREED, NATIONAL_DEX_FERROTHORN, NATIONAL_DEX_MUDBRAY, - NATIONAL_DEX_ZACIAN, // Hero of Many Battles - NATIONAL_DEX_BASCULEGION, - //NATIONAL_DEX_CHARIZARD, // Mega X + NATIONAL_DEX_ZACIAN,//_HERO_OF_MANY_BATTLES, + NATIONAL_DEX_BASCULEGION,//_MALE, + //NATIONAL_DEX_BASCULEGION_FEMALE, + // 243.6 lbs / 110.5 kg + //NATIONAL_DEX_CHARIZARD_MEGA_X, NATIONAL_DEX_SHELGON, - //NATIONAL_DEX_SALAMENCE, // Mega + // 244.7 lbs / 111.0 kg + NATIONAL_DEX_IRON_JUGULIS, + // 248.2 lbs / 112.6 kg + //NATIONAL_DEX_SALAMENCE_MEGA, + // 248.7 lbs / 112.8 kg + NATIONAL_DEX_TINKATON, + // 249.1 lbs / 113.0 kg + NATIONAL_DEX_BELLIBOLT, + // 253.5 lbs / 115.0 kg NATIONAL_DEX_RHYHORN, + //NATIONAL_DEX_TAUROS_PALDEAN_COMBAT_BREED, + // 254.6 lbs / 115.5 kg NATIONAL_DEX_DREDNAW, + // 257.9 lbs / 117.0 kg NATIONAL_DEX_SIRFETCHD, + // 260.1 lbs / 118.0 kg NATIONAL_DEX_SCIZOR, + // 264.6 lbs / 120.0 kg NATIONAL_DEX_DEWGONG, - //NATIONAL_DEX_SLOWBRO, // Mega + //NATIONAL_DEX_SLOWBRO_MEGA, NATIONAL_DEX_EXEGGUTOR, NATIONAL_DEX_RHYDON, NATIONAL_DEX_DONPHAN, NATIONAL_DEX_LAIRON, NATIONAL_DEX_LUNALA, NATIONAL_DEX_CENTISKORCH, - //NATIONAL_DEX_DARMANITAN, // Galarian Form + //NATIONAL_DEX_DARMANITAN_GALARIAN_STANDARD_MODE, + //NATIONAL_DEX_DARMANITAN_GALARIAN_ZEN_MODE, + NATIONAL_DEX_OINKOLOGNE,//_MALE, + //NATIONAL_DEX_OINKOLOGNE_FEMALE, + NATIONAL_DEX_REVAVROOM, + NATIONAL_DEX_KINGAMBIT, + // 265.7 lbs / 120.5 kg NATIONAL_DEX_TYPE_NULL, + // 269.0 lbs / 122.0 kg NATIONAL_DEX_MEWTWO, - //NATIONAL_DEX_SCIZOR, // Mega + // 275.6 lbs / 125.0 kg + //NATIONAL_DEX_SCIZOR_MEGA, + NATIONAL_DEX_IRON_LEAVES, + // 277.3 lbs / 125.8 kg NATIONAL_DEX_FORRETRESS, NATIONAL_DEX_URSARING, - //NATIONAL_DEX_MEWTWO, // Mega X + // 280.0 lbs / 127.0 kg + //NATIONAL_DEX_MEWTWO_MEGA_X, + // 283.5 lbs / 128.6 kg NATIONAL_DEX_TANGROWTH, + // 286.6 lbs / 130.0 kg NATIONAL_DEX_MACHAMP, NATIONAL_DEX_WAILMER, - //NATIONAL_DEX_SHARPEDO, // Mega + // 287.3 lbs / 130.3 kg + //NATIONAL_DEX_SHARPEDO_MEGA, + // 287.7 lbs / 130.5 kg NATIONAL_DEX_SLAKING, + // 292.1 lbs / 132.5 kg NATIONAL_DEX_CLOYSTER, + // 297.6 lbs / 135.0 kg NATIONAL_DEX_JELLICENT, NATIONAL_DEX_BEWEAR, + // 298.7 lbs / 135.5 kg NATIONAL_DEX_ABOMASNOW, + // 299.8 lbs / 136.0 kg NATIONAL_DEX_PANGORO, + // 305.6 lbs / 138.6 kg NATIONAL_DEX_ELECTIVIRE, + // 306.4 lbs / 139.0 kg NATIONAL_DEX_DRUDDIGON, + // 308.6 lbs / 140.0 kg NATIONAL_DEX_LICKILICKY, + // 319.7 lbs / 145.0 kg NATIONAL_DEX_REGIELEKI, - //NATIONAL_DEX_VIKAVOLT, // Totem-sized + // 325.2 lbs / 147.5 kg + //NATIONAL_DEX_VIKAVOLT_TOTEM_SIZED, + // 326.3 lbs / 148.0 kg NATIONAL_DEX_CRYOGONAL, + // 329.6 lbs / 149.5 kg NATIONAL_DEX_BASTIODON, - // 330.7 - 440.7 lbs / 150.0 - 199.9 kg + // 330.7 lbs / 150.0 kg NATIONAL_DEX_EMBOAR, NATIONAL_DEX_NAGANADEL, NATIONAL_DEX_ARCTOZOLT, + // 331.8 lbs / 150.5 kg NATIONAL_DEX_GOODRA, + // 332.0 lbs / 150.6 kg NATIONAL_DEX_WALREIN, + // 335.1 lbs / 152.0 kg NATIONAL_DEX_KINGDRA, NATIONAL_DEX_PUPITAR, + // 335.5 lbs / 152.2 kg + NATIONAL_DEX_CHIEN_PAO, + // 339.5 lbs / 154.0 kg NATIONAL_DEX_SOLROCK, + // 341.7 lbs / 155.0 kg NATIONAL_DEX_ARCANINE, - //NATIONAL_DEX_VENUSAUR, // Mega + // 342.8 lbs / 155.5 kg + //NATIONAL_DEX_VENUSAUR_MEGA, + // 352.7 lbs / 160.0 kg NATIONAL_DEX_HYDREIGON, - //NATIONAL_DEX_SABLEYE, // Mega + NATIONAL_DEX_FARIGIRAF, + // 354.9 lbs / 161.0 kg + //NATIONAL_DEX_SABLEYE_MEGA, + // 357.1 lbs / 162.0 kg NATIONAL_DEX_MILOTIC, - //NATIONAL_DEX_ARCANINE, //Hisuian Form + // 370.4 lbs / 168.0 kg + //NATIONAL_DEX_ARCANINE_HISUIAN, NATIONAL_DEX_LUNATONE, + // 385.8 lbs / 175.0 kg NATIONAL_DEX_REGICE, NATIONAL_DEX_ARCTOVISH, + // 392.4 lbs / 178.0 kg NATIONAL_DEX_RAIKOU, + // 396.8 lbs / 180.0 kg NATIONAL_DEX_MAGNEZONE, NATIONAL_DEX_CRABOMINABLE, - //NATIONAL_DEX_ABOMASNOW, // Mega + // 407.9 lbs / 185.0 kg + //NATIONAL_DEX_ABOMASNOW_MEGA, NATIONAL_DEX_DRAMPA, + // 412.3 lbs / 187.0 kg NATIONAL_DEX_SUICUNE, NATIONAL_DEX_BRONZONG, + // 418.9 lbs / 190.0 kg NATIONAL_DEX_DRACOZOLT, + // 429.9 lbs / 195.0 kg NATIONAL_DEX_VOLCANION, + // 436.5 lbs / 198.0 kg NATIONAL_DEX_ENTEI, + // 438.7 lbs / 199.0 kg NATIONAL_DEX_HO_OH, - // 440.9 - 451.3 lbs / 200.0 - 204.7 kg + // 440.9 lbs / 200.0 kg NATIONAL_DEX_CRUSTLE, NATIONAL_DEX_VIRIZION, NATIONAL_DEX_REGIDRAGO, + // 442.0 lbs / 200.5 kg NATIONAL_DEX_SCOLIPEDE, + // 445.3 lbs / 202.0 kg NATIONAL_DEX_TYRANITAR, + // 446.4 lbs / 202.5 kg NATIONAL_DEX_METANG, + // 447.5 lbs / 203.0 kg NATIONAL_DEX_YVELTAL, - // 451.5 - 661.2 lbs / 204.8 - 299.9 kg + // 451.9 lbs / 205.0 kg NATIONAL_DEX_REGISTEEL, + // 455.3 lbs / 206.5 kg NATIONAL_DEX_RAYQUAZA, - //NATIONAL_DEX_KOMMO_O, // Totem-sized + // 457.5 lbs / 207.5 kg + //NATIONAL_DEX_KOMMO_O_TOTEM_SIZED, + // 463.0 lbs / 210.0 kg NATIONAL_DEX_ONIX, NATIONAL_DEX_DRAGONITE, NATIONAL_DEX_DHELMISE, - NATIONAL_DEX_ZAMAZENTA, // Hero of Many Battles + NATIONAL_DEX_ZAMAZENTA,//_HERO_OF_MANY_BATTLES, + NATIONAL_DEX_BAXCALIBUR, + // 467.4 lbs / 212.0 kg NATIONAL_DEX_TURTONATOR, - NATIONAL_DEX_XERNEAS, + // 474.0 lbs / 215.0 kg + NATIONAL_DEX_XERNEAS,//_NEUTRAL, + //NATIONAL_DEX_XERNEAS_ACTIVE, NATIONAL_DEX_DRACOVISH, + // 476.2 lbs / 216.0 kg NATIONAL_DEX_LUGIA, - //NATIONAL_DEX_ARAQUANID, // Totem-sized + // 479.5 lbs / 217.5 kg + //NATIONAL_DEX_ARAQUANID_TOTEM_SIZED, + // 485.0 lbs / 220.0 kg NATIONAL_DEX_LAPRAS, NATIONAL_DEX_MANTINE, NATIONAL_DEX_CAMERUPT, + NATIONAL_DEX_DONDOZO, + // 491.6 lbs / 223.0 kg + NATIONAL_DEX_CLODSIRE, + // 496.0 lbs / 225.0 kg NATIONAL_DEX_AURORUS, + // 507.1 lbs / 230.0 kg NATIONAL_DEX_REGIROCK, NATIONAL_DEX_SOLGALEO, NATIONAL_DEX_NECROZMA, - //NATIONAL_DEX_NECROZMA, // Ultra + //NATIONAL_DEX_NECROZMA_ULTRA, + // 518.1 lbs / 235.0 kg NATIONAL_DEX_GYARADOS, + // 529.1 lbs / 240.0 kg + NATIONAL_DEX_GARGANACL, + NATIONAL_DEX_IRON_TREADS, + NATIONAL_DEX_MIRAIDON, + // 551.2 lbs / 250.0 kg NATIONAL_DEX_COBALION, NATIONAL_DEX_PALOSSAND, + // 559.5 lbs / 253.8 kg NATIONAL_DEX_HARIYAMA, - //NATIONAL_DEX_TYRANITAR, // Mega + // 562.2 lbs / 255.0 kg + //NATIONAL_DEX_TYRANITAR_MEGA, + // 565.5 lbs / 256.5 kg NATIONAL_DEX_GLALIE, + // 573.2 lbs / 260.0 kg NATIONAL_DEX_GIGALITH, NATIONAL_DEX_BEARTIC, NATIONAL_DEX_TERRAKION, - //NATIONAL_DEX_AVALUGG, //Hisuian Form + // 578.5 lbs / 262.4 kg + //NATIONAL_DEX_AVALUGG_HISUIAN, + // 595.2 lbs / 270.0 kg NATIONAL_DEX_TYRANTRUM, + // 617.3 lbs / 280.0 kg + NATIONAL_DEX_WALKING_WAKE, + // 623.5 lbs / 282.8 kg NATIONAL_DEX_RHYPERIOR, + // 639.3 lbs / 290.0 kg NATIONAL_DEX_URSALUNA, + // 641.5 lbs / 291.0 kg NATIONAL_DEX_MAMOSWINE, - // 661.4 - 667.0 lbs / 300.0 - 307.1 kg + // 661.4 lbs / 300.0 kg NATIONAL_DEX_GOLEM, NATIONAL_DEX_HIPPOWDON, - //NATIONAL_DEX_GYARADOS, // Mega - NATIONAL_DEX_ZYGARDE, // 50% Forme - // 677.3 - 667.0 lbs / 307.2 - 359.9 kg + // 668.0 lbs / 303.0 kg + NATIONAL_DEX_IRON_THORNS, + NATIONAL_DEX_KORAIDON, + // 672.4 lbs / 305.0 kg + //NATIONAL_DEX_GYARADOS_MEGA, + NATIONAL_DEX_ZYGARDE,//_50, + //NATIONAL_DEX_ZYGARDE_50_POWER_CONSTRUCT, + // 683.4 lbs / 310.0 kg NATIONAL_DEX_TORTERRA, + NATIONAL_DEX_ORTHWORM, + // 684.5 lbs / 310.5 kg NATIONAL_DEX_COALOSSAL, - //NATIONAL_DEX_GOLEM, // Alolan Form - NATIONAL_DEX_ARCEUS, - //NATIONAL_DEX_CAMERUPT, // Mega + // 696.7 lbs / 316.0 kg + //NATIONAL_DEX_GOLEM_ALOLAN, + // 705.4 lbs / 320.0 kg + NATIONAL_DEX_ARCEUS,//_NORMAL, + //NATIONAL_DEX_ARCEUS_FIGHTING, + //NATIONAL_DEX_ARCEUS_FLYING, + //NATIONAL_DEX_ARCEUS_POISON, + //NATIONAL_DEX_ARCEUS_GROUND, + //NATIONAL_DEX_ARCEUS_ROCK, + //NATIONAL_DEX_ARCEUS_BUG, + //NATIONAL_DEX_ARCEUS_GHOST, + //NATIONAL_DEX_ARCEUS_STEEL, + //NATIONAL_DEX_ARCEUS_FIRE, + //NATIONAL_DEX_ARCEUS_WATER, + //NATIONAL_DEX_ARCEUS_GRASS, + //NATIONAL_DEX_ARCEUS_ELECTRIC, + //NATIONAL_DEX_ARCEUS_PSYCHIC, + //NATIONAL_DEX_ARCEUS_ICE, + //NATIONAL_DEX_ARCEUS_DRAGON, + //NATIONAL_DEX_ARCEUS_DARK, + NATIONAL_DEX_GREAT_TUSK, + // 705.4 lbs / 320.5 kg + //NATIONAL_DEX_CAMERUPT_MEGA, + // 716.5 lbs / 325.0 kg NATIONAL_DEX_KYUREM, + //NATIONAL_DEX_KYUREM_WHITE, + //NATIONAL_DEX_KYUREM_BLACK, + // 719.8 lbs / 326.5 kg + NATIONAL_DEX_SKELEDIRGE, + // 727.5 lbs / 330.0 kg NATIONAL_DEX_GOLURK, NATIONAL_DEX_RESHIRAM, + // 735.5 lbs / 333.6 kg NATIONAL_DEX_BUZZWOLE, - //NATIONAL_DEX_GOODRA, //Hisuian Form + // 736.6 lbs / 334.1 kg + //NATIONAL_DEX_GOODRA_HISUIAN, + // 740.8 lbs / 336.0 kg NATIONAL_DEX_PALKIA, + // 749.6 lbs / 340.0 kg NATIONAL_DEX_PROBOPASS, + // 760.6 lbs / 345.0 kg NATIONAL_DEX_ZEKROM, - //NATIONAL_DEX_NECROZMA, // Dawn Wings - //NATIONAL_DEX_GLALIE, // Mega + // 771.6 lbs / 350.0 kg + //NATIONAL_DEX_NECROZMA_DAWN_WINGS, + // 772.1 lbs / 350.2 kg + //NATIONAL_DEX_GLALIE_MEGA, + // 776.0 lbs / 352.0 kg NATIONAL_DEX_KYOGRE, - //NATIONAL_DEX_ZACIAN, // Crowned Sword - // 793.7 - 902.8 lbs / 360.0 - 409.5 kg + // 782.6 lbs / 355.0 kg + //NATIONAL_DEX_ZACIAN_CROWNED_SWORD, + // 793.7 lbs / 360.0 kg NATIONAL_DEX_AGGRON, - //NATIONAL_DEX_RAYQUAZA, // Mega - //NATIONAL_DEX_AGGRON, // Mega + // 837.8 lbs / 380.0 kg + NATIONAL_DEX_ROARING_MOON, + // 839.3 lbs / 380.7 kg + NATIONAL_DEX_IRON_HANDS, + // 864.2 lbs / 392.0 kg + //NATIONAL_DEX_RAYQUAZA_MEGA, + // 870.8 lbs / 395.0 kg + //NATIONAL_DEX_AGGRON_MEGA, + // 877.4 lbs / 398.0 kg NATIONAL_DEX_WAILORD, + // 881.8 lbs / 400.0 kg NATIONAL_DEX_STEELIX, - // 903.0 - 2204.4 lbs / 409.6 - 999.9 kg - //NATIONAL_DEX_EXEGGUTOR, // Alolan Form + // 916.2 lbs / 415.6 kg + //NATIONAL_DEX_EXEGGUTOR_ALOLAN, + // 925.9 lbs / 420.0 kg NATIONAL_DEX_REGIGIGAS, - //NATIONAL_DEX_KYOGRE, // Primal + // 948.0 lbs / 430.0 kg + //NATIONAL_DEX_KYOGRE_PRIMAL, NATIONAL_DEX_HEATRAN, + // 1014.1 lbs / 460.0 kg NATIONAL_DEX_SNORLAX, - //NATIONAL_DEX_NECROZMA, // Dusk Mane - //NATIONAL_DEX_HOOPA, // Unbound + //NATIONAL_DEX_NECROZMA_DUSK_MANE, + // 1080.3 lbs / 490.0 kg + //NATIONAL_DEX_HOOPA_UNBOUND, + // 1113.3 lbs / 505.0 kg NATIONAL_DEX_AVALUGG, + // 1146.4 lbs / 520.0 kg NATIONAL_DEX_STONJOURNER, + // 1212.5 lbs / 550.0 kg NATIONAL_DEX_METAGROSS, - //NATIONAL_DEX_ZYGARDE, // Complete Forme - //NATIONAL_DEX_GIRATINA, // Origin Forme - //NATIONAL_DEX_PALKIA, // Origin Form + // 1344.8 lbs / 610.0 kg + //NATIONAL_DEX_ZYGARDE_COMPLETE, + // 1433.8 lbs / 650.0 kg + //NATIONAL_DEX_GIRATINA_ORIGIN, + NATIONAL_DEX_COPPERAJAH, + // 1452.8 lbs / 659.0 kg + //NATIONAL_DEX_PALKIA_ORIGIN, + // 1505.8 lbs / 683.0 kg NATIONAL_DEX_DIALGA, - //NATIONAL_DEX_STEELIX, // Mega - NATIONAL_DEX_GIRATINA, // Altered Forme - //NATIONAL_DEX_ZAMAZENTA, // Crowned Shield + // 1542.6 lbs / 699.7 kg + NATIONAL_DEX_TING_LU, + // 1543.2 lbs / 700.0 kg + NATIONAL_DEX_CETITAN, + // 1631.4 lbs / 740.0 kg + //NATIONAL_DEX_STEELIX_MEGA, + // 1653.5 lbs / 750.0 kg + NATIONAL_DEX_GIRATINA,//_ALTERED, + // 1730.6 lbs / 785.0 kg + //NATIONAL_DEX_ZAMAZENTA_CROWNED_SHIELD, + // 1763.7 lbs / 800.0 kg NATIONAL_DEX_MELMETAL, NATIONAL_DEX_GLASTRIER, - //NATIONAL_DEX_CALYREX, // Ice Rider + // 1783.8 lbs / 809.1 kg + //NATIONAL_DEX_CALYREX_ICE_RIDER, + // 1807.8 lbs / 820.0 kg NATIONAL_DEX_STAKATAKA, - //NATIONAL_DEX_DIALGA, // Origin Form + // 1871.0 lbs / 848.7 kg + //NATIONAL_DEX_DIALGA_ORIGIN, + // 1957.7 lbs / 888.0 kg NATIONAL_DEX_GUZZLORD, + // 2028.3 lbs / 920.0 kg NATIONAL_DEX_MUDSDALE, - //NATIONAL_DEX_METAGROSS, // Mega + // 2078.7 lbs / 942.9 kg + //NATIONAL_DEX_METAGROSS_MEGA, + // 2094.4 lbs / 950.0 kg NATIONAL_DEX_GROUDON, NATIONAL_DEX_ETERNATUS, - //NATIONAL_DEX_GROUDON, // Primal + // 2204.0 lbs / 999.7 kg + //NATIONAL_DEX_GROUDON_PRIMAL, + // 2204.4 lbs / 999.9 kg NATIONAL_DEX_COSMOEM, NATIONAL_DEX_CELESTEELA, }; @@ -2001,42 +2915,62 @@ const u16 gPokedexOrder_Height[] = { // 0'04" / 0.1m NATIONAL_DEX_JOLTIK, - NATIONAL_DEX_FLABEBE, + NATIONAL_DEX_FLABEBE,//_RED_FLOWER, + //NATIONAL_DEX_FLABEBE_YELLOW_FLOWER, + //NATIONAL_DEX_FLABEBE_ORANGE_FLOWER, + //NATIONAL_DEX_FLABEBE_BLUE_FLOWER, + //NATIONAL_DEX_FLABEBE_WHITE_FLOWER, NATIONAL_DEX_CUTIEFLY, NATIONAL_DEX_COMFEY, NATIONAL_DEX_COSMOEM, - NATIONAL_DEX_SINISTEA, + NATIONAL_DEX_SINISTEA,//_PHONY, + //NATIONAL_DEX_SINISTEA_ANTIQUE, + //NATIONAL_DEX_GIMMIGHOUL_ROAMING, + NATIONAL_DEX_POLTCHAGEIST, // 0'08" / 0.2m NATIONAL_DEX_DIGLETT, - //NATIONAL_DEX_DIGLETT, // Alolan Form + //NATIONAL_DEX_DIGLETT_ALOLAN, NATIONAL_DEX_NATU, NATIONAL_DEX_AZURILL, NATIONAL_DEX_BUDEW, - NATIONAL_DEX_BURMY, + NATIONAL_DEX_BURMY,//_PLANT_CLOAK, + //NATIONAL_DEX_BURMY_SANDY_CLOAK, + //NATIONAL_DEX_BURMY_TRASH_CLOAK, NATIONAL_DEX_CHINGLING, - NATIONAL_DEX_SHAYMIN, // Land Forme + NATIONAL_DEX_SHAYMIN,//_LAND, NATIONAL_DEX_FOONGUS, NATIONAL_DEX_TYNAMO, - NATIONAL_DEX_FLOETTE, + NATIONAL_DEX_FLOETTE,//_RED_FLOWER, + //NATIONAL_DEX_FLOETTE_YELLOW_FLOWER, + //NATIONAL_DEX_FLOETTE_ORANGE_FLOWER, + //NATIONAL_DEX_FLOETTE_BLUE_FLOWER, + //NATIONAL_DEX_FLOETTE_WHITE_FLOWER, + //NATIONAL_DEX_FLOETTE_ETERNAL_FLOWER, NATIONAL_DEX_SPRITZEE, NATIONAL_DEX_DEDENNE, NATIONAL_DEX_KLEFKI, NATIONAL_DEX_RIBOMBEE, - NATIONAL_DEX_WISHIWASHI, // Solo Form + NATIONAL_DEX_WISHIWASHI,//_SOLO, NATIONAL_DEX_MORELULL, - NATIONAL_DEX_MIMIKYU, + NATIONAL_DEX_MIMIKYU,//_DISGUISED, + //NATIONAL_DEX_MIMIKYU_BUSTED, NATIONAL_DEX_COSMOG, NATIONAL_DEX_MELTAN, NATIONAL_DEX_ROOKIDEE, NATIONAL_DEX_APPLIN, NATIONAL_DEX_POLTEAGEIST, NATIONAL_DEX_MILCERY, + NATIONAL_DEX_NYMBLE, + NATIONAL_DEX_SHROODLE, + NATIONAL_DEX_RELLOR, + NATIONAL_DEX_FLITTLE, + NATIONAL_DEX_SINISTCHA, // 1'00" / 0.3m NATIONAL_DEX_CATERPIE, NATIONAL_DEX_WEEDLE, NATIONAL_DEX_PIDGEY, NATIONAL_DEX_RATTATA, - //NATIONAL_DEX_RATTATA, // Alolan Form + //NATIONAL_DEX_RATTATA_ALOLAN, NATIONAL_DEX_SPEAROW, NATIONAL_DEX_PARAS, NATIONAL_DEX_MAGNEMITE, @@ -2051,13 +2985,16 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_WURMPLE, NATIONAL_DEX_TAILLOW, NATIONAL_DEX_ROSELIA, - NATIONAL_DEX_CASTFORM, + NATIONAL_DEX_CASTFORM,//_NORMAL, + //NATIONAL_DEX_CASTFORM_SUNNY, + //NATIONAL_DEX_CASTFORM_RAINY, + //NATIONAL_DEX_CASTFORM_SNOWY, NATIONAL_DEX_JIRACHI, NATIONAL_DEX_STARLY, NATIONAL_DEX_KRICKETOT, NATIONAL_DEX_COMBEE, - NATIONAL_DEX_SHELLOS, // West Sea - //NATIONAL_DEX_SHELLOS, // East Sea + NATIONAL_DEX_SHELLOS,//_WEST_SEA, + //NATIONAL_DEX_SHELLOS_EAST_SEA, NATIONAL_DEX_ROTOM, NATIONAL_DEX_UXIE, NATIONAL_DEX_MESPRIT, @@ -2079,7 +3016,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_ESPURR, NATIONAL_DEX_CARBINK, NATIONAL_DEX_GOOMY, - //NATIONAL_DEX_PUMPKABOO, // Small Size + //NATIONAL_DEX_PUMPKABOO_SMALL, NATIONAL_DEX_ROWLET, NATIONAL_DEX_PIKIPEK, NATIONAL_DEX_DEWPIDER, @@ -2100,14 +3037,15 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_ALCREMIE, NATIONAL_DEX_PINCURCHIN, NATIONAL_DEX_SNOM, - NATIONAL_DEX_MORPEKO, + NATIONAL_DEX_MORPEKO,//_FULL_BELLY, + //NATIONAL_DEX_MORPEKO_HANGRY, NATIONAL_DEX_PIKACHU, NATIONAL_DEX_NIDORAN_F, NATIONAL_DEX_MEOWTH, - //NATIONAL_DEX_MEOWTH, // Alolan Form - //NATIONAL_DEX_MEOWTH, // Galarian Form + //NATIONAL_DEX_MEOWTH_ALOLAN, + //NATIONAL_DEX_MEOWTH_GALARIAN, NATIONAL_DEX_GEODUDE, - //NATIONAL_DEX_GEODUDE, // Alolan Form + //NATIONAL_DEX_GEODUDE_ALOLAN, NATIONAL_DEX_KRABBY, NATIONAL_DEX_EXEGGCUTE, NATIONAL_DEX_CUBONE, @@ -2123,7 +3061,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_TORCHIC, NATIONAL_DEX_MUDKIP, NATIONAL_DEX_ZIGZAGOON, - //NATIONAL_DEX_ZIGZAGOON, // Galarian Form + //NATIONAL_DEX_ZIGZAGOON_GALARIAN, NATIONAL_DEX_RALTS, NATIONAL_DEX_SHROOMISH, NATIONAL_DEX_ARON, @@ -2143,7 +3081,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_STUNKY, NATIONAL_DEX_FINNEON, NATIONAL_DEX_PHIONE, - //NATIONAL_DEX_SHAYMIN, // Sky Forme + //NATIONAL_DEX_SHAYMIN_SKY, NATIONAL_DEX_VICTINI, NATIONAL_DEX_LILLIPUP, NATIONAL_DEX_PURRLOIN, @@ -2161,15 +3099,15 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_SWIRLIX, NATIONAL_DEX_INKAY, NATIONAL_DEX_PHANTUMP, - NATIONAL_DEX_PUMPKABOO, // Average Size + NATIONAL_DEX_PUMPKABOO,//_AVERAGE, NATIONAL_DEX_LITTEN, NATIONAL_DEX_POPPLIO, NATIONAL_DEX_YUNGOOS, NATIONAL_DEX_GRUBBIN, - //NATIONAL_DEX_RIBOMBEE, // Totem-sized + //NATIONAL_DEX_RIBOMBEE_TOTEM_SIZED, NATIONAL_DEX_MAREANIE, NATIONAL_DEX_KOMALA, - //NATIONAL_DEX_MIMIKYU, // Totem-sized + //NATIONAL_DEX_MIMIKYU_TOTEM_SIZED, NATIONAL_DEX_BLIPBUG, NATIONAL_DEX_DOTTLER, NATIONAL_DEX_ORBEETLE, @@ -2178,6 +3116,28 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_TOXEL, NATIONAL_DEX_HATENNA, NATIONAL_DEX_IMPIDIMP, + NATIONAL_DEX_TAROUNTULA, + NATIONAL_DEX_PAWMI, + NATIONAL_DEX_TANDEMAUS, + NATIONAL_DEX_MAUSHOLD, + NATIONAL_DEX_FIDOUGH, + NATIONAL_DEX_SMOLIV, + NATIONAL_DEX_TADBULB, + NATIONAL_DEX_CAPSAKID, + NATIONAL_DEX_RABSCA, + NATIONAL_DEX_TATSUGIRI,//_CURLY, + //NATIONAL_DEX_TATSUGIRI_DROOPY, + //NATIONAL_DEX_TATSUGIRI_STRETCHY, + NATIONAL_DEX_GIMMIGHOUL,//_CHEST, + // 0.4m + NATIONAL_DEX_SPRIGATITO, + NATIONAL_DEX_FUECOCO, + NATIONAL_DEX_PAWMO, + NATIONAL_DEX_NACLI, + NATIONAL_DEX_WATTREL, + NATIONAL_DEX_TINKATINK, + NATIONAL_DEX_CHI_YU, + NATIONAL_DEX_DIPPLIN, // 1'08" / 0.5m NATIONAL_DEX_SQUIRTLE, NATIONAL_DEX_NIDORAN_M, @@ -2185,36 +3145,64 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_ODDISH, NATIONAL_DEX_MANKEY, NATIONAL_DEX_VOLTORB, - //NATIONAL_DEX_VOLTORB, //Hisuian Form + //NATIONAL_DEX_VOLTORB_HISUIAN, NATIONAL_DEX_KABUTO, NATIONAL_DEX_CYNDAQUIL, NATIONAL_DEX_SPINARAK, NATIONAL_DEX_CHINCHOU, NATIONAL_DEX_MURKROW, - NATIONAL_DEX_UNOWN, + NATIONAL_DEX_UNOWN,//_A, + //NATIONAL_DEX_UNOWN_B, + //NATIONAL_DEX_UNOWN_C, + //NATIONAL_DEX_UNOWN_D, + //NATIONAL_DEX_UNOWN_E, + //NATIONAL_DEX_UNOWN_F, + //NATIONAL_DEX_UNOWN_G, + //NATIONAL_DEX_UNOWN_H, + //NATIONAL_DEX_UNOWN_I, + //NATIONAL_DEX_UNOWN_J, + //NATIONAL_DEX_UNOWN_K, + //NATIONAL_DEX_UNOWN_L, + //NATIONAL_DEX_UNOWN_M, + //NATIONAL_DEX_UNOWN_N, + //NATIONAL_DEX_UNOWN_O, + //NATIONAL_DEX_UNOWN_P, + //NATIONAL_DEX_UNOWN_Q, + //NATIONAL_DEX_UNOWN_R, + //NATIONAL_DEX_UNOWN_S, + //NATIONAL_DEX_UNOWN_T, + //NATIONAL_DEX_UNOWN_U, + //NATIONAL_DEX_UNOWN_V, + //NATIONAL_DEX_UNOWN_W, + //NATIONAL_DEX_UNOWN_X, + //NATIONAL_DEX_UNOWN_Y, + //NATIONAL_DEX_UNOWN_Z, + //NATIONAL_DEX_UNOWN_EMARK, + //NATIONAL_DEX_UNOWN_QMARK, NATIONAL_DEX_QWILFISH, - //NATIONAL_DEX_QWILFISH, //Hisuian Form + //NATIONAL_DEX_QWILFISH_HISUIAN, NATIONAL_DEX_PHANPY, NATIONAL_DEX_TREECKO, NATIONAL_DEX_POOCHYENA, NATIONAL_DEX_LINOONE, - //NATIONAL_DEX_LINOONE, // Galarian Form + //NATIONAL_DEX_LINOONE_GALARIAN, NATIONAL_DEX_LOTAD, NATIONAL_DEX_SEEDOT, NATIONAL_DEX_SURSKIT, NATIONAL_DEX_NINCADA, NATIONAL_DEX_SABLEYE, - //NATIONAL_DEX_SABLEYE, // Mega + //NATIONAL_DEX_SABLEYE_MEGA, NATIONAL_DEX_TORKOAL, NATIONAL_DEX_BALTOY, NATIONAL_DEX_CHIMCHAR, NATIONAL_DEX_BIDOOF, NATIONAL_DEX_SHINX, NATIONAL_DEX_SHIELDON, - NATIONAL_DEX_WORMADAM, // Plant Cloak - //NATIONAL_DEX_WORMADAM, // Sandy Cloak - //NATIONAL_DEX_WORMADAM, // Trash Cloak - NATIONAL_DEX_CHERRIM, + NATIONAL_DEX_WORMADAM,//_PLANT_CLOAK, + //NATIONAL_DEX_WORMADAM_SANDY_CLOAK, + //NATIONAL_DEX_WORMADAM_TRASH_CLOAK, + NATIONAL_DEX_CHERRIM,//_OVERCAST, + //NATIONAL_DEX_CHERRIM_SUNSHINE, NATIONAL_DEX_GLAMEOW, NATIONAL_DEX_BRONZOR, NATIONAL_DEX_BONSLY, @@ -2226,7 +3214,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_SWADLOON, NATIONAL_DEX_PETILIL, NATIONAL_DEX_YAMASK, - //NATIONAL_DEX_YAMASK, Galarian Form + //NATIONAL_DEX_YAMASK_GALARIAN, NATIONAL_DEX_CINCCINO, NATIONAL_DEX_DUCKLETT, NATIONAL_DEX_KARRABLAST, @@ -2239,9 +3227,9 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_SKRELP, NATIONAL_DEX_CLAUNCHER, NATIONAL_DEX_HELIOPTILE, - //NATIONAL_DEX_PUMPKABOO, // Large Size + //NATIONAL_DEX_PUMPKABOO_LARGE, NATIONAL_DEX_NOIBAT, - NATIONAL_DEX_HOOPA, // Confined + NATIONAL_DEX_HOOPA,//_CONFINED, NATIONAL_DEX_CHARJABUG, NATIONAL_DEX_ROCKRUFF, NATIONAL_DEX_STUFFUL, @@ -2250,13 +3238,18 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_ELDEGOSS, NATIONAL_DEX_ARROKUDA, NATIONAL_DEX_DREEPY, + NATIONAL_DEX_QUAXLY, + NATIONAL_DEX_LECHONK, + NATIONAL_DEX_DACHSBUN, + NATIONAL_DEX_MASCHIFF, + NATIONAL_DEX_FRIGIBAX, // 2'00" / 0.6m NATIONAL_DEX_CHARMANDER, NATIONAL_DEX_KAKUNA, NATIONAL_DEX_SANDSHREW, NATIONAL_DEX_CLEFAIRY, NATIONAL_DEX_VULPIX, - //NATIONAL_DEX_VULPIX, // Alolan Form + //NATIONAL_DEX_VULPIX_ALOLAN, NATIONAL_DEX_POLIWAG, NATIONAL_DEX_KOFFING, NATIONAL_DEX_GOLDEEN, @@ -2269,7 +3262,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_SHUCKLE, NATIONAL_DEX_TEDDIURSA, NATIONAL_DEX_CORSOLA, - //NATIONAL_DEX_CORSOLA, // Galarian Form + //NATIONAL_DEX_CORSOLA_GALARIAN, NATIONAL_DEX_REMORAID, NATIONAL_DEX_HOUNDOUR, NATIONAL_DEX_PORYGON2, @@ -2308,25 +3301,32 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_ARCHEN, NATIONAL_DEX_TRUBBISH, NATIONAL_DEX_DUOSION, - NATIONAL_DEX_DEERLING, + NATIONAL_DEX_DEERLING,//_SPRING, + //NATIONAL_DEX_DEERLING_SUMMER, + //NATIONAL_DEX_DEERLING_AUTUMN, + //NATIONAL_DEX_DEERLING_WINTER, NATIONAL_DEX_AMOONGUSS, NATIONAL_DEX_FERROSEED, NATIONAL_DEX_KLANG, NATIONAL_DEX_KLINKLANG, NATIONAL_DEX_LAMPENT, NATIONAL_DEX_AXEW, - NATIONAL_DEX_MELOETTA, // Aria Forme - //NATIONAL_DEX_MELOETTA, // Pirouette Forme + NATIONAL_DEX_MELOETTA,//_ARIA, + //NATIONAL_DEX_MELOETTA_PIROUETTE, NATIONAL_DEX_FROGADIER, NATIONAL_DEX_LITLEO, NATIONAL_DEX_PANCHAM, - NATIONAL_DEX_MEOWSTIC, + NATIONAL_DEX_MEOWSTIC,//_MALE, + //NATIONAL_DEX_MEOWSTIC_FEMALE, NATIONAL_DEX_BRIONNE, NATIONAL_DEX_TRUMBEAK, NATIONAL_DEX_CRABRAWLER, - NATIONAL_DEX_ORICORIO, + NATIONAL_DEX_ORICORIO,//_BAILE, + //NATIONAL_DEX_ORICORIO_POM_POM, + //NATIONAL_DEX_ORICORIO_PAU, + //NATIONAL_DEX_ORICORIO_SENSU, NATIONAL_DEX_SALANDIT, - //NATIONAL_DEX_TOGEDEMARU, // Totem-sized + //NATIONAL_DEX_TOGEDEMARU_TOTEM_SIZED, NATIONAL_DEX_JANGMO_O, NATIONAL_DEX_POIPOLE, NATIONAL_DEX_RABOOT, @@ -2336,18 +3336,28 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_CLOBBOPUS, NATIONAL_DEX_HATTREM, NATIONAL_DEX_KUBFU, + NATIONAL_DEX_DOLLIV, + NATIONAL_DEX_SQUAWKABILLY,//_GREEN_PLUMAGE, + //NATIONAL_DEX_SQUAWKABILLY_BLUE_PLUMAGE, + //NATIONAL_DEX_SQUAWKABILLY_YELLOW_PLUMAGE, + //NATIONAL_DEX_SQUAWKABILLY_WHITE_PLUMAGE, + NATIONAL_DEX_NACLSTACK, + NATIONAL_DEX_CHARCADET, + NATIONAL_DEX_BRAMBLIN, + NATIONAL_DEX_GREAVARD, + NATIONAL_DEX_IRON_BUNDLE, // 2'04" / 0.7m NATIONAL_DEX_BULBASAUR, NATIONAL_DEX_METAPOD, NATIONAL_DEX_RATICATE, - //NATIONAL_DEX_RATICATE, // Alolan Form - //NATIONAL_DEX_RAICHU, // Alolan Form - //NATIONAL_DEX_SANDSHREW, // Alolan Form + //NATIONAL_DEX_RATICATE_ALOLAN, + //NATIONAL_DEX_RAICHU_ALOLAN, + //NATIONAL_DEX_SANDSHREW_ALOLAN, NATIONAL_DEX_DUGTRIO, - //NATIONAL_DEX_DUGTRIO, // Alolan Form + //NATIONAL_DEX_DUGTRIO_ALOLAN, NATIONAL_DEX_GROWLITHE, NATIONAL_DEX_BELLSPROUT, - //NATIONAL_DEX_GRIMER, // Alolan Form + //NATIONAL_DEX_GRIMER_ALOLAN, NATIONAL_DEX_HOOTHOOT, NATIONAL_DEX_MISDREAVUS, NATIONAL_DEX_SLUGMA, @@ -2369,17 +3379,17 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_EXCADRILL, NATIONAL_DEX_WHIMSICOTT, NATIONAL_DEX_SANDILE, - //NATIONAL_DEX_DARUMAKA, // Galarian Form + //NATIONAL_DEX_DARUMAKA_GALARIAN, NATIONAL_DEX_TIRTOUGA, NATIONAL_DEX_ZORUA, - //NATIONAL_DEX_ZORUA, // Hisuian Form + //NATIONAL_DEX_ZORUA_HISUIAN, NATIONAL_DEX_GOTHORITA, NATIONAL_DEX_STUNFISK, - //NATIONAL_DEX_STUNFISK, // Galarian Form + //NATIONAL_DEX_STUNFISK_GALARIAN, NATIONAL_DEX_QUILLADIN, NATIONAL_DEX_FLETCHINDER, - //NATIONAL_DEX_SLIGGOO, // Hisuian Form - //NATIONAL_DEX_GOURGEIST, // Small Size + //NATIONAL_DEX_SLIGGOO_HISUIAN, + //NATIONAL_DEX_GOURGEIST_SMALL, NATIONAL_DEX_DIANCIE, NATIONAL_DEX_DARTRIX, NATIONAL_DEX_TORRACAT, @@ -2390,6 +3400,10 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_THWACKEY, NATIONAL_DEX_DRIZZILE, NATIONAL_DEX_SIZZLIPEDE, + NATIONAL_DEX_GRAFAIAI, + NATIONAL_DEX_TINKATUFF, + NATIONAL_DEX_TINKATON, + NATIONAL_DEX_GLIMMET, // 2'07" / 0.8m NATIONAL_DEX_RAICHU, NATIONAL_DEX_NIDORINA, @@ -2397,9 +3411,9 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_GLOOM, NATIONAL_DEX_PSYDUCK, NATIONAL_DEX_MACHOP, - //NATIONAL_DEX_PONYTA, // Galarian Form + //NATIONAL_DEX_PONYTA_GALARIAN, NATIONAL_DEX_FARFETCHD, - //NATIONAL_DEX_FARFETCHD, // Galarian Form + //NATIONAL_DEX_FARFETCHD_GALARIAN, NATIONAL_DEX_STARYU, NATIONAL_DEX_JOLTEON, NATIONAL_DEX_PORYGON, @@ -2436,14 +3450,15 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_TYRUNT, NATIONAL_DEX_HAWLUCHA, NATIONAL_DEX_SLIGGOO, - //NATIONAL_DEX_PUMPKABOO, // Super Size - NATIONAL_DEX_LYCANROC, // Midday Form - //NATIONAL_DEX_LYCANROC, // Dusk Form + //NATIONAL_DEX_PUMPKABOO_SUPER, + NATIONAL_DEX_LYCANROC,//_MIDDAY, + //NATIONAL_DEX_LYCANROC_DUSK, NATIONAL_DEX_CORVISQUIRE, NATIONAL_DEX_CRAMORANT, NATIONAL_DEX_MORGREM, NATIONAL_DEX_PERRSERKER, NATIONAL_DEX_SIRFETCHD, + NATIONAL_DEX_ARCTIBAX, // 2'11" / 0.9m NATIONAL_DEX_NIDORINO, NATIONAL_DEX_ABRA, @@ -2455,7 +3470,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_QUILAVA, NATIONAL_DEX_ESPEON, NATIONAL_DEX_SNEASEL, - //NATIONAL_DEX_SNEASEL, //Hisuian Form + //NATIONAL_DEX_SNEASEL_HISUIAN, NATIONAL_DEX_OCTILLERY, NATIONAL_DEX_DELIBIRD, NATIONAL_DEX_GROVYLE, @@ -2468,8 +3483,8 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_ROSERADE, NATIONAL_DEX_CRANIDOS, NATIONAL_DEX_MOTHIM, - NATIONAL_DEX_GASTRODON, // West Sea - //NATIONAL_DEX_GASTRODON, // East Sea + NATIONAL_DEX_GASTRODON,//_WEST_SEA, + //NATIONAL_DEX_GASTRODON_EAST_SEA, NATIONAL_DEX_MISMAGIUS, NATIONAL_DEX_HONCHKROW, NATIONAL_DEX_PORYGON_Z, @@ -2478,10 +3493,16 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_SWOOBAT, NATIONAL_DEX_MIENFOO, NATIONAL_DEX_SKIDDO, - NATIONAL_DEX_GOURGEIST, // Average Size + NATIONAL_DEX_GOURGEIST,//_AVERAGE, NATIONAL_DEX_LURANTIS, NATIONAL_DEX_BRUXISH, - NATIONAL_DEX_INDEEDEE, + NATIONAL_DEX_INDEEDEE,//_MALE, + //NATIONAL_DEX_INDEEDEE_FEMALE, + NATIONAL_DEX_FLORAGATO, + NATIONAL_DEX_PAWMOT, + NATIONAL_DEX_TOEDSCOOL, + NATIONAL_DEX_SCOVILLAIN, + NATIONAL_DEX_IRON_TREADS, // 3'03" / 1.0m NATIONAL_DEX_IVYSAUR, NATIONAL_DEX_WARTORTLE, @@ -2495,13 +3516,13 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_POLIWHIRL, NATIONAL_DEX_WEEPINBELL, NATIONAL_DEX_GRAVELER, - //NATIONAL_DEX_GRAVELER, // Alolan Form + //NATIONAL_DEX_GRAVELER_ALOLAN, NATIONAL_DEX_PONYTA, NATIONAL_DEX_MAGNETON, - //NATIONAL_DEX_MUK, // Alolan Form + //NATIONAL_DEX_MUK_ALOLAN, NATIONAL_DEX_DROWZEE, NATIONAL_DEX_MAROWAK, - //NATIONAL_DEX_MAROWAK, // Alolan Form + //NATIONAL_DEX_MAROWAK_ALOLAN, NATIONAL_DEX_RHYHORN, NATIONAL_DEX_TANGELA, NATIONAL_DEX_VAPOREON, @@ -2514,7 +3535,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_LOUDRED, NATIONAL_DEX_MAKUHITA, NATIONAL_DEX_NOSEPASS, - //NATIONAL_DEX_MAWILE, // Mega + //NATIONAL_DEX_MAWILE_MEGA, NATIONAL_DEX_LUNATONE, NATIONAL_DEX_LILEEP, NATIONAL_DEX_KECLEON, @@ -2530,8 +3551,9 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_PIGNITE, NATIONAL_DEX_SIMISEAR, NATIONAL_DEX_SIMIPOUR, - NATIONAL_DEX_BASCULIN, // Red-Striped Form - //NATIONAL_DEX_BASCULIN, // Blue-Striped Form + NATIONAL_DEX_BASCULIN,//_RED_STRIPED, + //NATIONAL_DEX_BASCULIN_BLUE_STRIPED, + //NATIONAL_DEX_BASCULIN_WHITE_STRIPED, NATIONAL_DEX_KROKOROK, NATIONAL_DEX_MARACTUS, NATIONAL_DEX_REUNICLUS, @@ -2549,17 +3571,24 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_MUDBRAY, NATIONAL_DEX_SHIINOTIC, NATIONAL_DEX_MAGEARNA, - //NATIONAL_DEX_MAGEARNA, // Original Color + //NATIONAL_DEX_MAGEARNA_ORIGINAL_COLOR, NATIONAL_DEX_DREDNAW, NATIONAL_DEX_BOLTUND, NATIONAL_DEX_CURSOLA, + NATIONAL_DEX_CROCALOR, + NATIONAL_DEX_OINKOLOGNE,//_MALE, + //NATIONAL_DEX_OINKOLOGNE_FEMALE, + NATIONAL_DEX_SPIDOPS, + NATIONAL_DEX_LOKIX, + NATIONAL_DEX_VAROOM, + NATIONAL_DEX_MUNKIDORI, // 3'07" / 1.1m NATIONAL_DEX_CHARMELEON, NATIONAL_DEX_BUTTERFREE, NATIONAL_DEX_PIDGEOTTO, NATIONAL_DEX_NINETALES, - //NATIONAL_DEX_NINETALES, // Alolan Form - //NATIONAL_DEX_PERSIAN, // Alolan Form + //NATIONAL_DEX_NINETALES_ALOLAN, + //NATIONAL_DEX_PERSIAN_ALOLAN, NATIONAL_DEX_SEEL, NATIONAL_DEX_CHANSEY, NATIONAL_DEX_STARMIE, @@ -2591,23 +3620,28 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_VANILLISH, NATIONAL_DEX_CRYOGONAL, NATIONAL_DEX_LARVESTA, - NATIONAL_DEX_FLORGES, - //NATIONAL_DEX_GOURGEIST, // Large Size - //NATIONAL_DEX_DIANCIE, // Mega + NATIONAL_DEX_FLORGES,//_RED_FLOWER, + //NATIONAL_DEX_FLORGES_YELLOW_FLOWER, + //NATIONAL_DEX_FLORGES_ORANGE_FLOWER, + //NATIONAL_DEX_FLORGES_BLUE_FLOWER, + //NATIONAL_DEX_FLORGES_WHITE_FLOWER, + //NATIONAL_DEX_GOURGEIST_LARGE, + //NATIONAL_DEX_DIANCIE_MEGA, NATIONAL_DEX_TOUCANNON, - //NATIONAL_DEX_LYCANROC, // Midnight Form + //NATIONAL_DEX_LYCANROC_MIDNIGHT, NATIONAL_DEX_CARKOL, NATIONAL_DEX_CALYREX, + NATIONAL_DEX_MABOSSTIFF, // 3'11" / 1.2m NATIONAL_DEX_FEAROW, - //NATIONAL_DEX_SANDSLASH, // Alolan Form + //NATIONAL_DEX_SANDSLASH_ALOLAN, NATIONAL_DEX_VILEPLUME, - //NATIONAL_DEX_ALAKAZAM, // Mega + //NATIONAL_DEX_ALAKAZAM_MEGA, NATIONAL_DEX_SLOWPOKE, - //NATIONAL_DEX_SLOWPOKE, // Galarian Form + //NATIONAL_DEX_SLOWPOKE_GALARIAN, NATIONAL_DEX_MUK, NATIONAL_DEX_ELECTRODE, - //NATIONAL_DEX_ELECTRODE, //Hisuian Form + //NATIONAL_DEX_ELECTRODE_HISUIAN, NATIONAL_DEX_LICKITUNG, NATIONAL_DEX_WEEZING, NATIONAL_DEX_SEADRA, @@ -2624,9 +3658,9 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_PELIPPER, NATIONAL_DEX_BRELOOM, NATIONAL_DEX_SOLROCK, - //NATIONAL_DEX_BANETTE, // Mega + //NATIONAL_DEX_BANETTE_MEGA, NATIONAL_DEX_ABSOL, - //NATIONAL_DEX_ABSOL, // Mega + //NATIONAL_DEX_ABSOL_MEGA, NATIONAL_DEX_METANG, NATIONAL_DEX_INFERNAPE, NATIONAL_DEX_STARAPTOR, @@ -2642,7 +3676,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_GURDURR, NATIONAL_DEX_LEAVANNY, NATIONAL_DEX_WHIRLIPEDE, - //NATIONAL_DEX_LILLIGANT, //Hisuian Form + //NATIONAL_DEX_LILLIGANT_HISUIAN, NATIONAL_DEX_CARRACOSTA, NATIONAL_DEX_FRILLISH, NATIONAL_DEX_ALOMOMOLA, @@ -2650,8 +3684,18 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_MANDIBUZZ, NATIONAL_DEX_TALONFLAME, NATIONAL_DEX_VIVILLON, - NATIONAL_DEX_FURFROU, - //NATIONAL_DEX_ZYGARDE, // 10% Forme + NATIONAL_DEX_FURFROU,//_NATURAL, + //NATIONAL_DEX_FURFROU_HEART_TRIM, + //NATIONAL_DEX_FURFROU_STAR_TRIM, + //NATIONAL_DEX_FURFROU_DIAMOND_TRIM, + //NATIONAL_DEX_FURFROU_DEBUTANTE_TRIM, + //NATIONAL_DEX_FURFROU_MATRON_TRIM, + //NATIONAL_DEX_FURFROU_DANDY_TRIM, + //NATIONAL_DEX_FURFROU_LA_REINE_TRIM, + //NATIONAL_DEX_FURFROU_KABUKI_TRIM, + //NATIONAL_DEX_FURFROU_PHARAOH_TRIM, + //NATIONAL_DEX_ZYGARDE_10, + //NATIONAL_DEX_ZYGARDE_10_POWER_CONSTRUCT, NATIONAL_DEX_SALAZZLE, NATIONAL_DEX_TSAREENA, NATIONAL_DEX_HAKAMO_O, @@ -2660,6 +3704,18 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_THIEVUL, NATIONAL_DEX_CUFANT, NATIONAL_DEX_REGIELEKI, + NATIONAL_DEX_QUAXWELL, + NATIONAL_DEX_BELLIBOLT, + NATIONAL_DEX_BRAMBLEGHAST, + NATIONAL_DEX_WIGLETT, + NATIONAL_DEX_WUGTRIO, + NATIONAL_DEX_CETODDLE, + NATIONAL_DEX_ANNIHILAPE, + NATIONAL_DEX_SCREAM_TAIL, + NATIONAL_DEX_BRUTE_BONNET, + NATIONAL_DEX_IRON_MOTH, + NATIONAL_DEX_GHOLDENGO, + NATIONAL_DEX_OGERPON, // 4'03" / 1.3m NATIONAL_DEX_NIDOQUEEN, NATIONAL_DEX_CLEFABLE, @@ -2674,21 +3730,22 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_WOBBUFFET, NATIONAL_DEX_SHIFTRY, NATIONAL_DEX_MEDICHAM, - //NATIONAL_DEX_MEDICHAM, // Mega + //NATIONAL_DEX_MEDICHAM_MEGA, NATIONAL_DEX_CACTURNE, NATIONAL_DEX_ZANGOOSE, NATIONAL_DEX_BASTIODON, - //NATIONAL_DEX_LOPUNNY, // Mega + //NATIONAL_DEX_LOPUNNY_MEGA, NATIONAL_DEX_BRONZONG, - //NATIONAL_DEX_LUCARIO, // Mega + //NATIONAL_DEX_LUCARIO_MEGA, NATIONAL_DEX_DRAPION, NATIONAL_DEX_TOXICROAK, NATIONAL_DEX_FROSLASS, NATIONAL_DEX_THROH, - NATIONAL_DEX_DARMANITAN, + NATIONAL_DEX_DARMANITAN,//_STANDARD_MODE, + //NATIONAL_DEX_DARMANITAN_ZEN_MODE, NATIONAL_DEX_SWANNA, NATIONAL_DEX_VANILLUXE, - //NATIONAL_DEX_LANDORUS, // Therian Forme + //NATIONAL_DEX_LANDORUS_THERIAN, NATIONAL_DEX_BARBARACLE, NATIONAL_DEX_CLAWITZER, NATIONAL_DEX_AMAURA, @@ -2698,20 +3755,27 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_BARRASKEWDA, NATIONAL_DEX_FROSMOTH, NATIONAL_DEX_SNEASLER, + NATIONAL_DEX_KLAWF, + NATIONAL_DEX_FINIZEN, + NATIONAL_DEX_PALAFIN,//_ZERO, + NATIONAL_DEX_IRON_JUGULIS, // 4'07" / 1.4m - //NATIONAL_DEX_BEEDRILL, // Mega - //NATIONAL_DEX_RATICATE, // Alolan Form, Totem-sized + //NATIONAL_DEX_BEEDRILL_MEGA, + //NATIONAL_DEX_RATICATE_ALOLAN_TOTEM_SIZED, NATIONAL_DEX_NIDOKING, NATIONAL_DEX_GOLEM, NATIONAL_DEX_DODUO, - //NATIONAL_DEX_GENGAR, // Mega + //NATIONAL_DEX_GENGAR_MEGA, NATIONAL_DEX_HITMONCHAN, - //NATIONAL_DEX_MR_MIME, // Galarian Form + //NATIONAL_DEX_MR_MIME_GALARIAN, NATIONAL_DEX_JYNX, NATIONAL_DEX_TAUROS, + //NATIONAL_DEX_TAUROS_PALDEAN_COMBAT_BREED, + //NATIONAL_DEX_TAUROS_PALDEAN_BLAZE_BREED, + //NATIONAL_DEX_TAUROS_PALDEAN_AQUA_BREED, NATIONAL_DEX_LEDIAN, NATIONAL_DEX_AMPHAROS, - //NATIONAL_DEX_AMPHAROS, // Mega + //NATIONAL_DEX_AMPHAROS_MEGA, NATIONAL_DEX_QUAGSIRE, NATIONAL_DEX_GRANBULL, NATIONAL_DEX_HOUNDOOM, @@ -2725,20 +3789,28 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_CARNIVINE, NATIONAL_DEX_PROBOPASS, NATIONAL_DEX_SAWK, - //NATIONAL_DEX_DARMANITAN, // Galarian Form + //NATIONAL_DEX_DARMANITAN_GALARIAN_STANDARD_MODE, + //NATIONAL_DEX_DARMANITAN_GALARIAN_ZEN_MODE, NATIONAL_DEX_CRUSTLE, NATIONAL_DEX_SIGILYPH, NATIONAL_DEX_ARCHEOPS, NATIONAL_DEX_MIENSHAO, NATIONAL_DEX_HEATMOR, NATIONAL_DEX_ZWEILOUS, - //NATIONAL_DEX_TORNADUS, // Therian Forme - NATIONAL_DEX_KELDEO, - //NATIONAL_DEX_AVALUGG, // Hisuian Form - //NATIONAL_DEX_GUMSHOOS, // Totem-sized + //NATIONAL_DEX_TORNADUS_THERIAN, + NATIONAL_DEX_KELDEO,//_ORDINARY, + //NATIONAL_DEX_KELDEO_RESOLUTE, + //NATIONAL_DEX_AVALUGG_HISUIAN, + //NATIONAL_DEX_GUMSHOOS_TOTEM_SIZED, NATIONAL_DEX_CINDERACE, - NATIONAL_DEX_EISCUE, + NATIONAL_DEX_EISCUE,//_ICE_FACE, + //NATIONAL_DEX_EISCUE_NOICE_FACE, NATIONAL_DEX_DRAKLOAK, + NATIONAL_DEX_ARBOLIVA, + NATIONAL_DEX_KILOWATTREL, + NATIONAL_DEX_FLUTTER_MANE, + NATIONAL_DEX_IRON_VALIANT, + NATIONAL_DEX_FEZANDIPITI, // 4'11" / 1.5m NATIONAL_DEX_PIDGEOT, NATIONAL_DEX_VENOMOTH, @@ -2749,7 +3821,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_HITMONLEE, NATIONAL_DEX_SCYTHER, NATIONAL_DEX_PINSIR, - //NATIONAL_DEX_MEWTWO, // Mega Y + //NATIONAL_DEX_MEWTWO_MEGA_Y, NATIONAL_DEX_XATU, NATIONAL_DEX_GIRAFARIG, NATIONAL_DEX_DUNSPARCE, @@ -2759,7 +3831,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_LUDICOLO, NATIONAL_DEX_EXPLOUD, NATIONAL_DEX_MANECTRIC, - //NATIONAL_DEX_ALTARIA, // Mega + //NATIONAL_DEX_ALTARIA_MEGA, NATIONAL_DEX_CLAYDOL, NATIONAL_DEX_CRADILY, NATIONAL_DEX_ARMALDO, @@ -2769,105 +3841,118 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_CRESSELIA, NATIONAL_DEX_DARKRAI, NATIONAL_DEX_SAMUROTT, - //NATIONAL_DEX_SAMUROTT, // Hisuian Form - //NATIONAL_DEX_AUDINO, // Mega + //NATIONAL_DEX_SAMUROTT_HISUIAN, + //NATIONAL_DEX_AUDINO_MEGA, NATIONAL_DEX_CONKELDURR, NATIONAL_DEX_SEISMITOAD, NATIONAL_DEX_KROOKODILE, NATIONAL_DEX_GOTHITELLE, NATIONAL_DEX_BRAVIARY, - NATIONAL_DEX_TORNADUS, // Incarnate Forme - NATIONAL_DEX_THUNDURUS, // Incarnate Forme - NATIONAL_DEX_LANDORUS, // Incarnate Forme + NATIONAL_DEX_TORNADUS,//_INCARNATE, + NATIONAL_DEX_THUNDURUS,//_INCARNATE, + NATIONAL_DEX_LANDORUS,//_INCARNATE, NATIONAL_DEX_GENESECT, NATIONAL_DEX_DELPHOX, NATIONAL_DEX_GRENINJA, - //NATIONAL_DEX_GRENINJA, // Ash-Greninja + //NATIONAL_DEX_GRENINJA_ASH, NATIONAL_DEX_PYROAR, NATIONAL_DEX_MALAMAR, NATIONAL_DEX_TREVENANT, NATIONAL_DEX_NOIVERN, NATIONAL_DEX_VIKAVOLT, - //NATIONAL_DEX_LURANTIS, // Totem-sized + //NATIONAL_DEX_LURANTIS_TOTEM_SIZED, NATIONAL_DEX_ORANGURU, NATIONAL_DEX_ZERAORA, NATIONAL_DEX_GRIMMSNARL, NATIONAL_DEX_MR_RIME, + NATIONAL_DEX_MEOWSCARADA, + NATIONAL_DEX_ARMAROUGE, + NATIONAL_DEX_BOMBIRDIER, + NATIONAL_DEX_GLIMMORA, + NATIONAL_DEX_WO_CHIEN, + NATIONAL_DEX_IRON_LEAVES, // 5'03" / 1.6m NATIONAL_DEX_BLASTOISE, - //NATIONAL_DEX_BLASTOISE, // Mega + //NATIONAL_DEX_BLASTOISE_MEGA, NATIONAL_DEX_GOLBAT, NATIONAL_DEX_MACHAMP, NATIONAL_DEX_TENTACRUEL, NATIONAL_DEX_SLOWBRO, - //NATIONAL_DEX_SLOWBRO, // Galarian Form + //NATIONAL_DEX_SLOWBRO_GALARIAN, NATIONAL_DEX_HAUNTER, NATIONAL_DEX_HYPNO, NATIONAL_DEX_ZAPDOS, - //NATIONAL_DEX_ZAPDOS, // Galarian Form - //NATIONAL_DEX_TYPHLOSION, // Hisuian Form + //NATIONAL_DEX_ZAPDOS_GALARIAN, + //NATIONAL_DEX_TYPHLOSION_HISUIAN, NATIONAL_DEX_NOCTOWL, NATIONAL_DEX_GARDEVOIR, - //NATIONAL_DEX_GARDEVOIR, // Mega + //NATIONAL_DEX_GARDEVOIR_MEGA, NATIONAL_DEX_DUSCLOPS, NATIONAL_DEX_METAGROSS, NATIONAL_DEX_RAMPARDOS, NATIONAL_DEX_MAGMORTAR, NATIONAL_DEX_GALLADE, - //NATIONAL_DEX_GALLADE, // Mega + //NATIONAL_DEX_GALLADE_MEGA, NATIONAL_DEX_EMBOAR, NATIONAL_DEX_ZEBSTRIKA, NATIONAL_DEX_ZOROARK, - //NATIONAL_DEX_ZOROARK, // Hisuian Form + //NATIONAL_DEX_ZOROARK_HISUIAN, NATIONAL_DEX_DRUDDIGON, NATIONAL_DEX_BISHARP, NATIONAL_DEX_BOUFFALANT, - //NATIONAL_DEX_BRAVIARY, // Hisuian Form + //NATIONAL_DEX_BRAVIARY_HISUIAN, NATIONAL_DEX_VOLCARONA, NATIONAL_DEX_CHESNAUGHT, NATIONAL_DEX_DECIDUEYE, - //NATIONAL_DEX_DECIDUEYE, // Hisuian Form + //NATIONAL_DEX_DECIDUEYE_HISUIAN, NATIONAL_DEX_KOMMO_O, - NATIONAL_DEX_TOXTRICITY, + NATIONAL_DEX_TOXTRICITY,//_AMPED, + //NATIONAL_DEX_TOXTRICITY_LOW_KEY, NATIONAL_DEX_GRAPPLOCT, NATIONAL_DEX_OBSTAGOON, NATIONAL_DEX_RUNERIGUS, - NATIONAL_DEX_ENAMORUS, - //NATIONAL_DEX_ENAMORUS, //Therian Form + NATIONAL_DEX_ENAMORUS,//_INCARNATE, + //NATIONAL_DEX_ENAMORUS_THERIAN, + NATIONAL_DEX_SKELEDIRGE, + NATIONAL_DEX_CERULEDGE, + NATIONAL_DEX_CYCLIZAR, + NATIONAL_DEX_FLAMIGO, + NATIONAL_DEX_IRON_THORNS, // 5'07" / 1.7m NATIONAL_DEX_CHARIZARD, - //NATIONAL_DEX_CHARIZARD, // Mega X - //NATIONAL_DEX_CHARIZARD, // Mega Y + //NATIONAL_DEX_CHARIZARD_MEGA_X, + //NATIONAL_DEX_CHARIZARD_MEGA_Y, NATIONAL_DEX_GOLDUCK, NATIONAL_DEX_VICTREEBEL, - //NATIONAL_DEX_GOLEM, // Alolan Form + //NATIONAL_DEX_GOLEM_ALOLAN, NATIONAL_DEX_RAPIDASH, - //NATIONAL_DEX_RAPIDASH, // Galarian Form + //NATIONAL_DEX_RAPIDASH_GALARIAN, NATIONAL_DEX_DEWGONG, - //NATIONAL_DEX_MAROWAK, // Alolan Form, Totem-sized - //NATIONAL_DEX_PINSIR, // Mega + //NATIONAL_DEX_MAROWAK_ALOLAN_TOTEM_SIZED, + //NATIONAL_DEX_PINSIR_MEGA, NATIONAL_DEX_ARTICUNO, - //NATIONAL_DEX_ARTICUNO, // Galarian Form + //NATIONAL_DEX_ARTICUNO_GALARIAN, NATIONAL_DEX_TYPHLOSION, - //NATIONAL_DEX_HERACROSS, // Mega + //NATIONAL_DEX_HERACROSS_MEGA, NATIONAL_DEX_SKARMORY, NATIONAL_DEX_SCEPTILE, NATIONAL_DEX_SWALOT, NATIONAL_DEX_HUNTAIL, NATIONAL_DEX_REGIROCK, - NATIONAL_DEX_DEOXYS, // Normal Forme - //NATIONAL_DEX_DEOXYS, // Attack Forme - //NATIONAL_DEX_DEOXYS, // Defense Forme - //NATIONAL_DEX_DEOXYS, // Speed Forme + NATIONAL_DEX_DEOXYS,//_NORMAL, + //NATIONAL_DEX_DEOXYS_ATTACK, + //NATIONAL_DEX_DEOXYS_DEFENSE, + //NATIONAL_DEX_DEOXYS_SPEED, NATIONAL_DEX_EMPOLEON, NATIONAL_DEX_LICKILICKY, NATIONAL_DEX_HEATRAN, NATIONAL_DEX_GIGALITH, NATIONAL_DEX_COFAGRIGUS, NATIONAL_DEX_GOGOAT, - NATIONAL_DEX_AEGISLASH, - //NATIONAL_DEX_GOODRA, //Hisuian Form - //NATIONAL_DEX_GOURGEIST, // Super Size + NATIONAL_DEX_AEGISLASH,//_SHIELD, + //NATIONAL_DEX_AEGISLASH_BLADE, + //NATIONAL_DEX_GOODRA_HISUIAN, + //NATIONAL_DEX_GOURGEIST_SUPER, NATIONAL_DEX_VOLCANION, NATIONAL_DEX_CRABOMINABLE, // 5'11" / 1.8m @@ -2877,16 +3962,16 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_MEGANIUM, NATIONAL_DEX_FURRET, NATIONAL_DEX_CROBAT, - //NATIONAL_DEX_SLOWKING, // Galarian Form + //NATIONAL_DEX_SLOWKING_GALARIAN, NATIONAL_DEX_SCIZOR, NATIONAL_DEX_URSARING, NATIONAL_DEX_KINGDRA, - //NATIONAL_DEX_MANECTRIC, // Mega + //NATIONAL_DEX_MANECTRIC_MEGA, NATIONAL_DEX_SHARPEDO, NATIONAL_DEX_GOREBYSS, - //NATIONAL_DEX_SALAMENCE, // Mega + //NATIONAL_DEX_SALAMENCE_MEGA, NATIONAL_DEX_REGICE, - //NATIONAL_DEX_LATIAS, // Mega + //NATIONAL_DEX_LATIAS_MEGA, NATIONAL_DEX_ELECTIVIRE, NATIONAL_DEX_HAXORUS, NATIONAL_DEX_HYDREIGON, @@ -2902,39 +3987,51 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_ZARUDE, NATIONAL_DEX_WYRDEER, NATIONAL_DEX_KLEAVOR, + NATIONAL_DEX_QUAQUAVAL, + //NATIONAL_DEX_PALAFIN_HERO, + NATIONAL_DEX_REVAVROOM, + NATIONAL_DEX_CLODSIRE, + NATIONAL_DEX_IRON_HANDS, + NATIONAL_DEX_OKIDOGI, // 6'03" / 1.9m NATIONAL_DEX_ARCANINE, NATIONAL_DEX_RHYDON, - //NATIONAL_DEX_HOUNDOOM, // Mega + //NATIONAL_DEX_HOUNDOOM_MEGA, NATIONAL_DEX_RAIKOU, - //NATIONAL_DEX_SCEPTILE, // Mega + //NATIONAL_DEX_SCEPTILE_MEGA, NATIONAL_DEX_BLAZIKEN, - //NATIONAL_DEX_BLAZIKEN, // Mega - //NATIONAL_DEX_SWAMPERT, // Mega + //NATIONAL_DEX_BLAZIKEN_MEGA, + //NATIONAL_DEX_SWAMPERT_MEGA, NATIONAL_DEX_CAMERUPT, NATIONAL_DEX_REGISTEEL, NATIONAL_DEX_GARCHOMP, - //NATIONAL_DEX_GARCHOMP, // Mega + //NATIONAL_DEX_GARCHOMP_MEGA, NATIONAL_DEX_YANMEGA, NATIONAL_DEX_GARBODOR, - NATIONAL_DEX_SAWSBUCK, + NATIONAL_DEX_SAWSBUCK,//_SPRING, + //NATIONAL_DEX_SAWSBUCK_SUMMER, + //NATIONAL_DEX_SAWSBUCK_AUTUMN, + //NATIONAL_DEX_SAWSBUCK_WINTER, NATIONAL_DEX_TERRAKION, NATIONAL_DEX_TYPE_NULL, NATIONAL_DEX_TAPU_BULU, NATIONAL_DEX_INTELEON, - NATIONAL_DEX_URSHIFU, // Single Strike Style - //NATIONAL_DEX_URSHIFU, // Rapid Strike Style + NATIONAL_DEX_URSHIFU,//_SINGLE_STRIKE_STYLE, + //NATIONAL_DEX_URSHIFU_RAPID_STRIKE_STYLE, + NATIONAL_DEX_TOEDSCRUEL, + NATIONAL_DEX_ESPATHRA, + NATIONAL_DEX_CHIEN_PAO, // 6'07" / 2.0m NATIONAL_DEX_VENUSAUR, NATIONAL_DEX_EKANS, - //NATIONAL_DEX_ARCANINE, //Hisuian Form - //NATIONAL_DEX_SLOWBRO, // Mega + //NATIONAL_DEX_ARCANINE_HISUIAN, + //NATIONAL_DEX_SLOWBRO_MEGA, NATIONAL_DEX_EXEGGUTOR, NATIONAL_DEX_MOLTRES, - //NATIONAL_DEX_MOLTRES, // Galarian Form + //NATIONAL_DEX_MOLTRES_GALARIAN, NATIONAL_DEX_MEWTWO, NATIONAL_DEX_SLOWKING, - //NATIONAL_DEX_SCIZOR, // Mega + //NATIONAL_DEX_SCIZOR_MEGA, NATIONAL_DEX_SUICUNE, NATIONAL_DEX_TYRANITAR, NATIONAL_DEX_SLAKING, @@ -2953,57 +4050,81 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_TURTONATOR, NATIONAL_DEX_ARCTOVISH, NATIONAL_DEX_SPECTRIER, + NATIONAL_DEX_HOUNDSTONE, + NATIONAL_DEX_KINGAMBIT, + NATIONAL_DEX_ROARING_MOON, // 6'11" / 2.1m - //NATIONAL_DEX_AERODACTYL, // Mega + //NATIONAL_DEX_AERODACTYL_MEGA, NATIONAL_DEX_SNORLAX, NATIONAL_DEX_MANTINE, NATIONAL_DEX_ENTEI, NATIONAL_DEX_AGGRON, - //NATIONAL_DEX_GLALIE, // Mega + //NATIONAL_DEX_GLALIE_MEGA, NATIONAL_DEX_EELEKTROSS, NATIONAL_DEX_COBALION, NATIONAL_DEX_PANGORO, - //NATIONAL_DEX_SALAZZLE, // Totem-sized + //NATIONAL_DEX_SALAZZLE_TOTEM_SIZED, NATIONAL_DEX_BEWEAR, NATIONAL_DEX_RILLABOOM, NATIONAL_DEX_HATTERENE, NATIONAL_DEX_REGIDRAGO, + NATIONAL_DEX_BAXCALIBUR, // 7'03" / 2.2m - //NATIONAL_DEX_PIDGEOT, // Mega + //NATIONAL_DEX_PIDGEOT_MEGA, NATIONAL_DEX_KANGASKHAN, - //NATIONAL_DEX_KANGASKHAN, // Mega + //NATIONAL_DEX_KANGASKHAN_MEGA, NATIONAL_DEX_DRAGONITE, - //NATIONAL_DEX_AGGRON, // Mega + //NATIONAL_DEX_AGGRON_MEGA, NATIONAL_DEX_TORTERRA, NATIONAL_DEX_ABOMASNOW, NATIONAL_DEX_DUSKNOIR, NATIONAL_DEX_JELLICENT, - //NATIONAL_DEX_KOMMO_O, // Totem-sized + //NATIONAL_DEX_KOMMO_O_TOTEM_SIZED, NATIONAL_DEX_CORVIKNIGHT, NATIONAL_DEX_SILICOBRA, NATIONAL_DEX_GLASTRIER, + NATIONAL_DEX_GREAT_TUSK, // 7'07" / 2.3m - //NATIONAL_DEX_MEWTWO, // Mega X + //NATIONAL_DEX_MEWTWO_MEGA_X, NATIONAL_DEX_FERALIGATR, NATIONAL_DEX_HARIYAMA, - //NATIONAL_DEX_LATIOS, // Mega - NATIONAL_DEX_SILVALLY, + //NATIONAL_DEX_LATIOS_MEGA, + NATIONAL_DEX_SILVALLY,//_NORMAL, + //NATIONAL_DEX_SILVALLY_FIGHTING, + //NATIONAL_DEX_SILVALLY_FLYING, + //NATIONAL_DEX_SILVALLY_POISON, + //NATIONAL_DEX_SILVALLY_GROUND, + //NATIONAL_DEX_SILVALLY_ROCK, + //NATIONAL_DEX_SILVALLY_BUG, + //NATIONAL_DEX_SILVALLY_GHOST, + //NATIONAL_DEX_SILVALLY_STEEL, + //NATIONAL_DEX_SILVALLY_FIRE, + //NATIONAL_DEX_SILVALLY_WATER, + //NATIONAL_DEX_SILVALLY_GRASS, + //NATIONAL_DEX_SILVALLY_ELECTRIC, + //NATIONAL_DEX_SILVALLY_PSYCHIC, + //NATIONAL_DEX_SILVALLY_ICE, + //NATIONAL_DEX_SILVALLY_DRAGON, + //NATIONAL_DEX_SILVALLY_DARK, + //NATIONAL_DEX_SILVALLY_FAIRY, NATIONAL_DEX_ARCTOZOLT, NATIONAL_DEX_DRACOVISH, + NATIONAL_DEX_GARGANACL, + NATIONAL_DEX_SANDY_SHOCKS, // 7'10" / 2.4m - //NATIONAL_DEX_VENUSAUR, // Mega + //NATIONAL_DEX_VENUSAUR_MEGA, NATIONAL_DEX_RHYPERIOR, NATIONAL_DEX_BUZZWOLE, NATIONAL_DEX_NECROZMA, - //NATIONAL_DEX_CALYREX, // Ice Rider - //NATIONAL_DEX_CALYREX, // Shadow Rider + //NATIONAL_DEX_CALYREX_ICE_RIDER, + //NATIONAL_DEX_CALYREX_SHADOW_RIDER, NATIONAL_DEX_URSALUNA, // 8'02" / 2.5m NATIONAL_DEX_LAPRAS, - //NATIONAL_DEX_TYRANITAR, // Mega - //NATIONAL_DEX_SHARPEDO, // Mega - //NATIONAL_DEX_CAMERUPT, // Mega - //NATIONAL_DEX_METAGROSS, // Mega + //NATIONAL_DEX_TYRANITAR_MEGA, + //NATIONAL_DEX_SHARPEDO_MEGA, + //NATIONAL_DEX_CAMERUPT_MEGA, + //NATIONAL_DEX_METAGROSS_MEGA, NATIONAL_DEX_MAMOSWINE, NATIONAL_DEX_SCOLIPEDE, NATIONAL_DEX_TYRANTRUM, @@ -3011,55 +4132,82 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_MELMETAL, NATIONAL_DEX_STONJOURNER, NATIONAL_DEX_OVERQWIL, + NATIONAL_DEX_ORTHWORM, + NATIONAL_DEX_VELUZA, + NATIONAL_DEX_KORAIDON, // 8'06" / 2.6m NATIONAL_DEX_BEARTIC, - //NATIONAL_DEX_VIKAVOLT, // Totem-sized + //NATIONAL_DEX_VIKAVOLT_TOTEM_SIZED, // 8'10" / 2.7m NATIONAL_DEX_SEVIPER, - //NATIONAL_DEX_ABOMASNOW, // Mega + //NATIONAL_DEX_ABOMASNOW_MEGA, NATIONAL_DEX_AURORUS, + NATIONAL_DEX_TING_LU, // 9'02" / 2.8m NATIONAL_DEX_GOLURK, NATIONAL_DEX_COALOSSAL, - NATIONAL_DEX_ZACIAN, // Hero of Many Battles - //NATIONAL_DEX_ZACIAN, // Crowned Sword + NATIONAL_DEX_ZACIAN,//_HERO_OF_MANY_BATTLES, + //NATIONAL_DEX_ZACIAN_CROWNED_SWORD, // 9'06" / 2.9m NATIONAL_DEX_ZEKROM, - NATIONAL_DEX_ZAMAZENTA, // Hero of Many Battles - //NATIONAL_DEX_ZAMAZENTA, // Crowned Shield + NATIONAL_DEX_ZAMAZENTA,//_HERO_OF_MANY_BATTLES, + //NATIONAL_DEX_ZAMAZENTA_CROWNED_SHIELD, // 9'10" / 3.0m - //NATIONAL_DEX_WEEZING, // Galarian Form - //NATIONAL_DEX_THUNDURUS, // Therian Form + //NATIONAL_DEX_WEEZING_GALARIAN, + //NATIONAL_DEX_THUNDURUS_THERIAN, NATIONAL_DEX_KYUREM, - NATIONAL_DEX_XERNEAS, + NATIONAL_DEX_XERNEAS,//_NEUTRAL, + //NATIONAL_DEX_XERNEAS_ACTIVE, NATIONAL_DEX_DRAMPA, NATIONAL_DEX_CENTISKORCH, NATIONAL_DEX_FALINKS, NATIONAL_DEX_COPPERAJAH, NATIONAL_DEX_DRAGAPULT, - NATIONAL_DEX_BASCULEGION, + NATIONAL_DEX_BASCULEGION,//_MALE, + //NATIONAL_DEX_BASCULEGION_FEMALE, // 10'02" / 3.1m - //NATIONAL_DEX_ARAQUANID, // Totem-sized + //NATIONAL_DEX_ARAQUANID_TOTEM_SIZED, // 10'06" / 3.2m - NATIONAL_DEX_ARCEUS, + NATIONAL_DEX_ARCEUS,//_NORMAL, + //NATIONAL_DEX_ARCEUS_FIGHTING, + //NATIONAL_DEX_ARCEUS_FLYING, + //NATIONAL_DEX_ARCEUS_POISON, + //NATIONAL_DEX_ARCEUS_GROUND, + //NATIONAL_DEX_ARCEUS_ROCK, + //NATIONAL_DEX_ARCEUS_BUG, + //NATIONAL_DEX_ARCEUS_GHOST, + //NATIONAL_DEX_ARCEUS_STEEL, + //NATIONAL_DEX_ARCEUS_FIRE, + //NATIONAL_DEX_ARCEUS_WATER, + //NATIONAL_DEX_ARCEUS_GRASS, + //NATIONAL_DEX_ARCEUS_ELECTRIC, + //NATIONAL_DEX_ARCEUS_PSYCHIC, + //NATIONAL_DEX_ARCEUS_ICE, + //NATIONAL_DEX_ARCEUS_DRAGON, + //NATIONAL_DEX_ARCEUS_DARK, NATIONAL_DEX_RESHIRAM, + NATIONAL_DEX_FARIGIRAF, + NATIONAL_DEX_SLITHER_WING, // 10'10" / 3.3m NATIONAL_DEX_SERPERIOR, - //NATIONAL_DEX_KYUREM, // Black + //NATIONAL_DEX_KYUREM_BLACK, // 11'02" / 3.4m NATIONAL_DEX_SOLGALEO, // 11'06" / 3.5m NATIONAL_DEX_ARBOK, NATIONAL_DEX_GROUDON, + NATIONAL_DEX_MIRAIDON, + NATIONAL_DEX_WALKING_WAKE, // 11'10" / 3.6m - //NATIONAL_DEX_KYUREM, // White + //NATIONAL_DEX_KYUREM_WHITE, NATIONAL_DEX_NAGANADEL, + NATIONAL_DEX_DUDUNSPARCE,//_TWO_SEGMENT, // 12'02" / 3.7m NATIONAL_DEX_REGIGIGAS, // 12'06" / 3.8m NATIONAL_DEX_HO_OH, NATIONAL_DEX_XURKITREE, - //NATIONAL_DEX_NECROZMA, // Dusk Mane + //NATIONAL_DEX_NECROZMA_DUSK_MANE, NATIONAL_DEX_SANDACONDA, // 12'10" / 3.9m NATIONAL_DEX_DHELMISE, @@ -3068,14 +4216,17 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_LUNALA, // 13'09" / 4.2m NATIONAL_DEX_PALKIA, - //NATIONAL_DEX_NECROZMA, // Dawn Wings + //NATIONAL_DEX_NECROZMA_DAWN_WINGS, // 14'09" / 4.5m NATIONAL_DEX_KYOGRE, - NATIONAL_DEX_GIRATINA, // Altered Forme - //NATIONAL_DEX_ZYGARDE, // Complete Forme + NATIONAL_DEX_GIRATINA,//_ALTERED, + //NATIONAL_DEX_ZYGARDE_COMPLETE, + NATIONAL_DEX_CETITAN, + //NATIONAL_DEX_DUDUNSPARCE_THREE_SEGMENT, // 16'05" / 5.0m - //NATIONAL_DEX_GROUDON, // Primal - NATIONAL_DEX_ZYGARDE, // 50% Forme + //NATIONAL_DEX_GROUDON_PRIMAL, + NATIONAL_DEX_ZYGARDE,//_50, + //NATIONAL_DEX_ZYGARDE_50_POWER_CONSTRUCT, // 17'01" / 5.2m NATIONAL_DEX_LUGIA, // 17'09" / 5.4m @@ -3087,37 +4238,39 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_YVELTAL, // 20'04" / 6.2m NATIONAL_DEX_MILOTIC, - //NATIONAL_DEX_PALKIA, //Origin Forme + //NATIONAL_DEX_PALKIA_ORIGIN, // 21'04" / 6.5m NATIONAL_DEX_GYARADOS, - //NATIONAL_DEX_GYARADOS, // Mega - //NATIONAL_DEX_HOOPA, // Unbound + //NATIONAL_DEX_GYARADOS_MEGA, + //NATIONAL_DEX_HOOPA_UNBOUND, // 22'08" / 6.9m - //NATIONAL_DEX_GIRATINA, // Origin Forme + //NATIONAL_DEX_GIRATINA_ORIGIN, // 23'00" / 7.0m NATIONAL_DEX_RAYQUAZA, - //NATIONAL_DEX_DIALGA, //Origin Forme + //NATIONAL_DEX_DIALGA_ORIGIN, // 24'07" / 7.5m - //NATIONAL_DEX_NECROZMA, // Ultra + //NATIONAL_DEX_NECROZMA_ULTRA, // 26'11" / 8.2m - //NATIONAL_DEX_WISHIWASHI, // School Form + //NATIONAL_DEX_WISHIWASHI_SCHOOL, // 28'10" / 8.8m NATIONAL_DEX_ONIX, // 30'02" / 9.2m NATIONAL_DEX_STEELIX, NATIONAL_DEX_CELESTEELA, // 32'02" / 9.8m - //NATIONAL_DEX_KYOGRE, // Primal + //NATIONAL_DEX_KYOGRE_PRIMAL, // 34'05" / 10.5m - //NATIONAL_DEX_STEELIX, // Mega + //NATIONAL_DEX_STEELIX_MEGA, // 35'05" / 10.8m - //NATIONAL_DEX_RAYQUAZA, // Mega + //NATIONAL_DEX_RAYQUAZA_MEGA, // 35'09" / 10.9m - //NATIONAL_DEX_EXEGGUTOR, // Alolan Form + //NATIONAL_DEX_EXEGGUTOR_ALOLAN, + // 12m + NATIONAL_DEX_DONDOZO, // 47'07" / 14.5m NATIONAL_DEX_WAILORD, // 65'07" / 20m NATIONAL_DEX_ETERNATUS, // 328'01" / 100m - //NATIONAL_DEX_ETERNATUS, // Eternamax + //NATIONAL_DEX_ETERNATUS_ETERNAMAX, }; diff --git a/src/data/pokemon/pokedex_text.h b/src/data/pokemon/pokedex_text.h deleted file mode 100644 index 5e28a204be..0000000000 --- a/src/data/pokemon/pokedex_text.h +++ /dev/null @@ -1,5401 +0,0 @@ -const u8 gDummyPokedexText[] = _( - "This is a newly discovered Pokémon.\n" - "It is currently under investigation.\n" - "No detailed information is available\n" - "at this time."); - -const u8 gBulbasaurPokedexText[] = _( - "Bulbasaur can be seen napping in bright\n" - "sunlight. There is a seed on its back.\n" - "By soaking up the sun's rays, the seed\n" - "grows progressively larger."); - -const u8 gIvysaurPokedexText[] = _( - "To support its bulb, Ivysaur's legs\n" - "grow sturdy. If it spends more time lying in\n" - "the sunlight, the bud will soon bloom into\n" - "a large flower."); - -const u8 gVenusaurPokedexText[] = _( - "Venusaur's flower is said to take on vivid\n" - "colors if it gets plenty of nutrition and\n" - "sunlight. The flower's aroma soothes the\n" - "emotions of people."); - -const u8 gCharmanderPokedexText[] = _( - "The flame that burns at the tip of its\n" - "tail is an indication of its emotions.\n" - "The flame wavers when Charmander is\n" - "happy, and blazes when it is enraged."); - -const u8 gCharmeleonPokedexText[] = _( - "Without pity, its sharp claws destroy foes.\n" - "If it encounters a strong enemy, it\n" - "becomes agitated, and the flame on its\n" - "tail flares with a bluish white color."); - -const u8 gCharizardPokedexText[] = _( - "A Charizard flies about in search of\n" - "strong opponents. It breathes intense\n" - "flames that can melt any material. However,\n" - "it will never torch a weaker foe."); - -const u8 gSquirtlePokedexText[] = _( - "Its shell is not just for protection.\n" - "Its rounded shape and the grooves on its\n" - "surface minimize resistance in water,\n" - "enabling Squirtle to swim at high speeds."); - -const u8 gWartortlePokedexText[] = _( - "Its large tail is covered with rich, thick\n" - "fur that deepens in color with age.\n" - "The scratches on its shell are evidence\n" - "of this Pokémon's toughness in battle."); - -const u8 gBlastoisePokedexText[] = _( - "The waterspouts that protrude from its\n" - "shell are highly accurate. Their bullets of\n" - "water can precisely nail tin cans from\n" - "a distance of over 160 feet."); - -const u8 gCaterpiePokedexText[] = _( - "Its voracious appetite compels it to\n" - "devour leaves bigger than itself without\n" - "hesitation. It releases a terribly strong\n" - "odor from its antennae."); - -const u8 gMetapodPokedexText[] = _( - "Its shell is as hard as an iron slab.\n" - "A Metapod does not move very much\n" - "because it is preparing its soft innards\n" - "for evolution inside the shell."); - -const u8 gButterfreePokedexText[] = _( - "It has a superior ability to search for\n" - "delicious honey from flowers. It can seek,\n" - "extract, and carry honey from flowers\n" - "blooming over six miles away."); - -const u8 gWeedlePokedexText[] = _( - "A Weedle has an extremely acute sense\n" - "of smell. It distinguishes its favorite\n" - "kinds of leaves from those it dislikes by\n" - "sniffing with its big red nose."); - -const u8 gKakunaPokedexText[] = _( - "It remains virtually immobile while it\n" - "clings to a tree. However, on the inside,\n" - "it busily prepares for evolution. This is\n" - "evident from how hot its shell becomes."); - -const u8 gBeedrillPokedexText[] = _( - "A Beedrill is extremely territorial.\n" - "For safety reasons, no one should ever\n" - "approach its nest. If angered, they will\n" - "attack in a swarm."); - -const u8 gPidgeyPokedexText[] = _( - "It has an extremely sharp sense of\n" - "direction. It can unerringly return home to\n" - "its nest, however far it may be removed\n" - "from its familiar surroundings."); - -const u8 gPidgeottoPokedexText[] = _( - "This Pokémon flies around, patrolling its\n" - "large territory. If its living space is\n" - "violated, it shows no mercy in thoroughly\n" - "punishing the foe with its sharp claws."); - -const u8 gPidgeotPokedexText[] = _( - "This Pokémon has gorgeous, glossy\n" - "feathers. Many Trainers are so captivated\n" - "by the beautiful feathers on its head that\n" - "they choose Pidgeot as their Pokémon."); - -const u8 gRattataPokedexText[] = _( - "A Rattata is cautious in the extreme.\n" - "Even while it is asleep, it constantly\n" - "moves its ears and listens for danger.\n" - "It will make its nest anywhere."); - -const u8 gRaticatePokedexText[] = _( - "A Raticate's sturdy fangs grow steadily.\n" - "To keep them ground down, it gnaws on\n" - "rocks and logs. It may even chew on the\n" - "walls of houses."); - -const u8 gSpearowPokedexText[] = _( - "Its loud cry can be heard over half a mile\n" - "away. If its high, keening cry is heard\n" - "echoing all around, it is a sign that they\n" - "are warning each other of danger."); - -const u8 gFearowPokedexText[] = _( - "Its long neck and elongated beak are\n" - "ideal for catching prey in soil or water.\n" - "It deftly moves this extended and skinny\n" - "beak to pluck prey."); - -const u8 gEkansPokedexText[] = _( - "An Ekans curls itself up in a spiral while\n" - "it rests. This position allows it to quickly\n" - "respond to an enemy from any direction\n" - "with a threat from its upraised head."); - -const u8 gArbokPokedexText[] = _( - "This Pokémon has a terrifically strong\n" - "constricting power. It can even flatten\n" - "steel oil drums. Once it wraps its body\n" - "around its foe, escaping is impossible."); - -const u8 gPikachuPokedexText[] = _( - "It stores electricity in the electric sacs\n" - "on its cheeks. When it releases pent-up\n" - "energy in a burst, the electric power is\n" - "equal to a lightning bolt."); - -const u8 gRaichuPokedexText[] = _( - "If it stores too much electricity, its\n" - "behavior turns aggressive. To avoid this,\n" - "it occasionally discharges excess energy\n" - "and calms itself down."); - -const u8 gSandshrewPokedexText[] = _( - "When it curls up in a ball, it can make any\n" - "attack bounce off harmlessly. Its hide has\n" - "turned tough and solid as a result of\n" - "living in the desert."); - -const u8 gSandslashPokedexText[] = _( - "It curls up in a ball to protect itself from\n" - "enemy attacks. It also curls up to prevent\n" - "heatstroke during the daytime when\n" - "temperatures rise sharply."); - -const u8 gNidoranFPokedexText[] = _( - "Its highly toxic barbs are thought to have\n" - "developed as protection for this small-\n" - "bodied Pokémon. When enraged, it releases\n" - "a horrible toxin from its horn."); - -const u8 gNidorinaPokedexText[] = _( - "When it is with its friends or\n" - "family, its barbs are tucked away to\n" - "prevent injury. It appears to become\n" - "nervous if separated from the others."); - -const u8 gNidoqueenPokedexText[] = _( - "It is adept at sending foes flying with\n" - "harsh tackles using its tough, scaly body.\n" - "This Pokémon is at its strongest when\n" - "it is defending its young."); - -const u8 gNidoranMPokedexText[] = _( - "The male Nidoran has developed muscles\n" - "that freely move its ears in any direction.\n" - "Even the slightest sound does not escape\n" - "this Pokémon's notice."); - -const u8 gNidorinoPokedexText[] = _( - "Its horn is harder than a diamond.\n" - "If it senses a hostile presence, all the\n" - "barbs on its back bristle up at once, and it\n" - "challenges the foe with all its might."); - -const u8 gNidokingPokedexText[] = _( - "A Nidoking's thick tail packs enormously\n" - "destructive power capable of toppling\n" - "a metal transmission tower. Once it goes\n" - "on a rampage, there is no stopping it."); - -const u8 gClefairyPokedexText[] = _( - "On every night of a full moon, they come\n" - "out to play. When dawn arrives, the tired\n" - "Clefairy go to sleep nestled up against\n" - "each other in deep and quiet mountains."); - -const u8 gClefablePokedexText[] = _( - "A Clefable uses its wings to skip lightly \n" - "as if it were flying. Its bouncy step\n" - "lets it even walk on water. On quiet,\n" - "moonlit nights, it strolls on lakes."); - -const u8 gVulpixPokedexText[] = _( - "It can freely control fire, making fiery\n" - "orbs fly like will-o'-the-wisps. Just\n" - "before evolution, its six tails grow hot \n" - "as if on fire."); - -const u8 gNinetalesPokedexText[] = _( - "It has long been said that each of the\n" - "nine tails embody an enchanted power.\n" - "A long-lived Ninetales will have fur that\n" - "shines like gold."); - -const u8 gJigglypuffPokedexText[] = _( - "Nothing can avoid falling asleep hearing a\n" - "Jigglypuff's song. The sound waves of its\n" - "singing voice match the brain waves of\n" - "someone in a deep sleep."); - -const u8 gWigglytuffPokedexText[] = _( - "Its fur is the ultimate in luxuriousness.\n" - "Sleeping alongside a Wigglytuff is simply\n" - "divine. Its body expands seemingly without\n" - "end when it inhales."); - -const u8 gZubatPokedexText[] = _( - "While living in pitch-black caverns, their\n" - "eyes gradually grew shut and deprived\n" - "them of vision. They use ultrasonic waves\n" - "to detect obstacles."); - -const u8 gGolbatPokedexText[] = _( - "Its fangs easily puncture even thick\n" - "animal hide. It loves to feast on the blood\n" - "of people and Pokémon. It flits about in\n" - "darkness and strikes from behind."); - -const u8 gOddishPokedexText[] = _( - "This Pokémon grows by absorbing moonlight.\n" - "During the daytime, it buries itself in the\n" - "ground, leaving only its leaves exposed to\n" - "avoid detection by its enemies."); - -const u8 gGloomPokedexText[] = _( - "A horribly noxious honey drools from its\n" - "mouth. One whiff of the honey can result\n" - "in memory loss. Some fans are said to\n" - "enjoy this overwhelming stink, however."); - -const u8 gVileplumePokedexText[] = _( - "In seasons when it produces more pollen,\n" - "the air around a Vileplume turns yellow\n" - "with the powder as it walks. The pollen is\n" - "highly toxic and causes paralysis."); - -const u8 gParasPokedexText[] = _( - "A Paras has parasitic tochukaso\n" - "mushrooms growing on its back. They grow\n" - "by drawing nutrients from the host. They\n" - "are valued as a medicine for long life."); - -const u8 gParasectPokedexText[] = _( - "Parasect are known to infest the roots of\n" - "large trees en masse and drain nutrients.\n" - "When an infested tree dies, they move\n" - "onto another tree all at once."); - -const u8 gVenonatPokedexText[] = _( - "Its coat of thin, stiff hair that covers\n" - "its entire body is said to have evolved\n" - "for protection. Its large eyes never fail\n" - "to spot even miniscule prey."); - -const u8 gVenomothPokedexText[] = _( - "Venomoth are nocturnal--they are only\n" - "active at night. Their favorite prey are\n" - "insects that gather around streetlights,\n" - "attracted by the light in the darkness."); - -const u8 gDiglettPokedexText[] = _( - "Diglett are raised in most farms.\n" - "The reason is simple--wherever they\n" - "burrow, the soil is left perfectly tilled\n" - "for growing delicious crops."); - -const u8 gDugtrioPokedexText[] = _( - "Because the triplets originally split from\n" - "one body, they think exactly alike.\n" - "They work cooperatively to burrow\n" - "endlessly through the ground."); - -const u8 gMeowthPokedexText[] = _( - "Meowth withdraw their sharp claws into\n" - "their paws to silently sneak about.\n" - "For some reason, this Pokémon loves\n" - "shiny coins that glitter with light."); - -const u8 gPersianPokedexText[] = _( - "A Persian's six bold whiskers sense air\n" - "movements to determine what is in its\n" - "vicinity. It becomes docile if grabbed\n" - "by the whiskers."); - -const u8 gPsyduckPokedexText[] = _( - "When its headache intensifies, it starts\n" - "using strange powers. However, it has no\n" - "recollection of its powers, so it always\n" - "looks befuddled and bewildered."); - -const u8 gGolduckPokedexText[] = _( - "A Golduck is an adept swimmer.\n" - "It sometimes joins competitive swimmers\n" - "in training. It uses psychic powers when\n" - "its forehead shimmers with light."); - -const u8 gMankeyPokedexText[] = _( - "When it starts shaking and its nasal\n" - "breathing turns rough, it's a sure sign\n" - "of anger. However, since this happens\n" - "instantly, there is no time to flee."); - -const u8 gPrimeapePokedexText[] = _( - "When it becomes furious, its blood\n" - "circulation becomes more robust, and\n" - "its muscles are made stronger. But it\n" - "also becomes much less intelligent."); - -const u8 gGrowlithePokedexText[] = _( - "Its superb sense of smell ensures that\n" - "this Pokémon won't forget any scent,\n" - "no matter what. It uses its sense of smell\n" - "to detect the emotions of others."); - -const u8 gArcaninePokedexText[] = _( - "This fleet-footed Pokémon is said to run\n" - "over 6,200 miles in a single day and night.\n" - "The fire that blazes wildly within its body\n" - "is its source of power."); - -const u8 gPoliwagPokedexText[] = _( - "It is possible to see this Pokémon's spiral\n" - "innards right through its thin skin.\n" - "However, the skin is also very flexible.\n" - "Even sharp fangs bounce right off it."); - -const u8 gPoliwhirlPokedexText[] = _( - "Its body surface is always wet and slick\n" - "with an oily fluid. Because of this greasy\n" - "covering, it can easily slip and slide out\n" - "of the clutches of any enemy in battle."); - -const u8 gPoliwrathPokedexText[] = _( - "Its highly developed muscles never grow\n" - "fatigued, however much it exercises.\n" - "This Pokémon can swim back and forth\n" - "across the Pacific Ocean without effort."); - -const u8 gAbraPokedexText[] = _( - "A Pokémon that sleeps 18 hours a day.\n" - "Observation revealed that it uses\n" - "Teleport to change its location once\n" - "every hour."); - -const u8 gKadabraPokedexText[] = _( - "It is rumored that a boy with psychic\n" - "abilities suddenly transformed into\n" - "Kadabra while he was assisting research\n" - "into extrasensory powers."); - -const u8 gAlakazamPokedexText[] = _( - "While it has strong psychic abilities and\n" - "high intelligence, an Alakazam's muscles\n" - "are very weak. It uses psychic power to\n" - "move its body."); - -const u8 gMachopPokedexText[] = _( - "It continually undertakes strenuous\n" - "training to master all forms of martial\n" - "arts. Its strength lets it easily hoist\n" - "a sumo wrestler onto its shoulders."); - -const u8 gMachokePokedexText[] = _( - "A belt is worn by a Machoke to keep its\n" - "overwhelming power under control.\n" - "Because it is so dangerous, no one has\n" - "ever removed the belt."); - -const u8 gMachampPokedexText[] = _( - "It is impossible to defend against punches\n" - "and chops doled out by its four arms.\n" - "Its fighting spirit flares up when it faces\n" - "a tough opponent."); - -const u8 gBellsproutPokedexText[] = _( - "A Bellsprout's thin and flexible body lets\n" - "it bend and sway to avoid any attack,\n" - "however strong it may be. From its mouth,\n" - "it leaks a fluid that melts even iron."); - -const u8 gWeepinbellPokedexText[] = _( - "At night, a Weepinbell hangs on to a tree\n" - "branch with its hooked rear and sleeps.\n" - "If it moves around in its sleep, it may\n" - "wake up to find itself on the ground."); - -const u8 gVictreebelPokedexText[] = _( - "The long vine extending from its head is\n" - "waved about as if it were a living thing to\n" - "attract prey. When an unsuspecting victim\n" - "approaches, it is swallowed whole."); - -const u8 gTentacoolPokedexText[] = _( - "Its body is almost entirely composed of\n" - "water. It ensnares its foe with its two\n" - "long tentacles, then stabs with the poison\n" - "stingers at their tips."); - -const u8 gTentacruelPokedexText[] = _( - "It lives in complex rock formations on\n" - "the ocean floor and traps prey using its\n" - "80 tentacles. Its red orbs glow when it\n" - "grows excited or agitated."); - -const u8 gGeodudePokedexText[] = _( - "It climbs mountain paths using only the\n" - "power of its arms. Because they look just\n" - "like boulders lining paths, hikers may step\n" - "on them without noticing."); - -const u8 gGravelerPokedexText[] = _( - "They descend from mountains by tumbling\n" - "down steep slopes. They are so brutal,\n" - "they smash aside obstructing trees and\n" - "massive boulders with thunderous tackles."); - -const u8 gGolemPokedexText[] = _( - "It is said to live in volcanic craters\n" - "on mountain peaks. Once a year, it sheds\n" - "its hide and grows larger. The shed hide\n" - "crumbles and returns to the soil."); - -const u8 gPonytaPokedexText[] = _( - "A Ponyta is very weak at birth. It can\n" - "barely stand up. Its legs become stronger\n" - "as it stumbles and falls while trying to\n" - "keep up with its parent."); - -const u8 gRapidashPokedexText[] = _( - "It usually canters casually in the fields\n" - "and plains. But once a Rapidash turns\n" - "serious, its fiery manes flare and blaze\n" - "as it gallops its way up to 150 mph."); - -const u8 gSlowpokePokedexText[] = _( - "It catches prey by dipping its tail in\n" - "water at the side of a river. But it often\n" - "forgets what it is doing and spends entire\n" - "days just loafing at water's edge."); - -const u8 gSlowbroPokedexText[] = _( - "Its tail has a Shellder firmly attached\n" - "with a bite. As a result, the tail can't be\n" - "used for fishing anymore. This forces it\n" - "to reluctantly swim and catch prey."); - -const u8 gMagnemitePokedexText[] = _( - "The units at its sides are extremely\n" - "powerful magnets. They generate enough\n" - "magnetism to draw in iron objects from\n" - "over 300 feet away."); - -const u8 gMagnetonPokedexText[] = _( - "It is actually three Magnemite linked\n" - "by magnetism. It generates powerful radio\n" - "waves that raise temperatures by 3.6\n" - "degrees F within a 3,300-foot radius."); - -const u8 gFarfetchdPokedexText[] = _( - "It is always seen with a stick from a plant.\n" - "Apparently, there are good sticks and bad\n" - "sticks. This Pokémon occasionally fights\n" - "with others over choice sticks."); - -const u8 gDoduoPokedexText[] = _( - "Even while eating or sleeping, one of the\n" - "heads remains always vigilant for any sign\n" - "of danger. When threatened, it flees at\n" - "over 60 miles per hour."); - -const u8 gDodrioPokedexText[] = _( - "A peculiar Pokémon species with three\n" - "heads. It vigorously races across grassy\n" - "plains even in arid seasons with little\n" - "rainfall."); - -const u8 gSeelPokedexText[] = _( - "Seel hunt for prey in frigid, ice-covered\n" - "seas. When it needs to breathe, it punches\n" - "a hole through the ice with the sharply\n" - "protruding section of its head."); - -const u8 gDewgongPokedexText[] = _( - "It loves to snooze on bitterly cold ice.\n" - "The sight of this Pokémon sleeping on\n" - "a glacier was mistakenly thought to be\n" - "a mermaid by a mariner long ago."); - -const u8 gGrimerPokedexText[] = _( - "Born from polluted sludge in the sea,\n" - "Grimer's favorite food is anything filthy.\n" - "They feed on wastewater pumped out from\n" - "factories."); - -const u8 gMukPokedexText[] = _( - "It prefers warm and humid habitats.\n" - "In the summertime, the toxic substances\n" - "in its body intensify, making Muk reek like\n" - "putrid kitchen garbage."); - -const u8 gShellderPokedexText[] = _( - "At night, it burrows a hole in the seafloor\n" - "with its broad tongue to make a place to\n" - "sleep. While asleep, it closes its shell,\n" - "but leaves its tongue hanging out."); - -const u8 gCloysterPokedexText[] = _( - "It swims in the sea by swallowing water,\n" - "then jetting it out toward the rear.\n" - "The Cloyster shoots spikes from its\n" - "shell using the same system."); - -const u8 gGastlyPokedexText[] = _( - "When exposed to a strong wind, a Gastly's\n" - "gaseous body quickly dwindles away.\n" - "They cluster under the eaves of houses\n" - "to escape the ravages of wind."); - -const u8 gHaunterPokedexText[] = _( - "If a Haunter beckons you while it is\n" - "floating in darkness, don't approach it.\n" - "This Pokémon will try to lick you with its\n" - "tongue and steal your life away."); - -const u8 gGengarPokedexText[] = _( - "Deep in the night, your shadow cast by\n" - "a streetlight may suddenly overtake you.\n" - "It is actually a Gengar running past\n" - "you, pretending to be your shadow."); - -const u8 gOnixPokedexText[] = _( - "There is a magnet in its brain that\n" - "prevents an Onix from losing direction\n" - "while tunneling. As it grows older, its body\n" - "becomes steadily rounder and smoother."); - -const u8 gDrowzeePokedexText[] = _( - "If your nose becomes itchy while you are\n" - "sleeping, it's a sure sign that a Drowzee is\n" - "standing above your pillow and trying to\n" - "eat your dream through your nostrils."); - -const u8 gHypnoPokedexText[] = _( - "The arcing movement and glitter of the\n" - "pendulum in a Hypno's hand lull the foe\n" - "into deep hypnosis. While searching for\n" - "prey, it polishes the pendulum."); - -const u8 gKrabbyPokedexText[] = _( - "Krabby live in holes dug into beaches.\n" - "On sandy shores with little in the way\n" - "of food, they can be seen squabbling with\n" - "each other over territory."); - -const u8 gKinglerPokedexText[] = _( - "It waves its huge, oversized claw in the\n" - "air to communicate with others.\n" - "But since the claw is so heavy, this\n" - "Pokémon quickly tires."); - -const u8 gVoltorbPokedexText[] = _( - "It bears an uncanny and unexplained\n" - "resemblance to a Poké Ball. Because it\n" - "explodes at the slightest shock, even\n" - "veteran Trainers treat it with caution."); - -const u8 gElectrodePokedexText[] = _( - "They appear in great numbers at electric\n" - "power plants. Because they feed on\n" - "electricity, they cause massive and\n" - "chaotic blackouts in nearby cities."); - -const u8 gExeggcutePokedexText[] = _( - "It consists of six eggs that care for each\n" - "other. The eggs attract each other and\n" - "spin around. When cracks increasingly\n" - "appear, it is close to evolution."); - -const u8 gExeggutorPokedexText[] = _( - "Originally from the tropics, Exeggutor's\n" - "heads grow larger from exposure to strong\n" - "sunlight. It is said that when the heads\n" - "fall, they group to form an Exeggcute."); - -const u8 gCubonePokedexText[] = _( - "It pines for the mother it will never see\n" - "again. Seeing a likeness of its mother in\n" - "the full moon, it cries. The stains on the\n" - "skull it wears are from its tears."); - -const u8 gMarowakPokedexText[] = _( - "A Marowak is the evolved form of a Cubone\n" - "that has grown tough by overcoming the\n" - "grief of losing its mother. Its tempered\n" - "and hardened spirit is not easily broken."); - -const u8 gHitmonleePokedexText[] = _( - "Its legs freely stretch and contract.\n" - "Using these springlike limbs, it bowls over\n" - "foes with devastating kicks. After battle,\n" - "it rubs down its tired legs."); - -const u8 gHitmonchanPokedexText[] = _( - "A Hitmonchan is said to possess the\n" - "spirit of a boxer who aimed to become the\n" - "world champion. Having an indomitable\n" - "spirit means that it will never give up."); - -const u8 gLickitungPokedexText[] = _( - "Whenever it sees something unfamiliar,\n" - "it always licks the object because it\n" - "memorizes things by texture and taste.\n" - "It is somewhat put off by sour things."); - -const u8 gKoffingPokedexText[] = _( - "Getting up close to a Koffing will give\n" - "you a chance to observe, through its thin\n" - "skin, the toxic gases swirling inside. It\n" - "blows up at the slightest stimulation."); - -const u8 gWeezingPokedexText[] = _( - "By diluting its toxic gases with a special\n" - "process, the highest grade of perfume can\n" - "be extracted. To Weezing, gases emanating\n" - "from garbage are the ultimate feast."); - -const u8 gRhyhornPokedexText[] = _( - "Once it starts running, it doesn't stop.\n" - "Its tiny brain makes it so stupid that it\n" - "can't remember why it started running in\n" - "the first place."); - -const u8 gRhydonPokedexText[] = _( - "Its horn, which rotates like a drill,\n" - "destroys tall buildings with one strike.\n" - "It stands on its hind legs, and its brain\n" - "is well developed."); - -const u8 gChanseyPokedexText[] = _( - "Chansey lay nutritionally excellent eggs\n" - "every day. The eggs are so delicious, they\n" - "are eagerly devoured by even those people\n" - "who have lost their appetite."); - -const u8 gTangelaPokedexText[] = _( - "Its vines snap off easily and painlessly\n" - "if they are grabbed, allowing it to make a\n" - "quick getaway. The lost vines are replaced\n" - "by new growth the very next day."); - -const u8 gKangaskhanPokedexText[] = _( - "If you come across a young Kangaskhan\n" - "playing by itself, never try to catch it.\n" - "The baby's parent is sure to be in the area,\n" - "and it will become violently enraged."); - -const u8 gHorseaPokedexText[] = _( - "By cleverly flicking the fins on its back\n" - "side to side, it moves in any direction\n" - "while facing forward. It spits ink to\n" - "escape if it senses danger."); - -const u8 gSeadraPokedexText[] = _( - "The poisonous barbs all over its body are\n" - "highly valued as ingredients for making\n" - "traditional herbal medicine. It shows no\n" - "mercy to anything approaching its nest."); - -const u8 gGoldeenPokedexText[] = _( - "In the springtime, schools of Goldeen\n" - "can be seen swimming up falls and rivers.\n" - "It metes out staggering damage with its\n" - "single horn."); - -const u8 gSeakingPokedexText[] = _( - "It punches holes in boulders on stream-\n" - "beds. This is a clever innovation that\n" - "prevents its eggs from being attacked or\n" - "washed away by the current."); - -const u8 gStaryuPokedexText[] = _( - "It gathers with others in the night and\n" - "makes its red core glow on and off with\n" - "the twinkling stars. It can regenerate\n" - "limbs if they are severed from its body."); - -const u8 gStarmiePokedexText[] = _( - "People in ancient times imagined that\n" - "Starmie were transformed from the\n" - "reflections of stars that twinkled on\n" - "gentle waves at night."); - -const u8 gMrMimePokedexText[] = _( - "A Mr. Mime is a master of pantomime. It can\n" - "convince others that something unseeable\n" - "actually exists. Once believed, the\n" - "imaginary object does become real."); - -const u8 gScytherPokedexText[] = _( - "Its blindingly fast speed adds to the\n" - "sharpness of its twin forearm scythes.\n" - "The scythes can slice through thick logs\n" - "in one wicked stroke."); - -const u8 gJynxPokedexText[] = _( - "A Jynx sashays rhythmically as if it were\n" - "dancing. Its motions are so bouncingly\n" - "alluring, people seeing it are compelled to\n" - "shake their hips without noticing."); - -const u8 gElectabuzzPokedexText[] = _( - "When a storm approaches, it competes with\n" - "others to scale heights that are likely to\n" - "be stricken by lightning. Some towns use\n" - "Electabuzz in place of lightning rods."); - -const u8 gMagmarPokedexText[] = _( - "In battle, it blows out intense flames from\n" - "all over its body to intimidate its foe.\n" - "These fiery bursts create heat waves that\n" - "ignite grass and trees in the area."); - -const u8 gPinsirPokedexText[] = _( - "Their pincers are strong enough to\n" - "shatter thick logs. Because they dislike\n" - "cold, Pinsir burrow and sleep under\n" - "the ground on chilly nights."); - -const u8 gTaurosPokedexText[] = _( - "It is not satisfied unless it is rampaging\n" - "at all times. If there is no opponent for\n" - "Tauros to battle, it will charge at thick\n" - "trees and knock them down to calm itself."); - -const u8 gMagikarpPokedexText[] = _( - "Its swimming muscles are weak, so it is\n" - "easily washed away by currents. In places\n" - "where water pools, you can see many\n" - "Magikarp deposited there by the flow."); - -const u8 gGyaradosPokedexText[] = _( - "It is an extremely vicious and violent\n" - "Pokémon. When humans begin to fight,\n" - "it will appear and burn everything to the\n" - "ground with intensely hot flames."); - -const u8 gLaprasPokedexText[] = _( - "People have driven Lapras almost to the\n" - "point of extinction. In the evenings,\n" - "it is said to sing plaintively as it seeks\n" - "what few others of its kind still remain."); - -const u8 gDittoPokedexText[] = _( - "A Ditto rearranges its cell structure to\n" - "transform itself. However, if it tries to\n" - "change based on its memory, it will get\n" - "details wrong."); - -const u8 gEeveePokedexText[] = _( - "An Eevee has an unstable genetic makeup\n" - "that suddenly mutates due to its\n" - "environment. Radiation from various\n" - "Stones causes this Pokémon to evolve."); - -const u8 gVaporeonPokedexText[] = _( - "Vaporeon underwent a spontaneous\n" - "mutation and grew fins and gills that\n" - "allow them to live underwater. They have\n" - "the ability to freely control water."); - -const u8 gJolteonPokedexText[] = _( - "Its cells generate weak power that is\n" - "amplified by its fur's static electricity\n" - "to drop thunderbolts. The bristling fur is\n" - "made of electrically charged needles."); - -const u8 gFlareonPokedexText[] = _( - "Flareon's fluffy fur releases heat into\n" - "the air so that its body does not get\n" - "excessively hot. Its body temperature can\n" - "rise to a maximum of 1,650 degrees F."); - -const u8 gPorygonPokedexText[] = _( - "It is capable of reverting itself entirely\n" - "back to program data in order to enter\n" - "cyberspace. A Porygon is copy-\n" - "protected so it cannot be duplicated."); - -const u8 gOmanytePokedexText[] = _( - "One of the ancient and long-since-extinct\n" - "Pokémon that have been regenerated\n" - "from fossils by humans. If attacked,\n" - "it withdraws into its hard shell."); - -const u8 gOmastarPokedexText[] = _( - "An Omastar uses its tentacles to capture\n" - "its prey. It is believed to have become\n" - "extinct because its shell grew too large,\n" - "making its movements slow and ponderous."); - -const u8 gKabutoPokedexText[] = _( - "It is a Pokémon that has been regenerated\n" - "from a fossil. However, in rare cases, living\n" - "examples have been discovered. Kabuto\n" - "have not changed for 300 million years."); - -const u8 gKabutopsPokedexText[] = _( - "Kabutops once swam underwater to hunt \n" - "for prey. It was apparently evolving from\n" - "being a water dweller to living on land as\n" - "evident from changes in its gills and legs."); - -const u8 gAerodactylPokedexText[] = _( - "Aerodactyl is a Pokémon from the age\n" - "of dinosaurs. It was regenerated from DNA\n" - "extracted from amber. It is imagined to\n" - "have been the king of the skies."); - -const u8 gSnorlaxPokedexText[] = _( - "Snorlax's typical day consists of nothing\n" - "more than eating and sleeping. It is such\n" - "a docile Pokémon that there are children\n" - "who use its big belly as a place to play."); - -const u8 gArticunoPokedexText[] = _( - "Articuno is a legendary bird Pokémon that\n" - "can control ice. The flapping of its wings\n" - "chills the air. As a result, it is said that\n" - "when this Pokémon flies, snow will fall."); - -const u8 gZapdosPokedexText[] = _( - "Zapdos is a legendary bird Pokémon that\n" - "has the ability to control electricity.\n" - "It usually lives in thunderclouds. It gains\n" - "power if it is stricken by lightning bolts."); - -const u8 gMoltresPokedexText[] = _( - "Moltres is a legendary bird Pokémon\n" - "that can control fire. If injured, it is said\n" - "to dip its body in the molten magma of\n" - "a volcano to burn and heal itself."); - -const u8 gDratiniPokedexText[] = _( - "A Dratini continually molts and sloughs\n" - "off its old skin. It does so because the\n" - "life energy within its body steadily builds\n" - "to reach uncontrollable levels."); - -const u8 gDragonairPokedexText[] = _( - "A Dragonair stores an enormous amount of\n" - "energy inside its body. It is said to alter\n" - "the weather around it by loosing energy\n" - "from the crystals on its neck and tail."); - -const u8 gDragonitePokedexText[] = _( - "It can circle the globe in just 16 hours.\n" - "It is a kindhearted Pokémon that leads\n" - "lost and foundering ships in a storm\n" - "to the safety of land."); - -const u8 gMewtwoPokedexText[] = _( - "A Pokémon that was created by genetic\n" - "manipulation. However, even though the\n" - "scientific power of humans made its body,\n" - "they failed to give it a warm heart."); - -const u8 gMewPokedexText[] = _( - "A Mew is said to possess the genes of all\n" - "Pokémon. It is capable of making itself\n" - "invisible at will, so it entirely avoids\n" - "notice even if it approaches people."); - -const u8 gChikoritaPokedexText[] = _( - "It waves its leaf around to keep foes\n" - "at bay. However, a sweet fragrance also\n" - "wafts from the leaf, creating a friendly\n" - "atmosphere that becalms the battlers."); - -const u8 gBayleefPokedexText[] = _( - "A Bayleef's neck is ringed by curled-up\n" - "leaves. Inside each leaf is a small tree\n" - "shoot. The fragrance of this shoot\n" - "makes people peppy."); - -const u8 gMeganiumPokedexText[] = _( - "The fragrance of a Meganium's flower\n" - "soothes and calms emotions. In battle,\n" - "it gives off more of its becalming scent\n" - "to blunt the foe's fighting spirit."); - -const u8 gCyndaquilPokedexText[] = _( - "It flares flames from its back to protect\n" - "itself. The fire burns vigorously if the\n" - "Pokémon is angry. When it is tired,\n" - "it sputters with incomplete combustion."); - -const u8 gQuilavaPokedexText[] = _( - "It intimidates foes with intense gusts of\n" - "flames and superheated air. Its quick\n" - "nimbleness lets it dodge attacks even\n" - "while scorching an enemy."); - -const u8 gTyphlosionPokedexText[] = _( - "It can hide behind a shimmering heat haze\n" - "that it creates using its intense flames.\n" - "Typhlosion create blazing explosive\n" - "blasts that burn everything to cinders."); - -const u8 gTotodilePokedexText[] = _( - "Despite its small body, Totodile's jaws\n" - "are very powerful. While it may think it is\n" - "just playfully nipping, its bite has enough\n" - "strength to cause serious injury."); - -const u8 gCroconawPokedexText[] = _( - "Once its jaws clamp down on its foe, it will\n" - "absolutely not let go. Because the tips of\n" - "its fangs are forked back like fishhooks,\n" - "they become irremovably embedded."); - -const u8 gFeraligatrPokedexText[] = _( - "It opens its huge mouth to intimidate\n" - "enemies. In battle, it runs using its thick\n" - "and powerful hind legs to charge the\n" - "foe with incredible speed."); - -const u8 gSentretPokedexText[] = _( - "They take turns standing guard when it\n" - "is time to sleep. The sentry awakens the\n" - "others if it senses danger. If one becomes\n" - "separated, it turns sleepless with fear."); - -const u8 gFurretPokedexText[] = _( - "A Furret has a very slim build. When under\n" - "attack, it can squirm through narrow\n" - "spaces and get away. In spite of its short\n" - "limbs, it is very nimble and fleet."); - -const u8 gHoothootPokedexText[] = _( - "It has an internal organ that senses\n" - "the earth's rotation. Using this special\n" - "organ, a Hoothoot begins hooting at\n" - "precisely the same time every day."); - -const u8 gNoctowlPokedexText[] = _( - "It unfailingly catches prey in darkness.\n" - "Noctowl owe their success to superior\n" - "vision that allows them to see in minimal\n" - "light, and to their supple and silent wings."); - -const u8 gLedybaPokedexText[] = _( - "Ledyba communicate using a fluid that\n" - "they secrete from where the legs join the\n" - "body. They are said to convey feelings to\n" - "others by altering the fluid's scent."); - -const u8 gLedianPokedexText[] = _( - "It is said that in lands with clean air,\n" - "where the stars fill the sky, there live\n" - "many Ledian. For good reason, they use\n" - "the light of the stars as energy."); - -const u8 gSpinarakPokedexText[] = _( - "The web it spins can be considered its\n" - "second nervous system. It is said that a\n" - "Spinarak determines its prey by the tiny\n" - "vibrations it feels through the web."); - -const u8 gAriadosPokedexText[] = _( - "Its feet are tipped with tiny hooked claws\n" - "that enable it to scuttle on ceilings and\n" - "vertical walls. It constricts its foe with\n" - "thin and strong silk webbing."); - -const u8 gCrobatPokedexText[] = _( - "Over the course of evolution, its hind legs\n" - "turned into wings. By alternately resting\n" - "its front and rear wings, it can fly all day\n" - "without having to stop."); - -const u8 gChinchouPokedexText[] = _( - "When it senses danger, it discharges\n" - "positive and negative electricity from its\n" - "two antennae. It lives in depths beyond\n" - "sunlight's reach."); - -const u8 gLanturnPokedexText[] = _( - "The light-emitting orbs on its back are\n" - "very bright. They are formed from a part of\n" - "its dorsal fin. This Pokémon illuminates\n" - "the inky darkness of deep seas."); - -const u8 gPichuPokedexText[] = _( - "It is still inept at retaining electricity.\n" - "When it is startled, it discharges power\n" - "accidentally. It gets better at holding\n" - "power as it grows older."); - -const u8 gCleffaPokedexText[] = _( - "On nights with many shooting stars,\n" - "Cleffa can be seen dancing in a ring.\n" - "They dance until daybreak, when they\n" - "quench their thirst with the morning dew."); - -const u8 gIgglybuffPokedexText[] = _( - "Its soft and pliable body is very bouncy.\n" - "When it sings continuously with all its\n" - "might, its body steadily turns a deepening\n" - "pink color."); - -const u8 gTogepiPokedexText[] = _( - "As its energy, it uses the feelings of\n" - "compassion and pleasure exuded by\n" - "people and Pokémon. It stores up happy\n" - "feelings in its shell, then shares them out."); - -const u8 gTogeticPokedexText[] = _( - "It is said to be a Pokémon that brings good\n" - "fortune. When it spots someone who is pure\n" - "of heart, a Togetic appears and shares its\n" - "happiness with that person."); - -const u8 gNatuPokedexText[] = _( - "It runs up short trees that grow on the\n" - "savanna to peck at new shoots.\n" - "A Natu's eyes look as if they are\n" - "always observing something."); - -const u8 gXatuPokedexText[] = _( - "It has the enigmatic power of foreseeing\n" - "the future. Some people in different lands\n" - "have long believed that Xatu are\n" - "emissaries from another world."); - -const u8 gMareepPokedexText[] = _( - "Its fluffy wool rubs together and builds\n" - "a static charge. The more energy is\n" - "charged, the more brightly the lightbulb\n" - "at the tip of its tail glows."); - -const u8 gFlaaffyPokedexText[] = _( - "Its fleece quality changes to generate\n" - "strong static electricity with a small\n" - "amount of wool. The bare, slick parts of its\n" - "hide are shielded against electricity."); - -const u8 gAmpharosPokedexText[] = _( - "It gives off so much light that it can be\n" - "seen even from space. People in the old\n" - "days used its light to send signals back\n" - "and forth with others far away."); - -const u8 gBellossomPokedexText[] = _( - "Its flower petals deepen in color through\n" - "exposure to sunlight. When cloudy weather\n" - "persists, it does a dance that is thought\n" - "to be a ritual for summoning the sun."); - -const u8 gMarillPokedexText[] = _( - "Its body is covered with water-repellent\n" - "fur. Because of the fur, it can swim\n" - "through water at high speed without being\n" - "slowed by the water's resistance."); - -const u8 gAzumarillPokedexText[] = _( - "It lives in water virtually all day long.\n" - "Its body color and pattern act as\n" - "camouflage that makes it tough for\n" - "enemies to spot in water."); - -const u8 gSudowoodoPokedexText[] = _( - "It mimics a tree to avoid being attacked\n" - "by enemies. But since its forelegs\n" - "remain green throughout the year, it is\n" - "easily identified as a fake in the winter."); - -const u8 gPolitoedPokedexText[] = _( - "The curled hair on its head proves its\n" - "status as a king. It is said that the\n" - "longer and curlier the hair, the more\n" - "respect it earns from its peers."); - -const u8 gHoppipPokedexText[] = _( - "This Pokémon drifts and floats with the\n" - "wind. If it senses the approach of strong\n" - "winds, a Hoppip links leaves with others\n" - "to prepare against being blown away."); - -const u8 gSkiploomPokedexText[] = _( - "It blossoms when the temperature rises\n" - "above 64 degrees F. Because its flower's\n" - "blooming changes with the temperature,\n" - "it is sometimes used as a thermometer."); - -const u8 gJumpluffPokedexText[] = _( - "Jumpluff ride warm southern winds to\n" - "cross the sea and fly to foreign lands.\n" - "This Pokémon lands when it encounters\n" - "cold air while it is floating."); - -const u8 gAipomPokedexText[] = _( - "Its tail ends with a dexterous, handlike\n" - "appendage. However, because it uses the\n" - "tail so much, Aipom's real hands have\n" - "become rather clumsy."); - -const u8 gSunkernPokedexText[] = _( - "Sunkern try to minimize movement to\n" - "conserve the nutrients they have stored\n" - "in their bodies for evolution. They will\n" - "not eat, subsisting only on morning dew."); - -const u8 gSunfloraPokedexText[] = _( - "Sunflora convert solar energy into\n" - "nutrition. They are highly active in the\n" - "warm daytime but suddenly stop moving as\n" - "soon as the sun sets."); - -const u8 gYanmaPokedexText[] = _( - "It can see 360 degrees without moving\n" - "its eyes. It is a great flier capable of\n" - "making sudden stops and turning midair to\n" - "quickly chase down targeted prey."); - -const u8 gWooperPokedexText[] = _( - "Wooper usually live in water but come\n" - "out onto land seeking food occasionally.\n" - "On land, they coat their bodies with a\n" - "gooey, toxic film."); - -const u8 gQuagsirePokedexText[] = _( - "A Quagsire hunts by leaving its mouth wide\n" - "open in water and waiting for its prey to\n" - "blunder in. Because it doesn't move, it\n" - "does not get very hungry."); - -const u8 gEspeonPokedexText[] = _( - "An Espeon is extremely loyal to any\n" - "Trainer it considers to be worthy. It is\n" - "said to have developed precognitive\n" - "powers to protect its Trainer from harm."); - -const u8 gUmbreonPokedexText[] = _( - "Umbreon evolved from exposure to the\n" - "moon's energy pulses. It lurks in darkness\n" - "and waits for its foes to move. The rings\n" - "on its body glow when it leaps to attack."); - -const u8 gMurkrowPokedexText[] = _( - "Murkrow were feared as the alleged\n" - "bearers of ill fortune. It shows strong\n" - "interest in anything that sparkles. It will\n" - "even try to steal rings from women."); - -const u8 gSlowkingPokedexText[] = _( - "It undertakes research every day to\n" - "solve the mysteries of the world.\n" - "However, it apparently forgets everything\n" - "if the Shellder on its head comes off."); - -const u8 gMisdreavusPokedexText[] = _( - "A Misdreavus frightens people with a\n" - "creepy, sobbing cry. It apparently uses\n" - "its red spheres to absorb the fear of foes\n" - "as its nutrition."); - -const u8 gUnownPokedexText[] = _( - "This Pokémon is shaped like ancient text\n" - "characters. Although research is ongoing,\n" - "it is a mystery as to which came first,\n" - "the ancient writings or the various Unown."); - -const u8 gWobbuffetPokedexText[] = _( - "Usually docile, a Wobbuffet strikes back\n" - "ferociously if its black tail is attacked.\n" - "It makes its lair in caves where it waits\n" - "for nightfall."); - -const u8 gGirafarigPokedexText[] = _( - "A Girafarig is an herbivore--it eats\n" - "grass and tree shoots. While it is eating,\n" - "its tail makes chewing and swallowing\n" - "motions as if it were also eating."); - -const u8 gPinecoPokedexText[] = _( - "A Pineco hangs from a tree branch and\n" - "waits for prey. While eating, if it is\n" - "disturbed by someone shaking its tree, it\n" - "falls on the ground and suddenly explodes."); - -const u8 gForretressPokedexText[] = _( - "It keeps itself inside its steel shell.\n" - "The shell is opened when it is catching\n" - "prey, but it is so quick that the shell's\n" - "inside cannot be seen."); - -const u8 gDunsparcePokedexText[] = _( - "Its drill-tipped tail is used to burrow into\n" - "the ground backwards. This Pokémon is\n" - "known to make its nest in complex shapes\n" - "deep under the ground."); - -const u8 gGligarPokedexText[] = _( - "It glides without making a single sound.\n" - "It grasps the face of its foe using its\n" - "hind and large front claws, then stabs\n" - "with its poison barb."); - -const u8 gSteelixPokedexText[] = _( - "Steelix live even further underground\n" - "than Onix. This Pokémon is known to dig\n" - "toward the earth's core, reaching a depth\n" - "of over six-tenths of a mile underground."); - -const u8 gSnubbullPokedexText[] = _( - "By baring its fangs and making a scary\n" - "face, it sends smaller Pokémon scurrying\n" - "in terror. The Snubbull does seem a\n" - "little sad at making its foes flee."); - -const u8 gGranbullPokedexText[] = _( - "It has a particularly well-developed lower\n" - "jaw. The huge fangs are heavy, causing\n" - "it to tilt its head. Unless it is startled,\n" - "it will not try to bite."); - -const u8 gQwilfishPokedexText[] = _( - "A Qwilfish uses the pressure of water\n" - "it swallows to shoot toxic quills all at\n" - "once from all over its body. It finds\n" - "swimming to be somewhat challenging."); - -const u8 gScizorPokedexText[] = _( - "A Scizor has a body with the hardness of\n" - "steel. It is not easily fazed by ordinary\n" - "sorts of attacks. It flaps its wings to\n" - "regulate its body temperature."); - -const u8 gShucklePokedexText[] = _( - "A Shuckle hides under rocks, keeping its\n" - "body concealed inside its shell while\n" - "eating stored berries. The berries mix with\n" - "its body fluids to become a juice."); - -const u8 gHeracrossPokedexText[] = _( - "They gather in forests seeking the sweet\n" - "sap of trees. It is completely clad in a\n" - "steel-hard shell. It is proud of its horn,\n" - "which it uses to fling foes."); - -const u8 gSneaselPokedexText[] = _( - "A Sneasel scales trees by punching its\n" - "hooked claws into the bark. It seeks out\n" - "unguarded nests and steals eggs for food\n" - "while the parents are away."); - -const u8 gTeddiursaPokedexText[] = _( - "It licks its palms that are sweetened by\n" - "being soaked in honey. A Teddiursa makes\n" - "its own honey by blending fruits and pollen\n" - "collected by Beedrill."); - -const u8 gUrsaringPokedexText[] = _( - "In forests, it is said that there are many\n" - "streams and towering trees where an\n" - "Ursaring gathers food. It walks through\n" - "its forest collecting food every day."); - -const u8 gSlugmaPokedexText[] = _( - "It is a species of Pokémon that lives in\n" - "volcanic areas. If its body cools, its skin\n" - "hardens and immobilizes it. To avoid that,\n" - "it sleeps near magma."); - -const u8 gMagcargoPokedexText[] = _( - "The shell on its back is made of hardened\n" - "magma. Tens of thousands of years spent\n" - "living in volcanic craters have turned\n" - "Magcargo's bodies into magma."); - -const u8 gSwinubPokedexText[] = _( - "It roots for food by rubbing its snout\n" - "against the ground. Its favorite food is a\n" - "mushroom that grows under dried grass.\n" - "It occasionally roots out hot springs."); - -const u8 gPiloswinePokedexText[] = _( - "A Piloswine is covered by a thick coat\n" - "of long hair for enduring freezing cold.\n" - "It uses its tusks to dig up food that has\n" - "been buried under ice."); - -const u8 gCorsolaPokedexText[] = _( - "Corsola live in warm southern seas.\n" - "If the sea becomes polluted, the beautiful\n" - "coral stalks become discolored and crumble\n" - "away in tatters."); - -const u8 gRemoraidPokedexText[] = _( - "A Remoraid uses its abdominal muscles\n" - "to forcefully expel swallowed water, then\n" - "shoot down flying prey. When evolution\n" - "approaches, it travels down rivers."); - -const u8 gOctilleryPokedexText[] = _( - "It ensnares its foe with its suction-\n" - "cupped tentacles before delivering the\n" - "finishing blow. If the foe turns out to be\n" - "too strong, it spews ink to escape."); - -const u8 gDelibirdPokedexText[] = _( - "It carries food bundled up in its tail.\n" - "There was a famous explorer who\n" - "managed to scale Mt. Everest thanks\n" - "to a Delibird sharing its food."); - -const u8 gMantinePokedexText[] = _( - "On sunny days, schools of Mantine can be\n" - "seen elegantly leaping over the waves.\n" - "It is not bothered by the Remoraid that\n" - "hitches rides."); - -const u8 gSkarmoryPokedexText[] = _( - "A Pokémon that has a body and wings of\n" - "steel. People in the past used feathers\n" - "fallen from Skarmory to make swords and\n" - "knives."); - -const u8 gHoundourPokedexText[] = _( - "Houndour communicate with each other\n" - "using a variety of cries to corner their\n" - "prey. This Pokémon's remarkable teamwork\n" - "is simply unparalleled."); - -const u8 gHoundoomPokedexText[] = _( - "In a Houndoom pack, the one with its horns\n" - "raked sharply back serves a leadership\n" - "role. They choose their leader by fighting\n" - "among themselves."); - -const u8 gKingdraPokedexText[] = _( - "It sleeps quietly, deep on the seafloor.\n" - "When it comes up to the surface, it\n" - "creates a huge whirlpool that can swallow\n" - "even ships."); - -const u8 gPhanpyPokedexText[] = _( - "Phanpy's big ears serve as broad fans.\n" - "When it becomes hot, it flaps the ears\n" - "busily to cool down. Even the young are\n" - "very strong."); - -const u8 gDonphanPokedexText[] = _( - "A Donphan is so strong it can easily haul\n" - "a dump truck. Its hide has toughened to a\n" - "rock-hard state. An ordinary sort of\n" - "attack won't even leave a scratch."); - -const u8 gPorygon2PokedexText[] = _( - "It was created by humans using the power\n" - "of science. It has been given artificial\n" - "intelligence that enables it to learn new\n" - "gestures and emotions on its own."); - -const u8 gStantlerPokedexText[] = _( - "Stantler's magnificent antlers were\n" - "once traded at high prices as works of art.\n" - "As a result, this Pokémon was hunted\n" - "close to extinction."); - -const u8 gSmearglePokedexText[] = _( - "A Smeargle marks its territory using a\n" - "fluid that leaks out from the tip of its\n" - "tail. About 5,000 different marks left by\n" - "this Pokémon have been found."); - -const u8 gTyroguePokedexText[] = _( - "Tyrogue become stressed out if they do\n" - "not get to train every day. When raising\n" - "this Pokémon, the Trainer must establish\n" - "a regular training schedule."); - -const u8 gHitmontopPokedexText[] = _( - "Its technique of kicking while spinning is\n" - "a remarkable mix of both offense and\n" - "defense. Hitmontop travel faster\n" - "spinning than they do walking."); - -const u8 gSmoochumPokedexText[] = _( - "It actively runs about, but also falls\n" - "often. Whenever it falls, it will check its\n" - "reflection on a lake's surface to make\n" - "sure its face hasn't become dirty."); - -const u8 gElekidPokedexText[] = _( - "If it touches metal and discharges the\n" - "electricity it has stored in its body, an\n" - "Elekid begins swinging its arms in circles\n" - "to recharge itself."); - -const u8 gMagbyPokedexText[] = _( - "If a Magby is spouting yellow flames from\n" - "its mouth, it is in good health. When it is\n" - "fatigued, black smoke will be mixed in with\n" - "the flames."); - -const u8 gMiltankPokedexText[] = _( - "It gives over five gallons of milk daily.\n" - "Its sweet milk is enjoyed by children and\n" - "grown-ups alike. People who can't drink\n" - "milk turn it into yogurt and eat it instead."); - -const u8 gBlisseyPokedexText[] = _( - "If it senses sadness with its fluffy fur,\n" - "a Blissey will rush over to the sad person,\n" - "however far away, to share an egg of\n" - "happiness that brings a smile to any face."); - -const u8 gRaikouPokedexText[] = _( - "Raikou embodies the speed of lightning.\n" - "Its roars send shock waves shuddering\n" - "through the air and ground as if\n" - "lightning bolts were crashing down."); - -const u8 gEnteiPokedexText[] = _( - "Entei embodies the passion of magma.\n" - "It is thought to have been born in the\n" - "eruption of a volcano. It blasts fire that\n" - "consumes all that it touches."); - -const u8 gSuicunePokedexText[] = _( - "Suicune embodies the compassion of\n" - "a pure spring of water. It runs across\n" - "the land with gliding elegance. It has the\n" - "power to purify dirty water."); - -const u8 gLarvitarPokedexText[] = _( - "A Larvitar is born deep under the ground.\n" - "It must eat its way through the soil above\n" - "and reach the surface for it to see its\n" - "parents' faces."); - -const u8 gPupitarPokedexText[] = _( - "A Pupitar creates a gas inside its body\n" - "that it ejects under compression to propel\n" - "itself like a jet. Its body can withstand\n" - "a collision with solid steel."); - -const u8 gTyranitarPokedexText[] = _( - "A Tyranitar is so overwhelmingly powerful,\n" - "it can bring down a whole mountain to make\n" - "its nest. It roams in mountains seeking\n" - "new opponents to fight."); - -const u8 gLugiaPokedexText[] = _( - "Lugia is so powerful even a light\n" - "fluttering of its wings can blow apart\n" - "houses. As a result, it chooses to live out\n" - "of sight deep under the sea."); - -const u8 gHoOhPokedexText[] = _( - "Its feathers--which glow in seven colors\n" - "depending on the angle at which they are\n" - "struck by light--are thought to bring joy.\n" - "It is said to live at the foot of a rainbow."); - -const u8 gCelebiPokedexText[] = _( - "This Pokémon came from the future by\n" - "crossing over time. It is thought that so\n" - "long as Celebi appears, a bright and\n" - "shining future awaits us."); - -const u8 gTreeckoPokedexText[] = _( - "It makes its nest in a giant tree in the\n" - "forest. It ferociously guards against\n" - "anything nearing its territory. It is said\n" - "to be the protector of the forest's trees."); - -const u8 gGrovylePokedexText[] = _( - "Leaves grow out of this Pokémon's body.\n" - "They help obscure a Grovyle from the eyes\n" - "of its enemies while it is in a thickly\n" - "overgrown forest."); - -const u8 gSceptilePokedexText[] = _( - "In the jungle, its power is without equal.\n" - "This Pokémon carefully grows trees and\n" - "plants. It regulates its body temperature\n" - "by basking in sunlight."); - -const u8 gTorchicPokedexText[] = _( - "If attacked, it strikes back by spitting\n" - "balls of fire it forms in its stomach.\n" - "A Torchic dislikes darkness because it\n" - "can't see its surroundings."); - -const u8 gCombuskenPokedexText[] = _( - "It lashes out with 10 kicks per second.\n" - "Its strong fighting instinct compels it\n" - "to keep up its offensive until the\n" - "opponent gives up."); - -const u8 gBlazikenPokedexText[] = _( - "It learns martial arts that use punches\n" - "and kicks. Every several years, its old\n" - "feathers burn off, and new, supple\n" - "feathers grow back in their place."); - -const u8 gMudkipPokedexText[] = _( - "On land, it can powerfully lift large\n" - "boulders by planting its four feet and\n" - "heaving. It sleeps by burying itself in soil\n" - "at the water's edge."); - -const u8 gMarshtompPokedexText[] = _( - "Its toughened hind legs enable it to stand\n" - "upright. Because it weakens if its skin\n" - "dries out, it replenishes fluids by playing\n" - "in mud."); - -const u8 gSwampertPokedexText[] = _( - "If it senses the approach of a storm and\n" - "a tidal wave, it protects its seaside nest\n" - "by piling up boulders. It swims as fast as\n" - "a jet ski."); - -const u8 gPoochyenaPokedexText[] = _( - "It savagely threatens foes with bared\n" - "fangs. It chases after fleeing targets\n" - "tenaciously. It turns tail and runs,\n" - "however, if the foe strikes back."); - -const u8 gMightyenaPokedexText[] = _( - "In the wild, Mightyena live in a pack.\n" - "They never defy their leader's orders.\n" - "They defeat foes with perfectly\n" - "coordinated teamwork."); - -const u8 gZigzagoonPokedexText[] = _( - "Rubbing its nose against the ground, it\n" - "always wanders about back and forth in\n" - "search of something. It is distinguished\n" - "by the zigzag footprints it leaves."); - -const u8 gLinoonePokedexText[] = _( - "It is exceedingly fast if it only has to run\n" - "in a straight line. When it spots pond-\n" - "dwelling prey underwater, it quickly leaps\n" - "in and catches it with its sharp claws."); - -const u8 gWurmplePokedexText[] = _( - "It sticks to tree branches and eats\n" - "leaves. The thread it spits from its mouth,\n" - "which becomes gooey when it touches\n" - "air, slows the movement of its foes."); - -const u8 gSilcoonPokedexText[] = _( - "It prepares for evolution using the\n" - "energy it stored while it was a Wurmple.\n" - "It keeps watch over the surroundings with\n" - "its two eyes."); - -const u8 gBeautiflyPokedexText[] = _( - "Its colorfully patterned wings are its\n" - "most prominent feature. It flies through\n" - "flower-covered fields collecting pollen.\n" - "It attacks ferociously when angered."); - -const u8 gCascoonPokedexText[] = _( - "To avoid detection by its enemies, it hides\n" - "motionlessly beneath large leaves and in\n" - "the gaps of branches. It also attaches\n" - "dead leaves to its body for camouflage."); - -const u8 gDustoxPokedexText[] = _( - "It is a nocturnal Pokémon that flies from\n" - "fields and mountains to the attraction of\n" - "streetlights at night. It looses highly\n" - "toxic powder from its wings."); - -const u8 gLotadPokedexText[] = _( - "This Pokémon lives in ponds with clean\n" - "water. It is known to ferry small Pokémon\n" - "across ponds by carrying them on the\n" - "broad leaf on its head."); - -const u8 gLombrePokedexText[] = _( - "In the evening, it takes great delight in\n" - "popping out of rivers and startling people.\n" - "It feeds on aquatic moss that grows on\n" - "rocks in the riverbed."); - -const u8 gLudicoloPokedexText[] = _( - "When it hears festive music, all the cells\n" - "in its body become stimulated, and it\n" - "begins moving in rhythm. It does not\n" - "quail even when it faces a tough opponent."); - -const u8 gSeedotPokedexText[] = _( - "It hangs off branches and absorbs\n" - "nutrients. When it finishes eating, its\n" - "body becomes so heavy that it drops to\n" - "the ground with a thump."); - -const u8 gNuzleafPokedexText[] = _( - "A forest-dwelling Pokémon that is skilled\n" - "at climbing trees. Its long and pointed\n" - "nose is its weak point. It loses power if\n" - "the nose is gripped."); - -const u8 gShiftryPokedexText[] = _( - "It is said to arrive on chilly, wintry winds.\n" - "Feared from long ago as the guardian of\n" - "forests, this Pokémon lives in a deep\n" - "forest where people do not venture."); - -const u8 gNincadaPokedexText[] = _( - "It makes its nest at the roots of a mighty\n" - "tree. Using its whiskerlike antennae, it\n" - "probes its surroundings in the\n" - "pitch-black darkness of soil."); - -const u8 gNinjaskPokedexText[] = _( - "Because it darts about vigorously at high\n" - "speed, it is very difficult to see. Hearing\n" - "its distinctive cries for too long induces\n" - "a headache."); - -const u8 gShedinjaPokedexText[] = _( - "A peculiar Pokémon that floats in air even\n" - "though its wings remain completely still.\n" - "The inside of its body is hollow and\n" - "utterly dark."); - -const u8 gTaillowPokedexText[] = _( - "Although it is small, it is very courageous.\n" - "It will take on a larger Skarmory on an\n" - "equal footing. However, its will weakens if\n" - "it becomes hungry."); - -const u8 gSwellowPokedexText[] = _( - "A Swellow dives upon prey from far above.\n" - "It never misses its targets. It takes to\n" - "the skies in search of lands with a warm\n" - "climate."); - -const u8 gShroomishPokedexText[] = _( - "It loves to eat damp, composted soil in\n" - "forests. If you enter a forest after a\n" - "long rain, you can see many Shroomish\n" - "feasting on composted soil."); - -const u8 gBreloomPokedexText[] = _( - "It scatters spores from holes in the cap\n" - "on its head. It loves warm and humid\n" - "climates. It feeds on trees and plants in\n" - "fields and forests."); - -const u8 gSpindaPokedexText[] = _( - "It is distinguished by a pattern of\n" - "spots that is always different. Its\n" - "unsteady, tottering walk has the\n" - "effect of fouling its foe's aim."); - -const u8 gWingullPokedexText[] = _( - "It makes its nest on a sheer cliff at the\n" - "edge of the sea. It has trouble keeping\n" - "its wings flapping in flight. Instead, it\n" - "soars on updrafts."); - -const u8 gPelipperPokedexText[] = _( - "It skims the tops of waves as it flies.\n" - "When it spots prey, it uses its large beak\n" - "to scoop up the victim with water.\n" - "It protects its eggs in its beak."); - -const u8 gSurskitPokedexText[] = _( - "They gather on puddles after evening\n" - "downpours, gliding across the surface\n" - "of water as if sliding. It secretes honey\n" - "with a sweet aroma from its head."); - -const u8 gMasquerainPokedexText[] = _( - "It intimidates foes with the large eyelike\n" - "patterns on its antennae. Because it can't\n" - "fly if its wings get wet, it shelters itself\n" - "from rain under large trees and eaves."); - -const u8 gWailmerPokedexText[] = _( - "While this Pokémon usually lives in the sea,\n" - "it can survive on land, although not too\n" - "long. It loses vitality if its body becomes\n" - "dried out."); - -const u8 gWailordPokedexText[] = _( - "It breathes through nostrils that it\n" - "raises above the sea. By inhaling to its\n" - "maximum capacity, a Wailord can dive close\n" - "to 10,000 feet beneath the waves."); - -const u8 gSkittyPokedexText[] = _( - "A Skitty's adorably cute behavior makes it\n" - "highly popular. In battle, it makes its tail\n" - "puff out. It threatens foes with a sharp\n" - "growl."); - -const u8 gDelcattyPokedexText[] = _( - "Rather than keeping a permanent lair,\n" - "it habitually seeks comfortable spots and\n" - "sleeps there. It is nocturnal and becomes\n" - "active at dusk."); - -const u8 gKecleonPokedexText[] = _( - "A Pokémon that has the ability to alter its\n" - "body colors to match its surroundings.\n" - "A Kecleon reverts to its original colors if\n" - "it is startled."); - -const u8 gBaltoyPokedexText[] = _( - "A Baltoy moves by spinning on its single\n" - "foot. It has been depicted in murals \n" - "adorning the walls of a once-bustling city\n" - "in an ancient age."); - -const u8 gClaydolPokedexText[] = _( - "A Claydol sleeps while hovering in midair.\n" - "Its arms are separate from its body.\n" - "They are kept floating by the Pokémon's\n" - "manipulation of psychic power."); - -const u8 gNosepassPokedexText[] = _( - "Its body emits a powerful magnetism.\n" - "It feeds on prey that is pulled in by the\n" - "force. Its magnetism is stronger in cold\n" - "seasons."); - -const u8 gTorkoalPokedexText[] = _( - "It battles using energy it gets from\n" - "burning coal. When loosing smoke from its\n" - "nostrils, it lets off a sound that is\n" - "similar to a locomotive's horn."); - -const u8 gSableyePokedexText[] = _( - "It digs branching holes in caves using its\n" - "sharp claws in search of food--raw gems.\n" - "A Sableye lurks in darkness and is seen\n" - "only rarely."); - -const u8 gBarboachPokedexText[] = _( - "Its body is covered with a slimy film.\n" - "The film acts as a barrier to prevent germs\n" - "in muddy water from entering the\n" - "Barboach's body."); - -const u8 gWhiscashPokedexText[] = _( - "Mysteriously, it can foretell earthquakes.\n" - "In the daytime, it sleeps in mud at the\n" - "bottom of a pond. When it awakens, it\n" - "continually feeds throughout the night."); - -const u8 gLuvdiscPokedexText[] = _( - "Luvdisc make the branches of Corsola\n" - "their nests. There is a custom from long\n" - "ago of giving a Luvdisc as a gift to\n" - "express one's feelings of love."); - -const u8 gCorphishPokedexText[] = _( - "Once it grips prey with its large pincers,\n" - "it will never let go, no matter what.\n" - "It is a hardy Pokémon that can thrive\n" - "in any environment."); - -const u8 gCrawdauntPokedexText[] = _( - "A brutish Pokémon that loves to battle.\n" - "A veteran Crawdaunt that has prevailed in\n" - "hundreds of battles has giant pincers\n" - "marked with countless scars."); - -const u8 gFeebasPokedexText[] = _( - "Feebas live in ponds that are heavily\n" - "infested with weeds. Because of its\n" - "hopelessly shabby appearance, it\n" - "seems as if few Trainers raise it."); - -const u8 gMiloticPokedexText[] = _( - "It is said to live at the bottom of\n" - "large lakes. Considered to be the most\n" - "beautiful of all Pokémon, it has been\n" - "depicted in paintings and statues."); - -const u8 gCarvanhaPokedexText[] = _( - "Carvanha attack ships in swarms, making\n" - "them sink. Although it is said to be a very\n" - "vicious Pokémon, it timidly flees as soon\n" - "as it finds itself alone."); - -const u8 gSharpedoPokedexText[] = _( - "The vicious and sly gangster of the sea.\n" - "Its skin is specially textured to minimize\n" - "drag in water. Its speed tops out at over\n" - "75 miles per hour."); - -const u8 gTrapinchPokedexText[] = _( - "Its big jaws crunch through boulders.\n" - "Because its head is so big, it has a hard\n" - "time getting back upright if it tips over\n" - "onto its back."); - -const u8 gVibravaPokedexText[] = _( - "It looses ultrasonic waves by rubbing its\n" - "wings together. Since a Vibrava's wings\n" - "are still in the process of growing, it can\n" - "only fly short distances."); - -const u8 gFlygonPokedexText[] = _( - "The flapping of its wings sounds like\n" - "singing. To prevent detection by enemies,\n" - "it hides itself by flapping up a cloud of\n" - "desert sand."); - -const u8 gMakuhitaPokedexText[] = _( - "It loves to toughen up its body above all\n" - "else. If you hear quaking rumbles in a cave,\n" - "it is the sound of Makuhita undertaking\n" - "strenuous training."); - -const u8 gHariyamaPokedexText[] = _( - "It has the habit of challenging others\n" - "without hesitation to tests of strength.\n" - "It's been known to stand on train tracks\n" - "and stop trains using forearm thrusts."); - -const u8 gElectrikePokedexText[] = _( - "It generates electricity using friction\n" - "from the atmosphere. In seasons with\n" - "especially arid air, its entire body blazes\n" - "with violent showers of sparks."); - -const u8 gManectricPokedexText[] = _( - "Because lightning falls in their vicinities,\n" - "Manectric were thought to have been born\n" - "from lightning. In battle, they create\n" - "thunderclouds."); - -const u8 gNumelPokedexText[] = _( - "A Numel stores boiling magma in the hump\n" - "on its back. It is a hardy Pokémon that can\n" - "transport a 220-pound load. It has served\n" - "humans at work since long ago."); - -const u8 gCameruptPokedexText[] = _( - "A Pokémon that lives in the crater of\n" - "a volcano. Every 10 years, the volcanoes\n" - "on its back erupt violently. Research is\n" - "under way on the cause of eruption."); - -const u8 gSphealPokedexText[] = _( - "It is completely covered with plushy fur.\n" - "As a result, it never feels the cold even\n" - "when it is rolling about on ice floes or\n" - "diving in the sea."); - -const u8 gSealeoPokedexText[] = _( - "Sealeo live in herds on ice floes. Using its\n" - "powerful flippers, it shatters ice.\n" - "It dives into the sea to hunt prey five\n" - "times a day."); - -const u8 gWalreinPokedexText[] = _( - "To protect its herd, the leader battles\n" - "anything that invades its territory, even\n" - "at the cost of its life. Its tusks may snap\n" - "off in battle."); - -const u8 gCacneaPokedexText[] = _( - "Cacnea live in deserts with virtually no\n" - "rainfall. It battles by swinging its thick,\n" - "spiked arms. Once a year, a yellow flower\n" - "blooms."); - -const u8 gCacturnePokedexText[] = _( - "After spending thousands of years in\n" - "harsh deserts, its blood transformed into\n" - "the same substances as sand. It is\n" - "nocturnal, so it hunts at night."); - -const u8 gSnoruntPokedexText[] = _( - "They tend to move about in groups of\n" - "around five Snorunt. In snowy regions,\n" - "it is said that when they are seen late at\n" - "night, snowfall will arrive by morning."); - -const u8 gGlaliePokedexText[] = _( - "A Glalie has the power to instantaneously\n" - "freeze moisture in the atmosphere.\n" - "A dazzling cloud of diamondlike ice\n" - "crystals forms around its body."); - -const u8 gLunatonePokedexText[] = _( - "It becomes very active on the night of\n" - "a full moon. This Pokémon was first\n" - "discovered 40 years ago at the site of\n" - "a meteor strike."); - -const u8 gSolrockPokedexText[] = _( - "Solar energy is the source of this \n" - "Pokémon's power. On sunny days, groups of\n" - "Solrock line up facing the sun and absorb\n" - "its light."); - -const u8 gAzurillPokedexText[] = _( - "Its tail, which is packed with nutrition,\n" - "is very bouncy like a rubber ball. On sunny\n" - "days they gather at the edge of water and\n" - "splash about for fun."); - -const u8 gSpoinkPokedexText[] = _( - "A Pokémon that manipulates psychic power\n" - "at will. It doesn't stop bouncing even when\n" - "it is asleep. It loves eating mushrooms\n" - "that grow underground."); - -const u8 gGrumpigPokedexText[] = _( - "It stores power in the black pearls on its\n" - "forehead. When it uses psychic power, it\n" - "performs an odd dance step. Its style of\n" - "dancing became hugely popular overseas."); - -const u8 gPluslePokedexText[] = _( - "It has the trait of cheering on its fellow\n" - "Pokémon. By shorting out the electricity\n" - "it releases from its paws, it creates\n" - "pom-poms for cheering."); - -const u8 gMinunPokedexText[] = _( - "At a meeting of Pokémon academics, it was\n" - "announced that simultaneous exposure to\n" - "electricity from a Plusle and Minun will\n" - "promote circulation and boost vitality."); - -const u8 gMawilePokedexText[] = _( - "Its giant jaws are actually steel horns\n" - "that transformed. It fools foes into\n" - "complacency with its adorable gestures,\n" - "then chomps them with its huge jaws."); - -const u8 gMedititePokedexText[] = _( - "It continually meditates for hours every\n" - "day. As a result of rigorous and dedicated\n" - "yoga training, it has tempered its\n" - "spiritual power so much it can fly."); - -const u8 gMedichamPokedexText[] = _( - "Through crushingly harsh yoga training, it\n" - "gained the power to foretell its foe's\n" - "actions. It battles with elegant, dance-\n" - "like movement."); - -const u8 gSwabluPokedexText[] = _( - "A Pokémon that has wings like cottony\n" - "clouds. After enduring winter, in which\n" - "little food is available, Swablu flocks\n" - "move closer to towns in the spring."); - -const u8 gAltariaPokedexText[] = _( - "It hums in a beautiful soprano voice.\n" - "It flies among white clouds in the blue\n" - "sky. It launches intensely hot fireballs\n" - "from its mouth."); - -const u8 gWynautPokedexText[] = _( - "A Wynaut loves to eat sweet fruits.\n" - "It cleverly picks fruits using its earlike\n" - "arms. They gather in fruit gardens, drawn\n" - "by the fragrance."); - -const u8 gDuskullPokedexText[] = _( - "A glare from its single scarlet eye makes\n" - "even burly grown-ups freeze in utter fear.\n" - "It is a nocturnal Pokémon that roams\n" - "about under the cloak of darkness."); - -const u8 gDusclopsPokedexText[] = _( - "It is thought that its body is hollow with\n" - "only a spectral ball of fire burning inside.\n" - "However, no one has been able to\n" - "confirm this theory as fact."); - -const u8 gRoseliaPokedexText[] = _( - "A Roselia that drinks nutritionally rich\n" - "springwater blooms with lovely flowers.\n" - "The fragrance of its flowers has the\n" - "effect of making its foes careless."); - -const u8 gSlakothPokedexText[] = _( - "It sleeps virtually all day and night long.\n" - "It doesn't change its nest its entire life,\n" - "but it sometimes travels great distances\n" - "by swimming in rivers."); - -const u8 gVigorothPokedexText[] = _( - "It can't keep still because its blood boils\n" - "with energy. It runs through the fields\n" - "and mountains all day to calm itself. If it\n" - "doesn't, it can't sleep at night."); - -const u8 gSlakingPokedexText[] = _( - "Hordes of Slaking gather around trees\n" - "when fruits come into season. They wait\n" - "around patiently for ripened fruits to fall\n" - "out of the trees."); - -const u8 gGulpinPokedexText[] = _( - "This Pokémon's stomach fluid can even\n" - "digest scrap iron. In one gulp, it can\n" - "swallow something that is as large as\n" - "itself."); - -const u8 gSwalotPokedexText[] = _( - "Its powerful stomach acid is capable of\n" - "digesting almost anything. The one thing\n" - "in the whole world a Swalot can't digest is\n" - "its own stomach."); - -const u8 gTropiusPokedexText[] = _( - "It flies by flapping its broad leaves.\n" - "The bunch of fruit that grows around its\n" - "neck is deliciously sweet. In the spring,\n" - "it scatters pollen from its neck."); - -const u8 gWhismurPokedexText[] = _( - "Its cries equal a jet plane in volume.\n" - "It inhales through its ear canals. Because\n" - "of this system, it can cry continually\n" - "without having to catch its breath."); - -const u8 gLoudredPokedexText[] = _( - "It positions the round speakers on its\n" - "head to assail foes with ultrasonic waves\n" - "at massive volume. It builds power by\n" - "stomping the ground."); - -const u8 gExploudPokedexText[] = _( - "It has sound-generating organs all over\n" - "its body. It communicates with others by\n" - "adjusting the tone and volume of the cries\n" - "it emits."); - -const u8 gClamperlPokedexText[] = _( - "A Clamperl slams its shell closed on prey\n" - "to prevent escape. The pearl it creates\n" - "upon evolution is said to be infused with\n" - "a mysterious energy."); - -const u8 gHuntailPokedexText[] = _( - "To withstand the crushing pressure of\n" - "water deep under the sea, its spine is very\n" - "thick and sturdy. Its tail, which is shaped\n" - "like a small fish, has eyes that light up."); - -const u8 gGorebyssPokedexText[] = _( - "A Gorebyss siphons the body fluids of prey\n" - "through its thin, tubular mouth. Its light\n" - "pink body color turns vivid when it\n" - "finishes feeding."); - -const u8 gAbsolPokedexText[] = _( - "It sharply senses even subtle changes in\n" - "the sky and the land to predict natural\n" - "disasters. It is a long-lived Pokémon that\n" - "has a life-span of 100 years."); - -const u8 gShuppetPokedexText[] = _( - "This Pokémon roams about deep in the\n" - "night seeking such negative emotions as\n" - "grudges and envy. It retreats to its nest\n" - "when the sun begins to rise."); - -const u8 gBanettePokedexText[] = _( - "An abandoned plush doll became this\n" - "Pokémon. They are said to live in garbage\n" - "dumps and wander about in search of the\n" - "children that threw them away."); - -const u8 gSeviperPokedexText[] = _( - "Seviper and Zangoose are eternal rivals.\n" - "It counters a Zangoose's dazzling agility\n" - "with its swordlike tail, which also oozes\n" - "a horrible poison."); - -const u8 gZangoosePokedexText[] = _( - "When it battles, it stands on its hind legs\n" - "and attacks with its sharply clawed\n" - "forelegs. Its fur bristles if it encounters\n" - "any Seviper."); - -const u8 gRelicanthPokedexText[] = _( - "A Pokémon that was once believed to have\n" - "been extinct. The species has not changed\n" - "its form for 100 million years. It walks on\n" - "the seafloor using its pectoral fins."); - -const u8 gAronPokedexText[] = _( - "A Pokémon that is clad in steel armor.\n" - "A new suit of armor is made when it evolves.\n" - "The old, discarded armor is salvaged as\n" - "metal for making iron products."); - -const u8 gLaironPokedexText[] = _( - "When two Lairon meet in the wild, they\n" - "fight for territory by bashing into each\n" - "other with their steel bodies. The sound\n" - "of their collision carries for miles."); - -const u8 gAggronPokedexText[] = _( - "Its iron horns grow longer a little at\n" - "a time. They are used to determine the\n" - "Aggron's age. The gouges in its armor are\n" - "worn with pride as mementos from battles."); - -const u8 gCastformPokedexText[] = _( - "It alters its form depending on the\n" - "weather. Changes in the climate such as\n" - "the temperature and humidity appear to\n" - "affect its cellular structure."); - -const u8 gVolbeatPokedexText[] = _( - "With their taillights lit, Volbeat fly in\n" - "a swarm, drawing geometric designs in the\n" - "night sky. They move their nests if their\n" - "pond water becomes dirty."); - -const u8 gIllumisePokedexText[] = _( - "A nocturnal Pokémon that becomes active\n" - "upon nightfall. It leads a Volbeat swarm\n" - "to draw patterns in the night sky. Over 200\n" - "different patterns have been confirmed."); - -const u8 gLileepPokedexText[] = _( - "It disguises itself as seaweed by making\n" - "its tentacles sway. Unsuspecting prey\n" - "that come too close are swallowed whole.\n" - "It became extinct 100 million years ago."); - -const u8 gCradilyPokedexText[] = _( - "It drags its heavy body along the\n" - "seafloor. It makes its nest in the shallows\n" - "of warm seas. Cradily can be seen on\n" - "beaches when the tide goes out."); - -const u8 gAnorithPokedexText[] = _( - "It was resurrected from a fossil using the\n" - "power of science. It swims by undulating\n" - "the eight wings at its sides. They were\n" - "feet that adapted to life in the sea."); - -const u8 gArmaldoPokedexText[] = _( - "Armaldo usually lives on land. However,\n" - "when it hunts for prey, it dives beneath\n" - "the ocean. It swims around using its two\n" - "large wings."); - -const u8 gRaltsPokedexText[] = _( - "A Ralts has the power to sense the\n" - "emotions of people and Pokémon with the\n" - "horns on its head. It takes cover if it\n" - "senses any hostility."); - -const u8 gKirliaPokedexText[] = _( - "A Kirlia has the psychic power to create \n" - "a rip in the dimensions and see into the\n" - "future. It is said to dance with pleasure\n" - "on sunny mornings."); - -const u8 gGardevoirPokedexText[] = _( - "It apparently does not feel the pull of\n" - "gravity because it supports itself with\n" - "psychic power. It will give its life to\n" - "protect its Trainer."); - -const u8 gBagonPokedexText[] = _( - "Although it is small, this Pokémon is very\n" - "powerful because its body is a bundle of\n" - "muscles. It launches head-butts with its\n" - "ironlike skull."); - -const u8 gShelgonPokedexText[] = _( - "It hardly eats while it awaits evolution.\n" - "It becomes hardier by enduring hunger.\n" - "Its shell peels off the instant it begins\n" - "to evolve."); - -const u8 gSalamencePokedexText[] = _( - "After many long years, its cellular\n" - "structure underwent a sudden mutation to\n" - "grow wings. When angered, it loses all\n" - "thought and rampages out of control."); - -const u8 gBeldumPokedexText[] = _( - "When Beldum gather in a swarm, they move\n" - "in perfect unison as if they were but one\n" - "Pokémon. They communicate with each other\n" - "using brain waves."); - -const u8 gMetangPokedexText[] = _( - "The claws tipping its arms pack the\n" - "destructive power to tear through thick\n" - "iron sheets as if they were silk. It flies\n" - "at over 60 miles per hour."); - -const u8 gMetagrossPokedexText[] = _( - "Metagross has four brains that are joined\n" - "by a complex neural network. As a result of\n" - "integration, this Pokémon is smarter than\n" - "a supercomputer."); - -const u8 gRegirockPokedexText[] = _( - "A Pokémon that is made entirely of rocks\n" - "and boulders. If parts of its body chip off\n" - "in battle, Regirock repairs itself by\n" - "adding new rocks."); - -const u8 gRegicePokedexText[] = _( - "Its entire body is made of Antarctic ice.\n" - "After extensive studies, researchers\n" - "believe the ice was formed during an\n" - "ice age."); - -const u8 gRegisteelPokedexText[] = _( - "Its body is harder than any other kind of\n" - "metal. The body metal is composed of a\n" - "mysterious substance. Not only is it hard,\n" - "it shrinks and stretches flexibly."); - -const u8 gKyogrePokedexText[] = _( - "Kyogre has appeared in mythology as the\n" - "creator of the sea. After long years of\n" - "feuding with Groudon, it took to sleep at\n" - "the bottom of the sea."); - -const u8 gGroudonPokedexText[] = _( - "Groudon has appeared in mythology as the\n" - "creator of the land. It sleeps in magma\n" - "underground and is said to make volcanoes\n" - "erupt on awakening."); - -const u8 gRayquazaPokedexText[] = _( - "A Pokémon that flies endlessly in the\n" - "ozone layer. It is said it would descend\n" - "to the ground if Kyogre and Groudon\n" - "were to fight."); - -const u8 gLatiasPokedexText[] = _( - "They make a small herd of only several\n" - "members. They rarely make contact with\n" - "people or other Pokémon. They disappear\n" - "if they sense enemies."); - -const u8 gLatiosPokedexText[] = _( - "Even in hiding, it can detect the locations\n" - "of others and sense their emotions since\n" - "it has telepathy. Its intelligence allows\n" - "it to understand human languages."); - -const u8 gJirachiPokedexText[] = _( - "Jirachi is said to make wishes come true.\n" - "While it sleeps, a tough crystalline shell\n" - "envelops the body to protect it from\n" - "enemies."); - -const u8 gDeoxysPokedexText[] = _( - "Deoxys emerged from a virus that came\n" - "from space. It is highly intelligent and\n" - "can shoot lasers from the crystalline\n" - "organ on its chest."); - -const u8 gChimechoPokedexText[] = _( - "They fly about very actively when the hot\n" - "season arrives. They communicate among\n" - "themselves using seven different and\n" - "distinguishing cries."); - -#if P_GEN_4_POKEMON == TRUE -const u8 gTurtwigPokedexText[] = _( - "The shell on its back is made of soil. \n" - "On a very healthy Turtwig, the shell \n" - "should feel moist. The leaf on its head\n" - "wilts if it is thirsty."); - -const u8 gGrotlePokedexText[] = _( - "A Grotle that lives in the forest is said\n" - "to have its own secret springwater well. \n" - "It carries fellow Pokémon there on \n" - "its back."); - -const u8 gTorterraPokedexText[] = _( - "Some Pokémon are born on a Torterra's\n" - "back and spend their entire life there.\n" - "Ancient people imagined that beneath \n" - "the ground, a gigantic Torterra dwelled."); - -const u8 gChimcharPokedexText[] = _( - "Its fiery rear end is fueled by gas made\n" - "in its belly. Before going to sleep,\n" - "Chimchar extinguish the flame on their\n" - "tails to prevent fires."); - -const u8 gMonfernoPokedexText[] = _( - "It carefully controls the intensity of\n" - "the flame on its tail, so as to keep its\n" - "foes at an adequate distance.\n" - "Its fiery tail is but one weapon."); - -const u8 gInfernapePokedexText[] = _( - "Its crown of fire is indicative of its\n" - "fiery nature. It uses a special kind of\n" - "martial arts involving all of its limbs to\n" - "take on any opponent."); - -const u8 gPiplupPokedexText[] = _( - "A poor walker, it often falls down. However,\n" - "its strong pride makes it puff up its chest\n" - "without a care. It's difficult to bond with\n" - "since it won't listen to its Trainer."); - -const u8 gPrinplupPokedexText[] = _( - "Because every Prinplup considers itself\n" - "to be the most important, they can never\n" - "form a group. It searches for prey in\n" - "icy seas."); - -const u8 gEmpoleonPokedexText[] = _( - "The three horns that extend from its beak\n" - "attest to its power. It avoids unnecessary\n" - "disputes, but it will decimate anything\n" - "that threatens its pride."); - -const u8 gStarlyPokedexText[] = _( - "They flock around mountains and fields,\n" - "chasing after bug Pokémon. However,\n" - "they bicker if the group grows too big.\n" - "Their singing is noisy and annoying."); - -const u8 gStaraviaPokedexText[] = _( - "Recognizing their own weakness, they\n" - "maintain huge flocks. Fierce scuffles\n" - "break out between various flocks.\n" - "When alone, a Staravia cries noisily."); - -const u8 gStaraptorPokedexText[] = _( - "When Staravia evolve into Staraptor,\n" - "they leave the flock to live alone. It has\n" - "a savage nature. It will courageously\n" - "challenge foes that are much larger."); - -const u8 gBidoofPokedexText[] = _( - "A comparison revealed that Bidoof's front\n" - "teeth grow at the same rate as Rattata's.\n" - "It constantly gnaws on logs and rocks to\n" - "whittle down its front teeth."); - -const u8 gBibarelPokedexText[] = _( - "It makes its nest by damming streams\n" - "with bark and mud. A river dammed by\n" - "Bibarel will never overflow its banks,\n" - "which is appreciated by people nearby."); - -const u8 gKricketotPokedexText[] = _( - "It shakes its head back to front,\n" - "causing its antennae to hit each other\n" - "and sound like a xylophone.\n" - "These sounds are fall hallmarks."); - -const u8 gKricketunePokedexText[] = _( - "It signals its emotions with its melodies.\n" - "There is a village that hosts a contest\n" - "based on the amazingly variable cries\n" - "of this Pokémon."); - -const u8 gShinxPokedexText[] = _( - "It rapidly contracts and relaxes its\n" - "muscles to generate electricity. Its\n" - "body shines if endangered. It flees\n" - "while the foe is momentarily blinded."); - -const u8 gLuxioPokedexText[] = _( - "Strong electricity courses through the\n" - "tips of its sharp claws. A light scratch\n" - "has enough amperage to cause fainting\n" - "in foes."); - -const u8 gLuxrayPokedexText[] = _( - "It has eyes which can see through\n" - "anything. Luxray's ability to see\n" - "through objects comes in handy when\n" - "it's scouting for danger."); - -const u8 gBudewPokedexText[] = _( - "Over the winter, it closes its bud and\n" - "endures the cold. Sensitive to changing\n" - "temperature, the bud is said to bloom\n" - "when it feels the sun's warm touch."); - -const u8 gRoseradePokedexText[] = _( - "Its sweet aroma attracts prey.\n" - "With the movements of a dancer,\n" - "it strikes with whips that are densely\n" - "lined with poison thorns."); - -const u8 gCranidosPokedexText[] = _( - "A lifelong jungle dweller from 100 million\n" - "years ago, its skull is as hard as iron. \n" - "It would snap obstructing trees with\n" - "headbutts."); - -const u8 gRampardosPokedexText[] = _( - "The result of repeated headbutts\n" - "is a skull grown thick and hard.\n" - "However, its brain has shrunk in size\n" - "compared with Cranidos's."); - -const u8 gShieldonPokedexText[] = _( - "This Pokémon lived in primeval jungles.\n" - "Few enemies would have been willing to\n" - "square off against its heavily armored\n" - "face, so it's thought."); - -const u8 gBastiodonPokedexText[] = _( - "Their rock-hard faces serve to protect\n" - "them from any frontral attacks.\n" - "When attacked, they form a wall.\n" - "They shielded their young in that way."); - -const u8 gBurmyPokedexText[] = _( - "It is covered with a cloak that shelters\n" - "it from the cold. If its cloak is broken\n" - "in battle, it quickly remakes the cloak\n" - "with materials nearby."); - -const u8 gWormadamPokedexText[] = _( - "Its appearance changes depending\n" - "on where Burmy evolved. The materials\n" - "on hand become a part of its body.\n" - "The cloak is never shed."); - -const u8 gMothimPokedexText[] = _( - "It does not keep a nest. While it\n" - "loves floral honey, it won't gather\n" - "any itself. Instead, it plots to steal\n" - "honey collected by Combee."); - -const u8 gCombeePokedexText[] = _( - "A Pokémon formed by three others.\n" - "It constantly gathers honey from flowers\n" - "to please Vespiquen. At night, they\n" - "cluster to form a beehive and sleep."); - -const u8 gVespiquenPokedexText[] = _( - "It houses its colony in cells in its body\n" - "and releases various pheromones to\n" - "make those grubs do its bidding.\n" - "There is only one in a colony."); - -const u8 gPachirisuPokedexText[] = _( - "A pair may be seen rubbing their cheek\n" - "pouches together in an effort to share\n" - "stored electricity. It stores them with\n" - "berries in tree holes."); - -const u8 gBuizelPokedexText[] = _( - "It inflates its flotation sac, keeping its\n" - "face above water in order to watch for\n" - "prey movement. It swims by rotating its\n" - "two tails like a screw."); - -const u8 gFloatzelPokedexText[] = _( - "Its flotation sac developed as a result\n" - "of pursuing aquatic prey. It can double\n" - "as a rubber raft. It assists in the rescues\n" - "of drowning people."); - -const u8 gCherubiPokedexText[] = _( - "The small ball holds the nutrients needed\n" - "for evolution. Apparently, it is also very\n" - "sweet and tasty. Pokémon like Starly and\n" - "Taillow try to peck it off."); - -const u8 gCherrimPokedexText[] = _( - "During times of strong sunlight, its bud\n" - "blooms, its petals open fully, and it\n" - "becomes very active. It folds back into\n" - "a bud if sunlight wanes."); - -const u8 gShellosPokedexText[] = _( - "Its shape and coloration vary, depending\n" - "on its habitat. Beware of pushing strongly\n" - "on its squishy body, as it makes a\n" - "mysterious purple fluid ooze out."); - -const u8 gGastrodonPokedexText[] = _( - "It lives in shallow tidal pools.\n" - "Gastrodon once had a huge shell for\n" - "protection in ancient times. There are\n" - "traces of it left in its cells."); - -const u8 gAmbipomPokedexText[] = _( - "They live on large trees. Split into two,\n" - "the tails are so adept at handling and\n" - "doing things, Ambipom rarely uses\n" - "its hands now."); - -const u8 gDrifloonPokedexText[] = _( - "Because of the way it floats aimlessly,\n" - "an old folktale calls it a “Signpost for\n" - "Wandering Spirits.” Children holding\n" - "them sometimes vanish."); - -const u8 gDrifblimPokedexText[] = _( - "Even while under careful observation,\n" - "large flocks of Drifblim flying at dusk\n" - "will inexplicably disappear from view.\n" - "No one knows where they go."); - -const u8 gBunearyPokedexText[] = _( - "You can tell how it feels by the way\n" - "it rolls its ears. When it's scared,\n" - "both ears are rolled up. When it senses\n" - "danger, it perks them up."); - -const u8 gLopunnyPokedexText[] = _( - "An extremely cautious Pokémon.\n" - "It is very conscious of its looks and\n" - "never fails to groom its ears.\n" - "It runs with sprightly jumps."); - -const u8 gMismagiusPokedexText[] = _( - "Its cries sound like incantations.\n" - "Those hearing it are tormented by\n" - "headaches and hallucinations.\n" - "It appears where you least expect it."); - -const u8 gHonchkrowPokedexText[] = _( - "Becoming active at night, it is known\n" - "to swarm with numerous Murkrow in tow.\n" - "It is said that it never forgives the\n" - "mistakes of its cronies."); - -const u8 gGlameowPokedexText[] = _( - "It is a very fickle Pokémon, which is \n" - "very popular among some. It claws its\n" - "Trainer's nose if it isn't fed and\n" - "purrs when affectionate."); - -const u8 gPuruglyPokedexText[] = _( - "It is a brazen brute that barges its way\n" - "into another Pokémon's nest and claims\n" - "it as its own. It binds its body with its\n" - "tails to make itself look bigger."); - -const u8 gChinglingPokedexText[] = _( - "There is an orb inside its mouth.\n" - "When it hops, the orb bounces all\n" - "over and makes a ringing sound.\n" - "It can cry for an awfully long time."); - -const u8 gStunkyPokedexText[] = _( - "It protects itself by spraying a\n" - "nose-curling, stinky fluid from its rear\n" - "to repel attackers. The stench lingers\n" - "for 24 hours."); - -const u8 gSkuntankPokedexText[] = _( - "It attacks by spraying a horribly smelly\n" - "fluid from the tip of its tail. The fluid\n" - "smells worse the longer it is allowed\n" - "to fester."); - -const u8 gBronzorPokedexText[] = _( - "Implements shaped like it were discovered\n" - "in ancient tombs. There are researchers\n" - "who believe this Pokémon reflected like a\n" - "mirror in the distant past."); - -const u8 gBronzongPokedexText[] = _( - "In ages past, this Pokémon was revered as\n" - "a bringer of rain. One caused a news stir\n" - "when it was dug up at a construction site\n" - "after a 2000-year sleep."); - -const u8 gBonslyPokedexText[] = _( - "Bonsly prefers an arid atmosphere.\n" - "In order to adjust the level of fluids\n" - "in its body, it exudes water from its eyes.\n" - "This makes it appear to be crying."); - -const u8 gMimeJrPokedexText[] = _( - "In an attempt to confuse its enemy,\n" - "it mimics the enemy's movements.\n" - "Once mimicked, the foe cannot take\n" - "its eyes off this Pokémon."); - -const u8 gHappinyPokedexText[] = _( - "It carries a round white rock in its\n" - "belly pouch. If it gets along well with\n" - "someone, it will sometimes give that\n" - "person the rock."); - -const u8 gChatotPokedexText[] = _( - "It mimics the cries of other Pokémon to\n" - "trick them into thinking it's one of them.\n" - "This way they won't attack it. It can\n" - "also learn and speak human words."); - -const u8 gSpiritombPokedexText[] = _( - "A Pokémon that was formed by 108 spirits.\n" - "Its constant mischief and misdeeds\n" - "resulted in it being bound to an\n" - "Odd Keystone by a mysterious spell."); - -const u8 gGiblePokedexText[] = _( - "It nests in horizontal holes warmed by\n" - "geothermal heat. Foes who stray too\n" - "close can expect to be pounced on\n" - "and bitten."); - -const u8 gGabitePokedexText[] = _( - "Shiny objects are its passion. It can be\n" - "found in its cave, scarcely moving,\n" - "its gaze fixed on the jewels it's amassed\n" - "or Carbink it has caught."); - -const u8 gGarchompPokedexText[] = _( - "When it folds up its body and extends its\n" - "wings, it looks like a jet plane. It is\n" - "covered in fine scales that reduce drag,\n" - "enabling it to fly at high speeds."); - -const u8 gMunchlaxPokedexText[] = _( - "When it finds something that looks like\n" - "it might be edible, it goes right ahead\n" - "and swallows it whole. That's why it gets\n" - "fatter day by day."); - -const u8 gRioluPokedexText[] = _( - "It can discern the physical and emotional\n" - "states of people, Pokémon, and other\n" - "natural things from the shape of their\n" - "aura waves."); - -const u8 gLucarioPokedexText[] = _( - "It understands human speech.\n" - "It is said that no foe can remain invisible\n" - "to Lucario, since it can detect Auras.\n" - "Even foes it could not otherwise see."); - -const u8 gHippopotasPokedexText[] = _( - "Hippopotas shuts its nostrils tight when\n" - "travelling through sand. Instead of\n" - "perspiration, it expels grains of sand\n" - "from its body."); - -const u8 gHippowdonPokedexText[] = _( - "It is surprisingly quick to anger.\n" - "It brandishes its gaping mouth in a\n" - "display of fearsome strength and raises\n" - "vast quantities of sand while attacking."); - -const u8 gSkorupiPokedexText[] = _( - "It grips prey with its tail claws and\n" - "injects poison. It tenaciously hangs\n" - "on until the poison takes.\n" - "It can survive a year without food."); - -const u8 gDrapionPokedexText[] = _( - "Possessing a sturdy build, it takes\n" - "pride in its strength. It has the power\n" - "in its clawed arms to make scrap\n" - "out of a car."); - -const u8 gCroagunkPokedexText[] = _( - "Croagunk rarely fights fairly. Inflating\n" - "its poison sacs, it fills the area with\n" - "an odd sound and hits flinching\n" - "opponents with a poison jab."); - -const u8 gToxicroakPokedexText[] = _( - "Swaying and dodging the attacks\n" - "of its foes, it weaves its flexible body\n" - "in close, then lunges out with its\n" - "poisonous claws."); - -const u8 gCarnivinePokedexText[] = _( - "Hanging from branches using its\n" - "tentacles, it looks like a plant.\n" - "It attracts prey with its sweet-smelling\n" - "saliva, then chomps down."); - -const u8 gFinneonPokedexText[] = _( - "Its double tail fins propel its energetic\n" - "jumps. When it breaks the surface of the\n" - "sea, Wingull swoop down to grab it on\n" - "the fly."); - -const u8 gLumineonPokedexText[] = _( - "Lumineon swimming in the darkness\n" - "of the deep sea look like stars shining\n" - "in the night sky. It competes for food\n" - "with Lanturn."); - -const u8 gMantykePokedexText[] = _( - "When it swims close to the surface\n" - "of the ocean, people aboard ships are\n" - "able to observe the pattern on its back.\n" - "It often swims in a school of Remoraid."); - -const u8 gSnoverPokedexText[] = _( - "During cold seasons, it migrates to the\n" - "mountain's lower reaches. Seemingly\n" - "curious about people, they gather around\n" - "footsteps they find on snowy mountains."); - -const u8 gAbomasnowPokedexText[] = _( - "It lives a quiet life on mountains that\n" - "are perpetually covered in snow. It hides\n" - "itself by whipping up blizzards.\n" - "It is also known as “The Ice Monster.”"); - -const u8 gWeavilePokedexText[] = _( - "They travel in groups of four or five,\n" - "leaving signs for one another on trees\n" - "and rocks. They bring down their prey\n" - "with coordinated attacks."); - -const u8 gMagnezonePokedexText[] = _( - "As it zooms through the sky, this\n" - "Pokémon seems to be receiving signals\n" - "of unknown origin, while transmitting its\n" - "own signals of unknown purpose."); - -const u8 gLickilickyPokedexText[] = _( - "The long tongue is always soggy with\n" - "slobber. The saliva contains a solvent\n" - "that causes numbness. Getting too close\n" - "to it will leave you soaked with drool."); - -const u8 gRhyperiorPokedexText[] = _( - "It can launch a rock held in its hand\n" - "like a missile by tightening and then\n" - "expanding its muscles instantaneously.\n" - "Geodude are shot at rare times."); - -const u8 gTangrowthPokedexText[] = _( - "It ensnares prey by extending arms made\n" - "of vines. Even if one of its arms is eaten,\n" - "it's fine. The Pokémon regenerates quickly\n" - "and will go right back to normal."); - -const u8 gElectivirePokedexText[] = _( - "When it gets excited, it thumps its chest.\n" - "With every thud, thunder roars, electric\n" - "sparks shower all around and blue sparks\n" - "begin to crackle between its horns."); - -const u8 gMagmortarPokedexText[] = _( - "According to what is known, a single pair\n" - "of male and female Magmortar lives in\n" - "one volcano. From its arm, it launches\n" - "fireballs hotter than 3,600ºF."); - -const u8 gTogekissPokedexText[] = _( - "As everyone knows, it visits peaceful\n" - "regions, bringing them gifts of kindness\n" - "and sweet blessings. It will never appear\n" - "where there is strife."); - -const u8 gYanmegaPokedexText[] = _( - "This six-legged Pokémon is easily capable\n" - "of transporting an adult in flight. It is\n" - "adept at biting apart foes while flying\n" - "by at high speed."); - -const u8 gLeafeonPokedexText[] = _( - "Its cellular composition is closer to\n" - "that of a plant than an animal. It uses\n" - "photosynthesis to produce its energy\n" - "supply without eating food."); - -const u8 gGlaceonPokedexText[] = _( - "It can control its body temperature\n" - "at will. This enables it to freeze the\n" - "moisture in the atmosphere, creating\n" - "flurries of diamond dust."); - -const u8 gGliscorPokedexText[] = _( - "Gliscor observes prey while hanging\n" - "upside down from branches. Its flight is\n" - "soundless. When the chance presents\n" - "itself, it swoops!"); - -const u8 gMamoswinePokedexText[] = _( - "A frozen Mamoswine was dug from ice\n" - "dating back 10,000 years. It woke up to\n" - "much amazement. This Pokémon has been\n" - "around for a long, long, long time."); - -const u8 gPorygonZPokedexText[] = _( - "In order to create a more advanced\n" - "Pokémon, an additional program was\n" - "installed, but apparently it contained a\n" - "defect that made it move oddly."); - -const u8 gGalladePokedexText[] = _( - "A master of courtesy and swordsmanship,\n" - "it fights using extending swords on its\n" - "elbows when trying to protect someone.\n" - "It can sense what its foe is thinking."); - -const u8 gProbopassPokedexText[] = _( - "It freely controls three units called\n" - "Mini-Noses using magnetic force.\n" - "With them, it can attack its foes from\n" - "three directions."); - -const u8 gDusknoirPokedexText[] = _( - "This feared Pokémon is said to travel to\n" - "worlds unknown. Some even believe that\n" - "it takes lost spirits into its pliant body\n" - "and guides them home."); - -const u8 gFroslassPokedexText[] = _( - "When it finds people or Pokémon it likes,\n" - "it freezes them and takes them to its\n" - "chilly den, where they become its\n" - "decorations."); - -const u8 gRotomPokedexText[] = _( - "Research continues on this Pokémon.\n" - "Its electric-like body can enter some\n" - "kinds of machines and take control,\n" - "in order to make mischief."); - -const u8 gUxiePokedexText[] = _( - "Known as ”The Being of Knowledge,”\n" - "according to some sources, this Pokémon\n" - "provided people with the intelligence\n" - "necessary to solve various problems."); - -const u8 gMespritPokedexText[] = _( - "Although it slumbers at the bottom of a\n" - "lake, its spirit is said to leave its body\n" - "and flitter on the water surface. It\n" - "taught humans of sorrow, pain, and joy."); - -const u8 gAzelfPokedexText[] = _( - "This Pokémon is said to have endowed\n" - "humans with the determination needed to\n" - "do things. It is thought that Uxie, Mesprit\n" - "and Azelf all came from the same egg."); - -const u8 gDialgaPokedexText[] = _( - "A Pokémon spoken of in legend.\n" - "It completely controls the flow of time.\n" - "It uses its power to travel at will\n" - "through the past and future."); - -const u8 gPalkiaPokedexText[] = _( - "Palkia has the ability to distort space.\n" - "Its total control over the boundaries of\n" - "space enable it to transport itself to\n" - "faraway places and other dimensions."); - -const u8 gHeatranPokedexText[] = _( - "Boiling blood, like magma, circulates\n" - "through its body. It dwells in volcanic\n" - "caves, using its cross-shaped feet\n" - "to crawl on ceilings and walls."); - -const u8 gRegigigasPokedexText[] = _( - "There is an enduring legend that\n" - "states this Pokémon shaped Regirock,\n" - "Regice, and Registeel out of clay, ice,\n" - "and magma."); - -const u8 gGiratinaPokedexText[] = _( - "This Pokémon is said to live in a world\n" - "on the reverse side of ours, where common\n" - "knowledge is distorted and strange.\n" - "It was banished for its violence."); - -const u8 gCresseliaPokedexText[] = _( - "Those who sleep holding one of\n" - "Cresselia's feathers are assured of\n" - "joyful dreams. It is said to represent\n" - "the crescent moon."); - -const u8 gPhionePokedexText[] = _( - "When the water warms, they inflate the\n" - "flotation sac on their heads and drift\n" - "languidly on the sea in packs.\n" - "It always returns to where it was born."); - -const u8 gManaphyPokedexText[] = _( - "Water makes up 80% of its body.\n" - "It starts its life with a wondrous power\n" - "that permits it to bond with any kind\n" - "of Pokémon."); - -const u8 gDarkraiPokedexText[] = _( - "It chases people and Pokémon from its\n" - "territory by causing them to experience\n" - "deep, nightmarish slumbers. However,\n" - "it means no harm."); - -const u8 gShayminPokedexText[] = _( - "The flowers all over its body burst into\n" - "bloom if it is lovingly hugged and senses\n" - "gratitude. The blooming of Gracideas\n" - "confers the power of flight upon it."); - -const u8 gArceusPokedexText[] = _( - "It is told in mythology that this Pokémon\n" - "emerged from an egg and shaped all there\n" - "is in this world, before the universe\n" - "even existed."); -#endif - -#if P_GEN_5_POKEMON == TRUE -const u8 gVictiniPokedexText[] = _( - "This Pokémon brings victory.\n" - "It is said that Trainers with Victini\n" - "always win, regardless of the type\n" - "of encounter."); - -const u8 gSnivyPokedexText[] = _( - "It is very intelligent and calm.\n" - "Being exposed to lots of sunlight makes\n" - "its movements swifter. When they are\n" - "not feeling well, their tails droop."); - -const u8 gServinePokedexText[] = _( - "When it gets dirty, its leaves can't be\n" - "used in photosynthesis, so it always keeps\n" - "clean. They avoid attacks by sinking into\n" - "the shadows of thick foliage."); - -const u8 gSerperiorPokedexText[] = _( - "They raise their heads to intimidate foes,\n" - "but only give it their all when fighting\n" - "powerful opponents who are not fazed\n" - "by the glare from its noble eyes."); - -const u8 gTepigPokedexText[] = _( - "It loves to eat roasted berries, but\n" - "sometimes it gets too excited and burns\n" - "them to a crisp. It blows fire through\n" - "its nose."); - -const u8 gPignitePokedexText[] = _( - "The more it eats, the more fuel it has\n" - "to make the fire in its stomach stronger.\n" - "When it is angered, the intensity of the\n" - "flame increases."); - -const u8 gEmboarPokedexText[] = _( - "It is adept at using many different moves.\n" - "It can throw a fire punch by setting its\n" - "fists on fire with its fiery chin.\n" - "It cares deeply about its friends."); - -const u8 gOshawottPokedexText[] = _( - "The scalchop on its stomach isn't just\n" - "used for battle, it can be used to break\n" - "open hard berries as well. It is made\n" - "from the same element as its claws."); - -const u8 gDewottPokedexText[] = _( - "Strict training and disclipine leads it\n" - "to master its flowing double-scalchop\n" - "technique. Scalchop techniques differ\n" - "from one Dewott to another."); - -const u8 gSamurottPokedexText[] = _( - "One swing of the seamitars attached\n" - "to its armor can fell an opponent.\n" - "A simple glare from one of them is\n" - "enough to intimidate most enemies."); - -const u8 gPatratPokedexText[] = _( - "Extremely cautious, they take shifts to\n" - "maintain a constant watch of their nest.\n" - "Using food stored in cheek pouches,\n" - "they can keep watch for days."); - -const u8 gWatchogPokedexText[] = _( - "Using luminescent matter, it makes its\n" - "eyes and body glow and stuns attacking\n" - "opponents. Keen eyesight lets them see\n" - "in the dark."); - -const u8 gLillipupPokedexText[] = _( - "It faces strong opponents with great\n" - "courage. Because it doesn't yelp, it's\n" - "extremely popular with Trainers who live\n" - "in apartment buildings."); - -const u8 gHerdierPokedexText[] = _( - "Its dense black fur grows continuously.\n" - "The high cost of keeping its hard fur\n" - "properly groomed makes this a\n" - "troublesome Pokémon to train."); - -const u8 gStoutlandPokedexText[] = _( - "Intelligent, good-natured, and valiant,\n" - "there could be no concern that it would\n" - "ever attack people. Some parents even\n" - "trust it to babysit."); - -const u8 gPurrloinPokedexText[] = _( - "Their deceptively cute act is the\n" - "perfect ruse. They steal from people for\n" - "fun, but their victims can't help but\n" - "forgive them."); - -const u8 gLiepardPokedexText[] = _( - "Many Trainers are drawn to their\n" - "beautiful form and fur. These Pokémon\n" - "vanish and appear unexpectedly.\n" - "They run silently in the night."); - -const u8 gPansagePokedexText[] = _( - "This Pokémon dwells deep in the forest.\n" - "It's good at finding berries and gathers\n" - "them from all over. It's kind enough to\n" - "share them with friends."); - -const u8 gSimisagePokedexText[] = _( - "Ill tempered, it attacks enemies by\n" - "swinging its barbed tail around wildly.\n" - "The leaf growing on its head is\n" - "very bitter."); - -const u8 gPansearPokedexText[] = _( - "The fire within the tuft on its head can\n" - "reach up to 600ºF. Very intelligent,\n" - "it roasts berries before eating them.\n" - "It likes to help people."); - -const u8 gSimisearPokedexText[] = _( - "It loves sweets because they become\n" - "energy for the fire burning inside its\n" - "body. It scatters embers from its head\n" - "and tail to sear its opponents."); - -const u8 gPanpourPokedexText[] = _( - "The water stored inside the tuft of its\n" - "head is rich in nutrients. It waters\n" - "plants using its tail, plants that\n" - "receive its water grow large."); - -const u8 gSimipourPokedexText[] = _( - "It can shoot highly-pressurised water\n" - "from its tail with enough power to\n" - "break through a solid concrete wall.\n" - "It prefers places with clean water."); - -const u8 gMunnaPokedexText[] = _( - "This Pokémon appears before people\n" - "and Pokémon who are having nightmares\n" - "and eats those dreams. Munna always\n" - "float in the air. "); - -const u8 gMusharnaPokedexText[] = _( - "The mist emanating from their foreheads\n" - "is packed with the dreams of people and\n" - "Pokémon. It changes into different colors\n" - "depending on the dream that was eaten."); - -const u8 gPidovePokedexText[] = _( - "This very forgetful Pokémon will wait for\n" - "a new order from its Trainer even though\n" - "it already has one. Flocks often gather\n" - "in parks and plazas."); - -const u8 gTranquillPokedexText[] = _( - "No matter where in the world it goes,\n" - "it knows where its nest is, so it can\n" - "always return to its Trainer's location\n" - "regardless of the distance."); - -const u8 gUnfezantPokedexText[] = _( - "Males have plumage on their heads.\n" - "The females' flying abilities surpass\n" - "those of the males. They will only let\n" - "themselves feel close to their Trainers."); - -const u8 gBlitzlePokedexText[] = _( - "Its mane shines when it discharges\n" - "electricity. They use the frequency and\n" - "rhythm of these flashes to communicate\n" - "with one another."); - -const u8 gZebstrikaPokedexText[] = _( - "When Zebstrika run at full speed, the\n" - "sound of thunder reverberates. It is\n" - "dangerous when it's angry as it shoots\n" - "lightning from its mane in all directions."); - -const u8 gRoggenrolaPokedexText[] = _( - "The hexagonal cavity is its ear.\n" - "It walks in the direction of sounds it\n" - "hears, but if the sounds cease, it panics\n" - "and topples over."); - -const u8 gBoldorePokedexText[] = _( - "Its orange crystal is a mass of energy.\n" - "Just one crystal fragment would provide\n" - "enough fuel for a hundred dump trucks.\n" - "When it is healthy, its core sticks out."); - -const u8 gGigalithPokedexText[] = _( - "The blasts of energy it makes from\n" - "sunbeams have terrifying power.\n" - "However, it's not able to fire its blasts\n" - "at night or on rainy days."); - -const u8 gWoobatPokedexText[] = _( - "Its habitat is dark forests and caves.\n" - "Suction from its nostrils enables it\n" - "to stick to cave walls during sleep.\n" - "It leaves a heart-shaped mark behind."); - -const u8 gSwoobatPokedexText[] = _( - "Anyone who comes into contact with\n" - "the ultrasonic waves emitted by a\n" - "courting male experiences a positive\n" - "mood shift."); - -const u8 gDrilburPokedexText[] = _( - "It can dig through the ground at a\n" - "speed of 30 mph by spinning its body.\n" - "It could give a car running aboveground\n" - "a good race."); - -const u8 gExcadrillPokedexText[] = _( - "More than 300 feet below the surface,\n" - "they build mazelike nests. Their activity\n" - "can be destructive to subway tunnels,\n" - "but it can also help with construction."); - -const u8 gAudinoPokedexText[] = _( - "Its auditory sense is astounding.\n" - "Using the feelers on its ears, it can tell\n" - "how someone is feeling or when an egg\n" - "might hatch."); - -const u8 gTimburrPokedexText[] = _( - "These Pokémon appear at building\n" - "sites and help out with construction.\n" - "They always carry squared logs.\n" - "As they grow, they carry bigger logs."); - -const u8 gGurdurrPokedexText[] = _( - "They strengthen their bodies by carrying\n" - "steel beams. This Pokémon is so muscular\n" - "and strongly built that even a group of\n" - "wrestlers could not make it budge an inch."); - -const u8 gConkeldurrPokedexText[] = _( - "They use concrete pillars as walking\n" - "canes. Rather than rely solely on force,\n" - "they master moves that utilize the\n" - "centrifugal force of spinning concrete."); - -const u8 gTympolePokedexText[] = _( - "By vibrating its cheeks, it emits sound\n" - "waves imperceptible to humans. It uses\n" - "the rhythm of these sounds to talk and\n" - "warns others of danger."); - -const u8 gPalpitoadPokedexText[] = _( - "It lives in the water and on land.\n" - "When they vibrate the bumps on their\n" - "heads, they can make waves in water\n" - "or earthquake-like vibrations on land."); - -const u8 gSeismitoadPokedexText[] = _( - "It increases the power of its punches\n" - "by vibrating the bumps on its fists.\n" - "They can also shoot paralyzing liquid\n" - "from their head bumps."); - -const u8 gThrohPokedexText[] = _( - "When it tightens its belt, it becomes\n" - "stronger. Wild Throh use vines to weave\n" - "their own belts. It changes belts as it\n" - "gets more powerful."); - -const u8 gSawkPokedexText[] = _( - "The sound of Sawk punching boulders\n" - "and trees can be heard all the way from\n" - "the mountains where they train.\n" - "Disturbing their training angers them."); - -const u8 gSewaddlePokedexText[] = _( - "It chews up leaves and sews them with\n" - "sticky thread extruded from its mouth.\n" - "Since this Pokémon makes its own clothes,\n" - "it is a mascot for fashion designers."); - -const u8 gSwadloonPokedexText[] = _( - "Forests where Swadloon live have\n" - "superb foliage because the nutrients\n" - "they make from fallen leaves nourish\n" - "the plant life."); - -const u8 gLeavannyPokedexText[] = _( - "It keeps its eggs warm with heat from\n" - "fermenting leaves. It also uses leaves to\n" - "weave warm wrappings for Sewaddle by\n" - "using the silk secreted from its mouth."); - -const u8 gVenipedePokedexText[] = _( - "Using the feelers on its head and tail,\n" - "it picks up vibrations in the air to\n" - "determine its prey's location and state.\n" - "It is brutally aggressive."); - -const u8 gWhirlipedePokedexText[] = _( - "Storing energy for evolution, it sits.\n" - "But when attacked, it spins its body at\n" - "high speed like a wheel and then\n" - "crashes furiously into its opponent."); - -const u8 gScolipedePokedexText[] = _( - "With quick movements, it chases down\n" - "its foes, attacking relentlessly with its\n" - "horns until it prevails. Then it finishes\n" - "them off with deadly poison."); - -const u8 gCottoneePokedexText[] = _( - "When it finds others of its kind, they all\n" - "stick together. When enough of them\n" - "have collected, the mass resembles a\n" - "cumulonimbus cloud."); - -const u8 gWhimsicottPokedexText[] = _( - "It rides on the wind and slips into\n" - "people's homes. After it has turned a\n" - "room into a cotton-filled mess, it giggles\n" - "to itself and takes off."); - -const u8 gPetililPokedexText[] = _( - "By pruning the leaves on its head with\n" - "regularity, this Pokémon can be grown\n" - "into a fine plump shape. These bitter\n" - "leaves refresh those who eat them."); - -const u8 gLilligantPokedexText[] = _( - "Even veteran Trainers face a challenge\n" - "in getting its beautiful flower to bloom.\n" - "It withers away if a trainer does not\n" - "take good care of it."); - -const u8 gBasculinPokedexText[] = _( - "Red and blue Basculin usually do not\n" - "get along, but sometimes members of\n" - "one school mingle with the other's school.\n" - "These Pokémon are very hostile."); - -const u8 gSandilePokedexText[] = _( - "It conceals itself in the sand and\n" - "chomps down on the legs of any prey\n" - "that unwarily walk over it. Its favorite\n" - "food is Trapinch."); - -const u8 gKrokorokPokedexText[] = _( - "They move in groups of a few individuals.\n" - "Thanks to the special membrane covering\n" - "its eyes, it can see its surroundings\n" - "clearly, even in the dead of night."); - -const u8 gKrookodilePokedexText[] = _( - "Very violent Pokémon, they never allow\n" - "their prey to escape. Their jaws are so\n" - "powerful, they can crush the body of\n" - "an automobile."); - -const u8 gDarumakaPokedexText[] = _( - "When its internal fire is burning, it\n" - "cannot calm down and it runs around.\n" - "When the fire diminishes, it pulls its\n" - "limbs into its body and falls asleep."); - -const u8 gDarmanitanPokedexText[] = _( - "When one is injured in a fierce battle,\n" - "it transforms into a stone statue.\n" - "Then it meditates and sharpens its\n" - "mind and fights on mentally."); - -const u8 gMaractusPokedexText[] = _( - "Arid regions are their habitat.\n" - "When it moves rhythmically, it makes a\n" - "sound similar to maracas, making the\n" - "surprised Pokémon flee."); - -const u8 gDwebblePokedexText[] = _( - "It makes a hole in a stone of a suitable\n" - "size. If that rock breaks, the Pokémon\n" - "remains agitated until it locates\n" - "a replacement."); - -const u8 gCrustlePokedexText[] = _( - "Competing for territory, Crustle fight\n" - "viciously. The one whose boulder is\n" - "broken is the loser of the battle and\n" - "begins to weaken."); - -const u8 gScraggyPokedexText[] = _( - "Its skin has a rubbery elasticity, so it\n" - "can reduce damage by defensively\n" - "pulling its skin up to its neck.\n" - "Its skull is massively thick."); - -const u8 gScraftyPokedexText[] = _( - "Groups of them beat up anything that\n" - "enters their territory. The one with the\n" - "biggest crest is the group leader, and\n" - "is the most respected."); - -const u8 gSigilyphPokedexText[] = _( - "The guardians of an ancient city, they\n" - "always fly the same route while keeping\n" - "watch for invaders. They use their\n" - "psychic power to attack enemies."); - -const u8 gYamaskPokedexText[] = _( - "These Pokémon arose from the spirits\n" - "of people interred in graves in past ages.\n" - "Each of them carries a mask that used\n" - "to be its face when it was human."); - -const u8 gCofagrigusPokedexText[] = _( - "Grave robbers who mistake them for\n" - "real coffins and get too close end up\n" - "trapped inside their bodies. Their bodies\n" - "are covered in pure gold."); - -const u8 gTirtougaPokedexText[] = _( - "Reputed to be the ancestor of most\n" - "turtle Pokémon, it lived in warm seas\n" - "about a hundred million years ago.\n" - "It was restored from a fossil."); - -const u8 gCarracostaPokedexText[] = _( - "They can live both in the ocean and\n" - "on land. Incredible jaw strength enables\n" - "them to chew up steel beams and rocks\n" - "along with their prey."); - -const u8 gArchenPokedexText[] = _( - "Said to be the ancestor of all bird\n" - "Pokémon, Archen itself could not actually\n" - "fly but moved by hopping from treetop\n" - "to treetop."); - -const u8 gArcheopsPokedexText[] = _( - "They are intelligent and will cooperate\n" - "to catch prey. When one Archeops\n" - "had the prey cornered, another would\n" - "swoop on it."); - -const u8 gTrubbishPokedexText[] = _( - "It gorges on trash until its stomach\n" - "is full. Then it belches toxic gas.\n" - "An unlucky whiff of this gas will put\n" - "a person in the hospital."); - -const u8 gGarbodorPokedexText[] = _( - "Beware the poisonous liquid it shoots\n" - "from its right arm. If even a little of it\n" - "gets on you, you'll experience the full\n" - "effects of this unidentified toxin."); - -const u8 gZoruaPokedexText[] = _( - "To protect themselves from danger, they\n" - "hide their true identities by transforming\n" - "into people and Pokémon. Apparently, it\n" - "often transforms into a silent child."); - -const u8 gZoroarkPokedexText[] = _( - "Bonds between these Pokémon are very\n" - "strong. It protects the safety of its\n" - "pack by tricking its opponents. They\n" - "defend their lair with illusory scenery."); - -const u8 gMinccinoPokedexText[] = _( - "These Pokémon prefer a tidy habitat.\n" - "They greet one another by rubbing each\n" - "other with their tails, which are always\n" - "kept well groomed and clean."); - -const u8 gCinccinoPokedexText[] = _( - "Their white fur feels amazing to touch.\n" - "Cinccino's body is coated in a special\n" - "oil that repels dust and helps it deflect\n" - "attacks, such as punches."); - -const u8 gGothitaPokedexText[] = _( - "They intently observe both Trainers and\n" - "Pokémon. Apparently, Gothita are looking\n" - "at something that only they can see. Their\n" - "ribbonlike feelers increase their power."); - -const u8 gGothoritaPokedexText[] = _( - "Starlight is the source of their power.\n" - "They use hypnosis to control people and\n" - "Pokémon. Tales of Gothorita leading them\n" - "astray are told in every corner."); - -const u8 gGothitellePokedexText[] = _( - "Starry skies thousands of light-years\n" - "away are visible in the space distorted by\n" - "their intense psychic power. When it learns\n" - "its Trainer's life span, it cries in sadness."); - -const u8 gSolosisPokedexText[] = _( - "Because their bodies are enveloped\n" - "in a special liquid, they are fine in any\n" - "environment, no matter how severe. They\n" - "can use telepathy to talk with others."); - -const u8 gDuosionPokedexText[] = _( - "When their brains, now divided in two,\n" - "are thinking the same thoughts,\n" - "these Pokémon exhibit their maximized\n" - "psychic power."); - -const u8 gReuniclusPokedexText[] = _( - "They use psychic power to control their\n" - "arms, which are made of a special liquid.\n" - "When Reuniclus shake hands, a network\n" - "forms between their brains."); - -const u8 gDucklettPokedexText[] = _( - "These bird Pokémon are excellent divers.\n" - "They are better at swimming than flying,\n" - "and they happily eat their favorite food,\n" - "peat moss, as they dive underwater."); - -const u8 gSwannaPokedexText[] = _( - "Despite their elegant appearance, they\n" - "can flap their wings strongly and fly for\n" - "thousands of miles. The one in the middle\n" - "is the leader of the flock."); - -const u8 gVanillitePokedexText[] = _( - "The temperature of their breath is -58ºF.\n" - "They create snow crystals and make snow\n" - "fall in the areas around them. Vanillite is\n" - "treasured by households in warm regions."); - -const u8 gVanillishPokedexText[] = _( - "Vanillish has existed since the Ice Age.\n" - "It controls particles of ice, freezes its\n" - "opponents, and then shatters them with\n" - "a headbutt."); - -const u8 gVanilluxePokedexText[] = _( - "Each of its two heads has a brain, and\n" - "when they are in agreement, it attacks\n" - "its enemies by exhaling a violent blizzard.\n" - "It makes snow clouds inside its body."); - -const u8 gDeerlingPokedexText[] = _( - "Their coloring changes according to the\n" - "seasons and can be slightly affected by\n" - "the temperature and humidity as well.\n" - "People use it to mark the seasons."); - -const u8 gSawsbuckPokedexText[] = _( - "Some people call Sawsbuck the harbingers\n" - "of spring because the plants growing on\n" - "its horns change according to the season.\n" - "The leader possesses magnificent horns."); - -const u8 gEmolgaPokedexText[] = _( - "It glides using its cape-like membrane.\n" - "It grills berries and bug Pokémon with\n" - "electric shocks from the pouches on its\n" - "cheeks and makes a meal of them."); - -const u8 gKarrablastPokedexText[] = _( - "When they feel threatened, they spit an\n" - "acidic liquid to drive attackers away.\n" - "For some reason they evolve while they\n" - "are in the same place as Shelmet."); - -const u8 gEscavalierPokedexText[] = _( - "Wearing the shell covering they stole\n" - "from Shelmet, they defend themselves and\n" - "attack with two lances. The steel armor\n" - "protects their whole body."); - -const u8 gFoongusPokedexText[] = _( - "It lures Pokémon in with its pattern that\n" - "looks just like a Poké Ball, then releases\n" - "its poison spores. Why it resembles a\n" - "Poké Ball is unknown."); - -const u8 gAmoongussPokedexText[] = _( - "It lures prey close by dancing and waving\n" - "its arm caps, which resemble Poké Balls,\n" - "in a swaying motion, but very few Pokémon\n" - "are fooled by this."); - -const u8 gFrillishPokedexText[] = _( - "If its veil-like arms stun and wrap an\n" - "opponent, that foe will be dragged\n" - "five miles below the surface to its lair,\n" - "never to return."); - -const u8 gJellicentPokedexText[] = _( - "They propel themselves by expelling\n" - "absorbed seawater from their bodies.\n" - "It's said there's a castle of ships\n" - "Jellicent have sunk on the seafloor."); - -const u8 gAlomomolaPokedexText[] = _( - "When they find a wounded Pokémon,\n" - "they embrace it and bring it to shore.\n" - "The special membrane enveloping\n" - "Alomomola has the ability to heal wounds."); - -const u8 gJoltikPokedexText[] = _( - "Since they can't generate their own\n" - "electricity, they attach themselves to\n" - "large-bodied Pokémon and absorb static\n" - "electricity, which they store in a pouch."); - -const u8 gGalvantulaPokedexText[] = _( - "It creates barriers from electrified silk\n" - "that stun foes. This works as a weapon as\n" - "well as a defense. While it is immobilized\n" - "by shock, they leisurely consume it."); - -const u8 gFerroseedPokedexText[] = _( - "It absorbs the iron it finds in the rock\n" - "while clinging to the ceiling of caves.\n" - "When threatened, it attacks by shooting\n" - "a barrage of spikes."); - -const u8 gFerrothornPokedexText[] = _( - "It fights by swinging around its three\n" - "spiky feelers and shooting spikes.\n" - "A hit from these steel spikes can reduce\n" - "a boulder to rubble."); - -const u8 gKlinkPokedexText[] = _( - "Two bodies comprise a fixed pair.\n" - "The two minigears that mesh together\n" - "are predetermined. Each will rebound from\n" - "other minigears without meshing."); - -const u8 gKlangPokedexText[] = _( - "A minigear and big gear comprise its\n" - "body. Spinning minigears are rotated\n" - "at high speed and repeatedly fired away.\n" - "It is dangerous if the gears don't return."); - -const u8 gKlinklangPokedexText[] = _( - "Its red core functions as an energy tank.\n" - "It is rotated at high speed for a rapid\n" - "energy charge. It fires the charged energy\n" - "through its spikes into an area."); - -const u8 gTynamoPokedexText[] = _( - "These Pokémon move in schools.\n" - "One alone can emit only a trickle of\n" - "electricity, so a group of them gathers\n" - "to unleash a powerful electric shock."); - -const u8 gEelektrikPokedexText[] = _( - "These Pokémon have a big appetite.\n" - "It wraps itself around its prey and\n" - "paralyzes it with electricity from the\n" - "round spots on its sides. Then it chomps."); - -const u8 gEelektrossPokedexText[] = _( - "They crawl out of the ocean using their\n" - "arms. They will attack prey on shore and\n" - "immediately drag it into the ocean, with\n" - "their sucker mouths."); - -const u8 gElgyemPokedexText[] = _( - "It psychically squeezes the brain of\n" - "its foe, causing unendurable headaches.\n" - "Rumors of its origin are linked to a UFO\n" - "crash site in the desert 50 years ago."); - -const u8 gBeheeyemPokedexText[] = _( - "It can manipulate an opponent's memory.\n" - "Apparently, it communicates by flashing\n" - "its three fingers, but those patterns\n" - "haven't been decoded. "); - -const u8 gLitwickPokedexText[] = _( - "While Litwick shines a light and pretends\n" - "to be a guide, it absorbs the life force of\n" - "any who follow it, which becomes the fuel\n" - "that it burns."); - -const u8 gLampentPokedexText[] = _( - "This ominous Pokémon is feared.\n" - "Through cities it wanders, searching\n" - "for the spirits of the fallen. The spirits\n" - "it absorbs fuel its baleful fire."); - -const u8 gChandelurePokedexText[] = _( - "Being consumed in Chandelure's flame burns\n" - "up the spirit, leaving the body behind.\n" - "By waving the flames on its arms, it puts\n" - "its foes into a hypnotic trance."); - -const u8 gAxewPokedexText[] = _( - "They mark their territory by leaving\n" - "gashes in trees with their tusks. If a\n" - "tusk breaks, a new one grows in quickly,\n" - "harder and sturdier than the last."); - -const u8 gFraxurePokedexText[] = _( - "Their tusks can shatter rocks.\n" - "A broken tusk will not grow back,\n" - "so it diligently sharpens its tusks on\n" - "river rocks after the end of a battle."); - -const u8 gHaxorusPokedexText[] = _( - "They are kind but can be relentless\n" - "when defending territory. Their sturdy\n" - "tusks will stay sharp even if used to cut\n" - "steel beams."); - -const u8 gCubchooPokedexText[] = _( - "Its nose is always running.\n" - "Their snot is a barometer of health.\n" - "When healthy, their snot is sticky and\n" - "the power of their ice moves increases."); - -const u8 gBearticPokedexText[] = _( - "It freezes its breath to create fangs\n" - "and claws of ice to fight with.\n" - "Very able in the water, it swims around\n" - "in northern seas and catches prey."); - -const u8 gCryogonalPokedexText[] = _( - "They are born in snow clouds. When\n" - "its body temperature goes up, it turns\n" - "into steam and vanishes. When its\n" - "temperature lowers, it returns to ice."); - -const u8 gShelmetPokedexText[] = _( - "When attacked, it defends itself by\n" - "closing the lid of its shell. It evolves\n" - "when bathed in an electric-like energy\n" - "along with Karrablast."); - -const u8 gAccelgorPokedexText[] = _( - "When its body dries out, it weakens. So, to\n" - "prevent dehydration, it wraps itself in\n" - "layers of thin membrane. It is very light\n" - "and fights with ninja-like movements."); - -const u8 gStunfiskPokedexText[] = _( - "It conceals itself in the mud of the\n" - "seashore. Then it waits. When prey touch\n" - "it, it delivers a jolt of electricity.\n" - "It smiles when transmitting electricity."); - -const u8 gMienfooPokedexText[] = _( - "They have mastered elegant combos.\n" - "As they concentrate, their battle moves\n" - "become swifter and more precise. What it\n" - "lacks in power, it makes up for in quantity."); - -const u8 gMienshaoPokedexText[] = _( - "They use the long fur on their arms as\n" - "a whip to strike their opponents. Its arm\n" - "attacks come with such rapidity that they\n" - "cannot even be seen."); - -const u8 gDruddigonPokedexText[] = _( - "It warms its body by absorbing sunlight\n" - "with its wings. When its body temperature\n" - "falls, it can no longer move. It uses its\n" - "sharp claws to catch prey."); - -const u8 gGolettPokedexText[] = _( - "These Pokémon are thought to have\n" - "been created by the science of an\n" - "ancient and mysterious civilization.\n" - "It's been active for thousands of years."); - -const u8 gGolurkPokedexText[] = _( - "Golurk were created to protect people\n" - "and Pokémon by an ancient civilisation.\n" - "Removing the seal on its chest makes its\n" - "internal energy go out of control."); - -const u8 gPawniardPokedexText[] = _( - "Ignoring their injuries, groups attack by\n" - "sinking the blades that cover their bodies\n" - "into their prey. If battling dulls them, it\n" - "sharpens them on stones by the river."); - -const u8 gBisharpPokedexText[] = _( - "This pitiless Pokémon commands a group\n" - "of Pawniard to hound prey into immobility.\n" - "It battles to become the boss, but will be\n" - "driven from the group if it loses."); - -const u8 gBouffalantPokedexText[] = _( - "Their fluffy fur absorbs damage, even\n" - "if they strike foes with a fierce headbutt.\n" - "Their headbutts have enough destructive\n" - "force to derail a train."); - -const u8 gRuffletPokedexText[] = _( - "With its sharp claws, this Pokémon pierces\n" - "its prey, and then it pecks at them.\n" - "Although it also consumes berries, it's a\n" - "carnivore at heart."); - -const u8 gBraviaryPokedexText[] = _( - "For the sake of its friends, this brave\n" - "warrior of the sky will not stop battling,\n" - "even if it is injured. One can carry a car\n" - "while flying."); - -const u8 gVullabyPokedexText[] = _( - "It can't fly yet and must wait until its\n" - "wings have developed more. They guard\n" - "their posteriors with bones that were\n" - "gathered by Mandibuzz."); - -const u8 gMandibuzzPokedexText[] = _( - "They adorn themselves beautifully with\n" - "bones. This is supposedly an effort to\n" - "attract males, but no male Mandibuzz\n" - "have ever been found."); - -const u8 gHeatmorPokedexText[] = _( - "It draws in air through its tail, transforms\n" - "it into fire, and uses it like a tongue.\n" - "They burn through Durant's steel bodies\n" - "and consume their insides."); - -const u8 gDurantPokedexText[] = _( - "Durant dig nests in mountains.\n" - "Individuals each play different roles in\n" - "driving Heatmor, their natural predator,\n" - "away from their colony."); - -const u8 gDeinoPokedexText[] = _( - "Lacking sight, it's unaware of its\n" - "surroundings, so it bumps into things and\n" - "eats anything that moves. Approaching\n" - "it carelessly is dangerous."); - -const u8 gZweilousPokedexText[] = _( - "After it has eaten up all the food in its\n" - "territory, it moves on to another area.\n" - "Whichever head eats more than the other\n" - "gets to be the leader."); - -const u8 gHydreigonPokedexText[] = _( - "This brutal Pokémon travels the skies on\n" - "its six wings. The heads on their arms do\n" - "not have brains. They use all three heads\n" - "to consume and destroy everything."); - -const u8 gLarvestaPokedexText[] = _( - "This Pokémon was believed to have\n" - "been born from the sun. It spews fire from\n" - "its horns and encases itself in a cocoon\n" - "of fire when it evolves."); - -const u8 gVolcaronaPokedexText[] = _( - "When volcanic ash darkened the\n" - "atmosphere, it appeared and saved Pokémon\n" - "from freezing, Volcarona's fire provided a\n" - "replacement for the sun."); - -const u8 gCobalionPokedexText[] = _( - "It has a body and heart of steel. This\n" - "legendary Pokémon battled against humans\n" - "to protect Pokémon. Its personality\n" - "is calm and composed."); - -const u8 gTerrakionPokedexText[] = _( - "Spoken of in legend, this Pokémon used\n" - "its phenomenal power to destroy a castle\n" - "in its effort to protect Pokémon that had\n" - "lost their homes in a war among humans."); - -const u8 gVirizionPokedexText[] = _( - "Its head sprouts horns as sharp as blades.\n" - "Legends say this Pokémon used\n" - "whirlwind-like movements to confound\n" - "and swiftly cut its opponents."); - -const u8 gTornadusPokedexText[] = _( - "Tornadus expels massive energy from\n" - "its tail, causing severe storms.\n" - "Its power can blow entire houses away.\n" - "It zooms through the sky at 200 mph."); - -const u8 gThundurusPokedexText[] = _( - "The spikes on its tail discharge immense\n" - "bolts of lightning. Countless charred\n" - "remains mar the landscape of places\n" - "through which Thundurus has passed."); - -const u8 gReshiramPokedexText[] = _( - "This Pokémon appears in legends. It\n" - "sends flames into the air from its tail,\n" - "burning up everything around it. It helps\n" - "those who want to build a world of truth."); - -const u8 gZekromPokedexText[] = _( - "This legendary Pokémon can scorch the\n" - "world with lightning. It has a generator\n" - "that creates electricity in its tail. It\n" - "assists those with strong ideals."); - -const u8 gLandorusPokedexText[] = _( - "The energy that comes pouring from its tail\n" - "increases the nutrition in the soil, making\n" - "crops grow to great size. It has been\n" - "hailed as “The Guardian of the Fields.”"); - -const u8 gKyuremPokedexText[] = _( - "This legendary ice Pokémon waits for a\n" - "hero to fill in the missing parts of its\n" - "body with truth or ideals. Its body became\n" - "frozen when its energy leaked out."); - -const u8 gKeldeoPokedexText[] = _( - "When it is resolute, its body fills with\n" - "power and it becomes swifter. It crosses\n" - "the world, running over the surfaces of\n" - "oceans and rivers."); - -const u8 gMeloettaPokedexText[] = _( - "The melodies sung by Meloetta have the\n" - "power to make Pokémon that hear them\n" - "happy or sad. Many famous songs have been\n" - "inspired by the tunes that Meloetta plays."); - -const u8 gGenesectPokedexText[] = _( - "Over 300 million years ago, it was\n" - "feared as the strongest of hunters.\n" - "Team Plasma altered it and attached\n" - "a cannon to its back."); -#endif - -#if P_GEN_6_POKEMON == TRUE -const u8 gChespinPokedexText[] = _( - "The quills on its head are usually soft.\n" - "When it flexes them, the points become\n" - "so hard and sharp that they can pierce\n" - "rock without any effort."); - -const u8 gQuilladinPokedexText[] = _( - "They strengthen the sturdy shell covering\n" - "their bodies by running into one another.\n" - "They are very kind and won't start fights,\n" - "but will counterattack with sharp quills."); - -const u8 gChesnaughtPokedexText[] = _( - "It shields its allies from danger with\n" - "its own body. When it takes a defensive\n" - "posture with its fists guarding its face,\n" - "it can withstand a bomb blast."); - -const u8 gFennekinPokedexText[] = _( - "As it walks, it munches on a twig to fill\n" - "itself with energy in place of a snack.\n" - "It intimidates opponents by puffing hot\n" - "air out of its roomy ears."); - -const u8 gBraixenPokedexText[] = _( - "Braixen has a twig stuck in its tail.\n" - "When the twig is plucked from its tail,\n" - "friction sets the twig alight. The flame\n" - "is used to send signals to its allies."); - -const u8 gDelphoxPokedexText[] = _( - "It gazes into the flame at the tip of its\n" - "branch to achieve a focused state, which\n" - "allows it to see into the future. It uses\n" - "psychic power to incinerate its foes."); - -const u8 gFroakiePokedexText[] = _( - "It protects its skin by covering its body\n" - "in bubbles it secretes from its chest and\n" - "back. Beneath its happy-go-lucky air, it\n" - "keeps a watchful eye on its surroundings."); - -const u8 gFrogadierPokedexText[] = _( - "It can throw bubble-covered pebbles with\n" - "precise control, hitting empty cans up to\n" - "a hundred feet away. Frogadier's swiftness\n" - "is unparalleled."); - -const u8 gGreninjaPokedexText[] = _( - "It appears and vanishes with a ninja's\n" - "grace. It toys with its enemies using swift\n" - "movements, while slicing them with throwing\n" - "stars made of compressed water."); - -const u8 gBunnelbyPokedexText[] = _( - "It has ears like shovels. Digging holes\n" - "strengthens its ears so much that they\n" - "can sever thick roots effortlessly.\n" - "Bunnelby dig the whole night through."); - -const u8 gDiggersbyPokedexText[] = _( - "With its powerful ears it reduces dense\n" - "bedrock to rubble. It can be a big help\n" - "at construction sites. When it's finished\n" - "digging, it lounges about lazily."); - -const u8 gFletchlingPokedexText[] = _( - "This amiable Pokémon is easy to train.\n" - "But when battle is joined, it shows its\n" - "ferocious side. It's merciless to\n" - "intruders that enter its territory."); - -const u8 gFletchinderPokedexText[] = _( - "From its beak, it expels embers that set\n" - "the tall grass on fire. Then it pounces on\n" - "any bewildered Pokémon that pop out of\n" - "the grass."); - -const u8 gTalonflamePokedexText[] = _( - "In the fever of an exciting battle, it\n" - "showers embers from the gaps between its\n" - "feathers and takes to the air. It finishes\n" - "its prey off with a colossal kick."); - -const u8 gScatterbugPokedexText[] = _( - "When under attack from bird Pokémon,\n" - "it spews a poisonous black powder that\n" - "causes paralysis on contact. Scatterbug\n" - "can live in any region or climate."); - -const u8 gSpewpaPokedexText[] = _( - "It lives hidden within thicket shadows.\n" - "When predators attack, it quickly bristles\n" - "the fur covering its body in an effort to\n" - "threaten them."); - -const u8 gVivillonPokedexText[] = _( - "Vivillon with many different patterns are\n" - "found all over the world. These patterns\n" - "are affected by the climate of their\n" - "habitat. It scatters colorful scales."); - -const u8 gLitleoPokedexText[] = _( - "They set off on their own from their pride\n" - "and live by themselves to become stronger.\n" - "These hot-blooded Pokémon are quick\n" - "to start a fight."); - -const u8 gPyroarPokedexText[] = _( - "The male with the largest mane of fire\n" - "is the leader of the pride. The females\n" - "protect the pride's cubs. They viciously\n" - "threaten any challenger."); - -const u8 gFlabebePokedexText[] = _( - "When it finds a flower it likes, it dwells\n" - "on that flower its whole life long.\n" - "It floats on the wind's embrace with\n" - "an untroubled heart."); - -const u8 gFloettePokedexText[] = _( - "When the flowers of a well-tended flower\n" - "bed bloom, it appears and celebrates\n" - "with an elegant dance. It draws out the\n" - "power of flowers to battle."); - -const u8 gFlorgesPokedexText[] = _( - "It claims exquisite flower gardens as its\n" - "territory. In times long past, governors of\n" - "castles would invite Florges to create\n" - "gardens to embellish the castle domains."); - -const u8 gSkiddoPokedexText[] = _( - "If it has sunshine and water, it doesn't\n" - "need to eat, because it can generate\n" - "energy from the leaves on its back.\n" - "It has a placid disposition."); - -const u8 gGogoatPokedexText[] = _( - "It can tell how its trainer is feeling by\n" - "subtle shifts in the grip on its horns. This\n" - "empathetic sense lets them run as if one\n" - "being. They inhabit mountainous regions."); - -const u8 gPanchamPokedexText[] = _( - "There's no point to the leaf in its mouth,\n" - "aside from an effort to look cool. It's\n" - "mischievous, so it's not well suited to\n" - "inexperienced Trainers."); - -const u8 gPangoroPokedexText[] = _( - "It boasts superb physical strength.\n" - "Those who wish to become Pangoro's\n" - "Trainer have no choice but to converse\n" - "with their fists."); - -const u8 gFurfrouPokedexText[] = _( - "Trimming its fluffy fur not only makes\n" - "it more elegant but also increases the\n" - "swiftness of its movements. These\n" - "Pokémon were the guardians of kings."); - -const u8 gEspurrPokedexText[] = _( - "It has enough psychic energy to blast\n" - "everything within 300 feet of itself.\n" - "The organ that emits its intense psychic\n" - "power is sheltered by its ears."); - -const u8 gMeowsticPokedexText[] = _( - "The eyeball patterns on the interior of\n" - "its ears emit psychic energy. It keeps the\n" - "patterns tightly covered because that\n" - "power is too immense."); - -const u8 gHonedgePokedexText[] = _( - "If anyone dares to grab its hilt, it\n" - "wraps a blue cloth around that person's\n" - "arm and drains that person's life\n" - "energy completely."); - -const u8 gDoubladePokedexText[] = _( - "When Honedge evolves, it divides into\n" - "two swords. The complex attack patterns\n" - "of its two swords are unstoppable, even\n" - "against those skilled at swordplay."); - -const u8 gAegislashPokedexText[] = _( - "Generations of kings were attended to\n" - "by these Pokémon, which used their\n" - "spectral power to manipulate and control\n" - "people and Pokémon."); - -const u8 gSpritzeePokedexText[] = _( - "In the past, rather than using perfume,\n" - "royal ladies carried a Spritzee that would\n" - "waft a fragrance they liked. Its fragrance\n" - "changes depending on what it has eaten."); - -const u8 gAromatissePokedexText[] = _( - "Its scent is so overpowering that,\n" - "unless a Trainer happens to really enjoy\n" - "the smell, he or she will have a hard time\n" - "walking alongside it."); - -const u8 gSwirlixPokedexText[] = _( - "Because it eats nothing but sweets, its\n" - "fur is as sticky sweet as cotton candy.\n" - "To entangle its opponents in battle, it\n" - "extrudes sticky white threads."); - -const u8 gSlurpuffPokedexText[] = _( - "Slurpuff can distinguish even the\n" - "faintest of scents. It puts its sensitive\n" - "sense of smell to use by helping pastry\n" - "chefs in their work."); - -const u8 gInkayPokedexText[] = _( - "It flashes the light-emitting spots on its\n" - "body, which drains its opponent's will\n" - "to fight. It takes the opportunity to\n" - "scuttle away and hide."); - -const u8 gMalamarPokedexText[] = _( - "It lures prey close with hypnotic motions,\n" - "then wraps its tentacles around it before\n" - "finishing it off with digestive fluids. It\n" - "forces others to do whatever it wants."); - -const u8 gBinaclePokedexText[] = _( - "They stretch and then contract, yanking\n" - "their rocks along with them in bold hops.\n" - "They eat seaweed that washes up on\n" - "the shoreline."); - -const u8 gBarbaraclePokedexText[] = _( - "Barbaracle's legs and hands have minds\n" - "of their own, and they will move\n" - "independently. But they usually follow\n" - "the head's orders."); - -const u8 gSkrelpPokedexText[] = _( - "Camouflaged as rotten kelp, it hides\n" - "from foes while storing up power for its\n" - "evolution. They spray liquid poison on\n" - "prey that approach unawares."); - -const u8 gDragalgePokedexText[] = _( - "Their poison is strong enough to eat\n" - "through the hull of a tanker. Tales are\n" - "told of ships that wander into seas where\n" - "Dragalge live, never to return."); - -const u8 gClauncherPokedexText[] = _( - "Through controlled expulsions of internal\n" - "gas, it can expel water like a pistol shot.\n" - "At close distances, it can even shatter\n" - "large rocks."); - -const u8 gClawitzerPokedexText[] = _( - "By expelling water from the nozzle in the\n" - "back of its enormous claw, it can move\n" - "at a speed of 60 knots. They launch\n" - "cannonballs made of water."); - -const u8 gHelioptilePokedexText[] = _( - "They make their home in deserts.\n" - "They can generate their own energy from\n" - "basking in the sun, so eating food is not\n" - "a requirement."); - -const u8 gHelioliskPokedexText[] = _( - "A single Heliolisk can generate sufficient\n" - "electricity to power a skyscraper. It can\n" - "stimulate its muscles with electricity,\n" - "boosting the strength in its legs."); - -const u8 gTyruntPokedexText[] = _( - "Its immense jaws have enough destructive\n" - "force that it can chew up a car. If\n" - "something happens that it doesn't like,\n" - "it throws a tantrum and runs wild."); - -const u8 gTyrantrumPokedexText[] = _( - "Thanks to its gargantuan jaws, which could\n" - "shred thick metal plates as if they were\n" - "paper, it was invincible in the ancient\n" - "world it once inhabited."); - -const u8 gAmauraPokedexText[] = _( - "This ancient Pokémon was restored from\n" - "part of its body that had been frozen in\n" - "ice for over 100 million years. It lived in a\n" - "cold land where there were no predators."); - -const u8 gAurorusPokedexText[] = _( - "Using the diamond-shaped crystals on its\n" - "body it can instantly create a wall of ice\n" - "to block an opponent's attack, or encase\n" - "them in ice."); - -const u8 gSylveonPokedexText[] = _( - "Its ribbonlike feelers give off an aura\n" - "that weakens hostility in its prey, causing\n" - "them to let down their guard. A moment\n" - "later, it pounces."); - -const u8 gHawluchaPokedexText[] = _( - "With its wings, it controls its position in\n" - "the air. Its proficient fighting skills\n" - "enable it to keep up with big bruisers\n" - "like Machamp and Hariyama."); - -const u8 gDedennePokedexText[] = _( - "Its whiskers serve as antennas.\n" - "By sending and receiving electrical\n" - "waves, it can communicate with others\n" - "over vast distances."); - -const u8 gCarbinkPokedexText[] = _( - "Born from the high temperatures and\n" - "pressures deep underground, it defends\n" - "itself by firing beams from the jewel part\n" - "of its body."); - -const u8 gGoomyPokedexText[] = _( - "Its source of protection is its slimy,\n" - "germ-laden mucous membrane. Anyone\n" - "who touches it will need some thorough\n" - "hand-washing."); - -const u8 gSliggooPokedexText[] = _( - "This Pokémon's mucous can dissolve\n" - "anything. Toothless, it sprays mucous\n" - "on its prey. Once they're nicely dissolved,\n" - "it slurps them up."); - -const u8 gGoodraPokedexText[] = _( - "It gets picked on because it's meek.\n" - "But then, whoever teased it gets to feel\n" - "the full force of its horns and a good\n" - "swatting from its thick tail."); - -const u8 gKlefkiPokedexText[] = _( - "These key collectors threaten any\n" - "attackers by fiercely jingling their keys\n" - "at them. It will sneak into people's homes\n" - "to steal their keys."); - -const u8 gPhantumpPokedexText[] = _( - "According to legend, medicine to cure\n" - "any illness can be made by plucking the\n" - "green leaves on its head, brewing them,\n" - "and boiling down the liquid."); - -const u8 gTrevenantPokedexText[] = _( - "Through its roots, it exerts control over\n" - "other trees. A deadly curse falls upon\n" - "anyone cutting down trees in forests\n" - "where Trevenant dwell."); - -const u8 gPumpkabooPokedexText[] = _( - "It is said to carry wandering spirits to\n" - "the place where they belong so they can\n" - "move on. As the sun sets, it becomes\n" - "restless and active."); - -const u8 gGourgeistPokedexText[] = _( - "Singing in eerie voices, they wander town\n" - "streets on the night of the new moon.\n" - "Anyone who hears their song will become\n" - "inflicted with a curse."); - -const u8 gBergmitePokedexText[] = _( - "It blocks opponents' attacks with the ice\n" - "that shields its body. It uses cold air to\n" - "repair any cracks with new ice. They live\n" - "in herds on snowy mountains."); - -const u8 gAvaluggPokedexText[] = _( - "The way several Bergmite huddle on its\n" - "back make it look like an aircraft carrier\n" - "made of ice. Its cumbersome frame crushes\n" - "anything that stands in its way."); - -const u8 gNoibatPokedexText[] = _( - "They live in pitch-black caves. Even a\n" - "robust wrestler will become dizzy and\n" - "unable to stand when exposed to its\n" - "200,000-hertz ultrasonic waves."); - -const u8 gNoivernPokedexText[] = _( - "They fly around on moonless nights and\n" - "attack careless prey. The ultrasonic waves\n" - "it emits from its ears can reduce a large\n" - "boulder to pebbles."); - -const u8 gXerneasPokedexText[] = _( - "Legends say that when the horns on\n" - "its head shine in seven colors, it is\n" - "sharing everlasting life. It slept for a\n" - "thousand years in the form of a tree"); - -const u8 gYveltalPokedexText[] = _( - "When its life comes to an end, its wings\n" - "and tail spread wide and glow red, and\n" - "it absorbs the life energy of every living\n" - "thing and turns into a cocoon."); - -const u8 gZygardePokedexText[] = _( - "It's said to be monitoring the ecosystem\n" - "from deep in the caves where it lives.\n" - "There are rumors that even greater power\n" - "lies hidden within its cells."); - -const u8 gDianciePokedexText[] = _( - "A sudden transformation of Carbink,\n" - "its pink, glimmering body is said to be\n" - "the loveliest sight in the whole world.\n" - "It creates diamonds between its hands."); - -const u8 gHoopaPokedexText[] = _( - "In its true form, it possess a huge amount\n" - "of power. When its powers are sealed away,\n" - "it is transformed into a much smaller form.\n" - "It teleports things to a secret place."); - -const u8 gVolcanionPokedexText[] = _( - "It lets out billows of steam from the arms\n" - "on its back and disappears into the dense\n" - "fog. It's said to live in mountains where\n" - "humans do not tread."); -#endif - -#if P_GEN_7_POKEMON == TRUE -const u8 gRowletPokedexText[] = _( - "This wary Pokémon uses photosynthesis\n" - "to store up energy during the day, while\n" - "becoming active at night. Silently it\n" - "glides, drawing near to its target."); - -const u8 gDartrixPokedexText[] = _( - "A bit of a dandy, it spends its free time\n" - "preening its wings. Its preoccupation\n" - "with any dirt on its plumage can leave\n" - "it unable to battle."); - -const u8 gDecidueyePokedexText[] = _( - "Decidueye is cool and cautious.\n" - "It fires arrow quills from its wings with\n" - "such precision, they can pierce a pebble\n" - "at distances of over a hundred yards."); - -const u8 gLittenPokedexText[] = _( - "While grooming itself, it builds up fur\n" - "inside its stomach. It sets the fur alight\n" - "and spews fiery attacks, which change\n" - "based on how it coughs."); - -const u8 gTorracatPokedexText[] = _( - "At its throat, it bears a bell of fire. The\n" - "bell rings brightly whenever this Pokémon\n" - "spits fire. With a single punch, it can bend\n" - "an iron bar right over."); - -const u8 gIncineroarPokedexText[] = _( - "This Pokémon has a violent, selfish\n" - "disposition. If it's not in the mood to\n" - "listen, it will ignore its Trainer's orders\n" - "with complete nonchalance."); - -const u8 gPopplioPokedexText[] = _( - "This Pokémon snorts body fluids from\n" - "its nose, blowing balloons to smash into\n" - "its foes. It practices diligently so it can\n" - "learn to make big bubbles."); - -const u8 gBrionnePokedexText[] = _( - "It cares deeply for its companions.\n" - "When its Trainer is feeling down, it\n" - "performs a cheery dance with a sequence\n" - "of water balloons to try and help."); - -const u8 gPrimarinaPokedexText[] = _( - "It controls its water balloons with song.\n" - "The melody is learned from others of\n" - "its kind and is passed down from one\n" - "generation to the next."); - -const u8 gPikipekPokedexText[] = _( - "This Pokémon feeds on berries, whose\n" - "leftover seeds become the ammunition for\n" - "the attacks it fires off from its mouth.\n" - "It uses holes in trees for nesting."); - -const u8 gTrumbeakPokedexText[] = _( - "By bending its beak, it can produce a\n" - "variety of calls and brand itself a noisy\n" - "nuisance for its neighbors. It eats\n" - "berries and stores their seeds in its beak."); - -const u8 gToucannonPokedexText[] = _( - "When it battles, within its beak, its\n" - "internal gases ignite, explosively\n" - "launching seeds with enough power to\n" - "pulverize boulders."); - -const u8 gYungoosPokedexText[] = _( - "With its sharp fangs, it will bite anything.\n" - "It wanders around in a never-ending\n" - "search for food. At dusk, it collapses\n" - "and falls asleep on the spot."); - -const u8 gGumshoosPokedexText[] = _( - "When it finds a trace of its prey, it\n" - "patiently stakes out the location...\n" - "but as it's diurnal, it's always snoozing\n" - "by nightfall."); - -const u8 gGrubbinPokedexText[] = _( - "They often gather near places frequented\n" - "by electric Pokémon in order to avoid being\n" - "attacked by bird Pokémon, though it\n" - "normally lives underground."); - -const u8 gCharjabugPokedexText[] = _( - "From the food it digests, it generates\n" - "electricity, and it stores this energy in\n" - "its electric sac. On camping trips, people\n" - "are grateful to have one around."); - -const u8 gVikavoltPokedexText[] = _( - "It concentrates electrical energy within\n" - "its large jaws and uses it to zap its foes.\n" - "It overwhelms bird Pokémon with shocking\n" - "beams of electrical energy."); - -const u8 gCrabrawlerPokedexText[] = _( - "While guarding its weak points with its\n" - "pincers, it looks for an opening and\n" - "unleashes punches. When it loses, it\n" - "foams at the mouth and faints."); - -const u8 gCrabominablePokedexText[] = _( - "It aimed for the top but got lost and\n" - "ended up on a snowy mountain. Being forced\n" - "to endure the cold, this Pokémon evolved\n" - "and grew thick fur."); - -const u8 gOricorioPokedexText[] = _( - "Oricorio can change its body by sipping\n" - "different coloured nectar. It's enemies'\n" - "hearts melt at the sight of its varying,\n" - "beautiful dances."); - -const u8 gCutieflyPokedexText[] = _( - "Myriads of Cutiefly flutter above the\n" - "heads of people who have auras resembling\n" - "those of flowers. It can identify which\n" - "flowers are about to bloom."); - -const u8 gRibombeePokedexText[] = _( - "Ribombee rolls up pollen into puffs.\n" - "It makes many different varieties, some\n" - "used as food and others used in battle.\n" - "They are sometimes sold as supplements."); - -const u8 gRockruffPokedexText[] = _( - "This Pokémon has lived with people since\n" - "times long ago. It can sense when its\n" - "Trainer is in the dumps and will stick\n" - "close by its Trainer's side."); - -const u8 gLycanrocPokedexText[] = _( - "Well equipped with claws and fangs, it\n" - "also uses the sharp rocks in its mane\n" - "as weapons. It will attack with no regard\n" - "for its own safety."); - -const u8 gWishiwashiPokedexText[] = _( - "When it's in trouble, its eyes moisten and\n" - "begin to shine. The shining light attracts\n" - "its comrades, and they stand together\n" - "against their enemies."); - -const u8 gMareaniePokedexText[] = _( - "It's found crawling on beaches and\n" - "seafloors. The coral that grows on\n" - "Corsola's head is as good as a five-star\n" - "banquet to this Pokémon."); - -const u8 gToxapexPokedexText[] = _( - "Those attacked by Toxapex's poison will\n" - "suffer intense pain for three days and\n" - "three nights. Post-recovery, there will be\n" - "some aftereffects."); - -const u8 gMudbrayPokedexText[] = _( - "The mud stuck to Mudbray's hooves\n" - "enhances its grip and its powerful running\n" - "gait. Eating dirt, making mud, and playing\n" - "in the mire form its daily routine."); - -const u8 gMudsdalePokedexText[] = _( - "Its heavy, mud-covered kicks are its\n" - "best means of attack, and it can reduce\n" - "large trucks to scrap without breaking\n" - "a sweat."); - -const u8 gDewpiderPokedexText[] = _( - "It crawls onto the land in search of food.\n" - "When it comes across enemies or potential\n" - "prey, this Pokémon smashes its\n" - "water-bubble-covered head into them."); - -const u8 gAraquanidPokedexText[] = _( - "Despite what its appearance suggests,\n" - "it cares for others. If it finds vulnerable,\n" - "weak Pokémon, it protectively brings\n" - "them into its water bubble."); - -const u8 gFomantisPokedexText[] = _( - "During the day, it sleeps and soaks up\n" - "light. They give off a sweet and refreshing\n" - "scent. Cutiefly often gather near the tall\n" - "grass where Fomantis are hiding."); - -const u8 gLurantisPokedexText[] = _( - "It requires a lot of effort to maintain\n" - "Lurantis's vivid coloring, but some\n" - "collectors enjoy this work and treat it\n" - "as their hobby."); - -const u8 gMorelullPokedexText[] = _( - "As it drowses the day away, it nourishes\n" - "itself by sucking from tree roots.\n" - "It wakens at the fall of night, wandering\n" - "off in search of a new tree."); - -const u8 gShiinoticPokedexText[] = _( - "Forests where Shiinotic live are\n" - "treacherous to enter at night.\n" - "People confused by its strange lights\n" - "can never find their way home again."); - -const u8 gSalanditPokedexText[] = _( - "It burns its bodily fluids to create a\n" - "sweet-smelling poisonous gas. When its\n" - "enemies become disoriented from inhaling\n" - "the gas, it attacks them."); - -const u8 gSalazzlePokedexText[] = _( - "For some reason, only females have\n" - "been found. It creates a reverse harem of\n" - "male Salandit to live with. Its poisonous\n" - "gas is filled with pheromones."); - -const u8 gStuffulPokedexText[] = _( - "Despite its adorable appearance, when it\n" - "gets angry and flails about, its arms and\n" - "legs could knock a pro wrestler sprawling.\n" - "It's an incredibly dangerous Pokémon."); - -const u8 gBewearPokedexText[] = _( - "This Pokémon has the habit of hugging its\n" - "companions. Many Trainers have left this\n" - "world after their spines were squashed\n" - "by its hug."); - -const u8 gBounsweetPokedexText[] = _( - "A delectable aroma pours from its body. \n" - "Bounsweet's sweat can be watered down\n" - "into a juice with just the right amount\n" - "of sweetness."); - -const u8 gSteeneePokedexText[] = _( - "The sepals on its head developed to\n" - "protect its body. These are quite hard, so\n" - "even if pecked by bird Pokémon, this\n" - "Pokémon is totally fine."); - -const u8 gTsareenaPokedexText[] = _( - "Its long, striking legs aren't just for\n" - "show but to be used to kick with skill.\n" - "In victory, it shows off by kicking the\n" - "defeated, laughing boisterously."); - -const u8 gComfeyPokedexText[] = _( - "It attaches flowers to its nutritious\n" - "vine. Baths prepared with the flowers\n" - "from its vine have a relaxing effect, so\n" - "this Pokémon is a hit with many people."); - -const u8 gOranguruPokedexText[] = _( - "Deep in the jungle, high in the lofty\n" - "canopy, this Pokémon abides. On rare\n" - "occasions, it shows up at the beach to\n" - "match wits with Slowking."); - -const u8 gPassimianPokedexText[] = _( - "They battle with hard berries for weapons.\n" - "They form groups of about 20 individuals.\n" - "Their techniques are passed from the boss\n" - "to the group, generation upon generation."); - -const u8 gWimpodPokedexText[] = _( - "This Pokémon is a coward. As it desperately\n" - "dashes off, the flailing of its many legs\n" - "leaves a sparkling clean path in its wake.\n" - "It lives on beaches and seabeds."); - -const u8 gGolisopodPokedexText[] = _( - "It battles skillfully with its six arms,\n" - "with a flashing slash of its giant sharp\n" - "claws, it cleaves seawater--or even\n" - "air--right in two."); - -const u8 gSandygastPokedexText[] = _( - "It takes control of anyone who puts a hand\n" - "in its mouth, to add to the accumulation\n" - "of its sand-mound body. This Pokémon\n" - "embodies the grudges of the departed."); - -const u8 gPalossandPokedexText[] = _( - "Possessed people controlled by this\n" - "Pokémon transformed its sand mound into\n" - "a castle. As it evolved, its power to curse\n" - "grew ever stronger."); - -const u8 gPyukumukuPokedexText[] = _( - "It lives in shallow seas, such as areas\n" - "near a beach. The sticky mucous that\n" - "covers their bodies can be used to soothe\n" - "sunburned skin. How convenient!"); - -const u8 gTypeNullPokedexText[] = _( - "Due to the danger that this synthetic\n" - "Pokémon may go on a rampage, it wears a\n" - "control mask to restrain its capabilities.\n" - "It has some hidden special power."); - -const u8 gSilvallyPokedexText[] = _( - "Its trust in its partner awakens it.\n" - "This Pokémon is capable of changing its\n" - "type by equipping special memories, a\n" - "trait that is well displayed in battle."); - -const u8 gMiniorPokedexText[] = _( - "Originally making its home in the ozone\n" - "layer, it hurtles to the ground when the\n" - "shell encasing its body grows too heavy.\n" - "It was born from mutated nanoparticles."); - -const u8 gKomalaPokedexText[] = _( - "It is born asleep, and it dies asleep.\n" - "All its movements are apparently no more\n" - "than the results of it tossing and turning\n" - "in its dreams."); - -const u8 gTurtonatorPokedexText[] = _( - "The shell on its back is chemically\n" - "unstable and explodes violently if struck.\n" - "The hole in its stomach is its weak point.\n" - "It gushes fire from its nostrils."); - -const u8 gTogedemaruPokedexText[] = _( - "The spiny fur on its back is normally\n" - "at rest. When this Pokémon becomes\n" - "agitated, its fur stands on end and stabs\n" - "into its attackers."); - -const u8 gMimikyuPokedexText[] = _( - "A lonely Pokémon, it hides its terrifying\n" - "appearance beneath an old rag so it can\n" - "get closer to people and other Pokémon.\n" - "Its actual appearance is unknown."); - -const u8 gBruxishPokedexText[] = _( - "It stuns its prey with its psychic powers\n" - "and then grinds them to mush with its\n" - "strong teeth. Even Shellder's shell is no\n" - "match for it."); - -const u8 gDrampaPokedexText[] = _( - "This Pokémon is friendly to people and\n" - "loves children most of all. It comes from\n" - "deep in the mountains to play with\n" - "children it likes in town."); - -const u8 gDhelmisePokedexText[] = _( - "The soul of seaweed adrift in the waves\n" - "became reborn as this Pokémon.\n" - "It maintains itself with new infusions of\n" - "seabed detritus and seaweed."); - -const u8 gJangmoOPokedexText[] = _( - "It expresses its feelings by smacking its\n" - "scales. Metallic sounds echo through the\n" - "tall mountains where Jangmo-o live. They\n" - "grow little by little battling one another."); - -const u8 gHakamoOPokedexText[] = _( - "It sheds and regrows its scales on a\n" - "continuous basis. The scales become\n" - "harder each time they're regrown. Its\n" - "scaly punches tear its foes to shreds."); - -const u8 gKommoOPokedexText[] = _( - "Its rigid scales function as offense and\n" - "defense. In the past, its scales were\n" - "processed and used to make weapons\n" - "and other valuable commodities."); - -const u8 gTapuKokoPokedexText[] = _( - "It confuses its enemies by flying too\n" - "quickly for the eye to follow. It has a\n" - "hair-trigger temper but forgets what\n" - "made it angry an instant later."); - -const u8 gTapuLelePokedexText[] = _( - "A fragrant aroma of flowers follows it.\n" - "As it flutters about, it scatters its\n" - "strangely glowing scales. Touching them\n" - "is said to restore good health."); - -const u8 gTapuBuluPokedexText[] = _( - "It causes vegetation to grow, and then\n" - "it absorbs energy from the growth.\n" - "It pulls large trees up by the roots and\n" - "swings them around at its enemies."); - -const u8 gTapuFiniPokedexText[] = _( - "People say it can create pure water that\n" - "will wash away any corruption. The dense\n" - "fog it creates brings the downfall and\n" - "destruction of its confused enemies."); - -const u8 gCosmogPokedexText[] = _( - "In ages past, it was called the child of\n" - "the stars. It's said to be a Pokémon from\n" - "another world, but no specific details\n" - "are known."); - -const u8 gCosmoemPokedexText[] = _( - "Motionless as if dead, its body is faintly\n" - "warm to the touch. There's something\n" - "accumulating around the black core\n" - "within its hard shell."); - -const u8 gSolgaleoPokedexText[] = _( - "It is said to live in another world.\n" - "The intense light it radiates from the\n" - "surface of its body can make the darkest\n" - "of nights light up like midday."); - -const u8 gLunalaPokedexText[] = _( - "When its third eye activates, away it flies\n" - "to another world. This Pokémon devours\n" - "light, drawing the moonless dark veil of\n" - "night over the brightness of day."); - -const u8 gNihilegoPokedexText[] = _( - "One of several mysterious Ultra Beasts.\n" - "It's unclear whether or not this Pokémon\n" - "is sentient, but sometimes it can be\n" - "observed behaving like a young girl."); - -const u8 gBuzzwolePokedexText[] = _( - "This life-form called an Ultra Beast\n" - "appeared from another world. It shows\n" - "off its body, but whether that display\n" - "is a boast or a threat remains unclear."); - -const u8 gPheromosaPokedexText[] = _( - "One of the dangerous Ultra Beasts,\n" - "it refuses to touch anything, perhaps\n" - "because it senses some uncleanness\n" - "in this world."); - -const u8 gXurkitreePokedexText[] = _( - "One of the mysterious life-forms known\n" - "as Ultra Beasts. Astonishing electric\n" - "shocks emanate from its entire body,\n" - "according to witnesses."); - -const u8 gCelesteelaPokedexText[] = _( - "It appeared from the Ultra Wormhole.\n" - "One kind of Ultra Beast, witnesses saw\n" - "it flying across the sky by expelling gas\n" - "from its two arms."); - -const u8 gKartanaPokedexText[] = _( - "This Ultra Beast came from the\n" - "Ultra Wormhole. It seems not to attack\n" - "enemies on its own, but its sharp body is\n" - "a dangerous weapon in itself."); - -const u8 gGuzzlordPokedexText[] = _( - "A dangerous Ultra Beast, it has gobbled\n" - "mountains and swallowed whole buildings,\n" - "according to reports. But for some reason\n" - "its droppings have never been found."); - -const u8 gNecrozmaPokedexText[] = _( - "Reminiscent of the Ultra Beasts, this\n" - "life-form, apparently asleep underground,\n" - "is thought to have come from another\n" - "world in ancient times."); - -const u8 gMagearnaPokedexText[] = _( - "This artificial Pokémon, constructed more\n" - "than 500 years ago, can understand human\n" - "speech but cannot itself speak. Its true\n" - "self is its Soul-Heart, an artificial soul."); - -const u8 gMarshadowPokedexText[] = _( - "Able to conceal itself in the shadows of\n" - "others, it never appears before humans,\n" - "so its very existence is the stuff of myth.\n" - "This Pokémon is craven and cowering."); - -const u8 gPoipolePokedexText[] = _( - "This Ultra Beast is well enough\n" - "liked to be chosen as a\n" - "first partner in its own world."); - -const u8 gNaganadelPokedexText[] = _( - "It stores hundreds of liters of poisonous\n" - "liquid inside its body. It is one of the\n" - "organisms known as UBs."); - -const u8 gStakatakaPokedexText[] = _( - "It appeared from an Ultra Wormhole. Each\n" - "one appears to be made up of many life-\n" - "forms stacked one on top of each other."); - -const u8 gBlacephalonPokedexText[] = _( - "It slithers toward people and explode\n" - "its head without warning. It is\n" - "one kind of Ultra Beast."); - -const u8 gZeraoraPokedexText[] = _( - "It approaches its enemies at the speed\n" - "of lightning, then tears them limb from\n" - "limb with its sharp claws."); - -const u8 gMeltanPokedexText[] = _( - "It melts particles of iron and other metals\n" - "found in the subsoil, so it can absorb them\n" - "into its body of molten steel."); - -const u8 gMelmetalPokedexText[] = _( - "Revered long ago for its capacity to create\n" - "iron from nothing, for some reason it has\n" - "come back to life after 3,000 years."); -#endif - -#if P_GEN_8_POKEMON == TRUE -const u8 gGrookeyPokedexText[] = _( - "When it uses its special stick to strike up\n" - "a beat, the sound waves produced carry\n" - "revitalizing energy to the plants and\n" - "flowers in the area."); - -const u8 gThwackeyPokedexText[] = _( - "The faster a Thwackey can beat out\n" - "a rhythm with its two sticks, the more\n" - "respect it wins from its peers."); - -const u8 gRillaboomPokedexText[] = _( - "By drumming, it taps into the power of\n" - "its special tree stump. The roots of the\n" - "stump follow its direction in battle."); - -const u8 gScorbunnyPokedexText[] = _( - "A warm-up of running around gets fire\n" - "energy coursing through this Pokémon's\n" - "body. Once that happens, it's ready to\n" - "fight at full power."); - -const u8 gRabootPokedexText[] = _( - "Its thick and fluffy fur protects it\n" - "from the cold and enables it to use\n" - "hotter fire moves."); - -const u8 gCinderacePokedexText[] = _( - "It juggles a pebble with its feet,\n" - "turning it into a burning soccer ball.\n" - "Its shots strike opponents hard and\n" - "leave them scorched."); - -const u8 gSobblePokedexText[] = _( - "When scared, this Pokémon cries.\n" - "Its tears pack the chemical punch of 100\n" - "onions, and attackers won't be\n" - "able to resist weeping."); - -const u8 gDrizzilePokedexText[] = _( - "A clever combatant, this Pokémon battles\n" - "using water balloons created with\n" - "moisture secreted from its palms."); - -const u8 gInteleonPokedexText[] = _( - "It has many hidden capabilities, such as\n" - "fingertips that can shoot water and a\n" - "membrane on its back that it can use to\n" - "glide through the air."); - -const u8 gSkwovetPokedexText[] = _( - "Found throughout the Galar region, this\n" - "Pokémon becomes uneasy if its cheeks are\n" - "ever completely empty of berries."); - -const u8 gGreedentPokedexText[] = _( - "It stashes berries in its tail--so many\n" - "berries that they fall out constantly.\n" - "But this Pokémon is a bit slow-witted,\n" - "so it doesn't notice the loss."); - -const u8 gRookideePokedexText[] = _( - "It will bravely challenge any opponent,\n" - "no matter how powerful. This Pokémon\n" - "benefits from every battle--even a defeat\n" - "increases its strength a bit."); - -const u8 gCorvisquirePokedexText[] = _( - "Smart enough to use tools in battle,\n" - "these Pokémon have been seen picking up\n" - "rocks and flinging them or using ropes\n" - "to wrap up enemies."); - -const u8 gCorviknightPokedexText[] = _( - "This Pokémon reigns supreme in the skies\n" - "of the Galar region. The black luster of\n" - "its steel body could drive terror into\n" - "the heart of any foe."); - -const u8 gBlipbugPokedexText[] = _( - "A constant collector of information,\n" - "this Pokémon is very smart. Very strong\n" - "is what it isn't."); - -const u8 gDottlerPokedexText[] = _( - "It barely moves, but it's still alive.\n" - "Hiding in its shell without food or\n" - "water seems to have awakened its\n" - "psychic powers."); - -const u8 gOrbeetlePokedexText[] = _( - "It's famous for its high level of\n" - "intelligence, and the large size of its\n" - "brain is proof that it also possesses\n" - "immense psychic power."); - -const u8 gNickitPokedexText[] = _( - "Aided by the soft pads on its feet, it\n" - "silently raids the food stores of other\n" - "Pokémon. It survives off its\n" - "ill-gotten gains."); - -const u8 gThievulPokedexText[] = _( - "It secretly marks potential targets with\n" - "a scent. By following the scent, it\n" - "stalks its targets and steals from them\n" - "when they least expect it."); - -const u8 gGossifleurPokedexText[] = _( - "It anchors itself in the ground with its\n" - "single leg, then basks in the sun. After\n" - "absorbing enough sunlight, its petals\n" - "spread as it blooms brilliantly."); - -const u8 gEldegossPokedexText[] = _( - "The seeds attached to its cotton fluff\n" - "are full of nutrients. It spreads them\n" - "on the wind so that plants and other\n" - "Pokémon can benefit from them."); - -const u8 gWoolooPokedexText[] = _( - "Its curly fleece is such an effective\n" - "cushion that this Pokémon could fall off\n" - "a cliff and stand right back up at the\n" - "bottom, unharmed."); - -const u8 gDubwoolPokedexText[] = _( - "Weave a carpet from its springy wool,\n" - "and you end up with something closer to\n" - "a trampoline. You'll start to bounce the\n" - "moment you set foot on it."); - -const u8 gChewtlePokedexText[] = _( - "Apparently the itch of its teething\n" - "impels it to snap its jaws at anything\n" - "in front of it."); - -const u8 gDrednawPokedexText[] = _( - "With jaws that can shear through steel\n" - "rods, this highly aggressive Pokémon\n" - "chomps down on its unfortunate prey."); - -const u8 gYamperPokedexText[] = _( - "This Pokémon is very popular as a\n" - "herding dog in the Galar region. As it\n" - "runs, it generates electricity from the\n" - "base of its tail."); - -const u8 gBoltundPokedexText[] = _( - "This Pokémon generates electricity and\n" - "channels it into its legs to keep them\n" - "going strong. Boltund can run nonstop\n" - "for three full days."); - -const u8 gRolycolyPokedexText[] = _( - "Most of its body has the same composition\n" - "as coal. Fittingly, this Pokémon was\n" - "first discovered in coal mines about\n" - "400 years ago."); - -const u8 gCarkolPokedexText[] = _( - "It forms coal inside its body. Coal\n" - "dropped by this Pokémon once helped fuel\n" - "the lives of people in the Galar region."); - -const u8 gCoalossalPokedexText[] = _( - "It's usually peaceful, but the vandalism\n" - "of mines enrages it. Offenders will be\n" - "incinerated with flames that reach\n" - "2,700 degrees Fahrenheit."); - -const u8 gApplinPokedexText[] = _( - "It spends its entire life inside an\n" - "apple. It hides from its natural enemies,\n" - "bird Pokémon, by pretending it's just an\n" - "apple and nothing more."); - -const u8 gFlapplePokedexText[] = _( - "It ate a sour apple, and that induced its\n" - "evolution. In its cheeks, it stores an acid\n" - "capable of causing chemical burns."); - -const u8 gAppletunPokedexText[] = _( - "Eating a sweet apple caused its evolution.\n" - "A nectarous scent wafts from its body,\n" - "luring in the bug Pokémon it preys on."); - -const u8 gSilicobraPokedexText[] = _( - "As it digs, it swallows sand and stores\n" - "it in its neck pouch. The pouch can hold\n" - "more than 17 pounds of sand."); - -const u8 gSandacondaPokedexText[] = _( - "When it contracts its body, over 220\n" - "pounds of sand sprays from its nose. If\n" - "it ever runs out of sand, it becomes\n" - "disheartened."); - -const u8 gCramorantPokedexText[] = _( - "It's so strong that it can knock out some\n" - "opponents in a single hit, but it also may\n" - "forget what it's battling midfight."); - -const u8 gArrokudaPokedexText[] = _( - "If it sees any movement around it, this\n" - "Pokémon charges for it straightaway,\n" - "leading with its sharply pointed jaw.\n" - "It's very proud of that jaw."); - -const u8 gBarraskewdaPokedexText[] = _( - "This Pokémon has a jaw that's as sharp\n" - "as a spear and as strong as steel.\n" - "Apparently Barraskewda's flesh is\n" - "surprisingly tasty, too."); - -const u8 gToxelPokedexText[] = _( - "It stores poison in an internal poison\n" - "sac and secretes that poison through its\n" - "skin. If you touch this Pokémon, a\n" - "tingling sensation follows."); - -const u8 gToxtricityPokedexText[] = _( - "When this Pokémon sounds as if it's\n" - "strumming a guitar, it's actually clawing\n" - "at the protrusions on its chest to\n" - "generate electricity."); - -const u8 gSizzlipedePokedexText[] = _( - "It stores flammable gas in its body and\n" - "uses it to generate heat. The yellow\n" - "sections on its belly get particularly hot."); - -const u8 gCentiskorchPokedexText[] = _( - "When it heats up, its body temperature\n" - "reaches about 1,500 degrees Fahrenheit.\n" - "It lashes its body like a whip and\n" - "launches itself at enemies."); - -const u8 gClobbopusPokedexText[] = _( - "It's very curious, but its means of\n" - "investigating things is to try to punch\n" - "them with its tentacles. The search for\n" - "food is what brings it onto land."); - -const u8 gGrapploctPokedexText[] = _( - "A body made up of nothing but muscle makes\n" - "the grappling moves this Pokémon performs\n" - "with its tentacles tremendously powerful."); - -const u8 gSinisteaPokedexText[] = _( - "This Pokémon is said to have been born\n" - "when a lonely spirit possessed a cold,\n" - "leftover cup of tea."); - -const u8 gPolteageistPokedexText[] = _( - "This species lives in antique teapots.\n" - "Most pots are forgeries, but on rare\n" - "occasions, an authentic work is found."); - -const u8 gHatennaPokedexText[] = _( - "Via the protrusion on its head, it senses\n" - "other creatures' emotions. If you don't\n" - "have a calm disposition, it will never\n" - "warm up to you."); - -const u8 gHattremPokedexText[] = _( - "No matter who you are, if you bring strong\n" - "emotions near this Pokémon, it will silence\n" - "you violently."); - -const u8 gHatterenePokedexText[] = _( - "It emits psychic power strong enough to\n" - "cause headaches as a deterrent to the\n" - "approach of others."); - -const u8 gImpidimpPokedexText[] = _( - "Through its nose, it sucks in the\n" - "emanations produced by people and Pokémon\n" - "when they feel annoyed. It thrives off\n" - "this negative energy."); - -const u8 gMorgremPokedexText[] = _( - "When it gets down on all fours as if to\n" - "beg for forgiveness, it's trying to lure\n" - "opponents in so that it can stab them\n" - "with its spear-like hair."); - -const u8 gGrimmsnarlPokedexText[] = _( - "With the hair wrapped around its body\n" - "helping to enhance its muscles, this\n" - "Pokémon can overwhelm even Machamp."); - -const u8 gObstagoonPokedexText[] = _( - "Its voice is staggering in volume.\n" - "Obstagoon has a tendency to take on a\n" - "threatening posture and shout--this move\n" - "is known as Obstruct."); - -const u8 gPerrserkerPokedexText[] = _( - "What appears to be an iron helmet is\n" - "actually hardened hair. This Pokémon\n" - "lives for the thrill of battle."); - -const u8 gCursolaPokedexText[] = _( - "Its shell is overflowing with its\n" - "heightened otherworldly energy. The\n" - "ectoplasm serves as protection for this\n" - "Pokémon's core spirit."); - -const u8 gSirfetchdPokedexText[] = _( - "Only Farfetch'd that have survived many\n" - "battles can attain this evolution. When\n" - "this Pokémon's leek withers, it will\n" - "retire from combat."); - -const u8 gMrRimePokedexText[] = _( - "It's highly skilled at tap-dancing. It\n" - "waves its cane of ice in time with its\n" - "graceful movements."); - -const u8 gRunerigusPokedexText[] = _( - "A powerful curse was woven into an ancient\n" - "painting. After absorbing the spirit of\n" - "a Yamask, the painting began to move."); - -const u8 gMilceryPokedexText[] = _( - "This Pokémon was born from sweet-smelling\n" - "particles in the air. Its body is made\n" - "of cream."); - -const u8 gAlcremiePokedexText[] = _( - "When it trusts a Trainer, it will treat\n" - "them to berries it's decorated with cream."); - -const u8 gFalinksPokedexText[] = _( - "Five of them are troopers, and one is the\n" - "brass. The brass's orders are absolute."); - -const u8 gPincurchinPokedexText[] = _( - "It feeds on seaweed, using its teeth to\n" - "scrape it off rocks. Electric current\n" - "flows from the tips of its spines."); - -const u8 gSnomPokedexText[] = _( - "It spits out thread imbued with a frigid\n" - "sort of energy and uses it to tie its body\n" - "to branches, disguising itself as an\n" - "icicle while it sleeps."); - -const u8 gFrosmothPokedexText[] = _( - "Icy scales fall from its wings like snow\n" - "as it flies over fields and mountains.\n" - "The temperature of its wings is less than\n" - "-290 degrees Fahrenheit."); - -const u8 gStonjournerPokedexText[] = _( - "It stands in grasslands, watching the\n" - "sun's descent from zenith to horizon. This\n" - "Pokémon has a talent for delivering\n" - "dynamic kicks."); - -const u8 gEiscuePokedexText[] = _( - "It drifted in on the flow of ocean waters\n" - "from a frigid place. It keeps its head\n" - "iced constantly to make sure it stays\n" - "nice and cold."); - -const u8 gIndeedeePokedexText[] = _( - "It uses the horns on its head to sense the\n" - "emotions of others. Males will act as\n" - "valets for those they serve, looking\n" - "after their every need."); - -const u8 gMorpekoPokedexText[] = _( - "As it eats the seeds stored up in its\n" - "pocket-like pouches, this Pokémon is not\n" - "just satisfying its constant hunger. It's\n" - "also generating electricity."); - -const u8 gCufantPokedexText[] = _( - "It digs up the ground with its trunk.\n" - "It's also very strong, being able to\n" - "carry loads of over five tons without any\n" - "problem at all."); - -const u8 gCopperajahPokedexText[] = _( - "They came over from another region long\n" - "ago and worked together with humans.\n" - "Their green skin is resistant to water."); - -const u8 gDracozoltPokedexText[] = _( - "In ancient times, it was unbeatable thanks\n" - "to its powerful lower body, but it went\n" - "extinct anyway after it depleted all its\n" - "plant-based food sources."); - -const u8 gArctozoltPokedexText[] = _( - "The shaking of its freezing upper half is\n" - "what generates its electricity. It has a\n" - "hard time walking around."); - -const u8 gDracovishPokedexText[] = _( - "Powerful legs and jaws made it the apex\n" - "predator of its time. Its own overhunting\n" - "of its prey was what drove it to\n" - "extinction."); - -const u8 gArctovishPokedexText[] = _( - "Though it's able to capture prey by\n" - "freezing its surroundings, it has trouble\n" - "eating the prey afterward because its\n" - "mouth is on top of its head."); - -const u8 gDuraludonPokedexText[] = _( - "Its body resembles polished metal, and\n" - "it's both lightweight and strong. The only\n" - "drawback is that it rusts easily."); - -const u8 gDreepyPokedexText[] = _( - "After being reborn as a ghost Pokémon,\n" - "Dreepy wanders the areas it used to\n" - "inhabit back when it was alive in\n" - "prehistoric seas."); - -const u8 gDrakloakPokedexText[] = _( - "It's capable of flying faster than 120 mph.\n" - "It battles alongside Dreepy and dotes\n" - "on them until they successfully evolve."); - -const u8 gDragapultPokedexText[] = _( - "When it isn't battling, it keeps Dreepy\n" - "in the holes on its horns. Once a fight\n" - "starts, it launches the Dreepy like\n" - "supersonic missiles."); - -const u8 gZacianPokedexText[] = _( - "Known as a legendary hero, this Pokémon\n" - "absorbs metal particles, transforming them\n" - "into a weapon it uses to battle."); - -const u8 gZamazentaPokedexText[] = _( - "In times past, it worked together with a\n" - "king of the people to save the Galar\n" - "region. It absorbs metal that it then\n" - "uses in battle."); - -const u8 gEternatusPokedexText[] = _( - "The core on its chest absorbs energy\n" - "emanating from the lands of the Galar\n" - "region. This energy is what allows\n" - "Eternatus to stay active."); - -const u8 gKubfuPokedexText[] = _( - "Kubfu trains hard to perfect its moves.\n" - "The moves it masters will determine which\n" - "form it takes when it evolves."); - -const u8 gUrshifuPokedexText[] = _( - "This form of Urshifu is a strong believer\n" - "in the one-hit KO. Its strategy is to leap\n" - "in close to foes and land a devastating\n" - "blow with a hardened fist."); - -const u8 gZarudePokedexText[] = _( - "Within dense forests, this Pokémon lives\n" - "in a pack with others of its kind. It's\n" - "incredibly aggressive, and the other\n" - "Pokémon of the forest fear it."); - -const u8 gRegielekiPokedexText[] = _( - "This Pokémon is a cluster of electrical\n" - "energy. It's said that removing the rings\n" - "on Regieleki's body will unleash the\n" - "Pokémon's latent power."); - -const u8 gRegidragoPokedexText[] = _( - "An academic theory proposes that\n" - "Regidrago's arms were once the head of an\n" - "ancient dragon Pokémon. The theory\n" - "remains unproven."); - -const u8 gGlastrierPokedexText[] = _( - "Glastrier emits intense cold from its\n" - "hooves. It's also a belligerent Pokémon--\n" - "anything it wants, it takes by force."); - -const u8 gSpectrierPokedexText[] = _( - "It probes its surroundings with all its\n" - "senses save one--it doesn't use its sense\n" - "of sight. Spectrier's kicks are said to\n" - "separate soul from body."); - -const u8 gCalyrexPokedexText[] = _( - "Calyrex is a merciful Pokémon, capable of\n" - "providing healing and blessings. It\n" - "reigned over the Galar region in times\n" - "of yore."); - -const u8 gWyrdeerPokedexText[] = _( - "The black orbs shine with an uncanny light\n" - "when it is erecting invisible barriers.\n" - "The fur shed from its beard retains heat\n" - "and is useful for winter clothing."); - -const u8 gKleavorPokedexText[] = _( - "A violent creature that fells trees with\n" - "its crude axes and shields itself with hard\n" - "stone. Should one encounter this Pokémon\n" - "in the wild, one's only recourse is to flee."); - -const u8 gUrsalunaPokedexText[] = _( - "Swampy terrain gives Ursaluna its burly\n" - "physique and newfound capacity to\n" - "manipulate peat at will."); - -const u8 gBasculegionPokedexText[] = _( - "Clads itself in the souls of comrades that\n" - "perished before fulfilling their goals of\n" - "journeying upstream. No other species in\n" - "all Hisui's rivers is Basculegion's equal."); - -const u8 gSneaslerPokedexText[] = _( - "Because of its wicked poison and daunting\n" - "physical prowess, no other species could\n" - "hope to best it on frozen highlands. It\n" - "prefers solitude and doesn't form packs."); - -const u8 gOverqwilPokedexText[] = _( - "Its lancelike spikes and savage\n" - "temperament have earned it the\n" - "nickname “Sea Fiend”.\n" - "It slurps up poison to nourish itself."); - -const u8 gEnamorusPokedexText[] = _( - "Its arrival brings an end to the\n" - "winter. According to legend, this\n" - "Pokémon's love gives rise to the\n" - "budding of fresh life across the land."); -#endif diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index c4049afe9a..e250403fbc 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -1,24721 +1,342 @@ +#include "constants/abilities.h" + +// Shared Pokédex entries +const u8 gPichuPokedexText[] = _( + "It is still inept at retaining electricity.\n" + "When it is startled, it discharges power\n" + "accidentally. It gets better at holding\n" + "power as it grows older."); + +const u8 gPikachuPokedexText[] = _( + "It stores electricity in the electric sacs\n" + "on its cheeks. When it releases pent-up\n" + "energy in a burst, the electric power is\n" + "equal to a lightning bolt."); + +const u8 gUnownPokedexText[] = _( + "This Pokémon is shaped like ancient text\n" + "characters. Although research is ongoing,\n" + "it is a mystery as to which came first,\n" + "the ancient writings or the various Unown."); + +const u8 gDeoxysNormalPokedexText[] = _( + "Deoxys emerged from a virus that came\n" + "from space. It is highly intelligent and\n" + "can shoot lasers from the crystalline\n" + "organ on its chest."); + +const u8 gArceusPokedexText[] = _( + "It is told in mythology that this Pokémon\n" + "emerged from an egg and shaped all there\n" + "is in this world, before the universe\n" + "even existed."); + +const u8 gGenesectPokedexText[] = _( + "Over 300 million years ago, it was\n" + "feared as the strongest of hunters.\n" + "Team Plasma altered it and attached\n" + "a cannon to its back."); + +const u8 gGreninjaPokedexText[] = _( + "It appears and vanishes with a ninja's\n" + "grace. It toys with its enemies using swift\n" + "movements, while slicing them with throwing\n" + "stars made of compressed water."); + +const u8 gFurfrouPokedexText[] = _( + "Trimming its fluffy fur not only makes\n" + "it more elegant but also increases the\n" + "swiftness of its movements. These\n" + "Pokémon were the guardians of kings."); + +const u8 gXerneasPokedexText[] = _( + "Legends say that when the horns on\n" + "its head shine in seven colors, it is\n" + "sharing everlasting life. It slept for a\n" + "thousand years in the form of a tree"); + +const u8 gZygarde50PokedexText[] = _( + "It's said to be monitoring the ecosystem\n" + "from deep in the caves where it lives.\n" + "There are rumors that even greater power\n" + "lies hidden within its cells."); + +const u8 gZygarde10PokedexText[] = _( + "This is Zygarde when about 10% of\n" + "its pieces have been assembled. It\n" + "leaps at its opponent's chest and\n" + "sinks its sharp fangs into them."); + +const u8 gRockruffPokedexText[] = _( + "This Pokémon has lived with people since\n" + "times long ago. It can sense when its\n" + "Trainer is in the dumps and will stick\n" + "close by its Trainer's side."); + +const u8 gSilvallyNormalPokedexText[] = _( + "Its trust in its partner awakens it.\n" + "This Pokémon is capable of changing its\n" + "type by equipping special memories, a\n" + "trait that is well displayed in battle."); + +const u8 gSilvallyMemoryPokedexText[] = _( + "Upon awakening, its RKS System is\n" + "activated. By employing specific\n" + "memories, this Pokémon can adapt its\n" + "type to confound its enemies."); + +const u8 gMiniorMeteorPokedexText[] = _( + "Originally making its home in the ozone\n" + "layer, it hurtles to the ground when the\n" + "shell encasing its body grows too heavy.\n" + "It was born from mutated nanoparticles."); + +const u8 gMiniorCorePokedexText[] = _( + "If its core stays exposed, it will\n" + "soon die off. It's possible that it\n" + "may survive if it's put into a Poké Ball\n" + "quickly enough."); + +const u8 gAlcremieVanillaCreamPokedexText[] = _( + "When it trusts a Trainer, it will treat\n" + "them to berries it's decorated with cream."); + +const u8 gAlcremieRubyCreamPokedexText[] = _( + "The moment it evolved, it took on a\n" + "sweet and tart flavor. This is\n" + "because of the way its cells\n" + "spontaneously shifted during evolution."); + +const u8 gAlcremieMatchaCreamPokedexText[] = _( + "The moment it evolved, it took on\n" + "an aromatic flavor. This is because\n" + "of the way its cells spontaneously\n" + "shifted during evolution."); + +const u8 gAlcremieMintCreamPokedexText[] = _( + "The moment it evolved, it took on a\n" + "refreshing flavor. This is because\n" + "of the way its cells spontaneously\n" + "shifted during evolution."); + +const u8 gAlcremieLemonCreamPokedexText[] = _( + "The moment it evolved, it took on a\n" + "sour flavor. This is because of the\n" + "way its cells spontaneously shifted\n" + "during evolution."); + +const u8 gAlcremieSaltedCreamPokedexText[] = _( + "The moment it evolved, it took on a\n" + "salty flavor. This is because of the\n" + "way its cells spontaneously shifted\n" + "during evolution."); + +const u8 gAlcremieRubySwirlPokedexText[] = _( + "The moment it evolved, it took on a\n" + "mixed flavor. This is because of the\n" + "way its cells spontaneously shifted\n" + "during evolution."); + +const u8 gAlcremieCaramelSwirlPokedexText[] = _( + "The moment it evolved, it took on a\n" + "bitter flavor. This is because of\n" + "the way its cells spontaneously\n" + "shifted during evolution."); + +const u8 gAlcremieRainbowSwirlPokedexText[] = _( + "The moment it evolved, it took on a\n" + "complex flavor. This is because of\n" + "the way its cells spontaneously\n" + "shifted during evolution."); + +const u8 gToxtricityGigantamaxPokedexText[] = _( + "Out of control after its own\n" + "poison penetrated its brain, it tears\n" + "across the land in a rampage,\n" + "contaminating the earth with toxic sweat."); + +const u8 gOgerponTealMaskPokedexText[] = _( + "This Pokémon's type changes based on\n" + "which mask it's wearing. It confounds\n" + "its enemies with nimble movements\n" + "and kicks."); + +const u8 gOgerponWellspringMaskPokedexText[] = _( + "This form excels in both attack\n" + "and defense. It ceaselessly unleashes\n" + "moves like a spring gushes water."); + +const u8 gOgerponHearthflameMaskPokedexText[] = _( + "This form is the most aggressive,\n" + "bombarding enemies with the\n" + "intensity of flames blazing within a hearth."); + +const u8 gOgerponCornerstoneMaskPokedexText[] = _( + "In this form, it draws on the power\n" + "of stone. Its body is rock-solid,\n" + "protecting it from all manner of\n" + "attacks."); + +// Macros for ease of use. + +#define EVOLUTION(...) (const struct Evolution[]) { __VA_ARGS__, { EVOLUTIONS_END }, } + +#define FRONT_PIC(sprite, width, height) \ + .frontPic = gMonFrontPic_## sprite, \ + .frontPicSize = MON_COORDS_SIZE(width, height) + +#define FRONT_PIC_FEMALE(sprite, width, height) \ + .frontPicFemale = gMonFrontPic_## sprite##F, \ + .frontPicSizeFemale = MON_COORDS_SIZE(width, height) + +#define BACK_PIC(sprite, width, height) \ + .backPic = gMonBackPic_## sprite, \ + .backPicSize = MON_COORDS_SIZE(width, height) + +#define BACK_PIC_FEMALE(sprite, width, height) \ + .backPicFemale = gMonBackPic_## sprite##F, \ + .backPicSizeFemale = MON_COORDS_SIZE(width, height) + +#define PALETTES(pal) \ + .palette = gMonPalette_## pal, \ + .shinyPalette = gMonShinyPalette_## pal + +#define PALETTE_FEMALE(pal) \ + .paletteFemale = gMonPalette_## pal##F, \ + .shinyPaletteFemale = gMonShinyPalette_## pal##F + +#define ICON(sprite, palId) \ + .iconSprite = gMonIcon_## sprite, \ + .iconPalIndex = palId + +#define ICON_FEMALE(sprite, palId) \ + .iconSpriteFemale = gMonIcon_## sprite##F, \ + .iconPalIndexFemale = palId + +#define LEARNSETS(learn) \ + .levelUpLearnset = s ## learn##LevelUpLearnset, \ + .teachableLearnset = s ## learn##TeachableLearnset + // Maximum value for a female Pokémon is 254 (MON_FEMALE) which is 100% female. // 255 (MON_GENDERLESS) is reserved for genderless Pokémon. #define PERCENT_FEMALE(percent) min(254, ((percent * 255) / 100)) -// Macros to allow editing every form at once #define FLIP 0 #define NO_FLIP 1 -#if P_UPDATED_STATS >= GEN_6 - #define PIKACHU_BASE_DEFENSES\ - .baseDefense = 40, \ - .baseSpDefense = 50 -#else - #define PIKACHU_BASE_DEFENSES\ - .baseDefense = 30, \ - .baseSpDefense = 40 -#endif - -#define PIKACHU_SPECIES_INFO(gender, flip) \ - { \ - .baseHP = 35, \ - .baseAttack = 55, \ - .baseSpeed = 90, \ - .baseSpAttack = 50, \ - PIKACHU_BASE_DEFENSES, \ - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, \ - .catchRate = 190, \ - .expYield = 112, \ - .evYield_Speed = 2, \ - .itemRare = ITEM_LIGHT_BALL, \ - .genderRatio = gender, \ - .eggCycles = 10, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, \ - .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD},\ - .bodyColor = BODY_COLOR_YELLOW, \ - .noFlip = flip, \ - } - -#define COSPLAY_PIKACHU_SPECIES_INFO(flip) PIKACHU_SPECIES_INFO(MON_FEMALE, flip) -#define CAP_PIKACHU_SPECIES_INFO(flip) PIKACHU_SPECIES_INFO(MON_MALE, flip) - -#define PICHU_SPECIES_INFO(flip) \ - { \ - .baseHP = 20, \ - .baseAttack = 40, \ - .baseDefense = 15, \ - .baseSpeed = 60, \ - .baseSpAttack = 35, \ - .baseSpDefense = 35, \ - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, \ - .catchRate = 190, \ - .expYield = 41, \ - .evYield_Speed = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 10, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ - .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD},\ - .bodyColor = BODY_COLOR_YELLOW, \ - .noFlip = flip, \ - } - -#define UNOWN_SPECIES_INFO(flip) \ - { \ - .baseHP = 48, \ - .baseAttack = 72, \ - .baseDefense = 48, \ - .baseSpeed = 48, \ - .baseSpAttack = 72, \ - .baseSpDefense = 48, \ - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, \ - .catchRate = 225, \ - .expYield = 118, \ - .evYield_Attack = 1, \ - .evYield_SpAttack = 1, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 40, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ - .abilities = {ABILITY_LEVITATE, ABILITY_NONE},\ - .bodyColor = BODY_COLOR_BLACK, \ - .noFlip = flip, \ - } - -#define CASTFORM_SPECIES_INFO(type, color) \ - { \ - .baseHP = 70, \ - .baseAttack = 70, \ - .baseDefense = 70, \ - .baseSpeed = 70, \ - .baseSpAttack = 70, \ - .baseSpDefense = 70, \ - .types = { type, type }, \ - .catchRate = 45, \ - .expYield = 147, \ - .evYield_HP = 1, \ - .itemCommon = ITEM_MYSTIC_WATER, \ - .itemRare = ITEM_MYSTIC_WATER, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS}, \ - .abilities = {ABILITY_FORECAST, ABILITY_NONE},\ - .bodyColor = color, \ - .noFlip = FALSE, \ - } - -#define BURMY_SPECIES_INFO(color) \ - { \ - .baseHP = 40, \ - .baseAttack = 29, \ - .baseDefense = 45, \ - .baseSpeed = 36, \ - .baseSpAttack = 29, \ - .baseSpDefense = 45, \ - .types = { TYPE_BUG, TYPE_BUG}, \ - .catchRate = 120, \ - .expYield = 45, \ - .evYield_SpDefense = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, \ - .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_OVERCOAT},\ - .bodyColor = color, \ - .noFlip = FALSE, \ - } - -#define CHERRIM_SPECIES_INFO(color) \ - { \ - .baseHP = 70, \ - .baseAttack = 60, \ - .baseDefense = 70, \ - .baseSpeed = 85, \ - .baseSpAttack = 87, \ - .baseSpDefense = 78, \ - .types = { TYPE_GRASS, TYPE_GRASS}, \ - .catchRate = 75, \ - .expYield = 158, \ - .evYield_SpAttack = 2, \ - .itemRare = ITEM_MIRACLE_SEED, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, \ - .abilities = {ABILITY_FLOWER_GIFT, ABILITY_NONE},\ - .bodyColor = color, \ - .noFlip = FALSE, \ - } - -#define SHELLOS_SPECIES_INFO(color) \ - { \ - .baseHP = 76, \ - .baseAttack = 48, \ - .baseDefense = 48, \ - .baseSpeed = 34, \ - .baseSpAttack = 57, \ - .baseSpDefense = 62, \ - .types = { TYPE_WATER, TYPE_WATER}, \ - .catchRate = 190, \ - .expYield = 65, \ - .evYield_HP = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS}, \ - .abilities = {ABILITY_STICKY_HOLD, ABILITY_STORM_DRAIN, ABILITY_SAND_FORCE},\ - .bodyColor = color, \ - .noFlip = FALSE, \ - } - -#define GASTRODON_SPECIES_INFO(color) \ - { \ - .baseHP = 111, \ - .baseAttack = 83, \ - .baseDefense = 68, \ - .baseSpeed = 39, \ - .baseSpAttack = 92, \ - .baseSpDefense = 82, \ - .types = { TYPE_WATER, TYPE_GROUND}, \ - .catchRate = 75, \ - .expYield = 166, \ - .evYield_HP = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS}, \ - .abilities = {ABILITY_STICKY_HOLD, ABILITY_STORM_DRAIN, ABILITY_SAND_FORCE},\ - .bodyColor = color, \ - .noFlip = FALSE, \ - } - -#define ROTOM_FORM_SPECIES_INFO(type, flip) \ - { \ - .baseHP = 50, \ - .baseAttack = 65, \ - .baseDefense = 107, \ - .baseSpeed = 86, \ - .baseSpAttack = 105, \ - .baseSpDefense = 107, \ - .types = { TYPE_ELECTRIC, type }, \ - .catchRate = 45, \ - .expYield = 182, \ - .evYield_Speed = 1, \ - .evYield_SpAttack = 1, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, \ - .abilities = {ABILITY_LEVITATE, ABILITY_NONE},\ - .bodyColor = BODY_COLOR_RED, \ - .noFlip = flip, \ - } - -#define ARCEUS_SPECIES_INFO(type) \ - { \ - .baseHP = 120, \ - .baseAttack = 120, \ - .baseDefense = 120, \ - .baseSpeed = 120, \ - .baseSpAttack = 120, \ - .baseSpDefense = 120, \ - .types = { type, type }, \ - .catchRate = 3, \ - .expYield = 324, \ - .evYield_HP = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ - .abilities = {ABILITY_MULTITYPE, ABILITY_NONE},\ - .bodyColor = BODY_COLOR_WHITE, \ - .noFlip = FALSE, \ - .flags = SPECIES_FLAG_MYTHICAL, \ - } - -#define DEERLING_SPECIES_INFO(color) \ - { \ - .baseHP = 60, \ - .baseAttack = 60, \ - .baseDefense = 50, \ - .baseSpeed = 75, \ - .baseSpAttack = 40, \ - .baseSpDefense = 50, \ - .types = { TYPE_NORMAL, TYPE_GRASS}, \ - .catchRate = 190, \ - .expYield = 67, \ - .evYield_Speed = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE},\ - .bodyColor = color, \ - .noFlip = FALSE, \ - } - -#define SAWSBUCK_SPECIES_INFO \ - { \ - .baseHP = 80, \ - .baseAttack = 100, \ - .baseDefense = 70, \ - .baseSpeed = 95, \ - .baseSpAttack = 60, \ - .baseSpDefense = 70, \ - .types = { TYPE_NORMAL, TYPE_GRASS}, \ - .catchRate = 75, \ - .expYield = 166, \ - .evYield_Attack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE},\ - .bodyColor = BODY_COLOR_BROWN, \ - .noFlip = FALSE, \ - } - -#define GENESECT_SPECIES_INFO \ - { \ - .baseHP = 71, \ - .baseAttack = 120, \ - .baseDefense = 95, \ - .baseSpeed = 99, \ - .baseSpAttack = 120, \ - .baseSpDefense = 95, \ - .types = { TYPE_BUG, TYPE_STEEL}, \ - .catchRate = 3, \ - .expYield = 270, \ - .evYield_Attack = 1, \ - .evYield_Speed = 1, \ - .evYield_SpAttack = 1, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ - .abilities = {ABILITY_DOWNLOAD, ABILITY_NONE},\ - .bodyColor = BODY_COLOR_PURPLE, \ - .noFlip = FALSE, \ - .flags = SPECIES_FLAG_MYTHICAL, \ - } - -#define VIVILLON_SPECIES_INFO(color) \ - { \ - .baseHP = 80, \ - .baseAttack = 52, \ - .baseDefense = 50, \ - .baseSpeed = 89, \ - .baseSpAttack = 90, \ - .baseSpDefense = 50, \ - .types = { TYPE_BUG, TYPE_FLYING}, \ - .catchRate = 45, \ - .expYield = 185, \ - .evYield_HP = 1, \ - .evYield_Speed = 1, \ - .evYield_SpAttack = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, \ - .abilities = {ABILITY_SHIELD_DUST, ABILITY_COMPOUND_EYES, ABILITY_FRIEND_GUARD},\ - .bodyColor = color, \ - .noFlip = FALSE, \ - } - -#define FLABEBE_SPECIES_INFO \ - { \ - .baseHP = 44, \ - .baseAttack = 38, \ - .baseDefense = 39, \ - .baseSpeed = 42, \ - .baseSpAttack = 61, \ - .baseSpDefense = 79, \ - .types = { TYPE_FAIRY, TYPE_FAIRY}, \ - .catchRate = 225, \ - .expYield = 61, \ - .evYield_SpDefense = 1, \ - .genderRatio = MON_FEMALE, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, \ - .abilities = {ABILITY_FLOWER_VEIL, ABILITY_NONE, ABILITY_SYMBIOSIS},\ - .bodyColor = BODY_COLOR_WHITE, \ - .noFlip = FALSE, \ - } - -#define FLOETTE_SPECIES_INFO \ - { \ - .baseHP = 54, \ - .baseAttack = 45, \ - .baseDefense = 47, \ - .baseSpeed = 52, \ - .baseSpAttack = 75, \ - .baseSpDefense = 98, \ - .types = { TYPE_FAIRY, TYPE_FAIRY}, \ - .catchRate = 120, \ - .expYield = 130, \ - .evYield_SpDefense = 2, \ - .genderRatio = MON_FEMALE, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, \ - .abilities = {ABILITY_FLOWER_VEIL, ABILITY_NONE, ABILITY_SYMBIOSIS},\ - .bodyColor = BODY_COLOR_WHITE, \ - .noFlip = FALSE, \ - } - -#define FLORGES_SPECIES_INFO \ - { \ - .baseHP = 78, \ - .baseAttack = 65, \ - .baseDefense = 68, \ - .baseSpeed = 75, \ - .baseSpAttack = 112, \ - .baseSpDefense = 154, \ - .types = { TYPE_FAIRY, TYPE_FAIRY}, \ - .catchRate = 45, \ - .expYield = 248, \ - .evYield_SpDefense = 3, \ - .genderRatio = MON_FEMALE, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, \ - .abilities = {ABILITY_FLOWER_VEIL, ABILITY_NONE, ABILITY_SYMBIOSIS},\ - .bodyColor = BODY_COLOR_WHITE, \ - .noFlip = FALSE, \ - } - -#define FURFROU_SPECIES_INFO(flip) \ - { \ - .baseHP = 75, \ - .baseAttack = 80, \ - .baseDefense = 60, \ - .baseSpeed = 102, \ - .baseSpAttack = 65, \ - .baseSpDefense = 90, \ - .types = { TYPE_NORMAL, TYPE_NORMAL}, \ - .catchRate = 160, \ - .expYield = 165, \ - .evYield_Speed = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ - .abilities = {ABILITY_FUR_COAT, ABILITY_NONE},\ - .bodyColor = BODY_COLOR_WHITE, \ - .noFlip = flip, \ - } - -#define PUMKPABOO_MISC_INFO \ - .types = { TYPE_GHOST, TYPE_GRASS}, \ - .catchRate = 120, \ - .expYield = 67, \ - .evYield_Defense = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, \ - .abilities = {ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA},\ - .bodyColor = BODY_COLOR_BROWN, \ - .noFlip = FALSE - -#define GOURGEIST_MISC_INFO \ - .types = { TYPE_GHOST, TYPE_GRASS}, \ - .catchRate = 60, \ - .expYield = 173, \ - .evYield_Defense = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, \ - .abilities = {ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA},\ - .bodyColor = BODY_COLOR_BROWN, \ - .noFlip = FALSE - -#define XERNEAS_SPECIES_INFO \ - { \ - .baseHP = 126, \ - .baseAttack = 131, \ - .baseDefense = 95, \ - .baseSpeed = 99, \ - .baseSpAttack = 131, \ - .baseSpDefense = 98, \ - .types = { TYPE_FAIRY, TYPE_FAIRY}, \ - .catchRate = 45, \ - .expYield = 306, \ - .evYield_HP = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ - .abilities = {ABILITY_FAIRY_AURA, ABILITY_NONE},\ - .bodyColor = BODY_COLOR_BLUE, \ - .noFlip = FALSE, \ - .flags = SPECIES_FLAG_LEGENDARY, \ - } - -#define ZYGARDE_50_SPECIES_INFO(ability) \ - { \ - .baseHP = 108, \ - .baseAttack = 100, \ - .baseDefense = 121, \ - .baseSpeed = 95, \ - .baseSpAttack = 81, \ - .baseSpDefense = 95, \ - .types = { TYPE_DRAGON, TYPE_GROUND},\ - .catchRate = 3, \ - .expYield = 270, \ - .evYield_HP = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ - .abilities = {ability, ABILITY_NONE},\ - .bodyColor = BODY_COLOR_GREEN, \ - .noFlip = TRUE, \ - .flags = SPECIES_FLAG_LEGENDARY, \ - } - -#define ZYGARDE_10_SPECIES_INFO(ability) \ - { \ - .baseHP = 54, \ - .baseAttack = 100, \ - .baseDefense = 71, \ - .baseSpeed = 115, \ - .baseSpAttack = 61, \ - .baseSpDefense = 85, \ - .types = { TYPE_DRAGON, TYPE_GROUND},\ - .catchRate = 3, \ - .expYield = 219, \ - .evYield_HP = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ - .abilities = {ability, ABILITY_NONE},\ - .bodyColor = BODY_COLOR_BLACK, \ - .noFlip = TRUE, \ - .flags = SPECIES_FLAG_LEGENDARY, \ - } - -#define ORICORIO_SPECIES_INFO(type, color) \ -{ \ - .baseHP = 75, \ - .baseAttack = 70, \ - .baseDefense = 70, \ - .baseSpeed = 93, \ - .baseSpAttack = 98, \ - .baseSpDefense = 70, \ - .types = { type, TYPE_FLYING }, \ - .catchRate = 45, \ - .expYield = 167, \ - .evYield_SpAttack = 2, \ - .itemRare = ITEM_HONEY, \ - .genderRatio = PERCENT_FEMALE(75), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, \ - .abilities = {ABILITY_DANCER, ABILITY_NONE},\ - .bodyColor = color, \ - .noFlip = FALSE, \ - } - -#define ROCKRUFF_SPECIES_INFO(ability1, ability2, hiddenAbility)\ - { \ - .baseHP = 45, \ - .baseAttack = 65, \ - .baseDefense = 40, \ - .baseSpeed = 60, \ - .baseSpAttack = 30, \ - .baseSpDefense = 40, \ - .types = { TYPE_ROCK, TYPE_ROCK}, \ - .catchRate = 190, \ - .expYield = 56, \ - .evYield_Attack = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, \ - .abilities = {ability1, ability2, hiddenAbility}, \ - .bodyColor = BODY_COLOR_BROWN, \ - .noFlip = FALSE, \ - } - -#define SILVALLY_SPECIES_INFO(type) \ - { \ - .baseHP = 95, \ - .baseAttack = 95, \ - .baseDefense = 95, \ - .baseSpeed = 95, \ - .baseSpAttack = 95, \ - .baseSpDefense = 95, \ - .types = { type, type }, \ - .catchRate = 3, \ - .expYield = 257, \ - .evYield_HP = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ - .abilities = {ABILITY_RKS_SYSTEM, ABILITY_NONE},\ - .bodyColor = BODY_COLOR_GRAY, \ - .noFlip = FALSE, \ - .flags = SPECIES_FLAG_LEGENDARY, \ - } - -#define MINIOR_METEOR_ATTRIBUTES\ - .baseHP = 60, \ - .baseAttack = 60, \ - .baseDefense = 100, \ - .baseSpeed = 60, \ - .baseSpAttack = 60, \ - .baseSpDefense = 100 - -#define MINIOR_CORE_ATTRIBUTES\ - .baseHP = 60, \ - .baseAttack = 100, \ - .baseDefense = 60, \ - .baseSpeed = 120, \ - .baseSpAttack = 100, \ - .baseSpDefense = 60 - -#define MINIOR_MISC_INFO(color) \ - .types = { TYPE_ROCK, TYPE_FLYING}, \ - .catchRate = 30, \ - .expYield = 154, \ - .evYield_Defense = 1, \ - .evYield_SpDefense = 1, \ - .itemRare = ITEM_STAR_PIECE, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, \ - .abilities = {ABILITY_SHIELDS_DOWN, ABILITY_NONE}, \ - .bodyColor = color, \ - .noFlip = TRUE - -#define MINIOR_METEOR_SPECIES_INFO \ - { \ - MINIOR_METEOR_ATTRIBUTES, \ - MINIOR_MISC_INFO(BODY_COLOR_BROWN), \ - } - - -#define MINIOR_CORE_SPECIES_INFO(color) \ - { \ - MINIOR_CORE_ATTRIBUTES, \ - MINIOR_MISC_INFO(color), \ - } - -#define MIMIKYU_SPECIES_INFO \ - { \ - .baseHP = 55, \ - .baseAttack = 90, \ - .baseDefense = 80, \ - .baseSpeed = 96, \ - .baseSpAttack = 50, \ - .baseSpDefense = 105, \ - .types = { TYPE_GHOST, TYPE_FAIRY}, \ - .catchRate = 45, \ - .expYield = 167, \ - .evYield_SpDefense = 2, \ - .itemRare = ITEM_CHESTO_BERRY, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, \ - .abilities = {ABILITY_DISGUISE, ABILITY_NONE},\ - .bodyColor = BODY_COLOR_YELLOW, \ - .noFlip = FALSE, \ - } - -#define MAGEARNA_SPECIES_INFO(color) \ - { \ - .baseHP = 80, \ - .baseAttack = 95, \ - .baseDefense = 115, \ - .baseSpeed = 65, \ - .baseSpAttack = 130, \ - .baseSpDefense = 115, \ - .types = { TYPE_STEEL, TYPE_FAIRY}, \ - .catchRate = 3, \ - .expYield = 270, \ - .evYield_SpAttack = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ - .abilities = {ABILITY_SOUL_HEART, ABILITY_NONE},\ - .bodyColor = color, \ - .noFlip = FALSE, \ - .flags = SPECIES_FLAG_MYTHICAL, \ - } - -#define CRAMORANT_SPECIES_INFO \ - { \ - .baseHP = 70, \ - .baseAttack = 85, \ - .baseDefense = 55, \ - .baseSpeed = 85, \ - .baseSpAttack = 85, \ - .baseSpDefense = 95, \ - .types = { TYPE_FLYING, TYPE_WATER}, \ - .catchRate = 45, \ - .expYield = 166, \ - .evYield_SpDefense = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING}, \ - .abilities = {ABILITY_GULP_MISSILE, ABILITY_NONE},\ - .bodyColor = BODY_COLOR_BLUE, \ - .noFlip = FALSE, \ - } - -#define TOXTRICITY_SPECIES_INFO(ability2) \ - { \ - .baseHP = 75, \ - .baseAttack = 98, \ - .baseDefense = 70, \ - .baseSpeed = 75, \ - .baseSpAttack = 114, \ - .baseSpDefense = 70, \ - .types = { TYPE_ELECTRIC, TYPE_POISON}, \ - .catchRate = 45, \ - .expYield = 176, \ - .evYield_SpAttack = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 25, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, \ - .abilities = {ABILITY_PUNK_ROCK, ability2, ABILITY_TECHNICIAN},\ - .bodyColor = BODY_COLOR_PURPLE, \ - .noFlip = FALSE, \ - } - -#define SINISTEA_SPECIES_INFO \ - { \ - .baseHP = 40, \ - .baseAttack = 45, \ - .baseDefense = 45, \ - .baseSpeed = 50, \ - .baseSpAttack = 74, \ - .baseSpDefense = 54, \ - .types = { TYPE_GHOST, TYPE_GHOST}, \ - .catchRate = 120, \ - .expYield = 62, \ - .evYield_SpAttack = 1, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, \ - .abilities = {ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY},\ - .bodyColor = BODY_COLOR_PURPLE, \ - .noFlip = FALSE, \ - } - -#define POLTEAGEIST_SPECIES_INFO \ - { \ - .baseHP = 60, \ - .baseAttack = 65, \ - .baseDefense = 65, \ - .baseSpeed = 70, \ - .baseSpAttack = 134, \ - .baseSpDefense = 114, \ - .types = { TYPE_GHOST, TYPE_GHOST}, \ - .catchRate = 60, \ - .expYield = 178, \ - .evYield_SpAttack = 2, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, \ - .abilities = {ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY},\ - .bodyColor = BODY_COLOR_PURPLE, \ - .noFlip = FALSE, \ - } - -#define ALCREMIE_SPECIES_INFO(color) \ - { \ - .baseHP = 65, \ - .baseAttack = 60, \ - .baseDefense = 75, \ - .baseSpeed = 64, \ - .baseSpAttack = 110, \ - .baseSpDefense = 121, \ - .types = { TYPE_FAIRY, TYPE_FAIRY}, \ - .catchRate = 100, \ - .expYield = 173, \ - .evYield_SpDefense = 2, \ - .genderRatio = MON_FEMALE, \ - .eggCycles = 20, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS}, \ - .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_AROMA_VEIL},\ - .bodyColor = color, \ - .noFlip = FALSE, \ - } - -#define MORPEKO_SPECIES_INFO \ - { \ - .baseHP = 58, \ - .baseAttack = 95, \ - .baseDefense = 58, \ - .baseSpeed = 97, \ - .baseSpAttack = 70, \ - .baseSpDefense = 58, \ - .types = { TYPE_ELECTRIC, TYPE_DARK}, \ - .catchRate = 180, \ - .expYield = 153, \ - .evYield_Speed = 2, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 10, \ - .friendship = STANDARD_FRIENDSHIP, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, \ - .abilities = {ABILITY_HUNGER_SWITCH, ABILITY_NONE},\ - .bodyColor = BODY_COLOR_YELLOW, \ - .noFlip = FALSE, \ - } - -#define ZARUDE_SPECIES_INFO \ - { \ - .baseHP = 105, \ - .baseAttack = 120, \ - .baseDefense = 105, \ - .baseSpeed = 105, \ - .baseSpAttack = 70, \ - .baseSpDefense = 95, \ - .types = { TYPE_DARK, TYPE_GRASS}, \ - .catchRate = 3, \ - .expYield = 300, \ - .evYield_Attack = 3, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 120, \ - .friendship = 0, \ - .growthRate = GROWTH_SLOW, \ - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, \ - .abilities = {ABILITY_LEAF_GUARD, ABILITY_NONE},\ - .bodyColor = BODY_COLOR_GREEN, \ - .noFlip = FALSE, \ - .flags = SPECIES_FLAG_MYTHICAL, \ - } - const struct SpeciesInfo gSpeciesInfo[] = { - [SPECIES_NONE] = {0}, - - [SPECIES_BULBASAUR] = - { - .baseHP = 45, - .baseAttack = 49, - .baseDefense = 49, - .baseSpeed = 45, - .baseSpAttack = 65, - .baseSpDefense = 65, - .types = { TYPE_GRASS, TYPE_POISON }, - .catchRate = 45, - .expYield = 64, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_IVYSAUR] = - { - .baseHP = 60, - .baseAttack = 62, - .baseDefense = 63, - .baseSpeed = 60, - .baseSpAttack = 80, - .baseSpDefense = 80, - .types = { TYPE_GRASS, TYPE_POISON }, - .catchRate = 45, - .expYield = 142, - .evYield_SpAttack = 1, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_VENUSAUR] = - { - .baseHP = 80, - .baseAttack = 82, - .baseDefense = 83, - .baseSpeed = 80, - .baseSpAttack = 100, - .baseSpDefense = 100, - .types = { TYPE_GRASS, TYPE_POISON }, - .catchRate = 45, - .expYield = 236, - .evYield_SpAttack = 2, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_CHARMANDER] = - { - .baseHP = 39, - .baseAttack = 52, - .baseDefense = 43, - .baseSpeed = 65, - .baseSpAttack = 60, - .baseSpDefense = 50, - .types = { TYPE_FIRE, TYPE_FIRE }, - .catchRate = 45, - .expYield = 62, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_CHARMELEON] = - { - .baseHP = 58, - .baseAttack = 64, - .baseDefense = 58, - .baseSpeed = 80, - .baseSpAttack = 80, - .baseSpDefense = 65, - .types = { TYPE_FIRE, TYPE_FIRE }, - .catchRate = 45, - .expYield = 142, - .evYield_Speed = 1, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_CHARIZARD] = - { - .baseHP = 78, - .baseAttack = 84, - .baseDefense = 78, - .baseSpeed = 100, - .baseSpAttack = 109, - .baseSpDefense = 85, - .types = { TYPE_FIRE, TYPE_FLYING }, - .catchRate = 45, - .expYield = 240, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_SQUIRTLE] = - { - .baseHP = 44, - .baseAttack = 48, - .baseDefense = 65, - .baseSpeed = 43, - .baseSpAttack = 50, - .baseSpDefense = 64, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 45, - .expYield = 63, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_WARTORTLE] = - { - .baseHP = 59, - .baseAttack = 63, - .baseDefense = 80, - .baseSpeed = 58, - .baseSpAttack = 65, - .baseSpDefense = 80, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 45, - .expYield = 142, - .evYield_Defense = 1, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_BLASTOISE] = - { - .baseHP = 79, - .baseAttack = 83, - .baseDefense = 100, - .baseSpeed = 78, - .baseSpAttack = 85, - .baseSpDefense = 105, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 45, - .expYield = 239, - .evYield_SpDefense = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_CATERPIE] = - { - .baseHP = 45, - .baseAttack = 30, - .baseDefense = 35, - .baseSpeed = 45, - .baseSpAttack = 20, - .baseSpDefense = 20, - .types = { TYPE_BUG, TYPE_BUG }, - .catchRate = 255, - .expYield = 39, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_RUN_AWAY}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_METAPOD] = - { - .baseHP = 50, - .baseAttack = 20, - .baseDefense = 55, - .baseSpeed = 30, - .baseSpAttack = 25, - .baseSpDefense = 25, - .types = { TYPE_BUG, TYPE_BUG }, - .catchRate = 120, - .expYield = 72, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, - .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_BUTTERFREE] = - { - .baseHP = 60, - .baseAttack = 45, - .baseDefense = 50, - .baseSpeed = 70, - .baseSpDefense = 80, - #if P_UPDATED_STATS >= GEN_6 - .baseSpAttack = 90, - #else - .baseSpAttack = 80, - #endif - .types = { TYPE_BUG, TYPE_FLYING}, - .catchRate = 45, - .expYield = 178, - .evYield_SpAttack = 2, - .evYield_SpDefense = 1, - .itemRare = ITEM_SILVER_POWDER, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_TINTED_LENS}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_WEEDLE] = - { - .baseHP = 40, - .baseAttack = 35, - .baseDefense = 30, - .baseSpeed = 50, - .baseSpAttack = 20, - .baseSpDefense = 20, - .types = { TYPE_BUG, TYPE_POISON }, - .catchRate = 255, - .expYield = 39, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_RUN_AWAY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_KAKUNA] = - { - .baseHP = 45, - .baseAttack = 25, - .baseDefense = 50, - .baseSpeed = 35, - .baseSpAttack = 25, - .baseSpDefense = 25, - .types = { TYPE_BUG, TYPE_POISON }, - .catchRate = 120, - .expYield = 72, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, - .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_BEEDRILL] = - { - .baseHP = 65, - .baseDefense = 40, - .baseSpeed = 75, - .baseSpAttack = 45, - .baseSpDefense = 80, - #if P_UPDATED_STATS >= GEN_6 - .baseAttack = 90, - #else - .baseAttack = 80, - #endif - .types = { TYPE_BUG, TYPE_POISON}, - .catchRate = 45, - .expYield = 178, - .evYield_Attack = 2, - .evYield_SpDefense = 1, - .itemRare = ITEM_POISON_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_NONE, ABILITY_SNIPER}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_PIDGEY] = - { - .baseHP = 40, - .baseAttack = 45, - .baseDefense = 40, - .baseSpeed = 56, - .baseSpAttack = 35, - .baseSpDefense = 35, - .types = { TYPE_NORMAL, TYPE_FLYING }, - .catchRate = 255, - .expYield = 50, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_PIDGEOTTO] = - { - .baseHP = 63, - .baseAttack = 60, - .baseDefense = 55, - .baseSpeed = 71, - .baseSpAttack = 50, - .baseSpDefense = 50, - .types = { TYPE_NORMAL, TYPE_FLYING }, - .catchRate = 120, - .expYield = 122, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_PIDGEOT] = - { - .baseHP = 83, - .baseAttack = 80, - .baseDefense = 75, - .baseSpAttack = 70, - .baseSpDefense = 70, - #if P_UPDATED_STATS >= GEN_6 - .baseSpeed = 101, - #else - .baseSpeed = 91, - #endif - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 45, - .expYield = 216, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_RATTATA] = - { - .baseHP = 30, - .baseAttack = 56, - .baseDefense = 35, - .baseSpeed = 72, - .baseSpAttack = 25, - .baseSpDefense = 35, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 255, - .expYield = 51, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_GUTS, ABILITY_HUSTLE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_RATICATE] = - { - .baseHP = 55, - .baseAttack = 81, - .baseDefense = 60, - .baseSpeed = 97, - .baseSpAttack = 50, - .baseSpDefense = 70, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 127, - .expYield = 145, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_GUTS, ABILITY_HUSTLE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_SPEAROW] = - { - .baseHP = 40, - .baseAttack = 60, - .baseDefense = 30, - .baseSpeed = 70, - .baseSpAttack = 31, - .baseSpDefense = 31, - .types = { TYPE_NORMAL, TYPE_FLYING }, - .catchRate = 255, - .expYield = 52, - .evYield_Speed = 1, - .itemRare = ITEM_SHARP_BEAK, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_SNIPER}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_FEAROW] = - { - .baseHP = 65, - .baseAttack = 90, - .baseDefense = 65, - .baseSpeed = 100, - .baseSpAttack = 61, - .baseSpDefense = 61, - .types = { TYPE_NORMAL, TYPE_FLYING }, - .catchRate = 90, - .expYield = 155, - .evYield_Speed = 2, - .itemRare = ITEM_SHARP_BEAK, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_SNIPER}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_EKANS] = - { - .baseHP = 35, - .baseAttack = 60, - .baseDefense = 44, - .baseSpeed = 55, - .baseSpAttack = 40, - .baseSpDefense = 54, - .types = { TYPE_POISON, TYPE_POISON }, - .catchRate = 255, - .expYield = 58, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_SHED_SKIN, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_ARBOK] = - { - .baseHP = 60, - .baseDefense = 69, - .baseSpeed = 80, - .baseSpAttack = 65, - .baseSpDefense = 79, - #if P_UPDATED_STATS >= GEN_7 - .baseAttack = 95, - #else - .baseAttack = 85, - #endif - .types = { TYPE_POISON, TYPE_POISON}, - .catchRate = 90, - .expYield = 157, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_SHED_SKIN, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_PIKACHU] = PIKACHU_SPECIES_INFO(PERCENT_FEMALE(50), FLIP), - - [SPECIES_RAICHU] = - { - .baseHP = 60, - .baseAttack = 90, - .baseDefense = 55, - .baseSpAttack = 90, - .baseSpDefense = 80, - #if P_UPDATED_STATS >= GEN_6 - .baseSpeed = 110, - #else - .baseSpeed = 100, - #endif - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 75, - .expYield = 218, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 10, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_SANDSHREW] = - { - .baseHP = 50, - .baseAttack = 75, - .baseDefense = 85, - .baseSpeed = 40, - .baseSpAttack = 20, - .baseSpDefense = 30, - .types = { TYPE_GROUND, TYPE_GROUND }, - .catchRate = 255, - .expYield = 60, - .evYield_Defense = 1, - .itemRare = ITEM_GRIP_CLAW, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_SAND_RUSH}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_SANDSLASH] = - { - .baseHP = 75, - .baseAttack = 100, - .baseDefense = 110, - .baseSpeed = 65, - .baseSpAttack = 45, - .baseSpDefense = 55, - .types = { TYPE_GROUND, TYPE_GROUND }, - .catchRate = 90, - .expYield = 158, - .evYield_Defense = 2, - .itemRare = ITEM_GRIP_CLAW, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_SAND_RUSH}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_NIDORAN_F] = - { - .baseHP = 55, - .baseAttack = 47, - .baseDefense = 52, - .baseSpeed = 41, - .baseSpAttack = 40, - .baseSpDefense = 40, - .types = { TYPE_POISON, TYPE_POISON }, - .catchRate = 235, - .expYield = 55, - .evYield_HP = 1, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, - .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_NIDORINA] = - { - .baseHP = 70, - .baseAttack = 62, - .baseDefense = 67, - .baseSpeed = 56, - .baseSpAttack = 55, - .baseSpDefense = 55, - .types = { TYPE_POISON, TYPE_POISON }, - .catchRate = 120, - .expYield = 128, - .evYield_HP = 2, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_NIDOQUEEN] = - { - .baseHP = 90, - .baseDefense = 87, - .baseSpeed = 76, - .baseSpAttack = 75, - .baseSpDefense = 85, - #if P_UPDATED_STATS >= GEN_6 - .baseAttack = 92, - #else - .baseAttack = 82, - #endif - .types = { TYPE_POISON, TYPE_GROUND}, - .catchRate = 45, - .expYield = 227, - .evYield_HP = 3, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_NIDORAN_M] = - { - .baseHP = 46, - .baseAttack = 57, - .baseDefense = 40, - .baseSpeed = 50, - .baseSpAttack = 40, - .baseSpDefense = 40, - .types = { TYPE_POISON, TYPE_POISON }, - .catchRate = 235, - .expYield = 55, - .evYield_Attack = 1, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, - .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_NIDORINO] = - { - .baseHP = 61, - .baseAttack = 72, - .baseDefense = 57, - .baseSpeed = 65, - .baseSpAttack = 55, - .baseSpDefense = 55, - .types = { TYPE_POISON, TYPE_POISON }, - .catchRate = 120, - .expYield = 128, - .evYield_Attack = 2, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, - .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_NIDOKING] = - { - .baseHP = 81, - .baseDefense = 77, - .baseSpeed = 85, - .baseSpAttack = 85, - .baseSpDefense = 75, - #if P_UPDATED_STATS >= GEN_6 - .baseAttack = 102, - #else - .baseAttack = 92, - #endif - .types = { TYPE_POISON, TYPE_GROUND}, - .catchRate = 45, - .expYield = 227, - .evYield_Attack = 3, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, - .abilities = {ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_CLEFAIRY] = - { - .baseHP = 70, - .baseAttack = 45, - .baseDefense = 48, - .baseSpeed = 35, - .baseSpAttack = 60, - .baseSpDefense = 65, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_FAIRY, TYPE_FAIRY}, - #else - .types = { TYPE_NORMAL, TYPE_NORMAL}, - #endif - .catchRate = 150, - .expYield = 113, - .evYield_HP = 2, - .itemRare = ITEM_MOON_STONE, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 10, - .friendship = 140, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_CUTE_CHARM, ABILITY_MAGIC_GUARD, ABILITY_FRIEND_GUARD}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = TRUE, - }, - - [SPECIES_CLEFABLE] = - { - .baseHP = 95, - .baseAttack = 70, - .baseDefense = 73, - .baseSpeed = 60, - .baseSpDefense = 90, - #if P_UPDATED_STATS >= GEN_6 - .baseSpAttack = 95, - #else - .baseSpAttack = 85, - #endif - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_FAIRY, TYPE_FAIRY}, - #else - .types = { TYPE_NORMAL, TYPE_NORMAL}, - #endif - .catchRate = 25, - .expYield = 217, - .evYield_HP = 3, - .itemRare = ITEM_MOON_STONE, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 10, - .friendship = 140, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_CUTE_CHARM, ABILITY_MAGIC_GUARD, ABILITY_UNAWARE}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = TRUE, - }, - - [SPECIES_VULPIX] = - { - .baseHP = 38, - .baseAttack = 41, - .baseDefense = 40, - .baseSpeed = 65, - .baseSpAttack = 50, - .baseSpDefense = 65, - .types = { TYPE_FIRE, TYPE_FIRE }, - .catchRate = 190, - .expYield = 60, - .evYield_Speed = 1, - .itemRare = ITEM_CHARCOAL, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_DROUGHT}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_NINETALES] = - { - .baseHP = 73, - .baseAttack = 76, - .baseDefense = 75, - .baseSpeed = 100, - .baseSpAttack = 81, - .baseSpDefense = 100, - .types = { TYPE_FIRE, TYPE_FIRE }, - .catchRate = 75, - .expYield = 177, - .evYield_Speed = 1, - .evYield_SpDefense = 1, - .itemRare = ITEM_CHARCOAL, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_DROUGHT}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_JIGGLYPUFF] = - { - .baseHP = 115, - .baseAttack = 45, - .baseDefense = 20, - .baseSpeed = 20, - .baseSpAttack = 45, - .baseSpDefense = 25, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_NORMAL, TYPE_FAIRY}, - #else - .types = { TYPE_NORMAL, TYPE_NORMAL}, - #endif - .catchRate = 170, - .expYield = 95, - .evYield_HP = 2, - .itemRare = ITEM_MOON_STONE, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 10, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_CUTE_CHARM, ABILITY_COMPETITIVE, ABILITY_FRIEND_GUARD}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = TRUE, - }, - - [SPECIES_WIGGLYTUFF] = - { - .baseHP = 140, - .baseAttack = 70, - .baseDefense = 45, - .baseSpeed = 45, - .baseSpDefense = 50, - #if P_UPDATED_STATS >= GEN_6 - .baseSpAttack = 85, - #else - .baseSpAttack = 75, - #endif - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_NORMAL, TYPE_FAIRY}, - #else - .types = { TYPE_NORMAL, TYPE_NORMAL}, - #endif - .catchRate = 50, - .expYield = 196, - .evYield_HP = 3, - .itemRare = ITEM_MOON_STONE, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 10, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_CUTE_CHARM, ABILITY_COMPETITIVE, ABILITY_FRISK}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = TRUE, - }, - - [SPECIES_ZUBAT] = - { - .baseHP = 40, - .baseAttack = 45, - .baseDefense = 35, - .baseSpeed = 55, - .baseSpAttack = 30, - .baseSpDefense = 40, - .types = { TYPE_POISON, TYPE_FLYING }, - .catchRate = 255, - .expYield = 49, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_INFILTRATOR}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_GOLBAT] = - { - .baseHP = 75, - .baseAttack = 80, - .baseDefense = 70, - .baseSpeed = 90, - .baseSpAttack = 65, - .baseSpDefense = 75, - .types = { TYPE_POISON, TYPE_FLYING }, - .catchRate = 90, - .expYield = 159, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_INFILTRATOR}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_ODDISH] = - { - .baseHP = 45, - .baseAttack = 50, - .baseDefense = 55, - .baseSpeed = 30, - .baseSpAttack = 75, - .baseSpDefense = 65, - .types = { TYPE_GRASS, TYPE_POISON }, - .catchRate = 255, - .expYield = 64, - .evYield_SpAttack = 1, - .itemRare = ITEM_ABSORB_BULB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_RUN_AWAY}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_GLOOM] = - { - .baseHP = 60, - .baseAttack = 65, - .baseDefense = 70, - .baseSpeed = 40, - .baseSpAttack = 85, - .baseSpDefense = 75, - .types = { TYPE_GRASS, TYPE_POISON }, - .catchRate = 120, - .expYield = 138, - .evYield_SpAttack = 2, - .itemRare = ITEM_ABSORB_BULB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_STENCH}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_VILEPLUME] = - { - .baseHP = 75, - .baseAttack = 80, - .baseDefense = 85, - .baseSpeed = 50, - .baseSpDefense = 90, - #if P_UPDATED_STATS >= GEN_6 - .baseSpAttack = 110, - #else - .baseSpAttack = 100, - #endif - .types = { TYPE_GRASS, TYPE_POISON}, - .catchRate = 45, - .expYield = 221, - .evYield_SpAttack = 3, - .itemRare = ITEM_ABSORB_BULB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_EFFECT_SPORE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_PARAS] = - { - .baseHP = 35, - .baseAttack = 70, - .baseDefense = 55, - .baseSpeed = 25, - .baseSpAttack = 45, - .baseSpDefense = 55, - .types = { TYPE_BUG, TYPE_GRASS }, - .catchRate = 190, - .expYield = 57, - .evYield_Attack = 1, - .itemCommon = ITEM_TINY_MUSHROOM, - .itemRare = ITEM_BIG_MUSHROOM, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_GRASS}, - .abilities = {ABILITY_EFFECT_SPORE, ABILITY_DRY_SKIN, ABILITY_DAMP}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_PARASECT] = - { - .baseHP = 60, - .baseAttack = 95, - .baseDefense = 80, - .baseSpeed = 30, - .baseSpAttack = 60, - .baseSpDefense = 80, - .types = { TYPE_BUG, TYPE_GRASS }, - .catchRate = 75, - .expYield = 142, - .evYield_Attack = 2, - .evYield_Defense = 1, - .itemCommon = ITEM_TINY_MUSHROOM, - .itemRare = ITEM_BIG_MUSHROOM, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_GRASS}, - .abilities = {ABILITY_EFFECT_SPORE, ABILITY_DRY_SKIN, ABILITY_DAMP}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_VENONAT] = - { - .baseHP = 60, - .baseAttack = 55, - .baseDefense = 50, - .baseSpeed = 45, - .baseSpAttack = 40, - .baseSpDefense = 55, - .types = { TYPE_BUG, TYPE_POISON }, - .catchRate = 190, - .expYield = 61, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_COMPOUND_EYES, ABILITY_TINTED_LENS, ABILITY_RUN_AWAY}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_VENOMOTH] = - { - .baseHP = 70, - .baseAttack = 65, - .baseDefense = 60, - .baseSpeed = 90, - .baseSpAttack = 90, - .baseSpDefense = 75, - .types = { TYPE_BUG, TYPE_POISON }, - .catchRate = 75, - .expYield = 158, - .evYield_Speed = 1, - .evYield_SpAttack = 1, - .itemRare = ITEM_SHED_SHELL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SHIELD_DUST, ABILITY_TINTED_LENS, ABILITY_WONDER_SKIN}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_DIGLETT] = - { - .baseHP = 10, - .baseAttack = 55, - .baseDefense = 25, - .baseSpeed = 95, - .baseSpAttack = 35, - .baseSpDefense = 45, - .types = { TYPE_GROUND, TYPE_GROUND }, - .catchRate = 255, - .expYield = 53, - .evYield_Speed = 1, - .itemRare = ITEM_SOFT_SAND, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SAND_VEIL, ABILITY_ARENA_TRAP, ABILITY_SAND_FORCE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_DUGTRIO] = - { - .baseHP = 35, - .baseDefense = 50, - .baseSpeed = 120, - .baseSpAttack = 50, - .baseSpDefense = 70, - #if P_UPDATED_STATS >= GEN_7 - .baseAttack = 100, - #else - .baseAttack = 80, - #endif - .types = { TYPE_GROUND, TYPE_GROUND}, - .catchRate = 50, - .expYield = 149, - .evYield_Speed = 2, - .itemRare = ITEM_SOFT_SAND, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SAND_VEIL, ABILITY_ARENA_TRAP, ABILITY_SAND_FORCE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_MEOWTH] = - { - .baseHP = 40, - .baseAttack = 45, - .baseDefense = 35, - .baseSpeed = 90, - .baseSpAttack = 40, - .baseSpDefense = 40, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 255, - .expYield = 58, - .evYield_Speed = 1, - .itemRare = ITEM_QUICK_CLAW, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_PERSIAN] = - { - .baseHP = 65, - .baseAttack = 70, - .baseDefense = 60, - .baseSpeed = 115, - .baseSpAttack = 65, - .baseSpDefense = 65, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 90, - .expYield = 154, - .evYield_Speed = 2, - .itemRare = ITEM_QUICK_CLAW, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_LIMBER, ABILITY_TECHNICIAN, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_PSYDUCK] = - { - .baseHP = 50, - .baseAttack = 52, - .baseDefense = 48, - .baseSpeed = 55, - .baseSpAttack = 65, - .baseSpDefense = 50, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 190, - .expYield = 64, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_DAMP, ABILITY_CLOUD_NINE, ABILITY_SWIFT_SWIM}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_GOLDUCK] = - { - .baseHP = 80, - .baseAttack = 82, - .baseDefense = 78, - .baseSpeed = 85, - .baseSpAttack = 95, - .baseSpDefense = 80, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 75, - .expYield = 175, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_DAMP, ABILITY_CLOUD_NINE, ABILITY_SWIFT_SWIM}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_MANKEY] = - { - .baseHP = 40, - .baseAttack = 80, - .baseDefense = 35, - .baseSpeed = 70, - .baseSpAttack = 35, - .baseSpDefense = 45, - .types = { TYPE_FIGHTING, TYPE_FIGHTING }, - .catchRate = 190, - .expYield = 61, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_ANGER_POINT, ABILITY_DEFIANT}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_PRIMEAPE] = - { - .baseHP = 65, - .baseAttack = 105, - .baseDefense = 60, - .baseSpeed = 95, - .baseSpAttack = 60, - .baseSpDefense = 70, - .types = { TYPE_FIGHTING, TYPE_FIGHTING }, - .catchRate = 75, - .expYield = 159, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_ANGER_POINT, ABILITY_DEFIANT}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_GROWLITHE] = - { - .baseHP = 55, - .baseAttack = 70, - .baseDefense = 45, - .baseSpeed = 60, - .baseSpAttack = 70, - .baseSpDefense = 50, - .types = { TYPE_FIRE, TYPE_FIRE }, - .catchRate = 190, - .expYield = 70, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_ARCANINE] = - { - .baseHP = 90, - .baseAttack = 110, - .baseDefense = 80, - .baseSpeed = 95, - .baseSpAttack = 100, - .baseSpDefense = 80, - .types = { TYPE_FIRE, TYPE_FIRE }, - .catchRate = 75, - .expYield = 194, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_POLIWAG] = - { - .baseHP = 40, - .baseAttack = 50, - .baseDefense = 40, - .baseSpeed = 90, - .baseSpAttack = 40, - .baseSpDefense = 40, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 255, - .expYield = 60, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_WATER_ABSORB, ABILITY_DAMP, ABILITY_SWIFT_SWIM}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = TRUE, - }, - - [SPECIES_POLIWHIRL] = - { - .baseHP = 65, - .baseAttack = 65, - .baseDefense = 65, - .baseSpeed = 90, - .baseSpAttack = 50, - .baseSpDefense = 50, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 120, - .expYield = 135, - .evYield_Speed = 2, - .itemRare = ITEM_KINGS_ROCK, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_WATER_ABSORB, ABILITY_DAMP, ABILITY_SWIFT_SWIM}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = TRUE, - }, - - [SPECIES_POLIWRATH] = - { - .baseHP = 90, - .baseDefense = 95, - .baseSpeed = 70, - .baseSpAttack = 70, - .baseSpDefense = 90, - #if P_UPDATED_STATS >= GEN_6 - .baseAttack = 95, - #else - .baseAttack = 85, - #endif - .types = { TYPE_WATER, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 230, - .evYield_Defense = 3, - .itemRare = ITEM_KINGS_ROCK, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_WATER_ABSORB, ABILITY_DAMP, ABILITY_SWIFT_SWIM}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = TRUE, - }, - - [SPECIES_ABRA] = - { - .baseHP = 25, - .baseAttack = 20, - .baseDefense = 15, - .baseSpeed = 90, - .baseSpAttack = 105, - .baseSpDefense = 55, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, - .catchRate = 200, - .expYield = 62, - .evYield_SpAttack = 1, - .itemRare = ITEM_TWISTED_SPOON, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS, ABILITY_MAGIC_GUARD}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_KADABRA] = - { - .baseHP = 40, - .baseAttack = 35, - .baseDefense = 30, - .baseSpeed = 105, - .baseSpAttack = 120, - .baseSpDefense = 70, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, - .catchRate = 100, - .expYield = 140, - .evYield_SpAttack = 2, - .itemRare = ITEM_TWISTED_SPOON, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS, ABILITY_MAGIC_GUARD}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = TRUE, - }, - - [SPECIES_ALAKAZAM] = - { - .baseHP = 55, - .baseAttack = 50, - .baseDefense = 45, - .baseSpeed = 120, - .baseSpAttack = 135, - #if P_UPDATED_STATS >= GEN_6 - .baseSpDefense = 95, - #else - .baseSpDefense = 85, - #endif - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 50, - .expYield = 225, - .evYield_SpAttack = 3, - .itemRare = ITEM_TWISTED_SPOON, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS, ABILITY_MAGIC_GUARD}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_MACHOP] = - { - .baseHP = 70, - .baseAttack = 80, - .baseDefense = 50, - .baseSpeed = 35, - .baseSpAttack = 35, - .baseSpDefense = 35, - .types = { TYPE_FIGHTING, TYPE_FIGHTING }, - .catchRate = 180, - .expYield = 61, - .evYield_Attack = 1, - .itemRare = ITEM_FOCUS_BAND, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_MACHOKE] = - { - .baseHP = 80, - .baseAttack = 100, - .baseDefense = 70, - .baseSpeed = 45, - .baseSpAttack = 50, - .baseSpDefense = 60, - .types = { TYPE_FIGHTING, TYPE_FIGHTING }, - .catchRate = 90, - .expYield = 142, - .evYield_Attack = 2, - .itemRare = ITEM_FOCUS_BAND, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = TRUE, - }, - - [SPECIES_MACHAMP] = - { - .baseHP = 90, - .baseAttack = 130, - .baseDefense = 80, - .baseSpeed = 55, - .baseSpAttack = 65, - .baseSpDefense = 85, - .types = { TYPE_FIGHTING, TYPE_FIGHTING }, - .catchRate = 45, - .expYield = 227, - .evYield_Attack = 3, - .itemRare = ITEM_FOCUS_BAND, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_BELLSPROUT] = - { - .baseHP = 50, - .baseAttack = 75, - .baseDefense = 35, - .baseSpeed = 40, - .baseSpAttack = 70, - .baseSpDefense = 30, - .types = { TYPE_GRASS, TYPE_POISON }, - .catchRate = 255, - .expYield = 60, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_GLUTTONY}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_WEEPINBELL] = - { - .baseHP = 65, - .baseAttack = 90, - .baseDefense = 50, - .baseSpeed = 55, - .baseSpAttack = 85, - .baseSpDefense = 45, - .types = { TYPE_GRASS, TYPE_POISON }, - .catchRate = 120, - .expYield = 137, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_GLUTTONY}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_VICTREEBEL] = - { - .baseHP = 80, - .baseAttack = 105, - .baseDefense = 65, - .baseSpeed = 70, - .baseSpAttack = 100, - #if P_UPDATED_STATS >= GEN_6 - .baseSpDefense = 70, - #else - .baseSpDefense = 60, - #endif - .types = { TYPE_GRASS, TYPE_POISON}, - .catchRate = 45, - .expYield = 221, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_GLUTTONY}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_TENTACOOL] = - { - .baseHP = 40, - .baseAttack = 40, - .baseDefense = 35, - .baseSpeed = 70, - .baseSpAttack = 50, - .baseSpDefense = 100, - .types = { TYPE_WATER, TYPE_POISON }, - .catchRate = 190, - .expYield = 67, - .evYield_SpDefense = 1, - .itemRare = ITEM_POISON_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_CLEAR_BODY, ABILITY_LIQUID_OOZE, ABILITY_RAIN_DISH}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_TENTACRUEL] = - { - .baseHP = 80, - .baseAttack = 70, - .baseDefense = 65, - .baseSpeed = 100, - .baseSpAttack = 80, - .baseSpDefense = 120, - .types = { TYPE_WATER, TYPE_POISON }, - .catchRate = 60, - .expYield = 180, - .evYield_SpDefense = 2, - .itemRare = ITEM_POISON_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_CLEAR_BODY, ABILITY_LIQUID_OOZE, ABILITY_RAIN_DISH}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_GEODUDE] = - { - .baseHP = 40, - .baseAttack = 80, - .baseDefense = 100, - .baseSpeed = 20, - .baseSpAttack = 30, - .baseSpDefense = 30, - .types = { TYPE_ROCK, TYPE_GROUND }, - .catchRate = 255, - .expYield = 60, - .evYield_Defense = 1, - .itemRare = ITEM_EVERSTONE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SAND_VEIL}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_GRAVELER] = - { - .baseHP = 55, - .baseAttack = 95, - .baseDefense = 115, - .baseSpeed = 35, - .baseSpAttack = 45, - .baseSpDefense = 45, - .types = { TYPE_ROCK, TYPE_GROUND }, - .catchRate = 120, - .expYield = 137, - .evYield_Defense = 2, - .itemRare = ITEM_EVERSTONE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SAND_VEIL}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_GOLEM] = - { - .baseHP = 80, - .baseDefense = 130, - .baseSpeed = 45, - .baseSpAttack = 55, - .baseSpDefense = 65, - #if P_UPDATED_STATS >= GEN_6 - .baseAttack = 120, - #else - .baseAttack = 110, - #endif - .types = { TYPE_ROCK, TYPE_GROUND}, - .catchRate = 45, - .expYield = 223, - .evYield_Defense = 3, - .itemRare = ITEM_EVERSTONE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SAND_VEIL}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_PONYTA] = - { - .baseHP = 50, - .baseAttack = 85, - .baseDefense = 55, - .baseSpeed = 90, - .baseSpAttack = 65, - .baseSpDefense = 65, - .types = { TYPE_FIRE, TYPE_FIRE }, - .catchRate = 190, - .expYield = 82, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_RAPIDASH] = - { - .baseHP = 65, - .baseAttack = 100, - .baseDefense = 70, - .baseSpeed = 105, - .baseSpAttack = 80, - .baseSpDefense = 80, - .types = { TYPE_FIRE, TYPE_FIRE }, - .catchRate = 60, - .expYield = 175, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_SLOWPOKE] = - { - .baseHP = 90, - .baseAttack = 65, - .baseDefense = 65, - .baseSpeed = 15, - .baseSpAttack = 40, - .baseSpDefense = 40, - .types = { TYPE_WATER, TYPE_PSYCHIC }, - .catchRate = 190, - .expYield = 63, - .evYield_HP = 1, - .itemRare = ITEM_LAGGING_TAIL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_SLOWBRO] = - { - .baseHP = 95, - .baseAttack = 75, - .baseDefense = 110, - .baseSpeed = 30, - .baseSpAttack = 100, - .baseSpDefense = 80, - .types = { TYPE_WATER, TYPE_PSYCHIC }, - .catchRate = 75, - .expYield = 172, - .evYield_Defense = 2, - .itemRare = ITEM_KINGS_ROCK, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_MAGNEMITE] = - { - .baseHP = 25, - .baseAttack = 35, - .baseDefense = 70, - .baseSpeed = 45, - .baseSpAttack = 95, - .baseSpDefense = 55, - .types = { TYPE_ELECTRIC, TYPE_STEEL }, - .catchRate = 190, - .expYield = 65, - .evYield_SpAttack = 1, - .itemRare = ITEM_METAL_COAT, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_ANALYTIC}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_MAGNETON] = - { - .baseHP = 50, - .baseAttack = 60, - .baseDefense = 95, - .baseSpeed = 70, - .baseSpAttack = 120, - .baseSpDefense = 70, - .types = { TYPE_ELECTRIC, TYPE_STEEL }, - .catchRate = 60, - .expYield = 163, - .evYield_SpAttack = 2, - .itemRare = ITEM_METAL_COAT, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_ANALYTIC}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_FARFETCHD] = - { - .baseHP = 52, - .baseDefense = 55, - .baseSpeed = 60, - .baseSpAttack = 58, - .baseSpDefense = 62, - #if P_UPDATED_STATS >= GEN_7 - .baseAttack = 90, - #else - .baseAttack = 65, - #endif - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 45, - .expYield = 132, - .evYield_Attack = 1, - .itemRare = ITEM_LEEK, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FIELD}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_INNER_FOCUS, ABILITY_DEFIANT}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_DODUO] = - { - .baseHP = 35, - .baseAttack = 85, - .baseDefense = 45, - .baseSpeed = 75, - .baseSpAttack = 35, - .baseSpDefense = 35, - .types = { TYPE_NORMAL, TYPE_FLYING }, - .catchRate = 190, - .expYield = 62, - .evYield_Attack = 1, - .itemRare = ITEM_SHARP_BEAK, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_EARLY_BIRD, ABILITY_TANGLED_FEET}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_DODRIO] = - { - .baseHP = 60, - .baseAttack = 110, - .baseDefense = 70, - .baseSpAttack = 60, - .baseSpDefense = 60, - #if P_UPDATED_STATS >= GEN_7 - .baseSpeed = 110, - #else - .baseSpeed = 100, - #endif - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 45, - .expYield = 165, - .evYield_Attack = 2, - .itemRare = ITEM_SHARP_BEAK, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_EARLY_BIRD, ABILITY_TANGLED_FEET}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_SEEL] = - { - .baseHP = 65, - .baseAttack = 45, - .baseDefense = 55, - .baseSpeed = 45, - .baseSpAttack = 45, - .baseSpDefense = 70, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 190, - .expYield = 65, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_THICK_FAT, ABILITY_HYDRATION, ABILITY_ICE_BODY}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_DEWGONG] = - { - .baseHP = 90, - .baseAttack = 70, - .baseDefense = 80, - .baseSpeed = 70, - .baseSpAttack = 70, - .baseSpDefense = 95, - .types = { TYPE_WATER, TYPE_ICE }, - .catchRate = 75, - .expYield = 166, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_THICK_FAT, ABILITY_HYDRATION, ABILITY_ICE_BODY}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_GRIMER] = - { - .baseHP = 80, - .baseAttack = 80, - .baseDefense = 50, - .baseSpeed = 25, - .baseSpAttack = 40, - .baseSpDefense = 50, - .types = { TYPE_POISON, TYPE_POISON }, - .catchRate = 190, - .expYield = 65, - .evYield_HP = 1, - .itemRare = ITEM_BLACK_SLUDGE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_STENCH, ABILITY_STICKY_HOLD, ABILITY_POISON_TOUCH}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_MUK] = - { - .baseHP = 105, - .baseAttack = 105, - .baseDefense = 75, - .baseSpeed = 50, - .baseSpAttack = 65, - .baseSpDefense = 100, - .types = { TYPE_POISON, TYPE_POISON }, - .catchRate = 75, - .expYield = 175, - .evYield_HP = 1, - .evYield_Attack = 1, - .itemCommon = ITEM_BLACK_SLUDGE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_STENCH, ABILITY_STICKY_HOLD, ABILITY_POISON_TOUCH}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_SHELLDER] = - { - .baseHP = 30, - .baseAttack = 65, - .baseDefense = 100, - .baseSpeed = 40, - .baseSpAttack = 45, - .baseSpDefense = 25, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 190, - .expYield = 61, - .evYield_Defense = 1, - .itemCommon = ITEM_PEARL, - .itemRare = ITEM_BIG_PEARL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_SHELL_ARMOR, ABILITY_SKILL_LINK, ABILITY_OVERCOAT}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_CLOYSTER] = - { - .baseHP = 50, - .baseAttack = 95, - .baseDefense = 180, - .baseSpeed = 70, - .baseSpAttack = 85, - .baseSpDefense = 45, - .types = { TYPE_WATER, TYPE_ICE }, - .catchRate = 60, - .expYield = 184, - .evYield_Defense = 2, - .itemCommon = ITEM_PEARL, - .itemRare = ITEM_BIG_PEARL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_SHELL_ARMOR, ABILITY_SKILL_LINK, ABILITY_OVERCOAT}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_GASTLY] = - { - .baseHP = 30, - .baseAttack = 35, - .baseDefense = 30, - .baseSpeed = 80, - .baseSpAttack = 100, - .baseSpDefense = 35, - .types = { TYPE_GHOST, TYPE_POISON }, - .catchRate = 190, - .expYield = 62, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_HAUNTER] = - { - .baseHP = 45, - .baseAttack = 50, - .baseDefense = 45, - .baseSpeed = 95, - .baseSpAttack = 115, - .baseSpDefense = 55, - .types = { TYPE_GHOST, TYPE_POISON }, - .catchRate = 90, - .expYield = 142, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_GENGAR] = - { - .baseHP = 60, - .baseAttack = 65, - .baseDefense = 60, - .baseSpeed = 110, - .baseSpAttack = 130, - .baseSpDefense = 75, - .types = { TYPE_GHOST, TYPE_POISON }, - .catchRate = 45, - .expYield = 225, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - #if P_UPDATED_ABILITIES >= GEN_7 - .abilities = {ABILITY_CURSED_BODY, ABILITY_NONE}, - #else - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - #endif - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_ONIX] = - { - .baseHP = 35, - .baseAttack = 45, - .baseDefense = 160, - .baseSpeed = 70, - .baseSpAttack = 30, - .baseSpDefense = 45, - .types = { TYPE_ROCK, TYPE_GROUND }, - .catchRate = 45, - .expYield = 77, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_WEAK_ARMOR}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_DROWZEE] = - { - .baseHP = 60, - .baseAttack = 48, - .baseDefense = 45, - .baseSpeed = 42, - .baseSpAttack = 43, - .baseSpDefense = 90, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, - .catchRate = 190, - .expYield = 66, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_INSOMNIA, ABILITY_FOREWARN, ABILITY_INNER_FOCUS}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_HYPNO] = - { - .baseHP = 85, - .baseAttack = 73, - .baseDefense = 70, - .baseSpeed = 67, - .baseSpAttack = 73, - .baseSpDefense = 115, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, - .catchRate = 75, - .expYield = 169, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_INSOMNIA, ABILITY_FOREWARN, ABILITY_INNER_FOCUS}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_KRABBY] = - { - .baseHP = 30, - .baseAttack = 105, - .baseDefense = 90, - .baseSpeed = 50, - .baseSpAttack = 25, - .baseSpDefense = 25, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 225, - .expYield = 65, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_KINGLER] = - { - .baseHP = 55, - .baseAttack = 130, - .baseDefense = 115, - .baseSpeed = 75, - .baseSpAttack = 50, - .baseSpDefense = 50, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 60, - .expYield = 166, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = TRUE, - }, - - [SPECIES_VOLTORB] = - { - .baseHP = 40, - .baseAttack = 30, - .baseDefense = 50, - .baseSpeed = 100, - .baseSpAttack = 55, - .baseSpDefense = 55, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, - .catchRate = 190, - .expYield = 66, - .evYield_Speed = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_ELECTRODE] = - { - .baseHP = 60, - .baseAttack = 50, - .baseDefense = 70, - .baseSpAttack = 80, - .baseSpDefense = 80, - #if P_UPDATED_STATS >= GEN_7 - .baseSpeed = 150, - #else - .baseSpeed = 140, - #endif - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 60, - .expYield = 172, - .evYield_Speed = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_EXEGGCUTE] = - { - .baseHP = 60, - .baseAttack = 40, - .baseDefense = 80, - .baseSpeed = 40, - .baseSpAttack = 60, - .baseSpDefense = 45, - .types = { TYPE_GRASS, TYPE_PSYCHIC }, - .catchRate = 90, - .expYield = 65, - .evYield_Defense = 1, - .itemRare = ITEM_PSYCHIC_SEED, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_HARVEST}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_EXEGGUTOR] = - { - .baseHP = 95, - .baseAttack = 95, - .baseDefense = 85, - .baseSpeed = 55, - .baseSpAttack = 125, - #if P_UPDATED_STATS >= GEN_7 - .baseSpDefense = 75, - #else - .baseSpDefense = 65, - #endif - .types = { TYPE_GRASS, TYPE_PSYCHIC}, - .catchRate = 45, - .expYield = 186, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_HARVEST}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_CUBONE] = - { - .baseHP = 50, - .baseAttack = 50, - .baseDefense = 95, - .baseSpeed = 35, - .baseSpAttack = 40, - .baseSpDefense = 50, - .types = { TYPE_GROUND, TYPE_GROUND }, - .catchRate = 190, - .expYield = 64, - .evYield_Defense = 1, - .itemRare = ITEM_THICK_CLUB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_ROCK_HEAD, ABILITY_LIGHTNING_ROD, ABILITY_BATTLE_ARMOR}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_MAROWAK] = - { - .baseHP = 60, - .baseAttack = 80, - .baseDefense = 110, - .baseSpeed = 45, - .baseSpAttack = 50, - .baseSpDefense = 80, - .types = { TYPE_GROUND, TYPE_GROUND }, - .catchRate = 75, - .expYield = 149, - .evYield_Defense = 2, - .itemRare = ITEM_THICK_CLUB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_ROCK_HEAD, ABILITY_LIGHTNING_ROD, ABILITY_BATTLE_ARMOR}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_HITMONLEE] = - { - .baseHP = 50, - .baseAttack = 120, - .baseDefense = 53, - .baseSpeed = 87, - .baseSpAttack = 35, - .baseSpDefense = 110, - .types = { TYPE_FIGHTING, TYPE_FIGHTING }, - .catchRate = 45, - .expYield = 159, - .evYield_Attack = 2, - .genderRatio = MON_MALE, - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_LIMBER, ABILITY_RECKLESS, ABILITY_UNBURDEN}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_HITMONCHAN] = - { - .baseHP = 50, - .baseAttack = 105, - .baseDefense = 79, - .baseSpeed = 76, - .baseSpAttack = 35, - .baseSpDefense = 110, - .types = { TYPE_FIGHTING, TYPE_FIGHTING }, - .catchRate = 45, - .expYield = 159, - .evYield_SpDefense = 2, - .genderRatio = MON_MALE, - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_IRON_FIST, ABILITY_INNER_FOCUS}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_LICKITUNG] = - { - .baseHP = 90, - .baseAttack = 55, - .baseDefense = 75, - .baseSpeed = 30, - .baseSpAttack = 60, - .baseSpDefense = 75, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 45, - .expYield = 77, - .evYield_HP = 2, - .itemRare = ITEM_LAGGING_TAIL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_OWN_TEMPO, ABILITY_OBLIVIOUS, ABILITY_CLOUD_NINE}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_KOFFING] = - { - .baseHP = 40, - .baseAttack = 65, - .baseDefense = 95, - .baseSpeed = 35, - .baseSpAttack = 60, - .baseSpDefense = 45, - .types = { TYPE_POISON, TYPE_POISON }, - .catchRate = 190, - .expYield = 68, - .evYield_Defense = 1, - .itemRare = ITEM_SMOKE_BALL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_STENCH}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_WEEZING] = - { - .baseHP = 65, - .baseAttack = 90, - .baseDefense = 120, - .baseSpeed = 60, - .baseSpAttack = 85, - .baseSpDefense = 70, - .types = { TYPE_POISON, TYPE_POISON }, - .catchRate = 60, - .expYield = 172, - .evYield_Defense = 2, - .itemRare = ITEM_SMOKE_BALL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_STENCH}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = TRUE, - }, - - [SPECIES_RHYHORN] = - { - .baseHP = 80, - .baseAttack = 85, - .baseDefense = 95, - .baseSpeed = 25, - .baseSpAttack = 30, - .baseSpDefense = 30, - .types = { TYPE_GROUND, TYPE_ROCK }, - .catchRate = 120, - .expYield = 69, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, - .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD, ABILITY_RECKLESS}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_RHYDON] = - { - .baseHP = 105, - .baseAttack = 130, - .baseDefense = 120, - .baseSpeed = 40, - .baseSpAttack = 45, - .baseSpDefense = 45, - .types = { TYPE_GROUND, TYPE_ROCK }, - .catchRate = 60, - .expYield = 170, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, - .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD, ABILITY_RECKLESS}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_CHANSEY] = - { - .baseHP = 250, - .baseAttack = 5, - .baseDefense = 5, - .baseSpeed = 50, - .baseSpAttack = 35, - .baseSpDefense = 105, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 30, - .expYield = 395, - .evYield_HP = 2, - .itemCommon = ITEM_LUCKY_PUNCH, - .genderRatio = MON_FEMALE, - .eggCycles = 40, - .friendship = 140, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_NATURAL_CURE, ABILITY_SERENE_GRACE, ABILITY_HEALER}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_TANGELA] = - { - .baseHP = 65, - .baseAttack = 55, - .baseDefense = 115, - .baseSpeed = 60, - .baseSpAttack = 100, - .baseSpDefense = 40, - .types = { TYPE_GRASS, TYPE_GRASS }, - .catchRate = 45, - .expYield = 87, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_KANGASKHAN] = - { - .baseHP = 105, - .baseAttack = 95, - .baseDefense = 80, - .baseSpeed = 90, - .baseSpAttack = 40, - .baseSpDefense = 80, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 45, - .expYield = 172, - .evYield_HP = 2, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_EARLY_BIRD, ABILITY_SCRAPPY, ABILITY_INNER_FOCUS}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_HORSEA] = - { - .baseHP = 30, - .baseAttack = 40, - .baseDefense = 70, - .baseSpeed = 60, - .baseSpAttack = 70, - .baseSpDefense = 25, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 225, - .expYield = 59, - .evYield_SpAttack = 1, - .itemRare = ITEM_DRAGON_SCALE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SNIPER, ABILITY_DAMP}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SEADRA] = - { - .baseHP = 55, - .baseAttack = 65, - .baseDefense = 95, - .baseSpeed = 85, - .baseSpAttack = 95, - .baseSpDefense = 45, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 75, - .expYield = 154, - .evYield_Defense = 1, - .evYield_SpAttack = 1, - .itemRare = ITEM_DRAGON_SCALE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_POISON_POINT, ABILITY_SNIPER, ABILITY_DAMP}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_GOLDEEN] = - { - .baseHP = 45, - .baseAttack = 67, - .baseDefense = 60, - .baseSpeed = 63, - .baseSpAttack = 35, - .baseSpDefense = 50, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 225, - .expYield = 64, - .evYield_Attack = 1, - .itemRare = ITEM_MYSTIC_WATER, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_WATER_VEIL, ABILITY_LIGHTNING_ROD}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_SEAKING] = - { - .baseHP = 80, - .baseAttack = 92, - .baseDefense = 65, - .baseSpeed = 68, - .baseSpAttack = 65, - .baseSpDefense = 80, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 60, - .expYield = 158, - .evYield_Attack = 2, - .itemRare = ITEM_MYSTIC_WATER, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_WATER_VEIL, ABILITY_LIGHTNING_ROD}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_STARYU] = - { - .baseHP = 30, - .baseAttack = 45, - .baseDefense = 55, - .baseSpeed = 85, - .baseSpAttack = 70, - .baseSpDefense = 55, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 225, - .expYield = 68, - .evYield_Speed = 1, - .itemCommon = ITEM_STARDUST, - .itemRare = ITEM_STAR_PIECE, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_ILLUMINATE, ABILITY_NATURAL_CURE, ABILITY_ANALYTIC}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = TRUE, - }, - - [SPECIES_STARMIE] = - { - .baseHP = 60, - .baseAttack = 75, - .baseDefense = 85, - .baseSpeed = 115, - .baseSpAttack = 100, - .baseSpDefense = 85, - .types = { TYPE_WATER, TYPE_PSYCHIC }, - .catchRate = 60, - .expYield = 182, - .evYield_Speed = 2, - .itemCommon = ITEM_STARDUST, - .itemRare = ITEM_STAR_PIECE, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_ILLUMINATE, ABILITY_NATURAL_CURE, ABILITY_ANALYTIC}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_MR_MIME] = - { - .baseHP = 40, - .baseAttack = 45, - .baseDefense = 65, - .baseSpeed = 90, - .baseSpAttack = 100, - .baseSpDefense = 120, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_PSYCHIC, TYPE_FAIRY}, - #else - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - #endif - .catchRate = 45, - .expYield = 161, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_SOUNDPROOF, ABILITY_FILTER, ABILITY_TECHNICIAN}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_SCYTHER] = - { - .baseHP = 70, - .baseAttack = 110, - .baseDefense = 80, - .baseSpeed = 105, - .baseSpAttack = 55, - .baseSpDefense = 80, - .types = { TYPE_BUG, TYPE_FLYING }, - .catchRate = 45, - .expYield = 100, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_TECHNICIAN, ABILITY_STEADFAST}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_JYNX] = - { - .baseHP = 65, - .baseAttack = 50, - .baseDefense = 35, - .baseSpeed = 95, - .baseSpAttack = 115, - .baseSpDefense = 95, - .types = { TYPE_ICE, TYPE_PSYCHIC }, - .catchRate = 45, - .expYield = 159, - .evYield_SpAttack = 2, - .genderRatio = MON_FEMALE, - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_OBLIVIOUS, ABILITY_FOREWARN, ABILITY_DRY_SKIN}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_ELECTABUZZ] = - { - .baseHP = 65, - .baseAttack = 83, - .baseDefense = 57, - .baseSpeed = 105, - .baseSpAttack = 95, - .baseSpDefense = 85, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, - .catchRate = 45, - .expYield = 172, - .evYield_Speed = 2, - .itemRare = ITEM_ELECTIRIZER, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = TRUE, - }, - - [SPECIES_MAGMAR] = - { - .baseHP = 65, - .baseAttack = 95, - .baseDefense = 57, - .baseSpeed = 93, - .baseSpAttack = 100, - .baseSpDefense = 85, - .types = { TYPE_FIRE, TYPE_FIRE }, - .catchRate = 45, - .expYield = 173, - .evYield_SpAttack = 2, - .itemRare = ITEM_MAGMARIZER, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_PINSIR] = - { - .baseHP = 65, - .baseAttack = 125, - .baseDefense = 100, - .baseSpeed = 85, - .baseSpAttack = 55, - .baseSpDefense = 70, - .types = { TYPE_BUG, TYPE_BUG }, - .catchRate = 45, - .expYield = 175, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_HYPER_CUTTER, ABILITY_MOLD_BREAKER, ABILITY_MOXIE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_TAUROS] = - { - .baseHP = 75, - .baseAttack = 100, - .baseDefense = 95, - .baseSpeed = 110, - .baseSpAttack = 40, - .baseSpDefense = 70, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 45, - .expYield = 172, - .evYield_Attack = 1, - .evYield_Speed = 1, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_ANGER_POINT, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_MAGIKARP] = - { - .baseHP = 20, - .baseAttack = 10, - .baseDefense = 55, - .baseSpeed = 80, - .baseSpAttack = 15, - .baseSpDefense = 20, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 255, - .expYield = 40, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 5, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_RATTLED}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_GYARADOS] = - { - .baseHP = 95, - .baseAttack = 125, - .baseDefense = 79, - .baseSpeed = 81, - .baseSpAttack = 60, - .baseSpDefense = 100, - .types = { TYPE_WATER, TYPE_FLYING }, - .catchRate = 45, - .expYield = 189, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 5, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_MOXIE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_LAPRAS] = - { - .baseHP = 130, - .baseAttack = 85, - .baseDefense = 80, - .baseSpeed = 60, - .baseSpAttack = 85, - .baseSpDefense = 95, - .types = { TYPE_WATER, TYPE_ICE }, - .catchRate = 45, - .expYield = 187, - .evYield_HP = 2, - .itemCommon = ITEM_MYSTIC_WATER, - .itemRare = ITEM_MYSTIC_WATER, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_WATER_ABSORB, ABILITY_SHELL_ARMOR, ABILITY_HYDRATION}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_DITTO] = - { - .baseHP = 48, - .baseAttack = 48, - .baseDefense = 48, - .baseSpeed = 48, - .baseSpAttack = 48, - .baseSpDefense = 48, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 35, - .expYield = 101, - .evYield_HP = 1, - .itemCommon = ITEM_QUICK_POWDER, - .itemRare = ITEM_METAL_POWDER, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_DITTO, EGG_GROUP_DITTO}, - .abilities = {ABILITY_LIMBER, ABILITY_NONE, ABILITY_IMPOSTER}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_EEVEE] = - { - .baseHP = 55, - .baseAttack = 55, - .baseDefense = 50, - .baseSpeed = 55, - .baseSpAttack = 45, - .baseSpDefense = 65, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 45, - .expYield = 65, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 35, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_ADAPTABILITY, ABILITY_ANTICIPATION}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_VAPOREON] = - { - .baseHP = 130, - .baseAttack = 65, - .baseDefense = 60, - .baseSpeed = 65, - .baseSpAttack = 110, - .baseSpDefense = 95, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 45, - .expYield = 184, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 35, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_WATER_ABSORB, ABILITY_WATER_ABSORB, ABILITY_HYDRATION}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_JOLTEON] = - { - .baseHP = 65, - .baseAttack = 65, - .baseDefense = 60, - .baseSpeed = 130, - .baseSpAttack = 110, - .baseSpDefense = 95, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, - .catchRate = 45, - .expYield = 184, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 35, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_VOLT_ABSORB, ABILITY_VOLT_ABSORB, ABILITY_QUICK_FEET}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_FLAREON] = - { - .baseHP = 65, - .baseAttack = 130, - .baseDefense = 60, - .baseSpeed = 65, - .baseSpAttack = 95, - .baseSpDefense = 110, - .types = { TYPE_FIRE, TYPE_FIRE }, - .catchRate = 45, - .expYield = 184, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 35, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_FLASH_FIRE, ABILITY_FLASH_FIRE, ABILITY_GUTS}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_PORYGON] = - { - .baseHP = 65, - .baseAttack = 60, - .baseDefense = 70, - .baseSpeed = 40, - .baseSpAttack = 85, - .baseSpDefense = 75, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 45, - .expYield = 79, - .evYield_SpAttack = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_TRACE, ABILITY_DOWNLOAD, ABILITY_ANALYTIC}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_OMANYTE] = - { - .baseHP = 35, - .baseAttack = 40, - .baseDefense = 100, - .baseSpeed = 35, - .baseSpAttack = 90, - .baseSpDefense = 55, - .types = { TYPE_ROCK, TYPE_WATER }, - .catchRate = 45, - .expYield = 71, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SHELL_ARMOR, ABILITY_WEAK_ARMOR}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_OMASTAR] = - { - .baseHP = 70, - .baseAttack = 60, - .baseDefense = 125, - .baseSpeed = 55, - .baseSpAttack = 115, - .baseSpDefense = 70, - .types = { TYPE_ROCK, TYPE_WATER }, - .catchRate = 45, - .expYield = 173, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SHELL_ARMOR, ABILITY_WEAK_ARMOR}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_KABUTO] = - { - .baseHP = 30, - .baseAttack = 80, - .baseDefense = 90, - .baseSpeed = 55, - .baseSpAttack = 55, - .baseSpDefense = 45, - .types = { TYPE_ROCK, TYPE_WATER }, - .catchRate = 45, - .expYield = 71, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_BATTLE_ARMOR, ABILITY_WEAK_ARMOR}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_KABUTOPS] = - { - .baseHP = 60, - .baseAttack = 115, - .baseDefense = 105, - .baseSpeed = 80, - .baseSpAttack = 65, - .baseSpDefense = 70, - .types = { TYPE_ROCK, TYPE_WATER }, - .catchRate = 45, - .expYield = 173, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_BATTLE_ARMOR, ABILITY_WEAK_ARMOR}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_AERODACTYL] = - { - .baseHP = 80, - .baseAttack = 105, - .baseDefense = 65, - .baseSpeed = 130, - .baseSpAttack = 60, - .baseSpDefense = 75, - .types = { TYPE_ROCK, TYPE_FLYING }, - .catchRate = 45, - .expYield = 180, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 35, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_ROCK_HEAD, ABILITY_PRESSURE, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_SNORLAX] = - { - .baseHP = 160, - .baseAttack = 110, - .baseDefense = 65, - .baseSpeed = 30, - .baseSpAttack = 65, - .baseSpDefense = 110, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 25, - .expYield = 189, - .evYield_HP = 2, - .itemCommon = ITEM_LEFTOVERS, - .itemRare = ITEM_LEFTOVERS, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_IMMUNITY, ABILITY_THICK_FAT, ABILITY_GLUTTONY}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_ARTICUNO] = - { - .baseHP = 90, - .baseAttack = 85, - .baseDefense = 100, - .baseSpeed = 85, - .baseSpAttack = 95, - .baseSpDefense = 125, - .types = { TYPE_ICE, TYPE_FLYING }, - .catchRate = 3, - .expYield = 261, - .evYield_SpDefense = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 80, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_SNOW_CLOAK}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_ZAPDOS] = - { - .baseHP = 90, - .baseAttack = 90, - .baseDefense = 85, - .baseSpeed = 100, - .baseSpAttack = 125, - .baseSpDefense = 90, - .types = { TYPE_ELECTRIC, TYPE_FLYING }, - .catchRate = 3, - .expYield = 261, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 80, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - #if P_UPDATED_ABILITIES >= GEN_6 - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_STATIC}, - #else - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_LIGHTNING_ROD}, - #endif - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_MOLTRES] = - { - .baseHP = 90, - .baseAttack = 100, - .baseDefense = 90, - .baseSpeed = 90, - .baseSpAttack = 125, - .baseSpDefense = 85, - .types = { TYPE_FIRE, TYPE_FLYING }, - .catchRate = 3, - .expYield = 261, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 80, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_FLAME_BODY}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_DRATINI] = - { - .baseHP = 41, - .baseAttack = 64, - .baseDefense = 45, - .baseSpeed = 50, - .baseSpAttack = 50, - .baseSpDefense = 50, - .types = { TYPE_DRAGON, TYPE_DRAGON }, - .catchRate = 45, - .expYield = 60, - .evYield_Attack = 1, - .itemRare = ITEM_DRAGON_SCALE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_MARVEL_SCALE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_DRAGONAIR] = - { - .baseHP = 61, - .baseAttack = 84, - .baseDefense = 65, - .baseSpeed = 70, - .baseSpAttack = 70, - .baseSpDefense = 70, - .types = { TYPE_DRAGON, TYPE_DRAGON }, - .catchRate = 45, - .expYield = 147, - .evYield_Attack = 2, - .itemRare = ITEM_DRAGON_SCALE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_MARVEL_SCALE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_DRAGONITE] = - { - .baseHP = 91, - .baseAttack = 134, - .baseDefense = 95, - .baseSpeed = 80, - .baseSpAttack = 100, - .baseSpDefense = 100, - .types = { TYPE_DRAGON, TYPE_FLYING }, - .catchRate = 45, - .expYield = 270, - .evYield_Attack = 3, - .itemRare = ITEM_DRAGON_SCALE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_MULTISCALE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_MEWTWO] = - { - .baseHP = 106, - .baseAttack = 110, - .baseDefense = 90, - .baseSpeed = 130, - .baseSpAttack = 154, - .baseSpDefense = 90, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, - .catchRate = 3, - .expYield = 306, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_MEW] = - { - .baseHP = 100, - .baseAttack = 100, - .baseDefense = 100, - .baseSpeed = 100, - .baseSpAttack = 100, - .baseSpDefense = 100, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, - .catchRate = 45, - .expYield = 270, - .evYield_HP = 3, - .itemCommon = ITEM_LUM_BERRY, - .itemRare = ITEM_LUM_BERRY, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 100, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED }, - .abilities = {ABILITY_SYNCHRONIZE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - - [SPECIES_CHIKORITA] = - { - .baseHP = 45, - .baseAttack = 49, - .baseDefense = 65, - .baseSpeed = 45, - .baseSpAttack = 49, - .baseSpDefense = 65, - .types = { TYPE_GRASS, TYPE_GRASS }, - .catchRate = 45, - .expYield = 64, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LEAF_GUARD}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_BAYLEEF] = - { - .baseHP = 60, - .baseAttack = 62, - .baseDefense = 80, - .baseSpeed = 60, - .baseSpAttack = 63, - .baseSpDefense = 80, - .types = { TYPE_GRASS, TYPE_GRASS }, - .catchRate = 45, - .expYield = 142, - .evYield_Defense = 1, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LEAF_GUARD}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_MEGANIUM] = - { - .baseHP = 80, - .baseAttack = 82, - .baseDefense = 100, - .baseSpeed = 80, - .baseSpAttack = 83, - .baseSpDefense = 100, - .types = { TYPE_GRASS, TYPE_GRASS }, - .catchRate = 45, - .expYield = 236, - .evYield_Defense = 1, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LEAF_GUARD}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_CYNDAQUIL] = - { - .baseHP = 39, - .baseAttack = 52, - .baseDefense = 43, - .baseSpeed = 65, - .baseSpAttack = 60, - .baseSpDefense = 50, - .types = { TYPE_FIRE, TYPE_FIRE }, - .catchRate = 45, - .expYield = 62, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_FLASH_FIRE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_QUILAVA] = - { - .baseHP = 58, - .baseAttack = 64, - .baseDefense = 58, - .baseSpeed = 80, - .baseSpAttack = 80, - .baseSpDefense = 65, - .types = { TYPE_FIRE, TYPE_FIRE }, - .catchRate = 45, - .expYield = 142, - .evYield_Speed = 1, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_FLASH_FIRE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_TYPHLOSION] = - { - .baseHP = 78, - .baseAttack = 84, - .baseDefense = 78, - .baseSpeed = 100, - .baseSpAttack = 109, - .baseSpDefense = 85, - .types = { TYPE_FIRE, TYPE_FIRE }, - .catchRate = 45, - .expYield = 240, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_FLASH_FIRE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_TOTODILE] = - { - .baseHP = 50, - .baseAttack = 65, - .baseDefense = 64, - .baseSpeed = 43, - .baseSpAttack = 44, - .baseSpDefense = 48, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 45, - .expYield = 63, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_CROCONAW] = - { - .baseHP = 65, - .baseAttack = 80, - .baseDefense = 80, - .baseSpeed = 58, - .baseSpAttack = 59, - .baseSpDefense = 63, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 45, - .expYield = 142, - .evYield_Attack = 1, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = TRUE, - }, - - [SPECIES_FERALIGATR] = - { - .baseHP = 85, - .baseAttack = 105, - .baseDefense = 100, - .baseSpeed = 78, - .baseSpAttack = 79, - .baseSpDefense = 83, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 45, - .expYield = 239, - .evYield_Attack = 2, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SENTRET] = - { - .baseHP = 35, - .baseAttack = 46, - .baseDefense = 34, - .baseSpeed = 20, - .baseSpAttack = 35, - .baseSpDefense = 45, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 255, - .expYield = 43, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_KEEN_EYE, ABILITY_FRISK}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_FURRET] = - { - .baseHP = 85, - .baseAttack = 76, - .baseDefense = 64, - .baseSpeed = 90, - .baseSpAttack = 45, - .baseSpDefense = 55, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 90, - .expYield = 145, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_KEEN_EYE, ABILITY_FRISK}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_HOOTHOOT] = - { - .baseHP = 60, - .baseAttack = 30, - .baseDefense = 30, - .baseSpeed = 50, - .baseSpAttack = 36, - .baseSpDefense = 56, - .types = { TYPE_NORMAL, TYPE_FLYING }, - .catchRate = 255, - .expYield = 52, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_INSOMNIA, ABILITY_KEEN_EYE, ABILITY_TINTED_LENS}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_NOCTOWL] = - { - .baseHP = 100, - .baseAttack = 50, - .baseDefense = 50, - .baseSpeed = 70, - .baseSpDefense = 96, - #if P_UPDATED_STATS >= GEN_7 - .baseSpAttack = 86, - #else - .baseSpAttack = 76, - #endif - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 90, - .expYield = 158, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_INSOMNIA, ABILITY_KEEN_EYE, ABILITY_TINTED_LENS}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_LEDYBA] = - { - .baseHP = 40, - .baseAttack = 20, - .baseDefense = 30, - .baseSpeed = 55, - .baseSpAttack = 40, - .baseSpDefense = 80, - .types = { TYPE_BUG, TYPE_FLYING }, - .catchRate = 255, - .expYield = 53, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_EARLY_BIRD, ABILITY_RATTLED}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_LEDIAN] = - { - .baseHP = 55, - .baseAttack = 35, - .baseDefense = 50, - .baseSpeed = 85, - .baseSpAttack = 55, - .baseSpDefense = 110, - .types = { TYPE_BUG, TYPE_FLYING }, - .catchRate = 90, - .expYield = 137, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_EARLY_BIRD, ABILITY_IRON_FIST}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_SPINARAK] = - { - .baseHP = 40, - .baseAttack = 60, - .baseDefense = 40, - .baseSpeed = 30, - .baseSpAttack = 40, - .baseSpDefense = 40, - .types = { TYPE_BUG, TYPE_POISON }, - .catchRate = 255, - .expYield = 50, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_INSOMNIA, ABILITY_SNIPER}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_ARIADOS] = - { - .baseHP = 70, - .baseAttack = 90, - .baseDefense = 70, - .baseSpeed = 40, - .baseSpAttack = 60, - #if P_UPDATED_STATS >= GEN_7 - .baseSpDefense = 70, - #else - .baseSpDefense = 60, - #endif - .types = { TYPE_BUG, TYPE_POISON}, - .catchRate = 90, - .expYield = 140, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_INSOMNIA, ABILITY_SNIPER}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_CROBAT] = - { - .baseHP = 85, - .baseAttack = 90, - .baseDefense = 80, - .baseSpeed = 130, - .baseSpAttack = 70, - .baseSpDefense = 80, - .types = { TYPE_POISON, TYPE_FLYING }, - .catchRate = 90, - .expYield = 241, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_INFILTRATOR}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_CHINCHOU] = - { - .baseHP = 75, - .baseAttack = 38, - .baseDefense = 38, - .baseSpeed = 67, - .baseSpAttack = 56, - .baseSpDefense = 56, - .types = { TYPE_WATER, TYPE_ELECTRIC }, - .catchRate = 190, - .expYield = 66, - .evYield_HP = 1, - .itemRare = ITEM_DEEP_SEA_SCALE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_VOLT_ABSORB, ABILITY_ILLUMINATE, ABILITY_WATER_ABSORB}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_LANTURN] = - { - .baseHP = 125, - .baseAttack = 58, - .baseDefense = 58, - .baseSpeed = 67, - .baseSpAttack = 76, - .baseSpDefense = 76, - .types = { TYPE_WATER, TYPE_ELECTRIC }, - .catchRate = 75, - .expYield = 161, - .evYield_HP = 2, - .itemRare = ITEM_DEEP_SEA_SCALE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_VOLT_ABSORB, ABILITY_ILLUMINATE, ABILITY_WATER_ABSORB}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_PICHU] = PICHU_SPECIES_INFO(FLIP), - - [SPECIES_CLEFFA] = - { - .baseHP = 50, - .baseAttack = 25, - .baseDefense = 28, - .baseSpeed = 15, - .baseSpAttack = 45, - .baseSpDefense = 55, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_FAIRY, TYPE_FAIRY}, - #else - .types = { TYPE_NORMAL, TYPE_NORMAL}, - #endif - .catchRate = 150, - .expYield = 44, - .evYield_SpDefense = 1, - .itemRare = ITEM_MOON_STONE, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 10, - .friendship = 140, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_CUTE_CHARM, ABILITY_MAGIC_GUARD, ABILITY_FRIEND_GUARD}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = TRUE, - }, - - [SPECIES_IGGLYBUFF] = - { - .baseHP = 90, - .baseAttack = 30, - .baseDefense = 15, - .baseSpeed = 15, - .baseSpAttack = 40, - .baseSpDefense = 20, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_NORMAL, TYPE_FAIRY}, - #else - .types = { TYPE_NORMAL, TYPE_NORMAL}, - #endif - .catchRate = 170, - .expYield = 42, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 10, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_CUTE_CHARM, ABILITY_COMPETITIVE, ABILITY_FRIEND_GUARD}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = TRUE, - }, - - [SPECIES_TOGEPI] = - { - .baseHP = 35, - .baseAttack = 20, - .baseDefense = 65, - .baseSpeed = 20, - .baseSpAttack = 40, - .baseSpDefense = 65, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_FAIRY, TYPE_FAIRY}, - #else - .types = { TYPE_NORMAL, TYPE_NORMAL}, - #endif - .catchRate = 190, - .expYield = 49, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 10, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_HUSTLE, ABILITY_SERENE_GRACE, ABILITY_SUPER_LUCK}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_TOGETIC] = - { - .baseHP = 55, - .baseAttack = 40, - .baseDefense = 85, - .baseSpeed = 40, - .baseSpAttack = 80, - .baseSpDefense = 105, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_FAIRY, TYPE_FLYING}, - #else - .types = { TYPE_NORMAL, TYPE_FLYING}, - #endif - .catchRate = 75, - .expYield = 142, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 10, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_HUSTLE, ABILITY_SERENE_GRACE, ABILITY_SUPER_LUCK}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_NATU] = - { - .baseHP = 40, - .baseAttack = 50, - .baseDefense = 45, - .baseSpeed = 70, - .baseSpAttack = 70, - .baseSpDefense = 45, - .types = { TYPE_PSYCHIC, TYPE_FLYING }, - .catchRate = 190, - .expYield = 64, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_SYNCHRONIZE, ABILITY_EARLY_BIRD, ABILITY_MAGIC_BOUNCE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_XATU] = - { - .baseHP = 65, - .baseAttack = 75, - .baseDefense = 70, - .baseSpeed = 95, - .baseSpAttack = 95, - .baseSpDefense = 70, - .types = { TYPE_PSYCHIC, TYPE_FLYING }, - .catchRate = 75, - .expYield = 165, - .evYield_Speed = 1, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_SYNCHRONIZE, ABILITY_EARLY_BIRD, ABILITY_MAGIC_BOUNCE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_MAREEP] = - { - .baseHP = 55, - .baseAttack = 40, - .baseDefense = 40, - .baseSpeed = 35, - .baseSpAttack = 65, - .baseSpDefense = 45, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, - .catchRate = 235, - .expYield = 56, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, - .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_PLUS}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_FLAAFFY] = - { - .baseHP = 70, - .baseAttack = 55, - .baseDefense = 55, - .baseSpeed = 45, - .baseSpAttack = 80, - .baseSpDefense = 60, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, - .catchRate = 120, - .expYield = 128, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, - .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_PLUS}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_AMPHAROS] = - { - .baseHP = 90, - .baseAttack = 75, - .baseSpeed = 55, - .baseSpAttack = 115, - .baseSpDefense = 90, - #if P_UPDATED_STATS >= GEN_6 - .baseDefense = 85, - #else - .baseDefense = 75, - #endif - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 45, - .expYield = 230, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, - .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_PLUS}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_BELLOSSOM] = - { - .baseHP = 75, - .baseAttack = 80, - .baseSpeed = 50, - .baseSpAttack = 90, - .baseSpDefense = 100, - #if P_UPDATED_STATS >= GEN_6 - .baseDefense = 95, - #else - .baseDefense = 85, - #endif - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 45, - .expYield = 221, - .evYield_SpDefense = 3, - .itemRare = ITEM_ABSORB_BULB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_HEALER}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_MARILL] = - { - .baseHP = 70, - .baseAttack = 20, - .baseDefense = 50, - .baseSpeed = 40, - .baseSpAttack = 20, - .baseSpDefense = 50, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_WATER, TYPE_FAIRY}, - #else - .types = { TYPE_WATER, TYPE_WATER}, - #endif - .catchRate = 190, - .expYield = 88, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 10, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_THICK_FAT, ABILITY_HUGE_POWER, ABILITY_SAP_SIPPER}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_AZUMARILL] = - { - .baseHP = 100, - .baseAttack = 50, - .baseDefense = 80, - .baseSpeed = 50, - .baseSpDefense = 80, - #if P_UPDATED_STATS >= GEN_6 - .baseSpAttack = 60, - #else - .baseSpAttack = 50, - #endif - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_WATER, TYPE_FAIRY}, - #else - .types = { TYPE_WATER, TYPE_WATER}, - #endif - .catchRate = 75, - .expYield = 189, - .evYield_HP = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 10, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_THICK_FAT, ABILITY_HUGE_POWER, ABILITY_SAP_SIPPER}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SUDOWOODO] = - { - .baseHP = 70, - .baseAttack = 100, - .baseDefense = 115, - .baseSpeed = 30, - .baseSpAttack = 30, - .baseSpDefense = 65, - .types = { TYPE_ROCK, TYPE_ROCK }, - .catchRate = 65, - .expYield = 144, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_RATTLED}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_POLITOED] = - { - .baseHP = 90, - .baseAttack = 75, - .baseDefense = 75, - .baseSpeed = 70, - .baseSpAttack = 90, - .baseSpDefense = 100, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 45, - .expYield = 225, - .evYield_SpDefense = 3, - .itemRare = ITEM_KINGS_ROCK, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_WATER_ABSORB, ABILITY_DAMP, ABILITY_DRIZZLE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = TRUE, - }, - - [SPECIES_HOPPIP] = - { - .baseHP = 35, - .baseAttack = 35, - .baseDefense = 40, - .baseSpeed = 50, - .baseSpAttack = 35, - .baseSpDefense = 55, - .types = { TYPE_GRASS, TYPE_FLYING }, - .catchRate = 255, - .expYield = 50, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_INFILTRATOR}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_SKIPLOOM] = - { - .baseHP = 55, - .baseAttack = 45, - .baseDefense = 50, - .baseSpeed = 80, - .baseSpAttack = 45, - .baseSpDefense = 65, - .types = { TYPE_GRASS, TYPE_FLYING }, - .catchRate = 120, - .expYield = 119, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_INFILTRATOR}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_JUMPLUFF] = - { - .baseHP = 75, - .baseAttack = 55, - .baseDefense = 70, - .baseSpeed = 110, - .baseSpAttack = 55, - #if P_UPDATED_STATS >= GEN_6 - .baseSpDefense = 95, - #else - .baseSpDefense = 85, - #endif - .types = { TYPE_GRASS, TYPE_FLYING}, - .catchRate = 45, - .expYield = 207, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_INFILTRATOR}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_AIPOM] = - { - .baseHP = 55, - .baseAttack = 70, - .baseDefense = 55, - .baseSpeed = 85, - .baseSpAttack = 40, - .baseSpDefense = 55, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 45, - .expYield = 72, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_PICKUP, ABILITY_SKILL_LINK}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_SUNKERN] = - { - .baseHP = 30, - .baseAttack = 30, - .baseDefense = 30, - .baseSpeed = 30, - .baseSpAttack = 30, - .baseSpDefense = 30, - .types = { TYPE_GRASS, TYPE_GRASS }, - .catchRate = 235, - .expYield = 36, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_SOLAR_POWER, ABILITY_EARLY_BIRD}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_SUNFLORA] = - { - .baseHP = 75, - .baseAttack = 75, - .baseDefense = 55, - .baseSpeed = 30, - .baseSpAttack = 105, - .baseSpDefense = 85, - .types = { TYPE_GRASS, TYPE_GRASS }, - .catchRate = 120, - .expYield = 149, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_SOLAR_POWER, ABILITY_EARLY_BIRD}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_YANMA] = - { - .baseHP = 65, - .baseAttack = 65, - .baseDefense = 45, - .baseSpeed = 95, - .baseSpAttack = 75, - .baseSpDefense = 45, - .types = { TYPE_BUG, TYPE_FLYING }, - .catchRate = 75, - .expYield = 78, - .evYield_Speed = 1, - .itemRare = ITEM_WIDE_LENS, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SPEED_BOOST, ABILITY_COMPOUND_EYES, ABILITY_FRISK}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_WOOPER] = - { - .baseHP = 55, - .baseAttack = 45, - .baseDefense = 45, - .baseSpeed = 15, - .baseSpAttack = 25, - .baseSpDefense = 25, - .types = { TYPE_WATER, TYPE_GROUND }, - .catchRate = 255, - .expYield = 42, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_DAMP, ABILITY_WATER_ABSORB, ABILITY_UNAWARE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_QUAGSIRE] = - { - .baseHP = 95, - .baseAttack = 85, - .baseDefense = 85, - .baseSpeed = 35, - .baseSpAttack = 65, - .baseSpDefense = 65, - .types = { TYPE_WATER, TYPE_GROUND }, - .catchRate = 90, - .expYield = 151, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_DAMP, ABILITY_WATER_ABSORB, ABILITY_UNAWARE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_ESPEON] = - { - .baseHP = 65, - .baseAttack = 65, - .baseDefense = 60, - .baseSpeed = 110, - .baseSpAttack = 130, - .baseSpDefense = 95, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, - .catchRate = 45, - .expYield = 184, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 35, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SYNCHRONIZE, ABILITY_SYNCHRONIZE, ABILITY_MAGIC_BOUNCE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_UMBREON] = - { - .baseHP = 95, - .baseAttack = 65, - .baseDefense = 110, - .baseSpeed = 65, - .baseSpAttack = 60, - .baseSpDefense = 130, - .types = { TYPE_DARK, TYPE_DARK }, - .catchRate = 45, - .expYield = 184, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 35, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SYNCHRONIZE, ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_MURKROW] = - { - .baseHP = 60, - .baseAttack = 85, - .baseDefense = 42, - .baseSpeed = 91, - .baseSpAttack = 85, - .baseSpDefense = 42, - .types = { TYPE_DARK, TYPE_FLYING }, - .catchRate = 30, - .expYield = 81, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_INSOMNIA, ABILITY_SUPER_LUCK, ABILITY_PRANKSTER}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_SLOWKING] = - { - .baseHP = 95, - .baseAttack = 75, - .baseDefense = 80, - .baseSpeed = 30, - .baseSpAttack = 100, - .baseSpDefense = 110, - .types = { TYPE_WATER, TYPE_PSYCHIC }, - .catchRate = 70, - .expYield = 172, - .evYield_SpDefense = 3, - .itemRare = ITEM_KINGS_ROCK, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_MISDREAVUS] = - { - .baseHP = 60, - .baseAttack = 60, - .baseDefense = 60, - .baseSpeed = 85, - .baseSpAttack = 85, - .baseSpDefense = 85, - .types = { TYPE_GHOST, TYPE_GHOST }, - .catchRate = 45, - .expYield = 87, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = 35, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_UNOWN] = UNOWN_SPECIES_INFO(FLIP), - - [SPECIES_WOBBUFFET] = - { - .baseHP = 190, - .baseAttack = 33, - .baseDefense = 58, - .baseSpeed = 33, - .baseSpAttack = 33, - .baseSpDefense = 58, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, - .catchRate = 45, - .expYield = 142, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_SHADOW_TAG, ABILITY_NONE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_GIRAFARIG] = - { - .baseHP = 70, - .baseAttack = 80, - .baseDefense = 65, - .baseSpeed = 85, - .baseSpAttack = 90, - .baseSpDefense = 65, - .types = { TYPE_NORMAL, TYPE_PSYCHIC }, - .catchRate = 60, - .expYield = 159, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INNER_FOCUS, ABILITY_EARLY_BIRD, ABILITY_SAP_SIPPER}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_PINECO] = - { - .baseHP = 50, - .baseAttack = 65, - .baseDefense = 90, - .baseSpeed = 15, - .baseSpAttack = 35, - .baseSpDefense = 35, - .types = { TYPE_BUG, TYPE_BUG }, - .catchRate = 190, - .expYield = 58, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_STURDY, ABILITY_NONE, ABILITY_OVERCOAT}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_FORRETRESS] = - { - .baseHP = 75, - .baseAttack = 90, - .baseDefense = 140, - .baseSpeed = 40, - .baseSpAttack = 60, - .baseSpDefense = 60, - .types = { TYPE_BUG, TYPE_STEEL }, - .catchRate = 75, - .expYield = 163, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_STURDY, ABILITY_NONE, ABILITY_OVERCOAT}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_DUNSPARCE] = - { - .baseHP = 100, - .baseAttack = 70, - .baseDefense = 70, - .baseSpeed = 45, - .baseSpAttack = 65, - .baseSpDefense = 65, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 190, - .expYield = 145, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SERENE_GRACE, ABILITY_RUN_AWAY, ABILITY_RATTLED}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_GLIGAR] = - { - .baseHP = 65, - .baseAttack = 75, - .baseDefense = 105, - .baseSpeed = 85, - .baseSpAttack = 35, - .baseSpDefense = 65, - .types = { TYPE_GROUND, TYPE_FLYING }, - .catchRate = 60, - .expYield = 86, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SAND_VEIL, ABILITY_IMMUNITY}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_STEELIX] = - { - .baseHP = 75, - .baseAttack = 85, - .baseDefense = 200, - .baseSpeed = 30, - .baseSpAttack = 55, - .baseSpDefense = 65, - .types = { TYPE_STEEL, TYPE_GROUND }, - .catchRate = 25, - .expYield = 179, - .evYield_Defense = 2, - .itemRare = ITEM_METAL_COAT, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_SNUBBULL] = - { - .baseHP = 60, - .baseAttack = 80, - .baseDefense = 50, - .baseSpeed = 30, - .baseSpAttack = 40, - .baseSpDefense = 40, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_FAIRY, TYPE_FAIRY}, - #else - .types = { TYPE_NORMAL, TYPE_NORMAL}, - #endif - .catchRate = 190, - .expYield = 60, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_RUN_AWAY, ABILITY_RATTLED}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_GRANBULL] = - { - .baseHP = 90, - .baseAttack = 120, - .baseDefense = 75, - .baseSpeed = 45, - .baseSpAttack = 60, - .baseSpDefense = 60, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_FAIRY, TYPE_FAIRY}, - #else - .types = { TYPE_NORMAL, TYPE_NORMAL}, - #endif - .catchRate = 75, - .expYield = 158, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_QUICK_FEET, ABILITY_RATTLED}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_QWILFISH] = - { - .baseHP = 65, - .baseAttack = 95, - .baseSpeed = 85, - .baseSpAttack = 55, - .baseSpDefense = 55, - #if P_UPDATED_STATS >= GEN_7 - .baseDefense = 85, - #else - .baseDefense = 75, - #endif - .types = { TYPE_WATER, TYPE_POISON}, - .catchRate = 45, - .expYield = 88, - .evYield_Attack = 1, - .itemRare = ITEM_POISON_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_SCIZOR] = - { - .baseHP = 70, - .baseAttack = 130, - .baseDefense = 100, - .baseSpeed = 65, - .baseSpAttack = 55, - .baseSpDefense = 80, - .types = { TYPE_BUG, TYPE_STEEL }, - .catchRate = 25, - .expYield = 175, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_TECHNICIAN, ABILITY_LIGHT_METAL}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_SHUCKLE] = - { - .baseHP = 20, - .baseAttack = 10, - .baseDefense = 230, - .baseSpeed = 5, - .baseSpAttack = 10, - .baseSpDefense = 230, - .types = { TYPE_BUG, TYPE_ROCK }, - .catchRate = 190, - .expYield = 177, - .evYield_Defense = 1, - .evYield_SpDefense = 1, - .itemCommon = ITEM_BERRY_JUICE, - .itemRare = ITEM_BERRY_JUICE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_STURDY, ABILITY_GLUTTONY, ABILITY_CONTRARY}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_HERACROSS] = - { - .baseHP = 80, - .baseAttack = 125, - .baseDefense = 75, - .baseSpeed = 85, - .baseSpAttack = 40, - .baseSpDefense = 95, - .types = { TYPE_BUG, TYPE_FIGHTING }, - .catchRate = 45, - .expYield = 175, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_GUTS, ABILITY_MOXIE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SNEASEL] = - { - .baseHP = 55, - .baseAttack = 95, - .baseDefense = 55, - .baseSpeed = 115, - .baseSpAttack = 35, - .baseSpDefense = 75, - .types = { TYPE_DARK, TYPE_ICE }, - .catchRate = 60, - .expYield = 86, - .evYield_Speed = 1, - .itemRare = ITEM_QUICK_CLAW, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INNER_FOCUS, ABILITY_KEEN_EYE, ABILITY_PICKPOCKET}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = TRUE, - }, - - [SPECIES_TEDDIURSA] = - { - .baseHP = 60, - .baseAttack = 80, - .baseDefense = 50, - .baseSpeed = 40, - .baseSpAttack = 50, - .baseSpDefense = 50, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 120, - .expYield = 66, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_PICKUP, ABILITY_QUICK_FEET, ABILITY_HONEY_GATHER}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = TRUE, - }, - - [SPECIES_URSARING] = - { - .baseHP = 90, - .baseAttack = 130, - .baseDefense = 75, - .baseSpeed = 55, - .baseSpAttack = 75, - .baseSpDefense = 75, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 60, - .expYield = 175, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_GUTS, ABILITY_QUICK_FEET, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_SLUGMA] = - { - .baseHP = 40, - .baseAttack = 40, - .baseDefense = 40, - .baseSpeed = 20, - .baseSpAttack = 70, - .baseSpDefense = 40, - .types = { TYPE_FIRE, TYPE_FIRE }, - .catchRate = 190, - .expYield = 50, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_MAGMA_ARMOR, ABILITY_FLAME_BODY, ABILITY_WEAK_ARMOR}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_MAGCARGO] = - { - .baseSpDefense = 80, - .baseAttack = 50, - .baseDefense = 120, - .baseSpeed = 30, - #if P_UPDATED_STATS >= GEN_7 - .baseHP = 60, - .baseSpAttack = 90, - #else - .baseHP = 50, - .baseSpAttack = 80, - #endif - .types = { TYPE_FIRE, TYPE_ROCK}, - .catchRate = 75, - .expYield = 151, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_MAGMA_ARMOR, ABILITY_FLAME_BODY, ABILITY_WEAK_ARMOR}, - .bodyColor = BODY_COLOR_RED, - .noFlip = TRUE, - }, - - [SPECIES_SWINUB] = - { - .baseHP = 50, - .baseAttack = 50, - .baseDefense = 40, - .baseSpeed = 50, - .baseSpAttack = 30, - .baseSpDefense = 30, - .types = { TYPE_ICE, TYPE_GROUND }, - .catchRate = 225, - .expYield = 50, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_OBLIVIOUS, ABILITY_SNOW_CLOAK, ABILITY_THICK_FAT}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_PILOSWINE] = - { - .baseHP = 100, - .baseAttack = 100, - .baseDefense = 80, - .baseSpeed = 50, - .baseSpAttack = 60, - .baseSpDefense = 60, - .types = { TYPE_ICE, TYPE_GROUND }, - .catchRate = 75, - .expYield = 158, - .evYield_HP = 1, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_OBLIVIOUS, ABILITY_SNOW_CLOAK, ABILITY_THICK_FAT}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_CORSOLA] = - { - .baseAttack = 55, - .baseSpeed = 35, - .baseSpAttack = 65, - #if P_UPDATED_STATS >= GEN_7 - .baseHP = 65, - .baseDefense = 95, - .baseSpDefense = 95, - #else - .baseHP = 55, - .baseDefense = 85, - .baseSpDefense = 85, - #endif - .types = { TYPE_WATER, TYPE_ROCK}, - .catchRate = 60, - .expYield = 144, - .evYield_Defense = 1, - .evYield_SpDefense = 1, - .itemRare = ITEM_LUMINOUS_MOSS, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_HUSTLE, ABILITY_NATURAL_CURE, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_REMORAID] = - { - .baseHP = 35, - .baseAttack = 65, - .baseDefense = 35, - .baseSpeed = 65, - .baseSpAttack = 65, - .baseSpDefense = 35, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 190, - .expYield = 60, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_HUSTLE, ABILITY_SNIPER, ABILITY_MOODY}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_OCTILLERY] = - { - .baseHP = 75, - .baseAttack = 105, - .baseDefense = 75, - .baseSpeed = 45, - .baseSpAttack = 105, - .baseSpDefense = 75, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 75, - .expYield = 168, - .evYield_Attack = 1, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_SUCTION_CUPS, ABILITY_SNIPER, ABILITY_MOODY}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_DELIBIRD] = - { - .baseHP = 45, - .baseAttack = 55, - .baseDefense = 45, - .baseSpeed = 75, - .baseSpAttack = 65, - .baseSpDefense = 45, - .types = { TYPE_ICE, TYPE_FLYING }, - .catchRate = 45, - .expYield = 116, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_HUSTLE, ABILITY_INSOMNIA}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_MANTINE] = - { - .baseAttack = 40, - .baseDefense = 70, - .baseSpeed = 70, - .baseSpAttack = 80, - .baseSpDefense = 140, - #if P_UPDATED_STATS >= GEN_7 - .baseHP = 85, - #else - .baseHP = 65, - #endif - .types = { TYPE_WATER, TYPE_FLYING}, - .catchRate = 25, - .expYield = 170, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_WATER_ABSORB, ABILITY_WATER_VEIL}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_SKARMORY] = - { - .baseHP = 65, - .baseAttack = 80, - .baseDefense = 140, - .baseSpeed = 70, - .baseSpAttack = 40, - .baseSpDefense = 70, - .types = { TYPE_STEEL, TYPE_FLYING }, - .catchRate = 25, - .expYield = 163, - .evYield_Defense = 2, - .itemRare = ITEM_METAL_COAT, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_STURDY, ABILITY_WEAK_ARMOR}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_HOUNDOUR] = - { - .baseHP = 45, - .baseAttack = 60, - .baseDefense = 30, - .baseSpeed = 65, - .baseSpAttack = 80, - .baseSpDefense = 50, - .types = { TYPE_DARK, TYPE_FIRE }, - .catchRate = 120, - .expYield = 66, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_EARLY_BIRD, ABILITY_FLASH_FIRE, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_HOUNDOOM] = - { - .baseHP = 75, - .baseAttack = 90, - .baseDefense = 50, - .baseSpeed = 95, - .baseSpAttack = 110, - .baseSpDefense = 80, - .types = { TYPE_DARK, TYPE_FIRE }, - .catchRate = 45, - .expYield = 175, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_EARLY_BIRD, ABILITY_FLASH_FIRE, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_KINGDRA] = - { - .baseHP = 75, - .baseAttack = 95, - .baseDefense = 95, - .baseSpeed = 85, - .baseSpAttack = 95, - .baseSpDefense = 95, - .types = { TYPE_WATER, TYPE_DRAGON }, - .catchRate = 45, - .expYield = 243, - .evYield_Attack = 1, - .evYield_SpAttack = 1, - .evYield_SpDefense = 1, - .itemRare = ITEM_DRAGON_SCALE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SNIPER, ABILITY_DAMP}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_PHANPY] = - { - .baseHP = 90, - .baseAttack = 60, - .baseDefense = 60, - .baseSpeed = 40, - .baseSpAttack = 40, - .baseSpDefense = 40, - .types = { TYPE_GROUND, TYPE_GROUND }, - .catchRate = 120, - .expYield = 66, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_PICKUP, ABILITY_NONE, ABILITY_SAND_VEIL}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_DONPHAN] = - { - .baseHP = 90, - .baseAttack = 120, - .baseDefense = 120, - .baseSpeed = 50, - .baseSpAttack = 60, - .baseSpDefense = 60, - .types = { TYPE_GROUND, TYPE_GROUND }, - .catchRate = 60, - .expYield = 175, - .evYield_Attack = 1, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_STURDY, ABILITY_NONE, ABILITY_SAND_VEIL}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_PORYGON2] = - { - .baseHP = 85, - .baseAttack = 80, - .baseDefense = 90, - .baseSpeed = 60, - .baseSpAttack = 105, - .baseSpDefense = 95, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 45, - .expYield = 180, - .evYield_SpAttack = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_TRACE, ABILITY_DOWNLOAD, ABILITY_ANALYTIC}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_STANTLER] = - { - .baseHP = 73, - .baseAttack = 95, - .baseDefense = 62, - .baseSpeed = 85, - .baseSpAttack = 85, - .baseSpDefense = 65, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 45, - .expYield = 163, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_FRISK, ABILITY_SAP_SIPPER}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_SMEARGLE] = - { - .baseHP = 55, - .baseAttack = 20, - .baseDefense = 35, - .baseSpeed = 75, - .baseSpAttack = 20, - .baseSpDefense = 45, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 45, - .expYield = 88, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_OWN_TEMPO, ABILITY_TECHNICIAN, ABILITY_MOODY}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_TYROGUE] = - { - .baseHP = 35, - .baseAttack = 35, - .baseDefense = 35, - .baseSpeed = 35, - .baseSpAttack = 35, - .baseSpDefense = 35, - .types = { TYPE_FIGHTING, TYPE_FIGHTING }, - .catchRate = 75, - .expYield = 42, - .evYield_Attack = 1, - .genderRatio = MON_MALE, - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_GUTS, ABILITY_STEADFAST, ABILITY_VITAL_SPIRIT}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_HITMONTOP] = - { - .baseHP = 50, - .baseAttack = 95, - .baseDefense = 95, - .baseSpeed = 70, - .baseSpAttack = 35, - .baseSpDefense = 110, - .types = { TYPE_FIGHTING, TYPE_FIGHTING }, - .catchRate = 45, - .expYield = 159, - .evYield_SpDefense = 2, - .genderRatio = MON_MALE, - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_TECHNICIAN, ABILITY_STEADFAST}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_SMOOCHUM] = - { - .baseHP = 45, - .baseAttack = 30, - .baseDefense = 15, - .baseSpeed = 65, - .baseSpAttack = 85, - .baseSpDefense = 65, - .types = { TYPE_ICE, TYPE_PSYCHIC }, - .catchRate = 45, - .expYield = 61, - .evYield_SpAttack = 1, - .genderRatio = MON_FEMALE, - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_OBLIVIOUS, ABILITY_FOREWARN, ABILITY_HYDRATION}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_ELEKID] = - { - .baseHP = 45, - .baseAttack = 63, - .baseDefense = 37, - .baseSpeed = 95, - .baseSpAttack = 65, - .baseSpDefense = 55, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, - .catchRate = 45, - .expYield = 72, - .evYield_Speed = 1, - .itemRare = ITEM_ELECTIRIZER, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = TRUE, - }, - - [SPECIES_MAGBY] = - { - .baseHP = 45, - .baseAttack = 75, - .baseDefense = 37, - .baseSpeed = 83, - .baseSpAttack = 70, - .baseSpDefense = 55, - .types = { TYPE_FIRE, TYPE_FIRE }, - .catchRate = 45, - .expYield = 73, - .evYield_Speed = 1, - .itemRare = ITEM_MAGMARIZER, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, - .bodyColor = BODY_COLOR_RED, - .noFlip = TRUE, - }, - - [SPECIES_MILTANK] = - { - .baseHP = 95, - .baseAttack = 80, - .baseDefense = 105, - .baseSpeed = 100, - .baseSpAttack = 40, - .baseSpDefense = 70, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 45, - .expYield = 172, - .evYield_Defense = 2, - .itemCommon = ITEM_MOOMOO_MILK, - .itemRare = ITEM_MOOMOO_MILK, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_THICK_FAT, ABILITY_SCRAPPY, ABILITY_SAP_SIPPER}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_BLISSEY] = - { - .baseHP = 255, - .baseAttack = 10, - .baseDefense = 10, - .baseSpeed = 55, - .baseSpAttack = 75, - .baseSpDefense = 135, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 30, - .expYield = 608, - .evYield_HP = 3, - .itemRare = ITEM_LUCKY_EGG, - .genderRatio = MON_FEMALE, - .eggCycles = 40, - .friendship = 140, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_NATURAL_CURE, ABILITY_SERENE_GRACE, ABILITY_HEALER}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_RAIKOU] = - { - .baseHP = 90, - .baseAttack = 85, - .baseDefense = 75, - .baseSpeed = 115, - .baseSpAttack = 115, - .baseSpDefense = 100, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, - .catchRate = 3, - .expYield = 261, - .evYield_Speed = 2, - .evYield_SpAttack = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 80, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - #if P_UPDATED_ABILITIES >= GEN_7 - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INNER_FOCUS}, - #else - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_VOLT_ABSORB}, - #endif - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_ENTEI] = - { - .baseHP = 115, - .baseAttack = 115, - .baseDefense = 85, - .baseSpeed = 100, - .baseSpAttack = 90, - .baseSpDefense = 75, - .types = { TYPE_FIRE, TYPE_FIRE }, - .catchRate = 3, - .expYield = 261, - .evYield_HP = 1, - .evYield_Attack = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 80, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - #if P_UPDATED_ABILITIES >= GEN_7 - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INNER_FOCUS}, - #else - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_FLASH_FIRE}, - #endif - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_SUICUNE] = - { - .baseHP = 100, - .baseAttack = 75, - .baseDefense = 115, - .baseSpeed = 85, - .baseSpAttack = 90, - .baseSpDefense = 115, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 3, - .expYield = 261, - .evYield_Defense = 1, - .evYield_SpDefense = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 80, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - #if P_UPDATED_ABILITIES >= GEN_7 - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INNER_FOCUS}, - #else - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_WATER_ABSORB}, - #endif - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_LARVITAR] = - { - .baseHP = 50, - .baseAttack = 64, - .baseDefense = 50, - .baseSpeed = 41, - .baseSpAttack = 45, - .baseSpDefense = 50, - .types = { TYPE_ROCK, TYPE_GROUND }, - .catchRate = 45, - .expYield = 60, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_GUTS, ABILITY_NONE, ABILITY_SAND_VEIL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_PUPITAR] = - { - .baseHP = 70, - .baseAttack = 84, - .baseDefense = 70, - .baseSpeed = 51, - .baseSpAttack = 65, - .baseSpDefense = 70, - .types = { TYPE_ROCK, TYPE_GROUND }, - .catchRate = 45, - .expYield = 144, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, - .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_TYRANITAR] = - { - .baseHP = 100, - .baseAttack = 134, - .baseDefense = 110, - .baseSpeed = 61, - .baseSpAttack = 95, - .baseSpDefense = 100, - .types = { TYPE_ROCK, TYPE_DARK }, - .catchRate = 45, - .expYield = 270, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_SAND_STREAM, ABILITY_NONE, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_LUGIA] = - { - .baseHP = 106, - .baseAttack = 90, - .baseDefense = 130, - .baseSpeed = 110, - .baseSpAttack = 90, - .baseSpDefense = 154, - .types = { TYPE_PSYCHIC, TYPE_FLYING }, - .catchRate = 3, - .expYield = 306, - .evYield_SpDefense = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_MULTISCALE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_HO_OH] = - { - .baseHP = 106, - .baseAttack = 130, - .baseDefense = 90, - .baseSpeed = 90, - .baseSpAttack = 110, - .baseSpDefense = 154, - .types = { TYPE_FIRE, TYPE_FLYING }, - .catchRate = 3, - .expYield = 306, - .evYield_SpDefense = 3, - .itemCommon = ITEM_SACRED_ASH, - .itemRare = ITEM_SACRED_ASH, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_CELEBI] = - { - .baseHP = 100, - .baseAttack = 100, - .baseDefense = 100, - .baseSpeed = 100, - .baseSpAttack = 100, - .baseSpDefense = 100, - .types = { TYPE_PSYCHIC, TYPE_GRASS }, - .catchRate = 45, - .expYield = 270, - .evYield_HP = 3, - .itemCommon = ITEM_LUM_BERRY, - .itemRare = ITEM_LUM_BERRY, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 100, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED }, - .abilities = {ABILITY_NATURAL_CURE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - - [SPECIES_TREECKO] = - { - .baseHP = 40, - .baseAttack = 45, - .baseDefense = 35, - .baseSpeed = 70, - .baseSpAttack = 65, - .baseSpDefense = 55, - .types = { TYPE_GRASS, TYPE_GRASS }, - .catchRate = 45, - .expYield = 62, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_UNBURDEN}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_GROVYLE] = - { - .baseHP = 50, - .baseAttack = 65, - .baseDefense = 45, - .baseSpeed = 95, - .baseSpAttack = 85, - .baseSpDefense = 65, - .types = { TYPE_GRASS, TYPE_GRASS }, - .catchRate = 45, - .expYield = 142, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_UNBURDEN}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_SCEPTILE] = - { - .baseHP = 70, - .baseAttack = 85, - .baseDefense = 65, - .baseSpeed = 120, - .baseSpAttack = 105, - .baseSpDefense = 85, - .types = { TYPE_GRASS, TYPE_GRASS }, - .catchRate = 45, - .expYield = 239, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_UNBURDEN}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_TORCHIC] = - { - .baseHP = 45, - .baseAttack = 60, - .baseDefense = 40, - .baseSpeed = 45, - .baseSpAttack = 70, - .baseSpDefense = 50, - .types = { TYPE_FIRE, TYPE_FIRE }, - .catchRate = 45, - .expYield = 62, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SPEED_BOOST}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_COMBUSKEN] = - { - .baseHP = 60, - .baseAttack = 85, - .baseDefense = 60, - .baseSpeed = 55, - .baseSpAttack = 85, - .baseSpDefense = 60, - .types = { TYPE_FIRE, TYPE_FIGHTING }, - .catchRate = 45, - .expYield = 142, - .evYield_Attack = 1, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SPEED_BOOST}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_BLAZIKEN] = - { - .baseHP = 80, - .baseAttack = 120, - .baseDefense = 70, - .baseSpeed = 80, - .baseSpAttack = 110, - .baseSpDefense = 70, - .types = { TYPE_FIRE, TYPE_FIGHTING }, - .catchRate = 45, - .expYield = 239, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_SPEED_BOOST}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_MUDKIP] = - { - .baseHP = 50, - .baseAttack = 70, - .baseDefense = 50, - .baseSpeed = 40, - .baseSpAttack = 50, - .baseSpDefense = 50, - .types = { TYPE_WATER, TYPE_WATER }, - .catchRate = 45, - .expYield = 62, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DAMP}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_MARSHTOMP] = - { - .baseHP = 70, - .baseAttack = 85, - .baseDefense = 70, - .baseSpeed = 50, - .baseSpAttack = 60, - .baseSpDefense = 70, - .types = { TYPE_WATER, TYPE_GROUND }, - .catchRate = 45, - .expYield = 142, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DAMP}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SWAMPERT] = - { - .baseHP = 100, - .baseAttack = 110, - .baseDefense = 90, - .baseSpeed = 60, - .baseSpAttack = 85, - .baseSpDefense = 90, - .types = { TYPE_WATER, TYPE_GROUND }, - .catchRate = 45, - .expYield = 241, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DAMP}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_POOCHYENA] = - { - .baseHP = 35, - .baseAttack = 55, - .baseDefense = 35, - .baseSpeed = 35, - .baseSpAttack = 30, - .baseSpDefense = 30, - .types = { TYPE_DARK, TYPE_DARK }, - .catchRate = 255, - .expYield = 56, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_QUICK_FEET, ABILITY_RATTLED}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_MIGHTYENA] = - { - .baseHP = 70, - .baseAttack = 90, - .baseDefense = 70, - .baseSpeed = 70, - .baseSpAttack = 60, - .baseSpDefense = 60, - .types = { TYPE_DARK, TYPE_DARK }, - .catchRate = 127, - .expYield = 147, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_QUICK_FEET, ABILITY_MOXIE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_ZIGZAGOON] = - { - .baseHP = 38, - .baseAttack = 30, - .baseDefense = 41, - .baseSpeed = 60, - .baseSpAttack = 30, - .baseSpDefense = 41, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 255, - .expYield = 56, - .evYield_Speed = 1, - .itemCommon = ITEM_POTION, - .itemRare = ITEM_REVIVE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_LINOONE] = - { - .baseHP = 78, - .baseAttack = 70, - .baseDefense = 61, - .baseSpeed = 100, - .baseSpAttack = 50, - .baseSpDefense = 61, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 90, - .expYield = 147, - .evYield_Speed = 2, - .itemCommon = ITEM_POTION, - .itemRare = ITEM_MAX_REVIVE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_WURMPLE] = - { - .baseHP = 45, - .baseAttack = 45, - .baseDefense = 35, - .baseSpeed = 20, - .baseSpAttack = 20, - .baseSpDefense = 30, - .types = { TYPE_BUG, TYPE_BUG }, - .catchRate = 255, - .expYield = 56, - .evYield_HP = 1, - .itemCommon = ITEM_PECHA_BERRY, - .itemRare = ITEM_BRIGHT_POWDER, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_RUN_AWAY}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_SILCOON] = - { - .baseHP = 50, - .baseAttack = 35, - .baseDefense = 55, - .baseSpeed = 15, - .baseSpAttack = 25, - .baseSpDefense = 25, - .types = { TYPE_BUG, TYPE_BUG }, - .catchRate = 120, - .expYield = 72, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, - .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_BEAUTIFLY] = - { - .baseHP = 60, - .baseAttack = 70, - .baseDefense = 50, - .baseSpeed = 65, - .baseSpDefense = 50, - #if P_UPDATED_STATS >= GEN_6 - .baseSpAttack = 100, - #else - .baseSpAttack = 90, - #endif - .types = { TYPE_BUG, TYPE_FLYING}, - .catchRate = 45, - .expYield = 178, - .evYield_SpAttack = 3, - .itemRare = ITEM_SHED_SHELL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_NONE, ABILITY_RIVALRY}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_CASCOON] = - { - .baseHP = 50, - .baseAttack = 35, - .baseDefense = 55, - .baseSpeed = 15, - .baseSpAttack = 25, - .baseSpDefense = 25, - .types = { TYPE_BUG, TYPE_BUG }, - .catchRate = 120, - .expYield = 72, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, - .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_DUSTOX] = - { - .baseHP = 60, - .baseAttack = 50, - .baseDefense = 70, - .baseSpeed = 65, - .baseSpAttack = 50, - .baseSpDefense = 90, - .types = { TYPE_BUG, TYPE_POISON }, - .catchRate = 45, - .expYield = 173, - .evYield_SpDefense = 3, - .itemRare = ITEM_SHED_SHELL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_COMPOUND_EYES}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_LOTAD] = - { - .baseHP = 40, - .baseAttack = 30, - .baseDefense = 30, - .baseSpeed = 30, - .baseSpAttack = 40, - .baseSpDefense = 50, - .types = { TYPE_WATER, TYPE_GRASS }, - .catchRate = 255, - .expYield = 44, - .evYield_SpDefense = 1, - .itemRare = ITEM_MENTAL_HERB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_GRASS}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH, ABILITY_OWN_TEMPO}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_LOMBRE] = - { - .baseHP = 60, - .baseAttack = 50, - .baseDefense = 50, - .baseSpeed = 50, - .baseSpAttack = 60, - .baseSpDefense = 70, - .types = { TYPE_WATER, TYPE_GRASS }, - .catchRate = 120, - .expYield = 119, - .evYield_SpDefense = 2, - .itemRare = ITEM_MENTAL_HERB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_GRASS}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH, ABILITY_OWN_TEMPO}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_LUDICOLO] = - { - .baseHP = 80, - .baseAttack = 70, - .baseDefense = 70, - .baseSpeed = 70, - .baseSpAttack = 90, - .baseSpDefense = 100, - .types = { TYPE_WATER, TYPE_GRASS }, - .catchRate = 45, - .expYield = 216, - .evYield_SpDefense = 3, - .itemRare = ITEM_MENTAL_HERB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_GRASS}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH, ABILITY_OWN_TEMPO}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_SEEDOT] = - { - .baseHP = 40, - .baseAttack = 40, - .baseDefense = 50, - .baseSpeed = 30, - .baseSpAttack = 30, - .baseSpDefense = 30, - .types = { TYPE_GRASS, TYPE_GRASS }, - .catchRate = 255, - .expYield = 44, - .evYield_Defense = 1, - .itemRare = ITEM_POWER_HERB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD, ABILITY_PICKPOCKET}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_NUZLEAF] = - { - .baseHP = 70, - .baseAttack = 70, - .baseDefense = 40, - .baseSpeed = 60, - .baseSpAttack = 60, - .baseSpDefense = 40, - .types = { TYPE_GRASS, TYPE_DARK }, - .catchRate = 120, - .expYield = 119, - .evYield_Attack = 2, - .itemRare = ITEM_POWER_HERB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD, ABILITY_PICKPOCKET}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_SHIFTRY] = - { - .baseHP = 90, - .baseAttack = 100, - .baseDefense = 60, - .baseSpeed = 80, - .baseSpAttack = 90, - .baseSpDefense = 60, - .types = { TYPE_GRASS, TYPE_DARK }, - .catchRate = 45, - .expYield = 216, - .evYield_Attack = 3, - .itemRare = ITEM_POWER_HERB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD, ABILITY_PICKPOCKET}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_TAILLOW] = - { - .baseHP = 40, - .baseAttack = 55, - .baseDefense = 30, - .baseSpeed = 85, - .baseSpAttack = 30, - .baseSpDefense = 30, - .types = { TYPE_NORMAL, TYPE_FLYING }, - .catchRate = 200, - .expYield = 54, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_GUTS, ABILITY_NONE, ABILITY_SCRAPPY}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SWELLOW] = - { - .baseHP = 60, - .baseAttack = 85, - .baseDefense = 60, - .baseSpeed = 125, - .baseSpDefense = 50, - #if P_UPDATED_STATS >= GEN_7 - .baseSpAttack = 75, - #else - .baseSpAttack = 50, - #endif - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 45, - .expYield = 159, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_GUTS, ABILITY_NONE, ABILITY_SCRAPPY}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_WINGULL] = - { - .baseHP = 40, - .baseAttack = 30, - .baseDefense = 30, - .baseSpeed = 85, - .baseSpAttack = 55, - .baseSpDefense = 30, - .types = { TYPE_WATER, TYPE_FLYING}, - .catchRate = 190, - .expYield = 54, - .evYield_Speed = 1, - .itemCommon = ITEM_PRETTY_FEATHER, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_HYDRATION, ABILITY_RAIN_DISH}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_PELIPPER] = - { - .baseHP = 60, - .baseAttack = 50, - .baseDefense = 100, - .baseSpeed = 65, - .baseSpDefense = 70, - #if P_UPDATED_STATS >= GEN_7 - .baseSpAttack = 95, - #else - .baseSpAttack = 85, - #endif - .types = { TYPE_WATER, TYPE_FLYING}, - .catchRate = 45, - .expYield = 154, - .evYield_Defense = 2, - .itemCommon = ITEM_PRETTY_FEATHER, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_DRIZZLE, ABILITY_RAIN_DISH}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_RALTS] = - { - .baseHP = 28, - .baseAttack = 25, - .baseDefense = 25, - .baseSpeed = 40, - .baseSpAttack = 45, - .baseSpDefense = 35, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_PSYCHIC, TYPE_FAIRY}, - #else - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - #endif - .catchRate = 235, - .expYield = 40, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_SLOW, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_AMORPHOUS}, - #else - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - #endif - .abilities = {ABILITY_SYNCHRONIZE, ABILITY_TRACE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_KIRLIA] = - { - .baseHP = 38, - .baseAttack = 35, - .baseDefense = 35, - .baseSpeed = 50, - .baseSpAttack = 65, - .baseSpDefense = 55, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_PSYCHIC, TYPE_FAIRY}, - #else - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - #endif - .catchRate = 120, - .expYield = 97, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_SLOW, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_AMORPHOUS}, - #else - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - #endif - .abilities = {ABILITY_SYNCHRONIZE, ABILITY_TRACE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_GARDEVOIR] = - { - .baseHP = 68, - .baseAttack = 65, - .baseDefense = 65, - .baseSpeed = 80, - .baseSpAttack = 125, - .baseSpDefense = 115, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_PSYCHIC, TYPE_FAIRY}, - #else - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - #endif - .catchRate = 45, - .expYield = 233, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_SLOW, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_AMORPHOUS}, - #else - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - #endif - .abilities = {ABILITY_SYNCHRONIZE, ABILITY_TRACE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_SURSKIT] = - { - .baseHP = 40, - .baseAttack = 30, - .baseDefense = 32, - .baseSpeed = 65, - .baseSpAttack = 50, - .baseSpDefense = 52, - .types = { TYPE_BUG, TYPE_WATER}, - .catchRate = 200, - .expYield = 54, - .evYield_Speed = 1, - .itemCommon = ITEM_HONEY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_RAIN_DISH}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_MASQUERAIN] = - { - .baseHP = 70, - .baseAttack = 60, - .baseDefense = 62, - .baseSpDefense = 82, - #if P_UPDATED_STATS >= GEN_7 - .baseSpeed = 80, - .baseSpAttack = 100, - #else - .baseSpeed = 60, - .baseSpAttack = 80, - #endif - .types = { TYPE_BUG, TYPE_FLYING}, - .catchRate = 75, - .expYield = 159, - .evYield_SpAttack = 1, - .evYield_SpDefense = 1, - .itemRare = ITEM_SILVER_POWDER, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_BUG}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SHROOMISH] = - { - .baseHP = 60, - .baseAttack = 40, - .baseDefense = 60, - .baseSpeed = 35, - .baseSpAttack = 40, - .baseSpDefense = 60, - .types = { TYPE_GRASS, TYPE_GRASS }, - .catchRate = 255, - .expYield = 59, - .evYield_HP = 1, - .itemCommon = ITEM_TINY_MUSHROOM, - .itemRare = ITEM_BIG_MUSHROOM, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FLUCTUATING, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, - .abilities = {ABILITY_EFFECT_SPORE, ABILITY_POISON_HEAL, ABILITY_QUICK_FEET}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_BRELOOM] = - { - .baseHP = 60, - .baseAttack = 130, - .baseDefense = 80, - .baseSpeed = 70, - .baseSpAttack = 60, - .baseSpDefense = 60, - .types = { TYPE_GRASS, TYPE_FIGHTING }, - .catchRate = 90, - .expYield = 161, - .evYield_Attack = 2, - .itemCommon = ITEM_TINY_MUSHROOM, - .itemRare = ITEM_BIG_MUSHROOM, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FLUCTUATING, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, - .abilities = {ABILITY_EFFECT_SPORE, ABILITY_POISON_HEAL, ABILITY_TECHNICIAN}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_SLAKOTH] = - { - .baseHP = 60, - .baseAttack = 60, - .baseDefense = 60, - .baseSpeed = 30, - .baseSpAttack = 35, - .baseSpDefense = 35, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 255, - .expYield = 56, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, - .abilities = {ABILITY_TRUANT, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_VIGOROTH] = - { - .baseHP = 80, - .baseAttack = 80, - .baseDefense = 80, - .baseSpeed = 90, - .baseSpAttack = 55, - .baseSpDefense = 55, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 120, - .expYield = 154, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, - .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_NONE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_SLAKING] = - { - .baseHP = 150, - .baseAttack = 160, - .baseDefense = 100, - .baseSpeed = 100, - .baseSpAttack = 95, - .baseSpDefense = 65, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 45, - .expYield = 252, - .evYield_HP = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, - .abilities = {ABILITY_TRUANT, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_NINCADA] = - { - .baseHP = 31, - .baseAttack = 45, - .baseDefense = 90, - .baseSpeed = 40, - .baseSpAttack = 30, - .baseSpDefense = 30, - .types = { TYPE_BUG, TYPE_GROUND}, - .catchRate = 255, - .expYield = 53, - .evYield_Defense = 1, - .itemRare = ITEM_SOFT_SAND, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_RUN_AWAY}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_NINJASK] = - { - .baseHP = 61, - .baseAttack = 90, - .baseDefense = 45, - .baseSpeed = 160, - .baseSpAttack = 50, - .baseSpDefense = 50, - .types = { TYPE_BUG, TYPE_FLYING}, - .catchRate = 120, - .expYield = 160, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SPEED_BOOST, ABILITY_NONE, ABILITY_INFILTRATOR}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_SHEDINJA] = + [SPECIES_NONE] = + { + .speciesName = _("??????????"), + .cryId = CRY_NONE, + .natDexNum = NATIONAL_DEX_NONE, + .categoryName = _("Unknown"), + .height = 0, + .weight = 0, + .description = COMPOUND_STRING( + "This is a newly discovered Pokémon.\n" + "It is currently under investigation.\n" + "No detailed information is available\n" + "at this time."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(CircledQuestionMark, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_None, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(CircledQuestionMark, 40, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_NONE, + PALETTES(CircledQuestionMark), + ICON(QuestionMark, 0), + LEARNSETS(None), + }, + + #include "species_info/gen_1.h" + #include "species_info/gen_2.h" + #include "species_info/gen_3.h" + #include "species_info/gen_4.h" + #include "species_info/gen_5.h" + #include "species_info/gen_6.h" + #include "species_info/gen_7.h" + #include "species_info/gen_8.h" + #include "species_info/gen_9.h" + + [SPECIES_EGG] = + { + FRONT_PIC(Egg, 24, 24), + .frontPicYOffset = 20, + .backPic = gMonFrontPic_Egg, + .backPicSize = MON_COORDS_SIZE(24, 24), + .backPicYOffset = 20, + .palette = gMonPalette_Egg, + .shinyPalette = gMonPalette_Egg, + ICON(Egg, 1), + }, + + /* You may add any custom species below this point based on the following structure: */ + + /* + [SPECIES_NONE] = { .baseHP = 1, - .baseAttack = 90, - .baseDefense = 45, - .baseSpeed = 40, - .baseSpAttack = 30, - .baseSpDefense = 30, - .types = { TYPE_BUG, TYPE_GHOST}, - .catchRate = 45, - .expYield = 83, - .evYield_HP = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_WONDER_GUARD, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_WHISMUR] = - { - .baseHP = 64, - .baseAttack = 51, - .baseDefense = 23, - .baseSpeed = 28, - .baseSpAttack = 51, - .baseSpDefense = 23, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 190, - .expYield = 48, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SOUNDPROOF, ABILITY_NONE, ABILITY_RATTLED}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_LOUDRED] = - { - .baseHP = 84, - .baseAttack = 71, - .baseDefense = 43, - .baseSpeed = 48, - .baseSpAttack = 71, - .baseSpDefense = 43, - .types = { TYPE_NORMAL, TYPE_NORMAL }, - .catchRate = 120, - .expYield = 126, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SOUNDPROOF, ABILITY_NONE, ABILITY_SCRAPPY}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_EXPLOUD] = - { - .baseHP = 104, - .baseAttack = 91, - .baseDefense = 63, - .baseSpeed = 68, - .baseSpAttack = 91, - #if P_UPDATED_STATS >= GEN_6 - .baseSpDefense = 73, - #else - .baseSpDefense = 63, - #endif - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 45, - .expYield = 221, - .evYield_HP = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SOUNDPROOF, ABILITY_NONE, ABILITY_SCRAPPY}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_MAKUHITA] = - { - .baseHP = 72, - .baseAttack = 60, - .baseDefense = 30, - .baseSpeed = 25, - .baseSpAttack = 20, - .baseSpDefense = 30, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 180, - .expYield = 47, - .evYield_HP = 1, - .itemRare = ITEM_BLACK_BELT, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FLUCTUATING, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_THICK_FAT, ABILITY_GUTS, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_HARIYAMA] = - { - .baseHP = 144, - .baseAttack = 120, - .baseDefense = 60, - .baseSpeed = 50, - .baseSpAttack = 40, - .baseSpDefense = 60, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 200, - .expYield = 166, - .evYield_HP = 2, - .itemRare = ITEM_KINGS_ROCK, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FLUCTUATING, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_THICK_FAT, ABILITY_GUTS, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_AZURILL] = - { - .baseHP = 50, - .baseAttack = 20, - .baseDefense = 40, - .baseSpeed = 20, - .baseSpAttack = 20, - .baseSpDefense = 40, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_NORMAL, TYPE_FAIRY}, - #else - .types = { TYPE_NORMAL, TYPE_NORMAL}, - #endif - .catchRate = 150, - .expYield = 38, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 10, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_THICK_FAT, ABILITY_HUGE_POWER, ABILITY_SAP_SIPPER}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_NOSEPASS] = - { - .baseHP = 30, - .baseAttack = 45, - .baseDefense = 135, - .baseSpeed = 30, - .baseSpAttack = 45, - .baseSpDefense = 90, - .types = { TYPE_ROCK, TYPE_ROCK}, - .catchRate = 255, - .expYield = 75, - .evYield_Defense = 1, - .itemRare = ITEM_MAGNET, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STURDY, ABILITY_MAGNET_PULL, ABILITY_SAND_FORCE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_SKITTY] = - { - .baseHP = 50, - .baseAttack = 45, - .baseDefense = 45, - .baseSpeed = 50, - .baseSpAttack = 35, - .baseSpDefense = 35, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 255, - .expYield = 52, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_CUTE_CHARM, ABILITY_NORMALIZE, ABILITY_WONDER_SKIN}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_DELCATTY] = - { - .baseHP = 70, - .baseAttack = 65, - .baseDefense = 65, - .baseSpAttack = 55, - .baseSpDefense = 55, - #if P_UPDATED_STATS >= GEN_7 - .baseSpeed = 90, - #else - .baseSpeed = 70, - #endif - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 60, - .expYield = 140, - .evYield_HP = 1, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_CUTE_CHARM, ABILITY_NORMALIZE, ABILITY_WONDER_SKIN}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_SABLEYE] = - { - .baseHP = 50, - .baseAttack = 75, - .baseDefense = 75, - .baseSpeed = 50, - .baseSpAttack = 65, - .baseSpDefense = 65, - .types = { TYPE_DARK, TYPE_GHOST}, - .catchRate = 45, - .expYield = 133, - .evYield_Attack = 1, - .evYield_Defense = 1, - .itemRare = ITEM_WIDE_LENS, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_STALL, ABILITY_PRANKSTER}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_MAWILE] = - { - .baseHP = 50, - .baseAttack = 85, - .baseDefense = 85, - .baseSpeed = 50, - .baseSpAttack = 55, - .baseSpDefense = 55, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_STEEL, TYPE_FAIRY}, - #else - .types = { TYPE_STEEL, TYPE_STEEL}, - #endif - .catchRate = 45, - .expYield = 133, - .evYield_Attack = 1, - .evYield_Defense = 1, - .itemRare = ITEM_IRON_BALL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_HYPER_CUTTER, ABILITY_INTIMIDATE, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_ARON] = - { - .baseHP = 50, - .baseAttack = 70, - .baseDefense = 100, - .baseSpeed = 30, - .baseSpAttack = 40, - .baseSpDefense = 40, - .types = { TYPE_STEEL, TYPE_ROCK }, - .catchRate = 180, - .expYield = 66, - .evYield_Defense = 1, - .itemRare = ITEM_HARD_STONE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 35, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_HEAVY_METAL}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_LAIRON] = - { - .baseHP = 60, - .baseAttack = 90, - .baseDefense = 140, - .baseSpeed = 40, - .baseSpAttack = 50, - .baseSpDefense = 50, - .types = { TYPE_STEEL, TYPE_ROCK }, - .catchRate = 90, - .expYield = 151, - .evYield_Defense = 2, - .itemRare = ITEM_HARD_STONE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 35, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_HEAVY_METAL}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_AGGRON] = - { - .baseHP = 70, - .baseAttack = 110, - .baseDefense = 180, - .baseSpeed = 50, - .baseSpAttack = 60, - .baseSpDefense = 60, - .types = { TYPE_STEEL, TYPE_ROCK }, - .catchRate = 45, - .expYield = 239, - .evYield_Defense = 3, - .itemRare = ITEM_HARD_STONE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 35, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_HEAVY_METAL}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_MEDITITE] = - { - .baseHP = 30, - .baseAttack = 40, - .baseDefense = 55, - .baseSpeed = 60, - .baseSpAttack = 40, - .baseSpDefense = 55, - .types = { TYPE_FIGHTING, TYPE_PSYCHIC}, - .catchRate = 180, - .expYield = 56, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_PURE_POWER, ABILITY_NONE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_MEDICHAM] = - { - .baseHP = 60, - .baseAttack = 60, - .baseDefense = 75, - .baseSpeed = 80, - .baseSpAttack = 60, - .baseSpDefense = 75, - .types = { TYPE_FIGHTING, TYPE_PSYCHIC}, - .catchRate = 90, - .expYield = 144, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_PURE_POWER, ABILITY_NONE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_ELECTRIKE] = - { - .baseHP = 40, - .baseAttack = 45, - .baseDefense = 40, - .baseSpeed = 65, - .baseSpAttack = 65, - .baseSpDefense = 40, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 120, - .expYield = 59, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_STATIC, ABILITY_LIGHTNING_ROD, ABILITY_MINUS}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_MANECTRIC] = - { - .baseHP = 70, - .baseAttack = 75, - .baseDefense = 60, - .baseSpeed = 105, - .baseSpAttack = 105, - .baseSpDefense = 60, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 45, - .expYield = 166, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_STATIC, ABILITY_LIGHTNING_ROD, ABILITY_MINUS}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_PLUSLE] = - { - .baseHP = 60, - .baseAttack = 50, - .baseDefense = 40, - .baseSpeed = 95, - .baseSpAttack = 85, - .baseSpDefense = 75, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 200, - .expYield = 142, - .evYield_Speed = 1, - .itemRare = ITEM_CELL_BATTERY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_PLUS, ABILITY_NONE, ABILITY_LIGHTNING_ROD}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_MINUN] = - { - .baseHP = 60, - .baseAttack = 40, - .baseDefense = 50, - .baseSpeed = 95, - .baseSpAttack = 75, - .baseSpDefense = 85, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 200, - .expYield = 142, - .evYield_Speed = 1, - .itemRare = ITEM_CELL_BATTERY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_MINUS, ABILITY_NONE, ABILITY_VOLT_ABSORB}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_VOLBEAT] = - { - .baseHP = 65, - .baseAttack = 73, - .baseSpeed = 85, - .baseSpAttack = 47, - #if P_UPDATED_STATS >= GEN_7 - .baseDefense = 75, - .baseSpDefense = 85, - #else - .baseDefense = 55, - .baseSpDefense = 75, - #endif - .types = { TYPE_BUG, TYPE_BUG}, - .catchRate = 150, - .expYield = 151, - .evYield_Speed = 1, - .itemRare = ITEM_BRIGHT_POWDER, - .genderRatio = MON_MALE, - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_ILLUMINATE, ABILITY_SWARM, ABILITY_PRANKSTER}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_ILLUMISE] = - { - .baseHP = 65, - .baseAttack = 47, - .baseSpeed = 85, - .baseSpAttack = 73, - #if P_UPDATED_STATS >= GEN_7 - .baseDefense = 75, - .baseSpDefense = 85, - #else - .baseDefense = 55, - .baseSpDefense = 75, - #endif - .types = { TYPE_BUG, TYPE_BUG}, - .catchRate = 150, - .expYield = 151, - .evYield_Speed = 1, - .itemRare = ITEM_BRIGHT_POWDER, - .genderRatio = MON_FEMALE, - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FLUCTUATING, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_OBLIVIOUS, ABILITY_TINTED_LENS, ABILITY_PRANKSTER}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_ROSELIA] = - { - .baseHP = 50, - .baseAttack = 60, - .baseDefense = 45, - .baseSpeed = 65, - .baseSpAttack = 100, - .baseSpDefense = 80, - .types = { TYPE_GRASS, TYPE_POISON}, - .catchRate = 150, - .expYield = 140, - .evYield_SpAttack = 2, - .itemRare = ITEM_POISON_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, - .abilities = {ABILITY_NATURAL_CURE, ABILITY_POISON_POINT, ABILITY_LEAF_GUARD}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = TRUE, - }, - - [SPECIES_GULPIN] = - { - .baseHP = 70, - .baseAttack = 43, - .baseDefense = 53, - .baseSpeed = 40, - .baseSpAttack = 43, - .baseSpDefense = 53, - .types = { TYPE_POISON, TYPE_POISON}, - .catchRate = 225, - .expYield = 60, - .evYield_HP = 1, - .itemCommon = ITEM_ORAN_BERRY, - .itemRare = ITEM_SITRUS_BERRY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FLUCTUATING, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_LIQUID_OOZE, ABILITY_STICKY_HOLD, ABILITY_GLUTTONY}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_SWALOT] = - { - .baseHP = 100, - .baseAttack = 73, - .baseDefense = 83, - .baseSpeed = 55, - .baseSpAttack = 73, - .baseSpDefense = 83, - .types = { TYPE_POISON, TYPE_POISON}, - .catchRate = 75, - .expYield = 163, - .evYield_HP = 2, - .itemCommon = ITEM_ORAN_BERRY, - .itemRare = ITEM_SITRUS_BERRY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FLUCTUATING, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_LIQUID_OOZE, ABILITY_STICKY_HOLD, ABILITY_GLUTTONY}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_CARVANHA] = - { - .baseHP = 45, - .baseAttack = 90, - .baseDefense = 20, - .baseSpeed = 65, - .baseSpAttack = 65, - .baseSpDefense = 20, - .types = { TYPE_WATER, TYPE_DARK}, - .catchRate = 225, - .expYield = 61, - .evYield_Attack = 1, - .itemRare = ITEM_DEEP_SEA_TOOTH, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_ROUGH_SKIN, ABILITY_NONE, ABILITY_SPEED_BOOST}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_SHARPEDO] = - { - .baseHP = 70, - .baseAttack = 120, - .baseDefense = 40, - .baseSpeed = 95, - .baseSpAttack = 95, - .baseSpDefense = 40, - .types = { TYPE_WATER, TYPE_DARK}, - .catchRate = 60, - .expYield = 161, - .evYield_Attack = 2, - .itemRare = ITEM_DEEP_SEA_TOOTH, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_ROUGH_SKIN, ABILITY_NONE, ABILITY_SPEED_BOOST}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_WAILMER] = - { - .baseHP = 130, - .baseAttack = 70, - .baseDefense = 35, - .baseSpeed = 60, - .baseSpAttack = 70, - .baseSpDefense = 35, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 125, - .expYield = 80, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FLUCTUATING, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_WATER_VEIL, ABILITY_OBLIVIOUS, ABILITY_PRESSURE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_WAILORD] = - { - .baseHP = 170, - .baseAttack = 90, - .baseDefense = 45, - .baseSpeed = 60, - .baseSpAttack = 90, - .baseSpDefense = 45, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 60, - .expYield = 175, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FLUCTUATING, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_WATER_VEIL, ABILITY_OBLIVIOUS, ABILITY_PRESSURE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_NUMEL] = - { - .baseHP = 60, - .baseAttack = 60, - .baseDefense = 40, - .baseSpeed = 35, - .baseSpAttack = 65, - .baseSpDefense = 45, - .types = { TYPE_FIRE, TYPE_GROUND}, - .catchRate = 255, - .expYield = 61, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_OBLIVIOUS, ABILITY_SIMPLE, ABILITY_OWN_TEMPO}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_CAMERUPT] = - { - .baseHP = 70, - .baseAttack = 100, - .baseDefense = 70, - .baseSpeed = 40, - .baseSpAttack = 105, - .baseSpDefense = 75, - .types = { TYPE_FIRE, TYPE_GROUND}, - .catchRate = 150, - .expYield = 161, - .evYield_Attack = 1, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_MAGMA_ARMOR, ABILITY_SOLID_ROCK, ABILITY_ANGER_POINT}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_TORKOAL] = - { - .baseHP = 70, - .baseAttack = 85, - .baseDefense = 140, - .baseSpeed = 20, - .baseSpAttack = 85, - .baseSpDefense = 70, - .types = { TYPE_FIRE, TYPE_FIRE}, - .catchRate = 90, - .expYield = 165, - .evYield_Defense = 2, - .itemRare = ITEM_CHARCOAL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_WHITE_SMOKE, ABILITY_DROUGHT, ABILITY_SHELL_ARMOR}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_SPOINK] = - { - .baseHP = 60, - .baseAttack = 25, - .baseDefense = 35, - .baseSpeed = 60, - .baseSpAttack = 70, - .baseSpDefense = 80, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 255, - .expYield = 66, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_THICK_FAT, ABILITY_OWN_TEMPO, ABILITY_GLUTTONY}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_GRUMPIG] = - { - .baseHP = 80, - .baseAttack = 45, - .baseDefense = 65, - .baseSpeed = 80, - .baseSpAttack = 90, - .baseSpDefense = 110, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 60, - .expYield = 165, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_THICK_FAT, ABILITY_OWN_TEMPO, ABILITY_GLUTTONY}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_SPINDA] = - { - .baseHP = 60, - .baseAttack = 60, - .baseDefense = 60, - .baseSpeed = 60, - .baseSpAttack = 60, - .baseSpDefense = 60, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 255, - .expYield = 126, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_OWN_TEMPO, ABILITY_TANGLED_FEET, ABILITY_CONTRARY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = TRUE, - }, - - [SPECIES_TRAPINCH] = - { - .baseHP = 45, - .baseAttack = 100, - .baseDefense = 45, - .baseSpeed = 10, - .baseSpAttack = 45, - .baseSpDefense = 45, - .types = { TYPE_GROUND, TYPE_GROUND}, - .catchRate = 255, - .expYield = 58, - .evYield_Attack = 1, - .itemRare = ITEM_SOFT_SAND, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_DRAGON}, - #else - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - #endif - .abilities = {ABILITY_HYPER_CUTTER, ABILITY_ARENA_TRAP, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_VIBRAVA] = - { - .baseHP = 50, - .baseAttack = 70, - .baseDefense = 50, - .baseSpeed = 70, - .baseSpAttack = 50, - .baseSpDefense = 50, - .types = { TYPE_GROUND, TYPE_DRAGON}, - .catchRate = 120, - .expYield = 119, - .evYield_Attack = 1, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_DRAGON}, - #else - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - #endif - .abilities = {ABILITY_LEVITATE, ABILITY_LEVITATE, ABILITY_LEVITATE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_FLYGON] = - { - .baseHP = 80, - .baseAttack = 100, - .baseDefense = 80, - .baseSpeed = 100, - .baseSpAttack = 80, - .baseSpDefense = 80, - .types = { TYPE_GROUND, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 234, - .evYield_Attack = 1, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_DRAGON}, - #else - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - #endif - .abilities = {ABILITY_LEVITATE, ABILITY_LEVITATE, ABILITY_LEVITATE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_CACNEA] = - { - .baseHP = 50, - .baseAttack = 85, - .baseDefense = 40, - .baseSpeed = 35, - .baseSpAttack = 85, - .baseSpDefense = 40, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 190, - .expYield = 67, - .evYield_SpAttack = 1, - .itemRare = ITEM_STICKY_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_WATER_ABSORB}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_CACTURNE] = - { - .baseHP = 70, - .baseAttack = 115, - .baseDefense = 60, - .baseSpeed = 55, - .baseSpAttack = 115, - .baseSpDefense = 60, - .types = { TYPE_GRASS, TYPE_DARK}, - .catchRate = 60, - .expYield = 166, - .evYield_Attack = 1, - .evYield_SpAttack = 1, - .itemRare = ITEM_STICKY_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_WATER_ABSORB}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_SWABLU] = - { - .baseHP = 45, - .baseAttack = 40, - .baseDefense = 60, - .baseSpeed = 50, - .baseSpAttack = 40, - .baseSpDefense = 75, - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 255, - .expYield = 62, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_NATURAL_CURE, ABILITY_NONE, ABILITY_CLOUD_NINE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_ALTARIA] = - { - .baseHP = 75, - .baseAttack = 70, - .baseDefense = 90, - .baseSpeed = 80, - .baseSpAttack = 70, - .baseSpDefense = 105, - .types = { TYPE_DRAGON, TYPE_FLYING}, - .catchRate = 45, - .expYield = 172, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_NATURAL_CURE, ABILITY_NONE, ABILITY_CLOUD_NINE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_ZANGOOSE] = - { - .baseHP = 73, - .baseAttack = 115, - .baseDefense = 60, - .baseSpeed = 90, - .baseSpAttack = 60, - .baseSpDefense = 60, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 90, - .expYield = 160, - .evYield_Attack = 2, - .itemRare = ITEM_QUICK_CLAW, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_IMMUNITY, ABILITY_NONE, ABILITY_TOXIC_BOOST}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = TRUE, - }, - - [SPECIES_SEVIPER] = - { - .baseHP = 73, - .baseAttack = 100, - .baseDefense = 60, - .baseSpeed = 65, - .baseSpAttack = 100, - .baseSpDefense = 60, - .types = { TYPE_POISON, TYPE_POISON}, - .catchRate = 90, - .expYield = 160, - .evYield_Attack = 1, - .evYield_SpAttack = 1, - .itemRare = ITEM_SHED_SHELL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FLUCTUATING, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_INFILTRATOR}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = TRUE, - }, - - [SPECIES_LUNATONE] = - { - .baseAttack = 55, - .baseDefense = 65, - .baseSpeed = 70, - .baseSpAttack = 95, - .baseSpDefense = 85, - #if P_UPDATED_STATS >= GEN_7 - .baseHP = 90, - #else - .baseHP = 70, - #endif - .types = { TYPE_ROCK, TYPE_PSYCHIC}, - .catchRate = 45, - .expYield = 161, - .evYield_SpAttack = 2, - .itemCommon = ITEM_STARDUST, - .itemRare = ITEM_MOON_STONE, - .genderRatio = MON_GENDERLESS, - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_SOLROCK] = - { - .baseAttack = 95, - .baseDefense = 85, - .baseSpeed = 70, - .baseSpAttack = 55, - .baseSpDefense = 65, - #if P_UPDATED_STATS >= GEN_7 - .baseHP = 90, - #else - .baseHP = 70, - #endif - .types = { TYPE_ROCK, TYPE_PSYCHIC}, - .catchRate = 45, - .expYield = 161, - .evYield_Attack = 2, - .itemCommon = ITEM_STARDUST, - .itemRare = ITEM_SUN_STONE, - .genderRatio = MON_GENDERLESS, - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_BARBOACH] = - { - .baseHP = 50, - .baseAttack = 48, - .baseDefense = 43, - .baseSpeed = 60, - .baseSpAttack = 46, - .baseSpDefense = 41, - .types = { TYPE_WATER, TYPE_GROUND}, - .catchRate = 190, - .expYield = 58, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_OBLIVIOUS, ABILITY_ANTICIPATION, ABILITY_HYDRATION}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_WHISCASH] = - { - .baseHP = 110, - .baseAttack = 78, - .baseDefense = 73, - .baseSpeed = 60, - .baseSpAttack = 76, - .baseSpDefense = 71, - .types = { TYPE_WATER, TYPE_GROUND}, - .catchRate = 75, - .expYield = 164, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_OBLIVIOUS, ABILITY_ANTICIPATION, ABILITY_HYDRATION}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_CORPHISH] = - { - .baseHP = 43, - .baseAttack = 80, - .baseDefense = 65, - .baseSpeed = 35, - .baseSpAttack = 50, - .baseSpDefense = 35, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 205, - .expYield = 62, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FLUCTUATING, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_ADAPTABILITY}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_CRAWDAUNT] = - { - .baseHP = 63, - .baseAttack = 120, - .baseDefense = 85, - .baseSpeed = 55, - .baseSpAttack = 90, - .baseSpDefense = 55, - .types = { TYPE_WATER, TYPE_DARK}, - .catchRate = 155, - .expYield = 164, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FLUCTUATING, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_ADAPTABILITY}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_BALTOY] = - { - .baseHP = 40, - .baseAttack = 40, - .baseDefense = 55, - .baseSpeed = 55, - .baseSpAttack = 40, - .baseSpDefense = 70, - .types = { TYPE_GROUND, TYPE_PSYCHIC}, - .catchRate = 255, - .expYield = 60, - .evYield_SpDefense = 1, - .itemRare = ITEM_LIGHT_CLAY, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_CLAYDOL] = - { - .baseHP = 60, - .baseAttack = 70, - .baseDefense = 105, - .baseSpeed = 75, - .baseSpAttack = 70, - .baseSpDefense = 120, - .types = { TYPE_GROUND, TYPE_PSYCHIC}, - .catchRate = 90, - .expYield = 175, - .evYield_SpDefense = 2, - .itemRare = ITEM_LIGHT_CLAY, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_LILEEP] = - { - .baseHP = 66, - .baseAttack = 41, - .baseDefense = 77, - .baseSpeed = 23, - .baseSpAttack = 61, - .baseSpDefense = 87, - .types = { TYPE_ROCK, TYPE_GRASS }, - .catchRate = 45, - .expYield = 71, - .evYield_SpDefense = 1, - .itemRare = ITEM_BIG_ROOT, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_SUCTION_CUPS, ABILITY_NONE, ABILITY_STORM_DRAIN}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_CRADILY] = - { - .baseHP = 86, - .baseAttack = 81, - .baseDefense = 97, - .baseSpeed = 43, - .baseSpAttack = 81, - .baseSpDefense = 107, - .types = { TYPE_ROCK, TYPE_GRASS }, - .catchRate = 45, - .expYield = 173, - .evYield_SpDefense = 2, - .itemRare = ITEM_BIG_ROOT, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_SUCTION_CUPS, ABILITY_NONE, ABILITY_STORM_DRAIN}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_ANORITH] = - { - .baseHP = 45, - .baseAttack = 95, - .baseDefense = 50, - .baseSpeed = 75, - .baseSpAttack = 40, - .baseSpDefense = 50, - .types = { TYPE_ROCK, TYPE_BUG }, - .catchRate = 45, - .expYield = 71, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_NONE, ABILITY_SWIFT_SWIM}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_ARMALDO] = - { - .baseHP = 75, - .baseAttack = 125, - .baseDefense = 100, - .baseSpeed = 45, - .baseSpAttack = 70, - .baseSpDefense = 80, - .types = { TYPE_ROCK, TYPE_BUG }, - .catchRate = 45, - .expYield = 173, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_NONE, ABILITY_SWIFT_SWIM}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_FEEBAS] = - { - .baseHP = 20, - .baseAttack = 15, - .baseDefense = 20, - .baseSpeed = 80, - .baseSpAttack = 10, - .baseSpDefense = 55, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 255, - .expYield = 40, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_OBLIVIOUS, ABILITY_ADAPTABILITY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_MILOTIC] = - { - .baseHP = 95, - .baseAttack = 60, - .baseDefense = 79, - .baseSpeed = 81, - .baseSpAttack = 100, - .baseSpDefense = 125, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 60, - .expYield = 189, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_MARVEL_SCALE, ABILITY_COMPETITIVE, ABILITY_CUTE_CHARM}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_CASTFORM] = CASTFORM_SPECIES_INFO(TYPE_NORMAL, BODY_COLOR_GRAY), - - [SPECIES_KECLEON] = - { - .baseHP = 60, - .baseAttack = 90, - .baseDefense = 70, - .baseSpeed = 40, - .baseSpAttack = 60, - .baseSpDefense = 120, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 200, - .expYield = 154, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_COLOR_CHANGE, ABILITY_NONE, ABILITY_PROTEAN}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_SHUPPET] = - { - .baseHP = 44, - .baseAttack = 75, - .baseDefense = 35, - .baseSpeed = 45, - .baseSpAttack = 63, - .baseSpDefense = 33, - .types = { TYPE_GHOST, TYPE_GHOST}, - .catchRate = 225, - .expYield = 59, - .evYield_Attack = 1, - .itemRare = ITEM_SPELL_TAG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = 35, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_INSOMNIA, ABILITY_FRISK, ABILITY_CURSED_BODY}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_BANETTE] = - { - .baseHP = 64, - .baseAttack = 115, - .baseDefense = 65, - .baseSpeed = 65, - .baseSpAttack = 83, - .baseSpDefense = 63, - .types = { TYPE_GHOST, TYPE_GHOST}, - .catchRate = 45, - .expYield = 159, - .evYield_Attack = 2, - .itemRare = ITEM_SPELL_TAG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = 35, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_INSOMNIA, ABILITY_FRISK, ABILITY_CURSED_BODY}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_DUSKULL] = - { - .baseHP = 20, - .baseAttack = 40, - .baseDefense = 90, - .baseSpeed = 25, - .baseSpAttack = 30, - .baseSpDefense = 90, - .types = { TYPE_GHOST, TYPE_GHOST}, - .catchRate = 190, - .expYield = 59, - .evYield_SpDefense = 1, - .itemRare = ITEM_SPELL_TAG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = 35, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE, ABILITY_FRISK}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_DUSCLOPS] = - { - .baseHP = 40, - .baseAttack = 70, - .baseDefense = 130, - .baseSpeed = 25, - .baseSpAttack = 60, - .baseSpDefense = 130, - .types = { TYPE_GHOST, TYPE_GHOST}, - .catchRate = 90, - .expYield = 159, - .evYield_Defense = 1, - .evYield_SpDefense = 1, - .itemRare = ITEM_SPELL_TAG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = 35, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_FRISK}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_TROPIUS] = - { - .baseHP = 99, - .baseAttack = 68, - .baseDefense = 83, - .baseSpeed = 51, - .baseSpAttack = 72, - .baseSpDefense = 87, - .types = { TYPE_GRASS, TYPE_FLYING}, - .catchRate = 200, - .expYield = 161, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_SOLAR_POWER, ABILITY_HARVEST}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_CHIMECHO] = - { - .baseAttack = 50, - .baseSpeed = 65, - .baseSpAttack = 95, - #if P_UPDATED_STATS >= GEN_7 - .baseHP = 75, - .baseDefense = 80, - .baseSpDefense = 90, - #else - .baseHP = 65, - .baseDefense = 70, - .baseSpDefense = 80, - #endif - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 45, - .expYield = 159, - .evYield_SpAttack = 1, - .evYield_SpDefense = 1, - .itemRare = ITEM_CLEANSE_TAG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_ABSOL] = - { - .baseHP = 65, - .baseAttack = 130, - .baseDefense = 60, - .baseSpeed = 75, - .baseSpAttack = 75, - .baseSpDefense = 60, - .types = { TYPE_DARK, TYPE_DARK}, - .catchRate = 30, - .expYield = 163, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_PRESSURE, ABILITY_SUPER_LUCK, ABILITY_JUSTIFIED}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = TRUE, - }, - - [SPECIES_WYNAUT] = - { - .baseHP = 95, - .baseAttack = 23, - .baseDefense = 48, - .baseSpeed = 23, - .baseSpAttack = 23, - .baseSpDefense = 48, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 125, - .expYield = 52, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_SHADOW_TAG, ABILITY_NONE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SNORUNT] = - { - .baseHP = 50, - .baseAttack = 50, - .baseDefense = 50, - .baseSpeed = 50, - .baseSpAttack = 50, - .baseSpDefense = 50, - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 190, - .expYield = 60, - .evYield_HP = 1, - .itemRare = ITEM_SNOWBALL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_INNER_FOCUS, ABILITY_ICE_BODY, ABILITY_MOODY}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_GLALIE] = - { - .baseHP = 80, - .baseAttack = 80, - .baseDefense = 80, - .baseSpeed = 80, - .baseSpAttack = 80, - .baseSpDefense = 80, - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 75, - .expYield = 168, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_INNER_FOCUS, ABILITY_ICE_BODY, ABILITY_MOODY}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_SPHEAL] = - { - .baseHP = 70, - .baseAttack = 40, - .baseDefense = 50, - .baseSpeed = 25, - .baseSpAttack = 55, - .baseSpDefense = 50, - .types = { TYPE_ICE, TYPE_WATER}, - .catchRate = 255, - .expYield = 58, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_THICK_FAT, ABILITY_ICE_BODY, ABILITY_OBLIVIOUS}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SEALEO] = - { - .baseHP = 90, - .baseAttack = 60, - .baseDefense = 70, - .baseSpeed = 45, - .baseSpAttack = 75, - .baseSpDefense = 70, - .types = { TYPE_ICE, TYPE_WATER}, - .catchRate = 120, - .expYield = 144, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_THICK_FAT, ABILITY_ICE_BODY, ABILITY_OBLIVIOUS}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_WALREIN] = - { - .baseHP = 110, - .baseAttack = 80, - .baseDefense = 90, - .baseSpeed = 65, - .baseSpAttack = 95, - .baseSpDefense = 90, - .types = { TYPE_ICE, TYPE_WATER}, - .catchRate = 45, - .expYield = 239, - .evYield_HP = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_THICK_FAT, ABILITY_ICE_BODY, ABILITY_OBLIVIOUS}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_CLAMPERL] = - { - .baseHP = 35, - .baseAttack = 64, - .baseDefense = 85, - .baseSpeed = 32, - .baseSpAttack = 74, - .baseSpDefense = 55, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 255, - .expYield = 69, - .evYield_Defense = 1, - .itemCommon = ITEM_PEARL, - .itemRare = ITEM_BIG_PEARL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_SHELL_ARMOR, ABILITY_NONE, ABILITY_RATTLED}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_HUNTAIL] = - { - .baseHP = 55, - .baseAttack = 104, - .baseDefense = 105, - .baseSpeed = 52, - .baseSpAttack = 94, - .baseSpDefense = 75, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 60, - .expYield = 170, - .evYield_Attack = 1, - .evYield_Defense = 1, - .itemRare = ITEM_DEEP_SEA_TOOTH, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_WATER_VEIL}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_GOREBYSS] = - { - .baseHP = 55, - .baseAttack = 84, - .baseDefense = 105, - .baseSpeed = 52, - .baseSpAttack = 114, - .baseSpDefense = 75, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 60, - .expYield = 170, - .evYield_SpAttack = 2, - .itemRare = ITEM_DEEP_SEA_SCALE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_HYDRATION}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_RELICANTH] = - { - .baseHP = 100, - .baseAttack = 90, - .baseDefense = 130, - .baseSpeed = 55, - .baseSpAttack = 45, - .baseSpDefense = 65, - .types = { TYPE_WATER, TYPE_ROCK}, - .catchRate = 25, - .expYield = 170, - .evYield_HP = 1, - .evYield_Defense = 1, - .itemRare = ITEM_DEEP_SEA_SCALE, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_ROCK_HEAD, ABILITY_STURDY}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_LUVDISC] = - { - .baseHP = 43, - .baseAttack = 30, - .baseDefense = 55, - .baseSpeed = 97, - .baseSpAttack = 40, - .baseSpDefense = 65, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 225, - .expYield = 116, - .evYield_Speed = 1, - .itemCommon = ITEM_HEART_SCALE, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_HYDRATION}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_BAGON] = - { - .baseHP = 45, - .baseAttack = 75, - .baseDefense = 60, - .baseSpeed = 50, - .baseSpAttack = 40, - .baseSpDefense = 30, - .types = { TYPE_DRAGON, TYPE_DRAGON }, - .catchRate = 45, - .expYield = 60, - .evYield_Attack = 1, - .itemRare = ITEM_DRAGON_FANG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_ROCK_HEAD, ABILITY_NONE, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SHELGON] = - { - .baseHP = 65, - .baseAttack = 95, - .baseDefense = 100, - .baseSpeed = 50, - .baseSpAttack = 60, - .baseSpDefense = 50, - .types = { TYPE_DRAGON, TYPE_DRAGON }, - .catchRate = 45, - .expYield = 147, - .evYield_Defense = 2, - .itemRare = ITEM_DRAGON_FANG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_ROCK_HEAD, ABILITY_NONE, ABILITY_OVERCOAT}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_SALAMENCE] = - { - .baseHP = 95, - .baseAttack = 135, - .baseDefense = 80, - .baseSpeed = 100, - .baseSpAttack = 110, - .baseSpDefense = 80, - .types = { TYPE_DRAGON, TYPE_FLYING }, - .catchRate = 45, - .expYield = 270, - .evYield_Attack = 3, - .itemRare = ITEM_DRAGON_FANG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_MOXIE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_BELDUM] = - { - .baseHP = 40, - .baseAttack = 55, - .baseDefense = 80, - .baseSpeed = 30, - .baseSpAttack = 35, - .baseSpDefense = 60, - .types = { TYPE_STEEL, TYPE_PSYCHIC }, - .catchRate = 3, - .expYield = 60, - .evYield_Defense = 1, - .itemRare = ITEM_METAL_COAT, - .genderRatio = MON_GENDERLESS, - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_LIGHT_METAL}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_METANG] = - { - .baseHP = 60, - .baseAttack = 75, - .baseDefense = 100, - .baseSpeed = 50, - .baseSpAttack = 55, - .baseSpDefense = 80, - .types = { TYPE_STEEL, TYPE_PSYCHIC }, - .catchRate = 3, - .expYield = 147, - .evYield_Defense = 2, - .itemRare = ITEM_METAL_COAT, - .genderRatio = MON_GENDERLESS, - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_LIGHT_METAL}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_METAGROSS] = - { - .baseHP = 80, - .baseAttack = 135, - .baseDefense = 130, - .baseSpeed = 70, - .baseSpAttack = 95, - .baseSpDefense = 90, - .types = { TYPE_STEEL, TYPE_PSYCHIC }, - .catchRate = 3, - .expYield = 270, - .evYield_Defense = 3, - .itemRare = ITEM_METAL_COAT, - .genderRatio = MON_GENDERLESS, - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_LIGHT_METAL}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_REGIROCK] = - { - .baseHP = 80, - .baseAttack = 100, - .baseDefense = 200, - .baseSpeed = 50, - .baseSpAttack = 50, - .baseSpDefense = 100, - .types = { TYPE_ROCK, TYPE_ROCK }, - .catchRate = 3, - .expYield = 261, - .evYield_Defense = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 80, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_STURDY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = TRUE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_REGICE] = - { - .baseHP = 80, - .baseAttack = 50, - .baseDefense = 100, - .baseSpeed = 50, - .baseSpAttack = 100, - .baseSpDefense = 200, - .types = { TYPE_ICE, TYPE_ICE }, - .catchRate = 3, - .expYield = 261, - .evYield_SpDefense = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 80, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_ICE_BODY}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_REGISTEEL] = - { - .baseHP = 80, - .baseAttack = 75, - .baseDefense = 150, - .baseSpeed = 50, - .baseSpAttack = 75, - .baseSpDefense = 150, - .types = { TYPE_STEEL, TYPE_STEEL }, - .catchRate = 3, - .expYield = 261, - .evYield_Defense = 2, - .evYield_SpDefense = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 80, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_LIGHT_METAL}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_LATIAS] = - { - .baseHP = 80, - .baseAttack = 80, - .baseDefense = 90, - .baseSpeed = 110, - .baseSpAttack = 110, - .baseSpDefense = 130, - .types = { TYPE_DRAGON, TYPE_PSYCHIC }, - .catchRate = 3, - .expYield = 270, - .evYield_SpDefense = 3, - .genderRatio = MON_FEMALE, - .eggCycles = 120, - .friendship = 90, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED }, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_LATIOS] = - { - .baseHP = 80, - .baseAttack = 90, - .baseDefense = 80, - .baseSpeed = 110, - .baseSpAttack = 130, - .baseSpDefense = 110, - .types = { TYPE_DRAGON, TYPE_PSYCHIC }, - .catchRate = 3, - .expYield = 270, - .evYield_SpAttack = 3, - .genderRatio = MON_MALE, - .eggCycles = 120, - .friendship = 90, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED }, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_KYOGRE] = - { - .baseHP = 100, - .baseAttack = 100, - .baseDefense = 90, - .baseSpeed = 90, - .baseSpAttack = 150, - .baseSpDefense = 140, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 3, - .expYield = 302, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_DRIZZLE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_GROUDON] = - { - .baseHP = 100, - .baseAttack = 150, - .baseDefense = 140, - .baseSpeed = 90, - .baseSpAttack = 100, - .baseSpDefense = 90, - .types = { TYPE_GROUND, TYPE_GROUND}, - .catchRate = 3, - .expYield = 302, - .evYield_Attack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_DROUGHT, ABILITY_NONE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_RAYQUAZA] = - { - .baseHP = 105, - .baseAttack = 150, - .baseDefense = 90, - .baseSpeed = 95, - .baseSpAttack = 150, - .baseSpDefense = 90, - .types = { TYPE_DRAGON, TYPE_FLYING}, - .catchRate = 45, - .expYield = 306, - .evYield_Attack = 2, - .evYield_SpAttack = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_AIR_LOCK, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_JIRACHI] = - { - .baseHP = 100, - .baseAttack = 100, - .baseDefense = 100, - .baseSpeed = 100, - .baseSpAttack = 100, - .baseSpDefense = 100, - .types = { TYPE_STEEL, TYPE_PSYCHIC }, - .catchRate = 3, - .expYield = 270, - .evYield_HP = 3, - .itemCommon = ITEM_STAR_PIECE, - .itemRare = ITEM_STAR_PIECE, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 100, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED }, - .abilities = {ABILITY_SERENE_GRACE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - - [SPECIES_DEOXYS] = - { - .baseHP = 50, - .baseAttack = 150, - .baseDefense = 50, - .baseSpeed = 150, - .baseSpAttack = 150, - .baseSpDefense = 50, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, - .catchRate = 3, - .expYield = 270, - .evYield_Attack = 1, - .evYield_Speed = 1, - .evYield_SpAttack = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED }, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - -#if P_GEN_4_POKEMON == TRUE - [SPECIES_TURTWIG] = - { - .baseHP = 55, - .baseAttack = 68, - .baseDefense = 64, - .baseSpeed = 31, - .baseSpAttack = 45, - .baseSpDefense = 55, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 45, - .expYield = 64, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_SHELL_ARMOR}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_GROTLE] = - { - .baseHP = 75, - .baseAttack = 89, - .baseDefense = 85, - .baseSpeed = 36, - .baseSpAttack = 55, - .baseSpDefense = 65, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 45, - .expYield = 142, - .evYield_Attack = 1, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_SHELL_ARMOR}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_TORTERRA] = - { - .baseHP = 95, - .baseAttack = 109, - .baseDefense = 105, - .baseSpeed = 56, - .baseSpAttack = 75, - .baseSpDefense = 85, - .types = { TYPE_GRASS, TYPE_GROUND}, - .catchRate = 45, - .expYield = 236, - .evYield_Attack = 2, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_SHELL_ARMOR}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = TRUE, - }, - - [SPECIES_CHIMCHAR] = - { - .baseHP = 44, - .baseAttack = 58, - .baseDefense = 44, - .baseSpeed = 61, - .baseSpAttack = 58, - .baseSpDefense = 44, - .types = { TYPE_FIRE, TYPE_FIRE}, - .catchRate = 45, - .expYield = 62, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_IRON_FIST}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = TRUE, - }, - - [SPECIES_MONFERNO] = - { - .baseHP = 64, - .baseAttack = 78, - .baseDefense = 52, - .baseSpeed = 81, - .baseSpAttack = 78, - .baseSpDefense = 52, - .types = { TYPE_FIRE, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 142, - .evYield_Speed = 1, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_IRON_FIST}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = TRUE, - }, - - [SPECIES_INFERNAPE] = - { - .baseHP = 76, - .baseAttack = 104, - .baseDefense = 71, - .baseSpeed = 108, - .baseSpAttack = 104, - .baseSpDefense = 71, - .types = { TYPE_FIRE, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 240, - .evYield_Attack = 1, - .evYield_Speed = 1, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_IRON_FIST}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_PIPLUP] = - { - .baseHP = 53, - .baseAttack = 51, - .baseDefense = 53, - .baseSpeed = 40, - .baseSpAttack = 61, - .baseSpDefense = 56, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 45, - .expYield = 63, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_PRINPLUP] = - { - .baseHP = 64, - .baseAttack = 66, - .baseDefense = 68, - .baseSpeed = 50, - .baseSpAttack = 81, - .baseSpDefense = 76, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 45, - .expYield = 142, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_EMPOLEON] = - { - .baseHP = 84, - .baseAttack = 86, - .baseDefense = 88, - .baseSpeed = 60, - .baseSpAttack = 111, - .baseSpDefense = 101, - .types = { TYPE_WATER, TYPE_STEEL}, - .catchRate = 45, - .expYield = 239, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_STARLY] = - { - .baseHP = 40, - .baseAttack = 55, - .baseDefense = 30, - .baseSpeed = 60, - .baseSpAttack = 30, - .baseSpDefense = 30, - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 255, - .expYield = 49, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_RECKLESS}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_STARAVIA] = - { - .baseHP = 55, - .baseAttack = 75, - .baseDefense = 50, - .baseSpeed = 80, - .baseSpAttack = 40, - .baseSpDefense = 40, - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 120, - .expYield = 119, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_RECKLESS}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_STARAPTOR] = - { - .baseHP = 85, - .baseAttack = 120, - .baseDefense = 70, - .baseSpeed = 100, - .baseSpAttack = 50, - #if P_UPDATED_STATS >= GEN_6 - .baseSpDefense = 60, - #else - .baseSpDefense = 50, - #endif - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 45, - .expYield = 218, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_RECKLESS}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_BIDOOF] = - { - .baseHP = 59, - .baseAttack = 45, - .baseDefense = 40, - .baseSpeed = 31, - .baseSpAttack = 35, - .baseSpDefense = 40, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 255, - .expYield = 50, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SIMPLE, ABILITY_UNAWARE, ABILITY_MOODY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_BIBAREL] = - { - .baseHP = 79, - .baseAttack = 85, - .baseDefense = 60, - .baseSpeed = 71, - .baseSpAttack = 55, - .baseSpDefense = 60, - .types = { TYPE_NORMAL, TYPE_WATER}, - .catchRate = 127, - .expYield = 144, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SIMPLE, ABILITY_UNAWARE, ABILITY_MOODY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_KRICKETOT] = - { - .baseHP = 37, - .baseAttack = 25, - .baseDefense = 41, - .baseSpeed = 25, - .baseSpAttack = 25, - .baseSpDefense = 41, - .types = { TYPE_BUG, TYPE_BUG}, - .catchRate = 255, - .expYield = 39, - .evYield_Defense = 1, - .itemRare = ITEM_METRONOME, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_RUN_AWAY}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_KRICKETUNE] = - { - .baseHP = 77, - .baseAttack = 85, - .baseDefense = 51, - .baseSpeed = 65, - .baseSpAttack = 55, - .baseSpDefense = 51, - .types = { TYPE_BUG, TYPE_BUG}, - .catchRate = 45, - .expYield = 134, - .evYield_Attack = 2, - .itemRare = ITEM_METRONOME, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_NONE, ABILITY_TECHNICIAN}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_SHINX] = - { - .baseHP = 45, - .baseAttack = 65, - .baseDefense = 34, - .baseSpeed = 45, - .baseSpAttack = 40, - .baseSpDefense = 34, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 235, - .expYield = 53, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RIVALRY, ABILITY_INTIMIDATE, ABILITY_GUTS}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_LUXIO] = - { - .baseHP = 60, - .baseAttack = 85, - .baseDefense = 49, - .baseSpeed = 60, - .baseSpAttack = 60, - .baseSpDefense = 49, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 120, - .expYield = 127, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 100, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RIVALRY, ABILITY_INTIMIDATE, ABILITY_GUTS}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_LUXRAY] = - { - .baseHP = 80, - .baseAttack = 120, - .baseDefense = 79, - .baseSpeed = 70, - .baseSpAttack = 95, - .baseSpDefense = 79, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 45, - .expYield = 235, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RIVALRY, ABILITY_INTIMIDATE, ABILITY_GUTS}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_BUDEW] = - { - .baseHP = 40, - .baseAttack = 30, - .baseDefense = 35, - .baseSpeed = 55, - .baseSpAttack = 50, - .baseSpDefense = 70, - .types = { TYPE_GRASS, TYPE_POISON}, - .catchRate = 255, - .expYield = 56, - .evYield_SpAttack = 1, - .itemRare = ITEM_POISON_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_NATURAL_CURE, ABILITY_POISON_POINT, ABILITY_LEAF_GUARD}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = TRUE, - }, - - [SPECIES_ROSERADE] = - { - .baseHP = 60, - .baseAttack = 70, - .baseSpeed = 90, - .baseSpAttack = 125, - .baseSpDefense = 105, - #if P_UPDATED_STATS >= GEN_6 - .baseDefense = 65, - #else - .baseDefense = 55, - #endif - .types = { TYPE_GRASS, TYPE_POISON}, - .catchRate = 75, - .expYield = 232, - .evYield_SpAttack = 3, - .itemRare = ITEM_POISON_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, - .abilities = {ABILITY_NATURAL_CURE, ABILITY_POISON_POINT, ABILITY_TECHNICIAN}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = TRUE, - }, - - [SPECIES_CRANIDOS] = - { - .baseHP = 67, - .baseAttack = 125, - .baseDefense = 40, - .baseSpeed = 58, - .baseSpAttack = 30, - .baseSpDefense = 30, - .types = { TYPE_ROCK, TYPE_ROCK}, - .catchRate = 45, - .expYield = 70, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_MOLD_BREAKER, ABILITY_NONE, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_RAMPARDOS] = - { - .baseHP = 97, - .baseAttack = 165, - .baseDefense = 60, - .baseSpeed = 58, - .baseSpAttack = 65, - .baseSpDefense = 50, - .types = { TYPE_ROCK, TYPE_ROCK}, - .catchRate = 45, - .expYield = 173, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_MOLD_BREAKER, ABILITY_NONE, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SHIELDON] = - { - .baseHP = 30, - .baseAttack = 42, - .baseDefense = 118, - .baseSpeed = 30, - .baseSpAttack = 42, - .baseSpDefense = 88, - .types = { TYPE_ROCK, TYPE_STEEL}, - .catchRate = 45, - .expYield = 70, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_STURDY, ABILITY_NONE, ABILITY_SOUNDPROOF}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_BASTIODON] = - { - .baseHP = 60, - .baseAttack = 52, - .baseDefense = 168, - .baseSpeed = 30, - .baseSpAttack = 47, - .baseSpDefense = 138, - .types = { TYPE_ROCK, TYPE_STEEL}, - .catchRate = 45, - .expYield = 173, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_STURDY, ABILITY_NONE, ABILITY_SOUNDPROOF}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_BURMY] = BURMY_SPECIES_INFO(BODY_COLOR_GREEN), - - [SPECIES_WORMADAM] = - { - .baseHP = 60, - .baseAttack = 59, - .baseDefense = 85, - .baseSpeed = 36, - .baseSpAttack = 79, - .baseSpDefense = 105, - .types = { TYPE_BUG, TYPE_GRASS}, - .catchRate = 45, - .expYield = 148, - .evYield_SpDefense = 2, - .itemRare = ITEM_SILVER_POWDER, - .genderRatio = MON_FEMALE, - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_ANTICIPATION, ABILITY_NONE, ABILITY_OVERCOAT}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_MOTHIM] = - { - .baseHP = 70, - .baseAttack = 94, - .baseDefense = 50, - .baseSpeed = 66, - .baseSpAttack = 94, - .baseSpDefense = 50, - .types = { TYPE_BUG, TYPE_FLYING}, - .catchRate = 45, - .expYield = 148, - .evYield_Attack = 1, - .evYield_SpAttack = 1, - .itemRare = ITEM_SILVER_POWDER, - .genderRatio = MON_MALE, - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_NONE, ABILITY_TINTED_LENS}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_COMBEE] = - { - .baseHP = 30, - .baseAttack = 30, - .baseDefense = 42, - .baseSpeed = 70, - .baseSpAttack = 30, - .baseSpDefense = 42, - .types = { TYPE_BUG, TYPE_FLYING}, - .catchRate = 120, - .expYield = 49, - .evYield_Speed = 1, - .itemRare = ITEM_HONEY, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_HONEY_GATHER, ABILITY_NONE, ABILITY_HUSTLE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_VESPIQUEN] = - { - .baseHP = 70, - .baseAttack = 80, - .baseDefense = 102, - .baseSpeed = 40, - .baseSpAttack = 80, - .baseSpDefense = 102, - .types = { TYPE_BUG, TYPE_FLYING}, - .catchRate = 45, - .expYield = 166, - .evYield_Defense = 1, - .evYield_SpDefense = 1, - .itemRare = ITEM_POISON_BARB, - .genderRatio = MON_FEMALE, - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_PACHIRISU] = - { - .baseHP = 60, - .baseAttack = 45, - .baseDefense = 70, - .baseSpeed = 95, - .baseSpAttack = 45, - .baseSpDefense = 90, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 200, - .expYield = 142, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 10, - .friendship = 100, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_PICKUP, ABILITY_VOLT_ABSORB}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_BUIZEL] = - { - .baseHP = 55, - .baseAttack = 65, - .baseDefense = 35, - .baseSpeed = 85, - .baseSpAttack = 60, - .baseSpDefense = 30, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 190, - .expYield = 66, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_WATER_VEIL}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_FLOATZEL] = - { - .baseHP = 85, - .baseAttack = 105, - .baseDefense = 55, - .baseSpeed = 115, - .baseSpAttack = 85, - .baseSpDefense = 50, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 75, - .expYield = 173, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_WATER_VEIL}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_CHERUBI] = - { - .baseHP = 45, - .baseAttack = 35, - .baseDefense = 45, - .baseSpeed = 35, - .baseSpAttack = 62, - .baseSpDefense = 53, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 190, - .expYield = 55, - .evYield_SpAttack = 1, - .itemRare = ITEM_MIRACLE_SEED, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_NONE}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_CHERRIM] = CHERRIM_SPECIES_INFO(BODY_COLOR_PURPLE), - - [SPECIES_SHELLOS] = SHELLOS_SPECIES_INFO(BODY_COLOR_PURPLE), - - [SPECIES_GASTRODON] = GASTRODON_SPECIES_INFO(BODY_COLOR_PURPLE), - - [SPECIES_AMBIPOM] = - { - .baseHP = 75, - .baseAttack = 100, - .baseDefense = 66, - .baseSpeed = 115, - .baseSpAttack = 60, - .baseSpDefense = 66, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 45, - .expYield = 169, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 100, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_TECHNICIAN, ABILITY_PICKUP, ABILITY_SKILL_LINK}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_DRIFLOON] = - { - .baseHP = 90, - .baseAttack = 50, - .baseDefense = 34, - .baseSpeed = 70, - .baseSpAttack = 60, - .baseSpDefense = 44, - .types = { TYPE_GHOST, TYPE_FLYING}, - .catchRate = 125, - .expYield = 70, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FLUCTUATING, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_AFTERMATH, ABILITY_UNBURDEN, ABILITY_FLARE_BOOST}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_DRIFBLIM] = - { - .baseHP = 150, - .baseAttack = 80, - .baseDefense = 44, - .baseSpeed = 80, - .baseSpAttack = 90, - .baseSpDefense = 54, - .types = { TYPE_GHOST, TYPE_FLYING}, - .catchRate = 60, - .expYield = 174, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FLUCTUATING, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_AFTERMATH, ABILITY_UNBURDEN, ABILITY_FLARE_BOOST}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_BUNEARY] = - { - .baseHP = 55, - .baseAttack = 66, - .baseDefense = 44, - .baseSpeed = 85, - .baseSpAttack = 44, - .baseSpDefense = 56, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 190, - .expYield = 70, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 0, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_KLUTZ, ABILITY_LIMBER}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_LOPUNNY] = - { - .baseHP = 65, - .baseAttack = 76, - .baseDefense = 84, - .baseSpeed = 105, - .baseSpAttack = 54, - .baseSpDefense = 96, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 60, - .expYield = 168, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 140, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_CUTE_CHARM, ABILITY_KLUTZ, ABILITY_LIMBER}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_MISMAGIUS] = - { - .baseHP = 60, - .baseAttack = 60, - .baseDefense = 60, - .baseSpeed = 105, - .baseSpAttack = 105, - .baseSpDefense = 105, - .types = { TYPE_GHOST, TYPE_GHOST}, - .catchRate = 45, - .expYield = 173, - .evYield_SpAttack = 1, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = 35, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_HONCHKROW] = - { - .baseHP = 100, - .baseAttack = 125, - .baseDefense = 52, - .baseSpeed = 71, - .baseSpAttack = 105, - .baseSpDefense = 52, - .types = { TYPE_DARK, TYPE_FLYING}, - .catchRate = 30, - .expYield = 177, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_INSOMNIA, ABILITY_SUPER_LUCK, ABILITY_MOXIE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_GLAMEOW] = - { - .baseHP = 49, - .baseAttack = 55, - .baseDefense = 42, - .baseSpeed = 85, - .baseSpAttack = 42, - .baseSpDefense = 37, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 190, - .expYield = 62, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_LIMBER, ABILITY_OWN_TEMPO, ABILITY_KEEN_EYE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_PURUGLY] = - { - .baseHP = 71, - .baseAttack = 82, - .baseDefense = 64, - .baseSpeed = 112, - .baseSpAttack = 64, - .baseSpDefense = 59, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 75, - .expYield = 158, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_THICK_FAT, ABILITY_OWN_TEMPO, ABILITY_DEFIANT}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_CHINGLING] = - { - .baseHP = 45, - .baseAttack = 30, - .baseDefense = 50, - .baseSpeed = 45, - .baseSpAttack = 65, - .baseSpDefense = 50, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 120, - .expYield = 57, - .evYield_SpAttack = 1, - .itemRare = ITEM_CLEANSE_TAG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_STUNKY] = - { - .baseHP = 63, - .baseAttack = 63, - .baseDefense = 47, - .baseSpeed = 74, - .baseSpAttack = 41, - .baseSpDefense = 41, - .types = { TYPE_POISON, TYPE_DARK}, - .catchRate = 225, - .expYield = 66, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_STENCH, ABILITY_AFTERMATH, ABILITY_KEEN_EYE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_SKUNTANK] = - { - .baseHP = 103, - .baseAttack = 93, - .baseDefense = 67, - .baseSpeed = 84, - .baseSpAttack = 71, - .baseSpDefense = 61, - .types = { TYPE_POISON, TYPE_DARK}, - .catchRate = 60, - .expYield = 168, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_STENCH, ABILITY_AFTERMATH, ABILITY_KEEN_EYE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_BRONZOR] = - { - .baseHP = 57, - .baseAttack = 24, - .baseDefense = 86, - .baseSpeed = 23, - .baseSpAttack = 24, - .baseSpDefense = 86, - .types = { TYPE_STEEL, TYPE_PSYCHIC}, - .catchRate = 255, - .expYield = 60, - .evYield_Defense = 1, - .itemRare = ITEM_METAL_COAT, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_LEVITATE, ABILITY_HEATPROOF, ABILITY_HEAVY_METAL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_BRONZONG] = - { - .baseHP = 67, - .baseAttack = 89, - .baseDefense = 116, - .baseSpeed = 33, - .baseSpAttack = 79, - .baseSpDefense = 116, - .types = { TYPE_STEEL, TYPE_PSYCHIC}, - .catchRate = 90, - .expYield = 175, - .evYield_Defense = 1, - .evYield_SpDefense = 1, - .itemRare = ITEM_METAL_COAT, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_LEVITATE, ABILITY_HEATPROOF, ABILITY_HEAVY_METAL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_BONSLY] = - { - .baseHP = 50, - .baseAttack = 80, - .baseDefense = 95, - .baseSpeed = 10, - .baseSpAttack = 10, - .baseSpDefense = 45, - .types = { TYPE_ROCK, TYPE_ROCK}, - .catchRate = 255, - .expYield = 58, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_RATTLED}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_MIME_JR] = - { - .baseHP = 20, - .baseAttack = 25, - .baseDefense = 45, - .baseSpeed = 60, - .baseSpAttack = 70, - .baseSpDefense = 90, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_PSYCHIC, TYPE_FAIRY}, - #else - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - #endif - .catchRate = 145, - .expYield = 62, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_SOUNDPROOF, ABILITY_FILTER, ABILITY_TECHNICIAN}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_HAPPINY] = - { - .baseHP = 100, - .baseAttack = 5, - .baseDefense = 5, - .baseSpeed = 30, - .baseSpAttack = 15, - .baseSpDefense = 65, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 130, - .expYield = 110, - .evYield_HP = 1, - .itemCommon = ITEM_OVAL_STONE, - .genderRatio = MON_FEMALE, - .eggCycles = 40, - .friendship = 140, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_NATURAL_CURE, ABILITY_SERENE_GRACE, ABILITY_FRIEND_GUARD}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_CHATOT] = - { - .baseHP = 76, - .baseAttack = 65, - .baseDefense = 45, - .baseSpeed = 91, - .baseSpAttack = 92, - .baseSpDefense = 42, - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 30, - .expYield = 144, - .evYield_Attack = 1, - .itemRare = ITEM_METRONOME, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_SPIRITOMB] = - { - .baseHP = 50, - .baseAttack = 92, - .baseDefense = 108, - .baseSpeed = 35, - .baseSpAttack = 92, - .baseSpDefense = 108, - .types = { TYPE_GHOST, TYPE_DARK}, - .catchRate = 100, - .expYield = 170, - .evYield_Defense = 1, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INFILTRATOR}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_GIBLE] = - { - .baseHP = 58, - .baseAttack = 70, - .baseDefense = 45, - .baseSpeed = 42, - .baseSpAttack = 40, - .baseSpDefense = 45, - .types = { TYPE_DRAGON, TYPE_GROUND}, - .catchRate = 45, - .expYield = 60, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_ROUGH_SKIN}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_GABITE] = - { - .baseHP = 68, - .baseAttack = 90, - .baseDefense = 65, - .baseSpeed = 82, - .baseSpAttack = 50, - .baseSpDefense = 55, - .types = { TYPE_DRAGON, TYPE_GROUND}, - .catchRate = 45, - .expYield = 144, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_ROUGH_SKIN}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_GARCHOMP] = - { - .baseHP = 108, - .baseAttack = 130, - .baseDefense = 95, - .baseSpeed = 102, - .baseSpAttack = 80, - .baseSpDefense = 85, - .types = { TYPE_DRAGON, TYPE_GROUND}, - .catchRate = 45, - .expYield = 270, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_ROUGH_SKIN}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_MUNCHLAX] = - { - .baseHP = 135, - .baseAttack = 85, - .baseDefense = 40, - .baseSpeed = 5, - .baseSpAttack = 40, - .baseSpDefense = 85, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 50, - .expYield = 78, - .evYield_HP = 1, - .itemCommon = ITEM_LEFTOVERS, - .itemRare = ITEM_LEFTOVERS, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PICKUP, ABILITY_THICK_FAT, ABILITY_GLUTTONY}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_RIOLU] = - { - .baseHP = 40, - .baseAttack = 70, - .baseDefense = 40, - .baseSpeed = 60, - .baseSpAttack = 35, - .baseSpDefense = 40, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 75, - .expYield = 57, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_STEADFAST, ABILITY_INNER_FOCUS, ABILITY_PRANKSTER}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_LUCARIO] = - { - .baseHP = 70, - .baseAttack = 110, - .baseDefense = 70, - .baseSpeed = 90, - .baseSpAttack = 115, - .baseSpDefense = 70, - .types = { TYPE_FIGHTING, TYPE_STEEL}, - .catchRate = 45, - .expYield = 184, - .evYield_Attack = 1, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_STEADFAST, ABILITY_INNER_FOCUS, ABILITY_JUSTIFIED}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_HIPPOPOTAS] = - { - .baseHP = 68, - .baseAttack = 72, - .baseDefense = 78, - .baseSpeed = 32, - .baseSpAttack = 38, - .baseSpDefense = 42, - .types = { TYPE_GROUND, TYPE_GROUND}, - .catchRate = 140, - .expYield = 66, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SAND_STREAM, ABILITY_NONE, ABILITY_SAND_FORCE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_HIPPOWDON] = - { - .baseHP = 108, - .baseAttack = 112, - .baseDefense = 118, - .baseSpeed = 47, - .baseSpAttack = 68, - .baseSpDefense = 72, - .types = { TYPE_GROUND, TYPE_GROUND}, - .catchRate = 60, - .expYield = 184, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SAND_STREAM, ABILITY_NONE, ABILITY_SAND_FORCE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_SKORUPI] = - { - .baseHP = 40, - .baseAttack = 50, - .baseDefense = 90, - .baseSpeed = 65, - .baseSpAttack = 30, - .baseSpDefense = 55, - .types = { TYPE_POISON, TYPE_BUG}, - .catchRate = 120, - .expYield = 66, - .evYield_Defense = 1, - .itemRare = ITEM_POISON_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_SNIPER, ABILITY_KEEN_EYE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_DRAPION] = - { - .baseHP = 70, - .baseAttack = 90, - .baseDefense = 110, - .baseSpeed = 95, - .baseSpAttack = 60, - .baseSpDefense = 75, - .types = { TYPE_POISON, TYPE_DARK}, - .catchRate = 45, - .expYield = 175, - .evYield_Defense = 2, - .itemRare = ITEM_POISON_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_SNIPER, ABILITY_KEEN_EYE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_CROAGUNK] = - { - .baseHP = 48, - .baseAttack = 61, - .baseDefense = 40, - .baseSpeed = 50, - .baseSpAttack = 61, - .baseSpDefense = 40, - .types = { TYPE_POISON, TYPE_FIGHTING}, - .catchRate = 140, - .expYield = 60, - .evYield_Attack = 1, - .itemRare = ITEM_BLACK_SLUDGE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 10, - .friendship = 100, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_ANTICIPATION, ABILITY_DRY_SKIN, ABILITY_POISON_TOUCH}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_TOXICROAK] = - { - .baseHP = 83, - .baseAttack = 106, - .baseDefense = 65, - .baseSpeed = 85, - .baseSpAttack = 86, - .baseSpDefense = 65, - .types = { TYPE_POISON, TYPE_FIGHTING}, - .catchRate = 75, - .expYield = 172, - .evYield_Attack = 2, - .itemRare = ITEM_BLACK_SLUDGE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_ANTICIPATION, ABILITY_DRY_SKIN, ABILITY_POISON_TOUCH}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_CARNIVINE] = - { - .baseHP = 74, - .baseAttack = 100, - .baseDefense = 72, - .baseSpeed = 46, - .baseSpAttack = 90, - .baseSpDefense = 72, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 200, - .expYield = 159, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_FINNEON] = - { - .baseHP = 49, - .baseAttack = 49, - .baseDefense = 56, - .baseSpeed = 66, - .baseSpAttack = 49, - .baseSpDefense = 61, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 190, - .expYield = 66, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_STORM_DRAIN, ABILITY_WATER_VEIL}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_LUMINEON] = - { - .baseHP = 69, - .baseAttack = 69, - .baseDefense = 76, - .baseSpeed = 91, - .baseSpAttack = 69, - .baseSpDefense = 86, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 75, - .expYield = 161, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_STORM_DRAIN, ABILITY_WATER_VEIL}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_MANTYKE] = - { - .baseHP = 45, - .baseAttack = 20, - .baseDefense = 50, - .baseSpeed = 50, - .baseSpAttack = 60, - .baseSpDefense = 120, - .types = { TYPE_WATER, TYPE_FLYING}, - .catchRate = 25, - .expYield = 69, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_WATER_ABSORB, ABILITY_WATER_VEIL}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SNOVER] = - { - .baseHP = 60, - .baseAttack = 62, - .baseDefense = 50, - .baseSpeed = 40, - .baseSpAttack = 62, - .baseSpDefense = 60, - .types = { TYPE_GRASS, TYPE_ICE}, - .catchRate = 120, - .expYield = 67, - .evYield_Attack = 1, - .itemRare = ITEM_NEVER_MELT_ICE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, - .abilities = {ABILITY_SNOW_WARNING, ABILITY_NONE, ABILITY_SOUNDPROOF}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_ABOMASNOW] = - { - .baseHP = 90, - .baseAttack = 92, - .baseDefense = 75, - .baseSpeed = 60, - .baseSpAttack = 92, - .baseSpDefense = 85, - .types = { TYPE_GRASS, TYPE_ICE}, - .catchRate = 60, - .expYield = 173, - .evYield_Attack = 1, - .evYield_SpAttack = 1, - .itemRare = ITEM_NEVER_MELT_ICE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, - .abilities = {ABILITY_SNOW_WARNING, ABILITY_NONE, ABILITY_SOUNDPROOF}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_WEAVILE] = - { - .baseHP = 70, - .baseAttack = 120, - .baseDefense = 65, - .baseSpeed = 125, - .baseSpAttack = 45, - .baseSpDefense = 85, - .types = { TYPE_DARK, TYPE_ICE}, - .catchRate = 45, - .expYield = 179, - .evYield_Attack = 1, - .evYield_Speed = 1, - .itemRare = ITEM_QUICK_CLAW, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_PICKPOCKET}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_MAGNEZONE] = - { - .baseHP = 70, - .baseAttack = 70, - .baseDefense = 115, - .baseSpeed = 60, - .baseSpAttack = 130, - .baseSpDefense = 90, - .types = { TYPE_ELECTRIC, TYPE_STEEL}, - .catchRate = 30, - .expYield = 241, - .evYield_SpAttack = 3, - .itemRare = ITEM_METAL_COAT, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_ANALYTIC}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_LICKILICKY] = - { - .baseHP = 110, - .baseAttack = 85, - .baseDefense = 95, - .baseSpeed = 50, - .baseSpAttack = 80, - .baseSpDefense = 95, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 30, - .expYield = 180, - .evYield_HP = 3, - .itemRare = ITEM_LAGGING_TAIL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_OWN_TEMPO, ABILITY_OBLIVIOUS, ABILITY_CLOUD_NINE}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_RHYPERIOR] = - { - .baseHP = 115, - .baseAttack = 140, - .baseDefense = 130, - .baseSpeed = 40, - .baseSpAttack = 55, - .baseSpDefense = 55, - .types = { TYPE_GROUND, TYPE_ROCK}, - .catchRate = 30, - .expYield = 241, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, - .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_SOLID_ROCK, ABILITY_RECKLESS}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_TANGROWTH] = - { - .baseHP = 100, - .baseAttack = 100, - .baseDefense = 125, - .baseSpeed = 50, - .baseSpAttack = 110, - .baseSpDefense = 50, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 30, - .expYield = 187, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_ELECTIVIRE] = - { - .baseHP = 75, - .baseAttack = 123, - .baseDefense = 67, - .baseSpeed = 95, - .baseSpAttack = 95, - .baseSpDefense = 85, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 30, - .expYield = 243, - .evYield_Attack = 3, - .itemRare = ITEM_ELECTIRIZER, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_MOTOR_DRIVE, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_MAGMORTAR] = - { - .baseHP = 75, - .baseAttack = 95, - .baseDefense = 67, - .baseSpeed = 83, - .baseSpAttack = 125, - .baseSpDefense = 95, - .types = { TYPE_FIRE, TYPE_FIRE}, - .catchRate = 30, - .expYield = 243, - .evYield_SpAttack = 3, - .itemRare = ITEM_MAGMARIZER, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_VITAL_SPIRIT}, - .bodyColor = BODY_COLOR_RED, - .noFlip = TRUE, - }, - - [SPECIES_TOGEKISS] = - { - .baseHP = 85, - .baseAttack = 50, - .baseDefense = 95, - .baseSpeed = 80, - .baseSpAttack = 120, - .baseSpDefense = 115, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_FAIRY, TYPE_FLYING}, - #else - .types = { TYPE_NORMAL, TYPE_FLYING}, - #endif - .catchRate = 30, - .expYield = 245, - .evYield_SpAttack = 2, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 10, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_HUSTLE, ABILITY_SERENE_GRACE, ABILITY_SUPER_LUCK}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = TRUE, - }, - - [SPECIES_YANMEGA] = - { - .baseHP = 86, - .baseAttack = 76, - .baseDefense = 86, - .baseSpeed = 95, - .baseSpAttack = 116, - .baseSpDefense = 56, - .types = { TYPE_BUG, TYPE_FLYING}, - .catchRate = 30, - .expYield = 180, - .evYield_Attack = 2, - .itemRare = ITEM_WIDE_LENS, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SPEED_BOOST, ABILITY_TINTED_LENS, ABILITY_FRISK}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_LEAFEON] = - { - .baseHP = 65, - .baseAttack = 110, - .baseDefense = 130, - .baseSpeed = 95, - .baseSpAttack = 60, - .baseSpDefense = 65, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 45, - .expYield = 184, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 35, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_LEAF_GUARD, ABILITY_LEAF_GUARD, ABILITY_CHLOROPHYLL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_GLACEON] = - { - .baseHP = 65, - .baseAttack = 60, - .baseDefense = 110, - .baseSpeed = 65, - .baseSpAttack = 130, - .baseSpDefense = 95, - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 45, - .expYield = 184, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 35, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SNOW_CLOAK, ABILITY_SNOW_CLOAK, ABILITY_ICE_BODY}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_GLISCOR] = - { - .baseHP = 75, - .baseAttack = 95, - .baseDefense = 125, - .baseSpeed = 95, - .baseSpAttack = 45, - .baseSpDefense = 75, - .types = { TYPE_GROUND, TYPE_FLYING}, - .catchRate = 30, - .expYield = 179, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_HYPER_CUTTER, ABILITY_SAND_VEIL, ABILITY_POISON_HEAL}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_MAMOSWINE] = - { - .baseHP = 110, - .baseAttack = 130, - .baseDefense = 80, - .baseSpeed = 80, - .baseSpAttack = 70, - .baseSpDefense = 60, - .types = { TYPE_ICE, TYPE_GROUND}, - .catchRate = 50, - .expYield = 239, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_OBLIVIOUS, ABILITY_SNOW_CLOAK, ABILITY_THICK_FAT}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_PORYGON_Z] = - { - .baseHP = 85, - .baseAttack = 80, - .baseDefense = 70, - .baseSpeed = 90, - .baseSpAttack = 135, - .baseSpDefense = 75, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 30, - .expYield = 241, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_ADAPTABILITY, ABILITY_DOWNLOAD, ABILITY_ANALYTIC}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_GALLADE] = - { - .baseHP = 68, - .baseAttack = 125, - .baseDefense = 65, - .baseSpeed = 80, - .baseSpAttack = 65, - .baseSpDefense = 115, - .types = { TYPE_PSYCHIC, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 233, - .evYield_Attack = 3, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_SLOW, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_AMORPHOUS}, - #else - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - #endif - .abilities = {ABILITY_STEADFAST, ABILITY_NONE, ABILITY_JUSTIFIED}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_PROBOPASS] = - { - .baseHP = 60, - .baseAttack = 55, - .baseDefense = 145, - .baseSpeed = 40, - .baseSpAttack = 75, - .baseSpDefense = 150, - .types = { TYPE_ROCK, TYPE_STEEL}, - .catchRate = 60, - .expYield = 184, - .evYield_Defense = 1, - .evYield_SpDefense = 2, - .itemRare = ITEM_MAGNET, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STURDY, ABILITY_MAGNET_PULL, ABILITY_SAND_FORCE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_DUSKNOIR] = - { - .baseHP = 45, - .baseAttack = 100, - .baseDefense = 135, - .baseSpeed = 45, - .baseSpAttack = 65, - .baseSpDefense = 135, - .types = { TYPE_GHOST, TYPE_GHOST}, - .catchRate = 45, - .expYield = 236, - .evYield_Defense = 1, - .evYield_SpDefense = 2, - .itemRare = ITEM_SPELL_TAG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = 35, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_FRISK}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_FROSLASS] = - { - .baseHP = 70, - .baseAttack = 80, - .baseDefense = 70, - .baseSpeed = 110, - .baseSpAttack = 80, - .baseSpDefense = 70, - .types = { TYPE_ICE, TYPE_GHOST}, - .catchRate = 75, - .expYield = 168, - .evYield_Speed = 2, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_CURSED_BODY}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_ROTOM] = - { - .baseHP = 50, - .baseAttack = 50, - .baseDefense = 77, - .baseSpeed = 91, - .baseSpAttack = 95, - .baseSpDefense = 77, - .types = { TYPE_ELECTRIC, TYPE_GHOST}, - .catchRate = 45, - .expYield = 154, - .evYield_Speed = 1, - .evYield_SpAttack = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_UXIE] = - { - .baseHP = 75, - .baseAttack = 75, - .baseDefense = 130, - .baseSpeed = 95, - .baseSpAttack = 75, - .baseSpDefense = 130, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 3, - .expYield = 261, - .evYield_Defense = 2, - .evYield_SpDefense = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 80, - .friendship = 140, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_MESPRIT] = - { - .baseHP = 80, - .baseAttack = 105, - .baseDefense = 105, - .baseSpeed = 80, - .baseSpAttack = 105, - .baseSpDefense = 105, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 3, - .expYield = 261, - .evYield_Attack = 1, - .evYield_SpAttack = 1, - .evYield_SpDefense = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 80, - .friendship = 140, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_AZELF] = - { - .baseHP = 75, - .baseAttack = 125, - .baseDefense = 70, - .baseSpeed = 115, - .baseSpAttack = 125, - .baseSpDefense = 70, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 3, - .expYield = 261, - .evYield_Attack = 2, - .evYield_SpAttack = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 80, - .friendship = 140, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_DIALGA] = - { - .baseHP = 100, - .baseAttack = 120, - .baseDefense = 120, - .baseSpeed = 90, - .baseSpAttack = 150, - .baseSpDefense = 100, - .types = { TYPE_STEEL, TYPE_DRAGON}, - .catchRate = 3, - .expYield = 306, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_PALKIA] = - { - .baseHP = 90, - .baseAttack = 120, - .baseDefense = 100, - .baseSpeed = 100, - .baseSpAttack = 150, - .baseSpDefense = 120, - .types = { TYPE_WATER, TYPE_DRAGON}, - .catchRate = 3, - .expYield = 306, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_HEATRAN] = - { - .baseHP = 91, - .baseAttack = 90, - .baseDefense = 106, - .baseSpeed = 77, - .baseSpAttack = 130, - .baseSpDefense = 106, - .types = { TYPE_FIRE, TYPE_STEEL}, - .catchRate = 3, - .expYield = 270, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 10, - .friendship = 100, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_FLAME_BODY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_REGIGIGAS] = - { - .baseHP = 110, - .baseAttack = 160, - .baseDefense = 110, - .baseSpeed = 100, - .baseSpAttack = 80, - .baseSpDefense = 110, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 3, - .expYield = 302, - .evYield_Attack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_SLOW_START, ABILITY_NONE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_GIRATINA] = - { - .baseHP = 150, - .baseAttack = 100, - .baseDefense = 120, - .baseSpeed = 90, - .baseSpAttack = 100, - .baseSpDefense = 120, - .types = { TYPE_GHOST, TYPE_DRAGON}, - .catchRate = 3, - .expYield = 306, - .evYield_HP = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_CRESSELIA] = - { - .baseHP = 120, - .baseAttack = 70, - .baseDefense = P_UPDATED_STATS >= GEN_9 ? 110 : 120, - .baseSpeed = 85, - .baseSpAttack = 75, - .baseSpDefense = P_UPDATED_STATS >= GEN_9 ? 120 : 130, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 3, - .expYield = 270, - .evYield_SpDefense = 3, - .genderRatio = MON_FEMALE, - .eggCycles = 120, - .friendship = 100, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_PHIONE] = - { - .baseHP = 80, - .baseAttack = 80, - .baseDefense = 80, - .baseSpeed = 80, - .baseSpAttack = 80, - .baseSpDefense = 80, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 30, - .expYield = 216, - .evYield_HP = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_HYDRATION, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - - [SPECIES_MANAPHY] = - { - .baseHP = 100, - .baseAttack = 100, - .baseDefense = 100, - .baseSpeed = 100, - .baseSpAttack = 100, - .baseSpDefense = 100, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 3, - .expYield = 270, - .evYield_HP = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 10, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_HYDRATION, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - - [SPECIES_DARKRAI] = - { - .baseHP = 70, - .baseAttack = 90, - .baseDefense = 90, - .baseSpeed = 125, - .baseSpAttack = 135, - .baseSpDefense = 90, - .types = { TYPE_DARK, TYPE_DARK}, - .catchRate = 3, - .expYield = 270, - .evYield_Speed = 1, - .evYield_SpAttack = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_BAD_DREAMS, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - - [SPECIES_SHAYMIN] = - { - .baseHP = 100, - .baseAttack = 100, - .baseDefense = 100, - .baseSpeed = 100, - .baseSpAttack = 100, - .baseSpDefense = 100, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 45, - .expYield = 270, - .evYield_HP = 3, - .itemCommon = ITEM_LUM_BERRY, - .itemRare = ITEM_LUM_BERRY, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 100, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_NATURAL_CURE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - - [SPECIES_ARCEUS] = - { - .baseHP = 120, - .baseAttack = 120, - .baseDefense = 120, - .baseSpeed = 120, - .baseSpAttack = 120, - .baseSpDefense = 120, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 3, - .expYield = 324, - .evYield_HP = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_MULTITYPE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, -#endif - -#if P_GEN_5_POKEMON == TRUE - [SPECIES_VICTINI] = - { - .baseHP = 100, - .baseAttack = 100, - .baseDefense = 100, - .baseSpeed = 100, - .baseSpAttack = 100, - .baseSpDefense = 100, - .types = { TYPE_PSYCHIC, TYPE_FIRE}, - .catchRate = 3, - .expYield = 270, - .evYield_HP = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 100, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_VICTORY_STAR, ABILITY_NONE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - - [SPECIES_SNIVY] = - { - .baseHP = 45, - .baseAttack = 45, - .baseDefense = 55, - .baseSpeed = 63, - .baseSpAttack = 45, - .baseSpDefense = 55, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 45, - .expYield = 62, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CONTRARY}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_SERVINE] = - { - .baseHP = 60, - .baseAttack = 60, - .baseDefense = 75, - .baseSpeed = 83, - .baseSpAttack = 60, - .baseSpDefense = 75, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 45, - .expYield = 145, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CONTRARY}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_SERPERIOR] = - { - .baseHP = 75, - .baseAttack = 75, - .baseDefense = 95, - .baseSpeed = 113, - .baseSpAttack = 75, - .baseSpDefense = 95, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 45, - .expYield = 238, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CONTRARY}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_TEPIG] = - { - .baseHP = 65, - .baseAttack = 63, - .baseDefense = 45, - .baseSpeed = 45, - .baseSpAttack = 45, - .baseSpDefense = 45, - .types = { TYPE_FIRE, TYPE_FIRE}, - .catchRate = 45, - .expYield = 62, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_THICK_FAT}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_PIGNITE] = - { - .baseHP = 90, - .baseAttack = 93, - .baseDefense = 55, - .baseSpeed = 55, - .baseSpAttack = 70, - .baseSpDefense = 55, - .types = { TYPE_FIRE, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 146, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_THICK_FAT}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_EMBOAR] = - { - .baseHP = 110, - .baseAttack = 123, - .baseDefense = 65, - .baseSpeed = 65, - .baseSpAttack = 100, - .baseSpDefense = 65, - .types = { TYPE_FIRE, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 238, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_RECKLESS}, - .bodyColor = BODY_COLOR_RED, - .noFlip = TRUE, - }, - - [SPECIES_OSHAWOTT] = - { - .baseHP = 55, - .baseAttack = 55, - .baseDefense = 45, - .baseSpeed = 45, - .baseSpAttack = 63, - .baseSpDefense = 45, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 45, - .expYield = 62, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHELL_ARMOR}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_DEWOTT] = - { - .baseHP = 75, - .baseAttack = 75, - .baseDefense = 60, - .baseSpeed = 60, - .baseSpAttack = 83, - .baseSpDefense = 60, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 45, - .expYield = 145, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHELL_ARMOR}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SAMUROTT] = - { - .baseHP = 95, - .baseAttack = 100, - .baseDefense = 85, - .baseSpeed = 70, - .baseSpAttack = 108, - .baseSpDefense = 70, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 45, - .expYield = 238, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHELL_ARMOR}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_PATRAT] = - { - .baseHP = 45, - .baseAttack = 55, - .baseDefense = 39, - .baseSpeed = 42, - .baseSpAttack = 35, - .baseSpDefense = 39, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 255, - .expYield = 51, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_KEEN_EYE, ABILITY_ANALYTIC}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_WATCHOG] = - { - .baseHP = 60, - .baseAttack = 85, - .baseDefense = 69, - .baseSpeed = 77, - .baseSpAttack = 60, - .baseSpDefense = 69, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 255, - .expYield = 147, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_ILLUMINATE, ABILITY_KEEN_EYE, ABILITY_ANALYTIC}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_LILLIPUP] = - { - .baseHP = 45, - .baseAttack = 60, - .baseDefense = 45, - .baseSpeed = 55, - .baseSpAttack = 25, - .baseSpDefense = 45, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 255, - .expYield = 55, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_PICKUP, ABILITY_RUN_AWAY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_HERDIER] = - { - .baseHP = 65, - .baseAttack = 80, - .baseDefense = 65, - .baseSpeed = 60, - .baseSpAttack = 35, - .baseSpDefense = 65, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 120, - .expYield = 130, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_SAND_RUSH, ABILITY_SCRAPPY}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_STOUTLAND] = - { - .baseHP = 85, - .baseDefense = 90, - .baseSpeed = 80, - .baseSpAttack = 45, - .baseSpDefense = 90, - #if P_UPDATED_STATS >= GEN_6 - .baseAttack = 110, - #else - .baseAttack = 100, - #endif - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 45, - .expYield = 225, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_SAND_RUSH, ABILITY_SCRAPPY}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_PURRLOIN] = - { - .baseHP = 41, - .baseAttack = 50, - .baseDefense = 37, - .baseSpeed = 66, - .baseSpAttack = 50, - .baseSpDefense = 37, - .types = { TYPE_DARK, TYPE_DARK}, - .catchRate = 255, - .expYield = 56, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_LIMBER, ABILITY_UNBURDEN, ABILITY_PRANKSTER}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_LIEPARD] = - { - .baseHP = 64, - .baseAttack = 88, - .baseDefense = 50, - .baseSpeed = 106, - .baseSpAttack = 88, - .baseSpDefense = 50, - .types = { TYPE_DARK, TYPE_DARK}, - .catchRate = 90, - .expYield = 156, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_LIMBER, ABILITY_UNBURDEN, ABILITY_PRANKSTER}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_PANSAGE] = - { - .baseHP = 50, - .baseAttack = 53, - .baseDefense = 48, - .baseSpeed = 64, - .baseSpAttack = 53, - .baseSpDefense = 48, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 190, - .expYield = 63, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_OVERGROW}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_SIMISAGE] = - { - .baseHP = 75, - .baseAttack = 98, - .baseDefense = 63, - .baseSpeed = 101, - .baseSpAttack = 98, - .baseSpDefense = 63, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 75, - .expYield = 174, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_OVERGROW}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_PANSEAR] = - { - .baseHP = 50, - .baseAttack = 53, - .baseDefense = 48, - .baseSpeed = 64, - .baseSpAttack = 53, - .baseSpDefense = 48, - .types = { TYPE_FIRE, TYPE_FIRE}, - .catchRate = 190, - .expYield = 63, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_BLAZE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = TRUE, - }, - - [SPECIES_SIMISEAR] = - { - .baseHP = 75, - .baseAttack = 98, - .baseDefense = 63, - .baseSpeed = 101, - .baseSpAttack = 98, - .baseSpDefense = 63, - .types = { TYPE_FIRE, TYPE_FIRE}, - .catchRate = 75, - .expYield = 174, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_BLAZE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = TRUE, - }, - - [SPECIES_PANPOUR] = - { - .baseHP = 50, - .baseAttack = 53, - .baseDefense = 48, - .baseSpeed = 64, - .baseSpAttack = 53, - .baseSpDefense = 48, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 190, - .expYield = 63, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_TORRENT}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SIMIPOUR] = - { - .baseHP = 75, - .baseAttack = 98, - .baseDefense = 63, - .baseSpeed = 101, - .baseSpAttack = 98, - .baseSpDefense = 63, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 75, - .expYield = 174, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_TORRENT}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_MUNNA] = - { - .baseHP = 76, - .baseAttack = 25, - .baseDefense = 45, - .baseSpeed = 24, - .baseSpAttack = 67, - .baseSpDefense = 55, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 190, - .expYield = 58, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 10, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_FOREWARN, ABILITY_SYNCHRONIZE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_MUSHARNA] = - { - .baseHP = 116, - .baseAttack = 55, - .baseDefense = 85, - .baseSpeed = 29, - .baseSpAttack = 107, - .baseSpDefense = 95, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 75, - .expYield = 170, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 10, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_FOREWARN, ABILITY_SYNCHRONIZE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_PIDOVE] = - { - .baseHP = 50, - .baseAttack = 55, - .baseDefense = 50, - .baseSpeed = 43, - .baseSpAttack = 36, - .baseSpDefense = 30, - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 255, - .expYield = 53, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_BIG_PECKS, ABILITY_SUPER_LUCK, ABILITY_RIVALRY}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_TRANQUILL] = - { - .baseHP = 62, - .baseAttack = 77, - .baseDefense = 62, - .baseSpeed = 65, - .baseSpAttack = 50, - .baseSpDefense = 42, - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 120, - .expYield = 125, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_BIG_PECKS, ABILITY_SUPER_LUCK, ABILITY_RIVALRY}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_UNFEZANT] = - { - .baseHP = 80, - .baseDefense = 80, - .baseSpeed = 93, - .baseSpAttack = 65, - .baseSpDefense = 55, - #if P_UPDATED_STATS >= GEN_6 - .baseAttack = 115, - #else - .baseAttack = 105, - #endif - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 45, - .expYield = 220, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_BIG_PECKS, ABILITY_SUPER_LUCK, ABILITY_RIVALRY}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_BLITZLE] = - { - .baseHP = 45, - .baseAttack = 60, - .baseDefense = 32, - .baseSpeed = 76, - .baseSpAttack = 50, - .baseSpDefense = 32, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 190, - .expYield = 59, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_MOTOR_DRIVE, ABILITY_SAP_SIPPER}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_ZEBSTRIKA] = - { - .baseHP = 75, - .baseAttack = 100, - .baseDefense = 63, - .baseSpeed = 116, - .baseSpAttack = 80, - .baseSpDefense = 63, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 75, - .expYield = 174, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_MOTOR_DRIVE, ABILITY_SAP_SIPPER}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_ROGGENROLA] = - { - .baseHP = 55, - .baseAttack = 75, - .baseDefense = 85, - .baseSpeed = 15, - .baseSpAttack = 25, - .baseSpDefense = 25, - .types = { TYPE_ROCK, TYPE_ROCK}, - .catchRate = 255, - .expYield = 56, - .evYield_Defense = 1, - .itemCommon = ITEM_EVERSTONE, - .itemRare = ITEM_HARD_STONE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STURDY, ABILITY_WEAK_ARMOR, ABILITY_SAND_FORCE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_BOLDORE] = - { - .baseHP = 70, - .baseAttack = 105, - .baseDefense = 105, - .baseSpeed = 20, - .baseSpAttack = 50, - .baseSpDefense = 40, - .types = { TYPE_ROCK, TYPE_ROCK}, - .catchRate = 120, - .expYield = 137, - .evYield_Attack = 1, - .evYield_Defense = 1, - .itemCommon = ITEM_EVERSTONE, - .itemRare = ITEM_HARD_STONE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STURDY, ABILITY_WEAK_ARMOR, ABILITY_SAND_FORCE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_GIGALITH] = - { - .baseHP = 85, - .baseAttack = 135, - .baseDefense = 130, - .baseSpeed = 25, - .baseSpAttack = 60, - #if P_UPDATED_STATS >= GEN_6 - .baseSpDefense = 80, - #else - .baseSpDefense = 70, - #endif - .types = { TYPE_ROCK, TYPE_ROCK}, - .catchRate = 45, - .expYield = 232, - .evYield_Attack = 3, - .itemCommon = ITEM_EVERSTONE, - .itemRare = ITEM_HARD_STONE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STURDY, ABILITY_SAND_STREAM, ABILITY_SAND_FORCE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_WOOBAT] = - { - .baseAttack = 45, - .baseDefense = 43, - .baseSpeed = 72, - .baseSpAttack = 55, - .baseSpDefense = 43, - #if P_UPDATED_STATS >= GEN_7 - .baseHP = 65, - #else - .baseHP = 55, - #endif - .types = { TYPE_PSYCHIC, TYPE_FLYING}, - .catchRate = 190, - .expYield = 65, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FLYING}, - .abilities = {ABILITY_UNAWARE, ABILITY_KLUTZ, ABILITY_SIMPLE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SWOOBAT] = - { - .baseHP = 67, - .baseAttack = 57, - .baseDefense = 55, - .baseSpeed = 114, - .baseSpAttack = 77, - .baseSpDefense = 55, - .types = { TYPE_PSYCHIC, TYPE_FLYING}, - .catchRate = 45, - .expYield = 149, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FLYING}, - .abilities = {ABILITY_UNAWARE, ABILITY_KLUTZ, ABILITY_SIMPLE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_DRILBUR] = - { - .baseHP = 60, - .baseAttack = 85, - .baseDefense = 40, - .baseSpeed = 68, - .baseSpAttack = 30, - .baseSpDefense = 45, - .types = { TYPE_GROUND, TYPE_GROUND}, - .catchRate = 120, - .expYield = 66, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SAND_RUSH, ABILITY_SAND_FORCE, ABILITY_MOLD_BREAKER}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = TRUE, - }, - - [SPECIES_EXCADRILL] = - { - .baseHP = 110, - .baseAttack = 135, - .baseDefense = 60, - .baseSpeed = 88, - .baseSpAttack = 50, - .baseSpDefense = 65, - .types = { TYPE_GROUND, TYPE_STEEL}, - .catchRate = 60, - .expYield = 178, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SAND_RUSH, ABILITY_SAND_FORCE, ABILITY_MOLD_BREAKER}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = TRUE, - }, - - [SPECIES_AUDINO] = - { - .baseHP = 103, - .baseAttack = 60, - .baseDefense = 86, - .baseSpeed = 50, - .baseSpAttack = 60, - .baseSpDefense = 86, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 255, - .expYield = 390, - .evYield_HP = 2, - .itemCommon = ITEM_ORAN_BERRY, - .itemRare = ITEM_SITRUS_BERRY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_HEALER, ABILITY_REGENERATOR, ABILITY_KLUTZ}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_TIMBURR] = - { - .baseHP = 75, - .baseAttack = 80, - .baseDefense = 55, - .baseSpeed = 35, - .baseSpAttack = 25, - .baseSpDefense = 35, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 180, - .expYield = 61, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_GUTS, ABILITY_SHEER_FORCE, ABILITY_IRON_FIST}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_GURDURR] = - { - .baseHP = 85, - .baseAttack = 105, - .baseDefense = 85, - .baseSpeed = 40, - .baseSpAttack = 40, - .baseSpDefense = 50, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 90, - .expYield = 142, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_GUTS, ABILITY_SHEER_FORCE, ABILITY_IRON_FIST}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_CONKELDURR] = - { - .baseHP = 105, - .baseAttack = 140, - .baseDefense = 95, - .baseSpeed = 45, - .baseSpAttack = 55, - .baseSpDefense = 65, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 227, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_GUTS, ABILITY_SHEER_FORCE, ABILITY_IRON_FIST}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_TYMPOLE] = - { - .baseHP = 50, - .baseAttack = 50, - .baseDefense = 40, - .baseSpeed = 64, - .baseSpAttack = 50, - .baseSpDefense = 40, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 255, - .expYield = 59, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_HYDRATION, ABILITY_WATER_ABSORB}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_PALPITOAD] = - { - .baseHP = 75, - .baseAttack = 65, - .baseDefense = 55, - .baseSpeed = 69, - .baseSpAttack = 65, - .baseSpDefense = 55, - .types = { TYPE_WATER, TYPE_GROUND}, - .catchRate = 120, - .expYield = 134, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_HYDRATION, ABILITY_WATER_ABSORB}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SEISMITOAD] = - { - .baseHP = 105, - .baseDefense = 75, - .baseSpeed = 74, - .baseSpAttack = 85, - .baseSpDefense = 75, - #if P_UPDATED_STATS >= GEN_6 - .baseAttack = 95, - #else - .baseAttack = 85, - #endif - .types = { TYPE_WATER, TYPE_GROUND}, - .catchRate = 45, - .expYield = 229, - .evYield_HP = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_POISON_TOUCH, ABILITY_WATER_ABSORB}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_THROH] = - { - .baseHP = 120, - .baseAttack = 100, - .baseDefense = 85, - .baseSpeed = 45, - .baseSpAttack = 30, - .baseSpDefense = 85, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 163, - .evYield_HP = 2, - .itemRare = ITEM_BLACK_BELT, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_GUTS, ABILITY_INNER_FOCUS, ABILITY_MOLD_BREAKER}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_SAWK] = - { - .baseHP = 75, - .baseAttack = 125, - .baseDefense = 75, - .baseSpeed = 85, - .baseSpAttack = 30, - .baseSpDefense = 75, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 163, - .evYield_Attack = 2, - .itemRare = ITEM_BLACK_BELT, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_STURDY, ABILITY_INNER_FOCUS, ABILITY_MOLD_BREAKER}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = TRUE, - }, - - [SPECIES_SEWADDLE] = - { - .baseHP = 45, - .baseAttack = 53, - .baseDefense = 70, - .baseSpeed = 42, - .baseSpAttack = 40, - .baseSpDefense = 60, - .types = { TYPE_BUG, TYPE_GRASS}, - .catchRate = 255, - .expYield = 62, - .evYield_Defense = 1, - .itemRare = ITEM_MENTAL_HERB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_CHLOROPHYLL, ABILITY_OVERCOAT}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_SWADLOON] = - { - .baseHP = 55, - .baseAttack = 63, - .baseDefense = 90, - .baseSpeed = 42, - .baseSpAttack = 50, - .baseSpDefense = 80, - .types = { TYPE_BUG, TYPE_GRASS}, - .catchRate = 120, - .expYield = 133, - .evYield_Defense = 2, - .itemRare = ITEM_MENTAL_HERB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_LEAF_GUARD, ABILITY_CHLOROPHYLL, ABILITY_OVERCOAT}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_LEAVANNY] = - { - .baseHP = 75, - .baseAttack = 103, - .baseDefense = 80, - .baseSpeed = 92, - .baseSpAttack = 70, - #if P_UPDATED_STATS >= GEN_6 - .baseSpDefense = 80, - #else - .baseSpDefense = 70, - #endif - .types = { TYPE_BUG, TYPE_GRASS}, - .catchRate = 45, - .expYield = 225, - .evYield_Attack = 3, - .itemRare = ITEM_MENTAL_HERB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_CHLOROPHYLL, ABILITY_OVERCOAT}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_VENIPEDE] = - { - .baseHP = 30, - .baseAttack = 45, - .baseDefense = 59, - .baseSpeed = 57, - .baseSpAttack = 30, - .baseSpDefense = 39, - .types = { TYPE_BUG, TYPE_POISON}, - .catchRate = 255, - .expYield = 52, - .evYield_Defense = 1, - .itemRare = ITEM_POISON_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - #if P_UPDATED_ABILITIES >= GEN_6 - .abilities = {ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_SPEED_BOOST}, - #else - .abilities = {ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_QUICK_FEET}, - #endif - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_WHIRLIPEDE] = - { - .baseHP = 40, - .baseAttack = 55, - .baseDefense = 99, - .baseSpeed = 47, - .baseSpAttack = 40, - .baseSpDefense = 79, - .types = { TYPE_BUG, TYPE_POISON}, - .catchRate = 120, - .expYield = 126, - .evYield_Defense = 2, - .itemRare = ITEM_POISON_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - #if P_UPDATED_ABILITIES >= GEN_6 - .abilities = {ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_SPEED_BOOST}, - #else - .abilities = {ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_QUICK_FEET}, - #endif - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_SCOLIPEDE] = - { - .baseHP = 60, - .baseDefense = 89, - .baseSpeed = 112, - .baseSpAttack = 55, - .baseSpDefense = 69, - #if P_UPDATED_STATS >= GEN_6 - .baseAttack = 100, - #else - .baseAttack = 90, - #endif - .types = { TYPE_BUG, TYPE_POISON}, - .catchRate = 45, - .expYield = 218, - .evYield_Speed = 3, - .itemRare = ITEM_POISON_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - #if P_UPDATED_ABILITIES >= GEN_6 - .abilities = {ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_SPEED_BOOST}, - #else - .abilities = {ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_QUICK_FEET}, - #endif - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_COTTONEE] = - { - .baseHP = 40, - .baseAttack = 27, - .baseDefense = 60, - .baseSpeed = 66, - .baseSpAttack = 37, - .baseSpDefense = 50, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_GRASS, TYPE_FAIRY}, - #else - .types = { TYPE_GRASS, TYPE_GRASS}, - #endif - .catchRate = 190, - .expYield = 56, - .evYield_Speed = 1, - .itemRare = ITEM_ABSORB_BULB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_PRANKSTER, ABILITY_INFILTRATOR, ABILITY_CHLOROPHYLL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_WHIMSICOTT] = - { - .baseHP = 60, - .baseAttack = 67, - .baseDefense = 85, - .baseSpeed = 116, - .baseSpAttack = 77, - .baseSpDefense = 75, - #if P_UPDATED_TYPES >= GEN_6 - .types = { TYPE_GRASS, TYPE_FAIRY}, - #else - .types = { TYPE_GRASS, TYPE_GRASS}, - #endif - .catchRate = 75, - .expYield = 168, - .evYield_Speed = 2, - .itemRare = ITEM_ABSORB_BULB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_PRANKSTER, ABILITY_INFILTRATOR, ABILITY_CHLOROPHYLL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_PETILIL] = - { - .baseHP = 45, - .baseAttack = 35, - .baseDefense = 50, - .baseSpeed = 30, - .baseSpAttack = 70, - .baseSpDefense = 50, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 190, - .expYield = 56, - .evYield_SpAttack = 1, - .itemRare = ITEM_ABSORB_BULB, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_OWN_TEMPO, ABILITY_LEAF_GUARD}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_LILLIGANT] = - { - .baseHP = 70, - .baseAttack = 60, - .baseDefense = 75, - .baseSpeed = 90, - .baseSpAttack = 110, - .baseSpDefense = 75, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 75, - .expYield = 168, - .evYield_SpAttack = 2, - .itemRare = ITEM_ABSORB_BULB, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_OWN_TEMPO, ABILITY_LEAF_GUARD}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = TRUE, - }, - - [SPECIES_BASCULIN] = - { - .baseHP = 70, - .baseAttack = 92, - .baseDefense = 65, - .baseSpeed = 98, - .baseSpAttack = 80, - .baseSpDefense = 55, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 25, - .expYield = 161, - .evYield_Speed = 2, - .itemRare = ITEM_DEEP_SEA_TOOTH, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_RECKLESS, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_SANDILE] = - { - .baseHP = 50, - .baseAttack = 72, - .baseDefense = 35, - .baseSpeed = 65, - .baseSpAttack = 35, - .baseSpDefense = 35, - .types = { TYPE_GROUND, TYPE_DARK}, - .catchRate = 180, - .expYield = 58, - .evYield_Attack = 1, - .itemRare = ITEM_BLACK_GLASSES, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_MOXIE, ABILITY_ANGER_POINT}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_KROKOROK] = - { - .baseHP = 60, - .baseAttack = 82, - .baseDefense = 45, - .baseSpeed = 74, - .baseSpAttack = 45, - .baseSpDefense = 45, - .types = { TYPE_GROUND, TYPE_DARK}, - .catchRate = 90, - .expYield = 123, - .evYield_Attack = 2, - .itemRare = ITEM_BLACK_GLASSES, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_MOXIE, ABILITY_ANGER_POINT}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_KROOKODILE] = - { - .baseHP = 95, - .baseAttack = 117, - .baseSpeed = 92, - .baseSpAttack = 65, - .baseSpDefense = 70, - #if P_UPDATED_STATS >= GEN_6 - .baseDefense = 80, - #else - .baseDefense = 70, - #endif - .types = { TYPE_GROUND, TYPE_DARK}, - .catchRate = 45, - .expYield = 234, - .evYield_Attack = 3, - .itemCommon = ITEM_BLACK_GLASSES, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_MOXIE, ABILITY_ANGER_POINT}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_DARUMAKA] = - { - .baseHP = 70, - .baseAttack = 90, - .baseDefense = 45, - .baseSpeed = 50, - .baseSpAttack = 15, - .baseSpDefense = 45, - .types = { TYPE_FIRE, TYPE_FIRE}, - .catchRate = 120, - .expYield = 63, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_HUSTLE, ABILITY_NONE, ABILITY_INNER_FOCUS}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_DARMANITAN] = - { - .baseHP = 105, - .baseAttack = 140, - .baseDefense = 55, - .baseSpeed = 95, - .baseSpAttack = 30, - .baseSpDefense = 55, - .types = { TYPE_FIRE, TYPE_FIRE}, - .catchRate = 60, - .expYield = 168, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_ZEN_MODE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_MARACTUS] = - { - .baseHP = 75, - .baseAttack = 86, - .baseDefense = 67, - .baseSpeed = 60, - .baseSpAttack = 106, - .baseSpDefense = 67, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 255, - .expYield = 161, - .evYield_SpAttack = 2, - .itemRare = ITEM_MIRACLE_SEED, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_WATER_ABSORB, ABILITY_CHLOROPHYLL, ABILITY_STORM_DRAIN}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_DWEBBLE] = - { - .baseHP = 50, - .baseAttack = 65, - .baseDefense = 85, - .baseSpeed = 55, - .baseSpAttack = 35, - .baseSpDefense = 35, - .types = { TYPE_BUG, TYPE_ROCK}, - .catchRate = 190, - .expYield = 65, - .evYield_Defense = 1, - .itemRare = ITEM_HARD_STONE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STURDY, ABILITY_SHELL_ARMOR, ABILITY_WEAK_ARMOR}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_CRUSTLE] = - { - .baseHP = 70, - .baseDefense = 125, - .baseSpeed = 45, - .baseSpAttack = 65, - .baseSpDefense = 75, - #if P_UPDATED_STATS >= GEN_7 - .baseAttack = 105, - #else - .baseAttack = 95, - #endif - .types = { TYPE_BUG, TYPE_ROCK}, - .catchRate = 75, - .expYield = 170, - .evYield_Defense = 2, - .itemRare = ITEM_HARD_STONE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STURDY, ABILITY_SHELL_ARMOR, ABILITY_WEAK_ARMOR}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_SCRAGGY] = - { - .baseHP = 50, - .baseAttack = 75, - .baseDefense = 70, - .baseSpeed = 48, - .baseSpAttack = 35, - .baseSpDefense = 70, - .types = { TYPE_DARK, TYPE_FIGHTING}, - .catchRate = 180, - .expYield = 70, - .evYield_Attack = 1, - .itemRare = ITEM_SHED_SHELL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SHED_SKIN, ABILITY_MOXIE, ABILITY_INTIMIDATE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_SCRAFTY] = - { - .baseHP = 65, - .baseAttack = 90, - .baseDefense = 115, - .baseSpeed = 58, - .baseSpAttack = 45, - .baseSpDefense = 115, - .types = { TYPE_DARK, TYPE_FIGHTING}, - .catchRate = 90, - .expYield = 171, - .evYield_Defense = 1, - .evYield_SpDefense = 1, - .itemRare = ITEM_SHED_SHELL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SHED_SKIN, ABILITY_MOXIE, ABILITY_INTIMIDATE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_SIGILYPH] = - { - .baseHP = 72, - .baseAttack = 58, - .baseDefense = 80, - .baseSpeed = 97, - .baseSpAttack = 103, - .baseSpDefense = 80, - .types = { TYPE_PSYCHIC, TYPE_FLYING}, - .catchRate = 45, - .expYield = 172, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_WONDER_SKIN, ABILITY_MAGIC_GUARD, ABILITY_TINTED_LENS}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_YAMASK] = - { - .baseHP = 38, - .baseAttack = 30, - .baseDefense = 85, - .baseSpeed = 30, - .baseSpAttack = 55, - .baseSpDefense = 65, - .types = { TYPE_GHOST, TYPE_GHOST}, - .catchRate = 190, - .expYield = 61, - .evYield_Defense = 1, - .itemRare = ITEM_SPELL_TAG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_MUMMY, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_COFAGRIGUS] = - { - .baseHP = 58, - .baseAttack = 50, - .baseDefense = 145, - .baseSpeed = 30, - .baseSpAttack = 95, - .baseSpDefense = 105, - .types = { TYPE_GHOST, TYPE_GHOST}, - .catchRate = 90, - .expYield = 169, - .evYield_Defense = 2, - .itemRare = ITEM_SPELL_TAG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_MUMMY, ABILITY_NONE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_TIRTOUGA] = - { - .baseHP = 54, - .baseAttack = 78, - .baseDefense = 103, - .baseSpeed = 22, - .baseSpAttack = 53, - .baseSpDefense = 45, - .types = { TYPE_WATER, TYPE_ROCK}, - .catchRate = 45, - .expYield = 71, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_SOLID_ROCK, ABILITY_STURDY, ABILITY_SWIFT_SWIM}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_CARRACOSTA] = - { - .baseHP = 74, - .baseAttack = 108, - .baseDefense = 133, - .baseSpeed = 32, - .baseSpAttack = 83, - .baseSpDefense = 65, - .types = { TYPE_WATER, TYPE_ROCK}, - .catchRate = 45, - .expYield = 173, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_SOLID_ROCK, ABILITY_STURDY, ABILITY_SWIFT_SWIM}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_ARCHEN] = - { - .baseHP = 55, - .baseAttack = 112, - .baseDefense = 45, - .baseSpeed = 70, - .baseSpAttack = 74, - .baseSpDefense = 45, - .types = { TYPE_ROCK, TYPE_FLYING}, - .catchRate = 45, - .expYield = 71, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_DEFEATIST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_ARCHEOPS] = - { - .baseHP = 75, - .baseAttack = 140, - .baseDefense = 65, - .baseSpeed = 110, - .baseSpAttack = 112, - .baseSpDefense = 65, - .types = { TYPE_ROCK, TYPE_FLYING}, - .catchRate = 45, - .expYield = 177, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_DEFEATIST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_TRUBBISH] = - { - .baseHP = 50, - .baseAttack = 50, - .baseDefense = 62, - .baseSpeed = 65, - .baseSpAttack = 40, - .baseSpDefense = 62, - .types = { TYPE_POISON, TYPE_POISON}, - .catchRate = 190, - .expYield = 66, - .evYield_Speed = 1, - .itemRare = ITEM_SILK_SCARF, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STENCH, ABILITY_STICKY_HOLD, ABILITY_AFTERMATH}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_GARBODOR] = - { - .baseHP = 80, - .baseAttack = 95, - .baseDefense = 82, - .baseSpeed = 75, - .baseSpAttack = 60, - .baseSpDefense = 82, - .types = { TYPE_POISON, TYPE_POISON}, - .catchRate = 60, - .expYield = 166, - .evYield_Attack = 2, - .itemCommon = ITEM_SILK_SCARF, - .itemRare = ITEM_BLACK_SLUDGE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STENCH, ABILITY_WEAK_ARMOR, ABILITY_AFTERMATH}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = TRUE, - }, - - [SPECIES_ZORUA] = - { - .baseHP = 40, - .baseAttack = 65, - .baseDefense = 40, - .baseSpeed = 65, - .baseSpAttack = 80, - .baseSpDefense = 40, - .types = { TYPE_DARK, TYPE_DARK}, - .catchRate = 75, - .expYield = 66, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_ILLUSION, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_ZOROARK] = - { - .baseHP = 60, - .baseAttack = 105, - .baseDefense = 60, - .baseSpeed = 105, - .baseSpAttack = 120, - .baseSpDefense = 60, - .types = { TYPE_DARK, TYPE_DARK}, - .catchRate = 45, - .expYield = 179, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_ILLUSION, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_MINCCINO] = - { - .baseHP = 55, - .baseAttack = 50, - .baseDefense = 40, - .baseSpeed = 75, - .baseSpAttack = 40, - .baseSpDefense = 40, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 255, - .expYield = 60, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_CUTE_CHARM, ABILITY_TECHNICIAN, ABILITY_SKILL_LINK}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_CINCCINO] = - { - .baseHP = 75, - .baseAttack = 95, - .baseDefense = 60, - .baseSpeed = 115, - .baseSpAttack = 65, - .baseSpDefense = 60, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 60, - .expYield = 165, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_CUTE_CHARM, ABILITY_TECHNICIAN, ABILITY_SKILL_LINK}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = TRUE, - }, - - [SPECIES_GOTHITA] = - { - .baseHP = 45, - .baseAttack = 30, - .baseDefense = 50, - .baseSpeed = 45, - .baseSpAttack = 55, - .baseSpDefense = 65, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 200, - .expYield = 58, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_FRISK, ABILITY_COMPETITIVE, ABILITY_SHADOW_TAG}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_GOTHORITA] = - { - .baseHP = 60, - .baseAttack = 45, - .baseDefense = 70, - .baseSpeed = 55, - .baseSpAttack = 75, - .baseSpDefense = 85, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 100, - .expYield = 137, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_FRISK, ABILITY_COMPETITIVE, ABILITY_SHADOW_TAG}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_GOTHITELLE] = - { - .baseHP = 70, - .baseAttack = 55, - .baseDefense = 95, - .baseSpeed = 65, - .baseSpAttack = 95, - .baseSpDefense = 110, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 50, - .expYield = 221, - .evYield_SpDefense = 3, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_FRISK, ABILITY_COMPETITIVE, ABILITY_SHADOW_TAG}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_SOLOSIS] = - { - .baseHP = 45, - .baseAttack = 30, - .baseDefense = 40, - .baseSpeed = 20, - .baseSpAttack = 105, - .baseSpDefense = 50, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 200, - .expYield = 58, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_OVERCOAT, ABILITY_MAGIC_GUARD, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = TRUE, - }, - - [SPECIES_DUOSION] = - { - .baseHP = 65, - .baseAttack = 40, - .baseDefense = 50, - .baseSpeed = 30, - .baseSpAttack = 125, - .baseSpDefense = 60, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 100, - .expYield = 130, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_OVERCOAT, ABILITY_MAGIC_GUARD, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_REUNICLUS] = - { - .baseHP = 110, - .baseAttack = 65, - .baseDefense = 75, - .baseSpeed = 30, - .baseSpAttack = 125, - .baseSpDefense = 85, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 50, - .expYield = 221, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_OVERCOAT, ABILITY_MAGIC_GUARD, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_DUCKLETT] = - { - .baseHP = 62, - .baseAttack = 44, - .baseDefense = 50, - .baseSpeed = 55, - .baseSpAttack = 44, - .baseSpDefense = 50, - .types = { TYPE_WATER, TYPE_FLYING}, - .catchRate = 190, - .expYield = 61, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_BIG_PECKS, ABILITY_HYDRATION}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SWANNA] = - { - .baseHP = 75, - .baseAttack = 87, - .baseDefense = 63, - .baseSpeed = 98, - .baseSpAttack = 87, - .baseSpDefense = 63, - .types = { TYPE_WATER, TYPE_FLYING}, - .catchRate = 45, - .expYield = 166, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_BIG_PECKS, ABILITY_HYDRATION}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_VANILLITE] = - { - .baseHP = 36, - .baseAttack = 50, - .baseDefense = 50, - .baseSpeed = 44, - .baseSpAttack = 65, - .baseSpDefense = 60, - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 255, - .expYield = 61, - .evYield_SpAttack = 1, - .itemRare = ITEM_NEVER_MELT_ICE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_ICE_BODY, ABILITY_SNOW_CLOAK, ABILITY_WEAK_ARMOR}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_VANILLISH] = - { - .baseHP = 51, - .baseAttack = 65, - .baseDefense = 65, - .baseSpeed = 59, - .baseSpAttack = 80, - .baseSpDefense = 75, - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 120, - .expYield = 138, - .evYield_SpAttack = 2, - .itemRare = ITEM_NEVER_MELT_ICE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_ICE_BODY, ABILITY_SNOW_CLOAK, ABILITY_WEAK_ARMOR}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_VANILLUXE] = - { - .baseHP = 71, - .baseAttack = 95, - .baseDefense = 85, - .baseSpeed = 79, - .baseSpAttack = 110, - .baseSpDefense = 95, - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 45, - .expYield = 241, - .evYield_SpAttack = 3, - .itemCommon = ITEM_NEVER_MELT_ICE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_ICE_BODY, ABILITY_SNOW_WARNING, ABILITY_WEAK_ARMOR}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_DEERLING] = DEERLING_SPECIES_INFO(BODY_COLOR_PINK), - - [SPECIES_SAWSBUCK] = SAWSBUCK_SPECIES_INFO, - - [SPECIES_EMOLGA] = - { - .baseHP = 55, - .baseAttack = 75, - .baseDefense = 60, - .baseSpeed = 103, - .baseSpAttack = 75, - .baseSpDefense = 60, - .types = { TYPE_ELECTRIC, TYPE_FLYING}, - .catchRate = 200, - .expYield = 150, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_STATIC, ABILITY_NONE, ABILITY_MOTOR_DRIVE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_KARRABLAST] = - { - .baseHP = 50, - .baseAttack = 75, - .baseDefense = 45, - .baseSpeed = 60, - .baseSpAttack = 40, - .baseSpDefense = 45, - .types = { TYPE_BUG, TYPE_BUG}, - .catchRate = 200, - .expYield = 63, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_SHED_SKIN, ABILITY_NO_GUARD}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_ESCAVALIER] = - { - .baseHP = 70, - .baseAttack = 135, - .baseDefense = 105, - .baseSpeed = 20, - .baseSpAttack = 60, - .baseSpDefense = 105, - .types = { TYPE_BUG, TYPE_STEEL}, - .catchRate = 75, - .expYield = 173, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_SHELL_ARMOR, ABILITY_OVERCOAT}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_FOONGUS] = - { - .baseHP = 69, - .baseAttack = 55, - .baseDefense = 45, - .baseSpeed = 15, - .baseSpAttack = 55, - .baseSpDefense = 55, - .types = { TYPE_GRASS, TYPE_POISON}, - .catchRate = 190, - .expYield = 59, - .evYield_HP = 1, - .itemCommon = ITEM_TINY_MUSHROOM, - .itemRare = ITEM_BIG_MUSHROOM, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_EFFECT_SPORE, ABILITY_NONE, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_AMOONGUSS] = - { - .baseHP = 114, - .baseAttack = 85, - .baseDefense = 70, - .baseSpeed = 30, - .baseSpAttack = 85, - .baseSpDefense = 80, - .types = { TYPE_GRASS, TYPE_POISON}, - .catchRate = 75, - .expYield = 162, - .evYield_HP = 2, - .itemCommon = ITEM_TINY_MUSHROOM, - .itemRare = ITEM_BIG_MUSHROOM, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_EFFECT_SPORE, ABILITY_NONE, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = TRUE, - }, - - [SPECIES_FRILLISH] = - { - .baseHP = 55, - .baseAttack = 40, - .baseDefense = 50, - .baseSpeed = 40, - .baseSpAttack = 65, - .baseSpDefense = 85, - .types = { TYPE_WATER, TYPE_GHOST}, - .catchRate = 190, - .expYield = 67, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_WATER_ABSORB, ABILITY_CURSED_BODY, ABILITY_DAMP}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_JELLICENT] = - { - .baseHP = 100, - .baseAttack = 60, - .baseDefense = 70, - .baseSpeed = 60, - .baseSpAttack = 85, - .baseSpDefense = 105, - .types = { TYPE_WATER, TYPE_GHOST}, - .catchRate = 60, - .expYield = 168, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_WATER_ABSORB, ABILITY_CURSED_BODY, ABILITY_DAMP}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_ALOMOMOLA] = - { - .baseHP = 165, - .baseAttack = 75, - .baseDefense = 80, - .baseSpeed = 65, - .baseSpAttack = 40, - .baseSpDefense = 45, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 75, - .expYield = 165, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_HEALER, ABILITY_HYDRATION, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_JOLTIK] = - { - .baseHP = 50, - .baseAttack = 47, - .baseDefense = 50, - .baseSpeed = 65, - .baseSpAttack = 57, - .baseSpDefense = 50, - .types = { TYPE_BUG, TYPE_ELECTRIC}, - .catchRate = 190, - .expYield = 64, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_COMPOUND_EYES, ABILITY_UNNERVE, ABILITY_SWARM}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_GALVANTULA] = - { - .baseHP = 70, - .baseAttack = 77, - .baseDefense = 60, - .baseSpeed = 108, - .baseSpAttack = 97, - .baseSpDefense = 60, - .types = { TYPE_BUG, TYPE_ELECTRIC}, - .catchRate = 75, - .expYield = 165, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_COMPOUND_EYES, ABILITY_UNNERVE, ABILITY_SWARM}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_FERROSEED] = - { - .baseHP = 44, - .baseAttack = 50, - .baseDefense = 91, - .baseSpeed = 10, - .baseSpAttack = 24, - .baseSpDefense = 86, - .types = { TYPE_GRASS, TYPE_STEEL}, - .catchRate = 255, - .expYield = 61, - .evYield_Defense = 1, - .itemRare = ITEM_STICKY_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_IRON_BARBS, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_FERROTHORN] = - { - .baseHP = 74, - .baseAttack = 94, - .baseDefense = 131, - .baseSpeed = 20, - .baseSpAttack = 54, - .baseSpDefense = 116, - .types = { TYPE_GRASS, TYPE_STEEL}, - .catchRate = 90, - .expYield = 171, - .evYield_Defense = 2, - .itemRare = ITEM_STICKY_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_IRON_BARBS, ABILITY_NONE, ABILITY_ANTICIPATION}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_KLINK] = - { - .baseHP = 40, - .baseAttack = 55, - .baseDefense = 70, - .baseSpeed = 30, - .baseSpAttack = 45, - .baseSpDefense = 60, - .types = { TYPE_STEEL, TYPE_STEEL}, - .catchRate = 130, - .expYield = 60, - .evYield_Defense = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_PLUS, ABILITY_MINUS, ABILITY_CLEAR_BODY}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = TRUE, - }, - - [SPECIES_KLANG] = - { - .baseHP = 60, - .baseAttack = 80, - .baseDefense = 95, - .baseSpeed = 50, - .baseSpAttack = 70, - .baseSpDefense = 85, - .types = { TYPE_STEEL, TYPE_STEEL}, - .catchRate = 60, - .expYield = 154, - .evYield_Defense = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_PLUS, ABILITY_MINUS, ABILITY_CLEAR_BODY}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = TRUE, - }, - - [SPECIES_KLINKLANG] = - { - .baseHP = 60, - .baseAttack = 100, - .baseDefense = 115, - .baseSpeed = 90, - .baseSpAttack = 70, - .baseSpDefense = 85, - .types = { TYPE_STEEL, TYPE_STEEL}, - .catchRate = 30, - .expYield = 234, - .evYield_Defense = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_PLUS, ABILITY_MINUS, ABILITY_CLEAR_BODY}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = TRUE, - }, - - [SPECIES_TYNAMO] = - { - .baseHP = 35, - .baseAttack = 55, - .baseDefense = 40, - .baseSpeed = 60, - .baseSpAttack = 45, - .baseSpDefense = 40, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 190, - .expYield = 55, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_EELEKTRIK] = - { - .baseHP = 65, - .baseAttack = 85, - .baseDefense = 70, - .baseSpeed = 40, - .baseSpAttack = 75, - .baseSpDefense = 70, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 60, - .expYield = 142, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_EELEKTROSS] = - { - .baseHP = 85, - .baseAttack = 115, - .baseDefense = 80, - .baseSpeed = 50, - .baseSpAttack = 105, - .baseSpDefense = 80, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 30, - .expYield = 232, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_ELGYEM] = - { - .baseHP = 55, - .baseAttack = 55, - .baseDefense = 55, - .baseSpeed = 30, - .baseSpAttack = 85, - .baseSpDefense = 55, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, + .baseAttack = 1, + .baseDefense = 1, + .baseSpeed = 1, + .baseSpAttack = 1, + .baseSpDefense = 1, + .types = { TYPE_MYSTERY, TYPE_MYSTERY }, .catchRate = 255, .expYield = 67, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_TELEPATHY, ABILITY_SYNCHRONIZE, ABILITY_ANALYTIC}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_BEHEEYEM] = - { - .baseHP = 75, - .baseAttack = 75, - .baseDefense = 75, - .baseSpeed = 40, - .baseSpAttack = 125, - .baseSpDefense = 95, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 90, - .expYield = 170, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_TELEPATHY, ABILITY_SYNCHRONIZE, ABILITY_ANALYTIC}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_LITWICK] = - { - .baseHP = 50, - .baseAttack = 30, - .baseDefense = 55, - .baseSpeed = 20, - .baseSpAttack = 65, - .baseSpDefense = 55, - .types = { TYPE_GHOST, TYPE_FIRE}, - .catchRate = 190, - .expYield = 55, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - #if P_UPDATED_ABILITIES >= GEN_6 - .abilities = {ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_INFILTRATOR}, - #else - .abilities = {ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_SHADOW_TAG}, - #endif - .bodyColor = BODY_COLOR_WHITE, - .noFlip = TRUE, - }, - - [SPECIES_LAMPENT] = - { - .baseHP = 60, - .baseAttack = 40, - .baseDefense = 60, - .baseSpeed = 55, - .baseSpAttack = 95, - .baseSpDefense = 60, - .types = { TYPE_GHOST, TYPE_FIRE}, - .catchRate = 90, - .expYield = 130, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - #if P_UPDATED_ABILITIES >= GEN_6 - .abilities = {ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_INFILTRATOR}, - #else - .abilities = {ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_SHADOW_TAG}, - #endif - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_CHANDELURE] = - { - .baseHP = 60, - .baseAttack = 55, - .baseDefense = 90, - .baseSpeed = 80, - .baseSpAttack = 145, - .baseSpDefense = 90, - .types = { TYPE_GHOST, TYPE_FIRE}, - .catchRate = 45, - .expYield = 234, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - #if P_UPDATED_ABILITIES >= GEN_6 - .abilities = {ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_INFILTRATOR}, - #else - .abilities = {ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_SHADOW_TAG}, - #endif - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_AXEW] = - { - .baseHP = 46, - .baseAttack = 87, - .baseDefense = 60, - .baseSpeed = 57, - .baseSpAttack = 30, - .baseSpDefense = 40, - .types = { TYPE_DRAGON, TYPE_DRAGON}, - .catchRate = 75, - .expYield = 64, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_RIVALRY, ABILITY_MOLD_BREAKER, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_FRAXURE] = - { - .baseHP = 66, - .baseAttack = 117, - .baseDefense = 70, - .baseSpeed = 67, - .baseSpAttack = 40, - .baseSpDefense = 50, - .types = { TYPE_DRAGON, TYPE_DRAGON}, - .catchRate = 60, - .expYield = 144, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_RIVALRY, ABILITY_MOLD_BREAKER, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_HAXORUS] = - { - .baseHP = 76, - .baseAttack = 147, - .baseDefense = 90, - .baseSpeed = 97, - .baseSpAttack = 60, - .baseSpDefense = 70, - .types = { TYPE_DRAGON, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 243, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_RIVALRY, ABILITY_MOLD_BREAKER, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_CUBCHOO] = - { - .baseHP = 55, - .baseAttack = 70, - .baseDefense = 40, - .baseSpeed = 40, - .baseSpAttack = 60, - .baseSpDefense = 40, - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 120, - .expYield = 61, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SNOW_CLOAK, ABILITY_SLUSH_RUSH, ABILITY_RATTLED}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_BEARTIC] = - { - .baseHP = 95, - .baseDefense = 80, - .baseSpeed = 50, - .baseSpAttack = 70, - .baseSpDefense = 80, - #if P_UPDATED_STATS >= GEN_7 - .baseAttack = 130, - #else - .baseAttack = 110, - #endif - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 60, - .expYield = 177, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SNOW_CLOAK, ABILITY_SLUSH_RUSH, ABILITY_SWIFT_SWIM}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_CRYOGONAL] = - { - .baseAttack = 50, - .baseSpeed = 105, - .baseSpAttack = 95, - .baseSpDefense = 135, - #if P_UPDATED_STATS >= GEN_7 - .baseHP = 80, - .baseDefense = 50, - #else - .baseHP = 70, - .baseDefense = 30, - #endif - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 25, - .expYield = 180, - .evYield_SpDefense = 2, - .itemRare = ITEM_NEVER_MELT_ICE, - .genderRatio = MON_GENDERLESS, - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SHELMET] = - { - .baseHP = 50, - .baseAttack = 40, - .baseDefense = 85, - .baseSpeed = 25, - .baseSpAttack = 40, - .baseSpDefense = 65, - .types = { TYPE_BUG, TYPE_BUG}, - .catchRate = 200, - .expYield = 61, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_HYDRATION, ABILITY_SHELL_ARMOR, ABILITY_OVERCOAT}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_ACCELGOR] = - { - .baseHP = 80, - .baseAttack = 70, - .baseDefense = 40, - .baseSpeed = 145, - .baseSpAttack = 100, - .baseSpDefense = 60, - .types = { TYPE_BUG, TYPE_BUG}, - .catchRate = 75, - .expYield = 173, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_HYDRATION, ABILITY_STICKY_HOLD, ABILITY_UNBURDEN}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_STUNFISK] = - { - .baseHP = 109, - .baseAttack = 66, - .baseDefense = 84, - .baseSpeed = 32, - .baseSpAttack = 81, - .baseSpDefense = 99, - .types = { TYPE_GROUND, TYPE_ELECTRIC}, - .catchRate = 75, - .expYield = 165, - .evYield_HP = 2, - .itemRare = ITEM_SOFT_SAND, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 70, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_STATIC, ABILITY_LIMBER, ABILITY_SAND_VEIL}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_MIENFOO] = - { - .baseHP = 45, - .baseAttack = 85, - .baseDefense = 50, - .baseSpeed = 65, - .baseSpAttack = 55, - .baseSpDefense = 50, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 180, - .expYield = 70, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_INNER_FOCUS, ABILITY_REGENERATOR, ABILITY_RECKLESS}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_MIENSHAO] = - { - .baseHP = 65, - .baseAttack = 125, - .baseDefense = 60, - .baseSpeed = 105, - .baseSpAttack = 95, - .baseSpDefense = 60, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 179, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_INNER_FOCUS, ABILITY_REGENERATOR, ABILITY_RECKLESS}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_DRUDDIGON] = - { - .baseHP = 77, - .baseAttack = 120, - .baseDefense = 90, - .baseSpeed = 48, - .baseSpAttack = 60, - .baseSpDefense = 90, - .types = { TYPE_DRAGON, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 170, - .evYield_Attack = 2, - .itemRare = ITEM_DRAGON_FANG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_ROUGH_SKIN, ABILITY_SHEER_FORCE, ABILITY_MOLD_BREAKER}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_GOLETT] = - { - .baseHP = 59, - .baseAttack = 74, - .baseDefense = 50, - .baseSpeed = 35, - .baseSpAttack = 35, - .baseSpDefense = 50, - .types = { TYPE_GROUND, TYPE_GHOST}, - .catchRate = 190, - .expYield = 61, - .evYield_Attack = 1, - .itemRare = ITEM_LIGHT_CLAY, - .genderRatio = MON_GENDERLESS, - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_IRON_FIST, ABILITY_KLUTZ, ABILITY_NO_GUARD}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = TRUE, - }, - - [SPECIES_GOLURK] = - { - .baseHP = 89, - .baseAttack = 124, - .baseDefense = 80, - .baseSpeed = 55, - .baseSpAttack = 55, - .baseSpDefense = 80, - .types = { TYPE_GROUND, TYPE_GHOST}, - .catchRate = 90, - .expYield = 169, - .evYield_Attack = 2, - .itemRare = ITEM_LIGHT_CLAY, - .genderRatio = MON_GENDERLESS, - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_IRON_FIST, ABILITY_KLUTZ, ABILITY_NO_GUARD}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = TRUE, - }, - - [SPECIES_PAWNIARD] = - { - .baseHP = 45, - .baseAttack = 85, - .baseDefense = 70, - .baseSpeed = 60, - .baseSpAttack = 40, - .baseSpDefense = 40, - .types = { TYPE_DARK, TYPE_STEEL}, - .catchRate = 120, - .expYield = 68, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_DEFIANT, ABILITY_INNER_FOCUS, ABILITY_PRESSURE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_BISHARP] = - { - .baseHP = 65, - .baseAttack = 125, - .baseDefense = 100, - .baseSpeed = 70, - .baseSpAttack = 60, - .baseSpDefense = 70, - .types = { TYPE_DARK, TYPE_STEEL}, - .catchRate = 45, - .expYield = 172, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_DEFIANT, ABILITY_INNER_FOCUS, ABILITY_PRESSURE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_BOUFFALANT] = - { - .baseHP = 95, - .baseAttack = 110, - .baseDefense = 95, - .baseSpeed = 55, - .baseSpAttack = 40, - .baseSpDefense = 95, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 45, - .expYield = 172, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RECKLESS, ABILITY_SAP_SIPPER, ABILITY_SOUNDPROOF}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_RUFFLET] = - { - .baseHP = 70, - .baseAttack = 83, - .baseDefense = 50, - .baseSpeed = 60, - .baseSpAttack = 37, - .baseSpDefense = 50, - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 190, - .expYield = 70, - .evYield_Attack = 1, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_SHEER_FORCE, ABILITY_HUSTLE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_BRAVIARY] = - { - .baseHP = 100, - .baseAttack = 123, - .baseDefense = 75, - .baseSpeed = 80, - .baseSpAttack = 57, - .baseSpDefense = 75, - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 60, - .expYield = 179, - .evYield_Attack = 2, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_SHEER_FORCE, ABILITY_DEFIANT}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_VULLABY] = - { - .baseHP = 70, - .baseAttack = 55, - .baseDefense = 75, - .baseSpeed = 60, - .baseSpAttack = 45, - .baseSpDefense = 65, - .types = { TYPE_DARK, TYPE_FLYING}, - .catchRate = 190, - .expYield = 74, - .evYield_Defense = 1, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_BIG_PECKS, ABILITY_OVERCOAT, ABILITY_WEAK_ARMOR}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_MANDIBUZZ] = - { - .baseHP = 110, - .baseAttack = 65, - .baseDefense = 105, - .baseSpeed = 80, - .baseSpAttack = 55, - .baseSpDefense = 95, - .types = { TYPE_DARK, TYPE_FLYING}, - .catchRate = 60, - .expYield = 179, - .evYield_SpAttack = 2, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_BIG_PECKS, ABILITY_OVERCOAT, ABILITY_WEAK_ARMOR}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_HEATMOR] = - { - .baseHP = 85, - .baseAttack = 97, - .baseDefense = 66, - .baseSpeed = 65, - .baseSpAttack = 105, - .baseSpDefense = 66, - .types = { TYPE_FIRE, TYPE_FIRE}, - .catchRate = 90, - .expYield = 169, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_GLUTTONY, ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_DURANT] = - { - .baseHP = 58, - .baseAttack = 109, - .baseDefense = 112, - .baseSpeed = 109, - .baseSpAttack = 48, - .baseSpDefense = 48, - .types = { TYPE_BUG, TYPE_STEEL}, - .catchRate = 90, - .expYield = 169, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_HUSTLE, ABILITY_TRUANT}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_DEINO] = - { - .baseHP = 52, - .baseAttack = 65, - .baseDefense = 50, - .baseSpeed = 38, - .baseSpAttack = 45, - .baseSpDefense = 50, - .types = { TYPE_DARK, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 60, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_HUSTLE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_ZWEILOUS] = - { - .baseHP = 72, - .baseAttack = 85, - .baseDefense = 70, - .baseSpeed = 58, - .baseSpAttack = 65, - .baseSpDefense = 70, - .types = { TYPE_DARK, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 147, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_HUSTLE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_HYDREIGON] = - { - .baseHP = 92, - .baseAttack = 105, - .baseDefense = 90, - .baseSpeed = 98, - .baseSpAttack = 125, - .baseSpDefense = 90, - .types = { TYPE_DARK, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 270, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_LARVESTA] = - { - .baseHP = 55, - .baseAttack = 85, - .baseDefense = 55, - .baseSpeed = 60, - .baseSpAttack = 50, - .baseSpDefense = 55, - .types = { TYPE_BUG, TYPE_FIRE}, - .catchRate = 45, - .expYield = 72, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_SWARM}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_VOLCARONA] = - { - .baseHP = 85, - .baseAttack = 60, - .baseDefense = 65, - .baseSpeed = 100, - .baseSpAttack = 135, - .baseSpDefense = 105, - .types = { TYPE_BUG, TYPE_FIRE}, - .catchRate = 15, - .expYield = 248, - .evYield_SpAttack = 3, - .itemCommon = ITEM_SILVER_POWDER, - .itemRare = ITEM_SILVER_POWDER, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_SWARM}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_COBALION] = - { - .baseHP = 91, - .baseAttack = 90, - .baseDefense = 129, - .baseSpeed = 108, - .baseSpAttack = 90, - .baseSpDefense = 72, - .types = { TYPE_STEEL, TYPE_FIGHTING}, - .catchRate = 3, - .expYield = 261, - .evYield_Defense = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 80, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_JUSTIFIED, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_TERRAKION] = - { - .baseHP = 91, - .baseAttack = 129, - .baseDefense = 90, - .baseSpeed = 108, - .baseSpAttack = 72, - .baseSpDefense = 90, - .types = { TYPE_ROCK, TYPE_FIGHTING}, - .catchRate = 3, - .expYield = 261, - .evYield_Attack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 80, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_JUSTIFIED, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_VIRIZION] = - { - .baseHP = 91, - .baseAttack = 90, - .baseDefense = 72, - .baseSpeed = 108, - .baseSpAttack = 90, - .baseSpDefense = 129, - .types = { TYPE_GRASS, TYPE_FIGHTING}, - .catchRate = 3, - .expYield = 261, - .evYield_SpDefense = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 80, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_JUSTIFIED, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_TORNADUS] = - { - .baseHP = 79, - .baseAttack = 115, - .baseDefense = 70, - .baseSpeed = 111, - .baseSpAttack = 125, - .baseSpDefense = 80, - .types = { TYPE_FLYING, TYPE_FLYING}, - .catchRate = 3, - .expYield = 261, - .evYield_Attack = 3, - .genderRatio = MON_MALE, - .eggCycles = 120, - .friendship = 90, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRANKSTER, ABILITY_NONE, ABILITY_DEFIANT}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_THUNDURUS] = - { - .baseHP = 79, - .baseAttack = 115, - .baseDefense = 70, - .baseSpeed = 111, - .baseSpAttack = 125, - .baseSpDefense = 80, - .types = { TYPE_ELECTRIC, TYPE_FLYING}, - .catchRate = 3, - .expYield = 261, - .evYield_Attack = 3, - .genderRatio = MON_MALE, - .eggCycles = 120, - .friendship = 90, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRANKSTER, ABILITY_NONE, ABILITY_DEFIANT}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_RESHIRAM] = - { - .baseHP = 100, - .baseAttack = 120, - .baseDefense = 100, - .baseSpeed = 90, - .baseSpAttack = 150, - .baseSpDefense = 120, - .types = { TYPE_DRAGON, TYPE_FIRE}, - .catchRate = 3, - .expYield = 306, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_TURBOBLAZE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_ZEKROM] = - { - .baseHP = 100, - .baseAttack = 150, - .baseDefense = 120, - .baseSpeed = 90, - .baseSpAttack = 120, - .baseSpDefense = 100, - .types = { TYPE_DRAGON, TYPE_ELECTRIC}, - .catchRate = 3, - .expYield = 306, - .evYield_Attack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_TERAVOLT, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_LANDORUS] = - { - .baseHP = 89, - .baseAttack = 125, - .baseDefense = 90, - .baseSpeed = 101, - .baseSpAttack = 115, - .baseSpDefense = 80, - .types = { TYPE_GROUND, TYPE_FLYING}, - .catchRate = 3, - .expYield = 270, - .evYield_SpAttack = 3, - .genderRatio = MON_MALE, - .eggCycles = 120, - .friendship = 90, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_SAND_FORCE, ABILITY_NONE, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_KYUREM] = - { - .baseHP = 125, - .baseAttack = 130, - .baseDefense = 90, - .baseSpeed = 95, - .baseSpAttack = 130, - .baseSpDefense = 90, - .types = { TYPE_DRAGON, TYPE_ICE}, - .catchRate = 3, - .expYield = 297, - .evYield_HP = 1, - .evYield_Attack = 1, - .evYield_SpAttack = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = TRUE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_KELDEO] = - { - .baseHP = 91, - .baseAttack = 72, - .baseDefense = 90, - .baseSpeed = 108, - .baseSpAttack = 129, - .baseSpDefense = 90, - .types = { TYPE_WATER, TYPE_FIGHTING}, - .catchRate = 3, - .expYield = 261, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 80, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_JUSTIFIED, ABILITY_NONE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - - [SPECIES_MELOETTA] = - { - .baseHP = 100, - .baseAttack = 77, - .baseDefense = 77, - .baseSpeed = 90, - .baseSpAttack = 128, - .baseSpDefense = 128, - .types = { TYPE_NORMAL, TYPE_PSYCHIC}, - .catchRate = 3, - .expYield = 270, - .evYield_Speed = 1, - .evYield_SpAttack = 1, - .evYield_SpDefense = 1, - .itemCommon = ITEM_STAR_PIECE, - .itemRare = ITEM_STAR_PIECE, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 100, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_SERENE_GRACE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = TRUE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - - [SPECIES_GENESECT] = GENESECT_SPECIES_INFO, -#endif - -#if P_GEN_6_POKEMON == TRUE - [SPECIES_CHESPIN] = - { - .baseHP = 56, - .baseAttack = 61, - .baseDefense = 65, - .baseSpeed = 38, - .baseSpAttack = 48, - .baseSpDefense = 45, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 45, - .expYield = 63, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_BULLETPROOF}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_QUILLADIN] = - { - .baseHP = 61, - .baseAttack = 78, - .baseDefense = 95, - .baseSpeed = 57, - .baseSpAttack = 56, - .baseSpDefense = 58, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 45, - .expYield = 142, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_BULLETPROOF}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_CHESNAUGHT] = - { - .baseHP = 88, - .baseAttack = 107, - .baseDefense = 122, - .baseSpeed = 64, - .baseSpAttack = 74, - .baseSpDefense = 75, - .types = { TYPE_GRASS, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 239, - .evYield_Defense = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_BULLETPROOF}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_FENNEKIN] = - { - .baseHP = 40, - .baseAttack = 45, - .baseDefense = 40, - .baseSpeed = 60, - .baseSpAttack = 62, - .baseSpDefense = 60, - .types = { TYPE_FIRE, TYPE_FIRE}, - .catchRate = 45, - .expYield = 61, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_MAGICIAN}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_BRAIXEN] = - { - .baseHP = 59, - .baseAttack = 59, - .baseDefense = 58, - .baseSpeed = 73, - .baseSpAttack = 90, - .baseSpDefense = 70, - .types = { TYPE_FIRE, TYPE_FIRE}, - .catchRate = 45, - .expYield = 143, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_MAGICIAN}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_DELPHOX] = - { - .baseHP = 75, - .baseAttack = 69, - .baseDefense = 72, - .baseSpeed = 104, - .baseSpAttack = 114, - .baseSpDefense = 100, - .types = { TYPE_FIRE, TYPE_PSYCHIC}, - .catchRate = 45, - .expYield = 240, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_MAGICIAN}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_FROAKIE] = - { - .baseHP = 41, - .baseAttack = 56, - .baseDefense = 40, - .baseSpeed = 71, - .baseSpAttack = 62, - .baseSpDefense = 44, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 45, - .expYield = 63, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_PROTEAN}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_FROGADIER] = - { - .baseHP = 54, - .baseAttack = 63, - .baseDefense = 52, - .baseSpeed = 97, - .baseSpAttack = 83, - .baseSpDefense = 56, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 45, - .expYield = 142, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_PROTEAN}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_GRENINJA] = - { - .baseHP = 72, - .baseAttack = 95, - .baseDefense = 67, - .baseSpeed = 122, - .baseSpAttack = 103, - .baseSpDefense = 71, - .types = { TYPE_WATER, TYPE_DARK}, - .catchRate = 45, - .expYield = 239, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_PROTEAN}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = TRUE, - }, - - [SPECIES_BUNNELBY] = - { - .baseHP = 38, - .baseAttack = 36, - .baseDefense = 38, - .baseSpeed = 57, - .baseSpAttack = 32, - .baseSpDefense = 36, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 255, - .expYield = 47, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_PICKUP, ABILITY_CHEEK_POUCH, ABILITY_HUGE_POWER}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_DIGGERSBY] = - { - .baseHP = 85, - .baseAttack = 56, - .baseDefense = 77, - .baseSpeed = 78, - .baseSpAttack = 50, - .baseSpDefense = 77, - .types = { TYPE_NORMAL, TYPE_GROUND}, - .catchRate = 127, - .expYield = 148, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_PICKUP, ABILITY_CHEEK_POUCH, ABILITY_HUGE_POWER}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_FLETCHLING] = - { - .baseHP = 45, - .baseAttack = 50, - .baseDefense = 43, - .baseSpeed = 62, - .baseSpAttack = 40, - .baseSpDefense = 38, - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 255, - .expYield = 56, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_BIG_PECKS, ABILITY_NONE, ABILITY_GALE_WINGS}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_FLETCHINDER] = - { - .baseHP = 62, - .baseAttack = 73, - .baseDefense = 55, - .baseSpeed = 84, - .baseSpAttack = 56, - .baseSpDefense = 52, - .types = { TYPE_FIRE, TYPE_FLYING}, - .catchRate = 120, - .expYield = 134, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_GALE_WINGS}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_TALONFLAME] = - { - .baseHP = 78, - .baseAttack = 81, - .baseDefense = 71, - .baseSpeed = 126, - .baseSpAttack = 74, - .baseSpDefense = 69, - .types = { TYPE_FIRE, TYPE_FLYING}, - .catchRate = 45, - .expYield = 175, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_GALE_WINGS}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_SCATTERBUG] = - { - .baseHP = 38, - .baseAttack = 35, - .baseDefense = 40, - .baseSpeed = 35, - .baseSpAttack = 27, - .baseSpDefense = 25, - .types = { TYPE_BUG, TYPE_BUG}, - .catchRate = 255, - .expYield = 40, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SHIELD_DUST, ABILITY_COMPOUND_EYES, ABILITY_FRIEND_GUARD}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_SPEWPA] = - { - .baseHP = 45, - .baseAttack = 22, - .baseDefense = 60, - .baseSpeed = 29, - .baseSpAttack = 27, - .baseSpDefense = 30, - .types = { TYPE_BUG, TYPE_BUG}, - .catchRate = 120, - .expYield = 75, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_FRIEND_GUARD}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_VIVILLON] = VIVILLON_SPECIES_INFO(BODY_COLOR_WHITE), - - [SPECIES_LITLEO] = - { - .baseHP = 62, - .baseAttack = 50, - .baseDefense = 58, - .baseSpeed = 72, - .baseSpAttack = 73, - .baseSpDefense = 54, - .types = { TYPE_FIRE, TYPE_NORMAL}, - .catchRate = 220, - .expYield = 74, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(87.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RIVALRY, ABILITY_UNNERVE, ABILITY_MOXIE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_PYROAR] = - { - .baseHP = 86, - .baseAttack = 68, - .baseDefense = 72, - .baseSpeed = 106, - .baseSpAttack = 109, - .baseSpDefense = 66, - .types = { TYPE_FIRE, TYPE_NORMAL}, - .catchRate = 65, - .expYield = 177, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(87.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RIVALRY, ABILITY_UNNERVE, ABILITY_MOXIE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_FLABEBE] = FLABEBE_SPECIES_INFO, - - [SPECIES_FLOETTE] = FLOETTE_SPECIES_INFO, - - [SPECIES_FLORGES] = FLORGES_SPECIES_INFO, - - [SPECIES_SKIDDO] = - { - .baseHP = 66, - .baseAttack = 65, - .baseDefense = 48, - .baseSpeed = 52, - .baseSpAttack = 62, - .baseSpDefense = 57, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 200, - .expYield = 70, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SAP_SIPPER, ABILITY_NONE, ABILITY_GRASS_PELT}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_GOGOAT] = - { - .baseHP = 123, - .baseAttack = 100, - .baseDefense = 62, - .baseSpeed = 68, - .baseSpAttack = 97, - .baseSpDefense = 81, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 45, - .expYield = 186, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SAP_SIPPER, ABILITY_NONE, ABILITY_GRASS_PELT}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_PANCHAM] = - { - .baseHP = 67, - .baseAttack = 82, - .baseDefense = 62, - .baseSpeed = 43, - .baseSpAttack = 46, - .baseSpDefense = 48, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 220, - .expYield = 70, - .evYield_Attack = 1, - .itemRare = ITEM_MENTAL_HERB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_IRON_FIST, ABILITY_MOLD_BREAKER, ABILITY_SCRAPPY}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_PANGORO] = - { - .baseHP = 95, - .baseAttack = 124, - .baseDefense = 78, - .baseSpeed = 58, - .baseSpAttack = 69, - .baseSpDefense = 71, - .types = { TYPE_FIGHTING, TYPE_DARK}, - .catchRate = 65, - .expYield = 173, - .evYield_Attack = 2, - .itemRare = ITEM_MENTAL_HERB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_IRON_FIST, ABILITY_MOLD_BREAKER, ABILITY_SCRAPPY}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_FURFROU] = FURFROU_SPECIES_INFO(FLIP), - - [SPECIES_ESPURR] = - { - .baseHP = 62, - .baseAttack = 48, - .baseDefense = 54, - .baseSpeed = 68, - .baseSpAttack = 63, - .baseSpDefense = 60, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 190, - .expYield = 71, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_INFILTRATOR, ABILITY_OWN_TEMPO}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_MEOWSTIC] = - { - .baseHP = 74, - .baseAttack = 48, - .baseDefense = 76, - .baseSpeed = 104, - .baseSpAttack = 83, - .baseSpDefense = 81, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 75, - .expYield = 163, - .evYield_Speed = 2, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_INFILTRATOR, ABILITY_PRANKSTER}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_HONEDGE] = - { - .baseHP = 45, - .baseAttack = 80, - .baseDefense = 100, - .baseSpeed = 28, - .baseSpAttack = 35, - .baseSpDefense = 37, - .types = { TYPE_STEEL, TYPE_GHOST}, - .catchRate = 180, - .expYield = 65, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_NO_GUARD, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_DOUBLADE] = - { - .baseHP = 59, - .baseAttack = 110, - .baseDefense = 150, - .baseSpeed = 35, - .baseSpAttack = 45, - .baseSpDefense = 49, - .types = { TYPE_STEEL, TYPE_GHOST}, - .catchRate = 90, - .expYield = 157, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_NO_GUARD, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_AEGISLASH] = - { - .baseHP = 60, - .baseAttack = 50, - .baseSpeed = 60, - .baseSpAttack = 50, - #if P_UPDATED_STATS >= GEN_8 - .baseDefense = 140, - .baseSpDefense = 140, - #else - .baseDefense = 150, - .baseSpDefense = 150, - #endif - .types = { TYPE_STEEL, TYPE_GHOST}, - .catchRate = 45, - .expYield = 234, - .evYield_Defense = 2, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STANCE_CHANGE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_SPRITZEE] = - { - .baseHP = 78, - .baseAttack = 52, - .baseDefense = 60, - .baseSpeed = 23, - .baseSpAttack = 63, - .baseSpDefense = 65, - .types = { TYPE_FAIRY, TYPE_FAIRY}, - .catchRate = 200, - .expYield = 68, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_HEALER, ABILITY_NONE, ABILITY_AROMA_VEIL}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_AROMATISSE] = - { - .baseHP = 101, - .baseAttack = 72, - .baseDefense = 72, - .baseSpeed = 29, - .baseSpAttack = 99, - .baseSpDefense = 89, - .types = { TYPE_FAIRY, TYPE_FAIRY}, - .catchRate = 140, - .expYield = 162, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_HEALER, ABILITY_NONE, ABILITY_AROMA_VEIL}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_SWIRLIX] = - { - .baseHP = 62, - .baseAttack = 48, - .baseDefense = 66, - .baseSpeed = 49, - .baseSpAttack = 59, - .baseSpDefense = 57, - .types = { TYPE_FAIRY, TYPE_FAIRY}, - .catchRate = 200, - .expYield = 68, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_UNBURDEN}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_SLURPUFF] = - { - .baseHP = 82, - .baseAttack = 80, - .baseDefense = 86, - .baseSpeed = 72, - .baseSpAttack = 85, - .baseSpDefense = 75, - .types = { TYPE_FAIRY, TYPE_FAIRY}, - .catchRate = 140, - .expYield = 168, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_UNBURDEN}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_INKAY] = - { - .baseHP = 53, - .baseAttack = 54, - .baseDefense = 53, - .baseSpeed = 45, - .baseSpAttack = 37, - .baseSpDefense = 46, - .types = { TYPE_DARK, TYPE_PSYCHIC}, - .catchRate = 190, - .expYield = 58, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_CONTRARY, ABILITY_SUCTION_CUPS, ABILITY_INFILTRATOR}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_MALAMAR] = - { - .baseHP = 86, - .baseAttack = 92, - .baseDefense = 88, - .baseSpeed = 73, - .baseSpAttack = 68, - .baseSpDefense = 75, - .types = { TYPE_DARK, TYPE_PSYCHIC}, - .catchRate = 80, - .expYield = 169, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_CONTRARY, ABILITY_SUCTION_CUPS, ABILITY_INFILTRATOR}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_BINACLE] = - { - .baseHP = 42, - .baseAttack = 52, - .baseDefense = 67, - .baseSpeed = 50, - .baseSpAttack = 39, - .baseSpDefense = 56, - .types = { TYPE_ROCK, TYPE_WATER}, - .catchRate = 120, - .expYield = 61, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_SNIPER, ABILITY_PICKPOCKET}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_BARBARACLE] = - { - .baseHP = 72, - .baseAttack = 105, - .baseDefense = 115, - .baseSpeed = 68, - .baseSpAttack = 54, - .baseSpDefense = 86, - .types = { TYPE_ROCK, TYPE_WATER}, - .catchRate = 45, - .expYield = 175, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_SNIPER, ABILITY_PICKPOCKET}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = TRUE, - }, - - [SPECIES_SKRELP] = - { - .baseHP = 50, - .baseAttack = 60, - .baseDefense = 60, - .baseSpeed = 30, - .baseSpAttack = 60, - .baseSpDefense = 60, - .types = { TYPE_POISON, TYPE_WATER}, - .catchRate = 225, - .expYield = 64, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_POISON_POINT, ABILITY_POISON_TOUCH, ABILITY_ADAPTABILITY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_DRAGALGE] = - { - .baseHP = 65, - .baseAttack = 75, - .baseDefense = 90, - .baseSpeed = 44, - .baseSpAttack = 97, - .baseSpDefense = 123, - .types = { TYPE_POISON, TYPE_DRAGON}, - .catchRate = 55, - .expYield = 173, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_POISON_POINT, ABILITY_POISON_TOUCH, ABILITY_ADAPTABILITY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_CLAUNCHER] = - { - .baseHP = 50, - .baseAttack = 53, - .baseDefense = 62, - .baseSpeed = 44, - .baseSpAttack = 58, - .baseSpDefense = 63, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 225, - .expYield = 66, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_MEGA_LAUNCHER, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = TRUE, - }, - - [SPECIES_CLAWITZER] = - { - .baseHP = 71, - .baseAttack = 73, - .baseDefense = 88, - .baseSpeed = 59, - .baseSpAttack = 120, - .baseSpDefense = 89, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 55, - .expYield = 100, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_MEGA_LAUNCHER, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = TRUE, - }, - - [SPECIES_HELIOPTILE] = - { - .baseHP = 44, - .baseAttack = 38, - .baseDefense = 33, - .baseSpeed = 70, - .baseSpAttack = 61, - .baseSpDefense = 43, - .types = { TYPE_ELECTRIC, TYPE_NORMAL}, - .catchRate = 190, - .expYield = 58, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_DRY_SKIN, ABILITY_SAND_VEIL, ABILITY_SOLAR_POWER}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_HELIOLISK] = - { - .baseHP = 62, - .baseAttack = 55, - .baseDefense = 52, - .baseSpeed = 109, - .baseSpAttack = 109, - .baseSpDefense = 94, - .types = { TYPE_ELECTRIC, TYPE_NORMAL}, - .catchRate = 75, - .expYield = 168, - .evYield_Speed = 1, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_DRY_SKIN, ABILITY_SAND_VEIL, ABILITY_SOLAR_POWER}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_TYRUNT] = - { - .baseHP = 58, - .baseAttack = 89, - .baseDefense = 77, - .baseSpeed = 48, - .baseSpAttack = 45, - .baseSpDefense = 45, - .types = { TYPE_ROCK, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 72, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_STRONG_JAW, ABILITY_NONE, ABILITY_STURDY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_TYRANTRUM] = - { - .baseHP = 82, - .baseAttack = 121, - .baseDefense = 119, - .baseSpeed = 71, - .baseSpAttack = 69, - .baseSpDefense = 59, - .types = { TYPE_ROCK, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 182, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_STRONG_JAW, ABILITY_NONE, ABILITY_ROCK_HEAD}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_AMAURA] = - { - .baseHP = 77, - .baseAttack = 59, - .baseDefense = 50, - .baseSpeed = 46, - .baseSpAttack = 67, - .baseSpDefense = 63, - .types = { TYPE_ROCK, TYPE_ICE}, - .catchRate = 45, - .expYield = 72, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_REFRIGERATE, ABILITY_NONE, ABILITY_SNOW_WARNING}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_AURORUS] = - { - .baseHP = 123, - .baseAttack = 77, - .baseDefense = 72, - .baseSpeed = 58, - .baseSpAttack = 99, - .baseSpDefense = 92, - .types = { TYPE_ROCK, TYPE_ICE}, - .catchRate = 45, - .expYield = 104, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_REFRIGERATE, ABILITY_NONE, ABILITY_SNOW_WARNING}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SYLVEON] = - { - .baseHP = 95, - .baseAttack = 65, - .baseDefense = 65, - .baseSpeed = 60, - .baseSpAttack = 110, - .baseSpDefense = 130, - .types = { TYPE_FAIRY, TYPE_FAIRY}, - .catchRate = 45, - .expYield = 184, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 35, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_CUTE_CHARM, ABILITY_CUTE_CHARM, ABILITY_PIXILATE}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = TRUE, - }, - - [SPECIES_HAWLUCHA] = - { - .baseHP = 78, - .baseAttack = 92, - .baseDefense = 75, - .baseSpeed = 118, - .baseSpAttack = 74, - .baseSpDefense = 63, - .types = { TYPE_FIGHTING, TYPE_FLYING}, - .catchRate = 100, - .expYield = 175, - .evYield_Attack = 2, - .itemRare = ITEM_KINGS_ROCK, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_HUMAN_LIKE}, - #else - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - #endif - .abilities = {ABILITY_LIMBER, ABILITY_UNBURDEN, ABILITY_MOLD_BREAKER}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_DEDENNE] = - { - .baseHP = 67, - .baseAttack = 58, - .baseDefense = 57, - .baseSpeed = 101, - .baseSpAttack = 81, - .baseSpDefense = 67, - .types = { TYPE_ELECTRIC, TYPE_FAIRY}, - .catchRate = 180, - .expYield = 151, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_CHEEK_POUCH, ABILITY_PICKUP, ABILITY_PLUS}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_CARBINK] = - { - .baseHP = 50, - .baseAttack = 50, - .baseDefense = 150, - .baseSpeed = 50, - .baseSpAttack = 50, - .baseSpDefense = 150, - .types = { TYPE_ROCK, TYPE_FAIRY}, - .catchRate = 60, - .expYield = 100, - .evYield_Defense = 1, - .evYield_SpDefense = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_STURDY}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_GOOMY] = - { - .baseHP = 45, - .baseAttack = 50, - .baseDefense = 35, - .baseSpeed = 40, - .baseSpAttack = 55, - .baseSpDefense = 75, - .types = { TYPE_DRAGON, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 60, - .evYield_SpDefense = 1, - .itemRare = ITEM_SHED_SHELL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SAP_SIPPER, ABILITY_HYDRATION, ABILITY_GOOEY}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_SLIGGOO] = - { - .baseHP = 68, - .baseAttack = 75, - .baseDefense = 53, - .baseSpeed = 60, - .baseSpAttack = 83, - .baseSpDefense = 113, - .types = { TYPE_DRAGON, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 158, - .evYield_SpDefense = 2, - .itemRare = ITEM_SHED_SHELL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SAP_SIPPER, ABILITY_HYDRATION, ABILITY_GOOEY}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_GOODRA] = - { - .baseHP = 90, - .baseAttack = 100, - .baseDefense = 70, - .baseSpeed = 80, - .baseSpAttack = 110, - .baseSpDefense = 150, - .types = { TYPE_DRAGON, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 270, - .evYield_SpDefense = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SAP_SIPPER, ABILITY_HYDRATION, ABILITY_GOOEY}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_KLEFKI] = - { - .baseHP = 57, - .baseAttack = 80, - .baseDefense = 91, - .baseSpeed = 75, - .baseSpAttack = 80, - .baseSpDefense = 87, - .types = { TYPE_STEEL, TYPE_FAIRY}, - .catchRate = 75, - .expYield = 165, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_PRANKSTER, ABILITY_NONE, ABILITY_MAGICIAN}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = TRUE, - }, - - [SPECIES_PHANTUMP] = - { - .baseHP = 43, - .baseAttack = 70, - .baseDefense = 48, - .baseSpeed = 38, - .baseSpAttack = 50, - .baseSpDefense = 60, - .types = { TYPE_GHOST, TYPE_GRASS}, - .catchRate = 120, - .expYield = 62, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_NATURAL_CURE, ABILITY_FRISK, ABILITY_HARVEST}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_TREVENANT] = - { - .baseHP = 85, - .baseAttack = 110, - .baseDefense = 76, - .baseSpeed = 56, - .baseSpAttack = 65, - .baseSpDefense = 82, - .types = { TYPE_GHOST, TYPE_GRASS}, - .catchRate = 60, - .expYield = 166, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_NATURAL_CURE, ABILITY_FRISK, ABILITY_HARVEST}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_PUMPKABOO] = - { - .baseHP = 49, - .baseAttack = 66, - .baseDefense = 70, - .baseSpeed = 51, - .baseSpAttack = 44, - .baseSpDefense = 55, - PUMKPABOO_MISC_INFO, - }, - - [SPECIES_GOURGEIST] = - { - .baseHP = 65, - .baseAttack = 90, - .baseDefense = 122, - .baseSpeed = 84, - .baseSpAttack = 58, - .baseSpDefense = 75, - GOURGEIST_MISC_INFO, - }, - - [SPECIES_BERGMITE] = - { - .baseHP = 55, - .baseAttack = 69, - .baseDefense = 85, - .baseSpeed = 28, - .baseSpAttack = 32, - .baseSpDefense = 35, - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 190, - .expYield = 61, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MINERAL}, - #else - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - #endif - .abilities = {ABILITY_OWN_TEMPO, ABILITY_ICE_BODY, ABILITY_STURDY}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_AVALUGG] = - { - .baseHP = 95, - .baseAttack = 117, - .baseDefense = 184, - .baseSpeed = 28, - .baseSpAttack = 44, - .baseSpDefense = 46, - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 55, - .expYield = 180, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MINERAL}, - #else - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - #endif - .abilities = {ABILITY_OWN_TEMPO, ABILITY_ICE_BODY, ABILITY_STURDY}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_NOIBAT] = - { - .baseHP = 40, - .baseAttack = 30, - .baseDefense = 35, - .baseSpeed = 55, - .baseSpAttack = 45, - .baseSpDefense = 40, - .types = { TYPE_FLYING, TYPE_DRAGON}, - .catchRate = 190, - .expYield = 49, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON}, - #else - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - #endif - .abilities = {ABILITY_FRISK, ABILITY_INFILTRATOR, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_NOIVERN] = - { - .baseHP = 85, - .baseAttack = 70, - .baseDefense = 80, - .baseSpeed = 123, - .baseSpAttack = 97, - .baseSpDefense = 80, - .types = { TYPE_FLYING, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 187, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - #if P_UPDATED_EGG_GROUPS >= GEN_8 - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON}, - #else - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - #endif - .abilities = {ABILITY_FRISK, ABILITY_INFILTRATOR, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_XERNEAS] = XERNEAS_SPECIES_INFO, - - [SPECIES_YVELTAL] = - { - .baseHP = 126, - .baseAttack = 131, - .baseDefense = 95, - .baseSpeed = 99, - .baseSpAttack = 131, - .baseSpDefense = 98, - .types = { TYPE_DARK, TYPE_FLYING}, - .catchRate = 45, - .expYield = 306, - .evYield_HP = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_DARK_AURA, ABILITY_NONE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_ZYGARDE] = ZYGARDE_50_SPECIES_INFO(ABILITY_AURA_BREAK), - - [SPECIES_DIANCIE] = - { - .baseHP = 50, - .baseAttack = 100, - .baseDefense = 150, - .baseSpeed = 50, - .baseSpAttack = 100, - .baseSpDefense = 150, - .types = { TYPE_ROCK, TYPE_FAIRY}, - .catchRate = 3, - .expYield = 270, - .evYield_Defense = 1, - .evYield_SpDefense = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - - [SPECIES_HOOPA] = - { - .baseHP = 80, - .baseAttack = 110, - .baseDefense = 60, - .baseSpeed = 70, - .baseSpAttack = 150, - .baseSpDefense = 130, - .types = { TYPE_PSYCHIC, TYPE_GHOST}, - .catchRate = 3, - .expYield = 270, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 100, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_MAGICIAN, ABILITY_NONE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - - [SPECIES_VOLCANION] = - { - .baseHP = 80, - .baseAttack = 110, - .baseDefense = 120, - .baseSpeed = 70, - .baseSpAttack = 130, - .baseSpDefense = 90, - .types = { TYPE_FIRE, TYPE_WATER}, - .catchRate = 3, - .expYield = 270, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 100, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_WATER_ABSORB, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, -#endif - -#if P_GEN_7_POKEMON == TRUE - [SPECIES_ROWLET] = - { - .baseHP = 68, - .baseAttack = 55, - .baseDefense = 55, - .baseSpeed = 42, - .baseSpAttack = 50, - .baseSpDefense = 50, - .types = { TYPE_GRASS, TYPE_FLYING}, - .catchRate = 45, - .expYield = 64, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LONG_REACH}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_DARTRIX] = - { - .baseHP = 78, - .baseAttack = 75, - .baseDefense = 75, - .baseSpeed = 52, - .baseSpAttack = 70, - .baseSpDefense = 70, - .types = { TYPE_GRASS, TYPE_FLYING}, - .catchRate = 45, - .expYield = 147, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LONG_REACH}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = TRUE, - }, - - [SPECIES_DECIDUEYE] = - { - .baseHP = 78, - .baseAttack = 107, - .baseDefense = 75, - .baseSpeed = 70, - .baseSpAttack = 100, - .baseSpDefense = 100, - .types = { TYPE_GRASS, TYPE_GHOST}, - .catchRate = 45, - .expYield = 239, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LONG_REACH}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_LITTEN] = - { - .baseHP = 45, - .baseAttack = 65, - .baseDefense = 40, - .baseSpeed = 70, - .baseSpAttack = 60, - .baseSpDefense = 40, - .types = { TYPE_FIRE, TYPE_FIRE}, - .catchRate = 45, - .expYield = 64, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_INTIMIDATE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_TORRACAT] = - { - .baseHP = 65, - .baseAttack = 85, - .baseDefense = 50, - .baseSpeed = 90, - .baseSpAttack = 80, - .baseSpDefense = 50, - .types = { TYPE_FIRE, TYPE_FIRE}, - .catchRate = 45, - .expYield = 147, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_INTIMIDATE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_INCINEROAR] = - { - .baseHP = 95, - .baseAttack = 115, - .baseDefense = 90, - .baseSpeed = 60, - .baseSpAttack = 80, - .baseSpDefense = 90, - .types = { TYPE_FIRE, TYPE_DARK}, - .catchRate = 45, - .expYield = 239, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_INTIMIDATE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_POPPLIO] = - { - .baseHP = 50, - .baseAttack = 54, - .baseDefense = 54, - .baseSpeed = 40, - .baseSpAttack = 66, - .baseSpDefense = 56, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 45, - .expYield = 64, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_LIQUID_VOICE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_BRIONNE] = - { - .baseHP = 60, - .baseAttack = 69, - .baseDefense = 69, - .baseSpeed = 50, - .baseSpAttack = 91, - .baseSpDefense = 81, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 45, - .expYield = 147, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_LIQUID_VOICE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_PRIMARINA] = - { - .baseHP = 80, - .baseAttack = 74, - .baseDefense = 74, - .baseSpeed = 60, - .baseSpAttack = 126, - .baseSpDefense = 116, - .types = { TYPE_WATER, TYPE_FAIRY}, - .catchRate = 45, - .expYield = 239, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_LIQUID_VOICE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_PIKIPEK] = - { - .baseHP = 35, - .baseAttack = 75, - .baseDefense = 30, - .baseSpeed = 65, - .baseSpAttack = 30, - .baseSpDefense = 30, - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 255, - .expYield = 53, - .evYield_Attack = 1, - .itemRare = ITEM_ORAN_BERRY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_SKILL_LINK, ABILITY_PICKUP}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_TRUMBEAK] = - { - .baseHP = 55, - .baseAttack = 85, - .baseDefense = 50, - .baseSpeed = 75, - .baseSpAttack = 40, - .baseSpDefense = 50, - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 120, - .expYield = 124, - .evYield_Attack = 2, - .itemRare = ITEM_SITRUS_BERRY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_SKILL_LINK, ABILITY_PICKUP}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_TOUCANNON] = - { - .baseHP = 80, - .baseAttack = 120, - .baseDefense = 75, - .baseSpeed = 60, - .baseSpAttack = 75, - .baseSpDefense = 75, - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 45, - .expYield = 218, - .evYield_Attack = 3, - .itemRare = ITEM_RAWST_BERRY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_SKILL_LINK, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_YUNGOOS] = - { - .baseHP = 48, - .baseAttack = 70, - .baseDefense = 30, - .baseSpeed = 45, - .baseSpAttack = 30, - .baseSpDefense = 30, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 255, - .expYield = 51, - .evYield_Attack = 1, - .itemRare = ITEM_PECHA_BERRY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_STAKEOUT, ABILITY_STRONG_JAW, ABILITY_ADAPTABILITY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_GUMSHOOS] = - { - .baseHP = 88, - .baseAttack = 110, - .baseDefense = 60, - .baseSpeed = 45, - .baseSpAttack = 55, - .baseSpDefense = 60, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 127, - .expYield = 146, - .evYield_Attack = 2, - .itemRare = ITEM_PECHA_BERRY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_STAKEOUT, ABILITY_STRONG_JAW, ABILITY_ADAPTABILITY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_GRUBBIN] = - { - .baseHP = 47, - .baseAttack = 62, - .baseDefense = 45, - .baseSpeed = 46, - .baseSpAttack = 55, - .baseSpDefense = 45, - .types = { TYPE_BUG, TYPE_BUG}, - .catchRate = 255, - .expYield = 60, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_CHARJABUG] = - { - .baseHP = 57, - .baseAttack = 82, - .baseDefense = 95, - .baseSpeed = 36, - .baseSpAttack = 55, - .baseSpDefense = 75, - .types = { TYPE_BUG, TYPE_ELECTRIC}, - .catchRate = 120, - .expYield = 140, - .evYield_Defense = 2, - .itemRare = ITEM_CELL_BATTERY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_BATTERY, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_VIKAVOLT] = - { - .baseHP = 77, - .baseAttack = 70, - .baseDefense = 90, - .baseSpeed = 43, - .baseSpAttack = 145, - .baseSpDefense = 75, - .types = { TYPE_BUG, TYPE_ELECTRIC}, - .catchRate = 45, - .expYield = 225, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_CRABRAWLER] = - { - .baseHP = 47, - .baseAttack = 82, - .baseDefense = 57, - .baseSpeed = 63, - .baseSpAttack = 42, - .baseSpDefense = 47, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 225, - .expYield = 68, - .evYield_Attack = 1, - .itemRare = ITEM_ASPEAR_BERRY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_HYPER_CUTTER, ABILITY_IRON_FIST, ABILITY_ANGER_POINT}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_CRABOMINABLE] = - { - .baseHP = 97, - .baseAttack = 132, - .baseDefense = 77, - .baseSpeed = 43, - .baseSpAttack = 62, - .baseSpDefense = 67, - .types = { TYPE_FIGHTING, TYPE_ICE}, - .catchRate = 60, - .expYield = 167, - .evYield_Attack = 2, - .itemRare = ITEM_CHERI_BERRY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_HYPER_CUTTER, ABILITY_IRON_FIST, ABILITY_ANGER_POINT}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_ORICORIO] = ORICORIO_SPECIES_INFO(TYPE_FIRE, BODY_COLOR_RED), - - [SPECIES_CUTIEFLY] = - { - .baseHP = 40, - .baseAttack = 45, - .baseDefense = 40, - .baseSpeed = 84, - .baseSpAttack = 55, - .baseSpDefense = 40, - .types = { TYPE_BUG, TYPE_FAIRY}, - .catchRate = 190, - .expYield = 61, - .evYield_Speed = 1, - .itemRare = ITEM_HONEY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_HONEY_GATHER, ABILITY_SHIELD_DUST, ABILITY_SWEET_VEIL}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_RIBOMBEE] = - { - .baseHP = 60, - .baseAttack = 55, - .baseDefense = 60, - .baseSpeed = 124, - .baseSpAttack = 95, - .baseSpDefense = 70, - .types = { TYPE_BUG, TYPE_FAIRY}, - .catchRate = 75, - .expYield = 162, - .evYield_Speed = 2, - .itemRare = ITEM_HONEY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_HONEY_GATHER, ABILITY_SHIELD_DUST, ABILITY_SWEET_VEIL}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_ROCKRUFF] = ROCKRUFF_SPECIES_INFO(ABILITY_KEEN_EYE, ABILITY_VITAL_SPIRIT, ABILITY_STEADFAST), - - [SPECIES_LYCANROC] = - { - .baseHP = 75, - .baseAttack = 115, - .baseDefense = 65, - .baseSpeed = 112, - .baseSpAttack = 55, - .baseSpDefense = 65, - .types = { TYPE_ROCK, TYPE_ROCK}, - .catchRate = 90, - .expYield = 170, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_SAND_RUSH, ABILITY_STEADFAST}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_WISHIWASHI] = - { - .baseHP = 45, - .baseAttack = 20, - .baseDefense = 20, - .baseSpeed = 40, - .baseSpAttack = 25, - .baseSpDefense = 25, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 60, - .expYield = 61, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_SCHOOLING, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_MAREANIE] = - { - .baseHP = 50, - .baseAttack = 53, - .baseDefense = 62, - .baseSpeed = 45, - .baseSpAttack = 43, - .baseSpDefense = 52, - .types = { TYPE_POISON, TYPE_WATER}, - .catchRate = 190, - .expYield = 61, - .evYield_Defense = 1, - .itemRare = ITEM_POISON_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_MERCILESS, ABILITY_LIMBER, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_TOXAPEX] = - { - .baseHP = 50, - .baseAttack = 63, - .baseDefense = 152, - .baseSpeed = 35, - .baseSpAttack = 53, - .baseSpDefense = 142, - .types = { TYPE_POISON, TYPE_WATER}, - .catchRate = 75, - .expYield = 173, - .evYield_Defense = 2, - .itemRare = ITEM_POISON_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_MERCILESS, ABILITY_LIMBER, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_MUDBRAY] = - { - .baseHP = 70, - .baseAttack = 100, - .baseDefense = 70, - .baseSpeed = 45, - .baseSpAttack = 45, - .baseSpDefense = 55, - .types = { TYPE_GROUND, TYPE_GROUND}, - .catchRate = 190, - .expYield = 77, - .evYield_Attack = 1, - .itemRare = ITEM_LIGHT_CLAY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_OWN_TEMPO, ABILITY_STAMINA, ABILITY_INNER_FOCUS}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_MUDSDALE] = - { - .baseHP = 100, - .baseAttack = 125, - .baseDefense = 100, - .baseSpeed = 35, - .baseSpAttack = 55, - .baseSpDefense = 85, - .types = { TYPE_GROUND, TYPE_GROUND}, - .catchRate = 60, - .expYield = 175, - .evYield_Attack = 2, - .itemRare = ITEM_LIGHT_CLAY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_OWN_TEMPO, ABILITY_STAMINA, ABILITY_INNER_FOCUS}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_DEWPIDER] = - { - .baseHP = 38, - .baseAttack = 40, - .baseDefense = 52, - .baseSpeed = 27, - .baseSpAttack = 40, - .baseSpDefense = 72, - .types = { TYPE_WATER, TYPE_BUG}, - .catchRate = 200, - .expYield = 54, - .evYield_SpDefense = 1, - .itemRare = ITEM_MYSTIC_WATER, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_BUG}, - .abilities = {ABILITY_WATER_BUBBLE, ABILITY_NONE, ABILITY_WATER_ABSORB}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_ARAQUANID] = - { - .baseHP = 68, - .baseAttack = 70, - .baseDefense = 92, - .baseSpeed = 42, - .baseSpAttack = 50, - .baseSpDefense = 132, - .types = { TYPE_WATER, TYPE_BUG}, - .catchRate = 100, - .expYield = 159, - .evYield_SpDefense = 2, - .itemRare = ITEM_MYSTIC_WATER, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_BUG}, - .abilities = {ABILITY_WATER_BUBBLE, ABILITY_NONE, ABILITY_WATER_ABSORB}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_FOMANTIS] = - { - .baseHP = 40, - .baseAttack = 55, - .baseDefense = 35, - .baseSpeed = 35, - .baseSpAttack = 50, - .baseSpDefense = 35, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 190, - .expYield = 50, - .evYield_Attack = 1, - .itemRare = ITEM_MIRACLE_SEED, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_LEAF_GUARD, ABILITY_NONE, ABILITY_CONTRARY}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_LURANTIS] = - { - .baseHP = 70, - .baseAttack = 105, - .baseDefense = 90, - .baseSpeed = 45, - .baseSpAttack = 80, - .baseSpDefense = 90, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 75, - .expYield = 168, - .evYield_Attack = 2, - .itemRare = ITEM_MIRACLE_SEED, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_LEAF_GUARD, ABILITY_NONE, ABILITY_CONTRARY}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_MORELULL] = - { - .baseHP = 40, - .baseAttack = 35, - .baseDefense = 55, - .baseSpeed = 15, - .baseSpAttack = 65, - .baseSpDefense = 75, - .types = { TYPE_GRASS, TYPE_FAIRY}, - .catchRate = 190, - .expYield = 57, - .evYield_SpDefense = 1, - .itemCommon = ITEM_TINY_MUSHROOM, - .itemRare = ITEM_BIG_MUSHROOM, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_ILLUMINATE, ABILITY_EFFECT_SPORE, ABILITY_RAIN_DISH}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_SHIINOTIC] = - { - .baseHP = 60, - .baseAttack = 45, - .baseDefense = 80, - .baseSpeed = 30, - .baseSpAttack = 90, - .baseSpDefense = 100, - .types = { TYPE_GRASS, TYPE_FAIRY}, - .catchRate = 75, - .expYield = 142, - .evYield_SpDefense = 2, - .itemCommon = ITEM_TINY_MUSHROOM, - .itemRare = ITEM_BIG_MUSHROOM, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_ILLUMINATE, ABILITY_EFFECT_SPORE, ABILITY_RAIN_DISH}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_SALANDIT] = - { - .baseHP = 48, - .baseAttack = 44, - .baseDefense = 40, - .baseSpeed = 77, - .baseSpAttack = 71, - .baseSpDefense = 40, - .types = { TYPE_POISON, TYPE_FIRE}, - .catchRate = 120, - .expYield = 64, - .evYield_Speed = 1, - .itemRare = ITEM_SMOKE_BALL, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_CORROSION, ABILITY_NONE, ABILITY_OBLIVIOUS}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_SALAZZLE] = - { - .baseHP = 68, - .baseAttack = 64, - .baseDefense = 60, - .baseSpeed = 117, - .baseSpAttack = 111, - .baseSpDefense = 60, - .types = { TYPE_POISON, TYPE_FIRE}, - .catchRate = 45, - .expYield = 168, - .evYield_Speed = 2, - .itemRare = ITEM_SMOKE_BALL, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_CORROSION, ABILITY_NONE, ABILITY_OBLIVIOUS}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_STUFFUL] = - { - .baseHP = 70, - .baseAttack = 75, - .baseDefense = 50, - .baseSpeed = 50, - .baseSpAttack = 45, - .baseSpDefense = 50, - .types = { TYPE_NORMAL, TYPE_FIGHTING}, - .catchRate = 140, - .expYield = 68, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_FLUFFY, ABILITY_KLUTZ, ABILITY_CUTE_CHARM}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_BEWEAR] = - { - .baseHP = 120, - .baseAttack = 125, - .baseDefense = 80, - .baseSpeed = 60, - .baseSpAttack = 55, - .baseSpDefense = 60, - .types = { TYPE_NORMAL, TYPE_FIGHTING}, - .catchRate = 70, - .expYield = 175, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_FLUFFY, ABILITY_KLUTZ, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_BOUNSWEET] = - { - .baseHP = 42, - .baseAttack = 30, - .baseDefense = 38, - .baseSpeed = 32, - .baseSpAttack = 30, - .baseSpDefense = 38, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 235, - .expYield = 42, - .evYield_HP = 1, - .itemRare = ITEM_GRASSY_SEED, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_LEAF_GUARD, ABILITY_OBLIVIOUS, ABILITY_SWEET_VEIL}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_STEENEE] = - { - .baseHP = 52, - .baseAttack = 40, - .baseDefense = 48, - .baseSpeed = 62, - .baseSpAttack = 40, - .baseSpDefense = 48, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 120, - .expYield = 102, - .evYield_Speed = 2, - .itemRare = ITEM_GRASSY_SEED, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_LEAF_GUARD, ABILITY_OBLIVIOUS, ABILITY_SWEET_VEIL}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = TRUE, - }, - - [SPECIES_TSAREENA] = - { - .baseHP = 72, - .baseAttack = 120, - .baseDefense = 98, - .baseSpeed = 72, - .baseSpAttack = 50, - .baseSpDefense = 98, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 45, - .expYield = 230, - .evYield_Attack = 3, - .itemCommon = ITEM_GRASSY_SEED, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_LEAF_GUARD, ABILITY_QUEENLY_MAJESTY, ABILITY_SWEET_VEIL}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = TRUE, - }, - - [SPECIES_COMFEY] = - { - .baseHP = 51, - .baseAttack = 52, - .baseDefense = 90, - .baseSpeed = 100, - .baseSpAttack = 82, - .baseSpDefense = 110, - .types = { TYPE_FAIRY, TYPE_FAIRY}, - .catchRate = 60, - .expYield = 170, - .evYield_SpDefense = 2, - .itemRare = ITEM_MISTY_SEED, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_FLOWER_VEIL, ABILITY_TRIAGE, ABILITY_NATURAL_CURE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = TRUE, - }, - - [SPECIES_ORANGURU] = - { - .baseHP = 90, - .baseAttack = 60, - .baseDefense = 80, - .baseSpeed = 60, - .baseSpAttack = 90, - .baseSpDefense = 110, - .types = { TYPE_NORMAL, TYPE_PSYCHIC}, - .catchRate = 45, - .expYield = 172, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INNER_FOCUS, ABILITY_TELEPATHY, ABILITY_SYMBIOSIS}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_PASSIMIAN] = - { - .baseHP = 100, - .baseAttack = 120, - .baseDefense = 90, - .baseSpeed = 80, - .baseSpAttack = 40, - .baseSpDefense = 60, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 172, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RECEIVER, ABILITY_NONE, ABILITY_DEFIANT}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_WIMPOD] = - { - .baseHP = 25, - .baseAttack = 35, - .baseDefense = 40, - .baseSpeed = 80, - .baseSpAttack = 20, - .baseSpDefense = 30, - .types = { TYPE_BUG, TYPE_WATER}, - .catchRate = 90, - .expYield = 46, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_WIMP_OUT, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_GOLISOPOD] = - { - .baseHP = 75, - .baseAttack = 125, - .baseDefense = 140, - .baseSpeed = 40, - .baseSpAttack = 60, - .baseSpDefense = 90, - .types = { TYPE_BUG, TYPE_WATER}, - .catchRate = 45, - .expYield = 186, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_EMERGENCY_EXIT, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_SANDYGAST] = - { - .baseHP = 55, - .baseAttack = 55, - .baseDefense = 80, - .baseSpeed = 15, - .baseSpAttack = 70, - .baseSpDefense = 45, - .types = { TYPE_GHOST, TYPE_GROUND}, - .catchRate = 140, - .expYield = 64, - .evYield_Defense = 1, - .itemRare = ITEM_SPELL_TAG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_WATER_COMPACTION, ABILITY_NONE, ABILITY_SAND_VEIL}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_PALOSSAND] = - { - .baseHP = 85, - .baseAttack = 75, - .baseDefense = 110, - .baseSpeed = 35, - .baseSpAttack = 100, - .baseSpDefense = 75, - .types = { TYPE_GHOST, TYPE_GROUND}, - .catchRate = 60, - .expYield = 168, - .evYield_Defense = 2, - .itemRare = ITEM_SPELL_TAG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_WATER_COMPACTION, ABILITY_NONE, ABILITY_SAND_VEIL}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_PYUKUMUKU] = - { - .baseHP = 55, - .baseAttack = 60, - .baseDefense = 130, - .baseSpeed = 5, - .baseSpAttack = 30, - .baseSpDefense = 130, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 60, - .expYield = 144, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_INNARDS_OUT, ABILITY_NONE, ABILITY_UNAWARE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_TYPE_NULL] = - { - .baseHP = 95, - .baseAttack = 95, - .baseDefense = 95, - .baseSpeed = 59, - .baseSpAttack = 95, - .baseSpDefense = 95, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 3, - .expYield = 107, - .evYield_HP = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_SILVALLY] = SILVALLY_SPECIES_INFO(TYPE_NORMAL), - - [SPECIES_MINIOR] = MINIOR_METEOR_SPECIES_INFO, - - [SPECIES_KOMALA] = - { - .baseHP = 65, - .baseAttack = 115, - .baseDefense = 65, - .baseSpeed = 65, - .baseSpAttack = 75, - .baseSpDefense = 95, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 45, - .expYield = 168, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_COMATOSE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_TURTONATOR] = - { - .baseHP = 60, - .baseAttack = 78, - .baseDefense = 135, - .baseSpeed = 36, - .baseSpAttack = 91, - .baseSpDefense = 85, - .types = { TYPE_FIRE, TYPE_DRAGON}, - .catchRate = 70, - .expYield = 170, - .evYield_Defense = 2, - .itemRare = ITEM_CHARCOAL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SHELL_ARMOR, ABILITY_NONE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_TOGEDEMARU] = - { - .baseHP = 65, - .baseAttack = 98, - .baseDefense = 63, - .baseSpeed = 96, - .baseSpAttack = 40, - .baseSpDefense = 73, - .types = { TYPE_ELECTRIC, TYPE_STEEL}, - .catchRate = 180, - .expYield = 152, - .evYield_Attack = 2, - .itemRare = ITEM_ELECTRIC_SEED, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 10, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_IRON_BARBS, ABILITY_LIGHTNING_ROD, ABILITY_STURDY}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_MIMIKYU] = MIMIKYU_SPECIES_INFO, - - [SPECIES_BRUXISH] = - { - .baseHP = 68, - .baseAttack = 105, - .baseDefense = 70, - .baseSpeed = 92, - .baseSpAttack = 70, - .baseSpDefense = 70, - .types = { TYPE_WATER, TYPE_PSYCHIC}, - .catchRate = 80, - .expYield = 166, - .evYield_Attack = 2, - .itemRare = ITEM_RAZOR_FANG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_DAZZLING, ABILITY_STRONG_JAW, ABILITY_WONDER_SKIN}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_DRAMPA] = - { - .baseHP = 78, - .baseAttack = 60, - .baseDefense = 85, - .baseSpeed = 36, - .baseSpAttack = 135, - .baseSpDefense = 91, - .types = { TYPE_NORMAL, TYPE_DRAGON}, - .catchRate = 70, - .expYield = 170, - .evYield_SpAttack = 2, - .itemRare = ITEM_PERSIM_BERRY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_BERSERK, ABILITY_SAP_SIPPER, ABILITY_CLOUD_NINE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_DHELMISE] = - { - .baseHP = 70, - .baseAttack = 131, - .baseDefense = 100, - .baseSpeed = 40, - .baseSpAttack = 86, - .baseSpDefense = 90, - .types = { TYPE_GHOST, TYPE_GRASS}, - .catchRate = 25, - .expYield = 181, - .evYield_Attack = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STEELWORKER, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = TRUE, - }, - - [SPECIES_JANGMO_O] = - { - .baseHP = 45, - .baseAttack = 55, - .baseDefense = 65, - .baseSpeed = 45, - .baseSpAttack = 45, - .baseSpDefense = 45, - .types = { TYPE_DRAGON, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 60, - .evYield_Defense = 1, - .itemRare = ITEM_RAZOR_CLAW, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_BULLETPROOF, ABILITY_SOUNDPROOF, ABILITY_OVERCOAT}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_HAKAMO_O] = - { - .baseHP = 55, - .baseAttack = 75, - .baseDefense = 90, - .baseSpeed = 65, - .baseSpAttack = 65, - .baseSpDefense = 70, - .types = { TYPE_DRAGON, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 147, - .evYield_Defense = 2, - .itemRare = ITEM_RAZOR_CLAW, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_BULLETPROOF, ABILITY_SOUNDPROOF, ABILITY_OVERCOAT}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_KOMMO_O] = - { - .baseHP = 75, - .baseAttack = 110, - .baseDefense = 125, - .baseSpeed = 85, - .baseSpAttack = 100, - .baseSpDefense = 105, - .types = { TYPE_DRAGON, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 270, - .evYield_Defense = 3, - .itemCommon = ITEM_RAZOR_CLAW, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_BULLETPROOF, ABILITY_SOUNDPROOF, ABILITY_OVERCOAT}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_TAPU_KOKO] = - { - .baseHP = 70, - .baseAttack = 115, - .baseDefense = 85, - .baseSpeed = 130, - .baseSpAttack = 95, - .baseSpDefense = 75, - .types = { TYPE_ELECTRIC, TYPE_FAIRY}, - .catchRate = 3, - .expYield = 257, - .evYield_Speed = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_ELECTRIC_SURGE, ABILITY_NONE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_TAPU_LELE] = - { - .baseHP = 70, - .baseAttack = 85, - .baseDefense = 75, - .baseSpeed = 95, - .baseSpAttack = 130, - .baseSpDefense = 115, - .types = { TYPE_PSYCHIC, TYPE_FAIRY}, - .catchRate = 3, - .expYield = 257, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PSYCHIC_SURGE, ABILITY_NONE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_TAPU_BULU] = - { - .baseHP = 70, - .baseAttack = 130, - .baseDefense = 115, - .baseSpeed = 75, - .baseSpAttack = 85, - .baseSpDefense = 95, - .types = { TYPE_GRASS, TYPE_FAIRY}, - .catchRate = 3, - .expYield = 257, - .evYield_Attack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_GRASSY_SURGE, ABILITY_NONE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_TAPU_FINI] = - { - .baseHP = 70, - .baseAttack = 75, - .baseDefense = 115, - .baseSpeed = 85, - .baseSpAttack = 95, - .baseSpDefense = 130, - .types = { TYPE_WATER, TYPE_FAIRY}, - .catchRate = 3, - .expYield = 257, - .evYield_SpDefense = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_MISTY_SURGE, ABILITY_NONE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_COSMOG] = - { - .baseHP = 43, - .baseAttack = 29, - .baseDefense = 31, - .baseSpeed = 37, - .baseSpAttack = 29, - .baseSpDefense = 31, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 45, - .expYield = 40, - .evYield_HP = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_UNAWARE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_COSMOEM] = - { - .baseHP = 43, - .baseAttack = 29, - .baseDefense = 131, - .baseSpeed = 37, - .baseSpAttack = 29, - .baseSpDefense = 131, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 45, - .expYield = 140, - .evYield_Defense = 1, - .evYield_SpDefense = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_STURDY, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_SOLGALEO] = - { - .baseHP = 137, - .baseAttack = 137, - .baseDefense = 107, - .baseSpeed = 97, - .baseSpAttack = 113, - .baseSpDefense = 89, - .types = { TYPE_PSYCHIC, TYPE_STEEL}, - .catchRate = 45, - .expYield = 306, - .evYield_Attack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_FULL_METAL_BODY, ABILITY_NONE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_LUNALA] = - { - .baseHP = 137, - .baseAttack = 113, - .baseDefense = 89, - .baseSpeed = 97, - .baseSpAttack = 137, - .baseSpDefense = 107, - .types = { TYPE_PSYCHIC, TYPE_GHOST}, - .catchRate = 45, - .expYield = 306, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_SHADOW_SHIELD, ABILITY_NONE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_NIHILEGO] = - { - .baseHP = 109, - .baseAttack = 53, - .baseDefense = 47, - .baseSpeed = 103, - .baseSpAttack = 127, - .baseSpDefense = 131, - .types = { TYPE_ROCK, TYPE_POISON}, - .catchRate = 45, - .expYield = 257, - .evYield_SpDefense = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ULTRA_BEAST, - }, - - [SPECIES_BUZZWOLE] = - { - .baseHP = 107, - .baseAttack = 139, - .baseDefense = 139, - .baseSpeed = 79, - .baseSpAttack = 53, - .baseSpDefense = 53, - .types = { TYPE_BUG, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 257, - .evYield_Attack = 1, - .evYield_Defense = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ULTRA_BEAST, - }, - - [SPECIES_PHEROMOSA] = - { - .baseHP = 71, - .baseAttack = 137, - .baseDefense = 37, - .baseSpeed = 151, - .baseSpAttack = 137, - .baseSpDefense = 37, - .types = { TYPE_BUG, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 257, - .evYield_Speed = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ULTRA_BEAST, - }, - - [SPECIES_XURKITREE] = - { - .baseHP = 83, - .baseAttack = 89, - .baseDefense = 71, - .baseSpeed = 83, - .baseSpAttack = 173, - .baseSpDefense = 71, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 45, - .expYield = 257, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ULTRA_BEAST, - }, - - [SPECIES_CELESTEELA] = - { - .baseHP = 97, - .baseAttack = 101, - .baseDefense = 103, - .baseSpeed = 61, - .baseSpAttack = 107, - .baseSpDefense = 101, - .types = { TYPE_STEEL, TYPE_FLYING}, - .catchRate = 45, - .expYield = 257, - .evYield_Attack = 1, - .evYield_Defense = 1, - .evYield_SpAttack = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ULTRA_BEAST, - }, - - [SPECIES_KARTANA] = - { - .baseHP = 59, - .baseAttack = 181, - .baseDefense = 131, - .baseSpeed = 109, - .baseSpAttack = 59, - .baseSpDefense = 31, - .types = { TYPE_GRASS, TYPE_STEEL}, - .catchRate = 45, - .expYield = 257, - .evYield_Attack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ULTRA_BEAST, - }, - - [SPECIES_GUZZLORD] = - { - .baseHP = 223, - .baseAttack = 101, - .baseDefense = 53, - .baseSpeed = 43, - .baseSpAttack = 97, - .baseSpDefense = 53, - .types = { TYPE_DARK, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 257, - .evYield_HP = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ULTRA_BEAST, - }, - - [SPECIES_NECROZMA] = - { - .baseHP = 97, - .baseAttack = 107, - .baseDefense = 101, - .baseSpeed = 79, - .baseSpAttack = 127, - .baseSpDefense = 89, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 255, - .expYield = 270, - .evYield_Attack = 1, - .evYield_SpAttack = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRISM_ARMOR, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = TRUE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_MAGEARNA] = MAGEARNA_SPECIES_INFO(BODY_COLOR_GRAY), - - [SPECIES_MARSHADOW] = - { - .baseHP = 90, - .baseAttack = 125, - .baseDefense = 80, - .baseSpeed = 125, - .baseSpAttack = 90, - .baseSpDefense = 90, - .types = { TYPE_FIGHTING, TYPE_GHOST}, - .catchRate = 3, - .expYield = 270, - .evYield_Attack = 2, - .evYield_Speed = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_TECHNICIAN, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = TRUE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - - [SPECIES_POIPOLE] = - { - .baseHP = 67, - .baseAttack = 73, - .baseDefense = 67, - .baseSpeed = 73, - .baseSpAttack = 73, - .baseSpDefense = 67, - .types = { TYPE_POISON, TYPE_POISON}, - .catchRate = 45, - .expYield = 189, - .evYield_Speed = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ULTRA_BEAST, - }, - - [SPECIES_NAGANADEL] = - { - .baseHP = 73, - .baseAttack = 73, - .baseDefense = 73, - .baseSpeed = 121, - .baseSpAttack = 127, - .baseSpDefense = 73, - .types = { TYPE_POISON, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 243, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ULTRA_BEAST, - }, - - [SPECIES_STAKATAKA] = - { - .baseHP = 61, - .baseAttack = 131, - .baseDefense = 211, - .baseSpeed = 13, - .baseSpAttack = 53, - .baseSpDefense = 101, - .types = { TYPE_ROCK, TYPE_STEEL}, - .catchRate = 30, - .expYield = 257, - .evYield_Defense = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = TRUE, - .flags = SPECIES_FLAG_ULTRA_BEAST, - }, - - [SPECIES_BLACEPHALON] = - { - .baseHP = 53, - .baseAttack = 127, - .baseDefense = 53, - .baseSpeed = 107, - .baseSpAttack = 151, - .baseSpDefense = 79, - .types = { TYPE_FIRE, TYPE_GHOST}, - .catchRate = 30, - .expYield = 257, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = TRUE, - .flags = SPECIES_FLAG_ULTRA_BEAST, - }, - - [SPECIES_ZERAORA] = - { - .baseHP = 88, - .baseAttack = 112, - .baseDefense = 75, - .baseSpeed = 143, - .baseSpAttack = 102, - .baseSpDefense = 80, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 3, - .expYield = 270, - .evYield_Speed = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_VOLT_ABSORB, ABILITY_NONE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - - [SPECIES_MELTAN] = - { - .baseHP = 46, - .baseAttack = 65, - .baseDefense = 65, - .baseSpeed = 34, - .baseSpAttack = 55, - .baseSpDefense = 35, - .types = { TYPE_STEEL, TYPE_STEEL}, - .catchRate = 3, - .expYield = 135, - .evYield_Attack = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_MAGNET_PULL, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - - [SPECIES_MELMETAL] = - { - .baseHP = 135, - .baseAttack = 143, - .baseDefense = 143, - .baseSpeed = 34, - .baseSpAttack = 80, - .baseSpDefense = 65, - .types = { TYPE_STEEL, TYPE_STEEL}, - .catchRate = 3, - .expYield = 270, - .evYield_Attack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_IRON_FIST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, -#endif - -#if P_GEN_8_POKEMON == TRUE - [SPECIES_GROOKEY] = - { - .baseHP = 50, - .baseAttack = 65, - .baseDefense = 50, - .baseSpeed = 65, - .baseSpAttack = 40, - .baseSpDefense = 40, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 45, - .expYield = 62, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_THWACKEY] = - { - .baseHP = 70, - .baseAttack = 85, - .baseDefense = 70, - .baseSpeed = 80, - .baseSpAttack = 55, - .baseSpDefense = 60, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 45, - .expYield = 147, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_RILLABOOM] = - { - .baseHP = 100, - .baseAttack = 125, - .baseDefense = 90, - .baseSpeed = 85, - .baseSpAttack = 60, - .baseSpDefense = 70, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 45, - .expYield = 265, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_SCORBUNNY] = - { - .baseHP = 50, - .baseAttack = 71, - .baseDefense = 40, - .baseSpeed = 69, - .baseSpAttack = 40, - .baseSpDefense = 40, - .types = { TYPE_FIRE, TYPE_FIRE}, - .catchRate = 45, - .expYield = 62, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_RABOOT] = - { - .baseHP = 65, - .baseAttack = 86, - .baseDefense = 60, - .baseSpeed = 94, - .baseSpAttack = 55, - .baseSpDefense = 60, - .types = { TYPE_FIRE, TYPE_FIRE}, - .catchRate = 45, - .expYield = 147, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_CINDERACE] = - { - .baseHP = 80, - .baseAttack = 116, - .baseDefense = 75, - .baseSpeed = 119, - .baseSpAttack = 65, - .baseSpDefense = 75, - .types = { TYPE_FIRE, TYPE_FIRE}, - .catchRate = 45, - .expYield = 265, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_SOBBLE] = - { - .baseHP = 50, - .baseAttack = 40, - .baseDefense = 40, - .baseSpeed = 70, - .baseSpAttack = 70, - .baseSpDefense = 40, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 45, - .expYield = 62, - .evYield_Speed = 1, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_DRIZZILE] = - { - .baseHP = 65, - .baseAttack = 60, - .baseDefense = 55, - .baseSpeed = 90, - .baseSpAttack = 95, - .baseSpDefense = 55, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 45, - .expYield = 147, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_INTELEON] = - { - .baseHP = 70, - .baseAttack = 85, - .baseDefense = 65, - .baseSpeed = 120, - .baseSpAttack = 125, - .baseSpDefense = 65, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 45, - .expYield = 265, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SKWOVET] = - { - .baseHP = 70, - .baseAttack = 55, - .baseDefense = 55, - .baseSpeed = 25, - .baseSpAttack = 35, - .baseSpDefense = 35, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 255, - .expYield = 55, - .evYield_HP = 1, - .itemRare = ITEM_ORAN_BERRY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_CHEEK_POUCH, ABILITY_NONE, ABILITY_GLUTTONY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_GREEDENT] = - { - .baseHP = 120, - .baseAttack = 95, - .baseDefense = 95, - .baseSpeed = 20, - .baseSpAttack = 55, - .baseSpDefense = 75, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 90, - .expYield = 161, - .evYield_HP = 2, - .itemRare = ITEM_SITRUS_BERRY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_CHEEK_POUCH, ABILITY_NONE, ABILITY_GLUTTONY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_ROOKIDEE] = - { - .baseHP = 38, - .baseAttack = 47, - .baseDefense = 35, - .baseSpeed = 57, - .baseSpAttack = 33, - .baseSpDefense = 35, - .types = { TYPE_FLYING, TYPE_FLYING}, - .catchRate = 255, - .expYield = 49, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_UNNERVE, ABILITY_BIG_PECKS}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_CORVISQUIRE] = - { - .baseHP = 68, - .baseAttack = 67, - .baseDefense = 55, - .baseSpeed = 77, - .baseSpAttack = 43, - .baseSpDefense = 55, - .types = { TYPE_FLYING, TYPE_FLYING}, - .catchRate = 120, - .expYield = 128, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_UNNERVE, ABILITY_BIG_PECKS}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_CORVIKNIGHT] = - { - .baseHP = 98, - .baseAttack = 87, - .baseDefense = 105, - .baseSpeed = 67, - .baseSpAttack = 53, - .baseSpDefense = 85, - .types = { TYPE_FLYING, TYPE_STEEL}, - .catchRate = 45, - .expYield = 248, - .evYield_Defense = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_PRESSURE, ABILITY_UNNERVE, ABILITY_MIRROR_ARMOR}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_BLIPBUG] = - { - .baseHP = 25, - .baseAttack = 20, - .baseDefense = 20, - .baseSpeed = 45, - .baseSpAttack = 25, - .baseSpDefense = 45, - .types = { TYPE_BUG, TYPE_BUG}, - .catchRate = 255, - .expYield = 36, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_COMPOUND_EYES, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_DOTTLER] = - { - .baseHP = 50, - .baseAttack = 35, - .baseDefense = 80, - .baseSpeed = 30, - .baseSpAttack = 50, - .baseSpDefense = 90, - .types = { TYPE_BUG, TYPE_PSYCHIC}, - .catchRate = 120, - .expYield = 117, - .evYield_SpDefense = 2, - .itemRare = ITEM_PSYCHIC_SEED, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_COMPOUND_EYES, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_ORBEETLE] = - { - .baseHP = 60, - .baseAttack = 45, - .baseDefense = 110, - .baseSpeed = 90, - .baseSpAttack = 80, - .baseSpDefense = 120, - .types = { TYPE_BUG, TYPE_PSYCHIC}, - .catchRate = 45, - .expYield = 253, - .evYield_SpDefense = 3, - .itemRare = ITEM_PSYCHIC_SEED, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_FRISK, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_NICKIT] = - { - .baseHP = 40, - .baseAttack = 28, - .baseDefense = 28, - .baseSpeed = 50, - .baseSpAttack = 47, - .baseSpDefense = 52, - .types = { TYPE_DARK, TYPE_DARK}, - .catchRate = 255, - .expYield = 49, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_UNBURDEN, ABILITY_STAKEOUT}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_THIEVUL] = - { - .baseHP = 70, - .baseAttack = 58, - .baseDefense = 58, - .baseSpeed = 90, - .baseSpAttack = 87, - .baseSpDefense = 92, - .types = { TYPE_DARK, TYPE_DARK}, - .catchRate = 127, - .expYield = 159, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_UNBURDEN, ABILITY_STAKEOUT}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_GOSSIFLEUR] = - { - .baseHP = 40, - .baseAttack = 40, - .baseDefense = 60, - .baseSpeed = 10, - .baseSpAttack = 40, - .baseSpDefense = 60, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 190, - .expYield = 50, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_COTTON_DOWN, ABILITY_REGENERATOR, ABILITY_EFFECT_SPORE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_ELDEGOSS] = - { - .baseHP = 60, - .baseAttack = 50, - .baseDefense = 90, - .baseSpeed = 60, - .baseSpAttack = 80, - .baseSpDefense = 120, - .types = { TYPE_GRASS, TYPE_GRASS}, - .catchRate = 75, - .expYield = 161, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_COTTON_DOWN, ABILITY_REGENERATOR, ABILITY_EFFECT_SPORE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_WOOLOO] = - { - .baseHP = 42, - .baseAttack = 40, - .baseDefense = 55, - .baseSpeed = 48, - .baseSpAttack = 40, - .baseSpDefense = 45, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 255, - .expYield = 122, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_FLUFFY, ABILITY_RUN_AWAY, ABILITY_BULLETPROOF}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_DUBWOOL] = - { - .baseHP = 72, - .baseAttack = 80, - .baseDefense = 100, - .baseSpeed = 88, - .baseSpAttack = 60, - .baseSpDefense = 90, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 127, - .expYield = 172, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_FLUFFY, ABILITY_STEADFAST, ABILITY_BULLETPROOF}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_CHEWTLE] = - { - .baseHP = 50, - .baseAttack = 64, - .baseDefense = 50, - .baseSpeed = 44, - .baseSpAttack = 38, - .baseSpDefense = 38, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 255, - .expYield = 57, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_STRONG_JAW, ABILITY_SHELL_ARMOR, ABILITY_SWIFT_SWIM}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_DREDNAW] = - { - .baseHP = 90, - .baseAttack = 115, - .baseDefense = 90, - .baseSpeed = 74, - .baseSpAttack = 48, - .baseSpDefense = 68, - .types = { TYPE_WATER, TYPE_ROCK}, - .catchRate = 75, - .expYield = 170, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_STRONG_JAW, ABILITY_SHELL_ARMOR, ABILITY_SWIFT_SWIM}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_YAMPER] = - { - .baseHP = 59, - .baseAttack = 45, - .baseDefense = 50, - .baseSpeed = 26, - .baseSpAttack = 40, - .baseSpDefense = 50, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 255, - .expYield = 54, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BALL_FETCH, ABILITY_NONE, ABILITY_RATTLED}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_BOLTUND] = - { - .baseHP = 69, - .baseAttack = 90, - .baseDefense = 60, - .baseSpeed = 121, - .baseSpAttack = 90, - .baseSpDefense = 60, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 45, - .expYield = 172, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_STRONG_JAW, ABILITY_NONE, ABILITY_COMPETITIVE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_ROLYCOLY] = - { - .baseHP = 30, - .baseAttack = 40, - .baseDefense = 50, - .baseSpeed = 30, - .baseSpAttack = 40, - .baseSpDefense = 50, - .types = { TYPE_ROCK, TYPE_ROCK}, - .catchRate = 255, - .expYield = 48, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STEAM_ENGINE, ABILITY_HEATPROOF, ABILITY_FLASH_FIRE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_CARKOL] = - { - .baseHP = 80, - .baseAttack = 60, - .baseDefense = 90, - .baseSpeed = 50, - .baseSpAttack = 60, - .baseSpDefense = 70, - .types = { TYPE_ROCK, TYPE_FIRE}, - .catchRate = 120, - .expYield = 144, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STEAM_ENGINE, ABILITY_FLAME_BODY, ABILITY_FLASH_FIRE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_COALOSSAL] = - { - .baseHP = 110, - .baseAttack = 80, - .baseDefense = 120, - .baseSpeed = 30, - .baseSpAttack = 80, - .baseSpDefense = 90, - .types = { TYPE_ROCK, TYPE_FIRE}, - .catchRate = 45, - .expYield = 255, - .evYield_Defense = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STEAM_ENGINE, ABILITY_FLAME_BODY, ABILITY_FLASH_FIRE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_APPLIN] = - { - .baseHP = 40, - .baseAttack = 40, - .baseDefense = 80, - .baseSpeed = 20, - .baseSpAttack = 40, - .baseSpDefense = 40, - .types = { TYPE_GRASS, TYPE_DRAGON}, - .catchRate = 255, - .expYield = 52, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_BULLETPROOF}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_FLAPPLE] = - { - .baseHP = 70, - .baseAttack = 110, - .baseDefense = 80, - .baseSpeed = 70, - .baseSpAttack = 95, - .baseSpDefense = 60, - .types = { TYPE_GRASS, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 170, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_HUSTLE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_APPLETUN] = - { - .baseHP = 110, - .baseAttack = 85, - .baseDefense = 80, - .baseSpeed = 30, - .baseSpAttack = 100, - .baseSpDefense = 80, - .types = { TYPE_GRASS, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 170, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_THICK_FAT}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_SILICOBRA] = - { - .baseHP = 52, - .baseAttack = 57, - .baseDefense = 75, - .baseSpeed = 46, - .baseSpAttack = 35, - .baseSpDefense = 50, - .types = { TYPE_GROUND, TYPE_GROUND}, - .catchRate = 255, - .expYield = 63, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SAND_SPIT, ABILITY_SHED_SKIN, ABILITY_SAND_VEIL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_SANDACONDA] = - { - .baseHP = 72, - .baseAttack = 107, - .baseDefense = 125, - .baseSpeed = 71, - .baseSpAttack = 65, - .baseSpDefense = 70, - .types = { TYPE_GROUND, TYPE_GROUND}, - .catchRate = 120, - .expYield = 179, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SAND_SPIT, ABILITY_SHED_SKIN, ABILITY_SAND_VEIL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_CRAMORANT] = CRAMORANT_SPECIES_INFO, - - [SPECIES_ARROKUDA] = - { - .baseHP = 41, - .baseAttack = 63, - .baseDefense = 40, - .baseSpeed = 66, - .baseSpAttack = 40, - .baseSpDefense = 30, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 255, - .expYield = 56, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_PROPELLER_TAIL}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_BARRASKEWDA] = - { - .baseHP = 61, - .baseAttack = 123, - .baseDefense = 60, - .baseSpeed = 136, - .baseSpAttack = 60, - .baseSpDefense = 50, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 60, - .expYield = 172, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_PROPELLER_TAIL}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_TOXEL] = - { - .baseHP = 40, - .baseAttack = 38, - .baseDefense = 35, - .baseSpeed = 40, - .baseSpAttack = 54, - .baseSpDefense = 35, - .types = { TYPE_ELECTRIC, TYPE_POISON}, - .catchRate = 75, - .expYield = 48, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_RATTLED, ABILITY_STATIC, ABILITY_KLUTZ}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_TOXTRICITY] = TOXTRICITY_SPECIES_INFO(ABILITY_PLUS), - - [SPECIES_SIZZLIPEDE] = - { - .baseHP = 50, - .baseAttack = 65, - .baseDefense = 45, - .baseSpeed = 45, - .baseSpAttack = 50, - .baseSpDefense = 50, - .types = { TYPE_FIRE, TYPE_BUG}, - .catchRate = 190, - .expYield = 61, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_CENTISKORCH] = - { - .baseHP = 100, - .baseAttack = 115, - .baseDefense = 65, - .baseSpeed = 65, - .baseSpAttack = 90, - .baseSpDefense = 90, - .types = { TYPE_FIRE, TYPE_BUG}, - .catchRate = 75, - .expYield = 184, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_CLOBBOPUS] = - { - .baseHP = 50, - .baseAttack = 68, - .baseDefense = 60, - .baseSpeed = 32, - .baseSpAttack = 50, - .baseSpDefense = 50, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 180, - .expYield = 62, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_LIMBER, ABILITY_NONE, ABILITY_TECHNICIAN}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_GRAPPLOCT] = - { - .baseHP = 80, - .baseAttack = 118, - .baseDefense = 90, - .baseSpeed = 42, - .baseSpAttack = 70, - .baseSpDefense = 80, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 168, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_LIMBER, ABILITY_NONE, ABILITY_TECHNICIAN}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SINISTEA] = SINISTEA_SPECIES_INFO, - - [SPECIES_POLTEAGEIST] = POLTEAGEIST_SPECIES_INFO, - - [SPECIES_HATENNA] = - { - .baseHP = 42, - .baseAttack = 30, - .baseDefense = 45, - .baseSpeed = 39, - .baseSpAttack = 56, - .baseSpDefense = 53, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 235, - .expYield = 53, - .evYield_SpAttack = 1, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_HATTREM] = - { - .baseHP = 57, - .baseAttack = 40, - .baseDefense = 65, - .baseSpeed = 49, - .baseSpAttack = 86, - .baseSpDefense = 73, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 120, - .expYield = 130, - .evYield_SpAttack = 2, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_HATTERENE] = - { - .baseHP = 57, - .baseAttack = 90, - .baseDefense = 95, - .baseSpeed = 29, - .baseSpAttack = 136, - .baseSpDefense = 103, - .types = { TYPE_PSYCHIC, TYPE_FAIRY}, - .catchRate = 45, - .expYield = 255, - .evYield_SpAttack = 3, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_IMPIDIMP] = - { - .baseHP = 45, - .baseAttack = 45, - .baseDefense = 30, - .baseSpeed = 50, - .baseSpAttack = 55, - .baseSpDefense = 40, - .types = { TYPE_DARK, TYPE_FAIRY}, - .catchRate = 255, - .expYield = 53, - .evYield_SpAttack = 1, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_MORGREM] = - { - .baseHP = 65, - .baseAttack = 60, - .baseDefense = 45, - .baseSpeed = 70, - .baseSpAttack = 75, - .baseSpDefense = 55, - .types = { TYPE_DARK, TYPE_FAIRY}, - .catchRate = 120, - .expYield = 130, - .evYield_SpAttack = 2, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - }, - - [SPECIES_GRIMMSNARL] = - { - .baseHP = 95, - .baseAttack = 120, - .baseDefense = 65, - .baseSpeed = 60, - .baseSpAttack = 95, - .baseSpDefense = 75, - .types = { TYPE_DARK, TYPE_FAIRY}, - .catchRate = 45, - .expYield = 255, - .evYield_Attack = 3, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_OBSTAGOON] = - { - .baseHP = 93, - .baseAttack = 90, - .baseDefense = 101, - .baseSpeed = 95, - .baseSpAttack = 60, - .baseSpDefense = 81, - .types = { TYPE_DARK, TYPE_NORMAL}, - .catchRate = 45, - .expYield = 260, - .evYield_Defense = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RECKLESS, ABILITY_GUTS, ABILITY_DEFIANT}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_PERRSERKER] = - { - .baseHP = 70, - .baseAttack = 110, - .baseDefense = 100, - .baseSpeed = 50, - .baseSpAttack = 50, - .baseSpDefense = 60, - .types = { TYPE_STEEL, TYPE_STEEL}, - .catchRate = 90, - .expYield = 154, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_TOUGH_CLAWS, ABILITY_STEELY_SPIRIT}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_CURSOLA] = - { - .baseHP = 60, - .baseAttack = 95, - .baseDefense = 50, - .baseSpeed = 30, - .baseSpAttack = 145, - .baseSpDefense = 130, - .types = { TYPE_GHOST, TYPE_GHOST}, - .catchRate = 30, - .expYield = 179, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_PERISH_BODY}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_SIRFETCHD] = - { - .baseHP = 62, - .baseAttack = 135, - .baseDefense = 95, - .baseSpeed = 65, - .baseSpAttack = 68, - .baseSpDefense = 82, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 177, - .evYield_Attack = 2, - .itemRare = ITEM_LEEK, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FIELD}, - .abilities = {ABILITY_STEADFAST, ABILITY_NONE, ABILITY_SCRAPPY}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_MR_RIME] = - { - .baseHP = 80, - .baseAttack = 85, - .baseDefense = 75, - .baseSpeed = 70, - .baseSpAttack = 110, - .baseSpDefense = 100, - .types = { TYPE_ICE, TYPE_PSYCHIC}, - .catchRate = 45, - .expYield = 182, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_TANGLED_FEET, ABILITY_SCREEN_CLEANER, ABILITY_ICE_BODY}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_RUNERIGUS] = - { - .baseHP = 58, - .baseAttack = 95, - .baseDefense = 145, - .baseSpeed = 30, - .baseSpAttack = 50, - .baseSpDefense = 105, - .types = { TYPE_GROUND, TYPE_GHOST}, - .catchRate = 90, - .expYield = 169, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_WANDERING_SPIRIT, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_MILCERY] = - { - .baseHP = 45, - .baseAttack = 40, - .baseDefense = 40, - .baseSpeed = 34, - .baseSpAttack = 50, - .baseSpDefense = 61, - .types = { TYPE_FAIRY, TYPE_FAIRY}, - .catchRate = 200, - .expYield = 54, - .evYield_SpDefense = 1, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_AROMA_VEIL}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_ALCREMIE] = ALCREMIE_SPECIES_INFO(BODY_COLOR_WHITE), - - [SPECIES_FALINKS] = - { - .baseHP = 65, - .baseAttack = 100, - .baseDefense = 100, - .baseSpeed = 75, - .baseSpAttack = 70, - .baseSpDefense = 60, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 165, - .evYield_Attack = 2, - .evYield_SpDefense = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_NONE, ABILITY_DEFIANT}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_PINCURCHIN] = - { - .baseHP = 48, - .baseAttack = 101, - .baseDefense = 95, - .baseSpeed = 15, - .baseSpAttack = 91, - .baseSpDefense = 85, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 75, - .expYield = 152, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_NONE, ABILITY_ELECTRIC_SURGE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_SNOM] = - { - .baseHP = 30, - .baseAttack = 25, - .baseDefense = 35, - .baseSpeed = 20, - .baseSpAttack = 45, - .baseSpDefense = 30, - .types = { TYPE_ICE, TYPE_BUG}, - .catchRate = 190, - .expYield = 37, - .evYield_SpAttack = 1, - .itemRare = ITEM_SNOWBALL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_ICE_SCALES}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_FROSMOTH] = - { - .baseHP = 70, - .baseAttack = 65, - .baseDefense = 60, - .baseSpeed = 65, - .baseSpAttack = 125, - .baseSpDefense = 90, - .types = { TYPE_ICE, TYPE_BUG}, - .catchRate = 75, - .expYield = 166, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_ICE_SCALES}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_STONJOURNER] = - { - .baseHP = 100, - .baseAttack = 125, - .baseDefense = 135, - .baseSpeed = 70, - .baseSpAttack = 20, - .baseSpDefense = 20, - .types = { TYPE_ROCK, TYPE_ROCK}, - .catchRate = 60, - .expYield = 165, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_POWER_SPOT, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_EISCUE] = - { - .baseHP = 75, - .baseAttack = 80, - .baseDefense = 110, - .baseSpeed = 50, - .baseSpAttack = 65, - .baseSpDefense = 90, - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 60, - .expYield = 165, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_ICE_FACE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_INDEEDEE] = - { - .baseHP = 60, - .baseAttack = 65, - .baseDefense = 55, - .baseSpeed = 95, - .baseSpAttack = 105, - .baseSpDefense = 95, - .types = { TYPE_PSYCHIC, TYPE_NORMAL}, - .catchRate = 30, - .expYield = 166, - .evYield_SpAttack = 2, - .genderRatio = MON_MALE, - .eggCycles = 40, - .friendship = 140, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_INNER_FOCUS, ABILITY_SYNCHRONIZE, ABILITY_PSYCHIC_SURGE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_MORPEKO] = MORPEKO_SPECIES_INFO, - - [SPECIES_CUFANT] = - { - .baseHP = 72, - .baseAttack = 80, - .baseDefense = 49, - .baseSpeed = 40, - .baseSpAttack = 40, - .baseSpDefense = 49, - .types = { TYPE_STEEL, TYPE_STEEL}, - .catchRate = 190, - .expYield = 66, - .evYield_Attack = 1, - .itemRare = ITEM_LAGGING_TAIL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_HEAVY_METAL}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - }, - - [SPECIES_COPPERAJAH] = - { - .baseHP = 122, - .baseAttack = 130, - .baseDefense = 69, - .baseSpeed = 30, - .baseSpAttack = 80, - .baseSpDefense = 69, - .types = { TYPE_STEEL, TYPE_STEEL}, - .catchRate = 90, - .expYield = 175, - .evYield_Attack = 2, - .itemRare = ITEM_LAGGING_TAIL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_HEAVY_METAL}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_DRACOZOLT] = - { - .baseHP = 90, - .baseAttack = 100, - .baseDefense = 90, - .baseSpeed = 75, - .baseSpAttack = 80, - .baseSpDefense = 70, - .types = { TYPE_ELECTRIC, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 177, - .evYield_Attack = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 35, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_VOLT_ABSORB, ABILITY_HUSTLE, ABILITY_SAND_RUSH}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_ARCTOZOLT] = - { - .baseHP = 90, - .baseAttack = 100, - .baseDefense = 90, - .baseSpeed = 55, - .baseSpAttack = 90, - .baseSpDefense = 80, - .types = { TYPE_ELECTRIC, TYPE_ICE}, - .catchRate = 45, - .expYield = 177, - .evYield_Attack = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 35, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_VOLT_ABSORB, ABILITY_STATIC, ABILITY_SLUSH_RUSH}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_DRACOVISH] = - { - .baseHP = 90, - .baseAttack = 90, - .baseDefense = 100, - .baseSpeed = 75, - .baseSpAttack = 70, - .baseSpDefense = 80, - .types = { TYPE_WATER, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 177, - .evYield_Defense = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 35, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_WATER_ABSORB, ABILITY_STRONG_JAW, ABILITY_SAND_RUSH}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_ARCTOVISH] = - { - .baseHP = 90, - .baseAttack = 90, - .baseDefense = 100, - .baseSpeed = 55, - .baseSpAttack = 80, - .baseSpDefense = 90, - .types = { TYPE_WATER, TYPE_ICE}, - .catchRate = 45, - .expYield = 177, - .evYield_Defense = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 35, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_WATER_ABSORB, ABILITY_ICE_BODY, ABILITY_SLUSH_RUSH}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_DURALUDON] = - { - .baseHP = 70, - .baseAttack = 95, - .baseDefense = 115, - .baseSpeed = 85, - .baseSpAttack = 120, - .baseSpDefense = 50, - .types = { TYPE_STEEL, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 187, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 30, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_LIGHT_METAL, ABILITY_HEAVY_METAL, ABILITY_STALWART}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_DREEPY] = - { - .baseHP = 28, - .baseAttack = 60, - .baseDefense = 30, - .baseSpeed = 82, - .baseSpAttack = 40, - .baseSpDefense = 30, - .types = { TYPE_DRAGON, TYPE_GHOST}, - .catchRate = 45, - .expYield = 54, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_CLEAR_BODY, ABILITY_INFILTRATOR, ABILITY_CURSED_BODY}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_DRAKLOAK] = - { - .baseHP = 68, - .baseAttack = 80, - .baseDefense = 50, - .baseSpeed = 102, - .baseSpAttack = 60, - .baseSpDefense = 50, - .types = { TYPE_DRAGON, TYPE_GHOST}, - .catchRate = 45, - .expYield = 144, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_CLEAR_BODY, ABILITY_INFILTRATOR, ABILITY_CURSED_BODY}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_DRAGAPULT] = - { - .baseHP = 88, - .baseAttack = 120, - .baseDefense = 75, - .baseSpeed = 142, - .baseSpAttack = 100, - .baseSpDefense = 75, - .types = { TYPE_DRAGON, TYPE_GHOST}, - .catchRate = 45, - .expYield = 300, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_CLEAR_BODY, ABILITY_INFILTRATOR, ABILITY_CURSED_BODY}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_ZACIAN] = - { - .baseHP = 92, - .baseAttack = P_UPDATED_STATS >= GEN_9 ? 120 : 130, - .baseDefense = 115, - .baseSpeed = 138, - .baseSpAttack = 80, - .baseSpDefense = 115, - .types = { TYPE_FAIRY, TYPE_FAIRY}, - .catchRate = 10, - .expYield = 335, - .evYield_Speed = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_INTREPID_SWORD, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_ZAMAZENTA] = - { - .baseHP = 92, - .baseAttack = P_UPDATED_STATS >= GEN_9 ? 120 : 130, - .baseDefense = 115, - .baseSpeed = 138, - .baseSpAttack = 80, - .baseSpDefense = 115, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 10, - .expYield = 335, - .evYield_Speed = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_DAUNTLESS_SHIELD, ABILITY_NONE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_ETERNATUS] = - { - .baseHP = 140, - .baseAttack = 85, - .baseDefense = 95, - .baseSpeed = 130, - .baseSpAttack = 145, - .baseSpDefense = 95, - .types = { TYPE_POISON, TYPE_DRAGON}, - .catchRate = 255, - .expYield = 345, - .evYield_HP = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_KUBFU] = - { - .baseHP = 60, - .baseAttack = 90, - .baseDefense = 60, - .baseSpeed = 72, - .baseSpAttack = 53, - .baseSpDefense = 50, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 3, - .expYield = 77, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 120, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_URSHIFU] = - { - .baseHP = 100, - .baseAttack = 130, - .baseDefense = 100, - .baseSpeed = 97, - .baseSpAttack = 63, - .baseSpDefense = 60, - .types = { TYPE_FIGHTING, TYPE_DARK}, - .catchRate = 3, - .expYield = 275, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 120, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_ZARUDE] = ZARUDE_SPECIES_INFO, - - [SPECIES_REGIELEKI] = - { - .baseHP = 80, - .baseAttack = 100, - .baseDefense = 50, - .baseSpeed = 200, - .baseSpAttack = 100, - .baseSpDefense = 50, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 3, - .expYield = 290, - .evYield_Speed = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_TRANSISTOR, ABILITY_NONE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_REGIDRAGO] = - { - .baseHP = 200, - .baseAttack = 100, - .baseDefense = 50, - .baseSpeed = 80, - .baseSpAttack = 100, - .baseSpDefense = 50, - .types = { TYPE_DRAGON, TYPE_DRAGON}, - .catchRate = 3, - .expYield = 290, - .evYield_HP = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_DRAGONS_MAW, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_GLASTRIER] = - { - .baseHP = 100, - .baseAttack = 145, - .baseDefense = 130, - .baseSpeed = 30, - .baseSpAttack = 65, - .baseSpDefense = 110, - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 3, - .expYield = 290, - .evYield_Attack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_CHILLING_NEIGH, ABILITY_NONE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_SPECTRIER] = - { - .baseHP = 100, - .baseAttack = 65, - .baseDefense = 60, - .baseSpeed = 130, - .baseSpAttack = 145, - .baseSpDefense = 80, - .types = { TYPE_GHOST, TYPE_GHOST}, - .catchRate = 3, - .expYield = 290, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_GRIM_NEIGH, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_CALYREX] = - { - .baseHP = 100, - .baseAttack = 80, - .baseDefense = 80, - .baseSpeed = 80, - .baseSpAttack = 80, - .baseSpDefense = 80, - .types = { TYPE_PSYCHIC, TYPE_GRASS}, - .catchRate = 3, - .expYield = 250, - .evYield_HP = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 100, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_UNNERVE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_WYRDEER] = - { - .baseHP = 103, - .baseAttack = 105, - .baseDefense = 72, - .baseSpeed = 65, - .baseSpAttack = 105, - .baseSpDefense = 75, - .types = { TYPE_NORMAL, TYPE_PSYCHIC}, - .catchRate = 45, - .expYield = 184, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_FRISK, ABILITY_SAP_SIPPER}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - }, - - [SPECIES_KLEAVOR] = - { - .baseHP = 70, - .baseAttack = 135, - .baseDefense = 95, - .baseSpeed = 85, - .baseSpAttack = 45, - .baseSpDefense = 70, - .types = { TYPE_BUG, TYPE_ROCK}, - .catchRate = 25, - .expYield = 175, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SWARM, ABILITY_SHEER_FORCE, ABILITY_SHARPNESS}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_URSALUNA] = - { - .baseHP = 130, - .baseAttack = 140, - .baseDefense = 105, - .baseSpeed = 50, - .baseSpAttack = 45, - .baseSpDefense = 80, - .types = { TYPE_GROUND, TYPE_NORMAL}, - .catchRate = 75, - .expYield = 194, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_GUTS, ABILITY_BULLETPROOF, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_BASCULEGION] = - { - .baseHP = 120, - .baseAttack = 112, - .baseDefense = 65, - .baseSpeed = 78, - .baseSpAttack = 80, - .baseSpDefense = 75, - .types = { TYPE_WATER, TYPE_GHOST}, - .catchRate = 25, - .expYield = 186, - .evYield_HP = 2, - .genderRatio = MON_MALE, - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_RATTLED, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_BASCULEGION_FEMALE] = - { - .baseHP = 120, - .baseAttack = 92, - .baseDefense = 65, - .baseSpeed = 78, - .baseSpAttack = 100, - .baseSpDefense = 75, - .types = { TYPE_WATER, TYPE_GHOST}, - .catchRate = 25, - .expYield = 186, - .evYield_HP = 2, - .genderRatio = MON_FEMALE, - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_RATTLED, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_SNEASLER] = - { - .baseHP = 80, - .baseAttack = 130, - .baseDefense = 60, - .baseSpeed = 120, - .baseSpAttack = 40, - .baseSpDefense = 80, - .types = { TYPE_FIGHTING, TYPE_POISON}, - .catchRate = 135, - .expYield = 179, - .evYield_Attack = 1, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_PRESSURE, ABILITY_UNBURDEN, ABILITY_POISON_TOUCH}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_OVERQWIL] = - { - .baseHP = 85, - .baseAttack = 115, - .baseDefense = 95, - .baseSpeed = 85, - .baseSpAttack = 65, - .baseSpDefense = 65, - .types = { TYPE_DARK, TYPE_POISON}, - .catchRate = 135, - .expYield = 180, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_ENAMORUS] = - { - .baseHP = 74, - .baseAttack = 115, - .baseDefense = 70, - .baseSpeed = 106, - .baseSpAttack = 135, - .baseSpDefense = 80, - .types = { TYPE_FAIRY, TYPE_FLYING}, - .catchRate = 3, - .expYield = 261, - .evYield_SpAttack = 3, - .genderRatio = MON_FEMALE, - .eggCycles = 120, - .friendship = 90, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_HEALER, ABILITY_NONE, ABILITY_CONTRARY}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, -#endif - - [SPECIES_VENUSAUR_MEGA] = - { - .baseHP = 80, - .baseAttack = 100, - .baseDefense = 123, - .baseSpeed = 80, - .baseSpAttack = 122, - .baseSpDefense = 120, - .types = { TYPE_GRASS, TYPE_POISON}, - .catchRate = 45, - .expYield = 281, - .evYield_SpAttack = 2, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, - .abilities = {ABILITY_THICK_FAT, ABILITY_THICK_FAT}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_CHARIZARD_MEGA_X] = - { - .baseHP = 78, - .baseAttack = 130, - .baseDefense = 111, - .baseSpeed = 100, - .baseSpAttack = 130, - .baseSpDefense = 85, - .types = { TYPE_FIRE, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 285, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_CHARIZARD_MEGA_Y] = - { - .baseHP = 78, - .baseAttack = 104, - .baseDefense = 78, - .baseSpeed = 100, - .baseSpAttack = 159, - .baseSpDefense = 115, - .types = { TYPE_FIRE, TYPE_FLYING}, - .catchRate = 45, - .expYield = 285, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_DROUGHT, ABILITY_DROUGHT}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_BLASTOISE_MEGA] = - { - .baseHP = 79, - .baseAttack = 103, - .baseDefense = 120, - .baseSpeed = 78, - .baseSpAttack = 135, - .baseSpDefense = 115, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 45, - .expYield = 284, - .evYield_SpDefense = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_MEGA_LAUNCHER, ABILITY_MEGA_LAUNCHER}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_BEEDRILL_MEGA] = - { - .baseHP = 65, - .baseAttack = 150, - .baseDefense = 40, - .baseSpeed = 145, - .baseSpAttack = 15, - .baseSpDefense = 80, - .types = { TYPE_BUG, TYPE_POISON}, - .catchRate = 45, - .expYield = 223, - .evYield_Attack = 2, - .evYield_SpDefense = 1, - .itemRare = ITEM_POISON_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_ADAPTABILITY, ABILITY_ADAPTABILITY}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_PIDGEOT_MEGA] = - { - .baseHP = 83, - .baseAttack = 80, - .baseDefense = 80, - .baseSpeed = 121, - .baseSpAttack = 135, - .baseSpDefense = 80, - .types = { TYPE_NORMAL, TYPE_FLYING}, - .catchRate = 45, - .expYield = 261, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_NO_GUARD, ABILITY_NO_GUARD}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_ALAKAZAM_MEGA] = - { - .baseHP = 55, - .baseAttack = 50, - .baseDefense = 65, - .baseSpeed = 150, - .baseSpAttack = 175, - #if P_UPDATED_STATS >= GEN_7 - .baseSpDefense = 105, - #else - .baseSpDefense = 95, - #endif - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 50, - .expYield = 270, - .evYield_SpAttack = 3, - .itemRare = ITEM_TWISTED_SPOON, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_TRACE, ABILITY_TRACE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_SLOWBRO_MEGA] = - { - .baseHP = 95, - .baseAttack = 75, - .baseDefense = 180, - .baseSpeed = 30, - .baseSpAttack = 130, - .baseSpDefense = 80, - .types = { TYPE_WATER, TYPE_PSYCHIC}, - .catchRate = 75, - .expYield = 207, - .evYield_Defense = 2, - .itemRare = ITEM_KINGS_ROCK, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_SHELL_ARMOR, ABILITY_SHELL_ARMOR}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_GENGAR_MEGA] = - { - .baseHP = 60, - .baseAttack = 65, - .baseDefense = 80, - .baseSpeed = 130, - .baseSpAttack = 170, - .baseSpDefense = 95, - .types = { TYPE_GHOST, TYPE_POISON}, - .catchRate = 45, - .expYield = 270, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_SHADOW_TAG, ABILITY_SHADOW_TAG}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_KANGASKHAN_MEGA] = - { - .baseHP = 105, - .baseAttack = 125, - .baseDefense = 100, - .baseSpeed = 100, - .baseSpAttack = 60, - .baseSpDefense = 100, - .types = { TYPE_NORMAL, TYPE_NORMAL}, - .catchRate = 45, - .expYield = 207, - .evYield_HP = 2, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_PARENTAL_BOND, ABILITY_PARENTAL_BOND}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_PINSIR_MEGA] = - { - .baseHP = 65, - .baseAttack = 155, - .baseDefense = 120, - .baseSpeed = 105, - .baseSpAttack = 65, - .baseSpDefense = 90, - .types = { TYPE_BUG, TYPE_FLYING}, - .catchRate = 45, - .expYield = 210, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_AERILATE, ABILITY_AERILATE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_GYARADOS_MEGA] = - { - .baseHP = 95, - .baseAttack = 155, - .baseDefense = 109, - .baseSpeed = 81, - .baseSpAttack = 70, - .baseSpDefense = 130, - .types = { TYPE_WATER, TYPE_DARK}, - .catchRate = 45, - .expYield = 224, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 5, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_MOLD_BREAKER, ABILITY_MOLD_BREAKER}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_AERODACTYL_MEGA] = - { - .baseHP = 80, - .baseAttack = 135, - .baseDefense = 85, - .baseSpeed = 150, - .baseSpAttack = 70, - .baseSpDefense = 95, - .types = { TYPE_ROCK, TYPE_FLYING}, - .catchRate = 45, - .expYield = 215, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 35, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_MEWTWO_MEGA_X] = - { - .baseHP = 106, - .baseAttack = 190, - .baseDefense = 100, - .baseSpeed = 130, - .baseSpAttack = 154, - .baseSpDefense = 100, - .types = { TYPE_PSYCHIC, TYPE_FIGHTING}, - .catchRate = 3, - .expYield = 351, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_STEADFAST, ABILITY_STEADFAST}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_MEWTWO_MEGA_Y] = - { - .baseHP = 106, - .baseAttack = 150, - .baseDefense = 70, - .baseSpeed = 140, - .baseSpAttack = 194, - .baseSpDefense = 120, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 3, - .expYield = 351, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_INSOMNIA, ABILITY_INSOMNIA}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_AMPHAROS_MEGA] = - { - .baseHP = 90, - .baseAttack = 95, - .baseDefense = 105, - .baseSpeed = 45, - .baseSpAttack = 165, - .baseSpDefense = 110, - .types = { TYPE_ELECTRIC, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 275, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD}, - .abilities = {ABILITY_MOLD_BREAKER, ABILITY_MOLD_BREAKER}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_STEELIX_MEGA] = - { - .baseHP = 75, - .baseAttack = 125, - .baseDefense = 230, - .baseSpeed = 30, - .baseSpAttack = 55, - .baseSpDefense = 95, - .types = { TYPE_STEEL, TYPE_GROUND}, - .catchRate = 25, - .expYield = 214, - .evYield_Defense = 2, - .itemRare = ITEM_METAL_COAT, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_SAND_FORCE, ABILITY_SAND_FORCE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_SCIZOR_MEGA] = - { - .baseHP = 70, - .baseAttack = 150, - .baseDefense = 140, - .baseSpeed = 75, - .baseSpAttack = 65, - .baseSpDefense = 100, - .types = { TYPE_BUG, TYPE_STEEL}, - .catchRate = 25, - .expYield = 210, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_TECHNICIAN, ABILITY_TECHNICIAN}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_HERACROSS_MEGA] = - { - .baseHP = 80, - .baseAttack = 185, - .baseDefense = 115, - .baseSpeed = 75, - .baseSpAttack = 40, - .baseSpDefense = 105, - .types = { TYPE_BUG, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 210, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_SKILL_LINK, ABILITY_SKILL_LINK}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_HOUNDOOM_MEGA] = - { - .baseHP = 75, - .baseAttack = 90, - .baseDefense = 90, - .baseSpeed = 115, - .baseSpAttack = 140, - .baseSpDefense = 90, - .types = { TYPE_DARK, TYPE_FIRE}, - .catchRate = 45, - .expYield = 210, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SOLAR_POWER, ABILITY_SOLAR_POWER}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_TYRANITAR_MEGA] = - { - .baseHP = 100, - .baseAttack = 164, - .baseDefense = 150, - .baseSpeed = 71, - .baseSpAttack = 95, - .baseSpDefense = 120, - .types = { TYPE_ROCK, TYPE_DARK}, - .catchRate = 45, - .expYield = 315, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_SAND_STREAM, ABILITY_SAND_STREAM}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_SCEPTILE_MEGA] = - { - .baseHP = 70, - .baseAttack = 110, - .baseDefense = 75, - .baseSpeed = 145, - .baseSpAttack = 145, - .baseSpDefense = 85, - .types = { TYPE_GRASS, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 284, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_LIGHTNING_ROD}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_BLAZIKEN_MEGA] = - { - .baseHP = 80, - .baseAttack = 160, - .baseDefense = 80, - .baseSpeed = 100, - .baseSpAttack = 130, - .baseSpDefense = 80, - .types = { TYPE_FIRE, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 284, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SPEED_BOOST, ABILITY_SPEED_BOOST}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_SWAMPERT_MEGA] = - { - .baseHP = 100, - .baseAttack = 150, - .baseDefense = 110, - .baseSpeed = 70, - .baseSpAttack = 95, - .baseSpDefense = 110, - .types = { TYPE_WATER, TYPE_GROUND}, - .catchRate = 45, - .expYield = 286, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SWIFT_SWIM}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_GARDEVOIR_MEGA] = - { - .baseHP = 68, - .baseAttack = 85, - .baseDefense = 65, - .baseSpeed = 100, - .baseSpAttack = 165, - .baseSpDefense = 135, - .types = { TYPE_PSYCHIC, TYPE_FAIRY}, - .catchRate = 45, - .expYield = 278, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_PIXILATE, ABILITY_PIXILATE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_SABLEYE_MEGA] = - { - .baseHP = 50, - .baseAttack = 85, - .baseDefense = 125, - .baseSpeed = 20, - .baseSpAttack = 85, - .baseSpDefense = 115, - .types = { TYPE_DARK, TYPE_GHOST}, - .catchRate = 45, - .expYield = 168, - .evYield_Attack = 1, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_MAWILE_MEGA] = - { - .baseHP = 50, - .baseAttack = 105, - .baseDefense = 125, - .baseSpeed = 50, - .baseSpAttack = 55, - .baseSpDefense = 95, - .types = { TYPE_STEEL, TYPE_FAIRY}, - .catchRate = 45, - .expYield = 168, - .evYield_Attack = 1, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_HUGE_POWER, ABILITY_HUGE_POWER}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_AGGRON_MEGA] = - { - .baseHP = 70, - .baseAttack = 140, - .baseDefense = 230, - .baseSpeed = 50, - .baseSpAttack = 60, - .baseSpDefense = 80, - .types = { TYPE_STEEL, TYPE_STEEL}, - .catchRate = 45, - .expYield = 284, - .evYield_Defense = 3, - .itemRare = ITEM_HARD_STONE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 35, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_FILTER, ABILITY_FILTER}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_MEDICHAM_MEGA] = - { - .baseHP = 60, - .baseAttack = 100, - .baseDefense = 85, - .baseSpeed = 100, - .baseSpAttack = 80, - .baseSpDefense = 85, - .types = { TYPE_FIGHTING, TYPE_PSYCHIC}, - .catchRate = 90, - .expYield = 179, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_PURE_POWER, ABILITY_PURE_POWER}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_MANECTRIC_MEGA] = - { - .baseHP = 70, - .baseAttack = 75, - .baseDefense = 80, - .baseSpeed = 135, - .baseSpAttack = 135, - .baseSpDefense = 80, - .types = { TYPE_ELECTRIC, TYPE_ELECTRIC}, - .catchRate = 45, - .expYield = 201, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_INTIMIDATE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_SHARPEDO_MEGA] = - { - .baseHP = 70, - .baseAttack = 140, - .baseDefense = 70, - .baseSpeed = 105, - .baseSpAttack = 110, - .baseSpDefense = 65, - .types = { TYPE_WATER, TYPE_DARK}, - .catchRate = 60, - .expYield = 196, - .evYield_Attack = 2, - .itemRare = ITEM_DEEP_SEA_TOOTH, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_STRONG_JAW, ABILITY_STRONG_JAW}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_CAMERUPT_MEGA] = - { - .baseHP = 70, - .baseAttack = 120, - .baseDefense = 100, - .baseSpeed = 20, - .baseSpAttack = 145, - .baseSpDefense = 105, - .types = { TYPE_FIRE, TYPE_GROUND}, - .catchRate = 150, - .expYield = 196, - .evYield_Attack = 1, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SHEER_FORCE, ABILITY_SHEER_FORCE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_ALTARIA_MEGA] = - { - .baseHP = 75, - .baseAttack = 110, - .baseDefense = 110, - .baseSpeed = 80, - .baseSpAttack = 110, - .baseSpDefense = 105, - .types = { TYPE_DRAGON, TYPE_FAIRY}, - .catchRate = 45, - .expYield = 207, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_ERRATIC, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_PIXILATE, ABILITY_PIXILATE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_BANETTE_MEGA] = - { - .baseHP = 64, - .baseAttack = 165, - .baseDefense = 75, - .baseSpeed = 75, - .baseSpAttack = 93, - .baseSpDefense = 83, - .types = { TYPE_GHOST, TYPE_GHOST}, - .catchRate = 45, - .expYield = 194, - .evYield_Attack = 2, - .itemRare = ITEM_SPELL_TAG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = 35, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_PRANKSTER, ABILITY_PRANKSTER}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_ABSOL_MEGA] = - { - .baseHP = 65, - .baseAttack = 150, - .baseDefense = 60, - .baseSpeed = 115, - .baseSpAttack = 115, - .baseSpDefense = 60, - .types = { TYPE_DARK, TYPE_DARK}, - .catchRate = 30, - .expYield = 198, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = TRUE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_GLALIE_MEGA] = - { - .baseHP = 80, - .baseAttack = 120, - .baseDefense = 80, - .baseSpeed = 100, - .baseSpAttack = 120, - .baseSpDefense = 80, - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 75, - .expYield = 203, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_REFRIGERATE, ABILITY_REFRIGERATE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_SALAMENCE_MEGA] = - { - .baseHP = 95, - .baseAttack = 145, - .baseDefense = 130, - .baseSpeed = 120, - .baseSpAttack = 120, - .baseSpDefense = 90, - .types = { TYPE_DRAGON, TYPE_FLYING}, - .catchRate = 45, - .expYield = 315, - .evYield_Attack = 3, - .itemRare = ITEM_DRAGON_FANG, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_AERILATE, ABILITY_AERILATE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_METAGROSS_MEGA] = - { - .baseHP = 80, - .baseAttack = 145, - .baseDefense = 150, - .baseSpeed = 110, - .baseSpAttack = 105, - .baseSpDefense = 110, - .types = { TYPE_STEEL, TYPE_PSYCHIC}, - .catchRate = 3, - .expYield = 315, - .evYield_Defense = 3, - .itemRare = ITEM_METAL_COAT, - .genderRatio = MON_GENDERLESS, - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_LATIAS_MEGA] = - { - .baseHP = 80, - .baseAttack = 100, - .baseDefense = 120, - .baseSpeed = 110, - .baseSpAttack = 140, - .baseSpDefense = 150, - .types = { TYPE_DRAGON, TYPE_PSYCHIC}, - .catchRate = 3, - .expYield = 315, - .evYield_SpDefense = 3, - .genderRatio = MON_FEMALE, - .eggCycles = 120, - .friendship = 90, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_LEVITATE, ABILITY_LEVITATE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_LATIOS_MEGA] = - { - .baseHP = 80, - .baseAttack = 130, - .baseDefense = 100, - .baseSpeed = 110, - .baseSpAttack = 160, - .baseSpDefense = 120, - .types = { TYPE_DRAGON, TYPE_PSYCHIC}, - .catchRate = 3, - .expYield = 315, - .evYield_SpAttack = 3, - .genderRatio = MON_MALE, - .eggCycles = 120, - .friendship = 90, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_LEVITATE, ABILITY_LEVITATE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_MEGA_EVOLUTION, - }, - -#if P_GEN_4_POKEMON == TRUE - [SPECIES_LOPUNNY_MEGA] = - { - .baseHP = 65, - .baseAttack = 136, - .baseDefense = 94, - .baseSpeed = 135, - .baseSpAttack = 54, - .baseSpDefense = 96, - .types = { TYPE_NORMAL, TYPE_FIGHTING}, - .catchRate = 60, - .expYield = 203, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 140, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_SCRAPPY, ABILITY_SCRAPPY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_GARCHOMP_MEGA] = - { - .baseHP = 108, - .baseAttack = 170, - .baseDefense = 115, - .baseSpeed = 92, - .baseSpAttack = 120, - .baseSpDefense = 95, - .types = { TYPE_DRAGON, TYPE_GROUND}, - .catchRate = 45, - .expYield = 315, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SAND_FORCE, ABILITY_SAND_FORCE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_LUCARIO_MEGA] = - { - .baseHP = 70, - .baseAttack = 145, - .baseDefense = 88, - .baseSpeed = 112, - .baseSpAttack = 140, - .baseSpDefense = 70, - .types = { TYPE_FIGHTING, TYPE_STEEL}, - .catchRate = 45, - .expYield = 219, - .evYield_Attack = 1, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_ADAPTABILITY, ABILITY_ADAPTABILITY}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_ABOMASNOW_MEGA] = - { - .baseHP = 90, - .baseAttack = 132, - .baseDefense = 105, - .baseSpeed = 30, - .baseSpAttack = 132, - .baseSpDefense = 105, - .types = { TYPE_GRASS, TYPE_ICE}, - .catchRate = 60, - .expYield = 208, - .evYield_Attack = 1, - .evYield_SpAttack = 1, - .itemRare = ITEM_NEVER_MELT_ICE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS}, - .abilities = {ABILITY_SNOW_WARNING, ABILITY_SNOW_WARNING}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_GALLADE_MEGA] = - { - .baseHP = 68, - .baseAttack = 165, - .baseDefense = 95, - .baseSpeed = 110, - .baseSpAttack = 65, - .baseSpDefense = 115, - .types = { TYPE_PSYCHIC, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 278, - .evYield_Attack = 3, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_INNER_FOCUS, ABILITY_INNER_FOCUS}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, -#endif - -#if P_GEN_5_POKEMON == TRUE - [SPECIES_AUDINO_MEGA] = - { - .baseHP = 103, - .baseAttack = 60, - .baseDefense = 126, - .baseSpeed = 50, - .baseSpAttack = 80, - .baseSpDefense = 126, - .types = { TYPE_NORMAL, TYPE_FAIRY}, - .catchRate = 255, - .expYield = 425, - .evYield_HP = 2, - .itemCommon = ITEM_ORAN_BERRY, - .itemRare = ITEM_SITRUS_BERRY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_HEALER, ABILITY_HEALER}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MEGA_EVOLUTION, - }, -#endif - -#if P_GEN_6_POKEMON == TRUE - [SPECIES_DIANCIE_MEGA] = - { - .baseHP = 50, - .baseAttack = 160, - .baseDefense = 110, - .baseSpeed = 110, - .baseSpAttack = 160, - .baseSpDefense = 110, - .types = { TYPE_ROCK, TYPE_FAIRY}, - .catchRate = 3, - .expYield = 315, - .evYield_Defense = 1, - .evYield_SpDefense = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL | SPECIES_FLAG_MEGA_EVOLUTION, - }, -#endif - - [SPECIES_RAYQUAZA_MEGA] = - { - .baseHP = 105, - .baseAttack = 180, - .baseDefense = 100, - .baseSpeed = 115, - .baseSpAttack = 180, - .baseSpDefense = 100, - .types = { TYPE_DRAGON, TYPE_FLYING}, - .catchRate = 45, - .expYield = 306, - .evYield_Attack = 2, - .evYield_SpAttack = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_DELTA_STREAM, ABILITY_DELTA_STREAM}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_MEGA_EVOLUTION, - }, - - [SPECIES_KYOGRE_PRIMAL] = - { - .baseHP = 100, - .baseAttack = 150, - .baseDefense = 90, - .baseSpeed = 90, - .baseSpAttack = 180, - .baseSpDefense = 160, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 3, - .expYield = 302, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRIMORDIAL_SEA, ABILITY_PRIMORDIAL_SEA}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_PRIMAL_REVERSION, - }, - - [SPECIES_GROUDON_PRIMAL] = - { - .baseHP = 100, - .baseAttack = 180, - .baseDefense = 160, - .baseSpeed = 90, - .baseSpAttack = 150, - .baseSpDefense = 90, - .types = { TYPE_GROUND, TYPE_FIRE}, - .catchRate = 3, - .expYield = 302, - .evYield_Attack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_DESOLATE_LAND, ABILITY_DESOLATE_LAND}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_PRIMAL_REVERSION, - }, - - [SPECIES_RATTATA_ALOLAN] = - { - .baseHP = 30, - .baseAttack = 56, - .baseDefense = 35, - .baseSpeed = 72, - .baseSpAttack = 25, - .baseSpDefense = 35, - .types = { TYPE_DARK, TYPE_NORMAL}, - .catchRate = 255, - .expYield = 51, - .evYield_Speed = 1, - .itemRare = ITEM_PECHA_BERRY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_GLUTTONY, ABILITY_HUSTLE, ABILITY_THICK_FAT}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_RATICATE_ALOLAN] = - { - .baseHP = 75, - .baseAttack = 71, - .baseDefense = 70, - .baseSpeed = 77, - .baseSpAttack = 40, - .baseSpDefense = 80, - .types = { TYPE_DARK, TYPE_NORMAL}, - .catchRate = 127, - .expYield = 145, - .evYield_Speed = 2, - .itemRare = ITEM_PECHA_BERRY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_GLUTTONY, ABILITY_HUSTLE, ABILITY_THICK_FAT}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_RAICHU_ALOLAN] = - { - .baseHP = 60, - .baseAttack = 85, - .baseDefense = 50, - .baseSpeed = 110, - .baseSpAttack = 95, - .baseSpDefense = 85, - .types = { TYPE_ELECTRIC, TYPE_PSYCHIC}, - .catchRate = 75, - .expYield = 218, - .evYield_Speed = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 10, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_SURGE_SURFER, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_SANDSHREW_ALOLAN] = - { - .baseHP = 50, - .baseAttack = 75, - .baseDefense = 90, - .baseSpeed = 40, - .baseSpAttack = 10, - .baseSpDefense = 35, - .types = { TYPE_ICE, TYPE_STEEL}, - .catchRate = 255, - .expYield = 60, - .evYield_Defense = 1, - .itemRare = ITEM_GRIP_CLAW, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SLUSH_RUSH}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_SANDSLASH_ALOLAN] = - { - .baseHP = 75, - .baseAttack = 100, - .baseDefense = 120, - .baseSpeed = 65, - .baseSpAttack = 25, - .baseSpDefense = 65, - .types = { TYPE_ICE, TYPE_STEEL}, - .catchRate = 90, - .expYield = 158, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SLUSH_RUSH}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_VULPIX_ALOLAN] = - { - .baseHP = 38, - .baseAttack = 41, - .baseDefense = 40, - .baseSpeed = 65, - .baseSpAttack = 50, - .baseSpDefense = 65, - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 190, - .expYield = 60, - .evYield_Speed = 1, - .itemRare = ITEM_SNOWBALL, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SNOW_WARNING}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_NINETALES_ALOLAN] = - { - .baseHP = 73, - .baseAttack = 67, - .baseDefense = 75, - .baseSpeed = 109, - .baseSpAttack = 81, - .baseSpDefense = 100, - .types = { TYPE_ICE, TYPE_FAIRY}, - .catchRate = 75, - .expYield = 177, - .evYield_Speed = 1, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SNOW_WARNING}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_DIGLETT_ALOLAN] = - { - .baseHP = 10, - .baseAttack = 55, - .baseDefense = 30, - .baseSpeed = 90, - .baseSpAttack = 35, - .baseSpDefense = 45, - .types = { TYPE_GROUND, TYPE_STEEL}, - .catchRate = 255, - .expYield = 53, - .evYield_Speed = 1, - .itemRare = ITEM_SOFT_SAND, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SAND_VEIL, ABILITY_TANGLING_HAIR, ABILITY_SAND_FORCE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_DUGTRIO_ALOLAN] = - { - .baseHP = 35, - .baseAttack = 100, - .baseDefense = 60, - .baseSpeed = 110, - .baseSpAttack = 50, - .baseSpDefense = 70, - .types = { TYPE_GROUND, TYPE_STEEL}, - .catchRate = 50, - .expYield = 149, - .evYield_Speed = 2, - .itemRare = ITEM_SOFT_SAND, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SAND_VEIL, ABILITY_TANGLING_HAIR, ABILITY_SAND_FORCE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = TRUE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_MEOWTH_ALOLAN] = - { - .baseHP = 40, - .baseAttack = 35, - .baseDefense = 35, - .baseSpeed = 90, - .baseSpAttack = 50, - .baseSpDefense = 40, - .types = { TYPE_DARK, TYPE_DARK}, - .catchRate = 255, - .expYield = 58, - .evYield_Speed = 1, - .itemRare = ITEM_QUICK_CLAW, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_RATTLED}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_PERSIAN_ALOLAN] = - { - .baseHP = 65, - .baseAttack = 60, - .baseDefense = 60, - .baseSpeed = 115, - .baseSpAttack = 75, - .baseSpDefense = 65, - .types = { TYPE_DARK, TYPE_DARK}, - .catchRate = 90, - .expYield = 154, - .evYield_Speed = 2, - .itemRare = ITEM_QUICK_CLAW, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_FUR_COAT, ABILITY_TECHNICIAN, ABILITY_RATTLED}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_GEODUDE_ALOLAN] = - { - .baseHP = 40, - .baseAttack = 80, - .baseDefense = 100, - .baseSpeed = 20, - .baseSpAttack = 30, - .baseSpDefense = 30, - .types = { TYPE_ROCK, TYPE_ELECTRIC}, - .catchRate = 255, - .expYield = 60, - .evYield_Defense = 1, - .itemRare = ITEM_CELL_BATTERY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_GALVANIZE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_GRAVELER_ALOLAN] = - { - .baseHP = 55, - .baseAttack = 95, - .baseDefense = 115, - .baseSpeed = 35, - .baseSpAttack = 45, - .baseSpDefense = 45, - .types = { TYPE_ROCK, TYPE_ELECTRIC}, - .catchRate = 120, - .expYield = 137, - .evYield_Defense = 2, - .itemRare = ITEM_CELL_BATTERY, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_GALVANIZE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_GOLEM_ALOLAN] = - { - .baseHP = 80, - .baseAttack = 120, - .baseDefense = 130, - .baseSpeed = 45, - .baseSpAttack = 55, - .baseSpDefense = 65, - .types = { TYPE_ROCK, TYPE_ELECTRIC}, - .catchRate = 45, - .expYield = 223, - .evYield_Defense = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_GALVANIZE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_GRIMER_ALOLAN] = - { - .baseHP = 80, - .baseAttack = 80, - .baseDefense = 50, - .baseSpeed = 25, - .baseSpAttack = 40, - .baseSpDefense = 50, - .types = { TYPE_POISON, TYPE_DARK}, - .catchRate = 190, - .expYield = 65, - .evYield_HP = 1, - .itemRare = ITEM_BLACK_SLUDGE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_POISON_TOUCH, ABILITY_GLUTTONY, ABILITY_POWER_OF_ALCHEMY}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_MUK_ALOLAN] = - { - .baseHP = 105, - .baseAttack = 105, - .baseDefense = 75, - .baseSpeed = 50, - .baseSpAttack = 65, - .baseSpDefense = 100, - .types = { TYPE_POISON, TYPE_DARK}, - .catchRate = 75, - .expYield = 175, - .evYield_HP = 1, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_POISON_TOUCH, ABILITY_GLUTTONY, ABILITY_POWER_OF_ALCHEMY}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = TRUE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_EXEGGUTOR_ALOLAN] = - { - .baseHP = 95, - .baseAttack = 105, - .baseDefense = 85, - .baseSpeed = 45, - .baseSpAttack = 125, - .baseSpDefense = 75, - .types = { TYPE_GRASS, TYPE_DRAGON}, - .catchRate = 45, - .expYield = 186, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_FRISK, ABILITY_NONE, ABILITY_HARVEST}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_MAROWAK_ALOLAN] = - { - .baseHP = 60, - .baseAttack = 80, - .baseDefense = 110, - .baseSpeed = 45, - .baseSpAttack = 50, - .baseSpDefense = 80, - .types = { TYPE_FIRE, TYPE_GHOST}, - .catchRate = 75, - .expYield = 149, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER}, - .abilities = {ABILITY_CURSED_BODY, ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_ALOLAN_FORM, - }, - - [SPECIES_MEOWTH_GALARIAN] = - { - .baseHP = 50, - .baseAttack = 65, - .baseDefense = 55, - .baseSpeed = 40, - .baseSpAttack = 40, - .baseSpDefense = 40, - .types = { TYPE_STEEL, TYPE_STEEL}, - .catchRate = 255, - .expYield = 58, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_PICKUP, ABILITY_TOUGH_CLAWS, ABILITY_UNNERVE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_PONYTA_GALARIAN] = - { - .baseHP = 50, - .baseAttack = 85, - .baseDefense = 55, - .baseSpeed = 90, - .baseSpAttack = 65, - .baseSpDefense = 65, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 190, - .expYield = 82, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_PASTEL_VEIL, ABILITY_ANTICIPATION}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_RAPIDASH_GALARIAN] = - { - .baseHP = 65, - .baseAttack = 100, - .baseDefense = 70, - .baseSpeed = 105, - .baseSpAttack = 80, - .baseSpDefense = 80, - .types = { TYPE_PSYCHIC, TYPE_FAIRY}, - .catchRate = 60, - .expYield = 175, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_RUN_AWAY, ABILITY_PASTEL_VEIL, ABILITY_ANTICIPATION}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_SLOWPOKE_GALARIAN] = - { - .baseHP = 90, - .baseAttack = 65, - .baseDefense = 65, - .baseSpeed = 15, - .baseSpAttack = 40, - .baseSpDefense = 40, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 190, - .expYield = 63, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_GLUTTONY, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_SLOWBRO_GALARIAN] = - { - .baseHP = 95, - .baseAttack = 100, - .baseDefense = 95, - .baseSpeed = 30, - .baseSpAttack = 100, - .baseSpDefense = 70, - .types = { TYPE_POISON, TYPE_PSYCHIC}, - .catchRate = 75, - .expYield = 172, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_QUICK_DRAW, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_FARFETCHD_GALARIAN] = - { - .baseHP = 52, - .baseAttack = 95, - .baseDefense = 55, - .baseSpeed = 55, - .baseSpAttack = 58, - .baseSpDefense = 62, - .types = { TYPE_FIGHTING, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 132, - .evYield_Attack = 1, - .itemCommon = ITEM_LEEK, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FIELD}, - .abilities = {ABILITY_STEADFAST, ABILITY_NONE, ABILITY_SCRAPPY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_WEEZING_GALARIAN] = - { - .baseHP = 65, - .baseAttack = 90, - .baseDefense = 120, - .baseSpeed = 60, - .baseSpAttack = 85, - .baseSpDefense = 70, - .types = { TYPE_POISON, TYPE_FAIRY}, - .catchRate = 60, - .expYield = 172, - .evYield_Defense = 2, - .itemRare = ITEM_MISTY_SEED, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_MISTY_SURGE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_MR_MIME_GALARIAN] = - { - .baseHP = 50, - .baseAttack = 65, - .baseDefense = 65, - .baseSpeed = 100, - .baseSpAttack = 90, - .baseSpDefense = 90, - .types = { TYPE_ICE, TYPE_PSYCHIC}, - .catchRate = 45, - .expYield = 161, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE}, - .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_SCREEN_CLEANER, ABILITY_ICE_BODY}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_ARTICUNO_GALARIAN] = - { - .baseHP = 90, - .baseAttack = 85, - .baseDefense = 85, - .baseSpeed = 95, - .baseSpAttack = 125, - .baseSpDefense = 100, - .types = { TYPE_PSYCHIC, TYPE_FLYING}, - .catchRate = 3, - .expYield = 290, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_COMPETITIVE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_ZAPDOS_GALARIAN] = - { - .baseHP = 90, - .baseAttack = 125, - .baseDefense = 90, - .baseSpeed = 100, - .baseSpAttack = 85, - .baseSpDefense = 90, - .types = { TYPE_FIGHTING, TYPE_FLYING}, - .catchRate = 3, - .expYield = 290, - .evYield_Attack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_DEFIANT, ABILITY_NONE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_MOLTRES_GALARIAN] = - { - .baseHP = 90, - .baseAttack = 85, - .baseDefense = 90, - .baseSpeed = 90, - .baseSpAttack = 100, - .baseSpDefense = 125, - .types = { TYPE_DARK, TYPE_FLYING}, - .catchRate = 3, - .expYield = 290, - .evYield_SpDefense = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_BERSERK, ABILITY_NONE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_SLOWKING_GALARIAN] = - { - .baseHP = 95, - .baseAttack = 65, - .baseDefense = 80, - .baseSpeed = 30, - .baseSpAttack = 110, - .baseSpDefense = 110, - .types = { TYPE_POISON, TYPE_PSYCHIC}, - .catchRate = 70, - .expYield = 172, - .evYield_SpDefense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1}, - .abilities = {ABILITY_CURIOUS_MEDICINE, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_CORSOLA_GALARIAN] = - { - .baseHP = 60, - .baseAttack = 55, - .baseDefense = 100, - .baseSpeed = 30, - .baseSpAttack = 65, - .baseSpDefense = 100, - .types = { TYPE_GHOST, TYPE_GHOST}, - .catchRate = 60, - .expYield = 144, - .evYield_SpDefense = 1, - .genderRatio = PERCENT_FEMALE(75), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3}, - .abilities = {ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_ZIGZAGOON_GALARIAN] = - { - .baseHP = 38, - .baseAttack = 30, - .baseDefense = 41, - .baseSpeed = 60, - .baseSpAttack = 30, - .baseSpDefense = 41, - .types = { TYPE_DARK, TYPE_NORMAL}, - .catchRate = 255, - .expYield = 56, - .evYield_Speed = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_LINOONE_GALARIAN] = - { - .baseHP = 78, - .baseAttack = 70, - .baseDefense = 61, - .baseSpeed = 100, - .baseSpAttack = 50, - .baseSpDefense = 61, - .types = { TYPE_DARK, TYPE_NORMAL}, - .catchRate = 90, - .expYield = 147, - .evYield_Speed = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GALARIAN_FORM, - }, - -#if P_GEN_5_POKEMON == TRUE - [SPECIES_DARUMAKA_GALARIAN] = - { - .baseHP = 70, - .baseAttack = 90, - .baseDefense = 45, - .baseSpeed = 50, - .baseSpAttack = 15, - .baseSpDefense = 45, - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 120, - .expYield = 63, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_HUSTLE, ABILITY_NONE, ABILITY_INNER_FOCUS}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_DARMANITAN_GALARIAN] = - { - .baseHP = 105, - .baseAttack = 140, - .baseDefense = 55, - .baseSpeed = 95, - .baseSpAttack = 30, - .baseSpDefense = 55, - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 60, - .expYield = 168, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_GORILLA_TACTICS, ABILITY_NONE, ABILITY_ZEN_MODE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_YAMASK_GALARIAN] = - { - .baseHP = 38, - .baseAttack = 55, - .baseDefense = 85, - .baseSpeed = 30, - .baseSpAttack = 30, - .baseSpDefense = 65, - .types = { TYPE_GROUND, TYPE_GHOST}, - .catchRate = 190, - .expYield = 61, - .evYield_Defense = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_WANDERING_SPIRIT, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_STUNFISK_GALARIAN] = - { - .baseHP = 109, - .baseAttack = 81, - .baseDefense = 99, - .baseSpeed = 32, - .baseSpAttack = 66, - .baseSpDefense = 84, - .types = { TYPE_GROUND, TYPE_STEEL}, - .catchRate = 75, - .expYield = 165, - .evYield_HP = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS}, - .abilities = {ABILITY_MIMICRY, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GALARIAN_FORM, - }, -#endif - - [SPECIES_GROWLITHE_HISUIAN] = - { - .baseHP = 60, - .baseAttack = 75, - .baseDefense = 45, - .baseSpeed = 55, - .baseSpAttack = 65, - .baseSpDefense = 50, - .types = { TYPE_FIRE, TYPE_ROCK}, - .catchRate = 190, - .expYield = 70, - .evYield_Attack = 1, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_ROCK_HEAD}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_HISUIAN_FORM, - }, - - [SPECIES_ARCANINE_HISUIAN] = - { - .baseHP = 95, - .baseAttack = 115, - .baseDefense = 80, - .baseSpeed = 90, - .baseSpAttack = 95, - .baseSpDefense = 80, - .types = { TYPE_FIRE, TYPE_ROCK}, - .catchRate = 75, - .expYield = 194, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(25), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_ROCK_HEAD}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_HISUIAN_FORM, - }, - - [SPECIES_VOLTORB_HISUIAN] = - { - .baseHP = 40, - .baseAttack = 30, - .baseDefense = 50, - .baseSpeed = 100, - .baseSpAttack = 55, - .baseSpDefense = 55, - .types = { TYPE_ELECTRIC, TYPE_GRASS}, - .catchRate = 190, - .expYield = 66, - .evYield_Speed = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_HISUIAN_FORM, - }, - - [SPECIES_ELECTRODE_HISUIAN] = - { - .baseHP = 60, - .baseAttack = 50, - .baseDefense = 70, - .baseSpAttack = 80, - .baseSpDefense = 80, - .baseSpeed = 150, - .types = { TYPE_ELECTRIC, TYPE_GRASS}, - .catchRate = 60, - .expYield = 172, - .evYield_Speed = 2, - .genderRatio = MON_GENDERLESS, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_HISUIAN_FORM, - }, - - [SPECIES_TYPHLOSION_HISUIAN] = - { - .baseHP = 73, - .baseAttack = 84, - .baseDefense = 78, - .baseSpeed = 95, - .baseSpAttack = 119, - .baseSpDefense = 85, - .types = { TYPE_FIRE, TYPE_GHOST}, - .catchRate = 45, - .expYield = 240, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_FRISK}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = FALSE, - .flags = SPECIES_FLAG_HISUIAN_FORM, - }, - - [SPECIES_QWILFISH_HISUIAN] = - { - .baseHP = 65, - .baseAttack = 95, - .baseDefense = 85, - .baseSpeed = 85, - .baseSpAttack = 55, - .baseSpDefense = 55, - .types = { TYPE_DARK, TYPE_POISON}, - .catchRate = 45, - .expYield = 88, - .evYield_Attack = 1, - .itemRare = ITEM_POISON_BARB, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_HISUIAN_FORM, - }, - - [SPECIES_SNEASEL_HISUIAN] = - { - .baseHP = 55, - .baseAttack = 95, - .baseDefense = 55, - .baseSpeed = 115, - .baseSpAttack = 35, - .baseSpDefense = 75, - .types = { TYPE_POISON, TYPE_FIGHTING}, - .catchRate = 60, - .expYield = 86, - .evYield_Speed = 1, - .itemRare = ITEM_QUICK_CLAW, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = 35, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_INNER_FOCUS, ABILITY_KEEN_EYE, ABILITY_PICKPOCKET}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = TRUE, - .flags = SPECIES_FLAG_HISUIAN_FORM, - }, - -#if P_GEN_5_POKEMON == TRUE - [SPECIES_SAMUROTT_HISUIAN] = - { - .baseHP = 90, - .baseAttack = 108, - .baseDefense = 80, - .baseSpeed = 85, - .baseSpAttack = 100, - .baseSpDefense = 65, - .types = { TYPE_WATER, TYPE_DARK}, - .catchRate = 45, - .expYield = 238, - .evYield_SpAttack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHARPNESS}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_HISUIAN_FORM, - }, - - [SPECIES_LILLIGANT_HISUIAN] = - { - .baseHP = 70, - .baseAttack = 105, - .baseDefense = 75, - .baseSpeed = 105, - .baseSpAttack = 50, - .baseSpDefense = 75, - .types = { TYPE_GRASS, TYPE_FIGHTING}, - .catchRate = 75, - .expYield = 168, - .evYield_Attack = 2, - .itemRare = ITEM_ABSORB_BULB, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS}, - .abilities = {ABILITY_CHLOROPHYLL, ABILITY_HUSTLE, ABILITY_LEAF_GUARD}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = TRUE, - .flags = SPECIES_FLAG_HISUIAN_FORM, - }, - - [SPECIES_ZORUA_HISUIAN] = - { - .baseHP = 35, - .baseAttack = 60, - .baseDefense = 40, - .baseSpeed = 70, - .baseSpAttack = 85, - .baseSpDefense = 40, - .types = { TYPE_NORMAL, TYPE_GHOST}, - .catchRate = 75, - .expYield = 66, - .evYield_SpAttack = 1, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_ILLUSION, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_HISUIAN_FORM, - }, - - [SPECIES_ZOROARK_HISUIAN] = - { - .baseHP = 55, - .baseAttack = 100, - .baseDefense = 60, - .baseSpeed = 110, - .baseSpAttack = 125, - .baseSpDefense = 60, - .types = { TYPE_NORMAL, TYPE_GHOST}, - .catchRate = 45, - .expYield = 179, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_ILLUSION, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_HISUIAN_FORM, - }, - - [SPECIES_BRAVIARY_HISUIAN] = - { - .baseHP = 110, - .baseAttack = 83, - .baseDefense = 70, - .baseSpeed = 65, - .baseSpAttack = 112, - .baseSpDefense = 70, - .types = { TYPE_PSYCHIC, TYPE_FLYING}, - .catchRate = 60, - .expYield = 179, - .evYield_SpAttack = 2, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_SHEER_FORCE, ABILITY_TINTED_LENS}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_HISUIAN_FORM, - }, -#endif - -#if P_GEN_6_POKEMON == TRUE - [SPECIES_SLIGGOO_HISUIAN] = - { - .baseHP = 58, - .baseAttack = 75, - .baseDefense = 83, - .baseSpeed = 40, - .baseSpAttack = 83, - .baseSpDefense = 113, - .types = { TYPE_DRAGON, TYPE_STEEL}, - .catchRate = 45, - .expYield = 158, - .evYield_SpDefense = 2, - .itemRare = ITEM_SHED_SHELL, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SAP_SIPPER, ABILITY_SHELL_ARMOR, ABILITY_GOOEY}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_HISUIAN_FORM, - }, - - [SPECIES_GOODRA_HISUIAN] = - { - .baseHP = 80, - .baseAttack = 100, - .baseDefense = 100, - .baseSpeed = 60, - .baseSpAttack = 110, - .baseSpDefense = 150, - .types = { TYPE_DRAGON, TYPE_STEEL}, - .catchRate = 45, - .expYield = 270, - .evYield_SpDefense = 3, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON}, - .abilities = {ABILITY_SAP_SIPPER, ABILITY_SHELL_ARMOR, ABILITY_GOOEY}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_HISUIAN_FORM, - }, - - [SPECIES_AVALUGG_HISUIAN] = - { - .baseHP = 95, - .baseAttack = 127, - .baseDefense = 184, - .baseSpeed = 38, - .baseSpAttack = 34, - .baseSpDefense = 36, - .types = { TYPE_ICE, TYPE_ROCK}, - .catchRate = 55, - .expYield = 180, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STRONG_JAW, ABILITY_ICE_BODY, ABILITY_STURDY}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_HISUIAN_FORM, - }, -#endif - -#if P_GEN_7_POKEMON == TRUE - [SPECIES_DECIDUEYE_HISUIAN] = - { - .baseHP = 88, - .baseAttack = 112, - .baseDefense = 80, - .baseSpeed = 60, - .baseSpAttack = 95, - .baseSpDefense = 95, - .types = { TYPE_GRASS, TYPE_FIGHTING}, - .catchRate = 45, - .expYield = 239, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING}, - .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_SCRAPPY}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_HISUIAN_FORM, - }, -#endif - - [SPECIES_PIKACHU_COSPLAY] = COSPLAY_PIKACHU_SPECIES_INFO(FLIP), - [SPECIES_PIKACHU_ROCK_STAR] = COSPLAY_PIKACHU_SPECIES_INFO(FLIP), - [SPECIES_PIKACHU_BELLE] = COSPLAY_PIKACHU_SPECIES_INFO(NO_FLIP), - [SPECIES_PIKACHU_POP_STAR] = COSPLAY_PIKACHU_SPECIES_INFO(NO_FLIP), - [SPECIES_PIKACHU_PH_D] = COSPLAY_PIKACHU_SPECIES_INFO(FLIP), - [SPECIES_PIKACHU_LIBRE] = COSPLAY_PIKACHU_SPECIES_INFO(FLIP), - - [SPECIES_PIKACHU_ORIGINAL_CAP] = CAP_PIKACHU_SPECIES_INFO(NO_FLIP), - [SPECIES_PIKACHU_HOENN_CAP] = CAP_PIKACHU_SPECIES_INFO(FLIP), - [SPECIES_PIKACHU_SINNOH_CAP] = CAP_PIKACHU_SPECIES_INFO(FLIP), - [SPECIES_PIKACHU_UNOVA_CAP] = CAP_PIKACHU_SPECIES_INFO(FLIP), - [SPECIES_PIKACHU_KALOS_CAP] = CAP_PIKACHU_SPECIES_INFO(FLIP), - [SPECIES_PIKACHU_ALOLA_CAP] = CAP_PIKACHU_SPECIES_INFO(FLIP), - [SPECIES_PIKACHU_PARTNER_CAP] = CAP_PIKACHU_SPECIES_INFO(NO_FLIP), - [SPECIES_PIKACHU_WORLD_CAP] = CAP_PIKACHU_SPECIES_INFO(FLIP), - - [SPECIES_PICHU_SPIKY_EARED] = PICHU_SPECIES_INFO(NO_FLIP), - - [SPECIES_UNOWN_B] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_C] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_D] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_E] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_F] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_G] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_H] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_I] = UNOWN_SPECIES_INFO(FLIP), - [SPECIES_UNOWN_J] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_K] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_L] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_M] = UNOWN_SPECIES_INFO(FLIP), - [SPECIES_UNOWN_N] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_O] = UNOWN_SPECIES_INFO(FLIP), - [SPECIES_UNOWN_P] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_Q] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_R] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_S] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_T] = UNOWN_SPECIES_INFO(FLIP), - [SPECIES_UNOWN_U] = UNOWN_SPECIES_INFO(FLIP), - [SPECIES_UNOWN_V] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_W] = UNOWN_SPECIES_INFO(FLIP), - [SPECIES_UNOWN_X] = UNOWN_SPECIES_INFO(FLIP), - [SPECIES_UNOWN_Y] = UNOWN_SPECIES_INFO(FLIP), - [SPECIES_UNOWN_Z] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_EMARK] = UNOWN_SPECIES_INFO(FLIP), - [SPECIES_UNOWN_QMARK] = UNOWN_SPECIES_INFO(NO_FLIP), - - [SPECIES_CASTFORM_SUNNY] = CASTFORM_SPECIES_INFO(TYPE_FIRE, BODY_COLOR_RED), - [SPECIES_CASTFORM_RAINY] = CASTFORM_SPECIES_INFO(TYPE_WATER, BODY_COLOR_BLUE), - [SPECIES_CASTFORM_SNOWY] = CASTFORM_SPECIES_INFO(TYPE_ICE, BODY_COLOR_WHITE), - - [SPECIES_DEOXYS_ATTACK] = - { - .baseHP = 50, - .baseAttack = 180, - .baseDefense = 20, - .baseSpeed = 150, - .baseSpAttack = 180, - .baseSpDefense = 20, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 3, - .expYield = 270, - .evYield_Attack = 2, - .evYield_SpAttack = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_DEOXYS_DEFENSE] = - { - .baseHP = 50, - .baseAttack = 70, - .baseDefense = 160, - .baseSpeed = 90, - .baseSpAttack = 70, - .baseSpDefense = 160, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 3, - .expYield = 270, - .evYield_Defense = 2, - .evYield_SpDefense = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_DEOXYS_SPEED] = - { - .baseHP = 50, - .baseAttack = 95, - .baseDefense = 90, - .baseSpeed = 180, - .baseSpAttack = 95, - .baseSpDefense = 90, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 3, - .expYield = 270, - .evYield_Speed = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = TRUE, - }, - -#if P_GEN_4_POKEMON == TRUE - [SPECIES_BURMY_SANDY_CLOAK] = BURMY_SPECIES_INFO(BODY_COLOR_BROWN), - [SPECIES_BURMY_TRASH_CLOAK] = BURMY_SPECIES_INFO(BODY_COLOR_RED), - - [SPECIES_WORMADAM_SANDY_CLOAK] = - { - .baseHP = 60, - .baseAttack = 79, - .baseDefense = 105, - .baseSpeed = 36, - .baseSpAttack = 59, - .baseSpDefense = 85, - .types = { TYPE_BUG, TYPE_GROUND}, - .catchRate = 45, - .expYield = 148, - .evYield_Defense = 2, - .itemRare = ITEM_SILVER_POWDER, - .genderRatio = MON_FEMALE, - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_ANTICIPATION, ABILITY_NONE, ABILITY_OVERCOAT}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_WORMADAM_TRASH_CLOAK] = - { - .baseHP = 60, - .baseAttack = 69, - .baseDefense = 95, - .baseSpeed = 36, - .baseSpAttack = 69, - .baseSpDefense = 95, - .types = { TYPE_BUG, TYPE_STEEL}, - .catchRate = 45, - .expYield = 148, - .evYield_Defense = 1, - .evYield_SpDefense = 1, - .itemRare = ITEM_SILVER_POWDER, - .genderRatio = MON_FEMALE, - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG}, - .abilities = {ABILITY_ANTICIPATION, ABILITY_NONE, ABILITY_OVERCOAT}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_CHERRIM_SUNSHINE] = CHERRIM_SPECIES_INFO(BODY_COLOR_PINK), - - [SPECIES_SHELLOS_EAST_SEA] = SHELLOS_SPECIES_INFO(BODY_COLOR_BLUE), - - [SPECIES_GASTRODON_EAST_SEA] = GASTRODON_SPECIES_INFO(BODY_COLOR_BLUE), - - [SPECIES_ROTOM_HEAT] = ROTOM_FORM_SPECIES_INFO(TYPE_FIRE, FLIP), - [SPECIES_ROTOM_WASH] = ROTOM_FORM_SPECIES_INFO(TYPE_WATER, NO_FLIP), - [SPECIES_ROTOM_FROST] = ROTOM_FORM_SPECIES_INFO(TYPE_ICE, FLIP), - [SPECIES_ROTOM_FAN] = ROTOM_FORM_SPECIES_INFO(TYPE_FLYING, FLIP), - [SPECIES_ROTOM_MOW] = ROTOM_FORM_SPECIES_INFO(TYPE_GRASS, FLIP), - - [SPECIES_DIALGA_ORIGIN] = - { - .baseHP = 100, - .baseAttack = 100, - .baseDefense = 120, - .baseSpeed = 90, - .baseSpAttack = 150, - .baseSpDefense = 120, - .types = { TYPE_STEEL, TYPE_DRAGON}, - .catchRate = 3, - .expYield = 306, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_PALKIA_ORIGIN] = - { - .baseHP = 90, - .baseAttack = 100, - .baseDefense = 100, - .baseSpeed = 120, - .baseSpAttack = 150, - .baseSpDefense = 120, - .types = { TYPE_WATER, TYPE_DRAGON}, - .catchRate = 3, - .expYield = 306, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_GIRATINA_ORIGIN] = - { - .baseHP = 150, - .baseAttack = 120, - .baseDefense = 100, - .baseSpeed = 90, - .baseSpAttack = 120, - .baseSpDefense = 100, - .types = { TYPE_GHOST, TYPE_DRAGON}, - .catchRate = 3, - .expYield = 306, - .evYield_HP = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - }, - - [SPECIES_SHAYMIN_SKY] = - { - .baseHP = 100, - .baseAttack = 103, - .baseDefense = 75, - .baseSpeed = 127, - .baseSpAttack = 120, - .baseSpDefense = 75, - .types = { TYPE_GRASS, TYPE_FLYING}, - .catchRate = 45, - .expYield = 270, - .evYield_HP = 3, - .itemCommon = ITEM_LUM_BERRY, - .itemRare = ITEM_LUM_BERRY, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 100, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_SERENE_GRACE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = TRUE, - }, - - [SPECIES_ARCEUS_FIGHTING] = ARCEUS_SPECIES_INFO(TYPE_FIGHTING), - [SPECIES_ARCEUS_FLYING] = ARCEUS_SPECIES_INFO(TYPE_FLYING), - [SPECIES_ARCEUS_POISON] = ARCEUS_SPECIES_INFO(TYPE_POISON), - [SPECIES_ARCEUS_GROUND] = ARCEUS_SPECIES_INFO(TYPE_GROUND), - [SPECIES_ARCEUS_ROCK] = ARCEUS_SPECIES_INFO(TYPE_ROCK), - [SPECIES_ARCEUS_BUG] = ARCEUS_SPECIES_INFO(TYPE_BUG), - [SPECIES_ARCEUS_GHOST] = ARCEUS_SPECIES_INFO(TYPE_GHOST), - [SPECIES_ARCEUS_STEEL] = ARCEUS_SPECIES_INFO(TYPE_STEEL), - [SPECIES_ARCEUS_FIRE] = ARCEUS_SPECIES_INFO(TYPE_FIRE), - [SPECIES_ARCEUS_WATER] = ARCEUS_SPECIES_INFO(TYPE_WATER), - [SPECIES_ARCEUS_GRASS] = ARCEUS_SPECIES_INFO(TYPE_GRASS), - [SPECIES_ARCEUS_ELECTRIC] = ARCEUS_SPECIES_INFO(TYPE_ELECTRIC), - [SPECIES_ARCEUS_PSYCHIC] = ARCEUS_SPECIES_INFO(TYPE_PSYCHIC), - [SPECIES_ARCEUS_ICE] = ARCEUS_SPECIES_INFO(TYPE_ICE), - [SPECIES_ARCEUS_DRAGON] = ARCEUS_SPECIES_INFO(TYPE_DRAGON), - [SPECIES_ARCEUS_DARK] = ARCEUS_SPECIES_INFO(TYPE_DARK), - [SPECIES_ARCEUS_FAIRY] = ARCEUS_SPECIES_INFO(TYPE_FAIRY), -#endif - -#if P_GEN_5_POKEMON == TRUE - [SPECIES_BASCULIN_BLUE_STRIPED] = - { - .baseHP = 70, - .baseAttack = 92, - .baseDefense = 65, - .baseSpeed = 98, - .baseSpAttack = 80, - .baseSpDefense = 55, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 25, - .expYield = 161, - .evYield_Speed = 2, - .itemRare = ITEM_DEEP_SEA_SCALE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_ROCK_HEAD, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_BASCULIN_WHITE_STRIPED] = - { - .baseHP = 70, - .baseAttack = 92, - .baseDefense = 65, - .baseSpeed = 98, - .baseSpAttack = 80, - .baseSpDefense = 55, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 25, - .expYield = 161, - .evYield_Speed = 2, - .itemRare = ITEM_DEEP_SEA_SCALE, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 40, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_RATTLED, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - }, - - [SPECIES_DARMANITAN_ZEN_MODE] = - { - .baseHP = 105, - .baseAttack = 30, - .baseDefense = 105, - .baseSpeed = 55, - .baseSpAttack = 140, - .baseSpDefense = 105, - .types = { TYPE_FIRE, TYPE_PSYCHIC}, - .catchRate = 60, - .expYield = 189, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_ZEN_MODE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = - { - .baseHP = 105, - .baseAttack = 160, - .baseDefense = 55, - .baseSpeed = 135, - .baseSpAttack = 30, - .baseSpDefense = 55, - .types = { TYPE_ICE, TYPE_FIRE}, - .catchRate = 60, - .expYield = 189, - .evYield_SpAttack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_GORILLA_TACTICS, ABILITY_NONE, ABILITY_ZEN_MODE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_GALARIAN_FORM, - }, - - [SPECIES_DEERLING_SUMMER] = DEERLING_SPECIES_INFO(BODY_COLOR_GREEN), - [SPECIES_DEERLING_AUTUMN] = DEERLING_SPECIES_INFO(BODY_COLOR_RED), - [SPECIES_DEERLING_WINTER] = DEERLING_SPECIES_INFO(BODY_COLOR_BROWN), - - [SPECIES_SAWSBUCK_SUMMER] = SAWSBUCK_SPECIES_INFO, - [SPECIES_SAWSBUCK_AUTUMN] = SAWSBUCK_SPECIES_INFO, - [SPECIES_SAWSBUCK_WINTER] = SAWSBUCK_SPECIES_INFO, - - [SPECIES_TORNADUS_THERIAN] = - { - .baseHP = 79, - .baseAttack = 100, - .baseDefense = 80, - .baseSpeed = 121, - .baseSpAttack = 110, - .baseSpDefense = 90, - .types = { TYPE_FLYING, TYPE_FLYING}, - .catchRate = 3, - .expYield = 261, - .evYield_Attack = 3, - .genderRatio = MON_MALE, - .eggCycles = 120, - .friendship = 90, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_REGENERATOR, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GREEN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_THUNDURUS_THERIAN] = - { - .baseHP = 79, - .baseAttack = 105, - .baseDefense = 70, - .baseSpeed = 101, - .baseSpAttack = 145, - .baseSpDefense = 80, - .types = { TYPE_ELECTRIC, TYPE_FLYING}, - .catchRate = 3, - .expYield = 261, - .evYield_SpAttack = 3, - .genderRatio = MON_MALE, - .eggCycles = 120, - .friendship = 90, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_VOLT_ABSORB, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_LANDORUS_THERIAN] = - { - .baseHP = 89, - .baseAttack = 145, - .baseDefense = 90, - .baseSpeed = 91, - .baseSpAttack = 105, - .baseSpDefense = 80, - .types = { TYPE_GROUND, TYPE_FLYING}, - .catchRate = 3, - .expYield = 270, - .evYield_Attack = 3, - .genderRatio = MON_MALE, - .eggCycles = 120, - .friendship = 90, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_KYUREM_WHITE] = - { - .baseHP = 125, - .baseAttack = 120, - .baseDefense = 90, - .baseSpeed = 95, - .baseSpAttack = 170, - .baseSpDefense = 100, - .types = { TYPE_DRAGON, TYPE_ICE}, - .catchRate = 3, - .expYield = 315, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_TURBOBLAZE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = TRUE, - .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_CANNOT_BE_TRADED, - }, - - [SPECIES_KYUREM_BLACK] = - { - .baseHP = 125, - .baseAttack = 170, - .baseDefense = 100, - .baseSpeed = 95, - .baseSpAttack = 120, - .baseSpDefense = 90, - .types = { TYPE_DRAGON, TYPE_ICE}, - .catchRate = 3, - .expYield = 315, - .evYield_Attack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_TERAVOLT, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = TRUE, - .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_CANNOT_BE_TRADED, - }, - - [SPECIES_KELDEO_RESOLUTE] = - { - .baseHP = 91, - .baseAttack = 72, - .baseDefense = 90, - .baseSpeed = 108, - .baseSpAttack = 129, - .baseSpDefense = 90, - .types = { TYPE_WATER, TYPE_FIGHTING}, - .catchRate = 3, - .expYield = 261, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 80, - .friendship = 35, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_JUSTIFIED, ABILITY_NONE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = TRUE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - - [SPECIES_MELOETTA_PIROUETTE] = - { - .baseHP = 100, - .baseAttack = 128, - .baseDefense = 90, - .baseSpeed = 128, - .baseSpAttack = 77, - .baseSpDefense = 77, - .types = { TYPE_NORMAL, TYPE_FIGHTING}, - .catchRate = 3, - .expYield = 270, - .evYield_Attack = 1, + .evYield_HP = 1, .evYield_Defense = 1, - .evYield_Speed = 1, - .itemCommon = ITEM_STAR_PIECE, - .itemRare = ITEM_STAR_PIECE, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 100, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_SERENE_GRACE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = TRUE, - .flags = SPECIES_FLAG_MYTHICAL, - }, - - [SPECIES_GENESECT_DOUSE_DRIVE] = GENESECT_SPECIES_INFO, - [SPECIES_GENESECT_SHOCK_DRIVE] = GENESECT_SPECIES_INFO, - [SPECIES_GENESECT_BURN_DRIVE] = GENESECT_SPECIES_INFO, - [SPECIES_GENESECT_CHILL_DRIVE] = GENESECT_SPECIES_INFO, -#endif - -#if P_GEN_6_POKEMON == TRUE - [SPECIES_GRENINJA_BATTLE_BOND] = - { - .baseHP = 72, - .baseAttack = 95, - .baseDefense = 67, - .baseSpeed = 122, - .baseSpAttack = 103, - .baseSpDefense = 71, - .types = { TYPE_WATER, TYPE_DARK}, - .catchRate = 45, - .expYield = 239, - .evYield_Speed = 3, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_BATTLE_BOND, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = TRUE, - }, - - [SPECIES_GRENINJA_ASH] = - { - .baseHP = 72, - .baseAttack = 145, - .baseDefense = 67, - .baseSpeed = 132, - .baseSpAttack = 153, - .baseSpDefense = 71, - .types = { TYPE_WATER, TYPE_DARK}, - .catchRate = 45, - .expYield = 288, - .evYield_Speed = 3, - .genderRatio = MON_MALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_BATTLE_BOND, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = TRUE, - }, - - [SPECIES_VIVILLON_POLAR] = VIVILLON_SPECIES_INFO(BODY_COLOR_BLUE), - [SPECIES_VIVILLON_TUNDRA] = VIVILLON_SPECIES_INFO(BODY_COLOR_BLUE), - [SPECIES_VIVILLON_CONTINENTAL] = VIVILLON_SPECIES_INFO(BODY_COLOR_YELLOW), - [SPECIES_VIVILLON_GARDEN] = VIVILLON_SPECIES_INFO(BODY_COLOR_GREEN), - [SPECIES_VIVILLON_ELEGANT] = VIVILLON_SPECIES_INFO(BODY_COLOR_PURPLE), - [SPECIES_VIVILLON_MEADOW] = VIVILLON_SPECIES_INFO(BODY_COLOR_PINK), - [SPECIES_VIVILLON_MODERN] = VIVILLON_SPECIES_INFO(BODY_COLOR_RED), - [SPECIES_VIVILLON_MARINE] = VIVILLON_SPECIES_INFO(BODY_COLOR_BLUE), - [SPECIES_VIVILLON_ARCHIPELAGO] = VIVILLON_SPECIES_INFO(BODY_COLOR_BROWN), - [SPECIES_VIVILLON_HIGH_PLAINS] = VIVILLON_SPECIES_INFO(BODY_COLOR_BROWN), - [SPECIES_VIVILLON_SANDSTORM] = VIVILLON_SPECIES_INFO(BODY_COLOR_BROWN), - [SPECIES_VIVILLON_RIVER] = VIVILLON_SPECIES_INFO(BODY_COLOR_BROWN), - [SPECIES_VIVILLON_MONSOON] = VIVILLON_SPECIES_INFO(BODY_COLOR_GRAY), - [SPECIES_VIVILLON_SAVANNA] = VIVILLON_SPECIES_INFO(BODY_COLOR_GREEN), - [SPECIES_VIVILLON_SUN] = VIVILLON_SPECIES_INFO(BODY_COLOR_RED), - [SPECIES_VIVILLON_OCEAN] = VIVILLON_SPECIES_INFO(BODY_COLOR_RED), - [SPECIES_VIVILLON_JUNGLE] = VIVILLON_SPECIES_INFO(BODY_COLOR_GREEN), - [SPECIES_VIVILLON_FANCY] = VIVILLON_SPECIES_INFO(BODY_COLOR_PINK), - [SPECIES_VIVILLON_POKE_BALL] = VIVILLON_SPECIES_INFO(BODY_COLOR_RED), - - [SPECIES_FLABEBE_YELLOW_FLOWER] = FLABEBE_SPECIES_INFO, - [SPECIES_FLABEBE_ORANGE_FLOWER] = FLABEBE_SPECIES_INFO, - [SPECIES_FLABEBE_BLUE_FLOWER] = FLABEBE_SPECIES_INFO, - [SPECIES_FLABEBE_WHITE_FLOWER] = FLABEBE_SPECIES_INFO, - - [SPECIES_FLOETTE_YELLOW_FLOWER] = FLOETTE_SPECIES_INFO, - [SPECIES_FLOETTE_ORANGE_FLOWER] = FLOETTE_SPECIES_INFO, - [SPECIES_FLOETTE_BLUE_FLOWER] = FLOETTE_SPECIES_INFO, - [SPECIES_FLOETTE_WHITE_FLOWER] = FLOETTE_SPECIES_INFO, - - [SPECIES_FLOETTE_ETERNAL_FLOWER] = - { - .baseHP = 74, - .baseAttack = 65, - .baseDefense = 67, - .baseSpeed = 92, - .baseSpAttack = 125, - .baseSpDefense = 128, - .types = { TYPE_FAIRY, TYPE_FAIRY}, - .catchRate = 120, - .expYield = 243, - .evYield_SpDefense = 2, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_FLOWER_VEIL, ABILITY_NONE, ABILITY_SYMBIOSIS}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_FLORGES_YELLOW_FLOWER] = FLORGES_SPECIES_INFO, - [SPECIES_FLORGES_ORANGE_FLOWER] = FLORGES_SPECIES_INFO, - [SPECIES_FLORGES_BLUE_FLOWER] = FLORGES_SPECIES_INFO, - [SPECIES_FLORGES_WHITE_FLOWER] = FLORGES_SPECIES_INFO, - - [SPECIES_FURFROU_HEART_TRIM] = FURFROU_SPECIES_INFO(FLIP), - [SPECIES_FURFROU_STAR_TRIM] = FURFROU_SPECIES_INFO(FLIP), - [SPECIES_FURFROU_DIAMOND_TRIM] = FURFROU_SPECIES_INFO(FLIP), - [SPECIES_FURFROU_DEBUTANTE_TRIM] = FURFROU_SPECIES_INFO(NO_FLIP), - [SPECIES_FURFROU_MATRON_TRIM] = FURFROU_SPECIES_INFO(FLIP), - [SPECIES_FURFROU_DANDY_TRIM] = FURFROU_SPECIES_INFO(FLIP), - [SPECIES_FURFROU_LA_REINE_TRIM] = FURFROU_SPECIES_INFO(FLIP), - [SPECIES_FURFROU_KABUKI_TRIM] = FURFROU_SPECIES_INFO(FLIP), - [SPECIES_FURFROU_PHARAOH_TRIM] = FURFROU_SPECIES_INFO(FLIP), - - [SPECIES_MEOWSTIC_FEMALE] = - { - .baseHP = 74, - .baseAttack = 48, - .baseDefense = 76, - .baseSpeed = 104, - .baseSpAttack = 83, - .baseSpDefense = 81, - .types = { TYPE_PSYCHIC, TYPE_PSYCHIC}, - .catchRate = 75, - .expYield = 163, - .evYield_Speed = 2, - .genderRatio = MON_FEMALE, - .eggCycles = 20, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_INFILTRATOR, ABILITY_COMPETITIVE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - }, - - [SPECIES_AEGISLASH_BLADE] = - { - .baseHP = 60, - .baseDefense = 50, - .baseSpeed = 60, - #if P_UPDATED_STATS >= GEN_8 - .baseAttack = 140, - .baseSpAttack = 140, - #else - .baseAttack = 150, - .baseSpAttack = 150, - #endif - .baseSpDefense = 50, - .types = { TYPE_STEEL, TYPE_GHOST}, - .catchRate = 45, - .expYield = 234, - .evYield_Defense = 2, .evYield_SpDefense = 1, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = STANDARD_FRIENDSHIP, .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL}, - .abilities = {ABILITY_STANCE_CHANGE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_PUMPKABOO_SMALL] = - { - .baseHP = 44, - .baseAttack = 66, - .baseDefense = 70, - .baseSpeed = 56, - .baseSpAttack = 44, - .baseSpDefense = 55, - PUMKPABOO_MISC_INFO, - }, - - [SPECIES_PUMPKABOO_LARGE] = - { - .baseHP = 54, - .baseAttack = 66, - .baseDefense = 70, - .baseSpeed = 46, - .baseSpAttack = 44, - .baseSpDefense = 55, - PUMKPABOO_MISC_INFO, - }, - - [SPECIES_PUMPKABOO_SUPER] = - { - .baseHP = 59, - .baseAttack = 66, - .baseDefense = 70, - .baseSpeed = 41, - .baseSpAttack = 44, - .baseSpDefense = 55, - .itemCommon = ITEM_MIRACLE_SEED, - .itemRare = ITEM_MIRACLE_SEED, - PUMKPABOO_MISC_INFO, - }, - - [SPECIES_GOURGEIST_SMALL] = - { - .baseHP = 55, - .baseAttack = 85, - .baseDefense = 122, - .baseSpeed = 99, - .baseSpAttack = 58, - .baseSpDefense = 75, - GOURGEIST_MISC_INFO, - }, - - [SPECIES_GOURGEIST_LARGE] = - { - .baseHP = 75, - .baseAttack = 95, - .baseDefense = 122, - .baseSpeed = 69, - .baseSpAttack = 58, - .baseSpDefense = 75, - GOURGEIST_MISC_INFO, - }, - - [SPECIES_GOURGEIST_SUPER] = - { - .baseHP = 85, - .baseAttack = 100, - .baseDefense = 122, - .baseSpeed = 54, - .baseSpAttack = 58, - .baseSpDefense = 75, - .itemCommon = ITEM_MIRACLE_SEED, - .itemRare = ITEM_MIRACLE_SEED, - GOURGEIST_MISC_INFO, - }, - - [SPECIES_XERNEAS_ACTIVE] = XERNEAS_SPECIES_INFO, - - [SPECIES_ZYGARDE_10] = ZYGARDE_10_SPECIES_INFO(ABILITY_AURA_BREAK), - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = ZYGARDE_50_SPECIES_INFO(ABILITY_POWER_CONSTRUCT), - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = ZYGARDE_50_SPECIES_INFO(ABILITY_POWER_CONSTRUCT), - - [SPECIES_ZYGARDE_COMPLETE] = - { - .baseHP = 216, - .baseAttack = 100, - .baseDefense = 121, - .baseSpeed = 85, - .baseSpAttack = 91, - .baseSpDefense = 95, - .types = { TYPE_DRAGON, TYPE_GROUND}, - .catchRate = 3, - .expYield = 319, - .evYield_HP = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_POWER_CONSTRUCT, ABILITY_NONE}, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_NONE, ABILITY_CURSED_BODY, ABILITY_DAMP }, .bodyColor = BODY_COLOR_BLACK, - .noFlip = TRUE, - .flags = SPECIES_FLAG_LEGENDARY, + .speciesName = _("??????????"), + .cryId = CRY_NONE, + .natDexNum = NATIONAL_DEX_NONE, + .categoryName = _("Unknown"), + .height = 0, + .weight = 0, + .description = COMPOUND_STRING( + "This is a newly discovered Pokémon.\n" + "It is currently under investigation.\n" + "No detailed information is available\n" + "at this time."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(CircledQuestionMark, 64, 64), + //FRONT_PIC_FEMALE(CircledQuestionMark, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_None, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 0, + BACK_PIC(CircledQuestionMark, 64, 64), + //BACK_PIC_FEMALE(CircledQuestionMark, 64, 64), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_NONE, + PALETTES(CircledQuestionMark), + //PALETTE_FEMALE(CircledQuestionMark), + ICON(QuestionMark, 0), + //ICON_FEMALE(QuestionMark, 1), + //.footprint = gMonFootprint_None, + LEARNSETS(None), + .evolutions = EVOLUTION({EVO_LEVEL, 100, SPECIES_NONE}, + {EVO_ITEM, ITEM_MOOMOO_MILK, SPECIES_NONE}), + //.formSpeciesIdTable = sNoneFormSpeciesIdTable, + //.formChangeTable = sNoneFormChangeTable, + .allPerfectIVs = TRUE, }, - - [SPECIES_HOOPA_UNBOUND] = - { - .baseHP = 80, - .baseAttack = 160, - .baseDefense = 60, - .baseSpeed = 80, - .baseSpAttack = 170, - .baseSpDefense = 130, - .types = { TYPE_PSYCHIC, TYPE_DARK}, - .catchRate = 3, - .expYield = 270, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 100, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_MAGICIAN, ABILITY_NONE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_MYTHICAL, - }, -#endif - -#if P_GEN_7_POKEMON == TRUE - [SPECIES_ORICORIO_POM_POM] = ORICORIO_SPECIES_INFO(TYPE_ELECTRIC, BODY_COLOR_YELLOW), - [SPECIES_ORICORIO_PAU] = ORICORIO_SPECIES_INFO(TYPE_PSYCHIC, BODY_COLOR_PINK), - [SPECIES_ORICORIO_SENSU] = ORICORIO_SPECIES_INFO(TYPE_GHOST, BODY_COLOR_PURPLE), - - [SPECIES_ROCKRUFF_OWN_TEMPO] = ROCKRUFF_SPECIES_INFO(ABILITY_OWN_TEMPO, ABILITY_NONE, ABILITY_NONE), - - [SPECIES_LYCANROC_MIDNIGHT] = - { - .baseHP = 85, - .baseAttack = 115, - .baseDefense = 75, - .baseSpeed = 82, - .baseSpAttack = 55, - .baseSpDefense = 75, - .types = { TYPE_ROCK, TYPE_ROCK}, - .catchRate = 90, - .expYield = 170, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_KEEN_EYE, ABILITY_VITAL_SPIRIT, ABILITY_NO_GUARD}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - }, - - [SPECIES_LYCANROC_DUSK] = - { - .baseHP = 75, - .baseAttack = 117, - .baseDefense = 65, - .baseSpeed = 110, - .baseSpAttack = 55, - .baseSpDefense = 65, - .types = { TYPE_ROCK, TYPE_ROCK}, - .catchRate = 90, - .expYield = 170, - .evYield_Attack = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_MEDIUM_FAST, - .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD}, - .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BROWN, - .noFlip = FALSE, - }, - - [SPECIES_WISHIWASHI_SCHOOL] = - { - .baseHP = 45, - .baseAttack = 140, - .baseDefense = 130, - .baseSpeed = 30, - .baseSpAttack = 140, - .baseSpDefense = 135, - .types = { TYPE_WATER, TYPE_WATER}, - .catchRate = 60, - .expYield = 61, - .evYield_HP = 1, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 15, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2}, - .abilities = {ABILITY_SCHOOLING, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_SILVALLY_FIGHTING] = SILVALLY_SPECIES_INFO(TYPE_FIGHTING), - [SPECIES_SILVALLY_FLYING] = SILVALLY_SPECIES_INFO(TYPE_FLYING), - [SPECIES_SILVALLY_POISON] = SILVALLY_SPECIES_INFO(TYPE_POISON), - [SPECIES_SILVALLY_GROUND] = SILVALLY_SPECIES_INFO(TYPE_GROUND), - [SPECIES_SILVALLY_ROCK] = SILVALLY_SPECIES_INFO(TYPE_ROCK), - [SPECIES_SILVALLY_BUG] = SILVALLY_SPECIES_INFO(TYPE_BUG), - [SPECIES_SILVALLY_GHOST] = SILVALLY_SPECIES_INFO(TYPE_GHOST), - [SPECIES_SILVALLY_STEEL] = SILVALLY_SPECIES_INFO(TYPE_STEEL), - [SPECIES_SILVALLY_FIRE] = SILVALLY_SPECIES_INFO(TYPE_FIRE), - [SPECIES_SILVALLY_WATER] = SILVALLY_SPECIES_INFO(TYPE_WATER), - [SPECIES_SILVALLY_GRASS] = SILVALLY_SPECIES_INFO(TYPE_GRASS), - [SPECIES_SILVALLY_ELECTRIC] = SILVALLY_SPECIES_INFO(TYPE_ELECTRIC), - [SPECIES_SILVALLY_PSYCHIC] = SILVALLY_SPECIES_INFO(TYPE_PSYCHIC), - [SPECIES_SILVALLY_ICE] = SILVALLY_SPECIES_INFO(TYPE_ICE), - [SPECIES_SILVALLY_DRAGON] = SILVALLY_SPECIES_INFO(TYPE_DRAGON), - [SPECIES_SILVALLY_DARK] = SILVALLY_SPECIES_INFO(TYPE_DARK), - [SPECIES_SILVALLY_FAIRY] = SILVALLY_SPECIES_INFO(TYPE_FAIRY), - - [SPECIES_MINIOR_METEOR_ORANGE] = MINIOR_METEOR_SPECIES_INFO, - [SPECIES_MINIOR_METEOR_YELLOW] = MINIOR_METEOR_SPECIES_INFO, - [SPECIES_MINIOR_METEOR_GREEN] = MINIOR_METEOR_SPECIES_INFO, - [SPECIES_MINIOR_METEOR_BLUE] = MINIOR_METEOR_SPECIES_INFO, - [SPECIES_MINIOR_METEOR_INDIGO] = MINIOR_METEOR_SPECIES_INFO, - [SPECIES_MINIOR_METEOR_VIOLET] = MINIOR_METEOR_SPECIES_INFO, - - [SPECIES_MINIOR_CORE_RED] = MINIOR_CORE_SPECIES_INFO(BODY_COLOR_RED), - [SPECIES_MINIOR_CORE_ORANGE] = MINIOR_CORE_SPECIES_INFO(BODY_COLOR_RED), - [SPECIES_MINIOR_CORE_YELLOW] = MINIOR_CORE_SPECIES_INFO(BODY_COLOR_YELLOW), - [SPECIES_MINIOR_CORE_GREEN] = MINIOR_CORE_SPECIES_INFO(BODY_COLOR_GREEN), - [SPECIES_MINIOR_CORE_BLUE] = MINIOR_CORE_SPECIES_INFO(BODY_COLOR_BLUE), - [SPECIES_MINIOR_CORE_INDIGO] = MINIOR_CORE_SPECIES_INFO(BODY_COLOR_BLUE), - [SPECIES_MINIOR_CORE_VIOLET] = MINIOR_CORE_SPECIES_INFO(BODY_COLOR_PURPLE), - - [SPECIES_MIMIKYU_BUSTED] = MIMIKYU_SPECIES_INFO, - - [SPECIES_NECROZMA_DUSK_MANE] = - { - .baseHP = 97, - .baseAttack = 157, - .baseDefense = 127, - .baseSpeed = 77, - .baseSpAttack = 113, - .baseSpDefense = 109, - .types = { TYPE_PSYCHIC, TYPE_STEEL}, - .catchRate = 255, - .expYield = 306, - .evYield_Attack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRISM_ARMOR, ABILITY_NONE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = TRUE, - .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_CANNOT_BE_TRADED, - }, - - [SPECIES_NECROZMA_DAWN_WINGS] = - { - .baseHP = 97, - .baseAttack = 113, - .baseDefense = 109, - .baseSpeed = 77, - .baseSpAttack = 157, - .baseSpDefense = 127, - .types = { TYPE_PSYCHIC, TYPE_GHOST}, - .catchRate = 255, - .expYield = 306, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRISM_ARMOR, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = TRUE, - .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_CANNOT_BE_TRADED, - }, - - [SPECIES_NECROZMA_ULTRA] = - { - .baseHP = 97, - .baseAttack = 167, - .baseDefense = 97, - .baseSpeed = 129, - .baseSpAttack = 167, - .baseSpDefense = 97, - .types = { TYPE_PSYCHIC, TYPE_DRAGON}, - .catchRate = 255, - .expYield = 339, - .evYield_Attack = 1, - .evYield_Speed = 1, - .evYield_SpAttack = 1, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_NEUROFORCE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_YELLOW, - .noFlip = TRUE, - .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_ULTRA_BURST, - }, - - [SPECIES_MAGEARNA_ORIGINAL_COLOR] = MAGEARNA_SPECIES_INFO(BODY_COLOR_RED), -#endif - -#if P_GEN_8_POKEMON == TRUE - [SPECIES_CRAMORANT_GULPING] = CRAMORANT_SPECIES_INFO, - [SPECIES_CRAMORANT_GORGING] = CRAMORANT_SPECIES_INFO, - - [SPECIES_TOXTRICITY_LOW_KEY] = TOXTRICITY_SPECIES_INFO(ABILITY_MINUS), - - [SPECIES_SINISTEA_ANTIQUE] = SINISTEA_SPECIES_INFO, - - [SPECIES_POLTEAGEIST_ANTIQUE] = POLTEAGEIST_SPECIES_INFO, - - [SPECIES_ALCREMIE_RUBY_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_PINK), - [SPECIES_ALCREMIE_MATCHA_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_GREEN), - [SPECIES_ALCREMIE_MINT_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_BLUE), - [SPECIES_ALCREMIE_LEMON_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_YELLOW), - [SPECIES_ALCREMIE_SALTED_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_WHITE), - [SPECIES_ALCREMIE_RUBY_SWIRL] = ALCREMIE_SPECIES_INFO(BODY_COLOR_YELLOW), - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = ALCREMIE_SPECIES_INFO(BODY_COLOR_BROWN), - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = ALCREMIE_SPECIES_INFO(BODY_COLOR_YELLOW), - - [SPECIES_EISCUE_NOICE_FACE] = - { - .baseHP = 75, - .baseAttack = 80, - .baseDefense = 70, - .baseSpeed = 130, - .baseSpAttack = 65, - .baseSpDefense = 50, - .types = { TYPE_ICE, TYPE_ICE}, - .catchRate = 60, - .expYield = 165, - .evYield_Defense = 2, - .genderRatio = PERCENT_FEMALE(50), - .eggCycles = 25, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD}, - .abilities = {ABILITY_ICE_FACE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - }, - - [SPECIES_INDEEDEE_FEMALE] = - { - .baseHP = 70, - .baseAttack = 55, - .baseDefense = 65, - .baseSpeed = 85, - .baseSpAttack = 95, - .baseSpDefense = 105, - .types = { TYPE_PSYCHIC, TYPE_NORMAL}, - .catchRate = 30, - .expYield = 166, - .evYield_SpDefense = 2, - .genderRatio = MON_FEMALE, - .eggCycles = 40, - .friendship = 140, - .growthRate = GROWTH_FAST, - .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY}, - .abilities = {ABILITY_OWN_TEMPO, ABILITY_SYNCHRONIZE, ABILITY_PSYCHIC_SURGE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - }, - - [SPECIES_MORPEKO_HANGRY] = MORPEKO_SPECIES_INFO, - - [SPECIES_ZACIAN_CROWNED_SWORD] = - { - .baseHP = 92, - .baseAttack = P_UPDATED_STATS >= GEN_9 ? 150 : 170, - .baseDefense = 115, - .baseSpeed = 148, - .baseSpAttack = 80, - .baseSpDefense = 115, - .types = { TYPE_FAIRY, TYPE_STEEL}, - .catchRate = 10, - .expYield = 360, - .evYield_Speed = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_INTREPID_SWORD, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLUE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = - { - .baseHP = 92, - .baseAttack = P_UPDATED_STATS >= GEN_9 ? 120 : 130, - .baseDefense = P_UPDATED_STATS >= GEN_9 ? 140 : 145, - .baseSpeed = 128, - .baseSpAttack = 80, - .baseSpDefense = P_UPDATED_STATS >= GEN_9 ? 140 : 145, - .types = { TYPE_FIGHTING, TYPE_STEEL}, - .catchRate = 10, - .expYield = 360, - .evYield_Speed = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_DAUNTLESS_SHIELD, ABILITY_NONE}, - .bodyColor = BODY_COLOR_RED, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_ETERNATUS_ETERNAMAX] = - { - .baseHP = 255, - .baseAttack = 115, - .baseDefense = 250, - .baseSpeed = 130, - .baseSpAttack = 125, - .baseSpDefense = 250, - .types = { TYPE_POISON, TYPE_DRAGON}, - .catchRate = 255, - .expYield = 563, - .evYield_HP = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 0, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, - .bodyColor = BODY_COLOR_PURPLE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = - { - .baseHP = 100, - .baseAttack = 130, - .baseDefense = 100, - .baseSpeed = 97, - .baseSpAttack = 63, - .baseSpDefense = 60, - .types = { TYPE_FIGHTING, TYPE_WATER}, - .catchRate = 3, - .expYield = 275, - .evYield_Attack = 3, - .genderRatio = PERCENT_FEMALE(12.5), - .eggCycles = 120, - .friendship = STANDARD_FRIENDSHIP, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, - .bodyColor = BODY_COLOR_GRAY, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, - - [SPECIES_ZARUDE_DADA] = ZARUDE_SPECIES_INFO, - - [SPECIES_CALYREX_ICE_RIDER] = - { - .baseHP = 100, - .baseAttack = 165, - .baseDefense = 150, - .baseSpeed = 50, - .baseSpAttack = 85, - .baseSpDefense = 130, - .types = { TYPE_PSYCHIC, TYPE_ICE}, - .catchRate = 3, - .expYield = 340, - .evYield_Attack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 100, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_AS_ONE_ICE_RIDER, ABILITY_NONE}, - .bodyColor = BODY_COLOR_WHITE, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_CANNOT_BE_TRADED, - }, - - [SPECIES_CALYREX_SHADOW_RIDER] = - { - .baseHP = 100, - .baseAttack = 85, - .baseDefense = 80, - .baseSpeed = 150, - .baseSpAttack = 165, - .baseSpDefense = 100, - .types = { TYPE_PSYCHIC, TYPE_GHOST}, - .catchRate = 3, - .expYield = 340, - .evYield_SpAttack = 3, - .genderRatio = MON_GENDERLESS, - .eggCycles = 120, - .friendship = 100, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_AS_ONE_SHADOW_RIDER, ABILITY_NONE}, - .bodyColor = BODY_COLOR_BLACK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_CANNOT_BE_TRADED, - }, - - [SPECIES_ENAMORUS_THERIAN] = - { - .baseHP = 74, - .baseAttack = 115, - .baseDefense = 110, - .baseSpeed = 46, - .baseSpAttack = 135, - .baseSpDefense = 100, - .types = { TYPE_FAIRY, TYPE_FLYING}, - .catchRate = 3, - .expYield = 270, - .evYield_SpAttack = 3, - .genderRatio = MON_FEMALE, - .eggCycles = 120, - .friendship = 90, - .growthRate = GROWTH_SLOW, - .eggGroups = { EGG_GROUP_UNDISCOVERED, EGG_GROUP_UNDISCOVERED}, - .abilities = {ABILITY_OVERCOAT, ABILITY_NONE}, - .bodyColor = BODY_COLOR_PINK, - .noFlip = FALSE, - .flags = SPECIES_FLAG_LEGENDARY, - }, -#endif + */ }; diff --git a/src/data/pokemon/species_info/gen_1.h b/src/data/pokemon/species_info/gen_1.h new file mode 100644 index 0000000000..b502422c0b --- /dev/null +++ b/src/data/pokemon/species_info/gen_1.h @@ -0,0 +1,12233 @@ +#ifdef __INTELLISENSE__ +const struct SpeciesInfo gSpeciesInfoGen1[] = +{ +#endif + +#if P_FAMILY_BULBASAUR + [SPECIES_BULBASAUR] = + { + .baseHP = 45, + .baseAttack = 49, + .baseDefense = 49, + .baseSpeed = 45, + .baseSpAttack = 65, + .baseSpDefense = 65, + .types = { TYPE_GRASS, TYPE_POISON }, + .catchRate = 45, + .expYield = 64, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Bulbasaur"), + .cryId = CRY_BULBASAUR, + .natDexNum = NATIONAL_DEX_BULBASAUR, + .categoryName = _("Seed"), + .height = 7, + .weight = 69, + .description = COMPOUND_STRING( + "Bulbasaur can be seen napping in bright\n" + "sunlight. There is a seed on its back.\n" + "By soaking up the sun's rays, the seed\n" + "grows progressively larger."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Bulbasaur, 40, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Bulbasaur, + .frontAnimId = ANIM_V_JUMPS_H_JUMPS, + BACK_PIC(Bulbasaur, 56, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Bulbasaur), + ICON(Bulbasaur, 4), + .footprint = gMonFootprint_Bulbasaur, + LEARNSETS(Bulbasaur), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_IVYSAUR}), + }, + + [SPECIES_IVYSAUR] = + { + .baseHP = 60, + .baseAttack = 62, + .baseDefense = 63, + .baseSpeed = 60, + .baseSpAttack = 80, + .baseSpDefense = 80, + .types = { TYPE_GRASS, TYPE_POISON }, + .catchRate = 45, + .expYield = 142, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Ivysaur"), + .cryId = CRY_IVYSAUR, + .natDexNum = NATIONAL_DEX_IVYSAUR, + .categoryName = _("Seed"), + .height = 10, + .weight = 130, + .description = COMPOUND_STRING( + "To support its bulb, Ivysaur's legs\n" + "grow sturdy. If it spends more time lying in\n" + "the sunlight, the bud will soon bloom into\n" + "a large flower."), + .pokemonScale = 335, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Ivysaur, 56, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Ivysaur, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Ivysaur, 64, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Ivysaur), + ICON(Ivysaur, 4), + .footprint = gMonFootprint_Ivysaur, + LEARNSETS(Ivysaur), + .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_VENUSAUR}), + }, + +#define VENUSAUR_MISC_INFO \ + .types = { TYPE_GRASS, TYPE_POISON }, \ + .catchRate = 45, \ + .evYield_SpAttack = 2, \ + .evYield_SpDefense = 1, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .speciesName = _("Venusaur"), \ + .natDexNum = NATIONAL_DEX_VENUSAUR, \ + .categoryName = _("Seed"), \ + .footprint = gMonFootprint_Venusaur, \ + LEARNSETS(Venusaur), \ + .formSpeciesIdTable = sVenusaurFormSpeciesIdTable, \ + .formChangeTable = sVenusaurFormChangeTable + + [SPECIES_VENUSAUR] = + { + VENUSAUR_MISC_INFO, + .baseHP = 80, + .baseAttack = 82, + .baseDefense = 83, + .baseSpeed = 80, + .baseSpAttack = 100, + .baseSpDefense = 100, + .expYield = 236, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL }, + .cryId = CRY_VENUSAUR, + .height = 20, + .weight = 1000, + .description = COMPOUND_STRING( + "Venusaur's flower is said to take on vivid\n" + "colors if it gets plenty of nutrition and\n" + "sunlight. The flower's aroma soothes the\n" + "emotions of people."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 388, + .trainerOffset = 6, + FRONT_PIC(Venusaur, 64, 64), + FRONT_PIC_FEMALE(Venusaur, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Venusaur, + .frontAnimId = ANIM_ROTATE_UP_SLAM_DOWN, + BACK_PIC(Venusaur, 64, 48), + BACK_PIC_FEMALE(Venusaur, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Venusaur), + ICON(Venusaur, 4), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_VENUSAUR_MEGA] = + { + VENUSAUR_MISC_INFO, + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 123, + .baseSpeed = 80, + .baseSpAttack = 122, + .baseSpDefense = 120, + .expYield = 281, + .abilities = { ABILITY_THICK_FAT, ABILITY_THICK_FAT, ABILITY_THICK_FAT }, + .cryId = CRY_VENUSAUR_MEGA, + .height = 24, + .weight = 1555, + .description = COMPOUND_STRING( + "In order to support its flower, which\n" + "has grown larger due to Mega Evolution,\n" + "its back and legs have become stronger."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 388, + .trainerOffset = 6, + FRONT_PIC(VenusaurMega, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_VenusaurMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(VenusaurMega, 64, 64), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, + PALETTES(VenusaurMega), + ICON(VenusaurMega, 4), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS + +#if P_GIGANTAMAX_FORMS + [SPECIES_VENUSAUR_GIGANTAMAX] = + { + VENUSAUR_MISC_INFO, + .baseHP = 80, + .baseAttack = 82, + .baseDefense = 83, + .baseSpeed = 80, + .baseSpAttack = 100, + .baseSpDefense = 100, + .expYield = 236, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CHLOROPHYLL }, + .cryId = CRY_VENUSAUR, + .height = 240, + .weight = 0, + .description = COMPOUND_STRING( + "Spits big amounts of pollen like a volcano.\n" + "Breathing too much of it causes fainting.\n" + "In battle, it swings around two thick vines\n" + "that can easily topple 10-story buildings."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 388, + .trainerOffset = 6, + FRONT_PIC(VenusaurGigantamax, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_VenusaurGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(VenusaurGigantamax, 64, 64), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(VenusaurGigantamax), + ICON(VenusaurGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_BULBASAUR + +#if P_FAMILY_CHARMANDER + [SPECIES_CHARMANDER] = + { + .baseHP = 39, + .baseAttack = 52, + .baseDefense = 43, + .baseSpeed = 65, + .baseSpAttack = 60, + .baseSpDefense = 50, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 62, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Charmander"), + .cryId = CRY_CHARMANDER, + .natDexNum = NATIONAL_DEX_CHARMANDER, + .categoryName = _("Lizard"), + .height = 6, + .weight = 85, + .description = COMPOUND_STRING( + "The flame that burns at the tip of its\n" + "tail is an indication of its emotions.\n" + "The flame wavers when Charmander is\n" + "happy, and blazes when it is enraged."), + .pokemonScale = 444, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Charmander, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Charmander, + .frontAnimId = ANIM_V_JUMPS_SMALL, + BACK_PIC(Charmander, 48, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Charmander), + ICON(Charmander, 0), + .footprint = gMonFootprint_Charmander, + LEARNSETS(Charmander), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_CHARMELEON}), + }, + + [SPECIES_CHARMELEON] = + { + .baseHP = 58, + .baseAttack = 64, + .baseDefense = 58, + .baseSpeed = 80, + .baseSpAttack = 80, + .baseSpDefense = 65, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 142, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Charmeleon"), + .cryId = CRY_CHARMELEON, + .natDexNum = NATIONAL_DEX_CHARMELEON, + .categoryName = _("Flame"), + .height = 11, + .weight = 190, + .description = COMPOUND_STRING( + "Without pity, its sharp claws destroy foes.\n" + "If it encounters a strong enemy, it\n" + "becomes agitated, and the flame on its\n" + "tail flares with a bluish white color."), + .pokemonScale = 302, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Charmeleon, 56, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Charmeleon, + .frontAnimId = ANIM_BACK_AND_LUNGE, + BACK_PIC(Charmeleon, 56, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Charmeleon), + ICON(Charmeleon, 0), + .footprint = gMonFootprint_Charmeleon, + LEARNSETS(Charmeleon), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_CHARIZARD}), + }, + +#define CHARIZARD_MISC_INFO \ + .catchRate = 45, \ + .evYield_SpAttack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, \ + .speciesName = _("Charizard"), \ + .natDexNum = NATIONAL_DEX_CHARIZARD, \ + .categoryName = _("Flame"), \ + .footprint = gMonFootprint_Charizard, \ + LEARNSETS(Charizard), \ + .formSpeciesIdTable = sCharizardFormSpeciesIdTable, \ + .formChangeTable = sCharizardFormChangeTable + + [SPECIES_CHARIZARD] = + { + CHARIZARD_MISC_INFO, + .baseHP = 78, + .baseAttack = 84, + .baseDefense = 78, + .baseSpeed = 100, + .baseSpAttack = 109, + .baseSpDefense = 85, + .types = { TYPE_FIRE, TYPE_FLYING }, + .expYield = 240, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER }, + .bodyColor = BODY_COLOR_RED, + .cryId = CRY_CHARIZARD, + .height = 17, + .weight = 905, + .description = COMPOUND_STRING( + "A Charizard flies about in search of\n" + "strong opponents. It breathes intense\n" + "flames that can melt any material. However,\n" + "it will never torch a weaker foe."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 302, + .trainerOffset = 3, + FRONT_PIC(Charizard, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Charizard, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Charizard, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Charizard), + ICON(Charizard, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_CHARIZARD_MEGA_X] = + { + CHARIZARD_MISC_INFO, + .baseHP = 78, + .baseAttack = 130, + .baseDefense = 111, + .baseSpeed = 100, + .baseSpAttack = 130, + .baseSpDefense = 85, + .types = { TYPE_FIRE, TYPE_DRAGON }, + .expYield = 285, + .abilities = { ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS }, + .bodyColor = BODY_COLOR_BLACK, + .cryId = CRY_CHARIZARD_MEGA_X, + .height = 17, + .weight = 1105, + .description = COMPOUND_STRING( + "The overwhelming power that fills its\n" + "entire body causes it to turn black\n" + "and creates intense blue flames."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 302, + .trainerOffset = 3, + FRONT_PIC(CharizardMegaX, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_CharizardMegaX, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(CharizardMegaX, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(CharizardMegaX), + ICON(CharizardMegaX, 0), + .isMegaEvolution = TRUE, + }, + + [SPECIES_CHARIZARD_MEGA_Y] = + { + CHARIZARD_MISC_INFO, + .baseHP = 78, + .baseAttack = 104, + .baseDefense = 78, + .baseSpeed = 100, + .baseSpAttack = 159, + .baseSpDefense = 115, + .types = { TYPE_FIRE, TYPE_FLYING }, + .expYield = 285, + .abilities = { ABILITY_DROUGHT, ABILITY_DROUGHT, ABILITY_DROUGHT }, + .bodyColor = BODY_COLOR_RED, + .cryId = CRY_CHARIZARD_MEGA_Y, + .height = 17, + .weight = 1005, + .description = COMPOUND_STRING( + "Its bond with its Trainer is the source\n" + "of its power. It boasts speed and\n" + "maneuverability greater than that of a\n" + "jet fighter."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 302, + .trainerOffset = 3, + FRONT_PIC(CharizardMegaY, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_CharizardMegaY, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(CharizardMegaY, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(CharizardMegaY), + ICON(CharizardMegaY, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS + +#if P_GIGANTAMAX_FORMS + [SPECIES_CHARIZARD_GIGANTAMAX] = + { + CHARIZARD_MISC_INFO, + .baseHP = 78, + .baseAttack = 84, + .baseDefense = 78, + .baseSpeed = 100, + .baseSpAttack = 109, + .baseSpDefense = 85, + .types = { TYPE_FIRE, TYPE_FLYING }, + .expYield = 240, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_SOLAR_POWER }, + .bodyColor = BODY_COLOR_RED, + .cryId = CRY_CHARIZARD, + .height = 280, + .weight = 0, + .description = COMPOUND_STRING( + "The flame inside its body burns\n" + "hotter than 3,600 degrees Fahrenheit.\n" + "When Charizard roars, that\n" + "temperature climbs even higher."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 302, + .trainerOffset = 3, + FRONT_PIC(CharizardGigantamax, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_CharizardGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(CharizardGigantamax, 64, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(CharizardGigantamax), + ICON(CharizardGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CHARMANDER + +#if P_FAMILY_SQUIRTLE + [SPECIES_SQUIRTLE] = + { + .baseHP = 44, + .baseAttack = 48, + .baseDefense = 65, + .baseSpeed = 43, + .baseSpAttack = 50, + .baseSpDefense = 64, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 63, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Squirtle"), + .cryId = CRY_SQUIRTLE, + .natDexNum = NATIONAL_DEX_SQUIRTLE, + .categoryName = _("Tiny Turtle"), + .height = 5, + .weight = 90, + .description = COMPOUND_STRING( + "Its shell is not just for protection.\n" + "Its rounded shape and the grooves on its\n" + "surface minimize resistance in water,\n" + "enabling Squirtle to swim at high speeds."), + .pokemonScale = 412, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Squirtle, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Squirtle, + .frontAnimId = ANIM_V_JUMPS_BIG, + BACK_PIC(Squirtle, 48, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Squirtle), + ICON(Squirtle, 0), + .footprint = gMonFootprint_Squirtle, + LEARNSETS(Squirtle), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_WARTORTLE}), + }, + + [SPECIES_WARTORTLE] = + { + .baseHP = 59, + .baseAttack = 63, + .baseDefense = 80, + .baseSpeed = 58, + .baseSpAttack = 65, + .baseSpDefense = 80, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 142, + .evYield_Defense = 1, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Wartortle"), + .cryId = CRY_WARTORTLE, + .natDexNum = NATIONAL_DEX_WARTORTLE, + .categoryName = _("Turtle"), + .height = 10, + .weight = 225, + .description = COMPOUND_STRING( + "Its large tail is covered with rich, thick\n" + "fur that deepens in color with age.\n" + "The scratches on its shell are evidence\n" + "of this Pokémon's toughness in battle."), + .pokemonScale = 332, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Wartortle, 56, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Wartortle, + .frontAnimId = ANIM_SHRINK_GROW, + BACK_PIC(Wartortle, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Wartortle), + ICON(Wartortle, 2), + .footprint = gMonFootprint_Wartortle, + LEARNSETS(Wartortle), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_BLASTOISE}), + }, + +#define BLASTOISE_MISC_INFO \ + .types = { TYPE_WATER, TYPE_WATER }, \ + .catchRate = 45, \ + .evYield_SpDefense = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1 }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Blastoise"), \ + .natDexNum = NATIONAL_DEX_BLASTOISE, \ + .categoryName = _("Shellfish"), \ + .footprint = gMonFootprint_Blastoise, \ + LEARNSETS(Blastoise), \ + .formSpeciesIdTable = sBlastoiseFormSpeciesIdTable, \ + .formChangeTable = sBlastoiseFormChangeTable + + [SPECIES_BLASTOISE] = + { + BLASTOISE_MISC_INFO, + .baseHP = 79, + .baseAttack = 83, + .baseDefense = 100, + .baseSpeed = 78, + .baseSpAttack = 85, + .baseSpDefense = 105, + .expYield = 239, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH }, + .cryId = CRY_BLASTOISE, + .height = 16, + .weight = 855, + .description = COMPOUND_STRING( + "The waterspouts that protrude from its\n" + "shell are highly accurate. Their bullets of\n" + "water can precisely nail tin cans from\n" + "a distance of over 160 feet."), + .pokemonScale = 256, + .pokemonOffset = -1, + .trainerScale = 293, + .trainerOffset = 2, + FRONT_PIC(Blastoise, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Blastoise, + .frontAnimId = ANIM_V_SHAKE_TWICE, + .frontAnimDelay = 20, + BACK_PIC(Blastoise, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(Blastoise), + ICON(Blastoise, 2), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_BLASTOISE_MEGA] = + { + BLASTOISE_MISC_INFO, + .baseHP = 79, + .baseAttack = 103, + .baseDefense = 120, + .baseSpeed = 78, + .baseSpAttack = 135, + .baseSpDefense = 115, + .expYield = 284, + .abilities = { ABILITY_MEGA_LAUNCHER, ABILITY_MEGA_LAUNCHER, ABILITY_MEGA_LAUNCHER }, + .cryId = CRY_BLASTOISE_MEGA, + .height = 16, + .weight = 1011, + .description = COMPOUND_STRING( + "The cannon on its back is as powerful\n" + "as a tank gun. Its tough legs and back\n" + "enable it to withstand the recoil from\n" + "firing the cannon."), + .pokemonScale = 256, + .pokemonOffset = -1, + .trainerScale = 293, + .trainerOffset = 2, + FRONT_PIC(BlastoiseMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_BlastoiseMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(BlastoiseMega, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(BlastoiseMega), + ICON(BlastoiseMega, 2), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS + +#if P_GIGANTAMAX_FORMS + [SPECIES_BLASTOISE_GIGANTAMAX] = + { + BLASTOISE_MISC_INFO, + .baseHP = 79, + .baseAttack = 83, + .baseDefense = 100, + .baseSpeed = 78, + .baseSpAttack = 85, + .baseSpDefense = 105, + .expYield = 239, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_RAIN_DISH }, + .cryId = CRY_BLASTOISE, + .height = 250, + .weight = 0, + .description = COMPOUND_STRING( + "It's not very good at precision\n" + "shooting. When attacking, it just fires\n" + "its 31 cannons over and over and\n" + "over."), + .pokemonScale = 256, + .pokemonOffset = -1, + .trainerScale = 293, + .trainerOffset = 2, + FRONT_PIC(BlastoiseGigantamax, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_BlastoiseGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(BlastoiseGigantamax, 64, 64), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(BlastoiseGigantamax), + ICON(BlastoiseGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SQUIRTLE + +#if P_FAMILY_CATERPIE + [SPECIES_CATERPIE] = + { + .baseHP = 45, + .baseAttack = 30, + .baseDefense = 35, + .baseSpeed = 45, + .baseSpAttack = 20, + .baseSpDefense = 20, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 255, + .expYield = 39, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_RUN_AWAY }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Caterpie"), + .cryId = CRY_CATERPIE, + .natDexNum = NATIONAL_DEX_CATERPIE, + .categoryName = _("Worm"), + .height = 3, + .weight = 29, + .description = COMPOUND_STRING( + "Its voracious appetite compels it to\n" + "devour leaves bigger than itself without\n" + "hesitation. It releases a terribly strong\n" + "odor from its antennae."), + .pokemonScale = 549, + .pokemonOffset = 22, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Caterpie, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Caterpie, + .frontAnimId = ANIM_SWING_CONCAVE, + BACK_PIC(Caterpie, 48, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Caterpie), + ICON(Caterpie, 1), + .footprint = gMonFootprint_Caterpie, + LEARNSETS(Caterpie), + .evolutions = EVOLUTION({EVO_LEVEL, 7, SPECIES_METAPOD}), + }, + + [SPECIES_METAPOD] = + { + .baseHP = 50, + .baseAttack = 20, + .baseDefense = 55, + .baseSpeed = 30, + .baseSpAttack = 25, + .baseSpDefense = 25, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 120, + .expYield = 72, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Metapod"), + .cryId = CRY_METAPOD, + .natDexNum = NATIONAL_DEX_METAPOD, + .categoryName = _("Cocoon"), + .height = 7, + .weight = 99, + .description = COMPOUND_STRING( + "Its shell is as hard as an iron slab.\n" + "A Metapod does not move very much\n" + "because it is preparing its soft innards\n" + "for evolution inside the shell."), + .pokemonScale = 350, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Metapod, 40, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Metapod, + .frontAnimId = ANIM_SWING_CONCAVE, + BACK_PIC(Metapod, 40, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Metapod), + ICON(Metapod, 1), + .footprint = gMonFootprint_Metapod, + LEARNSETS(Metapod), + .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_BUTTERFREE}), + }, + +#define BUTTERFREE_MISC_INFO \ + .baseHP = 60, \ + .baseAttack = 45, \ + .baseDefense = 50, \ + .baseSpeed = 70, \ + .baseSpDefense = 80, \ + .baseSpAttack = P_UPDATED_STATS >= GEN_6 ? 90 : 80, \ + .types = { TYPE_BUG, TYPE_FLYING }, \ + .catchRate = 45, \ + .expYield = 178, \ + .evYield_SpAttack = 2, \ + .evYield_SpDefense = 1, \ + .itemRare = ITEM_SILVER_POWDER, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, \ + .abilities = { ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_TINTED_LENS }, \ + .bodyColor = BODY_COLOR_WHITE, \ + .speciesName = _("Butterfree"), \ + .cryId = CRY_BUTTERFREE, \ + .natDexNum = NATIONAL_DEX_BUTTERFREE, \ + .categoryName = _("Butterfly"), \ + .footprint = gMonFootprint_Butterfree, \ + LEARNSETS(Butterfree), \ + .formSpeciesIdTable = sButterfreeFormSpeciesIdTable, \ + .formChangeTable = sButterfreeFormChangeTable + + [SPECIES_BUTTERFREE] = + { + BUTTERFREE_MISC_INFO, + .height = 11, + .weight = 320, + .description = COMPOUND_STRING( + "It has a superior ability to search for\n" + "delicious honey from flowers. It can seek,\n" + "extract, and carry honey from flowers\n" + "blooming over six miles away."), + .pokemonScale = 312, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Butterfree, 64, 56), + FRONT_PIC_FEMALE(Butterfree, 64, 56), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Butterfree, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 12, + BACK_PIC(Butterfree, 64, 56), + BACK_PIC_FEMALE(Butterfree, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Butterfree), + ICON(Butterfree, 0), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_BUTTERFREE_GIGANTAMAX] = + { + BUTTERFREE_MISC_INFO, + .height = 170, + .weight = 0, + .description = COMPOUND_STRING( + "Once it has opponents trapped in a\n" + "tornado that could blow away a 10-\n" + "ton truck, it finishes them off with\n" + "its poisonous scales."), + .pokemonScale = 312, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(ButterfreeGigantamax, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_ButterfreeGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 7, + BACK_PIC(ButterfreeGigantamax, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ButterfreeGigantamax), + ICON(ButterfreeGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CATERPIE + +#if P_FAMILY_WEEDLE + [SPECIES_WEEDLE] = + { + .baseHP = 40, + .baseAttack = 35, + .baseDefense = 30, + .baseSpeed = 50, + .baseSpAttack = 20, + .baseSpDefense = 20, + .types = { TYPE_BUG, TYPE_POISON }, + .catchRate = 255, + .expYield = 39, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_RUN_AWAY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Weedle"), + .cryId = CRY_WEEDLE, + .natDexNum = NATIONAL_DEX_WEEDLE, + .categoryName = _("Hairy Bug"), + .height = 3, + .weight = 32, + .description = COMPOUND_STRING( + "A Weedle has an extremely acute sense\n" + "of smell. It distinguishes its favorite\n" + "kinds of leaves from those it dislikes by\n" + "sniffing with its big red nose."), + .pokemonScale = 455, + .pokemonOffset = 22, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Weedle, 40, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Weedle, + .frontAnimId = ANIM_H_SLIDE_SLOW, + .frontAnimDelay = 10, + BACK_PIC(Weedle, 56, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Weedle), + ICON(Weedle, 2), + .footprint = gMonFootprint_Weedle, + LEARNSETS(Weedle), + .evolutions = EVOLUTION({EVO_LEVEL, 7, SPECIES_KAKUNA}), + }, + + [SPECIES_KAKUNA] = + { + .baseHP = 45, + .baseAttack = 25, + .baseDefense = 50, + .baseSpeed = 35, + .baseSpAttack = 25, + .baseSpDefense = 25, + .types = { TYPE_BUG, TYPE_POISON }, + .catchRate = 120, + .expYield = 72, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Kakuna"), + .cryId = CRY_KAKUNA, + .natDexNum = NATIONAL_DEX_KAKUNA, + .categoryName = _("Cocoon"), + .height = 6, + .weight = 100, + .description = COMPOUND_STRING( + "It remains virtually immobile while it\n" + "clings to a tree. However, on the inside,\n" + "it busily prepares for evolution. This is\n" + "evident from how hot its shell becomes."), + .pokemonScale = 424, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Kakuna, 24, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Kakuna, + .frontAnimId = ANIM_GLOW_ORANGE, + .frontAnimDelay = 20, + BACK_PIC(Kakuna, 32, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Kakuna), + ICON(Kakuna, 2), + .footprint = gMonFootprint_Kakuna, + LEARNSETS(Kakuna), + .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_BEEDRILL}), + }, + +#define BEEDRILL_ATTACK (P_UPDATED_STATS >= GEN_6 ? 90 : 80) + +#define BEEDRILL_MISC_INFO \ + .types = { TYPE_BUG, TYPE_POISON }, \ + .catchRate = 45, \ + .evYield_Attack = 2, \ + .evYield_SpDefense = 1, \ + .itemRare = ITEM_POISON_BARB, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, \ + .bodyColor = BODY_COLOR_YELLOW, \ + .speciesName = _("Beedrill"), \ + .natDexNum = NATIONAL_DEX_BEEDRILL, \ + .categoryName = _("Poison Bee"), \ + .footprint = gMonFootprint_Beedrill, \ + LEARNSETS(Beedrill), \ + .formSpeciesIdTable = sBeedrillFormSpeciesIdTable, \ + .formChangeTable = sBeedrillFormChangeTable + + [SPECIES_BEEDRILL] = + { + BEEDRILL_MISC_INFO, + .baseHP = 65, + .baseDefense = 40, + .baseSpeed = 75, + .baseSpAttack = 45, + .baseSpDefense = 80, + .baseAttack = BEEDRILL_ATTACK, + .expYield = 178, + .abilities = { ABILITY_SWARM, ABILITY_NONE, ABILITY_SNIPER }, + .cryId = CRY_BEEDRILL, + .height = 10, + .weight = 295, + .description = COMPOUND_STRING( + "A Beedrill is extremely territorial.\n" + "For safety reasons, no one should ever\n" + "approach its nest. If angered, they will\n" + "attack in a swarm."), + .pokemonScale = 366, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Beedrill, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Beedrill, + .frontAnimId = ANIM_ZIGZAG_SLOW, + .enemyMonElevation = 9, + BACK_PIC(Beedrill, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Beedrill), + ICON(Beedrill, 2), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_BEEDRILL_MEGA] = + { + BEEDRILL_MISC_INFO, + .baseHP = 65, + .baseAttack = BEEDRILL_ATTACK + 60, + .baseDefense = 40, + .baseSpeed = 145, + .baseSpAttack = 15, + .baseSpDefense = 80, + .expYield = 223, + .abilities = { ABILITY_ADAPTABILITY, ABILITY_ADAPTABILITY, ABILITY_ADAPTABILITY }, + .cryId = CRY_BEEDRILL_MEGA, + .height = 14, + .weight = 405, + .description = COMPOUND_STRING( + "Its legs have become poison stingers.\n" + "It stabs its prey repeatedly with the\n" + "stingers on its limbs, dealing the final\n" + "blow with the stinger on its rear."), + .pokemonScale = 366, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(BeedrillMega, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_BeedrillMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 5, + BACK_PIC(BeedrillMega, 64, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(BeedrillMega), + ICON(BeedrillMega, 2), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_WEEDLE + +#if P_FAMILY_PIDGEY + [SPECIES_PIDGEY] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 40, + .baseSpeed = 56, + .baseSpAttack = 35, + .baseSpDefense = 35, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 255, + .expYield = 50, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Pidgey"), + .cryId = CRY_PIDGEY, + .natDexNum = NATIONAL_DEX_PIDGEY, + .categoryName = _("Tiny Bird"), + .height = 3, + .weight = 18, + .description = COMPOUND_STRING( + "It has an extremely sharp sense of\n" + "direction. It can unerringly return home to\n" + "its nest, however far it may be removed\n" + "from its familiar surroundings."), + .pokemonScale = 508, + .pokemonOffset = -3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pidgey, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Pidgey, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Pidgey, 56, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Pidgey), + ICON(Pidgey, 0), + .footprint = gMonFootprint_Pidgey, + LEARNSETS(Pidgey), + .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_PIDGEOTTO}), + }, + + [SPECIES_PIDGEOTTO] = + { + .baseHP = 63, + .baseAttack = 60, + .baseDefense = 55, + .baseSpeed = 71, + .baseSpAttack = 50, + .baseSpDefense = 50, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 120, + .expYield = 122, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Pidgeotto"), + .cryId = CRY_PIDGEOTTO, + .natDexNum = NATIONAL_DEX_PIDGEOTTO, + .categoryName = _("Bird"), + .height = 11, + .weight = 300, + .description = COMPOUND_STRING( + "This Pokémon flies around, patrolling its\n" + "large territory. If its living space is\n" + "violated, it shows no mercy in thoroughly\n" + "punishing the foe with its sharp claws."), + .pokemonScale = 331, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pidgeotto, 56, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Pidgeotto, + .frontAnimId = ANIM_V_STRETCH, + .frontAnimDelay = 25, + BACK_PIC(Pidgeotto, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Pidgeotto), + ICON(Pidgeotto, 0), + .footprint = gMonFootprint_Pidgeotto, + LEARNSETS(Pidgeotto), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_PIDGEOT}), + }, + +#define PIDGEOT_SPEED (P_UPDATED_STATS >= GEN_6 ? 101 : 91) + +#define PIDGEOT_MISC_INFO \ + .types = { TYPE_NORMAL, TYPE_FLYING }, \ + .catchRate = 45, \ + .evYield_Speed = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING },\ + .bodyColor = BODY_COLOR_BROWN, \ + .speciesName = _("Pidgeot"), \ + .natDexNum = NATIONAL_DEX_PIDGEOT, \ + .categoryName = _("Bird"), \ + .footprint = gMonFootprint_Pidgeot, \ + LEARNSETS(Pidgeot), \ + .formSpeciesIdTable = sPidgeotFormSpeciesIdTable, \ + .formChangeTable = sPidgeotFormChangeTable + + [SPECIES_PIDGEOT] = + { + PIDGEOT_MISC_INFO, + .baseHP = 83, + .baseAttack = 80, + .baseDefense = 75, + .baseSpAttack = 70, + .baseSpDefense = 70, + .baseSpeed = PIDGEOT_SPEED, + .expYield = 216, + .abilities = { ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS }, + .cryId = CRY_PIDGEOT, + .height = 15, + .weight = 395, + .description = COMPOUND_STRING( + "This Pokémon has gorgeous, glossy\n" + "feathers. Many Trainers are so captivated\n" + "by the beautiful feathers on its head that\n" + "they choose Pidgeot as their Pokémon."), + .pokemonScale = 269, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pidgeot, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Pidgeot, + .frontAnimId = ANIM_GROW_VIBRATE, + .enemyMonElevation = 5, + BACK_PIC(Pidgeot, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Pidgeot), + ICON(Pidgeot, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_PIDGEOT_MEGA] = + { + PIDGEOT_MISC_INFO, + .baseHP = 83, + .baseAttack = 80, + .baseDefense = 80, + .baseSpeed = PIDGEOT_SPEED + 20, + .baseSpAttack = 135, + .baseSpDefense = 80, + .expYield = 261, + .abilities = { ABILITY_NO_GUARD, ABILITY_NO_GUARD, ABILITY_NO_GUARD }, + .cryId = CRY_PIDGEOT_MEGA, + .height = 22, + .weight = 505, + .description = COMPOUND_STRING( + "With its muscular strength now greatly\n" + "increased, it can fly continuously\n" + "for two weeks without resting."), + .pokemonScale = 269, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(PidgeotMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_PidgeotMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 8, + BACK_PIC(PidgeotMega, 64, 64), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(PidgeotMega), + ICON(PidgeotMega, 0), + .isMegaEvolution = TRUE, + }, +#endif +#endif //P_FAMILY_PIDGEY + +#if P_FAMILY_RATTATA +#define RATTATA_FAMILY_MISC_INFO \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD } + +#define RATTATA_MISC_INFO \ + .baseHP = 30, \ + .baseAttack = 56, \ + .baseDefense = 35, \ + .baseSpeed = 72, \ + .baseSpAttack = 25, \ + .baseSpDefense = 35, \ + .catchRate = 255, \ + .expYield = 51, \ + .evYield_Speed = 1, \ + .speciesName = _("Rattata"), \ + .cryId = CRY_RATTATA, \ + .natDexNum = NATIONAL_DEX_RATTATA, \ + .categoryName = _("Mouse"), \ + .footprint = gMonFootprint_Rattata, \ + .formSpeciesIdTable = sRattataFormSpeciesIdTable + +#define RATICATE_MISC_INFO \ + .catchRate = 127, \ + .expYield = 145, \ + .evYield_Speed = 2, \ + .speciesName = _("Raticate"), \ + .cryId = CRY_RATICATE, \ + .natDexNum = NATIONAL_DEX_RATICATE, \ + .categoryName = _("Mouse"), \ + .height = 7, \ + .footprint = gMonFootprint_Raticate,\ + .formSpeciesIdTable = sRaticateFormSpeciesIdTable + + [SPECIES_RATTATA] = + { + RATTATA_FAMILY_MISC_INFO, + RATTATA_MISC_INFO, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .abilities = { ABILITY_RUN_AWAY, ABILITY_GUTS, ABILITY_HUSTLE }, + .bodyColor = BODY_COLOR_PURPLE, + .height = 3, + .weight = 35, + .description = COMPOUND_STRING( + "A Rattata is cautious in the extreme.\n" + "Even while it is asleep, it constantly\n" + "moves its ears and listens for danger.\n" + "It will make its nest anywhere."), + .pokemonScale = 481, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Rattata, 40, 40), + FRONT_PIC_FEMALE(Rattata, 40, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Rattata, + .frontAnimId = ANIM_H_JUMPS, + BACK_PIC(Rattata, 64, 56), + BACK_PIC_FEMALE(Rattata, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Rattata), + ICON(Rattata, 2), + LEARNSETS(Rattata), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_RATICATE}), + }, + + [SPECIES_RATICATE] = + { + RATTATA_FAMILY_MISC_INFO, + RATICATE_MISC_INFO, + .baseHP = 55, + .baseAttack = 81, + .baseDefense = 60, + .baseSpeed = 97, + .baseSpAttack = 50, + .baseSpDefense = 70, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .abilities = { ABILITY_RUN_AWAY, ABILITY_GUTS, ABILITY_HUSTLE }, + .bodyColor = BODY_COLOR_BROWN, + .weight = 185, + .description = COMPOUND_STRING( + "A Raticate's sturdy fangs grow steadily.\n" + "To keep them ground down, it gnaws on\n" + "rocks and logs. It may even chew on the\n" + "walls of houses."), + .pokemonScale = 459, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Raticate, 64, 56), + FRONT_PIC_FEMALE(Raticate, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Raticate, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, + BACK_PIC(Raticate, 64, 48), + BACK_PIC_FEMALE(Raticate, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Raticate), + ICON(Raticate, 2), + LEARNSETS(Raticate), + }, + +#if P_ALOLAN_FORMS + [SPECIES_RATTATA_ALOLAN] = + { + RATTATA_FAMILY_MISC_INFO, + RATTATA_MISC_INFO, + .types = { TYPE_DARK, TYPE_NORMAL }, + .itemRare = ITEM_PECHA_BERRY, + .abilities = { ABILITY_GLUTTONY, ABILITY_HUSTLE, ABILITY_THICK_FAT }, + .bodyColor = BODY_COLOR_BLACK, + .height = 3, + .weight = 38, + .description = COMPOUND_STRING( + "With its incisors, it gnaws through doors\n" + "and infiltrates people's homes.\n" + "Then, with a twitch of its whiskers,\n" + "it steals whatever food it finds."), + .pokemonScale = 481, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(RattataAlolan, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_RattataAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(RattataAlolan, 64, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(RattataAlolan), + ICON(RattataAlolan, 2), + LEARNSETS(RattataAlolan), + .isAlolanForm = TRUE, + .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 20, SPECIES_RATICATE_ALOLAN}), + }, + + [SPECIES_RATICATE_ALOLAN] = + { + RATTATA_FAMILY_MISC_INFO, + RATICATE_MISC_INFO, + .baseHP = 75, + .baseAttack = 71, + .baseDefense = 70, + .baseSpeed = 77, + .baseSpAttack = 40, + .baseSpDefense = 80, + .types = { TYPE_DARK, TYPE_NORMAL }, + .itemRare = ITEM_PECHA_BERRY, + .abilities = { ABILITY_GLUTTONY, ABILITY_HUSTLE, ABILITY_THICK_FAT }, + .bodyColor = BODY_COLOR_BLACK, + .weight = 255, + .description = COMPOUND_STRING( + "It forms a group of Rattata, which it \n" + "assumes command of. Each group\n" + "has its own territory, and disputes\n" + "over food happen often."), + .pokemonScale = 459, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(RaticateAlolan, 56, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_RaticateAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(RaticateAlolan, 64, 48), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(RaticateAlolan), + ICON(RaticateAlolan, 2), + LEARNSETS(RaticateAlolan), + .isAlolanForm = TRUE, + }, +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_RATTATA + +#if P_FAMILY_SPEAROW + [SPECIES_SPEAROW] = + { + .baseHP = 40, + .baseAttack = 60, + .baseDefense = 30, + .baseSpeed = 70, + .baseSpAttack = 31, + .baseSpDefense = 31, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 255, + .expYield = 52, + .evYield_Speed = 1, + .itemRare = ITEM_SHARP_BEAK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_SNIPER }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Spearow"), + .cryId = CRY_SPEAROW, + .natDexNum = NATIONAL_DEX_SPEAROW, + .categoryName = _("Tiny Bird"), + .height = 3, + .weight = 20, + .description = COMPOUND_STRING( + "Its loud cry can be heard over half a mile\n" + "away. If its high, keening cry is heard\n" + "echoing all around, it is a sign that they\n" + "are warning each other of danger."), + .pokemonScale = 571, + .pokemonOffset = 22, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Spearow, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Spearow, + .frontAnimId = ANIM_V_JUMPS_SMALL, + BACK_PIC(Spearow, 56, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Spearow), + ICON(Spearow, 0), + .footprint = gMonFootprint_Spearow, + LEARNSETS(Spearow), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_FEAROW}), + }, + + [SPECIES_FEAROW] = + { + .baseHP = 65, + .baseAttack = 90, + .baseDefense = 65, + .baseSpeed = 100, + .baseSpAttack = 61, + .baseSpDefense = 61, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 90, + .expYield = 155, + .evYield_Speed = 2, + .itemRare = ITEM_SHARP_BEAK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_SNIPER }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Fearow"), + .cryId = CRY_FEAROW, + .natDexNum = NATIONAL_DEX_FEAROW, + .categoryName = _("Beak"), + .height = 12, + .weight = 380, + .description = COMPOUND_STRING( + "Its long neck and elongated beak are\n" + "ideal for catching prey in soil or water.\n" + "It deftly moves this extended and skinny\n" + "beak to pluck prey."), + .pokemonScale = 278, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Fearow, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Fearow, + .frontAnimId = ANIM_FIGURE_8, + .frontAnimDelay = 2, + .enemyMonElevation = 6, + BACK_PIC(Fearow, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Fearow), + ICON(Fearow, 0), + .footprint = gMonFootprint_Fearow, + LEARNSETS(Fearow), + }, +#endif //P_FAMILY_SPEAROW + +#if P_FAMILY_EKANS + [SPECIES_EKANS] = + { + .baseHP = 35, + .baseAttack = 60, + .baseDefense = 44, + .baseSpeed = 55, + .baseSpAttack = 40, + .baseSpDefense = 54, + .types = { TYPE_POISON, TYPE_POISON }, + .catchRate = 255, + .expYield = 58, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_SHED_SKIN, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Ekans"), + .cryId = CRY_EKANS, + .natDexNum = NATIONAL_DEX_EKANS, + .categoryName = _("Snake"), + .height = 20, + .weight = 69, + .description = COMPOUND_STRING( + "An Ekans curls itself up in a spiral while\n" + "it rests. This position allows it to quickly\n" + "respond to an enemy from any direction\n" + "with a threat from its upraised head."), + .pokemonScale = 298, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Ekans, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Ekans, + .frontAnimId = ANIM_V_STRETCH, + .frontAnimDelay = 30, + BACK_PIC(Ekans, 56, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Ekans), + ICON(Ekans, 2), + .footprint = gMonFootprint_Ekans, + LEARNSETS(Ekans), + .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARBOK}), + }, + + [SPECIES_ARBOK] = + { + .baseHP = 60, + .baseAttack = P_UPDATED_STATS >= GEN_7 ? 95 : 85, + .baseDefense = 69, + .baseSpeed = 80, + .baseSpAttack = 65, + .baseSpDefense = 79, + .types = { TYPE_POISON, TYPE_POISON }, + .catchRate = 90, + .expYield = 157, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_SHED_SKIN, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Arbok"), + .cryId = CRY_ARBOK, + .natDexNum = NATIONAL_DEX_ARBOK, + .categoryName = _("Cobra"), + .height = 35, + .weight = 650, + .description = COMPOUND_STRING( + "This Pokémon has a terrifically strong\n" + "constricting power. It can even flatten\n" + "steel oil drums. Once it wraps its body\n" + "around its foe, escaping is impossible."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 296, + .trainerOffset = 2, + FRONT_PIC(Arbok, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Arbok, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Arbok, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Arbok), + ICON(Arbok, 2), + .footprint = gMonFootprint_Arbok, + LEARNSETS(Arbok), + }, +#endif //P_FAMILY_EKANS + +#if P_FAMILY_PIKACHU +#if P_GEN_2_CROSS_EVOS +#define PICHU_MISC_INFO \ + .baseHP = 20, \ + .baseAttack = 40, \ + .baseDefense = 15, \ + .baseSpeed = 60, \ + .baseSpAttack = 35, \ + .baseSpDefense = 35, \ + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, \ + .catchRate = 190, \ + .expYield = 41, \ + .evYield_Speed = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 10, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, \ + .bodyColor = BODY_COLOR_YELLOW, \ + .speciesName = _("Pichu"), \ + .cryId = CRY_PICHU, \ + .natDexNum = NATIONAL_DEX_PICHU, \ + .categoryName = _("Tiny Mouse"), \ + .height = 3, \ + .weight = 20, \ + .description = gPichuPokedexText, \ + .pokemonScale = 508, \ + .pokemonOffset = 20, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Pichu, \ + LEARNSETS(Pichu), \ + .formSpeciesIdTable = sPichuFormSpeciesIdTable + + [SPECIES_PICHU] = + { + PICHU_MISC_INFO, + FRONT_PIC(Pichu, 32, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Pichu, + .frontAnimId = ANIM_V_JUMPS_BIG, + BACK_PIC(Pichu, 48, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Pichu), + ICON(Pichu, 1), + .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}), + }, + + [SPECIES_PICHU_SPIKY_EARED] = + { + PICHU_MISC_INFO, + .noFlip = TRUE, + FRONT_PIC(PichuSpikyEared, 32, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_PichuSpikyEared, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PichuSpikyEared, 48, 56), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PichuSpikyEared), + ICON(PichuSpikyEared, 1), + }, +#endif //P_GEN_2_CROSS_EVOS + +#define PIKACHU_MISC_INFO \ + .baseHP = 35, \ + .baseAttack = 55, \ + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 40 : 30, \ + .baseSpeed = 90, \ + .baseSpAttack = 50, \ + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 50 : 40, \ + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, \ + .catchRate = 190, \ + .expYield = 112, \ + .evYield_Speed = 2, \ + .itemRare = ITEM_LIGHT_BALL, \ + .eggCycles = 10, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, \ + .bodyColor = BODY_COLOR_YELLOW, \ + .speciesName = _("Pikachu"), \ + .cryId = CRY_PIKACHU, \ + .natDexNum = NATIONAL_DEX_PIKACHU, \ + .categoryName = _("Mouse"), \ + .footprint = gMonFootprint_Pikachu, \ + LEARNSETS(Pikachu), \ + .formSpeciesIdTable = sPikachuFormSpeciesIdTable + +#define PIKACHU_REGULAR_SIZE_INFO \ + .height = 4, \ + .weight = 60, \ + .pokemonScale = 479, \ + .pokemonOffset = 19, \ + .trainerScale = 256, \ + .trainerOffset = 0 + + [SPECIES_PIKACHU] = + { + PIKACHU_MISC_INFO, + PIKACHU_REGULAR_SIZE_INFO, + .genderRatio = PERCENT_FEMALE(50), + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY }, + .description = gPikachuPokedexText, + FRONT_PIC(Pikachu, 48, 48), + FRONT_PIC_FEMALE(Pikachu, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Pikachu, + .frontAnimId = ANIM_FLASH_YELLOW, + .frontAnimDelay = 25, + BACK_PIC(Pikachu, 64, 56), + BACK_PIC_FEMALE(Pikachu, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(Pikachu), + ICON(Pikachu, 2), + #if P_CUSTOM_GENDER_DIFF_ICONS == TRUE + ICON_FEMALE(Pikachu, 2), + #endif + .formChangeTable = sPikachuFormChangeTable, + .evolutions = EVOLUTION({EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU}, + {EVO_NONE, 0, SPECIES_RAICHU_ALOLAN}), + }, + +#if P_COSPLAY_PIKACHU_FORMS +#define PIKACHU_COSPLAY_MISC_INFO \ + PIKACHU_MISC_INFO, \ + PIKACHU_REGULAR_SIZE_INFO, \ + .genderRatio = MON_FEMALE, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED },\ + .description = gPikachuPokedexText + + [SPECIES_PIKACHU_COSPLAY] = + { + PIKACHU_COSPLAY_MISC_INFO, + FRONT_PIC(PikachuCosplay, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_PikachuCosplay, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PikachuCosplay, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PikachuCosplay), + ICON(PikachuCosplay, 2), + }, + + [SPECIES_PIKACHU_ROCK_STAR] = + { + PIKACHU_COSPLAY_MISC_INFO, + FRONT_PIC(PikachuRockStar, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_PikachuRockStar, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PikachuRockStar, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PikachuRockStar), + ICON(PikachuRockStar, 1), + }, + + [SPECIES_PIKACHU_BELLE] = + { + PIKACHU_COSPLAY_MISC_INFO, + .noFlip = TRUE, + FRONT_PIC(PikachuBelle, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_PikachuBelle, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PikachuBelle, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PikachuBelle), + ICON(PikachuBelle, 0), + }, + + [SPECIES_PIKACHU_POP_STAR] = + { + PIKACHU_COSPLAY_MISC_INFO, + .noFlip = TRUE, + FRONT_PIC(PikachuPopStar, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_PikachuPopStar, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PikachuPopStar, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PikachuPopStar), + ICON(PikachuPopStar, 0), + }, + + [SPECIES_PIKACHU_PH_D] = + { + PIKACHU_COSPLAY_MISC_INFO, + FRONT_PIC(PikachuPhD, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_PikachuPhD, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PikachuPhD, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PikachuPhD), + ICON(PikachuPhD, 1), + }, + + [SPECIES_PIKACHU_LIBRE] = + { + PIKACHU_COSPLAY_MISC_INFO, + FRONT_PIC(PikachuLibre, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_PikachuLibre, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PikachuLibre, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PikachuLibre), + ICON(PikachuLibre, 0), + }, + +#endif //P_COSPLAY_PIKACHU_FORMS + +#if P_CAP_PIKACHU_FORMS + +#define PIKACHU_CAP_MISC_INFO \ + PIKACHU_MISC_INFO, \ + PIKACHU_REGULAR_SIZE_INFO, \ + .genderRatio = MON_MALE, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED } + + [SPECIES_PIKACHU_ORIGINAL_CAP] = + { + PIKACHU_CAP_MISC_INFO, + .noFlip = TRUE, + .description = COMPOUND_STRING( + "This Pikachu wears its partner's cap, which\n" + "is proof of the strong bond Pikachu and\n" + "its partner formed during adventures\n" + "across many different regions."), + FRONT_PIC(PikachuOriginalCap, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_PikachuOriginalCap, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PikachuOriginalCap, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PikachuOriginalCap), + ICON(PikachuOriginalCap, 0), + }, + + [SPECIES_PIKACHU_HOENN_CAP] = + { + PIKACHU_CAP_MISC_INFO, + .description = COMPOUND_STRING( + "This Pikachu wears its partner's cap, which\n" + "is proof of the strong bond Pikachu and\n" + "its partner formed during adventures\n" + "across the Hoenn region together."), + FRONT_PIC(PikachuHoennCap, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_PikachuHoennCap, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PikachuHoennCap, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PikachuHoennCap), + ICON(PikachuHoennCap, 0), + }, + + [SPECIES_PIKACHU_SINNOH_CAP] = + { + PIKACHU_CAP_MISC_INFO, + .description = COMPOUND_STRING( + "This Pikachu wears its partner's cap, which\n" + "is proof of the strong bond Pikachu and\n" + "its partner formed during adventures\n" + "across the Sinnoh region together."), + FRONT_PIC(PikachuSinnohCap, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_PikachuSinnohCap, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PikachuSinnohCap, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PikachuSinnohCap), + ICON(PikachuSinnohCap, 0), + }, + + [SPECIES_PIKACHU_UNOVA_CAP] = + { + PIKACHU_CAP_MISC_INFO, + .description = COMPOUND_STRING( + "This Pikachu wears its partner's cap, which\n" + "is proof of the strong bond Pikachu and\n" + "its partner formed during adventures\n" + "across the Unova region together."), + FRONT_PIC(PikachuUnovaCap, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_PikachuUnovaCap, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PikachuUnovaCap, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PikachuUnovaCap), + ICON(PikachuUnovaCap, 0), + }, + + [SPECIES_PIKACHU_KALOS_CAP] = + { + PIKACHU_CAP_MISC_INFO, + .description = COMPOUND_STRING( + "This Pikachu wears its partner's cap, which\n" + "is proof of the strong bond Pikachu and\n" + "its partner formed during adventures\n" + "across the Kalos region together."), + FRONT_PIC(PikachuKalosCap, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_PikachuKalosCap, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PikachuKalosCap, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PikachuKalosCap), + ICON(PikachuKalosCap, 0), + }, + + [SPECIES_PIKACHU_ALOLA_CAP] = + { + PIKACHU_CAP_MISC_INFO, + .description = COMPOUND_STRING( + "This Pikachu wears its partner's cap, which\n" + "is proof of the strong bond Pikachu and\n" + "its partner formed during adventures\n" + "across the Alola region together."), + FRONT_PIC(PikachuAlolaCap, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_PikachuAlolaCap, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PikachuAlolaCap, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PikachuAlolaCap), + ICON(PikachuAlolaCap, 0), + }, + + [SPECIES_PIKACHU_PARTNER_CAP] = + { + PIKACHU_CAP_MISC_INFO, + .noFlip = TRUE, + .description = COMPOUND_STRING( + "This Pikachu wears its partner's cap, which\n" + "is proof of the strong bond Pikachu and\n" + "its partner formed as the two overcame\n" + "many hardships together."), + FRONT_PIC(PikachuPartnerCap, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_PikachuPartnerCap, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PikachuPartnerCap, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PikachuPartnerCap), + ICON(PikachuPartnerCap, 0), + }, + + [SPECIES_PIKACHU_WORLD_CAP] = + { + PIKACHU_CAP_MISC_INFO, + .description = COMPOUND_STRING( + "This Pikachu wears its partner's cap, which\n" + "is proof of the strong bond Pikachu and\n" + "its partner formed during adventures\n" + "across the world together."), + FRONT_PIC(PikachuWorldCap, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_PikachuWorldCap, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PikachuWorldCap, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PikachuWorldCap), + ICON(PikachuWorldCap, 0), + }, + +#endif //P_CAP_PIKACHU_FORMS + +#if P_GIGANTAMAX_FORMS + [SPECIES_PIKACHU_GIGANTAMAX] = + { + PIKACHU_MISC_INFO, + .genderRatio = PERCENT_FEMALE(50), + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY }, + .height = 210, + .weight = 0, + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + .description = COMPOUND_STRING( + "When it smashes its opponents with\n" + "its bolt-shaped tail, it delivers a\n" + "surge of electricity equivalent to a\n" + "lightning strike."), + FRONT_PIC(PikachuGigantamax, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_PikachuGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PikachuGigantamax, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PikachuGigantamax), + ICON(PikachuGigantamax, 2), + .formChangeTable = sPikachuFormChangeTable, + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS + +#define RAICHU_SPEED (P_UPDATED_STATS >= GEN_6 ? 110 : 100) + +#define RAICHU_MISC_INFO \ + .catchRate = 75, \ + .expYield = 218, \ + .evYield_Speed = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 10, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY }, \ + .speciesName = _("Raichu"), \ + .cryId = CRY_RAICHU, \ + .natDexNum = NATIONAL_DEX_RAICHU, \ + .categoryName = _("Mouse"), \ + .footprint = gMonFootprint_Raichu, \ + .formSpeciesIdTable = sRaichuFormSpeciesIdTable + + [SPECIES_RAICHU] = + { + RAICHU_MISC_INFO, + .baseHP = 60, + .baseAttack = 90, + .baseDefense = 55, + .baseSpeed = RAICHU_SPEED, + .baseSpAttack = 90, + .baseSpDefense = 80, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, + .height = 8, + .weight = 300, + .description = COMPOUND_STRING( + "If it stores too much electricity, its\n" + "behavior turns aggressive. To avoid this,\n" + "it occasionally discharges excess energy\n" + "and calms itself down."), + .pokemonScale = 426, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Raichu, 64, 64), + FRONT_PIC_FEMALE(Raichu, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Raichu, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Raichu, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(Raichu), + ICON(Raichu, 0), + LEARNSETS(Raichu), + }, + +#if P_ALOLAN_FORMS + [SPECIES_RAICHU_ALOLAN] = + { + RAICHU_MISC_INFO, + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 50, + .baseSpeed = RAICHU_SPEED, + .baseSpAttack = 95, + .baseSpDefense = 85, + .types = { TYPE_ELECTRIC, TYPE_PSYCHIC }, + .abilities = { ABILITY_SURGE_SURFER, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .isAlolanForm = TRUE, + .height = 7, + .weight = 210, + .description = COMPOUND_STRING( + "It uses psychokinesis to control\n" + "electricity. It focuses psychic energy\n" + "into its tail and rides it like it's surfing.\n" + "Another name for this Pokémon is 'hodad'."), + .pokemonScale = 426, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(RaichuAlolan, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_RaichuAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 4, + BACK_PIC(RaichuAlolan, 56, 56), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(RaichuAlolan), + ICON(RaichuAlolan, 2), + LEARNSETS(RaichuAlolan), + }, +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_PIKACHU + +#if P_FAMILY_SANDSHREW +#define SANDSHREW_FAMILY_MISC_INFO \ + .itemRare = ITEM_GRIP_CLAW, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD } + +#define SANDSHREW_MISC_INFO \ + .catchRate = 255, \ + .expYield = 60, \ + .evYield_Defense = 1, \ + .speciesName = _("Sandshrew"), \ + .cryId = CRY_SANDSHREW, \ + .natDexNum = NATIONAL_DEX_SANDSHREW, \ + .categoryName = _("Mouse"), \ + .footprint = gMonFootprint_Sandshrew, \ + .formSpeciesIdTable = sSandshrewFormSpeciesIdTable, \ + SANDSHREW_FAMILY_MISC_INFO + +#define SANDSLASH_MISC_INFO \ + .catchRate = 90, \ + .expYield = 158, \ + .evYield_Defense = 2, \ + .speciesName = _("Sandslash"), \ + .cryId = CRY_SANDSLASH, \ + .natDexNum = NATIONAL_DEX_SANDSLASH, \ + .categoryName = _("Mouse"), \ + .footprint = gMonFootprint_Sandslash, \ + .formSpeciesIdTable = sSandslashFormSpeciesIdTable, \ + SANDSHREW_FAMILY_MISC_INFO + + [SPECIES_SANDSHREW] = + { + SANDSHREW_MISC_INFO, + .baseHP = 50, + .baseAttack = 75, + .baseDefense = 85, + .baseSpeed = 40, + .baseSpAttack = 20, + .baseSpDefense = 30, + .types = { TYPE_GROUND, TYPE_GROUND }, + .abilities = { ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_SAND_RUSH }, + .bodyColor = BODY_COLOR_YELLOW, + .height = 6, + .weight = 120, + .description = COMPOUND_STRING( + "When it curls up in a ball, it can make any\n" + "attack bounce off harmlessly. Its hide has\n" + "turned tough and solid as a result of\n" + "living in the desert."), + .pokemonScale = 365, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Sandshrew, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Sandshrew, + .frontAnimId = ANIM_SWING_CONCAVE_FAST_SHORT, + BACK_PIC(Sandshrew, 48, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Sandshrew), + ICON(Sandshrew, 2), + LEARNSETS(Sandshrew), + .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_SANDSLASH}), + }, + + [SPECIES_SANDSLASH] = + { + SANDSLASH_MISC_INFO, + .baseHP = 75, + .baseAttack = 100, + .baseDefense = 110, + .baseSpeed = 65, + .baseSpAttack = 45, + .baseSpDefense = 55, + .types = { TYPE_GROUND, TYPE_GROUND }, + .abilities = { ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_SAND_RUSH }, + .bodyColor = BODY_COLOR_YELLOW, + .height = 10, + .weight = 295, + .description = COMPOUND_STRING( + "It curls up in a ball to protect itself from\n" + "enemy attacks. It also curls up to prevent\n" + "heatstroke during the daytime when\n" + "temperatures rise sharply."), + .pokemonScale = 341, + .pokemonOffset = 11, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Sandslash, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Sandslash, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Sandslash, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Sandslash), + ICON(Sandslash, 2), + LEARNSETS(Sandslash), + }, + +#if P_ALOLAN_FORMS + [SPECIES_SANDSHREW_ALOLAN] = + { + SANDSHREW_MISC_INFO, + .baseHP = 50, + .baseAttack = 75, + .baseDefense = 90, + .baseSpeed = 40, + .baseSpAttack = 10, + .baseSpDefense = 35, + .types = { TYPE_ICE, TYPE_STEEL }, + .abilities = { ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SLUSH_RUSH }, + .bodyColor = BODY_COLOR_BLUE, + .height = 7, + .weight = 400, + .description = COMPOUND_STRING( + "Life on mountains covered with deep snow\n" + "has granted this Pokémon a body of ice\n" + "that's as hard as steel.\n" + "Predators go after its soft belly."), + .pokemonScale = 365, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(SandshrewAlolan, 40, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_SandshrewAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SandshrewAlolan, 56, 40), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(SandshrewAlolan), + ICON(SandshrewAlolan, 0), + LEARNSETS(SandshrewAlolan), + .isAlolanForm = TRUE, + .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_SANDSLASH_ALOLAN}), + }, + + [SPECIES_SANDSLASH_ALOLAN] = + { + SANDSLASH_MISC_INFO, + .baseHP = 75, + .baseAttack = 100, + .baseDefense = 120, + .baseSpeed = 65, + .baseSpAttack = 25, + .baseSpDefense = 65, + .types = { TYPE_ICE, TYPE_STEEL }, + .abilities = { ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SLUSH_RUSH }, + .bodyColor = BODY_COLOR_BLUE, + .height = 12, + .weight = 550, + .description = COMPOUND_STRING( + "It uses large, hooked claws to cut a path\n" + "through deep snow as it runs.\n" + "On snowy mountains, this Sandslash\n" + "is faster than any other Pokémon."), + .pokemonScale = 341, + .pokemonOffset = 11, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(SandslashAlolan, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_SandslashAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SandslashAlolan, 64, 56), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(SandslashAlolan), + ICON(SandslashAlolan, 0), + LEARNSETS(SandslashAlolan), + .isAlolanForm = TRUE, + }, +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_SANDSHREW + +#if P_FAMILY_NIDORAN + [SPECIES_NIDORAN_F] = + { + .baseHP = 55, + .baseAttack = 47, + .baseDefense = 52, + .baseSpeed = 41, + .baseSpAttack = 40, + .baseSpDefense = 40, + .types = { TYPE_POISON, TYPE_POISON }, + .catchRate = 235, + .expYield = 55, + .evYield_HP = 1, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD }, + .abilities = { ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Nidoran♀"), + .cryId = CRY_NIDORAN_F, + .natDexNum = NATIONAL_DEX_NIDORAN_F, + .categoryName = _("Poison Pin"), + .height = 4, + .weight = 70, + .description = COMPOUND_STRING( + "Its highly toxic barbs are thought to have\n" + "developed as protection for this small-\n" + "bodied Pokémon. When enraged, it releases\n" + "a horrible toxin from its horn."), + .pokemonScale = 488, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(NidoranF, 40, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_NidoranF, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .frontAnimDelay = 28, + BACK_PIC(NidoranF, 48, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(NidoranF), + ICON(NidoranF, 0), + .footprint = gMonFootprint_NidoranF, + LEARNSETS(NidoranF), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_NIDORINA}), + }, + + [SPECIES_NIDORINA] = + { + .baseHP = 70, + .baseAttack = 62, + .baseDefense = 67, + .baseSpeed = 56, + .baseSpAttack = 55, + .baseSpDefense = 55, + .types = { TYPE_POISON, TYPE_POISON }, + .catchRate = 120, + .expYield = 128, + .evYield_HP = 2, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Nidorina"), + .cryId = CRY_NIDORINA, + .natDexNum = NATIONAL_DEX_NIDORINA, + .categoryName = _("Poison Pin"), + .height = 8, + .weight = 200, + .description = COMPOUND_STRING( + "When it is with its friends or\n" + "family, its barbs are tucked away to\n" + "prevent injury. It appears to become\n" + "nervous if separated from the others."), + .pokemonScale = 381, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Nidorina, 48, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Nidorina, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Nidorina, 56, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Nidorina), + ICON(Nidorina, 0), + .footprint = gMonFootprint_Nidorina, + LEARNSETS(Nidorina), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}), + }, + + [SPECIES_NIDOQUEEN] = + { + .baseHP = 90, + .baseAttack = P_UPDATED_STATS >= GEN_6 ? 92 : 82, + .baseDefense = 87, + .baseSpeed = 76, + .baseSpAttack = 75, + .baseSpDefense = 85, + .types = { TYPE_POISON, TYPE_GROUND }, + .catchRate = 45, + .expYield = 227, + .evYield_HP = 3, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Nidoqueen"), + .cryId = CRY_NIDOQUEEN, + .natDexNum = NATIONAL_DEX_NIDOQUEEN, + .categoryName = _("Drill"), + .height = 13, + .weight = 600, + .description = COMPOUND_STRING( + "It is adept at sending foes flying with\n" + "harsh tackles using its tough, scaly body.\n" + "This Pokémon is at its strongest when\n" + "it is defending its young."), + .pokemonScale = 293, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Nidoqueen, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Nidoqueen, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Nidoqueen, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Nidoqueen), + ICON(Nidoqueen, 2), + .footprint = gMonFootprint_Nidoqueen, + LEARNSETS(Nidoqueen), + }, + + [SPECIES_NIDORAN_M] = + { + .baseHP = 46, + .baseAttack = 57, + .baseDefense = 40, + .baseSpeed = 50, + .baseSpAttack = 40, + .baseSpDefense = 40, + .types = { TYPE_POISON, TYPE_POISON }, + .catchRate = 235, + .expYield = 55, + .evYield_Attack = 1, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD }, + .abilities = { ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Nidoran♂"), + .cryId = CRY_NIDORAN_M, + .natDexNum = NATIONAL_DEX_NIDORAN_M, + .categoryName = _("Poison Pin"), + .height = 5, + .weight = 90, + .description = COMPOUND_STRING( + "The male Nidoran has developed muscles\n" + "that freely move its ears in any direction.\n" + "Even the slightest sound does not escape\n" + "this Pokémon's notice."), + .pokemonScale = 511, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(NidoranM, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_NidoranM, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(NidoranM, 48, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(NidoranM), + ICON(NidoranM, 2), + .footprint = gMonFootprint_NidoranM, + LEARNSETS(NidoranM), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_NIDORINO}), + }, + + [SPECIES_NIDORINO] = + { + .baseHP = 61, + .baseAttack = 72, + .baseDefense = 57, + .baseSpeed = 65, + .baseSpAttack = 55, + .baseSpDefense = 55, + .types = { TYPE_POISON, TYPE_POISON }, + .catchRate = 120, + .expYield = 128, + .evYield_Attack = 2, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD }, + .abilities = { ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_HUSTLE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Nidorino"), + .cryId = CRY_NIDORINO, + .natDexNum = NATIONAL_DEX_NIDORINO, + .categoryName = _("Poison Pin"), + .height = 9, + .weight = 195, + .description = COMPOUND_STRING( + "Its horn is harder than a diamond.\n" + "If it senses a hostile presence, all the\n" + "barbs on its back bristle up at once, and it\n" + "challenges the foe with all its might."), + .pokemonScale = 408, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Nidorino, 56, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Nidorino, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Nidorino, 64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Nidorino), + ICON(Nidorino, 2), + .footprint = gMonFootprint_Nidorino, + LEARNSETS(Nidorino), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}), + }, + + [SPECIES_NIDOKING] = + { + .baseHP = 81, + .baseAttack = P_UPDATED_STATS >= GEN_6 ? 102 : 92, + .baseDefense = 77, + .baseSpeed = 85, + .baseSpAttack = 85, + .baseSpDefense = 75, + .types = { TYPE_POISON, TYPE_GROUND }, + .catchRate = 45, + .expYield = 227, + .evYield_Attack = 3, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD }, + .abilities = { ABILITY_POISON_POINT, ABILITY_RIVALRY, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Nidoking"), + .cryId = CRY_NIDOKING, + .natDexNum = NATIONAL_DEX_NIDOKING, + .categoryName = _("Drill"), + .height = 14, + .weight = 620, + .description = COMPOUND_STRING( + "A Nidoking's thick tail packs enormously\n" + "destructive power capable of toppling\n" + "a metal transmission tower. Once it goes\n" + "on a rampage, there is no stopping it."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Nidoking, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Nidoking, + .frontAnimId = ANIM_H_SHAKE, + .frontAnimDelay = 25, + BACK_PIC(Nidoking, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Nidoking), + ICON(Nidoking, 2), + .footprint = gMonFootprint_Nidoking, + LEARNSETS(Nidoking), + }, +#endif //P_FAMILY_NIDORAN + +#if P_FAMILY_CLEFAIRY +#if P_UPDATED_TYPES >= GEN_6 + #define CLEFAIRY_FAMILY_TYPES { TYPE_FAIRY, TYPE_FAIRY } +#else + #define CLEFAIRY_FAMILY_TYPES { TYPE_NORMAL, TYPE_NORMAL } +#endif + +#if P_GEN_2_CROSS_EVOS + [SPECIES_CLEFFA] = + { + .baseHP = 50, + .baseAttack = 25, + .baseDefense = 28, + .baseSpeed = 15, + .baseSpAttack = 45, + .baseSpDefense = 55, + .types = CLEFAIRY_FAMILY_TYPES, + .catchRate = 150, + .expYield = 44, + .evYield_SpDefense = 1, + .itemRare = ITEM_MOON_STONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_CUTE_CHARM, ABILITY_MAGIC_GUARD, ABILITY_FRIEND_GUARD }, + .bodyColor = BODY_COLOR_PINK, + .noFlip = TRUE, + .speciesName = _("Cleffa"), + .cryId = CRY_CLEFFA, + .natDexNum = NATIONAL_DEX_CLEFFA, + .categoryName = _("Star Shape"), + .height = 3, + .weight = 30, + .description = COMPOUND_STRING( + "On nights with many shooting stars,\n" + "Cleffa can be seen dancing in a ring.\n" + "They dance until daybreak, when they\n" + "quench their thirst with the morning dew."), + .pokemonScale = 462, + .pokemonOffset = 23, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cleffa, 32, 32), + .frontPicYOffset = 18, + .frontAnimFrames = sAnims_Cleffa, + .frontAnimId = ANIM_V_JUMPS_SMALL, + BACK_PIC(Cleffa, 48, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Cleffa), + ICON(Cleffa, 0), + .footprint = gMonFootprint_Cleffa, + LEARNSETS(Cleffa), + .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}), + }, +#endif //P_GEN_2_CROSS_EVOS + + [SPECIES_CLEFAIRY] = + { + .baseHP = 70, + .baseAttack = 45, + .baseDefense = 48, + .baseSpeed = 35, + .baseSpAttack = 60, + .baseSpDefense = 65, + .types = CLEFAIRY_FAMILY_TYPES, + .catchRate = 150, + .expYield = 113, + .evYield_HP = 2, + .itemRare = ITEM_MOON_STONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_CUTE_CHARM, ABILITY_MAGIC_GUARD, ABILITY_FRIEND_GUARD }, + .bodyColor = BODY_COLOR_PINK, + .noFlip = TRUE, + .speciesName = _("Clefairy"), + .cryId = CRY_CLEFAIRY, + .natDexNum = NATIONAL_DEX_CLEFAIRY, + .categoryName = _("Fairy"), + .height = 6, + .weight = 75, + .description = COMPOUND_STRING( + "On every night of a full moon, they come\n" + "out to play. When dawn arrives, the tired\n" + "Clefairy go to sleep nestled up against\n" + "each other in deep and quiet mountains."), + .pokemonScale = 441, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Clefairy, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Clefairy, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Clefairy, 56, 40), + .backPicYOffset = 14, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Clefairy), + ICON(Clefairy, 0), + .footprint = gMonFootprint_Clefairy, + LEARNSETS(Clefairy), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}), + }, + + [SPECIES_CLEFABLE] = + { + .baseHP = 95, + .baseAttack = 70, + .baseDefense = 73, + .baseSpeed = 60, + .baseSpAttack = P_UPDATED_STATS >= GEN_6 ? 95 : 85, + .baseSpDefense = 90, + .types = CLEFAIRY_FAMILY_TYPES, + .catchRate = 25, + .expYield = 217, + .evYield_HP = 3, + .itemRare = ITEM_MOON_STONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_CUTE_CHARM, ABILITY_MAGIC_GUARD, ABILITY_UNAWARE }, + .bodyColor = BODY_COLOR_PINK, + .noFlip = TRUE, + .speciesName = _("Clefable"), + .cryId = CRY_CLEFABLE, + .natDexNum = NATIONAL_DEX_CLEFABLE, + .categoryName = _("Fairy"), + .height = 13, + .weight = 400, + .description = COMPOUND_STRING( + "A Clefable uses its wings to skip lightly \n" + "as if it were flying. Its bouncy step\n" + "lets it even walk on water. On quiet,\n" + "moonlit nights, it strolls on lakes."), + .pokemonScale = 256, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Clefable, 56, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Clefable, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Clefable, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Clefable), + ICON(Clefable, 0), + .footprint = gMonFootprint_Clefable, + LEARNSETS(Clefable), + }, +#endif //P_FAMILY_CLEFAIRY + +#if P_FAMILY_VULPIX +#define VULPIX_FAMILY_MISC_INFO \ + .genderRatio = PERCENT_FEMALE(75), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD } + +#define VULPIX_MISC_INFO \ + .baseHP = 38, \ + .baseAttack = 41, \ + .baseDefense = 40, \ + .baseSpeed = 65, \ + .baseSpAttack = 50, \ + .baseSpDefense = 65, \ + .catchRate = 190, \ + .expYield = 60, \ + .evYield_Speed = 1, \ + .speciesName = _("Vulpix"), \ + .cryId = CRY_VULPIX, \ + .natDexNum = NATIONAL_DEX_VULPIX, \ + .categoryName = _("Fox"), \ + .height = 6, \ + .weight = 99, \ + .pokemonScale = 542, \ + .pokemonOffset = 19, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Vulpix, \ + .formSpeciesIdTable = sVulpixFormSpeciesIdTable,\ + VULPIX_FAMILY_MISC_INFO + +#define NINETALES_MISC_INFO \ + .catchRate = 75, \ + .expYield = 177, \ + .evYield_Speed = 1, \ + .evYield_SpDefense = 1, \ + .speciesName = _("Ninetales"), \ + .cryId = CRY_NINETALES, \ + .natDexNum = NATIONAL_DEX_NINETALES, \ + .categoryName = _("Fox"), \ + .height = 11, \ + .weight = 199, \ + .pokemonScale = 339, \ + .pokemonOffset = 10, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Ninetales, \ + .formSpeciesIdTable = sNinetalesFormSpeciesIdTable, \ + VULPIX_FAMILY_MISC_INFO + + [SPECIES_VULPIX] = + { + VULPIX_MISC_INFO, + .types = { TYPE_FIRE, TYPE_FIRE }, + .itemRare = ITEM_CHARCOAL, + .abilities = { ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_DROUGHT }, + .bodyColor = BODY_COLOR_BROWN, + .description = COMPOUND_STRING( + "It can freely control fire, making fiery\n" + "orbs fly like will-o'-the-wisps. Just\n" + "before evolution, its six tails grow hot \n" + "as if on fire."), + FRONT_PIC(Vulpix, 56, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Vulpix, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Vulpix, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Vulpix), + ICON(Vulpix, 5), + LEARNSETS(Vulpix), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}), + }, + + [SPECIES_NINETALES] = + { + NINETALES_MISC_INFO, + .baseHP = 73, + .baseAttack = 76, + .baseDefense = 75, + .baseSpeed = 100, + .baseSpAttack = 81, + .baseSpDefense = 100, + .types = { TYPE_FIRE, TYPE_FIRE }, + .itemRare = ITEM_CHARCOAL, + .abilities = { ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_DROUGHT }, + .bodyColor = BODY_COLOR_YELLOW, + .description = COMPOUND_STRING( + "It has long been said that each of the\n" + "nine tails embody an enchanted power.\n" + "A long-lived Ninetales will have fur that\n" + "shines like gold."), + FRONT_PIC(Ninetales, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Ninetales, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Ninetales, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Ninetales), + ICON(Ninetales, 3), + LEARNSETS(Ninetales), + }, + +#if P_ALOLAN_FORMS + [SPECIES_VULPIX_ALOLAN] = + { + VULPIX_MISC_INFO, + .types = { TYPE_ICE, TYPE_ICE }, + .itemRare = ITEM_SNOWBALL, + .abilities = { ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SNOW_WARNING }, + .bodyColor = BODY_COLOR_BLUE, + .description = COMPOUND_STRING( + "They live together in a skulk, helping\n" + "one another. In hot weather, this Pokémon\n" + "makes ice shards with its six tails and\n" + "sprays them around to cool itself off."), + FRONT_PIC(VulpixAlolan, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_VulpixAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(VulpixAlolan, 64, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(VulpixAlolan), + ICON(VulpixAlolan, 2), + LEARNSETS(VulpixAlolan), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_NINETALES_ALOLAN}), + .isAlolanForm = TRUE, + }, + + [SPECIES_NINETALES_ALOLAN] = + { + NINETALES_MISC_INFO, + .baseHP = 73, + .baseAttack = 67, + .baseDefense = 75, + .baseSpeed = 109, + .baseSpAttack = 81, + .baseSpDefense = 100, + .types = { TYPE_ICE, TYPE_FAIRY }, + .itemRare = ITEM_SNOWBALL, + .abilities = { ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SNOW_WARNING }, + .bodyColor = BODY_COLOR_BLUE, + .description = COMPOUND_STRING( + "While it will guide travelers who get lost\n" + "on a snowy mountain down to the\n" + "mountain's base, it won't forgive anyone\n" + "who harms nature."), + FRONT_PIC(NinetalesAlolan, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_NinetalesAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(NinetalesAlolan, 64, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(NinetalesAlolan), + ICON(NinetalesAlolan, 2), + LEARNSETS(NinetalesAlolan), + .isAlolanForm = TRUE, + }, +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_VULPIX + +#if P_FAMILY_JIGGLYPUFF +#if P_UPDATED_TYPES >= GEN_6 + #define JIGGLYPUFF_FAMILY_TYPES { TYPE_NORMAL, TYPE_FAIRY} +#else + #define JIGGLYPUFF_FAMILY_TYPES { TYPE_NORMAL, TYPE_NORMAL} +#endif + +#if P_GEN_2_CROSS_EVOS + [SPECIES_IGGLYBUFF] = + { + .baseHP = 90, + .baseAttack = 30, + .baseDefense = 15, + .baseSpeed = 15, + .baseSpAttack = 40, + .baseSpDefense = 20, + .types = JIGGLYPUFF_FAMILY_TYPES, + .catchRate = 170, + .expYield = 42, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_CUTE_CHARM, ABILITY_COMPETITIVE, ABILITY_FRIEND_GUARD }, + .bodyColor = BODY_COLOR_PINK, + .noFlip = TRUE, + .speciesName = _("Igglybuff"), + .cryId = CRY_IGGLYBUFF, + .natDexNum = NATIONAL_DEX_IGGLYBUFF, + .categoryName = _("Balloon"), + .height = 3, + .weight = 10, + .description = COMPOUND_STRING( + "Its soft and pliable body is very bouncy.\n" + "When it sings continuously with all its\n" + "might, its body steadily turns a deepening\n" + "pink color."), + .pokemonScale = 457, + .pokemonOffset = -1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Igglybuff, 32, 32), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_Igglybuff, + .frontAnimId = ANIM_SWING_CONCAVE_FAST, + BACK_PIC(Igglybuff, 40, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Igglybuff), + ICON(Igglybuff, 1), + .footprint = gMonFootprint_Igglybuff, + LEARNSETS(Igglybuff), + .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}), + }, +#endif //P_GEN_2_CROSS_EVOS + + [SPECIES_JIGGLYPUFF] = + { + .baseHP = 115, + .baseAttack = 45, + .baseDefense = 20, + .baseSpeed = 20, + .baseSpAttack = 45, + .baseSpDefense = 25, + .types = JIGGLYPUFF_FAMILY_TYPES, + .catchRate = 170, + .expYield = 95, + .evYield_HP = 2, + .itemRare = ITEM_MOON_STONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_CUTE_CHARM, ABILITY_COMPETITIVE, ABILITY_FRIEND_GUARD }, + .bodyColor = BODY_COLOR_PINK, + .noFlip = TRUE, + .speciesName = _("Jigglypuff"), + .cryId = CRY_JIGGLYPUFF, + .natDexNum = NATIONAL_DEX_JIGGLYPUFF, + .categoryName = _("Balloon"), + .height = 5, + .weight = 55, + .description = COMPOUND_STRING( + "Nothing can avoid falling asleep hearing a\n" + "Jigglypuff's song. The sound waves of its\n" + "singing voice match the brain waves of\n" + "someone in a deep sleep."), + .pokemonScale = 433, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Jigglypuff, 40, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Jigglypuff, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, + BACK_PIC(Jigglypuff, 56, 48), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Jigglypuff), + ICON(Jigglypuff, 0), + .footprint = gMonFootprint_Jigglypuff, + LEARNSETS(Jigglypuff), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}), + }, + + [SPECIES_WIGGLYTUFF] = + { + .baseHP = 140, + .baseAttack = 70, + .baseDefense = 45, + .baseSpeed = 45, + .baseSpAttack = P_UPDATED_STATS >= GEN_6 ? 85 : 75, + .baseSpDefense = 50, + .types = JIGGLYPUFF_FAMILY_TYPES, + .catchRate = 50, + .expYield = 196, + .evYield_HP = 3, + .itemRare = ITEM_MOON_STONE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_CUTE_CHARM, ABILITY_COMPETITIVE, ABILITY_FRISK }, + .bodyColor = BODY_COLOR_PINK, + .noFlip = TRUE, + .speciesName = _("Wigglytuff"), + .cryId = CRY_WIGGLYTUFF, + .natDexNum = NATIONAL_DEX_WIGGLYTUFF, + .categoryName = _("Balloon"), + .height = 10, + .weight = 120, + .description = COMPOUND_STRING( + "Its fur is the ultimate in luxuriousness.\n" + "Sleeping alongside a Wigglytuff is simply\n" + "divine. Its body expands seemingly without\n" + "end when it inhales."), + .pokemonScale = 328, + .pokemonOffset = 11, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Wigglytuff, 48, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Wigglytuff, + .frontAnimId = ANIM_H_JUMPS, + BACK_PIC(Wigglytuff, 56, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_GROW, + PALETTES(Wigglytuff), + ICON(Wigglytuff, 0), + .footprint = gMonFootprint_Wigglytuff, + LEARNSETS(Wigglytuff), + }, +#endif //P_FAMILY_JIGGLYPUFF + +#if P_FAMILY_ZUBAT + [SPECIES_ZUBAT] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 35, + .baseSpeed = 55, + .baseSpAttack = 30, + .baseSpDefense = 40, + .types = { TYPE_POISON, TYPE_FLYING }, + .catchRate = 255, + .expYield = 49, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_INFILTRATOR }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Zubat"), + .cryId = CRY_ZUBAT, + .natDexNum = NATIONAL_DEX_ZUBAT, + .categoryName = _("Bat"), + .height = 8, + .weight = 75, + .description = COMPOUND_STRING( + "While living in pitch-black caverns, their\n" + "eyes gradually grew shut and deprived\n" + "them of vision. They use ultrasonic waves\n" + "to detect obstacles."), + .pokemonScale = 362, + .pokemonOffset = -5, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Zubat, 56, 48), + FRONT_PIC_FEMALE(Zubat, 56, 48), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Zubat, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 16, + BACK_PIC(Zubat, 56, 56), + BACK_PIC_FEMALE(Zubat, 56, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Zubat), + ICON(Zubat, 2), + .footprint = gMonFootprint_Zubat, + LEARNSETS(Zubat), + .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_GOLBAT}), + }, + + [SPECIES_GOLBAT] = + { + .baseHP = 75, + .baseAttack = 80, + .baseDefense = 70, + .baseSpeed = 90, + .baseSpAttack = 65, + .baseSpDefense = 75, + .types = { TYPE_POISON, TYPE_FLYING }, + .catchRate = 90, + .expYield = 159, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_INFILTRATOR }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Golbat"), + .cryId = CRY_GOLBAT, + .natDexNum = NATIONAL_DEX_GOLBAT, + .categoryName = _("Bat"), + .height = 16, + .weight = 550, + .description = COMPOUND_STRING( + "Its fangs easily puncture even thick\n" + "animal hide. It loves to feast on the blood\n" + "of people and Pokémon. It flits about in\n" + "darkness and strikes from behind."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Golbat, 64, 56), + FRONT_PIC_FEMALE(Golbat, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Golbat, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + .enemyMonElevation = 10, + BACK_PIC(Golbat, 56, 40), + BACK_PIC_FEMALE(Golbat, 56, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Golbat), + ICON(Golbat, 2), + .footprint = gMonFootprint_Golbat, + LEARNSETS(Golbat), + .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_CROBAT}), + }, + +#if P_GEN_2_CROSS_EVOS + [SPECIES_CROBAT] = + { + .baseHP = 85, + .baseAttack = 90, + .baseDefense = 80, + .baseSpeed = 130, + .baseSpAttack = 70, + .baseSpDefense = 80, + .types = { TYPE_POISON, TYPE_FLYING }, + .catchRate = 90, + .expYield = 241, + .evYield_Speed = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_INFILTRATOR }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Crobat"), + .cryId = CRY_CROBAT, + .natDexNum = NATIONAL_DEX_CROBAT, + .categoryName = _("Bat"), + .height = 18, + .weight = 750, + .description = COMPOUND_STRING( + "Over the course of evolution, its hind legs\n" + "turned into wings. By alternately resting\n" + "its front and rear wings, it can fly all day\n" + "without having to stop."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 281, + .trainerOffset = 1, + FRONT_PIC(Crobat, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Crobat, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 9, + BACK_PIC(Crobat, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Crobat), + ICON(Crobat, 2), + .footprint = gMonFootprint_Crobat, + LEARNSETS(Crobat), + }, +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ZUBAT + +#if P_FAMILY_ODDISH + [SPECIES_ODDISH] = + { + .baseHP = 45, + .baseAttack = 50, + .baseDefense = 55, + .baseSpeed = 30, + .baseSpAttack = 75, + .baseSpDefense = 65, + .types = { TYPE_GRASS, TYPE_POISON }, + .catchRate = 255, + .expYield = 64, + .evYield_SpAttack = 1, + .itemRare = ITEM_ABSORB_BULB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_RUN_AWAY }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Oddish"), + .cryId = CRY_ODDISH, + .natDexNum = NATIONAL_DEX_ODDISH, + .categoryName = _("Weed"), + .height = 5, + .weight = 54, + .description = COMPOUND_STRING( + "This Pokémon grows by absorbing moonlight.\n" + "During the daytime, it buries itself in the\n" + "ground, leaving only its leaves exposed to\n" + "avoid detection by its enemies."), + .pokemonScale = 423, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Oddish, 40, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Oddish, + .frontAnimId = ANIM_V_JUMPS_H_JUMPS, + BACK_PIC(Oddish, 48, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Oddish), + ICON(Oddish, 4), + .footprint = gMonFootprint_Oddish, + LEARNSETS(Oddish), + .evolutions = EVOLUTION({EVO_LEVEL, 21, SPECIES_GLOOM}), + }, + + [SPECIES_GLOOM] = + { + .baseHP = 60, + .baseAttack = 65, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 85, + .baseSpDefense = 75, + .types = { TYPE_GRASS, TYPE_POISON }, + .catchRate = 120, + .expYield = 138, + .evYield_SpAttack = 2, + .itemRare = ITEM_ABSORB_BULB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_STENCH }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Gloom"), + .cryId = CRY_GLOOM, + .natDexNum = NATIONAL_DEX_GLOOM, + .categoryName = _("Weed"), + .height = 8, + .weight = 86, + .description = COMPOUND_STRING( + "A horribly noxious honey drools from its\n" + "mouth. One whiff of the honey can result\n" + "in memory loss. Some fans are said to\n" + "enjoy this overwhelming stink, however."), + .pokemonScale = 329, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Gloom, 56, 48), + FRONT_PIC_FEMALE(Gloom, 56, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Gloom, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Gloom, 64, 48), + BACK_PIC_FEMALE(Gloom, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Gloom), + ICON(Gloom, 0), + .footprint = gMonFootprint_Gloom, + LEARNSETS(Gloom), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME}, + {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}), + }, + + [SPECIES_VILEPLUME] = + { + .baseHP = 75, + .baseAttack = 80, + .baseDefense = 85, + .baseSpeed = 50, + .baseSpAttack = P_UPDATED_STATS >= GEN_6 ? 110 : 100, + .baseSpDefense = 90, + .types = { TYPE_GRASS, TYPE_POISON }, + .catchRate = 45, + .expYield = 221, + .evYield_SpAttack = 3, + .itemRare = ITEM_ABSORB_BULB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_EFFECT_SPORE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Vileplume"), + .cryId = CRY_VILEPLUME, + .natDexNum = NATIONAL_DEX_VILEPLUME, + .categoryName = _("Flower"), + .height = 12, + .weight = 186, + .description = COMPOUND_STRING( + "In seasons when it produces more pollen,\n" + "the air around a Vileplume turns yellow\n" + "with the powder as it walks. The pollen is\n" + "highly toxic and causes paralysis."), + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Vileplume, 56, 56), + FRONT_PIC_FEMALE(Vileplume, 56, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Vileplume, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Vileplume, 64, 56), + BACK_PIC_FEMALE(Vileplume, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Vileplume), + ICON(Vileplume, 0), + .footprint = gMonFootprint_Vileplume, + LEARNSETS(Vileplume), + }, + +#if P_GEN_2_CROSS_EVOS + [SPECIES_BELLOSSOM] = + { + .baseHP = 75, + .baseAttack = 80, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 95 : 85, + .baseSpeed = 50, + .baseSpAttack = 90, + .baseSpDefense = 100, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 221, + .evYield_SpDefense = 3, + .itemRare = ITEM_ABSORB_BULB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_HEALER }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Bellossom"), + .cryId = CRY_BELLOSSOM, + .natDexNum = NATIONAL_DEX_BELLOSSOM, + .categoryName = _("Flower"), + .height = 4, + .weight = 58, + .description = COMPOUND_STRING( + "Its flower petals deepen in color through\n" + "exposure to sunlight. When cloudy weather\n" + "persists, it does a dance that is thought\n" + "to be a ritual for summoning the sun."), + .pokemonScale = 472, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Bellossom, 32, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Bellossom, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(Bellossom, 48, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Bellossom), + ICON(Bellossom, 1), + .footprint = gMonFootprint_Bellossom, + LEARNSETS(Bellossom), + }, +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ODDISH + +#if P_FAMILY_PARAS + [SPECIES_PARAS] = + { + .baseHP = 35, + .baseAttack = 70, + .baseDefense = 55, + .baseSpeed = 25, + .baseSpAttack = 45, + .baseSpDefense = 55, + .types = { TYPE_BUG, TYPE_GRASS }, + .catchRate = 190, + .expYield = 57, + .evYield_Attack = 1, + .itemCommon = ITEM_TINY_MUSHROOM, + .itemRare = ITEM_BIG_MUSHROOM, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_GRASS }, + .abilities = { ABILITY_EFFECT_SPORE, ABILITY_DRY_SKIN, ABILITY_DAMP }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Paras"), + .cryId = CRY_PARAS, + .natDexNum = NATIONAL_DEX_PARAS, + .categoryName = _("Mushroom"), + .height = 3, + .weight = 54, + .description = COMPOUND_STRING( + "A Paras has parasitic tochukaso\n" + "mushrooms growing on its back. They grow\n" + "by drawing nutrients from the host. They\n" + "are valued as a medicine for long life."), + .pokemonScale = 593, + .pokemonOffset = 22, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Paras, 48, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Paras, + .frontAnimId = ANIM_H_SLIDE_SLOW, + .frontAnimDelay = 10, + BACK_PIC(Paras, 64, 32), + .backPicYOffset = 18, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Paras), + ICON(Paras, 0), + .footprint = gMonFootprint_Paras, + LEARNSETS(Paras), + .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_PARASECT}), + }, + + [SPECIES_PARASECT] = + { + .baseHP = 60, + .baseAttack = 95, + .baseDefense = 80, + .baseSpeed = 30, + .baseSpAttack = 60, + .baseSpDefense = 80, + .types = { TYPE_BUG, TYPE_GRASS }, + .catchRate = 75, + .expYield = 142, + .evYield_Attack = 2, + .evYield_Defense = 1, + .itemCommon = ITEM_TINY_MUSHROOM, + .itemRare = ITEM_BIG_MUSHROOM, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_GRASS }, + .abilities = { ABILITY_EFFECT_SPORE, ABILITY_DRY_SKIN, ABILITY_DAMP }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Parasect"), + .cryId = CRY_PARASECT, + .natDexNum = NATIONAL_DEX_PARASECT, + .categoryName = _("Mushroom"), + .height = 10, + .weight = 295, + .description = COMPOUND_STRING( + "Parasect are known to infest the roots of\n" + "large trees en masse and drain nutrients.\n" + "When an infested tree dies, they move\n" + "onto another tree all at once."), + .pokemonScale = 307, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Parasect, 56, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Parasect, + .frontAnimId = ANIM_H_SHAKE, + .frontAnimDelay = 45, + BACK_PIC(Parasect, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Parasect), + ICON(Parasect, 0), + .footprint = gMonFootprint_Parasect, + LEARNSETS(Parasect), + }, +#endif //P_FAMILY_PARAS + +#if P_FAMILY_VENONAT + [SPECIES_VENONAT] = + { + .baseHP = 60, + .baseAttack = 55, + .baseDefense = 50, + .baseSpeed = 45, + .baseSpAttack = 40, + .baseSpDefense = 55, + .types = { TYPE_BUG, TYPE_POISON }, + .catchRate = 190, + .expYield = 61, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_COMPOUND_EYES, ABILITY_TINTED_LENS, ABILITY_RUN_AWAY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Venonat"), + .cryId = CRY_VENONAT, + .natDexNum = NATIONAL_DEX_VENONAT, + .categoryName = _("Insect"), + .height = 10, + .weight = 300, + .description = COMPOUND_STRING( + "Its coat of thin, stiff hair that covers\n" + "its entire body is said to have evolved\n" + "for protection. Its large eyes never fail\n" + "to spot even miniscule prey."), + .pokemonScale = 360, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = -1, + FRONT_PIC(Venonat, 40, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Venonat, + .frontAnimId = ANIM_V_JUMPS_H_JUMPS, + .frontAnimDelay = 20, + BACK_PIC(Venonat, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Venonat), + ICON(Venonat, 2), + .footprint = gMonFootprint_Venonat, + LEARNSETS(Venonat), + .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_VENOMOTH}), + }, + + [SPECIES_VENOMOTH] = + { + .baseHP = 70, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 90, + .baseSpAttack = 90, + .baseSpDefense = 75, + .types = { TYPE_BUG, TYPE_POISON }, + .catchRate = 75, + .expYield = 158, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .itemRare = ITEM_SHED_SHELL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SHIELD_DUST, ABILITY_TINTED_LENS, ABILITY_WONDER_SKIN }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Venomoth"), + .cryId = CRY_VENOMOTH, + .natDexNum = NATIONAL_DEX_VENOMOTH, + .categoryName = _("Poison Moth"), + .height = 15, + .weight = 125, + .description = COMPOUND_STRING( + "Venomoth are nocturnal--they are only\n" + "active at night. Their favorite prey are\n" + "insects that gather around streetlights,\n" + "attracted by the light in the darkness."), + .pokemonScale = 285, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 1, + FRONT_PIC(Venomoth, 64, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Venomoth, + .frontAnimId = ANIM_ZIGZAG_SLOW, + .enemyMonElevation = 16, + BACK_PIC(Venomoth, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Venomoth), + ICON(Venomoth, 2), + .footprint = gMonFootprint_Venomoth, + LEARNSETS(Venomoth), + }, +#endif //P_FAMILY_VENONAT + +#if P_FAMILY_DIGLETT +#define DIGLETT_FAMILY_MISC_INFO \ + .itemRare = ITEM_SOFT_SAND, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .bodyColor = BODY_COLOR_BROWN + +#define DIGLETT_MISC_INFO \ + .catchRate = 255, \ + .expYield = 53, \ + .evYield_Speed = 1, \ + .speciesName = _("Diglett"), \ + .cryId = CRY_DIGLETT, \ + .natDexNum = NATIONAL_DEX_DIGLETT, \ + .categoryName = _("Mole"), \ + .height = 2, \ + .pokemonScale = 833, \ + .pokemonOffset = 25, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Diglett, \ + .formSpeciesIdTable = sDiglettFormSpeciesIdTable, \ + DIGLETT_FAMILY_MISC_INFO + +#define DUGTRIO_MISC_INFO \ + .catchRate = 50, \ + .expYield = 149, \ + .evYield_Speed = 2, \ + .speciesName = _("Dugtrio"), \ + .cryId = CRY_DUGTRIO, \ + .natDexNum = NATIONAL_DEX_DUGTRIO, \ + .categoryName = _("Mole"), \ + .height = 7, \ + .pokemonScale = 406, \ + .pokemonOffset = 18, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + DIGLETT_FAMILY_MISC_INFO + +#define DUGTRIO_ATTACK (P_UPDATED_STATS >= GEN_7 ? 100 : 80) + + [SPECIES_DIGLETT] = + { + DIGLETT_MISC_INFO, + .baseHP = 10, + .baseAttack = 55, + .baseDefense = 25, + .baseSpeed = 95, + .baseSpAttack = 35, + .baseSpDefense = 45, + .types = { TYPE_GROUND, TYPE_GROUND }, + .abilities = { ABILITY_SAND_VEIL, ABILITY_ARENA_TRAP, ABILITY_SAND_FORCE }, + .weight = 8, + .description = COMPOUND_STRING( + "Diglett are raised in most farms.\n" + "The reason is simple--wherever they\n" + "burrow, the soil is left perfectly tilled\n" + "for growing delicious crops."), + FRONT_PIC(Diglett, 32, 32), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_Diglett, + .frontAnimId = ANIM_V_SHAKE, + .frontAnimDelay = 25, + BACK_PIC(Diglett, 40, 40), + .backPicYOffset = 14, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Diglett), + ICON(Diglett, 2), + LEARNSETS(Diglett), + .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_DUGTRIO}), + }, + + [SPECIES_DUGTRIO] = + { + DUGTRIO_MISC_INFO, + .baseHP = 35, + .baseAttack = DUGTRIO_ATTACK, + .baseDefense = 50, + .baseSpeed = 120, + .baseSpAttack = 50, + .baseSpDefense = 70, + .types = { TYPE_GROUND, TYPE_GROUND }, + .abilities = { ABILITY_SAND_VEIL, ABILITY_ARENA_TRAP, ABILITY_SAND_FORCE }, + .weight = 333, + .description = COMPOUND_STRING( + "Because the triplets originally split from\n" + "one body, they think exactly alike.\n" + "They work cooperatively to burrow\n" + "endlessly through the ground."), + FRONT_PIC(Dugtrio, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Dugtrio, + .frontAnimId = ANIM_H_SHAKE_SLOW, + .frontAnimDelay = 35, + BACK_PIC(Dugtrio, 48, 32), + .backPicYOffset = 17, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Dugtrio), + ICON(Dugtrio, 2), + LEARNSETS(Dugtrio), + }, + +#if P_ALOLAN_FORMS + [SPECIES_DIGLETT_ALOLAN] = + { + DIGLETT_MISC_INFO, + .baseHP = 10, + .baseAttack = 55, + .baseDefense = 30, + .baseSpeed = 90, + .baseSpAttack = 35, + .baseSpDefense = 45, + .types = { TYPE_GROUND, TYPE_STEEL }, + .abilities = { ABILITY_SAND_VEIL, ABILITY_TANGLING_HAIR, ABILITY_SAND_FORCE }, + .weight = 10, + .description = COMPOUND_STRING( + "The metal-rich geology of its habitat\n" + "caused it to develop steel whiskers on its\n" + "head that change shape depending on its\n" + "mood and when communicating with others."), + FRONT_PIC(DiglettAlolan, 32, 40), + .frontPicYOffset = 19, + .frontAnimFrames = sAnims_DiglettAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(DiglettAlolan, 40, 48), + .backPicYOffset = 14, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(DiglettAlolan), + ICON(DiglettAlolan, 2), + LEARNSETS(DiglettAlolan), + .isAlolanForm = TRUE, + .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_DUGTRIO_ALOLAN}), + }, + + [SPECIES_DUGTRIO_ALOLAN] = + { + DUGTRIO_MISC_INFO, + .baseHP = 35, + .baseAttack = DUGTRIO_ATTACK, + .baseDefense = 60, + .baseSpeed = 110, + .baseSpAttack = 50, + .baseSpDefense = 70, + .types = { TYPE_GROUND, TYPE_STEEL }, + .abilities = { ABILITY_SAND_VEIL, ABILITY_TANGLING_HAIR, ABILITY_SAND_FORCE }, + .noFlip = TRUE, + .weight = 666, + .description = COMPOUND_STRING( + "Their beautiful, metallic whiskers create\n" + "a sort of protective helmet on\n" + "heir heads, and they also function\n" + "as highly precise sensors."), + FRONT_PIC(DugtrioAlolan, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_DugtrioAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(DugtrioAlolan, 64, 32), + .backPicYOffset = 17, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(DugtrioAlolan), + ICON(DugtrioAlolan, 2), + LEARNSETS(DugtrioAlolan), + .isAlolanForm = TRUE, + }, +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_DIGLETT + +#if P_FAMILY_MEOWTH +#define MEOWTH_MISC_INFO \ + .catchRate = 255, \ + .expYield = 58, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .speciesName = _("Meowth"), \ + .cryId = CRY_MEOWTH, \ + .natDexNum = NATIONAL_DEX_MEOWTH, \ + .categoryName = _("Scratch Cat"), \ + .footprint = gMonFootprint_Meowth, \ + .formSpeciesIdTable = sMeowthFormSpeciesIdTable + +#define PERSIAN_MISC_INFO \ + .catchRate = 90, \ + .expYield = 154, \ + .evYield_Speed = 2, \ + .itemRare = ITEM_QUICK_CLAW, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .speciesName = _("Persian"), \ + .cryId = CRY_PERSIAN, \ + .natDexNum = NATIONAL_DEX_PERSIAN, \ + .categoryName = _("Classy Cat"), \ + .footprint = gMonFootprint_Persian, \ + .formSpeciesIdTable = sPersianFormSpeciesIdTable + + [SPECIES_MEOWTH] = + { + MEOWTH_MISC_INFO, + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 35, + .baseSpeed = 90, + .baseSpAttack = 40, + .baseSpDefense = 40, + .evYield_Speed = 1, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .itemRare = ITEM_QUICK_CLAW, + .abilities = { ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_YELLOW, + .height = 4, + .weight = 42, + .description = COMPOUND_STRING( + "Meowth withdraw their sharp claws into\n" + "their paws to silently sneak about.\n" + "For some reason, this Pokémon loves\n" + "shiny coins that glitter with light."), + .pokemonScale = 480, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Meowth, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Meowth, + .frontAnimId = ANIM_V_JUMPS_SMALL, + .frontAnimDelay = 40, + BACK_PIC(Meowth, 56, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Meowth), + ICON(Meowth, 1), + LEARNSETS(Meowth), + .formChangeTable = sMeowthFormChangeTable, + .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_PERSIAN}), + }, + + [SPECIES_PERSIAN] = + { + PERSIAN_MISC_INFO, + .baseHP = 65, + .baseAttack = 70, + .baseDefense = 60, + .baseSpeed = 115, + .baseSpAttack = 65, + .baseSpDefense = 65, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .abilities = { ABILITY_LIMBER, ABILITY_TECHNICIAN, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_YELLOW, + .height = 10, + .weight = 320, + .description = COMPOUND_STRING( + "A Persian's six bold whiskers sense air\n" + "movements to determine what is in its\n" + "vicinity. It becomes docile if grabbed\n" + "by the whiskers."), + .pokemonScale = 320, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Persian, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Persian, + .frontAnimId = ANIM_V_STRETCH, + .frontAnimDelay = 20, + BACK_PIC(Persian, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Persian), + ICON(Persian, 1), + LEARNSETS(Persian), + }, + +#if P_ALOLAN_FORMS + [SPECIES_MEOWTH_ALOLAN] = + { + MEOWTH_MISC_INFO, + .baseHP = 40, + .baseAttack = 35, + .baseDefense = 35, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = 40, + .evYield_Speed = 1, + .types = { TYPE_DARK, TYPE_DARK }, + .itemRare = ITEM_QUICK_CLAW, + .abilities = { ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_RATTLED }, + .bodyColor = BODY_COLOR_GRAY, + .height = 4, + .weight = 42, + .description = COMPOUND_STRING( + "It's accustomed to luxury because it used\n" + "to live with Alolan royalty. Highly smart\n" + "and proud, it's famously difficult to\n" + "handle, but that also makes it popular."), + .pokemonScale = 480, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(MeowthAlolan, 48, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_MeowthAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(MeowthAlolan, 64, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(MeowthAlolan), + ICON(MeowthAlolan, 2), + LEARNSETS(MeowthAlolan), + .isAlolanForm = TRUE, + .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_PERSIAN_ALOLAN}), + }, + + [SPECIES_PERSIAN_ALOLAN] = + { + PERSIAN_MISC_INFO, + .baseHP = 65, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 115, + .baseSpAttack = 75, + .baseSpDefense = 65, + .types = { TYPE_DARK, TYPE_DARK }, + .abilities = { ABILITY_FUR_COAT, ABILITY_TECHNICIAN, ABILITY_RATTLED }, + .bodyColor = BODY_COLOR_GRAY, + .height = 11, + .weight = 330, + .description = COMPOUND_STRING( + "It looks down on everyone other than\n" + "itself. In contrast to its lovely face, it\n" + "is so brutal that it tortures its weakened\n" + "prey rather than finishing them off."), + .pokemonScale = 320, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(PersianAlolan, 56, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_PersianAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PersianAlolan, 64, 56), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PersianAlolan), + ICON(PersianAlolan, 2), + LEARNSETS(PersianAlolan), + .isAlolanForm = TRUE, + }, +#endif //P_ALOLAN_FORMS + +#if P_GALARIAN_FORMS + [SPECIES_MEOWTH_GALARIAN] = + { + MEOWTH_MISC_INFO, + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 55, + .baseSpeed = 40, + .baseSpAttack = 40, + .baseSpDefense = 40, + .evYield_Attack = 1, + .types = { TYPE_STEEL, TYPE_STEEL }, + .abilities = { ABILITY_PICKUP, ABILITY_TOUGH_CLAWS, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_BROWN, + .height = 4, + .weight = 75, + .description = COMPOUND_STRING( + "Living with a savage, seafaring people has\n" + "hardened its body so much that parts of it\n" + "turned to iron. Darker coins are harder\n" + "and garner more respect among Meowth."), + .pokemonScale = 480, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(MeowthGalarian, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_MeowthGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(MeowthGalarian, 64, 56), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(MeowthGalarian), + ICON(MeowthGalarian, 0), + LEARNSETS(MeowthGalarian), + .isGalarianForm = TRUE, + .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_PERRSERKER}), + }, + + [SPECIES_PERRSERKER] = + { + .baseHP = 70, + .baseAttack = 110, + .baseDefense = 100, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 60, + .types = { TYPE_STEEL, TYPE_STEEL }, + .catchRate = 90, + .expYield = 154, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BATTLE_ARMOR, ABILITY_TOUGH_CLAWS, ABILITY_STEELY_SPIRIT }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Perrserker"), + .cryId = CRY_PERRSERKER, + .natDexNum = NATIONAL_DEX_PERRSERKER, + .categoryName = _("Viking"), + .height = 8, + .weight = 280, + .description = COMPOUND_STRING( + "What appears to be an iron helmet is\n" + "actually hardened hair. This Pokémon\n" + "lives for the thrill of battle."), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Perrserker, 48, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Perrserker, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Perrserker, 64, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Perrserker), + ICON(Perrserker, 2), + .footprint = gMonFootprint_Perrserker, + LEARNSETS(Perrserker), + }, +#endif //P_GALARIAN_FORMS + +#if P_GIGANTAMAX_FORMS + [SPECIES_MEOWTH_GIGANTAMAX] = + { + MEOWTH_MISC_INFO, + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 35, + .baseSpeed = 90, + .baseSpAttack = 40, + .baseSpDefense = 40, + .evYield_Speed = 1, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .itemRare = ITEM_QUICK_CLAW, + .abilities = { ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_YELLOW, + .height = 330, + .weight = 0, + .description = COMPOUND_STRING( + "The pattern that has appeared on\n" + "its giant coin is thought to be the\n" + "key to unlocking the secrets of the\n" + "Dynamax phenomenon."), + .pokemonScale = 480, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(MeowthGigantamax, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_MeowthGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(MeowthGigantamax, 64, 64), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(MeowthGigantamax), + ICON(MeowthGigantamax, 1), + LEARNSETS(Meowth), + .isGigantamax = TRUE, + .formChangeTable = sMeowthFormChangeTable, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MEOWTH + +#if P_FAMILY_PSYDUCK + [SPECIES_PSYDUCK] = + { + .baseHP = 50, + .baseAttack = 52, + .baseDefense = 48, + .baseSpeed = 55, + .baseSpAttack = 65, + .baseSpDefense = 50, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 190, + .expYield = 64, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_DAMP, ABILITY_CLOUD_NINE, ABILITY_SWIFT_SWIM }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Psyduck"), + .cryId = CRY_PSYDUCK, + .natDexNum = NATIONAL_DEX_PSYDUCK, + .categoryName = _("Duck"), + .height = 8, + .weight = 196, + .description = COMPOUND_STRING( + "When its headache intensifies, it starts\n" + "using strange powers. However, it has no\n" + "recollection of its powers, so it always\n" + "looks befuddled and bewildered."), + .pokemonScale = 369, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Psyduck, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Psyduck, + .frontAnimId = ANIM_V_JUMPS_H_JUMPS, + BACK_PIC(Psyduck, 48, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Psyduck), + ICON(Psyduck, 1), + .footprint = gMonFootprint_Psyduck, + LEARNSETS(Psyduck), + .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_GOLDUCK}), + }, + + [SPECIES_GOLDUCK] = + { + .baseHP = 80, + .baseAttack = 82, + .baseDefense = 78, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 80, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 75, + .expYield = 175, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_DAMP, ABILITY_CLOUD_NINE, ABILITY_SWIFT_SWIM }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Golduck"), + .cryId = CRY_GOLDUCK, + .natDexNum = NATIONAL_DEX_GOLDUCK, + .categoryName = _("Duck"), + .height = 17, + .weight = 766, + .description = COMPOUND_STRING( + "A Golduck is an adept swimmer.\n" + "It sometimes joins competitive swimmers\n" + "in training. It uses psychic powers when\n" + "its forehead shimmers with light."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 273, + .trainerOffset = 1, + FRONT_PIC(Golduck, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Golduck, + .frontAnimId = ANIM_H_SHAKE_SLOW, + BACK_PIC(Golduck, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Golduck), + ICON(Golduck, 0), + .footprint = gMonFootprint_Golduck, + LEARNSETS(Golduck), + }, +#endif //P_FAMILY_PSYDUCK + +#if P_FAMILY_MANKEY + [SPECIES_MANKEY] = + { + .baseHP = 40, + .baseAttack = 80, + .baseDefense = 35, + .baseSpeed = 70, + .baseSpAttack = 35, + .baseSpDefense = 45, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 190, + .expYield = 61, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_ANGER_POINT, ABILITY_DEFIANT }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Mankey"), + .cryId = CRY_MANKEY, + .natDexNum = NATIONAL_DEX_MANKEY, + .categoryName = _("Pig Monkey"), + .height = 5, + .weight = 280, + .description = COMPOUND_STRING( + "When it starts shaking and its nasal\n" + "breathing turns rough, it's a sure sign\n" + "of anger. However, since this happens\n" + "instantly, there is no time to flee."), + .pokemonScale = 404, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Mankey, 56, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Mankey, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + .frontAnimDelay = 20, + BACK_PIC(Mankey, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Mankey), + ICON(Mankey, 1), + .footprint = gMonFootprint_Mankey, + LEARNSETS(Mankey), + .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_PRIMEAPE}), + }, + + [SPECIES_PRIMEAPE] = + { + .baseHP = 65, + .baseAttack = 105, + .baseDefense = 60, + .baseSpeed = 95, + .baseSpAttack = 60, + .baseSpDefense = 70, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 75, + .expYield = 159, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_ANGER_POINT, ABILITY_DEFIANT }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Primeape"), + .cryId = CRY_PRIMEAPE, + .natDexNum = NATIONAL_DEX_PRIMEAPE, + .categoryName = _("Pig Monkey"), + .height = 10, + .weight = 320, + .description = COMPOUND_STRING( + "When it becomes furious, its blood\n" + "circulation becomes more robust, and\n" + "its muscles are made stronger. But it\n" + "also becomes much less intelligent."), + .pokemonScale = 326, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Primeape, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Primeape, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES, + BACK_PIC(Primeape, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Primeape), + ICON(Primeape, 2), + .footprint = gMonFootprint_Primeape, + LEARNSETS(Primeape), + .evolutions = EVOLUTION({EVO_MOVE, MOVE_RAGE_FIST, SPECIES_ANNIHILAPE}), + }, + +#if P_GEN_9_CROSS_EVOS + [SPECIES_ANNIHILAPE] = + { + .baseHP = 110, + .baseAttack = 115, + .baseDefense = 80, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = 90, + .types = { TYPE_FIGHTING, TYPE_GHOST }, + .catchRate = 45, + .expYield = 268, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_INNER_FOCUS, ABILITY_DEFIANT }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Annihilape"), + .cryId = CRY_ANNIHILAPE, + .natDexNum = NATIONAL_DEX_ANNIHILAPE, + .categoryName = _("Rage Monkey"), + .height = 12, + .weight = 560, + .description = COMPOUND_STRING( + "When its anger rose beyond a\n" + "critical point, this Pokémon gained power\n" + "that is unfettered by the limits of\n" + "its physical body."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Annihilape, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Annihilape, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Annihilape, 64, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Annihilape), + ICON(Annihilape, 0), + //.footprint = gMonFootprint_Annihilape, + LEARNSETS(Annihilape), + }, +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_MANKEY + +#if P_FAMILY_GROWLITHE +#define GROWLITHE_FAMILY_MISC_INFO \ + .genderRatio = PERCENT_FEMALE(25), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .bodyColor = BODY_COLOR_BROWN + +#define GROWLITHE_MISC_INFO \ + .catchRate = 190, \ + .expYield = 70, \ + .evYield_Attack = 1, \ + .speciesName = _("Growlithe"), \ + .cryId = CRY_GROWLITHE, \ + .natDexNum = NATIONAL_DEX_GROWLITHE, \ + .footprint = gMonFootprint_Growlithe, \ + .formSpeciesIdTable = sGrowlitheFormSpeciesIdTable, \ + GROWLITHE_FAMILY_MISC_INFO + +#define ARCANINE_MISC_INFO \ + .catchRate = 75, \ + .expYield = 194, \ + .evYield_Attack = 2, \ + .speciesName = _("Arcanine"), \ + .cryId = CRY_ARCANINE, \ + .natDexNum = NATIONAL_DEX_ARCANINE, \ + .categoryName = _("Legendary"), \ + .footprint = gMonFootprint_Arcanine, \ + .formSpeciesIdTable = sArcanineFormSpeciesIdTable, \ + GROWLITHE_FAMILY_MISC_INFO + + [SPECIES_GROWLITHE] = + { + GROWLITHE_MISC_INFO, + .baseHP = 55, + .baseAttack = 70, + .baseDefense = 45, + .baseSpeed = 60, + .baseSpAttack = 70, + .baseSpDefense = 50, + .types = { TYPE_FIRE, TYPE_FIRE }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED }, + .categoryName = _("Puppy"), + .height = 7, + .weight = 190, + .description = COMPOUND_STRING( + "Its superb sense of smell ensures that\n" + "this Pokémon won't forget any scent,\n" + "no matter what. It uses its sense of smell\n" + "to detect the emotions of others."), + .pokemonScale = 346, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Growlithe, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Growlithe, + .frontAnimId = ANIM_V_STRETCH, + .frontAnimDelay = 30, + BACK_PIC(Growlithe, 48, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Growlithe), + ICON(Growlithe, 3), + LEARNSETS(Growlithe), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}), + }, + + [SPECIES_ARCANINE] = + { + ARCANINE_MISC_INFO, + .baseHP = 90, + .baseAttack = 110, + .baseDefense = 80, + .baseSpeed = 95, + .baseSpAttack = 100, + .baseSpDefense = 80, + .types = { TYPE_FIRE, TYPE_FIRE }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED }, + .height = 19, + .weight = 1550, + .description = COMPOUND_STRING( + "This fleet-footed Pokémon is said to run\n" + "over 6,200 miles in a single day and night.\n" + "The fire that blazes wildly within its body\n" + "is its source of power."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 312, + .trainerOffset = 4, + FRONT_PIC(Arcanine, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Arcanine, + .frontAnimId = ANIM_V_SHAKE, + .frontAnimDelay = 8, + BACK_PIC(Arcanine, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Arcanine), + ICON(Arcanine, 3), + LEARNSETS(Arcanine), + }, + +#if P_HISUIAN_FORMS + [SPECIES_GROWLITHE_HISUIAN] = + { + GROWLITHE_MISC_INFO, + .baseHP = 60, + .baseAttack = 75, + .baseDefense = 45, + .baseSpeed = 55, + .baseSpAttack = 65, + .baseSpDefense = 50, + .types = { TYPE_FIRE, TYPE_ROCK }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_ROCK_HEAD }, + .categoryName = _("Scout"), + .height = 8, + .weight = 227, + .description = COMPOUND_STRING( + "They patrol their territory in pairs.\n" + "It's believed the igneous rock components\n" + "in the fur of this species are the result\n" + "of volcanic activity in its habitat."), + .pokemonScale = 346, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(GrowlitheHisuian, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_GrowlitheHisuian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(GrowlitheHisuian, 56, 56), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(GrowlitheHisuian), + ICON(GrowlitheHisuian, 0), + LEARNSETS(GrowlitheHisuian), + .isHisuianForm = TRUE, + .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE_HISUIAN}), + }, + + [SPECIES_ARCANINE_HISUIAN] = + { + ARCANINE_MISC_INFO, + .baseHP = 95, + .baseAttack = 115, + .baseDefense = 80, + .baseSpeed = 90, + .baseSpAttack = 95, + .baseSpDefense = 80, + .types = { TYPE_FIRE, TYPE_ROCK }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_ROCK_HEAD }, + .height = 20, + .weight = 1680, + .description = COMPOUND_STRING( + "Snaps at its foes with fangs cloaked in\n" + "blazing flame. Despite its bulk, it deftly\n" + "feints every which way, leading opponents\n" + "on a deceptively merry chase."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 312, + .trainerOffset = 4, + FRONT_PIC(ArcanineHisuian, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_ArcanineHisuian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ArcanineHisuian, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ArcanineHisuian), + ICON(ArcanineHisuian, 0), + LEARNSETS(ArcanineHisuian), + .isHisuianForm = TRUE, + }, +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_GROWLITHE + +#if P_FAMILY_POLIWAG + [SPECIES_POLIWAG] = + { + .baseHP = 40, + .baseAttack = 50, + .baseDefense = 40, + .baseSpeed = 90, + .baseSpAttack = 40, + .baseSpDefense = 40, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 255, + .expYield = 60, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_WATER_ABSORB, ABILITY_DAMP, ABILITY_SWIFT_SWIM }, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + .speciesName = _("Poliwag"), + .cryId = CRY_POLIWAG, + .natDexNum = NATIONAL_DEX_POLIWAG, + .categoryName = _("Tadpole"), + .height = 6, + .weight = 124, + .description = COMPOUND_STRING( + "It is possible to see this Pokémon's spiral\n" + "innards right through its thin skin.\n" + "However, the skin is also very flexible.\n" + "Even sharp fangs bounce right off it."), + .pokemonScale = 369, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Poliwag, 64, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Poliwag, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Poliwag, 48, 32), + .backPicYOffset = 18, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Poliwag), + ICON(Poliwag, 0), + .footprint = gMonFootprint_Poliwag, + LEARNSETS(Poliwag), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_POLIWHIRL}), + }, + + [SPECIES_POLIWHIRL] = + { + .baseHP = 65, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = 50, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 120, + .expYield = 135, + .evYield_Speed = 2, + .itemRare = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_WATER_ABSORB, ABILITY_DAMP, ABILITY_SWIFT_SWIM }, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + .speciesName = _("Poliwhirl"), + .cryId = CRY_POLIWHIRL, + .natDexNum = NATIONAL_DEX_POLIWHIRL, + .categoryName = _("Tadpole"), + .height = 10, + .weight = 200, + .description = COMPOUND_STRING( + "Its body surface is always wet and slick\n" + "with an oily fluid. Because of this greasy\n" + "covering, it can easily slip and slide out\n" + "of the clutches of any enemy in battle."), + .pokemonScale = 288, + .pokemonOffset = 11, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Poliwhirl, 64, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Poliwhirl, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + .frontAnimDelay = 5, + BACK_PIC(Poliwhirl, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Poliwhirl), + ICON(Poliwhirl, 0), + .footprint = gMonFootprint_Poliwhirl, + LEARNSETS(Poliwhirl), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH}, + {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}, + {EVO_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}), + }, + + [SPECIES_POLIWRATH] = + { + .baseHP = 90, + .baseAttack = P_UPDATED_STATS >= GEN_6 ? 95 : 85, + .baseDefense = 95, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 90, + .types = { TYPE_WATER, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 230, + .evYield_Defense = 3, + .itemRare = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_WATER_ABSORB, ABILITY_DAMP, ABILITY_SWIFT_SWIM }, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + .speciesName = _("Poliwrath"), + .cryId = CRY_POLIWRATH, + .natDexNum = NATIONAL_DEX_POLIWRATH, + .categoryName = _("Tadpole"), + .height = 13, + .weight = 540, + .description = COMPOUND_STRING( + "Its highly developed muscles never grow\n" + "fatigued, however much it exercises.\n" + "This Pokémon can swim back and forth\n" + "across the Pacific Ocean without effort."), + .pokemonScale = 256, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Poliwrath, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Poliwrath, + .frontAnimId = ANIM_V_SHAKE_TWICE, + BACK_PIC(Poliwrath, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Poliwrath), + ICON(Poliwrath, 0), + .footprint = gMonFootprint_Poliwrath, + LEARNSETS(Poliwrath), + }, + +#if P_GEN_2_CROSS_EVOS + [SPECIES_POLITOED] = + { + .baseHP = 90, + .baseAttack = 75, + .baseDefense = 75, + .baseSpeed = 70, + .baseSpAttack = 90, + .baseSpDefense = 100, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 225, + .evYield_SpDefense = 3, + .itemRare = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_WATER_ABSORB, ABILITY_DAMP, ABILITY_DRIZZLE }, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + .speciesName = _("Politoed"), + .cryId = CRY_POLITOED, + .natDexNum = NATIONAL_DEX_POLITOED, + .categoryName = _("Frog"), + .height = 11, + .weight = 339, + .description = COMPOUND_STRING( + "The curled hair on its head proves its\n" + "status as a king. It is said that the\n" + "longer and curlier the hair, the more\n" + "respect it earns from its peers."), + .pokemonScale = 289, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Politoed, 48, 56), + FRONT_PIC_FEMALE(Politoed, 48, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Politoed, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + .frontAnimDelay = 40, + BACK_PIC(Politoed, 56, 56), + BACK_PIC_FEMALE(Politoed, 56, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Politoed), + ICON(Politoed, 1), + .footprint = gMonFootprint_Politoed, + LEARNSETS(Politoed), + }, +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_POLIWAG + +#if P_FAMILY_ABRA + [SPECIES_ABRA] = + { + .baseHP = 25, + .baseAttack = 20, + .baseDefense = 15, + .baseSpeed = 90, + .baseSpAttack = 105, + .baseSpDefense = 55, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 200, + .expYield = 62, + .evYield_SpAttack = 1, + .itemRare = ITEM_TWISTED_SPOON, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS, ABILITY_MAGIC_GUARD }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Abra"), + .cryId = CRY_ABRA, + .natDexNum = NATIONAL_DEX_ABRA, + .categoryName = _("Psi"), + .height = 9, + .weight = 195, + .description = COMPOUND_STRING( + "A Pokémon that sleeps 18 hours a day.\n" + "Observation revealed that it uses\n" + "Teleport to change its location once\n" + "every hour."), + .pokemonScale = 363, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Abra, 56, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Abra, + .frontAnimId = ANIM_H_VIBRATE, + BACK_PIC(Abra, 56, 48), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Abra), + ICON(Abra, 2), + .footprint = gMonFootprint_Abra, + LEARNSETS(Abra), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_KADABRA}), + }, + + [SPECIES_KADABRA] = + { + .baseHP = 40, + .baseAttack = 35, + .baseDefense = 30, + .baseSpeed = 105, + .baseSpAttack = 120, + .baseSpDefense = 70, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 100, + .expYield = 140, + .evYield_SpAttack = 2, + .itemRare = ITEM_TWISTED_SPOON, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS, ABILITY_MAGIC_GUARD }, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = TRUE, + .speciesName = _("Kadabra"), + .cryId = CRY_KADABRA, + .natDexNum = NATIONAL_DEX_KADABRA, + .categoryName = _("Psi"), + .height = 13, + .weight = 565, + .description = COMPOUND_STRING( + "It is rumored that a boy with psychic\n" + "abilities suddenly transformed into\n" + "Kadabra while he was assisting research\n" + "into extrasensory powers."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Kadabra, 64, 56), + FRONT_PIC_FEMALE(Kadabra, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Kadabra, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Kadabra, 64, 48), + BACK_PIC_FEMALE(Kadabra, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Kadabra), + ICON(Kadabra, 2), + .footprint = gMonFootprint_Kadabra, + LEARNSETS(Kadabra), + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_ALAKAZAM}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_ALAKAZAM}), + }, + +#define ALAKAZAM_SP_DEF (P_UPDATED_STATS >= GEN_6 ? 95 : 85) + +#define ALAKAZAM_MISC_INFO \ + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, \ + .catchRate = 50, \ + .evYield_SpAttack = 3, \ + .itemRare = ITEM_TWISTED_SPOON, \ + .genderRatio = PERCENT_FEMALE(25), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE },\ + .bodyColor = BODY_COLOR_BROWN, \ + .speciesName = _("Alakazam"), \ + .natDexNum = NATIONAL_DEX_ALAKAZAM, \ + .categoryName = _("Psi"), \ + .footprint = gMonFootprint_Alakazam, \ + LEARNSETS(Alakazam), \ + .formSpeciesIdTable = sAlakazamFormSpeciesIdTable, \ + .formChangeTable = sAlakazamFormChangeTable + + [SPECIES_ALAKAZAM] = + { + ALAKAZAM_MISC_INFO, + .baseHP = 55, + .baseAttack = 50, + .baseDefense = 45, + .baseSpeed = 120, + .baseSpAttack = 135, + .baseSpDefense = ALAKAZAM_SP_DEF, + .expYield = 225, + .abilities = { ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS, ABILITY_MAGIC_GUARD }, + .cryId = CRY_ALAKAZAM, + .height = 15, + .weight = 480, + .description = COMPOUND_STRING( + "While it has strong psychic abilities and\n" + "high intelligence, an Alakazam's muscles\n" + "are very weak. It uses psychic power to\n" + "move its body."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Alakazam, 64, 64), + FRONT_PIC_FEMALE(Alakazam, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Alakazam, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Alakazam, 64, 56), + BACK_PIC_FEMALE(Alakazam, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(Alakazam), + ICON(Alakazam, 2), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_ALAKAZAM_MEGA] = + { + ALAKAZAM_MISC_INFO, + .baseHP = 55, + .baseAttack = 50, + .baseDefense = 65, + .baseSpeed = 150, + .baseSpAttack = 175, + .baseSpDefense = ALAKAZAM_SP_DEF + 10, + .expYield = 270, + .abilities = { ABILITY_TRACE, ABILITY_TRACE, ABILITY_TRACE }, + .cryId = CRY_ALAKAZAM_MEGA, + .height = 12, + .weight = 480, + .description = COMPOUND_STRING( + "Having traded away its muscles, Alakazam's\n" + "true power has been unleashed. With its\n" + "psychic powers, it can foresee all things."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(AlakazamMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_AlakazamMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 7, + BACK_PIC(AlakazamMega, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(AlakazamMega), + ICON(AlakazamMega, 2), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ABRA + +#if P_FAMILY_MACHOP + [SPECIES_MACHOP] = + { + .baseHP = 70, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 35, + .baseSpAttack = 35, + .baseSpDefense = 35, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 180, + .expYield = 61, + .evYield_Attack = 1, + .itemRare = ITEM_FOCUS_BAND, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Machop"), + .cryId = CRY_MACHOP, + .natDexNum = NATIONAL_DEX_MACHOP, + .categoryName = _("Superpower"), + .height = 8, + .weight = 195, + .description = COMPOUND_STRING( + "It continually undertakes strenuous\n" + "training to master all forms of martial\n" + "arts. Its strength lets it easily hoist\n" + "a sumo wrestler onto its shoulders."), + .pokemonScale = 342, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Machop, 48, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Machop, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Machop, 48, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Machop), + ICON(Machop, 0), + .footprint = gMonFootprint_Machop, + LEARNSETS(Machop), + .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_MACHOKE}), + }, + + [SPECIES_MACHOKE] = + { + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 45, + .baseSpAttack = 50, + .baseSpDefense = 60, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 90, + .expYield = 142, + .evYield_Attack = 2, + .itemRare = ITEM_FOCUS_BAND, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST }, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = TRUE, + .speciesName = _("Machoke"), + .cryId = CRY_MACHOKE, + .natDexNum = NATIONAL_DEX_MACHOKE, + .categoryName = _("Superpower"), + .height = 15, + .weight = 705, + .description = COMPOUND_STRING( + "A belt is worn by a Machoke to keep its\n" + "overwhelming power under control.\n" + "Because it is so dangerous, no one has\n" + "ever removed the belt."), + .pokemonScale = 323, + .pokemonOffset = 9, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Machoke, 56, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Machoke, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Machoke, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Machoke), + ICON(Machoke, 2), + .footprint = gMonFootprint_Machoke, + LEARNSETS(Machoke), + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_MACHAMP}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_MACHAMP}), + }, + +#define MACHAMP_MISC_INFO \ + .baseHP = 90, \ + .baseAttack = 130, \ + .baseDefense = 80, \ + .baseSpeed = 55, \ + .baseSpAttack = 65, \ + .baseSpDefense = 85, \ + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, \ + .catchRate = 45, \ + .expYield = 227, \ + .evYield_Attack = 3, \ + .itemRare = ITEM_FOCUS_BAND, \ + .genderRatio = PERCENT_FEMALE(25), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, \ + .abilities = { ABILITY_GUTS, ABILITY_NO_GUARD, ABILITY_STEADFAST }, \ + .bodyColor = BODY_COLOR_GRAY, \ + .speciesName = _("Machamp"), \ + .cryId = CRY_MACHAMP, \ + .natDexNum = NATIONAL_DEX_MACHAMP, \ + .categoryName = _("Superpower"), \ + .footprint = gMonFootprint_Machamp, \ + LEARNSETS(Machamp), \ + .formSpeciesIdTable = sMachampFormSpeciesIdTable, \ + .formChangeTable = sMachampFormChangeTable + + [SPECIES_MACHAMP] = + { + MACHAMP_MISC_INFO, + .height = 16, + .weight = 1300, + .description = COMPOUND_STRING( + "It is impossible to defend against punches\n" + "and chops doled out by its four arms.\n" + "Its fighting spirit flares up when it faces\n" + "a tough opponent."), + .pokemonScale = 280, + .pokemonOffset = 1, + .trainerScale = 269, + .trainerOffset = -1, + FRONT_PIC(Machamp, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Machamp, + .frontAnimId = ANIM_H_JUMPS, + BACK_PIC(Machamp, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Machamp), + ICON(Machamp, 0), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_MACHAMP_GIGANTAMAX] = + { + MACHAMP_MISC_INFO, + .height = 250, + .weight = 0, + .description = COMPOUND_STRING( + "One of these Pokémon once used\n" + "its immeasurable strength to lift a\n" + "large ship that was in trouble. It\n" + "then carried the ship to port."), + .pokemonScale = 280, + .pokemonOffset = 1, + .trainerScale = 269, + .trainerOffset = -1, + FRONT_PIC(MachampGigantamax, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_MachampGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(MachampGigantamax, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(MachampGigantamax), + ICON(MachampGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MACHOP + +#if P_FAMILY_BELLSPROUT + [SPECIES_BELLSPROUT] = + { + .baseHP = 50, + .baseAttack = 75, + .baseDefense = 35, + .baseSpeed = 40, + .baseSpAttack = 70, + .baseSpDefense = 30, + .types = { TYPE_GRASS, TYPE_POISON }, + .catchRate = 255, + .expYield = 60, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_GLUTTONY }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Bellsprout"), + .cryId = CRY_BELLSPROUT, + .natDexNum = NATIONAL_DEX_BELLSPROUT, + .categoryName = _("Flower"), + .height = 7, + .weight = 40, + .description = COMPOUND_STRING( + "A Bellsprout's thin and flexible body lets\n" + "it bend and sway to avoid any attack,\n" + "however strong it may be. From its mouth,\n" + "it leaks a fluid that melts even iron."), + .pokemonScale = 354, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Bellsprout, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Bellsprout, + .frontAnimId = ANIM_H_JUMPS, + BACK_PIC(Bellsprout, 40, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Bellsprout), + ICON(Bellsprout, 1), + .footprint = gMonFootprint_Bellsprout, + LEARNSETS(Bellsprout), + .evolutions = EVOLUTION({EVO_LEVEL, 21, SPECIES_WEEPINBELL}), + }, + + [SPECIES_WEEPINBELL] = + { + .baseHP = 65, + .baseAttack = 90, + .baseDefense = 50, + .baseSpeed = 55, + .baseSpAttack = 85, + .baseSpDefense = 45, + .types = { TYPE_GRASS, TYPE_POISON }, + .catchRate = 120, + .expYield = 137, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_GLUTTONY }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Weepinbell"), + .cryId = CRY_WEEPINBELL, + .natDexNum = NATIONAL_DEX_WEEPINBELL, + .categoryName = _("Flycatcher"), + .height = 10, + .weight = 64, + .description = COMPOUND_STRING( + "At night, a Weepinbell hangs on to a tree\n" + "branch with its hooked rear and sleeps.\n" + "If it moves around in its sleep, it may\n" + "wake up to find itself on the ground."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Weepinbell, 56, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Weepinbell, + .frontAnimId = ANIM_SWING_CONVEX, + .frontAnimDelay = 3, + BACK_PIC(Weepinbell, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Weepinbell), + ICON(Weepinbell, 1), + .footprint = gMonFootprint_Weepinbell, + LEARNSETS(Weepinbell), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}), + }, + + [SPECIES_VICTREEBEL] = + { + .baseHP = 80, + .baseAttack = 105, + .baseDefense = 65, + .baseSpeed = 70, + .baseSpAttack = 100, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 70 : 60, + .types = { TYPE_GRASS, TYPE_POISON }, + .catchRate = 45, + .expYield = 221, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_GLUTTONY }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Victreebel"), + .cryId = CRY_VICTREEBEL, + .natDexNum = NATIONAL_DEX_VICTREEBEL, + .categoryName = _("Flycatcher"), + .height = 17, + .weight = 155, + .description = COMPOUND_STRING( + "The long vine extending from its head is\n" + "waved about as if it were a living thing to\n" + "attract prey. When an unsuspecting victim\n" + "approaches, it is swallowed whole."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 312, + .trainerOffset = 3, + FRONT_PIC(Victreebel, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Victreebel, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + BACK_PIC(Victreebel, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Victreebel), + ICON(Victreebel, 1), + .footprint = gMonFootprint_Victreebel, + LEARNSETS(Victreebel), + }, +#endif //P_FAMILY_BELLSPROUT + +#if P_FAMILY_TENTACOOL + [SPECIES_TENTACOOL] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 35, + .baseSpeed = 70, + .baseSpAttack = 50, + .baseSpDefense = 100, + .types = { TYPE_WATER, TYPE_POISON }, + .catchRate = 190, + .expYield = 67, + .evYield_SpDefense = 1, + .itemRare = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_CLEAR_BODY, ABILITY_LIQUID_OOZE, ABILITY_RAIN_DISH }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Tentacool"), + .cryId = CRY_TENTACOOL, + .natDexNum = NATIONAL_DEX_TENTACOOL, + .categoryName = _("Jellyfish"), + .height = 9, + .weight = 455, + .description = COMPOUND_STRING( + "Its body is almost entirely composed of\n" + "water. It ensnares its foe with its two\n" + "long tentacles, then stabs with the poison\n" + "stingers at their tips."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Tentacool, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Tentacool, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Tentacool, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Tentacool), + ICON(Tentacool, 0), + .footprint = gMonFootprint_Tentacool, + LEARNSETS(Tentacool), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_TENTACRUEL}), + }, + + [SPECIES_TENTACRUEL] = + { + .baseHP = 80, + .baseAttack = 70, + .baseDefense = 65, + .baseSpeed = 100, + .baseSpAttack = 80, + .baseSpDefense = 120, + .types = { TYPE_WATER, TYPE_POISON }, + .catchRate = 60, + .expYield = 180, + .evYield_SpDefense = 2, + .itemRare = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_CLEAR_BODY, ABILITY_LIQUID_OOZE, ABILITY_RAIN_DISH }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Tentacruel"), + .cryId = CRY_TENTACRUEL, + .natDexNum = NATIONAL_DEX_TENTACRUEL, + .categoryName = _("Jellyfish"), + .height = 16, + .weight = 550, + .description = COMPOUND_STRING( + "It lives in complex rock formations on\n" + "the ocean floor and traps prey using its\n" + "80 tentacles. Its red orbs glow when it\n" + "grows excited or agitated."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 312, + .trainerOffset = 1, + FRONT_PIC(Tentacruel, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Tentacruel, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + BACK_PIC(Tentacruel, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Tentacruel), + ICON(Tentacruel, 0), + .footprint = gMonFootprint_Tentacruel, + LEARNSETS(Tentacruel), + }, +#endif //P_FAMILY_TENTACOOL + +#if P_FAMILY_GEODUDE +#define KANTONIAN_GEODUDE_FAMILY_INFO \ + .types = { TYPE_ROCK, TYPE_GROUND }, \ + .itemRare = ITEM_EVERSTONE, \ + .abilities = { ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SAND_VEIL } + +#define GEODUDE_FAMILY_MISC_INFO \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, \ + .bodyColor = BODY_COLOR_BROWN + +#define GEODUDE_MISC_INFO \ + .baseHP = 40, \ + .baseAttack = 80, \ + .baseDefense = 100, \ + .baseSpeed = 20, \ + .baseSpAttack = 30, \ + .baseSpDefense = 30, \ + .catchRate = 255, \ + .expYield = 60, \ + .evYield_Defense = 1, \ + .speciesName = _("Geodude"), \ + .cryId = CRY_GEODUDE, \ + .natDexNum = NATIONAL_DEX_GEODUDE, \ + .categoryName = _("Rock"), \ + .height = 4, \ + .pokemonScale = 347, \ + .pokemonOffset = 18, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Geodude, \ + .formSpeciesIdTable = sGeodudeFormSpeciesIdTable, \ + GEODUDE_FAMILY_MISC_INFO + +#define GRAVELER_MISC_INFO \ + .baseHP = 55, \ + .baseAttack = 95, \ + .baseDefense = 115, \ + .baseSpeed = 35, \ + .baseSpAttack = 45, \ + .baseSpDefense = 45, \ + .catchRate = 120, \ + .expYield = 137, \ + .evYield_Defense = 2, \ + .speciesName = _("Graveler"), \ + .cryId = CRY_GRAVELER, \ + .natDexNum = NATIONAL_DEX_GRAVELER, \ + .categoryName = _("Rock"), \ + .height = 10, \ + .pokemonScale = 256, \ + .pokemonOffset = 2, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Graveler, \ + .formSpeciesIdTable = sGravelerFormSpeciesIdTable, \ + GEODUDE_FAMILY_MISC_INFO + +#define GOLEM_ATTACK (P_UPDATED_STATS >= GEN_6 ? 120 : 110) + +#define GOLEM_MISC_INFO \ + .baseHP = 80, \ + .baseAttack = GOLEM_ATTACK, \ + .baseDefense = 130, \ + .baseSpeed = 45, \ + .baseSpAttack = 55, \ + .baseSpDefense = 65, \ + .catchRate = 45, \ + .expYield = 223, \ + .evYield_Defense = 3, \ + .speciesName = _("Golem"), \ + .cryId = CRY_GOLEM, \ + .natDexNum = NATIONAL_DEX_GOLEM, \ + .categoryName = _("Megaton"), \ + .footprint = gMonFootprint_Golem, \ + .formSpeciesIdTable = sGolemFormSpeciesIdTable, \ + GEODUDE_FAMILY_MISC_INFO + + [SPECIES_GEODUDE] = + { + KANTONIAN_GEODUDE_FAMILY_INFO, + GEODUDE_MISC_INFO, + .weight = 200, + .description = COMPOUND_STRING( + "It climbs mountain paths using only the\n" + "power of its arms. Because they look just\n" + "like boulders lining paths, hikers may step\n" + "on them without noticing."), + FRONT_PIC(Geodude, 64, 32), + .frontPicYOffset = 19, + .frontAnimFrames = sAnims_Geodude, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, + .enemyMonElevation = 10, + BACK_PIC(Geodude, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Geodude), + ICON(Geodude, 1), + LEARNSETS(Geodude), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_GRAVELER}), + }, + + [SPECIES_GRAVELER] = + { + KANTONIAN_GEODUDE_FAMILY_INFO, + GRAVELER_MISC_INFO, + .weight = 1050, + .description = COMPOUND_STRING( + "They descend from mountains by tumbling\n" + "down steep slopes. They are so brutal,\n" + "they smash aside obstructing trees and\n" + "massive boulders with thunderous tackles."), + FRONT_PIC(Graveler, 64, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Graveler, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Graveler, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Graveler), + ICON(Graveler, 1), + LEARNSETS(Graveler), + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOLEM}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOLEM}), + }, + + [SPECIES_GOLEM] = + { + KANTONIAN_GEODUDE_FAMILY_INFO, + GOLEM_MISC_INFO, + .height = 14, + .weight = 3000, + .description = COMPOUND_STRING( + "It is said to live in volcanic craters\n" + "on mountain peaks. Once a year, it sheds\n" + "its hide and grows larger. The shed hide\n" + "crumbles and returns to the soil."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 296, + .trainerOffset = 2, + FRONT_PIC(Golem, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Golem, + .frontAnimId = ANIM_ROTATE_UP_SLAM_DOWN, + BACK_PIC(Golem, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Golem), + ICON(Golem, 2), + LEARNSETS(Golem), + }, + +#if P_ALOLAN_FORMS +#define ALOLAN_GEODUDE_FAMILY_INFO \ + .types = { TYPE_ROCK, TYPE_ELECTRIC }, \ + .abilities = { ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_GALVANIZE },\ + .isAlolanForm = TRUE + + [SPECIES_GEODUDE_ALOLAN] = + { + ALOLAN_GEODUDE_FAMILY_INFO, + GEODUDE_MISC_INFO, + .itemRare = ITEM_CELL_BATTERY, + .weight = 203, + .description = COMPOUND_STRING( + "Its body is a magnetic stone. Iron sand\n" + "attach to parts of its body with stronger\n" + "magnetism. If you carelessly step on one,\n" + "it will headbutt and shock you in anger."), + FRONT_PIC(GeodudeAlolan, 48, 32), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_GeodudeAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 16, + BACK_PIC(GeodudeAlolan, 64, 56), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(GeodudeAlolan), + ICON(GeodudeAlolan, 2), + LEARNSETS(GeodudeAlolan), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_GRAVELER_ALOLAN}), + }, + + [SPECIES_GRAVELER_ALOLAN] = + { + ALOLAN_GEODUDE_FAMILY_INFO, + GRAVELER_MISC_INFO, + .itemRare = ITEM_CELL_BATTERY, + .weight = 1100, + .description = COMPOUND_STRING( + "When two Graveler smash each other over\n" + "dravite, their favorite food, they cause\n" + "flashes of light and booming noises.\n" + "People call them “fireworks of the earth.”"), + FRONT_PIC(GravelerAlolan, 64, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_GravelerAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(GravelerAlolan, 64, 48), + .backPicYOffset = 10, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(GravelerAlolan), + ICON(GravelerAlolan, 2), + LEARNSETS(GravelerAlolan), + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOLEM_ALOLAN}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOLEM_ALOLAN}), + }, + + [SPECIES_GOLEM_ALOLAN] = + { + ALOLAN_GEODUDE_FAMILY_INFO, + GOLEM_MISC_INFO, + .itemCommon = ITEM_CELL_BATTERY, + .height = 17, + .weight = 3160, + .description = COMPOUND_STRING( + "It fires rocks charged with electricity.\n" + "Even if the rock isn't fired that\n" + "accurately, just grazing an opponent\n" + "will cause numbness and fainting."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 296, + .trainerOffset = 2, + FRONT_PIC(GolemAlolan, 56, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_GolemAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(GolemAlolan, 64, 48), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(GolemAlolan), + ICON(GolemAlolan, 2), + LEARNSETS(GolemAlolan), + }, +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GEODUDE + +#if P_FAMILY_PONYTA +#define KANTONIAN_PONYTA_FAMILY_INFO \ + .types = { TYPE_FIRE, TYPE_FIRE }, \ + .abilities = { ABILITY_RUN_AWAY, ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY }, \ + .bodyColor = BODY_COLOR_YELLOW + +#define PONYTA_FAMILY_MISC_INFO \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD } + +#define PONYTA_MISC_INFO \ + .baseHP = 50, \ + .baseAttack = 85, \ + .baseDefense = 55, \ + .baseSpeed = 90, \ + .baseSpAttack = 65, \ + .baseSpDefense = 65, \ + .catchRate = 190, \ + .expYield = 82, \ + .evYield_Speed = 1, \ + .speciesName = _("Ponyta"), \ + .cryId = CRY_PONYTA, \ + .natDexNum = NATIONAL_DEX_PONYTA, \ + .footprint = gMonFootprint_Ponyta, \ + .formSpeciesIdTable = sPonytaFormSpeciesIdTable,\ + PONYTA_FAMILY_MISC_INFO + +#define RAPIDASH_MISC_INFO \ + .baseHP = 65, \ + .baseAttack = 100, \ + .baseDefense = 70, \ + .baseSpeed = 105, \ + .baseSpAttack = 80, \ + .baseSpDefense = 80, \ + .catchRate = 60, \ + .expYield = 175, \ + .evYield_Speed = 2, \ + .speciesName = _("Rapidash"), \ + .cryId = CRY_RAPIDASH, \ + .natDexNum = NATIONAL_DEX_RAPIDASH, \ + .height = 17, \ + .pokemonScale = 256, \ + .pokemonOffset = 0, \ + .trainerScale = 289, \ + .trainerOffset = 1, \ + .footprint = gMonFootprint_Rapidash, \ + .formSpeciesIdTable = sRapidashFormSpeciesIdTable, \ + PONYTA_FAMILY_MISC_INFO + + [SPECIES_PONYTA] = + { + KANTONIAN_PONYTA_FAMILY_INFO, + PONYTA_MISC_INFO, + .categoryName = _("Fire Horse"), + .height = 10, + .weight = 300, + .description = COMPOUND_STRING( + "A Ponyta is very weak at birth. It can\n" + "barely stand up. Its legs become stronger\n" + "as it stumbles and falls while trying to\n" + "keep up with its parent."), + .pokemonScale = 283, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Ponyta, 56, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Ponyta, + .frontAnimId = ANIM_V_SHAKE, + .frontAnimDelay = 10, + BACK_PIC(Ponyta, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Ponyta), + ICON(Ponyta, 3), + LEARNSETS(Ponyta), + .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_RAPIDASH}), + }, + + [SPECIES_RAPIDASH] = + { + KANTONIAN_PONYTA_FAMILY_INFO, + RAPIDASH_MISC_INFO, + .categoryName = _("Fire Horse"), + .weight = 950, + .description = COMPOUND_STRING( + "It usually canters casually in the fields\n" + "and plains. But once a Rapidash turns\n" + "serious, its fiery manes flare and blaze\n" + "as it gallops its way up to 150 mph."), + FRONT_PIC(Rapidash, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Rapidash, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Rapidash, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Rapidash), + ICON(Rapidash, 3), + LEARNSETS(Rapidash), + }, + +#define GALARIAN_PONYTA_FAMILY_INFO \ + .abilities = { ABILITY_RUN_AWAY, ABILITY_PASTEL_VEIL, ABILITY_ANTICIPATION },\ + .bodyColor = BODY_COLOR_WHITE, \ + .isGalarianForm = TRUE + +#if P_GALARIAN_FORMS + [SPECIES_PONYTA_GALARIAN] = + { + GALARIAN_PONYTA_FAMILY_INFO, + PONYTA_MISC_INFO, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .categoryName = _("Unique Horn"), + .height = 8, + .weight = 240, + .description = COMPOUND_STRING( + "Its small horn hides a healing power.\n" + "This Pokémon will look into your eyes and\n" + "read the contents of your heart. If it\n" + "finds evil there, it promptly hides away."), + .pokemonScale = 283, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(PonytaGalarian, 64, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_PonytaGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PonytaGalarian, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PonytaGalarian), + ICON(PonytaGalarian, 2), + LEARNSETS(PonytaGalarian), + .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_RAPIDASH_GALARIAN}), + }, + + [SPECIES_RAPIDASH_GALARIAN] = + { + GALARIAN_PONYTA_FAMILY_INFO, + RAPIDASH_MISC_INFO, + .types = { TYPE_PSYCHIC, TYPE_FAIRY }, + .categoryName = _("Unique Horn"), + .weight = 800, + .description = COMPOUND_STRING( + "Little can stand up to its psycho cut.\n" + "Unleashed from this Pokémon's horn,\n" + "the move will punch a hole right\n" + "through a thick metal sheet."), + FRONT_PIC(RapidashGalarian, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_RapidashGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(RapidashGalarian, 64, 56), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(RapidashGalarian), + ICON(RapidashGalarian, 2), + LEARNSETS(RapidashGalarian), + }, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_PONYTA + +#if P_FAMILY_SLOWPOKE +#define SLOWPOKE_MISC_INFO \ + .baseHP = 90, \ + .baseAttack = 65, \ + .baseDefense = 65, \ + .baseSpeed = 15, \ + .baseSpAttack = 40, \ + .baseSpDefense = 40, \ + .catchRate = 190, \ + .expYield = 63, \ + .evYield_HP = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1 }, \ + .bodyColor = BODY_COLOR_PINK, \ + .speciesName = _("Slowpoke"), \ + .natDexNum = NATIONAL_DEX_SLOWPOKE, \ + .categoryName = _("Dopey"), \ + .height = 12, \ + .weight = 360, \ + .pokemonScale = 256, \ + .pokemonOffset = 10, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Slowpoke, \ + .formSpeciesIdTable = sSlowpokeFormSpeciesIdTable + +#define SLOWBRO_MISC_INFO \ + .catchRate = 75, \ + .itemRare = ITEM_KINGS_ROCK, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1 }, \ + .bodyColor = BODY_COLOR_PINK, \ + .speciesName = _("Slowbro"), \ + .cryId = CRY_SLOWBRO, \ + .natDexNum = NATIONAL_DEX_SLOWBRO, \ + .categoryName = _("Hermit Crab"), \ + .footprint = gMonFootprint_Slowbro, \ + .formSpeciesIdTable = sSlowbroFormSpeciesIdTable + +#define SLOWKING_MISC_INFO \ + .catchRate = 70, \ + .expYield = 172, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1 }, \ + .bodyColor = BODY_COLOR_PINK, \ + .speciesName = _("Slowking"), \ + .cryId = CRY_SLOWKING, \ + .natDexNum = NATIONAL_DEX_SLOWKING, \ + .weight = 795, \ + .footprint = gMonFootprint_Slowking, \ + .formSpeciesIdTable = sSlowkingFormSpeciesIdTable + + [SPECIES_SLOWPOKE] = + { + SLOWPOKE_MISC_INFO, + .types = { TYPE_WATER, TYPE_PSYCHIC }, + .itemRare = ITEM_LAGGING_TAIL, + .abilities = { ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR }, + .cryId = CRY_SLOWPOKE, + .description = COMPOUND_STRING( + "It catches prey by dipping its tail in\n" + "water at the side of a river. But it often\n" + "forgets what it is doing and spends entire\n" + "days just loafing at water's edge."), + FRONT_PIC(Slowpoke, 64, 32), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Slowpoke, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Slowpoke, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Slowpoke), + ICON(Slowpoke, 0), + LEARNSETS(Slowpoke), + .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_SLOWBRO}, + {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}, + {EVO_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}), + }, + + [SPECIES_SLOWBRO] = + { + SLOWBRO_MISC_INFO, + .baseHP = 95, + .baseAttack = 75, + .baseDefense = 110, + .baseSpeed = 30, + .baseSpAttack = 100, + .baseSpDefense = 80, + .types = { TYPE_WATER, TYPE_PSYCHIC }, + .expYield = 172, + .evYield_Defense = 2, + .abilities = { ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR }, + .height = 16, + .weight = 785, + .description = COMPOUND_STRING( + "Its tail has a Shellder firmly attached\n" + "with a bite. As a result, the tail can't be\n" + "used for fishing anymore. This forces it\n" + "to reluctantly swim and catch prey."), + .pokemonScale = 256, + .pokemonOffset = 6, + .trainerScale = 296, + .trainerOffset = 2, + FRONT_PIC(Slowbro, 56, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Slowbro, + .frontAnimId = ANIM_H_STRETCH, + BACK_PIC(Slowbro, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Slowbro), + ICON(Slowbro, 0), + LEARNSETS(Slowbro), + .formChangeTable = sSlowbroFormChangeTable, + }, + +#if P_GEN_2_CROSS_EVOS + [SPECIES_SLOWKING] = + { + SLOWKING_MISC_INFO, + .baseHP = 95, + .baseAttack = 75, + .baseDefense = 80, + .baseSpeed = 30, + .baseSpAttack = 100, + .baseSpDefense = 110, + .types = { TYPE_WATER, TYPE_PSYCHIC }, + .evYield_SpDefense = 3, + .itemRare = ITEM_KINGS_ROCK, + .abilities = { ABILITY_OBLIVIOUS, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR }, + .categoryName = _("Royal"), + .height = 20, + .description = COMPOUND_STRING( + "It undertakes research every day to\n" + "solve the mysteries of the world.\n" + "However, it apparently forgets everything\n" + "if the Shellder on its head comes off."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 309, + .trainerOffset = 5, + FRONT_PIC(Slowking, 48, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Slowking, + .frontAnimId = ANIM_SHRINK_GROW, + BACK_PIC(Slowking, 56, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Slowking), + ICON(Slowking, 0), + LEARNSETS(Slowking), + }, +#endif //P_GEN_2_CROSS_EVOS + +#if P_MEGA_EVOLUTIONS + [SPECIES_SLOWBRO_MEGA] = + { + SLOWBRO_MISC_INFO, + .baseHP = 95, + .baseAttack = 75, + .baseDefense = 180, + .baseSpeed = 30, + .baseSpAttack = 130, + .baseSpDefense = 80, + .types = { TYPE_WATER, TYPE_PSYCHIC }, + .expYield = 207, + .evYield_Defense = 2, + .abilities = { ABILITY_SHELL_ARMOR, ABILITY_SHELL_ARMOR, ABILITY_SHELL_ARMOR }, + .height = 20, + .weight = 1200, + .description = COMPOUND_STRING( + "When bathed in the energy of Mega\n" + "Evolution, Shellder converts into\n" + "impregnable armor. There is virtually no\n" + "change in Slowpoke."), + .pokemonScale = 256, + .pokemonOffset = 6, + .trainerScale = 296, + .trainerOffset = 2, + FRONT_PIC(SlowbroMega, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_SlowbroMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SlowbroMega, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(SlowbroMega), + ICON(SlowbroMega, 0), + LEARNSETS(Slowbro), + .formChangeTable = sSlowbroFormChangeTable, + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS + +#if P_GALARIAN_FORMS + [SPECIES_SLOWPOKE_GALARIAN] = + { + SLOWPOKE_MISC_INFO, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .abilities = { ABILITY_GLUTTONY, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR }, + .cryId = CRY_SLOWPOKE_GALARIAN, + .description = COMPOUND_STRING( + "Although it is normally zoned out, its\n" + "expression abruptly sharpens on occasion.\n" + "The cause seems to lie in Slowpoke's diet,\n" + "which also give their tails a spicy flavor."), + FRONT_PIC(SlowpokeGalarian, 56, 32), + .frontPicYOffset = 19, + .frontAnimFrames = sAnims_SlowpokeGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SlowpokeGalarian, 64, 40), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(SlowpokeGalarian), + ICON(SlowpokeGalarian, 1), + LEARNSETS(SlowpokeGalarian), + .isGalarianForm = TRUE, + .evolutions = EVOLUTION({EVO_ITEM, ITEM_GALARICA_CUFF, SPECIES_SLOWBRO_GALARIAN}, + {EVO_ITEM, ITEM_GALARICA_WREATH, SPECIES_SLOWKING_GALARIAN}), + }, + + [SPECIES_SLOWBRO_GALARIAN] = + { + SLOWBRO_MISC_INFO, + .baseHP = 95, + .baseAttack = 100, + .baseDefense = 95, + .baseSpeed = 30, + .baseSpAttack = 100, + .baseSpDefense = 70, + .types = { TYPE_POISON, TYPE_PSYCHIC }, + .expYield = 172, + .evYield_Attack = 2, + .abilities = { ABILITY_QUICK_DRAW, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR }, + .height = 16, + .weight = 705, + .description = COMPOUND_STRING( + "A Shellder bite set off a chemical reaction\n" + "with the spices inside Slowbro's body,\n" + "causing Slowbro to become a\n" + "Poison-type Pokémon."), + .pokemonScale = 256, + .pokemonOffset = 6, + .trainerScale = 296, + .trainerOffset = 2, + FRONT_PIC(SlowbroGalarian, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_SlowbroGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SlowbroGalarian, 64, 48), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(SlowbroGalarian), + ICON(SlowbroGalarian, 0), + LEARNSETS(SlowbroGalarian), + .isGalarianForm = TRUE, + }, + +#if P_GEN_2_CROSS_EVOS + [SPECIES_SLOWKING_GALARIAN] = + { + SLOWKING_MISC_INFO, + .baseHP = 95, + .baseAttack = 65, + .baseDefense = 80, + .baseSpeed = 30, + .baseSpAttack = 110, + .baseSpDefense = 110, + .types = { TYPE_POISON, TYPE_PSYCHIC }, + .evYield_SpDefense = 2, + .abilities = { ABILITY_CURIOUS_MEDICINE, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR }, + .categoryName = _("Hexpert"), + .height = 18, + .description = COMPOUND_STRING( + "A combination of toxins and the shock of\n" + "evolving has increased Shellder's\n" + "intelligence to the point that Shellder\n" + "now controls Slowking."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 309, + .trainerOffset = 5, + FRONT_PIC(SlowkingGalarian, 48, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_SlowkingGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SlowkingGalarian, 56, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(SlowkingGalarian), + ICON(SlowkingGalarian, 2), + LEARNSETS(SlowkingGalarian), + .isGalarianForm = TRUE, + }, +#endif //P_GEN_2_CROSS_EVOS +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_SLOWPOKE + +#if P_FAMILY_MAGNEMITE + [SPECIES_MAGNEMITE] = + { + .baseHP = 25, + .baseAttack = 35, + .baseDefense = 70, + .baseSpeed = 45, + .baseSpAttack = 95, + .baseSpDefense = 55, + .types = { TYPE_ELECTRIC, TYPE_STEEL }, + .catchRate = 190, + .expYield = 65, + .evYield_SpAttack = 1, + .itemRare = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_ANALYTIC }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Magnemite"), + .cryId = CRY_MAGNEMITE, + .natDexNum = NATIONAL_DEX_MAGNEMITE, + .categoryName = _("Magnet"), + .height = 3, + .weight = 60, + .description = COMPOUND_STRING( + "The units at its sides are extremely\n" + "powerful magnets. They generate enough\n" + "magnetism to draw in iron objects from\n" + "over 300 feet away."), + .pokemonScale = 288, + .pokemonOffset = -9, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Magnemite, 48, 32), + .frontPicYOffset = 20, + .frontAnimFrames = sAnims_Magnemite, + .frontAnimId = ANIM_TUMBLING_FRONT_FLIP_TWICE, + .enemyMonElevation = 17, + BACK_PIC(Magnemite, 48, 40), + .backPicYOffset = 15, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Magnemite), + ICON(Magnemite, 0), + .footprint = gMonFootprint_Magnemite, + LEARNSETS(Magnemite), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MAGNETON}), + }, + + [SPECIES_MAGNETON] = + { + .baseHP = 50, + .baseAttack = 60, + .baseDefense = 95, + .baseSpeed = 70, + .baseSpAttack = 120, + .baseSpDefense = 70, + .types = { TYPE_ELECTRIC, TYPE_STEEL }, + .catchRate = 60, + .expYield = 163, + .evYield_SpAttack = 2, + .itemRare = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_ANALYTIC }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Magneton"), + .cryId = CRY_MAGNETON, + .natDexNum = NATIONAL_DEX_MAGNETON, + .categoryName = _("Magnet"), + .height = 10, + .weight = 600, + .description = COMPOUND_STRING( + "It is actually three Magnemite linked\n" + "by magnetism. It generates powerful radio\n" + "waves that raise temperatures by 3.6\n" + "degrees F within a 3,300-foot radius."), + .pokemonScale = 292, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Magneton, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Magneton, + .frontAnimId = ANIM_FLASH_YELLOW, + .enemyMonElevation = 9, + BACK_PIC(Magneton, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Magneton), + ICON(Magneton, 0), + .footprint = gMonFootprint_Magneton, + LEARNSETS(Magneton), + .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_MAGNEZONE}, + {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_MAGNEZONE}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_MAGNEZONE] = + { + .baseHP = 70, + .baseAttack = 70, + .baseDefense = 115, + .baseSpeed = 60, + .baseSpAttack = 130, + .baseSpDefense = 90, + .types = { TYPE_ELECTRIC, TYPE_STEEL }, + .catchRate = 30, + .expYield = 241, + .evYield_SpAttack = 3, + .itemRare = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_ANALYTIC }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Magnezone"), + .cryId = CRY_MAGNEZONE, + .natDexNum = NATIONAL_DEX_MAGNEZONE, + .categoryName = _("Magnet Area"), + .height = 12, + .weight = 1800, + .description = COMPOUND_STRING( + "As it zooms through the sky, this\n" + "Pokémon seems to be receiving signals\n" + "of unknown origin, while transmitting its\n" + "own signals of unknown purpose."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Magnezone, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Magnezone, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + .enemyMonElevation = 4, + BACK_PIC(Magnezone, 64, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Magnezone), + ICON(Magnezone, 0), + .footprint = gMonFootprint_Magnezone, + LEARNSETS(Magnezone), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGNEMITE + +#if P_FAMILY_FARFETCHD +#define FARFETCHD_ATTACK (P_UPDATED_STATS >= GEN_7 ? 90 : 65) + +#define FARFETCHD_MISC_INFO \ + .catchRate = 45, \ + .expYield = 132, \ + .evYield_Attack = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FIELD }, \ + .bodyColor = BODY_COLOR_BROWN, \ + .speciesName = _("Farfetch'd"), \ + .cryId = CRY_FARFETCHD, \ + .natDexNum = NATIONAL_DEX_FARFETCHD, \ + .categoryName = _("Wild Duck"), \ + .footprint = gMonFootprint_Farfetchd, \ + .formSpeciesIdTable = sFarfetchdFormSpeciesIdTable + + [SPECIES_FARFETCHD] = + { + FARFETCHD_MISC_INFO, + .baseHP = 52, + .baseDefense = 55, + .baseSpeed = 60, + .baseSpAttack = 58, + .baseSpDefense = 62, + .baseAttack = FARFETCHD_ATTACK, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .itemRare = ITEM_LEEK, + .abilities = { ABILITY_KEEN_EYE, ABILITY_INNER_FOCUS, ABILITY_DEFIANT }, + .height = 8, + .weight = 150, + .description = COMPOUND_STRING( + "It is always seen with a stick from a plant.\n" + "Apparently, there are good sticks and bad\n" + "sticks. This Pokémon occasionally fights\n" + "with others over choice sticks."), + .pokemonScale = 330, + .pokemonOffset = 2, + .trainerScale = 293, + .trainerOffset = 2, + FRONT_PIC(Farfetchd, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Farfetchd, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, + BACK_PIC(Farfetchd, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Farfetchd), + ICON(Farfetchd, 1), + LEARNSETS(Farfetchd), + }, + +#if P_GALARIAN_FORMS + [SPECIES_FARFETCHD_GALARIAN] = + { + FARFETCHD_MISC_INFO, + .baseHP = 52, + .baseAttack = FARFETCHD_ATTACK + 5, + .baseDefense = 55, + .baseSpeed = 55, + .baseSpAttack = 58, + .baseSpDefense = 62, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .itemCommon = ITEM_LEEK, + .abilities = { ABILITY_STEADFAST, ABILITY_NONE, ABILITY_SCRAPPY }, + .height = 8, + .weight = 420, + .description = COMPOUND_STRING( + "The stalks of leeks are thicker and longer\n" + "in the Galar region. Brave Farfetch'd\n" + "warriors that adapted to these stalks\n" + "took on a unique form."), + .pokemonScale = 330, + .pokemonOffset = 2, + .trainerScale = 293, + .trainerOffset = 2, + FRONT_PIC(FarfetchdGalarian, 64, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_FarfetchdGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(FarfetchdGalarian, 64, 48), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(FarfetchdGalarian), + ICON(FarfetchdGalarian, 1), + LEARNSETS(FarfetchdGalarian), + .isGalarianForm = TRUE, + .evolutions = EVOLUTION({EVO_CRITICAL_HITS, 3, SPECIES_SIRFETCHD}), + }, + + [SPECIES_SIRFETCHD] = + { + .baseHP = 62, + .baseAttack = 135, + .baseDefense = 95, + .baseSpeed = 65, + .baseSpAttack = 68, + .baseSpDefense = 82, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 177, + .evYield_Attack = 2, + .itemRare = ITEM_LEEK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FIELD }, + .abilities = { ABILITY_STEADFAST, ABILITY_NONE, ABILITY_SCRAPPY }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Sirfetch'd"), + .cryId = CRY_SIRFETCHD, + .natDexNum = NATIONAL_DEX_SIRFETCHD, + .categoryName = _("Wild Duck"), + .height = 8, + .weight = 1170, + .description = COMPOUND_STRING( + "Only Farfetch'd that have survived many\n" + "battles can attain this evolution. When\n" + "this Pokémon's leek withers, it will\n" + "retire from combat."), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Sirfetchd, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Sirfetchd, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Sirfetchd, 64, 48), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Sirfetchd), + ICON(Sirfetchd, 1), + .footprint = gMonFootprint_Sirfetchd, + LEARNSETS(Sirfetchd), + }, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_FARFETCHD + +#if P_FAMILY_DODUO + [SPECIES_DODUO] = + { + .baseHP = 35, + .baseAttack = 85, + .baseDefense = 45, + .baseSpeed = 75, + .baseSpAttack = 35, + .baseSpDefense = 35, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 190, + .expYield = 62, + .evYield_Attack = 1, + .itemRare = ITEM_SHARP_BEAK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_RUN_AWAY, ABILITY_EARLY_BIRD, ABILITY_TANGLED_FEET }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Doduo"), + .cryId = CRY_DODUO, + .natDexNum = NATIONAL_DEX_DODUO, + .categoryName = _("Twin Bird"), + .height = 14, + .weight = 392, + .description = COMPOUND_STRING( + "Even while eating or sleeping, one of the\n" + "heads remains always vigilant for any sign\n" + "of danger. When threatened, it flees at\n" + "over 60 miles per hour."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 257, + .trainerOffset = -1, + FRONT_PIC(Doduo, 64, 56), + FRONT_PIC_FEMALE(Doduo, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Doduo, + .frontAnimId = ANIM_H_SHAKE_SLOW, + BACK_PIC(Doduo, 64, 56), + BACK_PIC_FEMALE(Doduo, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Doduo), + ICON(Doduo, 2), + .footprint = gMonFootprint_Doduo, + LEARNSETS(Doduo), + .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_DODRIO}), + }, + + [SPECIES_DODRIO] = + { + .baseHP = 60, + .baseAttack = 110, + .baseDefense = 70, + .baseSpeed = P_UPDATED_STATS >= GEN_7 ? 110 : 100, + .baseSpAttack = 60, + .baseSpDefense = 60, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 45, + .expYield = 165, + .evYield_Attack = 2, + .itemRare = ITEM_SHARP_BEAK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_RUN_AWAY, ABILITY_EARLY_BIRD, ABILITY_TANGLED_FEET }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Dodrio"), + .cryId = CRY_DODRIO, + .natDexNum = NATIONAL_DEX_DODRIO, + .categoryName = _("Triple Bird"), + .height = 18, + .weight = 852, + .description = COMPOUND_STRING( + "A peculiar Pokémon species with three\n" + "heads. It vigorously races across grassy\n" + "plains even in arid seasons with little\n" + "rainfall."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 268, + .trainerOffset = 0, + FRONT_PIC(Dodrio, 64, 64), + FRONT_PIC_FEMALE(Dodrio, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Dodrio, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Dodrio, 64, 64), + BACK_PIC_FEMALE(Dodrio, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Dodrio), + ICON(Dodrio, 2), + .footprint = gMonFootprint_Dodrio, + LEARNSETS(Dodrio), + }, +#endif //P_FAMILY_DODUO + +#if P_FAMILY_SEEL + [SPECIES_SEEL] = + { + .baseHP = 65, + .baseAttack = 45, + .baseDefense = 55, + .baseSpeed = 45, + .baseSpAttack = 45, + .baseSpDefense = 70, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 190, + .expYield = 65, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_THICK_FAT, ABILITY_HYDRATION, ABILITY_ICE_BODY }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Seel"), + .cryId = CRY_SEEL, + .natDexNum = NATIONAL_DEX_SEEL, + .categoryName = _("Sea Lion"), + .height = 11, + .weight = 900, + .description = COMPOUND_STRING( + "Seel hunt for prey in frigid, ice-covered\n" + "seas. When it needs to breathe, it punches\n" + "a hole through the ice with the sharply\n" + "protruding section of its head."), + .pokemonScale = 297, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Seel, 56, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Seel, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(Seel, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Seel), + ICON(Seel, 0), + .footprint = gMonFootprint_Seel, + LEARNSETS(Seel), + .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_DEWGONG}), + }, + + [SPECIES_DEWGONG] = + { + .baseHP = 90, + .baseAttack = 70, + .baseDefense = 80, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 95, + .types = { TYPE_WATER, TYPE_ICE }, + .catchRate = 75, + .expYield = 166, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_THICK_FAT, ABILITY_HYDRATION, ABILITY_ICE_BODY }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Dewgong"), + .cryId = CRY_DEWGONG, + .natDexNum = NATIONAL_DEX_DEWGONG, + .categoryName = _("Sea Lion"), + .height = 17, + .weight = 1200, + .description = COMPOUND_STRING( + "It loves to snooze on bitterly cold ice.\n" + "The sight of this Pokémon sleeping on\n" + "a glacier was mistakenly thought to be\n" + "a mermaid by a mariner long ago."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 275, + .trainerOffset = 0, + FRONT_PIC(Dewgong, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Dewgong, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Dewgong, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Dewgong), + ICON(Dewgong, 2), + .footprint = gMonFootprint_Dewgong, + LEARNSETS(Dewgong), + }, +#endif //P_FAMILY_SEEL + +#if P_FAMILY_GRIMER +#define GRIMER_FAMILY_MISC_INFO \ + .itemRare = ITEM_BLACK_SLUDGE, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS } + +#define GRIMER_MISC_INFO \ + .baseHP = 80, \ + .baseAttack = 80, \ + .baseDefense = 50, \ + .baseSpeed = 25, \ + .baseSpAttack = 40, \ + .baseSpDefense = 50, \ + .catchRate = 190, \ + .expYield = 65, \ + .evYield_HP = 1, \ + .speciesName = _("Grimer"), \ + .cryId = CRY_GRIMER, \ + .natDexNum = NATIONAL_DEX_GRIMER, \ + .categoryName = _("Sludge"), \ + .footprint = gMonFootprint_Grimer, \ + .formSpeciesIdTable = sGrimerFormSpeciesIdTable,\ + GRIMER_FAMILY_MISC_INFO + +#define MUK_MISC_INFO \ + .baseHP = 105, \ + .baseAttack = 105, \ + .baseDefense = 75, \ + .baseSpeed = 50, \ + .baseSpAttack = 65, \ + .baseSpDefense = 100, \ + .catchRate = 75, \ + .expYield = 175, \ + .evYield_HP = 1, \ + .evYield_Attack = 1, \ + .speciesName = _("Muk"), \ + .cryId = CRY_MUK, \ + .natDexNum = NATIONAL_DEX_MUK, \ + .categoryName = _("Sludge"), \ + .footprint = gMonFootprint_Muk, \ + .formSpeciesIdTable = sMukFormSpeciesIdTable, \ + GRIMER_FAMILY_MISC_INFO + +#define KANTONIAN_GRIMER_FAMILY_INFO \ + .types = { TYPE_POISON, TYPE_POISON }, \ + .abilities = { ABILITY_STENCH, ABILITY_STICKY_HOLD, ABILITY_POISON_TOUCH }, \ + .bodyColor = BODY_COLOR_PURPLE + + [SPECIES_GRIMER] = + { + KANTONIAN_GRIMER_FAMILY_INFO, + GRIMER_MISC_INFO, + .height = 9, + .weight = 300, + .description = COMPOUND_STRING( + "Born from polluted sludge in the sea,\n" + "Grimer's favorite food is anything filthy.\n" + "They feed on wastewater pumped out from\n" + "factories."), + .pokemonScale = 258, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Grimer, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Grimer, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(Grimer, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Grimer), + ICON(Grimer, 2), + LEARNSETS(Grimer), + .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_MUK}), + }, + + [SPECIES_MUK] = + { + KANTONIAN_GRIMER_FAMILY_INFO, + MUK_MISC_INFO, + .height = 12, + .weight = 300, + .description = COMPOUND_STRING( + "It prefers warm and humid habitats.\n" + "In the summertime, the toxic substances\n" + "in its body intensify, making Muk reek like\n" + "putrid kitchen garbage."), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Muk, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Muk, + .frontAnimId = ANIM_DEEP_V_SQUISH_AND_BOUNCE, + .frontAnimDelay = 45, + BACK_PIC(Muk, 64, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_STRETCH, + PALETTES(Muk), + ICON(Muk, 2), + LEARNSETS(Muk), + }, + +#if P_ALOLAN_FORMS +#define ALOLAN_GRIMER_FAMILY_INFO \ + .types = { TYPE_POISON, TYPE_DARK }, \ + .abilities = { ABILITY_POISON_TOUCH, ABILITY_GLUTTONY, ABILITY_POWER_OF_ALCHEMY }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .isAlolanForm = TRUE + + [SPECIES_GRIMER_ALOLAN] = + { + ALOLAN_GRIMER_FAMILY_INFO, + GRIMER_MISC_INFO, + .height = 7, + .weight = 420, + .description = COMPOUND_STRING( + "There are a hundred or so of them living\n" + "in Alola's waste-disposal site. They're all\n" + "hard workers who eat a lot of trash. Grimer\n" + "seems to relish any and all kinds of trash."), + .pokemonScale = 258, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(GrimerAlolan, 56, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_GrimerAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(GrimerAlolan, 64, 40), + .backPicYOffset = 14, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(GrimerAlolan), + ICON(GrimerAlolan, 1), + LEARNSETS(GrimerAlolan), + .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_MUK_ALOLAN}), + }, + + [SPECIES_MUK_ALOLAN] = + { + MUK_MISC_INFO, + ALOLAN_GRIMER_FAMILY_INFO, + .noFlip = TRUE, + .height = 10, + .weight = 520, + .description = COMPOUND_STRING( + "While it's unexpectedly quiet and friendly,\n" + "if it's not fed any trash for a while,,\n" + "it will smash its Trainer's furnishings,\n" + "and eat up the fragments."), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(MukAlolan, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_MukAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(MukAlolan, 64, 56), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(MukAlolan), + ICON(MukAlolan, 0), + LEARNSETS(MukAlolan), + }, +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GRIMER + +#if P_FAMILY_SHELLDER + [SPECIES_SHELLDER] = + { + .baseHP = 30, + .baseAttack = 65, + .baseDefense = 100, + .baseSpeed = 40, + .baseSpAttack = 45, + .baseSpDefense = 25, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 190, + .expYield = 61, + .evYield_Defense = 1, + .itemCommon = ITEM_PEARL, + .itemRare = ITEM_BIG_PEARL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_SHELL_ARMOR, ABILITY_SKILL_LINK, ABILITY_OVERCOAT }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Shellder"), + .cryId = CRY_SHELLDER, + .natDexNum = NATIONAL_DEX_SHELLDER, + .categoryName = _("Bivalve"), + .height = 3, + .weight = 40, + .description = COMPOUND_STRING( + "At night, it burrows a hole in the seafloor\n" + "with its broad tongue to make a place to\n" + "sleep. While asleep, it closes its shell,\n" + "but leaves its tongue hanging out."), + .pokemonScale = 675, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Shellder, 40, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Shellder, + .frontAnimId = ANIM_TWIST, + .frontAnimDelay = 20, + BACK_PIC(Shellder, 48, 24), + .backPicYOffset = 21, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Shellder), + ICON(Shellder, 2), + .footprint = gMonFootprint_Shellder, + LEARNSETS(Shellder), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}), + }, + + [SPECIES_CLOYSTER] = + { + .baseHP = 50, + .baseAttack = 95, + .baseDefense = 180, + .baseSpeed = 70, + .baseSpAttack = 85, + .baseSpDefense = 45, + .types = { TYPE_WATER, TYPE_ICE }, + .catchRate = 60, + .expYield = 184, + .evYield_Defense = 2, + .itemCommon = ITEM_PEARL, + .itemRare = ITEM_BIG_PEARL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_SHELL_ARMOR, ABILITY_SKILL_LINK, ABILITY_OVERCOAT }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Cloyster"), + .cryId = CRY_CLOYSTER, + .natDexNum = NATIONAL_DEX_CLOYSTER, + .categoryName = _("Bivalve"), + .height = 15, + .weight = 1325, + .description = COMPOUND_STRING( + "It swims in the sea by swallowing water,\n" + "then jetting it out toward the rear.\n" + "The Cloyster shoots spikes from its\n" + "shell using the same system."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 269, + .trainerOffset = 1, + FRONT_PIC(Cloyster, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Cloyster, + .frontAnimId = ANIM_V_SHAKE_TWICE, + BACK_PIC(Cloyster, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Cloyster), + ICON(Cloyster, 2), + .footprint = gMonFootprint_Cloyster, + LEARNSETS(Cloyster), + }, +#endif //P_FAMILY_SHELLDER + +#if P_FAMILY_GASTLY + [SPECIES_GASTLY] = + { + .baseHP = 30, + .baseAttack = 35, + .baseDefense = 30, + .baseSpeed = 80, + .baseSpAttack = 100, + .baseSpDefense = 35, + .types = { TYPE_GHOST, TYPE_POISON }, + .catchRate = 190, + .expYield = 62, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Gastly"), + .cryId = CRY_GASTLY, + .natDexNum = NATIONAL_DEX_GASTLY, + .categoryName = _("Gas"), + .height = 13, + .weight = 1, + .description = COMPOUND_STRING( + "When exposed to a strong wind, a Gastly's\n" + "gaseous body quickly dwindles away.\n" + "They cluster under the eaves of houses\n" + "to escape the ravages of wind."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Gastly, 64, 48), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Gastly, + .frontAnimId = ANIM_SHRINK_GROW, + .enemyMonElevation = 13, + BACK_PIC(Gastly, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Gastly), + ICON(Gastly, 2), + .footprint = gMonFootprint_Gastly, + LEARNSETS(Gastly), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_HAUNTER}), + }, + + [SPECIES_HAUNTER] = + { + .baseHP = 45, + .baseAttack = 50, + .baseDefense = 45, + .baseSpeed = 95, + .baseSpAttack = 115, + .baseSpDefense = 55, + .types = { TYPE_GHOST, TYPE_POISON }, + .catchRate = 90, + .expYield = 142, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Haunter"), + .cryId = CRY_HAUNTER, + .natDexNum = NATIONAL_DEX_HAUNTER, + .categoryName = _("Gas"), + .height = 16, + .weight = 1, + .description = COMPOUND_STRING( + "If a Haunter beckons you while it is\n" + "floating in darkness, don't approach it.\n" + "This Pokémon will try to lick you with its\n" + "tongue and steal your life away."), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 293, + .trainerOffset = 2, + FRONT_PIC(Haunter, 64, 48), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Haunter, + .frontAnimId = ANIM_FLICKER_INCREASING, + .frontAnimDelay = 23, + .enemyMonElevation = 14, + BACK_PIC(Haunter, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Haunter), + ICON(Haunter, 2), + .footprint = gMonFootprint_Haunter, + LEARNSETS(Haunter), + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GENGAR}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GENGAR}), + }, + +#if P_UPDATED_ABILITIES >= GEN_7 +#define GENGAR_ABILITIES {ABILITY_CURSED_BODY, ABILITY_NONE} +#else +#define GENGAR_ABILITIES {ABILITY_LEVITATE, ABILITY_NONE} +#endif + +#define GENGAR_MISC_INFO \ + .types = { TYPE_GHOST, TYPE_POISON }, \ + .catchRate = 45, \ + .evYield_SpAttack = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .speciesName = _("Gengar"), \ + .natDexNum = NATIONAL_DEX_GENGAR, \ + .categoryName = _("Shadow"), \ + .footprint = gMonFootprint_Gengar, \ + LEARNSETS(Gengar), \ + .formSpeciesIdTable = sGengarFormSpeciesIdTable, \ + .formChangeTable = sGengarFormChangeTable + + [SPECIES_GENGAR] = + { + GENGAR_MISC_INFO, + .baseHP = 60, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 110, + .baseSpAttack = 130, + .baseSpDefense = 75, + .expYield = 225, + .abilities = GENGAR_ABILITIES, + .height = 15, + .weight = 405, + .description = COMPOUND_STRING( + "Deep in the night, your shadow cast by\n" + "a streetlight may suddenly overtake you.\n" + "It is actually a Gengar running past\n" + "you, pretending to be your shadow."), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 302, + .trainerOffset = 2, + FRONT_PIC(Gengar, 56, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Gengar, + .frontAnimId = ANIM_GROW_IN_STAGES, + BACK_PIC(Gengar, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Gengar), + ICON(Gengar, 2), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_GENGAR_MEGA] = + { + GENGAR_MISC_INFO, + .baseHP = 60, + .baseAttack = 65, + .baseDefense = 80, + .baseSpeed = 130, + .baseSpAttack = 170, + .baseSpDefense = 95, + .expYield = 270, + .abilities = { ABILITY_SHADOW_TAG, ABILITY_SHADOW_TAG, ABILITY_SHADOW_TAG }, + .isMegaEvolution = TRUE, + .height = 14, + .weight = 405, + .description = COMPOUND_STRING( + "Gengar's relationships are warped. It\n" + "tries to take the lives of anyone and\n" + "everyone. It will even try to curse the\n" + "Trainer who is its master!"), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 302, + .trainerOffset = 2, + FRONT_PIC(GengarMega, 64, 64), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_GengarMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(GengarMega, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(GengarMega), + ICON(GengarMega, 2), + }, +#endif //P_MEGA_EVOLUTIONS + +#if P_GIGANTAMAX_FORMS + [SPECIES_GENGAR_GIGANTAMAX] = + { + GENGAR_MISC_INFO, + .baseHP = 60, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 110, + .baseSpAttack = 130, + .baseSpDefense = 75, + .expYield = 225, + .abilities = GENGAR_ABILITIES, + .isGigantamax = TRUE, + .height = 200, + .weight = 0, + .description = COMPOUND_STRING( + "Rumor has it that its gigantic\n" + "mouth leads not into its body, filled\n" + "with cursed energy, but instead\n" + "directly to the afterlife."), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 302, + .trainerOffset = 2, + FRONT_PIC(GengarGigantamax, 64, 64), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_GengarGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(GengarGigantamax, 64, 64), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(GengarGigantamax), + ICON(GengarGigantamax, 2), + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_GASTLY + +#if P_FAMILY_ONIX + [SPECIES_ONIX] = + { + .baseHP = 35, + .baseAttack = 45, + .baseDefense = 160, + .baseSpeed = 70, + .baseSpAttack = 30, + .baseSpDefense = 45, + .types = { TYPE_ROCK, TYPE_GROUND }, + .catchRate = 45, + .expYield = 77, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_WEAK_ARMOR }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Onix"), + .cryId = CRY_ONIX, + .natDexNum = NATIONAL_DEX_ONIX, + .categoryName = _("Rock Snake"), + .height = 88, + .weight = 2100, + .description = COMPOUND_STRING( + "There is a magnet in its brain that\n" + "prevents an Onix from losing direction\n" + "while tunneling. As it grows older, its body\n" + "becomes steadily rounder and smoother."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 515, + .trainerOffset = 14, + FRONT_PIC(Onix, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Onix, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Onix, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Onix), + ICON(Onix, 2), + .footprint = gMonFootprint_Onix, + LEARNSETS(Onix), + .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}, + {EVO_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}), + }, + +#if P_GEN_2_CROSS_EVOS +#define STEELIX_MISC_INFO \ + .types = { TYPE_STEEL, TYPE_GROUND }, \ + .catchRate = 25, \ + .evYield_Defense = 2, \ + .itemRare = ITEM_METAL_COAT, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, \ + .bodyColor = BODY_COLOR_GRAY, \ + .speciesName = _("Steelix"), \ + .natDexNum = NATIONAL_DEX_STEELIX, \ + .categoryName = _("Iron Snake"), \ + .footprint = gMonFootprint_Steelix, \ + LEARNSETS(Steelix), \ + .formSpeciesIdTable = sSteelixFormSpeciesIdTable, \ + .formChangeTable = sSteelixFormChangeTable + + [SPECIES_STEELIX] = + { + STEELIX_MISC_INFO, + .baseHP = 75, + .baseAttack = 85, + .baseDefense = 200, + .baseSpeed = 30, + .baseSpAttack = 55, + .baseSpDefense = 65, + .expYield = 179, + .abilities = { ABILITY_ROCK_HEAD, ABILITY_STURDY, ABILITY_SHEER_FORCE }, + .cryId = CRY_STEELIX, + .height = 92, + .weight = 4000, + .description = COMPOUND_STRING( + "Steelix live even further underground\n" + "than Onix. This Pokémon is known to dig\n" + "toward the earth's core, reaching a depth\n" + "of over six-tenths of a mile underground."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 516, + .trainerOffset = 13, + FRONT_PIC(Steelix, 64, 64), + FRONT_PIC_FEMALE(Steelix, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Steelix, + .frontAnimId = ANIM_V_SHAKE, + .frontAnimDelay = 45, + BACK_PIC(Steelix, 64, 64), + BACK_PIC_FEMALE(Steelix, 64, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Steelix), + ICON(Steelix, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_STEELIX_MEGA] = + { + STEELIX_MISC_INFO, + .baseHP = 75, + .baseAttack = 125, + .baseDefense = 230, + .baseSpeed = 30, + .baseSpAttack = 55, + .baseSpDefense = 95, + .expYield = 214, + .abilities = { ABILITY_SAND_FORCE, ABILITY_SAND_FORCE, ABILITY_SAND_FORCE }, + .cryId = CRY_STEELIX_MEGA, + .height = 105, + .weight = 7400, + .description = COMPOUND_STRING( + "The cells within its body, crystallized by\n" + "the energy produced from Mega Evolution,\n" + "are stronger than any mineral and able\n" + "to withstand any temperature."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 516, + .trainerOffset = 13, + FRONT_PIC(SteelixMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_SteelixMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SteelixMega, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(SteelixMega), + ICON(SteelixMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ONIX + +#if P_FAMILY_DROWZEE + [SPECIES_DROWZEE] = + { + .baseHP = 60, + .baseAttack = 48, + .baseDefense = 45, + .baseSpeed = 42, + .baseSpAttack = 43, + .baseSpDefense = 90, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 190, + .expYield = 66, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_INSOMNIA, ABILITY_FOREWARN, ABILITY_INNER_FOCUS }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Drowzee"), + .cryId = CRY_DROWZEE, + .natDexNum = NATIONAL_DEX_DROWZEE, + .categoryName = _("Hypnosis"), + .height = 10, + .weight = 324, + .description = COMPOUND_STRING( + "If your nose becomes itchy while you are\n" + "sleeping, it's a sure sign that a Drowzee is\n" + "standing above your pillow and trying to\n" + "eat your dream through your nostrils."), + .pokemonScale = 274, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Drowzee, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Drowzee, + .frontAnimId = ANIM_V_STRETCH, + .frontAnimDelay = 48, + BACK_PIC(Drowzee, 56, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Drowzee), + ICON(Drowzee, 2), + .footprint = gMonFootprint_Drowzee, + LEARNSETS(Drowzee), + .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_HYPNO}), + }, + + [SPECIES_HYPNO] = + { + .baseHP = 85, + .baseAttack = 73, + .baseDefense = 70, + .baseSpeed = 67, + .baseSpAttack = 73, + .baseSpDefense = 115, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 75, + .expYield = 169, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_INSOMNIA, ABILITY_FOREWARN, ABILITY_INNER_FOCUS }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Hypno"), + .cryId = CRY_HYPNO, + .natDexNum = NATIONAL_DEX_HYPNO, + .categoryName = _("Hypnosis"), + .height = 16, + .weight = 756, + .description = COMPOUND_STRING( + "The arcing movement and glitter of the\n" + "pendulum in a Hypno's hand lull the foe\n" + "into deep hypnosis. While searching for\n" + "prey, it polishes the pendulum."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Hypno, 64, 64), + FRONT_PIC_FEMALE(Hypno, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Hypno, + .frontAnimId = ANIM_GROW_VIBRATE, + .frontAnimDelay = 40, + BACK_PIC(Hypno, 64, 56), + BACK_PIC_FEMALE(Hypno, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Hypno), + ICON(Hypno, 2), + .footprint = gMonFootprint_Hypno, + LEARNSETS(Hypno), + }, +#endif //P_FAMILY_DROWZEE + +#if P_FAMILY_KRABBY + [SPECIES_KRABBY] = + { + .baseHP = 30, + .baseAttack = 105, + .baseDefense = 90, + .baseSpeed = 50, + .baseSpAttack = 25, + .baseSpDefense = 25, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 225, + .expYield = 65, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Krabby"), + .cryId = CRY_KRABBY, + .natDexNum = NATIONAL_DEX_KRABBY, + .categoryName = _("River Crab"), + .height = 4, + .weight = 65, + .description = COMPOUND_STRING( + "Krabby live in holes dug into beaches.\n" + "On sandy shores with little in the way\n" + "of food, they can be seen squabbling with\n" + "each other over territory."), + .pokemonScale = 469, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Krabby, 64, 48), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Krabby, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(Krabby, 56, 40), + .backPicYOffset = 15, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Krabby), + ICON(Krabby, 0), + .footprint = gMonFootprint_Krabby, + LEARNSETS(Krabby), + .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_KINGLER}), + }, + +#define KINGLER_MISC_INFO \ + .baseHP = 55, \ + .baseAttack = 130, \ + .baseDefense = 115, \ + .baseSpeed = 75, \ + .baseSpAttack = 50, \ + .baseSpDefense = 50, \ + .types = { TYPE_WATER, TYPE_WATER }, \ + .catchRate = 60, \ + .expYield = 166, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, \ + .abilities = { ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_SHEER_FORCE },\ + .bodyColor = BODY_COLOR_RED, \ + .noFlip = TRUE, \ + .speciesName = _("Kingler"), \ + .cryId = CRY_KINGLER, \ + .natDexNum = NATIONAL_DEX_KINGLER, \ + .categoryName = _("Pincer"), \ + .footprint = gMonFootprint_Kingler, \ + LEARNSETS(Kingler), \ + .formSpeciesIdTable = sKinglerFormSpeciesIdTable, \ + .formChangeTable = sKinglerFormChangeTable + + [SPECIES_KINGLER] = + { + KINGLER_MISC_INFO, + .height = 13, + .weight = 600, + .description = COMPOUND_STRING( + "It waves its huge, oversized claw in the\n" + "air to communicate with others.\n" + "But since the claw is so heavy, this\n" + "Pokémon quickly tires."), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Kingler, 64, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Kingler, + .frontAnimId = ANIM_V_SHAKE_TWICE, + .frontAnimDelay = 4, + BACK_PIC(Kingler, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Kingler), + ICON(Kingler, 0), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_KINGLER_GIGANTAMAX] = + { + KINGLER_MISC_INFO, + .height = 190, + .weight = 0, + .description = COMPOUND_STRING( + "The flow of Gigantamax energy has\n" + "spurred this Pokémon's left pincer\n" + "to grow to an enormous size. That\n" + "claw can pulverize anything."), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(KinglerGigantamax, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_KinglerGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(KinglerGigantamax, 64, 64), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(KinglerGigantamax), + ICON(KinglerGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_KRABBY + +#if P_FAMILY_VOLTORB +#define VOLTORB_FAMILY_MISC_INFO \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, \ + .abilities = { ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH }, \ + .bodyColor = BODY_COLOR_RED + +#define VOLTORB_MISC_INFO \ + .baseHP = 40, \ + .baseAttack = 30, \ + .baseDefense = 50, \ + .baseSpeed = 100, \ + .baseSpAttack = 55, \ + .baseSpDefense = 55, \ + .catchRate = 190, \ + .expYield = 66, \ + .evYield_Speed = 1, \ + .speciesName = _("Voltorb"), \ + .cryId = CRY_VOLTORB, \ + .natDexNum = NATIONAL_DEX_VOLTORB, \ + .height = 5, \ + .pokemonScale = 364, \ + .pokemonOffset = -8, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Voltorb, \ + .formSpeciesIdTable = sVoltorbFormSpeciesIdTable, \ + VOLTORB_FAMILY_MISC_INFO + +#define ELECTRODE_MISC_INFO \ + .baseHP = 60, \ + .baseAttack = 50, \ + .baseDefense = 70, \ + .baseSpAttack = 80, \ + .baseSpDefense = 80, \ + .baseSpeed = P_UPDATED_STATS >= GEN_7 ? 150 : 140, \ + .catchRate = 60, \ + .expYield = 172, \ + .evYield_Speed = 2, \ + .speciesName = _("Electrode"), \ + .cryId = CRY_ELECTRODE, \ + .natDexNum = NATIONAL_DEX_ELECTRODE, \ + .height = 12, \ + .pokemonScale = 256, \ + .pokemonOffset = 0, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Electrode, \ + .formSpeciesIdTable = sElectrodeFormSpeciesIdTable, \ + VOLTORB_FAMILY_MISC_INFO + + [SPECIES_VOLTORB] = + { + VOLTORB_MISC_INFO, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .categoryName = _("Ball"), + .weight = 104, + .description = COMPOUND_STRING( + "It bears an uncanny and unexplained\n" + "resemblance to a Poké Ball. Because it\n" + "explodes at the slightest shock, even\n" + "veteran Trainers treat it with caution."), + FRONT_PIC(Voltorb, 32, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Voltorb, + .frontAnimId = ANIM_SWING_CONCAVE, + BACK_PIC(Voltorb, 48, 40), + .backPicYOffset = 14, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Voltorb), + ICON(Voltorb, 0), + LEARNSETS(Voltorb), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ELECTRODE}), + }, + + [SPECIES_ELECTRODE] = + { + ELECTRODE_MISC_INFO, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .categoryName = _("Ball"), + .weight = 666, + .description = COMPOUND_STRING( + "They appear in great numbers at electric\n" + "power plants. Because they feed on\n" + "electricity, they cause massive and\n" + "chaotic blackouts in nearby cities."), + FRONT_PIC(Electrode, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Electrode, + .frontAnimId = ANIM_SHRINK_GROW_VIBRATE_SLOW, + BACK_PIC(Electrode, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Electrode), + ICON(Electrode, 0), + LEARNSETS(Electrode), + }, + +#if P_HISUIAN_FORMS + [SPECIES_VOLTORB_HISUIAN] = + { + VOLTORB_MISC_INFO, + .types = { TYPE_ELECTRIC, TYPE_GRASS }, + .categoryName = _("Sphere"), + .weight = 130, + .description = COMPOUND_STRING( + "It esembles an ancient Poké Ball design.\n" + "When excited, it discharges the electric\n" + "current it has stored in its belly, then\n" + "lets out a great, uproarious laugh."), + FRONT_PIC(VoltorbHisuian, 32, 32), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_VoltorbHisuian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(VoltorbHisuian, 48, 32), + .backPicYOffset = 10, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(VoltorbHisuian), + ICON(VoltorbHisuian, 0), + LEARNSETS(VoltorbHisuian), + .isHisuianForm = TRUE, + .evolutions = EVOLUTION({EVO_LEVEL, ITEM_LEAF_STONE, SPECIES_ELECTRODE_HISUIAN}), + }, + + [SPECIES_ELECTRODE_HISUIAN] = + { + ELECTRODE_MISC_INFO, + .types = { TYPE_ELECTRIC, TYPE_GRASS }, + .categoryName = _("Sphere"), + .weight = 710, + .description = COMPOUND_STRING( + "The tissue on the surface of its body is\n" + "similar in composition to an Apricorn.\n" + "When irritated, it lets loose an electric\n" + "current equal to 20 lightning bolts."), + FRONT_PIC(ElectrodeHisuian, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_ElectrodeHisuian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ElectrodeHisuian, 64, 40), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ElectrodeHisuian), + ICON(ElectrodeHisuian, 1), + LEARNSETS(ElectrodeHisuian), + .isHisuianForm = TRUE, + }, +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_VOLTORB + +#if P_FAMILY_EXEGGCUTE + [SPECIES_EXEGGCUTE] = + { + .baseHP = 60, + .baseAttack = 40, + .baseDefense = 80, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = 45, + .types = { TYPE_GRASS, TYPE_PSYCHIC }, + .catchRate = 90, + .expYield = 65, + .evYield_Defense = 1, + .itemRare = ITEM_PSYCHIC_SEED, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_HARVEST }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Exeggcute"), + .cryId = CRY_EXEGGCUTE, + .natDexNum = NATIONAL_DEX_EXEGGCUTE, + .categoryName = _("Egg"), + .height = 4, + .weight = 25, + .description = COMPOUND_STRING( + "It consists of six eggs that care for each\n" + "other. The eggs attract each other and\n" + "spin around. When cracks increasingly\n" + "appear, it is close to evolution."), + .pokemonScale = 489, + .pokemonOffset = -4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Exeggcute, 56, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Exeggcute, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(Exeggcute, 64, 32), + .backPicYOffset = 18, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Exeggcute), + ICON(Exeggcute, 0), + .footprint = gMonFootprint_Exeggcute, + LEARNSETS(Exeggcute), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}, + {EVO_NONE, 0, SPECIES_EXEGGUTOR_ALOLAN}), + }, + +#define EXEGGUTOR_MISC_INFO \ + .catchRate = 45, \ + .expYield = 186, \ + .evYield_SpAttack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, \ + .bodyColor = BODY_COLOR_YELLOW, \ + .speciesName = _("Exeggutor"), \ + .cryId = CRY_EXEGGUTOR, \ + .natDexNum = NATIONAL_DEX_EXEGGUTOR, \ + .categoryName = _("Coconut"), \ + .footprint = gMonFootprint_Exeggutor, \ + .formSpeciesIdTable = sExeggutorFormSpeciesIdTable + +#define EXEGGUTOR_SP_DEF (P_UPDATED_STATS >= GEN_7 ? 75 : 65) + + [SPECIES_EXEGGUTOR] = + { + EXEGGUTOR_MISC_INFO, + .baseHP = 95, + .baseAttack = 95, + .baseDefense = 85, + .baseSpeed = 55, + .baseSpAttack = 125, + .baseSpDefense = EXEGGUTOR_SP_DEF, + .types = { TYPE_GRASS, TYPE_PSYCHIC }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE, ABILITY_HARVEST }, + .height = 20, + .weight = 1200, + .description = COMPOUND_STRING( + "Originally from the tropics, Exeggutor's\n" + "heads grow larger from exposure to strong\n" + "sunlight. It is said that when the heads\n" + "fall, they group to form an Exeggcute."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 309, + .trainerOffset = 5, + FRONT_PIC(Exeggutor, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Exeggutor, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + BACK_PIC(Exeggutor, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Exeggutor), + ICON(Exeggutor, 1), + LEARNSETS(Exeggutor), + }, + +#if P_ALOLAN_FORMS + [SPECIES_EXEGGUTOR_ALOLAN] = + { + EXEGGUTOR_MISC_INFO, + .baseHP = 95, + .baseAttack = 105, + .baseDefense = 85, + .baseSpeed = 45, + .baseSpAttack = 125, + .baseSpDefense = EXEGGUTOR_SP_DEF, + .types = { TYPE_GRASS, TYPE_DRAGON }, + .abilities = { ABILITY_FRISK, ABILITY_NONE, ABILITY_HARVEST }, + .height = 109, + .weight = 4156, + .description = COMPOUND_STRING( + "Alola is the best environment for\n" + "this Pokémon. Local people take pride\n" + "in its appearance, saying this is how\n" + "Exeggutor ought to look."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 309, + .trainerOffset = 5, + FRONT_PIC(ExeggutorAlolan, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_ExeggutorAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ExeggutorAlolan, 64, 56), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ExeggutorAlolan), + ICON(ExeggutorAlolan, 1), + LEARNSETS(ExeggutorAlolan), + .isAlolanForm = TRUE, + }, +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_EXEGGCUTE + +#if P_FAMILY_CUBONE + [SPECIES_CUBONE] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 95, + .baseSpeed = 35, + .baseSpAttack = 40, + .baseSpDefense = 50, + .types = { TYPE_GROUND, TYPE_GROUND }, + .catchRate = 190, + .expYield = 64, + .evYield_Defense = 1, + .itemRare = ITEM_THICK_CLUB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, + .abilities = { ABILITY_ROCK_HEAD, ABILITY_LIGHTNING_ROD, ABILITY_BATTLE_ARMOR }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Cubone"), + .cryId = CRY_CUBONE, + .natDexNum = NATIONAL_DEX_CUBONE, + .categoryName = _("Lonely"), + .height = 4, + .weight = 65, + .description = COMPOUND_STRING( + "It pines for the mother it will never see\n" + "again. Seeing a likeness of its mother in\n" + "the full moon, it cries. The stains on the\n" + "skull it wears are from its tears."), + .pokemonScale = 545, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cubone, 56, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Cubone, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .frontAnimDelay = 30, + BACK_PIC(Cubone, 56, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Cubone), + ICON(Cubone, 2), + .footprint = gMonFootprint_Cubone, + LEARNSETS(Cubone), + .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_MAROWAK}, + {EVO_NONE, 0, SPECIES_MAROWAK_ALOLAN}), + }, + +#define MAROWAK_MISC_INFO \ + .baseHP = 60, \ + .baseAttack = 80, \ + .baseDefense = 110, \ + .baseSpeed = 45, \ + .baseSpAttack = 50, \ + .baseSpDefense = 80, \ + .catchRate = 75, \ + .expYield = 149, \ + .evYield_Defense = 2, \ + .itemRare = ITEM_THICK_CLUB, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, \ + .speciesName = _("Marowak"), \ + .cryId = CRY_MAROWAK, \ + .natDexNum = NATIONAL_DEX_MAROWAK, \ + .categoryName = _("Bone Keeper"), \ + .height = 10, \ + .pokemonScale = 293, \ + .pokemonOffset = 12, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Marowak, \ + .formSpeciesIdTable = sMarowakFormSpeciesIdTable + + [SPECIES_MAROWAK] = + { + MAROWAK_MISC_INFO, + .types = { TYPE_GROUND, TYPE_GROUND }, + .abilities = { ABILITY_ROCK_HEAD, ABILITY_LIGHTNING_ROD, ABILITY_BATTLE_ARMOR }, + .bodyColor = BODY_COLOR_BROWN, + .weight = 450, + .description = COMPOUND_STRING( + "A Marowak is the evolved form of a Cubone\n" + "that has grown tough by overcoming the\n" + "grief of losing its mother. Its tempered\n" + "and hardened spirit is not easily broken."), + FRONT_PIC(Marowak, 56, 64), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Marowak, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES, + BACK_PIC(Marowak, 48, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Marowak), + ICON(Marowak, 2), + LEARNSETS(Marowak), + }, + +#if P_ALOLAN_FORMS + [SPECIES_MAROWAK_ALOLAN] = + { + MAROWAK_MISC_INFO, + .types = { TYPE_FIRE, TYPE_GHOST }, + .abilities = { ABILITY_CURSED_BODY, ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD }, + .bodyColor = BODY_COLOR_PURPLE, + .weight = 340, + .description = COMPOUND_STRING( + "The cursed flames that light up the bone\n" + "carried by this Pokémon are said\n" + "to cause both mental and physical\n" + "pain that will never fade."), + FRONT_PIC(MarowakAlolan, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_MarowakAlolan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(MarowakAlolan, 56, 56), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(MarowakAlolan), + ICON(MarowakAlolan, 1), + LEARNSETS(MarowakAlolan), + .isAlolanForm = TRUE, + }, +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_CUBONE + +#if P_FAMILY_HITMONS +#if P_GEN_2_CROSS_EVOS + [SPECIES_TYROGUE] = + { + .baseHP = 35, + .baseAttack = 35, + .baseDefense = 35, + .baseSpeed = 35, + .baseSpAttack = 35, + .baseSpDefense = 35, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 75, + .expYield = 42, + .evYield_Attack = 1, + .genderRatio = MON_MALE, + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_GUTS, ABILITY_STEADFAST, ABILITY_VITAL_SPIRIT }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Tyrogue"), + .cryId = CRY_TYROGUE, + .natDexNum = NATIONAL_DEX_TYROGUE, + .categoryName = _("Scuffle"), + .height = 7, + .weight = 210, + .description = COMPOUND_STRING( + "Tyrogue become stressed out if they do\n" + "not get to train every day. When raising\n" + "this Pokémon, the Trainer must establish\n" + "a regular training schedule."), + .pokemonScale = 292, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Tyrogue, 40, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Tyrogue, + .frontAnimId = ANIM_BACK_AND_LUNGE, + BACK_PIC(Tyrogue, 48, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Tyrogue), + ICON(Tyrogue, 2), + .footprint = gMonFootprint_Tyrogue, + LEARNSETS(Tyrogue), + .evolutions = EVOLUTION({EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN}, + {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE}, + {EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP}), + }, +#endif //P_GEN_2_CROSS_EVOS + + [SPECIES_HITMONLEE] = + { + .baseHP = 50, + .baseAttack = 120, + .baseDefense = 53, + .baseSpeed = 87, + .baseSpAttack = 35, + .baseSpDefense = 110, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 159, + .evYield_Attack = 2, + .genderRatio = MON_MALE, + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_LIMBER, ABILITY_RECKLESS, ABILITY_UNBURDEN }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Hitmonlee"), + .cryId = CRY_HITMONLEE, + .natDexNum = NATIONAL_DEX_HITMONLEE, + .categoryName = _("Kicking"), + .height = 15, + .weight = 498, + .description = COMPOUND_STRING( + "Its legs freely stretch and contract.\n" + "Using these springlike limbs, it bowls over\n" + "foes with devastating kicks. After battle,\n" + "it rubs down its tired legs."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 259, + .trainerOffset = 1, + FRONT_PIC(Hitmonlee, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Hitmonlee, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + BACK_PIC(Hitmonlee, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Hitmonlee), + ICON(Hitmonlee, 2), + .footprint = gMonFootprint_Hitmonlee, + LEARNSETS(Hitmonlee), + }, + + [SPECIES_HITMONCHAN] = + { + .baseHP = 50, + .baseAttack = 105, + .baseDefense = 79, + .baseSpeed = 76, + .baseSpAttack = 35, + .baseSpDefense = 110, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 159, + .evYield_SpDefense = 2, + .genderRatio = MON_MALE, + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_IRON_FIST, ABILITY_INNER_FOCUS }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Hitmonchan"), + .cryId = CRY_HITMONCHAN, + .natDexNum = NATIONAL_DEX_HITMONCHAN, + .categoryName = _("Punching"), + .height = 14, + .weight = 502, + .description = COMPOUND_STRING( + "A Hitmonchan is said to possess the\n" + "spirit of a boxer who aimed to become the\n" + "world champion. Having an indomitable\n" + "spirit means that it will never give up."), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 277, + .trainerOffset = 2, + FRONT_PIC(Hitmonchan, 48, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Hitmonchan, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Hitmonchan, 56, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Hitmonchan), + ICON(Hitmonchan, 2), + .footprint = gMonFootprint_Hitmonchan, + LEARNSETS(Hitmonchan), + }, + +#if P_GEN_2_CROSS_EVOS + [SPECIES_HITMONTOP] = + { + .baseHP = 50, + .baseAttack = 95, + .baseDefense = 95, + .baseSpeed = 70, + .baseSpAttack = 35, + .baseSpDefense = 110, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 159, + .evYield_SpDefense = 2, + .genderRatio = MON_MALE, + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_TECHNICIAN, ABILITY_STEADFAST }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Hitmontop"), + .cryId = CRY_HITMONTOP, + .natDexNum = NATIONAL_DEX_HITMONTOP, + .categoryName = _("Handstand"), + .height = 14, + .weight = 480, + .description = COMPOUND_STRING( + "Its technique of kicking while spinning is\n" + "a remarkable mix of both offense and\n" + "defense. Hitmontop travel faster\n" + "spinning than they do walking."), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Hitmontop, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Hitmontop, + .frontAnimId = ANIM_SWING_CONCAVE, + BACK_PIC(Hitmontop, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + PALETTES(Hitmontop), + ICON(Hitmontop, 2), + .footprint = gMonFootprint_Hitmontop, + LEARNSETS(Hitmontop), + }, +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HITMONS + +#if P_FAMILY_LICKITUNG + [SPECIES_LICKITUNG] = + { + .baseHP = 90, + .baseAttack = 55, + .baseDefense = 75, + .baseSpeed = 30, + .baseSpAttack = 60, + .baseSpDefense = 75, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 45, + .expYield = 77, + .evYield_HP = 2, + .itemRare = ITEM_LAGGING_TAIL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, + .abilities = { ABILITY_OWN_TEMPO, ABILITY_OBLIVIOUS, ABILITY_CLOUD_NINE }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Lickitung"), + .cryId = CRY_LICKITUNG, + .natDexNum = NATIONAL_DEX_LICKITUNG, + .categoryName = _("Licking"), + .height = 12, + .weight = 655, + .description = COMPOUND_STRING( + "Whenever it sees something unfamiliar,\n" + "it always licks the object because it\n" + "memorizes things by texture and taste.\n" + "It is somewhat put off by sour things."), + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Lickitung, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Lickitung, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Lickitung, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Lickitung), + ICON(Lickitung, 0), + .footprint = gMonFootprint_Lickitung, + LEARNSETS(Lickitung), + .evolutions = EVOLUTION({EVO_MOVE, MOVE_ROLLOUT, SPECIES_LICKILICKY}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_LICKILICKY] = + { + .baseHP = 110, + .baseAttack = 85, + .baseDefense = 95, + .baseSpeed = 50, + .baseSpAttack = 80, + .baseSpDefense = 95, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 30, + .expYield = 180, + .evYield_HP = 3, + .itemRare = ITEM_LAGGING_TAIL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, + .abilities = { ABILITY_OWN_TEMPO, ABILITY_OBLIVIOUS, ABILITY_CLOUD_NINE }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Lickilicky"), + .cryId = CRY_LICKILICKY, + .natDexNum = NATIONAL_DEX_LICKILICKY, + .categoryName = _("Licking"), + .height = 17, + .weight = 1400, + .description = COMPOUND_STRING( + "The long tongue is always soggy with\n" + "slobber. The saliva contains a solvent\n" + "that causes numbness. Getting too close\n" + "to it will leave you soaked with drool."), + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 1, + FRONT_PIC(Lickilicky, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Lickilicky, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Lickilicky, 64, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Lickilicky), + ICON(Lickilicky, 1), + .footprint = gMonFootprint_Lickilicky, + LEARNSETS(Lickilicky), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_LICKITUNG + +#if P_FAMILY_KOFFING + [SPECIES_KOFFING] = + { + .baseHP = 40, + .baseAttack = 65, + .baseDefense = 95, + .baseSpeed = 35, + .baseSpAttack = 60, + .baseSpDefense = 45, + .types = { TYPE_POISON, TYPE_POISON }, + .catchRate = 190, + .expYield = 68, + .evYield_Defense = 1, + .itemRare = ITEM_SMOKE_BALL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + #if P_UPDATED_ABILITIES >= GEN_8 + .abilities = { ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_STENCH }, + #else + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + #endif + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Koffing"), + .cryId = CRY_KOFFING, + .natDexNum = NATIONAL_DEX_KOFFING, + .categoryName = _("Poison Gas"), + .height = 6, + .weight = 10, + .description = COMPOUND_STRING( + "Getting up close to a Koffing will give\n" + "you a chance to observe, through its thin\n" + "skin, the toxic gases swirling inside. It\n" + "blows up at the slightest stimulation."), + .pokemonScale = 369, + .pokemonOffset = -1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Koffing, 56, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Koffing, + .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, + .enemyMonElevation = 14, + BACK_PIC(Koffing, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_GROW, + PALETTES(Koffing), + ICON(Koffing, 2), + .footprint = gMonFootprint_Koffing, + LEARNSETS(Koffing), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_WEEZING}, + {EVO_NONE, 0, SPECIES_WEEZING_GALARIAN}), + }, + +#define WEEZING_MISC_INFO \ + .baseHP = 65, \ + .baseAttack = 90, \ + .baseDefense = 120, \ + .baseSpeed = 60, \ + .baseSpAttack = 85, \ + .baseSpDefense = 70, \ + .catchRate = 60, \ + .expYield = 172, \ + .evYield_Defense = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, \ + .noFlip = TRUE, \ + .speciesName = _("Weezing"), \ + .cryId = CRY_WEEZING, \ + .natDexNum = NATIONAL_DEX_WEEZING, \ + .categoryName = _("Poison Gas"), \ + .footprint = gMonFootprint_Weezing, \ + .formSpeciesIdTable = sWeezingFormSpeciesIdTable + + [SPECIES_WEEZING] = + { + WEEZING_MISC_INFO, + .types = { TYPE_POISON, TYPE_POISON }, + .itemRare = ITEM_SMOKE_BALL, + #if P_UPDATED_ABILITIES >= GEN_8 + .abilities = { ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_STENCH }, + #else + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + #endif + .bodyColor = BODY_COLOR_PURPLE, + .height = 12, + .weight = 95, + .description = COMPOUND_STRING( + "By diluting its toxic gases with a special\n" + "process, the highest grade of perfume can\n" + "be extracted. To Weezing, gases emanating\n" + "from garbage are the ultimate feast."), + .pokemonScale = 305, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Weezing, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Weezing, + .frontAnimId = ANIM_V_SLIDE, + .enemyMonElevation = 3, + BACK_PIC(Weezing, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_GROW, + PALETTES(Weezing), + ICON(Weezing, 2), + LEARNSETS(Weezing), + }, + +#if P_GALARIAN_FORMS + [SPECIES_WEEZING_GALARIAN] = + { + WEEZING_MISC_INFO, + .types = { TYPE_POISON, TYPE_FAIRY }, + .itemRare = ITEM_MISTY_SEED, + .abilities = { ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_MISTY_SURGE }, + .bodyColor = BODY_COLOR_GRAY, + .isGalarianForm = TRUE, + .height = 30, + .weight = 160, + .description = COMPOUND_STRING( + "Long ago, when droves of factories fouled\n" + "the air with pollution, it changed into this\n" + "form for some reason. It consumes air\n" + "pollutant particles, expelling clean air."), + .pokemonScale = 305, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(WeezingGalarian, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_WeezingGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 6, + BACK_PIC(WeezingGalarian, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(WeezingGalarian), + ICON(WeezingGalarian, 1), + LEARNSETS(WeezingGalarian), + }, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_KOFFING + +#if P_FAMILY_RHYHORN + [SPECIES_RHYHORN] = + { + .baseHP = 80, + .baseAttack = 85, + .baseDefense = 95, + .baseSpeed = 25, + .baseSpAttack = 30, + .baseSpDefense = 30, + .types = { TYPE_GROUND, TYPE_ROCK }, + .catchRate = 120, + .expYield = 69, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD }, + .abilities = { ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD, ABILITY_RECKLESS }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Rhyhorn"), + .cryId = CRY_RHYHORN, + .natDexNum = NATIONAL_DEX_RHYHORN, + .categoryName = _("Spikes"), + .height = 10, + .weight = 1150, + .description = COMPOUND_STRING( + "Once it starts running, it doesn't stop.\n" + "Its tiny brain makes it so stupid that it\n" + "can't remember why it started running in\n" + "the first place."), + .pokemonScale = 267, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Rhyhorn, 56, 40), + FRONT_PIC_FEMALE(Rhyhorn, 56, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Rhyhorn, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Rhyhorn, 64, 48), + BACK_PIC_FEMALE(Rhyhorn, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Rhyhorn), + ICON(Rhyhorn, 1), + .footprint = gMonFootprint_Rhyhorn, + LEARNSETS(Rhyhorn), + .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_RHYDON}), + }, + + [SPECIES_RHYDON] = + { + .baseHP = 105, + .baseAttack = 130, + .baseDefense = 120, + .baseSpeed = 40, + .baseSpAttack = 45, + .baseSpDefense = 45, + .types = { TYPE_GROUND, TYPE_ROCK }, + .catchRate = 60, + .expYield = 170, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD }, + .abilities = { ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD, ABILITY_RECKLESS }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Rhydon"), + .cryId = CRY_RHYDON, + .natDexNum = NATIONAL_DEX_RHYDON, + .categoryName = _("Drill"), + .height = 19, + .weight = 1200, + .description = COMPOUND_STRING( + "Its horn, which rotates like a drill,\n" + "destroys tall buildings with one strike.\n" + "It stands on its hind legs, and its brain\n" + "is well developed."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 299, + .trainerOffset = 2, + FRONT_PIC(Rhydon, 64, 56), + FRONT_PIC_FEMALE(Rhydon, 64, 56), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Rhydon, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Rhydon, 64, 56), + BACK_PIC_FEMALE(Rhydon, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Rhydon), + ICON(Rhydon, 1), + .footprint = gMonFootprint_Rhydon, + LEARNSETS(Rhydon), + .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}, + {EVO_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_RHYPERIOR] = + { + .baseHP = 115, + .baseAttack = 140, + .baseDefense = 130, + .baseSpeed = 40, + .baseSpAttack = 55, + .baseSpDefense = 55, + .types = { TYPE_GROUND, TYPE_ROCK }, + .catchRate = 30, + .expYield = 241, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD }, + .abilities = { ABILITY_LIGHTNING_ROD, ABILITY_SOLID_ROCK, ABILITY_RECKLESS }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Rhyperior"), + .cryId = CRY_RHYPERIOR, + .natDexNum = NATIONAL_DEX_RHYPERIOR, + .categoryName = _("Drill"), + .height = 24, + .weight = 2828, + .description = COMPOUND_STRING( + "It can launch a rock held in its hand\n" + "like a missile by tightening and then\n" + "expanding its muscles instantaneously.\n" + "Geodude are shot at rare times."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 369, + .trainerOffset = 7, + FRONT_PIC(Rhyperior, 64, 64), + FRONT_PIC_FEMALE(Rhyperior, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Rhyperior, + .frontAnimId = ANIM_V_SHAKE_TWICE, + BACK_PIC(Rhyperior, 64, 64), + BACK_PIC_FEMALE(Rhyperior, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Rhyperior), + ICON(Rhyperior, 0), + .footprint = gMonFootprint_Rhyperior, + LEARNSETS(Rhyperior), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RHYHORN + +#if P_FAMILY_CHANSEY +#if P_GEN_4_CROSS_EVOS + [SPECIES_HAPPINY] = + { + .baseHP = 100, + .baseAttack = 5, + .baseDefense = 5, + .baseSpeed = 30, + .baseSpAttack = 15, + .baseSpDefense = 65, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 130, + .expYield = 110, + .evYield_HP = 1, + .itemCommon = ITEM_OVAL_STONE, + .genderRatio = MON_FEMALE, + .eggCycles = 40, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_NATURAL_CURE, ABILITY_SERENE_GRACE, ABILITY_FRIEND_GUARD }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Happiny"), + .cryId = CRY_HAPPINY, + .natDexNum = NATIONAL_DEX_HAPPINY, + .categoryName = _("Playhouse"), + .height = 6, + .weight = 244, + .description = COMPOUND_STRING( + "It carries a round white rock in its\n" + "belly pouch. If it gets along well with\n" + "someone, it will sometimes give that\n" + "person the rock."), + .pokemonScale = 422, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Happiny, 32, 48), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Happiny, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Happiny, 48, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Happiny), + ICON(Happiny, 0), + .footprint = gMonFootprint_Happiny, + LEARNSETS(Happiny), + .evolutions = EVOLUTION({EVO_ITEM_HOLD_DAY, ITEM_OVAL_STONE, SPECIES_CHANSEY}, + {EVO_ITEM_DAY, ITEM_OVAL_STONE, SPECIES_CHANSEY}), + }, +#endif //P_GEN_4_CROSS_EVOS + + [SPECIES_CHANSEY] = + { + .baseHP = 250, + .baseAttack = 5, + .baseDefense = 5, + .baseSpeed = 50, + .baseSpAttack = 35, + .baseSpDefense = 105, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 30, + .expYield = 395, + .evYield_HP = 2, + .itemCommon = ITEM_LUCKY_PUNCH, + .genderRatio = MON_FEMALE, + .eggCycles = 40, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_NATURAL_CURE, ABILITY_SERENE_GRACE, ABILITY_HEALER }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Chansey"), + .cryId = CRY_CHANSEY, + .natDexNum = NATIONAL_DEX_CHANSEY, + .categoryName = _("Egg"), + .height = 11, + .weight = 346, + .description = COMPOUND_STRING( + "Chansey lay nutritionally excellent eggs\n" + "every day. The eggs are so delicious, they\n" + "are eagerly devoured by even those people\n" + "who have lost their appetite."), + .pokemonScale = 257, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Chansey, 56, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Chansey, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Chansey, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Chansey), + ICON(Chansey, 0), + .footprint = gMonFootprint_Chansey, + LEARNSETS(Chansey), + .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}), + }, + +#if P_GEN_2_CROSS_EVOS + [SPECIES_BLISSEY] = + { + .baseHP = 255, + .baseAttack = 10, + .baseDefense = 10, + .baseSpeed = 55, + .baseSpAttack = 75, + .baseSpDefense = 135, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 30, + .expYield = 608, + .evYield_HP = 3, + .itemRare = ITEM_LUCKY_EGG, + .genderRatio = MON_FEMALE, + .eggCycles = 40, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_NATURAL_CURE, ABILITY_SERENE_GRACE, ABILITY_HEALER }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Blissey"), + .cryId = CRY_BLISSEY, + .natDexNum = NATIONAL_DEX_BLISSEY, + .categoryName = _("Happiness"), + .height = 15, + .weight = 468, + .description = COMPOUND_STRING( + "If it senses sadness with its fluffy fur,\n" + "a Blissey will rush over to the sad person,\n" + "however far away, to share an egg of\n" + "happiness that brings a smile to any face."), + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 310, + .trainerOffset = 3, + FRONT_PIC(Blissey, 56, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Blissey, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Blissey, 64, 32), + .backPicYOffset = 16, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Blissey), + ICON(Blissey, 0), + .footprint = gMonFootprint_Blissey, + LEARNSETS(Blissey), + }, +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_CHANSEY + +#if P_FAMILY_TANGELA + [SPECIES_TANGELA] = + { + .baseHP = 65, + .baseAttack = 55, + .baseDefense = 115, + .baseSpeed = 60, + .baseSpAttack = 100, + .baseSpDefense = 40, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 87, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Tangela"), + .cryId = CRY_TANGELA, + .natDexNum = NATIONAL_DEX_TANGELA, + .categoryName = _("Vine"), + .height = 10, + .weight = 350, + .description = COMPOUND_STRING( + "Its vines snap off easily and painlessly\n" + "if they are grabbed, allowing it to make a\n" + "quick getaway. The lost vines are replaced\n" + "by new growth the very next day."), + .pokemonScale = 304, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Tangela, 48, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Tangela, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + BACK_PIC(Tangela, 64, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Tangela), + ICON(Tangela, 0), + .footprint = gMonFootprint_Tangela, + LEARNSETS(Tangela), + .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_TANGROWTH}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_TANGROWTH] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 125, + .baseSpeed = 50, + .baseSpAttack = 110, + .baseSpDefense = 50, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 30, + .expYield = 187, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Tangrowth"), + .cryId = CRY_TANGROWTH, + .natDexNum = NATIONAL_DEX_TANGROWTH, + .categoryName = _("Vine"), + .height = 20, + .weight = 1286, + .description = COMPOUND_STRING( + "It ensnares prey by extending arms made\n" + "of vines. Even if one of its arms is eaten,\n" + "it's fine. The Pokémon regenerates quickly\n" + "and will go right back to normal."), + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, + FRONT_PIC(Tangrowth, 64, 64), + FRONT_PIC_FEMALE(Tangrowth, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Tangrowth, + .frontAnimId = ANIM_H_STRETCH, + BACK_PIC(Tangrowth, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_GROW, + PALETTES(Tangrowth), + ICON(Tangrowth, 0), + .footprint = gMonFootprint_Tangrowth, + LEARNSETS(Tangrowth), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TANGELA + +#if P_FAMILY_KANGASKHAN +#define KANGASKHAN_MISC_INFO \ + .types = { TYPE_NORMAL, TYPE_NORMAL }, \ + .catchRate = 45, \ + .evYield_HP = 2, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, \ + .bodyColor = BODY_COLOR_BROWN, \ + .speciesName = _("Kangaskhan"), \ + .natDexNum = NATIONAL_DEX_KANGASKHAN, \ + .categoryName = _("Parent"), \ + .height = 22, \ + .pokemonScale = 256, \ + .pokemonOffset = 0, \ + .trainerScale = 387, \ + .trainerOffset = 8, \ + .footprint = gMonFootprint_Kangaskhan, \ + LEARNSETS(Kangaskhan), \ + .formSpeciesIdTable = sKangaskhanFormSpeciesIdTable, \ + .formChangeTable = sKangaskhanFormChangeTable + + [SPECIES_KANGASKHAN] = + { + KANGASKHAN_MISC_INFO, + .baseHP = 105, + .baseAttack = 95, + .baseDefense = 80, + .baseSpeed = 90, + .baseSpAttack = 40, + .baseSpDefense = 80, + .expYield = 172, + .abilities = { ABILITY_EARLY_BIRD, ABILITY_SCRAPPY, ABILITY_INNER_FOCUS }, + .cryId = CRY_KANGASKHAN, + .weight = 800, + .description = COMPOUND_STRING( + "If you come across a young Kangaskhan\n" + "playing by itself, never try to catch it.\n" + "The baby's parent is sure to be in the area,\n" + "and it will become violently enraged."), + FRONT_PIC(Kangaskhan, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Kangaskhan, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Kangaskhan, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Kangaskhan), + ICON(Kangaskhan, 2), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_KANGASKHAN_MEGA] = + { + KANGASKHAN_MISC_INFO, + .baseHP = 105, + .baseAttack = 125, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 60, + .baseSpDefense = 100, + .expYield = 207, + .abilities = { ABILITY_PARENTAL_BOND, ABILITY_PARENTAL_BOND, ABILITY_PARENTAL_BOND }, + .isMegaEvolution = TRUE, + .cryId = CRY_KANGASKHAN_MEGA, + .weight = 1000, + .description = COMPOUND_STRING( + "When the mother sees the back of her\n" + "Mega-Evolved child, it makes her think\n" + "of the day when her child will inevitably\n" + "leave her."), + FRONT_PIC(KangaskhanMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_KangaskhanMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(KangaskhanMega, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(KangaskhanMega), + ICON(KangaskhanMega, 2), + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_KANGASKHAN + +#if P_FAMILY_HORSEA + [SPECIES_HORSEA] = + { + .baseHP = 30, + .baseAttack = 40, + .baseDefense = 70, + .baseSpeed = 60, + .baseSpAttack = 70, + .baseSpDefense = 25, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 225, + .expYield = 59, + .evYield_SpAttack = 1, + .itemRare = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_SNIPER, ABILITY_DAMP }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Horsea"), + .cryId = CRY_HORSEA, + .natDexNum = NATIONAL_DEX_HORSEA, + .categoryName = _("Dragon"), + .height = 4, + .weight = 80, + .description = COMPOUND_STRING( + "By cleverly flicking the fins on its back\n" + "side to side, it moves in any direction\n" + "while facing forward. It spits ink to\n" + "escape if it senses danger."), + .pokemonScale = 399, + .pokemonOffset = -1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Horsea, 32, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Horsea, + .frontAnimId = ANIM_V_JUMPS_SMALL, + BACK_PIC(Horsea, 48, 40), + .backPicYOffset = 14, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Horsea), + ICON(Horsea, 0), + .footprint = gMonFootprint_Horsea, + LEARNSETS(Horsea), + .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_SEADRA}), + }, + + [SPECIES_SEADRA] = + { + .baseHP = 55, + .baseAttack = 65, + .baseDefense = 95, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 45, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 75, + .expYield = 154, + .evYield_Defense = 1, + .evYield_SpAttack = 1, + .itemRare = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_POISON_POINT, ABILITY_SNIPER, ABILITY_DAMP }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Seadra"), + .cryId = CRY_SEADRA, + .natDexNum = NATIONAL_DEX_SEADRA, + .categoryName = _("Dragon"), + .height = 12, + .weight = 250, + .description = COMPOUND_STRING( + "The poisonous barbs all over its body are\n" + "highly valued as ingredients for making\n" + "traditional herbal medicine. It shows no\n" + "mercy to anything approaching its nest."), + .pokemonScale = 299, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Seadra, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Seadra, + .frontAnimId = ANIM_V_SLIDE, + BACK_PIC(Seadra, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Seadra), + ICON(Seadra, 0), + .footprint = gMonFootprint_Seadra, + LEARNSETS(Seadra), + .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}, + {EVO_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}), + }, + +#if P_GEN_2_CROSS_EVOS + [SPECIES_KINGDRA] = + { + .baseHP = 75, + .baseAttack = 95, + .baseDefense = 95, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 95, + .types = { TYPE_WATER, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 243, + .evYield_Attack = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .itemRare = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_SNIPER, ABILITY_DAMP }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Kingdra"), + .cryId = CRY_KINGDRA, + .natDexNum = NATIONAL_DEX_KINGDRA, + .categoryName = _("Dragon"), + .height = 18, + .weight = 1520, + .description = COMPOUND_STRING( + "It sleeps quietly, deep on the seafloor.\n" + "When it comes up to the surface, it\n" + "creates a huge whirlpool that can swallow\n" + "even ships."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 287, + .trainerOffset = 0, + FRONT_PIC(Kingdra, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Kingdra, + .frontAnimId = ANIM_CIRCLE_INTO_BG, + BACK_PIC(Kingdra, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(Kingdra), + ICON(Kingdra, 0), + .footprint = gMonFootprint_Kingdra, + LEARNSETS(Kingdra), + }, +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HORSEA + +#if P_FAMILY_GOLDEEN + [SPECIES_GOLDEEN] = + { + .baseHP = 45, + .baseAttack = 67, + .baseDefense = 60, + .baseSpeed = 63, + .baseSpAttack = 35, + .baseSpDefense = 50, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 225, + .expYield = 64, + .evYield_Attack = 1, + .itemRare = ITEM_MYSTIC_WATER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_WATER_VEIL, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Goldeen"), + .cryId = CRY_GOLDEEN, + .natDexNum = NATIONAL_DEX_GOLDEEN, + .categoryName = _("Goldfish"), + .height = 6, + .weight = 150, + .description = COMPOUND_STRING( + "In the springtime, schools of Goldeen\n" + "can be seen swimming up falls and rivers.\n" + "It metes out staggering damage with its\n" + "single horn."), + .pokemonScale = 379, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Goldeen, 64, 40), + FRONT_PIC_FEMALE(Goldeen, 64, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Goldeen, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + BACK_PIC(Goldeen, 64, 48), + BACK_PIC_FEMALE(Goldeen, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Goldeen), + ICON(Goldeen, 0), + .footprint = gMonFootprint_Goldeen, + LEARNSETS(Goldeen), + .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_SEAKING}), + }, + + [SPECIES_SEAKING] = + { + .baseHP = 80, + .baseAttack = 92, + .baseDefense = 65, + .baseSpeed = 68, + .baseSpAttack = 65, + .baseSpDefense = 80, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 60, + .expYield = 158, + .evYield_Attack = 2, + .itemRare = ITEM_MYSTIC_WATER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_WATER_VEIL, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Seaking"), + .cryId = CRY_SEAKING, + .natDexNum = NATIONAL_DEX_SEAKING, + .categoryName = _("Goldfish"), + .height = 13, + .weight = 390, + .description = COMPOUND_STRING( + "It punches holes in boulders on stream-\n" + "beds. This is a clever innovation that\n" + "prevents its eggs from being attacked or\n" + "washed away by the current."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Seaking, 64, 56), + FRONT_PIC_FEMALE(Seaking, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Seaking, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + BACK_PIC(Seaking, 64, 56), + BACK_PIC_FEMALE(Seaking, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Seaking), + ICON(Seaking, 0), + .footprint = gMonFootprint_Seaking, + LEARNSETS(Seaking), + }, +#endif //P_FAMILY_GOLDEEN + +#if P_FAMILY_STARYU + [SPECIES_STARYU] = + { + .baseHP = 30, + .baseAttack = 45, + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 70, + .baseSpDefense = 55, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 225, + .expYield = 68, + .evYield_Speed = 1, + .itemCommon = ITEM_STARDUST, + .itemRare = ITEM_STAR_PIECE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_ILLUMINATE, ABILITY_NATURAL_CURE, ABILITY_ANALYTIC }, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = TRUE, + .speciesName = _("Staryu"), + .cryId = CRY_STARYU, + .natDexNum = NATIONAL_DEX_STARYU, + .categoryName = _("Star Shape"), + .height = 8, + .weight = 345, + .description = COMPOUND_STRING( + "It gathers with others in the night and\n" + "makes its red core glow on and off with\n" + "the twinkling stars. It can regenerate\n" + "limbs if they are severed from its body."), + .pokemonScale = 326, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Staryu, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Staryu, + .frontAnimId = ANIM_TWIST_TWICE, + BACK_PIC(Staryu, 56, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Staryu), + ICON(Staryu, 2), + .footprint = gMonFootprint_Staryu, + LEARNSETS(Staryu), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}), + }, + + [SPECIES_STARMIE] = + { + .baseHP = 60, + .baseAttack = 75, + .baseDefense = 85, + .baseSpeed = 115, + .baseSpAttack = 100, + .baseSpDefense = 85, + .types = { TYPE_WATER, TYPE_PSYCHIC }, + .catchRate = 60, + .expYield = 182, + .evYield_Speed = 2, + .itemCommon = ITEM_STARDUST, + .itemRare = ITEM_STAR_PIECE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_ILLUMINATE, ABILITY_NATURAL_CURE, ABILITY_ANALYTIC }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Starmie"), + .cryId = CRY_STARMIE, + .natDexNum = NATIONAL_DEX_STARMIE, + .categoryName = _("Mysterious"), + .height = 11, + .weight = 800, + .description = COMPOUND_STRING( + "People in ancient times imagined that\n" + "Starmie were transformed from the\n" + "reflections of stars that twinkled on\n" + "gentle waves at night."), + .pokemonScale = 301, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Starmie, 56, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Starmie, + .frontAnimId = ANIM_TWIST, + BACK_PIC(Starmie, 64, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(Starmie), + ICON(Starmie, 2), + .footprint = gMonFootprint_Starmie, + LEARNSETS(Starmie), + }, +#endif //P_FAMILY_STARYU + +#if P_FAMILY_MR_MIME +#if P_GEN_4_CROSS_EVOS + [SPECIES_MIME_JR] = + { + .baseHP = 20, + .baseAttack = 25, + .baseDefense = 45, + .baseSpeed = 60, + .baseSpAttack = 70, + .baseSpDefense = 90, + #if P_UPDATED_TYPES >= GEN_6 + .types = { TYPE_PSYCHIC, TYPE_FAIRY }, + #else + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + #endif + .catchRate = 145, + .expYield = 62, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_SOUNDPROOF, ABILITY_FILTER, ABILITY_TECHNICIAN }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Mime Jr."), + .cryId = CRY_MIME_JR, + .natDexNum = NATIONAL_DEX_MIME_JR, + .categoryName = _("Mime"), + .height = 6, + .weight = 130, + .description = COMPOUND_STRING( + "In an attempt to confuse its enemy,\n" + "it mimics the enemy's movements.\n" + "Once mimicked, the foe cannot take\n" + "its eyes off this Pokémon."), + .pokemonScale = 422, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(MimeJr, 32, 56), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_MimeJr, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(MimeJr, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(MimeJr), + ICON(MimeJr, 0), + .footprint = gMonFootprint_MimeJr, + LEARNSETS(MimeJr), + .evolutions = EVOLUTION({EVO_MOVE, MOVE_MIMIC, SPECIES_MR_MIME}, + {EVO_NONE, 0, SPECIES_MR_MIME_GALARIAN}), + }, +#endif //P_GEN_4_CROSS_EVOS + +#define MR_MIME_MISC_INFO \ + .catchRate = 45, \ + .expYield = 161, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE },\ + .speciesName = _("Mr. Mime"), \ + .cryId = CRY_MR_MIME, \ + .natDexNum = NATIONAL_DEX_MR_MIME, \ + .footprint = gMonFootprint_MrMime, \ + .formSpeciesIdTable = sMrMimeFormSpeciesIdTable + + [SPECIES_MR_MIME] = + { + MR_MIME_MISC_INFO, + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 65, + .baseSpeed = 90, + .baseSpAttack = 100, + .baseSpDefense = 120, + #if P_UPDATED_TYPES >= GEN_6 + .types = { TYPE_PSYCHIC, TYPE_FAIRY }, + #else + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + #endif + .evYield_SpDefense = 2, + .abilities = { ABILITY_SOUNDPROOF, ABILITY_FILTER, ABILITY_TECHNICIAN }, + .bodyColor = BODY_COLOR_PINK, + .categoryName = _("Barrier"), + .height = 13, + .weight = 545, + .description = COMPOUND_STRING( + "A Mr. Mime is a master of pantomime. It can\n" + "convince others that something unseeable\n" + "actually exists. Once believed, the\n" + "imaginary object does become real."), + .pokemonScale = 258, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(MrMime, 56, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_MrMime, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(MrMime, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(MrMime), + ICON(MrMime, 0), + LEARNSETS(MrMime), + }, + +#if P_GALARIAN_FORMS + [SPECIES_MR_MIME_GALARIAN] = + { + MR_MIME_MISC_INFO, + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 100, + .baseSpAttack = 90, + .baseSpDefense = 90, + .types = { TYPE_ICE, TYPE_PSYCHIC }, + .evYield_Speed = 2, + .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_SCREEN_CLEANER, ABILITY_ICE_BODY }, + .bodyColor = BODY_COLOR_WHITE, + .categoryName = _("Dancing"), + .height = 14, + .weight = 568, + .description = COMPOUND_STRING( + "Its talent is tap-dancing. It can radiate\n" + "chilliness from the bottoms of its feet to\n" + "to create a floor of ice, which this\n" + "Pokémon can kick up to use as a barrier."), + .pokemonScale = 258, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(MrMimeGalarian, 56, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_MrMimeGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(MrMimeGalarian, 64, 48), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(MrMimeGalarian), + ICON(MrMimeGalarian, 0), + LEARNSETS(MrMimeGalarian), + .isGalarianForm = TRUE, + .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_MR_RIME}), + }, + + [SPECIES_MR_RIME] = + { + .baseHP = 80, + .baseAttack = 85, + .baseDefense = 75, + .baseSpeed = 70, + .baseSpAttack = 110, + .baseSpDefense = 100, + .types = { TYPE_ICE, TYPE_PSYCHIC }, + .catchRate = 45, + .expYield = 182, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_TANGLED_FEET, ABILITY_SCREEN_CLEANER, ABILITY_ICE_BODY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Mr. Rime"), + .cryId = CRY_MR_RIME, + .natDexNum = NATIONAL_DEX_MR_RIME, + .categoryName = _("Comedian"), + .height = 15, + .weight = 582, + .description = COMPOUND_STRING( + "It's highly skilled at tap-dancing. It\n" + "waves its cane of ice in time with its\n" + "graceful movements."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(MrRime, 56, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_MrRime, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(MrRime, 64, 56), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(MrRime), + ICON(MrRime, 0), + .footprint = gMonFootprint_MrRime, + LEARNSETS(MrRime), + }, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MR_MIME + +#if P_FAMILY_SCYTHER + [SPECIES_SCYTHER] = + { + .baseHP = 70, + .baseAttack = 110, + .baseDefense = 80, + .baseSpeed = 105, + .baseSpAttack = 55, + .baseSpDefense = 80, + .types = { TYPE_BUG, TYPE_FLYING }, + .catchRate = 45, + .expYield = 100, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_TECHNICIAN, ABILITY_STEADFAST }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Scyther"), + .cryId = CRY_SCYTHER, + .natDexNum = NATIONAL_DEX_SCYTHER, + .categoryName = _("Mantis"), + .height = 15, + .weight = 560, + .description = COMPOUND_STRING( + "Its blindingly fast speed adds to the\n" + "sharpness of its twin forearm scythes.\n" + "The scythes can slice through thick logs\n" + "in one wicked stroke."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 293, + .trainerOffset = 2, + FRONT_PIC(Scyther, 56, 64), + FRONT_PIC_FEMALE(Scyther, 56, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Scyther, + .frontAnimId = ANIM_H_VIBRATE, + .frontAnimDelay = 10, + BACK_PIC(Scyther, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Scyther), + ICON(Scyther, 1), + .footprint = gMonFootprint_Scyther, + LEARNSETS(Scyther), + .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}, + {EVO_ITEM, ITEM_BLACK_AUGURITE, SPECIES_KLEAVOR}, + {EVO_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}), + }, + +#if P_GEN_2_CROSS_EVOS +#define SCIZOR_MISC_INFO \ + .types = { TYPE_BUG, TYPE_STEEL }, \ + .catchRate = 25, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, \ + .bodyColor = BODY_COLOR_RED, \ + .speciesName = _("Scizor"), \ + .natDexNum = NATIONAL_DEX_SCIZOR, \ + .categoryName = _("Pincer"), \ + .footprint = gMonFootprint_Scizor, \ + LEARNSETS(Scizor), \ + .formSpeciesIdTable = sScizorFormSpeciesIdTable,\ + .formChangeTable = sScizorFormChangeTable + + [SPECIES_SCIZOR] = + { + SCIZOR_MISC_INFO, + .baseHP = 70, + .baseAttack = 130, + .baseDefense = 100, + .baseSpeed = 65, + .baseSpAttack = 55, + .baseSpDefense = 80, + .expYield = 175, + .abilities = { ABILITY_SWARM, ABILITY_TECHNICIAN, ABILITY_LIGHT_METAL }, + .cryId = CRY_SCIZOR, + .height = 18, + .weight = 1180, + .description = COMPOUND_STRING( + "A Scizor has a body with the hardness of\n" + "steel. It is not easily fazed by ordinary\n" + "sorts of attacks. It flaps its wings to\n" + "regulate its body temperature."), + .pokemonScale = 278, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Scizor, 64, 64), + FRONT_PIC_FEMALE(Scizor, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Scizor, + .frontAnimId = ANIM_H_VIBRATE, + .frontAnimDelay = 19, + BACK_PIC(Scizor, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Scizor), + ICON(Scizor, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_SCIZOR_MEGA] = + { + SCIZOR_MISC_INFO, + .baseHP = 70, + .baseAttack = 150, + .baseDefense = 140, + .baseSpeed = 75, + .baseSpAttack = 65, + .baseSpDefense = 100, + .expYield = 210, + .abilities = { ABILITY_TECHNICIAN, ABILITY_TECHNICIAN, ABILITY_TECHNICIAN }, + .isMegaEvolution = TRUE, + .cryId = CRY_SCIZOR_MEGA, + .height = 20, + .weight = 1250, + .description = COMPOUND_STRING( + "The excess energy that bathes this\n" + "Pokémon keeps it in constant danger of\n" + "overflow. It can't sustain a battle over\n" + "long periods of time."), + .pokemonScale = 278, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(ScizorMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_ScizorMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ScizorMega, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(ScizorMega), + ICON(ScizorMega, 0), + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_2_CROSS_EVOS + +#if P_GEN_8_CROSS_EVOS + [SPECIES_KLEAVOR] = + { + .baseHP = 70, + .baseAttack = 135, + .baseDefense = 95, + .baseSpeed = 85, + .baseSpAttack = 45, + .baseSpDefense = 70, + .types = { TYPE_BUG, TYPE_ROCK }, + .catchRate = 15, + .expYield = 175, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_SHEER_FORCE, ABILITY_SHARPNESS }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Kleavor"), + .cryId = CRY_KLEAVOR, + .natDexNum = NATIONAL_DEX_KLEAVOR, + .categoryName = _("Axe"), + .height = 18, + .weight = 890, + .description = COMPOUND_STRING( + "A violent creature that fells trees with\n" + "its crude axes and shields itself with hard\n" + "stone. Should one encounter this Pokémon\n" + "in the wild, one's only recourse is to flee."), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + FRONT_PIC(Kleavor, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Kleavor, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Kleavor, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Kleavor), + ICON(Kleavor, 2), + //.footprint = gMonFootprint_Kleavor, + LEARNSETS(Kleavor), + }, +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_SCYTHER + +#if P_FAMILY_JYNX +#if P_GEN_2_CROSS_EVOS + [SPECIES_SMOOCHUM] = + { + .baseHP = 45, + .baseAttack = 30, + .baseDefense = 15, + .baseSpeed = 65, + .baseSpAttack = 85, + .baseSpDefense = 65, + .types = { TYPE_ICE, TYPE_PSYCHIC }, + .catchRate = 45, + .expYield = 61, + .evYield_SpAttack = 1, + .genderRatio = MON_FEMALE, + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_OBLIVIOUS, ABILITY_FOREWARN, ABILITY_HYDRATION }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Smoochum"), + .cryId = CRY_SMOOCHUM, + .natDexNum = NATIONAL_DEX_SMOOCHUM, + .categoryName = _("Kiss"), + .height = 4, + .weight = 60, + .description = COMPOUND_STRING( + "It actively runs about, but also falls\n" + "often. Whenever it falls, it will check its\n" + "reflection on a lake's surface to make\n" + "sure its face hasn't become dirty."), + .pokemonScale = 440, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Smoochum, 32, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Smoochum, + .frontAnimId = ANIM_GROW_VIBRATE, + .frontAnimDelay = 40, + BACK_PIC(Smoochum, 40, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Smoochum), + ICON(Smoochum, 1), + .footprint = gMonFootprint_Smoochum, + LEARNSETS(Smoochum), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_JYNX}), + }, +#endif //P_GEN_2_CROSS_EVOS + + [SPECIES_JYNX] = + { + .baseHP = 65, + .baseAttack = 50, + .baseDefense = 35, + .baseSpeed = 95, + .baseSpAttack = 115, + .baseSpDefense = 95, + .types = { TYPE_ICE, TYPE_PSYCHIC }, + .catchRate = 45, + .expYield = 159, + .evYield_SpAttack = 2, + .genderRatio = MON_FEMALE, + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_OBLIVIOUS, ABILITY_FOREWARN, ABILITY_DRY_SKIN }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Jynx"), + .cryId = CRY_JYNX, + .natDexNum = NATIONAL_DEX_JYNX, + .categoryName = _("Human Shape"), + .height = 14, + .weight = 406, + .description = COMPOUND_STRING( + "A Jynx sashays rhythmically as if it were\n" + "dancing. Its motions are so bouncingly\n" + "alluring, people seeing it are compelled to\n" + "shake their hips without noticing."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 300, + .trainerOffset = 1, + FRONT_PIC(Jynx, 64, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Jynx, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Jynx, 56, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Jynx), + ICON(Jynx, 2), + .footprint = gMonFootprint_Jynx, + LEARNSETS(Jynx), + }, +#endif //P_FAMILY_JYNX + +#if P_FAMILY_ELECTABUZZ +#if P_GEN_2_CROSS_EVOS + [SPECIES_ELEKID] = + { + .baseHP = 45, + .baseAttack = 63, + .baseDefense = 37, + .baseSpeed = 95, + .baseSpAttack = 65, + .baseSpDefense = 55, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 45, + .expYield = 72, + .evYield_Speed = 1, + .itemRare = ITEM_ELECTIRIZER, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_VITAL_SPIRIT }, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = TRUE, + .speciesName = _("Elekid"), + .cryId = CRY_ELEKID, + .natDexNum = NATIONAL_DEX_ELEKID, + .categoryName = _("Electric"), + .height = 6, + .weight = 235, + .description = COMPOUND_STRING( + "If it touches metal and discharges the\n" + "electricity it has stored in its body, an\n" + "Elekid begins swinging its arms in circles\n" + "to recharge itself."), + .pokemonScale = 363, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Elekid, 48, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Elekid, + .frontAnimId = ANIM_FLASH_YELLOW, + BACK_PIC(Elekid, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Elekid), + ICON(Elekid, 1), + .footprint = gMonFootprint_Elekid, + LEARNSETS(Elekid), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ELECTABUZZ}), + }, +#endif //P_GEN_2_CROSS_EVOS + + [SPECIES_ELECTABUZZ] = + { + .baseHP = 65, + .baseAttack = 83, + .baseDefense = 57, + .baseSpeed = 105, + .baseSpAttack = 95, + .baseSpDefense = 85, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 45, + .expYield = 172, + .evYield_Speed = 2, + .itemRare = ITEM_ELECTIRIZER, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_VITAL_SPIRIT }, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = TRUE, + .speciesName = _("Electabuzz"), + .cryId = CRY_ELECTABUZZ, + .natDexNum = NATIONAL_DEX_ELECTABUZZ, + .categoryName = _("Electric"), + .height = 11, + .weight = 300, + .description = COMPOUND_STRING( + "When a storm approaches, it competes with\n" + "others to scale heights that are likely to\n" + "be stricken by lightning. Some towns use\n" + "Electabuzz in place of lightning rods."), + .pokemonScale = 351, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Electabuzz, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Electabuzz, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW, + BACK_PIC(Electabuzz, 64, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(Electabuzz), + ICON(Electabuzz, 1), + .footprint = gMonFootprint_Electabuzz, + LEARNSETS(Electabuzz), + .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}, + {EVO_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_ELECTIVIRE] = + { + .baseHP = 75, + .baseAttack = 123, + .baseDefense = 67, + .baseSpeed = 95, + .baseSpAttack = 95, + .baseSpDefense = 85, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 30, + .expYield = 243, + .evYield_Attack = 3, + .itemRare = ITEM_ELECTIRIZER, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_MOTOR_DRIVE, ABILITY_NONE, ABILITY_VITAL_SPIRIT }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Electivire"), + .cryId = CRY_ELECTIVIRE, + .natDexNum = NATIONAL_DEX_ELECTIVIRE, + .categoryName = _("Thunderbolt"), + .height = 18, + .weight = 1386, + .description = COMPOUND_STRING( + "When it gets excited, it thumps its chest.\n" + "With every thud, thunder roars, electric\n" + "sparks shower all around and blue sparks\n" + "begin to crackle between its horns."), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + FRONT_PIC(Electivire, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Electivire, + .frontAnimId = ANIM_GLOW_YELLOW, + BACK_PIC(Electivire, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(Electivire), + ICON(Electivire, 1), + .footprint = gMonFootprint_Electivire, + LEARNSETS(Electivire), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ELECTABUZZ + +#if P_FAMILY_MAGMAR +#if P_GEN_2_CROSS_EVOS + [SPECIES_MAGBY] = + { + .baseHP = 45, + .baseAttack = 75, + .baseDefense = 37, + .baseSpeed = 83, + .baseSpAttack = 70, + .baseSpDefense = 55, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 73, + .evYield_Speed = 1, + .itemRare = ITEM_MAGMARIZER, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_VITAL_SPIRIT }, + .bodyColor = BODY_COLOR_RED, + .noFlip = TRUE, + .speciesName = _("Magby"), + .cryId = CRY_MAGBY, + .natDexNum = NATIONAL_DEX_MAGBY, + .categoryName = _("Live Coal"), + .height = 7, + .weight = 214, + .description = COMPOUND_STRING( + "If a Magby is spouting yellow flames from\n" + "its mouth, it is in good health. When it is\n" + "fatigued, black smoke will be mixed in with\n" + "the flames."), + .pokemonScale = 284, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Magby, 32, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Magby, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Magby, 40, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Magby), + ICON(Magby, 0), + .footprint = gMonFootprint_Magby, + LEARNSETS(Magby), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MAGMAR}), + }, +#endif //P_GEN_2_CROSS_EVOS + + [SPECIES_MAGMAR] = + { + .baseHP = 65, + .baseAttack = 95, + .baseDefense = 57, + .baseSpeed = 93, + .baseSpAttack = 100, + .baseSpDefense = 85, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 173, + .evYield_SpAttack = 2, + .itemRare = ITEM_MAGMARIZER, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_VITAL_SPIRIT }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Magmar"), + .cryId = CRY_MAGMAR, + .natDexNum = NATIONAL_DEX_MAGMAR, + .categoryName = _("Spitfire"), + .height = 13, + .weight = 445, + .description = COMPOUND_STRING( + "In battle, it blows out intense flames from\n" + "all over its body to intimidate its foe.\n" + "These fiery bursts create heat waves that\n" + "ignite grass and trees in the area."), + .pokemonScale = 277, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Magmar, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Magmar, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Magmar, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Magmar), + ICON(Magmar, 0), + .footprint = gMonFootprint_Magmar, + LEARNSETS(Magmar), + .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}, + {EVO_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_MAGMORTAR] = + { + .baseHP = 75, + .baseAttack = 95, + .baseDefense = 67, + .baseSpeed = 83, + .baseSpAttack = 125, + .baseSpDefense = 95, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 30, + .expYield = 243, + .evYield_SpAttack = 3, + .itemRare = ITEM_MAGMARIZER, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_VITAL_SPIRIT }, + .bodyColor = BODY_COLOR_RED, + .noFlip = TRUE, + .speciesName = _("Magmortar"), + .cryId = CRY_MAGMORTAR, + .natDexNum = NATIONAL_DEX_MAGMORTAR, + .categoryName = _("Blast"), + .height = 16, + .weight = 680, + .description = COMPOUND_STRING( + "According to what is known, a single pair\n" + "of male and female Magmortar lives in\n" + "one volcano. From its arm, it launches\n" + "fireballs hotter than 3,600ºF."), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + FRONT_PIC(Magmortar, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Magmortar, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Magmortar, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Magmortar), + ICON(Magmortar, 0), + .footprint = gMonFootprint_Magmortar, + LEARNSETS(Magmortar), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGMAR + +#if P_FAMILY_PINSIR +#define PINSIR_MISC_INFO \ + .catchRate = 45, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, \ + .bodyColor = BODY_COLOR_BROWN, \ + .speciesName = _("Pinsir"), \ + .natDexNum = NATIONAL_DEX_PINSIR, \ + .categoryName = _("Stag Beetle"), \ + .footprint = gMonFootprint_Pinsir, \ + LEARNSETS(Pinsir), \ + .formSpeciesIdTable = sPinsirFormSpeciesIdTable,\ + .formChangeTable = sPinsirFormChangeTable + + [SPECIES_PINSIR] = + { + PINSIR_MISC_INFO, + .baseHP = 65, + .baseAttack = 125, + .baseDefense = 100, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 70, + .types = { TYPE_BUG, TYPE_BUG }, + .expYield = 175, + .abilities = { ABILITY_HYPER_CUTTER, ABILITY_MOLD_BREAKER, ABILITY_MOXIE }, + .cryId = CRY_PINSIR, + .height = 15, + .weight = 550, + .description = COMPOUND_STRING( + "Their pincers are strong enough to\n" + "shatter thick logs. Because they dislike\n" + "cold, Pinsir burrow and sleep under\n" + "the ground on chilly nights."), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Pinsir, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Pinsir, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Pinsir, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Pinsir), + ICON(Pinsir, 2), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_PINSIR_MEGA] = + { + PINSIR_MISC_INFO, + .baseHP = 65, + .baseAttack = 155, + .baseDefense = 120, + .baseSpeed = 105, + .baseSpAttack = 65, + .baseSpDefense = 90, + .types = { TYPE_BUG, TYPE_FLYING }, + .expYield = 210, + .abilities = { ABILITY_AERILATE, ABILITY_AERILATE, ABILITY_AERILATE }, + .cryId = CRY_PINSIR_MEGA, + .height = 17, + .weight = 590, + .description = COMPOUND_STRING( + "The influence of Mega Evolution leaves it\n" + "in a state of constant excitement.\n" + "It pierces enemies with its two large\n" + "horns before shredding them."), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(PinsirMega, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_PinsirMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 4, + BACK_PIC(PinsirMega, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(PinsirMega), + ICON(PinsirMega, 2), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_PINSIR + +#if P_FAMILY_TAUROS +#define TAUROS_MISC_INFO \ + .baseHP = 75, \ + .baseAttack = 100, \ + .baseDefense = 95, \ + .baseSpeed = 110, \ + .baseSpAttack = 40, \ + .baseSpDefense = 70, \ + .catchRate = 45, \ + .expYield = 172, \ + .genderRatio = MON_MALE, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .speciesName = _("Tauros"), \ + .cryId = CRY_TAUROS, \ + .natDexNum = NATIONAL_DEX_TAUROS, \ + .categoryName = _("Wild Bull"), \ + .height = 14, \ + .pokemonScale = 256, \ + .pokemonOffset = 0, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Tauros, \ + .formSpeciesIdTable = sTaurosFormSpeciesIdTable + + [SPECIES_TAUROS] = + { + TAUROS_MISC_INFO, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .evYield_Attack = 1, + .evYield_Speed = 1, + .abilities = { ABILITY_INTIMIDATE, ABILITY_ANGER_POINT, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_BROWN, + .weight = 884, + .description = COMPOUND_STRING( + "It is not satisfied unless it is rampaging\n" + "at all times. If there is no opponent for\n" + "Tauros to battle, it will charge at thick\n" + "trees and knock them down to calm itself."), + FRONT_PIC(Tauros, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Tauros, + .frontAnimId = ANIM_V_SHAKE_TWICE, + .frontAnimDelay = 10, + BACK_PIC(Tauros, 64, 48), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Tauros), + ICON(Tauros, 2), + LEARNSETS(Tauros), + }, + +#if P_PALDEAN_FORMS + [SPECIES_TAUROS_PALDEAN_COMBAT_BREED] = + { + TAUROS_MISC_INFO, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .evYield_Attack = 2, + .abilities = { ABILITY_INTIMIDATE, ABILITY_ANGER_POINT, ABILITY_CUD_CHEW }, + .bodyColor = BODY_COLOR_BROWN, + .weight = 1150, + .description = COMPOUND_STRING( + "This Pokémon has a muscular body\n" + "and excels at close-quarters combat.\n" + "It uses its short horns to strike\n" + "the opponent’s weak spots."), + FRONT_PIC(TaurosPaldeanCombatBreed, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_TaurosPaldean, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(TaurosPaldeanCombatBreed, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(TaurosPaldeanCombatBreed), + ICON(TaurosPaldeanCombatBreed, 0), + LEARNSETS(TaurosPaldeanCombatBreed), + .isPaldeanForm = TRUE, + }, + + [SPECIES_TAUROS_PALDEAN_BLAZE_BREED] = + { + TAUROS_MISC_INFO, + .types = { TYPE_FIGHTING, TYPE_FIRE }, + .evYield_Attack = 2, + .abilities = { ABILITY_INTIMIDATE, ABILITY_ANGER_POINT, ABILITY_CUD_CHEW }, + .bodyColor = BODY_COLOR_BROWN, + .weight = 850, + .description = COMPOUND_STRING( + "When heated by fire energy, its horns can\n" + "get hotter than 1,800 degrees Fahrenheit.\n" + "Those gored by them will suffer\n" + "both wounds and burns."), + FRONT_PIC(TaurosPaldeanBlazeBreed, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_TaurosPaldean, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(TaurosPaldeanBlazeBreed, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(TaurosPaldeanBlazeBreed), + ICON(TaurosPaldeanBlazeBreed, 0), + LEARNSETS(TaurosPaldeanBlazeBreed), + .isPaldeanForm = TRUE, + }, + + [SPECIES_TAUROS_PALDEAN_AQUA_BREED] = + { + TAUROS_MISC_INFO, + .types = { TYPE_FIGHTING, TYPE_WATER }, + .evYield_Attack = 2, + .abilities = { ABILITY_INTIMIDATE, ABILITY_ANGER_POINT, ABILITY_CUD_CHEW }, + .bodyColor = BODY_COLOR_BROWN, + .weight = 1100, + .description = COMPOUND_STRING( + "This Pokémon blasts water from holes on\n" + "the tips of its horns--the high-pressure\n" + "jets pierce right through\n" + "Tauros’s enemies."), + FRONT_PIC(TaurosPaldeanAquaBreed, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_TaurosPaldean, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(TaurosPaldeanAquaBreed, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(TaurosPaldeanAquaBreed), + ICON(TaurosPaldeanAquaBreed, 0), + LEARNSETS(TaurosPaldeanAquaBreed), + .isPaldeanForm = TRUE, + }, +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_TAUROS + +#if P_FAMILY_MAGIKARP + [SPECIES_MAGIKARP] = + { + .baseHP = 20, + .baseAttack = 10, + .baseDefense = 55, + .baseSpeed = 80, + .baseSpAttack = 15, + .baseSpDefense = 20, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 255, + .expYield = 40, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 5, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_RATTLED }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Magikarp"), + .cryId = CRY_MAGIKARP, + .natDexNum = NATIONAL_DEX_MAGIKARP, + .categoryName = _("Fish"), + .height = 9, + .weight = 100, + .description = COMPOUND_STRING( + "Its swimming muscles are weak, so it is\n" + "easily washed away by currents. In places\n" + "where water pools, you can see many\n" + "Magikarp deposited there by the flow."), + .pokemonScale = 310, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Magikarp, 48, 56), + FRONT_PIC_FEMALE(Magikarp, 48, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Magikarp, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES, + BACK_PIC(Magikarp, 64, 56), + BACK_PIC_FEMALE(Magikarp, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Magikarp), + ICON(Magikarp, 0), + .footprint = gMonFootprint_Magikarp, + LEARNSETS(Magikarp), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_GYARADOS}), + }, + +#define GYARADOS_MISC_INFO \ + .catchRate = 45, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 5, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_DRAGON },\ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Gyarados"), \ + .natDexNum = NATIONAL_DEX_GYARADOS, \ + .categoryName = _("Atrocious"), \ + .height = 65, \ + .pokemonScale = 256, \ + .pokemonOffset = 6, \ + .trainerScale = 481, \ + .trainerOffset = 13, \ + .footprint = gMonFootprint_Gyarados, \ + LEARNSETS(Gyarados), \ + .formSpeciesIdTable = sGyaradosFormSpeciesIdTable, \ + .formChangeTable = sGyaradosFormChangeTable + + [SPECIES_GYARADOS] = + { + GYARADOS_MISC_INFO, + .baseHP = 95, + .baseAttack = 125, + .baseDefense = 79, + .baseSpeed = 81, + .baseSpAttack = 60, + .baseSpDefense = 100, + .types = { TYPE_WATER, TYPE_FLYING }, + .expYield = 189, + .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_MOXIE }, + .cryId = CRY_GYARADOS, + .weight = 2350, + .description = COMPOUND_STRING( + "It is an extremely vicious and violent\n" + "Pokémon. When humans begin to fight,\n" + "it will appear and burn everything to the\n" + "ground with intensely hot flames."), + FRONT_PIC(Gyarados, 64, 64), + FRONT_PIC_FEMALE(Gyarados, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Gyarados, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, + BACK_PIC(Gyarados, 64, 64), + BACK_PIC_FEMALE(Gyarados, 64, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Gyarados), + ICON(Gyarados, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_GYARADOS_MEGA] = + { + GYARADOS_MISC_INFO, + .baseHP = 95, + .baseAttack = 155, + .baseDefense = 109, + .baseSpeed = 81, + .baseSpAttack = 70, + .baseSpDefense = 130, + .types = { TYPE_WATER, TYPE_DARK }, + .expYield = 224, + .abilities = { ABILITY_MOLD_BREAKER, ABILITY_MOLD_BREAKER, ABILITY_MOLD_BREAKER }, + .cryId = CRY_GYARADOS_MEGA, + .weight = 3050, + .description = COMPOUND_STRING( + "Although it obeys its instinctive drive to\n" + "destroy everything within its reach, it\n" + "will respond to orders from a Trainer it\n" + "truly trusts."), + FRONT_PIC(GyaradosMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_GyaradosMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 6, + BACK_PIC(GyaradosMega, 64, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(GyaradosMega), + ICON(GyaradosMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAGIKARP + +#if P_FAMILY_LAPRAS +#define LAPRAS_MISC_INFO \ + .baseHP = 130, \ + .baseAttack = 85, \ + .baseDefense = 80, \ + .baseSpeed = 60, \ + .baseSpAttack = 85, \ + .baseSpDefense = 95, \ + .types = { TYPE_WATER, TYPE_ICE }, \ + .catchRate = 45, \ + .expYield = 187, \ + .evYield_HP = 2, \ + .itemCommon = ITEM_MYSTIC_WATER, \ + .itemRare = ITEM_MYSTIC_WATER, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 40, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1 }, \ + .abilities = { ABILITY_WATER_ABSORB, ABILITY_SHELL_ARMOR, ABILITY_HYDRATION }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Lapras"), \ + .cryId = CRY_LAPRAS, \ + .natDexNum = NATIONAL_DEX_LAPRAS, \ + .categoryName = _("Transport"), \ + .footprint = gMonFootprint_Lapras, \ + LEARNSETS(Lapras), \ + .formSpeciesIdTable = sLaprasFormSpeciesIdTable, \ + .formChangeTable = sLaprasFormChangeTable + + [SPECIES_LAPRAS] = + { + LAPRAS_MISC_INFO, + .height = 25, + .weight = 2200, + .description = COMPOUND_STRING( + "People have driven Lapras almost to the\n" + "point of extinction. In the evenings,\n" + "it is said to sing plaintively as it seeks\n" + "what few others of its kind still remain."), + .pokemonScale = 257, + .pokemonOffset = 10, + .trainerScale = 423, + .trainerOffset = 8, + FRONT_PIC(Lapras, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Lapras, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Lapras, 56, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(Lapras), + ICON(Lapras, 2), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_LAPRAS_GIGANTAMAX] = + { + LAPRAS_MISC_INFO, + .height = 240, + .weight = 0, + .description = COMPOUND_STRING( + "Over 5,000 people can ride on its\n" + "shell at once. And it's a very\n" + "comfortable ride, without the slightest\n" + "shaking or swaying."), + .pokemonScale = 257, + .pokemonOffset = 10, + .trainerScale = 423, + .trainerOffset = 8, + FRONT_PIC(LaprasGigantamax, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_LaprasGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(LaprasGigantamax, 64, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(LaprasGigantamax), + ICON(LaprasGigantamax, 2), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_LAPRAS + +#if P_FAMILY_DITTO + [SPECIES_DITTO] = + { + .baseHP = 48, + .baseAttack = 48, + .baseDefense = 48, + .baseSpeed = 48, + .baseSpAttack = 48, + .baseSpDefense = 48, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 35, + .expYield = 101, + .evYield_HP = 1, + .itemCommon = ITEM_QUICK_POWDER, + .itemRare = ITEM_METAL_POWDER, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_DITTO, EGG_GROUP_DITTO }, + .abilities = { ABILITY_LIMBER, ABILITY_NONE, ABILITY_IMPOSTER }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Ditto"), + .cryId = CRY_DITTO, + .natDexNum = NATIONAL_DEX_DITTO, + .categoryName = _("Transform"), + .height = 3, + .weight = 40, + .description = COMPOUND_STRING( + "A Ditto rearranges its cell structure to\n" + "transform itself. However, if it tries to\n" + "change based on its memory, it will get\n" + "details wrong."), + .pokemonScale = 633, + .pokemonOffset = 23, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Ditto, 40, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Ditto, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + BACK_PIC(Ditto, 48, 32), + .backPicYOffset = 17, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Ditto), + ICON(Ditto, 2), + .footprint = gMonFootprint_Ditto, + LEARNSETS(Ditto), + }, +#endif //P_FAMILY_DITTO + +#if P_FAMILY_EEVEE +#define EEVEE_MISC_INFO \ + .baseHP = 55, \ + .baseAttack = 55, \ + .baseDefense = 50, \ + .baseSpeed = 55, \ + .baseSpAttack = 45, \ + .baseSpDefense = 65, \ + .types = { TYPE_NORMAL, TYPE_NORMAL }, \ + .catchRate = 45, \ + .expYield = 65, \ + .evYield_SpDefense = 1, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 35, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .abilities = { ABILITY_RUN_AWAY, ABILITY_ADAPTABILITY, ABILITY_ANTICIPATION }, \ + .bodyColor = BODY_COLOR_BROWN, \ + .speciesName = _("Eevee"), \ + .cryId = CRY_EEVEE, \ + .natDexNum = NATIONAL_DEX_EEVEE, \ + .categoryName = _("Evolution"), \ + .footprint = gMonFootprint_Eevee, \ + LEARNSETS(Eevee), \ + .formSpeciesIdTable = sEeveeFormSpeciesIdTable, \ + .formChangeTable = sEeveeFormChangeTable + + [SPECIES_EEVEE] = + { + EEVEE_MISC_INFO, + .height = 3, + .weight = 65, + .description = COMPOUND_STRING( + "An Eevee has an unstable genetic makeup\n" + "that suddenly mutates due to its\n" + "environment. Radiation from various\n" + "Stones causes this Pokémon to evolve."), + .pokemonScale = 476, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Eevee, 40, 48), + FRONT_PIC_FEMALE(Eevee, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Eevee, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Eevee, 56, 48), + BACK_PIC_FEMALE(Eevee, 56, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Eevee), + ICON(Eevee, 2), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON}, + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON}, + {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON}, + {EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON}, + {EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON}, + {EVO_SPECIFIC_MAP, MAP_PETALBURG_WOODS, SPECIES_LEAFEON}, + {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_LEAFEON}, + {EVO_SPECIFIC_MAP, MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM, SPECIES_GLACEON}, + {EVO_ITEM, ITEM_ICE_STONE, SPECIES_GLACEON}, + {EVO_FRIENDSHIP_MOVE_TYPE, TYPE_FAIRY, SPECIES_SYLVEON}), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_EEVEE_GIGANTAMAX] = + { + EEVEE_MISC_INFO, + .height = 180, + .weight = 0, + .description = COMPOUND_STRING( + "Having gotten even friendlier and\n" + "more innocent, Eevee tries to play\n" + "with anyone around, only to end up\n" + "crushing them with its immense body."), + .pokemonScale = 476, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(EeveeGigantamax, 64, 64), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_EeveeGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(EeveeGigantamax, 64, 64), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(EeveeGigantamax), + ICON(EeveeGigantamax, 2), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS + + [SPECIES_VAPOREON] = + { + .baseHP = 130, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 65, + .baseSpAttack = 110, + .baseSpDefense = 95, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 184, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_WATER_ABSORB, ABILITY_WATER_ABSORB, ABILITY_HYDRATION }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Vaporeon"), + .cryId = CRY_VAPOREON, + .natDexNum = NATIONAL_DEX_VAPOREON, + .categoryName = _("Bubble Jet"), + .height = 10, + .weight = 290, + .description = COMPOUND_STRING( + "Vaporeon underwent a spontaneous\n" + "mutation and grew fins and gills that\n" + "allow them to live underwater. They have\n" + "the ability to freely control water."), + .pokemonScale = 316, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Vaporeon, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Vaporeon, + .frontAnimId = ANIM_GLOW_BLUE, + BACK_PIC(Vaporeon, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(Vaporeon), + ICON(Vaporeon, 0), + .footprint = gMonFootprint_Vaporeon, + LEARNSETS(Vaporeon), + }, + + [SPECIES_JOLTEON] = + { + .baseHP = 65, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 130, + .baseSpAttack = 110, + .baseSpDefense = 95, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 45, + .expYield = 184, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_VOLT_ABSORB, ABILITY_VOLT_ABSORB, ABILITY_QUICK_FEET }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Jolteon"), + .cryId = CRY_JOLTEON, + .natDexNum = NATIONAL_DEX_JOLTEON, + .categoryName = _("Lightning"), + .height = 8, + .weight = 245, + .description = COMPOUND_STRING( + "Its cells generate weak power that is\n" + "amplified by its fur's static electricity\n" + "to drop thunderbolts. The bristling fur is\n" + "made of electrically charged needles."), + .pokemonScale = 283, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Jolteon, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Jolteon, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Jolteon, 56, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(Jolteon), + ICON(Jolteon, 2), + .footprint = gMonFootprint_Jolteon, + LEARNSETS(Jolteon), + }, + + [SPECIES_FLAREON] = + { + .baseHP = 65, + .baseAttack = 130, + .baseDefense = 60, + .baseSpeed = 65, + .baseSpAttack = 95, + .baseSpDefense = 110, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 184, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLASH_FIRE, ABILITY_GUTS }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Flareon"), + .cryId = CRY_FLAREON, + .natDexNum = NATIONAL_DEX_FLAREON, + .categoryName = _("Flame"), + .height = 9, + .weight = 250, + .description = COMPOUND_STRING( + "Flareon's fluffy fur releases heat into\n" + "the air so that its body does not get\n" + "excessively hot. Its body temperature can\n" + "rise to a maximum of 1,650 degrees F."), + .pokemonScale = 306, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Flareon, 56, 56), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Flareon, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Flareon, 64, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Flareon), + ICON(Flareon, 3), + .footprint = gMonFootprint_Flareon, + LEARNSETS(Flareon), + }, + +#if P_GEN_2_CROSS_EVOS + [SPECIES_ESPEON] = + { + .baseHP = 65, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 110, + .baseSpAttack = 130, + .baseSpDefense = 95, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 45, + .expYield = 184, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SYNCHRONIZE, ABILITY_SYNCHRONIZE, ABILITY_MAGIC_BOUNCE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Espeon"), + .cryId = CRY_ESPEON, + .natDexNum = NATIONAL_DEX_ESPEON, + .categoryName = _("Sun"), + .height = 9, + .weight = 265, + .description = COMPOUND_STRING( + "An Espeon is extremely loyal to any\n" + "Trainer it considers to be worthy. It is\n" + "said to have developed precognitive\n" + "powers to protect its Trainer from harm."), + .pokemonScale = 363, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Espeon, 48, 56), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Espeon, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Espeon, 64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Espeon), + ICON(Espeon, 2), + .footprint = gMonFootprint_Espeon, + LEARNSETS(Espeon), + }, + + [SPECIES_UMBREON] = + { + .baseHP = 95, + .baseAttack = 65, + .baseDefense = 110, + .baseSpeed = 65, + .baseSpAttack = 60, + .baseSpDefense = 130, + .types = { TYPE_DARK, TYPE_DARK }, + .catchRate = 45, + .expYield = 184, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SYNCHRONIZE, ABILITY_SYNCHRONIZE, ABILITY_INNER_FOCUS }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Umbreon"), + .cryId = CRY_UMBREON, + .natDexNum = NATIONAL_DEX_UMBREON, + .categoryName = _("Moonlight"), + .height = 10, + .weight = 270, + .description = COMPOUND_STRING( + "Umbreon evolved from exposure to the\n" + "moon's energy pulses. It lurks in darkness\n" + "and waits for its foes to move. The rings\n" + "on its body glow when it leaps to attack."), + .pokemonScale = 317, + .pokemonOffset = 11, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Umbreon, 40, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Umbreon, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Umbreon, 64, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Umbreon), + ICON(Umbreon, 0), + .footprint = gMonFootprint_Umbreon, + LEARNSETS(Umbreon), + }, +#endif //P_GEN_2_CROSS_EVOS + +#if P_GEN_4_CROSS_EVOS + [SPECIES_LEAFEON] = + { + .baseHP = 65, + .baseAttack = 110, + .baseDefense = 130, + .baseSpeed = 95, + .baseSpAttack = 60, + .baseSpDefense = 65, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 184, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_LEAF_GUARD, ABILITY_LEAF_GUARD, ABILITY_CHLOROPHYLL }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Leafeon"), + .cryId = CRY_LEAFEON, + .natDexNum = NATIONAL_DEX_LEAFEON, + .categoryName = _("Verdant"), + .height = 10, + .weight = 255, + .description = COMPOUND_STRING( + "Its cellular composition is closer to\n" + "that of a plant than an animal. It uses\n" + "photosynthesis to produce its energy\n" + "supply without eating food."), + .pokemonScale = 305, + .pokemonOffset = 8, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Leafeon, 56, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Leafeon, + .frontAnimId = ANIM_SHRINK_GROW, + BACK_PIC(Leafeon, 48, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Leafeon), + ICON(Leafeon, 1), + .footprint = gMonFootprint_Leafeon, + LEARNSETS(Leafeon), + }, + + [SPECIES_GLACEON] = + { + .baseHP = 65, + .baseAttack = 60, + .baseDefense = 110, + .baseSpeed = 65, + .baseSpAttack = 130, + .baseSpDefense = 95, + .types = { TYPE_ICE, TYPE_ICE }, + .catchRate = 45, + .expYield = 184, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SNOW_CLOAK, ABILITY_SNOW_CLOAK, ABILITY_ICE_BODY }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Glaceon"), + .cryId = CRY_GLACEON, + .natDexNum = NATIONAL_DEX_GLACEON, + .categoryName = _("Fresh Snow"), + .height = 8, + .weight = 259, + .description = COMPOUND_STRING( + "It can control its body temperature\n" + "at will. This enables it to freeze the\n" + "moisture in the atmosphere, creating\n" + "flurries of diamond dust."), + .pokemonScale = 366, + .pokemonOffset = 10, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Glaceon, 64, 56), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Glaceon, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Glaceon, 56, 64), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Glaceon), + ICON(Glaceon, 0), + .footprint = gMonFootprint_Glaceon, + LEARNSETS(Glaceon), + }, +#endif //P_GEN_4_CROSS_EVOS + +#if P_GEN_6_CROSS_EVOS + [SPECIES_SYLVEON] = + { + .baseHP = 95, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 60, + .baseSpAttack = 110, + .baseSpDefense = 130, + .types = { TYPE_FAIRY, TYPE_FAIRY }, + .catchRate = 45, + .expYield = 184, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_CUTE_CHARM, ABILITY_CUTE_CHARM, ABILITY_PIXILATE }, + .bodyColor = BODY_COLOR_PINK, + .noFlip = TRUE, + .speciesName = _("Sylveon"), + .cryId = CRY_SYLVEON, + .natDexNum = NATIONAL_DEX_SYLVEON, + .categoryName = _("Intertwine"), + .height = 10, + .weight = 235, + .description = COMPOUND_STRING( + "Its ribbonlike feelers give off an aura\n" + "that weakens hostility in its prey, causing\n" + "them to let down their guard. A moment\n" + "later, it pounces."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Sylveon, 48, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Sylveon, + .frontAnimId = ANIM_SHRINK_GROW, + BACK_PIC(Sylveon, 64, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Sylveon), + ICON(Sylveon, 0), + .footprint = gMonFootprint_Sylveon, + LEARNSETS(Sylveon), + }, +#endif //P_GEN_6_CROSS_EVOS +#endif //P_FAMILY_EEVEE + +#if P_FAMILY_PORYGON + [SPECIES_PORYGON] = + { + .baseHP = 65, + .baseAttack = 60, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 85, + .baseSpDefense = 75, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 45, + .expYield = 79, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_TRACE, ABILITY_DOWNLOAD, ABILITY_ANALYTIC }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Porygon"), + .cryId = CRY_PORYGON, + .natDexNum = NATIONAL_DEX_PORYGON, + .categoryName = _("Virtual"), + .height = 8, + .weight = 365, + .description = COMPOUND_STRING( + "It is capable of reverting itself entirely\n" + "back to program data in order to enter\n" + "cyberspace. A Porygon is copy-\n" + "protected so it cannot be duplicated."), + .pokemonScale = 328, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Porygon, 40, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Porygon, + .frontAnimId = ANIM_V_JUMPS_SMALL, + BACK_PIC(Porygon, 56, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Porygon), + ICON(Porygon, 0), + .footprint = gMonFootprint_Porygon, + LEARNSETS(Porygon), + .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}, + {EVO_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}), + }, + +#if P_GEN_2_CROSS_EVOS + [SPECIES_PORYGON2] = + { + .baseHP = 85, + .baseAttack = 80, + .baseDefense = 90, + .baseSpeed = 60, + .baseSpAttack = 105, + .baseSpDefense = 95, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 45, + .expYield = 180, + .evYield_SpAttack = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_TRACE, ABILITY_DOWNLOAD, ABILITY_ANALYTIC }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Porygon2"), + .cryId = CRY_PORYGON2, + .natDexNum = NATIONAL_DEX_PORYGON2, + .categoryName = _("Virtual"), + .height = 6, + .weight = 325, + .description = COMPOUND_STRING( + "It was created by humans using the power\n" + "of science. It has been given artificial\n" + "intelligence that enables it to learn new\n" + "gestures and emotions on its own."), + .pokemonScale = 320, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Porygon2, 40, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Porygon2, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 9, + BACK_PIC(Porygon2, 56, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Porygon2), + ICON(Porygon2, 0), + .footprint = gMonFootprint_Porygon2, + LEARNSETS(Porygon2), + .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}, + {EVO_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_PORYGON_Z] = + { + .baseHP = 85, + .baseAttack = 80, + .baseDefense = 70, + .baseSpeed = 90, + .baseSpAttack = 135, + .baseSpDefense = 75, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 30, + .expYield = 241, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_ADAPTABILITY, ABILITY_DOWNLOAD, ABILITY_ANALYTIC }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Porygon-Z"), + .cryId = CRY_PORYGON_Z, + .natDexNum = NATIONAL_DEX_PORYGON_Z, + .categoryName = _("Virtual"), + .height = 9, + .weight = 340, + .description = COMPOUND_STRING( + "In order to create a more advanced\n" + "Pokémon, an additional program was\n" + "installed, but apparently it contained a\n" + "defect that made it move oddly."), + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(PorygonZ, 40, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Porygon_Z, + .frontAnimId = ANIM_CIRCLE_C_CLOCKWISE_SLOW, + .enemyMonElevation = 12, + BACK_PIC(PorygonZ, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(PorygonZ), + ICON(PorygonZ, 0), + .footprint = gMonFootprint_PorygonZ, + LEARNSETS(PorygonZ), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_PORYGON + +#if P_FAMILY_OMANYTE + [SPECIES_OMANYTE] = + { + .baseHP = 35, + .baseAttack = 40, + .baseDefense = 100, + .baseSpeed = 35, + .baseSpAttack = 90, + .baseSpDefense = 55, + .types = { TYPE_ROCK, TYPE_WATER }, + .catchRate = 45, + .expYield = 71, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_SHELL_ARMOR, ABILITY_WEAK_ARMOR }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Omanyte"), + .cryId = CRY_OMANYTE, + .natDexNum = NATIONAL_DEX_OMANYTE, + .categoryName = _("Spiral"), + .height = 4, + .weight = 75, + .description = COMPOUND_STRING( + "One of the ancient and long-since-extinct\n" + "Pokémon that have been regenerated\n" + "from fossils by humans. If attacked,\n" + "it withdraws into its hard shell."), + .pokemonScale = 521, + .pokemonOffset = 22, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Omanyte, 40, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Omanyte, + .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, + BACK_PIC(Omanyte, 48, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Omanyte), + ICON(Omanyte, 0), + .footprint = gMonFootprint_Omanyte, + LEARNSETS(Omanyte), + .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_OMASTAR}), + }, + + [SPECIES_OMASTAR] = + { + .baseHP = 70, + .baseAttack = 60, + .baseDefense = 125, + .baseSpeed = 55, + .baseSpAttack = 115, + .baseSpDefense = 70, + .types = { TYPE_ROCK, TYPE_WATER }, + .catchRate = 45, + .expYield = 173, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_SHELL_ARMOR, ABILITY_WEAK_ARMOR }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Omastar"), + .cryId = CRY_OMASTAR, + .natDexNum = NATIONAL_DEX_OMASTAR, + .categoryName = _("Spiral"), + .height = 10, + .weight = 350, + .description = COMPOUND_STRING( + "An Omastar uses its tentacles to capture\n" + "its prey. It is believed to have become\n" + "extinct because its shell grew too large,\n" + "making its movements slow and ponderous."), + .pokemonScale = 307, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Omastar, 64, 56), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Omastar, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Omastar, 56, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Omastar), + ICON(Omastar, 0), + .footprint = gMonFootprint_Omastar, + LEARNSETS(Omastar), + }, +#endif //P_FAMILY_OMANYTE + +#if P_FAMILY_KABUTO + [SPECIES_KABUTO] = + { + .baseHP = 30, + .baseAttack = 80, + .baseDefense = 90, + .baseSpeed = 55, + .baseSpAttack = 55, + .baseSpDefense = 45, + .types = { TYPE_ROCK, TYPE_WATER }, + .catchRate = 45, + .expYield = 71, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_BATTLE_ARMOR, ABILITY_WEAK_ARMOR }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Kabuto"), + .cryId = CRY_KABUTO, + .natDexNum = NATIONAL_DEX_KABUTO, + .categoryName = _("Shellfish"), + .height = 5, + .weight = 115, + .description = COMPOUND_STRING( + "It is a Pokémon that has been regenerated\n" + "from a fossil. However, in rare cases, living\n" + "examples have been discovered. Kabuto\n" + "have not changed for 300 million years."), + .pokemonScale = 454, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Kabuto, 40, 32), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Kabuto, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + BACK_PIC(Kabuto, 48, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Kabuto), + ICON(Kabuto, 2), + .footprint = gMonFootprint_Kabuto, + LEARNSETS(Kabuto), + .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_KABUTOPS}), + }, + + [SPECIES_KABUTOPS] = + { + .baseHP = 60, + .baseAttack = 115, + .baseDefense = 105, + .baseSpeed = 80, + .baseSpAttack = 65, + .baseSpDefense = 70, + .types = { TYPE_ROCK, TYPE_WATER }, + .catchRate = 45, + .expYield = 173, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_BATTLE_ARMOR, ABILITY_WEAK_ARMOR }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Kabutops"), + .cryId = CRY_KABUTOPS, + .natDexNum = NATIONAL_DEX_KABUTOPS, + .categoryName = _("Shellfish"), + .height = 13, + .weight = 405, + .description = COMPOUND_STRING( + "Kabutops once swam underwater to hunt \n" + "for prey. It was apparently evolving from\n" + "being a water dweller to living on land as\n" + "evident from changes in its gills and legs."), + .pokemonScale = 271, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Kabutops, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Kabutops, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Kabutops, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Kabutops), + ICON(Kabutops, 2), + .footprint = gMonFootprint_Kabutops, + LEARNSETS(Kabutops), + }, +#endif //P_FAMILY_KABUTO + +#if P_FAMILY_AERODACTYL +#define AERODACTYL_MISC_INFO \ + .types = { TYPE_ROCK, TYPE_FLYING }, \ + .catchRate = 45, \ + .evYield_Speed = 2, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 35, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING },\ + .bodyColor = BODY_COLOR_PURPLE, \ + .speciesName = _("Aerodactyl"), \ + .natDexNum = NATIONAL_DEX_AERODACTYL, \ + .categoryName = _("Fossil"), \ + .footprint = gMonFootprint_Aerodactyl, \ + LEARNSETS(Aerodactyl), \ + .formSpeciesIdTable = sAerodactylFormSpeciesIdTable,\ + .formChangeTable = sAerodactylFormChangeTable + + [SPECIES_AERODACTYL] = + { + AERODACTYL_MISC_INFO, + .baseHP = 80, + .baseAttack = 105, + .baseDefense = 65, + .baseSpeed = 130, + .baseSpAttack = 60, + .baseSpDefense = 75, + .expYield = 180, + .abilities = { ABILITY_ROCK_HEAD, ABILITY_PRESSURE, ABILITY_UNNERVE }, + .cryId = CRY_AERODACTYL, + .height = 18, + .weight = 590, + .description = COMPOUND_STRING( + "Aerodactyl is a Pokémon from the age\n" + "of dinosaurs. It was regenerated from DNA\n" + "extracted from amber. It is imagined to\n" + "have been the king of the skies."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 302, + .trainerOffset = 4, + FRONT_PIC(Aerodactyl, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Aerodactyl, + .frontAnimId = ANIM_V_SLIDE_SLOW, + .enemyMonElevation = 9, + BACK_PIC(Aerodactyl, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Aerodactyl), + ICON(Aerodactyl, 2), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_AERODACTYL_MEGA] = + { + AERODACTYL_MISC_INFO, + .baseHP = 80, + .baseAttack = 135, + .baseDefense = 85, + .baseSpeed = 150, + .baseSpAttack = 70, + .baseSpDefense = 95, + .expYield = 215, + .abilities = { ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS }, + .cryId = CRY_AERODACTYL_MEGA, + .height = 21, + .weight = 790, + .description = COMPOUND_STRING( + "The power of Mega Evolution has\n" + "completely restored its genes. The rocks\n" + "on its body are harder than diamond."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 302, + .trainerOffset = 4, + FRONT_PIC(AerodactylMega, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_AerodactylMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 7, + BACK_PIC(AerodactylMega, 64, 64), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(AerodactylMega), + ICON(AerodactylMega, 2), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_AERODACTYL + +#if P_FAMILY_SNORLAX +#if P_GEN_4_CROSS_EVOS + [SPECIES_MUNCHLAX] = + { + .baseHP = 135, + .baseAttack = 85, + .baseDefense = 40, + .baseSpeed = 5, + .baseSpAttack = 40, + .baseSpDefense = 85, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 50, + .expYield = 78, + .evYield_HP = 1, + .itemCommon = ITEM_LEFTOVERS, + .itemRare = ITEM_LEFTOVERS, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_PICKUP, ABILITY_THICK_FAT, ABILITY_GLUTTONY }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Munchlax"), + .cryId = CRY_MUNCHLAX, + .natDexNum = NATIONAL_DEX_MUNCHLAX, + .categoryName = _("Big Eater"), + .height = 6, + .weight = 1050, + .description = COMPOUND_STRING( + "When it finds something that looks like\n" + "it might be edible, it goes right ahead\n" + "and swallows it whole. That's why it gets\n" + "fatter day by day."), + .pokemonScale = 422, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Munchlax, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Munchlax, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Munchlax, 48, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_GROW, + PALETTES(Munchlax), + ICON(Munchlax, 3), + .footprint = gMonFootprint_Munchlax, + LEARNSETS(Munchlax), + .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_SNORLAX}), + }, +#endif //P_GEN_4_CROSS_EVOS + +#define SNORLAX_MISC_INFO \ + .baseHP = 160, \ + .baseAttack = 110, \ + .baseDefense = 65, \ + .baseSpeed = 30, \ + .baseSpAttack = 65, \ + .baseSpDefense = 110, \ + .types = { TYPE_NORMAL, TYPE_NORMAL }, \ + .catchRate = 25, \ + .expYield = 189, \ + .evYield_HP = 2, \ + .itemCommon = ITEM_LEFTOVERS, \ + .itemRare = ITEM_LEFTOVERS, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 40, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, \ + .abilities = { ABILITY_IMMUNITY, ABILITY_THICK_FAT, ABILITY_GLUTTONY }, \ + .bodyColor = BODY_COLOR_BLACK, \ + .speciesName = _("Snorlax"), \ + .cryId = CRY_SNORLAX, \ + .natDexNum = NATIONAL_DEX_SNORLAX, \ + .categoryName = _("Sleeping"), \ + .footprint = gMonFootprint_Snorlax, \ + LEARNSETS(Snorlax), \ + .formSpeciesIdTable = sSnorlaxFormSpeciesIdTable, \ + .formChangeTable = sSnorlaxFormChangeTable + + [SPECIES_SNORLAX] = + { + SNORLAX_MISC_INFO, + .height = 21, + .weight = 4600, + .description = COMPOUND_STRING( + "Snorlax's typical day consists of nothing\n" + "more than eating and sleeping. It is such\n" + "a docile Pokémon that there are children\n" + "who use its big belly as a place to play."), + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 423, + .trainerOffset = 11, + FRONT_PIC(Snorlax, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Snorlax, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Snorlax, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Snorlax), + ICON(Snorlax, 3), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_SNORLAX_GIGANTAMAX] = + { + SNORLAX_MISC_INFO, + .height = 350, + .weight = 0, + .description = COMPOUND_STRING( + "Gigantamax energy has affected\n" + "stray seeds and even pebbles that\n" + "got stuck to Snorlax, making them grow\n" + "to a huge size."), + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 423, + .trainerOffset = 11, + FRONT_PIC(SnorlaxGigantamax, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_SnorlaxGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SnorlaxGigantamax, 64, 64), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(SnorlaxGigantamax), + ICON(SnorlaxGigantamax, 3), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SNORLAX + +#if P_FAMILY_ARTICUNO +#define ARTICUNO_MISC_INFO \ + .catchRate = 3, \ + .genderRatio = MON_GENDERLESS, \ + .friendship = 35, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED },\ + .speciesName = _("Articuno"), \ + .cryId = CRY_ARTICUNO, \ + .natDexNum = NATIONAL_DEX_ARTICUNO, \ + .height = 17, \ + .pokemonScale = 256, \ + .pokemonOffset = 0, \ + .trainerScale = 309, \ + .trainerOffset = 2, \ + .footprint = gMonFootprint_Articuno, \ + .formSpeciesIdTable = sArticunoFormSpeciesIdTable, \ + .isLegendary = TRUE + + [SPECIES_ARTICUNO] = + { + ARTICUNO_MISC_INFO, + .baseHP = 90, + .baseAttack = 85, + .baseDefense = 100, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 125, + .types = { TYPE_ICE, TYPE_FLYING }, + .expYield = 261, + .evYield_SpDefense = 3, + .eggCycles = 80, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_SNOW_CLOAK }, + .bodyColor = BODY_COLOR_BLUE, + .categoryName = _("Freeze"), + .weight = 554, + .description = COMPOUND_STRING( + "Articuno is a legendary bird Pokémon that\n" + "can control ice. The flapping of its wings\n" + "chills the air. As a result, it is said that\n" + "when this Pokémon flies, snow will fall."), + FRONT_PIC(Articuno, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Articuno, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Articuno, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(Articuno), + ICON(Articuno, 2), + LEARNSETS(Articuno), + }, + +#if P_GALARIAN_FORMS + [SPECIES_ARTICUNO_GALARIAN] = + { + ARTICUNO_MISC_INFO, + .baseHP = 90, + .baseAttack = 85, + .baseDefense = 85, + .baseSpeed = 95, + .baseSpAttack = 125, + .baseSpDefense = 100, + .types = { TYPE_PSYCHIC, TYPE_FLYING }, + .expYield = 290, + .evYield_SpAttack = 3, + .eggCycles = 120, + .abilities = { ABILITY_COMPETITIVE, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PURPLE, + .categoryName = _("Cruel"), + .weight = 509, + .description = COMPOUND_STRING( + "It fires beams that immobilize opponents\n" + "as if they had been frozen solid.\n" + "Its feather-like blades of psychic energy\n" + "rip through thick iron sheets like paper."), + FRONT_PIC(ArticunoGalarian, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_ArticunoGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 10, + BACK_PIC(ArticunoGalarian, 64, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ArticunoGalarian), + ICON(ArticunoGalarian, 2), + LEARNSETS(ArticunoGalarian), + .isGalarianForm = TRUE, + }, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ARTICUNO + +#if P_FAMILY_ZAPDOS +#define ZAPDOS_MISC_INFO \ + .catchRate = 3, \ + .genderRatio = MON_GENDERLESS, \ + .friendship = 35, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED },\ + .bodyColor = BODY_COLOR_YELLOW, \ + .speciesName = _("Zapdos"), \ + .cryId = CRY_ZAPDOS, \ + .natDexNum = NATIONAL_DEX_ZAPDOS, \ + .height = 16, \ + .pokemonScale = 256, \ + .pokemonOffset = 0, \ + .trainerScale = 318, \ + .trainerOffset = 3, \ + .footprint = gMonFootprint_Zapdos, \ + .formSpeciesIdTable = sZapdosFormSpeciesIdTable, \ + .isLegendary = TRUE + + [SPECIES_ZAPDOS] = + { + ZAPDOS_MISC_INFO, + .baseHP = 90, + .baseAttack = 90, + .baseDefense = 85, + .baseSpeed = 100, + .baseSpAttack = 125, + .baseSpDefense = 90, + .types = { TYPE_ELECTRIC, TYPE_FLYING }, + .expYield = 261, + .evYield_SpAttack = 3, + .eggCycles = 80, + #if P_UPDATED_ABILITIES >= GEN_6 + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_STATIC }, + #else + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + #endif + .categoryName = _("Electric"), + .weight = 526, + .description = COMPOUND_STRING( + "Zapdos is a legendary bird Pokémon that\n" + "has the ability to control electricity.\n" + "It usually lives in thunderclouds. It gains\n" + "power if it is stricken by lightning bolts."), + FRONT_PIC(Zapdos, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Zapdos, + .frontAnimId = ANIM_FLASH_YELLOW, + .enemyMonElevation = 8, + BACK_PIC(Zapdos, 64, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(Zapdos), + ICON(Zapdos, 0), + LEARNSETS(Zapdos), + }, + +#if P_GALARIAN_FORMS + [SPECIES_ZAPDOS_GALARIAN] = + { + ZAPDOS_MISC_INFO, + .baseHP = 90, + .baseAttack = 125, + .baseDefense = 90, + .baseSpeed = 100, + .baseSpAttack = 85, + .baseSpDefense = 90, + .types = { TYPE_FIGHTING, TYPE_FLYING }, + .expYield = 290, + .evYield_Attack = 3, + .eggCycles = 120, + .abilities = { ABILITY_DEFIANT, ABILITY_NONE, ABILITY_NONE }, + .categoryName = _("Strong Legs"), + .weight = 582, + .description = COMPOUND_STRING( + "When its feathers rub together, they\n" + "produce a crackling sound like the\n" + "zapping of electricity. Apparently, it runs\n" + "through the mountains at over 180 mph."), + FRONT_PIC(ZapdosGalarian, 48, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_ZapdosGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ZapdosGalarian, 56, 48), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ZapdosGalarian), + ICON(ZapdosGalarian, 0), + LEARNSETS(ZapdosGalarian), + .isGalarianForm = TRUE, + }, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZAPDOS + +#if P_FAMILY_MOLTRES +#define MOLTRES_MISC_INFO \ + .catchRate = 3, \ + .genderRatio = MON_GENDERLESS, \ + .friendship = 35, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED },\ + .speciesName = _("Moltres"), \ + .cryId = CRY_MOLTRES, \ + .natDexNum = NATIONAL_DEX_MOLTRES, \ + .height = 20, \ + .pokemonScale = 270, \ + .pokemonOffset = 0, \ + .trainerScale = 387, \ + .trainerOffset = 8, \ + .footprint = gMonFootprint_Moltres, \ + .formSpeciesIdTable = sMoltresFormSpeciesIdTable, \ + .isLegendary = TRUE + + [SPECIES_MOLTRES] = + { + MOLTRES_MISC_INFO, + .baseHP = 90, + .baseAttack = 100, + .baseDefense = 90, + .baseSpeed = 90, + .baseSpAttack = 125, + .baseSpDefense = 85, + .types = { TYPE_FIRE, TYPE_FLYING }, + .expYield = 261, + .evYield_SpAttack = 3, + .eggCycles = 80, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_FLAME_BODY }, + .bodyColor = BODY_COLOR_YELLOW, + .categoryName = _("Flame"), + .weight = 600, + .description = COMPOUND_STRING( + "Moltres is a legendary bird Pokémon\n" + "that can control fire. If injured, it is said\n" + "to dip its body in the molten magma of\n" + "a volcano to burn and heal itself."), + FRONT_PIC(Moltres, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Moltres, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Moltres, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Moltres), + ICON(Moltres, 0), + LEARNSETS(Moltres), + }, + +#if P_GALARIAN_FORMS + [SPECIES_MOLTRES_GALARIAN] = + { + MOLTRES_MISC_INFO, + .baseHP = 90, + .baseAttack = 85, + .baseDefense = 90, + .baseSpeed = 90, + .baseSpAttack = 100, + .baseSpDefense = 125, + .types = { TYPE_DARK, TYPE_FLYING }, + .expYield = 290, + .evYield_SpDefense = 3, + .eggCycles = 120, + .abilities = { ABILITY_BERSERK, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .categoryName = _("Malevolent"), + .weight = 660, + .description = COMPOUND_STRING( + "This Pokémon's sinister, flame-like aura\n" + "will consume the spirit of any creature\n" + "it hits. Victims become burned-out\n" + "shadows of themselves."), + FRONT_PIC(MoltresGalarian, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_MoltresGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(MoltresGalarian, 56, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(MoltresGalarian), + ICON(MoltresGalarian, 0), + LEARNSETS(MoltresGalarian), + .isGalarianForm = TRUE, + }, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MOLTRES + +#if P_FAMILY_DRATINI + [SPECIES_DRATINI] = + { + .baseHP = 41, + .baseAttack = 64, + .baseDefense = 45, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 50, + .types = { TYPE_DRAGON, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 60, + .evYield_Attack = 1, + .itemRare = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_MARVEL_SCALE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Dratini"), + .cryId = CRY_DRATINI, + .natDexNum = NATIONAL_DEX_DRATINI, + .categoryName = _("Dragon"), + .height = 18, + .weight = 33, + .description = COMPOUND_STRING( + "A Dratini continually molts and sloughs\n" + "off its old skin. It does so because the\n" + "life energy within its body steadily builds\n" + "to reach uncontrollable levels."), + .pokemonScale = 256, + .pokemonOffset = 8, + .trainerScale = 386, + .trainerOffset = 6, + FRONT_PIC(Dratini, 56, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Dratini, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Dratini, 56, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Dratini), + ICON(Dratini, 0), + .footprint = gMonFootprint_Dratini, + LEARNSETS(Dratini), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_DRAGONAIR}), + }, + + [SPECIES_DRAGONAIR] = + { + .baseHP = 61, + .baseAttack = 84, + .baseDefense = 65, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 70, + .types = { TYPE_DRAGON, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 147, + .evYield_Attack = 2, + .itemRare = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_MARVEL_SCALE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Dragonair"), + .cryId = CRY_DRAGONAIR, + .natDexNum = NATIONAL_DEX_DRAGONAIR, + .categoryName = _("Dragon"), + .height = 40, + .weight = 165, + .description = COMPOUND_STRING( + "A Dragonair stores an enormous amount of\n" + "energy inside its body. It is said to alter\n" + "the weather around it by loosing energy\n" + "from the crystals on its neck and tail."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 411, + .trainerOffset = 5, + FRONT_PIC(Dragonair, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Dragonair, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Dragonair, 40, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Dragonair), + ICON(Dragonair, 0), + .footprint = gMonFootprint_Dragonair, + LEARNSETS(Dragonair), + .evolutions = EVOLUTION({EVO_LEVEL, 55, SPECIES_DRAGONITE}), + }, + + [SPECIES_DRAGONITE] = + { + .baseHP = 91, + .baseAttack = 134, + .baseDefense = 95, + .baseSpeed = 80, + .baseSpAttack = 100, + .baseSpDefense = 100, + .types = { TYPE_DRAGON, TYPE_FLYING }, + .catchRate = 45, + .expYield = 270, + .evYield_Attack = 3, + .itemRare = ITEM_DRAGON_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_INNER_FOCUS, ABILITY_NONE, ABILITY_MULTISCALE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Dragonite"), + .cryId = CRY_DRAGONITE, + .natDexNum = NATIONAL_DEX_DRAGONITE, + .categoryName = _("Dragon"), + .height = 22, + .weight = 2100, + .description = COMPOUND_STRING( + "It can circle the globe in just 16 hours.\n" + "It is a kindhearted Pokémon that leads\n" + "lost and foundering ships in a storm\n" + "to the safety of land."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 309, + .trainerOffset = 4, + FRONT_PIC(Dragonite, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Dragonite, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Dragonite, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Dragonite), + ICON(Dragonite, 2), + .footprint = gMonFootprint_Dragonite, + LEARNSETS(Dragonite), + }, +#endif //P_FAMILY_DRATINI + +#if P_FAMILY_MEWTWO +#define SPECIES_MEWTWO_MISC_INFO \ + .catchRate = 3, \ + .evYield_SpAttack = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED },\ + .bodyColor = BODY_COLOR_PURPLE, \ + .speciesName = _("Mewtwo"), \ + .natDexNum = NATIONAL_DEX_MEWTWO, \ + .categoryName = _("Genetic"), \ + .footprint = gMonFootprint_Mewtwo, \ + LEARNSETS(Mewtwo), \ + .formSpeciesIdTable = sMewtwoFormSpeciesIdTable, \ + .formChangeTable = sMewtwoFormChangeTable, \ + .isLegendary = TRUE + + [SPECIES_MEWTWO] = + { + SPECIES_MEWTWO_MISC_INFO, + .baseHP = 106, + .baseAttack = 110, + .baseDefense = 90, + .baseSpeed = 130, + .baseSpAttack = 154, + .baseSpDefense = 90, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .expYield = 306, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_UNNERVE }, + .cryId = CRY_MEWTWO, + .height = 20, + .weight = 1220, + .description = COMPOUND_STRING( + "A Pokémon that was created by genetic\n" + "manipulation. However, even though the\n" + "scientific power of humans made its body,\n" + "they failed to give it a warm heart."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 309, + .trainerOffset = 4, + FRONT_PIC(Mewtwo, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Mewtwo, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Mewtwo, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(Mewtwo), + ICON(Mewtwo, 2), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_MEWTWO_MEGA_X] = + { + SPECIES_MEWTWO_MISC_INFO, + .baseHP = 106, + .baseAttack = 190, + .baseDefense = 100, + .baseSpeed = 130, + .baseSpAttack = 154, + .baseSpDefense = 100, + .types = { TYPE_PSYCHIC, TYPE_FIGHTING }, + .expYield = 351, + .abilities = { ABILITY_STEADFAST, ABILITY_STEADFAST, ABILITY_STEADFAST }, + .isMegaEvolution = TRUE, + .cryId = CRY_MEWTWO_MEGA_X, + .height = 23, + .weight = 1270, + .description = COMPOUND_STRING( + "Psychic power has augmented its muscles.\n" + "It has a grip strength of one ton and can\n" + "sprint a hundred meters in two seconds\n" + "flat!"), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 309, + .trainerOffset = 4, + FRONT_PIC(MewtwoMegaX, 48, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_MewtwoMegaX, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(MewtwoMegaX, 56, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(MewtwoMegaX), + ICON(MewtwoMegaX, 2), + }, + + [SPECIES_MEWTWO_MEGA_Y] = + { + SPECIES_MEWTWO_MISC_INFO, + .baseHP = 106, + .baseAttack = 150, + .baseDefense = 70, + .baseSpeed = 140, + .baseSpAttack = 194, + .baseSpDefense = 120, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .expYield = 351, + .abilities = { ABILITY_INSOMNIA, ABILITY_INSOMNIA, ABILITY_INSOMNIA }, + .isMegaEvolution = TRUE, + .cryId = CRY_MEWTWO_MEGA_Y, + .height = 15, + .weight = 330, + .description = COMPOUND_STRING( + "Despite its diminished size, its mental\n" + "power has grown phenomenally. With a mere\n" + "thought, it can smash a skyscraper to\n" + "smithereens."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 309, + .trainerOffset = 4, + FRONT_PIC(MewtwoMegaY, 40, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_MewtwoMegaY, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 3, + BACK_PIC(MewtwoMegaY, 64, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(MewtwoMegaY), + ICON(MewtwoMegaY, 2), + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MEWTWO + +#if P_FAMILY_MEW + [SPECIES_MEW] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 100, + .baseSpDefense = 100, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 45, + .expYield = 270, + .evYield_HP = 3, + .itemCommon = ITEM_LUM_BERRY, + .itemRare = ITEM_LUM_BERRY, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_SYNCHRONIZE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PINK, + .isMythical = TRUE, + .speciesName = _("Mew"), + .cryId = CRY_MEW, + .natDexNum = NATIONAL_DEX_MEW, + .categoryName = _("New Species"), + .height = 4, + .weight = 40, + .description = COMPOUND_STRING( + "A Mew is said to possess the genes of all\n" + "Pokémon. It is capable of making itself\n" + "invisible at will, so it entirely avoids\n" + "notice even if it approaches people."), + .pokemonScale = 457, + .pokemonOffset = -2, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Mew, 64, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Mew, + .frontAnimId = ANIM_ZIGZAG_SLOW, + .enemyMonElevation = 11, + BACK_PIC(Mew, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Mew), + ICON(Mew, 0), + .footprint = gMonFootprint_Mew, + LEARNSETS(Mew), + }, +#endif //P_FAMILY_MEW + +#ifdef __INTELLISENSE__ +}; +#endif \ No newline at end of file diff --git a/src/data/pokemon/species_info/gen_2.h b/src/data/pokemon/species_info/gen_2.h new file mode 100644 index 0000000000..9ac992ea1f --- /dev/null +++ b/src/data/pokemon/species_info/gen_2.h @@ -0,0 +1,5734 @@ +#ifdef __INTELLISENSE__ +const struct SpeciesInfo gSpeciesInfoGen2[] = +{ +#endif + +#if P_FAMILY_CHIKORITA + [SPECIES_CHIKORITA] = + { + .baseHP = 45, + .baseAttack = 49, + .baseDefense = 65, + .baseSpeed = 45, + .baseSpAttack = 49, + .baseSpDefense = 65, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 64, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LEAF_GUARD }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Chikorita"), + .cryId = CRY_CHIKORITA, + .natDexNum = NATIONAL_DEX_CHIKORITA, + .categoryName = _("Leaf"), + .height = 9, + .weight = 64, + .description = COMPOUND_STRING( + "It waves its leaf around to keep foes\n" + "at bay. However, a sweet fragrance also\n" + "wafts from the leaf, creating a friendly\n" + "atmosphere that becalms the battlers."), + .pokemonScale = 512, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Chikorita, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Chikorita, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Chikorita, 56, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Chikorita), + ICON(Chikorita, 1), + .footprint = gMonFootprint_Chikorita, + LEARNSETS(Chikorita), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_BAYLEEF}), + }, + + [SPECIES_BAYLEEF] = + { + .baseHP = 60, + .baseAttack = 62, + .baseDefense = 80, + .baseSpeed = 60, + .baseSpAttack = 63, + .baseSpDefense = 80, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 142, + .evYield_Defense = 1, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LEAF_GUARD }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Bayleef"), + .cryId = CRY_BAYLEEF, + .natDexNum = NATIONAL_DEX_BAYLEEF, + .categoryName = _("Leaf"), + .height = 12, + .weight = 158, + .description = COMPOUND_STRING( + "A Bayleef's neck is ringed by curled-up\n" + "leaves. Inside each leaf is a small tree\n" + "shoot. The fragrance of this shoot\n" + "makes people peppy."), + .pokemonScale = 296, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Bayleef, 48, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Bayleef, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Bayleef, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Bayleef), + ICON(Bayleef, 1), + .footprint = gMonFootprint_Bayleef, + LEARNSETS(Bayleef), + .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_MEGANIUM}), + }, + + [SPECIES_MEGANIUM] = + { + .baseHP = 80, + .baseAttack = 82, + .baseDefense = 100, + .baseSpeed = 80, + .baseSpAttack = 83, + .baseSpDefense = 100, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 236, + .evYield_Defense = 1, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LEAF_GUARD }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Meganium"), + .cryId = CRY_MEGANIUM, + .natDexNum = NATIONAL_DEX_MEGANIUM, + .categoryName = _("Herb"), + .height = 18, + .weight = 1005, + .description = COMPOUND_STRING( + "The fragrance of a Meganium's flower\n" + "soothes and calms emotions. In battle,\n" + "it gives off more of its becalming scent\n" + "to blunt the foe's fighting spirit."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 277, + .trainerOffset = 1, + FRONT_PIC(Meganium, 48, 64), + FRONT_PIC_FEMALE(Meganium, 48, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Meganium, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Meganium, 56, 64), + BACK_PIC_FEMALE(Meganium, 56, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Meganium), + ICON(Meganium, 1), + .footprint = gMonFootprint_Meganium, + LEARNSETS(Meganium), + }, +#endif //P_FAMILY_CHIKORITA + +#if P_FAMILY_CYNDAQUIL + [SPECIES_CYNDAQUIL] = + { + .baseHP = 39, + .baseAttack = 52, + .baseDefense = 43, + .baseSpeed = 65, + .baseSpAttack = 60, + .baseSpDefense = 50, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 62, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_FLASH_FIRE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Cyndaquil"), + .cryId = CRY_CYNDAQUIL, + .natDexNum = NATIONAL_DEX_CYNDAQUIL, + .categoryName = _("Fire Mouse"), + .height = 5, + .weight = 79, + .description = COMPOUND_STRING( + "It flares flames from its back to protect\n" + "itself. The fire burns vigorously if the\n" + "Pokémon is angry. When it is tired,\n" + "it sputters with incomplete combustion."), + .pokemonScale = 539, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cyndaquil, 48, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Cyndaquil, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Cyndaquil, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Cyndaquil), + ICON(Cyndaquil, 3), + .footprint = gMonFootprint_Cyndaquil, + LEARNSETS(Cyndaquil), + .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_QUILAVA}), + }, + + [SPECIES_QUILAVA] = + { + .baseHP = 58, + .baseAttack = 64, + .baseDefense = 58, + .baseSpeed = 80, + .baseSpAttack = 80, + .baseSpDefense = 65, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 142, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_FLASH_FIRE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Quilava"), + .cryId = CRY_QUILAVA, + .natDexNum = NATIONAL_DEX_QUILAVA, + .categoryName = _("Volcano"), + .height = 9, + .weight = 190, + .description = COMPOUND_STRING( + "It intimidates foes with intense gusts of\n" + "flames and superheated air. Its quick\n" + "nimbleness lets it dodge attacks even\n" + "while scorching an enemy."), + .pokemonScale = 329, + .pokemonOffset = 11, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Quilava, 64, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Quilava, + .frontAnimId = ANIM_H_STRETCH, + BACK_PIC(Quilava, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Quilava), + ICON(Quilava, 3), + .footprint = gMonFootprint_Quilava, + LEARNSETS(Quilava), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_TYPHLOSION}, + {EVO_NONE, 0, SPECIES_TYPHLOSION_HISUIAN}), + }, + +#define TYPHLOSION_MISC_INFO \ + .catchRate = 45, \ + .expYield = 240, \ + .evYield_SpAttack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .bodyColor = BODY_COLOR_YELLOW, \ + .speciesName = _("Typhlosion"), \ + .cryId = CRY_TYPHLOSION, \ + .natDexNum = NATIONAL_DEX_TYPHLOSION, \ + .footprint = gMonFootprint_Typhlosion, \ + .formSpeciesIdTable = sTyphlosionFormSpeciesIdTable + + [SPECIES_TYPHLOSION] = + { + TYPHLOSION_MISC_INFO, + .baseHP = 78, + .baseAttack = 84, + .baseDefense = 78, + .baseSpeed = 100, + .baseSpAttack = 109, + .baseSpDefense = 85, + .types = { TYPE_FIRE, TYPE_FIRE }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_FLASH_FIRE }, + .categoryName = _("Volcano"), + .height = 17, + .weight = 795, + .description = COMPOUND_STRING( + "It can hide behind a shimmering heat haze\n" + "that it creates using its intense flames.\n" + "Typhlosion create blazing explosive\n" + "blasts that burn everything to cinders."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 268, + .trainerOffset = 1, + FRONT_PIC(Typhlosion, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Typhlosion, + .frontAnimId = ANIM_V_SHAKE, + .frontAnimDelay = 20, + BACK_PIC(Typhlosion, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Typhlosion), + ICON(Typhlosion, 3), + LEARNSETS(Typhlosion), + }, + +#if P_HISUIAN_FORMS + [SPECIES_TYPHLOSION_HISUIAN] = + { + TYPHLOSION_MISC_INFO, + .baseHP = 73, + .baseAttack = 84, + .baseDefense = 78, + .baseSpeed = 95, + .baseSpAttack = 119, + .baseSpDefense = 85, + .types = { TYPE_FIRE, TYPE_GHOST }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_FRISK }, + .categoryName = _("Ghost Flame"), + .height = 16, + .weight = 698, + .description = COMPOUND_STRING( + "Said to purify lost, forsaken souls with\n" + "its flames and guide them to the afterlife.\n" + "It's believed its form was influenced by\n" + "the energy of Mt. Coronet in ancient times."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 268, + .trainerOffset = 1, + FRONT_PIC(TyphlosionHisuian, 48, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_TyphlosionHisuian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(TyphlosionHisuian, 64, 56), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(TyphlosionHisuian), + ICON(TyphlosionHisuian, 1), + LEARNSETS(TyphlosionHisuian), + .isHisuianForm = TRUE, + }, +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_CYNDAQUIL + +#if P_FAMILY_TOTODILE + [SPECIES_TOTODILE] = + { + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 64, + .baseSpeed = 43, + .baseSpAttack = 44, + .baseSpDefense = 48, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 63, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Totodile"), + .cryId = CRY_TOTODILE, + .natDexNum = NATIONAL_DEX_TOTODILE, + .categoryName = _("Big Jaw"), + .height = 6, + .weight = 95, + .description = COMPOUND_STRING( + "Despite its small body, Totodile's jaws\n" + "are very powerful. While it may think it is\n" + "just playfully nipping, its bite has enough\n" + "strength to cause serious injury."), + .pokemonScale = 487, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Totodile, 40, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Totodile, + .frontAnimId = ANIM_H_JUMPS, + BACK_PIC(Totodile, 56, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Totodile), + ICON(Totodile, 0), + .footprint = gMonFootprint_Totodile, + LEARNSETS(Totodile), + .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_CROCONAW}), + }, + + [SPECIES_CROCONAW] = + { + .baseHP = 65, + .baseAttack = 80, + .baseDefense = 80, + .baseSpeed = 58, + .baseSpAttack = 59, + .baseSpDefense = 63, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 142, + .evYield_Attack = 1, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + .speciesName = _("Croconaw"), + .cryId = CRY_CROCONAW, + .natDexNum = NATIONAL_DEX_CROCONAW, + .categoryName = _("Big Jaw"), + .height = 11, + .weight = 250, + .description = COMPOUND_STRING( + "Once its jaws clamp down on its foe, it will\n" + "absolutely not let go. Because the tips of\n" + "its fangs are forked back like fishhooks,\n" + "they become irremovably embedded."), + .pokemonScale = 378, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Croconaw, 48, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Croconaw, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Croconaw, 56, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Croconaw), + ICON(Croconaw, 0), + .footprint = gMonFootprint_Croconaw, + LEARNSETS(Croconaw), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_FERALIGATR}), + }, + + [SPECIES_FERALIGATR] = + { + .baseHP = 85, + .baseAttack = 105, + .baseDefense = 100, + .baseSpeed = 78, + .baseSpAttack = 79, + .baseSpDefense = 83, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 239, + .evYield_Attack = 2, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Feraligatr"), + .cryId = CRY_FERALIGATR, + .natDexNum = NATIONAL_DEX_FERALIGATR, + .categoryName = _("Big Jaw"), + .height = 23, + .weight = 888, + .description = COMPOUND_STRING( + "It opens its huge mouth to intimidate\n" + "enemies. In battle, it runs using its thick\n" + "and powerful hind legs to charge the\n" + "foe with incredible speed."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 342, + .trainerOffset = 7, + FRONT_PIC(Feraligatr, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Feraligatr, + .frontAnimId = ANIM_H_SHAKE, + .frontAnimDelay = 5, + BACK_PIC(Feraligatr, 56, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Feraligatr), + ICON(Feraligatr, 0), + .footprint = gMonFootprint_Feraligatr, + LEARNSETS(Feraligatr), + }, +#endif //P_FAMILY_TOTODILE + +#if P_FAMILY_SENTRET + [SPECIES_SENTRET] = + { + .baseHP = 35, + .baseAttack = 46, + .baseDefense = 34, + .baseSpeed = 20, + .baseSpAttack = 35, + .baseSpDefense = 45, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 255, + .expYield = 43, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_RUN_AWAY, ABILITY_KEEN_EYE, ABILITY_FRISK }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Sentret"), + .cryId = CRY_SENTRET, + .natDexNum = NATIONAL_DEX_SENTRET, + .categoryName = _("Scout"), + .height = 8, + .weight = 60, + .description = COMPOUND_STRING( + "They take turns standing guard when it\n" + "is time to sleep. The sentry awakens the\n" + "others if it senses danger. If one becomes\n" + "separated, it turns sleepless with fear."), + .pokemonScale = 439, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Sentret, 40, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Sentret, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Sentret, 48, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Sentret), + ICON(Sentret, 2), + .footprint = gMonFootprint_Sentret, + LEARNSETS(Sentret), + .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_FURRET}), + }, + + [SPECIES_FURRET] = + { + .baseHP = 85, + .baseAttack = 76, + .baseDefense = 64, + .baseSpeed = 90, + .baseSpAttack = 45, + .baseSpDefense = 55, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 90, + .expYield = 145, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_RUN_AWAY, ABILITY_KEEN_EYE, ABILITY_FRISK }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Furret"), + .cryId = CRY_FURRET, + .natDexNum = NATIONAL_DEX_FURRET, + .categoryName = _("Long Body"), + .height = 18, + .weight = 325, + .description = COMPOUND_STRING( + "A Furret has a very slim build. When under\n" + "attack, it can squirm through narrow\n" + "spaces and get away. In spite of its short\n" + "limbs, it is very nimble and fleet."), + .pokemonScale = 346, + .pokemonOffset = 11, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Furret, 48, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Furret, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + BACK_PIC(Furret, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Furret), + ICON(Furret, 2), + .footprint = gMonFootprint_Furret, + LEARNSETS(Furret), + }, +#endif //P_FAMILY_SENTRET + +#if P_FAMILY_HOOTHOOT + [SPECIES_HOOTHOOT] = + { + .baseHP = 60, + .baseAttack = 30, + .baseDefense = 30, + .baseSpeed = 50, + .baseSpAttack = 36, + .baseSpDefense = 56, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 255, + .expYield = 52, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_INSOMNIA, ABILITY_KEEN_EYE, ABILITY_TINTED_LENS }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Hoothoot"), + .cryId = CRY_HOOTHOOT, + .natDexNum = NATIONAL_DEX_HOOTHOOT, + .categoryName = _("Owl"), + .height = 7, + .weight = 212, + .description = COMPOUND_STRING( + "It has an internal organ that senses\n" + "the earth's rotation. Using this special\n" + "organ, a Hoothoot begins hooting at\n" + "precisely the same time every day."), + .pokemonScale = 380, + .pokemonOffset = -2, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Hoothoot, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Hoothoot, + .frontAnimId = ANIM_V_SLIDE_SLOW, + BACK_PIC(Hoothoot, 56, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Hoothoot), + ICON(Hoothoot, 2), + .footprint = gMonFootprint_Hoothoot, + LEARNSETS(Hoothoot), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_NOCTOWL}), + }, + + [SPECIES_NOCTOWL] = + { + .baseHP = 100, + .baseAttack = 50, + .baseDefense = 50, + .baseSpeed = 70, + .baseSpAttack = P_UPDATED_STATS >= GEN_7 ? 86 : 76, + .baseSpDefense = 96, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 90, + .expYield = 158, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_INSOMNIA, ABILITY_KEEN_EYE, ABILITY_TINTED_LENS }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Noctowl"), + .cryId = CRY_NOCTOWL, + .natDexNum = NATIONAL_DEX_NOCTOWL, + .categoryName = _("Owl"), + .height = 16, + .weight = 408, + .description = COMPOUND_STRING( + "It unfailingly catches prey in darkness.\n" + "Noctowl owe their success to superior\n" + "vision that allows them to see in minimal\n" + "light, and to their supple and silent wings."), + .pokemonScale = 278, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Noctowl, 40, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Noctowl, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Noctowl, 48, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Noctowl), + ICON(Noctowl, 2), + .footprint = gMonFootprint_Noctowl, + LEARNSETS(Noctowl), + }, +#endif //P_FAMILY_HOOTHOOT + +#if P_FAMILY_LEDYBA + [SPECIES_LEDYBA] = + { + .baseHP = 40, + .baseAttack = 20, + .baseDefense = 30, + .baseSpeed = 55, + .baseSpAttack = 40, + .baseSpDefense = 80, + .types = { TYPE_BUG, TYPE_FLYING }, + .catchRate = 255, + .expYield = 53, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_EARLY_BIRD, ABILITY_RATTLED }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Ledyba"), + .cryId = CRY_LEDYBA, + .natDexNum = NATIONAL_DEX_LEDYBA, + .categoryName = _("Five Star"), + .height = 10, + .weight = 108, + .description = COMPOUND_STRING( + "Ledyba communicate using a fluid that\n" + "they secrete from where the legs join the\n" + "body. They are said to convey feelings to\n" + "others by altering the fluid's scent."), + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Ledyba, 48, 48), + FRONT_PIC_FEMALE(Ledyba, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Ledyba, + .frontAnimId = ANIM_V_JUMPS_SMALL, + BACK_PIC(Ledyba, 56, 48), + BACK_PIC_FEMALE(Ledyba, 56, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Ledyba), + ICON(Ledyba, 0), + .footprint = gMonFootprint_Ledyba, + LEARNSETS(Ledyba), + .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_LEDIAN}), + }, + + [SPECIES_LEDIAN] = + { + .baseHP = 55, + .baseAttack = 35, + .baseDefense = 50, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 110, + .types = { TYPE_BUG, TYPE_FLYING }, + .catchRate = 90, + .expYield = 137, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_EARLY_BIRD, ABILITY_IRON_FIST }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Ledian"), + .cryId = CRY_LEDIAN, + .natDexNum = NATIONAL_DEX_LEDIAN, + .categoryName = _("Five Star"), + .height = 14, + .weight = 356, + .description = COMPOUND_STRING( + "It is said that in lands with clean air,\n" + "where the stars fill the sky, there live\n" + "many Ledian. For good reason, they use\n" + "the light of the stars as energy."), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Ledian, 48, 56), + FRONT_PIC_FEMALE(Ledian, 48, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Ledian, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 10, + BACK_PIC(Ledian, 64, 64), + BACK_PIC_FEMALE(Ledian, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Ledian), + ICON(Ledian, 0), + .footprint = gMonFootprint_Ledian, + LEARNSETS(Ledian), + }, +#endif //P_FAMILY_LEDYBA + +#if P_FAMILY_SPINARAK + [SPECIES_SPINARAK] = + { + .baseHP = 40, + .baseAttack = 60, + .baseDefense = 40, + .baseSpeed = 30, + .baseSpAttack = 40, + .baseSpDefense = 40, + .types = { TYPE_BUG, TYPE_POISON }, + .catchRate = 255, + .expYield = 50, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_INSOMNIA, ABILITY_SNIPER }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Spinarak"), + .cryId = CRY_SPINARAK, + .natDexNum = NATIONAL_DEX_SPINARAK, + .categoryName = _("String Spit"), + .height = 5, + .weight = 85, + .description = COMPOUND_STRING( + "The web it spins can be considered its\n" + "second nervous system. It is said that a\n" + "Spinarak determines its prey by the tiny\n" + "vibrations it feels through the web."), + .pokemonScale = 414, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Spinarak, 48, 32), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Spinarak, + .frontAnimId = ANIM_CIRCLE_C_CLOCKWISE_SLOW, + BACK_PIC(Spinarak, 64, 32), + .backPicYOffset = 16, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Spinarak), + ICON(Spinarak, 1), + .footprint = gMonFootprint_Spinarak, + LEARNSETS(Spinarak), + .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARIADOS}), + }, + + [SPECIES_ARIADOS] = + { + .baseHP = 70, + .baseAttack = 90, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = P_UPDATED_STATS >= GEN_7 ? 70 : 60, + .types = { TYPE_BUG, TYPE_POISON }, + .catchRate = 90, + .expYield = 140, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_INSOMNIA, ABILITY_SNIPER }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Ariados"), + .cryId = CRY_ARIADOS, + .natDexNum = NATIONAL_DEX_ARIADOS, + .categoryName = _("Long Leg"), + .height = 11, + .weight = 335, + .description = COMPOUND_STRING( + "Its feet are tipped with tiny hooked claws\n" + "that enable it to scuttle on ceilings and\n" + "vertical walls. It constricts its foe with\n" + "thin and strong silk webbing."), + .pokemonScale = 316, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Ariados, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Ariados, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Ariados, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Ariados), + ICON(Ariados, 0), + .footprint = gMonFootprint_Ariados, + LEARNSETS(Ariados), + }, +#endif //P_FAMILY_SPINARAK + +#if P_FAMILY_CHINCHOU + [SPECIES_CHINCHOU] = + { + .baseHP = 75, + .baseAttack = 38, + .baseDefense = 38, + .baseSpeed = 67, + .baseSpAttack = 56, + .baseSpDefense = 56, + .types = { TYPE_WATER, TYPE_ELECTRIC }, + .catchRate = 190, + .expYield = 66, + .evYield_HP = 1, + .itemRare = ITEM_DEEP_SEA_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_VOLT_ABSORB, ABILITY_ILLUMINATE, ABILITY_WATER_ABSORB }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Chinchou"), + .cryId = CRY_CHINCHOU, + .natDexNum = NATIONAL_DEX_CHINCHOU, + .categoryName = _("Angler"), + .height = 5, + .weight = 120, + .description = COMPOUND_STRING( + "When it senses danger, it discharges\n" + "positive and negative electricity from its\n" + "two antennae. It lives in depths beyond\n" + "sunlight's reach."), + .pokemonScale = 424, + .pokemonOffset = -2, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Chinchou, 64, 48), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Chinchou, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Chinchou, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Chinchou), + ICON(Chinchou, 2), + .footprint = gMonFootprint_Chinchou, + LEARNSETS(Chinchou), + .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_LANTURN}), + }, + + [SPECIES_LANTURN] = + { + .baseHP = 125, + .baseAttack = 58, + .baseDefense = 58, + .baseSpeed = 67, + .baseSpAttack = 76, + .baseSpDefense = 76, + .types = { TYPE_WATER, TYPE_ELECTRIC }, + .catchRate = 75, + .expYield = 161, + .evYield_HP = 2, + .itemRare = ITEM_DEEP_SEA_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_VOLT_ABSORB, ABILITY_ILLUMINATE, ABILITY_WATER_ABSORB }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Lanturn"), + .cryId = CRY_LANTURN, + .natDexNum = NATIONAL_DEX_LANTURN, + .categoryName = _("Light"), + .height = 12, + .weight = 225, + .description = COMPOUND_STRING( + "The light-emitting orbs on its back are\n" + "very bright. They are formed from a part of\n" + "its dorsal fin. This Pokémon illuminates\n" + "the inky darkness of deep seas."), + .pokemonScale = 269, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Lanturn, 64, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Lanturn, + .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, + BACK_PIC(Lanturn, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(Lanturn), + ICON(Lanturn, 0), + .footprint = gMonFootprint_Lanturn, + LEARNSETS(Lanturn), + }, +#endif //P_FAMILY_CHINCHOU + +#if P_FAMILY_TOGEPI +#define TOGEPI_FAMILY_TYPE (P_UPDATED_TYPES >= GEN_6 ? TYPE_FAIRY : TYPE_NORMAL) + + [SPECIES_TOGEPI] = + { + .baseHP = 35, + .baseAttack = 20, + .baseDefense = 65, + .baseSpeed = 20, + .baseSpAttack = 40, + .baseSpDefense = 65, + .types = { TOGEPI_FAMILY_TYPE, TOGEPI_FAMILY_TYPE }, + .catchRate = 190, + .expYield = 49, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_HUSTLE, ABILITY_SERENE_GRACE, ABILITY_SUPER_LUCK }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Togepi"), + .cryId = CRY_TOGEPI, + .natDexNum = NATIONAL_DEX_TOGEPI, + .categoryName = _("Spike Ball"), + .height = 3, + .weight = 15, + .description = COMPOUND_STRING( + "As its energy, it uses the feelings of\n" + "compassion and pleasure exuded by\n" + "people and Pokémon. It stores up happy\n" + "feelings in its shell, then shares them out."), + .pokemonScale = 507, + .pokemonOffset = 23, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Togepi, 24, 32), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Togepi, + .frontAnimId = ANIM_V_JUMPS_BIG, + BACK_PIC(Togepi, 48, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Togepi), + ICON(Togepi, 0), + .footprint = gMonFootprint_Togepi, + LEARNSETS(Togepi), + .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}), + }, + + [SPECIES_TOGETIC] = + { + .baseHP = 55, + .baseAttack = 40, + .baseDefense = 85, + .baseSpeed = 40, + .baseSpAttack = 80, + .baseSpDefense = 105, + .types = { TOGEPI_FAMILY_TYPE, TYPE_FLYING }, + .catchRate = 75, + .expYield = 142, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_HUSTLE, ABILITY_SERENE_GRACE, ABILITY_SUPER_LUCK }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Togetic"), + .cryId = CRY_TOGETIC, + .natDexNum = NATIONAL_DEX_TOGETIC, + .categoryName = _("Happiness"), + .height = 6, + .weight = 32, + .description = COMPOUND_STRING( + "It is said to be a Pokémon that brings good\n" + "fortune. When it spots someone who is pure\n" + "of heart, a Togetic appears and shares its\n" + "happiness with that person."), + .pokemonScale = 424, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Togetic, 32, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Togetic, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Togetic, 56, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Togetic), + ICON(Togetic, 0), + .footprint = gMonFootprint_Togetic, + LEARNSETS(Togetic), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_TOGEKISS}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_TOGEKISS] = + { + .baseHP = 85, + .baseAttack = 50, + .baseDefense = 95, + .baseSpeed = 80, + .baseSpAttack = 120, + .baseSpDefense = 115, + #if P_UPDATED_TYPES >= GEN_6 + .types = { TOGEPI_FAMILY_TYPE, TYPE_FLYING }, + #else + .types = { TYPE_NORMAL, TYPE_FLYING }, + #endif + .catchRate = 30, + .expYield = 245, + .evYield_SpAttack = 2, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_HUSTLE, ABILITY_SERENE_GRACE, ABILITY_SUPER_LUCK }, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = TRUE, + .speciesName = _("Togekiss"), + .cryId = CRY_TOGEKISS, + .natDexNum = NATIONAL_DEX_TOGEKISS, + .categoryName = _("Jubilee"), + .height = 15, + .weight = 380, + .description = COMPOUND_STRING( + "As everyone knows, it visits peaceful\n" + "regions, bringing them gifts of kindness\n" + "and sweet blessings. It will never appear\n" + "where there is strife."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(Togekiss, 64, 56), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Togekiss, + .frontAnimId = ANIM_SWING_CONVEX, + .enemyMonElevation = 14, + BACK_PIC(Togekiss, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Togekiss), + ICON(Togekiss, 2), + .footprint = gMonFootprint_Togekiss, + LEARNSETS(Togekiss), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TOGEPI + +#if P_FAMILY_NATU + [SPECIES_NATU] = + { + .baseHP = 40, + .baseAttack = 50, + .baseDefense = 45, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 45, + .types = { TYPE_PSYCHIC, TYPE_FLYING }, + .catchRate = 190, + .expYield = 64, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_SYNCHRONIZE, ABILITY_EARLY_BIRD, ABILITY_MAGIC_BOUNCE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Natu"), + .cryId = CRY_NATU, + .natDexNum = NATIONAL_DEX_NATU, + .categoryName = _("Tiny Bird"), + .height = 2, + .weight = 20, + .description = COMPOUND_STRING( + "It runs up short trees that grow on the\n" + "savanna to peck at new shoots.\n" + "A Natu's eyes look as if they are\n" + "always observing something."), + .pokemonScale = 610, + .pokemonOffset = 25, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Natu, 32, 32), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_Natu, + .frontAnimId = ANIM_H_JUMPS, + .frontAnimDelay = 30, + BACK_PIC(Natu, 40, 40), + .backPicYOffset = 15, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Natu), + ICON(Natu, 1), + .footprint = gMonFootprint_Natu, + LEARNSETS(Natu), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_XATU}), + }, + + [SPECIES_XATU] = + { + .baseHP = 65, + .baseAttack = 75, + .baseDefense = 70, + .baseSpeed = 95, + .baseSpAttack = 95, + .baseSpDefense = 70, + .types = { TYPE_PSYCHIC, TYPE_FLYING }, + .catchRate = 75, + .expYield = 165, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_SYNCHRONIZE, ABILITY_EARLY_BIRD, ABILITY_MAGIC_BOUNCE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Xatu"), + .cryId = CRY_XATU, + .natDexNum = NATIONAL_DEX_XATU, + .categoryName = _("Mystic"), + .height = 15, + .weight = 150, + .description = COMPOUND_STRING( + "It has the enigmatic power of foreseeing\n" + "the future. Some people in different lands\n" + "have long believed that Xatu are\n" + "emissaries from another world."), + .pokemonScale = 256, + .pokemonOffset = 6, + .trainerScale = 318, + .trainerOffset = 4, + FRONT_PIC(Xatu, 40, 56), + FRONT_PIC_FEMALE(Xatu, 40, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Xatu, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Xatu, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Xatu), + ICON(Xatu, 1), + .footprint = gMonFootprint_Xatu, + LEARNSETS(Xatu), + }, +#endif //P_FAMILY_NATU + +#if P_FAMILY_MAREEP + [SPECIES_MAREEP] = + { + .baseHP = 55, + .baseAttack = 40, + .baseDefense = 40, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = 45, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 235, + .expYield = 56, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD }, + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_PLUS }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Mareep"), + .cryId = CRY_MAREEP, + .natDexNum = NATIONAL_DEX_MAREEP, + .categoryName = _("Wool"), + .height = 6, + .weight = 78, + .description = COMPOUND_STRING( + "Its fluffy wool rubs together and builds\n" + "a static charge. The more energy is\n" + "charged, the more brightly the lightbulb\n" + "at the tip of its tail glows."), + .pokemonScale = 379, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Mareep, 40, 48), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Mareep, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .frontAnimDelay = 50, + BACK_PIC(Mareep, 56, 40), + .backPicYOffset = 15, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Mareep), + ICON(Mareep, 0), + .footprint = gMonFootprint_Mareep, + LEARNSETS(Mareep), + .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_FLAAFFY}), + }, + + [SPECIES_FLAAFFY] = + { + .baseHP = 70, + .baseAttack = 55, + .baseDefense = 55, + .baseSpeed = 45, + .baseSpAttack = 80, + .baseSpDefense = 60, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 120, + .expYield = 128, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD }, + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_PLUS }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Flaaffy"), + .cryId = CRY_FLAAFFY, + .natDexNum = NATIONAL_DEX_FLAAFFY, + .categoryName = _("Wool"), + .height = 8, + .weight = 133, + .description = COMPOUND_STRING( + "Its fleece quality changes to generate\n" + "strong static electricity with a small\n" + "amount of wool. The bare, slick parts of its\n" + "hide are shielded against electricity."), + .pokemonScale = 372, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Flaaffy, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Flaaffy, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Flaaffy, 48, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Flaaffy), + ICON(Flaaffy, 0), + .footprint = gMonFootprint_Flaaffy, + LEARNSETS(Flaaffy), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_AMPHAROS}), + }, + +#define AMPHAROS_MISC_INFO \ + .catchRate = 45, \ + .evYield_SpAttack = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD },\ + .bodyColor = BODY_COLOR_YELLOW, \ + .speciesName = _("Ampharos"), \ + .natDexNum = NATIONAL_DEX_AMPHAROS, \ + .categoryName = _("Light"), \ + .height = 14, \ + .weight = 615, \ + .pokemonScale = 256, \ + .pokemonOffset = 4, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Ampharos, \ + LEARNSETS(Ampharos), \ + .formSpeciesIdTable = sAmpharosFormSpeciesIdTable, \ + .formChangeTable = sAmpharosFormChangeTable + +#define AMPHAROS_DEFENSE (P_UPDATED_STATS >= GEN_6 ? 85 : 75) + + [SPECIES_AMPHAROS] = + { + AMPHAROS_MISC_INFO, + .baseHP = 90, + .baseAttack = 75, + .baseDefense = AMPHAROS_DEFENSE, + .baseSpeed = 55, + .baseSpAttack = 115, + .baseSpDefense = 90, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .expYield = 230, + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_PLUS }, + .cryId = CRY_AMPHAROS, + .description = COMPOUND_STRING( + "It gives off so much light that it can be\n" + "seen even from space. People in the old\n" + "days used its light to send signals back\n" + "and forth with others far away."), + FRONT_PIC(Ampharos, 56, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Ampharos, + .frontAnimId = ANIM_FLASH_YELLOW, + .frontAnimDelay = 10, + BACK_PIC(Ampharos, 56, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(Ampharos), + ICON(Ampharos, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_AMPHAROS_MEGA] = + { + AMPHAROS_MISC_INFO, + .baseHP = 90, + .baseAttack = 95, + .baseDefense = AMPHAROS_DEFENSE + 20, + .baseSpeed = 45, + .baseSpAttack = 165, + .baseSpDefense = 110, + .types = { TYPE_ELECTRIC, TYPE_DRAGON }, + .expYield = 275, + .abilities = { ABILITY_MOLD_BREAKER, ABILITY_MOLD_BREAKER, ABILITY_MOLD_BREAKER }, + .cryId = CRY_AMPHAROS_MEGA, + .description = COMPOUND_STRING( + "Massive amounts of energy intensely\n" + "stimulated Ampharos's cells, apparently\n" + "awakening its long-sleeping dragon's\n" + "blood."), + FRONT_PIC(AmpharosMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_AmpharosMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(AmpharosMega, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(AmpharosMega), + ICON(AmpharosMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAREEP + +#if P_FAMILY_MARILL +#if P_GEN_3_CROSS_EVOS + [SPECIES_AZURILL] = + { + .baseHP = 50, + .baseAttack = 20, + .baseDefense = 40, + .baseSpeed = 20, + .baseSpAttack = 20, + .baseSpDefense = 40, + #if P_UPDATED_TYPES >= GEN_6 + .types = { TYPE_NORMAL, TYPE_FAIRY }, + #else + .types = { TYPE_NORMAL, TYPE_NORMAL }, + #endif + .catchRate = 150, + .expYield = 38, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_THICK_FAT, ABILITY_HUGE_POWER, ABILITY_SAP_SIPPER }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Azurill"), + .cryId = CRY_AZURILL, + .natDexNum = NATIONAL_DEX_AZURILL, + .categoryName = _("Polka Dot"), + .height = 2, + .weight = 20, + .description = COMPOUND_STRING( + "Its tail, which is packed with nutrition,\n" + "is very bouncy like a rubber ball. On sunny\n" + "days they gather at the edge of water and\n" + "splash about for fun."), + .pokemonScale = 603, + .pokemonOffset = 23, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Azurill, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Azurill, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Azurill, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Azurill), + ICON(Azurill, 0), + .footprint = gMonFootprint_Azurill, + LEARNSETS(Azurill), + .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_MARILL}), + }, +#endif //P_GEN_3_CROSS_EVOS + + [SPECIES_MARILL] = + { + .baseHP = 70, + .baseAttack = 20, + .baseDefense = 50, + .baseSpeed = 40, + .baseSpAttack = 20, + .baseSpDefense = 50, + #if P_UPDATED_TYPES >= GEN_6 + .types = { TYPE_WATER, TYPE_FAIRY }, + #else + .types = { TYPE_WATER, TYPE_WATER }, + #endif + .catchRate = 190, + .expYield = 88, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_THICK_FAT, ABILITY_HUGE_POWER, ABILITY_SAP_SIPPER }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Marill"), + .cryId = CRY_MARILL, + .natDexNum = NATIONAL_DEX_MARILL, + .categoryName = _("Aqua Mouse"), + .height = 4, + .weight = 85, + .description = COMPOUND_STRING( + "Its body is covered with water-repellent\n" + "fur. Because of the fur, it can swim\n" + "through water at high speed without being\n" + "slowed by the water's resistance."), + .pokemonScale = 476, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Marill, 56, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Marill, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Marill, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Marill), + ICON(Marill, 0), + .footprint = gMonFootprint_Marill, + LEARNSETS(Marill), + .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_AZUMARILL}), + }, + + [SPECIES_AZUMARILL] = + { + .baseHP = 100, + .baseAttack = 50, + .baseDefense = 80, + .baseSpeed = 50, + .baseSpAttack = P_UPDATED_STATS >= GEN_6 ? 60 : 50, + .baseSpDefense = 80, + #if P_UPDATED_TYPES >= GEN_6 + .types = { TYPE_WATER, TYPE_FAIRY }, + #else + .types = { TYPE_WATER, TYPE_WATER }, + #endif + .catchRate = 75, + .expYield = 189, + .evYield_HP = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_THICK_FAT, ABILITY_HUGE_POWER, ABILITY_SAP_SIPPER }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Azumarill"), + .cryId = CRY_AZUMARILL, + .natDexNum = NATIONAL_DEX_AZUMARILL, + .categoryName = _("Aqua Rabbit"), + .height = 8, + .weight = 285, + .description = COMPOUND_STRING( + "It lives in water virtually all day long.\n" + "Its body color and pattern act as\n" + "camouflage that makes it tough for\n" + "enemies to spot in water."), + .pokemonScale = 448, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Azumarill, 56, 64), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Azumarill, + .frontAnimId = ANIM_SHRINK_GROW, + BACK_PIC(Azumarill, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Azumarill), + ICON(Azumarill, 0), + .footprint = gMonFootprint_Azumarill, + LEARNSETS(Azumarill), + }, +#endif //P_FAMILY_MARILL + +#if P_FAMILY_SUDOWOODO +#if P_GEN_4_CROSS_EVOS + [SPECIES_BONSLY] = + { + .baseHP = 50, + .baseAttack = 80, + .baseDefense = 95, + .baseSpeed = 10, + .baseSpAttack = 10, + .baseSpDefense = 45, + .types = { TYPE_ROCK, TYPE_ROCK }, + .catchRate = 255, + .expYield = 58, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_RATTLED }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Bonsly"), + .cryId = CRY_BONSLY, + .natDexNum = NATIONAL_DEX_BONSLY, + .categoryName = _("Bonsai"), + .height = 5, + .weight = 150, + .description = COMPOUND_STRING( + "Bonsly prefers an arid atmosphere.\n" + "In order to adjust the level of fluids\n" + "in its body, it exudes water from its eyes.\n" + "This makes it appear to be crying."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Bonsly, 32, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Bonsly, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES, + BACK_PIC(Bonsly, 40, 64), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Bonsly), + ICON(Bonsly, 1), + .footprint = gMonFootprint_Bonsly, + LEARNSETS(Bonsly), + .evolutions = EVOLUTION({EVO_MOVE, MOVE_MIMIC, SPECIES_SUDOWOODO}), + }, +#endif //P_GEN_4_CROSS_EVOS + + [SPECIES_SUDOWOODO] = + { + .baseHP = 70, + .baseAttack = 100, + .baseDefense = 115, + .baseSpeed = 30, + .baseSpAttack = 30, + .baseSpDefense = 65, + .types = { TYPE_ROCK, TYPE_ROCK }, + .catchRate = 65, + .expYield = 144, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_RATTLED }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Sudowoodo"), + .cryId = CRY_SUDOWOODO, + .natDexNum = NATIONAL_DEX_SUDOWOODO, + .categoryName = _("Imitation"), + .height = 12, + .weight = 380, + .description = COMPOUND_STRING( + "It mimics a tree to avoid being attacked\n" + "by enemies. But since its forelegs\n" + "remain green throughout the year, it is\n" + "easily identified as a fake in the winter."), + .pokemonScale = 305, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Sudowoodo, 48, 56), + FRONT_PIC_FEMALE(Sudowoodo, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Sudowoodo, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(Sudowoodo, 48, 56), + BACK_PIC_FEMALE(Sudowoodo, 48, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Sudowoodo), + ICON(Sudowoodo, 1), + .footprint = gMonFootprint_Sudowoodo, + LEARNSETS(Sudowoodo), + }, +#endif //P_FAMILY_SUDOWOODO + +#if P_FAMILY_HOPPIP + [SPECIES_HOPPIP] = + { + .baseHP = 35, + .baseAttack = 35, + .baseDefense = 40, + .baseSpeed = 50, + .baseSpAttack = 35, + .baseSpDefense = 55, + .types = { TYPE_GRASS, TYPE_FLYING }, + .catchRate = 255, + .expYield = 50, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_INFILTRATOR }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Hoppip"), + .cryId = CRY_HOPPIP, + .natDexNum = NATIONAL_DEX_HOPPIP, + .categoryName = _("Cottonweed"), + .height = 4, + .weight = 5, + .description = COMPOUND_STRING( + "This Pokémon drifts and floats with the\n" + "wind. If it senses the approach of strong\n" + "winds, a Hoppip links leaves with others\n" + "to prepare against being blown away."), + .pokemonScale = 562, + .pokemonOffset = -7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Hoppip, 64, 56), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Hoppip, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 15, + BACK_PIC(Hoppip, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Hoppip), + ICON(Hoppip, 1), + .footprint = gMonFootprint_Hoppip, + LEARNSETS(Hoppip), + .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_SKIPLOOM}), + }, + + [SPECIES_SKIPLOOM] = + { + .baseHP = 55, + .baseAttack = 45, + .baseDefense = 50, + .baseSpeed = 80, + .baseSpAttack = 45, + .baseSpDefense = 65, + .types = { TYPE_GRASS, TYPE_FLYING }, + .catchRate = 120, + .expYield = 119, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_INFILTRATOR }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Skiploom"), + .cryId = CRY_SKIPLOOM, + .natDexNum = NATIONAL_DEX_SKIPLOOM, + .categoryName = _("Cottonweed"), + .height = 6, + .weight = 10, + .description = COMPOUND_STRING( + "It blossoms when the temperature rises\n" + "above 64 degrees F. Because its flower's\n" + "blooming changes with the temperature,\n" + "it is sometimes used as a thermometer."), + .pokemonScale = 387, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Skiploom, 40, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Skiploom, + .frontAnimId = ANIM_RISING_WOBBLE, + .enemyMonElevation = 15, + BACK_PIC(Skiploom, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Skiploom), + ICON(Skiploom, 1), + .footprint = gMonFootprint_Skiploom, + LEARNSETS(Skiploom), + .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_JUMPLUFF}), + }, + + [SPECIES_JUMPLUFF] = + { + .baseHP = 75, + .baseAttack = 55, + .baseDefense = 70, + .baseSpeed = 110, + .baseSpAttack = 55, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 95 : 85, + .types = { TYPE_GRASS, TYPE_FLYING }, + .catchRate = 45, + .expYield = 207, + .evYield_Speed = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_LEAF_GUARD, ABILITY_INFILTRATOR }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Jumpluff"), + .cryId = CRY_JUMPLUFF, + .natDexNum = NATIONAL_DEX_JUMPLUFF, + .categoryName = _("Cottonweed"), + .height = 8, + .weight = 30, + .description = COMPOUND_STRING( + "Jumpluff ride warm southern winds to\n" + "cross the sea and fly to foreign lands.\n" + "This Pokémon lands when it encounters\n" + "cold air while it is floating."), + .pokemonScale = 418, + .pokemonOffset = -4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Jumpluff, 64, 56), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Jumpluff, + .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, + .enemyMonElevation = 9, + BACK_PIC(Jumpluff, 56, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Jumpluff), + ICON(Jumpluff, 2), + .footprint = gMonFootprint_Jumpluff, + LEARNSETS(Jumpluff), + }, +#endif //P_FAMILY_HOPPIP + +#if P_FAMILY_AIPOM + [SPECIES_AIPOM] = + { + .baseHP = 55, + .baseAttack = 70, + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 40, + .baseSpDefense = 55, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 45, + .expYield = 72, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_RUN_AWAY, ABILITY_PICKUP, ABILITY_SKILL_LINK }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Aipom"), + .cryId = CRY_AIPOM, + .natDexNum = NATIONAL_DEX_AIPOM, + .categoryName = _("Long Tail"), + .height = 8, + .weight = 115, + .description = COMPOUND_STRING( + "Its tail ends with a dexterous, handlike\n" + "appendage. However, because it uses the\n" + "tail so much, Aipom's real hands have\n" + "become rather clumsy."), + .pokemonScale = 363, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Aipom, 32, 64), + FRONT_PIC_FEMALE(Aipom, 32, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Aipom, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + BACK_PIC(Aipom, 64, 64), + BACK_PIC_FEMALE(Aipom, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Aipom), + ICON(Aipom, 2), + .footprint = gMonFootprint_Aipom, + LEARNSETS(Aipom), + .evolutions = EVOLUTION({EVO_MOVE, MOVE_DOUBLE_HIT, SPECIES_AMBIPOM}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_AMBIPOM] = + { + .baseHP = 75, + .baseAttack = 100, + .baseDefense = 66, + .baseSpeed = 115, + .baseSpAttack = 60, + .baseSpDefense = 66, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 45, + .expYield = 169, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 100, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_TECHNICIAN, ABILITY_PICKUP, ABILITY_SKILL_LINK }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Ambipom"), + .cryId = CRY_AMBIPOM, + .natDexNum = NATIONAL_DEX_AMBIPOM, + .categoryName = _("Long Tail"), + .height = 12, + .weight = 203, + .description = COMPOUND_STRING( + "They live on large trees. Split into two,\n" + "the tails are so adept at handling and\n" + "doing things, Ambipom rarely uses\n" + "its hands now."), + .pokemonScale = 282, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Ambipom, 64, 64), + FRONT_PIC_FEMALE(Ambipom, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Ambipom, + .frontAnimId = ANIM_BACK_AND_LUNGE, + BACK_PIC(Ambipom, 64, 64), + BACK_PIC_FEMALE(Ambipom, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Ambipom), + ICON(Ambipom, 2), + .footprint = gMonFootprint_Ambipom, + LEARNSETS(Ambipom), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_AIPOM + +#if P_FAMILY_SUNKERN + [SPECIES_SUNKERN] = + { + .baseHP = 30, + .baseAttack = 30, + .baseDefense = 30, + .baseSpeed = 30, + .baseSpAttack = 30, + .baseSpDefense = 30, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 235, + .expYield = 36, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SOLAR_POWER, ABILITY_EARLY_BIRD }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Sunkern"), + .cryId = CRY_SUNKERN, + .natDexNum = NATIONAL_DEX_SUNKERN, + .categoryName = _("Seed"), + .height = 3, + .weight = 18, + .description = COMPOUND_STRING( + "Sunkern try to minimize movement to\n" + "conserve the nutrients they have stored\n" + "in their bodies for evolution. They will\n" + "not eat, subsisting only on morning dew."), + .pokemonScale = 541, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Sunkern, 32, 40), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_Sunkern, + .frontAnimId = ANIM_H_JUMPS, + BACK_PIC(Sunkern, 48, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Sunkern), + ICON(Sunkern, 1), + .footprint = gMonFootprint_Sunkern, + LEARNSETS(Sunkern), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}), + }, + + [SPECIES_SUNFLORA] = + { + .baseHP = 75, + .baseAttack = 75, + .baseDefense = 55, + .baseSpeed = 30, + .baseSpAttack = 105, + .baseSpDefense = 85, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 120, + .expYield = 149, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SOLAR_POWER, ABILITY_EARLY_BIRD }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Sunflora"), + .cryId = CRY_SUNFLORA, + .natDexNum = NATIONAL_DEX_SUNFLORA, + .categoryName = _("Sun"), + .height = 8, + .weight = 85, + .description = COMPOUND_STRING( + "Sunflora convert solar energy into\n" + "nutrition. They are highly active in the\n" + "warm daytime but suddenly stop moving as\n" + "soon as the sun sets."), + .pokemonScale = 444, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Sunflora, 40, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Sunflora, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Sunflora, 56, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Sunflora), + ICON(Sunflora, 1), + .footprint = gMonFootprint_Sunflora, + LEARNSETS(Sunflora), + }, +#endif //P_FAMILY_SUNKERN + +#if P_FAMILY_YANMA + [SPECIES_YANMA] = + { + .baseHP = 65, + .baseAttack = 65, + .baseDefense = 45, + .baseSpeed = 95, + .baseSpAttack = 75, + .baseSpDefense = 45, + .types = { TYPE_BUG, TYPE_FLYING }, + .catchRate = 75, + .expYield = 78, + .evYield_Speed = 1, + .itemRare = ITEM_WIDE_LENS, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SPEED_BOOST, ABILITY_COMPOUND_EYES, ABILITY_FRISK }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Yanma"), + .cryId = CRY_YANMA, + .natDexNum = NATIONAL_DEX_YANMA, + .categoryName = _("Clear Wing"), + .height = 12, + .weight = 380, + .description = COMPOUND_STRING( + "It can see 360 degrees without moving\n" + "its eyes. It is a great flier capable of\n" + "making sudden stops and turning midair to\n" + "quickly chase down targeted prey."), + .pokemonScale = 274, + .pokemonOffset = -1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Yanma, 64, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Yanma, + .frontAnimId = ANIM_FIGURE_8, + .enemyMonElevation = 13, + BACK_PIC(Yanma, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Yanma), + ICON(Yanma, 1), + .footprint = gMonFootprint_Yanma, + LEARNSETS(Yanma), + .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_YANMEGA}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_YANMEGA] = + { + .baseHP = 86, + .baseAttack = 76, + .baseDefense = 86, + .baseSpeed = 95, + .baseSpAttack = 116, + .baseSpDefense = 56, + .types = { TYPE_BUG, TYPE_FLYING }, + .catchRate = 30, + .expYield = 180, + .evYield_Attack = 2, + .itemRare = ITEM_WIDE_LENS, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SPEED_BOOST, ABILITY_TINTED_LENS, ABILITY_FRISK }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Yanmega"), + .cryId = CRY_YANMEGA, + .natDexNum = NATIONAL_DEX_YANMEGA, + .categoryName = _("Ogre Darner"), + .height = 19, + .weight = 515, + .description = COMPOUND_STRING( + "This six-legged Pokémon is easily capable\n" + "of transporting an adult in flight. It is\n" + "adept at biting apart foes while flying\n" + "by at high speed."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + FRONT_PIC(Yanmega, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Yanmega, + .frontAnimId = ANIM_H_VIBRATE, + .enemyMonElevation = 6, + BACK_PIC(Yanmega, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Yanmega), + ICON(Yanmega, 1), + .footprint = gMonFootprint_Yanmega, + LEARNSETS(Yanmega), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_YANMA + +#if P_FAMILY_WOOPER +#define WOOPER_MISC_INFO \ + .baseHP = 55, \ + .baseAttack = 45, \ + .baseDefense = 45, \ + .baseSpeed = 15, \ + .baseSpAttack = 25, \ + .baseSpDefense = 25, \ + .catchRate = 255, \ + .expYield = 42, \ + .evYield_HP = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, \ + .speciesName = _("Wooper"), \ + .cryId = CRY_WOOPER, \ + .natDexNum = NATIONAL_DEX_WOOPER, \ + .height = 4, \ + .pokemonScale = 479, \ + .pokemonOffset = 21, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Wooper, \ + .formSpeciesIdTable = sWooperFormSpeciesIdTable + + [SPECIES_WOOPER] = + { + WOOPER_MISC_INFO, + .types = { TYPE_WATER, TYPE_GROUND }, + .abilities = { ABILITY_DAMP, ABILITY_WATER_ABSORB, ABILITY_UNAWARE }, + .bodyColor = BODY_COLOR_BLUE, + .categoryName = _("Water Fish"), + .weight = 85, + .description = COMPOUND_STRING( + "Wooper usually live in water but come\n" + "out onto land seeking food occasionally.\n" + "On land, they coat their bodies with a\n" + "gooey, toxic film."), + FRONT_PIC(Wooper, 40, 32), + FRONT_PIC_FEMALE(Wooper, 40, 32), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Wooper, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Wooper, 64, 40), + BACK_PIC_FEMALE(Wooper, 64, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Wooper), + ICON(Wooper, 0), + LEARNSETS(Wooper), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_QUAGSIRE}), + }, + + [SPECIES_QUAGSIRE] = + { + .baseHP = 95, + .baseAttack = 85, + .baseDefense = 85, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = 65, + .types = { TYPE_WATER, TYPE_GROUND }, + .catchRate = 90, + .expYield = 151, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_DAMP, ABILITY_WATER_ABSORB, ABILITY_UNAWARE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Quagsire"), + .cryId = CRY_QUAGSIRE, + .natDexNum = NATIONAL_DEX_QUAGSIRE, + .categoryName = _("Water Fish"), + .height = 14, + .weight = 750, + .description = COMPOUND_STRING( + "A Quagsire hunts by leaving its mouth wide\n" + "open in water and waiting for its prey to\n" + "blunder in. Because it doesn't move, it\n" + "does not get very hungry."), + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Quagsire, 64, 56), + FRONT_PIC_FEMALE(Quagsire, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Quagsire, + .frontAnimId = ANIM_H_STRETCH, + BACK_PIC(Quagsire, 64, 56), + BACK_PIC_FEMALE(Quagsire, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Quagsire), + ICON(Quagsire, 0), + .footprint = gMonFootprint_Quagsire, + LEARNSETS(Quagsire), + }, + +#if P_PALDEAN_FORMS + [SPECIES_WOOPER_PALDEAN] = + { + WOOPER_MISC_INFO, + .types = { TYPE_POISON, TYPE_GROUND }, + .abilities = { ABILITY_POISON_POINT, ABILITY_WATER_ABSORB, ABILITY_UNAWARE }, + .bodyColor = BODY_COLOR_BROWN, + .isPaldeanForm = TRUE, + .categoryName = _("Poison Fish"), + .weight = 110, + .description = COMPOUND_STRING( + "After losing a territorial struggle,\n" + "Wooper began living on land.\n" + "The Pokémon changed over time, developing\n" + "a poisonous film to protect its body."), + FRONT_PIC(WooperPaldean, 40, 32), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_WooperPaldean, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(WooperPaldean, 64, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(WooperPaldean), + //ICON(WooperPaldean, 0), + LEARNSETS(WooperPaldean), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_CLODSIRE}), + }, + + [SPECIES_CLODSIRE] = + { + .baseHP = 130, + .baseAttack = 75, + .baseDefense = 60, + .baseSpeed = 20, + .baseSpAttack = 45, + .baseSpDefense = 100, + .types = { TYPE_POISON, TYPE_GROUND }, + .catchRate = 90, + .expYield = 151, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_POISON_POINT, ABILITY_WATER_ABSORB, ABILITY_UNAWARE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Clodsire"), + .cryId = CRY_CLODSIRE, + .natDexNum = NATIONAL_DEX_CLODSIRE, + .categoryName = _("Spiny Fish"), + .height = 18, + .weight = 2230, + .description = COMPOUND_STRING( + "When attacked, this Pokémon will\n" + "retaliate by sticking thick spines out\n" + "from its body. It's a risky move\n" + "that puts everything on the line."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Clodsire, 64, 64), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Clodsire, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Clodsire, 64, 64), + .backPicYOffset = 15, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Clodsire), + ICON(Clodsire, 2), + //.footprint = gMonFootprint_Clodsire, + LEARNSETS(Clodsire), + }, +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_WOOPER + +#if P_FAMILY_MURKROW + [SPECIES_MURKROW] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 42, + .baseSpeed = 91, + .baseSpAttack = 85, + .baseSpDefense = 42, + .types = { TYPE_DARK, TYPE_FLYING }, + .catchRate = 30, + .expYield = 81, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_INSOMNIA, ABILITY_SUPER_LUCK, ABILITY_PRANKSTER }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Murkrow"), + .cryId = CRY_MURKROW, + .natDexNum = NATIONAL_DEX_MURKROW, + .categoryName = _("Darkness"), + .height = 5, + .weight = 21, + .description = COMPOUND_STRING( + "Murkrow were feared as the alleged\n" + "bearers of ill fortune. It shows strong\n" + "interest in anything that sparkles. It will\n" + "even try to steal rings from women."), + .pokemonScale = 401, + .pokemonOffset = -8, + .trainerScale = 256, + .trainerOffset = 1, + FRONT_PIC(Murkrow, 48, 40), + FRONT_PIC_FEMALE(Murkrow, 48, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Murkrow, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 12, + BACK_PIC(Murkrow, 40, 56), + BACK_PIC_FEMALE(Murkrow, 40, 56), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Murkrow), + ICON(Murkrow, 2), + .footprint = gMonFootprint_Murkrow, + LEARNSETS(Murkrow), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_HONCHKROW}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_HONCHKROW] = + { + .baseHP = 100, + .baseAttack = 125, + .baseDefense = 52, + .baseSpeed = 71, + .baseSpAttack = 105, + .baseSpDefense = 52, + .types = { TYPE_DARK, TYPE_FLYING }, + .catchRate = 30, + .expYield = 177, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_INSOMNIA, ABILITY_SUPER_LUCK, ABILITY_MOXIE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Honchkrow"), + .cryId = CRY_HONCHKROW, + .natDexNum = NATIONAL_DEX_HONCHKROW, + .categoryName = _("Big Boss"), + .height = 9, + .weight = 273, + .description = COMPOUND_STRING( + "Becoming active at night, it is known\n" + "to swarm with numerous Murkrow in tow.\n" + "It is said that it never forgives the\n" + "mistakes of its cronies."), + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Honchkrow, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Honchkrow, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Honchkrow, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_H_STRETCH, + PALETTES(Honchkrow), + ICON(Honchkrow, 2), + .footprint = gMonFootprint_Honchkrow, + LEARNSETS(Honchkrow), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MURKROW + +#if P_FAMILY_MISDREAVUS + [SPECIES_MISDREAVUS] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 85, + .baseSpAttack = 85, + .baseSpDefense = 85, + .types = { TYPE_GHOST, TYPE_GHOST }, + .catchRate = 45, + .expYield = 87, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Misdreavus"), + .cryId = CRY_MISDREAVUS, + .natDexNum = NATIONAL_DEX_MISDREAVUS, + .categoryName = _("Screech"), + .height = 7, + .weight = 10, + .description = COMPOUND_STRING( + "A Misdreavus frightens people with a\n" + "creepy, sobbing cry. It apparently uses\n" + "its red spheres to absorb the fear of foes\n" + "as its nutrition."), + .pokemonScale = 407, + .pokemonOffset = -8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Misdreavus, 48, 48), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Misdreavus, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 12, + BACK_PIC(Misdreavus, 56, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Misdreavus), + ICON(Misdreavus, 0), + .footprint = gMonFootprint_Misdreavus, + LEARNSETS(Misdreavus), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_MISMAGIUS}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_MISMAGIUS] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 105, + .baseSpAttack = 105, + .baseSpDefense = 105, + .types = { TYPE_GHOST, TYPE_GHOST }, + .catchRate = 45, + .expYield = 173, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Mismagius"), + .cryId = CRY_MISMAGIUS, + .natDexNum = NATIONAL_DEX_MISMAGIUS, + .categoryName = _("Magical"), + .height = 9, + .weight = 44, + .description = COMPOUND_STRING( + "Its cries sound like incantations.\n" + "Those hearing it are tormented by\n" + "headaches and hallucinations.\n" + "It appears where you least expect it."), + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Mismagius, 56, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Mismagius, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + .enemyMonElevation = 3, + BACK_PIC(Mismagius, 56, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Mismagius), + ICON(Mismagius, 2), + .footprint = gMonFootprint_Mismagius, + LEARNSETS(Mismagius), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MISDREAVUS + +#if P_FAMILY_UNOWN +#define UNOWN_MISC_INFO(letter) \ + .baseHP = 48, \ + .baseAttack = 72, \ + .baseDefense = 48, \ + .baseSpeed = 48, \ + .baseSpAttack = 72, \ + .baseSpDefense = 48, \ + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, \ + .catchRate = 225, \ + .expYield = 118, \ + .evYield_Attack = 1, \ + .evYield_SpAttack = 1, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 40, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED },\ + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_BLACK, \ + .speciesName = _("Unown"), \ + .cryId = CRY_UNOWN, \ + .natDexNum = NATIONAL_DEX_UNOWN, \ + .categoryName = _("Symbol"), \ + .height = 5, \ + .weight = 50, \ + .description = gUnownPokedexText, \ + .pokemonScale = 411, \ + .pokemonOffset = 2, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontPicYOffset = 16, \ + .frontAnimFrames = sAnims_Unown, \ + .frontAnimId = ANIM_ZIGZAG_FAST, \ + .enemyMonElevation = 8, \ + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, \ + PALETTES(Unown), \ + ICON(Unown ##letter, 0), \ + .footprint = gMonFootprint_Unown, \ + LEARNSETS(Unown), \ + .formSpeciesIdTable = sUnownFormSpeciesIdTable + + [SPECIES_UNOWN] = + { + UNOWN_MISC_INFO(A), + FRONT_PIC(UnownA, 24, 40), + BACK_PIC(UnownA, 24, 48), + .backPicYOffset = 8, + }, + + [SPECIES_UNOWN_B] = + { + UNOWN_MISC_INFO(B), + .noFlip = TRUE, + FRONT_PIC(UnownB, 24, 32), + BACK_PIC(UnownB, 40, 48), + .backPicYOffset = 9, + }, + + [SPECIES_UNOWN_C] = + { + UNOWN_MISC_INFO(C), + .noFlip = TRUE, + FRONT_PIC(UnownC, 32, 32), + BACK_PIC(UnownC, 48, 56), + .backPicYOffset = 6, + }, + + [SPECIES_UNOWN_D] = + { + UNOWN_MISC_INFO(D), + .noFlip = TRUE, + FRONT_PIC(UnownD, 32, 32), + BACK_PIC(UnownD, 40, 48), + .backPicYOffset = 8, + }, + + [SPECIES_UNOWN_E] = + { + UNOWN_MISC_INFO(E), + .noFlip = TRUE, + FRONT_PIC(UnownE, 32, 32), + BACK_PIC(UnownE, 40, 48), + .backPicYOffset = 10, + }, + + [SPECIES_UNOWN_F] = + { + UNOWN_MISC_INFO(F), + .noFlip = TRUE, + FRONT_PIC(UnownF, 32, 32), + BACK_PIC(UnownF, 48, 48), + .backPicYOffset = 10, + }, + + [SPECIES_UNOWN_G] = + { + UNOWN_MISC_INFO(G), + .noFlip = TRUE, + FRONT_PIC(UnownG, 24, 40), + BACK_PIC(UnownG, 40, 56), + .backPicYOffset = 5, + }, + + [SPECIES_UNOWN_H] = + { + UNOWN_MISC_INFO(H), + .noFlip = TRUE, + FRONT_PIC(UnownH, 32, 32), + BACK_PIC(UnownH, 48, 48), + .backPicYOffset = 8, + }, + + [SPECIES_UNOWN_I] = + { + UNOWN_MISC_INFO(I), + FRONT_PIC(UnownI, 24, 32), + BACK_PIC(UnownI, 24, 56), + .backPicYOffset = 7, + }, + + [SPECIES_UNOWN_J] = + { + UNOWN_MISC_INFO(J), + .noFlip = TRUE, + FRONT_PIC(UnownJ, 24, 32), + BACK_PIC(UnownJ, 32, 48), + .backPicYOffset = 9, + }, + + [SPECIES_UNOWN_K] = + { + UNOWN_MISC_INFO(K), + .noFlip = TRUE, + FRONT_PIC(UnownK, 32, 32), + BACK_PIC(UnownK, 40, 56), + .backPicYOffset = 7, + }, + + [SPECIES_UNOWN_L] = + { + UNOWN_MISC_INFO(L), + .noFlip = TRUE, + FRONT_PIC(UnownL, 24, 32), + BACK_PIC(UnownL, 32, 48), + .backPicYOffset = 10, + }, + + [SPECIES_UNOWN_M] = + { + UNOWN_MISC_INFO(M), + FRONT_PIC(UnownM, 32, 32), + BACK_PIC(UnownM, 48, 40), + .backPicYOffset = 13, + }, + + [SPECIES_UNOWN_N] = + { + UNOWN_MISC_INFO(N), + .noFlip = TRUE, + FRONT_PIC(UnownN, 32, 24), + BACK_PIC(UnownN, 48, 40), + .backPicYOffset = 13, + }, + + [SPECIES_UNOWN_O] = + { + UNOWN_MISC_INFO(O), + FRONT_PIC(UnownO, 32, 32), + BACK_PIC(UnownO, 48, 48), + .backPicYOffset = 8, + }, + + [SPECIES_UNOWN_P] = + { + UNOWN_MISC_INFO(P), + .noFlip = TRUE, + FRONT_PIC(UnownP, 24, 32), + BACK_PIC(UnownP, 32, 48), + .backPicYOffset = 10, + }, + + [SPECIES_UNOWN_Q] = + { + UNOWN_MISC_INFO(Q), + .noFlip = TRUE, + FRONT_PIC(UnownQ, 32, 24), + BACK_PIC(UnownQ, 40, 40), + .backPicYOffset = 15, + }, + + [SPECIES_UNOWN_R] = + { + UNOWN_MISC_INFO(R), + .noFlip = TRUE, + FRONT_PIC(UnownR, 24, 32), + BACK_PIC(UnownR, 32, 40), + .backPicYOffset = 12, + }, + + [SPECIES_UNOWN_S] = + { + UNOWN_MISC_INFO(S), + .noFlip = TRUE, + FRONT_PIC(UnownS, 32, 40), + BACK_PIC(UnownS, 40, 56), + .backPicYOffset = 4, + }, + + [SPECIES_UNOWN_T] = + { + UNOWN_MISC_INFO(T), + FRONT_PIC(UnownT, 24, 32), + BACK_PIC(UnownT, 32, 40), + .backPicYOffset = 13, + }, + + [SPECIES_UNOWN_U] = + { + UNOWN_MISC_INFO(U), + FRONT_PIC(UnownU, 32, 32), + BACK_PIC(UnownU, 48, 40), + .backPicYOffset = 13, + }, + + [SPECIES_UNOWN_V] = + { + UNOWN_MISC_INFO(V), + .noFlip = TRUE, + FRONT_PIC(UnownV, 32, 32), + BACK_PIC(UnownV, 40, 48), + .backPicYOffset = 11, + }, + + [SPECIES_UNOWN_W] = + { + UNOWN_MISC_INFO(W), + FRONT_PIC(UnownW, 32, 32), + BACK_PIC(UnownW, 40, 40), + .backPicYOffset = 13, + }, + + [SPECIES_UNOWN_X] = + { + UNOWN_MISC_INFO(X), + FRONT_PIC(UnownX, 24, 24), + BACK_PIC(UnownX, 40, 40), + .backPicYOffset = 15, + }, + + [SPECIES_UNOWN_Y] = + { + UNOWN_MISC_INFO(Y), + FRONT_PIC(UnownY, 24, 32), + BACK_PIC(UnownY, 32, 48), + .backPicYOffset = 10, + }, + + [SPECIES_UNOWN_Z] = + { + UNOWN_MISC_INFO(Z), + .noFlip = TRUE, + FRONT_PIC(UnownZ, 24, 32), + BACK_PIC(UnownZ, 32, 48), + .backPicYOffset = 10, + }, + + [SPECIES_UNOWN_EMARK] = + { + UNOWN_MISC_INFO(ExclamationMark), + FRONT_PIC(UnownExclamationMark, 24, 40), + BACK_PIC(UnownExclamationMark, 24, 56), + .backPicYOffset = 6, + }, + + [SPECIES_UNOWN_QMARK] = + { + UNOWN_MISC_INFO(QuestionMark), + .noFlip = TRUE, + FRONT_PIC(UnownQuestionMark, 24, 40), + BACK_PIC(UnownQuestionMark, 32, 56), + .backPicYOffset = 6, + }, +#endif //P_FAMILY_UNOWN + +#if P_FAMILY_WOBBUFFET +#if P_GEN_3_CROSS_EVOS + [SPECIES_WYNAUT] = + { + .baseHP = 95, + .baseAttack = 23, + .baseDefense = 48, + .baseSpeed = 23, + .baseSpAttack = 23, + .baseSpDefense = 48, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 125, + .expYield = 52, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_SHADOW_TAG, ABILITY_NONE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Wynaut"), + .cryId = CRY_WYNAUT, + .natDexNum = NATIONAL_DEX_WYNAUT, + .categoryName = _("Bright"), + .height = 6, + .weight = 140, + .description = COMPOUND_STRING( + "A Wynaut loves to eat sweet fruits.\n" + "It cleverly picks fruits using its earlike\n" + "arms. They gather in fruit gardens, drawn\n" + "by the fragrance."), + .pokemonScale = 484, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Wynaut, 48, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Wynaut, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + .frontAnimDelay = 15, + BACK_PIC(Wynaut, 48, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Wynaut), + ICON(Wynaut, 0), + .footprint = gMonFootprint_Wynaut, + LEARNSETS(Wynaut), + .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_WOBBUFFET}), + }, +#endif //P_GEN_3_CROSS_EVOS + + [SPECIES_WOBBUFFET] = + { + .baseHP = 190, + .baseAttack = 33, + .baseDefense = 58, + .baseSpeed = 33, + .baseSpAttack = 33, + .baseSpDefense = 58, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 45, + .expYield = 142, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_SHADOW_TAG, ABILITY_NONE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Wobbuffet"), + .cryId = CRY_WOBBUFFET, + .natDexNum = NATIONAL_DEX_WOBBUFFET, + .categoryName = _("Patient"), + .height = 13, + .weight = 285, + .description = COMPOUND_STRING( + "Usually docile, a Wobbuffet strikes back\n" + "ferociously if its black tail is attacked.\n" + "It makes its lair in caves where it waits\n" + "for nightfall."), + .pokemonScale = 274, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Wobbuffet, 64, 56), + FRONT_PIC_FEMALE(Wobbuffet, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Wobbuffet, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Wobbuffet, 56, 56), + BACK_PIC_FEMALE(Wobbuffet, 56, 56), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Wobbuffet), + ICON(Wobbuffet, 0), + #if P_CUSTOM_GENDER_DIFF_ICONS == TRUE + ICON_FEMALE(Wobbuffet, 0), + #endif + .footprint = gMonFootprint_Wobbuffet, + LEARNSETS(Wobbuffet), + }, +#endif //P_FAMILY_WOBBUFFET + +#if P_FAMILY_GIRAFARIG + [SPECIES_GIRAFARIG] = + { + .baseHP = 70, + .baseAttack = 80, + .baseDefense = 65, + .baseSpeed = 85, + .baseSpAttack = 90, + .baseSpDefense = 65, + .types = { TYPE_NORMAL, TYPE_PSYCHIC }, + .catchRate = 60, + .expYield = 159, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_INNER_FOCUS, ABILITY_EARLY_BIRD, ABILITY_SAP_SIPPER }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Girafarig"), + .cryId = CRY_GIRAFARIG, + .natDexNum = NATIONAL_DEX_GIRAFARIG, + .categoryName = _("Long Neck"), + .height = 15, + .weight = 415, + .description = COMPOUND_STRING( + "A Girafarig is an herbivore--it eats\n" + "grass and tree shoots. While it is eating,\n" + "its tail makes chewing and swallowing\n" + "motions as if it were also eating."), + .pokemonScale = 281, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Girafarig, 56, 64), + FRONT_PIC_FEMALE(Girafarig, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Girafarig, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Girafarig, 64, 64), + BACK_PIC_FEMALE(Girafarig, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Girafarig), + ICON(Girafarig, 1), + .footprint = gMonFootprint_Girafarig, + LEARNSETS(Girafarig), + .evolutions = EVOLUTION({EVO_MOVE, MOVE_TWIN_BEAM, SPECIES_FARIGIRAF}), + }, + +#if P_GEN_9_CROSS_EVOS + [SPECIES_FARIGIRAF] = + { + .baseHP = 120, + .baseAttack = 90, + .baseDefense = 70, + .baseSpeed = 60, + .baseSpAttack = 110, + .baseSpDefense = 70, + .types = { TYPE_NORMAL, TYPE_PSYCHIC }, + .catchRate = 45, + .expYield = 260, + .evYield_HP = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_CUD_CHEW, ABILITY_ARMOR_TAIL, ABILITY_SAP_SIPPER }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Farigiraf"), + .cryId = CRY_FARIGIRAF, + .natDexNum = NATIONAL_DEX_FARIGIRAF, + .categoryName = _("Long Neck"), + .height = 32, + .weight = 1600, + .description = COMPOUND_STRING( + "Now that the brain waves from the\n" + "head and tail are synced up, the\n" + "psychic power of this Pokémon is 10\n" + "times stronger than Girafarig's."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Farigiraf, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Farigiraf, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Farigiraf, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Farigiraf), + ICON(Farigiraf, 0), + //.footprint = gMonFootprint_Farigiraf, + LEARNSETS(Farigiraf), + }, +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_GIRAFARIG + +#if P_FAMILY_PINECO + [SPECIES_PINECO] = + { + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 90, + .baseSpeed = 15, + .baseSpAttack = 35, + .baseSpDefense = 35, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 190, + .expYield = 58, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_STURDY, ABILITY_NONE, ABILITY_OVERCOAT }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Pineco"), + .cryId = CRY_PINECO, + .natDexNum = NATIONAL_DEX_PINECO, + .categoryName = _("Bagworm"), + .height = 6, + .weight = 72, + .description = COMPOUND_STRING( + "A Pineco hangs from a tree branch and\n" + "waits for prey. While eating, if it is\n" + "disturbed by someone shaking its tree, it\n" + "falls on the ground and suddenly explodes."), + .pokemonScale = 445, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pineco, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Pineco, + .frontAnimId = ANIM_SWING_CONCAVE, + BACK_PIC(Pineco, 56, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Pineco), + ICON(Pineco, 0), + .footprint = gMonFootprint_Pineco, + LEARNSETS(Pineco), + .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_FORRETRESS}), + }, + + [SPECIES_FORRETRESS] = + { + .baseHP = 75, + .baseAttack = 90, + .baseDefense = 140, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = 60, + .types = { TYPE_BUG, TYPE_STEEL }, + .catchRate = 75, + .expYield = 163, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_STURDY, ABILITY_NONE, ABILITY_OVERCOAT }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Forretress"), + .cryId = CRY_FORRETRESS, + .natDexNum = NATIONAL_DEX_FORRETRESS, + .categoryName = _("Bagworm"), + .height = 12, + .weight = 1258, + .description = COMPOUND_STRING( + "It keeps itself inside its steel shell.\n" + "The shell is opened when it is catching\n" + "prey, but it is so quick that the shell's\n" + "inside cannot be seen."), + .pokemonScale = 293, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Forretress, 64, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Forretress, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Forretress, 64, 32), + .backPicYOffset = 16, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Forretress), + ICON(Forretress, 2), + .footprint = gMonFootprint_Forretress, + LEARNSETS(Forretress), + }, +#endif //P_FAMILY_PINECO + +#if P_FAMILY_DUNSPARCE + [SPECIES_DUNSPARCE] = + { + .baseHP = 100, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 45, + .baseSpAttack = 65, + .baseSpDefense = 65, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 190, + .expYield = 145, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SERENE_GRACE, ABILITY_RUN_AWAY, ABILITY_RATTLED }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Dunsparce"), + .cryId = CRY_DUNSPARCE, + .natDexNum = NATIONAL_DEX_DUNSPARCE, + .categoryName = _("Land Snake"), + .height = 15, + .weight = 140, + .description = COMPOUND_STRING( + "Its drill-tipped tail is used to burrow into\n" + "the ground backwards. This Pokémon is\n" + "known to make its nest in complex shapes\n" + "deep under the ground."), + .pokemonScale = 316, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Dunsparce, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Dunsparce, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .frontAnimDelay = 10, + BACK_PIC(Dunsparce, 56, 32), + .backPicYOffset = 17, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Dunsparce), + ICON(Dunsparce, 0), + .footprint = gMonFootprint_Dunsparce, + LEARNSETS(Dunsparce), + .evolutions = EVOLUTION({EVO_MOVE_TWO_SEGMENT, MOVE_HYPER_DRILL, SPECIES_DUDUNSPARCE_TWO_SEGMENT}, + {EVO_MOVE_THREE_SEGMENT, MOVE_HYPER_DRILL, SPECIES_DUDUNSPARCE_THREE_SEGMENT}), + }, + +#if P_GEN_9_CROSS_EVOS +#define DUDUNSPARCE_MISC_INFO(segments) \ + .baseHP = 125, \ + .baseAttack = 100, \ + .baseDefense = 80, \ + .baseSpeed = 55, \ + .baseSpAttack = 85, \ + .baseSpDefense = 75, \ + .types = { TYPE_NORMAL, TYPE_NORMAL }, \ + .catchRate = 45, \ + .expYield = 182, \ + .evYield_HP = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .abilities = { ABILITY_SERENE_GRACE, ABILITY_RUN_AWAY, ABILITY_RATTLED }, \ + .bodyColor = BODY_COLOR_YELLOW, \ + .speciesName = _("Dudunsprce"), \ + .cryId = CRY_DUDUNSPARCE, \ + .natDexNum = NATIONAL_DEX_DUDUNSPARCE, \ + .categoryName = _("Land Snake"), \ + .pokemonScale = 356, \ + .pokemonOffset = 17, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + FRONT_PIC(Dudunsparce ##segments##Segment, 64, 64), \ + .frontPicYOffset = 10, \ + .frontAnimFrames = sAnims_Dudunsparce, \ + BACK_PIC(Dudunsparce ##segments##Segment, 64, 64), \ + .backPicYOffset = 11, \ + PALETTES(Dudunsparce), \ + ICON(Dudunsparce, 0), \ + LEARNSETS(Dudunsparce), \ + .formSpeciesIdTable = sDudunsparceFormSpeciesIdTable + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //.backAnimId = BACK_ANIM_NONE, + //.footprint = gMonFootprint_Dudunsparce, + + [SPECIES_DUDUNSPARCE_TWO_SEGMENT] = + { + DUDUNSPARCE_MISC_INFO(Two), + .height = 36, + .weight = 392, + .description = COMPOUND_STRING( + "This Pokémon uses its hard tail to\n" + "make its nest by boring holes into\n" + "bedrock deep underground. The nest\n" + "can reach lengths of over six miles."), + }, + + [SPECIES_DUDUNSPARCE_THREE_SEGMENT] = + { + DUDUNSPARCE_MISC_INFO(Three), + .height = 45, + .weight = 474, + .description = COMPOUND_STRING( + "A recent study uncovered that the\n" + "number of segments a\n" + "Dudunsparce's body has is determined by the\n" + "Pokémon's genes."), + }, +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_DUNSPARCE + +#if P_FAMILY_GLIGAR + [SPECIES_GLIGAR] = + { + .baseHP = 65, + .baseAttack = 75, + .baseDefense = 105, + .baseSpeed = 85, + .baseSpAttack = 35, + .baseSpDefense = 65, + .types = { TYPE_GROUND, TYPE_FLYING }, + .catchRate = 60, + .expYield = 86, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_HYPER_CUTTER, ABILITY_SAND_VEIL, ABILITY_IMMUNITY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Gligar"), + .cryId = CRY_GLIGAR, + .natDexNum = NATIONAL_DEX_GLIGAR, + .categoryName = _("Fly Scorpion"), + .height = 11, + .weight = 648, + .description = COMPOUND_STRING( + "It glides without making a single sound.\n" + "It grasps the face of its foe using its\n" + "hind and large front claws, then stabs\n" + "with its poison barb."), + .pokemonScale = 350, + .pokemonOffset = -1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Gligar, 56, 56), + FRONT_PIC_FEMALE(Gligar, 56, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Gligar, + .frontAnimId = ANIM_SHRINK_GROW, + .enemyMonElevation = 8, + BACK_PIC(Gligar, 64, 64), + BACK_PIC_FEMALE(Gligar, 64, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Gligar), + ICON(Gligar, 0), + .footprint = gMonFootprint_Gligar, + LEARNSETS(Gligar), + .evolutions = EVOLUTION({EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR}, + {EVO_ITEM_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_GLISCOR] = + { + .baseHP = 75, + .baseAttack = 95, + .baseDefense = 125, + .baseSpeed = 95, + .baseSpAttack = 45, + .baseSpDefense = 75, + .types = { TYPE_GROUND, TYPE_FLYING }, + .catchRate = 30, + .expYield = 179, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_HYPER_CUTTER, ABILITY_SAND_VEIL, ABILITY_POISON_HEAL }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Gliscor"), + .cryId = CRY_GLISCOR, + .natDexNum = NATIONAL_DEX_GLISCOR, + .categoryName = _("Fang Scorp"), + .height = 20, + .weight = 425, + .description = COMPOUND_STRING( + "Gliscor observes prey while hanging\n" + "upside down from branches. Its flight is\n" + "soundless. When the chance presents\n" + "itself, it swoops!"), + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, + FRONT_PIC(Gliscor, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Gliscor, + .frontAnimId = ANIM_SWING_CONVEX, + .enemyMonElevation = 9, + BACK_PIC(Gliscor, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Gliscor), + ICON(Gliscor, 2), + .footprint = gMonFootprint_Gliscor, + LEARNSETS(Gliscor), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_GLIGAR + +#if P_FAMILY_SNUBBULL + [SPECIES_SNUBBULL] = + { + .baseHP = 60, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 30, + .baseSpAttack = 40, + .baseSpDefense = 40, + #if P_UPDATED_TYPES >= GEN_6 + .types = { TYPE_FAIRY, TYPE_FAIRY }, + #else + .types = { TYPE_NORMAL, TYPE_NORMAL }, + #endif + .catchRate = 190, + .expYield = 60, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_RUN_AWAY, ABILITY_RATTLED }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Snubbull"), + .cryId = CRY_SNUBBULL, + .natDexNum = NATIONAL_DEX_SNUBBULL, + .categoryName = _("Fairy"), + .height = 6, + .weight = 78, + .description = COMPOUND_STRING( + "By baring its fangs and making a scary\n" + "face, it sends smaller Pokémon scurrying\n" + "in terror. The Snubbull does seem a\n" + "little sad at making its foes flee."), + .pokemonScale = 465, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Snubbull, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Snubbull, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Snubbull, 56, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Snubbull), + ICON(Snubbull, 0), + .footprint = gMonFootprint_Snubbull, + LEARNSETS(Snubbull), + .evolutions = EVOLUTION({EVO_LEVEL, 23, SPECIES_GRANBULL}), + }, + + [SPECIES_GRANBULL] = + { + .baseHP = 90, + .baseAttack = 120, + .baseDefense = 75, + .baseSpeed = 45, + .baseSpAttack = 60, + .baseSpDefense = 60, + #if P_UPDATED_TYPES >= GEN_6 + .types = { TYPE_FAIRY, TYPE_FAIRY }, + #else + .types = { TYPE_NORMAL, TYPE_NORMAL }, + #endif + .catchRate = 75, + .expYield = 158, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_QUICK_FEET, ABILITY_RATTLED }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Granbull"), + .cryId = CRY_GRANBULL, + .natDexNum = NATIONAL_DEX_GRANBULL, + .categoryName = _("Fairy"), + .height = 14, + .weight = 487, + .description = COMPOUND_STRING( + "It has a particularly well-developed lower\n" + "jaw. The huge fangs are heavy, causing\n" + "it to tilt its head. Unless it is startled,\n" + "it will not try to bite."), + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Granbull, 56, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Granbull, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Granbull, 56, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Granbull), + ICON(Granbull, 2), + .footprint = gMonFootprint_Granbull, + LEARNSETS(Granbull), + }, +#endif //P_FAMILY_SNUBBULL + +#if P_FAMILY_QWILFISH +#define QWILFISH_MISC_INFO \ + .baseHP = 65, \ + .baseAttack = 95, \ + .baseDefense = P_UPDATED_STATS >= GEN_7 ? 85 : 75, \ + .baseSpeed = 85, \ + .baseSpAttack = 55, \ + .baseSpDefense = 55, \ + .catchRate = 45, \ + .expYield = 88, \ + .evYield_Attack = 1, \ + .itemRare = ITEM_POISON_BARB, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, \ + .abilities = { ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE }, \ + .speciesName = _("Qwilfish"), \ + .cryId = CRY_QWILFISH, \ + .natDexNum = NATIONAL_DEX_QWILFISH, \ + .categoryName = _("Balloon"), \ + .height = 5, \ + .weight = 39, \ + .pokemonScale = 430, \ + .pokemonOffset = 0, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Qwilfish, \ + .formSpeciesIdTable = sQwilfishFormSpeciesIdTable + + [SPECIES_QWILFISH] = + { + QWILFISH_MISC_INFO, + .types = { TYPE_WATER, TYPE_POISON }, + .bodyColor = BODY_COLOR_GRAY, + .description = COMPOUND_STRING( + "A Qwilfish uses the pressure of water\n" + "it swallows to shoot toxic quills all at\n" + "once from all over its body. It finds\n" + "swimming to be somewhat challenging."), + FRONT_PIC(Qwilfish, 40, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Qwilfish, + .frontAnimId = ANIM_GROW_IN_STAGES, + .frontAnimDelay = 39, + BACK_PIC(Qwilfish, 56, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(Qwilfish), + ICON(Qwilfish, 0), + LEARNSETS(Qwilfish), + }, + +#if P_HISUIAN_FORMS + [SPECIES_QWILFISH_HISUIAN] = + { + QWILFISH_MISC_INFO, + .types = { TYPE_DARK, TYPE_POISON }, + .bodyColor = BODY_COLOR_BLACK, + .description = COMPOUND_STRING( + "A form of Qwilfish from the distant past.\n" + "Fishers detest this troublesome Pokémon\n" + "because it sprays poison from its spines,\n" + "getting it everywhere."), + FRONT_PIC(QwilfishHisuian, 48, 40), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_QwilfishHisuian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 9, + BACK_PIC(QwilfishHisuian, 56, 56), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(QwilfishHisuian), + ICON(QwilfishHisuian, 0), + LEARNSETS(QwilfishHisuian), + .isHisuianForm = TRUE, + .evolutions = EVOLUTION({EVO_MOVE, MOVE_BARB_BARRAGE, SPECIES_OVERQWIL}), + }, + + [SPECIES_OVERQWIL] = + { + .baseHP = 85, + .baseAttack = 115, + .baseDefense = 95, + .baseSpeed = 85, + .baseSpAttack = 65, + .baseSpDefense = 65, + .types = { TYPE_DARK, TYPE_POISON }, + .catchRate = 45, + .expYield = 179, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Overqwil"), + .cryId = CRY_OVERQWIL, + .natDexNum = NATIONAL_DEX_OVERQWIL, + .categoryName = _("Pin Cluster"), + .height = 25, + .weight = 605, + .description = COMPOUND_STRING( + "Its lancelike spikes and savage\n" + "temperament have earned it the\n" + "nickname “Sea Fiend”.\n" + "It slurps up poison to nourish itself."), + .pokemonScale = 257, + .pokemonOffset = 10, + .trainerScale = 423, + .trainerOffset = 8, + FRONT_PIC(Overqwil, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Overqwil, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Overqwil, 64, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Overqwil), + ICON(Overqwil, 2), + //.footprint = gMonFootprint_Overqwil, + LEARNSETS(Overqwil), + }, +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_QWILFISH + +#if P_FAMILY_SHUCKLE + [SPECIES_SHUCKLE] = + { + .baseHP = 20, + .baseAttack = 10, + .baseDefense = 230, + .baseSpeed = 5, + .baseSpAttack = 10, + .baseSpDefense = 230, + .types = { TYPE_BUG, TYPE_ROCK }, + .catchRate = 190, + .expYield = 177, + .evYield_Defense = 1, + .evYield_SpDefense = 1, + .itemCommon = ITEM_BERRY_JUICE, + .itemRare = ITEM_BERRY_JUICE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_STURDY, ABILITY_GLUTTONY, ABILITY_CONTRARY }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Shuckle"), + .cryId = CRY_SHUCKLE, + .natDexNum = NATIONAL_DEX_SHUCKLE, + .categoryName = _("Mold"), + .height = 6, + .weight = 205, + .description = COMPOUND_STRING( + "A Shuckle hides under rocks, keeping its\n" + "body concealed inside its shell while\n" + "eating stored berries. The berries mix with\n" + "its body fluids to become a juice."), + .pokemonScale = 485, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Shuckle, 56, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Shuckle, + .frontAnimId = ANIM_SWING_CONCAVE, + BACK_PIC(Shuckle, 48, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Shuckle), + ICON(Shuckle, 1), + .footprint = gMonFootprint_Shuckle, + LEARNSETS(Shuckle), + }, +#endif //P_FAMILY_SHUCKLE + +#if P_FAMILY_HERACROSS +#define HERACROSS_MISC_INFO \ + .types = { TYPE_BUG, TYPE_FIGHTING }, \ + .catchRate = 45, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Heracross"), \ + .natDexNum = NATIONAL_DEX_HERACROSS, \ + .categoryName = _("Single Horn"), \ + .footprint = gMonFootprint_Heracross, \ + LEARNSETS(Heracross), \ + .formSpeciesIdTable = sHeracrossFormSpeciesIdTable, \ + .formChangeTable = sHeracrossFormChangeTable + + [SPECIES_HERACROSS] = + { + HERACROSS_MISC_INFO, + .baseHP = 80, + .baseAttack = 125, + .baseDefense = 75, + .baseSpeed = 85, + .baseSpAttack = 40, + .baseSpDefense = 95, + .expYield = 175, + .abilities = { ABILITY_SWARM, ABILITY_GUTS, ABILITY_MOXIE }, + .cryId = CRY_HERACROSS, + .height = 15, + .weight = 540, + .description = COMPOUND_STRING( + "They gather in forests seeking the sweet\n" + "sap of trees. It is completely clad in a\n" + "steel-hard shell. It is proud of its horn,\n" + "which it uses to fling foes."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Heracross, 64, 64), + FRONT_PIC_FEMALE(Heracross, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Heracross, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Heracross, 48, 64), + BACK_PIC_FEMALE(Heracross, 48, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Heracross), + ICON(Heracross, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_HERACROSS_MEGA] = + { + HERACROSS_MISC_INFO, + .baseHP = 80, + .baseAttack = 185, + .baseDefense = 115, + .baseSpeed = 75, + .baseSpAttack = 40, + .baseSpDefense = 105, + .expYield = 210, + .abilities = { ABILITY_SKILL_LINK, ABILITY_SKILL_LINK, ABILITY_SKILL_LINK }, + .cryId = CRY_HERACROSS_MEGA, + .height = 17, + .weight = 625, + .description = COMPOUND_STRING( + "A tremendous influx of energy builds it up,\n" + "but when Mega Evolution ends, Heracross\n" + "is bothered by terrible soreness in its\n" + "muscles."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(HeracrossMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_HeracrossMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(HeracrossMega, 56, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(HeracrossMega), + ICON(HeracrossMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_HERACROSS + +#if P_FAMILY_SNEASEL +#define SNEASEL_MISC_INFO \ + .baseHP = 55, \ + .baseAttack = 95, \ + .baseDefense = 55, \ + .baseSpeed = 115, \ + .baseSpAttack = 35, \ + .baseSpDefense = 75, \ + .catchRate = 60, \ + .expYield = 86, \ + .evYield_Speed = 1, \ + .itemRare = ITEM_QUICK_CLAW, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = 35, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .noFlip = TRUE, \ + .speciesName = _("Sneasel"), \ + .cryId = CRY_SNEASEL, \ + .natDexNum = NATIONAL_DEX_SNEASEL, \ + .categoryName = _("Sharp Claw"), \ + .height = 9, \ + .pokemonScale = 413, \ + .pokemonOffset = -3, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Sneasel, \ + .formSpeciesIdTable = sSneaselFormSpeciesIdTable + + [SPECIES_SNEASEL] = + { + SNEASEL_MISC_INFO, + .types = { TYPE_DARK, TYPE_ICE }, + .abilities = { ABILITY_INNER_FOCUS, ABILITY_KEEN_EYE, ABILITY_PICKPOCKET }, + .bodyColor = BODY_COLOR_BLACK, + .weight = 280, + .description = COMPOUND_STRING( + "A Sneasel scales trees by punching its\n" + "hooked claws into the bark. It seeks out\n" + "unguarded nests and steals eggs for food\n" + "while the parents are away."), + FRONT_PIC(Sneasel, 56, 48), + FRONT_PIC_FEMALE(Sneasel, 56, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Sneasel, + .frontAnimId = ANIM_H_JUMPS, + BACK_PIC(Sneasel, 64, 64), + BACK_PIC_FEMALE(Sneasel, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Sneasel), + ICON(Sneasel, 0), + LEARNSETS(Sneasel), + .evolutions = EVOLUTION({EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_CLAW, SPECIES_WEAVILE}, + {EVO_ITEM_NIGHT, ITEM_RAZOR_CLAW, SPECIES_WEAVILE}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_WEAVILE] = + { + .baseHP = 70, + .baseAttack = 120, + .baseDefense = 65, + .baseSpeed = 125, + .baseSpAttack = 45, + .baseSpDefense = 85, + .types = { TYPE_DARK, TYPE_ICE }, + .catchRate = 45, + .expYield = 179, + .evYield_Attack = 1, + .evYield_Speed = 1, + .itemRare = ITEM_QUICK_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_PICKPOCKET }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Weavile"), + .cryId = CRY_WEAVILE, + .natDexNum = NATIONAL_DEX_WEAVILE, + .categoryName = _("Sharp Claw"), + .height = 11, + .weight = 340, + .description = COMPOUND_STRING( + "They travel in groups of four or five,\n" + "leaving signs for one another on trees\n" + "and rocks. They bring down their prey\n" + "with coordinated attacks."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Weavile, 56, 56), + FRONT_PIC_FEMALE(Weavile, 56, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Weavile, + .frontAnimId = ANIM_H_VIBRATE, + BACK_PIC(Weavile, 64, 64), + BACK_PIC_FEMALE(Weavile, 64, 64), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Weavile), + ICON(Weavile, 0), + .footprint = gMonFootprint_Weavile, + LEARNSETS(Weavile), + }, +#endif //P_GEN_4_CROSS_EVOS + +#if P_HISUIAN_FORMS + [SPECIES_SNEASEL_HISUIAN] = + { + SNEASEL_MISC_INFO, + .types = { TYPE_FIGHTING, TYPE_POISON }, + .abilities = { ABILITY_INNER_FOCUS, ABILITY_KEEN_EYE, ABILITY_PICKPOCKET }, + .bodyColor = BODY_COLOR_GRAY, + .weight = 270, + .description = COMPOUND_STRING( + "Its sturdy, curved claws are ideal for\n" + "traversing precipitous cliffs. From the\n" + "tips of these claws drips a venom that\n" + "infiltrates the nerves of any prey caught."), + FRONT_PIC(SneaselHisuian, 56, 56), + FRONT_PIC_FEMALE(SneaselHisuian, 56, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_SneaselHisuian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SneaselHisuian, 56, 64), + BACK_PIC_FEMALE(SneaselHisuian, 56, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(SneaselHisuian), + ICON(SneaselHisuian, 2), + LEARNSETS(SneaselHisuian), + .isHisuianForm = TRUE, + .evolutions = EVOLUTION({EVO_ITEM_HOLD_DAY, ITEM_RAZOR_CLAW, SPECIES_SNEASLER}, + {EVO_ITEM_DAY, ITEM_RAZOR_CLAW, SPECIES_SNEASLER}), + }, + + [SPECIES_SNEASLER] = + { + .baseHP = 80, + .baseAttack = 130, + .baseDefense = 60, + .baseSpeed = 120, + .baseSpAttack = 40, + .baseSpDefense = 80, + .types = { TYPE_FIGHTING, TYPE_POISON }, + .catchRate = 20, + .expYield = 102, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_PRESSURE, ABILITY_UNBURDEN, ABILITY_POISON_TOUCH }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Sneasler"), + .cryId = CRY_SNEASLER, + .natDexNum = NATIONAL_DEX_SNEASLER, + .categoryName = _("Free Climb"), + .height = 13, + .weight = 430, + .description = COMPOUND_STRING( + "Because of its wicked poison and daunting\n" + "physical prowess, no other species could\n" + "hope to best it on frozen highlands. It\n" + "prefers solitude and doesn't form packs."), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Sneasler, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Sneasler, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Sneasler, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Sneasler), + ICON(Sneasler, 2), + //.footprint = gMonFootprint_Sneasler, + LEARNSETS(Sneasler), + }, +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_SNEASEL + +#if P_FAMILY_TEDDIURSA + [SPECIES_TEDDIURSA] = + { + .baseHP = 60, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 40, + .baseSpAttack = 50, + .baseSpDefense = 50, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 120, + .expYield = 66, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_PICKUP, ABILITY_QUICK_FEET, ABILITY_HONEY_GATHER }, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = TRUE, + .speciesName = _("Teddiursa"), + .cryId = CRY_TEDDIURSA, + .natDexNum = NATIONAL_DEX_TEDDIURSA, + .categoryName = _("Little Bear"), + .height = 6, + .weight = 88, + .description = COMPOUND_STRING( + "It licks its palms that are sweetened by\n" + "being soaked in honey. A Teddiursa makes\n" + "its own honey by blending fruits and pollen\n" + "collected by Beedrill."), + .pokemonScale = 455, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Teddiursa, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Teddiursa, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Teddiursa, 48, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Teddiursa), + ICON(Teddiursa, 0), + .footprint = gMonFootprint_Teddiursa, + LEARNSETS(Teddiursa), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_URSARING}), + }, + + [SPECIES_URSARING] = + { + .baseHP = 90, + .baseAttack = 130, + .baseDefense = 75, + .baseSpeed = 55, + .baseSpAttack = 75, + .baseSpDefense = 75, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 60, + .expYield = 175, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_GUTS, ABILITY_QUICK_FEET, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Ursaring"), + .cryId = CRY_URSARING, + .natDexNum = NATIONAL_DEX_URSARING, + .categoryName = _("Hibernator"), + .height = 18, + .weight = 1258, + .description = COMPOUND_STRING( + "In forests, it is said that there are many\n" + "streams and towering trees where an\n" + "Ursaring gathers food. It walks through\n" + "its forest collecting food every day."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Ursaring, 64, 64), + FRONT_PIC_FEMALE(Ursaring, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Ursaring, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Ursaring, 56, 64), + BACK_PIC_FEMALE(Ursaring, 56, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Ursaring), + ICON(Ursaring, 2), + .footprint = gMonFootprint_Ursaring, + LEARNSETS(Ursaring), + .evolutions = EVOLUTION({EVO_ITEM_NIGHT, ITEM_PEAT_BLOCK, SPECIES_URSALUNA}, + {EVO_NONE, 0, SPECIES_URSALUNA_BLOODMOON}), + }, + +#if P_GEN_8_CROSS_EVOS +#define URSALUNA_MISC_INFO \ + .expYield = 275, \ + .types = { TYPE_GROUND, TYPE_NORMAL }, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .bodyColor = BODY_COLOR_BROWN, \ + .speciesName = _("Ursaluna"), \ + .cryId = CRY_URSALUNA, \ + .natDexNum = NATIONAL_DEX_URSALUNA, \ + .categoryName = _("Peat"), \ + .formSpeciesIdTable = sUrsalunaFormSpeciesIdTable + + [SPECIES_URSALUNA] = + { + URSALUNA_MISC_INFO, + .baseHP = 130, + .baseAttack = 140, + .baseDefense = 105, + .baseSpeed = 50, + .baseSpAttack = 45, + .baseSpDefense = 80, + .catchRate = 20, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .abilities = { ABILITY_GUTS, ABILITY_BULLETPROOF, ABILITY_UNNERVE }, + .height = 24, + .weight = 2900, + .description = COMPOUND_STRING( + "Swampy terrain gives Ursaluna its burly\n" + "physique and newfound capacity to\n" + "manipulate peat at will."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 369, + .trainerOffset = 7, + FRONT_PIC(Ursaluna, 56, 56), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Ursaluna, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Ursaluna, 64, 40), + .backPicYOffset = 14, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Ursaluna), + ICON(Ursaluna, 2), + //.footprint = gMonFootprint_Ursaluna, + LEARNSETS(Ursaluna), + }, + + [SPECIES_URSALUNA_BLOODMOON] = + { + URSALUNA_MISC_INFO, + .baseHP = 113, + .baseAttack = 70, + .baseDefense = 120, + .baseSpeed = 52, + .baseSpAttack = 135, + .baseSpDefense = 65, + .catchRate = 5, + .evYield_SpAttack = 3, + .genderRatio = MON_MALE, + .abilities = { ABILITY_MINDS_EYE, ABILITY_NONE }, + .height = 27, + .weight = 3330, + .description = COMPOUND_STRING( + "It crossed the sea and drifted\n" + "ashore in a new land. Surviving in this\n" + "place led it to take on a unique\n" + "appearance and gain special powers."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 369, + .trainerOffset = 7, + FRONT_PIC(UrsalunaBloodmoon, 64, 64), + //.frontPicYOffset = 0, + .frontAnimFrames = sAnims_UrsalunaBloodmoon, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(UrsalunaBloodmoon, 64, 40), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(UrsalunaBloodmoon), + //ICON(UrsalunaBloodmoon, 0), + //.footprint = gMonFootprint_UrsalunaBloodmoon, + LEARNSETS(UrsalunaBloodmoon), + }, +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_TEDDIURSA + +#if P_FAMILY_SLUGMA + [SPECIES_SLUGMA] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 40, + .baseSpeed = 20, + .baseSpAttack = 70, + .baseSpDefense = 40, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 190, + .expYield = 50, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_MAGMA_ARMOR, ABILITY_FLAME_BODY, ABILITY_WEAK_ARMOR }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Slugma"), + .cryId = CRY_SLUGMA, + .natDexNum = NATIONAL_DEX_SLUGMA, + .categoryName = _("Lava"), + .height = 7, + .weight = 350, + .description = COMPOUND_STRING( + "It is a species of Pokémon that lives in\n" + "volcanic areas. If its body cools, its skin\n" + "hardens and immobilizes it. To avoid that,\n" + "it sleeps near magma."), + .pokemonScale = 329, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Slugma, 32, 48), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Slugma, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Slugma, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Slugma), + ICON(Slugma, 0), + .footprint = gMonFootprint_Slugma, + LEARNSETS(Slugma), + .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_MAGCARGO}), + }, + + [SPECIES_MAGCARGO] = + { + .baseHP = P_UPDATED_STATS >= GEN_7 ? 60 : 50, + .baseAttack = 50, + .baseDefense = 120, + .baseSpeed = 30, + .baseSpAttack = P_UPDATED_STATS >= GEN_7 ? 90 : 80, + .baseSpDefense = 80, + .types = { TYPE_FIRE, TYPE_ROCK }, + .catchRate = 75, + .expYield = 151, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_MAGMA_ARMOR, ABILITY_FLAME_BODY, ABILITY_WEAK_ARMOR }, + .bodyColor = BODY_COLOR_RED, + .noFlip = TRUE, + .speciesName = _("Magcargo"), + .cryId = CRY_MAGCARGO, + .natDexNum = NATIONAL_DEX_MAGCARGO, + .categoryName = _("Lava"), + .height = 8, + .weight = 550, + .description = COMPOUND_STRING( + "The shell on its back is made of hardened\n" + "magma. Tens of thousands of years spent\n" + "living in volcanic craters have turned\n" + "Magcargo's bodies into magma."), + .pokemonScale = 332, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Magcargo, 56, 64), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Magcargo, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Magcargo, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Magcargo), + ICON(Magcargo, 0), + .footprint = gMonFootprint_Magcargo, + LEARNSETS(Magcargo), + }, +#endif //P_FAMILY_SLUGMA + +#if P_FAMILY_SWINUB + [SPECIES_SWINUB] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 40, + .baseSpeed = 50, + .baseSpAttack = 30, + .baseSpDefense = 30, + .types = { TYPE_ICE, TYPE_GROUND }, + .catchRate = 225, + .expYield = 50, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_OBLIVIOUS, ABILITY_SNOW_CLOAK, ABILITY_THICK_FAT }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Swinub"), + .cryId = CRY_SWINUB, + .natDexNum = NATIONAL_DEX_SWINUB, + .categoryName = _("Pig"), + .height = 4, + .weight = 65, + .description = COMPOUND_STRING( + "It roots for food by rubbing its snout\n" + "against the ground. Its favorite food is a\n" + "mushroom that grows under dried grass.\n" + "It occasionally roots out hot springs."), + .pokemonScale = 324, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Swinub, 40, 32), + .frontPicYOffset = 18, + .frontAnimFrames = sAnims_Swinub, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Swinub, 56, 40), + .backPicYOffset = 15, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Swinub), + ICON(Swinub, 2), + .footprint = gMonFootprint_Swinub, + LEARNSETS(Swinub), + .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_PILOSWINE}), + }, + + [SPECIES_PILOSWINE] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 80, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 60, + .types = { TYPE_ICE, TYPE_GROUND }, + .catchRate = 75, + .expYield = 158, + .evYield_HP = 1, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_OBLIVIOUS, ABILITY_SNOW_CLOAK, ABILITY_THICK_FAT }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Piloswine"), + .cryId = CRY_PILOSWINE, + .natDexNum = NATIONAL_DEX_PILOSWINE, + .categoryName = _("Swine"), + .height = 11, + .weight = 558, + .description = COMPOUND_STRING( + "A Piloswine is covered by a thick coat\n" + "of long hair for enduring freezing cold.\n" + "It uses its tusks to dig up food that has\n" + "been buried under ice."), + .pokemonScale = 306, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Piloswine, 48, 56), + FRONT_PIC_FEMALE(Piloswine, 48, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Piloswine, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Piloswine, 64, 48), + BACK_PIC_FEMALE(Piloswine, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Piloswine), + ICON(Piloswine, 2), + .footprint = gMonFootprint_Piloswine, + LEARNSETS(Piloswine), + .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_MAMOSWINE}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_MAMOSWINE] = + { + .baseHP = 110, + .baseAttack = 130, + .baseDefense = 80, + .baseSpeed = 80, + .baseSpAttack = 70, + .baseSpDefense = 60, + .types = { TYPE_ICE, TYPE_GROUND }, + .catchRate = 50, + .expYield = 239, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_OBLIVIOUS, ABILITY_SNOW_CLOAK, ABILITY_THICK_FAT }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Mamoswine"), + .cryId = CRY_MAMOSWINE, + .natDexNum = NATIONAL_DEX_MAMOSWINE, + .categoryName = _("Twin Tusk"), + .height = 25, + .weight = 2910, + .description = COMPOUND_STRING( + "A frozen Mamoswine was dug from ice\n" + "dating back 10,000 years. It woke up to\n" + "much amazement. This Pokémon has been\n" + "around for a long, long, long time."), + .pokemonScale = 257, + .pokemonOffset = 6, + .trainerScale = 423, + .trainerOffset = 8, + FRONT_PIC(Mamoswine, 64, 56), + FRONT_PIC_FEMALE(Mamoswine, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Mamoswine, + .frontAnimId = ANIM_BACK_AND_LUNGE, + BACK_PIC(Mamoswine, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Mamoswine), + ICON(Mamoswine, 2), + .footprint = gMonFootprint_Mamoswine, + LEARNSETS(Mamoswine), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SWINUB + +#if P_FAMILY_CORSOLA +#define CORSOLA_HP (P_UPDATED_STATS >= GEN_7 ? 65 : 55) +#define CORSOLA_DEFENSES (P_UPDATED_STATS >= GEN_7 ? 95 : 85) + +#define CORSOLA_MISC_INFO \ + .catchRate = 60, \ + .expYield = 144, \ + .evYield_SpDefense = 1, \ + .genderRatio = PERCENT_FEMALE(75), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_FAST, \ + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3 }, \ + .speciesName = _("Corsola"), \ + .cryId = CRY_CORSOLA, \ + .natDexNum = NATIONAL_DEX_CORSOLA, \ + .categoryName = _("Coral"), \ + .height = 6, \ + .pokemonScale = 410, \ + .pokemonOffset = 15, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Corsola, \ + .formSpeciesIdTable = sCorsolaFormSpeciesIdTable + + [SPECIES_CORSOLA] = + { + CORSOLA_MISC_INFO, + .baseHP = CORSOLA_HP, + .baseAttack = 55, + .baseDefense = CORSOLA_DEFENSES, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = CORSOLA_DEFENSES, + .types = { TYPE_WATER, TYPE_ROCK }, + .evYield_Defense = 1, + .itemRare = ITEM_LUMINOUS_MOSS, + .abilities = { ABILITY_HUSTLE, ABILITY_NATURAL_CURE, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_PINK, + .weight = 50, + .description = COMPOUND_STRING( + "Corsola live in warm southern seas.\n" + "If the sea becomes polluted, the beautiful\n" + "coral stalks become discolored and crumble\n" + "away in tatters."), + FRONT_PIC(Corsola, 48, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Corsola, + .frontAnimId = ANIM_H_SLIDE, + BACK_PIC(Corsola, 56, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Corsola), + ICON(Corsola, 0), + LEARNSETS(Corsola), + }, + +#if P_GALARIAN_FORMS + [SPECIES_CORSOLA_GALARIAN] = + { + CORSOLA_MISC_INFO, + .baseHP = CORSOLA_HP - 5, + .baseAttack = 55, + .baseDefense = CORSOLA_DEFENSES + 5, + .baseSpeed = 30, + .baseSpAttack = 65, + .baseSpDefense = CORSOLA_DEFENSES + 5, + .types = { TYPE_GHOST, TYPE_GHOST }, + .abilities = { ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY }, + .bodyColor = BODY_COLOR_WHITE, + .weight = 5, + .description = COMPOUND_STRING( + "Sudden climate change wiped out this\n" + "ancient kind of Corsola. With its branches,\n" + "it absorbs others' life-force. It curses\n" + "those unaware that kick it by accident."), + FRONT_PIC(CorsolaGalarian, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_CorsolaGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(CorsolaGalarian, 56, 48), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(CorsolaGalarian), + ICON(CorsolaGalarian, 0), + LEARNSETS(CorsolaGalarian), + .isGalarianForm = TRUE, + .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_CURSOLA}), + }, + + [SPECIES_CURSOLA] = + { + .baseHP = 60, + .baseAttack = 95, + .baseDefense = 50, + .baseSpeed = 30, + .baseSpAttack = 145, + .baseSpDefense = 130, + .types = { TYPE_GHOST, TYPE_GHOST }, + .catchRate = 30, + .expYield = 179, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_PERISH_BODY }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Cursola"), + .cryId = CRY_CURSOLA, + .natDexNum = NATIONAL_DEX_CURSOLA, + .categoryName = _("Coral"), + .height = 10, + .weight = 4, + .description = COMPOUND_STRING( + "Its shell is overflowing with its\n" + "heightened otherworldly energy. The\n" + "ectoplasm serves as protection for this\n" + "Pokémon's core spirit."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Cursola, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Cursola, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Cursola, 64, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Cursola), + ICON(Cursola, 0), + .footprint = gMonFootprint_Cursola, + LEARNSETS(Cursola), + }, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_CORSOLA + +#if P_FAMILY_REMORAID + [SPECIES_REMORAID] = + { + .baseHP = 35, + .baseAttack = 65, + .baseDefense = 35, + .baseSpeed = 65, + .baseSpAttack = 65, + .baseSpDefense = 35, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 190, + .expYield = 60, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_HUSTLE, ABILITY_SNIPER, ABILITY_MOODY }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Remoraid"), + .cryId = CRY_REMORAID, + .natDexNum = NATIONAL_DEX_REMORAID, + .categoryName = _("Jet"), + .height = 6, + .weight = 120, + .description = COMPOUND_STRING( + "A Remoraid uses its abdominal muscles\n" + "to forcefully expel swallowed water, then\n" + "shoot down flying prey. When evolution\n" + "approaches, it travels down rivers."), + .pokemonScale = 316, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Remoraid, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Remoraid, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Remoraid, 56, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Remoraid), + ICON(Remoraid, 0), + .footprint = gMonFootprint_Remoraid, + LEARNSETS(Remoraid), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_OCTILLERY}), + }, + + [SPECIES_OCTILLERY] = + { + .baseHP = 75, + .baseAttack = 105, + .baseDefense = 75, + .baseSpeed = 45, + .baseSpAttack = 105, + .baseSpDefense = 75, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 75, + .expYield = 168, + .evYield_Attack = 1, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_SUCTION_CUPS, ABILITY_SNIPER, ABILITY_MOODY }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Octillery"), + .cryId = CRY_OCTILLERY, + .natDexNum = NATIONAL_DEX_OCTILLERY, + .categoryName = _("Jet"), + .height = 9, + .weight = 285, + .description = COMPOUND_STRING( + "It ensnares its foe with its suction-\n" + "cupped tentacles before delivering the\n" + "finishing blow. If the foe turns out to be\n" + "too strong, it spews ink to escape."), + .pokemonScale = 296, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Octillery, 56, 48), + FRONT_PIC_FEMALE(Octillery, 56, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Octillery, + .frontAnimId = ANIM_V_STRETCH, + .frontAnimDelay = 20, + BACK_PIC(Octillery, 64, 56), + BACK_PIC_FEMALE(Octillery, 64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Octillery), + ICON(Octillery, 0), + .footprint = gMonFootprint_Octillery, + LEARNSETS(Octillery), + }, +#endif //P_FAMILY_REMORAID + +#if P_FAMILY_DELIBIRD + [SPECIES_DELIBIRD] = + { + .baseHP = 45, + .baseAttack = 55, + .baseDefense = 45, + .baseSpeed = 75, + .baseSpAttack = 65, + .baseSpDefense = 45, + .types = { TYPE_ICE, TYPE_FLYING }, + .catchRate = 45, + .expYield = 116, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_HUSTLE, ABILITY_INSOMNIA }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Delibird"), + .cryId = CRY_DELIBIRD, + .natDexNum = NATIONAL_DEX_DELIBIRD, + .categoryName = _("Delivery"), + .height = 9, + .weight = 160, + .description = COMPOUND_STRING( + "It carries food bundled up in its tail.\n" + "There was a famous explorer who\n" + "managed to scale Mt. Everest thanks\n" + "to a Delibird sharing its food."), + .pokemonScale = 293, + .pokemonOffset = 11, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Delibird, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Delibird, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Delibird, 56, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Delibird), + ICON(Delibird, 1), + .footprint = gMonFootprint_Delibird, + LEARNSETS(Delibird), + }, +#endif //P_FAMILY_DELIBIRD + +#if P_FAMILY_MANTINE +#if P_GEN_4_CROSS_EVOS + [SPECIES_MANTYKE] = + { + .baseHP = 45, + .baseAttack = 20, + .baseDefense = 50, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 120, + .types = { TYPE_WATER, TYPE_FLYING }, + .catchRate = 25, + .expYield = 69, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_WATER_ABSORB, ABILITY_WATER_VEIL }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Mantyke"), + .cryId = CRY_MANTYKE, + .natDexNum = NATIONAL_DEX_MANTYKE, + .categoryName = _("Kite"), + .height = 10, + .weight = 650, + .description = COMPOUND_STRING( + "When it swims close to the surface\n" + "of the ocean, people aboard ships are\n" + "able to observe the pattern on its back.\n" + "It often swims in a school of Remoraid."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Mantyke, 48, 48), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Mantyke, + .frontAnimId = ANIM_TWIST_TWICE, + BACK_PIC(Mantyke, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Mantyke), + ICON(Mantyke, 0), + .footprint = gMonFootprint_Mantyke, + LEARNSETS(Mantyke), + .evolutions = EVOLUTION({EVO_SPECIFIC_MON_IN_PARTY, SPECIES_REMORAID, SPECIES_MANTINE}), + }, +#endif //P_GEN_4_CROSS_EVOS + + [SPECIES_MANTINE] = + { + .baseHP = P_UPDATED_STATS >= GEN_7 ? 85 : 65, + .baseAttack = 40, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 80, + .baseSpDefense = 140, + .types = { TYPE_WATER, TYPE_FLYING }, + .catchRate = 25, + .expYield = 170, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_WATER_ABSORB, ABILITY_WATER_VEIL }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Mantine"), + .cryId = CRY_MANTINE, + .natDexNum = NATIONAL_DEX_MANTINE, + .categoryName = _("Kite"), + .height = 21, + .weight = 2200, + .description = COMPOUND_STRING( + "On sunny days, schools of Mantine can be\n" + "seen elegantly leaping over the waves.\n" + "It is not bothered by the Remoraid that\n" + "hitches rides."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 342, + .trainerOffset = 7, + FRONT_PIC(Mantine, 64, 56), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Mantine, + .frontAnimId = ANIM_SWING_CONVEX, + .enemyMonElevation = 6, + BACK_PIC(Mantine, 64, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Mantine), + ICON(Mantine, 2), + .footprint = gMonFootprint_Mantine, + LEARNSETS(Mantine), + }, +#endif //P_FAMILY_MANTINE + +#if P_FAMILY_SKARMORY + [SPECIES_SKARMORY] = + { + .baseHP = 65, + .baseAttack = 80, + .baseDefense = 140, + .baseSpeed = 70, + .baseSpAttack = 40, + .baseSpDefense = 70, + .types = { TYPE_STEEL, TYPE_FLYING }, + .catchRate = 25, + .expYield = 163, + .evYield_Defense = 2, + .itemRare = ITEM_METAL_COAT, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_STURDY, ABILITY_WEAK_ARMOR }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Skarmory"), + .cryId = CRY_SKARMORY, + .natDexNum = NATIONAL_DEX_SKARMORY, + .categoryName = _("Armor Bird"), + .height = 17, + .weight = 505, + .description = COMPOUND_STRING( + "A Pokémon that has a body and wings of\n" + "steel. People in the past used feathers\n" + "fallen from Skarmory to make swords and\n" + "knives."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 271, + .trainerOffset = 1, + FRONT_PIC(Skarmory, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Skarmory, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Skarmory, 48, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Skarmory), + ICON(Skarmory, 0), + .footprint = gMonFootprint_Skarmory, + LEARNSETS(Skarmory), + }, +#endif //P_FAMILY_SKARMORY + +#if P_FAMILY_HOUNDOUR + [SPECIES_HOUNDOUR] = + { + .baseHP = 45, + .baseAttack = 60, + .baseDefense = 30, + .baseSpeed = 65, + .baseSpAttack = 80, + .baseSpDefense = 50, + .types = { TYPE_DARK, TYPE_FIRE }, + .catchRate = 120, + .expYield = 66, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_EARLY_BIRD, ABILITY_FLASH_FIRE, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Houndour"), + .cryId = CRY_HOUNDOUR, + .natDexNum = NATIONAL_DEX_HOUNDOUR, + .categoryName = _("Dark"), + .height = 6, + .weight = 108, + .description = COMPOUND_STRING( + "Houndour communicate with each other\n" + "using a variety of cries to corner their\n" + "prey. This Pokémon's remarkable teamwork\n" + "is simply unparalleled."), + .pokemonScale = 393, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Houndour, 40, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Houndour, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Houndour, 40, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Houndour), + ICON(Houndour, 0), + .footprint = gMonFootprint_Houndour, + LEARNSETS(Houndour), + .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_HOUNDOOM}), + }, + +#define HOUNDOOM_MISC_INFO \ + .types = { TYPE_DARK, TYPE_FIRE }, \ + .catchRate = 45, \ + .evYield_SpAttack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = 35, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .bodyColor = BODY_COLOR_BLACK, \ + .speciesName = _("Houndoom"), \ + .natDexNum = NATIONAL_DEX_HOUNDOOM, \ + .categoryName = _("Dark"), \ + .footprint = gMonFootprint_Houndoom, \ + LEARNSETS(Houndoom), \ + .formSpeciesIdTable = sHoundoomFormSpeciesIdTable, \ + .formChangeTable = sHoundoomFormChangeTable + + [SPECIES_HOUNDOOM] = + { + HOUNDOOM_MISC_INFO, + .baseHP = 75, + .baseAttack = 90, + .baseDefense = 50, + .baseSpeed = 95, + .baseSpAttack = 110, + .baseSpDefense = 80, + .expYield = 175, + .abilities = { ABILITY_EARLY_BIRD, ABILITY_FLASH_FIRE, ABILITY_UNNERVE }, + .cryId = CRY_HOUNDOOM, + .height = 14, + .weight = 350, + .description = COMPOUND_STRING( + "In a Houndoom pack, the one with its horns\n" + "raked sharply back serves a leadership\n" + "role. They choose their leader by fighting\n" + "among themselves."), + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Houndoom, 64, 64), + FRONT_PIC_FEMALE(Houndoom, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Houndoom, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Houndoom, 64, 56), + BACK_PIC_FEMALE(Houndoom, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Houndoom), + ICON(Houndoom, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_HOUNDOOM_MEGA] = + { + HOUNDOOM_MISC_INFO, + .baseHP = 75, + .baseAttack = 90, + .baseDefense = 90, + .baseSpeed = 115, + .baseSpAttack = 140, + .baseSpDefense = 90, + .expYield = 210, + .abilities = { ABILITY_SOLAR_POWER, ABILITY_SOLAR_POWER, ABILITY_SOLAR_POWER }, + .cryId = CRY_HOUNDOOM_MEGA, + .height = 19, + .weight = 495, + .description = COMPOUND_STRING( + "Its red claws and the tips of its tail are\n" + "melting from high internal temperatures\n" + "that are painful to Houndoom itself.\n"), + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(HoundoomMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_HoundoomMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(HoundoomMega, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(HoundoomMega), + ICON(HoundoomMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_HOUNDOUR + +#if P_FAMILY_PHANPY + [SPECIES_PHANPY] = + { + .baseHP = 90, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 40, + .baseSpAttack = 40, + .baseSpDefense = 40, + .types = { TYPE_GROUND, TYPE_GROUND }, + .catchRate = 120, + .expYield = 66, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_PICKUP, ABILITY_NONE, ABILITY_SAND_VEIL }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Phanpy"), + .cryId = CRY_PHANPY, + .natDexNum = NATIONAL_DEX_PHANPY, + .categoryName = _("Long Nose"), + .height = 5, + .weight = 335, + .description = COMPOUND_STRING( + "Phanpy's big ears serve as broad fans.\n" + "When it becomes hot, it flaps the ears\n" + "busily to cool down. Even the young are\n" + "very strong."), + .pokemonScale = 465, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Phanpy, 40, 32), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Phanpy, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + BACK_PIC(Phanpy, 56, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Phanpy), + ICON(Phanpy, 0), + .footprint = gMonFootprint_Phanpy, + LEARNSETS(Phanpy), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_DONPHAN}), + }, + + [SPECIES_DONPHAN] = + { + .baseHP = 90, + .baseAttack = 120, + .baseDefense = 120, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 60, + .types = { TYPE_GROUND, TYPE_GROUND }, + .catchRate = 60, + .expYield = 175, + .evYield_Attack = 1, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_STURDY, ABILITY_NONE, ABILITY_SAND_VEIL }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Donphan"), + .cryId = CRY_DONPHAN, + .natDexNum = NATIONAL_DEX_DONPHAN, + .categoryName = _("Armor"), + .height = 11, + .weight = 1200, + .description = COMPOUND_STRING( + "A Donphan is so strong it can easily haul\n" + "a dump truck. Its hide has toughened to a\n" + "rock-hard state. An ordinary sort of\n" + "attack won't even leave a scratch."), + .pokemonScale = 313, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Donphan, 64, 48), + FRONT_PIC_FEMALE(Donphan, 64, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Donphan, + .frontAnimId = ANIM_ROTATE_UP_SLAM_DOWN, + BACK_PIC(Donphan, 64, 48), + BACK_PIC_FEMALE(Donphan, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Donphan), + ICON(Donphan, 0), + .footprint = gMonFootprint_Donphan, + LEARNSETS(Donphan), + }, +#endif //P_FAMILY_PHANPY + +#if P_FAMILY_STANTLER + [SPECIES_STANTLER] = + { + .baseHP = 73, + .baseAttack = 95, + .baseDefense = 62, + .baseSpeed = 85, + .baseSpAttack = 85, + .baseSpDefense = 65, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 45, + .expYield = 163, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_FRISK, ABILITY_SAP_SIPPER }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Stantler"), + .cryId = CRY_STANTLER, + .natDexNum = NATIONAL_DEX_STANTLER, + .categoryName = _("Big Horn"), + .height = 14, + .weight = 712, + .description = COMPOUND_STRING( + "Stantler's magnificent antlers were\n" + "once traded at high prices as works of art.\n" + "As a result, this Pokémon was hunted\n" + "close to extinction."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Stantler, 48, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Stantler, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Stantler, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Stantler), + ICON(Stantler, 2), + .footprint = gMonFootprint_Stantler, + LEARNSETS(Stantler), + .evolutions = EVOLUTION({EVO_MOVE, MOVE_PSYSHIELD_BASH, SPECIES_WYRDEER}), + }, + +#if P_GEN_8_CROSS_EVOS + [SPECIES_WYRDEER] = + { + .baseHP = 103, + .baseAttack = 105, + .baseDefense = 72, + .baseSpeed = 65, + .baseSpAttack = 105, + .baseSpDefense = 75, + .types = { TYPE_NORMAL, TYPE_PSYCHIC }, + .catchRate = 45, + .expYield = 263, + .evYield_Attack = 1, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_FRISK, ABILITY_SAP_SIPPER }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Wyrdeer"), + .cryId = CRY_WYRDEER, + .natDexNum = NATIONAL_DEX_WYRDEER, + .categoryName = _("Big Horn"), + .height = 18, + .weight = 951, + .description = COMPOUND_STRING( + "The black orbs shine with an uncanny light\n" + "when it is erecting invisible barriers.\n" + "The fur shed from its beard retains heat\n" + "and is useful for winter clothing."), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + FRONT_PIC(Wyrdeer, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Wyrdeer, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Wyrdeer, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Wyrdeer), + ICON(Wyrdeer, 2), + //.footprint = gMonFootprint_Wyrdeer, + LEARNSETS(Wyrdeer), + }, +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_STANTLER + +#if P_FAMILY_SMEARGLE + [SPECIES_SMEARGLE] = + { + .baseHP = 55, + .baseAttack = 20, + .baseDefense = 35, + .baseSpeed = 75, + .baseSpAttack = 20, + .baseSpDefense = 45, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 45, + .expYield = 88, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_OWN_TEMPO, ABILITY_TECHNICIAN, ABILITY_MOODY }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Smeargle"), + .cryId = CRY_SMEARGLE, + .natDexNum = NATIONAL_DEX_SMEARGLE, + .categoryName = _("Painter"), + .height = 12, + .weight = 580, + .description = COMPOUND_STRING( + "A Smeargle marks its territory using a\n" + "fluid that leaks out from the tip of its\n" + "tail. About 5,000 different marks left by\n" + "this Pokémon have been found."), + .pokemonScale = 287, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Smeargle, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Smeargle, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + BACK_PIC(Smeargle, 56, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Smeargle), + ICON(Smeargle, 1), + .footprint = gMonFootprint_Smeargle, + LEARNSETS(Smeargle), + }, +#endif //P_FAMILY_SMEARGLE + +#if P_FAMILY_MILTANK + [SPECIES_MILTANK] = + { + .baseHP = 95, + .baseAttack = 80, + .baseDefense = 105, + .baseSpeed = 100, + .baseSpAttack = 40, + .baseSpDefense = 70, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 45, + .expYield = 172, + .evYield_Defense = 2, + .itemCommon = ITEM_MOOMOO_MILK, + .itemRare = ITEM_MOOMOO_MILK, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_THICK_FAT, ABILITY_SCRAPPY, ABILITY_SAP_SIPPER }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Miltank"), + .cryId = CRY_MILTANK, + .natDexNum = NATIONAL_DEX_MILTANK, + .categoryName = _("Milk Cow"), + .height = 12, + .weight = 755, + .description = COMPOUND_STRING( + "It gives over five gallons of milk daily.\n" + "Its sweet milk is enjoyed by children and\n" + "grown-ups alike. People who can't drink\n" + "milk turn it into yogurt and eat it instead."), + .pokemonScale = 280, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Miltank, 64, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Miltank, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Miltank, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Miltank), + ICON(Miltank, 0), + .footprint = gMonFootprint_Miltank, + LEARNSETS(Miltank), + }, +#endif //P_FAMILY_MILTANK + +#if P_FAMILY_RAIKOU + [SPECIES_RAIKOU] = + { + .baseHP = 90, + .baseAttack = 85, + .baseDefense = 75, + .baseSpeed = 115, + .baseSpAttack = 115, + .baseSpDefense = 100, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 3, + .expYield = 261, + .evYield_Speed = 2, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + #if P_UPDATED_ABILITIES >= GEN_7 + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INNER_FOCUS }, + #else + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_VOLT_ABSORB }, + #endif + .bodyColor = BODY_COLOR_YELLOW, + .isLegendary = TRUE, + .speciesName = _("Raikou"), + .cryId = CRY_RAIKOU, + .natDexNum = NATIONAL_DEX_RAIKOU, + .categoryName = _("Thunder"), + .height = 19, + .weight = 1780, + .description = COMPOUND_STRING( + "Raikou embodies the speed of lightning.\n" + "Its roars send shock waves shuddering\n" + "through the air and ground as if\n" + "lightning bolts were crashing down."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 345, + .trainerOffset = 7, + FRONT_PIC(Raikou, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Raikou, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Raikou, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(Raikou), + ICON(Raikou, 2), + .footprint = gMonFootprint_Raikou, + LEARNSETS(Raikou), + }, +#endif //P_FAMILY_RAIKOU + +#if P_FAMILY_ENTEI + [SPECIES_ENTEI] = + { + .baseHP = 115, + .baseAttack = 115, + .baseDefense = 85, + .baseSpeed = 100, + .baseSpAttack = 90, + .baseSpDefense = 75, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 3, + .expYield = 261, + .evYield_HP = 1, + .evYield_Attack = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + #if P_UPDATED_ABILITIES >= GEN_7 + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INNER_FOCUS }, + #else + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_FLASH_FIRE }, + #endif + .bodyColor = BODY_COLOR_BROWN, + .isLegendary = TRUE, + .speciesName = _("Entei"), + .cryId = CRY_ENTEI, + .natDexNum = NATIONAL_DEX_ENTEI, + .categoryName = _("Volcano"), + .height = 21, + .weight = 1980, + .description = COMPOUND_STRING( + "Entei embodies the passion of magma.\n" + "It is thought to have been born in the\n" + "eruption of a volcano. It blasts fire that\n" + "consumes all that it touches."), + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 345, + .trainerOffset = 7, + FRONT_PIC(Entei, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Entei, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Entei, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Entei), + ICON(Entei, 2), + .footprint = gMonFootprint_Entei, + LEARNSETS(Entei), + }, +#endif //P_FAMILY_ENTEI + +#if P_FAMILY_SUICUNE + [SPECIES_SUICUNE] = + { + .baseHP = 100, + .baseAttack = 75, + .baseDefense = 115, + .baseSpeed = 85, + .baseSpAttack = 90, + .baseSpDefense = 115, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 3, + .expYield = 261, + .evYield_Defense = 1, + .evYield_SpDefense = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + #if P_UPDATED_ABILITIES >= GEN_7 + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INNER_FOCUS }, + #else + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_WATER_ABSORB }, + #endif + .bodyColor = BODY_COLOR_BLUE, + .isLegendary = TRUE, + .speciesName = _("Suicune"), + .cryId = CRY_SUICUNE, + .natDexNum = NATIONAL_DEX_SUICUNE, + .categoryName = _("Aurora"), + .height = 20, + .weight = 1870, + .description = COMPOUND_STRING( + "Suicune embodies the compassion of\n" + "a pure spring of water. It runs across\n" + "the land with gliding elegance. It has the\n" + "power to purify dirty water."), + .pokemonScale = 269, + .pokemonOffset = 0, + .trainerScale = 345, + .trainerOffset = 7, + FRONT_PIC(Suicune, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Suicune, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Suicune, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(Suicune), + ICON(Suicune, 2), + .footprint = gMonFootprint_Suicune, + LEARNSETS(Suicune), + }, +#endif //P_FAMILY_SUICUNE + +#if P_FAMILY_LARVITAR + [SPECIES_LARVITAR] = + { + .baseHP = 50, + .baseAttack = 64, + .baseDefense = 50, + .baseSpeed = 41, + .baseSpAttack = 45, + .baseSpDefense = 50, + .types = { TYPE_ROCK, TYPE_GROUND }, + .catchRate = 45, + .expYield = 60, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, + .abilities = { ABILITY_GUTS, ABILITY_NONE, ABILITY_SAND_VEIL }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Larvitar"), + .cryId = CRY_LARVITAR, + .natDexNum = NATIONAL_DEX_LARVITAR, + .categoryName = _("Rock Skin"), + .height = 6, + .weight = 720, + .description = COMPOUND_STRING( + "A Larvitar is born deep under the ground.\n" + "It must eat its way through the soil above\n" + "and reach the surface for it to see its\n" + "parents' faces."), + .pokemonScale = 472, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Larvitar, 40, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Larvitar, + .frontAnimId = ANIM_V_JUMPS_SMALL, + BACK_PIC(Larvitar, 56, 64), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Larvitar), + ICON(Larvitar, 1), + .footprint = gMonFootprint_Larvitar, + LEARNSETS(Larvitar), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_PUPITAR}), + }, + + [SPECIES_PUPITAR] = + { + .baseHP = 70, + .baseAttack = 84, + .baseDefense = 70, + .baseSpeed = 51, + .baseSpAttack = 65, + .baseSpDefense = 70, + .types = { TYPE_ROCK, TYPE_GROUND }, + .catchRate = 45, + .expYield = 144, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Pupitar"), + .cryId = CRY_PUPITAR, + .natDexNum = NATIONAL_DEX_PUPITAR, + .categoryName = _("Hard Shell"), + .height = 12, + .weight = 1520, + .description = COMPOUND_STRING( + "A Pupitar creates a gas inside its body\n" + "that it ejects under compression to propel\n" + "itself like a jet. Its body can withstand\n" + "a collision with solid steel."), + .pokemonScale = 292, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pupitar, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Pupitar, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Pupitar, 48, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Pupitar), + ICON(Pupitar, 2), + .footprint = gMonFootprint_Pupitar, + LEARNSETS(Pupitar), + .evolutions = EVOLUTION({EVO_LEVEL, 55, SPECIES_TYRANITAR}), + }, + +#define TYRANITAR_MISC_INFO \ + .types = { TYPE_ROCK, TYPE_DARK }, \ + .catchRate = 45, \ + .evYield_Attack = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 40, \ + .friendship = 35, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .speciesName = _("Tyranitar"), \ + .natDexNum = NATIONAL_DEX_TYRANITAR, \ + .categoryName = _("Armor"), \ + .footprint = gMonFootprint_Tyranitar, \ + LEARNSETS(Tyranitar), \ + .formSpeciesIdTable = sTyranitarFormSpeciesIdTable, \ + .formChangeTable = sTyranitarFormChangeTable + + [SPECIES_TYRANITAR] = + { + TYRANITAR_MISC_INFO, + .baseHP = 100, + .baseAttack = 134, + .baseDefense = 110, + .baseSpeed = 61, + .baseSpAttack = 95, + .baseSpDefense = 100, + .expYield = 270, + .abilities = { ABILITY_SAND_STREAM, ABILITY_NONE, ABILITY_UNNERVE }, + .cryId = CRY_TYRANITAR, + .height = 20, + .weight = 2020, + .description = COMPOUND_STRING( + "A Tyranitar is so overwhelmingly powerful,\n" + "it can bring down a whole mountain to make\n" + "its nest. It roams in mountains seeking\n" + "new opponents to fight."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 345, + .trainerOffset = 7, + FRONT_PIC(Tyranitar, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Tyranitar, + .frontAnimId = ANIM_V_SHAKE, + .frontAnimDelay = 10, + BACK_PIC(Tyranitar, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Tyranitar), + ICON(Tyranitar, 4), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_TYRANITAR_MEGA] = + { + TYRANITAR_MISC_INFO, + .baseHP = 100, + .baseAttack = 164, + .baseDefense = 150, + .baseSpeed = 71, + .baseSpAttack = 95, + .baseSpDefense = 120, + .expYield = 315, + .abilities = { ABILITY_SAND_STREAM, ABILITY_SAND_STREAM, ABILITY_SAND_STREAM }, + .cryId = CRY_TYRANITAR_MEGA, + .height = 25, + .weight = 2550, + .description = COMPOUND_STRING( + "Due to the colossal power poured into it,\n" + "this Pokémon's back split right open. Its\n" + "destructive instincts are the only thing\n" + "keeping it moving."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 345, + .trainerOffset = 7, + FRONT_PIC(TyranitarMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_TyranitarMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(TyranitarMega, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(TyranitarMega), + ICON(TyranitarMega, 1), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LARVITAR + +#if P_FAMILY_LUGIA + [SPECIES_LUGIA] = + { + .baseHP = 106, + .baseAttack = 90, + .baseDefense = 130, + .baseSpeed = 110, + .baseSpAttack = 90, + .baseSpDefense = 154, + .types = { TYPE_PSYCHIC, TYPE_FLYING }, + .catchRate = 3, + .expYield = 306, + .evYield_SpDefense = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_MULTISCALE }, + .bodyColor = BODY_COLOR_WHITE, + .isLegendary = TRUE, + .speciesName = _("Lugia"), + .cryId = CRY_LUGIA, + .natDexNum = NATIONAL_DEX_LUGIA, + .categoryName = _("Diving"), + .height = 52, + .weight = 2160, + .description = COMPOUND_STRING( + "Lugia is so powerful even a light\n" + "fluttering of its wings can blow apart\n" + "houses. As a result, it chooses to live out\n" + "of sight deep under the sea."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 721, + .trainerOffset = 19, + FRONT_PIC(Lugia, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Lugia, + .frontAnimId = ANIM_GROW_IN_STAGES, + .frontAnimDelay = 20, + .enemyMonElevation = 6, + BACK_PIC(Lugia, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(Lugia), + ICON(Lugia, 0), + .footprint = gMonFootprint_Lugia, + LEARNSETS(Lugia), + }, +#endif //P_FAMILY_LUGIA + +#if P_FAMILY_HO_OH + [SPECIES_HO_OH] = + { + .baseHP = 106, + .baseAttack = 130, + .baseDefense = 90, + .baseSpeed = 90, + .baseSpAttack = 110, + .baseSpDefense = 154, + .types = { TYPE_FIRE, TYPE_FLYING }, + .catchRate = 3, + .expYield = 306, + .evYield_SpDefense = 3, + .itemCommon = ITEM_SACRED_ASH, + .itemRare = ITEM_SACRED_ASH, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_RED, + .isLegendary = TRUE, + .speciesName = _("Ho-Oh"), + .cryId = CRY_HO_OH, + .natDexNum = NATIONAL_DEX_HO_OH, + .categoryName = _("Rainbow"), + .height = 38, + .weight = 1990, + .description = COMPOUND_STRING( + "Its feathers--which glow in seven colors\n" + "depending on the angle at which they are\n" + "struck by light--are thought to bring joy.\n" + "It is said to live at the foot of a rainbow."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 610, + .trainerOffset = 17, + FRONT_PIC(HoOh, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_HoOh, + .frontAnimId = ANIM_GROW_VIBRATE, + .enemyMonElevation = 6, + BACK_PIC(HoOh, 64, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(HoOh), + ICON(HoOh, 1), + .footprint = gMonFootprint_HoOh, + LEARNSETS(HoOh), + }, +#endif //P_FAMILY_HO_OH + +#if P_FAMILY_CELEBI + [SPECIES_CELEBI] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 100, + .baseSpDefense = 100, + .types = { TYPE_PSYCHIC, TYPE_GRASS }, + .catchRate = 45, + .expYield = 270, + .evYield_HP = 3, + .itemCommon = ITEM_LUM_BERRY, + .itemRare = ITEM_LUM_BERRY, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_NATURAL_CURE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .isMythical = TRUE, + .speciesName = _("Celebi"), + .cryId = CRY_CELEBI, + .natDexNum = NATIONAL_DEX_CELEBI, + .categoryName = _("Time Travel"), + .height = 6, + .weight = 50, + .description = COMPOUND_STRING( + "This Pokémon came from the future by\n" + "crossing over time. It is thought that so\n" + "long as Celebi appears, a bright and\n" + "shining future awaits us."), + .pokemonScale = 393, + .pokemonOffset = -10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Celebi, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Celebi, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + .enemyMonElevation = 15, + BACK_PIC(Celebi, 48, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, + PALETTES(Celebi), + ICON(Celebi, 1), + .footprint = gMonFootprint_Celebi, + LEARNSETS(Celebi), + }, +#endif //P_FAMILY_CELEBI + +#ifdef __INTELLISENSE__ +}; +#endif \ No newline at end of file diff --git a/src/data/pokemon/species_info/gen_3.h b/src/data/pokemon/species_info/gen_3.h new file mode 100644 index 0000000000..b0606381ed --- /dev/null +++ b/src/data/pokemon/species_info/gen_3.h @@ -0,0 +1,8253 @@ +#ifdef __INTELLISENSE__ +const struct SpeciesInfo gSpeciesInfoGen3[] = +{ +#endif + +#if P_FAMILY_TREECKO + [SPECIES_TREECKO] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 35, + .baseSpeed = 70, + .baseSpAttack = 65, + .baseSpDefense = 55, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 62, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_UNBURDEN }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Treecko"), + .cryId = CRY_TREECKO, + .natDexNum = NATIONAL_DEX_TREECKO, + .categoryName = _("Wood Gecko"), + .height = 5, + .weight = 50, + .description = COMPOUND_STRING( + "It makes its nest in a giant tree in the\n" + "forest. It ferociously guards against\n" + "anything nearing its territory. It is said\n" + "to be the protector of the forest's trees."), + .pokemonScale = 541, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Treecko, 48, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Treecko, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Treecko, 56, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Treecko), + ICON(Treecko, 1), + .footprint = gMonFootprint_Treecko, + LEARNSETS(Treecko), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_GROVYLE}), + }, + + [SPECIES_GROVYLE] = + { + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 45, + .baseSpeed = 95, + .baseSpAttack = 85, + .baseSpDefense = 65, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 142, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_UNBURDEN }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Grovyle"), + .cryId = CRY_GROVYLE, + .natDexNum = NATIONAL_DEX_GROVYLE, + .categoryName = _("Wood Gecko"), + .height = 9, + .weight = 216, + .description = COMPOUND_STRING( + "Leaves grow out of this Pokémon's body.\n" + "They help obscure a Grovyle from the eyes\n" + "of its enemies while it is in a thickly\n" + "overgrown forest."), + .pokemonScale = 360, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Grovyle, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Grovyle, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Grovyle, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Grovyle), + ICON(Grovyle, 1), + .footprint = gMonFootprint_Grovyle, + LEARNSETS(Grovyle), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SCEPTILE}), + }, + +#define SCEPTILE_MISC_INFO \ + .catchRate = 45, \ + .evYield_Speed = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON },\ + .bodyColor = BODY_COLOR_GREEN, \ + .speciesName = _("Sceptile"), \ + .natDexNum = NATIONAL_DEX_SCEPTILE, \ + .categoryName = _("Forest"), \ + .footprint = gMonFootprint_Sceptile, \ + LEARNSETS(Sceptile), \ + .formSpeciesIdTable = sSceptileFormSpeciesIdTable, \ + .formChangeTable = sSceptileFormChangeTable + + [SPECIES_SCEPTILE] = + { + SCEPTILE_MISC_INFO, + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 65, + .baseSpeed = 120, + .baseSpAttack = 105, + .baseSpDefense = 85, + .types = { TYPE_GRASS, TYPE_GRASS }, + .expYield = 239, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_UNBURDEN }, + .cryId = CRY_SCEPTILE, + .height = 17, + .weight = 522, + .description = COMPOUND_STRING( + "In the jungle, its power is without equal.\n" + "This Pokémon carefully grows trees and\n" + "plants. It regulates its body temperature\n" + "by basking in sunlight."), + .pokemonScale = 256, + .pokemonOffset = -1, + .trainerScale = 275, + .trainerOffset = 2, + FRONT_PIC(Sceptile, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Sceptile, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Sceptile, 64, 64), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Sceptile), + ICON(Sceptile, 1), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_SCEPTILE_MEGA] = + { + SCEPTILE_MISC_INFO, + .baseHP = 70, + .baseAttack = 110, + .baseDefense = 75, + .baseSpeed = 145, + .baseSpAttack = 145, + .baseSpDefense = 85, + .types = { TYPE_GRASS, TYPE_DRAGON }, + .expYield = 284, + .abilities = { ABILITY_LIGHTNING_ROD, ABILITY_LIGHTNING_ROD, ABILITY_LIGHTNING_ROD }, + .cryId = CRY_SCEPTILE_MEGA, + .height = 19, + .weight = 552, + .description = COMPOUND_STRING( + "Thanks to the power in its quick legs,\n" + "Mega Sceptile can be on its opponent in a\n" + "flash. It can cut off a portion of its tail\n" + "to fire it like a missile at an opponent."), + .pokemonScale = 256, + .pokemonOffset = -1, + .trainerScale = 275, + .trainerOffset = 2, + FRONT_PIC(SceptileMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_SceptileMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SceptileMega, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(SceptileMega), + ICON(SceptileMega, 1), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_TREECKO + +#if P_FAMILY_TORCHIC + [SPECIES_TORCHIC] = + { + .baseHP = 45, + .baseAttack = 60, + .baseDefense = 40, + .baseSpeed = 45, + .baseSpAttack = 70, + .baseSpDefense = 50, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 62, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_SPEED_BOOST }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Torchic"), + .cryId = CRY_TORCHIC, + .natDexNum = NATIONAL_DEX_TORCHIC, + .categoryName = _("Chick"), + .height = 4, + .weight = 25, + .description = COMPOUND_STRING( + "If attacked, it strikes back by spitting\n" + "balls of fire it forms in its stomach.\n" + "A Torchic dislikes darkness because it\n" + "can't see its surroundings."), + .pokemonScale = 566, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Torchic, 32, 48), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Torchic, + .frontAnimId = ANIM_V_JUMPS_SMALL, + BACK_PIC(Torchic, 40, 48), + BACK_PIC_FEMALE(Torchic, 40, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Torchic), + ICON(Torchic, 0), + .footprint = gMonFootprint_Torchic, + LEARNSETS(Torchic), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_COMBUSKEN}), + }, + + [SPECIES_COMBUSKEN] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 60, + .baseSpeed = 55, + .baseSpAttack = 85, + .baseSpDefense = 60, + .types = { TYPE_FIRE, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 142, + .evYield_Attack = 1, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_SPEED_BOOST }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Combusken"), + .cryId = CRY_COMBUSKEN, + .natDexNum = NATIONAL_DEX_COMBUSKEN, + .categoryName = _("Young Fowl"), + .height = 9, + .weight = 195, + .description = COMPOUND_STRING( + "It lashes out with 10 kicks per second.\n" + "Its strong fighting instinct compels it\n" + "to keep up its offensive until the\n" + "opponent gives up."), + .pokemonScale = 343, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Combusken, 48, 64), + FRONT_PIC_FEMALE(Combusken, 48, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Combusken, + .frontAnimId = ANIM_V_JUMPS_H_JUMPS, + BACK_PIC(Combusken, 64, 64), + BACK_PIC_FEMALE(Combusken, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Combusken), + ICON(Combusken, 0), + .footprint = gMonFootprint_Combusken, + LEARNSETS(Combusken), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_BLAZIKEN}), + }, + +#define BLAZIKEN_MISC_INFO \ + .types = { TYPE_FIRE, TYPE_FIGHTING }, \ + .catchRate = 45, \ + .evYield_Attack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .bodyColor = BODY_COLOR_RED, \ + .speciesName = _("Blaziken"), \ + .natDexNum = NATIONAL_DEX_BLAZIKEN, \ + .categoryName = _("Blaze"), \ + .height = 19, \ + .weight = 520, \ + .pokemonScale = 256, \ + .pokemonOffset = 0, \ + .trainerScale = 301, \ + .trainerOffset = 4, \ + .footprint = gMonFootprint_Blaziken, \ + LEARNSETS(Blaziken), \ + .formSpeciesIdTable = sBlazikenFormSpeciesIdTable, \ + .formChangeTable = sBlazikenFormChangeTable + + [SPECIES_BLAZIKEN] = + { + BLAZIKEN_MISC_INFO, + .baseHP = 80, + .baseAttack = 120, + .baseDefense = 70, + .baseSpeed = 80, + .baseSpAttack = 110, + .baseSpDefense = 70, + .expYield = 239, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_SPEED_BOOST }, + .cryId = CRY_BLAZIKEN, + .description = COMPOUND_STRING( + "It learns martial arts that use punches\n" + "and kicks. Every several years, its old\n" + "feathers burn off, and new, supple\n" + "feathers grow back in their place."), + FRONT_PIC(Blaziken, 56, 64), + FRONT_PIC_FEMALE(Blaziken, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Blaziken, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Blaziken, 64, 64), + BACK_PIC_FEMALE(Blaziken, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Blaziken), + ICON(Blaziken, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_BLAZIKEN_MEGA] = + { + BLAZIKEN_MISC_INFO, + .baseHP = 80, + .baseAttack = 160, + .baseDefense = 80, + .baseSpeed = 100, + .baseSpAttack = 130, + .baseSpDefense = 80, + .expYield = 284, + .abilities = { ABILITY_SPEED_BOOST, ABILITY_SPEED_BOOST, ABILITY_SPEED_BOOST }, + .cryId = CRY_BLAZIKEN_MEGA, + .description = COMPOUND_STRING( + "As it unleashes a flurry of savage kicks,\n" + "its legs can begin to burn from the\n" + "friction of the surrounding atmosphere.\n" + "They're always a source of pride to it."), + FRONT_PIC(BlazikenMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_BlazikenMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(BlazikenMega, 56, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(BlazikenMega), + ICON(BlazikenMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_TORCHIC + +#if P_FAMILY_MUDKIP + [SPECIES_MUDKIP] = + { + .baseHP = 50, + .baseAttack = 70, + .baseDefense = 50, + .baseSpeed = 40, + .baseSpAttack = 50, + .baseSpDefense = 50, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 62, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_DAMP }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Mudkip"), + .cryId = CRY_MUDKIP, + .natDexNum = NATIONAL_DEX_MUDKIP, + .categoryName = _("Mud Fish"), + .height = 4, + .weight = 76, + .description = COMPOUND_STRING( + "On land, it can powerfully lift large\n" + "boulders by planting its four feet and\n" + "heaving. It sleeps by burying itself in soil\n" + "at the water's edge."), + .pokemonScale = 535, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Mudkip, 40, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Mudkip, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + BACK_PIC(Mudkip, 48, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Mudkip), + ICON(Mudkip, 0), + .footprint = gMonFootprint_Mudkip, + LEARNSETS(Mudkip), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_MARSHTOMP}), + }, + + [SPECIES_MARSHTOMP] = + { + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 70, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 70, + .types = { TYPE_WATER, TYPE_GROUND }, + .catchRate = 45, + .expYield = 142, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_DAMP }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Marshtomp"), + .cryId = CRY_MARSHTOMP, + .natDexNum = NATIONAL_DEX_MARSHTOMP, + .categoryName = _("Mud Fish"), + .height = 7, + .weight = 280, + .description = COMPOUND_STRING( + "Its toughened hind legs enable it to stand\n" + "upright. Because it weakens if its skin\n" + "dries out, it replenishes fluids by playing\n" + "in mud."), + .pokemonScale = 340, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Marshtomp, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Marshtomp, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Marshtomp, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Marshtomp), + ICON(Marshtomp, 0), + .footprint = gMonFootprint_Marshtomp, + LEARNSETS(Marshtomp), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SWAMPERT}), + }, + +#define SWAMPERT_MISC_INFO \ + .types = { TYPE_WATER, TYPE_GROUND }, \ + .catchRate = 45, \ + .evYield_Attack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1 }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Swampert"), \ + .natDexNum = NATIONAL_DEX_SWAMPERT, \ + .categoryName = _("Mud Fish"), \ + .footprint = gMonFootprint_Swampert, \ + LEARNSETS(Swampert), \ + .formSpeciesIdTable = sSwampertFormSpeciesIdTable, \ + .formChangeTable = sSwampertFormChangeTable + + [SPECIES_SWAMPERT] = + { + SWAMPERT_MISC_INFO, + .baseHP = 100, + .baseAttack = 110, + .baseDefense = 90, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 90, + .expYield = 241, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_DAMP }, + .cryId = CRY_SWAMPERT, + .height = 15, + .weight = 819, + .description = COMPOUND_STRING( + "If it senses the approach of a storm and\n" + "a tidal wave, it protects its seaside nest\n" + "by piling up boulders. It swims as fast as\n" + "a jet ski."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Swampert, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Swampert, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Swampert, 64, 64), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(Swampert), + ICON(Swampert, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_SWAMPERT_MEGA] = + { + SWAMPERT_MISC_INFO, + .baseHP = 100, + .baseAttack = 150, + .baseDefense = 110, + .baseSpeed = 70, + .baseSpAttack = 95, + .baseSpDefense = 110, + .expYield = 286, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_SWIFT_SWIM, ABILITY_SWIFT_SWIM }, + .cryId = CRY_SWAMPERT_MEGA, + .height = 19, + .weight = 1020, + .description = COMPOUND_STRING( + "When it Mega Evolves, the strength that it\n" + "needs to act in the water is increased.\n" + "It can use its tenacious power\n" + "both on land and in the water."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(SwampertMega, 64, 64), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_SwampertMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SwampertMega, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(SwampertMega), + ICON(SwampertMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MUDKIP + +#if P_FAMILY_POOCHYENA + [SPECIES_POOCHYENA] = + { + .baseHP = 35, + .baseAttack = 55, + .baseDefense = 35, + .baseSpeed = 35, + .baseSpAttack = 30, + .baseSpDefense = 30, + .types = { TYPE_DARK, TYPE_DARK }, + .catchRate = 255, + .expYield = 56, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_RUN_AWAY, ABILITY_QUICK_FEET, ABILITY_RATTLED }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Poochyena"), + .cryId = CRY_POOCHYENA, + .natDexNum = NATIONAL_DEX_POOCHYENA, + .categoryName = _("Bite"), + .height = 5, + .weight = 136, + .description = COMPOUND_STRING( + "It savagely threatens foes with bared\n" + "fangs. It chases after fleeing targets\n" + "tenaciously. It turns tail and runs,\n" + "however, if the foe strikes back."), + .pokemonScale = 481, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Poochyena, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Poochyena, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Poochyena, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Poochyena), + ICON(Poochyena, 2), + .footprint = gMonFootprint_Poochyena, + LEARNSETS(Poochyena), + .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_MIGHTYENA}), + }, + + [SPECIES_MIGHTYENA] = + { + .baseHP = 70, + .baseAttack = 90, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 60, + .baseSpDefense = 60, + .types = { TYPE_DARK, TYPE_DARK }, + .catchRate = 127, + .expYield = 147, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_QUICK_FEET, ABILITY_MOXIE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Mightyena"), + .cryId = CRY_MIGHTYENA, + .natDexNum = NATIONAL_DEX_MIGHTYENA, + .categoryName = _("Bite"), + .height = 10, + .weight = 370, + .description = COMPOUND_STRING( + "In the wild, Mightyena live in a pack.\n" + "They never defy their leader's orders.\n" + "They defeat foes with perfectly\n" + "coordinated teamwork."), + .pokemonScale = 362, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Mightyena, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Mightyena, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Mightyena, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Mightyena), + ICON(Mightyena, 2), + .footprint = gMonFootprint_Mightyena, + LEARNSETS(Mightyena), + }, +#endif //P_FAMILY_POOCHYENA + +#if P_FAMILY_ZIGZAGOON +#define ZIGZAGOON_MISC_INFO \ + .baseHP = 38, \ + .baseAttack = 30, \ + .baseDefense = 41, \ + .baseSpeed = 60, \ + .baseSpAttack = 30, \ + .baseSpDefense = 41, \ + .catchRate = 255, \ + .expYield = 56, \ + .evYield_Speed = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .abilities = { ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET }, \ + .speciesName = _("Zigzagoon"), \ + .cryId = CRY_ZIGZAGOON, \ + .natDexNum = NATIONAL_DEX_ZIGZAGOON, \ + .categoryName = _("Tiny Raccoon"), \ + .height = 4, \ + .weight = 175, \ + .pokemonScale = 560, \ + .pokemonOffset = 22, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Zigzagoon, \ + .formSpeciesIdTable = sZigzagoonFormSpeciesIdTable + +#define LINOONE_MISC_INFO \ + .baseHP = 78, \ + .baseAttack = 70, \ + .baseDefense = 61, \ + .baseSpeed = 100, \ + .baseSpAttack = 50, \ + .baseSpDefense = 61, \ + .catchRate = 90, \ + .expYield = 147, \ + .evYield_Speed = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .abilities = { ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET }, \ + .bodyColor = BODY_COLOR_WHITE, \ + .speciesName = _("Linoone"), \ + .cryId = CRY_LINOONE, \ + .natDexNum = NATIONAL_DEX_LINOONE, \ + .categoryName = _("Rushing"), \ + .height = 5, \ + .weight = 325, \ + .pokemonScale = 321, \ + .pokemonOffset = 7, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Linoone, \ + .formSpeciesIdTable = sLinooneFormSpeciesIdTable + + [SPECIES_ZIGZAGOON] = + { + ZIGZAGOON_MISC_INFO, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .itemCommon = ITEM_POTION, + .itemRare = ITEM_REVIVE, + .bodyColor = BODY_COLOR_BROWN, + .description = COMPOUND_STRING( + "Rubbing its nose against the ground, it\n" + "always wanders about back and forth in\n" + "search of something. It is distinguished\n" + "by the zigzag footprints it leaves."), + FRONT_PIC(Zigzagoon, 56, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Zigzagoon, + .frontAnimId = ANIM_H_SLIDE, + BACK_PIC(Zigzagoon, 56, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Zigzagoon), + ICON(Zigzagoon, 2), + LEARNSETS(Zigzagoon), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LINOONE}), + }, + + [SPECIES_LINOONE] = + { + LINOONE_MISC_INFO, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .itemCommon = ITEM_POTION, + .itemRare = ITEM_MAX_REVIVE, + .description = COMPOUND_STRING( + "It is exceedingly fast if it only has to run\n" + "in a straight line. When it spots pond-\n" + "dwelling prey underwater, it quickly leaps\n" + "in and catches it with its sharp claws."), + FRONT_PIC(Linoone, 64, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Linoone, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Linoone, 56, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Linoone), + ICON(Linoone, 2), + LEARNSETS(Linoone), + }, + +#if P_GALARIAN_FORMS + [SPECIES_ZIGZAGOON_GALARIAN] = + { + ZIGZAGOON_MISC_INFO, + .types = { TYPE_DARK, TYPE_NORMAL }, + .bodyColor = BODY_COLOR_WHITE, + .description = COMPOUND_STRING( + "Its restlessness has it constantly moving\n" + "in zigzags. It will purposely run into other\n" + "Pokémon to start fights. It's thought to\n" + "be the oldest form of Zigzagoon."), + FRONT_PIC(ZigzagoonGalarian, 56, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_ZigzagoonGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ZigzagoonGalarian, 56, 48), + .backPicYOffset = 12, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ZigzagoonGalarian), + ICON(ZigzagoonGalarian, 0), + LEARNSETS(ZigzagoonGalarian), + .isGalarianForm = TRUE, + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LINOONE_GALARIAN}), + }, + + [SPECIES_LINOONE_GALARIAN] = + { + LINOONE_MISC_INFO, + .types = { TYPE_DARK, TYPE_NORMAL }, + .description = COMPOUND_STRING( + "This very aggressive Pokémon will\n" + "recklessly challenge opponents stronger\n" + "than itself. It uses its long tongue to\n" + "taunt them to then tackle forcefully."), + FRONT_PIC(LinooneGalarian, 64, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_LinooneGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(LinooneGalarian, 64, 40), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(LinooneGalarian), + ICON(LinooneGalarian, 0), + LEARNSETS(LinooneGalarian), + .isGalarianForm = TRUE, + .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 35, SPECIES_OBSTAGOON}), + }, + + [SPECIES_OBSTAGOON] = + { + .baseHP = 93, + .baseAttack = 90, + .baseDefense = 101, + .baseSpeed = 95, + .baseSpAttack = 60, + .baseSpDefense = 81, + .types = { TYPE_DARK, TYPE_NORMAL }, + .catchRate = 45, + .expYield = 260, + .evYield_Defense = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_RECKLESS, ABILITY_GUTS, ABILITY_DEFIANT }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Obstagoon"), + .cryId = CRY_OBSTAGOON, + .natDexNum = NATIONAL_DEX_OBSTAGOON, + .categoryName = _("Blocking"), + .height = 16, + .weight = 460, + .description = COMPOUND_STRING( + "Its voice is staggering in volume.\n" + "Obstagoon has a tendency to take on a\n" + "threatening posture and shout--this move\n" + "is known as Obstruct."), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + FRONT_PIC(Obstagoon, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Obstagoon, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Obstagoon, 64, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Obstagoon), + ICON(Obstagoon, 0), + .footprint = gMonFootprint_Obstagoon, + LEARNSETS(Obstagoon), + }, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZIGZAGOON + +#if P_FAMILY_WURMPLE + [SPECIES_WURMPLE] = + { + .baseHP = 45, + .baseAttack = 45, + .baseDefense = 35, + .baseSpeed = 20, + .baseSpAttack = 20, + .baseSpDefense = 30, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 255, + .expYield = 56, + .evYield_HP = 1, + .itemCommon = ITEM_PECHA_BERRY, + .itemRare = ITEM_BRIGHT_POWDER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_RUN_AWAY }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Wurmple"), + .cryId = CRY_WURMPLE, + .natDexNum = NATIONAL_DEX_WURMPLE, + .categoryName = _("Worm"), + .height = 3, + .weight = 36, + .description = COMPOUND_STRING( + "It sticks to tree branches and eats\n" + "leaves. The thread it spits from its mouth,\n" + "which becomes gooey when it touches\n" + "air, slows the movement of its foes."), + .pokemonScale = 711, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Wurmple, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Wurmple, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Wurmple, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Wurmple), + ICON(Wurmple, 0), + .footprint = gMonFootprint_Wurmple, + LEARNSETS(Wurmple), + .evolutions = EVOLUTION({EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON}, + {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}), + }, + + [SPECIES_SILCOON] = + { + .baseHP = 50, + .baseAttack = 35, + .baseDefense = 55, + .baseSpeed = 15, + .baseSpAttack = 25, + .baseSpDefense = 25, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 120, + .expYield = 72, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Silcoon"), + .cryId = CRY_SILCOON, + .natDexNum = NATIONAL_DEX_SILCOON, + .categoryName = _("Cocoon"), + .height = 6, + .weight = 100, + .description = COMPOUND_STRING( + "It prepares for evolution using the\n" + "energy it stored while it was a Wurmple.\n" + "It keeps watch over the surroundings with\n" + "its two eyes."), + .pokemonScale = 431, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Silcoon, 56, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Silcoon, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Silcoon, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Silcoon), + ICON(Silcoon, 2), + .footprint = gMonFootprint_Silcoon, + LEARNSETS(Silcoon), + .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_BEAUTIFLY}), + }, + + [SPECIES_BEAUTIFLY] = + { + .baseHP = 60, + .baseAttack = 70, + .baseDefense = 50, + .baseSpeed = 65, + .baseSpAttack = P_UPDATED_STATS >= GEN_6 ? 100 : 90, + .baseSpDefense = 50, + .types = { TYPE_BUG, TYPE_FLYING }, + .catchRate = 45, + .expYield = 178, + .evYield_SpAttack = 3, + .itemRare = ITEM_SHED_SHELL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_NONE, ABILITY_RIVALRY }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Beautifly"), + .cryId = CRY_BEAUTIFLY, + .natDexNum = NATIONAL_DEX_BEAUTIFLY, + .categoryName = _("Butterfly"), + .height = 10, + .weight = 284, + .description = COMPOUND_STRING( + "Its colorfully patterned wings are its\n" + "most prominent feature. It flies through\n" + "flower-covered fields collecting pollen.\n" + "It attacks ferociously when angered."), + .pokemonScale = 298, + .pokemonOffset = -1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Beautifly, 64, 56), + FRONT_PIC_FEMALE(Beautifly, 64, 56), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Beautifly, + .frontAnimId = ANIM_V_SLIDE, + .enemyMonElevation = 10, + BACK_PIC(Beautifly, 64, 64), + BACK_PIC_FEMALE(Beautifly, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Beautifly), + ICON(Beautifly, 0), + .footprint = gMonFootprint_Beautifly, + LEARNSETS(Beautifly), + }, + + [SPECIES_CASCOON] = + { + .baseHP = 50, + .baseAttack = 35, + .baseDefense = 55, + .baseSpeed = 15, + .baseSpAttack = 25, + .baseSpDefense = 25, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 120, + .expYield = 72, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Cascoon"), + .cryId = CRY_CASCOON, + .natDexNum = NATIONAL_DEX_CASCOON, + .categoryName = _("Cocoon"), + .height = 7, + .weight = 115, + .description = COMPOUND_STRING( + "To avoid detection by its enemies, it hides\n" + "motionlessly beneath large leaves and in\n" + "the gaps of branches. It also attaches\n" + "dead leaves to its body for camouflage."), + .pokemonScale = 391, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cascoon, 56, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Cascoon, + .frontAnimId = ANIM_V_SLIDE, + BACK_PIC(Cascoon, 56, 40), + .backPicYOffset = 15, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Cascoon), + ICON(Cascoon, 2), + .footprint = gMonFootprint_Cascoon, + LEARNSETS(Cascoon), + .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_DUSTOX}), + }, + + [SPECIES_DUSTOX] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 70, + .baseSpeed = 65, + .baseSpAttack = 50, + .baseSpDefense = 90, + .types = { TYPE_BUG, TYPE_POISON }, + .catchRate = 45, + .expYield = 173, + .evYield_SpDefense = 3, + .itemRare = ITEM_SHED_SHELL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_COMPOUND_EYES }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Dustox"), + .cryId = CRY_DUSTOX, + .natDexNum = NATIONAL_DEX_DUSTOX, + .categoryName = _("Poison Moth"), + .height = 12, + .weight = 316, + .description = COMPOUND_STRING( + "It is a nocturnal Pokémon that flies from\n" + "fields and mountains to the attraction of\n" + "streetlights at night. It looses highly\n" + "toxic powder from its wings."), + .pokemonScale = 269, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Dustox, 64, 48), + FRONT_PIC_FEMALE(Dustox, 64, 48), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Dustox, + .frontAnimId = ANIM_V_JUMPS_H_JUMPS, + .enemyMonElevation = 12, + BACK_PIC(Dustox, 64, 64), + BACK_PIC_FEMALE(Dustox, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Dustox), + ICON(Dustox, 5), + .footprint = gMonFootprint_Dustox, + LEARNSETS(Dustox), + }, +#endif //P_FAMILY_WURMPLE + +#if P_FAMILY_LOTAD + [SPECIES_LOTAD] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 30, + .baseSpeed = 30, + .baseSpAttack = 40, + .baseSpDefense = 50, + .types = { TYPE_WATER, TYPE_GRASS }, + .catchRate = 255, + .expYield = 44, + .evYield_SpDefense = 1, + .itemRare = ITEM_MENTAL_HERB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_GRASS }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH, ABILITY_OWN_TEMPO }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Lotad"), + .cryId = CRY_LOTAD, + .natDexNum = NATIONAL_DEX_LOTAD, + .categoryName = _("Water Weed"), + .height = 5, + .weight = 26, + .description = COMPOUND_STRING( + "This Pokémon lives in ponds with clean\n" + "water. It is known to ferry small Pokémon\n" + "across ponds by carrying them on the\n" + "broad leaf on its head."), + .pokemonScale = 406, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Lotad, 40, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Lotad, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Lotad, 56, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Lotad), + ICON(Lotad, 4), + .footprint = gMonFootprint_Lotad, + LEARNSETS(Lotad), + .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_LOMBRE}), + }, + + [SPECIES_LOMBRE] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 50, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 70, + .types = { TYPE_WATER, TYPE_GRASS }, + .catchRate = 120, + .expYield = 119, + .evYield_SpDefense = 2, + .itemRare = ITEM_MENTAL_HERB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_GRASS }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH, ABILITY_OWN_TEMPO }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Lombre"), + .cryId = CRY_LOMBRE, + .natDexNum = NATIONAL_DEX_LOMBRE, + .categoryName = _("Jolly"), + .height = 12, + .weight = 325, + .description = COMPOUND_STRING( + "In the evening, it takes great delight in\n" + "popping out of rivers and startling people.\n" + "It feeds on aquatic moss that grows on\n" + "rocks in the riverbed."), + .pokemonScale = 277, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Lombre, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Lombre, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Lombre, 48, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Lombre), + ICON(Lombre, 1), + .footprint = gMonFootprint_Lombre, + LEARNSETS(Lombre), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}), + }, + + [SPECIES_LUDICOLO] = + { + .baseHP = 80, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 90, + .baseSpDefense = 100, + .types = { TYPE_WATER, TYPE_GRASS }, + .catchRate = 45, + .expYield = 216, + .evYield_SpDefense = 3, + .itemRare = ITEM_MENTAL_HERB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_GRASS }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_RAIN_DISH, ABILITY_OWN_TEMPO }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Ludicolo"), + .cryId = CRY_LUDICOLO, + .natDexNum = NATIONAL_DEX_LUDICOLO, + .categoryName = _("Carefree"), + .height = 15, + .weight = 550, + .description = COMPOUND_STRING( + "When it hears festive music, all the cells\n" + "in its body become stimulated, and it\n" + "begins moving in rhythm. It does not\n" + "quail even when it faces a tough opponent."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 268, + .trainerOffset = -1, + FRONT_PIC(Ludicolo, 56, 64), + FRONT_PIC_FEMALE(Ludicolo, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Ludicolo, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, + BACK_PIC(Ludicolo, 64, 56), + BACK_PIC_FEMALE(Ludicolo, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Ludicolo), + ICON(Ludicolo, 1), + .footprint = gMonFootprint_Ludicolo, + LEARNSETS(Ludicolo), + }, +#endif //P_FAMILY_LOTAD + +#if P_FAMILY_SEEDOT + [SPECIES_SEEDOT] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 50, + .baseSpeed = 30, + .baseSpAttack = 30, + .baseSpDefense = 30, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 255, + .expYield = 44, + .evYield_Defense = 1, + .itemRare = ITEM_POWER_HERB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD, ABILITY_PICKPOCKET }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Seedot"), + .cryId = CRY_SEEDOT, + .natDexNum = NATIONAL_DEX_SEEDOT, + .categoryName = _("Acorn"), + .height = 5, + .weight = 40, + .description = COMPOUND_STRING( + "It hangs off branches and absorbs\n" + "nutrients. When it finishes eating, its\n" + "body becomes so heavy that it drops to\n" + "the ground with a thump."), + .pokemonScale = 472, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Seedot, 32, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Seedot, + .frontAnimId = ANIM_V_JUMPS_H_JUMPS, + BACK_PIC(Seedot, 48, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Seedot), + ICON(Seedot, 2), + .footprint = gMonFootprint_Seedot, + LEARNSETS(Seedot), + .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_NUZLEAF}), + }, + + [SPECIES_NUZLEAF] = + { + .baseHP = 70, + .baseAttack = 70, + .baseDefense = 40, + .baseSpeed = 60, + .baseSpAttack = 60, + .baseSpDefense = 40, + .types = { TYPE_GRASS, TYPE_DARK }, + .catchRate = 120, + .expYield = 119, + .evYield_Attack = 2, + .itemRare = ITEM_POWER_HERB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD, ABILITY_PICKPOCKET }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Nuzleaf"), + .cryId = CRY_NUZLEAF, + .natDexNum = NATIONAL_DEX_NUZLEAF, + .categoryName = _("Wily"), + .height = 10, + .weight = 280, + .description = COMPOUND_STRING( + "A forest-dwelling Pokémon that is skilled\n" + "at climbing trees. Its long and pointed\n" + "nose is its weak point. It loses power if\n" + "the nose is gripped."), + .pokemonScale = 299, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Nuzleaf, 40, 56), + FRONT_PIC_FEMALE(Nuzleaf, 40, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Nuzleaf, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Nuzleaf, 56, 48), + BACK_PIC_FEMALE(Nuzleaf, 56, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Nuzleaf), + ICON(Nuzleaf, 1), + .footprint = gMonFootprint_Nuzleaf, + LEARNSETS(Nuzleaf), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}), + }, + + [SPECIES_SHIFTRY] = + { + .baseHP = 90, + .baseAttack = 100, + .baseDefense = 60, + .baseSpeed = 80, + .baseSpAttack = 90, + .baseSpDefense = 60, + .types = { TYPE_GRASS, TYPE_DARK }, + .catchRate = 45, + .expYield = 216, + .evYield_Attack = 3, + .itemRare = ITEM_POWER_HERB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS }, + #if P_UPDATED_ABILITIES >= GEN_9 + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_WIND_RIDER, ABILITY_PICKPOCKET }, + #else + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_EARLY_BIRD, ABILITY_PICKPOCKET }, + #endif + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Shiftry"), + .cryId = CRY_SHIFTRY, + .natDexNum = NATIONAL_DEX_SHIFTRY, + .categoryName = _("Wicked"), + .height = 13, + .weight = 596, + .description = COMPOUND_STRING( + "It is said to arrive on chilly, wintry winds.\n" + "Feared from long ago as the guardian of\n" + "forests, this Pokémon lives in a deep\n" + "forest where people do not venture."), + .pokemonScale = 290, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Shiftry, 64, 56), + FRONT_PIC_FEMALE(Shiftry, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Shiftry, + .frontAnimId = ANIM_H_VIBRATE, + BACK_PIC(Shiftry, 64, 56), + BACK_PIC_FEMALE(Shiftry, 64, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Shiftry), + ICON(Shiftry, 5), + .footprint = gMonFootprint_Shiftry, + LEARNSETS(Shiftry), + }, +#endif //P_FAMILY_SEEDOT + +#if P_FAMILY_TAILLOW + [SPECIES_TAILLOW] = + { + .baseHP = 40, + .baseAttack = 55, + .baseDefense = 30, + .baseSpeed = 85, + .baseSpAttack = 30, + .baseSpDefense = 30, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 200, + .expYield = 54, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_GUTS, ABILITY_NONE, ABILITY_SCRAPPY }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Taillow"), + .cryId = CRY_TAILLOW, + .natDexNum = NATIONAL_DEX_TAILLOW, + .categoryName = _("Tiny Swallow"), + .height = 3, + .weight = 23, + .description = COMPOUND_STRING( + "Although it is small, it is very courageous.\n" + "It will take on a larger Skarmory on an\n" + "equal footing. However, its will weakens if\n" + "it becomes hungry."), + .pokemonScale = 465, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Taillow, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Taillow, + .frontAnimId = ANIM_V_JUMPS_BIG, + BACK_PIC(Taillow, 56, 40), + .backPicYOffset = 15, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Taillow), + ICON(Taillow, 2), + .footprint = gMonFootprint_Taillow, + LEARNSETS(Taillow), + .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_SWELLOW}), + }, + + [SPECIES_SWELLOW] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 60, + .baseSpeed = 125, + .baseSpAttack = P_UPDATED_STATS >= GEN_7 ? 75 : 50, + .baseSpDefense = 50, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 45, + .expYield = 159, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_GUTS, ABILITY_NONE, ABILITY_SCRAPPY }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Swellow"), + .cryId = CRY_SWELLOW, + .natDexNum = NATIONAL_DEX_SWELLOW, + .categoryName = _("Swallow"), + .height = 7, + .weight = 198, + .description = COMPOUND_STRING( + "A Swellow dives upon prey from far above.\n" + "It never misses its targets. It takes to\n" + "the skies in search of lands with a warm\n" + "climate."), + .pokemonScale = 428, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Swellow, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Swellow, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + BACK_PIC(Swellow, 56, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Swellow), + ICON(Swellow, 2), + .footprint = gMonFootprint_Swellow, + LEARNSETS(Swellow), + }, +#endif //P_FAMILY_TAILLOW + +#if P_FAMILY_WINGULL + [SPECIES_WINGULL] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 30, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 30, + .types = { TYPE_WATER, TYPE_FLYING }, + .catchRate = 190, + .expYield = 54, + .evYield_Speed = 1, + .itemCommon = ITEM_PRETTY_FEATHER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_HYDRATION, ABILITY_RAIN_DISH }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Wingull"), + .cryId = CRY_WINGULL, + .natDexNum = NATIONAL_DEX_WINGULL, + .categoryName = _("Seagull"), + .height = 6, + .weight = 95, + .description = COMPOUND_STRING( + "It makes its nest on a sheer cliff at the\n" + "edge of the sea. It has trouble keeping\n" + "its wings flapping in flight. Instead, it\n" + "soars on updrafts."), + .pokemonScale = 295, + .pokemonOffset = -2, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Wingull, 64, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Wingull, + .frontAnimId = ANIM_H_PIVOT, + .enemyMonElevation = 15, + BACK_PIC(Wingull, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Wingull), + ICON(Wingull, 0), + .footprint = gMonFootprint_Wingull, + LEARNSETS(Wingull), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_PELIPPER}), + }, + + [SPECIES_PELIPPER] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 100, + .baseSpeed = 65, + .baseSpAttack = P_UPDATED_STATS >= GEN_7 ? 95 : 85, + .baseSpDefense = 70, + .types = { TYPE_WATER, TYPE_FLYING }, + .catchRate = 45, + .expYield = 154, + .evYield_Defense = 2, + .itemCommon = ITEM_PRETTY_FEATHER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_DRIZZLE, ABILITY_RAIN_DISH }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pelipper"), + .cryId = CRY_PELIPPER, + .natDexNum = NATIONAL_DEX_PELIPPER, + .categoryName = _("Water Bird"), + .height = 12, + .weight = 280, + .description = COMPOUND_STRING( + "It skims the tops of waves as it flies.\n" + "When it spots prey, it uses its large beak\n" + "to scoop up the victim with water.\n" + "It protects its eggs in its beak."), + .pokemonScale = 288, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pelipper, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Pelipper, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 8, + BACK_PIC(Pelipper, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Pelipper), + ICON(Pelipper, 2), + .footprint = gMonFootprint_Pelipper, + LEARNSETS(Pelipper), + }, +#endif //P_FAMILY_WINGULL + +#if P_FAMILY_RALTS +#define RALTS_FAMILY_TYPE2 (P_UPDATED_TYPES >= GEN_6 ? TYPE_FAIRY : TYPE_PSYCHIC) + +#if P_UPDATED_EGG_GROUPS >= GEN_8 + #define RALTS_FAMILY_EGG_GROUPS { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_AMORPHOUS } +#else + #define RALTS_FAMILY_EGG_GROUPS { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS } +#endif + + [SPECIES_RALTS] = + { + .baseHP = 28, + .baseAttack = 25, + .baseDefense = 25, + .baseSpeed = 40, + .baseSpAttack = 45, + .baseSpDefense = 35, + .types = { TYPE_PSYCHIC, RALTS_FAMILY_TYPE2 }, + .catchRate = 235, + .expYield = 40, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = RALTS_FAMILY_EGG_GROUPS, + .abilities = { ABILITY_SYNCHRONIZE, ABILITY_TRACE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Ralts"), + .cryId = CRY_RALTS, + .natDexNum = NATIONAL_DEX_RALTS, + .categoryName = _("Feeling"), + .height = 4, + .weight = 66, + .description = COMPOUND_STRING( + "A Ralts has the power to sense the\n" + "emotions of people and Pokémon with the\n" + "horns on its head. It takes cover if it\n" + "senses any hostility."), + .pokemonScale = 457, + .pokemonOffset = -3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Ralts, 24, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Ralts, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Ralts, 32, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Ralts), + ICON(Ralts, 1), + .footprint = gMonFootprint_Ralts, + LEARNSETS(Ralts), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_KIRLIA}), + }, + + [SPECIES_KIRLIA] = + { + .baseHP = 38, + .baseAttack = 35, + .baseDefense = 35, + .baseSpeed = 50, + .baseSpAttack = 65, + .baseSpDefense = 55, + .types = { TYPE_PSYCHIC, RALTS_FAMILY_TYPE2 }, + .catchRate = 120, + .expYield = 97, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = RALTS_FAMILY_EGG_GROUPS, + .abilities = { ABILITY_SYNCHRONIZE, ABILITY_TRACE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Kirlia"), + .cryId = CRY_KIRLIA, + .natDexNum = NATIONAL_DEX_KIRLIA, + .categoryName = _("Emotion"), + .height = 8, + .weight = 202, + .description = COMPOUND_STRING( + "A Kirlia has the psychic power to create \n" + "a rip in the dimensions and see into the\n" + "future. It is said to dance with pleasure\n" + "on sunny mornings."), + .pokemonScale = 354, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Kirlia, 32, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Kirlia, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Kirlia, 48, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Kirlia), + ICON(Kirlia, 1), + .footprint = gMonFootprint_Kirlia, + LEARNSETS(Kirlia), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GARDEVOIR}, + {EVO_ITEM_MALE, ITEM_DAWN_STONE, SPECIES_GALLADE}), + }, + +#define GARDEVOIR_MISC_INFO \ + .catchRate = 45, \ + .evYield_SpAttack = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = 35, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = RALTS_FAMILY_EGG_GROUPS, \ + .types = { TYPE_PSYCHIC, RALTS_FAMILY_TYPE2 }, \ + .bodyColor = BODY_COLOR_WHITE, \ + .speciesName = _("Gardevoir"), \ + .natDexNum = NATIONAL_DEX_GARDEVOIR, \ + .categoryName = _("Embrace"), \ + .height = 16, \ + .weight = 484, \ + .pokemonScale = 256, \ + .pokemonOffset = 0, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Gardevoir, \ + LEARNSETS(Gardevoir), \ + .formSpeciesIdTable = sGardevoirFormSpeciesIdTable, \ + .formChangeTable = sGardevoirFormChangeTable + + [SPECIES_GARDEVOIR] = + { + GARDEVOIR_MISC_INFO, + .baseHP = 68, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 80, + .baseSpAttack = 125, + .baseSpDefense = 115, + .expYield = 233, + .abilities = { ABILITY_SYNCHRONIZE, ABILITY_TRACE, ABILITY_TELEPATHY }, + .cryId = CRY_GARDEVOIR, + .description = COMPOUND_STRING( + "It apparently does not feel the pull of\n" + "gravity because it supports itself with\n" + "psychic power. It will give its life to\n" + "protect its Trainer."), + FRONT_PIC(Gardevoir, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Gardevoir, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Gardevoir, 48, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Gardevoir), + ICON(Gardevoir, 1), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_GARDEVOIR_MEGA] = + { + GARDEVOIR_MISC_INFO, + .baseHP = 68, + .baseAttack = 85, + .baseDefense = 65, + .baseSpeed = 100, + .baseSpAttack = 165, + .baseSpDefense = 135, + .expYield = 278, + .abilities = { ABILITY_PIXILATE, ABILITY_PIXILATE, ABILITY_PIXILATE }, + .cryId = CRY_GARDEVOIR_MEGA, + .description = COMPOUND_STRING( + "By opening its heart, Mega Gardevoir\n" + "becomes able to use tremendous psychic\n" + "power. The red plate in its chest is said to\n" + "be a physical manifestation of its heart."), + FRONT_PIC(GardevoirMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_GardevoirMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(GardevoirMega, 48, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, + PALETTES(GardevoirMega), + ICON(GardevoirMega, 1), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS + +#if P_GEN_4_CROSS_EVOS +#define GALLADE_MISC_INFO \ + .types = { TYPE_PSYCHIC, TYPE_FIGHTING }, \ + .catchRate = 45, \ + .evYield_Attack = 3, \ + .genderRatio = MON_MALE, \ + .eggCycles = 20, \ + .friendship = 35, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = RALTS_FAMILY_EGG_GROUPS, \ + .bodyColor = BODY_COLOR_WHITE, \ + .speciesName = _("Gallade"), \ + .natDexNum = NATIONAL_DEX_GALLADE, \ + .categoryName = _("Blade"), \ + .height = 16, \ + .pokemonScale = 259, \ + .pokemonOffset = 1, \ + .trainerScale = 296, \ + .trainerOffset = 1, \ + .footprint = gMonFootprint_Gallade, \ + LEARNSETS(Gallade), \ + .formSpeciesIdTable = sGalladeFormSpeciesIdTable, \ + .formChangeTable = sGalladeFormChangeTable + + [SPECIES_GALLADE] = + { + GALLADE_MISC_INFO, + .baseHP = 68, + .baseAttack = 125, + .baseDefense = 65, + .baseSpeed = 80, + .baseSpAttack = 65, + .baseSpDefense = 115, + .expYield = 233, + #if P_UPDATED_ABILITIES >= GEN_9 + .abilities = { ABILITY_STEADFAST, ABILITY_SHARPNESS, ABILITY_JUSTIFIED }, + #else + .abilities = { ABILITY_STEADFAST, ABILITY_NONE, ABILITY_JUSTIFIED }, + #endif + .cryId = CRY_GALLADE, + .weight = 520, + .description = COMPOUND_STRING( + "A master of courtesy and swordsmanship,\n" + "it fights using extending swords on its\n" + "elbows when trying to protect someone.\n" + "It can sense what its foe is thinking."), + FRONT_PIC(Gallade, 56, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Gallade, + .frontAnimId = ANIM_H_VIBRATE, + BACK_PIC(Gallade, 64, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Gallade), + ICON(Gallade, 1), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_GALLADE_MEGA] = + { + GALLADE_MISC_INFO, + .baseHP = 68, + .baseAttack = 165, + .baseDefense = 95, + .baseSpeed = 110, + .baseSpAttack = 65, + .baseSpDefense = 115, + .expYield = 278, + .abilities = { ABILITY_INNER_FOCUS, ABILITY_INNER_FOCUS, ABILITY_INNER_FOCUS }, + .cryId = CRY_GALLADE_MEGA, + .weight = 564, + .description = COMPOUND_STRING( + "Mega Gallade has a knightly appearance.\n" + "It can use its psychic power to reshape\n" + "both arms into blades simultaneously and\n" + "fight using a dual-wielding style."), + FRONT_PIC(GalladeMega, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_GalladeMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(GalladeMega, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(GalladeMega), + ICON(GalladeMega, 1), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RALTS + +#if P_FAMILY_SURSKIT + [SPECIES_SURSKIT] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 32, + .baseSpeed = 65, + .baseSpAttack = 50, + .baseSpDefense = 52, + .types = { TYPE_BUG, TYPE_WATER }, + .catchRate = 200, + .expYield = 54, + .evYield_Speed = 1, + .itemCommon = ITEM_HONEY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_RAIN_DISH }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Surskit"), + .cryId = CRY_SURSKIT, + .natDexNum = NATIONAL_DEX_SURSKIT, + .categoryName = _("Pond Skater"), + .height = 5, + .weight = 17, + .description = COMPOUND_STRING( + "They gather on puddles after evening\n" + "downpours, gliding across the surface\n" + "of water as if sliding. It secretes honey\n" + "with a sweet aroma from its head."), + .pokemonScale = 375, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Surskit, 48, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Surskit, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Surskit, 56, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_H_SPRING, + PALETTES(Surskit), + ICON(Surskit, 0), + .footprint = gMonFootprint_Surskit, + LEARNSETS(Surskit), + .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_MASQUERAIN}), + }, + + [SPECIES_MASQUERAIN] = + { + .baseHP = 70, + .baseAttack = 60, + .baseDefense = 62, + .baseSpDefense = 82, + #if P_UPDATED_STATS >= GEN_7 + .baseSpeed = 80, + .baseSpAttack = 100, + #else + .baseSpeed = 60, + .baseSpAttack = 80, + #endif + .types = { TYPE_BUG, TYPE_FLYING }, + .catchRate = 75, + .expYield = 159, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .itemRare = ITEM_SILVER_POWDER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_BUG }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Masquerain"), + .cryId = CRY_MASQUERAIN, + .natDexNum = NATIONAL_DEX_MASQUERAIN, + .categoryName = _("Eyeball"), + .height = 8, + .weight = 36, + .description = COMPOUND_STRING( + "It intimidates foes with the large eyelike\n" + "patterns on its antennae. Because it can't\n" + "fly if its wings get wet, it shelters itself\n" + "from rain under large trees and eaves."), + .pokemonScale = 378, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Masquerain, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Masquerain, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 10, + BACK_PIC(Masquerain, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Masquerain), + ICON(Masquerain, 0), + .footprint = gMonFootprint_Masquerain, + LEARNSETS(Masquerain), + }, +#endif //P_FAMILY_SURSKIT + +#if P_FAMILY_SHROOMISH + [SPECIES_SHROOMISH] = + { + .baseHP = 60, + .baseAttack = 40, + .baseDefense = 60, + .baseSpeed = 35, + .baseSpAttack = 40, + .baseSpDefense = 60, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 255, + .expYield = 59, + .evYield_HP = 1, + .itemCommon = ITEM_TINY_MUSHROOM, + .itemRare = ITEM_BIG_MUSHROOM, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FLUCTUATING, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS }, + .abilities = { ABILITY_EFFECT_SPORE, ABILITY_POISON_HEAL, ABILITY_QUICK_FEET }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Shroomish"), + .cryId = CRY_SHROOMISH, + .natDexNum = NATIONAL_DEX_SHROOMISH, + .categoryName = _("Mushroom"), + .height = 4, + .weight = 45, + .description = COMPOUND_STRING( + "It loves to eat damp, composted soil in\n" + "forests. If you enter a forest after a\n" + "long rain, you can see many Shroomish\n" + "feasting on composted soil."), + .pokemonScale = 513, + .pokemonOffset = 22, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Shroomish, 40, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Shroomish, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Shroomish, 56, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Shroomish), + ICON(Shroomish, 1), + .footprint = gMonFootprint_Shroomish, + LEARNSETS(Shroomish), + .evolutions = EVOLUTION({EVO_LEVEL, 23, SPECIES_BRELOOM}), + }, + + [SPECIES_BRELOOM] = + { + .baseHP = 60, + .baseAttack = 130, + .baseDefense = 80, + .baseSpeed = 70, + .baseSpAttack = 60, + .baseSpDefense = 60, + .types = { TYPE_GRASS, TYPE_FIGHTING }, + .catchRate = 90, + .expYield = 161, + .evYield_Attack = 2, + .itemCommon = ITEM_TINY_MUSHROOM, + .itemRare = ITEM_BIG_MUSHROOM, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FLUCTUATING, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS }, + .abilities = { ABILITY_EFFECT_SPORE, ABILITY_POISON_HEAL, ABILITY_TECHNICIAN }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Breloom"), + .cryId = CRY_BRELOOM, + .natDexNum = NATIONAL_DEX_BRELOOM, + .categoryName = _("Mushroom"), + .height = 12, + .weight = 392, + .description = COMPOUND_STRING( + "It scatters spores from holes in the cap\n" + "on its head. It loves warm and humid\n" + "climates. It feeds on trees and plants in\n" + "fields and forests."), + .pokemonScale = 324, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Breloom, 48, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Breloom, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Breloom, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Breloom), + ICON(Breloom, 1), + .footprint = gMonFootprint_Breloom, + LEARNSETS(Breloom), + }, +#endif //P_FAMILY_SHROOMISH + +#if P_FAMILY_SLAKOTH + [SPECIES_SLAKOTH] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 30, + .baseSpAttack = 35, + .baseSpDefense = 35, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 255, + .expYield = 56, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_TRUANT, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Slakoth"), + .cryId = CRY_SLAKOTH, + .natDexNum = NATIONAL_DEX_SLAKOTH, + .categoryName = _("Slacker"), + .height = 8, + .weight = 240, + .description = COMPOUND_STRING( + "It sleeps virtually all day and night long.\n" + "It doesn't change its nest its entire life,\n" + "but it sometimes travels great distances\n" + "by swimming in rivers."), + .pokemonScale = 291, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Slakoth, 56, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Slakoth, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Slakoth, 64, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Slakoth), + ICON(Slakoth, 2), + .footprint = gMonFootprint_Slakoth, + LEARNSETS(Slakoth), + .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_VIGOROTH}), + }, + + [SPECIES_VIGOROTH] = + { + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 80, + .baseSpeed = 90, + .baseSpAttack = 55, + .baseSpDefense = 55, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 120, + .expYield = 154, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_NONE }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Vigoroth"), + .cryId = CRY_VIGOROTH, + .natDexNum = NATIONAL_DEX_VIGOROTH, + .categoryName = _("Wild Monkey"), + .height = 14, + .weight = 465, + .description = COMPOUND_STRING( + "It can't keep still because its blood boils\n" + "with energy. It runs through the fields\n" + "and mountains all day to calm itself. If it\n" + "doesn't, it can't sleep at night."), + .pokemonScale = 301, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Vigoroth, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Vigoroth, + .frontAnimId = ANIM_H_JUMPS, + BACK_PIC(Vigoroth, 56, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Vigoroth), + ICON(Vigoroth, 2), + .footprint = gMonFootprint_Vigoroth, + LEARNSETS(Vigoroth), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SLAKING}), + }, + + [SPECIES_SLAKING] = + { + .baseHP = 150, + .baseAttack = 160, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 95, + .baseSpDefense = 65, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 45, + .expYield = 252, + .evYield_HP = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_TRUANT, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Slaking"), + .cryId = CRY_SLAKING, + .natDexNum = NATIONAL_DEX_SLAKING, + .categoryName = _("Lazy"), + .height = 20, + .weight = 1305, + .description = COMPOUND_STRING( + "Hordes of Slaking gather around trees\n" + "when fruits come into season. They wait\n" + "around patiently for ripened fruits to fall\n" + "out of the trees."), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 300, + .trainerOffset = 1, + FRONT_PIC(Slaking, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Slaking, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Slaking, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Slaking), + ICON(Slaking, 2), + .footprint = gMonFootprint_Slaking, + LEARNSETS(Slaking), + }, +#endif //P_FAMILY_SLAKOTH + +#if P_FAMILY_NINCADA + [SPECIES_NINCADA] = + { + .baseHP = 31, + .baseAttack = 45, + .baseDefense = 90, + .baseSpeed = 40, + .baseSpAttack = 30, + .baseSpDefense = 30, + .types = { TYPE_BUG, TYPE_GROUND }, + .catchRate = 255, + .expYield = 53, + .evYield_Defense = 1, + .itemRare = ITEM_SOFT_SAND, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_RUN_AWAY }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Nincada"), + .cryId = CRY_NINCADA, + .natDexNum = NATIONAL_DEX_NINCADA, + .categoryName = _("Trainee"), + .height = 5, + .weight = 55, + .description = COMPOUND_STRING( + "It makes its nest at the roots of a mighty\n" + "tree. Using its whiskerlike antennae, it\n" + "probes its surroundings in the\n" + "pitch-black darkness of soil."), + .pokemonScale = 405, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Nincada, 56, 32), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Nincada, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Nincada, 64, 32), + .backPicYOffset = 18, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Nincada), + ICON(Nincada, 1), + .footprint = gMonFootprint_Nincada, + LEARNSETS(Nincada), + .evolutions = EVOLUTION({EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK}, + {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}), + }, + + [SPECIES_NINJASK] = + { + .baseHP = 61, + .baseAttack = 90, + .baseDefense = 45, + .baseSpeed = 160, + .baseSpAttack = 50, + .baseSpDefense = 50, + .types = { TYPE_BUG, TYPE_FLYING }, + .catchRate = 120, + .expYield = 160, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SPEED_BOOST, ABILITY_NONE, ABILITY_INFILTRATOR }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Ninjask"), + .cryId = CRY_NINJASK, + .natDexNum = NATIONAL_DEX_NINJASK, + .categoryName = _("Ninja"), + .height = 8, + .weight = 120, + .description = COMPOUND_STRING( + "Because it darts about vigorously at high\n" + "speed, it is very difficult to see. Hearing\n" + "its distinctive cries for too long induces\n" + "a headache."), + .pokemonScale = 383, + .pokemonOffset = -9, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Ninjask, 64, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Ninjask, + .frontAnimId = ANIM_H_SLIDE_SLOW, + .enemyMonElevation = 10, + BACK_PIC(Ninjask, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Ninjask), + ICON(Ninjask, 1), + .footprint = gMonFootprint_Ninjask, + LEARNSETS(Ninjask), + }, + + [SPECIES_SHEDINJA] = + { + .baseHP = 1, + .baseAttack = 90, + .baseDefense = 45, + .baseSpeed = 40, + .baseSpAttack = 30, + .baseSpDefense = 30, + .types = { TYPE_BUG, TYPE_GHOST }, + .catchRate = 45, + .expYield = 83, + .evYield_HP = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_WONDER_GUARD, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Shedinja"), + .cryId = CRY_SHEDINJA, + .natDexNum = NATIONAL_DEX_SHEDINJA, + .categoryName = _("Shed"), + .height = 8, + .weight = 12, + .description = COMPOUND_STRING( + "A peculiar Pokémon that floats in air even\n" + "though its wings remain completely still.\n" + "The inside of its body is hollow and\n" + "utterly dark."), + .pokemonScale = 372, + .pokemonOffset = -8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Shedinja, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Shedinja, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 8, + BACK_PIC(Shedinja, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Shedinja), + ICON(Shedinja, 1), + .footprint = gMonFootprint_Shedinja, + LEARNSETS(Shedinja), + }, +#endif //P_FAMILY_NINCADA + +#if P_FAMILY_WHISMUR + [SPECIES_WHISMUR] = + { + .baseHP = 64, + .baseAttack = 51, + .baseDefense = 23, + .baseSpeed = 28, + .baseSpAttack = 51, + .baseSpDefense = 23, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 190, + .expYield = 48, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SOUNDPROOF, ABILITY_NONE, ABILITY_RATTLED }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Whismur"), + .cryId = CRY_WHISMUR, + .natDexNum = NATIONAL_DEX_WHISMUR, + .categoryName = _("Whisper"), + .height = 6, + .weight = 163, + .description = COMPOUND_STRING( + "Its cries equal a jet plane in volume.\n" + "It inhales through its ear canals. Because\n" + "of this system, it can cry continually\n" + "without having to catch its breath."), + .pokemonScale = 373, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Whismur, 48, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Whismur, + .frontAnimId = ANIM_H_SLIDE, + BACK_PIC(Whismur, 56, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Whismur), + ICON(Whismur, 1), + .footprint = gMonFootprint_Whismur, + LEARNSETS(Whismur), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LOUDRED}), + }, + + [SPECIES_LOUDRED] = + { + .baseHP = 84, + .baseAttack = 71, + .baseDefense = 43, + .baseSpeed = 48, + .baseSpAttack = 71, + .baseSpDefense = 43, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 120, + .expYield = 126, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SOUNDPROOF, ABILITY_NONE, ABILITY_SCRAPPY }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Loudred"), + .cryId = CRY_LOUDRED, + .natDexNum = NATIONAL_DEX_LOUDRED, + .categoryName = _("Big Voice"), + .height = 10, + .weight = 405, + .description = COMPOUND_STRING( + "It positions the round speakers on its\n" + "head to assail foes with ultrasonic waves\n" + "at massive volume. It builds power by\n" + "stomping the ground."), + .pokemonScale = 356, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Loudred, 56, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Loudred, + .frontAnimId = ANIM_SHRINK_GROW, + BACK_PIC(Loudred, 64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Loudred), + ICON(Loudred, 2), + .footprint = gMonFootprint_Loudred, + LEARNSETS(Loudred), + .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_EXPLOUD}), + }, + + [SPECIES_EXPLOUD] = + { + .baseHP = 104, + .baseAttack = 91, + .baseDefense = 63, + .baseSpeed = 68, + .baseSpAttack = 91, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 73 : 63, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 45, + .expYield = 221, + .evYield_HP = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SOUNDPROOF, ABILITY_NONE, ABILITY_SCRAPPY }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Exploud"), + .cryId = CRY_EXPLOUD, + .natDexNum = NATIONAL_DEX_EXPLOUD, + .categoryName = _("Loud Noise"), + .height = 15, + .weight = 840, + .description = COMPOUND_STRING( + "It has sound-generating organs all over\n" + "its body. It communicates with others by\n" + "adjusting the tone and volume of the cries\n" + "it emits."), + .pokemonScale = 284, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Exploud, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Exploud, + .frontAnimId = ANIM_V_SHAKE_TWICE, + BACK_PIC(Exploud, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(Exploud), + ICON(Exploud, 2), + .footprint = gMonFootprint_Exploud, + LEARNSETS(Exploud), + }, +#endif //P_FAMILY_WHISMUR + +#if P_FAMILY_MAKUHITA + [SPECIES_MAKUHITA] = + { + .baseHP = 72, + .baseAttack = 60, + .baseDefense = 30, + .baseSpeed = 25, + .baseSpAttack = 20, + .baseSpDefense = 30, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 180, + .expYield = 47, + .evYield_HP = 1, + .itemRare = ITEM_BLACK_BELT, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FLUCTUATING, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_THICK_FAT, ABILITY_GUTS, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Makuhita"), + .cryId = CRY_MAKUHITA, + .natDexNum = NATIONAL_DEX_MAKUHITA, + .categoryName = _("Guts"), + .height = 10, + .weight = 864, + .description = COMPOUND_STRING( + "It loves to toughen up its body above all\n" + "else. If you hear quaking rumbles in a cave,\n" + "it is the sound of Makuhita undertaking\n" + "strenuous training."), + .pokemonScale = 256, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Makuhita, 48, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Makuhita, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Makuhita, 56, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Makuhita), + ICON(Makuhita, 1), + .footprint = gMonFootprint_Makuhita, + LEARNSETS(Makuhita), + .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_HARIYAMA}), + }, + + [SPECIES_HARIYAMA] = + { + .baseHP = 144, + .baseAttack = 120, + .baseDefense = 60, + .baseSpeed = 50, + .baseSpAttack = 40, + .baseSpDefense = 60, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 200, + .expYield = 166, + .evYield_HP = 2, + .itemRare = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FLUCTUATING, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_THICK_FAT, ABILITY_GUTS, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Hariyama"), + .cryId = CRY_HARIYAMA, + .natDexNum = NATIONAL_DEX_HARIYAMA, + .categoryName = _("Arm Thrust"), + .height = 23, + .weight = 2538, + .description = COMPOUND_STRING( + "It has the habit of challenging others\n" + "without hesitation to tests of strength.\n" + "It's been known to stand on train tracks\n" + "and stop trains using forearm thrusts."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 343, + .trainerOffset = 7, + FRONT_PIC(Hariyama, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Hariyama, + .frontAnimId = ANIM_ROTATE_UP_TO_SIDES, + BACK_PIC(Hariyama, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Hariyama), + ICON(Hariyama, 2), + .footprint = gMonFootprint_Hariyama, + LEARNSETS(Hariyama), + }, +#endif //P_FAMILY_MAKUHITA + +#if P_FAMILY_NOSEPASS + [SPECIES_NOSEPASS] = + { + .baseHP = 30, + .baseAttack = 45, + .baseDefense = 135, + .baseSpeed = 30, + .baseSpAttack = 45, + .baseSpDefense = 90, + .types = { TYPE_ROCK, TYPE_ROCK }, + .catchRate = 255, + .expYield = 75, + .evYield_Defense = 1, + .itemRare = ITEM_MAGNET, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_STURDY, ABILITY_MAGNET_PULL, ABILITY_SAND_FORCE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Nosepass"), + .cryId = CRY_NOSEPASS, + .natDexNum = NATIONAL_DEX_NOSEPASS, + .categoryName = _("Compass"), + .height = 10, + .weight = 970, + .description = COMPOUND_STRING( + "Its body emits a powerful magnetism.\n" + "It feeds on prey that is pulled in by the\n" + "force. Its magnetism is stronger in cold\n" + "seasons."), + .pokemonScale = 256, + .pokemonOffset = 9, + .trainerScale = 289, + .trainerOffset = 3, + FRONT_PIC(Nosepass, 40, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Nosepass, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(Nosepass, 56, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Nosepass), + ICON(Nosepass, 0), + .footprint = gMonFootprint_Nosepass, + LEARNSETS(Nosepass), + .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_PROBOPASS}, + {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_PROBOPASS}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_PROBOPASS] = + { + .baseHP = 60, + .baseAttack = 55, + .baseDefense = 145, + .baseSpeed = 40, + .baseSpAttack = 75, + .baseSpDefense = 150, + .types = { TYPE_ROCK, TYPE_STEEL }, + .catchRate = 60, + .expYield = 184, + .evYield_Defense = 1, + .evYield_SpDefense = 2, + .itemRare = ITEM_MAGNET, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_STURDY, ABILITY_MAGNET_PULL, ABILITY_SAND_FORCE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Probopass"), + .cryId = CRY_PROBOPASS, + .natDexNum = NATIONAL_DEX_PROBOPASS, + .categoryName = _("Compass"), + .height = 14, + .weight = 3400, + .description = COMPOUND_STRING( + "It freely controls three units called\n" + "Mini-Noses using magnetic force.\n" + "With them, it can attack its foes from\n" + "three directions."), + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, + .trainerOffset = 0, + FRONT_PIC(Probopass, 56, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Probopass, + .frontAnimId = ANIM_V_SLIDE, + .enemyMonElevation = 6, + BACK_PIC(Probopass, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Probopass), + ICON(Probopass, 0), + .footprint = gMonFootprint_Probopass, + LEARNSETS(Probopass), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_NOSEPASS + +#if P_FAMILY_SKITTY + [SPECIES_SKITTY] = + { + .baseHP = 50, + .baseAttack = 45, + .baseDefense = 45, + .baseSpeed = 50, + .baseSpAttack = 35, + .baseSpDefense = 35, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 255, + .expYield = 52, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_CUTE_CHARM, ABILITY_NORMALIZE, ABILITY_WONDER_SKIN }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Skitty"), + .cryId = CRY_SKITTY, + .natDexNum = NATIONAL_DEX_SKITTY, + .categoryName = _("Kitten"), + .height = 6, + .weight = 110, + .description = COMPOUND_STRING( + "A Skitty's adorably cute behavior makes it\n" + "highly popular. In battle, it makes its tail\n" + "puff out. It threatens foes with a sharp\n" + "growl."), + .pokemonScale = 492, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Skitty, 56, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Skitty, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Skitty, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Skitty), + ICON(Skitty, 0), + .footprint = gMonFootprint_Skitty, + LEARNSETS(Skitty), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}), + }, + + [SPECIES_DELCATTY] = + { + .baseHP = 70, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = P_UPDATED_STATS >= GEN_7 ? 90 : 70, + .baseSpAttack = 55, + .baseSpDefense = 55, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 60, + .expYield = 140, + .evYield_HP = 1, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_CUTE_CHARM, ABILITY_NORMALIZE, ABILITY_WONDER_SKIN }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Delcatty"), + .cryId = CRY_DELCATTY, + .natDexNum = NATIONAL_DEX_DELCATTY, + .categoryName = _("Prim"), + .height = 11, + .weight = 326, + .description = COMPOUND_STRING( + "Rather than keeping a permanent lair,\n" + "it habitually seeks comfortable spots and\n" + "sleeps there. It is nocturnal and becomes\n" + "active at dusk."), + .pokemonScale = 322, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Delcatty, 56, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Delcatty, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Delcatty, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Delcatty), + ICON(Delcatty, 2), + .footprint = gMonFootprint_Delcatty, + LEARNSETS(Delcatty), + }, +#endif //P_FAMILY_SKITTY + +#if P_FAMILY_SABLEYE +#define SABLEYE_MISC_INFO \ + .types = { TYPE_DARK, TYPE_GHOST }, \ + .catchRate = 45, \ + .evYield_Attack = 1, \ + .evYield_Defense = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = 35, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE },\ + .bodyColor = BODY_COLOR_PURPLE, \ + .speciesName = _("Sableye"), \ + .natDexNum = NATIONAL_DEX_SABLEYE, \ + .categoryName = _("Darkness"), \ + .height = 5, \ + .footprint = gMonFootprint_Sableye, \ + LEARNSETS(Sableye), \ + .formSpeciesIdTable = sSableyeFormSpeciesIdTable, \ + .formChangeTable = sSableyeFormChangeTable + + [SPECIES_SABLEYE] = + { + SABLEYE_MISC_INFO, + .baseHP = 50, + .baseAttack = 75, + .baseDefense = 75, + .baseSpeed = 50, + .baseSpAttack = 65, + .baseSpDefense = 65, + .expYield = 133, + .itemRare = ITEM_WIDE_LENS, + .abilities = { ABILITY_KEEN_EYE, ABILITY_STALL, ABILITY_PRANKSTER }, + .cryId = CRY_SABLEYE, + .weight = 110, + .description = COMPOUND_STRING( + "It digs branching holes in caves using its\n" + "sharp claws in search of food--raw gems.\n" + "A Sableye lurks in darkness and is seen\n" + "only rarely."), + .pokemonScale = 451, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Sableye, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Sableye, + .frontAnimId = ANIM_GLOW_BLACK, + BACK_PIC(Sableye, 48, 48), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Sableye), + ICON(Sableye, 2), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_SABLEYE_MEGA] = + { + SABLEYE_MISC_INFO, + .baseHP = 50, + .baseAttack = 85, + .baseDefense = 125, + .baseSpeed = 20, + .baseSpAttack = 85, + .baseSpDefense = 115, + .expYield = 168, + .abilities = { ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE }, + .cryId = CRY_SABLEYE_MEGA, + .weight = 1610, + .description = COMPOUND_STRING( + "Bathed in the energy of Mega Evolution,\n" + "the gemstone on its chest expands, rips\n" + "through its skin, and falls out."), + .pokemonScale = 451, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(SableyeMega, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_SableyeMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SableyeMega, 64, 64), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(SableyeMega), + ICON(SableyeMega, 2), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SABLEYE + +#if P_FAMILY_MAWILE +#if P_UPDATED_TYPES >= GEN_6 + #define MAWILE_TYPES { TYPE_STEEL, TYPE_FAIRY } +#else + #define MAWILE_TYPES { TYPE_STEEL, TYPE_STEEL } +#endif + +#define MAWILE_MISC_INFO \ + .types = MAWILE_TYPES, \ + .catchRate = 45, \ + .evYield_Attack = 1, \ + .evYield_Defense = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY }, \ + .bodyColor = BODY_COLOR_BLACK, \ + .speciesName = _("Mawile"), \ + .natDexNum = NATIONAL_DEX_MAWILE, \ + .categoryName = _("Deceiver"), \ + .footprint = gMonFootprint_Mawile, \ + LEARNSETS(Mawile), \ + .formSpeciesIdTable = sMawileFormSpeciesIdTable, \ + .formChangeTable = sMawileFormChangeTable + + [SPECIES_MAWILE] = + { + MAWILE_MISC_INFO, + .baseHP = 50, + .baseAttack = 85, + .baseDefense = 85, + .baseSpeed = 50, + .baseSpAttack = 55, + .baseSpDefense = 55, + .expYield = 133, + .itemRare = ITEM_IRON_BALL, + .abilities = { ABILITY_HYPER_CUTTER, ABILITY_INTIMIDATE, ABILITY_SHEER_FORCE }, + .cryId = CRY_MAWILE, + .height = 6, + .weight = 115, + .description = COMPOUND_STRING( + "Its giant jaws are actually steel horns\n" + "that transformed. It fools foes into\n" + "complacency with its adorable gestures,\n" + "then chomps them with its huge jaws."), + .pokemonScale = 466, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Mawile, 64, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Mawile, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Mawile, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Mawile), + ICON(Mawile, 2), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_MAWILE_MEGA] = + { + MAWILE_MISC_INFO, + .baseHP = 50, + .baseAttack = 105, + .baseDefense = 125, + .baseSpeed = 50, + .baseSpAttack = 55, + .baseSpDefense = 95, + .expYield = 168, + .abilities = { ABILITY_HUGE_POWER, ABILITY_HUGE_POWER, ABILITY_HUGE_POWER }, + .cryId = CRY_MAWILE_MEGA, + .height = 10, + .weight = 235, + .description = COMPOUND_STRING( + "Its two sets of jaws thrash about\n" + "violently as if they each had a will of\n" + "their own. One gnash from them can turn a\n" + "boulder to dust."), + .pokemonScale = 466, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(MawileMega, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_MawileMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(MawileMega, 64, 64), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(MawileMega), + ICON(MawileMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAWILE + +#if P_FAMILY_ARON + [SPECIES_ARON] = + { + .baseHP = 50, + .baseAttack = 70, + .baseDefense = 100, + .baseSpeed = 30, + .baseSpAttack = 40, + .baseSpDefense = 40, + .types = { TYPE_STEEL, TYPE_ROCK }, + .catchRate = 180, + .expYield = 66, + .evYield_Defense = 1, + .itemRare = ITEM_HARD_STONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, + .abilities = { ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_HEAVY_METAL }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Aron"), + .cryId = CRY_ARON, + .natDexNum = NATIONAL_DEX_ARON, + .categoryName = _("Iron Armor"), + .height = 4, + .weight = 600, + .description = COMPOUND_STRING( + "A Pokémon that is clad in steel armor.\n" + "A new suit of armor is made when it evolves.\n" + "The old, discarded armor is salvaged as\n" + "metal for making iron products."), + .pokemonScale = 419, + .pokemonOffset = 23, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Aron, 32, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Aron, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Aron, 48, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Aron), + ICON(Aron, 2), + .footprint = gMonFootprint_Aron, + LEARNSETS(Aron), + .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_LAIRON}), + }, + + [SPECIES_LAIRON] = + { + .baseHP = 60, + .baseAttack = 90, + .baseDefense = 140, + .baseSpeed = 40, + .baseSpAttack = 50, + .baseSpDefense = 50, + .types = { TYPE_STEEL, TYPE_ROCK }, + .catchRate = 90, + .expYield = 151, + .evYield_Defense = 2, + .itemRare = ITEM_HARD_STONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, + .abilities = { ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_HEAVY_METAL }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Lairon"), + .cryId = CRY_LAIRON, + .natDexNum = NATIONAL_DEX_LAIRON, + .categoryName = _("Iron Armor"), + .height = 9, + .weight = 1200, + .description = COMPOUND_STRING( + "When two Lairon meet in the wild, they\n" + "fight for territory by bashing into each\n" + "other with their steel bodies. The sound\n" + "of their collision carries for miles."), + .pokemonScale = 275, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Lairon, 56, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Lairon, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Lairon, 64, 40), + .backPicYOffset = 15, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Lairon), + ICON(Lairon, 2), + .footprint = gMonFootprint_Lairon, + LEARNSETS(Lairon), + .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_AGGRON}), + }, + +#define AGGRON_MISC_INFO \ + .catchRate = 45, \ + .evYield_Defense = 3, \ + .itemRare = ITEM_HARD_STONE, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 35, \ + .friendship = 35, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, \ + .bodyColor = BODY_COLOR_GRAY, \ + .speciesName = _("Aggron"), \ + .natDexNum = NATIONAL_DEX_AGGRON, \ + .categoryName = _("Iron Armor"), \ + .footprint = gMonFootprint_Aggron, \ + LEARNSETS(Aggron), \ + .formSpeciesIdTable = sAggronFormSpeciesIdTable, \ + .formChangeTable = sAggronFormChangeTable + + [SPECIES_AGGRON] = + { + AGGRON_MISC_INFO, + .baseHP = 70, + .baseAttack = 110, + .baseDefense = 180, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 60, + .types = { TYPE_STEEL, TYPE_ROCK }, + .expYield = 239, + .abilities = { ABILITY_STURDY, ABILITY_ROCK_HEAD, ABILITY_HEAVY_METAL }, + .cryId = CRY_AGGRON, + .height = 21, + .weight = 3600, + .description = COMPOUND_STRING( + "Its iron horns grow longer a little at\n" + "a time. They are used to determine the\n" + "Aggron's age. The gouges in its armor are\n" + "worn with pride as mementos from battles."), + .pokemonScale = 256, + .pokemonOffset = -1, + .trainerScale = 350, + .trainerOffset = 6, + FRONT_PIC(Aggron, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Aggron, + .frontAnimId = ANIM_V_SHAKE_TWICE, + BACK_PIC(Aggron, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Aggron), + ICON(Aggron, 2), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_AGGRON_MEGA] = + { + AGGRON_MISC_INFO, + .baseHP = 70, + .baseAttack = 140, + .baseDefense = 230, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 80, + .types = { TYPE_STEEL, TYPE_STEEL }, + .expYield = 284, + .abilities = { ABILITY_FILTER, ABILITY_FILTER, ABILITY_FILTER }, + .cryId = CRY_AGGRON_MEGA, + .height = 22, + .weight = 3950, + .description = COMPOUND_STRING( + "When Aggron Mega Evolves into\n" + "Mega Aggron, the destructive ability of\n" + "its fearsome horns can turn a steel-clad\n" + "tank into so much scrap metal."), + .pokemonScale = 256, + .pokemonOffset = -1, + .trainerScale = 350, + .trainerOffset = 6, + FRONT_PIC(AggronMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_AggronMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(AggronMega, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(AggronMega), + ICON(AggronMega, 2), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ARON + +#if P_FAMILY_MEDITITE + [SPECIES_MEDITITE] = + { + .baseHP = 30, + .baseAttack = 40, + .baseDefense = 55, + .baseSpeed = 60, + .baseSpAttack = 40, + .baseSpDefense = 55, + .types = { TYPE_FIGHTING, TYPE_PSYCHIC }, + .catchRate = 180, + .expYield = 56, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_PURE_POWER, ABILITY_NONE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Meditite"), + .cryId = CRY_MEDITITE, + .natDexNum = NATIONAL_DEX_MEDITITE, + .categoryName = _("Meditate"), + .height = 6, + .weight = 112, + .description = COMPOUND_STRING( + "It continually meditates for hours every\n" + "day. As a result of rigorous and dedicated\n" + "yoga training, it has tempered its\n" + "spiritual power so much it can fly."), + .pokemonScale = 465, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Meditite, 48, 48), + FRONT_PIC_FEMALE(Meditite, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Meditite, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES, + BACK_PIC(Meditite, 48, 48), + BACK_PIC_FEMALE(Meditite, 48, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Meditite), + ICON(Meditite, 0), + .footprint = gMonFootprint_Meditite, + LEARNSETS(Meditite), + .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_MEDICHAM}), + }, + +#define MEDICHAM_MISC_INFO \ + .types = { TYPE_FIGHTING, TYPE_PSYCHIC }, \ + .catchRate = 90, \ + .evYield_Speed = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE },\ + .bodyColor = BODY_COLOR_RED, \ + .speciesName = _("Medicham"), \ + .natDexNum = NATIONAL_DEX_MEDICHAM, \ + .categoryName = _("Meditate"), \ + .height = 13, \ + .weight = 315, \ + .pokemonScale = 298, \ + .pokemonOffset = 5, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Medicham, \ + LEARNSETS(Medicham), \ + .formSpeciesIdTable = sMedichamFormSpeciesIdTable, \ + .formChangeTable = sMedichamFormChangeTable + + [SPECIES_MEDICHAM] = + { + MEDICHAM_MISC_INFO, + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 75, + .baseSpeed = 80, + .baseSpAttack = 60, + .baseSpDefense = 75, + .expYield = 144, + .abilities = { ABILITY_PURE_POWER, ABILITY_NONE, ABILITY_TELEPATHY }, + .cryId = CRY_MEDICHAM, + .description = COMPOUND_STRING( + "Through crushingly harsh yoga training, it\n" + "gained the power to foretell its foe's\n" + "actions. It battles with elegant, dance-\n" + "like movement."), + FRONT_PIC(Medicham, 40, 64), + FRONT_PIC_FEMALE(Medicham, 40, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Medicham, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Medicham, 56, 64), + BACK_PIC_FEMALE(Medicham, 56, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Medicham), + ICON(Medicham, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_MEDICHAM_MEGA] = + { + MEDICHAM_MISC_INFO, + .baseHP = 60, + .baseAttack = 100, + .baseDefense = 85, + .baseSpeed = 100, + .baseSpAttack = 80, + .baseSpDefense = 85, + .expYield = 179, + .abilities = { ABILITY_PURE_POWER, ABILITY_PURE_POWER, ABILITY_PURE_POWER }, + .cryId = CRY_MEDICHAM_MEGA, + .description = COMPOUND_STRING( + "It uses its amped-up willpower to create\n" + "additional arms for itself. The more it has\n" + "trained its spirit, the more realistic and\n" + "dexterous these self-created arms become."), + FRONT_PIC(MedichamMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_MedichamMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(MedichamMega, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(MedichamMega), + ICON(MedichamMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MEDITITE + +#if P_FAMILY_ELECTRIKE + [SPECIES_ELECTRIKE] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 40, + .baseSpeed = 65, + .baseSpAttack = 65, + .baseSpDefense = 40, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 120, + .expYield = 59, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_STATIC, ABILITY_LIGHTNING_ROD, ABILITY_MINUS }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Electrike"), + .cryId = CRY_ELECTRIKE, + .natDexNum = NATIONAL_DEX_ELECTRIKE, + .categoryName = _("Lightning"), + .height = 6, + .weight = 152, + .description = COMPOUND_STRING( + "It generates electricity using friction\n" + "from the atmosphere. In seasons with\n" + "especially arid air, its entire body blazes\n" + "with violent showers of sparks."), + .pokemonScale = 290, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Electrike, 48, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Electrike, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Electrike, 56, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Electrike), + ICON(Electrike, 1), + .footprint = gMonFootprint_Electrike, + LEARNSETS(Electrike), + .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_MANECTRIC}), + }, + +#define MANECTRIC_MISC_INFO \ + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, \ + .catchRate = 45, \ + .evYield_Speed = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .bodyColor = BODY_COLOR_YELLOW, \ + .speciesName = _("Manectric"), \ + .natDexNum = NATIONAL_DEX_MANECTRIC, \ + .categoryName = _("Discharge"), \ + .footprint = gMonFootprint_Manectric, \ + LEARNSETS(Manectric), \ + .formSpeciesIdTable = sManectricFormSpeciesIdTable, \ + .formChangeTable = sManectricFormChangeTable + + [SPECIES_MANECTRIC] = + { + MANECTRIC_MISC_INFO, + .baseHP = 70, + .baseAttack = 75, + .baseDefense = 60, + .baseSpeed = 105, + .baseSpAttack = 105, + .baseSpDefense = 60, + .expYield = 166, + .abilities = { ABILITY_STATIC, ABILITY_LIGHTNING_ROD, ABILITY_MINUS }, + .cryId = CRY_MANECTRIC, + .height = 15, + .weight = 402, + .description = COMPOUND_STRING( + "Because lightning falls in their vicinities,\n" + "Manectric were thought to have been born\n" + "from lightning. In battle, they create\n" + "thunderclouds."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Manectric, 56, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Manectric, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Manectric, 56, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Manectric), + ICON(Manectric, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_MANECTRIC_MEGA] = + { + MANECTRIC_MISC_INFO, + .baseHP = 70, + .baseAttack = 75, + .baseDefense = 80, + .baseSpeed = 135, + .baseSpAttack = 135, + .baseSpDefense = 80, + .expYield = 201, + .abilities = { ABILITY_INTIMIDATE, ABILITY_INTIMIDATE, ABILITY_INTIMIDATE }, + .cryId = CRY_MANECTRIC_MEGA, + .height = 18, + .weight = 440, + .description = COMPOUND_STRING( + "Too much electricity has built up in its\n" + "body, irritating Manectric. Its explosive\n" + "speed is equal to that of a lightning bolt."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(ManectricMega, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_ManectricMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ManectricMega, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(ManectricMega), + ICON(ManectricMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ELECTRIKE + +#if P_FAMILY_PLUSLE + [SPECIES_PLUSLE] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 40, + .baseSpeed = 95, + .baseSpAttack = 85, + .baseSpDefense = 75, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 200, + .expYield = 142, + .evYield_Speed = 1, + .itemRare = ITEM_CELL_BATTERY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_PLUS, ABILITY_NONE, ABILITY_LIGHTNING_ROD }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Plusle"), + .cryId = CRY_PLUSLE, + .natDexNum = NATIONAL_DEX_PLUSLE, + .categoryName = _("Cheering"), + .height = 4, + .weight = 42, + .description = COMPOUND_STRING( + "It has the trait of cheering on its fellow\n" + "Pokémon. By shorting out the electricity\n" + "it releases from its paws, it creates\n" + "pom-poms for cheering."), + .pokemonScale = 515, + .pokemonOffset = -9, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Plusle, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Plusle, + .frontAnimId = ANIM_V_JUMPS_H_JUMPS, + BACK_PIC(Plusle, 56, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Plusle), + ICON(Plusle, 0), + .footprint = gMonFootprint_Plusle, + LEARNSETS(Plusle), + }, +#endif //P_FAMILY_PLUSLE + +#if P_FAMILY_MINUN + [SPECIES_MINUN] = + { + .baseHP = 60, + .baseAttack = 40, + .baseDefense = 50, + .baseSpeed = 95, + .baseSpAttack = 75, + .baseSpDefense = 85, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 200, + .expYield = 142, + .evYield_Speed = 1, + .itemRare = ITEM_CELL_BATTERY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_MINUS, ABILITY_NONE, ABILITY_VOLT_ABSORB }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Minun"), + .cryId = CRY_MINUN, + .natDexNum = NATIONAL_DEX_MINUN, + .categoryName = _("Cheering"), + .height = 4, + .weight = 42, + .description = COMPOUND_STRING( + "At a meeting of Pokémon academics, it was\n" + "announced that simultaneous exposure to\n" + "electricity from a Plusle and Minun will\n" + "promote circulation and boost vitality."), + .pokemonScale = 512, + .pokemonOffset = -7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Minun, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Minun, + .frontAnimId = ANIM_V_JUMPS_H_JUMPS, + BACK_PIC(Minun, 48, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Minun), + ICON(Minun, 0), + .footprint = gMonFootprint_Minun, + LEARNSETS(Minun), + }, +#endif //P_FAMILY_MINUN + +#if P_FAMILY_VOLBEAT_ILLUMISE + [SPECIES_VOLBEAT] = + { + .baseHP = 65, + .baseAttack = 73, + .baseSpeed = 85, + .baseSpAttack = 47, + #if P_UPDATED_STATS >= GEN_7 + .baseDefense = 75, + .baseSpDefense = 85, + #else + .baseDefense = 55, + .baseSpDefense = 75, + #endif + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 150, + .expYield = 151, + .evYield_Speed = 1, + .itemRare = ITEM_BRIGHT_POWDER, + .genderRatio = MON_MALE, + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_ILLUMINATE, ABILITY_SWARM, ABILITY_PRANKSTER }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Volbeat"), + .cryId = CRY_VOLBEAT, + .natDexNum = NATIONAL_DEX_VOLBEAT, + .categoryName = _("Firefly"), + .height = 7, + .weight = 177, + .description = COMPOUND_STRING( + "With their taillights lit, Volbeat fly in\n" + "a swarm, drawing geometric designs in the\n" + "night sky. They move their nests if their\n" + "pond water becomes dirty."), + .pokemonScale = 442, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Volbeat, 48, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Volbeat, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Volbeat, 48, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Volbeat), + ICON(Volbeat, 0), + .footprint = gMonFootprint_Volbeat, + LEARNSETS(Volbeat), + }, + + [SPECIES_ILLUMISE] = + { + .baseHP = 65, + .baseAttack = 47, + .baseSpeed = 85, + .baseSpAttack = 73, + #if P_UPDATED_STATS >= GEN_7 + .baseDefense = 75, + .baseSpDefense = 85, + #else + .baseDefense = 55, + .baseSpDefense = 75, + #endif + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 150, + .expYield = 151, + .evYield_Speed = 1, + .itemRare = ITEM_BRIGHT_POWDER, + .genderRatio = MON_FEMALE, + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FLUCTUATING, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_OBLIVIOUS, ABILITY_TINTED_LENS, ABILITY_PRANKSTER }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Illumise"), + .cryId = CRY_ILLUMISE, + .natDexNum = NATIONAL_DEX_ILLUMISE, + .categoryName = _("Firefly"), + .height = 6, + .weight = 177, + .description = COMPOUND_STRING( + "A nocturnal Pokémon that becomes active\n" + "upon nightfall. It leads a Volbeat swarm\n" + "to draw patterns in the night sky. Over 200\n" + "different patterns have been confirmed."), + .pokemonScale = 572, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Illumise, 40, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Illumise, + .frontAnimId = ANIM_RISING_WOBBLE, + BACK_PIC(Illumise, 48, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Illumise), + ICON(Illumise, 2), + .footprint = gMonFootprint_Illumise, + LEARNSETS(Illumise), + }, +#endif //P_FAMILY_VOLBEAT_ILLUMISE + +#if P_FAMILY_ROSELIA +#if P_GEN_4_CROSS_EVOS + [SPECIES_BUDEW] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 35, + .baseSpeed = 55, + .baseSpAttack = 50, + .baseSpDefense = 70, + .types = { TYPE_GRASS, TYPE_POISON }, + .catchRate = 255, + .expYield = 56, + .evYield_SpAttack = 1, + .itemRare = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_NATURAL_CURE, ABILITY_POISON_POINT, ABILITY_LEAF_GUARD }, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + .speciesName = _("Budew"), + .cryId = CRY_BUDEW, + .natDexNum = NATIONAL_DEX_BUDEW, + .categoryName = _("Bud"), + .height = 2, + .weight = 12, + .description = COMPOUND_STRING( + "Over the winter, it closes its bud and\n" + "endures the cold. Sensitive to changing\n" + "temperature, the bud is said to bloom\n" + "when it feels the sun's warm touch."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Budew, 32, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Budew, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Budew, 40, 56), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Budew), + ICON(Budew, 1), + .footprint = gMonFootprint_Budew, + LEARNSETS(Budew), + .evolutions = EVOLUTION({EVO_FRIENDSHIP_DAY, 0, SPECIES_ROSELIA}), + }, +#endif //P_GEN_4_CROSS_EVOS + + [SPECIES_ROSELIA] = + { + .baseHP = 50, + .baseAttack = 60, + .baseDefense = 45, + .baseSpeed = 65, + .baseSpAttack = 100, + .baseSpDefense = 80, + .types = { TYPE_GRASS, TYPE_POISON }, + .catchRate = 150, + .expYield = 140, + .evYield_SpAttack = 2, + .itemRare = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS }, + .abilities = { ABILITY_NATURAL_CURE, ABILITY_POISON_POINT, ABILITY_LEAF_GUARD }, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + .speciesName = _("Roselia"), + .cryId = CRY_ROSELIA, + .natDexNum = NATIONAL_DEX_ROSELIA, + .categoryName = _("Thorn"), + .height = 3, + .weight = 20, + .description = COMPOUND_STRING( + "A Roselia that drinks nutritionally rich\n" + "springwater blooms with lovely flowers.\n" + "The fragrance of its flowers has the\n" + "effect of making its foes careless."), + .pokemonScale = 677, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Roselia, 56, 48), + FRONT_PIC_FEMALE(Roselia, 56, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Roselia, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Roselia, 64, 56), + BACK_PIC_FEMALE(Roselia, 64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, + PALETTES(Roselia), + ICON(Roselia, 4), + .footprint = gMonFootprint_Roselia, + LEARNSETS(Roselia), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_ROSERADE}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_ROSERADE] = + { + .baseHP = 60, + .baseAttack = 70, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 65 : 55, + .baseSpeed = 90, + .baseSpAttack = 125, + .baseSpDefense = 105, + .types = { TYPE_GRASS, TYPE_POISON }, + .catchRate = 75, + .expYield = 232, + .evYield_SpAttack = 3, + .itemRare = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS }, + .abilities = { ABILITY_NATURAL_CURE, ABILITY_POISON_POINT, ABILITY_TECHNICIAN }, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + .speciesName = _("Roserade"), + .cryId = CRY_ROSERADE, + .natDexNum = NATIONAL_DEX_ROSERADE, + .categoryName = _("Bouquet"), + .height = 9, + .weight = 145, + .description = COMPOUND_STRING( + "Its sweet aroma attracts prey.\n" + "With the movements of a dancer,\n" + "it strikes with whips that are densely\n" + "lined with poison thorns."), + .pokemonScale = 338, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Roserade, 48, 56), + FRONT_PIC_FEMALE(Roserade, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Roserade, + .frontAnimId = ANIM_H_VIBRATE, + BACK_PIC(Roserade, 64, 56), + BACK_PIC_FEMALE(Roserade, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Roserade), + ICON(Roserade, 0), + .footprint = gMonFootprint_Roserade, + LEARNSETS(Roserade), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ROSELIA + +#if P_FAMILY_GULPIN + [SPECIES_GULPIN] = + { + .baseHP = 70, + .baseAttack = 43, + .baseDefense = 53, + .baseSpeed = 40, + .baseSpAttack = 43, + .baseSpDefense = 53, + .types = { TYPE_POISON, TYPE_POISON }, + .catchRate = 225, + .expYield = 60, + .evYield_HP = 1, + .itemCommon = ITEM_ORAN_BERRY, + .itemRare = ITEM_SITRUS_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FLUCTUATING, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_LIQUID_OOZE, ABILITY_STICKY_HOLD, ABILITY_GLUTTONY }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Gulpin"), + .cryId = CRY_GULPIN, + .natDexNum = NATIONAL_DEX_GULPIN, + .categoryName = _("Stomach"), + .height = 4, + .weight = 103, + .description = COMPOUND_STRING( + "This Pokémon's stomach fluid can even\n" + "digest scrap iron. In one gulp, it can\n" + "swallow something that is as large as\n" + "itself."), + .pokemonScale = 593, + .pokemonOffset = 23, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Gulpin, 40, 48), + FRONT_PIC_FEMALE(Gulpin, 40, 48), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Gulpin, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Gulpin, 56, 48), + BACK_PIC_FEMALE(Gulpin, 56, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Gulpin), + ICON(Gulpin, 1), + .footprint = gMonFootprint_Gulpin, + LEARNSETS(Gulpin), + .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_SWALOT}), + }, + + [SPECIES_SWALOT] = + { + .baseHP = 100, + .baseAttack = 73, + .baseDefense = 83, + .baseSpeed = 55, + .baseSpAttack = 73, + .baseSpDefense = 83, + .types = { TYPE_POISON, TYPE_POISON }, + .catchRate = 75, + .expYield = 163, + .evYield_HP = 2, + .itemCommon = ITEM_ORAN_BERRY, + .itemRare = ITEM_SITRUS_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FLUCTUATING, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_LIQUID_OOZE, ABILITY_STICKY_HOLD, ABILITY_GLUTTONY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Swalot"), + .cryId = CRY_SWALOT, + .natDexNum = NATIONAL_DEX_SWALOT, + .categoryName = _("Poison Bag"), + .height = 17, + .weight = 800, + .description = COMPOUND_STRING( + "Its powerful stomach acid is capable of\n" + "digesting almost anything. The one thing\n" + "in the whole world a Swalot can't digest is\n" + "its own stomach."), + .pokemonScale = 256, + .pokemonOffset = 6, + .trainerScale = 345, + .trainerOffset = 3, + FRONT_PIC(Swalot, 56, 56), + FRONT_PIC_FEMALE(Swalot, 56, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Swalot, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Swalot, 64, 64), + BACK_PIC_FEMALE(Swalot, 64, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Swalot), + ICON(Swalot, 2), + .footprint = gMonFootprint_Swalot, + LEARNSETS(Swalot), + }, +#endif //P_FAMILY_GULPIN + +#if P_FAMILY_CARVANHA + [SPECIES_CARVANHA] = + { + .baseHP = 45, + .baseAttack = 90, + .baseDefense = 20, + .baseSpeed = 65, + .baseSpAttack = 65, + .baseSpDefense = 20, + .types = { TYPE_WATER, TYPE_DARK }, + .catchRate = 225, + .expYield = 61, + .evYield_Attack = 1, + .itemRare = ITEM_DEEP_SEA_TOOTH, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_ROUGH_SKIN, ABILITY_NONE, ABILITY_SPEED_BOOST }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Carvanha"), + .cryId = CRY_CARVANHA, + .natDexNum = NATIONAL_DEX_CARVANHA, + .categoryName = _("Savage"), + .height = 8, + .weight = 208, + .description = COMPOUND_STRING( + "Carvanha attack ships in swarms, making\n" + "them sink. Although it is said to be a very\n" + "vicious Pokémon, it timidly flees as soon\n" + "as it finds itself alone."), + .pokemonScale = 362, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Carvanha, 48, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Carvanha, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, + BACK_PIC(Carvanha, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_H_SPRING_REPEATED, + PALETTES(Carvanha), + ICON(Carvanha, 0), + .footprint = gMonFootprint_Carvanha, + LEARNSETS(Carvanha), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_SHARPEDO}), + }, + +#define SHARPEDO_MISC_INFO \ + .types = { TYPE_WATER, TYPE_DARK }, \ + .catchRate = 60, \ + .evYield_Attack = 2, \ + .itemRare = ITEM_DEEP_SEA_TOOTH, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = 35, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Sharpedo"), \ + .natDexNum = NATIONAL_DEX_SHARPEDO, \ + .categoryName = _("Brutal"), \ + .footprint = gMonFootprint_Sharpedo, \ + LEARNSETS(Sharpedo), \ + .formSpeciesIdTable = sSharpedoFormSpeciesIdTable, \ + .formChangeTable = sSharpedoFormChangeTable + + [SPECIES_SHARPEDO] = + { + SHARPEDO_MISC_INFO, + .baseHP = 70, + .baseAttack = 120, + .baseDefense = 40, + .baseSpeed = 95, + .baseSpAttack = 95, + .baseSpDefense = 40, + .expYield = 161, + .abilities = { ABILITY_ROUGH_SKIN, ABILITY_NONE, ABILITY_SPEED_BOOST }, + .cryId = CRY_SHARPEDO, + .height = 18, + .weight = 888, + .description = COMPOUND_STRING( + "The vicious and sly gangster of the sea.\n" + "Its skin is specially textured to minimize\n" + "drag in water. Its speed tops out at over\n" + "75 miles per hour."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 317, + .trainerOffset = 3, + FRONT_PIC(Sharpedo, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Sharpedo, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH_TWICE, + BACK_PIC(Sharpedo, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Sharpedo), + ICON(Sharpedo, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_SHARPEDO_MEGA] = + { + SHARPEDO_MISC_INFO, + .baseHP = 70, + .baseAttack = 140, + .baseDefense = 70, + .baseSpeed = 105, + .baseSpAttack = 110, + .baseSpDefense = 65, + .expYield = 196, + .abilities = { ABILITY_STRONG_JAW, ABILITY_STRONG_JAW, ABILITY_STRONG_JAW }, + .cryId = CRY_SHARPEDO_MEGA, + .height = 25, + .weight = 1303, + .description = COMPOUND_STRING( + "The yellow patterns it bears are old scars.\n" + "The energy from Mega Evolution runs\n" + "through them, causing it sharp pain and\n" + "suffering."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 317, + .trainerOffset = 3, + FRONT_PIC(SharpedoMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_SharpedoMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 1, + BACK_PIC(SharpedoMega, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(SharpedoMega), + ICON(SharpedoMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_CARVANHA + +#if P_FAMILY_WAILMER + [SPECIES_WAILMER] = + { + .baseHP = 130, + .baseAttack = 70, + .baseDefense = 35, + .baseSpeed = 60, + .baseSpAttack = 70, + .baseSpDefense = 35, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 125, + .expYield = 80, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FLUCTUATING, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_WATER_VEIL, ABILITY_OBLIVIOUS, ABILITY_PRESSURE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Wailmer"), + .cryId = CRY_WAILMER, + .natDexNum = NATIONAL_DEX_WAILMER, + .categoryName = _("Ball Whale"), + .height = 20, + .weight = 1300, + .description = COMPOUND_STRING( + "While this Pokémon usually lives in the sea,\n" + "it can survive on land, although not too\n" + "long. It loses vitality if its body becomes\n" + "dried out."), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 493, + .trainerOffset = 0, + FRONT_PIC(Wailmer, 64, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Wailmer, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + BACK_PIC(Wailmer, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(Wailmer), + ICON(Wailmer, 2), + .footprint = gMonFootprint_Wailmer, + LEARNSETS(Wailmer), + .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_WAILORD}), + }, + + [SPECIES_WAILORD] = + { + .baseHP = 170, + .baseAttack = 90, + .baseDefense = 45, + .baseSpeed = 60, + .baseSpAttack = 90, + .baseSpDefense = 45, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 60, + .expYield = 175, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FLUCTUATING, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_WATER_VEIL, ABILITY_OBLIVIOUS, ABILITY_PRESSURE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Wailord"), + .cryId = CRY_WAILORD, + .natDexNum = NATIONAL_DEX_WAILORD, + .categoryName = _("Float Whale"), + .height = 145, + .weight = 3980, + .description = COMPOUND_STRING( + "It breathes through nostrils that it\n" + "raises above the sea. By inhaling to its\n" + "maximum capacity, a Wailord can dive close\n" + "to 10,000 feet beneath the waves."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 1352, + .trainerOffset = 18, + FRONT_PIC(Wailord, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Wailord, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .frontAnimDelay = 10, + BACK_PIC(Wailord, 64, 40), + .backPicYOffset = 14, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(Wailord), + ICON(Wailord, 0), + .footprint = gMonFootprint_Wailord, + LEARNSETS(Wailord), + }, +#endif //P_FAMILY_WAILMER + +#if P_FAMILY_NUMEL + [SPECIES_NUMEL] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 40, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = 45, + .types = { TYPE_FIRE, TYPE_GROUND }, + .catchRate = 255, + .expYield = 61, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_OBLIVIOUS, ABILITY_SIMPLE, ABILITY_OWN_TEMPO }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Numel"), + .cryId = CRY_NUMEL, + .natDexNum = NATIONAL_DEX_NUMEL, + .categoryName = _("Numb"), + .height = 7, + .weight = 240, + .description = COMPOUND_STRING( + "A Numel stores boiling magma in the hump\n" + "on its back. It is a hardy Pokémon that can\n" + "transport a 220-pound load. It has served\n" + "humans at work since long ago."), + .pokemonScale = 342, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Numel, 40, 48), + FRONT_PIC_FEMALE(Numel, 40, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Numel, + .frontAnimId = ANIM_V_SLIDE, + BACK_PIC(Numel, 56, 56), + BACK_PIC_FEMALE(Numel, 56, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Numel), + ICON(Numel, 1), + .footprint = gMonFootprint_Numel, + LEARNSETS(Numel), + .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_CAMERUPT}), + }, + +#define CAMERUPT_MISC_INFO \ + .types = { TYPE_FIRE, TYPE_GROUND }, \ + .catchRate = 150, \ + .evYield_Attack = 1, \ + .evYield_SpAttack = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .bodyColor = BODY_COLOR_RED, \ + .speciesName = _("Camerupt"), \ + .natDexNum = NATIONAL_DEX_CAMERUPT, \ + .categoryName = _("Eruption"), \ + .footprint = gMonFootprint_Camerupt, \ + LEARNSETS(Camerupt), \ + .formSpeciesIdTable = sCameruptFormSpeciesIdTable, \ + .formChangeTable = sCameruptFormChangeTable + + [SPECIES_CAMERUPT] = + { + CAMERUPT_MISC_INFO, + .baseHP = 70, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 105, + .baseSpDefense = 75, + .expYield = 161, + .abilities = { ABILITY_MAGMA_ARMOR, ABILITY_SOLID_ROCK, ABILITY_ANGER_POINT }, + .cryId = CRY_CAMERUPT, + .height = 19, + .weight = 2200, + .description = COMPOUND_STRING( + "A Pokémon that lives in the crater of\n" + "a volcano. Every 10 years, the volcanoes\n" + "on its back erupt violently. Research is\n" + "under way on the cause of eruption."), + .pokemonScale = 256, + .pokemonOffset = 7, + .trainerScale = 345, + .trainerOffset = 6, + FRONT_PIC(Camerupt, 64, 56), + FRONT_PIC_FEMALE(Camerupt, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Camerupt, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Camerupt, 64, 40), + BACK_PIC_FEMALE(Camerupt, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Camerupt), + ICON(Camerupt, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_CAMERUPT_MEGA] = + { + CAMERUPT_MISC_INFO, + .baseHP = 70, + .baseAttack = 120, + .baseDefense = 100, + .baseSpeed = 20, + .baseSpAttack = 145, + .baseSpDefense = 105, + .expYield = 196, + .abilities = { ABILITY_SHEER_FORCE, ABILITY_SHEER_FORCE, ABILITY_SHEER_FORCE }, + .cryId = CRY_CAMERUPT_MEGA, + .height = 25, + .weight = 3205, + .description = COMPOUND_STRING( + "The humps on its back have transformed\n" + "into one large and very active volcano. It\n" + "has a deep hatred of water or any moisture\n" + "and has an explosive personality."), + .pokemonScale = 256, + .pokemonOffset = 7, + .trainerScale = 345, + .trainerOffset = 6, + FRONT_PIC(CameruptMega, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_CameruptMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(CameruptMega, 64, 64), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(CameruptMega), + ICON(CameruptMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_NUMEL + +#if P_FAMILY_TORKOAL + [SPECIES_TORKOAL] = + { + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 140, + .baseSpeed = 20, + .baseSpAttack = 85, + .baseSpDefense = 70, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 90, + .expYield = 165, + .evYield_Defense = 2, + .itemRare = ITEM_CHARCOAL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_WHITE_SMOKE, ABILITY_DROUGHT, ABILITY_SHELL_ARMOR }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Torkoal"), + .cryId = CRY_TORKOAL, + .natDexNum = NATIONAL_DEX_TORKOAL, + .categoryName = _("Coal"), + .height = 5, + .weight = 804, + .description = COMPOUND_STRING( + "It battles using energy it gets from\n" + "burning coal. When loosing smoke from its\n" + "nostrils, it lets off a sound that is\n" + "similar to a locomotive's horn."), + .pokemonScale = 390, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Torkoal, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Torkoal, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Torkoal, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Torkoal), + ICON(Torkoal, 2), + .footprint = gMonFootprint_Torkoal, + LEARNSETS(Torkoal), + }, +#endif //P_FAMILY_TORKOAL + +#if P_FAMILY_SPOINK + [SPECIES_SPOINK] = + { + .baseHP = 60, + .baseAttack = 25, + .baseDefense = 35, + .baseSpeed = 60, + .baseSpAttack = 70, + .baseSpDefense = 80, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 255, + .expYield = 66, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_THICK_FAT, ABILITY_OWN_TEMPO, ABILITY_GLUTTONY }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Spoink"), + .cryId = CRY_SPOINK, + .natDexNum = NATIONAL_DEX_SPOINK, + .categoryName = _("Bounce"), + .height = 7, + .weight = 306, + .description = COMPOUND_STRING( + "A Pokémon that manipulates psychic power\n" + "at will. It doesn't stop bouncing even when\n" + "it is asleep. It loves eating mushrooms\n" + "that grow underground."), + .pokemonScale = 423, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Spoink, 32, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Spoink, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH_TWICE, + BACK_PIC(Spoink, 40, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Spoink), + ICON(Spoink, 0), + .footprint = gMonFootprint_Spoink, + LEARNSETS(Spoink), + .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_GRUMPIG}), + }, + + [SPECIES_GRUMPIG] = + { + .baseHP = 80, + .baseAttack = 45, + .baseDefense = 65, + .baseSpeed = 80, + .baseSpAttack = 90, + .baseSpDefense = 110, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 60, + .expYield = 165, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_THICK_FAT, ABILITY_OWN_TEMPO, ABILITY_GLUTTONY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Grumpig"), + .cryId = CRY_GRUMPIG, + .natDexNum = NATIONAL_DEX_GRUMPIG, + .categoryName = _("Manipulate"), + .height = 9, + .weight = 715, + .description = COMPOUND_STRING( + "It stores power in the black pearls on its\n" + "forehead. When it uses psychic power, it\n" + "performs an odd dance step. Its style of\n" + "dancing became hugely popular overseas."), + .pokemonScale = 358, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Grumpig, 56, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Grumpig, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + .frontAnimDelay = 15, + BACK_PIC(Grumpig, 64, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Grumpig), + ICON(Grumpig, 2), + .footprint = gMonFootprint_Grumpig, + LEARNSETS(Grumpig), + }, +#endif //P_FAMILY_SPOINK + +#if P_FAMILY_SPINDA + [SPECIES_SPINDA] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 60, + .baseSpAttack = 60, + .baseSpDefense = 60, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 255, + .expYield = 126, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_OWN_TEMPO, ABILITY_TANGLED_FEET, ABILITY_CONTRARY }, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = TRUE, + .speciesName = _("Spinda"), + .cryId = CRY_SPINDA, + .natDexNum = NATIONAL_DEX_SPINDA, + .categoryName = _("Spot Panda"), + .height = 11, + .weight = 50, + .description = COMPOUND_STRING( + "It is distinguished by a pattern of\n" + "spots that is always different. Its\n" + "unsteady, tottering walk has the\n" + "effect of fouling its foe's aim."), + .pokemonScale = 321, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Spinda, 48, 64), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Spinda, + .frontAnimId = ANIM_CIRCLE_INTO_BG, + BACK_PIC(Spinda, 56, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + PALETTES(Spinda), + ICON(Spinda, 1), + .footprint = gMonFootprint_Spinda, + LEARNSETS(Spinda), + }, +#endif //P_FAMILY_SPINDA + +#if P_FAMILY_TRAPINCH + [SPECIES_TRAPINCH] = + { + .baseHP = 45, + .baseAttack = 100, + .baseDefense = 45, + .baseSpeed = 10, + .baseSpAttack = 45, + .baseSpDefense = 45, + .types = { TYPE_GROUND, TYPE_GROUND }, + .catchRate = 255, + .expYield = 58, + .evYield_Attack = 1, + .itemRare = ITEM_SOFT_SAND, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + #if P_UPDATED_EGG_GROUPS >= GEN_8 + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_DRAGON }, + #else + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + #endif + .abilities = { ABILITY_HYPER_CUTTER, ABILITY_ARENA_TRAP, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Trapinch"), + .cryId = CRY_TRAPINCH, + .natDexNum = NATIONAL_DEX_TRAPINCH, + .categoryName = _("Ant Pit"), + .height = 7, + .weight = 150, + .description = COMPOUND_STRING( + "Its big jaws crunch through boulders.\n" + "Because its head is so big, it has a hard\n" + "time getting back upright if it tips over\n" + "onto its back."), + .pokemonScale = 298, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Trapinch, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Trapinch, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Trapinch, 48, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Trapinch), + ICON(Trapinch, 0), + .footprint = gMonFootprint_Trapinch, + LEARNSETS(Trapinch), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_VIBRAVA}), + }, + + [SPECIES_VIBRAVA] = + { + .baseHP = 50, + .baseAttack = 70, + .baseDefense = 50, + .baseSpeed = 70, + .baseSpAttack = 50, + .baseSpDefense = 50, + .types = { TYPE_GROUND, TYPE_DRAGON }, + .catchRate = 120, + .expYield = 119, + .evYield_Attack = 1, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + #if P_UPDATED_EGG_GROUPS >= GEN_8 + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_DRAGON }, + #else + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + #endif + .abilities = { ABILITY_LEVITATE, ABILITY_LEVITATE, ABILITY_LEVITATE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Vibrava"), + .cryId = CRY_VIBRAVA, + .natDexNum = NATIONAL_DEX_VIBRAVA, + .categoryName = _("Vibration"), + .height = 11, + .weight = 153, + .description = COMPOUND_STRING( + "It looses ultrasonic waves by rubbing its\n" + "wings together. Since a Vibrava's wings\n" + "are still in the process of growing, it can\n" + "only fly short distances."), + .pokemonScale = 370, + .pokemonOffset = 11, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Vibrava, 64, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Vibrava, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Vibrava, 64, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Vibrava), + ICON(Vibrava, 1), + .footprint = gMonFootprint_Vibrava, + LEARNSETS(Vibrava), + .evolutions = EVOLUTION({EVO_LEVEL, 45, SPECIES_FLYGON}), + }, + + [SPECIES_FLYGON] = + { + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 80, + .baseSpeed = 100, + .baseSpAttack = 80, + .baseSpDefense = 80, + .types = { TYPE_GROUND, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 234, + .evYield_Attack = 1, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + #if P_UPDATED_EGG_GROUPS >= GEN_8 + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_DRAGON }, + #else + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + #endif + .abilities = { ABILITY_LEVITATE, ABILITY_LEVITATE, ABILITY_LEVITATE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Flygon"), + .cryId = CRY_FLYGON, + .natDexNum = NATIONAL_DEX_FLYGON, + .categoryName = _("Mystic"), + .height = 20, + .weight = 820, + .description = COMPOUND_STRING( + "The flapping of its wings sounds like\n" + "singing. To prevent detection by enemies,\n" + "it hides itself by flapping up a cloud of\n" + "desert sand."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 268, + .trainerOffset = 1, + FRONT_PIC(Flygon, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Flygon, + .frontAnimId = ANIM_ZIGZAG_SLOW, + .enemyMonElevation = 7, + BACK_PIC(Flygon, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Flygon), + ICON(Flygon, 1), + .footprint = gMonFootprint_Flygon, + LEARNSETS(Flygon), + }, +#endif //P_FAMILY_TRAPINCH + +#if P_FAMILY_CACNEA + [SPECIES_CACNEA] = + { + .baseHP = 50, + .baseAttack = 85, + .baseDefense = 40, + .baseSpeed = 35, + .baseSpAttack = 85, + .baseSpDefense = 40, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 190, + .expYield = 67, + .evYield_SpAttack = 1, + .itemRare = ITEM_STICKY_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_WATER_ABSORB }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Cacnea"), + .cryId = CRY_CACNEA, + .natDexNum = NATIONAL_DEX_CACNEA, + .categoryName = _("Cactus"), + .height = 4, + .weight = 513, + .description = COMPOUND_STRING( + "Cacnea live in deserts with virtually no\n" + "rainfall. It battles by swinging its thick,\n" + "spiked arms. Once a year, a yellow flower\n" + "blooms."), + .pokemonScale = 455, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cacnea, 56, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Cacnea, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, + BACK_PIC(Cacnea, 64, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Cacnea), + ICON(Cacnea, 1), + .footprint = gMonFootprint_Cacnea, + LEARNSETS(Cacnea), + .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_CACTURNE}), + }, + + [SPECIES_CACTURNE] = + { + .baseHP = 70, + .baseAttack = 115, + .baseDefense = 60, + .baseSpeed = 55, + .baseSpAttack = 115, + .baseSpDefense = 60, + .types = { TYPE_GRASS, TYPE_DARK }, + .catchRate = 60, + .expYield = 166, + .evYield_Attack = 1, + .evYield_SpAttack = 1, + .itemRare = ITEM_STICKY_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_WATER_ABSORB }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Cacturne"), + .cryId = CRY_CACTURNE, + .natDexNum = NATIONAL_DEX_CACTURNE, + .categoryName = _("Scarecrow"), + .height = 13, + .weight = 774, + .description = COMPOUND_STRING( + "After spending thousands of years in\n" + "harsh deserts, its blood transformed into\n" + "the same substances as sand. It is\n" + "nocturnal, so it hunts at night."), + .pokemonScale = 327, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cacturne, 64, 64), + FRONT_PIC_FEMALE(Cacturne, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Cacturne, + .frontAnimId = ANIM_V_SLIDE, + BACK_PIC(Cacturne, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Cacturne), + ICON(Cacturne, 1), + .footprint = gMonFootprint_Cacturne, + LEARNSETS(Cacturne), + }, +#endif //P_FAMILY_CACNEA + +#if P_FAMILY_SWABLU + [SPECIES_SWABLU] = + { + .baseHP = 45, + .baseAttack = 40, + .baseDefense = 60, + .baseSpeed = 50, + .baseSpAttack = 40, + .baseSpDefense = 75, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 255, + .expYield = 62, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_NATURAL_CURE, ABILITY_NONE, ABILITY_CLOUD_NINE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Swablu"), + .cryId = CRY_SWABLU, + .natDexNum = NATIONAL_DEX_SWABLU, + .categoryName = _("Cotton Bird"), + .height = 4, + .weight = 12, + .description = COMPOUND_STRING( + "A Pokémon that has wings like cottony\n" + "clouds. After enduring winter, in which\n" + "little food is available, Swablu flocks\n" + "move closer to towns in the spring."), + .pokemonScale = 422, + .pokemonOffset = -8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Swablu, 48, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Swablu, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Swablu, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Swablu), + ICON(Swablu, 0), + .footprint = gMonFootprint_Swablu, + LEARNSETS(Swablu), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_ALTARIA}), + }, + +#define ALTARIA_MISC_INFO \ + .catchRate = 45, \ + .evYield_SpDefense = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_ERRATIC, \ + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON },\ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Altaria"), \ + .natDexNum = NATIONAL_DEX_ALTARIA, \ + .categoryName = _("Humming"), \ + .footprint = gMonFootprint_Altaria, \ + LEARNSETS(Altaria), \ + .formSpeciesIdTable = sAltariaFormSpeciesIdTable, \ + .formChangeTable = sAltariaFormChangeTable + + [SPECIES_ALTARIA] = + { + ALTARIA_MISC_INFO, + .baseHP = 75, + .baseAttack = 70, + .baseDefense = 90, + .baseSpeed = 80, + .baseSpAttack = 70, + .baseSpDefense = 105, + .types = { TYPE_DRAGON, TYPE_FLYING }, + .expYield = 172, + .abilities = { ABILITY_NATURAL_CURE, ABILITY_NONE, ABILITY_CLOUD_NINE }, + .cryId = CRY_ALTARIA, + .height = 11, + .weight = 206, + .description = COMPOUND_STRING( + "It hums in a beautiful soprano voice.\n" + "It flies among white clouds in the blue\n" + "sky. It launches intensely hot fireballs\n" + "from its mouth."), + .pokemonScale = 327, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Altaria, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Altaria, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Altaria, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Altaria), + ICON(Altaria, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_ALTARIA_MEGA] = + { + ALTARIA_MISC_INFO, + .baseHP = 75, + .baseAttack = 110, + .baseDefense = 110, + .baseSpeed = 80, + .baseSpAttack = 110, + .baseSpDefense = 105, + .types = { TYPE_DRAGON, TYPE_FAIRY }, + .expYield = 207, + .abilities = { ABILITY_PIXILATE, ABILITY_PIXILATE, ABILITY_PIXILATE }, + .cryId = CRY_ALTARIA_MEGA, + .height = 15, + .weight = 206, + .description = COMPOUND_STRING( + "It sings with a voice that is even more\n" + "beautiful than before it Mega Evolved.\n" + "Its feathers became larger for protection\n" + "and glimmer with an iridescent sheen."), + .pokemonScale = 327, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(AltariaMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_AltariaMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 6, + BACK_PIC(AltariaMega, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(AltariaMega), + ICON(AltariaMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SWABLU + +#if P_FAMILY_ZANGOOSE + [SPECIES_ZANGOOSE] = + { + .baseHP = 73, + .baseAttack = 115, + .baseDefense = 60, + .baseSpeed = 90, + .baseSpAttack = 60, + .baseSpDefense = 60, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 90, + .expYield = 160, + .evYield_Attack = 2, + .itemRare = ITEM_QUICK_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_IMMUNITY, ABILITY_NONE, ABILITY_TOXIC_BOOST }, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = TRUE, + .speciesName = _("Zangoose"), + .cryId = CRY_ZANGOOSE, + .natDexNum = NATIONAL_DEX_ZANGOOSE, + .categoryName = _("Cat Ferret"), + .height = 13, + .weight = 403, + .description = COMPOUND_STRING( + "When it battles, it stands on its hind legs\n" + "and attacks with its sharply clawed\n" + "forelegs. Its fur bristles if it encounters\n" + "any Seviper."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Zangoose, 56, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Zangoose, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Zangoose, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Zangoose), + ICON(Zangoose, 0), + .footprint = gMonFootprint_Zangoose, + LEARNSETS(Zangoose), + }, +#endif //P_FAMILY_ZANGOOSE + +#if P_FAMILY_SEVIPER + [SPECIES_SEVIPER] = + { + .baseHP = 73, + .baseAttack = 100, + .baseDefense = 60, + .baseSpeed = 65, + .baseSpAttack = 100, + .baseSpDefense = 60, + .types = { TYPE_POISON, TYPE_POISON }, + .catchRate = 90, + .expYield = 160, + .evYield_Attack = 1, + .evYield_SpAttack = 1, + .itemRare = ITEM_SHED_SHELL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FLUCTUATING, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_INFILTRATOR }, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = TRUE, + .speciesName = _("Seviper"), + .cryId = CRY_SEVIPER, + .natDexNum = NATIONAL_DEX_SEVIPER, + .categoryName = _("Fang Snake"), + .height = 27, + .weight = 525, + .description = COMPOUND_STRING( + "Seviper and Zangoose are eternal rivals.\n" + "It counters a Zangoose's dazzling agility\n" + "with its swordlike tail, which also oozes\n" + "a horrible poison."), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Seviper, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Seviper, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Seviper, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Seviper), + ICON(Seviper, 2), + .footprint = gMonFootprint_Seviper, + LEARNSETS(Seviper), + }, +#endif //P_FAMILY_SEVIPER + +#if P_FAMILY_LUNATONE + [SPECIES_LUNATONE] = + { + .baseHP = P_UPDATED_STATS >= GEN_7 ? 90 : 70, + .baseAttack = 55, + .baseDefense = 65, + .baseSpeed = 70, + .baseSpAttack = 95, + .baseSpDefense = 85, + .types = { TYPE_ROCK, TYPE_PSYCHIC }, + .catchRate = 45, + .expYield = 161, + .evYield_SpAttack = 2, + .itemCommon = ITEM_STARDUST, + .itemRare = ITEM_MOON_STONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Lunatone"), + .cryId = CRY_LUNATONE, + .natDexNum = NATIONAL_DEX_LUNATONE, + .categoryName = _("Meteorite"), + .height = 10, + .weight = 1680, + .description = COMPOUND_STRING( + "It becomes very active on the night of\n" + "a full moon. This Pokémon was first\n" + "discovered 40 years ago at the site of\n" + "a meteor strike."), + .pokemonScale = 300, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Lunatone, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Lunatone, + .frontAnimId = ANIM_SWING_CONVEX_FAST, + .enemyMonElevation = 13, + BACK_PIC(Lunatone, 48, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Lunatone), + ICON(Lunatone, 1), + .footprint = gMonFootprint_Lunatone, + LEARNSETS(Lunatone), + }, +#endif //P_FAMILY_LUNATONE + +#if P_FAMILY_SOLROCK + [SPECIES_SOLROCK] = + { + .baseHP = P_UPDATED_STATS >= GEN_7 ? 90 : 70, + .baseAttack = 95, + .baseDefense = 85, + .baseSpeed = 70, + .baseSpAttack = 55, + .baseSpDefense = 65, + .types = { TYPE_ROCK, TYPE_PSYCHIC }, + .catchRate = 45, + .expYield = 161, + .evYield_Attack = 2, + .itemCommon = ITEM_STARDUST, + .itemRare = ITEM_SUN_STONE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Solrock"), + .cryId = CRY_SOLROCK, + .natDexNum = NATIONAL_DEX_SOLROCK, + .categoryName = _("Meteorite"), + .height = 12, + .weight = 1540, + .description = COMPOUND_STRING( + "Solar energy is the source of this \n" + "Pokémon's power. On sunny days, groups of\n" + "Solrock line up facing the sun and absorb\n" + "its light."), + .pokemonScale = 328, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Solrock, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Solrock, + .frontAnimId = ANIM_ROTATE_TO_SIDES_TWICE, + .enemyMonElevation = 4, + BACK_PIC(Solrock, 64, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Solrock), + ICON(Solrock, 0), + .footprint = gMonFootprint_Solrock, + LEARNSETS(Solrock), + }, +#endif //P_FAMILY_SOLROCK + +#if P_FAMILY_BARBOACH + [SPECIES_BARBOACH] = + { + .baseHP = 50, + .baseAttack = 48, + .baseDefense = 43, + .baseSpeed = 60, + .baseSpAttack = 46, + .baseSpDefense = 41, + .types = { TYPE_WATER, TYPE_GROUND }, + .catchRate = 190, + .expYield = 58, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_OBLIVIOUS, ABILITY_ANTICIPATION, ABILITY_HYDRATION }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Barboach"), + .cryId = CRY_BARBOACH, + .natDexNum = NATIONAL_DEX_BARBOACH, + .categoryName = _("Whiskers"), + .height = 4, + .weight = 19, + .description = COMPOUND_STRING( + "Its body is covered with a slimy film.\n" + "The film acts as a barrier to prevent germs\n" + "in muddy water from entering the\n" + "Barboach's body."), + .pokemonScale = 581, + .pokemonOffset = -3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Barboach, 48, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Barboach, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, + .enemyMonElevation = 7, + BACK_PIC(Barboach, 56, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Barboach), + ICON(Barboach, 0), + .footprint = gMonFootprint_Barboach, + LEARNSETS(Barboach), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_WHISCASH}), + }, + + [SPECIES_WHISCASH] = + { + .baseHP = 110, + .baseAttack = 78, + .baseDefense = 73, + .baseSpeed = 60, + .baseSpAttack = 76, + .baseSpDefense = 71, + .types = { TYPE_WATER, TYPE_GROUND }, + .catchRate = 75, + .expYield = 164, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_OBLIVIOUS, ABILITY_ANTICIPATION, ABILITY_HYDRATION }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Whiscash"), + .cryId = CRY_WHISCASH, + .natDexNum = NATIONAL_DEX_WHISCASH, + .categoryName = _("Whiskers"), + .height = 9, + .weight = 236, + .description = COMPOUND_STRING( + "Mysteriously, it can foretell earthquakes.\n" + "In the daytime, it sleeps in mud at the\n" + "bottom of a pond. When it awakens, it\n" + "continually feeds throughout the night."), + .pokemonScale = 317, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Whiscash, 64, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Whiscash, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, + BACK_PIC(Whiscash, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Whiscash), + ICON(Whiscash, 0), + .footprint = gMonFootprint_Whiscash, + LEARNSETS(Whiscash), + }, +#endif //P_FAMILY_BARBOACH + +#if P_FAMILY_CORPHISH + [SPECIES_CORPHISH] = + { + .baseHP = 43, + .baseAttack = 80, + .baseDefense = 65, + .baseSpeed = 35, + .baseSpAttack = 50, + .baseSpDefense = 35, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 205, + .expYield = 62, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FLUCTUATING, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_ADAPTABILITY }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Corphish"), + .cryId = CRY_CORPHISH, + .natDexNum = NATIONAL_DEX_CORPHISH, + .categoryName = _("Ruffian"), + .height = 6, + .weight = 115, + .description = COMPOUND_STRING( + "Once it grips prey with its large pincers,\n" + "it will never let go, no matter what.\n" + "It is a hardy Pokémon that can thrive\n" + "in any environment."), + .pokemonScale = 484, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Corphish, 56, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Corphish, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Corphish, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Corphish), + ICON(Corphish, 0), + .footprint = gMonFootprint_Corphish, + LEARNSETS(Corphish), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_CRAWDAUNT}), + }, + + [SPECIES_CRAWDAUNT] = + { + .baseHP = 63, + .baseAttack = 120, + .baseDefense = 85, + .baseSpeed = 55, + .baseSpAttack = 90, + .baseSpDefense = 55, + .types = { TYPE_WATER, TYPE_DARK }, + .catchRate = 155, + .expYield = 164, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FLUCTUATING, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_HYPER_CUTTER, ABILITY_SHELL_ARMOR, ABILITY_ADAPTABILITY }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Crawdaunt"), + .cryId = CRY_CRAWDAUNT, + .natDexNum = NATIONAL_DEX_CRAWDAUNT, + .categoryName = _("Rogue"), + .height = 11, + .weight = 328, + .description = COMPOUND_STRING( + "A brutish Pokémon that loves to battle.\n" + "A veteran Crawdaunt that has prevailed in\n" + "hundreds of battles has giant pincers\n" + "marked with countless scars."), + .pokemonScale = 365, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Crawdaunt, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Crawdaunt, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Crawdaunt, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Crawdaunt), + ICON(Crawdaunt, 0), + .footprint = gMonFootprint_Crawdaunt, + LEARNSETS(Crawdaunt), + }, +#endif //P_FAMILY_CORPHISH + +#if P_FAMILY_BALTOY + [SPECIES_BALTOY] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 55, + .baseSpeed = 55, + .baseSpAttack = 40, + .baseSpDefense = 70, + .types = { TYPE_GROUND, TYPE_PSYCHIC }, + .catchRate = 255, + .expYield = 60, + .evYield_SpDefense = 1, + .itemRare = ITEM_LIGHT_CLAY, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Baltoy"), + .cryId = CRY_BALTOY, + .natDexNum = NATIONAL_DEX_BALTOY, + .categoryName = _("Clay Doll"), + .height = 5, + .weight = 215, + .description = COMPOUND_STRING( + "A Baltoy moves by spinning on its single\n" + "foot. It has been depicted in murals \n" + "adorning the walls of a once-bustling city\n" + "in an ancient age."), + .pokemonScale = 457, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Baltoy, 40, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Baltoy, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + .enemyMonElevation = 8, + BACK_PIC(Baltoy, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Baltoy), + ICON(Baltoy, 2), + .footprint = gMonFootprint_Baltoy, + LEARNSETS(Baltoy), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_CLAYDOL}), + }, + + [SPECIES_CLAYDOL] = + { + .baseHP = 60, + .baseAttack = 70, + .baseDefense = 105, + .baseSpeed = 75, + .baseSpAttack = 70, + .baseSpDefense = 120, + .types = { TYPE_GROUND, TYPE_PSYCHIC }, + .catchRate = 90, + .expYield = 175, + .evYield_SpDefense = 2, + .itemRare = ITEM_LIGHT_CLAY, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Claydol"), + .cryId = CRY_CLAYDOL, + .natDexNum = NATIONAL_DEX_CLAYDOL, + .categoryName = _("Clay Doll"), + .height = 15, + .weight = 1080, + .description = COMPOUND_STRING( + "A Claydol sleeps while hovering in midair.\n" + "Its arms are separate from its body.\n" + "They are kept floating by the Pokémon's\n" + "manipulation of psychic power."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 280, + .trainerOffset = 1, + FRONT_PIC(Claydol, 56, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Claydol, + .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, + .enemyMonElevation = 10, + BACK_PIC(Claydol, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Claydol), + ICON(Claydol, 0), + .footprint = gMonFootprint_Claydol, + LEARNSETS(Claydol), + }, +#endif //P_FAMILY_BALTOY + +#if P_FAMILY_LILEEP + [SPECIES_LILEEP] = + { + .baseHP = 66, + .baseAttack = 41, + .baseDefense = 77, + .baseSpeed = 23, + .baseSpAttack = 61, + .baseSpDefense = 87, + .types = { TYPE_ROCK, TYPE_GRASS }, + .catchRate = 45, + .expYield = 71, + .evYield_SpDefense = 1, + .itemRare = ITEM_BIG_ROOT, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_SUCTION_CUPS, ABILITY_NONE, ABILITY_STORM_DRAIN }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Lileep"), + .cryId = CRY_LILEEP, + .natDexNum = NATIONAL_DEX_LILEEP, + .categoryName = _("Sea Lily"), + .height = 10, + .weight = 238, + .description = COMPOUND_STRING( + "It disguises itself as seaweed by making\n" + "its tentacles sway. Unsuspecting prey\n" + "that come too close are swallowed whole.\n" + "It became extinct 100 million years ago."), + .pokemonScale = 305, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Lileep, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Lileep, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Lileep, 48, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_H_STRETCH, + PALETTES(Lileep), + ICON(Lileep, 2), + .footprint = gMonFootprint_Lileep, + LEARNSETS(Lileep), + .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_CRADILY}), + }, + + [SPECIES_CRADILY] = + { + .baseHP = 86, + .baseAttack = 81, + .baseDefense = 97, + .baseSpeed = 43, + .baseSpAttack = 81, + .baseSpDefense = 107, + .types = { TYPE_ROCK, TYPE_GRASS }, + .catchRate = 45, + .expYield = 173, + .evYield_SpDefense = 2, + .itemRare = ITEM_BIG_ROOT, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_SUCTION_CUPS, ABILITY_NONE, ABILITY_STORM_DRAIN }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Cradily"), + .cryId = CRY_CRADILY, + .natDexNum = NATIONAL_DEX_CRADILY, + .categoryName = _("Barnacle"), + .height = 15, + .weight = 604, + .description = COMPOUND_STRING( + "It drags its heavy body along the\n" + "seafloor. It makes its nest in the shallows\n" + "of warm seas. Cradily can be seen on\n" + "beaches when the tide goes out."), + .pokemonScale = 267, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cradily, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Cradily, + .frontAnimId = ANIM_V_SHAKE_TWICE, + BACK_PIC(Cradily, 56, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Cradily), + ICON(Cradily, 1), + .footprint = gMonFootprint_Cradily, + LEARNSETS(Cradily), + }, +#endif //P_FAMILY_LILEEP + +#if P_FAMILY_ANORITH + [SPECIES_ANORITH] = + { + .baseHP = 45, + .baseAttack = 95, + .baseDefense = 50, + .baseSpeed = 75, + .baseSpAttack = 40, + .baseSpDefense = 50, + .types = { TYPE_ROCK, TYPE_BUG }, + .catchRate = 45, + .expYield = 71, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_BATTLE_ARMOR, ABILITY_NONE, ABILITY_SWIFT_SWIM }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Anorith"), + .cryId = CRY_ANORITH, + .natDexNum = NATIONAL_DEX_ANORITH, + .categoryName = _("Old Shrimp"), + .height = 7, + .weight = 125, + .description = COMPOUND_STRING( + "It was resurrected from a fossil using the\n" + "power of science. It swims by undulating\n" + "the eight wings at its sides. They were\n" + "feet that adapted to life in the sea."), + .pokemonScale = 296, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Anorith, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Anorith, + .frontAnimId = ANIM_TWIST, + BACK_PIC(Anorith, 56, 32), + .backPicYOffset = 19, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Anorith), + ICON(Anorith, 0), + .footprint = gMonFootprint_Anorith, + LEARNSETS(Anorith), + .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_ARMALDO}), + }, + + [SPECIES_ARMALDO] = + { + .baseHP = 75, + .baseAttack = 125, + .baseDefense = 100, + .baseSpeed = 45, + .baseSpAttack = 70, + .baseSpDefense = 80, + .types = { TYPE_ROCK, TYPE_BUG }, + .catchRate = 45, + .expYield = 173, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_BATTLE_ARMOR, ABILITY_NONE, ABILITY_SWIFT_SWIM }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Armaldo"), + .cryId = CRY_ARMALDO, + .natDexNum = NATIONAL_DEX_ARMALDO, + .categoryName = _("Plate"), + .height = 15, + .weight = 682, + .description = COMPOUND_STRING( + "Armaldo usually lives on land. However,\n" + "when it hunts for prey, it dives beneath\n" + "the ocean. It swims around using its two\n" + "large wings."), + .pokemonScale = 312, + .pokemonOffset = 3, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(Armaldo, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Armaldo, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Armaldo, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Armaldo), + ICON(Armaldo, 2), + .footprint = gMonFootprint_Armaldo, + LEARNSETS(Armaldo), + }, +#endif //P_FAMILY_ANORITH + +#if P_FAMILY_FEEBAS + [SPECIES_FEEBAS] = + { + .baseHP = 20, + .baseAttack = 15, + .baseDefense = 20, + .baseSpeed = 80, + .baseSpAttack = 10, + .baseSpDefense = 55, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 255, + .expYield = 40, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_OBLIVIOUS, ABILITY_ADAPTABILITY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Feebas"), + .cryId = CRY_FEEBAS, + .natDexNum = NATIONAL_DEX_FEEBAS, + .categoryName = _("Fish"), + .height = 6, + .weight = 74, + .description = COMPOUND_STRING( + "Feebas live in ponds that are heavily\n" + "infested with weeds. Because of its\n" + "hopelessly shabby appearance, it\n" + "seems as if few Trainers raise it."), + .pokemonScale = 423, + .pokemonOffset = -4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Feebas, 40, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Feebas, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, + BACK_PIC(Feebas, 48, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_H_SPRING, + PALETTES(Feebas), + ICON(Feebas, 2), + .footprint = gMonFootprint_Feebas, + LEARNSETS(Feebas), + .evolutions = EVOLUTION({EVO_BEAUTY, 170, SPECIES_MILOTIC}, + {EVO_TRADE_ITEM, ITEM_PRISM_SCALE, SPECIES_MILOTIC}, + {EVO_ITEM, ITEM_PRISM_SCALE, SPECIES_MILOTIC}), + }, + + [SPECIES_MILOTIC] = + { + .baseHP = 95, + .baseAttack = 60, + .baseDefense = 79, + .baseSpeed = 81, + .baseSpAttack = 100, + .baseSpDefense = 125, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 60, + .expYield = 189, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_MARVEL_SCALE, ABILITY_COMPETITIVE, ABILITY_CUTE_CHARM }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Milotic"), + .cryId = CRY_MILOTIC, + .natDexNum = NATIONAL_DEX_MILOTIC, + .categoryName = _("Tender"), + .height = 62, + .weight = 1620, + .description = COMPOUND_STRING( + "It is said to live at the bottom of\n" + "large lakes. Considered to be the most\n" + "beautiful of all Pokémon, it has been\n" + "depicted in paintings and statues."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 360, + .trainerOffset = 7, + FRONT_PIC(Milotic, 64, 64), + FRONT_PIC_FEMALE(Milotic, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Milotic, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + .frontAnimDelay = 45, + BACK_PIC(Milotic, 64, 64), + BACK_PIC_FEMALE(Milotic, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(Milotic), + ICON(Milotic, 2), + .footprint = gMonFootprint_Milotic, + LEARNSETS(Milotic), + }, +#endif //P_FAMILY_FEEBAS + +#if P_FAMILY_CASTFORM +#define CASTFORM_MISC_INFO \ + .baseHP = 70, \ + .baseAttack = 70, \ + .baseDefense = 70, \ + .baseSpeed = 70, \ + .baseSpAttack = 70, \ + .baseSpDefense = 70, \ + .catchRate = 45, \ + .expYield = 147, \ + .evYield_HP = 1, \ + .itemCommon = ITEM_MYSTIC_WATER, \ + .itemRare = ITEM_MYSTIC_WATER, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS }, \ + .abilities = { ABILITY_FORECAST, ABILITY_NONE }, \ + .speciesName = _("Castform"), \ + .cryId = CRY_CASTFORM, \ + .natDexNum = NATIONAL_DEX_CASTFORM, \ + .categoryName = _("Weather"), \ + .height = 3, \ + .weight = 8, \ + .pokemonScale = 435, \ + .pokemonOffset = -5, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Castform, \ + LEARNSETS(Castform), \ + .formSpeciesIdTable = sCastformFormSpeciesIdTable, \ + .formChangeTable = sCastformFormChangeTable + + [SPECIES_CASTFORM_NORMAL] = + { + CASTFORM_MISC_INFO, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .bodyColor = BODY_COLOR_GRAY, + .description = COMPOUND_STRING( + "It alters its form depending on the\n" + "weather. Changes in the climate such as\n" + "the temperature and humidity appear to\n" + "affect its cellular structure."), + FRONT_PIC(CastformNormal, 24, 32), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_CastformNormal, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + .enemyMonElevation = 16, + BACK_PIC(CastformNormal, 32, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(CastformNormal), + ICON(CastformNormal, 0), + }, + + [SPECIES_CASTFORM_SUNNY] = + { + CASTFORM_MISC_INFO, + .types = { TYPE_FIRE, TYPE_FIRE }, + .bodyColor = BODY_COLOR_RED, + .description = COMPOUND_STRING( + "Castform takes this form on bright days.\n" + "In an experiment where is was placed in\n" + "front of a heater, it didn't change to this\n" + "form. Its body is warm and toasty."), + FRONT_PIC(CastformSunny, 40, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_CastformSunny, + .frontAnimId = ANIM_GROW_VIBRATE, + .enemyMonElevation = 5, + BACK_PIC(CastformSunny, 56, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(CastformSunny), + ICON(CastformSunny, 0), + }, + + [SPECIES_CASTFORM_RAINY] = + { + CASTFORM_MISC_INFO, + .types = { TYPE_WATER, TYPE_WATER }, + .bodyColor = BODY_COLOR_BLUE, + .description = COMPOUND_STRING( + "This is Castform's form while it's raining.\n" + "In an experiment where it was placed in a\n" + "shower, it didn't change to this form. Its\n" + "body is soft, slightly swollen with water."), + FRONT_PIC(CastformRainy, 32, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_CastformRainy, + .frontAnimId = ANIM_SWING_CONVEX_FAST, + .enemyMonElevation = 5, + BACK_PIC(CastformRainy, 40, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(CastformRainy), + ICON(CastformRainy, 0), + }, + + [SPECIES_CASTFORM_SNOWY] = + { + CASTFORM_MISC_INFO, + .types = { TYPE_ICE, TYPE_ICE }, + .bodyColor = BODY_COLOR_WHITE, + .description = COMPOUND_STRING( + "This is Castform's form in a hailstorm.\n" + "In an experiment where it was placed\n" + "in a freezer, it didn't change to this form.\n" + "Its cold skin is as smooth as ice."), + FRONT_PIC(CastformSnowy, 40, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_CastformSnowy, + .frontAnimId = ANIM_V_STRETCH, + .enemyMonElevation = 5, + BACK_PIC(CastformSnowy, 56, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(CastformSnowy), + ICON(CastformSnowy, 0), + }, +#endif //P_FAMILY_CASTFORM + +#if P_FAMILY_KECLEON + [SPECIES_KECLEON] = + { + .baseHP = 60, + .baseAttack = 90, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = 120, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 200, + .expYield = 154, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_COLOR_CHANGE, ABILITY_NONE, ABILITY_PROTEAN }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Kecleon"), + .cryId = CRY_KECLEON, + .natDexNum = NATIONAL_DEX_KECLEON, + .categoryName = _("Color Swap"), + .height = 10, + .weight = 220, + .description = COMPOUND_STRING( + "A Pokémon that has the ability to alter its\n" + "body colors to match its surroundings.\n" + "A Kecleon reverts to its original colors if\n" + "it is startled."), + .pokemonScale = 316, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Kecleon, 48, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Kecleon, + .frontAnimId = ANIM_FLICKER_INCREASING, + .frontAnimDelay = 30, + BACK_PIC(Kecleon, 56, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Kecleon), + ICON(Kecleon, 1), + .footprint = gMonFootprint_Kecleon, + LEARNSETS(Kecleon), + }, +#endif //P_FAMILY_KECLEON + +#if P_FAMILY_SHUPPET + [SPECIES_SHUPPET] = + { + .baseHP = 44, + .baseAttack = 75, + .baseDefense = 35, + .baseSpeed = 45, + .baseSpAttack = 63, + .baseSpDefense = 33, + .types = { TYPE_GHOST, TYPE_GHOST }, + .catchRate = 225, + .expYield = 59, + .evYield_Attack = 1, + .itemRare = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_INSOMNIA, ABILITY_FRISK, ABILITY_CURSED_BODY }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Shuppet"), + .cryId = CRY_SHUPPET, + .natDexNum = NATIONAL_DEX_SHUPPET, + .categoryName = _("Puppet"), + .height = 6, + .weight = 23, + .description = COMPOUND_STRING( + "This Pokémon roams about deep in the\n" + "night seeking such negative emotions as\n" + "grudges and envy. It retreats to its nest\n" + "when the sun begins to rise."), + .pokemonScale = 440, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Shuppet, 40, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Shuppet, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 14, + BACK_PIC(Shuppet, 56, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Shuppet), + ICON(Shuppet, 0), + .footprint = gMonFootprint_Shuppet, + LEARNSETS(Shuppet), + .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_BANETTE}), + }, + +#define BANETTE_MISC_INFO \ + .types = { TYPE_GHOST, TYPE_GHOST }, \ + .catchRate = 45, \ + .evYield_Attack = 2, \ + .itemRare = ITEM_SPELL_TAG, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = 35, \ + .growthRate = GROWTH_FAST, \ + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, \ + .bodyColor = BODY_COLOR_BLACK, \ + .speciesName = _("Banette"), \ + .natDexNum = NATIONAL_DEX_BANETTE, \ + .categoryName = _("Marionette"), \ + .footprint = gMonFootprint_Banette, \ + LEARNSETS(Banette), \ + .formSpeciesIdTable = sBanetteFormSpeciesIdTable, \ + .formChangeTable = sBanetteFormChangeTable + + [SPECIES_BANETTE] = + { + BANETTE_MISC_INFO, + .baseHP = 64, + .baseAttack = 115, + .baseDefense = 65, + .baseSpeed = 65, + .baseSpAttack = 83, + .baseSpDefense = 63, + .expYield = 159, + .abilities = { ABILITY_INSOMNIA, ABILITY_FRISK, ABILITY_CURSED_BODY }, + .cryId = CRY_BANETTE, + .height = 11, + .weight = 125, + .description = COMPOUND_STRING( + "An abandoned plush doll became this\n" + "Pokémon. They are said to live in garbage\n" + "dumps and wander about in search of the\n" + "children that threw them away."), + .pokemonScale = 262, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Banette, 56, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Banette, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + BACK_PIC(Banette, 64, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Banette), + ICON(Banette, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_BANETTE_MEGA] = + { + BANETTE_MISC_INFO, + .baseHP = 64, + .baseAttack = 165, + .baseDefense = 75, + .baseSpeed = 75, + .baseSpAttack = 93, + .baseSpDefense = 83, + .expYield = 194, + .abilities = { ABILITY_PRANKSTER, ABILITY_PRANKSTER, ABILITY_PRANKSTER }, + .cryId = CRY_BANETTE_MEGA, + .height = 12, + .weight = 130, + .description = COMPOUND_STRING( + "Extraordinary energy amplifies its\n" + "cursing power to such an extent that it\n" + "can't help but curse its own Trainer."), + .pokemonScale = 262, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(BanetteMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_BanetteMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 5, + BACK_PIC(BanetteMega, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(BanetteMega), + ICON(BanetteMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SHUPPET + +#if P_FAMILY_DUSKULL + [SPECIES_DUSKULL] = + { + .baseHP = 20, + .baseAttack = 40, + .baseDefense = 90, + .baseSpeed = 25, + .baseSpAttack = 30, + .baseSpDefense = 90, + .types = { TYPE_GHOST, TYPE_GHOST }, + .catchRate = 190, + .expYield = 59, + .evYield_SpDefense = 1, + .itemRare = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_FRISK }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Duskull"), + .cryId = CRY_DUSKULL, + .natDexNum = NATIONAL_DEX_DUSKULL, + .categoryName = _("Requiem"), + .height = 8, + .weight = 150, + .description = COMPOUND_STRING( + "A glare from its single scarlet eye makes\n" + "even burly grown-ups freeze in utter fear.\n" + "It is a nocturnal Pokémon that roams\n" + "about under the cloak of darkness."), + .pokemonScale = 406, + .pokemonOffset = -4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Duskull, 40, 48), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Duskull, + .frontAnimId = ANIM_ZIGZAG_FAST, + .enemyMonElevation = 13, + BACK_PIC(Duskull, 56, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Duskull), + ICON(Duskull, 0), + .footprint = gMonFootprint_Duskull, + LEARNSETS(Duskull), + .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_DUSCLOPS}), + }, + + [SPECIES_DUSCLOPS] = + { + .baseHP = 40, + .baseAttack = 70, + .baseDefense = 130, + .baseSpeed = 25, + .baseSpAttack = 60, + .baseSpDefense = 130, + .types = { TYPE_GHOST, TYPE_GHOST }, + .catchRate = 90, + .expYield = 159, + .evYield_Defense = 1, + .evYield_SpDefense = 1, + .itemRare = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_FRISK }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Dusclops"), + .cryId = CRY_DUSCLOPS, + .natDexNum = NATIONAL_DEX_DUSCLOPS, + .categoryName = _("Beckon"), + .height = 16, + .weight = 306, + .description = COMPOUND_STRING( + "It is thought that its body is hollow with\n" + "only a spectral ball of fire burning inside.\n" + "However, no one has been able to\n" + "confirm this theory as fact."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 299, + .trainerOffset = 1, + FRONT_PIC(Dusclops, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Dusclops, + .frontAnimId = ANIM_H_VIBRATE, + .frontAnimDelay = 30, + BACK_PIC(Dusclops, 64, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Dusclops), + ICON(Dusclops, 0), + .footprint = gMonFootprint_Dusclops, + LEARNSETS(Dusclops), + .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}, + {EVO_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}), + }, + +#if P_GEN_4_CROSS_EVOS + [SPECIES_DUSKNOIR] = + { + .baseHP = 45, + .baseAttack = 100, + .baseDefense = 135, + .baseSpeed = 45, + .baseSpAttack = 65, + .baseSpDefense = 135, + .types = { TYPE_GHOST, TYPE_GHOST }, + .catchRate = 45, + .expYield = 236, + .evYield_Defense = 1, + .evYield_SpDefense = 2, + .itemRare = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_FRISK }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Dusknoir"), + .cryId = CRY_DUSKNOIR, + .natDexNum = NATIONAL_DEX_DUSKNOIR, + .categoryName = _("Gripper"), + .height = 22, + .weight = 1066, + .description = COMPOUND_STRING( + "This feared Pokémon is said to travel to\n" + "worlds unknown. Some even believe that\n" + "it takes lost spirits into its pliant body\n" + "and guides them home."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 348, + .trainerOffset = 6, + FRONT_PIC(Dusknoir, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Dusknoir, + .frontAnimId = ANIM_H_SLIDE, + .enemyMonElevation = 6, + BACK_PIC(Dusknoir, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Dusknoir), + ICON(Dusknoir, 2), + .footprint = gMonFootprint_Dusknoir, + LEARNSETS(Dusknoir), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_DUSKULL + +#if P_FAMILY_TROPIUS + [SPECIES_TROPIUS] = + { + .baseHP = 99, + .baseAttack = 68, + .baseDefense = 83, + .baseSpeed = 51, + .baseSpAttack = 72, + .baseSpDefense = 87, + .types = { TYPE_GRASS, TYPE_FLYING }, + .catchRate = 200, + .expYield = 161, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SOLAR_POWER, ABILITY_HARVEST }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Tropius"), + .cryId = CRY_TROPIUS, + .natDexNum = NATIONAL_DEX_TROPIUS, + .categoryName = _("Fruit"), + .height = 20, + .weight = 1000, + .description = COMPOUND_STRING( + "It flies by flapping its broad leaves.\n" + "The bunch of fruit that grows around its\n" + "neck is deliciously sweet. In the spring,\n" + "it scatters pollen from its neck."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 344, + .trainerOffset = 7, + FRONT_PIC(Tropius, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Tropius, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Tropius, 56, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Tropius), + ICON(Tropius, 1), + .footprint = gMonFootprint_Tropius, + LEARNSETS(Tropius), + }, +#endif //P_FAMILY_TROPIUS + +#if P_FAMILY_CHIMECHO +#if P_GEN_4_CROSS_EVOS + [SPECIES_CHINGLING] = + { + .baseHP = 45, + .baseAttack = 30, + .baseDefense = 50, + .baseSpeed = 45, + .baseSpAttack = 65, + .baseSpDefense = 50, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 120, + .expYield = 57, + .evYield_SpAttack = 1, + .itemRare = ITEM_CLEANSE_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Chingling"), + .cryId = CRY_CHINGLING, + .natDexNum = NATIONAL_DEX_CHINGLING, + .categoryName = _("Bell"), + .height = 2, + .weight = 6, + .description = COMPOUND_STRING( + "There is an orb inside its mouth.\n" + "When it hops, the orb bounces all\n" + "over and makes a ringing sound.\n" + "It can cry for an awfully long time."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Chingling, 40, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Chingling, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + BACK_PIC(Chingling, 48, 48), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Chingling), + ICON(Chingling, 1), + .footprint = gMonFootprint_Chingling, + LEARNSETS(Chingling), + .evolutions = EVOLUTION({EVO_FRIENDSHIP_NIGHT, 0, SPECIES_CHIMECHO}), + }, +#endif //P_GEN_4_CROSS_EVOS + + [SPECIES_CHIMECHO] = + { + .baseAttack = 50, + .baseSpeed = 65, + .baseSpAttack = 95, + #if P_UPDATED_STATS >= GEN_7 + .baseHP = 75, + .baseDefense = 80, + .baseSpDefense = 90, + #else + .baseHP = 65, + .baseDefense = 70, + .baseSpDefense = 80, + #endif + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 45, + .expYield = 159, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .itemRare = ITEM_CLEANSE_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Chimecho"), + .cryId = CRY_CHIMECHO, + .natDexNum = NATIONAL_DEX_CHIMECHO, + .categoryName = _("Wind Chime"), + .height = 6, + .weight = 10, + .description = COMPOUND_STRING( + "They fly about very actively when the hot\n" + "season arrives. They communicate among\n" + "themselves using seven different and\n" + "distinguishing cries."), + .pokemonScale = 505, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Chimecho, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Chimecho, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + .enemyMonElevation = 16, + BACK_PIC(Chimecho, 64, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Chimecho), + ICON(Chimecho, 0), + .footprint = gMonFootprint_Chimecho, + LEARNSETS(Chimecho), + }, +#endif //P_FAMILY_CHIMECHO + +#if P_FAMILY_ABSOL +#define ABSOL_MISC_INFO \ + .types = { TYPE_DARK, TYPE_DARK }, \ + .catchRate = 30, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = 35, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .bodyColor = BODY_COLOR_WHITE, \ + .noFlip = TRUE, \ + .speciesName = _("Absol"), \ + .natDexNum = NATIONAL_DEX_ABSOL, \ + .categoryName = _("Disaster"), \ + .height = 12, \ + .pokemonScale = 301, \ + .pokemonOffset = 3, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Absol, \ + LEARNSETS(Absol), \ + .formSpeciesIdTable = sAbsolFormSpeciesIdTable, \ + .formChangeTable = sAbsolFormChangeTable + + [SPECIES_ABSOL] = + { + ABSOL_MISC_INFO, + .baseHP = 65, + .baseAttack = 130, + .baseDefense = 60, + .baseSpeed = 75, + .baseSpAttack = 75, + .baseSpDefense = 60, + .expYield = 163, + .abilities = { ABILITY_PRESSURE, ABILITY_SUPER_LUCK, ABILITY_JUSTIFIED }, + .cryId = CRY_ABSOL, + .weight = 470, + .description = COMPOUND_STRING( + "It sharply senses even subtle changes in\n" + "the sky and the land to predict natural\n" + "disasters. It is a long-lived Pokémon that\n" + "has a life-span of 100 years."), + FRONT_PIC(Absol, 56, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Absol, + .frontAnimId = ANIM_CIRCULAR_VIBRATE, + .frontAnimDelay = 45, + BACK_PIC(Absol, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Absol), + ICON(Absol, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_ABSOL_MEGA] = + { + ABSOL_MISC_INFO, + .baseHP = 65, + .baseAttack = 150, + .baseDefense = 60, + .baseSpeed = 115, + .baseSpAttack = 115, + .baseSpDefense = 60, + .expYield = 198, + .abilities = { ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE }, + .cryId = CRY_ABSOL_MEGA, + .weight = 490, + .description = COMPOUND_STRING( + "As the energy of Mega Evolution fills it,\n" + "its fur bristles. What you see on its back\n" + "are not true wings, and this Pokémon isn't\n" + "able to fly."), + FRONT_PIC(AbsolMega, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_AbsolMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(AbsolMega, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(AbsolMega), + ICON(AbsolMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ABSOL + +#if P_FAMILY_SNORUNT + [SPECIES_SNORUNT] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 50, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 50, + .types = { TYPE_ICE, TYPE_ICE }, + .catchRate = 190, + .expYield = 60, + .evYield_HP = 1, + .itemRare = ITEM_SNOWBALL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_INNER_FOCUS, ABILITY_ICE_BODY, ABILITY_MOODY }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Snorunt"), + .cryId = CRY_SNORUNT, + .natDexNum = NATIONAL_DEX_SNORUNT, + .categoryName = _("Snow Hat"), + .height = 7, + .weight = 168, + .description = COMPOUND_STRING( + "They tend to move about in groups of\n" + "around five Snorunt. In snowy regions,\n" + "it is said that when they are seen late at\n" + "night, snowfall will arrive by morning."), + .pokemonScale = 380, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Snorunt, 32, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Snorunt, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + .frontAnimDelay = 20, + BACK_PIC(Snorunt, 56, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Snorunt), + ICON(Snorunt, 2), + .footprint = gMonFootprint_Snorunt, + LEARNSETS(Snorunt), + .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_GLALIE}, + {EVO_ITEM_FEMALE, ITEM_DAWN_STONE, SPECIES_FROSLASS}), + }, + +#define GLALIE_MISC_INFO \ + .types = { TYPE_ICE, TYPE_ICE }, \ + .catchRate = 75, \ + .evYield_HP = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL },\ + .bodyColor = BODY_COLOR_GRAY, \ + .speciesName = _("Glalie"), \ + .natDexNum = NATIONAL_DEX_GLALIE, \ + .categoryName = _("Face"), \ + .footprint = gMonFootprint_Glalie, \ + LEARNSETS(Glalie), \ + .formSpeciesIdTable = sGlalieFormSpeciesIdTable, \ + .formChangeTable = sGlalieFormChangeTable + + [SPECIES_GLALIE] = + { + GLALIE_MISC_INFO, + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 80, + .baseSpeed = 80, + .baseSpAttack = 80, + .baseSpDefense = 80, + .expYield = 168, + .abilities = { ABILITY_INNER_FOCUS, ABILITY_ICE_BODY, ABILITY_MOODY }, + .cryId = CRY_GLALIE, + .height = 15, + .weight = 2565, + .description = COMPOUND_STRING( + "A Glalie has the power to instantaneously\n" + "freeze moisture in the atmosphere.\n" + "A dazzling cloud of diamondlike ice\n" + "crystals forms around its body."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 344, + .trainerOffset = 0, + FRONT_PIC(Glalie, 56, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Glalie, + .frontAnimId = ANIM_ZIGZAG_FAST, + .enemyMonElevation = 12, + BACK_PIC(Glalie, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Glalie), + ICON(Glalie, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_GLALIE_MEGA] = + { + GLALIE_MISC_INFO, + .baseHP = 80, + .baseAttack = 120, + .baseDefense = 80, + .baseSpeed = 100, + .baseSpAttack = 120, + .baseSpDefense = 80, + .expYield = 203, + .abilities = { ABILITY_REFRIGERATE, ABILITY_REFRIGERATE, ABILITY_REFRIGERATE }, + .cryId = CRY_GLALIE_MEGA, + .height = 21, + .weight = 3502, + .description = COMPOUND_STRING( + "The power of Mega Evolution was so strong\n" + "that it smashed Glalie's jaw. Its inability\n" + "to eat very well leaves Glalie irritated."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 344, + .trainerOffset = 0, + FRONT_PIC(GlalieMega, 56, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_GlalieMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 8, + BACK_PIC(GlalieMega, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(GlalieMega), + ICON(GlalieMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS + +#if P_GEN_4_CROSS_EVOS + [SPECIES_FROSLASS] = + { + .baseHP = 70, + .baseAttack = 80, + .baseDefense = 70, + .baseSpeed = 110, + .baseSpAttack = 80, + .baseSpDefense = 70, + .types = { TYPE_ICE, TYPE_GHOST }, + .catchRate = 75, + .expYield = 168, + .evYield_Speed = 2, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_CURSED_BODY }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Froslass"), + .cryId = CRY_FROSLASS, + .natDexNum = NATIONAL_DEX_FROSLASS, + .categoryName = _("Snow Land"), + .height = 13, + .weight = 266, + .description = COMPOUND_STRING( + "When it finds people or Pokémon it likes,\n" + "it freezes them and takes them to its\n" + "chilly den, where they become its\n" + "decorations."), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Froslass, 48, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Froslass, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 7, + BACK_PIC(Froslass, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Froslass), + ICON(Froslass, 0), + .footprint = gMonFootprint_Froslass, + LEARNSETS(Froslass), + }, +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SNORUNT + +#if P_FAMILY_SPHEAL + [SPECIES_SPHEAL] = + { + .baseHP = 70, + .baseAttack = 40, + .baseDefense = 50, + .baseSpeed = 25, + .baseSpAttack = 55, + .baseSpDefense = 50, + .types = { TYPE_ICE, TYPE_WATER }, + .catchRate = 255, + .expYield = 58, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_THICK_FAT, ABILITY_ICE_BODY, ABILITY_OBLIVIOUS }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Spheal"), + .cryId = CRY_SPHEAL, + .natDexNum = NATIONAL_DEX_SPHEAL, + .categoryName = _("Clap"), + .height = 8, + .weight = 395, + .description = COMPOUND_STRING( + "It is completely covered with plushy fur.\n" + "As a result, it never feels the cold even\n" + "when it is rolling about on ice floes or\n" + "diving in the sea."), + .pokemonScale = 315, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Spheal, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Spheal, + .frontAnimId = ANIM_SPIN_LONG, + .frontAnimDelay = 15, + BACK_PIC(Spheal, 48, 40), + .backPicYOffset = 15, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Spheal), + ICON(Spheal, 2), + .footprint = gMonFootprint_Spheal, + LEARNSETS(Spheal), + .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_SEALEO}), + }, + + [SPECIES_SEALEO] = + { + .baseHP = 90, + .baseAttack = 60, + .baseDefense = 70, + .baseSpeed = 45, + .baseSpAttack = 75, + .baseSpDefense = 70, + .types = { TYPE_ICE, TYPE_WATER }, + .catchRate = 120, + .expYield = 144, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_THICK_FAT, ABILITY_ICE_BODY, ABILITY_OBLIVIOUS }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Sealeo"), + .cryId = CRY_SEALEO, + .natDexNum = NATIONAL_DEX_SEALEO, + .categoryName = _("Ball Roll"), + .height = 11, + .weight = 876, + .description = COMPOUND_STRING( + "Sealeo live in herds on ice floes. Using its\n" + "powerful flippers, it shatters ice.\n" + "It dives into the sea to hunt prey five\n" + "times a day."), + .pokemonScale = 338, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Sealeo, 56, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Sealeo, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Sealeo, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Sealeo), + ICON(Sealeo, 2), + .footprint = gMonFootprint_Sealeo, + LEARNSETS(Sealeo), + .evolutions = EVOLUTION({EVO_LEVEL, 44, SPECIES_WALREIN}), + }, + + [SPECIES_WALREIN] = + { + .baseHP = 110, + .baseAttack = 80, + .baseDefense = 90, + .baseSpeed = 65, + .baseSpAttack = 95, + .baseSpDefense = 90, + .types = { TYPE_ICE, TYPE_WATER }, + .catchRate = 45, + .expYield = 239, + .evYield_HP = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_THICK_FAT, ABILITY_ICE_BODY, ABILITY_OBLIVIOUS }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Walrein"), + .cryId = CRY_WALREIN, + .natDexNum = NATIONAL_DEX_WALREIN, + .categoryName = _("Ice Break"), + .height = 14, + .weight = 1506, + .description = COMPOUND_STRING( + "To protect its herd, the leader battles\n" + "anything that invades its territory, even\n" + "at the cost of its life. Its tusks may snap\n" + "off in battle."), + .pokemonScale = 316, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Walrein, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Walrein, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Walrein, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Walrein), + ICON(Walrein, 0), + .footprint = gMonFootprint_Walrein, + LEARNSETS(Walrein), + }, +#endif //P_FAMILY_SPHEAL + +#if P_FAMILY_CLAMPERL + [SPECIES_CLAMPERL] = + { + .baseHP = 35, + .baseAttack = 64, + .baseDefense = 85, + .baseSpeed = 32, + .baseSpAttack = 74, + .baseSpDefense = 55, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 255, + .expYield = 69, + .evYield_Defense = 1, + .itemCommon = ITEM_PEARL, + .itemRare = ITEM_BIG_PEARL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_SHELL_ARMOR, ABILITY_NONE, ABILITY_RATTLED }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Clamperl"), + .cryId = CRY_CLAMPERL, + .natDexNum = NATIONAL_DEX_CLAMPERL, + .categoryName = _("Bivalve"), + .height = 4, + .weight = 525, + .description = COMPOUND_STRING( + "A Clamperl slams its shell closed on prey\n" + "to prevent escape. The pearl it creates\n" + "upon evolution is said to be infused with\n" + "a mysterious energy."), + .pokemonScale = 691, + .pokemonOffset = 22, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Clamperl, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Clamperl, + .frontAnimId = ANIM_TWIST, + BACK_PIC(Clamperl, 56, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Clamperl), + ICON(Clamperl, 0), + .footprint = gMonFootprint_Clamperl, + LEARNSETS(Clamperl), + .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, + {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}, + {EVO_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, + {EVO_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}), + }, + + [SPECIES_HUNTAIL] = + { + .baseHP = 55, + .baseAttack = 104, + .baseDefense = 105, + .baseSpeed = 52, + .baseSpAttack = 94, + .baseSpDefense = 75, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 60, + .expYield = 170, + .evYield_Attack = 1, + .evYield_Defense = 1, + .itemRare = ITEM_DEEP_SEA_TOOTH, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_WATER_VEIL }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Huntail"), + .cryId = CRY_HUNTAIL, + .natDexNum = NATIONAL_DEX_HUNTAIL, + .categoryName = _("Deep Sea"), + .height = 17, + .weight = 270, + .description = COMPOUND_STRING( + "To withstand the crushing pressure of\n" + "water deep under the sea, its spine is very\n" + "thick and sturdy. Its tail, which is shaped\n" + "like a small fish, has eyes that light up."), + .pokemonScale = 307, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Huntail, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Huntail, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Huntail, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Huntail), + ICON(Huntail, 0), + .footprint = gMonFootprint_Huntail, + LEARNSETS(Huntail), + }, + + [SPECIES_GOREBYSS] = + { + .baseHP = 55, + .baseAttack = 84, + .baseDefense = 105, + .baseSpeed = 52, + .baseSpAttack = 114, + .baseSpDefense = 75, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 60, + .expYield = 170, + .evYield_SpAttack = 2, + .itemRare = ITEM_DEEP_SEA_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_HYDRATION }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Gorebyss"), + .cryId = CRY_GOREBYSS, + .natDexNum = NATIONAL_DEX_GOREBYSS, + .categoryName = _("South Sea"), + .height = 18, + .weight = 226, + .description = COMPOUND_STRING( + "A Gorebyss siphons the body fluids of prey\n" + "through its thin, tubular mouth. Its light\n" + "pink body color turns vivid when it\n" + "finishes feeding."), + .pokemonScale = 278, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Gorebyss, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Gorebyss, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + BACK_PIC(Gorebyss, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Gorebyss), + ICON(Gorebyss, 0), + .footprint = gMonFootprint_Gorebyss, + LEARNSETS(Gorebyss), + }, +#endif //P_FAMILY_CLAMPERL + +#if P_FAMILY_RELICANTH + [SPECIES_RELICANTH] = + { + .baseHP = 100, + .baseAttack = 90, + .baseDefense = 130, + .baseSpeed = 55, + .baseSpAttack = 45, + .baseSpDefense = 65, + .types = { TYPE_WATER, TYPE_ROCK }, + .catchRate = 25, + .expYield = 170, + .evYield_HP = 1, + .evYield_Defense = 1, + .itemRare = ITEM_DEEP_SEA_SCALE, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_ROCK_HEAD, ABILITY_STURDY }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Relicanth"), + .cryId = CRY_RELICANTH, + .natDexNum = NATIONAL_DEX_RELICANTH, + .categoryName = _("Longevity"), + .height = 10, + .weight = 234, + .description = COMPOUND_STRING( + "A Pokémon that was once believed to have\n" + "been extinct. The species has not changed\n" + "its form for 100 million years. It walks on\n" + "the seafloor using its pectoral fins."), + .pokemonScale = 316, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Relicanth, 56, 56), + FRONT_PIC_FEMALE(Relicanth, 56, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Relicanth, + .frontAnimId = ANIM_TIP_MOVE_FORWARD, + BACK_PIC(Relicanth, 64, 40), + BACK_PIC_FEMALE(Relicanth, 64, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Relicanth), + ICON(Relicanth, 2), + .footprint = gMonFootprint_Relicanth, + LEARNSETS(Relicanth), + }, +#endif //P_FAMILY_RELICANTH + +#if P_FAMILY_LUVDISC + [SPECIES_LUVDISC] = + { + .baseHP = 43, + .baseAttack = 30, + .baseDefense = 55, + .baseSpeed = 97, + .baseSpAttack = 40, + .baseSpDefense = 65, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 225, + .expYield = 116, + .evYield_Speed = 1, + .itemCommon = ITEM_HEART_SCALE, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_HYDRATION }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Luvdisc"), + .cryId = CRY_LUVDISC, + .natDexNum = NATIONAL_DEX_LUVDISC, + .categoryName = _("Rendezvous"), + .height = 6, + .weight = 87, + .description = COMPOUND_STRING( + "Luvdisc make the branches of Corsola\n" + "their nests. There is a custom from long\n" + "ago of giving a Luvdisc as a gift to\n" + "express one's feelings of love."), + .pokemonScale = 371, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Luvdisc, 32, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Luvdisc, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + BACK_PIC(Luvdisc, 40, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_H_SPRING_REPEATED, + PALETTES(Luvdisc), + ICON(Luvdisc, 0), + .footprint = gMonFootprint_Luvdisc, + LEARNSETS(Luvdisc), + }, +#endif //P_FAMILY_LUVDISC + +#if P_FAMILY_BAGON + [SPECIES_BAGON] = + { + .baseHP = 45, + .baseAttack = 75, + .baseDefense = 60, + .baseSpeed = 50, + .baseSpAttack = 40, + .baseSpDefense = 30, + .types = { TYPE_DRAGON, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 60, + .evYield_Attack = 1, + .itemRare = ITEM_DRAGON_FANG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_ROCK_HEAD, ABILITY_NONE, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Bagon"), + .cryId = CRY_BAGON, + .natDexNum = NATIONAL_DEX_BAGON, + .categoryName = _("Rock Head"), + .height = 6, + .weight = 421, + .description = COMPOUND_STRING( + "Although it is small, this Pokémon is very\n" + "powerful because its body is a bundle of\n" + "muscles. It launches head-butts with its\n" + "ironlike skull."), + .pokemonScale = 448, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Bagon, 32, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Bagon, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Bagon, 48, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Bagon), + ICON(Bagon, 0), + .footprint = gMonFootprint_Bagon, + LEARNSETS(Bagon), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_SHELGON}), + }, + + [SPECIES_SHELGON] = + { + .baseHP = 65, + .baseAttack = 95, + .baseDefense = 100, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 50, + .types = { TYPE_DRAGON, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 147, + .evYield_Defense = 2, + .itemRare = ITEM_DRAGON_FANG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_ROCK_HEAD, ABILITY_NONE, ABILITY_OVERCOAT }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Shelgon"), + .cryId = CRY_SHELGON, + .natDexNum = NATIONAL_DEX_SHELGON, + .categoryName = _("Endurance"), + .height = 11, + .weight = 1105, + .description = COMPOUND_STRING( + "It hardly eats while it awaits evolution.\n" + "It becomes hardier by enduring hunger.\n" + "Its shell peels off the instant it begins\n" + "to evolve."), + .pokemonScale = 311, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Shelgon, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Shelgon, + .frontAnimId = ANIM_V_SLIDE, + BACK_PIC(Shelgon, 64, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Shelgon), + ICON(Shelgon, 2), + .footprint = gMonFootprint_Shelgon, + LEARNSETS(Shelgon), + .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_SALAMENCE}), + }, + +#define SALAMENCE_MISC_INFO \ + .types = { TYPE_DRAGON, TYPE_FLYING }, \ + .catchRate = 45, \ + .evYield_Attack = 3, \ + .itemRare = ITEM_DRAGON_FANG, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 40, \ + .friendship = 35, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON },\ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Salamence"), \ + .natDexNum = NATIONAL_DEX_SALAMENCE, \ + .categoryName = _("Dragon"), \ + .footprint = gMonFootprint_Salamence, \ + LEARNSETS(Salamence), \ + .formSpeciesIdTable = sSalamenceFormSpeciesIdTable, \ + .formChangeTable = sSalamenceFormChangeTable + + [SPECIES_SALAMENCE] = + { + SALAMENCE_MISC_INFO, + .baseHP = 95, + .baseAttack = 135, + .baseDefense = 80, + .baseSpeed = 100, + .baseSpAttack = 110, + .baseSpDefense = 80, + .expYield = 270, + .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_MOXIE }, + .cryId = CRY_SALAMENCE, + .height = 15, + .weight = 1026, + .description = COMPOUND_STRING( + "After many long years, its cellular\n" + "structure underwent a sudden mutation to\n" + "grow wings. When angered, it loses all\n" + "thought and rampages out of control."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Salamence, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Salamence, + .frontAnimId = ANIM_H_SHAKE, + .frontAnimDelay = 70, + BACK_PIC(Salamence, 56, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Salamence), + ICON(Salamence, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_SALAMENCE_MEGA] = + { + SALAMENCE_MISC_INFO, + .baseHP = 95, + .baseAttack = 145, + .baseDefense = 130, + .baseSpeed = 120, + .baseSpAttack = 120, + .baseSpDefense = 90, + .expYield = 315, + .abilities = { ABILITY_AERILATE, ABILITY_AERILATE, ABILITY_AERILATE }, + .cryId = CRY_SALAMENCE_MEGA, + .height = 18, + .weight = 1126, + .description = COMPOUND_STRING( + "Mega Evolution fuels its brutality, and it\n" + "may even turn on the Trainer who raised it.\n" + "It's been dubbed the blood-soaked.\n" + "crescent."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(SalamenceMega, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_SalamenceMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SalamenceMega, 56, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(SalamenceMega), + ICON(SalamenceMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BAGON + +#if P_FAMILY_BELDUM + [SPECIES_BELDUM] = + { + .baseHP = 40, + .baseAttack = 55, + .baseDefense = 80, + .baseSpeed = 30, + .baseSpAttack = 35, + .baseSpDefense = 60, + .types = { TYPE_STEEL, TYPE_PSYCHIC }, + .catchRate = 3, + .expYield = 60, + .evYield_Defense = 1, + .itemRare = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_LIGHT_METAL }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Beldum"), + .cryId = CRY_BELDUM, + .natDexNum = NATIONAL_DEX_BELDUM, + .categoryName = _("Iron Ball"), + .height = 6, + .weight = 952, + .description = COMPOUND_STRING( + "When Beldum gather in a swarm, they move\n" + "in perfect unison as if they were but one\n" + "Pokémon. They communicate with each other\n" + "using brain waves."), + .pokemonScale = 414, + .pokemonOffset = -1, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Beldum, 48, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Beldum, + .frontAnimId = ANIM_H_SHAKE, + .enemyMonElevation = 8, + BACK_PIC(Beldum, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Beldum), + ICON(Beldum, 0), + .footprint = gMonFootprint_Beldum, + LEARNSETS(Beldum), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_METANG}), + }, + + [SPECIES_METANG] = + { + .baseHP = 60, + .baseAttack = 75, + .baseDefense = 100, + .baseSpeed = 50, + .baseSpAttack = 55, + .baseSpDefense = 80, + .types = { TYPE_STEEL, TYPE_PSYCHIC }, + .catchRate = 3, + .expYield = 147, + .evYield_Defense = 2, + .itemRare = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_LIGHT_METAL }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Metang"), + .cryId = CRY_METANG, + .natDexNum = NATIONAL_DEX_METANG, + .categoryName = _("Iron Claw"), + .height = 12, + .weight = 2025, + .description = COMPOUND_STRING( + "The claws tipping its arms pack the\n" + "destructive power to tear through thick\n" + "iron sheets as if they were silk. It flies\n" + "at over 60 miles per hour."), + .pokemonScale = 256, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Metang, 64, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Metang, + .frontAnimId = ANIM_V_SLIDE, + BACK_PIC(Metang, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Metang), + ICON(Metang, 0), + .footprint = gMonFootprint_Metang, + LEARNSETS(Metang), + .evolutions = EVOLUTION({EVO_LEVEL, 45, SPECIES_METAGROSS}), + }, + +#define METAGROSS_MISC_INFO \ + .types = { TYPE_STEEL, TYPE_PSYCHIC }, \ + .catchRate = 3, \ + .evYield_Defense = 3, \ + .itemRare = ITEM_METAL_COAT, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 40, \ + .friendship = 35, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Metagross"), \ + .natDexNum = NATIONAL_DEX_METAGROSS, \ + .categoryName = _("Iron Leg"), \ + .footprint = gMonFootprint_Metagross, \ + LEARNSETS(Metagross), \ + .formSpeciesIdTable = sMetagrossFormSpeciesIdTable, \ + .formChangeTable = sMetagrossFormChangeTable + + [SPECIES_METAGROSS] = + { + METAGROSS_MISC_INFO, + .baseHP = 80, + .baseAttack = 135, + .baseDefense = 130, + .baseSpeed = 70, + .baseSpAttack = 95, + .baseSpDefense = 90, + .expYield = 270, + .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_LIGHT_METAL }, + .cryId = CRY_METAGROSS, + .height = 16, + .weight = 5500, + .description = COMPOUND_STRING( + "Metagross has four brains that are joined\n" + "by a complex neural network. As a result of\n" + "integration, this Pokémon is smarter than\n" + "a supercomputer."), + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 447, + .trainerOffset = 9, + FRONT_PIC(Metagross, 64, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Metagross, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Metagross, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Metagross), + ICON(Metagross, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_METAGROSS_MEGA] = + { + METAGROSS_MISC_INFO, + .baseHP = 80, + .baseAttack = 145, + .baseDefense = 150, + .baseSpeed = 110, + .baseSpAttack = 105, + .baseSpDefense = 110, + .expYield = 315, + .abilities = { ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS }, + .cryId = CRY_METAGROSS_MEGA, + .height = 25, + .weight = 9429, + .description = COMPOUND_STRING( + "When it knows it can't win, it digs the\n" + "claws on its legs into its opponent and\n" + "starts the countdown to a big explosion."), + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 447, + .trainerOffset = 9, + FRONT_PIC(MetagrossMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_MetagrossMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 4, + BACK_PIC(MetagrossMega, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(MetagrossMega), + ICON(MetagrossMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BELDUM + +#if P_FAMILY_REGIROCK + [SPECIES_REGIROCK] = + { + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 200, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 100, + .types = { TYPE_ROCK, TYPE_ROCK }, + .catchRate = 3, + .expYield = 261, + .evYield_Defense = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_STURDY }, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = TRUE, + .isLegendary = TRUE, + .speciesName = _("Regirock"), + .cryId = CRY_REGIROCK, + .natDexNum = NATIONAL_DEX_REGIROCK, + .categoryName = _("Rock Peak"), + .height = 17, + .weight = 2300, + .description = COMPOUND_STRING( + "A Pokémon that is made entirely of rocks\n" + "and boulders. If parts of its body chip off\n" + "in battle, Regirock repairs itself by\n" + "adding new rocks."), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 309, + .trainerOffset = 1, + FRONT_PIC(Regirock, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Regirock, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + BACK_PIC(Regirock, 64, 56), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Regirock), + ICON(Regirock, 2), + .footprint = gMonFootprint_Regirock, + LEARNSETS(Regirock), + }, +#endif //P_FAMILY_REGIROCK + +#if P_FAMILY_REGICE + [SPECIES_REGICE] = + { + .baseHP = 80, + .baseAttack = 50, + .baseDefense = 100, + .baseSpeed = 50, + .baseSpAttack = 100, + .baseSpDefense = 200, + .types = { TYPE_ICE, TYPE_ICE }, + .catchRate = 3, + .expYield = 261, + .evYield_SpDefense = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_ICE_BODY }, + .bodyColor = BODY_COLOR_BLUE, + .isLegendary = TRUE, + .speciesName = _("Regice"), + .cryId = CRY_REGICE, + .natDexNum = NATIONAL_DEX_REGICE, + .categoryName = _("Iceberg"), + .height = 18, + .weight = 1750, + .description = COMPOUND_STRING( + "Its entire body is made of Antarctic ice.\n" + "After extensive studies, researchers\n" + "believe the ice was formed during an\n" + "ice age."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 301, + .trainerOffset = 2, + FRONT_PIC(Regice, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Regice, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(Regice, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Regice), + ICON(Regice, 0), + .footprint = gMonFootprint_Regice, + LEARNSETS(Regice), + }, +#endif //P_FAMILY_REGICE + +#if P_FAMILY_REGISTEEL + [SPECIES_REGISTEEL] = + { + .baseHP = 80, + .baseAttack = 75, + .baseDefense = 150, + .baseSpeed = 50, + .baseSpAttack = 75, + .baseSpDefense = 150, + .types = { TYPE_STEEL, TYPE_STEEL }, + .catchRate = 3, + .expYield = 261, + .evYield_Defense = 2, + .evYield_SpDefense = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_LIGHT_METAL }, + .bodyColor = BODY_COLOR_GRAY, + .isLegendary = TRUE, + .speciesName = _("Registeel"), + .cryId = CRY_REGISTEEL, + .natDexNum = NATIONAL_DEX_REGISTEEL, + .categoryName = _("Iron"), + .height = 19, + .weight = 2050, + .description = COMPOUND_STRING( + "Its body is harder than any other kind of\n" + "metal. The body metal is composed of a\n" + "mysterious substance. Not only is it hard,\n" + "it shrinks and stretches flexibly."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 359, + .trainerOffset = 6, + FRONT_PIC(Registeel, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Registeel, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Registeel, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Registeel), + ICON(Registeel, 2), + .footprint = gMonFootprint_Registeel, + LEARNSETS(Registeel), + }, +#endif //P_FAMILY_REGISTEEL + +#if P_FAMILY_LATIAS +#define LATIAS_MISC_INFO \ + .types = { TYPE_DRAGON, TYPE_PSYCHIC }, \ + .catchRate = 3, \ + .evYield_SpDefense = 3, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 120, \ + .friendship = 90, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED },\ + .speciesName = _("Latias"), \ + .natDexNum = NATIONAL_DEX_LATIAS, \ + .categoryName = _("Eon"), \ + .footprint = gMonFootprint_Latias, \ + LEARNSETS(Latias), \ + .formSpeciesIdTable = sLatiasFormSpeciesIdTable, \ + .formChangeTable = sLatiasFormChangeTable, \ + .isLegendary = TRUE + + [SPECIES_LATIAS] = + { + LATIAS_MISC_INFO, + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 90, + .baseSpeed = 110, + .baseSpAttack = 110, + .baseSpDefense = 130, + .expYield = 270, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .cryId = CRY_LATIAS, + .height = 14, + .weight = 400, + .description = COMPOUND_STRING( + "They make a small herd of only several\n" + "members. They rarely make contact with\n" + "people or other Pokémon. They disappear\n" + "if they sense enemies."), + .pokemonScale = 304, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Latias, 64, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Latias, + .frontAnimId = ANIM_ZIGZAG_SLOW, + .enemyMonElevation = 12, + BACK_PIC(Latias, 56, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Latias), + ICON(Latias, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_LATIAS_MEGA] = + { + LATIAS_MISC_INFO, + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 120, + .baseSpeed = 110, + .baseSpAttack = 140, + .baseSpDefense = 150, + .expYield = 315, + .abilities = { ABILITY_LEVITATE, ABILITY_LEVITATE, ABILITY_LEVITATE }, + .bodyColor = BODY_COLOR_PURPLE, + .cryId = CRY_LATIAS_MEGA, + .height = 18, + .weight = 520, + .description = COMPOUND_STRING( + "Its body is smaller than Mega Latios's\n" + "body. It is more agile and can make very\n" + "sharp turns. When it Mega Evolves, its\n" + "defensive strength grows substantially."), + .pokemonScale = 304, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(LatiasMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_LatiasMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 8, + BACK_PIC(LatiasMega, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(LatiasMega), + ICON(LatiasMega, 2), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LATIAS + +#if P_FAMILY_LATIOS +#define LATIOS_MISC_INFO \ + .types = { TYPE_DRAGON, TYPE_PSYCHIC }, \ + .catchRate = 3, \ + .evYield_SpAttack = 3, \ + .genderRatio = MON_MALE, \ + .eggCycles = 120, \ + .friendship = 90, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED },\ + .isLegendary = TRUE, \ + .speciesName = _("Latios"), \ + .natDexNum = NATIONAL_DEX_LATIOS, \ + .categoryName = _("Eon"), \ + .footprint = gMonFootprint_Latios, \ + LEARNSETS(Latios), \ + .formSpeciesIdTable = sLatiosFormSpeciesIdTable, \ + .formChangeTable = sLatiosFormChangeTable + + [SPECIES_LATIOS] = + { + LATIOS_MISC_INFO, + .baseHP = 80, + .baseAttack = 90, + .baseDefense = 80, + .baseSpeed = 110, + .baseSpAttack = 130, + .baseSpDefense = 110, + .expYield = 270, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .cryId = CRY_LATIOS, + .height = 20, + .weight = 600, + .description = COMPOUND_STRING( + "Even in hiding, it can detect the locations\n" + "of others and sense their emotions since\n" + "it has telepathy. Its intelligence allows\n" + "it to understand human languages."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 294, + .trainerOffset = 3, + FRONT_PIC(Latios, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Latios, + .frontAnimId = ANIM_CIRCLE_C_CLOCKWISE_SLOW, + .enemyMonElevation = 6, + BACK_PIC(Latios, 56, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Latios), + ICON(Latios, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_LATIOS_MEGA] = + { + LATIOS_MISC_INFO, + .baseHP = 80, + .baseAttack = 130, + .baseDefense = 100, + .baseSpeed = 110, + .baseSpAttack = 160, + .baseSpDefense = 120, + .expYield = 315, + .abilities = { ABILITY_LEVITATE, ABILITY_LEVITATE, ABILITY_LEVITATE }, + .bodyColor = BODY_COLOR_PURPLE, + .cryId = CRY_LATIOS_MEGA, + .height = 23, + .weight = 700, + .description = COMPOUND_STRING( + "It's larger than Mega Latias, and can\n" + "achieve higher speeds in flight.\n" + "This Pokémon can use its speed in battle\n" + "to unleash a flurry of attacks."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 294, + .trainerOffset = 3, + FRONT_PIC(LatiosMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_LatiosMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 8, + BACK_PIC(LatiosMega, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(LatiosMega), + ICON(LatiosMega, 2), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LATIOS + +#if P_FAMILY_KYOGRE +#define KYOGRE_MISC_INFO \ + .types = { TYPE_WATER, TYPE_WATER }, \ + .catchRate = 3, \ + .expYield = 302, \ + .evYield_SpAttack = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED },\ + .bodyColor = BODY_COLOR_BLUE, \ + .isLegendary = TRUE, \ + .speciesName = _("Kyogre"), \ + .natDexNum = NATIONAL_DEX_KYOGRE, \ + .categoryName = _("Sea Basin"), \ + .footprint = gMonFootprint_Kyogre, \ + LEARNSETS(Kyogre), \ + .formSpeciesIdTable = sKyogreFormSpeciesIdTable, \ + .formChangeTable = sKyogreFormChangeTable + + [SPECIES_KYOGRE] = + { + KYOGRE_MISC_INFO, + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 90, + .baseSpeed = 90, + .baseSpAttack = 150, + .baseSpDefense = 140, + .abilities = { ABILITY_DRIZZLE, ABILITY_NONE }, + .cryId = CRY_KYOGRE, + .height = 45, + .weight = 3520, + .description = COMPOUND_STRING( + "Kyogre has appeared in mythology as the\n" + "creator of the sea. After long years of\n" + "feuding with Groudon, it took to sleep at\n" + "the bottom of the sea."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 614, + .trainerOffset = 13, + FRONT_PIC(Kyogre, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Kyogre, + .frontAnimId = ANIM_SWING_CONCAVE_FAST_SHORT, + .frontAnimDelay = 60, + BACK_PIC(Kyogre, 64, 32), + .backPicYOffset = 18, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(Kyogre), + ICON(Kyogre, 2), + }, +#if P_PRIMAL_REVERSIONS + [SPECIES_KYOGRE_PRIMAL] = + { + KYOGRE_MISC_INFO, + .baseHP = 100, + .baseAttack = 150, + .baseDefense = 90, + .baseSpeed = 90, + .baseSpAttack = 180, + .baseSpDefense = 160, + .abilities = { ABILITY_PRIMORDIAL_SEA, ABILITY_PRIMORDIAL_SEA }, + .cryId = CRY_KYOGRE_PRIMAL, + .height = 98, + .weight = 4300, + .description = COMPOUND_STRING( + "When Kyogre roared, water poured forth\n" + "and the seas spread outward.\n" + "Dark clouds enshrouded the world,\n" + "and the deluge fell upon all…"), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 515, + .trainerOffset = 14, + FRONT_PIC(KyogrePrimal, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_KyogrePrimal, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(KyogrePrimal, 64, 32), + .backPicYOffset = 18, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(KyogrePrimal), + ICON(KyogrePrimal, 0), + .isPrimalReversion = TRUE, + }, +#endif //P_PRIMAL_REVERSIONS +#endif //P_FAMILY_KYOGRE + +#if P_FAMILY_GROUDON +#define GROUDON_MISC_INFO \ + .catchRate = 3, \ + .expYield = 302, \ + .evYield_Attack = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED },\ + .bodyColor = BODY_COLOR_RED, \ + .isLegendary = TRUE, \ + .speciesName = _("Groudon"), \ + .cryId = CRY_GROUDON, \ + .natDexNum = NATIONAL_DEX_GROUDON, \ + .categoryName = _("Continent"), \ + .footprint = gMonFootprint_Groudon, \ + LEARNSETS(Groudon), \ + .formSpeciesIdTable = sGroudonFormSpeciesIdTable, \ + .formChangeTable = sGroudonFormChangeTable + + [SPECIES_GROUDON] = + { + GROUDON_MISC_INFO, + .baseHP = 100, + .baseAttack = 150, + .baseDefense = 140, + .baseSpeed = 90, + .baseSpAttack = 100, + .baseSpDefense = 90, + .types = { TYPE_GROUND, TYPE_GROUND }, + .abilities = { ABILITY_DROUGHT, ABILITY_NONE }, + .height = 35, + .weight = 9500, + .description = COMPOUND_STRING( + "Groudon has appeared in mythology as the\n" + "creator of the land. It sleeps in magma\n" + "underground and is said to make volcanoes\n" + "erupt on awakening."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 515, + .trainerOffset = 14, + FRONT_PIC(Groudon, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Groudon, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Groudon, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Groudon), + ICON(Groudon, 0), + }, + +#if P_PRIMAL_REVERSIONS + [SPECIES_GROUDON_PRIMAL] = + { + GROUDON_MISC_INFO, + .baseHP = 100, + .baseAttack = 180, + .baseDefense = 160, + .baseSpeed = 90, + .baseSpAttack = 150, + .baseSpDefense = 90, + .types = { TYPE_GROUND, TYPE_FIRE }, + .abilities = { ABILITY_DESOLATE_LAND, ABILITY_DESOLATE_LAND }, + .height = 50, + .weight = 9997, + .description = COMPOUND_STRING( + "When Groudon howled, the earth swelled and\n" + "the land grew wide. The sun blazed atop\n" + "and all the world around the creature\n" + "was enveloped in incandescent heat."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 515, + .trainerOffset = 14, + FRONT_PIC(GroudonPrimal, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_GroudonPrimal, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .backPic = gMonBackPic_GroudonPrimal, + .backPicSize = MON_COORDS_SIZE(64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(GroudonPrimal), + ICON(GroudonPrimal, 0), + .isPrimalReversion = TRUE, + }, +#endif //P_PRIMAL_REVERSIONS +#endif //P_FAMILY_GROUDON + +#if P_FAMILY_RAYQUAZA +#define RAYQUAZA_MISC_INFO \ + .types = { TYPE_DRAGON, TYPE_FLYING }, \ + .catchRate = 45, \ + .expYield = 306, \ + .evYield_Attack = 2, \ + .evYield_SpAttack = 1, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED },\ + .bodyColor = BODY_COLOR_GREEN, \ + .speciesName = _("Rayquaza"), \ + .cryId = CRY_RAYQUAZA, \ + .natDexNum = NATIONAL_DEX_RAYQUAZA, \ + .categoryName = _("Sky High"), \ + .footprint = gMonFootprint_Rayquaza, \ + LEARNSETS(Rayquaza), \ + .formSpeciesIdTable = sRayquazaFormSpeciesIdTable, \ + .formChangeTable = sRayquazaFormChangeTable, \ + .isLegendary = TRUE + + [SPECIES_RAYQUAZA] = + { + RAYQUAZA_MISC_INFO, + .baseHP = 105, + .baseAttack = 150, + .baseDefense = 90, + .baseSpeed = 95, + .baseSpAttack = 150, + .baseSpDefense = 90, + .abilities = { ABILITY_AIR_LOCK, ABILITY_NONE }, + .height = 70, + .weight = 2065, + .description = COMPOUND_STRING( + "A Pokémon that flies endlessly in the\n" + "ozone layer. It is said it would descend\n" + "to the ground if Kyogre and Groudon\n" + "were to fight."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 448, + .trainerOffset = 12, + FRONT_PIC(Rayquaza, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Rayquaza, + .frontAnimId = ANIM_H_SHAKE, + .frontAnimDelay = 60, + .enemyMonElevation = 6, + BACK_PIC(Rayquaza, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(Rayquaza), + ICON(Rayquaza, 1), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_RAYQUAZA_MEGA] = + { + RAYQUAZA_MISC_INFO, + .baseHP = 105, + .baseAttack = 180, + .baseDefense = 100, + .baseSpeed = 115, + .baseSpAttack = 180, + .baseSpDefense = 100, + .abilities = { ABILITY_DELTA_STREAM, ABILITY_DELTA_STREAM, ABILITY_DELTA_STREAM }, + .height = 108, + .weight = 3920, + .description = COMPOUND_STRING( + "Particles stream from the filaments that\n" + "extend from its jaw. They can control the\n" + "density and humidity of the air, allowing\n" + "Rayquaza to manipulate the weather."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 448, + .trainerOffset = 12, + FRONT_PIC(RayquazaMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_RayquazaMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 4, + BACK_PIC(RayquazaMega, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, + PALETTES(RayquazaMega), + ICON(RayquazaMega, 1), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_RAYQUAZA + +#if P_FAMILY_JIRACHI + [SPECIES_JIRACHI] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 100, + .baseSpDefense = 100, + .types = { TYPE_STEEL, TYPE_PSYCHIC }, + .catchRate = 3, + .expYield = 270, + .evYield_HP = 3, + .itemCommon = ITEM_STAR_PIECE, + .itemRare = ITEM_STAR_PIECE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .isMythical = TRUE, + .speciesName = _("Jirachi"), + .cryId = CRY_JIRACHI, + .natDexNum = NATIONAL_DEX_JIRACHI, + .categoryName = _("Wish"), + .height = 3, + .weight = 11, + .description = COMPOUND_STRING( + "Jirachi is said to make wishes come true.\n" + "While it sleeps, a tough crystalline shell\n" + "envelops the body to protect it from\n" + "enemies."), + .pokemonScale = 608, + .pokemonOffset = -8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Jirachi, 56, 48), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Jirachi, + .frontAnimId = ANIM_RISING_WOBBLE, + .enemyMonElevation = 14, + BACK_PIC(Jirachi, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Jirachi), + ICON(Jirachi, 0), + .footprint = gMonFootprint_Jirachi, + LEARNSETS(Jirachi), + }, +#endif //P_FAMILY_JIRACHI + +#if P_FAMILY_DEOXYS +#define DEOXYS_MISC_INFO \ + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, \ + .catchRate = 3, \ + .expYield = 270, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED },\ + .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_RED, \ + .isMythical = TRUE, \ + .speciesName = _("Deoxys"), \ + .cryId = CRY_DEOXYS, \ + .natDexNum = NATIONAL_DEX_DEOXYS, \ + .categoryName = _("DNA"), \ + .height = 17, \ + .weight = 608, \ + .description = gDeoxysNormalPokedexText, \ + .pokemonScale = 256, \ + .pokemonOffset = 0, \ + .trainerScale = 290, \ + .trainerOffset = 2, \ + .footprint = gMonFootprint_Deoxys, \ + .formSpeciesIdTable = sDeoxysFormSpeciesIdTable + + [SPECIES_DEOXYS_NORMAL] = + { + DEOXYS_MISC_INFO, + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .evYield_Attack = 1, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + FRONT_PIC(DeoxysNormal, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_DeoxysNormal, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(DeoxysNormal, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(DeoxysNormal), + ICON(DeoxysNormal, 0), + LEARNSETS(DeoxysNormal), + }, + + [SPECIES_DEOXYS_ATTACK] = + { + DEOXYS_MISC_INFO, + .baseHP = 50, + .baseAttack = 180, + .baseDefense = 20, + .baseSpeed = 150, + .baseSpAttack = 180, + .baseSpDefense = 20, + .evYield_Attack = 2, + .evYield_SpAttack = 1, + FRONT_PIC(DeoxysAttack, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_DeoxysAttack, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(DeoxysAttack, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(DeoxysAttack), + ICON(DeoxysAttack, 0), + LEARNSETS(DeoxysAttack), + }, + + [SPECIES_DEOXYS_DEFENSE] = + { + DEOXYS_MISC_INFO, + .baseHP = 50, + .baseAttack = 70, + .baseDefense = 160, + .baseSpeed = 90, + .baseSpAttack = 70, + .baseSpDefense = 160, + .evYield_Defense = 2, + .evYield_SpDefense = 1, + FRONT_PIC(DeoxysDefense, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_DeoxysDefense, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(DeoxysDefense, 64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(DeoxysDefense), + ICON(DeoxysDefense, 0), + LEARNSETS(DeoxysDefense), + }, + + [SPECIES_DEOXYS_SPEED] = + { + DEOXYS_MISC_INFO, + .baseHP = 50, + .baseAttack = 95, + .baseDefense = 90, + .baseSpeed = 180, + .baseSpAttack = 95, + .baseSpDefense = 90, + .evYield_Speed = 3, + .noFlip = TRUE, + FRONT_PIC(DeoxysSpeed, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_DeoxysSpeed, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(DeoxysSpeed, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(DeoxysSpeed), + ICON(DeoxysSpeed, 0), + LEARNSETS(DeoxysSpeed), + }, +#endif //P_FAMILY_DEOXYS + +#ifdef __INTELLISENSE__ +}; +#endif \ No newline at end of file diff --git a/src/data/pokemon/species_info/gen_4.h b/src/data/pokemon/species_info/gen_4.h new file mode 100644 index 0000000000..fd2f008cd5 --- /dev/null +++ b/src/data/pokemon/species_info/gen_4.h @@ -0,0 +1,4542 @@ +#ifdef __INTELLISENSE__ +const struct SpeciesInfo gSpeciesInfoGen4[] = +{ +#endif + +#if P_FAMILY_TURTWIG + [SPECIES_TURTWIG] = + { + .baseHP = 55, + .baseAttack = 68, + .baseDefense = 64, + .baseSpeed = 31, + .baseSpAttack = 45, + .baseSpDefense = 55, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 64, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_SHELL_ARMOR }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Turtwig"), + .cryId = CRY_TURTWIG, + .natDexNum = NATIONAL_DEX_TURTWIG, + .categoryName = _("Tiny Leaf"), + .height = 4, + .weight = 102, + .description = COMPOUND_STRING( + "The shell on its back is made of soil. \n" + "On a very healthy Turtwig, the shell \n" + "should feel moist. The leaf on its head\n" + "wilts if it is thirsty."), + .pokemonScale = 491, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Turtwig, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Turtwig, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Turtwig, 48, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Turtwig), + ICON(Turtwig, 1), + .footprint = gMonFootprint_Turtwig, + LEARNSETS(Turtwig), + .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_GROTLE}), + }, + + [SPECIES_GROTLE] = + { + .baseHP = 75, + .baseAttack = 89, + .baseDefense = 85, + .baseSpeed = 36, + .baseSpAttack = 55, + .baseSpDefense = 65, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 142, + .evYield_Attack = 1, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_SHELL_ARMOR }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Grotle"), + .cryId = CRY_GROTLE, + .natDexNum = NATIONAL_DEX_GROTLE, + .categoryName = _("Grove"), + .height = 11, + .weight = 970, + .description = COMPOUND_STRING( + "A Grotle that lives in the forest is said\n" + "to have its own secret springwater well. \n" + "It carries fellow Pokémon there on \n" + "its back."), + .pokemonScale = 320, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Grotle, 56, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Grotle, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Grotle, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Grotle), + ICON(Grotle, 1), + .footprint = gMonFootprint_Grotle, + LEARNSETS(Grotle), + .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_TORTERRA}), + }, + + [SPECIES_TORTERRA] = + { + .baseHP = 95, + .baseAttack = 109, + .baseDefense = 105, + .baseSpeed = 56, + .baseSpAttack = 75, + .baseSpDefense = 85, + .types = { TYPE_GRASS, TYPE_GROUND }, + .catchRate = 45, + .expYield = 236, + .evYield_Attack = 2, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_SHELL_ARMOR }, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + .speciesName = _("Torterra"), + .cryId = CRY_TORTERRA, + .natDexNum = NATIONAL_DEX_TORTERRA, + .categoryName = _("Continent"), + .height = 22, + .weight = 3100, + .description = COMPOUND_STRING( + "Some Pokémon are born on a Torterra's\n" + "back and spend their entire life there.\n" + "Ancient people imagined that beneath \n" + "the ground, a gigantic Torterra dwelled."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 348, + .trainerOffset = 6, + FRONT_PIC(Torterra, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Torterra, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Torterra, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, + PALETTES(Torterra), + ICON(Torterra, 1), + .footprint = gMonFootprint_Torterra, + LEARNSETS(Torterra), + }, +#endif //P_FAMILY_TURTWIG + +#if P_FAMILY_CHIMCHAR + [SPECIES_CHIMCHAR] = + { + .baseHP = 44, + .baseAttack = 58, + .baseDefense = 44, + .baseSpeed = 61, + .baseSpAttack = 58, + .baseSpDefense = 44, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 62, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_IRON_FIST }, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = TRUE, + .speciesName = _("Chimchar"), + .cryId = CRY_CHIMCHAR, + .natDexNum = NATIONAL_DEX_CHIMCHAR, + .categoryName = _("Chimp"), + .height = 5, + .weight = 62, + .description = COMPOUND_STRING( + "Its fiery rear end is fueled by gas made\n" + "in its belly. Before going to sleep,\n" + "Chimchar extinguish the flame on their\n" + "tails to prevent fires."), + .pokemonScale = 432, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Chimchar, 32, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Chimchar, + .frontAnimId = ANIM_V_JUMPS_BIG, + BACK_PIC(Chimchar, 56, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Chimchar), + ICON(Chimchar, 1), + .footprint = gMonFootprint_Chimchar, + LEARNSETS(Chimchar), + .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_MONFERNO}), + }, + + [SPECIES_MONFERNO] = + { + .baseHP = 64, + .baseAttack = 78, + .baseDefense = 52, + .baseSpeed = 81, + .baseSpAttack = 78, + .baseSpDefense = 52, + .types = { TYPE_FIRE, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 142, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_IRON_FIST }, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = TRUE, + .speciesName = _("Monferno"), + .cryId = CRY_MONFERNO, + .natDexNum = NATIONAL_DEX_MONFERNO, + .categoryName = _("Playful"), + .height = 9, + .weight = 220, + .description = COMPOUND_STRING( + "It carefully controls the intensity of\n" + "the flame on its tail, so as to keep its\n" + "foes at an adequate distance.\n" + "Its fiery tail is but one weapon."), + .pokemonScale = 338, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Monferno, 56, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Monferno, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + BACK_PIC(Monferno, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Monferno), + ICON(Monferno, 0), + .footprint = gMonFootprint_Monferno, + LEARNSETS(Monferno), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_INFERNAPE}), + }, + + [SPECIES_INFERNAPE] = + { + .baseHP = 76, + .baseAttack = 104, + .baseDefense = 71, + .baseSpeed = 108, + .baseSpAttack = 104, + .baseSpDefense = 71, + .types = { TYPE_FIRE, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 240, + .evYield_Attack = 1, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_IRON_FIST }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Infernape"), + .cryId = CRY_INFERNAPE, + .natDexNum = NATIONAL_DEX_INFERNAPE, + .categoryName = _("Flame"), + .height = 12, + .weight = 550, + .description = COMPOUND_STRING( + "Its crown of fire is indicative of its\n" + "fiery nature. It uses a special kind of\n" + "martial arts involving all of its limbs to\n" + "take on any opponent."), + .pokemonScale = 282, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Infernape, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Infernape, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Infernape, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Infernape), + ICON(Infernape, 0), + .footprint = gMonFootprint_Infernape, + LEARNSETS(Infernape), + }, +#endif //P_FAMILY_CHIMCHAR + +#if P_FAMILY_PIPLUP + [SPECIES_PIPLUP] = + { + .baseHP = 53, + .baseAttack = 51, + .baseDefense = 53, + .baseSpeed = 40, + .baseSpAttack = 61, + .baseSpDefense = 56, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 63, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + #if P_UPDATED_ABILITIES >= GEN_9 + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_COMPETITIVE }, + #else + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT }, + #endif + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Piplup"), + .cryId = CRY_PIPLUP, + .natDexNum = NATIONAL_DEX_PIPLUP, + .categoryName = _("Penguin"), + .height = 4, + .weight = 52, + .description = COMPOUND_STRING( + "A poor walker, it often falls down. However,\n" + "its strong pride makes it puff up its chest\n" + "without a care. It's difficult to bond with\n" + "since it won't listen to its Trainer."), + .pokemonScale = 491, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Piplup, 24, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Piplup, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Piplup, 40, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Piplup), + ICON(Piplup, 0), + .footprint = gMonFootprint_Piplup, + LEARNSETS(Piplup), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_PRINPLUP}), + }, + + [SPECIES_PRINPLUP] = + { + .baseHP = 64, + .baseAttack = 66, + .baseDefense = 68, + .baseSpeed = 50, + .baseSpAttack = 81, + .baseSpDefense = 76, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 142, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + #if P_UPDATED_ABILITIES >= GEN_9 + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_COMPETITIVE }, + #else + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT }, + #endif + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Prinplup"), + .cryId = CRY_PRINPLUP, + .natDexNum = NATIONAL_DEX_PRINPLUP, + .categoryName = _("Penguin"), + .height = 8, + .weight = 230, + .description = COMPOUND_STRING( + "Because every Prinplup considers itself\n" + "to be the most important, they can never\n" + "form a group. It searches for prey in\n" + "icy seas."), + .pokemonScale = 366, + .pokemonOffset = 10, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Prinplup, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Prinplup, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Prinplup, 48, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Prinplup), + ICON(Prinplup, 0), + .footprint = gMonFootprint_Prinplup, + LEARNSETS(Prinplup), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_EMPOLEON}), + }, + + [SPECIES_EMPOLEON] = + { + .baseHP = 84, + .baseAttack = 86, + .baseDefense = 88, + .baseSpeed = 60, + .baseSpAttack = 111, + .baseSpDefense = 101, + .types = { TYPE_WATER, TYPE_STEEL }, + .catchRate = 45, + .expYield = 239, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + #if P_UPDATED_ABILITIES >= GEN_9 + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_COMPETITIVE }, + #else + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_DEFIANT }, + #endif + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Empoleon"), + .cryId = CRY_EMPOLEON, + .natDexNum = NATIONAL_DEX_EMPOLEON, + .categoryName = _("Emperor"), + .height = 17, + .weight = 845, + .description = COMPOUND_STRING( + "The three horns that extend from its beak\n" + "attest to its power. It avoids unnecessary\n" + "disputes, but it will decimate anything\n" + "that threatens its pride."), + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 1, + FRONT_PIC(Empoleon, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Empoleon, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Empoleon, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(Empoleon), + ICON(Empoleon, 0), + .footprint = gMonFootprint_Empoleon, + LEARNSETS(Empoleon), + }, +#endif //P_FAMILY_PIPLUP + +#if P_FAMILY_STARLY + [SPECIES_STARLY] = + { + .baseHP = 40, + .baseAttack = 55, + .baseDefense = 30, + .baseSpeed = 60, + .baseSpAttack = 30, + .baseSpDefense = 30, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 255, + .expYield = 49, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_RECKLESS }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Starly"), + .cryId = CRY_STARLY, + .natDexNum = NATIONAL_DEX_STARLY, + .categoryName = _("Starling"), + .height = 3, + .weight = 20, + .description = COMPOUND_STRING( + "They flock around mountains and fields,\n" + "chasing after bug Pokémon. However,\n" + "they bicker if the group grows too big.\n" + "Their singing is noisy and annoying."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Starly, 40, 40), + FRONT_PIC_FEMALE(Starly, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Starly, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Starly, 56, 48), + BACK_PIC_FEMALE(Starly, 56, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Starly), + ICON(Starly, 0), + .footprint = gMonFootprint_Starly, + LEARNSETS(Starly), + .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_STARAVIA}), + }, + + [SPECIES_STARAVIA] = + { + .baseHP = 55, + .baseAttack = 75, + .baseDefense = 50, + .baseSpeed = 80, + .baseSpAttack = 40, + .baseSpDefense = 40, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 120, + .expYield = 119, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_RECKLESS }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Staravia"), + .cryId = CRY_STARAVIA, + .natDexNum = NATIONAL_DEX_STARAVIA, + .categoryName = _("Starling"), + .height = 6, + .weight = 155, + .description = COMPOUND_STRING( + "Recognizing their own weakness, they\n" + "maintain huge flocks. Fierce scuffles\n" + "break out between various flocks.\n" + "When alone, a Staravia cries noisily."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Staravia, 40, 48), + FRONT_PIC_FEMALE(Staravia, 40, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Staravia, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Staravia, 64, 64), + BACK_PIC_FEMALE(Staravia, 64, 64), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Staravia), + ICON(Staravia, 0), + .footprint = gMonFootprint_Staravia, + LEARNSETS(Staravia), + .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_STARAPTOR}), + }, + + [SPECIES_STARAPTOR] = + { + .baseHP = 85, + .baseAttack = 120, + .baseDefense = 70, + .baseSpeed = 100, + .baseSpAttack = 50, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 60 : 50, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 45, + .expYield = 218, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_RECKLESS }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Staraptor"), + .cryId = CRY_STARAPTOR, + .natDexNum = NATIONAL_DEX_STARAPTOR, + .categoryName = _("Predator"), + .height = 12, + .weight = 249, + .description = COMPOUND_STRING( + "When Staravia evolve into Staraptor,\n" + "they leave the flock to live alone. It has\n" + "a savage nature. It will courageously\n" + "challenge foes that are much larger."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Staraptor, 56, 64), + FRONT_PIC_FEMALE(Staraptor, 56, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Staraptor, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Staraptor, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Staraptor), + ICON(Staraptor, 0), + .footprint = gMonFootprint_Staraptor, + LEARNSETS(Staraptor), + }, +#endif //P_FAMILY_STARLY + +#if P_FAMILY_BIDOOF + [SPECIES_BIDOOF] = + { + .baseHP = 59, + .baseAttack = 45, + .baseDefense = 40, + .baseSpeed = 31, + .baseSpAttack = 35, + .baseSpDefense = 40, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 255, + .expYield = 50, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SIMPLE, ABILITY_UNAWARE, ABILITY_MOODY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Bidoof"), + .cryId = CRY_BIDOOF, + .natDexNum = NATIONAL_DEX_BIDOOF, + .categoryName = _("Plump Mouse"), + .height = 5, + .weight = 200, + .description = COMPOUND_STRING( + "A comparison revealed that Bidoof's front\n" + "teeth grow at the same rate as Rattata's.\n" + "It constantly gnaws on logs and rocks to\n" + "whittle down its front teeth."), + .pokemonScale = 432, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Bidoof, 40, 40), + FRONT_PIC_FEMALE(Bidoof, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Bidoof, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(Bidoof, 64, 40), + BACK_PIC_FEMALE(Bidoof, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Bidoof), + ICON(Bidoof, 2), + .footprint = gMonFootprint_Bidoof, + LEARNSETS(Bidoof), + .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_BIBAREL}), + }, + + [SPECIES_BIBAREL] = + { + .baseHP = 79, + .baseAttack = 85, + .baseDefense = 60, + .baseSpeed = 71, + .baseSpAttack = 55, + .baseSpDefense = 60, + .types = { TYPE_NORMAL, TYPE_WATER }, + .catchRate = 127, + .expYield = 144, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SIMPLE, ABILITY_UNAWARE, ABILITY_MOODY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Bibarel"), + .cryId = CRY_BIBAREL, + .natDexNum = NATIONAL_DEX_BIBAREL, + .categoryName = _("Beaver"), + .height = 10, + .weight = 315, + .description = COMPOUND_STRING( + "It makes its nest by damming streams\n" + "with bark and mud. A river dammed by\n" + "Bibarel will never overflow its banks,\n" + "which is appreciated by people nearby."), + .pokemonScale = 305, + .pokemonOffset = 8, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Bibarel, 56, 48), + FRONT_PIC_FEMALE(Bibarel, 56, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Bibarel, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Bibarel, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Bibarel), + ICON(Bibarel, 2), + .footprint = gMonFootprint_Bibarel, + LEARNSETS(Bibarel), + }, +#endif //P_FAMILY_BIDOOF + +#if P_FAMILY_KRICKETOT + [SPECIES_KRICKETOT] = + { + .baseHP = 37, + .baseAttack = 25, + .baseDefense = 41, + .baseSpeed = 25, + .baseSpAttack = 25, + .baseSpDefense = 41, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 255, + .expYield = 39, + .evYield_Defense = 1, + .itemRare = ITEM_METRONOME, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_RUN_AWAY }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Kricketot"), + .cryId = CRY_KRICKETOT, + .natDexNum = NATIONAL_DEX_KRICKETOT, + .categoryName = _("Cricket"), + .height = 3, + .weight = 22, + .description = COMPOUND_STRING( + "It shakes its head back to front,\n" + "causing its antennae to hit each other\n" + "and sound like a xylophone.\n" + "These sounds are fall hallmarks."), + .pokemonScale = 530, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Kricketot, 48, 48), + FRONT_PIC_FEMALE(Kricketot, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Kricketot, + .frontAnimId = ANIM_H_JUMPS, + BACK_PIC(Kricketot, 48, 56), + BACK_PIC_FEMALE(Kricketot, 48, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Kricketot), + ICON(Kricketot, 2), + .footprint = gMonFootprint_Kricketot, + LEARNSETS(Kricketot), + .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_KRICKETUNE}), + }, + + [SPECIES_KRICKETUNE] = + { + .baseHP = 77, + .baseAttack = 85, + .baseDefense = 51, + .baseSpeed = 65, + .baseSpAttack = 55, + .baseSpDefense = 51, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 45, + .expYield = 134, + .evYield_Attack = 2, + .itemRare = ITEM_METRONOME, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_NONE, ABILITY_TECHNICIAN }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Kricketune"), + .cryId = CRY_KRICKETUNE, + .natDexNum = NATIONAL_DEX_KRICKETUNE, + .categoryName = _("Cricket"), + .height = 10, + .weight = 255, + .description = COMPOUND_STRING( + "It signals its emotions with its melodies.\n" + "There is a village that hosts a contest\n" + "based on the amazingly variable cries\n" + "of this Pokémon."), + .pokemonScale = 305, + .pokemonOffset = 8, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Kricketune, 56, 56), + FRONT_PIC_FEMALE(Kricketune, 56, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Kricketune, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(Kricketune, 56, 64), + BACK_PIC_FEMALE(Kricketune, 56, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Kricketune), + ICON(Kricketune, 2), + .footprint = gMonFootprint_Kricketune, + LEARNSETS(Kricketune), + }, +#endif //P_FAMILY_KRICKETOT + +#if P_FAMILY_SHINX + [SPECIES_SHINX] = + { + .baseHP = 45, + .baseAttack = 65, + .baseDefense = 34, + .baseSpeed = 45, + .baseSpAttack = 40, + .baseSpDefense = 34, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 235, + .expYield = 53, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_RIVALRY, ABILITY_INTIMIDATE, ABILITY_GUTS }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Shinx"), + .cryId = CRY_SHINX, + .natDexNum = NATIONAL_DEX_SHINX, + .categoryName = _("Flash"), + .height = 5, + .weight = 95, + .description = COMPOUND_STRING( + "It rapidly contracts and relaxes its\n" + "muscles to generate electricity. Its\n" + "body shines if endangered. It flees\n" + "while the foe is momentarily blinded."), + .pokemonScale = 432, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Shinx, 48, 40), + FRONT_PIC_FEMALE(Shinx, 48, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Shinx, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Shinx, 64, 48), + BACK_PIC_FEMALE(Shinx, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Shinx), + ICON(Shinx, 0), + .footprint = gMonFootprint_Shinx, + LEARNSETS(Shinx), + .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_LUXIO}), + }, + + [SPECIES_LUXIO] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 49, + .baseSpeed = 60, + .baseSpAttack = 60, + .baseSpDefense = 49, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 120, + .expYield = 127, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 100, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_RIVALRY, ABILITY_INTIMIDATE, ABILITY_GUTS }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Luxio"), + .cryId = CRY_LUXIO, + .natDexNum = NATIONAL_DEX_LUXIO, + .categoryName = _("Spark"), + .height = 9, + .weight = 305, + .description = COMPOUND_STRING( + "Strong electricity courses through the\n" + "tips of its sharp claws. A light scratch\n" + "has enough amperage to cause fainting\n" + "in foes."), + .pokemonScale = 338, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Luxio, 48, 48), + FRONT_PIC_FEMALE(Luxio, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Luxio, + .frontAnimId = ANIM_H_STRETCH, + BACK_PIC(Luxio, 64, 64), + BACK_PIC_FEMALE(Luxio, 64, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Luxio), + ICON(Luxio, 0), + .footprint = gMonFootprint_Luxio, + LEARNSETS(Luxio), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_LUXRAY}), + }, + + [SPECIES_LUXRAY] = + { + .baseHP = 80, + .baseAttack = 120, + .baseDefense = 79, + .baseSpeed = 70, + .baseSpAttack = 95, + .baseSpDefense = 79, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 45, + .expYield = 235, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_RIVALRY, ABILITY_INTIMIDATE, ABILITY_GUTS }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Luxray"), + .cryId = CRY_LUXRAY, + .natDexNum = NATIONAL_DEX_LUXRAY, + .categoryName = _("Gleam Eyes"), + .height = 14, + .weight = 420, + .description = COMPOUND_STRING( + "It has eyes which can see through\n" + "anything. Luxray's ability to see\n" + "through objects comes in handy when\n" + "it's scouting for danger."), + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, + .trainerOffset = 0, + FRONT_PIC(Luxray, 64, 64), + FRONT_PIC_FEMALE(Luxray, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Luxray, + .frontAnimId = ANIM_GLOW_YELLOW, + BACK_PIC(Luxray, 64, 64), + BACK_PIC_FEMALE(Luxray, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Luxray), + ICON(Luxray, 0), + .footprint = gMonFootprint_Luxray, + LEARNSETS(Luxray), + }, +#endif //P_FAMILY_SHINX + +#if P_FAMILY_CRANIDOS + [SPECIES_CRANIDOS] = + { + .baseHP = 67, + .baseAttack = 125, + .baseDefense = 40, + .baseSpeed = 58, + .baseSpAttack = 30, + .baseSpDefense = 30, + .types = { TYPE_ROCK, TYPE_ROCK }, + .catchRate = 45, + .expYield = 70, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, + .abilities = { ABILITY_MOLD_BREAKER, ABILITY_NONE, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Cranidos"), + .cryId = CRY_CRANIDOS, + .natDexNum = NATIONAL_DEX_CRANIDOS, + .categoryName = _("Head Butt"), + .height = 9, + .weight = 315, + .description = COMPOUND_STRING( + "A lifelong jungle dweller from 100 million\n" + "years ago, its skull is as hard as iron. \n" + "It would snap obstructing trees with\n" + "headbutts."), + .pokemonScale = 338, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cranidos, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Cranidos, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Cranidos, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Cranidos), + ICON(Cranidos, 0), + .footprint = gMonFootprint_Cranidos, + LEARNSETS(Cranidos), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_RAMPARDOS}), + }, + + [SPECIES_RAMPARDOS] = + { + .baseHP = 97, + .baseAttack = 165, + .baseDefense = 60, + .baseSpeed = 58, + .baseSpAttack = 65, + .baseSpDefense = 50, + .types = { TYPE_ROCK, TYPE_ROCK }, + .catchRate = 45, + .expYield = 173, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, + .abilities = { ABILITY_MOLD_BREAKER, ABILITY_NONE, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Rampardos"), + .cryId = CRY_RAMPARDOS, + .natDexNum = NATIONAL_DEX_RAMPARDOS, + .categoryName = _("Head Butt"), + .height = 16, + .weight = 1025, + .description = COMPOUND_STRING( + "The result of repeated headbutts\n" + "is a skull grown thick and hard.\n" + "However, its brain has shrunk in size\n" + "compared with Cranidos's."), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + FRONT_PIC(Rampardos, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Rampardos, + .frontAnimId = ANIM_V_SHAKE_TWICE, + BACK_PIC(Rampardos, 64, 64), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Rampardos), + ICON(Rampardos, 0), + .footprint = gMonFootprint_Rampardos, + LEARNSETS(Rampardos), + }, +#endif //P_FAMILY_CRANIDOS + +#if P_FAMILY_SHIELDON + [SPECIES_SHIELDON] = + { + .baseHP = 30, + .baseAttack = 42, + .baseDefense = 118, + .baseSpeed = 30, + .baseSpAttack = 42, + .baseSpDefense = 88, + .types = { TYPE_ROCK, TYPE_STEEL }, + .catchRate = 45, + .expYield = 70, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, + .abilities = { ABILITY_STURDY, ABILITY_NONE, ABILITY_SOUNDPROOF }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Shieldon"), + .cryId = CRY_SHIELDON, + .natDexNum = NATIONAL_DEX_SHIELDON, + .categoryName = _("Shield"), + .height = 5, + .weight = 570, + .description = COMPOUND_STRING( + "This Pokémon lived in primeval jungles.\n" + "Few enemies would have been willing to\n" + "square off against its heavily armored\n" + "face, so it's thought."), + .pokemonScale = 432, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Shieldon, 40, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Shieldon, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Shieldon, 56, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Shieldon), + ICON(Shieldon, 1), + .footprint = gMonFootprint_Shieldon, + LEARNSETS(Shieldon), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_BASTIODON}), + }, + + [SPECIES_BASTIODON] = + { + .baseHP = 60, + .baseAttack = 52, + .baseDefense = 168, + .baseSpeed = 30, + .baseSpAttack = 47, + .baseSpDefense = 138, + .types = { TYPE_ROCK, TYPE_STEEL }, + .catchRate = 45, + .expYield = 173, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, + .abilities = { ABILITY_STURDY, ABILITY_NONE, ABILITY_SOUNDPROOF }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Bastiodon"), + .cryId = CRY_BASTIODON, + .natDexNum = NATIONAL_DEX_BASTIODON, + .categoryName = _("Shield"), + .height = 13, + .weight = 1495, + .description = COMPOUND_STRING( + "Their rock-hard faces serve to protect\n" + "them from any frontral attacks.\n" + "When attacked, they form a wall.\n" + "They shielded their young in that way."), + .pokemonScale = 272, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Bastiodon, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Bastiodon, + .frontAnimId = ANIM_BACK_AND_LUNGE, + BACK_PIC(Bastiodon, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Bastiodon), + ICON(Bastiodon, 1), + .footprint = gMonFootprint_Bastiodon, + LEARNSETS(Bastiodon), + }, +#endif //P_FAMILY_SHIELDON + +#if P_FAMILY_BURMY +#define BURMY_MISC_INFO \ + .baseHP = 40, \ + .baseAttack = 29, \ + .baseDefense = 45, \ + .baseSpeed = 36, \ + .baseSpAttack = 29, \ + .baseSpDefense = 45, \ + .types = { TYPE_BUG, TYPE_BUG }, \ + .catchRate = 120, \ + .expYield = 45, \ + .evYield_SpDefense = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, \ + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_OVERCOAT }, \ + .speciesName = _("Burmy"), \ + .cryId = CRY_BURMY, \ + .natDexNum = NATIONAL_DEX_BURMY, \ + .categoryName = _("Bagworm"), \ + .height = 2, \ + .weight = 34, \ + .pokemonScale = 682, \ + .pokemonOffset = 24, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontAnimFrames = sAnims_Burmy, \ + .frontAnimId = ANIM_V_STRETCH, \ + .enemyMonElevation = 10, \ + .backAnimId = BACK_ANIM_H_SHAKE, \ + .footprint = gMonFootprint_Burmy, \ + LEARNSETS(Burmy), \ + .formSpeciesIdTable = sBurmyFormSpeciesIdTable, \ + .formChangeTable = sBurmyFormChangeTable + + [SPECIES_BURMY_PLANT_CLOAK] = + { + BURMY_MISC_INFO, + .bodyColor = BODY_COLOR_GREEN, + .description = COMPOUND_STRING( + "If its cloak is even slightly damaged, it\n" + "will immediately repair it with whatever is\n" + "near at hand. The Pokémon within the cloak\n" + "is scrawny and vulnerable to the cold."), + FRONT_PIC(BurmyPlantCloak, 32, 56), + .frontPicYOffset = 13, + BACK_PIC(BurmyPlantCloak, 40, 56), + .backPicYOffset = 6, + PALETTES(BurmyPlantCloak), + ICON(BurmyPlantCloak, 1), + .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_PLANT_CLOAK}, + {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM}), + }, + + [SPECIES_BURMY_SANDY_CLOAK] = + { + BURMY_MISC_INFO, + .bodyColor = BODY_COLOR_BROWN, + .description = COMPOUND_STRING( + "It weaves a cloak together with sand, mud,\n" + "and silk it spits out. This earthen cloak\n" + "is ruined by wind and rain, so the Pokémon\n" + "hides away in caves and other such places."), + FRONT_PIC(BurmySandyCloak, 32, 56), + .frontPicYOffset = 12, + BACK_PIC(BurmySandyCloak, 32, 56), + .backPicYOffset = 7, + PALETTES(BurmySandyCloak), + ICON(BurmySandyCloak, 1), + .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_SANDY_CLOAK}, + {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM}), + }, + + [SPECIES_BURMY_TRASH_CLOAK] = + { + BURMY_MISC_INFO, + .bodyColor = BODY_COLOR_RED, + .description = COMPOUND_STRING( + "When confronted by a lack of other\n" + "materials, Burmy will create its cloak\n" + "using dust and refuse. The cloak seems to\n" + "be more comfortable than one would think."), + FRONT_PIC(BurmyTrashCloak, 32, 56), + .frontPicYOffset = 8, + BACK_PIC(BurmyTrashCloak, 40, 64), + .backPicYOffset = 0, + PALETTES(BurmyTrashCloak), + ICON(BurmyTrashCloak, 0), + .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 20, SPECIES_WORMADAM_TRASH_CLOAK}, + {EVO_LEVEL_MALE, 20, SPECIES_MOTHIM}), + }, + +#define WORMADAM_MISC_INFO \ + .catchRate = 45, \ + .expYield = 148, \ + .itemRare = ITEM_SILVER_POWDER, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, \ + .abilities = { ABILITY_ANTICIPATION, ABILITY_NONE, ABILITY_OVERCOAT }, \ + .speciesName = _("Wormadam"), \ + .cryId = CRY_WORMADAM, \ + .natDexNum = NATIONAL_DEX_WORMADAM, \ + .categoryName = _("Bagworm"), \ + .height = 5, \ + .weight = 65, \ + .pokemonScale = 432, \ + .pokemonOffset = 13, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontPicYOffset = 10, \ + .frontAnimFrames = sAnims_Wormadam, \ + .frontAnimId = ANIM_SWING_CONVEX_FAST_SHORT, \ + .enemyMonElevation = 8, \ + .backPicYOffset = 2, \ + .backAnimId = BACK_ANIM_V_SHAKE, \ + .footprint = gMonFootprint_Wormadam, \ + .formSpeciesIdTable = sWormadamFormSpeciesIdTable + + [SPECIES_WORMADAM_PLANT_CLOAK] = + { + WORMADAM_MISC_INFO, + .baseHP = 60, + .baseAttack = 59, + .baseDefense = 85, + .baseSpeed = 36, + .baseSpAttack = 79, + .baseSpDefense = 105, + .types = { TYPE_BUG, TYPE_GRASS }, + .evYield_SpDefense = 2, + .bodyColor = BODY_COLOR_GREEN, + .description = COMPOUND_STRING( + "Its appearance changes depending\n" + "on where Burmy evolved. The materials\n" + "on hand become a part of its body.\n" + "The cloak is never shed."), + FRONT_PIC(WormadamPlantCloak, 48, 56), + BACK_PIC(WormadamPlantCloak, 56, 64), + PALETTES(WormadamPlantCloak), + ICON(WormadamPlantCloak, 1), + LEARNSETS(WormadamPlantCloak), + }, + + [SPECIES_WORMADAM_SANDY_CLOAK] = + { + WORMADAM_MISC_INFO, + .baseHP = 60, + .baseAttack = 79, + .baseDefense = 105, + .baseSpeed = 36, + .baseSpAttack = 59, + .baseSpDefense = 85, + .types = { TYPE_BUG, TYPE_GROUND }, + .evYield_Defense = 2, + .bodyColor = BODY_COLOR_BROWN, + .description = COMPOUND_STRING( + "Its earthen skin is reasonably hard, it has\n" + "no problem repelling a Starly's pecking.\n" + "It is said that a Wormadam that evolves\n" + "on a cold day will have a thicker cloak."), + FRONT_PIC(WormadamSandyCloak, 40, 56), + BACK_PIC(WormadamSandyCloak, 56, 64), + PALETTES(WormadamSandyCloak), + ICON(WormadamSandyCloak, 1), + LEARNSETS(WormadamSandyCloak), + }, + + [SPECIES_WORMADAM_TRASH_CLOAK] = + { + WORMADAM_MISC_INFO, + .baseHP = 60, + .baseAttack = 69, + .baseDefense = 95, + .baseSpeed = 36, + .baseSpAttack = 69, + .baseSpDefense = 95, + .types = { TYPE_BUG, TYPE_STEEL }, + .evYield_Defense = 1, + .evYield_SpDefense = 1, + .bodyColor = BODY_COLOR_RED, + .description = COMPOUND_STRING( + "Its body, composed of refuse, blends in to\n" + "the scenery enough to be inconspicuous.\n" + "This seems to be the perfect way for it to\n" + "evade the detection of predators."), + FRONT_PIC(WormadamTrashCloak, 48, 56), + BACK_PIC(WormadamTrashCloak, 64, 64), + PALETTES(WormadamTrashCloak), + ICON(WormadamTrashCloak, 0), + LEARNSETS(WormadamTrashCloak), + }, + + [SPECIES_MOTHIM] = + { + .baseHP = 70, + .baseAttack = 94, + .baseDefense = 50, + .baseSpeed = 66, + .baseSpAttack = 94, + .baseSpDefense = 50, + .types = { TYPE_BUG, TYPE_FLYING }, + .catchRate = 45, + .expYield = 148, + .evYield_Attack = 1, + .evYield_SpAttack = 1, + .itemRare = ITEM_SILVER_POWDER, + .genderRatio = MON_MALE, + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_NONE, ABILITY_TINTED_LENS }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Mothim"), + .cryId = CRY_MOTHIM, + .natDexNum = NATIONAL_DEX_MOTHIM, + .categoryName = _("Moth"), + .height = 9, + .weight = 233, + .description = COMPOUND_STRING( + "It does not keep a nest. While it\n" + "loves floral honey, it won't gather\n" + "any itself. Instead, it plots to steal\n" + "honey collected by Combee."), + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Mothim, 64, 64), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Mothim, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + .enemyMonElevation = 10, + BACK_PIC(Mothim, 64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Mothim), + ICON(Mothim, 0), + .footprint = gMonFootprint_Mothim, + LEARNSETS(Mothim), + }, +#endif //P_FAMILY_BURMY + +#if P_FAMILY_COMBEE + [SPECIES_COMBEE] = + { + .baseHP = 30, + .baseAttack = 30, + .baseDefense = 42, + .baseSpeed = 70, + .baseSpAttack = 30, + .baseSpDefense = 42, + .types = { TYPE_BUG, TYPE_FLYING }, + .catchRate = 120, + .expYield = 49, + .evYield_Speed = 1, + .itemRare = ITEM_HONEY, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_HONEY_GATHER, ABILITY_NONE, ABILITY_HUSTLE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Combee"), + .cryId = CRY_COMBEE, + .natDexNum = NATIONAL_DEX_COMBEE, + .categoryName = _("Tiny Bee"), + .height = 3, + .weight = 55, + .description = COMPOUND_STRING( + "A Pokémon formed by three others.\n" + "It constantly gathers honey from flowers\n" + "to please Vespiquen. At night, they\n" + "cluster to form a beehive and sleep."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Combee, 64, 40), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Combee, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 15, + BACK_PIC(Combee, 64, 48), + .backPicYOffset = 22, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Combee), + PALETTE_FEMALE(Combee), + ICON(Combee, 0), + .footprint = gMonFootprint_Combee, + LEARNSETS(Combee), + .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 21, SPECIES_VESPIQUEN}), + }, + + [SPECIES_VESPIQUEN] = + { + .baseHP = 70, + .baseAttack = 80, + .baseDefense = 102, + .baseSpeed = 40, + .baseSpAttack = 80, + .baseSpDefense = 102, + .types = { TYPE_BUG, TYPE_FLYING }, + .catchRate = 45, + .expYield = 166, + .evYield_Defense = 1, + .evYield_SpDefense = 1, + .itemRare = ITEM_POISON_BARB, + .genderRatio = MON_FEMALE, + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Vespiquen"), + .cryId = CRY_VESPIQUEN, + .natDexNum = NATIONAL_DEX_VESPIQUEN, + .categoryName = _("Beehive"), + .height = 12, + .weight = 385, + .description = COMPOUND_STRING( + "It houses its colony in cells in its body\n" + "and releases various pheromones to\n" + "make those grubs do its bidding.\n" + "There is only one in a colony."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Vespiquen, 48, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Vespiquen, + .frontAnimId = ANIM_LUNGE_GROW, + .enemyMonElevation = 4, + BACK_PIC(Vespiquen, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + PALETTES(Vespiquen), + ICON(Vespiquen, 0), + .footprint = gMonFootprint_Vespiquen, + LEARNSETS(Vespiquen), + }, +#endif //P_FAMILY_COMBEE + +#if P_FAMILY_PACHIRISU + [SPECIES_PACHIRISU] = + { + .baseHP = 60, + .baseAttack = 45, + .baseDefense = 70, + .baseSpeed = 95, + .baseSpAttack = 45, + .baseSpDefense = 90, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 200, + .expYield = 142, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = 100, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_RUN_AWAY, ABILITY_PICKUP, ABILITY_VOLT_ABSORB }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Pachirisu"), + .cryId = CRY_PACHIRISU, + .natDexNum = NATIONAL_DEX_PACHIRISU, + .categoryName = _("EleSquirrel"), + .height = 4, + .weight = 39, + .description = COMPOUND_STRING( + "A pair may be seen rubbing their cheek\n" + "pouches together in an effort to share\n" + "stored electricity. It stores them with\n" + "berries in tree holes."), + .pokemonScale = 491, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pachirisu, 48, 56), + FRONT_PIC_FEMALE(Pachirisu, 48, 56), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Pachirisu, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Pachirisu, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(Pachirisu), + ICON(Pachirisu, 0), + .footprint = gMonFootprint_Pachirisu, + LEARNSETS(Pachirisu), + }, +#endif //P_FAMILY_PACHIRISU + +#if P_FAMILY_BUIZEL + [SPECIES_BUIZEL] = + { + .baseHP = 55, + .baseAttack = 65, + .baseDefense = 35, + .baseSpeed = 85, + .baseSpAttack = 60, + .baseSpDefense = 30, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 190, + .expYield = 66, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_WATER_VEIL }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Buizel"), + .cryId = CRY_BUIZEL, + .natDexNum = NATIONAL_DEX_BUIZEL, + .categoryName = _("Sea Weasel"), + .height = 7, + .weight = 295, + .description = COMPOUND_STRING( + "It inflates its flotation sac, keeping its\n" + "face above water in order to watch for\n" + "prey movement. It swims by rotating its\n" + "two tails like a screw."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Buizel, 56, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Buizel, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Buizel, 64, 48), + BACK_PIC_FEMALE(Buizel, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Buizel), + ICON(Buizel, 0), + .footprint = gMonFootprint_Buizel, + LEARNSETS(Buizel), + .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_FLOATZEL}), + }, + + [SPECIES_FLOATZEL] = + { + .baseHP = 85, + .baseAttack = 105, + .baseDefense = 55, + .baseSpeed = 115, + .baseSpAttack = 85, + .baseSpDefense = 50, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 75, + .expYield = 173, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_WATER_VEIL }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Floatzel"), + .cryId = CRY_FLOATZEL, + .natDexNum = NATIONAL_DEX_FLOATZEL, + .categoryName = _("Sea Weasel"), + .height = 11, + .weight = 335, + .description = COMPOUND_STRING( + "Its flotation sac developed as a result\n" + "of pursuing aquatic prey. It can double\n" + "as a rubber raft. It assists in the rescues\n" + "of drowning people."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Floatzel, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Floatzel, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + BACK_PIC(Floatzel, 64, 64), + BACK_PIC_FEMALE(Floatzel, 64, 64), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Floatzel), + ICON(Floatzel, 0), + .footprint = gMonFootprint_Floatzel, + LEARNSETS(Floatzel), + }, +#endif //P_FAMILY_BUIZEL + +#if P_FAMILY_CHERUBI + [SPECIES_CHERUBI] = + { + .baseHP = 45, + .baseAttack = 35, + .baseDefense = 45, + .baseSpeed = 35, + .baseSpAttack = 62, + .baseSpDefense = 53, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 190, + .expYield = 55, + .evYield_SpAttack = 1, + .itemRare = ITEM_MIRACLE_SEED, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Cherubi"), + .cryId = CRY_CHERUBI, + .natDexNum = NATIONAL_DEX_CHERUBI, + .categoryName = _("Cherry"), + .height = 4, + .weight = 33, + .description = COMPOUND_STRING( + "The small ball holds the nutrients needed\n" + "for evolution. Apparently, it is also very\n" + "sweet and tasty. Pokémon like Starly and\n" + "Taillow try to peck it off."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cherubi, 40, 32), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Cherubi, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Cherubi, 48, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Cherubi), + ICON(Cherubi, 1), + .footprint = gMonFootprint_Cherubi, + LEARNSETS(Cherubi), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_CHERRIM_OVERCAST}), + }, + +#define CHERRIM_MISC_INFO \ + .baseHP = 70, \ + .baseAttack = 60, \ + .baseDefense = 70, \ + .baseSpeed = 85, \ + .baseSpAttack = 87, \ + .baseSpDefense = 78, \ + .types = { TYPE_GRASS, TYPE_GRASS }, \ + .catchRate = 75, \ + .expYield = 158, \ + .evYield_SpAttack = 2, \ + .itemRare = ITEM_MIRACLE_SEED, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_GRASS }, \ + .abilities = { ABILITY_FLOWER_GIFT, ABILITY_NONE }, \ + .speciesName = _("Cherrim"), \ + .cryId = CRY_CHERRIM, \ + .natDexNum = NATIONAL_DEX_CHERRIM, \ + .categoryName = _("Blossom"), \ + .height = 5, \ + .weight = 93, \ + .pokemonScale = 432, \ + .pokemonOffset = 13, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Cherrim, \ + LEARNSETS(Cherrim), \ + .formSpeciesIdTable = sCherrimFormSpeciesIdTable, \ + .formChangeTable = sCherrimFormChangeTable + + [SPECIES_CHERRIM_OVERCAST] = + { + CHERRIM_MISC_INFO, + .bodyColor = BODY_COLOR_PURPLE, + .description = COMPOUND_STRING( + "It's motionless, save for the occasional\n" + "quiver. A rich array of Pokémon can be\n" + "found gathered around it, drawn by the\n" + "scent exuded from Cherrim's folded petals."), + FRONT_PIC(CherrimOvercast, 32, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_CherrimOvercast, + .frontAnimId = ANIM_DEEP_V_SQUISH_AND_BOUNCE, + BACK_PIC(CherrimOvercast, 40, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(CherrimOvercast), + ICON(CherrimOvercast, 0), + }, + + [SPECIES_CHERRIM_SUNSHINE] = + { + CHERRIM_MISC_INFO, + .bodyColor = BODY_COLOR_PINK, + .description = COMPOUND_STRING( + "Cherrim takes this form on sunny days.\n" + "Its faint scent entices bug Pokémon to it.\n" + "It immediately closes its petals and\n" + "becomes immobile once the sun hides."), + FRONT_PIC(CherrimSunshine, 48, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_CherrimSunshine, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + BACK_PIC(CherrimSunshine, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(CherrimSunshine), + ICON(CherrimSunshine, 1), + }, +#endif //P_FAMILY_CHERUBI + +#if P_FAMILY_SHELLOS +#define SHELLOS_MISC_INFO \ + .baseHP = 76, \ + .baseAttack = 48, \ + .baseDefense = 48, \ + .baseSpeed = 34, \ + .baseSpAttack = 57, \ + .baseSpDefense = 62, \ + .types = { TYPE_WATER, TYPE_WATER }, \ + .catchRate = 190, \ + .expYield = 65, \ + .evYield_HP = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS }, \ + .abilities = { ABILITY_STICKY_HOLD, ABILITY_STORM_DRAIN, ABILITY_SAND_FORCE }, \ + .speciesName = _("Shellos"), \ + .cryId = CRY_SHELLOS, \ + .natDexNum = NATIONAL_DEX_SHELLOS, \ + .categoryName = _("Sea Slug"), \ + .height = 3, \ + .weight = 63, \ + .pokemonScale = 530, \ + .pokemonOffset = 13, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontAnimFrames = sAnims_Shellos, \ + .frontAnimId = ANIM_V_STRETCH, \ + .backPicYOffset = 8, \ + .backAnimId = BACK_ANIM_H_SPRING, \ + .footprint = gMonFootprint_Shellos, \ + LEARNSETS(Shellos), \ + .formSpeciesIdTable = sShellosFormSpeciesIdTable + + [SPECIES_SHELLOS_WEST_SEA] = + { + SHELLOS_MISC_INFO, + .bodyColor = BODY_COLOR_PURPLE, + .description = COMPOUND_STRING( + "It oozes a purple fluid to deter enemies.\n" + "While harmless, the fluid is awfully sticky.\n" + "Apparently, there are more West Sea\n" + "Shellos now than there were in the past."), + FRONT_PIC(ShellosWestSea, 40, 40), + .frontPicYOffset = 13, + BACK_PIC(ShellosWestSea, 40, 56), + PALETTES(ShellosWestSea), + ICON(ShellosWestSea, 0), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GASTRODON_WEST_SEA}), + }, + + [SPECIES_SHELLOS_EAST_SEA] = + { + SHELLOS_MISC_INFO, + .bodyColor = BODY_COLOR_BLUE, + .description = COMPOUND_STRING( + "It's capable of spending a limited amount\n" + "of time on land until their skin dries out.\n" + "One theory suggests that living in cold\n" + "seas causes Shellos to take on this form."), + FRONT_PIC(ShellosEastSea, 40, 40), + .frontPicYOffset = 14, + BACK_PIC(ShellosEastSea, 56, 48), + PALETTES(ShellosEastSea), + ICON(ShellosEastSea, 0), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GASTRODON_EAST_SEA}), + }, + +#define GASTRODON_MISC_INFO \ + .baseHP = 111, \ + .baseAttack = 83, \ + .baseDefense = 68, \ + .baseSpeed = 39, \ + .baseSpAttack = 92, \ + .baseSpDefense = 82, \ + .types = { TYPE_WATER, TYPE_GROUND }, \ + .catchRate = 75, \ + .expYield = 166, \ + .evYield_HP = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS }, \ + .abilities = { ABILITY_STICKY_HOLD, ABILITY_STORM_DRAIN, ABILITY_SAND_FORCE }, \ + .speciesName = _("Gastrodon"), \ + .cryId = CRY_GASTRODON, \ + .natDexNum = NATIONAL_DEX_GASTRODON, \ + .categoryName = _("Sea Slug"), \ + .height = 9, \ + .weight = 299, \ + .pokemonScale = 338, \ + .pokemonOffset = 8, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontPicYOffset = 8, \ + .frontAnimFrames = sAnims_Gastrodon, \ + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, \ + .backPicYOffset = 3, \ + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, \ + .footprint = gMonFootprint_Gastrodon, \ + LEARNSETS(Gastrodon), \ + .formSpeciesIdTable = sGastrodonFormSpeciesIdTable + + [SPECIES_GASTRODON_WEST_SEA] = + { + GASTRODON_MISC_INFO, + .bodyColor = BODY_COLOR_PURPLE, + .description = COMPOUND_STRING( + "It appears on shallow-water beaches to\n" + "eat sand for nourishment. Should one\n" + "Gastrodon encounter another of a\n" + "different color, a fierce battle will ensue."), + FRONT_PIC(GastrodonWestSea, 48, 48), + BACK_PIC(GastrodonWestSea, 56, 64), + PALETTES(GastrodonWestSea), + ICON(GastrodonWestSea, 0), + }, + + [SPECIES_GASTRODON_EAST_SEA] = + { + GASTRODON_MISC_INFO, + .bodyColor = BODY_COLOR_BLUE, + .description = COMPOUND_STRING( + "Found more often on land than in the sea.\n" + "They normally live in rocky seashores, but\n" + "when cloudy or rainy, they can sometimes\n" + "be found on mountains, far from the sea."), + FRONT_PIC(GastrodonEastSea, 56, 48), + BACK_PIC(GastrodonEastSea, 56, 64), + PALETTES(GastrodonEastSea), + ICON(GastrodonEastSea, 0), + }, +#endif //P_FAMILY_SHELLOS + +#if P_FAMILY_DRIFLOON + [SPECIES_DRIFLOON] = + { + .baseHP = 90, + .baseAttack = 50, + .baseDefense = 34, + .baseSpeed = 70, + .baseSpAttack = 60, + .baseSpDefense = 44, + .types = { TYPE_GHOST, TYPE_FLYING }, + .catchRate = 125, + .expYield = 70, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FLUCTUATING, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_AFTERMATH, ABILITY_UNBURDEN, ABILITY_FLARE_BOOST }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Drifloon"), + .cryId = CRY_DRIFLOON, + .natDexNum = NATIONAL_DEX_DRIFLOON, + .categoryName = _("Balloon"), + .height = 4, + .weight = 12, + .description = COMPOUND_STRING( + "Because of the way it floats aimlessly,\n" + "an old folktale calls it a “Signpost for\n" + "Wandering Spirits.” Children holding\n" + "them sometimes vanish."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Drifloon, 32, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Drifloon, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 5, + BACK_PIC(Drifloon, 40, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Drifloon), + ICON(Drifloon, 2), + .footprint = gMonFootprint_Drifloon, + LEARNSETS(Drifloon), + .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_DRIFBLIM}), + }, + + [SPECIES_DRIFBLIM] = + { + .baseHP = 150, + .baseAttack = 80, + .baseDefense = 44, + .baseSpeed = 80, + .baseSpAttack = 90, + .baseSpDefense = 54, + .types = { TYPE_GHOST, TYPE_FLYING }, + .catchRate = 60, + .expYield = 174, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FLUCTUATING, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_AFTERMATH, ABILITY_UNBURDEN, ABILITY_FLARE_BOOST }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Drifblim"), + .cryId = CRY_DRIFBLIM, + .natDexNum = NATIONAL_DEX_DRIFBLIM, + .categoryName = _("Blimp"), + .height = 12, + .weight = 150, + .description = COMPOUND_STRING( + "Even while under careful observation,\n" + "large flocks of Drifblim flying at dusk\n" + "will inexplicably disappear from view.\n" + "No one knows where they go."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Drifblim, 56, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Drifblim, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 7, + BACK_PIC(Drifblim, 64, 64), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Drifblim), + ICON(Drifblim, 2), + .footprint = gMonFootprint_Drifblim, + LEARNSETS(Drifblim), + }, +#endif //P_FAMILY_DRIFLOON + +#if P_FAMILY_BUNEARY + [SPECIES_BUNEARY] = + { + .baseHP = 55, + .baseAttack = 66, + .baseDefense = 44, + .baseSpeed = 85, + .baseSpAttack = 44, + .baseSpDefense = 56, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 190, + .expYield = 70, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_RUN_AWAY, ABILITY_KLUTZ, ABILITY_LIMBER }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Buneary"), + .cryId = CRY_BUNEARY, + .natDexNum = NATIONAL_DEX_BUNEARY, + .categoryName = _("Rabbit"), + .height = 4, + .weight = 55, + .description = COMPOUND_STRING( + "You can tell how it feels by the way\n" + "it rolls its ears. When it's scared,\n" + "both ears are rolled up. When it senses\n" + "danger, it perks them up."), + .pokemonScale = 491, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Buneary, 32, 64), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Buneary, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + BACK_PIC(Buneary, 64, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Buneary), + ICON(Buneary, 2), + .footprint = gMonFootprint_Buneary, + LEARNSETS(Buneary), + .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_LOPUNNY}), + }, + +#define LOPUNNY_MISC_INFO \ + .catchRate = 60, \ + .evYield_Speed = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = 140, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE }, \ + .bodyColor = BODY_COLOR_BROWN, \ + .speciesName = _("Lopunny"), \ + .natDexNum = NATIONAL_DEX_LOPUNNY, \ + .categoryName = _("Rabbit"), \ + .footprint = gMonFootprint_Lopunny, \ + LEARNSETS(Lopunny), \ + .formSpeciesIdTable = sLopunnyFormSpeciesIdTable, \ + .formChangeTable = sLopunnyFormChangeTable + + [SPECIES_LOPUNNY] = + { + LOPUNNY_MISC_INFO, + .baseHP = 65, + .baseAttack = 76, + .baseDefense = 84, + .baseSpeed = 105, + .baseSpAttack = 54, + .baseSpDefense = 96, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .expYield = 168, + .abilities = { ABILITY_CUTE_CHARM, ABILITY_KLUTZ, ABILITY_LIMBER }, + .cryId = CRY_LOPUNNY, + .height = 12, + .weight = 333, + .description = COMPOUND_STRING( + "An extremely cautious Pokémon.\n" + "It is very conscious of its looks and\n" + "never fails to groom its ears.\n" + "It runs with sprightly jumps."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Lopunny, 56, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Lopunny, + .frontAnimId = ANIM_SHRINK_GROW, + BACK_PIC(Lopunny, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Lopunny), + ICON(Lopunny, 2), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_LOPUNNY_MEGA] = + { + LOPUNNY_MISC_INFO, + .baseHP = 65, + .baseAttack = 136, + .baseDefense = 94, + .baseSpeed = 135, + .baseSpAttack = 54, + .baseSpDefense = 96, + .types = { TYPE_NORMAL, TYPE_FIGHTING }, + .expYield = 203, + .abilities = { ABILITY_SCRAPPY, ABILITY_SCRAPPY, ABILITY_SCRAPPY }, + .cryId = CRY_LOPUNNY_MEGA, + .height = 13, + .weight = 283, + .description = COMPOUND_STRING( + "Mega Evolution awakens its combative\n" + "instincts. It has shed any fur that got in\n" + "the way of its attacks.\n" + "crescent."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(LopunnyMega, 56, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_LopunnyMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(LopunnyMega, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(LopunnyMega), + ICON(LopunnyMega, 2), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BUNEARY + +#if P_FAMILY_GLAMEOW + [SPECIES_GLAMEOW] = + { + .baseHP = 49, + .baseAttack = 55, + .baseDefense = 42, + .baseSpeed = 85, + .baseSpAttack = 42, + .baseSpDefense = 37, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 190, + .expYield = 62, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_LIMBER, ABILITY_OWN_TEMPO, ABILITY_KEEN_EYE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Glameow"), + .cryId = CRY_GLAMEOW, + .natDexNum = NATIONAL_DEX_GLAMEOW, + .categoryName = _("Catty"), + .height = 5, + .weight = 39, + .description = COMPOUND_STRING( + "It is a very fickle Pokémon, which is \n" + "very popular among some. It claws its\n" + "Trainer's nose if it isn't fed and\n" + "purrs when affectionate."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Glameow, 56, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Glameow, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Glameow, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Glameow), + ICON(Glameow, 0), + .footprint = gMonFootprint_Glameow, + LEARNSETS(Glameow), + .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_PURUGLY}), + }, + + [SPECIES_PURUGLY] = + { + .baseHP = 71, + .baseAttack = 82, + .baseDefense = 64, + .baseSpeed = 112, + .baseSpAttack = 64, + .baseSpDefense = 59, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 75, + .expYield = 158, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_THICK_FAT, ABILITY_OWN_TEMPO, ABILITY_DEFIANT }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Purugly"), + .cryId = CRY_PURUGLY, + .natDexNum = NATIONAL_DEX_PURUGLY, + .categoryName = _("Tiger Cat"), + .height = 10, + .weight = 438, + .description = COMPOUND_STRING( + "It is a brazen brute that barges its way\n" + "into another Pokémon's nest and claims\n" + "it as its own. It binds its body with its\n" + "tails to make itself look bigger."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Purugly, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Purugly, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Purugly, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(Purugly), + ICON(Purugly, 0), + .footprint = gMonFootprint_Purugly, + LEARNSETS(Purugly), + }, +#endif //P_FAMILY_GLAMEOW + +#if P_FAMILY_STUNKY + [SPECIES_STUNKY] = + { + .baseHP = 63, + .baseAttack = 63, + .baseDefense = 47, + .baseSpeed = 74, + .baseSpAttack = 41, + .baseSpDefense = 41, + .types = { TYPE_POISON, TYPE_DARK }, + .catchRate = 225, + .expYield = 66, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_STENCH, ABILITY_AFTERMATH, ABILITY_KEEN_EYE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Stunky"), + .cryId = CRY_STUNKY, + .natDexNum = NATIONAL_DEX_STUNKY, + .categoryName = _("Skunk"), + .height = 4, + .weight = 192, + .description = COMPOUND_STRING( + "It protects itself by spraying a\n" + "nose-curling, stinky fluid from its rear\n" + "to repel attackers. The stench lingers\n" + "for 24 hours."), + .pokemonScale = 491, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Stunky, 56, 48), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Stunky, + .frontAnimId = ANIM_TIP_MOVE_FORWARD, + BACK_PIC(Stunky, 64, 64), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Stunky), + ICON(Stunky, 2), + .footprint = gMonFootprint_Stunky, + LEARNSETS(Stunky), + .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_SKUNTANK}), + }, + + [SPECIES_SKUNTANK] = + { + .baseHP = 103, + .baseAttack = 93, + .baseDefense = 67, + .baseSpeed = 84, + .baseSpAttack = 71, + .baseSpDefense = 61, + .types = { TYPE_POISON, TYPE_DARK }, + .catchRate = 60, + .expYield = 168, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_STENCH, ABILITY_AFTERMATH, ABILITY_KEEN_EYE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Skuntank"), + .cryId = CRY_SKUNTANK, + .natDexNum = NATIONAL_DEX_SKUNTANK, + .categoryName = _("Skunk"), + .height = 10, + .weight = 380, + .description = COMPOUND_STRING( + "It attacks by spraying a horribly smelly\n" + "fluid from the tip of its tail. The fluid\n" + "smells worse the longer it is allowed\n" + "to fester."), + .pokemonScale = 305, + .pokemonOffset = 9, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Skuntank, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Skuntank, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Skuntank, 64, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_H_STRETCH, + PALETTES(Skuntank), + ICON(Skuntank, 2), + .footprint = gMonFootprint_Skuntank, + LEARNSETS(Skuntank), + }, +#endif //P_FAMILY_STUNKY + +#if P_FAMILY_BRONZOR + [SPECIES_BRONZOR] = + { + .baseHP = 57, + .baseAttack = 24, + .baseDefense = 86, + .baseSpeed = 23, + .baseSpAttack = 24, + .baseSpDefense = 86, + .types = { TYPE_STEEL, TYPE_PSYCHIC }, + .catchRate = 255, + .expYield = 60, + .evYield_Defense = 1, + .itemRare = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_LEVITATE, ABILITY_HEATPROOF, ABILITY_HEAVY_METAL }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Bronzor"), + .cryId = CRY_BRONZOR, + .natDexNum = NATIONAL_DEX_BRONZOR, + .categoryName = _("Bronze"), + .height = 5, + .weight = 605, + .description = COMPOUND_STRING( + "Implements shaped like it were discovered\n" + "in ancient tombs. There are researchers\n" + "who believe this Pokémon reflected like a\n" + "mirror in the distant past."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Bronzor, 32, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Bronzor, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + .enemyMonElevation = 9, + BACK_PIC(Bronzor, 40, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Bronzor), + ICON(Bronzor, 0), + .footprint = gMonFootprint_Bronzor, + LEARNSETS(Bronzor), + .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_BRONZONG}), + }, + + [SPECIES_BRONZONG] = + { + .baseHP = 67, + .baseAttack = 89, + .baseDefense = 116, + .baseSpeed = 33, + .baseSpAttack = 79, + .baseSpDefense = 116, + .types = { TYPE_STEEL, TYPE_PSYCHIC }, + .catchRate = 90, + .expYield = 175, + .evYield_Defense = 1, + .evYield_SpDefense = 1, + .itemRare = ITEM_METAL_COAT, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_LEVITATE, ABILITY_HEATPROOF, ABILITY_HEAVY_METAL }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Bronzong"), + .cryId = CRY_BRONZONG, + .natDexNum = NATIONAL_DEX_BRONZONG, + .categoryName = _("Bronze Bell"), + .height = 13, + .weight = 1870, + .description = COMPOUND_STRING( + "In ages past, this Pokémon was revered as\n" + "a bringer of rain. One caused a news stir\n" + "when it was dug up at a construction site\n" + "after a 2000-year sleep."), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Bronzong, 56, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Bronzong, + .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, + .enemyMonElevation = 7, + BACK_PIC(Bronzong, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Bronzong), + ICON(Bronzong, 0), + .footprint = gMonFootprint_Bronzong, + LEARNSETS(Bronzong), + }, +#endif //P_FAMILY_BRONZOR + +#if P_FAMILY_CHATOT + [SPECIES_CHATOT] = + { + .baseHP = 76, + .baseAttack = 65, + .baseDefense = 45, + .baseSpeed = 91, + .baseSpAttack = 92, + .baseSpDefense = 42, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 30, + .expYield = 144, + .evYield_Attack = 1, + .itemRare = ITEM_METRONOME, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_TANGLED_FEET, ABILITY_BIG_PECKS }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Chatot"), + .cryId = CRY_CHATOT, + .natDexNum = NATIONAL_DEX_CHATOT, + .categoryName = _("Music Note"), + .height = 5, + .weight = 19, + .description = COMPOUND_STRING( + "It mimics the cries of other Pokémon to\n" + "trick them into thinking it's one of them.\n" + "This way they won't attack it. It can\n" + "also learn and speak human words."), + .pokemonScale = 432, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Chatot, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Chatot, + .frontAnimId = ANIM_V_SHAKE_TWICE, + BACK_PIC(Chatot, 48, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Chatot), + ICON(Chatot, 0), + .footprint = gMonFootprint_Chatot, + LEARNSETS(Chatot), + }, +#endif //P_FAMILY_CHATOT + +#if P_FAMILY_SPIRITOMB + [SPECIES_SPIRITOMB] = + { + .baseHP = 50, + .baseAttack = 92, + .baseDefense = 108, + .baseSpeed = 35, + .baseSpAttack = 92, + .baseSpDefense = 108, + .types = { TYPE_GHOST, TYPE_DARK }, + .catchRate = 100, + .expYield = 170, + .evYield_Defense = 1, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_INFILTRATOR }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Spiritomb"), + .cryId = CRY_SPIRITOMB, + .natDexNum = NATIONAL_DEX_SPIRITOMB, + .categoryName = _("Forbidden"), + .height = 10, + .weight = 1080, + .description = COMPOUND_STRING( + "A Pokémon that was formed by 108 spirits.\n" + "Its constant mischief and misdeeds\n" + "resulted in it being bound to an\n" + "Odd Keystone by a mysterious spell."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Spiritomb, 56, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Spiritomb, + .frontAnimId = ANIM_GROW_IN_STAGES, + BACK_PIC(Spiritomb, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Spiritomb), + ICON(Spiritomb, 5), + .footprint = gMonFootprint_Spiritomb, + LEARNSETS(Spiritomb), + }, +#endif //P_FAMILY_SPIRITOMB + +#if P_FAMILY_GIBLE + [SPECIES_GIBLE] = + { + .baseHP = 58, + .baseAttack = 70, + .baseDefense = 45, + .baseSpeed = 42, + .baseSpAttack = 40, + .baseSpDefense = 45, + .types = { TYPE_DRAGON, TYPE_GROUND }, + .catchRate = 45, + .expYield = 60, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_ROUGH_SKIN }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Gible"), + .cryId = CRY_GIBLE, + .natDexNum = NATIONAL_DEX_GIBLE, + .categoryName = _("Land Shark"), + .height = 7, + .weight = 205, + .description = COMPOUND_STRING( + "It nests in horizontal holes warmed by\n" + "geothermal heat. Foes who stray too\n" + "close can expect to be pounced on\n" + "and bitten."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Gible, 48, 48), + FRONT_PIC_FEMALE(Gible, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Gible, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Gible, 56, 48), + BACK_PIC_FEMALE(Gible, 56, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Gible), + ICON(Gible, 0), + .footprint = gMonFootprint_Gible, + LEARNSETS(Gible), + .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_GABITE}), + }, + + [SPECIES_GABITE] = + { + .baseHP = 68, + .baseAttack = 90, + .baseDefense = 65, + .baseSpeed = 82, + .baseSpAttack = 50, + .baseSpDefense = 55, + .types = { TYPE_DRAGON, TYPE_GROUND }, + .catchRate = 45, + .expYield = 144, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_ROUGH_SKIN }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Gabite"), + .cryId = CRY_GABITE, + .natDexNum = NATIONAL_DEX_GABITE, + .categoryName = _("Cave"), + .height = 14, + .weight = 560, + .description = COMPOUND_STRING( + "Shiny objects are its passion. It can be\n" + "found in its cave, scarcely moving,\n" + "its gaze fixed on the jewels it's amassed\n" + "or Carbink it has caught."), + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, + .trainerOffset = 0, + FRONT_PIC(Gabite, 64, 64), + FRONT_PIC_FEMALE(Gabite, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Gabite, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Gabite, 64, 64), + BACK_PIC_FEMALE(Gabite, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Gabite), + ICON(Gabite, 0), + .footprint = gMonFootprint_Gabite, + LEARNSETS(Gabite), + .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_GARCHOMP}), + }, + +#define GARCHOMP_MISC_INFO \ + .types = { TYPE_DRAGON, TYPE_GROUND }, \ + .catchRate = 45, \ + .evYield_Attack = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 40, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Garchomp"), \ + .natDexNum = NATIONAL_DEX_GARCHOMP, \ + .categoryName = _("Mach"), \ + .height = 19, \ + .weight = 950, \ + .pokemonScale = 256, \ + .pokemonOffset = 1, \ + .trainerScale = 326, \ + .trainerOffset = 4, \ + .footprint = gMonFootprint_Garchomp, \ + LEARNSETS(Garchomp), \ + .formSpeciesIdTable = sGarchompFormSpeciesIdTable, \ + .formChangeTable = sGarchompFormChangeTable + + [SPECIES_GARCHOMP] = + { + GARCHOMP_MISC_INFO, + .baseHP = 108, + .baseAttack = 130, + .baseDefense = 95, + .baseSpeed = 102, + .baseSpAttack = 80, + .baseSpDefense = 85, + .expYield = 270, + .abilities = { ABILITY_SAND_VEIL, ABILITY_NONE, ABILITY_ROUGH_SKIN }, + .cryId = CRY_GARCHOMP, + .description = COMPOUND_STRING( + "When it folds up its body and extends its\n" + "wings, it looks like a jet plane. It is\n" + "covered in fine scales that reduce drag,\n" + "enabling it to fly at high speeds."), + FRONT_PIC(Garchomp, 64, 64), + FRONT_PIC_FEMALE(Garchomp, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Garchomp, + .frontAnimId = ANIM_V_SHAKE_TWICE, + BACK_PIC(Garchomp, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Garchomp), + ICON(Garchomp, 0), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_GARCHOMP_MEGA] = + { + GARCHOMP_MISC_INFO, + .baseHP = 108, + .baseAttack = 170, + .baseDefense = 115, + .baseSpeed = 92, + .baseSpAttack = 120, + .baseSpDefense = 95, + .expYield = 315, + .abilities = { ABILITY_SAND_FORCE, ABILITY_SAND_FORCE, ABILITY_SAND_FORCE }, + .cryId = CRY_GARCHOMP_MEGA, + .description = COMPOUND_STRING( + "Excess energy melted its arms and wings\n" + "into giant scythes, sending it mad with\n" + "rage. It swings its scythes wildly and\n" + "slices the ground to pieces."), + FRONT_PIC(GarchompMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_GarchompMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(GarchompMega, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(GarchompMega), + ICON(GarchompMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_GIBLE + +#if P_FAMILY_RIOLU + [SPECIES_RIOLU] = + { + .baseHP = 40, + .baseAttack = 70, + .baseDefense = 40, + .baseSpeed = 60, + .baseSpAttack = 35, + .baseSpDefense = 40, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 75, + .expYield = 57, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_STEADFAST, ABILITY_INNER_FOCUS, ABILITY_PRANKSTER }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Riolu"), + .cryId = CRY_RIOLU, + .natDexNum = NATIONAL_DEX_RIOLU, + .categoryName = _("Emanation"), + .height = 7, + .weight = 202, + .description = COMPOUND_STRING( + "It can discern the physical and emotional\n" + "states of people, Pokémon, and other\n" + "natural things from the shape of their\n" + "aura waves."), + .pokemonScale = 365, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Riolu, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Riolu, + .frontAnimId = ANIM_RAPID_H_HOPS, + BACK_PIC(Riolu, 64, 64), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Riolu), + ICON(Riolu, 2), + .footprint = gMonFootprint_Riolu, + LEARNSETS(Riolu), + .evolutions = EVOLUTION({EVO_FRIENDSHIP_DAY, 0, SPECIES_LUCARIO}), + }, + +#define LUCARIO_MISC_INFO \ + .types = { TYPE_FIGHTING, TYPE_STEEL }, \ + .catchRate = 45, \ + .evYield_Attack = 1, \ + .evYield_SpAttack = 1, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Lucario"), \ + .natDexNum = NATIONAL_DEX_LUCARIO, \ + .categoryName = _("Aura"), \ + .footprint = gMonFootprint_Lucario, \ + LEARNSETS(Lucario), \ + .formSpeciesIdTable = sLucarioFormSpeciesIdTable, \ + .formChangeTable = sLucarioFormChangeTable + + [SPECIES_LUCARIO] = + { + LUCARIO_MISC_INFO, + .baseHP = 70, + .baseAttack = 110, + .baseDefense = 70, + .baseSpeed = 90, + .baseSpAttack = 115, + .baseSpDefense = 70, + .expYield = 184, + .abilities = { ABILITY_STEADFAST, ABILITY_INNER_FOCUS, ABILITY_JUSTIFIED }, + .cryId = CRY_LUCARIO, + .height = 12, + .weight = 540, + .description = COMPOUND_STRING( + "It understands human speech.\n" + "It is said that no foe can remain invisible\n" + "to Lucario, since it can detect Auras.\n" + "Even foes it could not otherwise see."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Lucario, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Lucario, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Lucario, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Lucario), + ICON(Lucario, 2), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_LUCARIO_MEGA] = + { + LUCARIO_MISC_INFO, + .baseHP = 70, + .baseAttack = 145, + .baseDefense = 88, + .baseSpeed = 112, + .baseSpAttack = 140, + .baseSpDefense = 70, + .expYield = 219, + .abilities = { ABILITY_ADAPTABILITY, ABILITY_ADAPTABILITY, ABILITY_ADAPTABILITY }, + .cryId = CRY_LUCARIO_MEGA, + .height = 13, + .weight = 575, + .description = COMPOUND_STRING( + "It readies itself to face its enemies by\n" + "focusing its mental energies. Its fighting\n" + "style can be summed up in a single word:\n" + "heartless."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(LucarioMega, 48, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_LucarioMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(LucarioMega, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(LucarioMega), + ICON(LucarioMega, 2), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_RIOLU + +#if P_FAMILY_HIPPOPOTAS + [SPECIES_HIPPOPOTAS] = + { + .baseHP = 68, + .baseAttack = 72, + .baseDefense = 78, + .baseSpeed = 32, + .baseSpAttack = 38, + .baseSpDefense = 42, + .types = { TYPE_GROUND, TYPE_GROUND }, + .catchRate = 140, + .expYield = 66, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SAND_STREAM, ABILITY_NONE, ABILITY_SAND_FORCE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Hippopotas"), + .cryId = CRY_HIPPOPOTAS, + .natDexNum = NATIONAL_DEX_HIPPOPOTAS, + .categoryName = _("Hippo"), + .height = 8, + .weight = 495, + .description = COMPOUND_STRING( + "Hippopotas shuts its nostrils tight when\n" + "travelling through sand. Instead of\n" + "perspiration, it expels grains of sand\n" + "from its body."), + .pokemonScale = 366, + .pokemonOffset = 11, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Hippopotas, 64, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Hippopotas, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Hippopotas, 64, 40), + .backPicYOffset = 14, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Hippopotas), + PALETTE_FEMALE(Hippopotas), + ICON(Hippopotas, 1), + #if P_CUSTOM_GENDER_DIFF_ICONS == TRUE + ICON_FEMALE(Hippopotas, 1), + #endif + .footprint = gMonFootprint_Hippopotas, + LEARNSETS(Hippopotas), + .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_HIPPOWDON}), + }, + + [SPECIES_HIPPOWDON] = + { + .baseHP = 108, + .baseAttack = 112, + .baseDefense = 118, + .baseSpeed = 47, + .baseSpAttack = 68, + .baseSpDefense = 72, + .types = { TYPE_GROUND, TYPE_GROUND }, + .catchRate = 60, + .expYield = 184, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SAND_STREAM, ABILITY_NONE, ABILITY_SAND_FORCE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Hippowdon"), + .cryId = CRY_HIPPOWDON, + .natDexNum = NATIONAL_DEX_HIPPOWDON, + .categoryName = _("Heavyweight"), + .height = 20, + .weight = 3000, + .description = COMPOUND_STRING( + "It is surprisingly quick to anger.\n" + "It brandishes its gaping mouth in a\n" + "display of fearsome strength and raises\n" + "vast quantities of sand while attacking."), + .pokemonScale = 261, + .pokemonOffset = 2, + .trainerScale = 334, + .trainerOffset = 4, + FRONT_PIC(Hippowdon, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Hippowdon, + .frontAnimId = ANIM_V_SHAKE_TWICE, + BACK_PIC(Hippowdon, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Hippowdon), + PALETTE_FEMALE(Hippowdon), + ICON(Hippowdon, 1), + #if P_CUSTOM_GENDER_DIFF_ICONS == TRUE + ICON_FEMALE(Hippowdon, 1), + #endif + .footprint = gMonFootprint_Hippowdon, + LEARNSETS(Hippowdon), + }, +#endif //P_FAMILY_HIPPOPOTAS + +#if P_FAMILY_SKORUPI + [SPECIES_SKORUPI] = + { + .baseHP = 40, + .baseAttack = 50, + .baseDefense = 90, + .baseSpeed = 65, + .baseSpAttack = 30, + .baseSpDefense = 55, + .types = { TYPE_POISON, TYPE_BUG }, + .catchRate = 120, + .expYield = 66, + .evYield_Defense = 1, + .itemRare = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_BATTLE_ARMOR, ABILITY_SNIPER, ABILITY_KEEN_EYE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Skorupi"), + .cryId = CRY_SKORUPI, + .natDexNum = NATIONAL_DEX_SKORUPI, + .categoryName = _("Scorpion"), + .height = 8, + .weight = 120, + .description = COMPOUND_STRING( + "It grips prey with its tail claws and\n" + "injects poison. It tenaciously hangs\n" + "on until the poison takes.\n" + "It can survive a year without food."), + .pokemonScale = 366, + .pokemonOffset = 12, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Skorupi, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Skorupi, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(Skorupi, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Skorupi), + ICON(Skorupi, 0), + .footprint = gMonFootprint_Skorupi, + LEARNSETS(Skorupi), + .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_DRAPION}), + }, + + [SPECIES_DRAPION] = + { + .baseHP = 70, + .baseAttack = 90, + .baseDefense = 110, + .baseSpeed = 95, + .baseSpAttack = 60, + .baseSpDefense = 75, + .types = { TYPE_POISON, TYPE_DARK }, + .catchRate = 45, + .expYield = 175, + .evYield_Defense = 2, + .itemRare = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_BATTLE_ARMOR, ABILITY_SNIPER, ABILITY_KEEN_EYE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Drapion"), + .cryId = CRY_DRAPION, + .natDexNum = NATIONAL_DEX_DRAPION, + .categoryName = _("Ogre Scorp"), + .height = 13, + .weight = 615, + .description = COMPOUND_STRING( + "Possessing a sturdy build, it takes\n" + "pride in its strength. It has the power\n" + "in its clawed arms to make scrap\n" + "out of a car."), + .pokemonScale = 272, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Drapion, 64, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Drapion, + .frontAnimId = ANIM_V_JUMPS_BIG, + BACK_PIC(Drapion, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Drapion), + ICON(Drapion, 2), + .footprint = gMonFootprint_Drapion, + LEARNSETS(Drapion), + }, +#endif //P_FAMILY_SKORUPI + +#if P_FAMILY_CROAGUNK + [SPECIES_CROAGUNK] = + { + .baseHP = 48, + .baseAttack = 61, + .baseDefense = 40, + .baseSpeed = 50, + .baseSpAttack = 61, + .baseSpDefense = 40, + .types = { TYPE_POISON, TYPE_FIGHTING }, + .catchRate = 140, + .expYield = 60, + .evYield_Attack = 1, + .itemRare = ITEM_BLACK_SLUDGE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = 100, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_ANTICIPATION, ABILITY_DRY_SKIN, ABILITY_POISON_TOUCH }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Croagunk"), + .cryId = CRY_CROAGUNK, + .natDexNum = NATIONAL_DEX_CROAGUNK, + .categoryName = _("Toxic Mouth"), + .height = 7, + .weight = 230, + .description = COMPOUND_STRING( + "Croagunk rarely fights fairly. Inflating\n" + "its poison sacs, it fills the area with\n" + "an odd sound and hits flinching\n" + "opponents with a poison jab."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Croagunk, 40, 48), + FRONT_PIC_FEMALE(Croagunk, 40, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Croagunk, + .frontAnimId = ANIM_RAPID_H_HOPS, + BACK_PIC(Croagunk, 56, 56), + BACK_PIC_FEMALE(Croagunk, 56, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_GROW, + PALETTES(Croagunk), + ICON(Croagunk, 0), + .footprint = gMonFootprint_Croagunk, + LEARNSETS(Croagunk), + .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_TOXICROAK}), + }, + + [SPECIES_TOXICROAK] = + { + .baseHP = 83, + .baseAttack = 106, + .baseDefense = 65, + .baseSpeed = 85, + .baseSpAttack = 86, + .baseSpDefense = 65, + .types = { TYPE_POISON, TYPE_FIGHTING }, + .catchRate = 75, + .expYield = 172, + .evYield_Attack = 2, + .itemRare = ITEM_BLACK_SLUDGE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_ANTICIPATION, ABILITY_DRY_SKIN, ABILITY_POISON_TOUCH }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Toxicroak"), + .cryId = CRY_TOXICROAK, + .natDexNum = NATIONAL_DEX_TOXICROAK, + .categoryName = _("Toxic Mouth"), + .height = 13, + .weight = 444, + .description = COMPOUND_STRING( + "Swaying and dodging the attacks\n" + "of its foes, it weaves its flexible body\n" + "in close, then lunges out with its\n" + "poisonous claws."), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Toxicroak, 56, 56), + FRONT_PIC_FEMALE(Toxicroak, 56, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Toxicroak, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Toxicroak, 56, 56), + BACK_PIC_FEMALE(Toxicroak, 56, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Toxicroak), + ICON(Toxicroak, 0), + .footprint = gMonFootprint_Toxicroak, + LEARNSETS(Toxicroak), + }, +#endif //P_FAMILY_CROAGUNK + +#if P_FAMILY_CARNIVINE + [SPECIES_CARNIVINE] = + { + .baseHP = 74, + .baseAttack = 100, + .baseDefense = 72, + .baseSpeed = 46, + .baseSpAttack = 90, + .baseSpDefense = 72, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 200, + .expYield = 159, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Carnivine"), + .cryId = CRY_CARNIVINE, + .natDexNum = NATIONAL_DEX_CARNIVINE, + .categoryName = _("Bug Catcher"), + .height = 14, + .weight = 270, + .description = COMPOUND_STRING( + "Hanging from branches using its\n" + "tentacles, it looks like a plant.\n" + "It attracts prey with its sweet-smelling\n" + "saliva, then chomps down."), + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, + .trainerOffset = 0, + FRONT_PIC(Carnivine, 64, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Carnivine, + .frontAnimId = ANIM_FIGURE_8, + .enemyMonElevation = 8, + BACK_PIC(Carnivine, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Carnivine), + ICON(Carnivine, 1), + .footprint = gMonFootprint_Carnivine, + LEARNSETS(Carnivine), + }, +#endif //P_FAMILY_CARNIVINE + +#if P_FAMILY_FINNEON + [SPECIES_FINNEON] = + { + .baseHP = 49, + .baseAttack = 49, + .baseDefense = 56, + .baseSpeed = 66, + .baseSpAttack = 49, + .baseSpDefense = 61, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 190, + .expYield = 66, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_STORM_DRAIN, ABILITY_WATER_VEIL }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Finneon"), + .cryId = CRY_FINNEON, + .natDexNum = NATIONAL_DEX_FINNEON, + .categoryName = _("Wing Fish"), + .height = 4, + .weight = 70, + .description = COMPOUND_STRING( + "Its double tail fins propel its energetic\n" + "jumps. When it breaks the surface of the\n" + "sea, Wingull swoop down to grab it on\n" + "the fly."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Finneon, 32, 40), + FRONT_PIC_FEMALE(Finneon, 32, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Finneon, + .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, + BACK_PIC(Finneon, 56, 40), + BACK_PIC_FEMALE(Finneon, 56, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Finneon), + ICON(Finneon, 0), + .footprint = gMonFootprint_Finneon, + LEARNSETS(Finneon), + .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_LUMINEON}), + }, + + [SPECIES_LUMINEON] = + { + .baseHP = 69, + .baseAttack = 69, + .baseDefense = 76, + .baseSpeed = 91, + .baseSpAttack = 69, + .baseSpDefense = 86, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 75, + .expYield = 161, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_STORM_DRAIN, ABILITY_WATER_VEIL }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Lumineon"), + .cryId = CRY_LUMINEON, + .natDexNum = NATIONAL_DEX_LUMINEON, + .categoryName = _("Neon"), + .height = 12, + .weight = 240, + .description = COMPOUND_STRING( + "Lumineon swimming in the darkness\n" + "of the deep sea look like stars shining\n" + "in the night sky. It competes for food\n" + "with Lanturn."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Lumineon, 56, 56), + FRONT_PIC_FEMALE(Lumineon, 56, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Lumineon, + .frontAnimId = ANIM_H_STRETCH, + BACK_PIC(Lumineon, 56, 64), + BACK_PIC_FEMALE(Lumineon, 56, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Lumineon), + ICON(Lumineon, 0), + .footprint = gMonFootprint_Lumineon, + LEARNSETS(Lumineon), + }, +#endif //P_FAMILY_FINNEON + +#if P_FAMILY_SNOVER + [SPECIES_SNOVER] = + { + .baseHP = 60, + .baseAttack = 62, + .baseDefense = 50, + .baseSpeed = 40, + .baseSpAttack = 62, + .baseSpDefense = 60, + .types = { TYPE_GRASS, TYPE_ICE }, + .catchRate = 120, + .expYield = 67, + .evYield_Attack = 1, + .itemRare = ITEM_NEVER_MELT_ICE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS }, + .abilities = { ABILITY_SNOW_WARNING, ABILITY_NONE, ABILITY_SOUNDPROOF }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Snover"), + .cryId = CRY_SNOVER, + .natDexNum = NATIONAL_DEX_SNOVER, + .categoryName = _("Frost Tree"), + .height = 10, + .weight = 505, + .description = COMPOUND_STRING( + "During cold seasons, it migrates to the\n" + "mountain's lower reaches. Seemingly\n" + "curious about people, they gather around\n" + "footsteps they find on snowy mountains."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Snover, 64, 48), + FRONT_PIC_FEMALE(Snover, 64, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Snover, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Snover, 64, 56), + BACK_PIC_FEMALE(Snover, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Snover), + ICON(Snover, 1), + .footprint = gMonFootprint_Snover, + LEARNSETS(Snover), + .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_ABOMASNOW}), + }, + +#define ABOMASNOW_MISC_INFO \ + .types = { TYPE_GRASS, TYPE_ICE }, \ + .catchRate = 60, \ + .evYield_Attack = 1, \ + .evYield_SpAttack = 1, \ + .itemRare = ITEM_NEVER_MELT_ICE, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_GRASS },\ + .bodyColor = BODY_COLOR_WHITE, \ + .speciesName = _("Abomasnow"), \ + .natDexNum = NATIONAL_DEX_ABOMASNOW, \ + .categoryName = _("Frost Tree"), \ + .footprint = gMonFootprint_Abomasnow, \ + LEARNSETS(Abomasnow), \ + .formSpeciesIdTable = sAbomasnowFormSpeciesIdTable, \ + .formChangeTable = sAbomasnowFormChangeTable + + [SPECIES_ABOMASNOW] = + { + ABOMASNOW_MISC_INFO, + .baseHP = 90, + .baseAttack = 92, + .baseDefense = 75, + .baseSpeed = 60, + .baseSpAttack = 92, + .baseSpDefense = 85, + .expYield = 173, + .abilities = { ABILITY_SNOW_WARNING, ABILITY_NONE, ABILITY_SOUNDPROOF }, + .cryId = CRY_ABOMASNOW, + .height = 22, + .weight = 1355, + .description = COMPOUND_STRING( + "It lives a quiet life on mountains that\n" + "are perpetually covered in snow. It hides\n" + "itself by whipping up blizzards.\n" + "It is also known as “The Ice Monster.”"), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 348, + .trainerOffset = 6, + FRONT_PIC(Abomasnow, 64, 64), + FRONT_PIC_FEMALE(Abomasnow, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Abomasnow, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Abomasnow, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Abomasnow), + ICON(Abomasnow, 1), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_ABOMASNOW_MEGA] = + { + ABOMASNOW_MISC_INFO, + .baseHP = 90, + .baseAttack = 132, + .baseDefense = 105, + .baseSpeed = 30, + .baseSpAttack = 132, + .baseSpDefense = 105, + .expYield = 208, + .abilities = { ABILITY_SNOW_WARNING, ABILITY_SNOW_WARNING, ABILITY_SNOW_WARNING }, + .cryId = CRY_ABOMASNOW_MEGA, + .height = 27, + .weight = 1850, + .description = COMPOUND_STRING( + "The sprouts on Abomasnow's back grow into\n" + "great shafts of ice when it Mega Evolves.\n" + "Dislikes associating with others and\n" + "chooses to live quietly deep in mountains."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 348, + .trainerOffset = 6, + FRONT_PIC(AbomasnowMega, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_AbomasnowMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(AbomasnowMega, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(AbomasnowMega), + ICON(AbomasnowMega, 1), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SNOVER + +#if P_FAMILY_ROTOM +#define ROTOM_MISC_INFO \ + .catchRate = 45, \ + .evYield_Speed = 1, \ + .evYield_SpAttack = 1, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, \ + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_RED, \ + .speciesName = _("Rotom"), \ + .cryId = CRY_ROTOM, \ + .natDexNum = NATIONAL_DEX_ROTOM, \ + .categoryName = _("Plasma"), \ + .height = 3, \ + .weight = 3, \ + .pokemonScale = 530, \ + .pokemonOffset = 13, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Rotom, \ + LEARNSETS(Rotom), \ + .formSpeciesIdTable = sRotomFormSpeciesIdTable, \ + .formChangeTable = sRotomFormChangeTable + + [SPECIES_ROTOM] = + { + ROTOM_MISC_INFO, + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 77, + .baseSpeed = 91, + .baseSpAttack = 95, + .baseSpDefense = 77, + .types = { TYPE_ELECTRIC, TYPE_GHOST }, + .expYield = 154, + .description = COMPOUND_STRING( + "Its body is composed of plasma and loves\n" + "to surprise others. One boy's invention led\n" + "to the development of many machines that\n" + "can use of Rotom's unique capabilities."), + FRONT_PIC(Rotom, 56, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Rotom, + .frontAnimId = ANIM_GLOW_YELLOW, + .enemyMonElevation = 10, + BACK_PIC(Rotom, 56, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(Rotom), + ICON(Rotom, 0), + }, + +#define ROTOM_APPLIANCE_INFO(form) \ + .baseHP = 50, \ + .baseAttack = 65, \ + .baseDefense = 107, \ + .baseSpeed = 86, \ + .baseSpAttack = 105, \ + .baseSpDefense = 107, \ + .expYield = 182 + + [SPECIES_ROTOM_HEAT] = + { + ROTOM_MISC_INFO, + .types = { TYPE_ELECTRIC, TYPE_FIRE }, + ROTOM_APPLIANCE_INFO(Heat), + .description = COMPOUND_STRING( + "If the convection microwave oven is not\n" + "working properly, then the Rotom inhabiting\n" + "it will become lethargic. It will gleefully\n" + "burn your favorite outfit in mischief."), + FRONT_PIC(RotomHeat, 56, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_RotomHeat, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 6, + BACK_PIC(RotomHeat, 64, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(RotomHeat), + ICON(RotomHeat, 0), + }, + + [SPECIES_ROTOM_WASH] = + { + ROTOM_MISC_INFO, + .types = { TYPE_ELECTRIC, TYPE_WATER }, + .noFlip = TRUE, + ROTOM_APPLIANCE_INFO(Wash), + .description = COMPOUND_STRING( + "It enjoys coming up with water-based\n" + "pranks. The model of washing machine that\n" + "Rotom can inspirit has been discontinued,\n" + "so they are now traded at high prices."), + FRONT_PIC(RotomWash, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_RotomWash, + .frontAnimId = ANIM_V_JUMPS_SMALL, + .enemyMonElevation = 6, + BACK_PIC(RotomWash, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(RotomWash), + ICON(RotomWash, 0), + }, + + [SPECIES_ROTOM_FROST] = + { + ROTOM_MISC_INFO, + .types = { TYPE_ELECTRIC, TYPE_ICE }, + ROTOM_APPLIANCE_INFO(Frost), + .description = COMPOUND_STRING( + "In this form, Rotom likes to play freezing\n" + "cold pranks. You may find it's turned the\n" + "bath you just filled to solid ice!\n" + "It battles by spewing cold air."), + FRONT_PIC(RotomFrost, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_RotomFrost, + .frontAnimId = ANIM_H_STRETCH, + .enemyMonElevation = 6, + BACK_PIC(RotomFrost, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(RotomFrost), + ICON(RotomFrost, 5), + }, + + [SPECIES_ROTOM_FAN] = + { + ROTOM_MISC_INFO, + .types = { TYPE_ELECTRIC, TYPE_FLYING }, + ROTOM_APPLIANCE_INFO(Fan), + .description = COMPOUND_STRING( + "The first appliance developed that Rotom\n" + "coud inspirit was the electric fan. It uses\n" + "its power over wind in its pranks, happily\n" + "blowing any important documents it finds."), + FRONT_PIC(RotomFan, 64, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_RotomFan, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + .frontAnimDelay = 7, + .enemyMonElevation = 6, + BACK_PIC(RotomFan, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(RotomFan), + ICON(RotomFan, 0), + }, + + [SPECIES_ROTOM_MOW] = + { + ROTOM_MISC_INFO, + .types = { TYPE_ELECTRIC, TYPE_GRASS }, + ROTOM_APPLIANCE_INFO(Mow), + .description = COMPOUND_STRING( + "The lawn mower is an appliance that led to\n" + "the development of the Rotom Dex. It will\n" + "mow down grass and flowers, then swagger\n" + "around with pride at its accomplishments."), + FRONT_PIC(RotomMow, 56, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_RotomMow, + .frontAnimId = ANIM_TIP_MOVE_FORWARD, + .enemyMonElevation = 6, + BACK_PIC(RotomMow, 56, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(RotomMow), + ICON(RotomMow, 0), + }, +#endif //P_FAMILY_ROTOM + +#if P_FAMILY_UXIE + [SPECIES_UXIE] = + { + .baseHP = 75, + .baseAttack = 75, + .baseDefense = 130, + .baseSpeed = 95, + .baseSpAttack = 75, + .baseSpDefense = 130, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 3, + .expYield = 261, + .evYield_Defense = 2, + .evYield_SpDefense = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 140, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .isLegendary = TRUE, + .speciesName = _("Uxie"), + .cryId = CRY_UXIE, + .natDexNum = NATIONAL_DEX_UXIE, + .categoryName = _("Knowledge"), + .height = 3, + .weight = 3, + .description = COMPOUND_STRING( + "Known as ”The Being of Knowledge,”\n" + "according to some sources, this Pokémon\n" + "provided people with the intelligence\n" + "necessary to solve various problems."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Uxie, 56, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Uxie, + .frontAnimId = ANIM_SWING_CONCAVE, + .enemyMonElevation = 6, + BACK_PIC(Uxie, 56, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Uxie), + ICON(Uxie, 0), + .footprint = gMonFootprint_Uxie, + LEARNSETS(Uxie), + }, +#endif //P_FAMILY_UXIE + +#if P_FAMILY_MESPRIT + [SPECIES_MESPRIT] = + { + .baseHP = 80, + .baseAttack = 105, + .baseDefense = 105, + .baseSpeed = 80, + .baseSpAttack = 105, + .baseSpDefense = 105, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 3, + .expYield = 261, + .evYield_Attack = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 140, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PINK, + .isLegendary = TRUE, + .speciesName = _("Mesprit"), + .cryId = CRY_MESPRIT, + .natDexNum = NATIONAL_DEX_MESPRIT, + .categoryName = _("Emotion"), + .height = 3, + .weight = 3, + .description = COMPOUND_STRING( + "Although it slumbers at the bottom of a\n" + "lake, its spirit is said to leave its body\n" + "and flitter on the water surface. It\n" + "taught humans of sorrow, pain, and joy."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Mesprit, 48, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Mesprit, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + .enemyMonElevation = 6, + BACK_PIC(Mesprit, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Mesprit), + ICON(Mesprit, 0), + .footprint = gMonFootprint_Mesprit, + LEARNSETS(Mesprit), + }, +#endif //P_FAMILY_MESPRIT + +#if P_FAMILY_AZELF + [SPECIES_AZELF] = + { + .baseHP = 75, + .baseAttack = 125, + .baseDefense = 70, + .baseSpeed = 115, + .baseSpAttack = 125, + .baseSpDefense = 70, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 3, + .expYield = 261, + .evYield_Attack = 2, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 140, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .isLegendary = TRUE, + .speciesName = _("Azelf"), + .cryId = CRY_AZELF, + .natDexNum = NATIONAL_DEX_AZELF, + .categoryName = _("Willpower"), + .height = 3, + .weight = 3, + .description = COMPOUND_STRING( + "This Pokémon is said to have endowed\n" + "humans with the determination needed to\n" + "do things. It is thought that Uxie, Mesprit\n" + "and Azelf all came from the same egg."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Azelf, 48, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Azelf, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 6, + BACK_PIC(Azelf, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Azelf), + ICON(Azelf, 0), + .footprint = gMonFootprint_Azelf, + LEARNSETS(Azelf), + }, +#endif //P_FAMILY_AZELF + +#if P_FAMILY_DIALGA +#define DIALGA_MISC_INFO \ + .types = { TYPE_STEEL, TYPE_DRAGON }, \ + .catchRate = 3, \ + .expYield = 306, \ + .evYield_SpAttack = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY }, \ + .bodyColor = BODY_COLOR_WHITE, \ + .speciesName = _("Dialga"), \ + .cryId = CRY_DIALGA, \ + .natDexNum = NATIONAL_DEX_DIALGA, \ + .categoryName = _("Temporal"), \ + .footprint = gMonFootprint_Dialga, \ + LEARNSETS(Dialga), \ + .formSpeciesIdTable = sDialgaFormSpeciesIdTable, \ + .formChangeTable = sDialgaFormChangeTable, \ + .isLegendary = TRUE + + [SPECIES_DIALGA] = + { + DIALGA_MISC_INFO, + .baseHP = 100, + .baseAttack = 120, + .baseDefense = 120, + .baseSpeed = 90, + .baseSpAttack = 150, + .baseSpDefense = 100, + .height = 54, + .weight = 6830, + .description = COMPOUND_STRING( + "A Pokémon spoken of in legend.\n" + "It completely controls the flow of time.\n" + "It uses its power to travel at will\n" + "through the past and future."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 721, + .trainerOffset = 19, + FRONT_PIC(Dialga, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Dialga, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Dialga, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Dialga), + ICON(Dialga, 2), + }, + + [SPECIES_DIALGA_ORIGIN] = + { + DIALGA_MISC_INFO, + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 120, + .baseSpeed = 90, + .baseSpAttack = 150, + .baseSpDefense = 120, + .height = 70, + .weight = 8500, + .description = COMPOUND_STRING( + "Radiant light caused Dialga to take on a\n" + "form bearing a striking resemblance to the\n" + "creator Pokémon. It wields such a colossal\n" + "strength that this might be its true form."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 721, + .trainerOffset = 19, + FRONT_PIC(DialgaOrigin, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_DialgaOrigin, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(DialgaOrigin, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(DialgaOrigin), + ICON(DialgaOrigin, 0), + }, +#endif //P_FAMILY_DIALGA + +#if P_FAMILY_PALKIA +#define PALKIA_MISC_INFO \ + .types = { TYPE_WATER, TYPE_DRAGON }, \ + .catchRate = 3, \ + .expYield = 306, \ + .evYield_SpAttack = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY }, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .speciesName = _("Palkia"), \ + .cryId = CRY_PALKIA, \ + .natDexNum = NATIONAL_DEX_PALKIA, \ + .categoryName = _("Spatial"), \ + .footprint = gMonFootprint_Palkia, \ + LEARNSETS(Palkia), \ + .formSpeciesIdTable = sPalkiaFormSpeciesIdTable, \ + .formChangeTable = sPalkiaFormChangeTable, \ + .isLegendary = TRUE + + [SPECIES_PALKIA] = + { + PALKIA_MISC_INFO, + .baseHP = 90, + .baseAttack = 120, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 150, + .baseSpDefense = 120, + .height = 42, + .weight = 3360, + .description = COMPOUND_STRING( + "Palkia has the ability to distort space.\n" + "Its total control over the boundaries of\n" + "space enable it to transport itself to\n" + "faraway places and other dimensions."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 650, + .trainerOffset = 16, + FRONT_PIC(Palkia, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Palkia, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Palkia, 64, 64), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Palkia), + ICON(Palkia, 2), + }, + + [SPECIES_PALKIA_ORIGIN] = + { + PALKIA_MISC_INFO, + .baseHP = 90, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 120, + .baseSpAttack = 150, + .baseSpDefense = 120, + .height = 63, + .weight = 6600, + .description = COMPOUND_STRING( + "It soars across the sky in a form that\n" + "resembles the creator of all things.\n" + "Perhaps this imitation of appearance is a\n" + "strategy for gaining Arceus's powers."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 650, + .trainerOffset = 16, + FRONT_PIC(PalkiaOrigin, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_PalkiaOrigin, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(PalkiaOrigin, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PalkiaOrigin), + ICON(PalkiaOrigin, 2), + }, +#endif //P_FAMILY_PALKIA + +#if P_FAMILY_HEATRAN + [SPECIES_HEATRAN] = + { + .baseHP = 91, + .baseAttack = 90, + .baseDefense = 106, + .baseSpeed = 77, + .baseSpAttack = 130, + .baseSpDefense = 106, + .types = { TYPE_FIRE, TYPE_STEEL }, + .catchRate = 3, + .expYield = 270, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = 100, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_FLAME_BODY }, + .bodyColor = BODY_COLOR_BROWN, + .isLegendary = TRUE, + .speciesName = _("Heatran"), + .cryId = CRY_HEATRAN, + .natDexNum = NATIONAL_DEX_HEATRAN, + .categoryName = _("Lava Dome"), + .height = 17, + .weight = 4300, + .description = COMPOUND_STRING( + "Boiling blood, like magma, circulates\n" + "through its body. It dwells in volcanic\n" + "caves, using its cross-shaped feet\n" + "to crawl on ceilings and walls."), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 290, + .trainerOffset = 1, + FRONT_PIC(Heatran, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Heatran, + .frontAnimId = ANIM_GLOW_ORANGE, + BACK_PIC(Heatran, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Heatran), + ICON(Heatran, 0), + .footprint = gMonFootprint_Heatran, + LEARNSETS(Heatran), + }, +#endif //P_FAMILY_HEATRAN + +#if P_FAMILY_REGIGIGAS + [SPECIES_REGIGIGAS] = + { + .baseHP = 110, + .baseAttack = 160, + .baseDefense = 110, + .baseSpeed = 100, + .baseSpAttack = 80, + .baseSpDefense = 110, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 3, + .expYield = 302, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_SLOW_START, ABILITY_NONE }, + .bodyColor = BODY_COLOR_WHITE, + .isLegendary = TRUE, + .speciesName = _("Regigigas"), + .cryId = CRY_REGIGIGAS, + .natDexNum = NATIONAL_DEX_REGIGIGAS, + .categoryName = _("Colossal"), + .height = 37, + .weight = 4200, + .description = COMPOUND_STRING( + "There is an enduring legend that\n" + "states this Pokémon shaped Regirock,\n" + "Regice, and Registeel out of clay, ice,\n" + "and magma."), + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 610, + .trainerOffset = 17, + FRONT_PIC(Regigigas, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Regigigas, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Regigigas, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Regigigas), + ICON(Regigigas, 0), + .footprint = gMonFootprint_Regigigas, + LEARNSETS(Regigigas), + }, +#endif //P_FAMILY_REGIGIGAS + +#if P_FAMILY_GIRATINA +#define GIRATINA_MISC_INFO \ + .types = { TYPE_GHOST, TYPE_DRAGON }, \ + .catchRate = 3, \ + .expYield = 306, \ + .evYield_HP = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .bodyColor = BODY_COLOR_BLACK, \ + .speciesName = _("Giratina"), \ + .cryId = CRY_GIRATINA, \ + .natDexNum = NATIONAL_DEX_GIRATINA, \ + .categoryName = _("Renegade"), \ + .footprint = gMonFootprint_Giratina, \ + LEARNSETS(Giratina), \ + .formSpeciesIdTable = sGiratinaFormSpeciesIdTable, \ + .formChangeTable = sGiratinaFormChangeTable, \ + .isLegendary = TRUE + + [SPECIES_GIRATINA_ALTERED] = + { + GIRATINA_MISC_INFO, + .baseHP = 150, + .baseAttack = 100, + .baseDefense = 120, + .baseSpeed = 90, + .baseSpAttack = 100, + .baseSpDefense = 120, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY }, + .height = 45, + .weight = 7500, + .description = COMPOUND_STRING( + "This Pokémon is said to live in a world\n" + "on the reverse side of ours, where common\n" + "knowledge is distorted and strange.\n" + "It was banished for its violence."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 614, + .trainerOffset = 13, + FRONT_PIC(GiratinaAltered, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_GiratinaAltered, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(GiratinaAltered, 64, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(GiratinaAltered), + ICON(GiratinaAltered, 0), + }, + + [SPECIES_GIRATINA_ORIGIN] = + { + GIRATINA_MISC_INFO, + .baseHP = 150, + .baseAttack = 120, + .baseDefense = 100, + .baseSpeed = 90, + .baseSpAttack = 120, + .baseSpDefense = 100, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE, ABILITY_NONE }, + .height = 69, + .weight = 6500, + .description = COMPOUND_STRING( + "Giratina loses its legs upon changing into\n" + "this form. It's believed it hails from a\n" + "world where the heavens and the earth\n" + "are as one."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 614, + .trainerOffset = 13, + FRONT_PIC(GiratinaOrigin, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_GiratinaOrigin, + .frontAnimId = ANIM_LUNGE_GROW, + .enemyMonElevation = 7, + BACK_PIC(GiratinaOrigin, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(GiratinaOrigin), + ICON(GiratinaOrigin, 0), + }, +#endif //P_FAMILY_GIRATINA + +#if P_FAMILY_CRESSELIA + [SPECIES_CRESSELIA] = + { + .baseHP = 120, + .baseAttack = 70, + .baseDefense = P_UPDATED_STATS >= GEN_9 ? 110 : 120, + .baseSpeed = 85, + .baseSpAttack = 75, + .baseSpDefense = P_UPDATED_STATS >= GEN_9 ? 120 : 130, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 3, + .expYield = 270, + .evYield_SpDefense = 3, + .genderRatio = MON_FEMALE, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .isLegendary = TRUE, + .speciesName = _("Cresselia"), + .cryId = CRY_CRESSELIA, + .natDexNum = NATIONAL_DEX_CRESSELIA, + .categoryName = _("Lunar"), + .height = 15, + .weight = 856, + .description = COMPOUND_STRING( + "Those who sleep holding one of\n" + "Cresselia's feathers are assured of\n" + "joyful dreams. It is said to represent\n" + "the crescent moon."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(Cresselia, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Cresselia, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + .enemyMonElevation = 3, + BACK_PIC(Cresselia, 56, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Cresselia), + ICON(Cresselia, 0), + .footprint = gMonFootprint_Cresselia, + LEARNSETS(Cresselia), + }, +#endif //P_FAMILY_CRESSELIA + +#if P_FAMILY_MANAPHY + [SPECIES_PHIONE] = + { + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 80, + .baseSpeed = 80, + .baseSpAttack = 80, + .baseSpDefense = 80, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 30, + .expYield = 216, + .evYield_HP = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_HYDRATION, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .isMythical = TRUE, + .speciesName = _("Phione"), + .cryId = CRY_PHIONE, + .natDexNum = NATIONAL_DEX_PHIONE, + .categoryName = _("Sea Drifter"), + .height = 4, + .weight = 31, + .description = COMPOUND_STRING( + "When the water warms, they inflate the\n" + "flotation sac on their heads and drift\n" + "languidly on the sea in packs.\n" + "It always returns to where it was born."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Phione, 56, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Phione, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 8, + BACK_PIC(Phione, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Phione), + ICON(Phione, 0), + .footprint = gMonFootprint_Phione, + LEARNSETS(Phione), + }, + + [SPECIES_MANAPHY] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 100, + .baseSpDefense = 100, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 3, + .expYield = 270, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_HYDRATION, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .isMythical = TRUE, + .speciesName = _("Manaphy"), + .cryId = CRY_MANAPHY, + .natDexNum = NATIONAL_DEX_MANAPHY, + .categoryName = _("Seafaring"), + .height = 3, + .weight = 14, + .description = COMPOUND_STRING( + "Water makes up 80% of its body.\n" + "It starts its life with a wondrous power\n" + "that permits it to bond with any kind\n" + "of Pokémon."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Manaphy, 64, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Manaphy, + .frontAnimId = ANIM_SWING_CONVEX, + .enemyMonElevation = 10, + BACK_PIC(Manaphy, 64, 56), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Manaphy), + ICON(Manaphy, 0), + .footprint = gMonFootprint_Manaphy, + LEARNSETS(Manaphy), + }, +#endif //P_FAMILY_MANAPHY + +#if P_FAMILY_DARKRAI + [SPECIES_DARKRAI] = + { + .baseHP = 70, + .baseAttack = 90, + .baseDefense = 90, + .baseSpeed = 125, + .baseSpAttack = 135, + .baseSpDefense = 90, + .types = { TYPE_DARK, TYPE_DARK }, + .catchRate = 3, + .expYield = 270, + .evYield_Speed = 1, + .evYield_SpAttack = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_BAD_DREAMS, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLACK, + .isMythical = TRUE, + .speciesName = _("Darkrai"), + .cryId = CRY_DARKRAI, + .natDexNum = NATIONAL_DEX_DARKRAI, + .categoryName = _("Pitch-Black"), + .height = 15, + .weight = 505, + .description = COMPOUND_STRING( + "It chases people and Pokémon from its\n" + "territory by causing them to experience\n" + "deep, nightmarish slumbers. However,\n" + "it means no harm."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(Darkrai, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Darkrai, + .frontAnimId = ANIM_GLOW_BLACK, + .enemyMonElevation = 4, + BACK_PIC(Darkrai, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Darkrai), + ICON(Darkrai, 0), + .footprint = gMonFootprint_Darkrai, + LEARNSETS(Darkrai), + }, +#endif //P_FAMILY_DARKRAI + +#if P_FAMILY_SHAYMIN +#define SHAYMIN_MISC_INFO \ + .catchRate = 45, \ + .expYield = 270, \ + .evYield_HP = 3, \ + .itemCommon = ITEM_LUM_BERRY, \ + .itemRare = ITEM_LUM_BERRY, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 100, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .speciesName = _("Shaymin"), \ + .natDexNum = NATIONAL_DEX_SHAYMIN, \ + .categoryName = _("Gratitude"), \ + .footprint = gMonFootprint_Shaymin, \ + .formSpeciesIdTable = sShayminFormSpeciesIdTable, \ + .formChangeTable = sShayminFormChangeTable, \ + .isMythical = TRUE + + [SPECIES_SHAYMIN_LAND] = + { + SHAYMIN_MISC_INFO, + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 100, + .baseSpDefense = 100, + .types = { TYPE_GRASS, TYPE_GRASS }, + .abilities = { ABILITY_NATURAL_CURE, ABILITY_NONE }, + .cryId = CRY_SHAYMIN_LAND, + .height = 2, + .weight = 21, + .description = COMPOUND_STRING( + "The flowers all over its body bloom if it is\n" + "lovingly hugged and senses gratitude. It\n" + "dissolves toxins in the air to transform\n" + "ruined land into a lush field of flowers."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(ShayminLand, 40, 32), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_ShayminLand, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ShayminLand, 56, 40), + .backPicYOffset = 15, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(ShayminLand), + ICON(ShayminLand, 1), + LEARNSETS(ShayminLand), + }, + + [SPECIES_SHAYMIN_SKY] = + { + SHAYMIN_MISC_INFO, + .baseHP = 100, + .baseAttack = 103, + .baseDefense = 75, + .baseSpeed = 127, + .baseSpAttack = 120, + .baseSpDefense = 75, + .types = { TYPE_GRASS, TYPE_FLYING }, + .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE }, + .noFlip = TRUE, + .cryId = CRY_SHAYMIN_SKY, + .height = 4, + .weight = 52, + .description = COMPOUND_STRING( + "Upon taking in the scent of a particular\n" + "rare flower, Shaymin is enveloped in light\n" + "and its tiny body transforms, confering\n" + "the power of flight upon it."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(ShayminSky, 56, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_ShayminSky, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(ShayminSky, 56, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(ShayminSky), + ICON(ShayminSky, 1), + LEARNSETS(ShayminSky), + }, +#endif //P_FAMILY_SHAYMIN + +#if P_FAMILY_ARCEUS +#define ARCEUS_SPECIES_INFO(type, typeName) \ + { \ + .baseHP = 120, \ + .baseAttack = 120, \ + .baseDefense = 120, \ + .baseSpeed = 120, \ + .baseSpAttack = 120, \ + .baseSpDefense = 120, \ + .types = { type, type }, \ + .catchRate = 3, \ + .expYield = 324, \ + .evYield_HP = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ABILITY_MULTITYPE, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_WHITE, \ + .speciesName = _("Arceus"), \ + .cryId = CRY_ARCEUS, \ + .natDexNum = NATIONAL_DEX_ARCEUS, \ + .categoryName = _("Alpha"), \ + .height = 32, \ + .weight = 3200, \ + .description = gArceusPokedexText, \ + .pokemonScale = 256, \ + .pokemonOffset = 0, \ + .trainerScale = 495, \ + .trainerOffset = 10, \ + FRONT_PIC(Arceus, 64, 64), \ + .frontPicYOffset = 0, \ + .frontAnimFrames = sAnims_Arceus, \ + .frontAnimId = ANIM_GROW_VIBRATE, \ + BACK_PIC(Arceus, 64, 64), \ + .backPicYOffset = 3, \ + .backAnimId = BACK_ANIM_GROW_STUTTER, \ + PALETTES(Arceus ##typeName), \ + ICON(Arceus, 1), \ + .footprint = gMonFootprint_Arceus, \ + LEARNSETS(Arceus), \ + .formSpeciesIdTable = sArceusFormSpeciesIdTable, \ + .formChangeTable = sArceusFormChangeTable, \ + .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), +#endif //P_FAMILY_ARCEUS + +#ifdef __INTELLISENSE__ +}; +#endif \ No newline at end of file diff --git a/src/data/pokemon/species_info/gen_5.h b/src/data/pokemon/species_info/gen_5.h new file mode 100644 index 0000000000..7553f1c17a --- /dev/null +++ b/src/data/pokemon/species_info/gen_5.h @@ -0,0 +1,8808 @@ +#ifdef __INTELLISENSE__ +const struct SpeciesInfo gSpeciesInfoGen5[] = +{ +#endif + +#if P_FAMILY_VICTINI + [SPECIES_VICTINI] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 100, + .baseSpDefense = 100, + .types = { TYPE_PSYCHIC, TYPE_FIRE }, + .catchRate = 3, + .expYield = 270, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_VICTORY_STAR, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .isMythical = TRUE, + .speciesName = _("Victini"), + .cryId = CRY_VICTINI, + .natDexNum = NATIONAL_DEX_VICTINI, + .categoryName = _("Victory"), + .height = 4, + .weight = 40, + .description = COMPOUND_STRING( + "This Pokémon brings victory.\n" + "It is said that Trainers with Victini\n" + "always win, regardless of the type\n" + "of encounter."), + .pokemonScale = 491, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Victini, 48, 56), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Victini, + .frontAnimId = ANIM_H_JUMPS, + BACK_PIC(Victini, 40, 64), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Victini), + ICON(Victini, 0), + .footprint = gMonFootprint_Victini, + LEARNSETS(Victini), + }, +#endif //P_FAMILY_VICTINI + +#if P_FAMILY_SNIVY + [SPECIES_SNIVY] = + { + .baseHP = 45, + .baseAttack = 45, + .baseDefense = 55, + .baseSpeed = 63, + .baseSpAttack = 45, + .baseSpDefense = 55, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 62, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CONTRARY }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Snivy"), + .cryId = CRY_SNIVY, + .natDexNum = NATIONAL_DEX_SNIVY, + .categoryName = _("Grass Snake"), + .height = 6, + .weight = 81, + .description = COMPOUND_STRING( + "It is very intelligent and calm.\n" + "Being exposed to lots of sunlight makes\n" + "its movements swifter. When they are\n" + "not feeling well, their tails droop."), + .pokemonScale = 422, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Snivy, 48, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Snivy, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Snivy, 56, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Snivy), + ICON(Snivy, 1), + .footprint = gMonFootprint_Snivy, + LEARNSETS(Snivy), + .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_SERVINE}), + }, + + [SPECIES_SERVINE] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 75, + .baseSpeed = 83, + .baseSpAttack = 60, + .baseSpDefense = 75, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 145, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CONTRARY }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Servine"), + .cryId = CRY_SERVINE, + .natDexNum = NATIONAL_DEX_SERVINE, + .categoryName = _("Grass Snake"), + .height = 8, + .weight = 160, + .description = COMPOUND_STRING( + "When it gets dirty, its leaves can't be\n" + "used in photosynthesis, so it always keeps\n" + "clean. They avoid attacks by sinking into\n" + "the shadows of thick foliage."), + .pokemonScale = 366, + .pokemonOffset = 9, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Servine, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Servine, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Servine, 48, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Servine), + ICON(Servine, 1), + .footprint = gMonFootprint_Servine, + LEARNSETS(Servine), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SERPERIOR}), + }, + + [SPECIES_SERPERIOR] = + { + .baseHP = 75, + .baseAttack = 75, + .baseDefense = 95, + .baseSpeed = 113, + .baseSpAttack = 75, + .baseSpDefense = 95, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 238, + .evYield_Speed = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_CONTRARY }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Serperior"), + .cryId = CRY_SERPERIOR, + .natDexNum = NATIONAL_DEX_SERPERIOR, + .categoryName = _("Regal"), + .height = 33, + .weight = 630, + .description = COMPOUND_STRING( + "They raise their heads to intimidate foes,\n" + "but only give it their all when fighting\n" + "powerful opponents who are not fazed\n" + "by the glare from its noble eyes."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 405, + .trainerOffset = 8, + FRONT_PIC(Serperior, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Serperior, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + BACK_PIC(Serperior, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Serperior), + ICON(Serperior, 1), + .footprint = gMonFootprint_Serperior, + LEARNSETS(Serperior), + }, +#endif //P_FAMILY_SNIVY + +#if P_FAMILY_TEPIG + [SPECIES_TEPIG] = + { + .baseHP = 65, + .baseAttack = 63, + .baseDefense = 45, + .baseSpeed = 45, + .baseSpAttack = 45, + .baseSpDefense = 45, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 62, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_THICK_FAT }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Tepig"), + .cryId = CRY_TEPIG, + .natDexNum = NATIONAL_DEX_TEPIG, + .categoryName = _("Fire Pig"), + .height = 5, + .weight = 99, + .description = COMPOUND_STRING( + "It loves to eat roasted berries, but\n" + "sometimes it gets too excited and burns\n" + "them to a crisp. It blows fire through\n" + "its nose."), + .pokemonScale = 432, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Tepig, 40, 48), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Tepig, + .frontAnimId = ANIM_H_SLIDE, + BACK_PIC(Tepig, 48, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Tepig), + ICON(Tepig, 0), + .footprint = gMonFootprint_Tepig, + LEARNSETS(Tepig), + .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_PIGNITE}), + }, + + [SPECIES_PIGNITE] = + { + .baseHP = 90, + .baseAttack = 93, + .baseDefense = 55, + .baseSpeed = 55, + .baseSpAttack = 70, + .baseSpDefense = 55, + .types = { TYPE_FIRE, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 146, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_THICK_FAT }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Pignite"), + .cryId = CRY_PIGNITE, + .natDexNum = NATIONAL_DEX_PIGNITE, + .categoryName = _("Fire Pig"), + .height = 10, + .weight = 555, + .description = COMPOUND_STRING( + "The more it eats, the more fuel it has\n" + "to make the fire in its stomach stronger.\n" + "When it is angered, the intensity of the\n" + "flame increases."), + .pokemonScale = 305, + .pokemonOffset = 8, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Pignite, 56, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Pignite, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Pignite, 64, 64), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(Pignite), + ICON(Pignite, 0), + .footprint = gMonFootprint_Pignite, + LEARNSETS(Pignite), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_EMBOAR}), + }, + + [SPECIES_EMBOAR] = + { + .baseHP = 110, + .baseAttack = 123, + .baseDefense = 65, + .baseSpeed = 65, + .baseSpAttack = 100, + .baseSpDefense = 65, + .types = { TYPE_FIRE, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 238, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_RECKLESS }, + .bodyColor = BODY_COLOR_RED, + .noFlip = TRUE, + .speciesName = _("Emboar"), + .cryId = CRY_EMBOAR, + .natDexNum = NATIONAL_DEX_EMBOAR, + .categoryName = _("Fire Pig"), + .height = 16, + .weight = 1500, + .description = COMPOUND_STRING( + "It is adept at using many different moves.\n" + "It can throw a fire punch by setting its\n" + "fists on fire with its fiery chin.\n" + "It cares deeply about its friends."), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + FRONT_PIC(Emboar, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Emboar, + .frontAnimId = ANIM_DEEP_V_SQUISH_AND_BOUNCE, + BACK_PIC(Emboar, 64, 64), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Emboar), + ICON(Emboar, 0), + .footprint = gMonFootprint_Emboar, + LEARNSETS(Emboar), + }, +#endif //P_FAMILY_TEPIG + +#if P_FAMILY_OSHAWOTT + [SPECIES_OSHAWOTT] = + { + .baseHP = 55, + .baseAttack = 55, + .baseDefense = 45, + .baseSpeed = 45, + .baseSpAttack = 63, + .baseSpDefense = 45, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 62, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHELL_ARMOR }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Oshawott"), + .cryId = CRY_OSHAWOTT, + .natDexNum = NATIONAL_DEX_OSHAWOTT, + .categoryName = _("Sea Otter"), + .height = 5, + .weight = 59, + .description = COMPOUND_STRING( + "The scalchop on its stomach isn't just\n" + "used for battle, it can be used to break\n" + "open hard berries as well. It is made\n" + "from the same element as its claws."), + .pokemonScale = 432, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Oshawott, 32, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Oshawott, + .frontAnimId = ANIM_H_JUMPS, + BACK_PIC(Oshawott, 40, 48), + .backPicYOffset = 14, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Oshawott), + ICON(Oshawott, 0), + .footprint = gMonFootprint_Oshawott, + LEARNSETS(Oshawott), + .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_DEWOTT}), + }, + + [SPECIES_DEWOTT] = + { + .baseHP = 75, + .baseAttack = 75, + .baseDefense = 60, + .baseSpeed = 60, + .baseSpAttack = 83, + .baseSpDefense = 60, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 145, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHELL_ARMOR }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Dewott"), + .cryId = CRY_DEWOTT, + .natDexNum = NATIONAL_DEX_DEWOTT, + .categoryName = _("Discipline"), + .height = 8, + .weight = 245, + .description = COMPOUND_STRING( + "Strict training and disclipine leads it\n" + "to master its flowing double-scalchop\n" + "technique. Scalchop techniques differ\n" + "from one Dewott to another."), + .pokemonScale = 366, + .pokemonOffset = 9, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Dewott, 40, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Dewott, + .frontAnimId = ANIM_H_VIBRATE, + BACK_PIC(Dewott, 56, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Dewott), + ICON(Dewott, 0), + .footprint = gMonFootprint_Dewott, + LEARNSETS(Dewott), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SAMUROTT}, + {EVO_NONE, 0, SPECIES_SAMUROTT_HISUIAN}), + }, + +#define SAMUROTT_MISC_INFO \ + .catchRate = 45, \ + .expYield = 238, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Samurott"), \ + .cryId = CRY_SAMUROTT, \ + .natDexNum = NATIONAL_DEX_SAMUROTT, \ + .categoryName = _("Formidable"), \ + .height = 15, \ + .pokemonScale = 268, \ + .pokemonOffset = 2, \ + .trainerScale = 271, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Samurott, \ + .formSpeciesIdTable = sSamurottFormSpeciesIdTable + + [SPECIES_SAMUROTT] = + { + SAMUROTT_MISC_INFO, + .baseHP = 95, + .baseAttack = 100, + .baseDefense = 85, + .baseSpeed = 70, + .baseSpAttack = 108, + .baseSpDefense = 70, + .types = { TYPE_WATER, TYPE_WATER }, + .evYield_SpAttack = 3, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHELL_ARMOR }, + .weight = 946, + .description = COMPOUND_STRING( + "One swing of the seamitars attached\n" + "to its armor can fell an opponent.\n" + "A simple glare from one of them is\n" + "enough to intimidate most enemies."), + FRONT_PIC(Samurott, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Samurott, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Samurott, 64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(Samurott), + ICON(Samurott, 2), + LEARNSETS(Samurott), + }, + +#if P_HISUIAN_FORMS + [SPECIES_SAMUROTT_HISUIAN] = + { + SAMUROTT_MISC_INFO, + .baseHP = 90, + .baseAttack = 108, + .baseDefense = 80, + .baseSpeed = 85, + .baseSpAttack = 100, + .baseSpDefense = 65, + .types = { TYPE_WATER, TYPE_DARK }, + .evYield_Attack = 3, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHARPNESS }, + .weight = 582, + .description = COMPOUND_STRING( + "Hard of heart and deft of blade,\n" + "this rare form of Samurott is a\n" + "product of the Pokémon's evolution in the\n" + "region of Hisui."), + FRONT_PIC(SamurottHisuian, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_SamurottHisuian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SamurottHisuian, 64, 64), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(SamurottHisuian), + ICON(SamurottHisuian, 0), + LEARNSETS(SamurottHisuian), + .isHisuianForm = TRUE, + }, +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_OSHAWOTT + +#if P_FAMILY_PATRAT + [SPECIES_PATRAT] = + { + .baseHP = 45, + .baseAttack = 55, + .baseDefense = 39, + .baseSpeed = 42, + .baseSpAttack = 35, + .baseSpDefense = 39, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 255, + .expYield = 51, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_RUN_AWAY, ABILITY_KEEN_EYE, ABILITY_ANALYTIC }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Patrat"), + .cryId = CRY_PATRAT, + .natDexNum = NATIONAL_DEX_PATRAT, + .categoryName = _("Scout"), + .height = 5, + .weight = 116, + .description = COMPOUND_STRING( + "Extremely cautious, they take shifts to\n" + "maintain a constant watch of their nest.\n" + "Using food stored in cheek pouches,\n" + "they can keep watch for days."), + .pokemonScale = 432, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Patrat, 48, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Patrat, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Patrat, 64, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Patrat), + ICON(Patrat, 2), + .footprint = gMonFootprint_Patrat, + LEARNSETS(Patrat), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_WATCHOG}), + }, + + [SPECIES_WATCHOG] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 69, + .baseSpeed = 77, + .baseSpAttack = 60, + .baseSpDefense = 69, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 255, + .expYield = 147, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_ILLUMINATE, ABILITY_KEEN_EYE, ABILITY_ANALYTIC }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Watchog"), + .cryId = CRY_WATCHOG, + .natDexNum = NATIONAL_DEX_WATCHOG, + .categoryName = _("Lookout"), + .height = 11, + .weight = 270, + .description = COMPOUND_STRING( + "Using luminescent matter, it makes its\n" + "eyes and body glow and stuns attacking\n" + "opponents. Keen eyesight lets them see\n" + "in the dark."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Watchog, 32, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Watchog, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Watchog, 56, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Watchog), + ICON(Watchog, 2), + .footprint = gMonFootprint_Watchog, + LEARNSETS(Watchog), + }, +#endif //P_FAMILY_PATRAT + +#if P_FAMILY_LILLIPUP + [SPECIES_LILLIPUP] = + { + .baseHP = 45, + .baseAttack = 60, + .baseDefense = 45, + .baseSpeed = 55, + .baseSpAttack = 25, + .baseSpDefense = 45, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 255, + .expYield = 55, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_VITAL_SPIRIT, ABILITY_PICKUP, ABILITY_RUN_AWAY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Lillipup"), + .cryId = CRY_LILLIPUP, + .natDexNum = NATIONAL_DEX_LILLIPUP, + .categoryName = _("Puppy"), + .height = 4, + .weight = 41, + .description = COMPOUND_STRING( + "It faces strong opponents with great\n" + "courage. Because it doesn't yelp, it's\n" + "extremely popular with Trainers who live\n" + "in apartment buildings."), + .pokemonScale = 491, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Lillipup, 32, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Lillipup, + .frontAnimId = ANIM_H_JUMPS, + BACK_PIC(Lillipup, 48, 48), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Lillipup), + ICON(Lillipup, 2), + .footprint = gMonFootprint_Lillipup, + LEARNSETS(Lillipup), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_HERDIER}), + }, + + [SPECIES_HERDIER] = + { + .baseHP = 65, + .baseAttack = 80, + .baseDefense = 65, + .baseSpeed = 60, + .baseSpAttack = 35, + .baseSpDefense = 65, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 120, + .expYield = 130, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_SAND_RUSH, ABILITY_SCRAPPY }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Herdier"), + .cryId = CRY_HERDIER, + .natDexNum = NATIONAL_DEX_HERDIER, + .categoryName = _("Loyal Dog"), + .height = 9, + .weight = 147, + .description = COMPOUND_STRING( + "Its dense black fur grows continuously.\n" + "The high cost of keeping its hard fur\n" + "properly groomed makes this a\n" + "troublesome Pokémon to train."), + .pokemonScale = 338, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Herdier, 48, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Herdier, + .frontAnimId = ANIM_H_STRETCH, + BACK_PIC(Herdier, 48, 56), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Herdier), + ICON(Herdier, 2), + .footprint = gMonFootprint_Herdier, + LEARNSETS(Herdier), + .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_STOUTLAND}), + }, + + [SPECIES_STOUTLAND] = + { + .baseHP = 85, + .baseAttack = P_UPDATED_STATS >= GEN_6 ? 110 : 100, + .baseDefense = 90, + .baseSpeed = 80, + .baseSpAttack = 45, + .baseSpDefense = 90, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 45, + .expYield = 225, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_SAND_RUSH, ABILITY_SCRAPPY }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Stoutland"), + .cryId = CRY_STOUTLAND, + .natDexNum = NATIONAL_DEX_STOUTLAND, + .categoryName = _("Big-Hearted"), + .height = 12, + .weight = 610, + .description = COMPOUND_STRING( + "Intelligent, good-natured, and valiant,\n" + "there could be no concern that it would\n" + "ever attack people. Some parents even\n" + "trust it to babysit."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Stoutland, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Stoutland, + .frontAnimId = ANIM_H_SLIDE, + BACK_PIC(Stoutland, 64, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Stoutland), + ICON(Stoutland, 2), + .footprint = gMonFootprint_Stoutland, + LEARNSETS(Stoutland), + }, +#endif //P_FAMILY_LILLIPUP + +#if P_FAMILY_PURRLOIN + [SPECIES_PURRLOIN] = + { + .baseHP = 41, + .baseAttack = 50, + .baseDefense = 37, + .baseSpeed = 66, + .baseSpAttack = 50, + .baseSpDefense = 37, + .types = { TYPE_DARK, TYPE_DARK }, + .catchRate = 255, + .expYield = 56, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_LIMBER, ABILITY_UNBURDEN, ABILITY_PRANKSTER }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Purrloin"), + .cryId = CRY_PURRLOIN, + .natDexNum = NATIONAL_DEX_PURRLOIN, + .categoryName = _("Devious"), + .height = 4, + .weight = 101, + .description = COMPOUND_STRING( + "Their deceptively cute act is the\n" + "perfect ruse. They steal from people for\n" + "fun, but their victims can't help but\n" + "forgive them."), + .pokemonScale = 491, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Purrloin, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Purrloin, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Purrloin, 56, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Purrloin), + ICON(Purrloin, 0), + .footprint = gMonFootprint_Purrloin, + LEARNSETS(Purrloin), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LIEPARD}), + }, + + [SPECIES_LIEPARD] = + { + .baseHP = 64, + .baseAttack = 88, + .baseDefense = 50, + .baseSpeed = 106, + .baseSpAttack = 88, + .baseSpDefense = 50, + .types = { TYPE_DARK, TYPE_DARK }, + .catchRate = 90, + .expYield = 156, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_LIMBER, ABILITY_UNBURDEN, ABILITY_PRANKSTER }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Liepard"), + .cryId = CRY_LIEPARD, + .natDexNum = NATIONAL_DEX_LIEPARD, + .categoryName = _("Cruel"), + .height = 11, + .weight = 375, + .description = COMPOUND_STRING( + "Many Trainers are drawn to their\n" + "beautiful form and fur. These Pokémon\n" + "vanish and appear unexpectedly.\n" + "They run silently in the night."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Liepard, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Liepard, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Liepard, 56, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_STRETCH, + PALETTES(Liepard), + ICON(Liepard, 0), + .footprint = gMonFootprint_Liepard, + LEARNSETS(Liepard), + }, +#endif //P_FAMILY_PURRLOIN + +#if P_FAMILY_PANSAGE + [SPECIES_PANSAGE] = + { + .baseHP = 50, + .baseAttack = 53, + .baseDefense = 48, + .baseSpeed = 64, + .baseSpAttack = 53, + .baseSpDefense = 48, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 190, + .expYield = 63, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_OVERGROW }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Pansage"), + .cryId = CRY_PANSAGE, + .natDexNum = NATIONAL_DEX_PANSAGE, + .categoryName = _("Grass Monkey"), + .height = 6, + .weight = 105, + .description = COMPOUND_STRING( + "This Pokémon dwells deep in the forest.\n" + "It's good at finding berries and gathers\n" + "them from all over. It's kind enough to\n" + "share them with friends."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pansage, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Pansage, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + BACK_PIC(Pansage, 48, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Pansage), + ICON(Pansage, 1), + .footprint = gMonFootprint_Pansage, + LEARNSETS(Pansage), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SIMISAGE}), + }, + + [SPECIES_SIMISAGE] = + { + .baseHP = 75, + .baseAttack = 98, + .baseDefense = 63, + .baseSpeed = 101, + .baseSpAttack = 98, + .baseSpDefense = 63, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 75, + .expYield = 174, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_OVERGROW }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Simisage"), + .cryId = CRY_SIMISAGE, + .natDexNum = NATIONAL_DEX_SIMISAGE, + .categoryName = _("Thorn Monkey"), + .height = 11, + .weight = 305, + .description = COMPOUND_STRING( + "Ill tempered, it attacks enemies by\n" + "swinging its barbed tail around wildly.\n" + "The leaf growing on its head is\n" + "very bitter."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Simisage, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Simisage, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Simisage, 56, 64), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Simisage), + ICON(Simisage, 1), + .footprint = gMonFootprint_Simisage, + LEARNSETS(Simisage), + }, +#endif //P_FAMILY_PANSAGE + +#if P_FAMILY_PANSEAR + [SPECIES_PANSEAR] = + { + .baseHP = 50, + .baseAttack = 53, + .baseDefense = 48, + .baseSpeed = 64, + .baseSpAttack = 53, + .baseSpDefense = 48, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 190, + .expYield = 63, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_BLAZE }, + .bodyColor = BODY_COLOR_RED, + .noFlip = TRUE, + .speciesName = _("Pansear"), + .cryId = CRY_PANSEAR, + .natDexNum = NATIONAL_DEX_PANSEAR, + .categoryName = _("High Temp"), + .height = 6, + .weight = 110, + .description = COMPOUND_STRING( + "The fire within the tuft on its head can\n" + "reach up to 600ºF. Very intelligent,\n" + "it roasts berries before eating them.\n" + "It likes to help people."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pansear, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Pansear, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Pansear, 48, 56), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Pansear), + ICON(Pansear, 2), + .footprint = gMonFootprint_Pansear, + LEARNSETS(Pansear), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_SIMISEAR}), + }, + + [SPECIES_SIMISEAR] = + { + .baseHP = 75, + .baseAttack = 98, + .baseDefense = 63, + .baseSpeed = 101, + .baseSpAttack = 98, + .baseSpDefense = 63, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 75, + .expYield = 174, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_BLAZE }, + .bodyColor = BODY_COLOR_RED, + .noFlip = TRUE, + .speciesName = _("Simisear"), + .cryId = CRY_SIMISEAR, + .natDexNum = NATIONAL_DEX_SIMISEAR, + .categoryName = _("Ember"), + .height = 10, + .weight = 280, + .description = COMPOUND_STRING( + "It loves sweets because they become\n" + "energy for the fire burning inside its\n" + "body. It scatters embers from its head\n" + "and tail to sear its opponents."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Simisear, 56, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Simisear, + .frontAnimId = ANIM_SWING_CONCAVE_FAST, + BACK_PIC(Simisear, 64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Simisear), + ICON(Simisear, 2), + .footprint = gMonFootprint_Simisear, + LEARNSETS(Simisear), + }, +#endif //P_FAMILY_PANSEAR + +#if P_FAMILY_PANPOUR + [SPECIES_PANPOUR] = + { + .baseHP = 50, + .baseAttack = 53, + .baseDefense = 48, + .baseSpeed = 64, + .baseSpAttack = 53, + .baseSpDefense = 48, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 190, + .expYield = 63, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_TORRENT }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Panpour"), + .cryId = CRY_PANPOUR, + .natDexNum = NATIONAL_DEX_PANPOUR, + .categoryName = _("Spray"), + .height = 6, + .weight = 135, + .description = COMPOUND_STRING( + "The water stored inside the tuft of its\n" + "head is rich in nutrients. It waters\n" + "plants using its tail, plants that\n" + "receive its water grow large."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Panpour, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Panpour, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Panpour, 48, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Panpour), + ICON(Panpour, 2), + .footprint = gMonFootprint_Panpour, + LEARNSETS(Panpour), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_SIMIPOUR}), + }, + + [SPECIES_SIMIPOUR] = + { + .baseHP = 75, + .baseAttack = 98, + .baseDefense = 63, + .baseSpeed = 101, + .baseSpAttack = 98, + .baseSpDefense = 63, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 75, + .expYield = 174, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_GLUTTONY, ABILITY_NONE, ABILITY_TORRENT }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Simipour"), + .cryId = CRY_SIMIPOUR, + .natDexNum = NATIONAL_DEX_SIMIPOUR, + .categoryName = _("Geyser"), + .height = 10, + .weight = 290, + .description = COMPOUND_STRING( + "It can shoot highly-pressurised water\n" + "from its tail with enough power to\n" + "break through a solid concrete wall.\n" + "It prefers places with clean water."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Simipour, 56, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Simipour, + .frontAnimId = ANIM_H_STRETCH, + BACK_PIC(Simipour, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Simipour), + ICON(Simipour, 2), + .footprint = gMonFootprint_Simipour, + LEARNSETS(Simipour), + }, +#endif //P_FAMILY_PANPOUR + +#if P_FAMILY_MUNNA + [SPECIES_MUNNA] = + { + .baseHP = 76, + .baseAttack = 25, + .baseDefense = 45, + .baseSpeed = 24, + .baseSpAttack = 67, + .baseSpDefense = 55, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 190, + .expYield = 58, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_FOREWARN, ABILITY_SYNCHRONIZE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Munna"), + .cryId = CRY_MUNNA, + .natDexNum = NATIONAL_DEX_MUNNA, + .categoryName = _("Dream Eater"), + .height = 6, + .weight = 233, + .description = COMPOUND_STRING( + "This Pokémon appears before people\n" + "and Pokémon who are having nightmares\n" + "and eats those dreams. Munna always\n" + "float in the air. "), + .pokemonScale = 422, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Munna, 32, 32), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Munna, + .frontAnimId = ANIM_RISING_WOBBLE, + .enemyMonElevation = 7, + BACK_PIC(Munna, 48, 32), + .backPicYOffset = 16, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Munna), + ICON(Munna, 0), + .footprint = gMonFootprint_Munna, + LEARNSETS(Munna), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_MUSHARNA}), + }, + + [SPECIES_MUSHARNA] = + { + .baseHP = 116, + .baseAttack = 55, + .baseDefense = 85, + .baseSpeed = 29, + .baseSpAttack = 107, + .baseSpDefense = 95, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 75, + .expYield = 170, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_FOREWARN, ABILITY_SYNCHRONIZE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Musharna"), + .cryId = CRY_MUSHARNA, + .natDexNum = NATIONAL_DEX_MUSHARNA, + .categoryName = _("Drowsing"), + .height = 11, + .weight = 605, + .description = COMPOUND_STRING( + "The mist emanating from their foreheads\n" + "is packed with the dreams of people and\n" + "Pokémon. It changes into different colors\n" + "depending on the dream that was eaten."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Musharna, 64, 64), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Musharna, + .frontAnimId = ANIM_ROTATE_TO_SIDES_TWICE, + .enemyMonElevation = 5, + BACK_PIC(Musharna, 64, 64), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_GROW, + PALETTES(Musharna), + ICON(Musharna, 0), + .footprint = gMonFootprint_Musharna, + LEARNSETS(Musharna), + }, +#endif //P_FAMILY_MUNNA + +#if P_FAMILY_PIDOVE + [SPECIES_PIDOVE] = + { + .baseHP = 50, + .baseAttack = 55, + .baseDefense = 50, + .baseSpeed = 43, + .baseSpAttack = 36, + .baseSpDefense = 30, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 255, + .expYield = 53, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_BIG_PECKS, ABILITY_SUPER_LUCK, ABILITY_RIVALRY }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Pidove"), + .cryId = CRY_PIDOVE, + .natDexNum = NATIONAL_DEX_PIDOVE, + .categoryName = _("Tiny Pigeon"), + .height = 3, + .weight = 21, + .description = COMPOUND_STRING( + "This very forgetful Pokémon will wait for\n" + "a new order from its Trainer even though\n" + "it already has one. Flocks often gather\n" + "in parks and plazas."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pidove, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Pidove, + .frontAnimId = ANIM_V_JUMPS_SMALL, + BACK_PIC(Pidove, 48, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Pidove), + ICON(Pidove, 0), + .footprint = gMonFootprint_Pidove, + LEARNSETS(Pidove), + .evolutions = EVOLUTION({EVO_LEVEL, 21, SPECIES_TRANQUILL}), + }, + + [SPECIES_TRANQUILL] = + { + .baseHP = 62, + .baseAttack = 77, + .baseDefense = 62, + .baseSpeed = 65, + .baseSpAttack = 50, + .baseSpDefense = 42, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 120, + .expYield = 125, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_BIG_PECKS, ABILITY_SUPER_LUCK, ABILITY_RIVALRY }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Tranquill"), + .cryId = CRY_TRANQUILL, + .natDexNum = NATIONAL_DEX_TRANQUILL, + .categoryName = _("Wild Pigeon"), + .height = 6, + .weight = 150, + .description = COMPOUND_STRING( + "No matter where in the world it goes,\n" + "it knows where its nest is, so it can\n" + "always return to its Trainer's location\n" + "regardless of the distance."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Tranquill, 40, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Tranquill, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Tranquill, 56, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Tranquill), + ICON(Tranquill, 0), + .footprint = gMonFootprint_Tranquill, + LEARNSETS(Tranquill), + .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_UNFEZANT}), + }, + + [SPECIES_UNFEZANT] = + { + .baseHP = 80, + .baseAttack = P_UPDATED_STATS >= GEN_6 ? 115 : 105, + .baseDefense = 80, + .baseSpeed = 93, + .baseSpAttack = 65, + .baseSpDefense = 55, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 45, + .expYield = 220, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_BIG_PECKS, ABILITY_SUPER_LUCK, ABILITY_RIVALRY }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Unfezant"), + .cryId = CRY_UNFEZANT, + .natDexNum = NATIONAL_DEX_UNFEZANT, + .categoryName = _("Proud"), + .height = 12, + .weight = 290, + .description = COMPOUND_STRING( + "Males have plumage on their heads.\n" + "The females' flying abilities surpass\n" + "those of the males. They will only let\n" + "themselves feel close to their Trainers."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Unfezant, 56, 64), + FRONT_PIC_FEMALE(Unfezant, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Unfezant, + .frontAnimId = ANIM_SHRINK_GROW, + BACK_PIC(Unfezant, 64, 64), + BACK_PIC_FEMALE(Unfezant, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Unfezant), + PALETTE_FEMALE(Unfezant), + ICON(Unfezant, 1), + ICON_FEMALE(Unfezant, 1), + .footprint = gMonFootprint_Unfezant, + LEARNSETS(Unfezant), + }, +#endif //P_FAMILY_PIDOVE + +#if P_FAMILY_BLITZLE + [SPECIES_BLITZLE] = + { + .baseHP = 45, + .baseAttack = 60, + .baseDefense = 32, + .baseSpeed = 76, + .baseSpAttack = 50, + .baseSpDefense = 32, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 190, + .expYield = 59, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_LIGHTNING_ROD, ABILITY_MOTOR_DRIVE, ABILITY_SAP_SIPPER }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Blitzle"), + .cryId = CRY_BLITZLE, + .natDexNum = NATIONAL_DEX_BLITZLE, + .categoryName = _("Electrified"), + .height = 8, + .weight = 298, + .description = COMPOUND_STRING( + "Its mane shines when it discharges\n" + "electricity. They use the frequency and\n" + "rhythm of these flashes to communicate\n" + "with one another."), + .pokemonScale = 366, + .pokemonOffset = 8, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Blitzle, 40, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Blitzle, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Blitzle, 56, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Blitzle), + ICON(Blitzle, 2), + .footprint = gMonFootprint_Blitzle, + LEARNSETS(Blitzle), + .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_ZEBSTRIKA}), + }, + + [SPECIES_ZEBSTRIKA] = + { + .baseHP = 75, + .baseAttack = 100, + .baseDefense = 63, + .baseSpeed = 116, + .baseSpAttack = 80, + .baseSpDefense = 63, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 75, + .expYield = 174, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_LIGHTNING_ROD, ABILITY_MOTOR_DRIVE, ABILITY_SAP_SIPPER }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Zebstrika"), + .cryId = CRY_ZEBSTRIKA, + .natDexNum = NATIONAL_DEX_ZEBSTRIKA, + .categoryName = _("Thunderbolt"), + .height = 16, + .weight = 795, + .description = COMPOUND_STRING( + "When Zebstrika run at full speed, the\n" + "sound of thunder reverberates. It is\n" + "dangerous when it's angry as it shoots\n" + "lightning from its mane in all directions."), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + FRONT_PIC(Zebstrika, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Zebstrika, + .frontAnimId = ANIM_BACK_AND_LUNGE, + BACK_PIC(Zebstrika, 64, 64), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(Zebstrika), + ICON(Zebstrika, 2), + .footprint = gMonFootprint_Zebstrika, + LEARNSETS(Zebstrika), + }, +#endif //P_FAMILY_BLITZLE + +#if P_FAMILY_ROGGENROLA + [SPECIES_ROGGENROLA] = + { + .baseHP = 55, + .baseAttack = 75, + .baseDefense = 85, + .baseSpeed = 15, + .baseSpAttack = 25, + .baseSpDefense = 25, + .types = { TYPE_ROCK, TYPE_ROCK }, + .catchRate = 255, + .expYield = 56, + .evYield_Defense = 1, + .itemCommon = ITEM_EVERSTONE, + .itemRare = ITEM_HARD_STONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_STURDY, ABILITY_WEAK_ARMOR, ABILITY_SAND_FORCE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Roggenrola"), + .cryId = CRY_ROGGENROLA, + .natDexNum = NATIONAL_DEX_ROGGENROLA, + .categoryName = _("Mantle"), + .height = 4, + .weight = 180, + .description = COMPOUND_STRING( + "The hexagonal cavity is its ear.\n" + "It walks in the direction of sounds it\n" + "hears, but if the sounds cease, it panics\n" + "and topples over."), + .pokemonScale = 491, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Roggenrola, 24, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Roggenrola, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Roggenrola, 40, 48), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Roggenrola), + ICON(Roggenrola, 2), + .footprint = gMonFootprint_Roggenrola, + LEARNSETS(Roggenrola), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_BOLDORE}), + }, + + [SPECIES_BOLDORE] = + { + .baseHP = 70, + .baseAttack = 105, + .baseDefense = 105, + .baseSpeed = 20, + .baseSpAttack = 50, + .baseSpDefense = 40, + .types = { TYPE_ROCK, TYPE_ROCK }, + .catchRate = 120, + .expYield = 137, + .evYield_Attack = 1, + .evYield_Defense = 1, + .itemCommon = ITEM_EVERSTONE, + .itemRare = ITEM_HARD_STONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_STURDY, ABILITY_WEAK_ARMOR, ABILITY_SAND_FORCE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Boldore"), + .cryId = CRY_BOLDORE, + .natDexNum = NATIONAL_DEX_BOLDORE, + .categoryName = _("Ore"), + .height = 9, + .weight = 1020, + .description = COMPOUND_STRING( + "Its orange crystal is a mass of energy.\n" + "Just one crystal fragment would provide\n" + "enough fuel for a hundred dump trucks.\n" + "When it is healthy, its core sticks out."), + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Boldore, 56, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Boldore, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(Boldore, 64, 40), + .backPicYOffset = 16, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Boldore), + ICON(Boldore, 0), + .footprint = gMonFootprint_Boldore, + LEARNSETS(Boldore), + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GIGALITH}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GIGALITH}), + }, + + [SPECIES_GIGALITH] = + { + .baseHP = 85, + .baseAttack = 135, + .baseDefense = 130, + .baseSpeed = 25, + .baseSpAttack = 60, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 80 : 70, + .types = { TYPE_ROCK, TYPE_ROCK }, + .catchRate = 45, + .expYield = 232, + .evYield_Attack = 3, + .itemCommon = ITEM_EVERSTONE, + .itemRare = ITEM_HARD_STONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_STURDY, ABILITY_SAND_STREAM, ABILITY_SAND_FORCE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Gigalith"), + .cryId = CRY_GIGALITH, + .natDexNum = NATIONAL_DEX_GIGALITH, + .categoryName = _("Compressed"), + .height = 17, + .weight = 2600, + .description = COMPOUND_STRING( + "The blasts of energy it makes from\n" + "sunbeams have terrifying power.\n" + "However, it's not able to fire its blasts\n" + "at night or on rainy days."), + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 1, + FRONT_PIC(Gigalith, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Gigalith, + .frontAnimId = ANIM_ROTATE_UP_SLAM_DOWN, + BACK_PIC(Gigalith, 56, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Gigalith), + ICON(Gigalith, 0), + .footprint = gMonFootprint_Gigalith, + LEARNSETS(Gigalith), + }, +#endif //P_FAMILY_ROGGENROLA + +#if P_FAMILY_WOOBAT + [SPECIES_WOOBAT] = + { + .baseHP = P_UPDATED_STATS >= GEN_7 ? 65 : 55, + .baseAttack = 45, + .baseDefense = 43, + .baseSpeed = 72, + .baseSpAttack = 55, + .baseSpDefense = 43, + .types = { TYPE_PSYCHIC, TYPE_FLYING }, + .catchRate = 190, + .expYield = 65, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FLYING }, + .abilities = { ABILITY_UNAWARE, ABILITY_KLUTZ, ABILITY_SIMPLE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Woobat"), + .cryId = CRY_WOOBAT, + .natDexNum = NATIONAL_DEX_WOOBAT, + .categoryName = _("Bat"), + .height = 4, + .weight = 21, + .description = COMPOUND_STRING( + "Its habitat is dark forests and caves.\n" + "Suction from its nostrils enables it\n" + "to stick to cave walls during sleep.\n" + "It leaves a heart-shaped mark behind."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Woobat, 64, 32), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Woobat, + .frontAnimId = ANIM_FOUR_PETAL, + .enemyMonElevation = 19, + BACK_PIC(Woobat, 64, 32), + .backPicYOffset = 16, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Woobat), + ICON(Woobat, 0), + .footprint = gMonFootprint_Woobat, + LEARNSETS(Woobat), + .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_SWOOBAT}), + }, + + [SPECIES_SWOOBAT] = + { + .baseHP = 67, + .baseAttack = 57, + .baseDefense = 55, + .baseSpeed = 114, + .baseSpAttack = 77, + .baseSpDefense = 55, + .types = { TYPE_PSYCHIC, TYPE_FLYING }, + .catchRate = 45, + .expYield = 149, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FLYING }, + .abilities = { ABILITY_UNAWARE, ABILITY_KLUTZ, ABILITY_SIMPLE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Swoobat"), + .cryId = CRY_SWOOBAT, + .natDexNum = NATIONAL_DEX_SWOOBAT, + .categoryName = _("Courting"), + .height = 9, + .weight = 105, + .description = COMPOUND_STRING( + "Anyone who comes into contact with\n" + "the ultrasonic waves emitted by a\n" + "courting male experiences a positive\n" + "mood shift."), + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Swoobat, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Swoobat, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, + .enemyMonElevation = 10, + BACK_PIC(Swoobat, 64, 64), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Swoobat), + ICON(Swoobat, 0), + .footprint = gMonFootprint_Swoobat, + LEARNSETS(Swoobat), + }, +#endif //P_FAMILY_WOOBAT + +#if P_FAMILY_DRILBUR + [SPECIES_DRILBUR] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 40, + .baseSpeed = 68, + .baseSpAttack = 30, + .baseSpDefense = 45, + .types = { TYPE_GROUND, TYPE_GROUND }, + .catchRate = 120, + .expYield = 66, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SAND_RUSH, ABILITY_SAND_FORCE, ABILITY_MOLD_BREAKER }, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = TRUE, + .speciesName = _("Drilbur"), + .cryId = CRY_DRILBUR, + .natDexNum = NATIONAL_DEX_DRILBUR, + .categoryName = _("Mole"), + .height = 3, + .weight = 85, + .description = COMPOUND_STRING( + "It can dig through the ground at a\n" + "speed of 30 mph by spinning its body.\n" + "It could give a car running aboveground\n" + "a good race."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Drilbur, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Drilbur, + .frontAnimId = ANIM_SWING_CONCAVE_FAST_SHORT, + BACK_PIC(Drilbur, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Drilbur), + ICON(Drilbur, 0), + .footprint = gMonFootprint_Drilbur, + LEARNSETS(Drilbur), + .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_EXCADRILL}), + }, + + [SPECIES_EXCADRILL] = + { + .baseHP = 110, + .baseAttack = 135, + .baseDefense = 60, + .baseSpeed = 88, + .baseSpAttack = 50, + .baseSpDefense = 65, + .types = { TYPE_GROUND, TYPE_STEEL }, + .catchRate = 60, + .expYield = 178, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SAND_RUSH, ABILITY_SAND_FORCE, ABILITY_MOLD_BREAKER }, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = TRUE, + .speciesName = _("Excadrill"), + .cryId = CRY_EXCADRILL, + .natDexNum = NATIONAL_DEX_EXCADRILL, + .categoryName = _("Subterrene"), + .height = 7, + .weight = 404, + .description = COMPOUND_STRING( + "More than 300 feet below the surface,\n" + "they build mazelike nests. Their activity\n" + "can be destructive to subway tunnels,\n" + "but it can also help with construction."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Excadrill, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Excadrill, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Excadrill, 64, 64), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Excadrill), + ICON(Excadrill, 0), + .footprint = gMonFootprint_Excadrill, + LEARNSETS(Excadrill), + }, +#endif //P_FAMILY_DRILBUR + +#define AUDINO_MISC_INFO \ + .catchRate = 255, \ + .evYield_HP = 2, \ + .itemCommon = ITEM_ORAN_BERRY, \ + .itemRare = ITEM_SITRUS_BERRY, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_FAST, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, \ + .speciesName = _("Audino"), \ + .natDexNum = NATIONAL_DEX_AUDINO, \ + .categoryName = _("Hearing"), \ + .footprint = gMonFootprint_Audino, \ + LEARNSETS(Audino), \ + .formSpeciesIdTable = sAudinoFormSpeciesIdTable, \ + .formChangeTable = sAudinoFormChangeTable + +#if P_FAMILY_AUDINO + [SPECIES_AUDINO] = + { + AUDINO_MISC_INFO, + .baseHP = 103, + .baseAttack = 60, + .baseDefense = 86, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 86, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .expYield = 390, + .abilities = { ABILITY_HEALER, ABILITY_REGENERATOR, ABILITY_KLUTZ }, + .bodyColor = BODY_COLOR_PINK, + .cryId = CRY_AUDINO, + .height = 11, + .weight = 310, + .description = COMPOUND_STRING( + "Its auditory sense is astounding.\n" + "Using the feelers on its ears, it can tell\n" + "how someone is feeling or when an egg\n" + "might hatch."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Audino, 40, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Audino, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Audino, 56, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Audino), + ICON(Audino, 1), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_AUDINO_MEGA] = + { + AUDINO_MISC_INFO, + .baseHP = 103, + .baseAttack = 60, + .baseDefense = 126, + .baseSpeed = 50, + .baseSpAttack = 80, + .baseSpDefense = 126, + .types = { TYPE_NORMAL, TYPE_FAIRY }, + .expYield = 425, + .abilities = { ABILITY_HEALER, ABILITY_HEALER, ABILITY_HEALER }, + .bodyColor = BODY_COLOR_WHITE, + .cryId = CRY_AUDINO_MEGA, + .height = 15, + .weight = 320, + .description = COMPOUND_STRING( + "Mega Audino emits a soothing pulse from\n" + "its body that reduces hostility in others.\n" + "Anything that comes into contact with its\n" + "second feelers will fall into a deep sleep."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(AudinoMega, 48, 64), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_AudinoMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(AudinoMega, 56, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(AudinoMega), + ICON(AudinoMega, 1), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_AUDINO + +#if P_FAMILY_TIMBURR + [SPECIES_TIMBURR] = + { + .baseHP = 75, + .baseAttack = 80, + .baseDefense = 55, + .baseSpeed = 35, + .baseSpAttack = 25, + .baseSpDefense = 35, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 180, + .expYield = 61, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_GUTS, ABILITY_SHEER_FORCE, ABILITY_IRON_FIST }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Timburr"), + .cryId = CRY_TIMBURR, + .natDexNum = NATIONAL_DEX_TIMBURR, + .categoryName = _("Muscular"), + .height = 6, + .weight = 125, + .description = COMPOUND_STRING( + "These Pokémon appear at building\n" + "sites and help out with construction.\n" + "They always carry squared logs.\n" + "As they grow, they carry bigger logs."), + .pokemonScale = 422, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Timburr, 48, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Timburr, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Timburr, 64, 40), + .backPicYOffset = 15, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Timburr), + ICON(Timburr, 1), + .footprint = gMonFootprint_Timburr, + LEARNSETS(Timburr), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_GURDURR}), + }, + + [SPECIES_GURDURR] = + { + .baseHP = 85, + .baseAttack = 105, + .baseDefense = 85, + .baseSpeed = 40, + .baseSpAttack = 40, + .baseSpDefense = 50, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 90, + .expYield = 142, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_GUTS, ABILITY_SHEER_FORCE, ABILITY_IRON_FIST }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Gurdurr"), + .cryId = CRY_GURDURR, + .natDexNum = NATIONAL_DEX_GURDURR, + .categoryName = _("Muscular"), + .height = 12, + .weight = 400, + .description = COMPOUND_STRING( + "They strengthen their bodies by carrying\n" + "steel beams. This Pokémon is so muscular\n" + "and strongly built that even a group of\n" + "wrestlers could not make it budge an inch."), + .pokemonScale = 282, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Gurdurr, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Gurdurr, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Gurdurr, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Gurdurr), + ICON(Gurdurr, 1), + .footprint = gMonFootprint_Gurdurr, + LEARNSETS(Gurdurr), + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_CONKELDURR}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_CONKELDURR}), + }, + + [SPECIES_CONKELDURR] = + { + .baseHP = 105, + .baseAttack = 140, + .baseDefense = 95, + .baseSpeed = 45, + .baseSpAttack = 55, + .baseSpDefense = 65, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 227, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_GUTS, ABILITY_SHEER_FORCE, ABILITY_IRON_FIST }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Conkeldurr"), + .cryId = CRY_CONKELDURR, + .natDexNum = NATIONAL_DEX_CONKELDURR, + .categoryName = _("Muscular"), + .height = 14, + .weight = 870, + .description = COMPOUND_STRING( + "They use concrete pillars as walking\n" + "canes. Rather than rely solely on force,\n" + "they master moves that utilize the\n" + "centrifugal force of spinning concrete."), + .pokemonScale = 265, + .pokemonOffset = 3, + .trainerScale = 262, + .trainerOffset = 0, + FRONT_PIC(Conkeldurr, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Conkeldurr, + .frontAnimId = ANIM_V_SHAKE_TWICE, + BACK_PIC(Conkeldurr, 64, 56), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Conkeldurr), + ICON(Conkeldurr, 1), + .footprint = gMonFootprint_Conkeldurr, + LEARNSETS(Conkeldurr), + }, +#endif //P_FAMILY_TIMBURR + +#if P_FAMILY_TYMPOLE + [SPECIES_TYMPOLE] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 40, + .baseSpeed = 64, + .baseSpAttack = 50, + .baseSpDefense = 40, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 255, + .expYield = 59, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_HYDRATION, ABILITY_WATER_ABSORB }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Tympole"), + .cryId = CRY_TYMPOLE, + .natDexNum = NATIONAL_DEX_TYMPOLE, + .categoryName = _("Tadpole"), + .height = 5, + .weight = 45, + .description = COMPOUND_STRING( + "By vibrating its cheeks, it emits sound\n" + "waves imperceptible to humans. It uses\n" + "the rhythm of these sounds to talk and\n" + "warns others of danger."), + .pokemonScale = 432, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Tympole, 40, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Tympole, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + BACK_PIC(Tympole, 40, 32), + .backPicYOffset = 17, + .backAnimId = BACK_ANIM_H_SPRING, + PALETTES(Tympole), + ICON(Tympole, 2), + .footprint = gMonFootprint_Tympole, + LEARNSETS(Tympole), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_PALPITOAD}), + }, + + [SPECIES_PALPITOAD] = + { + .baseHP = 75, + .baseAttack = 65, + .baseDefense = 55, + .baseSpeed = 69, + .baseSpAttack = 65, + .baseSpDefense = 55, + .types = { TYPE_WATER, TYPE_GROUND }, + .catchRate = 120, + .expYield = 134, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_HYDRATION, ABILITY_WATER_ABSORB }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Palpitoad"), + .cryId = CRY_PALPITOAD, + .natDexNum = NATIONAL_DEX_PALPITOAD, + .categoryName = _("Vibration"), + .height = 8, + .weight = 170, + .description = COMPOUND_STRING( + "It lives in the water and on land.\n" + "When they vibrate the bumps on their\n" + "heads, they can make waves in water\n" + "or earthquake-like vibrations on land."), + .pokemonScale = 366, + .pokemonOffset = 10, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Palpitoad, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Palpitoad, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + BACK_PIC(Palpitoad, 56, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Palpitoad), + ICON(Palpitoad, 2), + .footprint = gMonFootprint_Palpitoad, + LEARNSETS(Palpitoad), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SEISMITOAD}), + }, + + [SPECIES_SEISMITOAD] = + { + .baseHP = 105, + .baseAttack = P_UPDATED_STATS >= GEN_6 ? 95 : 85, + .baseDefense = 75, + .baseSpeed = 74, + .baseSpAttack = 85, + .baseSpDefense = 75, + .types = { TYPE_WATER, TYPE_GROUND }, + .catchRate = 45, + .expYield = 229, + .evYield_HP = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_POISON_TOUCH, ABILITY_WATER_ABSORB }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Seismitoad"), + .cryId = CRY_SEISMITOAD, + .natDexNum = NATIONAL_DEX_SEISMITOAD, + .categoryName = _("Vibration"), + .height = 15, + .weight = 620, + .description = COMPOUND_STRING( + "It increases the power of its punches\n" + "by vibrating the bumps on its fists.\n" + "They can also shoot paralyzing liquid\n" + "from their head bumps."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(Seismitoad, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Seismitoad, + .frontAnimId = ANIM_H_JUMPS, + BACK_PIC(Seismitoad, 64, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Seismitoad), + ICON(Seismitoad, 0), + .footprint = gMonFootprint_Seismitoad, + LEARNSETS(Seismitoad), + }, +#endif //P_FAMILY_TYMPOLE + +#if P_FAMILY_THROH + [SPECIES_THROH] = + { + .baseHP = 120, + .baseAttack = 100, + .baseDefense = 85, + .baseSpeed = 45, + .baseSpAttack = 30, + .baseSpDefense = 85, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 163, + .evYield_HP = 2, + .itemRare = ITEM_BLACK_BELT, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_GUTS, ABILITY_INNER_FOCUS, ABILITY_MOLD_BREAKER }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Throh"), + .cryId = CRY_THROH, + .natDexNum = NATIONAL_DEX_THROH, + .categoryName = _("Judo"), + .height = 13, + .weight = 555, + .description = COMPOUND_STRING( + "When it tightens its belt, it becomes\n" + "stronger. Wild Throh use vines to weave\n" + "their own belts. It changes belts as it\n" + "gets more powerful."), + .pokemonScale = 272, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Throh, 64, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Throh, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + BACK_PIC(Throh, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Throh), + ICON(Throh, 0), + .footprint = gMonFootprint_Throh, + LEARNSETS(Throh), + }, +#endif //P_FAMILY_THROH + +#if P_FAMILY_SAWK + [SPECIES_SAWK] = + { + .baseHP = 75, + .baseAttack = 125, + .baseDefense = 75, + .baseSpeed = 85, + .baseSpAttack = 30, + .baseSpDefense = 75, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 163, + .evYield_Attack = 2, + .itemRare = ITEM_BLACK_BELT, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_STURDY, ABILITY_INNER_FOCUS, ABILITY_MOLD_BREAKER }, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + .speciesName = _("Sawk"), + .cryId = CRY_SAWK, + .natDexNum = NATIONAL_DEX_SAWK, + .categoryName = _("Karate"), + .height = 14, + .weight = 510, + .description = COMPOUND_STRING( + "The sound of Sawk punching boulders\n" + "and trees can be heard all the way from\n" + "the mountains where they train.\n" + "Disturbing their training angers them."), + .pokemonScale = 265, + .pokemonOffset = 4, + .trainerScale = 262, + .trainerOffset = 0, + FRONT_PIC(Sawk, 56, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Sawk, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Sawk, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_H_STRETCH, + PALETTES(Sawk), + ICON(Sawk, 0), + .footprint = gMonFootprint_Sawk, + LEARNSETS(Sawk), + }, +#endif //P_FAMILY_SAWK + +#if P_FAMILY_SEWADDLE + [SPECIES_SEWADDLE] = + { + .baseHP = 45, + .baseAttack = 53, + .baseDefense = 70, + .baseSpeed = 42, + .baseSpAttack = 40, + .baseSpDefense = 60, + .types = { TYPE_BUG, TYPE_GRASS }, + .catchRate = 255, + .expYield = 62, + .evYield_Defense = 1, + .itemRare = ITEM_MENTAL_HERB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_CHLOROPHYLL, ABILITY_OVERCOAT }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Sewaddle"), + .cryId = CRY_SEWADDLE, + .natDexNum = NATIONAL_DEX_SEWADDLE, + .categoryName = _("Sewing"), + .height = 3, + .weight = 25, + .description = COMPOUND_STRING( + "It chews up leaves and sews them with\n" + "sticky thread extruded from its mouth.\n" + "Since this Pokémon makes its own clothes,\n" + "it is a mascot for fashion designers."), + .pokemonScale = 530, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Sewaddle, 40, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Sewaddle, + .frontAnimId = ANIM_CIRCLE_INTO_BG, + BACK_PIC(Sewaddle, 40, 48), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Sewaddle), + ICON(Sewaddle, 1), + .footprint = gMonFootprint_Sewaddle, + LEARNSETS(Sewaddle), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_SWADLOON}), + }, + + [SPECIES_SWADLOON] = + { + .baseHP = 55, + .baseAttack = 63, + .baseDefense = 90, + .baseSpeed = 42, + .baseSpAttack = 50, + .baseSpDefense = 80, + .types = { TYPE_BUG, TYPE_GRASS }, + .catchRate = 120, + .expYield = 133, + .evYield_Defense = 2, + .itemRare = ITEM_MENTAL_HERB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_LEAF_GUARD, ABILITY_CHLOROPHYLL, ABILITY_OVERCOAT }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Swadloon"), + .cryId = CRY_SWADLOON, + .natDexNum = NATIONAL_DEX_SWADLOON, + .categoryName = _("Leaf-Wrapped"), + .height = 5, + .weight = 73, + .description = COMPOUND_STRING( + "Forests where Swadloon live have\n" + "superb foliage because the nutrients\n" + "they make from fallen leaves nourish\n" + "the plant life."), + .pokemonScale = 432, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Swadloon, 56, 48), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Swadloon, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + BACK_PIC(Swadloon, 48, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Swadloon), + ICON(Swadloon, 1), + .footprint = gMonFootprint_Swadloon, + LEARNSETS(Swadloon), + .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_LEAVANNY}), + }, + + [SPECIES_LEAVANNY] = + { + .baseHP = 75, + .baseAttack = 103, + .baseDefense = 80, + .baseSpeed = 92, + .baseSpAttack = 70, + .baseSpDefense = P_UPDATED_STATS >= GEN_6 ? 80 : 70, + .types = { TYPE_BUG, TYPE_GRASS }, + .catchRate = 45, + .expYield = 225, + .evYield_Attack = 3, + .itemRare = ITEM_MENTAL_HERB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_CHLOROPHYLL, ABILITY_OVERCOAT }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Leavanny"), + .cryId = CRY_LEAVANNY, + .natDexNum = NATIONAL_DEX_LEAVANNY, + .categoryName = _("Nurturing"), + .height = 12, + .weight = 205, + .description = COMPOUND_STRING( + "It keeps its eggs warm with heat from\n" + "fermenting leaves. It also uses leaves to\n" + "weave warm wrappings for Sewaddle by\n" + "using the silk secreted from its mouth."), + .pokemonScale = 282, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Leavanny, 48, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Leavanny, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Leavanny, 56, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(Leavanny), + ICON(Leavanny, 1), + .footprint = gMonFootprint_Leavanny, + LEARNSETS(Leavanny), + }, +#endif //P_FAMILY_SEWADDLE + +#if P_FAMILY_VENIPEDE + [SPECIES_VENIPEDE] = + { + .baseHP = 30, + .baseAttack = 45, + .baseDefense = 59, + .baseSpeed = 57, + .baseSpAttack = 30, + .baseSpDefense = 39, + .types = { TYPE_BUG, TYPE_POISON }, + .catchRate = 255, + .expYield = 52, + .evYield_Defense = 1, + .itemRare = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + #if P_UPDATED_ABILITIES >= GEN_6 + .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_SPEED_BOOST }, + #else + .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_QUICK_FEET }, + #endif + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Venipede"), + .cryId = CRY_VENIPEDE, + .natDexNum = NATIONAL_DEX_VENIPEDE, + .categoryName = _("Centipede"), + .height = 4, + .weight = 53, + .description = COMPOUND_STRING( + "Using the feelers on its head and tail,\n" + "it picks up vibrations in the air to\n" + "determine its prey's location and state.\n" + "It is brutally aggressive."), + .pokemonScale = 491, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Venipede, 48, 32), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Venipede, + .frontAnimId = ANIM_H_SLIDE, + BACK_PIC(Venipede, 64, 40), + .backPicYOffset = 14, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Venipede), + ICON(Venipede, 1), + .footprint = gMonFootprint_Venipede, + LEARNSETS(Venipede), + .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_WHIRLIPEDE}), + }, + + [SPECIES_WHIRLIPEDE] = + { + .baseHP = 40, + .baseAttack = 55, + .baseDefense = 99, + .baseSpeed = 47, + .baseSpAttack = 40, + .baseSpDefense = 79, + .types = { TYPE_BUG, TYPE_POISON }, + .catchRate = 120, + .expYield = 126, + .evYield_Defense = 2, + .itemRare = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + #if P_UPDATED_ABILITIES >= GEN_6 + .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_SPEED_BOOST }, + #else + .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_QUICK_FEET }, + #endif + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Whirlipede"), + .cryId = CRY_WHIRLIPEDE, + .natDexNum = NATIONAL_DEX_WHIRLIPEDE, + .categoryName = _("Curlipede"), + .height = 12, + .weight = 585, + .description = COMPOUND_STRING( + "Storing energy for evolution, it sits.\n" + "But when attacked, it spins its body at\n" + "high speed like a wheel and then\n" + "crashes furiously into its opponent."), + .pokemonScale = 282, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Whirlipede, 56, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Whirlipede, + .frontAnimId = ANIM_TIP_MOVE_FORWARD, + BACK_PIC(Whirlipede, 64, 40), + .backPicYOffset = 15, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Whirlipede), + ICON(Whirlipede, 2), + .footprint = gMonFootprint_Whirlipede, + LEARNSETS(Whirlipede), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_SCOLIPEDE}), + }, + + [SPECIES_SCOLIPEDE] = + { + .baseHP = 60, + .baseAttack = P_UPDATED_STATS >= GEN_6 ? 100 : 90, + .baseDefense = 89, + .baseSpeed = 112, + .baseSpAttack = 55, + .baseSpDefense = 69, + .types = { TYPE_BUG, TYPE_POISON }, + .catchRate = 45, + .expYield = 218, + .evYield_Speed = 3, + .itemRare = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + #if P_UPDATED_ABILITIES >= GEN_6 + .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_SPEED_BOOST }, + #else + .abilities = { ABILITY_POISON_POINT, ABILITY_SWARM, ABILITY_QUICK_FEET }, + #endif + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Scolipede"), + .cryId = CRY_SCOLIPEDE, + .natDexNum = NATIONAL_DEX_SCOLIPEDE, + .categoryName = _("Megapede"), + .height = 25, + .weight = 2005, + .description = COMPOUND_STRING( + "With quick movements, it chases down\n" + "its foes, attacking relentlessly with its\n" + "horns until it prevails. Then it finishes\n" + "them off with deadly poison."), + .pokemonScale = 257, + .pokemonOffset = 2, + .trainerScale = 423, + .trainerOffset = 8, + FRONT_PIC(Scolipede, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Scolipede, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Scolipede, 64, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Scolipede), + ICON(Scolipede, 2), + .footprint = gMonFootprint_Scolipede, + LEARNSETS(Scolipede), + }, +#endif //P_FAMILY_VENIPEDE + +#if P_FAMILY_COTTONEE +#if P_UPDATED_TYPES >= GEN_6 + #define COTTONEE_FAMILY_TYPES { TYPE_GRASS, TYPE_FAIRY } +#else + #define COTTONEE_FAMILY_TYPES { TYPE_GRASS, TYPE_GRASS } +#endif + + [SPECIES_COTTONEE] = + { + .baseHP = 40, + .baseAttack = 27, + .baseDefense = 60, + .baseSpeed = 66, + .baseSpAttack = 37, + .baseSpDefense = 50, + .types = COTTONEE_FAMILY_TYPES, + .catchRate = 190, + .expYield = 56, + .evYield_Speed = 1, + .itemRare = ITEM_ABSORB_BULB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_PRANKSTER, ABILITY_INFILTRATOR, ABILITY_CHLOROPHYLL }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Cottonee"), + .cryId = CRY_COTTONEE, + .natDexNum = NATIONAL_DEX_COTTONEE, + .categoryName = _("Cotton Puff"), + .height = 3, + .weight = 6, + .description = COMPOUND_STRING( + "When it finds others of its kind, they all\n" + "stick together. When enough of them\n" + "have collected, the mass resembles a\n" + "cumulonimbus cloud."), + .pokemonScale = 530, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cottonee, 48, 32), + .frontPicYOffset = 18, + .frontAnimFrames = sAnims_Cottonee, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Cottonee, 64, 32), + .backPicYOffset = 18, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Cottonee), + ICON(Cottonee, 1), + .footprint = gMonFootprint_Cottonee, + LEARNSETS(Cottonee), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_WHIMSICOTT}), + }, + + [SPECIES_WHIMSICOTT] = + { + .baseHP = 60, + .baseAttack = 67, + .baseDefense = 85, + .baseSpeed = 116, + .baseSpAttack = 77, + .baseSpDefense = 75, + .types = COTTONEE_FAMILY_TYPES, + .catchRate = 75, + .expYield = 168, + .evYield_Speed = 2, + .itemRare = ITEM_ABSORB_BULB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_PRANKSTER, ABILITY_INFILTRATOR, ABILITY_CHLOROPHYLL }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Whimsicott"), + .cryId = CRY_WHIMSICOTT, + .natDexNum = NATIONAL_DEX_WHIMSICOTT, + .categoryName = _("Windveiled"), + .height = 7, + .weight = 66, + .description = COMPOUND_STRING( + "It rides on the wind and slips into\n" + "people's homes. After it has turned a\n" + "room into a cotton-filled mess, it giggles\n" + "to itself and takes off."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Whimsicott, 56, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Whimsicott, + .frontAnimId = ANIM_SHRINK_GROW, + BACK_PIC(Whimsicott, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Whimsicott), + ICON(Whimsicott, 1), + .footprint = gMonFootprint_Whimsicott, + LEARNSETS(Whimsicott), + }, +#endif //P_FAMILY_COTTONEE + +#if P_FAMILY_PETILIL + [SPECIES_PETILIL] = + { + .baseHP = 45, + .baseAttack = 35, + .baseDefense = 50, + .baseSpeed = 30, + .baseSpAttack = 70, + .baseSpDefense = 50, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 190, + .expYield = 56, + .evYield_SpAttack = 1, + .itemRare = ITEM_ABSORB_BULB, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_OWN_TEMPO, ABILITY_LEAF_GUARD }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Petilil"), + .cryId = CRY_PETILIL, + .natDexNum = NATIONAL_DEX_PETILIL, + .categoryName = _("Bulb"), + .height = 5, + .weight = 66, + .description = COMPOUND_STRING( + "By pruning the leaves on its head with\n" + "regularity, this Pokémon can be grown\n" + "into a fine plump shape. These bitter\n" + "leaves refresh those who eat them."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Petilil, 32, 48), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Petilil, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + .enemyMonElevation = 7, + BACK_PIC(Petilil, 40, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Petilil), + ICON(Petilil, 1), + .footprint = gMonFootprint_Petilil, + LEARNSETS(Petilil), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_LILLIGANT}, + {EVO_NONE, 0, SPECIES_LILLIGANT_HISUIAN}), + }, + +#define LILLIGANT_MISC_INFO \ + .catchRate = 75, \ + .expYield = 168, \ + .itemRare = ITEM_ABSORB_BULB, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = TRUE, \ + .speciesName = _("Lilligant"), \ + .cryId = CRY_LILLIGANT, \ + .natDexNum = NATIONAL_DEX_LILLIGANT, \ + .footprint = gMonFootprint_Lilligant, \ + .formSpeciesIdTable = sLilligantFormSpeciesIdTable + + [SPECIES_LILLIGANT] = + { + LILLIGANT_MISC_INFO, + .baseHP = 70, + .baseAttack = 60, + .baseDefense = 75, + .baseSpeed = 90, + .baseSpAttack = 110, + .baseSpDefense = 75, + .types = { TYPE_GRASS, TYPE_GRASS }, + .evYield_SpAttack = 2, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_OWN_TEMPO, ABILITY_LEAF_GUARD }, + .categoryName = _("Flowering"), + .height = 11, + .weight = 163, + .description = COMPOUND_STRING( + "Even veteran Trainers face a challenge\n" + "in getting its beautiful flower to bloom.\n" + "It withers away if a trainer does not\n" + "take good care of it."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Lilligant, 56, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Lilligant, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Lilligant, 64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Lilligant), + ICON(Lilligant, 1), + LEARNSETS(Lilligant), + }, + +#if P_HISUIAN_FORMS + [SPECIES_LILLIGANT_HISUIAN] = + { + LILLIGANT_MISC_INFO, + .baseHP = 70, + .baseAttack = 105, + .baseDefense = 75, + .baseSpeed = 105, + .baseSpAttack = 50, + .baseSpDefense = 75, + .types = { TYPE_GRASS, TYPE_FIGHTING }, + .evYield_Attack = 1, + .evYield_Speed = 1, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_HUSTLE, ABILITY_LEAF_GUARD }, + .categoryName = _("Spinning"), + .height = 12, + .weight = 192, + .description = COMPOUND_STRING( + "Its well-developed legs are the result of\n" + "a life spent on mountains covered in deep\n" + "snow. The scent it exudes from its flower\n" + "crown heartens those in proximity."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(LilligantHisuian, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_LilligantHisuian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(LilligantHisuian, 56, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(LilligantHisuian), + ICON(LilligantHisuian, 1), + LEARNSETS(LilligantHisuian), + .isHisuianForm = TRUE, + }, +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_PETILIL + +#if P_FAMILY_BASCULIN +#define BASCULIN_MISC_INFO \ + .baseHP = 70, \ + .baseAttack = 92, \ + .baseDefense = 65, \ + .baseSpeed = 98, \ + .baseSpAttack = 80, \ + .baseSpDefense = 55, \ + .types = { TYPE_WATER, TYPE_WATER }, \ + .catchRate = 190, \ + .expYield = 161, \ + .evYield_Speed = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 40, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .speciesName = _("Basculin"), \ + .cryId = CRY_BASCULIN, \ + .natDexNum = NATIONAL_DEX_BASCULIN, \ + .height = 10, \ + .weight = 180, \ + .pokemonScale = 316, \ + .pokemonOffset = 7, \ + .trainerScale = 257, \ + .trainerOffset = 0, \ + .enemyMonElevation = 6, \ + .footprint = gMonFootprint_Basculin, \ + .formSpeciesIdTable = sBasculinFormSpeciesIdTable + + [SPECIES_BASCULIN_RED_STRIPED] = + { + BASCULIN_MISC_INFO, + .itemRare = ITEM_DEEP_SEA_TOOTH, + .abilities = { ABILITY_RECKLESS, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER }, + .categoryName = _("Hostile"), + .description = COMPOUND_STRING( + "It used to be a common food source. The\n" + "meat of red Basculin is on the fatty side\n" + "and it's more popular with the youth.\n" + "Its temperament is vicious and aggressive."), + FRONT_PIC(BasculinRedStriped, 56, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Basculin, + .frontAnimId = ANIM_TIP_MOVE_FORWARD, + BACK_PIC(BasculinRedStriped, 64, 48), + .backPicYOffset = 16, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(BasculinRedStriped), + ICON(BasculinRedStriped, 1), + LEARNSETS(Basculin), + }, + + [SPECIES_BASCULIN_BLUE_STRIPED] = + { + BASCULIN_MISC_INFO, + .itemRare = ITEM_DEEP_SEA_SCALE, + .abilities = { ABILITY_ROCK_HEAD, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER }, + .categoryName = _("Hostile"), + .description = COMPOUND_STRING( + "They form schools with others of the same\n" + "color. The greatest foe of a school of blue\n" + "Basculin is a school of red Basculin.\n" + "Its flavor is light and inoffensive."), + FRONT_PIC(BasculinBlueStriped, 56, 40), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Basculin, + .frontAnimId = ANIM_TIP_MOVE_FORWARD, + BACK_PIC(BasculinBlueStriped, 64, 48), + .backPicYOffset = 16, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(BasculinBlueStriped), + ICON(BasculinBlueStriped, 0), + LEARNSETS(Basculin), + }, + +#if P_HISUIAN_FORMS + [SPECIES_BASCULIN_WHITE_STRIPED] = + { + BASCULIN_MISC_INFO, + .itemRare = ITEM_DEEP_SEA_SCALE, + .abilities = { ABILITY_RATTLED, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER }, + .categoryName = _("Mellow"), + .description = COMPOUND_STRING( + "While this ancient form of Basculin shares\n" + "a vast array of qualities with other forms,\n" + "it differs in several respects, including\n" + "demeanor, being much gentler than others."), + FRONT_PIC(BasculinWhiteStriped, 48, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Basculin, + .frontAnimId = ANIM_TIP_MOVE_FORWARD, + BACK_PIC(BasculinWhiteStriped, 64, 40), + .backPicYOffset = 16, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(BasculinWhiteStriped), + ICON(BasculinWhiteStriped, 0), + LEARNSETS(BasculinWhiteStriped), + .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_BASCULEGION_MALE}, + {EVO_NONE, 0, SPECIES_BASCULEGION_FEMALE}), + }, + +#define BASCULEGION_MISC_INFO \ + .types = { TYPE_WATER, TYPE_GHOST }, \ + .catchRate = 45, \ + .expYield = 265, \ + .evYield_HP = 3, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, \ + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .speciesName = _("Bsculegion"), \ + .cryId = CRY_BASCULEGION, \ + .natDexNum = NATIONAL_DEX_BASCULEGION, \ + .categoryName = _("Big Fish"), \ + .height = 30, \ + .weight = 1100, \ + .pokemonScale = 275, \ + .pokemonOffset = 7, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontAnimFrames = sAnims_Basculegion, \ + .frontPicYOffset = 0, \ + .enemyMonElevation = 5, \ + .backPicYOffset = 0, \ + LEARNSETS(Basculegion), \ + .formSpeciesIdTable = sBasculegionFormSpeciesIdTable + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //.backAnimId = BACK_ANIM_NONE, + //.footprint = gMonFootprint_Basculegion, + + [SPECIES_BASCULEGION_MALE] = + { + BASCULEGION_MISC_INFO, + .baseHP = 120, + .baseAttack = 112, + .baseDefense = 65, + .baseSpeed = 78, + .baseSpAttack = 80, + .baseSpDefense = 75, + .genderRatio = MON_MALE, + .description = COMPOUND_STRING( + "Clads itself in the souls of comrades that\n" + "perished before fulfilling their goals of\n" + "journeying upstream. No other species in\n" + "all Hisui's rivers is Basculegion's equal."), + FRONT_PIC(BasculegionMale, 64, 64), + BACK_PIC(BasculegionMale, 64, 64), + PALETTES(BasculegionMale), + ICON(BasculegionMale, 1), + }, + + [SPECIES_BASCULEGION_FEMALE] = + { + BASCULEGION_MISC_INFO, + .baseHP = 120, + .baseAttack = 92, + .baseDefense = 65, + .baseSpeed = 78, + .baseSpAttack = 100, + .baseSpDefense = 75, + .genderRatio = MON_FEMALE, + .description = COMPOUND_STRING( + "The souls of its comrades cloak its\n" + "body and propel it effortlessly\n" + "through even raging rapids."), + FRONT_PIC(BasculegionFemale, 64, 64), + BACK_PIC(BasculegionFemale, 64, 64), + PALETTES(BasculegionFemale), + ICON(BasculegionFemale, 0), + }, +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_BASCULIN + +#if P_FAMILY_SANDILE + [SPECIES_SANDILE] = + { + .baseHP = 50, + .baseAttack = 72, + .baseDefense = 35, + .baseSpeed = 65, + .baseSpAttack = 35, + .baseSpDefense = 35, + .types = { TYPE_GROUND, TYPE_DARK }, + .catchRate = 180, + .expYield = 58, + .evYield_Attack = 1, + .itemRare = ITEM_BLACK_GLASSES, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_MOXIE, ABILITY_ANGER_POINT }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Sandile"), + .cryId = CRY_SANDILE, + .natDexNum = NATIONAL_DEX_SANDILE, + .categoryName = _("Desert Croc"), + .height = 7, + .weight = 152, + .description = COMPOUND_STRING( + "It conceals itself in the sand and\n" + "chomps down on the legs of any prey\n" + "that unwarily walk over it. Its favorite\n" + "food is Trapinch."), + .pokemonScale = 365, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Sandile, 48, 32), + .frontPicYOffset = 18, + .frontAnimFrames = sAnims_Sandile, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Sandile, 64, 32), + .backPicYOffset = 18, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Sandile), + ICON(Sandile, 1), + .footprint = gMonFootprint_Sandile, + LEARNSETS(Sandile), + .evolutions = EVOLUTION({EVO_LEVEL, 29, SPECIES_KROKOROK}), + }, + + [SPECIES_KROKOROK] = + { + .baseHP = 60, + .baseAttack = 82, + .baseDefense = 45, + .baseSpeed = 74, + .baseSpAttack = 45, + .baseSpDefense = 45, + .types = { TYPE_GROUND, TYPE_DARK }, + .catchRate = 90, + .expYield = 123, + .evYield_Attack = 2, + .itemRare = ITEM_BLACK_GLASSES, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_MOXIE, ABILITY_ANGER_POINT }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Krokorok"), + .cryId = CRY_KROKOROK, + .natDexNum = NATIONAL_DEX_KROKOROK, + .categoryName = _("Desert Croc"), + .height = 10, + .weight = 334, + .description = COMPOUND_STRING( + "They move in groups of a few individuals.\n" + "Thanks to the special membrane covering\n" + "its eyes, it can see its surroundings\n" + "clearly, even in the dead of night."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Krokorok, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Krokorok, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Krokorok, 56, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Krokorok), + ICON(Krokorok, 1), + .footprint = gMonFootprint_Krokorok, + LEARNSETS(Krokorok), + .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_KROOKODILE}), + }, + + [SPECIES_KROOKODILE] = + { + .baseHP = 95, + .baseAttack = 117, + .baseDefense = P_UPDATED_STATS >= GEN_6 ? 80 : 70, + .baseSpeed = 92, + .baseSpAttack = 65, + .baseSpDefense = 70, + .types = { TYPE_GROUND, TYPE_DARK }, + .catchRate = 45, + .expYield = 234, + .evYield_Attack = 3, + .itemCommon = ITEM_BLACK_GLASSES, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_MOXIE, ABILITY_ANGER_POINT }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Krookodile"), + .cryId = CRY_KROOKODILE, + .natDexNum = NATIONAL_DEX_KROOKODILE, + .categoryName = _("Intimidate"), + .height = 15, + .weight = 963, + .description = COMPOUND_STRING( + "Very violent Pokémon, they never allow\n" + "their prey to escape. Their jaws are so\n" + "powerful, they can crush the body of\n" + "an automobile."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(Krookodile, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Krookodile, + .frontAnimId = ANIM_SWING_CONCAVE_FAST_SHORT, + BACK_PIC(Krookodile, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Krookodile), + ICON(Krookodile, 0), + .footprint = gMonFootprint_Krookodile, + LEARNSETS(Krookodile), + }, +#endif //P_FAMILY_SANDILE + +#if P_FAMILY_DARUMAKA +#define DARUMAKA_MISC_INFO \ + .baseHP = 70, \ + .baseAttack = 90, \ + .baseDefense = 45, \ + .baseSpeed = 50, \ + .baseSpAttack = 15, \ + .baseSpDefense = 45, \ + .catchRate = 120, \ + .expYield = 63, \ + .evYield_Attack = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .abilities = { ABILITY_HUSTLE, ABILITY_NONE, ABILITY_INNER_FOCUS }, \ + .speciesName = _("Darumaka"), \ + .cryId = CRY_DARUMAKA, \ + .natDexNum = NATIONAL_DEX_DARUMAKA, \ + .categoryName = _("Zen Charm"), \ + .footprint = gMonFootprint_Darumaka, \ + .formSpeciesIdTable = sDarumakaFormSpeciesIdTable + + [SPECIES_DARUMAKA] = + { + DARUMAKA_MISC_INFO, + .types = { TYPE_FIRE, TYPE_FIRE }, + .bodyColor = BODY_COLOR_RED, + .height = 6, + .weight = 375, + .description = COMPOUND_STRING( + "When its internal fire is burning, it\n" + "cannot calm down and it runs around.\n" + "When the fire diminishes, it pulls its\n" + "limbs into its body and falls asleep."), + .pokemonScale = 422, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Darumaka, 40, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Darumaka, + .frontAnimId = ANIM_SWING_CONCAVE, + BACK_PIC(Darumaka, 56, 48), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Darumaka), + ICON(Darumaka, 0), + LEARNSETS(Darumaka), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_DARMANITAN_STANDARD_MODE}), + }, + +#define DARMANITAN_MISC_INFO \ + .catchRate = 60, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .speciesName = _("Darmanitan"), \ + .cryId = CRY_DARMANITAN, \ + .natDexNum = NATIONAL_DEX_DARMANITAN, \ + .footprint = gMonFootprint_Darmanitan, \ + .formSpeciesIdTable = sDarmanitanFormSpeciesIdTable + +#define DARMANITAN_STANDARD_MISC_INFO \ + .baseHP = 105, \ + .baseAttack = 140, \ + .baseDefense = 55, \ + .baseSpeed = 95, \ + .baseSpAttack = 30, \ + .baseSpDefense = 55, \ + .expYield = 168, \ + .evYield_Attack = 2, \ + DARMANITAN_MISC_INFO + +#define DARMANITAN_ZEN_MODE_MISC_INFO \ + .expYield = 189, \ + .evYield_SpAttack = 2, \ + .categoryName = _("Blazing"), \ + DARMANITAN_MISC_INFO + +#define DARMANITAN_UNOVAN_MISC_INFO \ + .abilities = { ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_ZEN_MODE },\ + .height = 13, \ + .weight = 929, \ + .pokemonScale = 272, \ + .pokemonOffset = 3, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + LEARNSETS(Darmanitan), \ + .formChangeTable = sDarmanitanFormChangeTable + + [SPECIES_DARMANITAN_STANDARD_MODE] = + { + DARMANITAN_STANDARD_MISC_INFO, + DARMANITAN_UNOVAN_MISC_INFO, + .types = { TYPE_FIRE, TYPE_FIRE }, + .bodyColor = BODY_COLOR_RED, + .categoryName = _("Blazing"), + .description = COMPOUND_STRING( + "When one is injured in a fierce battle,\n" + "it transforms into a stone statue.\n" + "Then it meditates and sharpens its\n" + "mind and fights on mentally."), + FRONT_PIC(DarmanitanStandardMode, 56, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_DarmanitanStandardMode, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + BACK_PIC(DarmanitanStandardMode, 64, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(DarmanitanStandardMode), + ICON(DarmanitanStandardMode, 0), + }, + + [SPECIES_DARMANITAN_ZEN_MODE] = + { + DARMANITAN_ZEN_MODE_MISC_INFO, + DARMANITAN_UNOVAN_MISC_INFO, + .baseHP = 105, + .baseAttack = 30, + .baseDefense = 105, + .baseSpeed = 55, + .baseSpAttack = 140, + .baseSpDefense = 105, + .types = { TYPE_FIRE, TYPE_PSYCHIC }, + .bodyColor = BODY_COLOR_BLUE, + .description = COMPOUND_STRING( + "When wounded, it stops moving. It\n" + "goes as still as stone to meditate,\n" + "sharpening its mind and spirit."), + FRONT_PIC(DarmanitanZenMode, 40, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_DarmanitanZenMode, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(DarmanitanZenMode, 56, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(DarmanitanZenMode), + ICON(DarmanitanZenMode, 0), + }, + +#if P_GALARIAN_FORMS + [SPECIES_DARUMAKA_GALARIAN] = + { + DARUMAKA_MISC_INFO, + .types = { TYPE_ICE, TYPE_ICE }, + .bodyColor = BODY_COLOR_WHITE, + .height = 7, + .weight = 400, + .description = COMPOUND_STRING( + "The colder they get, the more\n" + "energetic they are. They freeze their\n" + "breath to make snowballs, using them\n" + "as ammo for playful snowball fights."), + .pokemonScale = 422, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(DarumakaGalarian, 40, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_DarumakaGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(DarumakaGalarian, 56, 48), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(DarumakaGalarian), + ICON(DarumakaGalarian, 0), + LEARNSETS(DarumakaGalarian), + .isGalarianForm = TRUE, + .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE}), + }, + +#define DARMANITAN_GALARIAN_MISC_INFO \ + .abilities = { ABILITY_GORILLA_TACTICS, ABILITY_NONE, ABILITY_ZEN_MODE },\ + .bodyColor = BODY_COLOR_WHITE, \ + .height = 17, \ + .weight = 1200, \ + .pokemonScale = 272, \ + .pokemonOffset = 3, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + LEARNSETS(DarmanitanGalarian), \ + .formChangeTable = sDarmanitanGalarianFormChangeTable, \ + .isGalarianForm = TRUE + + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = + { + DARMANITAN_GALARIAN_MISC_INFO, + DARMANITAN_STANDARD_MISC_INFO, + .types = { TYPE_ICE, TYPE_ICE }, + .categoryName = _("Zen Charm"), + .description = COMPOUND_STRING( + "On days when blizzards blow\n" + "through, it comes down to where people\n" + "live. It stashes food in the snowball on\n" + "its head, taking it home for later."), + FRONT_PIC(DarmanitanGalarianStandardMode, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_DarmanitanGalarianStandardMode, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(DarmanitanGalarianStandardMode, 56, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(DarmanitanGalarianStandardMode), + ICON(DarmanitanGalarianStandardMode, 0), + }, + + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = + { + DARMANITAN_GALARIAN_MISC_INFO, + DARMANITAN_ZEN_MODE_MISC_INFO, + .baseHP = 105, + .baseAttack = 160, + .baseDefense = 55, + .baseSpeed = 135, + .baseSpAttack = 30, + .baseSpDefense = 55, + .types = { TYPE_ICE, TYPE_FIRE }, + .description = COMPOUND_STRING( + "Darmanitan takes this form when\n" + "enraged. It won't stop spewing flames\n" + "until its rage has settled, even if\n" + "its body starts to melt."), + FRONT_PIC(DarmanitanGalarianZenMode, 48, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_DarmanitanGalarianZenMode, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(DarmanitanGalarianZenMode, 64, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(DarmanitanGalarianZenMode), + ICON(DarmanitanGalarianZenMode, 0), + }, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_DARUMAKA + +#if P_FAMILY_MARACTUS + [SPECIES_MARACTUS] = + { + .baseHP = 75, + .baseAttack = 86, + .baseDefense = 67, + .baseSpeed = 60, + .baseSpAttack = 106, + .baseSpDefense = 67, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 255, + .expYield = 161, + .evYield_SpAttack = 2, + .itemRare = ITEM_MIRACLE_SEED, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_WATER_ABSORB, ABILITY_CHLOROPHYLL, ABILITY_STORM_DRAIN }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Maractus"), + .cryId = CRY_MARACTUS, + .natDexNum = NATIONAL_DEX_MARACTUS, + .categoryName = _("Cactus"), + .height = 10, + .weight = 280, + .description = COMPOUND_STRING( + "Arid regions are their habitat.\n" + "When it moves rhythmically, it makes a\n" + "sound similar to maracas, making the\n" + "surprised Pokémon flee."), + .pokemonScale = 305, + .pokemonOffset = 6, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Maractus, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Maractus, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + BACK_PIC(Maractus, 64, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Maractus), + ICON(Maractus, 1), + .footprint = gMonFootprint_Maractus, + LEARNSETS(Maractus), + }, +#endif //P_FAMILY_MARACTUS + +#if P_FAMILY_DWEBBLE + [SPECIES_DWEBBLE] = + { + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 85, + .baseSpeed = 55, + .baseSpAttack = 35, + .baseSpDefense = 35, + .types = { TYPE_BUG, TYPE_ROCK }, + .catchRate = 190, + .expYield = 65, + .evYield_Defense = 1, + .itemRare = ITEM_HARD_STONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_STURDY, ABILITY_SHELL_ARMOR, ABILITY_WEAK_ARMOR }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Dwebble"), + .cryId = CRY_DWEBBLE, + .natDexNum = NATIONAL_DEX_DWEBBLE, + .categoryName = _("Rock Inn"), + .height = 3, + .weight = 145, + .description = COMPOUND_STRING( + "It makes a hole in a stone of a suitable\n" + "size. If that rock breaks, the Pokémon\n" + "remains agitated until it locates\n" + "a replacement."), + .pokemonScale = 530, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Dwebble, 40, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Dwebble, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Dwebble, 56, 32), + .backPicYOffset = 17, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Dwebble), + ICON(Dwebble, 0), + .footprint = gMonFootprint_Dwebble, + LEARNSETS(Dwebble), + .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_CRUSTLE}), + }, + + [SPECIES_CRUSTLE] = + { + .baseHP = 70, + .baseAttack = P_UPDATED_STATS >= GEN_7 ? 105 : 95, + .baseDefense = 125, + .baseSpeed = 45, + .baseSpAttack = 65, + .baseSpDefense = 75, + .types = { TYPE_BUG, TYPE_ROCK }, + .catchRate = 75, + .expYield = 170, + .evYield_Defense = 2, + .itemRare = ITEM_HARD_STONE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_STURDY, ABILITY_SHELL_ARMOR, ABILITY_WEAK_ARMOR }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Crustle"), + .cryId = CRY_CRUSTLE, + .natDexNum = NATIONAL_DEX_CRUSTLE, + .categoryName = _("Stone Home"), + .height = 14, + .weight = 2000, + .description = COMPOUND_STRING( + "Competing for territory, Crustle fight\n" + "viciously. The one whose boulder is\n" + "broken is the loser of the battle and\n" + "begins to weaken."), + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, + .trainerOffset = 0, + FRONT_PIC(Crustle, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Crustle, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(Crustle, 64, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Crustle), + ICON(Crustle, 2), + .footprint = gMonFootprint_Crustle, + LEARNSETS(Crustle), + }, +#endif //P_FAMILY_DWEBBLE + +#if P_FAMILY_SCRAGGY + [SPECIES_SCRAGGY] = + { + .baseHP = 50, + .baseAttack = 75, + .baseDefense = 70, + .baseSpeed = 48, + .baseSpAttack = 35, + .baseSpDefense = 70, + .types = { TYPE_DARK, TYPE_FIGHTING }, + .catchRate = 180, + .expYield = 70, + .evYield_Attack = 1, + .itemRare = ITEM_SHED_SHELL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_MOXIE, ABILITY_INTIMIDATE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Scraggy"), + .cryId = CRY_SCRAGGY, + .natDexNum = NATIONAL_DEX_SCRAGGY, + .categoryName = _("Shedding"), + .height = 6, + .weight = 118, + .description = COMPOUND_STRING( + "Its skin has a rubbery elasticity, so it\n" + "can reduce damage by defensively\n" + "pulling its skin up to its neck.\n" + "Its skull is massively thick."), + .pokemonScale = 422, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Scraggy, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Scraggy, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Scraggy, 48, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Scraggy), + ICON(Scraggy, 2), + .footprint = gMonFootprint_Scraggy, + LEARNSETS(Scraggy), + .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_SCRAFTY}), + }, + + [SPECIES_SCRAFTY] = + { + .baseHP = 65, + .baseAttack = 90, + .baseDefense = 115, + .baseSpeed = 58, + .baseSpAttack = 45, + .baseSpDefense = 115, + .types = { TYPE_DARK, TYPE_FIGHTING }, + .catchRate = 90, + .expYield = 171, + .evYield_Defense = 1, + .evYield_SpDefense = 1, + .itemRare = ITEM_SHED_SHELL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_MOXIE, ABILITY_INTIMIDATE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Scrafty"), + .cryId = CRY_SCRAFTY, + .natDexNum = NATIONAL_DEX_SCRAFTY, + .categoryName = _("Hoodlum"), + .height = 11, + .weight = 300, + .description = COMPOUND_STRING( + "Groups of them beat up anything that\n" + "enters their territory. The one with the\n" + "biggest crest is the group leader, and\n" + "is the most respected."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Scrafty, 48, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Scrafty, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Scrafty, 48, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_GROW, + PALETTES(Scrafty), + ICON(Scrafty, 0), + .footprint = gMonFootprint_Scrafty, + LEARNSETS(Scrafty), + }, +#endif //P_FAMILY_SCRAGGY + +#if P_FAMILY_SIGILYPH + [SPECIES_SIGILYPH] = + { + .baseHP = 72, + .baseAttack = 58, + .baseDefense = 80, + .baseSpeed = 97, + .baseSpAttack = 103, + .baseSpDefense = 80, + .types = { TYPE_PSYCHIC, TYPE_FLYING }, + .catchRate = 45, + .expYield = 172, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_WONDER_SKIN, ABILITY_MAGIC_GUARD, ABILITY_TINTED_LENS }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Sigilyph"), + .cryId = CRY_SIGILYPH, + .natDexNum = NATIONAL_DEX_SIGILYPH, + .categoryName = _("Avianoid"), + .height = 14, + .weight = 140, + .description = COMPOUND_STRING( + "The guardians of an ancient city, they\n" + "always fly the same route while keeping\n" + "watch for invaders. They use their\n" + "psychic power to attack enemies."), + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, + .trainerOffset = 0, + FRONT_PIC(Sigilyph, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Sigilyph, + .frontAnimId = ANIM_FIGURE_8, + .enemyMonElevation = 7, + BACK_PIC(Sigilyph, 64, 64), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Sigilyph), + ICON(Sigilyph, 0), + .footprint = gMonFootprint_Sigilyph, + LEARNSETS(Sigilyph), + }, +#endif //P_FAMILY_SIGILYPH + +#if P_FAMILY_YAMASK +#define YAMASK_MISC_INFO \ + .catchRate = 190, \ + .expYield = 61, \ + .evYield_Defense = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS }, \ + .bodyColor = BODY_COLOR_BLACK, \ + .speciesName = _("Yamask"), \ + .cryId = CRY_YAMASK, \ + .natDexNum = NATIONAL_DEX_YAMASK, \ + .categoryName = _("Spirit"), \ + .height = 5, \ + .weight = 15, \ + .pokemonScale = 432, \ + .pokemonOffset = 13, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Yamask, \ + .formSpeciesIdTable = sYamaskFormSpeciesIdTable + + [SPECIES_YAMASK] = + { + YAMASK_MISC_INFO, + .baseHP = 38, + .baseAttack = 30, + .baseDefense = 85, + .baseSpeed = 30, + .baseSpAttack = 55, + .baseSpDefense = 65, + .types = { TYPE_GHOST, TYPE_GHOST }, + .itemRare = ITEM_SPELL_TAG, + .abilities = { ABILITY_MUMMY, ABILITY_NONE }, + .description = COMPOUND_STRING( + "These Pokémon arose from the spirits\n" + "of people interred in graves in past ages.\n" + "Each of them carries a mask that used\n" + "to be its face when it was human."), + FRONT_PIC(Yamask, 48, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Yamask, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 10, + BACK_PIC(Yamask, 40, 40), + .backPicYOffset = 14, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Yamask), + ICON(Yamask, 0), + LEARNSETS(Yamask), + .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_COFAGRIGUS}), + }, + + [SPECIES_COFAGRIGUS] = + { + .baseHP = 58, + .baseAttack = 50, + .baseDefense = 145, + .baseSpeed = 30, + .baseSpAttack = 95, + .baseSpDefense = 105, + .types = { TYPE_GHOST, TYPE_GHOST }, + .catchRate = 90, + .expYield = 169, + .evYield_Defense = 2, + .itemRare = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_MUMMY, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Cofagrigus"), + .cryId = CRY_COFAGRIGUS, + .natDexNum = NATIONAL_DEX_COFAGRIGUS, + .categoryName = _("Coffin"), + .height = 17, + .weight = 765, + .description = COMPOUND_STRING( + "Grave robbers who mistake them for\n" + "real coffins and get too close end up\n" + "trapped inside their bodies. Their bodies\n" + "are covered in pure gold."), + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 1, + FRONT_PIC(Cofagrigus, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Cofagrigus, + .frontAnimId = ANIM_GLOW_BLACK, + BACK_PIC(Cofagrigus, 56, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Cofagrigus), + ICON(Cofagrigus, 0), + .footprint = gMonFootprint_Cofagrigus, + LEARNSETS(Cofagrigus), + }, + +#if P_GALARIAN_FORMS + [SPECIES_YAMASK_GALARIAN] = + { + YAMASK_MISC_INFO, + .baseHP = 38, + .baseAttack = 55, + .baseDefense = 85, + .baseSpeed = 30, + .baseSpAttack = 30, + .baseSpDefense = 65, + .types = { TYPE_GROUND, TYPE_GHOST }, + .abilities = { ABILITY_WANDERING_SPIRIT, ABILITY_NONE }, + .description = COMPOUND_STRING( + "A clay slab with cursed engravings\n" + "took possession of a Yamask. The\n" + "slab is said to be absorbing the\n" + "Yamask's dark power."), + FRONT_PIC(YamaskGalarian, 48, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_YamaskGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 4, + BACK_PIC(YamaskGalarian, 40, 40), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(YamaskGalarian), + ICON(YamaskGalarian, 2), + LEARNSETS(YamaskGalarian), + .isGalarianForm = TRUE, + .evolutions = EVOLUTION({EVO_SCRIPT_TRIGGER_DMG, 49, SPECIES_RUNERIGUS}), + }, + + [SPECIES_RUNERIGUS] = + { + .baseHP = 58, + .baseAttack = 95, + .baseDefense = 145, + .baseSpeed = 30, + .baseSpAttack = 50, + .baseSpDefense = 105, + .types = { TYPE_GROUND, TYPE_GHOST }, + .catchRate = 90, + .expYield = 169, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_WANDERING_SPIRIT, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Runerigus"), + .cryId = CRY_RUNERIGUS, + .natDexNum = NATIONAL_DEX_RUNERIGUS, + .categoryName = _("Grudge"), + .height = 16, + .weight = 666, + .description = COMPOUND_STRING( + "A powerful curse was woven into an ancient\n" + "painting. After absorbing the spirit of\n" + "a Yamask, the painting began to move."), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + FRONT_PIC(Runerigus, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Runerigus, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 5, + BACK_PIC(Runerigus, 64, 48), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Runerigus), + ICON(Runerigus, 2), + .footprint = gMonFootprint_Runerigus, + LEARNSETS(Runerigus), + }, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_YAMASK + +#if P_FAMILY_TIRTOUGA + [SPECIES_TIRTOUGA] = + { + .baseHP = 54, + .baseAttack = 78, + .baseDefense = 103, + .baseSpeed = 22, + .baseSpAttack = 53, + .baseSpDefense = 45, + .types = { TYPE_WATER, TYPE_ROCK }, + .catchRate = 45, + .expYield = 71, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_SOLID_ROCK, ABILITY_STURDY, ABILITY_SWIFT_SWIM }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Tirtouga"), + .cryId = CRY_TIRTOUGA, + .natDexNum = NATIONAL_DEX_TIRTOUGA, + .categoryName = _("Prototurtle"), + .height = 7, + .weight = 165, + .description = COMPOUND_STRING( + "Reputed to be the ancestor of most\n" + "turtle Pokémon, it lived in warm seas\n" + "about a hundred million years ago.\n" + "It was restored from a fossil."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Tirtouga, 56, 40), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Tirtouga, + .frontAnimId = ANIM_RISING_WOBBLE, + BACK_PIC(Tirtouga, 64, 32), + .backPicYOffset = 16, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Tirtouga), + ICON(Tirtouga, 2), + .footprint = gMonFootprint_Tirtouga, + LEARNSETS(Tirtouga), + .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_CARRACOSTA}), + }, + + [SPECIES_CARRACOSTA] = + { + .baseHP = 74, + .baseAttack = 108, + .baseDefense = 133, + .baseSpeed = 32, + .baseSpAttack = 83, + .baseSpDefense = 65, + .types = { TYPE_WATER, TYPE_ROCK }, + .catchRate = 45, + .expYield = 173, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_SOLID_ROCK, ABILITY_STURDY, ABILITY_SWIFT_SWIM }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Carracosta"), + .cryId = CRY_CARRACOSTA, + .natDexNum = NATIONAL_DEX_CARRACOSTA, + .categoryName = _("Prototurtle"), + .height = 12, + .weight = 810, + .description = COMPOUND_STRING( + "They can live both in the ocean and\n" + "on land. Incredible jaw strength enables\n" + "them to chew up steel beams and rocks\n" + "along with their prey."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Carracosta, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Carracosta, + .frontAnimId = ANIM_H_SHAKE_SLOW, + BACK_PIC(Carracosta, 64, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Carracosta), + ICON(Carracosta, 2), + .footprint = gMonFootprint_Carracosta, + LEARNSETS(Carracosta), + }, +#endif //P_FAMILY_TIRTOUGA + +#if P_FAMILY_ARCHEN + [SPECIES_ARCHEN] = + { + .baseHP = 55, + .baseAttack = 112, + .baseDefense = 45, + .baseSpeed = 70, + .baseSpAttack = 74, + .baseSpDefense = 45, + .types = { TYPE_ROCK, TYPE_FLYING }, + .catchRate = 45, + .expYield = 71, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_DEFEATIST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Archen"), + .cryId = CRY_ARCHEN, + .natDexNum = NATIONAL_DEX_ARCHEN, + .categoryName = _("First Bird"), + .height = 5, + .weight = 95, + .description = COMPOUND_STRING( + "Said to be the ancestor of all bird\n" + "Pokémon, Archen itself could not actually\n" + "fly but moved by hopping from treetop\n" + "to treetop."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Archen, 56, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Archen, + .frontAnimId = ANIM_V_JUMPS_SMALL, + BACK_PIC(Archen, 64, 32), + .backPicYOffset = 16, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Archen), + ICON(Archen, 0), + .footprint = gMonFootprint_Archen, + LEARNSETS(Archen), + .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_ARCHEOPS}), + }, + + [SPECIES_ARCHEOPS] = + { + .baseHP = 75, + .baseAttack = 140, + .baseDefense = 65, + .baseSpeed = 110, + .baseSpAttack = 112, + .baseSpDefense = 65, + .types = { TYPE_ROCK, TYPE_FLYING }, + .catchRate = 45, + .expYield = 177, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_DEFEATIST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Archeops"), + .cryId = CRY_ARCHEOPS, + .natDexNum = NATIONAL_DEX_ARCHEOPS, + .categoryName = _("First Bird"), + .height = 14, + .weight = 320, + .description = COMPOUND_STRING( + "They are intelligent and will cooperate\n" + "to catch prey. When one Archeops\n" + "had the prey cornered, another would\n" + "swoop on it."), + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, + .trainerOffset = 0, + FRONT_PIC(Archeops, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Archeops, + .frontAnimId = ANIM_RISING_WOBBLE, + .enemyMonElevation = 11, + BACK_PIC(Archeops, 64, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Archeops), + ICON(Archeops, 0), + .footprint = gMonFootprint_Archeops, + LEARNSETS(Archeops), + }, +#endif //P_FAMILY_ARCHEN + +#if P_FAMILY_TRUBBISH + [SPECIES_TRUBBISH] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 62, + .baseSpeed = 65, + .baseSpAttack = 40, + .baseSpDefense = 62, + .types = { TYPE_POISON, TYPE_POISON }, + .catchRate = 190, + .expYield = 66, + .evYield_Speed = 1, + .itemRare = ITEM_SILK_SCARF, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_STENCH, ABILITY_STICKY_HOLD, ABILITY_AFTERMATH }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Trubbish"), + .cryId = CRY_TRUBBISH, + .natDexNum = NATIONAL_DEX_TRUBBISH, + .categoryName = _("Trash Bag"), + .height = 6, + .weight = 310, + .description = COMPOUND_STRING( + "It gorges on trash until its stomach\n" + "is full. Then it belches toxic gas.\n" + "An unlucky whiff of this gas will put\n" + "a person in the hospital."), + .pokemonScale = 422, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Trubbish, 48, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Trubbish, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Trubbish, 48, 48), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Trubbish), + ICON(Trubbish, 1), + .footprint = gMonFootprint_Trubbish, + LEARNSETS(Trubbish), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_GARBODOR}), + }, + +#define GARBODOR_MISC_INFO \ + .baseHP = 80, \ + .baseAttack = 95, \ + .baseDefense = 82, \ + .baseSpeed = 75, \ + .baseSpAttack = 60, \ + .baseSpDefense = 82, \ + .types = { TYPE_POISON, TYPE_POISON }, \ + .catchRate = 60, \ + .expYield = 166, \ + .evYield_Attack = 2, \ + .itemCommon = ITEM_SILK_SCARF, \ + .itemRare = ITEM_BLACK_SLUDGE, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, \ + .abilities = { ABILITY_STENCH, ABILITY_WEAK_ARMOR, ABILITY_AFTERMATH }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .noFlip = TRUE, \ + .speciesName = _("Garbodor"), \ + .cryId = CRY_GARBODOR, \ + .natDexNum = NATIONAL_DEX_GARBODOR, \ + .categoryName = _("Trash Heap"), \ + .footprint = gMonFootprint_Garbodor, \ + LEARNSETS(Garbodor), \ + .formSpeciesIdTable = sGarbodorFormSpeciesIdTable, \ + .formChangeTable = sGarbodorFormChangeTable + + [SPECIES_GARBODOR] = + { + GARBODOR_MISC_INFO, + .height = 19, + .weight = 1073, + .description = COMPOUND_STRING( + "Beware the poisonous liquid it shoots\n" + "from its right arm. If even a little of it\n" + "gets on you, you'll experience the full\n" + "effects of this unidentified toxin."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + FRONT_PIC(Garbodor, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Garbodor, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Garbodor, 64, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_H_STRETCH, + PALETTES(Garbodor), + ICON(Garbodor, 1), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_GARBODOR_GIGANTAMAX] = + { + GARBODOR_MISC_INFO, + .height = 210, + .weight = 0, + .description = COMPOUND_STRING( + "It sprays toxic gas from its mouth\n" + "and fingers. If the gas engulfs you,\n" + "the toxins will seep in all the way\n" + "down to your bones."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + FRONT_PIC(GarbodorGigantamax, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_GarbodorGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(GarbodorGigantamax, 64, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(GarbodorGigantamax), + ICON(GarbodorGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_TRUBBISH + +#if P_FAMILY_ZORUA +#define ZORUA_MISC_INFO \ + .catchRate = 75, \ + .expYield = 66, \ + .evYield_SpAttack = 1, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .abilities = { ABILITY_ILLUSION, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_GRAY, \ + .speciesName = _("Zorua"), \ + .cryId = CRY_ZORUA, \ + .natDexNum = NATIONAL_DEX_ZORUA, \ + .height = 7, \ + .weight = 125, \ + .pokemonScale = 365, \ + .pokemonOffset = 12, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Zorua, \ + .formSpeciesIdTable = sZoruaFormSpeciesIdTable + +#define ZOROARK_MISC_INFO \ + .catchRate = 45, \ + .expYield = 179, \ + .evYield_SpAttack = 2, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .abilities = { ABILITY_ILLUSION, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_GRAY, \ + .speciesName = _("Zoroark"), \ + .cryId = CRY_ZOROARK, \ + .natDexNum = NATIONAL_DEX_ZOROARK, \ + .height = 16, \ + .pokemonScale = 259, \ + .pokemonOffset = 1, \ + .trainerScale = 296, \ + .trainerOffset = 1, \ + .footprint = gMonFootprint_Zoroark, \ + .formSpeciesIdTable = sZoroarkFormSpeciesIdTable + + [SPECIES_ZORUA] = + { + ZORUA_MISC_INFO, + .baseHP = 40, + .baseAttack = 65, + .baseDefense = 40, + .baseSpeed = 65, + .baseSpAttack = 80, + .baseSpDefense = 40, + .types = { TYPE_DARK, TYPE_DARK }, + .categoryName = _("Tricky Fox"), + .description = COMPOUND_STRING( + "To protect themselves from danger, they\n" + "hide their true identities by transforming\n" + "into people and Pokémon. Apparently, it\n" + "often transforms into a silent child."), + FRONT_PIC(Zorua, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Zorua, + .frontAnimId = ANIM_CIRCULAR_VIBRATE, + BACK_PIC(Zorua, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Zorua), + ICON(Zorua, 0), + LEARNSETS(Zorua), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ZOROARK}), + }, + + [SPECIES_ZOROARK] = + { + ZOROARK_MISC_INFO, + .baseHP = 60, + .baseAttack = 105, + .baseDefense = 60, + .baseSpeed = 105, + .baseSpAttack = 120, + .baseSpDefense = 60, + .types = { TYPE_DARK, TYPE_DARK }, + .categoryName = _("Illusion Fox"), + .weight = 811, + .description = COMPOUND_STRING( + "Bonds between these Pokémon are very\n" + "strong. It protects the safety of its\n" + "pack by tricking its opponents. They\n" + "defend their lair with illusory scenery."), + FRONT_PIC(Zoroark, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Zoroark, + .frontAnimId = ANIM_FLICKER_INCREASING, + BACK_PIC(Zoroark, 64, 56), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Zoroark), + ICON(Zoroark, 0), + LEARNSETS(Zoroark), + }, + +#if P_HISUIAN_FORMS + [SPECIES_ZORUA_HISUIAN] = + { + ZORUA_MISC_INFO, + .baseHP = 35, + .baseAttack = 60, + .baseDefense = 40, + .baseSpeed = 70, + .baseSpAttack = 85, + .baseSpDefense = 40, + .types = { TYPE_NORMAL, TYPE_GHOST }, + .categoryName = _("Spiteful Fox"), + .description = COMPOUND_STRING( + "Derives power from resentment,\n" + "which rises as energy atop its head and\n" + "takes on the forms of foes. In this\n" + "way, Zorua vents lingering malice."), + FRONT_PIC(ZoruaHisuian, 48, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_ZoruaHisuian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ZoruaHisuian, 56, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ZoruaHisuian), + ICON(ZoruaHisuian, 0), + LEARNSETS(ZoruaHisuian), + .isHisuianForm = TRUE, + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ZOROARK_HISUIAN}), + }, + + [SPECIES_ZOROARK_HISUIAN] = + { + ZOROARK_MISC_INFO, + .baseHP = 55, + .baseAttack = 100, + .baseDefense = 60, + .baseSpeed = 110, + .baseSpAttack = 125, + .baseSpDefense = 60, + .types = { TYPE_NORMAL, TYPE_GHOST }, + .categoryName = _("Baneful Fox"), + .weight = 730, + .description = COMPOUND_STRING( + "Heedless of its own safety,\n" + "Zoroark attacks its nemeses with a bitter\n" + "energy so intense, it lacerates\n" + "Zoroark's own body."), + FRONT_PIC(ZoroarkHisuian, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_ZoroarkHisuian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ZoroarkHisuian, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ZoroarkHisuian), + ICON(ZoroarkHisuian, 0), + LEARNSETS(ZoroarkHisuian), + .isHisuianForm = TRUE, + }, +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_ZORUA + +#if P_FAMILY_MINCCINO + [SPECIES_MINCCINO] = + { + .baseHP = 55, + .baseAttack = 50, + .baseDefense = 40, + .baseSpeed = 75, + .baseSpAttack = 40, + .baseSpDefense = 40, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 255, + .expYield = 60, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_CUTE_CHARM, ABILITY_TECHNICIAN, ABILITY_SKILL_LINK }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Minccino"), + .cryId = CRY_MINCCINO, + .natDexNum = NATIONAL_DEX_MINCCINO, + .categoryName = _("Chinchilla"), + .height = 4, + .weight = 58, + .description = COMPOUND_STRING( + "These Pokémon prefer a tidy habitat.\n" + "They greet one another by rubbing each\n" + "other with their tails, which are always\n" + "kept well groomed and clean."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Minccino, 56, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Minccino, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Minccino, 56, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Minccino), + ICON(Minccino, 0), + .footprint = gMonFootprint_Minccino, + LEARNSETS(Minccino), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_CINCCINO}), + }, + + [SPECIES_CINCCINO] = + { + .baseHP = 75, + .baseAttack = 95, + .baseDefense = 60, + .baseSpeed = 115, + .baseSpAttack = 65, + .baseSpDefense = 60, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 60, + .expYield = 165, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_CUTE_CHARM, ABILITY_TECHNICIAN, ABILITY_SKILL_LINK }, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = TRUE, + .speciesName = _("Cinccino"), + .cryId = CRY_CINCCINO, + .natDexNum = NATIONAL_DEX_CINCCINO, + .categoryName = _("Scarf"), + .height = 5, + .weight = 75, + .description = COMPOUND_STRING( + "Their white fur feels amazing to touch.\n" + "Cinccino's body is coated in a special\n" + "oil that repels dust and helps it deflect\n" + "attacks, such as punches."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cinccino, 56, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Cinccino, + .frontAnimId = ANIM_V_SLIDE, + BACK_PIC(Cinccino, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Cinccino), + ICON(Cinccino, 0), + .footprint = gMonFootprint_Cinccino, + LEARNSETS(Cinccino), + }, +#endif //P_FAMILY_MINCCINO + +#if P_FAMILY_GOTHITA + [SPECIES_GOTHITA] = + { + .baseHP = 45, + .baseAttack = 30, + .baseDefense = 50, + .baseSpeed = 45, + .baseSpAttack = 55, + .baseSpDefense = 65, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 200, + .expYield = 58, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_FRISK, ABILITY_COMPETITIVE, ABILITY_SHADOW_TAG }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Gothita"), + .cryId = CRY_GOTHITA, + .natDexNum = NATIONAL_DEX_GOTHITA, + .categoryName = _("Fixation"), + .height = 4, + .weight = 58, + .description = COMPOUND_STRING( + "They intently observe both Trainers and\n" + "Pokémon. Apparently, Gothita are looking\n" + "at something that only they can see. Their\n" + "ribbonlike feelers increase their power."), + .pokemonScale = 491, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Gothita, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Gothita, + .frontAnimId = ANIM_V_JUMPS_SMALL, + BACK_PIC(Gothita, 48, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Gothita), + ICON(Gothita, 2), + .footprint = gMonFootprint_Gothita, + LEARNSETS(Gothita), + .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_GOTHORITA}), + }, + + [SPECIES_GOTHORITA] = + { + .baseHP = 60, + .baseAttack = 45, + .baseDefense = 70, + .baseSpeed = 55, + .baseSpAttack = 75, + .baseSpDefense = 85, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 100, + .expYield = 137, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_FRISK, ABILITY_COMPETITIVE, ABILITY_SHADOW_TAG }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Gothorita"), + .cryId = CRY_GOTHORITA, + .natDexNum = NATIONAL_DEX_GOTHORITA, + .categoryName = _("Manipulate"), + .height = 7, + .weight = 180, + .description = COMPOUND_STRING( + "Starlight is the source of their power.\n" + "They use hypnosis to control people and\n" + "Pokémon. Tales of Gothorita leading them\n" + "astray are told in every corner."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Gothorita, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Gothorita, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Gothorita, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Gothorita), + ICON(Gothorita, 2), + .footprint = gMonFootprint_Gothorita, + LEARNSETS(Gothorita), + .evolutions = EVOLUTION({EVO_LEVEL, 41, SPECIES_GOTHITELLE}), + }, + + [SPECIES_GOTHITELLE] = + { + .baseHP = 70, + .baseAttack = 55, + .baseDefense = 95, + .baseSpeed = 65, + .baseSpAttack = 95, + .baseSpDefense = 110, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 50, + .expYield = 221, + .evYield_SpDefense = 3, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_FRISK, ABILITY_COMPETITIVE, ABILITY_SHADOW_TAG }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Gothitelle"), + .cryId = CRY_GOTHITELLE, + .natDexNum = NATIONAL_DEX_GOTHITELLE, + .categoryName = _("Astral Body"), + .height = 15, + .weight = 440, + .description = COMPOUND_STRING( + "Starry skies thousands of light-years\n" + "away are visible in the space distorted by\n" + "their intense psychic power. When it learns\n" + "its Trainer's life span, it cries in sadness."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(Gothitelle, 48, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Gothitelle, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Gothitelle, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_H_STRETCH, + PALETTES(Gothitelle), + ICON(Gothitelle, 2), + .footprint = gMonFootprint_Gothitelle, + LEARNSETS(Gothitelle), + }, +#endif //P_FAMILY_GOTHITA + +#if P_FAMILY_SOLOSIS + [SPECIES_SOLOSIS] = + { + .baseHP = 45, + .baseAttack = 30, + .baseDefense = 40, + .baseSpeed = 20, + .baseSpAttack = 105, + .baseSpDefense = 50, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 200, + .expYield = 58, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_OVERCOAT, ABILITY_MAGIC_GUARD, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + .speciesName = _("Solosis"), + .cryId = CRY_SOLOSIS, + .natDexNum = NATIONAL_DEX_SOLOSIS, + .categoryName = _("Cell"), + .height = 3, + .weight = 10, + .description = COMPOUND_STRING( + "Because their bodies are enveloped\n" + "in a special liquid, they are fine in any\n" + "environment, no matter how severe. They\n" + "can use telepathy to talk with others."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Solosis, 32, 32), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_Solosis, + .frontAnimId = ANIM_TWIST, + .enemyMonElevation = 14, + BACK_PIC(Solosis, 48, 32), + .backPicYOffset = 19, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Solosis), + ICON(Solosis, 1), + .footprint = gMonFootprint_Solosis, + LEARNSETS(Solosis), + .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_DUOSION}), + }, + + [SPECIES_DUOSION] = + { + .baseHP = 65, + .baseAttack = 40, + .baseDefense = 50, + .baseSpeed = 30, + .baseSpAttack = 125, + .baseSpDefense = 60, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 100, + .expYield = 130, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_OVERCOAT, ABILITY_MAGIC_GUARD, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Duosion"), + .cryId = CRY_DUOSION, + .natDexNum = NATIONAL_DEX_DUOSION, + .categoryName = _("Mitosis"), + .height = 6, + .weight = 80, + .description = COMPOUND_STRING( + "When their brains, now divided in two,\n" + "are thinking the same thoughts,\n" + "these Pokémon exhibit their maximized\n" + "psychic power."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Duosion, 40, 48), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Duosion, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + .enemyMonElevation = 7, + BACK_PIC(Duosion, 56, 48), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_GROW, + PALETTES(Duosion), + ICON(Duosion, 1), + .footprint = gMonFootprint_Duosion, + LEARNSETS(Duosion), + .evolutions = EVOLUTION({EVO_LEVEL, 41, SPECIES_REUNICLUS}), + }, + + [SPECIES_REUNICLUS] = + { + .baseHP = 110, + .baseAttack = 65, + .baseDefense = 75, + .baseSpeed = 30, + .baseSpAttack = 125, + .baseSpDefense = 85, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 50, + .expYield = 221, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_OVERCOAT, ABILITY_MAGIC_GUARD, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Reuniclus"), + .cryId = CRY_REUNICLUS, + .natDexNum = NATIONAL_DEX_REUNICLUS, + .categoryName = _("Multiplying"), + .height = 10, + .weight = 201, + .description = COMPOUND_STRING( + "They use psychic power to control their\n" + "arms, which are made of a special liquid.\n" + "When Reuniclus shake hands, a network\n" + "forms between their brains."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Reuniclus, 64, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Reuniclus, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 8, + BACK_PIC(Reuniclus, 64, 48), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Reuniclus), + ICON(Reuniclus, 1), + .footprint = gMonFootprint_Reuniclus, + LEARNSETS(Reuniclus), + }, +#endif //P_FAMILY_SOLOSIS + +#if P_FAMILY_DUCKLETT + [SPECIES_DUCKLETT] = + { + .baseHP = 62, + .baseAttack = 44, + .baseDefense = 50, + .baseSpeed = 55, + .baseSpAttack = 44, + .baseSpDefense = 50, + .types = { TYPE_WATER, TYPE_FLYING }, + .catchRate = 190, + .expYield = 61, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_BIG_PECKS, ABILITY_HYDRATION }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Ducklett"), + .cryId = CRY_DUCKLETT, + .natDexNum = NATIONAL_DEX_DUCKLETT, + .categoryName = _("Water Bird"), + .height = 5, + .weight = 55, + .description = COMPOUND_STRING( + "These bird Pokémon are excellent divers.\n" + "They are better at swimming than flying,\n" + "and they happily eat their favorite food,\n" + "peat moss, as they dive underwater."), + .pokemonScale = 432, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Ducklett, 32, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Ducklett, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Ducklett, 48, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Ducklett), + ICON(Ducklett, 0), + .footprint = gMonFootprint_Ducklett, + LEARNSETS(Ducklett), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_SWANNA}), + }, + + [SPECIES_SWANNA] = + { + .baseHP = 75, + .baseAttack = 87, + .baseDefense = 63, + .baseSpeed = 98, + .baseSpAttack = 87, + .baseSpDefense = 63, + .types = { TYPE_WATER, TYPE_FLYING }, + .catchRate = 45, + .expYield = 166, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_BIG_PECKS, ABILITY_HYDRATION }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Swanna"), + .cryId = CRY_SWANNA, + .natDexNum = NATIONAL_DEX_SWANNA, + .categoryName = _("White Bird"), + .height = 13, + .weight = 242, + .description = COMPOUND_STRING( + "Despite their elegant appearance, they\n" + "can flap their wings strongly and fly for\n" + "thousands of miles. The one in the middle\n" + "is the leader of the flock."), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Swanna, 56, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Swanna, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Swanna, 64, 64), + .backPicYOffset = 1, + .backAnimId = BACK_ANIM_H_STRETCH, + PALETTES(Swanna), + ICON(Swanna, 2), + .footprint = gMonFootprint_Swanna, + LEARNSETS(Swanna), + }, +#endif //P_FAMILY_DUCKLETT + +#if P_FAMILY_VANILLITE + [SPECIES_VANILLITE] = + { + .baseHP = 36, + .baseAttack = 50, + .baseDefense = 50, + .baseSpeed = 44, + .baseSpAttack = 65, + .baseSpDefense = 60, + .types = { TYPE_ICE, TYPE_ICE }, + .catchRate = 255, + .expYield = 61, + .evYield_SpAttack = 1, + .itemRare = ITEM_NEVER_MELT_ICE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_ICE_BODY, ABILITY_SNOW_CLOAK, ABILITY_WEAK_ARMOR }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Vanillite"), + .cryId = CRY_VANILLITE, + .natDexNum = NATIONAL_DEX_VANILLITE, + .categoryName = _("Fresh Snow"), + .height = 4, + .weight = 57, + .description = COMPOUND_STRING( + "The temperature of their breath is -58ºF.\n" + "They create snow crystals and make snow\n" + "fall in the areas around them. Vanillite is\n" + "treasured by households in warm regions."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Vanillite, 32, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Vanillite, + .frontAnimId = ANIM_H_SLIDE, + BACK_PIC(Vanillite, 40, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Vanillite), + ICON(Vanillite, 0), + .footprint = gMonFootprint_Vanillite, + LEARNSETS(Vanillite), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_VANILLISH}), + }, + + [SPECIES_VANILLISH] = + { + .baseHP = 51, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 59, + .baseSpAttack = 80, + .baseSpDefense = 75, + .types = { TYPE_ICE, TYPE_ICE }, + .catchRate = 120, + .expYield = 138, + .evYield_SpAttack = 2, + .itemRare = ITEM_NEVER_MELT_ICE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_ICE_BODY, ABILITY_SNOW_CLOAK, ABILITY_WEAK_ARMOR }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Vanillish"), + .cryId = CRY_VANILLISH, + .natDexNum = NATIONAL_DEX_VANILLISH, + .categoryName = _("Icy Snow"), + .height = 11, + .weight = 410, + .description = COMPOUND_STRING( + "Vanillish has existed since the Ice Age.\n" + "It controls particles of ice, freezes its\n" + "opponents, and then shatters them with\n" + "a headbutt."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Vanillish, 32, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Vanillish, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Vanillish, 48, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Vanillish), + ICON(Vanillish, 2), + .footprint = gMonFootprint_Vanillish, + LEARNSETS(Vanillish), + .evolutions = EVOLUTION({EVO_LEVEL, 47, SPECIES_VANILLUXE}), + }, + + [SPECIES_VANILLUXE] = + { + .baseHP = 71, + .baseAttack = 95, + .baseDefense = 85, + .baseSpeed = 79, + .baseSpAttack = 110, + .baseSpDefense = 95, + .types = { TYPE_ICE, TYPE_ICE }, + .catchRate = 45, + .expYield = 241, + .evYield_SpAttack = 3, + .itemCommon = ITEM_NEVER_MELT_ICE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_ICE_BODY, ABILITY_SNOW_WARNING, ABILITY_WEAK_ARMOR }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Vanilluxe"), + .cryId = CRY_VANILLUXE, + .natDexNum = NATIONAL_DEX_VANILLUXE, + .categoryName = _("Snowstorm"), + .height = 13, + .weight = 575, + .description = COMPOUND_STRING( + "Each of its two heads has a brain, and\n" + "when they are in agreement, it attacks\n" + "its enemies by exhaling a violent blizzard.\n" + "It makes snow clouds inside its body."), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Vanilluxe, 56, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Vanilluxe, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Vanilluxe, 64, 64), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Vanilluxe), + ICON(Vanilluxe, 2), + .footprint = gMonFootprint_Vanilluxe, + LEARNSETS(Vanilluxe), + }, +#endif //P_FAMILY_VANILLITE + +#if P_FAMILY_DEERLING +#define DEERLING_MISC_INFO \ + .baseHP = 60, \ + .baseAttack = 60, \ + .baseDefense = 50, \ + .baseSpeed = 75, \ + .baseSpAttack = 40, \ + .baseSpDefense = 50, \ + .types = { TYPE_NORMAL, TYPE_GRASS }, \ + .catchRate = 190, \ + .expYield = 67, \ + .evYield_Speed = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE }, \ + .speciesName = _("Deerling"), \ + .cryId = CRY_DEERLING, \ + .natDexNum = NATIONAL_DEX_DEERLING, \ + .categoryName = _("Season"), \ + .height = 6, \ + .weight = 195, \ + .pokemonScale = 422, \ + .pokemonOffset = 14, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + FRONT_PIC(Deerling, 32, 48), \ + .frontPicYOffset = 11, \ + .frontAnimFrames = sAnims_Deerling, \ + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, \ + BACK_PIC(Deerling, 48, 56), \ + .backPicYOffset = 9, \ + .backAnimId = BACK_ANIM_H_SLIDE, \ + .footprint = gMonFootprint_Deerling, \ + LEARNSETS(Deerling), \ + .formSpeciesIdTable = sDeerlingFormSpeciesIdTable + + [SPECIES_DEERLING_SPRING] = + { + DEERLING_MISC_INFO, + .bodyColor = BODY_COLOR_PINK, + .description = COMPOUND_STRING( + "Deerling have different scents\n" + "depending on the season. In early\n" + "spring, these Pokémon give off a\n" + "delicate, sweet, and calming scent."), + PALETTES(DeerlingSpring), + ICON(DeerlingSpring, 1), + .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_SAWSBUCK_SPRING}), + }, + [SPECIES_DEERLING_SUMMER] = + { + DEERLING_MISC_INFO, + .bodyColor = BODY_COLOR_GREEN, + .description = COMPOUND_STRING( + "To prevent Deerling from entering\n" + "their fields, many farmers will have\n" + "several Lycanroc stand guard, as\n" + "they are its natural enemy."), + PALETTES(DeerlingSummer), + ICON(DeerlingSummer, 1), + .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_SAWSBUCK_SUMMER}), + }, + [SPECIES_DEERLING_AUTUMN] = + { + DEERLING_MISC_INFO, + .bodyColor = BODY_COLOR_RED, + .description = COMPOUND_STRING( + "Deerling have different scents\n" + "depending on the season. In this form,\n" + "Deerling have a softly sweet scent\n" + "that lingers in the nose."), + PALETTES(DeerlingAutumn), + ICON(DeerlingAutumn, 0), + .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_SAWSBUCK_AUTUMN}), + }, + [SPECIES_DEERLING_WINTER] = + { + DEERLING_MISC_INFO, + .bodyColor = BODY_COLOR_BROWN, + .description = COMPOUND_STRING( + "Deerling's scent changes with the\n" + "seasons, but when the Pokémon is in\n" + "its Winter Form, it has hardly any\n" + "scent at all."), + PALETTES(DeerlingWinter), + ICON(DeerlingWinter, 2), + .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_SAWSBUCK_WINTER}), + }, + +#define SAWSBUCK_MISC_INFO \ + .baseHP = 80, \ + .baseAttack = 100, \ + .baseDefense = 70, \ + .baseSpeed = 95, \ + .baseSpAttack = 60, \ + .baseSpDefense = 70, \ + .types = { TYPE_NORMAL, TYPE_GRASS }, \ + .catchRate = 75, \ + .expYield = 166, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_SAP_SIPPER, ABILITY_SERENE_GRACE }, \ + .bodyColor = BODY_COLOR_BROWN, \ + .speciesName = _("Sawsbuck"), \ + .cryId = CRY_SAWSBUCK, \ + .natDexNum = NATIONAL_DEX_SAWSBUCK, \ + .categoryName = _("Season"), \ + .height = 19, \ + .weight = 925, \ + .pokemonScale = 256, \ + .pokemonOffset = 1, \ + .trainerScale = 326, \ + .trainerOffset = 4, \ + .frontPicYOffset = 0, \ + .frontAnimFrames = sAnims_Sawsbuck, \ + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, \ + .backPicYOffset = 5, \ + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, \ + .footprint = gMonFootprint_Sawsbuck, \ + LEARNSETS(Sawsbuck), \ + .formSpeciesIdTable = sSawsbuckFormSpeciesIdTable + + [SPECIES_SAWSBUCK_SPRING] = + { + SAWSBUCK_MISC_INFO, + .description = COMPOUND_STRING( + "Some people call Sawsbuck the harbingers\n" + "of spring because the plants growing on\n" + "its horns change according to the season.\n" + "The leader possesses magnificent horns."), + FRONT_PIC(SawsbuckSpring, 56, 64), + BACK_PIC(SawsbuckSpring, 48, 64), + PALETTES(SawsbuckSpring), + ICON(SawsbuckSpring, 1), + }, + + [SPECIES_SAWSBUCK_SUMMER] = + { + SAWSBUCK_MISC_INFO, + .description = COMPOUND_STRING( + "The thicker and larger the\n" + "branches and leaves on its antlers, the\n" + "more majestic the Sawsbuck is thought\n" + "to be."), + FRONT_PIC(SawsbuckSummer, 64, 64), + BACK_PIC(SawsbuckSummer, 64, 64), + PALETTES(SawsbuckSummer), + ICON(SawsbuckSummer, 1), + }, + + [SPECIES_SAWSBUCK_AUTUMN] = + { + SAWSBUCK_MISC_INFO, + .description = COMPOUND_STRING( + "Sawsbuck in their Autumn Form are\n" + "known for having very short\n" + "tempers. The males fight each other\n" + "incessantly."), + FRONT_PIC(SawsbuckAutumn, 64, 64), + BACK_PIC(SawsbuckAutumn, 64, 64), + PALETTES(SawsbuckAutumn), + ICON(SawsbuckAutumn, 1), + }, + + [SPECIES_SAWSBUCK_WINTER] = + { + SAWSBUCK_MISC_INFO, + .description = COMPOUND_STRING( + "Though there are many enthusiasts\n" + "for Sawsbuck as a species, this\n" + "seasonal form in particular is not\n" + "very popular."), + FRONT_PIC(SawsbuckWinter, 56, 64), + BACK_PIC(SawsbuckWinter, 48, 64), + PALETTES(SawsbuckWinter), + ICON(SawsbuckWinter, 1), + }, + +#endif //P_FAMILY_DEERLING + +#if P_FAMILY_EMOLGA + [SPECIES_EMOLGA] = + { + .baseHP = 55, + .baseAttack = 75, + .baseDefense = 60, + .baseSpeed = 103, + .baseSpAttack = 75, + .baseSpDefense = 60, + .types = { TYPE_ELECTRIC, TYPE_FLYING }, + .catchRate = 200, + .expYield = 150, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_STATIC, ABILITY_NONE, ABILITY_MOTOR_DRIVE }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Emolga"), + .cryId = CRY_EMOLGA, + .natDexNum = NATIONAL_DEX_EMOLGA, + .categoryName = _("Sky Squirrel"), + .height = 4, + .weight = 50, + .description = COMPOUND_STRING( + "It glides using its cape-like membrane.\n" + "It grills berries and bug Pokémon with\n" + "electric shocks from the pouches on its\n" + "cheeks and makes a meal of them."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Emolga, 64, 48), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_Emolga, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + .enemyMonElevation = 19, + BACK_PIC(Emolga, 56, 40), + .backPicYOffset = 16, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Emolga), + ICON(Emolga, 2), + .footprint = gMonFootprint_Emolga, + LEARNSETS(Emolga), + }, +#endif //P_FAMILY_EMOLGA + +#if P_FAMILY_KARRABLAST + [SPECIES_KARRABLAST] = + { + .baseHP = 50, + .baseAttack = 75, + .baseDefense = 45, + .baseSpeed = 60, + .baseSpAttack = 40, + .baseSpDefense = 45, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 200, + .expYield = 63, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_SHED_SKIN, ABILITY_NO_GUARD }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Karrablast"), + .cryId = CRY_KARRABLAST, + .natDexNum = NATIONAL_DEX_KARRABLAST, + .categoryName = _("Clamping"), + .height = 5, + .weight = 59, + .description = COMPOUND_STRING( + "When they feel threatened, they spit an\n" + "acidic liquid to drive attackers away.\n" + "For some reason they evolve while they\n" + "are in the same place as Shelmet."), + .pokemonScale = 432, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Karrablast, 40, 48), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Karrablast, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Karrablast, 48, 48), + .backPicYOffset = 14, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Karrablast), + ICON(Karrablast, 0), + .footprint = gMonFootprint_Karrablast, + LEARNSETS(Karrablast), + .evolutions = EVOLUTION({EVO_TRADE_SPECIFIC_MON, SPECIES_SHELMET, SPECIES_ESCAVALIER}), + }, + + [SPECIES_ESCAVALIER] = + { + .baseHP = 70, + .baseAttack = 135, + .baseDefense = 105, + .baseSpeed = 20, + .baseSpAttack = 60, + .baseSpDefense = 105, + .types = { TYPE_BUG, TYPE_STEEL }, + .catchRate = 75, + .expYield = 173, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_SHELL_ARMOR, ABILITY_OVERCOAT }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Escavalier"), + .cryId = CRY_ESCAVALIER, + .natDexNum = NATIONAL_DEX_ESCAVALIER, + .categoryName = _("Cavalry"), + .height = 10, + .weight = 330, + .description = COMPOUND_STRING( + "Wearing the shell covering they stole\n" + "from Shelmet, they defend themselves and\n" + "attack with two lances. The steel armor\n" + "protects their whole body."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Escavalier, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Escavalier, + .frontAnimId = ANIM_BACK_AND_LUNGE, + BACK_PIC(Escavalier, 64, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Escavalier), + ICON(Escavalier, 0), + .footprint = gMonFootprint_Escavalier, + LEARNSETS(Escavalier), + }, +#endif //P_FAMILY_KARRABLAST + +#if P_FAMILY_FOONGUS + [SPECIES_FOONGUS] = + { + .baseHP = 69, + .baseAttack = 55, + .baseDefense = 45, + .baseSpeed = 15, + .baseSpAttack = 55, + .baseSpDefense = 55, + .types = { TYPE_GRASS, TYPE_POISON }, + .catchRate = 190, + .expYield = 59, + .evYield_HP = 1, + .itemCommon = ITEM_TINY_MUSHROOM, + .itemRare = ITEM_BIG_MUSHROOM, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_EFFECT_SPORE, ABILITY_NONE, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Foongus"), + .cryId = CRY_FOONGUS, + .natDexNum = NATIONAL_DEX_FOONGUS, + .categoryName = _("Mushroom"), + .height = 2, + .weight = 10, + .description = COMPOUND_STRING( + "It lures Pokémon in with its pattern that\n" + "looks just like a Poké Ball, then releases\n" + "its poison spores. Why it resembles a\n" + "Poké Ball is unknown."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Foongus, 32, 32), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Foongus, + .frontAnimId = ANIM_SWING_CONCAVE_FAST, + BACK_PIC(Foongus, 48, 40), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Foongus), + ICON(Foongus, 0), + .footprint = gMonFootprint_Foongus, + LEARNSETS(Foongus), + .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_AMOONGUSS}), + }, + + [SPECIES_AMOONGUSS] = + { + .baseHP = 114, + .baseAttack = 85, + .baseDefense = 70, + .baseSpeed = 30, + .baseSpAttack = 85, + .baseSpDefense = 80, + .types = { TYPE_GRASS, TYPE_POISON }, + .catchRate = 75, + .expYield = 162, + .evYield_HP = 2, + .itemCommon = ITEM_TINY_MUSHROOM, + .itemRare = ITEM_BIG_MUSHROOM, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_EFFECT_SPORE, ABILITY_NONE, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = TRUE, + .speciesName = _("Amoonguss"), + .cryId = CRY_AMOONGUSS, + .natDexNum = NATIONAL_DEX_AMOONGUSS, + .categoryName = _("Mushroom"), + .height = 6, + .weight = 105, + .description = COMPOUND_STRING( + "It lures prey close by dancing and waving\n" + "its arm caps, which resemble Poké Balls,\n" + "in a swaying motion, but very few Pokémon\n" + "are fooled by this."), + .pokemonScale = 422, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Amoonguss, 56, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Amoonguss, + .frontAnimId = ANIM_H_SLIDE, + BACK_PIC(Amoonguss, 64, 48), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(Amoonguss), + ICON(Amoonguss, 1), + .footprint = gMonFootprint_Amoonguss, + LEARNSETS(Amoonguss), + }, +#endif //P_FAMILY_FOONGUS + +#if P_FAMILY_FRILLISH + [SPECIES_FRILLISH] = + { + .baseHP = 55, + .baseAttack = 40, + .baseDefense = 50, + .baseSpeed = 40, + .baseSpAttack = 65, + .baseSpDefense = 85, + .types = { TYPE_WATER, TYPE_GHOST }, + .catchRate = 190, + .expYield = 67, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_WATER_ABSORB, ABILITY_CURSED_BODY, ABILITY_DAMP }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Frillish"), + .cryId = CRY_FRILLISH, + .natDexNum = NATIONAL_DEX_FRILLISH, + .categoryName = _("Floating"), + .height = 12, + .weight = 330, + .description = COMPOUND_STRING( + "If its veil-like arms stun and wrap an\n" + "opponent, that foe will be dragged\n" + "five miles below the surface to its lair,\n" + "never to return."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Frillish, 56, 56), + FRONT_PIC_FEMALE(Frillish, 56, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Frillish, + .frontAnimId = ANIM_RISING_WOBBLE, + BACK_PIC(Frillish, 40, 56), + BACK_PIC_FEMALE(Frillish, 40, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Frillish), + PALETTE_FEMALE(Frillish), + ICON(Frillish, 0), + ICON_FEMALE(Frillish, 1), + .footprint = gMonFootprint_Frillish, + LEARNSETS(Frillish), + .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_JELLICENT}), + }, + + [SPECIES_JELLICENT] = + { + .baseHP = 100, + .baseAttack = 60, + .baseDefense = 70, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 105, + .types = { TYPE_WATER, TYPE_GHOST }, + .catchRate = 60, + .expYield = 168, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_WATER_ABSORB, ABILITY_CURSED_BODY, ABILITY_DAMP }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Jellicent"), + .cryId = CRY_JELLICENT, + .natDexNum = NATIONAL_DEX_JELLICENT, + .categoryName = _("Floating"), + .height = 22, + .weight = 1350, + .description = COMPOUND_STRING( + "They propel themselves by expelling\n" + "absorbed seawater from their bodies.\n" + "It's said there's a castle of ships\n" + "Jellicent have sunk on the seafloor."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 348, + .trainerOffset = 6, + FRONT_PIC(Jellicent, 64, 64), + FRONT_PIC_FEMALE(Jellicent, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Jellicent, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Jellicent, 64, 48), + BACK_PIC_FEMALE(Jellicent, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(Jellicent), + PALETTE_FEMALE(Jellicent), + ICON(Jellicent, 0), + ICON_FEMALE(Jellicent, 1), + .footprint = gMonFootprint_Jellicent, + LEARNSETS(Jellicent), + }, +#endif //P_FAMILY_FRILLISH + +#if P_FAMILY_ALOMOMOLA + [SPECIES_ALOMOMOLA] = + { + .baseHP = 165, + .baseAttack = 75, + .baseDefense = 80, + .baseSpeed = 65, + .baseSpAttack = 40, + .baseSpDefense = 45, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 75, + .expYield = 165, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_HEALER, ABILITY_HYDRATION, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Alomomola"), + .cryId = CRY_ALOMOMOLA, + .natDexNum = NATIONAL_DEX_ALOMOMOLA, + .categoryName = _("Caring"), + .height = 12, + .weight = 316, + .description = COMPOUND_STRING( + "When they find a wounded Pokémon,\n" + "they embrace it and bring it to shore.\n" + "The special membrane enveloping\n" + "Alomomola has the ability to heal wounds."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Alomomola, 32, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Alomomola, + .frontAnimId = ANIM_SWING_CONCAVE, + BACK_PIC(Alomomola, 48, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Alomomola), + ICON(Alomomola, 0), + .footprint = gMonFootprint_Alomomola, + LEARNSETS(Alomomola), + }, +#endif //P_FAMILY_ALOMOMOLA + +#if P_FAMILY_JOLTIK + [SPECIES_JOLTIK] = + { + .baseHP = 50, + .baseAttack = 47, + .baseDefense = 50, + .baseSpeed = 65, + .baseSpAttack = 57, + .baseSpDefense = 50, + .types = { TYPE_BUG, TYPE_ELECTRIC }, + .catchRate = 190, + .expYield = 64, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_COMPOUND_EYES, ABILITY_UNNERVE, ABILITY_SWARM }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Joltik"), + .cryId = CRY_JOLTIK, + .natDexNum = NATIONAL_DEX_JOLTIK, + .categoryName = _("Attaching"), + .height = 1, + .weight = 6, + .description = COMPOUND_STRING( + "Since they can't generate their own\n" + "electricity, they attach themselves to\n" + "large-bodied Pokémon and absorb static\n" + "electricity, which they store in a pouch."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Joltik, 32, 32), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_Joltik, + .frontAnimId = ANIM_H_SLIDE, + BACK_PIC(Joltik, 48, 32), + .backPicYOffset = 19, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Joltik), + ICON(Joltik, 0), + .footprint = gMonFootprint_Joltik, + LEARNSETS(Joltik), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_GALVANTULA}), + }, + + [SPECIES_GALVANTULA] = + { + .baseHP = 70, + .baseAttack = 77, + .baseDefense = 60, + .baseSpeed = 108, + .baseSpAttack = 97, + .baseSpDefense = 60, + .types = { TYPE_BUG, TYPE_ELECTRIC }, + .catchRate = 75, + .expYield = 165, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_COMPOUND_EYES, ABILITY_UNNERVE, ABILITY_SWARM }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Galvantula"), + .cryId = CRY_GALVANTULA, + .natDexNum = NATIONAL_DEX_GALVANTULA, + .categoryName = _("EleSpider"), + .height = 8, + .weight = 143, + .description = COMPOUND_STRING( + "It creates barriers from electrified silk\n" + "that stun foes. This works as a weapon as\n" + "well as a defense. While it is immobilized\n" + "by shock, they leisurely consume it."), + .pokemonScale = 366, + .pokemonOffset = 10, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Galvantula, 56, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Galvantula, + .frontAnimId = ANIM_CIRCLE_C_CLOCKWISE_SLOW, + BACK_PIC(Galvantula, 64, 40), + .backPicYOffset = 18, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(Galvantula), + ICON(Galvantula, 2), + .footprint = gMonFootprint_Galvantula, + LEARNSETS(Galvantula), + }, +#endif //P_FAMILY_JOLTIK + +#if P_FAMILY_FERROSEED + [SPECIES_FERROSEED] = + { + .baseHP = 44, + .baseAttack = 50, + .baseDefense = 91, + .baseSpeed = 10, + .baseSpAttack = 24, + .baseSpDefense = 86, + .types = { TYPE_GRASS, TYPE_STEEL }, + .catchRate = 255, + .expYield = 61, + .evYield_Defense = 1, + .itemRare = ITEM_STICKY_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_IRON_BARBS, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Ferroseed"), + .cryId = CRY_FERROSEED, + .natDexNum = NATIONAL_DEX_FERROSEED, + .categoryName = _("Thorn Seed"), + .height = 6, + .weight = 188, + .description = COMPOUND_STRING( + "It absorbs the iron it finds in the rock\n" + "while clinging to the ceiling of caves.\n" + "When threatened, it attacks by shooting\n" + "a barrage of spikes."), + .pokemonScale = 422, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Ferroseed, 32, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Ferroseed, + .frontAnimId = ANIM_H_VIBRATE, + BACK_PIC(Ferroseed, 48, 40), + .backPicYOffset = 15, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Ferroseed), + ICON(Ferroseed, 1), + .footprint = gMonFootprint_Ferroseed, + LEARNSETS(Ferroseed), + .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_FERROTHORN}), + }, + + [SPECIES_FERROTHORN] = + { + .baseHP = 74, + .baseAttack = 94, + .baseDefense = 131, + .baseSpeed = 20, + .baseSpAttack = 54, + .baseSpDefense = 116, + .types = { TYPE_GRASS, TYPE_STEEL }, + .catchRate = 90, + .expYield = 171, + .evYield_Defense = 2, + .itemRare = ITEM_STICKY_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_IRON_BARBS, ABILITY_NONE, ABILITY_ANTICIPATION }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Ferrothorn"), + .cryId = CRY_FERROTHORN, + .natDexNum = NATIONAL_DEX_FERROTHORN, + .categoryName = _("Thorn Pod"), + .height = 10, + .weight = 1100, + .description = COMPOUND_STRING( + "It fights by swinging around its three\n" + "spiky feelers and shooting spikes.\n" + "A hit from these steel spikes can reduce\n" + "a boulder to rubble."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Ferrothorn, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Ferrothorn, + .frontAnimId = ANIM_V_SHAKE, + .enemyMonElevation = 10, + BACK_PIC(Ferrothorn, 64, 40), + .backPicYOffset = 14, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Ferrothorn), + ICON(Ferrothorn, 1), + .footprint = gMonFootprint_Ferrothorn, + LEARNSETS(Ferrothorn), + }, +#endif //P_FAMILY_FERROSEED + +#if P_FAMILY_KLINK + [SPECIES_KLINK] = + { + .baseHP = 40, + .baseAttack = 55, + .baseDefense = 70, + .baseSpeed = 30, + .baseSpAttack = 45, + .baseSpDefense = 60, + .types = { TYPE_STEEL, TYPE_STEEL }, + .catchRate = 130, + .expYield = 60, + .evYield_Defense = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_PLUS, ABILITY_MINUS, ABILITY_CLEAR_BODY }, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = TRUE, + .speciesName = _("Klink"), + .cryId = CRY_KLINK, + .natDexNum = NATIONAL_DEX_KLINK, + .categoryName = _("Gear"), + .height = 3, + .weight = 210, + .description = COMPOUND_STRING( + "Two bodies comprise a fixed pair.\n" + "The two minigears that mesh together\n" + "are predetermined. Each will rebound from\n" + "other minigears without meshing."), + .pokemonScale = 530, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Klink, 48, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Klink, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + .enemyMonElevation = 12, + BACK_PIC(Klink, 64, 64), + .backPicYOffset = 17, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Klink), + ICON(Klink, 0), + .footprint = gMonFootprint_Klink, + LEARNSETS(Klink), + .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_KLANG}), + }, + + [SPECIES_KLANG] = + { + .baseHP = 60, + .baseAttack = 80, + .baseDefense = 95, + .baseSpeed = 50, + .baseSpAttack = 70, + .baseSpDefense = 85, + .types = { TYPE_STEEL, TYPE_STEEL }, + .catchRate = 60, + .expYield = 154, + .evYield_Defense = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_PLUS, ABILITY_MINUS, ABILITY_CLEAR_BODY }, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = TRUE, + .speciesName = _("Klang"), + .cryId = CRY_KLANG, + .natDexNum = NATIONAL_DEX_KLANG, + .categoryName = _("Gear"), + .height = 6, + .weight = 510, + .description = COMPOUND_STRING( + "A minigear and big gear comprise its\n" + "body. Spinning minigears are rotated\n" + "at high speed and repeatedly fired away.\n" + "It is dangerous if the gears don't return."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Klang, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Klang, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + .enemyMonElevation = 8, + BACK_PIC(Klang, 64, 64), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Klang), + ICON(Klang, 0), + .footprint = gMonFootprint_Klang, + LEARNSETS(Klang), + .evolutions = EVOLUTION({EVO_LEVEL, 49, SPECIES_KLINKLANG}), + }, + + [SPECIES_KLINKLANG] = + { + .baseHP = 60, + .baseAttack = 100, + .baseDefense = 115, + .baseSpeed = 90, + .baseSpAttack = 70, + .baseSpDefense = 85, + .types = { TYPE_STEEL, TYPE_STEEL }, + .catchRate = 30, + .expYield = 234, + .evYield_Defense = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_PLUS, ABILITY_MINUS, ABILITY_CLEAR_BODY }, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = TRUE, + .speciesName = _("Klinklang"), + .cryId = CRY_KLINKLANG, + .natDexNum = NATIONAL_DEX_KLINKLANG, + .categoryName = _("Gear"), + .height = 6, + .weight = 810, + .description = COMPOUND_STRING( + "Its red core functions as an energy tank.\n" + "It is rotated at high speed for a rapid\n" + "energy charge. It fires the charged energy\n" + "through its spikes into an area."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Klinklang, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Klinklang, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + .enemyMonElevation = 4, + BACK_PIC(Klinklang, 64, 64), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + PALETTES(Klinklang), + ICON(Klinklang, 0), + .footprint = gMonFootprint_Klinklang, + LEARNSETS(Klinklang), + }, +#endif //P_FAMILY_KLINK + +#if P_FAMILY_TYNAMO + [SPECIES_TYNAMO] = + { + .baseHP = 35, + .baseAttack = 55, + .baseDefense = 40, + .baseSpeed = 60, + .baseSpAttack = 45, + .baseSpDefense = 40, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 190, + .expYield = 55, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Tynamo"), + .cryId = CRY_TYNAMO, + .natDexNum = NATIONAL_DEX_TYNAMO, + .categoryName = _("EleFish"), + .height = 2, + .weight = 3, + .description = COMPOUND_STRING( + "These Pokémon move in schools.\n" + "One alone can emit only a trickle of\n" + "electricity, so a group of them gathers\n" + "to unleash a powerful electric shock."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Tynamo, 40, 24), + .frontPicYOffset = 22, + .frontAnimFrames = sAnims_Tynamo, + .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, + .enemyMonElevation = 16, + BACK_PIC(Tynamo, 64, 24), + .backPicYOffset = 21, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Tynamo), + ICON(Tynamo, 0), + .footprint = gMonFootprint_Tynamo, + LEARNSETS(Tynamo), + .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_EELEKTRIK}), + }, + + [SPECIES_EELEKTRIK] = + { + .baseHP = 65, + .baseAttack = 85, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 75, + .baseSpDefense = 70, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 60, + .expYield = 142, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Eelektrik"), + .cryId = CRY_EELEKTRIK, + .natDexNum = NATIONAL_DEX_EELEKTRIK, + .categoryName = _("EleFish"), + .height = 12, + .weight = 220, + .description = COMPOUND_STRING( + "These Pokémon have a big appetite.\n" + "It wraps itself around its prey and\n" + "paralyzes it with electricity from the\n" + "round spots on its sides. Then it chomps."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Eelektrik, 48, 64), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Eelektrik, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 8, + BACK_PIC(Eelektrik, 56, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Eelektrik), + ICON(Eelektrik, 0), + .footprint = gMonFootprint_Eelektrik, + LEARNSETS(Eelektrik), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_EELEKTROSS}), + }, + + [SPECIES_EELEKTROSS] = + { + .baseHP = 85, + .baseAttack = 115, + .baseDefense = 80, + .baseSpeed = 50, + .baseSpAttack = 105, + .baseSpDefense = 80, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 30, + .expYield = 232, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Eelektross"), + .cryId = CRY_EELEKTROSS, + .natDexNum = NATIONAL_DEX_EELEKTROSS, + .categoryName = _("EleFish"), + .height = 21, + .weight = 805, + .description = COMPOUND_STRING( + "They crawl out of the ocean using their\n" + "arms. They will attack prey on shore and\n" + "immediately drag it into the ocean, with\n" + "their sucker mouths."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 365, + .trainerOffset = 7, + FRONT_PIC(Eelektross, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Eelektross, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW, + .enemyMonElevation = 8, + BACK_PIC(Eelektross, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(Eelektross), + ICON(Eelektross, 0), + .footprint = gMonFootprint_Eelektross, + LEARNSETS(Eelektross), + }, +#endif //P_FAMILY_TYNAMO + +#if P_FAMILY_ELGYEM + [SPECIES_ELGYEM] = + { + .baseHP = 55, + .baseAttack = 55, + .baseDefense = 55, + .baseSpeed = 30, + .baseSpAttack = 85, + .baseSpDefense = 55, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 255, + .expYield = 67, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_TELEPATHY, ABILITY_SYNCHRONIZE, ABILITY_ANALYTIC }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Elgyem"), + .cryId = CRY_ELGYEM, + .natDexNum = NATIONAL_DEX_ELGYEM, + .categoryName = _("Cerebral"), + .height = 5, + .weight = 90, + .description = COMPOUND_STRING( + "It psychically squeezes the brain of\n" + "its foe, causing unendurable headaches.\n" + "Rumors of its origin are linked to a UFO\n" + "crash site in the desert 50 years ago."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Elgyem, 32, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Elgyem, + .frontAnimId = ANIM_RISING_WOBBLE, + BACK_PIC(Elgyem, 48, 56), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Elgyem), + ICON(Elgyem, 0), + .footprint = gMonFootprint_Elgyem, + LEARNSETS(Elgyem), + .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_BEHEEYEM}), + }, + + [SPECIES_BEHEEYEM] = + { + .baseHP = 75, + .baseAttack = 75, + .baseDefense = 75, + .baseSpeed = 40, + .baseSpAttack = 125, + .baseSpDefense = 95, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 90, + .expYield = 170, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_TELEPATHY, ABILITY_SYNCHRONIZE, ABILITY_ANALYTIC }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Beheeyem"), + .cryId = CRY_BEHEEYEM, + .natDexNum = NATIONAL_DEX_BEHEEYEM, + .categoryName = _("Cerebral"), + .height = 10, + .weight = 345, + .description = COMPOUND_STRING( + "It can manipulate an opponent's memory.\n" + "Apparently, it communicates by flashing\n" + "its three fingers, but those patterns\n" + "haven't been decoded. "), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Beheeyem, 48, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Beheeyem, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Beheeyem, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Beheeyem), + ICON(Beheeyem, 2), + .footprint = gMonFootprint_Beheeyem, + LEARNSETS(Beheeyem), + }, +#endif //P_FAMILY_ELGYEM + +#if P_FAMILY_LITWICK + [SPECIES_LITWICK] = + { + .baseHP = 50, + .baseAttack = 30, + .baseDefense = 55, + .baseSpeed = 20, + .baseSpAttack = 65, + .baseSpDefense = 55, + .types = { TYPE_GHOST, TYPE_FIRE }, + .catchRate = 190, + .expYield = 55, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + #if P_UPDATED_ABILITIES >= GEN_6 + .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_INFILTRATOR }, + #else + .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_SHADOW_TAG }, + #endif + .bodyColor = BODY_COLOR_WHITE, + .noFlip = TRUE, + .speciesName = _("Litwick"), + .cryId = CRY_LITWICK, + .natDexNum = NATIONAL_DEX_LITWICK, + .categoryName = _("Candle"), + .height = 3, + .weight = 31, + .description = COMPOUND_STRING( + "While Litwick shines a light and pretends\n" + "to be a guide, it absorbs the life force of\n" + "any who follow it, which becomes the fuel\n" + "that it burns."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Litwick, 32, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Litwick, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Litwick, 40, 40), + .backPicYOffset = 14, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Litwick), + ICON(Litwick, 2), + .footprint = gMonFootprint_Litwick, + LEARNSETS(Litwick), + .evolutions = EVOLUTION({EVO_LEVEL, 41, SPECIES_LAMPENT}), + }, + + [SPECIES_LAMPENT] = + { + .baseHP = 60, + .baseAttack = 40, + .baseDefense = 60, + .baseSpeed = 55, + .baseSpAttack = 95, + .baseSpDefense = 60, + .types = { TYPE_GHOST, TYPE_FIRE }, + .catchRate = 90, + .expYield = 130, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + #if P_UPDATED_ABILITIES >= GEN_6 + .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_INFILTRATOR }, + #else + .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_SHADOW_TAG }, + #endif + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Lampent"), + .cryId = CRY_LAMPENT, + .natDexNum = NATIONAL_DEX_LAMPENT, + .categoryName = _("Lamp"), + .height = 6, + .weight = 130, + .description = COMPOUND_STRING( + "This ominous Pokémon is feared.\n" + "Through cities it wanders, searching\n" + "for the spirits of the fallen. The spirits\n" + "it absorbs fuel its baleful fire."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Lampent, 56, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Lampent, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 6, + BACK_PIC(Lampent, 56, 48), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Lampent), + ICON(Lampent, 2), + .footprint = gMonFootprint_Lampent, + LEARNSETS(Lampent), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_CHANDELURE}), + }, + + [SPECIES_CHANDELURE] = + { + .baseHP = 60, + .baseAttack = 55, + .baseDefense = 90, + .baseSpeed = 80, + .baseSpAttack = 145, + .baseSpDefense = 90, + .types = { TYPE_GHOST, TYPE_FIRE }, + .catchRate = 45, + .expYield = 234, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + #if P_UPDATED_ABILITIES >= GEN_6 + .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_INFILTRATOR }, + #else + .abilities = { ABILITY_FLASH_FIRE, ABILITY_FLAME_BODY, ABILITY_SHADOW_TAG }, + #endif + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Chandelure"), + .cryId = CRY_CHANDELURE, + .natDexNum = NATIONAL_DEX_CHANDELURE, + .categoryName = _("Luring"), + .height = 10, + .weight = 343, + .description = COMPOUND_STRING( + "Being consumed in Chandelure's flame burns\n" + "up the spirit, leaving the body behind.\n" + "By waving the flames on its arms, it puts\n" + "its foes into a hypnotic trance."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Chandelure, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Chandelure, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + .enemyMonElevation = 6, + BACK_PIC(Chandelure, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Chandelure), + ICON(Chandelure, 2), + .footprint = gMonFootprint_Chandelure, + LEARNSETS(Chandelure), + }, +#endif //P_FAMILY_LITWICK + +#if P_FAMILY_AXEW + [SPECIES_AXEW] = + { + .baseHP = 46, + .baseAttack = 87, + .baseDefense = 60, + .baseSpeed = 57, + .baseSpAttack = 30, + .baseSpDefense = 40, + .types = { TYPE_DRAGON, TYPE_DRAGON }, + .catchRate = 75, + .expYield = 64, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_RIVALRY, ABILITY_MOLD_BREAKER, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Axew"), + .cryId = CRY_AXEW, + .natDexNum = NATIONAL_DEX_AXEW, + .categoryName = _("Tusk"), + .height = 6, + .weight = 180, + .description = COMPOUND_STRING( + "They mark their territory by leaving\n" + "gashes in trees with their tusks. If a\n" + "tusk breaks, a new one grows in quickly,\n" + "harder and sturdier than the last."), + .pokemonScale = 422, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Axew, 40, 48), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Axew, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Axew, 48, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Axew), + ICON(Axew, 1), + .footprint = gMonFootprint_Axew, + LEARNSETS(Axew), + .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_FRAXURE}), + }, + + [SPECIES_FRAXURE] = + { + .baseHP = 66, + .baseAttack = 117, + .baseDefense = 70, + .baseSpeed = 67, + .baseSpAttack = 40, + .baseSpDefense = 50, + .types = { TYPE_DRAGON, TYPE_DRAGON }, + .catchRate = 60, + .expYield = 144, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_RIVALRY, ABILITY_MOLD_BREAKER, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Fraxure"), + .cryId = CRY_FRAXURE, + .natDexNum = NATIONAL_DEX_FRAXURE, + .categoryName = _("Axe Jaw"), + .height = 10, + .weight = 360, + .description = COMPOUND_STRING( + "Their tusks can shatter rocks.\n" + "A broken tusk will not grow back,\n" + "so it diligently sharpens its tusks on\n" + "river rocks after the end of a battle."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Fraxure, 56, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Fraxure, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Fraxure, 64, 48), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Fraxure), + ICON(Fraxure, 1), + .footprint = gMonFootprint_Fraxure, + LEARNSETS(Fraxure), + .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_HAXORUS}), + }, + + [SPECIES_HAXORUS] = + { + .baseHP = 76, + .baseAttack = 147, + .baseDefense = 90, + .baseSpeed = 97, + .baseSpAttack = 60, + .baseSpDefense = 70, + .types = { TYPE_DRAGON, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 243, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_RIVALRY, ABILITY_MOLD_BREAKER, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Haxorus"), + .cryId = CRY_HAXORUS, + .natDexNum = NATIONAL_DEX_HAXORUS, + .categoryName = _("Axe Jaw"), + .height = 18, + .weight = 1055, + .description = COMPOUND_STRING( + "They are kind but can be relentless\n" + "when defending territory. Their sturdy\n" + "tusks will stay sharp even if used to cut\n" + "steel beams."), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + FRONT_PIC(Haxorus, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Haxorus, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Haxorus, 64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Haxorus), + ICON(Haxorus, 2), + .footprint = gMonFootprint_Haxorus, + LEARNSETS(Haxorus), + }, +#endif //P_FAMILY_AXEW + +#if P_FAMILY_CUBCHOO + [SPECIES_CUBCHOO] = + { + .baseHP = 55, + .baseAttack = 70, + .baseDefense = 40, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = 40, + .types = { TYPE_ICE, TYPE_ICE }, + .catchRate = 120, + .expYield = 61, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SNOW_CLOAK, ABILITY_SLUSH_RUSH, ABILITY_RATTLED }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Cubchoo"), + .cryId = CRY_CUBCHOO, + .natDexNum = NATIONAL_DEX_CUBCHOO, + .categoryName = _("Chill"), + .height = 5, + .weight = 85, + .description = COMPOUND_STRING( + "Its nose is always running.\n" + "Their snot is a barometer of health.\n" + "When healthy, their snot is sticky and\n" + "the power of their ice moves increases."), + .pokemonScale = 432, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cubchoo, 32, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Cubchoo, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Cubchoo, 40, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Cubchoo), + ICON(Cubchoo, 0), + .footprint = gMonFootprint_Cubchoo, + LEARNSETS(Cubchoo), + .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_BEARTIC}), + }, + + [SPECIES_BEARTIC] = + { + .baseHP = 95, + .baseAttack = P_UPDATED_STATS >= GEN_7 ? 130 : 110, + .baseDefense = 80, + .baseSpeed = 50, + .baseSpAttack = 70, + .baseSpDefense = 80, + .types = { TYPE_ICE, TYPE_ICE }, + .catchRate = 60, + .expYield = 177, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SNOW_CLOAK, ABILITY_SLUSH_RUSH, ABILITY_SWIFT_SWIM }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Beartic"), + .cryId = CRY_BEARTIC, + .natDexNum = NATIONAL_DEX_BEARTIC, + .categoryName = _("Freezing"), + .height = 26, + .weight = 2600, + .description = COMPOUND_STRING( + "It freezes its breath to create fangs\n" + "and claws of ice to fight with.\n" + "Very able in the water, it swims around\n" + "in northern seas and catches prey."), + .pokemonScale = 266, + .pokemonOffset = 3, + .trainerScale = 399, + .trainerOffset = 4, + FRONT_PIC(Beartic, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Beartic, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Beartic, 64, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Beartic), + ICON(Beartic, 0), + .footprint = gMonFootprint_Beartic, + LEARNSETS(Beartic), + }, +#endif //P_FAMILY_CUBCHOO + +#if P_FAMILY_CRYOGONAL + [SPECIES_CRYOGONAL] = + { + .baseAttack = 50, + .baseSpeed = 105, + .baseSpAttack = 95, + .baseSpDefense = 135, + #if P_UPDATED_STATS >= GEN_7 + .baseHP = 80, + .baseDefense = 50, + #else + .baseHP = 70, + .baseDefense = 30, + #endif + .types = { TYPE_ICE, TYPE_ICE }, + .catchRate = 25, + .expYield = 180, + .evYield_SpDefense = 2, + .itemRare = ITEM_NEVER_MELT_ICE, + .genderRatio = MON_GENDERLESS, + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Cryogonal"), + .cryId = CRY_CRYOGONAL, + .natDexNum = NATIONAL_DEX_CRYOGONAL, + .categoryName = _("Crystallize"), + .height = 11, + .weight = 1480, + .description = COMPOUND_STRING( + "They are born in snow clouds. When\n" + "its body temperature goes up, it turns\n" + "into steam and vanishes. When its\n" + "temperature lowers, it returns to ice."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cryogonal, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Cryogonal, + .frontAnimId = ANIM_SHRINK_GROW, + .enemyMonElevation = 3, + BACK_PIC(Cryogonal, 56, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Cryogonal), + ICON(Cryogonal, 0), + .footprint = gMonFootprint_Cryogonal, + LEARNSETS(Cryogonal), + }, +#endif //P_FAMILY_CRYOGONAL + +#if P_FAMILY_SHELMET + [SPECIES_SHELMET] = + { + .baseHP = 50, + .baseAttack = 40, + .baseDefense = 85, + .baseSpeed = 25, + .baseSpAttack = 40, + .baseSpDefense = 65, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 200, + .expYield = 61, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_HYDRATION, ABILITY_SHELL_ARMOR, ABILITY_OVERCOAT }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Shelmet"), + .cryId = CRY_SHELMET, + .natDexNum = NATIONAL_DEX_SHELMET, + .categoryName = _("Snail"), + .height = 4, + .weight = 77, + .description = COMPOUND_STRING( + "When attacked, it defends itself by\n" + "closing the lid of its shell. It evolves\n" + "when bathed in an electric-like energy\n" + "along with Karrablast."), + .pokemonScale = 491, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Shelmet, 40, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Shelmet, + .frontAnimId = ANIM_TWIST, + BACK_PIC(Shelmet, 64, 32), + .backPicYOffset = 19, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Shelmet), + ICON(Shelmet, 1), + .footprint = gMonFootprint_Shelmet, + LEARNSETS(Shelmet), + .evolutions = EVOLUTION({EVO_TRADE_SPECIFIC_MON, SPECIES_KARRABLAST, SPECIES_ACCELGOR}), + }, + + [SPECIES_ACCELGOR] = + { + .baseHP = 80, + .baseAttack = 70, + .baseDefense = 40, + .baseSpeed = 145, + .baseSpAttack = 100, + .baseSpDefense = 60, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 75, + .expYield = 173, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_HYDRATION, ABILITY_STICKY_HOLD, ABILITY_UNBURDEN }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Accelgor"), + .cryId = CRY_ACCELGOR, + .natDexNum = NATIONAL_DEX_ACCELGOR, + .categoryName = _("Shell Out"), + .height = 8, + .weight = 253, + .description = COMPOUND_STRING( + "When its body dries out, it weakens. So, to\n" + "prevent dehydration, it wraps itself in\n" + "layers of thin membrane. It is very light\n" + "and fights with ninja-like movements."), + .pokemonScale = 366, + .pokemonOffset = 9, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Accelgor, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Accelgor, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + BACK_PIC(Accelgor, 64, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_H_SPRING_REPEATED, + PALETTES(Accelgor), + ICON(Accelgor, 1), + .footprint = gMonFootprint_Accelgor, + LEARNSETS(Accelgor), + }, +#endif //P_FAMILY_SHELMET + +#if P_FAMILY_STUNFISK +#define STUNFISK_MISC_INFO \ + .catchRate = 75, \ + .expYield = 165, \ + .evYield_HP = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS }, \ + .speciesName = _("Stunfisk"), \ + .cryId = CRY_STUNFISK, \ + .natDexNum = NATIONAL_DEX_STUNFISK, \ + .categoryName = _("Trap"), \ + .height = 7, \ + .pokemonScale = 365, \ + .pokemonOffset = 14, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Stunfisk, \ + .formSpeciesIdTable = sStunfiskFormSpeciesIdTable + + [SPECIES_STUNFISK] = + { + STUNFISK_MISC_INFO, + .baseHP = 109, + .baseAttack = 66, + .baseDefense = 84, + .baseSpeed = 32, + .baseSpAttack = 81, + .baseSpDefense = 99, + .types = { TYPE_GROUND, TYPE_ELECTRIC }, + .itemRare = ITEM_SOFT_SAND, + .friendship = 70, + .abilities = { ABILITY_STATIC, ABILITY_LIMBER, ABILITY_SAND_VEIL }, + .bodyColor = BODY_COLOR_BROWN, + .weight = 110, + .description = COMPOUND_STRING( + "It conceals itself in the mud of the\n" + "seashore. Then it waits. When prey touch\n" + "it, it delivers a jolt of electricity.\n" + "It smiles when transmitting electricity."), + FRONT_PIC(Stunfisk, 56, 48), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Stunfisk, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Stunfisk, 64, 24), + .backPicYOffset = 22, + .backAnimId = BACK_ANIM_H_STRETCH, + PALETTES(Stunfisk), + ICON(Stunfisk, 2), + LEARNSETS(Stunfisk), + }, + +#if P_GALARIAN_FORMS + [SPECIES_STUNFISK_GALARIAN] = + { + STUNFISK_MISC_INFO, + .baseHP = 109, + .baseAttack = 81, + .baseDefense = 99, + .baseSpeed = 32, + .baseSpAttack = 66, + .baseSpDefense = 84, + .types = { TYPE_GROUND, TYPE_STEEL }, + .friendship = STANDARD_FRIENDSHIP, + .abilities = { ABILITY_MIMICRY, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .weight = 205, + .description = COMPOUND_STRING( + "Its conspicuous lips lure prey in\n" + "as it lies in wait in the mud. When\n" + "prey gets close, Stunfisk clamps its\n" + "jagged steel fins down on them."), + FRONT_PIC(StunfiskGalarian, 48, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_StunfiskGalarian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(StunfiskGalarian, 64, 24), + .backPicYOffset = 23, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(StunfiskGalarian), + ICON(StunfiskGalarian, 1), + LEARNSETS(StunfiskGalarian), + .isGalarianForm = TRUE, + }, +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_STUNFISK + +#if P_FAMILY_MIENFOO + [SPECIES_MIENFOO] = + { + .baseHP = 45, + .baseAttack = 85, + .baseDefense = 50, + .baseSpeed = 65, + .baseSpAttack = 55, + .baseSpDefense = 50, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 180, + .expYield = 70, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_INNER_FOCUS, ABILITY_REGENERATOR, ABILITY_RECKLESS }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Mienfoo"), + .cryId = CRY_MIENFOO, + .natDexNum = NATIONAL_DEX_MIENFOO, + .categoryName = _("Martial Arts"), + .height = 9, + .weight = 200, + .description = COMPOUND_STRING( + "They have mastered elegant combos.\n" + "As they concentrate, their battle moves\n" + "become swifter and more precise. What it\n" + "lacks in power, it makes up for in quantity."), + .pokemonScale = 338, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Mienfoo, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Mienfoo, + .frontAnimId = ANIM_H_VIBRATE, + BACK_PIC(Mienfoo, 56, 40), + .backPicYOffset = 14, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Mienfoo), + ICON(Mienfoo, 1), + .footprint = gMonFootprint_Mienfoo, + LEARNSETS(Mienfoo), + .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_MIENSHAO}), + }, + + [SPECIES_MIENSHAO] = + { + .baseHP = 65, + .baseAttack = 125, + .baseDefense = 60, + .baseSpeed = 105, + .baseSpAttack = 95, + .baseSpDefense = 60, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 179, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_INNER_FOCUS, ABILITY_REGENERATOR, ABILITY_RECKLESS }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Mienshao"), + .cryId = CRY_MIENSHAO, + .natDexNum = NATIONAL_DEX_MIENSHAO, + .categoryName = _("Martial Arts"), + .height = 14, + .weight = 355, + .description = COMPOUND_STRING( + "They use the long fur on their arms as\n" + "a whip to strike their opponents. Its arm\n" + "attacks come with such rapidity that they\n" + "cannot even be seen."), + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, + .trainerOffset = 0, + FRONT_PIC(Mienshao, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Mienshao, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Mienshao, 56, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Mienshao), + ICON(Mienshao, 2), + .footprint = gMonFootprint_Mienshao, + LEARNSETS(Mienshao), + }, +#endif //P_FAMILY_MIENFOO + +#if P_FAMILY_DRUDDIGON + [SPECIES_DRUDDIGON] = + { + .baseHP = 77, + .baseAttack = 120, + .baseDefense = 90, + .baseSpeed = 48, + .baseSpAttack = 60, + .baseSpDefense = 90, + .types = { TYPE_DRAGON, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 170, + .evYield_Attack = 2, + .itemRare = ITEM_DRAGON_FANG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_MONSTER }, + .abilities = { ABILITY_ROUGH_SKIN, ABILITY_SHEER_FORCE, ABILITY_MOLD_BREAKER }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Druddigon"), + .cryId = CRY_DRUDDIGON, + .natDexNum = NATIONAL_DEX_DRUDDIGON, + .categoryName = _("Cave"), + .height = 16, + .weight = 1390, + .description = COMPOUND_STRING( + "It warms its body by absorbing sunlight\n" + "with its wings. When its body temperature\n" + "falls, it can no longer move. It uses its\n" + "sharp claws to catch prey."), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + FRONT_PIC(Druddigon, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Druddigon, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW, + BACK_PIC(Druddigon, 64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Druddigon), + ICON(Druddigon, 0), + .footprint = gMonFootprint_Druddigon, + LEARNSETS(Druddigon), + }, +#endif //P_FAMILY_DRUDDIGON + +#if P_FAMILY_GOLETT + [SPECIES_GOLETT] = + { + .baseHP = 59, + .baseAttack = 74, + .baseDefense = 50, + .baseSpeed = 35, + .baseSpAttack = 35, + .baseSpDefense = 50, + .types = { TYPE_GROUND, TYPE_GHOST }, + .catchRate = 190, + .expYield = 61, + .evYield_Attack = 1, + .itemRare = ITEM_LIGHT_CLAY, + .genderRatio = MON_GENDERLESS, + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_IRON_FIST, ABILITY_KLUTZ, ABILITY_NO_GUARD }, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + .speciesName = _("Golett"), + .cryId = CRY_GOLETT, + .natDexNum = NATIONAL_DEX_GOLETT, + .categoryName = _("Automaton"), + .height = 10, + .weight = 920, + .description = COMPOUND_STRING( + "These Pokémon are thought to have\n" + "been created by the science of an\n" + "ancient and mysterious civilization.\n" + "It's been active for thousands of years."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Golett, 56, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Golett, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Golett, 64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Golett), + ICON(Golett, 0), + .footprint = gMonFootprint_Golett, + LEARNSETS(Golett), + .evolutions = EVOLUTION({EVO_LEVEL, 43, SPECIES_GOLURK}), + }, + + [SPECIES_GOLURK] = + { + .baseHP = 89, + .baseAttack = 124, + .baseDefense = 80, + .baseSpeed = 55, + .baseSpAttack = 55, + .baseSpDefense = 80, + .types = { TYPE_GROUND, TYPE_GHOST }, + .catchRate = 90, + .expYield = 169, + .evYield_Attack = 2, + .itemRare = ITEM_LIGHT_CLAY, + .genderRatio = MON_GENDERLESS, + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_IRON_FIST, ABILITY_KLUTZ, ABILITY_NO_GUARD }, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + .speciesName = _("Golurk"), + .cryId = CRY_GOLURK, + .natDexNum = NATIONAL_DEX_GOLURK, + .categoryName = _("Automaton"), + .height = 28, + .weight = 3300, + .description = COMPOUND_STRING( + "Golurk were created to protect people\n" + "and Pokémon by an ancient civilisation.\n" + "Removing the seal on its chest makes its\n" + "internal energy go out of control."), + .pokemonScale = 275, + .pokemonOffset = 3, + .trainerScale = 300, + .trainerOffset = 0, + FRONT_PIC(Golurk, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Golurk, + .frontAnimId = ANIM_V_SHAKE_TWICE, + BACK_PIC(Golurk, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Golurk), + ICON(Golurk, 0), + .footprint = gMonFootprint_Golurk, + LEARNSETS(Golurk), + }, +#endif //P_FAMILY_GOLETT + +#if P_FAMILY_PAWNIARD + [SPECIES_PAWNIARD] = + { + .baseHP = 45, + .baseAttack = 85, + .baseDefense = 70, + .baseSpeed = 60, + .baseSpAttack = 40, + .baseSpDefense = 40, + .types = { TYPE_DARK, TYPE_STEEL }, + .catchRate = 120, + .expYield = 68, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_DEFIANT, ABILITY_INNER_FOCUS, ABILITY_PRESSURE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Pawniard"), + .cryId = CRY_PAWNIARD, + .natDexNum = NATIONAL_DEX_PAWNIARD, + .categoryName = _("Sharp Blade"), + .height = 5, + .weight = 102, + .description = COMPOUND_STRING( + "Ignoring their injuries, groups attack by\n" + "sinking the blades that cover their bodies\n" + "into their prey. If battling dulls them, it\n" + "sharpens them on stones by the river."), + .pokemonScale = 432, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pawniard, 56, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Pawniard, + .frontAnimId = ANIM_H_VIBRATE, + BACK_PIC(Pawniard, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Pawniard), + ICON(Pawniard, 0), + .footprint = gMonFootprint_Pawniard, + LEARNSETS(Pawniard), + .evolutions = EVOLUTION({EVO_LEVEL, 52, SPECIES_BISHARP}), + }, + + [SPECIES_BISHARP] = + { + .baseHP = 65, + .baseAttack = 125, + .baseDefense = 100, + .baseSpeed = 70, + .baseSpAttack = 60, + .baseSpDefense = 70, + .types = { TYPE_DARK, TYPE_STEEL }, + .catchRate = 45, + .expYield = 172, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_DEFIANT, ABILITY_INNER_FOCUS, ABILITY_PRESSURE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Bisharp"), + .cryId = CRY_BISHARP, + .natDexNum = NATIONAL_DEX_BISHARP, + .categoryName = _("Sword Blade"), + .height = 16, + .weight = 700, + .description = COMPOUND_STRING( + "This pitiless Pokémon commands a group\n" + "of Pawniard to hound prey into immobility.\n" + "It battles to become the boss, but will be\n" + "driven from the group if it loses."), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + FRONT_PIC(Bisharp, 48, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Bisharp, + .frontAnimId = ANIM_H_STRETCH, + BACK_PIC(Bisharp, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(Bisharp), + ICON(Bisharp, 0), + .footprint = gMonFootprint_Bisharp, + LEARNSETS(Bisharp), + .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_KINGAMBIT}), + }, + +#if P_GEN_9_CROSS_EVOS + [SPECIES_KINGAMBIT] = + { + .baseHP = 100, + .baseAttack = 135, + .baseDefense = 120, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 85, + .types = { TYPE_DARK, TYPE_STEEL }, + .catchRate = 25, + .expYield = 275, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_DEFIANT, ABILITY_SUPREME_OVERLORD, ABILITY_PRESSURE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Kingambit"), + .cryId = CRY_KINGAMBIT, + .natDexNum = NATIONAL_DEX_KINGAMBIT, + .categoryName = _("Big Blade"), + .height = 20, + .weight = 1200, + .description = COMPOUND_STRING( + "Though it commands a massive army\n" + "in battle, it's not skilled at\n" + "devising complex strategies. It just uses\n" + "brute strength to keep pushing."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Kingambit, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Kingambit, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Kingambit, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Kingambit), + ICON(Kingambit, 3), + //.footprint = gMonFootprint_Kingambit, + LEARNSETS(Kingambit), + }, +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_PAWNIARD + +#if P_FAMILY_BOUFFALANT + [SPECIES_BOUFFALANT] = + { + .baseHP = 95, + .baseAttack = 110, + .baseDefense = 95, + .baseSpeed = 55, + .baseSpAttack = 40, + .baseSpDefense = 95, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 45, + .expYield = 172, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_RECKLESS, ABILITY_SAP_SIPPER, ABILITY_SOUNDPROOF }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Bouffalant"), + .cryId = CRY_BOUFFALANT, + .natDexNum = NATIONAL_DEX_BOUFFALANT, + .categoryName = _("Bash Buffalo"), + .height = 16, + .weight = 946, + .description = COMPOUND_STRING( + "Their fluffy fur absorbs damage, even\n" + "if they strike foes with a fierce headbutt.\n" + "Their headbutts have enough destructive\n" + "force to derail a train."), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + FRONT_PIC(Bouffalant, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Bouffalant, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Bouffalant, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Bouffalant), + ICON(Bouffalant, 2), + .footprint = gMonFootprint_Bouffalant, + LEARNSETS(Bouffalant), + }, +#endif //P_FAMILY_BOUFFALANT + +#if P_FAMILY_RUFFLET + [SPECIES_RUFFLET] = + { + .baseHP = 70, + .baseAttack = 83, + .baseDefense = 50, + .baseSpeed = 60, + .baseSpAttack = 37, + .baseSpDefense = 50, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 190, + .expYield = 70, + .evYield_Attack = 1, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_SHEER_FORCE, ABILITY_HUSTLE }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Rufflet"), + .cryId = CRY_RUFFLET, + .natDexNum = NATIONAL_DEX_RUFFLET, + .categoryName = _("Eaglet"), + .height = 5, + .weight = 105, + .description = COMPOUND_STRING( + "With its sharp claws, this Pokémon pierces\n" + "its prey, and then it pecks at them.\n" + "Although it also consumes berries, it's a\n" + "carnivore at heart."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Rufflet, 32, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Rufflet, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Rufflet, 48, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Rufflet), + ICON(Rufflet, 2), + .footprint = gMonFootprint_Rufflet, + LEARNSETS(Rufflet), + .evolutions = EVOLUTION({EVO_LEVEL, 54, SPECIES_BRAVIARY}, + {EVO_NONE, 0, SPECIES_BRAVIARY_HISUIAN}), + }, + +#define BRAVIARY_MISC_INFO \ + .catchRate = 60, \ + .expYield = 179, \ + .genderRatio = MON_MALE, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, \ + .speciesName = _("Braviary"), \ + .cryId = CRY_BRAVIARY, \ + .natDexNum = NATIONAL_DEX_BRAVIARY, \ + .footprint = gMonFootprint_Braviary, \ + .formSpeciesIdTable = sBraviaryFormSpeciesIdTable + + [SPECIES_BRAVIARY] = + { + BRAVIARY_MISC_INFO, + .baseHP = 100, + .baseAttack = 123, + .baseDefense = 75, + .baseSpeed = 80, + .baseSpAttack = 57, + .baseSpDefense = 75, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .evYield_Attack = 2, + .abilities = { ABILITY_KEEN_EYE, ABILITY_SHEER_FORCE, ABILITY_DEFIANT }, + .bodyColor = BODY_COLOR_RED, + .categoryName = _("Valiant"), + .height = 15, + .weight = 410, + .description = COMPOUND_STRING( + "For the sake of its friends, this brave\n" + "warrior of the sky will not stop battling,\n" + "even if it is injured. One can carry a car\n" + "while flying."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(Braviary, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Braviary, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 6, + BACK_PIC(Braviary, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Braviary), + ICON(Braviary, 0), + LEARNSETS(Braviary), + }, + +#if P_HISUIAN_FORMS + [SPECIES_BRAVIARY_HISUIAN] = + { + BRAVIARY_MISC_INFO, + .baseHP = 110, + .baseAttack = 83, + .baseDefense = 70, + .baseSpeed = 65, + .baseSpAttack = 112, + .baseSpDefense = 70, + .types = { TYPE_PSYCHIC, TYPE_FLYING }, + .evYield_SpAttack = 2, + .abilities = { ABILITY_KEEN_EYE, ABILITY_SHEER_FORCE, ABILITY_TINTED_LENS }, + .bodyColor = BODY_COLOR_WHITE, + .categoryName = _("Battle Cry"), + .height = 17, + .weight = 434, + .description = COMPOUND_STRING( + "Screaming a bloodcurdling battle\n" + "cry, this huge and ferocious bird\n" + "Pokémon goes out on the hunt."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(BraviaryHisuian, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_BraviaryHisuian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 3, + BACK_PIC(BraviaryHisuian, 64, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(BraviaryHisuian), + ICON(BraviaryHisuian, 2), + LEARNSETS(BraviaryHisuian), + .isHisuianForm = TRUE, + }, +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_RUFFLET + +#if P_FAMILY_VULLABY + [SPECIES_VULLABY] = + { + .baseHP = 70, + .baseAttack = 55, + .baseDefense = 75, + .baseSpeed = 60, + .baseSpAttack = 45, + .baseSpDefense = 65, + .types = { TYPE_DARK, TYPE_FLYING }, + .catchRate = 190, + .expYield = 74, + .evYield_Defense = 1, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_BIG_PECKS, ABILITY_OVERCOAT, ABILITY_WEAK_ARMOR }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Vullaby"), + .cryId = CRY_VULLABY, + .natDexNum = NATIONAL_DEX_VULLABY, + .categoryName = _("Diapered"), + .height = 5, + .weight = 90, + .description = COMPOUND_STRING( + "It can't fly yet and must wait until its\n" + "wings have developed more. They guard\n" + "their posteriors with bones that were\n" + "gathered by Mandibuzz."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Vullaby, 56, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Vullaby, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Vullaby, 64, 48), + .backPicYOffset = 14, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Vullaby), + ICON(Vullaby, 0), + .footprint = gMonFootprint_Vullaby, + LEARNSETS(Vullaby), + .evolutions = EVOLUTION({EVO_LEVEL, 54, SPECIES_MANDIBUZZ}), + }, + + [SPECIES_MANDIBUZZ] = + { + .baseHP = 110, + .baseAttack = 65, + .baseDefense = 105, + .baseSpeed = 80, + .baseSpAttack = 55, + .baseSpDefense = 95, + .types = { TYPE_DARK, TYPE_FLYING }, + .catchRate = 60, + .expYield = 179, + .evYield_SpAttack = 2, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_BIG_PECKS, ABILITY_OVERCOAT, ABILITY_WEAK_ARMOR }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Mandibuzz"), + .cryId = CRY_MANDIBUZZ, + .natDexNum = NATIONAL_DEX_MANDIBUZZ, + .categoryName = _("Bone Vulture"), + .height = 12, + .weight = 395, + .description = COMPOUND_STRING( + "They adorn themselves beautifully with\n" + "bones. This is supposedly an effort to\n" + "attract males, but no male Mandibuzz\n" + "have ever been found."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Mandibuzz, 48, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Mandibuzz, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Mandibuzz, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Mandibuzz), + ICON(Mandibuzz, 1), + .footprint = gMonFootprint_Mandibuzz, + LEARNSETS(Mandibuzz), + }, +#endif //P_FAMILY_VULLABY + +#if P_FAMILY_HEATMOR + [SPECIES_HEATMOR] = + { + .baseHP = 85, + .baseAttack = 97, + .baseDefense = 66, + .baseSpeed = 65, + .baseSpAttack = 105, + .baseSpDefense = 66, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 90, + .expYield = 169, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_GLUTTONY, ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Heatmor"), + .cryId = CRY_HEATMOR, + .natDexNum = NATIONAL_DEX_HEATMOR, + .categoryName = _("Anteater"), + .height = 14, + .weight = 580, + .description = COMPOUND_STRING( + "It draws in air through its tail, transforms\n" + "it into fire, and uses it like a tongue.\n" + "They burn through Durant's steel bodies\n" + "and consume their insides."), + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, + .trainerOffset = 0, + FRONT_PIC(Heatmor, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Heatmor, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Heatmor, 64, 24), + .backPicYOffset = 21, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Heatmor), + ICON(Heatmor, 2), + .footprint = gMonFootprint_Heatmor, + LEARNSETS(Heatmor), + }, +#endif //P_FAMILY_HEATMOR + +#if P_FAMILY_DURANT + [SPECIES_DURANT] = + { + .baseHP = 58, + .baseAttack = 109, + .baseDefense = 112, + .baseSpeed = 109, + .baseSpAttack = 48, + .baseSpDefense = 48, + .types = { TYPE_BUG, TYPE_STEEL }, + .catchRate = 90, + .expYield = 169, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_HUSTLE, ABILITY_TRUANT }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Durant"), + .cryId = CRY_DURANT, + .natDexNum = NATIONAL_DEX_DURANT, + .categoryName = _("Iron Ant"), + .height = 3, + .weight = 330, + .description = COMPOUND_STRING( + "Durant dig nests in mountains.\n" + "Individuals each play different roles in\n" + "driving Heatmor, their natural predator,\n" + "away from their colony."), + .pokemonScale = 530, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Durant, 48, 32), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_Durant, + .frontAnimId = ANIM_RAPID_H_HOPS, + BACK_PIC(Durant, 64, 32), + .backPicYOffset = 17, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Durant), + ICON(Durant, 0), + .footprint = gMonFootprint_Durant, + LEARNSETS(Durant), + }, +#endif //P_FAMILY_DURANT + +#if P_FAMILY_DEINO + [SPECIES_DEINO] = + { + .baseHP = 52, + .baseAttack = 65, + .baseDefense = 50, + .baseSpeed = 38, + .baseSpAttack = 45, + .baseSpDefense = 50, + .types = { TYPE_DARK, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 60, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_HUSTLE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Deino"), + .cryId = CRY_DEINO, + .natDexNum = NATIONAL_DEX_DEINO, + .categoryName = _("Irate"), + .height = 8, + .weight = 173, + .description = COMPOUND_STRING( + "Lacking sight, it's unaware of its\n" + "surroundings, so it bumps into things and\n" + "eats anything that moves. Approaching\n" + "it carelessly is dangerous."), + .pokemonScale = 366, + .pokemonOffset = 12, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Deino, 40, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Deino, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Deino, 48, 48), + .backPicYOffset = 14, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Deino), + ICON(Deino, 2), + .footprint = gMonFootprint_Deino, + LEARNSETS(Deino), + .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_ZWEILOUS}), + }, + + [SPECIES_ZWEILOUS] = + { + .baseHP = 72, + .baseAttack = 85, + .baseDefense = 70, + .baseSpeed = 58, + .baseSpAttack = 65, + .baseSpDefense = 70, + .types = { TYPE_DARK, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 147, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_HUSTLE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Zweilous"), + .cryId = CRY_ZWEILOUS, + .natDexNum = NATIONAL_DEX_ZWEILOUS, + .categoryName = _("Hostile"), + .height = 14, + .weight = 500, + .description = COMPOUND_STRING( + "After it has eaten up all the food in its\n" + "territory, it moves on to another area.\n" + "Whichever head eats more than the other\n" + "gets to be the leader."), + .pokemonScale = 265, + .pokemonOffset = 3, + .trainerScale = 262, + .trainerOffset = 0, + FRONT_PIC(Zweilous, 64, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Zweilous, + .frontAnimId = ANIM_H_STRETCH, + BACK_PIC(Zweilous, 64, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Zweilous), + ICON(Zweilous, 2), + .footprint = gMonFootprint_Zweilous, + LEARNSETS(Zweilous), + .evolutions = EVOLUTION({EVO_LEVEL, 64, SPECIES_HYDREIGON}), + }, + + [SPECIES_HYDREIGON] = + { + .baseHP = 92, + .baseAttack = 105, + .baseDefense = 90, + .baseSpeed = 98, + .baseSpAttack = 125, + .baseSpDefense = 90, + .types = { TYPE_DARK, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 270, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Hydreigon"), + .cryId = CRY_HYDREIGON, + .natDexNum = NATIONAL_DEX_HYDREIGON, + .categoryName = _("Brutal"), + .height = 18, + .weight = 1600, + .description = COMPOUND_STRING( + "This brutal Pokémon travels the skies on\n" + "its six wings. The heads on their arms do\n" + "not have brains. They use all three heads\n" + "to consume and destroy everything."), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + FRONT_PIC(Hydreigon, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Hydreigon, + .frontAnimId = ANIM_RISING_WOBBLE, + .enemyMonElevation = 3, + BACK_PIC(Hydreigon, 64, 56), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(Hydreigon), + ICON(Hydreigon, 2), + .footprint = gMonFootprint_Hydreigon, + LEARNSETS(Hydreigon), + }, +#endif //P_FAMILY_DEINO + +#if P_FAMILY_LARVESTA + [SPECIES_LARVESTA] = + { + .baseHP = 55, + .baseAttack = 85, + .baseDefense = 55, + .baseSpeed = 60, + .baseSpAttack = 50, + .baseSpDefense = 55, + .types = { TYPE_BUG, TYPE_FIRE }, + .catchRate = 45, + .expYield = 72, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_SWARM }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Larvesta"), + .cryId = CRY_LARVESTA, + .natDexNum = NATIONAL_DEX_LARVESTA, + .categoryName = _("Torch"), + .height = 11, + .weight = 288, + .description = COMPOUND_STRING( + "This Pokémon was believed to have\n" + "been born from the sun. It spews fire from\n" + "its horns and encases itself in a cocoon\n" + "of fire when it evolves."), + .pokemonScale = 320, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Larvesta, 40, 48), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Larvesta, + .frontAnimId = ANIM_GLOW_ORANGE, + BACK_PIC(Larvesta, 64, 48), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Larvesta), + ICON(Larvesta, 0), + .footprint = gMonFootprint_Larvesta, + LEARNSETS(Larvesta), + .evolutions = EVOLUTION({EVO_LEVEL, 59, SPECIES_VOLCARONA}), + }, + + [SPECIES_VOLCARONA] = + { + .baseHP = 85, + .baseAttack = 60, + .baseDefense = 65, + .baseSpeed = 100, + .baseSpAttack = 135, + .baseSpDefense = 105, + .types = { TYPE_BUG, TYPE_FIRE }, + .catchRate = 15, + .expYield = 248, + .evYield_SpAttack = 3, + .itemCommon = ITEM_SILVER_POWDER, + .itemRare = ITEM_SILVER_POWDER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_SWARM }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Volcarona"), + .cryId = CRY_VOLCARONA, + .natDexNum = NATIONAL_DEX_VOLCARONA, + .categoryName = _("Sun"), + .height = 16, + .weight = 460, + .description = COMPOUND_STRING( + "When volcanic ash darkened the\n" + "atmosphere, it appeared and saved Pokémon\n" + "from freezing, Volcarona's fire provided a\n" + "replacement for the sun."), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + FRONT_PIC(Volcarona, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Volcarona, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 6, + BACK_PIC(Volcarona, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Volcarona), + ICON(Volcarona, 0), + .footprint = gMonFootprint_Volcarona, + LEARNSETS(Volcarona), + }, +#endif //P_FAMILY_LARVESTA + +#if P_FAMILY_COBALION + [SPECIES_COBALION] = + { + .baseHP = 91, + .baseAttack = 90, + .baseDefense = 129, + .baseSpeed = 108, + .baseSpAttack = 90, + .baseSpDefense = 72, + .types = { TYPE_STEEL, TYPE_FIGHTING }, + .catchRate = 3, + .expYield = 261, + .evYield_Defense = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .isLegendary = TRUE, + .speciesName = _("Cobalion"), + .cryId = CRY_COBALION, + .natDexNum = NATIONAL_DEX_COBALION, + .categoryName = _("Iron Will"), + .height = 21, + .weight = 2500, + .description = COMPOUND_STRING( + "It has a body and heart of steel. This\n" + "legendary Pokémon battled against humans\n" + "to protect Pokémon. Its personality\n" + "is calm and composed."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, + FRONT_PIC(Cobalion, 48, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Cobalion, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Cobalion, 48, 64), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Cobalion), + ICON(Cobalion, 0), + .footprint = gMonFootprint_Cobalion, + LEARNSETS(Cobalion), + }, +#endif //P_FAMILY_COBALION + +#if P_FAMILY_TERRAKION + [SPECIES_TERRAKION] = + { + .baseHP = 91, + .baseAttack = 129, + .baseDefense = 90, + .baseSpeed = 108, + .baseSpAttack = 72, + .baseSpDefense = 90, + .types = { TYPE_ROCK, TYPE_FIGHTING }, + .catchRate = 3, + .expYield = 261, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .isLegendary = TRUE, + .speciesName = _("Terrakion"), + .cryId = CRY_TERRAKION, + .natDexNum = NATIONAL_DEX_TERRAKION, + .categoryName = _("Cavern"), + .height = 19, + .weight = 2600, + .description = COMPOUND_STRING( + "Spoken of in legend, this Pokémon used\n" + "its phenomenal power to destroy a castle\n" + "in its effort to protect Pokémon that had\n" + "lost their homes in a war among humans."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 336, + .trainerOffset = 4, + FRONT_PIC(Terrakion, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Terrakion, + .frontAnimId = ANIM_V_SHAKE_TWICE, + BACK_PIC(Terrakion, 64, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Terrakion), + ICON(Terrakion, 2), + .footprint = gMonFootprint_Terrakion, + LEARNSETS(Terrakion), + }, +#endif //P_FAMILY_TERRAKION + +#if P_FAMILY_VIRIZION + [SPECIES_VIRIZION] = + { + .baseHP = 91, + .baseAttack = 90, + .baseDefense = 72, + .baseSpeed = 108, + .baseSpAttack = 90, + .baseSpDefense = 129, + .types = { TYPE_GRASS, TYPE_FIGHTING }, + .catchRate = 3, + .expYield = 261, + .evYield_SpDefense = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .isLegendary = TRUE, + .speciesName = _("Virizion"), + .cryId = CRY_VIRIZION, + .natDexNum = NATIONAL_DEX_VIRIZION, + .categoryName = _("Grassland"), + .height = 20, + .weight = 2000, + .description = COMPOUND_STRING( + "Its head sprouts horns as sharp as blades.\n" + "Legends say this Pokémon used\n" + "whirlwind-like movements to confound\n" + "and swiftly cut its opponents."), + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 344, + .trainerOffset = 4, + FRONT_PIC(Virizion, 48, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Virizion, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Virizion, 64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Virizion), + ICON(Virizion, 1), + .footprint = gMonFootprint_Virizion, + LEARNSETS(Virizion), + }, +#endif //P_FAMILY_VIRIZION + +#if P_FAMILY_TORNADUS +#define TORNADUS_MISC_INFO \ + .types = { TYPE_FLYING, TYPE_FLYING }, \ + .catchRate = 3, \ + .expYield = 261, \ + .evYield_Attack = 3, \ + .genderRatio = MON_MALE, \ + .eggCycles = 120, \ + .friendship = 90, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .isLegendary = TRUE, \ + .speciesName = _("Tornadus"), \ + .natDexNum = NATIONAL_DEX_TORNADUS, \ + .categoryName = _("Cyclone"), \ + .weight = 630, \ + .footprint = gMonFootprint_Tornadus, \ + LEARNSETS(Tornadus), \ + .formSpeciesIdTable = sTornadusFormSpeciesIdTable, \ + .formChangeTable = sTornadusFormChangeTable + + [SPECIES_TORNADUS_INCARNATE] = + { + TORNADUS_MISC_INFO, + .baseHP = 79, + .baseAttack = 115, + .baseDefense = 70, + .baseSpeed = 111, + .baseSpAttack = 125, + .baseSpDefense = 80, + .abilities = { ABILITY_PRANKSTER, ABILITY_NONE, ABILITY_DEFIANT }, + .cryId = CRY_TORNADUS_INCARNATE, + .height = 15, + .description = COMPOUND_STRING( + "Tornadus expels massive energy from\n" + "its tail, causing severe storms.\n" + "Its power can blow entire houses away.\n" + "It zooms through the sky at 200 mph."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(TornadusIncarnate, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_TornadusIncarnate, + .frontAnimId = ANIM_FIGURE_8, + .enemyMonElevation = 7, + BACK_PIC(TornadusIncarnate, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(TornadusIncarnate), + ICON(TornadusIncarnate, 1), + }, + + [SPECIES_TORNADUS_THERIAN] = + { + TORNADUS_MISC_INFO, + .baseHP = 79, + .baseAttack = 100, + .baseDefense = 80, + .baseSpeed = 121, + .baseSpAttack = 110, + .baseSpDefense = 90, + .abilities = { ABILITY_REGENERATOR, ABILITY_NONE, ABILITY_REGENERATOR }, + .cryId = CRY_TORNADUS_THERIAN, + .height = 14, + .description = COMPOUND_STRING( + "An example of what is known as a\n" + "“form change”. Tornadus has been\n" + "sighted crossing the ocean while in this\n" + "form."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(TornadusTherian, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_TornadusTherian, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(TornadusTherian, 56, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(TornadusTherian), + ICON(TornadusTherian, 1), + }, +#endif //P_FAMILY_TORNADUS + +#if P_FAMILY_THUNDURUS +#define THUNDURUS_MISC_INFO \ + .types = { TYPE_ELECTRIC, TYPE_FLYING }, \ + .catchRate = 3, \ + .expYield = 261, \ + .genderRatio = MON_MALE, \ + .eggCycles = 120, \ + .friendship = 90, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .isLegendary = TRUE, \ + .speciesName = _("Thundurus"), \ + .natDexNum = NATIONAL_DEX_THUNDURUS, \ + .categoryName = _("Bolt Strike"), \ + .weight = 610, \ + .footprint = gMonFootprint_Thundurus, \ + LEARNSETS(Thundurus), \ + .formSpeciesIdTable = sThundurusFormSpeciesIdTable, \ + .formChangeTable = sThundurusFormChangeTable + + [SPECIES_THUNDURUS_INCARNATE] = + { + THUNDURUS_MISC_INFO, + .baseHP = 79, + .baseAttack = 115, + .baseDefense = 70, + .baseSpeed = 111, + .baseSpAttack = 125, + .baseSpDefense = 80, + .evYield_Attack = 3, + .abilities = { ABILITY_PRANKSTER, ABILITY_NONE, ABILITY_DEFIANT }, + .cryId = CRY_THUNDURUS_INCARNATE, + .height = 15, + .description = COMPOUND_STRING( + "The spikes on its tail discharge immense\n" + "bolts of lightning. Countless charred\n" + "remains mar the landscape of places\n" + "through which Thundurus has passed."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(ThundurusIncarnate, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_ThundurusIncarnate, + .frontAnimId = ANIM_FIGURE_8, + .enemyMonElevation = 7, + BACK_PIC(ThundurusIncarnate, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(ThundurusIncarnate), + ICON(ThundurusIncarnate, 0), + }, + + [SPECIES_THUNDURUS_THERIAN] = + { + THUNDURUS_MISC_INFO, + .baseHP = 79, + .baseAttack = 105, + .baseDefense = 70, + .baseSpeed = 101, + .baseSpAttack = 145, + .baseSpDefense = 80, + .evYield_SpAttack = 3, + .abilities = { ABILITY_VOLT_ABSORB, ABILITY_NONE, ABILITY_VOLT_ABSORB }, + .cryId = CRY_THUNDURUS_THERIAN, + .height = 30, + .description = COMPOUND_STRING( + "It pulverizes foes into\n" + "nothingness with showers of devastatingly\n" + "powerful lightning bolts launched from\n" + "the string of orbs on its tail."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(ThundurusTherian, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_ThundurusTherian, + .frontAnimId = ANIM_RISING_WOBBLE, + .enemyMonElevation = 7, + BACK_PIC(ThundurusTherian, 64, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(ThundurusTherian), + ICON(ThundurusTherian, 0), + }, +#endif //P_FAMILY_THUNDURUS + +#if P_FAMILY_RESHIRAM + [SPECIES_RESHIRAM] = + { + .baseHP = 100, + .baseAttack = 120, + .baseDefense = 100, + .baseSpeed = 90, + .baseSpAttack = 150, + .baseSpDefense = 120, + .types = { TYPE_DRAGON, TYPE_FIRE }, + .catchRate = 3, + .expYield = 306, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_TURBOBLAZE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_WHITE, + .isLegendary = TRUE, + .speciesName = _("Reshiram"), + .cryId = CRY_RESHIRAM, + .natDexNum = NATIONAL_DEX_RESHIRAM, + .categoryName = _("Vast White"), + .height = 32, + .weight = 3300, + .description = COMPOUND_STRING( + "This Pokémon appears in legends. It\n" + "sends flames into the air from its tail,\n" + "burning up everything around it. It helps\n" + "those who want to build a world of truth."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 445, + .trainerOffset = 8, + FRONT_PIC(Reshiram, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Reshiram, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Reshiram, 64, 64), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Reshiram), + ICON(Reshiram, 0), + .footprint = gMonFootprint_Reshiram, + LEARNSETS(Reshiram), + }, +#endif //P_FAMILY_RESHIRAM + +#if P_FAMILY_ZEKROM + [SPECIES_ZEKROM] = + { + .baseHP = 100, + .baseAttack = 150, + .baseDefense = 120, + .baseSpeed = 90, + .baseSpAttack = 120, + .baseSpDefense = 100, + .types = { TYPE_DRAGON, TYPE_ELECTRIC }, + .catchRate = 3, + .expYield = 306, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_TERAVOLT, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLACK, + .isLegendary = TRUE, + .speciesName = _("Zekrom"), + .cryId = CRY_ZEKROM, + .natDexNum = NATIONAL_DEX_ZEKROM, + .categoryName = _("Deep Black"), + .height = 29, + .weight = 3450, + .description = COMPOUND_STRING( + "This legendary Pokémon can scorch the\n" + "world with lightning. It has a generator\n" + "that creates electricity in its tail. It\n" + "assists those with strong ideals."), + .pokemonScale = 275, + .pokemonOffset = 2, + .trainerScale = 412, + .trainerOffset = 10, + FRONT_PIC(Zekrom, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Zekrom, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Zekrom, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(Zekrom), + ICON(Zekrom, 2), + .footprint = gMonFootprint_Zekrom, + LEARNSETS(Zekrom), + }, +#endif //P_FAMILY_ZEKROM + +#if P_FAMILY_LANDORUS +#define LANDORUS_MISC_INFO \ + .types = { TYPE_GROUND, TYPE_FLYING }, \ + .catchRate = 3, \ + .expYield = 270, \ + .genderRatio = MON_MALE, \ + .eggCycles = 120, \ + .friendship = 90, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .bodyColor = BODY_COLOR_BROWN, \ + .isLegendary = TRUE, \ + .speciesName = _("Landorus"), \ + .natDexNum = NATIONAL_DEX_LANDORUS, \ + .categoryName = _("Abundance"), \ + .weight = 680, \ + .footprint = gMonFootprint_Landorus, \ + LEARNSETS(Landorus), \ + .formSpeciesIdTable = sLandorusFormSpeciesIdTable, \ + .formChangeTable = sLandorusFormChangeTable + + [SPECIES_LANDORUS_INCARNATE] = + { + LANDORUS_MISC_INFO, + .baseHP = 89, + .baseAttack = 125, + .baseDefense = 90, + .baseSpeed = 101, + .baseSpAttack = 115, + .baseSpDefense = 80, + .evYield_SpAttack = 3, + .abilities = { ABILITY_SAND_FORCE, ABILITY_NONE, ABILITY_SHEER_FORCE }, + .cryId = CRY_LANDORUS_INCARNATE, + .height = 15, + .description = COMPOUND_STRING( + "The energy that comes pouring from its tail\n" + "increases the nutrition in the soil, making\n" + "crops grow to great size. It has been\n" + "hailed as “The Guardian of the Fields.”"), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(LandorusIncarnate, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_LandorusIncarnate, + .frontAnimId = ANIM_FIGURE_8, + .enemyMonElevation = 7, + BACK_PIC(LandorusIncarnate, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(LandorusIncarnate), + ICON(LandorusIncarnate, 0), + }, + + [SPECIES_LANDORUS_THERIAN] = + { + LANDORUS_MISC_INFO, + .baseHP = 89, + .baseAttack = 145, + .baseDefense = 90, + .baseSpeed = 91, + .baseSpAttack = 105, + .baseSpDefense = 80, + .evYield_Attack = 3, + .abilities = { ABILITY_INTIMIDATE, ABILITY_NONE }, + .cryId = CRY_LANDORUS_THERIAN, + .height = 13, + .description = COMPOUND_STRING( + "Landorus soars through the sky in\n" + "this form, bestowing plentiful\n" + "harvests upon the land and earning the\n" + "people's reverence."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(LandorusTherian, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_LandorusTherian, + .frontAnimId = ANIM_CIRCULAR_VIBRATE, + BACK_PIC(LandorusTherian, 64, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(LandorusTherian), + ICON(LandorusTherian, 0), + }, +#endif //P_FAMILY_LANDORUS + +#if P_FAMILY_KYUREM +#define KYUREM_MISC_INFO \ + .types = { TYPE_DRAGON, TYPE_ICE }, \ + .catchRate = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .bodyColor = BODY_COLOR_GRAY, \ + .noFlip = TRUE, \ + .speciesName = _("Kyurem"), \ + .natDexNum = NATIONAL_DEX_KYUREM, \ + .categoryName = _("Boundary"), \ + .weight = 3250, \ + .footprint = gMonFootprint_Kyurem, \ + .formSpeciesIdTable = sKyuremFormSpeciesIdTable, \ + .isLegendary = TRUE + + [SPECIES_KYUREM] = + { + KYUREM_MISC_INFO, + .baseHP = 125, + .baseAttack = 130, + .baseDefense = 90, + .baseSpeed = 95, + .baseSpAttack = 130, + .baseSpDefense = 90, + .expYield = 297, + .evYield_HP = 1, + .evYield_Attack = 1, + .evYield_SpAttack = 1, + .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, + .cryId = CRY_KYUREM, + .height = 30, + .description = COMPOUND_STRING( + "This legendary ice Pokémon waits for a\n" + "hero to fill in the missing parts of its\n" + "body with truth or ideals. Its body became\n" + "frozen when its energy leaked out."), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 356, + .trainerOffset = 0, + FRONT_PIC(Kyurem, 64, 64), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Kyurem, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Kyurem, 64, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Kyurem), + ICON(Kyurem, 0), + LEARNSETS(Kyurem), + }, + +#if P_FUSION_FORMS + [SPECIES_KYUREM_WHITE] = + { + KYUREM_MISC_INFO, + .baseHP = 125, + .baseAttack = 120, + .baseDefense = 90, + .baseSpeed = 95, + .baseSpAttack = 170, + .baseSpDefense = 100, + .expYield = 315, + .evYield_SpAttack = 3, + .abilities = { ABILITY_TURBOBLAZE, ABILITY_NONE }, + .cryId = CRY_KYUREM_WHITE, + .height = 36, + .description = COMPOUND_STRING( + "The sameness of Reshiram's and\n" + "Kyurem's genes allowed Kyurem to\n" + "absorb Reshiram. Kyurem can now use the\n" + "power of both fire and ice."), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 356, + .trainerOffset = 0, + FRONT_PIC(KyuremWhite, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_KyuremWhite, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(KyuremWhite, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(KyuremWhite), + ICON(KyuremWhite, 0), + .levelUpLearnset = sKyuremWhiteLevelUpLearnset, + .teachableLearnset = sKyuremTeachableLearnset, + .cannotBeTraded = TRUE, + }, + + [SPECIES_KYUREM_BLACK] = + { + KYUREM_MISC_INFO, + .baseHP = 125, + .baseAttack = 170, + .baseDefense = 100, + .baseSpeed = 95, + .baseSpAttack = 120, + .baseSpDefense = 90, + .expYield = 315, + .evYield_Attack = 3, + .abilities = { ABILITY_TERAVOLT, ABILITY_NONE }, + .cryId = CRY_KYUREM_BLACK, + .height = 33, + .description = COMPOUND_STRING( + "The sameness of Zekrom's and\n" + "Kyurem's genes allowed Kyurem to absorb\n" + "Zekrom. Kyurem can now use the\n" + "power of both electricity and ice."), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 356, + .trainerOffset = 0, + FRONT_PIC(KyuremBlack, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_KyuremBlack, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(KyuremBlack, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + PALETTES(KyuremBlack), + ICON(KyuremBlack, 0), + .levelUpLearnset = sKyuremBlackLevelUpLearnset, + .teachableLearnset = sKyuremTeachableLearnset, + .cannotBeTraded = TRUE, + }, +#endif //P_FUSION_FORMS +#endif //P_FAMILY_KYUREM + +#if P_FAMILY_KELDEO +#define KELDEO_MISC_INFO \ + .baseHP = 91, \ + .baseAttack = 72, \ + .baseDefense = 90, \ + .baseSpeed = 108, \ + .baseSpAttack = 129, \ + .baseSpDefense = 90, \ + .types = { TYPE_WATER, TYPE_FIGHTING }, \ + .catchRate = 3, \ + .expYield = 261, \ + .evYield_SpAttack = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 80, \ + .friendship = 35, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ABILITY_JUSTIFIED, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_YELLOW, \ + .isMythical = TRUE, \ + .speciesName = _("Keldeo"), \ + .cryId = CRY_KELDEO, \ + .natDexNum = NATIONAL_DEX_KELDEO, \ + .categoryName = _("Colt"), \ + .height = 14, \ + .weight = 485, \ + .pokemonScale = 265, \ + .pokemonOffset = 2, \ + .trainerScale = 262, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Keldeo, \ + LEARNSETS(Keldeo), \ + .formSpeciesIdTable = sKeldeoFormSpeciesIdTable, \ + .formChangeTable = sKeldeoFormChangeTable + + [SPECIES_KELDEO_ORDINARY] = + { + KELDEO_MISC_INFO, + .description = COMPOUND_STRING( + "When it is resolute, its body fills with\n" + "power and it becomes swifter. It crosses\n" + "the world, running over the surfaces of\n" + "oceans and rivers."), + FRONT_PIC(KeldeoOrdinary, 56, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_KeldeoOrdinary, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(KeldeoOrdinary, 56, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(KeldeoOrdinary), + ICON(KeldeoOrdinary, 0), + }, + + [SPECIES_KELDEO_RESOLUTE] = + { + KELDEO_MISC_INFO, + .noFlip = TRUE, + .description = COMPOUND_STRING( + "The power that lay hidden in its\n" + "body now covers its horn, turning it\n" + "into a sword that can slice through\n" + "anything."), + FRONT_PIC(KeldeoResolute, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_KeldeoResolute, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(KeldeoResolute, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(KeldeoResolute), + ICON(KeldeoResolute, 0), + }, +#endif //P_FAMILY_KELDEO + +#if P_FAMILY_MELOETTA +#define MELOETTA_MISC_INFO \ + .catchRate = 3, \ + .expYield = 270, \ + .evYield_Speed = 1, \ + .itemCommon = ITEM_STAR_PIECE, \ + .itemRare = ITEM_STAR_PIECE, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 100, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ABILITY_SERENE_GRACE, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_WHITE, \ + .noFlip = TRUE, \ + .isMythical = TRUE, \ + .speciesName = _("Meloetta"), \ + .cryId = CRY_MELOETTA, \ + .natDexNum = NATIONAL_DEX_MELOETTA, \ + .categoryName = _("Melody"), \ + .height = 6, \ + .weight = 65, \ + .pokemonScale = 422, \ + .pokemonOffset = 12, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Meloetta, \ + LEARNSETS(Meloetta), \ + .formSpeciesIdTable = sMeloettaFormSpeciesIdTable, \ + .formChangeTable = sMeloettaFormChangeTable + + [SPECIES_MELOETTA_ARIA] = + { + MELOETTA_MISC_INFO, + .baseHP = 100, + .baseAttack = 77, + .baseDefense = 77, + .baseSpeed = 90, + .baseSpAttack = 128, + .baseSpDefense = 128, + .types = { TYPE_NORMAL, TYPE_PSYCHIC }, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .description = COMPOUND_STRING( + "The melodies sung by Meloetta have the\n" + "power to make Pokémon that hear them\n" + "happy or sad. Many famous songs have been\n" + "inspired by the tunes that Meloetta plays."), + FRONT_PIC(MeloettaAria, 32, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_MeloettaAria, + .frontAnimId = ANIM_GROW_VIBRATE, + .enemyMonElevation = 8, + BACK_PIC(MeloettaAria, 48, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(MeloettaAria), + ICON(MeloettaAria, 4), + }, + + [SPECIES_MELOETTA_PIROUETTE] = + { + MELOETTA_MISC_INFO, + .baseHP = 100, + .baseAttack = 128, + .baseDefense = 90, + .baseSpeed = 128, + .baseSpAttack = 77, + .baseSpDefense = 77, + .types = { TYPE_NORMAL, TYPE_FIGHTING }, + .evYield_Attack = 1, + .evYield_Defense = 1, + .description = COMPOUND_STRING( + ""), + FRONT_PIC(MeloettaPirouette, 40, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_MeloettaPirouette, + .frontAnimId = ANIM_H_SLIDE_SLOW, + .enemyMonElevation = 5, + BACK_PIC(MeloettaPirouette, 56, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(MeloettaPirouette), + ICON(MeloettaPirouette, 0), + }, +#endif //P_FAMILY_MELOETTA + +#if P_FAMILY_GENESECT +#define GENESECT_SPECIES_INFO(form) \ + { \ + .baseHP = 71, \ + .baseAttack = 120, \ + .baseDefense = 95, \ + .baseSpeed = 99, \ + .baseSpAttack = 120, \ + .baseSpDefense = 95, \ + .types = { TYPE_BUG, TYPE_STEEL }, \ + .catchRate = 3, \ + .expYield = 270, \ + .evYield_Attack = 1, \ + .evYield_Speed = 1, \ + .evYield_SpAttack = 1, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ABILITY_DOWNLOAD, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .speciesName = _("Genesect"), \ + .cryId = CRY_GENESECT, \ + .natDexNum = NATIONAL_DEX_GENESECT, \ + .categoryName = _("Paleozoic"), \ + .height = 15, \ + .weight = 825, \ + .description = gGenesectPokedexText, \ + .pokemonScale = 268, \ + .pokemonOffset = 2, \ + .trainerScale = 271, \ + .trainerOffset = 0, \ + FRONT_PIC(Genesect, 56, 64), \ + .frontPicYOffset = 0, \ + .frontAnimFrames = sAnims_Genesect, \ + .frontAnimId = ANIM_H_VIBRATE, \ + BACK_PIC(Genesect, 64, 48), \ + .backPicYOffset = 8, \ + .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, \ + PALETTES(form), \ + ICON(Genesect, 2), \ + .footprint = gMonFootprint_Genesect, \ + LEARNSETS(Genesect), \ + .formSpeciesIdTable = sGenesectFormSpeciesIdTable, \ + .formChangeTable = sGenesectFormChangeTable, \ + .isMythical = TRUE, \ + } + + [SPECIES_GENESECT] = GENESECT_SPECIES_INFO(Genesect), + [SPECIES_GENESECT_DOUSE_DRIVE] = GENESECT_SPECIES_INFO(GenesectDouseDrive), + [SPECIES_GENESECT_SHOCK_DRIVE] = GENESECT_SPECIES_INFO(GenesectShockDrive), + [SPECIES_GENESECT_BURN_DRIVE] = GENESECT_SPECIES_INFO(GenesectBurnDrive), + [SPECIES_GENESECT_CHILL_DRIVE] = GENESECT_SPECIES_INFO(GenesectChillDrive), +#endif //P_FAMILY_GENESECT + +#ifdef __INTELLISENSE__ +}; +#endif \ No newline at end of file diff --git a/src/data/pokemon/species_info/gen_6.h b/src/data/pokemon/species_info/gen_6.h new file mode 100644 index 0000000000..66c78f521e --- /dev/null +++ b/src/data/pokemon/species_info/gen_6.h @@ -0,0 +1,4496 @@ +#ifdef __INTELLISENSE__ +const struct SpeciesInfo gSpeciesInfoGen6[] = +{ +#endif + +#if P_FAMILY_CHESPIN + [SPECIES_CHESPIN] = + { + .baseHP = 56, + .baseAttack = 61, + .baseDefense = 65, + .baseSpeed = 38, + .baseSpAttack = 48, + .baseSpDefense = 45, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 63, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_BULLETPROOF }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Chespin"), + .cryId = CRY_CHESPIN, + .natDexNum = NATIONAL_DEX_CHESPIN, + .categoryName = _("Spiny Nut"), + .height = 4, + .weight = 90, + .description = COMPOUND_STRING( + "The quills on its head are usually soft.\n" + "When it flexes them, the points become\n" + "so hard and sharp that they can pierce\n" + "rock without any effort."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Chespin, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Chespin, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(Chespin, 56, 64), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Chespin), + ICON(Chespin, 1), + .footprint = gMonFootprint_Chespin, + LEARNSETS(Chespin), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_QUILLADIN}), + }, + + [SPECIES_QUILLADIN] = + { + .baseHP = 61, + .baseAttack = 78, + .baseDefense = 95, + .baseSpeed = 57, + .baseSpAttack = 56, + .baseSpDefense = 58, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 142, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_BULLETPROOF }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Quilladin"), + .cryId = CRY_QUILLADIN, + .natDexNum = NATIONAL_DEX_QUILLADIN, + .categoryName = _("Spiny Armor"), + .height = 7, + .weight = 290, + .description = COMPOUND_STRING( + "They strengthen the sturdy shell covering\n" + "their bodies by running into one another.\n" + "They are very kind and won't start fights,\n" + "but will counterattack with sharp quills."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Quilladin, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Quilladin, + .frontAnimId = ANIM_LUNGE_GROW, + BACK_PIC(Quilladin, 64, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_GROW, + PALETTES(Quilladin), + ICON(Quilladin, 1), + .footprint = gMonFootprint_Quilladin, + LEARNSETS(Quilladin), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_CHESNAUGHT}), + }, + + [SPECIES_CHESNAUGHT] = + { + .baseHP = 88, + .baseAttack = 107, + .baseDefense = 122, + .baseSpeed = 64, + .baseSpAttack = 74, + .baseSpDefense = 75, + .types = { TYPE_GRASS, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 239, + .evYield_Defense = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_BULLETPROOF }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Chesnaught"), + .cryId = CRY_CHESNAUGHT, + .natDexNum = NATIONAL_DEX_CHESNAUGHT, + .categoryName = _("Spiny Armor"), + .height = 16, + .weight = 900, + .description = COMPOUND_STRING( + "It shields its allies from danger with\n" + "its own body. When it takes a defensive\n" + "posture with its fists guarding its face,\n" + "it can withstand a bomb blast."), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + FRONT_PIC(Chesnaught, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Chesnaught, + .frontAnimId = ANIM_GROW_IN_STAGES, + BACK_PIC(Chesnaught, 64, 56), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Chesnaught), + ICON(Chesnaught, 1), + .footprint = gMonFootprint_Chesnaught, + LEARNSETS(Chesnaught), + }, +#endif //P_FAMILY_CHESPIN + +#if P_FAMILY_FENNEKIN + [SPECIES_FENNEKIN] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 40, + .baseSpeed = 60, + .baseSpAttack = 62, + .baseSpDefense = 60, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 61, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_MAGICIAN }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Fennekin"), + .cryId = CRY_FENNEKIN, + .natDexNum = NATIONAL_DEX_FENNEKIN, + .categoryName = _("Fox"), + .height = 4, + .weight = 94, + .description = COMPOUND_STRING( + "As it walks, it munches on a twig to fill\n" + "itself with energy in place of a snack.\n" + "It intimidates opponents by puffing hot\n" + "air out of its roomy ears."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Fennekin, 40, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Fennekin, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Fennekin, 56, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Fennekin), + ICON(Fennekin, 0), + .footprint = gMonFootprint_Fennekin, + LEARNSETS(Fennekin), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_BRAIXEN}), + }, + + [SPECIES_BRAIXEN] = + { + .baseHP = 59, + .baseAttack = 59, + .baseDefense = 58, + .baseSpeed = 73, + .baseSpAttack = 90, + .baseSpDefense = 70, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 143, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_MAGICIAN }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Braixen"), + .cryId = CRY_BRAIXEN, + .natDexNum = NATIONAL_DEX_BRAIXEN, + .categoryName = _("Fox"), + .height = 10, + .weight = 145, + .description = COMPOUND_STRING( + "Braixen has a twig stuck in its tail.\n" + "When the twig is plucked from its tail,\n" + "friction sets the twig alight. The flame\n" + "is used to send signals to its allies."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Braixen, 48, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Braixen, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Braixen, 64, 56), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Braixen), + ICON(Braixen, 0), + .footprint = gMonFootprint_Braixen, + LEARNSETS(Braixen), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_DELPHOX}), + }, + + [SPECIES_DELPHOX] = + { + .baseHP = 75, + .baseAttack = 69, + .baseDefense = 72, + .baseSpeed = 104, + .baseSpAttack = 114, + .baseSpDefense = 100, + .types = { TYPE_FIRE, TYPE_PSYCHIC }, + .catchRate = 45, + .expYield = 240, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_MAGICIAN }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Delphox"), + .cryId = CRY_DELPHOX, + .natDexNum = NATIONAL_DEX_DELPHOX, + .categoryName = _("Fox"), + .height = 15, + .weight = 390, + .description = COMPOUND_STRING( + "It gazes into the flame at the tip of its\n" + "branch to achieve a focused state, which\n" + "allows it to see into the future. It uses\n" + "psychic power to incinerate its foes."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(Delphox, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Delphox, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Delphox, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(Delphox), + ICON(Delphox, 0), + .footprint = gMonFootprint_Delphox, + LEARNSETS(Delphox), + }, +#endif //P_FAMILY_FENNEKIN + +#if P_FAMILY_FROAKIE + [SPECIES_FROAKIE] = + { + .baseHP = 41, + .baseAttack = 56, + .baseDefense = 40, + .baseSpeed = 71, + .baseSpAttack = 62, + .baseSpDefense = 44, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 63, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_PROTEAN }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Froakie"), + .cryId = CRY_FROAKIE, + .natDexNum = NATIONAL_DEX_FROAKIE, + .categoryName = _("Bubble Frog"), + .height = 3, + .weight = 70, + .description = COMPOUND_STRING( + "It protects its skin by covering its body\n" + "in bubbles it secretes from its chest and\n" + "back. Beneath its happy-go-lucky air, it\n" + "keeps a watchful eye on its surroundings."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Froakie, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Froakie, + .frontAnimId = ANIM_H_JUMPS, + BACK_PIC(Froakie, 56, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Froakie), + ICON(Froakie, 0), + .footprint = gMonFootprint_Froakie, + LEARNSETS(Froakie), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_FROGADIER}), + }, + + [SPECIES_FROGADIER] = + { + .baseHP = 54, + .baseAttack = 63, + .baseDefense = 52, + .baseSpeed = 97, + .baseSpAttack = 83, + .baseSpDefense = 56, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 142, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_PROTEAN }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Frogadier"), + .cryId = CRY_FROGADIER, + .natDexNum = NATIONAL_DEX_FROGADIER, + .categoryName = _("Bubble Frog"), + .height = 6, + .weight = 109, + .description = COMPOUND_STRING( + "It can throw bubble-covered pebbles with\n" + "precise control, hitting empty cans up to\n" + "a hundred feet away. Frogadier's swiftness\n" + "is unparalleled."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Frogadier, 56, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Frogadier, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Frogadier, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(Frogadier), + ICON(Frogadier, 0), + .footprint = gMonFootprint_Frogadier, + LEARNSETS(Frogadier), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_GRENINJA}), + }, + +#define GRENINJA_NORMAL_MISC_INFO \ + .baseHP = 72, \ + .baseAttack = 95, \ + .baseDefense = 67, \ + .baseSpeed = 122, \ + .baseSpAttack = 103, \ + .baseSpDefense = 71, \ + .expYield = 239, \ + .description = gGreninjaPokedexText,\ + FRONT_PIC(Greninja, 64, 56), \ + .frontPicYOffset = 7, \ + .frontAnimFrames = sAnims_Greninja, \ + BACK_PIC(Greninja, 64, 48), \ + .backPicYOffset = 11, \ + PALETTES(Greninja), \ + ICON(Greninja, 0) + +#define GRENINJA_MISC_INFO \ + .types = { TYPE_WATER, TYPE_DARK }, \ + .catchRate = 45, \ + .evYield_Speed = 3, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .bodyColor = BODY_COLOR_BLUE, \ + .noFlip = TRUE, \ + .speciesName = _("Greninja"), \ + .cryId = CRY_GRENINJA, \ + .natDexNum = NATIONAL_DEX_GRENINJA, \ + .categoryName = _("Ninja"), \ + .height = 15, \ + .weight = 400, \ + .pokemonScale = 268, \ + .pokemonOffset = 2, \ + .trainerScale = 271, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Greninja, \ + LEARNSETS(Greninja), \ + .formSpeciesIdTable = sGreninjaFormSpeciesIdTable + + [SPECIES_GRENINJA] = + { + GRENINJA_MISC_INFO, + GRENINJA_NORMAL_MISC_INFO, + .genderRatio = PERCENT_FEMALE(12.5), + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_PROTEAN }, + .frontAnimId = ANIM_V_STRETCH, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + }, + + [SPECIES_GRENINJA_BATTLE_BOND] = + { + GRENINJA_MISC_INFO, + GRENINJA_NORMAL_MISC_INFO, + .genderRatio = MON_MALE, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_BATTLE_BOND, ABILITY_NONE, ABILITY_NONE }, + .frontAnimId = ANIM_FLICKER_INCREASING, + .backAnimId = BACK_ANIM_V_STRETCH, + .formChangeTable = sGreninjaBattleBondFormChangeTable, + }, + + [SPECIES_GRENINJA_ASH] = + { + GRENINJA_MISC_INFO, + .baseHP = 72, + .baseAttack = 145, + .baseDefense = 67, + .baseSpeed = 132, + .baseSpAttack = 153, + .baseSpDefense = 71, + .expYield = 288, + .genderRatio = MON_MALE, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_BATTLE_BOND, ABILITY_NONE, ABILITY_NONE }, + .description = COMPOUND_STRING( + "It appears and vanishes with a ninja's\n" + "grace. It toys with its enemies using swift\n" + "movements, while slicing them with throwing\n" + "stars made of compressed water."), + FRONT_PIC(GreninjaAsh, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_GreninjaAsh, + BACK_PIC(GreninjaAsh, 64, 48), + .backPicYOffset = 11, + PALETTES(GreninjaAsh), + ICON(GreninjaAsh, 0), + .frontAnimId = ANIM_FLICKER_INCREASING, + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, + .formChangeTable = sGreninjaBattleBondFormChangeTable, + }, +#endif //P_FAMILY_FROAKIE + +#if P_FAMILY_BUNNELBY + [SPECIES_BUNNELBY] = + { + .baseHP = 38, + .baseAttack = 36, + .baseDefense = 38, + .baseSpeed = 57, + .baseSpAttack = 32, + .baseSpDefense = 36, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 255, + .expYield = 47, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_PICKUP, ABILITY_CHEEK_POUCH, ABILITY_HUGE_POWER }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Bunnelby"), + .cryId = CRY_BUNNELBY, + .natDexNum = NATIONAL_DEX_BUNNELBY, + .categoryName = _("Digging"), + .height = 4, + .weight = 50, + .description = COMPOUND_STRING( + "It has ears like shovels. Digging holes\n" + "strengthens its ears so much that they\n" + "can sever thick roots effortlessly.\n" + "Bunnelby dig the whole night through."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Bunnelby, 48, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Bunnelby, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + BACK_PIC(Bunnelby, 48, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Bunnelby), + ICON(Bunnelby, 2), + .footprint = gMonFootprint_Bunnelby, + LEARNSETS(Bunnelby), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_DIGGERSBY}), + }, + + [SPECIES_DIGGERSBY] = + { + .baseHP = 85, + .baseAttack = 56, + .baseDefense = 77, + .baseSpeed = 78, + .baseSpAttack = 50, + .baseSpDefense = 77, + .types = { TYPE_NORMAL, TYPE_GROUND }, + .catchRate = 127, + .expYield = 148, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_PICKUP, ABILITY_CHEEK_POUCH, ABILITY_HUGE_POWER }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Diggersby"), + .cryId = CRY_DIGGERSBY, + .natDexNum = NATIONAL_DEX_DIGGERSBY, + .categoryName = _("Digging"), + .height = 10, + .weight = 424, + .description = COMPOUND_STRING( + "With its powerful ears it reduces dense\n" + "bedrock to rubble. It can be a big help\n" + "at construction sites. When it's finished\n" + "digging, it lounges about lazily."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Diggersby, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Diggersby, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + BACK_PIC(Diggersby, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Diggersby), + ICON(Diggersby, 2), + .footprint = gMonFootprint_Diggersby, + LEARNSETS(Diggersby), + }, +#endif //P_FAMILY_BUNNELBY + +#if P_FAMILY_FLETCHLING + [SPECIES_FLETCHLING] = + { + .baseHP = 45, + .baseAttack = 50, + .baseDefense = 43, + .baseSpeed = 62, + .baseSpAttack = 40, + .baseSpDefense = 38, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 255, + .expYield = 56, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_BIG_PECKS, ABILITY_NONE, ABILITY_GALE_WINGS }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Fletchling"), + .cryId = CRY_FLETCHLING, + .natDexNum = NATIONAL_DEX_FLETCHLING, + .categoryName = _("Tiny Robin"), + .height = 3, + .weight = 17, + .description = COMPOUND_STRING( + "This amiable Pokémon is easy to train.\n" + "But when battle is joined, it shows its\n" + "ferocious side. It's merciless to\n" + "intruders that enter its territory."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Fletchling, 40, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Fletchling, + .frontAnimId = ANIM_V_JUMPS_SMALL, + BACK_PIC(Fletchling, 64, 40), + .backPicYOffset = 14, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Fletchling), + ICON(Fletchling, 2), + .footprint = gMonFootprint_Fletchling, + LEARNSETS(Fletchling), + .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_FLETCHINDER}), + }, + + [SPECIES_FLETCHINDER] = + { + .baseHP = 62, + .baseAttack = 73, + .baseDefense = 55, + .baseSpeed = 84, + .baseSpAttack = 56, + .baseSpDefense = 52, + .types = { TYPE_FIRE, TYPE_FLYING }, + .catchRate = 120, + .expYield = 134, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_GALE_WINGS }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Flechinder"), + .cryId = CRY_FLETCHINDER, + .natDexNum = NATIONAL_DEX_FLETCHINDER, + .categoryName = _("Ember"), + .height = 7, + .weight = 160, + .description = COMPOUND_STRING( + "From its beak, it expels embers that set\n" + "the tall grass on fire. Then it pounces on\n" + "any bewildered Pokémon that pop out of\n" + "the grass."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Fletchinder, 56, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Fletchinder, + .frontAnimId = ANIM_V_SLIDE_SLOW, + .enemyMonElevation = 9, + BACK_PIC(Fletchinder, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Fletchinder), + ICON(Fletchinder, 2), + .footprint = gMonFootprint_Fletchinder, + LEARNSETS(Fletchinder), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_TALONFLAME}), + }, + + [SPECIES_TALONFLAME] = + { + .baseHP = 78, + .baseAttack = 81, + .baseDefense = 71, + .baseSpeed = 126, + .baseSpAttack = 74, + .baseSpDefense = 69, + .types = { TYPE_FIRE, TYPE_FLYING }, + .catchRate = 45, + .expYield = 175, + .evYield_Speed = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_FLAME_BODY, ABILITY_NONE, ABILITY_GALE_WINGS }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Talonflame"), + .cryId = CRY_TALONFLAME, + .natDexNum = NATIONAL_DEX_TALONFLAME, + .categoryName = _("Scorching"), + .height = 12, + .weight = 245, + .description = COMPOUND_STRING( + "In the fever of an exciting battle, it\n" + "showers embers from the gaps between its\n" + "feathers and takes to the air. It finishes\n" + "its prey off with a colossal kick."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Talonflame, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Talonflame, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 7, + BACK_PIC(Talonflame, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Talonflame), + ICON(Talonflame, 2), + .footprint = gMonFootprint_Talonflame, + LEARNSETS(Talonflame), + }, +#endif //P_FAMILY_FLETCHLING + +#if P_FAMILY_SCATTERBUG + [SPECIES_SCATTERBUG] = + { + .baseHP = 38, + .baseAttack = 35, + .baseDefense = 40, + .baseSpeed = 35, + .baseSpAttack = 27, + .baseSpDefense = 25, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 255, + .expYield = 40, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SHIELD_DUST, ABILITY_COMPOUND_EYES, ABILITY_FRIEND_GUARD }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Scatterbug"), + .cryId = CRY_SCATTERBUG, + .natDexNum = NATIONAL_DEX_SCATTERBUG, + .categoryName = _("Scatterdust"), + .height = 3, + .weight = 25, + .description = COMPOUND_STRING( + "When under attack from bird Pokémon,\n" + "it spews a poisonous black powder that\n" + "causes paralysis on contact. Scatterbug\n" + "can live in any region or climate."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Scatterbug, 32, 48), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Scatterbug, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Scatterbug, 40, 56), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Scatterbug), + ICON(Scatterbug, 1), + .footprint = gMonFootprint_Scatterbug, + LEARNSETS(Scatterbug), + .evolutions = EVOLUTION({EVO_LEVEL, 9, SPECIES_SPEWPA}), + }, + + [SPECIES_SPEWPA] = + { + .baseHP = 45, + .baseAttack = 22, + .baseDefense = 60, + .baseSpeed = 29, + .baseSpAttack = 27, + .baseSpDefense = 30, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 120, + .expYield = 75, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_FRIEND_GUARD }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Spewpa"), + .cryId = CRY_SPEWPA, + .natDexNum = NATIONAL_DEX_SPEWPA, + .categoryName = _("Scatterdust"), + .height = 3, + .weight = 84, + .description = COMPOUND_STRING( + "It lives hidden within thicket shadows.\n" + "When predators attack, it quickly bristles\n" + "the fur covering its body in an effort to\n" + "threaten them."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Spewpa, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Spewpa, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Spewpa, 48, 48), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Spewpa), + ICON(Spewpa, 1), + .footprint = gMonFootprint_Spewpa, + LEARNSETS(Spewpa), + .evolutions = EVOLUTION({EVO_LEVEL, 12, SPECIES_VIVILLON_ICY_SNOW}), + }, + +#define VIVILLON_MISC_INFO(form, color, iconPal) \ + .baseHP = 80, \ + .baseAttack = 52, \ + .baseDefense = 50, \ + .baseSpeed = 89, \ + .baseSpAttack = 90, \ + .baseSpDefense = 50, \ + .types = { TYPE_BUG, TYPE_FLYING }, \ + .catchRate = 45, \ + .expYield = 185, \ + .evYield_HP = 1, \ + .evYield_Speed = 1, \ + .evYield_SpAttack = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, \ + .abilities = { ABILITY_SHIELD_DUST, ABILITY_COMPOUND_EYES, ABILITY_FRIEND_GUARD }, \ + .bodyColor = color, \ + .speciesName = _("Vivillon"), \ + .cryId = CRY_VIVILLON, \ + .natDexNum = NATIONAL_DEX_VIVILLON, \ + .categoryName = _("Scale"), \ + .height = 12, \ + .weight = 170, \ + .pokemonScale = 282, \ + .pokemonOffset = 4, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + FRONT_PIC(Vivillon ##form, 64, 64), \ + .frontPicYOffset = 0, \ + .frontAnimFrames = sAnims_Vivillon, \ + .frontAnimId = ANIM_ZIGZAG_SLOW, \ + .enemyMonElevation = 9, \ + BACK_PIC(Vivillon ##form, 64, 64), \ + .backPicYOffset = 0, \ + .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, \ + PALETTES(Vivillon ##form), \ + ICON(Vivillon ##form, iconPal), \ + .footprint = gMonFootprint_Vivillon, \ + LEARNSETS(Vivillon), \ + .formSpeciesIdTable = sVivillonFormSpeciesIdTable + + [SPECIES_VIVILLON_ICY_SNOW] = + { + VIVILLON_MISC_INFO(IcySnow, BODY_COLOR_WHITE, 0), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in.\n" + "This form is from frigid lands.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_POLAR] = + { + VIVILLON_MISC_INFO(Polar, BODY_COLOR_BLUE, 0), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in.\n" + "This form is from snowy lands.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_TUNDRA] = + { + VIVILLON_MISC_INFO(Tundra, BODY_COLOR_BLUE, 0), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in.\n" + "This form is from lands of severe cold.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_CONTINENTAL] = + { + VIVILLON_MISC_INFO(Continental, BODY_COLOR_YELLOW, 2), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in.\n" + "This form is from lands of vast space.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_GARDEN] = + { + VIVILLON_MISC_INFO(Garden, BODY_COLOR_GREEN, 1), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in.\n" + "This form is from verdant lands.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_ELEGANT] = + { + VIVILLON_MISC_INFO(Elegant, BODY_COLOR_PURPLE, 0), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in. This\n" + "form is from lands with distinct seasons.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_MEADOW] = + { + VIVILLON_MISC_INFO(Meadow, BODY_COLOR_PINK, 0), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in. This\n" + "form is from lands where flowers bloom.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_MODERN] = + { + VIVILLON_MISC_INFO(Modern, BODY_COLOR_RED, 2), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in.\n" + "This form is from sun-drenched lands.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_MARINE] = + { + VIVILLON_MISC_INFO(Marine, BODY_COLOR_BLUE, 0), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in. This\n" + "form is from lands with ocean breezes.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_ARCHIPELAGO] = + { + VIVILLON_MISC_INFO(Archipelago, BODY_COLOR_BROWN, 0), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in.\n" + "This form is from places with many islands.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_HIGH_PLAINS] = + { + VIVILLON_MISC_INFO(HighPlains, BODY_COLOR_BROWN, 0), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in.\n" + "This form is from lands with little rain.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_SANDSTORM] = + { + VIVILLON_MISC_INFO(Sandstorm, BODY_COLOR_BROWN, 1), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in.\n" + "This form is from parched lands.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_RIVER] = + { + VIVILLON_MISC_INFO(River, BODY_COLOR_BROWN, 2), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in. This\n" + "form is from lands where large rivers flow.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_MONSOON] = + { + VIVILLON_MISC_INFO(Monsoon, BODY_COLOR_GRAY, 0), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in. This\n" + "form is from lands with intense rainfall.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_SAVANNA] = + { + VIVILLON_MISC_INFO(Savanna, BODY_COLOR_GREEN, 0), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in. This\n" + "form is from lands with a tropical climate.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_SUN] = + { + VIVILLON_MISC_INFO(Sun, BODY_COLOR_RED, 0), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in.\n" + "This form is from lands bathed in light.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_OCEAN] = + { + VIVILLON_MISC_INFO(Ocean, BODY_COLOR_RED, 0), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in. This\n" + "form is from lands of perpetual summer.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_JUNGLE] = + { + VIVILLON_MISC_INFO(Jungle, BODY_COLOR_GREEN, 0), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in. This\n" + "form is from lands of tropical rainforests.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_FANCY] = + { + VIVILLON_MISC_INFO(Fancy, BODY_COLOR_PINK, 1), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in.\n" + "This form is from a mysterious land.\n" + "It scatters toxic color scales in battle."), + }, + [SPECIES_VIVILLON_POKE_BALL] = + { + VIVILLON_MISC_INFO(PokeBall, BODY_COLOR_RED, 2), + .description = COMPOUND_STRING( + "Its pattern depends on the climate and\n" + "topography of the land it was born in.\n" + "This form is from a special land.\n" + "It scatters toxic color scales in battle."), + }, +#endif //P_FAMILY_SCATTERBUG + +#if P_FAMILY_LITLEO + [SPECIES_LITLEO] = + { + .baseHP = 62, + .baseAttack = 50, + .baseDefense = 58, + .baseSpeed = 72, + .baseSpAttack = 73, + .baseSpDefense = 54, + .types = { TYPE_FIRE, TYPE_NORMAL }, + .catchRate = 220, + .expYield = 74, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(87.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_RIVALRY, ABILITY_UNNERVE, ABILITY_MOXIE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Litleo"), + .cryId = CRY_LITLEO, + .natDexNum = NATIONAL_DEX_LITLEO, + .categoryName = _("Lion Cub"), + .height = 6, + .weight = 135, + .description = COMPOUND_STRING( + "They set off on their own from their pride\n" + "and live by themselves to become stronger.\n" + "These hot-blooded Pokémon are quick\n" + "to start a fight."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Litleo, 40, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Litleo, + .frontAnimId = ANIM_BACK_AND_LUNGE, + BACK_PIC(Litleo, 56, 48), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Litleo), + ICON(Litleo, 2), + .footprint = gMonFootprint_Litleo, + LEARNSETS(Litleo), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_PYROAR}), + }, + + [SPECIES_PYROAR] = + { + .baseHP = 86, + .baseAttack = 68, + .baseDefense = 72, + .baseSpeed = 106, + .baseSpAttack = 109, + .baseSpDefense = 66, + .types = { TYPE_FIRE, TYPE_NORMAL }, + .catchRate = 65, + .expYield = 177, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(87.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_RIVALRY, ABILITY_UNNERVE, ABILITY_MOXIE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Pyroar"), + .cryId = CRY_PYROAR, + .natDexNum = NATIONAL_DEX_PYROAR, + .categoryName = _("Royal"), + .height = 15, + .weight = 815, + .description = COMPOUND_STRING( + "The male with the largest mane of fire\n" + "is the leader of the pride. The females\n" + "protect the pride's cubs. They viciously\n" + "threaten any challenger."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(Pyroar, 64, 64), + FRONT_PIC_FEMALE(Pyroar, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Pyroar, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Pyroar, 64, 64), + BACK_PIC_FEMALE(Pyroar, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_H_STRETCH, + PALETTES(Pyroar), + ICON(Pyroar, 2), + ICON_FEMALE(Pyroar, 2), + .footprint = gMonFootprint_Pyroar, + LEARNSETS(Pyroar), + }, +#endif //P_FAMILY_LITLEO + +#if P_FAMILY_FLABEBE +#define FLABEBE_MISC_INFO(Form, FORM, iconPal) \ + .baseHP = 44, \ + .baseAttack = 38, \ + .baseDefense = 39, \ + .baseSpeed = 42, \ + .baseSpAttack = 61, \ + .baseSpDefense = 79, \ + .types = { TYPE_FAIRY, TYPE_FAIRY }, \ + .catchRate = 225, \ + .expYield = 61, \ + .evYield_SpDefense = 1, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, \ + .abilities = { ABILITY_FLOWER_VEIL, ABILITY_NONE, ABILITY_SYMBIOSIS }, \ + .bodyColor = BODY_COLOR_WHITE, \ + .speciesName = _("Flabébé"), \ + .cryId = CRY_FLABEBE, \ + .natDexNum = NATIONAL_DEX_FLABEBE, \ + .categoryName = _("Single Bloom"), \ + .height = 1, \ + .weight = 1, \ + .pokemonScale = 682, \ + .pokemonOffset = 24, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + FRONT_PIC(Flabebe, 48, 56), \ + .frontPicYOffset = 6, \ + .frontAnimFrames = sAnims_Flabebe, \ + .frontAnimId = ANIM_H_SLIDE_SLOW, \ + .enemyMonElevation = 6, \ + BACK_PIC(Flabebe, 64, 40), \ + .backPicYOffset = 12, \ + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, \ + PALETTES(Flabebe##Form##Flower), \ + ICON(Flabebe##Form##Flower, iconPal), \ + .footprint = gMonFootprint_Flabebe, \ + LEARNSETS(Flabebe), \ + .formSpeciesIdTable = sFlabebeFormSpeciesIdTable, \ + .evolutions = EVOLUTION({EVO_LEVEL, 19, SPECIES_FLOETTE_ ##FORM##_FLOWER}) + + [SPECIES_FLABEBE_RED_FLOWER] = + { + FLABEBE_MISC_INFO(Red, RED, 1), + .description = COMPOUND_STRING( + "This Flabébé rides a red flower.\n" + "Immediately after birth, this Pokémon\n" + "begins flying around in search of a\n" + "flower it likes."), + }, + [SPECIES_FLABEBE_YELLOW_FLOWER] = + { + FLABEBE_MISC_INFO(Yellow, YELLOW, 1), + .description = COMPOUND_STRING( + "It unleashes a variety of moves by\n" + "drawing forth the power hidden\n" + "within flowers. This Pokémon is\n" + "particularly fond of yellow flowers."), + }, + [SPECIES_FLABEBE_ORANGE_FLOWER] = + { + FLABEBE_MISC_INFO(Orange, ORANGE, 0), + .description = COMPOUND_STRING( + "It receives strength from flowers\n" + "and gives them some of its energy in\n" + "return. This Pokémon likes orange\n" + "flowers best of all."), + }, + [SPECIES_FLABEBE_BLUE_FLOWER] = + { + FLABEBE_MISC_INFO(Blue, BLUE, 0), + .description = COMPOUND_STRING( + "This Pokémon likes blue flowers\n" + "best of all. It floats upward using the\n" + "power emanating from its flower\n" + "and bobs along lightly through the air."), + }, + [SPECIES_FLABEBE_WHITE_FLOWER] = + { + FLABEBE_MISC_INFO(White, WHITE, 1), + .description = COMPOUND_STRING( + "When evening falls, it searches out\n" + "a place blooming with flowers of\n" + "the same white color as itself, and\n" + "then it goes to sleep."), + }, + +#define FLOETTE_MISC_INFO(form, FORM, iconPal) \ + .types = { TYPE_FAIRY, TYPE_FAIRY }, \ + .catchRate = 120, \ + .evYield_SpDefense = 2, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .abilities = { ABILITY_FLOWER_VEIL, ABILITY_NONE, ABILITY_SYMBIOSIS }, \ + .bodyColor = BODY_COLOR_WHITE, \ + .speciesName = _("Floette"), \ + .natDexNum = NATIONAL_DEX_FLOETTE, \ + .categoryName = _("Single Bloom"), \ + .height = 2, \ + .weight = 9, \ + .pokemonScale = 682, \ + .pokemonOffset = 24, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontAnimFrames = sAnims_Floette, \ + .frontAnimId = ANIM_V_SLIDE_WOBBLE, \ + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, \ + PALETTES(Floette ##form##Flower), \ + ICON(Floette##form##Flower, iconPal), \ + .footprint = gMonFootprint_Floette, \ + .formSpeciesIdTable = sFloetteFormSpeciesIdTable + +#define FLOETTE_NORMAL_INFO(form, FORM, iconPal) \ + .baseHP = 54, \ + .baseAttack = 45, \ + .baseDefense = 47, \ + .baseSpeed = 52, \ + .baseSpAttack = 75, \ + .baseSpDefense = 98, \ + .expYield = 130, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, \ + .cryId = CRY_FLOETTE, \ + FRONT_PIC(Floette, 48, 64), \ + .frontPicYOffset = 3, \ + .enemyMonElevation = 4, \ + BACK_PIC(Floette, 64, 64), \ + .backPicYOffset = 2, \ + LEARNSETS(Floette), \ + .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_FLORGES_ ##FORM##_FLOWER}),\ + FLOETTE_MISC_INFO(form, FORM, iconPal) + + [SPECIES_FLOETTE_RED_FLOWER] = + { + FLOETTE_NORMAL_INFO(Red, RED, 1), + .description = COMPOUND_STRING( + "This Pokémon uses red wavelengths\n" + "of light to pour its own energy\n" + "into flowers and draw forth their\n" + "latent potential."), + }, + [SPECIES_FLOETTE_YELLOW_FLOWER] = + { + FLOETTE_NORMAL_INFO(Yellow, YELLOW, 1), + .description = COMPOUND_STRING( + "This Pokémon can draw forth the\n" + "power hidden within yellow flowers.\n" + "This power then becomes the moves\n" + "Floette uses to protect itself."), + }, + [SPECIES_FLOETTE_ORANGE_FLOWER] = + { + FLOETTE_NORMAL_INFO(Orange, ORANGE, 0), + .description = COMPOUND_STRING( + "This Pokémon can draw forth the\n" + "most power when in sync with orange\n" + "flowers, compared to flowers of other\n" + "colors."), + }, + [SPECIES_FLOETTE_BLUE_FLOWER] = + { + FLOETTE_NORMAL_INFO(Blue, BLUE, 0), + .description = COMPOUND_STRING( + "Whenever this Pokémon finds\n" + "flowering plants that are withering, it\n" + "will bring them back to its territory\n" + "and care for them."), + }, + [SPECIES_FLOETTE_WHITE_FLOWER] = + { + FLOETTE_NORMAL_INFO(White, WHITE, 1), + .description = COMPOUND_STRING( + "If it finds someone messing up a\n" + "flower bed, it will attack them\n" + "without mercy. This Floette takes\n" + "particularly good care of white flowers."), + }, + [SPECIES_FLOETTE_ETERNAL_FLOWER] = + { + FLOETTE_MISC_INFO(Eternal, ETERNAL, 0), + .baseHP = 74, + .baseAttack = 65, + .baseDefense = 67, + .baseSpeed = 92, + .baseSpAttack = 125, + .baseSpDefense = 128, + .expYield = 243, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .description = COMPOUND_STRING( + "The flower it's holding can no\n" + "longer be found blooming anywhere. It's\n" + "also thought to contain terrifying\n" + "power."), + .cryId = CRY_FLOETTE_ETERNAL_FLOWER, + FRONT_PIC(FloetteEternalFlower, 64, 64), + .frontPicYOffset = 3, + .enemyMonElevation = 4, + BACK_PIC(FloetteEternalFlower, 64, 64), + .backPicYOffset = 2, + LEARNSETS(FloetteEternalFlower), + }, + +#define FLORGES_MISC_INFO(Form, iconPal) \ + .baseHP = 78, \ + .baseAttack = 65, \ + .baseDefense = 68, \ + .baseSpeed = 75, \ + .baseSpAttack = 112, \ + .baseSpDefense = 154, \ + .types = { TYPE_FAIRY, TYPE_FAIRY }, \ + .catchRate = 45, \ + .expYield = 248, \ + .evYield_SpDefense = 3, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, \ + .abilities = { ABILITY_FLOWER_VEIL, ABILITY_NONE, ABILITY_SYMBIOSIS }, \ + .bodyColor = BODY_COLOR_WHITE, \ + .speciesName = _("Florges"), \ + .cryId = CRY_FLORGES, \ + .natDexNum = NATIONAL_DEX_FLORGES, \ + .categoryName = _("Garden"), \ + .height = 11, \ + .weight = 100, \ + .pokemonScale = 320, \ + .pokemonOffset = 7, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + FRONT_PIC(Florges, 64, 64), \ + .frontPicYOffset = 0, \ + .frontAnimFrames = sAnims_Florges, \ + .frontAnimId = ANIM_V_SLIDE_SLOW, \ + BACK_PIC(Florges, 64, 48), \ + .backPicYOffset = 9, \ + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, \ + PALETTES(Florges##Form##Flower), \ + ICON(Florges##Form##Flower, iconPal), \ + .footprint = gMonFootprint_Florges, \ + LEARNSETS(Florges), \ + .formSpeciesIdTable = sFlorgesFormSpeciesIdTable + + [SPECIES_FLORGES_RED_FLOWER] = + { + FLORGES_MISC_INFO(Red, 0), + .description = COMPOUND_STRING( + "This Pokémon creates an\n" + "impressive flower garden in its territory. It\n" + "draws forth the power of the red\n" + "flowers around its neck."), + }, + [SPECIES_FLORGES_YELLOW_FLOWER] = + { + FLORGES_MISC_INFO(Yellow, 1), + .description = COMPOUND_STRING( + "This Pokémon battles by drawing\n" + "forth the power of yellow flowers. It\n" + "ruthlessly punishes anyone who\n" + "tramples on flowering plants."), + }, + [SPECIES_FLORGES_ORANGE_FLOWER] = + { + FLORGES_MISC_INFO(Orange, 0), + .description = COMPOUND_STRING( + "In times long past, castle\n" + "governors would lovingly raise Florges to\n" + "care for their castles' exquisite\n" + "gardens."), + }, + [SPECIES_FLORGES_BLUE_FLOWER] = + { + FLORGES_MISC_INFO(Blue, 0), + .description = COMPOUND_STRING( + "Blue pigments were tremendously\n" + "expensive in the past, so paintings\n" + "of blue Florges are highly valuable."), + }, + [SPECIES_FLORGES_WHITE_FLOWER] = + { + FLORGES_MISC_INFO(White, 0), + .description = COMPOUND_STRING( + "A flower garden made by a white-\n" + "flowered Florges will be beautifully\n" + "decorated with flowering plants of\n" + "many different colors."), + }, +#endif //P_FAMILY_FLABEBE + +#if P_FAMILY_SKIDDO + [SPECIES_SKIDDO] = + { + .baseHP = 66, + .baseAttack = 65, + .baseDefense = 48, + .baseSpeed = 52, + .baseSpAttack = 62, + .baseSpDefense = 57, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 200, + .expYield = 70, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SAP_SIPPER, ABILITY_NONE, ABILITY_GRASS_PELT }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Skiddo"), + .cryId = CRY_SKIDDO, + .natDexNum = NATIONAL_DEX_SKIDDO, + .categoryName = _("Mount"), + .height = 9, + .weight = 310, + .description = COMPOUND_STRING( + "If it has sunshine and water, it doesn't\n" + "need to eat, because it can generate\n" + "energy from the leaves on its back.\n" + "It has a placid disposition."), + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Skiddo, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Skiddo, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Skiddo, 56, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Skiddo), + ICON(Skiddo, 1), + .footprint = gMonFootprint_Skiddo, + LEARNSETS(Skiddo), + .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_GOGOAT}), + }, + + [SPECIES_GOGOAT] = + { + .baseHP = 123, + .baseAttack = 100, + .baseDefense = 62, + .baseSpeed = 68, + .baseSpAttack = 97, + .baseSpDefense = 81, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 186, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SAP_SIPPER, ABILITY_NONE, ABILITY_GRASS_PELT }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Gogoat"), + .cryId = CRY_GOGOAT, + .natDexNum = NATIONAL_DEX_GOGOAT, + .categoryName = _("Mount"), + .height = 17, + .weight = 910, + .description = COMPOUND_STRING( + "It can tell how its trainer is feeling by\n" + "subtle shifts in the grip on its horns. This\n" + "empathetic sense lets them run as if one\n" + "being. They inhabit mountainous regions."), + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 1, + FRONT_PIC(Gogoat, 56, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Gogoat, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Gogoat, 64, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, + PALETTES(Gogoat), + ICON(Gogoat, 1), + .footprint = gMonFootprint_Gogoat, + LEARNSETS(Gogoat), + }, +#endif //P_FAMILY_SKIDDO + +#if P_FAMILY_PANCHAM + [SPECIES_PANCHAM] = + { + .baseHP = 67, + .baseAttack = 82, + .baseDefense = 62, + .baseSpeed = 43, + .baseSpAttack = 46, + .baseSpDefense = 48, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 220, + .expYield = 70, + .evYield_Attack = 1, + .itemRare = ITEM_MENTAL_HERB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_IRON_FIST, ABILITY_MOLD_BREAKER, ABILITY_SCRAPPY }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Pancham"), + .cryId = CRY_PANCHAM, + .natDexNum = NATIONAL_DEX_PANCHAM, + .categoryName = _("Playful"), + .height = 6, + .weight = 80, + .description = COMPOUND_STRING( + "There's no point to the leaf in its mouth,\n" + "aside from an effort to look cool. It's\n" + "mischievous, so it's not well suited to\n" + "inexperienced Trainers."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pancham, 32, 48), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Pancham, + .frontAnimId = ANIM_H_STRETCH, + BACK_PIC(Pancham, 48, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + PALETTES(Pancham), + ICON(Pancham, 1), + .footprint = gMonFootprint_Pancham, + LEARNSETS(Pancham), + .evolutions = EVOLUTION({EVO_LEVEL_DARK_TYPE_MON_IN_PARTY, 32, SPECIES_PANGORO}), + }, + + [SPECIES_PANGORO] = + { + .baseHP = 95, + .baseAttack = 124, + .baseDefense = 78, + .baseSpeed = 58, + .baseSpAttack = 69, + .baseSpDefense = 71, + .types = { TYPE_FIGHTING, TYPE_DARK }, + .catchRate = 65, + .expYield = 173, + .evYield_Attack = 2, + .itemRare = ITEM_MENTAL_HERB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_IRON_FIST, ABILITY_MOLD_BREAKER, ABILITY_SCRAPPY }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Pangoro"), + .cryId = CRY_PANGORO, + .natDexNum = NATIONAL_DEX_PANGORO, + .categoryName = _("Daunting"), + .height = 21, + .weight = 1360, + .description = COMPOUND_STRING( + "It boasts superb physical strength.\n" + "Those who wish to become Pangoro's\n" + "Trainer have no choice but to converse\n" + "with their fists."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, + FRONT_PIC(Pangoro, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Pangoro, + .frontAnimId = ANIM_BACK_AND_LUNGE, + BACK_PIC(Pangoro, 64, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Pangoro), + ICON(Pangoro, 1), + .footprint = gMonFootprint_Pangoro, + LEARNSETS(Pangoro), + }, +#endif //P_FAMILY_PANCHAM + +#if P_FAMILY_FURFROU +#define FURFROU_MISC_INFO \ + .baseHP = 75, \ + .baseAttack = 80, \ + .baseDefense = 60, \ + .baseSpeed = 102, \ + .baseSpAttack = 65, \ + .baseSpDefense = 90, \ + .types = { TYPE_NORMAL, TYPE_NORMAL }, \ + .catchRate = 160, \ + .expYield = 165, \ + .evYield_Speed = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .abilities = { ABILITY_FUR_COAT, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_WHITE, \ + .speciesName = _("Furfrou"), \ + .cryId = CRY_FURFROU, \ + .natDexNum = NATIONAL_DEX_FURFROU, \ + .categoryName = _("Poodle"), \ + .height = 12, \ + .weight = 280, \ + .description = gFurfrouPokedexText, \ + .pokemonScale = 282, \ + .pokemonOffset = 4, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontAnimFrames = sAnims_Furfrou, \ + .frontAnimId = ANIM_H_SLIDE, \ + .backAnimId = BACK_ANIM_V_STRETCH, \ + .footprint = gMonFootprint_Furfrou, \ + LEARNSETS(Furfrou), \ + .formSpeciesIdTable = sFurfrouFormSpeciesIdTable + + [SPECIES_FURFROU_NATURAL] = + { + FURFROU_MISC_INFO, + FRONT_PIC(FurfrouNatural, 48, 64), + .frontPicYOffset = 3, + BACK_PIC(FurfrouNatural, 56, 64), + .backPicYOffset = 0, + PALETTES(FurfrouNatural), + ICON(FurfrouNatural, 0), + }, + [SPECIES_FURFROU_HEART_TRIM] = + { + FURFROU_MISC_INFO, + FRONT_PIC(FurfrouHeartTrim, 56, 64), + .frontPicYOffset = 2, + BACK_PIC(FurfrouHeartTrim, 56, 64), + .backPicYOffset = 1, + PALETTES(FurfrouHeartTrim), + ICON(FurfrouHeartTrim, 0), + }, + [SPECIES_FURFROU_STAR_TRIM] = + { + FURFROU_MISC_INFO, + FRONT_PIC(FurfrouStarTrim, 56, 64), + .frontPicYOffset = 2, + BACK_PIC(FurfrouStarTrim, 64, 64), + .backPicYOffset = 1, + PALETTES(FurfrouStarTrim), + ICON(FurfrouStarTrim, 0), + }, + [SPECIES_FURFROU_DIAMOND_TRIM] = + { + FURFROU_MISC_INFO, + FRONT_PIC(FurfrouDiamondTrim, 48, 64), + .frontPicYOffset = 2, + BACK_PIC(FurfrouDiamondTrim, 56, 64), + .backPicYOffset = 1, + PALETTES(FurfrouDiamondTrim), + ICON(FurfrouDiamondTrim, 0), + }, + [SPECIES_FURFROU_DEBUTANTE_TRIM] = + { + FURFROU_MISC_INFO, + .noFlip = TRUE, + FRONT_PIC(FurfrouDebutanteTrim, 48, 64), + .frontPicYOffset = 2, + BACK_PIC(FurfrouDebutanteTrim, 56, 64), + .backPicYOffset = 1, + PALETTES(FurfrouDebutanteTrim), + ICON(FurfrouDebutanteTrim, 2), + }, + [SPECIES_FURFROU_MATRON_TRIM] = + { + FURFROU_MISC_INFO, + FRONT_PIC(FurfrouMatronTrim, 48, 64), + .frontPicYOffset = 2, + BACK_PIC(FurfrouMatronTrim, 56, 64), + .backPicYOffset = 1, + PALETTES(FurfrouMatronTrim), + ICON(FurfrouMatronTrim, 2), + }, + [SPECIES_FURFROU_DANDY_TRIM] = + { + FURFROU_MISC_INFO, + FRONT_PIC(FurfrouDandyTrim, 48, 64), + .frontPicYOffset = 2, + BACK_PIC(FurfrouDandyTrim, 56, 64), + .backPicYOffset = 1, + PALETTES(FurfrouDandyTrim), + ICON(FurfrouDandyTrim, 1), + }, + [SPECIES_FURFROU_LA_REINE_TRIM] = + { + FURFROU_MISC_INFO, + FRONT_PIC(FurfrouLaReineTrim, 48, 64), + .frontPicYOffset = 2, + BACK_PIC(FurfrouLaReineTrim, 56, 64), + .backPicYOffset = 1, + PALETTES(FurfrouLaReineTrim), + ICON(FurfrouLaReineTrim, 0), + }, + [SPECIES_FURFROU_KABUKI_TRIM] = + { + FURFROU_MISC_INFO, + FRONT_PIC(FurfrouKabukiTrim, 56, 64), + .frontPicYOffset = 2, + BACK_PIC(FurfrouKabukiTrim, 56, 64), + .backPicYOffset = 1, + PALETTES(FurfrouKabukiTrim), + ICON(FurfrouKabukiTrim, 0), + }, + [SPECIES_FURFROU_PHARAOH_TRIM] = + { + FURFROU_MISC_INFO, + FRONT_PIC(FurfrouPharaohTrim, 48, 64), + .frontPicYOffset = 2, + BACK_PIC(FurfrouPharaohTrim, 56, 64), + .backPicYOffset = 1, + PALETTES(FurfrouPharaohTrim), + ICON(FurfrouPharaohTrim, 0), + }, +#endif //P_FAMILY_FURFROU + +#if P_FAMILY_ESPURR + [SPECIES_ESPURR] = + { + .baseHP = 62, + .baseAttack = 48, + .baseDefense = 54, + .baseSpeed = 68, + .baseSpAttack = 63, + .baseSpDefense = 60, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 190, + .expYield = 71, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_INFILTRATOR, ABILITY_OWN_TEMPO }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Espurr"), + .cryId = CRY_ESPURR, + .natDexNum = NATIONAL_DEX_ESPURR, + .categoryName = _("Restraint"), + .height = 3, + .weight = 35, + .description = COMPOUND_STRING( + "It has enough psychic energy to blast\n" + "everything within 300 feet of itself.\n" + "The organ that emits its intense psychic\n" + "power is sheltered by its ears."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Espurr, 32, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Espurr, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Espurr, 56, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Espurr), + ICON(Espurr, 2), + .footprint = gMonFootprint_Espurr, + LEARNSETS(Espurr), + .evolutions = EVOLUTION({EVO_LEVEL_MALE, 25, SPECIES_MEOWSTIC_MALE}, + {EVO_LEVEL_FEMALE, 25, SPECIES_MEOWSTIC_FEMALE}), + }, + +#define MEOWSTIC_MISC_INFO \ + .baseHP = 74, \ + .baseAttack = 48, \ + .baseDefense = 76, \ + .baseSpeed = 104, \ + .baseSpAttack = 83, \ + .baseSpDefense = 81, \ + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, \ + .catchRate = 75, \ + .expYield = 163, \ + .evYield_Speed = 2, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .speciesName = _("Meowstic"), \ + .cryId = CRY_MEOWSTIC, \ + .natDexNum = NATIONAL_DEX_MEOWSTIC, \ + .categoryName = _("Constraint"), \ + .height = 6, \ + .weight = 85, \ + .pokemonScale = 422, \ + .pokemonOffset = 12, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontAnimFrames = sAnims_Meowstic, \ + .frontAnimId = ANIM_GROW_VIBRATE, \ + .backPicYOffset = 9, \ + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, \ + .footprint = gMonFootprint_Meowstic, \ + .formSpeciesIdTable = sMeowsticFormSpeciesIdTable + + [SPECIES_MEOWSTIC_MALE] = + { + MEOWSTIC_MISC_INFO, + .genderRatio = MON_MALE, + .abilities = { ABILITY_KEEN_EYE, ABILITY_INFILTRATOR, ABILITY_PRANKSTER }, + .bodyColor = BODY_COLOR_BLUE, + .description = COMPOUND_STRING( + "The defensive instinct of the\n" + "males is strong. It's when they're\n" + "protecting themselves or their partners\n" + "that they unleash their full power."), + FRONT_PIC(MeowsticMale, 48, 64), + .frontPicYOffset = 3, + BACK_PIC(MeowsticMale, 64, 64), + PALETTES(MeowsticMale), + ICON(MeowsticMale, 0), + LEARNSETS(MeowsticMale), + }, + + [SPECIES_MEOWSTIC_FEMALE] = + { + MEOWSTIC_MISC_INFO, + .genderRatio = MON_FEMALE, + .abilities = { ABILITY_KEEN_EYE, ABILITY_INFILTRATOR, ABILITY_COMPETITIVE }, + .bodyColor = BODY_COLOR_WHITE, + .description = COMPOUND_STRING( + "Females are a bit more selfish and\n" + "aggressive than males. If they\n" + "don't get what they want, they will\n" + "torment you with their psychic abilities."), + FRONT_PIC(MeowsticFemale, 56, 64), + .frontPicYOffset = 2, + BACK_PIC(MeowsticFemale, 48, 64), + PALETTES(MeowsticFemale), + ICON(MeowsticFemale, 0), + LEARNSETS(MeowsticFemale), + }, +#endif //P_FAMILY_ESPURR + +#if P_FAMILY_HONEDGE + [SPECIES_HONEDGE] = + { + .baseHP = 45, + .baseAttack = 80, + .baseDefense = 100, + .baseSpeed = 28, + .baseSpAttack = 35, + .baseSpDefense = 37, + .types = { TYPE_STEEL, TYPE_GHOST }, + .catchRate = 180, + .expYield = 65, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_NO_GUARD, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Honedge"), + .cryId = CRY_HONEDGE, + .natDexNum = NATIONAL_DEX_HONEDGE, + .categoryName = _("Sword"), + .height = 8, + .weight = 20, + .description = COMPOUND_STRING( + "If anyone dares to grab its hilt, it\n" + "wraps a blue cloth around that person's\n" + "arm and drains that person's life\n" + "energy completely."), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Honedge, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Honedge, + .frontAnimId = ANIM_SWING_CONVEX, + .enemyMonElevation = 4, + BACK_PIC(Honedge, 48, 56), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Honedge), + ICON(Honedge, 2), + .footprint = gMonFootprint_Honedge, + LEARNSETS(Honedge), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_DOUBLADE}), + }, + + [SPECIES_DOUBLADE] = + { + .baseHP = 59, + .baseAttack = 110, + .baseDefense = 150, + .baseSpeed = 35, + .baseSpAttack = 45, + .baseSpDefense = 49, + .types = { TYPE_STEEL, TYPE_GHOST }, + .catchRate = 90, + .expYield = 157, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_NO_GUARD, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Doublade"), + .cryId = CRY_DOUBLADE, + .natDexNum = NATIONAL_DEX_DOUBLADE, + .categoryName = _("Sword"), + .height = 8, + .weight = 45, + .description = COMPOUND_STRING( + "When Honedge evolves, it divides into\n" + "two swords. The complex attack patterns\n" + "of its two swords are unstoppable, even\n" + "against those skilled at swordplay."), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Doublade, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Doublade, + .frontAnimId = ANIM_GROW_VIBRATE, + .enemyMonElevation = 5, + BACK_PIC(Doublade, 64, 64), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Doublade), + ICON(Doublade, 2), + .footprint = gMonFootprint_Doublade, + LEARNSETS(Doublade), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_AEGISLASH_SHIELD}), + }, + +#define AEGISLASH_MISC_INFO \ + .types = { TYPE_STEEL, TYPE_GHOST }, \ + .catchRate = 45, \ + .expYield = 234, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, \ + .abilities = { ABILITY_STANCE_CHANGE, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_BROWN, \ + .speciesName = _("Aegislash"), \ + .cryId = CRY_AEGISLASH, \ + .natDexNum = NATIONAL_DEX_AEGISLASH, \ + .categoryName = _("Royal Sword"), \ + .height = 17, \ + .weight = 530, \ + .pokemonScale = 259, \ + .pokemonOffset = 0, \ + .trainerScale = 290, \ + .trainerOffset = 1, \ + .footprint = gMonFootprint_Aegislash, \ + LEARNSETS(Aegislash), \ + .formSpeciesIdTable = sAegislashFormSpeciesIdTable, \ + .formChangeTable = sAegislashFormChangeTable + +#define AEGISLASH_MAIN_STAT (P_UPDATED_STATS >= GEN_8 ? 140 : 150) + + [SPECIES_AEGISLASH_SHIELD] = + { + AEGISLASH_MISC_INFO, + .baseHP = 60, + .baseAttack = 50, + .baseDefense = AEGISLASH_MAIN_STAT, + .baseSpeed = 60, + .baseSpAttack = 50, + .baseSpDefense = AEGISLASH_MAIN_STAT, + .evYield_Defense = 2, + .evYield_SpDefense = 1, + .description = COMPOUND_STRING( + "In this defensive stance,\n" + "Aegislash uses its steel body and a force\n" + "field of spectral power to reduce the\n" + "damage of any attack."), + FRONT_PIC(AegislashShield, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_AegislashShield, + .frontAnimId = ANIM_H_VIBRATE, + .enemyMonElevation = 3, + BACK_PIC(AegislashShield, 64, 64), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(AegislashShield), + ICON(AegislashShield, 2), + }, + + [SPECIES_AEGISLASH_BLADE] = + { + AEGISLASH_MISC_INFO, + .baseHP = 60, + .baseAttack = AEGISLASH_MAIN_STAT, + .baseDefense = 50, + .baseSpeed = 60, + .baseSpAttack = AEGISLASH_MAIN_STAT, + .baseSpDefense = 50, + .evYield_Attack = 2, + .evYield_SpAttack = 1, + .description = COMPOUND_STRING( + "Once upon a time, a king with an\n" + "Aegislash reigned over the land. His\n" + "Pokémon eventually drained him of\n" + "life, and his kingdom fell with him."), + FRONT_PIC(AegislashBlade, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_AegislashBlade, + .frontAnimId = ANIM_CIRCLE_C_CLOCKWISE_SLOW, + .enemyMonElevation = 3, + BACK_PIC(AegislashBlade, 64, 64), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(AegislashBlade), + ICON(AegislashBlade, 2), + }, +#endif //P_FAMILY_HONEDGE + +#if P_FAMILY_SPRITZEE + [SPECIES_SPRITZEE] = + { + .baseHP = 78, + .baseAttack = 52, + .baseDefense = 60, + .baseSpeed = 23, + .baseSpAttack = 63, + .baseSpDefense = 65, + .types = { TYPE_FAIRY, TYPE_FAIRY }, + .catchRate = 200, + .expYield = 68, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_HEALER, ABILITY_NONE, ABILITY_AROMA_VEIL }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Spritzee"), + .cryId = CRY_SPRITZEE, + .natDexNum = NATIONAL_DEX_SPRITZEE, + .categoryName = _("Perfume"), + .height = 2, + .weight = 5, + .description = COMPOUND_STRING( + "In the past, rather than using perfume,\n" + "royal ladies carried a Spritzee that would\n" + "waft a fragrance they liked. Its fragrance\n" + "changes depending on what it has eaten."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Spritzee, 48, 48), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Spritzee, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 14, + BACK_PIC(Spritzee, 56, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Spritzee), + ICON(Spritzee, 0), + .footprint = gMonFootprint_Spritzee, + LEARNSETS(Spritzee), + .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}, + {EVO_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}), + }, + + [SPECIES_AROMATISSE] = + { + .baseHP = 101, + .baseAttack = 72, + .baseDefense = 72, + .baseSpeed = 29, + .baseSpAttack = 99, + .baseSpDefense = 89, + .types = { TYPE_FAIRY, TYPE_FAIRY }, + .catchRate = 140, + .expYield = 162, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_HEALER, ABILITY_NONE, ABILITY_AROMA_VEIL }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Aromatisse"), + .cryId = CRY_AROMATISSE, + .natDexNum = NATIONAL_DEX_AROMATISSE, + .categoryName = _("Fragrance"), + .height = 8, + .weight = 155, + .description = COMPOUND_STRING( + "Its scent is so overpowering that,\n" + "unless a Trainer happens to really enjoy\n" + "the smell, he or she will have a hard time\n" + "walking alongside it."), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Aromatisse, 48, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Aromatisse, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Aromatisse, 64, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Aromatisse), + ICON(Aromatisse, 0), + .footprint = gMonFootprint_Aromatisse, + LEARNSETS(Aromatisse), + }, +#endif //P_FAMILY_SPRITZEE + +#if P_FAMILY_SWIRLIX + [SPECIES_SWIRLIX] = + { + .baseHP = 62, + .baseAttack = 48, + .baseDefense = 66, + .baseSpeed = 49, + .baseSpAttack = 59, + .baseSpDefense = 57, + .types = { TYPE_FAIRY, TYPE_FAIRY }, + .catchRate = 200, + .expYield = 68, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_UNBURDEN }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Swirlix"), + .cryId = CRY_SWIRLIX, + .natDexNum = NATIONAL_DEX_SWIRLIX, + .categoryName = _("Cotton Candy"), + .height = 4, + .weight = 35, + .description = COMPOUND_STRING( + "Because it eats nothing but sweets, its\n" + "fur is as sticky sweet as cotton candy.\n" + "To entangle its opponents in battle, it\n" + "extrudes sticky white threads."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Swirlix, 40, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Swirlix, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + BACK_PIC(Swirlix, 56, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_H_SPRING, + PALETTES(Swirlix), + ICON(Swirlix, 1), + .footprint = gMonFootprint_Swirlix, + LEARNSETS(Swirlix), + .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}, + {EVO_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}), + }, + + [SPECIES_SLURPUFF] = + { + .baseHP = 82, + .baseAttack = 80, + .baseDefense = 86, + .baseSpeed = 72, + .baseSpAttack = 85, + .baseSpDefense = 75, + .types = { TYPE_FAIRY, TYPE_FAIRY }, + .catchRate = 140, + .expYield = 168, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_UNBURDEN }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Slurpuff"), + .cryId = CRY_SLURPUFF, + .natDexNum = NATIONAL_DEX_SLURPUFF, + .categoryName = _("Meringue"), + .height = 8, + .weight = 50, + .description = COMPOUND_STRING( + "Slurpuff can distinguish even the\n" + "faintest of scents. It puts its sensitive\n" + "sense of smell to use by helping pastry\n" + "chefs in their work."), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Slurpuff, 48, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Slurpuff, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Slurpuff, 64, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Slurpuff), + ICON(Slurpuff, 1), + .footprint = gMonFootprint_Slurpuff, + LEARNSETS(Slurpuff), + }, +#endif //P_FAMILY_SWIRLIX + +#if P_FAMILY_INKAY + [SPECIES_INKAY] = + { + .baseHP = 53, + .baseAttack = 54, + .baseDefense = 53, + .baseSpeed = 45, + .baseSpAttack = 37, + .baseSpDefense = 46, + .types = { TYPE_DARK, TYPE_PSYCHIC }, + .catchRate = 190, + .expYield = 58, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_CONTRARY, ABILITY_SUCTION_CUPS, ABILITY_INFILTRATOR }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Inkay"), + .cryId = CRY_INKAY, + .natDexNum = NATIONAL_DEX_INKAY, + .categoryName = _("Revolving"), + .height = 4, + .weight = 35, + .description = COMPOUND_STRING( + "It flashes the light-emitting spots on its\n" + "body, which drains its opponent's will\n" + "to fight. It takes the opportunity to\n" + "scuttle away and hide."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Inkay, 48, 48), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Inkay, + .frontAnimId = ANIM_V_SLIDE_WOBBLE, + .enemyMonElevation = 14, + BACK_PIC(Inkay, 56, 64), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Inkay), + ICON(Inkay, 0), + .footprint = gMonFootprint_Inkay, + LEARNSETS(Inkay), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MALAMAR}), + }, + + [SPECIES_MALAMAR] = + { + .baseHP = 86, + .baseAttack = 92, + .baseDefense = 88, + .baseSpeed = 73, + .baseSpAttack = 68, + .baseSpDefense = 75, + .types = { TYPE_DARK, TYPE_PSYCHIC }, + .catchRate = 80, + .expYield = 169, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_CONTRARY, ABILITY_SUCTION_CUPS, ABILITY_INFILTRATOR }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Malamar"), + .cryId = CRY_MALAMAR, + .natDexNum = NATIONAL_DEX_MALAMAR, + .categoryName = _("Overturning"), + .height = 15, + .weight = 470, + .description = COMPOUND_STRING( + "It lures prey close with hypnotic motions,\n" + "then wraps its tentacles around it before\n" + "finishing it off with digestive fluids. It\n" + "forces others to do whatever it wants."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(Malamar, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Malamar, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + BACK_PIC(Malamar, 64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Malamar), + ICON(Malamar, 2), + .footprint = gMonFootprint_Malamar, + LEARNSETS(Malamar), + }, +#endif //P_FAMILY_INKAY + +#if P_FAMILY_BINACLE + [SPECIES_BINACLE] = + { + .baseHP = 42, + .baseAttack = 52, + .baseDefense = 67, + .baseSpeed = 50, + .baseSpAttack = 39, + .baseSpDefense = 56, + .types = { TYPE_ROCK, TYPE_WATER }, + .catchRate = 120, + .expYield = 61, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_TOUGH_CLAWS, ABILITY_SNIPER, ABILITY_PICKPOCKET }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Binacle"), + .cryId = CRY_BINACLE, + .natDexNum = NATIONAL_DEX_BINACLE, + .categoryName = _("Two-Handed"), + .height = 5, + .weight = 310, + .description = COMPOUND_STRING( + "They stretch and then contract, yanking\n" + "their rocks along with them in bold hops.\n" + "They eat seaweed that washes up on\n" + "the shoreline."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Binacle, 48, 56), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Binacle, + .frontAnimId = ANIM_H_SLIDE, + BACK_PIC(Binacle, 64, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Binacle), + ICON(Binacle, 2), + .footprint = gMonFootprint_Binacle, + LEARNSETS(Binacle), + .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_BARBARACLE}), + }, + + [SPECIES_BARBARACLE] = + { + .baseHP = 72, + .baseAttack = 105, + .baseDefense = 115, + .baseSpeed = 68, + .baseSpAttack = 54, + .baseSpDefense = 86, + .types = { TYPE_ROCK, TYPE_WATER }, + .catchRate = 45, + .expYield = 175, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_TOUGH_CLAWS, ABILITY_SNIPER, ABILITY_PICKPOCKET }, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = TRUE, + .speciesName = _("Barbaracle"), + .cryId = CRY_BARBARACLE, + .natDexNum = NATIONAL_DEX_BARBARACLE, + .categoryName = _("Collective"), + .height = 13, + .weight = 960, + .description = COMPOUND_STRING( + "Barbaracle's legs and hands have minds\n" + "of their own, and they will move\n" + "independently. But they usually follow\n" + "the head's orders."), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Barbaracle, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Barbaracle, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Barbaracle, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Barbaracle), + ICON(Barbaracle, 2), + .footprint = gMonFootprint_Barbaracle, + LEARNSETS(Barbaracle), + }, +#endif //P_FAMILY_BINACLE + +#if P_FAMILY_SKRELP + [SPECIES_SKRELP] = + { + .baseHP = 50, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 30, + .baseSpAttack = 60, + .baseSpDefense = 60, + .types = { TYPE_POISON, TYPE_WATER }, + .catchRate = 225, + .expYield = 64, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_POISON_POINT, ABILITY_POISON_TOUCH, ABILITY_ADAPTABILITY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Skrelp"), + .cryId = CRY_SKRELP, + .natDexNum = NATIONAL_DEX_SKRELP, + .categoryName = _("Mock Kelp"), + .height = 5, + .weight = 73, + .description = COMPOUND_STRING( + "Camouflaged as rotten kelp, it hides\n" + "from foes while storing up power for its\n" + "evolution. They spray liquid poison on\n" + "prey that approach unawares."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Skrelp, 40, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Skrelp, + .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, + BACK_PIC(Skrelp, 64, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Skrelp), + ICON(Skrelp, 2), + .footprint = gMonFootprint_Skrelp, + LEARNSETS(Skrelp), + .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_DRAGALGE}), + }, + + [SPECIES_DRAGALGE] = + { + .baseHP = 65, + .baseAttack = 75, + .baseDefense = 90, + .baseSpeed = 44, + .baseSpAttack = 97, + .baseSpDefense = 123, + .types = { TYPE_POISON, TYPE_DRAGON }, + .catchRate = 55, + .expYield = 173, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_POISON_POINT, ABILITY_POISON_TOUCH, ABILITY_ADAPTABILITY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Dragalge"), + .cryId = CRY_DRAGALGE, + .natDexNum = NATIONAL_DEX_DRAGALGE, + .categoryName = _("Mock Kelp"), + .height = 18, + .weight = 815, + .description = COMPOUND_STRING( + "Their poison is strong enough to eat\n" + "through the hull of a tanker. Tales are\n" + "told of ships that wander into seas where\n" + "Dragalge live, never to return."), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + FRONT_PIC(Dragalge, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Dragalge, + .frontAnimId = ANIM_FRONT_FLIP, + BACK_PIC(Dragalge, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_H_STRETCH, + PALETTES(Dragalge), + ICON(Dragalge, 5), + .footprint = gMonFootprint_Dragalge, + LEARNSETS(Dragalge), + }, +#endif //P_FAMILY_SKRELP + +#if P_FAMILY_CLAUNCHER + [SPECIES_CLAUNCHER] = + { + .baseHP = 50, + .baseAttack = 53, + .baseDefense = 62, + .baseSpeed = 44, + .baseSpAttack = 58, + .baseSpDefense = 63, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 225, + .expYield = 66, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_MEGA_LAUNCHER, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + .speciesName = _("Clauncher"), + .cryId = CRY_CLAUNCHER, + .natDexNum = NATIONAL_DEX_CLAUNCHER, + .categoryName = _("Water Gun"), + .height = 5, + .weight = 83, + .description = COMPOUND_STRING( + "Through controlled expulsions of internal\n" + "gas, it can expel water like a pistol shot.\n" + "At close distances, it can even shatter\n" + "large rocks."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Clauncher, 56, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Clauncher, + .frontAnimId = ANIM_TIP_MOVE_FORWARD, + BACK_PIC(Clauncher, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Clauncher), + ICON(Clauncher, 0), + .footprint = gMonFootprint_Clauncher, + LEARNSETS(Clauncher), + .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_CLAWITZER}), + }, + + [SPECIES_CLAWITZER] = + { + .baseHP = 71, + .baseAttack = 73, + .baseDefense = 88, + .baseSpeed = 59, + .baseSpAttack = 120, + .baseSpDefense = 89, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 55, + .expYield = 100, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_MEGA_LAUNCHER, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + .speciesName = _("Clawitzer"), + .cryId = CRY_CLAWITZER, + .natDexNum = NATIONAL_DEX_CLAWITZER, + .categoryName = _("Howitzer"), + .height = 13, + .weight = 353, + .description = COMPOUND_STRING( + "By expelling water from the nozzle in the\n" + "back of its enormous claw, it can move\n" + "at a speed of 60 knots. They launch\n" + "cannonballs made of water."), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Clawitzer, 64, 64), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Clawitzer, + .frontAnimId = ANIM_CIRCLE_C_CLOCKWISE_SLOW, + BACK_PIC(Clawitzer, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(Clawitzer), + ICON(Clawitzer, 0), + .footprint = gMonFootprint_Clawitzer, + LEARNSETS(Clawitzer), + }, +#endif //P_FAMILY_CLAUNCHER + +#if P_FAMILY_HELIOPTILE + [SPECIES_HELIOPTILE] = + { + .baseHP = 44, + .baseAttack = 38, + .baseDefense = 33, + .baseSpeed = 70, + .baseSpAttack = 61, + .baseSpDefense = 43, + .types = { TYPE_ELECTRIC, TYPE_NORMAL }, + .catchRate = 190, + .expYield = 58, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_DRY_SKIN, ABILITY_SAND_VEIL, ABILITY_SOLAR_POWER }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Helioptile"), + .cryId = CRY_HELIOPTILE, + .natDexNum = NATIONAL_DEX_HELIOPTILE, + .categoryName = _("Generator"), + .height = 5, + .weight = 60, + .description = COMPOUND_STRING( + "They make their home in deserts.\n" + "They can generate their own energy from\n" + "basking in the sun, so eating food is not\n" + "a requirement."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Helioptile, 40, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Helioptile, + .frontAnimId = ANIM_GLOW_YELLOW, + BACK_PIC(Helioptile, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Helioptile), + ICON(Helioptile, 2), + .footprint = gMonFootprint_Helioptile, + LEARNSETS(Helioptile), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_HELIOLISK}), + }, + + [SPECIES_HELIOLISK] = + { + .baseHP = 62, + .baseAttack = 55, + .baseDefense = 52, + .baseSpeed = 109, + .baseSpAttack = 109, + .baseSpDefense = 94, + .types = { TYPE_ELECTRIC, TYPE_NORMAL }, + .catchRate = 75, + .expYield = 168, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_DRY_SKIN, ABILITY_SAND_VEIL, ABILITY_SOLAR_POWER }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Heliolisk"), + .cryId = CRY_HELIOLISK, + .natDexNum = NATIONAL_DEX_HELIOLISK, + .categoryName = _("Generator"), + .height = 10, + .weight = 210, + .description = COMPOUND_STRING( + "A single Heliolisk can generate sufficient\n" + "electricity to power a skyscraper. It can\n" + "stimulate its muscles with electricity,\n" + "boosting the strength in its legs."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Heliolisk, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Heliolisk, + .frontAnimId = ANIM_RAPID_H_HOPS, + BACK_PIC(Heliolisk, 56, 64), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(Heliolisk), + ICON(Heliolisk, 2), + .footprint = gMonFootprint_Heliolisk, + LEARNSETS(Heliolisk), + }, +#endif //P_FAMILY_HELIOPTILE + +#if P_FAMILY_TYRUNT + [SPECIES_TYRUNT] = + { + .baseHP = 58, + .baseAttack = 89, + .baseDefense = 77, + .baseSpeed = 48, + .baseSpAttack = 45, + .baseSpDefense = 45, + .types = { TYPE_ROCK, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 72, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_STRONG_JAW, ABILITY_NONE, ABILITY_STURDY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Tyrunt"), + .cryId = CRY_TYRUNT, + .natDexNum = NATIONAL_DEX_TYRUNT, + .categoryName = _("Royal Heir"), + .height = 8, + .weight = 260, + .description = COMPOUND_STRING( + "Its immense jaws have enough destructive\n" + "force that it can chew up a car. If\n" + "something happens that it doesn't like,\n" + "it throws a tantrum and runs wild."), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Tyrunt, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Tyrunt, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Tyrunt, 64, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Tyrunt), + ICON(Tyrunt, 2), + .footprint = gMonFootprint_Tyrunt, + LEARNSETS(Tyrunt), + .evolutions = EVOLUTION({EVO_LEVEL_DAY, 39, SPECIES_TYRANTRUM}), + }, + + [SPECIES_TYRANTRUM] = + { + .baseHP = 82, + .baseAttack = 121, + .baseDefense = 119, + .baseSpeed = 71, + .baseSpAttack = 69, + .baseSpDefense = 59, + .types = { TYPE_ROCK, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 182, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_STRONG_JAW, ABILITY_NONE, ABILITY_ROCK_HEAD }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Tyrantrum"), + .cryId = CRY_TYRANTRUM, + .natDexNum = NATIONAL_DEX_TYRANTRUM, + .categoryName = _("Despot"), + .height = 25, + .weight = 2700, + .description = COMPOUND_STRING( + "Thanks to its gargantuan jaws, which could\n" + "shred thick metal plates as if they were\n" + "paper, it was invincible in the ancient\n" + "world it once inhabited."), + .pokemonScale = 257, + .pokemonOffset = 10, + .trainerScale = 423, + .trainerOffset = 8, + FRONT_PIC(Tyrantrum, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Tyrantrum, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Tyrantrum, 64, 56), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, + PALETTES(Tyrantrum), + ICON(Tyrantrum, 0), + .footprint = gMonFootprint_Tyrantrum, + LEARNSETS(Tyrantrum), + }, +#endif //P_FAMILY_TYRUNT + +#if P_FAMILY_AMAURA + [SPECIES_AMAURA] = + { + .baseHP = 77, + .baseAttack = 59, + .baseDefense = 50, + .baseSpeed = 46, + .baseSpAttack = 67, + .baseSpDefense = 63, + .types = { TYPE_ROCK, TYPE_ICE }, + .catchRate = 45, + .expYield = 72, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, + .abilities = { ABILITY_REFRIGERATE, ABILITY_NONE, ABILITY_SNOW_WARNING }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Amaura"), + .cryId = CRY_AMAURA, + .natDexNum = NATIONAL_DEX_AMAURA, + .categoryName = _("Tundra"), + .height = 13, + .weight = 252, + .description = COMPOUND_STRING( + "This ancient Pokémon was restored from\n" + "part of its body that had been frozen in\n" + "ice for over 100 million years. It lived in a\n" + "cold land where there were no predators."), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Amaura, 32, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Amaura, + .frontAnimId = ANIM_CONCAVE_ARC_SMALL_TWICE, + BACK_PIC(Amaura, 40, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Amaura), + ICON(Amaura, 0), + .footprint = gMonFootprint_Amaura, + LEARNSETS(Amaura), + .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 39, SPECIES_AURORUS}), + }, + + [SPECIES_AURORUS] = + { + .baseHP = 123, + .baseAttack = 77, + .baseDefense = 72, + .baseSpeed = 58, + .baseSpAttack = 99, + .baseSpDefense = 92, + .types = { TYPE_ROCK, TYPE_ICE }, + .catchRate = 45, + .expYield = 104, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_MONSTER }, + .abilities = { ABILITY_REFRIGERATE, ABILITY_NONE, ABILITY_SNOW_WARNING }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Aurorus"), + .cryId = CRY_AURORUS, + .natDexNum = NATIONAL_DEX_AURORUS, + .categoryName = _("Tundra"), + .height = 27, + .weight = 2250, + .description = COMPOUND_STRING( + "Using the diamond-shaped crystals on its\n" + "body it can instantly create a wall of ice\n" + "to block an opponent's attack, or encase\n" + "them in ice."), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Aurorus, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Aurorus, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Aurorus, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Aurorus), + ICON(Aurorus, 0), + .footprint = gMonFootprint_Aurorus, + LEARNSETS(Aurorus), + }, +#endif //P_FAMILY_AMAURA + +#if P_FAMILY_HAWLUCHA + [SPECIES_HAWLUCHA] = + { + .baseHP = 78, + .baseAttack = 92, + .baseDefense = 75, + .baseSpeed = 118, + .baseSpAttack = 74, + .baseSpDefense = 63, + .types = { TYPE_FIGHTING, TYPE_FLYING }, + .catchRate = 100, + .expYield = 175, + .evYield_Attack = 2, + .itemRare = ITEM_KINGS_ROCK, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + #if P_UPDATED_EGG_GROUPS >= GEN_8 + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_HUMAN_LIKE }, + #else + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + #endif + .abilities = { ABILITY_LIMBER, ABILITY_UNBURDEN, ABILITY_MOLD_BREAKER }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Hawlucha"), + .cryId = CRY_HAWLUCHA, + .natDexNum = NATIONAL_DEX_HAWLUCHA, + .categoryName = _("Wrestling"), + .height = 8, + .weight = 215, + .description = COMPOUND_STRING( + "With its wings, it controls its position in\n" + "the air. Its proficient fighting skills\n" + "enable it to keep up with big bruisers\n" + "like Machamp and Hariyama."), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Hawlucha, 64, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Hawlucha, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Hawlucha, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(Hawlucha), + ICON(Hawlucha, 0), + .footprint = gMonFootprint_Hawlucha, + LEARNSETS(Hawlucha), + }, +#endif //P_FAMILY_HAWLUCHA + +#if P_FAMILY_DEDENNE + [SPECIES_DEDENNE] = + { + .baseHP = 67, + .baseAttack = 58, + .baseDefense = 57, + .baseSpeed = 101, + .baseSpAttack = 81, + .baseSpDefense = 67, + .types = { TYPE_ELECTRIC, TYPE_FAIRY }, + .catchRate = 180, + .expYield = 151, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_CHEEK_POUCH, ABILITY_PICKUP, ABILITY_PLUS }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Dedenne"), + .cryId = CRY_DEDENNE, + .natDexNum = NATIONAL_DEX_DEDENNE, + .categoryName = _("Antenna"), + .height = 2, + .weight = 22, + .description = COMPOUND_STRING( + "Its whiskers serve as antennas.\n" + "By sending and receiving electrical\n" + "waves, it can communicate with others\n" + "over vast distances."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Dedenne, 64, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Dedenne, + .frontAnimId = ANIM_GLOW_YELLOW, + BACK_PIC(Dedenne, 64, 48), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, + PALETTES(Dedenne), + ICON(Dedenne, 0), + .footprint = gMonFootprint_Dedenne, + LEARNSETS(Dedenne), + }, +#endif //P_FAMILY_DEDENNE + +#if P_FAMILY_CARBINK + [SPECIES_CARBINK] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 150, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 150, + .types = { TYPE_ROCK, TYPE_FAIRY }, + .catchRate = 60, + .expYield = 100, + .evYield_Defense = 1, + .evYield_SpDefense = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_STURDY }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Carbink"), + .cryId = CRY_CARBINK, + .natDexNum = NATIONAL_DEX_CARBINK, + .categoryName = _("Jewel"), + .height = 3, + .weight = 57, + .description = COMPOUND_STRING( + "Born from the high temperatures and\n" + "pressures deep underground, it defends\n" + "itself by firing beams from the jewel part\n" + "of its body."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Carbink, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Carbink, + .frontAnimId = ANIM_ZIGZAG_SLOW, + .enemyMonElevation = 4, + BACK_PIC(Carbink, 56, 56), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_H_VIBRATE, + PALETTES(Carbink), + ICON(Carbink, 2), + .footprint = gMonFootprint_Carbink, + LEARNSETS(Carbink), + }, +#endif //P_FAMILY_CARBINK + +#if P_FAMILY_GOOMY + [SPECIES_GOOMY] = + { + .baseHP = 45, + .baseAttack = 50, + .baseDefense = 35, + .baseSpeed = 40, + .baseSpAttack = 55, + .baseSpDefense = 75, + .types = { TYPE_DRAGON, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 60, + .evYield_SpDefense = 1, + .itemRare = ITEM_SHED_SHELL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_SAP_SIPPER, ABILITY_HYDRATION, ABILITY_GOOEY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Goomy"), + .cryId = CRY_GOOMY, + .natDexNum = NATIONAL_DEX_GOOMY, + .categoryName = _("Soft Tissue"), + .height = 3, + .weight = 28, + .description = COMPOUND_STRING( + "Its source of protection is its slimy,\n" + "germ-laden mucous membrane. Anyone\n" + "who touches it will need some thorough\n" + "hand-washing."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Goomy, 32, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Goomy, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Goomy, 48, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_H_SPRING, + PALETTES(Goomy), + ICON(Goomy, 5), + .footprint = gMonFootprint_Goomy, + LEARNSETS(Goomy), + .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_SLIGGOO}, + {EVO_NONE, 0, SPECIES_SLIGGOO_HISUIAN}), + }, + +#define SLIGGOO_MISC_INFO \ + .catchRate = 45, \ + .expYield = 158, \ + .evYield_SpDefense = 2, \ + .itemRare = ITEM_SHED_SHELL, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 40, \ + .friendship = 35, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON }, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .speciesName = _("Sliggoo"), \ + .cryId = CRY_SLIGGOO, \ + .natDexNum = NATIONAL_DEX_SLIGGOO, \ + .footprint = gMonFootprint_Sliggoo, \ + .formSpeciesIdTable = sSliggooFormSpeciesIdTable + + [SPECIES_SLIGGOO] = + { + SLIGGOO_MISC_INFO, + .baseHP = 68, + .baseAttack = 75, + .baseDefense = 53, + .baseSpeed = 60, + .baseSpAttack = 83, + .baseSpDefense = 113, + .types = { TYPE_DRAGON, TYPE_DRAGON }, + .abilities = { ABILITY_SAP_SIPPER, ABILITY_HYDRATION, ABILITY_GOOEY }, + .categoryName = _("Soft Tissue"), + .height = 8, + .weight = 175, + .description = COMPOUND_STRING( + "This Pokémon's mucous can dissolve\n" + "anything. Toothless, it sprays mucous\n" + "on its prey. Once they're nicely dissolved,\n" + "it slurps them up."), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Sliggoo, 32, 64), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Sliggoo, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Sliggoo, 48, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Sliggoo), + ICON(Sliggoo, 5), + LEARNSETS(Sliggoo), + .evolutions = EVOLUTION({EVO_LEVEL_RAIN, 50, SPECIES_GOODRA}, + {EVO_LEVEL_FOG, 50, SPECIES_GOODRA}), + }, + +#define GOODRA_MISC_INFO \ + .catchRate = 45, \ + .expYield = 270, \ + .evYield_SpDefense = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 40, \ + .friendship = 35, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON }, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .speciesName = _("Goodra"), \ + .cryId = CRY_GOODRA, \ + .natDexNum = NATIONAL_DEX_GOODRA, \ + .footprint = gMonFootprint_Goodra, \ + .formSpeciesIdTable = sGoodraFormSpeciesIdTable + + [SPECIES_GOODRA] = + { + GOODRA_MISC_INFO, + .baseHP = 90, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 80, + .baseSpAttack = 110, + .baseSpDefense = 150, + .types = { TYPE_DRAGON, TYPE_DRAGON }, + .abilities = { ABILITY_SAP_SIPPER, ABILITY_HYDRATION, ABILITY_GOOEY }, + .categoryName = _("Dragon"), + .height = 20, + .weight = 1505, + .description = COMPOUND_STRING( + "It gets picked on because it's meek.\n" + "But then, whoever teased it gets to feel\n" + "the full force of its horns and a good\n" + "swatting from its thick tail."), + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, + FRONT_PIC(Goodra, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Goodra, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Goodra, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Goodra), + ICON(Goodra, 5), + LEARNSETS(Goodra), + }, + +#if P_HISUIAN_FORMS + [SPECIES_SLIGGOO_HISUIAN] = + { + SLIGGOO_MISC_INFO, + .baseHP = 58, + .baseAttack = 75, + .baseDefense = 83, + .baseSpeed = 40, + .baseSpAttack = 83, + .baseSpDefense = 113, + .types = { TYPE_DRAGON, TYPE_STEEL }, + .abilities = { ABILITY_SAP_SIPPER, ABILITY_SHELL_ARMOR, ABILITY_GOOEY }, + .categoryName = _("Snail"), + .height = 7, + .weight = 685, + .description = COMPOUND_STRING( + "A creature given to melancholy.\n" + "Its metallic shell developed as a\n" + "result of the mucus on its skin reacting\n" + "with the iron in Hisui's water."), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(SliggooHisuian, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_SliggooHisuian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SliggooHisuian, 64, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(SliggooHisuian), + ICON(SliggooHisuian, 2), + LEARNSETS(SliggooHisuian), + .isHisuianForm = TRUE, + .evolutions = EVOLUTION({EVO_LEVEL_RAIN, 50, SPECIES_GOODRA_HISUIAN}, + {EVO_LEVEL_FOG, 50, SPECIES_GOODRA_HISUIAN}), + }, + + [SPECIES_GOODRA_HISUIAN] = + { + GOODRA_MISC_INFO, + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 60, + .baseSpAttack = 110, + .baseSpDefense = 150, + .types = { TYPE_DRAGON, TYPE_STEEL }, + .abilities = { ABILITY_SAP_SIPPER, ABILITY_SHELL_ARMOR, ABILITY_GOOEY }, + .categoryName = _("Shell Bunker"), + .height = 17, + .weight = 3341, + .description = COMPOUND_STRING( + "It loathes solitude and is\n" + "extremely clingy-it will fume and run riot if\n" + "those dearest to it ever leave its\n" + "side."), + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, + FRONT_PIC(GoodraHisuian, 56, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_GoodraHisuian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(GoodraHisuian, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(GoodraHisuian), + ICON(GoodraHisuian, 2), + LEARNSETS(GoodraHisuian), + .isHisuianForm = TRUE, + }, +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_GOOMY + +#if P_FAMILY_KLEFKI + [SPECIES_KLEFKI] = + { + .baseHP = 57, + .baseAttack = 80, + .baseDefense = 91, + .baseSpeed = 75, + .baseSpAttack = 80, + .baseSpDefense = 87, + .types = { TYPE_STEEL, TYPE_FAIRY }, + .catchRate = 75, + .expYield = 165, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_PRANKSTER, ABILITY_NONE, ABILITY_MAGICIAN }, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = TRUE, + .speciesName = _("Klefki"), + .cryId = CRY_KLEFKI, + .natDexNum = NATIONAL_DEX_KLEFKI, + .categoryName = _("Key Ring"), + .height = 2, + .weight = 30, + .description = COMPOUND_STRING( + "These key collectors threaten any\n" + "attackers by fiercely jingling their keys\n" + "at them. It will sneak into people's homes\n" + "to steal their keys."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Klefki, 40, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Klefki, + .frontAnimId = ANIM_FOUR_PETAL, + .enemyMonElevation = 5, + BACK_PIC(Klefki, 56, 64), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Klefki), + ICON(Klefki, 0), + .footprint = gMonFootprint_Klefki, + LEARNSETS(Klefki), + }, +#endif //P_FAMILY_KLEFKI + +#if P_FAMILY_PHANTUMP + [SPECIES_PHANTUMP] = + { + .baseHP = 43, + .baseAttack = 70, + .baseDefense = 48, + .baseSpeed = 38, + .baseSpAttack = 50, + .baseSpDefense = 60, + .types = { TYPE_GHOST, TYPE_GRASS }, + .catchRate = 120, + .expYield = 62, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_NATURAL_CURE, ABILITY_FRISK, ABILITY_HARVEST }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Phantump"), + .cryId = CRY_PHANTUMP, + .natDexNum = NATIONAL_DEX_PHANTUMP, + .categoryName = _("Stump"), + .height = 4, + .weight = 70, + .description = COMPOUND_STRING( + "According to legend, medicine to cure\n" + "any illness can be made by plucking the\n" + "green leaves on its head, brewing them,\n" + "and boiling down the liquid."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Phantump, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Phantump, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 5, + BACK_PIC(Phantump, 64, 56), + .backPicYOffset = 9, + .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + PALETTES(Phantump), + ICON(Phantump, 1), + .footprint = gMonFootprint_Phantump, + LEARNSETS(Phantump), + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_TREVENANT}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_TREVENANT}), + }, + + [SPECIES_TREVENANT] = + { + .baseHP = 85, + .baseAttack = 110, + .baseDefense = 76, + .baseSpeed = 56, + .baseSpAttack = 65, + .baseSpDefense = 82, + .types = { TYPE_GHOST, TYPE_GRASS }, + .catchRate = 60, + .expYield = 166, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_NATURAL_CURE, ABILITY_FRISK, ABILITY_HARVEST }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Trevenant"), + .cryId = CRY_TREVENANT, + .natDexNum = NATIONAL_DEX_TREVENANT, + .categoryName = _("Elder Tree"), + .height = 15, + .weight = 710, + .description = COMPOUND_STRING( + "Through its roots, it exerts control over\n" + "other trees. A deadly curse falls upon\n" + "anyone cutting down trees in forests\n" + "where Trevenant dwell."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(Trevenant, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Trevenant, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(Trevenant, 64, 64), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Trevenant), + ICON(Trevenant, 1), + .footprint = gMonFootprint_Trevenant, + LEARNSETS(Trevenant), + }, +#endif //P_FAMILY_PHANTUMP + +#if P_FAMILY_PUMPKABOO +#define PUMPKABOO_MISC_INFO \ + .types = { TYPE_GHOST, TYPE_GRASS }, \ + .catchRate = 120, \ + .expYield = 67, \ + .evYield_Defense = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, \ + .abilities = { ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA }, \ + .bodyColor = BODY_COLOR_BROWN, \ + .speciesName = _("Pumpkaboo"), \ + .natDexNum = NATIONAL_DEX_PUMPKABOO, \ + .categoryName = _("Pumpkin"), \ + .frontAnimFrames = sAnims_Pumpkaboo, \ + .frontAnimId = ANIM_V_SLIDE_WOBBLE, \ + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, \ + PALETTES(Pumpkaboo), \ + ICON(Pumpkaboo, 2), \ + .footprint = gMonFootprint_Pumpkaboo, \ + LEARNSETS(Pumpkaboo), \ + .formSpeciesIdTable = sPumpkabooFormSpeciesIdTable + + [SPECIES_PUMPKABOO_AVERAGE] = + { + PUMPKABOO_MISC_INFO, + .baseHP = 49, + .baseAttack = 66, + .baseDefense = 70, + .baseSpeed = 51, + .baseSpAttack = 44, + .baseSpDefense = 55, + .cryId = CRY_PUMPKABOO, + .height = 4, + .weight = 50, + .description = COMPOUND_STRING( + "The light that streams out from\n" + "the holes in the pumpkin can\n" + "hypnotize and control the people and\n" + "Pokémon that see it."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(PumpkabooAverage, 40, 40), + .frontPicYOffset = 13, + BACK_PIC(PumpkabooAverage, 56, 48), + .backPicYOffset = 13, + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOURGEIST_AVERAGE}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_AVERAGE}), + }, + + [SPECIES_PUMPKABOO_SMALL] = + { + PUMPKABOO_MISC_INFO, + .baseHP = 44, + .baseAttack = 66, + .baseDefense = 70, + .baseSpeed = 56, + .baseSpAttack = 44, + .baseSpDefense = 55, + .cryId = CRY_PUMPKABOO, + .height = 3, + .weight = 35, + .description = COMPOUND_STRING( + "When taking spirits to the\n" + "afterlife, small Pumpkaboo prefer the\n" + "spirits of children to those of adults."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(PumpkabooSmall, 40, 40), + .frontPicYOffset = 15, + BACK_PIC(PumpkabooSmall, 56, 48), + .backPicYOffset = 14, + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOURGEIST_SMALL}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_SMALL}), + }, + + [SPECIES_PUMPKABOO_LARGE] = + { + PUMPKABOO_MISC_INFO, + .baseHP = 54, + .baseAttack = 66, + .baseDefense = 70, + .baseSpeed = 46, + .baseSpAttack = 44, + .baseSpDefense = 55, + .cryId = CRY_PUMPKABOO, + .height = 5, + .weight = 75, + .description = COMPOUND_STRING( + "When taking spirits to the\n" + "afterlife, large Pumpkaboo prefer the\n" + "spirits of adults to those of children."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(PumpkabooLarge, 48, 48), + .frontPicYOffset = 12, + BACK_PIC(PumpkabooLarge, 56, 48), + .backPicYOffset = 13, + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOURGEIST_LARGE}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_LARGE}), + }, + + [SPECIES_PUMPKABOO_SUPER] = + { + PUMPKABOO_MISC_INFO, + .baseHP = 59, + .baseAttack = 66, + .baseDefense = 70, + .baseSpeed = 41, + .baseSpAttack = 44, + .baseSpDefense = 55, + .itemCommon = ITEM_MIRACLE_SEED, + .itemRare = ITEM_MIRACLE_SEED, + .cryId = CRY_PUMPKABOO_SUPER, + .height = 8, + .weight = 150, + .description = COMPOUND_STRING( + "Supersized Pumpkaboo are very\n" + "partial to the spirits of people who\n" + "were of similarly superior proportions."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(PumpkabooSuper, 48, 48), + .frontPicYOffset = 10, + BACK_PIC(PumpkabooSuper, 56, 48), + .backPicYOffset = 12, + .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GOURGEIST_SUPER}, + {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOURGEIST_SUPER}), + }, + +#define GOURGEIST_MISC_INFO \ + .types = { TYPE_GHOST, TYPE_GRASS }, \ + .catchRate = 60, \ + .expYield = 173, \ + .evYield_Defense = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, \ + .abilities = { ABILITY_PICKUP, ABILITY_FRISK, ABILITY_INSOMNIA }, \ + .bodyColor = BODY_COLOR_BROWN, \ + .speciesName = _("Gourgeist"), \ + .natDexNum = NATIONAL_DEX_GOURGEIST, \ + .categoryName = _("Pumpkin"), \ + .frontAnimFrames = sAnims_Gourgeist, \ + .frontAnimId = ANIM_SHRINK_GROW, \ + .backAnimId = BACK_ANIM_V_STRETCH, \ + PALETTES(Gourgeist), \ + ICON(Gourgeist, 2), \ + .footprint = gMonFootprint_Gourgeist, \ + LEARNSETS(Gourgeist), \ + .formSpeciesIdTable = sGourgeistFormSpeciesIdTable + + [SPECIES_GOURGEIST_AVERAGE] = + { + GOURGEIST_MISC_INFO, + .baseHP = 65, + .baseAttack = 90, + .baseDefense = 122, + .baseSpeed = 84, + .baseSpAttack = 58, + .baseSpDefense = 75, + .cryId = CRY_GOURGEIST, + .height = 9, + .weight = 125, + .description = COMPOUND_STRING( + "Eerie cries emanate from its body\n" + "in the dead of night. The sounds are\n" + "said to be the wails of spirits who\n" + "are suffering in the afterlife."), + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(GourgeistAverage, 64, 64), + .frontPicYOffset = 4, + BACK_PIC(GourgeistAverage, 48, 64), + .backPicYOffset = 3, + }, + + [SPECIES_GOURGEIST_SMALL] = + { + GOURGEIST_MISC_INFO, + .baseHP = 55, + .baseAttack = 85, + .baseDefense = 122, + .baseSpeed = 99, + .baseSpAttack = 58, + .baseSpDefense = 75, + .cryId = CRY_GOURGEIST, + .height = 7, + .weight = 95, + .description = COMPOUND_STRING( + "A small-sized Pumpkaboo evolves\n" + "into a small-sized Gourgeist. Its\n" + "bodily proportions also get passed on\n" + "to its descendants."), + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(GourgeistSmall, 56, 64), + .frontPicYOffset = 5, + BACK_PIC(GourgeistSmall, 48, 56), + .backPicYOffset = 4, + }, + + [SPECIES_GOURGEIST_LARGE] = + { + GOURGEIST_MISC_INFO, + .baseHP = 75, + .baseAttack = 95, + .baseDefense = 122, + .baseSpeed = 69, + .baseSpAttack = 58, + .baseSpDefense = 75, + .cryId = CRY_GOURGEIST, + .height = 11, + .weight = 140, + .description = COMPOUND_STRING( + "A large-sized Pumpkaboo evolves\n" + "into a large-sized Gourgeist. Its\n" + "bodily proportions also get passed on\n" + "to its descendants."), + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(GourgeistLarge, 64, 64), + .frontPicYOffset = 2, + BACK_PIC(GourgeistLarge, 48, 64), + .backPicYOffset = 2, + }, + + [SPECIES_GOURGEIST_SUPER] = + { + GOURGEIST_MISC_INFO, + .baseHP = 85, + .baseAttack = 100, + .baseDefense = 122, + .baseSpeed = 54, + .baseSpAttack = 58, + .baseSpDefense = 75, + .itemCommon = ITEM_MIRACLE_SEED, + .itemRare = ITEM_MIRACLE_SEED, + .cryId = CRY_GOURGEIST_SUPER, + .height = 17, + .weight = 390, + .description = COMPOUND_STRING( + "A supersized Pumpkaboo evolves\n" + "into a supersized Gourgeist. Its\n" + "bodily proportions also get passed on to\n" + "its descendants."), + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(GourgeistSuper, 64, 64), + .frontPicYOffset = 0, + BACK_PIC(GourgeistSuper, 56, 64), + .backPicYOffset = 1, + }, +#endif //P_FAMILY_PUMPKABOO + +#if P_FAMILY_BERGMITE +#if P_UPDATED_EGG_GROUPS >= GEN_8 + #define BERGMITE_EGG_GROUPS {EGG_GROUP_MONSTER, EGG_GROUP_MINERAL } +#else + #define BERGMITE_EGG_GROUPS {EGG_GROUP_MONSTER, EGG_GROUP_MONSTER } +#endif + + [SPECIES_BERGMITE] = + { + .baseHP = 55, + .baseAttack = 69, + .baseDefense = 85, + .baseSpeed = 28, + .baseSpAttack = 32, + .baseSpDefense = 35, + .types = { TYPE_ICE, TYPE_ICE }, + .catchRate = 190, + .expYield = 61, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = BERGMITE_EGG_GROUPS, + .abilities = { ABILITY_OWN_TEMPO, ABILITY_ICE_BODY, ABILITY_STURDY }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Bergmite"), + .cryId = CRY_BERGMITE, + .natDexNum = NATIONAL_DEX_BERGMITE, + .categoryName = _("Ice Chunk"), + .height = 10, + .weight = 995, + .description = COMPOUND_STRING( + "It blocks opponents' attacks with the ice\n" + "that shields its body. It uses cold air to\n" + "repair any cracks with new ice. They live\n" + "in herds on snowy mountains."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Bergmite, 40, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Bergmite, + .frontAnimId = ANIM_LUNGE_GROW, + BACK_PIC(Bergmite, 56, 48), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Bergmite), + ICON(Bergmite, 0), + .footprint = gMonFootprint_Bergmite, + LEARNSETS(Bergmite), + .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_AVALUGG}, + {EVO_NONE, 0, SPECIES_AVALUGG_HISUIAN}), + }, + +#define AVALUGG_MISC_INFO \ + .catchRate = 55, \ + .expYield = 180, \ + .evYield_Defense = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = BERGMITE_EGG_GROUPS, \ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Avalugg"), \ + .cryId = CRY_AVALUGG, \ + .natDexNum = NATIONAL_DEX_AVALUGG, \ + .categoryName = _("Iceberg"), \ + .footprint = gMonFootprint_Avalugg, \ + .formSpeciesIdTable = sAvaluggFormSpeciesIdTable + + [SPECIES_AVALUGG] = + { + AVALUGG_MISC_INFO, + .baseHP = 95, + .baseAttack = 117, + .baseDefense = 184, + .baseSpeed = 28, + .baseSpAttack = 44, + .baseSpDefense = 46, + .types = { TYPE_ICE, TYPE_ICE }, + .abilities = { ABILITY_OWN_TEMPO, ABILITY_ICE_BODY, ABILITY_STURDY }, + .height = 20, + .weight = 5050, + .description = COMPOUND_STRING( + "The way several Bergmite huddle on its\n" + "back make it look like an aircraft carrier\n" + "made of ice. Its cumbersome frame crushes\n" + "anything that stands in its way.") +, + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, + FRONT_PIC(Avalugg, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Avalugg, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Avalugg, 64, 40), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(Avalugg), + ICON(Avalugg, 0), + LEARNSETS(Avalugg), + }, + +#if P_HISUIAN_FORMS + [SPECIES_AVALUGG_HISUIAN] = + { + AVALUGG_MISC_INFO, + .baseHP = 95, + .baseAttack = 127, + .baseDefense = 184, + .baseSpeed = 38, + .baseSpAttack = 34, + .baseSpDefense = 36, + .types = { TYPE_ICE, TYPE_ROCK }, + .abilities = { ABILITY_STRONG_JAW, ABILITY_ICE_BODY, ABILITY_STURDY }, + .height = 14, + .weight = 2624, + .description = COMPOUND_STRING( + "The armor of ice covering its lower\n" + "jaw puts steel to shame and can\n" + "shatter rocks with ease."), + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, + FRONT_PIC(AvaluggHisuian, 64, 48), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_AvaluggHisuian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(AvaluggHisuian, 64, 32), + .backPicYOffset = 16, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(AvaluggHisuian), + ICON(AvaluggHisuian, 5), + LEARNSETS(AvaluggHisuian), + .isHisuianForm = TRUE, + }, +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_BERGMITE + +#if P_FAMILY_NOIBAT + [SPECIES_NOIBAT] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 35, + .baseSpeed = 55, + .baseSpAttack = 45, + .baseSpDefense = 40, + .types = { TYPE_FLYING, TYPE_DRAGON }, + .catchRate = 190, + .expYield = 49, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + #if P_UPDATED_EGG_GROUPS >= GEN_8 + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON }, + #else + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + #endif + .abilities = { ABILITY_FRISK, ABILITY_INFILTRATOR, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Noibat"), + .cryId = CRY_NOIBAT, + .natDexNum = NATIONAL_DEX_NOIBAT, + .categoryName = _("Sound Wave"), + .height = 5, + .weight = 80, + .description = COMPOUND_STRING( + "They live in pitch-black caves. Even a\n" + "robust wrestler will become dizzy and\n" + "unable to stand when exposed to its\n" + "200,000-hertz ultrasonic waves."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Noibat, 64, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Noibat, + .frontAnimId = ANIM_RISING_WOBBLE, + .enemyMonElevation = 8, + BACK_PIC(Noibat, 56, 64), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_TRIANGLE_DOWN, + PALETTES(Noibat), + ICON(Noibat, 2), + .footprint = gMonFootprint_Noibat, + LEARNSETS(Noibat), + .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_NOIVERN}), + }, + + [SPECIES_NOIVERN] = + { + .baseHP = 85, + .baseAttack = 70, + .baseDefense = 80, + .baseSpeed = 123, + .baseSpAttack = 97, + .baseSpDefense = 80, + .types = { TYPE_FLYING, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 187, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + #if P_UPDATED_EGG_GROUPS >= GEN_8 + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_DRAGON }, + #else + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + #endif + .abilities = { ABILITY_FRISK, ABILITY_INFILTRATOR, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Noivern"), + .cryId = CRY_NOIVERN, + .natDexNum = NATIONAL_DEX_NOIVERN, + .categoryName = _("Sound Wave"), + .height = 15, + .weight = 850, + .description = COMPOUND_STRING( + "They fly around on moonless nights and\n" + "attack careless prey. The ultrasonic waves\n" + "it emits from its ears can reduce a large\n" + "boulder to pebbles."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(Noivern, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Noivern, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Noivern, 64, 64), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_JOLT_RIGHT, + PALETTES(Noivern), + ICON(Noivern, 2), + .footprint = gMonFootprint_Noivern, + LEARNSETS(Noivern), + }, +#endif //P_FAMILY_NOIBAT + +#if P_FAMILY_XERNEAS +#define XERNEAS_MISC_INFO(Form) \ + { \ + .baseHP = 126, \ + .baseAttack = 131, \ + .baseDefense = 95, \ + .baseSpeed = 99, \ + .baseSpAttack = 131, \ + .baseSpDefense = 98, \ + .types = { TYPE_FAIRY, TYPE_FAIRY }, \ + .catchRate = 45, \ + .expYield = 306, \ + .evYield_HP = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ABILITY_FAIRY_AURA, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Xerneas"), \ + .cryId = CRY_XERNEAS, \ + .natDexNum = NATIONAL_DEX_XERNEAS, \ + .categoryName = _("Life"), \ + .height = 30, \ + .weight = 2150, \ + .description = gXerneasPokedexText, \ + .pokemonScale = 275, \ + .pokemonOffset = 7, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + FRONT_PIC(Xerneas##Form, 64, 64), \ + .frontPicYOffset = 0, \ + .frontAnimFrames = sAnims_Xerneas, \ + .frontAnimId = ANIM_GROW_VIBRATE, \ + BACK_PIC(Xerneas##Form, 64, 64), \ + .backPicYOffset = 0, \ + .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, \ + PALETTES(Xerneas##Form), \ + ICON(Xerneas##Form, 0), \ + .footprint = gMonFootprint_Xerneas, \ + LEARNSETS(Xerneas), \ + .formSpeciesIdTable = sXerneasFormSpeciesIdTable, \ + .formChangeTable = sXerneasFormChangeTable, \ + .isLegendary = TRUE, \ + } + + [SPECIES_XERNEAS_NEUTRAL] = XERNEAS_MISC_INFO(Neutral), + [SPECIES_XERNEAS_ACTIVE] = XERNEAS_MISC_INFO(Active), +#endif //P_FAMILY_XERNEAS + +#if P_FAMILY_YVELTAL + [SPECIES_YVELTAL] = + { + .baseHP = 126, + .baseAttack = 131, + .baseDefense = 95, + .baseSpeed = 99, + .baseSpAttack = 131, + .baseSpDefense = 98, + .types = { TYPE_DARK, TYPE_FLYING }, + .catchRate = 45, + .expYield = 306, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_DARK_AURA, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .isLegendary = TRUE, + .speciesName = _("Yveltal"), + .cryId = CRY_YVELTAL, + .natDexNum = NATIONAL_DEX_YVELTAL, + .categoryName = _("Destruction"), + .height = 58, + .weight = 2030, + .description = COMPOUND_STRING( + "When its life comes to an end, its wings\n" + "and tail spread wide and glow red, and\n" + "it absorbs the life energy of every living\n" + "thing and turns into a cocoon."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 360, + .trainerOffset = 7, + FRONT_PIC(Yveltal, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Yveltal, + .frontAnimId = ANIM_FRONT_FLIP, + .enemyMonElevation = 5, + BACK_PIC(Yveltal, 64, 48), + .backPicYOffset = 10, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Yveltal), + ICON(Yveltal, 0), + .footprint = gMonFootprint_Yveltal, + LEARNSETS(Yveltal), + }, +#endif //P_FAMILY_YVELTAL + +#if P_FAMILY_ZYGARDE +#define ZYGARDE_MISC_INFO(ability) \ + .types = { TYPE_DRAGON, TYPE_GROUND }, \ + .catchRate = 3, \ + .evYield_HP = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ability, ABILITY_NONE }, \ + .noFlip = TRUE, \ + .speciesName = _("Zygarde"), \ + .natDexNum = NATIONAL_DEX_ZYGARDE, \ + .categoryName = _("Order"), \ + .footprint = gMonFootprint_Zygarde, \ + LEARNSETS(Zygarde), \ + .formSpeciesIdTable = sZygardeFormSpeciesIdTable, \ + .isLegendary = TRUE + +#define ZYGARDE_50_SPECIES_INFO(ability) \ + { \ + .baseHP = 108, \ + .baseAttack = 100, \ + .baseDefense = 121, \ + .baseSpeed = 95, \ + .baseSpAttack = 81, \ + .baseSpDefense = 95, \ + .expYield = 270, \ + .bodyColor = BODY_COLOR_GREEN, \ + .cryId = CRY_ZYGARDE_50, \ + .height = 50, \ + .weight = 3050, \ + .description = gZygarde50PokedexText, \ + .pokemonScale = 256, \ + .pokemonOffset = 0, \ + .trainerScale = 721, \ + .trainerOffset = 19, \ + FRONT_PIC(Zygarde50, 64, 64), \ + .frontPicYOffset = 0, \ + .frontAnimFrames = sAnims_Zygarde50, \ + .frontAnimId = ANIM_TIP_MOVE_FORWARD, \ + BACK_PIC(Zygarde50, 64, 64), \ + .backPicYOffset = 4, \ + .backAnimId = (ability == ABILITY_POWER_CONSTRUCT \ + ? BACK_ANIM_SHAKE_GLOW_GREEN \ + : BACK_ANIM_V_STRETCH), \ + PALETTES(Zygarde50), \ + ICON(Zygarde50, 1), \ + .formChangeTable = (ability == ABILITY_POWER_CONSTRUCT \ + ? sZygarde50PowerConstructFormChangeTable \ + : sZygarde50AuraBreakFormChangeTable), \ + ZYGARDE_MISC_INFO(ability), \ + } + +#define ZYGARDE_10_SPECIES_INFO(ability) \ + { \ + .baseHP = 54, \ + .baseAttack = 100, \ + .baseDefense = 71, \ + .baseSpeed = 115, \ + .baseSpAttack = 61, \ + .baseSpDefense = 85, \ + .expYield = 219, \ + .bodyColor = BODY_COLOR_BLACK, \ + .cryId = CRY_ZYGARDE_10, \ + .height = 12, \ + .weight = 335, \ + .description = gZygarde10PokedexText, \ + .pokemonScale = 256, \ + .pokemonOffset = 0, \ + .trainerScale = 721, \ + .trainerOffset = 19, \ + FRONT_PIC(Zygarde10, 56, 64), \ + .frontPicYOffset = 2, \ + .frontAnimFrames = sAnims_Zygarde10, \ + BACK_PIC(Zygarde10, 64, 56), \ + .backPicYOffset = 8, \ + .backAnimId = (ability == ABILITY_POWER_CONSTRUCT \ + ? BACK_ANIM_SHAKE_GLOW_GREEN \ + : BACK_ANIM_JOLT_RIGHT), \ + PALETTES(Zygarde10), \ + ICON(Zygarde10, 1), \ + .formChangeTable = (ability == ABILITY_POWER_CONSTRUCT \ + ? sZygarde10PowerConstructFormChangeTable \ + : sZygarde10AuraBreakFormChangeTable), \ + ZYGARDE_MISC_INFO(ability), \ + } + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + + [SPECIES_ZYGARDE_50_AURA_BREAK] = ZYGARDE_50_SPECIES_INFO(ABILITY_AURA_BREAK), + [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = ZYGARDE_50_SPECIES_INFO(ABILITY_POWER_CONSTRUCT), + [SPECIES_ZYGARDE_10_AURA_BREAK] = ZYGARDE_10_SPECIES_INFO(ABILITY_AURA_BREAK), + [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = ZYGARDE_10_SPECIES_INFO(ABILITY_POWER_CONSTRUCT), + [SPECIES_ZYGARDE_COMPLETE] = + { + ZYGARDE_MISC_INFO(ABILITY_POWER_CONSTRUCT), + .baseHP = 216, + .baseAttack = 100, + .baseDefense = 121, + .baseSpeed = 85, + .baseSpAttack = 91, + .baseSpDefense = 95, + .expYield = 319, + .bodyColor = BODY_COLOR_BLACK, + .cryId = CRY_ZYGARDE_COMPLETE, + .height = 45, + .weight = 6100, + .description = COMPOUND_STRING( + "This is Zygarde's perfected form.\n" + "From the orifice on its chest, it\n" + "radiates high-powered energy that\n" + "eliminates everything."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 721, + .trainerOffset = 19, + FRONT_PIC(ZygardeComplete, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_ZygardeComplete, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(ZygardeComplete, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, + PALETTES(ZygardeComplete), + ICON(ZygardeComplete, 1), + .formChangeTable = sZygardeCompleteFormChangeTable, + }, +#endif //P_FAMILY_ZYGARDE + +#if P_FAMILY_DIANCIE +#define DIANCE_MISC_INFO \ + .types = { TYPE_ROCK, TYPE_FAIRY }, \ + .catchRate = 3, \ + .evYield_Defense = 1, \ + .evYield_SpDefense = 2, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .bodyColor = BODY_COLOR_PINK, \ + .speciesName = _("Diancie"), \ + .natDexNum = NATIONAL_DEX_DIANCIE, \ + .categoryName = _("Jewel"), \ + .footprint = gMonFootprint_Diancie, \ + LEARNSETS(Diancie), \ + .formSpeciesIdTable = sDiancieFormSpeciesIdTable, \ + .formChangeTable = sDiancieFormChangeTable, \ + .isMythical = TRUE + + [SPECIES_DIANCIE] = + { + DIANCE_MISC_INFO, + .baseHP = 50, + .baseAttack = 100, + .baseDefense = 150, + .baseSpeed = 50, + .baseSpAttack = 100, + .baseSpDefense = 150, + .expYield = 270, + .abilities = { ABILITY_CLEAR_BODY, ABILITY_NONE }, + .cryId = CRY_DIANCIE, + .height = 7, + .weight = 88, + .description = COMPOUND_STRING( + "A sudden transformation of Carbink,\n" + "its pink, glimmering body is said to be\n" + "the loveliest sight in the whole world.\n" + "It creates diamonds between its hands."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Diancie, 40, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Diancie, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Diancie, 64, 64), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, + PALETTES(Diancie), + ICON(Diancie, 1), + }, + +#if P_MEGA_EVOLUTIONS + [SPECIES_DIANCIE_MEGA] = + { + DIANCE_MISC_INFO, + .baseHP = 50, + .baseAttack = 160, + .baseDefense = 110, + .baseSpeed = 110, + .baseSpAttack = 160, + .baseSpDefense = 110, + .expYield = 315, + .abilities = { ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE }, + .cryId = CRY_DIANCIE_MEGA, + .height = 11, + .weight = 278, + .description = COMPOUND_STRING( + ""), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(DiancieMega, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_DiancieMega, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(DiancieMega, 64, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(DiancieMega), + ICON(DiancieMega, 0), + .isMegaEvolution = TRUE, + }, +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_DIANCIE + +#if P_FAMILY_HOOPA +#define HOOPA_MISC_INFO \ + .catchRate = 3, \ + .expYield = 270, \ + .evYield_SpAttack = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ABILITY_MAGICIAN, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .speciesName = _("Hoopa"), \ + .natDexNum = NATIONAL_DEX_HOOPA, \ + .footprint = gMonFootprint_Hoopa, \ + .formSpeciesIdTable = sHoopaFormSpeciesIdTable, \ + .formChangeTable = sHoopaFormChangeTable, \ + .isMythical = TRUE + + [SPECIES_HOOPA_CONFINED] = + { + HOOPA_MISC_INFO, + .baseHP = 80, + .baseAttack = 110, + .baseDefense = 60, + .baseSpeed = 70, + .baseSpAttack = 150, + .baseSpDefense = 130, + .types = { TYPE_PSYCHIC, TYPE_GHOST }, + .friendship = 100, + .cryId = CRY_HOOPA_CONFINED, + .categoryName = _("Mischief"), + .height = 5, + .weight = 90, + .description = COMPOUND_STRING( + "In its true form, it possess a huge amount\n" + "of power. When its powers are sealed away,\n" + "it is transformed into a much smaller form.\n" + "It teleports things to a secret place."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(HoopaConfined, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_HoopaConfined, + .frontAnimId = ANIM_ZIGZAG_SLOW, + .enemyMonElevation = 13, + BACK_PIC(HoopaConfined, 64, 56), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(HoopaConfined), + ICON(HoopaConfined, 0), + LEARNSETS(HoopaConfined), + }, + + [SPECIES_HOOPA_UNBOUND] = + { + HOOPA_MISC_INFO, + .baseHP = 80, + .baseAttack = 160, + .baseDefense = 60, + .baseSpeed = 80, + .baseSpAttack = 170, + .baseSpDefense = 130, + .types = { TYPE_PSYCHIC, TYPE_DARK }, + .friendship = P_UPDATED_FRIENDSHIP >= GEN_8 ? STANDARD_FRIENDSHIP : 100, + .cryId = CRY_HOOPA_UNBOUND, + .categoryName = _("Djinn"), + .height = 65, + .weight = 490, + .description = COMPOUND_STRING( + ""), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(HoopaUnbound, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_HoopaUnbound, + .frontAnimId = ANIM_GROW_IN_STAGES, + .enemyMonElevation = 3, + BACK_PIC(HoopaUnbound, 64, 64), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_V_SHAKE_LOW, + PALETTES(HoopaUnbound), + ICON(HoopaUnbound, 0), + LEARNSETS(HoopaUnbound), + }, +#endif //P_FAMILY_HOOPA + +#if P_FAMILY_VOLCANION + [SPECIES_VOLCANION] = + { + .baseHP = 80, + .baseAttack = 110, + .baseDefense = 120, + .baseSpeed = 70, + .baseSpAttack = 130, + .baseSpDefense = 90, + .types = { TYPE_FIRE, TYPE_WATER }, + .catchRate = 3, + .expYield = 270, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_WATER_ABSORB, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .isMythical = TRUE, + .speciesName = _("Volcanion"), + .cryId = CRY_VOLCANION, + .natDexNum = NATIONAL_DEX_VOLCANION, + .categoryName = _("Steam"), + .height = 17, + .weight = 1950, + .description = COMPOUND_STRING( + "It lets out billows of steam from the arms\n" + "on its back and disappears into the dense\n" + "fog. It's said to live in mountains where\n" + "humans do not tread."), + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 1, + FRONT_PIC(Volcanion, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Volcanion, + .frontAnimId = ANIM_V_SHAKE_TWICE, + BACK_PIC(Volcanion, 64, 64), + .backPicYOffset = 3, + .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, + PALETTES(Volcanion), + ICON(Volcanion, 0), + .footprint = gMonFootprint_Volcanion, + LEARNSETS(Volcanion), + }, +#endif //P_FAMILY_VOLCANION + +#ifdef __INTELLISENSE__ +}; +#endif \ No newline at end of file diff --git a/src/data/pokemon/species_info/gen_7.h b/src/data/pokemon/species_info/gen_7.h new file mode 100644 index 0000000000..f9496af08a --- /dev/null +++ b/src/data/pokemon/species_info/gen_7.h @@ -0,0 +1,4840 @@ +#ifdef __INTELLISENSE__ +const struct SpeciesInfo gSpeciesInfoGen7[] = +{ +#endif + +#if P_FAMILY_ROWLET + [SPECIES_ROWLET] = + { + .baseHP = 68, + .baseAttack = 55, + .baseDefense = 55, + .baseSpeed = 42, + .baseSpAttack = 50, + .baseSpDefense = 50, + .types = { TYPE_GRASS, TYPE_FLYING }, + .catchRate = 45, + .expYield = 64, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LONG_REACH }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Rowlet"), + .cryId = CRY_ROWLET, + .natDexNum = NATIONAL_DEX_ROWLET, + .categoryName = _("Grass Quill"), + .height = 3, + .weight = 15, + .description = COMPOUND_STRING( + "This wary Pokémon uses photosynthesis\n" + "to store up energy during the day, while\n" + "becoming active at night. Silently it\n" + "glides, drawing near to its target."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Rowlet, 31, 37), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Rowlet, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + BACK_PIC(Rowlet, 43, 36), + .backPicYOffset = 15, + .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, + PALETTES(Rowlet), + ICON(Rowlet, 0), + .footprint = gMonFootprint_Rowlet, + LEARNSETS(Rowlet), + .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_DARTRIX}), + }, + + [SPECIES_DARTRIX] = + { + .baseHP = 78, + .baseAttack = 75, + .baseDefense = 75, + .baseSpeed = 52, + .baseSpAttack = 70, + .baseSpDefense = 70, + .types = { TYPE_GRASS, TYPE_FLYING }, + .catchRate = 45, + .expYield = 147, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LONG_REACH }, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = TRUE, + .speciesName = _("Dartrix"), + .cryId = CRY_DARTRIX, + .natDexNum = NATIONAL_DEX_DARTRIX, + .categoryName = _("Blade Quill"), + .height = 7, + .weight = 160, + .description = COMPOUND_STRING( + "A bit of a dandy, it spends its free time\n" + "preening its wings. Its preoccupation\n" + "with any dirt on its plumage can leave\n" + "it unable to battle."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Dartrix, 34, 47), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Dartrix, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Dartrix, 56, 54), + .backPicYOffset = 4, + .backAnimId = BACK_ANIM_V_STRETCH, + PALETTES(Dartrix), + ICON(Dartrix, 1), + .footprint = gMonFootprint_Dartrix, + LEARNSETS(Dartrix), + .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_DECIDUEYE}, + {EVO_NONE, 0, SPECIES_DECIDUEYE_HISUIAN}), + }, + +#define DECIDUEYE_MISC_INFO \ + .catchRate = 45, \ + .expYield = 239, \ + .evYield_Attack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, \ + .bodyColor = BODY_COLOR_BROWN, \ + .speciesName = _("Decidueye"), \ + .cryId = CRY_DECIDUEYE, \ + .natDexNum = NATIONAL_DEX_DECIDUEYE, \ + .categoryName = _("Arrow Quill"), \ + .height = 16, \ + .pokemonScale = 259, \ + .pokemonOffset = 1, \ + .trainerScale = 296, \ + .trainerOffset = 1, \ + .footprint = gMonFootprint_Decidueye, \ + .formSpeciesIdTable = sDecidueyeFormSpeciesIdTable + + [SPECIES_DECIDUEYE] = + { + DECIDUEYE_MISC_INFO, + .baseHP = 78, + .baseAttack = 107, + .baseDefense = 75, + .baseSpeed = 70, + .baseSpAttack = 100, + .baseSpDefense = 100, + .types = { TYPE_GRASS, TYPE_GHOST }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LONG_REACH }, + .weight = 366, + .description = COMPOUND_STRING( + "Decidueye is cool and cautious.\n" + "It fires arrow quills from its wings with\n" + "such precision, they can pierce a pebble\n" + "at distances of over a hundred yards."), + FRONT_PIC(Decidueye, 45, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Decidueye, + .frontAnimId = ANIM_SHRINK_GROW_VIBRATE_FAST, + BACK_PIC(Decidueye, 46, 62), + .backPicYOffset = 0, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Decidueye), + ICON(Decidueye, 1), + LEARNSETS(Decidueye), + }, + +#if P_HISUIAN_FORMS + [SPECIES_DECIDUEYE_HISUIAN] = + { + DECIDUEYE_MISC_INFO, + .baseHP = 88, + .baseAttack = 112, + .baseDefense = 80, + .baseSpeed = 60, + .baseSpAttack = 95, + .baseSpDefense = 95, + .types = { TYPE_GRASS, TYPE_FIGHTING }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_SCRAPPY }, + .weight = 370, + .description = COMPOUND_STRING( + "The air stored inside the rachises\n" + "of Decidueye's feathers insulates\n" + "the Pokémon against Hisui's extreme\n" + "cold."), + FRONT_PIC(DecidueyeHisuian, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_DecidueyeHisuian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(DecidueyeHisuian, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(DecidueyeHisuian), + ICON(DecidueyeHisuian, 0), + LEARNSETS(DecidueyeHisuian), + .isHisuianForm = TRUE, + }, +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_ROWLET + +#if P_FAMILY_LITTEN + [SPECIES_LITTEN] = + { + .baseHP = 45, + .baseAttack = 65, + .baseDefense = 40, + .baseSpeed = 70, + .baseSpAttack = 60, + .baseSpDefense = 40, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 64, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_INTIMIDATE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Litten"), + .cryId = CRY_LITTEN, + .natDexNum = NATIONAL_DEX_LITTEN, + .categoryName = _("Fire Cat"), + .height = 4, + .weight = 43, + .description = COMPOUND_STRING( + "While grooming itself, it builds up fur\n" + "inside its stomach. It sets the fur alight\n" + "and spews fiery attacks, which change\n" + "based on how it coughs."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Litten, 48, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Litten, + .frontAnimId = ANIM_H_STRETCH, + BACK_PIC(Litten, 64, 48), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Litten), + ICON(Litten, 0), + .footprint = gMonFootprint_Litten, + LEARNSETS(Litten), + .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_TORRACAT}), + }, + + [SPECIES_TORRACAT] = + { + .baseHP = 65, + .baseAttack = 85, + .baseDefense = 50, + .baseSpeed = 90, + .baseSpAttack = 80, + .baseSpDefense = 50, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 147, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_INTIMIDATE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Torracat"), + .cryId = CRY_TORRACAT, + .natDexNum = NATIONAL_DEX_TORRACAT, + .categoryName = _("Fire Cat"), + .height = 7, + .weight = 250, + .description = COMPOUND_STRING( + "At its throat, it bears a bell of fire. The\n" + "bell rings brightly whenever this Pokémon\n" + "spits fire. With a single punch, it can bend\n" + "an iron bar right over."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Torracat, 56, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Torracat, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Torracat, 64, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Torracat), + ICON(Torracat, 0), + .footprint = gMonFootprint_Torracat, + LEARNSETS(Torracat), + .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_INCINEROAR}), + }, + + [SPECIES_INCINEROAR] = + { + .baseHP = 95, + .baseAttack = 115, + .baseDefense = 90, + .baseSpeed = 60, + .baseSpAttack = 80, + .baseSpDefense = 90, + .types = { TYPE_FIRE, TYPE_DARK }, + .catchRate = 45, + .expYield = 239, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_INTIMIDATE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Incineroar"), + .cryId = CRY_INCINEROAR, + .natDexNum = NATIONAL_DEX_INCINEROAR, + .categoryName = _("Heel"), + .height = 18, + .weight = 830, + .description = COMPOUND_STRING( + "This Pokémon has a violent, selfish\n" + "disposition. If it's not in the mood to\n" + "listen, it will ignore its Trainer's orders\n" + "with complete nonchalance."), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + FRONT_PIC(Incineroar, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Incineroar, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Incineroar, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Incineroar), + ICON(Incineroar, 0), + .footprint = gMonFootprint_Incineroar, + LEARNSETS(Incineroar), + }, +#endif //P_FAMILY_LITTEN + +#if P_FAMILY_POPPLIO + [SPECIES_POPPLIO] = + { + .baseHP = 50, + .baseAttack = 54, + .baseDefense = 54, + .baseSpeed = 40, + .baseSpAttack = 66, + .baseSpDefense = 56, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 64, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_LIQUID_VOICE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Popplio"), + .cryId = CRY_POPPLIO, + .natDexNum = NATIONAL_DEX_POPPLIO, + .categoryName = _("Sea Lion"), + .height = 4, + .weight = 75, + .description = COMPOUND_STRING( + "This Pokémon snorts body fluids from\n" + "its nose, blowing balloons to smash into\n" + "its foes. It practices diligently so it can\n" + "learn to make big bubbles."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Popplio, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Popplio, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Popplio, 48, 48), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Popplio), + ICON(Popplio, 0), + .footprint = gMonFootprint_Popplio, + LEARNSETS(Popplio), + .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_BRIONNE}), + }, + + [SPECIES_BRIONNE] = + { + .baseHP = 60, + .baseAttack = 69, + .baseDefense = 69, + .baseSpeed = 50, + .baseSpAttack = 91, + .baseSpDefense = 81, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 147, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_LIQUID_VOICE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Brionne"), + .cryId = CRY_BRIONNE, + .natDexNum = NATIONAL_DEX_BRIONNE, + .categoryName = _("Pop Star"), + .height = 6, + .weight = 175, + .description = COMPOUND_STRING( + "It cares deeply for its companions.\n" + "When its Trainer is feeling down, it\n" + "performs a cheery dance with a sequence\n" + "of water balloons to try and help."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Brionne, 48, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Brionne, + .frontAnimId = ANIM_SHRINK_GROW, + BACK_PIC(Brionne, 48, 56), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Brionne), + ICON(Brionne, 0), + .footprint = gMonFootprint_Brionne, + LEARNSETS(Brionne), + .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_PRIMARINA}), + }, + + [SPECIES_PRIMARINA] = + { + .baseHP = 80, + .baseAttack = 74, + .baseDefense = 74, + .baseSpeed = 60, + .baseSpAttack = 126, + .baseSpDefense = 116, + .types = { TYPE_WATER, TYPE_FAIRY }, + .catchRate = 45, + .expYield = 239, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_LIQUID_VOICE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Primarina"), + .cryId = CRY_PRIMARINA, + .natDexNum = NATIONAL_DEX_PRIMARINA, + .categoryName = _("Soloist"), + .height = 18, + .weight = 440, + .description = COMPOUND_STRING( + "It controls its water balloons with song.\n" + "The melody is learned from others of\n" + "its kind and is passed down from one\n" + "generation to the next."), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + FRONT_PIC(Primarina, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Primarina, + .frontAnimId = ANIM_SHAKE_GLOW_BLUE_SLOW, + BACK_PIC(Primarina, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Primarina), + ICON(Primarina, 0), + .footprint = gMonFootprint_Primarina, + LEARNSETS(Primarina), + }, +#endif //P_FAMILY_POPPLIO + +#if P_FAMILY_PIKIPEK + [SPECIES_PIKIPEK] = + { + .baseHP = 35, + .baseAttack = 75, + .baseDefense = 30, + .baseSpeed = 65, + .baseSpAttack = 30, + .baseSpDefense = 30, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 255, + .expYield = 53, + .evYield_Attack = 1, + .itemRare = ITEM_ORAN_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_SKILL_LINK, ABILITY_PICKUP }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Pikipek"), + .cryId = CRY_PIKIPEK, + .natDexNum = NATIONAL_DEX_PIKIPEK, + .categoryName = _("Woodpecker"), + .height = 3, + .weight = 12, + .description = COMPOUND_STRING( + "This Pokémon feeds on berries, whose\n" + "leftover seeds become the ammunition for\n" + "the attacks it fires off from its mouth.\n" + "It uses holes in trees for nesting."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pikipek, 29, 40), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Pikipek, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Pikipek, 48, 48), + .backPicYOffset = 8, + .backAnimId = BACK_ANIM_SHRINK_GROW, + PALETTES(Pikipek), + ICON(Pikipek, 2), + .footprint = gMonFootprint_Pikipek, + LEARNSETS(Pikipek), + .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_TRUMBEAK}), + }, + + [SPECIES_TRUMBEAK] = + { + .baseHP = 55, + .baseAttack = 85, + .baseDefense = 50, + .baseSpeed = 75, + .baseSpAttack = 40, + .baseSpDefense = 50, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 120, + .expYield = 124, + .evYield_Attack = 2, + .itemRare = ITEM_SITRUS_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_SKILL_LINK, ABILITY_PICKUP }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Trumbeak"), + .cryId = CRY_TRUMBEAK, + .natDexNum = NATIONAL_DEX_TRUMBEAK, + .categoryName = _("Bugle Beak"), + .height = 6, + .weight = 148, + .description = COMPOUND_STRING( + "By bending its beak, it can produce a\n" + "variety of calls and brand itself a noisy\n" + "nuisance for its neighbors. It eats\n" + "berries and stores their seeds in its beak."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Trumbeak, 44, 53), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Trumbeak, + .frontAnimId = ANIM_H_STRETCH, + BACK_PIC(Trumbeak, 56, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_H_STRETCH, + PALETTES(Trumbeak), + ICON(Trumbeak, 0), + .footprint = gMonFootprint_Trumbeak, + LEARNSETS(Trumbeak), + .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_TOUCANNON}), + }, + + [SPECIES_TOUCANNON] = + { + .baseHP = 80, + .baseAttack = 120, + .baseDefense = 75, + .baseSpeed = 60, + .baseSpAttack = 75, + .baseSpDefense = 75, + .types = { TYPE_NORMAL, TYPE_FLYING }, + .catchRate = 45, + .expYield = 218, + .evYield_Attack = 3, + .itemRare = ITEM_RAWST_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_SKILL_LINK, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Toucannon"), + .cryId = CRY_TOUCANNON, + .natDexNum = NATIONAL_DEX_TOUCANNON, + .categoryName = _("Cannon"), + .height = 11, + .weight = 260, + .description = COMPOUND_STRING( + "When it battles, within its beak, its\n" + "internal gases ignite, explosively\n" + "launching seeds with enough power to\n" + "pulverize boulders."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Toucannon, 59, 59), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Toucannon, + .frontAnimId = ANIM_SHAKE_GLOW_RED_SLOW, + BACK_PIC(Toucannon, 64, 56), + .backPicYOffset = 6, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(Toucannon), + ICON(Toucannon, 0), + .footprint = gMonFootprint_Toucannon, + LEARNSETS(Toucannon), + }, +#endif //P_FAMILY_PIKIPEK + +#if P_FAMILY_YUNGOOS + [SPECIES_YUNGOOS] = + { + .baseHP = 48, + .baseAttack = 70, + .baseDefense = 30, + .baseSpeed = 45, + .baseSpAttack = 30, + .baseSpDefense = 30, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 255, + .expYield = 51, + .evYield_Attack = 1, + .itemRare = ITEM_PECHA_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_STAKEOUT, ABILITY_STRONG_JAW, ABILITY_ADAPTABILITY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Yungoos"), + .cryId = CRY_YUNGOOS, + .natDexNum = NATIONAL_DEX_YUNGOOS, + .categoryName = _("Loitering"), + .height = 4, + .weight = 60, + .description = COMPOUND_STRING( + "With its sharp fangs, it will bite anything.\n" + "It wanders around in a never-ending\n" + "search for food. At dusk, it collapses\n" + "and falls asleep on the spot."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Yungoos, 64, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Yungoos, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Yungoos, 48, 40), + .backPicYOffset = 14, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Yungoos), + ICON(Yungoos, 2), + .footprint = gMonFootprint_Yungoos, + LEARNSETS(Yungoos), + .evolutions = EVOLUTION({EVO_LEVEL_DAY, 20, SPECIES_GUMSHOOS}), + }, + + [SPECIES_GUMSHOOS] = + { + .baseHP = 88, + .baseAttack = 110, + .baseDefense = 60, + .baseSpeed = 45, + .baseSpAttack = 55, + .baseSpDefense = 60, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 127, + .expYield = 146, + .evYield_Attack = 2, + .itemRare = ITEM_PECHA_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_STAKEOUT, ABILITY_STRONG_JAW, ABILITY_ADAPTABILITY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Gumshoos"), + .cryId = CRY_GUMSHOOS, + .natDexNum = NATIONAL_DEX_GUMSHOOS, + .categoryName = _("Stakeout"), + .height = 7, + .weight = 142, + .description = COMPOUND_STRING( + "When it finds a trace of its prey, it\n" + "patiently stakes out the location...\n" + "but as it's diurnal, it's always snoozing\n" + "by nightfall."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Gumshoos, 56, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Gumshoos, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Gumshoos, 48, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Gumshoos), + ICON(Gumshoos, 2), + .footprint = gMonFootprint_Gumshoos, + LEARNSETS(Gumshoos), + }, +#endif //P_FAMILY_YUNGOOS + +#if P_FAMILY_GRUBBIN + [SPECIES_GRUBBIN] = + { + .baseHP = 47, + .baseAttack = 62, + .baseDefense = 45, + .baseSpeed = 46, + .baseSpAttack = 55, + .baseSpDefense = 45, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 255, + .expYield = 60, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Grubbin"), + .cryId = CRY_GRUBBIN, + .natDexNum = NATIONAL_DEX_GRUBBIN, + .categoryName = _("Larva"), + .height = 4, + .weight = 44, + .description = COMPOUND_STRING( + "They often gather near places frequented\n" + "by electric Pokémon in order to avoid being\n" + "attacked by bird Pokémon, though it\n" + "normally lives underground."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Grubbin, 48, 32), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_Grubbin, + .frontAnimId = ANIM_H_SLIDE, + BACK_PIC(Grubbin, 64, 32), + .backPicYOffset = 16, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Grubbin), + ICON(Grubbin, 0), + .footprint = gMonFootprint_Grubbin, + LEARNSETS(Grubbin), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_CHARJABUG}), + }, + + [SPECIES_CHARJABUG] = + { + .baseHP = 57, + .baseAttack = 82, + .baseDefense = 95, + .baseSpeed = 36, + .baseSpAttack = 55, + .baseSpDefense = 75, + .types = { TYPE_BUG, TYPE_ELECTRIC }, + .catchRate = 120, + .expYield = 140, + .evYield_Defense = 2, + .itemRare = ITEM_CELL_BATTERY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_BATTERY, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Charjabug"), + .cryId = CRY_CHARJABUG, + .natDexNum = NATIONAL_DEX_CHARJABUG, + .categoryName = _("Battery"), + .height = 5, + .weight = 105, + .description = COMPOUND_STRING( + "From the food it digests, it generates\n" + "electricity, and it stores this energy in\n" + "its electric sac. On camping trips, people\n" + "are grateful to have one around."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Charjabug, 40, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Charjabug, + .frontAnimId = ANIM_SHAKE_FLASH_YELLOW_SLOW, + BACK_PIC(Charjabug, 64, 40), + .backPicYOffset = 15, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Charjabug), + ICON(Charjabug, 1), + .footprint = gMonFootprint_Charjabug, + LEARNSETS(Charjabug), + .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_VIKAVOLT}, + {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_VIKAVOLT}), + }, + + [SPECIES_VIKAVOLT] = + { + .baseHP = 77, + .baseAttack = 70, + .baseDefense = 90, + .baseSpeed = 43, + .baseSpAttack = 145, + .baseSpDefense = 75, + .types = { TYPE_BUG, TYPE_ELECTRIC }, + .catchRate = 45, + .expYield = 225, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_LEVITATE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Vikavolt"), + .cryId = CRY_VIKAVOLT, + .natDexNum = NATIONAL_DEX_VIKAVOLT, + .categoryName = _("Stag Beetle"), + .height = 15, + .weight = 450, + .description = COMPOUND_STRING( + "It concentrates electrical energy within\n" + "its large jaws and uses it to zap its foes.\n" + "It overwhelms bird Pokémon with shocking\n" + "beams of electrical energy."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(Vikavolt, 64, 56), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Vikavolt, + .frontAnimId = ANIM_BOUNCE_ROTATE_TO_SIDES, + .enemyMonElevation = 8, + BACK_PIC(Vikavolt, 64, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Vikavolt), + ICON(Vikavolt, 0), + .footprint = gMonFootprint_Vikavolt, + LEARNSETS(Vikavolt), + }, +#endif //P_FAMILY_GRUBBIN + +#if P_FAMILY_CRABRAWLER + [SPECIES_CRABRAWLER] = + { + .baseHP = 47, + .baseAttack = 82, + .baseDefense = 57, + .baseSpeed = 63, + .baseSpAttack = 42, + .baseSpDefense = 47, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 225, + .expYield = 68, + .evYield_Attack = 1, + .itemRare = ITEM_ASPEAR_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_HYPER_CUTTER, ABILITY_IRON_FIST, ABILITY_ANGER_POINT }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Crabrawler"), + .cryId = CRY_CRABRAWLER, + .natDexNum = NATIONAL_DEX_CRABRAWLER, + .categoryName = _("Boxing"), + .height = 6, + .weight = 70, + .description = COMPOUND_STRING( + "While guarding its weak points with its\n" + "pincers, it looks for an opening and\n" + "unleashes punches. When it loses, it\n" + "foams at the mouth and faints."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Crabrawler, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Crabrawler, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Crabrawler, 64, 48), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Crabrawler), + ICON(Crabrawler, 2), + .footprint = gMonFootprint_Crabrawler, + LEARNSETS(Crabrawler), + .evolutions = EVOLUTION({EVO_SPECIFIC_MAP, MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM, SPECIES_CRABOMINABLE}, + {EVO_ITEM, ITEM_ICE_STONE, SPECIES_CRABOMINABLE}), + }, + + [SPECIES_CRABOMINABLE] = + { + .baseHP = 97, + .baseAttack = 132, + .baseDefense = 77, + .baseSpeed = 43, + .baseSpAttack = 62, + .baseSpDefense = 67, + .types = { TYPE_FIGHTING, TYPE_ICE }, + .catchRate = 60, + .expYield = 167, + .evYield_Attack = 2, + .itemRare = ITEM_CHERI_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_HYPER_CUTTER, ABILITY_IRON_FIST, ABILITY_ANGER_POINT }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Crabminabl"), + .cryId = CRY_CRABOMINABLE, + .natDexNum = NATIONAL_DEX_CRABOMINABLE, + .categoryName = _("Woolly Crab"), + .height = 17, + .weight = 1800, + .description = COMPOUND_STRING( + "It aimed for the top but got lost and\n" + "ended up on a snowy mountain. Being forced\n" + "to endure the cold, this Pokémon evolved\n" + "and grew thick fur."), + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 1, + FRONT_PIC(Crabominable, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Crabominable, + .frontAnimId = ANIM_SHRINK_GROW_VIBRATE_FAST, + BACK_PIC(Crabominable, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Crabominable), + ICON(Crabominable, 2), + .footprint = gMonFootprint_Crabominable, + LEARNSETS(Crabominable), + }, +#endif //P_FAMILY_CRABRAWLER + +#if P_FAMILY_ORICORIO +#define ORICORIO_MISC_INFO \ + .baseHP = 75, \ + .baseAttack = 70, \ + .baseDefense = 70, \ + .baseSpeed = 93, \ + .baseSpAttack = 98, \ + .baseSpDefense = 70, \ + .catchRate = 45, \ + .expYield = 167, \ + .evYield_SpAttack = 2, \ + .itemRare = ITEM_HONEY, \ + .genderRatio = PERCENT_FEMALE(75), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, \ + .abilities = { ABILITY_DANCER, ABILITY_NONE }, \ + .speciesName = _("Oricorio"), \ + .natDexNum = NATIONAL_DEX_ORICORIO, \ + .categoryName = _("Dancing"), \ + .height = 6, \ + .weight = 34, \ + .pokemonScale = 422, \ + .pokemonOffset = 12, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontAnimFrames = sAnims_Oricorio, \ + .backPicYOffset = 0, \ + .footprint = gMonFootprint_Oricorio, \ + LEARNSETS(Oricorio), \ + .formSpeciesIdTable = sOricorioFormSpeciesIdTable, \ + .formChangeTable = sOricorioFormChangeTable + //.backAnimId = BACK_ANIM_NONE, \ + + [SPECIES_ORICORIO_BAILE] = + { + ORICORIO_MISC_INFO, + .types = { TYPE_FIRE, TYPE_FLYING }, + .bodyColor = BODY_COLOR_RED, + .cryId = CRY_ORICORIO_BAILE, + .description = COMPOUND_STRING( + "It wins the hearts of its enemies\n" + "with its passionate dancing and then\n" + "uses the opening it creates to\n" + "burn them up with blazing flames."), + FRONT_PIC(OricorioBaile, 56, 64), + .frontPicYOffset = 2, + .frontAnimId = ANIM_CONCAVE_ARC_SMALL, + BACK_PIC(OricorioBaile, 64, 64), + //.backAnimId = BACK_ANIM_NONE, + PALETTES(OricorioBaile), + ICON(OricorioBaile, 0), + }, + + [SPECIES_ORICORIO_POM_POM] = + { + ORICORIO_MISC_INFO, + .types = { TYPE_ELECTRIC, TYPE_FLYING }, + .bodyColor = BODY_COLOR_YELLOW, + .cryId = CRY_ORICORIO_POM_POM, + .description = COMPOUND_STRING( + "This form of Oricorio has sipped\n" + "yellow nectar. It uses nimble steps to\n" + "approach opponents, then knocks\n" + "them out with electric punches."), + FRONT_PIC(OricorioPomPom, 56, 56), + .frontPicYOffset = 5, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(OricorioPomPom, 64, 64), + //.backAnimId = BACK_ANIM_NONE, + PALETTES(OricorioPomPom), + ICON(OricorioPomPom, 1), + }, + + [SPECIES_ORICORIO_PAU] = + { + ORICORIO_MISC_INFO, + .types = { TYPE_PSYCHIC, TYPE_FLYING }, + .bodyColor = BODY_COLOR_PINK, + .cryId = CRY_ORICORIO_PAU, + .description = COMPOUND_STRING( + "This form of Oricorio has sipped\n" + "pink nectar. It elevates its mind with\n" + "the gentle steps of its dance, then\n" + "unleashes its psychic energy."), + FRONT_PIC(OricorioPau, 56, 64), + .frontPicYOffset = 3, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(OricorioPau, 64, 64), + //.backAnimId = BACK_ANIM_NONE, + PALETTES(OricorioPau), + ICON(OricorioPau, 1), + }, + + [SPECIES_ORICORIO_SENSU] = + { + ORICORIO_MISC_INFO, + .types = { TYPE_GHOST, TYPE_FLYING }, + .bodyColor = BODY_COLOR_PURPLE, + .cryId = CRY_ORICORIO_SENSU, + .description = COMPOUND_STRING( + "It charms its opponents with its\n" + "refined dancing. When they let their\n" + "guard down, it places a curse on\n" + "them that will bring on their demise."), + FRONT_PIC(OricorioSensu, 64, 56), + .frontPicYOffset = 4, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(OricorioSensu, 64, 64), + //.backAnimId = BACK_ANIM_NONE, + PALETTES(OricorioSensu), + ICON(OricorioSensu, 0), + }, +#endif //P_FAMILY_ORICORIO + +#if P_FAMILY_CUTIEFLY + [SPECIES_CUTIEFLY] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 40, + .baseSpeed = 84, + .baseSpAttack = 55, + .baseSpDefense = 40, + .types = { TYPE_BUG, TYPE_FAIRY }, + .catchRate = 190, + .expYield = 61, + .evYield_Speed = 1, + .itemRare = ITEM_HONEY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_HONEY_GATHER, ABILITY_SHIELD_DUST, ABILITY_SWEET_VEIL }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Cutiefly"), + .cryId = CRY_CUTIEFLY, + .natDexNum = NATIONAL_DEX_CUTIEFLY, + .categoryName = _("Bee Fly"), + .height = 1, + .weight = 2, + .description = COMPOUND_STRING( + "Myriads of Cutiefly flutter above the\n" + "heads of people who have auras resembling\n" + "those of flowers. It can identify which\n" + "flowers are about to bloom."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cutiefly, 33, 35), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Cutiefly, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + .enemyMonElevation = 10, + BACK_PIC(Cutiefly, 56, 48), + .backPicYOffset = 15, + .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, + PALETTES(Cutiefly), + ICON(Cutiefly, 2), + .footprint = gMonFootprint_Cutiefly, + LEARNSETS(Cutiefly), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_RIBOMBEE}), + }, + + [SPECIES_RIBOMBEE] = + { + .baseHP = 60, + .baseAttack = 55, + .baseDefense = 60, + .baseSpeed = 124, + .baseSpAttack = 95, + .baseSpDefense = 70, + .types = { TYPE_BUG, TYPE_FAIRY }, + .catchRate = 75, + .expYield = 162, + .evYield_Speed = 2, + .itemRare = ITEM_HONEY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_HONEY_GATHER, ABILITY_SHIELD_DUST, ABILITY_SWEET_VEIL }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Ribombee"), + .cryId = CRY_RIBOMBEE, + .natDexNum = NATIONAL_DEX_RIBOMBEE, + .categoryName = _("Bee Fly"), + .height = 2, + .weight = 5, + .description = COMPOUND_STRING( + "Ribombee rolls up pollen into puffs.\n" + "It makes many different varieties, some\n" + "used as food and others used in battle.\n" + "They are sometimes sold as supplements."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Ribombee, 32, 47), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Ribombee, + .frontAnimId = ANIM_CONVEX_DOUBLE_ARC_TWICE, + .enemyMonElevation = 6, + BACK_PIC(Ribombee, 56, 48), + .backPicYOffset = 11, + .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, + PALETTES(Ribombee), + ICON(Ribombee, 2), + .footprint = gMonFootprint_Ribombee, + LEARNSETS(Ribombee), + }, +#endif //P_FAMILY_CUTIEFLY + +#if P_FAMILY_ROCKRUFF +#define ROCKRUFF_MISC_INFO \ + .baseHP = 45, \ + .baseAttack = 65, \ + .baseDefense = 40, \ + .baseSpeed = 60, \ + .baseSpAttack = 30, \ + .baseSpDefense = 40, \ + .types = { TYPE_ROCK, TYPE_ROCK }, \ + .catchRate = 190, \ + .expYield = 56, \ + .evYield_Attack = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .bodyColor = BODY_COLOR_BROWN, \ + .speciesName = _("Rockruff"), \ + .cryId = CRY_ROCKRUFF, \ + .natDexNum = NATIONAL_DEX_ROCKRUFF, \ + .categoryName = _("Puppy"), \ + .height = 5, \ + .weight = 92, \ + .description = gRockruffPokedexText, \ + .pokemonScale = 432, \ + .pokemonOffset = 13, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontPicYOffset = 11, \ + .frontAnimFrames = sAnims_Rockruff, \ + .frontAnimId = ANIM_V_STRETCH, \ + .backPicYOffset = 7, \ + PALETTES(Rockruff), \ + ICON(Rockruff, 2), \ + .footprint = gMonFootprint_Rockruff, \ + LEARNSETS(Rockruff), \ + .formSpeciesIdTable = sRockruffFormSpeciesIdTable + + [SPECIES_ROCKRUFF] = + { + ROCKRUFF_MISC_INFO, + .abilities = { ABILITY_KEEN_EYE, ABILITY_VITAL_SPIRIT, ABILITY_STEADFAST }, + FRONT_PIC(Rockruff, 37, 39), + BACK_PIC(Rockruff, 64, 56), + .backAnimId = BACK_ANIM_V_STRETCH, + .evolutions = EVOLUTION({EVO_LEVEL_DAY, 25, SPECIES_LYCANROC_MIDDAY}, + {EVO_LEVEL_NIGHT, 25, SPECIES_LYCANROC_MIDNIGHT}), + }, + + [SPECIES_ROCKRUFF_OWN_TEMPO] = + { + ROCKRUFF_MISC_INFO, + .abilities = { ABILITY_OWN_TEMPO, ABILITY_NONE, ABILITY_NONE }, + FRONT_PIC(Rockruff, 40, 48), + BACK_PIC(Rockruff, 64, 56), + //.backAnimId = BACK_ANIM_NONE, + .evolutions = EVOLUTION({EVO_LEVEL_DUSK, 25, SPECIES_LYCANROC_DUSK}), + }, + +#define LYCANROC_MISC_INFO \ + .types = { TYPE_ROCK, TYPE_ROCK }, \ + .catchRate = 90, \ + .expYield = 170, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .speciesName = _("Lycanroc"), \ + .natDexNum = NATIONAL_DEX_LYCANROC, \ + .categoryName = _("Wolf"), \ + .weight = 250, \ + .pokemonScale = 366, \ + .pokemonOffset = 7, \ + .trainerScale = 257, \ + .trainerOffset = 0, \ + BACK_PIC(LycanrocMidday, 64, 56), \ + .footprint = gMonFootprint_Lycanroc, \ + .formSpeciesIdTable = sLycanrocFormSpeciesIdTable + + [SPECIES_LYCANROC_MIDDAY] = + { + LYCANROC_MISC_INFO, + .baseHP = 75, + .baseAttack = 115, + .baseDefense = 65, + .baseSpeed = 112, + .baseSpAttack = 55, + .baseSpDefense = 65, + .abilities = { ABILITY_KEEN_EYE, ABILITY_SAND_RUSH, ABILITY_STEADFAST }, + .bodyColor = BODY_COLOR_BROWN, + .cryId = CRY_LYCANROC_MIDDAY, + .height = 8, + .description = COMPOUND_STRING( + "It has a calm and collected\n" + "demeanor. It swiftly closes in on its prey,\n" + "then slices them with the rocks in\n" + "its mane."), + FRONT_PIC(LycanrocMidday, 57, 53), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_LycanrocMidday, + .frontAnimId = ANIM_V_SHAKE, + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(LycanrocMidday), + ICON(LycanrocMidday, 2), + LEARNSETS(LycanrocMidday), + }, + + [SPECIES_LYCANROC_MIDNIGHT] = + { + LYCANROC_MISC_INFO, + .baseHP = 85, + .baseAttack = 115, + .baseDefense = 75, + .baseSpeed = 82, + .baseSpAttack = 55, + .baseSpDefense = 75, + .abilities = { ABILITY_KEEN_EYE, ABILITY_VITAL_SPIRIT, ABILITY_NO_GUARD }, + .bodyColor = BODY_COLOR_RED, + .cryId = CRY_LYCANROC_MIDNIGHT, + .height = 11, + .description = COMPOUND_STRING( + "This Pokémon uses its rocky mane\n" + "to slash any who approach. It will\n" + "even disobey its Trainer if it dislikes\n" + "the orders it was given."), + FRONT_PIC(LycanrocMidnight, 56, 61), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_LycanrocMidnight, + .frontAnimId = ANIM_SHRINK_GROW_VIBRATE_SLOW, + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(LycanrocMidnight), + ICON(LycanrocMidnight, 0), + LEARNSETS(LycanrocMidnight), + }, + + [SPECIES_LYCANROC_DUSK] = + { + LYCANROC_MISC_INFO, + .baseHP = 75, + .baseAttack = 117, + .baseDefense = 65, + .baseSpeed = 110, + .baseSpAttack = 55, + .baseSpDefense = 65, + .abilities = { ABILITY_TOUGH_CLAWS, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .cryId = CRY_LYCANROC_DUSK, + .height = 8, + .description = COMPOUND_STRING( + "These Pokémon have both calm and\n" + "ferocious qualities. It's said that\n" + "this form of Lycanroc is the most\n" + "troublesome to raise."), + FRONT_PIC(LycanrocDusk, 57, 58), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_LycanrocDusk, + .frontAnimId = ANIM_V_SHAKE, + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_V_SHAKE, + PALETTES(LycanrocDusk), + ICON(LycanrocDusk, 0), + LEARNSETS(LycanrocDusk), + }, +#endif //P_FAMILY_ROCKRUFF + +#if P_FAMILY_WISHIWASHI +#define WISHIWASHI_MISC_INFO \ + .types = { TYPE_WATER, TYPE_WATER }, \ + .catchRate = 60, \ + .expYield = 61, \ + .evYield_HP = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_FAST, \ + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, \ + .abilities = { ABILITY_SCHOOLING, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Wishiwashi"), \ + .natDexNum = NATIONAL_DEX_WISHIWASHI, \ + .categoryName = _("Small Fry"), \ + .pokemonScale = 682, \ + .pokemonOffset = 24, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Wishiwashi, \ + LEARNSETS(Wishiwashi), \ + .formSpeciesIdTable = sWishiwashiFormSpeciesIdTable, \ + .formChangeTable = sWishiwashiFormChangeTable + + [SPECIES_WISHIWASHI_SOLO] = + { + WISHIWASHI_MISC_INFO, + .baseHP = 45, + .baseAttack = 20, + .baseDefense = 20, + .baseSpeed = 40, + .baseSpAttack = 25, + .baseSpDefense = 25, + .cryId = CRY_WISHIWASHI_SOLO, + .height = 2, + .weight = 3, + .description = COMPOUND_STRING( + "Individually, they're incredibly\n" + "weak. It's by gathering up into\n" + "schools that they're able to confront\n" + "opponents."), + FRONT_PIC(WishiwashiSolo, 40, 24), + .frontPicYOffset = 20, + .frontAnimFrames = sAnims_WishiwashiSolo, + .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, + .enemyMonElevation = 12, + BACK_PIC(WishiwashiSolo, 56, 32), + .backPicYOffset = 18, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(WishiwashiSolo), + ICON(WishiwashiSolo, 2), + }, + + [SPECIES_WISHIWASHI_SCHOOL] = + { + WISHIWASHI_MISC_INFO, + .baseHP = 45, + .baseAttack = 140, + .baseDefense = 130, + .baseSpeed = 30, + .baseSpAttack = 140, + .baseSpDefense = 135, + .cryId = CRY_WISHIWASHI_SCHOOL, + .height = 82, + .weight = 786, + .description = COMPOUND_STRING( + "When facing tough opponents, they\n" + "get into formation. But if they get\n" + "wounded in battle, they'll scatter\n" + "and become solitary again."), + FRONT_PIC(WishiwashiSchool, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_WishiwashiSchool, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, //Todo + BACK_PIC(WishiwashiSchool, 64, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(WishiwashiSchool), + ICON(WishiwashiSchool, 0), + }, +#endif //P_FAMILY_WISHIWASHI + +#if P_FAMILY_MAREANIE + [SPECIES_MAREANIE] = + { + .baseHP = 50, + .baseAttack = 53, + .baseDefense = 62, + .baseSpeed = 45, + .baseSpAttack = 43, + .baseSpDefense = 52, + .types = { TYPE_POISON, TYPE_WATER }, + .catchRate = 190, + .expYield = 61, + .evYield_Defense = 1, + .itemRare = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_MERCILESS, ABILITY_LIMBER, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Mareanie"), + .cryId = CRY_MAREANIE, + .natDexNum = NATIONAL_DEX_MAREANIE, + .categoryName = _("Brutal Star"), + .height = 4, + .weight = 80, + .description = COMPOUND_STRING( + "It's found crawling on beaches and\n" + "seafloors. The coral that grows on\n" + "Corsola's head is as good as a five-star\n" + "banquet to this Pokémon."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Mareanie, 48, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Mareanie, + .frontAnimId = ANIM_GLOW_PURPLE, + BACK_PIC(Mareanie, 64, 48), + .backPicYOffset = 15, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Mareanie), + ICON(Mareanie, 2), + .footprint = gMonFootprint_Mareanie, + LEARNSETS(Mareanie), + .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_TOXAPEX}), + }, + + [SPECIES_TOXAPEX] = + { + .baseHP = 50, + .baseAttack = 63, + .baseDefense = 152, + .baseSpeed = 35, + .baseSpAttack = 53, + .baseSpDefense = 142, + .types = { TYPE_POISON, TYPE_WATER }, + .catchRate = 75, + .expYield = 173, + .evYield_Defense = 2, + .itemRare = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_MERCILESS, ABILITY_LIMBER, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Toxapex"), + .cryId = CRY_TOXAPEX, + .natDexNum = NATIONAL_DEX_TOXAPEX, + .categoryName = _("Brutal Star"), + .height = 7, + .weight = 145, + .description = COMPOUND_STRING( + "Those attacked by Toxapex's poison will\n" + "suffer intense pain for three days and\n" + "three nights. Post-recovery, there will be\n" + "some aftereffects."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Toxapex, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Toxapex, + .frontAnimId = ANIM_SHAKE_GLOW_PURPLE_SLOW, + BACK_PIC(Toxapex, 64, 56), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Toxapex), + ICON(Toxapex, 0), + .footprint = gMonFootprint_Toxapex, + LEARNSETS(Toxapex), + }, +#endif //P_FAMILY_MAREANIE + +#if P_FAMILY_MUDBRAY + [SPECIES_MUDBRAY] = + { + .baseHP = 70, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 45, + .baseSpAttack = 45, + .baseSpDefense = 55, + .types = { TYPE_GROUND, TYPE_GROUND }, + .catchRate = 190, + .expYield = 77, + .evYield_Attack = 1, + .itemRare = ITEM_LIGHT_CLAY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_OWN_TEMPO, ABILITY_STAMINA, ABILITY_INNER_FOCUS }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Mudbray"), + .cryId = CRY_MUDBRAY, + .natDexNum = NATIONAL_DEX_MUDBRAY, + .categoryName = _("Donkey"), + .height = 10, + .weight = 1100, + .description = COMPOUND_STRING( + "The mud stuck to Mudbray's hooves\n" + "enhances its grip and its powerful running\n" + "gait. Eating dirt, making mud, and playing\n" + "in the mire form its daily routine."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Mudbray, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Mudbray, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Mudbray, 64, 56), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Mudbray), + ICON(Mudbray, 2), + .footprint = gMonFootprint_Mudbray, + LEARNSETS(Mudbray), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MUDSDALE}), + }, + + [SPECIES_MUDSDALE] = + { + .baseHP = 100, + .baseAttack = 125, + .baseDefense = 100, + .baseSpeed = 35, + .baseSpAttack = 55, + .baseSpDefense = 85, + .types = { TYPE_GROUND, TYPE_GROUND }, + .catchRate = 60, + .expYield = 175, + .evYield_Attack = 2, + .itemRare = ITEM_LIGHT_CLAY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_OWN_TEMPO, ABILITY_STAMINA, ABILITY_INNER_FOCUS }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Mudsdale"), + .cryId = CRY_MUDSDALE, + .natDexNum = NATIONAL_DEX_MUDSDALE, + .categoryName = _("Draft Horse"), + .height = 25, + .weight = 9200, + .description = COMPOUND_STRING( + "Its heavy, mud-covered kicks are its\n" + "best means of attack, and it can reduce\n" + "large trucks to scrap without breaking\n" + "a sweat."), + .pokemonScale = 257, + .pokemonOffset = 10, + .trainerScale = 423, + .trainerOffset = 8, + FRONT_PIC(Mudsdale, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Mudsdale, + .frontAnimId = ANIM_V_SHAKE_TWICE, + BACK_PIC(Mudsdale, 64, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Mudsdale), + ICON(Mudsdale, 0), + .footprint = gMonFootprint_Mudsdale, + LEARNSETS(Mudsdale), + }, +#endif //P_FAMILY_MUDBRAY + +#if P_FAMILY_DEWPIDER + [SPECIES_DEWPIDER] = + { + .baseHP = 38, + .baseAttack = 40, + .baseDefense = 52, + .baseSpeed = 27, + .baseSpAttack = 40, + .baseSpDefense = 72, + .types = { TYPE_WATER, TYPE_BUG }, + .catchRate = 200, + .expYield = 54, + .evYield_SpDefense = 1, + .itemRare = ITEM_MYSTIC_WATER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_BUG }, + .abilities = { ABILITY_WATER_BUBBLE, ABILITY_NONE, ABILITY_WATER_ABSORB }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Dewpider"), + .cryId = CRY_DEWPIDER, + .natDexNum = NATIONAL_DEX_DEWPIDER, + .categoryName = _("Water Bubble"), + .height = 3, + .weight = 40, + .description = COMPOUND_STRING( + "It crawls onto the land in search of food.\n" + "When it comes across enemies or potential\n" + "prey, this Pokémon smashes its\n" + "water-bubble-covered head into them."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Dewpider, 32, 48), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Dewpider, + .frontAnimId = ANIM_SHRINK_GROW, + BACK_PIC(Dewpider, 40, 48), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Dewpider), + ICON(Dewpider, 0), + .footprint = gMonFootprint_Dewpider, + LEARNSETS(Dewpider), + .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARAQUANID}), + }, + + [SPECIES_ARAQUANID] = + { + .baseHP = 68, + .baseAttack = 70, + .baseDefense = 92, + .baseSpeed = 42, + .baseSpAttack = 50, + .baseSpDefense = 132, + .types = { TYPE_WATER, TYPE_BUG }, + .catchRate = 100, + .expYield = 159, + .evYield_SpDefense = 2, + .itemRare = ITEM_MYSTIC_WATER, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_BUG }, + .abilities = { ABILITY_WATER_BUBBLE, ABILITY_NONE, ABILITY_WATER_ABSORB }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Araquanid"), + .cryId = CRY_ARAQUANID, + .natDexNum = NATIONAL_DEX_ARAQUANID, + .categoryName = _("Water Bubble"), + .height = 18, + .weight = 820, + .description = COMPOUND_STRING( + "Despite what its appearance suggests,\n" + "it cares for others. If it finds vulnerable,\n" + "weak Pokémon, it protectively brings\n" + "them into its water bubble."), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + FRONT_PIC(Araquanid, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Araquanid, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Araquanid, 64, 48), + .backPicYOffset = 12, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Araquanid), + ICON(Araquanid, 2), + .footprint = gMonFootprint_Araquanid, + LEARNSETS(Araquanid), + }, +#endif //P_FAMILY_DEWPIDER + +#if P_FAMILY_FOMANTIS + [SPECIES_FOMANTIS] = + { + .baseHP = 40, + .baseAttack = 55, + .baseDefense = 35, + .baseSpeed = 35, + .baseSpAttack = 50, + .baseSpDefense = 35, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 190, + .expYield = 50, + .evYield_Attack = 1, + .itemRare = ITEM_MIRACLE_SEED, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_LEAF_GUARD, ABILITY_NONE, ABILITY_CONTRARY }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Fomantis"), + .cryId = CRY_FOMANTIS, + .natDexNum = NATIONAL_DEX_FOMANTIS, + .categoryName = _("Sickle Grass"), + .height = 3, + .weight = 15, + .description = COMPOUND_STRING( + "During the day, it sleeps and soaks up\n" + "light. They give off a sweet and refreshing\n" + "scent. Cutiefly often gather near the tall\n" + "grass where Fomantis are hiding."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Fomantis, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Fomantis, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE_SLOW, + BACK_PIC(Fomantis, 40, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Fomantis), + ICON(Fomantis, 1), + .footprint = gMonFootprint_Fomantis, + LEARNSETS(Fomantis), + .evolutions = EVOLUTION({EVO_LEVEL_DAY, 34, SPECIES_LURANTIS}), + }, + + [SPECIES_LURANTIS] = + { + .baseHP = 70, + .baseAttack = 105, + .baseDefense = 90, + .baseSpeed = 45, + .baseSpAttack = 80, + .baseSpDefense = 90, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 75, + .expYield = 168, + .evYield_Attack = 2, + .itemRare = ITEM_MIRACLE_SEED, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_LEAF_GUARD, ABILITY_NONE, ABILITY_CONTRARY }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Lurantis"), + .cryId = CRY_LURANTIS, + .natDexNum = NATIONAL_DEX_LURANTIS, + .categoryName = _("Bloom Sickle"), + .height = 9, + .weight = 185, + .description = COMPOUND_STRING( + "It requires a lot of effort to maintain\n" + "Lurantis's vivid coloring, but some\n" + "collectors enjoy this work and treat it\n" + "as their hobby."), + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Lurantis, 48, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Lurantis, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Lurantis, 56, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Lurantis), + ICON(Lurantis, 1), + .footprint = gMonFootprint_Lurantis, + LEARNSETS(Lurantis), + }, +#endif //P_FAMILY_FOMANTIS + +#if P_FAMILY_MORELULL + [SPECIES_MORELULL] = + { + .baseHP = 40, + .baseAttack = 35, + .baseDefense = 55, + .baseSpeed = 15, + .baseSpAttack = 65, + .baseSpDefense = 75, + .types = { TYPE_GRASS, TYPE_FAIRY }, + .catchRate = 190, + .expYield = 57, + .evYield_SpDefense = 1, + .itemCommon = ITEM_TINY_MUSHROOM, + .itemRare = ITEM_BIG_MUSHROOM, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_ILLUMINATE, ABILITY_EFFECT_SPORE, ABILITY_RAIN_DISH }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Morelull"), + .cryId = CRY_MORELULL, + .natDexNum = NATIONAL_DEX_MORELULL, + .categoryName = _("Illuminate"), + .height = 2, + .weight = 15, + .description = COMPOUND_STRING( + "As it drowses the day away, it nourishes\n" + "itself by sucking from tree roots.\n" + "It wakens at the fall of night, wandering\n" + "off in search of a new tree."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Morelull, 24, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Morelull, + .frontAnimId = ANIM_SHAKE_FLASH_YELLOW, + BACK_PIC(Morelull, 40, 48), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Morelull), + ICON(Morelull, 0), + .footprint = gMonFootprint_Morelull, + LEARNSETS(Morelull), + .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_SHIINOTIC}), + }, + + [SPECIES_SHIINOTIC] = + { + .baseHP = 60, + .baseAttack = 45, + .baseDefense = 80, + .baseSpeed = 30, + .baseSpAttack = 90, + .baseSpDefense = 100, + .types = { TYPE_GRASS, TYPE_FAIRY }, + .catchRate = 75, + .expYield = 142, + .evYield_SpDefense = 2, + .itemCommon = ITEM_TINY_MUSHROOM, + .itemRare = ITEM_BIG_MUSHROOM, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_ILLUMINATE, ABILITY_EFFECT_SPORE, ABILITY_RAIN_DISH }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Shiinotic"), + .cryId = CRY_SHIINOTIC, + .natDexNum = NATIONAL_DEX_SHIINOTIC, + .categoryName = _("Illuminate"), + .height = 10, + .weight = 115, + .description = COMPOUND_STRING( + "Forests where Shiinotic live are\n" + "treacherous to enter at night.\n" + "People confused by its strange lights\n" + "can never find their way home again."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Shiinotic, 56, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Shiinotic, + .frontAnimId = ANIM_SHAKE_GLOW_WHITE_SLOW, + BACK_PIC(Shiinotic, 64, 48), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Shiinotic), + ICON(Shiinotic, 1), + .footprint = gMonFootprint_Shiinotic, + LEARNSETS(Shiinotic), + }, +#endif //P_FAMILY_MORELULL + +#if P_FAMILY_SALANDIT + [SPECIES_SALANDIT] = + { + .baseHP = 48, + .baseAttack = 44, + .baseDefense = 40, + .baseSpeed = 77, + .baseSpAttack = 71, + .baseSpDefense = 40, + .types = { TYPE_POISON, TYPE_FIRE }, + .catchRate = 120, + .expYield = 64, + .evYield_Speed = 1, + .itemRare = ITEM_SMOKE_BALL, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_CORROSION, ABILITY_NONE, ABILITY_OBLIVIOUS }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Salandit"), + .cryId = CRY_SALANDIT, + .natDexNum = NATIONAL_DEX_SALANDIT, + .categoryName = _("Toxic Lizard"), + .height = 6, + .weight = 48, + .description = COMPOUND_STRING( + "It burns its bodily fluids to create a\n" + "sweet-smelling poisonous gas. When its\n" + "enemies become disoriented from inhaling\n" + "the gas, it attacks them."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Salandit, 56, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Salandit, + .frontAnimId = ANIM_GLOW_RED, + BACK_PIC(Salandit, 56, 40), + .backPicYOffset = 12, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Salandit), + ICON(Salandit, 2), + .footprint = gMonFootprint_Salandit, + LEARNSETS(Salandit), + .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 33, SPECIES_SALAZZLE}), + }, + + [SPECIES_SALAZZLE] = + { + .baseHP = 68, + .baseAttack = 64, + .baseDefense = 60, + .baseSpeed = 117, + .baseSpAttack = 111, + .baseSpDefense = 60, + .types = { TYPE_POISON, TYPE_FIRE }, + .catchRate = 45, + .expYield = 168, + .evYield_Speed = 2, + .itemRare = ITEM_SMOKE_BALL, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_CORROSION, ABILITY_NONE, ABILITY_OBLIVIOUS }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Salazzle"), + .cryId = CRY_SALAZZLE, + .natDexNum = NATIONAL_DEX_SALAZZLE, + .categoryName = _("Toxic Lizard"), + .height = 12, + .weight = 222, + .description = COMPOUND_STRING( + "For some reason, only females have\n" + "been found. It creates a reverse harem of\n" + "male Salandit to live with. Its poisonous\n" + "gas is filled with pheromones."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Salazzle, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Salazzle, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Salazzle, 48, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Salazzle), + ICON(Salazzle, 0), + .footprint = gMonFootprint_Salazzle, + LEARNSETS(Salazzle), + }, +#endif //P_FAMILY_SALANDIT + +#if P_FAMILY_STUFFUL + [SPECIES_STUFFUL] = + { + .baseHP = 70, + .baseAttack = 75, + .baseDefense = 50, + .baseSpeed = 50, + .baseSpAttack = 45, + .baseSpDefense = 50, + .types = { TYPE_NORMAL, TYPE_FIGHTING }, + .catchRate = 140, + .expYield = 68, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_FLUFFY, ABILITY_KLUTZ, ABILITY_CUTE_CHARM }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Stufful"), + .cryId = CRY_STUFFUL, + .natDexNum = NATIONAL_DEX_STUFFUL, + .categoryName = _("Flailing"), + .height = 5, + .weight = 68, + .description = COMPOUND_STRING( + "Despite its adorable appearance, when it\n" + "gets angry and flails about, its arms and\n" + "legs could knock a pro wrestler sprawling.\n" + "It's an incredibly dangerous Pokémon."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Stufful, 48, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Stufful, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Stufful, 56, 40), + .backPicYOffset = 12, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Stufful), + ICON(Stufful, 0), + .footprint = gMonFootprint_Stufful, + LEARNSETS(Stufful), + .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_BEWEAR}), + }, + + [SPECIES_BEWEAR] = + { + .baseHP = 120, + .baseAttack = 125, + .baseDefense = 80, + .baseSpeed = 60, + .baseSpAttack = 55, + .baseSpDefense = 60, + .types = { TYPE_NORMAL, TYPE_FIGHTING }, + .catchRate = 70, + .expYield = 175, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_FLUFFY, ABILITY_KLUTZ, ABILITY_UNNERVE }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Bewear"), + .cryId = CRY_BEWEAR, + .natDexNum = NATIONAL_DEX_BEWEAR, + .categoryName = _("Strong Arm"), + .height = 21, + .weight = 1350, + .description = COMPOUND_STRING( + "This Pokémon has the habit of hugging its\n" + "companions. Many Trainers have left this\n" + "world after their spines were squashed\n" + "by its hug."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, + FRONT_PIC(Bewear, 56, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Bewear, + .frontAnimId = ANIM_H_STRETCH, + BACK_PIC(Bewear, 64, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Bewear), + ICON(Bewear, 0), + .footprint = gMonFootprint_Bewear, + LEARNSETS(Bewear), + }, +#endif //P_FAMILY_STUFFUL + +#if P_FAMILY_BOUNSWEET + [SPECIES_BOUNSWEET] = + { + .baseHP = 42, + .baseAttack = 30, + .baseDefense = 38, + .baseSpeed = 32, + .baseSpAttack = 30, + .baseSpDefense = 38, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 235, + .expYield = 42, + .evYield_HP = 1, + .itemRare = ITEM_GRASSY_SEED, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_LEAF_GUARD, ABILITY_OBLIVIOUS, ABILITY_SWEET_VEIL }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Bounsweet"), + .cryId = CRY_BOUNSWEET, + .natDexNum = NATIONAL_DEX_BOUNSWEET, + .categoryName = _("Fruit"), + .height = 3, + .weight = 32, + .description = COMPOUND_STRING( + "A delectable aroma pours from its body. \n" + "Bounsweet's sweat can be watered down\n" + "into a juice with just the right amount\n" + "of sweetness."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Bounsweet, 32, 40), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Bounsweet, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Bounsweet, 48, 40), + .backPicYOffset = 14, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Bounsweet), + ICON(Bounsweet, 1), + .footprint = gMonFootprint_Bounsweet, + LEARNSETS(Bounsweet), + .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_STEENEE}), + }, + + [SPECIES_STEENEE] = + { + .baseHP = 52, + .baseAttack = 40, + .baseDefense = 48, + .baseSpeed = 62, + .baseSpAttack = 40, + .baseSpDefense = 48, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 120, + .expYield = 102, + .evYield_Speed = 2, + .itemRare = ITEM_GRASSY_SEED, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_LEAF_GUARD, ABILITY_OBLIVIOUS, ABILITY_SWEET_VEIL }, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = TRUE, + .speciesName = _("Steenee"), + .cryId = CRY_STEENEE, + .natDexNum = NATIONAL_DEX_STEENEE, + .categoryName = _("Fruit"), + .height = 7, + .weight = 82, + .description = COMPOUND_STRING( + "The sepals on its head developed to\n" + "protect its body. These are quite hard, so\n" + "even if pecked by bird Pokémon, this\n" + "Pokémon is totally fine."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Steenee, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Steenee, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Steenee, 56, 56), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Steenee), + ICON(Steenee, 1), + .footprint = gMonFootprint_Steenee, + LEARNSETS(Steenee), + .evolutions = EVOLUTION({EVO_MOVE, MOVE_STOMP, SPECIES_TSAREENA}), + }, + + [SPECIES_TSAREENA] = + { + .baseHP = 72, + .baseAttack = 120, + .baseDefense = 98, + .baseSpeed = 72, + .baseSpAttack = 50, + .baseSpDefense = 98, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 230, + .evYield_Attack = 3, + .itemCommon = ITEM_GRASSY_SEED, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_LEAF_GUARD, ABILITY_QUEENLY_MAJESTY, ABILITY_SWEET_VEIL }, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = TRUE, + .speciesName = _("Tsareena"), + .cryId = CRY_TSAREENA, + .natDexNum = NATIONAL_DEX_TSAREENA, + .categoryName = _("Fruit"), + .height = 12, + .weight = 214, + .description = COMPOUND_STRING( + "Its long, striking legs aren't just for\n" + "show but to be used to kick with skill.\n" + "In victory, it shows off by kicking the\n" + "defeated, laughing boisterously."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Tsareena, 56, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Tsareena, + .frontAnimId = ANIM_SHRINK_GROW, + BACK_PIC(Tsareena, 56, 56), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Tsareena), + ICON(Tsareena, 1), + .footprint = gMonFootprint_Tsareena, + LEARNSETS(Tsareena), + }, +#endif //P_FAMILY_BOUNSWEET + +#if P_FAMILY_COMFEY + [SPECIES_COMFEY] = + { + .baseHP = 51, + .baseAttack = 52, + .baseDefense = 90, + .baseSpeed = 100, + .baseSpAttack = 82, + .baseSpDefense = 110, + .types = { TYPE_FAIRY, TYPE_FAIRY }, + .catchRate = 60, + .expYield = 170, + .evYield_SpDefense = 2, + .itemRare = ITEM_MISTY_SEED, + .genderRatio = PERCENT_FEMALE(75), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_FLOWER_VEIL, ABILITY_TRIAGE, ABILITY_NATURAL_CURE }, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + .speciesName = _("Comfey"), + .cryId = CRY_COMFEY, + .natDexNum = NATIONAL_DEX_COMFEY, + .categoryName = _("Posy Picker"), + .height = 1, + .weight = 3, + .description = COMPOUND_STRING( + "It attaches flowers to its nutritious\n" + "vine. Baths prepared with the flowers\n" + "from its vine have a relaxing effect, so\n" + "this Pokémon is a hit with many people."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Comfey, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Comfey, + .frontAnimId = ANIM_H_SLIDE_WOBBLE, + .enemyMonElevation = 8, + BACK_PIC(Comfey, 64, 56), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Comfey), + ICON(Comfey, 1), + .footprint = gMonFootprint_Comfey, + LEARNSETS(Comfey), + }, +#endif //P_FAMILY_COMFEY + +#if P_FAMILY_ORANGURU + [SPECIES_ORANGURU] = + { + .baseHP = 90, + .baseAttack = 60, + .baseDefense = 80, + .baseSpeed = 60, + .baseSpAttack = 90, + .baseSpDefense = 110, + .types = { TYPE_NORMAL, TYPE_PSYCHIC }, + .catchRate = 45, + .expYield = 172, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_INNER_FOCUS, ABILITY_TELEPATHY, ABILITY_SYMBIOSIS }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Oranguru"), + .cryId = CRY_ORANGURU, + .natDexNum = NATIONAL_DEX_ORANGURU, + .categoryName = _("Sage"), + .height = 15, + .weight = 760, + .description = COMPOUND_STRING( + "Deep in the jungle, high in the lofty\n" + "canopy, this Pokémon abides. On rare\n" + "occasions, it shows up at the beach to\n" + "match wits with Slowking."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(Oranguru, 56, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Oranguru, + .frontAnimId = ANIM_SHRINK_GROW_SLOW, + BACK_PIC(Oranguru, 64, 48), + .backPicYOffset = 12, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Oranguru), + ICON(Oranguru, 0), + .footprint = gMonFootprint_Oranguru, + LEARNSETS(Oranguru), + }, +#endif //P_FAMILY_ORANGURU + +#if P_FAMILY_PASSIMIAN + [SPECIES_PASSIMIAN] = + { + .baseHP = 100, + .baseAttack = 120, + .baseDefense = 90, + .baseSpeed = 80, + .baseSpAttack = 40, + .baseSpDefense = 60, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 172, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_RECEIVER, ABILITY_NONE, ABILITY_DEFIANT }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Passimian"), + .cryId = CRY_PASSIMIAN, + .natDexNum = NATIONAL_DEX_PASSIMIAN, + .categoryName = _("Teamwork"), + .height = 20, + .weight = 828, + .description = COMPOUND_STRING( + "They battle with hard berries for weapons.\n" + "They form groups of about 20 individuals.\n" + "Their techniques are passed from the boss\n" + "to the group, generation upon generation."), + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, + FRONT_PIC(Passimian, 57, 60), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Passimian, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(Passimian, 51, 52), + .backPicYOffset = 7, + .backAnimId = BACK_ANIM_H_SHAKE, + PALETTES(Passimian), + ICON(Passimian, 1), + .footprint = gMonFootprint_Passimian, + LEARNSETS(Passimian), + }, +#endif //P_FAMILY_PASSIMIAN + +#if P_FAMILY_WIMPOD + [SPECIES_WIMPOD] = + { + .baseHP = 25, + .baseAttack = 35, + .baseDefense = 40, + .baseSpeed = 80, + .baseSpAttack = 20, + .baseSpDefense = 30, + .types = { TYPE_BUG, TYPE_WATER }, + .catchRate = 90, + .expYield = 46, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_WIMP_OUT, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Wimpod"), + .cryId = CRY_WIMPOD, + .natDexNum = NATIONAL_DEX_WIMPOD, + .categoryName = _("Turn Tail"), + .height = 5, + .weight = 120, + .description = COMPOUND_STRING( + "This Pokémon is a coward. As it desperately\n" + "dashes off, the flailing of its many legs\n" + "leaves a sparkling clean path in its wake.\n" + "It lives on beaches and seabeds."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Wimpod, 40, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Wimpod, + .frontAnimId = ANIM_V_SHAKE_H_SLIDE_FAST, + BACK_PIC(Wimpod, 64, 48), + .backPicYOffset = 10, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Wimpod), + ICON(Wimpod, 2), + .footprint = gMonFootprint_Wimpod, + LEARNSETS(Wimpod), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GOLISOPOD}), + }, + + [SPECIES_GOLISOPOD] = + { + .baseHP = 75, + .baseAttack = 125, + .baseDefense = 140, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = 90, + .types = { TYPE_BUG, TYPE_WATER }, + .catchRate = 45, + .expYield = 186, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_EMERGENCY_EXIT, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Golisopod"), + .cryId = CRY_GOLISOPOD, + .natDexNum = NATIONAL_DEX_GOLISOPOD, + .categoryName = _("Hard Scale"), + .height = 20, + .weight = 1080, + .description = COMPOUND_STRING( + "It battles skillfully with its six arms,\n" + "with a flashing slash of its giant sharp\n" + "claws, it cleaves seawater--or even\n" + "air--right in two."), + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, + FRONT_PIC(Golisopod, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Golisopod, + .frontAnimId = ANIM_SHRINK_GROW_VIBRATE_FAST, + BACK_PIC(Golisopod, 64, 48), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Golisopod), + ICON(Golisopod, 2), + .footprint = gMonFootprint_Golisopod, + LEARNSETS(Golisopod), + }, +#endif //P_FAMILY_WIMPOD + +#if P_FAMILY_SANDYGAST + [SPECIES_SANDYGAST] = + { + .baseHP = 55, + .baseAttack = 55, + .baseDefense = 80, + .baseSpeed = 15, + .baseSpAttack = 70, + .baseSpDefense = 45, + .types = { TYPE_GHOST, TYPE_GROUND }, + .catchRate = 140, + .expYield = 64, + .evYield_Defense = 1, + .itemRare = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_WATER_COMPACTION, ABILITY_NONE, ABILITY_SAND_VEIL }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Sandygast"), + .cryId = CRY_SANDYGAST, + .natDexNum = NATIONAL_DEX_SANDYGAST, + .categoryName = _("Sand Heap"), + .height = 5, + .weight = 700, + .description = COMPOUND_STRING( + "It takes control of anyone who puts a hand\n" + "in its mouth, to add to the accumulation\n" + "of its sand-mound body. This Pokémon\n" + "embodies the grudges of the departed."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Sandygast, 48, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Sandygast, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + BACK_PIC(Sandygast, 40, 48), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Sandygast), + ICON(Sandygast, 1), + .footprint = gMonFootprint_Sandygast, + LEARNSETS(Sandygast), + .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_PALOSSAND}), + }, + + [SPECIES_PALOSSAND] = + { + .baseHP = 85, + .baseAttack = 75, + .baseDefense = 110, + .baseSpeed = 35, + .baseSpAttack = 100, + .baseSpDefense = 75, + .types = { TYPE_GHOST, TYPE_GROUND }, + .catchRate = 60, + .expYield = 168, + .evYield_Defense = 2, + .itemRare = ITEM_SPELL_TAG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_WATER_COMPACTION, ABILITY_NONE, ABILITY_SAND_VEIL }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Palossand"), + .cryId = CRY_PALOSSAND, + .natDexNum = NATIONAL_DEX_PALOSSAND, + .categoryName = _("Sand Castle"), + .height = 13, + .weight = 2500, + .description = COMPOUND_STRING( + "Possessed people controlled by this\n" + "Pokémon transformed its sand mound into\n" + "a castle. As it evolved, its power to curse\n" + "grew ever stronger."), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Palossand, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Palossand, + .frontAnimId = ANIM_H_VIBRATE, + BACK_PIC(Palossand, 64, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Palossand), + ICON(Palossand, 2), + .footprint = gMonFootprint_Palossand, + LEARNSETS(Palossand), + }, +#endif //P_FAMILY_SANDYGAST + +#if P_FAMILY_PYUKUMUKU + [SPECIES_PYUKUMUKU] = + { + .baseHP = 55, + .baseAttack = 60, + .baseDefense = 130, + .baseSpeed = 5, + .baseSpAttack = 30, + .baseSpDefense = 130, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 60, + .expYield = 144, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_INNARDS_OUT, ABILITY_NONE, ABILITY_UNAWARE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Pyukumuku"), + .cryId = CRY_PYUKUMUKU, + .natDexNum = NATIONAL_DEX_PYUKUMUKU, + .categoryName = _("Sea Cucumber"), + .height = 3, + .weight = 12, + .description = COMPOUND_STRING( + "It lives in shallow seas, such as areas\n" + "near a beach. The sticky mucous that\n" + "covers their bodies can be used to soothe\n" + "sunburned skin. How convenient!"), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pyukumuku, 40, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Pyukumuku, + .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Pyukumuku, 48, 32), + .backPicYOffset = 16, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Pyukumuku), + ICON(Pyukumuku, 0), + .footprint = gMonFootprint_Pyukumuku, + LEARNSETS(Pyukumuku), + }, +#endif //P_FAMILY_PYUKUMUKU + +#if P_FAMILY_TYPE_NULL + [SPECIES_TYPE_NULL] = + { + .baseHP = 95, + .baseAttack = 95, + .baseDefense = 95, + .baseSpeed = 59, + .baseSpAttack = 95, + .baseSpDefense = 95, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 3, + .expYield = 107, + .evYield_HP = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_BATTLE_ARMOR, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .isLegendary = TRUE, + .speciesName = _("Type: Null"), + .cryId = CRY_TYPE_NULL, + .natDexNum = NATIONAL_DEX_TYPE_NULL, + .categoryName = _("Synthetic"), + .height = 19, + .weight = 1205, + .description = COMPOUND_STRING( + "Due to the danger that this synthetic\n" + "Pokémon may go on a rampage, it wears a\n" + "control mask to restrain its capabilities.\n" + "It has some hidden special power."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + FRONT_PIC(TypeNull, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_TypeNull, + .frontAnimId = ANIM_H_SHAKE, + BACK_PIC(TypeNull, 56, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(TypeNull), + ICON(TypeNull, 0), + .footprint = gMonFootprint_Type_Null, + LEARNSETS(TypeNull), + .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_SILVALLY_NORMAL}), + }, + +#define SILVALLY_SPECIES_INFO(type, palette) \ + { \ + .baseHP = 95, \ + .baseAttack = 95, \ + .baseDefense = 95, \ + .baseSpeed = 95, \ + .baseSpAttack = 95, \ + .baseSpDefense = 95, \ + .types = { type, type }, \ + .catchRate = 3, \ + .expYield = 257, \ + .evYield_HP = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ABILITY_RKS_SYSTEM, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_GRAY, \ + .isLegendary = TRUE, \ + .speciesName = _("Silvally"), \ + .cryId = CRY_SILVALLY, \ + .natDexNum = NATIONAL_DEX_SILVALLY, \ + .categoryName = _("Synthetic"), \ + .height = 23, \ + .weight = 1005, \ + .description = (type == TYPE_NORMAL \ + ? gSilvallyNormalPokedexText \ + : gSilvallyMemoryPokedexText), \ + .pokemonScale = 256, \ + .pokemonOffset = 0, \ + .trainerScale = 342, \ + .trainerOffset = 7, \ + FRONT_PIC(Silvally, 64, 64), \ + .frontPicYOffset = 0, \ + .frontAnimFrames = sAnims_Silvally, \ + .frontAnimId = ANIM_V_SHAKE, \ + BACK_PIC(Silvally, 56, 64), \ + .backPicYOffset = 0, \ + PALETTES(palette), \ + ICON(Silvally, 0), \ + .footprint = gMonFootprint_Silvally, \ + LEARNSETS(Silvally), \ + .formSpeciesIdTable = sSilvallyFormSpeciesIdTable, \ + .formChangeTable = sSilvallyFormChangeTable, \ + } + //.backAnimId = BACK_ANIM_NONE, + + [SPECIES_SILVALLY_NORMAL] = SILVALLY_SPECIES_INFO(TYPE_NORMAL, SilvallyNormal), + [SPECIES_SILVALLY_FIGHTING] = SILVALLY_SPECIES_INFO(TYPE_FIGHTING, SilvallyFighting), + [SPECIES_SILVALLY_FLYING] = SILVALLY_SPECIES_INFO(TYPE_FLYING, SilvallyFlying), + [SPECIES_SILVALLY_POISON] = SILVALLY_SPECIES_INFO(TYPE_POISON, SilvallyPoison), + [SPECIES_SILVALLY_GROUND] = SILVALLY_SPECIES_INFO(TYPE_GROUND, SilvallyGround), + [SPECIES_SILVALLY_ROCK] = SILVALLY_SPECIES_INFO(TYPE_ROCK, SilvallyRock), + [SPECIES_SILVALLY_BUG] = SILVALLY_SPECIES_INFO(TYPE_BUG, SilvallyBug), + [SPECIES_SILVALLY_GHOST] = SILVALLY_SPECIES_INFO(TYPE_GHOST, SilvallyGhost), + [SPECIES_SILVALLY_STEEL] = SILVALLY_SPECIES_INFO(TYPE_STEEL, SilvallySteel), + [SPECIES_SILVALLY_FIRE] = SILVALLY_SPECIES_INFO(TYPE_FIRE, SilvallyFire), + [SPECIES_SILVALLY_WATER] = SILVALLY_SPECIES_INFO(TYPE_WATER, SilvallyWater), + [SPECIES_SILVALLY_GRASS] = SILVALLY_SPECIES_INFO(TYPE_GRASS, SilvallyGrass), + [SPECIES_SILVALLY_ELECTRIC] = SILVALLY_SPECIES_INFO(TYPE_ELECTRIC, SilvallyElectric), + [SPECIES_SILVALLY_PSYCHIC] = SILVALLY_SPECIES_INFO(TYPE_PSYCHIC, SilvallyPsychic), + [SPECIES_SILVALLY_ICE] = SILVALLY_SPECIES_INFO(TYPE_ICE, SilvallyIce), + [SPECIES_SILVALLY_DRAGON] = SILVALLY_SPECIES_INFO(TYPE_DRAGON, SilvallyDragon), + [SPECIES_SILVALLY_DARK] = SILVALLY_SPECIES_INFO(TYPE_DARK, SilvallyDark), + [SPECIES_SILVALLY_FAIRY] = SILVALLY_SPECIES_INFO(TYPE_FAIRY, SilvallyFairy), +#endif //P_FAMILY_TYPE_NULL + +#if P_FAMILY_MINIOR +#define MINIOR_MISC_INFO(color) \ + .types = { TYPE_ROCK, TYPE_FLYING }, \ + .catchRate = 30, \ + .expYield = 154, \ + .evYield_Defense = 1, \ + .evYield_SpDefense = 1, \ + .itemRare = ITEM_STAR_PIECE, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, \ + .abilities = { ABILITY_SHIELDS_DOWN, ABILITY_NONE }, \ + .bodyColor = color, \ + .noFlip = TRUE, \ + .speciesName = _("Minior"), \ + .cryId = CRY_MINIOR, \ + .natDexNum = NATIONAL_DEX_MINIOR, \ + .categoryName = _("Meteor"), \ + .height = 3, \ + .pokemonScale = 530, \ + .pokemonOffset = 13, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Minior, \ + LEARNSETS(Minior), \ + .formSpeciesIdTable = sMiniorFormSpeciesIdTable + +#define MINIOR_METEOR_SPECIES_INFO(Form) \ + { \ + .baseHP = 60, \ + .baseAttack = 60, \ + .baseDefense = 100, \ + .baseSpeed = 60, \ + .baseSpAttack = 60, \ + .baseSpDefense = 100, \ + .weight = 400, \ + FRONT_PIC(MiniorMeteor, 48, 40), \ + .frontPicYOffset = 14, \ + .frontAnimFrames = sAnims_MiniorMeteor, \ + .frontAnimId = ANIM_TUMBLING_FRONT_FLIP_TWICE, \ + .enemyMonElevation = 17, \ + BACK_PIC(MiniorMeteor, 56, 40), \ + .backPicYOffset = 14, \ + PALETTES(MiniorMeteor), \ + ICON(MiniorMeteor, 0), \ + .formChangeTable = sMinior ##Form##FormChangeTable, \ + MINIOR_MISC_INFO(BODY_COLOR_BROWN), \ + } + //.backAnimId = BACK_ANIM_NONE, + +#define MINIOR_CORE_SPECIES_INFO(Form, color, iconPal) \ + { \ + .baseHP = 60, \ + .baseAttack = 100, \ + .baseDefense = 60, \ + .baseSpeed = 120, \ + .baseSpAttack = 100, \ + .baseSpDefense = 60, \ + .weight = 3, \ + .description = gMiniorCorePokedexText, \ + FRONT_PIC(MiniorCore, 48, 40), \ + .frontPicYOffset = 16, \ + .frontAnimFrames = sAnims_MiniorMeteor, \ + .frontAnimId = ANIM_TUMBLING_FRONT_FLIP_TWICE, \ + .enemyMonElevation = 17, \ + BACK_PIC(MiniorCore, 56, 40), \ + .backPicYOffset = 15, \ + .palette = gMonPalette_MiniorCore##Form, \ + .shinyPalette = gMonShinyPalette_MiniorCore, \ + ICON(MiniorCore##Form, iconPal), \ + .formChangeTable = sMinior ##Form##FormChangeTable, \ + MINIOR_MISC_INFO(color), \ + } + //.backAnimId = BACK_ANIM_NONE, + + [SPECIES_MINIOR_METEOR_RED] = MINIOR_METEOR_SPECIES_INFO(Red), + [SPECIES_MINIOR_METEOR_ORANGE] = MINIOR_METEOR_SPECIES_INFO(Orange), + [SPECIES_MINIOR_METEOR_YELLOW] = MINIOR_METEOR_SPECIES_INFO(Yellow), + [SPECIES_MINIOR_METEOR_GREEN] = MINIOR_METEOR_SPECIES_INFO(Green), + [SPECIES_MINIOR_METEOR_BLUE] = MINIOR_METEOR_SPECIES_INFO(Blue), + [SPECIES_MINIOR_METEOR_INDIGO] = MINIOR_METEOR_SPECIES_INFO(Indigo), + [SPECIES_MINIOR_METEOR_VIOLET] = MINIOR_METEOR_SPECIES_INFO(Violet), + [SPECIES_MINIOR_CORE_RED] = MINIOR_CORE_SPECIES_INFO(Red, BODY_COLOR_RED, 0), + [SPECIES_MINIOR_CORE_ORANGE] = MINIOR_CORE_SPECIES_INFO(Orange, BODY_COLOR_RED, 0), + [SPECIES_MINIOR_CORE_YELLOW] = MINIOR_CORE_SPECIES_INFO(Yellow, BODY_COLOR_YELLOW, 0), + [SPECIES_MINIOR_CORE_GREEN] = MINIOR_CORE_SPECIES_INFO(Green, BODY_COLOR_GREEN, 1), + [SPECIES_MINIOR_CORE_BLUE] = MINIOR_CORE_SPECIES_INFO(Blue, BODY_COLOR_BLUE, 0), + [SPECIES_MINIOR_CORE_INDIGO] = MINIOR_CORE_SPECIES_INFO(Indigo, BODY_COLOR_BLUE, 0), + [SPECIES_MINIOR_CORE_VIOLET] = MINIOR_CORE_SPECIES_INFO(Violet, BODY_COLOR_PURPLE, 2), +#endif //P_FAMILY_MINIOR + +#if P_FAMILY_KOMALA + [SPECIES_KOMALA] = + { + .baseHP = 65, + .baseAttack = 115, + .baseDefense = 65, + .baseSpeed = 65, + .baseSpAttack = 75, + .baseSpDefense = 95, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 45, + .expYield = 168, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_COMATOSE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Komala"), + .cryId = CRY_KOMALA, + .natDexNum = NATIONAL_DEX_KOMALA, + .categoryName = _("Drowsing"), + .height = 4, + .weight = 199, + .description = COMPOUND_STRING( + "It is born asleep, and it dies asleep.\n" + "All its movements are apparently no more\n" + "than the results of it tossing and turning\n" + "in its dreams."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Komala, 48, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Komala, + .frontAnimId = ANIM_H_DIP, + BACK_PIC(Komala, 64, 48), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Komala), + ICON(Komala, 2), + .footprint = gMonFootprint_Komala, + LEARNSETS(Komala), + }, +#endif //P_FAMILY_KOMALA + +#if P_FAMILY_TURTONATOR + [SPECIES_TURTONATOR] = + { + .baseHP = 60, + .baseAttack = 78, + .baseDefense = 135, + .baseSpeed = 36, + .baseSpAttack = 91, + .baseSpDefense = 85, + .types = { TYPE_FIRE, TYPE_DRAGON }, + .catchRate = 70, + .expYield = 170, + .evYield_Defense = 2, + .itemRare = ITEM_CHARCOAL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_SHELL_ARMOR, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Turtonator"), + .cryId = CRY_TURTONATOR, + .natDexNum = NATIONAL_DEX_TURTONATOR, + .categoryName = _("Blast Turtle"), + .height = 20, + .weight = 2120, + .description = COMPOUND_STRING( + "The shell on its back is chemically\n" + "unstable and explodes violently if struck.\n" + "The hole in its stomach is its weak point.\n" + "It gushes fire from its nostrils."), + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, + FRONT_PIC(Turtonator, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Turtonator, + .frontAnimId = ANIM_SHAKE_GLOW_RED, + BACK_PIC(Turtonator, 64, 56), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Turtonator), + ICON(Turtonator, 0), + .footprint = gMonFootprint_Turtonator, + LEARNSETS(Turtonator), + }, +#endif //P_FAMILY_TURTONATOR + +#if P_FAMILY_TOGEDEMARU + [SPECIES_TOGEDEMARU] = + { + .baseHP = 65, + .baseAttack = 98, + .baseDefense = 63, + .baseSpeed = 96, + .baseSpAttack = 40, + .baseSpDefense = 73, + .types = { TYPE_ELECTRIC, TYPE_STEEL }, + .catchRate = 180, + .expYield = 152, + .evYield_Attack = 2, + .itemRare = ITEM_ELECTRIC_SEED, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_IRON_BARBS, ABILITY_LIGHTNING_ROD, ABILITY_STURDY }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Togedemaru"), + .cryId = CRY_TOGEDEMARU, + .natDexNum = NATIONAL_DEX_TOGEDEMARU, + .categoryName = _("Roly-Poly"), + .height = 3, + .weight = 33, + .description = COMPOUND_STRING( + "The spiny fur on its back is normally\n" + "at rest. When this Pokémon becomes\n" + "agitated, its fur stands on end and stabs\n" + "into its attackers."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Togedemaru, 40, 40), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Togedemaru, + .frontAnimId = ANIM_FLASH_YELLOW, + BACK_PIC(Togedemaru, 64, 48), + .backPicYOffset = 13, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(Togedemaru), + ICON(Togedemaru, 2), + .footprint = gMonFootprint_Togedemaru, + LEARNSETS(Togedemaru), + }, +#endif //P_FAMILY_TOGEDEMARU + +#if P_FAMILY_MIMIKYU +#define MIMIKYU_MISC_INFO \ + .baseHP = 55, \ + .baseAttack = 90, \ + .baseDefense = 80, \ + .baseSpeed = 96, \ + .baseSpAttack = 50, \ + .baseSpDefense = 105, \ + .types = { TYPE_GHOST, TYPE_FAIRY }, \ + .catchRate = 45, \ + .expYield = 167, \ + .evYield_SpDefense = 2, \ + .itemRare = ITEM_CHESTO_BERRY, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_AMORPHOUS }, \ + .abilities = { ABILITY_DISGUISE, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_YELLOW, \ + .speciesName = _("Mimikyu"), \ + .cryId = CRY_MIMIKYU, \ + .natDexNum = NATIONAL_DEX_MIMIKYU, \ + .categoryName = _("Disguise"), \ + .height = 2, \ + .weight = 7, \ + .pokemonScale = 682, \ + .pokemonOffset = 24, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Mimikyu, \ + LEARNSETS(Mimikyu), \ + .formSpeciesIdTable = sMimikyuFormSpeciesIdTable, \ + .formChangeTable = sMimikyuFormChangeTable + + [SPECIES_MIMIKYU_DISGUISED] = + { + MIMIKYU_MISC_INFO, + .description = COMPOUND_STRING( + "A lonely Pokémon, it hides its terrifying\n" + "appearance beneath an old rag so it can\n" + "get closer to people and other Pokémon.\n" + "Its actual appearance is unknown."), + FRONT_PIC(MimikyuDisguised, 48, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_MimikyuDisguised, + .frontAnimId = ANIM_DEEP_V_SQUISH_AND_BOUNCE, + BACK_PIC(MimikyuDisguised, 56, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(MimikyuDisguised), + ICON(MimikyuDisguised, 1), + }, + + [SPECIES_MIMIKYU_BUSTED] = + { + MIMIKYU_MISC_INFO, + .description = COMPOUND_STRING( + "After going to all the effort of\n" + "disguising itself, its neck was\n" + "broken. Whatever is inside is probably\n" + "unharmed, but it's still feeling sad."), + FRONT_PIC(MimikyuBusted, 48, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_MimikyuBusted, + .frontAnimId = ANIM_DEEP_V_SQUISH_AND_BOUNCE, + BACK_PIC(MimikyuBusted, 64, 40), + .backPicYOffset = 15, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(MimikyuBusted), + ICON(MimikyuBusted, 1), + }, +#endif //P_FAMILY_MIMIKYU + +#if P_FAMILY_BRUXISH + [SPECIES_BRUXISH] = + { + .baseHP = 68, + .baseAttack = 105, + .baseDefense = 70, + .baseSpeed = 92, + .baseSpAttack = 70, + .baseSpDefense = 70, + .types = { TYPE_WATER, TYPE_PSYCHIC }, + .catchRate = 80, + .expYield = 166, + .evYield_Attack = 2, + .itemRare = ITEM_RAZOR_FANG, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_DAZZLING, ABILITY_STRONG_JAW, ABILITY_WONDER_SKIN }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Bruxish"), + .cryId = CRY_BRUXISH, + .natDexNum = NATIONAL_DEX_BRUXISH, + .categoryName = _("Gnash Teeth"), + .height = 9, + .weight = 190, + .description = COMPOUND_STRING( + "It stuns its prey with its psychic powers\n" + "and then grinds them to mush with its\n" + "strong teeth. Even Shellder's shell is no\n" + "match for it."), + .pokemonScale = 338, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Bruxish, 56, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Bruxish, + .frontAnimId = ANIM_RISING_WOBBLE, + BACK_PIC(Bruxish, 64, 48), + .backPicYOffset = 14, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Bruxish), + ICON(Bruxish, 0), + .footprint = gMonFootprint_Bruxish, + LEARNSETS(Bruxish), + }, +#endif //P_FAMILY_BRUXISH + +#if P_FAMILY_DRAMPA + [SPECIES_DRAMPA] = + { + .baseHP = 78, + .baseAttack = 60, + .baseDefense = 85, + .baseSpeed = 36, + .baseSpAttack = 135, + .baseSpDefense = 91, + .types = { TYPE_NORMAL, TYPE_DRAGON }, + .catchRate = 70, + .expYield = 170, + .evYield_SpAttack = 2, + .itemRare = ITEM_PERSIM_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_BERSERK, ABILITY_SAP_SIPPER, ABILITY_CLOUD_NINE }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Drampa"), + .cryId = CRY_DRAMPA, + .natDexNum = NATIONAL_DEX_DRAMPA, + .categoryName = _("Placid"), + .height = 30, + .weight = 1850, + .description = COMPOUND_STRING( + "This Pokémon is friendly to people and\n" + "loves children most of all. It comes from\n" + "deep in the mountains to play with\n" + "children it likes in town."), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Drampa, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Drampa, + .frontAnimId = ANIM_V_SHAKE_TWICE, + BACK_PIC(Drampa, 64, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_H_SLIDE, + PALETTES(Drampa), + ICON(Drampa, 0), + .footprint = gMonFootprint_Drampa, + LEARNSETS(Drampa), + }, +#endif //P_FAMILY_DRAMPA + +#if P_FAMILY_DHELMISE + [SPECIES_DHELMISE] = + { + .baseHP = 70, + .baseAttack = 131, + .baseDefense = 100, + .baseSpeed = 40, + .baseSpAttack = 86, + .baseSpDefense = 90, + .types = { TYPE_GHOST, TYPE_GRASS }, + .catchRate = 25, + .expYield = 181, + .evYield_Attack = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_STEELWORKER, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + .speciesName = _("Dhelmise"), + .cryId = CRY_DHELMISE, + .natDexNum = NATIONAL_DEX_DHELMISE, + .categoryName = _("Sea Creeper"), + .height = 39, + .weight = 2100, + .description = COMPOUND_STRING( + "The soul of seaweed adrift in the waves\n" + "became reborn as this Pokémon.\n" + "It maintains itself with new infusions of\n" + "seabed detritus and seaweed."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 510, + .trainerOffset = 11, + FRONT_PIC(Dhelmise, 48, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Dhelmise, + .frontAnimId = ANIM_SWING_CONVEX, + .enemyMonElevation = 2, + BACK_PIC(Dhelmise, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Dhelmise), + ICON(Dhelmise, 1), + .footprint = gMonFootprint_Dhelmise, + LEARNSETS(Dhelmise), + }, +#endif //P_FAMILY_DHELMISE + +#if P_FAMILY_JANGMO_O + [SPECIES_JANGMO_O] = + { + .baseHP = 45, + .baseAttack = 55, + .baseDefense = 65, + .baseSpeed = 45, + .baseSpAttack = 45, + .baseSpDefense = 45, + .types = { TYPE_DRAGON, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 60, + .evYield_Defense = 1, + .itemRare = ITEM_RAZOR_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_BULLETPROOF, ABILITY_SOUNDPROOF, ABILITY_OVERCOAT }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Jangmo-o"), + .cryId = CRY_JANGMO_O, + .natDexNum = NATIONAL_DEX_JANGMO_O, + .categoryName = _("Scaly"), + .height = 6, + .weight = 297, + .description = COMPOUND_STRING( + "It expresses its feelings by smacking its\n" + "scales. Metallic sounds echo through the\n" + "tall mountains where Jangmo-o live. They\n" + "grow little by little battling one another."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(JangmoO, 36, 43), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Jangmo_O, + .frontAnimId = ANIM_H_STRETCH, + BACK_PIC(JangmoO, 42, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_GROW_STUTTER, + PALETTES(JangmoO), + ICON(JangmoO, 2), + .footprint = gMonFootprint_JangmoO, + LEARNSETS(JangmoO), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_HAKAMO_O}), + }, + + [SPECIES_HAKAMO_O] = + { + .baseHP = 55, + .baseAttack = 75, + .baseDefense = 90, + .baseSpeed = 65, + .baseSpAttack = 65, + .baseSpDefense = 70, + .types = { TYPE_DRAGON, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 147, + .evYield_Defense = 2, + .itemRare = ITEM_RAZOR_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_BULLETPROOF, ABILITY_SOUNDPROOF, ABILITY_OVERCOAT }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Hakamo-o"), + .cryId = CRY_HAKAMO_O, + .natDexNum = NATIONAL_DEX_HAKAMO_O, + .categoryName = _("Scaly"), + .height = 12, + .weight = 470, + .description = COMPOUND_STRING( + "It sheds and regrows its scales on a\n" + "continuous basis. The scales become\n" + "harder each time they're regrown. Its\n" + "scaly punches tear its foes to shreds."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(HakamoO, 53, 61), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Hakamo_O, + .frontAnimId = ANIM_H_STRETCH, + BACK_PIC(HakamoO, 49, 56), + .backPicYOffset = 5, + .backAnimId = BACK_ANIM_H_STRETCH, + PALETTES(HakamoO), + ICON(HakamoO, 2), + .footprint = gMonFootprint_HakamoO, + LEARNSETS(HakamoO), + .evolutions = EVOLUTION({EVO_LEVEL, 45, SPECIES_KOMMO_O}), + }, + + [SPECIES_KOMMO_O] = + { + .baseHP = 75, + .baseAttack = 110, + .baseDefense = 125, + .baseSpeed = 85, + .baseSpAttack = 100, + .baseSpDefense = 105, + .types = { TYPE_DRAGON, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 270, + .evYield_Defense = 3, + .itemCommon = ITEM_RAZOR_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_BULLETPROOF, ABILITY_SOUNDPROOF, ABILITY_OVERCOAT }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Kommo-o"), + .cryId = CRY_KOMMO_O, + .natDexNum = NATIONAL_DEX_KOMMO_O, + .categoryName = _("Scaly"), + .height = 16, + .weight = 782, + .description = COMPOUND_STRING( + "Its rigid scales function as offense and\n" + "defense. In the past, its scales were\n" + "processed and used to make weapons\n" + "and other valuable commodities."), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + FRONT_PIC(KommoO, 63, 63), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Kommo_O, + .frontAnimId = ANIM_SHRINK_GROW_VIBRATE_FAST, + BACK_PIC(KommoO, 60, 60), + .backPicYOffset = 2, + .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, + PALETTES(KommoO), + ICON(KommoO, 2), + .footprint = gMonFootprint_KommoO, + LEARNSETS(KommoO), + }, +#endif //P_FAMILY_JANGMO_O + +#if P_FAMILY_TAPU_KOKO + [SPECIES_TAPU_KOKO] = + { + .baseHP = 70, + .baseAttack = 115, + .baseDefense = 85, + .baseSpeed = 130, + .baseSpAttack = 95, + .baseSpDefense = 75, + .types = { TYPE_ELECTRIC, TYPE_FAIRY }, + .catchRate = 3, + .expYield = 257, + .evYield_Speed = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_ELECTRIC_SURGE, ABILITY_NONE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_YELLOW, + .isLegendary = TRUE, + .speciesName = _("Tapu Koko"), + .cryId = CRY_TAPU_KOKO, + .natDexNum = NATIONAL_DEX_TAPU_KOKO, + .categoryName = _("Land Spirit"), + .height = 18, + .weight = 205, + .description = COMPOUND_STRING( + "It confuses its enemies by flying too\n" + "quickly for the eye to follow. It has a\n" + "hair-trigger temper but forgets what\n" + "made it angry an instant later."), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + FRONT_PIC(TapuKoko, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_TapuKoko, + .frontAnimId = ANIM_TRIANGLE_DOWN_TWICE, + .enemyMonElevation = 9, + BACK_PIC(TapuKoko, 64, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(TapuKoko), + ICON(TapuKoko, 0), + .footprint = gMonFootprint_Tapu_Koko, + LEARNSETS(TapuKoko), + }, +#endif //P_FAMILY_TAPU_KOKO + +#if P_FAMILY_TAPU_LELE + [SPECIES_TAPU_LELE] = + { + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 75, + .baseSpeed = 95, + .baseSpAttack = 130, + .baseSpDefense = 115, + .types = { TYPE_PSYCHIC, TYPE_FAIRY }, + .catchRate = 3, + .expYield = 257, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_PSYCHIC_SURGE, ABILITY_NONE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_PINK, + .isLegendary = TRUE, + .speciesName = _("Tapu Lele"), + .cryId = CRY_TAPU_LELE, + .natDexNum = NATIONAL_DEX_TAPU_LELE, + .categoryName = _("Land Spirit"), + .height = 12, + .weight = 186, + .description = COMPOUND_STRING( + "A fragrant aroma of flowers follows it.\n" + "As it flutters about, it scatters its\n" + "strangely glowing scales. Touching them\n" + "is said to restore good health."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(TapuLele, 48, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_TapuLele, + .frontAnimId = ANIM_V_SLIDE_WOBBLE_SMALL, + .enemyMonElevation = 8, + BACK_PIC(TapuLele, 56, 56), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(TapuLele), + ICON(TapuLele, 0), + .footprint = gMonFootprint_Tapu_Lele, + LEARNSETS(TapuLele), + }, +#endif //P_FAMILY_TAPU_LELE + +#if P_FAMILY_TAPU_BULU + [SPECIES_TAPU_BULU] = + { + .baseHP = 70, + .baseAttack = 130, + .baseDefense = 115, + .baseSpeed = 75, + .baseSpAttack = 85, + .baseSpDefense = 95, + .types = { TYPE_GRASS, TYPE_FAIRY }, + .catchRate = 3, + .expYield = 257, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_GRASSY_SURGE, ABILITY_NONE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_RED, + .isLegendary = TRUE, + .speciesName = _("Tapu Bulu"), + .cryId = CRY_TAPU_BULU, + .natDexNum = NATIONAL_DEX_TAPU_BULU, + .categoryName = _("Land Spirit"), + .height = 19, + .weight = 455, + .description = COMPOUND_STRING( + "It causes vegetation to grow, and then\n" + "it absorbs energy from the growth.\n" + "It pulls large trees up by the roots and\n" + "swings them around at its enemies."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + FRONT_PIC(TapuBulu, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_TapuBulu, + .frontAnimId = ANIM_V_SHAKE_TWICE, + .enemyMonElevation = 5, + BACK_PIC(TapuBulu, 64, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(TapuBulu), + ICON(TapuBulu, 2), + .footprint = gMonFootprint_Tapu_Bulu, + LEARNSETS(TapuBulu), + }, +#endif //P_FAMILY_TAPU_BULU + +#if P_FAMILY_TAPU_FINI + [SPECIES_TAPU_FINI] = + { + .baseHP = 70, + .baseAttack = 75, + .baseDefense = 115, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 130, + .types = { TYPE_WATER, TYPE_FAIRY }, + .catchRate = 3, + .expYield = 257, + .evYield_SpDefense = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_MISTY_SURGE, ABILITY_NONE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_PURPLE, + .isLegendary = TRUE, + .speciesName = _("Tapu Fini"), + .cryId = CRY_TAPU_FINI, + .natDexNum = NATIONAL_DEX_TAPU_FINI, + .categoryName = _("Land Spirit"), + .height = 13, + .weight = 212, + .description = COMPOUND_STRING( + "People say it can create pure water that\n" + "will wash away any corruption. The dense\n" + "fog it creates brings the downfall and\n" + "destruction of its confused enemies."), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(TapuFini, 56, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_TapuFini, + .frontAnimId = ANIM_SHAKE_GLOW_BLUE_SLOW, + .frontAnimDelay = 5, + .enemyMonElevation = 6, + BACK_PIC(TapuFini, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(TapuFini), + ICON(TapuFini, 0), + .footprint = gMonFootprint_Tapu_Fini, + LEARNSETS(TapuFini), + }, +#endif //P_FAMILY_TAPU_FINI + +#if P_FAMILY_COSMOG + [SPECIES_COSMOG] = + { + .baseHP = 43, + .baseAttack = 29, + .baseDefense = 31, + .baseSpeed = 37, + .baseSpAttack = 29, + .baseSpDefense = 31, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 45, + .expYield = 40, + .evYield_HP = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_UNAWARE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .isLegendary = TRUE, + .speciesName = _("Cosmog"), + .cryId = CRY_COSMOG, + .natDexNum = NATIONAL_DEX_COSMOG, + .categoryName = _("Nebula"), + .height = 2, + .weight = 1, + .description = COMPOUND_STRING( + "In ages past, it was called the child of\n" + "the stars. It's said to be a Pokémon from\n" + "another world, but no specific details\n" + "are known."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cosmog, 56, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Cosmog, + .frontAnimId = ANIM_H_JUMPS_V_STRETCH, + .enemyMonElevation = 7, + BACK_PIC(Cosmog, 64, 48), + .backPicYOffset = 10, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Cosmog), + ICON(Cosmog, 2), + .footprint = gMonFootprint_Cosmog, + LEARNSETS(Cosmog), + .evolutions = EVOLUTION({EVO_LEVEL, 43, SPECIES_COSMOEM}), + }, + + [SPECIES_COSMOEM] = + { + .baseHP = 43, + .baseAttack = 29, + .baseDefense = 131, + .baseSpeed = 37, + .baseSpAttack = 29, + .baseSpDefense = 131, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 45, + .expYield = 140, + .evYield_Defense = 1, + .evYield_SpDefense = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_STURDY, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .isLegendary = TRUE, + .speciesName = _("Cosmoem"), + .cryId = CRY_COSMOEM, + .natDexNum = NATIONAL_DEX_COSMOEM, + .categoryName = _("Protostar"), + .height = 1, + .weight = 9999, + .description = COMPOUND_STRING( + "Motionless as if dead, its body is faintly\n" + "warm to the touch. There's something\n" + "accumulating around the black core\n" + "within its hard shell."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cosmoem, 48, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Cosmoem, + .frontAnimId = ANIM_RISING_WOBBLE, + .enemyMonElevation = 3, + BACK_PIC(Cosmoem, 64, 40), + .backPicYOffset = 17, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Cosmoem), + ICON(Cosmoem, 0), + .footprint = gMonFootprint_Cosmoem, + LEARNSETS(Cosmoem), + .evolutions = EVOLUTION({EVO_LEVEL_DAY, 53, SPECIES_SOLGALEO}, + {EVO_LEVEL_NIGHT, 53, SPECIES_LUNALA}), + }, + + [SPECIES_SOLGALEO] = + { + .baseHP = 137, + .baseAttack = 137, + .baseDefense = 107, + .baseSpeed = 97, + .baseSpAttack = 113, + .baseSpDefense = 89, + .types = { TYPE_PSYCHIC, TYPE_STEEL }, + .catchRate = 45, + .expYield = 306, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_FULL_METAL_BODY, ABILITY_NONE }, + .bodyColor = BODY_COLOR_WHITE, + .isLegendary = TRUE, + .speciesName = _("Solgaleo"), + .cryId = CRY_SOLGALEO, + .natDexNum = NATIONAL_DEX_SOLGALEO, + .categoryName = _("Sunne"), + .height = 34, + .weight = 2300, + .description = COMPOUND_STRING( + "It is said to live in another world.\n" + "The intense light it radiates from the\n" + "surface of its body can make the darkest\n" + "of nights light up like midday."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 405, + .trainerOffset = 8, + FRONT_PIC(Solgaleo, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Solgaleo, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Solgaleo, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Solgaleo), + ICON(Solgaleo, 0), + .footprint = gMonFootprint_Solgaleo, + LEARNSETS(Solgaleo), + }, + + [SPECIES_LUNALA] = + { + .baseHP = 137, + .baseAttack = 113, + .baseDefense = 89, + .baseSpeed = 97, + .baseSpAttack = 137, + .baseSpDefense = 107, + .types = { TYPE_PSYCHIC, TYPE_GHOST }, + .catchRate = 45, + .expYield = 306, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_SHADOW_SHIELD, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PURPLE, + .isLegendary = TRUE, + .speciesName = _("Lunala"), + .cryId = CRY_LUNALA, + .natDexNum = NATIONAL_DEX_LUNALA, + .categoryName = _("Moone"), + .height = 40, + .weight = 1200, + .description = COMPOUND_STRING( + "When its third eye activates, away it flies\n" + "to another world. This Pokémon devours\n" + "light, drawing the moonless dark veil of\n" + "night over the brightness of day."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 411, + .trainerOffset = 5, + FRONT_PIC(Lunala, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Lunala, + .frontAnimId = ANIM_CIRCULAR_VIBRATE, + .enemyMonElevation = 6, + BACK_PIC(Lunala, 64, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Lunala), + ICON(Lunala, 2), + .footprint = gMonFootprint_Lunala, + LEARNSETS(Lunala), + }, +#endif //P_FAMILY_COSMOG + +#if P_FAMILY_NIHILEGO + [SPECIES_NIHILEGO] = + { + .baseHP = 109, + .baseAttack = 53, + .baseDefense = 47, + .baseSpeed = 103, + .baseSpAttack = 127, + .baseSpDefense = 131, + .types = { TYPE_ROCK, TYPE_POISON }, + .catchRate = 45, + .expYield = 257, + .evYield_SpDefense = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_WHITE, + .isUltraBeast = TRUE, + .speciesName = _("Nihilego"), + .cryId = CRY_NIHILEGO, + .natDexNum = NATIONAL_DEX_NIHILEGO, + .categoryName = _("Parasite"), + .height = 12, + .weight = 555, + .description = COMPOUND_STRING( + "One of several mysterious Ultra Beasts.\n" + "It's unclear whether or not this Pokémon\n" + "is sentient, but sometimes it can be\n" + "observed behaving like a young girl."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Nihilego, 48, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Nihilego, + .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, + .enemyMonElevation = 6, + BACK_PIC(Nihilego, 64, 48), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Nihilego), + ICON(Nihilego, 0), + .footprint = gMonFootprint_Nihilego, + LEARNSETS(Nihilego), + }, +#endif //P_FAMILY_NIHILEGO + +#if P_FAMILY_BUZZWOLE + [SPECIES_BUZZWOLE] = + { + .baseHP = 107, + .baseAttack = 139, + .baseDefense = 139, + .baseSpeed = 79, + .baseSpAttack = 53, + .baseSpDefense = 53, + .types = { TYPE_BUG, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 257, + .evYield_Attack = 1, + .evYield_Defense = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .isUltraBeast = TRUE, + .speciesName = _("Buzzwole"), + .cryId = CRY_BUZZWOLE, + .natDexNum = NATIONAL_DEX_BUZZWOLE, + .categoryName = _("Swollen"), + .height = 24, + .weight = 3336, + .description = COMPOUND_STRING( + "This life-form called an Ultra Beast\n" + "appeared from another world. It shows\n" + "off its body, but whether that display\n" + "is a boast or a threat remains unclear."), + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 369, + .trainerOffset = 7, + FRONT_PIC(Buzzwole, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Buzzwole, + .frontAnimId = ANIM_SHRINK_GROW_VIBRATE_FAST, + BACK_PIC(Buzzwole, 64, 56), + .backPicYOffset = 14, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Buzzwole), + ICON(Buzzwole, 0), + .footprint = gMonFootprint_Buzzwole, + LEARNSETS(Buzzwole), + }, +#endif //P_FAMILY_BUZZWOLE + +#if P_FAMILY_PHEROMOSA + [SPECIES_PHEROMOSA] = + { + .baseHP = 71, + .baseAttack = 137, + .baseDefense = 37, + .baseSpeed = 151, + .baseSpAttack = 137, + .baseSpDefense = 37, + .types = { TYPE_BUG, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 257, + .evYield_Speed = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_WHITE, + .isUltraBeast = TRUE, + .speciesName = _("Pheromosa"), + .cryId = CRY_PHEROMOSA, + .natDexNum = NATIONAL_DEX_PHEROMOSA, + .categoryName = _("Lissome"), + .height = 18, + .weight = 250, + .description = COMPOUND_STRING( + "One of the dangerous Ultra Beasts,\n" + "it refuses to touch anything, perhaps\n" + "because it senses some uncleanness\n" + "in this world."), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + FRONT_PIC(Pheromosa, 56, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Pheromosa, + .frontAnimId = ANIM_SHRINK_GROW, + BACK_PIC(Pheromosa, 64, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Pheromosa), + ICON(Pheromosa, 2), + .footprint = gMonFootprint_Pheromosa, + LEARNSETS(Pheromosa), + }, +#endif //P_FAMILY_PHEROMOSA + +#if P_FAMILY_XURKITREE + [SPECIES_XURKITREE] = + { + .baseHP = 83, + .baseAttack = 89, + .baseDefense = 71, + .baseSpeed = 83, + .baseSpAttack = 173, + .baseSpDefense = 71, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 45, + .expYield = 257, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLACK, + .isUltraBeast = TRUE, + .speciesName = _("Xurkitree"), + .cryId = CRY_XURKITREE, + .natDexNum = NATIONAL_DEX_XURKITREE, + .categoryName = _("Glowing"), + .height = 38, + .weight = 1000, + .description = COMPOUND_STRING( + "One of the mysterious life-forms known\n" + "as Ultra Beasts. Astonishing electric\n" + "shocks emanate from its entire body,\n" + "according to witnesses."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 610, + .trainerOffset = 17, + FRONT_PIC(Xurkitree, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Xurkitree, + .frontAnimId = ANIM_SHAKE_FLASH_YELLOW_FAST, + BACK_PIC(Xurkitree, 64, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Xurkitree), + ICON(Xurkitree, 0), + .footprint = gMonFootprint_Xurkitree, + LEARNSETS(Xurkitree), + }, +#endif //P_FAMILY_XURKITREE + +#if P_FAMILY_CELESTEELA + [SPECIES_CELESTEELA] = + { + .baseHP = 97, + .baseAttack = 101, + .baseDefense = 103, + .baseSpeed = 61, + .baseSpAttack = 107, + .baseSpDefense = 101, + .types = { TYPE_STEEL, TYPE_FLYING }, + .catchRate = 45, + .expYield = 257, + .evYield_Attack = 1, + .evYield_Defense = 1, + .evYield_SpAttack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .isUltraBeast = TRUE, + .speciesName = _("Celesteela"), + .cryId = CRY_CELESTEELA, + .natDexNum = NATIONAL_DEX_CELESTEELA, + .categoryName = _("Launch"), + .height = 92, + .weight = 9999, + .description = COMPOUND_STRING( + "It appeared from the Ultra Wormhole.\n" + "One kind of Ultra Beast, witnesses saw\n" + "it flying across the sky by expelling gas\n" + "from its two arms."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 516, + .trainerOffset = 13, + FRONT_PIC(Celesteela, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Celesteela, + .frontAnimId = ANIM_GROW_STUTTER_SLOW, + BACK_PIC(Celesteela, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Celesteela), + ICON(Celesteela, 0), + .footprint = gMonFootprint_Celesteela, + LEARNSETS(Celesteela), + }, +#endif //P_FAMILY_CELESTEELA + +#if P_FAMILY_KARTANA + [SPECIES_KARTANA] = + { + .baseHP = 59, + .baseAttack = 181, + .baseDefense = 131, + .baseSpeed = 109, + .baseSpAttack = 59, + .baseSpDefense = 31, + .types = { TYPE_GRASS, TYPE_STEEL }, + .catchRate = 45, + .expYield = 257, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_WHITE, + .isUltraBeast = TRUE, + .speciesName = _("Kartana"), + .cryId = CRY_KARTANA, + .natDexNum = NATIONAL_DEX_KARTANA, + .categoryName = _("Drawn Sword"), + .height = 3, + .weight = 1, + .description = COMPOUND_STRING( + "This Ultra Beast came from the\n" + "Ultra Wormhole. It seems not to attack\n" + "enemies on its own, but its sharp body is\n" + "a dangerous weapon in itself."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Kartana, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Kartana, + .frontAnimId = ANIM_H_VIBRATE, + .enemyMonElevation = 3, + BACK_PIC(Kartana, 64, 48), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Kartana), + ICON(Kartana, 0), + .footprint = gMonFootprint_Kartana, + LEARNSETS(Kartana), + }, +#endif //P_FAMILY_KARTANA + +#if P_FAMILY_GUZZLORD + [SPECIES_GUZZLORD] = + { + .baseHP = 223, + .baseAttack = 101, + .baseDefense = 53, + .baseSpeed = 43, + .baseSpAttack = 97, + .baseSpDefense = 53, + .types = { TYPE_DARK, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 257, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLACK, + .isUltraBeast = TRUE, + .speciesName = _("Guzzlord"), + .cryId = CRY_GUZZLORD, + .natDexNum = NATIONAL_DEX_GUZZLORD, + .categoryName = _("Junkivore"), + .height = 55, + .weight = 8880, + .description = COMPOUND_STRING( + "A dangerous Ultra Beast, it has gobbled\n" + "mountains and swallowed whole buildings,\n" + "according to reports. But for some reason\n" + "its droppings have never been found."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 721, + .trainerOffset = 19, + FRONT_PIC(Guzzlord, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Guzzlord, + .frontAnimId = ANIM_SHRINK_GROW_VIBRATE_FAST, + BACK_PIC(Guzzlord, 64, 56), + .backPicYOffset = 10, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Guzzlord), + ICON(Guzzlord, 0), + .footprint = gMonFootprint_Guzzlord, + LEARNSETS(Guzzlord), + }, +#endif //P_FAMILY_GUZZLORD + +#if P_FAMILY_NECROZMA +#define NECROZMA_MISC_INFO \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .noFlip = TRUE, \ + .speciesName = _("Necrozma"), \ + .natDexNum = NATIONAL_DEX_NECROZMA, \ + .categoryName = _("Prism"), \ + .pokemonScale = 256, \ + .pokemonOffset = 3, \ + .trainerScale = 369, \ + .trainerOffset = 7, \ + .footprint = gMonFootprint_Necrozma, \ + LEARNSETS(Necrozma), \ + .formSpeciesIdTable = sNecrozmaFormSpeciesIdTable, \ + .isLegendary = TRUE + + [SPECIES_NECROZMA] = + { + NECROZMA_MISC_INFO, + .baseHP = 97, + .baseAttack = 107, + .baseDefense = 101, + .baseSpeed = 79, + .baseSpAttack = 127, + .baseSpDefense = 89, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 255, + .expYield = 270, + .evYield_Attack = 1, + .evYield_SpAttack = 2, + .abilities = { ABILITY_PRISM_ARMOR, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLACK, + .cryId = CRY_NECROZMA, + .height = 24, + .weight = 2300, + .description = COMPOUND_STRING( + "Reminiscent of the Ultra Beasts, this\n" + "life-form, apparently asleep underground,\n" + "is thought to have come from another\n" + "world in ancient times."), + FRONT_PIC(Necrozma, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Necrozma, + .frontAnimId = ANIM_GROW_VIBRATE, + .enemyMonElevation = 6, + BACK_PIC(Necrozma, 64, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Necrozma), + ICON(Necrozma, 0), + }, + +#if P_FUSION_FORMS + [SPECIES_NECROZMA_DUSK_MANE] = + { + NECROZMA_MISC_INFO, + .baseHP = 97, + .baseAttack = 157, + .baseDefense = 127, + .baseSpeed = 77, + .baseSpAttack = 113, + .baseSpDefense = 109, + .types = { TYPE_PSYCHIC, TYPE_STEEL }, + .catchRate = 255, + .expYield = 306, + .evYield_Attack = 3, + .abilities = { ABILITY_PRISM_ARMOR, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .cryId = CRY_NECROZMA_DUSK_MANE, + .height = 38, + .weight = 4600, + .description = COMPOUND_STRING( + "This is its form while it is\n" + "devouring the light of Solgaleo. It pounces\n" + "on foes and then slashes them with\n" + "the claws on its four limbs and back."), + FRONT_PIC(NecrozmaDuskMane, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Necrozma, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(NecrozmaDuskMane, 64, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(NecrozmaDuskMane), + ICON(NecrozmaDuskMane, 0), + .cannotBeTraded = TRUE, + .formChangeTable = sNecrozmaDuskManeFormChangeTable, + }, + + [SPECIES_NECROZMA_DAWN_WINGS] = + { + NECROZMA_MISC_INFO, + .baseHP = 97, + .baseAttack = 113, + .baseDefense = 109, + .baseSpeed = 77, + .baseSpAttack = 157, + .baseSpDefense = 127, + .types = { TYPE_PSYCHIC, TYPE_GHOST }, + .catchRate = 255, + .expYield = 306, + .evYield_SpAttack = 3, + .abilities = { ABILITY_PRISM_ARMOR, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .cryId = CRY_NECROZMA_DAWN_WINGS, + .height = 42, + .weight = 3500, + .description = COMPOUND_STRING( + "This is its form while it's\n" + "devouring the light of Lunala. It grasps\n" + "foes in its giant claws and rips them\n" + "apart with brute force."), + FRONT_PIC(NecrozmaDawnWings, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Necrozma, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 6, + BACK_PIC(NecrozmaDawnWings, 64, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(NecrozmaDawnWings), + ICON(NecrozmaDawnWings, 0), + .cannotBeTraded = TRUE, + .formChangeTable = sNecrozmaDawnWingsFormChangeTable, + }, + +#if P_ULTRA_BURST_FORMS + [SPECIES_NECROZMA_ULTRA] = + { + NECROZMA_MISC_INFO, + .baseHP = 97, + .baseAttack = 167, + .baseDefense = 97, + .baseSpeed = 129, + .baseSpAttack = 167, + .baseSpDefense = 97, + .types = { TYPE_PSYCHIC, TYPE_DRAGON }, + .catchRate = 255, + .expYield = 339, + .evYield_Attack = 1, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .abilities = { ABILITY_NEUROFORCE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .cryId = CRY_NECROZMA_ULTRA, + .height = 75, + .weight = 2300, + .description = COMPOUND_STRING( + "The light pouring out from all over\n" + "its body affects living things and\n" + "nature, impacting them in various\n" + "ways."), + FRONT_PIC(NecrozmaUltra, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Necrozma, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 5, + BACK_PIC(NecrozmaUltra, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(NecrozmaUltra), + ICON(NecrozmaUltra, 2), + .cannotBeTraded = TRUE, + .isUltraBurst = TRUE, + }, +#endif //P_ULTRA_BURST_FORMS +#endif //P_FUSION_FORMS +#endif //P_FAMILY_NECROZMA + +#if P_FAMILY_MAGEARNA +#define MAGEARNA_MISC_INFO(Form) \ + .baseHP = 80, \ + .baseAttack = 95, \ + .baseDefense = 115, \ + .baseSpeed = 65, \ + .baseSpAttack = 130, \ + .baseSpDefense = 115, \ + .types = { TYPE_STEEL, TYPE_FAIRY }, \ + .catchRate = 3, \ + .expYield = 270, \ + .evYield_SpAttack = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ABILITY_SOUL_HEART, ABILITY_NONE }, \ + .speciesName = _("Magearna"), \ + .cryId = CRY_MAGEARNA, \ + .natDexNum = NATIONAL_DEX_MAGEARNA, \ + .categoryName = _("Artificial"), \ + .height = 10, \ + .weight = 805, \ + .pokemonScale = 305, \ + .pokemonOffset = 7, \ + .trainerScale = 257, \ + .trainerOffset = 0, \ + FRONT_PIC(Form, 56, 64), \ + .frontPicYOffset = 0, \ + .frontAnimFrames = sAnims_Magearna, \ + .frontAnimId = ANIM_H_SLIDE_SLOW, \ + BACK_PIC(Form, 64, 56), \ + .backPicYOffset = 4, \ + PALETTES(Form), \ + ICON(Form, 0), \ + .footprint = gMonFootprint_Magearna, \ + LEARNSETS(Magearna), \ + .formSpeciesIdTable = sMagearnaFormSpeciesIdTable, \ + .isMythical = TRUE + //.backAnimId = BACK_ANIM_NONE, + + [SPECIES_MAGEARNA] = + { + MAGEARNA_MISC_INFO(Magearna), + .bodyColor = BODY_COLOR_GRAY, + .description = COMPOUND_STRING( + "This artificial Pokémon, constructed more\n" + "than 500 years ago, can understand human\n" + "speech but cannot itself speak. Its true\n" + "self is its Soul-Heart, an artificial soul."), + }, + [SPECIES_MAGEARNA_ORIGINAL_COLOR] = + { + MAGEARNA_MISC_INFO(MagearnaOriginalColor), + .bodyColor = BODY_COLOR_RED, + .description = COMPOUND_STRING( + "This is its form from almost 500\n" + "years ago. Its body is nothing more\n" + "than a container-its artificial heart\n" + "is the actual life-form."), + }, +#endif //P_FAMILY_MAGEARNA + +#if P_FAMILY_MARSHADOW + [SPECIES_MARSHADOW] = + { + .baseHP = 90, + .baseAttack = 125, + .baseDefense = 80, + .baseSpeed = 125, + .baseSpAttack = 90, + .baseSpDefense = 90, + .types = { TYPE_FIGHTING, TYPE_GHOST }, + .catchRate = 3, + .expYield = 270, + .evYield_Attack = 2, + .evYield_Speed = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_TECHNICIAN, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = TRUE, + .speciesName = _("Marshadow"), + .cryId = CRY_MARSHADOW, + .natDexNum = NATIONAL_DEX_MARSHADOW, + .categoryName = _("Gloomdwellr"), + .height = 7, + .weight = 222, + .description = COMPOUND_STRING( + "Able to conceal itself in the shadows of\n" + "others, it never appears before humans,\n" + "so its very existence is the stuff of myth.\n" + "This Pokémon is craven and cowering."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Marshadow, 32, 56), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Marshadow, + .frontAnimId = ANIM_V_SHAKE, + BACK_PIC(Marshadow, 40, 56), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Marshadow), + ICON(Marshadow, 0), + .footprint = gMonFootprint_Marshadow, + LEARNSETS(Marshadow), + .isMythical = TRUE, + }, +#endif //P_FAMILY_MARSHADOW + +#if P_FAMILY_POIPOLE + [SPECIES_POIPOLE] = + { + .baseHP = 67, + .baseAttack = 73, + .baseDefense = 67, + .baseSpeed = 73, + .baseSpAttack = 73, + .baseSpDefense = 67, + .types = { TYPE_POISON, TYPE_POISON }, + .catchRate = 45, + .expYield = 189, + .evYield_Speed = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PURPLE, + .isUltraBeast = TRUE, + .speciesName = _("Poipole"), + .cryId = CRY_POIPOLE, + .natDexNum = NATIONAL_DEX_POIPOLE, + .categoryName = _("Poison Pin"), + .height = 6, + .weight = 18, + .description = COMPOUND_STRING( + "This Ultra Beast is well enough\n" + "liked to be chosen as a\n" + "first partner in its own world."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Poipole, 40, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Poipole, + .frontAnimId = ANIM_SHAKE_GLOW_PURPLE_SLOW, + .enemyMonElevation = 9, + BACK_PIC(Poipole, 48, 56), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Poipole), + ICON(Poipole, 0), + .footprint = gMonFootprint_Poipole, + LEARNSETS(Poipole), + .evolutions = EVOLUTION({EVO_MOVE, MOVE_DRAGON_PULSE, SPECIES_NAGANADEL}), + }, + + [SPECIES_NAGANADEL] = + { + .baseHP = 73, + .baseAttack = 73, + .baseDefense = 73, + .baseSpeed = 121, + .baseSpAttack = 127, + .baseSpDefense = 73, + .types = { TYPE_POISON, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 243, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PURPLE, + .isUltraBeast = TRUE, + .speciesName = _("Naganadel"), + .cryId = CRY_NAGANADEL, + .natDexNum = NATIONAL_DEX_NAGANADEL, + .categoryName = _("Poison Pin"), + .height = 36, + .weight = 1500, + .description = COMPOUND_STRING( + "It stores hundreds of liters of poisonous\n" + "liquid inside its body. It is one of the\n" + "organisms known as UBs."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 405, + .trainerOffset = 8, + FRONT_PIC(Naganadel, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Naganadel, + .frontAnimId = ANIM_TRIANGLE_DOWN_TWICE, + .enemyMonElevation = 7, + BACK_PIC(Naganadel, 64, 56), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Naganadel), + ICON(Naganadel, 0), + .footprint = gMonFootprint_Naganadel, + LEARNSETS(Naganadel), + }, +#endif //P_FAMILY_POIPOLE + +#if P_FAMILY_STAKATAKA + [SPECIES_STAKATAKA] = + { + .baseHP = 61, + .baseAttack = 131, + .baseDefense = 211, + .baseSpeed = 13, + .baseSpAttack = 53, + .baseSpDefense = 101, + .types = { TYPE_ROCK, TYPE_STEEL }, + .catchRate = 30, + .expYield = 257, + .evYield_Defense = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = TRUE, + .isUltraBeast = TRUE, + .speciesName = _("Stakataka"), + .cryId = CRY_STAKATAKA, + .natDexNum = NATIONAL_DEX_STAKATAKA, + .categoryName = _("Rampart"), + .height = 55, + .weight = 8200, + .description = COMPOUND_STRING( + "It appeared from an Ultra Wormhole. Each\n" + "one appears to be made up of many life-\n" + "forms stacked one on top of each other."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 721, + .trainerOffset = 19, + FRONT_PIC(Stakataka, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Stakataka, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Stakataka, 64, 48), + .backPicYOffset = 12, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Stakataka), + ICON(Stakataka, 0), + .footprint = gMonFootprint_Stakataka, + LEARNSETS(Stakataka), + }, +#endif //P_FAMILY_STAKATAKA + +#if P_FAMILY_BLACEPHALON + [SPECIES_BLACEPHALON] = + { + .baseHP = 53, + .baseAttack = 127, + .baseDefense = 53, + .baseSpeed = 107, + .baseSpAttack = 151, + .baseSpDefense = 79, + .types = { TYPE_FIRE, TYPE_GHOST }, + .catchRate = 30, + .expYield = 257, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_BEAST_BOOST, ABILITY_NONE }, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = TRUE, + .isUltraBeast = TRUE, + .speciesName = _("Blacephaln"), + .cryId = CRY_BLACEPHALON, + .natDexNum = NATIONAL_DEX_BLACEPHALON, + .categoryName = _("Fireworks"), + .height = 18, + .weight = 130, + .description = COMPOUND_STRING( + "It slithers toward people and explode\n" + "its head without warning. It is\n" + "one kind of Ultra Beast."), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + FRONT_PIC(Blacephalon, 56, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Blacephalon, + .frontAnimId = ANIM_SHAKE_GLOW_RED, + BACK_PIC(Blacephalon, 64, 48), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Blacephalon), + ICON(Blacephalon, 0), + .footprint = gMonFootprint_Blacephalon, + LEARNSETS(Blacephalon), + }, +#endif //P_FAMILY_BLACEPHALON + +#if P_FAMILY_ZERAORA + [SPECIES_ZERAORA] = + { + .baseHP = 88, + .baseAttack = 112, + .baseDefense = 75, + .baseSpeed = 143, + .baseSpAttack = 102, + .baseSpDefense = 80, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 3, + .expYield = 270, + .evYield_Speed = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_VOLT_ABSORB, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .isMythical = TRUE, + .speciesName = _("Zeraora"), + .cryId = CRY_ZERAORA, + .natDexNum = NATIONAL_DEX_ZERAORA, + .categoryName = _("Thunderclap"), + .height = 15, + .weight = 445, + .description = COMPOUND_STRING( + "It approaches its enemies at the speed\n" + "of lightning, then tears them limb from\n" + "limb with its sharp claws."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(Zeraora, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Zeraora, + .frontAnimId = ANIM_V_STRETCH, + BACK_PIC(Zeraora, 64, 56), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Zeraora), + ICON(Zeraora, 0), + .footprint = gMonFootprint_Zeraora, + LEARNSETS(Zeraora), + }, +#endif //P_FAMILY_ZERAORA + +#if P_FAMILY_MELTAN + [SPECIES_MELTAN] = + { + .baseHP = 46, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 34, + .baseSpAttack = 55, + .baseSpDefense = 35, + .types = { TYPE_STEEL, TYPE_STEEL }, + .catchRate = 3, + .expYield = 135, + .evYield_Attack = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_MAGNET_PULL, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .isMythical = TRUE, + .speciesName = _("Meltan"), + .cryId = CRY_MELTAN, + .natDexNum = NATIONAL_DEX_MELTAN, + .categoryName = _("Hex Nut"), + .height = 2, + .weight = 80, + .description = COMPOUND_STRING( + "It melts particles of iron and other metals\n" + "found in the subsoil, so it can absorb them\n" + "into its body of molten steel."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Meltan, 32, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Meltan, + .frontAnimId = ANIM_GROW_STUTTER_SLOW, + BACK_PIC(Meltan, 40, 40), + .backPicYOffset = 12, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Meltan), + ICON(Meltan, 2), + .footprint = gMonFootprint_Meltan, + LEARNSETS(Meltan), + }, + +#define MELMETAL_MISC_INFO \ + .baseHP = 135, \ + .baseAttack = 143, \ + .baseDefense = 143, \ + .baseSpeed = 34, \ + .baseSpAttack = 80, \ + .baseSpDefense = 65, \ + .types = { TYPE_STEEL, TYPE_STEEL }, \ + .catchRate = 3, \ + .expYield = 270, \ + .evYield_Attack = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ABILITY_IRON_FIST, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_GRAY, \ + .speciesName = _("Melmetal"), \ + .cryId = CRY_MELMETAL, \ + .natDexNum = NATIONAL_DEX_MELMETAL, \ + .categoryName = _("Hex Nut"), \ + .pokemonScale = 257, \ + .pokemonOffset = 10, \ + .trainerScale = 423, \ + .trainerOffset = 8, \ + .footprint = gMonFootprint_Melmetal, \ + LEARNSETS(Melmetal), \ + .formSpeciesIdTable = sMelmetalFormSpeciesIdTable, \ + .formChangeTable = sMelmetalFormChangeTable, \ + .isMythical = TRUE + + [SPECIES_MELMETAL] = + { + MELMETAL_MISC_INFO, + .height = 25, + .weight = 800, + .description = COMPOUND_STRING( + "Revered long ago for its capacity to create\n" + "iron from nothing, for some reason it has\n" + "come back to life after 3,000 years."), + FRONT_PIC(Melmetal, 64, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Melmetal, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Melmetal, 64, 40), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Melmetal), + ICON(Melmetal, 2), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_MELMETAL_GIGANTAMAX] = + { + MELMETAL_MISC_INFO, + .isGigantamax = TRUE, + .height = 250, + .weight = 0, + .description = COMPOUND_STRING( + "In a distant land, there are\n" + "legends about a cyclopean giant. In fact,\n" + "the giant was a Melmetal that was\n" + "flooded with Gigantamax energy."), + FRONT_PIC(MelmetalGigantamax, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_MelmetalGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(MelmetalGigantamax, 64, 64), + .backPicYOffset = 14, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(MelmetalGigantamax), + ICON(MelmetalGigantamax, 0), + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MELTAN + +#ifdef __INTELLISENSE__ +}; +#endif \ No newline at end of file diff --git a/src/data/pokemon/species_info/gen_8.h b/src/data/pokemon/species_info/gen_8.h new file mode 100644 index 0000000000..bcf77fcfa2 --- /dev/null +++ b/src/data/pokemon/species_info/gen_8.h @@ -0,0 +1,5356 @@ +#ifdef __INTELLISENSE__ +const struct SpeciesInfo gSpeciesInfoGen8[] = +{ +#endif + +#if P_FAMILY_GROOKEY + [SPECIES_GROOKEY] = + { + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 50, + .baseSpeed = 65, + .baseSpAttack = 40, + .baseSpDefense = 40, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 62, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Grookey"), + .cryId = CRY_GROOKEY, + .natDexNum = NATIONAL_DEX_GROOKEY, + .categoryName = _("Chimp"), + .height = 3, + .weight = 50, + .description = COMPOUND_STRING( + "When it uses its special stick to strike up\n" + "a beat, the sound waves produced carry\n" + "revitalizing energy to the plants and\n" + "flowers in the area."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Grookey, 40, 48), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Grookey, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Grookey, 48, 56), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Grookey), + ICON(Grookey, 1), + .footprint = gMonFootprint_Grookey, + LEARNSETS(Grookey), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_THWACKEY}), + }, + + [SPECIES_THWACKEY] = + { + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 70, + .baseSpeed = 80, + .baseSpAttack = 55, + .baseSpDefense = 60, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 147, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Thwackey"), + .cryId = CRY_THWACKEY, + .natDexNum = NATIONAL_DEX_THWACKEY, + .categoryName = _("Beat"), + .height = 7, + .weight = 140, + .description = COMPOUND_STRING( + "The faster a Thwackey can beat out\n" + "a rhythm with its two sticks, the more\n" + "respect it wins from its peers."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Thwackey, 48, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Thwackey, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Thwackey, 56, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Thwackey), + ICON(Thwackey, 1), + .footprint = gMonFootprint_Thwackey, + LEARNSETS(Thwackey), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_RILLABOOM}), + }, + +#define RILLABOOM_MISC_INFO \ + .baseHP = 100, \ + .baseAttack = 125, \ + .baseDefense = 90, \ + .baseSpeed = 85, \ + .baseSpAttack = 60, \ + .baseSpDefense = 70, \ + .types = { TYPE_GRASS, TYPE_GRASS }, \ + .catchRate = 45, \ + .expYield = 265, \ + .evYield_Attack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS }, \ + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_GRASSY_SURGE }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .speciesName = _("Rillaboom"), \ + .cryId = CRY_RILLABOOM, \ + .natDexNum = NATIONAL_DEX_RILLABOOM, \ + .categoryName = _("Drummer"), \ + .footprint = gMonFootprint_Rillaboom, \ + LEARNSETS(Rillaboom), \ + .formSpeciesIdTable = sRillaboomFormSpeciesIdTable, \ + .formChangeTable = sRillaboomFormChangeTable + + [SPECIES_RILLABOOM] = + { + RILLABOOM_MISC_INFO, + .height = 21, + .weight = 900, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, + .description = COMPOUND_STRING( + "By drumming, it taps into the power of\n" + "its special tree stump. The roots of the\n" + "stump follow its direction in battle."), + FRONT_PIC(Rillaboom, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Rillaboom, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Rillaboom, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Rillaboom), + ICON(Rillaboom, 1), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_RILLABOOM_GIGANTAMAX] = + { + RILLABOOM_MISC_INFO, + .height = 280, + .weight = 0, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, + .description = COMPOUND_STRING( + "Rillaboom has become one with its\n" + "forest of drums and continues to lay\n" + "down beats that shake all of Galar."), + FRONT_PIC(RillaboomGigantamax, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_RillaboomGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(RillaboomGigantamax, 64, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(RillaboomGigantamax), + ICON(RillaboomGigantamax, 1), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_GROOKEY + +#if P_FAMILY_SCORBUNNY + [SPECIES_SCORBUNNY] = + { + .baseHP = 50, + .baseAttack = 71, + .baseDefense = 40, + .baseSpeed = 69, + .baseSpAttack = 40, + .baseSpDefense = 40, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 62, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Scorbunny"), + .cryId = CRY_SCORBUNNY, + .natDexNum = NATIONAL_DEX_SCORBUNNY, + .categoryName = _("Rabbit"), + .height = 3, + .weight = 45, + .description = COMPOUND_STRING( + "A warm-up of running around gets fire\n" + "energy coursing through this Pokémon's\n" + "body. Once that happens, it's ready to\n" + "fight at full power."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Scorbunny, 40, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Scorbunny, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Scorbunny, 48, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Scorbunny), + ICON(Scorbunny, 0), + .footprint = gMonFootprint_Scorbunny, + LEARNSETS(Scorbunny), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_RABOOT}), + }, + + [SPECIES_RABOOT] = + { + .baseHP = 65, + .baseAttack = 86, + .baseDefense = 60, + .baseSpeed = 94, + .baseSpAttack = 55, + .baseSpDefense = 60, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 147, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Raboot"), + .cryId = CRY_RABOOT, + .natDexNum = NATIONAL_DEX_RABOOT, + .categoryName = _("Rabbit"), + .height = 6, + .weight = 90, + .description = COMPOUND_STRING( + "Its thick and fluffy fur protects it\n" + "from the cold and enables it to use\n" + "hotter fire moves."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Raboot, 40, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Raboot, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Raboot, 56, 56), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Raboot), + ICON(Raboot, 0), + .footprint = gMonFootprint_Raboot, + LEARNSETS(Raboot), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_CINDERACE}), + }, + +#define CINDERACE_MISC_INFO \ + .baseHP = 80, \ + .baseAttack = 116, \ + .baseDefense = 75, \ + .baseSpeed = 119, \ + .baseSpAttack = 65, \ + .baseSpDefense = 75, \ + .types = { TYPE_FIRE, TYPE_FIRE }, \ + .catchRate = 45, \ + .expYield = 265, \ + .evYield_Speed = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_HUMAN_LIKE }, \ + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_LIBERO }, \ + .bodyColor = BODY_COLOR_WHITE, \ + .speciesName = _("Cinderace"), \ + .cryId = CRY_CINDERACE, \ + .natDexNum = NATIONAL_DEX_CINDERACE, \ + .categoryName = _("Striker"), \ + .footprint = gMonFootprint_Cinderace, \ + LEARNSETS(Cinderace), \ + .formSpeciesIdTable = sCinderaceFormSpeciesIdTable, \ + .formChangeTable = sCinderaceFormChangeTable + + [SPECIES_CINDERACE] = + { + CINDERACE_MISC_INFO, + .height = 14, + .weight = 330, + .description = COMPOUND_STRING( + "It juggles a pebble with its feet,\n" + "turning it into a burning soccer ball.\n" + "Its shots strike opponents hard and\n" + "leave them scorched."), + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, + .trainerOffset = 0, + FRONT_PIC(Cinderace, 40, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Cinderace, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Cinderace, 48, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Cinderace), + ICON(Cinderace, 0), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_CINDERACE_GIGANTAMAX] = + { + CINDERACE_MISC_INFO, + .height = 270, + .weight = 0, + .description = COMPOUND_STRING( + "Infused with Cinderace's fighting\n" + "spirit, the gigantic Pyro Ball never\n" + "misses its targets and completely\n" + "roasts opponents."), + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, + .trainerOffset = 0, + FRONT_PIC(CinderaceGigantamax, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_CinderaceGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(CinderaceGigantamax, 64, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(CinderaceGigantamax), + ICON(CinderaceGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SCORBUNNY + +#if P_FAMILY_SOBBLE + [SPECIES_SOBBLE] = + { + .baseHP = 50, + .baseAttack = 40, + .baseDefense = 40, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 40, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 62, + .evYield_Speed = 1, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Sobble"), + .cryId = CRY_SOBBLE, + .natDexNum = NATIONAL_DEX_SOBBLE, + .categoryName = _("Water Lizard"), + .height = 3, + .weight = 40, + .description = COMPOUND_STRING( + "When scared, this Pokémon cries.\n" + "Its tears pack the chemical punch of 100\n" + "onions, and attackers won't be\n" + "able to resist weeping."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Sobble, 40, 56), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Sobble, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Sobble, 40, 56), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Sobble), + ICON(Sobble, 2), + .footprint = gMonFootprint_Sobble, + LEARNSETS(Sobble), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_DRIZZILE}), + }, + + [SPECIES_DRIZZILE] = + { + .baseHP = 65, + .baseAttack = 60, + .baseDefense = 55, + .baseSpeed = 90, + .baseSpAttack = 95, + .baseSpDefense = 55, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 147, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Drizzile"), + .cryId = CRY_DRIZZILE, + .natDexNum = NATIONAL_DEX_DRIZZILE, + .categoryName = _("Water Lizard"), + .height = 7, + .weight = 115, + .description = COMPOUND_STRING( + "A clever combatant, this Pokémon battles\n" + "using water balloons created with\n" + "moisture secreted from its palms."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Drizzile, 40, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Drizzile, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Drizzile, 56, 48), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Drizzile), + ICON(Drizzile, 2), + .footprint = gMonFootprint_Drizzile, + LEARNSETS(Drizzile), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_INTELEON}), + }, + +#define INTELEON_MISC_INFO \ + .baseHP = 70, \ + .baseAttack = 85, \ + .baseDefense = 65, \ + .baseSpeed = 120, \ + .baseSpAttack = 125, \ + .baseSpDefense = 65, \ + .types = { TYPE_WATER, TYPE_WATER }, \ + .catchRate = 45, \ + .expYield = 265, \ + .evYield_Speed = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, \ + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_SNIPER }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Inteleon"), \ + .cryId = CRY_INTELEON, \ + .natDexNum = NATIONAL_DEX_INTELEON, \ + .categoryName = _("Secret Agent"), \ + .footprint = gMonFootprint_Inteleon, \ + LEARNSETS(Inteleon), \ + .formSpeciesIdTable = sInteleonFormSpeciesIdTable, \ + .formChangeTable = sInteleonFormChangeTable + + [SPECIES_INTELEON] = + { + INTELEON_MISC_INFO, + .height = 19, + .weight = 452, + .description = COMPOUND_STRING( + "It has many hidden capabilities, such as\n" + "fingertips that can shoot water and a\n" + "membrane on its back that it can use to\n" + "glide through the air."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + FRONT_PIC(Inteleon, 48, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Inteleon, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Inteleon, 56, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Inteleon), + ICON(Inteleon, 0), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_INTELEON_GIGANTAMAX] = + { + INTELEON_MISC_INFO, + .height = 400, + .weight = 0, + .description = COMPOUND_STRING( + "Gigantamax Inteleon's Water Gun\n" + "move fires at Mach 7. As the Pokémon\n" + "takes aim, it uses the crest on its\n" + "head to gauge wind and temperature."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + FRONT_PIC(InteleonGigantamax, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_InteleonGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(InteleonGigantamax, 64, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(InteleonGigantamax), + ICON(InteleonGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SOBBLE + +#if P_FAMILY_SKWOVET + [SPECIES_SKWOVET] = + { + .baseHP = 70, + .baseAttack = 55, + .baseDefense = 55, + .baseSpeed = 25, + .baseSpAttack = 35, + .baseSpDefense = 35, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 255, + .expYield = 55, + .evYield_HP = 1, + .itemRare = ITEM_ORAN_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_CHEEK_POUCH, ABILITY_NONE, ABILITY_GLUTTONY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Skwovet"), + .cryId = CRY_SKWOVET, + .natDexNum = NATIONAL_DEX_SKWOVET, + .categoryName = _("Cheeky"), + .height = 3, + .weight = 25, + .description = COMPOUND_STRING( + "Found throughout the Galar region, this\n" + "Pokémon becomes uneasy if its cheeks are\n" + "ever completely empty of berries."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Skwovet, 40, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Skwovet, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Skwovet, 64, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Skwovet), + ICON(Skwovet, 2), + .footprint = gMonFootprint_Skwovet, + LEARNSETS(Skwovet), + .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_GREEDENT}), + }, + + [SPECIES_GREEDENT] = + { + .baseHP = 120, + .baseAttack = 95, + .baseDefense = 95, + .baseSpeed = 20, + .baseSpAttack = 55, + .baseSpDefense = 75, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 90, + .expYield = 161, + .evYield_HP = 2, + .itemRare = ITEM_SITRUS_BERRY, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_CHEEK_POUCH, ABILITY_NONE, ABILITY_GLUTTONY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Greedent"), + .cryId = CRY_GREEDENT, + .natDexNum = NATIONAL_DEX_GREEDENT, + .categoryName = _("Greedy"), + .height = 6, + .weight = 60, + .description = COMPOUND_STRING( + "It stashes berries in its tail--so many\n" + "berries that they fall out constantly.\n" + "But this Pokémon is a bit slow-witted,\n" + "so it doesn't notice the loss."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Greedent, 56, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Greedent, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Greedent, 64, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Greedent), + ICON(Greedent, 0), + .footprint = gMonFootprint_Greedent, + LEARNSETS(Greedent), + }, +#endif //P_FAMILY_SKWOVET + +#if P_FAMILY_ROOKIDEE + [SPECIES_ROOKIDEE] = + { + .baseHP = 38, + .baseAttack = 47, + .baseDefense = 35, + .baseSpeed = 57, + .baseSpAttack = 33, + .baseSpDefense = 35, + .types = { TYPE_FLYING, TYPE_FLYING }, + .catchRate = 255, + .expYield = 49, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_UNNERVE, ABILITY_BIG_PECKS }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Rookidee"), + .cryId = CRY_ROOKIDEE, + .natDexNum = NATIONAL_DEX_ROOKIDEE, + .categoryName = _("Tiny Bird"), + .height = 2, + .weight = 18, + .description = COMPOUND_STRING( + "It will bravely challenge any opponent,\n" + "no matter how powerful. This Pokémon\n" + "benefits from every battle--even a defeat\n" + "increases its strength a bit."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Rookidee, 40, 40), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Rookidee, + .frontAnimId = ANIM_H_VIBRATE, + BACK_PIC(Rookidee, 64, 32), + .backPicYOffset = 17, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Rookidee), + ICON(Rookidee, 0), + .footprint = gMonFootprint_Rookidee, + LEARNSETS(Rookidee), + .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_CORVISQUIRE}), + }, + + [SPECIES_CORVISQUIRE] = + { + .baseHP = 68, + .baseAttack = 67, + .baseDefense = 55, + .baseSpeed = 77, + .baseSpAttack = 43, + .baseSpDefense = 55, + .types = { TYPE_FLYING, TYPE_FLYING }, + .catchRate = 120, + .expYield = 128, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_KEEN_EYE, ABILITY_UNNERVE, ABILITY_BIG_PECKS }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Corvisquir"), + .cryId = CRY_CORVISQUIRE, + .natDexNum = NATIONAL_DEX_CORVISQUIRE, + .categoryName = _("Raven"), + .height = 8, + .weight = 160, + .description = COMPOUND_STRING( + "Smart enough to use tools in battle,\n" + "these Pokémon have been seen picking up\n" + "rocks and flinging them or using ropes\n" + "to wrap up enemies."), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Corvisquire, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Corvisquire, + .frontAnimId = ANIM_CIRCLE_INTO_BG, + .enemyMonElevation = 10, + BACK_PIC(Corvisquire, 56, 48), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Corvisquire), + ICON(Corvisquire, 0), + .footprint = gMonFootprint_Corvisquire, + LEARNSETS(Corvisquire), + .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_CORVIKNIGHT}), + }, + +#define CORVIKNIGHT_MISC_INFO \ + .baseHP = 98, \ + .baseAttack = 87, \ + .baseDefense = 105, \ + .baseSpeed = 67, \ + .baseSpAttack = 53, \ + .baseSpDefense = 85, \ + .types = { TYPE_FLYING, TYPE_STEEL }, \ + .catchRate = 45, \ + .expYield = 248, \ + .evYield_Defense = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, \ + .abilities = { ABILITY_PRESSURE, ABILITY_UNNERVE, ABILITY_MIRROR_ARMOR }, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .speciesName = _("Corviknigh"), \ + .cryId = CRY_CORVIKNIGHT, \ + .natDexNum = NATIONAL_DEX_CORVIKNIGHT, \ + .categoryName = _("Raven"), \ + .footprint = gMonFootprint_Corviknight, \ + LEARNSETS(Corviknight), \ + .formSpeciesIdTable = sCorviknightFormSpeciesIdTable, \ + .formChangeTable = sCorviknightFormChangeTable + + [SPECIES_CORVIKNIGHT] = + { + CORVIKNIGHT_MISC_INFO, + .height = 22, + .weight = 750, + .description = COMPOUND_STRING( + "This Pokémon reigns supreme in the skies\n" + "of the Galar region. The black luster of\n" + "its steel body could drive terror into\n" + "the heart of any foe."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 348, + .trainerOffset = 6, + FRONT_PIC(Corviknight, 56, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Corviknight, + .frontAnimId = ANIM_H_VIBRATE, + BACK_PIC(Corviknight, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Corviknight), + ICON(Corviknight, 0), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = + { + CORVIKNIGHT_MISC_INFO, + .height = 140, + .weight = 0, + .description = COMPOUND_STRING( + "Imbued with Gigantamax energy, its\n" + "wings can whip up winds more\n" + "forceful than any a hurricane could\n" + "muster. The gusts blow everything away."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 348, + .trainerOffset = 6, + FRONT_PIC(CorviknightGigantamax, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_CorviknightGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(CorviknightGigantamax, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(CorviknightGigantamax), + ICON(CorviknightGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_ROOKIDEE + +#if P_FAMILY_BLIPBUG + [SPECIES_BLIPBUG] = + { + .baseHP = 25, + .baseAttack = 20, + .baseDefense = 20, + .baseSpeed = 45, + .baseSpAttack = 25, + .baseSpDefense = 45, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 255, + .expYield = 36, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_COMPOUND_EYES, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Blipbug"), + .cryId = CRY_BLIPBUG, + .natDexNum = NATIONAL_DEX_BLIPBUG, + .categoryName = _("Larva"), + .height = 4, + .weight = 80, + .description = COMPOUND_STRING( + "A constant collector of information,\n" + "this Pokémon is very smart. Very strong\n" + "is what it isn't."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Blipbug, 32, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Blipbug, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Blipbug, 40, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Blipbug), + ICON(Blipbug, 0), + .footprint = gMonFootprint_Blipbug, + LEARNSETS(Blipbug), + .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_DOTTLER}), + }, + + [SPECIES_DOTTLER] = + { + .baseHP = 50, + .baseAttack = 35, + .baseDefense = 80, + .baseSpeed = 30, + .baseSpAttack = 50, + .baseSpDefense = 90, + .types = { TYPE_BUG, TYPE_PSYCHIC }, + .catchRate = 120, + .expYield = 117, + .evYield_SpDefense = 2, + .itemRare = ITEM_PSYCHIC_SEED, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_COMPOUND_EYES, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Dottler"), + .cryId = CRY_DOTTLER, + .natDexNum = NATIONAL_DEX_DOTTLER, + .categoryName = _("Radome"), + .height = 4, + .weight = 195, + .description = COMPOUND_STRING( + "It barely moves, but it's still alive.\n" + "Hiding in its shell without food or\n" + "water seems to have awakened its\n" + "psychic powers."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Dottler, 48, 40), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Dottler, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Dottler, 56, 32), + .backPicYOffset = 17, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Dottler), + ICON(Dottler, 2), + .footprint = gMonFootprint_Dottler, + LEARNSETS(Dottler), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ORBEETLE}), + }, + +#define ORBEETLE_MISC_INFO \ + .baseHP = 60, \ + .baseAttack = 45, \ + .baseDefense = 110, \ + .baseSpeed = 90, \ + .baseSpAttack = 80, \ + .baseSpDefense = 120, \ + .types = { TYPE_BUG, TYPE_PSYCHIC }, \ + .catchRate = 45, \ + .expYield = 253, \ + .evYield_SpDefense = 3, \ + .itemRare = ITEM_PSYCHIC_SEED, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, \ + .abilities = { ABILITY_SWARM, ABILITY_FRISK, ABILITY_TELEPATHY }, \ + .bodyColor = BODY_COLOR_RED, \ + .speciesName = _("Orbeetle"), \ + .cryId = CRY_ORBEETLE, \ + .natDexNum = NATIONAL_DEX_ORBEETLE, \ + .categoryName = _("Seven Spot"), \ + .footprint = gMonFootprint_Orbeetle, \ + LEARNSETS(Orbeetle), \ + .formSpeciesIdTable = sOrbeetleFormSpeciesIdTable, \ + .formChangeTable = sOrbeetleFormChangeTable + + [SPECIES_ORBEETLE] = + { + ORBEETLE_MISC_INFO, + .height = 4, + .weight = 408, + .description = COMPOUND_STRING( + "It's famous for its high level of\n" + "intelligence, and the large size of its\n" + "brain is proof that it also possesses\n" + "immense psychic power."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Orbeetle, 48, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Orbeetle, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 8, + BACK_PIC(Orbeetle, 64, 56), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Orbeetle), + ICON(Orbeetle, 0), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_ORBEETLE_GIGANTAMAX] = + { + ORBEETLE_MISC_INFO, + .height = 140, + .weight = 0, + .description = COMPOUND_STRING( + "Its brain has grown to a\n" + "gargantuan size, as has the rest of its body.\n" + "This Pokémon's intellect and\n" + "psychic abilities are overpowering."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(OrbeetleGigantamax, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_OrbeetleGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(OrbeetleGigantamax, 64, 64), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(OrbeetleGigantamax), + ICON(OrbeetleGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_BLIPBUG + +#if P_FAMILY_NICKIT + [SPECIES_NICKIT] = + { + .baseHP = 40, + .baseAttack = 28, + .baseDefense = 28, + .baseSpeed = 50, + .baseSpAttack = 47, + .baseSpDefense = 52, + .types = { TYPE_DARK, TYPE_DARK }, + .catchRate = 255, + .expYield = 49, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_RUN_AWAY, ABILITY_UNBURDEN, ABILITY_STAKEOUT }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Nickit"), + .cryId = CRY_NICKIT, + .natDexNum = NATIONAL_DEX_NICKIT, + .categoryName = _("Fox"), + .height = 6, + .weight = 89, + .description = COMPOUND_STRING( + "Aided by the soft pads on its feet, it\n" + "silently raids the food stores of other\n" + "Pokémon. It survives off its\n" + "ill-gotten gains."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Nickit, 56, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Nickit, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Nickit, 64, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Nickit), + ICON(Nickit, 2), + .footprint = gMonFootprint_Nickit, + LEARNSETS(Nickit), + .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_THIEVUL}), + }, + + [SPECIES_THIEVUL] = + { + .baseHP = 70, + .baseAttack = 58, + .baseDefense = 58, + .baseSpeed = 90, + .baseSpAttack = 87, + .baseSpDefense = 92, + .types = { TYPE_DARK, TYPE_DARK }, + .catchRate = 127, + .expYield = 159, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_RUN_AWAY, ABILITY_UNBURDEN, ABILITY_STAKEOUT }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Thievul"), + .cryId = CRY_THIEVUL, + .natDexNum = NATIONAL_DEX_THIEVUL, + .categoryName = _("Fox"), + .height = 12, + .weight = 199, + .description = COMPOUND_STRING( + "It secretly marks potential targets with\n" + "a scent. By following the scent, it\n" + "stalks its targets and steals from them\n" + "when they least expect it."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Thievul, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Thievul, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Thievul, 56, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Thievul), + ICON(Thievul, 2), + .footprint = gMonFootprint_Thievul, + LEARNSETS(Thievul), + }, +#endif //P_FAMILY_NICKIT + +#if P_FAMILY_GOSSIFLEUR + [SPECIES_GOSSIFLEUR] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 60, + .baseSpeed = 10, + .baseSpAttack = 40, + .baseSpDefense = 60, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 190, + .expYield = 50, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_COTTON_DOWN, ABILITY_REGENERATOR, ABILITY_EFFECT_SPORE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Gossifleur"), + .cryId = CRY_GOSSIFLEUR, + .natDexNum = NATIONAL_DEX_GOSSIFLEUR, + .categoryName = _("Flowering"), + .height = 4, + .weight = 22, + .description = COMPOUND_STRING( + "It anchors itself in the ground with its\n" + "single leg, then basks in the sun. After\n" + "absorbing enough sunlight, its petals\n" + "spread as it blooms brilliantly."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Gossifleur, 48, 56), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Gossifleur, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Gossifleur, 56, 48), + .backPicYOffset = 15, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Gossifleur), + ICON(Gossifleur, 1), + .footprint = gMonFootprint_Gossifleur, + LEARNSETS(Gossifleur), + .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_ELDEGOSS}), + }, + + [SPECIES_ELDEGOSS] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 90, + .baseSpeed = 60, + .baseSpAttack = 80, + .baseSpDefense = 120, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 75, + .expYield = 161, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_COTTON_DOWN, ABILITY_REGENERATOR, ABILITY_EFFECT_SPORE }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Eldegoss"), + .cryId = CRY_ELDEGOSS, + .natDexNum = NATIONAL_DEX_ELDEGOSS, + .categoryName = _("Cotton Bloom"), + .height = 5, + .weight = 25, + .description = COMPOUND_STRING( + "The seeds attached to its cotton fluff\n" + "are full of nutrients. It spreads them\n" + "on the wind so that plants and other\n" + "Pokémon can benefit from them."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Eldegoss, 48, 56), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Eldegoss, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Eldegoss, 64, 40), + .backPicYOffset = 15, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Eldegoss), + ICON(Eldegoss, 1), + .footprint = gMonFootprint_Eldegoss, + LEARNSETS(Eldegoss), + }, +#endif //P_FAMILY_GOSSIFLEUR + +#if P_FAMILY_WOOLOO + [SPECIES_WOOLOO] = + { + .baseHP = 42, + .baseAttack = 40, + .baseDefense = 55, + .baseSpeed = 48, + .baseSpAttack = 40, + .baseSpDefense = 45, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 255, + .expYield = 122, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_FLUFFY, ABILITY_RUN_AWAY, ABILITY_BULLETPROOF }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Wooloo"), + .cryId = CRY_WOOLOO, + .natDexNum = NATIONAL_DEX_WOOLOO, + .categoryName = _("Sheep"), + .height = 6, + .weight = 60, + .description = COMPOUND_STRING( + "Its curly fleece is such an effective\n" + "cushion that this Pokémon could fall off\n" + "a cliff and stand right back up at the\n" + "bottom, unharmed."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Wooloo, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Wooloo, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Wooloo, 56, 32), + .backPicYOffset = 18, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Wooloo), + ICON(Wooloo, 0), + .footprint = gMonFootprint_Wooloo, + LEARNSETS(Wooloo), + .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_DUBWOOL}), + }, + + [SPECIES_DUBWOOL] = + { + .baseHP = 72, + .baseAttack = 80, + .baseDefense = 100, + .baseSpeed = 88, + .baseSpAttack = 60, + .baseSpDefense = 90, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 127, + .expYield = 172, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_FLUFFY, ABILITY_STEADFAST, ABILITY_BULLETPROOF }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Dubwool"), + .cryId = CRY_DUBWOOL, + .natDexNum = NATIONAL_DEX_DUBWOOL, + .categoryName = _("Sheep"), + .height = 13, + .weight = 430, + .description = COMPOUND_STRING( + "Weave a carpet from its springy wool,\n" + "and you end up with something closer to\n" + "a trampoline. You'll start to bounce the\n" + "moment you set foot on it."), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Dubwool, 48, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Dubwool, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Dubwool, 64, 40), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Dubwool), + ICON(Dubwool, 2), + .footprint = gMonFootprint_Dubwool, + LEARNSETS(Dubwool), + }, +#endif //P_FAMILY_WOOLOO + +#if P_FAMILY_CHEWTLE + [SPECIES_CHEWTLE] = + { + .baseHP = 50, + .baseAttack = 64, + .baseDefense = 50, + .baseSpeed = 44, + .baseSpAttack = 38, + .baseSpDefense = 38, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 255, + .expYield = 57, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_STRONG_JAW, ABILITY_SHELL_ARMOR, ABILITY_SWIFT_SWIM }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Chewtle"), + .cryId = CRY_CHEWTLE, + .natDexNum = NATIONAL_DEX_CHEWTLE, + .categoryName = _("Snapping"), + .height = 3, + .weight = 85, + .description = COMPOUND_STRING( + "Apparently the itch of its teething\n" + "impels it to snap its jaws at anything\n" + "in front of it."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Chewtle, 32, 48), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Chewtle, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Chewtle, 56, 56), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Chewtle), + ICON(Chewtle, 0), + .footprint = gMonFootprint_Chewtle, + LEARNSETS(Chewtle), + .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_DREDNAW}), + }, + +#define DREDNAW_MISC_INFO \ + .baseHP = 90, \ + .baseAttack = 115, \ + .baseDefense = 90, \ + .baseSpeed = 74, \ + .baseSpAttack = 48, \ + .baseSpDefense = 68, \ + .types = { TYPE_WATER, TYPE_ROCK }, \ + .catchRate = 75, \ + .expYield = 170, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_MONSTER, EGG_GROUP_WATER_1 }, \ + .abilities = { ABILITY_STRONG_JAW, ABILITY_SHELL_ARMOR, ABILITY_SWIFT_SWIM }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .speciesName = _("Drednaw"), \ + .cryId = CRY_DREDNAW, \ + .natDexNum = NATIONAL_DEX_DREDNAW, \ + .categoryName = _("Bite"), \ + .footprint = gMonFootprint_Drednaw, \ + LEARNSETS(Drednaw), \ + .formSpeciesIdTable = sDrednawFormSpeciesIdTable, \ + .formChangeTable = sDrednawFormChangeTable + + [SPECIES_DREDNAW] = + { + DREDNAW_MISC_INFO, + .height = 10, + .weight = 1155, + .description = COMPOUND_STRING( + "With jaws that can shear through steel\n" + "rods, this highly aggressive Pokémon\n" + "chomps down on its unfortunate prey."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Drednaw, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Drednaw, + .frontAnimId = ANIM_GROW_VIBRATE, + BACK_PIC(Drednaw, 64, 40), + .backPicYOffset = 18, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Drednaw), + ICON(Drednaw, 0), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_DREDNAW_GIGANTAMAX] = + { + DREDNAW_MISC_INFO, + .height = 240, + .weight = 0, + .description = COMPOUND_STRING( + "In the Galar region, there's a tale\n" + "about this Pokémon chewing up a\n" + "mountain and using the rubble to stop a\n" + "flood."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(DrednawGigantamax, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_DrednawGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(DrednawGigantamax, 64, 64), + .backPicYOffset = 12, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(DrednawGigantamax), + ICON(DrednawGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CHEWTLE + +#if P_FAMILY_YAMPER + [SPECIES_YAMPER] = + { + .baseHP = 59, + .baseAttack = 45, + .baseDefense = 50, + .baseSpeed = 26, + .baseSpAttack = 40, + .baseSpDefense = 50, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 255, + .expYield = 54, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BALL_FETCH, ABILITY_NONE, ABILITY_RATTLED }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Yamper"), + .cryId = CRY_YAMPER, + .natDexNum = NATIONAL_DEX_YAMPER, + .categoryName = _("Puppy"), + .height = 3, + .weight = 135, + .description = COMPOUND_STRING( + "This Pokémon is very popular as a\n" + "herding dog in the Galar region. As it\n" + "runs, it generates electricity from the\n" + "base of its tail."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Yamper, 40, 48), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Yamper, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Yamper, 48, 48), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Yamper), + ICON(Yamper, 1), + .footprint = gMonFootprint_Yamper, + LEARNSETS(Yamper), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_BOLTUND}), + }, + + [SPECIES_BOLTUND] = + { + .baseHP = 69, + .baseAttack = 90, + .baseDefense = 60, + .baseSpeed = 121, + .baseSpAttack = 90, + .baseSpDefense = 60, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 45, + .expYield = 172, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_STRONG_JAW, ABILITY_NONE, ABILITY_COMPETITIVE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Boltund"), + .cryId = CRY_BOLTUND, + .natDexNum = NATIONAL_DEX_BOLTUND, + .categoryName = _("Dog"), + .height = 10, + .weight = 340, + .description = COMPOUND_STRING( + "This Pokémon generates electricity and\n" + "channels it into its legs to keep them\n" + "going strong. Boltund can run nonstop\n" + "for three full days."), + .pokemonScale = 305, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Boltund, 48, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Boltund, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Boltund, 64, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Boltund), + ICON(Boltund, 1), + .footprint = gMonFootprint_Boltund, + LEARNSETS(Boltund), + }, +#endif //P_FAMILY_YAMPER + +#if P_FAMILY_ROLYCOLY + [SPECIES_ROLYCOLY] = + { + .baseHP = 30, + .baseAttack = 40, + .baseDefense = 50, + .baseSpeed = 30, + .baseSpAttack = 40, + .baseSpDefense = 50, + .types = { TYPE_ROCK, TYPE_ROCK }, + .catchRate = 255, + .expYield = 48, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_STEAM_ENGINE, ABILITY_HEATPROOF, ABILITY_FLASH_FIRE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Rolycoly"), + .cryId = CRY_ROLYCOLY, + .natDexNum = NATIONAL_DEX_ROLYCOLY, + .categoryName = _("Coal"), + .height = 3, + .weight = 120, + .description = COMPOUND_STRING( + "Most of its body has the same composition\n" + "as coal. Fittingly, this Pokémon was\n" + "first discovered in coal mines about\n" + "400 years ago."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Rolycoly, 40, 40), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Rolycoly, + .frontAnimId = ANIM_H_SLIDE_SLOW, + BACK_PIC(Rolycoly, 64, 32), + .backPicYOffset = 17, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Rolycoly), + ICON(Rolycoly, 0), + .footprint = gMonFootprint_Rolycoly, + LEARNSETS(Rolycoly), + .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_CARKOL}), + }, + + [SPECIES_CARKOL] = + { + .baseHP = 80, + .baseAttack = 60, + .baseDefense = 90, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 70, + .types = { TYPE_ROCK, TYPE_FIRE }, + .catchRate = 120, + .expYield = 144, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_STEAM_ENGINE, ABILITY_FLAME_BODY, ABILITY_FLASH_FIRE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Carkol"), + .cryId = CRY_CARKOL, + .natDexNum = NATIONAL_DEX_CARKOL, + .categoryName = _("Coal"), + .height = 11, + .weight = 780, + .description = COMPOUND_STRING( + "It forms coal inside its body. Coal\n" + "dropped by this Pokémon once helped fuel\n" + "the lives of people in the Galar region."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Carkol, 48, 56), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Carkol, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Carkol, 64, 48), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Carkol), + ICON(Carkol, 0), + .footprint = gMonFootprint_Carkol, + LEARNSETS(Carkol), + .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_COALOSSAL}), + }, + +#define COALOSSAL_MISC_INFO \ + .baseHP = 110, \ + .baseAttack = 80, \ + .baseDefense = 120, \ + .baseSpeed = 30, \ + .baseSpAttack = 80, \ + .baseSpDefense = 90, \ + .types = { TYPE_ROCK, TYPE_FIRE }, \ + .catchRate = 45, \ + .expYield = 255, \ + .evYield_Defense = 3, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, \ + .abilities = { ABILITY_STEAM_ENGINE, ABILITY_FLAME_BODY, ABILITY_FLASH_FIRE }, \ + .bodyColor = BODY_COLOR_BLACK, \ + .speciesName = _("Coalossal"), \ + .cryId = CRY_COALOSSAL, \ + .natDexNum = NATIONAL_DEX_COALOSSAL, \ + .categoryName = _("Coal"), \ + .footprint = gMonFootprint_Coalossal, \ + LEARNSETS(Coalossal), \ + .formSpeciesIdTable = sCoalossalFormSpeciesIdTable, \ + .formChangeTable = sCoalossalFormChangeTable + + [SPECIES_COALOSSAL] = + { + COALOSSAL_MISC_INFO, + .height = 28, + .weight = 3105, + .description = COMPOUND_STRING( + "It's usually peaceful, but the vandalism\n" + "of mines enrages it. Offenders will be\n" + "incinerated with flames that reach\n" + "2,700 degrees Fahrenheit."), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Coalossal, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Coalossal, + .frontAnimId = ANIM_GLOW_RED, + BACK_PIC(Coalossal, 64, 48), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Coalossal), + ICON(Coalossal, 0), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_COALOSSAL_GIGANTAMAX] = + { + COALOSSAL_MISC_INFO, + .height = 420, + .weight = 0, + .description = COMPOUND_STRING( + "Its body is a colossal stove. With\n" + "Gigantamax energy stoking the fire,\n" + "this Pokémon's flame burns hotter\n" + "than 3,600 degrees Fahrenheit."), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(CoalossalGigantamax, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_CoalossalGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(CoalossalGigantamax, 64, 64), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(CoalossalGigantamax), + ICON(CoalossalGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_ROLYCOLY + +#if P_FAMILY_APPLIN + [SPECIES_APPLIN] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 80, + .baseSpeed = 20, + .baseSpAttack = 40, + .baseSpDefense = 40, + .types = { TYPE_GRASS, TYPE_DRAGON }, + .catchRate = 255, + .expYield = 52, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_BULLETPROOF }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Applin"), + .cryId = CRY_APPLIN, + .natDexNum = NATIONAL_DEX_APPLIN, + .categoryName = _("Apple Core"), + .height = 2, + .weight = 5, + .description = COMPOUND_STRING( + "It spends its entire life inside an\n" + "apple. It hides from its natural enemies,\n" + "bird Pokémon, by pretending it's just an\n" + "apple and nothing more."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Applin, 32, 40), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Applin, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Applin, 40, 48), + .backPicYOffset = 15, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Applin), + ICON(Applin, 1), + .footprint = gMonFootprint_Applin, + LEARNSETS(Applin), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_TART_APPLE, SPECIES_FLAPPLE}, + {EVO_ITEM, ITEM_SWEET_APPLE, SPECIES_APPLETUN}, + {EVO_ITEM, ITEM_SYRUPY_APPLE, SPECIES_DIPPLIN}), + }, + +#define FLAPPLE_MISC_INFO \ + .baseHP = 70, \ + .baseAttack = 110, \ + .baseDefense = 80, \ + .baseSpeed = 70, \ + .baseSpAttack = 95, \ + .baseSpDefense = 60, \ + .types = { TYPE_GRASS, TYPE_DRAGON }, \ + .catchRate = 45, \ + .expYield = 170, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_ERRATIC, \ + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_DRAGON }, \ + .abilities = { ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_HUSTLE }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .speciesName = _("Flapple"), \ + .cryId = CRY_FLAPPLE, \ + .natDexNum = NATIONAL_DEX_FLAPPLE, \ + .categoryName = _("Apple Wing"), \ + .footprint = gMonFootprint_Flapple, \ + LEARNSETS(Flapple), \ + .formSpeciesIdTable = sFlappleFormSpeciesIdTable, \ + .formChangeTable = sFlappleFormChangeTable + + [SPECIES_FLAPPLE] = + { + FLAPPLE_MISC_INFO, + .height = 3, + .weight = 10, + .description = COMPOUND_STRING( + "It ate a sour apple, and that induced its\n" + "evolution. In its cheeks, it stores an acid\n" + "capable of causing chemical burns."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Flapple, 56, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Flapple, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 9, + BACK_PIC(Flapple, 48, 56), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Flapple), + ICON(Flapple, 1), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_FLAPPLE_GIGANTAMAX] = + { + FLAPPLE_MISC_INFO, + .height = 240, + .weight = 0, + .description = COMPOUND_STRING( + "Under the influence of Gigantamax\n" + "energy, it produces much more sweet\n" + "nectar, and its shape has changed\n" + "to resemble a giant apple."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(FlappleGigantamax, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_FlappleGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(FlappleGigantamax, 64, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(FlappleGigantamax), + ICON(FlappleGigantamax, 1), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS + +#define APPLETUN_MISC_INFO \ + .baseHP = 110, \ + .baseAttack = 85, \ + .baseDefense = 80, \ + .baseSpeed = 30, \ + .baseSpAttack = 100, \ + .baseSpDefense = 80, \ + .types = { TYPE_GRASS, TYPE_DRAGON }, \ + .catchRate = 45, \ + .expYield = 170, \ + .evYield_HP = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_ERRATIC, \ + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_DRAGON }, \ + .abilities = { ABILITY_RIPEN, ABILITY_GLUTTONY, ABILITY_THICK_FAT }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .speciesName = _("Appletun"), \ + .cryId = CRY_APPLETUN, \ + .natDexNum = NATIONAL_DEX_APPLETUN, \ + .categoryName = _("Apple Nectar"), \ + .footprint = gMonFootprint_Appletun, \ + LEARNSETS(Appletun), \ + .formSpeciesIdTable = sAppletunFormSpeciesIdTable, \ + .formChangeTable = sAppletunFormChangeTable + + [SPECIES_APPLETUN] = + { + APPLETUN_MISC_INFO, + .height = 4, + .weight = 130, + .description = COMPOUND_STRING( + "Eating a sweet apple caused its evolution.\n" + "A nectarous scent wafts from its body,\n" + "luring in the bug Pokémon it preys on."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Appletun, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Appletun, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Appletun, 64, 56), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Appletun), + ICON(Appletun, 1), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_APPLETUN_GIGANTAMAX] = + { + APPLETUN_MISC_INFO, + .height = 240, + .weight = 0, + .description = COMPOUND_STRING( + "Due to Gigantamax energy, this\n" + "Pokémon's nectar has thickened. The\n" + "increased viscosity lets the nectar\n" + "absorb more damage than before."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(AppletunGigantamax, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_AppletunGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(AppletunGigantamax, 64, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(AppletunGigantamax), + ICON(AppletunGigantamax, 1), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS + +#if P_GEN_9_CROSS_EVOS + [SPECIES_DIPPLIN] = + { + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 110, + .baseSpeed = 40, + .baseSpAttack = 95, + .baseSpDefense = 80, + .types = { TYPE_GRASS, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 170, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_SUPERSWEET_SYRUP, ABILITY_GLUTTONY, ABILITY_STICKY_HOLD }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Dipplin"), + .cryId = CRY_DIPPLIN, + .natDexNum = NATIONAL_DEX_DIPPLIN, + .categoryName = _("Candy Apple"), + .height = 4, + .weight = 44, + .description = COMPOUND_STRING( + "Dipplin is two creatures in one Pokémon.\n" + "Its evolution was triggered by a special\n" + "apple grown only in one place."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Dipplin, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Dipplin, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Dipplin, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Dipplin), + ICON(Dipplin, 1), + //.footprint = gMonFootprint_Dipplin, + LEARNSETS(Dipplin), + }, +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_APPLIN + +#if P_FAMILY_SILICOBRA + [SPECIES_SILICOBRA] = + { + .baseHP = 52, + .baseAttack = 57, + .baseDefense = 75, + .baseSpeed = 46, + .baseSpAttack = 35, + .baseSpDefense = 50, + .types = { TYPE_GROUND, TYPE_GROUND }, + .catchRate = 255, + .expYield = 63, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_SAND_SPIT, ABILITY_SHED_SKIN, ABILITY_SAND_VEIL }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Silicobra"), + .cryId = CRY_SILICOBRA, + .natDexNum = NATIONAL_DEX_SILICOBRA, + .categoryName = _("Sand Snake"), + .height = 22, + .weight = 76, + .description = COMPOUND_STRING( + "As it digs, it swallows sand and stores\n" + "it in its neck pouch. The pouch can hold\n" + "more than 17 pounds of sand."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 348, + .trainerOffset = 6, + FRONT_PIC(Silicobra, 40, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Silicobra, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Silicobra, 56, 48), + .backPicYOffset = 10, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Silicobra), + ICON(Silicobra, 1), + .footprint = gMonFootprint_Silicobra, + LEARNSETS(Silicobra), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SANDACONDA}), + }, + +#define SANDACONDA_MISC_INFO \ + .baseHP = 72, \ + .baseAttack = 107, \ + .baseDefense = 125, \ + .baseSpeed = 71, \ + .baseSpAttack = 65, \ + .baseSpDefense = 70, \ + .types = { TYPE_GROUND, TYPE_GROUND }, \ + .catchRate = 120, \ + .expYield = 179, \ + .evYield_Defense = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_DRAGON }, \ + .abilities = { ABILITY_SAND_SPIT, ABILITY_SHED_SKIN, ABILITY_SAND_VEIL }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .speciesName = _("Sandaconda"), \ + .cryId = CRY_SANDACONDA, \ + .natDexNum = NATIONAL_DEX_SANDACONDA, \ + .categoryName = _("Sand Snake"), \ + .footprint = gMonFootprint_Sandaconda, \ + LEARNSETS(Sandaconda), \ + .formSpeciesIdTable = sSandacondaFormSpeciesIdTable, \ + .formChangeTable = sSandacondaFormChangeTable + + [SPECIES_SANDACONDA] = + { + SANDACONDA_MISC_INFO, + .height = 38, + .weight = 655, + .description = COMPOUND_STRING( + "When it contracts its body, over 220\n" + "pounds of sand sprays from its nose. If\n" + "it ever runs out of sand, it becomes\n" + "disheartened."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 610, + .trainerOffset = 17, + FRONT_PIC(Sandaconda, 64, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Sandaconda, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Sandaconda, 64, 40), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Sandaconda), + ICON(Sandaconda, 1), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_SANDACONDA_GIGANTAMAX] = + { + SANDACONDA_MISC_INFO, + .height = 220, + .weight = 0, + .description = COMPOUND_STRING( + "") +, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 610, + .trainerOffset = 17, + FRONT_PIC(SandacondaGigantamax, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_SandacondaGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SandacondaGigantamax, 64, 64), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(SandacondaGigantamax), + ICON(SandacondaGigantamax, 1), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SILICOBRA + +#if P_FAMILY_CRAMORANT +#define CRAMORANT_MISC_INFO \ + .baseHP = 70, \ + .baseAttack = 85, \ + .baseDefense = 55, \ + .baseSpeed = 85, \ + .baseSpAttack = 85, \ + .baseSpDefense = 95, \ + .types = { TYPE_FLYING, TYPE_WATER }, \ + .catchRate = 45, \ + .expYield = 166, \ + .evYield_SpDefense = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING }, \ + .abilities = { ABILITY_GULP_MISSILE, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Cramorant"), \ + .cryId = CRY_CRAMORANT, \ + .natDexNum = NATIONAL_DEX_CRAMORANT, \ + .categoryName = _("Gulp"), \ + .height = 8, \ + .weight = 180, \ + .pokemonScale = 366, \ + .pokemonOffset = 7, \ + .trainerScale = 257, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Cramorant, \ + LEARNSETS(Cramorant), \ + .formSpeciesIdTable = sCramorantFormSpeciesIdTable, \ + .formChangeTable = sCramorantFormChangeTable + + [SPECIES_CRAMORANT] = + { + CRAMORANT_MISC_INFO, + .description = COMPOUND_STRING( + "It's so strong that it can knock out some\n" + "opponents in a single hit, but it also may\n" + "forget what it's battling midfight."), + FRONT_PIC(Cramorant, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Cramorant, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Cramorant, 56, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Cramorant), + ICON(Cramorant, 0), + }, + + [SPECIES_CRAMORANT_GULPING] = + { + CRAMORANT_MISC_INFO, + .description = COMPOUND_STRING( + "Cramorant's gluttony led it to try\n" + "to swallow an Arrokuda whole, which\n" + "in turn led to Cramorant getting an\n" + "Arrokuda stuck in its throat."), + FRONT_PIC(CramorantGulping, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Cramorant, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(CramorantGulping, 64, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(CramorantGulping), + ICON(CramorantGulping, 0), + }, + + [SPECIES_CRAMORANT_GORGING] = + { + CRAMORANT_MISC_INFO, + .description = COMPOUND_STRING( + "This Cramorant has accidentally\n" + "gotten a Pikachu lodged in its gullet.\n" + "Cramorant is choking a little, but it\n" + "isn't really bothered."), + FRONT_PIC(CramorantGorging, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Cramorant, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(CramorantGorging, 64, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(CramorantGorging), + ICON(CramorantGorging, 0), + }, +#endif //P_FAMILY_CRAMORANT + +#if P_FAMILY_ARROKUDA + [SPECIES_ARROKUDA] = + { + .baseHP = 41, + .baseAttack = 63, + .baseDefense = 40, + .baseSpeed = 66, + .baseSpAttack = 40, + .baseSpDefense = 30, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 255, + .expYield = 56, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_PROPELLER_TAIL }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Arrokuda"), + .cryId = CRY_ARROKUDA, + .natDexNum = NATIONAL_DEX_ARROKUDA, + .categoryName = _("Rush"), + .height = 5, + .weight = 10, + .description = COMPOUND_STRING( + "If it sees any movement around it, this\n" + "Pokémon charges for it straightaway,\n" + "leading with its sharply pointed jaw.\n" + "It's very proud of that jaw."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Arrokuda, 56, 32), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_Arrokuda, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Arrokuda, 48, 40), + .backPicYOffset = 15, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Arrokuda), + ICON(Arrokuda, 2), + .footprint = gMonFootprint_Arrokuda, + LEARNSETS(Arrokuda), + .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_BARRASKEWDA}), + }, + + [SPECIES_BARRASKEWDA] = + { + .baseHP = 61, + .baseAttack = 123, + .baseDefense = 60, + .baseSpeed = 136, + .baseSpAttack = 60, + .baseSpDefense = 50, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 60, + .expYield = 172, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_SWIFT_SWIM, ABILITY_NONE, ABILITY_PROPELLER_TAIL }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Barraskewd"), + .cryId = CRY_BARRASKEWDA, + .natDexNum = NATIONAL_DEX_BARRASKEWDA, + .categoryName = _("Skewer"), + .height = 13, + .weight = 300, + .description = COMPOUND_STRING( + "This Pokémon has a jaw that's as sharp\n" + "as a spear and as strong as steel.\n" + "Apparently Barraskewda's flesh is\n" + "surprisingly tasty, too."), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Barraskewda, 56, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Barraskewda, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Barraskewda, 64, 48), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Barraskewda), + ICON(Barraskewda, 2), + .footprint = gMonFootprint_Barraskewda, + LEARNSETS(Barraskewda), + }, +#endif //P_FAMILY_ARROKUDA + +#if P_FAMILY_TOXEL + [SPECIES_TOXEL] = + { + .baseHP = 40, + .baseAttack = 38, + .baseDefense = 35, + .baseSpeed = 40, + .baseSpAttack = 54, + .baseSpDefense = 35, + .types = { TYPE_ELECTRIC, TYPE_POISON }, + .catchRate = 75, + .expYield = 48, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_RATTLED, ABILITY_STATIC, ABILITY_KLUTZ }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Toxel"), + .cryId = CRY_TOXEL, + .natDexNum = NATIONAL_DEX_TOXEL, + .categoryName = _("Baby"), + .height = 4, + .weight = 110, + .description = COMPOUND_STRING( + "It stores poison in an internal poison\n" + "sac and secretes that poison through its\n" + "skin. If you touch this Pokémon, a\n" + "tingling sensation follows."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Toxel, 40, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Toxel, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Toxel, 48, 56), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Toxel), + ICON(Toxel, 2), + .footprint = gMonFootprint_Toxel, + LEARNSETS(Toxel), + .evolutions = EVOLUTION({EVO_LEVEL_NATURE_AMPED, 30, SPECIES_TOXTRICITY_AMPED}, + {EVO_LEVEL_NATURE_LOW_KEY, 30, SPECIES_TOXTRICITY_LOW_KEY}), + }, + +#define TOXTRICITY_MISC_INFO \ + .baseHP = 75, \ + .baseAttack = 98, \ + .baseDefense = 70, \ + .baseSpeed = 75, \ + .baseSpAttack = 114, \ + .baseSpDefense = 70, \ + .types = { TYPE_ELECTRIC, TYPE_POISON }, \ + .catchRate = 45, \ + .expYield = 176, \ + .evYield_SpAttack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .speciesName = _("Toxtricity"), \ + .natDexNum = NATIONAL_DEX_TOXTRICITY, \ + .categoryName = _("Punk"), \ + .formSpeciesIdTable = sToxtricityFormSpeciesIdTable, \ + .formChangeTable = sToxtricityAmpedFormChangeTable + + [SPECIES_TOXTRICITY_AMPED] = + { + TOXTRICITY_MISC_INFO, + .abilities = { ABILITY_PUNK_ROCK, ABILITY_PLUS, ABILITY_TECHNICIAN }, + .cryId = CRY_TOXTRICITY_AMPED, + .height = 16, + .weight = 400, + .description = COMPOUND_STRING( + "When this Pokémon sounds as if it's\n" + "strumming a guitar, it's actually clawing\n" + "at the protrusions on its chest to\n" + "generate electricity."), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + FRONT_PIC(ToxtricityAmped, 48, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Toxtricity, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ToxtricityAmped, 56, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ToxtricityAmped), + ICON(ToxtricityAmped, 2), + .footprint = gMonFootprint_Toxtricity, + LEARNSETS(ToxtricityAmped), + + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = + { + TOXTRICITY_MISC_INFO, + .abilities = { ABILITY_PUNK_ROCK, ABILITY_PLUS, ABILITY_TECHNICIAN }, + .cryId = CRY_TOXTRICITY_AMPED, + .height = 240, + .weight = 0, + .description = gToxtricityGigantamaxPokedexText, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + FRONT_PIC(ToxtricityGigantamax, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_ToxtricityGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ToxtricityGigantamax, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ToxtricityGigantamax), + ICON(ToxtricityGigantamax, 0), + .footprint = gMonFootprint_Toxtricity, + LEARNSETS(ToxtricityAmped), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS + + [SPECIES_TOXTRICITY_LOW_KEY] = + { + TOXTRICITY_MISC_INFO, + .abilities = { ABILITY_PUNK_ROCK, ABILITY_MINUS, ABILITY_TECHNICIAN }, + .cryId = CRY_TOXTRICITY_LOW_KEY, + .height = 16, + .weight = 400, + .description = COMPOUND_STRING( + "Capable of generating 15,000 volts\n" + "of electricity, this Pokémon looks\n" + "down on all that would challenge it."), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + FRONT_PIC(ToxtricityLowKey, 48, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Toxtricity, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ToxtricityLowKey, 48, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ToxtricityLowKey), + ICON(ToxtricityLowKey, 2), + .footprint = gMonFootprint_Toxtricity, + LEARNSETS(ToxtricityLowKey), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = + { + TOXTRICITY_MISC_INFO, + .abilities = { ABILITY_PUNK_ROCK, ABILITY_MINUS, ABILITY_TECHNICIAN }, + .cryId = CRY_TOXTRICITY_LOW_KEY, + .height = 240, + .weight = 0, + .description = gToxtricityGigantamaxPokedexText, + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + FRONT_PIC(ToxtricityGigantamax, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_ToxtricityGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ToxtricityGigantamax, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ToxtricityGigantamax), + ICON(ToxtricityGigantamax, 0), + .footprint = gMonFootprint_Toxtricity, + LEARNSETS(ToxtricityLowKey), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_TOXEL + +#if P_FAMILY_SIZZLIPEDE + [SPECIES_SIZZLIPEDE] = + { + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 45, + .baseSpeed = 45, + .baseSpAttack = 50, + .baseSpDefense = 50, + .types = { TYPE_FIRE, TYPE_BUG }, + .catchRate = 190, + .expYield = 61, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Sizzlipede"), + .cryId = CRY_SIZZLIPEDE, + .natDexNum = NATIONAL_DEX_SIZZLIPEDE, + .categoryName = _("Radiator"), + .height = 7, + .weight = 10, + .description = COMPOUND_STRING( + "It stores flammable gas in its body and\n" + "uses it to generate heat. The yellow\n" + "sections on its belly get particularly hot."), + .pokemonScale = 365, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Sizzlipede, 48, 32), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_Sizzlipede, + .frontAnimId = ANIM_H_VIBRATE, + BACK_PIC(Sizzlipede, 40, 32), + .backPicYOffset = 16, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Sizzlipede), + ICON(Sizzlipede, 0), + .footprint = gMonFootprint_Sizzlipede, + LEARNSETS(Sizzlipede), + .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_CENTISKORCH}), + }, + +#define CENTISKORCH_MISC_INFO \ + .baseHP = 100, \ + .baseAttack = 115, \ + .baseDefense = 65, \ + .baseSpeed = 65, \ + .baseSpAttack = 90, \ + .baseSpDefense = 90, \ + .types = { TYPE_FIRE, TYPE_BUG }, \ + .catchRate = 75, \ + .expYield = 184, \ + .evYield_Attack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, \ + .abilities = { ABILITY_FLASH_FIRE, ABILITY_WHITE_SMOKE, ABILITY_FLAME_BODY }, \ + .bodyColor = BODY_COLOR_RED, \ + .speciesName = _("Centiskorc"), \ + .cryId = CRY_CENTISKORCH, \ + .natDexNum = NATIONAL_DEX_CENTISKORCH, \ + .categoryName = _("Radiator"), \ + .footprint = gMonFootprint_Centiskorch, \ + LEARNSETS(Centiskorch), \ + .formSpeciesIdTable = sCentiskorchFormSpeciesIdTable, \ + .formChangeTable = sCentiskorchFormChangeTable + + [SPECIES_CENTISKORCH] = + { + CENTISKORCH_MISC_INFO, + .height = 30, + .weight = 1200, + .description = COMPOUND_STRING( + "When it heats up, its body temperature\n" + "reaches about 1,500 degrees Fahrenheit.\n" + "It lashes its body like a whip and\n" + "launches itself at enemies."), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Centiskorch, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Centiskorch, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Centiskorch, 56, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Centiskorch), + ICON(Centiskorch, 0), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_CENTISKORCH_GIGANTAMAX] = + { + CENTISKORCH_MISC_INFO, + .height = 750, + .weight = 0, + .description = COMPOUND_STRING( + "The heat that comes off a\n" + "Gigantamax Centiskorch may destabilize air\n" + "currents. Sometimes it can even\n" + "cause storms."), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(CentiskorchGigantamax, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_CentiskorchGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(CentiskorchGigantamax, 64, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(CentiskorchGigantamax), + ICON(CentiskorchGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SIZZLIPEDE + +#if P_FAMILY_CLOBBOPUS + [SPECIES_CLOBBOPUS] = + { + .baseHP = 50, + .baseAttack = 68, + .baseDefense = 60, + .baseSpeed = 32, + .baseSpAttack = 50, + .baseSpDefense = 50, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 180, + .expYield = 62, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_LIMBER, ABILITY_NONE, ABILITY_TECHNICIAN }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Clobbopus"), + .cryId = CRY_CLOBBOPUS, + .natDexNum = NATIONAL_DEX_CLOBBOPUS, + .categoryName = _("Tantrum"), + .height = 6, + .weight = 40, + .description = COMPOUND_STRING( + "It's very curious, but its means of\n" + "investigating things is to try to punch\n" + "them with its tentacles. The search for\n" + "food is what brings it onto land."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Clobbopus, 48, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Clobbopus, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Clobbopus, 64, 40), + .backPicYOffset = 14, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Clobbopus), + ICON(Clobbopus, 0), + .footprint = gMonFootprint_Clobbopus, + LEARNSETS(Clobbopus), + .evolutions = EVOLUTION({EVO_MOVE, MOVE_TAUNT, SPECIES_GRAPPLOCT}), + }, + + [SPECIES_GRAPPLOCT] = + { + .baseHP = 80, + .baseAttack = 118, + .baseDefense = 90, + .baseSpeed = 42, + .baseSpAttack = 70, + .baseSpDefense = 80, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 168, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_LIMBER, ABILITY_NONE, ABILITY_TECHNICIAN }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Grapploct"), + .cryId = CRY_GRAPPLOCT, + .natDexNum = NATIONAL_DEX_GRAPPLOCT, + .categoryName = _("Jujitsu"), + .height = 16, + .weight = 390, + .description = COMPOUND_STRING( + "A body made up of nothing but muscle makes\n" + "the grappling moves this Pokémon performs\n" + "with its tentacles tremendously powerful."), + .pokemonScale = 259, + .pokemonOffset = 1, + .trainerScale = 296, + .trainerOffset = 1, + FRONT_PIC(Grapploct, 48, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Grapploct, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Grapploct, 56, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Grapploct), + ICON(Grapploct, 2), + .footprint = gMonFootprint_Grapploct, + LEARNSETS(Grapploct), + }, +#endif //P_FAMILY_CLOBBOPUS + +#if P_FAMILY_SINISTEA +#define SINISTEA_MISC_INFO \ + .baseHP = 40, \ + .baseAttack = 45, \ + .baseDefense = 45, \ + .baseSpeed = 50, \ + .baseSpAttack = 74, \ + .baseSpDefense = 54, \ + .types = { TYPE_GHOST, TYPE_GHOST }, \ + .catchRate = 120, \ + .expYield = 62, \ + .evYield_SpAttack = 1, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS }, \ + .abilities = { ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY }, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .speciesName = _("Sinistea"), \ + .cryId = CRY_SINISTEA, \ + .natDexNum = NATIONAL_DEX_SINISTEA, \ + .categoryName = _("Black Tea"), \ + .height = 1, \ + .weight = 2, \ + .pokemonScale = 682, \ + .pokemonOffset = 24, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + FRONT_PIC(Sinistea, 40, 32), \ + .frontPicYOffset = 17, \ + .frontAnimFrames = sAnims_Sinistea, \ + BACK_PIC(Sinistea, 48, 32), \ + .backPicYOffset = 16, \ + PALETTES(Sinistea), \ + ICON(Sinistea, 2), \ + .footprint = gMonFootprint_Sinistea, \ + LEARNSETS(Sinistea), \ + .formSpeciesIdTable = sSinisteaFormSpeciesIdTable + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //.backAnimId = BACK_ANIM_NONE, + + [SPECIES_SINISTEA_PHONY] = + { + SINISTEA_MISC_INFO, + .description = COMPOUND_STRING( + "This Pokémon is said to have been born\n" + "when a lonely spirit possessed a cold,\n" + "leftover cup of tea."), + .enemyMonElevation = 9, + .evolutions = EVOLUTION({EVO_ITEM, ITEM_CRACKED_POT, SPECIES_POLTEAGEIST_PHONY}), + }, + + [SPECIES_SINISTEA_ANTIQUE] = + { + SINISTEA_MISC_INFO, + .description = COMPOUND_STRING( + "The swirl pattern in this Pokémon's\n" + "body is its weakness. If it gets\n" + "stirred, the swirl loses its shape, and\n" + "Sinistea gets dizzy."), + .enemyMonElevation = 10, + .evolutions = EVOLUTION({EVO_ITEM, ITEM_CHIPPED_POT, SPECIES_POLTEAGEIST_ANTIQUE}), + }, + +#define POLTEAGEIST_MISC_INFO \ + .baseHP = 60, \ + .baseAttack = 65, \ + .baseDefense = 65, \ + .baseSpeed = 70, \ + .baseSpAttack = 134, \ + .baseSpDefense = 114, \ + .types = { TYPE_GHOST, TYPE_GHOST }, \ + .catchRate = 60, \ + .expYield = 178, \ + .evYield_SpAttack = 2, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS }, \ + .abilities = { ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY }, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .speciesName = _("Polteageis"), \ + .cryId = CRY_POLTEAGEIST, \ + .natDexNum = NATIONAL_DEX_POLTEAGEIST, \ + .categoryName = _("Black Tea"), \ + .height = 2, \ + .weight = 4, \ + .pokemonScale = 682, \ + .pokemonOffset = 24, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + FRONT_PIC(Polteageist, 48, 48), \ + .frontPicYOffset = 11, \ + .frontAnimFrames = sAnims_Polteageist, \ + BACK_PIC(Polteageist, 64, 40), \ + .backPicYOffset = 13, \ + PALETTES(Polteageist), \ + ICON(Polteageist, 2), \ + .footprint = gMonFootprint_Polteageist, \ + LEARNSETS(Polteageist), \ + .formSpeciesIdTable = sPolteageistFormSpeciesIdTable + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //.backAnimId = BACK_ANIM_NONE, + + [SPECIES_POLTEAGEIST_PHONY] = + { + POLTEAGEIST_MISC_INFO, + .description = COMPOUND_STRING( + "This species lives in antique teapots.\n" + "Most pots are forgeries, but on rare\n" + "occasions, an authentic work is found."), + .enemyMonElevation = 12, + }, + + [SPECIES_POLTEAGEIST_ANTIQUE] = + { + POLTEAGEIST_MISC_INFO, + .description = COMPOUND_STRING( + "Trainers Polteageist trusts will be\n" + "allowed to experience its\n" + "distinctive flavor and aroma firsthand by\n" + "sampling just a tiny bit of its tea."), + .enemyMonElevation = 11, + }, +#endif //P_FAMILY_SINISTEA + +#if P_FAMILY_HATENNA + [SPECIES_HATENNA] = + { + .baseHP = 42, + .baseAttack = 30, + .baseDefense = 45, + .baseSpeed = 39, + .baseSpAttack = 56, + .baseSpDefense = 53, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 235, + .expYield = 53, + .evYield_SpAttack = 1, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Hatenna"), + .cryId = CRY_HATENNA, + .natDexNum = NATIONAL_DEX_HATENNA, + .categoryName = _("Calm"), + .height = 4, + .weight = 34, + .description = COMPOUND_STRING( + "Via the protrusion on its head, it senses\n" + "other creatures' emotions. If you don't\n" + "have a calm disposition, it will never\n" + "warm up to you."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Hatenna, 48, 48), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Hatenna, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Hatenna, 40, 40), + .backPicYOffset = 12, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Hatenna), + ICON(Hatenna, 0), + .footprint = gMonFootprint_Hatenna, + LEARNSETS(Hatenna), + .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_HATTREM}), + }, + + [SPECIES_HATTREM] = + { + .baseHP = 57, + .baseAttack = 40, + .baseDefense = 65, + .baseSpeed = 49, + .baseSpAttack = 86, + .baseSpDefense = 73, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 120, + .expYield = 130, + .evYield_SpAttack = 2, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Hattrem"), + .cryId = CRY_HATTREM, + .natDexNum = NATIONAL_DEX_HATTREM, + .categoryName = _("Serene"), + .height = 6, + .weight = 48, + .description = COMPOUND_STRING( + "No matter who you are, if you bring strong\n" + "emotions near this Pokémon, it will silence\n" + "you violently."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Hattrem, 56, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Hattrem, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Hattrem, 56, 48), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Hattrem), + ICON(Hattrem, 0), + .footprint = gMonFootprint_Hattrem, + LEARNSETS(Hattrem), + .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_HATTERENE}), + }, + +#define HATTERENE_MISC_INFO \ + .baseHP = 57, \ + .baseAttack = 90, \ + .baseDefense = 95, \ + .baseSpeed = 29, \ + .baseSpAttack = 136, \ + .baseSpDefense = 103, \ + .types = { TYPE_PSYCHIC, TYPE_FAIRY }, \ + .catchRate = 45, \ + .expYield = 255, \ + .evYield_SpAttack = 3, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, \ + .abilities = { ABILITY_HEALER, ABILITY_ANTICIPATION, ABILITY_MAGIC_BOUNCE }, \ + .bodyColor = BODY_COLOR_PINK, \ + .speciesName = _("Hatterene"), \ + .cryId = CRY_HATTERENE, \ + .natDexNum = NATIONAL_DEX_HATTERENE, \ + .categoryName = _("Silent"), \ + .footprint = gMonFootprint_Hatterene, \ + LEARNSETS(Hatterene), \ + .formSpeciesIdTable = sHattereneFormSpeciesIdTable, \ + .formChangeTable = sHattereneFormChangeTable + + [SPECIES_HATTERENE] = + { + HATTERENE_MISC_INFO, + .height = 21, + .weight = 51, + .description = COMPOUND_STRING( + "It emits psychic power strong enough to\n" + "cause headaches as a deterrent to the\n" + "approach of others."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, + FRONT_PIC(Hatterene, 48, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Hatterene, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Hatterene, 56, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Hatterene), + ICON(Hatterene, 0), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_HATTERENE_GIGANTAMAX] = + { + HATTERENE_MISC_INFO, + .height = 260, + .weight = 0, + .description = COMPOUND_STRING( + "This Pokémon can read the\n" + "emotions of creatures over 30 miles away.\n" + "The minute it senses hostility, it\n" + "goes on the attack."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, + FRONT_PIC(HattereneGigantamax, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_HattereneGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(HattereneGigantamax, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(HattereneGigantamax), + ICON(HattereneGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_HATENNA + +#if P_FAMILY_IMPIDIMP + [SPECIES_IMPIDIMP] = + { + .baseHP = 45, + .baseAttack = 45, + .baseDefense = 30, + .baseSpeed = 50, + .baseSpAttack = 55, + .baseSpDefense = 40, + .types = { TYPE_DARK, TYPE_FAIRY }, + .catchRate = 255, + .expYield = 53, + .evYield_SpAttack = 1, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Impidimp"), + .cryId = CRY_IMPIDIMP, + .natDexNum = NATIONAL_DEX_IMPIDIMP, + .categoryName = _("Wily"), + .height = 4, + .weight = 55, + .description = COMPOUND_STRING( + "Through its nose, it sucks in the\n" + "emanations produced by people and Pokémon\n" + "when they feel annoyed. It thrives off\n" + "this negative energy."), + .pokemonScale = 491, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Impidimp, 48, 40), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Impidimp, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Impidimp, 48, 40), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Impidimp), + ICON(Impidimp, 0), + .footprint = gMonFootprint_Impidimp, + LEARNSETS(Impidimp), + .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_MORGREM}), + }, + + [SPECIES_MORGREM] = + { + .baseHP = 65, + .baseAttack = 60, + .baseDefense = 45, + .baseSpeed = 70, + .baseSpAttack = 75, + .baseSpDefense = 55, + .types = { TYPE_DARK, TYPE_FAIRY }, + .catchRate = 120, + .expYield = 130, + .evYield_SpAttack = 2, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Morgrem"), + .cryId = CRY_MORGREM, + .natDexNum = NATIONAL_DEX_MORGREM, + .categoryName = _("Devious"), + .height = 8, + .weight = 125, + .description = COMPOUND_STRING( + "When it gets down on all fours as if to\n" + "beg for forgiveness, it's trying to lure\n" + "opponents in so that it can stab them\n" + "with its spear-like hair."), + .pokemonScale = 366, + .pokemonOffset = 7, + .trainerScale = 257, + .trainerOffset = 0, + FRONT_PIC(Morgrem, 48, 56), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Morgrem, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Morgrem, 56, 48), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Morgrem), + ICON(Morgrem, 0), + .footprint = gMonFootprint_Morgrem, + LEARNSETS(Morgrem), + .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_GRIMMSNARL}), + }, + +#define GRIMMSNARL_MISC_INFO \ + .baseHP = 95, \ + .baseAttack = 120, \ + .baseDefense = 65, \ + .baseSpeed = 60, \ + .baseSpAttack = 95, \ + .baseSpDefense = 75, \ + .types = { TYPE_DARK, TYPE_FAIRY }, \ + .catchRate = 45, \ + .expYield = 255, \ + .evYield_Attack = 3, \ + .genderRatio = MON_MALE, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_HUMAN_LIKE }, \ + .abilities = { ABILITY_PRANKSTER, ABILITY_FRISK, ABILITY_PICKPOCKET }, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .speciesName = _("Grimmsnarl"), \ + .cryId = CRY_GRIMMSNARL, \ + .natDexNum = NATIONAL_DEX_GRIMMSNARL, \ + .categoryName = _("Bulk Up"), \ + .footprint = gMonFootprint_Grimmsnarl, \ + LEARNSETS(Grimmsnarl), \ + .formSpeciesIdTable = sGrimmsnarlFormSpeciesIdTable, \ + .formChangeTable = sGrimmsnarlFormChangeTable + + [SPECIES_GRIMMSNARL] = + { + GRIMMSNARL_MISC_INFO, + .height = 15, + .weight = 610, + .description = COMPOUND_STRING( + "With the hair wrapped around its body\n" + "helping to enhance its muscles, this\n" + "Pokémon can overwhelm even Machamp."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(Grimmsnarl, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Grimmsnarl, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Grimmsnarl, 64, 48), + .backPicYOffset = 10, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Grimmsnarl), + ICON(Grimmsnarl, 0), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_GRIMMSNARL_GIGANTAMAX] = + { + GRIMMSNARL_MISC_INFO, + .height = 320, + .weight = 0, + .description = COMPOUND_STRING( + "Gigantamax energy has caused more\n" + "hair to sprout all over its body.\n" + "With the added strength, it can jump\n" + "over the world's tallest building."), + .pokemonScale = 268, + .pokemonOffset = 2, + .trainerScale = 271, + .trainerOffset = 0, + FRONT_PIC(GrimmsnarlGigantamax, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_GrimmsnarlGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(GrimmsnarlGigantamax, 64, 64), + .backPicYOffset = 10, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(GrimmsnarlGigantamax), + ICON(GrimmsnarlGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_IMPIDIMP + +#if P_FAMILY_MILCERY + [SPECIES_MILCERY] = + { + .baseHP = 45, + .baseAttack = 40, + .baseDefense = 40, + .baseSpeed = 34, + .baseSpAttack = 50, + .baseSpDefense = 61, + .types = { TYPE_FAIRY, TYPE_FAIRY }, + .catchRate = 200, + .expYield = 54, + .evYield_SpDefense = 1, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_AROMA_VEIL }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Milcery"), + .cryId = CRY_MILCERY, + .natDexNum = NATIONAL_DEX_MILCERY, + .categoryName = _("Cream"), + .height = 2, + .weight = 3, + .description = COMPOUND_STRING( + "This Pokémon was born from sweet-smelling\n" + "particles in the air. Its body is made\n" + "of cream."), + .pokemonScale = 682, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Milcery, 40, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Milcery, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 10, + BACK_PIC(Milcery, 56, 48), + .backPicYOffset = 16, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Milcery), + ICON(Milcery, 1), + .footprint = gMonFootprint_Milcery, + LEARNSETS(Milcery), + .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL}, + {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL}), + }, + +#define ALCREMIE_MISC_INFO(color) \ + .baseHP = 65, \ + .baseAttack = 60, \ + .baseDefense = 75, \ + .baseSpeed = 64, \ + .baseSpAttack = 110, \ + .baseSpDefense = 121, \ + .types = { TYPE_FAIRY, TYPE_FAIRY }, \ + .catchRate = 100, \ + .expYield = 173, \ + .evYield_SpDefense = 2, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_AMORPHOUS }, \ + .abilities = { ABILITY_SWEET_VEIL, ABILITY_NONE, ABILITY_AROMA_VEIL }, \ + .bodyColor = color + +#define ALCREMIE_REGULAR_SPECIES_INFO(sweet, cream, color) \ + { \ + ALCREMIE_MISC_INFO(color), \ + .speciesName = _("Alcremie"), \ + .cryId = CRY_ALCREMIE, \ + .natDexNum = NATIONAL_DEX_ALCREMIE, \ + .categoryName = _("Cream"), \ + .height = 3, \ + .weight = 5, \ + .description = gAlcremie ##cream##PokedexText, \ + .pokemonScale = 530, \ + .pokemonOffset = 13, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + FRONT_PIC(Alcremie ##sweet, 40, 56), \ + .frontPicYOffset = 7, \ + .frontAnimFrames = sAnims_Alcremie, \ + BACK_PIC(Alcremie ##sweet, 48, 56), \ + .backPicYOffset = 9, \ + .palette = gMonPalette_Alcremie ##sweet##cream, \ + .shinyPalette = gMonShinyPalette_Alcremie ##sweet, \ + ICON(AlcremieStrawberryVanillaCream, 1), \ + .footprint = gMonFootprint_Alcremie, \ + LEARNSETS(Alcremie), \ + .formSpeciesIdTable = sAlcremieFormSpeciesIdTable, \ + .formChangeTable = sAlcremieFormChangeTable, \ + } + //ICON(AlcremieStrawberry##cream##, 1), + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //.backAnimId = BACK_ANIM_NONE, + + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Strawberry, VanillaCream, BODY_COLOR_WHITE), + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Strawberry, RubyCream, BODY_COLOR_PINK), + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Strawberry, MatchaCream, BODY_COLOR_GREEN), + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Strawberry, MintCream, BODY_COLOR_BLUE), + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Strawberry, LemonCream, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Strawberry, SaltedCream, BODY_COLOR_WHITE), + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Strawberry, RubySwirl, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Strawberry, CaramelSwirl, BODY_COLOR_BROWN), + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Strawberry, RainbowSwirl, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Berry, VanillaCream, BODY_COLOR_WHITE), + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Berry, RubyCream, BODY_COLOR_PINK), + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Berry, MatchaCream, BODY_COLOR_GREEN), + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Berry, MintCream, BODY_COLOR_BLUE), + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Berry, LemonCream, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Berry, SaltedCream, BODY_COLOR_WHITE), + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Berry, RubySwirl, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Berry, CaramelSwirl, BODY_COLOR_BROWN), + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Berry, RainbowSwirl, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Love, VanillaCream, BODY_COLOR_WHITE), + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Love, RubyCream, BODY_COLOR_PINK), + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Love, MatchaCream, BODY_COLOR_GREEN), + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Love, MintCream, BODY_COLOR_BLUE), + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Love, LemonCream, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Love, SaltedCream, BODY_COLOR_WHITE), + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Love, RubySwirl, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Love, CaramelSwirl, BODY_COLOR_BROWN), + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Love, RainbowSwirl, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Star, VanillaCream, BODY_COLOR_WHITE), + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Star, RubyCream, BODY_COLOR_PINK), + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Star, MatchaCream, BODY_COLOR_GREEN), + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Star, MintCream, BODY_COLOR_BLUE), + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Star, LemonCream, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Star, SaltedCream, BODY_COLOR_WHITE), + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Star, RubySwirl, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Star, CaramelSwirl, BODY_COLOR_BROWN), + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Star, RainbowSwirl, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Clover, VanillaCream, BODY_COLOR_WHITE), + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Clover, RubyCream, BODY_COLOR_PINK), + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Clover, MatchaCream, BODY_COLOR_GREEN), + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Clover, MintCream, BODY_COLOR_BLUE), + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Clover, LemonCream, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Clover, SaltedCream, BODY_COLOR_WHITE), + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Clover, RubySwirl, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Clover, CaramelSwirl, BODY_COLOR_BROWN), + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Clover, RainbowSwirl, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Flower, VanillaCream, BODY_COLOR_WHITE), + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Flower, RubyCream, BODY_COLOR_PINK), + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Flower, MatchaCream, BODY_COLOR_GREEN), + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Flower, MintCream, BODY_COLOR_BLUE), + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Flower, LemonCream, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Flower, SaltedCream, BODY_COLOR_WHITE), + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Flower, RubySwirl, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Flower, CaramelSwirl, BODY_COLOR_BROWN), + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Flower, RainbowSwirl, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Ribbon, VanillaCream, BODY_COLOR_WHITE), + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Ribbon, RubyCream, BODY_COLOR_PINK), + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Ribbon, MatchaCream, BODY_COLOR_GREEN), + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Ribbon, MintCream, BODY_COLOR_BLUE), + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Ribbon, LemonCream, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = ALCREMIE_REGULAR_SPECIES_INFO(Ribbon, SaltedCream, BODY_COLOR_WHITE), + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Ribbon, RubySwirl, BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Ribbon, CaramelSwirl, BODY_COLOR_BROWN), + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = ALCREMIE_REGULAR_SPECIES_INFO(Ribbon, RainbowSwirl, BODY_COLOR_YELLOW), +#if P_GIGANTAMAX_FORMS + [SPECIES_ALCREMIE_GIGANTAMAX] = + { + ALCREMIE_MISC_INFO(BODY_COLOR_PINK), + .isGigantamax = TRUE, + .speciesName = _("Alcremie"), + .cryId = CRY_ALCREMIE, + .natDexNum = NATIONAL_DEX_ALCREMIE, + .categoryName = _("Cream"), + .height = 3, + .weight = 5, + .description = COMPOUND_STRING( + "It launches swarms of missiles,\n" + "each made of cream and loaded with\n" + "100,000 kilocalories. Get hit by one of\n" + "these, and your head will swim."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(AlcremieGigantamax, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_AlcremieGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(AlcremieGigantamax, 64, 64), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(AlcremieGigantamax), + ICON(AlcremieGigantamax, 1), + .footprint = gMonFootprint_Alcremie, + LEARNSETS(Alcremie), + .formSpeciesIdTable = sAlcremieFormSpeciesIdTable, + .formChangeTable = sAlcremieFormChangeTable, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MILCERY + +#if P_FAMILY_FALINKS + [SPECIES_FALINKS] = + { + .baseHP = 65, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 75, + .baseSpAttack = 70, + .baseSpDefense = 60, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 165, + .evYield_Attack = 2, + .evYield_SpDefense = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_BATTLE_ARMOR, ABILITY_NONE, ABILITY_DEFIANT }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Falinks"), + .cryId = CRY_FALINKS, + .natDexNum = NATIONAL_DEX_FALINKS, + .categoryName = _("Formation"), + .height = 30, + .weight = 620, + .description = COMPOUND_STRING( + "Five of them are troopers, and one is the\n" + "brass. The brass's orders are absolute."), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Falinks, 56, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Falinks, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Falinks, 64, 40), + .backPicYOffset = 15, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Falinks), + ICON(Falinks, 0), + .footprint = gMonFootprint_Falinks, + LEARNSETS(Falinks), + }, +#endif //P_FAMILY_FALINKS + +#if P_FAMILY_PINCURCHIN + [SPECIES_PINCURCHIN] = + { + .baseHP = 48, + .baseAttack = 101, + .baseDefense = 95, + .baseSpeed = 15, + .baseSpAttack = 91, + .baseSpDefense = 85, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 75, + .expYield = 152, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_AMORPHOUS }, + .abilities = { ABILITY_LIGHTNING_ROD, ABILITY_NONE, ABILITY_ELECTRIC_SURGE }, + .bodyColor = BODY_COLOR_PURPLE, + .speciesName = _("Pincurchin"), + .cryId = CRY_PINCURCHIN, + .natDexNum = NATIONAL_DEX_PINCURCHIN, + .categoryName = _("Sea Urchin"), + .height = 3, + .weight = 10, + .description = COMPOUND_STRING( + "It feeds on seaweed, using its teeth to\n" + "scrape it off rocks. Electric current\n" + "flows from the tips of its spines."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pincurchin, 40, 40), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Pincurchin, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Pincurchin, 56, 40), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Pincurchin), + ICON(Pincurchin, 0), + .footprint = gMonFootprint_Pincurchin, + LEARNSETS(Pincurchin), + }, +#endif //P_FAMILY_PINCURCHIN + +#if P_FAMILY_SNOM + [SPECIES_SNOM] = + { + .baseHP = 30, + .baseAttack = 25, + .baseDefense = 35, + .baseSpeed = 20, + .baseSpAttack = 45, + .baseSpDefense = 30, + .types = { TYPE_ICE, TYPE_BUG }, + .catchRate = 190, + .expYield = 37, + .evYield_SpAttack = 1, + .itemRare = ITEM_SNOWBALL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_ICE_SCALES }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Snom"), + .cryId = CRY_SNOM, + .natDexNum = NATIONAL_DEX_SNOM, + .categoryName = _("Worm"), + .height = 3, + .weight = 38, + .description = COMPOUND_STRING( + "It spits out thread imbued with a frigid\n" + "sort of energy and uses it to tie its body\n" + "to branches, disguising itself as an\n" + "icicle while it sleeps."), + .pokemonScale = 530, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Snom, 40, 32), + .frontPicYOffset = 20, + .frontAnimFrames = sAnims_Snom, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Snom, 48, 32), + .backPicYOffset = 17, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Snom), + ICON(Snom, 0), + .footprint = gMonFootprint_Snom, + LEARNSETS(Snom), + .evolutions = EVOLUTION({EVO_FRIENDSHIP_NIGHT, 0, SPECIES_FROSMOTH}), + }, + + [SPECIES_FROSMOTH] = + { + .baseHP = 70, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 65, + .baseSpAttack = 125, + .baseSpDefense = 90, + .types = { TYPE_ICE, TYPE_BUG }, + .catchRate = 75, + .expYield = 166, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SHIELD_DUST, ABILITY_NONE, ABILITY_ICE_SCALES }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Frosmoth"), + .cryId = CRY_FROSMOTH, + .natDexNum = NATIONAL_DEX_FROSMOTH, + .categoryName = _("Frost Moth"), + .height = 13, + .weight = 420, + .description = COMPOUND_STRING( + "Icy scales fall from its wings like snow\n" + "as it flies over fields and mountains.\n" + "The temperature of its wings is less than\n" + "-290 degrees Fahrenheit."), + .pokemonScale = 272, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Frosmoth, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Frosmoth, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 7, + BACK_PIC(Frosmoth, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Frosmoth), + ICON(Frosmoth, 0), + .footprint = gMonFootprint_Frosmoth, + LEARNSETS(Frosmoth), + }, +#endif //P_FAMILY_SNOM + +#if P_FAMILY_STONJOURNER + [SPECIES_STONJOURNER] = + { + .baseHP = 100, + .baseAttack = 125, + .baseDefense = 135, + .baseSpeed = 70, + .baseSpAttack = 20, + .baseSpDefense = 20, + .types = { TYPE_ROCK, TYPE_ROCK }, + .catchRate = 60, + .expYield = 165, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_POWER_SPOT, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Stonjourne"), + .cryId = CRY_STONJOURNER, + .natDexNum = NATIONAL_DEX_STONJOURNER, + .categoryName = _("Big Rock"), + .height = 25, + .weight = 5200, + .description = COMPOUND_STRING( + "It stands in grasslands, watching the\n" + "sun's descent from zenith to horizon. This\n" + "Pokémon has a talent for delivering\n" + "dynamic kicks."), + .pokemonScale = 257, + .pokemonOffset = 10, + .trainerScale = 423, + .trainerOffset = 8, + FRONT_PIC(Stonjourner, 48, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Stonjourner, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Stonjourner, 64, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Stonjourner), + ICON(Stonjourner, 2), + .footprint = gMonFootprint_Stonjourner, + LEARNSETS(Stonjourner), + }, +#endif //P_FAMILY_STONJOURNER + +#if P_FAMILY_EISCUE +#define EISCUE_MISC_INFO \ + .types = { TYPE_ICE, TYPE_ICE }, \ + .catchRate = 60, \ + .expYield = 165, \ + .evYield_Defense = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FIELD }, \ + .abilities = { ABILITY_ICE_FACE, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Eiscue"), \ + .natDexNum = NATIONAL_DEX_EISCUE, \ + .categoryName = _("Penguin"), \ + .height = 14, \ + .weight = 890, \ + .pokemonScale = 265, \ + .pokemonOffset = 2, \ + .trainerScale = 262, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Eiscue, \ + LEARNSETS(Eiscue), \ + .formSpeciesIdTable = sEiscueFormSpeciesIdTable, \ + .formChangeTable = sEiscueFormChangeTable + + [SPECIES_EISCUE_ICE_FACE] = + { + EISCUE_MISC_INFO, + .baseHP = 75, + .baseAttack = 80, + .baseDefense = 110, + .baseSpeed = 50, + .baseSpAttack = 65, + .baseSpDefense = 90, + .cryId = CRY_EISCUE_ICE_FACE, + .description = COMPOUND_STRING( + "It drifted in on the flow of ocean waters\n" + "from a frigid place. It keeps its head\n" + "iced constantly to make sure it stays\n" + "nice and cold."), + FRONT_PIC(EiscueIceFace, 40, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Eiscue, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(EiscueIceFace, 48, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(EiscueIceFace), + ICON(EiscueIceFace, 0), + }, + + [SPECIES_EISCUE_NOICE_FACE] = + { + EISCUE_MISC_INFO, + .baseHP = 75, + .baseAttack = 80, + .baseDefense = 70, + .baseSpeed = 130, + .baseSpAttack = 65, + .baseSpDefense = 50, + .cryId = CRY_EISCUE_NOICE_FACE, + .description = COMPOUND_STRING( + "The hair on its head connects to\n" + "the surface of its brain. When this\n" + "Pokémon has something on its mind,\n" + "its hair chills the air around it."), + FRONT_PIC(EiscueNoiceFace, 40, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Eiscue, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(EiscueNoiceFace, 40, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(EiscueNoiceFace), + ICON(EiscueNoiceFace, 0), + }, +#endif //P_FAMILY_EISCUE + +#if P_FAMILY_INDEEDEE +#define INDEEDEE_MISC_INFO \ + .types = { TYPE_PSYCHIC, TYPE_NORMAL }, \ + .catchRate = 30, \ + .expYield = 166, \ + .eggCycles = 40, \ + .friendship = 140, \ + .growthRate = GROWTH_FAST, \ + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .speciesName = _("Indeedee"), \ + .natDexNum = NATIONAL_DEX_INDEEDEE, \ + .categoryName = _("Emotion"), \ + .height = 9, \ + .weight = 280, \ + .pokemonScale = 338, \ + .pokemonOffset = 8, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Indeedee, \ + .formSpeciesIdTable = sIndeedeeFormSpeciesIdTable + + [SPECIES_INDEEDEE_MALE] = + { + INDEEDEE_MISC_INFO, + .baseHP = 60, + .baseAttack = 65, + .baseDefense = 55, + .baseSpeed = 95, + .baseSpAttack = 105, + .baseSpDefense = 95, + .evYield_SpAttack = 2, + .genderRatio = MON_MALE, + .abilities = { ABILITY_INNER_FOCUS, ABILITY_SYNCHRONIZE, ABILITY_PSYCHIC_SURGE }, + .cryId = CRY_INDEEDEE_MALE, + .description = COMPOUND_STRING( + "It uses the horns on its head to sense the\n" + "emotions of others. Males will act as\n" + "valets for those they serve, looking\n" + "after their every need."), + FRONT_PIC(IndeedeeMale, 40, 56), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Indeedee, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(IndeedeeMale, 56, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(IndeedeeMale), + ICON(IndeedeeMale, 2), + LEARNSETS(IndeedeeMale), + }, + + [SPECIES_INDEEDEE_FEMALE] = + { + INDEEDEE_MISC_INFO, + .baseHP = 70, + .baseAttack = 55, + .baseDefense = 65, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 105, + .evYield_SpDefense = 2, + .genderRatio = MON_FEMALE, + .abilities = { ABILITY_OWN_TEMPO, ABILITY_SYNCHRONIZE, ABILITY_PSYCHIC_SURGE }, + .cryId = CRY_INDEEDEE_FEMALE, + .description = COMPOUND_STRING( + "They diligently serve people and\n" + "Pokémon so they can gather feelings\n" + "of gratitude. The females are\n" + "particularly good at babysitting."), + FRONT_PIC(IndeedeeFemale, 40, 48), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Indeedee, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(IndeedeeFemale, 64, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(IndeedeeFemale), + ICON(IndeedeeFemale, 2), + LEARNSETS(IndeedeeFemale), + }, +#endif //P_FAMILY_INDEEDEE + +#if P_FAMILY_MORPEKO +#define MORPEKO_MISC_INFO \ + .baseHP = 58, \ + .baseAttack = 95, \ + .baseDefense = 58, \ + .baseSpeed = 97, \ + .baseSpAttack = 70, \ + .baseSpDefense = 58, \ + .types = { TYPE_ELECTRIC, TYPE_DARK }, \ + .catchRate = 180, \ + .expYield = 153, \ + .evYield_Speed = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 10, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY }, \ + .abilities = { ABILITY_HUNGER_SWITCH, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_YELLOW, \ + .speciesName = _("Morpeko"), \ + .natDexNum = NATIONAL_DEX_MORPEKO, \ + .categoryName = _("Two-Sided"), \ + .height = 3, \ + .weight = 30, \ + .pokemonScale = 530, \ + .pokemonOffset = 13, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Morpeko, \ + LEARNSETS(Morpeko), \ + .formSpeciesIdTable = sMorpekoFormSpeciesIdTable, \ + .formChangeTable = sMorpekoFormChangeTable + + [SPECIES_MORPEKO_FULL_BELLY] = + { + MORPEKO_MISC_INFO, + .cryId = CRY_MORPEKO_FULL_BELLY, + .description = COMPOUND_STRING( + "As it eats the seeds stored up in its\n" + "pocket-like pouches, this Pokémon is not\n" + "just satisfying its constant hunger. It's\n" + "also generating electricity."), + FRONT_PIC(MorpekoFullBelly, 32, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Morpeko, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(MorpekoFullBelly, 48, 56), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(MorpekoFullBelly), + ICON(MorpekoFullBelly, 2), + }, + + [SPECIES_MORPEKO_HANGRY] = + { + MORPEKO_MISC_INFO, + .cryId = CRY_MORPEKO_HANGRY, + .description = COMPOUND_STRING( + "Intense hunger drives it to\n" + "extremes of violence, and the electricity\n" + "in its cheek sacs has converted into\n" + "a Dark-type energy."), + FRONT_PIC(MorpekoHangry, 32, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Morpeko, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(MorpekoHangry, 48, 56), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(MorpekoHangry), + ICON(MorpekoHangry, 2), + }, +#endif //P_FAMILY_MORPEKO + +#if P_FAMILY_CUFANT + [SPECIES_CUFANT] = + { + .baseHP = 72, + .baseAttack = 80, + .baseDefense = 49, + .baseSpeed = 40, + .baseSpAttack = 40, + .baseSpDefense = 49, + .types = { TYPE_STEEL, TYPE_STEEL }, + .catchRate = 190, + .expYield = 66, + .evYield_Attack = 1, + .itemRare = ITEM_LAGGING_TAIL, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_HEAVY_METAL }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Cufant"), + .cryId = CRY_CUFANT, + .natDexNum = NATIONAL_DEX_CUFANT, + .categoryName = _("Copperderm"), + .height = 12, + .weight = 1000, + .description = COMPOUND_STRING( + "It digs up the ground with its trunk.\n" + "It's also very strong, being able to\n" + "carry loads of over five tons without any\n" + "problem at all."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cufant, 56, 48), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Cufant, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Cufant, 64, 48), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Cufant), + ICON(Cufant, 0), + .footprint = gMonFootprint_Cufant, + LEARNSETS(Cufant), + .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_COPPERAJAH}), + }, + +#define COPPERAJAH_MISC_INFO \ + .baseHP = 122, \ + .baseAttack = 130, \ + .baseDefense = 69, \ + .baseSpeed = 30, \ + .baseSpAttack = 80, \ + .baseSpDefense = 69, \ + .types = { TYPE_STEEL, TYPE_STEEL }, \ + .catchRate = 90, \ + .expYield = 175, \ + .evYield_Attack = 2, \ + .itemRare = ITEM_LAGGING_TAIL, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 25, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_MINERAL }, \ + .abilities = { ABILITY_SHEER_FORCE, ABILITY_NONE, ABILITY_HEAVY_METAL }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .speciesName = _("Copperajah"), \ + .cryId = CRY_COPPERAJAH, \ + .natDexNum = NATIONAL_DEX_COPPERAJAH, \ + .categoryName = _("Copperderm"), \ + .footprint = gMonFootprint_Copperajah, \ + LEARNSETS(Copperajah), \ + .formSpeciesIdTable = sCopperajahFormSpeciesIdTable, \ + .formChangeTable = sCopperajahFormChangeTable + + [SPECIES_COPPERAJAH] = + { + COPPERAJAH_MISC_INFO, + .height = 30, + .weight = 6500, + .description = COMPOUND_STRING( + "They came over from another region long\n" + "ago and worked together with humans.\n" + "Their green skin is resistant to water."), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Copperajah, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Copperajah, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Copperajah, 64, 32), + .backPicYOffset = 16, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Copperajah), + ICON(Copperajah, 0), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_COPPERAJAH_GIGANTAMAX] = + { + COPPERAJAH_MISC_INFO, + .height = 230, + .weight = 0, + .description = COMPOUND_STRING( + "After this Pokémon has\n" + "Gigantamaxed, its massive nose can utterly\n" + "demolish large structures with a single\n" + "smashing blow."), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(CopperajahGigantamax, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_CopperajahGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(CopperajahGigantamax, 64, 64), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(CopperajahGigantamax), + ICON(CopperajahGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CUFANT + +#if P_FAMILY_DRACOZOLT + [SPECIES_DRACOZOLT] = + { + .baseHP = 90, + .baseAttack = 100, + .baseDefense = 90, + .baseSpeed = 75, + .baseSpAttack = 80, + .baseSpDefense = 70, + .types = { TYPE_ELECTRIC, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 177, + .evYield_Attack = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_VOLT_ABSORB, ABILITY_HUSTLE, ABILITY_SAND_RUSH }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Dracozolt"), + .cryId = CRY_DRACOZOLT, + .natDexNum = NATIONAL_DEX_DRACOZOLT, + .categoryName = _("Fossil"), + .height = 18, + .weight = 1900, + .description = COMPOUND_STRING( + "In ancient times, it was unbeatable thanks\n" + "to its powerful lower body, but it went\n" + "extinct anyway after it depleted all its\n" + "plant-based food sources."), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + FRONT_PIC(Dracozolt, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Dracozolt, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Dracozolt, 64, 56), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Dracozolt), + ICON(Dracozolt, 1), + .footprint = gMonFootprint_Dracozolt, + LEARNSETS(Dracozolt), + }, +#endif //P_FAMILY_DRACOZOLT + +#if P_FAMILY_ARCTOZOLT + [SPECIES_ARCTOZOLT] = + { + .baseHP = 90, + .baseAttack = 100, + .baseDefense = 90, + .baseSpeed = 55, + .baseSpAttack = 90, + .baseSpDefense = 80, + .types = { TYPE_ELECTRIC, TYPE_ICE }, + .catchRate = 45, + .expYield = 177, + .evYield_Attack = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_VOLT_ABSORB, ABILITY_STATIC, ABILITY_SLUSH_RUSH }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Arctozolt"), + .cryId = CRY_ARCTOZOLT, + .natDexNum = NATIONAL_DEX_ARCTOZOLT, + .categoryName = _("Fossil"), + .height = 23, + .weight = 1500, + .description = COMPOUND_STRING( + "The shaking of its freezing upper half is\n" + "what generates its electricity. It has a\n" + "hard time walking around."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 342, + .trainerOffset = 7, + FRONT_PIC(Arctozolt, 56, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Arctozolt, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Arctozolt, 56, 48), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Arctozolt), + ICON(Arctozolt, 2), + .footprint = gMonFootprint_Arctozolt, + LEARNSETS(Arctozolt), + }, +#endif //P_FAMILY_ARCTOZOLT + +#if P_FAMILY_DRACOVISH + [SPECIES_DRACOVISH] = + { + .baseHP = 90, + .baseAttack = 90, + .baseDefense = 100, + .baseSpeed = 75, + .baseSpAttack = 70, + .baseSpDefense = 80, + .types = { TYPE_WATER, TYPE_DRAGON }, + .catchRate = 45, + .expYield = 177, + .evYield_Defense = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_WATER_ABSORB, ABILITY_STRONG_JAW, ABILITY_SAND_RUSH }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Dracovish"), + .cryId = CRY_DRACOVISH, + .natDexNum = NATIONAL_DEX_DRACOVISH, + .categoryName = _("Fossil"), + .height = 23, + .weight = 2150, + .description = COMPOUND_STRING( + "Powerful legs and jaws made it the apex\n" + "predator of its time. Its own overhunting\n" + "of its prey was what drove it to\n" + "extinction."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 342, + .trainerOffset = 7, + FRONT_PIC(Dracovish, 48, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Dracovish, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Dracovish, 64, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Dracovish), + ICON(Dracovish, 0), + .footprint = gMonFootprint_Dracovish, + LEARNSETS(Dracovish), + }, +#endif //P_FAMILY_DRACOVISH + +#if P_FAMILY_ARCTOVISH + [SPECIES_ARCTOVISH] = + { + .baseHP = 90, + .baseAttack = 90, + .baseDefense = 100, + .baseSpeed = 55, + .baseSpAttack = 80, + .baseSpDefense = 90, + .types = { TYPE_WATER, TYPE_ICE }, + .catchRate = 45, + .expYield = 177, + .evYield_Defense = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_WATER_ABSORB, ABILITY_ICE_BODY, ABILITY_SLUSH_RUSH }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Arctovish"), + .cryId = CRY_ARCTOVISH, + .natDexNum = NATIONAL_DEX_ARCTOVISH, + .categoryName = _("Fossil"), + .height = 20, + .weight = 1750, + .description = COMPOUND_STRING( + "Though it's able to capture prey by\n" + "freezing its surroundings, it has trouble\n" + "eating the prey afterward because its\n" + "mouth is on top of its head."), + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, + FRONT_PIC(Arctovish, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Arctovish, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Arctovish, 64, 48), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Arctovish), + ICON(Arctovish, 0), + .footprint = gMonFootprint_Arctovish, + LEARNSETS(Arctovish), + }, +#endif //P_FAMILY_ARCTOVISH + +#if P_FAMILY_DURALUDON +#define DURALUDON_MISC_INFO \ + .baseHP = 70, \ + .baseAttack = 95, \ + .baseDefense = 115, \ + .baseSpeed = 85, \ + .baseSpAttack = 120, \ + .baseSpDefense = 50, \ + .types = { TYPE_STEEL, TYPE_DRAGON }, \ + .catchRate = 45, \ + .expYield = 187, \ + .evYield_SpAttack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 30, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_DRAGON }, \ + .abilities = { ABILITY_LIGHT_METAL, ABILITY_HEAVY_METAL, ABILITY_STALWART }, \ + .bodyColor = BODY_COLOR_WHITE, \ + .speciesName = _("Duraludon"), \ + .cryId = CRY_DURALUDON, \ + .natDexNum = NATIONAL_DEX_DURALUDON, \ + .categoryName = _("Alloy"), \ + .footprint = gMonFootprint_Duraludon, \ + LEARNSETS(Duraludon), \ + .formSpeciesIdTable = sDuraludonFormSpeciesIdTable, \ + .formChangeTable = sDuraludonFormChangeTable + + [SPECIES_DURALUDON] = + { + DURALUDON_MISC_INFO, + .height = 18, + .weight = 400, + .description = COMPOUND_STRING( + "Its body resembles polished metal, and\n" + "it's both lightweight and strong. The only\n" + "drawback is that it rusts easily."), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + FRONT_PIC(Duraludon, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Duraludon, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Duraludon, 64, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Duraludon), + ICON(Duraludon, 0), + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_DURALUDON_GIGANTAMAX] = + { + DURALUDON_MISC_INFO, + .height = 430, + .weight = 0, + .description = COMPOUND_STRING( + "The hardness of its cells is\n" + "exceptional, even among Steel types. It\n" + "also has a body structure that's\n" + "resistant to earthquakes."), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + FRONT_PIC(DuraludonGigantamax, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_DuraludonGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(DuraludonGigantamax, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(DuraludonGigantamax), + ICON(DuraludonGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_DURALUDON + +#if P_FAMILY_DREEPY + [SPECIES_DREEPY] = + { + .baseHP = 28, + .baseAttack = 60, + .baseDefense = 30, + .baseSpeed = 82, + .baseSpAttack = 40, + .baseSpDefense = 30, + .types = { TYPE_DRAGON, TYPE_GHOST }, + .catchRate = 45, + .expYield = 54, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_CLEAR_BODY, ABILITY_INFILTRATOR, ABILITY_CURSED_BODY }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Dreepy"), + .cryId = CRY_DREEPY, + .natDexNum = NATIONAL_DEX_DREEPY, + .categoryName = _("Lingering"), + .height = 5, + .weight = 20, + .description = COMPOUND_STRING( + "After being reborn as a ghost Pokémon,\n" + "Dreepy wanders the areas it used to\n" + "inhabit back when it was alive in\n" + "prehistoric seas."), + .pokemonScale = 432, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Dreepy, 48, 40), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Dreepy, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 5, + BACK_PIC(Dreepy, 56, 40), + .backPicYOffset = 15, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Dreepy), + ICON(Dreepy, 0), + .footprint = gMonFootprint_Dreepy, + LEARNSETS(Dreepy), + .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_DRAKLOAK}), + }, + + [SPECIES_DRAKLOAK] = + { + .baseHP = 68, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 102, + .baseSpAttack = 60, + .baseSpDefense = 50, + .types = { TYPE_DRAGON, TYPE_GHOST }, + .catchRate = 45, + .expYield = 144, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_CLEAR_BODY, ABILITY_INFILTRATOR, ABILITY_CURSED_BODY }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Drakloak"), + .cryId = CRY_DRAKLOAK, + .natDexNum = NATIONAL_DEX_DRAKLOAK, + .categoryName = _("Caretaker"), + .height = 14, + .weight = 110, + .description = COMPOUND_STRING( + "It's capable of flying faster than 120 mph.\n" + "It battles alongside Dreepy and dotes\n" + "on them until they successfully evolve."), + .pokemonScale = 265, + .pokemonOffset = 2, + .trainerScale = 262, + .trainerOffset = 0, + FRONT_PIC(Drakloak, 64, 56), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Drakloak, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 5, + BACK_PIC(Drakloak, 64, 48), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Drakloak), + ICON(Drakloak, 0), + .footprint = gMonFootprint_Drakloak, + LEARNSETS(Drakloak), + .evolutions = EVOLUTION({EVO_LEVEL, 60, SPECIES_DRAGAPULT}), + }, + + [SPECIES_DRAGAPULT] = + { + .baseHP = 88, + .baseAttack = 120, + .baseDefense = 75, + .baseSpeed = 142, + .baseSpAttack = 100, + .baseSpDefense = 75, + .types = { TYPE_DRAGON, TYPE_GHOST }, + .catchRate = 45, + .expYield = 300, + .evYield_Speed = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_AMORPHOUS, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_CLEAR_BODY, ABILITY_INFILTRATOR, ABILITY_CURSED_BODY }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Dragapult"), + .cryId = CRY_DRAGAPULT, + .natDexNum = NATIONAL_DEX_DRAGAPULT, + .categoryName = _("Stealth"), + .height = 30, + .weight = 500, + .description = COMPOUND_STRING( + "When it isn't battling, it keeps Dreepy\n" + "in the holes on its horns. Once a fight\n" + "starts, it launches the Dreepy like\n" + "supersonic missiles."), + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Dragapult, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Dragapult, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 3, + BACK_PIC(Dragapult, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Dragapult), + ICON(Dragapult, 0), + .footprint = gMonFootprint_Dragapult, + LEARNSETS(Dragapult), + }, +#endif //P_FAMILY_DREEPY + +#if P_FAMILY_ZACIAN +#define ZACIAN_MISC_INFO \ + .catchRate = 10, \ + .evYield_Speed = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ABILITY_INTREPID_SWORD, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .isLegendary = TRUE, \ + .speciesName = _("Zacian"), \ + .natDexNum = NATIONAL_DEX_ZACIAN, \ + .categoryName = _("Warrior"), \ + .height = 28, \ + .pokemonScale = 275, \ + .pokemonOffset = 7, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Zacian, \ + LEARNSETS(Zacian), \ + .formSpeciesIdTable = sZacianFormSpeciesIdTable, \ + .formChangeTable = sZacianFormChangeTable + + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = + { + ZACIAN_MISC_INFO, + .baseHP = 92, + .baseAttack = P_UPDATED_STATS >= GEN_9 ? 120 : 130, + .baseDefense = 115, + .baseSpeed = 138, + .baseSpAttack = 80, + .baseSpDefense = 115, + .types = { TYPE_FAIRY, TYPE_FAIRY }, + .expYield = 335, + .cryId = CRY_ZACIAN_HERO_OF_MANY_BATTLES, + .weight = 1100, + .description = COMPOUND_STRING( + "Known as a legendary hero, this Pokémon\n" + "absorbs metal particles, transforming them\n" + "into a weapon it uses to battle."), + FRONT_PIC(ZacianHeroOfManyBattles, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Zacian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ZacianHeroOfManyBattles, 64, 56), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ZacianHeroOfManyBattles), + ICON(ZacianHeroOfManyBattles, 2), + }, + + [SPECIES_ZACIAN_CROWNED_SWORD] = + { + ZACIAN_MISC_INFO, + .baseHP = 92, + .baseAttack = P_UPDATED_STATS >= GEN_9 ? 150 : 170, + .baseDefense = 115, + .baseSpeed = 148, + .baseSpAttack = 80, + .baseSpDefense = 115, + .types = { TYPE_FAIRY, TYPE_STEEL }, + .expYield = 360, + .cryId = CRY_ZACIAN_CROWNED_SWORD, + .weight = 3550, + .description = COMPOUND_STRING( + "Able to cut down anything with a\n" + "single strike, it became known as the\n" + "Fairy King's Sword, and it inspired\n" + "awe in friend and foe alike."), + FRONT_PIC(ZacianCrownedSword, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Zacian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ZacianCrownedSword, 64, 56), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ZacianCrownedSword), + ICON(ZacianCrownedSword, 2), + }, +#endif //P_FAMILY_ZACIAN + +#if P_FAMILY_ZAMAZENTA +#define ZAMAZENTA_MISC_INFO \ + .catchRate = 10, \ + .evYield_Speed = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ABILITY_DAUNTLESS_SHIELD, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_RED, \ + .isLegendary = TRUE, \ + .speciesName = _("Zamazenta"), \ + .natDexNum = NATIONAL_DEX_ZAMAZENTA, \ + .categoryName = _("Warrior"), \ + .height = 29, \ + .pokemonScale = 275, \ + .pokemonOffset = 7, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .footprint = gMonFootprint_Zamazenta, \ + LEARNSETS(Zamazenta), \ + .formSpeciesIdTable = sZamazentaFormSpeciesIdTable, \ + .formChangeTable = sZamazentaFormChangeTable + + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = + { + ZAMAZENTA_MISC_INFO, + .baseHP = 92, + .baseAttack = P_UPDATED_STATS >= GEN_9 ? 120 : 130, + .baseDefense = 115, + .baseSpeed = 138, + .baseSpAttack = 80, + .baseSpDefense = 115, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .expYield = 335, + .cryId = CRY_ZAMAZENTA_HERO_OF_MANY_BATTLES, + .weight = 2100, + .description = COMPOUND_STRING( + "In times past, it worked together with a\n" + "king of the people to save the Galar\n" + "region. It absorbs metal that it then\n" + "uses in battle."), + FRONT_PIC(ZamazentaHeroOfManyBattles, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Zamazenta, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ZamazentaHeroOfManyBattles, 64, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ZamazentaHeroOfManyBattles), + ICON(ZamazentaHeroOfManyBattles, 2), + }, + + [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = + { + ZAMAZENTA_MISC_INFO, + .baseHP = 92, + .baseAttack = P_UPDATED_STATS >= GEN_9 ? 120 : 130, + .baseDefense = P_UPDATED_STATS >= GEN_9 ? 140 : 145, + .baseSpeed = 128, + .baseSpAttack = 80, + .baseSpDefense = P_UPDATED_STATS >= GEN_9 ? 140 : 145, + .types = { TYPE_FIGHTING, TYPE_STEEL }, + .expYield = 360, + .cryId = CRY_ZAMAZENTA_CROWNED_SHIELD, + .weight = 7850, + .description = COMPOUND_STRING( + "Its ability to deflect any attack\n" + "led to it being known as the Fighting\n" + "Master's Shield. It was feared and\n" + "respected by all."), + FRONT_PIC(ZamazentaCrownedShield, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Zamazenta, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ZamazentaCrownedShield, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ZamazentaCrownedShield), + ICON(ZamazentaCrownedShield, 2), + }, +#endif //P_FAMILY_ZAMAZENTA + +#if P_FAMILY_ETERNATUS +#define ETERNATUS_MISC_INFO \ + .types = { TYPE_POISON, TYPE_DRAGON }, \ + .catchRate = 255, \ + .evYield_HP = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ABILITY_PRESSURE, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_PURPLE, \ + .isLegendary = TRUE, \ + .speciesName = _("Eternatus"), \ + .natDexNum = NATIONAL_DEX_ETERNATUS, \ + .categoryName = _("Gigantic"), \ + .footprint = gMonFootprint_Eternatus, \ + LEARNSETS(Eternatus), \ + .formSpeciesIdTable = sEternatusFormSpeciesIdTable + + [SPECIES_ETERNATUS] = + { + ETERNATUS_MISC_INFO, + .baseHP = 140, + .baseAttack = 85, + .baseDefense = 95, + .baseSpeed = 130, + .baseSpAttack = 145, + .baseSpDefense = 95, + .expYield = 345, + .cryId = CRY_ETERNATUS, + .height = 200, + .weight = 9500, + .pokemonScale = 230, + .pokemonOffset = 0, + .trainerScale = 4852, + .trainerOffset = 20, + .description = COMPOUND_STRING( + "The core on its chest absorbs energy\n" + "emanating from the lands of the Galar\n" + "region. This energy is what allows\n" + "Eternatus to stay active."), + FRONT_PIC(Eternatus, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Eternatus, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 4, + BACK_PIC(Eternatus, 64, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Eternatus), + ICON(Eternatus, 0), + }, + + [SPECIES_ETERNATUS_ETERNAMAX] = + { + ETERNATUS_MISC_INFO, + .baseHP = 255, + .baseAttack = 115, + .baseDefense = 250, + .baseSpeed = 130, + .baseSpAttack = 125, + .baseSpDefense = 250, + .expYield = 563, + .cryId = CRY_ETERNATUS_ETERNAMAX, + .height = 1000, + .weight = 0, + .pokemonScale = 230, + .pokemonOffset = 0, + .trainerScale = 4852, + .trainerOffset = 20, + .description = COMPOUND_STRING( + "As a result of Rose's meddling,\n" + "Eternatus absorbed all the energy in\n" + "the Galar region. It's now in a state\n" + "of power overload."), + FRONT_PIC(EternatusEternamax, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Eternatus, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 13, + BACK_PIC(EternatusEternamax, 64, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(EternatusEternamax), + ICON(EternatusEternamax, 0), + }, +#endif //P_FAMILY_ETERNATUS + +#if P_FAMILY_KUBFU + [SPECIES_KUBFU] = + { + .baseHP = 60, + .baseAttack = 90, + .baseDefense = 60, + .baseSpeed = 72, + .baseSpAttack = 53, + .baseSpDefense = 50, + .types = { TYPE_FIGHTING, TYPE_FIGHTING }, + .catchRate = 3, + .expYield = 77, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 120, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_INNER_FOCUS, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .isLegendary = TRUE, + .speciesName = _("Kubfu"), + .cryId = CRY_KUBFU, + .natDexNum = NATIONAL_DEX_KUBFU, + .categoryName = _("Wushu"), + .height = 6, + .weight = 120, + .description = COMPOUND_STRING( + "Kubfu trains hard to perfect its moves.\n" + "The moves it masters will determine which\n" + "form it takes when it evolves."), + .pokemonScale = 422, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Kubfu, 40, 48), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Kubfu, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Kubfu, 56, 48), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Kubfu), + ICON(Kubfu, 1), + .footprint = gMonFootprint_Kubfu, + LEARNSETS(Kubfu), + .evolutions = EVOLUTION({EVO_DARK_SCROLL, 0, SPECIES_URSHIFU_SINGLE_STRIKE_STYLE}, + {EVO_ITEM, ITEM_SCROLL_OF_DARKNESS, SPECIES_URSHIFU_SINGLE_STRIKE_STYLE}, + {EVO_WATER_SCROLL, 0, SPECIES_URSHIFU_RAPID_STRIKE_STYLE}, + {EVO_ITEM, ITEM_SCROLL_OF_WATERS, SPECIES_URSHIFU_RAPID_STRIKE_STYLE}), + }, + +#define URSHIFU_MISC_INFO(style) \ + .baseHP = 100, \ + .baseAttack = 130, \ + .baseDefense = 100, \ + .baseSpeed = 97, \ + .baseSpAttack = 63, \ + .baseSpDefense = 60, \ + .catchRate = 3, \ + .expYield = 275, \ + .evYield_Attack = 3, \ + .genderRatio = PERCENT_FEMALE(12.5), \ + .eggCycles = 120, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ABILITY_UNSEEN_FIST, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_GRAY, \ + .isLegendary = TRUE, \ + .speciesName = _("Urshifu"), \ + .natDexNum = NATIONAL_DEX_URSHIFU, \ + .categoryName = _("Wushu"), \ + .footprint = gMonFootprint_Urshifu, \ + .formSpeciesIdTable = sUrshifuFormSpeciesIdTable + +#define URSHIFU_SINGLE_STRIKE_STYLE_MISC_INFO \ + .types = { TYPE_FIGHTING, TYPE_DARK }, \ + .cryId = CRY_URSHIFU_SINGLE_STRIKE_STYLE, \ + LEARNSETS(UrshifuSingleStrikeStyle), \ + URSHIFU_MISC_INFO(SingleStrike) + + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = + { + URSHIFU_SINGLE_STRIKE_STYLE_MISC_INFO, + .height = 19, + .weight = 1050, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + .description = COMPOUND_STRING( + "This form of Urshifu is a strong believer\n" + "in the one-hit KO. Its strategy is to leap\n" + "in close to foes and land a devastating\n" + "blow with a hardened fist."), + FRONT_PIC(UrshifuSingleStrikeStyle, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Urshifu, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(UrshifuSingleStrikeStyle, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(UrshifuSingleStrikeStyle), + ICON(Urshifu, 2), + .formChangeTable = sUrshifuSingleStrikeFormChangeTable, + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = + { + URSHIFU_SINGLE_STRIKE_STYLE_MISC_INFO, + .height = 290, + .weight = 0, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + .description = COMPOUND_STRING( + "People call it the embodiment of\n" + "rage. It's said that this Pokémon's\n" + "terrifying expression and shout will\n" + "rid the world of malevolence."), + FRONT_PIC(UrshifuSingleStrikeStyleGigantamax, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_UrshifuSingleStrikeStyleGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(UrshifuSingleStrikeStyleGigantamax, 64, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(UrshifuSingleStrikeStyleGigantamax), + ICON(UrshifuSingleStrikeStyleGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS + +#define URSHIFU_RAPID_STRIKE_STYLE_MISC_INFO \ + .types = { TYPE_FIGHTING, TYPE_WATER }, \ + .cryId = CRY_URSHIFU_RAPID_STRIKE_STYLE, \ + LEARNSETS(UrshifuRapidStrikeStyle), \ + URSHIFU_MISC_INFO(RapidStrike) + + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = + { + URSHIFU_RAPID_STRIKE_STYLE_MISC_INFO, + .height = 19, + .weight = 1050, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + .description = COMPOUND_STRING( + "This form of Urshifu is a strong\n" + "believer in defeating foes by raining\n" + "many blows down on them. Its\n" + "strikes are nonstop, flowing like a river."), + FRONT_PIC(UrshifuRapidStrikeStyle, 56, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Urshifu, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(UrshifuRapidStrikeStyle, 64, 56), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(UrshifuRapidStrikeStyle), + ICON(Urshifu, 2), + .formChangeTable = sUrshifuRapidStrikeFormChangeTable, + }, + +#if P_GIGANTAMAX_FORMS + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = + { + URSHIFU_RAPID_STRIKE_STYLE_MISC_INFO, + .height = 260, + .weight = 0, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 326, + .trainerOffset = 4, + .description = COMPOUND_STRING( + "As it waits for the right moment to\n" + "unleash its Gigantamax power, this\n" + "Pokémon maintains a perfect one-\n" + "legged stance. It won't even twitch."), + FRONT_PIC(UrshifuRapidStrikeStyleGigantamax, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_UrshifuRapidStrikeStyleGigantamax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(UrshifuRapidStrikeStyleGigantamax, 64, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(UrshifuRapidStrikeStyleGigantamax), + ICON(UrshifuRapidStrikeStyleGigantamax, 0), + .isGigantamax = TRUE, + }, +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_KUBFU + + +#if P_FAMILY_ZARUDE +#define ZARUDE_MISC_INFO \ + .baseHP = 105, \ + .baseAttack = 120, \ + .baseDefense = 105, \ + .baseSpeed = 105, \ + .baseSpAttack = 70, \ + .baseSpDefense = 95, \ + .types = { TYPE_DARK, TYPE_GRASS }, \ + .catchRate = 3, \ + .expYield = 300, \ + .evYield_Attack = 3, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 120, \ + .friendship = 0, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ABILITY_LEAF_GUARD, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .isMythical = TRUE, \ + .speciesName = _("Zarude"), \ + .cryId = CRY_ZARUDE, \ + .natDexNum = NATIONAL_DEX_ZARUDE, \ + .categoryName = _("Rogue Monkey"), \ + .height = 18, \ + .weight = 700, \ + .pokemonScale = 267, \ + .pokemonOffset = 2, \ + .trainerScale = 286, \ + .trainerOffset = 1, \ + .footprint = gMonFootprint_Zarude, \ + LEARNSETS(Zarude), \ + .formSpeciesIdTable = sZarudeFormSpeciesIdTable + + [SPECIES_ZARUDE] = + { + ZARUDE_MISC_INFO, + .description = COMPOUND_STRING( + "Within dense forests, this Pokémon lives\n" + "in a pack with others of its kind. It's\n" + "incredibly aggressive, and the other\n" + "Pokémon of the forest fear it."), + FRONT_PIC(Zarude, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Zarude, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Zarude, 64, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Zarude), + ICON(Zarude, 1), + }, + [SPECIES_ZARUDE_DADA] = + { + ZARUDE_MISC_INFO, + .description = COMPOUND_STRING( + "This Zarude's special strength\n" + "stems from its love and care for an\n" + "orphaned human child that the Pokémon\n" + "has raised."), + FRONT_PIC(ZarudeDada, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Zarude, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ZarudeDada, 64, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ZarudeDada), + ICON(ZarudeDada, 1), + }, +#endif //P_FAMILY_ZARUDE + +#if P_FAMILY_REGIELEKI + [SPECIES_REGIELEKI] = + { + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 50, + .baseSpeed = 200, + .baseSpAttack = 100, + .baseSpDefense = 50, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 3, + .expYield = 290, + .evYield_Speed = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_TRANSISTOR, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Regieleki"), + .cryId = CRY_REGIELEKI, + .natDexNum = NATIONAL_DEX_REGIELEKI, + .categoryName = _("Electron"), + .height = 12, + .weight = 1450, + .description = COMPOUND_STRING( + "This Pokémon is a cluster of electrical\n" + "energy. It's said that removing the rings\n" + "on Regieleki's body will unleash the\n" + "Pokémon's latent power."), + .pokemonScale = 282, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Regieleki, 64, 56), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Regieleki, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 8, + BACK_PIC(Regieleki, 64, 48), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Regieleki), + ICON(Regieleki, 0), + .footprint = gMonFootprint_Regieleki, + LEARNSETS(Regieleki), + .isLegendary = TRUE, + }, +#endif //P_FAMILY_REGIELEKI + +#if P_FAMILY_REGIDRAGO + [SPECIES_REGIDRAGO] = + { + .baseHP = 200, + .baseAttack = 100, + .baseDefense = 50, + .baseSpeed = 80, + .baseSpAttack = 100, + .baseSpDefense = 50, + .types = { TYPE_DRAGON, TYPE_DRAGON }, + .catchRate = 3, + .expYield = 290, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_DRAGONS_MAW, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .isLegendary = TRUE, + .speciesName = _("Regidrago"), + .cryId = CRY_REGIDRAGO, + .natDexNum = NATIONAL_DEX_REGIDRAGO, + .categoryName = _("Dragon Orb"), + .height = 21, + .weight = 2000, + .description = COMPOUND_STRING( + "An academic theory proposes that\n" + "Regidrago's arms were once the head of an\n" + "ancient dragon Pokémon. The theory\n" + "remains unproven."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, + FRONT_PIC(Regidrago, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Regidrago, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 5, + BACK_PIC(Regidrago, 64, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Regidrago), + ICON(Regidrago, 0), + .footprint = gMonFootprint_Regidrago, + LEARNSETS(Regidrago), + }, +#endif //P_FAMILY_REGIDRAGO + +#if P_FAMILY_GLASTRIER + [SPECIES_GLASTRIER] = + { + .baseHP = 100, + .baseAttack = 145, + .baseDefense = 130, + .baseSpeed = 30, + .baseSpAttack = 65, + .baseSpDefense = 110, + .types = { TYPE_ICE, TYPE_ICE }, + .catchRate = 3, + .expYield = 290, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_CHILLING_NEIGH, ABILITY_NONE }, + .bodyColor = BODY_COLOR_WHITE, + .isLegendary = TRUE, + .speciesName = _("Glastrier"), + .cryId = CRY_GLASTRIER, + .natDexNum = NATIONAL_DEX_GLASTRIER, + .categoryName = _("Wild Horse"), + .height = 22, + .weight = 8000, + .description = COMPOUND_STRING( + "Glastrier emits intense cold from its\n" + "hooves. It's also a belligerent Pokémon--\n" + "anything it wants, it takes by force."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 348, + .trainerOffset = 6, + FRONT_PIC(Glastrier, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Glastrier, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Glastrier, 56, 64), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Glastrier), + ICON(Glastrier, 0), + .footprint = gMonFootprint_Glastrier, + LEARNSETS(Glastrier), + }, +#endif //P_FAMILY_GLASTRIER + +#if P_FAMILY_SPECTRIER + [SPECIES_SPECTRIER] = + { + .baseHP = 100, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 130, + .baseSpAttack = 145, + .baseSpDefense = 80, + .types = { TYPE_GHOST, TYPE_GHOST }, + .catchRate = 3, + .expYield = 290, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_GRIM_NEIGH, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLACK, + .isLegendary = TRUE, + .speciesName = _("Spectrier"), + .cryId = CRY_SPECTRIER, + .natDexNum = NATIONAL_DEX_SPECTRIER, + .categoryName = _("Swift Horse"), + .height = 20, + .weight = 445, + .description = COMPOUND_STRING( + "It probes its surroundings with all its\n" + "senses save one--it doesn't use its sense\n" + "of sight. Spectrier's kicks are said to\n" + "separate soul from body."), + .pokemonScale = 261, + .pokemonOffset = 1, + .trainerScale = 334, + .trainerOffset = 4, + FRONT_PIC(Spectrier, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Spectrier, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Spectrier, 56, 56), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Spectrier), + ICON(Spectrier, 0), + .footprint = gMonFootprint_Spectrier, + LEARNSETS(Spectrier), + }, +#endif //P_FAMILY_SPECTRIER + +#define CALYREX_MISC_INFO \ + .speciesName = _("Calyrex"), \ + .natDexNum = NATIONAL_DEX_CALYREX, \ + .footprint = gMonFootprint_Calyrex, \ + .formSpeciesIdTable = sCalyrexFormSpeciesIdTable, \ + .isLegendary = TRUE + +#if P_FAMILY_CALYREX + [SPECIES_CALYREX] = + { + CALYREX_MISC_INFO, + .baseHP = 100, + .baseAttack = 80, + .baseDefense = 80, + .baseSpeed = 80, + .baseSpAttack = 80, + .baseSpDefense = 80, + .types = { TYPE_PSYCHIC, TYPE_GRASS }, + .catchRate = 3, + .expYield = 250, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_UNNERVE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .cryId = CRY_CALYREX, + .categoryName = _("King"), + .height = 11, + .weight = 77, + .description = COMPOUND_STRING( + "Calyrex is a merciful Pokémon, capable of\n" + "providing healing and blessings. It\n" + "reigned over the Galar region in times\n" + "of yore."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Calyrex, 48, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Calyrex, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Calyrex, 56, 48), + .backPicYOffset = 10, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Calyrex), + ICON(Calyrex, 0), + LEARNSETS(Calyrex), + }, + +#if P_FUSION_FORMS + [SPECIES_CALYREX_ICE_RIDER] = + { + CALYREX_MISC_INFO, + .baseHP = 100, + .baseAttack = 165, + .baseDefense = 150, + .baseSpeed = 50, + .baseSpAttack = 85, + .baseSpDefense = 130, + .types = { TYPE_PSYCHIC, TYPE_ICE }, + .catchRate = 3, + .expYield = 340, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_AS_ONE_ICE_RIDER, ABILITY_NONE }, + .bodyColor = BODY_COLOR_WHITE, + .cryId = CRY_CALYREX_ICE_RIDER, + .categoryName = _("High King"), + .height = 24, + .weight = 8091, + .description = COMPOUND_STRING( + "According to lore, this Pokémon\n" + "showed no mercy to those who got in\n" + "its way, yet it would heal its\n" + "opponents' wounds after battle."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(CalyrexIceRider, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Calyrex, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(CalyrexIceRider, 64, 64), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(CalyrexIceRider), + ICON(CalyrexIceRider, 0), + LEARNSETS(CalyrexIceRider), + .cannotBeTraded = TRUE, + }, + + [SPECIES_CALYREX_SHADOW_RIDER] = + { + CALYREX_MISC_INFO, + .baseHP = 100, + .baseAttack = 85, + .baseDefense = 80, + .baseSpeed = 150, + .baseSpAttack = 165, + .baseSpDefense = 100, + .types = { TYPE_PSYCHIC, TYPE_GHOST }, + .catchRate = 3, + .expYield = 340, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_AS_ONE_SHADOW_RIDER, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLACK, + .cryId = CRY_CALYREX_SHADOW_RIDER, + .categoryName = _("High King"), + .height = 24, + .weight = 536, + .description = COMPOUND_STRING( + "It's said that Calyrex and a\n" + "Pokémon that had bonded with it ran all\n" + "across the Galar region to bring green\n" + "to the wastelands."), + .pokemonScale = 320, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(CalyrexShadowRider, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Calyrex, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(CalyrexShadowRider, 64, 56), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(CalyrexShadowRider), + ICON(CalyrexShadowRider, 0), + LEARNSETS(CalyrexShadowRider), + .cannotBeTraded = TRUE, + }, +#endif //P_FUSION_FORMS +#endif //P_FAMILY_CALYREX + +#if P_FAMILY_ENAMORUS +#define ENAMORUS_MISC_INFO \ + .types = { TYPE_FAIRY, TYPE_FLYING }, \ + .catchRate = 3, \ + .expYield = 116, \ + .evYield_SpAttack = 3, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .bodyColor = BODY_COLOR_PINK, \ + .isLegendary = TRUE, \ + .speciesName = _("Enamorus"), \ + .natDexNum = NATIONAL_DEX_ENAMORUS, \ + .categoryName = _("Love-Hate"), \ + .height = 16, \ + .weight = 480, \ + .pokemonScale = 259, \ + .pokemonOffset = 1, \ + .trainerScale = 296, \ + .trainerOffset = 1, \ + LEARNSETS(Enamorus), \ + .formSpeciesIdTable = sEnamorusFormSpeciesIdTable + + [SPECIES_ENAMORUS_INCARNATE] = + { + ENAMORUS_MISC_INFO, + .baseHP = 74, + .baseAttack = 115, + .baseDefense = 70, + .baseSpeed = 106, + .baseSpAttack = 135, + .baseSpDefense = 80, + .abilities = { ABILITY_CUTE_CHARM, ABILITY_NONE, ABILITY_CONTRARY }, + .cryId = CRY_ENAMORUS_INCARNATE, + .description = COMPOUND_STRING( + "Its arrival brings an end to the winter.\n" + "According to legend, this Pokémon's love\n" + "gives rise to the budding of fresh life\n" + "across the land."), + FRONT_PIC(EnamorusIncarnate, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_EnamorusIncarnate, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 7, + BACK_PIC(EnamorusIncarnate, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(EnamorusIncarnate), + ICON(EnamorusIncarnate, 1), + //.footprint = gMonFootprint_EnamorusIncarnate, + }, + + [SPECIES_ENAMORUS_THERIAN] = + { + ENAMORUS_MISC_INFO, + .baseHP = 74, + .baseAttack = 115, + .baseDefense = 110, + .baseSpeed = 46, + .baseSpAttack = 135, + .baseSpDefense = 100, + .abilities = { ABILITY_OVERCOAT, ABILITY_NONE, ABILITY_NONE }, + .cryId = CRY_ENAMORUS_THERIAN, + .description = COMPOUND_STRING( + "From the clouds, it descends upon\n" + "those who treat any form of life\n" + "with disrespect and metes out\n" + "wrathful, ruthless punishment."), + FRONT_PIC(EnamorusTherian, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_EnamorusTherian, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(EnamorusTherian, 64, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(EnamorusTherian), + ICON(EnamorusTherian, 1), + //.footprint = gMonFootprint_Enamorus, + }, +#endif //P_FAMILY_ENAMORUS + +#ifdef __INTELLISENSE__ +}; +#endif \ No newline at end of file diff --git a/src/data/pokemon/species_info/gen_9.h b/src/data/pokemon/species_info/gen_9.h new file mode 100644 index 0000000000..2f5f0ad76a --- /dev/null +++ b/src/data/pokemon/species_info/gen_9.h @@ -0,0 +1,5433 @@ +#ifdef __INTELLISENSE__ +const struct SpeciesInfo gSpeciesInfoGen9[] = +{ +#endif + +#if P_FAMILY_SPRIGATITO + [SPECIES_SPRIGATITO] = + { + .baseHP = 40, + .baseAttack = 61, + .baseDefense = 54, + .baseSpeed = 65, + .baseSpAttack = 45, + .baseSpDefense = 45, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 62, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_PROTEAN }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Sprigatito"), + .cryId = CRY_SPRIGATITO, + .natDexNum = NATIONAL_DEX_SPRIGATITO, + .categoryName = _("Grass Cat"), + .height = 4, + .weight = 41, + .description = COMPOUND_STRING( + "The sweet scent its body gives off\n" + "mesmerizes those around it. The\n" + "scent grows stronger when this\n" + "Pokémon is in the sun."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Sprigatito, 64, 64), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Sprigatito, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Sprigatito, 64, 64), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Sprigatito), + ICON(Sprigatito, 4), + //.footprint = gMonFootprint_Sprigatito, + LEARNSETS(Sprigatito), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_FLORAGATO}), + }, + + [SPECIES_FLORAGATO] = + { + .baseHP = 61, + .baseAttack = 80, + .baseDefense = 63, + .baseSpeed = 83, + .baseSpAttack = 60, + .baseSpDefense = 63, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 45, + .expYield = 144, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_PROTEAN }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Floragato"), + .cryId = CRY_FLORAGATO, + .natDexNum = NATIONAL_DEX_FLORAGATO, + .categoryName = _("Grass Cat"), + .height = 9, + .weight = 122, + .description = COMPOUND_STRING( + "Floragato deftly wields the vine\n" + "hidden beneath its long fur, slamming\n" + "the hard flower bud against its\n" + "opponents."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Floragato, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Floragato, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Floragato, 64, 64), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Floragato), + ICON(Floragato, 1), + //.footprint = gMonFootprint_Floragato, + LEARNSETS(Floragato), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_MEOWSCARADA}), + }, + + [SPECIES_MEOWSCARADA] = + { + .baseHP = 76, + .baseAttack = 110, + .baseDefense = 70, + .baseSpeed = 123, + .baseSpAttack = 81, + .baseSpDefense = 70, + .types = { TYPE_GRASS, TYPE_DARK }, + .catchRate = 45, + .expYield = 265, + .evYield_Speed = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_GRASS }, + .abilities = { ABILITY_OVERGROW, ABILITY_NONE, ABILITY_PROTEAN }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Meowscarad"), + .cryId = CRY_MEOWSCARADA, + .natDexNum = NATIONAL_DEX_MEOWSCARADA, + .categoryName = _("Magician"), + .height = 15, + .weight = 312, + .description = COMPOUND_STRING( + "This Pokémon uses the reflective\n" + "fur lining its cape to camouflage the\n" + "stem of its flower, creating the\n" + "illusion that the flower is floating."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Meowscarada, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Meowscarada, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Meowscarada, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Meowscarada), + ICON(Meowscarada, 1), + //.footprint = gMonFootprint_Meowscarada, + LEARNSETS(Meowscarada), + }, +#endif //P_FAMILY_SPRIGATITO + +#if P_FAMILY_FUECOCO + [SPECIES_FUECOCO] = + { + .baseHP = 67, + .baseAttack = 45, + .baseDefense = 59, + .baseSpeed = 36, + .baseSpAttack = 63, + .baseSpDefense = 40, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 62, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_UNAWARE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Fuecoco"), + .cryId = CRY_FUECOCO, + .natDexNum = NATIONAL_DEX_FUECOCO, + .categoryName = _("Fire Croc"), + .height = 4, + .weight = 98, + .description = COMPOUND_STRING( + "Its flame sac is small, so energy is\n" + "always leaking out. This energy is\n" + "released from the dent atop\n" + "Fuecoco's head and flickers to and fro."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Fuecoco, 64, 64), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Fuecoco, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Fuecoco, 64, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Fuecoco), + ICON(Fuecoco, 0), + //.footprint = gMonFootprint_Fuecoco, + LEARNSETS(Fuecoco), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_CROCALOR}), + }, + + [SPECIES_CROCALOR] = + { + .baseHP = 81, + .baseAttack = 55, + .baseDefense = 78, + .baseSpeed = 49, + .baseSpAttack = 90, + .baseSpDefense = 58, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 45, + .expYield = 144, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_UNAWARE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Crocalor"), + .cryId = CRY_CROCALOR, + .natDexNum = NATIONAL_DEX_CROCALOR, + .categoryName = _("Fire Croc"), + .height = 10, + .weight = 307, + .description = COMPOUND_STRING( + "The combination of Crocalor's fire\n" + "energy and overflowing vitality has\n" + "caused an egg-shaped fireball to\n" + "appear on the Pokémon's head."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Crocalor, 64, 64), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Crocalor, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Crocalor, 64, 64), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Crocalor), + ICON(Crocalor, 0), + //.footprint = gMonFootprint_Crocalor, + LEARNSETS(Crocalor), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SKELEDIRGE}), + }, + + [SPECIES_SKELEDIRGE] = + { + .baseHP = 104, + .baseAttack = 75, + .baseDefense = 100, + .baseSpeed = 66, + .baseSpAttack = 110, + .baseSpDefense = 75, + .types = { TYPE_FIRE, TYPE_GHOST }, + .catchRate = 45, + .expYield = 265, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_BLAZE, ABILITY_NONE, ABILITY_UNAWARE }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Skeledirge"), + .cryId = CRY_SKELEDIRGE, + .natDexNum = NATIONAL_DEX_SKELEDIRGE, + .categoryName = _("Singer"), + .height = 16, + .weight = 3265, + .description = COMPOUND_STRING( + "Skeledirge's gentle singing\n" + "soothes the souls of all that hear it. It\n" + "burns its enemies to a crisp with\n" + "flames of over 5,400 degrees Fahrenheit."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Skeledirge, 64, 64), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Skeledirge, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Skeledirge, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Skeledirge), + ICON(Skeledirge, 0), + //.footprint = gMonFootprint_Skeledirge, + LEARNSETS(Skeledirge), + }, +#endif //P_FAMILY_FUECOCO + +#if P_FAMILY_QUAXLY + [SPECIES_QUAXLY] = + { + .baseHP = 55, + .baseAttack = 65, + .baseDefense = 45, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 45, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 62, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_MOXIE }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Quaxly"), + .cryId = CRY_QUAXLY, + .natDexNum = NATIONAL_DEX_QUAXLY, + .categoryName = _("Duckling"), + .height = 5, + .weight = 61, + .description = COMPOUND_STRING( + "Its strong legs let it easily swim\n" + "around in even fast-flowing rivers.\n" + "It likes to keep things tidy and is\n" + "prone to overthinking things."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Quaxly, 64, 64), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Quaxly, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Quaxly, 64, 64), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Quaxly), + ICON(Quaxly, 2), + //.footprint = gMonFootprint_Quaxly, + LEARNSETS(Quaxly), + .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_QUAXWELL}), + }, + + [SPECIES_QUAXWELL] = + { + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 65, + .baseSpeed = 65, + .baseSpAttack = 65, + .baseSpDefense = 60, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 45, + .expYield = 144, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_MOXIE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Quaxwell"), + .cryId = CRY_QUAXWELL, + .natDexNum = NATIONAL_DEX_QUAXWELL, + .categoryName = _("Practicing"), + .height = 12, + .weight = 215, + .description = COMPOUND_STRING( + "The hardworking Quaxwell observes\n" + "people and Pokémon from various\n" + "regions and incorporates their\n" + "movements into its own dance routines."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Quaxwell, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Quaxwell, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Quaxwell, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Quaxwell), + ICON(Quaxwell, 0), + //.footprint = gMonFootprint_Quaxwell, + LEARNSETS(Quaxwell), + .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_QUAQUAVAL}), + }, + + [SPECIES_QUAQUAVAL] = + { + .baseHP = 85, + .baseAttack = 120, + .baseDefense = 80, + .baseSpeed = 85, + .baseSpAttack = 85, + .baseSpDefense = 75, + .types = { TYPE_WATER, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 265, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_TORRENT, ABILITY_NONE, ABILITY_MOXIE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Quaquaval"), + .cryId = CRY_QUAQUAVAL, + .natDexNum = NATIONAL_DEX_QUAQUAVAL, + .categoryName = _("Dancer"), + .height = 18, + .weight = 619, + .description = COMPOUND_STRING( + "A single kick from a Quaquaval can\n" + "send a truck rolling. This Pokémon\n" + "uses its powerful legs to perform\n" + "striking dances from far-off lands."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Quaquaval, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Quaquaval, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Quaquaval, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Quaquaval), + ICON(Quaquaval, 0), + //.footprint = gMonFootprint_Quaquaval, + LEARNSETS(Quaquaval), + }, +#endif //P_FAMILY_QUAXLY + +#if P_FAMILY_LECHONK + [SPECIES_LECHONK] = + { + .baseHP = 54, + .baseAttack = 45, + .baseDefense = 40, + .baseSpeed = 35, + .baseSpAttack = 35, + .baseSpDefense = 45, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 255, + .expYield = 51, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_AROMA_VEIL, ABILITY_GLUTTONY, ABILITY_THICK_FAT }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Lechonk"), + .cryId = CRY_LECHONK, + .natDexNum = NATIONAL_DEX_LECHONK, + .categoryName = _("Hog"), + .height = 5, + .weight = 102, + .description = COMPOUND_STRING( + "It searches for food all day. It\n" + "possesses a keen sense of smell but\n" + "doesn't use it for anything other\n" + "than foraging."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Lechonk, 64, 64), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Lechonk, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Lechonk, 64, 64), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Lechonk), + ICON(Lechonk, 1), + //.footprint = gMonFootprint_Lechonk, + LEARNSETS(Lechonk), + .evolutions = EVOLUTION({EVO_LEVEL_MALE, 18, SPECIES_OINKOLOGNE_MALE}, + {EVO_LEVEL_FEMALE, 18, SPECIES_OINKOLOGNE_FEMALE}), + }, + +#define OINKOLOGNE_MISC_INFO \ + .types = { TYPE_NORMAL, TYPE_NORMAL }, \ + .catchRate = 100, \ + .expYield = 171, \ + .evYield_HP = 2, \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, \ + .bodyColor = BODY_COLOR_GRAY, \ + .speciesName = _("Oinkologne"), \ + .natDexNum = NATIONAL_DEX_OINKOLOGNE, \ + .categoryName = _("Hog"), \ + .height = 10, \ + .weight = 1200, \ + .pokemonScale = 356, \ + .pokemonOffset = 17, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .formSpeciesIdTable = sOinkologneFormSpeciesIdTable + + [SPECIES_OINKOLOGNE_MALE] = + { + OINKOLOGNE_MISC_INFO, + .baseHP = 110, + .baseAttack = 100, + .baseDefense = 75, + .baseSpeed = 65, + .baseSpAttack = 59, + .baseSpDefense = 80, + .genderRatio = PERCENT_FEMALE(0), + .abilities = { ABILITY_LINGERING_AROMA, ABILITY_GLUTTONY, ABILITY_THICK_FAT }, + .cryId = CRY_OINKOLOGNE_MALE, + .description = COMPOUND_STRING( + "Oinkologne is proud of its fine,\n" + "glossy skin. It emits a concentrated\n" + "scent from the tip of its tail."), + FRONT_PIC(OinkologneMale, 64, 64), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Oinkologne, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(OinkologneMale, 64, 64), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(OinkologneMale), + ICON(OinkologneMale, 1), + //.footprint = gMonFootprint_Oinkologne, + LEARNSETS(OinkologneMale), + + }, + + [SPECIES_OINKOLOGNE_FEMALE] = + { + OINKOLOGNE_MISC_INFO, + .baseHP = 115, + .baseAttack = 90, + .baseDefense = 70, + .baseSpeed = 65, + .baseSpAttack = 59, + .baseSpDefense = 90, + .genderRatio = PERCENT_FEMALE(100), + .abilities = { ABILITY_AROMA_VEIL, ABILITY_GLUTTONY, ABILITY_THICK_FAT }, + .cryId = CRY_OINKOLOGNE_FEMALE, + .description = COMPOUND_STRING( + "This is a meticulous Pokémon that\n" + "likes to keep things tidy. It\n" + "shrouds itself in a floral aroma that\n" + "soothes the Pokémon around it."), + FRONT_PIC(OinkologneFemale, 64, 64), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Oinkologne, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(OinkologneFemale, 64, 64), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(OinkologneFemale), + ICON(OinkologneFemale, 2), + //.footprint = gMonFootprint_Oinkologne, + LEARNSETS(OinkologneFemale), + }, +#endif //P_FAMILY_LECHONK + +#if P_FAMILY_TAROUNTULA + [SPECIES_TAROUNTULA] = + { + .baseHP = 35, + .baseAttack = 41, + .baseDefense = 45, + .baseSpeed = 20, + .baseSpAttack = 29, + .baseSpDefense = 40, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 255, + .expYield = 42, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_INSOMNIA, ABILITY_NONE, ABILITY_STAKEOUT }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Tarountula"), + .cryId = CRY_TAROUNTULA, + .natDexNum = NATIONAL_DEX_TAROUNTULA, + .categoryName = _("String Ball"), + .height = 3, + .weight = 40, + .description = COMPOUND_STRING( + "The thread it secretes from its\n" + "rear is as strong as wire. The secret\n" + "behind the thread's strength is the\n" + "topic of ongoing research."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Tarountula, 64, 64), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Tarountula, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Tarountula, 64, 64), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Tarountula), + ICON(Tarountula, 1), + //.footprint = gMonFootprint_Tarountula, + LEARNSETS(Tarountula), + .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_SPIDOPS}), + }, + + [SPECIES_SPIDOPS] = + { + .baseHP = 60, + .baseAttack = 79, + .baseDefense = 92, + .baseSpeed = 35, + .baseSpAttack = 52, + .baseSpDefense = 86, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 120, + .expYield = 141, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_INSOMNIA, ABILITY_NONE, ABILITY_STAKEOUT }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Spidops"), + .cryId = CRY_SPIDOPS, + .natDexNum = NATIONAL_DEX_SPIDOPS, + .categoryName = _("Trap"), + .height = 10, + .weight = 165, + .description = COMPOUND_STRING( + "It clings to branches and ceilings\n" + "using its threads and moves without\n" + "a sound. It takes out its prey\n" + "before the prey even notices it."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Spidops, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Spidops, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Spidops, 64, 64), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Spidops), + ICON(Spidops, 1), + //.footprint = gMonFootprint_Spidops, + LEARNSETS(Spidops), + }, +#endif //P_FAMILY_TAROUNTULA + +#if P_FAMILY_NYMBLE + [SPECIES_NYMBLE] = + { + .baseHP = 33, + .baseAttack = 46, + .baseDefense = 40, + .baseSpeed = 45, + .baseSpAttack = 21, + .baseSpDefense = 25, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 190, + .expYield = 42, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 20, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_NONE, ABILITY_TINTED_LENS }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Nymble"), + .cryId = CRY_NYMBLE, + .natDexNum = NATIONAL_DEX_NYMBLE, + .categoryName = _("Grasshopper"), + .height = 2, + .weight = 10, + .description = COMPOUND_STRING( + "It has its third set of legs folded\n" + "up. When it's in a tough spot, this\n" + "Pokémon jumps over 30 feet using the\n" + "strength of its legs."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Nymble, 64, 64), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Nymble, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Nymble, 64, 64), + .backPicYOffset = 14, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Nymble), + ICON(Nymble, 0), + //.footprint = gMonFootprint_Nymble, + LEARNSETS(Nymble), + .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_LOKIX}), + }, + + [SPECIES_LOKIX] = + { + .baseHP = 71, + .baseAttack = 102, + .baseDefense = 78, + .baseSpeed = 92, + .baseSpAttack = 52, + .baseSpDefense = 55, + .types = { TYPE_BUG, TYPE_DARK }, + .catchRate = 30, + .expYield = 158, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SWARM, ABILITY_NONE, ABILITY_TINTED_LENS }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Lokix"), + .cryId = CRY_LOKIX, + .natDexNum = NATIONAL_DEX_LOKIX, + .categoryName = _("Grasshopper"), + .height = 10, + .weight = 175, + .description = COMPOUND_STRING( + "When it decides to fight all out, it\n" + "stands on its previously folded\n" + "legs to enter Showdown Mode. It\n" + "neutralizes its enemies in short order."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Lokix, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Lokix, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Lokix, 64, 64), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Lokix), + ICON(Lokix, 0), + //.footprint = gMonFootprint_Lokix, + LEARNSETS(Lokix), + }, +#endif //P_FAMILY_NYMBLE + +#if P_FAMILY_PAWMI + [SPECIES_PAWMI] = + { + .baseHP = 45, + .baseAttack = 50, + .baseDefense = 20, + .baseSpeed = 60, + .baseSpAttack = 40, + .baseSpDefense = 25, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 190, + .expYield = 48, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_STATIC, ABILITY_NATURAL_CURE, ABILITY_IRON_FIST }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pawmi"), + .cryId = CRY_PAWMI, + .natDexNum = NATIONAL_DEX_PAWMI, + .categoryName = _("Mouse"), + .height = 3, + .weight = 25, + .description = COMPOUND_STRING( + "The pads of its paws are\n" + "electricity-discharging organs. Pawmi fires\n" + "electricity from its forepaws while\n" + "standing unsteadily on its hind legs."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pawmi, 64, 64), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Pawmi, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Pawmi, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Pawmi), + ICON(Pawmi, 3), + //.footprint = gMonFootprint_Pawmi, + LEARNSETS(Pawmi), + .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_PAWMO}), + }, + + [SPECIES_PAWMO] = + { + .baseHP = 60, + .baseAttack = 75, + .baseDefense = 40, + .baseSpeed = 85, + .baseSpAttack = 50, + .baseSpDefense = 40, + .types = { TYPE_ELECTRIC, TYPE_FIGHTING }, + .catchRate = 80, + .expYield = 123, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_VOLT_ABSORB, ABILITY_NATURAL_CURE, ABILITY_IRON_FIST }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pawmo"), + .cryId = CRY_PAWMO, + .natDexNum = NATIONAL_DEX_PAWMO, + .categoryName = _("Mouse"), + .height = 4, + .weight = 65, + .description = COMPOUND_STRING( + "When its group is attacked, Pawmo\n" + "is the first to leap into battle,\n" + "defeating enemies with a fighting\n" + "technique that utilizes electric shocks."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pawmo, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Pawmo, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Pawmo, 64, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Pawmo), + ICON(Pawmo, 3), + //.footprint = gMonFootprint_Pawmo, + LEARNSETS(Pawmo), + .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_PAWMOT}), + }, + + [SPECIES_PAWMOT] = + { + .baseHP = 70, + .baseAttack = 115, + .baseDefense = 70, + .baseSpeed = 105, + .baseSpAttack = 70, + .baseSpDefense = 60, + .types = { TYPE_ELECTRIC, TYPE_FIGHTING }, + .catchRate = 45, + .expYield = 245, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 15, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_VOLT_ABSORB, ABILITY_NATURAL_CURE, ABILITY_IRON_FIST }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Pawmot"), + .cryId = CRY_PAWMOT, + .natDexNum = NATIONAL_DEX_PAWMOT, + .categoryName = _("Hands-On"), + .height = 9, + .weight = 410, + .description = COMPOUND_STRING( + "This Pokémon normally is slow to\n" + "react, but once it enters battle, it\n" + "will strike down its enemies with\n" + "lightning-fast movements."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Pawmot, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Pawmot, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Pawmot, 64, 64), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Pawmot), + ICON(Pawmot, 3), + //.footprint = gMonFootprint_Pawmot, + LEARNSETS(Pawmot), + }, +#endif //P_FAMILY_PAWMI + +#if P_FAMILY_TANDEMAUS + [SPECIES_TANDEMAUS] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 45, + .baseSpeed = 75, + .baseSpAttack = 40, + .baseSpDefense = 45, + .types = { TYPE_NORMAL, TYPE_NORMAL }, + .catchRate = 150, + .expYield = 61, + .evYield_Speed = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 10, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_RUN_AWAY, ABILITY_PICKUP, ABILITY_OWN_TEMPO }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Tandemaus"), + .cryId = CRY_TANDEMAUS, + .natDexNum = NATIONAL_DEX_TANDEMAUS, + .categoryName = _("Couple"), + .height = 3, + .weight = 18, + .description = COMPOUND_STRING( + "Exhibiting great teamwork, they\n" + "use their incisors to cut pieces out\n" + "of any material that might be useful\n" + "for a nest, then make off with them."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Tandemaus, 64, 64), + .frontPicYOffset = 15, + .frontAnimFrames = sAnims_Tandemaus, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Tandemaus, 64, 64), + .backPicYOffset = 15, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Tandemaus), + ICON(Tandemaus, 0), + //.footprint = gMonFootprint_Tandemaus, + LEARNSETS(Tandemaus), + .evolutions = EVOLUTION({EVO_LEVEL_FAMILY_OF_FOUR, 25, SPECIES_MAUSHOLD_FAMILY_OF_FOUR}, + {EVO_LEVEL_FAMILY_OF_THREE, 25, SPECIES_MAUSHOLD_FAMILY_OF_THREE}), + }, + +#define MAUSHOLD_SPECIES_INFO \ + .baseHP = 74, \ + .baseAttack = 75, \ + .baseDefense = 70, \ + .baseSpeed = 111, \ + .baseSpAttack = 65, \ + .baseSpDefense = 75, \ + .types = { TYPE_NORMAL, TYPE_NORMAL }, \ + .catchRate = 75, \ + .expYield = 165, \ + .evYield_Speed = 2, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 10, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_FAST, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FAIRY }, \ + .abilities = { ABILITY_FRIEND_GUARD, ABILITY_CHEEK_POUCH, ABILITY_TECHNICIAN }, \ + .bodyColor = BODY_COLOR_WHITE, \ + .speciesName = _("Maushold"), \ + .natDexNum = NATIONAL_DEX_MAUSHOLD, \ + .categoryName = _("Family"), \ + .height = 3, \ + .pokemonScale = 356, \ + .pokemonOffset = 17, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontPicYOffset = 15, \ + .frontAnimFrames = sAnims_Maushold, \ + .backPicYOffset = 15, \ + PALETTES(Maushold), \ + LEARNSETS(Maushold), \ + .formSpeciesIdTable = sMausholdFormSpeciesIdTable + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //.backAnimId = BACK_ANIM_NONE, + //.footprint = gMonFootprint_Maushold, + + [SPECIES_MAUSHOLD_FAMILY_OF_THREE] = + { + MAUSHOLD_SPECIES_INFO, + .cryId = CRY_MAUSHOLD_FAMILY_OF_THREE, + .weight = 23, + .description = COMPOUND_STRING( + "The little one just appeared one\n" + "day. They all live together like a\n" + "family, but the relationship between\n" + "the three is still unclear."), + FRONT_PIC(MausholdFamilyOfThree, 64, 64), + BACK_PIC(MausholdFamilyOfThree, 64, 64), + ICON(MausholdFamilyOfThree, 0), + }, + [SPECIES_MAUSHOLD_FAMILY_OF_FOUR] = + { + MAUSHOLD_SPECIES_INFO, + .cryId = CRY_MAUSHOLD_FAMILY_OF_FOUR, + .weight = 28, + .description = COMPOUND_STRING( + "The larger pair protects the little\n" + "ones during battles. When facing\n" + "strong opponents, the whole group\n" + "will join the fight."), + FRONT_PIC(MausholdFamilyOfFour, 64, 64), + BACK_PIC(MausholdFamilyOfFour, 64, 64), + ICON(MausholdFamilyOfFour, 0), + }, +#endif //P_FAMILY_TANDEMAUS + +#if P_FAMILY_FIDOUGH + [SPECIES_FIDOUGH] = + { + .baseHP = 37, + .baseAttack = 55, + .baseDefense = 70, + .baseSpeed = 65, + .baseSpAttack = 30, + .baseSpDefense = 55, + .types = { TYPE_FAIRY, TYPE_FAIRY }, + .catchRate = 190, + .expYield = 62, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_OWN_TEMPO, ABILITY_NONE, ABILITY_KLUTZ }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Fidough"), + .cryId = CRY_FIDOUGH, + .natDexNum = NATIONAL_DEX_FIDOUGH, + .categoryName = _("Puppy"), + .height = 3, + .weight = 109, + .description = COMPOUND_STRING( + "This Pokémon is smooth and moist\n" + "to the touch. Yeast in Fidough's\n" + "breath induces fermentation in the\n" + "Pokémon's vicinity."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Fidough, 64, 64), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Fidough, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Fidough, 64, 64), + .backPicYOffset = 12, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Fidough), + ICON(Fidough, 1), + //.footprint = gMonFootprint_Fidough, + LEARNSETS(Fidough), + .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_DACHSBUN}), + }, + + [SPECIES_DACHSBUN] = + { + .baseHP = 57, + .baseAttack = 80, + .baseDefense = 115, + .baseSpeed = 95, + .baseSpAttack = 50, + .baseSpDefense = 80, + .types = { TYPE_FAIRY, TYPE_FAIRY }, + .catchRate = 90, + .expYield = 167, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_WELL_BAKED_BODY, ABILITY_NONE, ABILITY_AROMA_VEIL }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Dachsbun"), + .cryId = CRY_DACHSBUN, + .natDexNum = NATIONAL_DEX_DACHSBUN, + .categoryName = _("Dog"), + .height = 5, + .weight = 149, + .description = COMPOUND_STRING( + "The pleasant aroma that emanates\n" + "from this Pokémon's body helps\n" + "wheat grow, so Dachsbun has been\n" + "treasured by farming villages."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Dachsbun, 64, 64), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Dachsbun, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Dachsbun, 64, 64), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Dachsbun), + ICON(Dachsbun, 0), // TODO + //.footprint = gMonFootprint_Dachsbun, + LEARNSETS(Dachsbun), + }, +#endif //P_FAMILY_FIDOUGH + +#if P_FAMILY_SMOLIV + [SPECIES_SMOLIV] = + { + .baseHP = 41, + .baseAttack = 35, + .baseDefense = 45, + .baseSpeed = 30, + .baseSpAttack = 58, + .baseSpDefense = 51, + .types = { TYPE_GRASS, TYPE_NORMAL }, + .catchRate = 255, + .expYield = 52, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_EARLY_BIRD, ABILITY_NONE, ABILITY_HARVEST }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Smoliv"), + .cryId = CRY_SMOLIV, + .natDexNum = NATIONAL_DEX_SMOLIV, + .categoryName = _("Olive"), + .height = 3, + .weight = 65, + .description = COMPOUND_STRING( + "This Pokémon converts nutrients\n" + "into oil, which it stores in the fruit\n" + "on its head. It can easily go a whole\n" + "week without eating or drinking."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Smoliv, 64, 64), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Smoliv, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Smoliv, 64, 64), + .backPicYOffset = 16, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Smoliv), + ICON(Smoliv, 1), + //.footprint = gMonFootprint_Smoliv, + LEARNSETS(Smoliv), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_DOLLIV}), + }, + + [SPECIES_DOLLIV] = + { + .baseHP = 52, + .baseAttack = 53, + .baseDefense = 60, + .baseSpeed = 33, + .baseSpAttack = 78, + .baseSpDefense = 78, + .types = { TYPE_GRASS, TYPE_NORMAL }, + .catchRate = 120, + .expYield = 124, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_EARLY_BIRD, ABILITY_NONE, ABILITY_HARVEST }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Dolliv"), + .cryId = CRY_DOLLIV, + .natDexNum = NATIONAL_DEX_DOLLIV, + .categoryName = _("Olive"), + .height = 6, + .weight = 119, + .description = COMPOUND_STRING( + "Dolliv shares its tasty, fresh-\n" + "scented oil with others. This species\n" + "has coexisted with humans since\n" + "times long gone."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Dolliv, 64, 64), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Dolliv, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Dolliv, 64, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Dolliv), + ICON(Dolliv, 1), + //.footprint = gMonFootprint_Dolliv, + LEARNSETS(Dolliv), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_ARBOLIVA}), + }, + + [SPECIES_ARBOLIVA] = + { + .baseHP = 78, + .baseAttack = 69, + .baseDefense = 90, + .baseSpeed = 39, + .baseSpAttack = 125, + .baseSpDefense = 109, + .types = { TYPE_GRASS, TYPE_NORMAL }, + .catchRate = 45, + .expYield = 255, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_SEED_SOWER, ABILITY_NONE, ABILITY_HARVEST }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Arboliva"), + .cryId = CRY_ARBOLIVA, + .natDexNum = NATIONAL_DEX_ARBOLIVA, + .categoryName = _("Olive"), + .height = 14, + .weight = 482, + .description = COMPOUND_STRING( + "This Pokémon drives back enemies\n" + "by launching its rich, aromatic oil at\n" + "them with enough force to smash a\n" + "boulder."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Arboliva, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Arboliva, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Arboliva, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Arboliva), + ICON(Arboliva, 5), + //.footprint = gMonFootprint_Arboliva, + LEARNSETS(Arboliva), + }, +#endif //P_FAMILY_SMOLIV + +#if P_FAMILY_SQUAWKABILLY +#define SQUAWKABILLY_MISC_INFO \ + .baseHP = 82, \ + .baseAttack = 96, \ + .baseDefense = 51, \ + .baseSpeed = 92, \ + .baseSpAttack = 45, \ + .baseSpDefense = 51, \ + .types = { TYPE_NORMAL, TYPE_FLYING }, \ + .catchRate = 190, \ + .expYield = 146, \ + .evYield_Attack = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_ERRATIC, \ + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, \ + .speciesName = _("Sqawkabily"), \ + .cryId = CRY_SQUAWKABILLY, \ + .natDexNum = NATIONAL_DEX_SQUAWKABILLY, \ + .categoryName = _("Parrot"), \ + .height = 6, \ + .weight = 24, \ + .pokemonScale = 356, \ + .pokemonOffset = 17, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + FRONT_PIC(Squawkabilly, 64, 64), \ + .frontPicYOffset = 4, \ + .frontAnimFrames = sAnims_Squawkabilly, \ + BACK_PIC(Squawkabilly, 64, 64), \ + .backPicYOffset = 4, \ + LEARNSETS(Squawkabilly), \ + .formSpeciesIdTable = sSquawkabillyFormSpeciesIdTable + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //.backAnimId = BACK_ANIM_NONE, + //.footprint = gMonFootprint_Squawkabilly, + + [SPECIES_SQUAWKABILLY_GREEN_PLUMAGE] = + { + SQUAWKABILLY_MISC_INFO, + .abilities = { ABILITY_INTIMIDATE, ABILITY_HUSTLE, ABILITY_GUTS }, + .bodyColor = BODY_COLOR_GREEN, + .description = COMPOUND_STRING( + "Green-feathered flocks hold the\n" + "most sway. When they're out\n" + "searching for food in the mornings and\n" + "evenings, it gets very noisy."), + PALETTES(SquawkabillyGreenPlumage), + ICON(SquawkabillyGreenPlumage, 1), + }, + + [SPECIES_SQUAWKABILLY_BLUE_PLUMAGE] = + { + SQUAWKABILLY_MISC_INFO, + .abilities = { ABILITY_INTIMIDATE, ABILITY_HUSTLE, ABILITY_GUTS }, + .bodyColor = BODY_COLOR_BLUE, + .description = COMPOUND_STRING( + "The largest of their flocks can\n" + "contain more than 50 individuals. They\n" + "fly around towns and forests,\n" + "searching for food and making a racket."), + PALETTES(SquawkabillyBluePlumage), + ICON(SquawkabillyBluePlumage, 2), + }, + + [SPECIES_SQUAWKABILLY_YELLOW_PLUMAGE] = + { + SQUAWKABILLY_MISC_INFO, + .abilities = { ABILITY_INTIMIDATE, ABILITY_HUSTLE, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_YELLOW, + .description = COMPOUND_STRING( + "These Squawkabilly are hotheaded,\n" + "and their fighting style is vicious.\n" + "They'll leap within reach of their\n" + "foes to engage in close combat."), + PALETTES(SquawkabillyYellowPlumage), + ICON(SquawkabillyYellowPlumage, 1), + }, + + [SPECIES_SQUAWKABILLY_WHITE_PLUMAGE] = + { + SQUAWKABILLY_MISC_INFO, + .abilities = { ABILITY_INTIMIDATE, ABILITY_HUSTLE, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_WHITE, + .description = COMPOUND_STRING( + "Though these Squawkabilly are the\n" + "fewest in number, they have no\n" + "trouble living in towns since they blend\n" + "in with the white buildings."), + PALETTES(SquawkabillyWhitePlumage), + ICON(SquawkabillyWhitePlumage, 1), + }, +#endif //P_FAMILY_SQUAWKABILLY + +#if P_FAMILY_NACLI + [SPECIES_NACLI] = + { + .baseHP = 55, + .baseAttack = 55, + .baseDefense = 75, + .baseSpeed = 25, + .baseSpAttack = 35, + .baseSpDefense = 35, + .types = { TYPE_ROCK, TYPE_ROCK }, + .catchRate = 255, + .expYield = 56, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_PURIFYING_SALT, ABILITY_STURDY, ABILITY_CLEAR_BODY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Nacli"), + .cryId = CRY_NACLI, + .natDexNum = NATIONAL_DEX_NACLI, + .categoryName = _("Rock Salt"), + .height = 4, + .weight = 160, + .description = COMPOUND_STRING( + "The ground scrapes its body as it\n" + "travels, causing it to leave salt\n" + "behind. Salt is constantly being created\n" + "and replenished inside Nacli's body."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Nacli, 64, 64), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Nacli, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Nacli, 64, 64), + .backPicYOffset = 10, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Nacli), + ICON(Nacli, 2), + //.footprint = gMonFootprint_Nacli, + LEARNSETS(Nacli), + .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_NACLSTACK}), + }, + + [SPECIES_NACLSTACK] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 100, + .baseSpeed = 35, + .baseSpAttack = 35, + .baseSpDefense = 65, + .types = { TYPE_ROCK, TYPE_ROCK }, + .catchRate = 120, + .expYield = 124, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_PURIFYING_SALT, ABILITY_STURDY, ABILITY_CLEAR_BODY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Naclstack"), + .cryId = CRY_NACLSTACK, + .natDexNum = NATIONAL_DEX_NACLSTACK, + .categoryName = _("Rock Salt"), + .height = 6, + .weight = 1050, + .description = COMPOUND_STRING( + "It compresses rock salt inside its\n" + "body and shoots out hardened salt\n" + "pellets with enough force to\n" + "perforate an iron sheet."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Naclstack, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Naclstack, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Naclstack, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Naclstack), + ICON(Naclstack, 2), // TODO: recolor + //.footprint = gMonFootprint_Naclstack, + LEARNSETS(Naclstack), + .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_GARGANACL}), + }, + + [SPECIES_GARGANACL] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 130, + .baseSpeed = 35, + .baseSpAttack = 45, + .baseSpDefense = 90, + .types = { TYPE_ROCK, TYPE_ROCK }, + .catchRate = 45, + .expYield = 250, + .evYield_Defense = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_PURIFYING_SALT, ABILITY_STURDY, ABILITY_CLEAR_BODY }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Garganacl"), + .cryId = CRY_GARGANACL, + .natDexNum = NATIONAL_DEX_GARGANACL, + .categoryName = _("Rock Salt"), + .height = 23, + .weight = 2400, + .description = COMPOUND_STRING( + "Garganacl will rub its fingertips\n" + "together and sprinkle injured\n" + "Pokémon with salt. Even severe wounds will\n" + "promptly heal afterward."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Garganacl, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Garganacl, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Garganacl, 64, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Garganacl), + ICON(Garganacl, 2), + //.footprint = gMonFootprint_Garganacl, + LEARNSETS(Garganacl), + }, +#endif //P_FAMILY_NACLI + +#if P_FAMILY_CHARCADET + [SPECIES_CHARCADET] = + { + .baseHP = 40, + .baseAttack = 50, + .baseDefense = 40, + .baseSpeed = 35, + .baseSpAttack = 50, + .baseSpDefense = 40, + .types = { TYPE_FIRE, TYPE_FIRE }, + .catchRate = 90, + .expYield = 51, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_FLAME_BODY }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Charcadet"), + .cryId = CRY_CHARCADET, + .natDexNum = NATIONAL_DEX_CHARCADET, + .categoryName = _("Fire Child"), + .height = 6, + .weight = 105, + .description = COMPOUND_STRING( + "Burnt charcoal came to life and\n" + "became a Pokémon. Possessing a fiery\n" + "fighting spirit, Charcadet will\n" + "battle even tough opponents."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Charcadet, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Charcadet, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Charcadet, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Charcadet), + ICON(Charcadet, 1), + //.footprint = gMonFootprint_Charcadet, + LEARNSETS(Charcadet), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_AUSPICIOUS_ARMOR, SPECIES_ARMAROUGE}, + {EVO_ITEM, ITEM_MALICIOUS_ARMOR, SPECIES_CERULEDGE}), + }, + + [SPECIES_ARMAROUGE] = + { + .baseHP = 85, + .baseAttack = 60, + .baseDefense = 100, + .baseSpeed = 75, + .baseSpAttack = 125, + .baseSpDefense = 80, + .types = { TYPE_FIRE, TYPE_PSYCHIC }, + .catchRate = 25, + .expYield = 263, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = 20, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_WEAK_ARMOR }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Armarouge"), + .cryId = CRY_ARMAROUGE, + .natDexNum = NATIONAL_DEX_ARMAROUGE, + .categoryName = _("Fire Warrior"), + .height = 15, + .weight = 850, + .description = COMPOUND_STRING( + "Armarouge evolved through the use\n" + "of a set of armor that belonged to\n" + "a distinguished warrior. This\n" + "Pokémon is incredibly loyal."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Armarouge, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Armarouge, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Armarouge, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Armarouge), + ICON(Armarouge, 0), + //.footprint = gMonFootprint_Armarouge, + LEARNSETS(Armarouge), + }, + + [SPECIES_CERULEDGE] = + { + .baseHP = 75, + .baseAttack = 125, + .baseDefense = 80, + .baseSpeed = 85, + .baseSpAttack = 60, + .baseSpDefense = 100, + .types = { TYPE_FIRE, TYPE_GHOST }, + .catchRate = 25, + .expYield = 263, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = 20, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_HUMAN_LIKE, EGG_GROUP_HUMAN_LIKE }, + .abilities = { ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_WEAK_ARMOR }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Ceruledge"), + .cryId = CRY_CERULEDGE, + .natDexNum = NATIONAL_DEX_CERULEDGE, + .categoryName = _("Fire Blades"), + .height = 16, + .weight = 620, + .description = COMPOUND_STRING( + "The fiery blades on its arms burn\n" + "fiercely with the lingering\n" + "resentment of a sword wielder who fell\n" + "before accomplishing their goal."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Ceruledge, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Ceruledge, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Ceruledge, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Ceruledge), + ICON(Ceruledge, 2), + //.footprint = gMonFootprint_Ceruledge, + LEARNSETS(Ceruledge), + }, +#endif //P_FAMILY_CHARCADET + +#if P_FAMILY_TADBULB + [SPECIES_TADBULB] = + { + .baseHP = 61, + .baseAttack = 31, + .baseDefense = 41, + .baseSpeed = 45, + .baseSpAttack = 59, + .baseSpDefense = 35, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 190, + .expYield = 54, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_OWN_TEMPO, ABILITY_STATIC, ABILITY_DAMP }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Tadbulb"), + .cryId = CRY_TADBULB, + .natDexNum = NATIONAL_DEX_TADBULB, + .categoryName = _("EleTadpole"), + .height = 3, + .weight = 4, + .description = COMPOUND_STRING( + "Tadbulb shakes its tail to\n" + "generate electricity. If it senses danger,\n" + "it will make its head blink on and off\n" + "to alert its allies."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Tadbulb, 64, 64), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Tadbulb, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 12, + BACK_PIC(Tadbulb, 64, 64), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Tadbulb), + ICON(Tadbulb, 5), // TODO: Redo to 0 + //.footprint = gMonFootprint_Tadbulb, + LEARNSETS(Tadbulb), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_BELLIBOLT}), + }, + + [SPECIES_BELLIBOLT] = + { + .baseHP = 109, + .baseAttack = 64, + .baseDefense = 91, + .baseSpeed = 45, + .baseSpAttack = 103, + .baseSpDefense = 83, + .types = { TYPE_ELECTRIC, TYPE_ELECTRIC }, + .catchRate = 50, + .expYield = 173, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_WATER_1 }, + .abilities = { ABILITY_ELECTROMORPHOSIS, ABILITY_STATIC, ABILITY_DAMP }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Bellibolt"), + .cryId = CRY_BELLIBOLT, + .natDexNum = NATIONAL_DEX_BELLIBOLT, + .categoryName = _("EleFrog"), + .height = 12, + .weight = 1130, + .description = COMPOUND_STRING( + "When this Pokémon expands and\n" + "contracts its wobbly body, the belly-\n" + "button dynamo in its stomach\n" + "produces a huge amount of electricity."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Bellibolt, 64, 64), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Bellibolt, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Bellibolt, 64, 64), + .backPicYOffset = 10, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Bellibolt), + ICON(Bellibolt, 0), + //.footprint = gMonFootprint_Bellibolt, + LEARNSETS(Bellibolt), + }, +#endif //P_FAMILY_TADBULB + +#if P_FAMILY_WATTREL + [SPECIES_WATTREL] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 35, + .baseSpeed = 70, + .baseSpAttack = 55, + .baseSpDefense = 40, + .types = { TYPE_ELECTRIC, TYPE_FLYING }, + .catchRate = 180, + .expYield = 56, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING }, + .abilities = { ABILITY_WIND_POWER, ABILITY_VOLT_ABSORB, ABILITY_COMPETITIVE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Wattrel"), + .cryId = CRY_WATTREL, + .natDexNum = NATIONAL_DEX_WATTREL, + .categoryName = _("Storm Petrel"), + .height = 4, + .weight = 36, + .description = COMPOUND_STRING( + "When its wings catch the wind, the\n" + "bones within produce electricity.\n" + "This Pokémon dives into the ocean,\n" + "catching prey by electrocuting them."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Wattrel, 64, 64), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Wattrel, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Wattrel, 64, 64), + .backPicYOffset = 14, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Wattrel), + ICON(Wattrel, 3), + //.footprint = gMonFootprint_Wattrel, + LEARNSETS(Wattrel), + .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_KILOWATTREL}), + }, + + [SPECIES_KILOWATTREL] = + { + .baseHP = 70, + .baseAttack = 70, + .baseDefense = 60, + .baseSpeed = 125, + .baseSpAttack = 105, + .baseSpDefense = 60, + .types = { TYPE_ELECTRIC, TYPE_FLYING }, + .catchRate = 90, + .expYield = 172, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_WATER_1, EGG_GROUP_FLYING }, + .abilities = { ABILITY_WIND_POWER, ABILITY_VOLT_ABSORB, ABILITY_COMPETITIVE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Kilowatrel"), + .cryId = CRY_KILOWATTREL, + .natDexNum = NATIONAL_DEX_KILOWATTREL, + .categoryName = _("Frigatebird"), + .height = 14, + .weight = 386, + .description = COMPOUND_STRING( + "It uses its throat sac to store\n" + "electricity generated by its wings.\n" + "There's hardly any oil in its feathers,\n" + "so it is a poor swimmer."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Kilowattrel, 64, 64), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Kilowattrel, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Kilowattrel, 64, 64), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Kilowattrel), + ICON(Kilowattrel, 3), + //.footprint = gMonFootprint_Kilowattrel, + LEARNSETS(Kilowattrel), + }, +#endif //P_FAMILY_WATTREL + +#if P_FAMILY_MASCHIFF + [SPECIES_MASCHIFF] = + { + .baseHP = 60, + .baseAttack = 78, + .baseDefense = 60, + .baseSpeed = 51, + .baseSpAttack = 40, + .baseSpDefense = 51, + .types = { TYPE_DARK, TYPE_DARK }, + .catchRate = 150, + .expYield = 68, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_RUN_AWAY, ABILITY_STAKEOUT }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Maschiff"), + .cryId = CRY_MASCHIFF, + .natDexNum = NATIONAL_DEX_MASCHIFF, + .categoryName = _("Rascal"), + .height = 5, + .weight = 160, + .description = COMPOUND_STRING( + "Its well-developed jaw and fangs\n" + "are strong enough to crunch through\n" + "boulders, and its thick fat makes\n" + "for an excellent defense."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Maschiff, 64, 64), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Maschiff, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Maschiff, 64, 64), + .backPicYOffset = 10, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Maschiff), + ICON(Maschiff, 3), + //.footprint = gMonFootprint_Maschiff, + LEARNSETS(Maschiff), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MABOSSTIFF}), + }, + + [SPECIES_MABOSSTIFF] = + { + .baseHP = 80, + .baseAttack = 120, + .baseDefense = 90, + .baseSpeed = 85, + .baseSpAttack = 60, + .baseSpDefense = 70, + .types = { TYPE_DARK, TYPE_DARK }, + .catchRate = 75, + .expYield = 177, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_INTIMIDATE, ABILITY_GUARD_DOG, ABILITY_STAKEOUT }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Mabosstiff"), + .cryId = CRY_MABOSSTIFF, + .natDexNum = NATIONAL_DEX_MABOSSTIFF, + .categoryName = _("Boss"), + .height = 11, + .weight = 610, + .description = COMPOUND_STRING( + "Mabosstiff loves playing with\n" + "children. Though usually gentle, it\n" + "takes on an intimidating look when\n" + "protecting its family."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Mabosstiff, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Mabosstiff, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Mabosstiff, 64, 64), + .backPicYOffset = 14, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Mabosstiff), + ICON(Mabosstiff, 5), + //.footprint = gMonFootprint_Mabosstiff, + LEARNSETS(Mabosstiff), + }, +#endif //P_FAMILY_MASCHIFF + +#if P_FAMILY_SHROODLE + [SPECIES_SHROODLE] = + { + .baseHP = 40, + .baseAttack = 65, + .baseDefense = 35, + .baseSpeed = 75, + .baseSpAttack = 40, + .baseSpDefense = 35, + .types = { TYPE_POISON, TYPE_NORMAL }, + .catchRate = 190, + .expYield = 58, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_UNBURDEN, ABILITY_PICKPOCKET, ABILITY_PRANKSTER }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Shroodle"), + .cryId = CRY_SHROODLE, + .natDexNum = NATIONAL_DEX_SHROODLE, + .categoryName = _("Toxic Mouse"), + .height = 2, + .weight = 7, + .description = COMPOUND_STRING( + "To keep enemies away from its\n" + "territory, it paints markings around its\n" + "nest using a poisonous liquid that\n" + "has an acrid odor."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Shroodle, 64, 64), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_Shroodle, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Shroodle, 64, 64), + .backPicYOffset = 16, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Shroodle), + ICON(Shroodle, 0), + //.footprint = gMonFootprint_Shroodle, + LEARNSETS(Shroodle), + .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_GRAFAIAI}), + }, + + [SPECIES_GRAFAIAI] = + { + .baseHP = 63, + .baseAttack = 95, + .baseDefense = 65, + .baseSpeed = 110, + .baseSpAttack = 80, + .baseSpDefense = 72, + .types = { TYPE_POISON, TYPE_NORMAL }, + .catchRate = 90, + .expYield = 170, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_UNBURDEN, ABILITY_POISON_TOUCH, ABILITY_PRANKSTER }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Grafaiai"), + .cryId = CRY_GRAFAIAI, + .natDexNum = NATIONAL_DEX_GRAFAIAI, + .categoryName = _("Toxic Monkey"), + .height = 7, + .weight = 272, + .description = COMPOUND_STRING( + "Each Grafaiai paints its own\n" + "individual pattern, and it will paint that\n" + "same pattern over and over again\n" + "throughout its life."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Grafaiai, 64, 64), + .frontPicYOffset = 9, + .frontAnimFrames = sAnims_Grafaiai, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Grafaiai, 64, 64), + .backPicYOffset = 12, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Grafaiai), + ICON(Grafaiai, 0), + //.footprint = gMonFootprint_Grafaiai, + LEARNSETS(Grafaiai), + }, +#endif //P_FAMILY_SHROODLE + +#if P_FAMILY_BRAMBLIN + [SPECIES_BRAMBLIN] = + { + .baseHP = 40, + .baseAttack = 65, + .baseDefense = 30, + .baseSpeed = 60, + .baseSpAttack = 45, + .baseSpDefense = 35, + .types = { TYPE_GRASS, TYPE_GHOST }, + .catchRate = 190, + .expYield = 55, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_WIND_RIDER, ABILITY_NONE, ABILITY_INFILTRATOR }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Bramblin"), + .cryId = CRY_BRAMBLIN, + .natDexNum = NATIONAL_DEX_BRAMBLIN, + .categoryName = _("Tumbleweed"), + .height = 6, + .weight = 6, + .description = COMPOUND_STRING( + "A soul unable to move on to the\n" + "afterlife was blown around by the wind\n" + "until it got tangled up with dried\n" + "grass and became a Pokémon."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Bramblin, 64, 64), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Bramblin, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Bramblin, 64, 64), + .backPicYOffset = 14, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Bramblin), + ICON(Bramblin, 3), + //.footprint = gMonFootprint_Bramblin, + LEARNSETS(Bramblin), + .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_BRAMBLEGHAST}), + }, + + [SPECIES_BRAMBLEGHAST] = + { + .baseHP = 55, + .baseAttack = 115, + .baseDefense = 70, + .baseSpeed = 90, + .baseSpAttack = 80, + .baseSpDefense = 70, + .types = { TYPE_GRASS, TYPE_GHOST }, + .catchRate = 45, + .expYield = 168, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_WIND_RIDER, ABILITY_NONE, ABILITY_INFILTRATOR }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Brmblghast"), + .cryId = CRY_BRAMBLEGHAST, + .natDexNum = NATIONAL_DEX_BRAMBLEGHAST, + .categoryName = _("Tumbleweed"), + .height = 12, + .weight = 60, + .description = COMPOUND_STRING( + "It will open the branches of its\n" + "head to envelop its prey. Once it\n" + "absorbs all the life energy it needs, it\n" + "expels the prey and discards it."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Brambleghast, 64, 64), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Brambleghast, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Brambleghast, 64, 64), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Brambleghast), + ICON(Brambleghast, 5), + //.footprint = gMonFootprint_Brambleghast, + LEARNSETS(Brambleghast), + }, +#endif //P_FAMILY_BRAMBLIN + +#if P_FAMILY_TOEDSCOOL + [SPECIES_TOEDSCOOL] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 35, + .baseSpeed = 70, + .baseSpAttack = 50, + .baseSpDefense = 100, + .types = { TYPE_GROUND, TYPE_GRASS }, + .catchRate = 190, + .expYield = 67, + .evYield_SpDefense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_MYCELIUM_MIGHT, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Toedscool"), + .cryId = CRY_TOEDSCOOL, + .natDexNum = NATIONAL_DEX_TOEDSCOOL, + .categoryName = _("Woodear"), + .height = 9, + .weight = 330, + .description = COMPOUND_STRING( + "Though it looks like Tentacool,\n" + "Toedscool is a completely different\n" + "species. Its legs may be thin, but it\n" + "can run at a speed of 30 mph."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Toedscool, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Toedscool, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Toedscool, 64, 64), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Toedscool), + ICON(Toedscool, 0), + //.footprint = gMonFootprint_Toedscool, + LEARNSETS(Toedscool), + .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_TOEDSCRUEL}), + }, + + [SPECIES_TOEDSCRUEL] = + { + .baseHP = 80, + .baseAttack = 70, + .baseDefense = 65, + .baseSpeed = 100, + .baseSpAttack = 80, + .baseSpDefense = 120, + .types = { TYPE_GROUND, TYPE_GRASS }, + .catchRate = 90, + .expYield = 180, + .evYield_SpDefense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_MYCELIUM_MIGHT, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Toedscruel"), + .cryId = CRY_TOEDSCRUEL, + .natDexNum = NATIONAL_DEX_TOEDSCRUEL, + .categoryName = _("Woodear"), + .height = 19, + .weight = 580, + .description = COMPOUND_STRING( + "These Pokémon gather into groups\n" + "and form colonies deep within\n" + "forests. They absolutely hate it when\n" + "strangers approach."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Toedscruel, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Toedscruel, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Toedscruel, 64, 64), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Toedscruel), + ICON(Toedscruel, 0), + //.footprint = gMonFootprint_Toedscruel, + LEARNSETS(Toedscruel), + }, +#endif //P_FAMILY_TOEDSCOOL + +#if P_FAMILY_KLAWF + [SPECIES_KLAWF] = + { + .baseHP = 70, + .baseAttack = 100, + .baseDefense = 115, + .baseSpeed = 75, + .baseSpAttack = 35, + .baseSpDefense = 55, + .types = { TYPE_ROCK, TYPE_ROCK }, + .catchRate = 120, + .expYield = 158, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_ANGER_SHELL, ABILITY_SHELL_ARMOR, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Klawf"), + .cryId = CRY_KLAWF, + .natDexNum = NATIONAL_DEX_KLAWF, + .categoryName = _("Ambush"), + .height = 13, + .weight = 790, + .description = COMPOUND_STRING( + "Klawf hangs upside-down from\n" + "cliffs, waiting for prey. But Klawf can't\n" + "remain in this position for long\n" + "because its blood rushes to its head."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Klawf, 64, 64), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Klawf, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Klawf, 64, 64), + .backPicYOffset = 20, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Klawf), + ICON(Klawf, 0), + //.footprint = gMonFootprint_Klawf, + LEARNSETS(Klawf), + }, +#endif //P_FAMILY_KLAWF + +#if P_FAMILY_CAPSAKID + [SPECIES_CAPSAKID] = + { + .baseHP = 50, + .baseAttack = 62, + .baseDefense = 40, + .baseSpeed = 50, + .baseSpAttack = 62, + .baseSpDefense = 40, + .types = { TYPE_GRASS, TYPE_GRASS }, + .catchRate = 190, + .expYield = 61, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_INSOMNIA, ABILITY_KLUTZ }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Capsakid"), + .cryId = CRY_CAPSAKID, + .natDexNum = NATIONAL_DEX_CAPSAKID, + .categoryName = _("Spicy Pepper"), + .height = 3, + .weight = 30, + .description = COMPOUND_STRING( + "The more sunlight this Pokémon\n" + "bathes in, the more spicy chemicals are\n" + "produced by its body, and thus the\n" + "spicier its moves become."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Capsakid, 64, 64), + .frontPicYOffset = 13, + .frontAnimFrames = sAnims_Capsakid, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Capsakid, 64, 64), + .backPicYOffset = 12, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Capsakid), + ICON(Capsakid, 1), + //.footprint = gMonFootprint_Capsakid, + LEARNSETS(Capsakid), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_SCOVILLAIN}), + }, + + [SPECIES_SCOVILLAIN] = + { + .baseHP = 65, + .baseAttack = 108, + .baseDefense = 65, + .baseSpeed = 75, + .baseSpAttack = 108, + .baseSpDefense = 65, + .types = { TYPE_GRASS, TYPE_FIRE }, + .catchRate = 75, + .expYield = 170, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_GRASS }, + .abilities = { ABILITY_CHLOROPHYLL, ABILITY_INSOMNIA, ABILITY_MOODY }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Scovillain"), + .cryId = CRY_SCOVILLAIN, + .natDexNum = NATIONAL_DEX_SCOVILLAIN, + .categoryName = _("Spicy Pepper"), + .height = 9, + .weight = 150, + .description = COMPOUND_STRING( + "The green head has turned vicious\n" + "due to the spicy chemicals\n" + "stimulating its brain. Once it goes on a\n" + "rampage, there is no stopping it."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Scovillain, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Scovillain, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Scovillain, 64, 64), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Scovillain), + ICON(Scovillain, 1), + //.footprint = gMonFootprint_Scovillain, + LEARNSETS(Scovillain), + }, +#endif //P_FAMILY_CAPSAKID + +#if P_FAMILY_RELLOR + [SPECIES_RELLOR] = + { + .baseHP = 41, + .baseAttack = 50, + .baseDefense = 60, + .baseSpeed = 30, + .baseSpAttack = 31, + .baseSpDefense = 58, + .types = { TYPE_BUG, TYPE_BUG }, + .catchRate = 190, + .expYield = 54, + .evYield_Defense = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_COMPOUND_EYES, ABILITY_NONE, ABILITY_SHED_SKIN }, + .bodyColor = BODY_COLOR_BROWN, + .speciesName = _("Rellor"), + .cryId = CRY_RELLOR, + .natDexNum = NATIONAL_DEX_RELLOR, + .categoryName = _("Rolling"), + .height = 2, + .weight = 10, + .description = COMPOUND_STRING( + "This Pokémon creates a mud ball by\n" + "mixing sand and dirt with psychic\n" + "energy. It treasures its mud ball more\n" + "than its own life."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Rellor, 64, 64), + .frontPicYOffset = 17, + .frontAnimFrames = sAnims_Rellor, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Rellor, 64, 64), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Rellor), + ICON(Rellor, 5), + //.footprint = gMonFootprint_Rellor, + LEARNSETS(Rellor), + .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_RABSCA}), + }, + + [SPECIES_RABSCA] = + { + .baseHP = 75, + .baseAttack = 50, + .baseDefense = 85, + .baseSpeed = 45, + .baseSpAttack = 115, + .baseSpDefense = 100, + .types = { TYPE_BUG, TYPE_PSYCHIC }, + .catchRate = 45, + .expYield = 165, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_BUG, EGG_GROUP_BUG }, + .abilities = { ABILITY_SYNCHRONIZE, ABILITY_NONE, ABILITY_TELEPATHY }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Rabsca"), + .cryId = CRY_RABSCA, + .natDexNum = NATIONAL_DEX_RABSCA, + .categoryName = _("Rolling"), + .height = 3, + .weight = 35, + .description = COMPOUND_STRING( + "The body that supports the ball\n" + "barely moves. Therefore, it is thought\n" + "that the true body of this Pokémon\n" + "is actually inside the ball."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Rabsca, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Rabsca, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Rabsca, 64, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Rabsca), + ICON(Rabsca, 0), + //.footprint = gMonFootprint_Rabsca, + LEARNSETS(Rabsca), + }, +#endif //P_FAMILY_RELLOR + +#if P_FAMILY_FLITTLE + [SPECIES_FLITTLE] = + { + .baseHP = 30, + .baseAttack = 35, + .baseDefense = 30, + .baseSpeed = 75, + .baseSpAttack = 55, + .baseSpDefense = 30, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 120, + .expYield = 51, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_ANTICIPATION, ABILITY_FRISK, ABILITY_SPEED_BOOST }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Flittle"), + .cryId = CRY_FLITTLE, + .natDexNum = NATIONAL_DEX_FLITTLE, + .categoryName = _("Frill"), + .height = 2, + .weight = 15, + .description = COMPOUND_STRING( + "Flittle's toes levitate about half\n" + "an inch above the ground because of\n" + "the psychic power emitted from the\n" + "frills on the Pokémon's belly."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Flittle, 64, 64), + .frontPicYOffset = 12, + .frontAnimFrames = sAnims_Flittle, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Flittle, 64, 64), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Flittle), + ICON(Flittle, 3), + //.footprint = gMonFootprint_Flittle, + LEARNSETS(Flittle), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_ESPATHRA}), + }, + + [SPECIES_ESPATHRA] = + { + .baseHP = 95, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 105, + .baseSpAttack = 101, + .baseSpDefense = 60, + .types = { TYPE_PSYCHIC, TYPE_PSYCHIC }, + .catchRate = 60, + .expYield = 168, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_OPPORTUNIST, ABILITY_FRISK, ABILITY_SPEED_BOOST }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Espathra"), + .cryId = CRY_ESPATHRA, + .natDexNum = NATIONAL_DEX_ESPATHRA, + .categoryName = _("Ostrich"), + .height = 19, + .weight = 900, + .description = COMPOUND_STRING( + "It immobilizes opponents by\n" + "bathing them in psychic power from its\n" + "large eyes. Despite its appearance, it\n" + "has a vicious temperament."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Espathra, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Espathra, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Espathra, 64, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Espathra), + ICON(Espathra, 5), + //.footprint = gMonFootprint_Espathra, + LEARNSETS(Espathra), + }, +#endif //P_FAMILY_FLITTLE + +#if P_FAMILY_TINKATINK + [SPECIES_TINKATINK] = + { + .baseHP = 50, + .baseAttack = 45, + .baseDefense = 45, + .baseSpeed = 58, + .baseSpAttack = 35, + .baseSpDefense = 64, + .types = { TYPE_FAIRY, TYPE_STEEL }, + .catchRate = 190, + .expYield = 59, + .evYield_SpDefense = 1, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_MOLD_BREAKER, ABILITY_OWN_TEMPO, ABILITY_PICKPOCKET }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Tinkatink"), + .cryId = CRY_TINKATINK, + .natDexNum = NATIONAL_DEX_TINKATINK, + .categoryName = _("Metalsmith"), + .height = 4, + .weight = 89, + .description = COMPOUND_STRING( + "This Pokémon pounds iron scraps\n" + "together to make a hammer. It will\n" + "remake the hammer again and again until\n" + "it's satisfied with the result."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Tinkatink, 64, 64), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Tinkatink, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Tinkatink, 64, 64), + .backPicYOffset = 12, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Tinkatink), + ICON(Tinkatink, 1), + //.footprint = gMonFootprint_Tinkatink, + LEARNSETS(Tinkatink), + .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_TINKATUFF}), + }, + + [SPECIES_TINKATUFF] = + { + .baseHP = 65, + .baseAttack = 55, + .baseDefense = 55, + .baseSpeed = 78, + .baseSpAttack = 45, + .baseSpDefense = 82, + .types = { TYPE_FAIRY, TYPE_STEEL }, + .catchRate = 90, + .expYield = 133, + .evYield_SpDefense = 2, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_MOLD_BREAKER, ABILITY_OWN_TEMPO, ABILITY_PICKPOCKET }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Tinkatuff"), + .cryId = CRY_TINKATUFF, + .natDexNum = NATIONAL_DEX_TINKATUFF, + .categoryName = _("Hammer"), + .height = 7, + .weight = 591, + .description = COMPOUND_STRING( + "These Pokémon make their homes in\n" + "piles of scrap metal. They test the\n" + "strength of each other's hammers by\n" + "smashing them together."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Tinkatuff, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Tinkatuff, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Tinkatuff, 64, 64), + .backPicYOffset = 2, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Tinkatuff), + ICON(Tinkatuff, 4), + //.footprint = gMonFootprint_Tinkatuff, + LEARNSETS(Tinkatuff), + .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_TINKATON}), + }, + + [SPECIES_TINKATON] = + { + .baseHP = 85, + .baseAttack = 75, + .baseDefense = 77, + .baseSpeed = 94, + .baseSpAttack = 70, + .baseSpDefense = 105, + .types = { TYPE_FAIRY, TYPE_STEEL }, + .catchRate = 45, + .expYield = 253, + .evYield_SpDefense = 3, + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FAIRY, EGG_GROUP_FAIRY }, + .abilities = { ABILITY_MOLD_BREAKER, ABILITY_OWN_TEMPO, ABILITY_PICKPOCKET }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Tinkaton"), + .cryId = CRY_TINKATON, + .natDexNum = NATIONAL_DEX_TINKATON, + .categoryName = _("Hammer"), + .height = 7, + .weight = 1128, + .description = COMPOUND_STRING( + "The hammer tops 220 pounds, yet it\n" + "gets swung around easily by\n" + "Tinkaton as it steals whatever it pleases\n" + "and carries its plunder back home."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Tinkaton, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Tinkaton, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Tinkaton, 64, 64), + .backPicYOffset = 15, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Tinkaton), + ICON(Tinkaton, 4), + //.footprint = gMonFootprint_Tinkaton, + LEARNSETS(Tinkaton), + }, +#endif //P_FAMILY_TINKATINK + +#if P_FAMILY_WIGLETT + [SPECIES_WIGLETT] = + { + .baseHP = 10, + .baseAttack = 55, + .baseDefense = 25, + .baseSpeed = 95, + .baseSpAttack = 35, + .baseSpDefense = 25, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 255, + .expYield = 49, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_GOOEY, ABILITY_RATTLED, ABILITY_SAND_VEIL }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Wiglett"), + .cryId = CRY_WIGLETT, + .natDexNum = NATIONAL_DEX_WIGLETT, + .categoryName = _("Garden Eel"), + .height = 12, + .weight = 18, + .description = COMPOUND_STRING( + "This Pokémon can pick up the scent\n" + "of a Veluza just over 65 feet away\n" + "and will hide itself in the sand."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Wiglett, 64, 64), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_Wiglett, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Wiglett, 64, 64), + .backPicYOffset = 14, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Wiglett), + ICON(Wiglett, 0), + //.footprint = gMonFootprint_Wiglett, + LEARNSETS(Wiglett), + .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_WUGTRIO}), + }, + + [SPECIES_WUGTRIO] = + { + .baseHP = 35, + .baseAttack = 100, + .baseDefense = 50, + .baseSpeed = 120, + .baseSpAttack = 50, + .baseSpDefense = 70, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 50, + .expYield = 149, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_WATER_3, EGG_GROUP_WATER_3 }, + .abilities = { ABILITY_GOOEY, ABILITY_RATTLED, ABILITY_SAND_VEIL }, + .bodyColor = BODY_COLOR_RED, + .speciesName = _("Wugtrio"), + .cryId = CRY_WUGTRIO, + .natDexNum = NATIONAL_DEX_WUGTRIO, + .categoryName = _("Garden Eel"), + .height = 12, + .weight = 54, + .description = COMPOUND_STRING( + "A variety of fish Pokémon, Wugtrio\n" + "was once considered to be a\n" + "regional form of Dugtrio."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Wugtrio, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Wugtrio, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Wugtrio, 64, 64), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Wugtrio), + ICON(Wugtrio, 0), + //.footprint = gMonFootprint_Wugtrio, + LEARNSETS(Wugtrio), + }, +#endif //P_FAMILY_WIGLETT + +#if P_FAMILY_BOMBIRDIER + [SPECIES_BOMBIRDIER] = + { + .baseHP = 70, + .baseAttack = 103, + .baseDefense = 85, + .baseSpeed = 82, + .baseSpAttack = 60, + .baseSpDefense = 85, + .types = { TYPE_FLYING, TYPE_DARK }, + .catchRate = 25, + .expYield = 243, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_BIG_PECKS, ABILITY_KEEN_EYE, ABILITY_ROCKY_PAYLOAD }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Bombirdier"), + .cryId = CRY_BOMBIRDIER, + .natDexNum = NATIONAL_DEX_BOMBIRDIER, + .categoryName = _("Item Drop"), + .height = 15, + .weight = 429, + .description = COMPOUND_STRING( + "Bombirdier uses the apron on its\n" + "chest to bundle up food, which it\n" + "carries back to its nest. It enjoys\n" + "dropping things that make loud noises."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Bombirdier, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Bombirdier, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 8, + BACK_PIC(Bombirdier, 64, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Bombirdier), + ICON(Bombirdier, 0), + //.footprint = gMonFootprint_Bombirdier, + LEARNSETS(Bombirdier), + }, +#endif //P_FAMILY_BOMBIRDIER + +#if P_FAMILY_FINIZEN + [SPECIES_FINIZEN] = + { + .baseHP = 70, + .baseAttack = 45, + .baseDefense = 40, + .baseSpeed = 75, + .baseSpAttack = 45, + .baseSpDefense = 40, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 200, + .expYield = 63, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_WATER_VEIL, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Finizen"), + .cryId = CRY_FINIZEN, + .natDexNum = NATIONAL_DEX_FINIZEN, + .categoryName = _("Dolphin"), + .height = 13, + .weight = 602, + .description = COMPOUND_STRING( + "Its water ring is made from\n" + "seawater mixed with a sticky fluid that\n" + "Finizen secretes from its blowhole."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Finizen, 64, 64), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Finizen, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Finizen, 64, 64), + .backPicYOffset = 15, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Finizen), + ICON(Finizen, 0), + //.footprint = gMonFootprint_Finizen, + LEARNSETS(Finizen), + .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_PALAFIN_ZERO}), + }, + +#define PALAFIN_MISC_INFO \ + .types = { TYPE_WATER, TYPE_WATER }, \ + .catchRate = 45, \ + .evYield_HP = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 40, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_WATER_2 }, \ + .abilities = { ABILITY_ZERO_TO_HERO, ABILITY_NONE }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Palafin"), \ + .natDexNum = NATIONAL_DEX_PALAFIN, \ + .pokemonScale = 356, \ + .pokemonOffset = 17, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontAnimFrames = sAnims_Palafin, \ + LEARNSETS(Palafin), \ + .formSpeciesIdTable = sPalafinFormSpeciesIdTable, \ + .formChangeTable = sPalafinZeroFormChangeTable + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //.footprint = gMonFootprint_Palafin, + + [SPECIES_PALAFIN_ZERO] = + { + PALAFIN_MISC_INFO, + .baseHP = 100, + .baseAttack = 70, + .baseDefense = 72, + .baseSpeed = 100, + .baseSpAttack = 53, + .baseSpDefense = 62, + .expYield = 160, + .cryId = CRY_PALAFIN_ZERO, + .categoryName = _("Dolphin"), + .height = 13, + .weight = 602, + .description = COMPOUND_STRING( + "This Pokémon changes its\n" + "appearance if it hears its allies calling for\n" + "help. Palafin will never show\n" + "anybody its moment of transformation."), + FRONT_PIC(PalafinZero, 64, 64), + .frontPicYOffset = 7, + BACK_PIC(PalafinZero, 64, 64), + .backPicYOffset = 15, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PalafinZero), + ICON(PalafinZero, 0), + }, + + [SPECIES_PALAFIN_HERO] = + { + PALAFIN_MISC_INFO, + .baseHP = 100, + .baseAttack = 160, + .baseDefense = 97, + .baseSpeed = 100, + .baseSpAttack = 106, + .baseSpDefense = 87, + .expYield = 228, + .cryId = CRY_PALAFIN_HERO, + .categoryName = _("Hero"), + .height = 18, + .weight = 974, + .description = COMPOUND_STRING( + "This Pokémon's ancient genes have\n" + "awakened. It is now so\n" + "extraordinarily strong that it can easily lift a\n" + "cruise ship with one fin."), + FRONT_PIC(PalafinHero, 64, 64), + .frontPicYOffset = 0, + BACK_PIC(PalafinHero, 64, 64), + .backPicYOffset = 1, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(PalafinHero), + ICON(PalafinHero, 0), + }, +#endif //P_FAMILY_FINIZEN + +#if P_FAMILY_VAROOM + [SPECIES_VAROOM] = + { + .baseHP = 45, + .baseAttack = 70, + .baseDefense = 63, + .baseSpeed = 47, + .baseSpAttack = 30, + .baseSpDefense = 45, + .types = { TYPE_STEEL, TYPE_POISON }, + .catchRate = 190, + .expYield = 60, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_OVERCOAT, ABILITY_NONE, ABILITY_SLOW_START }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Varoom"), + .cryId = CRY_VAROOM, + .natDexNum = NATIONAL_DEX_VAROOM, + .categoryName = _("Single-Cyl"), + .height = 10, + .weight = 350, + .description = COMPOUND_STRING( + "The steel section is Varoom's\n" + "actual body. This Pokémon clings to\n" + "rocks and converts the minerals within\n" + "into energy to fuel its activities."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Varoom, 64, 64), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Varoom, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Varoom, 64, 64), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Varoom), + ICON(Varoom, 5), + //.footprint = gMonFootprint_Varoom, + LEARNSETS(Varoom), + .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_REVAVROOM}), + }, + + [SPECIES_REVAVROOM] = + { + .baseHP = 80, + .baseAttack = 119, + .baseDefense = 90, + .baseSpeed = 90, + .baseSpAttack = 54, + .baseSpDefense = 67, + .types = { TYPE_STEEL, TYPE_POISON }, + .catchRate = 75, + .expYield = 175, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_OVERCOAT, ABILITY_NONE, ABILITY_FILTER }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Revavroom"), + .cryId = CRY_REVAVROOM, + .natDexNum = NATIONAL_DEX_REVAVROOM, + .categoryName = _("Multi-Cyl"), + .height = 18, + .weight = 1200, + .description = COMPOUND_STRING( + "It creates a gas out of poison and\n" + "minerals from rocks. It then\n" + "detonates the gas in its cylinders- now\n" + "numbering eight-to generate energy."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Revavroom, 64, 64), + .frontPicYOffset = 8, + .frontAnimFrames = sAnims_Revavroom, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Revavroom, 64, 64), + .backPicYOffset = 16, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Revavroom), + ICON(Revavroom, 5), + //.footprint = gMonFootprint_Revavroom, + LEARNSETS(Revavroom), + }, +#endif //P_FAMILY_VAROOM + +#if P_FAMILY_CYCLIZAR + [SPECIES_CYCLIZAR] = + { + .baseHP = 70, + .baseAttack = 95, + .baseDefense = 65, + .baseSpeed = 121, + .baseSpAttack = 85, + .baseSpDefense = 65, + .types = { TYPE_DRAGON, TYPE_NORMAL }, + .catchRate = 190, + .expYield = 175, + .evYield_Speed = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_REGENERATOR }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Cyclizar"), + .cryId = CRY_CYCLIZAR, + .natDexNum = NATIONAL_DEX_CYCLIZAR, + .categoryName = _("Mount"), + .height = 16, + .weight = 630, + .description = COMPOUND_STRING( + "It can sprint at over 70 mph while\n" + "carrying a human. The rider's body\n" + "heat warms Cyclizar's back and lifts\n" + "the Pokémon's spirit."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cyclizar, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Cyclizar, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Cyclizar, 64, 64), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Cyclizar), + ICON(Cyclizar, 1), + //.footprint = gMonFootprint_Cyclizar, + LEARNSETS(Cyclizar), + }, +#endif //P_FAMILY_CYCLIZAR + +#if P_FAMILY_ORTHWORM + [SPECIES_ORTHWORM] = + { + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 145, + .baseSpeed = 65, + .baseSpAttack = 60, + .baseSpDefense = 55, + .types = { TYPE_STEEL, TYPE_STEEL }, + .catchRate = 25, + .expYield = 240, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 35, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_EARTH_EATER, ABILITY_NONE, ABILITY_SAND_VEIL }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Orthworm"), + .cryId = CRY_ORTHWORM, + .natDexNum = NATIONAL_DEX_ORTHWORM, + .categoryName = _("Earthworm"), + .height = 25, + .weight = 3100, + .description = COMPOUND_STRING( + "When attacked, this Pokémon will\n" + "wield the tendrils on its body like\n" + "fists and pelt the opponent with a\n" + "storm of punches."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Orthworm, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Orthworm, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Orthworm, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Orthworm), + ICON(Orthworm, 4), + //.footprint = gMonFootprint_Orthworm, + LEARNSETS(Orthworm), + }, +#endif //P_FAMILY_ORTHWORM + +#if P_FAMILY_GLIMMET + [SPECIES_GLIMMET] = + { + .baseHP = 48, + .baseAttack = 35, + .baseDefense = 42, + .baseSpeed = 60, + .baseSpAttack = 105, + .baseSpDefense = 60, + .types = { TYPE_ROCK, TYPE_POISON }, + .catchRate = 70, + .expYield = 70, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_TOXIC_DEBRIS, ABILITY_NONE, ABILITY_CORROSION }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Glimmet"), + .cryId = CRY_GLIMMET, + .natDexNum = NATIONAL_DEX_GLIMMET, + .categoryName = _("Ore"), + .height = 7, + .weight = 80, + .description = COMPOUND_STRING( + "Glimmet's toxic mineral crystals\n" + "look just like flower petals. This\n" + "Pokémon scatters poisonous powder like\n" + "pollen to protect itself."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Glimmet, 64, 64), + .frontPicYOffset = 16, + .frontAnimFrames = sAnims_Glimmet, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 11, + BACK_PIC(Glimmet, 64, 64), + .backPicYOffset = 14, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Glimmet), + ICON(Glimmet, 0), + //.footprint = gMonFootprint_Glimmet, + LEARNSETS(Glimmet), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_GLIMMORA}), + }, + + [SPECIES_GLIMMORA] = + { + .baseHP = 83, + .baseAttack = 55, + .baseDefense = 90, + .baseSpeed = 86, + .baseSpAttack = 130, + .baseSpDefense = 81, + .types = { TYPE_ROCK, TYPE_POISON }, + .catchRate = 25, + .expYield = 184, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_TOXIC_DEBRIS, ABILITY_NONE, ABILITY_CORROSION }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Glimmora"), + .cryId = CRY_GLIMMORA, + .natDexNum = NATIONAL_DEX_GLIMMORA, + .categoryName = _("Ore"), + .height = 15, + .weight = 450, + .description = COMPOUND_STRING( + "Glimmora's petals are made of\n" + "crystallized poison energy. It has\n" + "recently become evident that these\n" + "petals resemble Tera Jewels."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Glimmora, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Glimmora, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 8, + BACK_PIC(Glimmora, 64, 64), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Glimmora), + ICON(Glimmora, 0), + //.footprint = gMonFootprint_Glimmora, + LEARNSETS(Glimmora), + }, +#endif //P_FAMILY_GLIMMET + +#if P_FAMILY_GREAVARD + [SPECIES_GREAVARD] = + { + .baseHP = 50, + .baseAttack = 61, + .baseDefense = 60, + .baseSpeed = 34, + .baseSpAttack = 30, + .baseSpDefense = 55, + .types = { TYPE_GHOST, TYPE_GHOST }, + .catchRate = 120, + .expYield = 58, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_PICKUP, ABILITY_NONE, ABILITY_FLUFFY }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Greavard"), + .cryId = CRY_GREAVARD, + .natDexNum = NATIONAL_DEX_GREAVARD, + .categoryName = _("Ghost Dog"), + .height = 6, + .weight = 350, + .description = COMPOUND_STRING( + "This friendly Pokémon doesn't like\n" + "being alone. Pay it even the\n" + "slightest bit of attention, and it will\n" + "follow you forever."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Greavard, 64, 64), + .frontPicYOffset = 6, + .frontAnimFrames = sAnims_Greavard, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Greavard, 64, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Greavard), + ICON(Greavard, 2), + //.footprint = gMonFootprint_Greavard, + LEARNSETS(Greavard), + .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 30, SPECIES_HOUNDSTONE}), + }, + + [SPECIES_HOUNDSTONE] = + { + .baseHP = 72, + .baseAttack = 101, + .baseDefense = 100, + .baseSpeed = 68, + .baseSpAttack = 50, + .baseSpDefense = 97, + .types = { TYPE_GHOST, TYPE_GHOST }, + .catchRate = 60, + .expYield = 171, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_SAND_RUSH, ABILITY_NONE, ABILITY_FLUFFY }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Houndstone"), + .cryId = CRY_HOUNDSTONE, + .natDexNum = NATIONAL_DEX_HOUNDSTONE, + .categoryName = _("Ghost Dog"), + .height = 20, + .weight = 150, + .description = COMPOUND_STRING( + "Houndstone spends most of its\n" + "time sleeping in graveyards. Among all\n" + "the dog Pokémon, this one is most\n" + "loyal to its master."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Houndstone, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Houndstone, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Houndstone, 64, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Houndstone), + ICON(Houndstone, 5), + //.footprint = gMonFootprint_Houndstone, + LEARNSETS(Houndstone), + }, +#endif //P_FAMILY_GREAVARD + +#if P_FAMILY_FLAMIGO + [SPECIES_FLAMIGO] = + { + .baseHP = 82, + .baseAttack = 115, + .baseDefense = 74, + .baseSpeed = 90, + .baseSpAttack = 75, + .baseSpDefense = 64, + .types = { TYPE_FLYING, TYPE_FIGHTING }, + .catchRate = 100, + .expYield = 175, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FLYING, EGG_GROUP_FLYING }, + .abilities = { ABILITY_SCRAPPY, ABILITY_TANGLED_FEET, ABILITY_COSTAR }, + .bodyColor = BODY_COLOR_PINK, + .speciesName = _("Flamigo"), + .cryId = CRY_FLAMIGO, + .natDexNum = NATIONAL_DEX_FLAMIGO, + .categoryName = _("Synchronize"), + .height = 16, + .weight = 370, + .description = COMPOUND_STRING( + "Thanks to a behavior of theirs\n" + "known as “synchronizing,” an entire\n" + "flock of these Pokémon can attack\n" + "simultaneously in perfect harmony."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Flamigo, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Flamigo, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Flamigo, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Flamigo), + ICON(Flamigo, 4), + //.footprint = gMonFootprint_Flamigo, + LEARNSETS(Flamigo), + }, +#endif //P_FAMILY_FLAMIGO + +#if P_FAMILY_CETODDLE + [SPECIES_CETODDLE] = + { + .baseHP = 108, + .baseAttack = 68, + .baseDefense = 45, + .baseSpeed = 43, + .baseSpAttack = 30, + .baseSpDefense = 40, + .types = { TYPE_ICE, TYPE_ICE }, + .catchRate = 150, + .expYield = 67, + .evYield_HP = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_THICK_FAT, ABILITY_SNOW_CLOAK, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Cetoddle"), + .cryId = CRY_CETODDLE, + .natDexNum = NATIONAL_DEX_CETODDLE, + .categoryName = _("Terra Whale"), + .height = 12, + .weight = 450, + .description = COMPOUND_STRING( + "This species left the ocean and\n" + "began living on land a very long time\n" + "ago. It seems to be closely related\n" + "to Wailmer."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cetoddle, 64, 64), + .frontPicYOffset = 14, + .frontAnimFrames = sAnims_Cetoddle, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Cetoddle, 64, 64), + .backPicYOffset = 16, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Cetoddle), + ICON(Cetoddle, 0), + //.footprint = gMonFootprint_Cetoddle, + LEARNSETS(Cetoddle), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_CETITAN}), + }, + + [SPECIES_CETITAN] = + { + .baseHP = 170, + .baseAttack = 113, + .baseDefense = 65, + .baseSpeed = 73, + .baseSpAttack = 45, + .baseSpDefense = 55, + .types = { TYPE_ICE, TYPE_ICE }, + .catchRate = 50, + .expYield = 182, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroups = { EGG_GROUP_FIELD, EGG_GROUP_FIELD }, + .abilities = { ABILITY_THICK_FAT, ABILITY_SLUSH_RUSH, ABILITY_SHEER_FORCE }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Cetitan"), + .cryId = CRY_CETITAN, + .natDexNum = NATIONAL_DEX_CETITAN, + .categoryName = _("Terra Whale"), + .height = 45, + .weight = 7000, + .description = COMPOUND_STRING( + "Ice energy builds up in the horn on\n" + "its upper jaw, causing the horn to\n" + "reach cryogenic temperatures that\n" + "freeze its surroundings."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Cetitan, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_Cetitan, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Cetitan, 64, 64), + .backPicYOffset = 13, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Cetitan), + ICON(Cetitan, 0), + //.footprint = gMonFootprint_Cetitan, + LEARNSETS(Cetitan), + }, +#endif //P_FAMILY_CETODDLE + +#if P_FAMILY_VELUZA + [SPECIES_VELUZA] = + { + .baseHP = 90, + .baseAttack = 102, + .baseDefense = 73, + .baseSpeed = 70, + .baseSpAttack = 78, + .baseSpDefense = 65, + .types = { TYPE_WATER, TYPE_PSYCHIC }, + .catchRate = 100, + .expYield = 167, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_FAST, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_MOLD_BREAKER, ABILITY_NONE, ABILITY_SHARPNESS }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Veluza"), + .cryId = CRY_VELUZA, + .natDexNum = NATIONAL_DEX_VELUZA, + .categoryName = _("Jettison"), + .height = 25, + .weight = 900, + .description = COMPOUND_STRING( + "Veluza has excellent regenerative\n" + "capabilities. It sheds spare flesh\n" + "from its body to boost its agility,\n" + "then charges at its prey."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Veluza, 64, 64), + .frontPicYOffset = 11, + .frontAnimFrames = sAnims_Veluza, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 5, + BACK_PIC(Veluza, 64, 64), + .backPicYOffset = 14, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Veluza), + ICON(Veluza, 4), + //.footprint = gMonFootprint_Veluza, + LEARNSETS(Veluza), + }, +#endif //P_FAMILY_VELUZA + +#if P_FAMILY_DONDOZO + [SPECIES_DONDOZO] = + { + .baseHP = 150, + .baseAttack = 100, + .baseDefense = 115, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = 65, + .types = { TYPE_WATER, TYPE_WATER }, + .catchRate = 25, + .expYield = 265, + .evYield_HP = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, + .abilities = { ABILITY_UNAWARE, ABILITY_OBLIVIOUS, ABILITY_WATER_VEIL }, + .bodyColor = BODY_COLOR_BLUE, + .speciesName = _("Dondozo"), + .cryId = CRY_DONDOZO, + .natDexNum = NATIONAL_DEX_DONDOZO, + .categoryName = _("Big Catfish"), + .height = 120, + .weight = 2200, + .description = COMPOUND_STRING( + "It treats Tatsugiri like its boss\n" + "and follows it loyally. Though\n" + "powerful, Dondozo is apparently not very\n" + "smart."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Dondozo, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_Dondozo, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 1, + BACK_PIC(Dondozo, 64, 64), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Dondozo), + ICON(Dondozo, 0), + //.footprint = gMonFootprint_Dondozo, + LEARNSETS(Dondozo), + }, +#endif //P_FAMILY_DONDOZO + +#if P_FAMILY_TATSUGIRI +#define TATSUGIRI_MISC_INFO \ + .baseHP = 68, \ + .baseAttack = 50, \ + .baseDefense = 60, \ + .baseSpeed = 82, \ + .baseSpAttack = 120, \ + .baseSpDefense = 95, \ + .types = { TYPE_DRAGON, TYPE_WATER }, \ + .catchRate = 100, \ + .expYield = 166, \ + .evYield_SpAttack = 2, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 35, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroups = { EGG_GROUP_WATER_2, EGG_GROUP_WATER_2 }, \ + .abilities = { ABILITY_COMMANDER, ABILITY_NONE, ABILITY_STORM_DRAIN }, \ + .speciesName = _("Tatsugiri"), \ + .natDexNum = NATIONAL_DEX_TATSUGIRI, \ + .categoryName = _("Mimicry"), \ + .height = 3, \ + .weight = 80, \ + .pokemonScale = 356, \ + .pokemonOffset = 17, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + .frontPicYOffset = 14, \ + .frontAnimFrames = sAnims_Tatsugiri, \ + .backPicYOffset = 17, \ + LEARNSETS(Tatsugiri), \ + .formSpeciesIdTable = sTatsugiriFormSpeciesIdTable + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //.backAnimId = BACK_ANIM_NONE, + //.footprint = gMonFootprint_Tatsugiri, + + [SPECIES_TATSUGIRI_CURLY] = + { + TATSUGIRI_MISC_INFO, + .bodyColor = BODY_COLOR_PINK, + .cryId = CRY_TATSUGIRI_CURLY, + .description = COMPOUND_STRING( + "This is a small dragon Pokémon. It\n" + "lives inside the mouth of Dondozo to\n" + "protect itself from enemies on the\n" + "outside."), + FRONT_PIC(TatsugiriCurly, 64, 64), + BACK_PIC(TatsugiriCurly, 64, 64), + PALETTES(TatsugiriCurly), + ICON(TatsugiriCurly, 0), + }, + + [SPECIES_TATSUGIRI_DROOPY] = + { + TATSUGIRI_MISC_INFO, + .bodyColor = BODY_COLOR_RED, + .cryId = CRY_TATSUGIRI_DROOPY, + .description = COMPOUND_STRING( + "This Pokémon tricks its opponents\n" + "by playing dead. It is small and\n" + "weak, but it uses its smarts to survive."), + FRONT_PIC(TatsugiriDroopy, 64, 64), + BACK_PIC(TatsugiriDroopy, 64, 64), + PALETTES(TatsugiriDroopy), + ICON(TatsugiriDroopy, 0), + }, + + [SPECIES_TATSUGIRI_STRETCHY] = + { + TATSUGIRI_MISC_INFO, + .bodyColor = BODY_COLOR_YELLOW, + .cryId = CRY_TATSUGIRI_STRETCHY, + .description = COMPOUND_STRING( + "It's one of the most intelligent\n" + "dragon Pokémon. It camouflages itself\n" + "by inflating its throat sac."), + FRONT_PIC(TatsugiriStretchy, 64, 64), + BACK_PIC(TatsugiriStretchy, 64, 64), + PALETTES(TatsugiriStretchy), + ICON(TatsugiriStretchy, 0), + }, +#endif //P_FAMILY_TATSUGIRI + +#if P_FAMILY_GREAT_TUSK + [SPECIES_GREAT_TUSK] = + { + .baseHP = 115, + .baseAttack = 131, + .baseDefense = 131, + .baseSpeed = 87, + .baseSpAttack = 53, + .baseSpDefense = 53, + .types = { TYPE_GROUND, TYPE_FIGHTING }, + .catchRate = 30, + .expYield = 285, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PURPLE, + .isParadoxForm = TRUE, + .speciesName = _("Great Tusk"), + .cryId = CRY_GREAT_TUSK, + .natDexNum = NATIONAL_DEX_GREAT_TUSK, + .categoryName = _("Paradox"), + .height = 22, + .weight = 3200, + .description = COMPOUND_STRING( + "Sightings of this Pokémon have\n" + "occurred in recent years. The name\n" + "Great Tusk was taken from a creature\n" + "listed in a certain book."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(GreatTusk, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_GreatTusk, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(GreatTusk, 64, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(GreatTusk), + ICON(GreatTusk, 0), + //.footprint = gMonFootprint_GreatTusk, + LEARNSETS(GreatTusk), + }, +#endif //P_FAMILY_GREAT_TUSK + +#if P_FAMILY_SCREAM_TAIL + [SPECIES_SCREAM_TAIL] = + { + .baseHP = 115, + .baseAttack = 65, + .baseDefense = 99, + .baseSpeed = 111, + .baseSpAttack = 65, + .baseSpDefense = 115, + .types = { TYPE_FAIRY, TYPE_PSYCHIC }, + .catchRate = 50, + .expYield = 285, + .evYield_HP = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PINK, + .isParadoxForm = TRUE, + .speciesName = _("ScreamTail"), + .cryId = CRY_SCREAM_TAIL, + .natDexNum = NATIONAL_DEX_SCREAM_TAIL, + .categoryName = _("Paradox"), + .height = 12, + .weight = 80, + .description = COMPOUND_STRING( + "There has been only one reported\n" + "sighting of this Pokémon. It\n" + "resembles a mysterious creature depicted\n" + "in an old expedition journal."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(ScreamTail, 64, 64), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_ScreamTail, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ScreamTail, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ScreamTail), + ICON(ScreamTail, 0), + //.footprint = gMonFootprint_ScreamTail, + LEARNSETS(ScreamTail), + }, +#endif //P_FAMILY_SCREAM_TAIL + +#if P_FAMILY_BRUTE_BONNET + [SPECIES_BRUTE_BONNET] = + { + .baseHP = 111, + .baseAttack = 127, + .baseDefense = 99, + .baseSpeed = 55, + .baseSpAttack = 79, + .baseSpDefense = 99, + .types = { TYPE_GRASS, TYPE_DARK }, + .catchRate = 50, + .expYield = 285, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .isParadoxForm = TRUE, + .speciesName = _("BruteBonet"), + .cryId = CRY_BRUTE_BONNET, + .natDexNum = NATIONAL_DEX_BRUTE_BONNET, + .categoryName = _("Paradox"), + .height = 12, + .weight = 210, + .description = COMPOUND_STRING( + "It bears a slight resemblance to a\n" + "Pokémon described in a dubious\n" + "magazine as a cross between a dinosaur\n" + "and a mushroom."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(BruteBonnet, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_BruteBonnet, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(BruteBonnet, 64, 64), + .backPicYOffset = 12, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(BruteBonnet), + ICON(BruteBonnet, 1), + //.footprint = gMonFootprint_BruteBonnet, + LEARNSETS(BruteBonnet), + }, +#endif //P_FAMILY_BRUTE_BONNET + +#if P_FAMILY_FLUTTER_MANE + [SPECIES_FLUTTER_MANE] = + { + .baseHP = 55, + .baseAttack = 55, + .baseDefense = 55, + .baseSpeed = 135, + .baseSpAttack = 135, + .baseSpDefense = 135, + .types = { TYPE_GHOST, TYPE_FAIRY }, + .catchRate = 30, + .expYield = 285, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .isParadoxForm = TRUE, + .speciesName = _("FluttrMane"), + .cryId = CRY_FLUTTER_MANE, + .natDexNum = NATIONAL_DEX_FLUTTER_MANE, + .categoryName = _("Paradox"), + .height = 14, + .weight = 40, + .description = COMPOUND_STRING( + "It has similar features to a\n" + "ghostly pterosaur that was covered in a\n" + "paranormal magazine, but the two\n" + "have little else in common."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(FlutterMane, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_FlutterMane, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 5, + BACK_PIC(FlutterMane, 64, 64), + .backPicYOffset = 10, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(FlutterMane), + ICON(FlutterMane, 4), + //.footprint = gMonFootprint_FlutterMane, + LEARNSETS(FlutterMane), + }, +#endif //P_FAMILY_FLUTTER_MANE + +#if P_FAMILY_SLITHER_WING + [SPECIES_SLITHER_WING] = + { + .baseHP = 85, + .baseAttack = 135, + .baseDefense = 79, + .baseSpeed = 81, + .baseSpAttack = 85, + .baseSpDefense = 105, + .types = { TYPE_BUG, TYPE_FIGHTING }, + .catchRate = 30, + .expYield = 285, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .isParadoxForm = TRUE, + .speciesName = _("SlithrWing"), + .cryId = CRY_SLITHER_WING, + .natDexNum = NATIONAL_DEX_SLITHER_WING, + .categoryName = _("Paradox"), + .height = 32, + .weight = 920, + .description = COMPOUND_STRING( + "This mysterious Pokémon has some\n" + "similarities to a creature that an\n" + "old book introduced as Slither Wing."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(SlitherWing, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_SlitherWing, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SlitherWing, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(SlitherWing), + ICON(SlitherWing, 3), + //.footprint = gMonFootprint_SlitherWing, + LEARNSETS(SlitherWing), + }, +#endif //P_FAMILY_SLITHER_WING + +#if P_FAMILY_SANDY_SHOCKS + [SPECIES_SANDY_SHOCKS] = + { + .baseHP = 85, + .baseAttack = 81, + .baseDefense = 97, + .baseSpeed = 101, + .baseSpAttack = 121, + .baseSpDefense = 85, + .types = { TYPE_ELECTRIC, TYPE_GROUND }, + .catchRate = 30, + .expYield = 285, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .isParadoxForm = TRUE, + .speciesName = _("SndyShocks"), + .cryId = CRY_SANDY_SHOCKS, + .natDexNum = NATIONAL_DEX_SANDY_SHOCKS, + .categoryName = _("Paradox"), + .height = 23, + .weight = 600, + .description = COMPOUND_STRING( + "It slightly resembles a Magneton\n" + "that lived for 10,000 years and was\n" + "featured in an article in a\n" + "paranormal magazine."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(SandyShocks, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_SandyShocks, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(SandyShocks, 64, 64), + .backPicYOffset = 10, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(SandyShocks), + ICON(SandyShocks, 0), + //.footprint = gMonFootprint_SandyShocks, + LEARNSETS(SandyShocks), + }, +#endif //P_FAMILY_SANDY_SHOCKS + +#if P_FAMILY_IRON_TREADS + [SPECIES_IRON_TREADS] = + { + .baseHP = 90, + .baseAttack = 112, + .baseDefense = 120, + .baseSpeed = 106, + .baseSpAttack = 72, + .baseSpDefense = 70, + .types = { TYPE_GROUND, TYPE_STEEL }, + .catchRate = 30, + .expYield = 285, + .evYield_Defense = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .isParadoxForm = TRUE, + .speciesName = _("IronTreads"), + .cryId = CRY_IRON_TREADS, + .natDexNum = NATIONAL_DEX_IRON_TREADS, + .categoryName = _("Paradox"), + .height = 9, + .weight = 2400, + .description = COMPOUND_STRING( + "Sightings of this Pokémon have\n" + "occurred in recent years. It resembles\n" + "a mysterious object described in an\n" + "old expedition journal."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(IronTreads, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_IronTreads, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(IronTreads, 64, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(IronTreads), + ICON(IronTreads, 0), + //.footprint = gMonFootprint_IronTreads, + LEARNSETS(IronTreads), + }, +#endif //P_FAMILY_IRON_TREADS + +#if P_FAMILY_IRON_BUNDLE + [SPECIES_IRON_BUNDLE] = + { + .baseHP = 56, + .baseAttack = 80, + .baseDefense = 114, + .baseSpeed = 136, + .baseSpAttack = 124, + .baseSpDefense = 60, + .types = { TYPE_ICE, TYPE_WATER }, + .catchRate = 50, + .expYield = 285, + .evYield_Speed = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .isParadoxForm = TRUE, + .speciesName = _("IronBundle"), + .cryId = CRY_IRON_BUNDLE, + .natDexNum = NATIONAL_DEX_IRON_BUNDLE, + .categoryName = _("Paradox"), + .height = 6, + .weight = 110, + .description = COMPOUND_STRING( + "Its shape is similar to a robot\n" + "featured in a paranormal magazine\n" + "article. The robot was said to have been\n" + "created by an ancient civilization."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(IronBundle, 64, 64), + .frontPicYOffset = 4, + .frontAnimFrames = sAnims_IronBundle, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(IronBundle, 64, 64), + .backPicYOffset = 9, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(IronBundle), + ICON(IronBundle, 0), + //.footprint = gMonFootprint_IronBundle, + LEARNSETS(IronBundle), + }, +#endif //P_FAMILY_IRON_BUNDLE + +#if P_FAMILY_IRON_HANDS + [SPECIES_IRON_HANDS] = + { + .baseHP = 154, + .baseAttack = 140, + .baseDefense = 108, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 68, + .types = { TYPE_FIGHTING, TYPE_ELECTRIC }, + .catchRate = 50, + .expYield = 285, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .isParadoxForm = TRUE, + .speciesName = _("Iron Hands"), + .cryId = CRY_IRON_HANDS, + .natDexNum = NATIONAL_DEX_IRON_HANDS, + .categoryName = _("Paradox"), + .height = 18, + .weight = 3807, + .description = COMPOUND_STRING( + "It is very similar to a cyborg\n" + "covered exclusively by a paranormal\n" + "magazine. The cyborg was said to be the\n" + "modified form of a certain athlete."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(IronHands, 64, 64), + .frontPicYOffset = 3, + .frontAnimFrames = sAnims_IronHands, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(IronHands, 64, 64), + .backPicYOffset = 10, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(IronHands), + ICON(IronHands, 0), + //.footprint = gMonFootprint_IronHands, + LEARNSETS(IronHands), + }, +#endif //P_FAMILY_IRON_HANDS + +#if P_FAMILY_IRON_JUGULIS + [SPECIES_IRON_JUGULIS] = + { + .baseHP = 94, + .baseAttack = 80, + .baseDefense = 86, + .baseSpeed = 108, + .baseSpAttack = 122, + .baseSpDefense = 80, + .types = { TYPE_DARK, TYPE_FLYING }, + .catchRate = 30, + .expYield = 285, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .isParadoxForm = TRUE, + .speciesName = _("IronJuguls"), + .cryId = CRY_IRON_JUGULIS, + .natDexNum = NATIONAL_DEX_IRON_JUGULIS, + .categoryName = _("Paradox"), + .height = 13, + .weight = 1110, + .description = COMPOUND_STRING( + "It resembles a certain Pokémon\n" + "introduced in a paranormal magazine,\n" + "described as the offspring of a\n" + "Hydreigon that fell in love with a robot."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(IronJugulis, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_IronJugulis, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 7, + BACK_PIC(IronJugulis, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(IronJugulis), + ICON(IronJugulis, 2), + //.footprint = gMonFootprint_IronJugulis, + LEARNSETS(IronJugulis), + }, +#endif //P_FAMILY_IRON_JUGULIS + +#if P_FAMILY_IRON_MOTH + [SPECIES_IRON_MOTH] = + { + .baseHP = 80, + .baseAttack = 70, + .baseDefense = 60, + .baseSpeed = 110, + .baseSpAttack = 140, + .baseSpDefense = 110, + .types = { TYPE_FIRE, TYPE_POISON }, + .catchRate = 30, + .expYield = 285, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .isParadoxForm = TRUE, + .speciesName = _("Iron Moth"), + .cryId = CRY_IRON_MOTH, + .natDexNum = NATIONAL_DEX_IRON_MOTH, + .categoryName = _("Paradox"), + .height = 12, + .weight = 360, + .description = COMPOUND_STRING( + "No records exist of this species\n" + "being caught. Data is lacking, but\n" + "the Pokémon's traits match up with an\n" + "object described in an old book."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(IronMoth, 64, 64), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_IronMoth, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 8, + BACK_PIC(IronMoth, 64, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(IronMoth), + ICON(IronMoth, 3), + //.footprint = gMonFootprint_IronMoth, + LEARNSETS(IronMoth), + }, +#endif //P_FAMILY_IRON_MOTH + +#if P_FAMILY_IRON_THORNS + [SPECIES_IRON_THORNS] = + { + .baseHP = 100, + .baseAttack = 134, + .baseDefense = 110, + .baseSpeed = 72, + .baseSpAttack = 70, + .baseSpDefense = 84, + .types = { TYPE_ROCK, TYPE_ELECTRIC }, + .catchRate = 30, + .expYield = 285, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .isParadoxForm = TRUE, + .speciesName = _("IronThorns"), + .cryId = CRY_IRON_THORNS, + .natDexNum = NATIONAL_DEX_IRON_THORNS, + .categoryName = _("Paradox"), + .height = 16, + .weight = 3030, + .description = COMPOUND_STRING( + "It has some similarities to a\n" + "Pokémon introduced in a dubious magazine\n" + "as a Tyranitar from one billion\n" + "years into the future."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(IronThorns, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_IronThorns, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(IronThorns, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(IronThorns), + ICON(IronThorns, 1), + //.footprint = gMonFootprint_IronThorns, + LEARNSETS(IronThorns), + }, +#endif //P_FAMILY_IRON_THORNS + +#if P_FAMILY_FRIGIBAX + [SPECIES_FRIGIBAX] = + { + .baseHP = 65, + .baseAttack = 75, + .baseDefense = 45, + .baseSpeed = 55, + .baseSpAttack = 35, + .baseSpDefense = 45, + .types = { TYPE_DRAGON, TYPE_ICE }, + .catchRate = 45, + .expYield = 64, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_THERMAL_EXCHANGE, ABILITY_NONE, ABILITY_ICE_BODY }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Frigibax"), + .cryId = CRY_FRIGIBAX, + .natDexNum = NATIONAL_DEX_FRIGIBAX, + .categoryName = _("Ice Fin"), + .height = 5, + .weight = 170, + .description = COMPOUND_STRING( + "This Pokémon lives in forests and\n" + "craggy areas. Using the power of its\n" + "dorsal fin, it cools the inside of its\n" + "nest like a refrigerator."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Frigibax, 64, 64), + .frontPicYOffset = 7, + .frontAnimFrames = sAnims_Frigibax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Frigibax, 64, 64), + .backPicYOffset = 11, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Frigibax), + ICON(Frigibax, 3), + //.footprint = gMonFootprint_Frigibax, + LEARNSETS(Frigibax), + .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_ARCTIBAX}), + }, + + [SPECIES_ARCTIBAX] = + { + .baseHP = 90, + .baseAttack = 95, + .baseDefense = 66, + .baseSpeed = 62, + .baseSpAttack = 45, + .baseSpDefense = 65, + .types = { TYPE_DRAGON, TYPE_ICE }, + .catchRate = 25, + .expYield = 148, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_THERMAL_EXCHANGE, ABILITY_NONE, ABILITY_ICE_BODY }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Arctibax"), + .cryId = CRY_ARCTIBAX, + .natDexNum = NATIONAL_DEX_ARCTIBAX, + .categoryName = _("Ice Fin"), + .height = 8, + .weight = 300, + .description = COMPOUND_STRING( + "Arctibax freezes the air around it,\n" + "protecting its face with an ice\n" + "mask and turning its dorsal fin into a\n" + "blade of ice."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Arctibax, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Arctibax, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Arctibax, 64, 64), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Arctibax), + ICON(Arctibax, 0), + //.footprint = gMonFootprint_Arctibax, + LEARNSETS(Arctibax), + .evolutions = EVOLUTION({EVO_LEVEL, 54, SPECIES_BAXCALIBUR}), + }, + + [SPECIES_BAXCALIBUR] = + { + .baseHP = 115, + .baseAttack = 145, + .baseDefense = 92, + .baseSpeed = 87, + .baseSpAttack = 75, + .baseSpDefense = 86, + .types = { TYPE_DRAGON, TYPE_ICE }, + .catchRate = 10, + .expYield = 300, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_DRAGON, EGG_GROUP_MINERAL }, + .abilities = { ABILITY_THERMAL_EXCHANGE, ABILITY_NONE, ABILITY_ICE_BODY }, + .bodyColor = BODY_COLOR_GRAY, + .speciesName = _("Baxcalibur"), + .cryId = CRY_BAXCALIBUR, + .natDexNum = NATIONAL_DEX_BAXCALIBUR, + .categoryName = _("Ice Dragon"), + .height = 21, + .weight = 2100, + .description = COMPOUND_STRING( + "It launches itself into battle by\n" + "flipping upside down and spewing\n" + "frigid air from its mouth. It finishes\n" + "opponents off with its dorsal blade."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Baxcalibur, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Baxcalibur, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Baxcalibur, 64, 64), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Baxcalibur), + ICON(Baxcalibur, 0), + //.footprint = gMonFootprint_Baxcalibur, + LEARNSETS(Baxcalibur), + }, +#endif //P_FAMILY_FRIGIBAX + +#if P_FAMILY_GIMMIGHOUL +#define GIMMIGHOUL_MISC_INFO \ + .types = { TYPE_GHOST, TYPE_GHOST }, \ + .catchRate = 45, \ + .expYield = 60, \ + .evYield_SpAttack = 1, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 50, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .speciesName = _("Gimmighoul"), \ + .cryId = CRY_GIMMIGHOUL, \ + .natDexNum = NATIONAL_DEX_GIMMIGHOUL, \ + .frontAnimFrames = sAnims_Gimmighoul, \ + LEARNSETS(Gimmighoul), \ + .formSpeciesIdTable = sGimmighoulFormSpeciesIdTable, \ + .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_GHOLDENGO}) + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //.backAnimId = BACK_ANIM_NONE, + //.footprint = gMonFootprint_Gimmighoul, + + [SPECIES_GIMMIGHOUL_CHEST] = + { + GIMMIGHOUL_MISC_INFO, + .baseHP = 45, + .baseAttack = 30, + .baseDefense = 70, + .baseSpeed = 10, + .baseSpAttack = 75, + .baseSpDefense = 70, + .abilities = { ABILITY_RATTLED, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .categoryName = _("Coin Chest"), + .height = 3, + .weight = 50, + .description = COMPOUND_STRING( + "It lives inside an old treasure\n" + "chest. Sometimes it gets left in shop\n" + "corners since no one realizes it's\n" + "actually a Pokémon."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(GimmighoulChest, 64, 64), + .frontPicYOffset = 2, + BACK_PIC(GimmighoulChest, 64, 64), + .backPicYOffset = 0, + PALETTES(GimmighoulChest), + ICON(GimmighoulChest, 0), + }, + + [SPECIES_GIMMIGHOUL_ROAMING] = + { + GIMMIGHOUL_MISC_INFO, + .baseHP = 45, + .baseAttack = 30, + .baseDefense = 25, + .baseSpeed = 80, + .baseSpAttack = 75, + .baseSpDefense = 45, + .abilities = { ABILITY_RUN_AWAY, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .categoryName = _("Coin Hunter"), + .height = 1, + .weight = 1, + .description = COMPOUND_STRING( + "It wanders around, carrying an old\n" + "coin on its back. It survives by\n" + "draining the life-force from humans who\n" + "try to pick up its coin."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(GimmighoulRoaming, 64, 64), + .frontPicYOffset = 11, + BACK_PIC(GimmighoulRoaming, 64, 64), + .backPicYOffset = 3, + PALETTES(GimmighoulRoaming), + ICON(GimmighoulRoaming, 0), + }, + + [SPECIES_GHOLDENGO] = + { + .baseHP = 87, + .baseAttack = 60, + .baseDefense = 95, + .baseSpeed = 84, + .baseSpAttack = 133, + .baseSpDefense = 91, + .types = { TYPE_STEEL, TYPE_GHOST }, + .catchRate = 45, + .expYield = 275, + .evYield_SpAttack = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_GOOD_AS_GOLD, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .speciesName = _("Gholdengo"), + .cryId = CRY_GHOLDENGO, + .natDexNum = NATIONAL_DEX_GHOLDENGO, + .categoryName = _("Coin Entity"), + .height = 12, + .weight = 300, + .description = COMPOUND_STRING( + "It has a sturdy body made up of\n" + "stacked coins. Gholdengo overwhelms\n" + "its enemies by firing coin after coin\n" + "at them in quick succession."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Gholdengo, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Gholdengo, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Gholdengo, 64, 64), + .backPicYOffset = 6, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Gholdengo), + ICON(Gholdengo, 0), + //.footprint = gMonFootprint_Gholdengo, + LEARNSETS(Gholdengo), + }, +#endif //P_FAMILY_GIMMIGHOUL + +#if P_FAMILY_WO_CHIEN + [SPECIES_WO_CHIEN] = + { + .baseHP = 85, + .baseAttack = 85, + .baseDefense = 100, + .baseSpeed = 70, + .baseSpAttack = 95, + .baseSpDefense = 135, + .types = { TYPE_DARK, TYPE_GRASS }, + .catchRate = 6, + .expYield = 285, + .evYield_SpDefense = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_TABLETS_OF_RUIN, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .isLegendary = TRUE, + .speciesName = _("Wo-Chien"), + .cryId = CRY_WO_CHIEN, + .natDexNum = NATIONAL_DEX_WO_CHIEN, + .categoryName = _("Ruinous"), + .height = 15, + .weight = 742, + .description = COMPOUND_STRING( + "The grudge of a person punished\n" + "for writing the king's evil deeds upon\n" + "wooden tablets has clad itself in\n" + "dead leaves to become a Pokémon."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(WoChien, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_WoChien, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(WoChien, 64, 64), + .backPicYOffset = 10, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(WoChien), + ICON(WoChien, 5), + //.footprint = gMonFootprint_WoChien, + LEARNSETS(WoChien), + }, +#endif //P_FAMILY_WO_CHIEN + +#if P_FAMILY_CHIEN_PAO + [SPECIES_CHIEN_PAO] = + { + .baseHP = 80, + .baseAttack = 120, + .baseDefense = 80, + .baseSpeed = 135, + .baseSpAttack = 90, + .baseSpDefense = 65, + .types = { TYPE_DARK, TYPE_ICE }, + .catchRate = 6, + .expYield = 285, + .evYield_Speed = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_SWORD_OF_RUIN, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_WHITE, + .isLegendary = TRUE, + .speciesName = _("Chien-Pao"), + .cryId = CRY_CHIEN_PAO, + .natDexNum = NATIONAL_DEX_CHIEN_PAO, + .categoryName = _("Ruinous"), + .height = 19, + .weight = 1522, + .description = COMPOUND_STRING( + "This Pokémon can control 100 tons\n" + "of fallen snow. It plays around\n" + "innocently by leaping in and out of\n" + "avalanches it has caused."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(ChienPao, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_ChienPao, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(ChienPao, 64, 64), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ChienPao), + ICON(ChienPao, 0), + //.footprint = gMonFootprint_ChienPao, + LEARNSETS(ChienPao), + }, +#endif //P_FAMILY_CHIEN_PAO + +#if P_FAMILY_TING_LU + [SPECIES_TING_LU] = + { + .baseHP = 155, + .baseAttack = 110, + .baseDefense = 125, + .baseSpeed = 45, + .baseSpAttack = 55, + .baseSpDefense = 80, + .types = { TYPE_DARK, TYPE_GROUND }, + .catchRate = 6, + .expYield = 285, + .evYield_Defense = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_VESSEL_OF_RUIN, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .isLegendary = TRUE, + .speciesName = _("Ting-Lu"), + .cryId = CRY_TING_LU, + .natDexNum = NATIONAL_DEX_TING_LU, + .categoryName = _("Ruinous"), + .height = 27, + .weight = 6997, + .description = COMPOUND_STRING( + "It slowly brings its exceedingly\n" + "heavy head down upon the ground,\n" + "splitting the earth open with huge\n" + "fissures that run over 160 feet deep."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(TingLu, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_TingLu, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(TingLu, 64, 64), + .backPicYOffset = 5, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(TingLu), + ICON(TingLu, 0), + //.footprint = gMonFootprint_TingLu, + LEARNSETS(TingLu), + }, +#endif //P_FAMILY_TING_LU + +#if P_FAMILY_CHI_YU + [SPECIES_CHI_YU] = + { + .baseHP = 55, + .baseAttack = 80, + .baseDefense = 80, + .baseSpeed = 100, + .baseSpAttack = 135, + .baseSpDefense = 120, + .types = { TYPE_DARK, TYPE_FIRE }, + .catchRate = 6, + .expYield = 285, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_BEADS_OF_RUIN, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .isLegendary = TRUE, + .speciesName = _("Chi-Yu"), + .cryId = CRY_CHI_YU, + .natDexNum = NATIONAL_DEX_CHI_YU, + .categoryName = _("Ruinous"), + .height = 4, + .weight = 49, + .description = COMPOUND_STRING( + "It controls flames burning at over\n" + "5,400 degrees Fahrenheit. It\n" + "casually swims through the sea of lava it\n" + "creates by melting rock and sand."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(ChiYu, 64, 64), + .frontPicYOffset = 10, + .frontAnimFrames = sAnims_ChiYu, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 9, + BACK_PIC(ChiYu, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(ChiYu), + ICON(ChiYu, 0), + //.footprint = gMonFootprint_ChiYu, + LEARNSETS(ChiYu), + }, +#endif //P_FAMILY_CHI_YU + +#if P_FAMILY_ROARING_MOON + [SPECIES_ROARING_MOON] = + { + .baseHP = 105, + .baseAttack = 139, + .baseDefense = 71, + .baseSpeed = 119, + .baseSpAttack = 55, + .baseSpDefense = 101, + .types = { TYPE_DRAGON, TYPE_DARK }, + .catchRate = 10, + .expYield = 295, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .isParadoxForm = TRUE, + .speciesName = _("RoarngMoon"), + .cryId = CRY_ROARING_MOON, + .natDexNum = NATIONAL_DEX_ROARING_MOON, + .categoryName = _("Paradox"), + .height = 20, + .weight = 3800, + .description = COMPOUND_STRING( + "According to an article in a\n" + "dubious magazine, this Pokémon has some\n" + "connection to Mega Evolution that\n" + "occurs in Hoenn."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(RoaringMoon, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_RoaringMoon, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + .enemyMonElevation = 6, + BACK_PIC(RoaringMoon, 64, 64), + .backPicYOffset = 7, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(RoaringMoon), + ICON(RoaringMoon, 3), + //.footprint = gMonFootprint_RoaringMoon, + LEARNSETS(RoaringMoon), + }, +#endif //P_FAMILY_ROARING_MOON + +#if P_FAMILY_IRON_VALIANT + [SPECIES_IRON_VALIANT] = + { + .baseHP = 74, + .baseAttack = 130, + .baseDefense = 90, + .baseSpeed = 116, + .baseSpAttack = 120, + .baseSpDefense = 60, + .types = { TYPE_FAIRY, TYPE_FIGHTING }, + .catchRate = 10, + .expYield = 295, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_WHITE, + .isParadoxForm = TRUE, + .speciesName = _("IronVliant"), + .cryId = CRY_IRON_VALIANT, + .natDexNum = NATIONAL_DEX_IRON_VALIANT, + .categoryName = _("Paradox"), + .height = 14, + .weight = 350, + .description = COMPOUND_STRING( + "It has some similarities to a mad\n" + "scientist's invention covered in a\n" + "paranormal magazine."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(IronValiant, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_IronValiant, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(IronValiant, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(IronValiant), + ICON(IronValiant, 4), + //.footprint = gMonFootprint_IronValiant, + LEARNSETS(IronValiant), + }, +#endif //P_FAMILY_IRON_VALIANT + +#if P_FAMILY_KORAIDON + [SPECIES_KORAIDON] = + { + .baseHP = 100, + .baseAttack = 135, + .baseDefense = 115, + .baseSpeed = 135, + .baseSpAttack = 85, + .baseSpDefense = 100, + .types = { TYPE_FIGHTING, TYPE_DRAGON }, + .catchRate = 3, + .expYield = 335, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_ORICHALCUM_PULSE, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_RED, + .isLegendary = TRUE, + .isParadoxForm = TRUE, + .speciesName = _("Koraidon"), + .cryId = CRY_KORAIDON, + .natDexNum = NATIONAL_DEX_KORAIDON, + .categoryName = _("Paradox"), + .height = 25, + .weight = 3030, + .description = COMPOUND_STRING( + "This Pokémon resembles Cyclizar,\n" + "but it is far burlier and more\n" + "ferocious. Nothing is known about its\n" + "ecology or other features."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Koraidon, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Koraidon, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Koraidon, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Koraidon), + ICON(Koraidon, 0), + //.footprint = gMonFootprint_Koraidon, + LEARNSETS(Koraidon), + }, +#endif //P_FAMILY_KORAIDON + +#if P_FAMILY_MIRAIDON + [SPECIES_MIRAIDON] = + { + .baseHP = 100, + .baseAttack = 85, + .baseDefense = 100, + .baseSpeed = 135, + .baseSpAttack = 135, + .baseSpDefense = 115, + .types = { TYPE_ELECTRIC, TYPE_DRAGON }, + .catchRate = 3, + .expYield = 335, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_HADRON_ENGINE, ABILITY_NONE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .isLegendary = TRUE, + .isParadoxForm = TRUE, + .speciesName = _("Miraidon"), + .cryId = CRY_MIRAIDON, + .natDexNum = NATIONAL_DEX_MIRAIDON, + .categoryName = _("Paradox"), + .height = 35, + .weight = 2400, + .description = COMPOUND_STRING( + "This seems to be the Iron Serpent\n" + "mentioned in an Violet Book. The\n" + "Iron Serpent is said to have turned the\n" + "land to ash with its lightning."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Miraidon, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Miraidon, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Miraidon, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Miraidon), + ICON(Miraidon, 2), + //.footprint = gMonFootprint_Miraidon, + LEARNSETS(Miraidon), + }, +#endif //P_FAMILY_MIRAIDON + +#if P_FAMILY_WALKING_WAKE + [SPECIES_WALKING_WAKE] = + { + .baseHP = 99, + .baseAttack = 83, + .baseDefense = 91, + .baseSpeed = 109, + .baseSpAttack = 125, + .baseSpDefense = 83, + .types = { TYPE_WATER, TYPE_DRAGON }, + .catchRate = 5, + .expYield = 295, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .isParadoxForm = TRUE, + .speciesName = _("WalkngWake"), + .cryId = CRY_WALKING_WAKE, + .natDexNum = NATIONAL_DEX_WALKING_WAKE, + .categoryName = _("Paradox"), + .height = 35, + .weight = 2800, + .description = COMPOUND_STRING( + "Ecology under research."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(WalkingWake, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_WalkingWake, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(WalkingWake, 64, 64), + .backPicYOffset = 3, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(WalkingWake), + ICON(WalkingWake, 2), + //.footprint = gMonFootprint_WalkingWake, + LEARNSETS(WalkingWake), + }, +#endif //P_FAMILY_WALKING_WAKE + +#if P_FAMILY_IRON_LEAVES + [SPECIES_IRON_LEAVES] = + { + .baseHP = 90, + .baseAttack = 130, + .baseDefense = 88, + .baseSpeed = 104, + .baseSpAttack = 70, + .baseSpDefense = 108, + .types = { TYPE_GRASS, TYPE_PSYCHIC }, + .catchRate = 5, + .expYield = 295, + .evYield_Attack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GREEN, + .isParadoxForm = TRUE, + .speciesName = _("IronLeaves"), + .cryId = CRY_IRON_LEAVES, + .natDexNum = NATIONAL_DEX_IRON_LEAVES, + .categoryName = _("Paradox"), + .height = 15, + .weight = 1250, + .description = COMPOUND_STRING( + "Ecology under analysis."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(IronLeaves, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_IronLeaves, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(IronLeaves, 64, 64), + .backPicYOffset = 8, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(IronLeaves), + ICON(IronLeaves, 1), + //.footprint = gMonFootprint_IronLeaves, + LEARNSETS(IronLeaves), + }, +#endif //P_FAMILY_IRON_LEAVES + +#if P_FAMILY_POLTCHAGEIST +#define POLTCHAGEIST_MISC_INFO \ + .baseHP = 40, \ + .baseAttack = 45, \ + .baseDefense = 45, \ + .baseSpeed = 50, \ + .baseSpAttack = 74, \ + .baseSpDefense = 54, \ + .types = { TYPE_GRASS, TYPE_GHOST }, \ + .catchRate = 120, \ + .expYield = 62, \ + .evYield_SpAttack = 1, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS }, \ + .abilities = { ABILITY_HOSPITALITY, ABILITY_NONE, ABILITY_HEATPROOF }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .speciesName = _("Ptchageist"), \ + .cryId = CRY_POLTCHAGEIST, \ + .natDexNum = NATIONAL_DEX_POLTCHAGEIST, \ + .categoryName = _("Matcha"), \ + .height = 1, \ + .weight = 11, \ + .pokemonScale = 356, \ + .pokemonOffset = 17, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + FRONT_PIC(Poltchageist, 64, 64), \ + .frontPicYOffset = 7, \ + .frontAnimFrames = sAnims_Poltchageist, \ + .enemyMonElevation = 10, \ + BACK_PIC(Poltchageist, 64, 64), \ + .backPicYOffset = 5, \ + PALETTES(Poltchageist), \ + ICON(Poltchageist, 4), \ + LEARNSETS(Poltchageist) + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //.backAnimId = BACK_ANIM_NONE, + //.footprint = gMonFootprint_Poltchageist, + + [SPECIES_POLTCHAGEIST_COUNTERFEIT] = + { + POLTCHAGEIST_MISC_INFO, + .description = COMPOUND_STRING( + "Supposedly, the regrets of a tea\n" + "ceremony master who died before\n" + "perfecting his craft lingered in some\n" + "matcha and became a Pokémon."), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_UNREMARKABLE_TEACUP, SPECIES_SINISTCHA_UNREMARKABLE}), + }, + [SPECIES_POLTCHAGEIST_ARTISAN] = + { + POLTCHAGEIST_MISC_INFO, + .description = COMPOUND_STRING( + "It has taken up residence in a very\n" + "expensive tea caddy. It takes an\n" + "expert to distinguish the expensive\n" + "tea caddies from the cheap ones."), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_MASTERPIECE_TEACUP, SPECIES_SINISTCHA_MASTERPIECE}), + }, + +#define SINISTCHA_MISC_INFO \ + .baseHP = 71, \ + .baseAttack = 60, \ + .baseDefense = 106, \ + .baseSpeed = 70, \ + .baseSpAttack = 121, \ + .baseSpDefense = 80, \ + .types = { TYPE_GRASS, TYPE_GHOST }, \ + .catchRate = 60, \ + .expYield = 178, \ + .evYield_SpAttack = 2, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_AMORPHOUS }, \ + .abilities = { ABILITY_HOSPITALITY, ABILITY_NONE, ABILITY_HEATPROOF }, \ + .bodyColor = BODY_COLOR_GREEN, \ + .speciesName = _("Sinistcha"), \ + .cryId = CRY_SINISTCHA, \ + .natDexNum = NATIONAL_DEX_SINISTCHA, \ + .categoryName = _("Matcha"), \ + .height = 2, \ + .weight = 22, \ + .pokemonScale = 356, \ + .pokemonOffset = 17, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + FRONT_PIC(Sinistcha, 64, 64), \ + .frontPicYOffset = 10, \ + .frontAnimFrames = sAnims_Sinistcha, \ + .enemyMonElevation = 10, \ + BACK_PIC(Sinistcha, 64, 64), \ + .backPicYOffset = 13, \ + PALETTES(Sinistcha), \ + ICON(Sinistcha, 1), \ + LEARNSETS(Sinistcha) + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //.backAnimId = BACK_ANIM_NONE, + //.footprint = gMonFootprint_Sinistcha, + + [SPECIES_SINISTCHA_UNREMARKABLE] = + { + SINISTCHA_MISC_INFO, + .description = COMPOUND_STRING( + "It pretends to be tea, trying to fool\n" + "people into drinking it so it can\n" + "drain their life-force. Its ruse is\n" + "generally unsuccessful."), + }, + [SPECIES_SINISTCHA_MASTERPIECE] = + { + SINISTCHA_MISC_INFO, + .description = COMPOUND_STRING( + "The more stirring it does with the\n" + "tea whisk on its head, the more\n" + "energy it builds up. It does this to\n" + "prepare for battle."), + }, +#endif //P_FAMILY_POLTCHAGEIST + +#if P_FAMILY_OKIDOGI + [SPECIES_OKIDOGI] = + { + .baseHP = 88, + .baseAttack = 128, + .baseDefense = 115, + .baseSpeed = 80, + .baseSpAttack = 58, + .baseSpDefense = 86, + .types = { TYPE_POISON, TYPE_FIGHTING }, + .catchRate = 3, + .expYield = 278, + .evYield_Attack = 3, + .genderRatio = MON_MALE, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_TOXIC_CHAIN, ABILITY_NONE, ABILITY_GUARD_DOG }, + .bodyColor = BODY_COLOR_BLACK, + .speciesName = _("Okidogi"), + .cryId = CRY_OKIDOGI, + .natDexNum = NATIONAL_DEX_OKIDOGI, + .categoryName = _("Retainer"), + .height = 18, + .weight = 920, + .description = COMPOUND_STRING( + "After all its muscles were stimulated\n" + "by the toxic chain around its neck,\n" + "Okidogi transformed and gained\n" + "a powerful physique."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Okidogi, 64, 64), + .frontPicYOffset = 1, + .frontAnimFrames = sAnims_Okidogi, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Okidogi, 64, 64), + .backPicYOffset = 16, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Okidogi), + ICON(Okidogi, 1), + //.footprint = gMonFootprint_Okidogi, + LEARNSETS(Okidogi), + .isLegendary = TRUE, + }, +#endif //P_FAMILY_OKIDOGI + +#if P_FAMILY_MUNKIDORI + [SPECIES_MUNKIDORI] = + { + .baseHP = 88, + .baseAttack = 75, + .baseDefense = 66, + .baseSpeed = 106, + .baseSpAttack = 130, + .baseSpDefense = 90, + .types = { TYPE_POISON, TYPE_PSYCHIC }, + .catchRate = 3, + .expYield = 278, + .evYield_SpAttack = 3, + .genderRatio = MON_MALE, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_TOXIC_CHAIN, ABILITY_NONE, ABILITY_FRISK }, + .bodyColor = BODY_COLOR_BLACK, + .isLegendary = TRUE, + .speciesName = _("Munkidori"), + .cryId = CRY_MUNKIDORI, + .natDexNum = NATIONAL_DEX_MUNKIDORI, + .categoryName = _("Retainer"), + .height = 10, + .weight = 122, + .description = COMPOUND_STRING( + "The chain is made from toxins that\n" + "enhance capabilities. It stimulated\n" + "Munkidori's brain and caused the\n" + "Pokémon's psychic powers to bloom."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Munkidori, 64, 64), + .frontPicYOffset = 5, + .frontAnimFrames = sAnims_Munkidori, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Munkidori, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Munkidori), + ICON(Munkidori, 0), + //.footprint = gMonFootprint_Munkidori, + LEARNSETS(Munkidori), + }, +#endif //P_FAMILY_MUNKIDORI + +#if P_FAMILY_FEZANDIPITI + [SPECIES_FEZANDIPITI] = + { + .baseHP = 88, + .baseAttack = 91, + .baseDefense = 82, + .baseSpeed = 99, + .baseSpAttack = 70, + .baseSpDefense = 125, + .types = { TYPE_POISON, TYPE_FAIRY }, + .catchRate = 3, + .expYield = 278, + .evYield_SpDefense = 3, + .genderRatio = MON_MALE, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_TOXIC_CHAIN, ABILITY_NONE, ABILITY_TECHNICIAN }, + .bodyColor = BODY_COLOR_BLACK, + .isLegendary = TRUE, + .speciesName = _("Fezndipiti"), + .cryId = CRY_FEZANDIPITI, + .natDexNum = NATIONAL_DEX_FEZANDIPITI, + .categoryName = _("Retainer"), + .height = 14, + .weight = 301, + .description = COMPOUND_STRING( + "Fezandipiti owes its beautiful looks and\n" + "lovely voice to the toxic stimulants\n" + "emanating from the chain wrapped around\n" + "its body."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + FRONT_PIC(Fezandipiti, 64, 64), + .frontPicYOffset = 2, + .frontAnimFrames = sAnims_Fezandipiti, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + BACK_PIC(Fezandipiti, 64, 64), + .backPicYOffset = 4, + //.backAnimId = BACK_ANIM_NONE, + PALETTES(Fezandipiti), + ICON(Fezandipiti, 0), + //.footprint = gMonFootprint_Fezandipiti, + LEARNSETS(Fezandipiti), + }, +#endif //P_FAMILY_FEZANDIPITI + +#if P_FAMILY_OGERPON +#define OGERPON_SPECIES_INFO(Form, type, ability, color, tera) \ + { \ + .baseHP = 80, \ + .baseAttack = 120, \ + .baseDefense = 84, \ + .baseSpeed = 110, \ + .baseSpAttack = 60, \ + .baseSpDefense = 96, \ + .types = { TYPE_GRASS, type }, \ + .catchRate = 5, \ + .expYield = 275, \ + .evYield_Attack = 3, \ + .genderRatio = MON_FEMALE, \ + .eggCycles = 10, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .abilities = { ability, ABILITY_NONE }, \ + .bodyColor = color, \ + .speciesName = _("Ogerpon"), \ + .cryId = CRY_OGERPON, \ + .natDexNum = NATIONAL_DEX_OGERPON, \ + .categoryName = _("Mask"), \ + .height = 12, \ + .weight = 398, \ + .description = gOgerpon##Form##PokedexText, \ + .pokemonScale = 356, \ + .pokemonOffset = 17, \ + .trainerScale = 256, \ + .trainerOffset = 0, \ + FRONT_PIC(Ogerpon##Form, 64, 64), \ + .frontPicYOffset = 0, \ + .frontAnimFrames = sAnims_Ogerpon, \ + BACK_PIC(Ogerpon##Form, 64, 64), \ + .backPicYOffset = 16, \ + .palette = gMonPalette_Ogerpon##Form, \ + ICON(OgerponTealMask, 1), \ + LEARNSETS(Ogerpon), \ + .formSpeciesIdTable = sOgerponFormSpeciesIdTable, \ + .formChangeTable = sOgerponFormChangeTable, \ + .isLegendary = TRUE, \ + } + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //.backAnimId = BACK_ANIM_NONE, + //.shinyPalette = gMonShinyPalette_OgerponTealMask, + //ICON(Ogerpon##Form##, 1), + //.footprint = gMonFootprint_Ogerpon, + + [SPECIES_OGERPON_TEAL_MASK] = OGERPON_SPECIES_INFO(TealMask, TYPE_GRASS, ABILITY_DEFIANT, BODY_COLOR_GREEN, FALSE), + [SPECIES_OGERPON_WELLSPRING_MASK] = OGERPON_SPECIES_INFO(WellspringMask, TYPE_WATER, ABILITY_WATER_ABSORB, BODY_COLOR_BLUE, FALSE), + [SPECIES_OGERPON_HEARTHFLAME_MASK] = OGERPON_SPECIES_INFO(HearthflameMask, TYPE_FIRE, ABILITY_MOLD_BREAKER, BODY_COLOR_RED, FALSE), + [SPECIES_OGERPON_CORNERSTONE_MASK] = OGERPON_SPECIES_INFO(CornerstoneMask, TYPE_ROCK, ABILITY_STURDY, BODY_COLOR_GRAY, FALSE), +#if P_TERA_FORMS + [SPECIES_OGERPON_TEAL_MASK_TERA] = OGERPON_SPECIES_INFO(TealMask, TYPE_GRASS, ABILITY_EMBODY_ASPECT_TEAL, BODY_COLOR_GREEN, TRUE), + [SPECIES_OGERPON_WELLSPRING_MASK_TERA] = OGERPON_SPECIES_INFO(WellspringMask, TYPE_WATER, ABILITY_EMBODY_ASPECT_WELLSPRING, BODY_COLOR_BLUE, TRUE), + [SPECIES_OGERPON_HEARTHFLAME_MASK_TERA] = OGERPON_SPECIES_INFO(HearthflameMask, TYPE_FIRE, ABILITY_EMBODY_ASPECT_HEARTHFLAME, BODY_COLOR_RED, TRUE), + [SPECIES_OGERPON_CORNERSTONE_MASK_TERA] = OGERPON_SPECIES_INFO(CornerstoneMask, TYPE_ROCK, ABILITY_EMBODY_ASPECT_CORNERSTONE, BODY_COLOR_GRAY, TRUE), +#endif //P_TERA_FORMS + +#endif //P_FAMILY_OGERPON + +#ifdef __INTELLISENSE__ +}; +#endif \ No newline at end of file diff --git a/src/data/pokemon/teachable_learnset_pointers.h b/src/data/pokemon/teachable_learnset_pointers.h deleted file mode 100644 index f8faf62d8f..0000000000 --- a/src/data/pokemon/teachable_learnset_pointers.h +++ /dev/null @@ -1,1339 +0,0 @@ -const u16 *const gTeachableLearnsets[NUM_SPECIES] = -{ - [SPECIES_NONE] = sBulbasaurTeachableLearnset, - [SPECIES_BULBASAUR] = sBulbasaurTeachableLearnset, - [SPECIES_IVYSAUR] = sIvysaurTeachableLearnset, - [SPECIES_VENUSAUR] = sVenusaurTeachableLearnset, - [SPECIES_CHARMANDER] = sCharmanderTeachableLearnset, - [SPECIES_CHARMELEON] = sCharmeleonTeachableLearnset, - [SPECIES_CHARIZARD] = sCharizardTeachableLearnset, - [SPECIES_SQUIRTLE] = sSquirtleTeachableLearnset, - [SPECIES_WARTORTLE] = sWartortleTeachableLearnset, - [SPECIES_BLASTOISE] = sBlastoiseTeachableLearnset, - [SPECIES_CATERPIE] = sCaterpieTeachableLearnset, - [SPECIES_METAPOD] = sMetapodTeachableLearnset, - [SPECIES_BUTTERFREE] = sButterfreeTeachableLearnset, - [SPECIES_WEEDLE] = sWeedleTeachableLearnset, - [SPECIES_KAKUNA] = sKakunaTeachableLearnset, - [SPECIES_BEEDRILL] = sBeedrillTeachableLearnset, - [SPECIES_PIDGEY] = sPidgeyTeachableLearnset, - [SPECIES_PIDGEOTTO] = sPidgeottoTeachableLearnset, - [SPECIES_PIDGEOT] = sPidgeotTeachableLearnset, - [SPECIES_RATTATA] = sRattataTeachableLearnset, - [SPECIES_RATICATE] = sRaticateTeachableLearnset, - [SPECIES_SPEAROW] = sSpearowTeachableLearnset, - [SPECIES_FEAROW] = sFearowTeachableLearnset, - [SPECIES_EKANS] = sEkansTeachableLearnset, - [SPECIES_ARBOK] = sArbokTeachableLearnset, - [SPECIES_PIKACHU] = sPikachuTeachableLearnset, - [SPECIES_RAICHU] = sRaichuTeachableLearnset, - [SPECIES_SANDSHREW] = sSandshrewTeachableLearnset, - [SPECIES_SANDSLASH] = sSandslashTeachableLearnset, - [SPECIES_NIDORAN_F] = sNidoranFTeachableLearnset, - [SPECIES_NIDORINA] = sNidorinaTeachableLearnset, - [SPECIES_NIDOQUEEN] = sNidoqueenTeachableLearnset, - [SPECIES_NIDORAN_M] = sNidoranMTeachableLearnset, - [SPECIES_NIDORINO] = sNidorinoTeachableLearnset, - [SPECIES_NIDOKING] = sNidokingTeachableLearnset, - [SPECIES_CLEFAIRY] = sClefairyTeachableLearnset, - [SPECIES_CLEFABLE] = sClefableTeachableLearnset, - [SPECIES_VULPIX] = sVulpixTeachableLearnset, - [SPECIES_NINETALES] = sNinetalesTeachableLearnset, - [SPECIES_JIGGLYPUFF] = sJigglypuffTeachableLearnset, - [SPECIES_WIGGLYTUFF] = sWigglytuffTeachableLearnset, - [SPECIES_ZUBAT] = sZubatTeachableLearnset, - [SPECIES_GOLBAT] = sGolbatTeachableLearnset, - [SPECIES_ODDISH] = sOddishTeachableLearnset, - [SPECIES_GLOOM] = sGloomTeachableLearnset, - [SPECIES_VILEPLUME] = sVileplumeTeachableLearnset, - [SPECIES_PARAS] = sParasTeachableLearnset, - [SPECIES_PARASECT] = sParasectTeachableLearnset, - [SPECIES_VENONAT] = sVenonatTeachableLearnset, - [SPECIES_VENOMOTH] = sVenomothTeachableLearnset, - [SPECIES_DIGLETT] = sDiglettTeachableLearnset, - [SPECIES_DUGTRIO] = sDugtrioTeachableLearnset, - [SPECIES_MEOWTH] = sMeowthTeachableLearnset, - [SPECIES_PERSIAN] = sPersianTeachableLearnset, - [SPECIES_PSYDUCK] = sPsyduckTeachableLearnset, - [SPECIES_GOLDUCK] = sGolduckTeachableLearnset, - [SPECIES_MANKEY] = sMankeyTeachableLearnset, - [SPECIES_PRIMEAPE] = sPrimeapeTeachableLearnset, - [SPECIES_GROWLITHE] = sGrowlitheTeachableLearnset, - [SPECIES_ARCANINE] = sArcanineTeachableLearnset, - [SPECIES_POLIWAG] = sPoliwagTeachableLearnset, - [SPECIES_POLIWHIRL] = sPoliwhirlTeachableLearnset, - [SPECIES_POLIWRATH] = sPoliwrathTeachableLearnset, - [SPECIES_ABRA] = sAbraTeachableLearnset, - [SPECIES_KADABRA] = sKadabraTeachableLearnset, - [SPECIES_ALAKAZAM] = sAlakazamTeachableLearnset, - [SPECIES_MACHOP] = sMachopTeachableLearnset, - [SPECIES_MACHOKE] = sMachokeTeachableLearnset, - [SPECIES_MACHAMP] = sMachampTeachableLearnset, - [SPECIES_BELLSPROUT] = sBellsproutTeachableLearnset, - [SPECIES_WEEPINBELL] = sWeepinbellTeachableLearnset, - [SPECIES_VICTREEBEL] = sVictreebelTeachableLearnset, - [SPECIES_TENTACOOL] = sTentacoolTeachableLearnset, - [SPECIES_TENTACRUEL] = sTentacruelTeachableLearnset, - [SPECIES_GEODUDE] = sGeodudeTeachableLearnset, - [SPECIES_GRAVELER] = sGravelerTeachableLearnset, - [SPECIES_GOLEM] = sGolemTeachableLearnset, - [SPECIES_PONYTA] = sPonytaTeachableLearnset, - [SPECIES_RAPIDASH] = sRapidashTeachableLearnset, - [SPECIES_SLOWPOKE] = sSlowpokeTeachableLearnset, - [SPECIES_SLOWBRO] = sSlowbroTeachableLearnset, - [SPECIES_MAGNEMITE] = sMagnemiteTeachableLearnset, - [SPECIES_MAGNETON] = sMagnetonTeachableLearnset, - [SPECIES_FARFETCHD] = sFarfetchdTeachableLearnset, - [SPECIES_DODUO] = sDoduoTeachableLearnset, - [SPECIES_DODRIO] = sDodrioTeachableLearnset, - [SPECIES_SEEL] = sSeelTeachableLearnset, - [SPECIES_DEWGONG] = sDewgongTeachableLearnset, - [SPECIES_GRIMER] = sGrimerTeachableLearnset, - [SPECIES_MUK] = sMukTeachableLearnset, - [SPECIES_SHELLDER] = sShellderTeachableLearnset, - [SPECIES_CLOYSTER] = sCloysterTeachableLearnset, - [SPECIES_GASTLY] = sGastlyTeachableLearnset, - [SPECIES_HAUNTER] = sHaunterTeachableLearnset, - [SPECIES_GENGAR] = sGengarTeachableLearnset, - [SPECIES_ONIX] = sOnixTeachableLearnset, - [SPECIES_DROWZEE] = sDrowzeeTeachableLearnset, - [SPECIES_HYPNO] = sHypnoTeachableLearnset, - [SPECIES_KRABBY] = sKrabbyTeachableLearnset, - [SPECIES_KINGLER] = sKinglerTeachableLearnset, - [SPECIES_VOLTORB] = sVoltorbTeachableLearnset, - [SPECIES_ELECTRODE] = sElectrodeTeachableLearnset, - [SPECIES_EXEGGCUTE] = sExeggcuteTeachableLearnset, - [SPECIES_EXEGGUTOR] = sExeggutorTeachableLearnset, - [SPECIES_CUBONE] = sCuboneTeachableLearnset, - [SPECIES_MAROWAK] = sMarowakTeachableLearnset, - [SPECIES_HITMONLEE] = sHitmonleeTeachableLearnset, - [SPECIES_HITMONCHAN] = sHitmonchanTeachableLearnset, - [SPECIES_LICKITUNG] = sLickitungTeachableLearnset, - [SPECIES_KOFFING] = sKoffingTeachableLearnset, - [SPECIES_WEEZING] = sWeezingTeachableLearnset, - [SPECIES_RHYHORN] = sRhyhornTeachableLearnset, - [SPECIES_RHYDON] = sRhydonTeachableLearnset, - [SPECIES_CHANSEY] = sChanseyTeachableLearnset, - [SPECIES_TANGELA] = sTangelaTeachableLearnset, - [SPECIES_KANGASKHAN] = sKangaskhanTeachableLearnset, - [SPECIES_HORSEA] = sHorseaTeachableLearnset, - [SPECIES_SEADRA] = sSeadraTeachableLearnset, - [SPECIES_GOLDEEN] = sGoldeenTeachableLearnset, - [SPECIES_SEAKING] = sSeakingTeachableLearnset, - [SPECIES_STARYU] = sStaryuTeachableLearnset, - [SPECIES_STARMIE] = sStarmieTeachableLearnset, - [SPECIES_MR_MIME] = sMrMimeTeachableLearnset, - [SPECIES_SCYTHER] = sScytherTeachableLearnset, - [SPECIES_JYNX] = sJynxTeachableLearnset, - [SPECIES_ELECTABUZZ] = sElectabuzzTeachableLearnset, - [SPECIES_MAGMAR] = sMagmarTeachableLearnset, - [SPECIES_PINSIR] = sPinsirTeachableLearnset, - [SPECIES_TAUROS] = sTaurosTeachableLearnset, - [SPECIES_MAGIKARP] = sMagikarpTeachableLearnset, - [SPECIES_GYARADOS] = sGyaradosTeachableLearnset, - [SPECIES_LAPRAS] = sLaprasTeachableLearnset, - [SPECIES_DITTO] = sDittoTeachableLearnset, - [SPECIES_EEVEE] = sEeveeTeachableLearnset, - [SPECIES_VAPOREON] = sVaporeonTeachableLearnset, - [SPECIES_JOLTEON] = sJolteonTeachableLearnset, - [SPECIES_FLAREON] = sFlareonTeachableLearnset, - [SPECIES_PORYGON] = sPorygonTeachableLearnset, - [SPECIES_OMANYTE] = sOmanyteTeachableLearnset, - [SPECIES_OMASTAR] = sOmastarTeachableLearnset, - [SPECIES_KABUTO] = sKabutoTeachableLearnset, - [SPECIES_KABUTOPS] = sKabutopsTeachableLearnset, - [SPECIES_AERODACTYL] = sAerodactylTeachableLearnset, - [SPECIES_SNORLAX] = sSnorlaxTeachableLearnset, - [SPECIES_ARTICUNO] = sArticunoTeachableLearnset, - [SPECIES_ZAPDOS] = sZapdosTeachableLearnset, - [SPECIES_MOLTRES] = sMoltresTeachableLearnset, - [SPECIES_DRATINI] = sDratiniTeachableLearnset, - [SPECIES_DRAGONAIR] = sDragonairTeachableLearnset, - [SPECIES_DRAGONITE] = sDragoniteTeachableLearnset, - [SPECIES_MEWTWO] = sMewtwoTeachableLearnset, - [SPECIES_MEW] = sMewTeachableLearnset, - [SPECIES_CHIKORITA] = sChikoritaTeachableLearnset, - [SPECIES_BAYLEEF] = sBayleefTeachableLearnset, - [SPECIES_MEGANIUM] = sMeganiumTeachableLearnset, - [SPECIES_CYNDAQUIL] = sCyndaquilTeachableLearnset, - [SPECIES_QUILAVA] = sQuilavaTeachableLearnset, - [SPECIES_TYPHLOSION] = sTyphlosionTeachableLearnset, - [SPECIES_TOTODILE] = sTotodileTeachableLearnset, - [SPECIES_CROCONAW] = sCroconawTeachableLearnset, - [SPECIES_FERALIGATR] = sFeraligatrTeachableLearnset, - [SPECIES_SENTRET] = sSentretTeachableLearnset, - [SPECIES_FURRET] = sFurretTeachableLearnset, - [SPECIES_HOOTHOOT] = sHoothootTeachableLearnset, - [SPECIES_NOCTOWL] = sNoctowlTeachableLearnset, - [SPECIES_LEDYBA] = sLedybaTeachableLearnset, - [SPECIES_LEDIAN] = sLedianTeachableLearnset, - [SPECIES_SPINARAK] = sSpinarakTeachableLearnset, - [SPECIES_ARIADOS] = sAriadosTeachableLearnset, - [SPECIES_CROBAT] = sCrobatTeachableLearnset, - [SPECIES_CHINCHOU] = sChinchouTeachableLearnset, - [SPECIES_LANTURN] = sLanturnTeachableLearnset, - [SPECIES_PICHU] = sPichuTeachableLearnset, - [SPECIES_CLEFFA] = sCleffaTeachableLearnset, - [SPECIES_IGGLYBUFF] = sIgglybuffTeachableLearnset, - [SPECIES_TOGEPI] = sTogepiTeachableLearnset, - [SPECIES_TOGETIC] = sTogeticTeachableLearnset, - [SPECIES_NATU] = sNatuTeachableLearnset, - [SPECIES_XATU] = sXatuTeachableLearnset, - [SPECIES_MAREEP] = sMareepTeachableLearnset, - [SPECIES_FLAAFFY] = sFlaaffyTeachableLearnset, - [SPECIES_AMPHAROS] = sAmpharosTeachableLearnset, - [SPECIES_BELLOSSOM] = sBellossomTeachableLearnset, - [SPECIES_MARILL] = sMarillTeachableLearnset, - [SPECIES_AZUMARILL] = sAzumarillTeachableLearnset, - [SPECIES_SUDOWOODO] = sSudowoodoTeachableLearnset, - [SPECIES_POLITOED] = sPolitoedTeachableLearnset, - [SPECIES_HOPPIP] = sHoppipTeachableLearnset, - [SPECIES_SKIPLOOM] = sSkiploomTeachableLearnset, - [SPECIES_JUMPLUFF] = sJumpluffTeachableLearnset, - [SPECIES_AIPOM] = sAipomTeachableLearnset, - [SPECIES_SUNKERN] = sSunkernTeachableLearnset, - [SPECIES_SUNFLORA] = sSunfloraTeachableLearnset, - [SPECIES_YANMA] = sYanmaTeachableLearnset, - [SPECIES_WOOPER] = sWooperTeachableLearnset, - [SPECIES_QUAGSIRE] = sQuagsireTeachableLearnset, - [SPECIES_ESPEON] = sEspeonTeachableLearnset, - [SPECIES_UMBREON] = sUmbreonTeachableLearnset, - [SPECIES_MURKROW] = sMurkrowTeachableLearnset, - [SPECIES_SLOWKING] = sSlowkingTeachableLearnset, - [SPECIES_MISDREAVUS] = sMisdreavusTeachableLearnset, - [SPECIES_UNOWN] = sUnownTeachableLearnset, - [SPECIES_WOBBUFFET] = sWobbuffetTeachableLearnset, - [SPECIES_GIRAFARIG] = sGirafarigTeachableLearnset, - [SPECIES_PINECO] = sPinecoTeachableLearnset, - [SPECIES_FORRETRESS] = sForretressTeachableLearnset, - [SPECIES_DUNSPARCE] = sDunsparceTeachableLearnset, - [SPECIES_GLIGAR] = sGligarTeachableLearnset, - [SPECIES_STEELIX] = sSteelixTeachableLearnset, - [SPECIES_SNUBBULL] = sSnubbullTeachableLearnset, - [SPECIES_GRANBULL] = sGranbullTeachableLearnset, - [SPECIES_QWILFISH] = sQwilfishTeachableLearnset, - [SPECIES_SCIZOR] = sScizorTeachableLearnset, - [SPECIES_SHUCKLE] = sShuckleTeachableLearnset, - [SPECIES_HERACROSS] = sHeracrossTeachableLearnset, - [SPECIES_SNEASEL] = sSneaselTeachableLearnset, - [SPECIES_TEDDIURSA] = sTeddiursaTeachableLearnset, - [SPECIES_URSARING] = sUrsaringTeachableLearnset, - [SPECIES_SLUGMA] = sSlugmaTeachableLearnset, - [SPECIES_MAGCARGO] = sMagcargoTeachableLearnset, - [SPECIES_SWINUB] = sSwinubTeachableLearnset, - [SPECIES_PILOSWINE] = sPiloswineTeachableLearnset, - [SPECIES_CORSOLA] = sCorsolaTeachableLearnset, - [SPECIES_REMORAID] = sRemoraidTeachableLearnset, - [SPECIES_OCTILLERY] = sOctilleryTeachableLearnset, - [SPECIES_DELIBIRD] = sDelibirdTeachableLearnset, - [SPECIES_MANTINE] = sMantineTeachableLearnset, - [SPECIES_SKARMORY] = sSkarmoryTeachableLearnset, - [SPECIES_HOUNDOUR] = sHoundourTeachableLearnset, - [SPECIES_HOUNDOOM] = sHoundoomTeachableLearnset, - [SPECIES_KINGDRA] = sKingdraTeachableLearnset, - [SPECIES_PHANPY] = sPhanpyTeachableLearnset, - [SPECIES_DONPHAN] = sDonphanTeachableLearnset, - [SPECIES_PORYGON2] = sPorygon2TeachableLearnset, - [SPECIES_STANTLER] = sStantlerTeachableLearnset, - [SPECIES_SMEARGLE] = sSmeargleTeachableLearnset, - [SPECIES_TYROGUE] = sTyrogueTeachableLearnset, - [SPECIES_HITMONTOP] = sHitmontopTeachableLearnset, - [SPECIES_SMOOCHUM] = sSmoochumTeachableLearnset, - [SPECIES_ELEKID] = sElekidTeachableLearnset, - [SPECIES_MAGBY] = sMagbyTeachableLearnset, - [SPECIES_MILTANK] = sMiltankTeachableLearnset, - [SPECIES_BLISSEY] = sBlisseyTeachableLearnset, - [SPECIES_RAIKOU] = sRaikouTeachableLearnset, - [SPECIES_ENTEI] = sEnteiTeachableLearnset, - [SPECIES_SUICUNE] = sSuicuneTeachableLearnset, - [SPECIES_LARVITAR] = sLarvitarTeachableLearnset, - [SPECIES_PUPITAR] = sPupitarTeachableLearnset, - [SPECIES_TYRANITAR] = sTyranitarTeachableLearnset, - [SPECIES_LUGIA] = sLugiaTeachableLearnset, - [SPECIES_HO_OH] = sHoOhTeachableLearnset, - [SPECIES_CELEBI] = sCelebiTeachableLearnset, - [SPECIES_TREECKO] = sTreeckoTeachableLearnset, - [SPECIES_GROVYLE] = sGrovyleTeachableLearnset, - [SPECIES_SCEPTILE] = sSceptileTeachableLearnset, - [SPECIES_TORCHIC] = sTorchicTeachableLearnset, - [SPECIES_COMBUSKEN] = sCombuskenTeachableLearnset, - [SPECIES_BLAZIKEN] = sBlazikenTeachableLearnset, - [SPECIES_MUDKIP] = sMudkipTeachableLearnset, - [SPECIES_MARSHTOMP] = sMarshtompTeachableLearnset, - [SPECIES_SWAMPERT] = sSwampertTeachableLearnset, - [SPECIES_POOCHYENA] = sPoochyenaTeachableLearnset, - [SPECIES_MIGHTYENA] = sMightyenaTeachableLearnset, - [SPECIES_ZIGZAGOON] = sZigzagoonTeachableLearnset, - [SPECIES_LINOONE] = sLinooneTeachableLearnset, - [SPECIES_WURMPLE] = sWurmpleTeachableLearnset, - [SPECIES_SILCOON] = sSilcoonTeachableLearnset, - [SPECIES_BEAUTIFLY] = sBeautiflyTeachableLearnset, - [SPECIES_CASCOON] = sCascoonTeachableLearnset, - [SPECIES_DUSTOX] = sDustoxTeachableLearnset, - [SPECIES_LOTAD] = sLotadTeachableLearnset, - [SPECIES_LOMBRE] = sLombreTeachableLearnset, - [SPECIES_LUDICOLO] = sLudicoloTeachableLearnset, - [SPECIES_SEEDOT] = sSeedotTeachableLearnset, - [SPECIES_NUZLEAF] = sNuzleafTeachableLearnset, - [SPECIES_SHIFTRY] = sShiftryTeachableLearnset, - [SPECIES_NINCADA] = sNincadaTeachableLearnset, - [SPECIES_NINJASK] = sNinjaskTeachableLearnset, - [SPECIES_SHEDINJA] = sShedinjaTeachableLearnset, - [SPECIES_TAILLOW] = sTaillowTeachableLearnset, - [SPECIES_SWELLOW] = sSwellowTeachableLearnset, - [SPECIES_SHROOMISH] = sShroomishTeachableLearnset, - [SPECIES_BRELOOM] = sBreloomTeachableLearnset, - [SPECIES_SPINDA] = sSpindaTeachableLearnset, - [SPECIES_WINGULL] = sWingullTeachableLearnset, - [SPECIES_PELIPPER] = sPelipperTeachableLearnset, - [SPECIES_SURSKIT] = sSurskitTeachableLearnset, - [SPECIES_MASQUERAIN] = sMasquerainTeachableLearnset, - [SPECIES_WAILMER] = sWailmerTeachableLearnset, - [SPECIES_WAILORD] = sWailordTeachableLearnset, - [SPECIES_SKITTY] = sSkittyTeachableLearnset, - [SPECIES_DELCATTY] = sDelcattyTeachableLearnset, - [SPECIES_KECLEON] = sKecleonTeachableLearnset, - [SPECIES_BALTOY] = sBaltoyTeachableLearnset, - [SPECIES_CLAYDOL] = sClaydolTeachableLearnset, - [SPECIES_NOSEPASS] = sNosepassTeachableLearnset, - [SPECIES_TORKOAL] = sTorkoalTeachableLearnset, - [SPECIES_SABLEYE] = sSableyeTeachableLearnset, - [SPECIES_BARBOACH] = sBarboachTeachableLearnset, - [SPECIES_WHISCASH] = sWhiscashTeachableLearnset, - [SPECIES_LUVDISC] = sLuvdiscTeachableLearnset, - [SPECIES_CORPHISH] = sCorphishTeachableLearnset, - [SPECIES_CRAWDAUNT] = sCrawdauntTeachableLearnset, - [SPECIES_FEEBAS] = sFeebasTeachableLearnset, - [SPECIES_MILOTIC] = sMiloticTeachableLearnset, - [SPECIES_CARVANHA] = sCarvanhaTeachableLearnset, - [SPECIES_SHARPEDO] = sSharpedoTeachableLearnset, - [SPECIES_TRAPINCH] = sTrapinchTeachableLearnset, - [SPECIES_VIBRAVA] = sVibravaTeachableLearnset, - [SPECIES_FLYGON] = sFlygonTeachableLearnset, - [SPECIES_MAKUHITA] = sMakuhitaTeachableLearnset, - [SPECIES_HARIYAMA] = sHariyamaTeachableLearnset, - [SPECIES_ELECTRIKE] = sElectrikeTeachableLearnset, - [SPECIES_MANECTRIC] = sManectricTeachableLearnset, - [SPECIES_NUMEL] = sNumelTeachableLearnset, - [SPECIES_CAMERUPT] = sCameruptTeachableLearnset, - [SPECIES_SPHEAL] = sSphealTeachableLearnset, - [SPECIES_SEALEO] = sSealeoTeachableLearnset, - [SPECIES_WALREIN] = sWalreinTeachableLearnset, - [SPECIES_CACNEA] = sCacneaTeachableLearnset, - [SPECIES_CACTURNE] = sCacturneTeachableLearnset, - [SPECIES_SNORUNT] = sSnoruntTeachableLearnset, - [SPECIES_GLALIE] = sGlalieTeachableLearnset, - [SPECIES_LUNATONE] = sLunatoneTeachableLearnset, - [SPECIES_SOLROCK] = sSolrockTeachableLearnset, - [SPECIES_AZURILL] = sAzurillTeachableLearnset, - [SPECIES_SPOINK] = sSpoinkTeachableLearnset, - [SPECIES_GRUMPIG] = sGrumpigTeachableLearnset, - [SPECIES_PLUSLE] = sPlusleTeachableLearnset, - [SPECIES_MINUN] = sMinunTeachableLearnset, - [SPECIES_MAWILE] = sMawileTeachableLearnset, - [SPECIES_MEDITITE] = sMedititeTeachableLearnset, - [SPECIES_MEDICHAM] = sMedichamTeachableLearnset, - [SPECIES_SWABLU] = sSwabluTeachableLearnset, - [SPECIES_ALTARIA] = sAltariaTeachableLearnset, - [SPECIES_WYNAUT] = sWynautTeachableLearnset, - [SPECIES_DUSKULL] = sDuskullTeachableLearnset, - [SPECIES_DUSCLOPS] = sDusclopsTeachableLearnset, - [SPECIES_ROSELIA] = sRoseliaTeachableLearnset, - [SPECIES_SLAKOTH] = sSlakothTeachableLearnset, - [SPECIES_VIGOROTH] = sVigorothTeachableLearnset, - [SPECIES_SLAKING] = sSlakingTeachableLearnset, - [SPECIES_GULPIN] = sGulpinTeachableLearnset, - [SPECIES_SWALOT] = sSwalotTeachableLearnset, - [SPECIES_TROPIUS] = sTropiusTeachableLearnset, - [SPECIES_WHISMUR] = sWhismurTeachableLearnset, - [SPECIES_LOUDRED] = sLoudredTeachableLearnset, - [SPECIES_EXPLOUD] = sExploudTeachableLearnset, - [SPECIES_CLAMPERL] = sClamperlTeachableLearnset, - [SPECIES_HUNTAIL] = sHuntailTeachableLearnset, - [SPECIES_GOREBYSS] = sGorebyssTeachableLearnset, - [SPECIES_ABSOL] = sAbsolTeachableLearnset, - [SPECIES_SHUPPET] = sShuppetTeachableLearnset, - [SPECIES_BANETTE] = sBanetteTeachableLearnset, - [SPECIES_SEVIPER] = sSeviperTeachableLearnset, - [SPECIES_ZANGOOSE] = sZangooseTeachableLearnset, - [SPECIES_RELICANTH] = sRelicanthTeachableLearnset, - [SPECIES_ARON] = sAronTeachableLearnset, - [SPECIES_LAIRON] = sLaironTeachableLearnset, - [SPECIES_AGGRON] = sAggronTeachableLearnset, - [SPECIES_CASTFORM] = sCastformTeachableLearnset, - [SPECIES_VOLBEAT] = sVolbeatTeachableLearnset, - [SPECIES_ILLUMISE] = sIllumiseTeachableLearnset, - [SPECIES_LILEEP] = sLileepTeachableLearnset, - [SPECIES_CRADILY] = sCradilyTeachableLearnset, - [SPECIES_ANORITH] = sAnorithTeachableLearnset, - [SPECIES_ARMALDO] = sArmaldoTeachableLearnset, - [SPECIES_RALTS] = sRaltsTeachableLearnset, - [SPECIES_KIRLIA] = sKirliaTeachableLearnset, - [SPECIES_GARDEVOIR] = sGardevoirTeachableLearnset, - [SPECIES_BAGON] = sBagonTeachableLearnset, - [SPECIES_SHELGON] = sShelgonTeachableLearnset, - [SPECIES_SALAMENCE] = sSalamenceTeachableLearnset, - [SPECIES_BELDUM] = sBeldumTeachableLearnset, - [SPECIES_METANG] = sMetangTeachableLearnset, - [SPECIES_METAGROSS] = sMetagrossTeachableLearnset, - [SPECIES_REGIROCK] = sRegirockTeachableLearnset, - [SPECIES_REGICE] = sRegiceTeachableLearnset, - [SPECIES_REGISTEEL] = sRegisteelTeachableLearnset, - [SPECIES_KYOGRE] = sKyogreTeachableLearnset, - [SPECIES_GROUDON] = sGroudonTeachableLearnset, - [SPECIES_RAYQUAZA] = sRayquazaTeachableLearnset, - [SPECIES_LATIAS] = sLatiasTeachableLearnset, - [SPECIES_LATIOS] = sLatiosTeachableLearnset, - [SPECIES_JIRACHI] = sJirachiTeachableLearnset, - [SPECIES_DEOXYS] = sDeoxysTeachableLearnset, - [SPECIES_CHIMECHO] = sChimechoTeachableLearnset, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_TURTWIG] = sTurtwigTeachableLearnset, - [SPECIES_GROTLE] = sGrotleTeachableLearnset, - [SPECIES_TORTERRA] = sTorterraTeachableLearnset, - [SPECIES_CHIMCHAR] = sChimcharTeachableLearnset, - [SPECIES_MONFERNO] = sMonfernoTeachableLearnset, - [SPECIES_INFERNAPE] = sInfernapeTeachableLearnset, - [SPECIES_PIPLUP] = sPiplupTeachableLearnset, - [SPECIES_PRINPLUP] = sPrinplupTeachableLearnset, - [SPECIES_EMPOLEON] = sEmpoleonTeachableLearnset, - [SPECIES_STARLY] = sStarlyTeachableLearnset, - [SPECIES_STARAVIA] = sStaraviaTeachableLearnset, - [SPECIES_STARAPTOR] = sStaraptorTeachableLearnset, - [SPECIES_BIDOOF] = sBidoofTeachableLearnset, - [SPECIES_BIBAREL] = sBibarelTeachableLearnset, - [SPECIES_KRICKETOT] = sKricketotTeachableLearnset, - [SPECIES_KRICKETUNE] = sKricketuneTeachableLearnset, - [SPECIES_SHINX] = sShinxTeachableLearnset, - [SPECIES_LUXIO] = sLuxioTeachableLearnset, - [SPECIES_LUXRAY] = sLuxrayTeachableLearnset, - [SPECIES_BUDEW] = sBudewTeachableLearnset, - [SPECIES_ROSERADE] = sRoseradeTeachableLearnset, - [SPECIES_CRANIDOS] = sCranidosTeachableLearnset, - [SPECIES_RAMPARDOS] = sRampardosTeachableLearnset, - [SPECIES_SHIELDON] = sShieldonTeachableLearnset, - [SPECIES_BASTIODON] = sBastiodonTeachableLearnset, - [SPECIES_BURMY] = sBurmyTeachableLearnset, - [SPECIES_WORMADAM] = sWormadamTeachableLearnset, - [SPECIES_MOTHIM] = sMothimTeachableLearnset, - [SPECIES_COMBEE] = sCombeeTeachableLearnset, - [SPECIES_VESPIQUEN] = sVespiquenTeachableLearnset, - [SPECIES_PACHIRISU] = sPachirisuTeachableLearnset, - [SPECIES_BUIZEL] = sBuizelTeachableLearnset, - [SPECIES_FLOATZEL] = sFloatzelTeachableLearnset, - [SPECIES_CHERUBI] = sCherubiTeachableLearnset, - [SPECIES_CHERRIM] = sCherrimTeachableLearnset, - [SPECIES_SHELLOS] = sShellosTeachableLearnset, - [SPECIES_GASTRODON] = sGastrodonTeachableLearnset, - [SPECIES_AMBIPOM] = sAmbipomTeachableLearnset, - [SPECIES_DRIFLOON] = sDrifloonTeachableLearnset, - [SPECIES_DRIFBLIM] = sDrifblimTeachableLearnset, - [SPECIES_BUNEARY] = sBunearyTeachableLearnset, - [SPECIES_LOPUNNY] = sLopunnyTeachableLearnset, - [SPECIES_MISMAGIUS] = sMismagiusTeachableLearnset, - [SPECIES_HONCHKROW] = sHonchkrowTeachableLearnset, - [SPECIES_GLAMEOW] = sGlameowTeachableLearnset, - [SPECIES_PURUGLY] = sPuruglyTeachableLearnset, - [SPECIES_CHINGLING] = sChinglingTeachableLearnset, - [SPECIES_STUNKY] = sStunkyTeachableLearnset, - [SPECIES_SKUNTANK] = sSkuntankTeachableLearnset, - [SPECIES_BRONZOR] = sBronzorTeachableLearnset, - [SPECIES_BRONZONG] = sBronzongTeachableLearnset, - [SPECIES_BONSLY] = sBonslyTeachableLearnset, - [SPECIES_MIME_JR] = sMimeJrTeachableLearnset, - [SPECIES_HAPPINY] = sHappinyTeachableLearnset, - [SPECIES_CHATOT] = sChatotTeachableLearnset, - [SPECIES_SPIRITOMB] = sSpiritombTeachableLearnset, - [SPECIES_GIBLE] = sGibleTeachableLearnset, - [SPECIES_GABITE] = sGabiteTeachableLearnset, - [SPECIES_GARCHOMP] = sGarchompTeachableLearnset, - [SPECIES_MUNCHLAX] = sMunchlaxTeachableLearnset, - [SPECIES_RIOLU] = sRioluTeachableLearnset, - [SPECIES_LUCARIO] = sLucarioTeachableLearnset, - [SPECIES_HIPPOPOTAS] = sHippopotasTeachableLearnset, - [SPECIES_HIPPOWDON] = sHippowdonTeachableLearnset, - [SPECIES_SKORUPI] = sSkorupiTeachableLearnset, - [SPECIES_DRAPION] = sDrapionTeachableLearnset, - [SPECIES_CROAGUNK] = sCroagunkTeachableLearnset, - [SPECIES_TOXICROAK] = sToxicroakTeachableLearnset, - [SPECIES_CARNIVINE] = sCarnivineTeachableLearnset, - [SPECIES_FINNEON] = sFinneonTeachableLearnset, - [SPECIES_LUMINEON] = sLumineonTeachableLearnset, - [SPECIES_MANTYKE] = sMantykeTeachableLearnset, - [SPECIES_SNOVER] = sSnoverTeachableLearnset, - [SPECIES_ABOMASNOW] = sAbomasnowTeachableLearnset, - [SPECIES_WEAVILE] = sWeavileTeachableLearnset, - [SPECIES_MAGNEZONE] = sMagnezoneTeachableLearnset, - [SPECIES_LICKILICKY] = sLickilickyTeachableLearnset, - [SPECIES_RHYPERIOR] = sRhyperiorTeachableLearnset, - [SPECIES_TANGROWTH] = sTangrowthTeachableLearnset, - [SPECIES_ELECTIVIRE] = sElectivireTeachableLearnset, - [SPECIES_MAGMORTAR] = sMagmortarTeachableLearnset, - [SPECIES_TOGEKISS] = sTogekissTeachableLearnset, - [SPECIES_YANMEGA] = sYanmegaTeachableLearnset, - [SPECIES_LEAFEON] = sLeafeonTeachableLearnset, - [SPECIES_GLACEON] = sGlaceonTeachableLearnset, - [SPECIES_GLISCOR] = sGliscorTeachableLearnset, - [SPECIES_MAMOSWINE] = sMamoswineTeachableLearnset, - [SPECIES_PORYGON_Z] = sPorygonZTeachableLearnset, - [SPECIES_GALLADE] = sGalladeTeachableLearnset, - [SPECIES_PROBOPASS] = sProbopassTeachableLearnset, - [SPECIES_DUSKNOIR] = sDusknoirTeachableLearnset, - [SPECIES_FROSLASS] = sFroslassTeachableLearnset, - [SPECIES_ROTOM] = sRotomTeachableLearnset, - [SPECIES_UXIE] = sUxieTeachableLearnset, - [SPECIES_MESPRIT] = sMespritTeachableLearnset, - [SPECIES_AZELF] = sAzelfTeachableLearnset, - [SPECIES_DIALGA] = sDialgaTeachableLearnset, - [SPECIES_PALKIA] = sPalkiaTeachableLearnset, - [SPECIES_HEATRAN] = sHeatranTeachableLearnset, - [SPECIES_REGIGIGAS] = sRegigigasTeachableLearnset, - [SPECIES_GIRATINA] = sGiratinaTeachableLearnset, - [SPECIES_CRESSELIA] = sCresseliaTeachableLearnset, - [SPECIES_PHIONE] = sPhioneTeachableLearnset, - [SPECIES_MANAPHY] = sManaphyTeachableLearnset, - [SPECIES_DARKRAI] = sDarkraiTeachableLearnset, - [SPECIES_SHAYMIN] = sShayminTeachableLearnset, - [SPECIES_ARCEUS] = sArceusTeachableLearnset, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_VICTINI] = sVictiniTeachableLearnset, - [SPECIES_SNIVY] = sSnivyTeachableLearnset, - [SPECIES_SERVINE] = sServineTeachableLearnset, - [SPECIES_SERPERIOR] = sSerperiorTeachableLearnset, - [SPECIES_TEPIG] = sTepigTeachableLearnset, - [SPECIES_PIGNITE] = sPigniteTeachableLearnset, - [SPECIES_EMBOAR] = sEmboarTeachableLearnset, - [SPECIES_OSHAWOTT] = sOshawottTeachableLearnset, - [SPECIES_DEWOTT] = sDewottTeachableLearnset, - [SPECIES_SAMUROTT] = sSamurottTeachableLearnset, - [SPECIES_PATRAT] = sPatratTeachableLearnset, - [SPECIES_WATCHOG] = sWatchogTeachableLearnset, - [SPECIES_LILLIPUP] = sLillipupTeachableLearnset, - [SPECIES_HERDIER] = sHerdierTeachableLearnset, - [SPECIES_STOUTLAND] = sStoutlandTeachableLearnset, - [SPECIES_PURRLOIN] = sPurrloinTeachableLearnset, - [SPECIES_LIEPARD] = sLiepardTeachableLearnset, - [SPECIES_PANSAGE] = sPansageTeachableLearnset, - [SPECIES_SIMISAGE] = sSimisageTeachableLearnset, - [SPECIES_PANSEAR] = sPansearTeachableLearnset, - [SPECIES_SIMISEAR] = sSimisearTeachableLearnset, - [SPECIES_PANPOUR] = sPanpourTeachableLearnset, - [SPECIES_SIMIPOUR] = sSimipourTeachableLearnset, - [SPECIES_MUNNA] = sMunnaTeachableLearnset, - [SPECIES_MUSHARNA] = sMusharnaTeachableLearnset, - [SPECIES_PIDOVE] = sPidoveTeachableLearnset, - [SPECIES_TRANQUILL] = sTranquillTeachableLearnset, - [SPECIES_UNFEZANT] = sUnfezantTeachableLearnset, - [SPECIES_BLITZLE] = sBlitzleTeachableLearnset, - [SPECIES_ZEBSTRIKA] = sZebstrikaTeachableLearnset, - [SPECIES_ROGGENROLA] = sRoggenrolaTeachableLearnset, - [SPECIES_BOLDORE] = sBoldoreTeachableLearnset, - [SPECIES_GIGALITH] = sGigalithTeachableLearnset, - [SPECIES_WOOBAT] = sWoobatTeachableLearnset, - [SPECIES_SWOOBAT] = sSwoobatTeachableLearnset, - [SPECIES_DRILBUR] = sDrilburTeachableLearnset, - [SPECIES_EXCADRILL] = sExcadrillTeachableLearnset, - [SPECIES_AUDINO] = sAudinoTeachableLearnset, - [SPECIES_TIMBURR] = sTimburrTeachableLearnset, - [SPECIES_GURDURR] = sGurdurrTeachableLearnset, - [SPECIES_CONKELDURR] = sConkeldurrTeachableLearnset, - [SPECIES_TYMPOLE] = sTympoleTeachableLearnset, - [SPECIES_PALPITOAD] = sPalpitoadTeachableLearnset, - [SPECIES_SEISMITOAD] = sSeismitoadTeachableLearnset, - [SPECIES_THROH] = sThrohTeachableLearnset, - [SPECIES_SAWK] = sSawkTeachableLearnset, - [SPECIES_SEWADDLE] = sSewaddleTeachableLearnset, - [SPECIES_SWADLOON] = sSwadloonTeachableLearnset, - [SPECIES_LEAVANNY] = sLeavannyTeachableLearnset, - [SPECIES_VENIPEDE] = sVenipedeTeachableLearnset, - [SPECIES_WHIRLIPEDE] = sWhirlipedeTeachableLearnset, - [SPECIES_SCOLIPEDE] = sScolipedeTeachableLearnset, - [SPECIES_COTTONEE] = sCottoneeTeachableLearnset, - [SPECIES_WHIMSICOTT] = sWhimsicottTeachableLearnset, - [SPECIES_PETILIL] = sPetililTeachableLearnset, - [SPECIES_LILLIGANT] = sLilligantTeachableLearnset, - [SPECIES_BASCULIN] = sBasculinTeachableLearnset, - [SPECIES_SANDILE] = sSandileTeachableLearnset, - [SPECIES_KROKOROK] = sKrokorokTeachableLearnset, - [SPECIES_KROOKODILE] = sKrookodileTeachableLearnset, - [SPECIES_DARUMAKA] = sDarumakaTeachableLearnset, - [SPECIES_DARMANITAN] = sDarmanitanTeachableLearnset, - [SPECIES_MARACTUS] = sMaractusTeachableLearnset, - [SPECIES_DWEBBLE] = sDwebbleTeachableLearnset, - [SPECIES_CRUSTLE] = sCrustleTeachableLearnset, - [SPECIES_SCRAGGY] = sScraggyTeachableLearnset, - [SPECIES_SCRAFTY] = sScraftyTeachableLearnset, - [SPECIES_SIGILYPH] = sSigilyphTeachableLearnset, - [SPECIES_YAMASK] = sYamaskTeachableLearnset, - [SPECIES_COFAGRIGUS] = sCofagrigusTeachableLearnset, - [SPECIES_TIRTOUGA] = sTirtougaTeachableLearnset, - [SPECIES_CARRACOSTA] = sCarracostaTeachableLearnset, - [SPECIES_ARCHEN] = sArchenTeachableLearnset, - [SPECIES_ARCHEOPS] = sArcheopsTeachableLearnset, - [SPECIES_TRUBBISH] = sTrubbishTeachableLearnset, - [SPECIES_GARBODOR] = sGarbodorTeachableLearnset, - [SPECIES_ZORUA] = sZoruaTeachableLearnset, - [SPECIES_ZOROARK] = sZoroarkTeachableLearnset, - [SPECIES_MINCCINO] = sMinccinoTeachableLearnset, - [SPECIES_CINCCINO] = sCinccinoTeachableLearnset, - [SPECIES_GOTHITA] = sGothitaTeachableLearnset, - [SPECIES_GOTHORITA] = sGothoritaTeachableLearnset, - [SPECIES_GOTHITELLE] = sGothitelleTeachableLearnset, - [SPECIES_SOLOSIS] = sSolosisTeachableLearnset, - [SPECIES_DUOSION] = sDuosionTeachableLearnset, - [SPECIES_REUNICLUS] = sReuniclusTeachableLearnset, - [SPECIES_DUCKLETT] = sDucklettTeachableLearnset, - [SPECIES_SWANNA] = sSwannaTeachableLearnset, - [SPECIES_VANILLITE] = sVanilliteTeachableLearnset, - [SPECIES_VANILLISH] = sVanillishTeachableLearnset, - [SPECIES_VANILLUXE] = sVanilluxeTeachableLearnset, - [SPECIES_DEERLING] = sDeerlingTeachableLearnset, - [SPECIES_SAWSBUCK] = sSawsbuckTeachableLearnset, - [SPECIES_EMOLGA] = sEmolgaTeachableLearnset, - [SPECIES_KARRABLAST] = sKarrablastTeachableLearnset, - [SPECIES_ESCAVALIER] = sEscavalierTeachableLearnset, - [SPECIES_FOONGUS] = sFoongusTeachableLearnset, - [SPECIES_AMOONGUSS] = sAmoongussTeachableLearnset, - [SPECIES_FRILLISH] = sFrillishTeachableLearnset, - [SPECIES_JELLICENT] = sJellicentTeachableLearnset, - [SPECIES_ALOMOMOLA] = sAlomomolaTeachableLearnset, - [SPECIES_JOLTIK] = sJoltikTeachableLearnset, - [SPECIES_GALVANTULA] = sGalvantulaTeachableLearnset, - [SPECIES_FERROSEED] = sFerroseedTeachableLearnset, - [SPECIES_FERROTHORN] = sFerrothornTeachableLearnset, - [SPECIES_KLINK] = sKlinkTeachableLearnset, - [SPECIES_KLANG] = sKlangTeachableLearnset, - [SPECIES_KLINKLANG] = sKlinklangTeachableLearnset, - [SPECIES_TYNAMO] = sTynamoTeachableLearnset, - [SPECIES_EELEKTRIK] = sEelektrikTeachableLearnset, - [SPECIES_EELEKTROSS] = sEelektrossTeachableLearnset, - [SPECIES_ELGYEM] = sElgyemTeachableLearnset, - [SPECIES_BEHEEYEM] = sBeheeyemTeachableLearnset, - [SPECIES_LITWICK] = sLitwickTeachableLearnset, - [SPECIES_LAMPENT] = sLampentTeachableLearnset, - [SPECIES_CHANDELURE] = sChandelureTeachableLearnset, - [SPECIES_AXEW] = sAxewTeachableLearnset, - [SPECIES_FRAXURE] = sFraxureTeachableLearnset, - [SPECIES_HAXORUS] = sHaxorusTeachableLearnset, - [SPECIES_CUBCHOO] = sCubchooTeachableLearnset, - [SPECIES_BEARTIC] = sBearticTeachableLearnset, - [SPECIES_CRYOGONAL] = sCryogonalTeachableLearnset, - [SPECIES_SHELMET] = sShelmetTeachableLearnset, - [SPECIES_ACCELGOR] = sAccelgorTeachableLearnset, - [SPECIES_STUNFISK] = sStunfiskTeachableLearnset, - [SPECIES_MIENFOO] = sMienfooTeachableLearnset, - [SPECIES_MIENSHAO] = sMienshaoTeachableLearnset, - [SPECIES_DRUDDIGON] = sDruddigonTeachableLearnset, - [SPECIES_GOLETT] = sGolettTeachableLearnset, - [SPECIES_GOLURK] = sGolurkTeachableLearnset, - [SPECIES_PAWNIARD] = sPawniardTeachableLearnset, - [SPECIES_BISHARP] = sBisharpTeachableLearnset, - [SPECIES_BOUFFALANT] = sBouffalantTeachableLearnset, - [SPECIES_RUFFLET] = sRuffletTeachableLearnset, - [SPECIES_BRAVIARY] = sBraviaryTeachableLearnset, - [SPECIES_VULLABY] = sVullabyTeachableLearnset, - [SPECIES_MANDIBUZZ] = sMandibuzzTeachableLearnset, - [SPECIES_HEATMOR] = sHeatmorTeachableLearnset, - [SPECIES_DURANT] = sDurantTeachableLearnset, - [SPECIES_DEINO] = sDeinoTeachableLearnset, - [SPECIES_ZWEILOUS] = sZweilousTeachableLearnset, - [SPECIES_HYDREIGON] = sHydreigonTeachableLearnset, - [SPECIES_LARVESTA] = sLarvestaTeachableLearnset, - [SPECIES_VOLCARONA] = sVolcaronaTeachableLearnset, - [SPECIES_COBALION] = sCobalionTeachableLearnset, - [SPECIES_TERRAKION] = sTerrakionTeachableLearnset, - [SPECIES_VIRIZION] = sVirizionTeachableLearnset, - [SPECIES_TORNADUS] = sTornadusTeachableLearnset, - [SPECIES_THUNDURUS] = sThundurusTeachableLearnset, - [SPECIES_RESHIRAM] = sReshiramTeachableLearnset, - [SPECIES_ZEKROM] = sZekromTeachableLearnset, - [SPECIES_LANDORUS] = sLandorusTeachableLearnset, - [SPECIES_KYUREM] = sKyuremTeachableLearnset, - [SPECIES_KELDEO] = sKeldeoTeachableLearnset, - [SPECIES_MELOETTA] = sMeloettaTeachableLearnset, - [SPECIES_GENESECT] = sGenesectTeachableLearnset, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_CHESPIN] = sChespinTeachableLearnset, - [SPECIES_QUILLADIN] = sQuilladinTeachableLearnset, - [SPECIES_CHESNAUGHT] = sChesnaughtTeachableLearnset, - [SPECIES_FENNEKIN] = sFennekinTeachableLearnset, - [SPECIES_BRAIXEN] = sBraixenTeachableLearnset, - [SPECIES_DELPHOX] = sDelphoxTeachableLearnset, - [SPECIES_FROAKIE] = sFroakieTeachableLearnset, - [SPECIES_FROGADIER] = sFrogadierTeachableLearnset, - [SPECIES_GRENINJA] = sGreninjaTeachableLearnset, - [SPECIES_BUNNELBY] = sBunnelbyTeachableLearnset, - [SPECIES_DIGGERSBY] = sDiggersbyTeachableLearnset, - [SPECIES_FLETCHLING] = sFletchlingTeachableLearnset, - [SPECIES_FLETCHINDER] = sFletchinderTeachableLearnset, - [SPECIES_TALONFLAME] = sTalonflameTeachableLearnset, - [SPECIES_SCATTERBUG] = sScatterbugTeachableLearnset, - [SPECIES_SPEWPA] = sSpewpaTeachableLearnset, - [SPECIES_VIVILLON] = sVivillonTeachableLearnset, - [SPECIES_LITLEO] = sLitleoTeachableLearnset, - [SPECIES_PYROAR] = sPyroarTeachableLearnset, - [SPECIES_FLABEBE] = sFlabebeTeachableLearnset, - [SPECIES_FLOETTE] = sFloetteTeachableLearnset, - [SPECIES_FLORGES] = sFlorgesTeachableLearnset, - [SPECIES_SKIDDO] = sSkiddoTeachableLearnset, - [SPECIES_GOGOAT] = sGogoatTeachableLearnset, - [SPECIES_PANCHAM] = sPanchamTeachableLearnset, - [SPECIES_PANGORO] = sPangoroTeachableLearnset, - [SPECIES_FURFROU] = sFurfrouTeachableLearnset, - [SPECIES_ESPURR] = sEspurrTeachableLearnset, - [SPECIES_MEOWSTIC] = sMeowsticTeachableLearnset, - [SPECIES_HONEDGE] = sHonedgeTeachableLearnset, - [SPECIES_DOUBLADE] = sDoubladeTeachableLearnset, - [SPECIES_AEGISLASH] = sAegislashTeachableLearnset, - [SPECIES_SPRITZEE] = sSpritzeeTeachableLearnset, - [SPECIES_AROMATISSE] = sAromatisseTeachableLearnset, - [SPECIES_SWIRLIX] = sSwirlixTeachableLearnset, - [SPECIES_SLURPUFF] = sSlurpuffTeachableLearnset, - [SPECIES_INKAY] = sInkayTeachableLearnset, - [SPECIES_MALAMAR] = sMalamarTeachableLearnset, - [SPECIES_BINACLE] = sBinacleTeachableLearnset, - [SPECIES_BARBARACLE] = sBarbaracleTeachableLearnset, - [SPECIES_SKRELP] = sSkrelpTeachableLearnset, - [SPECIES_DRAGALGE] = sDragalgeTeachableLearnset, - [SPECIES_CLAUNCHER] = sClauncherTeachableLearnset, - [SPECIES_CLAWITZER] = sClawitzerTeachableLearnset, - [SPECIES_HELIOPTILE] = sHelioptileTeachableLearnset, - [SPECIES_HELIOLISK] = sHelioliskTeachableLearnset, - [SPECIES_TYRUNT] = sTyruntTeachableLearnset, - [SPECIES_TYRANTRUM] = sTyrantrumTeachableLearnset, - [SPECIES_AMAURA] = sAmauraTeachableLearnset, - [SPECIES_AURORUS] = sAurorusTeachableLearnset, - [SPECIES_SYLVEON] = sSylveonTeachableLearnset, - [SPECIES_HAWLUCHA] = sHawluchaTeachableLearnset, - [SPECIES_DEDENNE] = sDedenneTeachableLearnset, - [SPECIES_CARBINK] = sCarbinkTeachableLearnset, - [SPECIES_GOOMY] = sGoomyTeachableLearnset, - [SPECIES_SLIGGOO] = sSliggooTeachableLearnset, - [SPECIES_GOODRA] = sGoodraTeachableLearnset, - [SPECIES_KLEFKI] = sKlefkiTeachableLearnset, - [SPECIES_PHANTUMP] = sPhantumpTeachableLearnset, - [SPECIES_TREVENANT] = sTrevenantTeachableLearnset, - [SPECIES_PUMPKABOO] = sPumpkabooTeachableLearnset, - [SPECIES_GOURGEIST] = sGourgeistTeachableLearnset, - [SPECIES_BERGMITE] = sBergmiteTeachableLearnset, - [SPECIES_AVALUGG] = sAvaluggTeachableLearnset, - [SPECIES_NOIBAT] = sNoibatTeachableLearnset, - [SPECIES_NOIVERN] = sNoivernTeachableLearnset, - [SPECIES_XERNEAS] = sXerneasTeachableLearnset, - [SPECIES_YVELTAL] = sYveltalTeachableLearnset, - [SPECIES_ZYGARDE] = sZygardeTeachableLearnset, - [SPECIES_DIANCIE] = sDiancieTeachableLearnset, - [SPECIES_HOOPA] = sHoopaTeachableLearnset, - [SPECIES_VOLCANION] = sVolcanionTeachableLearnset, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_ROWLET] = sRowletTeachableLearnset, - [SPECIES_DARTRIX] = sDartrixTeachableLearnset, - [SPECIES_DECIDUEYE] = sDecidueyeTeachableLearnset, - [SPECIES_LITTEN] = sLittenTeachableLearnset, - [SPECIES_TORRACAT] = sTorracatTeachableLearnset, - [SPECIES_INCINEROAR] = sIncineroarTeachableLearnset, - [SPECIES_POPPLIO] = sPopplioTeachableLearnset, - [SPECIES_BRIONNE] = sBrionneTeachableLearnset, - [SPECIES_PRIMARINA] = sPrimarinaTeachableLearnset, - [SPECIES_PIKIPEK] = sPikipekTeachableLearnset, - [SPECIES_TRUMBEAK] = sTrumbeakTeachableLearnset, - [SPECIES_TOUCANNON] = sToucannonTeachableLearnset, - [SPECIES_YUNGOOS] = sYungoosTeachableLearnset, - [SPECIES_GUMSHOOS] = sGumshoosTeachableLearnset, - [SPECIES_GRUBBIN] = sGrubbinTeachableLearnset, - [SPECIES_CHARJABUG] = sCharjabugTeachableLearnset, - [SPECIES_VIKAVOLT] = sVikavoltTeachableLearnset, - [SPECIES_CRABRAWLER] = sCrabrawlerTeachableLearnset, - [SPECIES_CRABOMINABLE] = sCrabominableTeachableLearnset, - [SPECIES_ORICORIO] = sOricorioTeachableLearnset, - [SPECIES_CUTIEFLY] = sCutieflyTeachableLearnset, - [SPECIES_RIBOMBEE] = sRibombeeTeachableLearnset, - [SPECIES_ROCKRUFF] = sRockruffTeachableLearnset, - [SPECIES_LYCANROC] = sLycanrocTeachableLearnset, - [SPECIES_WISHIWASHI] = sWishiwashiTeachableLearnset, - [SPECIES_MAREANIE] = sMareanieTeachableLearnset, - [SPECIES_TOXAPEX] = sToxapexTeachableLearnset, - [SPECIES_MUDBRAY] = sMudbrayTeachableLearnset, - [SPECIES_MUDSDALE] = sMudsdaleTeachableLearnset, - [SPECIES_DEWPIDER] = sDewpiderTeachableLearnset, - [SPECIES_ARAQUANID] = sAraquanidTeachableLearnset, - [SPECIES_FOMANTIS] = sFomantisTeachableLearnset, - [SPECIES_LURANTIS] = sLurantisTeachableLearnset, - [SPECIES_MORELULL] = sMorelullTeachableLearnset, - [SPECIES_SHIINOTIC] = sShiinoticTeachableLearnset, - [SPECIES_SALANDIT] = sSalanditTeachableLearnset, - [SPECIES_SALAZZLE] = sSalazzleTeachableLearnset, - [SPECIES_STUFFUL] = sStuffulTeachableLearnset, - [SPECIES_BEWEAR] = sBewearTeachableLearnset, - [SPECIES_BOUNSWEET] = sBounsweetTeachableLearnset, - [SPECIES_STEENEE] = sSteeneeTeachableLearnset, - [SPECIES_TSAREENA] = sTsareenaTeachableLearnset, - [SPECIES_COMFEY] = sComfeyTeachableLearnset, - [SPECIES_ORANGURU] = sOranguruTeachableLearnset, - [SPECIES_PASSIMIAN] = sPassimianTeachableLearnset, - [SPECIES_WIMPOD] = sWimpodTeachableLearnset, - [SPECIES_GOLISOPOD] = sGolisopodTeachableLearnset, - [SPECIES_SANDYGAST] = sSandygastTeachableLearnset, - [SPECIES_PALOSSAND] = sPalossandTeachableLearnset, - [SPECIES_PYUKUMUKU] = sPyukumukuTeachableLearnset, - [SPECIES_TYPE_NULL] = sTypeNullTeachableLearnset, - [SPECIES_SILVALLY] = sSilvallyTeachableLearnset, - [SPECIES_MINIOR] = sMiniorTeachableLearnset, - [SPECIES_KOMALA] = sKomalaTeachableLearnset, - [SPECIES_TURTONATOR] = sTurtonatorTeachableLearnset, - [SPECIES_TOGEDEMARU] = sTogedemaruTeachableLearnset, - [SPECIES_MIMIKYU] = sMimikyuTeachableLearnset, - [SPECIES_BRUXISH] = sBruxishTeachableLearnset, - [SPECIES_DRAMPA] = sDrampaTeachableLearnset, - [SPECIES_DHELMISE] = sDhelmiseTeachableLearnset, - [SPECIES_JANGMO_O] = sJangmoOTeachableLearnset, - [SPECIES_HAKAMO_O] = sHakamoOTeachableLearnset, - [SPECIES_KOMMO_O] = sKommoOTeachableLearnset, - [SPECIES_TAPU_KOKO] = sTapuKokoTeachableLearnset, - [SPECIES_TAPU_LELE] = sTapuLeleTeachableLearnset, - [SPECIES_TAPU_BULU] = sTapuBuluTeachableLearnset, - [SPECIES_TAPU_FINI] = sTapuFiniTeachableLearnset, - [SPECIES_COSMOG] = sCosmogTeachableLearnset, - [SPECIES_COSMOEM] = sCosmoemTeachableLearnset, - [SPECIES_SOLGALEO] = sSolgaleoTeachableLearnset, - [SPECIES_LUNALA] = sLunalaTeachableLearnset, - [SPECIES_NIHILEGO] = sNihilegoTeachableLearnset, - [SPECIES_BUZZWOLE] = sBuzzwoleTeachableLearnset, - [SPECIES_PHEROMOSA] = sPheromosaTeachableLearnset, - [SPECIES_XURKITREE] = sXurkitreeTeachableLearnset, - [SPECIES_CELESTEELA] = sCelesteelaTeachableLearnset, - [SPECIES_KARTANA] = sKartanaTeachableLearnset, - [SPECIES_GUZZLORD] = sGuzzlordTeachableLearnset, - [SPECIES_NECROZMA] = sNecrozmaTeachableLearnset, - [SPECIES_MAGEARNA] = sMagearnaTeachableLearnset, - [SPECIES_MARSHADOW] = sMarshadowTeachableLearnset, - [SPECIES_POIPOLE] = sPoipoleTeachableLearnset, - [SPECIES_NAGANADEL] = sNaganadelTeachableLearnset, - [SPECIES_STAKATAKA] = sStakatakaTeachableLearnset, - [SPECIES_BLACEPHALON] = sBlacephalonTeachableLearnset, - [SPECIES_ZERAORA] = sZeraoraTeachableLearnset, - [SPECIES_MELTAN] = sMeltanTeachableLearnset, - [SPECIES_MELMETAL] = sMelmetalTeachableLearnset, -#endif -#if P_GEN_8_POKEMON == TRUE - [SPECIES_GROOKEY] = sGrookeyTeachableLearnset, - [SPECIES_THWACKEY] = sThwackeyTeachableLearnset, - [SPECIES_RILLABOOM] = sRillaboomTeachableLearnset, - [SPECIES_SCORBUNNY] = sScorbunnyTeachableLearnset, - [SPECIES_RABOOT] = sRabootTeachableLearnset, - [SPECIES_CINDERACE] = sCinderaceTeachableLearnset, - [SPECIES_SOBBLE] = sSobbleTeachableLearnset, - [SPECIES_DRIZZILE] = sDrizzileTeachableLearnset, - [SPECIES_INTELEON] = sInteleonTeachableLearnset, - [SPECIES_SKWOVET] = sSkwovetTeachableLearnset, - [SPECIES_GREEDENT] = sGreedentTeachableLearnset, - [SPECIES_ROOKIDEE] = sRookideeTeachableLearnset, - [SPECIES_CORVISQUIRE] = sCorvisquireTeachableLearnset, - [SPECIES_CORVIKNIGHT] = sCorviknightTeachableLearnset, - [SPECIES_BLIPBUG] = sBlipbugTeachableLearnset, - [SPECIES_DOTTLER] = sDottlerTeachableLearnset, - [SPECIES_ORBEETLE] = sOrbeetleTeachableLearnset, - [SPECIES_NICKIT] = sNickitTeachableLearnset, - [SPECIES_THIEVUL] = sThievulTeachableLearnset, - [SPECIES_GOSSIFLEUR] = sGossifleurTeachableLearnset, - [SPECIES_ELDEGOSS] = sEldegossTeachableLearnset, - [SPECIES_WOOLOO] = sWoolooTeachableLearnset, - [SPECIES_DUBWOOL] = sDubwoolTeachableLearnset, - [SPECIES_CHEWTLE] = sChewtleTeachableLearnset, - [SPECIES_DREDNAW] = sDrednawTeachableLearnset, - [SPECIES_YAMPER] = sYamperTeachableLearnset, - [SPECIES_BOLTUND] = sBoltundTeachableLearnset, - [SPECIES_ROLYCOLY] = sRolycolyTeachableLearnset, - [SPECIES_CARKOL] = sCarkolTeachableLearnset, - [SPECIES_COALOSSAL] = sCoalossalTeachableLearnset, - [SPECIES_APPLIN] = sApplinTeachableLearnset, - [SPECIES_FLAPPLE] = sFlappleTeachableLearnset, - [SPECIES_APPLETUN] = sAppletunTeachableLearnset, - [SPECIES_SILICOBRA] = sSilicobraTeachableLearnset, - [SPECIES_SANDACONDA] = sSandacondaTeachableLearnset, - [SPECIES_CRAMORANT] = sCramorantTeachableLearnset, - [SPECIES_ARROKUDA] = sArrokudaTeachableLearnset, - [SPECIES_BARRASKEWDA] = sBarraskewdaTeachableLearnset, - [SPECIES_TOXEL] = sToxelTeachableLearnset, - [SPECIES_TOXTRICITY] = sToxtricityTeachableLearnset, - [SPECIES_SIZZLIPEDE] = sSizzlipedeTeachableLearnset, - [SPECIES_CENTISKORCH] = sCentiskorchTeachableLearnset, - [SPECIES_CLOBBOPUS] = sClobbopusTeachableLearnset, - [SPECIES_GRAPPLOCT] = sGrapploctTeachableLearnset, - [SPECIES_SINISTEA] = sSinisteaTeachableLearnset, - [SPECIES_POLTEAGEIST] = sPolteageistTeachableLearnset, - [SPECIES_HATENNA] = sHatennaTeachableLearnset, - [SPECIES_HATTREM] = sHattremTeachableLearnset, - [SPECIES_HATTERENE] = sHattereneTeachableLearnset, - [SPECIES_IMPIDIMP] = sImpidimpTeachableLearnset, - [SPECIES_MORGREM] = sMorgremTeachableLearnset, - [SPECIES_GRIMMSNARL] = sGrimmsnarlTeachableLearnset, - [SPECIES_OBSTAGOON] = sObstagoonTeachableLearnset, - [SPECIES_PERRSERKER] = sPerrserkerTeachableLearnset, - [SPECIES_CURSOLA] = sCursolaTeachableLearnset, - [SPECIES_SIRFETCHD] = sSirfetchdTeachableLearnset, - [SPECIES_MR_RIME] = sMrRimeTeachableLearnset, - [SPECIES_RUNERIGUS] = sRunerigusTeachableLearnset, - [SPECIES_MILCERY] = sMilceryTeachableLearnset, - [SPECIES_ALCREMIE] = sAlcremieTeachableLearnset, - [SPECIES_FALINKS] = sFalinksTeachableLearnset, - [SPECIES_PINCURCHIN] = sPincurchinTeachableLearnset, - [SPECIES_SNOM] = sSnomTeachableLearnset, - [SPECIES_FROSMOTH] = sFrosmothTeachableLearnset, - [SPECIES_STONJOURNER] = sStonjournerTeachableLearnset, - [SPECIES_EISCUE] = sEiscueTeachableLearnset, - [SPECIES_INDEEDEE] = sIndeedeeTeachableLearnset, - [SPECIES_MORPEKO] = sMorpekoTeachableLearnset, - [SPECIES_CUFANT] = sCufantTeachableLearnset, - [SPECIES_COPPERAJAH] = sCopperajahTeachableLearnset, - [SPECIES_DRACOZOLT] = sDracozoltTeachableLearnset, - [SPECIES_ARCTOZOLT] = sArctozoltTeachableLearnset, - [SPECIES_DRACOVISH] = sDracovishTeachableLearnset, - [SPECIES_ARCTOVISH] = sArctovishTeachableLearnset, - [SPECIES_DURALUDON] = sDuraludonTeachableLearnset, - [SPECIES_DREEPY] = sDreepyTeachableLearnset, - [SPECIES_DRAKLOAK] = sDrakloakTeachableLearnset, - [SPECIES_DRAGAPULT] = sDragapultTeachableLearnset, - [SPECIES_ZACIAN] = sZacianTeachableLearnset, - [SPECIES_ZAMAZENTA] = sZamazentaTeachableLearnset, - [SPECIES_ETERNATUS] = sEternatusTeachableLearnset, - [SPECIES_KUBFU] = sKubfuTeachableLearnset, - [SPECIES_URSHIFU] = sUrshifuTeachableLearnset, - [SPECIES_ZARUDE] = sZarudeTeachableLearnset, - [SPECIES_REGIELEKI] = sRegielekiTeachableLearnset, - [SPECIES_REGIDRAGO] = sRegidragoTeachableLearnset, - [SPECIES_GLASTRIER] = sGlastrierTeachableLearnset, - [SPECIES_SPECTRIER] = sSpectrierTeachableLearnset, - [SPECIES_CALYREX] = sCalyrexTeachableLearnset, - [SPECIES_WYRDEER] = sWyrdeerTeachableLearnset, - [SPECIES_KLEAVOR] = sKleavorTeachableLearnset, - [SPECIES_URSALUNA] = sUrsalunaTeachableLearnset, - [SPECIES_BASCULEGION] = sBasculegionTeachableLearnset, - [SPECIES_SNEASLER] = sSneaslerTeachableLearnset, - [SPECIES_OVERQWIL] = sOverqwilTeachableLearnset, - [SPECIES_ENAMORUS] = sEnamorusTeachableLearnset, -#endif - // Megas - [SPECIES_VENUSAUR_MEGA] = sVenusaurTeachableLearnset, - [SPECIES_CHARIZARD_MEGA_X] = sCharizardTeachableLearnset, - [SPECIES_CHARIZARD_MEGA_Y] = sCharizardTeachableLearnset, - [SPECIES_BLASTOISE_MEGA] = sBlastoiseTeachableLearnset, - [SPECIES_BEEDRILL_MEGA] = sBeedrillTeachableLearnset, - [SPECIES_PIDGEOT_MEGA] = sPidgeotTeachableLearnset, - [SPECIES_ALAKAZAM_MEGA] = sAlakazamTeachableLearnset, - [SPECIES_SLOWBRO_MEGA] = sSlowbroTeachableLearnset, - [SPECIES_GENGAR_MEGA] = sGengarTeachableLearnset, - [SPECIES_KANGASKHAN_MEGA] = sKangaskhanTeachableLearnset, - [SPECIES_PINSIR_MEGA] = sPinsirTeachableLearnset, - [SPECIES_GYARADOS_MEGA] = sGyaradosTeachableLearnset, - [SPECIES_AERODACTYL_MEGA] = sAerodactylTeachableLearnset, - [SPECIES_MEWTWO_MEGA_X] = sMewtwoTeachableLearnset, - [SPECIES_MEWTWO_MEGA_Y] = sMewtwoTeachableLearnset, - [SPECIES_AMPHAROS_MEGA] = sAmpharosTeachableLearnset, - [SPECIES_STEELIX_MEGA] = sSteelixTeachableLearnset, - [SPECIES_SCIZOR_MEGA] = sScizorTeachableLearnset, - [SPECIES_HERACROSS_MEGA] = sHeracrossTeachableLearnset, - [SPECIES_HOUNDOOM_MEGA] = sHoundoomTeachableLearnset, - [SPECIES_TYRANITAR_MEGA] = sTyranitarTeachableLearnset, - [SPECIES_SCEPTILE_MEGA] = sSceptileTeachableLearnset, - [SPECIES_BLAZIKEN_MEGA] = sBlazikenTeachableLearnset, - [SPECIES_SWAMPERT_MEGA] = sSwampertTeachableLearnset, - [SPECIES_GARDEVOIR_MEGA] = sGardevoirTeachableLearnset, - [SPECIES_SABLEYE_MEGA] = sSableyeTeachableLearnset, - [SPECIES_MAWILE_MEGA] = sMawileTeachableLearnset, - [SPECIES_AGGRON_MEGA] = sAggronTeachableLearnset, - [SPECIES_MEDICHAM_MEGA] = sMedichamTeachableLearnset, - [SPECIES_MANECTRIC_MEGA] = sManectricTeachableLearnset, - [SPECIES_SHARPEDO_MEGA] = sSharpedoTeachableLearnset, - [SPECIES_CAMERUPT_MEGA] = sCameruptTeachableLearnset, - [SPECIES_ALTARIA_MEGA] = sAltariaTeachableLearnset, - [SPECIES_BANETTE_MEGA] = sBanetteTeachableLearnset, - [SPECIES_ABSOL_MEGA] = sAbsolTeachableLearnset, - [SPECIES_GLALIE_MEGA] = sGlalieTeachableLearnset, - [SPECIES_SALAMENCE_MEGA] = sSalamenceTeachableLearnset, - [SPECIES_METAGROSS_MEGA] = sMetagrossTeachableLearnset, - [SPECIES_LATIAS_MEGA] = sLatiasTeachableLearnset, - [SPECIES_LATIOS_MEGA] = sLatiosTeachableLearnset, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_LOPUNNY_MEGA] = sLopunnyTeachableLearnset, - [SPECIES_GARCHOMP_MEGA] = sGarchompTeachableLearnset, - [SPECIES_LUCARIO_MEGA] = sLucarioTeachableLearnset, - [SPECIES_ABOMASNOW_MEGA] = sAbomasnowTeachableLearnset, - [SPECIES_GALLADE_MEGA] = sGalladeTeachableLearnset, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_AUDINO_MEGA] = sAudinoTeachableLearnset, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_DIANCIE_MEGA] = sDiancieTeachableLearnset, -#endif - // Special Mega + Primals - [SPECIES_RAYQUAZA_MEGA] = sRayquazaTeachableLearnset, - [SPECIES_KYOGRE_PRIMAL] = sKyogreTeachableLearnset, - [SPECIES_GROUDON_PRIMAL] = sGroudonTeachableLearnset, - // Alolan Forms - [SPECIES_RATTATA_ALOLAN] = sRattataAlolanTeachableLearnset, - [SPECIES_RATICATE_ALOLAN] = sRaticateAlolanTeachableLearnset, - [SPECIES_RAICHU_ALOLAN] = sRaichuAlolanTeachableLearnset, - [SPECIES_SANDSHREW_ALOLAN] = sSandshrewAlolanTeachableLearnset, - [SPECIES_SANDSLASH_ALOLAN] = sSandslashAlolanTeachableLearnset, - [SPECIES_VULPIX_ALOLAN] = sVulpixAlolanTeachableLearnset, - [SPECIES_NINETALES_ALOLAN] = sNinetalesAlolanTeachableLearnset, - [SPECIES_DIGLETT_ALOLAN] = sDiglettAlolanTeachableLearnset, - [SPECIES_DUGTRIO_ALOLAN] = sDugtrioAlolanTeachableLearnset, - [SPECIES_MEOWTH_ALOLAN] = sMeowthAlolanTeachableLearnset, - [SPECIES_PERSIAN_ALOLAN] = sPersianAlolanTeachableLearnset, - [SPECIES_GEODUDE_ALOLAN] = sGeodudeAlolanTeachableLearnset, - [SPECIES_GRAVELER_ALOLAN] = sGravelerAlolanTeachableLearnset, - [SPECIES_GOLEM_ALOLAN] = sGolemAlolanTeachableLearnset, - [SPECIES_GRIMER_ALOLAN] = sGrimerAlolanTeachableLearnset, - [SPECIES_MUK_ALOLAN] = sMukAlolanTeachableLearnset, - [SPECIES_EXEGGUTOR_ALOLAN] = sExeggutorAlolanTeachableLearnset, - [SPECIES_MAROWAK_ALOLAN] = sMarowakAlolanTeachableLearnset, - // Galarian Forms - [SPECIES_MEOWTH_GALARIAN] = sMeowthGalarianTeachableLearnset, - [SPECIES_PONYTA_GALARIAN] = sPonytaGalarianTeachableLearnset, - [SPECIES_RAPIDASH_GALARIAN] = sRapidashGalarianTeachableLearnset, - [SPECIES_SLOWPOKE_GALARIAN] = sSlowpokeGalarianTeachableLearnset, - [SPECIES_SLOWBRO_GALARIAN] = sSlowbroGalarianTeachableLearnset, - [SPECIES_FARFETCHD_GALARIAN] = sFarfetchdGalarianTeachableLearnset, - [SPECIES_WEEZING_GALARIAN] = sWeezingGalarianTeachableLearnset, - [SPECIES_MR_MIME_GALARIAN] = sMrMimeGalarianTeachableLearnset, - [SPECIES_ARTICUNO_GALARIAN] = sArticunoGalarianTeachableLearnset, - [SPECIES_ZAPDOS_GALARIAN] = sZapdosGalarianTeachableLearnset, - [SPECIES_MOLTRES_GALARIAN] = sMoltresGalarianTeachableLearnset, - [SPECIES_SLOWKING_GALARIAN] = sSlowkingGalarianTeachableLearnset, - [SPECIES_CORSOLA_GALARIAN] = sCorsolaGalarianTeachableLearnset, - [SPECIES_ZIGZAGOON_GALARIAN] = sZigzagoonGalarianTeachableLearnset, - [SPECIES_LINOONE_GALARIAN] = sLinooneGalarianTeachableLearnset, -#if P_GEN_5_POKEMON == TRUE - [SPECIES_DARUMAKA_GALARIAN] = sDarumakaGalarianTeachableLearnset, - [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanGalarianTeachableLearnset, - [SPECIES_YAMASK_GALARIAN] = sYamaskGalarianTeachableLearnset, - [SPECIES_STUNFISK_GALARIAN] = sStunfiskGalarianTeachableLearnset, -#endif - // Hisuian Forms - [SPECIES_GROWLITHE_HISUIAN] = sGrowlitheHisuianTeachableLearnset, - [SPECIES_ARCANINE_HISUIAN] = sArcanineHisuianTeachableLearnset, - [SPECIES_VOLTORB_HISUIAN] = sVoltorbHisuianTeachableLearnset, - [SPECIES_ELECTRODE_HISUIAN] = sElectrodeHisuianTeachableLearnset, - [SPECIES_TYPHLOSION_HISUIAN] = sTyphlosionHisuianTeachableLearnset, - [SPECIES_QWILFISH_HISUIAN] = sQwilfishHisuianTeachableLearnset, - [SPECIES_SNEASEL_HISUIAN] = sSneaselHisuianTeachableLearnset, -#if P_GEN_5_POKEMON == TRUE - [SPECIES_SAMUROTT_HISUIAN] = sSamurottHisuianTeachableLearnset, - [SPECIES_LILLIGANT_HISUIAN] = sLilligantHisuianTeachableLearnset, - [SPECIES_ZORUA_HISUIAN] = sZoruaHisuianTeachableLearnset, - [SPECIES_ZOROARK_HISUIAN] = sZoroarkHisuianTeachableLearnset, - [SPECIES_BRAVIARY_HISUIAN] = sBraviaryHisuianTeachableLearnset, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_SLIGGOO_HISUIAN] = sSliggooHisuianTeachableLearnset, - [SPECIES_GOODRA_HISUIAN] = sGoodraHisuianTeachableLearnset, - [SPECIES_AVALUGG_HISUIAN] = sAvaluggHisuianTeachableLearnset, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_DECIDUEYE_HISUIAN] = sDecidueyeHisuianTeachableLearnset, -#endif - // Misc Forms - // Cosplay Pikachu - [SPECIES_PIKACHU_COSPLAY] = sPikachuTeachableLearnset, - [SPECIES_PIKACHU_ROCK_STAR] = sPikachuTeachableLearnset, - [SPECIES_PIKACHU_BELLE] = sPikachuTeachableLearnset, - [SPECIES_PIKACHU_POP_STAR] = sPikachuTeachableLearnset, - [SPECIES_PIKACHU_PH_D] = sPikachuTeachableLearnset, - [SPECIES_PIKACHU_LIBRE] = sPikachuTeachableLearnset, - // Cap Pikachu - [SPECIES_PIKACHU_ORIGINAL_CAP] = sPikachuTeachableLearnset, - [SPECIES_PIKACHU_HOENN_CAP] = sPikachuTeachableLearnset, - [SPECIES_PIKACHU_SINNOH_CAP] = sPikachuTeachableLearnset, - [SPECIES_PIKACHU_UNOVA_CAP] = sPikachuTeachableLearnset, - [SPECIES_PIKACHU_KALOS_CAP] = sPikachuTeachableLearnset, - [SPECIES_PIKACHU_ALOLA_CAP] = sPikachuTeachableLearnset, - [SPECIES_PIKACHU_PARTNER_CAP] = sPikachuTeachableLearnset, - [SPECIES_PIKACHU_WORLD_CAP] = sPikachuTeachableLearnset, - // Pichu - [SPECIES_PICHU_SPIKY_EARED] = sPichuTeachableLearnset, - // Unown - [SPECIES_UNOWN_B] = sUnownTeachableLearnset, - [SPECIES_UNOWN_C] = sUnownTeachableLearnset, - [SPECIES_UNOWN_D] = sUnownTeachableLearnset, - [SPECIES_UNOWN_E] = sUnownTeachableLearnset, - [SPECIES_UNOWN_F] = sUnownTeachableLearnset, - [SPECIES_UNOWN_G] = sUnownTeachableLearnset, - [SPECIES_UNOWN_H] = sUnownTeachableLearnset, - [SPECIES_UNOWN_I] = sUnownTeachableLearnset, - [SPECIES_UNOWN_J] = sUnownTeachableLearnset, - [SPECIES_UNOWN_K] = sUnownTeachableLearnset, - [SPECIES_UNOWN_L] = sUnownTeachableLearnset, - [SPECIES_UNOWN_M] = sUnownTeachableLearnset, - [SPECIES_UNOWN_N] = sUnownTeachableLearnset, - [SPECIES_UNOWN_O] = sUnownTeachableLearnset, - [SPECIES_UNOWN_P] = sUnownTeachableLearnset, - [SPECIES_UNOWN_Q] = sUnownTeachableLearnset, - [SPECIES_UNOWN_R] = sUnownTeachableLearnset, - [SPECIES_UNOWN_S] = sUnownTeachableLearnset, - [SPECIES_UNOWN_T] = sUnownTeachableLearnset, - [SPECIES_UNOWN_U] = sUnownTeachableLearnset, - [SPECIES_UNOWN_V] = sUnownTeachableLearnset, - [SPECIES_UNOWN_W] = sUnownTeachableLearnset, - [SPECIES_UNOWN_X] = sUnownTeachableLearnset, - [SPECIES_UNOWN_Y] = sUnownTeachableLearnset, - [SPECIES_UNOWN_Z] = sUnownTeachableLearnset, - [SPECIES_UNOWN_EMARK] = sUnownTeachableLearnset, - [SPECIES_UNOWN_QMARK] = sUnownTeachableLearnset, - // Castform - [SPECIES_CASTFORM_SUNNY] = sCastformTeachableLearnset, - [SPECIES_CASTFORM_RAINY] = sCastformTeachableLearnset, - [SPECIES_CASTFORM_SNOWY] = sCastformTeachableLearnset, - // Deoxys - [SPECIES_DEOXYS_ATTACK] = sDeoxysAttackTeachableLearnset, - [SPECIES_DEOXYS_DEFENSE] = sDeoxysDefenseTeachableLearnset, - [SPECIES_DEOXYS_SPEED] = sDeoxysSpeedTeachableLearnset, -#if P_GEN_4_POKEMON == TRUE - // Burmy - [SPECIES_BURMY_SANDY_CLOAK] = sBurmyTeachableLearnset, - [SPECIES_BURMY_TRASH_CLOAK] = sBurmyTeachableLearnset, - // Wormadam - [SPECIES_WORMADAM_SANDY_CLOAK] = sWormadamSandyCloakTeachableLearnset, - [SPECIES_WORMADAM_TRASH_CLOAK] = sWormadamTrashCloakTeachableLearnset, - // Cherrim - [SPECIES_CHERRIM_SUNSHINE] = sCherrimTeachableLearnset, - // Shellos - [SPECIES_SHELLOS_EAST_SEA] = sShellosTeachableLearnset, - // Gastrodon - [SPECIES_GASTRODON_EAST_SEA] = sGastrodonTeachableLearnset, - // Rotom - [SPECIES_ROTOM_HEAT] = sRotomTeachableLearnset, - [SPECIES_ROTOM_WASH] = sRotomTeachableLearnset, - [SPECIES_ROTOM_FROST] = sRotomTeachableLearnset, - [SPECIES_ROTOM_FAN] = sRotomTeachableLearnset, - [SPECIES_ROTOM_MOW] = sRotomTeachableLearnset, - // Origin Forme - [SPECIES_DIALGA_ORIGIN] = sDialgaTeachableLearnset, - [SPECIES_PALKIA_ORIGIN] = sPalkiaTeachableLearnset, - [SPECIES_GIRATINA_ORIGIN] = sGiratinaTeachableLearnset, - // Shaymin - [SPECIES_SHAYMIN_SKY] = sShayminSkyTeachableLearnset, - // Arceus - [SPECIES_ARCEUS_FIGHTING] = sArceusTeachableLearnset, - [SPECIES_ARCEUS_FLYING] = sArceusTeachableLearnset, - [SPECIES_ARCEUS_POISON] = sArceusTeachableLearnset, - [SPECIES_ARCEUS_GROUND] = sArceusTeachableLearnset, - [SPECIES_ARCEUS_ROCK] = sArceusTeachableLearnset, - [SPECIES_ARCEUS_BUG] = sArceusTeachableLearnset, - [SPECIES_ARCEUS_GHOST] = sArceusTeachableLearnset, - [SPECIES_ARCEUS_STEEL] = sArceusTeachableLearnset, - [SPECIES_ARCEUS_FIRE] = sArceusTeachableLearnset, - [SPECIES_ARCEUS_WATER] = sArceusTeachableLearnset, - [SPECIES_ARCEUS_GRASS] = sArceusTeachableLearnset, - [SPECIES_ARCEUS_ELECTRIC] = sArceusTeachableLearnset, - [SPECIES_ARCEUS_PSYCHIC] = sArceusTeachableLearnset, - [SPECIES_ARCEUS_ICE] = sArceusTeachableLearnset, - [SPECIES_ARCEUS_DRAGON] = sArceusTeachableLearnset, - [SPECIES_ARCEUS_DARK] = sArceusTeachableLearnset, - [SPECIES_ARCEUS_FAIRY] = sArceusTeachableLearnset, -#endif -#if P_GEN_5_POKEMON == TRUE - // Basculin - [SPECIES_BASCULIN_BLUE_STRIPED] = sBasculinTeachableLearnset, - [SPECIES_BASCULIN_WHITE_STRIPED] = sBasculinTeachableLearnset, - // Darmanitan - [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanTeachableLearnset, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanGalarianTeachableLearnset, - // Deerling - [SPECIES_DEERLING_SUMMER] = sDeerlingTeachableLearnset, - [SPECIES_DEERLING_AUTUMN] = sDeerlingTeachableLearnset, - [SPECIES_DEERLING_WINTER] = sDeerlingTeachableLearnset, - // Sawsbuck - [SPECIES_SAWSBUCK_SUMMER] = sSawsbuckTeachableLearnset, - [SPECIES_SAWSBUCK_AUTUMN] = sSawsbuckTeachableLearnset, - [SPECIES_SAWSBUCK_WINTER] = sSawsbuckTeachableLearnset, - // Therian Forms - [SPECIES_TORNADUS_THERIAN] = sTornadusTeachableLearnset, - [SPECIES_THUNDURUS_THERIAN] = sThundurusTeachableLearnset, - [SPECIES_LANDORUS_THERIAN] = sLandorusTeachableLearnset, - // Kyurem - [SPECIES_KYUREM_WHITE] = sKyuremTeachableLearnset, - [SPECIES_KYUREM_BLACK] = sKyuremTeachableLearnset, - // Keldeo - [SPECIES_KELDEO_RESOLUTE] = sKeldeoTeachableLearnset, - // Meloetta - [SPECIES_MELOETTA_PIROUETTE] = sMeloettaTeachableLearnset, - // Genesect - [SPECIES_GENESECT_DOUSE_DRIVE] = sGenesectTeachableLearnset, - [SPECIES_GENESECT_SHOCK_DRIVE] = sGenesectTeachableLearnset, - [SPECIES_GENESECT_BURN_DRIVE] = sGenesectTeachableLearnset, - [SPECIES_GENESECT_CHILL_DRIVE] = sGenesectTeachableLearnset, -#endif -#if P_GEN_6_POKEMON == TRUE - // Greninja - [SPECIES_GRENINJA_BATTLE_BOND] = sGreninjaTeachableLearnset, - [SPECIES_GRENINJA_ASH] = sGreninjaTeachableLearnset, - // Vivillon - [SPECIES_VIVILLON_POLAR] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_TUNDRA] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_CONTINENTAL] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_GARDEN] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_ELEGANT] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_MEADOW] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_MODERN] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_MARINE] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_ARCHIPELAGO] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_HIGH_PLAINS] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_SANDSTORM] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_RIVER] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_MONSOON] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_SAVANNA] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_SUN] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_OCEAN] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_JUNGLE] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_FANCY] = sVivillonTeachableLearnset, - [SPECIES_VIVILLON_POKE_BALL] = sVivillonTeachableLearnset, - // Flabébé - [SPECIES_FLABEBE_YELLOW_FLOWER] = sFlabebeTeachableLearnset, - [SPECIES_FLABEBE_ORANGE_FLOWER] = sFlabebeTeachableLearnset, - [SPECIES_FLABEBE_BLUE_FLOWER] = sFlabebeTeachableLearnset, - [SPECIES_FLABEBE_WHITE_FLOWER] = sFlabebeTeachableLearnset, - // Floette - [SPECIES_FLOETTE_YELLOW_FLOWER] = sFloetteTeachableLearnset, - [SPECIES_FLOETTE_ORANGE_FLOWER] = sFloetteTeachableLearnset, - [SPECIES_FLOETTE_BLUE_FLOWER] = sFloetteTeachableLearnset, - [SPECIES_FLOETTE_WHITE_FLOWER] = sFloetteTeachableLearnset, - [SPECIES_FLOETTE_ETERNAL_FLOWER] = sFloetteEternalFlowerTeachableLearnset, - // Florges - [SPECIES_FLORGES_YELLOW_FLOWER] = sFlorgesTeachableLearnset, - [SPECIES_FLORGES_ORANGE_FLOWER] = sFlorgesTeachableLearnset, - [SPECIES_FLORGES_BLUE_FLOWER] = sFlorgesTeachableLearnset, - [SPECIES_FLORGES_WHITE_FLOWER] = sFlorgesTeachableLearnset, - //Furfrou - [SPECIES_FURFROU_HEART_TRIM] = sFurfrouTeachableLearnset, - [SPECIES_FURFROU_STAR_TRIM] = sFurfrouTeachableLearnset, - [SPECIES_FURFROU_DIAMOND_TRIM] = sFurfrouTeachableLearnset, - [SPECIES_FURFROU_DEBUTANTE_TRIM] = sFurfrouTeachableLearnset, - [SPECIES_FURFROU_MATRON_TRIM] = sFurfrouTeachableLearnset, - [SPECIES_FURFROU_DANDY_TRIM] = sFurfrouTeachableLearnset, - [SPECIES_FURFROU_LA_REINE_TRIM] = sFurfrouTeachableLearnset, - [SPECIES_FURFROU_KABUKI_TRIM] = sFurfrouTeachableLearnset, - [SPECIES_FURFROU_PHARAOH_TRIM] = sFurfrouTeachableLearnset, - // Meowstic - [SPECIES_MEOWSTIC_FEMALE] = sMeowsticFemaleTeachableLearnset, - // Aegislash - [SPECIES_AEGISLASH_BLADE] = sAegislashTeachableLearnset, - // Pumpkaboo - [SPECIES_PUMPKABOO_SMALL] = sPumpkabooTeachableLearnset, - [SPECIES_PUMPKABOO_LARGE] = sPumpkabooTeachableLearnset, - [SPECIES_PUMPKABOO_SUPER] = sPumpkabooTeachableLearnset, - // Gourgeist - [SPECIES_GOURGEIST_SMALL] = sGourgeistTeachableLearnset, - [SPECIES_GOURGEIST_LARGE] = sGourgeistTeachableLearnset, - [SPECIES_GOURGEIST_SUPER] = sGourgeistTeachableLearnset, - // Xerneas - [SPECIES_XERNEAS_ACTIVE] = sXerneasTeachableLearnset, - // Zygarde - [SPECIES_ZYGARDE_10] = sZygardeTeachableLearnset, - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardeTeachableLearnset, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardeTeachableLearnset, - [SPECIES_ZYGARDE_COMPLETE] = sZygardeTeachableLearnset, - // Hoopa - [SPECIES_HOOPA_UNBOUND] = sHoopaUnboundTeachableLearnset, -#endif -#if P_GEN_7_POKEMON == TRUE - // Oricorio - [SPECIES_ORICORIO_POM_POM] = sOricorioTeachableLearnset, - [SPECIES_ORICORIO_PAU] = sOricorioTeachableLearnset, - [SPECIES_ORICORIO_SENSU] = sOricorioTeachableLearnset, - // Rockruff - [SPECIES_ROCKRUFF_OWN_TEMPO] = sRockruffTeachableLearnset, - // Lycanroc - [SPECIES_LYCANROC_MIDNIGHT] = sLycanrocMidnightTeachableLearnset, - [SPECIES_LYCANROC_DUSK] = sLycanrocDuskTeachableLearnset, - // Wishiwashi - [SPECIES_WISHIWASHI_SCHOOL] = sWishiwashiTeachableLearnset, - // Silvally - [SPECIES_SILVALLY_FIGHTING] = sSilvallyTeachableLearnset, - [SPECIES_SILVALLY_FLYING] = sSilvallyTeachableLearnset, - [SPECIES_SILVALLY_POISON] = sSilvallyTeachableLearnset, - [SPECIES_SILVALLY_GROUND] = sSilvallyTeachableLearnset, - [SPECIES_SILVALLY_ROCK] = sSilvallyTeachableLearnset, - [SPECIES_SILVALLY_BUG] = sSilvallyTeachableLearnset, - [SPECIES_SILVALLY_GHOST] = sSilvallyTeachableLearnset, - [SPECIES_SILVALLY_STEEL] = sSilvallyTeachableLearnset, - [SPECIES_SILVALLY_FIRE] = sSilvallyTeachableLearnset, - [SPECIES_SILVALLY_WATER] = sSilvallyTeachableLearnset, - [SPECIES_SILVALLY_GRASS] = sSilvallyTeachableLearnset, - [SPECIES_SILVALLY_ELECTRIC] = sSilvallyTeachableLearnset, - [SPECIES_SILVALLY_PSYCHIC] = sSilvallyTeachableLearnset, - [SPECIES_SILVALLY_ICE] = sSilvallyTeachableLearnset, - [SPECIES_SILVALLY_DRAGON] = sSilvallyTeachableLearnset, - [SPECIES_SILVALLY_DARK] = sSilvallyTeachableLearnset, - [SPECIES_SILVALLY_FAIRY] = sSilvallyTeachableLearnset, - // Minior - [SPECIES_MINIOR_METEOR_ORANGE] = sMiniorTeachableLearnset, - [SPECIES_MINIOR_METEOR_YELLOW] = sMiniorTeachableLearnset, - [SPECIES_MINIOR_METEOR_GREEN] = sMiniorTeachableLearnset, - [SPECIES_MINIOR_METEOR_BLUE] = sMiniorTeachableLearnset, - [SPECIES_MINIOR_METEOR_INDIGO] = sMiniorTeachableLearnset, - [SPECIES_MINIOR_METEOR_VIOLET] = sMiniorTeachableLearnset, - [SPECIES_MINIOR_CORE_RED] = sMiniorTeachableLearnset, - [SPECIES_MINIOR_CORE_ORANGE] = sMiniorTeachableLearnset, - [SPECIES_MINIOR_CORE_YELLOW] = sMiniorTeachableLearnset, - [SPECIES_MINIOR_CORE_GREEN] = sMiniorTeachableLearnset, - [SPECIES_MINIOR_CORE_BLUE] = sMiniorTeachableLearnset, - [SPECIES_MINIOR_CORE_INDIGO] = sMiniorTeachableLearnset, - [SPECIES_MINIOR_CORE_VIOLET] = sMiniorTeachableLearnset, - // Mimikyu - [SPECIES_MIMIKYU_BUSTED] = sMimikyuTeachableLearnset, - // Necrozma - [SPECIES_NECROZMA_DUSK_MANE] = sNecrozmaTeachableLearnset, - [SPECIES_NECROZMA_DAWN_WINGS] = sNecrozmaTeachableLearnset, - [SPECIES_NECROZMA_ULTRA] = sNecrozmaTeachableLearnset, - // Magearna - [SPECIES_MAGEARNA_ORIGINAL_COLOR] = sMagearnaTeachableLearnset, -#endif -#if P_GEN_8_POKEMON == TRUE - // Cramorant - [SPECIES_CRAMORANT_GULPING] = sCramorantTeachableLearnset, - [SPECIES_CRAMORANT_GORGING] = sCramorantTeachableLearnset, - // Toxtricity - [SPECIES_TOXTRICITY_LOW_KEY] = sToxtricityLowKeyTeachableLearnset, - // Sinistea - [SPECIES_SINISTEA_ANTIQUE] = sSinisteaTeachableLearnset, - // Polteageist - [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistTeachableLearnset, - // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_MATCHA_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_MINT_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_LEMON_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_SALTED_CREAM] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_RUBY_SWIRL] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, - // Eiscue - [SPECIES_EISCUE_NOICE_FACE] = sEiscueTeachableLearnset, - // Indeedee - [SPECIES_INDEEDEE_FEMALE] = sIndeedeeFemaleTeachableLearnset, - // Morpeko - [SPECIES_MORPEKO_HANGRY] = sMorpekoTeachableLearnset, - // Zacian - [SPECIES_ZACIAN_CROWNED_SWORD] = sZacianTeachableLearnset, - // Zamazenta - [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = sZamazentaTeachableLearnset, - // Eternatus - [SPECIES_ETERNATUS_ETERNAMAX] = sEternatusTeachableLearnset, - // Urshifu - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = sUrshifuRapidStrikeStyleTeachableLearnset, - // Zarude - [SPECIES_ZARUDE_DADA] = sZarudeTeachableLearnset, - // Calyrex - [SPECIES_CALYREX_ICE_RIDER] = sCalyrexIceRiderTeachableLearnset, - [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexShadowRiderTeachableLearnset, - // Enamorus - [SPECIES_ENAMORUS_THERIAN] = sEnamorusTeachableLearnset, - [SPECIES_BASCULEGION_FEMALE] = sBasculegionTeachableLearnset, -#endif -}; diff --git a/src/data/pokemon/teachable_learnsets.h b/src/data/pokemon/teachable_learnsets.h index b0f162c6d9..f274363f61 100644 --- a/src/data/pokemon/teachable_learnsets.h +++ b/src/data/pokemon/teachable_learnsets.h @@ -1,3 +1,8 @@ +static const u16 sNoneTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; + +#if P_FAMILY_BULBASAUR static const u16 sBulbasaurTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -114,7 +119,9 @@ static const u16 sVenusaurTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BULBASAUR +#if P_FAMILY_CHARMANDER static const u16 sCharmanderTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -271,7 +278,9 @@ static const u16 sCharizardTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CHARMANDER +#if P_FAMILY_SQUIRTLE static const u16 sSquirtleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -419,7 +428,9 @@ static const u16 sBlastoiseTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SQUIRTLE +#if P_FAMILY_CATERPIE static const u16 sCaterpieTeachableLearnset[] = { MOVE_SNORE, MOVE_UNAVAILABLE, @@ -465,7 +476,9 @@ static const u16 sButterfreeTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CATERPIE +#if P_FAMILY_WEEDLE static const u16 sWeedleTeachableLearnset[] = { MOVE_UNAVAILABLE, }; @@ -509,7 +522,9 @@ static const u16 sBeedrillTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_WEEDLE +#if P_FAMILY_PIDGEY static const u16 sPidgeyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -600,7 +615,9 @@ static const u16 sPidgeotTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PIDGEY +#if P_FAMILY_RATTATA static const u16 sRattataTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -692,6 +709,44 @@ static const u16 sRaticateTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_ALOLAN_FORMS +static const u16 sRattataAlolanTeachableLearnset[] = { + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_FACADE, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRaticateAlolanTeachableLearnset[] = { + MOVE_BLIZZARD, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_RATTATA + +#if P_FAMILY_SPEAROW static const u16 sSpearowTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -750,7 +805,9 @@ static const u16 sFearowTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SPEAROW +#if P_FAMILY_EKANS static const u16 sEkansTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -821,6 +878,50 @@ static const u16 sArbokTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_EKANS + +#if P_FAMILY_PIKACHU +#if P_GEN_2_CROSS_EVOS +static const u16 sPichuTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS static const u16 sPikachuTeachableLearnset[] = { MOVE_ATTRACT, @@ -918,6 +1019,31 @@ static const u16 sRaichuTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_ALOLAN_FORMS +static const u16 sRaichuAlolanTeachableLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_FACADE, + MOVE_FLASH, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_PIKACHU + +#if P_FAMILY_SANDSHREW static const u16 sSandshrewTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -1011,6 +1137,45 @@ static const u16 sSandslashTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_ALOLAN_FORMS +static const u16 sSandshrewAlolanTeachableLearnset[] = { + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSandslashAlolanTeachableLearnset[] = { + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_SANDSHREW + +#if P_FAMILY_NIDORAN static const u16 sNidoranFTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -1305,6 +1470,60 @@ static const u16 sNidokingTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_NIDORAN + +#if P_FAMILY_CLEFAIRY +#if P_GEN_2_CROSS_EVOS +static const u16 sCleffaTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SOFT_BOILED, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS static const u16 sClefairyTeachableLearnset[] = { MOVE_ATTRACT, @@ -1434,7 +1653,9 @@ static const u16 sClefableTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CLEFAIRY +#if P_FAMILY_VULPIX static const u16 sVulpixTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -1505,6 +1726,87 @@ static const u16 sNinetalesTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_ALOLAN_FORMS +static const u16 sVulpixAlolanTeachableLearnset[] = { + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_FACADE, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sNinetalesAlolanTeachableLearnset[] = { + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_VULPIX + +#if P_FAMILY_JIGGLYPUFF +#if P_GEN_2_CROSS_EVOS +static const u16 sIgglybuffTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS + static const u16 sJigglypuffTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -1623,7 +1925,9 @@ static const u16 sWigglytuffTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_JIGGLYPUFF +#if P_FAMILY_ZUBAT static const u16 sZubatTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -1693,6 +1997,45 @@ static const u16 sGolbatTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_2_CROSS_EVOS +static const u16 sCrobatTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ZUBAT + +#if P_FAMILY_ODDISH static const u16 sOddishTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -1786,6 +2129,41 @@ static const u16 sVileplumeTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_2_CROSS_EVOS +static const u16 sBellossomTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ODDISH + +#if P_FAMILY_PARAS static const u16 sParasTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -1864,7 +2242,9 @@ static const u16 sParasectTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PARAS +#if P_FAMILY_VENONAT static const u16 sVenonatTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -1928,7 +2308,9 @@ static const u16 sVenomothTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_VENONAT +#if P_FAMILY_DIGLETT static const u16 sDiglettTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -1998,6 +2380,37 @@ static const u16 sDugtrioTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_ALOLAN_FORMS +static const u16 sDiglettAlolanTeachableLearnset[] = { + MOVE_CUT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_SLUDGE_BOMB, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDugtrioAlolanTeachableLearnset[] = { + MOVE_CUT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_SLUDGE_BOMB, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_DIGLETT + +#if P_FAMILY_MEOWTH static const u16 sMeowthTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -2088,6 +2501,93 @@ static const u16 sPersianTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_ALOLAN_FORMS +static const u16 sMeowthAlolanTeachableLearnset[] = { + MOVE_CUT, + MOVE_FACADE, + MOVE_FLASH, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_TAUNT, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPersianAlolanTeachableLearnset[] = { + MOVE_CUT, + MOVE_FACADE, + MOVE_FLASH, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_TAUNT, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; +#endif //P_ALOLAN_FORMS + +#if P_GALARIAN_FORMS +static const u16 sMeowthGalarianTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_FACADE, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPerrserkerTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MEOWTH + +#if P_FAMILY_PSYDUCK static const u16 sPsyduckTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -2191,7 +2691,9 @@ static const u16 sGolduckTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PSYDUCK +#if P_FAMILY_MANKEY static const u16 sMankeyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -2299,6 +2801,67 @@ static const u16 sPrimeapeTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_9_CROSS_EVOS +static const u16 sAnnihilapeTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_BULLDOZE, + MOVE_CLOSE_COMBAT, + MOVE_DIG, + MOVE_DRAIN_PUNCH, + MOVE_EARTHQUAKE, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_PUNCH, + MOVE_FLING, + MOVE_FOCUS_BLAST, + MOVE_GIGA_IMPACT, + MOVE_GUNK_SHOT, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_LOW_KICK, + MOVE_LOW_SWEEP, + MOVE_METRONOME, + MOVE_NIGHT_SHADE, + MOVE_OUTRAGE, + MOVE_OVERHEAT, + MOVE_PHANTOM_FORCE, + MOVE_POISON_JAB, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_REVERSAL, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SCARY_FACE, + MOVE_SEED_BOMB, + MOVE_SHADOW_BALL, + MOVE_SHADOW_CLAW, + MOVE_SLEEP_TALK, + MOVE_STEALTH_ROCK, + MOVE_STOMPING_TANTRUM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, + MOVE_U_TURN, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_MANKEY + +#if P_FAMILY_GROWLITHE static const u16 sGrowlitheTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -2375,6 +2938,18 @@ static const u16 sArcanineTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_HISUIAN_FORMS +static const u16 sGrowlitheHisuianTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sArcanineHisuianTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_GROWLITHE + +#if P_FAMILY_POLIWAG static const u16 sPoliwagTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -2509,6 +3084,59 @@ static const u16 sPoliwrathTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_2_CROSS_EVOS +static const u16 sPolitoedTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_POLIWAG + +#if P_FAMILY_ABRA static const u16 sAbraTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -2664,7 +3292,9 @@ static const u16 sAlakazamTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ABRA +#if P_FAMILY_MACHOP static const u16 sMachopTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -2806,7 +3436,9 @@ static const u16 sMachampTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MACHOP +#if P_FAMILY_BELLSPROUT static const u16 sBellsproutTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -2901,7 +3533,9 @@ static const u16 sVictreebelTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BELLSPROUT +#if P_FAMILY_TENTACOOL static const u16 sTentacoolTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -2976,7 +3610,9 @@ static const u16 sTentacruelTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TENTACOOL +#if P_FAMILY_GEODUDE static const u16 sGeodudeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -3116,6 +3752,62 @@ static const u16 sGolemTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_ALOLAN_FORMS +static const u16 sGeodudeAlolanTeachableLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_EARTHQUAKE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGravelerAlolanTeachableLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGolemAlolanTeachableLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GEODUDE + +#if P_FAMILY_PONYTA static const u16 sPonytaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -3179,6 +3871,47 @@ static const u16 sRapidashTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GALARIAN_FORMS +static const u16 sPonytaGalarianTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sRapidashGalarianTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_PONYTA + +#if P_FAMILY_SLOWPOKE static const u16 sSlowpokeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -3291,6 +4024,195 @@ static const u16 sSlowbroTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_2_CROSS_EVOS +static const u16 sSlowkingTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS + +#if P_GALARIAN_FORMS +static const u16 sSlowpokeGalarianTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HAIL, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlowbroGalarianTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +#if P_GEN_2_CROSS_EVOS +static const u16 sSlowkingGalarianTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_SLOWPOKE + +#if P_FAMILY_MAGNEMITE static const u16 sMagnemiteTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -3358,6 +4280,42 @@ static const u16 sMagnetonTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sMagnezoneTeachableLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGNEMITE + +#if P_FAMILY_FARFETCHD static const u16 sFarfetchdTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -3393,6 +4351,50 @@ static const u16 sFarfetchdTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GALARIAN_FORMS +static const u16 sFarfetchdGalarianTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSirfetchdTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_FARFETCHD + +#if P_FAMILY_DODUO static const u16 sDoduoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -3457,7 +4459,9 @@ static const u16 sDodrioTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DODUO +#if P_FAMILY_SEEL static const u16 sSeelTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -3528,7 +4532,9 @@ static const u16 sDewgongTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SEEL +#if P_FAMILY_GRIMER static const u16 sGrimerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -3621,6 +4627,43 @@ static const u16 sMukTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_ALOLAN_FORMS +static const u16 sGrimerAlolanTeachableLearnset[] = { + MOVE_DIG, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMukAlolanTeachableLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GRIMER + +#if P_FAMILY_SHELLDER static const u16 sShellderTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -3686,7 +4729,9 @@ static const u16 sCloysterTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SHELLDER +#if P_FAMILY_GASTLY static const u16 sGastlyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -3819,7 +4864,9 @@ static const u16 sGengarTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_GASTLY +#if P_FAMILY_ONIX static const u16 sOnixTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -3859,6 +4906,51 @@ static const u16 sOnixTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_2_CROSS_EVOS +static const u16 sSteelixTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ONIX + +#if P_FAMILY_DROWZEE static const u16 sDrowzeeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -3959,7 +5051,9 @@ static const u16 sHypnoTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DROWZEE +#if P_FAMILY_KRABBY static const u16 sKrabbyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -4042,7 +5136,9 @@ static const u16 sKinglerTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_KRABBY +#if P_FAMILY_VOLTORB static const u16 sVoltorbTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -4110,6 +5206,18 @@ static const u16 sElectrodeTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_HISUIAN_FORMS +static const u16 sVoltorbHisuianTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sElectrodeHisuianTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_VOLTORB + +#if P_FAMILY_EXEGGCUTE static const u16 sExeggcuteTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -4187,6 +5295,30 @@ static const u16 sExeggutorTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_ALOLAN_FORMS +static const u16 sExeggutorAlolanTeachableLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SOLAR_BEAM, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_EXEGGCUTE + +#if P_FAMILY_CUBONE static const u16 sCuboneTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -4288,6 +5420,70 @@ static const u16 sMarowakTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_ALOLAN_FORMS +static const u16 sMarowakAlolanTeachableLearnset[] = { + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_CUBONE + +#if P_FAMILY_HITMONS +#if P_GEN_2_CROSS_EVOS +static const u16 sTyrogueTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS + static const u16 sHitmonleeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -4373,6 +5569,50 @@ static const u16 sHitmonchanTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_2_CROSS_EVOS +static const u16 sHitmontopTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HITMONS + +#if P_FAMILY_LICKITUNG static const u16 sLickitungTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -4436,6 +5676,66 @@ static const u16 sLickitungTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sLickilickyTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DEFENSE_CURL, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_LICKITUNG + +#if P_FAMILY_KOFFING static const u16 sKoffingTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -4507,6 +5807,36 @@ static const u16 sWeezingTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GALARIAN_FORMS +static const u16 sWeezingGalarianTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_KOFFING + +#if P_FAMILY_RHYHORN static const u16 sRhyhornTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -4612,6 +5942,103 @@ static const u16 sRhydonTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sRhyperiorTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RHYHORN + +#if P_FAMILY_CHANSEY +#if P_GEN_4_CROSS_EVOS +static const u16 sHappinyTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_COUNTER, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_METRONOME, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS + static const u16 sChanseyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -4682,6 +6109,79 @@ static const u16 sChanseyTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_2_CROSS_EVOS +static const u16 sBlisseyTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SOFT_BOILED, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_CHANSEY + +#if P_FAMILY_TANGELA static const u16 sTangelaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -4718,6 +6218,50 @@ static const u16 sTangelaTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sTangrowthTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TANGELA + +#if P_FAMILY_KANGASKHAN static const u16 sKangaskhanTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -4780,7 +6324,9 @@ static const u16 sKangaskhanTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_KANGASKHAN +#if P_FAMILY_HORSEA static const u16 sHorseaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -4844,6 +6390,43 @@ static const u16 sSeadraTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_2_CROSS_EVOS +static const u16 sKingdraTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HORSEA + +#if P_FAMILY_GOLDEEN static const u16 sGoldeenTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -4911,7 +6494,9 @@ static const u16 sSeakingTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_GOLDEEN +#if P_FAMILY_STARYU static const u16 sStaryuTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -4994,6 +6579,55 @@ static const u16 sStarmieTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_STARYU + +#if P_FAMILY_MR_MIME +#if P_GEN_4_CROSS_EVOS +static const u16 sMimeJrTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS static const u16 sMrMimeTeachableLearnset[] = { MOVE_AERIAL_ACE, @@ -5053,6 +6687,88 @@ static const u16 sMrMimeTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GALARIAN_FORMS +static const u16 sMrMimeGalarianTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMrRimeTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MR_MIME + +#if P_FAMILY_SCYTHER static const u16 sScytherTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -5089,6 +6805,102 @@ static const u16 sScytherTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_2_CROSS_EVOS +static const u16 sScizorTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS + +#if P_GEN_8_CROSS_EVOS +static const u16 sKleavorTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_SCYTHER + +#if P_FAMILY_JYNX +#if P_GEN_2_CROSS_EVOS +static const u16 sSmoochumTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS + static const u16 sJynxTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -5139,6 +6951,54 @@ static const u16 sJynxTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_JYNX + +#if P_FAMILY_ELECTABUZZ +#if P_GEN_2_CROSS_EVOS +static const u16 sElekidTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS static const u16 sElectabuzzTeachableLearnset[] = { MOVE_ATTRACT, @@ -5189,6 +7049,98 @@ static const u16 sElectabuzzTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sElectivireTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ELECTABUZZ + +#if P_FAMILY_MAGMAR +#if P_GEN_2_CROSS_EVOS +static const u16 sMagbyTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS + static const u16 sMagmarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -5232,6 +7184,51 @@ static const u16 sMagmarTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sMagmortarTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGMAR + +#if P_FAMILY_PINSIR static const u16 sPinsirTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -5270,7 +7267,9 @@ static const u16 sPinsirTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PINSIR +#if P_FAMILY_TAUROS static const u16 sTaurosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -5314,6 +7313,166 @@ static const u16 sTaurosTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_PALDEAN_FORMS +static const u16 sTaurosPaldeanCombatBreedTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_CLOSE_COMBAT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_GIGA_IMPACT, + MOVE_HELPING_HAND, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_IRON_HEAD, + MOVE_OUTRAGE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_REVERSAL, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SMART_STRIKE, + MOVE_SOLAR_BEAM, + MOVE_STOMPING_TANTRUM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_TRAILBLAZE, + MOVE_WILD_CHARGE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; + +static const u16 sTaurosPaldeanBlazeBreedTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_CLOSE_COMBAT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_GIGA_IMPACT, + MOVE_HELPING_HAND, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_IRON_HEAD, + MOVE_OUTRAGE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_REVERSAL, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SMART_STRIKE, + MOVE_SOLAR_BEAM, + MOVE_STOMPING_TANTRUM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_TRAILBLAZE, + MOVE_WILD_CHARGE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; + +static const u16 sTaurosPaldeanAquaBreedTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_CLOSE_COMBAT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_GIGA_IMPACT, + MOVE_HELPING_HAND, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_IRON_HEAD, + MOVE_OUTRAGE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_REVERSAL, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SMART_STRIKE, + MOVE_SOLAR_BEAM, + MOVE_STOMPING_TANTRUM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_TRAILBLAZE, + MOVE_WILD_CHARGE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_TAUROS + +#if P_FAMILY_MAGIKARP static const u16 sMagikarpTeachableLearnset[] = { MOVE_UNAVAILABLE, }; @@ -5363,7 +7522,9 @@ static const u16 sGyaradosTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MAGIKARP +#if P_FAMILY_LAPRAS static const u16 sLaprasTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -5407,11 +7568,15 @@ static const u16 sLaprasTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_LAPRAS +#if P_FAMILY_DITTO static const u16 sDittoTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DITTO +#if P_FAMILY_EEVEE static const u16 sEeveeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -5561,6 +7726,196 @@ static const u16 sFlareonTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_2_CROSS_EVOS +static const u16 sEspeonTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sUmbreonTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_2_CROSS_EVOS + +#if P_GEN_4_CROSS_EVOS +static const u16 sLeafeonTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGlaceonTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS + +#if P_GEN_6_CROSS_EVOS +static const u16 sSylveonTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_6_CROSS_EVOS +#endif //P_FAMILY_EEVEE + +#if P_FAMILY_PORYGON static const u16 sPorygonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, @@ -5603,6 +7958,91 @@ static const u16 sPorygonTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_2_CROSS_EVOS +static const u16 sPorygon2TeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +#if P_GEN_4_CROSS_EVOS +static const u16 sPorygonZTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_PORYGON + +#if P_FAMILY_OMANYTE static const u16 sOmanyteTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -5680,7 +8120,9 @@ static const u16 sOmastarTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_OMANYTE +#if P_FAMILY_KABUTO static const u16 sKabutoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -5770,7 +8212,9 @@ static const u16 sKabutopsTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_KABUTO +#if P_FAMILY_AERODACTYL static const u16 sAerodactylTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -5813,6 +8257,63 @@ static const u16 sAerodactylTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_AERODACTYL + +#if P_FAMILY_SNORLAX +#if P_GEN_4_CROSS_EVOS +static const u16 sMunchlaxTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_METRONOME, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS static const u16 sSnorlaxTeachableLearnset[] = { MOVE_ATTRACT, @@ -5874,7 +8375,9 @@ static const u16 sSnorlaxTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SNORLAX +#if P_FAMILY_ARTICUNO static const u16 sArticunoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, @@ -5912,6 +8415,32 @@ static const u16 sArticunoTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GALARIAN_FORMS +static const u16 sArticunoGalarianTeachableLearnset[] = { + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_FLY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_STEEL_WING, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ARTICUNO + +#if P_FAMILY_ZAPDOS static const u16 sZapdosTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, @@ -5950,6 +8479,32 @@ static const u16 sZapdosTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GALARIAN_FORMS +static const u16 sZapdosGalarianTeachableLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_FACADE, + MOVE_FLY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZAPDOS + +#if P_FAMILY_MOLTRES static const u16 sMoltresTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, @@ -5987,6 +8542,28 @@ static const u16 sMoltresTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GALARIAN_FORMS +static const u16 sMoltresGalarianTeachableLearnset[] = { + MOVE_FACADE, + MOVE_FLY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MOLTRES + +#if P_FAMILY_DRATINI static const u16 sDratiniTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -6136,7 +8713,9 @@ static const u16 sDragoniteTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DRATINI +#if P_FAMILY_MEWTWO static const u16 sMewtwoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, @@ -6208,12 +8787,16 @@ static const u16 sMewtwoTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MEWTWO +#if P_FAMILY_MEW // Instead of reading this array for Mew, it checks for exceptions in CanLearnTeachableMove instead. static const u16 sMewTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MEW +#if P_FAMILY_CHIKORITA static const u16 sChikoritaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -6327,7 +8910,9 @@ static const u16 sMeganiumTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CHIKORITA +#if P_FAMILY_CYNDAQUIL static const u16 sCyndaquilTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -6454,6 +9039,14 @@ static const u16 sTyphlosionTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_HISUIAN_FORMS +static const u16 sTyphlosionHisuianTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_CYNDAQUIL + +#if P_FAMILY_TOTODILE static const u16 sTotodileTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -6607,7 +9200,9 @@ static const u16 sFeraligatrTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TOTODILE +#if P_FAMILY_SENTRET static const u16 sSentretTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -6706,7 +9301,9 @@ static const u16 sFurretTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SENTRET +#if P_FAMILY_HOOTHOOT static const u16 sHoothootTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -6777,7 +9374,9 @@ static const u16 sNoctowlTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_HOOTHOOT +#if P_FAMILY_LEDYBA static const u16 sLedybaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -6861,7 +9460,9 @@ static const u16 sLedianTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_LEDYBA +#if P_FAMILY_SPINARAK static const u16 sSpinarakTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -6923,42 +9524,9 @@ static const u16 sAriadosTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SPINARAK -static const u16 sCrobatTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MIMIC, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_CHINCHOU static const u16 sChinchouTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -7029,144 +9597,9 @@ static const u16 sLanturnTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CHINCHOU -static const u16 sPichuTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MIMIC, - MOVE_MUD_SLAP, - MOVE_ROLLOUT, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sCleffaTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MIMIC, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SOFT_BOILED, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sIgglybuffTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MIMIC, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_TOGEPI static const u16 sTogepiTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -7271,6 +9704,55 @@ static const u16 sTogeticTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sTogekissTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TOGEPI + +#if P_FAMILY_NATU static const u16 sNatuTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -7350,7 +9832,9 @@ static const u16 sXatuTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_NATU +#if P_FAMILY_MAREEP static const u16 sMareepTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -7473,37 +9957,46 @@ static const u16 sAmpharosTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MAREEP -static const u16 sBellossomTeachableLearnset[] = { +#if P_FAMILY_MARILL +#if P_GEN_3_CROSS_EVOS +static const u16 sAzurillTeachableLearnset[] = { MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, + MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, MOVE_FACADE, - MOVE_FLASH, MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, + MOVE_HAIL, MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, MOVE_PROTECT, + MOVE_RAIN_DANCE, MOVE_REST, MOVE_RETURN, - MOVE_SAFEGUARD, MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, + MOVE_SURF, MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, MOVE_DOUBLE_EDGE, MOVE_ENDURE, + MOVE_ICY_WIND, MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SUBSTITUTE, MOVE_SWAGGER, - MOVE_SWORDS_DANCE, + MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_GEN_3_CROSS_EVOS static const u16 sMarillTeachableLearnset[] = { MOVE_ATTRACT, @@ -7599,6 +10092,44 @@ static const u16 sAzumarillTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MARILL + +#if P_FAMILY_SUDOWOODO +#if P_GEN_4_CROSS_EVOS +static const u16 sBonslyTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS static const u16 sSudowoodoTeachableLearnset[] = { MOVE_ATTRACT, @@ -7648,56 +10179,9 @@ static const u16 sSudowoodoTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SUDOWOODO -static const u16 sPolitoedTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MIMIC, - MOVE_MUD_SLAP, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_HOPPIP static const u16 sHoppipTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -7791,7 +10275,9 @@ static const u16 sJumpluffTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_HOPPIP +#if P_FAMILY_AIPOM static const u16 sAipomTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -7848,6 +10334,57 @@ static const u16 sAipomTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sAmbipomTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_AIPOM + +#if P_FAMILY_SUNKERN static const u16 sSunkernTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -7910,7 +10447,9 @@ static const u16 sSunfloraTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SUNKERN +#if P_FAMILY_YANMA static const u16 sYanmaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -7943,6 +10482,43 @@ static const u16 sYanmaTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sYanmegaTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_YANMA + +#if P_FAMILY_WOOPER static const u16 sWooperTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -8043,83 +10619,110 @@ static const u16 sQuagsireTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sEspeonTeachableLearnset[] = { +#if P_PALDEAN_FORMS +static const u16 sWooperPaldeanTeachableLearnset[] = { + MOVE_ACID_SPRAY, + MOVE_AMNESIA, MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_TOXIC, + MOVE_AVALANCHE, + MOVE_BLIZZARD, MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MIMIC, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - -static const u16 sUmbreonTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, + MOVE_BULLDOZE, + MOVE_CHILLING_WATER, MOVE_DIG, - MOVE_DOUBLE_TEAM, + MOVE_EARTH_POWER, + MOVE_EARTHQUAKE, + MOVE_ENCORE, + MOVE_ENDURE, MOVE_FACADE, - MOVE_FLASH, MOVE_FRUSTRATION, + MOVE_HELPING_HAND, MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, + MOVE_HYDRO_PUMP, + MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_LIQUIDATION, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, MOVE_PROTECT, - MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, MOVE_RETURN, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MIMIC, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_SLEEP_TALK, - MOVE_SNORE, + MOVE_SLUDGE_BOMB, + MOVE_SNOWSCAPE, + MOVE_SPIKES, + MOVE_STEALTH_ROCK, + MOVE_STOMPING_TANTRUM, + MOVE_STONE_EDGE, MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, + MOVE_SURF, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_TOXIC, + MOVE_TRAILBLAZE, + MOVE_WATER_PULSE, + MOVE_WATERFALL, MOVE_UNAVAILABLE, }; +static const u16 sClodsireTeachableLearnset[] = { + MOVE_ACID_SPRAY, + MOVE_AMNESIA, + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_CHILLING_WATER, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_GIGA_IMPACT, + MOVE_GUNK_SHOT, + MOVE_HEAVY_SLAM, + MOVE_HELPING_HAND, + MOVE_HYDRO_PUMP, + MOVE_HYPER_BEAM, + MOVE_IRON_HEAD, + MOVE_LIQUIDATION, + MOVE_LOW_KICK, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_POISON_JAB, + MOVE_POISON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_SPIKES, + MOVE_STEALTH_ROCK, + MOVE_STOMPING_TANTRUM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SURF, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_TOXIC_SPIKES, + MOVE_TRAILBLAZE, + MOVE_VENOSHOCK, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_WOOPER + +#if P_FAMILY_MURKROW static const u16 sMurkrowTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -8159,57 +10762,36 @@ static const u16 sMurkrowTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSlowkingTeachableLearnset[] = { +#if P_GEN_4_CROSS_EVOS +static const u16 sHonchkrowTeachableLearnset[] = { + MOVE_AERIAL_ACE, MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DIVE, MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, + MOVE_FLY, MOVE_FRUSTRATION, - MOVE_HAIL, MOVE_HIDDEN_POWER, MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, MOVE_PROTECT, MOVE_PSYCHIC, MOVE_RAIN_DANCE, MOVE_REST, MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, MOVE_SECRET_POWER, MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_STRENGTH, + MOVE_SNATCH, + MOVE_STEEL_WING, MOVE_SUNNY_DAY, - MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MIMIC, MOVE_MUD_SLAP, MOVE_PSYCH_UP, - MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SUBSTITUTE, @@ -8218,7 +10800,10 @@ static const u16 sSlowkingTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MURKROW +#if P_FAMILY_MISDREAVUS static const u16 sMisdreavusTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -8261,17 +10846,73 @@ static const u16 sMisdreavusTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sMismagiusTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MISDREAVUS + +#if P_FAMILY_UNOWN static const u16 sUnownTeachableLearnset[] = { MOVE_HIDDEN_POWER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_UNOWN + +#if P_FAMILY_WOBBUFFET +#if P_GEN_3_CROSS_EVOS +static const u16 sWynautTeachableLearnset[] = { + MOVE_SAFEGUARD, + MOVE_COUNTER, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_3_CROSS_EVOS static const u16 sWobbuffetTeachableLearnset[] = { MOVE_SAFEGUARD, MOVE_COUNTER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_WOBBUFFET +#if P_FAMILY_GIRAFARIG static const u16 sGirafarigTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -8316,6 +10957,67 @@ static const u16 sGirafarigTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_9_CROSS_EVOS +static const u16 sFarigirafTeachableLearnset[] = { + MOVE_AGILITY, + MOVE_AMNESIA, + MOVE_BATON_PASS, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_CALM_MIND, + MOVE_CHARGE_BEAM, + MOVE_CONFUSE_RAY, + MOVE_CRUNCH, + MOVE_DAZZLING_GLEAM, + MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_FOUL_PLAY, + MOVE_GIGA_IMPACT, + MOVE_GRASS_KNOT, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_IMPRISON, + MOVE_IRON_HEAD, + MOVE_LIGHT_SCREEN, + MOVE_LOW_KICK, + MOVE_NASTY_PLOT, + MOVE_NIGHT_SHADE, + MOVE_PROTECT, + MOVE_PSYBEAM, + MOVE_PSYCHIC, + MOVE_PSYCHIC_FANGS, + MOVE_PSYCHIC_TERRAIN, + MOVE_PSYSHOCK, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_STOMPING_TANTRUM, + MOVE_STORED_POWER, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, + MOVE_TRAILBLAZE, + MOVE_TRICK, + MOVE_TRICK_ROOM, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_GIRAFARIG + +#if P_FAMILY_PINECO static const u16 sPinecoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -8393,7 +11095,9 @@ static const u16 sForretressTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PINECO +#if P_FAMILY_DUNSPARCE static const u16 sDunsparceTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -8444,6 +11148,73 @@ static const u16 sDunsparceTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_9_CROSS_EVOS +static const u16 sDudunsparceTeachableLearnset[] = { + MOVE_AGILITY, + MOVE_AIR_SLASH, + MOVE_AMNESIA, + MOVE_BATON_PASS, + MOVE_BLIZZARD, + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_CALM_MIND, + MOVE_CHILLING_WATER, + MOVE_DIG, + MOVE_DRAGON_TAIL, + MOVE_DRILL_RUN, + MOVE_EARTHQUAKE, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_GIGA_IMPACT, + MOVE_HEAVY_SLAM, + MOVE_HELPING_HAND, + MOVE_HEX, + MOVE_HURRICANE, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_ICE_BEAM, + MOVE_ICE_SPINNER, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_OUTRAGE, + MOVE_POISON_JAB, + MOVE_POISON_TAIL, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SMART_STRIKE, + MOVE_SOLAR_BEAM, + MOVE_STEALTH_ROCK, + MOVE_STOMPING_TANTRUM, + MOVE_STONE_EDGE, + MOVE_STORED_POWER, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAILWIND, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_WILD_CHARGE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_DUNSPARCE + +#if P_FAMILY_GLIGAR static const u16 sGligarTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -8488,8 +11259,11 @@ static const u16 sGligarTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSteelixTeachableLearnset[] = { +#if P_GEN_4_CROSS_EVOS +static const u16 sGliscorTeachableLearnset[] = { + MOVE_AERIAL_ACE, MOVE_ATTRACT, + MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -8500,35 +11274,37 @@ static const u16 sSteelixTeachableLearnset[] = { MOVE_HYPER_BEAM, MOVE_IRON_TAIL, MOVE_PROTECT, + MOVE_RAIN_DANCE, MOVE_REST, MOVE_RETURN, - MOVE_ROAR, MOVE_ROCK_SMASH, MOVE_ROCK_TOMB, MOVE_SANDSTORM, MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STEEL_WING, MOVE_STRENGTH, MOVE_SUNNY_DAY, MOVE_TAUNT, + MOVE_THIEF, MOVE_TORMENT, MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_MIMIC, + MOVE_FURY_CUTTER, MOVE_MUD_SLAP, - MOVE_PSYCH_UP, MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, MOVE_SLEEP_TALK, MOVE_SNORE, MOVE_SUBSTITUTE, MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_GLIGAR +#if P_FAMILY_SNUBBULL static const u16 sSnubbullTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -8648,7 +11424,9 @@ static const u16 sGranbullTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SNUBBULL +#if P_FAMILY_QWILFISH static const u16 sQwilfishTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -8689,44 +11467,18 @@ static const u16 sQwilfishTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sScizorTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MIMIC, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, +#if P_HISUIAN_FORMS +static const u16 sQwilfishHisuianTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +static const u16 sOverqwilTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_QWILFISH + +#if P_FAMILY_SHUCKLE static const u16 sShuckleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -8762,7 +11514,9 @@ static const u16 sShuckleTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SHUCKLE +#if P_FAMILY_HERACROSS static const u16 sHeracrossTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -8804,7 +11558,9 @@ static const u16 sHeracrossTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_HERACROSS +#if P_FAMILY_SNEASEL static const u16 sSneaselTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -8858,6 +11614,69 @@ static const u16 sSneaselTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sWeavileTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS + +#if P_HISUIAN_FORMS +static const u16 sSneaselHisuianTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sSneaslerTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_SNEASEL + +#if P_FAMILY_TEDDIURSA static const u16 sTeddiursaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -8967,6 +11786,18 @@ static const u16 sUrsaringTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_8_CROSS_EVOS +static const u16 sUrsalunaTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sUrsalunaBloodmoonTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_TEDDIURSA + +#if P_FAMILY_SLUGMA static const u16 sSlugmaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -9040,7 +11871,9 @@ static const u16 sMagcargoTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SLUGMA +#if P_FAMILY_SWINUB static const u16 sSwinubTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -9120,6 +11953,46 @@ static const u16 sPiloswineTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sMamoswineTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SWINUB + +#if P_FAMILY_CORSOLA static const u16 sCorsolaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -9167,6 +12040,76 @@ static const u16 sCorsolaTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GALARIAN_FORMS +static const u16 sCorsolaGalarianTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCursolaTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_CORSOLA + +#if P_FAMILY_REMORAID static const u16 sRemoraidTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -9248,7 +12191,9 @@ static const u16 sOctilleryTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_REMORAID +#if P_FAMILY_DELIBIRD static const u16 sDelibirdTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -9289,6 +12234,43 @@ static const u16 sDelibirdTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DELIBIRD + +#if P_FAMILY_MANTINE +#if P_GEN_4_CROSS_EVOS +static const u16 sMantykeTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS static const u16 sMantineTeachableLearnset[] = { MOVE_AERIAL_ACE, @@ -9328,7 +12310,9 @@ static const u16 sMantineTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MANTINE +#if P_FAMILY_SKARMORY static const u16 sSkarmoryTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -9369,7 +12353,9 @@ static const u16 sSkarmoryTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SKARMORY +#if P_FAMILY_HOUNDOUR static const u16 sHoundourTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -9451,40 +12437,9 @@ static const u16 sHoundoomTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_HOUNDOUR -static const u16 sKingdraTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MIMIC, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_PHANPY static const u16 sPhanpyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -9555,48 +12510,9 @@ static const u16 sDonphanTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PHANPY -static const u16 sPorygon2TeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MIMIC, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_STANTLER static const u16 sStantlerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -9641,219 +12557,23 @@ static const u16 sStantlerTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_8_CROSS_EVOS +static const u16 sWyrdeerTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_STANTLER + +#if P_FAMILY_SMEARGLE static const u16 sSmeargleTeachableLearnset[] = { MOVE_FLAMETHROWER, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SMEARGLE -static const u16 sTyrogueTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MIMIC, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - -static const u16 sHitmontopTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MIMIC, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - -static const u16 sSmoochumTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MIMIC, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_UNAVAILABLE, -}; - -static const u16 sElekidTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MIMIC, - MOVE_MUD_SLAP, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMagbyTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_MIMIC, - MOVE_MUD_SLAP, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_MILTANK static const u16 sMiltankTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -9911,76 +12631,9 @@ static const u16 sMiltankTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MILTANK -static const u16 sBlisseyTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MIMIC, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SOFT_BOILED, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_RAIKOU static const u16 sRaikouTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, @@ -10023,7 +12676,9 @@ static const u16 sRaikouTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_RAIKOU +#if P_FAMILY_ENTEI static const u16 sEnteiTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, @@ -10065,7 +12720,9 @@ static const u16 sEnteiTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ENTEI +#if P_FAMILY_SUICUNE static const u16 sSuicuneTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -10109,7 +12766,9 @@ static const u16 sSuicuneTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SUICUNE +#if P_FAMILY_LARVITAR static const u16 sLarvitarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -10242,7 +12901,9 @@ static const u16 sTyranitarTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_LARVITAR +#if P_FAMILY_LUGIA static const u16 sLugiaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, @@ -10300,7 +12961,9 @@ static const u16 sLugiaTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_LUGIA +#if P_FAMILY_HO_OH static const u16 sHoOhTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, @@ -10351,7 +13014,9 @@ static const u16 sHoOhTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_HO_OH +#if P_FAMILY_CELEBI static const u16 sCelebiTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, @@ -10397,7 +13062,9 @@ static const u16 sCelebiTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CELEBI +#if P_FAMILY_TREECKO static const u16 sTreeckoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -10545,7 +13212,9 @@ static const u16 sSceptileTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TREECKO +#if P_FAMILY_TORCHIC static const u16 sTorchicTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -10683,7 +13352,9 @@ static const u16 sBlazikenTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TORCHIC +#if P_FAMILY_MUDKIP static const u16 sMudkipTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -10823,7 +13494,9 @@ static const u16 sSwampertTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MUDKIP +#if P_FAMILY_POOCHYENA static const u16 sPoochyenaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -10897,7 +13570,9 @@ static const u16 sMightyenaTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_POOCHYENA +#if P_FAMILY_ZIGZAGOON static const u16 sZigzagoonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -10989,6 +13664,109 @@ static const u16 sLinooneTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GALARIAN_FORMS +static const u16 sZigzagoonGalarianTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_FACADE, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLinooneGalarianTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sObstagoonTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZIGZAGOON + +#if P_FAMILY_WURMPLE static const u16 sWurmpleTeachableLearnset[] = { MOVE_SNORE, MOVE_UNAVAILABLE, @@ -11066,7 +13844,9 @@ static const u16 sDustoxTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_WURMPLE +#if P_FAMILY_LOTAD static const u16 sLotadTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -11202,7 +13982,9 @@ static const u16 sLudicoloTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_LOTAD +#if P_FAMILY_SEEDOT static const u16 sSeedotTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -11332,7 +14114,9 @@ static const u16 sShiftryTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SEEDOT +#if P_FAMILY_TAILLOW static const u16 sTaillowTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -11393,7 +14177,9 @@ static const u16 sSwellowTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TAILLOW +#if P_FAMILY_WINGULL static const u16 sWingullTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -11463,7 +14249,9 @@ static const u16 sPelipperTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_WINGULL +#if P_FAMILY_RALTS static const u16 sRaltsTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -11609,6 +14397,66 @@ static const u16 sGardevoirTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sGalladeTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RALTS + +#if P_FAMILY_SURSKIT static const u16 sSurskitTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -11680,7 +14528,9 @@ static const u16 sMasquerainTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SURSKIT +#if P_FAMILY_SHROOMISH static const u16 sShroomishTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -11761,7 +14611,9 @@ static const u16 sBreloomTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SHROOMISH +#if P_FAMILY_SLAKOTH static const u16 sSlakothTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -11930,7 +14782,9 @@ static const u16 sSlakingTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SLAKOTH +#if P_FAMILY_NINCADA static const u16 sNincadaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CUT, @@ -12032,7 +14886,9 @@ static const u16 sShedinjaTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_NINCADA +#if P_FAMILY_WHISMUR static const u16 sWhismurTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -12190,7 +15046,9 @@ static const u16 sExploudTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_WHISMUR +#if P_FAMILY_MAKUHITA static const u16 sMakuhitaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -12279,43 +15137,9 @@ static const u16 sHariyamaTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MAKUHITA -static const u16 sAzurillTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MIMIC, - MOVE_MUD_SLAP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_NOSEPASS static const u16 sNosepassTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -12359,6 +15183,49 @@ static const u16 sNosepassTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sProbopassTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_NOSEPASS + +#if P_FAMILY_SKITTY static const u16 sSkittyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -12451,7 +15318,9 @@ static const u16 sDelcattyTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SKITTY +#if P_FAMILY_SABLEYE static const u16 sSableyeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -12506,7 +15375,9 @@ static const u16 sSableyeTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SABLEYE +#if P_FAMILY_MAWILE static const u16 sMawileTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -12558,7 +15429,9 @@ static const u16 sMawileTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MAWILE +#if P_FAMILY_ARON static const u16 sAronTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -12704,7 +15577,9 @@ static const u16 sAggronTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ARON +#if P_FAMILY_MEDITITE static const u16 sMedititeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -12805,7 +15680,9 @@ static const u16 sMedichamTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MEDITITE +#if P_FAMILY_ELECTRIKE static const u16 sElectrikeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -12879,7 +15756,9 @@ static const u16 sManectricTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ELECTRIKE +#if P_FAMILY_PLUSLE static const u16 sPlusleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -12920,7 +15799,9 @@ static const u16 sPlusleTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PLUSLE +#if P_FAMILY_MINUN static const u16 sMinunTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -12961,7 +15842,9 @@ static const u16 sMinunTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MINUN +#if P_FAMILY_VOLBEAT_ILLUMISE static const u16 sVolbeatTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -13059,6 +15942,42 @@ static const u16 sIllumiseTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_VOLBEAT_ILLUMISE + +#if P_FAMILY_ROSELIA +#if P_GEN_4_CROSS_EVOS +static const u16 sBudewTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS static const u16 sRoseliaTeachableLearnset[] = { MOVE_ATTRACT, @@ -13096,6 +16015,44 @@ static const u16 sRoseliaTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sRoseradeTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ROSELIA + +#if P_FAMILY_GULPIN static const u16 sGulpinTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -13187,7 +16144,9 @@ static const u16 sSwalotTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_GULPIN +#if P_FAMILY_CARVANHA static const u16 sCarvanhaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -13265,7 +16224,9 @@ static const u16 sSharpedoTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CARVANHA +#if P_FAMILY_WAILMER static const u16 sWailmerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -13342,7 +16303,9 @@ static const u16 sWailordTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_WAILMER +#if P_FAMILY_NUMEL static const u16 sNumelTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -13418,7 +16381,9 @@ static const u16 sCameruptTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_NUMEL +#if P_FAMILY_TORKOAL static const u16 sTorkoalTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -13456,7 +16421,9 @@ static const u16 sTorkoalTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TORKOAL +#if P_FAMILY_SPOINK static const u16 sSpoinkTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -13552,7 +16519,9 @@ static const u16 sGrumpigTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SPOINK +#if P_FAMILY_SPINDA static const u16 sSpindaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -13609,7 +16578,9 @@ static const u16 sSpindaTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SPINDA +#if P_FAMILY_TRAPINCH static const u16 sTrapinchTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -13727,7 +16698,9 @@ static const u16 sFlygonTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TRAPINCH +#if P_FAMILY_CACNEA static const u16 sCacneaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -13808,7 +16781,9 @@ static const u16 sCacturneTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CACNEA +#if P_FAMILY_SWABLU static const u16 sSwabluTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -13886,7 +16861,9 @@ static const u16 sAltariaTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SWABLU +#if P_FAMILY_ZANGOOSE static const u16 sZangooseTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -13949,7 +16926,9 @@ static const u16 sZangooseTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ZANGOOSE +#if P_FAMILY_SEVIPER static const u16 sSeviperTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -13988,7 +16967,9 @@ static const u16 sSeviperTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SEVIPER +#if P_FAMILY_LUNATONE static const u16 sLunatoneTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -14032,7 +17013,9 @@ static const u16 sLunatoneTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_LUNATONE +#if P_FAMILY_SOLROCK static const u16 sSolrockTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -14077,7 +17060,9 @@ static const u16 sSolrockTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SOLROCK +#if P_FAMILY_BARBOACH static const u16 sBarboachTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -14149,7 +17134,9 @@ static const u16 sWhiscashTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BARBOACH +#if P_FAMILY_CORPHISH static const u16 sCorphishTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -14240,7 +17227,9 @@ static const u16 sCrawdauntTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CORPHISH +#if P_FAMILY_BALTOY static const u16 sBaltoyTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DIG, @@ -14325,7 +17314,9 @@ static const u16 sClaydolTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BALTOY +#if P_FAMILY_LILEEP static const u16 sLileepTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -14397,7 +17388,9 @@ static const u16 sCradilyTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_LILEEP +#if P_FAMILY_ANORITH static const u16 sAnorithTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -14472,7 +17465,9 @@ static const u16 sArmaldoTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ANORITH +#if P_FAMILY_FEEBAS static const u16 sFeebasTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -14543,7 +17538,9 @@ static const u16 sMiloticTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_FEEBAS +#if P_FAMILY_CASTFORM static const u16 sCastformTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -14586,7 +17583,9 @@ static const u16 sCastformTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CASTFORM +#if P_FAMILY_KECLEON static const u16 sKecleonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -14651,7 +17650,9 @@ static const u16 sKecleonTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_KECLEON +#if P_FAMILY_SHUPPET static const u16 sShuppetTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -14734,7 +17735,9 @@ static const u16 sBanetteTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SHUPPET +#if P_FAMILY_DUSKULL static const u16 sDuskullTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -14829,6 +17832,57 @@ static const u16 sDusclopsTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sDusknoirTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_DUSKULL + +#if P_FAMILY_TROPIUS static const u16 sTropiusTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -14868,6 +17922,49 @@ static const u16 sTropiusTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TROPIUS + +#if P_FAMILY_CHIMECHO +#if P_GEN_4_CROSS_EVOS +static const u16 sChinglingTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS static const u16 sChimechoTeachableLearnset[] = { MOVE_ATTRACT, @@ -14909,7 +18006,9 @@ static const u16 sChimechoTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CHIMECHO +#if P_FAMILY_ABSOL static const u16 sAbsolTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -14967,13 +18066,9 @@ static const u16 sAbsolTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ABSOL -static const u16 sWynautTeachableLearnset[] = { - MOVE_SAFEGUARD, - MOVE_COUNTER, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_SNORUNT static const u16 sSnoruntTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -15046,6 +18141,53 @@ static const u16 sGlalieTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_4_CROSS_EVOS +static const u16 sFroslassTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SNORUNT + +#if P_FAMILY_SPHEAL static const u16 sSphealTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -15169,7 +18311,9 @@ static const u16 sWalreinTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SPHEAL +#if P_FAMILY_CLAMPERL static const u16 sClamperlTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -15274,7 +18418,9 @@ static const u16 sGorebyssTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CLAMPERL +#if P_FAMILY_RELICANTH static const u16 sRelicanthTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -15315,7 +18461,9 @@ static const u16 sRelicanthTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_RELICANTH +#if P_FAMILY_LUVDISC static const u16 sLuvdiscTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -15348,7 +18496,9 @@ static const u16 sLuvdiscTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_LUVDISC +#if P_FAMILY_BAGON static const u16 sBagonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -15470,7 +18620,9 @@ static const u16 sSalamenceTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BAGON +#if P_FAMILY_BELDUM static const u16 sBeldumTeachableLearnset[] = { MOVE_UNAVAILABLE, }; @@ -15574,7 +18726,9 @@ static const u16 sMetagrossTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BELDUM +#if P_FAMILY_REGIROCK static const u16 sRegirockTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DIG, @@ -15624,7 +18778,9 @@ static const u16 sRegirockTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_REGIROCK +#if P_FAMILY_REGICE static const u16 sRegiceTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -15675,7 +18831,9 @@ static const u16 sRegiceTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_REGICE +#if P_FAMILY_REGISTEEL static const u16 sRegisteelTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, @@ -15725,7 +18883,9 @@ static const u16 sRegisteelTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_REGISTEEL +#if P_FAMILY_LATIAS static const u16 sLatiasTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -15781,7 +18941,9 @@ static const u16 sLatiasTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_LATIAS +#if P_FAMILY_LATIOS static const u16 sLatiosTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -15837,7 +18999,9 @@ static const u16 sLatiosTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_LATIOS +#if P_FAMILY_KYOGRE static const u16 sKyogreTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -15885,7 +19049,9 @@ static const u16 sKyogreTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_KYOGRE +#if P_FAMILY_GROUDON static const u16 sGroudonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, @@ -15945,7 +19111,9 @@ static const u16 sGroudonTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_GROUDON +#if P_FAMILY_RAYQUAZA static const u16 sRayquazaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, @@ -16002,7 +19170,9 @@ static const u16 sRayquazaTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_RAYQUAZA +#if P_FAMILY_JIRACHI static const u16 sJirachiTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, @@ -16052,8 +19222,10 @@ static const u16 sJirachiTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_JIRACHI -static const u16 sDeoxysTeachableLearnset[] = { +#if P_FAMILY_DEOXYS +static const u16 sDeoxysNormalTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -16116,7 +19288,128 @@ static const u16 sDeoxysTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -#if P_GEN_4_POKEMON == TRUE +static const u16 sDeoxysAttackTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDeoxysDefenseTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDeoxysSpeedTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_DEOXYS + +#if P_FAMILY_TURTWIG static const u16 sTurtwigTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -16223,7 +19516,9 @@ static const u16 sTorterraTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TURTWIG +#if P_FAMILY_CHIMCHAR static const u16 sChimcharTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -16353,7 +19648,9 @@ static const u16 sInfernapeTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CHIMCHAR +#if P_FAMILY_PIPLUP static const u16 sPiplupTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -16466,7 +19763,9 @@ static const u16 sEmpoleonTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PIPLUP +#if P_FAMILY_STARLY static const u16 sStarlyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -16549,7 +19848,9 @@ static const u16 sStaraptorTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_STARLY +#if P_FAMILY_BIDOOF static const u16 sBidoofTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -16639,7 +19940,9 @@ static const u16 sBibarelTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BIDOOF +#if P_FAMILY_KRICKETOT static const u16 sKricketotTeachableLearnset[] = { MOVE_MUD_SLAP, MOVE_SNORE, @@ -16677,7 +19980,9 @@ static const u16 sKricketuneTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_KRICKETOT +#if P_FAMILY_SHINX static const u16 sShinxTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -16777,73 +20082,9 @@ static const u16 sLuxrayTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SHINX -static const u16 sBudewTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, - MOVE_UNAVAILABLE, -}; - -static const u16 sRoseradeTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_CRANIDOS static const u16 sCranidosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -16933,7 +20174,9 @@ static const u16 sRampardosTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CRANIDOS +#if P_FAMILY_SHIELDON static const u16 sShieldonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -17017,7 +20260,9 @@ static const u16 sBastiodonTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SHIELDON +#if P_FAMILY_BURMY static const u16 sBurmyTeachableLearnset[] = { MOVE_HIDDEN_POWER, MOVE_PROTECT, @@ -17025,7 +20270,7 @@ static const u16 sBurmyTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWormadamTeachableLearnset[] = { +static const u16 sWormadamPlantCloakTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, @@ -17058,6 +20303,72 @@ static const u16 sWormadamTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +static const u16 sWormadamSandyCloakTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sWormadamTrashCloakTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + static const u16 sMothimTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -17092,7 +20403,9 @@ static const u16 sMothimTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BURMY +#if P_FAMILY_COMBEE static const u16 sCombeeTeachableLearnset[] = { MOVE_MUD_SLAP, MOVE_SNORE, @@ -17129,7 +20442,9 @@ static const u16 sVespiquenTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_COMBEE +#if P_FAMILY_PACHIRISU static const u16 sPachirisuTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, @@ -17163,7 +20478,9 @@ static const u16 sPachirisuTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PACHIRISU +#if P_FAMILY_BUIZEL static const u16 sBuizelTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -17246,7 +20563,9 @@ static const u16 sFloatzelTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BUIZEL +#if P_FAMILY_CHERUBI static const u16 sCherubiTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -17302,7 +20621,9 @@ static const u16 sCherrimTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CHERUBI +#if P_FAMILY_SHELLOS static const u16 sShellosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -17372,54 +20693,9 @@ static const u16 sGastrodonTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SHELLOS -static const u16 sAmbipomTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_DRIFLOON static const u16 sDrifloonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -17500,7 +20776,9 @@ static const u16 sDrifblimTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DRIFLOON +#if P_FAMILY_BUNEARY static const u16 sBunearyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, @@ -17583,85 +20861,9 @@ static const u16 sLopunnyTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BUNEARY -static const u16 sMismagiusTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sHonchkrowTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_GLAMEOW static const u16 sGlameowTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -17745,46 +20947,9 @@ static const u16 sPuruglyTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_GLAMEOW -static const u16 sChinglingTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_STUNKY static const u16 sStunkyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, @@ -17863,7 +21028,9 @@ static const u16 sSkuntankTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_STUNKY +#if P_FAMILY_BRONZOR static const u16 sBronzorTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -17939,126 +21106,9 @@ static const u16 sBronzongTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BRONZOR -static const u16 sBonslyTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_MIMIC, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_UNAVAILABLE, -}; - -static const u16 sMimeJrTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MIMIC, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sHappinyTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_COUNTER, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_CHATOT static const u16 sChatotTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -18088,7 +21138,9 @@ static const u16 sChatotTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CHATOT +#if P_FAMILY_SPIRITOMB static const u16 sSpiritombTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -18124,7 +21176,9 @@ static const u16 sSpiritombTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SPIRITOMB +#if P_FAMILY_GIBLE static const u16 sGibleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -18244,60 +21298,9 @@ static const u16 sGarchompTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_GIBLE -static const u16 sMunchlaxTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_METRONOME, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_RIOLU static const u16 sRioluTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -18380,7 +21383,9 @@ static const u16 sLucarioTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_RIOLU +#if P_FAMILY_HIPPOPOTAS static const u16 sHippopotasTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -18446,7 +21451,9 @@ static const u16 sHippowdonTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_HIPPOPOTAS +#if P_FAMILY_SKORUPI static const u16 sSkorupiTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -18526,7 +21533,9 @@ static const u16 sDrapionTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SKORUPI +#if P_FAMILY_CROAGUNK static const u16 sCroagunkTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -18613,7 +21622,9 @@ static const u16 sToxicroakTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CROAGUNK +#if P_FAMILY_CARNIVINE static const u16 sCarnivineTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -18644,7 +21655,9 @@ static const u16 sCarnivineTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CARNIVINE +#if P_FAMILY_FINNEON static const u16 sFinneonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -18709,40 +21722,9 @@ static const u16 sLumineonTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_FINNEON -static const u16 sMantykeTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_SNOVER static const u16 sSnoverTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -18823,773 +21805,9 @@ static const u16 sAbomasnowTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SNOVER -static const u16 sWeavileTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMagnezoneTeachableLearnset[] = { - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sLickilickyTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_DEFENSE_CURL, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, - MOVE_THUNDER_PUNCH, - MOVE_UNAVAILABLE, -}; - -static const u16 sRhyperiorTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, - MOVE_THUNDER_PUNCH, - MOVE_UNAVAILABLE, -}; - -static const u16 sTangrowthTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, - MOVE_UNAVAILABLE, -}; - -static const u16 sElectivireTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMagmortarTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, - MOVE_UNAVAILABLE, -}; - -static const u16 sTogekissTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sYanmegaTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - -static const u16 sLeafeonTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGlaceonTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - -static const u16 sGliscorTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMamoswineTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_UNAVAILABLE, -}; - -static const u16 sPorygonZTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGalladeTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sProbopassTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDusknoirTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_THUNDER_PUNCH, - MOVE_UNAVAILABLE, -}; - -static const u16 sFroslassTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_ROTOM static const u16 sRotomTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -19623,7 +21841,9 @@ static const u16 sRotomTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ROTOM +#if P_FAMILY_UXIE static const u16 sUxieTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -19668,7 +21888,9 @@ static const u16 sUxieTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_UXIE +#if P_FAMILY_MESPRIT static const u16 sMespritTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -19713,7 +21935,9 @@ static const u16 sMespritTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MESPRIT +#if P_FAMILY_AZELF static const u16 sAzelfTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -19761,7 +21985,9 @@ static const u16 sAzelfTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_AZELF +#if P_FAMILY_DIALGA static const u16 sDialgaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, @@ -19810,7 +22036,9 @@ static const u16 sDialgaTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DIALGA +#if P_FAMILY_PALKIA static const u16 sPalkiaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, @@ -19861,7 +22089,9 @@ static const u16 sPalkiaTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PALKIA +#if P_FAMILY_HEATRAN static const u16 sHeatranTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -19897,7 +22127,9 @@ static const u16 sHeatranTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_HEATRAN +#if P_FAMILY_REGIGIGAS static const u16 sRegigigasTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, @@ -19936,7 +22168,9 @@ static const u16 sRegigigasTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_REGIGIGAS +#if P_FAMILY_GIRATINA static const u16 sGiratinaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, @@ -19981,7 +22215,9 @@ static const u16 sGiratinaTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_GIRATINA +#if P_FAMILY_CRESSELIA static const u16 sCresseliaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -20020,7 +22256,9 @@ static const u16 sCresseliaTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CRESSELIA +#if P_FAMILY_MANAPHY static const u16 sPhioneTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_DIVE, @@ -20090,7 +22328,9 @@ static const u16 sManaphyTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MANAPHY +#if P_FAMILY_DARKRAI static const u16 sDarkraiTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, @@ -20140,8 +22380,10 @@ static const u16 sDarkraiTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DARKRAI -static const u16 sShayminTeachableLearnset[] = { +#if P_FAMILY_SHAYMIN +static const u16 sShayminLandTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -20172,6 +22414,29 @@ static const u16 sShayminTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +static const u16 sShayminSkyTeachableLearnset[] = { + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SHAYMIN + +#if P_FAMILY_ARCEUS static const u16 sArceusTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, @@ -20238,9 +22503,9 @@ static const u16 sArceusTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; -#endif +#endif //P_FAMILY_ARCEUS -#if P_GEN_5_POKEMON == TRUE +#if P_FAMILY_VICTINI static const u16 sVictiniTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, @@ -20281,7 +22546,9 @@ static const u16 sVictiniTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_VICTINI +#if P_FAMILY_SNIVY static const u16 sSnivyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -20383,7 +22650,9 @@ static const u16 sSerperiorTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SNIVY +#if P_FAMILY_TEPIG static const u16 sTepigTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -20490,7 +22759,9 @@ static const u16 sEmboarTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TEPIG +#if P_FAMILY_OSHAWOTT static const u16 sOshawottTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -20598,6 +22869,14 @@ static const u16 sSamurottTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_HISUIAN_FORMS +static const u16 sSamurottHisuianTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_OSHAWOTT + +#if P_FAMILY_PATRAT static const u16 sPatratTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -20666,7 +22945,9 @@ static const u16 sWatchogTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PATRAT +#if P_FAMILY_LILLIPUP static const u16 sLillipupTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -20761,7 +23042,9 @@ static const u16 sStoutlandTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_LILLIPUP +#if P_FAMILY_PURRLOIN static const u16 sPurrloinTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -20825,7 +23108,9 @@ static const u16 sLiepardTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PURRLOIN +#if P_FAMILY_PANSAGE static const u16 sPansageTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -20891,7 +23176,9 @@ static const u16 sSimisageTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PANSAGE +#if P_FAMILY_PANSEAR static const u16 sPansearTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, @@ -20960,7 +23247,9 @@ static const u16 sSimisearTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PANSEAR +#if P_FAMILY_PANPOUR static const u16 sPanpourTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -21037,7 +23326,9 @@ static const u16 sSimipourTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PANPOUR +#if P_FAMILY_MUNNA static const u16 sMunnaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -21109,7 +23400,9 @@ static const u16 sMusharnaTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MUNNA +#if P_FAMILY_PIDOVE static const u16 sPidoveTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -21183,7 +23476,9 @@ static const u16 sUnfezantTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PIDOVE +#if P_FAMILY_BLITZLE static const u16 sBlitzleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -21240,7 +23535,9 @@ static const u16 sZebstrikaTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BLITZLE +#if P_FAMILY_ROGGENROLA static const u16 sRoggenrolaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -21320,7 +23617,9 @@ static const u16 sGigalithTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ROGGENROLA +#if P_FAMILY_WOOBAT static const u16 sWoobatTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -21397,7 +23696,9 @@ static const u16 sSwoobatTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_WOOBAT +#if P_FAMILY_DRILBUR static const u16 sDrilburTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -21460,7 +23761,9 @@ static const u16 sExcadrillTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DRILBUR +#if P_FAMILY_AUDINO static const u16 sAudinoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -21509,7 +23812,9 @@ static const u16 sAudinoTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_AUDINO +#if P_FAMILY_TIMBURR static const u16 sTimburrTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -21612,7 +23917,9 @@ static const u16 sConkeldurrTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TIMBURR +#if P_FAMILY_TYMPOLE static const u16 sTympoleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -21696,7 +24003,9 @@ static const u16 sSeismitoadTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TYMPOLE +#if P_FAMILY_THROH static const u16 sThrohTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -21732,7 +24041,9 @@ static const u16 sThrohTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_THROH +#if P_FAMILY_SAWK static const u16 sSawkTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -21767,7 +24078,9 @@ static const u16 sSawkTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SAWK +#if P_FAMILY_SEWADDLE static const u16 sSewaddleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -21854,7 +24167,9 @@ static const u16 sLeavannyTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SEWADDLE +#if P_FAMILY_VENIPEDE static const u16 sVenipedeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -21939,7 +24254,9 @@ static const u16 sScolipedeTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_VENIPEDE +#if P_FAMILY_COTTONEE static const u16 sCottoneeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -21994,7 +24311,9 @@ static const u16 sWhimsicottTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_COTTONEE +#if P_FAMILY_PETILIL static const u16 sPetililTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, @@ -22049,6 +24368,14 @@ static const u16 sLilligantTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_HISUIAN_FORMS +static const u16 sLilligantHisuianTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_PETILIL + +#if P_FAMILY_BASCULIN static const u16 sBasculinTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, @@ -22078,6 +24405,18 @@ static const u16 sBasculinTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_HISUIAN_FORMS +static const u16 sBasculinWhiteStripedTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sBasculegionTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_BASCULIN + +#if P_FAMILY_SANDILE static const u16 sSandileTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, @@ -22188,7 +24527,9 @@ static const u16 sKrookodileTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SANDILE +#if P_FAMILY_DARUMAKA static const u16 sDarumakaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -22267,6 +24608,74 @@ static const u16 sDarmanitanTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GALARIAN_FORMS +static const u16 sDarumakaGalarianTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_ICE_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDarmanitanGalarianTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_DARUMAKA + +#if P_FAMILY_MARACTUS static const u16 sMaractusTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -22290,7 +24699,9 @@ static const u16 sMaractusTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MARACTUS +#if P_FAMILY_DWEBBLE static const u16 sDwebbleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -22353,7 +24764,9 @@ static const u16 sCrustleTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DWEBBLE +#if P_FAMILY_SCRAGGY static const u16 sScraggyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -22432,7 +24845,9 @@ static const u16 sScraftyTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SCRAGGY +#if P_FAMILY_SIGILYPH static const u16 sSigilyphTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -22471,7 +24886,9 @@ static const u16 sSigilyphTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SIGILYPH +#if P_FAMILY_YAMASK static const u16 sYamaskTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -22534,6 +24951,58 @@ static const u16 sCofagrigusTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GALARIAN_FORMS +static const u16 sYamaskGalarianTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_THIEF, + MOVE_ENDURE, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRunerigusTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_ENDURE, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_YAMASK + +#if P_FAMILY_TIRTOUGA static const u16 sTirtougaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -22605,7 +25074,9 @@ static const u16 sCarracostaTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TIRTOUGA +#if P_FAMILY_ARCHEN static const u16 sArchenTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -22671,7 +25142,9 @@ static const u16 sArcheopsTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ARCHEN +#if P_FAMILY_TRUBBISH static const u16 sTrubbishTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -22725,7 +25198,9 @@ static const u16 sGarbodorTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TRUBBISH +#if P_FAMILY_ZORUA static const u16 sZoruaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -22795,6 +25270,18 @@ static const u16 sZoroarkTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_HISUIAN_FORMS +static const u16 sZoruaHisuianTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sZoroarkHisuianTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_ZORUA + +#if P_FAMILY_MINCCINO static const u16 sMinccinoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -22857,7 +25344,9 @@ static const u16 sCinccinoTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MINCCINO +#if P_FAMILY_GOTHITA static const u16 sGothitaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -22973,7 +25462,9 @@ static const u16 sGothitelleTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_GOTHITA +#if P_FAMILY_SOLOSIS static const u16 sSolosisTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -23091,7 +25582,9 @@ static const u16 sReuniclusTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SOLOSIS +#if P_FAMILY_DUCKLETT static const u16 sDucklettTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -23148,7 +25641,9 @@ static const u16 sSwannaTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DUCKLETT +#if P_FAMILY_VANILLITE static const u16 sVanilliteTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -23230,7 +25725,9 @@ static const u16 sVanilluxeTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_VANILLITE +#if P_FAMILY_DEERLING static const u16 sDeerlingTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -23290,7 +25787,9 @@ static const u16 sSawsbuckTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DEERLING +#if P_FAMILY_EMOLGA static const u16 sEmolgaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -23319,7 +25818,9 @@ static const u16 sEmolgaTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_EMOLGA +#if P_FAMILY_KARRABLAST static const u16 sKarrablastTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -23372,7 +25873,9 @@ static const u16 sEscavalierTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_KARRABLAST +#if P_FAMILY_FOONGUS static const u16 sFoongusTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -23425,7 +25928,9 @@ static const u16 sAmoongussTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_FOONGUS +#if P_FAMILY_FRILLISH static const u16 sFrillishTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -23500,7 +26005,9 @@ static const u16 sJellicentTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_FRILLISH +#if P_FAMILY_ALOMOMOLA static const u16 sAlomomolaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -23534,7 +26041,9 @@ static const u16 sAlomomolaTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ALOMOMOLA +#if P_FAMILY_JOLTIK static const u16 sJoltikTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, @@ -23592,7 +26101,9 @@ static const u16 sGalvantulaTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_JOLTIK +#if P_FAMILY_FERROSEED static const u16 sFerroseedTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, @@ -23652,7 +26163,9 @@ static const u16 sFerrothornTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_FERROSEED +#if P_FAMILY_KLINK static const u16 sKlinkTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -23722,7 +26235,9 @@ static const u16 sKlinklangTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_KLINK +#if P_FAMILY_TYNAMO static const u16 sTynamoTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, @@ -23794,7 +26309,9 @@ static const u16 sEelektrossTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TYNAMO +#if P_FAMILY_ELGYEM static const u16 sElgyemTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -23869,7 +26386,9 @@ static const u16 sBeheeyemTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ELGYEM +#if P_FAMILY_LITWICK static const u16 sLitwickTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -23970,7 +26489,9 @@ static const u16 sChandelureTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_LITWICK +#if P_FAMILY_AXEW static const u16 sAxewTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -24073,7 +26594,9 @@ static const u16 sHaxorusTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_AXEW +#if P_FAMILY_CUBCHOO static const u16 sCubchooTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -24149,7 +26672,9 @@ static const u16 sBearticTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CUBCHOO +#if P_FAMILY_CRYOGONAL static const u16 sCryogonalTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -24178,7 +26703,9 @@ static const u16 sCryogonalTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CRYOGONAL +#if P_FAMILY_SHELMET static const u16 sShelmetTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -24227,7 +26754,9 @@ static const u16 sAccelgorTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SHELMET +#if P_FAMILY_STUNFISK static const u16 sStunfiskTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -24262,6 +26791,33 @@ static const u16 sStunfiskTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GALARIAN_FORMS +static const u16 sStunfiskGalarianTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_STUNFISK + +#if P_FAMILY_MIENFOO static const u16 sMienfooTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -24333,7 +26889,9 @@ static const u16 sMienshaoTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MIENFOO +#if P_FAMILY_DRUDDIGON static const u16 sDruddigonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -24374,7 +26932,9 @@ static const u16 sDruddigonTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DRUDDIGON +#if P_FAMILY_GOLETT static const u16 sGolettTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, @@ -24460,7 +27020,9 @@ static const u16 sGolurkTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_GOLETT +#if P_FAMILY_PAWNIARD static const u16 sPawniardTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -24528,6 +27090,57 @@ static const u16 sBisharpTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_9_CROSS_EVOS +static const u16 sKingambitTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_AIR_SLASH, + MOVE_BRICK_BREAK, + MOVE_DARK_PULSE, + MOVE_DIG, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FALSE_SWIPE, + MOVE_FLASH_CANNON, + MOVE_FLING, + MOVE_FOCUS_BLAST, + MOVE_FOUL_PLAY, + MOVE_GIGA_IMPACT, + MOVE_GRASS_KNOT, + MOVE_HYPER_BEAM, + MOVE_IRON_DEFENSE, + MOVE_IRON_HEAD, + MOVE_LOW_KICK, + MOVE_LOW_SWEEP, + MOVE_METAL_CLAW, + MOVE_POISON_JAB, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_REVERSAL, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SHADOW_CLAW, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_STEALTH_ROCK, + MOVE_STEEL_BEAM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER_WAVE, + MOVE_X_SCISSOR, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_PAWNIARD + +#if P_FAMILY_BOUFFALANT static const u16 sBouffalantTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -24558,7 +27171,9 @@ static const u16 sBouffalantTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BOUFFALANT +#if P_FAMILY_RUFFLET static const u16 sRuffletTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -24618,6 +27233,14 @@ static const u16 sBraviaryTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_HISUIAN_FORMS +static const u16 sBraviaryHisuianTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_RUFFLET + +#if P_FAMILY_VULLABY static const u16 sVullabyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -24682,7 +27305,9 @@ static const u16 sMandibuzzTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_VULLABY +#if P_FAMILY_HEATMOR static const u16 sHeatmorTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -24719,7 +27344,9 @@ static const u16 sHeatmorTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_HEATMOR +#if P_FAMILY_DURANT static const u16 sDurantTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -24748,7 +27375,9 @@ static const u16 sDurantTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DURANT +#if P_FAMILY_DEINO static const u16 sDeinoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -24849,7 +27478,9 @@ static const u16 sHydreigonTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DEINO +#if P_FAMILY_LARVESTA static const u16 sLarvestaTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -24908,7 +27539,9 @@ static const u16 sVolcaronaTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_LARVESTA +#if P_FAMILY_COBALION static const u16 sCobalionTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, @@ -24939,7 +27572,9 @@ static const u16 sCobalionTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_COBALION +#if P_FAMILY_TERRAKION static const u16 sTerrakionTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, @@ -24972,7 +27607,9 @@ static const u16 sTerrakionTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TERRAKION +#if P_FAMILY_VIRIZION static const u16 sVirizionTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, @@ -25006,7 +27643,9 @@ static const u16 sVirizionTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_VIRIZION +#if P_FAMILY_TORNADUS static const u16 sTornadusTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -25039,7 +27678,9 @@ static const u16 sTornadusTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TORNADUS +#if P_FAMILY_THUNDURUS static const u16 sThundurusTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -25075,7 +27716,9 @@ static const u16 sThundurusTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_THUNDURUS +#if P_FAMILY_RESHIRAM static const u16 sReshiramTeachableLearnset[] = { MOVE_CUT, MOVE_DOUBLE_TEAM, @@ -25111,7 +27754,9 @@ static const u16 sReshiramTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_RESHIRAM +#if P_FAMILY_ZEKROM static const u16 sZekromTeachableLearnset[] = { MOVE_CUT, MOVE_DOUBLE_TEAM, @@ -25149,7 +27794,9 @@ static const u16 sZekromTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ZEKROM +#if P_FAMILY_LANDORUS static const u16 sLandorusTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -25184,7 +27831,9 @@ static const u16 sLandorusTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_LANDORUS +#if P_FAMILY_KYUREM static const u16 sKyuremTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CUT, @@ -25221,7 +27870,9 @@ static const u16 sKyuremTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_KYUREM +#if P_FAMILY_KELDEO static const u16 sKeldeoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, @@ -25255,7 +27906,9 @@ static const u16 sKeldeoTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_KELDEO +#if P_FAMILY_MELOETTA static const u16 sMeloettaTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -25296,7 +27949,9 @@ static const u16 sMeloettaTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MELOETTA +#if P_FAMILY_GENESECT static const u16 sGenesectTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, @@ -25331,9 +27986,9 @@ static const u16 sGenesectTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; -#endif +#endif //P_FAMILY_GENESECT -#if P_GEN_6_POKEMON == TRUE +#if P_FAMILY_CHESPIN static const u16 sChespinTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -25460,7 +28115,9 @@ static const u16 sChesnaughtTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CHESPIN +#if P_FAMILY_FENNEKIN static const u16 sFennekinTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, @@ -25569,7 +28226,9 @@ static const u16 sDelphoxTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_FENNEKIN +#if P_FAMILY_FROAKIE static const u16 sFroakieTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -25680,7 +28339,9 @@ static const u16 sGreninjaTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_FROAKIE +#if P_FAMILY_BUNNELBY static const u16 sBunnelbyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -25757,7 +28418,9 @@ static const u16 sDiggersbyTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BUNNELBY +#if P_FAMILY_FLETCHLING static const u16 sFletchlingTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -25845,7 +28508,9 @@ static const u16 sTalonflameTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_FLETCHLING +#if P_FAMILY_SCATTERBUG static const u16 sScatterbugTeachableLearnset[] = { MOVE_UNAVAILABLE, }; @@ -25886,7 +28551,9 @@ static const u16 sVivillonTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SCATTERBUG +#if P_FAMILY_LITLEO static const u16 sLitleoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -25951,7 +28618,9 @@ static const u16 sPyroarTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_LITLEO +#if P_FAMILY_FLABEBE static const u16 sFlabebeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -26004,6 +28673,28 @@ static const u16 sFloetteTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +static const u16 sFloetteEternalFlowerTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + static const u16 sFlorgesTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -26031,7 +28722,9 @@ static const u16 sFlorgesTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_FLABEBE +#if P_FAMILY_SKIDDO static const u16 sSkiddoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -26100,7 +28793,9 @@ static const u16 sGogoatTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SKIDDO +#if P_FAMILY_PANCHAM static const u16 sPanchamTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -26185,7 +28880,9 @@ static const u16 sPangoroTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PANCHAM +#if P_FAMILY_FURFROU static const u16 sFurfrouTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -26213,7 +28910,9 @@ static const u16 sFurfrouTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_FURFROU +#if P_FAMILY_ESPURR static const u16 sEspurrTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -26250,7 +28949,7 @@ static const u16 sEspurrTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMeowsticTeachableLearnset[] = { +static const u16 sMeowsticMaleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_CUT, @@ -26289,6 +28988,47 @@ static const u16 sMeowsticTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +static const u16 sMeowsticFemaleTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ESPURR + +#if P_FAMILY_HONEDGE static const u16 sHonedgeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -26375,7 +29115,9 @@ static const u16 sAegislashTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_HONEDGE +#if P_FAMILY_SPRITZEE static const u16 sSpritzeeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -26437,7 +29179,9 @@ static const u16 sAromatisseTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SPRITZEE +#if P_FAMILY_SWIRLIX static const u16 sSwirlixTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -26500,7 +29244,9 @@ static const u16 sSlurpuffTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SWIRLIX +#if P_FAMILY_INKAY static const u16 sInkayTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -26571,7 +29317,9 @@ static const u16 sMalamarTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_INKAY +#if P_FAMILY_BINACLE static const u16 sBinacleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -26658,7 +29406,9 @@ static const u16 sBarbaracleTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BINACLE +#if P_FAMILY_SKRELP static const u16 sSkrelpTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, @@ -26720,7 +29470,9 @@ static const u16 sDragalgeTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SKRELP +#if P_FAMILY_CLAUNCHER static const u16 sClauncherTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, @@ -26783,7 +29535,9 @@ static const u16 sClawitzerTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CLAUNCHER +#if P_FAMILY_HELIOPTILE static const u16 sHelioptileTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, @@ -26853,7 +29607,9 @@ static const u16 sHelioliskTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_HELIOPTILE +#if P_FAMILY_TYRUNT static const u16 sTyruntTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -26916,7 +29672,9 @@ static const u16 sTyrantrumTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TYRUNT +#if P_FAMILY_AMAURA static const u16 sAmauraTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -26999,40 +29757,9 @@ static const u16 sAurorusTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_AMAURA -static const u16 sSylveonTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_HAWLUCHA static const u16 sHawluchaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -27069,7 +29796,9 @@ static const u16 sHawluchaTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_HAWLUCHA +#if P_FAMILY_DEDENNE static const u16 sDedenneTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -27100,7 +29829,9 @@ static const u16 sDedenneTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DEDENNE +#if P_FAMILY_CARBINK static const u16 sCarbinkTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -27131,7 +29862,9 @@ static const u16 sCarbinkTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CARBINK +#if P_FAMILY_GOOMY static const u16 sGoomyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -27230,6 +29963,18 @@ static const u16 sGoodraTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_HISUIAN_FORMS +static const u16 sSliggooHisuianTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sGoodraHisuianTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_GOOMY + +#if P_FAMILY_KLEFKI static const u16 sKlefkiTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -27260,7 +30005,9 @@ static const u16 sKlefkiTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_KLEFKI +#if P_FAMILY_PHANTUMP static const u16 sPhantumpTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, @@ -27329,7 +30076,9 @@ static const u16 sTrevenantTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PHANTUMP +#if P_FAMILY_PUMPKABOO static const u16 sPumpkabooTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -27400,7 +30149,9 @@ static const u16 sGourgeistTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PUMPKABOO +#if P_FAMILY_BERGMITE static const u16 sBergmiteTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -27469,6 +30220,14 @@ static const u16 sAvaluggTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_HISUIAN_FORMS +static const u16 sAvaluggHisuianTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_BERGMITE + +#if P_FAMILY_NOIBAT static const u16 sNoibatTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -27539,7 +30298,9 @@ static const u16 sNoivernTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_NOIBAT +#if P_FAMILY_XERNEAS static const u16 sXerneasTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, @@ -27572,7 +30333,9 @@ static const u16 sXerneasTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_XERNEAS +#if P_FAMILY_YVELTAL static const u16 sYveltalTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CUT, @@ -27604,7 +30367,9 @@ static const u16 sYveltalTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_YVELTAL +#if P_FAMILY_ZYGARDE static const u16 sZygardeTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DIG, @@ -27633,7 +30398,9 @@ static const u16 sZygardeTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ZYGARDE +#if P_FAMILY_DIANCIE static const u16 sDiancieTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -27665,8 +30432,10 @@ static const u16 sDiancieTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DIANCIE -static const u16 sHoopaTeachableLearnset[] = { +#if P_FAMILY_HOOPA +static const u16 sHoopaConfinedTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -27708,6 +30477,40 @@ static const u16 sHoopaTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +static const u16 sHoopaUnboundTeachableLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_HOOPA + +#if P_FAMILY_VOLCANION static const u16 sVolcanionTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CUT, @@ -27742,9 +30545,9 @@ static const u16 sVolcanionTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; -#endif +#endif //P_FAMILY_VOLCANION -#if P_GEN_7_POKEMON == TRUE +#if P_FAMILY_ROWLET static const u16 sRowletTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -27818,6 +30621,14 @@ static const u16 sDecidueyeTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_HISUIAN_FORMS +static const u16 sDecidueyeHisuianTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_ROWLET + +#if P_FAMILY_LITTEN static const u16 sLittenTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULK_UP, @@ -27903,7 +30714,9 @@ static const u16 sIncineroarTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_LITTEN +#if P_FAMILY_POPPLIO static const u16 sPopplioTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -27986,7 +30799,9 @@ static const u16 sPrimarinaTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_POPPLIO +#if P_FAMILY_PIKIPEK static const u16 sPikipekTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -28062,7 +30877,9 @@ static const u16 sToucannonTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PIKIPEK +#if P_FAMILY_YUNGOOS static const u16 sYungoosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -28118,7 +30935,9 @@ static const u16 sGumshoosTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_YUNGOOS +#if P_FAMILY_GRUBBIN static const u16 sGrubbinTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -28194,7 +31013,9 @@ static const u16 sVikavoltTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_GRUBBIN +#if P_FAMILY_CRABRAWLER static const u16 sCrabrawlerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -28258,7 +31079,9 @@ static const u16 sCrabominableTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CRABRAWLER +#if P_FAMILY_ORICORIO static const u16 sOricorioTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -28284,7 +31107,9 @@ static const u16 sOricorioTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ORICORIO +#if P_FAMILY_CUTIEFLY static const u16 sCutieflyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -28341,7 +31166,9 @@ static const u16 sRibombeeTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CUTIEFLY +#if P_FAMILY_ROCKRUFF static const u16 sRockruffTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -28364,7 +31191,7 @@ static const u16 sRockruffTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLycanrocTeachableLearnset[] = { +static const u16 sLycanrocMiddayTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -28389,6 +31216,46 @@ static const u16 sLycanrocTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +static const u16 sLycanrocMidnightTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLycanrocDuskTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ROCKRUFF + +#if P_FAMILY_WISHIWASHI static const u16 sWishiwashiTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, @@ -28415,7 +31282,9 @@ static const u16 sWishiwashiTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_WISHIWASHI +#if P_FAMILY_MAREANIE static const u16 sMareanieTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -28470,7 +31339,9 @@ static const u16 sToxapexTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MAREANIE +#if P_FAMILY_MUDBRAY static const u16 sMudbrayTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -28522,7 +31393,9 @@ static const u16 sMudsdaleTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MUDBRAY +#if P_FAMILY_DEWPIDER static const u16 sDewpiderTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -28574,7 +31447,9 @@ static const u16 sAraquanidTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DEWPIDER +#if P_FAMILY_FOMANTIS static const u16 sFomantisTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -28623,7 +31498,9 @@ static const u16 sLurantisTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_FOMANTIS +#if P_FAMILY_MORELULL static const u16 sMorelullTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -28673,7 +31550,9 @@ static const u16 sShiinoticTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MORELULL +#if P_FAMILY_SALANDIT static const u16 sSalanditTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -28727,7 +31606,9 @@ static const u16 sSalazzleTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SALANDIT +#if P_FAMILY_STUFFUL static const u16 sStuffulTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -28791,7 +31672,9 @@ static const u16 sBewearTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_STUFFUL +#if P_FAMILY_BOUNSWEET static const u16 sBounsweetTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -28860,7 +31743,9 @@ static const u16 sTsareenaTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BOUNSWEET +#if P_FAMILY_COMFEY static const u16 sComfeyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -28888,7 +31773,9 @@ static const u16 sComfeyTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_COMFEY +#if P_FAMILY_ORANGURU static const u16 sOranguruTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -28921,7 +31808,9 @@ static const u16 sOranguruTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ORANGURU +#if P_FAMILY_PASSIMIAN static const u16 sPassimianTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -28957,7 +31846,9 @@ static const u16 sPassimianTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PASSIMIAN +#if P_FAMILY_WIMPOD static const u16 sWimpodTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -29015,7 +31906,9 @@ static const u16 sGolisopodTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_WIMPOD +#if P_FAMILY_SANDYGAST static const u16 sSandygastTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -29066,7 +31959,9 @@ static const u16 sPalossandTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SANDYGAST +#if P_FAMILY_PYUKUMUKU static const u16 sPyukumukuTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -29087,7 +31982,9 @@ static const u16 sPyukumukuTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PYUKUMUKU +#if P_FAMILY_TYPE_NULL static const u16 sTypeNullTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, @@ -29151,7 +32048,9 @@ static const u16 sSilvallyTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TYPE_NULL +#if P_FAMILY_MINIOR static const u16 sMiniorTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -29185,7 +32084,9 @@ static const u16 sMiniorTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MINIOR +#if P_FAMILY_KOMALA static const u16 sKomalaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -29211,7 +32112,9 @@ static const u16 sKomalaTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_KOMALA +#if P_FAMILY_TURTONATOR static const u16 sTurtonatorTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULK_UP, @@ -29245,7 +32148,9 @@ static const u16 sTurtonatorTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TURTONATOR +#if P_FAMILY_TOGEDEMARU static const u16 sTogedemaruTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -29271,7 +32176,9 @@ static const u16 sTogedemaruTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TOGEDEMARU +#if P_FAMILY_MIMIKYU static const u16 sMimikyuTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULK_UP, @@ -29305,7 +32212,9 @@ static const u16 sMimikyuTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MIMIKYU +#if P_FAMILY_BRUXISH static const u16 sBruxishTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -29341,7 +32250,9 @@ static const u16 sBruxishTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BRUXISH +#if P_FAMILY_DRAMPA static const u16 sDrampaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -29383,7 +32294,9 @@ static const u16 sDrampaTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DRAMPA +#if P_FAMILY_DHELMISE static const u16 sDhelmiseTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -29413,7 +32326,9 @@ static const u16 sDhelmiseTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DHELMISE +#if P_FAMILY_JANGMO_O static const u16 sJangmoOTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -29512,7 +32427,9 @@ static const u16 sKommoOTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_JANGMO_O +#if P_FAMILY_TAPU_KOKO static const u16 sTapuKokoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, @@ -29546,7 +32463,9 @@ static const u16 sTapuKokoTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TAPU_KOKO +#if P_FAMILY_TAPU_LELE static const u16 sTapuLeleTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -29576,7 +32495,9 @@ static const u16 sTapuLeleTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TAPU_LELE +#if P_FAMILY_TAPU_BULU static const u16 sTapuBuluTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -29608,7 +32529,9 @@ static const u16 sTapuBuluTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TAPU_BULU +#if P_FAMILY_TAPU_FINI static const u16 sTapuFiniTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -29640,7 +32563,9 @@ static const u16 sTapuFiniTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_TAPU_FINI +#if P_FAMILY_COSMOG static const u16 sCosmogTeachableLearnset[] = { MOVE_UNAVAILABLE, }; @@ -29721,7 +32646,9 @@ static const u16 sLunalaTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_COSMOG +#if P_FAMILY_NIHILEGO static const u16 sNihilegoTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -29746,7 +32673,9 @@ static const u16 sNihilegoTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_NIHILEGO +#if P_FAMILY_BUZZWOLE static const u16 sBuzzwoleTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -29775,7 +32704,9 @@ static const u16 sBuzzwoleTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BUZZWOLE +#if P_FAMILY_PHEROMOSA static const u16 sPheromosaTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -29801,7 +32732,9 @@ static const u16 sPheromosaTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PHEROMOSA +#if P_FAMILY_XURKITREE static const u16 sXurkitreeTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -29829,7 +32762,9 @@ static const u16 sXurkitreeTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_XURKITREE +#if P_FAMILY_CELESTEELA static const u16 sCelesteelaTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -29856,7 +32791,9 @@ static const u16 sCelesteelaTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CELESTEELA +#if P_FAMILY_KARTANA static const u16 sKartanaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, @@ -29878,7 +32815,9 @@ static const u16 sKartanaTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_KARTANA +#if P_FAMILY_GUZZLORD static const u16 sGuzzlordTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, @@ -29905,7 +32844,9 @@ static const u16 sGuzzlordTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_GUZZLORD +#if P_FAMILY_NECROZMA static const u16 sNecrozmaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, @@ -29936,7 +32877,9 @@ static const u16 sNecrozmaTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_NECROZMA +#if P_FAMILY_MAGEARNA static const u16 sMagearnaTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -29961,7 +32904,9 @@ static const u16 sMagearnaTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MAGEARNA +#if P_FAMILY_MARSHADOW static const u16 sMarshadowTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -29991,7 +32936,9 @@ static const u16 sMarshadowTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MARSHADOW +#if P_FAMILY_POIPOLE static const u16 sPoipoleTeachableLearnset[] = { MOVE_FACADE, MOVE_FRUSTRATION, @@ -30035,7 +32982,9 @@ static const u16 sNaganadelTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_POIPOLE +#if P_FAMILY_STAKATAKA static const u16 sStakatakaTeachableLearnset[] = { MOVE_EARTHQUAKE, MOVE_FACADE, @@ -30058,7 +33007,9 @@ static const u16 sStakatakaTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_STAKATAKA +#if P_FAMILY_BLACEPHALON static const u16 sBlacephalonTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -30087,7 +33038,9 @@ static const u16 sBlacephalonTeachableLearnset[] = { MOVE_SWAGGER, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BLACEPHALON +#if P_FAMILY_ZERAORA static const u16 sZeraoraTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, @@ -30116,7 +33069,9 @@ static const u16 sZeraoraTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ZERAORA +#if P_FAMILY_MELTAN static const u16 sMeltanTeachableLearnset[] = { MOVE_HEADBUTT, MOVE_REST, @@ -30182,9 +33137,9 @@ static const u16 sMelmetalTeachableLearnset[] = { MOVE_HIDDEN_POWER, MOVE_UNAVAILABLE, }; -#endif +#endif //P_FAMILY_MELTAN -#if P_GEN_8_POKEMON == TRUE +#if P_FAMILY_GROOKEY static const u16 sGrookeyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, @@ -30251,7 +33206,9 @@ static const u16 sRillaboomTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_GROOKEY +#if P_FAMILY_SCORBUNNY static const u16 sScorbunnyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, @@ -30319,7 +33276,9 @@ static const u16 sCinderaceTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SCORBUNNY +#if P_FAMILY_SOBBLE static const u16 sSobbleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, @@ -30388,7 +33347,9 @@ static const u16 sInteleonTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SOBBLE +#if P_FAMILY_SKWOVET static const u16 sSkwovetTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -30429,7 +33390,9 @@ static const u16 sGreedentTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SKWOVET +#if P_FAMILY_ROOKIDEE static const u16 sRookideeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, @@ -30487,7 +33450,9 @@ static const u16 sCorviknightTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ROOKIDEE +#if P_FAMILY_BLIPBUG static const u16 sBlipbugTeachableLearnset[] = { MOVE_UNAVAILABLE, }; @@ -30533,7 +33498,9 @@ static const u16 sOrbeetleTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_BLIPBUG +#if P_FAMILY_NICKIT static const u16 sNickitTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -30569,7 +33536,9 @@ static const u16 sThievulTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_NICKIT +#if P_FAMILY_GOSSIFLEUR static const u16 sGossifleurTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -30604,7 +33573,9 @@ static const u16 sEldegossTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_GOSSIFLEUR +#if P_FAMILY_WOOLOO static const u16 sWoolooTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, @@ -30640,7 +33611,9 @@ static const u16 sDubwoolTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_WOOLOO +#if P_FAMILY_CHEWTLE static const u16 sChewtleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, @@ -30685,7 +33658,9 @@ static const u16 sDrednawTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CHEWTLE +#if P_FAMILY_YAMPER static const u16 sYamperTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -30724,7 +33699,9 @@ static const u16 sBoltundTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_YAMPER +#if P_FAMILY_ROLYCOLY static const u16 sRolycolyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -30790,7 +33767,9 @@ static const u16 sCoalossalTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ROLYCOLY +#if P_FAMILY_APPLIN static const u16 sApplinTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DEFENSE_CURL, @@ -30838,6 +33817,14 @@ static const u16 sAppletunTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_GEN_9_CROSS_EVOS +static const u16 sDipplinTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_APPLIN + +#if P_FAMILY_SILICOBRA static const u16 sSilicobraTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, @@ -30871,7 +33858,9 @@ static const u16 sSandacondaTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SILICOBRA +#if P_FAMILY_CRAMORANT static const u16 sCramorantTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -30894,7 +33883,9 @@ static const u16 sCramorantTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CRAMORANT +#if P_FAMILY_ARROKUDA static const u16 sArrokudaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -30932,7 +33923,9 @@ static const u16 sBarraskewdaTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ARROKUDA +#if P_FAMILY_TOXEL static const u16 sToxelTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, @@ -30945,7 +33938,7 @@ static const u16 sToxelTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sToxtricityTeachableLearnset[] = { +static const u16 sToxtricityAmpedTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_HYPER_BEAM, @@ -30971,6 +33964,34 @@ static const u16 sToxtricityTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +static const u16 sToxtricityLowKeyTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_TOXEL + +#if P_FAMILY_SIZZLIPEDE static const u16 sSizzlipedeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, @@ -31003,7 +34024,9 @@ static const u16 sCentiskorchTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SIZZLIPEDE +#if P_FAMILY_CLOBBOPUS static const u16 sClobbopusTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -31049,7 +34072,9 @@ static const u16 sGrapploctTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CLOBBOPUS +#if P_FAMILY_SINISTEA static const u16 sSinisteaTeachableLearnset[] = { MOVE_FACADE, MOVE_GIGA_DRAIN, @@ -31082,7 +34107,9 @@ static const u16 sPolteageistTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SINISTEA +#if P_FAMILY_HATENNA static const u16 sHatennaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, @@ -31142,7 +34169,9 @@ static const u16 sHattereneTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_HATENNA +#if P_FAMILY_IMPIDIMP static const u16 sImpidimpTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, @@ -31213,186 +34242,9 @@ static const u16 sGrimmsnarlTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_IMPIDIMP -static const u16 sObstagoonTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWIFT, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sPerrserkerTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, - MOVE_UNAVAILABLE, -}; - -static const u16 sCursolaTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSirfetchdTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWORDS_DANCE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMrRimeTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_HAIL, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MIMIC, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sRunerigusTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_UNAVAILABLE, -}; - +#if P_FAMILY_MILCERY static const u16 sMilceryTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, @@ -31424,7 +34276,9 @@ static const u16 sAlcremieTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MILCERY +#if P_FAMILY_FALINKS static const u16 sFalinksTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -31443,7 +34297,9 @@ static const u16 sFalinksTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_FALINKS +#if P_FAMILY_PINCURCHIN static const u16 sPincurchinTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, @@ -31460,7 +34316,9 @@ static const u16 sPincurchinTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_PINCURCHIN +#if P_FAMILY_SNOM static const u16 sSnomTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, @@ -31495,7 +34353,9 @@ static const u16 sFrosmothTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_SNOM +#if P_FAMILY_STONJOURNER static const u16 sStonjournerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_EARTHQUAKE, @@ -31515,7 +34375,9 @@ static const u16 sStonjournerTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_STONJOURNER +#if P_FAMILY_EISCUE static const u16 sEiscueTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, @@ -31537,8 +34399,10 @@ static const u16 sEiscueTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_EISCUE -static const u16 sIndeedeeTeachableLearnset[] = { +#if P_FAMILY_INDEEDEE +static const u16 sIndeedeeMaleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_FACADE, @@ -31556,6 +34420,29 @@ static const u16 sIndeedeeTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +static const u16 sIndeedeeFemaleTeachableLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_ENDURE, + MOVE_METRONOME, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_INDEEDEE + +#if P_FAMILY_MORPEKO static const u16 sMorpekoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -31578,7 +34465,9 @@ static const u16 sMorpekoTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_MORPEKO +#if P_FAMILY_CUFANT static const u16 sCufantTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -31626,7 +34515,9 @@ static const u16 sCopperajahTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_CUFANT +#if P_FAMILY_DRACOZOLT static const u16 sDracozoltTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_DRAGON_CLAW, @@ -31656,7 +34547,9 @@ static const u16 sDracozoltTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DRACOZOLT +#if P_FAMILY_ARCTOZOLT static const u16 sArctozoltTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_FACADE, @@ -31685,7 +34578,9 @@ static const u16 sArctozoltTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ARCTOZOLT +#if P_FAMILY_DRACOVISH static const u16 sDracovishTeachableLearnset[] = { MOVE_DIVE, MOVE_EARTHQUAKE, @@ -31706,7 +34601,9 @@ static const u16 sDracovishTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DRACOVISH +#if P_FAMILY_ARCTOVISH static const u16 sArctovishTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_DIVE, @@ -31729,7 +34626,9 @@ static const u16 sArctovishTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ARCTOVISH +#if P_FAMILY_DURALUDON static const u16 sDuraludonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -31755,7 +34654,9 @@ static const u16 sDuraludonTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DURALUDON +#if P_FAMILY_DREEPY static const u16 sDreepyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -31825,7 +34726,9 @@ static const u16 sDragapultTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_DREEPY +#if P_FAMILY_ZACIAN static const u16 sZacianTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DIG, @@ -31842,7 +34745,9 @@ static const u16 sZacianTeachableLearnset[] = { MOVE_SWORDS_DANCE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ZACIAN +#if P_FAMILY_ZAMAZENTA static const u16 sZamazentaTeachableLearnset[] = { MOVE_DIG, MOVE_FACADE, @@ -31861,7 +34766,9 @@ static const u16 sZamazentaTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ZAMAZENTA +#if P_FAMILY_ETERNATUS static const u16 sEternatusTeachableLearnset[] = { MOVE_FACADE, MOVE_FLAMETHROWER, @@ -31881,7 +34788,9 @@ static const u16 sEternatusTeachableLearnset[] = { MOVE_SUBSTITUTE, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_ETERNATUS +#if P_FAMILY_KUBFU static const u16 sKubfuTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -31908,7 +34817,7 @@ static const u16 sKubfuTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sUrshifuTeachableLearnset[] = { +static const u16 sUrshifuSingleStrikeStyleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -31938,1515 +34847,6 @@ static const u16 sUrshifuTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sZarudeTeachableLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_BULLET_SEED, - MOVE_DIG, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - -static const u16 sRegielekiTeachableLearnset[] = { - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SHOCK_WAVE, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sRegidragoTeachableLearnset[] = { - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGlastrierTeachableLearnset[] = { - MOVE_BLIZZARD, - MOVE_FACADE, - MOVE_HAIL, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWORDS_DANCE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSpectrierTeachableLearnset[] = { - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_TAUNT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - -static const u16 sCalyrexTeachableLearnset[] = { - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - -static const u16 sWyrdeerTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sKleavorTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sUrsalunaTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sBasculegionTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sSneaslerTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sOverqwilTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sEnamorusTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; -#endif - -static const u16 sRattataAlolanTeachableLearnset[] = { - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_FACADE, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRaticateAlolanTeachableLearnset[] = { - MOVE_BLIZZARD, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRaichuAlolanTeachableLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_FACADE, - MOVE_FLASH, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_THUNDERBOLT, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSandshrewAlolanTeachableLearnset[] = { - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSandslashAlolanTeachableLearnset[] = { - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVulpixAlolanTeachableLearnset[] = { - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_FACADE, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sNinetalesAlolanTeachableLearnset[] = { - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDiglettAlolanTeachableLearnset[] = { - MOVE_CUT, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SLUDGE_BOMB, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDugtrioAlolanTeachableLearnset[] = { - MOVE_CUT, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SLUDGE_BOMB, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMeowthAlolanTeachableLearnset[] = { - MOVE_CUT, - MOVE_FACADE, - MOVE_FLASH, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_TAUNT, - MOVE_THUNDERBOLT, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPersianAlolanTeachableLearnset[] = { - MOVE_CUT, - MOVE_FACADE, - MOVE_FLASH, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_TAUNT, - MOVE_THUNDERBOLT, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGeodudeAlolanTeachableLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_EARTHQUAKE, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_THUNDERBOLT, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGravelerAlolanTeachableLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_THUNDERBOLT, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGolemAlolanTeachableLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_THUNDERBOLT, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGrimerAlolanTeachableLearnset[] = { - MOVE_DIG, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMukAlolanTeachableLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sExeggutorAlolanTeachableLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMarowakAlolanTeachableLearnset[] = { - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SHADOW_BALL, - MOVE_STRENGTH, - MOVE_THUNDERBOLT, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMeowthGalarianTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_FACADE, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWORDS_DANCE, - MOVE_UNAVAILABLE, -}; - -static const u16 sPonytaGalarianTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_BODY_SLAM, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - -static const u16 sRapidashGalarianTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSlowpokeGalarianTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DIVE, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HAIL, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSlowbroGalarianTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DIVE, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HAIL, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sFarfetchdGalarianTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_FURY_CUTTER, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWORDS_DANCE, - MOVE_UNAVAILABLE, -}; - -static const u16 sWeezingGalarianTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HYPER_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMrMimeGalarianTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_HAIL, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MIMIC, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArticunoGalarianTeachableLearnset[] = { - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_FLY, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_STEEL_WING, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - -static const u16 sZapdosGalarianTeachableLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_FACADE, - MOVE_FLY, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STEEL_WING, - MOVE_TAUNT, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_MEGA_KICK, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - -static const u16 sMoltresGalarianTeachableLearnset[] = { - MOVE_FACADE, - MOVE_FLY, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_TAUNT, - MOVE_ENDURE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - -static const u16 sSlowkingGalarianTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DIVE, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HAIL, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sCorsolaGalarianTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_UNAVAILABLE, -}; - -static const u16 sZigzagoonGalarianTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_FACADE, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sLinooneGalarianTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DOUBLE_EDGE, - MOVE_ENDURE, - MOVE_ICY_WIND, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWIFT, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -#if P_GEN_5_POKEMON == TRUE -static const u16 sDarumakaGalarianTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_ICE_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDarmanitanGalarianTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_BODY_SLAM, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_ICE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_UNAVAILABLE, -}; - -static const u16 sYamaskGalarianTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_THIEF, - MOVE_ENDURE, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_UNAVAILABLE, -}; - -static const u16 sStunfiskGalarianTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_COUNTER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_ROCK_SLIDE, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; -#endif - -static const u16 sGrowlitheHisuianTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sArcanineHisuianTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sVoltorbHisuianTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sElectrodeHisuianTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sTyphlosionHisuianTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sQwilfishHisuianTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sSneaselHisuianTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -#if P_GEN_5_POKEMON == TRUE -static const u16 sSamurottHisuianTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sLilligantHisuianTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sZoruaHisuianTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sZoroarkHisuianTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sBraviaryHisuianTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; -#endif - -#if P_GEN_6_POKEMON == TRUE -static const u16 sSliggooHisuianTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sGoodraHisuianTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sAvaluggHisuianTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; -#endif - -#if P_GEN_7_POKEMON == TRUE -static const u16 sDecidueyeHisuianTeachableLearnset[] = { - MOVE_UNAVAILABLE, -}; -#endif - -static const u16 sDeoxysAttackTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDeoxysDefenseTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDeoxysSpeedTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -#if P_GEN_4_POKEMON == TRUE -static const u16 sBurmySandyCloakTeachableLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_SNORE, - MOVE_UNAVAILABLE, -}; - -static const u16 sBurmyTrashCloakTeachableLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_SNORE, - MOVE_UNAVAILABLE, -}; - -static const u16 sWormadamSandyCloakTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROLLOUT, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_UNAVAILABLE, -}; - -static const u16 sWormadamTrashCloakTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_UNAVAILABLE, -}; - -static const u16 sGiratinaOriginTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sShayminSkyTeachableLearnset[] = { - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; -#endif - -#if P_GEN_6_POKEMON == TRUE -static const u16 sFloetteEternalFlowerTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHoopaUnboundTeachableLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMeowsticFemaleTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_DREAM_EATER, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; -#endif - -#if P_GEN_7_POKEMON == TRUE -static const u16 sLycanrocMidnightTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLycanrocDuskTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; -#endif - -#if P_GEN_8_POKEMON == TRUE -static const u16 sToxtricityLowKeyTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_ENDURE, - MOVE_FIRE_PUNCH, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, - MOVE_UNAVAILABLE, -}; - -static const u16 sIndeedeeFemaleTeachableLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_ENDURE, - MOVE_METRONOME, - MOVE_PSYCH_UP, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SUBSTITUTE, - MOVE_SWIFT, - MOVE_UNAVAILABLE, -}; - static const u16 sUrshifuRapidStrikeStyleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, @@ -33479,7 +34879,151 @@ static const u16 sUrshifuRapidStrikeStyleTeachableLearnset[] = { MOVE_THUNDER_PUNCH, MOVE_UNAVAILABLE, }; +#endif //P_FAMILY_KUBFU +#if P_FAMILY_ZARUDE +static const u16 sZarudeTeachableLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_DIG, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ZARUDE + +#if P_FAMILY_REGIELEKI +static const u16 sRegielekiTeachableLearnset[] = { + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SHOCK_WAVE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_REGIELEKI + +#if P_FAMILY_REGIDRAGO +static const u16 sRegidragoTeachableLearnset[] = { + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_REGIDRAGO + +#if P_FAMILY_GLASTRIER +static const u16 sGlastrierTeachableLearnset[] = { + MOVE_BLIZZARD, + MOVE_FACADE, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_GLASTRIER + +#if P_FAMILY_SPECTRIER +static const u16 sSpectrierTeachableLearnset[] = { + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_TAUNT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SPECTRIER + +#if P_FAMILY_CALYREX +static const u16 sCalyrexTeachableLearnset[] = { + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_ENDURE, + MOVE_METRONOME, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +#if P_FUSION_FORMS static const u16 sCalyrexIceRiderTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BULLET_SEED, @@ -33540,4 +35084,4033 @@ static const u16 sCalyrexShadowRiderTeachableLearnset[] = { MOVE_SWIFT, MOVE_UNAVAILABLE, }; -#endif +#endif //P_FUSION_FORMS +#endif //P_FAMILY_CALYREX + +#if P_FAMILY_ENAMORUS +static const u16 sEnamorusTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ENAMORUS + +#if P_FAMILY_SPRIGATITO +static const u16 sSprigatitoTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AGILITY, + MOVE_BULLET_SEED, + MOVE_CHARM, + MOVE_DISARMING_VOICE, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_FAKE_TEARS, + MOVE_GIGA_DRAIN, + MOVE_GRASSY_TERRAIN, + MOVE_GRASS_KNOT, + MOVE_GRASS_PLEDGE, + MOVE_HELPING_HAND, + MOVE_LEAF_STORM, + MOVE_MAGICAL_LEAF, + MOVE_MUD_SLAP, + MOVE_NASTY_PLOT, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_REST, + MOVE_SEED_BOMB, + MOVE_SHADOW_CLAW, + MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_TRAILBLAZE, + MOVE_U_TURN, + MOVE_UNAVAILABLE, +}; + +static const u16 sFloragatoTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AERIAL_ACE, + MOVE_AGILITY, + MOVE_BULLET_SEED, + MOVE_CHARM, + MOVE_DISARMING_VOICE, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_FAKE_TEARS, + MOVE_FLING, + MOVE_GIGA_DRAIN, + MOVE_GRASSY_TERRAIN, + MOVE_GRASS_KNOT, + MOVE_GRASS_PLEDGE, + MOVE_HELPING_HAND, + MOVE_LEAF_STORM, + MOVE_LOW_KICK, + MOVE_LOW_SWEEP, + MOVE_MAGICAL_LEAF, + MOVE_MUD_SLAP, + MOVE_NASTY_PLOT, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_REST, + MOVE_SEED_BOMB, + MOVE_SHADOW_CLAW, + MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THUNDER_PUNCH, + MOVE_TRAILBLAZE, + MOVE_U_TURN, + MOVE_UNAVAILABLE, +}; + +static const u16 sMeowscaradaTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AERIAL_ACE, + MOVE_AGILITY, + MOVE_AURA_SPHERE, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CHARM, + MOVE_CHILLING_WATER, + MOVE_DARK_PULSE, + MOVE_DISARMING_VOICE, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_FAKE_TEARS, + MOVE_FLING, + MOVE_FOUL_PLAY, + MOVE_FRENZY_PLANT, + MOVE_GIGA_DRAIN, + MOVE_GIGA_IMPACT, + MOVE_GRASSY_TERRAIN, + MOVE_GRASS_KNOT, + MOVE_GRASS_PLEDGE, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_LEAF_STORM, + MOVE_LOW_KICK, + MOVE_LOW_SWEEP, + MOVE_MAGICAL_LEAF, + MOVE_MUD_SLAP, + MOVE_NASTY_PLOT, + MOVE_PLAY_ROUGH, + MOVE_POLLEN_PUFF, + MOVE_POWER_GEM, + MOVE_PROTECT, + MOVE_REST, + MOVE_SEED_BOMB, + MOVE_SHADOW_BALL, + MOVE_SHADOW_CLAW, + MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, + MOVE_SPIKES, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER_PUNCH, + MOVE_TOXIC_SPIKES, + MOVE_TRAILBLAZE, + MOVE_TRICK, + MOVE_TRICK_ROOM, + MOVE_U_TURN, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SPRIGATITO + +#if P_FAMILY_FUECOCO +static const u16 sFuecocoTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_CRUNCH, + MOVE_DIG, + MOVE_DISARMING_VOICE, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FIRE_FANG, + MOVE_FIRE_PLEDGE, + MOVE_FIRE_SPIN, + MOVE_FLAMETHROWER, + MOVE_FLAME_CHARGE, + MOVE_FLARE_BLITZ, + MOVE_HEAT_WAVE, + MOVE_HELPING_HAND, + MOVE_HYPER_VOICE, + MOVE_MUD_SLAP, + MOVE_OUTRAGE, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_SEED_BOMB, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THUNDER_FANG, + MOVE_WILL_O_WISP, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; + +static const u16 sCrocalorTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_CRUNCH, + MOVE_DIG, + MOVE_DISARMING_VOICE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FIRE_FANG, + MOVE_FIRE_PLEDGE, + MOVE_FIRE_SPIN, + MOVE_FLAMETHROWER, + MOVE_FLAME_CHARGE, + MOVE_FLARE_BLITZ, + MOVE_HEAT_WAVE, + MOVE_HELPING_HAND, + MOVE_HYPER_VOICE, + MOVE_MUD_SLAP, + MOVE_OUTRAGE, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_SEED_BOMB, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THUNDER_FANG, + MOVE_WILL_O_WISP, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSkeledirgeTeachableLearnset[] = { + MOVE_BLAST_BURN, + MOVE_BODY_SLAM, + MOVE_CRUNCH, + MOVE_DIG, + MOVE_DISARMING_VOICE, + MOVE_EARTHQUAKE, + MOVE_EARTH_POWER, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FIRE_FANG, + MOVE_FIRE_PLEDGE, + MOVE_FIRE_SPIN, + MOVE_FLAMETHROWER, + MOVE_FLAME_CHARGE, + MOVE_FLARE_BLITZ, + MOVE_GIGA_IMPACT, + MOVE_HEAT_WAVE, + MOVE_HELPING_HAND, + MOVE_HEX, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_IMPRISON, + MOVE_MUD_SLAP, + MOVE_NIGHT_SHADE, + MOVE_OUTRAGE, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_SCARY_FACE, + MOVE_SEED_BOMB, + MOVE_SHADOW_BALL, + MOVE_SHADOW_CLAW, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_SOLAR_BEAM, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THUNDER_FANG, + MOVE_WILL_O_WISP, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_FUECOCO + +#if P_FAMILY_QUAXLY +static const u16 sQuaxlyTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AERIAL_ACE, + MOVE_AIR_CUTTER, + MOVE_AIR_SLASH, + MOVE_BATON_PASS, + MOVE_BRAVE_BIRD, + MOVE_CHILLING_WATER, + MOVE_DISARMING_VOICE, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_HELPING_HAND, + MOVE_HYDRO_PUMP, + MOVE_LIQUIDATION, + MOVE_LOW_KICK, + MOVE_MISTY_TERRAIN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SURF, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_WATER_PLEDGE, + MOVE_UNAVAILABLE, +}; + +static const u16 sQuaxwellTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AERIAL_ACE, + MOVE_AIR_CUTTER, + MOVE_AIR_SLASH, + MOVE_BATON_PASS, + MOVE_BRAVE_BIRD, + MOVE_CHILLING_WATER, + MOVE_DISARMING_VOICE, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_HELPING_HAND, + MOVE_HYDRO_PUMP, + MOVE_LIQUIDATION, + MOVE_LOW_KICK, + MOVE_LOW_SWEEP, + MOVE_MISTY_TERRAIN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SURF, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_WATER_PLEDGE, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sQuaquavalTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AERIAL_ACE, + MOVE_AGILITY, + MOVE_AIR_CUTTER, + MOVE_AIR_SLASH, + MOVE_BATON_PASS, + MOVE_BRAVE_BIRD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CHILLING_WATER, + MOVE_CLOSE_COMBAT, + MOVE_DISARMING_VOICE, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLING, + MOVE_GIGA_IMPACT, + MOVE_HELPING_HAND, + MOVE_HURRICANE, + MOVE_HYDRO_CANNON, + MOVE_HYDRO_PUMP, + MOVE_HYPER_BEAM, + MOVE_ICE_SPINNER, + MOVE_ICY_WIND, + MOVE_LIQUIDATION, + MOVE_LOW_KICK, + MOVE_LOW_SWEEP, + MOVE_MISTY_TERRAIN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_REVERSAL, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SURF, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_U_TURN, + MOVE_WATER_PLEDGE, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_QUAXLY + +#if P_FAMILY_LECHONK +static const u16 sLechonkTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_BULLET_SEED, + MOVE_CHILLING_WATER, + MOVE_DIG, + MOVE_DISARMING_VOICE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_HELPING_HAND, + MOVE_HYPER_VOICE, + MOVE_IRON_HEAD, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SEED_BOMB, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TRAILBLAZE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; + +static const u16 sOinkologneMaleTeachableLearnset[] = { + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_BULLET_SEED, + MOVE_CHILLING_WATER, + MOVE_DIG, + MOVE_DISARMING_VOICE, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_GIGA_IMPACT, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_IRON_HEAD, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SEED_BOMB, + MOVE_SLEEP_TALK, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TRAILBLAZE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; + +static const u16 sOinkologneFemaleTeachableLearnset[] = { + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_BULLET_SEED, + MOVE_CHILLING_WATER, + MOVE_DIG, + MOVE_DISARMING_VOICE, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_GIGA_IMPACT, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_IRON_HEAD, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SEED_BOMB, + MOVE_SLEEP_TALK, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TRAILBLAZE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_LECHONK + +#if P_FAMILY_TAROUNTULA +static const u16 sTarountulaTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_BUG_BUZZ, + MOVE_BULLET_SEED, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FALSE_SWIPE, + MOVE_GIGA_DRAIN, + MOVE_GRASS_KNOT, + MOVE_LEECH_LIFE, + MOVE_POISON_JAB, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_CLAW, + MOVE_SLEEP_TALK, + MOVE_SPIKES, + MOVE_STRUGGLE_BUG, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TOXIC_SPIKES, + MOVE_TRAILBLAZE, + MOVE_X_SCISSOR, + MOVE_UNAVAILABLE, +}; + +static const u16 sSpidopsTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, + MOVE_BUG_BUZZ, + MOVE_BULLET_SEED, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FALSE_SWIPE, + MOVE_FLING, + MOVE_GIGA_DRAIN, + MOVE_GIGA_IMPACT, + MOVE_GRASS_KNOT, + MOVE_LEECH_LIFE, + MOVE_LOW_KICK, + MOVE_POISON_JAB, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_REVERSAL, + MOVE_ROCK_TOMB, + MOVE_SCARY_FACE, + MOVE_SHADOW_CLAW, + MOVE_SLEEP_TALK, + MOVE_SPIKES, + MOVE_STRUGGLE_BUG, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TOXIC_SPIKES, + MOVE_TRAILBLAZE, + MOVE_U_TURN, + MOVE_X_SCISSOR, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_TAROUNTULA + +#if P_FAMILY_NYMBLE +static const u16 sNymbleTeachableLearnset[] = { + MOVE_AGILITY, + MOVE_BUG_BUZZ, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_LEECH_LIFE, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_STRUGGLE_BUG, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TRAILBLAZE, + MOVE_U_TURN, + MOVE_X_SCISSOR, + MOVE_UNAVAILABLE, +}; + +static const u16 sLokixTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_AGILITY, + MOVE_BRICK_BREAK, + MOVE_BUG_BUZZ, + MOVE_DARK_PULSE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLING, + MOVE_GIGA_IMPACT, + MOVE_LEECH_LIFE, + MOVE_LOW_KICK, + MOVE_LOW_SWEEP, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_REVERSAL, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_STRUGGLE_BUG, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWORDS_DANCE, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TRAILBLAZE, + MOVE_U_TURN, + MOVE_X_SCISSOR, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_NYMBLE + +#if P_FAMILY_PAWMI +static const u16 sPawmiTeachableLearnset[] = { + MOVE_AGILITY, + MOVE_BATON_PASS, + MOVE_CHARGE_BEAM, + MOVE_CHARM, + MOVE_CRUNCH, + MOVE_DIG, + MOVE_EERIE_IMPULSE, + MOVE_ELECTRIC_TERRAIN, + MOVE_ELECTRO_BALL, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLING, + MOVE_HELPING_HAND, + MOVE_METAL_CLAW, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_THUNDER_FANG, + MOVE_THUNDER_WAVE, + MOVE_VOLT_SWITCH, + MOVE_WILD_CHARGE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPawmoTeachableLearnset[] = { + MOVE_AGILITY, + MOVE_BATON_PASS, + MOVE_CHARGE_BEAM, + MOVE_CHARM, + MOVE_CRUNCH, + MOVE_DIG, + MOVE_EERIE_IMPULSE, + MOVE_ELECTRIC_TERRAIN, + MOVE_ELECTRO_BALL, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLING, + MOVE_HELPING_HAND, + MOVE_LOW_KICK, + MOVE_LOW_SWEEP, + MOVE_METAL_CLAW, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_THUNDER_FANG, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_VOLT_SWITCH, + MOVE_WILD_CHARGE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPawmotTeachableLearnset[] = { + MOVE_AGILITY, + MOVE_BATON_PASS, + MOVE_BODY_PRESS, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CHARGE_BEAM, + MOVE_CHARM, + MOVE_CLOSE_COMBAT, + MOVE_CRUNCH, + MOVE_DIG, + MOVE_EERIE_IMPULSE, + MOVE_ELECTRIC_TERRAIN, + MOVE_ELECTRO_BALL, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_PUNCH, + MOVE_FLING, + MOVE_FOCUS_BLAST, + MOVE_GIGA_IMPACT, + MOVE_GRASS_KNOT, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_LOW_KICK, + MOVE_LOW_SWEEP, + MOVE_METAL_CLAW, + MOVE_METRONOME, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SEED_BOMB, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_THUNDER_FANG, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_VOLT_SWITCH, + MOVE_WILD_CHARGE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_PAWMI + +#if P_FAMILY_TANDEMAUS +static const u16 sTandemausTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_AGILITY, + MOVE_BATON_PASS, + MOVE_BULLET_SEED, + MOVE_CHARM, + MOVE_CRUNCH, + MOVE_DIG, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FAKE_TEARS, + MOVE_GRASS_KNOT, + MOVE_HELPING_HAND, + MOVE_HYPER_VOICE, + MOVE_LOW_KICK, + MOVE_LOW_SWEEP, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SEED_BOMB, + MOVE_SHADOW_CLAW, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER_WAVE, + MOVE_U_TURN, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMausholdTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_AGILITY, + MOVE_BULLET_SEED, + MOVE_CHARM, + MOVE_CHILLING_WATER, + MOVE_CRUNCH, + MOVE_DIG, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FAKE_TEARS, + MOVE_GIGA_IMPACT, + MOVE_GRASS_KNOT, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_LOW_KICK, + MOVE_LOW_SWEEP, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SEED_BOMB, + MOVE_SHADOW_CLAW, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER_WAVE, + MOVE_TRAILBLAZE, + MOVE_U_TURN, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_TANDEMAUS + +#if P_FAMILY_FIDOUGH +static const u16 sFidoughTeachableLearnset[] = { + MOVE_AGILITY, + MOVE_BATON_PASS, + MOVE_BODY_SLAM, + MOVE_CHARM, + MOVE_CRUNCH, + MOVE_DAZZLING_GLEAM, + MOVE_DIG, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_FANG, + MOVE_HELPING_HAND, + MOVE_ICE_FANG, + MOVE_MISTY_TERRAIN, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_PSYCHIC_FANGS, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THUNDER_FANG, + MOVE_TRAILBLAZE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDachsbunTeachableLearnset[] = { + MOVE_AGILITY, + MOVE_BATON_PASS, + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_CHARM, + MOVE_CRUNCH, + MOVE_DAZZLING_GLEAM, + MOVE_DIG, + MOVE_DRAINING_KISS, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_FANG, + MOVE_GIGA_IMPACT, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_ICE_FANG, + MOVE_MISTY_TERRAIN, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_PSYCHIC_FANGS, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THUNDER_FANG, + MOVE_TRAILBLAZE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_FIDOUGH + +#if P_FAMILY_SMOLIV +static const u16 sSmolivTeachableLearnset[] = { + MOVE_BULLET_SEED, + MOVE_CHARM, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_GRASSY_TERRAIN, + MOVE_GRASS_KNOT, + MOVE_HELPING_HAND, + MOVE_LEAF_STORM, + MOVE_MAGICAL_LEAF, + MOVE_PROTECT, + MOVE_REST, + MOVE_SEED_BOMB, + MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWIFT, + MOVE_TERA_BLAST, + MOVE_TRAILBLAZE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDollivTeachableLearnset[] = { + MOVE_BULLET_SEED, + MOVE_CHARM, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_GRASSY_TERRAIN, + MOVE_GRASS_KNOT, + MOVE_HELPING_HAND, + MOVE_LEAF_STORM, + MOVE_MAGICAL_LEAF, + MOVE_PROTECT, + MOVE_REST, + MOVE_SEED_BOMB, + MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWIFT, + MOVE_TERA_BLAST, + MOVE_TRAILBLAZE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArbolivaTeachableLearnset[] = { + MOVE_BULLET_SEED, + MOVE_CHARM, + MOVE_DAZZLING_GLEAM, + MOVE_EARTH_POWER, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_FLING, + MOVE_GIGA_DRAIN, + MOVE_GIGA_IMPACT, + MOVE_GRASSY_TERRAIN, + MOVE_GRASS_KNOT, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_LEAF_STORM, + MOVE_LIGHT_SCREEN, + MOVE_MAGICAL_LEAF, + MOVE_METRONOME, + MOVE_POLLEN_PUFF, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_SEED_BOMB, + MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWIFT, + MOVE_TERA_BLAST, + MOVE_TRAILBLAZE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SMOLIV + +#if P_FAMILY_SQUAWKABILLY +static const u16 sSquawkabillyTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_AIR_CUTTER, + MOVE_AIR_SLASH, + MOVE_BRAVE_BIRD, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FAKE_TEARS, + MOVE_FLY, + MOVE_FOUL_PLAY, + MOVE_GIGA_IMPACT, + MOVE_HEAT_WAVE, + MOVE_HELPING_HAND, + MOVE_HURRICANE, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_REST, + MOVE_REVERSAL, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAILWIND, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_U_TURN, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SQUAWKABILLY + +#if P_FAMILY_NACLI +static const u16 sNacliTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLASH_CANNON, + MOVE_HEAVY_SLAM, + MOVE_HELPING_HAND, + MOVE_IRON_DEFENSE, + MOVE_IRON_HEAD, + MOVE_MUD_SHOT, + MOVE_POWER_GEM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_SLIDE, + MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_STEALTH_ROCK, + MOVE_STOMPING_TANTRUM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; + +static const u16 sNaclstackTeachableLearnset[] = { + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLASH_CANNON, + MOVE_GIGA_IMPACT, + MOVE_HEAVY_SLAM, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_IRON_DEFENSE, + MOVE_IRON_HEAD, + MOVE_MUD_SHOT, + MOVE_POWER_GEM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_SLIDE, + MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_STEALTH_ROCK, + MOVE_STOMPING_TANTRUM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; + +static const u16 sGarganaclTeachableLearnset[] = { + MOVE_AVALANCHE, + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, + MOVE_BULLDOZE, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_PUNCH, + MOVE_FLASH_CANNON, + MOVE_FLING, + MOVE_GIGA_IMPACT, + MOVE_HEAVY_SLAM, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_IRON_DEFENSE, + MOVE_IRON_HEAD, + MOVE_MUD_SHOT, + MOVE_POWER_GEM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_BLAST, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_STEALTH_ROCK, + MOVE_STOMPING_TANTRUM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THUNDER_PUNCH, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_NACLI + +#if P_FAMILY_CHARCADET +static const u16 sCharcadetTeachableLearnset[] = { + MOVE_CONFUSE_RAY, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FIRE_SPIN, + MOVE_FLAMETHROWER, + MOVE_FLAME_CHARGE, + MOVE_FLARE_BLITZ, + MOVE_HEAT_WAVE, + MOVE_HELPING_HAND, + MOVE_NIGHT_SHADE, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_WILL_O_WISP, + MOVE_UNAVAILABLE, +}; + +static const u16 sArmarougeTeachableLearnset[] = { + MOVE_ACID_SPRAY, + MOVE_AURA_SPHERE, + MOVE_CALM_MIND, + MOVE_CONFUSE_RAY, + MOVE_DARK_PULSE, + MOVE_DRAGON_PULSE, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FIRE_SPIN, + MOVE_FLAMETHROWER, + MOVE_FLAME_CHARGE, + MOVE_FLARE_BLITZ, + MOVE_FLASH_CANNON, + MOVE_FLING, + MOVE_FOCUS_BLAST, + MOVE_HEAT_WAVE, + MOVE_HELPING_HAND, + MOVE_IRON_DEFENSE, + MOVE_LIGHT_SCREEN, + MOVE_NIGHT_SHADE, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYBEAM, + MOVE_PSYCHIC, + MOVE_PSYCHIC_TERRAIN, + MOVE_PSYSHOCK, + MOVE_REFLECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, + MOVE_STORED_POWER, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_TRICK, + MOVE_TRICK_ROOM, + MOVE_WILL_O_WISP, + MOVE_UNAVAILABLE, +}; + +static const u16 sCeruledgeTeachableLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CLOSE_COMBAT, + MOVE_CONFUSE_RAY, + MOVE_DRAGON_CLAW, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FALSE_SWIPE, + MOVE_FIRE_BLAST, + MOVE_FIRE_SPIN, + MOVE_FLAMETHROWER, + MOVE_FLAME_CHARGE, + MOVE_FLARE_BLITZ, + MOVE_FLING, + MOVE_HEAT_WAVE, + MOVE_HELPING_HAND, + MOVE_HEX, + MOVE_IRON_DEFENSE, + MOVE_IRON_HEAD, + MOVE_LIGHT_SCREEN, + MOVE_NIGHT_SHADE, + MOVE_OVERHEAT, + MOVE_PHANTOM_FORCE, + MOVE_POISON_JAB, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SHADOW_CLAW, + MOVE_SLEEP_TALK, + MOVE_STORED_POWER, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWORDS_DANCE, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_WILL_O_WISP, + MOVE_X_SCISSOR, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_CHARCADET + +#if P_FAMILY_TADBULB +static const u16 sTadbulbTeachableLearnset[] = { + MOVE_ACID_SPRAY, + MOVE_CHARGE_BEAM, + MOVE_CHILLING_WATER, + MOVE_CONFUSE_RAY, + MOVE_EERIE_IMPULSE, + MOVE_ELECTRIC_TERRAIN, + MOVE_ELECTRO_BALL, + MOVE_ENDURE, + MOVE_HYPER_VOICE, + MOVE_LIGHT_SCREEN, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_TERA_BLAST, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, + MOVE_VOLT_SWITCH, + MOVE_WATER_PULSE, + MOVE_WILD_CHARGE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBelliboltTeachableLearnset[] = { + MOVE_ACID_SPRAY, + MOVE_CHARGE_BEAM, + MOVE_CHILLING_WATER, + MOVE_CONFUSE_RAY, + MOVE_EERIE_IMPULSE, + MOVE_ELECTRIC_TERRAIN, + MOVE_ELECTRO_BALL, + MOVE_ENDURE, + MOVE_GIGA_IMPACT, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_LIGHT_SCREEN, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_TERA_BLAST, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, + MOVE_VOLT_SWITCH, + MOVE_WATER_PULSE, + MOVE_WILD_CHARGE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_TADBULB + +#if P_FAMILY_WATTREL +static const u16 sWattrelTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AERIAL_ACE, + MOVE_AGILITY, + MOVE_AIR_CUTTER, + MOVE_AIR_SLASH, + MOVE_BRAVE_BIRD, + MOVE_CHARGE_BEAM, + MOVE_EERIE_IMPULSE, + MOVE_ELECTRIC_TERRAIN, + MOVE_ELECTRO_BALL, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLY, + MOVE_HURRICANE, + MOVE_PROTECT, + MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_TAILWIND, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, + MOVE_U_TURN, + MOVE_VOLT_SWITCH, + MOVE_WILD_CHARGE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKilowattrelTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AERIAL_ACE, + MOVE_AGILITY, + MOVE_AIR_CUTTER, + MOVE_AIR_SLASH, + MOVE_BRAVE_BIRD, + MOVE_CHARGE_BEAM, + MOVE_EERIE_IMPULSE, + MOVE_ELECTRIC_TERRAIN, + MOVE_ELECTRO_BALL, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLY, + MOVE_GIGA_IMPACT, + MOVE_HURRICANE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_TAILWIND, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, + MOVE_U_TURN, + MOVE_VOLT_SWITCH, + MOVE_WILD_CHARGE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_WATTREL + +#if P_FAMILY_MASCHIFF +static const u16 sMaschiffTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_CHARM, + MOVE_CRUNCH, + MOVE_DARK_PULSE, + MOVE_DIG, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FAKE_TEARS, + MOVE_FIRE_FANG, + MOVE_HELPING_HAND, + MOVE_ICE_FANG, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_PSYCHIC_FANGS, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_REVERSAL, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER_FANG, + MOVE_TRAILBLAZE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMabosstiffTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_CHARM, + MOVE_CRUNCH, + MOVE_DARK_PULSE, + MOVE_DIG, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FAKE_TEARS, + MOVE_FIRE_FANG, + MOVE_GIGA_IMPACT, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_ICE_FANG, + MOVE_OUTRAGE, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_PSYCHIC_FANGS, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_REVERSAL, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER_FANG, + MOVE_TRAILBLAZE, + MOVE_WILD_CHARGE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MASCHIFF + +#if P_FAMILY_SHROODLE +static const u16 sShroodleTeachableLearnset[] = { + MOVE_ACID_SPRAY, + MOVE_ACROBATICS, + MOVE_BATON_PASS, + MOVE_DIG, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLING, + MOVE_FOUL_PLAY, + MOVE_GUNK_SHOT, + MOVE_HELPING_HAND, + MOVE_METRONOME, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_NASTY_PLOT, + MOVE_POISON_JAB, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWORDS_DANCE, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TRAILBLAZE, + MOVE_U_TURN, + MOVE_VENOSHOCK, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrafaiaiTeachableLearnset[] = { + MOVE_ACID_SPRAY, + MOVE_ACROBATICS, + MOVE_BATON_PASS, + MOVE_DIG, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLING, + MOVE_FOUL_PLAY, + MOVE_GIGA_IMPACT, + MOVE_GUNK_SHOT, + MOVE_HELPING_HAND, + MOVE_LOW_KICK, + MOVE_LOW_SWEEP, + MOVE_METRONOME, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_NASTY_PLOT, + MOVE_POISON_JAB, + MOVE_POISON_TAIL, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SCARY_FACE, + MOVE_SHADOW_CLAW, + MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWORDS_DANCE, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TRAILBLAZE, + MOVE_U_TURN, + MOVE_VENOSHOCK, + MOVE_X_SCISSOR, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SHROODLE + +#if P_FAMILY_BRAMBLIN +static const u16 sBramblinTeachableLearnset[] = { + MOVE_BULLET_SEED, + MOVE_CONFUSE_RAY, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_GRASSY_TERRAIN, + MOVE_GRASS_KNOT, + MOVE_HEX, + MOVE_LEAF_STORM, + MOVE_NIGHT_SHADE, + MOVE_PHANTOM_FORCE, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_REST, + MOVE_SCARY_FACE, + MOVE_SEED_BOMB, + MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, + MOVE_SPIKES, + MOVE_SUBSTITUTE, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TRAILBLAZE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBrambleghastTeachableLearnset[] = { + MOVE_BULLET_SEED, + MOVE_CONFUSE_RAY, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_GIGA_IMPACT, + MOVE_GRASSY_TERRAIN, + MOVE_GRASS_KNOT, + MOVE_HEX, + MOVE_HYPER_BEAM, + MOVE_LEAF_STORM, + MOVE_NIGHT_SHADE, + MOVE_PHANTOM_FORCE, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_REST, + MOVE_SCARY_FACE, + MOVE_SEED_BOMB, + MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, + MOVE_SPIKES, + MOVE_SUBSTITUTE, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TRAILBLAZE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_BRAMBLIN + +#if P_FAMILY_TOEDSCOOL +static const u16 sToedscoolTeachableLearnset[] = { + MOVE_ACID_SPRAY, + MOVE_BULLET_SEED, + MOVE_CONFUSE_RAY, + MOVE_DAZZLING_GLEAM, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FLASH_CANNON, + MOVE_FOUL_PLAY, + MOVE_GIGA_DRAIN, + MOVE_GRASSY_TERRAIN, + MOVE_GRASS_KNOT, + MOVE_HEX, + MOVE_LEAF_STORM, + MOVE_LIGHT_SCREEN, + MOVE_MAGICAL_LEAF, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SCARY_FACE, + MOVE_SEED_BOMB, + MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SPIKES, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_TOXIC_SPIKES, + MOVE_TRAILBLAZE, + MOVE_TRICK_ROOM, + MOVE_VENOSHOCK, + MOVE_UNAVAILABLE, +}; + +static const u16 sToedscruelTeachableLearnset[] = { + MOVE_ACID_SPRAY, + MOVE_BULLET_SEED, + MOVE_CONFUSE_RAY, + MOVE_DAZZLING_GLEAM, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FLASH_CANNON, + MOVE_FOUL_PLAY, + MOVE_GIGA_DRAIN, + MOVE_GIGA_IMPACT, + MOVE_GRASSY_TERRAIN, + MOVE_GRASS_KNOT, + MOVE_HEX, + MOVE_HYPER_BEAM, + MOVE_LEAF_STORM, + MOVE_LIGHT_SCREEN, + MOVE_MAGICAL_LEAF, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SCARY_FACE, + MOVE_SEED_BOMB, + MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SPIKES, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_TOXIC_SPIKES, + MOVE_TRAILBLAZE, + MOVE_TRICK_ROOM, + MOVE_VENOSHOCK, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_TOEDSCOOL + +#if P_FAMILY_KLAWF +static const u16 sKlawfTeachableLearnset[] = { + MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, + MOVE_BULLDOZE, + MOVE_DIG, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLING, + MOVE_GIGA_IMPACT, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_IRON_DEFENSE, + MOVE_METAL_CLAW, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_POWER_GEM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_REVERSAL, + MOVE_ROCK_BLAST, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SHADOW_CLAW, + MOVE_SLEEP_TALK, + MOVE_STEALTH_ROCK, + MOVE_STOMPING_TANTRUM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWORDS_DANCE, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TRAILBLAZE, + MOVE_X_SCISSOR, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_KLAWF + +#if P_FAMILY_CAPSAKID +static const u16 sCapsakidTeachableLearnset[] = { + MOVE_BULLET_SEED, + MOVE_CRUNCH, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_GRASSY_TERRAIN, + MOVE_GRASS_KNOT, + MOVE_HELPING_HAND, + MOVE_LEAF_STORM, + MOVE_MAGICAL_LEAF, + MOVE_PROTECT, + MOVE_REST, + MOVE_SANDSTORM, + MOVE_SEED_BOMB, + MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TRAILBLAZE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; + +static const u16 sScovillainTeachableLearnset[] = { + MOVE_BULLET_SEED, + MOVE_CRUNCH, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FIRE_FANG, + MOVE_FLAMETHROWER, + MOVE_GIGA_DRAIN, + MOVE_GIGA_IMPACT, + MOVE_GRASSY_TERRAIN, + MOVE_GRASS_KNOT, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_LEAF_STORM, + MOVE_MAGICAL_LEAF, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SEED_BOMB, + MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TRAILBLAZE, + MOVE_WILL_O_WISP, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_CAPSAKID + +#if P_FAMILY_RELLOR +static const u16 sRellorTeachableLearnset[] = { + MOVE_BUG_BUZZ, + MOVE_DIG, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLING, + MOVE_GUNK_SHOT, + MOVE_IRON_DEFENSE, + MOVE_LEECH_LIFE, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_STRUGGLE_BUG, + MOVE_SUBSTITUTE, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_X_SCISSOR, + MOVE_UNAVAILABLE, +}; + +static const u16 sRabscaTeachableLearnset[] = { + MOVE_BUG_BUZZ, + MOVE_CALM_MIND, + MOVE_CONFUSE_RAY, + MOVE_DAZZLING_GLEAM, + MOVE_DIG, + MOVE_EARTH_POWER, + MOVE_ELECTRO_BALL, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_FLING, + MOVE_GIGA_IMPACT, + MOVE_GUNK_SHOT, + MOVE_HYPER_BEAM, + MOVE_IMPRISON, + MOVE_IRON_DEFENSE, + MOVE_LEECH_LIFE, + MOVE_LIGHT_SCREEN, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_POUNCE, + MOVE_POWER_GEM, + MOVE_PROTECT, + MOVE_PSYBEAM, + MOVE_PSYCHIC, + MOVE_PSYCHIC_TERRAIN, + MOVE_PSYSHOCK, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_STORED_POWER, + MOVE_STRUGGLE_BUG, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TRICK, + MOVE_TRICK_ROOM, + MOVE_X_SCISSOR, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_RELLOR + +#if P_FAMILY_FLITTLE +static const u16 sFlittleTeachableLearnset[] = { + MOVE_AGILITY, + MOVE_BATON_PASS, + MOVE_CALM_MIND, + MOVE_CONFUSE_RAY, + MOVE_DISARMING_VOICE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FOUL_PLAY, + MOVE_HELPING_HAND, + MOVE_LIGHT_SCREEN, + MOVE_MUD_SLAP, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_PSYBEAM, + MOVE_PSYCHIC, + MOVE_PSYCHIC_TERRAIN, + MOVE_PSYSHOCK, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SANDSTORM, + MOVE_SEED_BOMB, + MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_STORED_POWER, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TRICK, + MOVE_TRICK_ROOM, + MOVE_U_TURN, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; + +static const u16 sEspathraTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_AGILITY, + MOVE_BATON_PASS, + MOVE_BODY_SLAM, + MOVE_BRAVE_BIRD, + MOVE_CALM_MIND, + MOVE_CONFUSE_RAY, + MOVE_DAZZLING_GLEAM, + MOVE_DISARMING_VOICE, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_FLASH_CANNON, + MOVE_FOUL_PLAY, + MOVE_GIGA_IMPACT, + MOVE_HELPING_HAND, + MOVE_HEX, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_LIGHT_SCREEN, + MOVE_LOW_KICK, + MOVE_MUD_SLAP, + MOVE_NIGHT_SHADE, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_PSYBEAM, + MOVE_PSYCHIC, + MOVE_PSYCHIC_TERRAIN, + MOVE_PSYSHOCK, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SANDSTORM, + MOVE_SEED_BOMB, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_STORED_POWER, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TRICK, + MOVE_TRICK_ROOM, + MOVE_U_TURN, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_FLITTLE + +#if P_FAMILY_TINKATINK +static const u16 sTinkatinkTeachableLearnset[] = { + MOVE_DRAINING_KISS, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FAKE_TEARS, + MOVE_FLASH_CANNON, + MOVE_FLING, + MOVE_FOUL_PLAY, + MOVE_HELPING_HAND, + MOVE_LIGHT_SCREEN, + MOVE_METAL_CLAW, + MOVE_METRONOME, + MOVE_PLAY_ROUGH, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_STEALTH_ROCK, + MOVE_STEEL_BEAM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTinkatuffTeachableLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DRAINING_KISS, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FAKE_TEARS, + MOVE_FLASH_CANNON, + MOVE_FLING, + MOVE_FOUL_PLAY, + MOVE_HELPING_HAND, + MOVE_LIGHT_SCREEN, + MOVE_METAL_CLAW, + MOVE_METRONOME, + MOVE_PLAY_ROUGH, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_STEALTH_ROCK, + MOVE_STEEL_BEAM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTinkatonTeachableLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_BULLDOZE, + MOVE_DRAINING_KISS, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FAKE_TEARS, + MOVE_FLASH_CANNON, + MOVE_FLING, + MOVE_FOUL_PLAY, + MOVE_HEAVY_SLAM, + MOVE_HELPING_HAND, + MOVE_LIGHT_SCREEN, + MOVE_METAL_CLAW, + MOVE_METRONOME, + MOVE_PLAY_ROUGH, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_STEALTH_ROCK, + MOVE_STEEL_BEAM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_TINKATINK + +#if P_FAMILY_WIGLETT +static const u16 sWiglettTeachableLearnset[] = { + MOVE_AGILITY, + MOVE_BLIZZARD, + MOVE_BULLDOZE, + MOVE_CHILLING_WATER, + MOVE_DIG, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FOUL_PLAY, + MOVE_HELPING_HAND, + MOVE_HYDRO_PUMP, + MOVE_ICE_BEAM, + MOVE_LIQUIDATION, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SURF, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWugtrioTeachableLearnset[] = { + MOVE_AGILITY, + MOVE_BLIZZARD, + MOVE_BULLDOZE, + MOVE_CHILLING_WATER, + MOVE_DIG, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FOUL_PLAY, + MOVE_GIGA_IMPACT, + MOVE_HELPING_HAND, + MOVE_HYDRO_PUMP, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIQUIDATION, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SURF, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_WIGLETT + +#if P_FAMILY_BOMBIRDIER +static const u16 sBombirdierTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AERIAL_ACE, + MOVE_AIR_CUTTER, + MOVE_AIR_SLASH, + MOVE_BRAVE_BIRD, + MOVE_DARK_PULSE, + MOVE_DRILL_RUN, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLY, + MOVE_FOUL_PLAY, + MOVE_GIGA_IMPACT, + MOVE_HEAT_WAVE, + MOVE_HURRICANE, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_ICY_WIND, + MOVE_NASTY_PLOT, + MOVE_POWER_GEM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_ROCK_BLAST, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_STEALTH_ROCK, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAILWIND, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_U_TURN, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_BOMBIRDIER + +#if P_FAMILY_FINIZEN +static const u16 sFinizenTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AGILITY, + MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_CHARM, + MOVE_CHILLING_WATER, + MOVE_DISARMING_VOICE, + MOVE_DRAINING_KISS, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLING, + MOVE_HELPING_HAND, + MOVE_HYDRO_PUMP, + MOVE_ICE_BEAM, + MOVE_ICY_WIND, + MOVE_LIQUIDATION, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SURF, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; + +static const u16 sPalafinTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AGILITY, + MOVE_AURA_SPHERE, + MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_BULK_UP, + MOVE_CHARM, + MOVE_CHILLING_WATER, + MOVE_CLOSE_COMBAT, + MOVE_DISARMING_VOICE, + MOVE_DRAINING_KISS, + MOVE_DRAIN_PUNCH, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLING, + MOVE_FOCUS_BLAST, + MOVE_GIGA_IMPACT, + MOVE_GRASS_KNOT, + MOVE_HELPING_HAND, + MOVE_HYDRO_PUMP, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_IRON_HEAD, + MOVE_LIQUIDATION, + MOVE_OUTRAGE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_REVERSAL, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SURF, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_FINIZEN + +#if P_FAMILY_VAROOM +static const u16 sVaroomTeachableLearnset[] = { + MOVE_ACID_SPRAY, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLASH_CANNON, + MOVE_GUNK_SHOT, + MOVE_IRON_DEFENSE, + MOVE_IRON_HEAD, + MOVE_POISON_JAB, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_STEEL_BEAM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TOXIC_SPIKES, + MOVE_VENOSHOCK, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; + +static const u16 sRevavroomTeachableLearnset[] = { + MOVE_ACID_SPRAY, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLASH_CANNON, + MOVE_GIGA_IMPACT, + MOVE_GUNK_SHOT, + MOVE_HEAVY_SLAM, + MOVE_HYPER_BEAM, + MOVE_IRON_DEFENSE, + MOVE_IRON_HEAD, + MOVE_OVERHEAT, + MOVE_POISON_JAB, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_STEEL_BEAM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TOXIC_SPIKES, + MOVE_VENOSHOCK, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_VAROOM + +#if P_FAMILY_CYCLIZAR +static const u16 sCyclizarTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AERIAL_ACE, + MOVE_AGILITY, + MOVE_BODY_SLAM, + MOVE_CRUNCH, + MOVE_DRACO_METEOR, + MOVE_DRAGON_CLAW, + MOVE_DRAGON_PULSE, + MOVE_DRAGON_TAIL, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_FANG, + MOVE_GIGA_IMPACT, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_ICE_SPINNER, + MOVE_IRON_HEAD, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_OUTRAGE, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_THUNDER_FANG, + MOVE_TRAILBLAZE, + MOVE_U_TURN, + MOVE_WILD_CHARGE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_CYCLIZAR + +#if P_FAMILY_ORTHWORM +static const u16 sOrthwormTeachableLearnset[] = { + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLASH_CANNON, + MOVE_GIGA_IMPACT, + MOVE_HEAVY_SLAM, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_IRON_DEFENSE, + MOVE_IRON_HEAD, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_BLAST, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SPIKES, + MOVE_STEALTH_ROCK, + MOVE_STEEL_BEAM, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ORTHWORM + +#if P_FAMILY_GLIMMET +static const u16 sGlimmetTeachableLearnset[] = { + MOVE_ACID_SPRAY, + MOVE_CONFUSE_RAY, + MOVE_DAZZLING_GLEAM, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_GUNK_SHOT, + MOVE_IRON_DEFENSE, + MOVE_LIGHT_SCREEN, + MOVE_MUD_SHOT, + MOVE_POWER_GEM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_BLAST, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_SPIKES, + MOVE_STEALTH_ROCK, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TERA_BLAST, + MOVE_TOXIC_SPIKES, + MOVE_VENOSHOCK, + MOVE_UNAVAILABLE, +}; + +static const u16 sGlimmoraTeachableLearnset[] = { + MOVE_ACID_SPRAY, + MOVE_CONFUSE_RAY, + MOVE_DAZZLING_GLEAM, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_FLASH_CANNON, + MOVE_GIGA_IMPACT, + MOVE_GUNK_SHOT, + MOVE_HYPER_BEAM, + MOVE_IRON_DEFENSE, + MOVE_LIGHT_SCREEN, + MOVE_MUD_SHOT, + MOVE_POWER_GEM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_BLAST, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SPIKES, + MOVE_STEALTH_ROCK, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TERA_BLAST, + MOVE_TOXIC_SPIKES, + MOVE_VENOSHOCK, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_GLIMMET + +#if P_FAMILY_GREAVARD +static const u16 sGreavardTeachableLearnset[] = { + MOVE_BULLDOZE, + MOVE_CHARM, + MOVE_CONFUSE_RAY, + MOVE_CRUNCH, + MOVE_DIG, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_FANG, + MOVE_HELPING_HAND, + MOVE_HEX, + MOVE_ICE_FANG, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_NIGHT_SHADE, + MOVE_PHANTOM_FORCE, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_PSYCHIC_FANGS, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER_FANG, + MOVE_TRICK, + MOVE_UNAVAILABLE, +}; + +static const u16 sHoundstoneTeachableLearnset[] = { + MOVE_BODY_PRESS, + MOVE_BULLDOZE, + MOVE_CHARM, + MOVE_CONFUSE_RAY, + MOVE_CRUNCH, + MOVE_DIG, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_FANG, + MOVE_GIGA_IMPACT, + MOVE_HELPING_HAND, + MOVE_HEX, + MOVE_HYPER_BEAM, + MOVE_ICE_FANG, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_NIGHT_SHADE, + MOVE_PHANTOM_FORCE, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_PSYCHIC_FANGS, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER_FANG, + MOVE_TRICK, + MOVE_WILL_O_WISP, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_GREAVARD + +#if P_FAMILY_FLAMIGO +static const u16 sFlamigoTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AERIAL_ACE, + MOVE_AGILITY, + MOVE_AIR_CUTTER, + MOVE_AIR_SLASH, + MOVE_BRAVE_BIRD, + MOVE_BULK_UP, + MOVE_CHILLING_WATER, + MOVE_CLOSE_COMBAT, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLING, + MOVE_FLY, + MOVE_GIGA_IMPACT, + MOVE_HURRICANE, + MOVE_HYPER_BEAM, + MOVE_LIQUIDATION, + MOVE_LOW_KICK, + MOVE_LOW_SWEEP, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_REST, + MOVE_REVERSAL, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_TAILWIND, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_U_TURN, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_FLAMIGO + +#if P_FAMILY_CETODDLE +static const u16 sCetoddleTeachableLearnset[] = { + MOVE_AMNESIA, + MOVE_AVALANCHE, + MOVE_BLIZZARD, + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_CHARM, + MOVE_CHILLING_WATER, + MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_HEAVY_SLAM, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_ICE_BEAM, + MOVE_ICE_FANG, + MOVE_ICE_SPINNER, + MOVE_ICY_WIND, + MOVE_LIQUIDATION, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNOWSCAPE, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCetitanTeachableLearnset[] = { + MOVE_AMNESIA, + MOVE_AVALANCHE, + MOVE_BLIZZARD, + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_CHARM, + MOVE_CHILLING_WATER, + MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_GIGA_IMPACT, + MOVE_HEAVY_SLAM, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_ICE_BEAM, + MOVE_ICE_FANG, + MOVE_ICE_PUNCH, + MOVE_ICE_SPINNER, + MOVE_ICY_WIND, + MOVE_LIQUIDATION, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNOWSCAPE, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_CETODDLE + +#if P_FAMILY_VELUZA +static const u16 sVeluzaTeachableLearnset[] = { + MOVE_AGILITY, + MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_CHILLING_WATER, + MOVE_CRUNCH, + MOVE_DRILL_RUN, + MOVE_ENDURE, + MOVE_GIGA_IMPACT, + MOVE_HYDRO_PUMP, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_ICE_FANG, + MOVE_ICY_WIND, + MOVE_LIQUIDATION, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_PSYCHIC_FANGS, + MOVE_PSYCHIC_TERRAIN, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNOWSCAPE, + MOVE_STORED_POWER, + MOVE_SUBSTITUTE, + MOVE_SURF, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_VELUZA + +#if P_FAMILY_DONDOZO +static const u16 sDondozoTeachableLearnset[] = { + MOVE_AVALANCHE, + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_CHILLING_WATER, + MOVE_CRUNCH, + MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_GIGA_IMPACT, + MOVE_HEAVY_SLAM, + MOVE_HYDRO_PUMP, + MOVE_HYPER_BEAM, + MOVE_ICE_FANG, + MOVE_LIQUIDATION, + MOVE_OUTRAGE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_SLIDE, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SURF, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_DONDOZO + +#if P_FAMILY_TATSUGIRI +static const u16 sTatsugiriTeachableLearnset[] = { + MOVE_BATON_PASS, + MOVE_CHILLING_WATER, + MOVE_DRACO_METEOR, + MOVE_DRAGON_DANCE, + MOVE_DRAGON_PULSE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_GIGA_IMPACT, + MOVE_HELPING_HAND, + MOVE_HYDRO_PUMP, + MOVE_HYPER_BEAM, + MOVE_ICY_WIND, + MOVE_NASTY_PLOT, + MOVE_OUTRAGE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SURF, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_TATSUGIRI + +#if P_FAMILY_GREAT_TUSK +static const u16 sGreatTuskTeachableLearnset[] = { + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_BULLDOZE, + MOVE_CLOSE_COMBAT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_FANG, + MOVE_FLASH_CANNON, + MOVE_GIGA_IMPACT, + MOVE_HEAVY_SLAM, + MOVE_HYPER_BEAM, + MOVE_ICE_FANG, + MOVE_ICE_SPINNER, + MOVE_IRON_HEAD, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_PSYSHOCK, + MOVE_REST, + MOVE_REVERSAL, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SMART_STRIKE, + MOVE_STEALTH_ROCK, + MOVE_STOMPING_TANTRUM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THUNDER_FANG, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_GREAT_TUSK + +#if P_FAMILY_SCREAM_TAIL +static const u16 sScreamTailTeachableLearnset[] = { + MOVE_AMNESIA, + MOVE_BATON_PASS, + MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_CRUNCH, + MOVE_DAZZLING_GLEAM, + MOVE_DIG, + MOVE_DRAIN_PUNCH, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FAKE_TEARS, + MOVE_FIRE_BLAST, + MOVE_FIRE_FANG, + MOVE_FIRE_PUNCH, + MOVE_FLAMETHROWER, + MOVE_FLING, + MOVE_FOCUS_BLAST, + MOVE_GIGA_IMPACT, + MOVE_GRASS_KNOT, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_ICE_BEAM, + MOVE_ICE_FANG, + MOVE_ICE_PUNCH, + MOVE_IMPRISON, + MOVE_LIGHT_SCREEN, + MOVE_METRONOME, + MOVE_MISTY_TERRAIN, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_PSYBEAM, + MOVE_PSYCHIC, + MOVE_PSYCHIC_FANGS, + MOVE_PSYCHIC_TERRAIN, + MOVE_PSYSHOCK, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SNOWSCAPE, + MOVE_STEALTH_ROCK, + MOVE_STOMPING_TANTRUM, + MOVE_STORED_POWER, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_THUNDER_FANG, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_TRICK, + MOVE_TRICK_ROOM, + MOVE_WATER_PULSE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SCREAM_TAIL + +#if P_FAMILY_BRUTE_BONNET +static const u16 sBruteBonnetTeachableLearnset[] = { + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BULLET_SEED, + MOVE_CLOSE_COMBAT, + MOVE_CONFUSE_RAY, + MOVE_CRUNCH, + MOVE_DARK_PULSE, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_GIGA_IMPACT, + MOVE_GRASSY_TERRAIN, + MOVE_GRASS_KNOT, + MOVE_HEX, + MOVE_HYPER_BEAM, + MOVE_LEAF_STORM, + MOVE_MAGICAL_LEAF, + MOVE_OUTRAGE, + MOVE_POLLEN_PUFF, + MOVE_PROTECT, + MOVE_REST, + MOVE_SCARY_FACE, + MOVE_SEED_BOMB, + MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_TRAILBLAZE, + MOVE_VENOSHOCK, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_BRUTE_BONNET + +#if P_FAMILY_FLUTTER_MANE +static const u16 sFlutterManeTeachableLearnset[] = { + MOVE_CALM_MIND, + MOVE_CHARGE_BEAM, + MOVE_CHARM, + MOVE_CONFUSE_RAY, + MOVE_DARK_PULSE, + MOVE_DAZZLING_GLEAM, + MOVE_DISARMING_VOICE, + MOVE_DRAINING_KISS, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FAKE_TEARS, + MOVE_GIGA_IMPACT, + MOVE_HELPING_HAND, + MOVE_HEX, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_ICY_WIND, + MOVE_IMPRISON, + MOVE_MAGICAL_LEAF, + MOVE_MISTY_TERRAIN, + MOVE_NIGHT_SHADE, + MOVE_PHANTOM_FORCE, + MOVE_POWER_GEM, + MOVE_PROTECT, + MOVE_PSYBEAM, + MOVE_PSYSHOCK, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_STORED_POWER, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWIFT, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, + MOVE_TRICK_ROOM, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_FLUTTER_MANE + +#if P_FAMILY_SLITHER_WING +static const u16 sSlitherWingTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AERIAL_ACE, + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, + MOVE_BUG_BUZZ, + MOVE_BULK_UP, + MOVE_CLOSE_COMBAT, + MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLAME_CHARGE, + MOVE_FLARE_BLITZ, + MOVE_GIGA_DRAIN, + MOVE_GIGA_IMPACT, + MOVE_HEAT_WAVE, + MOVE_HEAVY_SLAM, + MOVE_HURRICANE, + MOVE_HYPER_BEAM, + MOVE_LEECH_LIFE, + MOVE_LOW_KICK, + MOVE_LOW_SWEEP, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_REVERSAL, + MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_TRAILBLAZE, + MOVE_U_TURN, + MOVE_WILD_CHARGE, + MOVE_WILL_O_WISP, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SLITHER_WING + +#if P_FAMILY_SANDY_SHOCKS +static const u16 sSandyShocksTeachableLearnset[] = { + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_CHARGE_BEAM, + MOVE_EARTHQUAKE, + MOVE_EARTH_POWER, + MOVE_EERIE_IMPULSE, + MOVE_ELECTRIC_TERRAIN, + MOVE_ELECTRO_BALL, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLASH_CANNON, + MOVE_GIGA_IMPACT, + MOVE_HEAVY_SLAM, + MOVE_HYPER_BEAM, + MOVE_IRON_DEFENSE, + MOVE_LIGHT_SCREEN, + MOVE_MUD_SHOT, + MOVE_POWER_GEM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_SANDSTORM, + MOVE_SLEEP_TALK, + MOVE_SPIKES, + MOVE_STEALTH_ROCK, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, + MOVE_VOLT_SWITCH, + MOVE_WILD_CHARGE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_SANDY_SHOCKS + +#if P_FAMILY_IRON_TREADS +static const u16 sIronTreadsTeachableLearnset[] = { + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_EARTHQUAKE, + MOVE_EARTH_POWER, + MOVE_ELECTRIC_TERRAIN, + MOVE_ELECTRO_BALL, + MOVE_FACADE, + MOVE_FLASH_CANNON, + MOVE_GIGA_IMPACT, + MOVE_HEAVY_SLAM, + MOVE_HYPER_BEAM, + MOVE_ICE_FANG, + MOVE_ICE_SPINNER, + MOVE_IRON_DEFENSE, + MOVE_IRON_HEAD, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SMART_STRIKE, + MOVE_STEALTH_ROCK, + MOVE_STEEL_BEAM, + MOVE_STOMPING_TANTRUM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THUNDER, + MOVE_THUNDER_FANG, + MOVE_VOLT_SWITCH, + MOVE_WILD_CHARGE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_IRON_TREADS + +#if P_FAMILY_IRON_BUNDLE +static const u16 sIronBundleTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AGILITY, + MOVE_AIR_CUTTER, + MOVE_AVALANCHE, + MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_CHILLING_WATER, + MOVE_ELECTRIC_TERRAIN, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLING, + MOVE_GIGA_IMPACT, + MOVE_HELPING_HAND, + MOVE_HYDRO_PUMP, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICE_SPINNER, + MOVE_ICY_WIND, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNOWSCAPE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_U_TURN, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_IRON_BUNDLE + +#if P_FAMILY_IRON_HANDS +static const u16 sIronHandsTeachableLearnset[] = { + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, + MOVE_BULLDOZE, + MOVE_CLOSE_COMBAT, + MOVE_DRAIN_PUNCH, + MOVE_EARTHQUAKE, + MOVE_ELECTRIC_TERRAIN, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_PUNCH, + MOVE_FLING, + MOVE_FOCUS_BLAST, + MOVE_GIGA_IMPACT, + MOVE_HEAVY_SLAM, + MOVE_HYPER_BEAM, + MOVE_ICE_PUNCH, + MOVE_IRON_DEFENSE, + MOVE_IRON_HEAD, + MOVE_LOW_KICK, + MOVE_LOW_SWEEP, + MOVE_METRONOME, + MOVE_PLAY_ROUGH, + MOVE_PROTECT, + MOVE_REST, + MOVE_REVERSAL, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, + MOVE_VOLT_SWITCH, + MOVE_WILD_CHARGE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_IRON_HANDS + +#if P_FAMILY_IRON_JUGULIS +static const u16 sIronJugulisTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AIR_CUTTER, + MOVE_AIR_SLASH, + MOVE_BODY_SLAM, + MOVE_CHARGE_BEAM, + MOVE_CRUNCH, + MOVE_DARK_PULSE, + MOVE_DRAGON_PULSE, + MOVE_DRAGON_TAIL, + MOVE_EARTH_POWER, + MOVE_ELECTRIC_TERRAIN, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FIRE_FANG, + MOVE_FLAMETHROWER, + MOVE_FLASH_CANNON, + MOVE_FLY, + MOVE_FOCUS_BLAST, + MOVE_GIGA_IMPACT, + MOVE_HEAT_WAVE, + MOVE_HURRICANE, + MOVE_HYDRO_PUMP, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_IRON_HEAD, + MOVE_OUTRAGE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAILWIND, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_U_TURN, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_IRON_JUGULIS + +#if P_FAMILY_IRON_MOTH +static const u16 sIronMothTeachableLearnset[] = { + MOVE_ACID_SPRAY, + MOVE_ACROBATICS, + MOVE_AGILITY, + MOVE_AIR_SLASH, + MOVE_BUG_BUZZ, + MOVE_CHARGE_BEAM, + MOVE_CONFUSE_RAY, + MOVE_DAZZLING_GLEAM, + MOVE_ELECTRIC_TERRAIN, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FIRE_SPIN, + MOVE_FLAMETHROWER, + MOVE_FLAME_CHARGE, + MOVE_FLARE_BLITZ, + MOVE_FLASH_CANNON, + MOVE_GIGA_IMPACT, + MOVE_HEAT_WAVE, + MOVE_HELPING_HAND, + MOVE_HURRICANE, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_POUNCE, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SOLAR_BEAM, + MOVE_STRUGGLE_BUG, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_TOXIC_SPIKES, + MOVE_U_TURN, + MOVE_VENOSHOCK, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_IRON_MOTH + +#if P_FAMILY_IRON_THORNS +static const u16 sIronThornsTeachableLearnset[] = { + MOVE_BLIZZARD, + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, + MOVE_BULLDOZE, + MOVE_CHARGE_BEAM, + MOVE_CRUNCH, + MOVE_DIG, + MOVE_DRAGON_CLAW, + MOVE_DRAGON_DANCE, + MOVE_DRAGON_TAIL, + MOVE_EARTHQUAKE, + MOVE_EARTH_POWER, + MOVE_EERIE_IMPULSE, + MOVE_ELECTRIC_TERRAIN, + MOVE_ELECTRO_BALL, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FIRE_FANG, + MOVE_FIRE_PUNCH, + MOVE_FLAMETHROWER, + MOVE_FLING, + MOVE_FOCUS_BLAST, + MOVE_GIGA_IMPACT, + MOVE_HEAVY_SLAM, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_ICE_FANG, + MOVE_ICE_PUNCH, + MOVE_IRON_DEFENSE, + MOVE_IRON_HEAD, + MOVE_LOW_KICK, + MOVE_METAL_CLAW, + MOVE_POWER_GEM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_BLAST, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SNARL, + MOVE_SPIKES, + MOVE_STEALTH_ROCK, + MOVE_STOMPING_TANTRUM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWORDS_DANCE, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_THUNDER_FANG, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_VOLT_SWITCH, + MOVE_WILD_CHARGE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_IRON_THORNS + +#if P_FAMILY_FRIGIBAX +static const u16 sFrigibaxTeachableLearnset[] = { + MOVE_AVALANCHE, + MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_CRUNCH, + MOVE_DIG, + MOVE_DRACO_METEOR, + MOVE_DRAGON_CLAW, + MOVE_DRAGON_PULSE, + MOVE_DRAGON_TAIL, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_HELPING_HAND, + MOVE_ICE_BEAM, + MOVE_ICE_FANG, + MOVE_ICY_WIND, + MOVE_OUTRAGE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SLEEP_TALK, + MOVE_SNOWSCAPE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_UNAVAILABLE, +}; + +static const u16 sArctibaxTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_AVALANCHE, + MOVE_BLIZZARD, + MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, + MOVE_CRUNCH, + MOVE_DIG, + MOVE_DRACO_METEOR, + MOVE_DRAGON_CLAW, + MOVE_DRAGON_PULSE, + MOVE_DRAGON_TAIL, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_HELPING_HAND, + MOVE_ICE_BEAM, + MOVE_ICE_FANG, + MOVE_ICY_WIND, + MOVE_IRON_HEAD, + MOVE_OUTRAGE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SNOWSCAPE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_UNAVAILABLE, +}; + +static const u16 sBaxcaliburTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_AVALANCHE, + MOVE_BLIZZARD, + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, + MOVE_BULLDOZE, + MOVE_CRUNCH, + MOVE_DIG, + MOVE_DRACO_METEOR, + MOVE_DRAGON_CLAW, + MOVE_DRAGON_DANCE, + MOVE_DRAGON_PULSE, + MOVE_DRAGON_TAIL, + MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FALSE_SWIPE, + MOVE_GIGA_IMPACT, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_ICE_FANG, + MOVE_ICY_WIND, + MOVE_IRON_HEAD, + MOVE_OUTRAGE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SNOWSCAPE, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THUNDER_FANG, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_FRIGIBAX + +#if P_FAMILY_GIMMIGHOUL +static const u16 sGimmighoulTeachableLearnset[] = { + MOVE_CONFUSE_RAY, + MOVE_ENDURE, + MOVE_HEX, + MOVE_LIGHT_SCREEN, + MOVE_NASTY_PLOT, + MOVE_NIGHT_SHADE, + MOVE_POWER_GEM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_UNAVAILABLE, +}; + +static const u16 sGholdengoTeachableLearnset[] = { + MOVE_CHARGE_BEAM, + MOVE_CONFUSE_RAY, + MOVE_DAZZLING_GLEAM, + MOVE_ELECTRO_BALL, + MOVE_ENDURE, + MOVE_FLASH_CANNON, + MOVE_FLING, + MOVE_FOCUS_BLAST, + MOVE_GIGA_IMPACT, + MOVE_HEAVY_SLAM, + MOVE_HEX, + MOVE_HYPER_BEAM, + MOVE_IRON_HEAD, + MOVE_LIGHT_SCREEN, + MOVE_LOW_KICK, + MOVE_LOW_SWEEP, + MOVE_NASTY_PLOT, + MOVE_NIGHT_SHADE, + MOVE_POWER_GEM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_PSYSHOCK, + MOVE_REFLECT, + MOVE_REST, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SLEEP_TALK, + MOVE_STEEL_BEAM, + MOVE_SUBSTITUTE, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_TRICK, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_GIMMIGHOUL + +#if P_FAMILY_WO_CHIEN +static const u16 sWoChienTeachableLearnset[] = { + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BULLET_SEED, + MOVE_DARK_PULSE, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_FOUL_PLAY, + MOVE_GIGA_DRAIN, + MOVE_GIGA_IMPACT, + MOVE_GRASSY_TERRAIN, + MOVE_GRASS_KNOT, + MOVE_HEX, + MOVE_HYPER_BEAM, + MOVE_LEAF_STORM, + MOVE_LIGHT_SCREEN, + MOVE_MAGICAL_LEAF, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_POLLEN_PUFF, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SCARY_FACE, + MOVE_SEED_BOMB, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_SOLAR_BEAM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_TRAILBLAZE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_WO_CHIEN + +#if P_FAMILY_CHIEN_PAO +static const u16 sChienPaoTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AERIAL_ACE, + MOVE_AVALANCHE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CRUNCH, + MOVE_DARK_PULSE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FALSE_SWIPE, + MOVE_GIGA_IMPACT, + MOVE_HEX, + MOVE_HYPER_BEAM, + MOVE_ICE_FANG, + MOVE_ICE_SPINNER, + MOVE_ICY_WIND, + MOVE_PROTECT, + MOVE_PSYCHIC_FANGS, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_SNOWSCAPE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_CHIEN_PAO + +#if P_FAMILY_TING_LU +static const u16 sTingLuTeachableLearnset[] = { + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BULLDOZE, + MOVE_DARK_PULSE, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_EARTH_POWER, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_GIGA_IMPACT, + MOVE_HEAVY_SLAM, + MOVE_HEX, + MOVE_HYPER_BEAM, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SLIDE, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_SPIKES, + MOVE_STEALTH_ROCK, + MOVE_STOMPING_TANTRUM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_TING_LU + +#if P_FAMILY_CHI_YU +static const u16 sChiYuTeachableLearnset[] = { + MOVE_CONFUSE_RAY, + MOVE_CRUNCH, + MOVE_DARK_PULSE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FIRE_SPIN, + MOVE_FLAMETHROWER, + MOVE_FLAME_CHARGE, + MOVE_FLARE_BLITZ, + MOVE_GIGA_IMPACT, + MOVE_HEAT_WAVE, + MOVE_HEX, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_NASTY_PLOT, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_WILL_O_WISP, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_CHI_YU + +#if P_FAMILY_ROARING_MOON +static const u16 sRoaringMoonTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AERIAL_ACE, + MOVE_AIR_SLASH, + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, + MOVE_CRUNCH, + MOVE_DARK_PULSE, + MOVE_DIG, + MOVE_DRACO_METEOR, + MOVE_DRAGON_CLAW, + MOVE_DRAGON_DANCE, + MOVE_DRAGON_PULSE, + MOVE_DRAGON_TAIL, + MOVE_EARTHQUAKE, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FIRE_FANG, + MOVE_FIRE_SPIN, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_GIGA_IMPACT, + MOVE_HEAT_WAVE, + MOVE_HURRICANE, + MOVE_HYDRO_PUMP, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_IRON_HEAD, + MOVE_METAL_CLAW, + MOVE_OUTRAGE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SLIDE, + MOVE_SCARY_FACE, + MOVE_SHADOW_CLAW, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_STOMPING_TANTRUM, + MOVE_STONE_EDGE, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_TAILWIND, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THUNDER_FANG, + MOVE_U_TURN, + MOVE_X_SCISSOR, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_ROARING_MOON + +#if P_FAMILY_IRON_VALIANT +static const u16 sIronValiantTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_AGILITY, + MOVE_AURA_SPHERE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CHARGE_BEAM, + MOVE_CLOSE_COMBAT, + MOVE_CONFUSE_RAY, + MOVE_DAZZLING_GLEAM, + MOVE_DRAIN_PUNCH, + MOVE_ELECTRIC_TERRAIN, + MOVE_ENCORE, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FALSE_SWIPE, + MOVE_FIRE_PUNCH, + MOVE_FLING, + MOVE_FOCUS_BLAST, + MOVE_GIGA_IMPACT, + MOVE_GRASS_KNOT, + MOVE_HELPING_HAND, + MOVE_HEX, + MOVE_HYPER_BEAM, + MOVE_HYPER_VOICE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_IMPRISON, + MOVE_LIGHT_SCREEN, + MOVE_LIQUIDATION, + MOVE_LOW_KICK, + MOVE_MAGICAL_LEAF, + MOVE_METRONOME, + MOVE_MISTY_TERRAIN, + MOVE_POISON_JAB, + MOVE_PROTECT, + MOVE_PSYBEAM, + MOVE_PSYCHIC, + MOVE_PSYCHIC_TERRAIN, + MOVE_PSYSHOCK, + MOVE_REFLECT, + MOVE_REST, + MOVE_REVERSAL, + MOVE_SHADOW_BALL, + MOVE_SHADOW_CLAW, + MOVE_SKILL_SWAP, + MOVE_SLEEP_TALK, + MOVE_STORED_POWER, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_TRICK, + MOVE_TRICK_ROOM, + MOVE_X_SCISSOR, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_IRON_VALIANT + +#if P_FAMILY_KORAIDON +static const u16 sKoraidonTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AGILITY, + MOVE_BODY_PRESS, + MOVE_BODY_SLAM, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_BULLDOZE, + MOVE_CLOSE_COMBAT, + MOVE_CRUNCH, + MOVE_DIG, + MOVE_DRACO_METEOR, + MOVE_DRAGON_CLAW, + MOVE_DRAGON_PULSE, + MOVE_DRAGON_TAIL, + MOVE_DRAIN_PUNCH, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FIRE_FANG, + MOVE_FIRE_SPIN, + MOVE_FLAMETHROWER, + MOVE_FLAME_CHARGE, + MOVE_FLARE_BLITZ, + MOVE_FOCUS_BLAST, + MOVE_GIGA_IMPACT, + MOVE_HEAT_WAVE, + MOVE_HEAVY_SLAM, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_ICE_FANG, + MOVE_IRON_HEAD, + MOVE_LOW_KICK, + MOVE_LOW_SWEEP, + MOVE_MUD_SHOT, + MOVE_MUD_SLAP, + MOVE_OUTRAGE, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_REVERSAL, + MOVE_SCARY_FACE, + MOVE_SHADOW_CLAW, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_SOLAR_BEAM, + MOVE_STOMPING_TANTRUM, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SWORDS_DANCE, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THUNDER_FANG, + MOVE_U_TURN, + MOVE_WILD_CHARGE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_KORAIDON + +#if P_FAMILY_MIRAIDON +static const u16 sMiraidonTeachableLearnset[] = { + MOVE_ACROBATICS, + MOVE_AGILITY, + MOVE_BODY_SLAM, + MOVE_CALM_MIND, + MOVE_CHARGE_BEAM, + MOVE_CONFUSE_RAY, + MOVE_CRUNCH, + MOVE_DAZZLING_GLEAM, + MOVE_DRACO_METEOR, + MOVE_DRAGON_CLAW, + MOVE_DRAGON_PULSE, + MOVE_DRAGON_TAIL, + MOVE_EERIE_IMPULSE, + MOVE_ELECTRIC_TERRAIN, + MOVE_ELECTRO_BALL, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FLASH_CANNON, + MOVE_GIGA_IMPACT, + MOVE_HEAVY_SLAM, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OUTRAGE, + MOVE_OVERHEAT, + MOVE_POWER_GEM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_SOLAR_BEAM, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_THUNDER_WAVE, + MOVE_U_TURN, + MOVE_VOLT_SWITCH, + MOVE_WILD_CHARGE, + MOVE_ZEN_HEADBUTT, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MIRAIDON + +#if P_FAMILY_WALKING_WAKE +static const u16 sWalkingWakeTeachableLearnset[] = { + MOVE_AGILITY, + MOVE_BODY_SLAM, + MOVE_CHILLING_WATER, + MOVE_CRUNCH, + MOVE_DRACO_METEOR, + MOVE_DRAGON_CLAW, + MOVE_DRAGON_DANCE, + MOVE_DRAGON_PULSE, + MOVE_DRAGON_TAIL, + MOVE_ENDURE, + MOVE_FACADE, + MOVE_FIRE_FANG, + MOVE_FLAMETHROWER, + MOVE_GIGA_IMPACT, + MOVE_HURRICANE, + MOVE_HYDRO_PUMP, + MOVE_HYPER_BEAM, + MOVE_LIQUIDATION, + MOVE_LOW_KICK, + MOVE_MUD_SHOT, + MOVE_OUTRAGE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SNARL, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_SWIFT, + MOVE_TAKE_DOWN, + MOVE_TERA_BLAST, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_WALKING_WAKE + +#if P_FAMILY_IRON_LEAVES +static const u16 sIronLeavesTeachableLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_AGILITY, + MOVE_AIR_SLASH, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CLOSE_COMBAT, + MOVE_ELECTRIC_TERRAIN, + MOVE_ENDURE, + MOVE_ENERGY_BALL, + MOVE_FACADE, + MOVE_FALSE_SWIPE, + MOVE_FOCUS_BLAST, + MOVE_GIGA_DRAIN, + MOVE_GIGA_IMPACT, + MOVE_GRASSY_TERRAIN, + MOVE_GRASS_KNOT, + MOVE_HELPING_HAND, + MOVE_HYPER_BEAM, + MOVE_IMPRISON, + MOVE_IRON_DEFENSE, + MOVE_LEAF_STORM, + MOVE_MAGICAL_LEAF, + MOVE_PROTECT, + MOVE_PSYCHIC_TERRAIN, + MOVE_REST, + MOVE_REVERSAL, + MOVE_SCARY_FACE, + MOVE_SLEEP_TALK, + MOVE_SMART_STRIKE, + MOVE_SOLAR_BEAM, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TERA_BLAST, + MOVE_TRAILBLAZE, + MOVE_WILD_CHARGE, + MOVE_X_SCISSOR, + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_IRON_LEAVES + +#if P_FAMILY_POLTCHAGEIST +static const u16 sPoltchageistTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sSinistchaTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_POLTCHAGEIST + +#if P_FAMILY_OKIDOGI +static const u16 sOkidogiTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_OKIDOGI + +#if P_FAMILY_MUNKIDORI +static const u16 sMunkidoriTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_MUNKIDORI + +#if P_FAMILY_FEZANDIPITI +static const u16 sFezandipitiTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_FEZANDIPITI + +#if P_FAMILY_OGERPON +static const u16 sOgerponTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_OGERPON diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h deleted file mode 100644 index d967a50fca..0000000000 --- a/src/data/pokemon_graphics/back_pic_coordinates.h +++ /dev/null @@ -1,1363 +0,0 @@ - -#define PIKACHU_BACK_PIC_COORDS \ -{ \ - .size = MON_COORDS_SIZE(64, 56), \ - .y_offset = 4, \ -} - -#define ARCEUS_BACK_PIC_COORDS \ -{ \ - .size = MON_COORDS_SIZE(64, 64), \ - .y_offset = 3, \ -} - -#define DEERLING_BACK_PIC_COORDS \ -{ \ - .size = MON_COORDS_SIZE(48, 56), \ - .y_offset = 9, \ -} - -// All Pokémon pics are 64x64, but this data table defines where in this 64x64 frame -// the sprite's non-transparent pixels actually are. -// .size is the dimensions of this drawn pixel area. -// .y_offset is the number of pixels between the drawn pixel area and the bottom edge. -const struct MonCoords gMonBackPicCoords[NUM_SPECIES + 1] = -{ - [SPECIES_NONE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_BULBASAUR] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, - [SPECIES_IVYSAUR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, - [SPECIES_VENUSAUR] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_CHARMANDER] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_CHARMELEON] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_CHARIZARD] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_SQUIRTLE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_WARTORTLE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_BLASTOISE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_CATERPIE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - [SPECIES_METAPOD] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, - [SPECIES_BUTTERFREE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_WEEDLE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_KAKUNA] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 12 }, - [SPECIES_BEEDRILL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_PIDGEY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_PIDGEOTTO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_PIDGEOT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_RATTATA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_RATICATE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_SPEAROW] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_FEAROW] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_EKANS] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_ARBOK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_PIKACHU] = PIKACHU_BACK_PIC_COORDS, - [SPECIES_RAICHU] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_SANDSHREW] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_SANDSLASH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_NIDORAN_F] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_NIDORINA] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_NIDOQUEEN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_NIDORAN_M] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_NIDORINO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_NIDOKING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_CLEFAIRY] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, - [SPECIES_CLEFABLE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_VULPIX] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_NINETALES] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_JIGGLYPUFF] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 12 }, - [SPECIES_WIGGLYTUFF] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_ZUBAT] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_GOLBAT] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, - [SPECIES_ODDISH] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_GLOOM] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_VILEPLUME] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_PARAS] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 18 }, - [SPECIES_PARASECT] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_VENONAT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_VENOMOTH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_DIGLETT] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_DUGTRIO] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 17 }, - [SPECIES_MEOWTH] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_PERSIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_PSYDUCK] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_GOLDUCK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_MANKEY] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_PRIMEAPE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_GROWLITHE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - [SPECIES_ARCANINE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_POLIWAG] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 18 }, - [SPECIES_POLIWHIRL] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_POLIWRATH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_ABRA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 12 }, - [SPECIES_KADABRA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_ALAKAZAM] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_MACHOP] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_MACHOKE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_MACHAMP] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_BELLSPROUT] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_WEEPINBELL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_VICTREEBEL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_TENTACOOL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_TENTACRUEL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_GEODUDE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_GRAVELER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_GOLEM] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_PONYTA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_RAPIDASH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SLOWPOKE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_SLOWBRO] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_MAGNEMITE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, - [SPECIES_MAGNETON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_FARFETCHD] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_DODUO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_DODRIO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_SEEL] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_DEWGONG] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_GRIMER] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_MUK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, - [SPECIES_SHELLDER] = { .size = MON_COORDS_SIZE(48, 24), .y_offset = 21 }, - [SPECIES_CLOYSTER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_GASTLY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_HAUNTER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_GENGAR] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_ONIX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_DROWZEE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_HYPNO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_KRABBY] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - [SPECIES_KINGLER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_VOLTORB] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_ELECTRODE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_EXEGGCUTE] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 18 }, - [SPECIES_EXEGGUTOR] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_CUBONE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_MAROWAK] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - [SPECIES_HITMONLEE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_HITMONCHAN] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_LICKITUNG] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_KOFFING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_WEEZING] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_RHYHORN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_RHYDON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_CHANSEY] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_TANGELA] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_KANGASKHAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_HORSEA] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_SEADRA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_GOLDEEN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_SEAKING] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_STARYU] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_STARMIE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_MR_MIME] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_SCYTHER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_JYNX] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - [SPECIES_ELECTABUZZ] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_MAGMAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_PINSIR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_TAUROS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 13 }, - [SPECIES_MAGIKARP] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_GYARADOS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_LAPRAS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - [SPECIES_DITTO] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 17 }, - [SPECIES_EEVEE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_VAPOREON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_JOLTEON] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_FLAREON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, - [SPECIES_PORYGON] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, - [SPECIES_OMANYTE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - [SPECIES_OMASTAR] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_KABUTO] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_KABUTOPS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_AERODACTYL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_SNORLAX] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_ARTICUNO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_ZAPDOS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_MOLTRES] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_DRATINI] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_DRAGONAIR] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 4 }, - [SPECIES_DRAGONITE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_MEWTWO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_MEW] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CHIKORITA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_BAYLEEF] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_MEGANIUM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_CYNDAQUIL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_QUILAVA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_TYPHLOSION] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_TOTODILE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_CROCONAW] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_FERALIGATR] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_SENTRET] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_FURRET] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_HOOTHOOT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 4 }, - [SPECIES_NOCTOWL] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_LEDYBA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_LEDIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_SPINARAK] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, - [SPECIES_ARIADOS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_CROBAT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_CHINCHOU] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_LANTURN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_PICHU] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - [SPECIES_CLEFFA] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_IGGLYBUFF] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_TOGEPI] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - [SPECIES_TOGETIC] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_NATU] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, - [SPECIES_XATU] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_MAREEP] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - [SPECIES_FLAAFFY] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_AMPHAROS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - [SPECIES_BELLOSSOM] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_MARILL] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_AZUMARILL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_SUDOWOODO] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 5 }, - [SPECIES_POLITOED] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_HOPPIP] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_SKIPLOOM] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_JUMPLUFF] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - [SPECIES_AIPOM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_SUNKERN] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_SUNFLORA] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_YANMA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_WOOPER] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_QUAGSIRE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_ESPEON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_UMBREON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_MURKROW] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 10 }, - [SPECIES_SLOWKING] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - [SPECIES_MISDREAVUS] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_UNOWN] = { .size = MON_COORDS_SIZE(24, 48), .y_offset = 8 }, - [SPECIES_WOBBUFFET] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 10 }, - [SPECIES_GIRAFARIG] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_PINECO] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, - [SPECIES_FORRETRESS] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, - [SPECIES_DUNSPARCE] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 17 }, - [SPECIES_GLIGAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_STEELIX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_SNUBBULL] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, - [SPECIES_GRANBULL] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_QWILFISH] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_SCIZOR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_SHUCKLE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_HERACROSS] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_SNEASEL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_TEDDIURSA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_URSARING] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_SLUGMA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_MAGCARGO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_SWINUB] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - [SPECIES_PILOSWINE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_CORSOLA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_REMORAID] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, - [SPECIES_OCTILLERY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_DELIBIRD] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_MANTINE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_SKARMORY] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 1 }, - [SPECIES_HOUNDOUR] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, - [SPECIES_HOUNDOOM] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_KINGDRA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_PHANPY] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, - [SPECIES_DONPHAN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_PORYGON2] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_STANTLER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_SMEARGLE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_TYROGUE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_HITMONTOP] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_SMOOCHUM] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, - [SPECIES_ELEKID] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_MAGBY] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, - [SPECIES_MILTANK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_BLISSEY] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, - [SPECIES_RAIKOU] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_ENTEI] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_SUICUNE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_LARVITAR] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 8 }, - [SPECIES_PUPITAR] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_TYRANITAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_LUGIA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_HO_OH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_CELEBI] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_TREECKO] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_GROVYLE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_SCEPTILE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_TORCHIC] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, - [SPECIES_COMBUSKEN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_BLAZIKEN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_MUDKIP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_MARSHTOMP] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_SWAMPERT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_POOCHYENA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_MIGHTYENA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_ZIGZAGOON] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_LINOONE] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, - [SPECIES_WURMPLE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_SILCOON] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_BEAUTIFLY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CASCOON] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - [SPECIES_DUSTOX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_LOTAD] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, - [SPECIES_LOMBRE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_LUDICOLO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_SEEDOT] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_NUZLEAF] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_SHIFTRY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, - [SPECIES_NINCADA] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 18 }, - [SPECIES_NINJASK] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_SHEDINJA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_TAILLOW] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - [SPECIES_SWELLOW] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_SHROOMISH] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_BRELOOM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_SPINDA] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_WINGULL] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_PELIPPER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_SURSKIT] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, - [SPECIES_MASQUERAIN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_WAILMER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_WAILORD] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, - [SPECIES_SKITTY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_DELCATTY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_KECLEON] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_BALTOY] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_CLAYDOL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_NOSEPASS] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_TORKOAL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_SABLEYE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 13 }, - [SPECIES_BARBOACH] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_WHISCASH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_LUVDISC] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, - [SPECIES_CORPHISH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_CRAWDAUNT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_FEEBAS] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_MILOTIC] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CARVANHA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_SHARPEDO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_TRAPINCH] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_VIBRAVA] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_FLYGON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_MAKUHITA] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 8 }, - [SPECIES_HARIYAMA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_ELECTRIKE] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, - [SPECIES_MANECTRIC] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_NUMEL] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_CAMERUPT] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_SPHEAL] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, - [SPECIES_SEALEO] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_WALREIN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CACNEA] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_CACTURNE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SNORUNT] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_GLALIE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_LUNATONE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, - [SPECIES_SOLROCK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_AZURILL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_SPOINK] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 4 }, - [SPECIES_GRUMPIG] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_PLUSLE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - [SPECIES_MINUN] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 4 }, - [SPECIES_MAWILE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_MEDITITE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_MEDICHAM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SWABLU] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_ALTARIA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_WYNAUT] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_DUSKULL] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 8 }, - [SPECIES_DUSCLOPS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_ROSELIA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_SLAKOTH] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_VIGOROTH] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SLAKING] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_GULPIN] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_SWALOT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_TROPIUS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_WHISMUR] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, - [SPECIES_LOUDRED] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_EXPLOUD] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CLAMPERL] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, - [SPECIES_HUNTAIL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_GOREBYSS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_ABSOL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_SHUPPET] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_BANETTE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_SEVIPER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_ZANGOOSE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_RELICANTH] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_ARON] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - [SPECIES_LAIRON] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, - [SPECIES_AGGRON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_CASTFORM] = { .size = MON_COORDS_SIZE(32, 64), .y_offset = 0 }, - [SPECIES_VOLBEAT] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_ILLUMISE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - [SPECIES_LILEEP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, - [SPECIES_CRADILY] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_ANORITH] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 19 }, - [SPECIES_ARMALDO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_RALTS] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 13 }, - [SPECIES_KIRLIA] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_GARDEVOIR] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_BAGON] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_SHELGON] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_SALAMENCE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 4 }, - [SPECIES_BELDUM] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_METANG] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_METAGROSS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_REGIROCK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 10 }, - [SPECIES_REGICE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_REGISTEEL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_KYOGRE] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 18 }, - [SPECIES_GROUDON] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_RAYQUAZA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_LATIAS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_LATIOS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_JIRACHI] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_DEOXYS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_CHIMECHO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_TURTWIG] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_GROTLE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_TORTERRA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_CHIMCHAR] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_MONFERNO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_INFERNAPE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_PIPLUP] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, - [SPECIES_PRINPLUP] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_EMPOLEON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_STARLY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_STARAVIA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_STARAPTOR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_BIDOOF] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_BIBAREL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_KRICKETOT] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_KRICKETUNE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - [SPECIES_SHINX] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_LUXIO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_LUXRAY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_BUDEW] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 11 }, - [SPECIES_ROSERADE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_CRANIDOS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_RAMPARDOS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_SHIELDON] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_BASTIODON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_BURMY] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 6 }, - [SPECIES_WORMADAM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_MOTHIM] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_COMBEE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 22 }, - [SPECIES_VESPIQUEN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_PACHIRISU] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_BUIZEL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_FLOATZEL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_CHERUBI] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_CHERRIM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 9 }, - [SPECIES_SHELLOS] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 8 }, - [SPECIES_GASTRODON] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - [SPECIES_AMBIPOM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_DRIFLOON] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, - [SPECIES_DRIFBLIM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_BUNEARY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_LOPUNNY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_MISMAGIUS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - [SPECIES_HONCHKROW] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_GLAMEOW] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_PURUGLY] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_CHINGLING] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 13 }, - [SPECIES_STUNKY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_SKUNTANK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_BRONZOR] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, - [SPECIES_BRONZONG] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_BONSLY] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 6 }, - [SPECIES_MIME_JR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_HAPPINY] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_CHATOT] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_SPIRITOMB] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_GIBLE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_GABITE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_GARCHOMP] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_MUNCHLAX] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_RIOLU] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, - [SPECIES_LUCARIO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_HIPPOPOTAS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, - [SPECIES_HIPPOWDON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_SKORUPI] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_DRAPION] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_CROAGUNK] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_TOXICROAK] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_CARNIVINE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_FINNEON] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, - [SPECIES_LUMINEON] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_MANTYKE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_SNOVER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_ABOMASNOW] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_WEAVILE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_MAGNEZONE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_LICKILICKY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_RHYPERIOR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_TANGROWTH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_ELECTIVIRE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_MAGMORTAR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_TOGEKISS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_YANMEGA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_LEAFEON] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_GLACEON] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 6 }, - [SPECIES_GLISCOR] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_MAMOSWINE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_PORYGON_Z] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_GALLADE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_PROBOPASS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_DUSKNOIR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_FROSLASS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_ROTOM] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_UXIE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_MESPRIT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_AZELF] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_DIALGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_PALKIA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_HEATRAN] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_REGIGIGAS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_GIRATINA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_CRESSELIA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_PHIONE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_MANAPHY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 10 }, - [SPECIES_DARKRAI] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SHAYMIN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - [SPECIES_ARCEUS] = ARCEUS_BACK_PIC_COORDS, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_VICTINI] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 7 }, - [SPECIES_SNIVY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_SERVINE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 5 }, - [SPECIES_SERPERIOR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_TEPIG] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - [SPECIES_PIGNITE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 9 }, - [SPECIES_EMBOAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_OSHAWOTT] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 14 }, - [SPECIES_DEWOTT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 5 }, - [SPECIES_SAMUROTT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_PATRAT] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_WATCHOG] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_LILLIPUP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 12 }, - [SPECIES_HERDIER] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 10 }, - [SPECIES_STOUTLAND] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_PURRLOIN] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_LIEPARD] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_PANSAGE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_SIMISAGE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 6 }, - [SPECIES_PANSEAR] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 10 }, - [SPECIES_SIMISEAR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_PANPOUR] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_SIMIPOUR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_MUNNA] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 16 }, - [SPECIES_MUSHARNA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, - [SPECIES_PIDOVE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_TRANQUILL] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_UNFEZANT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_BLITZLE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_ZEBSTRIKA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, - [SPECIES_ROGGENROLA] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 13 }, - [SPECIES_BOLDORE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 16 }, - [SPECIES_GIGALITH] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_WOOBAT] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, - [SPECIES_SWOOBAT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, - [SPECIES_DRILBUR] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_EXCADRILL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 11 }, - [SPECIES_AUDINO] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 9 }, - [SPECIES_TIMBURR] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, - [SPECIES_GURDURR] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_CONKELDURR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 13 }, - [SPECIES_TYMPOLE] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 17 }, - [SPECIES_PALPITOAD] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, - [SPECIES_SEISMITOAD] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_THROH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_SAWK] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_SEWADDLE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 13 }, - [SPECIES_SWADLOON] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_LEAVANNY] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_VENIPEDE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, - [SPECIES_WHIRLIPEDE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, - [SPECIES_SCOLIPEDE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_COTTONEE] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 18 }, - [SPECIES_WHIMSICOTT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_PETILIL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 9 }, - [SPECIES_LILLIGANT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_BASCULIN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 16 }, - [SPECIES_SANDILE] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 18 }, - [SPECIES_KROKOROK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - [SPECIES_KROOKODILE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_DARUMAKA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 12 }, - [SPECIES_DARMANITAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_MARACTUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_DWEBBLE] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 17 }, - [SPECIES_CRUSTLE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, - [SPECIES_SCRAGGY] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_SCRAFTY] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 5 }, - [SPECIES_SIGILYPH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, - [SPECIES_YAMASK] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_COFAGRIGUS] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_TIRTOUGA] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, - [SPECIES_CARRACOSTA] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_ARCHEN] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, - [SPECIES_ARCHEOPS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_TRUBBISH] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 13 }, - [SPECIES_GARBODOR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_ZORUA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_ZOROARK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 10 }, - [SPECIES_MINCCINO] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_CINCCINO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_GOTHITA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_GOTHORITA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_GOTHITELLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SOLOSIS] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 19 }, - [SPECIES_DUOSION] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 13 }, - [SPECIES_REUNICLUS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 13 }, - [SPECIES_DUCKLETT] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_SWANNA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_VANILLITE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, - [SPECIES_VANILLISH] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, - [SPECIES_VANILLUXE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_DEERLING] = DEERLING_BACK_PIC_COORDS, - [SPECIES_SAWSBUCK] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 5 }, - [SPECIES_EMOLGA] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 16 }, - [SPECIES_KARRABLAST] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 14 }, - [SPECIES_ESCAVALIER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, - [SPECIES_FOONGUS] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_AMOONGUSS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 12 }, - [SPECIES_FRILLISH] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_JELLICENT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_ALOMOMOLA] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_JOLTIK] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 19 }, - [SPECIES_GALVANTULA] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 18 }, - [SPECIES_FERROSEED] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, - [SPECIES_FERROTHORN] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, - [SPECIES_KLINK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 17 }, - [SPECIES_KLANG] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, - [SPECIES_KLINKLANG] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, - [SPECIES_TYNAMO] = { .size = MON_COORDS_SIZE(64, 24), .y_offset = 21 }, - [SPECIES_EELEKTRIK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 4 }, - [SPECIES_EELEKTROSS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ELGYEM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 10 }, - [SPECIES_BEHEEYEM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_LITWICK] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_LAMPENT] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 12 }, - [SPECIES_CHANDELURE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_AXEW] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - [SPECIES_FRAXURE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 13 }, - [SPECIES_HAXORUS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_CUBCHOO] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_BEARTIC] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_CRYOGONAL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 4 }, - [SPECIES_SHELMET] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 19 }, - [SPECIES_ACCELGOR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_STUNFISK] = { .size = MON_COORDS_SIZE(64, 24), .y_offset = 22 }, - [SPECIES_MIENFOO] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, - [SPECIES_MIENSHAO] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_DRUDDIGON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_GOLETT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_GOLURK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_PAWNIARD] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_BISHARP] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_BOUFFALANT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_RUFFLET] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_BRAVIARY] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_VULLABY] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 14 }, - [SPECIES_MANDIBUZZ] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_HEATMOR] = { .size = MON_COORDS_SIZE(64, 24), .y_offset = 21 }, - [SPECIES_DURANT] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 17 }, - [SPECIES_DEINO] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 14 }, - [SPECIES_ZWEILOUS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, - [SPECIES_HYDREIGON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 11 }, - [SPECIES_LARVESTA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 12 }, - [SPECIES_VOLCARONA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_COBALION] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 6 }, - [SPECIES_TERRAKION] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_VIRIZION] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_TORNADUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_THUNDURUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_RESHIRAM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, - [SPECIES_ZEKROM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_LANDORUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_KYUREM] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_KELDEO] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 4 }, - [SPECIES_MELOETTA] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_GENESECT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_CHESPIN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 6 }, - [SPECIES_QUILLADIN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_CHESNAUGHT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 10 }, - [SPECIES_FENNEKIN] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_BRAIXEN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 10 }, - [SPECIES_DELPHOX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_FROAKIE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_FROGADIER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_GRENINJA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_BUNNELBY] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_DIGGERSBY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_FLETCHLING] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, - [SPECIES_FLETCHINDER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_TALONFLAME] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_SCATTERBUG] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 12 }, - [SPECIES_SPEWPA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 12 }, - [SPECIES_VIVILLON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_LITLEO] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_PYROAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_FLABEBE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_FLOETTE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_FLORGES] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_SKIDDO] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_GOGOAT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, - [SPECIES_PANCHAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_PANGORO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_FURFROU] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_ESPURR] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_MEOWSTIC] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 9 }, - [SPECIES_HONEDGE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, - [SPECIES_DOUBLADE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, - [SPECIES_AEGISLASH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 9 }, - [SPECIES_SPRITZEE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_AROMATISSE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_SWIRLIX] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, - [SPECIES_SLURPUFF] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_INKAY] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 9 }, - [SPECIES_MALAMAR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_BINACLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_BARBARACLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SKRELP] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_DRAGALGE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CLAUNCHER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_CLAWITZER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_HELIOPTILE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_HELIOLISK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_TYRUNT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_TYRANTRUM] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 11 }, - [SPECIES_AMAURA] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 3 }, - [SPECIES_AURORUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SYLVEON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_HAWLUCHA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_DEDENNE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 12 }, - [SPECIES_CARBINK] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_GOOMY] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_SLIGGOO] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_GOODRA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_KLEFKI] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 8 }, - [SPECIES_PHANTUMP] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, - [SPECIES_TREVENANT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_PUMPKABOO] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 13 }, - [SPECIES_GOURGEIST] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_BERGMITE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 13 }, - [SPECIES_AVALUGG] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_NOIBAT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 7 }, - [SPECIES_NOIVERN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_XERNEAS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_YVELTAL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_ZYGARDE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_DIANCIE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, - [SPECIES_HOOPA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_VOLCANION] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_ROWLET] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, - [SPECIES_DARTRIX] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_DECIDUEYE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_LITTEN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_TORRACAT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_INCINEROAR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_POPPLIO] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_BRIONNE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_PRIMARINA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_PIKIPEK] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, - [SPECIES_TRUMBEAK] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_TOUCANNON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_YUNGOOS] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_GUMSHOOS] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_GRUBBIN] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, - [SPECIES_CHARJABUG] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, - [SPECIES_VIKAVOLT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_CRABRAWLER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_CRABOMINABLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_ORICORIO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CUTIEFLY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 15 }, - [SPECIES_RIBOMBEE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_ROCKRUFF] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_LYCANROC] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_WISHIWASHI] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 18 }, - [SPECIES_MAREANIE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 15 }, - [SPECIES_TOXAPEX] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_MUDBRAY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_MUDSDALE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_DEWPIDER] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, - [SPECIES_ARAQUANID] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 12 }, - [SPECIES_FOMANTIS] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 5 }, - [SPECIES_LURANTIS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_MORELULL] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, - [SPECIES_SHIINOTIC] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_SALANDIT] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, - [SPECIES_SALAZZLE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_STUFFUL] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, - [SPECIES_BEWEAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_BOUNSWEET] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_STEENEE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 8 }, - [SPECIES_TSAREENA] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_COMFEY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 11 }, - [SPECIES_ORANGURU] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 12 }, - [SPECIES_PASSIMIAN] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_WIMPOD] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_GOLISOPOD] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_SANDYGAST] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_PALOSSAND] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_PYUKUMUKU] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 16 }, - [SPECIES_TYPE_NULL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_SILVALLY] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_MINIOR] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, - [SPECIES_KOMALA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_TURTONATOR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, - [SPECIES_TOGEDEMARU] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 13 }, - [SPECIES_MIMIKYU] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_BRUXISH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 14 }, - [SPECIES_DRAMPA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_DHELMISE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_JANGMO_O] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_HAKAMO_O] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 5 }, - [SPECIES_KOMMO_O] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_TAPU_KOKO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_TAPU_LELE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_TAPU_BULU] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_TAPU_FINI] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_COSMOG] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_COSMOEM] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 17 }, - [SPECIES_SOLGALEO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_LUNALA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_NIHILEGO] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_BUZZWOLE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 14 }, - [SPECIES_PHEROMOSA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_XURKITREE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_CELESTEELA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_KARTANA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_GUZZLORD] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 10 }, - [SPECIES_NECROZMA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_MAGEARNA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_MARSHADOW] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 6 }, - [SPECIES_POIPOLE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_NAGANADEL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_STAKATAKA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 12 }, - [SPECIES_BLACEPHALON] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_ZERAORA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 11 }, - [SPECIES_MELTAN] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_MELMETAL] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, -#endif -#if P_GEN_8_POKEMON == TRUE - [SPECIES_GROOKEY] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - [SPECIES_THWACKEY] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_RILLABOOM] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_SCORBUNNY] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, - [SPECIES_RABOOT] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_CINDERACE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, - [SPECIES_SOBBLE] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 8 }, - [SPECIES_DRIZZILE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_INTELEON] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 4 }, - [SPECIES_SKWOVET] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_GREEDENT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_ROOKIDEE] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 17 }, - [SPECIES_CORVISQUIRE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_CORVIKNIGHT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_BLIPBUG] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_DOTTLER] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 17 }, - [SPECIES_ORBEETLE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_NICKIT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_THIEVUL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_GOSSIFLEUR] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 15 }, - [SPECIES_ELDEGOSS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, - [SPECIES_WOOLOO] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 18 }, - [SPECIES_DUBWOOL] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_CHEWTLE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 8 }, - [SPECIES_DREDNAW] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 18 }, - [SPECIES_YAMPER] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 13 }, - [SPECIES_BOLTUND] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_ROLYCOLY] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 17 }, - [SPECIES_CARKOL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_COALOSSAL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_APPLIN] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 15 }, - [SPECIES_FLAPPLE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - [SPECIES_APPLETUN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 11 }, - [SPECIES_SILICOBRA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_SANDACONDA] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_CRAMORANT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_ARROKUDA] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, - [SPECIES_BARRASKEWDA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_TOXEL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - [SPECIES_TOXTRICITY] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SIZZLIPEDE] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, - [SPECIES_CENTISKORCH] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_CLOBBOPUS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, - [SPECIES_GRAPPLOCT] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_SINISTEA] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 16 }, - [SPECIES_POLTEAGEIST] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_HATENNA] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_HATTREM] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_HATTERENE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - [SPECIES_IMPIDIMP] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_MORGREM] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_GRIMMSNARL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_OBSTAGOON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_PERRSERKER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_CURSOLA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_SIRFETCHD] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_MR_RIME] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_RUNERIGUS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_MILCERY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 16 }, - [SPECIES_ALCREMIE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_FALINKS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, - [SPECIES_PINCURCHIN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, - [SPECIES_SNOM] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 17 }, - [SPECIES_FROSMOTH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_STONJOURNER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_EISCUE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_INDEEDEE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_MORPEKO] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - [SPECIES_CUFANT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_COPPERAJAH] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, - [SPECIES_DRACOZOLT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_ARCTOZOLT] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_DRACOVISH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_ARCTOVISH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_DURALUDON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_DREEPY] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - [SPECIES_DRAKLOAK] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_DRAGAPULT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_ZACIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_ZAMAZENTA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_ETERNATUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_KUBFU] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_URSHIFU] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_ZARUDE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_REGIELEKI] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_REGIDRAGO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_GLASTRIER] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 5 }, - [SPECIES_SPECTRIER] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_CALYREX] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_WYRDEER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_KLEAVOR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_URSALUNA] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, - [SPECIES_BASCULEGION] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SNEASLER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_OVERQWIL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_ENAMORUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, -#endif - [SPECIES_VENUSAUR_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, - [SPECIES_CHARIZARD_MEGA_X] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_CHARIZARD_MEGA_Y] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_BLASTOISE_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_BEEDRILL_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_PIDGEOT_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, - [SPECIES_ALAKAZAM_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SLOWBRO_MEGA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_GENGAR_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_KANGASKHAN_MEGA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_PINSIR_MEGA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_GYARADOS_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_AERODACTYL_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, - [SPECIES_MEWTWO_MEGA_X] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_MEWTWO_MEGA_Y] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_AMPHAROS_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_STEELIX_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SCIZOR_MEGA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_HERACROSS_MEGA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_HOUNDOOM_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_TYRANITAR_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SCEPTILE_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_BLAZIKEN_MEGA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SWAMPERT_MEGA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_GARDEVOIR_MEGA] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_SABLEYE_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 13 }, - [SPECIES_MAWILE_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_AGGRON_MEGA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_MEDICHAM_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_MANECTRIC_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SHARPEDO_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_CAMERUPT_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 9 }, - [SPECIES_ALTARIA_MEGA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_BANETTE_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ABSOL_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_GLALIE_MEGA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_SALAMENCE_MEGA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_METAGROSS_MEGA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_LATIAS_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_LATIOS_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_LOPUNNY_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_GARCHOMP_MEGA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_LUCARIO_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ABOMASNOW_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_GALLADE_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_AUDINO_MEGA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_DIANCIE_MEGA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, -#endif - // Special Mega + Primals - [SPECIES_RAYQUAZA_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_KYOGRE_PRIMAL] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 18 }, - [SPECIES_GROUDON_PRIMAL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - // Alolan Forms - [SPECIES_RATTATA_ALOLAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_RATICATE_ALOLAN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_RAICHU_ALOLAN] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_SANDSHREW_ALOLAN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, - [SPECIES_SANDSLASH_ALOLAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_VULPIX_ALOLAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_NINETALES_ALOLAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_DIGLETT_ALOLAN] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 14 }, - [SPECIES_DUGTRIO_ALOLAN] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 17 }, - [SPECIES_MEOWTH_ALOLAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_PERSIAN_ALOLAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_GEODUDE_ALOLAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 13 }, - [SPECIES_GRAVELER_ALOLAN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_GOLEM_ALOLAN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 13 }, - [SPECIES_GRIMER_ALOLAN] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, - [SPECIES_MUK_ALOLAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_EXEGGUTOR_ALOLAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 0 }, - [SPECIES_MAROWAK_ALOLAN] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - // Galarian Forms - [SPECIES_MEOWTH_GALARIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_PONYTA_GALARIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_RAPIDASH_GALARIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_SLOWPOKE_GALARIAN] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_SLOWBRO_GALARIAN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_FARFETCHD_GALARIAN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_WEEZING_GALARIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_MR_MIME_GALARIAN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_ARTICUNO_GALARIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_ZAPDOS_GALARIAN] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_MOLTRES_GALARIAN] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_SLOWKING_GALARIAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - [SPECIES_CORSOLA_GALARIAN] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_ZIGZAGOON_GALARIAN] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 12 }, - [SPECIES_LINOONE_GALARIAN] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, -#if P_GEN_5_POKEMON == TRUE - [SPECIES_DARUMAKA_GALARIAN] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_DARMANITAN_GALARIAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_YAMASK_GALARIAN] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_STUNFISK_GALARIAN] = { .size = MON_COORDS_SIZE(64, 24), .y_offset = 23 }, -#endif - // Hisuian Forms - [SPECIES_GROWLITHE_HISUIAN] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 8 }, - [SPECIES_ARCANINE_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_VOLTORB_HISUIAN] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 10 }, - [SPECIES_ELECTRODE_HISUIAN] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 7 }, - [SPECIES_TYPHLOSION_HISUIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 2 }, - [SPECIES_QWILFISH_HISUIAN] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_SNEASEL_HISUIAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, -#if P_GEN_5_POKEMON == TRUE - [SPECIES_SAMUROTT_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, - [SPECIES_LILLIGANT_HISUIAN] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_ZORUA_HISUIAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_ZOROARK_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_BRAVIARY_HISUIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_SLIGGOO_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_GOODRA_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_AVALUGG_HISUIAN] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_DECIDUEYE_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, -#endif - // Misc Forms - // Cosplay Pikachu - [SPECIES_PIKACHU_COSPLAY] = PIKACHU_BACK_PIC_COORDS, - [SPECIES_PIKACHU_ROCK_STAR] = PIKACHU_BACK_PIC_COORDS, - [SPECIES_PIKACHU_BELLE] = PIKACHU_BACK_PIC_COORDS, - [SPECIES_PIKACHU_POP_STAR] = PIKACHU_BACK_PIC_COORDS, - [SPECIES_PIKACHU_PH_D] = PIKACHU_BACK_PIC_COORDS, - [SPECIES_PIKACHU_LIBRE] = PIKACHU_BACK_PIC_COORDS, - // Cap Pikachu - [SPECIES_PIKACHU_ORIGINAL_CAP] = PIKACHU_BACK_PIC_COORDS, - [SPECIES_PIKACHU_HOENN_CAP] = PIKACHU_BACK_PIC_COORDS, - [SPECIES_PIKACHU_SINNOH_CAP] = PIKACHU_BACK_PIC_COORDS, - [SPECIES_PIKACHU_UNOVA_CAP] = PIKACHU_BACK_PIC_COORDS, - [SPECIES_PIKACHU_KALOS_CAP] = PIKACHU_BACK_PIC_COORDS, - [SPECIES_PIKACHU_ALOLA_CAP] = PIKACHU_BACK_PIC_COORDS, - [SPECIES_PIKACHU_PARTNER_CAP] = PIKACHU_BACK_PIC_COORDS, - [SPECIES_PIKACHU_WORLD_CAP] = PIKACHU_BACK_PIC_COORDS, - // Pichu - [SPECIES_PICHU_SPIKY_EARED] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - // Unown - [SPECIES_UNOWN_B] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, - [SPECIES_UNOWN_C] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_UNOWN_D] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, - [SPECIES_UNOWN_E] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, - [SPECIES_UNOWN_F] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_UNOWN_G] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 5 }, - [SPECIES_UNOWN_H] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, - [SPECIES_UNOWN_I] = { .size = MON_COORDS_SIZE(24, 56), .y_offset = 7 }, - [SPECIES_UNOWN_J] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, - [SPECIES_UNOWN_K] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_UNOWN_L] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 10 }, - [SPECIES_UNOWN_M] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_UNOWN_N] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_UNOWN_O] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, - [SPECIES_UNOWN_P] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 10 }, - [SPECIES_UNOWN_Q] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, - [SPECIES_UNOWN_R] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 12 }, - [SPECIES_UNOWN_S] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 4 }, - [SPECIES_UNOWN_T] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 13 }, - [SPECIES_UNOWN_U] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_UNOWN_V] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_UNOWN_W] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_UNOWN_X] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, - [SPECIES_UNOWN_Y] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 10 }, - [SPECIES_UNOWN_Z] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 10 }, - [SPECIES_UNOWN_EMARK] = { .size = MON_COORDS_SIZE(24, 56), .y_offset = 6 }, - [SPECIES_UNOWN_QMARK] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 6 }, - // Castform - [SPECIES_CASTFORM_SUNNY] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_CASTFORM_RAINY] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, - [SPECIES_CASTFORM_SNOWY] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - // Deoxys - [SPECIES_DEOXYS_ATTACK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_DEOXYS_DEFENSE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_DEOXYS_SPEED] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, -#if P_GEN_4_POKEMON == TRUE - // Burmy - [SPECIES_BURMY_SANDY_CLOAK] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 7 }, - [SPECIES_BURMY_TRASH_CLOAK] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, - // Wormadam - [SPECIES_WORMADAM_SANDY_CLOAK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_WORMADAM_TRASH_CLOAK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - // Cherrim - [SPECIES_CHERRIM_SUNSHINE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - // Shellos - [SPECIES_SHELLOS_EAST_SEA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - // Gastrodon - [SPECIES_GASTRODON_EAST_SEA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - // Rotom - [SPECIES_ROTOM_HEAT] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_ROTOM_WASH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_ROTOM_FROST] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_ROTOM_FAN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_ROTOM_MOW] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - // Origin Forme - [SPECIES_DIALGA_ORIGIN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_PALKIA_ORIGIN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_GIRATINA_ORIGIN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - // Shaymin - [SPECIES_SHAYMIN_SKY] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - // Arceus - [SPECIES_ARCEUS_FIGHTING] = ARCEUS_BACK_PIC_COORDS, - [SPECIES_ARCEUS_FLYING] = ARCEUS_BACK_PIC_COORDS, - [SPECIES_ARCEUS_POISON] = ARCEUS_BACK_PIC_COORDS, - [SPECIES_ARCEUS_GROUND] = ARCEUS_BACK_PIC_COORDS, - [SPECIES_ARCEUS_ROCK] = ARCEUS_BACK_PIC_COORDS, - [SPECIES_ARCEUS_BUG] = ARCEUS_BACK_PIC_COORDS, - [SPECIES_ARCEUS_GHOST] = ARCEUS_BACK_PIC_COORDS, - [SPECIES_ARCEUS_STEEL] = ARCEUS_BACK_PIC_COORDS, - [SPECIES_ARCEUS_FIRE] = ARCEUS_BACK_PIC_COORDS, - [SPECIES_ARCEUS_WATER] = ARCEUS_BACK_PIC_COORDS, - [SPECIES_ARCEUS_GRASS] = ARCEUS_BACK_PIC_COORDS, - [SPECIES_ARCEUS_ELECTRIC] = ARCEUS_BACK_PIC_COORDS, - [SPECIES_ARCEUS_PSYCHIC] = ARCEUS_BACK_PIC_COORDS, - [SPECIES_ARCEUS_ICE] = ARCEUS_BACK_PIC_COORDS, - [SPECIES_ARCEUS_DRAGON] = ARCEUS_BACK_PIC_COORDS, - [SPECIES_ARCEUS_DARK] = ARCEUS_BACK_PIC_COORDS, - [SPECIES_ARCEUS_FAIRY] = ARCEUS_BACK_PIC_COORDS, -#endif -#if P_GEN_5_POKEMON == TRUE - // Basculin - [SPECIES_BASCULIN_BLUE_STRIPED] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 16 }, - [SPECIES_BASCULIN_WHITE_STRIPED] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 16 }, - // Darmanitan - [SPECIES_DARMANITAN_ZEN_MODE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - // Deerling - [SPECIES_DEERLING_SUMMER] = DEERLING_BACK_PIC_COORDS, - [SPECIES_DEERLING_AUTUMN] = DEERLING_BACK_PIC_COORDS, - [SPECIES_DEERLING_WINTER] = DEERLING_BACK_PIC_COORDS, - // Sawsbuck - [SPECIES_SAWSBUCK_SUMMER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_SAWSBUCK_AUTUMN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_SAWSBUCK_WINTER] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 5 }, - // Therian Forms - [SPECIES_TORNADUS_THERIAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_THUNDURUS_THERIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_LANDORUS_THERIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - // Kyurem - [SPECIES_KYUREM_WHITE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_KYUREM_BLACK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - // Keldeo - [SPECIES_KELDEO_RESOLUTE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - // Meloetta - [SPECIES_MELOETTA_PIROUETTE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 4 }, - // Genesect - [SPECIES_GENESECT_DOUSE_DRIVE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_GENESECT_SHOCK_DRIVE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_GENESECT_BURN_DRIVE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_GENESECT_CHILL_DRIVE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, -#endif -#if P_GEN_6_POKEMON == TRUE - // Greninja - [SPECIES_GRENINJA_BATTLE_BOND] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_GRENINJA_ASH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - // Vivillon - [SPECIES_VIVILLON_POLAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_TUNDRA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_CONTINENTAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_GARDEN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_ELEGANT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_MEADOW] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_MODERN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_MARINE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_ARCHIPELAGO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_HIGH_PLAINS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_SANDSTORM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_RIVER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_MONSOON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_SAVANNA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_SUN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_OCEAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_JUNGLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_FANCY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_POKE_BALL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Flabébé - [SPECIES_FLABEBE_YELLOW_FLOWER] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_FLABEBE_ORANGE_FLOWER] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_FLABEBE_BLUE_FLOWER] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_FLABEBE_WHITE_FLOWER] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - // Floette - [SPECIES_FLOETTE_YELLOW_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_FLOETTE_ORANGE_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_FLOETTE_BLUE_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_FLOETTE_WHITE_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_FLOETTE_ETERNAL_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - // Florges - [SPECIES_FLORGES_YELLOW_FLOWER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_FLORGES_ORANGE_FLOWER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_FLORGES_BLUE_FLOWER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_FLORGES_WHITE_FLOWER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - // Furfrou - [SPECIES_FURFROU_HEART_TRIM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_FURFROU_STAR_TRIM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_FURFROU_DIAMOND_TRIM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_FURFROU_DEBUTANTE_TRIM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_FURFROU_MATRON_TRIM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_FURFROU_DANDY_TRIM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_FURFROU_LA_REINE_TRIM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_FURFROU_KABUKI_TRIM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_FURFROU_PHARAOH_TRIM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - // Meowstic - [SPECIES_MEOWSTIC_FEMALE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 9 }, - // Aegislash - [SPECIES_AEGISLASH_BLADE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 9 }, - // Pumpkaboo - [SPECIES_PUMPKABOO_SMALL] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 14 }, - [SPECIES_PUMPKABOO_LARGE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 13 }, - [SPECIES_PUMPKABOO_SUPER] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 12 }, - // Gourgeist - [SPECIES_GOURGEIST_SMALL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, - [SPECIES_GOURGEIST_LARGE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_GOURGEIST_SUPER] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - // Xerneas - [SPECIES_XERNEAS_ACTIVE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Zygarde - [SPECIES_ZYGARDE_10] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_ZYGARDE_COMPLETE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Hoopa - [SPECIES_HOOPA_UNBOUND] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, -#endif -#if P_GEN_7_POKEMON == TRUE - // Oricorio - [SPECIES_ORICORIO_POM_POM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ORICORIO_PAU] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ORICORIO_SENSU] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Rockruff - [SPECIES_ROCKRUFF_OWN_TEMPO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - // Lycanroc - [SPECIES_LYCANROC_MIDNIGHT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_LYCANROC_DUSK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - // Wishiwashi - [SPECIES_WISHIWASHI_SCHOOL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - // Silvally - [SPECIES_SILVALLY_FIGHTING] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_FLYING] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_POISON] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_GROUND] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_ROCK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_BUG] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_GHOST] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_STEEL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_FIRE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_WATER] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_GRASS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_ELECTRIC] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_PSYCHIC] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_ICE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_DRAGON] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_DARK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_FAIRY] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - // Minior - [SPECIES_MINIOR_METEOR_ORANGE] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, - [SPECIES_MINIOR_METEOR_YELLOW] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, - [SPECIES_MINIOR_METEOR_GREEN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, - [SPECIES_MINIOR_METEOR_BLUE] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, - [SPECIES_MINIOR_METEOR_INDIGO] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, - [SPECIES_MINIOR_METEOR_VIOLET] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, - [SPECIES_MINIOR_CORE_RED] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - [SPECIES_MINIOR_CORE_ORANGE] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - [SPECIES_MINIOR_CORE_YELLOW] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - [SPECIES_MINIOR_CORE_GREEN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - [SPECIES_MINIOR_CORE_BLUE] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - [SPECIES_MINIOR_CORE_INDIGO] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - [SPECIES_MINIOR_CORE_VIOLET] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - // Mimikyu - [SPECIES_MIMIKYU_BUSTED] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, - // Necrozma - [SPECIES_NECROZMA_DUSK_MANE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_NECROZMA_DAWN_WINGS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_NECROZMA_ULTRA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - // Magearna - [SPECIES_MAGEARNA_ORIGINAL_COLOR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, -#endif -#if P_GEN_8_POKEMON == TRUE - // Cramorant - [SPECIES_CRAMORANT_GULPING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_CRAMORANT_GORGING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - // Toxtricity - [SPECIES_TOXTRICITY_LOW_KEY] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - // Sinistea - [SPECIES_SINISTEA_ANTIQUE] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 16 }, - // Polteageist - [SPECIES_POLTEAGEIST_ANTIQUE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_MINT_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_LEMON_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_SALTED_CREAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - // Eiscue - [SPECIES_EISCUE_NOICE_FACE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, - // Indeedee - [SPECIES_INDEEDEE_FEMALE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - // Morpeko - [SPECIES_MORPEKO_HANGRY] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - // Zacian - [SPECIES_ZACIAN_CROWNED_SWORD] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - // Zamazenta - [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - // Eternatus - [SPECIES_ETERNATUS_ETERNAMAX] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - // Urshifu - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - // Zarude - [SPECIES_ZARUDE_DADA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - // Calyrex - [SPECIES_CALYREX_ICE_RIDER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, - [SPECIES_CALYREX_SHADOW_RIDER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - // Enamorus - [SPECIES_ENAMORUS_THERIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - // Basculegion - [SPECIES_BASCULEGION_FEMALE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, -#endif - [SPECIES_EGG] = { .size = MON_COORDS_SIZE(24, 24), .y_offset = 20 }, -}; diff --git a/src/data/pokemon_graphics/back_pic_table.h b/src/data/pokemon_graphics/back_pic_table.h deleted file mode 100644 index a232abb567..0000000000 --- a/src/data/pokemon_graphics/back_pic_table.h +++ /dev/null @@ -1,1436 +0,0 @@ -const struct CompressedSpriteSheet gMonBackPicTable[NUM_SPECIES + 1] = -{ - SPECIES_SPRITE(NONE, gMonBackPic_CircledQuestionMark), - SPECIES_SPRITE(BULBASAUR, gMonBackPic_Bulbasaur), - SPECIES_SPRITE(IVYSAUR, gMonBackPic_Ivysaur), - SPECIES_SPRITE(VENUSAUR, gMonBackPic_Venusaur), - SPECIES_SPRITE(CHARMANDER, gMonBackPic_Charmander), - SPECIES_SPRITE(CHARMELEON, gMonBackPic_Charmeleon), - SPECIES_SPRITE(CHARIZARD, gMonBackPic_Charizard), - SPECIES_SPRITE(SQUIRTLE, gMonBackPic_Squirtle), - SPECIES_SPRITE(WARTORTLE, gMonBackPic_Wartortle), - SPECIES_SPRITE(BLASTOISE, gMonBackPic_Blastoise), - SPECIES_SPRITE(CATERPIE, gMonBackPic_Caterpie), - SPECIES_SPRITE(METAPOD, gMonBackPic_Metapod), - SPECIES_SPRITE(BUTTERFREE, gMonBackPic_Butterfree), - SPECIES_SPRITE(WEEDLE, gMonBackPic_Weedle), - SPECIES_SPRITE(KAKUNA, gMonBackPic_Kakuna), - SPECIES_SPRITE(BEEDRILL, gMonBackPic_Beedrill), - SPECIES_SPRITE(PIDGEY, gMonBackPic_Pidgey), - SPECIES_SPRITE(PIDGEOTTO, gMonBackPic_Pidgeotto), - SPECIES_SPRITE(PIDGEOT, gMonBackPic_Pidgeot), - SPECIES_SPRITE(RATTATA, gMonBackPic_Rattata), - SPECIES_SPRITE(RATICATE, gMonBackPic_Raticate), - SPECIES_SPRITE(SPEAROW, gMonBackPic_Spearow), - SPECIES_SPRITE(FEAROW, gMonBackPic_Fearow), - SPECIES_SPRITE(EKANS, gMonBackPic_Ekans), - SPECIES_SPRITE(ARBOK, gMonBackPic_Arbok), - SPECIES_SPRITE(PIKACHU, gMonBackPic_Pikachu), - SPECIES_SPRITE(RAICHU, gMonBackPic_Raichu), - SPECIES_SPRITE(SANDSHREW, gMonBackPic_Sandshrew), - SPECIES_SPRITE(SANDSLASH, gMonBackPic_Sandslash), - SPECIES_SPRITE(NIDORAN_F, gMonBackPic_NidoranF), - SPECIES_SPRITE(NIDORINA, gMonBackPic_Nidorina), - SPECIES_SPRITE(NIDOQUEEN, gMonBackPic_Nidoqueen), - SPECIES_SPRITE(NIDORAN_M, gMonBackPic_NidoranM), - SPECIES_SPRITE(NIDORINO, gMonBackPic_Nidorino), - SPECIES_SPRITE(NIDOKING, gMonBackPic_Nidoking), - SPECIES_SPRITE(CLEFAIRY, gMonBackPic_Clefairy), - SPECIES_SPRITE(CLEFABLE, gMonBackPic_Clefable), - SPECIES_SPRITE(VULPIX, gMonBackPic_Vulpix), - SPECIES_SPRITE(NINETALES, gMonBackPic_Ninetales), - SPECIES_SPRITE(JIGGLYPUFF, gMonBackPic_Jigglypuff), - SPECIES_SPRITE(WIGGLYTUFF, gMonBackPic_Wigglytuff), - SPECIES_SPRITE(ZUBAT, gMonBackPic_Zubat), - SPECIES_SPRITE(GOLBAT, gMonBackPic_Golbat), - SPECIES_SPRITE(ODDISH, gMonBackPic_Oddish), - SPECIES_SPRITE(GLOOM, gMonBackPic_Gloom), - SPECIES_SPRITE(VILEPLUME, gMonBackPic_Vileplume), - SPECIES_SPRITE(PARAS, gMonBackPic_Paras), - SPECIES_SPRITE(PARASECT, gMonBackPic_Parasect), - SPECIES_SPRITE(VENONAT, gMonBackPic_Venonat), - SPECIES_SPRITE(VENOMOTH, gMonBackPic_Venomoth), - SPECIES_SPRITE(DIGLETT, gMonBackPic_Diglett), - SPECIES_SPRITE(DUGTRIO, gMonBackPic_Dugtrio), - SPECIES_SPRITE(MEOWTH, gMonBackPic_Meowth), - SPECIES_SPRITE(PERSIAN, gMonBackPic_Persian), - SPECIES_SPRITE(PSYDUCK, gMonBackPic_Psyduck), - SPECIES_SPRITE(GOLDUCK, gMonBackPic_Golduck), - SPECIES_SPRITE(MANKEY, gMonBackPic_Mankey), - SPECIES_SPRITE(PRIMEAPE, gMonBackPic_Primeape), - SPECIES_SPRITE(GROWLITHE, gMonBackPic_Growlithe), - SPECIES_SPRITE(ARCANINE, gMonBackPic_Arcanine), - SPECIES_SPRITE(POLIWAG, gMonBackPic_Poliwag), - SPECIES_SPRITE(POLIWHIRL, gMonBackPic_Poliwhirl), - SPECIES_SPRITE(POLIWRATH, gMonBackPic_Poliwrath), - SPECIES_SPRITE(ABRA, gMonBackPic_Abra), - SPECIES_SPRITE(KADABRA, gMonBackPic_Kadabra), - SPECIES_SPRITE(ALAKAZAM, gMonBackPic_Alakazam), - SPECIES_SPRITE(MACHOP, gMonBackPic_Machop), - SPECIES_SPRITE(MACHOKE, gMonBackPic_Machoke), - SPECIES_SPRITE(MACHAMP, gMonBackPic_Machamp), - SPECIES_SPRITE(BELLSPROUT, gMonBackPic_Bellsprout), - SPECIES_SPRITE(WEEPINBELL, gMonBackPic_Weepinbell), - SPECIES_SPRITE(VICTREEBEL, gMonBackPic_Victreebel), - SPECIES_SPRITE(TENTACOOL, gMonBackPic_Tentacool), - SPECIES_SPRITE(TENTACRUEL, gMonBackPic_Tentacruel), - SPECIES_SPRITE(GEODUDE, gMonBackPic_Geodude), - SPECIES_SPRITE(GRAVELER, gMonBackPic_Graveler), - SPECIES_SPRITE(GOLEM, gMonBackPic_Golem), - SPECIES_SPRITE(PONYTA, gMonBackPic_Ponyta), - SPECIES_SPRITE(RAPIDASH, gMonBackPic_Rapidash), - SPECIES_SPRITE(SLOWPOKE, gMonBackPic_Slowpoke), - SPECIES_SPRITE(SLOWBRO, gMonBackPic_Slowbro), - SPECIES_SPRITE(MAGNEMITE, gMonBackPic_Magnemite), - SPECIES_SPRITE(MAGNETON, gMonBackPic_Magneton), - SPECIES_SPRITE(FARFETCHD, gMonBackPic_Farfetchd), - SPECIES_SPRITE(DODUO, gMonBackPic_Doduo), - SPECIES_SPRITE(DODRIO, gMonBackPic_Dodrio), - SPECIES_SPRITE(SEEL, gMonBackPic_Seel), - SPECIES_SPRITE(DEWGONG, gMonBackPic_Dewgong), - SPECIES_SPRITE(GRIMER, gMonBackPic_Grimer), - SPECIES_SPRITE(MUK, gMonBackPic_Muk), - SPECIES_SPRITE(SHELLDER, gMonBackPic_Shellder), - SPECIES_SPRITE(CLOYSTER, gMonBackPic_Cloyster), - SPECIES_SPRITE(GASTLY, gMonBackPic_Gastly), - SPECIES_SPRITE(HAUNTER, gMonBackPic_Haunter), - SPECIES_SPRITE(GENGAR, gMonBackPic_Gengar), - SPECIES_SPRITE(ONIX, gMonBackPic_Onix), - SPECIES_SPRITE(DROWZEE, gMonBackPic_Drowzee), - SPECIES_SPRITE(HYPNO, gMonBackPic_Hypno), - SPECIES_SPRITE(KRABBY, gMonBackPic_Krabby), - SPECIES_SPRITE(KINGLER, gMonBackPic_Kingler), - SPECIES_SPRITE(VOLTORB, gMonBackPic_Voltorb), - SPECIES_SPRITE(ELECTRODE, gMonBackPic_Electrode), - SPECIES_SPRITE(EXEGGCUTE, gMonBackPic_Exeggcute), - SPECIES_SPRITE(EXEGGUTOR, gMonBackPic_Exeggutor), - SPECIES_SPRITE(CUBONE, gMonBackPic_Cubone), - SPECIES_SPRITE(MAROWAK, gMonBackPic_Marowak), - SPECIES_SPRITE(HITMONLEE, gMonBackPic_Hitmonlee), - SPECIES_SPRITE(HITMONCHAN, gMonBackPic_Hitmonchan), - SPECIES_SPRITE(LICKITUNG, gMonBackPic_Lickitung), - SPECIES_SPRITE(KOFFING, gMonBackPic_Koffing), - SPECIES_SPRITE(WEEZING, gMonBackPic_Weezing), - SPECIES_SPRITE(RHYHORN, gMonBackPic_Rhyhorn), - SPECIES_SPRITE(RHYDON, gMonBackPic_Rhydon), - SPECIES_SPRITE(CHANSEY, gMonBackPic_Chansey), - SPECIES_SPRITE(TANGELA, gMonBackPic_Tangela), - SPECIES_SPRITE(KANGASKHAN, gMonBackPic_Kangaskhan), - SPECIES_SPRITE(HORSEA, gMonBackPic_Horsea), - SPECIES_SPRITE(SEADRA, gMonBackPic_Seadra), - SPECIES_SPRITE(GOLDEEN, gMonBackPic_Goldeen), - SPECIES_SPRITE(SEAKING, gMonBackPic_Seaking), - SPECIES_SPRITE(STARYU, gMonBackPic_Staryu), - SPECIES_SPRITE(STARMIE, gMonBackPic_Starmie), - SPECIES_SPRITE(MR_MIME, gMonBackPic_MrMime), - SPECIES_SPRITE(SCYTHER, gMonBackPic_Scyther), - SPECIES_SPRITE(JYNX, gMonBackPic_Jynx), - SPECIES_SPRITE(ELECTABUZZ, gMonBackPic_Electabuzz), - SPECIES_SPRITE(MAGMAR, gMonBackPic_Magmar), - SPECIES_SPRITE(PINSIR, gMonBackPic_Pinsir), - SPECIES_SPRITE(TAUROS, gMonBackPic_Tauros), - SPECIES_SPRITE(MAGIKARP, gMonBackPic_Magikarp), - SPECIES_SPRITE(GYARADOS, gMonBackPic_Gyarados), - SPECIES_SPRITE(LAPRAS, gMonBackPic_Lapras), - SPECIES_SPRITE(DITTO, gMonBackPic_Ditto), - SPECIES_SPRITE(EEVEE, gMonBackPic_Eevee), - SPECIES_SPRITE(VAPOREON, gMonBackPic_Vaporeon), - SPECIES_SPRITE(JOLTEON, gMonBackPic_Jolteon), - SPECIES_SPRITE(FLAREON, gMonBackPic_Flareon), - SPECIES_SPRITE(PORYGON, gMonBackPic_Porygon), - SPECIES_SPRITE(OMANYTE, gMonBackPic_Omanyte), - SPECIES_SPRITE(OMASTAR, gMonBackPic_Omastar), - SPECIES_SPRITE(KABUTO, gMonBackPic_Kabuto), - SPECIES_SPRITE(KABUTOPS, gMonBackPic_Kabutops), - SPECIES_SPRITE(AERODACTYL, gMonBackPic_Aerodactyl), - SPECIES_SPRITE(SNORLAX, gMonBackPic_Snorlax), - SPECIES_SPRITE(ARTICUNO, gMonBackPic_Articuno), - SPECIES_SPRITE(ZAPDOS, gMonBackPic_Zapdos), - SPECIES_SPRITE(MOLTRES, gMonBackPic_Moltres), - SPECIES_SPRITE(DRATINI, gMonBackPic_Dratini), - SPECIES_SPRITE(DRAGONAIR, gMonBackPic_Dragonair), - SPECIES_SPRITE(DRAGONITE, gMonBackPic_Dragonite), - SPECIES_SPRITE(MEWTWO, gMonBackPic_Mewtwo), - SPECIES_SPRITE(MEW, gMonBackPic_Mew), - SPECIES_SPRITE(CHIKORITA, gMonBackPic_Chikorita), - SPECIES_SPRITE(BAYLEEF, gMonBackPic_Bayleef), - SPECIES_SPRITE(MEGANIUM, gMonBackPic_Meganium), - SPECIES_SPRITE(CYNDAQUIL, gMonBackPic_Cyndaquil), - SPECIES_SPRITE(QUILAVA, gMonBackPic_Quilava), - SPECIES_SPRITE(TYPHLOSION, gMonBackPic_Typhlosion), - SPECIES_SPRITE(TOTODILE, gMonBackPic_Totodile), - SPECIES_SPRITE(CROCONAW, gMonBackPic_Croconaw), - SPECIES_SPRITE(FERALIGATR, gMonBackPic_Feraligatr), - SPECIES_SPRITE(SENTRET, gMonBackPic_Sentret), - SPECIES_SPRITE(FURRET, gMonBackPic_Furret), - SPECIES_SPRITE(HOOTHOOT, gMonBackPic_Hoothoot), - SPECIES_SPRITE(NOCTOWL, gMonBackPic_Noctowl), - SPECIES_SPRITE(LEDYBA, gMonBackPic_Ledyba), - SPECIES_SPRITE(LEDIAN, gMonBackPic_Ledian), - SPECIES_SPRITE(SPINARAK, gMonBackPic_Spinarak), - SPECIES_SPRITE(ARIADOS, gMonBackPic_Ariados), - SPECIES_SPRITE(CROBAT, gMonBackPic_Crobat), - SPECIES_SPRITE(CHINCHOU, gMonBackPic_Chinchou), - SPECIES_SPRITE(LANTURN, gMonBackPic_Lanturn), - SPECIES_SPRITE(PICHU, gMonBackPic_Pichu), - SPECIES_SPRITE(CLEFFA, gMonBackPic_Cleffa), - SPECIES_SPRITE(IGGLYBUFF, gMonBackPic_Igglybuff), - SPECIES_SPRITE(TOGEPI, gMonBackPic_Togepi), - SPECIES_SPRITE(TOGETIC, gMonBackPic_Togetic), - SPECIES_SPRITE(NATU, gMonBackPic_Natu), - SPECIES_SPRITE(XATU, gMonBackPic_Xatu), - SPECIES_SPRITE(MAREEP, gMonBackPic_Mareep), - SPECIES_SPRITE(FLAAFFY, gMonBackPic_Flaaffy), - SPECIES_SPRITE(AMPHAROS, gMonBackPic_Ampharos), - SPECIES_SPRITE(BELLOSSOM, gMonBackPic_Bellossom), - SPECIES_SPRITE(MARILL, gMonBackPic_Marill), - SPECIES_SPRITE(AZUMARILL, gMonBackPic_Azumarill), - SPECIES_SPRITE(SUDOWOODO, gMonBackPic_Sudowoodo), - SPECIES_SPRITE(POLITOED, gMonBackPic_Politoed), - SPECIES_SPRITE(HOPPIP, gMonBackPic_Hoppip), - SPECIES_SPRITE(SKIPLOOM, gMonBackPic_Skiploom), - SPECIES_SPRITE(JUMPLUFF, gMonBackPic_Jumpluff), - SPECIES_SPRITE(AIPOM, gMonBackPic_Aipom), - SPECIES_SPRITE(SUNKERN, gMonBackPic_Sunkern), - SPECIES_SPRITE(SUNFLORA, gMonBackPic_Sunflora), - SPECIES_SPRITE(YANMA, gMonBackPic_Yanma), - SPECIES_SPRITE(WOOPER, gMonBackPic_Wooper), - SPECIES_SPRITE(QUAGSIRE, gMonBackPic_Quagsire), - SPECIES_SPRITE(ESPEON, gMonBackPic_Espeon), - SPECIES_SPRITE(UMBREON, gMonBackPic_Umbreon), - SPECIES_SPRITE(MURKROW, gMonBackPic_Murkrow), - SPECIES_SPRITE(SLOWKING, gMonBackPic_Slowking), - SPECIES_SPRITE(MISDREAVUS, gMonBackPic_Misdreavus), - SPECIES_SPRITE(UNOWN, gMonBackPic_Unown), - SPECIES_SPRITE(WOBBUFFET, gMonBackPic_Wobbuffet), - SPECIES_SPRITE(GIRAFARIG, gMonBackPic_Girafarig), - SPECIES_SPRITE(PINECO, gMonBackPic_Pineco), - SPECIES_SPRITE(FORRETRESS, gMonBackPic_Forretress), - SPECIES_SPRITE(DUNSPARCE, gMonBackPic_Dunsparce), - SPECIES_SPRITE(GLIGAR, gMonBackPic_Gligar), - SPECIES_SPRITE(STEELIX, gMonBackPic_Steelix), - SPECIES_SPRITE(SNUBBULL, gMonBackPic_Snubbull), - SPECIES_SPRITE(GRANBULL, gMonBackPic_Granbull), - SPECIES_SPRITE(QWILFISH, gMonBackPic_Qwilfish), - SPECIES_SPRITE(SCIZOR, gMonBackPic_Scizor), - SPECIES_SPRITE(SHUCKLE, gMonBackPic_Shuckle), - SPECIES_SPRITE(HERACROSS, gMonBackPic_Heracross), - SPECIES_SPRITE(SNEASEL, gMonBackPic_Sneasel), - SPECIES_SPRITE(TEDDIURSA, gMonBackPic_Teddiursa), - SPECIES_SPRITE(URSARING, gMonBackPic_Ursaring), - SPECIES_SPRITE(SLUGMA, gMonBackPic_Slugma), - SPECIES_SPRITE(MAGCARGO, gMonBackPic_Magcargo), - SPECIES_SPRITE(SWINUB, gMonBackPic_Swinub), - SPECIES_SPRITE(PILOSWINE, gMonBackPic_Piloswine), - SPECIES_SPRITE(CORSOLA, gMonBackPic_Corsola), - SPECIES_SPRITE(REMORAID, gMonBackPic_Remoraid), - SPECIES_SPRITE(OCTILLERY, gMonBackPic_Octillery), - SPECIES_SPRITE(DELIBIRD, gMonBackPic_Delibird), - SPECIES_SPRITE(MANTINE, gMonBackPic_Mantine), - SPECIES_SPRITE(SKARMORY, gMonBackPic_Skarmory), - SPECIES_SPRITE(HOUNDOUR, gMonBackPic_Houndour), - SPECIES_SPRITE(HOUNDOOM, gMonBackPic_Houndoom), - SPECIES_SPRITE(KINGDRA, gMonBackPic_Kingdra), - SPECIES_SPRITE(PHANPY, gMonBackPic_Phanpy), - SPECIES_SPRITE(DONPHAN, gMonBackPic_Donphan), - SPECIES_SPRITE(PORYGON2, gMonBackPic_Porygon2), - SPECIES_SPRITE(STANTLER, gMonBackPic_Stantler), - SPECIES_SPRITE(SMEARGLE, gMonBackPic_Smeargle), - SPECIES_SPRITE(TYROGUE, gMonBackPic_Tyrogue), - SPECIES_SPRITE(HITMONTOP, gMonBackPic_Hitmontop), - SPECIES_SPRITE(SMOOCHUM, gMonBackPic_Smoochum), - SPECIES_SPRITE(ELEKID, gMonBackPic_Elekid), - SPECIES_SPRITE(MAGBY, gMonBackPic_Magby), - SPECIES_SPRITE(MILTANK, gMonBackPic_Miltank), - SPECIES_SPRITE(BLISSEY, gMonBackPic_Blissey), - SPECIES_SPRITE(RAIKOU, gMonBackPic_Raikou), - SPECIES_SPRITE(ENTEI, gMonBackPic_Entei), - SPECIES_SPRITE(SUICUNE, gMonBackPic_Suicune), - SPECIES_SPRITE(LARVITAR, gMonBackPic_Larvitar), - SPECIES_SPRITE(PUPITAR, gMonBackPic_Pupitar), - SPECIES_SPRITE(TYRANITAR, gMonBackPic_Tyranitar), - SPECIES_SPRITE(LUGIA, gMonBackPic_Lugia), - SPECIES_SPRITE(HO_OH, gMonBackPic_HoOh), - SPECIES_SPRITE(CELEBI, gMonBackPic_Celebi), - SPECIES_SPRITE(TREECKO, gMonBackPic_Treecko), - SPECIES_SPRITE(GROVYLE, gMonBackPic_Grovyle), - SPECIES_SPRITE(SCEPTILE, gMonBackPic_Sceptile), - SPECIES_SPRITE(TORCHIC, gMonBackPic_Torchic), - SPECIES_SPRITE(COMBUSKEN, gMonBackPic_Combusken), - SPECIES_SPRITE(BLAZIKEN, gMonBackPic_Blaziken), - SPECIES_SPRITE(MUDKIP, gMonBackPic_Mudkip), - SPECIES_SPRITE(MARSHTOMP, gMonBackPic_Marshtomp), - SPECIES_SPRITE(SWAMPERT, gMonBackPic_Swampert), - SPECIES_SPRITE(POOCHYENA, gMonBackPic_Poochyena), - SPECIES_SPRITE(MIGHTYENA, gMonBackPic_Mightyena), - SPECIES_SPRITE(ZIGZAGOON, gMonBackPic_Zigzagoon), - SPECIES_SPRITE(LINOONE, gMonBackPic_Linoone), - SPECIES_SPRITE(WURMPLE, gMonBackPic_Wurmple), - SPECIES_SPRITE(SILCOON, gMonBackPic_Silcoon), - SPECIES_SPRITE(BEAUTIFLY, gMonBackPic_Beautifly), - SPECIES_SPRITE(CASCOON, gMonBackPic_Cascoon), - SPECIES_SPRITE(DUSTOX, gMonBackPic_Dustox), - SPECIES_SPRITE(LOTAD, gMonBackPic_Lotad), - SPECIES_SPRITE(LOMBRE, gMonBackPic_Lombre), - SPECIES_SPRITE(LUDICOLO, gMonBackPic_Ludicolo), - SPECIES_SPRITE(SEEDOT, gMonBackPic_Seedot), - SPECIES_SPRITE(NUZLEAF, gMonBackPic_Nuzleaf), - SPECIES_SPRITE(SHIFTRY, gMonBackPic_Shiftry), - SPECIES_SPRITE(NINCADA, gMonBackPic_Nincada), - SPECIES_SPRITE(NINJASK, gMonBackPic_Ninjask), - SPECIES_SPRITE(SHEDINJA, gMonBackPic_Shedinja), - SPECIES_SPRITE(TAILLOW, gMonBackPic_Taillow), - SPECIES_SPRITE(SWELLOW, gMonBackPic_Swellow), - SPECIES_SPRITE(SHROOMISH, gMonBackPic_Shroomish), - SPECIES_SPRITE(BRELOOM, gMonBackPic_Breloom), - SPECIES_SPRITE(SPINDA, gMonBackPic_Spinda), - SPECIES_SPRITE(WINGULL, gMonBackPic_Wingull), - SPECIES_SPRITE(PELIPPER, gMonBackPic_Pelipper), - SPECIES_SPRITE(SURSKIT, gMonBackPic_Surskit), - SPECIES_SPRITE(MASQUERAIN, gMonBackPic_Masquerain), - SPECIES_SPRITE(WAILMER, gMonBackPic_Wailmer), - SPECIES_SPRITE(WAILORD, gMonBackPic_Wailord), - SPECIES_SPRITE(SKITTY, gMonBackPic_Skitty), - SPECIES_SPRITE(DELCATTY, gMonBackPic_Delcatty), - SPECIES_SPRITE(KECLEON, gMonBackPic_Kecleon), - SPECIES_SPRITE(BALTOY, gMonBackPic_Baltoy), - SPECIES_SPRITE(CLAYDOL, gMonBackPic_Claydol), - SPECIES_SPRITE(NOSEPASS, gMonBackPic_Nosepass), - SPECIES_SPRITE(TORKOAL, gMonBackPic_Torkoal), - SPECIES_SPRITE(SABLEYE, gMonBackPic_Sableye), - SPECIES_SPRITE(BARBOACH, gMonBackPic_Barboach), - SPECIES_SPRITE(WHISCASH, gMonBackPic_Whiscash), - SPECIES_SPRITE(LUVDISC, gMonBackPic_Luvdisc), - SPECIES_SPRITE(CORPHISH, gMonBackPic_Corphish), - SPECIES_SPRITE(CRAWDAUNT, gMonBackPic_Crawdaunt), - SPECIES_SPRITE(FEEBAS, gMonBackPic_Feebas), - SPECIES_SPRITE(MILOTIC, gMonBackPic_Milotic), - SPECIES_SPRITE(CARVANHA, gMonBackPic_Carvanha), - SPECIES_SPRITE(SHARPEDO, gMonBackPic_Sharpedo), - SPECIES_SPRITE(TRAPINCH, gMonBackPic_Trapinch), - SPECIES_SPRITE(VIBRAVA, gMonBackPic_Vibrava), - SPECIES_SPRITE(FLYGON, gMonBackPic_Flygon), - SPECIES_SPRITE(MAKUHITA, gMonBackPic_Makuhita), - SPECIES_SPRITE(HARIYAMA, gMonBackPic_Hariyama), - SPECIES_SPRITE(ELECTRIKE, gMonBackPic_Electrike), - SPECIES_SPRITE(MANECTRIC, gMonBackPic_Manectric), - SPECIES_SPRITE(NUMEL, gMonBackPic_Numel), - SPECIES_SPRITE(CAMERUPT, gMonBackPic_Camerupt), - SPECIES_SPRITE(SPHEAL, gMonBackPic_Spheal), - SPECIES_SPRITE(SEALEO, gMonBackPic_Sealeo), - SPECIES_SPRITE(WALREIN, gMonBackPic_Walrein), - SPECIES_SPRITE(CACNEA, gMonBackPic_Cacnea), - SPECIES_SPRITE(CACTURNE, gMonBackPic_Cacturne), - SPECIES_SPRITE(SNORUNT, gMonBackPic_Snorunt), - SPECIES_SPRITE(GLALIE, gMonBackPic_Glalie), - SPECIES_SPRITE(LUNATONE, gMonBackPic_Lunatone), - SPECIES_SPRITE(SOLROCK, gMonBackPic_Solrock), - SPECIES_SPRITE(AZURILL, gMonBackPic_Azurill), - SPECIES_SPRITE(SPOINK, gMonBackPic_Spoink), - SPECIES_SPRITE(GRUMPIG, gMonBackPic_Grumpig), - SPECIES_SPRITE(PLUSLE, gMonBackPic_Plusle), - SPECIES_SPRITE(MINUN, gMonBackPic_Minun), - SPECIES_SPRITE(MAWILE, gMonBackPic_Mawile), - SPECIES_SPRITE(MEDITITE, gMonBackPic_Meditite), - SPECIES_SPRITE(MEDICHAM, gMonBackPic_Medicham), - SPECIES_SPRITE(SWABLU, gMonBackPic_Swablu), - SPECIES_SPRITE(ALTARIA, gMonBackPic_Altaria), - SPECIES_SPRITE(WYNAUT, gMonBackPic_Wynaut), - SPECIES_SPRITE(DUSKULL, gMonBackPic_Duskull), - SPECIES_SPRITE(DUSCLOPS, gMonBackPic_Dusclops), - SPECIES_SPRITE(ROSELIA, gMonBackPic_Roselia), - SPECIES_SPRITE(SLAKOTH, gMonBackPic_Slakoth), - SPECIES_SPRITE(VIGOROTH, gMonBackPic_Vigoroth), - SPECIES_SPRITE(SLAKING, gMonBackPic_Slaking), - SPECIES_SPRITE(GULPIN, gMonBackPic_Gulpin), - SPECIES_SPRITE(SWALOT, gMonBackPic_Swalot), - SPECIES_SPRITE(TROPIUS, gMonBackPic_Tropius), - SPECIES_SPRITE(WHISMUR, gMonBackPic_Whismur), - SPECIES_SPRITE(LOUDRED, gMonBackPic_Loudred), - SPECIES_SPRITE(EXPLOUD, gMonBackPic_Exploud), - SPECIES_SPRITE(CLAMPERL, gMonBackPic_Clamperl), - SPECIES_SPRITE(HUNTAIL, gMonBackPic_Huntail), - SPECIES_SPRITE(GOREBYSS, gMonBackPic_Gorebyss), - SPECIES_SPRITE(ABSOL, gMonBackPic_Absol), - SPECIES_SPRITE(SHUPPET, gMonBackPic_Shuppet), - SPECIES_SPRITE(BANETTE, gMonBackPic_Banette), - SPECIES_SPRITE(SEVIPER, gMonBackPic_Seviper), - SPECIES_SPRITE(ZANGOOSE, gMonBackPic_Zangoose), - SPECIES_SPRITE(RELICANTH, gMonBackPic_Relicanth), - SPECIES_SPRITE(ARON, gMonBackPic_Aron), - SPECIES_SPRITE(LAIRON, gMonBackPic_Lairon), - SPECIES_SPRITE(AGGRON, gMonBackPic_Aggron), - SPECIES_SPRITE(CASTFORM, gMonBackPic_Castform), - SPECIES_SPRITE(VOLBEAT, gMonBackPic_Volbeat), - SPECIES_SPRITE(ILLUMISE, gMonBackPic_Illumise), - SPECIES_SPRITE(LILEEP, gMonBackPic_Lileep), - SPECIES_SPRITE(CRADILY, gMonBackPic_Cradily), - SPECIES_SPRITE(ANORITH, gMonBackPic_Anorith), - SPECIES_SPRITE(ARMALDO, gMonBackPic_Armaldo), - SPECIES_SPRITE(RALTS, gMonBackPic_Ralts), - SPECIES_SPRITE(KIRLIA, gMonBackPic_Kirlia), - SPECIES_SPRITE(GARDEVOIR, gMonBackPic_Gardevoir), - SPECIES_SPRITE(BAGON, gMonBackPic_Bagon), - SPECIES_SPRITE(SHELGON, gMonBackPic_Shelgon), - SPECIES_SPRITE(SALAMENCE, gMonBackPic_Salamence), - SPECIES_SPRITE(BELDUM, gMonBackPic_Beldum), - SPECIES_SPRITE(METANG, gMonBackPic_Metang), - SPECIES_SPRITE(METAGROSS, gMonBackPic_Metagross), - SPECIES_SPRITE(REGIROCK, gMonBackPic_Regirock), - SPECIES_SPRITE(REGICE, gMonBackPic_Regice), - SPECIES_SPRITE(REGISTEEL, gMonBackPic_Registeel), - SPECIES_SPRITE(KYOGRE, gMonBackPic_Kyogre), - SPECIES_SPRITE(GROUDON, gMonBackPic_Groudon), - SPECIES_SPRITE(RAYQUAZA, gMonBackPic_Rayquaza), - SPECIES_SPRITE(LATIAS, gMonBackPic_Latias), - SPECIES_SPRITE(LATIOS, gMonBackPic_Latios), - SPECIES_SPRITE(JIRACHI, gMonBackPic_Jirachi), - SPECIES_SPRITE(DEOXYS, gMonBackPic_Deoxys), - SPECIES_SPRITE(CHIMECHO, gMonBackPic_Chimecho), -#if P_GEN_4_POKEMON == TRUE - SPECIES_SPRITE(TURTWIG, gMonBackPic_Turtwig), - SPECIES_SPRITE(GROTLE, gMonBackPic_Grotle), - SPECIES_SPRITE(TORTERRA, gMonBackPic_Torterra), - SPECIES_SPRITE(CHIMCHAR, gMonBackPic_Chimchar), - SPECIES_SPRITE(MONFERNO, gMonBackPic_Monferno), - SPECIES_SPRITE(INFERNAPE, gMonBackPic_Infernape), - SPECIES_SPRITE(PIPLUP, gMonBackPic_Piplup), - SPECIES_SPRITE(PRINPLUP, gMonBackPic_Prinplup), - SPECIES_SPRITE(EMPOLEON, gMonBackPic_Empoleon), - SPECIES_SPRITE(STARLY, gMonBackPic_Starly), - SPECIES_SPRITE(STARAVIA, gMonBackPic_Staravia), - SPECIES_SPRITE(STARAPTOR, gMonBackPic_Staraptor), - SPECIES_SPRITE(BIDOOF, gMonBackPic_Bidoof), - SPECIES_SPRITE(BIBAREL, gMonBackPic_Bibarel), - SPECIES_SPRITE(KRICKETOT, gMonBackPic_Kricketot), - SPECIES_SPRITE(KRICKETUNE, gMonBackPic_Kricketune), - SPECIES_SPRITE(SHINX, gMonBackPic_Shinx), - SPECIES_SPRITE(LUXIO, gMonBackPic_Luxio), - SPECIES_SPRITE(LUXRAY, gMonBackPic_Luxray), - SPECIES_SPRITE(BUDEW, gMonBackPic_Budew), - SPECIES_SPRITE(ROSERADE, gMonBackPic_Roserade), - SPECIES_SPRITE(CRANIDOS, gMonBackPic_Cranidos), - SPECIES_SPRITE(RAMPARDOS, gMonBackPic_Rampardos), - SPECIES_SPRITE(SHIELDON, gMonBackPic_Shieldon), - SPECIES_SPRITE(BASTIODON, gMonBackPic_Bastiodon), - SPECIES_SPRITE(BURMY, gMonBackPic_Burmy), - SPECIES_SPRITE(WORMADAM, gMonBackPic_Wormadam), - SPECIES_SPRITE(MOTHIM, gMonBackPic_Mothim), - SPECIES_SPRITE(COMBEE, gMonBackPic_Combee), - SPECIES_SPRITE(VESPIQUEN, gMonBackPic_Vespiquen), - SPECIES_SPRITE(PACHIRISU, gMonBackPic_Pachirisu), - SPECIES_SPRITE(BUIZEL, gMonBackPic_Buizel), - SPECIES_SPRITE(FLOATZEL, gMonBackPic_Floatzel), - SPECIES_SPRITE(CHERUBI, gMonBackPic_Cherubi), - SPECIES_SPRITE(CHERRIM, gMonBackPic_Cherrim), - SPECIES_SPRITE(SHELLOS, gMonBackPic_Shellos), - SPECIES_SPRITE(GASTRODON, gMonBackPic_Gastrodon), - SPECIES_SPRITE(AMBIPOM, gMonBackPic_Ambipom), - SPECIES_SPRITE(DRIFLOON, gMonBackPic_Drifloon), - SPECIES_SPRITE(DRIFBLIM, gMonBackPic_Drifblim), - SPECIES_SPRITE(BUNEARY, gMonBackPic_Buneary), - SPECIES_SPRITE(LOPUNNY, gMonBackPic_Lopunny), - SPECIES_SPRITE(MISMAGIUS, gMonBackPic_Mismagius), - SPECIES_SPRITE(HONCHKROW, gMonBackPic_Honchkrow), - SPECIES_SPRITE(GLAMEOW, gMonBackPic_Glameow), - SPECIES_SPRITE(PURUGLY, gMonBackPic_Purugly), - SPECIES_SPRITE(CHINGLING, gMonBackPic_Chingling), - SPECIES_SPRITE(STUNKY, gMonBackPic_Stunky), - SPECIES_SPRITE(SKUNTANK, gMonBackPic_Skuntank), - SPECIES_SPRITE(BRONZOR, gMonBackPic_Bronzor), - SPECIES_SPRITE(BRONZONG, gMonBackPic_Bronzong), - SPECIES_SPRITE(BONSLY, gMonBackPic_Bonsly), - SPECIES_SPRITE(MIME_JR, gMonBackPic_MimeJr), - SPECIES_SPRITE(HAPPINY, gMonBackPic_Happiny), - SPECIES_SPRITE(CHATOT, gMonBackPic_Chatot), - SPECIES_SPRITE(SPIRITOMB, gMonBackPic_Spiritomb), - SPECIES_SPRITE(GIBLE, gMonBackPic_Gible), - SPECIES_SPRITE(GABITE, gMonBackPic_Gabite), - SPECIES_SPRITE(GARCHOMP, gMonBackPic_Garchomp), - SPECIES_SPRITE(MUNCHLAX, gMonBackPic_Munchlax), - SPECIES_SPRITE(RIOLU, gMonBackPic_Riolu), - SPECIES_SPRITE(LUCARIO, gMonBackPic_Lucario), - SPECIES_SPRITE(HIPPOPOTAS, gMonBackPic_Hippopotas), - SPECIES_SPRITE(HIPPOWDON, gMonBackPic_Hippowdon), - SPECIES_SPRITE(SKORUPI, gMonBackPic_Skorupi), - SPECIES_SPRITE(DRAPION, gMonBackPic_Drapion), - SPECIES_SPRITE(CROAGUNK, gMonBackPic_Croagunk), - SPECIES_SPRITE(TOXICROAK, gMonBackPic_Toxicroak), - SPECIES_SPRITE(CARNIVINE, gMonBackPic_Carnivine), - SPECIES_SPRITE(FINNEON, gMonBackPic_Finneon), - SPECIES_SPRITE(LUMINEON, gMonBackPic_Lumineon), - SPECIES_SPRITE(MANTYKE, gMonBackPic_Mantyke), - SPECIES_SPRITE(SNOVER, gMonBackPic_Snover), - SPECIES_SPRITE(ABOMASNOW, gMonBackPic_Abomasnow), - SPECIES_SPRITE(WEAVILE, gMonBackPic_Weavile), - SPECIES_SPRITE(MAGNEZONE, gMonBackPic_Magnezone), - SPECIES_SPRITE(LICKILICKY, gMonBackPic_Lickilicky), - SPECIES_SPRITE(RHYPERIOR, gMonBackPic_Rhyperior), - SPECIES_SPRITE(TANGROWTH, gMonBackPic_Tangrowth), - SPECIES_SPRITE(ELECTIVIRE, gMonBackPic_Electivire), - SPECIES_SPRITE(MAGMORTAR, gMonBackPic_Magmortar), - SPECIES_SPRITE(TOGEKISS, gMonBackPic_Togekiss), - SPECIES_SPRITE(YANMEGA, gMonBackPic_Yanmega), - SPECIES_SPRITE(LEAFEON, gMonBackPic_Leafeon), - SPECIES_SPRITE(GLACEON, gMonBackPic_Glaceon), - SPECIES_SPRITE(GLISCOR, gMonBackPic_Gliscor), - SPECIES_SPRITE(MAMOSWINE, gMonBackPic_Mamoswine), - SPECIES_SPRITE(PORYGON_Z, gMonBackPic_PorygonZ), - SPECIES_SPRITE(GALLADE, gMonBackPic_Gallade), - SPECIES_SPRITE(PROBOPASS, gMonBackPic_Probopass), - SPECIES_SPRITE(DUSKNOIR, gMonBackPic_Dusknoir), - SPECIES_SPRITE(FROSLASS, gMonBackPic_Froslass), - SPECIES_SPRITE(ROTOM, gMonBackPic_Rotom), - SPECIES_SPRITE(UXIE, gMonBackPic_Uxie), - SPECIES_SPRITE(MESPRIT, gMonBackPic_Mesprit), - SPECIES_SPRITE(AZELF, gMonBackPic_Azelf), - SPECIES_SPRITE(DIALGA, gMonBackPic_Dialga), - SPECIES_SPRITE(PALKIA, gMonBackPic_Palkia), - SPECIES_SPRITE(HEATRAN, gMonBackPic_Heatran), - SPECIES_SPRITE(REGIGIGAS, gMonBackPic_Regigigas), - SPECIES_SPRITE(GIRATINA, gMonBackPic_Giratina), - SPECIES_SPRITE(CRESSELIA, gMonBackPic_Cresselia), - SPECIES_SPRITE(PHIONE, gMonBackPic_Phione), - SPECIES_SPRITE(MANAPHY, gMonBackPic_Manaphy), - SPECIES_SPRITE(DARKRAI, gMonBackPic_Darkrai), - SPECIES_SPRITE(SHAYMIN, gMonBackPic_Shaymin), - SPECIES_SPRITE(ARCEUS, gMonBackPic_Arceus), -#endif -#if P_GEN_5_POKEMON == TRUE - SPECIES_SPRITE(VICTINI, gMonBackPic_Victini), - SPECIES_SPRITE(SNIVY, gMonBackPic_Snivy), - SPECIES_SPRITE(SERVINE, gMonBackPic_Servine), - SPECIES_SPRITE(SERPERIOR, gMonBackPic_Serperior), - SPECIES_SPRITE(TEPIG, gMonBackPic_Tepig), - SPECIES_SPRITE(PIGNITE, gMonBackPic_Pignite), - SPECIES_SPRITE(EMBOAR, gMonBackPic_Emboar), - SPECIES_SPRITE(OSHAWOTT, gMonBackPic_Oshawott), - SPECIES_SPRITE(DEWOTT, gMonBackPic_Dewott), - SPECIES_SPRITE(SAMUROTT, gMonBackPic_Samurott), - SPECIES_SPRITE(PATRAT, gMonBackPic_Patrat), - SPECIES_SPRITE(WATCHOG, gMonBackPic_Watchog), - SPECIES_SPRITE(LILLIPUP, gMonBackPic_Lillipup), - SPECIES_SPRITE(HERDIER, gMonBackPic_Herdier), - SPECIES_SPRITE(STOUTLAND, gMonBackPic_Stoutland), - SPECIES_SPRITE(PURRLOIN, gMonBackPic_Purrloin), - SPECIES_SPRITE(LIEPARD, gMonBackPic_Liepard), - SPECIES_SPRITE(PANSAGE, gMonBackPic_Pansage), - SPECIES_SPRITE(SIMISAGE, gMonBackPic_Simisage), - SPECIES_SPRITE(PANSEAR, gMonBackPic_Pansear), - SPECIES_SPRITE(SIMISEAR, gMonBackPic_Simisear), - SPECIES_SPRITE(PANPOUR, gMonBackPic_Panpour), - SPECIES_SPRITE(SIMIPOUR, gMonBackPic_Simipour), - SPECIES_SPRITE(MUNNA, gMonBackPic_Munna), - SPECIES_SPRITE(MUSHARNA, gMonBackPic_Musharna), - SPECIES_SPRITE(PIDOVE, gMonBackPic_Pidove), - SPECIES_SPRITE(TRANQUILL, gMonBackPic_Tranquill), - SPECIES_SPRITE(UNFEZANT, gMonBackPic_Unfezant), - SPECIES_SPRITE(BLITZLE, gMonBackPic_Blitzle), - SPECIES_SPRITE(ZEBSTRIKA, gMonBackPic_Zebstrika), - SPECIES_SPRITE(ROGGENROLA, gMonBackPic_Roggenrola), - SPECIES_SPRITE(BOLDORE, gMonBackPic_Boldore), - SPECIES_SPRITE(GIGALITH, gMonBackPic_Gigalith), - SPECIES_SPRITE(WOOBAT, gMonBackPic_Woobat), - SPECIES_SPRITE(SWOOBAT, gMonBackPic_Swoobat), - SPECIES_SPRITE(DRILBUR, gMonBackPic_Drilbur), - SPECIES_SPRITE(EXCADRILL, gMonBackPic_Excadrill), - SPECIES_SPRITE(AUDINO, gMonBackPic_Audino), - SPECIES_SPRITE(TIMBURR, gMonBackPic_Timburr), - SPECIES_SPRITE(GURDURR, gMonBackPic_Gurdurr), - SPECIES_SPRITE(CONKELDURR, gMonBackPic_Conkeldurr), - SPECIES_SPRITE(TYMPOLE, gMonBackPic_Tympole), - SPECIES_SPRITE(PALPITOAD, gMonBackPic_Palpitoad), - SPECIES_SPRITE(SEISMITOAD, gMonBackPic_Seismitoad), - SPECIES_SPRITE(THROH, gMonBackPic_Throh), - SPECIES_SPRITE(SAWK, gMonBackPic_Sawk), - SPECIES_SPRITE(SEWADDLE, gMonBackPic_Sewaddle), - SPECIES_SPRITE(SWADLOON, gMonBackPic_Swadloon), - SPECIES_SPRITE(LEAVANNY, gMonBackPic_Leavanny), - SPECIES_SPRITE(VENIPEDE, gMonBackPic_Venipede), - SPECIES_SPRITE(WHIRLIPEDE, gMonBackPic_Whirlipede), - SPECIES_SPRITE(SCOLIPEDE, gMonBackPic_Scolipede), - SPECIES_SPRITE(COTTONEE, gMonBackPic_Cottonee), - SPECIES_SPRITE(WHIMSICOTT, gMonBackPic_Whimsicott), - SPECIES_SPRITE(PETILIL, gMonBackPic_Petilil), - SPECIES_SPRITE(LILLIGANT, gMonBackPic_Lilligant), - SPECIES_SPRITE(BASCULIN, gMonBackPic_Basculin), - SPECIES_SPRITE(SANDILE, gMonBackPic_Sandile), - SPECIES_SPRITE(KROKOROK, gMonBackPic_Krokorok), - SPECIES_SPRITE(KROOKODILE, gMonBackPic_Krookodile), - SPECIES_SPRITE(DARUMAKA, gMonBackPic_Darumaka), - SPECIES_SPRITE(DARMANITAN, gMonBackPic_Darmanitan), - SPECIES_SPRITE(MARACTUS, gMonBackPic_Maractus), - SPECIES_SPRITE(DWEBBLE, gMonBackPic_Dwebble), - SPECIES_SPRITE(CRUSTLE, gMonBackPic_Crustle), - SPECIES_SPRITE(SCRAGGY, gMonBackPic_Scraggy), - SPECIES_SPRITE(SCRAFTY, gMonBackPic_Scrafty), - SPECIES_SPRITE(SIGILYPH, gMonBackPic_Sigilyph), - SPECIES_SPRITE(YAMASK, gMonBackPic_Yamask), - SPECIES_SPRITE(COFAGRIGUS, gMonBackPic_Cofagrigus), - SPECIES_SPRITE(TIRTOUGA, gMonBackPic_Tirtouga), - SPECIES_SPRITE(CARRACOSTA, gMonBackPic_Carracosta), - SPECIES_SPRITE(ARCHEN, gMonBackPic_Archen), - SPECIES_SPRITE(ARCHEOPS, gMonBackPic_Archeops), - SPECIES_SPRITE(TRUBBISH, gMonBackPic_Trubbish), - SPECIES_SPRITE(GARBODOR, gMonBackPic_Garbodor), - SPECIES_SPRITE(ZORUA, gMonBackPic_Zorua), - SPECIES_SPRITE(ZOROARK, gMonBackPic_Zoroark), - SPECIES_SPRITE(MINCCINO, gMonBackPic_Minccino), - SPECIES_SPRITE(CINCCINO, gMonBackPic_Cinccino), - SPECIES_SPRITE(GOTHITA, gMonBackPic_Gothita), - SPECIES_SPRITE(GOTHORITA, gMonBackPic_Gothorita), - SPECIES_SPRITE(GOTHITELLE, gMonBackPic_Gothitelle), - SPECIES_SPRITE(SOLOSIS, gMonBackPic_Solosis), - SPECIES_SPRITE(DUOSION, gMonBackPic_Duosion), - SPECIES_SPRITE(REUNICLUS, gMonBackPic_Reuniclus), - SPECIES_SPRITE(DUCKLETT, gMonBackPic_Ducklett), - SPECIES_SPRITE(SWANNA, gMonBackPic_Swanna), - SPECIES_SPRITE(VANILLITE, gMonBackPic_Vanillite), - SPECIES_SPRITE(VANILLISH, gMonBackPic_Vanillish), - SPECIES_SPRITE(VANILLUXE, gMonBackPic_Vanilluxe), - SPECIES_SPRITE(DEERLING, gMonBackPic_Deerling), - SPECIES_SPRITE(SAWSBUCK, gMonBackPic_Sawsbuck), - SPECIES_SPRITE(EMOLGA, gMonBackPic_Emolga), - SPECIES_SPRITE(KARRABLAST, gMonBackPic_Karrablast), - SPECIES_SPRITE(ESCAVALIER, gMonBackPic_Escavalier), - SPECIES_SPRITE(FOONGUS, gMonBackPic_Foongus), - SPECIES_SPRITE(AMOONGUSS, gMonBackPic_Amoonguss), - SPECIES_SPRITE(FRILLISH, gMonBackPic_Frillish), - SPECIES_SPRITE(JELLICENT, gMonBackPic_Jellicent), - SPECIES_SPRITE(ALOMOMOLA, gMonBackPic_Alomomola), - SPECIES_SPRITE(JOLTIK, gMonBackPic_Joltik), - SPECIES_SPRITE(GALVANTULA, gMonBackPic_Galvantula), - SPECIES_SPRITE(FERROSEED, gMonBackPic_Ferroseed), - SPECIES_SPRITE(FERROTHORN, gMonBackPic_Ferrothorn), - SPECIES_SPRITE(KLINK, gMonBackPic_Klink), - SPECIES_SPRITE(KLANG, gMonBackPic_Klang), - SPECIES_SPRITE(KLINKLANG, gMonBackPic_Klinklang), - SPECIES_SPRITE(TYNAMO, gMonBackPic_Tynamo), - SPECIES_SPRITE(EELEKTRIK, gMonBackPic_Eelektrik), - SPECIES_SPRITE(EELEKTROSS, gMonBackPic_Eelektross), - SPECIES_SPRITE(ELGYEM, gMonBackPic_Elgyem), - SPECIES_SPRITE(BEHEEYEM, gMonBackPic_Beheeyem), - SPECIES_SPRITE(LITWICK, gMonBackPic_Litwick), - SPECIES_SPRITE(LAMPENT, gMonBackPic_Lampent), - SPECIES_SPRITE(CHANDELURE, gMonBackPic_Chandelure), - SPECIES_SPRITE(AXEW, gMonBackPic_Axew), - SPECIES_SPRITE(FRAXURE, gMonBackPic_Fraxure), - SPECIES_SPRITE(HAXORUS, gMonBackPic_Haxorus), - SPECIES_SPRITE(CUBCHOO, gMonBackPic_Cubchoo), - SPECIES_SPRITE(BEARTIC, gMonBackPic_Beartic), - SPECIES_SPRITE(CRYOGONAL, gMonBackPic_Cryogonal), - SPECIES_SPRITE(SHELMET, gMonBackPic_Shelmet), - SPECIES_SPRITE(ACCELGOR, gMonBackPic_Accelgor), - SPECIES_SPRITE(STUNFISK, gMonBackPic_Stunfisk), - SPECIES_SPRITE(MIENFOO, gMonBackPic_Mienfoo), - SPECIES_SPRITE(MIENSHAO, gMonBackPic_Mienshao), - SPECIES_SPRITE(DRUDDIGON, gMonBackPic_Druddigon), - SPECIES_SPRITE(GOLETT, gMonBackPic_Golett), - SPECIES_SPRITE(GOLURK, gMonBackPic_Golurk), - SPECIES_SPRITE(PAWNIARD, gMonBackPic_Pawniard), - SPECIES_SPRITE(BISHARP, gMonBackPic_Bisharp), - SPECIES_SPRITE(BOUFFALANT, gMonBackPic_Bouffalant), - SPECIES_SPRITE(RUFFLET, gMonBackPic_Rufflet), - SPECIES_SPRITE(BRAVIARY, gMonBackPic_Braviary), - SPECIES_SPRITE(VULLABY, gMonBackPic_Vullaby), - SPECIES_SPRITE(MANDIBUZZ, gMonBackPic_Mandibuzz), - SPECIES_SPRITE(HEATMOR, gMonBackPic_Heatmor), - SPECIES_SPRITE(DURANT, gMonBackPic_Durant), - SPECIES_SPRITE(DEINO, gMonBackPic_Deino), - SPECIES_SPRITE(ZWEILOUS, gMonBackPic_Zweilous), - SPECIES_SPRITE(HYDREIGON, gMonBackPic_Hydreigon), - SPECIES_SPRITE(LARVESTA, gMonBackPic_Larvesta), - SPECIES_SPRITE(VOLCARONA, gMonBackPic_Volcarona), - SPECIES_SPRITE(COBALION, gMonBackPic_Cobalion), - SPECIES_SPRITE(TERRAKION, gMonBackPic_Terrakion), - SPECIES_SPRITE(VIRIZION, gMonBackPic_Virizion), - SPECIES_SPRITE(TORNADUS, gMonBackPic_Tornadus), - SPECIES_SPRITE(THUNDURUS, gMonBackPic_Thundurus), - SPECIES_SPRITE(RESHIRAM, gMonBackPic_Reshiram), - SPECIES_SPRITE(ZEKROM, gMonBackPic_Zekrom), - SPECIES_SPRITE(LANDORUS, gMonBackPic_Landorus), - SPECIES_SPRITE(KYUREM, gMonBackPic_Kyurem), - SPECIES_SPRITE(KELDEO, gMonBackPic_Keldeo), - SPECIES_SPRITE(MELOETTA, gMonBackPic_Meloetta), - SPECIES_SPRITE(GENESECT, gMonBackPic_Genesect), -#endif -#if P_GEN_6_POKEMON == TRUE - SPECIES_SPRITE(CHESPIN, gMonBackPic_Chespin), - SPECIES_SPRITE(QUILLADIN, gMonBackPic_Quilladin), - SPECIES_SPRITE(CHESNAUGHT, gMonBackPic_Chesnaught), - SPECIES_SPRITE(FENNEKIN, gMonBackPic_Fennekin), - SPECIES_SPRITE(BRAIXEN, gMonBackPic_Braixen), - SPECIES_SPRITE(DELPHOX, gMonBackPic_Delphox), - SPECIES_SPRITE(FROAKIE, gMonBackPic_Froakie), - SPECIES_SPRITE(FROGADIER, gMonBackPic_Frogadier), - SPECIES_SPRITE(GRENINJA, gMonBackPic_Greninja), - SPECIES_SPRITE(BUNNELBY, gMonBackPic_Bunnelby), - SPECIES_SPRITE(DIGGERSBY, gMonBackPic_Diggersby), - SPECIES_SPRITE(FLETCHLING, gMonBackPic_Fletchling), - SPECIES_SPRITE(FLETCHINDER, gMonBackPic_Fletchinder), - SPECIES_SPRITE(TALONFLAME, gMonBackPic_Talonflame), - SPECIES_SPRITE(SCATTERBUG, gMonBackPic_Scatterbug), - SPECIES_SPRITE(SPEWPA, gMonBackPic_Spewpa), - SPECIES_SPRITE(VIVILLON, gMonBackPic_Vivillon), - SPECIES_SPRITE(LITLEO, gMonBackPic_Litleo), - SPECIES_SPRITE(PYROAR, gMonBackPic_Pyroar), - SPECIES_SPRITE(FLABEBE, gMonBackPic_Flabebe), - SPECIES_SPRITE(FLOETTE, gMonBackPic_Floette), - SPECIES_SPRITE(FLORGES, gMonBackPic_Florges), - SPECIES_SPRITE(SKIDDO, gMonBackPic_Skiddo), - SPECIES_SPRITE(GOGOAT, gMonBackPic_Gogoat), - SPECIES_SPRITE(PANCHAM, gMonBackPic_Pancham), - SPECIES_SPRITE(PANGORO, gMonBackPic_Pangoro), - SPECIES_SPRITE(FURFROU, gMonBackPic_Furfrou), - SPECIES_SPRITE(ESPURR, gMonBackPic_Espurr), - SPECIES_SPRITE(MEOWSTIC, gMonBackPic_Meowstic), - SPECIES_SPRITE(HONEDGE, gMonBackPic_Honedge), - SPECIES_SPRITE(DOUBLADE, gMonBackPic_Doublade), - SPECIES_SPRITE(AEGISLASH, gMonBackPic_Aegislash), - SPECIES_SPRITE(SPRITZEE, gMonBackPic_Spritzee), - SPECIES_SPRITE(AROMATISSE, gMonBackPic_Aromatisse), - SPECIES_SPRITE(SWIRLIX, gMonBackPic_Swirlix), - SPECIES_SPRITE(SLURPUFF, gMonBackPic_Slurpuff), - SPECIES_SPRITE(INKAY, gMonBackPic_Inkay), - SPECIES_SPRITE(MALAMAR, gMonBackPic_Malamar), - SPECIES_SPRITE(BINACLE, gMonBackPic_Binacle), - SPECIES_SPRITE(BARBARACLE, gMonBackPic_Barbaracle), - SPECIES_SPRITE(SKRELP, gMonBackPic_Skrelp), - SPECIES_SPRITE(DRAGALGE, gMonBackPic_Dragalge), - SPECIES_SPRITE(CLAUNCHER, gMonBackPic_Clauncher), - SPECIES_SPRITE(CLAWITZER, gMonBackPic_Clawitzer), - SPECIES_SPRITE(HELIOPTILE, gMonBackPic_Helioptile), - SPECIES_SPRITE(HELIOLISK, gMonBackPic_Heliolisk), - SPECIES_SPRITE(TYRUNT, gMonBackPic_Tyrunt), - SPECIES_SPRITE(TYRANTRUM, gMonBackPic_Tyrantrum), - SPECIES_SPRITE(AMAURA, gMonBackPic_Amaura), - SPECIES_SPRITE(AURORUS, gMonBackPic_Aurorus), - SPECIES_SPRITE(SYLVEON, gMonBackPic_Sylveon), - SPECIES_SPRITE(HAWLUCHA, gMonBackPic_Hawlucha), - SPECIES_SPRITE(DEDENNE, gMonBackPic_Dedenne), - SPECIES_SPRITE(CARBINK, gMonBackPic_Carbink), - SPECIES_SPRITE(GOOMY, gMonBackPic_Goomy), - SPECIES_SPRITE(SLIGGOO, gMonBackPic_Sliggoo), - SPECIES_SPRITE(GOODRA, gMonBackPic_Goodra), - SPECIES_SPRITE(KLEFKI, gMonBackPic_Klefki), - SPECIES_SPRITE(PHANTUMP, gMonBackPic_Phantump), - SPECIES_SPRITE(TREVENANT, gMonBackPic_Trevenant), - SPECIES_SPRITE(PUMPKABOO, gMonBackPic_Pumpkaboo), - SPECIES_SPRITE(GOURGEIST, gMonBackPic_Gourgeist), - SPECIES_SPRITE(BERGMITE, gMonBackPic_Bergmite), - SPECIES_SPRITE(AVALUGG, gMonBackPic_Avalugg), - SPECIES_SPRITE(NOIBAT, gMonBackPic_Noibat), - SPECIES_SPRITE(NOIVERN, gMonBackPic_Noivern), - SPECIES_SPRITE(XERNEAS, gMonBackPic_Xerneas), - SPECIES_SPRITE(YVELTAL, gMonBackPic_Yveltal), - SPECIES_SPRITE(ZYGARDE, gMonBackPic_Zygarde), - SPECIES_SPRITE(DIANCIE, gMonBackPic_Diancie), - SPECIES_SPRITE(HOOPA, gMonBackPic_Hoopa), - SPECIES_SPRITE(VOLCANION, gMonBackPic_Volcanion), -#endif -#if P_GEN_7_POKEMON == TRUE - SPECIES_SPRITE(ROWLET, gMonBackPic_Rowlet), - SPECIES_SPRITE(DARTRIX, gMonBackPic_Dartrix), - SPECIES_SPRITE(DECIDUEYE, gMonBackPic_Decidueye), - SPECIES_SPRITE(LITTEN, gMonBackPic_Litten), - SPECIES_SPRITE(TORRACAT, gMonBackPic_Torracat), - SPECIES_SPRITE(INCINEROAR, gMonBackPic_Incineroar), - SPECIES_SPRITE(POPPLIO, gMonBackPic_Popplio), - SPECIES_SPRITE(BRIONNE, gMonBackPic_Brionne), - SPECIES_SPRITE(PRIMARINA, gMonBackPic_Primarina), - SPECIES_SPRITE(PIKIPEK, gMonBackPic_Pikipek), - SPECIES_SPRITE(TRUMBEAK, gMonBackPic_Trumbeak), - SPECIES_SPRITE(TOUCANNON, gMonBackPic_Toucannon), - SPECIES_SPRITE(YUNGOOS, gMonBackPic_Yungoos), - SPECIES_SPRITE(GUMSHOOS, gMonBackPic_Gumshoos), - SPECIES_SPRITE(GRUBBIN, gMonBackPic_Grubbin), - SPECIES_SPRITE(CHARJABUG, gMonBackPic_Charjabug), - SPECIES_SPRITE(VIKAVOLT, gMonBackPic_Vikavolt), - SPECIES_SPRITE(CRABRAWLER, gMonBackPic_Crabrawler), - SPECIES_SPRITE(CRABOMINABLE, gMonBackPic_Crabominable), - SPECIES_SPRITE(ORICORIO, gMonBackPic_Oricorio), - SPECIES_SPRITE(CUTIEFLY, gMonBackPic_Cutiefly), - SPECIES_SPRITE(RIBOMBEE, gMonBackPic_Ribombee), - SPECIES_SPRITE(ROCKRUFF, gMonBackPic_Rockruff), - SPECIES_SPRITE(LYCANROC, gMonBackPic_Lycanroc), - SPECIES_SPRITE(WISHIWASHI, gMonBackPic_Wishiwashi), - SPECIES_SPRITE(MAREANIE, gMonBackPic_Mareanie), - SPECIES_SPRITE(TOXAPEX, gMonBackPic_Toxapex), - SPECIES_SPRITE(MUDBRAY, gMonBackPic_Mudbray), - SPECIES_SPRITE(MUDSDALE, gMonBackPic_Mudsdale), - SPECIES_SPRITE(DEWPIDER, gMonBackPic_Dewpider), - SPECIES_SPRITE(ARAQUANID, gMonBackPic_Araquanid), - SPECIES_SPRITE(FOMANTIS, gMonBackPic_Fomantis), - SPECIES_SPRITE(LURANTIS, gMonBackPic_Lurantis), - SPECIES_SPRITE(MORELULL, gMonBackPic_Morelull), - SPECIES_SPRITE(SHIINOTIC, gMonBackPic_Shiinotic), - SPECIES_SPRITE(SALANDIT, gMonBackPic_Salandit), - SPECIES_SPRITE(SALAZZLE, gMonBackPic_Salazzle), - SPECIES_SPRITE(STUFFUL, gMonBackPic_Stufful), - SPECIES_SPRITE(BEWEAR, gMonBackPic_Bewear), - SPECIES_SPRITE(BOUNSWEET, gMonBackPic_Bounsweet), - SPECIES_SPRITE(STEENEE, gMonBackPic_Steenee), - SPECIES_SPRITE(TSAREENA, gMonBackPic_Tsareena), - SPECIES_SPRITE(COMFEY, gMonBackPic_Comfey), - SPECIES_SPRITE(ORANGURU, gMonBackPic_Oranguru), - SPECIES_SPRITE(PASSIMIAN, gMonBackPic_Passimian), - SPECIES_SPRITE(WIMPOD, gMonBackPic_Wimpod), - SPECIES_SPRITE(GOLISOPOD, gMonBackPic_Golisopod), - SPECIES_SPRITE(SANDYGAST, gMonBackPic_Sandygast), - SPECIES_SPRITE(PALOSSAND, gMonBackPic_Palossand), - SPECIES_SPRITE(PYUKUMUKU, gMonBackPic_Pyukumuku), - SPECIES_SPRITE(TYPE_NULL, gMonBackPic_TypeNull), - SPECIES_SPRITE(SILVALLY, gMonBackPic_Silvally), - SPECIES_SPRITE(MINIOR, gMonBackPic_Minior), - SPECIES_SPRITE(KOMALA, gMonBackPic_Komala), - SPECIES_SPRITE(TURTONATOR, gMonBackPic_Turtonator), - SPECIES_SPRITE(TOGEDEMARU, gMonBackPic_Togedemaru), - SPECIES_SPRITE(MIMIKYU, gMonBackPic_Mimikyu), - SPECIES_SPRITE(BRUXISH, gMonBackPic_Bruxish), - SPECIES_SPRITE(DRAMPA, gMonBackPic_Drampa), - SPECIES_SPRITE(DHELMISE, gMonBackPic_Dhelmise), - SPECIES_SPRITE(JANGMO_O, gMonBackPic_JangmoO), - SPECIES_SPRITE(HAKAMO_O, gMonBackPic_HakamoO), - SPECIES_SPRITE(KOMMO_O, gMonBackPic_KommoO), - SPECIES_SPRITE(TAPU_KOKO, gMonBackPic_TapuKoko), - SPECIES_SPRITE(TAPU_LELE, gMonBackPic_TapuLele), - SPECIES_SPRITE(TAPU_BULU, gMonBackPic_TapuBulu), - SPECIES_SPRITE(TAPU_FINI, gMonBackPic_TapuFini), - SPECIES_SPRITE(COSMOG, gMonBackPic_Cosmog), - SPECIES_SPRITE(COSMOEM, gMonBackPic_Cosmoem), - SPECIES_SPRITE(SOLGALEO, gMonBackPic_Solgaleo), - SPECIES_SPRITE(LUNALA, gMonBackPic_Lunala), - SPECIES_SPRITE(NIHILEGO, gMonBackPic_Nihilego), - SPECIES_SPRITE(BUZZWOLE, gMonBackPic_Buzzwole), - SPECIES_SPRITE(PHEROMOSA, gMonBackPic_Pheromosa), - SPECIES_SPRITE(XURKITREE, gMonBackPic_Xurkitree), - SPECIES_SPRITE(CELESTEELA, gMonBackPic_Celesteela), - SPECIES_SPRITE(KARTANA, gMonBackPic_Kartana), - SPECIES_SPRITE(GUZZLORD, gMonBackPic_Guzzlord), - SPECIES_SPRITE(NECROZMA, gMonBackPic_Necrozma), - SPECIES_SPRITE(MAGEARNA, gMonBackPic_Magearna), - SPECIES_SPRITE(MARSHADOW, gMonBackPic_Marshadow), - SPECIES_SPRITE(POIPOLE, gMonBackPic_Poipole), - SPECIES_SPRITE(NAGANADEL, gMonBackPic_Naganadel), - SPECIES_SPRITE(STAKATAKA, gMonBackPic_Stakataka), - SPECIES_SPRITE(BLACEPHALON, gMonBackPic_Blacephalon), - SPECIES_SPRITE(ZERAORA, gMonBackPic_Zeraora), - SPECIES_SPRITE(MELTAN, gMonBackPic_Meltan), - SPECIES_SPRITE(MELMETAL, gMonBackPic_Melmetal), -#endif -#if P_GEN_8_POKEMON == TRUE - SPECIES_SPRITE(GROOKEY, gMonBackPic_Grookey), - SPECIES_SPRITE(THWACKEY, gMonBackPic_Thwackey), - SPECIES_SPRITE(RILLABOOM, gMonBackPic_Rillaboom), - SPECIES_SPRITE(SCORBUNNY, gMonBackPic_Scorbunny), - SPECIES_SPRITE(RABOOT, gMonBackPic_Raboot), - SPECIES_SPRITE(CINDERACE, gMonBackPic_Cinderace), - SPECIES_SPRITE(SOBBLE, gMonBackPic_Sobble), - SPECIES_SPRITE(DRIZZILE, gMonBackPic_Drizzile), - SPECIES_SPRITE(INTELEON, gMonBackPic_Inteleon), - SPECIES_SPRITE(SKWOVET, gMonBackPic_Skwovet), - SPECIES_SPRITE(GREEDENT, gMonBackPic_Greedent), - SPECIES_SPRITE(ROOKIDEE, gMonBackPic_Rookidee), - SPECIES_SPRITE(CORVISQUIRE, gMonBackPic_Corvisquire), - SPECIES_SPRITE(CORVIKNIGHT, gMonBackPic_Corviknight), - SPECIES_SPRITE(BLIPBUG, gMonBackPic_Blipbug), - SPECIES_SPRITE(DOTTLER, gMonBackPic_Dottler), - SPECIES_SPRITE(ORBEETLE, gMonBackPic_Orbeetle), - SPECIES_SPRITE(NICKIT, gMonBackPic_Nickit), - SPECIES_SPRITE(THIEVUL, gMonBackPic_Thievul), - SPECIES_SPRITE(GOSSIFLEUR, gMonBackPic_Gossifleur), - SPECIES_SPRITE(ELDEGOSS, gMonBackPic_Eldegoss), - SPECIES_SPRITE(WOOLOO, gMonBackPic_Wooloo), - SPECIES_SPRITE(DUBWOOL, gMonBackPic_Dubwool), - SPECIES_SPRITE(CHEWTLE, gMonBackPic_Chewtle), - SPECIES_SPRITE(DREDNAW, gMonBackPic_Drednaw), - SPECIES_SPRITE(YAMPER, gMonBackPic_Yamper), - SPECIES_SPRITE(BOLTUND, gMonBackPic_Boltund), - SPECIES_SPRITE(ROLYCOLY, gMonBackPic_Rolycoly), - SPECIES_SPRITE(CARKOL, gMonBackPic_Carkol), - SPECIES_SPRITE(COALOSSAL, gMonBackPic_Coalossal), - SPECIES_SPRITE(APPLIN, gMonBackPic_Applin), - SPECIES_SPRITE(FLAPPLE, gMonBackPic_Flapple), - SPECIES_SPRITE(APPLETUN, gMonBackPic_Appletun), - SPECIES_SPRITE(SILICOBRA, gMonBackPic_Silicobra), - SPECIES_SPRITE(SANDACONDA, gMonBackPic_Sandaconda), - SPECIES_SPRITE(CRAMORANT, gMonBackPic_Cramorant), - SPECIES_SPRITE(ARROKUDA, gMonBackPic_Arrokuda), - SPECIES_SPRITE(BARRASKEWDA, gMonBackPic_Barraskewda), - SPECIES_SPRITE(TOXEL, gMonBackPic_Toxel), - SPECIES_SPRITE(TOXTRICITY, gMonBackPic_Toxtricity), - SPECIES_SPRITE(SIZZLIPEDE, gMonBackPic_Sizzlipede), - SPECIES_SPRITE(CENTISKORCH, gMonBackPic_Centiskorch), - SPECIES_SPRITE(CLOBBOPUS, gMonBackPic_Clobbopus), - SPECIES_SPRITE(GRAPPLOCT, gMonBackPic_Grapploct), - SPECIES_SPRITE(SINISTEA, gMonBackPic_Sinistea), - SPECIES_SPRITE(POLTEAGEIST, gMonBackPic_Polteageist), - SPECIES_SPRITE(HATENNA, gMonBackPic_Hatenna), - SPECIES_SPRITE(HATTREM, gMonBackPic_Hattrem), - SPECIES_SPRITE(HATTERENE, gMonBackPic_Hatterene), - SPECIES_SPRITE(IMPIDIMP, gMonBackPic_Impidimp), - SPECIES_SPRITE(MORGREM, gMonBackPic_Morgrem), - SPECIES_SPRITE(GRIMMSNARL, gMonBackPic_Grimmsnarl), - SPECIES_SPRITE(OBSTAGOON, gMonBackPic_Obstagoon), - SPECIES_SPRITE(PERRSERKER, gMonBackPic_Perrserker), - SPECIES_SPRITE(CURSOLA, gMonBackPic_Cursola), - SPECIES_SPRITE(SIRFETCHD, gMonBackPic_Sirfetchd), - SPECIES_SPRITE(MR_RIME, gMonBackPic_MrRime), - SPECIES_SPRITE(RUNERIGUS, gMonBackPic_Runerigus), - SPECIES_SPRITE(MILCERY, gMonBackPic_Milcery), - SPECIES_SPRITE(ALCREMIE, gMonBackPic_Alcremie), - SPECIES_SPRITE(FALINKS, gMonBackPic_Falinks), - SPECIES_SPRITE(PINCURCHIN, gMonBackPic_Pincurchin), - SPECIES_SPRITE(SNOM, gMonBackPic_Snom), - SPECIES_SPRITE(FROSMOTH, gMonBackPic_Frosmoth), - SPECIES_SPRITE(STONJOURNER, gMonBackPic_Stonjourner), - SPECIES_SPRITE(EISCUE, gMonBackPic_Eiscue), - SPECIES_SPRITE(INDEEDEE, gMonBackPic_Indeedee), - SPECIES_SPRITE(MORPEKO, gMonBackPic_Morpeko), - SPECIES_SPRITE(CUFANT, gMonBackPic_Cufant), - SPECIES_SPRITE(COPPERAJAH, gMonBackPic_Copperajah), - SPECIES_SPRITE(DRACOZOLT, gMonBackPic_Dracozolt), - SPECIES_SPRITE(ARCTOZOLT, gMonBackPic_Arctozolt), - SPECIES_SPRITE(DRACOVISH, gMonBackPic_Dracovish), - SPECIES_SPRITE(ARCTOVISH, gMonBackPic_Arctovish), - SPECIES_SPRITE(DURALUDON, gMonBackPic_Duraludon), - SPECIES_SPRITE(DREEPY, gMonBackPic_Dreepy), - SPECIES_SPRITE(DRAKLOAK, gMonBackPic_Drakloak), - SPECIES_SPRITE(DRAGAPULT, gMonBackPic_Dragapult), - SPECIES_SPRITE(ZACIAN, gMonBackPic_Zacian), - SPECIES_SPRITE(ZAMAZENTA, gMonBackPic_Zamazenta), - SPECIES_SPRITE(ETERNATUS, gMonBackPic_Eternatus), - SPECIES_SPRITE(KUBFU, gMonBackPic_Kubfu), - SPECIES_SPRITE(URSHIFU, gMonBackPic_Urshifu), - SPECIES_SPRITE(ZARUDE, gMonBackPic_Zarude), - SPECIES_SPRITE(REGIELEKI, gMonBackPic_Regieleki), - SPECIES_SPRITE(REGIDRAGO, gMonBackPic_Regidrago), - SPECIES_SPRITE(GLASTRIER, gMonBackPic_Glastrier), - SPECIES_SPRITE(SPECTRIER, gMonBackPic_Spectrier), - SPECIES_SPRITE(CALYREX, gMonBackPic_Calyrex), - SPECIES_SPRITE(WYRDEER, gMonBackPic_Wyrdeer), - SPECIES_SPRITE(KLEAVOR, gMonBackPic_Kleavor), - SPECIES_SPRITE(URSALUNA, gMonBackPic_Ursaluna), - SPECIES_SPRITE(BASCULEGION, gMonBackPic_Basculegion), - SPECIES_SPRITE(SNEASLER, gMonBackPic_Sneasler), - SPECIES_SPRITE(OVERQWIL, gMonBackPic_Overqwil), - SPECIES_SPRITE(ENAMORUS, gMonBackPic_Enamorus), -#endif - - SPECIES_SPRITE(VENUSAUR_MEGA, gMonBackPic_VenusaurMega), - SPECIES_SPRITE(CHARIZARD_MEGA_X, gMonBackPic_CharizardMegaX), - SPECIES_SPRITE(CHARIZARD_MEGA_Y, gMonBackPic_CharizardMegaY), - SPECIES_SPRITE(BLASTOISE_MEGA, gMonBackPic_BlastoiseMega), - SPECIES_SPRITE(BEEDRILL_MEGA, gMonBackPic_BeedrillMega), - SPECIES_SPRITE(PIDGEOT_MEGA, gMonBackPic_PidgeotMega), - SPECIES_SPRITE(ALAKAZAM_MEGA, gMonBackPic_AlakazamMega), - SPECIES_SPRITE(SLOWBRO_MEGA, gMonBackPic_SlowbroMega), - SPECIES_SPRITE(GENGAR_MEGA, gMonBackPic_GengarMega), - SPECIES_SPRITE(KANGASKHAN_MEGA, gMonBackPic_KangaskhanMega), - SPECIES_SPRITE(PINSIR_MEGA, gMonBackPic_PinsirMega), - SPECIES_SPRITE(GYARADOS_MEGA, gMonBackPic_GyaradosMega), - SPECIES_SPRITE(AERODACTYL_MEGA, gMonBackPic_AerodactylMega), - SPECIES_SPRITE(MEWTWO_MEGA_X, gMonBackPic_MewtwoMegaX), - SPECIES_SPRITE(MEWTWO_MEGA_Y, gMonBackPic_MewtwoMegaY), - SPECIES_SPRITE(AMPHAROS_MEGA, gMonBackPic_AmpharosMega), - SPECIES_SPRITE(STEELIX_MEGA, gMonBackPic_SteelixMega), - SPECIES_SPRITE(SCIZOR_MEGA, gMonBackPic_ScizorMega), - SPECIES_SPRITE(HERACROSS_MEGA, gMonBackPic_HeracrossMega), - SPECIES_SPRITE(HOUNDOOM_MEGA, gMonBackPic_HoundoomMega), - SPECIES_SPRITE(TYRANITAR_MEGA, gMonBackPic_TyranitarMega), - SPECIES_SPRITE(SCEPTILE_MEGA, gMonBackPic_SceptileMega), - SPECIES_SPRITE(BLAZIKEN_MEGA, gMonBackPic_BlazikenMega), - SPECIES_SPRITE(SWAMPERT_MEGA, gMonBackPic_SwampertMega), - SPECIES_SPRITE(GARDEVOIR_MEGA, gMonBackPic_GardevoirMega), - SPECIES_SPRITE(SABLEYE_MEGA, gMonBackPic_SableyeMega), - SPECIES_SPRITE(MAWILE_MEGA, gMonBackPic_MawileMega), - SPECIES_SPRITE(AGGRON_MEGA, gMonBackPic_AggronMega), - SPECIES_SPRITE(MEDICHAM_MEGA, gMonBackPic_MedichamMega), - SPECIES_SPRITE(MANECTRIC_MEGA, gMonBackPic_ManectricMega), - SPECIES_SPRITE(SHARPEDO_MEGA, gMonBackPic_SharpedoMega), - SPECIES_SPRITE(CAMERUPT_MEGA, gMonBackPic_CameruptMega), - SPECIES_SPRITE(ALTARIA_MEGA, gMonBackPic_AltariaMega), - SPECIES_SPRITE(BANETTE_MEGA, gMonBackPic_BanetteMega), - SPECIES_SPRITE(ABSOL_MEGA, gMonBackPic_AbsolMega), - SPECIES_SPRITE(GLALIE_MEGA, gMonBackPic_GlalieMega), - SPECIES_SPRITE(SALAMENCE_MEGA, gMonBackPic_SalamenceMega), - SPECIES_SPRITE(METAGROSS_MEGA, gMonBackPic_MetagrossMega), - SPECIES_SPRITE(LATIAS_MEGA, gMonBackPic_LatiasMega), - SPECIES_SPRITE(LATIOS_MEGA, gMonBackPic_LatiosMega), -#if P_GEN_4_POKEMON == TRUE - SPECIES_SPRITE(LOPUNNY_MEGA, gMonBackPic_LopunnyMega), - SPECIES_SPRITE(GARCHOMP_MEGA, gMonBackPic_GarchompMega), - SPECIES_SPRITE(LUCARIO_MEGA, gMonBackPic_LucarioMega), - SPECIES_SPRITE(ABOMASNOW_MEGA, gMonBackPic_AbomasnowMega), - SPECIES_SPRITE(GALLADE_MEGA, gMonBackPic_GalladeMega), -#endif -#if P_GEN_5_POKEMON == TRUE - SPECIES_SPRITE(AUDINO_MEGA, gMonBackPic_AudinoMega), -#endif -#if P_GEN_6_POKEMON == TRUE - SPECIES_SPRITE(DIANCIE_MEGA, gMonBackPic_DiancieMega), -#endif - - SPECIES_SPRITE(RAYQUAZA_MEGA, gMonBackPic_RayquazaMega), - SPECIES_SPRITE(KYOGRE_PRIMAL, gMonBackPic_KyogrePrimal), - SPECIES_SPRITE(GROUDON_PRIMAL, gMonBackPic_GroudonPrimal), - - SPECIES_SPRITE(RATTATA_ALOLAN, gMonBackPic_RattataAlolan), - SPECIES_SPRITE(RATICATE_ALOLAN, gMonBackPic_RaticateAlolan), - SPECIES_SPRITE(RAICHU_ALOLAN, gMonBackPic_RaichuAlolan), - SPECIES_SPRITE(SANDSHREW_ALOLAN, gMonBackPic_SandshrewAlolan), - SPECIES_SPRITE(SANDSLASH_ALOLAN, gMonBackPic_SandslashAlolan), - SPECIES_SPRITE(VULPIX_ALOLAN, gMonBackPic_VulpixAlolan), - SPECIES_SPRITE(NINETALES_ALOLAN, gMonBackPic_NinetalesAlolan), - SPECIES_SPRITE(DIGLETT_ALOLAN, gMonBackPic_DiglettAlolan), - SPECIES_SPRITE(DUGTRIO_ALOLAN, gMonBackPic_DugtrioAlolan), - SPECIES_SPRITE(MEOWTH_ALOLAN, gMonBackPic_MeowthAlolan), - SPECIES_SPRITE(PERSIAN_ALOLAN, gMonBackPic_PersianAlolan), - SPECIES_SPRITE(GEODUDE_ALOLAN, gMonBackPic_GeodudeAlolan), - SPECIES_SPRITE(GRAVELER_ALOLAN, gMonBackPic_GravelerAlolan), - SPECIES_SPRITE(GOLEM_ALOLAN, gMonBackPic_GolemAlolan), - SPECIES_SPRITE(GRIMER_ALOLAN, gMonBackPic_GrimerAlolan), - SPECIES_SPRITE(MUK_ALOLAN, gMonBackPic_MukAlolan), - SPECIES_SPRITE(EXEGGUTOR_ALOLAN, gMonBackPic_ExeggutorAlolan), - SPECIES_SPRITE(MAROWAK_ALOLAN, gMonBackPic_MarowakAlolan), - - SPECIES_SPRITE(MEOWTH_GALARIAN, gMonBackPic_MeowthGalarian), - SPECIES_SPRITE(PONYTA_GALARIAN, gMonBackPic_PonytaGalarian), - SPECIES_SPRITE(RAPIDASH_GALARIAN, gMonBackPic_RapidashGalarian), - SPECIES_SPRITE(SLOWPOKE_GALARIAN, gMonBackPic_SlowpokeGalarian), - SPECIES_SPRITE(SLOWBRO_GALARIAN, gMonBackPic_SlowbroGalarian), - SPECIES_SPRITE(FARFETCHD_GALARIAN, gMonBackPic_FarfetchdGalarian), - SPECIES_SPRITE(WEEZING_GALARIAN, gMonBackPic_WeezingGalarian), - SPECIES_SPRITE(MR_MIME_GALARIAN, gMonBackPic_MrMimeGalarian), - SPECIES_SPRITE(ARTICUNO_GALARIAN, gMonBackPic_ArticunoGalarian), - SPECIES_SPRITE(ZAPDOS_GALARIAN, gMonBackPic_ZapdosGalarian), - SPECIES_SPRITE(MOLTRES_GALARIAN, gMonBackPic_MoltresGalarian), - SPECIES_SPRITE(SLOWKING_GALARIAN, gMonBackPic_SlowkingGalarian), - SPECIES_SPRITE(CORSOLA_GALARIAN, gMonBackPic_CorsolaGalarian), - SPECIES_SPRITE(ZIGZAGOON_GALARIAN, gMonBackPic_ZigzagoonGalarian), - SPECIES_SPRITE(LINOONE_GALARIAN, gMonBackPic_LinooneGalarian), -#if P_GEN_5_POKEMON == TRUE - SPECIES_SPRITE(DARUMAKA_GALARIAN, gMonBackPic_DarumakaGalarian), - SPECIES_SPRITE(DARMANITAN_GALARIAN, gMonBackPic_DarmanitanGalarian), - SPECIES_SPRITE(YAMASK_GALARIAN, gMonBackPic_YamaskGalarian), - SPECIES_SPRITE(STUNFISK_GALARIAN, gMonBackPic_StunfiskGalarian), -#endif - - SPECIES_SPRITE(GROWLITHE_HISUIAN, gMonBackPic_GrowlitheHisuian), - SPECIES_SPRITE(ARCANINE_HISUIAN, gMonBackPic_ArcanineHisuian), - SPECIES_SPRITE(VOLTORB_HISUIAN, gMonBackPic_VoltorbHisuian), - SPECIES_SPRITE(ELECTRODE_HISUIAN, gMonBackPic_ElectrodeHisuian), - SPECIES_SPRITE(TYPHLOSION_HISUIAN, gMonBackPic_TyphlosionHisuian), - SPECIES_SPRITE(QWILFISH_HISUIAN, gMonBackPic_QwilfishHisuian), - SPECIES_SPRITE(SNEASEL_HISUIAN, gMonBackPic_SneaselHisuian), -#if P_GEN_5_POKEMON == TRUE - SPECIES_SPRITE(SAMUROTT_HISUIAN, gMonBackPic_SamurottHisuian), - SPECIES_SPRITE(LILLIGANT_HISUIAN, gMonBackPic_LilligantHisuian), - SPECIES_SPRITE(ZORUA_HISUIAN, gMonBackPic_ZoruaHisuian), - SPECIES_SPRITE(ZOROARK_HISUIAN, gMonBackPic_ZoroarkHisuian), - SPECIES_SPRITE(BRAVIARY_HISUIAN, gMonBackPic_BraviaryHisuian), -#endif -#if P_GEN_6_POKEMON == TRUE - SPECIES_SPRITE(SLIGGOO_HISUIAN, gMonBackPic_SliggooHisuian), - SPECIES_SPRITE(GOODRA_HISUIAN, gMonBackPic_GoodraHisuian), - SPECIES_SPRITE(AVALUGG_HISUIAN, gMonBackPic_AvaluggHisuian), -#endif -#if P_GEN_8_POKEMON == TRUE - SPECIES_SPRITE(DECIDUEYE_HISUIAN, gMonBackPic_DecidueyeHisuian), -#endif - - SPECIES_SPRITE(PIKACHU_COSPLAY, gMonBackPic_PikachuCosplay), - SPECIES_SPRITE(PIKACHU_ROCK_STAR, gMonBackPic_PikachuRockStar), - SPECIES_SPRITE(PIKACHU_BELLE, gMonBackPic_PikachuBelle), - SPECIES_SPRITE(PIKACHU_POP_STAR, gMonBackPic_PikachuPopStar), - SPECIES_SPRITE(PIKACHU_PH_D, gMonBackPic_PikachuPhD), - SPECIES_SPRITE(PIKACHU_LIBRE, gMonBackPic_PikachuLibre), - - SPECIES_SPRITE(PIKACHU_ORIGINAL_CAP, gMonBackPic_PikachuOriginalCap), - SPECIES_SPRITE(PIKACHU_HOENN_CAP, gMonBackPic_PikachuHoennCap), - SPECIES_SPRITE(PIKACHU_SINNOH_CAP, gMonBackPic_PikachuSinnohCap), - SPECIES_SPRITE(PIKACHU_UNOVA_CAP, gMonBackPic_PikachuUnovaCap), - SPECIES_SPRITE(PIKACHU_KALOS_CAP, gMonBackPic_PikachuKalosCap), - SPECIES_SPRITE(PIKACHU_ALOLA_CAP, gMonBackPic_PikachuAlolaCap), - SPECIES_SPRITE(PIKACHU_PARTNER_CAP, gMonBackPic_PikachuPartnerCap), - SPECIES_SPRITE(PIKACHU_WORLD_CAP, gMonBackPic_PikachuWorldCap), - - SPECIES_SPRITE(PICHU_SPIKY_EARED, gMonBackPic_PichuSpikyEared), - - SPECIES_SPRITE(UNOWN_B, gMonBackPic_UnownB), - SPECIES_SPRITE(UNOWN_C, gMonBackPic_UnownC), - SPECIES_SPRITE(UNOWN_D, gMonBackPic_UnownD), - SPECIES_SPRITE(UNOWN_E, gMonBackPic_UnownE), - SPECIES_SPRITE(UNOWN_F, gMonBackPic_UnownF), - SPECIES_SPRITE(UNOWN_G, gMonBackPic_UnownG), - SPECIES_SPRITE(UNOWN_H, gMonBackPic_UnownH), - SPECIES_SPRITE(UNOWN_I, gMonBackPic_UnownI), - SPECIES_SPRITE(UNOWN_J, gMonBackPic_UnownJ), - SPECIES_SPRITE(UNOWN_K, gMonBackPic_UnownK), - SPECIES_SPRITE(UNOWN_L, gMonBackPic_UnownL), - SPECIES_SPRITE(UNOWN_M, gMonBackPic_UnownM), - SPECIES_SPRITE(UNOWN_N, gMonBackPic_UnownN), - SPECIES_SPRITE(UNOWN_O, gMonBackPic_UnownO), - SPECIES_SPRITE(UNOWN_P, gMonBackPic_UnownP), - SPECIES_SPRITE(UNOWN_Q, gMonBackPic_UnownQ), - SPECIES_SPRITE(UNOWN_R, gMonBackPic_UnownR), - SPECIES_SPRITE(UNOWN_S, gMonBackPic_UnownS), - SPECIES_SPRITE(UNOWN_T, gMonBackPic_UnownT), - SPECIES_SPRITE(UNOWN_U, gMonBackPic_UnownU), - SPECIES_SPRITE(UNOWN_V, gMonBackPic_UnownV), - SPECIES_SPRITE(UNOWN_W, gMonBackPic_UnownW), - SPECIES_SPRITE(UNOWN_X, gMonBackPic_UnownX), - SPECIES_SPRITE(UNOWN_Y, gMonBackPic_UnownY), - SPECIES_SPRITE(UNOWN_Z, gMonBackPic_UnownZ), - SPECIES_SPRITE(UNOWN_EMARK, gMonBackPic_UnownExclamationMark), - SPECIES_SPRITE(UNOWN_QMARK, gMonBackPic_UnownQuestionMark), - - SPECIES_SPRITE(CASTFORM_SUNNY, gMonBackPic_CastformSunny), - SPECIES_SPRITE(CASTFORM_RAINY, gMonBackPic_CastformRainy), - SPECIES_SPRITE(CASTFORM_SNOWY, gMonBackPic_CastformSnowy), - - SPECIES_SPRITE(DEOXYS_ATTACK, gMonBackPic_DeoxysAttack), - SPECIES_SPRITE(DEOXYS_DEFENSE, gMonBackPic_DeoxysDefense), - SPECIES_SPRITE(DEOXYS_SPEED, gMonBackPic_DeoxysSpeed), -#if P_GEN_4_POKEMON == TRUE - SPECIES_SPRITE(BURMY_SANDY_CLOAK, gMonBackPic_BurmySandyCloak), - SPECIES_SPRITE(BURMY_TRASH_CLOAK, gMonBackPic_BurmyTrashCloak), - - SPECIES_SPRITE(WORMADAM_SANDY_CLOAK, gMonBackPic_WormadamSandyCloak), - SPECIES_SPRITE(WORMADAM_TRASH_CLOAK, gMonBackPic_WormadamTrashCloak), - - SPECIES_SPRITE(CHERRIM_SUNSHINE, gMonBackPic_CherrimSunshine), - - SPECIES_SPRITE(SHELLOS_EAST_SEA, gMonBackPic_ShellosEastSea), - - SPECIES_SPRITE(GASTRODON_EAST_SEA, gMonBackPic_GastrodonEastSea), - - SPECIES_SPRITE(ROTOM_HEAT, gMonBackPic_RotomHeat), - SPECIES_SPRITE(ROTOM_WASH, gMonBackPic_RotomWash), - SPECIES_SPRITE(ROTOM_FROST, gMonBackPic_RotomFrost), - SPECIES_SPRITE(ROTOM_FAN, gMonBackPic_RotomFan), - SPECIES_SPRITE(ROTOM_MOW, gMonBackPic_RotomMow), - - SPECIES_SPRITE(DIALGA_ORIGIN, gMonBackPic_DialgaOrigin), - SPECIES_SPRITE(PALKIA_ORIGIN, gMonBackPic_PalkiaOrigin), - SPECIES_SPRITE(GIRATINA_ORIGIN, gMonBackPic_GiratinaOrigin), - - SPECIES_SPRITE(SHAYMIN_SKY, gMonBackPic_ShayminSky), - - SPECIES_SPRITE(ARCEUS_FIGHTING, gMonBackPic_Arceus), - SPECIES_SPRITE(ARCEUS_FLYING, gMonBackPic_Arceus), - SPECIES_SPRITE(ARCEUS_POISON, gMonBackPic_Arceus), - SPECIES_SPRITE(ARCEUS_GROUND, gMonBackPic_Arceus), - SPECIES_SPRITE(ARCEUS_ROCK, gMonBackPic_Arceus), - SPECIES_SPRITE(ARCEUS_BUG, gMonBackPic_Arceus), - SPECIES_SPRITE(ARCEUS_GHOST, gMonBackPic_Arceus), - SPECIES_SPRITE(ARCEUS_STEEL, gMonBackPic_Arceus), - SPECIES_SPRITE(ARCEUS_FIRE, gMonBackPic_Arceus), - SPECIES_SPRITE(ARCEUS_WATER, gMonBackPic_Arceus), - SPECIES_SPRITE(ARCEUS_GRASS, gMonBackPic_Arceus), - SPECIES_SPRITE(ARCEUS_ELECTRIC, gMonBackPic_Arceus), - SPECIES_SPRITE(ARCEUS_PSYCHIC, gMonBackPic_Arceus), - SPECIES_SPRITE(ARCEUS_ICE, gMonBackPic_Arceus), - SPECIES_SPRITE(ARCEUS_DRAGON, gMonBackPic_Arceus), - SPECIES_SPRITE(ARCEUS_DARK, gMonBackPic_Arceus), - SPECIES_SPRITE(ARCEUS_FAIRY, gMonBackPic_Arceus), -#endif - -#if P_GEN_5_POKEMON == TRUE - SPECIES_SPRITE(BASCULIN_BLUE_STRIPED, gMonBackPic_BasculinBlueStriped), - SPECIES_SPRITE(BASCULIN_WHITE_STRIPED, gMonBackPic_BasculinWhiteStriped), - - SPECIES_SPRITE(DARMANITAN_ZEN_MODE, gMonBackPic_DarmanitanZenMode), - SPECIES_SPRITE(DARMANITAN_ZEN_MODE_GALARIAN, gMonBackPic_DarmanitanZenModeGalarian), - - SPECIES_SPRITE(DEERLING_SUMMER, gMonBackPic_Deerling), - SPECIES_SPRITE(DEERLING_AUTUMN, gMonBackPic_Deerling), - SPECIES_SPRITE(DEERLING_WINTER, gMonBackPic_Deerling), - - SPECIES_SPRITE(SAWSBUCK_SUMMER, gMonBackPic_SawsbuckSummer), - SPECIES_SPRITE(SAWSBUCK_AUTUMN, gMonBackPic_SawsbuckAutumn), - SPECIES_SPRITE(SAWSBUCK_WINTER, gMonBackPic_SawsbuckWinter), - - SPECIES_SPRITE(TORNADUS_THERIAN, gMonBackPic_TornadusTherian), - SPECIES_SPRITE(THUNDURUS_THERIAN, gMonBackPic_ThundurusTherian), - SPECIES_SPRITE(LANDORUS_THERIAN, gMonBackPic_LandorusTherian), - - SPECIES_SPRITE(KYUREM_WHITE, gMonBackPic_KyuremWhite), - SPECIES_SPRITE(KYUREM_BLACK, gMonBackPic_KyuremBlack), - - SPECIES_SPRITE(KELDEO_RESOLUTE, gMonBackPic_KeldeoResolute), - - SPECIES_SPRITE(MELOETTA_PIROUETTE, gMonBackPic_MeloettaPirouette), - - SPECIES_SPRITE(GENESECT_DOUSE_DRIVE, gMonBackPic_Genesect), - SPECIES_SPRITE(GENESECT_SHOCK_DRIVE, gMonBackPic_Genesect), - SPECIES_SPRITE(GENESECT_BURN_DRIVE, gMonBackPic_Genesect), - SPECIES_SPRITE(GENESECT_CHILL_DRIVE, gMonBackPic_Genesect), -#endif - -#if P_GEN_6_POKEMON == TRUE - SPECIES_SPRITE(GRENINJA_BATTLE_BOND, gMonBackPic_Greninja), - SPECIES_SPRITE(GRENINJA_ASH, gMonBackPic_GreninjaAsh), - - SPECIES_SPRITE(VIVILLON_POLAR, gMonBackPic_VivillonPolar), - SPECIES_SPRITE(VIVILLON_TUNDRA, gMonBackPic_VivillonTundra), - SPECIES_SPRITE(VIVILLON_CONTINENTAL, gMonBackPic_VivillonContinental), - SPECIES_SPRITE(VIVILLON_GARDEN, gMonBackPic_VivillonGarden), - SPECIES_SPRITE(VIVILLON_ELEGANT, gMonBackPic_VivillonElegant), - SPECIES_SPRITE(VIVILLON_MEADOW, gMonBackPic_VivillonMeadow), - SPECIES_SPRITE(VIVILLON_MODERN, gMonBackPic_VivillonModern), - SPECIES_SPRITE(VIVILLON_MARINE, gMonBackPic_VivillonMarine), - SPECIES_SPRITE(VIVILLON_ARCHIPELAGO, gMonBackPic_VivillonArchipelago), - SPECIES_SPRITE(VIVILLON_HIGH_PLAINS, gMonBackPic_VivillonHighPlains), - SPECIES_SPRITE(VIVILLON_SANDSTORM, gMonBackPic_VivillonSandstorm), - SPECIES_SPRITE(VIVILLON_RIVER, gMonBackPic_VivillonRiver), - SPECIES_SPRITE(VIVILLON_MONSOON, gMonBackPic_VivillonMonsoon), - SPECIES_SPRITE(VIVILLON_SAVANNA, gMonBackPic_VivillonSavanna), - SPECIES_SPRITE(VIVILLON_SUN, gMonBackPic_VivillonSun), - SPECIES_SPRITE(VIVILLON_OCEAN, gMonBackPic_VivillonOcean), - SPECIES_SPRITE(VIVILLON_JUNGLE, gMonBackPic_VivillonJungle), - SPECIES_SPRITE(VIVILLON_FANCY, gMonBackPic_VivillonFancy), - SPECIES_SPRITE(VIVILLON_POKE_BALL, gMonBackPic_VivillonPokeBall), - - SPECIES_SPRITE(FLABEBE_YELLOW_FLOWER, gMonBackPic_Flabebe), - SPECIES_SPRITE(FLABEBE_ORANGE_FLOWER, gMonBackPic_Flabebe), - SPECIES_SPRITE(FLABEBE_BLUE_FLOWER, gMonBackPic_Flabebe), - SPECIES_SPRITE(FLABEBE_WHITE_FLOWER, gMonBackPic_Flabebe), - - SPECIES_SPRITE(FLOETTE_YELLOW_FLOWER, gMonBackPic_Floette), - SPECIES_SPRITE(FLOETTE_ORANGE_FLOWER, gMonBackPic_Floette), - SPECIES_SPRITE(FLOETTE_BLUE_FLOWER, gMonBackPic_Floette), - SPECIES_SPRITE(FLOETTE_WHITE_FLOWER, gMonBackPic_Floette), - SPECIES_SPRITE(FLOETTE_ETERNAL_FLOWER, gMonBackPic_FloetteEternalFlower), - - SPECIES_SPRITE(FLORGES_YELLOW_FLOWER, gMonBackPic_Florges), - SPECIES_SPRITE(FLORGES_ORANGE_FLOWER, gMonBackPic_Florges), - SPECIES_SPRITE(FLORGES_BLUE_FLOWER, gMonBackPic_Florges), - SPECIES_SPRITE(FLORGES_WHITE_FLOWER, gMonBackPic_Florges), - - SPECIES_SPRITE(FURFROU_HEART_TRIM, gMonBackPic_FurfrouHeartTrim), - SPECIES_SPRITE(FURFROU_STAR_TRIM, gMonBackPic_FurfrouStarTrim), - SPECIES_SPRITE(FURFROU_DIAMOND_TRIM, gMonBackPic_FurfrouDiamondTrim), - SPECIES_SPRITE(FURFROU_DEBUTANTE_TRIM, gMonBackPic_FurfrouDebutanteTrim), - SPECIES_SPRITE(FURFROU_MATRON_TRIM, gMonBackPic_FurfrouMatronTrim), - SPECIES_SPRITE(FURFROU_DANDY_TRIM, gMonBackPic_FurfrouDandyTrim), - SPECIES_SPRITE(FURFROU_LA_REINE_TRIM, gMonBackPic_FurfrouLaReineTrim), - SPECIES_SPRITE(FURFROU_KABUKI_TRIM, gMonBackPic_FurfrouKabukiTrim), - SPECIES_SPRITE(FURFROU_PHARAOH_TRIM, gMonBackPic_FurfrouPharaohTrim), - - SPECIES_SPRITE(MEOWSTIC_FEMALE, gMonBackPic_MeowsticFemale), - - SPECIES_SPRITE(AEGISLASH_BLADE, gMonBackPic_AegislashBlade), - - SPECIES_SPRITE(PUMPKABOO_SMALL, gMonBackPic_PumpkabooSmall), - SPECIES_SPRITE(PUMPKABOO_LARGE, gMonBackPic_PumpkabooLarge), - SPECIES_SPRITE(PUMPKABOO_SUPER, gMonBackPic_PumpkabooSuper), - - SPECIES_SPRITE(GOURGEIST_SMALL, gMonBackPic_GourgeistSmall), - SPECIES_SPRITE(GOURGEIST_LARGE, gMonBackPic_GourgeistLarge), - SPECIES_SPRITE(GOURGEIST_SUPER, gMonBackPic_GourgeistSuper), - - SPECIES_SPRITE(XERNEAS_ACTIVE, gMonBackPic_XerneasActive), - - SPECIES_SPRITE(ZYGARDE_10, gMonBackPic_Zygarde10), - SPECIES_SPRITE(ZYGARDE_10_POWER_CONSTRUCT, gMonBackPic_Zygarde10), - SPECIES_SPRITE(ZYGARDE_50_POWER_CONSTRUCT, gMonBackPic_Zygarde), - SPECIES_SPRITE(ZYGARDE_COMPLETE, gMonBackPic_ZygardeComplete), - - SPECIES_SPRITE(HOOPA_UNBOUND, gMonBackPic_HoopaUnbound), -#endif - -#if P_GEN_7_POKEMON == TRUE - SPECIES_SPRITE(ORICORIO_POM_POM, gMonBackPic_OricorioPomPom), - SPECIES_SPRITE(ORICORIO_PAU, gMonBackPic_OricorioPau), - SPECIES_SPRITE(ORICORIO_SENSU, gMonBackPic_OricorioSensu), - - SPECIES_SPRITE(ROCKRUFF_OWN_TEMPO, gMonBackPic_Rockruff), - - SPECIES_SPRITE(LYCANROC_MIDNIGHT, gMonBackPic_LycanrocMidnight), - SPECIES_SPRITE(LYCANROC_DUSK, gMonBackPic_LycanrocDusk), - - SPECIES_SPRITE(WISHIWASHI_SCHOOL, gMonBackPic_WishiwashiSchool), - - SPECIES_SPRITE(SILVALLY_FIGHTING, gMonBackPic_Silvally), - SPECIES_SPRITE(SILVALLY_FLYING, gMonBackPic_Silvally), - SPECIES_SPRITE(SILVALLY_POISON, gMonBackPic_Silvally), - SPECIES_SPRITE(SILVALLY_GROUND, gMonBackPic_Silvally), - SPECIES_SPRITE(SILVALLY_ROCK, gMonBackPic_Silvally), - SPECIES_SPRITE(SILVALLY_BUG, gMonBackPic_Silvally), - SPECIES_SPRITE(SILVALLY_GHOST, gMonBackPic_Silvally), - SPECIES_SPRITE(SILVALLY_STEEL, gMonBackPic_Silvally), - SPECIES_SPRITE(SILVALLY_FIRE, gMonBackPic_Silvally), - SPECIES_SPRITE(SILVALLY_WATER, gMonBackPic_Silvally), - SPECIES_SPRITE(SILVALLY_GRASS, gMonBackPic_Silvally), - SPECIES_SPRITE(SILVALLY_ELECTRIC, gMonBackPic_Silvally), - SPECIES_SPRITE(SILVALLY_PSYCHIC, gMonBackPic_Silvally), - SPECIES_SPRITE(SILVALLY_ICE, gMonBackPic_Silvally), - SPECIES_SPRITE(SILVALLY_DRAGON, gMonBackPic_Silvally), - SPECIES_SPRITE(SILVALLY_DARK, gMonBackPic_Silvally), - SPECIES_SPRITE(SILVALLY_FAIRY, gMonBackPic_Silvally), - - SPECIES_SPRITE(MINIOR_METEOR_ORANGE, gMonBackPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_YELLOW, gMonBackPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_GREEN, gMonBackPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_BLUE, gMonBackPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_INDIGO, gMonBackPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_VIOLET, gMonBackPic_Minior), - SPECIES_SPRITE(MINIOR_CORE_RED, gMonBackPic_MiniorCore), - SPECIES_SPRITE(MINIOR_CORE_ORANGE, gMonBackPic_MiniorCore), - SPECIES_SPRITE(MINIOR_CORE_YELLOW, gMonBackPic_MiniorCore), - SPECIES_SPRITE(MINIOR_CORE_GREEN, gMonBackPic_MiniorCore), - SPECIES_SPRITE(MINIOR_CORE_BLUE, gMonBackPic_MiniorCore), - SPECIES_SPRITE(MINIOR_CORE_INDIGO, gMonBackPic_MiniorCore), - SPECIES_SPRITE(MINIOR_CORE_VIOLET, gMonBackPic_MiniorCore), - - SPECIES_SPRITE(MIMIKYU_BUSTED, gMonBackPic_MimikyuBusted), - - SPECIES_SPRITE(NECROZMA_DUSK_MANE, gMonBackPic_NecrozmaDuskMane), - SPECIES_SPRITE(NECROZMA_DAWN_WINGS, gMonBackPic_NecrozmaDawnWings), - SPECIES_SPRITE(NECROZMA_ULTRA, gMonBackPic_NecrozmaUltra), - - SPECIES_SPRITE(MAGEARNA_ORIGINAL_COLOR, gMonBackPic_MagearnaOriginalColor), -#endif - -#if P_GEN_8_POKEMON == TRUE - SPECIES_SPRITE(CRAMORANT_GULPING, gMonBackPic_CramorantGulping), - SPECIES_SPRITE(CRAMORANT_GORGING, gMonBackPic_CramorantGorging), - - SPECIES_SPRITE(TOXTRICITY_LOW_KEY, gMonBackPic_ToxtricityLowKey), - - SPECIES_SPRITE(SINISTEA_ANTIQUE, gMonBackPic_Sinistea), - - SPECIES_SPRITE(POLTEAGEIST_ANTIQUE, gMonBackPic_Polteageist), - - SPECIES_SPRITE(ALCREMIE_RUBY_CREAM, gMonBackPic_AlcremieRubyCream), - SPECIES_SPRITE(ALCREMIE_MATCHA_CREAM, gMonBackPic_AlcremieMatchaCream), - SPECIES_SPRITE(ALCREMIE_MINT_CREAM, gMonBackPic_AlcremieMintCream), - SPECIES_SPRITE(ALCREMIE_LEMON_CREAM, gMonBackPic_AlcremieLemonCream), - SPECIES_SPRITE(ALCREMIE_SALTED_CREAM, gMonBackPic_AlcremieSaltedCream), - SPECIES_SPRITE(ALCREMIE_RUBY_SWIRL, gMonBackPic_AlcremieRubySwirl), - SPECIES_SPRITE(ALCREMIE_CARAMEL_SWIRL, gMonBackPic_AlcremieCaramelSwirl), - SPECIES_SPRITE(ALCREMIE_RAINBOW_SWIRL, gMonBackPic_AlcremieRainbowSwirl), - - SPECIES_SPRITE(EISCUE_NOICE_FACE, gMonBackPic_EiscueNoiceFace), - - SPECIES_SPRITE(INDEEDEE_FEMALE, gMonBackPic_IndeedeeFemale), - - SPECIES_SPRITE(MORPEKO_HANGRY, gMonBackPic_MorpekoHangry), - - SPECIES_SPRITE(ZACIAN_CROWNED_SWORD, gMonBackPic_ZacianCrownedSword), - - SPECIES_SPRITE(ZAMAZENTA_CROWNED_SHIELD, gMonBackPic_ZamazentaCrownedShield), - - SPECIES_SPRITE(ETERNATUS_ETERNAMAX, gMonBackPic_EternatusEternamax), - - SPECIES_SPRITE(URSHIFU_RAPID_STRIKE_STYLE, gMonBackPic_UrshifuRapidStrikeStyle), - - SPECIES_SPRITE(ZARUDE_DADA, gMonBackPic_ZarudeDada), - - SPECIES_SPRITE(CALYREX_ICE_RIDER, gMonBackPic_CalyrexIceRider), - SPECIES_SPRITE(CALYREX_SHADOW_RIDER, gMonBackPic_CalyrexShadowRider), - - SPECIES_SPRITE(ENAMORUS_THERIAN, gMonBackPic_EnamorusTherian), - - SPECIES_SPRITE(BASCULEGION_FEMALE, gMonBackPic_BasculegionFemale), -#endif - SPECIES_SPRITE(EGG, gMonFrontPic_Egg), -}; - -const struct CompressedSpriteSheet gMonBackPicTableFemale[NUM_SPECIES + 1] = -{ - SPECIES_SPRITE(VENUSAUR, gMonBackPic_VenusaurF), - SPECIES_SPRITE(BUTTERFREE, gMonBackPic_ButterfreeF), - SPECIES_SPRITE(RATTATA, gMonBackPic_RattataF), - SPECIES_SPRITE(RATICATE, gMonBackPic_RaticateF), - SPECIES_SPRITE(PIKACHU, gMonBackPic_PikachuF), - SPECIES_SPRITE(ZUBAT, gMonBackPic_ZubatF), - SPECIES_SPRITE(GOLBAT, gMonBackPic_GolbatF), - SPECIES_SPRITE(GLOOM, gMonBackPic_GloomF), - SPECIES_SPRITE(VILEPLUME, gMonBackPic_VileplumeF), - SPECIES_SPRITE(KADABRA, gMonBackPic_KadabraF), - SPECIES_SPRITE(ALAKAZAM, gMonBackPic_AlakazamF), - SPECIES_SPRITE(DODUO, gMonBackPic_DoduoF), - SPECIES_SPRITE(DODRIO, gMonBackPic_DodrioF), - SPECIES_SPRITE(HYPNO, gMonBackPic_HypnoF), - SPECIES_SPRITE(RHYHORN, gMonBackPic_RhyhornF), - SPECIES_SPRITE(RHYDON, gMonBackPic_RhydonF), - SPECIES_SPRITE(GOLDEEN, gMonBackPic_GoldeenF), - SPECIES_SPRITE(SEAKING, gMonBackPic_SeakingF), - SPECIES_SPRITE(MAGIKARP, gMonBackPic_MagikarpF), - SPECIES_SPRITE(GYARADOS, gMonBackPic_GyaradosF), - SPECIES_SPRITE(EEVEE, gMonBackPic_EeveeF), - SPECIES_SPRITE(MEGANIUM, gMonBackPic_MeganiumF), - SPECIES_SPRITE(LEDYBA, gMonBackPic_LedybaF), - SPECIES_SPRITE(LEDIAN, gMonBackPic_LedianF), - SPECIES_SPRITE(SUDOWOODO, gMonBackPic_SudowoodoF), - SPECIES_SPRITE(POLITOED, gMonBackPic_PolitoedF), - SPECIES_SPRITE(AIPOM, gMonBackPic_AipomF), - SPECIES_SPRITE(WOOPER, gMonBackPic_WooperF), - SPECIES_SPRITE(QUAGSIRE, gMonBackPic_QuagsireF), - SPECIES_SPRITE(MURKROW, gMonBackPic_MurkrowF), - SPECIES_SPRITE(WOBBUFFET, gMonBackPic_WobbuffetF), - SPECIES_SPRITE(GIRAFARIG, gMonBackPic_GirafarigF), - SPECIES_SPRITE(GLIGAR, gMonBackPic_GligarF), - SPECIES_SPRITE(STEELIX, gMonBackPic_SteelixF), - SPECIES_SPRITE(HERACROSS, gMonBackPic_HeracrossF), - SPECIES_SPRITE(SNEASEL, gMonBackPic_SneaselF), - SPECIES_SPRITE(URSARING, gMonBackPic_UrsaringF), - SPECIES_SPRITE(PILOSWINE, gMonBackPic_PiloswineF), - SPECIES_SPRITE(OCTILLERY, gMonBackPic_OctilleryF), - SPECIES_SPRITE(HOUNDOOM, gMonBackPic_HoundoomF), - SPECIES_SPRITE(DONPHAN, gMonBackPic_DonphanF), - SPECIES_SPRITE(TORCHIC, gMonBackPic_TorchicF), - SPECIES_SPRITE(COMBUSKEN, gMonBackPic_CombuskenF), - SPECIES_SPRITE(BLAZIKEN, gMonBackPic_BlazikenF), - SPECIES_SPRITE(BEAUTIFLY, gMonBackPic_BeautiflyF), - SPECIES_SPRITE(DUSTOX, gMonBackPic_DustoxF), - SPECIES_SPRITE(LUDICOLO, gMonBackPic_LudicoloF), - SPECIES_SPRITE(NUZLEAF, gMonBackPic_NuzleafF), - SPECIES_SPRITE(SHIFTRY, gMonBackPic_ShiftryF), - SPECIES_SPRITE(MEDITITE, gMonBackPic_MedititeF), - SPECIES_SPRITE(MEDICHAM, gMonBackPic_MedichamF), - SPECIES_SPRITE(ROSELIA, gMonBackPic_RoseliaF), - SPECIES_SPRITE(GULPIN, gMonBackPic_GulpinF), - SPECIES_SPRITE(SWALOT, gMonBackPic_SwalotF), - SPECIES_SPRITE(NUMEL, gMonBackPic_NumelF), - SPECIES_SPRITE(CAMERUPT, gMonBackPic_CameruptF), - SPECIES_SPRITE(MILOTIC, gMonBackPic_MiloticF), - SPECIES_SPRITE(RELICANTH, gMonBackPic_RelicanthF), - -#if P_GEN_4_POKEMON == TRUE - SPECIES_SPRITE(STARLY, gMonBackPic_StarlyF), - SPECIES_SPRITE(STARAVIA, gMonBackPic_StaraviaF), - SPECIES_SPRITE(STARAPTOR, gMonBackPic_Staraptor), - SPECIES_SPRITE(BIDOOF, gMonBackPic_BidoofF), - SPECIES_SPRITE(KRICKETOT, gMonBackPic_KricketotF), - SPECIES_SPRITE(KRICKETUNE, gMonBackPic_KricketuneF), - SPECIES_SPRITE(SHINX, gMonBackPic_ShinxF), - SPECIES_SPRITE(LUXIO, gMonBackPic_LuxioF), - SPECIES_SPRITE(LUXRAY, gMonBackPic_LuxrayF), - SPECIES_SPRITE(ROSERADE, gMonBackPic_RoseradeF), - SPECIES_SPRITE(BUIZEL, gMonBackPic_BuizelF), - SPECIES_SPRITE(FLOATZEL, gMonBackPic_FloatzelF), - SPECIES_SPRITE(AMBIPOM, gMonBackPic_AmbipomF), - SPECIES_SPRITE(GIBLE, gMonBackPic_GibleF), - SPECIES_SPRITE(GABITE, gMonBackPic_GabiteF), - SPECIES_SPRITE(CROAGUNK, gMonBackPic_CroagunkF), - SPECIES_SPRITE(TOXICROAK, gMonBackPic_ToxicroakF), - SPECIES_SPRITE(FINNEON, gMonBackPic_FinneonF), - SPECIES_SPRITE(LUMINEON, gMonBackPic_LumineonF), - SPECIES_SPRITE(SNOVER, gMonBackPic_SnoverF), - SPECIES_SPRITE(WEAVILE, gMonBackPic_WeavileF), - SPECIES_SPRITE(RHYPERIOR, gMonBackPic_RhyperiorF), -#endif -#if P_GEN_5_POKEMON == TRUE - SPECIES_SPRITE(UNFEZANT, gMonBackPic_UnfezantF), - SPECIES_SPRITE(FRILLISH, gMonBackPic_FrillishF), - SPECIES_SPRITE(JELLICENT, gMonBackPic_JellicentF), -#endif -#if P_GEN_6_POKEMON == TRUE - SPECIES_SPRITE(PYROAR, gMonBackPic_PyroarF), -#endif - - SPECIES_SPRITE(SNEASEL_HISUIAN, gMonBackPic_SneaselHisuianF), -}; diff --git a/src/data/pokemon_graphics/enemy_mon_elevation.h b/src/data/pokemon_graphics/enemy_mon_elevation.h deleted file mode 100644 index 007c6a90a7..0000000000 --- a/src/data/pokemon_graphics/enemy_mon_elevation.h +++ /dev/null @@ -1,271 +0,0 @@ -// This determines how much higher above the usual position the enemy Pokémon -// is during battle. Species that float or fly have nonzero values. -const u8 gEnemyMonElevation[NUM_SPECIES + 1] = -{ - [SPECIES_BUTTERFREE] = 10, - [SPECIES_BEEDRILL] = 9, - [SPECIES_PIDGEOT] = 5, - [SPECIES_FEAROW] = 6, - [SPECIES_ZUBAT] = 16, - [SPECIES_GOLBAT] = 10, - [SPECIES_VENOMOTH] = 16, - [SPECIES_GEODUDE] = 10, - [SPECIES_MAGNEMITE] = 17, - [SPECIES_MAGNETON] = 9, - [SPECIES_GASTLY] = 10, - [SPECIES_HAUNTER] = 11, - [SPECIES_KOFFING] = 14, - [SPECIES_WEEZING] = 6, - [SPECIES_AERODACTYL] = 9, - [SPECIES_ZAPDOS] = 8, - [SPECIES_MEW] = 11, - [SPECIES_LEDIAN] = 10, - [SPECIES_CROBAT] = 9, - [SPECIES_HOPPIP] = 15, - [SPECIES_SKIPLOOM] = 15, - [SPECIES_JUMPLUFF] = 9, - [SPECIES_YANMA] = 13, - [SPECIES_MURKROW] = 12, - [SPECIES_MISDREAVUS] = 12, - [SPECIES_UNOWN] = 8, - [SPECIES_GLIGAR] = 8, - [SPECIES_MANTINE] = 6, - [SPECIES_PORYGON2] = 9, - [SPECIES_LUGIA] = 6, - [SPECIES_HO_OH] = 6, - [SPECIES_CELEBI] = 15, - [SPECIES_BEAUTIFLY] = 10, - [SPECIES_DUSTOX] = 12, - [SPECIES_NINJASK] = 10, - [SPECIES_SHEDINJA] = 8, - [SPECIES_WINGULL] = 15, - [SPECIES_PELIPPER] = 8, - [SPECIES_MASQUERAIN] = 10, - [SPECIES_BALTOY] = 5, - [SPECIES_CLAYDOL] = 10, - [SPECIES_FLYGON] = 7, - [SPECIES_GLALIE] = 12, - [SPECIES_LUNATONE] = 13, - [SPECIES_SOLROCK] = 4, - [SPECIES_ALTARIA] = 8, - [SPECIES_DUSKULL] = 13, - [SPECIES_SHUPPET] = 14, - [SPECIES_BANETTE] = 8, - [SPECIES_CASTFORM] = 16, - [SPECIES_BELDUM] = 8, - [SPECIES_RAYQUAZA] = 6, - [SPECIES_LATIAS] = 12, - [SPECIES_LATIOS] = 6, - [SPECIES_JIRACHI] = 14, - [SPECIES_CHIMECHO] = 16, - // Gen 4 - [SPECIES_MOTHIM] = 10, - [SPECIES_COMBEE] = 8, - [SPECIES_VESPIQUEN] = 4, - [SPECIES_DRIFLOON] = 5, - [SPECIES_DRIFBLIM] = 7, - [SPECIES_MISMAGIUS] = 3, - [SPECIES_CHINGLING] = 5, - [SPECIES_BRONZONG] = 4, - [SPECIES_MAGNEZONE] = 4, - [SPECIES_TOGEKISS] = 14, - [SPECIES_YANMEGA] = 6, - [SPECIES_GLISCOR] = 9, - [SPECIES_PORYGON_Z] = 12, - [SPECIES_PROBOPASS] = 6, - [SPECIES_ROTOM] = 10, - [SPECIES_UXIE] = 6, - [SPECIES_MESPRIT] = 6, - [SPECIES_AZELF] = 6, - [SPECIES_CRESSELIA] = 3, - [SPECIES_DARKRAI] = 4, - // Gen 5 - [SPECIES_MUNNA] = 7, - [SPECIES_MUSHARNA] = 5, - [SPECIES_WOOBAT] = 19, - [SPECIES_SWOOBAT] = 12, - [SPECIES_PETILIL] = 7, - [SPECIES_SIGILYPH] = 7, - [SPECIES_YAMASK] = 10, - [SPECIES_ARCHEOPS] = 8, - [SPECIES_SOLOSIS] = 14, - [SPECIES_DUOSION] = 7, - [SPECIES_REUNICLUS] = 8, - [SPECIES_EMOLGA] = 19, - [SPECIES_TYNAMO] = 16, - [SPECIES_EELEKTRIK] = 8, - [SPECIES_EELEKTROSS] = 8, - [SPECIES_CRYOGONAL] = 3, - [SPECIES_BRAVIARY] = 8, - [SPECIES_HYDREIGON] = 3, - [SPECIES_VOLCARONA] = 6, - [SPECIES_TORNADUS] = 7, - [SPECIES_THUNDURUS] = 7, - [SPECIES_LANDORUS] = 7, - [SPECIES_MELOETTA] = 8, - // Gen 6 - [SPECIES_FLETCHINDER] = 9, - [SPECIES_TALONFLAME] = 7, - [SPECIES_VIVILLON] = 9, - [SPECIES_FLABEBE] = 6, - [SPECIES_FLOETTE] = 4, - [SPECIES_HONEDGE] = 4, - [SPECIES_DOUBLADE] = 5, - [SPECIES_AEGISLASH] = 3, - [SPECIES_SPRITZEE] = 14, - [SPECIES_INKAY] = 14, - [SPECIES_CARBINK] = 4, - [SPECIES_KLEFKI] = 5, - [SPECIES_PHANTUMP] = 5, - [SPECIES_NOIBAT] = 8, - [SPECIES_YVELTAL] = 5, - [SPECIES_HOOPA] = 13, - // Gen 7 - [SPECIES_VIKAVOLT] = 8, - [SPECIES_CUTIEFLY] = 10, - [SPECIES_RIBOMBEE] = 6, - [SPECIES_COMFEY] = 8, - [SPECIES_MINIOR] = 17, - [SPECIES_DHELMISE] = 2, - [SPECIES_TAPU_KOKO] = 9, - [SPECIES_TAPU_LELE] = 8, - [SPECIES_TAPU_BULU] = 5, - [SPECIES_TAPU_FINI] = 6, - [SPECIES_COSMOG] = 7, - [SPECIES_COSMOEM] = 3, - [SPECIES_LUNALA] = 6, - [SPECIES_NIHILEGO] = 6, - [SPECIES_KARTANA] = 3, - [SPECIES_NECROZMA] = 6, - [SPECIES_POIPOLE] = 9, - [SPECIES_NAGANADEL] = 7, - // Gen 8 - [SPECIES_CORVISQUIRE] = 10, - [SPECIES_ORBEETLE] = 8, - [SPECIES_FLAPPLE] = 9, - [SPECIES_SINISTEA] = 9, - [SPECIES_POLTEAGEIST] = 11, - [SPECIES_RUNERIGUS] = 5, - [SPECIES_MILCERY] = 10, - [SPECIES_FROSMOTH] = 7, - [SPECIES_DREEPY] = 5, - [SPECIES_DRAKLOAK] = 5, - [SPECIES_DRAGAPULT] = 3, - [SPECIES_ETERNATUS] = 4, - [SPECIES_REGIELEKI] = 8, - [SPECIES_REGIDRAGO] = 5, - // Megas - [SPECIES_BEEDRILL_MEGA] = 5, - [SPECIES_PIDGEOT_MEGA] = 8, - [SPECIES_ALAKAZAM_MEGA] = 7, - [SPECIES_PINSIR_MEGA] = 4, - [SPECIES_GYARADOS_MEGA] = 6, - [SPECIES_AERODACTYL_MEGA] = 7, - [SPECIES_MEWTWO_MEGA_Y] = 3, - [SPECIES_SHARPEDO_MEGA] = 1, - [SPECIES_ALTARIA_MEGA] = 6, - [SPECIES_BANETTE_MEGA] = 5, - [SPECIES_GLALIE_MEGA] = 8, - [SPECIES_METAGROSS_MEGA] = 4, - [SPECIES_LATIAS_MEGA] = 8, - [SPECIES_LATIOS_MEGA] = 8, - [SPECIES_RAYQUAZA_MEGA] = 4, - // Alolan Forms - [SPECIES_RAICHU_ALOLAN] = 4, - [SPECIES_GEODUDE_ALOLAN] = 16, - // Galarian Forms - [SPECIES_WEEZING_GALARIAN] = 6, - [SPECIES_ARTICUNO_GALARIAN] = 10, - [SPECIES_YAMASK_GALARIAN] = 4, - // Hisuian Forms - [SPECIES_VOLTORB_HISUIAN] = 1, - [SPECIES_ELECTRODE_HISUIAN] = 4, - [SPECIES_BRAVIARY_HISUIAN] = 3, - // Other Forms - [SPECIES_UNOWN_B] = 8, - [SPECIES_UNOWN_C] = 8, - [SPECIES_UNOWN_D] = 8, - [SPECIES_UNOWN_E] = 8, - [SPECIES_UNOWN_F] = 8, - [SPECIES_UNOWN_G] = 8, - [SPECIES_UNOWN_H] = 8, - [SPECIES_UNOWN_I] = 8, - [SPECIES_UNOWN_J] = 8, - [SPECIES_UNOWN_K] = 8, - [SPECIES_UNOWN_L] = 8, - [SPECIES_UNOWN_M] = 8, - [SPECIES_UNOWN_N] = 8, - [SPECIES_UNOWN_O] = 8, - [SPECIES_UNOWN_P] = 8, - [SPECIES_UNOWN_Q] = 8, - [SPECIES_UNOWN_R] = 8, - [SPECIES_UNOWN_S] = 8, - [SPECIES_UNOWN_T] = 8, - [SPECIES_UNOWN_U] = 8, - [SPECIES_UNOWN_V] = 8, - [SPECIES_UNOWN_W] = 8, - [SPECIES_UNOWN_X] = 8, - [SPECIES_UNOWN_Y] = 8, - [SPECIES_UNOWN_Z] = 8, - [SPECIES_UNOWN_QMARK] = 8, - [SPECIES_UNOWN_EMARK] = 8, - [SPECIES_CASTFORM_SUNNY] = 5, - [SPECIES_CASTFORM_RAINY] = 5, - [SPECIES_CASTFORM_SNOWY] = 5, - [SPECIES_ROTOM_HEAT] = 6, - [SPECIES_ROTOM_WASH] = 6, - [SPECIES_ROTOM_FROST] = 6, - [SPECIES_ROTOM_FAN] = 6, - [SPECIES_ROTOM_MOW] = 6, - [SPECIES_GIRATINA_ORIGIN] = 7, - [SPECIES_THUNDURUS_THERIAN] = 7, - [SPECIES_MELOETTA_PIROUETTE] = 5, - [SPECIES_VIVILLON_POLAR] = 9, - [SPECIES_VIVILLON_TUNDRA] = 9, - [SPECIES_VIVILLON_CONTINENTAL] = 9, - [SPECIES_VIVILLON_GARDEN] = 9, - [SPECIES_VIVILLON_ELEGANT] = 9, - [SPECIES_VIVILLON_MEADOW] = 9, - [SPECIES_VIVILLON_MODERN] = 9, - [SPECIES_VIVILLON_MARINE] = 9, - [SPECIES_VIVILLON_ARCHIPELAGO] = 9, - [SPECIES_VIVILLON_HIGH_PLAINS] = 9, - [SPECIES_VIVILLON_SANDSTORM] = 9, - [SPECIES_VIVILLON_RIVER] = 9, - [SPECIES_VIVILLON_MONSOON] = 9, - [SPECIES_VIVILLON_SAVANNA] = 9, - [SPECIES_VIVILLON_SUN] = 9, - [SPECIES_VIVILLON_OCEAN] = 9, - [SPECIES_VIVILLON_JUNGLE] = 9, - [SPECIES_VIVILLON_FANCY] = 9, - [SPECIES_VIVILLON_POKE_BALL] = 9, - [SPECIES_FLABEBE_YELLOW_FLOWER] = 6, - [SPECIES_FLABEBE_ORANGE_FLOWER] = 6, - [SPECIES_FLABEBE_BLUE_FLOWER] = 6, - [SPECIES_FLABEBE_WHITE_FLOWER] = 6, - [SPECIES_FLOETTE_YELLOW_FLOWER] = 4, - [SPECIES_FLOETTE_ORANGE_FLOWER] = 4, - [SPECIES_FLOETTE_BLUE_FLOWER] = 4, - [SPECIES_FLOETTE_WHITE_FLOWER] = 4, - [SPECIES_FLOETTE_ETERNAL_FLOWER] = 4, - [SPECIES_AEGISLASH_BLADE] = 3, - [SPECIES_HOOPA_UNBOUND] = 3, - [SPECIES_MINIOR_METEOR_ORANGE] = 17, - [SPECIES_MINIOR_METEOR_YELLOW] = 17, - [SPECIES_MINIOR_METEOR_GREEN] = 17, - [SPECIES_MINIOR_METEOR_BLUE] = 17, - [SPECIES_MINIOR_METEOR_INDIGO] = 17, - [SPECIES_MINIOR_METEOR_VIOLET] = 17, - [SPECIES_MINIOR_CORE_RED] = 17, - [SPECIES_MINIOR_CORE_ORANGE] = 17, - [SPECIES_MINIOR_CORE_YELLOW] = 17, - [SPECIES_MINIOR_CORE_GREEN] = 17, - [SPECIES_MINIOR_CORE_BLUE] = 17, - [SPECIES_MINIOR_CORE_INDIGO] = 17, - [SPECIES_MINIOR_CORE_VIOLET] = 17, - [SPECIES_NECROZMA_DAWN_WINGS] = 6, - [SPECIES_NECROZMA_ULTRA] = 5, - [SPECIES_SINISTEA_ANTIQUE] = 10, - [SPECIES_POLTEAGEIST_ANTIQUE] = 12, - [SPECIES_ETERNATUS_ETERNAMAX] = 13, -}; diff --git a/src/data/pokemon_graphics/footprint_table.h b/src/data/pokemon_graphics/footprint_table.h deleted file mode 100644 index 38737ac439..0000000000 --- a/src/data/pokemon_graphics/footprint_table.h +++ /dev/null @@ -1,913 +0,0 @@ -const u8 *const gMonFootprintTable[NUM_SPECIES + 1] = -{ - [SPECIES_NONE] = gMonFootprint_Bulbasaur, - [SPECIES_BULBASAUR] = gMonFootprint_Bulbasaur, - [SPECIES_IVYSAUR] = gMonFootprint_Ivysaur, - [SPECIES_VENUSAUR] = gMonFootprint_Venusaur, - [SPECIES_CHARMANDER] = gMonFootprint_Charmander, - [SPECIES_CHARMELEON] = gMonFootprint_Charmeleon, - [SPECIES_CHARIZARD] = gMonFootprint_Charizard, - [SPECIES_SQUIRTLE] = gMonFootprint_Squirtle, - [SPECIES_WARTORTLE] = gMonFootprint_Wartortle, - [SPECIES_BLASTOISE] = gMonFootprint_Blastoise, - [SPECIES_CATERPIE] = gMonFootprint_Caterpie, - [SPECIES_METAPOD] = gMonFootprint_Metapod, - [SPECIES_BUTTERFREE] = gMonFootprint_Butterfree, - [SPECIES_WEEDLE] = gMonFootprint_Weedle, - [SPECIES_KAKUNA] = gMonFootprint_Kakuna, - [SPECIES_BEEDRILL] = gMonFootprint_Beedrill, - [SPECIES_PIDGEY] = gMonFootprint_Pidgey, - [SPECIES_PIDGEOTTO] = gMonFootprint_Pidgeotto, - [SPECIES_PIDGEOT] = gMonFootprint_Pidgeot, - [SPECIES_RATTATA] = gMonFootprint_Rattata, - [SPECIES_RATICATE] = gMonFootprint_Raticate, - [SPECIES_SPEAROW] = gMonFootprint_Spearow, - [SPECIES_FEAROW] = gMonFootprint_Fearow, - [SPECIES_EKANS] = gMonFootprint_Ekans, - [SPECIES_ARBOK] = gMonFootprint_Arbok, - [SPECIES_PIKACHU] = gMonFootprint_Pikachu, - [SPECIES_RAICHU] = gMonFootprint_Raichu, - [SPECIES_SANDSHREW] = gMonFootprint_Sandshrew, - [SPECIES_SANDSLASH] = gMonFootprint_Sandslash, - [SPECIES_NIDORAN_F] = gMonFootprint_NidoranF, - [SPECIES_NIDORINA] = gMonFootprint_Nidorina, - [SPECIES_NIDOQUEEN] = gMonFootprint_Nidoqueen, - [SPECIES_NIDORAN_M] = gMonFootprint_NidoranM, - [SPECIES_NIDORINO] = gMonFootprint_Nidorino, - [SPECIES_NIDOKING] = gMonFootprint_Nidoking, - [SPECIES_CLEFAIRY] = gMonFootprint_Clefairy, - [SPECIES_CLEFABLE] = gMonFootprint_Clefable, - [SPECIES_VULPIX] = gMonFootprint_Vulpix, - [SPECIES_NINETALES] = gMonFootprint_Ninetales, - [SPECIES_JIGGLYPUFF] = gMonFootprint_Jigglypuff, - [SPECIES_WIGGLYTUFF] = gMonFootprint_Wigglytuff, - [SPECIES_ZUBAT] = gMonFootprint_Zubat, - [SPECIES_GOLBAT] = gMonFootprint_Golbat, - [SPECIES_ODDISH] = gMonFootprint_Oddish, - [SPECIES_GLOOM] = gMonFootprint_Gloom, - [SPECIES_VILEPLUME] = gMonFootprint_Vileplume, - [SPECIES_PARAS] = gMonFootprint_Paras, - [SPECIES_PARASECT] = gMonFootprint_Parasect, - [SPECIES_VENONAT] = gMonFootprint_Venonat, - [SPECIES_VENOMOTH] = gMonFootprint_Venomoth, - [SPECIES_DIGLETT] = gMonFootprint_Diglett, - [SPECIES_DUGTRIO] = gMonFootprint_Dugtrio, - [SPECIES_MEOWTH] = gMonFootprint_Meowth, - [SPECIES_PERSIAN] = gMonFootprint_Persian, - [SPECIES_PSYDUCK] = gMonFootprint_Psyduck, - [SPECIES_GOLDUCK] = gMonFootprint_Golduck, - [SPECIES_MANKEY] = gMonFootprint_Mankey, - [SPECIES_PRIMEAPE] = gMonFootprint_Primeape, - [SPECIES_GROWLITHE] = gMonFootprint_Growlithe, - [SPECIES_ARCANINE] = gMonFootprint_Arcanine, - [SPECIES_POLIWAG] = gMonFootprint_Poliwag, - [SPECIES_POLIWHIRL] = gMonFootprint_Poliwhirl, - [SPECIES_POLIWRATH] = gMonFootprint_Poliwrath, - [SPECIES_ABRA] = gMonFootprint_Abra, - [SPECIES_KADABRA] = gMonFootprint_Kadabra, - [SPECIES_ALAKAZAM] = gMonFootprint_Alakazam, - [SPECIES_MACHOP] = gMonFootprint_Machop, - [SPECIES_MACHOKE] = gMonFootprint_Machoke, - [SPECIES_MACHAMP] = gMonFootprint_Machamp, - [SPECIES_BELLSPROUT] = gMonFootprint_Bellsprout, - [SPECIES_WEEPINBELL] = gMonFootprint_Weepinbell, - [SPECIES_VICTREEBEL] = gMonFootprint_Victreebel, - [SPECIES_TENTACOOL] = gMonFootprint_Tentacool, - [SPECIES_TENTACRUEL] = gMonFootprint_Tentacruel, - [SPECIES_GEODUDE] = gMonFootprint_Geodude, - [SPECIES_GRAVELER] = gMonFootprint_Graveler, - [SPECIES_GOLEM] = gMonFootprint_Golem, - [SPECIES_PONYTA] = gMonFootprint_Ponyta, - [SPECIES_RAPIDASH] = gMonFootprint_Rapidash, - [SPECIES_SLOWPOKE] = gMonFootprint_Slowpoke, - [SPECIES_SLOWBRO] = gMonFootprint_Slowbro, - [SPECIES_MAGNEMITE] = gMonFootprint_Magnemite, - [SPECIES_MAGNETON] = gMonFootprint_Magneton, - [SPECIES_FARFETCHD] = gMonFootprint_Farfetchd, - [SPECIES_DODUO] = gMonFootprint_Doduo, - [SPECIES_DODRIO] = gMonFootprint_Dodrio, - [SPECIES_SEEL] = gMonFootprint_Seel, - [SPECIES_DEWGONG] = gMonFootprint_Dewgong, - [SPECIES_GRIMER] = gMonFootprint_Grimer, - [SPECIES_MUK] = gMonFootprint_Muk, - [SPECIES_SHELLDER] = gMonFootprint_Shellder, - [SPECIES_CLOYSTER] = gMonFootprint_Cloyster, - [SPECIES_GASTLY] = gMonFootprint_Gastly, - [SPECIES_HAUNTER] = gMonFootprint_Haunter, - [SPECIES_GENGAR] = gMonFootprint_Gengar, - [SPECIES_ONIX] = gMonFootprint_Onix, - [SPECIES_DROWZEE] = gMonFootprint_Drowzee, - [SPECIES_HYPNO] = gMonFootprint_Hypno, - [SPECIES_KRABBY] = gMonFootprint_Krabby, - [SPECIES_KINGLER] = gMonFootprint_Kingler, - [SPECIES_VOLTORB] = gMonFootprint_Voltorb, - [SPECIES_ELECTRODE] = gMonFootprint_Electrode, - [SPECIES_EXEGGCUTE] = gMonFootprint_Exeggcute, - [SPECIES_EXEGGUTOR] = gMonFootprint_Exeggutor, - [SPECIES_CUBONE] = gMonFootprint_Cubone, - [SPECIES_MAROWAK] = gMonFootprint_Marowak, - [SPECIES_HITMONLEE] = gMonFootprint_Hitmonlee, - [SPECIES_HITMONCHAN] = gMonFootprint_Hitmonchan, - [SPECIES_LICKITUNG] = gMonFootprint_Lickitung, - [SPECIES_KOFFING] = gMonFootprint_Koffing, - [SPECIES_WEEZING] = gMonFootprint_Weezing, - [SPECIES_RHYHORN] = gMonFootprint_Rhyhorn, - [SPECIES_RHYDON] = gMonFootprint_Rhydon, - [SPECIES_CHANSEY] = gMonFootprint_Chansey, - [SPECIES_TANGELA] = gMonFootprint_Tangela, - [SPECIES_KANGASKHAN] = gMonFootprint_Kangaskhan, - [SPECIES_HORSEA] = gMonFootprint_Horsea, - [SPECIES_SEADRA] = gMonFootprint_Seadra, - [SPECIES_GOLDEEN] = gMonFootprint_Goldeen, - [SPECIES_SEAKING] = gMonFootprint_Seaking, - [SPECIES_STARYU] = gMonFootprint_Staryu, - [SPECIES_STARMIE] = gMonFootprint_Starmie, - [SPECIES_MR_MIME] = gMonFootprint_MrMime, - [SPECIES_SCYTHER] = gMonFootprint_Scyther, - [SPECIES_JYNX] = gMonFootprint_Jynx, - [SPECIES_ELECTABUZZ] = gMonFootprint_Electabuzz, - [SPECIES_MAGMAR] = gMonFootprint_Magmar, - [SPECIES_PINSIR] = gMonFootprint_Pinsir, - [SPECIES_TAUROS] = gMonFootprint_Tauros, - [SPECIES_MAGIKARP] = gMonFootprint_Magikarp, - [SPECIES_GYARADOS] = gMonFootprint_Gyarados, - [SPECIES_LAPRAS] = gMonFootprint_Lapras, - [SPECIES_DITTO] = gMonFootprint_Ditto, - [SPECIES_EEVEE] = gMonFootprint_Eevee, - [SPECIES_VAPOREON] = gMonFootprint_Vaporeon, - [SPECIES_JOLTEON] = gMonFootprint_Jolteon, - [SPECIES_FLAREON] = gMonFootprint_Flareon, - [SPECIES_PORYGON] = gMonFootprint_Porygon, - [SPECIES_OMANYTE] = gMonFootprint_Omanyte, - [SPECIES_OMASTAR] = gMonFootprint_Omastar, - [SPECIES_KABUTO] = gMonFootprint_Kabuto, - [SPECIES_KABUTOPS] = gMonFootprint_Kabutops, - [SPECIES_AERODACTYL] = gMonFootprint_Aerodactyl, - [SPECIES_SNORLAX] = gMonFootprint_Snorlax, - [SPECIES_ARTICUNO] = gMonFootprint_Articuno, - [SPECIES_ZAPDOS] = gMonFootprint_Zapdos, - [SPECIES_MOLTRES] = gMonFootprint_Moltres, - [SPECIES_DRATINI] = gMonFootprint_Dratini, - [SPECIES_DRAGONAIR] = gMonFootprint_Dragonair, - [SPECIES_DRAGONITE] = gMonFootprint_Dragonite, - [SPECIES_MEWTWO] = gMonFootprint_Mewtwo, - [SPECIES_MEW] = gMonFootprint_Mew, - [SPECIES_CHIKORITA] = gMonFootprint_Chikorita, - [SPECIES_BAYLEEF] = gMonFootprint_Bayleef, - [SPECIES_MEGANIUM] = gMonFootprint_Meganium, - [SPECIES_CYNDAQUIL] = gMonFootprint_Cyndaquil, - [SPECIES_QUILAVA] = gMonFootprint_Quilava, - [SPECIES_TYPHLOSION] = gMonFootprint_Typhlosion, - [SPECIES_TOTODILE] = gMonFootprint_Totodile, - [SPECIES_CROCONAW] = gMonFootprint_Croconaw, - [SPECIES_FERALIGATR] = gMonFootprint_Feraligatr, - [SPECIES_SENTRET] = gMonFootprint_Sentret, - [SPECIES_FURRET] = gMonFootprint_Furret, - [SPECIES_HOOTHOOT] = gMonFootprint_Hoothoot, - [SPECIES_NOCTOWL] = gMonFootprint_Noctowl, - [SPECIES_LEDYBA] = gMonFootprint_Ledyba, - [SPECIES_LEDIAN] = gMonFootprint_Ledian, - [SPECIES_SPINARAK] = gMonFootprint_Spinarak, - [SPECIES_ARIADOS] = gMonFootprint_Ariados, - [SPECIES_CROBAT] = gMonFootprint_Crobat, - [SPECIES_CHINCHOU] = gMonFootprint_Chinchou, - [SPECIES_LANTURN] = gMonFootprint_Lanturn, - [SPECIES_PICHU] = gMonFootprint_Pichu, - [SPECIES_CLEFFA] = gMonFootprint_Cleffa, - [SPECIES_IGGLYBUFF] = gMonFootprint_Igglybuff, - [SPECIES_TOGEPI] = gMonFootprint_Togepi, - [SPECIES_TOGETIC] = gMonFootprint_Togetic, - [SPECIES_NATU] = gMonFootprint_Natu, - [SPECIES_XATU] = gMonFootprint_Xatu, - [SPECIES_MAREEP] = gMonFootprint_Mareep, - [SPECIES_FLAAFFY] = gMonFootprint_Flaaffy, - [SPECIES_AMPHAROS] = gMonFootprint_Ampharos, - [SPECIES_BELLOSSOM] = gMonFootprint_Bellossom, - [SPECIES_MARILL] = gMonFootprint_Marill, - [SPECIES_AZUMARILL] = gMonFootprint_Azumarill, - [SPECIES_SUDOWOODO] = gMonFootprint_Sudowoodo, - [SPECIES_POLITOED] = gMonFootprint_Politoed, - [SPECIES_HOPPIP] = gMonFootprint_Hoppip, - [SPECIES_SKIPLOOM] = gMonFootprint_Skiploom, - [SPECIES_JUMPLUFF] = gMonFootprint_Jumpluff, - [SPECIES_AIPOM] = gMonFootprint_Aipom, - [SPECIES_SUNKERN] = gMonFootprint_Sunkern, - [SPECIES_SUNFLORA] = gMonFootprint_Sunflora, - [SPECIES_YANMA] = gMonFootprint_Yanma, - [SPECIES_WOOPER] = gMonFootprint_Wooper, - [SPECIES_QUAGSIRE] = gMonFootprint_Quagsire, - [SPECIES_ESPEON] = gMonFootprint_Espeon, - [SPECIES_UMBREON] = gMonFootprint_Umbreon, - [SPECIES_MURKROW] = gMonFootprint_Murkrow, - [SPECIES_SLOWKING] = gMonFootprint_Slowking, - [SPECIES_MISDREAVUS] = gMonFootprint_Misdreavus, - [SPECIES_UNOWN] = gMonFootprint_Unown, - [SPECIES_WOBBUFFET] = gMonFootprint_Wobbuffet, - [SPECIES_GIRAFARIG] = gMonFootprint_Girafarig, - [SPECIES_PINECO] = gMonFootprint_Pineco, - [SPECIES_FORRETRESS] = gMonFootprint_Forretress, - [SPECIES_DUNSPARCE] = gMonFootprint_Dunsparce, - [SPECIES_GLIGAR] = gMonFootprint_Gligar, - [SPECIES_STEELIX] = gMonFootprint_Steelix, - [SPECIES_SNUBBULL] = gMonFootprint_Snubbull, - [SPECIES_GRANBULL] = gMonFootprint_Granbull, - [SPECIES_QWILFISH] = gMonFootprint_Qwilfish, - [SPECIES_SCIZOR] = gMonFootprint_Scizor, - [SPECIES_SHUCKLE] = gMonFootprint_Shuckle, - [SPECIES_HERACROSS] = gMonFootprint_Heracross, - [SPECIES_SNEASEL] = gMonFootprint_Sneasel, - [SPECIES_TEDDIURSA] = gMonFootprint_Teddiursa, - [SPECIES_URSARING] = gMonFootprint_Ursaring, - [SPECIES_SLUGMA] = gMonFootprint_Slugma, - [SPECIES_MAGCARGO] = gMonFootprint_Magcargo, - [SPECIES_SWINUB] = gMonFootprint_Swinub, - [SPECIES_PILOSWINE] = gMonFootprint_Piloswine, - [SPECIES_CORSOLA] = gMonFootprint_Corsola, - [SPECIES_REMORAID] = gMonFootprint_Remoraid, - [SPECIES_OCTILLERY] = gMonFootprint_Octillery, - [SPECIES_DELIBIRD] = gMonFootprint_Delibird, - [SPECIES_MANTINE] = gMonFootprint_Mantine, - [SPECIES_SKARMORY] = gMonFootprint_Skarmory, - [SPECIES_HOUNDOUR] = gMonFootprint_Houndour, - [SPECIES_HOUNDOOM] = gMonFootprint_Houndoom, - [SPECIES_KINGDRA] = gMonFootprint_Kingdra, - [SPECIES_PHANPY] = gMonFootprint_Phanpy, - [SPECIES_DONPHAN] = gMonFootprint_Donphan, - [SPECIES_PORYGON2] = gMonFootprint_Porygon2, - [SPECIES_STANTLER] = gMonFootprint_Stantler, - [SPECIES_SMEARGLE] = gMonFootprint_Smeargle, - [SPECIES_TYROGUE] = gMonFootprint_Tyrogue, - [SPECIES_HITMONTOP] = gMonFootprint_Hitmontop, - [SPECIES_SMOOCHUM] = gMonFootprint_Smoochum, - [SPECIES_ELEKID] = gMonFootprint_Elekid, - [SPECIES_MAGBY] = gMonFootprint_Magby, - [SPECIES_MILTANK] = gMonFootprint_Miltank, - [SPECIES_BLISSEY] = gMonFootprint_Blissey, - [SPECIES_RAIKOU] = gMonFootprint_Raikou, - [SPECIES_ENTEI] = gMonFootprint_Entei, - [SPECIES_SUICUNE] = gMonFootprint_Suicune, - [SPECIES_LARVITAR] = gMonFootprint_Larvitar, - [SPECIES_PUPITAR] = gMonFootprint_Pupitar, - [SPECIES_TYRANITAR] = gMonFootprint_Tyranitar, - [SPECIES_LUGIA] = gMonFootprint_Lugia, - [SPECIES_HO_OH] = gMonFootprint_HoOh, - [SPECIES_CELEBI] = gMonFootprint_Celebi, - [SPECIES_TREECKO] = gMonFootprint_Treecko, - [SPECIES_GROVYLE] = gMonFootprint_Grovyle, - [SPECIES_SCEPTILE] = gMonFootprint_Sceptile, - [SPECIES_TORCHIC] = gMonFootprint_Torchic, - [SPECIES_COMBUSKEN] = gMonFootprint_Combusken, - [SPECIES_BLAZIKEN] = gMonFootprint_Blaziken, - [SPECIES_MUDKIP] = gMonFootprint_Mudkip, - [SPECIES_MARSHTOMP] = gMonFootprint_Marshtomp, - [SPECIES_SWAMPERT] = gMonFootprint_Swampert, - [SPECIES_POOCHYENA] = gMonFootprint_Poochyena, - [SPECIES_MIGHTYENA] = gMonFootprint_Mightyena, - [SPECIES_ZIGZAGOON] = gMonFootprint_Zigzagoon, - [SPECIES_LINOONE] = gMonFootprint_Linoone, - [SPECIES_WURMPLE] = gMonFootprint_Wurmple, - [SPECIES_SILCOON] = gMonFootprint_Silcoon, - [SPECIES_BEAUTIFLY] = gMonFootprint_Beautifly, - [SPECIES_CASCOON] = gMonFootprint_Cascoon, - [SPECIES_DUSTOX] = gMonFootprint_Dustox, - [SPECIES_LOTAD] = gMonFootprint_Lotad, - [SPECIES_LOMBRE] = gMonFootprint_Lombre, - [SPECIES_LUDICOLO] = gMonFootprint_Ludicolo, - [SPECIES_SEEDOT] = gMonFootprint_Seedot, - [SPECIES_NUZLEAF] = gMonFootprint_Nuzleaf, - [SPECIES_SHIFTRY] = gMonFootprint_Shiftry, - [SPECIES_NINCADA] = gMonFootprint_Nincada, - [SPECIES_NINJASK] = gMonFootprint_Ninjask, - [SPECIES_SHEDINJA] = gMonFootprint_Shedinja, - [SPECIES_TAILLOW] = gMonFootprint_Taillow, - [SPECIES_SWELLOW] = gMonFootprint_Swellow, - [SPECIES_SHROOMISH] = gMonFootprint_Shroomish, - [SPECIES_BRELOOM] = gMonFootprint_Breloom, - [SPECIES_SPINDA] = gMonFootprint_Spinda, - [SPECIES_WINGULL] = gMonFootprint_Wingull, - [SPECIES_PELIPPER] = gMonFootprint_Pelipper, - [SPECIES_SURSKIT] = gMonFootprint_Surskit, - [SPECIES_MASQUERAIN] = gMonFootprint_Masquerain, - [SPECIES_WAILMER] = gMonFootprint_Wailmer, - [SPECIES_WAILORD] = gMonFootprint_Wailord, - [SPECIES_SKITTY] = gMonFootprint_Skitty, - [SPECIES_DELCATTY] = gMonFootprint_Delcatty, - [SPECIES_KECLEON] = gMonFootprint_Kecleon, - [SPECIES_BALTOY] = gMonFootprint_Baltoy, - [SPECIES_CLAYDOL] = gMonFootprint_Claydol, - [SPECIES_NOSEPASS] = gMonFootprint_Nosepass, - [SPECIES_TORKOAL] = gMonFootprint_Torkoal, - [SPECIES_SABLEYE] = gMonFootprint_Sableye, - [SPECIES_BARBOACH] = gMonFootprint_Barboach, - [SPECIES_WHISCASH] = gMonFootprint_Whiscash, - [SPECIES_LUVDISC] = gMonFootprint_Luvdisc, - [SPECIES_CORPHISH] = gMonFootprint_Corphish, - [SPECIES_CRAWDAUNT] = gMonFootprint_Crawdaunt, - [SPECIES_FEEBAS] = gMonFootprint_Feebas, - [SPECIES_MILOTIC] = gMonFootprint_Milotic, - [SPECIES_CARVANHA] = gMonFootprint_Carvanha, - [SPECIES_SHARPEDO] = gMonFootprint_Sharpedo, - [SPECIES_TRAPINCH] = gMonFootprint_Trapinch, - [SPECIES_VIBRAVA] = gMonFootprint_Vibrava, - [SPECIES_FLYGON] = gMonFootprint_Flygon, - [SPECIES_MAKUHITA] = gMonFootprint_Makuhita, - [SPECIES_HARIYAMA] = gMonFootprint_Hariyama, - [SPECIES_ELECTRIKE] = gMonFootprint_Electrike, - [SPECIES_MANECTRIC] = gMonFootprint_Manectric, - [SPECIES_NUMEL] = gMonFootprint_Numel, - [SPECIES_CAMERUPT] = gMonFootprint_Camerupt, - [SPECIES_SPHEAL] = gMonFootprint_Spheal, - [SPECIES_SEALEO] = gMonFootprint_Sealeo, - [SPECIES_WALREIN] = gMonFootprint_Walrein, - [SPECIES_CACNEA] = gMonFootprint_Cacnea, - [SPECIES_CACTURNE] = gMonFootprint_Cacturne, - [SPECIES_SNORUNT] = gMonFootprint_Snorunt, - [SPECIES_GLALIE] = gMonFootprint_Glalie, - [SPECIES_LUNATONE] = gMonFootprint_Lunatone, - [SPECIES_SOLROCK] = gMonFootprint_Solrock, - [SPECIES_AZURILL] = gMonFootprint_Azurill, - [SPECIES_SPOINK] = gMonFootprint_Spoink, - [SPECIES_GRUMPIG] = gMonFootprint_Grumpig, - [SPECIES_PLUSLE] = gMonFootprint_Plusle, - [SPECIES_MINUN] = gMonFootprint_Minun, - [SPECIES_MAWILE] = gMonFootprint_Mawile, - [SPECIES_MEDITITE] = gMonFootprint_Meditite, - [SPECIES_MEDICHAM] = gMonFootprint_Medicham, - [SPECIES_SWABLU] = gMonFootprint_Swablu, - [SPECIES_ALTARIA] = gMonFootprint_Altaria, - [SPECIES_WYNAUT] = gMonFootprint_Wynaut, - [SPECIES_DUSKULL] = gMonFootprint_Duskull, - [SPECIES_DUSCLOPS] = gMonFootprint_Dusclops, - [SPECIES_ROSELIA] = gMonFootprint_Roselia, - [SPECIES_SLAKOTH] = gMonFootprint_Slakoth, - [SPECIES_VIGOROTH] = gMonFootprint_Vigoroth, - [SPECIES_SLAKING] = gMonFootprint_Slaking, - [SPECIES_GULPIN] = gMonFootprint_Gulpin, - [SPECIES_SWALOT] = gMonFootprint_Swalot, - [SPECIES_TROPIUS] = gMonFootprint_Tropius, - [SPECIES_WHISMUR] = gMonFootprint_Whismur, - [SPECIES_LOUDRED] = gMonFootprint_Loudred, - [SPECIES_EXPLOUD] = gMonFootprint_Exploud, - [SPECIES_CLAMPERL] = gMonFootprint_Clamperl, - [SPECIES_HUNTAIL] = gMonFootprint_Huntail, - [SPECIES_GOREBYSS] = gMonFootprint_Gorebyss, - [SPECIES_ABSOL] = gMonFootprint_Absol, - [SPECIES_SHUPPET] = gMonFootprint_Shuppet, - [SPECIES_BANETTE] = gMonFootprint_Banette, - [SPECIES_SEVIPER] = gMonFootprint_Seviper, - [SPECIES_ZANGOOSE] = gMonFootprint_Zangoose, - [SPECIES_RELICANTH] = gMonFootprint_Relicanth, - [SPECIES_ARON] = gMonFootprint_Aron, - [SPECIES_LAIRON] = gMonFootprint_Lairon, - [SPECIES_AGGRON] = gMonFootprint_Aggron, - [SPECIES_CASTFORM] = gMonFootprint_Castform, - [SPECIES_VOLBEAT] = gMonFootprint_Volbeat, - [SPECIES_ILLUMISE] = gMonFootprint_Illumise, - [SPECIES_LILEEP] = gMonFootprint_Lileep, - [SPECIES_CRADILY] = gMonFootprint_Cradily, - [SPECIES_ANORITH] = gMonFootprint_Anorith, - [SPECIES_ARMALDO] = gMonFootprint_Armaldo, - [SPECIES_RALTS] = gMonFootprint_Ralts, - [SPECIES_KIRLIA] = gMonFootprint_Kirlia, - [SPECIES_GARDEVOIR] = gMonFootprint_Gardevoir, - [SPECIES_BAGON] = gMonFootprint_Bagon, - [SPECIES_SHELGON] = gMonFootprint_Shelgon, - [SPECIES_SALAMENCE] = gMonFootprint_Salamence, - [SPECIES_BELDUM] = gMonFootprint_Beldum, - [SPECIES_METANG] = gMonFootprint_Metang, - [SPECIES_METAGROSS] = gMonFootprint_Metagross, - [SPECIES_REGIROCK] = gMonFootprint_Regirock, - [SPECIES_REGICE] = gMonFootprint_Regice, - [SPECIES_REGISTEEL] = gMonFootprint_Registeel, - [SPECIES_KYOGRE] = gMonFootprint_Kyogre, - [SPECIES_GROUDON] = gMonFootprint_Groudon, - [SPECIES_RAYQUAZA] = gMonFootprint_Rayquaza, - [SPECIES_LATIAS] = gMonFootprint_Latias, - [SPECIES_LATIOS] = gMonFootprint_Latios, - [SPECIES_JIRACHI] = gMonFootprint_Jirachi, - [SPECIES_DEOXYS] = gMonFootprint_Deoxys, - [SPECIES_CHIMECHO] = gMonFootprint_Chimecho, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_TURTWIG] = gMonFootprint_Turtwig, - [SPECIES_GROTLE] = gMonFootprint_Grotle, - [SPECIES_TORTERRA] = gMonFootprint_Torterra, - [SPECIES_CHIMCHAR] = gMonFootprint_Chimchar, - [SPECIES_MONFERNO] = gMonFootprint_Monferno, - [SPECIES_INFERNAPE] = gMonFootprint_Infernape, - [SPECIES_PIPLUP] = gMonFootprint_Piplup, - [SPECIES_PRINPLUP] = gMonFootprint_Prinplup, - [SPECIES_EMPOLEON] = gMonFootprint_Empoleon, - [SPECIES_STARLY] = gMonFootprint_Starly, - [SPECIES_STARAVIA] = gMonFootprint_Staravia, - [SPECIES_STARAPTOR] = gMonFootprint_Staraptor, - [SPECIES_BIDOOF] = gMonFootprint_Bidoof, - [SPECIES_BIBAREL] = gMonFootprint_Bibarel, - [SPECIES_KRICKETOT] = gMonFootprint_Kricketot, - [SPECIES_KRICKETUNE] = gMonFootprint_Kricketune, - [SPECIES_SHINX] = gMonFootprint_Shinx, - [SPECIES_LUXIO] = gMonFootprint_Luxio, - [SPECIES_LUXRAY] = gMonFootprint_Luxray, - [SPECIES_BUDEW] = gMonFootprint_Budew, - [SPECIES_ROSERADE] = gMonFootprint_Roserade, - [SPECIES_CRANIDOS] = gMonFootprint_Cranidos, - [SPECIES_RAMPARDOS] = gMonFootprint_Rampardos, - [SPECIES_SHIELDON] = gMonFootprint_Shieldon, - [SPECIES_BASTIODON] = gMonFootprint_Bastiodon, - [SPECIES_BURMY] = gMonFootprint_Burmy, - [SPECIES_WORMADAM] = gMonFootprint_Wormadam, - [SPECIES_MOTHIM] = gMonFootprint_Mothim, - [SPECIES_COMBEE] = gMonFootprint_Combee, - [SPECIES_VESPIQUEN] = gMonFootprint_Vespiquen, - [SPECIES_PACHIRISU] = gMonFootprint_Pachirisu, - [SPECIES_BUIZEL] = gMonFootprint_Buizel, - [SPECIES_FLOATZEL] = gMonFootprint_Floatzel, - [SPECIES_CHERUBI] = gMonFootprint_Cherubi, - [SPECIES_CHERRIM] = gMonFootprint_Cherrim, - [SPECIES_SHELLOS] = gMonFootprint_Shellos, - [SPECIES_GASTRODON] = gMonFootprint_Gastrodon, - [SPECIES_AMBIPOM] = gMonFootprint_Ambipom, - [SPECIES_DRIFLOON] = gMonFootprint_Drifloon, - [SPECIES_DRIFBLIM] = gMonFootprint_Drifblim, - [SPECIES_BUNEARY] = gMonFootprint_Buneary, - [SPECIES_LOPUNNY] = gMonFootprint_Lopunny, - [SPECIES_MISMAGIUS] = gMonFootprint_Mismagius, - [SPECIES_HONCHKROW] = gMonFootprint_Honchkrow, - [SPECIES_GLAMEOW] = gMonFootprint_Glameow, - [SPECIES_PURUGLY] = gMonFootprint_Purugly, - [SPECIES_CHINGLING] = gMonFootprint_Chingling, - [SPECIES_STUNKY] = gMonFootprint_Stunky, - [SPECIES_SKUNTANK] = gMonFootprint_Skuntank, - [SPECIES_BRONZOR] = gMonFootprint_Bronzor, - [SPECIES_BRONZONG] = gMonFootprint_Bronzong, - [SPECIES_BONSLY] = gMonFootprint_Bonsly, - [SPECIES_MIME_JR] = gMonFootprint_MimeJr, - [SPECIES_HAPPINY] = gMonFootprint_Happiny, - [SPECIES_CHATOT] = gMonFootprint_Chatot, - [SPECIES_SPIRITOMB] = gMonFootprint_Spiritomb, - [SPECIES_GIBLE] = gMonFootprint_Gible, - [SPECIES_GABITE] = gMonFootprint_Gabite, - [SPECIES_GARCHOMP] = gMonFootprint_Garchomp, - [SPECIES_MUNCHLAX] = gMonFootprint_Munchlax, - [SPECIES_RIOLU] = gMonFootprint_Riolu, - [SPECIES_LUCARIO] = gMonFootprint_Lucario, - [SPECIES_HIPPOPOTAS] = gMonFootprint_Hippopotas, - [SPECIES_HIPPOWDON] = gMonFootprint_Hippowdon, - [SPECIES_SKORUPI] = gMonFootprint_Skorupi, - [SPECIES_DRAPION] = gMonFootprint_Drapion, - [SPECIES_CROAGUNK] = gMonFootprint_Croagunk, - [SPECIES_TOXICROAK] = gMonFootprint_Toxicroak, - [SPECIES_CARNIVINE] = gMonFootprint_Carnivine, - [SPECIES_FINNEON] = gMonFootprint_Finneon, - [SPECIES_LUMINEON] = gMonFootprint_Lumineon, - [SPECIES_MANTYKE] = gMonFootprint_Mantyke, - [SPECIES_SNOVER] = gMonFootprint_Snover, - [SPECIES_ABOMASNOW] = gMonFootprint_Abomasnow, - [SPECIES_WEAVILE] = gMonFootprint_Weavile, - [SPECIES_MAGNEZONE] = gMonFootprint_Magnezone, - [SPECIES_LICKILICKY] = gMonFootprint_Lickilicky, - [SPECIES_RHYPERIOR] = gMonFootprint_Rhyperior, - [SPECIES_TANGROWTH] = gMonFootprint_Tangrowth, - [SPECIES_ELECTIVIRE] = gMonFootprint_Electivire, - [SPECIES_MAGMORTAR] = gMonFootprint_Magmortar, - [SPECIES_TOGEKISS] = gMonFootprint_Togekiss, - [SPECIES_YANMEGA] = gMonFootprint_Yanmega, - [SPECIES_LEAFEON] = gMonFootprint_Leafeon, - [SPECIES_GLACEON] = gMonFootprint_Glaceon, - [SPECIES_GLISCOR] = gMonFootprint_Gliscor, - [SPECIES_MAMOSWINE] = gMonFootprint_Mamoswine, - [SPECIES_PORYGON_Z] = gMonFootprint_PorygonZ, - [SPECIES_GALLADE] = gMonFootprint_Gallade, - [SPECIES_PROBOPASS] = gMonFootprint_Probopass, - [SPECIES_DUSKNOIR] = gMonFootprint_Dusknoir, - [SPECIES_FROSLASS] = gMonFootprint_Froslass, - [SPECIES_ROTOM] = gMonFootprint_Rotom, - [SPECIES_UXIE] = gMonFootprint_Uxie, - [SPECIES_MESPRIT] = gMonFootprint_Mesprit, - [SPECIES_AZELF] = gMonFootprint_Azelf, - [SPECIES_DIALGA] = gMonFootprint_Dialga, - [SPECIES_PALKIA] = gMonFootprint_Palkia, - [SPECIES_HEATRAN] = gMonFootprint_Heatran, - [SPECIES_REGIGIGAS] = gMonFootprint_Regigigas, - [SPECIES_GIRATINA] = gMonFootprint_Giratina, - [SPECIES_CRESSELIA] = gMonFootprint_Cresselia, - [SPECIES_PHIONE] = gMonFootprint_Phione, - [SPECIES_MANAPHY] = gMonFootprint_Manaphy, - [SPECIES_DARKRAI] = gMonFootprint_Darkrai, - [SPECIES_SHAYMIN] = gMonFootprint_Shaymin, - [SPECIES_ARCEUS] = gMonFootprint_Arceus, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_VICTINI] = gMonFootprint_Victini, - [SPECIES_SNIVY] = gMonFootprint_Snivy, - [SPECIES_SERVINE] = gMonFootprint_Servine, - [SPECIES_SERPERIOR] = gMonFootprint_Serperior, - [SPECIES_TEPIG] = gMonFootprint_Tepig, - [SPECIES_PIGNITE] = gMonFootprint_Pignite, - [SPECIES_EMBOAR] = gMonFootprint_Emboar, - [SPECIES_OSHAWOTT] = gMonFootprint_Oshawott, - [SPECIES_DEWOTT] = gMonFootprint_Dewott, - [SPECIES_SAMUROTT] = gMonFootprint_Samurott, - [SPECIES_PATRAT] = gMonFootprint_Patrat, - [SPECIES_WATCHOG] = gMonFootprint_Watchog, - [SPECIES_LILLIPUP] = gMonFootprint_Lillipup, - [SPECIES_HERDIER] = gMonFootprint_Herdier, - [SPECIES_STOUTLAND] = gMonFootprint_Stoutland, - [SPECIES_PURRLOIN] = gMonFootprint_Purrloin, - [SPECIES_LIEPARD] = gMonFootprint_Liepard, - [SPECIES_PANSAGE] = gMonFootprint_Pansage, - [SPECIES_SIMISAGE] = gMonFootprint_Simisage, - [SPECIES_PANSEAR] = gMonFootprint_Pansear, - [SPECIES_SIMISEAR] = gMonFootprint_Simisear, - [SPECIES_PANPOUR] = gMonFootprint_Panpour, - [SPECIES_SIMIPOUR] = gMonFootprint_Simipour, - [SPECIES_MUNNA] = gMonFootprint_Munna, - [SPECIES_MUSHARNA] = gMonFootprint_Musharna, - [SPECIES_PIDOVE] = gMonFootprint_Pidove, - [SPECIES_TRANQUILL] = gMonFootprint_Tranquill, - [SPECIES_UNFEZANT] = gMonFootprint_Unfezant, - [SPECIES_BLITZLE] = gMonFootprint_Blitzle, - [SPECIES_ZEBSTRIKA] = gMonFootprint_Zebstrika, - [SPECIES_ROGGENROLA] = gMonFootprint_Roggenrola, - [SPECIES_BOLDORE] = gMonFootprint_Boldore, - [SPECIES_GIGALITH] = gMonFootprint_Gigalith, - [SPECIES_WOOBAT] = gMonFootprint_Woobat, - [SPECIES_SWOOBAT] = gMonFootprint_Swoobat, - [SPECIES_DRILBUR] = gMonFootprint_Drilbur, - [SPECIES_EXCADRILL] = gMonFootprint_Excadrill, - [SPECIES_AUDINO] = gMonFootprint_Audino, - [SPECIES_TIMBURR] = gMonFootprint_Timburr, - [SPECIES_GURDURR] = gMonFootprint_Gurdurr, - [SPECIES_CONKELDURR] = gMonFootprint_Conkeldurr, - [SPECIES_TYMPOLE] = gMonFootprint_Tympole, - [SPECIES_PALPITOAD] = gMonFootprint_Palpitoad, - [SPECIES_SEISMITOAD] = gMonFootprint_Seismitoad, - [SPECIES_THROH] = gMonFootprint_Throh, - [SPECIES_SAWK] = gMonFootprint_Sawk, - [SPECIES_SEWADDLE] = gMonFootprint_Sewaddle, - [SPECIES_SWADLOON] = gMonFootprint_Swadloon, - [SPECIES_LEAVANNY] = gMonFootprint_Leavanny, - [SPECIES_VENIPEDE] = gMonFootprint_Venipede, - [SPECIES_WHIRLIPEDE] = gMonFootprint_Whirlipede, - [SPECIES_SCOLIPEDE] = gMonFootprint_Scolipede, - [SPECIES_COTTONEE] = gMonFootprint_Cottonee, - [SPECIES_WHIMSICOTT] = gMonFootprint_Whimsicott, - [SPECIES_PETILIL] = gMonFootprint_Petilil, - [SPECIES_LILLIGANT] = gMonFootprint_Lilligant, - [SPECIES_BASCULIN] = gMonFootprint_Basculin, - [SPECIES_SANDILE] = gMonFootprint_Sandile, - [SPECIES_KROKOROK] = gMonFootprint_Krokorok, - [SPECIES_KROOKODILE] = gMonFootprint_Krookodile, - [SPECIES_DARUMAKA] = gMonFootprint_Darumaka, - [SPECIES_DARMANITAN] = gMonFootprint_Darmanitan, - [SPECIES_MARACTUS] = gMonFootprint_Maractus, - [SPECIES_DWEBBLE] = gMonFootprint_Dwebble, - [SPECIES_CRUSTLE] = gMonFootprint_Crustle, - [SPECIES_SCRAGGY] = gMonFootprint_Scraggy, - [SPECIES_SCRAFTY] = gMonFootprint_Scrafty, - [SPECIES_SIGILYPH] = gMonFootprint_Sigilyph, - [SPECIES_YAMASK] = gMonFootprint_Yamask, - [SPECIES_COFAGRIGUS] = gMonFootprint_Cofagrigus, - [SPECIES_TIRTOUGA] = gMonFootprint_Tirtouga, - [SPECIES_CARRACOSTA] = gMonFootprint_Carracosta, - [SPECIES_ARCHEN] = gMonFootprint_Archen, - [SPECIES_ARCHEOPS] = gMonFootprint_Archeops, - [SPECIES_TRUBBISH] = gMonFootprint_Trubbish, - [SPECIES_GARBODOR] = gMonFootprint_Garbodor, - [SPECIES_ZORUA] = gMonFootprint_Zorua, - [SPECIES_ZOROARK] = gMonFootprint_Zoroark, - [SPECIES_MINCCINO] = gMonFootprint_Minccino, - [SPECIES_CINCCINO] = gMonFootprint_Cinccino, - [SPECIES_GOTHITA] = gMonFootprint_Gothita, - [SPECIES_GOTHORITA] = gMonFootprint_Gothorita, - [SPECIES_GOTHITELLE] = gMonFootprint_Gothitelle, - [SPECIES_SOLOSIS] = gMonFootprint_Solosis, - [SPECIES_DUOSION] = gMonFootprint_Duosion, - [SPECIES_REUNICLUS] = gMonFootprint_Reuniclus, - [SPECIES_DUCKLETT] = gMonFootprint_Ducklett, - [SPECIES_SWANNA] = gMonFootprint_Swanna, - [SPECIES_VANILLITE] = gMonFootprint_Vanillite, - [SPECIES_VANILLISH] = gMonFootprint_Vanillish, - [SPECIES_VANILLUXE] = gMonFootprint_Vanilluxe, - [SPECIES_DEERLING] = gMonFootprint_Deerling, - [SPECIES_SAWSBUCK] = gMonFootprint_Sawsbuck, - [SPECIES_EMOLGA] = gMonFootprint_Emolga, - [SPECIES_KARRABLAST] = gMonFootprint_Karrablast, - [SPECIES_ESCAVALIER] = gMonFootprint_Escavalier, - [SPECIES_FOONGUS] = gMonFootprint_Foongus, - [SPECIES_AMOONGUSS] = gMonFootprint_Amoonguss, - [SPECIES_FRILLISH] = gMonFootprint_Frillish, - [SPECIES_JELLICENT] = gMonFootprint_Jellicent, - [SPECIES_ALOMOMOLA] = gMonFootprint_Alomomola, - [SPECIES_JOLTIK] = gMonFootprint_Joltik, - [SPECIES_GALVANTULA] = gMonFootprint_Galvantula, - [SPECIES_FERROSEED] = gMonFootprint_Ferroseed, - [SPECIES_FERROTHORN] = gMonFootprint_Ferrothorn, - [SPECIES_KLINK] = gMonFootprint_Klink, - [SPECIES_KLANG] = gMonFootprint_Klang, - [SPECIES_KLINKLANG] = gMonFootprint_Klinklang, - [SPECIES_TYNAMO] = gMonFootprint_Tynamo, - [SPECIES_EELEKTRIK] = gMonFootprint_Eelektrik, - [SPECIES_EELEKTROSS] = gMonFootprint_Eelektross, - [SPECIES_ELGYEM] = gMonFootprint_Elgyem, - [SPECIES_BEHEEYEM] = gMonFootprint_Beheeyem, - [SPECIES_LITWICK] = gMonFootprint_Litwick, - [SPECIES_LAMPENT] = gMonFootprint_Lampent, - [SPECIES_CHANDELURE] = gMonFootprint_Chandelure, - [SPECIES_AXEW] = gMonFootprint_Axew, - [SPECIES_FRAXURE] = gMonFootprint_Fraxure, - [SPECIES_HAXORUS] = gMonFootprint_Haxorus, - [SPECIES_CUBCHOO] = gMonFootprint_Cubchoo, - [SPECIES_BEARTIC] = gMonFootprint_Beartic, - [SPECIES_CRYOGONAL] = gMonFootprint_Cryogonal, - [SPECIES_SHELMET] = gMonFootprint_Shelmet, - [SPECIES_ACCELGOR] = gMonFootprint_Accelgor, - [SPECIES_STUNFISK] = gMonFootprint_Stunfisk, - [SPECIES_MIENFOO] = gMonFootprint_Mienfoo, - [SPECIES_MIENSHAO] = gMonFootprint_Mienshao, - [SPECIES_DRUDDIGON] = gMonFootprint_Druddigon, - [SPECIES_GOLETT] = gMonFootprint_Golett, - [SPECIES_GOLURK] = gMonFootprint_Golurk, - [SPECIES_PAWNIARD] = gMonFootprint_Pawniard, - [SPECIES_BISHARP] = gMonFootprint_Bisharp, - [SPECIES_BOUFFALANT] = gMonFootprint_Bouffalant, - [SPECIES_RUFFLET] = gMonFootprint_Rufflet, - [SPECIES_BRAVIARY] = gMonFootprint_Braviary, - [SPECIES_VULLABY] = gMonFootprint_Vullaby, - [SPECIES_MANDIBUZZ] = gMonFootprint_Mandibuzz, - [SPECIES_HEATMOR] = gMonFootprint_Heatmor, - [SPECIES_DURANT] = gMonFootprint_Durant, - [SPECIES_DEINO] = gMonFootprint_Deino, - [SPECIES_ZWEILOUS] = gMonFootprint_Zweilous, - [SPECIES_HYDREIGON] = gMonFootprint_Hydreigon, - [SPECIES_LARVESTA] = gMonFootprint_Larvesta, - [SPECIES_VOLCARONA] = gMonFootprint_Volcarona, - [SPECIES_COBALION] = gMonFootprint_Cobalion, - [SPECIES_TERRAKION] = gMonFootprint_Terrakion, - [SPECIES_VIRIZION] = gMonFootprint_Virizion, - [SPECIES_TORNADUS] = gMonFootprint_Tornadus, - [SPECIES_THUNDURUS] = gMonFootprint_Thundurus, - [SPECIES_RESHIRAM] = gMonFootprint_Reshiram, - [SPECIES_ZEKROM] = gMonFootprint_Zekrom, - [SPECIES_LANDORUS] = gMonFootprint_Landorus, - [SPECIES_KYUREM] = gMonFootprint_Kyurem, - [SPECIES_KELDEO] = gMonFootprint_Keldeo, - [SPECIES_MELOETTA] = gMonFootprint_Meloetta, - [SPECIES_GENESECT] = gMonFootprint_Genesect, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_CHESPIN] = gMonFootprint_Chespin, - [SPECIES_QUILLADIN] = gMonFootprint_Quilladin, - [SPECIES_CHESNAUGHT] = gMonFootprint_Chesnaught, - [SPECIES_FENNEKIN] = gMonFootprint_Fennekin, - [SPECIES_BRAIXEN] = gMonFootprint_Braixen, - [SPECIES_DELPHOX] = gMonFootprint_Delphox, - [SPECIES_FROAKIE] = gMonFootprint_Froakie, - [SPECIES_FROGADIER] = gMonFootprint_Frogadier, - [SPECIES_GRENINJA] = gMonFootprint_Greninja, - [SPECIES_BUNNELBY] = gMonFootprint_Bunnelby, - [SPECIES_DIGGERSBY] = gMonFootprint_Diggersby, - [SPECIES_FLETCHLING] = gMonFootprint_Fletchling, - [SPECIES_FLETCHINDER] = gMonFootprint_Fletchinder, - [SPECIES_TALONFLAME] = gMonFootprint_Talonflame, - [SPECIES_SCATTERBUG] = gMonFootprint_Scatterbug, - [SPECIES_SPEWPA] = gMonFootprint_Spewpa, - [SPECIES_VIVILLON] = gMonFootprint_Vivillon, - [SPECIES_LITLEO] = gMonFootprint_Litleo, - [SPECIES_PYROAR] = gMonFootprint_Pyroar, - [SPECIES_FLABEBE] = gMonFootprint_Flabebe, - [SPECIES_FLOETTE] = gMonFootprint_Floette, - [SPECIES_FLORGES] = gMonFootprint_Florges, - [SPECIES_SKIDDO] = gMonFootprint_Skiddo, - [SPECIES_GOGOAT] = gMonFootprint_Gogoat, - [SPECIES_PANCHAM] = gMonFootprint_Pancham, - [SPECIES_PANGORO] = gMonFootprint_Pangoro, - [SPECIES_FURFROU] = gMonFootprint_Furfrou, - [SPECIES_ESPURR] = gMonFootprint_Espurr, - [SPECIES_MEOWSTIC] = gMonFootprint_Meowstic, - [SPECIES_HONEDGE] = gMonFootprint_Honedge, - [SPECIES_DOUBLADE] = gMonFootprint_Doublade, - [SPECIES_AEGISLASH] = gMonFootprint_Aegislash, - [SPECIES_SPRITZEE] = gMonFootprint_Spritzee, - [SPECIES_AROMATISSE] = gMonFootprint_Aromatisse, - [SPECIES_SWIRLIX] = gMonFootprint_Swirlix, - [SPECIES_SLURPUFF] = gMonFootprint_Slurpuff, - [SPECIES_INKAY] = gMonFootprint_Inkay, - [SPECIES_MALAMAR] = gMonFootprint_Malamar, - [SPECIES_BINACLE] = gMonFootprint_Binacle, - [SPECIES_BARBARACLE] = gMonFootprint_Barbaracle, - [SPECIES_SKRELP] = gMonFootprint_Skrelp, - [SPECIES_DRAGALGE] = gMonFootprint_Dragalge, - [SPECIES_CLAUNCHER] = gMonFootprint_Clauncher, - [SPECIES_CLAWITZER] = gMonFootprint_Clawitzer, - [SPECIES_HELIOPTILE] = gMonFootprint_Helioptile, - [SPECIES_HELIOLISK] = gMonFootprint_Heliolisk, - [SPECIES_TYRUNT] = gMonFootprint_Tyrunt, - [SPECIES_TYRANTRUM] = gMonFootprint_Tyrantrum, - [SPECIES_AMAURA] = gMonFootprint_Amaura, - [SPECIES_AURORUS] = gMonFootprint_Aurorus, - [SPECIES_SYLVEON] = gMonFootprint_Sylveon, - [SPECIES_HAWLUCHA] = gMonFootprint_Hawlucha, - [SPECIES_DEDENNE] = gMonFootprint_Dedenne, - [SPECIES_CARBINK] = gMonFootprint_Carbink, - [SPECIES_GOOMY] = gMonFootprint_Goomy, - [SPECIES_SLIGGOO] = gMonFootprint_Sliggoo, - [SPECIES_GOODRA] = gMonFootprint_Goodra, - [SPECIES_KLEFKI] = gMonFootprint_Klefki, - [SPECIES_PHANTUMP] = gMonFootprint_Phantump, - [SPECIES_TREVENANT] = gMonFootprint_Trevenant, - [SPECIES_PUMPKABOO] = gMonFootprint_Pumpkaboo, - [SPECIES_GOURGEIST] = gMonFootprint_Gourgeist, - [SPECIES_BERGMITE] = gMonFootprint_Bergmite, - [SPECIES_AVALUGG] = gMonFootprint_Avalugg, - [SPECIES_NOIBAT] = gMonFootprint_Noibat, - [SPECIES_NOIVERN] = gMonFootprint_Noivern, - [SPECIES_XERNEAS] = gMonFootprint_Xerneas, - [SPECIES_YVELTAL] = gMonFootprint_Yveltal, - [SPECIES_ZYGARDE] = gMonFootprint_Zygarde, - [SPECIES_DIANCIE] = gMonFootprint_Diancie, - [SPECIES_HOOPA] = gMonFootprint_Hoopa, - [SPECIES_VOLCANION] = gMonFootprint_Volcanion, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_ROWLET] = gMonFootprint_Rowlet, - [SPECIES_DARTRIX] = gMonFootprint_Dartrix, - [SPECIES_DECIDUEYE] = gMonFootprint_Decidueye, - [SPECIES_LITTEN] = gMonFootprint_Litten, - [SPECIES_TORRACAT] = gMonFootprint_Torracat, - [SPECIES_INCINEROAR] = gMonFootprint_Incineroar, - [SPECIES_POPPLIO] = gMonFootprint_Popplio, - [SPECIES_BRIONNE] = gMonFootprint_Brionne, - [SPECIES_PRIMARINA] = gMonFootprint_Primarina, - [SPECIES_PIKIPEK] = gMonFootprint_Pikipek, - [SPECIES_TRUMBEAK] = gMonFootprint_Trumbeak, - [SPECIES_TOUCANNON] = gMonFootprint_Toucannon, - [SPECIES_YUNGOOS] = gMonFootprint_Yungoos, - [SPECIES_GUMSHOOS] = gMonFootprint_Gumshoos, - [SPECIES_GRUBBIN] = gMonFootprint_Grubbin, - [SPECIES_CHARJABUG] = gMonFootprint_Charjabug, - [SPECIES_VIKAVOLT] = gMonFootprint_Vikavolt, - [SPECIES_CRABRAWLER] = gMonFootprint_Crabrawler, - [SPECIES_CRABOMINABLE] = gMonFootprint_Crabominable, - [SPECIES_ORICORIO] = gMonFootprint_Oricorio, - [SPECIES_CUTIEFLY] = gMonFootprint_Cutiefly, - [SPECIES_RIBOMBEE] = gMonFootprint_Ribombee, - [SPECIES_ROCKRUFF] = gMonFootprint_Rockruff, - [SPECIES_LYCANROC] = gMonFootprint_Lycanroc, - [SPECIES_WISHIWASHI] = gMonFootprint_Wishiwashi, - [SPECIES_MAREANIE] = gMonFootprint_Mareanie, - [SPECIES_TOXAPEX] = gMonFootprint_Toxapex, - [SPECIES_MUDBRAY] = gMonFootprint_Mudbray, - [SPECIES_MUDSDALE] = gMonFootprint_Mudsdale, - [SPECIES_DEWPIDER] = gMonFootprint_Dewpider, - [SPECIES_ARAQUANID] = gMonFootprint_Araquanid, - [SPECIES_FOMANTIS] = gMonFootprint_Fomantis, - [SPECIES_LURANTIS] = gMonFootprint_Lurantis, - [SPECIES_MORELULL] = gMonFootprint_Morelull, - [SPECIES_SHIINOTIC] = gMonFootprint_Shiinotic, - [SPECIES_SALANDIT] = gMonFootprint_Salandit, - [SPECIES_SALAZZLE] = gMonFootprint_Salazzle, - [SPECIES_STUFFUL] = gMonFootprint_Stufful, - [SPECIES_BEWEAR] = gMonFootprint_Bewear, - [SPECIES_BOUNSWEET] = gMonFootprint_Bounsweet, - [SPECIES_STEENEE] = gMonFootprint_Steenee, - [SPECIES_TSAREENA] = gMonFootprint_Tsareena, - [SPECIES_COMFEY] = gMonFootprint_Comfey, - [SPECIES_ORANGURU] = gMonFootprint_Oranguru, - [SPECIES_PASSIMIAN] = gMonFootprint_Passimian, - [SPECIES_WIMPOD] = gMonFootprint_Wimpod, - [SPECIES_GOLISOPOD] = gMonFootprint_Golisopod, - [SPECIES_SANDYGAST] = gMonFootprint_Sandygast, - [SPECIES_PALOSSAND] = gMonFootprint_Palossand, - [SPECIES_PYUKUMUKU] = gMonFootprint_Pyukumuku, - [SPECIES_TYPE_NULL] = gMonFootprint_Type_Null, - [SPECIES_SILVALLY] = gMonFootprint_Silvally, - [SPECIES_MINIOR] = gMonFootprint_Minior, - [SPECIES_KOMALA] = gMonFootprint_Komala, - [SPECIES_TURTONATOR] = gMonFootprint_Turtonator, - [SPECIES_TOGEDEMARU] = gMonFootprint_Togedemaru, - [SPECIES_MIMIKYU] = gMonFootprint_Mimikyu, - [SPECIES_BRUXISH] = gMonFootprint_Bruxish, - [SPECIES_DRAMPA] = gMonFootprint_Drampa, - [SPECIES_DHELMISE] = gMonFootprint_Dhelmise, - [SPECIES_JANGMO_O] = gMonFootprint_JangmoO, - [SPECIES_HAKAMO_O] = gMonFootprint_HakamoO, - [SPECIES_KOMMO_O] = gMonFootprint_KommoO, - [SPECIES_TAPU_KOKO] = gMonFootprint_Tapu_Koko, - [SPECIES_TAPU_LELE] = gMonFootprint_Tapu_Lele, - [SPECIES_TAPU_BULU] = gMonFootprint_Tapu_Bulu, - [SPECIES_TAPU_FINI] = gMonFootprint_Tapu_Fini, - [SPECIES_COSMOG] = gMonFootprint_Cosmog, - [SPECIES_COSMOEM] = gMonFootprint_Cosmoem, - [SPECIES_SOLGALEO] = gMonFootprint_Solgaleo, - [SPECIES_LUNALA] = gMonFootprint_Lunala, - [SPECIES_NIHILEGO] = gMonFootprint_Nihilego, - [SPECIES_BUZZWOLE] = gMonFootprint_Buzzwole, - [SPECIES_PHEROMOSA] = gMonFootprint_Pheromosa, - [SPECIES_XURKITREE] = gMonFootprint_Xurkitree, - [SPECIES_CELESTEELA] = gMonFootprint_Celesteela, - [SPECIES_KARTANA] = gMonFootprint_Kartana, - [SPECIES_GUZZLORD] = gMonFootprint_Guzzlord, - [SPECIES_NECROZMA] = gMonFootprint_Necrozma, - [SPECIES_MAGEARNA] = gMonFootprint_Magearna, - [SPECIES_MARSHADOW] = gMonFootprint_Marshadow, - [SPECIES_POIPOLE] = gMonFootprint_Poipole, - [SPECIES_NAGANADEL] = gMonFootprint_Naganadel, - [SPECIES_STAKATAKA] = gMonFootprint_Stakataka, - [SPECIES_BLACEPHALON] = gMonFootprint_Blacephalon, - [SPECIES_ZERAORA] = gMonFootprint_Zeraora, - [SPECIES_MELTAN] = gMonFootprint_Meltan, - [SPECIES_MELMETAL] = gMonFootprint_Melmetal, -#endif -#if P_GEN_8_POKEMON == TRUE - [SPECIES_GROOKEY] = gMonFootprint_Grookey, - [SPECIES_THWACKEY] = gMonFootprint_Thwackey, - [SPECIES_RILLABOOM] = gMonFootprint_Rillaboom, - [SPECIES_SCORBUNNY] = gMonFootprint_Scorbunny, - [SPECIES_RABOOT] = gMonFootprint_Raboot, - [SPECIES_CINDERACE] = gMonFootprint_Cinderace, - [SPECIES_SOBBLE] = gMonFootprint_Sobble, - [SPECIES_DRIZZILE] = gMonFootprint_Drizzile, - [SPECIES_INTELEON] = gMonFootprint_Inteleon, - [SPECIES_SKWOVET] = gMonFootprint_Skwovet, - [SPECIES_GREEDENT] = gMonFootprint_Greedent, - [SPECIES_ROOKIDEE] = gMonFootprint_Rookidee, - [SPECIES_CORVISQUIRE] = gMonFootprint_Corvisquire, - [SPECIES_CORVIKNIGHT] = gMonFootprint_Corviknight, - [SPECIES_BLIPBUG] = gMonFootprint_Blipbug, - [SPECIES_DOTTLER] = gMonFootprint_Dottler, - [SPECIES_ORBEETLE] = gMonFootprint_Orbeetle, - [SPECIES_NICKIT] = gMonFootprint_Nickit, - [SPECIES_THIEVUL] = gMonFootprint_Thievul, - [SPECIES_GOSSIFLEUR] = gMonFootprint_Gossifleur, - [SPECIES_ELDEGOSS] = gMonFootprint_Eldegoss, - [SPECIES_WOOLOO] = gMonFootprint_Wooloo, - [SPECIES_DUBWOOL] = gMonFootprint_Dubwool, - [SPECIES_CHEWTLE] = gMonFootprint_Chewtle, - [SPECIES_DREDNAW] = gMonFootprint_Drednaw, - [SPECIES_YAMPER] = gMonFootprint_Yamper, - [SPECIES_BOLTUND] = gMonFootprint_Boltund, - [SPECIES_ROLYCOLY] = gMonFootprint_Rolycoly, - [SPECIES_CARKOL] = gMonFootprint_Carkol, - [SPECIES_COALOSSAL] = gMonFootprint_Coalossal, - [SPECIES_APPLIN] = gMonFootprint_Applin, - [SPECIES_FLAPPLE] = gMonFootprint_Flapple, - [SPECIES_APPLETUN] = gMonFootprint_Appletun, - [SPECIES_SILICOBRA] = gMonFootprint_Silicobra, - [SPECIES_SANDACONDA] = gMonFootprint_Sandaconda, - [SPECIES_CRAMORANT] = gMonFootprint_Cramorant, - [SPECIES_ARROKUDA] = gMonFootprint_Arrokuda, - [SPECIES_BARRASKEWDA] = gMonFootprint_Barraskewda, - [SPECIES_TOXEL] = gMonFootprint_Toxel, - [SPECIES_TOXTRICITY] = gMonFootprint_Toxtricity, - [SPECIES_SIZZLIPEDE] = gMonFootprint_Sizzlipede, - [SPECIES_CENTISKORCH] = gMonFootprint_Centiskorch, - [SPECIES_CLOBBOPUS] = gMonFootprint_Clobbopus, - [SPECIES_GRAPPLOCT] = gMonFootprint_Grapploct, - [SPECIES_SINISTEA] = gMonFootprint_Sinistea, - [SPECIES_POLTEAGEIST] = gMonFootprint_Polteageist, - [SPECIES_HATENNA] = gMonFootprint_Hatenna, - [SPECIES_HATTREM] = gMonFootprint_Hattrem, - [SPECIES_HATTERENE] = gMonFootprint_Hatterene, - [SPECIES_IMPIDIMP] = gMonFootprint_Impidimp, - [SPECIES_MORGREM] = gMonFootprint_Morgrem, - [SPECIES_GRIMMSNARL] = gMonFootprint_Grimmsnarl, - [SPECIES_OBSTAGOON] = gMonFootprint_Obstagoon, - [SPECIES_PERRSERKER] = gMonFootprint_Perrserker, - [SPECIES_CURSOLA] = gMonFootprint_Cursola, - [SPECIES_SIRFETCHD] = gMonFootprint_Sirfetchd, - [SPECIES_MR_RIME] = gMonFootprint_Mr_Rime, - [SPECIES_RUNERIGUS] = gMonFootprint_Runerigus, - [SPECIES_MILCERY] = gMonFootprint_Milcery, - [SPECIES_ALCREMIE] = gMonFootprint_Alcremie, - [SPECIES_FALINKS] = gMonFootprint_Falinks, - [SPECIES_PINCURCHIN] = gMonFootprint_Pincurchin, - [SPECIES_SNOM] = gMonFootprint_Snom, - [SPECIES_FROSMOTH] = gMonFootprint_Frosmoth, - [SPECIES_STONJOURNER] = gMonFootprint_Stonjourner, - [SPECIES_EISCUE] = gMonFootprint_Eiscue, - [SPECIES_INDEEDEE] = gMonFootprint_Indeedee, - [SPECIES_MORPEKO] = gMonFootprint_Morpeko, - [SPECIES_CUFANT] = gMonFootprint_Cufant, - [SPECIES_COPPERAJAH] = gMonFootprint_Copperajah, - [SPECIES_DRACOZOLT] = gMonFootprint_Dracozolt, - [SPECIES_ARCTOZOLT] = gMonFootprint_Arctozolt, - [SPECIES_DRACOVISH] = gMonFootprint_Dracovish, - [SPECIES_ARCTOVISH] = gMonFootprint_Arctovish, - [SPECIES_DURALUDON] = gMonFootprint_Duraludon, - [SPECIES_DREEPY] = gMonFootprint_Dreepy, - [SPECIES_DRAKLOAK] = gMonFootprint_Drakloak, - [SPECIES_DRAGAPULT] = gMonFootprint_Dragapult, - [SPECIES_ZACIAN] = gMonFootprint_Zacian, - [SPECIES_ZAMAZENTA] = gMonFootprint_Zamazenta, - [SPECIES_ETERNATUS] = gMonFootprint_Eternatus, - [SPECIES_KUBFU] = gMonFootprint_Kubfu, - [SPECIES_URSHIFU] = gMonFootprint_Urshifu, - [SPECIES_ZARUDE] = gMonFootprint_Zarude, - [SPECIES_REGIELEKI] = gMonFootprint_Regieleki, - [SPECIES_REGIDRAGO] = gMonFootprint_Regidrago, - [SPECIES_GLASTRIER] = gMonFootprint_Glastrier, - [SPECIES_SPECTRIER] = gMonFootprint_Spectrier, - [SPECIES_CALYREX] = gMonFootprint_Calyrex, -#endif - [SPECIES_EGG] = gMonFootprint_Bulbasaur, -}; diff --git a/src/data/pokemon_graphics/front_pic_anims.h b/src/data/pokemon_graphics/front_pic_anims.h index 95ea6f9437..92c8c7729c 100644 --- a/src/data/pokemon_graphics/front_pic_anims.h +++ b/src/data/pokemon_graphics/front_pic_anims.h @@ -1,4 +1,11 @@ -#define PLACEHOLDER_TWO_FRAME_ANIMATION(name) \ +#define PLACEHOLDER_ANIM_SINGLE_FRAME(name) \ +static const union AnimCmd sAnim_##name##_1[] = \ +{ \ + ANIMCMD_FRAME(0, 1), \ + ANIMCMD_END, \ +} + +#define PLACEHOLDER_ANIM_TWO_FRAMES(name) \ static const union AnimCmd sAnim_##name##_1[] = \ { \ ANIMCMD_FRAME(0, 30), \ @@ -15,6 +22,7 @@ static const union AnimCmd sAnim_None_1[] = ANIMCMD_END, }; +#if P_FAMILY_BULBASAUR static const union AnimCmd sAnim_Bulbasaur_1[] = { ANIMCMD_FRAME(0, 30), @@ -39,6 +47,16 @@ static const union AnimCmd sAnim_Venusaur_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(VenusaurMega); +#endif //P_MEGA_EVOLUTIONS + +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(VenusaurGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_BULBASAUR + +#if P_FAMILY_CHARMANDER static const union AnimCmd sAnim_Charmander_1[] = { ANIMCMD_FRAME(0, 2), @@ -62,6 +80,20 @@ static const union AnimCmd sAnim_Charizard_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(CharizardMegaX); +#endif //P_MEGA_EVOLUTIONS + +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(CharizardMegaY); +#endif //P_MEGA_EVOLUTIONS + +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(CharizardGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CHARMANDER + +#if P_FAMILY_SQUIRTLE static const union AnimCmd sAnim_Squirtle_1[] = { ANIMCMD_FRAME(1, 11), @@ -88,6 +120,16 @@ static const union AnimCmd sAnim_Blastoise_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(BlastoiseMega); +#endif //P_MEGA_EVOLUTIONS + +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(BlastoiseGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SQUIRTLE + +#if P_FAMILY_CATERPIE static const union AnimCmd sAnim_Caterpie_1[] = { ANIMCMD_FRAME(1, 15), @@ -126,6 +168,12 @@ static const union AnimCmd sAnim_Butterfree_1[] = ANIMCMD_END, }; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(ButterfreeGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CATERPIE + +#if P_FAMILY_WEEDLE static const union AnimCmd sAnim_Weedle_1[] = { ANIMCMD_FRAME(0, 5), @@ -166,6 +214,12 @@ static const union AnimCmd sAnim_Beedrill_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(BeedrillMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_WEEDLE + +#if P_FAMILY_PIDGEY static const union AnimCmd sAnim_Pidgey_1[] = { ANIMCMD_FRAME(0, 5), @@ -188,11 +242,15 @@ static const union AnimCmd sAnim_Pidgeot_1[] = { ANIMCMD_FRAME(1, 20), ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(PidgeotMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_PIDGEY + +#if P_FAMILY_RATTATA static const union AnimCmd sAnim_Rattata_1[] = { ANIMCMD_FRAME(1, 11), @@ -219,6 +277,14 @@ static const union AnimCmd sAnim_Raticate_1[] = ANIMCMD_END, }; +#if P_ALOLAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(RattataAlolan); + +PLACEHOLDER_ANIM_SINGLE_FRAME(RaticateAlolan); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_RATTATA + +#if P_FAMILY_SPEAROW static const union AnimCmd sAnim_Spearow_1[] = { ANIMCMD_FRAME(1, 11), @@ -240,7 +306,9 @@ static const union AnimCmd sAnim_Fearow_1[] = ANIMCMD_FRAME(0, 7), ANIMCMD_END, }; +#endif //P_FAMILY_SPEAROW +#if P_FAMILY_EKANS static const union AnimCmd sAnim_Ekans_1[] = { ANIMCMD_FRAME(1, 8), @@ -259,6 +327,22 @@ static const union AnimCmd sAnim_Arbok_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_EKANS + +#if P_FAMILY_PIKACHU +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Pichu_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +PLACEHOLDER_ANIM_SINGLE_FRAME(PichuSpikyEared); +#endif //P_GEN_2_CROSS_EVOS static const union AnimCmd sAnim_Pikachu_1[] = { @@ -269,14 +353,24 @@ static const union AnimCmd sAnim_Pikachu_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Pikachu_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; +PLACEHOLDER_ANIM_SINGLE_FRAME(PikachuCosplay); +PLACEHOLDER_ANIM_SINGLE_FRAME(PikachuRockStar); +PLACEHOLDER_ANIM_SINGLE_FRAME(PikachuBelle); +PLACEHOLDER_ANIM_SINGLE_FRAME(PikachuPopStar); +PLACEHOLDER_ANIM_SINGLE_FRAME(PikachuPhD); +PLACEHOLDER_ANIM_SINGLE_FRAME(PikachuLibre); +PLACEHOLDER_ANIM_SINGLE_FRAME(PikachuOriginalCap); +PLACEHOLDER_ANIM_SINGLE_FRAME(PikachuHoennCap); +PLACEHOLDER_ANIM_SINGLE_FRAME(PikachuSinnohCap); +PLACEHOLDER_ANIM_SINGLE_FRAME(PikachuUnovaCap); +PLACEHOLDER_ANIM_SINGLE_FRAME(PikachuKalosCap); +PLACEHOLDER_ANIM_SINGLE_FRAME(PikachuAlolaCap); +PLACEHOLDER_ANIM_SINGLE_FRAME(PikachuPartnerCap); +PLACEHOLDER_ANIM_SINGLE_FRAME(PikachuWorldCap); + +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(PikachuGigantamax); +#endif //P_GIGANTAMAX_FORMS static const union AnimCmd sAnim_Raichu_1[] = { @@ -288,15 +382,12 @@ static const union AnimCmd sAnim_Raichu_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Raichu_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; +#if P_ALOLAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(RaichuAlolan); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_PIKACHU +#if P_FAMILY_SANDSHREW static const union AnimCmd sAnim_Sandshrew_1[] = { ANIMCMD_FRAME(0, 10), @@ -307,15 +398,6 @@ static const union AnimCmd sAnim_Sandshrew_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Sandshrew_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Sandslash_1[] = { ANIMCMD_FRAME(0, 10), @@ -326,15 +408,13 @@ static const union AnimCmd sAnim_Sandslash_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Sandslash_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; +#if P_ALOLAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(SandshrewAlolan); +PLACEHOLDER_ANIM_SINGLE_FRAME(SandslashAlolan); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_SANDSHREW +#if P_FAMILY_NIDORAN static const union AnimCmd sAnim_NidoranF_1[] = { ANIMCMD_FRAME(0, 5), @@ -387,6 +467,19 @@ static const union AnimCmd sAnim_Nidoking_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_NIDORAN + +#if P_FAMILY_CLEFAIRY +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Cleffa_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; +#endif //P_GEN_2_CROSS_EVOS static const union AnimCmd sAnim_Clefairy_1[] = { @@ -403,7 +496,9 @@ static const union AnimCmd sAnim_Clefable_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_CLEFAIRY +#if P_FAMILY_VULPIX static const union AnimCmd sAnim_Vulpix_1[] = { ANIMCMD_FRAME(0, 15), @@ -414,15 +509,6 @@ static const union AnimCmd sAnim_Vulpix_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Vulpix_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Ninetales_1[] = { ANIMCMD_FRAME(0, 15), @@ -433,14 +519,24 @@ static const union AnimCmd sAnim_Ninetales_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Ninetales_2[] = +#if P_ALOLAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(VulpixAlolan); +PLACEHOLDER_ANIM_SINGLE_FRAME(NinetalesAlolan); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_VULPIX + +#if P_FAMILY_JIGGLYPUFF +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Igglybuff_1[] = { - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_GEN_2_CROSS_EVOS static const union AnimCmd sAnim_Jigglypuff_1[] = { @@ -452,15 +548,6 @@ static const union AnimCmd sAnim_Jigglypuff_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Jigglypuff_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Wigglytuff_1[] = { ANIMCMD_FRAME(0, 15), @@ -470,16 +557,9 @@ static const union AnimCmd sAnim_Wigglytuff_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_JIGGLYPUFF -static const union AnimCmd sAnim_Wigglytuff_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - +#if P_FAMILY_ZUBAT static const union AnimCmd sAnim_Zubat_1[] = { ANIMCMD_FRAME(0, 3), @@ -522,6 +602,32 @@ static const union AnimCmd sAnim_Golbat_1[] = ANIMCMD_END, }; +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Crobat_1[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_END, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ZUBAT + +#if P_FAMILY_ODDISH static const union AnimCmd sAnim_Oddish_1[] = { ANIMCMD_FRAME(0, 11), @@ -550,6 +656,31 @@ static const union AnimCmd sAnim_Vileplume_1[] = ANIMCMD_END, }; +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Bellossom_1[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ODDISH + +#if P_FAMILY_PARAS static const union AnimCmd sAnim_Paras_1[] = { ANIMCMD_FRAME(1, 5), @@ -581,7 +712,9 @@ static const union AnimCmd sAnim_Parasect_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_PARAS +#if P_FAMILY_VENONAT static const union AnimCmd sAnim_Venonat_1[] = { ANIMCMD_FRAME(1, 5), @@ -619,7 +752,9 @@ static const union AnimCmd sAnim_Venomoth_1[] = ANIMCMD_FRAME(0, 4), ANIMCMD_END, }; +#endif //P_FAMILY_VENONAT +#if P_FAMILY_DIGLETT static const union AnimCmd sAnim_Diglett_1[] = { ANIMCMD_FRAME(0, 25), @@ -643,6 +778,13 @@ static const union AnimCmd sAnim_Dugtrio_1[] = ANIMCMD_END, }; +#if P_ALOLAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(DiglettAlolan); +PLACEHOLDER_ANIM_SINGLE_FRAME(DugtrioAlolan); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_DIGLETT + +#if P_FAMILY_MEOWTH static const union AnimCmd sAnim_Meowth_1[] = { ANIMCMD_FRAME(1, 8), @@ -661,6 +803,22 @@ static const union AnimCmd sAnim_Persian_1[] = ANIMCMD_END, }; +#if P_ALOLAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(MeowthAlolan); +PLACEHOLDER_ANIM_SINGLE_FRAME(PersianAlolan); +#endif //P_ALOLAN_FORMS + +#if P_GALARIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(MeowthGalarian); +PLACEHOLDER_ANIM_SINGLE_FRAME(Perrserker); +#endif //P_GALARIAN_FORMS + +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(MeowthGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MEOWTH + +#if P_FAMILY_PSYDUCK static const union AnimCmd sAnim_Psyduck_1[] = { ANIMCMD_FRAME(0, 15), @@ -671,15 +829,6 @@ static const union AnimCmd sAnim_Psyduck_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Psyduck_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Golduck_1[] = { ANIMCMD_FRAME(0, 15), @@ -689,16 +838,9 @@ static const union AnimCmd sAnim_Golduck_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_PSYDUCK -static const union AnimCmd sAnim_Golduck_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - +#if P_FAMILY_MANKEY static const union AnimCmd sAnim_Mankey_1[] = { ANIMCMD_FRAME(1, 5), @@ -722,6 +864,12 @@ static const union AnimCmd sAnim_Primeape_1[] = ANIMCMD_END, }; +#if P_GEN_9_CROSS_EVOS +PLACEHOLDER_ANIM_SINGLE_FRAME(Annihilape); +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_MANKEY + +#if P_FAMILY_GROWLITHE static const union AnimCmd sAnim_Growlithe_1[] = { ANIMCMD_FRAME(1, 8), @@ -740,6 +888,13 @@ static const union AnimCmd sAnim_Arcanine_1[] = ANIMCMD_END, }; +#if P_HISUIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(GrowlitheHisuian); +PLACEHOLDER_ANIM_SINGLE_FRAME(ArcanineHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_GROWLITHE + +#if P_FAMILY_POLIWAG static const union AnimCmd sAnim_Poliwag_1[] = { ANIMCMD_FRAME(0, 20), @@ -765,6 +920,21 @@ static const union AnimCmd sAnim_Poliwrath_1[] = ANIMCMD_END, }; +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Politoed_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_POLIWAG + +#if P_FAMILY_ABRA static const union AnimCmd sAnim_Abra_1[] = { ANIMCMD_FRAME(0, 7), @@ -791,6 +961,12 @@ static const union AnimCmd sAnim_Alakazam_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(AlakazamMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ABRA + +#if P_FAMILY_MACHOP static const union AnimCmd sAnim_Machop_1[] = { ANIMCMD_FRAME(0, 6), @@ -821,6 +997,12 @@ static const union AnimCmd sAnim_Machamp_1[] = ANIMCMD_END, }; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(MachampGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MACHOP + +#if P_FAMILY_BELLSPROUT static const union AnimCmd sAnim_Bellsprout_1[] = { ANIMCMD_FRAME(0, 5), @@ -852,7 +1034,9 @@ static const union AnimCmd sAnim_Victreebel_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_BELLSPROUT +#if P_FAMILY_TENTACOOL static const union AnimCmd sAnim_Tentacool_1[] = { ANIMCMD_FRAME(0, 8), @@ -872,7 +1056,9 @@ static const union AnimCmd sAnim_Tentacruel_1[] = ANIMCMD_FRAME(0, 8), ANIMCMD_END, }; +#endif //P_FAMILY_TENTACOOL +#if P_FAMILY_GEODUDE static const union AnimCmd sAnim_Geodude_1[] = { ANIMCMD_FRAME(0, 15), @@ -901,6 +1087,14 @@ static const union AnimCmd sAnim_Golem_1[] = ANIMCMD_END, }; +#if P_ALOLAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(GeodudeAlolan); +PLACEHOLDER_ANIM_SINGLE_FRAME(GravelerAlolan); +PLACEHOLDER_ANIM_SINGLE_FRAME(GolemAlolan); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GEODUDE + +#if P_FAMILY_PONYTA static const union AnimCmd sAnim_Ponyta_1[] = { ANIMCMD_FRAME(1, 30), @@ -916,6 +1110,13 @@ static const union AnimCmd sAnim_Rapidash_1[] = ANIMCMD_END, }; +#if P_GALARIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(PonytaGalarian); +PLACEHOLDER_ANIM_SINGLE_FRAME(RapidashGalarian); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_PONYTA + +#if P_FAMILY_SLOWPOKE static const union AnimCmd sAnim_Slowpoke_1[] = { ANIMCMD_FRAME(0, 20), @@ -931,6 +1132,30 @@ static const union AnimCmd sAnim_Slowbro_1[] = ANIMCMD_END, }; +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Slowking_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_GEN_2_CROSS_EVOS + +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(SlowbroMega); +#endif //P_MEGA_EVOLUTIONS + +#if P_GALARIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(SlowpokeGalarian); +PLACEHOLDER_ANIM_SINGLE_FRAME(SlowbroGalarian); +#if P_GEN_2_CROSS_EVOS +PLACEHOLDER_ANIM_SINGLE_FRAME(SlowkingGalarian); +#endif //P_GEN_2_CROSS_EVOS +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_SLOWPOKE + +#if P_FAMILY_MAGNEMITE static const union AnimCmd sAnim_Magnemite_1[] = { ANIMCMD_FRAME(0, 28), @@ -953,6 +1178,20 @@ static const union AnimCmd sAnim_Magneton_1[] = ANIMCMD_END, }; +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Magnezone_1[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGNEMITE + +#if P_FAMILY_FARFETCHD static const union AnimCmd sAnim_Farfetchd_1[] = { ANIMCMD_FRAME(1, 5), @@ -970,6 +1209,13 @@ static const union AnimCmd sAnim_Farfetchd_1[] = ANIMCMD_END, }; +#if P_GALARIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(FarfetchdGalarian); +PLACEHOLDER_ANIM_SINGLE_FRAME(Sirfetchd); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_FARFETCHD + +#if P_FAMILY_DODUO static const union AnimCmd sAnim_Doduo_1[] = { ANIMCMD_FRAME(0, 18), @@ -988,16 +1234,18 @@ static const union AnimCmd sAnim_Dodrio_1[] = ANIMCMD_FRAME(1, 12), ANIMCMD_FRAME(0, 12), ANIMCMD_FRAME(1, 12), - ANIMCMD_FRAME(0, 12), - ANIMCMD_FRAME(1, 12), ANIMCMD_FRAME(0, 8), ANIMCMD_END, }; +#endif //P_FAMILY_DODUO +#if P_FAMILY_SEEL static const union AnimCmd sAnim_Seel_1[] = { - ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(1, 30), ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; @@ -1008,7 +1256,9 @@ static const union AnimCmd sAnim_Dewgong_1[] = ANIMCMD_FRAME(0, 30), ANIMCMD_END, }; +#endif //P_FAMILY_SEEL +#if P_FAMILY_GRIMER static const union AnimCmd sAnim_Grimer_1[] = { ANIMCMD_FRAME(0, 10), @@ -1019,15 +1269,6 @@ static const union AnimCmd sAnim_Grimer_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Grimer_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Muk_1[] = { ANIMCMD_FRAME(0, 10), @@ -1038,15 +1279,13 @@ static const union AnimCmd sAnim_Muk_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Muk_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; +#if P_ALOLAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(GrimerAlolan); +PLACEHOLDER_ANIM_SINGLE_FRAME(MukAlolan); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GRIMER +#if P_FAMILY_SHELLDER static const union AnimCmd sAnim_Shellder_1[] = { ANIMCMD_FRAME(1, 5), @@ -1058,30 +1297,24 @@ static const union AnimCmd sAnim_Shellder_1[] = static const union AnimCmd sAnim_Cloyster_1[] = { - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 25), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 32), + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_SHELLDER +#if P_FAMILY_GASTLY static const union AnimCmd sAnim_Gastly_1[] = { - ANIMCMD_FRAME(1, 50), - ANIMCMD_FRAME(1, 30), ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; @@ -1103,14 +1336,41 @@ static const union AnimCmd sAnim_Gengar_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(GengarMega); +#endif //P_MEGA_EVOLUTIONS + +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(GengarGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_GASTLY + +#if P_FAMILY_ONIX static const union AnimCmd sAnim_Onix_1[] = { ANIMCMD_FRAME(1, 50), - ANIMCMD_FRAME(1, 30), ANIMCMD_FRAME(0, 30), ANIMCMD_END, }; +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Steelix_1[] = +{ + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 21), + ANIMCMD_FRAME(0, 13), + ANIMCMD_FRAME(1, 21), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(SteelixMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ONIX + +#if P_FAMILY_DROWZEE static const union AnimCmd sAnim_Drowzee_1[] = { ANIMCMD_FRAME(1, 12), @@ -1133,32 +1393,33 @@ static const union AnimCmd sAnim_Hypno_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_DROWZEE +#if P_FAMILY_KRABBY static const union AnimCmd sAnim_Krabby_1[] = { - ANIMCMD_FRAME(1, 8), - ANIMCMD_FRAME(0, 8), - ANIMCMD_FRAME(1, 8), - ANIMCMD_FRAME(0, 8), - ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), ANIMCMD_FRAME(0, 8), ANIMCMD_END, }; static const union AnimCmd sAnim_Kingler_1[] = { - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 25), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(0, 14), ANIMCMD_END, }; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(KinglerGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_KRABBY + +#if P_FAMILY_VOLTORB static const union AnimCmd sAnim_Voltorb_1[] = { ANIMCMD_FRAME(0, 4), @@ -1171,14 +1432,20 @@ static const union AnimCmd sAnim_Voltorb_1[] = static const union AnimCmd sAnim_Electrode_1[] = { - ANIMCMD_FRAME(0, 8), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 8), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 34), + ANIMCMD_FRAME(1, 34), + ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#if P_HISUIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(VoltorbHisuian); +PLACEHOLDER_ANIM_SINGLE_FRAME(ElectrodeHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_VOLTORB + +#if P_FAMILY_EXEGGCUTE static const union AnimCmd sAnim_Exeggcute_1[] = { ANIMCMD_FRAME(0, 10), @@ -1200,14 +1467,20 @@ static const union AnimCmd sAnim_Exeggutor_1[] = ANIMCMD_END, }; +#if P_ALOLAN_FORMS +PLACEHOLDER_ANIM_TWO_FRAMES(ExeggutorAlolan); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_EXEGGCUTE + +#if P_FAMILY_CUBONE static const union AnimCmd sAnim_Cubone_1[] = { - ANIMCMD_FRAME(1, 14), - ANIMCMD_FRAME(0, 14), - ANIMCMD_FRAME(1, 14), - ANIMCMD_FRAME(0, 14), - ANIMCMD_FRAME(1, 14), - ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_LOOP(1), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 32), + ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; @@ -1222,34 +1495,84 @@ static const union AnimCmd sAnim_Marowak_1[] = ANIMCMD_END, }; +#if P_ALOLAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(MarowakAlolan); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_CUBONE + +#if P_FAMILY_HITMONS +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Tyrogue_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; +#endif //P_GEN_2_CROSS_EVOS + static const union AnimCmd sAnim_Hitmonlee_1[] = { - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; static const union AnimCmd sAnim_Hitmonchan_1[] = { - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 25), - ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(0, 17), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), ANIMCMD_END, }; +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Hitmontop_1[] = +{ + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 26), + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 32), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HITMONS + +#if P_FAMILY_LICKITUNG static const union AnimCmd sAnim_Lickitung_1[] = { - ANIMCMD_FRAME(0, 28), - ANIMCMD_FRAME(1, 32), + ANIMCMD_FRAME(1, 16), ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Lickilicky_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 50), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_LICKITUNG + +#if P_FAMILY_KOFFING static const union AnimCmd sAnim_Koffing_1[] = { ANIMCMD_FRAME(0, 10), @@ -1260,15 +1583,6 @@ static const union AnimCmd sAnim_Koffing_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Koffing_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Weezing_1[] = { ANIMCMD_FRAME(0, 10), @@ -1279,15 +1593,12 @@ static const union AnimCmd sAnim_Weezing_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Weezing_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; +#if P_GALARIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(WeezingGalarian); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_KOFFING +#if P_FAMILY_RHYHORN static const union AnimCmd sAnim_Rhyhorn_1[] = { ANIMCMD_FRAME(0, 11), @@ -1298,33 +1609,36 @@ static const union AnimCmd sAnim_Rhyhorn_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Rhyhorn_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Rhydon_1[] = { - ANIMCMD_FRAME(0, 11), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 48), - ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; -static const union AnimCmd sAnim_Rhydon_2[] = +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Rhyperior_1[] = { + ANIMCMD_FRAME(0, 50), + ANIMCMD_FRAME(1, 25), ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_RHYHORN + +#if P_FAMILY_CHANSEY +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Happiny_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS static const union AnimCmd sAnim_Chansey_1[] = { @@ -1334,21 +1648,42 @@ static const union AnimCmd sAnim_Chansey_1[] = ANIMCMD_END, }; +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Blissey_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 30), + ANIMCMD_END, +}; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_CHANSEY + +#if P_FAMILY_TANGELA static const union AnimCmd sAnim_Tangela_1[] = { - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(0, 40), + ANIMCMD_FRAME(1, 24), + ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Tangrowth_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 50), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TANGELA + +#if P_FAMILY_KANGASKHAN static const union AnimCmd sAnim_Kangaskhan_1[] = { ANIMCMD_FRAME(1, 10), @@ -1358,6 +1693,12 @@ static const union AnimCmd sAnim_Kangaskhan_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(KangaskhanMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_KANGASKHAN + +#if P_FAMILY_HORSEA static const union AnimCmd sAnim_Horsea_1[] = { ANIMCMD_FRAME(0, 11), @@ -1368,15 +1709,6 @@ static const union AnimCmd sAnim_Horsea_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Horsea_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Seadra_1[] = { ANIMCMD_FRAME(0, 11), @@ -1387,15 +1719,20 @@ static const union AnimCmd sAnim_Seadra_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Seadra_2[] = +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Kingdra_1[] = { - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HORSEA +#if P_FAMILY_GOLDEEN static const union AnimCmd sAnim_Goldeen_1[] = { ANIMCMD_FRAME(0, 16), @@ -1419,7 +1756,9 @@ static const union AnimCmd sAnim_Seaking_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_GOLDEEN +#if P_FAMILY_STARYU static const union AnimCmd sAnim_Staryu_1[] = { ANIMCMD_FRAME(0, 11), @@ -1430,15 +1769,6 @@ static const union AnimCmd sAnim_Staryu_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Staryu_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Starmie_1[] = { ANIMCMD_FRAME(0, 11), @@ -1448,15 +1778,21 @@ static const union AnimCmd sAnim_Starmie_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_STARYU -static const union AnimCmd sAnim_Starmie_2[] = +#if P_FAMILY_MR_MIME +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_MimeJr_1[] = { - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_GEN_4_CROSS_EVOS static const union AnimCmd sAnim_MrMime_1[] = { @@ -1469,6 +1805,13 @@ static const union AnimCmd sAnim_MrMime_1[] = ANIMCMD_END, }; +#if P_GALARIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(MrMimeGalarian); +PLACEHOLDER_ANIM_SINGLE_FRAME(MrRime); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MR_MIME + +#if P_FAMILY_SCYTHER static const union AnimCmd sAnim_Scyther_1[] = { ANIMCMD_FRAME(1, 5), @@ -1482,6 +1825,34 @@ static const union AnimCmd sAnim_Scyther_1[] = ANIMCMD_END, }; +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Scizor_1[] = +{ + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(ScizorMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_2_CROSS_EVOS + +#if P_GEN_8_CROSS_EVOS +PLACEHOLDER_ANIM_SINGLE_FRAME(Kleavor); +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_SCYTHER + +#if P_FAMILY_JYNX +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Smoochum_1[] = +{ + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; +#endif //P_GEN_2_CROSS_EVOS + static const union AnimCmd sAnim_Jynx_1[] = { ANIMCMD_FRAME(1, 40), @@ -1491,6 +1862,18 @@ static const union AnimCmd sAnim_Jynx_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_JYNX + +#if P_FAMILY_ELECTABUZZ +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Elekid_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; +#endif //P_GEN_2_CROSS_EVOS static const union AnimCmd sAnim_Electabuzz_1[] = { @@ -1502,6 +1885,29 @@ static const union AnimCmd sAnim_Electabuzz_1[] = ANIMCMD_END, }; +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Electivire_1[] = +{ + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ELECTABUZZ + +#if P_FAMILY_MAGMAR +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Magby_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; +#endif //P_GEN_2_CROSS_EVOS + static const union AnimCmd sAnim_Magmar_1[] = { ANIMCMD_FRAME(1, 40), @@ -1509,6 +1915,17 @@ static const union AnimCmd sAnim_Magmar_1[] = ANIMCMD_END, }; +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Magmortar_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGMAR + +#if P_FAMILY_PINSIR static const union AnimCmd sAnim_Pinsir_1[] = { ANIMCMD_FRAME(0, 11), @@ -1519,15 +1936,12 @@ static const union AnimCmd sAnim_Pinsir_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Pinsir_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(PinsirMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_PINSIR +#if P_FAMILY_TAUROS static const union AnimCmd sAnim_Tauros_1[] = { ANIMCMD_FRAME(1, 10), @@ -1537,6 +1951,12 @@ static const union AnimCmd sAnim_Tauros_1[] = ANIMCMD_END, }; +#if P_PALDEAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(TaurosPaldean); +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_TAUROS + +#if P_FAMILY_MAGIKARP static const union AnimCmd sAnim_Magikarp_1[] = { ANIMCMD_FRAME(0, 8), @@ -1559,6 +1979,12 @@ static const union AnimCmd sAnim_Gyarados_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(GyaradosMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAGIKARP + +#if P_FAMILY_LAPRAS static const union AnimCmd sAnim_Lapras_1[] = { ANIMCMD_FRAME(1, 30), @@ -1566,6 +1992,12 @@ static const union AnimCmd sAnim_Lapras_1[] = ANIMCMD_END, }; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(LaprasGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_LAPRAS + +#if P_FAMILY_DITTO static const union AnimCmd sAnim_Ditto_1[] = { ANIMCMD_FRAME(1, 10), @@ -1574,7 +2006,9 @@ static const union AnimCmd sAnim_Ditto_1[] = ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; +#endif //P_FAMILY_DITTO +#if P_FAMILY_EEVEE static const union AnimCmd sAnim_Eevee_1[] = { ANIMCMD_FRAME(1, 33), @@ -1582,6 +2016,10 @@ static const union AnimCmd sAnim_Eevee_1[] = ANIMCMD_END, }; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(EeveeGigantamax); +#endif //P_GIGANTAMAX_FORMS + static const union AnimCmd sAnim_Vaporeon_1[] = { ANIMCMD_FRAME(1, 40), @@ -1603,6 +2041,53 @@ static const union AnimCmd sAnim_Flareon_1[] = ANIMCMD_END, }; +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Espeon_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Umbreon_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; +#endif //P_GEN_2_CROSS_EVOS + +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Leafeon_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Glaceon_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 36), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS + +#if P_GEN_6_CROSS_EVOS +static const union AnimCmd sAnim_Sylveon_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; +#endif //P_GEN_6_CROSS_EVOS +#endif //P_FAMILY_EEVEE + +#if P_FAMILY_PORYGON static const union AnimCmd sAnim_Porygon_1[] = { ANIMCMD_FRAME(1, 10), @@ -1612,6 +2097,31 @@ static const union AnimCmd sAnim_Porygon_1[] = ANIMCMD_END, }; +#if P_GEN_2_CROSS_EVOS +static const union AnimCmd sAnim_Porygon2_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Porygon_Z_1[] = +{ + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 40), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_PORYGON + +#if P_FAMILY_OMANYTE static const union AnimCmd sAnim_Omanyte_1[] = { ANIMCMD_FRAME(1, 10), @@ -1633,7 +2143,9 @@ static const union AnimCmd sAnim_Omastar_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_OMANYTE +#if P_FAMILY_KABUTO static const union AnimCmd sAnim_Kabuto_1[] = { ANIMCMD_FRAME(1, 8), @@ -1655,7 +2167,9 @@ static const union AnimCmd sAnim_Kabutops_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_KABUTO +#if P_FAMILY_AERODACTYL static const union AnimCmd sAnim_Aerodactyl_1[] = { ANIMCMD_FRAME(1, 10), @@ -1665,6 +2179,22 @@ static const union AnimCmd sAnim_Aerodactyl_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(AerodactylMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_AERODACTYL + +#if P_FAMILY_SNORLAX +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Munchlax_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS + static const union AnimCmd sAnim_Snorlax_1[] = { ANIMCMD_FRAME(1, 50), @@ -1673,6 +2203,12 @@ static const union AnimCmd sAnim_Snorlax_1[] = ANIMCMD_END, }; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(SnorlaxGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SNORLAX + +#if P_FAMILY_ARTICUNO static const union AnimCmd sAnim_Articuno_1[] = { ANIMCMD_FRAME(1, 25), @@ -1682,6 +2218,12 @@ static const union AnimCmd sAnim_Articuno_1[] = ANIMCMD_END, }; +#if P_GALARIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(ArticunoGalarian); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ARTICUNO + +#if P_FAMILY_ZAPDOS static const union AnimCmd sAnim_Zapdos_1[] = { ANIMCMD_FRAME(1, 10), @@ -1691,6 +2233,12 @@ static const union AnimCmd sAnim_Zapdos_1[] = ANIMCMD_END, }; +#if P_GALARIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(ZapdosGalarian); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZAPDOS + +#if P_FAMILY_MOLTRES static const union AnimCmd sAnim_Moltres_1[] = { ANIMCMD_FRAME(1, 3), @@ -1728,6 +2276,12 @@ static const union AnimCmd sAnim_Moltres_1[] = ANIMCMD_END, }; +#if P_GALARIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(MoltresGalarian); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MOLTRES + +#if P_FAMILY_DRATINI static const union AnimCmd sAnim_Dratini_1[] = { ANIMCMD_FRAME(0, 15), @@ -1752,7 +2306,9 @@ static const union AnimCmd sAnim_Dragonite_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_DRATINI +#if P_FAMILY_MEWTWO static const union AnimCmd sAnim_Mewtwo_1[] = { ANIMCMD_FRAME(1, 15), @@ -1760,6 +2316,16 @@ static const union AnimCmd sAnim_Mewtwo_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(MewtwoMegaX); +#endif //P_MEGA_EVOLUTIONS + +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(MewtwoMegaY); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MEWTWO + +#if P_FAMILY_MEW static const union AnimCmd sAnim_Mew_1[] = { ANIMCMD_FRAME(1, 50), @@ -1767,7 +2333,9 @@ static const union AnimCmd sAnim_Mew_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_MEW +#if P_FAMILY_CHIKORITA static const union AnimCmd sAnim_Chikorita_1[] = { ANIMCMD_FRAME(0, 15), @@ -1789,7 +2357,9 @@ static const union AnimCmd sAnim_Meganium_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_CHIKORITA +#if P_FAMILY_CYNDAQUIL static const union AnimCmd sAnim_Cyndaquil_1[] = { ANIMCMD_FRAME(1, 10), @@ -1813,6 +2383,12 @@ static const union AnimCmd sAnim_Typhlosion_1[] = ANIMCMD_END, }; +#if P_HISUIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(TyphlosionHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_CYNDAQUIL + +#if P_FAMILY_TOTODILE static const union AnimCmd sAnim_Totodile_1[] = { ANIMCMD_FRAME(1, 8), @@ -1839,7 +2415,9 @@ static const union AnimCmd sAnim_Feraligatr_1[] = ANIMCMD_FRAME(0, 40), ANIMCMD_END, }; +#endif //P_FAMILY_TOTODILE +#if P_FAMILY_SENTRET static const union AnimCmd sAnim_Sentret_1[] = { ANIMCMD_FRAME(1, 15), @@ -1855,7 +2433,9 @@ static const union AnimCmd sAnim_Furret_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_SENTRET +#if P_FAMILY_HOOTHOOT static const union AnimCmd sAnim_Hoothoot_1[] = { ANIMCMD_FRAME(1, 7), @@ -1879,7 +2459,9 @@ static const union AnimCmd sAnim_Noctowl_1[] = ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; +#endif //P_FAMILY_HOOTHOOT +#if P_FAMILY_LEDYBA static const union AnimCmd sAnim_Ledyba_1[] = { ANIMCMD_FRAME(1, 10), @@ -1897,7 +2479,9 @@ static const union AnimCmd sAnim_Ledian_1[] = ANIMCMD_FRAME(0, 25), ANIMCMD_END, }; +#endif //P_FAMILY_LEDYBA +#if P_FAMILY_SPINARAK static const union AnimCmd sAnim_Spinarak_1[] = { ANIMCMD_FRAME(1, 6), @@ -1919,29 +2503,9 @@ static const union AnimCmd sAnim_Ariados_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_SPINARAK -static const union AnimCmd sAnim_Crobat_1[] = -{ - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_END, -}; - +#if P_FAMILY_CHINCHOU static const union AnimCmd sAnim_Chinchou_1[] = { ANIMCMD_FRAME(0, 11), @@ -1952,15 +2516,6 @@ static const union AnimCmd sAnim_Chinchou_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Chinchou_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Lanturn_1[] = { ANIMCMD_FRAME(0, 11), @@ -1970,63 +2525,9 @@ static const union AnimCmd sAnim_Lanturn_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_CHINCHOU -static const union AnimCmd sAnim_Lanturn_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Pichu_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Pichu_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Cleffa_1[] = -{ - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Igglybuff_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Igglybuff_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - +#if P_FAMILY_TOGEPI static const union AnimCmd sAnim_Togepi_1[] = { ANIMCMD_FRAME(1, 50), @@ -2043,6 +2544,22 @@ static const union AnimCmd sAnim_Togetic_1[] = ANIMCMD_END, }; +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Togekiss_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TOGEPI + +#if P_FAMILY_NATU static const union AnimCmd sAnim_Natu_1[] = { ANIMCMD_FRAME(0, 15), @@ -2053,15 +2570,6 @@ static const union AnimCmd sAnim_Natu_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Natu_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Xatu_1[] = { ANIMCMD_FRAME(0, 15), @@ -2073,16 +2581,9 @@ static const union AnimCmd sAnim_Xatu_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_NATU -static const union AnimCmd sAnim_Xatu_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - +#if P_FAMILY_MAREEP static const union AnimCmd sAnim_Mareep_1[] = { ANIMCMD_FRAME(1, 10), @@ -2112,26 +2613,25 @@ static const union AnimCmd sAnim_Ampharos_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Bellossom_1[] = +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(AmpharosMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAREEP + +#if P_FAMILY_MARILL +#if P_GEN_3_CROSS_EVOS +static const union AnimCmd sAnim_Azurill_1[] = { - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 12), ANIMCMD_END, }; +#endif //P_GEN_3_CROSS_EVOS static const union AnimCmd sAnim_Marill_1[] = { @@ -2150,6 +2650,20 @@ static const union AnimCmd sAnim_Azumarill_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_MARILL + +#if P_FAMILY_SUDOWOODO +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Bonsly_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS static const union AnimCmd sAnim_Sudowoodo_1[] = { @@ -2161,18 +2675,9 @@ static const union AnimCmd sAnim_Sudowoodo_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_SUDOWOODO -static const union AnimCmd sAnim_Politoed_1[] = -{ - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 35), - ANIMCMD_FRAME(0, 5), - ANIMCMD_END, -}; - +#if P_FAMILY_HOPPIP static const union AnimCmd sAnim_Hoppip_1[] = { ANIMCMD_FRAME(1, 25), @@ -2205,7 +2710,9 @@ static const union AnimCmd sAnim_Jumpluff_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_HOPPIP +#if P_FAMILY_AIPOM static const union AnimCmd sAnim_Aipom_1[] = { ANIMCMD_FRAME(1, 35), @@ -2213,6 +2720,18 @@ static const union AnimCmd sAnim_Aipom_1[] = ANIMCMD_END, }; +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Ambipom_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 30), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_AIPOM + +#if P_FAMILY_SUNKERN static const union AnimCmd sAnim_Sunkern_1[] = { ANIMCMD_FRAME(1, 8), @@ -2231,7 +2750,9 @@ static const union AnimCmd sAnim_Sunflora_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_SUNKERN +#if P_FAMILY_YANMA static const union AnimCmd sAnim_Yanma_1[] = { ANIMCMD_FRAME(1, 2), @@ -2259,6 +2780,41 @@ static const union AnimCmd sAnim_Yanma_1[] = ANIMCMD_END, }; +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Yanmega_1[] = +{ + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 3), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_YANMA + +#if P_FAMILY_WOOPER static const union AnimCmd sAnim_Wooper_1[] = { ANIMCMD_FRAME(0, 15), @@ -2274,21 +2830,13 @@ static const union AnimCmd sAnim_Quagsire_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Espeon_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 25), - ANIMCMD_FRAME(0, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Umbreon_1[] = -{ - ANIMCMD_FRAME(1, 40), - ANIMCMD_FRAME(0, 20), - ANIMCMD_END, -}; +#if P_PALDEAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(WooperPaldean); +PLACEHOLDER_ANIM_SINGLE_FRAME(Clodsire); +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_WOOPER +#if P_FAMILY_MURKROW static const union AnimCmd sAnim_Murkrow_1[] = { ANIMCMD_FRAME(1, 15), @@ -2296,14 +2844,19 @@ static const union AnimCmd sAnim_Murkrow_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Slowking_1[] = +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Honchkrow_1[] = { - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(0, 21), + ANIMCMD_FRAME(1, 45), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MURKROW +#if P_FAMILY_MISDREAVUS static const union AnimCmd sAnim_Misdreavus_1[] = { ANIMCMD_FRAME(1, 10), @@ -2319,6 +2872,25 @@ static const union AnimCmd sAnim_Misdreavus_1[] = ANIMCMD_END, }; +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Mismagius_1[] = +{ + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MISDREAVUS + +#if P_FAMILY_UNOWN static const union AnimCmd sAnim_Unown_1[] = { ANIMCMD_FRAME(0, 30), @@ -2326,6 +2898,20 @@ static const union AnimCmd sAnim_Unown_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_UNOWN + +#if P_FAMILY_WOBBUFFET +#if P_GEN_3_CROSS_EVOS +static const union AnimCmd sAnim_Wynaut_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_GEN_3_CROSS_EVOS static const union AnimCmd sAnim_Wobbuffet_1[] = { @@ -2336,17 +2922,9 @@ static const union AnimCmd sAnim_Wobbuffet_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_WOBBUFFET -static const union AnimCmd sAnim_Wobbuffet_2[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - +#if P_FAMILY_GIRAFARIG static const union AnimCmd sAnim_Girafarig_1[] = { ANIMCMD_FRAME(0, 30), @@ -2355,15 +2933,12 @@ static const union AnimCmd sAnim_Girafarig_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Girafarig_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; +#if P_GEN_9_CROSS_EVOS +PLACEHOLDER_ANIM_SINGLE_FRAME(Farigiraf); +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_GIRAFARIG +#if P_FAMILY_PINECO static const union AnimCmd sAnim_Pineco_1[] = { ANIMCMD_FRAME(1, 10), @@ -2385,7 +2960,9 @@ static const union AnimCmd sAnim_Forretress_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_PINECO +#if P_FAMILY_DUNSPARCE static const union AnimCmd sAnim_Dunsparce_1[] = { ANIMCMD_FRAME(1, 10), @@ -2395,6 +2972,12 @@ static const union AnimCmd sAnim_Dunsparce_1[] = ANIMCMD_END, }; +#if P_GEN_9_CROSS_EVOS +PLACEHOLDER_ANIM_SINGLE_FRAME(Dudunsparce); +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_DUNSPARCE + +#if P_FAMILY_GLIGAR static const union AnimCmd sAnim_Gligar_1[] = { ANIMCMD_FRAME(1, 17), @@ -2402,16 +2985,19 @@ static const union AnimCmd sAnim_Gligar_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Steelix_1[] = +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Gliscor_1[] = { - ANIMCMD_FRAME(0, 7), - ANIMCMD_FRAME(1, 21), - ANIMCMD_FRAME(0, 13), - ANIMCMD_FRAME(1, 21), - ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 40), ANIMCMD_END, }; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_GLIGAR +#if P_FAMILY_SNUBBULL static const union AnimCmd sAnim_Snubbull_1[] = { ANIMCMD_FRAME(1, 32), @@ -2425,7 +3011,9 @@ static const union AnimCmd sAnim_Granbull_1[] = ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; +#endif //P_FAMILY_SNUBBULL +#if P_FAMILY_QWILFISH static const union AnimCmd sAnim_Qwilfish_1[] = { ANIMCMD_FRAME(1, 8), @@ -2438,13 +3026,13 @@ static const union AnimCmd sAnim_Qwilfish_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Scizor_1[] = -{ - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_END, -}; +#if P_HISUIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(QwilfishHisuian); +PLACEHOLDER_ANIM_SINGLE_FRAME(Overqwil); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_QWILFISH +#if P_FAMILY_SHUCKLE static const union AnimCmd sAnim_Shuckle_1[] = { ANIMCMD_FRAME(1, 50), @@ -2452,7 +3040,9 @@ static const union AnimCmd sAnim_Shuckle_1[] = ANIMCMD_FRAME(0, 30), ANIMCMD_END, }; +#endif //P_FAMILY_SHUCKLE +#if P_FAMILY_HERACROSS static const union AnimCmd sAnim_Heracross_1[] = { ANIMCMD_FRAME(0, 15), @@ -2463,6 +3053,12 @@ static const union AnimCmd sAnim_Heracross_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(HeracrossMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_HERACROSS + +#if P_FAMILY_SNEASEL static const union AnimCmd sAnim_Sneasel_1[] = { ANIMCMD_FRAME(1, 8), @@ -2474,6 +3070,22 @@ static const union AnimCmd sAnim_Sneasel_1[] = ANIMCMD_END, }; +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Weavile_1[] = +{ + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS + +#if P_HISUIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(SneaselHisuian); +PLACEHOLDER_ANIM_SINGLE_FRAME(Sneasler); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_SNEASEL + +#if P_FAMILY_TEDDIURSA static const union AnimCmd sAnim_Teddiursa_1[] = { ANIMCMD_FRAME(1, 30), @@ -2488,6 +3100,13 @@ static const union AnimCmd sAnim_Ursaring_1[] = ANIMCMD_END, }; +#if P_GEN_8_CROSS_EVOS +PLACEHOLDER_ANIM_SINGLE_FRAME(Ursaluna); +PLACEHOLDER_ANIM_SINGLE_FRAME(UrsalunaBloodmoon); +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_TEDDIURSA + +#if P_FAMILY_SLUGMA static const union AnimCmd sAnim_Slugma_1[] = { ANIMCMD_FRAME(0, 10), @@ -2498,15 +3117,6 @@ static const union AnimCmd sAnim_Slugma_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Slugma_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Magcargo_1[] = { ANIMCMD_FRAME(0, 10), @@ -2516,16 +3126,9 @@ static const union AnimCmd sAnim_Magcargo_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_SLUGMA -static const union AnimCmd sAnim_Magcargo_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - +#if P_FAMILY_SWINUB static const union AnimCmd sAnim_Swinub_1[] = { ANIMCMD_FRAME(1, 10), @@ -2544,6 +3147,18 @@ static const union AnimCmd sAnim_Piloswine_1[] = ANIMCMD_END, }; +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Mamoswine_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 30), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SWINUB + +#if P_FAMILY_CORSOLA static const union AnimCmd sAnim_Corsola_1[] = { ANIMCMD_FRAME(0, 11), @@ -2554,15 +3169,13 @@ static const union AnimCmd sAnim_Corsola_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Corsola_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; +#if P_GALARIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(CorsolaGalarian); +PLACEHOLDER_ANIM_SINGLE_FRAME(Cursola); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_CORSOLA +#if P_FAMILY_REMORAID static const union AnimCmd sAnim_Remoraid_1[] = { ANIMCMD_FRAME(0, 30), @@ -2579,13 +3192,28 @@ static const union AnimCmd sAnim_Octillery_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_REMORAID +#if P_FAMILY_DELIBIRD static const union AnimCmd sAnim_Delibird_1[] = { ANIMCMD_FRAME(1, 15), ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_DELIBIRD + +#if P_FAMILY_MANTINE +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Mantyke_1[] = +{ + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 45), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS static const union AnimCmd sAnim_Mantine_1[] = { @@ -2595,14 +3223,18 @@ static const union AnimCmd sAnim_Mantine_1[] = ANIMCMD_FRAME(0, 40), ANIMCMD_END, }; +#endif //P_FAMILY_MANTINE +#if P_FAMILY_SKARMORY static const union AnimCmd sAnim_Skarmory_1[] = { ANIMCMD_FRAME(1, 40), ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; +#endif //P_FAMILY_SKARMORY +#if P_FAMILY_HOUNDOUR static const union AnimCmd sAnim_Houndour_1[] = { ANIMCMD_FRAME(1, 40), @@ -2617,25 +3249,12 @@ static const union AnimCmd sAnim_Houndoom_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Kingdra_1[] = -{ - ANIMCMD_FRAME(0, 11), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Kingdra_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(HoundoomMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_HOUNDOUR +#if P_FAMILY_PHANPY static const union AnimCmd sAnim_Phanpy_1[] = { ANIMCMD_FRAME(0, 15), @@ -2648,15 +3267,6 @@ static const union AnimCmd sAnim_Phanpy_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Phanpy_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Donphan_1[] = { ANIMCMD_FRAME(0, 10), @@ -2664,17 +3274,9 @@ static const union AnimCmd sAnim_Donphan_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_PHANPY -static const union AnimCmd sAnim_Porygon2_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - +#if P_FAMILY_STANTLER static const union AnimCmd sAnim_Stantler_1[] = { ANIMCMD_FRAME(1, 15), @@ -2682,6 +3284,12 @@ static const union AnimCmd sAnim_Stantler_1[] = ANIMCMD_END, }; +#if P_GEN_8_CROSS_EVOS +PLACEHOLDER_ANIM_SINGLE_FRAME(Wyrdeer); +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_STANTLER + +#if P_FAMILY_SMEARGLE static const union AnimCmd sAnim_Smeargle_1[] = { ANIMCMD_FRAME(1, 12), @@ -2690,69 +3298,18 @@ static const union AnimCmd sAnim_Smeargle_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_SMEARGLE -static const union AnimCmd sAnim_Tyrogue_1[] = -{ - ANIMCMD_FRAME(1, 40), - ANIMCMD_FRAME(0, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Hitmontop_1[] = -{ - ANIMCMD_FRAME(0, 4), - ANIMCMD_FRAME(1, 4), - ANIMCMD_FRAME(0, 4), - ANIMCMD_FRAME(1, 4), - ANIMCMD_FRAME(0, 4), - ANIMCMD_FRAME(1, 4), - ANIMCMD_FRAME(0, 4), - ANIMCMD_FRAME(1, 4), - ANIMCMD_FRAME(0, 4), - ANIMCMD_FRAME(1, 4), - ANIMCMD_FRAME(0, 4), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Smoochum_1[] = -{ - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Elekid_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Magby_1[] = -{ - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - +#if P_FAMILY_MILTANK static const union AnimCmd sAnim_Miltank_1[] = { ANIMCMD_FRAME(1, 30), ANIMCMD_FRAME(0, 30), ANIMCMD_END, }; +#endif //P_FAMILY_MILTANK -static const union AnimCmd sAnim_Blissey_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 30), - ANIMCMD_END, -}; - +#if P_FAMILY_RAIKOU static const union AnimCmd sAnim_Raikou_1[] = { ANIMCMD_FRAME(0, 1), @@ -2760,21 +3317,27 @@ static const union AnimCmd sAnim_Raikou_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_RAIKOU +#if P_FAMILY_ENTEI static const union AnimCmd sAnim_Entei_1[] = { ANIMCMD_FRAME(1, 20), ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; +#endif //P_FAMILY_ENTEI +#if P_FAMILY_SUICUNE static const union AnimCmd sAnim_Suicune_1[] = { ANIMCMD_FRAME(1, 40), ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; +#endif //P_FAMILY_SUICUNE +#if P_FAMILY_LARVITAR static const union AnimCmd sAnim_Larvitar_1[] = { ANIMCMD_FRAME(1, 10), @@ -2799,6 +3362,12 @@ static const union AnimCmd sAnim_Tyranitar_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(TyranitarMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LARVITAR + +#if P_FAMILY_LUGIA static const union AnimCmd sAnim_Lugia_1[] = { ANIMCMD_FRAME(1, 5), @@ -2815,14 +3384,18 @@ static const union AnimCmd sAnim_Lugia_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_LUGIA +#if P_FAMILY_HO_OH static const union AnimCmd sAnim_HoOh_1[] = { ANIMCMD_FRAME(1, 20), ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; +#endif //P_FAMILY_HO_OH +#if P_FAMILY_CELEBI static const union AnimCmd sAnim_Celebi_1[] = { ANIMCMD_FRAME(1, 30), @@ -2831,15 +3404,9 @@ static const union AnimCmd sAnim_Celebi_1[] = ANIMCMD_FRAME(0, 30), ANIMCMD_END, }; +#endif //P_FAMILY_CELEBI -static const union AnimCmd sAnim_OldUnownB_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - +#if P_FAMILY_TREECKO static const union AnimCmd sAnim_Treecko_1[] = { ANIMCMD_FRAME(0, 6), @@ -2868,6 +3435,12 @@ static const union AnimCmd sAnim_Sceptile_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(SceptileMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_TREECKO + +#if P_FAMILY_TORCHIC static const union AnimCmd sAnim_Torchic_1[] = { ANIMCMD_FRAME(0, 7), @@ -2898,27 +3471,12 @@ static const union AnimCmd sAnim_Blaziken_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Blaziken_2[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_FRAME(2, 8), - ANIMCMD_FRAME(0, 8), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Blaziken_3[] = -{ - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(2, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Blaziken_4[] = -{ - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(BlazikenMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_TORCHIC +#if P_FAMILY_MUDKIP static const union AnimCmd sAnim_Mudkip_1[] = { ANIMCMD_FRAME(0, 10), @@ -2953,6 +3511,12 @@ static const union AnimCmd sAnim_Swampert_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(SwampertMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MUDKIP + +#if P_FAMILY_POOCHYENA static const union AnimCmd sAnim_Poochyena_1[] = { ANIMCMD_FRAME(0, 10), @@ -2970,7 +3534,9 @@ static const union AnimCmd sAnim_Mightyena_1[] = ANIMCMD_FRAME(0, 6), ANIMCMD_END, }; +#endif //P_FAMILY_POOCHYENA +#if P_FAMILY_ZIGZAGOON static const union AnimCmd sAnim_Zigzagoon_1[] = { ANIMCMD_FRAME(0, 27), @@ -2991,6 +3557,14 @@ static const union AnimCmd sAnim_Linoone_1[] = ANIMCMD_END, }; +#if P_GALARIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(ZigzagoonGalarian); +PLACEHOLDER_ANIM_SINGLE_FRAME(LinooneGalarian); +PLACEHOLDER_ANIM_SINGLE_FRAME(Obstagoon); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZIGZAGOON + +#if P_FAMILY_WURMPLE static const union AnimCmd sAnim_Wurmple_1[] = { ANIMCMD_FRAME(0, 22), @@ -3007,12 +3581,6 @@ static const union AnimCmd sAnim_Silcoon_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Silcoon_2[] = -{ - ANIMCMD_FRAME(1, 1), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Beautifly_1[] = { ANIMCMD_FRAME(0, 2), @@ -3027,12 +3595,6 @@ static const union AnimCmd sAnim_Beautifly_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Beautifly_2[] = -{ - ANIMCMD_FRAME(1, 1), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Cascoon_1[] = { ANIMCMD_FRAME(0, 10), @@ -3043,12 +3605,6 @@ static const union AnimCmd sAnim_Cascoon_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Cascoon_2[] = -{ - ANIMCMD_FRAME(1, 1), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Dustox_1[] = { ANIMCMD_FRAME(0, 1), @@ -3068,13 +3624,9 @@ static const union AnimCmd sAnim_Dustox_1[] = ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; +#endif //P_FAMILY_WURMPLE -static const union AnimCmd sAnim_Dustox_2[] = -{ - ANIMCMD_FRAME(1, 1), - ANIMCMD_END, -}; - +#if P_FAMILY_LOTAD static const union AnimCmd sAnim_Lotad_1[] = { ANIMCMD_FRAME(0, 22), @@ -3104,7 +3656,9 @@ static const union AnimCmd sAnim_Ludicolo_1[] = ANIMCMD_FRAME(0, 22), ANIMCMD_END, }; +#endif //P_FAMILY_LOTAD +#if P_FAMILY_SEEDOT static const union AnimCmd sAnim_Seedot_1[] = { ANIMCMD_FRAME(0, 10), @@ -3140,7 +3694,191 @@ static const union AnimCmd sAnim_Shiftry_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_SEEDOT +#if P_FAMILY_TAILLOW +static const union AnimCmd sAnim_Taillow_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Swellow_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; +#endif //P_FAMILY_TAILLOW + +#if P_FAMILY_WINGULL +static const union AnimCmd sAnim_Wingull_1[] = +{ + ANIMCMD_FRAME(0, 17), + ANIMCMD_FRAME(1, 23), + ANIMCMD_FRAME(0, 13), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Pelipper_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; +#endif //P_FAMILY_WINGULL + +#if P_FAMILY_RALTS +static const union AnimCmd sAnim_Ralts_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Kirlia_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 39), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Gardevoir_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(GardevoirMega); +#endif //P_MEGA_EVOLUTIONS + +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Gallade_1[] = +{ + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(GalladeMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RALTS + +#if P_FAMILY_SURSKIT +static const union AnimCmd sAnim_Surskit_1[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Masquerain_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; +#endif //P_FAMILY_SURSKIT + +#if P_FAMILY_SHROOMISH +static const union AnimCmd sAnim_Shroomish_1[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Breloom_1[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 7), + ANIMCMD_END, +}; +#endif //P_FAMILY_SHROOMISH + +#if P_FAMILY_SLAKOTH +static const union AnimCmd sAnim_Slakoth_1[] = +{ + ANIMCMD_FRAME(0, 13), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Vigoroth_1[] = +{ + ANIMCMD_FRAME(0, 13), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 13), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 13), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Slaking_1[] = +{ + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_END, +}; +#endif //P_FAMILY_SLAKOTH + +#if P_FAMILY_NINCADA static const union AnimCmd sAnim_Nincada_1[] = { ANIMCMD_FRAME(0, 15), @@ -3183,123 +3921,365 @@ static const union AnimCmd sAnim_Shedinja_1[] = ANIMCMD_FRAME(0, 11), ANIMCMD_END, }; +#endif //P_FAMILY_NINCADA -static const union AnimCmd sAnim_Taillow_1[] = +#if P_FAMILY_WHISMUR +static const union AnimCmd sAnim_Whismur_1[] = { - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 33), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), ANIMCMD_END, }; -static const union AnimCmd sAnim_Swellow_1[] = +static const union AnimCmd sAnim_Loudred_1[] = { - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 33), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Exploud_1[] = +{ + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 44), + ANIMCMD_FRAME(0, 9), + ANIMCMD_END, +}; +#endif //P_FAMILY_WHISMUR + +#if P_FAMILY_MAKUHITA +static const union AnimCmd sAnim_Makuhita_1[] = +{ + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 22), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Hariyama_1[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; +#endif //P_FAMILY_MAKUHITA + +#if P_FAMILY_NOSEPASS +static const union AnimCmd sAnim_Nosepass_1[] = +{ + ANIMCMD_FRAME(0, 27), + ANIMCMD_FRAME(1, 27), + ANIMCMD_FRAME(0, 27), + ANIMCMD_FRAME(1, 27), + ANIMCMD_FRAME(0, 27), + ANIMCMD_FRAME(1, 27), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; + +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Probopass_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_NOSEPASS + +#if P_FAMILY_SKITTY +static const union AnimCmd sAnim_Skitty_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 9), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Delcatty_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 46), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; +#endif //P_FAMILY_SKITTY + +#if P_FAMILY_SABLEYE +static const union AnimCmd sAnim_Sableye_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(SableyeMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SABLEYE + +#if P_FAMILY_MAWILE +static const union AnimCmd sAnim_Mawile_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(MawileMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAWILE + +#if P_FAMILY_ARON +static const union AnimCmd sAnim_Aron_1[] = +{ + ANIMCMD_FRAME(0, 33), + ANIMCMD_FRAME(1, 44), + ANIMCMD_FRAME(0, 33), + ANIMCMD_FRAME(1, 33), ANIMCMD_FRAME(0, 11), ANIMCMD_END, }; -static const union AnimCmd sAnim_Shroomish_1[] = +static const union AnimCmd sAnim_Lairon_1[] = { - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(1, 6), - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(1, 6), - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(1, 6), - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(1, 6), - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(1, 6), - ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 29), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 29), + ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_Breloom_1[] = +static const union AnimCmd sAnim_Aggron_1[] = { - ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 44), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(AggronMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ARON + +#if P_FAMILY_MEDITITE +static const union AnimCmd sAnim_Meditite_1[] = +{ + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 2), + ANIMCMD_FRAME(0, 22), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Medicham_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; + +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(MedichamMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MEDITITE + +#if P_FAMILY_ELECTRIKE +static const union AnimCmd sAnim_Electrike_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 17), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Manectric_1[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 33), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; + +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(ManectricMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ELECTRIKE + +#if P_FAMILY_PLUSLE +static const union AnimCmd sAnim_Plusle_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; +#endif //P_FAMILY_PLUSLE + +#if P_FAMILY_MINUN +static const union AnimCmd sAnim_Minun_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; +#endif //P_FAMILY_MINUN + +#if P_FAMILY_VOLBEAT_ILLUMISE +static const union AnimCmd sAnim_Volbeat_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Illumise_1[] = +{ + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 22), + ANIMCMD_FRAME(0, 11), + ANIMCMD_END, +}; +#endif //P_FAMILY_VOLBEAT_ILLUMISE + +#if P_FAMILY_ROSELIA +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Budew_1[] = +{ + ANIMCMD_FRAME(0, 30), ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS + +static const union AnimCmd sAnim_Roselia_1[] = +{ + ANIMCMD_FRAME(0, 18), + ANIMCMD_FRAME(1, 44), + ANIMCMD_FRAME(0, 22), + ANIMCMD_END, +}; + +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Roserade_1[] = +{ + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ROSELIA + +#if P_FAMILY_GULPIN +static const union AnimCmd sAnim_Gulpin_1[] = +{ + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_FRAME(0, 14), + ANIMCMD_FRAME(1, 14), + ANIMCMD_FRAME(0, 4), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Swalot_1[] = +{ + ANIMCMD_FRAME(0, 15), ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 7), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 30), ANIMCMD_END, }; +#endif //P_FAMILY_GULPIN -static const union AnimCmd sAnim_Spinda_1[] = -{ - ANIMCMD_FRAME(0, 17), - ANIMCMD_FRAME(1, 23), - ANIMCMD_FRAME(0, 17), - ANIMCMD_FRAME(1, 23), - ANIMCMD_FRAME(0, 13), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Wingull_1[] = -{ - ANIMCMD_FRAME(0, 17), - ANIMCMD_FRAME(1, 23), - ANIMCMD_FRAME(0, 13), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Pelipper_1[] = -{ - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Surskit_1[] = +#if P_FAMILY_CARVANHA +static const union AnimCmd sAnim_Carvanha_1[] = { ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(1, 18), - ANIMCMD_FRAME(0, 8), ANIMCMD_END, }; -static const union AnimCmd sAnim_Surskit_2[] = +static const union AnimCmd sAnim_Sharpedo_1[] = { - ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 22), ANIMCMD_END, }; -static const union AnimCmd sAnim_Masquerain_1[] = -{ - ANIMCMD_FRAME(0, 8), - ANIMCMD_FRAME(1, 8), - ANIMCMD_FRAME(0, 8), - ANIMCMD_FRAME(1, 8), - ANIMCMD_FRAME(0, 8), - ANIMCMD_FRAME(1, 8), - ANIMCMD_FRAME(0, 8), - ANIMCMD_FRAME(1, 8), - ANIMCMD_FRAME(0, 8), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Masquerain_2[] = -{ - ANIMCMD_FRAME(1, 1), - ANIMCMD_END, -}; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(SharpedoMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_CARVANHA +#if P_FAMILY_WAILMER static const union AnimCmd sAnim_Wailmer_1[] = { ANIMCMD_FRAME(0, 22), @@ -3319,34 +4299,100 @@ static const union AnimCmd sAnim_Wailord_1[] = ANIMCMD_FRAME(0, 33), ANIMCMD_END, }; +#endif //P_FAMILY_WAILMER -static const union AnimCmd sAnim_Skitty_1[] = +#if P_FAMILY_NUMEL +static const union AnimCmd sAnim_Numel_1[] = { ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 35), - ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 40), ANIMCMD_END, }; -static const union AnimCmd sAnim_Delcatty_1[] = +static const union AnimCmd sAnim_Camerupt_1[] = { - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 46), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Kecleon_1[] = -{ - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 18), - ANIMCMD_FRAME(0, 8), - ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; -static const union AnimCmd sAnim_Baltoy_1[] = +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(CameruptMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_NUMEL + +#if P_FAMILY_TORKOAL +static const union AnimCmd sAnim_Torkoal_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_FAMILY_TORKOAL + +#if P_FAMILY_SPOINK +static const union AnimCmd sAnim_Spoink_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Grumpig_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_FAMILY_SPOINK + +#if P_FAMILY_SPINDA +static const union AnimCmd sAnim_Spinda_1[] = +{ + ANIMCMD_FRAME(0, 17), + ANIMCMD_FRAME(1, 23), + ANIMCMD_FRAME(0, 17), + ANIMCMD_FRAME(1, 23), + ANIMCMD_FRAME(0, 13), + ANIMCMD_END, +}; +#endif //P_FAMILY_SPINDA + +#if P_FAMILY_TRAPINCH +static const union AnimCmd sAnim_Trapinch_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Vibrava_1[] = { ANIMCMD_FRAME(0, 15), ANIMCMD_FRAME(1, 15), @@ -3358,8 +4404,26 @@ static const union AnimCmd sAnim_Baltoy_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Claydol_1[] = +static const union AnimCmd sAnim_Flygon_1[] = { + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 50), + ANIMCMD_END, +}; +#endif //P_FAMILY_TRAPINCH + +#if P_FAMILY_CACNEA +static const union AnimCmd sAnim_Cacnea_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), ANIMCMD_FRAME(0, 15), ANIMCMD_FRAME(1, 15), ANIMCMD_FRAME(0, 15), @@ -3370,19 +4434,7 @@ static const union AnimCmd sAnim_Claydol_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Nosepass_1[] = -{ - ANIMCMD_FRAME(0, 27), - ANIMCMD_FRAME(1, 27), - ANIMCMD_FRAME(0, 27), - ANIMCMD_FRAME(1, 27), - ANIMCMD_FRAME(0, 27), - ANIMCMD_FRAME(1, 27), - ANIMCMD_FRAME(0, 3), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Torkoal_1[] = +static const union AnimCmd sAnim_Cacturne_1[] = { ANIMCMD_FRAME(0, 15), ANIMCMD_FRAME(1, 15), @@ -3391,9 +4443,13 @@ static const union AnimCmd sAnim_Torkoal_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_CACNEA -static const union AnimCmd sAnim_Sableye_1[] = +#if P_FAMILY_SWABLU +static const union AnimCmd sAnim_Swablu_1[] = { + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 10), ANIMCMD_FRAME(0, 10), ANIMCMD_FRAME(1, 10), ANIMCMD_FRAME(0, 10), @@ -3402,6 +4458,74 @@ static const union AnimCmd sAnim_Sableye_1[] = ANIMCMD_END, }; +static const union AnimCmd sAnim_Altaria_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(AltariaMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SWABLU + +#if P_FAMILY_ZANGOOSE +static const union AnimCmd sAnim_Zangoose_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 50), + ANIMCMD_END, +}; +#endif //P_FAMILY_ZANGOOSE + +#if P_FAMILY_SEVIPER +static const union AnimCmd sAnim_Seviper_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 50), + ANIMCMD_END, +}; +#endif //P_FAMILY_SEVIPER + +#if P_FAMILY_LUNATONE +static const union AnimCmd sAnim_Lunatone_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_FAMILY_LUNATONE + +#if P_FAMILY_SOLROCK +static const union AnimCmd sAnim_Solrock_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_FAMILY_SOLROCK + +#if P_FAMILY_BARBOACH static const union AnimCmd sAnim_Barboach_1[] = { ANIMCMD_FRAME(0, 15), @@ -3437,17 +4561,9 @@ static const union AnimCmd sAnim_Whiscash_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_BARBOACH -static const union AnimCmd sAnim_Luvdisc_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - +#if P_FAMILY_CORPHISH static const union AnimCmd sAnim_Corphish_1[] = { ANIMCMD_FRAME(0, 15), @@ -3469,7 +4585,83 @@ static const union AnimCmd sAnim_Crawdaunt_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_CORPHISH +#if P_FAMILY_BALTOY +static const union AnimCmd sAnim_Baltoy_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 50), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Claydol_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_FAMILY_BALTOY + +#if P_FAMILY_LILEEP +static const union AnimCmd sAnim_Lileep_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Cradily_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_FAMILY_LILEEP + +#if P_FAMILY_ANORITH +static const union AnimCmd sAnim_Anorith_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Armaldo_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_FAMILY_ANORITH + +#if P_FAMILY_FEEBAS static const union AnimCmd sAnim_Feebas_1[] = { ANIMCMD_FRAME(0, 15), @@ -3494,644 +4686,7 @@ static const union AnimCmd sAnim_Milotic_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Carvanha_1[] = -{ - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(1, 6), - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(1, 6), - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(1, 6), - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(1, 6), - ANIMCMD_FRAME(0, 6), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Sharpedo_1[] = -{ - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(1, 6), - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(1, 6), - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(1, 6), - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(1, 6), - ANIMCMD_FRAME(0, 22), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Trapinch_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Vibrava_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 50), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Flygon_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 50), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Makuhita_1[] = -{ - ANIMCMD_FRAME(0, 7), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 7), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 7), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 7), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 22), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Hariyama_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(1, 16), - ANIMCMD_FRAME(0, 11), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Electrike_1[] = -{ - ANIMCMD_FRAME(0, 8), - ANIMCMD_FRAME(1, 25), - ANIMCMD_FRAME(0, 17), - ANIMCMD_FRAME(1, 25), - ANIMCMD_FRAME(0, 3), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Manectric_1[] = -{ - ANIMCMD_FRAME(0, 8), - ANIMCMD_FRAME(1, 33), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 25), - ANIMCMD_FRAME(0, 3), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Numel_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 40), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Camerupt_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Spheal_1[] = -{ - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 43), - ANIMCMD_FRAME(1, 60), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Sealeo_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Walrein_1[] = -{ - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 6), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Cacnea_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Cacturne_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Snorunt_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Glalie_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Lunatone_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Lunatone_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Solrock_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Solrock_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Azurill_1[] = -{ - ANIMCMD_FRAME(0, 12), - ANIMCMD_FRAME(1, 12), - ANIMCMD_FRAME(0, 12), - ANIMCMD_FRAME(1, 12), - ANIMCMD_FRAME(0, 12), - ANIMCMD_FRAME(1, 12), - ANIMCMD_FRAME(0, 12), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Spoink_1[] = -{ - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Grumpig_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Plusle_1[] = -{ - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Minun_1[] = -{ - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Mawile_1[] = -{ - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Meditite_1[] = -{ - ANIMCMD_FRAME(0, 22), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 22), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Medicham_1[] = -{ - ANIMCMD_FRAME(0, 11), - ANIMCMD_FRAME(1, 11), - ANIMCMD_FRAME(0, 11), - ANIMCMD_FRAME(1, 11), - ANIMCMD_FRAME(0, 11), - ANIMCMD_FRAME(1, 11), - ANIMCMD_FRAME(0, 11), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Swablu_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Swablu_2[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_FRAME(2, 8), - ANIMCMD_FRAME(0, 12), - ANIMCMD_FRAME(2, 8), - ANIMCMD_FRAME(0, 12), - ANIMCMD_FRAME(2, 8), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Altaria_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Altaria_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Wynaut_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Duskull_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Dusclops_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Roselia_1[] = -{ - ANIMCMD_FRAME(0, 18), - ANIMCMD_FRAME(1, 44), - ANIMCMD_FRAME(0, 22), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Slakoth_1[] = -{ - ANIMCMD_FRAME(0, 13), - ANIMCMD_FRAME(1, 22), - ANIMCMD_FRAME(0, 8), - ANIMCMD_FRAME(1, 22), - ANIMCMD_FRAME(0, 11), - ANIMCMD_FRAME(0, 11), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Vigoroth_1[] = -{ - ANIMCMD_FRAME(0, 13), - ANIMCMD_FRAME(1, 7), - ANIMCMD_FRAME(0, 13), - ANIMCMD_FRAME(1, 7), - ANIMCMD_FRAME(0, 13), - ANIMCMD_FRAME(1, 7), - ANIMCMD_FRAME(0, 11), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Slaking_1[] = -{ - ANIMCMD_FRAME(0, 22), - ANIMCMD_FRAME(1, 22), - ANIMCMD_FRAME(0, 22), - ANIMCMD_FRAME(1, 22), - ANIMCMD_FRAME(0, 22), - ANIMCMD_FRAME(1, 22), - ANIMCMD_FRAME(0, 22), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Gulpin_1[] = -{ - ANIMCMD_FRAME(0, 14), - ANIMCMD_FRAME(1, 14), - ANIMCMD_FRAME(0, 14), - ANIMCMD_FRAME(1, 14), - ANIMCMD_FRAME(0, 4), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Swalot_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 30), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Tropius_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Whismur_1[] = -{ - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(0, 33), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(0, 9), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Loudred_1[] = -{ - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(0, 33), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Exploud_1[] = -{ - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(1, 44), - ANIMCMD_FRAME(0, 9), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Clamperl_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Huntail_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Gorebyss_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Absol_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Shuppet_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Banette_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Seviper_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 50), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Zangoose_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 50), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Relicanth_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Aron_1[] = -{ - ANIMCMD_FRAME(0, 33), - ANIMCMD_FRAME(1, 44), - ANIMCMD_FRAME(0, 33), - ANIMCMD_FRAME(1, 33), - ANIMCMD_FRAME(0, 11), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Lairon_1[] = -{ - ANIMCMD_FRAME(0, 12), - ANIMCMD_FRAME(1, 29), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 29), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Aggron_1[] = -{ - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 44), - ANIMCMD_FRAME(0, 11), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Castform_1[] = +static const union AnimCmd sAnim_CastformNormal_1[] = { ANIMCMD_FRAME(0, 12), ANIMCMD_FRAME(1, 24), @@ -4172,97 +4727,276 @@ static const union AnimCmd sAnim_CastformSnowy_1[] = ANIMCMD_FRAME(0, 12), ANIMCMD_END, }; +#endif //P_FAMILY_FEEBAS -static const union AnimCmd sAnim_Volbeat_1[] = -{ - ANIMCMD_FRAME(0, 11), - ANIMCMD_FRAME(1, 11), - ANIMCMD_FRAME(0, 11), - ANIMCMD_FRAME(1, 11), - ANIMCMD_FRAME(0, 11), - ANIMCMD_FRAME(1, 11), - ANIMCMD_FRAME(0, 5), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Illumise_1[] = -{ - ANIMCMD_FRAME(0, 22), - ANIMCMD_FRAME(1, 22), - ANIMCMD_FRAME(0, 22), - ANIMCMD_FRAME(1, 22), - ANIMCMD_FRAME(0, 11), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Lileep_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Cradily_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Anorith_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Armaldo_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Ralts_1[] = -{ - ANIMCMD_FRAME(0, 8), - ANIMCMD_FRAME(1, 25), - ANIMCMD_FRAME(0, 8), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Kirlia_1[] = +#if P_FAMILY_KECLEON +static const union AnimCmd sAnim_Kecleon_1[] = { ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 39), - ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_FAMILY_KECLEON + +#if P_FAMILY_SHUPPET +static const union AnimCmd sAnim_Shuppet_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; -static const union AnimCmd sAnim_Gardevoir_1[] = +static const union AnimCmd sAnim_Banette_1[] = { + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(BanetteMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SHUPPET + +#if P_FAMILY_DUSKULL +static const union AnimCmd sAnim_Duskull_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Dusclops_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Dusknoir_1[] = +{ + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 9), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_DUSKULL + +#if P_FAMILY_TROPIUS +static const union AnimCmd sAnim_Tropius_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_FAMILY_TROPIUS + +#if P_FAMILY_CHIMECHO +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Chingling_1[] = +{ + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 12), ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 12), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS + +static const union AnimCmd sAnim_Chimecho_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_FAMILY_CHIMECHO + +#if P_FAMILY_ABSOL +static const union AnimCmd sAnim_Absol_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(AbsolMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ABSOL + +#if P_FAMILY_SNORUNT +static const union AnimCmd sAnim_Snorunt_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Glalie_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(GlalieMega); +#endif //P_MEGA_EVOLUTIONS + +#if P_GEN_4_CROSS_EVOS +static const union AnimCmd sAnim_Froslass_1[] = +{ + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SNORUNT + +#if P_FAMILY_SPHEAL +static const union AnimCmd sAnim_Spheal_1[] = +{ + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 43), + ANIMCMD_FRAME(1, 60), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Sealeo_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Walrein_1[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_FAMILY_SPHEAL + +#if P_FAMILY_CLAMPERL +static const union AnimCmd sAnim_Clamperl_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Huntail_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_Gorebyss_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_FAMILY_CLAMPERL + +#if P_FAMILY_RELICANTH +static const union AnimCmd sAnim_Relicanth_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_FAMILY_RELICANTH + +#if P_FAMILY_LUVDISC +static const union AnimCmd sAnim_Luvdisc_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_FAMILY_LUVDISC + +#if P_FAMILY_BAGON static const union AnimCmd sAnim_Bagon_1[] = { ANIMCMD_FRAME(0, 15), @@ -4293,6 +5027,12 @@ static const union AnimCmd sAnim_Salamence_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(SalamenceMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BAGON + +#if P_FAMILY_BELDUM static const union AnimCmd sAnim_Beldum_1[] = { ANIMCMD_FRAME(0, 10), @@ -4323,6 +5063,12 @@ static const union AnimCmd sAnim_Metagross_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(MetagrossMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BELDUM + +#if P_FAMILY_REGIROCK static const union AnimCmd sAnim_Regirock_1[] = { ANIMCMD_FRAME(0, 10), @@ -4332,16 +5078,9 @@ static const union AnimCmd sAnim_Regirock_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_REGIROCK -static const union AnimCmd sAnim_Regirock_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - +#if P_FAMILY_REGICE static const union AnimCmd sAnim_Regice_1[] = { ANIMCMD_FRAME(0, 20), @@ -4351,7 +5090,9 @@ static const union AnimCmd sAnim_Regice_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_REGICE +#if P_FAMILY_REGISTEEL static const union AnimCmd sAnim_Registeel_1[] = { ANIMCMD_FRAME(0, 10), @@ -4361,73 +5102,9 @@ static const union AnimCmd sAnim_Registeel_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_REGISTEEL -static const union AnimCmd sAnim_Registeel_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Kyogre_1[] = -{ - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Kyogre_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Groudon_1[] = -{ - ANIMCMD_FRAME(0, 11), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Groudon_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Rayquaza_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_FRAME(1, 8), - ANIMCMD_FRAME(0, 22), - ANIMCMD_FRAME(1, 6), - ANIMCMD_FRAME(0, 6), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Rayquaza_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - +#if P_FAMILY_LATIAS static const union AnimCmd sAnim_Latias_1[] = { ANIMCMD_FRAME(0, 10), @@ -4438,15 +5115,12 @@ static const union AnimCmd sAnim_Latias_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Latias_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(LatiasMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LATIAS +#if P_FAMILY_LATIOS static const union AnimCmd sAnim_Latios_1[] = { ANIMCMD_FRAME(0, 10), @@ -4457,15 +5131,60 @@ static const union AnimCmd sAnim_Latios_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Latios_2[] = +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(LatiosMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LATIOS + +#if P_FAMILY_KYOGRE +static const union AnimCmd sAnim_Kyogre_1[] = { - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#if P_PRIMAL_REVERSIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(KyogrePrimal); +#endif //P_PRIMAL_REVERSIONS +#endif //P_FAMILY_KYOGRE + +#if P_FAMILY_GROUDON +static const union AnimCmd sAnim_Groudon_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +#if P_PRIMAL_REVERSIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(GroudonPrimal); +#endif //P_PRIMAL_REVERSIONS +#endif //P_FAMILY_GROUDON + +#if P_FAMILY_RAYQUAZA +static const union AnimCmd sAnim_Rayquaza_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 22), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(0, 6), + ANIMCMD_END, +}; + +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(RayquazaMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_RAYQUAZA + +#if P_FAMILY_JIRACHI static const union AnimCmd sAnim_Jirachi_1[] = { ANIMCMD_FRAME(0, 10), @@ -4480,17 +5199,10 @@ static const union AnimCmd sAnim_Jirachi_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_JIRACHI -static const union AnimCmd sAnim_Jirachi_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Deoxys_1[] = +#if P_FAMILY_DEOXYS +static const union AnimCmd sAnim_DeoxysNormal_1[] = { ANIMCMD_FRAME(0, 16), ANIMCMD_FRAME(1, 16), @@ -4500,255 +5212,38 @@ static const union AnimCmd sAnim_Deoxys_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Deoxys_2[] = +static const union AnimCmd sAnim_DeoxysAttack_1[] = { - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 26), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), ANIMCMD_END, }; -static const union AnimCmd sAnim_Chimecho_1[] = +static const union AnimCmd sAnim_DeoxysDefense_1[] = { - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 26), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), ANIMCMD_END, }; -static const union AnimCmd sAnim_Egg_1[] = +static const union AnimCmd sAnim_DeoxysSpeed_1[] = { - ANIMCMD_FRAME(0, 6), - ANIMCMD_FRAME(1, 6), - ANIMCMD_FRAME(2, 6), - ANIMCMD_FRAME(3, 6), + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 26), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), ANIMCMD_END, }; +#endif //P_FAMILY_DEOXYS -static const union AnimCmd sAnim_UnownB_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownC_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownD_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownE_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownF_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownG_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownH_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownI_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownJ_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownK_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownL_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownM_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownN_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownO_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownP_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownQ_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownR_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownS_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownT_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownU_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownV_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownW_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownX_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownY_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownZ_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownEMark_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_UnownQMark_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -#if P_GEN_4_POKEMON == TRUE +#if P_FAMILY_TURTWIG static const union AnimCmd sAnim_Turtwig_1[] = { ANIMCMD_FRAME(0, 15), @@ -4771,7 +5266,9 @@ static const union AnimCmd sAnim_Torterra_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_TURTWIG +#if P_FAMILY_CHIMCHAR static const union AnimCmd sAnim_Chimchar_1[] = { ANIMCMD_FRAME(1, 8), @@ -4800,7 +5297,9 @@ static const union AnimCmd sAnim_Infernape_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_CHIMCHAR +#if P_FAMILY_PIPLUP static const union AnimCmd sAnim_Piplup_1[] = { ANIMCMD_FRAME(0, 30), @@ -4830,7 +5329,9 @@ static const union AnimCmd sAnim_Empoleon_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_PIPLUP +#if P_FAMILY_STARLY static const union AnimCmd sAnim_Starly_1[] = { ANIMCMD_FRAME(0, 5), @@ -4854,7 +5355,9 @@ static const union AnimCmd sAnim_Staraptor_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_STARLY +#if P_FAMILY_BIDOOF static const union AnimCmd sAnim_Bidoof_1[] = { ANIMCMD_FRAME(0, 5), @@ -4876,16 +5379,9 @@ static const union AnimCmd sAnim_Bibarel_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_BIDOOF -static const union AnimCmd sAnim_Bibarel_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - +#if P_FAMILY_KRICKETOT static const union AnimCmd sAnim_Kricketot_1[] = { ANIMCMD_FRAME(0, 5), @@ -4918,7 +5414,9 @@ static const union AnimCmd sAnim_Kricketune_1[] = ANIMCMD_FRAME(0, 3), ANIMCMD_END, }; +#endif //P_FAMILY_KRICKETOT +#if P_FAMILY_SHINX static const union AnimCmd sAnim_Shinx_1[] = { ANIMCMD_FRAME(0, 20), @@ -4943,31 +5441,9 @@ static const union AnimCmd sAnim_Luxray_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_SHINX -static const union AnimCmd sAnim_Luxray_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Budew_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Roserade_1[] = -{ - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_END, -}; - +#if P_FAMILY_CRANIDOS static const union AnimCmd sAnim_Cranidos_1[] = { ANIMCMD_FRAME(1, 32), @@ -4984,7 +5460,9 @@ static const union AnimCmd sAnim_Rampardos_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_CRANIDOS +#if P_FAMILY_SHIELDON static const union AnimCmd sAnim_Shieldon_1[] = { ANIMCMD_FRAME(0, 20), @@ -5000,7 +5478,9 @@ static const union AnimCmd sAnim_Bastiodon_1[] = ANIMCMD_FRAME(0, 30), ANIMCMD_END, }; +#endif //P_FAMILY_SHIELDON +#if P_FAMILY_BURMY static const union AnimCmd sAnim_Burmy_1[] = { ANIMCMD_FRAME(1, 32), @@ -5035,7 +5515,9 @@ static const union AnimCmd sAnim_Mothim_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_BURMY +#if P_FAMILY_COMBEE static const union AnimCmd sAnim_Combee_1[] = { ANIMCMD_FRAME(0, 10), @@ -5061,7 +5543,9 @@ static const union AnimCmd sAnim_Vespiquen_1[] = ANIMCMD_FRAME(0, 8), ANIMCMD_END, }; +#endif //P_FAMILY_COMBEE +#if P_FAMILY_PACHIRISU static const union AnimCmd sAnim_Pachirisu_1[] = { ANIMCMD_FRAME(0, 5), @@ -5075,7 +5559,9 @@ static const union AnimCmd sAnim_Pachirisu_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_PACHIRISU +#if P_FAMILY_BUIZEL static const union AnimCmd sAnim_Buizel_1[] = { ANIMCMD_FRAME(0, 12), @@ -5094,7 +5580,9 @@ static const union AnimCmd sAnim_Floatzel_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_BUIZEL +#if P_FAMILY_CHERUBI static const union AnimCmd sAnim_Cherubi_1[] = { ANIMCMD_FRAME(0, 5), @@ -5119,15 +5607,6 @@ static const union AnimCmd sAnim_CherrimOvercast_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_CherrimOvercast_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_CherrimSunshine_1[] = { ANIMCMD_FRAME(1, 6), @@ -5138,7 +5617,9 @@ static const union AnimCmd sAnim_CherrimSunshine_1[] = ANIMCMD_FRAME(0, 8), ANIMCMD_END, }; +#endif //P_FAMILY_CHERUBI +#if P_FAMILY_SHELLOS static const union AnimCmd sAnim_Shellos_1[] = { ANIMCMD_FRAME(0, 1), @@ -5157,15 +5638,9 @@ static const union AnimCmd sAnim_Gastrodon_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_SHELLOS -static const union AnimCmd sAnim_Ambipom_1[] = -{ - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 25), - ANIMCMD_FRAME(0, 30), - ANIMCMD_END, -}; - +#if P_FAMILY_DRIFLOON static const union AnimCmd sAnim_Drifloon_1[] = { ANIMCMD_FRAME(1, 25), @@ -5185,7 +5660,9 @@ static const union AnimCmd sAnim_Drifblim_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_DRIFLOON +#if P_FAMILY_BUNEARY static const union AnimCmd sAnim_Buneary_1[] = { ANIMCMD_FRAME(1, 35), @@ -5201,30 +5678,12 @@ static const union AnimCmd sAnim_Lopunny_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Mismagius_1[] = -{ - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Honchkrow_1[] = -{ - ANIMCMD_FRAME(0, 21), - ANIMCMD_FRAME(1, 45), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(LopunnyMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BUNEARY +#if P_FAMILY_GLAMEOW static const union AnimCmd sAnim_Glameow_1[] = { ANIMCMD_FRAME(0, 12), @@ -5244,20 +5703,9 @@ static const union AnimCmd sAnim_Purugly_1[] = ANIMCMD_FRAME(0, 50), ANIMCMD_END, }; +#endif //P_FAMILY_GLAMEOW -static const union AnimCmd sAnim_Chingling_1[] = -{ - ANIMCMD_FRAME(1, 12), - ANIMCMD_FRAME(0, 12), - ANIMCMD_FRAME(1, 12), - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 12), - ANIMCMD_FRAME(0, 12), - ANIMCMD_FRAME(1, 12), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - +#if P_FAMILY_STUNKY static const union AnimCmd sAnim_Stunky_1[] = { ANIMCMD_FRAME(0, 15), @@ -5275,7 +5723,9 @@ static const union AnimCmd sAnim_Skuntank_1[] = ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; +#endif //P_FAMILY_STUNKY +#if P_FAMILY_BRONZOR static const union AnimCmd sAnim_Bronzor_1[] = { ANIMCMD_FRAME(1, 9), @@ -5300,45 +5750,9 @@ static const union AnimCmd sAnim_Bronzong_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_BRONZOR -static const union AnimCmd sAnim_Bronzong_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Bonsly_1[] = -{ - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 25), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_MimeJr_1[] = -{ - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Happiny_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 20), - ANIMCMD_END, -}; - +#if P_FAMILY_CHATOT static const union AnimCmd sAnim_Chatot_1[] = { ANIMCMD_FRAME(0, 5), @@ -5365,7 +5779,9 @@ static const union AnimCmd sAnim_Spiritomb_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_CHATOT +#if P_FAMILY_GIBLE static const union AnimCmd sAnim_Gible_1[] = { ANIMCMD_FRAME(0, 20), @@ -5392,14 +5808,12 @@ static const union AnimCmd sAnim_Garchomp_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Munchlax_1[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 20), - ANIMCMD_END, -}; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(GarchompMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_GIBLE +#if P_FAMILY_RIOLU static const union AnimCmd sAnim_Riolu_1[] = { ANIMCMD_FRAME(0, 3), @@ -5416,6 +5830,12 @@ static const union AnimCmd sAnim_Lucario_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(LucarioMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_RIOLU + +#if P_FAMILY_HIPPOPOTAS static const union AnimCmd sAnim_Hippopotas_1[] = { ANIMCMD_FRAME(0, 1), @@ -5430,7 +5850,9 @@ static const union AnimCmd sAnim_Hippowdon_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_HIPPOPOTAS +#if P_FAMILY_SKORUPI static const union AnimCmd sAnim_Skorupi_1[] = { ANIMCMD_FRAME(1, 5), @@ -5465,7 +5887,9 @@ static const union AnimCmd sAnim_Drapion_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_SKORUPI +#if P_FAMILY_CROAGUNK static const union AnimCmd sAnim_Croagunk_1[] = { ANIMCMD_FRAME(0, 3), @@ -5484,7 +5908,9 @@ static const union AnimCmd sAnim_Toxicroak_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_CROAGUNK +#if P_FAMILY_CARNIVINE static const union AnimCmd sAnim_Carnivine_1[] = { ANIMCMD_FRAME(1, 5), @@ -5501,7 +5927,9 @@ static const union AnimCmd sAnim_Carnivine_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_CARNIVINE +#if P_FAMILY_FINNEON static const union AnimCmd sAnim_Finneon_1[] = { ANIMCMD_FRAME(1, 12), @@ -5525,16 +5953,9 @@ static const union AnimCmd sAnim_Lumineon_1[] = ANIMCMD_FRAME(0, 8), ANIMCMD_END, }; +#endif //P_FAMILY_FINNEON -static const union AnimCmd sAnim_Mantyke_1[] = -{ - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 45), - ANIMCMD_FRAME(0, 5), - ANIMCMD_END, -}; - +#if P_FAMILY_SNOVER static const union AnimCmd sAnim_Snover_1[] = { ANIMCMD_FRAME(0, 5), @@ -5551,208 +5972,12 @@ static const union AnimCmd sAnim_Abomasnow_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Weavile_1[] = -{ - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Magnezone_1[] = -{ - ANIMCMD_FRAME(0, 16), - ANIMCMD_FRAME(1, 16), - ANIMCMD_FRAME(0, 16), - ANIMCMD_FRAME(1, 16), - ANIMCMD_FRAME(0, 16), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Lickilicky_1[] = -{ - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 50), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Rhyperior_1[] = -{ - ANIMCMD_FRAME(0, 50), - ANIMCMD_FRAME(1, 25), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(1, 25), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Tangrowth_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 50), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Electivire_1[] = -{ - ANIMCMD_FRAME(1, 50), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Magmortar_1[] = -{ - ANIMCMD_FRAME(1, 40), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Togekiss_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Yanmega_1[] = -{ - ANIMCMD_FRAME(1, 3), - ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(1, 3), - ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(1, 3), - ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(1, 3), - ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(1, 3), - ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(1, 3), - ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(1, 3), - ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(1, 3), - ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(1, 3), - ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(1, 3), - ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(1, 3), - ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(1, 3), - ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(1, 3), - ANIMCMD_FRAME(0, 3), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Leafeon_1[] = -{ - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 5), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Glaceon_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_FRAME(1, 36), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Gliscor_1[] = -{ - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 40), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Mamoswine_1[] = -{ - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 25), - ANIMCMD_FRAME(0, 30), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PORYGON_Z_1[] = -{ - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 30), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 40), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Gallade_1[] = -{ - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Probopass_1[] = -{ - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Probopass_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Dusknoir_1[] = -{ - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(0, 9), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Froslass_1[] = -{ - ANIMCMD_FRAME(1, 50), - ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(AbomasnowMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SNOVER +#if P_FAMILY_ROTOM static const union AnimCmd sAnim_Rotom_1[] = { ANIMCMD_FRAME(0, 15), @@ -5763,15 +5988,6 @@ static const union AnimCmd sAnim_Rotom_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Rotom_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_RotomHeat_1[] = { ANIMCMD_FRAME(0, 30), @@ -5835,7 +6051,9 @@ static const union AnimCmd sAnim_RotomMow_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_ROTOM +#if P_FAMILY_UXIE static const union AnimCmd sAnim_Uxie_1[] = { ANIMCMD_FRAME(1, 50), @@ -5843,7 +6061,9 @@ static const union AnimCmd sAnim_Uxie_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_UXIE +#if P_FAMILY_MESPRIT static const union AnimCmd sAnim_Mesprit_1[] = { ANIMCMD_FRAME(1, 12), @@ -5856,7 +6076,9 @@ static const union AnimCmd sAnim_Mesprit_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_MESPRIT +#if P_FAMILY_AZELF static const union AnimCmd sAnim_Azelf_1[] = { ANIMCMD_FRAME(1, 50), @@ -5864,7 +6086,9 @@ static const union AnimCmd sAnim_Azelf_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_AZELF +#if P_FAMILY_DIALGA static const union AnimCmd sAnim_Dialga_1[] = { ANIMCMD_FRAME(1, 40), @@ -5872,6 +6096,10 @@ static const union AnimCmd sAnim_Dialga_1[] = ANIMCMD_END, }; +PLACEHOLDER_ANIM_SINGLE_FRAME(DialgaOrigin); +#endif //P_FAMILY_DIALGA + +#if P_FAMILY_PALKIA static const union AnimCmd sAnim_Palkia_1[] = { ANIMCMD_FRAME(1, 20), @@ -5879,6 +6107,10 @@ static const union AnimCmd sAnim_Palkia_1[] = ANIMCMD_END, }; +PLACEHOLDER_ANIM_SINGLE_FRAME(PalkiaOrigin); +#endif //P_FAMILY_PALKIA + +#if P_FAMILY_HEATRAN static const union AnimCmd sAnim_Heatran_1[] = { ANIMCMD_FRAME(1, 50), @@ -5886,7 +6118,9 @@ static const union AnimCmd sAnim_Heatran_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_HEATRAN +#if P_FAMILY_REGIGIGAS static const union AnimCmd sAnim_Regigigas_1[] = { ANIMCMD_FRAME(1, 40), @@ -5894,7 +6128,7 @@ static const union AnimCmd sAnim_Regigigas_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Giratina_1[] = +static const union AnimCmd sAnim_GiratinaAltered_1[] = { ANIMCMD_FRAME(0, 12), ANIMCMD_FRAME(1, 45), @@ -5902,6 +6136,18 @@ static const union AnimCmd sAnim_Giratina_1[] = ANIMCMD_END, }; +static const union AnimCmd sAnim_GiratinaOrigin_1[] = +{ + ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; +#endif //P_FAMILY_REGIGIGAS + +#if P_FAMILY_CRESSELIA static const union AnimCmd sAnim_Cresselia_1[] = { ANIMCMD_FRAME(1, 15), @@ -5912,7 +6158,9 @@ static const union AnimCmd sAnim_Cresselia_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_CRESSELIA +#if P_FAMILY_MANAPHY static const union AnimCmd sAnim_Phione_1[] = { ANIMCMD_FRAME(0, 20), @@ -5928,7 +6176,9 @@ static const union AnimCmd sAnim_Manaphy_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_MANAPHY +#if P_FAMILY_DARKRAI static const union AnimCmd sAnim_Darkrai_1[] = { ANIMCMD_FRAME(1, 50), @@ -5936,8 +6186,10 @@ static const union AnimCmd sAnim_Darkrai_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_DARKRAI -static const union AnimCmd sAnim_Shaymin_1[] = +#if P_FAMILY_SHAYMIN +static const union AnimCmd sAnim_ShayminLand_1[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_FRAME(1, 10), @@ -5945,6 +6197,16 @@ static const union AnimCmd sAnim_Shaymin_1[] = ANIMCMD_END, }; +static const union AnimCmd sAnim_ShayminSky_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 36), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; +#endif //P_FAMILY_SHAYMIN + +#if P_FAMILY_ARCEUS static const union AnimCmd sAnim_Arceus_1[] = { ANIMCMD_FRAME(0, 12), @@ -5952,8 +6214,9 @@ static const union AnimCmd sAnim_Arceus_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; -#endif -#if P_GEN_5_POKEMON == TRUE +#endif //P_FAMILY_ARCEUS + +#if P_FAMILY_VICTINI static const union AnimCmd sAnim_Victini_1[] = { ANIMCMD_FRAME(0, 2), @@ -5961,7 +6224,9 @@ static const union AnimCmd sAnim_Victini_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_VICTINI +#if P_FAMILY_SNIVY static const union AnimCmd sAnim_Snivy_1[] = { ANIMCMD_FRAME(0, 1), @@ -5991,16 +6256,9 @@ static const union AnimCmd sAnim_Serperior_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_SNIVY -static const union AnimCmd sAnim_Serperior_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - +#if P_FAMILY_TEPIG static const union AnimCmd sAnim_Tepig_1[] = { ANIMCMD_FRAME(0, 27), @@ -6045,7 +6303,9 @@ static const union AnimCmd sAnim_Emboar_1[] = ANIMCMD_FRAME(0, 4), ANIMCMD_END, }; +#endif //P_FAMILY_TEPIG +#if P_FAMILY_OSHAWOTT static const union AnimCmd sAnim_Oshawott_1[] = { ANIMCMD_FRAME(0, 13), @@ -6075,6 +6335,12 @@ static const union AnimCmd sAnim_Samurott_1[] = ANIMCMD_END, }; +#if P_HISUIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(SamurottHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_OSHAWOTT + +#if P_FAMILY_PATRAT static const union AnimCmd sAnim_Patrat_1[] = { ANIMCMD_FRAME(1, 32), @@ -6093,7 +6359,9 @@ static const union AnimCmd sAnim_Watchog_1[] = ANIMCMD_FRAME(0, 50), ANIMCMD_END, }; +#endif //P_FAMILY_PATRAT +#if P_FAMILY_LILLIPUP static const union AnimCmd sAnim_Lillipup_1[] = { ANIMCMD_FRAME(0, 13), @@ -6126,7 +6394,9 @@ static const union AnimCmd sAnim_Stoutland_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_LILLIPUP +#if P_FAMILY_PURRLOIN static const union AnimCmd sAnim_Purrloin_1[] = { ANIMCMD_FRAME(0, 9), @@ -6142,7 +6412,9 @@ static const union AnimCmd sAnim_Liepard_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_PURRLOIN +#if P_FAMILY_PANSAGE static const union AnimCmd sAnim_Pansage_1[] = { ANIMCMD_FRAME(0, 10), @@ -6160,7 +6432,9 @@ static const union AnimCmd sAnim_Simisage_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_PANSAGE +#if P_FAMILY_PANSEAR static const union AnimCmd sAnim_Pansear_1[] = { ANIMCMD_FRAME(1, 32), @@ -6177,16 +6451,9 @@ static const union AnimCmd sAnim_Simisear_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_PANSEAR -static const union AnimCmd sAnim_Simisear_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - +#if P_FAMILY_PANPOUR static const union AnimCmd sAnim_Panpour_1[] = { ANIMCMD_FRAME(0, 12), @@ -6201,7 +6468,9 @@ static const union AnimCmd sAnim_Simipour_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_PANPOUR +#if P_FAMILY_MUNNA static const union AnimCmd sAnim_Munna_1[] = { ANIMCMD_FRAME(1, 12), @@ -6224,16 +6493,9 @@ static const union AnimCmd sAnim_Musharna_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_MUNNA -static const union AnimCmd sAnim_Musharna_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - +#if P_FAMILY_PIDOVE static const union AnimCmd sAnim_Pidove_1[] = { ANIMCMD_FRAME(0, 2), @@ -6257,7 +6519,9 @@ static const union AnimCmd sAnim_Unfezant_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_PIDOVE +#if P_FAMILY_BLITZLE static const union AnimCmd sAnim_Blitzle_1[] = { ANIMCMD_FRAME(1, 8), @@ -6276,7 +6540,9 @@ static const union AnimCmd sAnim_Zebstrika_1[] = ANIMCMD_FRAME(0, 30), ANIMCMD_END, }; +#endif //P_FAMILY_BLITZLE +#if P_FAMILY_ROGGENROLA static const union AnimCmd sAnim_Roggenrola_1[] = { ANIMCMD_FRAME(0, 20), @@ -6303,7 +6569,9 @@ static const union AnimCmd sAnim_Gigalith_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_ROGGENROLA +#if P_FAMILY_WOOBAT static const union AnimCmd sAnim_Woobat_1[] = { ANIMCMD_FRAME(0, 5), @@ -6338,7 +6606,9 @@ static const union AnimCmd sAnim_Swoobat_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_WOOBAT +#if P_FAMILY_DRILBUR static const union AnimCmd sAnim_Drilbur_1[] = { ANIMCMD_FRAME(0, 10), @@ -6349,15 +6619,6 @@ static const union AnimCmd sAnim_Drilbur_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Drilbur_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Excadrill_1[] = { ANIMCMD_FRAME(1, 10), @@ -6366,7 +6627,9 @@ static const union AnimCmd sAnim_Excadrill_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_DRILBUR +#if P_FAMILY_AUDINO static const union AnimCmd sAnim_Audino_1[] = { ANIMCMD_FRAME(0, 1), @@ -6375,6 +6638,12 @@ static const union AnimCmd sAnim_Audino_1[] = ANIMCMD_END, }; +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(AudinoMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_AUDINO + +#if P_FAMILY_TIMBURR static const union AnimCmd sAnim_Timburr_1[] = { ANIMCMD_FRAME(0, 20), @@ -6401,7 +6670,9 @@ static const union AnimCmd sAnim_Conkeldurr_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_TIMBURR +#if P_FAMILY_TYMPOLE static const union AnimCmd sAnim_Tympole_1[] = { ANIMCMD_FRAME(1, 35), @@ -6430,7 +6701,9 @@ static const union AnimCmd sAnim_Seismitoad_1[] = ANIMCMD_FRAME(0, 11), ANIMCMD_END, }; +#endif //P_FAMILY_TYMPOLE +#if P_FAMILY_THROH static const union AnimCmd sAnim_Throh_1[] = { ANIMCMD_FRAME(1, 10), @@ -6439,14 +6712,18 @@ static const union AnimCmd sAnim_Throh_1[] = ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; +#endif //P_FAMILY_THROH +#if P_FAMILY_SAWK static const union AnimCmd sAnim_Sawk_1[] = { ANIMCMD_FRAME(1, 45), ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_SAWK +#if P_FAMILY_SEWADDLE static const union AnimCmd sAnim_Sewaddle_1[] = { ANIMCMD_FRAME(0, 11), @@ -6457,15 +6734,6 @@ static const union AnimCmd sAnim_Sewaddle_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Sewaddle_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Swadloon_1[] = { ANIMCMD_FRAME(1, 10), @@ -6482,7 +6750,9 @@ static const union AnimCmd sAnim_Leavanny_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_SEWADDLE +#if P_FAMILY_VENIPEDE static const union AnimCmd sAnim_Venipede_1[] = { ANIMCMD_FRAME(0, 5), @@ -6512,7 +6782,9 @@ static const union AnimCmd sAnim_Scolipede_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_VENIPEDE +#if P_FAMILY_COTTONEE static const union AnimCmd sAnim_Cottonee_1[] = { ANIMCMD_FRAME(0, 5), @@ -6534,7 +6806,9 @@ static const union AnimCmd sAnim_Whimsicott_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_COTTONEE +#if P_FAMILY_PETILIL static const union AnimCmd sAnim_Petilil_1[] = { ANIMCMD_FRAME(0, 10), @@ -6553,6 +6827,12 @@ static const union AnimCmd sAnim_Lilligant_1[] = ANIMCMD_END, }; +#if P_HISUIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(LilligantHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_PETILIL + +#if P_FAMILY_BASCULIN static const union AnimCmd sAnim_Basculin_1[] = { ANIMCMD_FRAME(1, 8), @@ -6564,6 +6844,12 @@ static const union AnimCmd sAnim_Basculin_1[] = ANIMCMD_END, }; +#if P_HISUIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(Basculegion); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_BASCULIN + +#if P_FAMILY_SANDILE static const union AnimCmd sAnim_Sandile_1[] = { ANIMCMD_FRAME(0, 20), @@ -6588,16 +6874,9 @@ static const union AnimCmd sAnim_Krookodile_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_SANDILE -static const union AnimCmd sAnim_Krookodile_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - +#if P_FAMILY_DARUMAKA static const union AnimCmd sAnim_Darumaka_1[] = { ANIMCMD_FRAME(1, 50), @@ -6606,7 +6885,7 @@ static const union AnimCmd sAnim_Darumaka_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Darmanitan_1[] = +static const union AnimCmd sAnim_DarmanitanStandardMode_1[] = { ANIMCMD_FRAME(1, 10), ANIMCMD_FRAME(0, 10), @@ -6615,6 +6894,21 @@ static const union AnimCmd sAnim_Darmanitan_1[] = ANIMCMD_END, }; +static const union AnimCmd sAnim_DarmanitanZenMode_1[] = +{ + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 20), + ANIMCMD_END, +}; + +#if P_GALARIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(DarumakaGalarian); +PLACEHOLDER_ANIM_SINGLE_FRAME(DarmanitanGalarianStandardMode); +PLACEHOLDER_ANIM_SINGLE_FRAME(DarmanitanGalarianZenMode); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_DARUMAKA + +#if P_FAMILY_MARACTUS static const union AnimCmd sAnim_Maractus_1[] = { ANIMCMD_FRAME(0, 10), @@ -6626,7 +6920,9 @@ static const union AnimCmd sAnim_Maractus_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_MARACTUS +#if P_FAMILY_DWEBBLE static const union AnimCmd sAnim_Dwebble_1[] = { ANIMCMD_FRAME(0, 5), @@ -6651,7 +6947,9 @@ static const union AnimCmd sAnim_Crustle_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_DWEBBLE +#if P_FAMILY_SCRAGGY static const union AnimCmd sAnim_Scraggy_1[] = { ANIMCMD_FRAME(0, 5), @@ -6667,7 +6965,9 @@ static const union AnimCmd sAnim_Scrafty_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_SCRAGGY +#if P_FAMILY_SIGILYPH static const union AnimCmd sAnim_Sigilyph_1[] = { ANIMCMD_FRAME(1, 7), @@ -6680,7 +6980,9 @@ static const union AnimCmd sAnim_Sigilyph_1[] = ANIMCMD_FRAME(0, 7), ANIMCMD_END, }; +#endif //P_FAMILY_SIGILYPH +#if P_FAMILY_YAMASK static const union AnimCmd sAnim_Yamask_1[] = { ANIMCMD_FRAME(0, 10), @@ -6699,6 +7001,13 @@ static const union AnimCmd sAnim_Cofagrigus_1[] = ANIMCMD_END, }; +#if P_GALARIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(YamaskGalarian); +PLACEHOLDER_ANIM_SINGLE_FRAME(Runerigus); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_YAMASK + +#if P_FAMILY_TIRTOUGA static const union AnimCmd sAnim_Tirtouga_1[] = { ANIMCMD_FRAME(1, 30), @@ -6722,7 +7031,9 @@ static const union AnimCmd sAnim_Carracosta_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_TIRTOUGA +#if P_FAMILY_ARCHEN static const union AnimCmd sAnim_Archen_1[] = { ANIMCMD_FRAME(0, 2), @@ -6743,7 +7054,9 @@ static const union AnimCmd sAnim_Archeops_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_ARCHEN +#if P_FAMILY_TRUBBISH static const union AnimCmd sAnim_Trubbish_1[] = { ANIMCMD_FRAME(0, 15), @@ -6760,6 +7073,12 @@ static const union AnimCmd sAnim_Garbodor_1[] = ANIMCMD_END, }; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(GarbodorGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_TRUBBISH + +#if P_FAMILY_ZORUA static const union AnimCmd sAnim_Zorua_1[] = { ANIMCMD_FRAME(0, 15), @@ -6780,6 +7099,13 @@ static const union AnimCmd sAnim_Zoroark_1[] = ANIMCMD_END, }; +#if P_HISUIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(ZoruaHisuian); +PLACEHOLDER_ANIM_SINGLE_FRAME(ZoroarkHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_ZORUA + +#if P_FAMILY_MINCCINO static const union AnimCmd sAnim_Minccino_1[] = { ANIMCMD_FRAME(0, 20), @@ -6797,7 +7123,9 @@ static const union AnimCmd sAnim_Cinccino_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_MINCCINO +#if P_FAMILY_GOTHITA static const union AnimCmd sAnim_Gothita_1[] = { ANIMCMD_FRAME(1, 10), @@ -6817,15 +7145,6 @@ static const union AnimCmd sAnim_Gothorita_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Gothorita_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Gothitelle_1[] = { ANIMCMD_FRAME(1, 10), @@ -6834,7 +7153,9 @@ static const union AnimCmd sAnim_Gothitelle_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_GOTHITA +#if P_FAMILY_SOLOSIS static const union AnimCmd sAnim_Solosis_1[] = { ANIMCMD_FRAME(1, 5), @@ -6862,7 +7183,9 @@ static const union AnimCmd sAnim_Reuniclus_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_SOLOSIS +#if P_FAMILY_DUCKLETT static const union AnimCmd sAnim_Ducklett_1[] = { ANIMCMD_FRAME(0, 15), @@ -6881,7 +7204,9 @@ static const union AnimCmd sAnim_Swanna_1[] = ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; +#endif //P_FAMILY_DUCKLETT +#if P_FAMILY_VANILLITE static const union AnimCmd sAnim_Vanillite_1[] = { ANIMCMD_FRAME(0, 10), @@ -6907,7 +7232,9 @@ static const union AnimCmd sAnim_Vanilluxe_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_VANILLITE +#if P_FAMILY_DEERLING static const union AnimCmd sAnim_Deerling_1[] = { ANIMCMD_FRAME(1, 15), @@ -6922,7 +7249,9 @@ static const union AnimCmd sAnim_Sawsbuck_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_DEERLING +#if P_FAMILY_EMOLGA static const union AnimCmd sAnim_Emolga_1[] = { ANIMCMD_FRAME(0, 21), @@ -6931,7 +7260,9 @@ static const union AnimCmd sAnim_Emolga_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_EMOLGA +#if P_FAMILY_KARRABLAST static const union AnimCmd sAnim_Karrablast_1[] = { ANIMCMD_FRAME(1, 32), @@ -6946,7 +7277,9 @@ static const union AnimCmd sAnim_Escavalier_1[] = ANIMCMD_FRAME(0, 30), ANIMCMD_END, }; +#endif //P_FAMILY_KARRABLAST +#if P_FAMILY_FOONGUS static const union AnimCmd sAnim_Foongus_1[] = { ANIMCMD_FRAME(0, 15), @@ -6957,15 +7290,6 @@ static const union AnimCmd sAnim_Foongus_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Foongus_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Amoonguss_1[] = { ANIMCMD_FRAME(1, 8), @@ -6976,7 +7300,9 @@ static const union AnimCmd sAnim_Amoonguss_1[] = ANIMCMD_FRAME(0, 8), ANIMCMD_END, }; +#endif //P_FAMILY_FOONGUS +#if P_FAMILY_FRILLISH static const union AnimCmd sAnim_Frillish_1[] = { ANIMCMD_FRAME(1, 30), @@ -6995,7 +7321,9 @@ static const union AnimCmd sAnim_Jellicent_1[] = ANIMCMD_FRAME(0, 8), ANIMCMD_END, }; +#endif //P_FAMILY_FRILLISH +#if P_FAMILY_ALOMOMOLA static const union AnimCmd sAnim_Alomomola_1[] = { ANIMCMD_FRAME(1, 50), @@ -7003,7 +7331,9 @@ static const union AnimCmd sAnim_Alomomola_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_ALOMOMOLA +#if P_FAMILY_JOLTIK static const union AnimCmd sAnim_Joltik_1[] = { ANIMCMD_FRAME(0, 15), @@ -7026,7 +7356,9 @@ static const union AnimCmd sAnim_Galvantula_1[] = ANIMCMD_FRAME(0, 6), ANIMCMD_END, }; +#endif //P_FAMILY_JOLTIK +#if P_FAMILY_FERROSEED static const union AnimCmd sAnim_Ferroseed_1[] = { ANIMCMD_FRAME(0, 5), @@ -7046,16 +7378,9 @@ static const union AnimCmd sAnim_Ferrothorn_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_FERROSEED -static const union AnimCmd sAnim_Ferrothorn_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - +#if P_FAMILY_KLINK static const union AnimCmd sAnim_Klink_1[] = { ANIMCMD_FRAME(1, 10), @@ -7082,7 +7407,9 @@ static const union AnimCmd sAnim_Klinklang_1[] = ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; +#endif //P_FAMILY_KLINK +#if P_FAMILY_TYNAMO static const union AnimCmd sAnim_Tynamo_1[] = { ANIMCMD_FRAME(1, 5), @@ -7124,7 +7451,9 @@ static const union AnimCmd sAnim_Eelektross_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_TYNAMO +#if P_FAMILY_ELGYEM static const union AnimCmd sAnim_Elgyem_1[] = { ANIMCMD_FRAME(1, 12), @@ -7144,7 +7473,9 @@ static const union AnimCmd sAnim_Beheeyem_1[] = ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; +#endif //P_FAMILY_ELGYEM +#if P_FAMILY_LITWICK static const union AnimCmd sAnim_Litwick_1[] = { ANIMCMD_FRAME(1, 10), @@ -7170,7 +7501,9 @@ static const union AnimCmd sAnim_Chandelure_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_LITWICK +#if P_FAMILY_AXEW static const union AnimCmd sAnim_Axew_1[] = { ANIMCMD_FRAME(1, 40), @@ -7193,7 +7526,9 @@ static const union AnimCmd sAnim_Haxorus_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_AXEW +#if P_FAMILY_CUBCHOO static const union AnimCmd sAnim_Cubchoo_1[] = { ANIMCMD_FRAME(0, 20), @@ -7210,7 +7545,9 @@ static const union AnimCmd sAnim_Beartic_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_CUBCHOO +#if P_FAMILY_CRYOGONAL static const union AnimCmd sAnim_Cryogonal_1[] = { ANIMCMD_FRAME(0, 11), @@ -7220,16 +7557,9 @@ static const union AnimCmd sAnim_Cryogonal_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_CRYOGONAL -static const union AnimCmd sAnim_Cryogonal_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - +#if P_FAMILY_SHELMET static const union AnimCmd sAnim_Shelmet_1[] = { ANIMCMD_FRAME(0, 15), @@ -7246,7 +7576,9 @@ static const union AnimCmd sAnim_Accelgor_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_SHELMET +#if P_FAMILY_STUNFISK static const union AnimCmd sAnim_Stunfisk_1[] = { ANIMCMD_FRAME(1, 40), @@ -7254,6 +7586,12 @@ static const union AnimCmd sAnim_Stunfisk_1[] = ANIMCMD_END, }; +#if P_GALARIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(StunfiskGalarian); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_STUNFISK + +#if P_FAMILY_MIENFOO static const union AnimCmd sAnim_Mienfoo_1[] = { ANIMCMD_FRAME(1, 20), @@ -7272,7 +7610,9 @@ static const union AnimCmd sAnim_Mienshao_1[] = ANIMCMD_FRAME(0, 50), ANIMCMD_END, }; +#endif //P_FAMILY_MIENFOO +#if P_FAMILY_DRUDDIGON static const union AnimCmd sAnim_Druddigon_1[] = { ANIMCMD_FRAME(0, 22), @@ -7284,7 +7624,9 @@ static const union AnimCmd sAnim_Druddigon_1[] = ANIMCMD_FRAME(0, 11), ANIMCMD_END, }; +#endif //P_FAMILY_DRUDDIGON +#if P_FAMILY_GOLETT static const union AnimCmd sAnim_Golett_1[] = { ANIMCMD_FRAME(0, 20), @@ -7299,7 +7641,9 @@ static const union AnimCmd sAnim_Golurk_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_GOLETT +#if P_FAMILY_PAWNIARD static const union AnimCmd sAnim_Pawniard_1[] = { ANIMCMD_FRAME(1, 5), @@ -7320,6 +7664,12 @@ static const union AnimCmd sAnim_Bisharp_1[] = ANIMCMD_END, }; +#if P_GEN_9_CROSS_EVOS +PLACEHOLDER_ANIM_SINGLE_FRAME(Kingambit); +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_PAWNIARD + +#if P_FAMILY_BOUFFALANT static const union AnimCmd sAnim_Bouffalant_1[] = { ANIMCMD_FRAME(0, 28), @@ -7327,7 +7677,9 @@ static const union AnimCmd sAnim_Bouffalant_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_BOUFFALANT +#if P_FAMILY_RUFFLET static const union AnimCmd sAnim_Rufflet_1[] = { ANIMCMD_FRAME(0, 5), @@ -7346,6 +7698,12 @@ static const union AnimCmd sAnim_Braviary_1[] = ANIMCMD_END, }; +#if P_HISUIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(BraviaryHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_RUFFLET + +#if P_FAMILY_VULLABY static const union AnimCmd sAnim_Vullaby_1[] = { ANIMCMD_FRAME(0, 20), @@ -7361,14 +7719,18 @@ static const union AnimCmd sAnim_Mandibuzz_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_VULLABY +#if P_FAMILY_HEATMOR static const union AnimCmd sAnim_Heatmor_1[] = { ANIMCMD_FRAME(1, 40), ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_HEATMOR +#if P_FAMILY_DURANT static const union AnimCmd sAnim_Durant_1[] = { ANIMCMD_FRAME(0, 2), @@ -7390,7 +7752,9 @@ static const union AnimCmd sAnim_Durant_1[] = ANIMCMD_FRAME(0, 2), ANIMCMD_END, }; +#endif //P_FAMILY_DURANT +#if P_FAMILY_DEINO static const union AnimCmd sAnim_Deino_1[] = { ANIMCMD_FRAME(0, 20), @@ -7418,7 +7782,9 @@ static const union AnimCmd sAnim_Hydreigon_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_DEINO +#if P_FAMILY_LARVESTA static const union AnimCmd sAnim_Larvesta_1[] = { ANIMCMD_FRAME(0, 5), @@ -7443,7 +7809,9 @@ static const union AnimCmd sAnim_Volcarona_1[] = ANIMCMD_FRAME(0, 25), ANIMCMD_END, }; +#endif //P_FAMILY_LARVESTA +#if P_FAMILY_COBALION static const union AnimCmd sAnim_Cobalion_1[] = { ANIMCMD_FRAME(0, 1), @@ -7451,7 +7819,9 @@ static const union AnimCmd sAnim_Cobalion_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_COBALION +#if P_FAMILY_TERRAKION static const union AnimCmd sAnim_Terrakion_1[] = { ANIMCMD_FRAME(0, 15), @@ -7463,16 +7833,9 @@ static const union AnimCmd sAnim_Terrakion_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_TERRAKION -static const union AnimCmd sAnim_Terrakion_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - +#if P_FAMILY_VIRIZION static const union AnimCmd sAnim_Virizion_1[] = { ANIMCMD_FRAME(1, 15), @@ -7480,7 +7843,7 @@ static const union AnimCmd sAnim_Virizion_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Tornadus_1[] = +static const union AnimCmd sAnim_TornadusIncarnate_1[] = { ANIMCMD_FRAME(1, 2), ANIMCMD_FRAME(0, 2), @@ -7507,7 +7870,17 @@ static const union AnimCmd sAnim_Tornadus_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Thundurus_1[] = +static const union AnimCmd sAnim_TornadusTherian_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_ThundurusIncarnate_1[] = { ANIMCMD_FRAME(1, 2), ANIMCMD_FRAME(0, 2), @@ -7534,13 +7907,38 @@ static const union AnimCmd sAnim_Thundurus_1[] = ANIMCMD_END, }; +static const union AnimCmd sAnim_ThundurusTherian_1[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; +#endif //P_FAMILY_VIRIZION + +#if P_FAMILY_RESHIRAM static const union AnimCmd sAnim_Reshiram_1[] = { ANIMCMD_FRAME(1, 40), ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_RESHIRAM +#if P_FAMILY_ZEKROM static const union AnimCmd sAnim_Zekrom_1[] = { ANIMCMD_FRAME(1, 40), @@ -7548,7 +7946,7 @@ static const union AnimCmd sAnim_Zekrom_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Landorus_1[] = +static const union AnimCmd sAnim_LandorusIncarnate_1[] = { ANIMCMD_FRAME(1, 2), ANIMCMD_FRAME(0, 2), @@ -7575,6 +7973,18 @@ static const union AnimCmd sAnim_Landorus_1[] = ANIMCMD_END, }; +static const union AnimCmd sAnim_LandorusTherian_1[] = +{ + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_FAMILY_ZEKROM + +#if P_FAMILY_KYUREM static const union AnimCmd sAnim_Kyurem_1[] = { ANIMCMD_FRAME(1, 10), @@ -7584,14 +7994,40 @@ static const union AnimCmd sAnim_Kyurem_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Keldeo_1[] = +#if P_FUSION_FORMS +static const union AnimCmd sAnim_KyuremWhite_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; +#endif //P_FUSION_FORMS + +#if P_FUSION_FORMS +static const union AnimCmd sAnim_KyuremBlack_1[] = +{ + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; +#endif //P_FUSION_FORMS + +static const union AnimCmd sAnim_KeldeoOrdinary_1[] = { ANIMCMD_FRAME(1, 32), ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; -static const union AnimCmd sAnim_Meloetta_1[] = +static const union AnimCmd sAnim_KeldeoResolute_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 36), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_MeloettaAria_1[] = { ANIMCMD_FRAME(0, 15), ANIMCMD_FRAME(1, 45), @@ -7603,15 +8039,19 @@ static const union AnimCmd sAnim_Meloetta_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Meloetta_2[] = +static const union AnimCmd sAnim_MeloettaPirouette_1[] = { - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_KYUREM +#if P_FAMILY_GENESECT static const union AnimCmd sAnim_Genesect_1[] = { ANIMCMD_FRAME(1, 5), @@ -7624,8 +8064,9 @@ static const union AnimCmd sAnim_Genesect_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; -#endif -#if P_GEN_6_POKEMON == TRUE +#endif //P_FAMILY_GENESECT + +#if P_FAMILY_CHESPIN static const union AnimCmd sAnim_Chespin_1[] = { ANIMCMD_FRAME(0, 8), @@ -7646,15 +8087,6 @@ static const union AnimCmd sAnim_Quilladin_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Quilladin_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Chesnaught_1[] = { ANIMCMD_FRAME(1, 50), @@ -7662,7 +8094,9 @@ static const union AnimCmd sAnim_Chesnaught_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_CHESPIN +#if P_FAMILY_FENNEKIN static const union AnimCmd sAnim_Fennekin_1[] = { ANIMCMD_FRAME(0, 15), @@ -7694,7 +8128,9 @@ static const union AnimCmd sAnim_Delphox_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_FENNEKIN +#if P_FAMILY_FROAKIE static const union AnimCmd sAnim_Froakie_1[] = { ANIMCMD_FRAME(0, 13), @@ -7730,13 +8166,13 @@ static const union AnimCmd sAnim_GreninjaAsh_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_FROAKIE +#if P_FAMILY_BUNNELBY static const union AnimCmd sAnim_Bunnelby_1[] = { - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 25), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; @@ -7746,56 +8182,41 @@ static const union AnimCmd sAnim_Diggersby_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_BUNNELBY +#if P_FAMILY_FLETCHLING static const union AnimCmd sAnim_Fletchling_1[] = { + ANIMCMD_FRAME(1, 7), ANIMCMD_FRAME(0, 3), - ANIMCMD_FRAME(1, 50), - ANIMCMD_FRAME(1, 28), + ANIMCMD_FRAME(1, 7), + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(1, 10), ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; static const union AnimCmd sAnim_Fletchinder_1[] = { - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), - ANIMCMD_FRAME(1, 2), - ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; static const union AnimCmd sAnim_Talonflame_1[] = { - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Talonflame_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(1, 55), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_FLETCHLING +#if P_FAMILY_SCATTERBUG static const union AnimCmd sAnim_Scatterbug_1[] = { ANIMCMD_FRAME(0, 5), @@ -7827,7 +8248,9 @@ static const union AnimCmd sAnim_Vivillon_1[] = ANIMCMD_FRAME(0, 50), ANIMCMD_END, }; +#endif //P_FAMILY_SCATTERBUG +#if P_FAMILY_LITLEO static const union AnimCmd sAnim_Litleo_1[] = { ANIMCMD_FRAME(0, 10), @@ -7842,55 +8265,35 @@ static const union AnimCmd sAnim_Pyroar_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_LITLEO +#if P_FAMILY_FLABEBE static const union AnimCmd sAnim_Flabebe_1[] = { - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Flabebe_2[] = -{ + ANIMCMD_FRAME(1, 27), ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(1, 23), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; static const union AnimCmd sAnim_Floette_1[] = { - ANIMCMD_FRAME(0, 33), - ANIMCMD_FRAME(1, 33), - ANIMCMD_FRAME(0, 33), - ANIMCMD_FRAME(1, 33), - ANIMCMD_FRAME(0, 11), + ANIMCMD_FRAME(0, 25), + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; static const union AnimCmd sAnim_Florges_1[] = { - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Florges_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), + ANIMCMD_FRAME(1, 45), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_FLABEBE +#if P_FAMILY_SKIDDO static const union AnimCmd sAnim_Skiddo_1[] = { ANIMCMD_FRAME(1, 15), @@ -7905,7 +8308,9 @@ static const union AnimCmd sAnim_Gogoat_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_SKIDDO +#if P_FAMILY_PANCHAM static const union AnimCmd sAnim_Pancham_1[] = { ANIMCMD_FRAME(1, 8), @@ -7927,7 +8332,9 @@ static const union AnimCmd sAnim_Pangoro_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_PANCHAM +#if P_FAMILY_FURFROU static const union AnimCmd sAnim_Furfrou_1[] = { ANIMCMD_FRAME(0, 27), @@ -7937,7 +8344,9 @@ static const union AnimCmd sAnim_Furfrou_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_FURFROU +#if P_FAMILY_ESPURR static const union AnimCmd sAnim_Espurr_1[] = { ANIMCMD_FRAME(0, 15), @@ -7957,7 +8366,9 @@ static const union AnimCmd sAnim_Meowstic_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_ESPURR +#if P_FAMILY_HONEDGE static const union AnimCmd sAnim_Honedge_1[] = { ANIMCMD_FRAME(1, 50), @@ -7976,16 +8387,7 @@ static const union AnimCmd sAnim_Doublade_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Doublade_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Aegislash_1[] = +static const union AnimCmd sAnim_AegislashShield_1[] = { ANIMCMD_FRAME(0, 18), ANIMCMD_FRAME(1, 18), @@ -7995,6 +8397,18 @@ static const union AnimCmd sAnim_Aegislash_1[] = ANIMCMD_END, }; +static const union AnimCmd sAnim_AegislashBlade_1[] = +{ + ANIMCMD_FRAME(0, 18), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 18), + ANIMCMD_FRAME(1, 18), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; +#endif //P_FAMILY_HONEDGE + +#if P_FAMILY_SPRITZEE static const union AnimCmd sAnim_Spritzee_1[] = { ANIMCMD_FRAME(1, 15), @@ -8012,7 +8426,9 @@ static const union AnimCmd sAnim_Aromatisse_1[] = ANIMCMD_FRAME(0, 30), ANIMCMD_END, }; +#endif //P_FAMILY_SPRITZEE +#if P_FAMILY_SWIRLIX static const union AnimCmd sAnim_Swirlix_1[] = { ANIMCMD_FRAME(0, 10), @@ -8034,7 +8450,9 @@ static const union AnimCmd sAnim_Slurpuff_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_SWIRLIX +#if P_FAMILY_INKAY static const union AnimCmd sAnim_Inkay_1[] = { ANIMCMD_FRAME(1, 25), @@ -8052,7 +8470,9 @@ static const union AnimCmd sAnim_Malamar_1[] = ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; +#endif //P_FAMILY_INKAY +#if P_FAMILY_BINACLE static const union AnimCmd sAnim_Binacle_1[] = { ANIMCMD_FRAME(1, 8), @@ -8070,7 +8490,9 @@ static const union AnimCmd sAnim_Barbaracle_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_BINACLE +#if P_FAMILY_SKRELP static const union AnimCmd sAnim_Skrelp_1[] = { ANIMCMD_FRAME(1, 10), @@ -8092,7 +8514,9 @@ static const union AnimCmd sAnim_Dragalge_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_SKRELP +#if P_FAMILY_CLAUNCHER static const union AnimCmd sAnim_Clauncher_1[] = { ANIMCMD_FRAME(0, 15), @@ -8115,7 +8539,9 @@ static const union AnimCmd sAnim_Clawitzer_1[] = ANIMCMD_FRAME(0, 6), ANIMCMD_END, }; +#endif //P_FAMILY_CLAUNCHER +#if P_FAMILY_HELIOPTILE static const union AnimCmd sAnim_Helioptile_1[] = { ANIMCMD_FRAME(1, 50), @@ -8131,7 +8557,9 @@ static const union AnimCmd sAnim_Heliolisk_1[] = ANIMCMD_FRAME(0, 30), ANIMCMD_END, }; +#endif //P_FAMILY_HELIOPTILE +#if P_FAMILY_TYRUNT static const union AnimCmd sAnim_Tyrunt_1[] = { ANIMCMD_FRAME(1, 10), @@ -8147,13 +8575,20 @@ static const union AnimCmd sAnim_Tyrantrum_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_TYRUNT +#if P_FAMILY_AMAURA static const union AnimCmd sAnim_Amaura_1[] = { - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 35), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 11), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 5), ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; @@ -8164,15 +8599,9 @@ static const union AnimCmd sAnim_Aurorus_1[] = ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; +#endif //P_FAMILY_AMAURA -static const union AnimCmd sAnim_Sylveon_1[] = -{ - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 5), - ANIMCMD_END, -}; - +#if P_FAMILY_HAWLUCHA static const union AnimCmd sAnim_Hawlucha_1[] = { ANIMCMD_FRAME(0, 28), @@ -8180,7 +8609,9 @@ static const union AnimCmd sAnim_Hawlucha_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_HAWLUCHA +#if P_FAMILY_DEDENNE static const union AnimCmd sAnim_Dedenne_1[] = { ANIMCMD_FRAME(1, 50), @@ -8188,7 +8619,9 @@ static const union AnimCmd sAnim_Dedenne_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_DEDENNE +#if P_FAMILY_CARBINK static const union AnimCmd sAnim_Carbink_1[] = { ANIMCMD_FRAME(0, 5), @@ -8202,7 +8635,9 @@ static const union AnimCmd sAnim_Carbink_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_CARBINK +#if P_FAMILY_GOOMY static const union AnimCmd sAnim_Goomy_1[] = { ANIMCMD_FRAME(0, 28), @@ -8229,6 +8664,13 @@ static const union AnimCmd sAnim_Goodra_1[] = ANIMCMD_END, }; +#if P_HISUIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(SliggooHisuian); +PLACEHOLDER_ANIM_SINGLE_FRAME(GoodraHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_GOOMY + +#if P_FAMILY_KLEFKI static const union AnimCmd sAnim_Klefki_1[] = { ANIMCMD_FRAME(0, 5), @@ -8242,7 +8684,9 @@ static const union AnimCmd sAnim_Klefki_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_KLEFKI +#if P_FAMILY_PHANTUMP static const union AnimCmd sAnim_Phantump_1[] = { ANIMCMD_FRAME(0, 20), @@ -8261,7 +8705,9 @@ static const union AnimCmd sAnim_Trevenant_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_PHANTUMP +#if P_FAMILY_PUMPKABOO static const union AnimCmd sAnim_Pumpkaboo_1[] = { ANIMCMD_FRAME(1, 12), @@ -8282,7 +8728,9 @@ static const union AnimCmd sAnim_Gourgeist_1[] = ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_PUMPKABOO +#if P_FAMILY_BERGMITE static const union AnimCmd sAnim_Bergmite_1[] = { ANIMCMD_FRAME(0, 11), @@ -8293,15 +8741,6 @@ static const union AnimCmd sAnim_Bergmite_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Bergmite_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - static const union AnimCmd sAnim_Avalugg_1[] = { ANIMCMD_FRAME(1, 10), @@ -8311,6 +8750,12 @@ static const union AnimCmd sAnim_Avalugg_1[] = ANIMCMD_END, }; +#if P_HISUIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(AvaluggHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_BERGMITE + +#if P_FAMILY_NOIBAT static const union AnimCmd sAnim_Noibat_1[] = { ANIMCMD_FRAME(1, 12), @@ -8330,7 +8775,9 @@ static const union AnimCmd sAnim_Noivern_1[] = ANIMCMD_FRAME(0, 20), ANIMCMD_END, }; +#endif //P_FAMILY_NOIBAT +#if P_FAMILY_XERNEAS static const union AnimCmd sAnim_Xerneas_1[] = { ANIMCMD_FRAME(0, 12), @@ -8338,7 +8785,9 @@ static const union AnimCmd sAnim_Xerneas_1[] = ANIMCMD_FRAME(0, 15), ANIMCMD_END, }; +#endif //P_FAMILY_XERNEAS +#if P_FAMILY_YVELTAL static const union AnimCmd sAnim_Yveltal_1[] = { ANIMCMD_FRAME(1, 20), @@ -8347,8 +8796,10 @@ static const union AnimCmd sAnim_Yveltal_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_YVELTAL -static const union AnimCmd sAnim_Zygarde_1[] = +#if P_FAMILY_ZYGARDE +static const union AnimCmd sAnim_Zygarde50_1[] = { ANIMCMD_FRAME(0, 10), ANIMCMD_FRAME(1, 25), @@ -8356,6 +8807,24 @@ static const union AnimCmd sAnim_Zygarde_1[] = ANIMCMD_END, }; +static const union AnimCmd sAnim_Zygarde10_1[] = +{ + ANIMCMD_FRAME(0, 20), + ANIMCMD_FRAME(1, 10), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_ZygardeComplete_1[] = +{ + ANIMCMD_FRAME(0, 12), + ANIMCMD_FRAME(1, 45), + ANIMCMD_FRAME(0, 15), + ANIMCMD_END, +}; +#endif //P_FAMILY_ZYGARDE + +#if P_FAMILY_DIANCIE static const union AnimCmd sAnim_Diancie_1[] = { ANIMCMD_FRAME(0, 20), @@ -8364,7 +8833,13 @@ static const union AnimCmd sAnim_Diancie_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Hoopa_1[] = +#if P_MEGA_EVOLUTIONS +PLACEHOLDER_ANIM_SINGLE_FRAME(DiancieMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_DIANCIE + +#if P_FAMILY_HOOPA +static const union AnimCmd sAnim_HoopaConfined_1[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_FRAME(1, 15), @@ -8378,98 +8853,94 @@ static const union AnimCmd sAnim_Hoopa_1[] = ANIMCMD_END, }; +static const union AnimCmd sAnim_HoopaUnbound_1[] = +{ + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 10), + ANIMCMD_END, +}; +#endif //P_FAMILY_HOOPA + +#if P_FAMILY_VOLCANION static const union AnimCmd sAnim_Volcanion_1[] = { ANIMCMD_FRAME(1, 45), ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; -#endif -#if P_GEN_7_POKEMON == TRUE +#endif //P_FAMILY_VOLCANION + +#if P_FAMILY_ROWLET static const union AnimCmd sAnim_Rowlet_1[] = { - ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; static const union AnimCmd sAnim_Dartrix_1[] = { - ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; static const union AnimCmd sAnim_Decidueye_1[] = { - ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; -static const union AnimCmd sAnim_Litten_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_HISUIAN_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(DecidueyeHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_ROWLET -static const union AnimCmd sAnim_Torracat_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_LITTEN +PLACEHOLDER_ANIM_SINGLE_FRAME(Litten); +PLACEHOLDER_ANIM_SINGLE_FRAME(Torracat); +PLACEHOLDER_ANIM_SINGLE_FRAME(Incineroar); +#endif //P_FAMILY_LITTEN -static const union AnimCmd sAnim_Incineroar_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Popplio_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Brionne_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Primarina_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_POPPLIO +PLACEHOLDER_ANIM_SINGLE_FRAME(Popplio); +PLACEHOLDER_ANIM_SINGLE_FRAME(Brionne); +PLACEHOLDER_ANIM_SINGLE_FRAME(Primarina); +#endif //P_FAMILY_POPPLIO +#if P_FAMILY_PIKIPEK static const union AnimCmd sAnim_Pikipek_1[] = { - ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 15), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; static const union AnimCmd sAnim_Trumbeak_1[] = { - ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; static const union AnimCmd sAnim_Toucannon_1[] = { - ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_PIKIPEK -static const union AnimCmd sAnim_Yungoos_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Gumshoos_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_YUNGOOS +PLACEHOLDER_ANIM_SINGLE_FRAME(Yungoos); +PLACEHOLDER_ANIM_SINGLE_FRAME(Gumshoos); +#endif //P_FAMILY_YUNGOOS +#if P_FAMILY_GRUBBIN static const union AnimCmd sAnim_Grubbin_1[] = { ANIMCMD_FRAME(0, 1), @@ -8497,79 +8968,119 @@ static const union AnimCmd sAnim_Vikavolt_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_GRUBBIN -static const union AnimCmd sAnim_Crabrawler_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_CRABRAWLER +PLACEHOLDER_ANIM_SINGLE_FRAME(Crabrawler); +PLACEHOLDER_ANIM_SINGLE_FRAME(Crabominable); +#endif //P_FAMILY_CRABRAWLER -static const union AnimCmd sAnim_Crabominable_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Oricorio_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_ORICORIO +PLACEHOLDER_ANIM_SINGLE_FRAME(Oricorio); +#endif //P_FAMILY_ORICORIO +#if P_FAMILY_CUTIEFLY static const union AnimCmd sAnim_Cutiefly_1[] = { + ANIMCMD_FRAME(1, 1), ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 35), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; static const union AnimCmd sAnim_Ribombee_1[] = { - ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), ANIMCMD_END, }; +#endif //P_FAMILY_CUTIEFLY +#if P_FAMILY_ROCKRUFF static const union AnimCmd sAnim_Rockruff_1[] = { - ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; -static const union AnimCmd sAnim_Lycanroc_1[] = +static const union AnimCmd sAnim_LycanrocMidday_1[] = { - ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; -static const union AnimCmd sAnim_Wishiwashi_1[] = +static const union AnimCmd sAnim_LycanrocMidnight_1[] = { - ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; -static const union AnimCmd sAnim_Mareanie_1[] = +static const union AnimCmd sAnim_LycanrocDusk_1[] = { - ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 40), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; -static const union AnimCmd sAnim_Toxapex_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +PLACEHOLDER_ANIM_SINGLE_FRAME(WishiwashiSolo); +PLACEHOLDER_ANIM_SINGLE_FRAME(WishiwashiSchool); +#endif //P_FAMILY_ROCKRUFF -static const union AnimCmd sAnim_Mudbray_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_MAREANIE +PLACEHOLDER_ANIM_SINGLE_FRAME(Mareanie); +PLACEHOLDER_ANIM_SINGLE_FRAME(Toxapex); +#endif //P_FAMILY_MAREANIE -static const union AnimCmd sAnim_Mudsdale_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_MUDBRAY +PLACEHOLDER_ANIM_SINGLE_FRAME(Mudbray); +PLACEHOLDER_ANIM_SINGLE_FRAME(Mudsdale); +#endif //P_FAMILY_MUDBRAY +#if P_FAMILY_DEWPIDER static const union AnimCmd sAnim_Dewpider_1[] = { ANIMCMD_FRAME(0, 1), @@ -8588,31 +9099,19 @@ static const union AnimCmd sAnim_Araquanid_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_DEWPIDER -static const union AnimCmd sAnim_Fomantis_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_FOMANTIS +PLACEHOLDER_ANIM_SINGLE_FRAME(Fomantis); +PLACEHOLDER_ANIM_SINGLE_FRAME(Lurantis); +#endif //P_FAMILY_FOMANTIS -static const union AnimCmd sAnim_Lurantis_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Morelull_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Shiinotic_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_MORELULL +PLACEHOLDER_ANIM_SINGLE_FRAME(Morelull); +PLACEHOLDER_ANIM_SINGLE_FRAME(Shiinotic); +#endif //P_FAMILY_MORELULL +#if P_FAMILY_SALANDIT static const union AnimCmd sAnim_Salandit_1[] = { ANIMCMD_FRAME(0, 10), @@ -8628,7 +9127,9 @@ static const union AnimCmd sAnim_Salazzle_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_SALANDIT +#if P_FAMILY_STUFFUL static const union AnimCmd sAnim_Stufful_1[] = { ANIMCMD_FRAME(0, 10), @@ -8644,43 +9145,37 @@ static const union AnimCmd sAnim_Bewear_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_STUFFUL -static const union AnimCmd sAnim_Bounsweet_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_BOUNSWEET +PLACEHOLDER_ANIM_SINGLE_FRAME(Bounsweet); +PLACEHOLDER_ANIM_SINGLE_FRAME(Steenee); +PLACEHOLDER_ANIM_SINGLE_FRAME(Tsareena); +#endif //P_FAMILY_BOUNSWEET -static const union AnimCmd sAnim_Steenee_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Tsareena_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Comfey_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_COMFEY +PLACEHOLDER_ANIM_SINGLE_FRAME(Comfey); +#endif //P_FAMILY_COMFEY +#if P_FAMILY_ORANGURU static const union AnimCmd sAnim_Oranguru_1[] = { - ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_ORANGURU +#if P_FAMILY_PASSIMIAN static const union AnimCmd sAnim_Passimian_1[] = { - ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_PASSIMIAN +#if P_FAMILY_WIMPOD static const union AnimCmd sAnim_Wimpod_1[] = { ANIMCMD_FRAME(0, 1), @@ -8696,19 +9191,14 @@ static const union AnimCmd sAnim_Golisopod_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_WIMPOD -static const union AnimCmd sAnim_Sandygast_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Palossand_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_SANDYGAST +PLACEHOLDER_ANIM_SINGLE_FRAME(Sandygast); +PLACEHOLDER_ANIM_SINGLE_FRAME(Palossand); +#endif //P_FAMILY_SANDYGAST +#if P_FAMILY_PYUKUMUKU static const union AnimCmd sAnim_Pyukumuku_1[] = { ANIMCMD_FRAME(0, 1), @@ -8716,31 +9206,23 @@ static const union AnimCmd sAnim_Pyukumuku_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_PYUKUMUKU -static const union AnimCmd sAnim_TypeNull_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_TYPE_NULL +PLACEHOLDER_ANIM_SINGLE_FRAME(TypeNull); +PLACEHOLDER_ANIM_SINGLE_FRAME(Silvally); +#endif //P_FAMILY_TYPE_NULL -static const union AnimCmd sAnim_Silvally_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_MINIOR +PLACEHOLDER_ANIM_SINGLE_FRAME(MiniorMeteor); +PLACEHOLDER_ANIM_SINGLE_FRAME(MiniorCore); +#endif //P_FAMILY_MINIOR -static const union AnimCmd sAnim_Minior_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Komala_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_KOMALA +PLACEHOLDER_ANIM_SINGLE_FRAME(Komala); +#endif //P_FAMILY_KOMALA +#if P_FAMILY_TURTONATOR static const union AnimCmd sAnim_Turtonator_1[] = { ANIMCMD_FRAME(0, 10), @@ -8748,54 +9230,55 @@ static const union AnimCmd sAnim_Turtonator_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_TURTONATOR +#if P_FAMILY_TOGEDEMARU static const union AnimCmd sAnim_Togedemaru_1[] = { - ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; +#endif //P_FAMILY_TOGEDEMARU -static const union AnimCmd sAnim_Mimikyu_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_MIMIKYU +PLACEHOLDER_ANIM_SINGLE_FRAME(MimikyuDisguised); +PLACEHOLDER_ANIM_SINGLE_FRAME(MimikyuBusted); +#endif //P_FAMILY_MIMIKYU -static const union AnimCmd sAnim_Bruxish_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_BRUXISH +PLACEHOLDER_ANIM_SINGLE_FRAME(Bruxish); +#endif //P_FAMILY_BRUXISH +#if P_FAMILY_DRAMPA static const union AnimCmd sAnim_Drampa_1[] = { - ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(1, 50), + ANIMCMD_FRAME(0, 50), + ANIMCMD_END, +}; +#endif //P_FAMILY_DRAMPA + +#if P_FAMILY_DHELMISE +PLACEHOLDER_ANIM_SINGLE_FRAME(Dhelmise); +#endif //P_FAMILY_DHELMISE + +#if P_FAMILY_JANGMO_O +static const union AnimCmd sAnim_Jangmo_O_1[] = +{ + ANIMCMD_FRAME(1, 15), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; -static const union AnimCmd sAnim_Dhelmise_1[] = +static const union AnimCmd sAnim_Hakamo_O_1[] = { - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_JANGMO_O_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_FRAME(1, 25), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_HAKAMO_O_1[] = -{ - ANIMCMD_FRAME(0, 10), ANIMCMD_FRAME(1, 30), - ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(0, 5), ANIMCMD_END, }; -static const union AnimCmd sAnim_KOMMO_O_1[] = +static const union AnimCmd sAnim_Kommo_O_1[] = { ANIMCMD_FRAME(0, 10), ANIMCMD_FRAME(1, 20), @@ -8804,7 +9287,9 @@ static const union AnimCmd sAnim_KOMMO_O_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_JANGMO_O +#if P_FAMILY_TAPU_KOKO static const union AnimCmd sAnim_TapuKoko_1[] = { ANIMCMD_FRAME(0, 1), @@ -8816,7 +9301,9 @@ static const union AnimCmd sAnim_TapuKoko_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_TAPU_KOKO +#if P_FAMILY_TAPU_LELE static const union AnimCmd sAnim_TapuLele_1[] = { ANIMCMD_FRAME(1, 50), @@ -8824,7 +9311,9 @@ static const union AnimCmd sAnim_TapuLele_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_TAPU_LELE +#if P_FAMILY_TAPU_BULU static const union AnimCmd sAnim_TapuBulu_1[] = { ANIMCMD_FRAME(0, 1), @@ -8834,7 +9323,9 @@ static const union AnimCmd sAnim_TapuBulu_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_TAPU_BULU +#if P_FAMILY_TAPU_FINI static const union AnimCmd sAnim_TapuFini_1[] = { ANIMCMD_FRAME(1, 60), @@ -8842,85 +9333,52 @@ static const union AnimCmd sAnim_TapuFini_1[] = ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +#endif //P_FAMILY_TAPU_FINI -static const union AnimCmd sAnim_Cosmog_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_COSMOG +PLACEHOLDER_ANIM_SINGLE_FRAME(Cosmog); +PLACEHOLDER_ANIM_SINGLE_FRAME(Cosmoem); +PLACEHOLDER_ANIM_SINGLE_FRAME(Solgaleo); +PLACEHOLDER_ANIM_SINGLE_FRAME(Lunala); +#endif //P_FAMILY_COSMOG -static const union AnimCmd sAnim_Cosmoem_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_NIHILEGO +PLACEHOLDER_ANIM_SINGLE_FRAME(Nihilego); +#endif //P_FAMILY_NIHILEGO -static const union AnimCmd sAnim_Solgaleo_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_BUZZWOLE +PLACEHOLDER_ANIM_SINGLE_FRAME(Buzzwole); +#endif //P_FAMILY_BUZZWOLE -static const union AnimCmd sAnim_Lunala_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_PHEROMOSA +PLACEHOLDER_ANIM_SINGLE_FRAME(Pheromosa); +#endif //P_FAMILY_PHEROMOSA -static const union AnimCmd sAnim_Nihilego_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_XURKITREE +PLACEHOLDER_ANIM_SINGLE_FRAME(Xurkitree); +#endif //P_FAMILY_XURKITREE -static const union AnimCmd sAnim_Buzzwole_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_CELESTEELA +PLACEHOLDER_ANIM_SINGLE_FRAME(Celesteela); +#endif //P_FAMILY_CELESTEELA -static const union AnimCmd sAnim_Pheromosa_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_KARTANA +PLACEHOLDER_ANIM_SINGLE_FRAME(Kartana); +#endif //P_FAMILY_KARTANA -static const union AnimCmd sAnim_Xurkitree_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_GUZZLORD +PLACEHOLDER_ANIM_SINGLE_FRAME(Guzzlord); +#endif //P_FAMILY_GUZZLORD -static const union AnimCmd sAnim_Celesteela_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_NECROZMA +PLACEHOLDER_ANIM_SINGLE_FRAME(Necrozma); +#endif //P_FAMILY_NECROZMA -static const union AnimCmd sAnim_Kartana_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Guzzlord_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Necrozma_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Magearna_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_MAGEARNA +PLACEHOLDER_ANIM_SINGLE_FRAME(Magearna); +#endif //P_FAMILY_MAGEARNA +#if P_FAMILY_MARSHADOW static const union AnimCmd sAnim_Marshadow_1[] = { ANIMCMD_FRAME(0, 1), @@ -8928,116 +9386,70 @@ static const union AnimCmd sAnim_Marshadow_1[] = ANIMCMD_FRAME(0, 10), ANIMCMD_END, }; +#endif //P_FAMILY_MARSHADOW -static const union AnimCmd sAnim_Poipole_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_POIPOLE +PLACEHOLDER_ANIM_SINGLE_FRAME(Poipole); +PLACEHOLDER_ANIM_SINGLE_FRAME(Naganadel); +#endif //P_FAMILY_POIPOLE -static const union AnimCmd sAnim_Naganadel_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_STAKATAKA +PLACEHOLDER_ANIM_SINGLE_FRAME(Stakataka); +#endif //P_FAMILY_STAKATAKA -static const union AnimCmd sAnim_Stakataka_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_BLACEPHALON +PLACEHOLDER_ANIM_SINGLE_FRAME(Blacephalon); +#endif //P_FAMILY_BLACEPHALON -static const union AnimCmd sAnim_Blacephalon_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_ZERAORA +PLACEHOLDER_ANIM_SINGLE_FRAME(Zeraora); +#endif //P_FAMILY_ZERAORA -static const union AnimCmd sAnim_Zeraora_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_MELTAN +PLACEHOLDER_ANIM_SINGLE_FRAME(Meltan); +PLACEHOLDER_ANIM_SINGLE_FRAME(Melmetal); -static const union AnimCmd sAnim_Meltan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(MelmetalGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MELTAN -static const union AnimCmd sAnim_Melmetal_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; -#endif -#if P_GEN_8_POKEMON == TRUE -static const union AnimCmd sAnim_Grookey_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_GROOKEY +PLACEHOLDER_ANIM_SINGLE_FRAME(Grookey); +PLACEHOLDER_ANIM_SINGLE_FRAME(Thwackey); +PLACEHOLDER_ANIM_SINGLE_FRAME(Rillaboom); -static const union AnimCmd sAnim_Thwackey_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(RillaboomGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_GROOKEY -static const union AnimCmd sAnim_Rillaboom_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_SCORBUNNY +PLACEHOLDER_ANIM_SINGLE_FRAME(Scorbunny); +PLACEHOLDER_ANIM_SINGLE_FRAME(Raboot); +PLACEHOLDER_ANIM_SINGLE_FRAME(Cinderace); -static const union AnimCmd sAnim_Scorbunny_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(CinderaceGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SCORBUNNY -static const union AnimCmd sAnim_Raboot_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_SOBBLE +PLACEHOLDER_ANIM_SINGLE_FRAME(Sobble); +PLACEHOLDER_ANIM_SINGLE_FRAME(Drizzile); +PLACEHOLDER_ANIM_SINGLE_FRAME(Inteleon); -static const union AnimCmd sAnim_Cinderace_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(InteleonGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SOBBLE -static const union AnimCmd sAnim_Sobble_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Drizzile_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Inteleon_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Skwovet_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Greedent_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_SKWOVET +PLACEHOLDER_ANIM_SINGLE_FRAME(Skwovet); +PLACEHOLDER_ANIM_SINGLE_FRAME(Greedent); +#endif //P_FAMILY_SKWOVET +#if P_FAMILY_ROOKIDEE static const union AnimCmd sAnim_Rookidee_1[] = { ANIMCMD_FRAME(0, 10), @@ -9070,60 +9482,37 @@ static const union AnimCmd sAnim_Corviknight_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Blipbug_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(CorviknightGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_ROOKIDEE -static const union AnimCmd sAnim_Dottler_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_BLIPBUG +PLACEHOLDER_ANIM_SINGLE_FRAME(Blipbug); +PLACEHOLDER_ANIM_SINGLE_FRAME(Dottler); +PLACEHOLDER_ANIM_SINGLE_FRAME(Orbeetle); -static const union AnimCmd sAnim_Orbeetle_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(OrbeetleGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_BLIPBUG -static const union AnimCmd sAnim_Nickit_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_NICKIT +PLACEHOLDER_ANIM_SINGLE_FRAME(Nickit); +PLACEHOLDER_ANIM_SINGLE_FRAME(Thievul); +#endif //P_FAMILY_NICKIT -static const union AnimCmd sAnim_Thievul_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_GOSSIFLEUR +PLACEHOLDER_ANIM_SINGLE_FRAME(Gossifleur); +PLACEHOLDER_ANIM_SINGLE_FRAME(Eldegoss); +#endif //P_FAMILY_GOSSIFLEUR -static const union AnimCmd sAnim_Gossifleur_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Eldegoss_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Wooloo_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Dubwool_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_WOOLOO +PLACEHOLDER_ANIM_SINGLE_FRAME(Wooloo); +PLACEHOLDER_ANIM_SINGLE_FRAME(Dubwool); +#endif //P_FAMILY_WOOLOO +#if P_FAMILY_CHEWTLE static const union AnimCmd sAnim_Chewtle_1[] = { ANIMCMD_FRAME(0, 10), @@ -9140,67 +9529,73 @@ static const union AnimCmd sAnim_Drednaw_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Yamper_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(DrednawGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CHEWTLE -static const union AnimCmd sAnim_Boltund_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_YAMPER +PLACEHOLDER_ANIM_SINGLE_FRAME(Yamper); +PLACEHOLDER_ANIM_SINGLE_FRAME(Boltund); +#endif //P_FAMILY_YAMPER -PLACEHOLDER_TWO_FRAME_ANIMATION(Rolycoly); -PLACEHOLDER_TWO_FRAME_ANIMATION(Carkol); -PLACEHOLDER_TWO_FRAME_ANIMATION(Coalossal); -PLACEHOLDER_TWO_FRAME_ANIMATION(Applin); -PLACEHOLDER_TWO_FRAME_ANIMATION(Flapple); -PLACEHOLDER_TWO_FRAME_ANIMATION(Appletun); +#if P_FAMILY_ROLYCOLY +PLACEHOLDER_ANIM_TWO_FRAMES(Rolycoly); +PLACEHOLDER_ANIM_TWO_FRAMES(Carkol); +PLACEHOLDER_ANIM_TWO_FRAMES(Coalossal); -static const union AnimCmd sAnim_Silicobra_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(CoalossalGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_ROLYCOLY -static const union AnimCmd sAnim_Sandaconda_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_APPLIN +PLACEHOLDER_ANIM_TWO_FRAMES(Applin); +PLACEHOLDER_ANIM_TWO_FRAMES(Flapple); -static const union AnimCmd sAnim_Cramorant_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(FlappleGigantamax); +#endif //P_GIGANTAMAX_FORMS -static const union AnimCmd sAnim_Arrokuda_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +PLACEHOLDER_ANIM_TWO_FRAMES(Appletun); -static const union AnimCmd sAnim_Barraskewda_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(AppletunGigantamax); +#endif //P_GIGANTAMAX_FORMS -static const union AnimCmd sAnim_Toxel_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_GEN_9_CROSS_EVOS +PLACEHOLDER_ANIM_SINGLE_FRAME(Dipplin); +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_APPLIN -static const union AnimCmd sAnim_Toxtricity_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_SILICOBRA +PLACEHOLDER_ANIM_SINGLE_FRAME(Silicobra); +PLACEHOLDER_ANIM_SINGLE_FRAME(Sandaconda); +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(SandacondaGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SILICOBRA + +#if P_FAMILY_CRAMORANT +PLACEHOLDER_ANIM_SINGLE_FRAME(Cramorant); +#endif //P_FAMILY_CRAMORANT + +#if P_FAMILY_ARROKUDA +PLACEHOLDER_ANIM_SINGLE_FRAME(Arrokuda); +PLACEHOLDER_ANIM_SINGLE_FRAME(Barraskewda); +#endif //P_FAMILY_ARROKUDA + +#if P_FAMILY_TOXEL +PLACEHOLDER_ANIM_SINGLE_FRAME(Toxel); +PLACEHOLDER_ANIM_SINGLE_FRAME(Toxtricity); + +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(ToxtricityGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_TOXEL + +#if P_FAMILY_SIZZLIPEDE static const union AnimCmd sAnim_Sizzlipede_1[] = { ANIMCMD_FRAME(0, 1), @@ -9217,1297 +9612,484 @@ static const union AnimCmd sAnim_Centiskorch_1[] = ANIMCMD_END, }; -static const union AnimCmd sAnim_Clobbopus_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Grapploct_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Sinistea_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Polteageist_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Hatenna_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Hattrem_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Hatterene_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Impidimp_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Morgrem_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Grimmsnarl_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Obstagoon_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Perrserker_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Cursola_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Sirfetchd_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_MrRime_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Runerigus_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Milcery_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Alcremie_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Falinks_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -PLACEHOLDER_TWO_FRAME_ANIMATION(Pincurchin); - -static const union AnimCmd sAnim_Snom_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Frosmoth_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Stonjourner_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Eiscue_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Indeedee_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Morpeko_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Cufant_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Copperajah_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Dracozolt_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Arctozolt_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Dracovish_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Arctovish_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Duraludon_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Dreepy_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Drakloak_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Dragapult_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Zacian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Zamazenta_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Eternatus_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Kubfu_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Urshifu_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Zarude_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Regieleki_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Regidrago_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Glastrier_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Spectrier_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Calyrex_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Wyrdeer_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Kleavor_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Ursaluna_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Basculegion_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Sneasler_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Overqwil_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_Enamorus_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; -#endif - -static const union AnimCmd sAnim_VenusaurMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_CHARIZARD_MEGA_X_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_CHARIZARD_MEGA_Y_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_BlastoiseMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_BeedrillMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PidgeotMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_AlakazamMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_SlowbroMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_GengarMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_KangaskhanMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PinsirMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_GyaradosMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_AerodactylMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_MEWTWO_MEGA_X_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_MEWTWO_MEGA_Y_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_AmpharosMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_SteelixMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_ScizorMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_HeracrossMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_HoundoomMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_TyranitarMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_SceptileMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_BlazikenMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_SwampertMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_GardevoirMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_SableyeMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_MawileMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_AggronMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_MedichamMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_ManectricMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_SharpedoMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_CameruptMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_AltariaMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_BanetteMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_AbsolMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_GlalieMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_SalamenceMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_MetagrossMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_LatiasMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_LatiosMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_KyogrePrimal_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_GroudonPrimal_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_RayquazaMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -#if P_GEN_4_POKEMON == TRUE -static const union AnimCmd sAnim_LopunnyMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_GarchompMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_LucarioMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_AbomasnowMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_GalladeMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; -#endif -#if P_GEN_5_POKEMON == TRUE -static const union AnimCmd sAnim_AudinoMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; -#endif -#if P_GEN_6_POKEMON == TRUE -static const union AnimCmd sAnim_DiancieMega_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; -#endif - -static const union AnimCmd sAnim_RattataAlolan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_RaticateAlolan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_RaichuAlolan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_SandshrewAlolan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_SandslashAlolan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_VulpixAlolan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_NinetalesAlolan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_DiglettAlolan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_DugtrioAlolan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_MeowthAlolan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PersianAlolan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_GeodudeAlolan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_GravelerAlolan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_GolemAlolan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_GrimerAlolan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_MukAlolan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -PLACEHOLDER_TWO_FRAME_ANIMATION(ExeggutorAlolan); - -static const union AnimCmd sAnim_MarowakAlolan_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_MeowthGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PonytaGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_RapidashGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_SlowpokeGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_SlowbroGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_FarfetchdGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_WeezingGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_MrMimeGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_ArticunoGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_ZapdosGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_MoltresGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_SlowkingGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_CorsolaGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_ZigzagoonGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_LinooneGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -#if P_GEN_5_POKEMON == TRUE -static const union AnimCmd sAnim_DarumakaGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_DarmanitanGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_YamaskGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_StunfiskGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; -#endif - -static const union AnimCmd sAnim_GrowlitheHisuian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_ArcanineHisuian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_VoltorbHisuian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_ElectrodeHisuian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_TyphlosionHisuian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_QwilfishHisuian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_SneaselHisuian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -#if P_GEN_5_POKEMON == TRUE -static const union AnimCmd sAnim_SamurottHisuian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_LilligantHisuian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_ZoruaHisuian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_ZoroarkHisuian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_BraviaryHisuian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; -#endif -#if P_GEN_6_POKEMON == TRUE -static const union AnimCmd sAnim_SliggooHisuian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_GoodraHisuian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_AvaluggHisuian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; -#endif -#if P_GEN_7_POKEMON == TRUE -static const union AnimCmd sAnim_DecidueyeHisuian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; -#endif - -static const union AnimCmd sAnim_PikachuCosplay_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PikachuRockStar_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PikachuBelle_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PikachuPopStar_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PIKACHU_PH_D_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PikachuLibre_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PikachuOriginalCap_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PikachuHoennCap_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PikachuSinnohCap_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PikachuUnovaCap_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PikachuKalosCap_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PikachuAlolaCap_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PikachuPartnerCap_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PikachuWorldCap_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_PichuSpikyEared_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; -static const union AnimCmd sAnim_DeoxysAttack_1[] = -{ - ANIMCMD_FRAME(0, 16), - ANIMCMD_FRAME(1, 16), - ANIMCMD_FRAME(0, 26), - ANIMCMD_FRAME(1, 16), - ANIMCMD_FRAME(0, 16), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_DeoxysAttack_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_DeoxysDefense_1[] = -{ - ANIMCMD_FRAME(0, 16), - ANIMCMD_FRAME(1, 16), - ANIMCMD_FRAME(0, 26), - ANIMCMD_FRAME(1, 16), - ANIMCMD_FRAME(0, 16), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_DeoxysDefense_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_DeoxysSpeed_1[] = -{ - ANIMCMD_FRAME(0, 16), - ANIMCMD_FRAME(1, 16), - ANIMCMD_FRAME(0, 26), - ANIMCMD_FRAME(1, 16), - ANIMCMD_FRAME(0, 16), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_DeoxysSpeed_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; - -#if P_GEN_4_POKEMON == TRUE -static const union AnimCmd sAnim_ShayminSky_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_FRAME(1, 36), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_DialgaOrigin_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(CentiskorchGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SIZZLIPEDE + +#if P_FAMILY_CLOBBOPUS +PLACEHOLDER_ANIM_SINGLE_FRAME(Clobbopus); +PLACEHOLDER_ANIM_SINGLE_FRAME(Grapploct); +#endif //P_FAMILY_CLOBBOPUS + +#if P_FAMILY_SINISTEA +PLACEHOLDER_ANIM_SINGLE_FRAME(Sinistea); +PLACEHOLDER_ANIM_SINGLE_FRAME(Polteageist); +#endif //P_FAMILY_SINISTEA + +#if P_FAMILY_HATENNA +PLACEHOLDER_ANIM_SINGLE_FRAME(Hatenna); +PLACEHOLDER_ANIM_SINGLE_FRAME(Hattrem); +PLACEHOLDER_ANIM_SINGLE_FRAME(Hatterene); + +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(HattereneGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_HATENNA + +#if P_FAMILY_IMPIDIMP +PLACEHOLDER_ANIM_SINGLE_FRAME(Impidimp); +PLACEHOLDER_ANIM_SINGLE_FRAME(Morgrem); +PLACEHOLDER_ANIM_SINGLE_FRAME(Grimmsnarl); + +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(GrimmsnarlGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_IMPIDIMP + +#if P_FAMILY_MILCERY +PLACEHOLDER_ANIM_SINGLE_FRAME(Milcery); +PLACEHOLDER_ANIM_SINGLE_FRAME(Alcremie); + +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(AlcremieGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MILCERY + +#if P_FAMILY_FALINKS +PLACEHOLDER_ANIM_SINGLE_FRAME(Falinks); +#endif //P_FAMILY_FALINKS + +#if P_FAMILY_PINCURCHIN +PLACEHOLDER_ANIM_TWO_FRAMES(Pincurchin); +#endif //P_FAMILY_PINCURCHIN + +#if P_FAMILY_SNOM +PLACEHOLDER_ANIM_SINGLE_FRAME(Snom); +PLACEHOLDER_ANIM_SINGLE_FRAME(Frosmoth); +#endif //P_FAMILY_SNOM + +#if P_FAMILY_STONJOURNER +PLACEHOLDER_ANIM_SINGLE_FRAME(Stonjourner); +#endif //P_FAMILY_STONJOURNER + +#if P_FAMILY_EISCUE +PLACEHOLDER_ANIM_SINGLE_FRAME(Eiscue); +#endif //P_FAMILY_EISCUE + +#if P_FAMILY_INDEEDEE +PLACEHOLDER_ANIM_SINGLE_FRAME(Indeedee); +#endif //P_FAMILY_INDEEDEE + +#if P_FAMILY_MORPEKO +PLACEHOLDER_ANIM_SINGLE_FRAME(Morpeko); +#endif //P_FAMILY_MORPEKO + +#if P_FAMILY_CUFANT +PLACEHOLDER_ANIM_SINGLE_FRAME(Cufant); +PLACEHOLDER_ANIM_SINGLE_FRAME(Copperajah); + +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(CopperajahGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CUFANT + +#if P_FAMILY_DRACOZOLT +PLACEHOLDER_ANIM_SINGLE_FRAME(Dracozolt); +#endif //P_FAMILY_DRACOZOLT + +#if P_FAMILY_ARCTOZOLT +PLACEHOLDER_ANIM_SINGLE_FRAME(Arctozolt); +#endif //P_FAMILY_ARCTOZOLT + +#if P_FAMILY_DRACOVISH +PLACEHOLDER_ANIM_SINGLE_FRAME(Dracovish); +#endif //P_FAMILY_DRACOVISH + +#if P_FAMILY_ARCTOVISH +PLACEHOLDER_ANIM_SINGLE_FRAME(Arctovish); +#endif //P_FAMILY_ARCTOVISH + +#if P_FAMILY_DURALUDON +PLACEHOLDER_ANIM_SINGLE_FRAME(Duraludon); + +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(DuraludonGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_DURALUDON + +#if P_FAMILY_DREEPY +PLACEHOLDER_ANIM_SINGLE_FRAME(Dreepy); +PLACEHOLDER_ANIM_SINGLE_FRAME(Drakloak); +PLACEHOLDER_ANIM_SINGLE_FRAME(Dragapult); +#endif //P_FAMILY_DREEPY + +#if P_FAMILY_ZACIAN +PLACEHOLDER_ANIM_SINGLE_FRAME(Zacian); +#endif //P_FAMILY_ZACIAN + +#if P_FAMILY_ZAMAZENTA +PLACEHOLDER_ANIM_SINGLE_FRAME(Zamazenta); +#endif //P_FAMILY_ZAMAZENTA + +#if P_FAMILY_ETERNATUS +PLACEHOLDER_ANIM_SINGLE_FRAME(Eternatus); +#endif //P_FAMILY_ETERNATUS + +#if P_FAMILY_KUBFU +PLACEHOLDER_ANIM_SINGLE_FRAME(Kubfu); +PLACEHOLDER_ANIM_SINGLE_FRAME(Urshifu); + +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(UrshifuSingleStrikeStyleGigantamax); +#endif //P_GIGANTAMAX_FORMS + +#if P_GIGANTAMAX_FORMS +PLACEHOLDER_ANIM_SINGLE_FRAME(UrshifuRapidStrikeStyleGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_KUBFU + +#if P_FAMILY_ZARUDE +PLACEHOLDER_ANIM_SINGLE_FRAME(Zarude); +#endif //P_FAMILY_ZARUDE + +#if P_FAMILY_REGIELEKI +PLACEHOLDER_ANIM_SINGLE_FRAME(Regieleki); +#endif //P_FAMILY_REGIELEKI + +#if P_FAMILY_REGIDRAGO +PLACEHOLDER_ANIM_SINGLE_FRAME(Regidrago); +#endif //P_FAMILY_REGIDRAGO + +#if P_FAMILY_GLASTRIER +PLACEHOLDER_ANIM_SINGLE_FRAME(Glastrier); +#endif //P_FAMILY_GLASTRIER + +#if P_FAMILY_SPECTRIER +PLACEHOLDER_ANIM_SINGLE_FRAME(Spectrier); +#endif //P_FAMILY_SPECTRIER + +#if P_FAMILY_CALYREX +PLACEHOLDER_ANIM_SINGLE_FRAME(Calyrex); +#endif //P_FAMILY_CALYREX + +#if P_FAMILY_ENAMORUS +PLACEHOLDER_ANIM_SINGLE_FRAME(EnamorusIncarnate); +PLACEHOLDER_ANIM_SINGLE_FRAME(EnamorusTherian); +#endif //P_FAMILY_ENAMORUS + +#if P_FAMILY_SPRIGATITO +PLACEHOLDER_ANIM_SINGLE_FRAME(Sprigatito); +PLACEHOLDER_ANIM_SINGLE_FRAME(Floragato); +PLACEHOLDER_ANIM_SINGLE_FRAME(Meowscarada); +#endif //P_FAMILY_SPRIGATITO + +#if P_FAMILY_FUECOCO +PLACEHOLDER_ANIM_SINGLE_FRAME(Fuecoco); +PLACEHOLDER_ANIM_SINGLE_FRAME(Crocalor); +PLACEHOLDER_ANIM_SINGLE_FRAME(Skeledirge); +#endif //P_FAMILY_FUECOCO + +#if P_FAMILY_QUAXLY +PLACEHOLDER_ANIM_SINGLE_FRAME(Quaxly); +PLACEHOLDER_ANIM_SINGLE_FRAME(Quaxwell); +PLACEHOLDER_ANIM_SINGLE_FRAME(Quaquaval); +#endif //P_FAMILY_QUAXLY + +#if P_FAMILY_LECHONK +PLACEHOLDER_ANIM_SINGLE_FRAME(Lechonk); +PLACEHOLDER_ANIM_SINGLE_FRAME(Oinkologne); +#endif //P_FAMILY_LECHONK + +#if P_FAMILY_TAROUNTULA +PLACEHOLDER_ANIM_SINGLE_FRAME(Tarountula); +PLACEHOLDER_ANIM_SINGLE_FRAME(Spidops); +#endif //P_FAMILY_TAROUNTULA + +#if P_FAMILY_NYMBLE +PLACEHOLDER_ANIM_SINGLE_FRAME(Nymble); +PLACEHOLDER_ANIM_SINGLE_FRAME(Lokix); +#endif //P_FAMILY_NYMBLE + +#if P_FAMILY_PAWMI +PLACEHOLDER_ANIM_SINGLE_FRAME(Pawmi); +PLACEHOLDER_ANIM_SINGLE_FRAME(Pawmo); +PLACEHOLDER_ANIM_SINGLE_FRAME(Pawmot); +#endif //P_FAMILY_PAWMI + +#if P_FAMILY_TANDEMAUS +PLACEHOLDER_ANIM_SINGLE_FRAME(Tandemaus); +PLACEHOLDER_ANIM_SINGLE_FRAME(Maushold); +#endif //P_FAMILY_TANDEMAUS + +#if P_FAMILY_FIDOUGH +PLACEHOLDER_ANIM_SINGLE_FRAME(Fidough); +PLACEHOLDER_ANIM_SINGLE_FRAME(Dachsbun); +#endif //P_FAMILY_FIDOUGH + +#if P_FAMILY_SMOLIV +PLACEHOLDER_ANIM_SINGLE_FRAME(Smoliv); +PLACEHOLDER_ANIM_SINGLE_FRAME(Dolliv); +PLACEHOLDER_ANIM_SINGLE_FRAME(Arboliva); +#endif //P_FAMILY_SMOLIV + +#if P_FAMILY_SQUAWKABILLY +PLACEHOLDER_ANIM_SINGLE_FRAME(Squawkabilly); +#endif //P_FAMILY_SQUAWKABILLY + +#if P_FAMILY_NACLI +PLACEHOLDER_ANIM_SINGLE_FRAME(Nacli); +PLACEHOLDER_ANIM_SINGLE_FRAME(Naclstack); +PLACEHOLDER_ANIM_SINGLE_FRAME(Garganacl); +#endif //P_FAMILY_NACLI + +#if P_FAMILY_CHARCADET +PLACEHOLDER_ANIM_SINGLE_FRAME(Charcadet); +PLACEHOLDER_ANIM_SINGLE_FRAME(Armarouge); +PLACEHOLDER_ANIM_SINGLE_FRAME(Ceruledge); +#endif //P_FAMILY_CHARCADET + +#if P_FAMILY_TADBULB +PLACEHOLDER_ANIM_SINGLE_FRAME(Tadbulb); +PLACEHOLDER_ANIM_SINGLE_FRAME(Bellibolt); +#endif //P_FAMILY_TADBULB + +#if P_FAMILY_WATTREL +PLACEHOLDER_ANIM_SINGLE_FRAME(Wattrel); +PLACEHOLDER_ANIM_SINGLE_FRAME(Kilowattrel); +#endif //P_FAMILY_WATTREL + +#if P_FAMILY_MASCHIFF +PLACEHOLDER_ANIM_SINGLE_FRAME(Maschiff); +PLACEHOLDER_ANIM_SINGLE_FRAME(Mabosstiff); +#endif //P_FAMILY_MASCHIFF + +#if P_FAMILY_SHROODLE +PLACEHOLDER_ANIM_SINGLE_FRAME(Shroodle); +PLACEHOLDER_ANIM_SINGLE_FRAME(Grafaiai); +#endif //P_FAMILY_SHROODLE + +#if P_FAMILY_BRAMBLIN +PLACEHOLDER_ANIM_SINGLE_FRAME(Bramblin); +PLACEHOLDER_ANIM_SINGLE_FRAME(Brambleghast); +#endif //P_FAMILY_BRAMBLIN + +#if P_FAMILY_TOEDSCOOL +PLACEHOLDER_ANIM_SINGLE_FRAME(Toedscool); +PLACEHOLDER_ANIM_SINGLE_FRAME(Toedscruel); +#endif //P_FAMILY_TOEDSCOOL + +#if P_FAMILY_KLAWF +PLACEHOLDER_ANIM_SINGLE_FRAME(Klawf); +#endif //P_FAMILY_KLAWF + +#if P_FAMILY_CAPSAKID +PLACEHOLDER_ANIM_SINGLE_FRAME(Capsakid); +PLACEHOLDER_ANIM_SINGLE_FRAME(Scovillain); +#endif //P_FAMILY_CAPSAKID + +#if P_FAMILY_RELLOR +PLACEHOLDER_ANIM_SINGLE_FRAME(Rellor); +PLACEHOLDER_ANIM_SINGLE_FRAME(Rabsca); +#endif //P_FAMILY_RELLOR + +#if P_FAMILY_FLITTLE +PLACEHOLDER_ANIM_SINGLE_FRAME(Flittle); +PLACEHOLDER_ANIM_SINGLE_FRAME(Espathra); +#endif //P_FAMILY_FLITTLE + +#if P_FAMILY_TINKATINK +PLACEHOLDER_ANIM_SINGLE_FRAME(Tinkatink); +PLACEHOLDER_ANIM_SINGLE_FRAME(Tinkatuff); +PLACEHOLDER_ANIM_SINGLE_FRAME(Tinkaton); +#endif //P_FAMILY_TINKATINK + +#if P_FAMILY_WIGLETT +PLACEHOLDER_ANIM_SINGLE_FRAME(Wiglett); +PLACEHOLDER_ANIM_SINGLE_FRAME(Wugtrio); +#endif //P_FAMILY_WIGLETT + +#if P_FAMILY_BOMBIRDIER +PLACEHOLDER_ANIM_SINGLE_FRAME(Bombirdier); +#endif //P_FAMILY_BOMBIRDIER + +#if P_FAMILY_FINIZEN +PLACEHOLDER_ANIM_SINGLE_FRAME(Finizen); +PLACEHOLDER_ANIM_SINGLE_FRAME(Palafin); +#endif //P_FAMILY_FINIZEN + +#if P_FAMILY_VAROOM +PLACEHOLDER_ANIM_SINGLE_FRAME(Varoom); +PLACEHOLDER_ANIM_SINGLE_FRAME(Revavroom); +#endif //P_FAMILY_VAROOM + +#if P_FAMILY_CYCLIZAR +PLACEHOLDER_ANIM_SINGLE_FRAME(Cyclizar); +#endif //P_FAMILY_CYCLIZAR + +#if P_FAMILY_ORTHWORM +PLACEHOLDER_ANIM_SINGLE_FRAME(Orthworm); +#endif //P_FAMILY_ORTHWORM + +#if P_FAMILY_GLIMMET +PLACEHOLDER_ANIM_SINGLE_FRAME(Glimmet); +PLACEHOLDER_ANIM_SINGLE_FRAME(Glimmora); +#endif //P_FAMILY_GLIMMET + +#if P_FAMILY_GREAVARD +PLACEHOLDER_ANIM_SINGLE_FRAME(Greavard); +PLACEHOLDER_ANIM_SINGLE_FRAME(Houndstone); +#endif //P_FAMILY_GREAVARD + +#if P_FAMILY_FLAMIGO +PLACEHOLDER_ANIM_SINGLE_FRAME(Flamigo); +#endif //P_FAMILY_FLAMIGO + +#if P_FAMILY_CETODDLE +PLACEHOLDER_ANIM_SINGLE_FRAME(Cetoddle); +PLACEHOLDER_ANIM_SINGLE_FRAME(Cetitan); +#endif //P_FAMILY_CETODDLE + +#if P_FAMILY_VELUZA +PLACEHOLDER_ANIM_SINGLE_FRAME(Veluza); +#endif //P_FAMILY_VELUZA + +#if P_FAMILY_DONDOZO +PLACEHOLDER_ANIM_SINGLE_FRAME(Dondozo); +#endif //P_FAMILY_DONDOZO + +#if P_FAMILY_TATSUGIRI +PLACEHOLDER_ANIM_SINGLE_FRAME(Tatsugiri); +#endif //P_FAMILY_TATSUGIRI + +#if P_FAMILY_GREAT_TUSK +PLACEHOLDER_ANIM_TWO_FRAMES(GreatTusk); +#endif //P_FAMILY_GREAT_TUSK + +#if P_FAMILY_SCREAM_TAIL +PLACEHOLDER_ANIM_SINGLE_FRAME(ScreamTail); +#endif //P_FAMILY_SCREAM_TAIL + +#if P_FAMILY_BRUTE_BONNET +PLACEHOLDER_ANIM_SINGLE_FRAME(BruteBonnet); +#endif //P_FAMILY_BRUTE_BONNET + +#if P_FAMILY_FLUTTER_MANE +PLACEHOLDER_ANIM_SINGLE_FRAME(FlutterMane); +#endif //P_FAMILY_FLUTTER_MANE + +#if P_FAMILY_SLITHER_WING +PLACEHOLDER_ANIM_SINGLE_FRAME(SlitherWing); +#endif //P_FAMILY_SLITHER_WING + +#if P_FAMILY_SANDY_SHOCKS +PLACEHOLDER_ANIM_SINGLE_FRAME(SandyShocks); +#endif //P_FAMILY_SANDY_SHOCKS + +#if P_FAMILY_IRON_TREADS +PLACEHOLDER_ANIM_SINGLE_FRAME(IronTreads); +#endif //P_FAMILY_IRON_TREADS + +#if P_FAMILY_IRON_BUNDLE +PLACEHOLDER_ANIM_SINGLE_FRAME(IronBundle); +#endif //P_FAMILY_IRON_BUNDLE + +#if P_FAMILY_IRON_HANDS +PLACEHOLDER_ANIM_SINGLE_FRAME(IronHands); +#endif //P_FAMILY_IRON_HANDS + +#if P_FAMILY_IRON_JUGULIS +PLACEHOLDER_ANIM_SINGLE_FRAME(IronJugulis); +#endif //P_FAMILY_IRON_JUGULIS + +#if P_FAMILY_IRON_MOTH +PLACEHOLDER_ANIM_SINGLE_FRAME(IronMoth); +#endif //P_FAMILY_IRON_MOTH + +#if P_FAMILY_IRON_THORNS +PLACEHOLDER_ANIM_SINGLE_FRAME(IronThorns); +#endif //P_FAMILY_IRON_THORNS + +#if P_FAMILY_FRIGIBAX +PLACEHOLDER_ANIM_TWO_FRAMES(Frigibax); +PLACEHOLDER_ANIM_SINGLE_FRAME(Arctibax); +PLACEHOLDER_ANIM_SINGLE_FRAME(Baxcalibur); +#endif //P_FAMILY_FRIGIBAX -static const union AnimCmd sAnim_PalkiaOrigin_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnim_GiratinaOrigin_1[] = -{ - ANIMCMD_FRAME(0, 11), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; +#if P_FAMILY_GIMMIGHOUL +PLACEHOLDER_ANIM_SINGLE_FRAME(Gimmighoul); +PLACEHOLDER_ANIM_SINGLE_FRAME(Gholdengo); +#endif //P_FAMILY_GIMMIGHOUL -static const union AnimCmd sAnim_GiratinaOrigin_2[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(2, 20), - ANIMCMD_END, -}; -#endif -#if P_GEN_5_POKEMON == TRUE -static const union AnimCmd sAnim_DarmanitanZenMode_1[] = -{ - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 20), - ANIMCMD_END, -}; +#if P_FAMILY_WO_CHIEN +PLACEHOLDER_ANIM_SINGLE_FRAME(WoChien); +#endif //P_FAMILY_WO_CHIEN -static const union AnimCmd sAnim_DarmanitanZenModeGalarian_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_CHIEN_PAO +PLACEHOLDER_ANIM_SINGLE_FRAME(ChienPao); +#endif //P_FAMILY_CHIEN_PAO -static const union AnimCmd sAnim_TornadusTherian_1[] = -{ - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_FRAME(1, 35), - ANIMCMD_FRAME(0, 5), - ANIMCMD_END, -}; +#if P_FAMILY_TING_LU +PLACEHOLDER_ANIM_SINGLE_FRAME(TingLu); +#endif //P_FAMILY_TING_LU -static const union AnimCmd sAnim_ThundurusTherian_1[] = -{ - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_FRAME(1, 5), - ANIMCMD_FRAME(0, 5), - ANIMCMD_END, -}; +#if P_FAMILY_CHI_YU +PLACEHOLDER_ANIM_SINGLE_FRAME(ChiYu); +#endif //P_FAMILY_CHI_YU -static const union AnimCmd sAnim_LandorusTherian_1[] = -{ - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; +#if P_FAMILY_ROARING_MOON +PLACEHOLDER_ANIM_SINGLE_FRAME(RoaringMoon); +#endif //P_FAMILY_ROARING_MOON -static const union AnimCmd sAnim_KyuremBlack_1[] = -{ - ANIMCMD_FRAME(1, 40), - ANIMCMD_FRAME(0, 5), - ANIMCMD_END, -}; +#if P_FAMILY_IRON_VALIANT +PLACEHOLDER_ANIM_SINGLE_FRAME(IronValiant); +#endif //P_FAMILY_IRON_VALIANT -static const union AnimCmd sAnim_KyuremWhite_1[] = -{ - ANIMCMD_FRAME(1, 40), - ANIMCMD_FRAME(0, 5), - ANIMCMD_END, -}; +#if P_FAMILY_KORAIDON +PLACEHOLDER_ANIM_SINGLE_FRAME(Koraidon); +#endif //P_FAMILY_KORAIDON -static const union AnimCmd sAnim_KeldeoResolute_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_FRAME(1, 36), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; +#if P_FAMILY_MIRAIDON +PLACEHOLDER_ANIM_SINGLE_FRAME(Miraidon); +#endif //P_FAMILY_MIRAIDON -static const union AnimCmd sAnim_MeloettaPirouette_1[] = -{ - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_FRAME(1, 15), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; -#endif -#if P_GEN_6_POKEMON == TRUE -static const union AnimCmd sAnim_AegislashBlade_1[] = -{ - ANIMCMD_FRAME(0, 18), - ANIMCMD_FRAME(1, 18), - ANIMCMD_FRAME(0, 18), - ANIMCMD_FRAME(1, 18), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; +#if P_FAMILY_WALKING_WAKE +PLACEHOLDER_ANIM_SINGLE_FRAME(WalkingWake); +#endif //P_FAMILY_WALKING_WAKE -static const union AnimCmd sAnim_Zygarde10_1[] = -{ - ANIMCMD_FRAME(0, 20), - ANIMCMD_FRAME(1, 10), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; +#if P_FAMILY_IRON_LEAVES +PLACEHOLDER_ANIM_SINGLE_FRAME(IronLeaves); +#endif //P_FAMILY_IRON_LEAVES -static const union AnimCmd sAnim_ZygardeComplete_1[] = -{ - ANIMCMD_FRAME(0, 12), - ANIMCMD_FRAME(1, 45), - ANIMCMD_FRAME(0, 15), - ANIMCMD_END, -}; +#if P_FAMILY_POLTCHAGEIST +PLACEHOLDER_ANIM_SINGLE_FRAME(Poltchageist); +PLACEHOLDER_ANIM_SINGLE_FRAME(Sinistcha); +#endif //P_FAMILY_POLTCHAGEIST -static const union AnimCmd sAnim_HoopaUnbound_1[] = -{ - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(0, 10), - ANIMCMD_END, -}; -#endif -#if P_GEN_7_POKEMON == TRUE -static const union AnimCmd sAnim_MiniorCore_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_OKIDOGI +PLACEHOLDER_ANIM_SINGLE_FRAME(Okidogi); +#endif //P_FAMILY_OKIDOGI -static const union AnimCmd sAnim_WishiwashiSchool_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_MUNKIDORI +PLACEHOLDER_ANIM_SINGLE_FRAME(Munkidori); +#endif //P_FAMILY_MUNKIDORI -static const union AnimCmd sAnim_MimikyuBusted_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_FEZANDIPITI +PLACEHOLDER_ANIM_SINGLE_FRAME(Fezandipiti); +#endif //P_FAMILY_FEZANDIPITI -static const union AnimCmd sAnim_LycanrocMidnight_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; +#if P_FAMILY_OGERPON +PLACEHOLDER_ANIM_SINGLE_FRAME(Ogerpon); +#endif //P_FAMILY_OGERPON -static const union AnimCmd sAnim_LycanrocDusk_1[] = -{ - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; -#endif -#if P_GEN_8_POKEMON == TRUE -static const union AnimCmd sAnim_EnamorusTherian_1[] = +static const union AnimCmd sAnim_Egg_1[] = { - ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(2, 6), + ANIMCMD_FRAME(3, 6), ANIMCMD_END, }; -#endif #define SINGLE_ANIMATION(name) \ static const union AnimCmd *const sAnims_##name[] = \ @@ -10516,1097 +10098,94 @@ static const union AnimCmd *const sAnims_##name[] = \ sAnim_##name##_1, \ } -#define DOUBLE_ANIMATION(name) \ -static const union AnimCmd *const sAnims_##name[] = \ -{ \ - sAnim_GeneralFrame0, \ - sAnim_##name##_1, \ - sAnim_##name##_2, \ -} SINGLE_ANIMATION(None); +#if P_FAMILY_BULBASAUR SINGLE_ANIMATION(Bulbasaur); SINGLE_ANIMATION(Ivysaur); SINGLE_ANIMATION(Venusaur); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(VenusaurMega); +#endif //P_MEGA_EVOLUTIONS +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(VenusaurGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_BULBASAUR +#if P_FAMILY_CHARMANDER SINGLE_ANIMATION(Charmander); SINGLE_ANIMATION(Charmeleon); SINGLE_ANIMATION(Charizard); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(CharizardMegaX); +SINGLE_ANIMATION(CharizardMegaY); +#endif //P_MEGA_EVOLUTIONS +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(CharizardGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CHARMANDER +#if P_FAMILY_SQUIRTLE SINGLE_ANIMATION(Squirtle); SINGLE_ANIMATION(Wartortle); SINGLE_ANIMATION(Blastoise); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(BlastoiseMega); +#endif //P_MEGA_EVOLUTIONS +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(BlastoiseGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SQUIRTLE +#if P_FAMILY_CATERPIE SINGLE_ANIMATION(Caterpie); SINGLE_ANIMATION(Metapod); SINGLE_ANIMATION(Butterfree); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(ButterfreeGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CATERPIE +#if P_FAMILY_WEEDLE SINGLE_ANIMATION(Weedle); SINGLE_ANIMATION(Kakuna); SINGLE_ANIMATION(Beedrill); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(BeedrillMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_WEEDLE +#if P_FAMILY_PIDGEY SINGLE_ANIMATION(Pidgey); SINGLE_ANIMATION(Pidgeotto); SINGLE_ANIMATION(Pidgeot); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(PidgeotMega); +#endif +#endif //P_FAMILY_PIDGEY +#if P_FAMILY_RATTATA SINGLE_ANIMATION(Rattata); SINGLE_ANIMATION(Raticate); -SINGLE_ANIMATION(Spearow); -SINGLE_ANIMATION(Fearow); -SINGLE_ANIMATION(Ekans); -SINGLE_ANIMATION(Arbok); -DOUBLE_ANIMATION(Pikachu); -DOUBLE_ANIMATION(Raichu); -DOUBLE_ANIMATION(Sandshrew); -DOUBLE_ANIMATION(Sandslash); -SINGLE_ANIMATION(NidoranF); -SINGLE_ANIMATION(Nidorina); -SINGLE_ANIMATION(Nidoqueen); -SINGLE_ANIMATION(NidoranM); -SINGLE_ANIMATION(Nidorino); -SINGLE_ANIMATION(Nidoking); -SINGLE_ANIMATION(Clefairy); -SINGLE_ANIMATION(Clefable); -DOUBLE_ANIMATION(Vulpix); -DOUBLE_ANIMATION(Ninetales); -DOUBLE_ANIMATION(Jigglypuff); -DOUBLE_ANIMATION(Wigglytuff); -SINGLE_ANIMATION(Zubat); -SINGLE_ANIMATION(Golbat); -SINGLE_ANIMATION(Oddish); -SINGLE_ANIMATION(Gloom); -SINGLE_ANIMATION(Vileplume); -SINGLE_ANIMATION(Paras); -SINGLE_ANIMATION(Parasect); -SINGLE_ANIMATION(Venonat); -SINGLE_ANIMATION(Venomoth); -SINGLE_ANIMATION(Diglett); -SINGLE_ANIMATION(Dugtrio); -SINGLE_ANIMATION(Meowth); -SINGLE_ANIMATION(Persian); -DOUBLE_ANIMATION(Psyduck); -DOUBLE_ANIMATION(Golduck); -SINGLE_ANIMATION(Mankey); -SINGLE_ANIMATION(Primeape); -SINGLE_ANIMATION(Growlithe); -SINGLE_ANIMATION(Arcanine); -SINGLE_ANIMATION(Poliwag); -SINGLE_ANIMATION(Poliwhirl); -SINGLE_ANIMATION(Poliwrath); -SINGLE_ANIMATION(Abra); -SINGLE_ANIMATION(Kadabra); -SINGLE_ANIMATION(Alakazam); -SINGLE_ANIMATION(Machop); -SINGLE_ANIMATION(Machoke); -SINGLE_ANIMATION(Machamp); -SINGLE_ANIMATION(Bellsprout); -SINGLE_ANIMATION(Weepinbell); -SINGLE_ANIMATION(Victreebel); -SINGLE_ANIMATION(Tentacool); -SINGLE_ANIMATION(Tentacruel); -SINGLE_ANIMATION(Geodude); -SINGLE_ANIMATION(Graveler); -SINGLE_ANIMATION(Golem); -SINGLE_ANIMATION(Ponyta); -SINGLE_ANIMATION(Rapidash); -SINGLE_ANIMATION(Slowpoke); -SINGLE_ANIMATION(Slowbro); -SINGLE_ANIMATION(Magnemite); -SINGLE_ANIMATION(Magneton); -SINGLE_ANIMATION(Farfetchd); -SINGLE_ANIMATION(Doduo); -SINGLE_ANIMATION(Dodrio); -SINGLE_ANIMATION(Seel); -SINGLE_ANIMATION(Dewgong); -DOUBLE_ANIMATION(Grimer); -DOUBLE_ANIMATION(Muk); -SINGLE_ANIMATION(Shellder); -SINGLE_ANIMATION(Cloyster); -SINGLE_ANIMATION(Gastly); -SINGLE_ANIMATION(Haunter); -SINGLE_ANIMATION(Gengar); -SINGLE_ANIMATION(Onix); -SINGLE_ANIMATION(Drowzee); -SINGLE_ANIMATION(Hypno); -SINGLE_ANIMATION(Krabby); -SINGLE_ANIMATION(Kingler); -SINGLE_ANIMATION(Voltorb); -SINGLE_ANIMATION(Electrode); -SINGLE_ANIMATION(Exeggcute); -SINGLE_ANIMATION(Exeggutor); -SINGLE_ANIMATION(Cubone); -SINGLE_ANIMATION(Marowak); -SINGLE_ANIMATION(Hitmonlee); -SINGLE_ANIMATION(Hitmonchan); -SINGLE_ANIMATION(Lickitung); -DOUBLE_ANIMATION(Koffing); -DOUBLE_ANIMATION(Weezing); -DOUBLE_ANIMATION(Rhyhorn); -DOUBLE_ANIMATION(Rhydon); -SINGLE_ANIMATION(Chansey); -SINGLE_ANIMATION(Tangela); -SINGLE_ANIMATION(Kangaskhan); -DOUBLE_ANIMATION(Horsea); -DOUBLE_ANIMATION(Seadra); -SINGLE_ANIMATION(Goldeen); -SINGLE_ANIMATION(Seaking); -DOUBLE_ANIMATION(Staryu); -DOUBLE_ANIMATION(Starmie); -SINGLE_ANIMATION(MrMime); -SINGLE_ANIMATION(Scyther); -SINGLE_ANIMATION(Jynx); -SINGLE_ANIMATION(Electabuzz); -SINGLE_ANIMATION(Magmar); -DOUBLE_ANIMATION(Pinsir); -SINGLE_ANIMATION(Tauros); -SINGLE_ANIMATION(Magikarp); -SINGLE_ANIMATION(Gyarados); -SINGLE_ANIMATION(Lapras); -SINGLE_ANIMATION(Ditto); -SINGLE_ANIMATION(Eevee); -SINGLE_ANIMATION(Vaporeon); -SINGLE_ANIMATION(Jolteon); -SINGLE_ANIMATION(Flareon); -SINGLE_ANIMATION(Porygon); -SINGLE_ANIMATION(Omanyte); -SINGLE_ANIMATION(Omastar); -SINGLE_ANIMATION(Kabuto); -SINGLE_ANIMATION(Kabutops); -SINGLE_ANIMATION(Aerodactyl); -SINGLE_ANIMATION(Snorlax); -SINGLE_ANIMATION(Articuno); -SINGLE_ANIMATION(Zapdos); -SINGLE_ANIMATION(Moltres); -SINGLE_ANIMATION(Dratini); -SINGLE_ANIMATION(Dragonair); -SINGLE_ANIMATION(Dragonite); -SINGLE_ANIMATION(Mewtwo); -SINGLE_ANIMATION(Mew); -SINGLE_ANIMATION(Chikorita); -SINGLE_ANIMATION(Bayleef); -SINGLE_ANIMATION(Meganium); -SINGLE_ANIMATION(Cyndaquil); -SINGLE_ANIMATION(Quilava); -SINGLE_ANIMATION(Typhlosion); -SINGLE_ANIMATION(Totodile); -SINGLE_ANIMATION(Croconaw); -SINGLE_ANIMATION(Feraligatr); -SINGLE_ANIMATION(Sentret); -SINGLE_ANIMATION(Furret); -SINGLE_ANIMATION(Hoothoot); -SINGLE_ANIMATION(Noctowl); -SINGLE_ANIMATION(Ledyba); -SINGLE_ANIMATION(Ledian); -SINGLE_ANIMATION(Spinarak); -SINGLE_ANIMATION(Ariados); -SINGLE_ANIMATION(Crobat); -DOUBLE_ANIMATION(Chinchou); -DOUBLE_ANIMATION(Lanturn); -DOUBLE_ANIMATION(Pichu); -SINGLE_ANIMATION(Cleffa); -DOUBLE_ANIMATION(Igglybuff); -SINGLE_ANIMATION(Togepi); -SINGLE_ANIMATION(Togetic); -DOUBLE_ANIMATION(Natu); -DOUBLE_ANIMATION(Xatu); -SINGLE_ANIMATION(Mareep); -SINGLE_ANIMATION(Flaaffy); -SINGLE_ANIMATION(Ampharos); -SINGLE_ANIMATION(Bellossom); -SINGLE_ANIMATION(Marill); -SINGLE_ANIMATION(Azumarill); -SINGLE_ANIMATION(Sudowoodo); -SINGLE_ANIMATION(Politoed); -SINGLE_ANIMATION(Hoppip); -SINGLE_ANIMATION(Skiploom); -SINGLE_ANIMATION(Jumpluff); -SINGLE_ANIMATION(Aipom); -SINGLE_ANIMATION(Sunkern); -SINGLE_ANIMATION(Sunflora); -SINGLE_ANIMATION(Yanma); -SINGLE_ANIMATION(Wooper); -SINGLE_ANIMATION(Quagsire); -SINGLE_ANIMATION(Espeon); -SINGLE_ANIMATION(Umbreon); -SINGLE_ANIMATION(Murkrow); -SINGLE_ANIMATION(Slowking); -SINGLE_ANIMATION(Misdreavus); -SINGLE_ANIMATION(Unown); -DOUBLE_ANIMATION(Wobbuffet); -DOUBLE_ANIMATION(Girafarig); -SINGLE_ANIMATION(Pineco); -SINGLE_ANIMATION(Forretress); -SINGLE_ANIMATION(Dunsparce); -SINGLE_ANIMATION(Gligar); -SINGLE_ANIMATION(Steelix); -SINGLE_ANIMATION(Snubbull); -SINGLE_ANIMATION(Granbull); -SINGLE_ANIMATION(Qwilfish); -SINGLE_ANIMATION(Scizor); -SINGLE_ANIMATION(Shuckle); -SINGLE_ANIMATION(Heracross); -SINGLE_ANIMATION(Sneasel); -SINGLE_ANIMATION(Teddiursa); -SINGLE_ANIMATION(Ursaring); -DOUBLE_ANIMATION(Slugma); -DOUBLE_ANIMATION(Magcargo); -SINGLE_ANIMATION(Swinub); -SINGLE_ANIMATION(Piloswine); -DOUBLE_ANIMATION(Corsola); -SINGLE_ANIMATION(Remoraid); -SINGLE_ANIMATION(Octillery); -SINGLE_ANIMATION(Delibird); -SINGLE_ANIMATION(Mantine); -SINGLE_ANIMATION(Skarmory); -SINGLE_ANIMATION(Houndour); -SINGLE_ANIMATION(Houndoom); -DOUBLE_ANIMATION(Kingdra); -DOUBLE_ANIMATION(Phanpy); -SINGLE_ANIMATION(Donphan); -SINGLE_ANIMATION(Porygon2); -SINGLE_ANIMATION(Stantler); -SINGLE_ANIMATION(Smeargle); -SINGLE_ANIMATION(Tyrogue); -SINGLE_ANIMATION(Hitmontop); -SINGLE_ANIMATION(Smoochum); -SINGLE_ANIMATION(Elekid); -SINGLE_ANIMATION(Magby); -SINGLE_ANIMATION(Miltank); -SINGLE_ANIMATION(Blissey); -SINGLE_ANIMATION(Raikou); -SINGLE_ANIMATION(Entei); -SINGLE_ANIMATION(Suicune); -SINGLE_ANIMATION(Larvitar); -SINGLE_ANIMATION(Pupitar); -SINGLE_ANIMATION(Tyranitar); -SINGLE_ANIMATION(Lugia); -SINGLE_ANIMATION(HoOh); -SINGLE_ANIMATION(Celebi); -SINGLE_ANIMATION(OldUnownB); -SINGLE_ANIMATION(Treecko); -SINGLE_ANIMATION(Grovyle); -SINGLE_ANIMATION(Sceptile); -SINGLE_ANIMATION(Torchic); -SINGLE_ANIMATION(Combusken); -static const union AnimCmd *const sAnims_Blaziken[] ={ - sAnim_GeneralFrame0, - sAnim_Blaziken_1, - sAnim_Blaziken_2, - sAnim_Blaziken_3, - sAnim_Blaziken_4, -}; -SINGLE_ANIMATION(Mudkip); -SINGLE_ANIMATION(Marshtomp); -SINGLE_ANIMATION(Swampert); -SINGLE_ANIMATION(Poochyena); -SINGLE_ANIMATION(Mightyena); -SINGLE_ANIMATION(Zigzagoon); -SINGLE_ANIMATION(Linoone); -SINGLE_ANIMATION(Wurmple); -DOUBLE_ANIMATION(Silcoon); -DOUBLE_ANIMATION(Beautifly); -DOUBLE_ANIMATION(Cascoon); -DOUBLE_ANIMATION(Dustox); -SINGLE_ANIMATION(Lotad); -SINGLE_ANIMATION(Lombre); -SINGLE_ANIMATION(Ludicolo); -SINGLE_ANIMATION(Seedot); -SINGLE_ANIMATION(Nuzleaf); -SINGLE_ANIMATION(Shiftry); -SINGLE_ANIMATION(Nincada); -SINGLE_ANIMATION(Ninjask); -SINGLE_ANIMATION(Shedinja); -SINGLE_ANIMATION(Taillow); -SINGLE_ANIMATION(Swellow); -SINGLE_ANIMATION(Shroomish); -SINGLE_ANIMATION(Breloom); -SINGLE_ANIMATION(Spinda); -SINGLE_ANIMATION(Wingull); -SINGLE_ANIMATION(Pelipper); -DOUBLE_ANIMATION(Surskit); -DOUBLE_ANIMATION(Masquerain); -SINGLE_ANIMATION(Wailmer); -SINGLE_ANIMATION(Wailord); -SINGLE_ANIMATION(Skitty); -SINGLE_ANIMATION(Delcatty); -SINGLE_ANIMATION(Kecleon); -SINGLE_ANIMATION(Baltoy); -SINGLE_ANIMATION(Claydol); -SINGLE_ANIMATION(Nosepass); -SINGLE_ANIMATION(Torkoal); -SINGLE_ANIMATION(Sableye); -SINGLE_ANIMATION(Barboach); -SINGLE_ANIMATION(Whiscash); -SINGLE_ANIMATION(Luvdisc); -SINGLE_ANIMATION(Corphish); -SINGLE_ANIMATION(Crawdaunt); -SINGLE_ANIMATION(Feebas); -SINGLE_ANIMATION(Milotic); -SINGLE_ANIMATION(Carvanha); -SINGLE_ANIMATION(Sharpedo); -SINGLE_ANIMATION(Trapinch); -SINGLE_ANIMATION(Vibrava); -SINGLE_ANIMATION(Flygon); -SINGLE_ANIMATION(Makuhita); -SINGLE_ANIMATION(Hariyama); -SINGLE_ANIMATION(Electrike); -SINGLE_ANIMATION(Manectric); -SINGLE_ANIMATION(Numel); -SINGLE_ANIMATION(Camerupt); -SINGLE_ANIMATION(Spheal); -SINGLE_ANIMATION(Sealeo); -SINGLE_ANIMATION(Walrein); -SINGLE_ANIMATION(Cacnea); -SINGLE_ANIMATION(Cacturne); -SINGLE_ANIMATION(Snorunt); -SINGLE_ANIMATION(Glalie); -DOUBLE_ANIMATION(Lunatone); -DOUBLE_ANIMATION(Solrock); -SINGLE_ANIMATION(Azurill); -SINGLE_ANIMATION(Spoink); -SINGLE_ANIMATION(Grumpig); -SINGLE_ANIMATION(Plusle); -SINGLE_ANIMATION(Minun); -SINGLE_ANIMATION(Mawile); -SINGLE_ANIMATION(Meditite); -SINGLE_ANIMATION(Medicham); -DOUBLE_ANIMATION(Swablu); -DOUBLE_ANIMATION(Altaria); -SINGLE_ANIMATION(Wynaut); -SINGLE_ANIMATION(Duskull); -SINGLE_ANIMATION(Dusclops); -SINGLE_ANIMATION(Roselia); -SINGLE_ANIMATION(Slakoth); -SINGLE_ANIMATION(Vigoroth); -SINGLE_ANIMATION(Slaking); -SINGLE_ANIMATION(Gulpin); -SINGLE_ANIMATION(Swalot); -SINGLE_ANIMATION(Tropius); -SINGLE_ANIMATION(Whismur); -SINGLE_ANIMATION(Loudred); -SINGLE_ANIMATION(Exploud); -SINGLE_ANIMATION(Clamperl); -SINGLE_ANIMATION(Huntail); -SINGLE_ANIMATION(Gorebyss); -SINGLE_ANIMATION(Absol); -SINGLE_ANIMATION(Shuppet); -SINGLE_ANIMATION(Banette); -SINGLE_ANIMATION(Seviper); -SINGLE_ANIMATION(Zangoose); -SINGLE_ANIMATION(Relicanth); -SINGLE_ANIMATION(Aron); -SINGLE_ANIMATION(Lairon); -SINGLE_ANIMATION(Aggron); -SINGLE_ANIMATION(Castform); -SINGLE_ANIMATION(CastformSunny); -SINGLE_ANIMATION(CastformRainy); -SINGLE_ANIMATION(CastformSnowy); -SINGLE_ANIMATION(Volbeat); -SINGLE_ANIMATION(Illumise); -SINGLE_ANIMATION(Lileep); -SINGLE_ANIMATION(Cradily); -SINGLE_ANIMATION(Anorith); -SINGLE_ANIMATION(Armaldo); -SINGLE_ANIMATION(Ralts); -SINGLE_ANIMATION(Kirlia); -SINGLE_ANIMATION(Gardevoir); -SINGLE_ANIMATION(Bagon); -SINGLE_ANIMATION(Shelgon); -SINGLE_ANIMATION(Salamence); -SINGLE_ANIMATION(Beldum); -SINGLE_ANIMATION(Metang); -SINGLE_ANIMATION(Metagross); -DOUBLE_ANIMATION(Regirock); -SINGLE_ANIMATION(Regice); -DOUBLE_ANIMATION(Registeel); -DOUBLE_ANIMATION(Kyogre); -DOUBLE_ANIMATION(Groudon); -DOUBLE_ANIMATION(Rayquaza); -DOUBLE_ANIMATION(Latias); -DOUBLE_ANIMATION(Latios); -DOUBLE_ANIMATION(Jirachi); -DOUBLE_ANIMATION(Deoxys); -SINGLE_ANIMATION(Chimecho); -SINGLE_ANIMATION(Egg); -SINGLE_ANIMATION(UnownB); -SINGLE_ANIMATION(UnownC); -SINGLE_ANIMATION(UnownD); -SINGLE_ANIMATION(UnownE); -SINGLE_ANIMATION(UnownF); -SINGLE_ANIMATION(UnownG); -SINGLE_ANIMATION(UnownH); -SINGLE_ANIMATION(UnownI); -SINGLE_ANIMATION(UnownJ); -SINGLE_ANIMATION(UnownK); -SINGLE_ANIMATION(UnownL); -SINGLE_ANIMATION(UnownM); -SINGLE_ANIMATION(UnownN); -SINGLE_ANIMATION(UnownO); -SINGLE_ANIMATION(UnownP); -SINGLE_ANIMATION(UnownQ); -SINGLE_ANIMATION(UnownR); -SINGLE_ANIMATION(UnownS); -SINGLE_ANIMATION(UnownT); -SINGLE_ANIMATION(UnownU); -SINGLE_ANIMATION(UnownV); -SINGLE_ANIMATION(UnownW); -SINGLE_ANIMATION(UnownX); -SINGLE_ANIMATION(UnownY); -SINGLE_ANIMATION(UnownZ); -SINGLE_ANIMATION(UnownEMark); -SINGLE_ANIMATION(UnownQMark); -#if P_GEN_4_POKEMON == TRUE -SINGLE_ANIMATION(Turtwig); -SINGLE_ANIMATION(Grotle); -SINGLE_ANIMATION(Torterra); -SINGLE_ANIMATION(Chimchar); -SINGLE_ANIMATION(Monferno); -SINGLE_ANIMATION(Infernape); -SINGLE_ANIMATION(Piplup); -SINGLE_ANIMATION(Prinplup); -SINGLE_ANIMATION(Empoleon); -SINGLE_ANIMATION(Starly); -SINGLE_ANIMATION(Staravia); -SINGLE_ANIMATION(Staraptor); -SINGLE_ANIMATION(Bidoof); -DOUBLE_ANIMATION(Bibarel); -SINGLE_ANIMATION(Kricketot); -SINGLE_ANIMATION(Kricketune); -SINGLE_ANIMATION(Shinx); -SINGLE_ANIMATION(Luxio); -DOUBLE_ANIMATION(Luxray); -SINGLE_ANIMATION(Budew); -SINGLE_ANIMATION(Roserade); -SINGLE_ANIMATION(Cranidos); -SINGLE_ANIMATION(Rampardos); -SINGLE_ANIMATION(Shieldon); -SINGLE_ANIMATION(Bastiodon); -SINGLE_ANIMATION(Burmy); -SINGLE_ANIMATION(Wormadam); -SINGLE_ANIMATION(Mothim); -SINGLE_ANIMATION(Combee); -SINGLE_ANIMATION(Vespiquen); -SINGLE_ANIMATION(Pachirisu); -SINGLE_ANIMATION(Buizel); -SINGLE_ANIMATION(Floatzel); -SINGLE_ANIMATION(Cherubi); -DOUBLE_ANIMATION(CherrimOvercast); -SINGLE_ANIMATION(CherrimSunshine); -SINGLE_ANIMATION(Shellos); -SINGLE_ANIMATION(Gastrodon); -SINGLE_ANIMATION(Ambipom); -SINGLE_ANIMATION(Drifloon); -SINGLE_ANIMATION(Drifblim); -SINGLE_ANIMATION(Buneary); -SINGLE_ANIMATION(Lopunny); -SINGLE_ANIMATION(Mismagius); -SINGLE_ANIMATION(Honchkrow); -SINGLE_ANIMATION(Glameow); -SINGLE_ANIMATION(Purugly); -SINGLE_ANIMATION(Chingling); -SINGLE_ANIMATION(Stunky); -SINGLE_ANIMATION(Skuntank); -SINGLE_ANIMATION(Bronzor); -DOUBLE_ANIMATION(Bronzong); -SINGLE_ANIMATION(Bonsly); -SINGLE_ANIMATION(MimeJr); -SINGLE_ANIMATION(Happiny); -SINGLE_ANIMATION(Chatot); -SINGLE_ANIMATION(Spiritomb); -SINGLE_ANIMATION(Gible); -SINGLE_ANIMATION(Gabite); -SINGLE_ANIMATION(Garchomp); -SINGLE_ANIMATION(Munchlax); -SINGLE_ANIMATION(Riolu); -SINGLE_ANIMATION(Lucario); -SINGLE_ANIMATION(Hippopotas); -SINGLE_ANIMATION(Hippowdon); -SINGLE_ANIMATION(Skorupi); -SINGLE_ANIMATION(Drapion); -SINGLE_ANIMATION(Croagunk); -SINGLE_ANIMATION(Toxicroak); -SINGLE_ANIMATION(Carnivine); -SINGLE_ANIMATION(Finneon); -SINGLE_ANIMATION(Lumineon); -SINGLE_ANIMATION(Mantyke); -SINGLE_ANIMATION(Snover); -SINGLE_ANIMATION(Abomasnow); -SINGLE_ANIMATION(Weavile); -SINGLE_ANIMATION(Magnezone); -SINGLE_ANIMATION(Lickilicky); -SINGLE_ANIMATION(Rhyperior); -SINGLE_ANIMATION(Tangrowth); -SINGLE_ANIMATION(Electivire); -SINGLE_ANIMATION(Magmortar); -SINGLE_ANIMATION(Togekiss); -SINGLE_ANIMATION(Yanmega); -SINGLE_ANIMATION(Leafeon); -SINGLE_ANIMATION(Glaceon); -SINGLE_ANIMATION(Gliscor); -SINGLE_ANIMATION(Mamoswine); -SINGLE_ANIMATION(PORYGON_Z); -SINGLE_ANIMATION(Gallade); -DOUBLE_ANIMATION(Probopass); -SINGLE_ANIMATION(Dusknoir); -SINGLE_ANIMATION(Froslass); -DOUBLE_ANIMATION(Rotom); -SINGLE_ANIMATION(RotomHeat); -SINGLE_ANIMATION(RotomFrost); -SINGLE_ANIMATION(RotomFan); -SINGLE_ANIMATION(RotomMow); -SINGLE_ANIMATION(RotomWash); -SINGLE_ANIMATION(Uxie); -SINGLE_ANIMATION(Mesprit); -SINGLE_ANIMATION(Azelf); -SINGLE_ANIMATION(Dialga); -SINGLE_ANIMATION(Palkia); -SINGLE_ANIMATION(Heatran); -SINGLE_ANIMATION(Regigigas); -SINGLE_ANIMATION(Giratina); -SINGLE_ANIMATION(Cresselia); -SINGLE_ANIMATION(Phione); -SINGLE_ANIMATION(Manaphy); -SINGLE_ANIMATION(Darkrai); -SINGLE_ANIMATION(Shaymin); -SINGLE_ANIMATION(Arceus); -#endif -#if P_GEN_5_POKEMON == TRUE -SINGLE_ANIMATION(Victini); -SINGLE_ANIMATION(Snivy); -SINGLE_ANIMATION(Servine); -DOUBLE_ANIMATION(Serperior); -SINGLE_ANIMATION(Tepig); -SINGLE_ANIMATION(Pignite); -SINGLE_ANIMATION(Emboar); -SINGLE_ANIMATION(Oshawott); -SINGLE_ANIMATION(Dewott); -SINGLE_ANIMATION(Samurott); -SINGLE_ANIMATION(Patrat); -SINGLE_ANIMATION(Watchog); -SINGLE_ANIMATION(Lillipup); -SINGLE_ANIMATION(Herdier); -SINGLE_ANIMATION(Stoutland); -SINGLE_ANIMATION(Purrloin); -SINGLE_ANIMATION(Liepard); -SINGLE_ANIMATION(Pansage); -SINGLE_ANIMATION(Simisage); -SINGLE_ANIMATION(Pansear); -DOUBLE_ANIMATION(Simisear); -SINGLE_ANIMATION(Panpour); -SINGLE_ANIMATION(Simipour); -SINGLE_ANIMATION(Munna); -DOUBLE_ANIMATION(Musharna); -SINGLE_ANIMATION(Pidove); -SINGLE_ANIMATION(Tranquill); -SINGLE_ANIMATION(Unfezant); -SINGLE_ANIMATION(Blitzle); -SINGLE_ANIMATION(Zebstrika); -SINGLE_ANIMATION(Roggenrola); -SINGLE_ANIMATION(Boldore); -SINGLE_ANIMATION(Gigalith); -SINGLE_ANIMATION(Woobat); -SINGLE_ANIMATION(Swoobat); -DOUBLE_ANIMATION(Drilbur); -SINGLE_ANIMATION(Excadrill); -SINGLE_ANIMATION(Audino); -SINGLE_ANIMATION(Timburr); -SINGLE_ANIMATION(Gurdurr); -SINGLE_ANIMATION(Conkeldurr); -SINGLE_ANIMATION(Tympole); -SINGLE_ANIMATION(Palpitoad); -SINGLE_ANIMATION(Seismitoad); -SINGLE_ANIMATION(Throh); -SINGLE_ANIMATION(Sawk); -DOUBLE_ANIMATION(Sewaddle); -SINGLE_ANIMATION(Swadloon); -SINGLE_ANIMATION(Leavanny); -SINGLE_ANIMATION(Venipede); -SINGLE_ANIMATION(Whirlipede); -SINGLE_ANIMATION(Scolipede); -SINGLE_ANIMATION(Cottonee); -SINGLE_ANIMATION(Whimsicott); -SINGLE_ANIMATION(Petilil); -SINGLE_ANIMATION(Lilligant); -SINGLE_ANIMATION(Basculin); -SINGLE_ANIMATION(Sandile); -SINGLE_ANIMATION(Krokorok); -DOUBLE_ANIMATION(Krookodile); -SINGLE_ANIMATION(Darumaka); -SINGLE_ANIMATION(Darmanitan); -SINGLE_ANIMATION(Maractus); -SINGLE_ANIMATION(Dwebble); -SINGLE_ANIMATION(Crustle); -SINGLE_ANIMATION(Scraggy); -SINGLE_ANIMATION(Scrafty); -SINGLE_ANIMATION(Sigilyph); -SINGLE_ANIMATION(Yamask); -SINGLE_ANIMATION(Cofagrigus); -SINGLE_ANIMATION(Tirtouga); -SINGLE_ANIMATION(Carracosta); -SINGLE_ANIMATION(Archen); -SINGLE_ANIMATION(Archeops); -SINGLE_ANIMATION(Trubbish); -SINGLE_ANIMATION(Garbodor); -SINGLE_ANIMATION(Zorua); -SINGLE_ANIMATION(Zoroark); -SINGLE_ANIMATION(Minccino); -SINGLE_ANIMATION(Cinccino); -SINGLE_ANIMATION(Gothita); -DOUBLE_ANIMATION(Gothorita); -SINGLE_ANIMATION(Gothitelle); -SINGLE_ANIMATION(Solosis); -SINGLE_ANIMATION(Duosion); -SINGLE_ANIMATION(Reuniclus); -SINGLE_ANIMATION(Ducklett); -SINGLE_ANIMATION(Swanna); -SINGLE_ANIMATION(Vanillite); -SINGLE_ANIMATION(Vanillish); -SINGLE_ANIMATION(Vanilluxe); -SINGLE_ANIMATION(Deerling); -SINGLE_ANIMATION(Sawsbuck); -SINGLE_ANIMATION(Emolga); -SINGLE_ANIMATION(Karrablast); -SINGLE_ANIMATION(Escavalier); -DOUBLE_ANIMATION(Foongus); -SINGLE_ANIMATION(Amoonguss); -SINGLE_ANIMATION(Frillish); -SINGLE_ANIMATION(Jellicent); -SINGLE_ANIMATION(Alomomola); -SINGLE_ANIMATION(Joltik); -SINGLE_ANIMATION(Galvantula); -SINGLE_ANIMATION(Ferroseed); -DOUBLE_ANIMATION(Ferrothorn); -SINGLE_ANIMATION(Klink); -SINGLE_ANIMATION(Klang); -SINGLE_ANIMATION(Klinklang); -SINGLE_ANIMATION(Tynamo); -SINGLE_ANIMATION(Eelektrik); -SINGLE_ANIMATION(Eelektross); -SINGLE_ANIMATION(Elgyem); -SINGLE_ANIMATION(Beheeyem); -SINGLE_ANIMATION(Litwick); -SINGLE_ANIMATION(Lampent); -SINGLE_ANIMATION(Chandelure); -SINGLE_ANIMATION(Axew); -SINGLE_ANIMATION(Fraxure); -SINGLE_ANIMATION(Haxorus); -SINGLE_ANIMATION(Cubchoo); -SINGLE_ANIMATION(Beartic); -DOUBLE_ANIMATION(Cryogonal); -SINGLE_ANIMATION(Shelmet); -SINGLE_ANIMATION(Accelgor); -SINGLE_ANIMATION(Stunfisk); -SINGLE_ANIMATION(Mienfoo); -SINGLE_ANIMATION(Mienshao); -SINGLE_ANIMATION(Druddigon); -SINGLE_ANIMATION(Golett); -SINGLE_ANIMATION(Golurk); -SINGLE_ANIMATION(Pawniard); -SINGLE_ANIMATION(Bisharp); -SINGLE_ANIMATION(Bouffalant); -SINGLE_ANIMATION(Rufflet); -SINGLE_ANIMATION(Braviary); -SINGLE_ANIMATION(Vullaby); -SINGLE_ANIMATION(Mandibuzz); -SINGLE_ANIMATION(Heatmor); -SINGLE_ANIMATION(Durant); -SINGLE_ANIMATION(Deino); -SINGLE_ANIMATION(Zweilous); -SINGLE_ANIMATION(Hydreigon); -SINGLE_ANIMATION(Larvesta); -SINGLE_ANIMATION(Volcarona); -SINGLE_ANIMATION(Cobalion); -DOUBLE_ANIMATION(Terrakion); -SINGLE_ANIMATION(Virizion); -SINGLE_ANIMATION(Tornadus); -SINGLE_ANIMATION(Thundurus); -SINGLE_ANIMATION(Reshiram); -SINGLE_ANIMATION(Zekrom); -SINGLE_ANIMATION(Landorus); -SINGLE_ANIMATION(Kyurem); -SINGLE_ANIMATION(Keldeo); -DOUBLE_ANIMATION(Meloetta); -SINGLE_ANIMATION(Genesect); -#endif -#if P_GEN_6_POKEMON == TRUE -SINGLE_ANIMATION(Chespin); -DOUBLE_ANIMATION(Quilladin); -SINGLE_ANIMATION(Chesnaught); -SINGLE_ANIMATION(Fennekin); -SINGLE_ANIMATION(Braixen); -SINGLE_ANIMATION(Delphox); -SINGLE_ANIMATION(Froakie); -SINGLE_ANIMATION(Frogadier); -SINGLE_ANIMATION(Greninja); -SINGLE_ANIMATION(GreninjaAsh); -SINGLE_ANIMATION(Bunnelby); -SINGLE_ANIMATION(Diggersby); -SINGLE_ANIMATION(Fletchling); -SINGLE_ANIMATION(Fletchinder); -DOUBLE_ANIMATION(Talonflame); -SINGLE_ANIMATION(Scatterbug); -SINGLE_ANIMATION(Spewpa); -SINGLE_ANIMATION(Vivillon); -SINGLE_ANIMATION(Litleo); -SINGLE_ANIMATION(Pyroar); -DOUBLE_ANIMATION(Flabebe); -SINGLE_ANIMATION(Floette); -DOUBLE_ANIMATION(Florges); -SINGLE_ANIMATION(Skiddo); -SINGLE_ANIMATION(Gogoat); -SINGLE_ANIMATION(Pancham); -SINGLE_ANIMATION(Pangoro); -SINGLE_ANIMATION(Furfrou); -SINGLE_ANIMATION(Espurr); -SINGLE_ANIMATION(Meowstic); -SINGLE_ANIMATION(Honedge); -DOUBLE_ANIMATION(Doublade); -SINGLE_ANIMATION(Aegislash); -SINGLE_ANIMATION(Spritzee); -SINGLE_ANIMATION(Aromatisse); -SINGLE_ANIMATION(Swirlix); -SINGLE_ANIMATION(Slurpuff); -SINGLE_ANIMATION(Inkay); -SINGLE_ANIMATION(Malamar); -SINGLE_ANIMATION(Binacle); -SINGLE_ANIMATION(Barbaracle); -SINGLE_ANIMATION(Skrelp); -SINGLE_ANIMATION(Dragalge); -SINGLE_ANIMATION(Clauncher); -SINGLE_ANIMATION(Clawitzer); -SINGLE_ANIMATION(Helioptile); -SINGLE_ANIMATION(Heliolisk); -SINGLE_ANIMATION(Tyrunt); -SINGLE_ANIMATION(Tyrantrum); -SINGLE_ANIMATION(Amaura); -SINGLE_ANIMATION(Aurorus); -SINGLE_ANIMATION(Sylveon); -SINGLE_ANIMATION(Hawlucha); -SINGLE_ANIMATION(Dedenne); -SINGLE_ANIMATION(Carbink); -SINGLE_ANIMATION(Goomy); -SINGLE_ANIMATION(Sliggoo); -SINGLE_ANIMATION(Goodra); -SINGLE_ANIMATION(Klefki); -SINGLE_ANIMATION(Phantump); -SINGLE_ANIMATION(Trevenant); -SINGLE_ANIMATION(Pumpkaboo); -SINGLE_ANIMATION(Gourgeist); -DOUBLE_ANIMATION(Bergmite); -SINGLE_ANIMATION(Avalugg); -SINGLE_ANIMATION(Noibat); -SINGLE_ANIMATION(Noivern); -SINGLE_ANIMATION(Xerneas); -SINGLE_ANIMATION(Yveltal); -SINGLE_ANIMATION(Zygarde); -SINGLE_ANIMATION(Diancie); -SINGLE_ANIMATION(Hoopa); -SINGLE_ANIMATION(Volcanion); -#endif -#if P_GEN_7_POKEMON == TRUE -SINGLE_ANIMATION(Rowlet); -SINGLE_ANIMATION(Dartrix); -SINGLE_ANIMATION(Decidueye); -SINGLE_ANIMATION(Litten); -SINGLE_ANIMATION(Torracat); -SINGLE_ANIMATION(Incineroar); -SINGLE_ANIMATION(Popplio); -SINGLE_ANIMATION(Brionne); -SINGLE_ANIMATION(Primarina); -SINGLE_ANIMATION(Pikipek); -SINGLE_ANIMATION(Trumbeak); -SINGLE_ANIMATION(Toucannon); -SINGLE_ANIMATION(Yungoos); -SINGLE_ANIMATION(Gumshoos); -SINGLE_ANIMATION(Grubbin); -SINGLE_ANIMATION(Charjabug); -SINGLE_ANIMATION(Vikavolt); -SINGLE_ANIMATION(Crabrawler); -SINGLE_ANIMATION(Crabominable); -SINGLE_ANIMATION(Oricorio); -SINGLE_ANIMATION(Cutiefly); -SINGLE_ANIMATION(Ribombee); -SINGLE_ANIMATION(Rockruff); -SINGLE_ANIMATION(Lycanroc); -SINGLE_ANIMATION(Wishiwashi); -SINGLE_ANIMATION(Mareanie); -SINGLE_ANIMATION(Toxapex); -SINGLE_ANIMATION(Mudbray); -SINGLE_ANIMATION(Mudsdale); -SINGLE_ANIMATION(Dewpider); -SINGLE_ANIMATION(Araquanid); -SINGLE_ANIMATION(Fomantis); -SINGLE_ANIMATION(Lurantis); -SINGLE_ANIMATION(Morelull); -SINGLE_ANIMATION(Shiinotic); -SINGLE_ANIMATION(Salandit); -SINGLE_ANIMATION(Salazzle); -SINGLE_ANIMATION(Stufful); -SINGLE_ANIMATION(Bewear); -SINGLE_ANIMATION(Bounsweet); -SINGLE_ANIMATION(Steenee); -SINGLE_ANIMATION(Tsareena); -SINGLE_ANIMATION(Comfey); -SINGLE_ANIMATION(Oranguru); -SINGLE_ANIMATION(Passimian); -SINGLE_ANIMATION(Wimpod); -SINGLE_ANIMATION(Golisopod); -SINGLE_ANIMATION(Sandygast); -SINGLE_ANIMATION(Palossand); -SINGLE_ANIMATION(Pyukumuku); -SINGLE_ANIMATION(TypeNull); -SINGLE_ANIMATION(Silvally); -SINGLE_ANIMATION(Minior); -SINGLE_ANIMATION(Komala); -SINGLE_ANIMATION(Turtonator); -SINGLE_ANIMATION(Togedemaru); -SINGLE_ANIMATION(Mimikyu); -SINGLE_ANIMATION(Bruxish); -SINGLE_ANIMATION(Drampa); -SINGLE_ANIMATION(Dhelmise); -SINGLE_ANIMATION(JANGMO_O); -SINGLE_ANIMATION(HAKAMO_O); -SINGLE_ANIMATION(KOMMO_O); -SINGLE_ANIMATION(TapuKoko); -SINGLE_ANIMATION(TapuLele); -SINGLE_ANIMATION(TapuBulu); -SINGLE_ANIMATION(TapuFini); -SINGLE_ANIMATION(Cosmog); -SINGLE_ANIMATION(Cosmoem); -SINGLE_ANIMATION(Solgaleo); -SINGLE_ANIMATION(Lunala); -SINGLE_ANIMATION(Nihilego); -SINGLE_ANIMATION(Buzzwole); -SINGLE_ANIMATION(Pheromosa); -SINGLE_ANIMATION(Xurkitree); -SINGLE_ANIMATION(Celesteela); -SINGLE_ANIMATION(Kartana); -SINGLE_ANIMATION(Guzzlord); -SINGLE_ANIMATION(Necrozma); -SINGLE_ANIMATION(Magearna); -SINGLE_ANIMATION(Marshadow); -SINGLE_ANIMATION(Poipole); -SINGLE_ANIMATION(Naganadel); -SINGLE_ANIMATION(Stakataka); -SINGLE_ANIMATION(Blacephalon); -SINGLE_ANIMATION(Zeraora); -SINGLE_ANIMATION(Meltan); -SINGLE_ANIMATION(Melmetal); -#endif -#if P_GEN_8_POKEMON == TRUE -SINGLE_ANIMATION(Grookey); -SINGLE_ANIMATION(Thwackey); -SINGLE_ANIMATION(Rillaboom); -SINGLE_ANIMATION(Scorbunny); -SINGLE_ANIMATION(Raboot); -SINGLE_ANIMATION(Cinderace); -SINGLE_ANIMATION(Sobble); -SINGLE_ANIMATION(Drizzile); -SINGLE_ANIMATION(Inteleon); -SINGLE_ANIMATION(Skwovet); -SINGLE_ANIMATION(Greedent); -SINGLE_ANIMATION(Rookidee); -SINGLE_ANIMATION(Corvisquire); -SINGLE_ANIMATION(Corviknight); -SINGLE_ANIMATION(Blipbug); -SINGLE_ANIMATION(Dottler); -SINGLE_ANIMATION(Orbeetle); -SINGLE_ANIMATION(Nickit); -SINGLE_ANIMATION(Thievul); -SINGLE_ANIMATION(Gossifleur); -SINGLE_ANIMATION(Eldegoss); -SINGLE_ANIMATION(Wooloo); -SINGLE_ANIMATION(Dubwool); -SINGLE_ANIMATION(Chewtle); -SINGLE_ANIMATION(Drednaw); -SINGLE_ANIMATION(Yamper); -SINGLE_ANIMATION(Boltund); -SINGLE_ANIMATION(Rolycoly); -SINGLE_ANIMATION(Carkol); -SINGLE_ANIMATION(Coalossal); -SINGLE_ANIMATION(Applin); -SINGLE_ANIMATION(Flapple); -SINGLE_ANIMATION(Appletun); -SINGLE_ANIMATION(Silicobra); -SINGLE_ANIMATION(Sandaconda); -SINGLE_ANIMATION(Cramorant); -SINGLE_ANIMATION(Arrokuda); -SINGLE_ANIMATION(Barraskewda); -SINGLE_ANIMATION(Toxel); -SINGLE_ANIMATION(Toxtricity); -SINGLE_ANIMATION(Sizzlipede); -SINGLE_ANIMATION(Centiskorch); -SINGLE_ANIMATION(Clobbopus); -SINGLE_ANIMATION(Grapploct); -SINGLE_ANIMATION(Sinistea); -SINGLE_ANIMATION(Polteageist); -SINGLE_ANIMATION(Hatenna); -SINGLE_ANIMATION(Hattrem); -SINGLE_ANIMATION(Hatterene); -SINGLE_ANIMATION(Impidimp); -SINGLE_ANIMATION(Morgrem); -SINGLE_ANIMATION(Grimmsnarl); -SINGLE_ANIMATION(Obstagoon); -SINGLE_ANIMATION(Perrserker); -SINGLE_ANIMATION(Cursola); -SINGLE_ANIMATION(Sirfetchd); -SINGLE_ANIMATION(MrRime); -SINGLE_ANIMATION(Runerigus); -SINGLE_ANIMATION(Milcery); -SINGLE_ANIMATION(Alcremie); -SINGLE_ANIMATION(Falinks); -SINGLE_ANIMATION(Pincurchin); -SINGLE_ANIMATION(Snom); -SINGLE_ANIMATION(Frosmoth); -SINGLE_ANIMATION(Stonjourner); -SINGLE_ANIMATION(Eiscue); -SINGLE_ANIMATION(Indeedee); -SINGLE_ANIMATION(Morpeko); -SINGLE_ANIMATION(Cufant); -SINGLE_ANIMATION(Copperajah); -SINGLE_ANIMATION(Dracozolt); -SINGLE_ANIMATION(Arctozolt); -SINGLE_ANIMATION(Dracovish); -SINGLE_ANIMATION(Arctovish); -SINGLE_ANIMATION(Duraludon); -SINGLE_ANIMATION(Dreepy); -SINGLE_ANIMATION(Drakloak); -SINGLE_ANIMATION(Dragapult); -SINGLE_ANIMATION(Zacian); -SINGLE_ANIMATION(Zamazenta); -SINGLE_ANIMATION(Eternatus); -SINGLE_ANIMATION(Kubfu); -SINGLE_ANIMATION(Urshifu); -SINGLE_ANIMATION(Zarude); -SINGLE_ANIMATION(Regieleki); -SINGLE_ANIMATION(Regidrago); -SINGLE_ANIMATION(Glastrier); -SINGLE_ANIMATION(Spectrier); -SINGLE_ANIMATION(Calyrex); -SINGLE_ANIMATION(Wyrdeer); -SINGLE_ANIMATION(Kleavor); -SINGLE_ANIMATION(Ursaluna); -SINGLE_ANIMATION(Basculegion); -SINGLE_ANIMATION(Sneasler); -SINGLE_ANIMATION(Overqwil); -SINGLE_ANIMATION(Enamorus); -#endif -SINGLE_ANIMATION(VenusaurMega); -SINGLE_ANIMATION(CHARIZARD_MEGA_X); -SINGLE_ANIMATION(CHARIZARD_MEGA_Y); -SINGLE_ANIMATION(BlastoiseMega); -SINGLE_ANIMATION(BeedrillMega); -SINGLE_ANIMATION(PidgeotMega); -SINGLE_ANIMATION(AlakazamMega); -SINGLE_ANIMATION(SlowbroMega); -SINGLE_ANIMATION(GengarMega); -SINGLE_ANIMATION(KangaskhanMega); -SINGLE_ANIMATION(PinsirMega); -SINGLE_ANIMATION(GyaradosMega); -SINGLE_ANIMATION(AerodactylMega); -SINGLE_ANIMATION(MEWTWO_MEGA_X); -SINGLE_ANIMATION(MEWTWO_MEGA_Y); -SINGLE_ANIMATION(AmpharosMega); -SINGLE_ANIMATION(SteelixMega); -SINGLE_ANIMATION(ScizorMega); -SINGLE_ANIMATION(HeracrossMega); -SINGLE_ANIMATION(HoundoomMega); -SINGLE_ANIMATION(TyranitarMega); -SINGLE_ANIMATION(SceptileMega); -SINGLE_ANIMATION(BlazikenMega); -SINGLE_ANIMATION(SwampertMega); -SINGLE_ANIMATION(GardevoirMega); -SINGLE_ANIMATION(SableyeMega); -SINGLE_ANIMATION(MawileMega); -SINGLE_ANIMATION(AggronMega); -SINGLE_ANIMATION(MedichamMega); -SINGLE_ANIMATION(ManectricMega); -SINGLE_ANIMATION(SharpedoMega); -SINGLE_ANIMATION(CameruptMega); -SINGLE_ANIMATION(AltariaMega); -SINGLE_ANIMATION(BanetteMega); -SINGLE_ANIMATION(AbsolMega); -SINGLE_ANIMATION(GlalieMega); -SINGLE_ANIMATION(SalamenceMega); -SINGLE_ANIMATION(MetagrossMega); -SINGLE_ANIMATION(LatiasMega); -SINGLE_ANIMATION(LatiosMega); -SINGLE_ANIMATION(KyogrePrimal); -SINGLE_ANIMATION(GroudonPrimal); -SINGLE_ANIMATION(RayquazaMega); -#if P_GEN_4_POKEMON == TRUE -SINGLE_ANIMATION(LopunnyMega); -SINGLE_ANIMATION(GarchompMega); -SINGLE_ANIMATION(LucarioMega); -SINGLE_ANIMATION(AbomasnowMega); -SINGLE_ANIMATION(GalladeMega); -#endif -#if P_GEN_5_POKEMON == TRUE -SINGLE_ANIMATION(AudinoMega); -#endif -#if P_GEN_6_POKEMON == TRUE -SINGLE_ANIMATION(DiancieMega); -#endif +#if P_ALOLAN_FORMS SINGLE_ANIMATION(RattataAlolan); SINGLE_ANIMATION(RaticateAlolan); -SINGLE_ANIMATION(RaichuAlolan); -SINGLE_ANIMATION(SandshrewAlolan); -SINGLE_ANIMATION(SandslashAlolan); -SINGLE_ANIMATION(VulpixAlolan); -SINGLE_ANIMATION(NinetalesAlolan); -SINGLE_ANIMATION(DiglettAlolan); -SINGLE_ANIMATION(DugtrioAlolan); -SINGLE_ANIMATION(MeowthAlolan); -SINGLE_ANIMATION(PersianAlolan); -SINGLE_ANIMATION(GeodudeAlolan); -SINGLE_ANIMATION(GravelerAlolan); -SINGLE_ANIMATION(GolemAlolan); -SINGLE_ANIMATION(GrimerAlolan); -SINGLE_ANIMATION(MukAlolan); -SINGLE_ANIMATION(ExeggutorAlolan); -SINGLE_ANIMATION(MarowakAlolan); -SINGLE_ANIMATION(MeowthGalarian); -SINGLE_ANIMATION(PonytaGalarian); -SINGLE_ANIMATION(RapidashGalarian); -SINGLE_ANIMATION(SlowpokeGalarian); -SINGLE_ANIMATION(SlowbroGalarian); -SINGLE_ANIMATION(FarfetchdGalarian); -SINGLE_ANIMATION(WeezingGalarian); -SINGLE_ANIMATION(MrMimeGalarian); -SINGLE_ANIMATION(ArticunoGalarian); -SINGLE_ANIMATION(ZapdosGalarian); -SINGLE_ANIMATION(MoltresGalarian); -SINGLE_ANIMATION(SlowkingGalarian); -SINGLE_ANIMATION(CorsolaGalarian); -SINGLE_ANIMATION(ZigzagoonGalarian); -SINGLE_ANIMATION(LinooneGalarian); -#if P_GEN_5_POKEMON == TRUE -SINGLE_ANIMATION(DarumakaGalarian); -SINGLE_ANIMATION(DarmanitanGalarian); -SINGLE_ANIMATION(YamaskGalarian); -SINGLE_ANIMATION(StunfiskGalarian); -#endif -SINGLE_ANIMATION(GrowlitheHisuian); -SINGLE_ANIMATION(ArcanineHisuian); -SINGLE_ANIMATION(VoltorbHisuian); -SINGLE_ANIMATION(ElectrodeHisuian); -SINGLE_ANIMATION(TyphlosionHisuian); -SINGLE_ANIMATION(QwilfishHisuian); -SINGLE_ANIMATION(SneaselHisuian); -#if P_GEN_5_POKEMON == TRUE -SINGLE_ANIMATION(SamurottHisuian); -SINGLE_ANIMATION(LilligantHisuian); -SINGLE_ANIMATION(ZoruaHisuian); -SINGLE_ANIMATION(ZoroarkHisuian); -SINGLE_ANIMATION(BraviaryHisuian); -#endif -#if P_GEN_6_POKEMON == TRUE -SINGLE_ANIMATION(SliggooHisuian); -SINGLE_ANIMATION(GoodraHisuian); -SINGLE_ANIMATION(AvaluggHisuian); -#endif -#if P_GEN_7_POKEMON == TRUE -SINGLE_ANIMATION(DecidueyeHisuian); -#endif +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_RATTATA +#if P_FAMILY_SPEAROW +SINGLE_ANIMATION(Spearow); +SINGLE_ANIMATION(Fearow); +#endif //P_FAMILY_SPEAROW +#if P_FAMILY_EKANS +SINGLE_ANIMATION(Ekans); +SINGLE_ANIMATION(Arbok); +#endif //P_FAMILY_EKANS +#if P_FAMILY_PIKACHU +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Pichu); +SINGLE_ANIMATION(PichuSpikyEared); +#endif //P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Pikachu); +#if P_COSPLAY_PIKACHU_FORMS SINGLE_ANIMATION(PikachuCosplay); SINGLE_ANIMATION(PikachuRockStar); SINGLE_ANIMATION(PikachuBelle); SINGLE_ANIMATION(PikachuPopStar); -SINGLE_ANIMATION(PIKACHU_PH_D); +SINGLE_ANIMATION(PikachuPhD); SINGLE_ANIMATION(PikachuLibre); SINGLE_ANIMATION(PikachuOriginalCap); SINGLE_ANIMATION(PikachuHoennCap); @@ -11616,1314 +10195,2538 @@ SINGLE_ANIMATION(PikachuKalosCap); SINGLE_ANIMATION(PikachuAlolaCap); SINGLE_ANIMATION(PikachuPartnerCap); SINGLE_ANIMATION(PikachuWorldCap); -SINGLE_ANIMATION(PichuSpikyEared); -DOUBLE_ANIMATION(DeoxysAttack); -DOUBLE_ANIMATION(DeoxysDefense); -DOUBLE_ANIMATION(DeoxysSpeed); -#if P_GEN_4_POKEMON == TRUE +#endif //P_CAP_PIKACHU_FORMS +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(PikachuGigantamax); +#endif //P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(Raichu); +#if P_ALOLAN_FORMS +SINGLE_ANIMATION(RaichuAlolan); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_PIKACHU +#if P_FAMILY_SANDSHREW +SINGLE_ANIMATION(Sandshrew); +SINGLE_ANIMATION(Sandslash); +#if P_ALOLAN_FORMS +SINGLE_ANIMATION(SandshrewAlolan); +SINGLE_ANIMATION(SandslashAlolan); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_SANDSHREW +#if P_FAMILY_NIDORAN +SINGLE_ANIMATION(NidoranF); +SINGLE_ANIMATION(Nidorina); +SINGLE_ANIMATION(Nidoqueen); +SINGLE_ANIMATION(NidoranM); +SINGLE_ANIMATION(Nidorino); +SINGLE_ANIMATION(Nidoking); +#endif //P_FAMILY_NIDORAN +#if P_FAMILY_CLEFAIRY +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Cleffa); +#endif //P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Clefairy); +SINGLE_ANIMATION(Clefable); +#endif //P_FAMILY_CLEFAIRY +#if P_FAMILY_VULPIX +SINGLE_ANIMATION(Vulpix); +SINGLE_ANIMATION(Ninetales); +#if P_ALOLAN_FORMS +SINGLE_ANIMATION(VulpixAlolan); +SINGLE_ANIMATION(NinetalesAlolan); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_VULPIX +#if P_FAMILY_JIGGLYPUFF +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Igglybuff); +#endif //P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Jigglypuff); +SINGLE_ANIMATION(Wigglytuff); +#endif //P_FAMILY_JIGGLYPUFF +#if P_FAMILY_ZUBAT +SINGLE_ANIMATION(Zubat); +SINGLE_ANIMATION(Golbat); +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Crobat); +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ZUBAT +#if P_FAMILY_ODDISH +SINGLE_ANIMATION(Oddish); +SINGLE_ANIMATION(Gloom); +SINGLE_ANIMATION(Vileplume); +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Bellossom); +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ODDISH +#if P_FAMILY_PARAS +SINGLE_ANIMATION(Paras); +SINGLE_ANIMATION(Parasect); +#endif //P_FAMILY_PARAS +#if P_FAMILY_VENONAT +SINGLE_ANIMATION(Venonat); +SINGLE_ANIMATION(Venomoth); +#endif //P_FAMILY_VENONAT +#if P_FAMILY_DIGLETT +SINGLE_ANIMATION(Diglett); +SINGLE_ANIMATION(Dugtrio); +#if P_ALOLAN_FORMS +SINGLE_ANIMATION(DiglettAlolan); +SINGLE_ANIMATION(DugtrioAlolan); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_DIGLETT +#if P_FAMILY_MEOWTH +SINGLE_ANIMATION(Meowth); +SINGLE_ANIMATION(Persian); +#if P_ALOLAN_FORMS +SINGLE_ANIMATION(MeowthAlolan); +SINGLE_ANIMATION(PersianAlolan); +#endif //P_ALOLAN_FORMS +#if P_GALARIAN_FORMS +SINGLE_ANIMATION(MeowthGalarian); +SINGLE_ANIMATION(Perrserker); +#endif //P_GALARIAN_FORMS +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(MeowthGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MEOWTH +#if P_FAMILY_PSYDUCK +SINGLE_ANIMATION(Psyduck); +SINGLE_ANIMATION(Golduck); +#endif //P_FAMILY_PSYDUCK +#if P_FAMILY_MANKEY +SINGLE_ANIMATION(Mankey); +SINGLE_ANIMATION(Primeape); +#if P_GEN_9_CROSS_EVOS +SINGLE_ANIMATION(Annihilape); +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_MANKEY +#if P_FAMILY_GROWLITHE +SINGLE_ANIMATION(Growlithe); +SINGLE_ANIMATION(Arcanine); +#if P_HISUIAN_FORMS +SINGLE_ANIMATION(GrowlitheHisuian); +SINGLE_ANIMATION(ArcanineHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_GROWLITHE +#if P_FAMILY_POLIWAG +SINGLE_ANIMATION(Poliwag); +SINGLE_ANIMATION(Poliwhirl); +SINGLE_ANIMATION(Poliwrath); +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Politoed); +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_POLIWAG +#if P_FAMILY_ABRA +SINGLE_ANIMATION(Abra); +SINGLE_ANIMATION(Kadabra); +SINGLE_ANIMATION(Alakazam); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(AlakazamMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ABRA +#if P_FAMILY_MACHOP +SINGLE_ANIMATION(Machop); +SINGLE_ANIMATION(Machoke); +SINGLE_ANIMATION(Machamp); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(MachampGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MACHOP +#if P_FAMILY_BELLSPROUT +SINGLE_ANIMATION(Bellsprout); +SINGLE_ANIMATION(Weepinbell); +SINGLE_ANIMATION(Victreebel); +#endif //P_FAMILY_BELLSPROUT +#if P_FAMILY_TENTACOOL +SINGLE_ANIMATION(Tentacool); +SINGLE_ANIMATION(Tentacruel); +#endif //P_FAMILY_TENTACOOL +#if P_FAMILY_GEODUDE +SINGLE_ANIMATION(Geodude); +SINGLE_ANIMATION(Graveler); +SINGLE_ANIMATION(Golem); +#if P_ALOLAN_FORMS +SINGLE_ANIMATION(GeodudeAlolan); +SINGLE_ANIMATION(GravelerAlolan); +SINGLE_ANIMATION(GolemAlolan); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GEODUDE +#if P_FAMILY_PONYTA +SINGLE_ANIMATION(Ponyta); +SINGLE_ANIMATION(Rapidash); +#if P_GALARIAN_FORMS +SINGLE_ANIMATION(PonytaGalarian); +SINGLE_ANIMATION(RapidashGalarian); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_PONYTA +#if P_FAMILY_SLOWPOKE +SINGLE_ANIMATION(Slowpoke); +SINGLE_ANIMATION(Slowbro); +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Slowking); +#endif //P_GEN_2_CROSS_EVOS +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(SlowbroMega); +#endif //P_MEGA_EVOLUTIONS +#if P_GALARIAN_FORMS +SINGLE_ANIMATION(SlowpokeGalarian); +SINGLE_ANIMATION(SlowbroGalarian); +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(SlowkingGalarian); +#endif //P_GEN_2_CROSS_EVOS +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_SLOWPOKE +#if P_FAMILY_MAGNEMITE +SINGLE_ANIMATION(Magnemite); +SINGLE_ANIMATION(Magneton); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Magnezone); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGNEMITE +#if P_FAMILY_FARFETCHD +SINGLE_ANIMATION(Farfetchd); +#if P_GALARIAN_FORMS +SINGLE_ANIMATION(FarfetchdGalarian); +SINGLE_ANIMATION(Sirfetchd); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_FARFETCHD +#if P_FAMILY_DODUO +SINGLE_ANIMATION(Doduo); +SINGLE_ANIMATION(Dodrio); +#endif //P_FAMILY_DODUO +#if P_FAMILY_SEEL +SINGLE_ANIMATION(Seel); +SINGLE_ANIMATION(Dewgong); +#endif //P_FAMILY_SEEL +#if P_FAMILY_GRIMER +SINGLE_ANIMATION(Grimer); +SINGLE_ANIMATION(Muk); +#if P_ALOLAN_FORMS +SINGLE_ANIMATION(GrimerAlolan); +SINGLE_ANIMATION(MukAlolan); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_GRIMER +#if P_FAMILY_SHELLDER +SINGLE_ANIMATION(Shellder); +SINGLE_ANIMATION(Cloyster); +#endif //P_FAMILY_SHELLDER +#if P_FAMILY_GASTLY +SINGLE_ANIMATION(Gastly); +SINGLE_ANIMATION(Haunter); +SINGLE_ANIMATION(Gengar); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(GengarMega); +#endif //P_MEGA_EVOLUTIONS +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(GengarGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_GASTLY +#if P_FAMILY_ONIX +SINGLE_ANIMATION(Onix); +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Steelix); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(SteelixMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_ONIX +#if P_FAMILY_DROWZEE +SINGLE_ANIMATION(Drowzee); +SINGLE_ANIMATION(Hypno); +#endif //P_FAMILY_DROWZEE +#if P_FAMILY_KRABBY +SINGLE_ANIMATION(Krabby); +SINGLE_ANIMATION(Kingler); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(KinglerGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_KRABBY +#if P_FAMILY_VOLTORB +SINGLE_ANIMATION(Voltorb); +SINGLE_ANIMATION(Electrode); +#if P_HISUIAN_FORMS +SINGLE_ANIMATION(VoltorbHisuian); +SINGLE_ANIMATION(ElectrodeHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_VOLTORB +#if P_FAMILY_EXEGGCUTE +SINGLE_ANIMATION(Exeggcute); +SINGLE_ANIMATION(Exeggutor); +#if P_ALOLAN_FORMS +SINGLE_ANIMATION(ExeggutorAlolan); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_EXEGGCUTE +#if P_FAMILY_CUBONE +SINGLE_ANIMATION(Cubone); +SINGLE_ANIMATION(Marowak); +#if P_ALOLAN_FORMS +SINGLE_ANIMATION(MarowakAlolan); +#endif //P_ALOLAN_FORMS +#endif //P_FAMILY_CUBONE +#if P_FAMILY_HITMONS +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Tyrogue); +#endif //P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Hitmonlee); +SINGLE_ANIMATION(Hitmonchan); +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Hitmontop); +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HITMONS +#if P_FAMILY_LICKITUNG +SINGLE_ANIMATION(Lickitung); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Lickilicky); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_LICKITUNG +#if P_FAMILY_KOFFING +SINGLE_ANIMATION(Koffing); +SINGLE_ANIMATION(Weezing); +#if P_GALARIAN_FORMS +SINGLE_ANIMATION(WeezingGalarian); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_KOFFING +#if P_FAMILY_RHYHORN +SINGLE_ANIMATION(Rhyhorn); +SINGLE_ANIMATION(Rhydon); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Rhyperior); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RHYHORN +#if P_FAMILY_CHANSEY +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Happiny); +#endif //P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Chansey); +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Blissey); +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_CHANSEY +#if P_FAMILY_TANGELA +SINGLE_ANIMATION(Tangela); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Tangrowth); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TANGELA +#if P_FAMILY_KANGASKHAN +SINGLE_ANIMATION(Kangaskhan); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(KangaskhanMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_KANGASKHAN +#if P_FAMILY_HORSEA +SINGLE_ANIMATION(Horsea); +SINGLE_ANIMATION(Seadra); +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Kingdra); +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_HORSEA +#if P_FAMILY_GOLDEEN +SINGLE_ANIMATION(Goldeen); +SINGLE_ANIMATION(Seaking); +#endif //P_FAMILY_GOLDEEN +#if P_FAMILY_STARYU +SINGLE_ANIMATION(Staryu); +SINGLE_ANIMATION(Starmie); +#endif //P_FAMILY_STARYU +#if P_FAMILY_MR_MIME +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(MimeJr); +#endif //P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(MrMime); +#if P_GALARIAN_FORMS +SINGLE_ANIMATION(MrMimeGalarian); +SINGLE_ANIMATION(MrRime); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MR_MIME +#if P_FAMILY_SCYTHER +SINGLE_ANIMATION(Scyther); +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Scizor); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(ScizorMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_2_CROSS_EVOS +#if P_GEN_8_CROSS_EVOS +SINGLE_ANIMATION(Kleavor); +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_SCYTHER +#if P_FAMILY_JYNX +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Smoochum); +#endif //P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Jynx); +#endif //P_FAMILY_JYNX +#if P_FAMILY_ELECTABUZZ +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Elekid); +#endif //P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Electabuzz); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Electivire); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ELECTABUZZ +#if P_FAMILY_MAGMAR +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Magby); +#endif //P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Magmar); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Magmortar); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MAGMAR +#if P_FAMILY_PINSIR +SINGLE_ANIMATION(Pinsir); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(PinsirMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_PINSIR +#if P_FAMILY_TAUROS +SINGLE_ANIMATION(Tauros); +#if P_PALDEAN_FORMS +SINGLE_ANIMATION(TaurosPaldean); +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_TAUROS +#if P_FAMILY_MAGIKARP +SINGLE_ANIMATION(Magikarp); +SINGLE_ANIMATION(Gyarados); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(GyaradosMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAGIKARP +#if P_FAMILY_LAPRAS +SINGLE_ANIMATION(Lapras); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(LaprasGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_LAPRAS +#if P_FAMILY_DITTO +SINGLE_ANIMATION(Ditto); +#endif //P_FAMILY_DITTO +#if P_FAMILY_EEVEE +SINGLE_ANIMATION(Eevee); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(EeveeGigantamax); +#endif //P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(Vaporeon); +SINGLE_ANIMATION(Jolteon); +SINGLE_ANIMATION(Flareon); +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Espeon); +SINGLE_ANIMATION(Umbreon); +#endif //P_GEN_2_CROSS_EVOS +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Leafeon); +SINGLE_ANIMATION(Glaceon); +#endif //P_GEN_4_CROSS_EVOS +#if P_GEN_6_CROSS_EVOS +SINGLE_ANIMATION(Sylveon); +#endif //P_GEN_6_CROSS_EVOS +#endif //P_FAMILY_EEVEE +#if P_FAMILY_PORYGON +SINGLE_ANIMATION(Porygon); +#if P_GEN_2_CROSS_EVOS +SINGLE_ANIMATION(Porygon2); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Porygon_Z); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_GEN_2_CROSS_EVOS +#endif //P_FAMILY_PORYGON +#if P_FAMILY_OMANYTE +SINGLE_ANIMATION(Omanyte); +SINGLE_ANIMATION(Omastar); +#endif //P_FAMILY_OMANYTE +#if P_FAMILY_KABUTO +SINGLE_ANIMATION(Kabuto); +SINGLE_ANIMATION(Kabutops); +#endif //P_FAMILY_KABUTO +#if P_FAMILY_AERODACTYL +SINGLE_ANIMATION(Aerodactyl); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(AerodactylMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_AERODACTYL +#if P_FAMILY_SNORLAX +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Munchlax); +#endif //P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Snorlax); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(SnorlaxGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SNORLAX +#if P_FAMILY_ARTICUNO +SINGLE_ANIMATION(Articuno); +#if P_GALARIAN_FORMS +SINGLE_ANIMATION(ArticunoGalarian); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ARTICUNO +#if P_FAMILY_ZAPDOS +SINGLE_ANIMATION(Zapdos); +#if P_GALARIAN_FORMS +SINGLE_ANIMATION(ZapdosGalarian); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZAPDOS +#if P_FAMILY_MOLTRES +SINGLE_ANIMATION(Moltres); +#if P_GALARIAN_FORMS +SINGLE_ANIMATION(MoltresGalarian); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_MOLTRES +#if P_FAMILY_DRATINI +SINGLE_ANIMATION(Dratini); +SINGLE_ANIMATION(Dragonair); +SINGLE_ANIMATION(Dragonite); +#endif //P_FAMILY_DRATINI +#if P_FAMILY_MEWTWO +SINGLE_ANIMATION(Mewtwo); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(MewtwoMegaX); +SINGLE_ANIMATION(MewtwoMegaY); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MEWTWO +#if P_FAMILY_MEW +SINGLE_ANIMATION(Mew); +#endif //P_FAMILY_MEW +#if P_FAMILY_CHIKORITA +SINGLE_ANIMATION(Chikorita); +SINGLE_ANIMATION(Bayleef); +SINGLE_ANIMATION(Meganium); +#endif //P_FAMILY_CHIKORITA +#if P_FAMILY_CYNDAQUIL +SINGLE_ANIMATION(Cyndaquil); +SINGLE_ANIMATION(Quilava); +SINGLE_ANIMATION(Typhlosion); +#if P_HISUIAN_FORMS +SINGLE_ANIMATION(TyphlosionHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_CYNDAQUIL +#if P_FAMILY_TOTODILE +SINGLE_ANIMATION(Totodile); +SINGLE_ANIMATION(Croconaw); +SINGLE_ANIMATION(Feraligatr); +#endif //P_FAMILY_TOTODILE +#if P_FAMILY_SENTRET +SINGLE_ANIMATION(Sentret); +SINGLE_ANIMATION(Furret); +#endif //P_FAMILY_SENTRET +#if P_FAMILY_HOOTHOOT +SINGLE_ANIMATION(Hoothoot); +SINGLE_ANIMATION(Noctowl); +#endif //P_FAMILY_HOOTHOOT +#if P_FAMILY_LEDYBA +SINGLE_ANIMATION(Ledyba); +SINGLE_ANIMATION(Ledian); +#endif //P_FAMILY_LEDYBA +#if P_FAMILY_SPINARAK +SINGLE_ANIMATION(Spinarak); +SINGLE_ANIMATION(Ariados); +#endif //P_FAMILY_SPINARAK +#if P_FAMILY_CHINCHOU +SINGLE_ANIMATION(Chinchou); +SINGLE_ANIMATION(Lanturn); +#endif //P_FAMILY_CHINCHOU +#if P_FAMILY_TOGEPI +SINGLE_ANIMATION(Togepi); +SINGLE_ANIMATION(Togetic); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Togekiss); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_TOGEPI +#if P_FAMILY_NATU +SINGLE_ANIMATION(Natu); +SINGLE_ANIMATION(Xatu); +#endif //P_FAMILY_NATU +#if P_FAMILY_MAREEP +SINGLE_ANIMATION(Mareep); +SINGLE_ANIMATION(Flaaffy); +SINGLE_ANIMATION(Ampharos); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(AmpharosMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAREEP +#if P_FAMILY_MARILL +#if P_GEN_3_CROSS_EVOS +SINGLE_ANIMATION(Azurill); +#endif //P_GEN_3_CROSS_EVOS +SINGLE_ANIMATION(Marill); +SINGLE_ANIMATION(Azumarill); +#endif //P_FAMILY_MARILL +#if P_FAMILY_SUDOWOODO +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Bonsly); +#endif //P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Sudowoodo); +#endif //P_FAMILY_SUDOWOODO +#if P_FAMILY_HOPPIP +SINGLE_ANIMATION(Hoppip); +SINGLE_ANIMATION(Skiploom); +SINGLE_ANIMATION(Jumpluff); +#endif //P_FAMILY_HOPPIP +#if P_FAMILY_AIPOM +SINGLE_ANIMATION(Aipom); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Ambipom); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_AIPOM +#if P_FAMILY_SUNKERN +SINGLE_ANIMATION(Sunkern); +SINGLE_ANIMATION(Sunflora); +#endif //P_FAMILY_SUNKERN +#if P_FAMILY_YANMA +SINGLE_ANIMATION(Yanma); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Yanmega); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_YANMA +#if P_FAMILY_WOOPER +SINGLE_ANIMATION(Wooper); +SINGLE_ANIMATION(Quagsire); +#if P_PALDEAN_FORMS +SINGLE_ANIMATION(WooperPaldean); +SINGLE_ANIMATION(Clodsire); +#endif //P_PALDEAN_FORMS +#endif //P_FAMILY_WOOPER +#if P_FAMILY_MURKROW +SINGLE_ANIMATION(Murkrow); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Honchkrow); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MURKROW +#if P_FAMILY_MISDREAVUS +SINGLE_ANIMATION(Misdreavus); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Mismagius); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_MISDREAVUS +#if P_FAMILY_UNOWN +SINGLE_ANIMATION(Unown); +#endif //P_FAMILY_UNOWN +#if P_FAMILY_WOBBUFFET +#if P_GEN_3_CROSS_EVOS +SINGLE_ANIMATION(Wynaut); +#endif //P_GEN_3_CROSS_EVOS +SINGLE_ANIMATION(Wobbuffet); +#endif //P_FAMILY_WOBBUFFET +#if P_FAMILY_GIRAFARIG +SINGLE_ANIMATION(Girafarig); +#if P_GEN_9_CROSS_EVOS +SINGLE_ANIMATION(Farigiraf); +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_GIRAFARIG +#if P_FAMILY_PINECO +SINGLE_ANIMATION(Pineco); +SINGLE_ANIMATION(Forretress); +#endif //P_FAMILY_PINECO +#if P_FAMILY_DUNSPARCE +SINGLE_ANIMATION(Dunsparce); +#if P_GEN_9_CROSS_EVOS +SINGLE_ANIMATION(Dudunsparce); +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_DUNSPARCE +#if P_FAMILY_GLIGAR +SINGLE_ANIMATION(Gligar); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Gliscor); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_GLIGAR +#if P_FAMILY_SNUBBULL +SINGLE_ANIMATION(Snubbull); +SINGLE_ANIMATION(Granbull); +#endif //P_FAMILY_SNUBBULL +#if P_FAMILY_QWILFISH +SINGLE_ANIMATION(Qwilfish); +#if P_HISUIAN_FORMS +SINGLE_ANIMATION(QwilfishHisuian); +SINGLE_ANIMATION(Overqwil); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_QWILFISH +#if P_FAMILY_SHUCKLE +SINGLE_ANIMATION(Shuckle); +#endif //P_FAMILY_SHUCKLE +#if P_FAMILY_HERACROSS +SINGLE_ANIMATION(Heracross); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(HeracrossMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_HERACROSS +#if P_FAMILY_SNEASEL +SINGLE_ANIMATION(Sneasel); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Weavile); +#endif //P_GEN_4_CROSS_EVOS +#if P_HISUIAN_FORMS +SINGLE_ANIMATION(SneaselHisuian); +SINGLE_ANIMATION(Sneasler); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_SNEASEL +#if P_FAMILY_TEDDIURSA +SINGLE_ANIMATION(Teddiursa); +SINGLE_ANIMATION(Ursaring); +#if P_GEN_8_CROSS_EVOS +SINGLE_ANIMATION(Ursaluna); +SINGLE_ANIMATION(UrsalunaBloodmoon); +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_TEDDIURSA +#if P_FAMILY_SLUGMA +SINGLE_ANIMATION(Slugma); +SINGLE_ANIMATION(Magcargo); +#endif //P_FAMILY_SLUGMA +#if P_FAMILY_SWINUB +SINGLE_ANIMATION(Swinub); +SINGLE_ANIMATION(Piloswine); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Mamoswine); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SWINUB +#if P_FAMILY_CORSOLA +SINGLE_ANIMATION(Corsola); +#if P_GALARIAN_FORMS +SINGLE_ANIMATION(CorsolaGalarian); +SINGLE_ANIMATION(Cursola); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_CORSOLA +#if P_FAMILY_REMORAID +SINGLE_ANIMATION(Remoraid); +SINGLE_ANIMATION(Octillery); +#endif //P_FAMILY_REMORAID +#if P_FAMILY_DELIBIRD +SINGLE_ANIMATION(Delibird); +#endif //P_FAMILY_DELIBIRD +#if P_FAMILY_MANTINE +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Mantyke); +#endif //P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Mantine); +#endif //P_FAMILY_MANTINE +#if P_FAMILY_SKARMORY +SINGLE_ANIMATION(Skarmory); +#endif //P_FAMILY_SKARMORY +#if P_FAMILY_HOUNDOUR +SINGLE_ANIMATION(Houndour); +SINGLE_ANIMATION(Houndoom); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(HoundoomMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_HOUNDOUR +#if P_FAMILY_PHANPY +SINGLE_ANIMATION(Phanpy); +SINGLE_ANIMATION(Donphan); +#endif //P_FAMILY_PHANPY +#if P_FAMILY_STANTLER +SINGLE_ANIMATION(Stantler); +#if P_GEN_8_CROSS_EVOS +SINGLE_ANIMATION(Wyrdeer); +#endif //P_GEN_8_CROSS_EVOS +#endif //P_FAMILY_STANTLER +#if P_FAMILY_SMEARGLE +SINGLE_ANIMATION(Smeargle); +#endif //P_FAMILY_SMEARGLE +#if P_FAMILY_MILTANK +SINGLE_ANIMATION(Miltank); +#endif //P_FAMILY_MILTANK +#if P_FAMILY_RAIKOU +SINGLE_ANIMATION(Raikou); +#endif //P_FAMILY_RAIKOU +#if P_FAMILY_ENTEI +SINGLE_ANIMATION(Entei); +#endif //P_FAMILY_ENTEI +#if P_FAMILY_SUICUNE +SINGLE_ANIMATION(Suicune); +#endif //P_FAMILY_SUICUNE +#if P_FAMILY_LARVITAR +SINGLE_ANIMATION(Larvitar); +SINGLE_ANIMATION(Pupitar); +SINGLE_ANIMATION(Tyranitar); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(TyranitarMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LARVITAR +#if P_FAMILY_LUGIA +SINGLE_ANIMATION(Lugia); +#endif //P_FAMILY_LUGIA +#if P_FAMILY_HO_OH +SINGLE_ANIMATION(HoOh); +#endif //P_FAMILY_HO_OH +#if P_FAMILY_CELEBI +SINGLE_ANIMATION(Celebi); +#endif //P_FAMILY_CELEBI +#if P_FAMILY_TREECKO +SINGLE_ANIMATION(Treecko); +SINGLE_ANIMATION(Grovyle); +SINGLE_ANIMATION(Sceptile); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(SceptileMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_TREECKO +#if P_FAMILY_TORCHIC +SINGLE_ANIMATION(Torchic); +SINGLE_ANIMATION(Combusken); +SINGLE_ANIMATION(Blaziken); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(BlazikenMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_TORCHIC +#if P_FAMILY_MUDKIP +SINGLE_ANIMATION(Mudkip); +SINGLE_ANIMATION(Marshtomp); +SINGLE_ANIMATION(Swampert); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(SwampertMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MUDKIP +#if P_FAMILY_POOCHYENA +SINGLE_ANIMATION(Poochyena); +SINGLE_ANIMATION(Mightyena); +#endif //P_FAMILY_POOCHYENA +#if P_FAMILY_ZIGZAGOON +SINGLE_ANIMATION(Zigzagoon); +SINGLE_ANIMATION(Linoone); +#if P_GALARIAN_FORMS +SINGLE_ANIMATION(ZigzagoonGalarian); +SINGLE_ANIMATION(LinooneGalarian); +SINGLE_ANIMATION(Obstagoon); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_ZIGZAGOON +#if P_FAMILY_WURMPLE +SINGLE_ANIMATION(Wurmple); +SINGLE_ANIMATION(Silcoon); +SINGLE_ANIMATION(Beautifly); +SINGLE_ANIMATION(Cascoon); +SINGLE_ANIMATION(Dustox); +#endif //P_FAMILY_WURMPLE +#if P_FAMILY_LOTAD +SINGLE_ANIMATION(Lotad); +SINGLE_ANIMATION(Lombre); +SINGLE_ANIMATION(Ludicolo); +#endif //P_FAMILY_LOTAD +#if P_FAMILY_SEEDOT +SINGLE_ANIMATION(Seedot); +SINGLE_ANIMATION(Nuzleaf); +SINGLE_ANIMATION(Shiftry); +#endif //P_FAMILY_SEEDOT +#if P_FAMILY_TAILLOW +SINGLE_ANIMATION(Taillow); +SINGLE_ANIMATION(Swellow); +#endif //P_FAMILY_TAILLOW +#if P_FAMILY_WINGULL +SINGLE_ANIMATION(Wingull); +SINGLE_ANIMATION(Pelipper); +#endif //P_FAMILY_WINGULL +#if P_FAMILY_RALTS +SINGLE_ANIMATION(Ralts); +SINGLE_ANIMATION(Kirlia); +SINGLE_ANIMATION(Gardevoir); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(GardevoirMega); +#endif //P_MEGA_EVOLUTIONS +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Gallade); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(GalladeMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_RALTS +#if P_FAMILY_SURSKIT +SINGLE_ANIMATION(Surskit); +SINGLE_ANIMATION(Masquerain); +#endif //P_FAMILY_SURSKIT +#if P_FAMILY_SHROOMISH +SINGLE_ANIMATION(Shroomish); +SINGLE_ANIMATION(Breloom); +#endif //P_FAMILY_SHROOMISH +#if P_FAMILY_SLAKOTH +SINGLE_ANIMATION(Slakoth); +SINGLE_ANIMATION(Vigoroth); +SINGLE_ANIMATION(Slaking); +#endif //P_FAMILY_SLAKOTH +#if P_FAMILY_NINCADA +SINGLE_ANIMATION(Nincada); +SINGLE_ANIMATION(Ninjask); +SINGLE_ANIMATION(Shedinja); +#endif //P_FAMILY_NINCADA +#if P_FAMILY_WHISMUR +SINGLE_ANIMATION(Whismur); +SINGLE_ANIMATION(Loudred); +SINGLE_ANIMATION(Exploud); +#endif //P_FAMILY_WHISMUR +#if P_FAMILY_MAKUHITA +SINGLE_ANIMATION(Makuhita); +SINGLE_ANIMATION(Hariyama); +#endif //P_FAMILY_MAKUHITA +#if P_FAMILY_NOSEPASS +SINGLE_ANIMATION(Nosepass); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Probopass); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_NOSEPASS +#if P_FAMILY_SKITTY +SINGLE_ANIMATION(Skitty); +SINGLE_ANIMATION(Delcatty); +#endif //P_FAMILY_SKITTY +#if P_FAMILY_SABLEYE +SINGLE_ANIMATION(Sableye); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(SableyeMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SABLEYE +#if P_FAMILY_MAWILE +SINGLE_ANIMATION(Mawile); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(MawileMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MAWILE +#if P_FAMILY_ARON +SINGLE_ANIMATION(Aron); +SINGLE_ANIMATION(Lairon); +SINGLE_ANIMATION(Aggron); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(AggronMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ARON +#if P_FAMILY_MEDITITE +SINGLE_ANIMATION(Meditite); +SINGLE_ANIMATION(Medicham); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(MedichamMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_MEDITITE +#if P_FAMILY_ELECTRIKE +SINGLE_ANIMATION(Electrike); +SINGLE_ANIMATION(Manectric); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(ManectricMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ELECTRIKE +#if P_FAMILY_PLUSLE +SINGLE_ANIMATION(Plusle); +#endif //P_FAMILY_PLUSLE +#if P_FAMILY_MINUN +SINGLE_ANIMATION(Minun); +#endif //P_FAMILY_MINUN +#if P_FAMILY_VOLBEAT_ILLUMISE +SINGLE_ANIMATION(Volbeat); +SINGLE_ANIMATION(Illumise); +#endif //P_FAMILY_VOLBEAT_ILLUMISE +#if P_FAMILY_ROSELIA +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Budew); +#endif //P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Roselia); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Roserade); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_ROSELIA +#if P_FAMILY_GULPIN +SINGLE_ANIMATION(Gulpin); +SINGLE_ANIMATION(Swalot); +#endif //P_FAMILY_GULPIN +#if P_FAMILY_CARVANHA +SINGLE_ANIMATION(Carvanha); +SINGLE_ANIMATION(Sharpedo); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(SharpedoMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_CARVANHA +#if P_FAMILY_WAILMER +SINGLE_ANIMATION(Wailmer); +SINGLE_ANIMATION(Wailord); +#endif //P_FAMILY_WAILMER +#if P_FAMILY_NUMEL +SINGLE_ANIMATION(Numel); +SINGLE_ANIMATION(Camerupt); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(CameruptMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_NUMEL +#if P_FAMILY_TORKOAL +SINGLE_ANIMATION(Torkoal); +#endif //P_FAMILY_TORKOAL +#if P_FAMILY_SPOINK +SINGLE_ANIMATION(Spoink); +SINGLE_ANIMATION(Grumpig); +#endif //P_FAMILY_SPOINK +#if P_FAMILY_SPINDA +SINGLE_ANIMATION(Spinda); +#endif //P_FAMILY_SPINDA +#if P_FAMILY_TRAPINCH +SINGLE_ANIMATION(Trapinch); +SINGLE_ANIMATION(Vibrava); +SINGLE_ANIMATION(Flygon); +#endif //P_FAMILY_TRAPINCH +#if P_FAMILY_CACNEA +SINGLE_ANIMATION(Cacnea); +SINGLE_ANIMATION(Cacturne); +#endif //P_FAMILY_CACNEA +#if P_FAMILY_SWABLU +SINGLE_ANIMATION(Swablu); +SINGLE_ANIMATION(Altaria); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(AltariaMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SWABLU +#if P_FAMILY_ZANGOOSE +SINGLE_ANIMATION(Zangoose); +#endif //P_FAMILY_ZANGOOSE +#if P_FAMILY_SEVIPER +SINGLE_ANIMATION(Seviper); +#endif //P_FAMILY_SEVIPER +#if P_FAMILY_LUNATONE +SINGLE_ANIMATION(Lunatone); +#endif //P_FAMILY_LUNATONE +#if P_FAMILY_SOLROCK +SINGLE_ANIMATION(Solrock); +#endif //P_FAMILY_SOLROCK +#if P_FAMILY_BARBOACH +SINGLE_ANIMATION(Barboach); +SINGLE_ANIMATION(Whiscash); +#endif //P_FAMILY_BARBOACH +#if P_FAMILY_CORPHISH +SINGLE_ANIMATION(Corphish); +SINGLE_ANIMATION(Crawdaunt); +#endif //P_FAMILY_CORPHISH +#if P_FAMILY_BALTOY +SINGLE_ANIMATION(Baltoy); +SINGLE_ANIMATION(Claydol); +#endif //P_FAMILY_BALTOY +#if P_FAMILY_LILEEP +SINGLE_ANIMATION(Lileep); +SINGLE_ANIMATION(Cradily); +#endif //P_FAMILY_LILEEP +#if P_FAMILY_ANORITH +SINGLE_ANIMATION(Anorith); +SINGLE_ANIMATION(Armaldo); +#endif //P_FAMILY_ANORITH +#if P_FAMILY_FEEBAS +SINGLE_ANIMATION(Feebas); +SINGLE_ANIMATION(Milotic); +#endif //P_FAMILY_FEEBAS +#if P_FAMILY_CASTFORM +SINGLE_ANIMATION(CastformNormal); +SINGLE_ANIMATION(CastformSunny); +SINGLE_ANIMATION(CastformRainy); +SINGLE_ANIMATION(CastformSnowy); +#endif //P_FAMILY_CASTFORM +#if P_FAMILY_KECLEON +SINGLE_ANIMATION(Kecleon); +#endif //P_FAMILY_KECLEON +#if P_FAMILY_SHUPPET +SINGLE_ANIMATION(Shuppet); +SINGLE_ANIMATION(Banette); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(BanetteMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SHUPPET +#if P_FAMILY_DUSKULL +SINGLE_ANIMATION(Duskull); +SINGLE_ANIMATION(Dusclops); +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Dusknoir); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_DUSKULL +#if P_FAMILY_TROPIUS +SINGLE_ANIMATION(Tropius); +#endif //P_FAMILY_TROPIUS +#if P_FAMILY_CHIMECHO +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Chingling); +#endif //P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Chimecho); +#endif //P_FAMILY_CHIMECHO +#if P_FAMILY_ABSOL +SINGLE_ANIMATION(Absol); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(AbsolMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_ABSOL +#if P_FAMILY_SNORUNT +SINGLE_ANIMATION(Snorunt); +SINGLE_ANIMATION(Glalie); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(GlalieMega); +#endif //P_MEGA_EVOLUTIONS +#if P_GEN_4_CROSS_EVOS +SINGLE_ANIMATION(Froslass); +#endif //P_GEN_4_CROSS_EVOS +#endif //P_FAMILY_SNORUNT +#if P_FAMILY_SPHEAL +SINGLE_ANIMATION(Spheal); +SINGLE_ANIMATION(Sealeo); +SINGLE_ANIMATION(Walrein); +#endif //P_FAMILY_SPHEAL +#if P_FAMILY_CLAMPERL +SINGLE_ANIMATION(Clamperl); +SINGLE_ANIMATION(Huntail); +SINGLE_ANIMATION(Gorebyss); +#endif //P_FAMILY_CLAMPERL +#if P_FAMILY_RELICANTH +SINGLE_ANIMATION(Relicanth); +#endif //P_FAMILY_RELICANTH +#if P_FAMILY_LUVDISC +SINGLE_ANIMATION(Luvdisc); +#endif //P_FAMILY_LUVDISC +#if P_FAMILY_BAGON +SINGLE_ANIMATION(Bagon); +SINGLE_ANIMATION(Shelgon); +SINGLE_ANIMATION(Salamence); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(SalamenceMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BAGON +#if P_FAMILY_BELDUM +SINGLE_ANIMATION(Beldum); +SINGLE_ANIMATION(Metang); +SINGLE_ANIMATION(Metagross); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(MetagrossMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BELDUM +#if P_FAMILY_REGIROCK +SINGLE_ANIMATION(Regirock); +#endif //P_FAMILY_REGIROCK +#if P_FAMILY_REGICE +SINGLE_ANIMATION(Regice); +#endif //P_FAMILY_REGICE +#if P_FAMILY_REGISTEEL +SINGLE_ANIMATION(Registeel); +#endif //P_FAMILY_REGISTEEL +#if P_FAMILY_LATIAS +SINGLE_ANIMATION(Latias); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(LatiasMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LATIAS +#if P_FAMILY_LATIOS +SINGLE_ANIMATION(Latios); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(LatiosMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_LATIOS +#if P_FAMILY_KYOGRE +SINGLE_ANIMATION(Kyogre); +#if P_PRIMAL_REVERSIONS +SINGLE_ANIMATION(KyogrePrimal); +#endif //P_PRIMAL_REVERSIONS +#endif //P_FAMILY_KYOGRE +#if P_FAMILY_GROUDON +SINGLE_ANIMATION(Groudon); +#if P_PRIMAL_REVERSIONS +SINGLE_ANIMATION(GroudonPrimal); +#endif //P_PRIMAL_REVERSIONS +#endif //P_FAMILY_GROUDON +#if P_FAMILY_RAYQUAZA +SINGLE_ANIMATION(Rayquaza); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(RayquazaMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_RAYQUAZA +#if P_FAMILY_JIRACHI +SINGLE_ANIMATION(Jirachi); +#endif //P_FAMILY_JIRACHI +#if P_FAMILY_DEOXYS +SINGLE_ANIMATION(DeoxysNormal); +SINGLE_ANIMATION(DeoxysAttack); +SINGLE_ANIMATION(DeoxysDefense); +SINGLE_ANIMATION(DeoxysSpeed); +#endif //P_FAMILY_DEOXYS +#if P_FAMILY_TURTWIG +SINGLE_ANIMATION(Turtwig); +SINGLE_ANIMATION(Grotle); +SINGLE_ANIMATION(Torterra); +#endif //P_FAMILY_TURTWIG +#if P_FAMILY_CHIMCHAR +SINGLE_ANIMATION(Chimchar); +SINGLE_ANIMATION(Monferno); +SINGLE_ANIMATION(Infernape); +#endif //P_FAMILY_CHIMCHAR +#if P_FAMILY_PIPLUP +SINGLE_ANIMATION(Piplup); +SINGLE_ANIMATION(Prinplup); +SINGLE_ANIMATION(Empoleon); +#endif //P_FAMILY_PIPLUP +#if P_FAMILY_STARLY +SINGLE_ANIMATION(Starly); +SINGLE_ANIMATION(Staravia); +SINGLE_ANIMATION(Staraptor); +#endif //P_FAMILY_STARLY +#if P_FAMILY_BIDOOF +SINGLE_ANIMATION(Bidoof); +SINGLE_ANIMATION(Bibarel); +#endif //P_FAMILY_BIDOOF +#if P_FAMILY_KRICKETOT +SINGLE_ANIMATION(Kricketot); +SINGLE_ANIMATION(Kricketune); +#endif //P_FAMILY_KRICKETOT +#if P_FAMILY_SHINX +SINGLE_ANIMATION(Shinx); +SINGLE_ANIMATION(Luxio); +SINGLE_ANIMATION(Luxray); +#endif //P_FAMILY_SHINX +#if P_FAMILY_CRANIDOS +SINGLE_ANIMATION(Cranidos); +SINGLE_ANIMATION(Rampardos); +#endif //P_FAMILY_CRANIDOS +#if P_FAMILY_SHIELDON +SINGLE_ANIMATION(Shieldon); +SINGLE_ANIMATION(Bastiodon); +#endif //P_FAMILY_SHIELDON +#if P_FAMILY_BURMY +SINGLE_ANIMATION(Burmy); +SINGLE_ANIMATION(Wormadam); +SINGLE_ANIMATION(Mothim); +#endif //P_FAMILY_BURMY +#if P_FAMILY_COMBEE +SINGLE_ANIMATION(Combee); +SINGLE_ANIMATION(Vespiquen); +#endif //P_FAMILY_COMBEE +#if P_FAMILY_PACHIRISU +SINGLE_ANIMATION(Pachirisu); +#endif //P_FAMILY_PACHIRISU +#if P_FAMILY_BUIZEL +SINGLE_ANIMATION(Buizel); +SINGLE_ANIMATION(Floatzel); +#endif //P_FAMILY_BUIZEL +#if P_FAMILY_CHERUBI +SINGLE_ANIMATION(Cherubi); +SINGLE_ANIMATION(CherrimOvercast); +SINGLE_ANIMATION(CherrimSunshine); +#endif //P_FAMILY_CHERUBI +#if P_FAMILY_SHELLOS +SINGLE_ANIMATION(Shellos); +SINGLE_ANIMATION(Gastrodon); +#endif //P_FAMILY_SHELLOS +#if P_FAMILY_DRIFLOON +SINGLE_ANIMATION(Drifloon); +SINGLE_ANIMATION(Drifblim); +#endif //P_FAMILY_DRIFLOON +#if P_FAMILY_BUNEARY +SINGLE_ANIMATION(Buneary); +SINGLE_ANIMATION(Lopunny); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(LopunnyMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_BUNEARY +#if P_FAMILY_GLAMEOW +SINGLE_ANIMATION(Glameow); +SINGLE_ANIMATION(Purugly); +#endif //P_FAMILY_GLAMEOW +#if P_FAMILY_STUNKY +SINGLE_ANIMATION(Stunky); +SINGLE_ANIMATION(Skuntank); +#endif //P_FAMILY_STUNKY +#if P_FAMILY_BRONZOR +SINGLE_ANIMATION(Bronzor); +SINGLE_ANIMATION(Bronzong); +#endif //P_FAMILY_BRONZOR +#if P_FAMILY_CHATOT +SINGLE_ANIMATION(Chatot); +#endif //P_FAMILY_CHATOT +#if P_FAMILY_SPIRITOMB +SINGLE_ANIMATION(Spiritomb); +#endif //P_FAMILY_SPIRITOMB +#if P_FAMILY_GIBLE +SINGLE_ANIMATION(Gible); +SINGLE_ANIMATION(Gabite); +SINGLE_ANIMATION(Garchomp); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(GarchompMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_GIBLE +#if P_FAMILY_RIOLU +SINGLE_ANIMATION(Riolu); +SINGLE_ANIMATION(Lucario); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(LucarioMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_RIOLU +#if P_FAMILY_HIPPOPOTAS +SINGLE_ANIMATION(Hippopotas); +SINGLE_ANIMATION(Hippowdon); +#endif //P_FAMILY_HIPPOPOTAS +#if P_FAMILY_SKORUPI +SINGLE_ANIMATION(Skorupi); +SINGLE_ANIMATION(Drapion); +#endif //P_FAMILY_SKORUPI +#if P_FAMILY_CROAGUNK +SINGLE_ANIMATION(Croagunk); +SINGLE_ANIMATION(Toxicroak); +#endif //P_FAMILY_CROAGUNK +#if P_FAMILY_CARNIVINE +SINGLE_ANIMATION(Carnivine); +#endif //P_FAMILY_CARNIVINE +#if P_FAMILY_FINNEON +SINGLE_ANIMATION(Finneon); +SINGLE_ANIMATION(Lumineon); +#endif //P_FAMILY_FINNEON +#if P_FAMILY_SNOVER +SINGLE_ANIMATION(Snover); +SINGLE_ANIMATION(Abomasnow); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(AbomasnowMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_SNOVER +#if P_FAMILY_ROTOM +SINGLE_ANIMATION(Rotom); +SINGLE_ANIMATION(RotomHeat); +SINGLE_ANIMATION(RotomWash); +SINGLE_ANIMATION(RotomFrost); +SINGLE_ANIMATION(RotomFan); +SINGLE_ANIMATION(RotomMow); +#endif //P_FAMILY_ROTOM +#if P_FAMILY_UXIE +SINGLE_ANIMATION(Uxie); +#endif //P_FAMILY_UXIE +#if P_FAMILY_MESPRIT +SINGLE_ANIMATION(Mesprit); +#endif //P_FAMILY_MESPRIT +#if P_FAMILY_AZELF +SINGLE_ANIMATION(Azelf); +#endif //P_FAMILY_AZELF +#if P_FAMILY_DIALGA +SINGLE_ANIMATION(Dialga); SINGLE_ANIMATION(DialgaOrigin); +#endif //P_FAMILY_DIALGA +#if P_FAMILY_PALKIA +SINGLE_ANIMATION(Palkia); SINGLE_ANIMATION(PalkiaOrigin); -DOUBLE_ANIMATION(GiratinaOrigin); +#endif //P_FAMILY_PALKIA +#if P_FAMILY_HEATRAN +SINGLE_ANIMATION(Heatran); +#endif //P_FAMILY_HEATRAN +#if P_FAMILY_REGIGIGAS +SINGLE_ANIMATION(Regigigas); +#endif //P_FAMILY_REGIGIGAS +#if P_FAMILY_GIRATINA +SINGLE_ANIMATION(GiratinaAltered); +SINGLE_ANIMATION(GiratinaOrigin); +#endif //P_FAMILY_GIRATINA +#if P_FAMILY_CRESSELIA +SINGLE_ANIMATION(Cresselia); +#endif //P_FAMILY_CRESSELIA +#if P_FAMILY_MANAPHY +SINGLE_ANIMATION(Phione); +SINGLE_ANIMATION(Manaphy); +#endif //P_FAMILY_MANAPHY +#if P_FAMILY_DARKRAI +SINGLE_ANIMATION(Darkrai); +#endif //P_FAMILY_DARKRAI +#if P_FAMILY_SHAYMIN +SINGLE_ANIMATION(ShayminLand); SINGLE_ANIMATION(ShayminSky); -#endif -#if P_GEN_5_POKEMON == TRUE +#endif //P_FAMILY_SHAYMIN +#if P_FAMILY_ARCEUS +SINGLE_ANIMATION(Arceus); +#endif //P_FAMILY_ARCEUS +#if P_FAMILY_VICTINI +SINGLE_ANIMATION(Victini); +#endif //P_FAMILY_VICTINI +#if P_FAMILY_SNIVY +SINGLE_ANIMATION(Snivy); +SINGLE_ANIMATION(Servine); +SINGLE_ANIMATION(Serperior); +#endif //P_FAMILY_SNIVY +#if P_FAMILY_TEPIG +SINGLE_ANIMATION(Tepig); +SINGLE_ANIMATION(Pignite); +SINGLE_ANIMATION(Emboar); +#endif //P_FAMILY_TEPIG +#if P_FAMILY_OSHAWOTT +SINGLE_ANIMATION(Oshawott); +SINGLE_ANIMATION(Dewott); +SINGLE_ANIMATION(Samurott); +#if P_HISUIAN_FORMS +SINGLE_ANIMATION(SamurottHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_OSHAWOTT +#if P_FAMILY_PATRAT +SINGLE_ANIMATION(Patrat); +SINGLE_ANIMATION(Watchog); +#endif //P_FAMILY_PATRAT +#if P_FAMILY_LILLIPUP +SINGLE_ANIMATION(Lillipup); +SINGLE_ANIMATION(Herdier); +SINGLE_ANIMATION(Stoutland); +#endif //P_FAMILY_LILLIPUP +#if P_FAMILY_PURRLOIN +SINGLE_ANIMATION(Purrloin); +SINGLE_ANIMATION(Liepard); +#endif //P_FAMILY_PURRLOIN +#if P_FAMILY_PANSAGE +SINGLE_ANIMATION(Pansage); +SINGLE_ANIMATION(Simisage); +#endif //P_FAMILY_PANSAGE +#if P_FAMILY_PANSEAR +SINGLE_ANIMATION(Pansear); +SINGLE_ANIMATION(Simisear); +#endif //P_FAMILY_PANSEAR +#if P_FAMILY_PANPOUR +SINGLE_ANIMATION(Panpour); +SINGLE_ANIMATION(Simipour); +#endif //P_FAMILY_PANPOUR +#if P_FAMILY_MUNNA +SINGLE_ANIMATION(Munna); +SINGLE_ANIMATION(Musharna); +#endif //P_FAMILY_MUNNA +#if P_FAMILY_PIDOVE +SINGLE_ANIMATION(Pidove); +SINGLE_ANIMATION(Tranquill); +SINGLE_ANIMATION(Unfezant); +#endif //P_FAMILY_PIDOVE +#if P_FAMILY_BLITZLE +SINGLE_ANIMATION(Blitzle); +SINGLE_ANIMATION(Zebstrika); +#endif //P_FAMILY_BLITZLE +#if P_FAMILY_ROGGENROLA +SINGLE_ANIMATION(Roggenrola); +SINGLE_ANIMATION(Boldore); +SINGLE_ANIMATION(Gigalith); +#endif //P_FAMILY_ROGGENROLA +#if P_FAMILY_WOOBAT +SINGLE_ANIMATION(Woobat); +SINGLE_ANIMATION(Swoobat); +#endif //P_FAMILY_WOOBAT +#if P_FAMILY_DRILBUR +SINGLE_ANIMATION(Drilbur); +SINGLE_ANIMATION(Excadrill); +#endif //P_FAMILY_DRILBUR +#if P_FAMILY_AUDINO +SINGLE_ANIMATION(Audino); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(AudinoMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_AUDINO +#if P_FAMILY_TIMBURR +SINGLE_ANIMATION(Timburr); +SINGLE_ANIMATION(Gurdurr); +SINGLE_ANIMATION(Conkeldurr); +#endif //P_FAMILY_TIMBURR +#if P_FAMILY_TYMPOLE +SINGLE_ANIMATION(Tympole); +SINGLE_ANIMATION(Palpitoad); +SINGLE_ANIMATION(Seismitoad); +#endif //P_FAMILY_TYMPOLE +#if P_FAMILY_THROH +SINGLE_ANIMATION(Throh); +#endif //P_FAMILY_THROH +#if P_FAMILY_SAWK +SINGLE_ANIMATION(Sawk); +#endif //P_FAMILY_SAWK +#if P_FAMILY_SEWADDLE +SINGLE_ANIMATION(Sewaddle); +SINGLE_ANIMATION(Swadloon); +SINGLE_ANIMATION(Leavanny); +#endif //P_FAMILY_SEWADDLE +#if P_FAMILY_VENIPEDE +SINGLE_ANIMATION(Venipede); +SINGLE_ANIMATION(Whirlipede); +SINGLE_ANIMATION(Scolipede); +#endif //P_FAMILY_VENIPEDE +#if P_FAMILY_COTTONEE +SINGLE_ANIMATION(Cottonee); +SINGLE_ANIMATION(Whimsicott); +#endif //P_FAMILY_COTTONEE +#if P_FAMILY_PETILIL +SINGLE_ANIMATION(Petilil); +SINGLE_ANIMATION(Lilligant); +#if P_HISUIAN_FORMS +SINGLE_ANIMATION(LilligantHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_PETILIL +#if P_FAMILY_BASCULIN +SINGLE_ANIMATION(Basculin); +#if P_HISUIAN_FORMS +SINGLE_ANIMATION(Basculegion); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_BASCULIN +#if P_FAMILY_SANDILE +SINGLE_ANIMATION(Sandile); +SINGLE_ANIMATION(Krokorok); +SINGLE_ANIMATION(Krookodile); +#endif //P_FAMILY_SANDILE +#if P_FAMILY_DARUMAKA +SINGLE_ANIMATION(Darumaka); +SINGLE_ANIMATION(DarmanitanStandardMode); SINGLE_ANIMATION(DarmanitanZenMode); -SINGLE_ANIMATION(DarmanitanZenModeGalarian); +#if P_GALARIAN_FORMS +SINGLE_ANIMATION(DarumakaGalarian); +SINGLE_ANIMATION(DarmanitanGalarianStandardMode); +SINGLE_ANIMATION(DarmanitanGalarianZenMode); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_DARUMAKA +#if P_FAMILY_MARACTUS +SINGLE_ANIMATION(Maractus); +#endif //P_FAMILY_MARACTUS +#if P_FAMILY_DWEBBLE +SINGLE_ANIMATION(Dwebble); +SINGLE_ANIMATION(Crustle); +#endif //P_FAMILY_DWEBBLE +#if P_FAMILY_SCRAGGY +SINGLE_ANIMATION(Scraggy); +SINGLE_ANIMATION(Scrafty); +#endif //P_FAMILY_SCRAGGY +#if P_FAMILY_SIGILYPH +SINGLE_ANIMATION(Sigilyph); +#endif //P_FAMILY_SIGILYPH +#if P_FAMILY_YAMASK +SINGLE_ANIMATION(Yamask); +SINGLE_ANIMATION(Cofagrigus); +#if P_GALARIAN_FORMS +SINGLE_ANIMATION(YamaskGalarian); +SINGLE_ANIMATION(Runerigus); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_YAMASK +#if P_FAMILY_TIRTOUGA +SINGLE_ANIMATION(Tirtouga); +SINGLE_ANIMATION(Carracosta); +#endif //P_FAMILY_TIRTOUGA +#if P_FAMILY_ARCHEN +SINGLE_ANIMATION(Archen); +SINGLE_ANIMATION(Archeops); +#endif //P_FAMILY_ARCHEN +#if P_FAMILY_TRUBBISH +SINGLE_ANIMATION(Trubbish); +SINGLE_ANIMATION(Garbodor); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(GarbodorGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_TRUBBISH +#if P_FAMILY_ZORUA +SINGLE_ANIMATION(Zorua); +SINGLE_ANIMATION(Zoroark); +#if P_HISUIAN_FORMS +SINGLE_ANIMATION(ZoruaHisuian); +SINGLE_ANIMATION(ZoroarkHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_ZORUA +#if P_FAMILY_MINCCINO +SINGLE_ANIMATION(Minccino); +SINGLE_ANIMATION(Cinccino); +#endif //P_FAMILY_MINCCINO +#if P_FAMILY_GOTHITA +SINGLE_ANIMATION(Gothita); +SINGLE_ANIMATION(Gothorita); +SINGLE_ANIMATION(Gothitelle); +#endif //P_FAMILY_GOTHITA +#if P_FAMILY_SOLOSIS +SINGLE_ANIMATION(Solosis); +SINGLE_ANIMATION(Duosion); +SINGLE_ANIMATION(Reuniclus); +#endif //P_FAMILY_SOLOSIS +#if P_FAMILY_DUCKLETT +SINGLE_ANIMATION(Ducklett); +SINGLE_ANIMATION(Swanna); +#endif //P_FAMILY_DUCKLETT +#if P_FAMILY_VANILLITE +SINGLE_ANIMATION(Vanillite); +SINGLE_ANIMATION(Vanillish); +SINGLE_ANIMATION(Vanilluxe); +#endif //P_FAMILY_VANILLITE +#if P_FAMILY_DEERLING +SINGLE_ANIMATION(Deerling); +SINGLE_ANIMATION(Sawsbuck); +#endif //P_FAMILY_DEERLING +#if P_FAMILY_EMOLGA +SINGLE_ANIMATION(Emolga); +#endif //P_FAMILY_EMOLGA +#if P_FAMILY_KARRABLAST +SINGLE_ANIMATION(Karrablast); +SINGLE_ANIMATION(Escavalier); +#endif //P_FAMILY_KARRABLAST +#if P_FAMILY_FOONGUS +SINGLE_ANIMATION(Foongus); +SINGLE_ANIMATION(Amoonguss); +#endif //P_FAMILY_FOONGUS +#if P_FAMILY_FRILLISH +SINGLE_ANIMATION(Frillish); +SINGLE_ANIMATION(Jellicent); +#endif //P_FAMILY_FRILLISH +#if P_FAMILY_ALOMOMOLA +SINGLE_ANIMATION(Alomomola); +#endif //P_FAMILY_ALOMOMOLA +#if P_FAMILY_JOLTIK +SINGLE_ANIMATION(Joltik); +SINGLE_ANIMATION(Galvantula); +#endif //P_FAMILY_JOLTIK +#if P_FAMILY_FERROSEED +SINGLE_ANIMATION(Ferroseed); +SINGLE_ANIMATION(Ferrothorn); +#endif //P_FAMILY_FERROSEED +#if P_FAMILY_KLINK +SINGLE_ANIMATION(Klink); +SINGLE_ANIMATION(Klang); +SINGLE_ANIMATION(Klinklang); +#endif //P_FAMILY_KLINK +#if P_FAMILY_TYNAMO +SINGLE_ANIMATION(Tynamo); +SINGLE_ANIMATION(Eelektrik); +SINGLE_ANIMATION(Eelektross); +#endif //P_FAMILY_TYNAMO +#if P_FAMILY_ELGYEM +SINGLE_ANIMATION(Elgyem); +SINGLE_ANIMATION(Beheeyem); +#endif //P_FAMILY_ELGYEM +#if P_FAMILY_LITWICK +SINGLE_ANIMATION(Litwick); +SINGLE_ANIMATION(Lampent); +SINGLE_ANIMATION(Chandelure); +#endif //P_FAMILY_LITWICK +#if P_FAMILY_AXEW +SINGLE_ANIMATION(Axew); +SINGLE_ANIMATION(Fraxure); +SINGLE_ANIMATION(Haxorus); +#endif //P_FAMILY_AXEW +#if P_FAMILY_CUBCHOO +SINGLE_ANIMATION(Cubchoo); +SINGLE_ANIMATION(Beartic); +#endif //P_FAMILY_CUBCHOO +#if P_FAMILY_CRYOGONAL +SINGLE_ANIMATION(Cryogonal); +#endif //P_FAMILY_CRYOGONAL +#if P_FAMILY_SHELMET +SINGLE_ANIMATION(Shelmet); +SINGLE_ANIMATION(Accelgor); +#endif //P_FAMILY_SHELMET +#if P_FAMILY_STUNFISK +SINGLE_ANIMATION(Stunfisk); +#if P_GALARIAN_FORMS +SINGLE_ANIMATION(StunfiskGalarian); +#endif //P_GALARIAN_FORMS +#endif //P_FAMILY_STUNFISK +#if P_FAMILY_MIENFOO +SINGLE_ANIMATION(Mienfoo); +SINGLE_ANIMATION(Mienshao); +#endif //P_FAMILY_MIENFOO +#if P_FAMILY_DRUDDIGON +SINGLE_ANIMATION(Druddigon); +#endif //P_FAMILY_DRUDDIGON +#if P_FAMILY_GOLETT +SINGLE_ANIMATION(Golett); +SINGLE_ANIMATION(Golurk); +#endif //P_FAMILY_GOLETT +#if P_FAMILY_PAWNIARD +SINGLE_ANIMATION(Pawniard); +SINGLE_ANIMATION(Bisharp); +#if P_GEN_9_CROSS_EVOS +SINGLE_ANIMATION(Kingambit); +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_PAWNIARD +#if P_FAMILY_BOUFFALANT +SINGLE_ANIMATION(Bouffalant); +#endif //P_FAMILY_BOUFFALANT +#if P_FAMILY_RUFFLET +SINGLE_ANIMATION(Rufflet); +SINGLE_ANIMATION(Braviary); +#if P_HISUIAN_FORMS +SINGLE_ANIMATION(BraviaryHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_RUFFLET +#if P_FAMILY_VULLABY +SINGLE_ANIMATION(Vullaby); +SINGLE_ANIMATION(Mandibuzz); +#endif //P_FAMILY_VULLABY +#if P_FAMILY_HEATMOR +SINGLE_ANIMATION(Heatmor); +#endif //P_FAMILY_HEATMOR +#if P_FAMILY_DURANT +SINGLE_ANIMATION(Durant); +#endif //P_FAMILY_DURANT +#if P_FAMILY_DEINO +SINGLE_ANIMATION(Deino); +SINGLE_ANIMATION(Zweilous); +SINGLE_ANIMATION(Hydreigon); +#endif //P_FAMILY_DEINO +#if P_FAMILY_LARVESTA +SINGLE_ANIMATION(Larvesta); +SINGLE_ANIMATION(Volcarona); +#endif //P_FAMILY_LARVESTA +#if P_FAMILY_COBALION +SINGLE_ANIMATION(Cobalion); +#endif //P_FAMILY_COBALION +#if P_FAMILY_TERRAKION +SINGLE_ANIMATION(Terrakion); +#endif //P_FAMILY_TERRAKION +#if P_FAMILY_VIRIZION +SINGLE_ANIMATION(Virizion); +#endif //P_FAMILY_VIRIZION +#if P_FAMILY_TORNADUS +SINGLE_ANIMATION(TornadusIncarnate); SINGLE_ANIMATION(TornadusTherian); +#endif //P_FAMILY_TORNADUS +#if P_FAMILY_THUNDURUS +SINGLE_ANIMATION(ThundurusIncarnate); SINGLE_ANIMATION(ThundurusTherian); +#endif //P_FAMILY_THUNDURUS +#if P_FAMILY_RESHIRAM +SINGLE_ANIMATION(Reshiram); +#endif //P_FAMILY_RESHIRAM +#if P_FAMILY_ZEKROM +SINGLE_ANIMATION(Zekrom); +#endif //P_FAMILY_ZEKROM +#if P_FAMILY_LANDORUS +SINGLE_ANIMATION(LandorusIncarnate); SINGLE_ANIMATION(LandorusTherian); -SINGLE_ANIMATION(KyuremBlack); +#endif //P_FAMILY_LANDORUS +#if P_FAMILY_KYUREM +SINGLE_ANIMATION(Kyurem); +#if P_FUSION_FORMS SINGLE_ANIMATION(KyuremWhite); +SINGLE_ANIMATION(KyuremBlack); +#endif //P_FUSION_FORMS +#endif //P_FAMILY_KYUREM +#if P_FAMILY_KELDEO +SINGLE_ANIMATION(KeldeoOrdinary); SINGLE_ANIMATION(KeldeoResolute); +#endif //P_FAMILY_KELDEO +#if P_FAMILY_MELOETTA +SINGLE_ANIMATION(MeloettaAria); SINGLE_ANIMATION(MeloettaPirouette); -#endif -#if P_GEN_6_POKEMON == TRUE +#endif //P_FAMILY_MELOETTA +#if P_FAMILY_GENESECT +SINGLE_ANIMATION(Genesect); +#endif //P_FAMILY_GENESECT +#if P_FAMILY_CHESPIN +SINGLE_ANIMATION(Chespin); +SINGLE_ANIMATION(Quilladin); +SINGLE_ANIMATION(Chesnaught); +#endif //P_FAMILY_CHESPIN +#if P_FAMILY_FENNEKIN +SINGLE_ANIMATION(Fennekin); +SINGLE_ANIMATION(Braixen); +SINGLE_ANIMATION(Delphox); +#endif //P_FAMILY_FENNEKIN +#if P_FAMILY_FROAKIE +SINGLE_ANIMATION(Froakie); +SINGLE_ANIMATION(Frogadier); +SINGLE_ANIMATION(Greninja); +SINGLE_ANIMATION(GreninjaAsh); +#endif //P_FAMILY_FROAKIE +#if P_FAMILY_BUNNELBY +SINGLE_ANIMATION(Bunnelby); +SINGLE_ANIMATION(Diggersby); +#endif //P_FAMILY_BUNNELBY +#if P_FAMILY_FLETCHLING +SINGLE_ANIMATION(Fletchling); +SINGLE_ANIMATION(Fletchinder); +SINGLE_ANIMATION(Talonflame); +#endif //P_FAMILY_FLETCHLING +#if P_FAMILY_SCATTERBUG +SINGLE_ANIMATION(Scatterbug); +SINGLE_ANIMATION(Spewpa); +SINGLE_ANIMATION(Vivillon); +#endif //P_FAMILY_SCATTERBUG +#if P_FAMILY_LITLEO +SINGLE_ANIMATION(Litleo); +SINGLE_ANIMATION(Pyroar); +#endif //P_FAMILY_LITLEO +#if P_FAMILY_FLABEBE +SINGLE_ANIMATION(Flabebe); +SINGLE_ANIMATION(Floette); +SINGLE_ANIMATION(Florges); +#endif //P_FAMILY_FLABEBE +#if P_FAMILY_SKIDDO +SINGLE_ANIMATION(Skiddo); +SINGLE_ANIMATION(Gogoat); +#endif //P_FAMILY_SKIDDO +#if P_FAMILY_PANCHAM +SINGLE_ANIMATION(Pancham); +SINGLE_ANIMATION(Pangoro); +#endif //P_FAMILY_PANCHAM +#if P_FAMILY_FURFROU +SINGLE_ANIMATION(Furfrou); +#endif //P_FAMILY_FURFROU +#if P_FAMILY_ESPURR +SINGLE_ANIMATION(Espurr); +SINGLE_ANIMATION(Meowstic); +#endif //P_FAMILY_ESPURR +#if P_FAMILY_HONEDGE +SINGLE_ANIMATION(Honedge); +SINGLE_ANIMATION(Doublade); +SINGLE_ANIMATION(AegislashShield); SINGLE_ANIMATION(AegislashBlade); +#endif //P_FAMILY_HONEDGE +#if P_FAMILY_SPRITZEE +SINGLE_ANIMATION(Spritzee); +SINGLE_ANIMATION(Aromatisse); +#endif //P_FAMILY_SPRITZEE +#if P_FAMILY_SWIRLIX +SINGLE_ANIMATION(Swirlix); +SINGLE_ANIMATION(Slurpuff); +#endif //P_FAMILY_SWIRLIX +#if P_FAMILY_INKAY +SINGLE_ANIMATION(Inkay); +SINGLE_ANIMATION(Malamar); +#endif //P_FAMILY_INKAY +#if P_FAMILY_BINACLE +SINGLE_ANIMATION(Binacle); +SINGLE_ANIMATION(Barbaracle); +#endif //P_FAMILY_BINACLE +#if P_FAMILY_SKRELP +SINGLE_ANIMATION(Skrelp); +SINGLE_ANIMATION(Dragalge); +#endif //P_FAMILY_SKRELP +#if P_FAMILY_CLAUNCHER +SINGLE_ANIMATION(Clauncher); +SINGLE_ANIMATION(Clawitzer); +#endif //P_FAMILY_CLAUNCHER +#if P_FAMILY_HELIOPTILE +SINGLE_ANIMATION(Helioptile); +SINGLE_ANIMATION(Heliolisk); +#endif //P_FAMILY_HELIOPTILE +#if P_FAMILY_TYRUNT +SINGLE_ANIMATION(Tyrunt); +SINGLE_ANIMATION(Tyrantrum); +#endif //P_FAMILY_TYRUNT +#if P_FAMILY_AMAURA +SINGLE_ANIMATION(Amaura); +SINGLE_ANIMATION(Aurorus); +#endif //P_FAMILY_AMAURA +#if P_FAMILY_HAWLUCHA +SINGLE_ANIMATION(Hawlucha); +#endif //P_FAMILY_HAWLUCHA +#if P_FAMILY_DEDENNE +SINGLE_ANIMATION(Dedenne); +#endif //P_FAMILY_DEDENNE +#if P_FAMILY_CARBINK +SINGLE_ANIMATION(Carbink); +#endif //P_FAMILY_CARBINK +#if P_FAMILY_GOOMY +SINGLE_ANIMATION(Goomy); +SINGLE_ANIMATION(Sliggoo); +SINGLE_ANIMATION(Goodra); +#if P_HISUIAN_FORMS +SINGLE_ANIMATION(SliggooHisuian); +SINGLE_ANIMATION(GoodraHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_GOOMY +#if P_FAMILY_KLEFKI +SINGLE_ANIMATION(Klefki); +#endif //P_FAMILY_KLEFKI +#if P_FAMILY_PHANTUMP +SINGLE_ANIMATION(Phantump); +SINGLE_ANIMATION(Trevenant); +#endif //P_FAMILY_PHANTUMP +#if P_FAMILY_PUMPKABOO +SINGLE_ANIMATION(Pumpkaboo); +SINGLE_ANIMATION(Gourgeist); +#endif //P_FAMILY_PUMPKABOO +#if P_FAMILY_BERGMITE +SINGLE_ANIMATION(Bergmite); +SINGLE_ANIMATION(Avalugg); +#if P_HISUIAN_FORMS +SINGLE_ANIMATION(AvaluggHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_BERGMITE +#if P_FAMILY_NOIBAT +SINGLE_ANIMATION(Noibat); +SINGLE_ANIMATION(Noivern); +#endif //P_FAMILY_NOIBAT +#if P_FAMILY_XERNEAS +SINGLE_ANIMATION(Xerneas); +#endif //P_FAMILY_XERNEAS +#if P_FAMILY_YVELTAL +SINGLE_ANIMATION(Yveltal); +#endif //P_FAMILY_YVELTAL +#if P_FAMILY_ZYGARDE +SINGLE_ANIMATION(Zygarde50); SINGLE_ANIMATION(Zygarde10); SINGLE_ANIMATION(ZygardeComplete); +#endif //P_FAMILY_ZYGARDE +#if P_FAMILY_DIANCIE +SINGLE_ANIMATION(Diancie); +#if P_MEGA_EVOLUTIONS +SINGLE_ANIMATION(DiancieMega); +#endif //P_MEGA_EVOLUTIONS +#endif //P_FAMILY_DIANCIE +#if P_FAMILY_HOOPA +SINGLE_ANIMATION(HoopaConfined); SINGLE_ANIMATION(HoopaUnbound); -#endif -#if P_GEN_7_POKEMON == TRUE -SINGLE_ANIMATION(MiniorCore); -SINGLE_ANIMATION(WishiwashiSchool); -SINGLE_ANIMATION(MimikyuBusted); +#endif //P_FAMILY_HOOPA +#if P_FAMILY_VOLCANION +SINGLE_ANIMATION(Volcanion); +#endif //P_FAMILY_VOLCANION +#if P_FAMILY_ROWLET +SINGLE_ANIMATION(Rowlet); +SINGLE_ANIMATION(Dartrix); +SINGLE_ANIMATION(Decidueye); +#if P_HISUIAN_FORMS +SINGLE_ANIMATION(DecidueyeHisuian); +#endif //P_HISUIAN_FORMS +#endif //P_FAMILY_ROWLET +#if P_FAMILY_LITTEN +SINGLE_ANIMATION(Litten); +SINGLE_ANIMATION(Torracat); +SINGLE_ANIMATION(Incineroar); +#endif //P_FAMILY_LITTEN +#if P_FAMILY_POPPLIO +SINGLE_ANIMATION(Popplio); +SINGLE_ANIMATION(Brionne); +SINGLE_ANIMATION(Primarina); +#endif //P_FAMILY_POPPLIO +#if P_FAMILY_PIKIPEK +SINGLE_ANIMATION(Pikipek); +SINGLE_ANIMATION(Trumbeak); +SINGLE_ANIMATION(Toucannon); +#endif //P_FAMILY_PIKIPEK +#if P_FAMILY_YUNGOOS +SINGLE_ANIMATION(Yungoos); +SINGLE_ANIMATION(Gumshoos); +#endif //P_FAMILY_YUNGOOS +#if P_FAMILY_GRUBBIN +SINGLE_ANIMATION(Grubbin); +SINGLE_ANIMATION(Charjabug); +SINGLE_ANIMATION(Vikavolt); +#endif //P_FAMILY_GRUBBIN +#if P_FAMILY_CRABRAWLER +SINGLE_ANIMATION(Crabrawler); +SINGLE_ANIMATION(Crabominable); +#endif //P_FAMILY_CRABRAWLER +#if P_FAMILY_ORICORIO +SINGLE_ANIMATION(Oricorio); +#endif //P_FAMILY_ORICORIO +#if P_FAMILY_CUTIEFLY +SINGLE_ANIMATION(Cutiefly); +SINGLE_ANIMATION(Ribombee); +#endif //P_FAMILY_CUTIEFLY +#if P_FAMILY_ROCKRUFF +SINGLE_ANIMATION(Rockruff); +SINGLE_ANIMATION(LycanrocMidday); SINGLE_ANIMATION(LycanrocMidnight); SINGLE_ANIMATION(LycanrocDusk); -#endif -#if P_GEN_8_POKEMON == TRUE +#endif //P_FAMILY_ROCKRUFF +#if P_FAMILY_WISHIWASHI +SINGLE_ANIMATION(WishiwashiSolo); +SINGLE_ANIMATION(WishiwashiSchool); +#endif //P_FAMILY_WISHIWASHI +#if P_FAMILY_MAREANIE +SINGLE_ANIMATION(Mareanie); +SINGLE_ANIMATION(Toxapex); +#endif //P_FAMILY_MAREANIE +#if P_FAMILY_MUDBRAY +SINGLE_ANIMATION(Mudbray); +SINGLE_ANIMATION(Mudsdale); +#endif //P_FAMILY_MUDBRAY +#if P_FAMILY_DEWPIDER +SINGLE_ANIMATION(Dewpider); +SINGLE_ANIMATION(Araquanid); +#endif //P_FAMILY_DEWPIDER +#if P_FAMILY_FOMANTIS +SINGLE_ANIMATION(Fomantis); +SINGLE_ANIMATION(Lurantis); +#endif //P_FAMILY_FOMANTIS +#if P_FAMILY_MORELULL +SINGLE_ANIMATION(Morelull); +SINGLE_ANIMATION(Shiinotic); +#endif //P_FAMILY_MORELULL +#if P_FAMILY_SALANDIT +SINGLE_ANIMATION(Salandit); +SINGLE_ANIMATION(Salazzle); +#endif //P_FAMILY_SALANDIT +#if P_FAMILY_STUFFUL +SINGLE_ANIMATION(Stufful); +SINGLE_ANIMATION(Bewear); +#endif //P_FAMILY_STUFFUL +#if P_FAMILY_BOUNSWEET +SINGLE_ANIMATION(Bounsweet); +SINGLE_ANIMATION(Steenee); +SINGLE_ANIMATION(Tsareena); +#endif //P_FAMILY_BOUNSWEET +#if P_FAMILY_COMFEY +SINGLE_ANIMATION(Comfey); +#endif //P_FAMILY_COMFEY +#if P_FAMILY_ORANGURU +SINGLE_ANIMATION(Oranguru); +#endif //P_FAMILY_ORANGURU +#if P_FAMILY_PASSIMIAN +SINGLE_ANIMATION(Passimian); +#endif //P_FAMILY_PASSIMIAN +#if P_FAMILY_WIMPOD +SINGLE_ANIMATION(Wimpod); +SINGLE_ANIMATION(Golisopod); +#endif //P_FAMILY_WIMPOD +#if P_FAMILY_SANDYGAST +SINGLE_ANIMATION(Sandygast); +SINGLE_ANIMATION(Palossand); +#endif //P_FAMILY_SANDYGAST +#if P_FAMILY_PYUKUMUKU +SINGLE_ANIMATION(Pyukumuku); +#endif //P_FAMILY_PYUKUMUKU +#if P_FAMILY_TYPE_NULL +SINGLE_ANIMATION(TypeNull); +SINGLE_ANIMATION(Silvally); +#endif //P_FAMILY_TYPE_NULL +#if P_FAMILY_MINIOR +SINGLE_ANIMATION(MiniorMeteor); +SINGLE_ANIMATION(MiniorCore); +#endif //P_FAMILY_MINIOR +#if P_FAMILY_KOMALA +SINGLE_ANIMATION(Komala); +#endif //P_FAMILY_KOMALA +#if P_FAMILY_TURTONATOR +SINGLE_ANIMATION(Turtonator); +#endif //P_FAMILY_TURTONATOR +#if P_FAMILY_TOGEDEMARU +SINGLE_ANIMATION(Togedemaru); +#endif //P_FAMILY_TOGEDEMARU +#if P_FAMILY_MIMIKYU +SINGLE_ANIMATION(MimikyuDisguised); +SINGLE_ANIMATION(MimikyuBusted); +#endif //P_FAMILY_MIMIKYU +#if P_FAMILY_BRUXISH +SINGLE_ANIMATION(Bruxish); +#endif //P_FAMILY_BRUXISH +#if P_FAMILY_DRAMPA +SINGLE_ANIMATION(Drampa); +#endif //P_FAMILY_DRAMPA +#if P_FAMILY_DHELMISE +SINGLE_ANIMATION(Dhelmise); +#endif //P_FAMILY_DHELMISE +#if P_FAMILY_JANGMO_O +SINGLE_ANIMATION(Jangmo_O); +SINGLE_ANIMATION(Hakamo_O); +SINGLE_ANIMATION(Kommo_O); +#endif //P_FAMILY_JANGMO_O +#if P_FAMILY_TAPU_KOKO +SINGLE_ANIMATION(TapuKoko); +#endif //P_FAMILY_TAPU_KOKO +#if P_FAMILY_TAPU_LELE +SINGLE_ANIMATION(TapuLele); +#endif //P_FAMILY_TAPU_LELE +#if P_FAMILY_TAPU_BULU +SINGLE_ANIMATION(TapuBulu); +#endif //P_FAMILY_TAPU_BULU +#if P_FAMILY_TAPU_FINI +SINGLE_ANIMATION(TapuFini); +#endif //P_FAMILY_TAPU_FINI +#if P_FAMILY_COSMOG +SINGLE_ANIMATION(Cosmog); +SINGLE_ANIMATION(Cosmoem); +SINGLE_ANIMATION(Solgaleo); +SINGLE_ANIMATION(Lunala); +#endif //P_FAMILY_COSMOG +#if P_FAMILY_NIHILEGO +SINGLE_ANIMATION(Nihilego); +#endif //P_FAMILY_NIHILEGO +#if P_FAMILY_BUZZWOLE +SINGLE_ANIMATION(Buzzwole); +#endif //P_FAMILY_BUZZWOLE +#if P_FAMILY_PHEROMOSA +SINGLE_ANIMATION(Pheromosa); +#endif //P_FAMILY_PHEROMOSA +#if P_FAMILY_XURKITREE +SINGLE_ANIMATION(Xurkitree); +#endif //P_FAMILY_XURKITREE +#if P_FAMILY_CELESTEELA +SINGLE_ANIMATION(Celesteela); +#endif //P_FAMILY_CELESTEELA +#if P_FAMILY_KARTANA +SINGLE_ANIMATION(Kartana); +#endif //P_FAMILY_KARTANA +#if P_FAMILY_GUZZLORD +SINGLE_ANIMATION(Guzzlord); +#endif //P_FAMILY_GUZZLORD +#if P_FAMILY_NECROZMA +SINGLE_ANIMATION(Necrozma); +#endif //P_FAMILY_NECROZMA +#if P_FAMILY_MAGEARNA +SINGLE_ANIMATION(Magearna); +#endif //P_FAMILY_MAGEARNA +#if P_FAMILY_MARSHADOW +SINGLE_ANIMATION(Marshadow); +#endif //P_FAMILY_MARSHADOW +#if P_FAMILY_POIPOLE +SINGLE_ANIMATION(Poipole); +SINGLE_ANIMATION(Naganadel); +#endif //P_FAMILY_POIPOLE +#if P_FAMILY_STAKATAKA +SINGLE_ANIMATION(Stakataka); +#endif //P_FAMILY_STAKATAKA +#if P_FAMILY_BLACEPHALON +SINGLE_ANIMATION(Blacephalon); +#endif //P_FAMILY_BLACEPHALON +#if P_FAMILY_ZERAORA +SINGLE_ANIMATION(Zeraora); +#endif //P_FAMILY_ZERAORA +#if P_FAMILY_MELTAN +SINGLE_ANIMATION(Meltan); +SINGLE_ANIMATION(Melmetal); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(MelmetalGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MELTAN +#if P_FAMILY_GROOKEY +SINGLE_ANIMATION(Grookey); +SINGLE_ANIMATION(Thwackey); +SINGLE_ANIMATION(Rillaboom); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(RillaboomGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_GROOKEY +#if P_FAMILY_SCORBUNNY +SINGLE_ANIMATION(Scorbunny); +SINGLE_ANIMATION(Raboot); +SINGLE_ANIMATION(Cinderace); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(CinderaceGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SCORBUNNY +#if P_FAMILY_SOBBLE +SINGLE_ANIMATION(Sobble); +SINGLE_ANIMATION(Drizzile); +SINGLE_ANIMATION(Inteleon); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(InteleonGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SOBBLE +#if P_FAMILY_SKWOVET +SINGLE_ANIMATION(Skwovet); +SINGLE_ANIMATION(Greedent); +#endif //P_FAMILY_SKWOVET +#if P_FAMILY_ROOKIDEE +SINGLE_ANIMATION(Rookidee); +SINGLE_ANIMATION(Corvisquire); +SINGLE_ANIMATION(Corviknight); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(CorviknightGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_ROOKIDEE +#if P_FAMILY_BLIPBUG +SINGLE_ANIMATION(Blipbug); +SINGLE_ANIMATION(Dottler); +SINGLE_ANIMATION(Orbeetle); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(OrbeetleGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_BLIPBUG +#if P_FAMILY_NICKIT +SINGLE_ANIMATION(Nickit); +SINGLE_ANIMATION(Thievul); +#endif //P_FAMILY_NICKIT +#if P_FAMILY_GOSSIFLEUR +SINGLE_ANIMATION(Gossifleur); +SINGLE_ANIMATION(Eldegoss); +#endif //P_FAMILY_GOSSIFLEUR +#if P_FAMILY_WOOLOO +SINGLE_ANIMATION(Wooloo); +SINGLE_ANIMATION(Dubwool); +#endif //P_FAMILY_WOOLOO +#if P_FAMILY_CHEWTLE +SINGLE_ANIMATION(Chewtle); +SINGLE_ANIMATION(Drednaw); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(DrednawGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CHEWTLE +#if P_FAMILY_YAMPER +SINGLE_ANIMATION(Yamper); +SINGLE_ANIMATION(Boltund); +#endif //P_FAMILY_YAMPER +#if P_FAMILY_ROLYCOLY +SINGLE_ANIMATION(Rolycoly); +SINGLE_ANIMATION(Carkol); +SINGLE_ANIMATION(Coalossal); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(CoalossalGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_ROLYCOLY +#if P_FAMILY_APPLIN +SINGLE_ANIMATION(Applin); +SINGLE_ANIMATION(Flapple); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(FlappleGigantamax); +#endif //P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(Appletun); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(AppletunGigantamax); +#endif //P_GIGANTAMAX_FORMS +#if P_GEN_9_CROSS_EVOS +SINGLE_ANIMATION(Dipplin); +#endif //P_GEN_9_CROSS_EVOS +#endif //P_FAMILY_APPLIN +#if P_FAMILY_SILICOBRA +SINGLE_ANIMATION(Silicobra); +SINGLE_ANIMATION(Sandaconda); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(SandacondaGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SILICOBRA +#if P_FAMILY_CRAMORANT +SINGLE_ANIMATION(Cramorant); +#endif //P_FAMILY_CRAMORANT +#if P_FAMILY_ARROKUDA +SINGLE_ANIMATION(Arrokuda); +SINGLE_ANIMATION(Barraskewda); +#endif //P_FAMILY_ARROKUDA +#if P_FAMILY_TOXEL +SINGLE_ANIMATION(Toxel); +SINGLE_ANIMATION(Toxtricity); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(ToxtricityGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_TOXEL +#if P_FAMILY_SIZZLIPEDE +SINGLE_ANIMATION(Sizzlipede); +SINGLE_ANIMATION(Centiskorch); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(CentiskorchGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_SIZZLIPEDE +#if P_FAMILY_CLOBBOPUS +SINGLE_ANIMATION(Clobbopus); +SINGLE_ANIMATION(Grapploct); +#endif //P_FAMILY_CLOBBOPUS +#if P_FAMILY_SINISTEA +SINGLE_ANIMATION(Sinistea); +SINGLE_ANIMATION(Polteageist); +#endif //P_FAMILY_SINISTEA +#if P_FAMILY_HATENNA +SINGLE_ANIMATION(Hatenna); +SINGLE_ANIMATION(Hattrem); +SINGLE_ANIMATION(Hatterene); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(HattereneGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_HATENNA +#if P_FAMILY_IMPIDIMP +SINGLE_ANIMATION(Impidimp); +SINGLE_ANIMATION(Morgrem); +SINGLE_ANIMATION(Grimmsnarl); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(GrimmsnarlGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_IMPIDIMP +#if P_FAMILY_MILCERY +SINGLE_ANIMATION(Milcery); +SINGLE_ANIMATION(Alcremie); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(AlcremieGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_MILCERY +#if P_FAMILY_FALINKS +SINGLE_ANIMATION(Falinks); +#endif //P_FAMILY_FALINKS +#if P_FAMILY_PINCURCHIN +SINGLE_ANIMATION(Pincurchin); +#endif //P_FAMILY_PINCURCHIN +#if P_FAMILY_SNOM +SINGLE_ANIMATION(Snom); +SINGLE_ANIMATION(Frosmoth); +#endif //P_FAMILY_SNOM +#if P_FAMILY_STONJOURNER +SINGLE_ANIMATION(Stonjourner); +#endif //P_FAMILY_STONJOURNER +#if P_FAMILY_EISCUE +SINGLE_ANIMATION(Eiscue); +#endif //P_FAMILY_EISCUE +#if P_FAMILY_INDEEDEE +SINGLE_ANIMATION(Indeedee); +#endif //P_FAMILY_INDEEDEE +#if P_FAMILY_MORPEKO +SINGLE_ANIMATION(Morpeko); +#endif //P_FAMILY_MORPEKO +#if P_FAMILY_CUFANT +SINGLE_ANIMATION(Cufant); +SINGLE_ANIMATION(Copperajah); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(CopperajahGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_CUFANT +#if P_FAMILY_DRACOZOLT +SINGLE_ANIMATION(Dracozolt); +#endif //P_FAMILY_DRACOZOLT +#if P_FAMILY_ARCTOZOLT +SINGLE_ANIMATION(Arctozolt); +#endif //P_FAMILY_ARCTOZOLT +#if P_FAMILY_DRACOVISH +SINGLE_ANIMATION(Dracovish); +#endif //P_FAMILY_DRACOVISH +#if P_FAMILY_ARCTOVISH +SINGLE_ANIMATION(Arctovish); +#endif //P_FAMILY_ARCTOVISH +#if P_FAMILY_DURALUDON +SINGLE_ANIMATION(Duraludon); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(DuraludonGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_DURALUDON +#if P_FAMILY_DREEPY +SINGLE_ANIMATION(Dreepy); +SINGLE_ANIMATION(Drakloak); +SINGLE_ANIMATION(Dragapult); +#endif //P_FAMILY_DREEPY +#if P_FAMILY_ZACIAN +SINGLE_ANIMATION(Zacian); +#endif //P_FAMILY_ZACIAN +#if P_FAMILY_ZAMAZENTA +SINGLE_ANIMATION(Zamazenta); +#endif //P_FAMILY_ZAMAZENTA +#if P_FAMILY_ETERNATUS +SINGLE_ANIMATION(Eternatus); +#endif //P_FAMILY_ETERNATUS +#if P_FAMILY_KUBFU +SINGLE_ANIMATION(Kubfu); +SINGLE_ANIMATION(Urshifu); +#if P_GIGANTAMAX_FORMS +SINGLE_ANIMATION(UrshifuSingleStrikeStyleGigantamax); +SINGLE_ANIMATION(UrshifuRapidStrikeStyleGigantamax); +#endif //P_GIGANTAMAX_FORMS +#endif //P_FAMILY_KUBFU +#if P_FAMILY_ZARUDE +SINGLE_ANIMATION(Zarude); +#endif //P_FAMILY_ZARUDE +#if P_FAMILY_REGIELEKI +SINGLE_ANIMATION(Regieleki); +#endif //P_FAMILY_REGIELEKI +#if P_FAMILY_REGIDRAGO +SINGLE_ANIMATION(Regidrago); +#endif //P_FAMILY_REGIDRAGO +#if P_FAMILY_GLASTRIER +SINGLE_ANIMATION(Glastrier); +#endif //P_FAMILY_GLASTRIER +#if P_FAMILY_SPECTRIER +SINGLE_ANIMATION(Spectrier); +#endif //P_FAMILY_SPECTRIER +#if P_FAMILY_CALYREX +SINGLE_ANIMATION(Calyrex); +#endif //P_FAMILY_CALYREX +#if P_FAMILY_ENAMORUS +SINGLE_ANIMATION(EnamorusIncarnate); SINGLE_ANIMATION(EnamorusTherian); -#endif - -const union AnimCmd *const *const gMonFrontAnimsPtrTable[NUM_SPECIES + 1] = -{ - [SPECIES_NONE] = sAnims_None, - [SPECIES_BULBASAUR] = sAnims_Bulbasaur, - [SPECIES_IVYSAUR] = sAnims_Ivysaur, - [SPECIES_VENUSAUR] = sAnims_Venusaur, - [SPECIES_CHARMANDER] = sAnims_Charmander, - [SPECIES_CHARMELEON] = sAnims_Charmeleon, - [SPECIES_CHARIZARD] = sAnims_Charizard, - [SPECIES_SQUIRTLE] = sAnims_Squirtle, - [SPECIES_WARTORTLE] = sAnims_Wartortle, - [SPECIES_BLASTOISE] = sAnims_Blastoise, - [SPECIES_CATERPIE] = sAnims_Caterpie, - [SPECIES_METAPOD] = sAnims_Metapod, - [SPECIES_BUTTERFREE] = sAnims_Butterfree, - [SPECIES_WEEDLE] = sAnims_Weedle, - [SPECIES_KAKUNA] = sAnims_Kakuna, - [SPECIES_BEEDRILL] = sAnims_Beedrill, - [SPECIES_PIDGEY] = sAnims_Pidgey, - [SPECIES_PIDGEOTTO] = sAnims_Pidgeotto, - [SPECIES_PIDGEOT] = sAnims_Pidgeot, - [SPECIES_RATTATA] = sAnims_Rattata, - [SPECIES_RATICATE] = sAnims_Raticate, - [SPECIES_SPEAROW] = sAnims_Spearow, - [SPECIES_FEAROW] = sAnims_Fearow, - [SPECIES_EKANS] = sAnims_Ekans, - [SPECIES_ARBOK] = sAnims_Arbok, - [SPECIES_PIKACHU] = sAnims_Pikachu, - [SPECIES_RAICHU] = sAnims_Raichu, - [SPECIES_SANDSHREW] = sAnims_Sandshrew, - [SPECIES_SANDSLASH] = sAnims_Sandslash, - [SPECIES_NIDORAN_F] = sAnims_NidoranF, - [SPECIES_NIDORINA] = sAnims_Nidorina, - [SPECIES_NIDOQUEEN] = sAnims_Nidoqueen, - [SPECIES_NIDORAN_M] = sAnims_NidoranM, - [SPECIES_NIDORINO] = sAnims_Nidorino, - [SPECIES_NIDOKING] = sAnims_Nidoking, - [SPECIES_CLEFAIRY] = sAnims_Clefairy, - [SPECIES_CLEFABLE] = sAnims_Clefable, - [SPECIES_VULPIX] = sAnims_Vulpix, - [SPECIES_NINETALES] = sAnims_Ninetales, - [SPECIES_JIGGLYPUFF] = sAnims_Jigglypuff, - [SPECIES_WIGGLYTUFF] = sAnims_Wigglytuff, - [SPECIES_ZUBAT] = sAnims_Zubat, - [SPECIES_GOLBAT] = sAnims_Golbat, - [SPECIES_ODDISH] = sAnims_Oddish, - [SPECIES_GLOOM] = sAnims_Gloom, - [SPECIES_VILEPLUME] = sAnims_Vileplume, - [SPECIES_PARAS] = sAnims_Paras, - [SPECIES_PARASECT] = sAnims_Parasect, - [SPECIES_VENONAT] = sAnims_Venonat, - [SPECIES_VENOMOTH] = sAnims_Venomoth, - [SPECIES_DIGLETT] = sAnims_Diglett, - [SPECIES_DUGTRIO] = sAnims_Dugtrio, - [SPECIES_MEOWTH] = sAnims_Meowth, - [SPECIES_PERSIAN] = sAnims_Persian, - [SPECIES_PSYDUCK] = sAnims_Psyduck, - [SPECIES_GOLDUCK] = sAnims_Golduck, - [SPECIES_MANKEY] = sAnims_Mankey, - [SPECIES_PRIMEAPE] = sAnims_Primeape, - [SPECIES_GROWLITHE] = sAnims_Growlithe, - [SPECIES_ARCANINE] = sAnims_Arcanine, - [SPECIES_POLIWAG] = sAnims_Poliwag, - [SPECIES_POLIWHIRL] = sAnims_Poliwhirl, - [SPECIES_POLIWRATH] = sAnims_Poliwrath, - [SPECIES_ABRA] = sAnims_Abra, - [SPECIES_KADABRA] = sAnims_Kadabra, - [SPECIES_ALAKAZAM] = sAnims_Alakazam, - [SPECIES_MACHOP] = sAnims_Machop, - [SPECIES_MACHOKE] = sAnims_Machoke, - [SPECIES_MACHAMP] = sAnims_Machamp, - [SPECIES_BELLSPROUT] = sAnims_Bellsprout, - [SPECIES_WEEPINBELL] = sAnims_Weepinbell, - [SPECIES_VICTREEBEL] = sAnims_Victreebel, - [SPECIES_TENTACOOL] = sAnims_Tentacool, - [SPECIES_TENTACRUEL] = sAnims_Tentacruel, - [SPECIES_GEODUDE] = sAnims_Geodude, - [SPECIES_GRAVELER] = sAnims_Graveler, - [SPECIES_GOLEM] = sAnims_Golem, - [SPECIES_PONYTA] = sAnims_Ponyta, - [SPECIES_RAPIDASH] = sAnims_Rapidash, - [SPECIES_SLOWPOKE] = sAnims_Slowpoke, - [SPECIES_SLOWBRO] = sAnims_Slowbro, - [SPECIES_MAGNEMITE] = sAnims_Magnemite, - [SPECIES_MAGNETON] = sAnims_Magneton, - [SPECIES_FARFETCHD] = sAnims_Farfetchd, - [SPECIES_DODUO] = sAnims_Doduo, - [SPECIES_DODRIO] = sAnims_Dodrio, - [SPECIES_SEEL] = sAnims_Seel, - [SPECIES_DEWGONG] = sAnims_Dewgong, - [SPECIES_GRIMER] = sAnims_Grimer, - [SPECIES_MUK] = sAnims_Muk, - [SPECIES_SHELLDER] = sAnims_Shellder, - [SPECIES_CLOYSTER] = sAnims_Cloyster, - [SPECIES_GASTLY] = sAnims_Gastly, - [SPECIES_HAUNTER] = sAnims_Haunter, - [SPECIES_GENGAR] = sAnims_Gengar, - [SPECIES_ONIX] = sAnims_Onix, - [SPECIES_DROWZEE] = sAnims_Drowzee, - [SPECIES_HYPNO] = sAnims_Hypno, - [SPECIES_KRABBY] = sAnims_Krabby, - [SPECIES_KINGLER] = sAnims_Kingler, - [SPECIES_VOLTORB] = sAnims_Voltorb, - [SPECIES_ELECTRODE] = sAnims_Electrode, - [SPECIES_EXEGGCUTE] = sAnims_Exeggcute, - [SPECIES_EXEGGUTOR] = sAnims_Exeggutor, - [SPECIES_CUBONE] = sAnims_Cubone, - [SPECIES_MAROWAK] = sAnims_Marowak, - [SPECIES_HITMONLEE] = sAnims_Hitmonlee, - [SPECIES_HITMONCHAN] = sAnims_Hitmonchan, - [SPECIES_LICKITUNG] = sAnims_Lickitung, - [SPECIES_KOFFING] = sAnims_Koffing, - [SPECIES_WEEZING] = sAnims_Weezing, - [SPECIES_RHYHORN] = sAnims_Rhyhorn, - [SPECIES_RHYDON] = sAnims_Rhydon, - [SPECIES_CHANSEY] = sAnims_Chansey, - [SPECIES_TANGELA] = sAnims_Tangela, - [SPECIES_KANGASKHAN] = sAnims_Kangaskhan, - [SPECIES_HORSEA] = sAnims_Horsea, - [SPECIES_SEADRA] = sAnims_Seadra, - [SPECIES_GOLDEEN] = sAnims_Goldeen, - [SPECIES_SEAKING] = sAnims_Seaking, - [SPECIES_STARYU] = sAnims_Staryu, - [SPECIES_STARMIE] = sAnims_Starmie, - [SPECIES_MR_MIME] = sAnims_MrMime, - [SPECIES_SCYTHER] = sAnims_Scyther, - [SPECIES_JYNX] = sAnims_Jynx, - [SPECIES_ELECTABUZZ] = sAnims_Electabuzz, - [SPECIES_MAGMAR] = sAnims_Magmar, - [SPECIES_PINSIR] = sAnims_Pinsir, - [SPECIES_TAUROS] = sAnims_Tauros, - [SPECIES_MAGIKARP] = sAnims_Magikarp, - [SPECIES_GYARADOS] = sAnims_Gyarados, - [SPECIES_LAPRAS] = sAnims_Lapras, - [SPECIES_DITTO] = sAnims_Ditto, - [SPECIES_EEVEE] = sAnims_Eevee, - [SPECIES_VAPOREON] = sAnims_Vaporeon, - [SPECIES_JOLTEON] = sAnims_Jolteon, - [SPECIES_FLAREON] = sAnims_Flareon, - [SPECIES_PORYGON] = sAnims_Porygon, - [SPECIES_OMANYTE] = sAnims_Omanyte, - [SPECIES_OMASTAR] = sAnims_Omastar, - [SPECIES_KABUTO] = sAnims_Kabuto, - [SPECIES_KABUTOPS] = sAnims_Kabutops, - [SPECIES_AERODACTYL] = sAnims_Aerodactyl, - [SPECIES_SNORLAX] = sAnims_Snorlax, - [SPECIES_ARTICUNO] = sAnims_Articuno, - [SPECIES_ZAPDOS] = sAnims_Zapdos, - [SPECIES_MOLTRES] = sAnims_Moltres, - [SPECIES_DRATINI] = sAnims_Dratini, - [SPECIES_DRAGONAIR] = sAnims_Dragonair, - [SPECIES_DRAGONITE] = sAnims_Dragonite, - [SPECIES_MEWTWO] = sAnims_Mewtwo, - [SPECIES_MEW] = sAnims_Mew, - [SPECIES_CHIKORITA] = sAnims_Chikorita, - [SPECIES_BAYLEEF] = sAnims_Bayleef, - [SPECIES_MEGANIUM] = sAnims_Meganium, - [SPECIES_CYNDAQUIL] = sAnims_Cyndaquil, - [SPECIES_QUILAVA] = sAnims_Quilava, - [SPECIES_TYPHLOSION] = sAnims_Typhlosion, - [SPECIES_TOTODILE] = sAnims_Totodile, - [SPECIES_CROCONAW] = sAnims_Croconaw, - [SPECIES_FERALIGATR] = sAnims_Feraligatr, - [SPECIES_SENTRET] = sAnims_Sentret, - [SPECIES_FURRET] = sAnims_Furret, - [SPECIES_HOOTHOOT] = sAnims_Hoothoot, - [SPECIES_NOCTOWL] = sAnims_Noctowl, - [SPECIES_LEDYBA] = sAnims_Ledyba, - [SPECIES_LEDIAN] = sAnims_Ledian, - [SPECIES_SPINARAK] = sAnims_Spinarak, - [SPECIES_ARIADOS] = sAnims_Ariados, - [SPECIES_CROBAT] = sAnims_Crobat, - [SPECIES_CHINCHOU] = sAnims_Chinchou, - [SPECIES_LANTURN] = sAnims_Lanturn, - [SPECIES_PICHU] = sAnims_Pichu, - [SPECIES_CLEFFA] = sAnims_Cleffa, - [SPECIES_IGGLYBUFF] = sAnims_Igglybuff, - [SPECIES_TOGEPI] = sAnims_Togepi, - [SPECIES_TOGETIC] = sAnims_Togetic, - [SPECIES_NATU] = sAnims_Natu, - [SPECIES_XATU] = sAnims_Xatu, - [SPECIES_MAREEP] = sAnims_Mareep, - [SPECIES_FLAAFFY] = sAnims_Flaaffy, - [SPECIES_AMPHAROS] = sAnims_Ampharos, - [SPECIES_BELLOSSOM] = sAnims_Bellossom, - [SPECIES_MARILL] = sAnims_Marill, - [SPECIES_AZUMARILL] = sAnims_Azumarill, - [SPECIES_SUDOWOODO] = sAnims_Sudowoodo, - [SPECIES_POLITOED] = sAnims_Politoed, - [SPECIES_HOPPIP] = sAnims_Hoppip, - [SPECIES_SKIPLOOM] = sAnims_Skiploom, - [SPECIES_JUMPLUFF] = sAnims_Jumpluff, - [SPECIES_AIPOM] = sAnims_Aipom, - [SPECIES_SUNKERN] = sAnims_Sunkern, - [SPECIES_SUNFLORA] = sAnims_Sunflora, - [SPECIES_YANMA] = sAnims_Yanma, - [SPECIES_WOOPER] = sAnims_Wooper, - [SPECIES_QUAGSIRE] = sAnims_Quagsire, - [SPECIES_ESPEON] = sAnims_Espeon, - [SPECIES_UMBREON] = sAnims_Umbreon, - [SPECIES_MURKROW] = sAnims_Murkrow, - [SPECIES_SLOWKING] = sAnims_Slowking, - [SPECIES_MISDREAVUS] = sAnims_Misdreavus, - [SPECIES_UNOWN] = sAnims_Unown, - [SPECIES_WOBBUFFET] = sAnims_Wobbuffet, - [SPECIES_GIRAFARIG] = sAnims_Girafarig, - [SPECIES_PINECO] = sAnims_Pineco, - [SPECIES_FORRETRESS] = sAnims_Forretress, - [SPECIES_DUNSPARCE] = sAnims_Dunsparce, - [SPECIES_GLIGAR] = sAnims_Gligar, - [SPECIES_STEELIX] = sAnims_Steelix, - [SPECIES_SNUBBULL] = sAnims_Snubbull, - [SPECIES_GRANBULL] = sAnims_Granbull, - [SPECIES_QWILFISH] = sAnims_Qwilfish, - [SPECIES_SCIZOR] = sAnims_Scizor, - [SPECIES_SHUCKLE] = sAnims_Shuckle, - [SPECIES_HERACROSS] = sAnims_Heracross, - [SPECIES_SNEASEL] = sAnims_Sneasel, - [SPECIES_TEDDIURSA] = sAnims_Teddiursa, - [SPECIES_URSARING] = sAnims_Ursaring, - [SPECIES_SLUGMA] = sAnims_Slugma, - [SPECIES_MAGCARGO] = sAnims_Magcargo, - [SPECIES_SWINUB] = sAnims_Swinub, - [SPECIES_PILOSWINE] = sAnims_Piloswine, - [SPECIES_CORSOLA] = sAnims_Corsola, - [SPECIES_REMORAID] = sAnims_Remoraid, - [SPECIES_OCTILLERY] = sAnims_Octillery, - [SPECIES_DELIBIRD] = sAnims_Delibird, - [SPECIES_MANTINE] = sAnims_Mantine, - [SPECIES_SKARMORY] = sAnims_Skarmory, - [SPECIES_HOUNDOUR] = sAnims_Houndour, - [SPECIES_HOUNDOOM] = sAnims_Houndoom, - [SPECIES_KINGDRA] = sAnims_Kingdra, - [SPECIES_PHANPY] = sAnims_Phanpy, - [SPECIES_DONPHAN] = sAnims_Donphan, - [SPECIES_PORYGON2] = sAnims_Porygon2, - [SPECIES_STANTLER] = sAnims_Stantler, - [SPECIES_SMEARGLE] = sAnims_Smeargle, - [SPECIES_TYROGUE] = sAnims_Tyrogue, - [SPECIES_HITMONTOP] = sAnims_Hitmontop, - [SPECIES_SMOOCHUM] = sAnims_Smoochum, - [SPECIES_ELEKID] = sAnims_Elekid, - [SPECIES_MAGBY] = sAnims_Magby, - [SPECIES_MILTANK] = sAnims_Miltank, - [SPECIES_BLISSEY] = sAnims_Blissey, - [SPECIES_RAIKOU] = sAnims_Raikou, - [SPECIES_ENTEI] = sAnims_Entei, - [SPECIES_SUICUNE] = sAnims_Suicune, - [SPECIES_LARVITAR] = sAnims_Larvitar, - [SPECIES_PUPITAR] = sAnims_Pupitar, - [SPECIES_TYRANITAR] = sAnims_Tyranitar, - [SPECIES_LUGIA] = sAnims_Lugia, - [SPECIES_HO_OH] = sAnims_HoOh, - [SPECIES_CELEBI] = sAnims_Celebi, - [SPECIES_TREECKO] = sAnims_Treecko, - [SPECIES_GROVYLE] = sAnims_Grovyle, - [SPECIES_SCEPTILE] = sAnims_Sceptile, - [SPECIES_TORCHIC] = sAnims_Torchic, - [SPECIES_COMBUSKEN] = sAnims_Combusken, - [SPECIES_BLAZIKEN] = sAnims_Blaziken, - [SPECIES_MUDKIP] = sAnims_Mudkip, - [SPECIES_MARSHTOMP] = sAnims_Marshtomp, - [SPECIES_SWAMPERT] = sAnims_Swampert, - [SPECIES_POOCHYENA] = sAnims_Poochyena, - [SPECIES_MIGHTYENA] = sAnims_Mightyena, - [SPECIES_ZIGZAGOON] = sAnims_Zigzagoon, - [SPECIES_LINOONE] = sAnims_Linoone, - [SPECIES_WURMPLE] = sAnims_Wurmple, - [SPECIES_SILCOON] = sAnims_Silcoon, - [SPECIES_BEAUTIFLY] = sAnims_Beautifly, - [SPECIES_CASCOON] = sAnims_Cascoon, - [SPECIES_DUSTOX] = sAnims_Dustox, - [SPECIES_LOTAD] = sAnims_Lotad, - [SPECIES_LOMBRE] = sAnims_Lombre, - [SPECIES_LUDICOLO] = sAnims_Ludicolo, - [SPECIES_SEEDOT] = sAnims_Seedot, - [SPECIES_NUZLEAF] = sAnims_Nuzleaf, - [SPECIES_SHIFTRY] = sAnims_Shiftry, - [SPECIES_NINCADA] = sAnims_Nincada, - [SPECIES_NINJASK] = sAnims_Ninjask, - [SPECIES_SHEDINJA] = sAnims_Shedinja, - [SPECIES_TAILLOW] = sAnims_Taillow, - [SPECIES_SWELLOW] = sAnims_Swellow, - [SPECIES_SHROOMISH] = sAnims_Shroomish, - [SPECIES_BRELOOM] = sAnims_Breloom, - [SPECIES_SPINDA] = sAnims_Spinda, - [SPECIES_WINGULL] = sAnims_Wingull, - [SPECIES_PELIPPER] = sAnims_Pelipper, - [SPECIES_SURSKIT] = sAnims_Surskit, - [SPECIES_MASQUERAIN] = sAnims_Masquerain, - [SPECIES_WAILMER] = sAnims_Wailmer, - [SPECIES_WAILORD] = sAnims_Wailord, - [SPECIES_SKITTY] = sAnims_Skitty, - [SPECIES_DELCATTY] = sAnims_Delcatty, - [SPECIES_KECLEON] = sAnims_Kecleon, - [SPECIES_BALTOY] = sAnims_Baltoy, - [SPECIES_CLAYDOL] = sAnims_Claydol, - [SPECIES_NOSEPASS] = sAnims_Nosepass, - [SPECIES_TORKOAL] = sAnims_Torkoal, - [SPECIES_SABLEYE] = sAnims_Sableye, - [SPECIES_BARBOACH] = sAnims_Barboach, - [SPECIES_WHISCASH] = sAnims_Whiscash, - [SPECIES_LUVDISC] = sAnims_Luvdisc, - [SPECIES_CORPHISH] = sAnims_Corphish, - [SPECIES_CRAWDAUNT] = sAnims_Crawdaunt, - [SPECIES_FEEBAS] = sAnims_Feebas, - [SPECIES_MILOTIC] = sAnims_Milotic, - [SPECIES_CARVANHA] = sAnims_Carvanha, - [SPECIES_SHARPEDO] = sAnims_Sharpedo, - [SPECIES_TRAPINCH] = sAnims_Trapinch, - [SPECIES_VIBRAVA] = sAnims_Vibrava, - [SPECIES_FLYGON] = sAnims_Flygon, - [SPECIES_MAKUHITA] = sAnims_Makuhita, - [SPECIES_HARIYAMA] = sAnims_Hariyama, - [SPECIES_ELECTRIKE] = sAnims_Electrike, - [SPECIES_MANECTRIC] = sAnims_Manectric, - [SPECIES_NUMEL] = sAnims_Numel, - [SPECIES_CAMERUPT] = sAnims_Camerupt, - [SPECIES_SPHEAL] = sAnims_Spheal, - [SPECIES_SEALEO] = sAnims_Sealeo, - [SPECIES_WALREIN] = sAnims_Walrein, - [SPECIES_CACNEA] = sAnims_Cacnea, - [SPECIES_CACTURNE] = sAnims_Cacturne, - [SPECIES_SNORUNT] = sAnims_Snorunt, - [SPECIES_GLALIE] = sAnims_Glalie, - [SPECIES_LUNATONE] = sAnims_Lunatone, - [SPECIES_SOLROCK] = sAnims_Solrock, - [SPECIES_AZURILL] = sAnims_Azurill, - [SPECIES_SPOINK] = sAnims_Spoink, - [SPECIES_GRUMPIG] = sAnims_Grumpig, - [SPECIES_PLUSLE] = sAnims_Plusle, - [SPECIES_MINUN] = sAnims_Minun, - [SPECIES_MAWILE] = sAnims_Mawile, - [SPECIES_MEDITITE] = sAnims_Meditite, - [SPECIES_MEDICHAM] = sAnims_Medicham, - [SPECIES_SWABLU] = sAnims_Swablu, - [SPECIES_ALTARIA] = sAnims_Altaria, - [SPECIES_WYNAUT] = sAnims_Wynaut, - [SPECIES_DUSKULL] = sAnims_Duskull, - [SPECIES_DUSCLOPS] = sAnims_Dusclops, - [SPECIES_ROSELIA] = sAnims_Roselia, - [SPECIES_SLAKOTH] = sAnims_Slakoth, - [SPECIES_VIGOROTH] = sAnims_Vigoroth, - [SPECIES_SLAKING] = sAnims_Slaking, - [SPECIES_GULPIN] = sAnims_Gulpin, - [SPECIES_SWALOT] = sAnims_Swalot, - [SPECIES_TROPIUS] = sAnims_Tropius, - [SPECIES_WHISMUR] = sAnims_Whismur, - [SPECIES_LOUDRED] = sAnims_Loudred, - [SPECIES_EXPLOUD] = sAnims_Exploud, - [SPECIES_CLAMPERL] = sAnims_Clamperl, - [SPECIES_HUNTAIL] = sAnims_Huntail, - [SPECIES_GOREBYSS] = sAnims_Gorebyss, - [SPECIES_ABSOL] = sAnims_Absol, - [SPECIES_SHUPPET] = sAnims_Shuppet, - [SPECIES_BANETTE] = sAnims_Banette, - [SPECIES_SEVIPER] = sAnims_Seviper, - [SPECIES_ZANGOOSE] = sAnims_Zangoose, - [SPECIES_RELICANTH] = sAnims_Relicanth, - [SPECIES_ARON] = sAnims_Aron, - [SPECIES_LAIRON] = sAnims_Lairon, - [SPECIES_AGGRON] = sAnims_Aggron, - [SPECIES_CASTFORM] = sAnims_Castform, - [SPECIES_VOLBEAT] = sAnims_Volbeat, - [SPECIES_ILLUMISE] = sAnims_Illumise, - [SPECIES_LILEEP] = sAnims_Lileep, - [SPECIES_CRADILY] = sAnims_Cradily, - [SPECIES_ANORITH] = sAnims_Anorith, - [SPECIES_ARMALDO] = sAnims_Armaldo, - [SPECIES_RALTS] = sAnims_Ralts, - [SPECIES_KIRLIA] = sAnims_Kirlia, - [SPECIES_GARDEVOIR] = sAnims_Gardevoir, - [SPECIES_BAGON] = sAnims_Bagon, - [SPECIES_SHELGON] = sAnims_Shelgon, - [SPECIES_SALAMENCE] = sAnims_Salamence, - [SPECIES_BELDUM] = sAnims_Beldum, - [SPECIES_METANG] = sAnims_Metang, - [SPECIES_METAGROSS] = sAnims_Metagross, - [SPECIES_REGIROCK] = sAnims_Regirock, - [SPECIES_REGICE] = sAnims_Regice, - [SPECIES_REGISTEEL] = sAnims_Registeel, - [SPECIES_KYOGRE] = sAnims_Kyogre, - [SPECIES_GROUDON] = sAnims_Groudon, - [SPECIES_RAYQUAZA] = sAnims_Rayquaza, - [SPECIES_LATIAS] = sAnims_Latias, - [SPECIES_LATIOS] = sAnims_Latios, - [SPECIES_JIRACHI] = sAnims_Jirachi, - [SPECIES_DEOXYS] = sAnims_Deoxys, - [SPECIES_CHIMECHO] = sAnims_Chimecho, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_TURTWIG] = sAnims_Turtwig, - [SPECIES_GROTLE] = sAnims_Grotle, - [SPECIES_TORTERRA] = sAnims_Torterra, - [SPECIES_CHIMCHAR] = sAnims_Chimchar, - [SPECIES_MONFERNO] = sAnims_Monferno, - [SPECIES_INFERNAPE] = sAnims_Infernape, - [SPECIES_PIPLUP] = sAnims_Piplup, - [SPECIES_PRINPLUP] = sAnims_Prinplup, - [SPECIES_EMPOLEON] = sAnims_Empoleon, - [SPECIES_STARLY] = sAnims_Starly, - [SPECIES_STARAVIA] = sAnims_Staravia, - [SPECIES_STARAPTOR] = sAnims_Staraptor, - [SPECIES_BIDOOF] = sAnims_Bidoof, - [SPECIES_BIBAREL] = sAnims_Bibarel, - [SPECIES_KRICKETOT] = sAnims_Kricketot, - [SPECIES_KRICKETUNE] = sAnims_Kricketune, - [SPECIES_SHINX] = sAnims_Shinx, - [SPECIES_LUXIO] = sAnims_Luxio, - [SPECIES_LUXRAY] = sAnims_Luxray, - [SPECIES_BUDEW] = sAnims_Budew, - [SPECIES_ROSERADE] = sAnims_Roserade, - [SPECIES_CRANIDOS] = sAnims_Cranidos, - [SPECIES_RAMPARDOS] = sAnims_Rampardos, - [SPECIES_SHIELDON] = sAnims_Shieldon, - [SPECIES_BASTIODON] = sAnims_Bastiodon, - [SPECIES_BURMY] = sAnims_Burmy, - [SPECIES_WORMADAM] = sAnims_Wormadam, - [SPECIES_MOTHIM] = sAnims_Mothim, - [SPECIES_COMBEE] = sAnims_Combee, - [SPECIES_VESPIQUEN] = sAnims_Vespiquen, - [SPECIES_PACHIRISU] = sAnims_Pachirisu, - [SPECIES_BUIZEL] = sAnims_Buizel, - [SPECIES_FLOATZEL] = sAnims_Floatzel, - [SPECIES_CHERUBI] = sAnims_Cherubi, - [SPECIES_CHERRIM] = sAnims_CherrimOvercast, - [SPECIES_SHELLOS] = sAnims_Shellos, - [SPECIES_GASTRODON] = sAnims_Gastrodon, - [SPECIES_AMBIPOM] = sAnims_Ambipom, - [SPECIES_DRIFLOON] = sAnims_Drifloon, - [SPECIES_DRIFBLIM] = sAnims_Drifblim, - [SPECIES_BUNEARY] = sAnims_Buneary, - [SPECIES_LOPUNNY] = sAnims_Lopunny, - [SPECIES_MISMAGIUS] = sAnims_Mismagius, - [SPECIES_HONCHKROW] = sAnims_Honchkrow, - [SPECIES_GLAMEOW] = sAnims_Glameow, - [SPECIES_PURUGLY] = sAnims_Purugly, - [SPECIES_CHINGLING] = sAnims_Chingling, - [SPECIES_STUNKY] = sAnims_Stunky, - [SPECIES_SKUNTANK] = sAnims_Skuntank, - [SPECIES_BRONZOR] = sAnims_Bronzor, - [SPECIES_BRONZONG] = sAnims_Bronzong, - [SPECIES_BONSLY] = sAnims_Bonsly, - [SPECIES_MIME_JR] = sAnims_MimeJr, - [SPECIES_HAPPINY] = sAnims_Happiny, - [SPECIES_CHATOT] = sAnims_Chatot, - [SPECIES_SPIRITOMB] = sAnims_Spiritomb, - [SPECIES_GIBLE] = sAnims_Gible, - [SPECIES_GABITE] = sAnims_Gabite, - [SPECIES_GARCHOMP] = sAnims_Garchomp, - [SPECIES_MUNCHLAX] = sAnims_Munchlax, - [SPECIES_RIOLU] = sAnims_Riolu, - [SPECIES_LUCARIO] = sAnims_Lucario, - [SPECIES_HIPPOPOTAS] = sAnims_Hippopotas, - [SPECIES_HIPPOWDON] = sAnims_Hippowdon, - [SPECIES_SKORUPI] = sAnims_Skorupi, - [SPECIES_DRAPION] = sAnims_Drapion, - [SPECIES_CROAGUNK] = sAnims_Croagunk, - [SPECIES_TOXICROAK] = sAnims_Toxicroak, - [SPECIES_CARNIVINE] = sAnims_Carnivine, - [SPECIES_FINNEON] = sAnims_Finneon, - [SPECIES_LUMINEON] = sAnims_Lumineon, - [SPECIES_MANTYKE] = sAnims_Mantyke, - [SPECIES_SNOVER] = sAnims_Snover, - [SPECIES_ABOMASNOW] = sAnims_Abomasnow, - [SPECIES_WEAVILE] = sAnims_Weavile, - [SPECIES_MAGNEZONE] = sAnims_Magnezone, - [SPECIES_LICKILICKY] = sAnims_Lickilicky, - [SPECIES_RHYPERIOR] = sAnims_Rhyperior, - [SPECIES_TANGROWTH] = sAnims_Tangrowth, - [SPECIES_ELECTIVIRE] = sAnims_Electivire, - [SPECIES_MAGMORTAR] = sAnims_Magmortar, - [SPECIES_TOGEKISS] = sAnims_Togekiss, - [SPECIES_YANMEGA] = sAnims_Yanmega, - [SPECIES_LEAFEON] = sAnims_Leafeon, - [SPECIES_GLACEON] = sAnims_Glaceon, - [SPECIES_GLISCOR] = sAnims_Gliscor, - [SPECIES_MAMOSWINE] = sAnims_Mamoswine, - [SPECIES_PORYGON_Z] = sAnims_PORYGON_Z, - [SPECIES_GALLADE] = sAnims_Gallade, - [SPECIES_PROBOPASS] = sAnims_Probopass, - [SPECIES_DUSKNOIR] = sAnims_Dusknoir, - [SPECIES_FROSLASS] = sAnims_Froslass, - [SPECIES_ROTOM] = sAnims_Rotom, - [SPECIES_UXIE] = sAnims_Uxie, - [SPECIES_MESPRIT] = sAnims_Mesprit, - [SPECIES_AZELF] = sAnims_Azelf, - [SPECIES_DIALGA] = sAnims_Dialga, - [SPECIES_PALKIA] = sAnims_Palkia, - [SPECIES_HEATRAN] = sAnims_Heatran, - [SPECIES_REGIGIGAS] = sAnims_Regigigas, - [SPECIES_GIRATINA] = sAnims_Giratina, - [SPECIES_CRESSELIA] = sAnims_Cresselia, - [SPECIES_PHIONE] = sAnims_Phione, - [SPECIES_MANAPHY] = sAnims_Manaphy, - [SPECIES_DARKRAI] = sAnims_Darkrai, - [SPECIES_SHAYMIN] = sAnims_Shaymin, - [SPECIES_ARCEUS] = sAnims_Arceus, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_VICTINI] = sAnims_Victini, - [SPECIES_SNIVY] = sAnims_Snivy, - [SPECIES_SERVINE] = sAnims_Servine, - [SPECIES_SERPERIOR] = sAnims_Serperior, - [SPECIES_TEPIG] = sAnims_Tepig, - [SPECIES_PIGNITE] = sAnims_Pignite, - [SPECIES_EMBOAR] = sAnims_Emboar, - [SPECIES_OSHAWOTT] = sAnims_Oshawott, - [SPECIES_DEWOTT] = sAnims_Dewott, - [SPECIES_SAMUROTT] = sAnims_Samurott, - [SPECIES_PATRAT] = sAnims_Patrat, - [SPECIES_WATCHOG] = sAnims_Watchog, - [SPECIES_LILLIPUP] = sAnims_Lillipup, - [SPECIES_HERDIER] = sAnims_Herdier, - [SPECIES_STOUTLAND] = sAnims_Stoutland, - [SPECIES_PURRLOIN] = sAnims_Purrloin, - [SPECIES_LIEPARD] = sAnims_Liepard, - [SPECIES_PANSAGE] = sAnims_Pansage, - [SPECIES_SIMISAGE] = sAnims_Simisage, - [SPECIES_PANSEAR] = sAnims_Pansear, - [SPECIES_SIMISEAR] = sAnims_Simisear, - [SPECIES_PANPOUR] = sAnims_Panpour, - [SPECIES_SIMIPOUR] = sAnims_Simipour, - [SPECIES_MUNNA] = sAnims_Munna, - [SPECIES_MUSHARNA] = sAnims_Musharna, - [SPECIES_PIDOVE] = sAnims_Pidove, - [SPECIES_TRANQUILL] = sAnims_Tranquill, - [SPECIES_UNFEZANT] = sAnims_Unfezant, - [SPECIES_BLITZLE] = sAnims_Blitzle, - [SPECIES_ZEBSTRIKA] = sAnims_Zebstrika, - [SPECIES_ROGGENROLA] = sAnims_Roggenrola, - [SPECIES_BOLDORE] = sAnims_Boldore, - [SPECIES_GIGALITH] = sAnims_Gigalith, - [SPECIES_WOOBAT] = sAnims_Woobat, - [SPECIES_SWOOBAT] = sAnims_Swoobat, - [SPECIES_DRILBUR] = sAnims_Drilbur, - [SPECIES_EXCADRILL] = sAnims_Excadrill, - [SPECIES_AUDINO] = sAnims_Audino, - [SPECIES_TIMBURR] = sAnims_Timburr, - [SPECIES_GURDURR] = sAnims_Gurdurr, - [SPECIES_CONKELDURR] = sAnims_Conkeldurr, - [SPECIES_TYMPOLE] = sAnims_Tympole, - [SPECIES_PALPITOAD] = sAnims_Palpitoad, - [SPECIES_SEISMITOAD] = sAnims_Seismitoad, - [SPECIES_THROH] = sAnims_Throh, - [SPECIES_SAWK] = sAnims_Sawk, - [SPECIES_SEWADDLE] = sAnims_Sewaddle, - [SPECIES_SWADLOON] = sAnims_Swadloon, - [SPECIES_LEAVANNY] = sAnims_Leavanny, - [SPECIES_VENIPEDE] = sAnims_Venipede, - [SPECIES_WHIRLIPEDE] = sAnims_Whirlipede, - [SPECIES_SCOLIPEDE] = sAnims_Scolipede, - [SPECIES_COTTONEE] = sAnims_Cottonee, - [SPECIES_WHIMSICOTT] = sAnims_Whimsicott, - [SPECIES_PETILIL] = sAnims_Petilil, - [SPECIES_LILLIGANT] = sAnims_Lilligant, - [SPECIES_BASCULIN] = sAnims_Basculin, - [SPECIES_SANDILE] = sAnims_Sandile, - [SPECIES_KROKOROK] = sAnims_Krokorok, - [SPECIES_KROOKODILE] = sAnims_Krookodile, - [SPECIES_DARUMAKA] = sAnims_Darumaka, - [SPECIES_DARMANITAN] = sAnims_Darmanitan, - [SPECIES_MARACTUS] = sAnims_Maractus, - [SPECIES_DWEBBLE] = sAnims_Dwebble, - [SPECIES_CRUSTLE] = sAnims_Crustle, - [SPECIES_SCRAGGY] = sAnims_Scraggy, - [SPECIES_SCRAFTY] = sAnims_Scrafty, - [SPECIES_SIGILYPH] = sAnims_Sigilyph, - [SPECIES_YAMASK] = sAnims_Yamask, - [SPECIES_COFAGRIGUS] = sAnims_Cofagrigus, - [SPECIES_TIRTOUGA] = sAnims_Tirtouga, - [SPECIES_CARRACOSTA] = sAnims_Carracosta, - [SPECIES_ARCHEN] = sAnims_Archen, - [SPECIES_ARCHEOPS] = sAnims_Archeops, - [SPECIES_TRUBBISH] = sAnims_Trubbish, - [SPECIES_GARBODOR] = sAnims_Garbodor, - [SPECIES_ZORUA] = sAnims_Zorua, - [SPECIES_ZOROARK] = sAnims_Zoroark, - [SPECIES_MINCCINO] = sAnims_Minccino, - [SPECIES_CINCCINO] = sAnims_Cinccino, - [SPECIES_GOTHITA] = sAnims_Gothita, - [SPECIES_GOTHORITA] = sAnims_Gothorita, - [SPECIES_GOTHITELLE] = sAnims_Gothitelle, - [SPECIES_SOLOSIS] = sAnims_Solosis, - [SPECIES_DUOSION] = sAnims_Duosion, - [SPECIES_REUNICLUS] = sAnims_Reuniclus, - [SPECIES_DUCKLETT] = sAnims_Ducklett, - [SPECIES_SWANNA] = sAnims_Swanna, - [SPECIES_VANILLITE] = sAnims_Vanillite, - [SPECIES_VANILLISH] = sAnims_Vanillish, - [SPECIES_VANILLUXE] = sAnims_Vanilluxe, - [SPECIES_DEERLING] = sAnims_Deerling, - [SPECIES_SAWSBUCK] = sAnims_Sawsbuck, - [SPECIES_EMOLGA] = sAnims_Emolga, - [SPECIES_KARRABLAST] = sAnims_Karrablast, - [SPECIES_ESCAVALIER] = sAnims_Escavalier, - [SPECIES_FOONGUS] = sAnims_Foongus, - [SPECIES_AMOONGUSS] = sAnims_Amoonguss, - [SPECIES_FRILLISH] = sAnims_Frillish, - [SPECIES_JELLICENT] = sAnims_Jellicent, - [SPECIES_ALOMOMOLA] = sAnims_Alomomola, - [SPECIES_JOLTIK] = sAnims_Joltik, - [SPECIES_GALVANTULA] = sAnims_Galvantula, - [SPECIES_FERROSEED] = sAnims_Ferroseed, - [SPECIES_FERROTHORN] = sAnims_Ferrothorn, - [SPECIES_KLINK] = sAnims_Klink, - [SPECIES_KLANG] = sAnims_Klang, - [SPECIES_KLINKLANG] = sAnims_Klinklang, - [SPECIES_TYNAMO] = sAnims_Tynamo, - [SPECIES_EELEKTRIK] = sAnims_Eelektrik, - [SPECIES_EELEKTROSS] = sAnims_Eelektross, - [SPECIES_ELGYEM] = sAnims_Elgyem, - [SPECIES_BEHEEYEM] = sAnims_Beheeyem, - [SPECIES_LITWICK] = sAnims_Litwick, - [SPECIES_LAMPENT] = sAnims_Lampent, - [SPECIES_CHANDELURE] = sAnims_Chandelure, - [SPECIES_AXEW] = sAnims_Axew, - [SPECIES_FRAXURE] = sAnims_Fraxure, - [SPECIES_HAXORUS] = sAnims_Haxorus, - [SPECIES_CUBCHOO] = sAnims_Cubchoo, - [SPECIES_BEARTIC] = sAnims_Beartic, - [SPECIES_CRYOGONAL] = sAnims_Cryogonal, - [SPECIES_SHELMET] = sAnims_Shelmet, - [SPECIES_ACCELGOR] = sAnims_Accelgor, - [SPECIES_STUNFISK] = sAnims_Stunfisk, - [SPECIES_MIENFOO] = sAnims_Mienfoo, - [SPECIES_MIENSHAO] = sAnims_Mienshao, - [SPECIES_DRUDDIGON] = sAnims_Druddigon, - [SPECIES_GOLETT] = sAnims_Golett, - [SPECIES_GOLURK] = sAnims_Golurk, - [SPECIES_PAWNIARD] = sAnims_Pawniard, - [SPECIES_BISHARP] = sAnims_Bisharp, - [SPECIES_BOUFFALANT] = sAnims_Bouffalant, - [SPECIES_RUFFLET] = sAnims_Rufflet, - [SPECIES_BRAVIARY] = sAnims_Braviary, - [SPECIES_VULLABY] = sAnims_Vullaby, - [SPECIES_MANDIBUZZ] = sAnims_Mandibuzz, - [SPECIES_HEATMOR] = sAnims_Heatmor, - [SPECIES_DURANT] = sAnims_Durant, - [SPECIES_DEINO] = sAnims_Deino, - [SPECIES_ZWEILOUS] = sAnims_Zweilous, - [SPECIES_HYDREIGON] = sAnims_Hydreigon, - [SPECIES_LARVESTA] = sAnims_Larvesta, - [SPECIES_VOLCARONA] = sAnims_Volcarona, - [SPECIES_COBALION] = sAnims_Cobalion, - [SPECIES_TERRAKION] = sAnims_Terrakion, - [SPECIES_VIRIZION] = sAnims_Virizion, - [SPECIES_TORNADUS] = sAnims_Tornadus, - [SPECIES_THUNDURUS] = sAnims_Thundurus, - [SPECIES_RESHIRAM] = sAnims_Reshiram, - [SPECIES_ZEKROM] = sAnims_Zekrom, - [SPECIES_LANDORUS] = sAnims_Landorus, - [SPECIES_KYUREM] = sAnims_Kyurem, - [SPECIES_KELDEO] = sAnims_Keldeo, - [SPECIES_MELOETTA] = sAnims_Meloetta, - [SPECIES_GENESECT] = sAnims_Genesect, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_CHESPIN] = sAnims_Chespin, - [SPECIES_QUILLADIN] = sAnims_Quilladin, - [SPECIES_CHESNAUGHT] = sAnims_Chesnaught, - [SPECIES_FENNEKIN] = sAnims_Fennekin, - [SPECIES_BRAIXEN] = sAnims_Braixen, - [SPECIES_DELPHOX] = sAnims_Delphox, - [SPECIES_FROAKIE] = sAnims_Froakie, - [SPECIES_FROGADIER] = sAnims_Frogadier, - [SPECIES_GRENINJA] = sAnims_Greninja, - [SPECIES_BUNNELBY] = sAnims_Bunnelby, - [SPECIES_DIGGERSBY] = sAnims_Diggersby, - [SPECIES_FLETCHLING] = sAnims_Fletchling, - [SPECIES_FLETCHINDER] = sAnims_Fletchinder, - [SPECIES_TALONFLAME] = sAnims_Talonflame, - [SPECIES_SCATTERBUG] = sAnims_Scatterbug, - [SPECIES_SPEWPA] = sAnims_Spewpa, - [SPECIES_VIVILLON] = sAnims_Vivillon, - [SPECIES_LITLEO] = sAnims_Litleo, - [SPECIES_PYROAR] = sAnims_Pyroar, - [SPECIES_FLABEBE] = sAnims_Flabebe, - [SPECIES_FLOETTE] = sAnims_Floette, - [SPECIES_FLORGES] = sAnims_Florges, - [SPECIES_SKIDDO] = sAnims_Skiddo, - [SPECIES_GOGOAT] = sAnims_Gogoat, - [SPECIES_PANCHAM] = sAnims_Pancham, - [SPECIES_PANGORO] = sAnims_Pangoro, - [SPECIES_FURFROU] = sAnims_Furfrou, - [SPECIES_ESPURR] = sAnims_Espurr, - [SPECIES_MEOWSTIC] = sAnims_Meowstic, - [SPECIES_HONEDGE] = sAnims_Honedge, - [SPECIES_DOUBLADE] = sAnims_Doublade, - [SPECIES_AEGISLASH] = sAnims_Aegislash, - [SPECIES_SPRITZEE] = sAnims_Spritzee, - [SPECIES_AROMATISSE] = sAnims_Aromatisse, - [SPECIES_SWIRLIX] = sAnims_Swirlix, - [SPECIES_SLURPUFF] = sAnims_Slurpuff, - [SPECIES_INKAY] = sAnims_Inkay, - [SPECIES_MALAMAR] = sAnims_Malamar, - [SPECIES_BINACLE] = sAnims_Binacle, - [SPECIES_BARBARACLE] = sAnims_Barbaracle, - [SPECIES_SKRELP] = sAnims_Skrelp, - [SPECIES_DRAGALGE] = sAnims_Dragalge, - [SPECIES_CLAUNCHER] = sAnims_Clauncher, - [SPECIES_CLAWITZER] = sAnims_Clawitzer, - [SPECIES_HELIOPTILE] = sAnims_Helioptile, - [SPECIES_HELIOLISK] = sAnims_Heliolisk, - [SPECIES_TYRUNT] = sAnims_Tyrunt, - [SPECIES_TYRANTRUM] = sAnims_Tyrantrum, - [SPECIES_AMAURA] = sAnims_Amaura, - [SPECIES_AURORUS] = sAnims_Aurorus, - [SPECIES_SYLVEON] = sAnims_Sylveon, - [SPECIES_HAWLUCHA] = sAnims_Hawlucha, - [SPECIES_DEDENNE] = sAnims_Dedenne, - [SPECIES_CARBINK] = sAnims_Carbink, - [SPECIES_GOOMY] = sAnims_Goomy, - [SPECIES_SLIGGOO] = sAnims_Sliggoo, - [SPECIES_GOODRA] = sAnims_Goodra, - [SPECIES_KLEFKI] = sAnims_Klefki, - [SPECIES_PHANTUMP] = sAnims_Phantump, - [SPECIES_TREVENANT] = sAnims_Trevenant, - [SPECIES_PUMPKABOO] = sAnims_Pumpkaboo, - [SPECIES_GOURGEIST] = sAnims_Gourgeist, - [SPECIES_BERGMITE] = sAnims_Bergmite, - [SPECIES_AVALUGG] = sAnims_Avalugg, - [SPECIES_NOIBAT] = sAnims_Noibat, - [SPECIES_NOIVERN] = sAnims_Noivern, - [SPECIES_XERNEAS] = sAnims_Xerneas, - [SPECIES_YVELTAL] = sAnims_Yveltal, - [SPECIES_ZYGARDE] = sAnims_Zygarde, - [SPECIES_DIANCIE] = sAnims_Diancie, - [SPECIES_HOOPA] = sAnims_Hoopa, - [SPECIES_VOLCANION] = sAnims_Volcanion, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_ROWLET] = sAnims_Rowlet, - [SPECIES_DARTRIX] = sAnims_Dartrix, - [SPECIES_DECIDUEYE] = sAnims_Decidueye, - [SPECIES_LITTEN] = sAnims_Litten, - [SPECIES_TORRACAT] = sAnims_Torracat, - [SPECIES_INCINEROAR] = sAnims_Incineroar, - [SPECIES_POPPLIO] = sAnims_Popplio, - [SPECIES_BRIONNE] = sAnims_Brionne, - [SPECIES_PRIMARINA] = sAnims_Primarina, - [SPECIES_PIKIPEK] = sAnims_Pikipek, - [SPECIES_TRUMBEAK] = sAnims_Trumbeak, - [SPECIES_TOUCANNON] = sAnims_Toucannon, - [SPECIES_YUNGOOS] = sAnims_Yungoos, - [SPECIES_GUMSHOOS] = sAnims_Gumshoos, - [SPECIES_GRUBBIN] = sAnims_Grubbin, - [SPECIES_CHARJABUG] = sAnims_Charjabug, - [SPECIES_VIKAVOLT] = sAnims_Vikavolt, - [SPECIES_CRABRAWLER] = sAnims_Crabrawler, - [SPECIES_CRABOMINABLE] = sAnims_Crabominable, - [SPECIES_ORICORIO] = sAnims_Oricorio, - [SPECIES_CUTIEFLY] = sAnims_Cutiefly, - [SPECIES_RIBOMBEE] = sAnims_Ribombee, - [SPECIES_ROCKRUFF] = sAnims_Rockruff, - [SPECIES_LYCANROC] = sAnims_Lycanroc, - [SPECIES_WISHIWASHI] = sAnims_Wishiwashi, - [SPECIES_MAREANIE] = sAnims_Mareanie, - [SPECIES_TOXAPEX] = sAnims_Toxapex, - [SPECIES_MUDBRAY] = sAnims_Mudbray, - [SPECIES_MUDSDALE] = sAnims_Mudsdale, - [SPECIES_DEWPIDER] = sAnims_Dewpider, - [SPECIES_ARAQUANID] = sAnims_Araquanid, - [SPECIES_FOMANTIS] = sAnims_Fomantis, - [SPECIES_LURANTIS] = sAnims_Lurantis, - [SPECIES_MORELULL] = sAnims_Morelull, - [SPECIES_SHIINOTIC] = sAnims_Shiinotic, - [SPECIES_SALANDIT] = sAnims_Salandit, - [SPECIES_SALAZZLE] = sAnims_Salazzle, - [SPECIES_STUFFUL] = sAnims_Stufful, - [SPECIES_BEWEAR] = sAnims_Bewear, - [SPECIES_BOUNSWEET] = sAnims_Bounsweet, - [SPECIES_STEENEE] = sAnims_Steenee, - [SPECIES_TSAREENA] = sAnims_Tsareena, - [SPECIES_COMFEY] = sAnims_Comfey, - [SPECIES_ORANGURU] = sAnims_Oranguru, - [SPECIES_PASSIMIAN] = sAnims_Passimian, - [SPECIES_WIMPOD] = sAnims_Wimpod, - [SPECIES_GOLISOPOD] = sAnims_Golisopod, - [SPECIES_SANDYGAST] = sAnims_Sandygast, - [SPECIES_PALOSSAND] = sAnims_Palossand, - [SPECIES_PYUKUMUKU] = sAnims_Pyukumuku, - [SPECIES_TYPE_NULL] = sAnims_TypeNull, - [SPECIES_SILVALLY] = sAnims_Silvally, - [SPECIES_MINIOR] = sAnims_Minior, - [SPECIES_KOMALA] = sAnims_Komala, - [SPECIES_TURTONATOR] = sAnims_Turtonator, - [SPECIES_TOGEDEMARU] = sAnims_Togedemaru, - [SPECIES_MIMIKYU] = sAnims_Mimikyu, - [SPECIES_BRUXISH] = sAnims_Bruxish, - [SPECIES_DRAMPA] = sAnims_Drampa, - [SPECIES_DHELMISE] = sAnims_Dhelmise, - [SPECIES_JANGMO_O] = sAnims_JANGMO_O, - [SPECIES_HAKAMO_O] = sAnims_HAKAMO_O, - [SPECIES_KOMMO_O] = sAnims_KOMMO_O, - [SPECIES_TAPU_KOKO] = sAnims_TapuKoko, - [SPECIES_TAPU_LELE] = sAnims_TapuLele, - [SPECIES_TAPU_BULU] = sAnims_TapuBulu, - [SPECIES_TAPU_FINI] = sAnims_TapuFini, - [SPECIES_COSMOG] = sAnims_Cosmog, - [SPECIES_COSMOEM] = sAnims_Cosmoem, - [SPECIES_SOLGALEO] = sAnims_Solgaleo, - [SPECIES_LUNALA] = sAnims_Lunala, - [SPECIES_NIHILEGO] = sAnims_Nihilego, - [SPECIES_BUZZWOLE] = sAnims_Buzzwole, - [SPECIES_PHEROMOSA] = sAnims_Pheromosa, - [SPECIES_XURKITREE] = sAnims_Xurkitree, - [SPECIES_CELESTEELA] = sAnims_Celesteela, - [SPECIES_KARTANA] = sAnims_Kartana, - [SPECIES_GUZZLORD] = sAnims_Guzzlord, - [SPECIES_NECROZMA] = sAnims_Necrozma, - [SPECIES_MAGEARNA] = sAnims_Magearna, - [SPECIES_MARSHADOW] = sAnims_Marshadow, - [SPECIES_POIPOLE] = sAnims_Poipole, - [SPECIES_NAGANADEL] = sAnims_Naganadel, - [SPECIES_STAKATAKA] = sAnims_Stakataka, - [SPECIES_BLACEPHALON] = sAnims_Blacephalon, - [SPECIES_ZERAORA] = sAnims_Zeraora, - [SPECIES_MELTAN] = sAnims_Meltan, - [SPECIES_MELMETAL] = sAnims_Melmetal, -#endif -#if P_GEN_8_POKEMON == TRUE - [SPECIES_GROOKEY] = sAnims_Grookey, - [SPECIES_THWACKEY] = sAnims_Thwackey, - [SPECIES_RILLABOOM] = sAnims_Rillaboom, - [SPECIES_SCORBUNNY] = sAnims_Scorbunny, - [SPECIES_RABOOT] = sAnims_Raboot, - [SPECIES_CINDERACE] = sAnims_Cinderace, - [SPECIES_SOBBLE] = sAnims_Sobble, - [SPECIES_DRIZZILE] = sAnims_Drizzile, - [SPECIES_INTELEON] = sAnims_Inteleon, - [SPECIES_SKWOVET] = sAnims_Skwovet, - [SPECIES_GREEDENT] = sAnims_Greedent, - [SPECIES_ROOKIDEE] = sAnims_Rookidee, - [SPECIES_CORVISQUIRE] = sAnims_Corvisquire, - [SPECIES_CORVIKNIGHT] = sAnims_Corviknight, - [SPECIES_BLIPBUG] = sAnims_Blipbug, - [SPECIES_DOTTLER] = sAnims_Dottler, - [SPECIES_ORBEETLE] = sAnims_Orbeetle, - [SPECIES_NICKIT] = sAnims_Nickit, - [SPECIES_THIEVUL] = sAnims_Thievul, - [SPECIES_GOSSIFLEUR] = sAnims_Gossifleur, - [SPECIES_ELDEGOSS] = sAnims_Eldegoss, - [SPECIES_WOOLOO] = sAnims_Wooloo, - [SPECIES_DUBWOOL] = sAnims_Dubwool, - [SPECIES_CHEWTLE] = sAnims_Chewtle, - [SPECIES_DREDNAW] = sAnims_Drednaw, - [SPECIES_YAMPER] = sAnims_Yamper, - [SPECIES_BOLTUND] = sAnims_Boltund, - [SPECIES_ROLYCOLY] = sAnims_Rolycoly, - [SPECIES_CARKOL] = sAnims_Carkol, - [SPECIES_COALOSSAL] = sAnims_Coalossal, - [SPECIES_APPLIN] = sAnims_Applin, - [SPECIES_FLAPPLE] = sAnims_Flapple, - [SPECIES_APPLETUN] = sAnims_Appletun, - [SPECIES_SILICOBRA] = sAnims_Silicobra, - [SPECIES_SANDACONDA] = sAnims_Sandaconda, - [SPECIES_CRAMORANT] = sAnims_Cramorant, - [SPECIES_ARROKUDA] = sAnims_Arrokuda, - [SPECIES_BARRASKEWDA] = sAnims_Barraskewda, - [SPECIES_TOXEL] = sAnims_Toxel, - [SPECIES_TOXTRICITY] = sAnims_Toxtricity, - [SPECIES_SIZZLIPEDE] = sAnims_Sizzlipede, - [SPECIES_CENTISKORCH] = sAnims_Centiskorch, - [SPECIES_CLOBBOPUS] = sAnims_Clobbopus, - [SPECIES_GRAPPLOCT] = sAnims_Grapploct, - [SPECIES_SINISTEA] = sAnims_Sinistea, - [SPECIES_POLTEAGEIST] = sAnims_Polteageist, - [SPECIES_HATENNA] = sAnims_Hatenna, - [SPECIES_HATTREM] = sAnims_Hattrem, - [SPECIES_HATTERENE] = sAnims_Hatterene, - [SPECIES_IMPIDIMP] = sAnims_Impidimp, - [SPECIES_MORGREM] = sAnims_Morgrem, - [SPECIES_GRIMMSNARL] = sAnims_Grimmsnarl, - [SPECIES_OBSTAGOON] = sAnims_Obstagoon, - [SPECIES_PERRSERKER] = sAnims_Perrserker, - [SPECIES_CURSOLA] = sAnims_Cursola, - [SPECIES_SIRFETCHD] = sAnims_Sirfetchd, - [SPECIES_MR_RIME] = sAnims_MrRime, - [SPECIES_RUNERIGUS] = sAnims_Runerigus, - [SPECIES_MILCERY] = sAnims_Milcery, - [SPECIES_ALCREMIE] = sAnims_Alcremie, - [SPECIES_FALINKS] = sAnims_Falinks, - [SPECIES_PINCURCHIN] = sAnims_Pincurchin, - [SPECIES_SNOM] = sAnims_Snom, - [SPECIES_FROSMOTH] = sAnims_Frosmoth, - [SPECIES_STONJOURNER] = sAnims_Stonjourner, - [SPECIES_EISCUE] = sAnims_Eiscue, - [SPECIES_INDEEDEE] = sAnims_Indeedee, - [SPECIES_MORPEKO] = sAnims_Morpeko, - [SPECIES_CUFANT] = sAnims_Cufant, - [SPECIES_COPPERAJAH] = sAnims_Copperajah, - [SPECIES_DRACOZOLT] = sAnims_Dracozolt, - [SPECIES_ARCTOZOLT] = sAnims_Arctozolt, - [SPECIES_DRACOVISH] = sAnims_Dracovish, - [SPECIES_ARCTOVISH] = sAnims_Arctovish, - [SPECIES_DURALUDON] = sAnims_Duraludon, - [SPECIES_DREEPY] = sAnims_Dreepy, - [SPECIES_DRAKLOAK] = sAnims_Drakloak, - [SPECIES_DRAGAPULT] = sAnims_Dragapult, - [SPECIES_ZACIAN] = sAnims_Zacian, - [SPECIES_ZAMAZENTA] = sAnims_Zamazenta, - [SPECIES_ETERNATUS] = sAnims_Eternatus, - [SPECIES_KUBFU] = sAnims_Kubfu, - [SPECIES_URSHIFU] = sAnims_Urshifu, - [SPECIES_ZARUDE] = sAnims_Zarude, - [SPECIES_REGIELEKI] = sAnims_Regieleki, - [SPECIES_REGIDRAGO] = sAnims_Regidrago, - [SPECIES_GLASTRIER] = sAnims_Glastrier, - [SPECIES_SPECTRIER] = sAnims_Spectrier, - [SPECIES_CALYREX] = sAnims_Calyrex, - [SPECIES_WYRDEER] = sAnims_Wyrdeer, - [SPECIES_KLEAVOR] = sAnims_Kleavor, - [SPECIES_URSALUNA] = sAnims_Ursaluna, - [SPECIES_BASCULEGION] = sAnims_Basculegion, - [SPECIES_SNEASLER] = sAnims_Sneasler, - [SPECIES_OVERQWIL] = sAnims_Overqwil, - [SPECIES_ENAMORUS] = sAnims_Enamorus, -#endif - [SPECIES_VENUSAUR_MEGA] = sAnims_VenusaurMega, - [SPECIES_CHARIZARD_MEGA_X] = sAnims_CHARIZARD_MEGA_X, - [SPECIES_CHARIZARD_MEGA_Y] = sAnims_CHARIZARD_MEGA_Y, - [SPECIES_BLASTOISE_MEGA] = sAnims_BlastoiseMega, - [SPECIES_BEEDRILL_MEGA] = sAnims_BeedrillMega, - [SPECIES_PIDGEOT_MEGA] = sAnims_PidgeotMega, - [SPECIES_ALAKAZAM_MEGA] = sAnims_AlakazamMega, - [SPECIES_SLOWBRO_MEGA] = sAnims_SlowbroMega, - [SPECIES_GENGAR_MEGA] = sAnims_GengarMega, - [SPECIES_KANGASKHAN_MEGA] = sAnims_KangaskhanMega, - [SPECIES_PINSIR_MEGA] = sAnims_PinsirMega, - [SPECIES_GYARADOS_MEGA] = sAnims_GyaradosMega, - [SPECIES_AERODACTYL_MEGA] = sAnims_AerodactylMega, - [SPECIES_MEWTWO_MEGA_X] = sAnims_MEWTWO_MEGA_X, - [SPECIES_MEWTWO_MEGA_Y] = sAnims_MEWTWO_MEGA_Y, - [SPECIES_AMPHAROS_MEGA] = sAnims_AmpharosMega, - [SPECIES_STEELIX_MEGA] = sAnims_SteelixMega, - [SPECIES_SCIZOR_MEGA] = sAnims_ScizorMega, - [SPECIES_HERACROSS_MEGA] = sAnims_HeracrossMega, - [SPECIES_HOUNDOOM_MEGA] = sAnims_HoundoomMega, - [SPECIES_TYRANITAR_MEGA] = sAnims_TyranitarMega, - [SPECIES_SCEPTILE_MEGA] = sAnims_SceptileMega, - [SPECIES_BLAZIKEN_MEGA] = sAnims_BlazikenMega, - [SPECIES_SWAMPERT_MEGA] = sAnims_SwampertMega, - [SPECIES_GARDEVOIR_MEGA] = sAnims_GardevoirMega, - [SPECIES_SABLEYE_MEGA] = sAnims_SableyeMega, - [SPECIES_MAWILE_MEGA] = sAnims_MawileMega, - [SPECIES_AGGRON_MEGA] = sAnims_AggronMega, - [SPECIES_MEDICHAM_MEGA] = sAnims_MedichamMega, - [SPECIES_MANECTRIC_MEGA] = sAnims_ManectricMega, - [SPECIES_SHARPEDO_MEGA] = sAnims_SharpedoMega, - [SPECIES_CAMERUPT_MEGA] = sAnims_CameruptMega, - [SPECIES_ALTARIA_MEGA] = sAnims_AltariaMega, - [SPECIES_BANETTE_MEGA] = sAnims_BanetteMega, - [SPECIES_ABSOL_MEGA] = sAnims_AbsolMega, - [SPECIES_GLALIE_MEGA] = sAnims_GlalieMega, - [SPECIES_SALAMENCE_MEGA] = sAnims_SalamenceMega, - [SPECIES_METAGROSS_MEGA] = sAnims_MetagrossMega, - [SPECIES_LATIAS_MEGA] = sAnims_LatiasMega, - [SPECIES_LATIOS_MEGA] = sAnims_LatiosMega, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_LOPUNNY_MEGA] = sAnims_LopunnyMega, - [SPECIES_GARCHOMP_MEGA] = sAnims_GarchompMega, - [SPECIES_LUCARIO_MEGA] = sAnims_LucarioMega, - [SPECIES_ABOMASNOW_MEGA] = sAnims_AbomasnowMega, - [SPECIES_GALLADE_MEGA] = sAnims_GalladeMega, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_AUDINO_MEGA] = sAnims_AudinoMega, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_DIANCIE_MEGA] = sAnims_DiancieMega, -#endif - [SPECIES_RAYQUAZA_MEGA] = sAnims_RayquazaMega, - [SPECIES_KYOGRE_PRIMAL] = sAnims_KyogrePrimal, - [SPECIES_GROUDON_PRIMAL] = sAnims_GroudonPrimal, - [SPECIES_RATTATA_ALOLAN] = sAnims_RattataAlolan, - [SPECIES_RATICATE_ALOLAN] = sAnims_RaticateAlolan, - [SPECIES_RAICHU_ALOLAN] = sAnims_RaichuAlolan, - [SPECIES_SANDSHREW_ALOLAN] = sAnims_SandshrewAlolan, - [SPECIES_SANDSLASH_ALOLAN] = sAnims_SandslashAlolan, - [SPECIES_VULPIX_ALOLAN] = sAnims_VulpixAlolan, - [SPECIES_NINETALES_ALOLAN] = sAnims_NinetalesAlolan, - [SPECIES_DIGLETT_ALOLAN] = sAnims_DiglettAlolan, - [SPECIES_DUGTRIO_ALOLAN] = sAnims_DugtrioAlolan, - [SPECIES_MEOWTH_ALOLAN] = sAnims_MeowthAlolan, - [SPECIES_PERSIAN_ALOLAN] = sAnims_PersianAlolan, - [SPECIES_GEODUDE_ALOLAN] = sAnims_GeodudeAlolan, - [SPECIES_GRAVELER_ALOLAN] = sAnims_GravelerAlolan, - [SPECIES_GOLEM_ALOLAN] = sAnims_GolemAlolan, - [SPECIES_GRIMER_ALOLAN] = sAnims_GrimerAlolan, - [SPECIES_MUK_ALOLAN] = sAnims_MukAlolan, - [SPECIES_EXEGGUTOR_ALOLAN] = sAnims_ExeggutorAlolan, - [SPECIES_MAROWAK_ALOLAN] = sAnims_MarowakAlolan, - [SPECIES_MEOWTH_GALARIAN] = sAnims_MeowthGalarian, - [SPECIES_PONYTA_GALARIAN] = sAnims_PonytaGalarian, - [SPECIES_RAPIDASH_GALARIAN] = sAnims_RapidashGalarian, - [SPECIES_SLOWPOKE_GALARIAN] = sAnims_SlowpokeGalarian, - [SPECIES_SLOWBRO_GALARIAN] = sAnims_SlowbroGalarian, - [SPECIES_FARFETCHD_GALARIAN] = sAnims_FarfetchdGalarian, - [SPECIES_WEEZING_GALARIAN] = sAnims_WeezingGalarian, - [SPECIES_MR_MIME_GALARIAN] = sAnims_MrMimeGalarian, - [SPECIES_ARTICUNO_GALARIAN] = sAnims_ArticunoGalarian, - [SPECIES_ZAPDOS_GALARIAN] = sAnims_ZapdosGalarian, - [SPECIES_MOLTRES_GALARIAN] = sAnims_MoltresGalarian, - [SPECIES_SLOWKING_GALARIAN] = sAnims_SlowkingGalarian, - [SPECIES_CORSOLA_GALARIAN] = sAnims_CorsolaGalarian, - [SPECIES_ZIGZAGOON_GALARIAN] = sAnims_ZigzagoonGalarian, - [SPECIES_LINOONE_GALARIAN] = sAnims_LinooneGalarian, -#if P_GEN_5_POKEMON == TRUE - [SPECIES_DARUMAKA_GALARIAN] = sAnims_DarumakaGalarian, - [SPECIES_DARMANITAN_GALARIAN] = sAnims_DarmanitanGalarian, - [SPECIES_YAMASK_GALARIAN] = sAnims_YamaskGalarian, - [SPECIES_STUNFISK_GALARIAN] = sAnims_StunfiskGalarian, -#endif - [SPECIES_GROWLITHE_HISUIAN] = sAnims_GrowlitheHisuian, - [SPECIES_ARCANINE_HISUIAN] = sAnims_ArcanineHisuian, - [SPECIES_VOLTORB_HISUIAN] = sAnims_VoltorbHisuian, - [SPECIES_ELECTRODE_HISUIAN] = sAnims_ElectrodeHisuian, - [SPECIES_TYPHLOSION_HISUIAN] = sAnims_TyphlosionHisuian, - [SPECIES_QWILFISH_HISUIAN] = sAnims_QwilfishHisuian, - [SPECIES_SNEASEL_HISUIAN] = sAnims_SneaselHisuian, -#if P_GEN_5_POKEMON == TRUE - [SPECIES_SAMUROTT_HISUIAN] = sAnims_SamurottHisuian, - [SPECIES_LILLIGANT_HISUIAN] = sAnims_LilligantHisuian, - [SPECIES_ZORUA_HISUIAN] = sAnims_ZoruaHisuian, - [SPECIES_ZOROARK_HISUIAN] = sAnims_ZoroarkHisuian, - [SPECIES_BRAVIARY_HISUIAN] = sAnims_BraviaryHisuian, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_SLIGGOO_HISUIAN] = sAnims_SliggooHisuian, - [SPECIES_GOODRA_HISUIAN] = sAnims_GoodraHisuian, - [SPECIES_AVALUGG_HISUIAN] = sAnims_AvaluggHisuian, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_DECIDUEYE_HISUIAN] = sAnims_DecidueyeHisuian, -#endif - [SPECIES_PIKACHU_COSPLAY] = sAnims_PikachuCosplay, - [SPECIES_PIKACHU_ROCK_STAR] = sAnims_PikachuRockStar, - [SPECIES_PIKACHU_BELLE] = sAnims_PikachuBelle, - [SPECIES_PIKACHU_POP_STAR] = sAnims_PikachuPopStar, - [SPECIES_PIKACHU_PH_D] = sAnims_PIKACHU_PH_D, - [SPECIES_PIKACHU_LIBRE] = sAnims_PikachuLibre, - [SPECIES_PIKACHU_ORIGINAL_CAP] = sAnims_PikachuOriginalCap, - [SPECIES_PIKACHU_HOENN_CAP] = sAnims_PikachuHoennCap, - [SPECIES_PIKACHU_SINNOH_CAP] = sAnims_PikachuSinnohCap, - [SPECIES_PIKACHU_UNOVA_CAP] = sAnims_PikachuUnovaCap, - [SPECIES_PIKACHU_KALOS_CAP] = sAnims_PikachuKalosCap, - [SPECIES_PIKACHU_ALOLA_CAP] = sAnims_PikachuAlolaCap, - [SPECIES_PIKACHU_PARTNER_CAP] = sAnims_PikachuPartnerCap, - [SPECIES_PIKACHU_WORLD_CAP] = sAnims_PikachuWorldCap, - [SPECIES_PICHU_SPIKY_EARED] = sAnims_PichuSpikyEared, - [SPECIES_UNOWN_B] = sAnims_UnownB, - [SPECIES_UNOWN_C] = sAnims_UnownC, - [SPECIES_UNOWN_D] = sAnims_UnownD, - [SPECIES_UNOWN_E] = sAnims_UnownE, - [SPECIES_UNOWN_F] = sAnims_UnownF, - [SPECIES_UNOWN_G] = sAnims_UnownG, - [SPECIES_UNOWN_H] = sAnims_UnownH, - [SPECIES_UNOWN_I] = sAnims_UnownI, - [SPECIES_UNOWN_J] = sAnims_UnownJ, - [SPECIES_UNOWN_K] = sAnims_UnownK, - [SPECIES_UNOWN_L] = sAnims_UnownL, - [SPECIES_UNOWN_M] = sAnims_UnownM, - [SPECIES_UNOWN_N] = sAnims_UnownN, - [SPECIES_UNOWN_O] = sAnims_UnownO, - [SPECIES_UNOWN_P] = sAnims_UnownP, - [SPECIES_UNOWN_Q] = sAnims_UnownQ, - [SPECIES_UNOWN_R] = sAnims_UnownR, - [SPECIES_UNOWN_S] = sAnims_UnownS, - [SPECIES_UNOWN_T] = sAnims_UnownT, - [SPECIES_UNOWN_U] = sAnims_UnownU, - [SPECIES_UNOWN_V] = sAnims_UnownV, - [SPECIES_UNOWN_W] = sAnims_UnownW, - [SPECIES_UNOWN_X] = sAnims_UnownX, - [SPECIES_UNOWN_Y] = sAnims_UnownY, - [SPECIES_UNOWN_Z] = sAnims_UnownZ, - [SPECIES_UNOWN_EMARK] = sAnims_UnownEMark, - [SPECIES_UNOWN_QMARK] = sAnims_UnownQMark, - [SPECIES_CASTFORM_SUNNY] = sAnims_CastformSunny, - [SPECIES_CASTFORM_RAINY] = sAnims_CastformRainy, - [SPECIES_CASTFORM_SNOWY] = sAnims_CastformSnowy, - [SPECIES_DEOXYS_ATTACK] = sAnims_DeoxysAttack, - [SPECIES_DEOXYS_DEFENSE] = sAnims_DeoxysDefense, - [SPECIES_DEOXYS_SPEED] = sAnims_DeoxysSpeed, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_BURMY_SANDY_CLOAK] = sAnims_Burmy, - [SPECIES_BURMY_TRASH_CLOAK] = sAnims_Burmy, - [SPECIES_WORMADAM_SANDY_CLOAK] = sAnims_Wormadam, - [SPECIES_WORMADAM_TRASH_CLOAK] = sAnims_Wormadam, - [SPECIES_CHERRIM_SUNSHINE] = sAnims_CherrimSunshine, - [SPECIES_SHELLOS_EAST_SEA] = sAnims_Shellos, - [SPECIES_GASTRODON_EAST_SEA] = sAnims_Gastrodon, - [SPECIES_ROTOM_HEAT] = sAnims_RotomHeat, - [SPECIES_ROTOM_WASH] = sAnims_RotomWash, - [SPECIES_ROTOM_FROST] = sAnims_RotomFrost, - [SPECIES_ROTOM_FAN] = sAnims_RotomFan, - [SPECIES_ROTOM_MOW] = sAnims_RotomMow, - [SPECIES_DIALGA_ORIGIN] = sAnims_DialgaOrigin, - [SPECIES_PALKIA_ORIGIN] = sAnims_PalkiaOrigin, - [SPECIES_GIRATINA_ORIGIN] = sAnims_GiratinaOrigin, - [SPECIES_SHAYMIN_SKY] = sAnims_ShayminSky, - [SPECIES_ARCEUS_FIGHTING] = sAnims_Arceus, - [SPECIES_ARCEUS_FLYING] = sAnims_Arceus, - [SPECIES_ARCEUS_POISON] = sAnims_Arceus, - [SPECIES_ARCEUS_GROUND] = sAnims_Arceus, - [SPECIES_ARCEUS_ROCK] = sAnims_Arceus, - [SPECIES_ARCEUS_BUG] = sAnims_Arceus, - [SPECIES_ARCEUS_GHOST] = sAnims_Arceus, - [SPECIES_ARCEUS_STEEL] = sAnims_Arceus, - [SPECIES_ARCEUS_FIRE] = sAnims_Arceus, - [SPECIES_ARCEUS_WATER] = sAnims_Arceus, - [SPECIES_ARCEUS_GRASS] = sAnims_Arceus, - [SPECIES_ARCEUS_ELECTRIC] = sAnims_Arceus, - [SPECIES_ARCEUS_PSYCHIC] = sAnims_Arceus, - [SPECIES_ARCEUS_ICE] = sAnims_Arceus, - [SPECIES_ARCEUS_DRAGON] = sAnims_Arceus, - [SPECIES_ARCEUS_DARK] = sAnims_Arceus, - [SPECIES_ARCEUS_FAIRY] = sAnims_Arceus, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_BASCULIN_BLUE_STRIPED] = sAnims_Basculin, - [SPECIES_BASCULIN_WHITE_STRIPED] = sAnims_Basculin, - [SPECIES_DARMANITAN_ZEN_MODE] = sAnims_DarmanitanZenMode, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sAnims_DarmanitanZenModeGalarian, - [SPECIES_DEERLING_SUMMER] = sAnims_Deerling, - [SPECIES_DEERLING_AUTUMN] = sAnims_Deerling, - [SPECIES_DEERLING_WINTER] = sAnims_Deerling, - [SPECIES_SAWSBUCK_SUMMER] = sAnims_Sawsbuck, - [SPECIES_SAWSBUCK_AUTUMN] = sAnims_Sawsbuck, - [SPECIES_SAWSBUCK_WINTER] = sAnims_Sawsbuck, - [SPECIES_TORNADUS_THERIAN] = sAnims_TornadusTherian, - [SPECIES_THUNDURUS_THERIAN] = sAnims_ThundurusTherian, - [SPECIES_LANDORUS_THERIAN] = sAnims_LandorusTherian, - [SPECIES_KYUREM_WHITE] = sAnims_KyuremWhite, - [SPECIES_KYUREM_BLACK] = sAnims_KyuremBlack, - [SPECIES_KELDEO_RESOLUTE] = sAnims_KeldeoResolute, - [SPECIES_MELOETTA_PIROUETTE] = sAnims_MeloettaPirouette, - [SPECIES_GENESECT_DOUSE_DRIVE] = sAnims_Genesect, - [SPECIES_GENESECT_SHOCK_DRIVE] = sAnims_Genesect, - [SPECIES_GENESECT_BURN_DRIVE] = sAnims_Genesect, - [SPECIES_GENESECT_CHILL_DRIVE] = sAnims_Genesect, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_GRENINJA_BATTLE_BOND] = sAnims_Greninja, - [SPECIES_GRENINJA_ASH] = sAnims_GreninjaAsh, - [SPECIES_VIVILLON_POLAR] = sAnims_Vivillon, - [SPECIES_VIVILLON_TUNDRA] = sAnims_Vivillon, - [SPECIES_VIVILLON_CONTINENTAL] = sAnims_Vivillon, - [SPECIES_VIVILLON_GARDEN] = sAnims_Vivillon, - [SPECIES_VIVILLON_ELEGANT] = sAnims_Vivillon, - [SPECIES_VIVILLON_MEADOW] = sAnims_Vivillon, - [SPECIES_VIVILLON_MODERN] = sAnims_Vivillon, - [SPECIES_VIVILLON_MARINE] = sAnims_Vivillon, - [SPECIES_VIVILLON_ARCHIPELAGO] = sAnims_Vivillon, - [SPECIES_VIVILLON_HIGH_PLAINS] = sAnims_Vivillon, - [SPECIES_VIVILLON_SANDSTORM] = sAnims_Vivillon, - [SPECIES_VIVILLON_RIVER] = sAnims_Vivillon, - [SPECIES_VIVILLON_MONSOON] = sAnims_Vivillon, - [SPECIES_VIVILLON_SAVANNA] = sAnims_Vivillon, - [SPECIES_VIVILLON_SUN] = sAnims_Vivillon, - [SPECIES_VIVILLON_OCEAN] = sAnims_Vivillon, - [SPECIES_VIVILLON_JUNGLE] = sAnims_Vivillon, - [SPECIES_VIVILLON_FANCY] = sAnims_Vivillon, - [SPECIES_VIVILLON_POKE_BALL] = sAnims_Vivillon, - [SPECIES_FLABEBE_YELLOW_FLOWER] = sAnims_Flabebe, - [SPECIES_FLABEBE_ORANGE_FLOWER] = sAnims_Flabebe, - [SPECIES_FLABEBE_BLUE_FLOWER] = sAnims_Flabebe, - [SPECIES_FLABEBE_WHITE_FLOWER] = sAnims_Flabebe, - [SPECIES_FLOETTE_YELLOW_FLOWER] = sAnims_Floette, - [SPECIES_FLOETTE_ORANGE_FLOWER] = sAnims_Floette, - [SPECIES_FLOETTE_BLUE_FLOWER] = sAnims_Floette, - [SPECIES_FLOETTE_WHITE_FLOWER] = sAnims_Floette, - [SPECIES_FLOETTE_ETERNAL_FLOWER] = sAnims_Floette, - [SPECIES_FLORGES_YELLOW_FLOWER] = sAnims_Florges, - [SPECIES_FLORGES_ORANGE_FLOWER] = sAnims_Florges, - [SPECIES_FLORGES_BLUE_FLOWER] = sAnims_Florges, - [SPECIES_FLORGES_WHITE_FLOWER] = sAnims_Florges, - [SPECIES_FURFROU_HEART_TRIM] = sAnims_Furfrou, - [SPECIES_FURFROU_STAR_TRIM] = sAnims_Furfrou, - [SPECIES_FURFROU_DIAMOND_TRIM] = sAnims_Furfrou, - [SPECIES_FURFROU_DEBUTANTE_TRIM] = sAnims_Furfrou, - [SPECIES_FURFROU_MATRON_TRIM] = sAnims_Furfrou, - [SPECIES_FURFROU_DANDY_TRIM] = sAnims_Furfrou, - [SPECIES_FURFROU_LA_REINE_TRIM] = sAnims_Furfrou, - [SPECIES_FURFROU_KABUKI_TRIM] = sAnims_Furfrou, - [SPECIES_FURFROU_PHARAOH_TRIM] = sAnims_Furfrou, - [SPECIES_MEOWSTIC_FEMALE] = sAnims_Meowstic, - [SPECIES_AEGISLASH_BLADE] = sAnims_AegislashBlade, - [SPECIES_PUMPKABOO_SMALL] = sAnims_Pumpkaboo, - [SPECIES_PUMPKABOO_LARGE] = sAnims_Pumpkaboo, - [SPECIES_PUMPKABOO_SUPER] = sAnims_Pumpkaboo, - [SPECIES_GOURGEIST_SMALL] = sAnims_Gourgeist, - [SPECIES_GOURGEIST_LARGE] = sAnims_Gourgeist, - [SPECIES_GOURGEIST_SUPER] = sAnims_Gourgeist, - [SPECIES_XERNEAS_ACTIVE] = sAnims_Xerneas, - [SPECIES_ZYGARDE_10] = sAnims_Zygarde10, - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sAnims_Zygarde10, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sAnims_Zygarde, - [SPECIES_ZYGARDE_COMPLETE] = sAnims_ZygardeComplete, - [SPECIES_HOOPA_UNBOUND] = sAnims_HoopaUnbound, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_ORICORIO_POM_POM] = sAnims_Oricorio, - [SPECIES_ORICORIO_PAU] = sAnims_Oricorio, - [SPECIES_ORICORIO_SENSU] = sAnims_Oricorio, - [SPECIES_ROCKRUFF_OWN_TEMPO] = sAnims_Rockruff, - [SPECIES_LYCANROC_MIDNIGHT] = sAnims_LycanrocMidnight, - [SPECIES_LYCANROC_DUSK] = sAnims_LycanrocDusk, - [SPECIES_WISHIWASHI_SCHOOL] = sAnims_WishiwashiSchool, - [SPECIES_SILVALLY_FIGHTING] = sAnims_Silvally, - [SPECIES_SILVALLY_FLYING] = sAnims_Silvally, - [SPECIES_SILVALLY_POISON] = sAnims_Silvally, - [SPECIES_SILVALLY_GROUND] = sAnims_Silvally, - [SPECIES_SILVALLY_ROCK] = sAnims_Silvally, - [SPECIES_SILVALLY_BUG] = sAnims_Silvally, - [SPECIES_SILVALLY_GHOST] = sAnims_Silvally, - [SPECIES_SILVALLY_STEEL] = sAnims_Silvally, - [SPECIES_SILVALLY_FIRE] = sAnims_Silvally, - [SPECIES_SILVALLY_WATER] = sAnims_Silvally, - [SPECIES_SILVALLY_GRASS] = sAnims_Silvally, - [SPECIES_SILVALLY_ELECTRIC] = sAnims_Silvally, - [SPECIES_SILVALLY_PSYCHIC] = sAnims_Silvally, - [SPECIES_SILVALLY_ICE] = sAnims_Silvally, - [SPECIES_SILVALLY_DRAGON] = sAnims_Silvally, - [SPECIES_SILVALLY_DARK] = sAnims_Silvally, - [SPECIES_SILVALLY_FAIRY] = sAnims_Silvally, - [SPECIES_MINIOR_METEOR_ORANGE] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_YELLOW] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_GREEN] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_BLUE] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_INDIGO] = sAnims_Minior, - [SPECIES_MINIOR_METEOR_VIOLET] = sAnims_Minior, - [SPECIES_MINIOR_CORE_RED] = sAnims_Minior, - [SPECIES_MINIOR_CORE_ORANGE] = sAnims_Minior, - [SPECIES_MINIOR_CORE_YELLOW] = sAnims_Minior, - [SPECIES_MINIOR_CORE_GREEN] = sAnims_Minior, - [SPECIES_MINIOR_CORE_BLUE] = sAnims_Minior, - [SPECIES_MINIOR_CORE_INDIGO] = sAnims_Minior, - [SPECIES_MINIOR_CORE_VIOLET] = sAnims_Minior, - [SPECIES_MIMIKYU_BUSTED] = sAnims_MimikyuBusted, - [SPECIES_NECROZMA_DUSK_MANE] = sAnims_Necrozma, - [SPECIES_NECROZMA_DAWN_WINGS] = sAnims_Necrozma, - [SPECIES_NECROZMA_ULTRA] = sAnims_Necrozma, - [SPECIES_MAGEARNA_ORIGINAL_COLOR] = sAnims_Magearna, -#endif -#if P_GEN_8_POKEMON == TRUE - [SPECIES_CRAMORANT_GULPING] = sAnims_Cramorant, - [SPECIES_CRAMORANT_GORGING] = sAnims_Cramorant, - [SPECIES_TOXTRICITY_LOW_KEY] = sAnims_Toxtricity, - [SPECIES_SINISTEA_ANTIQUE] = sAnims_Sinistea, - [SPECIES_POLTEAGEIST_ANTIQUE] = sAnims_Polteageist, - [SPECIES_ALCREMIE_RUBY_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_MATCHA_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_MINT_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_LEMON_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_SALTED_CREAM] = sAnims_Alcremie, - [SPECIES_ALCREMIE_RUBY_SWIRL] = sAnims_Alcremie, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAnims_Alcremie, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAnims_Alcremie, - [SPECIES_EISCUE_NOICE_FACE] = sAnims_Eiscue, - [SPECIES_INDEEDEE_FEMALE] = sAnims_Indeedee, - [SPECIES_MORPEKO_HANGRY] = sAnims_Morpeko, - [SPECIES_ZACIAN_CROWNED_SWORD] = sAnims_Zacian, - [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = sAnims_Zamazenta, - [SPECIES_ETERNATUS_ETERNAMAX] = sAnims_Eternatus, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = sAnims_Urshifu, - [SPECIES_ZARUDE_DADA] = sAnims_Zarude, - [SPECIES_CALYREX_ICE_RIDER] = sAnims_Calyrex, - [SPECIES_CALYREX_SHADOW_RIDER] = sAnims_Calyrex, - [SPECIES_ENAMORUS_THERIAN] = sAnims_EnamorusTherian, - [SPECIES_BASCULEGION_FEMALE] = sAnims_Basculegion, -#endif - [SPECIES_EGG] = sAnims_Egg, -}; +#endif //P_FAMILY_ENAMORUS +#if P_FAMILY_SPRIGATITO +SINGLE_ANIMATION(Sprigatito); +SINGLE_ANIMATION(Floragato); +SINGLE_ANIMATION(Meowscarada); +#endif //P_FAMILY_SPRIGATITO +#if P_FAMILY_FUECOCO +SINGLE_ANIMATION(Fuecoco); +SINGLE_ANIMATION(Crocalor); +SINGLE_ANIMATION(Skeledirge); +#endif //P_FAMILY_FUECOCO +#if P_FAMILY_QUAXLY +SINGLE_ANIMATION(Quaxly); +SINGLE_ANIMATION(Quaxwell); +SINGLE_ANIMATION(Quaquaval); +#endif //P_FAMILY_QUAXLY +#if P_FAMILY_LECHONK +SINGLE_ANIMATION(Lechonk); +SINGLE_ANIMATION(Oinkologne); +#endif //P_FAMILY_LECHONK +#if P_FAMILY_TAROUNTULA +SINGLE_ANIMATION(Tarountula); +SINGLE_ANIMATION(Spidops); +#endif //P_FAMILY_TAROUNTULA +#if P_FAMILY_NYMBLE +SINGLE_ANIMATION(Nymble); +SINGLE_ANIMATION(Lokix); +#endif //P_FAMILY_NYMBLE +#if P_FAMILY_PAWMI +SINGLE_ANIMATION(Pawmi); +SINGLE_ANIMATION(Pawmo); +SINGLE_ANIMATION(Pawmot); +#endif //P_FAMILY_PAWMI +#if P_FAMILY_TANDEMAUS +SINGLE_ANIMATION(Tandemaus); +SINGLE_ANIMATION(Maushold); +#endif //P_FAMILY_TANDEMAUS +#if P_FAMILY_FIDOUGH +SINGLE_ANIMATION(Fidough); +SINGLE_ANIMATION(Dachsbun); +#endif //P_FAMILY_FIDOUGH +#if P_FAMILY_SMOLIV +SINGLE_ANIMATION(Smoliv); +SINGLE_ANIMATION(Dolliv); +SINGLE_ANIMATION(Arboliva); +#endif //P_FAMILY_SMOLIV +#if P_FAMILY_SQUAWKABILLY +SINGLE_ANIMATION(Squawkabilly); +#endif //P_FAMILY_SQUAWKABILLY +#if P_FAMILY_NACLI +SINGLE_ANIMATION(Nacli); +SINGLE_ANIMATION(Naclstack); +SINGLE_ANIMATION(Garganacl); +#endif //P_FAMILY_NACLI +#if P_FAMILY_CHARCADET +SINGLE_ANIMATION(Charcadet); +SINGLE_ANIMATION(Armarouge); +SINGLE_ANIMATION(Ceruledge); +#endif //P_FAMILY_CHARCADET +#if P_FAMILY_TADBULB +SINGLE_ANIMATION(Tadbulb); +SINGLE_ANIMATION(Bellibolt); +#endif //P_FAMILY_TADBULB +#if P_FAMILY_WATTREL +SINGLE_ANIMATION(Wattrel); +SINGLE_ANIMATION(Kilowattrel); +#endif //P_FAMILY_WATTREL +#if P_FAMILY_MASCHIFF +SINGLE_ANIMATION(Maschiff); +SINGLE_ANIMATION(Mabosstiff); +#endif //P_FAMILY_MASCHIFF +#if P_FAMILY_SHROODLE +SINGLE_ANIMATION(Shroodle); +SINGLE_ANIMATION(Grafaiai); +#endif //P_FAMILY_SHROODLE +#if P_FAMILY_BRAMBLIN +SINGLE_ANIMATION(Bramblin); +SINGLE_ANIMATION(Brambleghast); +#endif //P_FAMILY_BRAMBLIN +#if P_FAMILY_TOEDSCOOL +SINGLE_ANIMATION(Toedscool); +SINGLE_ANIMATION(Toedscruel); +#endif //P_FAMILY_TOEDSCOOL +#if P_FAMILY_KLAWF +SINGLE_ANIMATION(Klawf); +#endif //P_FAMILY_KLAWF +#if P_FAMILY_CAPSAKID +SINGLE_ANIMATION(Capsakid); +SINGLE_ANIMATION(Scovillain); +#endif //P_FAMILY_CAPSAKID +#if P_FAMILY_RELLOR +SINGLE_ANIMATION(Rellor); +SINGLE_ANIMATION(Rabsca); +#endif //P_FAMILY_RELLOR +#if P_FAMILY_FLITTLE +SINGLE_ANIMATION(Flittle); +SINGLE_ANIMATION(Espathra); +#endif //P_FAMILY_FLITTLE +#if P_FAMILY_TINKATINK +SINGLE_ANIMATION(Tinkatink); +SINGLE_ANIMATION(Tinkatuff); +SINGLE_ANIMATION(Tinkaton); +#endif //P_FAMILY_TINKATINK +#if P_FAMILY_WIGLETT +SINGLE_ANIMATION(Wiglett); +SINGLE_ANIMATION(Wugtrio); +#endif //P_FAMILY_WIGLETT +#if P_FAMILY_BOMBIRDIER +SINGLE_ANIMATION(Bombirdier); +#endif //P_FAMILY_BOMBIRDIER +#if P_FAMILY_FINIZEN +SINGLE_ANIMATION(Finizen); +SINGLE_ANIMATION(Palafin); +#endif //P_FAMILY_FINIZEN +#if P_FAMILY_VAROOM +SINGLE_ANIMATION(Varoom); +SINGLE_ANIMATION(Revavroom); +#endif //P_FAMILY_VAROOM +#if P_FAMILY_CYCLIZAR +SINGLE_ANIMATION(Cyclizar); +#endif //P_FAMILY_CYCLIZAR +#if P_FAMILY_ORTHWORM +SINGLE_ANIMATION(Orthworm); +#endif //P_FAMILY_ORTHWORM +#if P_FAMILY_GLIMMET +SINGLE_ANIMATION(Glimmet); +SINGLE_ANIMATION(Glimmora); +#endif //P_FAMILY_GLIMMET +#if P_FAMILY_GREAVARD +SINGLE_ANIMATION(Greavard); +SINGLE_ANIMATION(Houndstone); +#endif //P_FAMILY_GREAVARD +#if P_FAMILY_FLAMIGO +SINGLE_ANIMATION(Flamigo); +#endif //P_FAMILY_FLAMIGO +#if P_FAMILY_CETODDLE +SINGLE_ANIMATION(Cetoddle); +SINGLE_ANIMATION(Cetitan); +#endif //P_FAMILY_CETODDLE +#if P_FAMILY_VELUZA +SINGLE_ANIMATION(Veluza); +#endif //P_FAMILY_VELUZA +#if P_FAMILY_DONDOZO +SINGLE_ANIMATION(Dondozo); +#endif //P_FAMILY_DONDOZO +#if P_FAMILY_TATSUGIRI +SINGLE_ANIMATION(Tatsugiri); +#endif //P_FAMILY_TATSUGIRI +#if P_FAMILY_GREAT_TUSK +SINGLE_ANIMATION(GreatTusk); +#endif //P_FAMILY_GREAT_TUSK +#if P_FAMILY_SCREAM_TAIL +SINGLE_ANIMATION(ScreamTail); +#endif //P_FAMILY_SCREAM_TAIL +#if P_FAMILY_BRUTE_BONNET +SINGLE_ANIMATION(BruteBonnet); +#endif //P_FAMILY_BRUTE_BONNET +#if P_FAMILY_FLUTTER_MANE +SINGLE_ANIMATION(FlutterMane); +#endif //P_FAMILY_FLUTTER_MANE +#if P_FAMILY_SLITHER_WING +SINGLE_ANIMATION(SlitherWing); +#endif //P_FAMILY_SLITHER_WING +#if P_FAMILY_SANDY_SHOCKS +SINGLE_ANIMATION(SandyShocks); +#endif //P_FAMILY_SANDY_SHOCKS +#if P_FAMILY_IRON_TREADS +SINGLE_ANIMATION(IronTreads); +#endif //P_FAMILY_IRON_TREADS +#if P_FAMILY_IRON_BUNDLE +SINGLE_ANIMATION(IronBundle); +#endif //P_FAMILY_IRON_BUNDLE +#if P_FAMILY_IRON_HANDS +SINGLE_ANIMATION(IronHands); +#endif //P_FAMILY_IRON_HANDS +#if P_FAMILY_IRON_JUGULIS +SINGLE_ANIMATION(IronJugulis); +#endif //P_FAMILY_IRON_JUGULIS +#if P_FAMILY_IRON_MOTH +SINGLE_ANIMATION(IronMoth); +#endif //P_FAMILY_IRON_MOTH +#if P_FAMILY_IRON_THORNS +SINGLE_ANIMATION(IronThorns); +#endif //P_FAMILY_IRON_THORNS +#if P_FAMILY_FRIGIBAX +SINGLE_ANIMATION(Frigibax); +SINGLE_ANIMATION(Arctibax); +SINGLE_ANIMATION(Baxcalibur); +#endif //P_FAMILY_FRIGIBAX +#if P_FAMILY_GIMMIGHOUL +SINGLE_ANIMATION(Gimmighoul); +SINGLE_ANIMATION(Gholdengo); +#endif //P_FAMILY_GIMMIGHOUL +#if P_FAMILY_WO_CHIEN +SINGLE_ANIMATION(WoChien); +#endif //P_FAMILY_WO_CHIEN +#if P_FAMILY_CHIEN_PAO +SINGLE_ANIMATION(ChienPao); +#endif //P_FAMILY_CHIEN_PAO +#if P_FAMILY_TING_LU +SINGLE_ANIMATION(TingLu); +#endif //P_FAMILY_TING_LU +#if P_FAMILY_CHI_YU +SINGLE_ANIMATION(ChiYu); +#endif //P_FAMILY_CHI_YU +#if P_FAMILY_ROARING_MOON +SINGLE_ANIMATION(RoaringMoon); +#endif //P_FAMILY_ROARING_MOON +#if P_FAMILY_IRON_VALIANT +SINGLE_ANIMATION(IronValiant); +#endif //P_FAMILY_IRON_VALIANT +#if P_FAMILY_KORAIDON +SINGLE_ANIMATION(Koraidon); +#endif //P_FAMILY_KORAIDON +#if P_FAMILY_MIRAIDON +SINGLE_ANIMATION(Miraidon); +#endif //P_FAMILY_MIRAIDON +#if P_FAMILY_WALKING_WAKE +SINGLE_ANIMATION(WalkingWake); +#endif //P_FAMILY_WALKING_WAKE +#if P_FAMILY_IRON_LEAVES +SINGLE_ANIMATION(IronLeaves); +#endif //P_FAMILY_IRON_LEAVES +#if P_FAMILY_POLTCHAGEIST +SINGLE_ANIMATION(Poltchageist); +SINGLE_ANIMATION(Sinistcha); +#endif //P_FAMILY_POLTCHAGEIST +#if P_FAMILY_OKIDOGI +SINGLE_ANIMATION(Okidogi); +#endif //P_FAMILY_OKIDOGI +#if P_FAMILY_MUNKIDORI +SINGLE_ANIMATION(Munkidori); +#endif //P_FAMILY_MUNKIDORI +#if P_FAMILY_FEZANDIPITI +SINGLE_ANIMATION(Fezandipiti); +#endif //P_FAMILY_FEZANDIPITI +#if P_FAMILY_OGERPON +SINGLE_ANIMATION(Ogerpon); +#endif //P_FAMILY_OGERPON +SINGLE_ANIMATION(Egg); diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h deleted file mode 100644 index 897ce63308..0000000000 --- a/src/data/pokemon_graphics/front_pic_coordinates.h +++ /dev/null @@ -1,1346 +0,0 @@ -// All Pokémon pics are 64x64, but this data table defines where in this 64x64 frame -// the sprite's non-transparent pixels actually are. -// .size is the dimensions of this drawn pixel area. -// .y_offset is the number of pixels between the drawn pixel area and the bottom edge. -const struct MonCoords gMonFrontPicCoords[NUM_SPECIES + 1] = -{ - [SPECIES_NONE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_BULBASAUR] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_IVYSAUR] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_VENUSAUR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_CHARMANDER] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_CHARMELEON] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 8 }, - [SPECIES_CHARIZARD] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SQUIRTLE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_WARTORTLE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_BLASTOISE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_CATERPIE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_METAPOD] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_BUTTERFREE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 10 }, - [SPECIES_WEEDLE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_KAKUNA] = { .size = MON_COORDS_SIZE(24, 48), .y_offset = 11 }, - [SPECIES_BEEDRILL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_PIDGEY] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_PIDGEOTTO] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_PIDGEOT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_RATTATA] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_RATICATE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_SPEAROW] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_FEAROW] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_EKANS] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_ARBOK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_PIKACHU] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_RAICHU] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_SANDSHREW] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_SANDSLASH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_NIDORAN_F] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_NIDORINA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, - [SPECIES_NIDOQUEEN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_NIDORAN_M] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_NIDORINO] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_NIDOKING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_CLEFAIRY] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_CLEFABLE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_VULPIX] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_NINETALES] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_JIGGLYPUFF] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_WIGGLYTUFF] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 4 }, - [SPECIES_ZUBAT] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 16 }, - [SPECIES_GOLBAT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_ODDISH] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, - [SPECIES_GLOOM] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_VILEPLUME] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_PARAS] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, - [SPECIES_PARASECT] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_VENONAT] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 8 }, - [SPECIES_VENOMOTH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_DIGLETT] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 17 }, - [SPECIES_DUGTRIO] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_MEOWTH] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_PERSIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_PSYDUCK] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_GOLDUCK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_MANKEY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_PRIMEAPE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_GROWLITHE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_ARCANINE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_POLIWAG] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_POLIWHIRL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_POLIWRATH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_ABRA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_KADABRA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_ALAKAZAM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_MACHOP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, - [SPECIES_MACHOKE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_MACHAMP] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_BELLSPROUT] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_WEEPINBELL] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_VICTREEBEL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_TENTACOOL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_TENTACRUEL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_GEODUDE] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 19 }, - [SPECIES_GRAVELER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_GOLEM] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_PONYTA] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_RAPIDASH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SLOWPOKE] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, - [SPECIES_SLOWBRO] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_MAGNEMITE] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 20 }, - [SPECIES_MAGNETON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_FARFETCHD] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_DODUO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_DODRIO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SEEL] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_DEWGONG] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_GRIMER] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_MUK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_SHELLDER] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_CLOYSTER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_GASTLY] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 13 }, - [SPECIES_HAUNTER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 13 }, - [SPECIES_GENGAR] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_ONIX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_DROWZEE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_HYPNO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_KRABBY] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 14 }, - [SPECIES_KINGLER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_VOLTORB] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 11 }, - [SPECIES_ELECTRODE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, - [SPECIES_EXEGGCUTE] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, - [SPECIES_EXEGGUTOR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CUBONE] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, - [SPECIES_MAROWAK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 8 }, - [SPECIES_HITMONLEE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_HITMONCHAN] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_LICKITUNG] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_KOFFING] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_WEEZING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_RHYHORN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, - [SPECIES_RHYDON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_CHANSEY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_TANGELA] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - [SPECIES_KANGASKHAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_HORSEA] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, - [SPECIES_SEADRA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_GOLDEEN] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_SEAKING] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_STARYU] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_STARMIE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_MR_MIME] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_SCYTHER] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_JYNX] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_ELECTABUZZ] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_MAGMAR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_PINSIR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_TAUROS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_MAGIKARP] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, - [SPECIES_GYARADOS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_LAPRAS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_DITTO] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, - [SPECIES_EEVEE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_VAPOREON] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_JOLTEON] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_FLAREON] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 11 }, - [SPECIES_PORYGON] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_OMANYTE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_OMASTAR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, - [SPECIES_KABUTO] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, - [SPECIES_KABUTOPS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_AERODACTYL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_SNORLAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_ARTICUNO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_ZAPDOS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_MOLTRES] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_DRATINI] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_DRAGONAIR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_DRAGONITE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_MEWTWO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_MEW] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_CHIKORITA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_BAYLEEF] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_MEGANIUM] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_CYNDAQUIL] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_QUILAVA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_TYPHLOSION] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_TOTODILE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_CROCONAW] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 5 }, - [SPECIES_FERALIGATR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_SENTRET] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 2 }, - [SPECIES_FURRET] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, - [SPECIES_HOOTHOOT] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_NOCTOWL] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 2 }, - [SPECIES_LEDYBA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_LEDIAN] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_SPINARAK] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 16 }, - [SPECIES_ARIADOS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_CROBAT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_CHINCHOU] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 12 }, - [SPECIES_LANTURN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_PICHU] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, - [SPECIES_CLEFFA] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 18 }, - [SPECIES_IGGLYBUFF] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 17 }, - [SPECIES_TOGEPI] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 16 }, - [SPECIES_TOGETIC] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 8 }, - [SPECIES_NATU] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 17 }, - [SPECIES_XATU] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 5 }, - [SPECIES_MAREEP] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 12 }, - [SPECIES_FLAAFFY] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_AMPHAROS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_BELLOSSOM] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 12 }, - [SPECIES_MARILL] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, - [SPECIES_AZUMARILL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 6 }, - [SPECIES_SUDOWOODO] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_POLITOED] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, - [SPECIES_HOPPIP] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 14 }, - [SPECIES_SKIPLOOM] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, - [SPECIES_JUMPLUFF] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, - [SPECIES_AIPOM] = { .size = MON_COORDS_SIZE(32, 64), .y_offset = 1 }, - [SPECIES_SUNKERN] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 17 }, - [SPECIES_SUNFLORA] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, - [SPECIES_YANMA] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, - [SPECIES_WOOPER] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, - [SPECIES_QUAGSIRE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_ESPEON] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_UMBREON] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, - [SPECIES_MURKROW] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, - [SPECIES_SLOWKING] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 1 }, - [SPECIES_MISDREAVUS] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 13 }, - [SPECIES_UNOWN] = { .size = MON_COORDS_SIZE(24, 40), .y_offset = 15 }, - [SPECIES_WOBBUFFET] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_GIRAFARIG] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_PINECO] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_FORRETRESS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_DUNSPARCE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_GLIGAR] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_STEELIX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SNUBBULL] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_GRANBULL] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_QWILFISH] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, - [SPECIES_SCIZOR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_SHUCKLE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_HERACROSS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_SNEASEL] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_TEDDIURSA] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_URSARING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SLUGMA] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 12 }, - [SPECIES_MAGCARGO] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 6 }, - [SPECIES_SWINUB] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 18 }, - [SPECIES_PILOSWINE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - [SPECIES_CORSOLA] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - [SPECIES_REMORAID] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_OCTILLERY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_DELIBIRD] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_MANTINE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, - [SPECIES_SKARMORY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_HOUNDOUR] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, - [SPECIES_HOUNDOOM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_KINGDRA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_PHANPY] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, - [SPECIES_DONPHAN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_PORYGON2] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, - [SPECIES_STANTLER] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_SMEARGLE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_TYROGUE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, - [SPECIES_HITMONTOP] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_SMOOCHUM] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 13 }, - [SPECIES_ELEKID] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - [SPECIES_MAGBY] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, - [SPECIES_MILTANK] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_BLISSEY] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_RAIKOU] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_ENTEI] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_SUICUNE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_LARVITAR] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, - [SPECIES_PUPITAR] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, - [SPECIES_TYRANITAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_LUGIA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_HO_OH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CELEBI] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_TREECKO] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, - [SPECIES_GROVYLE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_SCEPTILE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_TORCHIC] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 12 }, - [SPECIES_COMBUSKEN] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_BLAZIKEN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_MUDKIP] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_MARSHTOMP] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_SWAMPERT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_POOCHYENA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_MIGHTYENA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_ZIGZAGOON] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, - [SPECIES_LINOONE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_WURMPLE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_SILCOON] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_BEAUTIFLY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, - [SPECIES_CASCOON] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_DUSTOX] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 12 }, - [SPECIES_LOTAD] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_LOMBRE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_LUDICOLO] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SEEDOT] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 12 }, - [SPECIES_NUZLEAF] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_SHIFTRY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_NINCADA] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 16 }, - [SPECIES_NINJASK] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_SHEDINJA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_TAILLOW] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_SWELLOW] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_SHROOMISH] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_BRELOOM] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_SPINDA] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 1 }, - [SPECIES_WINGULL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_PELIPPER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_SURSKIT] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, - [SPECIES_MASQUERAIN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_WAILMER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_WAILORD] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_SKITTY] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, - [SPECIES_DELCATTY] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_KECLEON] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 5 }, - [SPECIES_BALTOY] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 11 }, - [SPECIES_CLAYDOL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - [SPECIES_NOSEPASS] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, - [SPECIES_TORKOAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_SABLEYE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_BARBOACH] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 11 }, - [SPECIES_WHISCASH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_LUVDISC] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 11 }, - [SPECIES_CORPHISH] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_CRAWDAUNT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_FEEBAS] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, - [SPECIES_MILOTIC] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_CARVANHA] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_SHARPEDO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_TRAPINCH] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_VIBRAVA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_FLYGON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_MAKUHITA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, - [SPECIES_HARIYAMA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ELECTRIKE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_MANECTRIC] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_NUMEL] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, - [SPECIES_CAMERUPT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_SPHEAL] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_SEALEO] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_WALREIN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_CACNEA] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, - [SPECIES_CACTURNE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SNORUNT] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 12 }, - [SPECIES_GLALIE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 8 }, - [SPECIES_LUNATONE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_SOLROCK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_AZURILL] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_SPOINK] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, - [SPECIES_GRUMPIG] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_PLUSLE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_MINUN] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_MAWILE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_MEDITITE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_MEDICHAM] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, - [SPECIES_SWABLU] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - [SPECIES_ALTARIA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_WYNAUT] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - [SPECIES_DUSKULL] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 12 }, - [SPECIES_DUSCLOPS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_ROSELIA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_SLAKOTH] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - [SPECIES_VIGOROTH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_SLAKING] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_GULPIN] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 15 }, - [SPECIES_SWALOT] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_TROPIUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_WHISMUR] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_LOUDRED] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - [SPECIES_EXPLOUD] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CLAMPERL] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_HUNTAIL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_GOREBYSS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_ABSOL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_SHUPPET] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_BANETTE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_SEVIPER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_ZANGOOSE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_RELICANTH] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 10 }, - [SPECIES_ARON] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, - [SPECIES_LAIRON] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_AGGRON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CASTFORM] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 17 }, - [SPECIES_VOLBEAT] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - [SPECIES_ILLUMISE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, - [SPECIES_LILEEP] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_CRADILY] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_ANORITH] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_ARMALDO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_RALTS] = { .size = MON_COORDS_SIZE(24, 40), .y_offset = 12 }, - [SPECIES_KIRLIA] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 6 }, - [SPECIES_GARDEVOIR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_BAGON] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, - [SPECIES_SHELGON] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_SALAMENCE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_BELDUM] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, - [SPECIES_METANG] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_METAGROSS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_REGIROCK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_REGICE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_REGISTEEL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_KYOGRE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_GROUDON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_RAYQUAZA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_LATIAS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_LATIOS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_JIRACHI] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 13 }, - [SPECIES_DEOXYS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CHIMECHO] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_TURTWIG] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_GROTLE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_TORTERRA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CHIMCHAR] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 10 }, - [SPECIES_MONFERNO] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 8 }, - [SPECIES_INFERNAPE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_PIPLUP] = { .size = MON_COORDS_SIZE(24, 40), .y_offset = 14 }, - [SPECIES_PRINPLUP] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_EMPOLEON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_STARLY] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_STARAVIA] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, - [SPECIES_STARAPTOR] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - [SPECIES_BIDOOF] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_BIBAREL] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_KRICKETOT] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_KRICKETUNE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_SHINX] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_LUXIO] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_LUXRAY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_BUDEW] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, - [SPECIES_ROSERADE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_CRANIDOS] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_RAMPARDOS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_SHIELDON] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, - [SPECIES_BASTIODON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_BURMY] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 13 }, - [SPECIES_WORMADAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 10 }, - [SPECIES_MOTHIM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 12 }, - [SPECIES_COMBEE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 16 }, - [SPECIES_VESPIQUEN] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, - [SPECIES_PACHIRISU] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 12 }, - [SPECIES_BUIZEL] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_FLOATZEL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_CHERUBI] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, - [SPECIES_CHERRIM] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 8 }, - [SPECIES_SHELLOS] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_GASTRODON] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, - [SPECIES_AMBIPOM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_DRIFLOON] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 7 }, - [SPECIES_DRIFBLIM] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_BUNEARY] = { .size = MON_COORDS_SIZE(32, 64), .y_offset = 9 }, - [SPECIES_LOPUNNY] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_MISMAGIUS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - [SPECIES_HONCHKROW] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_GLAMEOW] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 8 }, - [SPECIES_PURUGLY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_CHINGLING] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_STUNKY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 13 }, - [SPECIES_SKUNTANK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_BRONZOR] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, - [SPECIES_BRONZONG] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_BONSLY] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, - [SPECIES_MIME_JR] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 9 }, - [SPECIES_HAPPINY] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 12 }, - [SPECIES_CHATOT] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_SPIRITOMB] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_GIBLE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_GABITE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_GARCHOMP] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_MUNCHLAX] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_RIOLU] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_LUCARIO] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_HIPPOPOTAS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_HIPPOWDON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_SKORUPI] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_DRAPION] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_CROAGUNK] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, - [SPECIES_TOXICROAK] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_CARNIVINE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_FINNEON] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, - [SPECIES_LUMINEON] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_MANTYKE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 12 }, - [SPECIES_SNOVER] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_ABOMASNOW] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_WEAVILE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_MAGNEZONE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_LICKILICKY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_RHYPERIOR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_TANGROWTH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_ELECTIVIRE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_MAGMORTAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_TOGEKISS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 10 }, - [SPECIES_YANMEGA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_LEAFEON] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_GLACEON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 10 }, - [SPECIES_GLISCOR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_MAMOSWINE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_PORYGON_Z] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 6 }, - [SPECIES_GALLADE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_PROBOPASS] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_DUSKNOIR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_FROSLASS] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, - [SPECIES_ROTOM] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_UXIE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_MESPRIT] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, - [SPECIES_AZELF] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_DIALGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_PALKIA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_HEATRAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_REGIGIGAS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_GIRATINA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CRESSELIA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_PHIONE] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 8 }, - [SPECIES_MANAPHY] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 10 }, - [SPECIES_DARKRAI] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_SHAYMIN] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, - [SPECIES_ARCEUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_VICTINI] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 10 }, - [SPECIES_SNIVY] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - [SPECIES_SERVINE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_SERPERIOR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_TEPIG] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 15 }, - [SPECIES_PIGNITE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 8 }, - [SPECIES_EMBOAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_OSHAWOTT] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, - [SPECIES_DEWOTT] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_SAMUROTT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_PATRAT] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - [SPECIES_WATCHOG] = { .size = MON_COORDS_SIZE(32, 64), .y_offset = 2 }, - [SPECIES_LILLIPUP] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 12 }, - [SPECIES_HERDIER] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, - [SPECIES_STOUTLAND] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_PURRLOIN] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_LIEPARD] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_PANSAGE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_SIMISAGE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_PANSEAR] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_SIMISEAR] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_PANPOUR] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_SIMIPOUR] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_MUNNA] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 14 }, - [SPECIES_MUSHARNA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_PIDOVE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_TRANQUILL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_UNFEZANT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_BLITZLE] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 5 }, - [SPECIES_ZEBSTRIKA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ROGGENROLA] = { .size = MON_COORDS_SIZE(24, 40), .y_offset = 14 }, - [SPECIES_BOLDORE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_GIGALITH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_WOOBAT] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, - [SPECIES_SWOOBAT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_DRILBUR] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_EXCADRILL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_AUDINO] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, - [SPECIES_TIMBURR] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_GURDURR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CONKELDURR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_TYMPOLE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_PALPITOAD] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_SEISMITOAD] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_THROH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, - [SPECIES_SAWK] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_SEWADDLE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_SWADLOON] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 12 }, - [SPECIES_LEAVANNY] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_VENIPEDE] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 16 }, - [SPECIES_WHIRLIPEDE] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, - [SPECIES_SCOLIPEDE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_COTTONEE] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 18 }, - [SPECIES_WHIMSICOTT] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, - [SPECIES_PETILIL] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 12 }, - [SPECIES_LILLIGANT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_BASCULIN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, - [SPECIES_SANDILE] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 18 }, - [SPECIES_KROKOROK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_KROOKODILE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_DARUMAKA] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_DARMANITAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_MARACTUS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_DWEBBLE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_CRUSTLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_SCRAGGY] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_SCRAFTY] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, - [SPECIES_SIGILYPH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_YAMASK] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, - [SPECIES_COFAGRIGUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_TIRTOUGA] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 16 }, - [SPECIES_CARRACOSTA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_ARCHEN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, - [SPECIES_ARCHEOPS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_TRUBBISH] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, - [SPECIES_GARBODOR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_ZORUA] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_ZOROARK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_MINCCINO] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_CINCCINO] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_GOTHITA] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_GOTHORITA] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_GOTHITELLE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_SOLOSIS] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 17 }, - [SPECIES_DUOSION] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 12 }, - [SPECIES_REUNICLUS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, - [SPECIES_DUCKLETT] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 12 }, - [SPECIES_SWANNA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_VANILLITE] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, - [SPECIES_VANILLISH] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 5 }, - [SPECIES_VANILLUXE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_DEERLING] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, - [SPECIES_SAWSBUCK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_EMOLGA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 17 }, - [SPECIES_KARRABLAST] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 13 }, - [SPECIES_ESCAVALIER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_FOONGUS] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 16 }, - [SPECIES_AMOONGUSS] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 8 }, - [SPECIES_FRILLISH] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_JELLICENT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_ALOMOMOLA] = { .size = MON_COORDS_SIZE(32, 64), .y_offset = 0 }, - [SPECIES_JOLTIK] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 17 }, - [SPECIES_GALVANTULA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_FERROSEED] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 12 }, - [SPECIES_FERROTHORN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_KLINK] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - [SPECIES_KLANG] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_KLINKLANG] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_TYNAMO] = { .size = MON_COORDS_SIZE(40, 24), .y_offset = 22 }, - [SPECIES_EELEKTRIK] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 6 }, - [SPECIES_EELEKTROSS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_ELGYEM] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, - [SPECIES_BEHEEYEM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, - [SPECIES_LITWICK] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, - [SPECIES_LAMPENT] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_CHANDELURE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_AXEW] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 12 }, - [SPECIES_FRAXURE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_HAXORUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CUBCHOO] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 12 }, - [SPECIES_BEARTIC] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_CRYOGONAL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SHELMET] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_ACCELGOR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_STUNFISK] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 14 }, - [SPECIES_MIENFOO] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_MIENSHAO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_DRUDDIGON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_GOLETT] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_GOLURK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_PAWNIARD] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_BISHARP] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_BOUFFALANT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_RUFFLET] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 10 }, - [SPECIES_BRAVIARY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_VULLABY] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_MANDIBUZZ] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 1 }, - [SPECIES_HEATMOR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_DURANT] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 17 }, - [SPECIES_DEINO] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, - [SPECIES_ZWEILOUS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_HYDREIGON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_LARVESTA] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 13 }, - [SPECIES_VOLCARONA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_COBALION] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_TERRAKION] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_VIRIZION] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_TORNADUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_THUNDURUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_RESHIRAM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_ZEKROM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_LANDORUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_KYUREM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_KELDEO] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_MELOETTA] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, - [SPECIES_GENESECT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_CHESPIN] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, - [SPECIES_QUILLADIN] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_CHESNAUGHT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_FENNEKIN] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, - [SPECIES_BRAIXEN] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 4 }, - [SPECIES_DELPHOX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_FROAKIE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_FROGADIER] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_GRENINJA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_BUNNELBY] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 5 }, - [SPECIES_DIGGERSBY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_FLETCHLING] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_FLETCHINDER] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_TALONFLAME] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_SCATTERBUG] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 13 }, - [SPECIES_SPEWPA] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_VIVILLON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_LITLEO] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, - [SPECIES_PYROAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_FLABEBE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_FLOETTE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_FLORGES] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SKIDDO] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_GOGOAT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_PANCHAM] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 12 }, - [SPECIES_PANGORO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_FURFROU] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_ESPURR] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 10 }, - [SPECIES_MEOWSTIC] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_HONEDGE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_DOUBLADE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_AEGISLASH] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_SPRITZEE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 12 }, - [SPECIES_AROMATISSE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, - [SPECIES_SWIRLIX] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_SLURPUFF] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - [SPECIES_INKAY] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 14 }, - [SPECIES_MALAMAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_BINACLE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, - [SPECIES_BARBARACLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SKRELP] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, - [SPECIES_DRAGALGE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CLAUNCHER] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, - [SPECIES_CLAWITZER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 10 }, - [SPECIES_HELIOPTILE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_HELIOLISK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_TYRUNT] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_TYRANTRUM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_AMAURA] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 8 }, - [SPECIES_AURORUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SYLVEON] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, - [SPECIES_HAWLUCHA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_DEDENNE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, - [SPECIES_CARBINK] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_GOOMY] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 13 }, - [SPECIES_SLIGGOO] = { .size = MON_COORDS_SIZE(32, 64), .y_offset = 6 }, - [SPECIES_GOODRA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_KLEFKI] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 4 }, - [SPECIES_PHANTUMP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_TREVENANT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_PUMPKABOO] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_GOURGEIST] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_BERGMITE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_AVALUGG] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_NOIBAT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, - [SPECIES_NOIVERN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_XERNEAS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_YVELTAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ZYGARDE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_DIANCIE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 1 }, - [SPECIES_HOOPA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_VOLCANION] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_ROWLET] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 12 }, - [SPECIES_DARTRIX] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, - [SPECIES_DECIDUEYE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_LITTEN] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - [SPECIES_TORRACAT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_INCINEROAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_POPPLIO] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_BRIONNE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_PRIMARINA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_PIKIPEK] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_TRUMBEAK] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_TOUCANNON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_YUNGOOS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_GUMSHOOS] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_GRUBBIN] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 17 }, - [SPECIES_CHARJABUG] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_VIKAVOLT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_CRABRAWLER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_CRABOMINABLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ORICORIO] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_CUTIEFLY] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 16 }, - [SPECIES_RIBOMBEE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_ROCKRUFF] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_LYCANROC] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, - [SPECIES_WISHIWASHI] = { .size = MON_COORDS_SIZE(40, 24), .y_offset = 15 }, - [SPECIES_MAREANIE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_TOXAPEX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_MUDBRAY] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_MUDSDALE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_DEWPIDER] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 13 }, - [SPECIES_ARAQUANID] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_FOMANTIS] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_LURANTIS] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_MORELULL] = { .size = MON_COORDS_SIZE(24, 48), .y_offset = 10 }, - [SPECIES_SHIINOTIC] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_SALANDIT] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, - [SPECIES_SALAZZLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_STUFFUL] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_BEWEAR] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_BOUNSWEET] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 16 }, - [SPECIES_STEENEE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_TSAREENA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_COMFEY] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_ORANGURU] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_PASSIMIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_WIMPOD] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_GOLISOPOD] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SANDYGAST] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_PALOSSAND] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_PYUKUMUKU] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, - [SPECIES_TYPE_NULL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_SILVALLY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_MINIOR] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_KOMALA] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - [SPECIES_TURTONATOR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_TOGEDEMARU] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_MIMIKYU] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - [SPECIES_BRUXISH] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, - [SPECIES_DRAMPA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_DHELMISE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 1 }, - [SPECIES_JANGMO_O] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, - [SPECIES_HAKAMO_O] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_KOMMO_O] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_TAPU_KOKO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_TAPU_LELE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_TAPU_BULU] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_TAPU_FINI] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_COSMOG] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_COSMOEM] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_SOLGALEO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_LUNALA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_NIHILEGO] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_BUZZWOLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_PHEROMOSA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_XURKITREE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CELESTEELA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_KARTANA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_GUZZLORD] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_NECROZMA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_MAGEARNA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_MARSHADOW] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 9 }, - [SPECIES_POIPOLE] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 8 }, - [SPECIES_NAGANADEL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_STAKATAKA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_BLACEPHALON] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_ZERAORA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_MELTAN] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, - [SPECIES_MELMETAL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, -#endif -#if P_GEN_8_POKEMON == TRUE - [SPECIES_GROOKEY] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 12 }, - [SPECIES_THWACKEY] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, - [SPECIES_RILLABOOM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_SCORBUNNY] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 8 }, - [SPECIES_RABOOT] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_CINDERACE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, - [SPECIES_SOBBLE] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 11 }, - [SPECIES_DRIZZILE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, - [SPECIES_INTELEON] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 1 }, - [SPECIES_SKWOVET] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, - [SPECIES_GREEDENT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 4 }, - [SPECIES_ROOKIDEE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 16 }, - [SPECIES_CORVISQUIRE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_CORVIKNIGHT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_BLIPBUG] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 12 }, - [SPECIES_DOTTLER] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_ORBEETLE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, - [SPECIES_NICKIT] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_THIEVUL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_GOSSIFLEUR] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 11 }, - [SPECIES_ELDEGOSS] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, - [SPECIES_WOOLOO] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_DUBWOOL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 5 }, - [SPECIES_CHEWTLE] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 13 }, - [SPECIES_DREDNAW] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_YAMPER] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, - [SPECIES_BOLTUND] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 5 }, - [SPECIES_ROLYCOLY] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 16 }, - [SPECIES_CARKOL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, - [SPECIES_COALOSSAL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_APPLIN] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 16 }, - [SPECIES_FLAPPLE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, - [SPECIES_APPLETUN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_SILICOBRA] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, - [SPECIES_SANDACONDA] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, - [SPECIES_CRAMORANT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ARROKUDA] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 13 }, - [SPECIES_BARRASKEWDA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_TOXEL] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_TOXTRICITY] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 1 }, - [SPECIES_SIZZLIPEDE] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 17 }, - [SPECIES_CENTISKORCH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_CLOBBOPUS] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, - [SPECIES_GRAPPLOCT] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 5 }, - [SPECIES_SINISTEA] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 17 }, - [SPECIES_POLTEAGEIST] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_HATENNA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 12 }, - [SPECIES_HATTREM] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_HATTERENE] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_IMPIDIMP] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - [SPECIES_MORGREM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_GRIMMSNARL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_OBSTAGOON] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_PERRSERKER] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_CURSOLA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SIRFETCHD] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_MR_RIME] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 4 }, - [SPECIES_RUNERIGUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_MILCERY] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, - [SPECIES_ALCREMIE] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_FALINKS] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_PINCURCHIN] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, - [SPECIES_SNOM] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 20 }, - [SPECIES_FROSMOTH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_STONJOURNER] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_EISCUE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, - [SPECIES_INDEEDEE] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 9 }, - [SPECIES_MORPEKO] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, - [SPECIES_CUFANT] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_COPPERAJAH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_DRACOZOLT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_ARCTOZOLT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_DRACOVISH] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_ARCTOVISH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_DURALUDON] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_DREEPY] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_DRAKLOAK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_DRAGAPULT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_ZACIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_ZAMAZENTA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ETERNATUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_KUBFU] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, - [SPECIES_URSHIFU] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_ZARUDE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_REGIELEKI] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, - [SPECIES_REGIDRAGO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_GLASTRIER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SPECTRIER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CALYREX] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_WYRDEER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_KLEAVOR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_URSALUNA] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_BASCULEGION] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SNEASLER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_OVERQWIL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ENAMORUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, -#endif - // Megas - [SPECIES_VENUSAUR_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_CHARIZARD_MEGA_X] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CHARIZARD_MEGA_Y] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_BLASTOISE_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_BEEDRILL_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_PIDGEOT_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ALAKAZAM_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SLOWBRO_MEGA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_GENGAR_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 7 }, - [SPECIES_KANGASKHAN_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_PINSIR_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_GYARADOS_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_AERODACTYL_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_MEWTWO_MEGA_X] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_MEWTWO_MEGA_Y] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, - [SPECIES_AMPHAROS_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_STEELIX_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SCIZOR_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_HERACROSS_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_HOUNDOOM_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_TYRANITAR_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SCEPTILE_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_BLAZIKEN_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SWAMPERT_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 6 }, - [SPECIES_GARDEVOIR_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SABLEYE_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_MAWILE_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 5 }, - [SPECIES_AGGRON_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_MEDICHAM_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_MANECTRIC_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_SHARPEDO_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CAMERUPT_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_ALTARIA_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_BANETTE_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ABSOL_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_GLALIE_MEGA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_SALAMENCE_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_METAGROSS_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_LATIAS_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_LATIOS_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_LOPUNNY_MEGA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_GARCHOMP_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_LUCARIO_MEGA] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_ABOMASNOW_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_GALLADE_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_AUDINO_MEGA] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 6 }, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_DIANCIE_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, -#endif - // Special Mega + Primals - [SPECIES_RAYQUAZA_MEGA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_KYOGRE_PRIMAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_GROUDON_PRIMAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Alolan Forms - [SPECIES_RATTATA_ALOLAN] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - [SPECIES_RATICATE_ALOLAN] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - [SPECIES_RAICHU_ALOLAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SANDSHREW_ALOLAN] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, - [SPECIES_SANDSLASH_ALOLAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_VULPIX_ALOLAN] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - [SPECIES_NINETALES_ALOLAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_DIGLETT_ALOLAN] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 19 }, - [SPECIES_DUGTRIO_ALOLAN] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_MEOWTH_ALOLAN] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, - [SPECIES_PERSIAN_ALOLAN] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, - [SPECIES_GEODUDE_ALOLAN] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 17 }, - [SPECIES_GRAVELER_ALOLAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_GOLEM_ALOLAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_GRIMER_ALOLAN] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, - [SPECIES_MUK_ALOLAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - [SPECIES_EXEGGUTOR_ALOLAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_MAROWAK_ALOLAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - // Galarian Forms - [SPECIES_MEOWTH_GALARIAN] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_PONYTA_GALARIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_RAPIDASH_GALARIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SLOWPOKE_GALARIAN] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 19 }, - [SPECIES_SLOWBRO_GALARIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - [SPECIES_FARFETCHD_GALARIAN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, - [SPECIES_WEEZING_GALARIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_MR_MIME_GALARIAN] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - [SPECIES_ARTICUNO_GALARIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_ZAPDOS_GALARIAN] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_MOLTRES_GALARIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_SLOWKING_GALARIAN] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_CORSOLA_GALARIAN] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - [SPECIES_ZIGZAGOON_GALARIAN] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, - [SPECIES_LINOONE_GALARIAN] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, -#if P_GEN_5_POKEMON == TRUE - [SPECIES_DARUMAKA_GALARIAN] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, - [SPECIES_DARMANITAN_GALARIAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_YAMASK_GALARIAN] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, - [SPECIES_STUNFISK_GALARIAN] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, -#endif - // Hisuian Forms - [SPECIES_GROWLITHE_HISUIAN] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 6 }, - [SPECIES_ARCANINE_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_VOLTORB_HISUIAN] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 0 }, - [SPECIES_ELECTRODE_HISUIAN] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 0 }, - [SPECIES_TYPHLOSION_HISUIAN] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, - [SPECIES_QWILFISH_HISUIAN] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 8 }, - [SPECIES_SNEASEL_HISUIAN] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, -#if P_GEN_5_POKEMON == TRUE - [SPECIES_SAMUROTT_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_LILLIGANT_HISUIAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_ZORUA_HISUIAN] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_ZOROARK_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, - [SPECIES_BRAVIARY_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_SLIGGOO_HISUIAN] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_GOODRA_HISUIAN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_AVALUGG_HISUIAN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 5 }, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_DECIDUEYE_HISUIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, -#endif - // Misc Forms - // Cosplay Pikachu - [SPECIES_PIKACHU_COSPLAY] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_PIKACHU_ROCK_STAR] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_PIKACHU_BELLE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_PIKACHU_POP_STAR] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_PIKACHU_PH_D] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_PIKACHU_LIBRE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - // Cap Pikachu - [SPECIES_PIKACHU_ORIGINAL_CAP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_PIKACHU_HOENN_CAP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_PIKACHU_SINNOH_CAP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_PIKACHU_UNOVA_CAP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_PIKACHU_KALOS_CAP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_PIKACHU_ALOLA_CAP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_PIKACHU_PARTNER_CAP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - [SPECIES_PIKACHU_WORLD_CAP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, - // Pichu - [SPECIES_PICHU_SPIKY_EARED] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, - // Unown - [SPECIES_UNOWN_B] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 16 }, - [SPECIES_UNOWN_C] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 16 }, - [SPECIES_UNOWN_D] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 16 }, - [SPECIES_UNOWN_E] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 17 }, - [SPECIES_UNOWN_F] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 17 }, - [SPECIES_UNOWN_G] = { .size = MON_COORDS_SIZE(24, 40), .y_offset = 14 }, - [SPECIES_UNOWN_H] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 16 }, - [SPECIES_UNOWN_I] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 16 }, - [SPECIES_UNOWN_J] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 17 }, - [SPECIES_UNOWN_K] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 17 }, - [SPECIES_UNOWN_L] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 19 }, - [SPECIES_UNOWN_M] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 19 }, - [SPECIES_UNOWN_N] = { .size = MON_COORDS_SIZE(32, 24), .y_offset = 20 }, - [SPECIES_UNOWN_O] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 16 }, - [SPECIES_UNOWN_P] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 19 }, - [SPECIES_UNOWN_Q] = { .size = MON_COORDS_SIZE(32, 24), .y_offset = 21 }, - [SPECIES_UNOWN_R] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 19 }, - [SPECIES_UNOWN_S] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 12 }, - [SPECIES_UNOWN_T] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 18 }, - [SPECIES_UNOWN_U] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 18 }, - [SPECIES_UNOWN_V] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 18 }, - [SPECIES_UNOWN_W] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 19 }, - [SPECIES_UNOWN_X] = { .size = MON_COORDS_SIZE(24, 24), .y_offset = 21 }, - [SPECIES_UNOWN_Y] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 17 }, - [SPECIES_UNOWN_Z] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 16 }, - [SPECIES_UNOWN_EMARK] = { .size = MON_COORDS_SIZE(24, 40), .y_offset = 15 }, - [SPECIES_UNOWN_QMARK] = { .size = MON_COORDS_SIZE(24, 40), .y_offset = 13 }, - // Castform - [SPECIES_CASTFORM_SUNNY] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, - [SPECIES_CASTFORM_RAINY] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, - [SPECIES_CASTFORM_SNOWY] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 8 }, - // Deoxys - [SPECIES_DEOXYS_ATTACK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_DEOXYS_DEFENSE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_DEOXYS_SPEED] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, -#if P_GEN_4_POKEMON == TRUE - // Burmy - [SPECIES_BURMY_SANDY_CLOAK] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 12 }, - [SPECIES_BURMY_TRASH_CLOAK] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 8 }, - // Wormadam - [SPECIES_WORMADAM_SANDY_CLOAK] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 10 }, - [SPECIES_WORMADAM_TRASH_CLOAK] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 10 }, - // Cherrim - [SPECIES_CHERRIM_SUNSHINE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - // Shellos - [SPECIES_SHELLOS_EAST_SEA] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - // Gastrodon - [SPECIES_GASTRODON_EAST_SEA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, - // Rotom - [SPECIES_ROTOM_HEAT] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, - [SPECIES_ROTOM_WASH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_ROTOM_FROST] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - [SPECIES_ROTOM_FAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 8 }, - [SPECIES_ROTOM_MOW] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 12 }, - // Origin Forme - [SPECIES_DIALGA_ORIGIN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_PALKIA_ORIGIN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_GIRATINA_ORIGIN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Shaymin - [SPECIES_SHAYMIN_SKY] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, - // Arceus - [SPECIES_ARCEUS_FIGHTING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ARCEUS_FLYING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ARCEUS_POISON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ARCEUS_GROUND] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ARCEUS_ROCK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ARCEUS_BUG] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ARCEUS_GHOST] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ARCEUS_STEEL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ARCEUS_FIRE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ARCEUS_WATER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ARCEUS_GRASS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ARCEUS_ELECTRIC] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ARCEUS_PSYCHIC] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ARCEUS_ICE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ARCEUS_DRAGON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ARCEUS_DARK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ARCEUS_FAIRY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, -#endif -#if P_GEN_5_POKEMON == TRUE - // Basculin - [SPECIES_BASCULIN_BLUE_STRIPED] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 16 }, - [SPECIES_BASCULIN_WHITE_STRIPED] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 10 }, - // Darmanitan - [SPECIES_DARMANITAN_ZEN_MODE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - // Deerling - [SPECIES_DEERLING_SUMMER] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, - [SPECIES_DEERLING_AUTUMN] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, - [SPECIES_DEERLING_WINTER] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, - // Sawsbuck - [SPECIES_SAWSBUCK_SUMMER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SAWSBUCK_AUTUMN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SAWSBUCK_WINTER] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - // Therian Forms - [SPECIES_TORNADUS_THERIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_THUNDURUS_THERIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_LANDORUS_THERIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Kyurem - [SPECIES_KYUREM_WHITE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_KYUREM_BLACK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Keldeo - [SPECIES_KELDEO_RESOLUTE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - // Meloetta - [SPECIES_MELOETTA_PIROUETTE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 2 }, - // Genesect - [SPECIES_GENESECT_DOUSE_DRIVE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_GENESECT_SHOCK_DRIVE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_GENESECT_BURN_DRIVE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - [SPECIES_GENESECT_CHILL_DRIVE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, -#endif -#if P_GEN_6_POKEMON == TRUE - // Greninja - [SPECIES_GRENINJA_BATTLE_BOND] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, - [SPECIES_GRENINJA_ASH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Vivillon - [SPECIES_VIVILLON_POLAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_TUNDRA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_CONTINENTAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_GARDEN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_ELEGANT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_MEADOW] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_MODERN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_MARINE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_ARCHIPELAGO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_HIGH_PLAINS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_SANDSTORM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_RIVER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_MONSOON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_SAVANNA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_SUN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_OCEAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_JUNGLE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_FANCY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_VIVILLON_POKE_BALL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Flabébé - [SPECIES_FLABEBE_YELLOW_FLOWER] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_FLABEBE_ORANGE_FLOWER] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_FLABEBE_BLUE_FLOWER] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - [SPECIES_FLABEBE_WHITE_FLOWER] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, - // Floette - [SPECIES_FLOETTE_YELLOW_FLOWER] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_FLOETTE_ORANGE_FLOWER] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_FLOETTE_BLUE_FLOWER] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_FLOETTE_WHITE_FLOWER] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, - [SPECIES_FLOETTE_ETERNAL_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - // Florges - [SPECIES_FLORGES_YELLOW_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_FLORGES_ORANGE_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_FLORGES_BLUE_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_FLORGES_WHITE_FLOWER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Furfrou - [SPECIES_FURFROU_HEART_TRIM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_FURFROU_STAR_TRIM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_FURFROU_DIAMOND_TRIM] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_FURFROU_DEBUTANTE_TRIM] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_FURFROU_MATRON_TRIM] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_FURFROU_DANDY_TRIM] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_FURFROU_LA_REINE_TRIM] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - [SPECIES_FURFROU_KABUKI_TRIM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_FURFROU_PHARAOH_TRIM] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - // Meowstic - [SPECIES_MEOWSTIC_FEMALE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - // Aegislash - [SPECIES_AEGISLASH_BLADE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Pumpkaboo - [SPECIES_PUMPKABOO_SMALL] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, - [SPECIES_PUMPKABOO_LARGE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 12 }, - [SPECIES_PUMPKABOO_SUPER] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, - // Gourgeist - [SPECIES_GOURGEIST_SMALL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 5 }, - [SPECIES_GOURGEIST_LARGE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - [SPECIES_GOURGEIST_SUPER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Xerneas - [SPECIES_XERNEAS_ACTIVE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Zygarde - [SPECIES_ZYGARDE_10] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ZYGARDE_COMPLETE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Hoopa - [SPECIES_HOOPA_UNBOUND] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, -#endif -#if P_GEN_7_POKEMON == TRUE - // Oricorio - [SPECIES_ORICORIO_POM_POM] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, - [SPECIES_ORICORIO_PAU] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, - [SPECIES_ORICORIO_SENSU] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, - // Rockruff - [SPECIES_ROCKRUFF_OWN_TEMPO] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, - // Lycanroc - [SPECIES_LYCANROC_MIDNIGHT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, - [SPECIES_LYCANROC_DUSK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - // Wishiwashi - [SPECIES_WISHIWASHI_SCHOOL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 4 }, - // Silvally - [SPECIES_SILVALLY_FIGHTING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_FLYING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_POISON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_GROUND] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_ROCK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_BUG] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_GHOST] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_STEEL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_FIRE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_WATER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_GRASS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_ELECTRIC] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_PSYCHIC] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_ICE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_DRAGON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_DARK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_SILVALLY_FAIRY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Minior - [SPECIES_MINIOR_METEOR_ORANGE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_MINIOR_METEOR_YELLOW] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_MINIOR_METEOR_GREEN] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_MINIOR_METEOR_BLUE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_MINIOR_METEOR_INDIGO] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_MINIOR_METEOR_VIOLET] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_MINIOR_CORE_RED] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_MINIOR_CORE_ORANGE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_MINIOR_CORE_YELLOW] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_MINIOR_CORE_GREEN] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_MINIOR_CORE_BLUE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_MINIOR_CORE_INDIGO] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - [SPECIES_MINIOR_CORE_VIOLET] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, - // Mimikyu - [SPECIES_MIMIKYU_BUSTED] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, - // Necrozma - [SPECIES_NECROZMA_DUSK_MANE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_NECROZMA_DAWN_WINGS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_NECROZMA_ULTRA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Magearna - [SPECIES_MAGEARNA_ORIGINAL_COLOR] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, -#endif -#if P_GEN_8_POKEMON == TRUE - // Cramorant - [SPECIES_CRAMORANT_GULPING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CRAMORANT_GORGING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Toxtricity - [SPECIES_TOXTRICITY_LOW_KEY] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, - // Sinistea - [SPECIES_SINISTEA_ANTIQUE] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 17 }, - // Polteageist - [SPECIES_POLTEAGEIST_ANTIQUE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, - // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_MATCHA_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_MINT_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_LEMON_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_SALTED_CREAM] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_RUBY_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, - // Eiscue - [SPECIES_EISCUE_NOICE_FACE] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 0 }, - // Indeedee - [SPECIES_INDEEDEE_FEMALE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, - // Morpeko - [SPECIES_MORPEKO_HANGRY] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, - // Zacian - [SPECIES_ZACIAN_CROWNED_SWORD] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Zamazenta - [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - // Eternatus - [SPECIES_ETERNATUS_ETERNAMAX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, - // Urshifu - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, - // Zarude - [SPECIES_ZARUDE_DADA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, - // Calyrex - [SPECIES_CALYREX_ICE_RIDER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_CALYREX_SHADOW_RIDER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - [SPECIES_ENAMORUS_THERIAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, - // Basculegion - [SPECIES_BASCULEGION_FEMALE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, -#endif - // Egg - [SPECIES_EGG] = { .size = MON_COORDS_SIZE(24, 24), .y_offset = 20 }, - -}; diff --git a/src/data/pokemon_graphics/front_pic_table.h b/src/data/pokemon_graphics/front_pic_table.h deleted file mode 100644 index 27fefa9507..0000000000 --- a/src/data/pokemon_graphics/front_pic_table.h +++ /dev/null @@ -1,1441 +0,0 @@ -const struct CompressedSpriteSheet gMonFrontPicTable[NUM_SPECIES + 1] = -{ - SPECIES_SPRITE(NONE, gMonFrontPic_CircledQuestionMark), - SPECIES_SPRITE(BULBASAUR, gMonFrontPic_Bulbasaur), - SPECIES_SPRITE(IVYSAUR, gMonFrontPic_Ivysaur), - SPECIES_SPRITE(VENUSAUR, gMonFrontPic_Venusaur), - SPECIES_SPRITE(CHARMANDER, gMonFrontPic_Charmander), - SPECIES_SPRITE(CHARMELEON, gMonFrontPic_Charmeleon), - SPECIES_SPRITE(CHARIZARD, gMonFrontPic_Charizard), - SPECIES_SPRITE(SQUIRTLE, gMonFrontPic_Squirtle), - SPECIES_SPRITE(WARTORTLE, gMonFrontPic_Wartortle), - SPECIES_SPRITE(BLASTOISE, gMonFrontPic_Blastoise), - SPECIES_SPRITE(CATERPIE, gMonFrontPic_Caterpie), - SPECIES_SPRITE(METAPOD, gMonFrontPic_Metapod), - SPECIES_SPRITE(BUTTERFREE, gMonFrontPic_Butterfree), - SPECIES_SPRITE(WEEDLE, gMonFrontPic_Weedle), - SPECIES_SPRITE(KAKUNA, gMonFrontPic_Kakuna), - SPECIES_SPRITE(BEEDRILL, gMonFrontPic_Beedrill), - SPECIES_SPRITE(PIDGEY, gMonFrontPic_Pidgey), - SPECIES_SPRITE(PIDGEOTTO, gMonFrontPic_Pidgeotto), - SPECIES_SPRITE(PIDGEOT, gMonFrontPic_Pidgeot), - SPECIES_SPRITE(RATTATA, gMonFrontPic_Rattata), - SPECIES_SPRITE(RATICATE, gMonFrontPic_Raticate), - SPECIES_SPRITE(SPEAROW, gMonFrontPic_Spearow), - SPECIES_SPRITE(FEAROW, gMonFrontPic_Fearow), - SPECIES_SPRITE(EKANS, gMonFrontPic_Ekans), - SPECIES_SPRITE(ARBOK, gMonFrontPic_Arbok), - SPECIES_SPRITE(PIKACHU, gMonFrontPic_Pikachu), - SPECIES_SPRITE(RAICHU, gMonFrontPic_Raichu), - SPECIES_SPRITE(SANDSHREW, gMonFrontPic_Sandshrew), - SPECIES_SPRITE(SANDSLASH, gMonFrontPic_Sandslash), - SPECIES_SPRITE(NIDORAN_F, gMonFrontPic_NidoranF), - SPECIES_SPRITE(NIDORINA, gMonFrontPic_Nidorina), - SPECIES_SPRITE(NIDOQUEEN, gMonFrontPic_Nidoqueen), - SPECIES_SPRITE(NIDORAN_M, gMonFrontPic_NidoranM), - SPECIES_SPRITE(NIDORINO, gMonFrontPic_Nidorino), - SPECIES_SPRITE(NIDOKING, gMonFrontPic_Nidoking), - SPECIES_SPRITE(CLEFAIRY, gMonFrontPic_Clefairy), - SPECIES_SPRITE(CLEFABLE, gMonFrontPic_Clefable), - SPECIES_SPRITE(VULPIX, gMonFrontPic_Vulpix), - SPECIES_SPRITE(NINETALES, gMonFrontPic_Ninetales), - SPECIES_SPRITE(JIGGLYPUFF, gMonFrontPic_Jigglypuff), - SPECIES_SPRITE(WIGGLYTUFF, gMonFrontPic_Wigglytuff), - SPECIES_SPRITE(ZUBAT, gMonFrontPic_Zubat), - SPECIES_SPRITE(GOLBAT, gMonFrontPic_Golbat), - SPECIES_SPRITE(ODDISH, gMonFrontPic_Oddish), - SPECIES_SPRITE(GLOOM, gMonFrontPic_Gloom), - SPECIES_SPRITE(VILEPLUME, gMonFrontPic_Vileplume), - SPECIES_SPRITE(PARAS, gMonFrontPic_Paras), - SPECIES_SPRITE(PARASECT, gMonFrontPic_Parasect), - SPECIES_SPRITE(VENONAT, gMonFrontPic_Venonat), - SPECIES_SPRITE(VENOMOTH, gMonFrontPic_Venomoth), - SPECIES_SPRITE(DIGLETT, gMonFrontPic_Diglett), - SPECIES_SPRITE(DUGTRIO, gMonFrontPic_Dugtrio), - SPECIES_SPRITE(MEOWTH, gMonFrontPic_Meowth), - SPECIES_SPRITE(PERSIAN, gMonFrontPic_Persian), - SPECIES_SPRITE(PSYDUCK, gMonFrontPic_Psyduck), - SPECIES_SPRITE(GOLDUCK, gMonFrontPic_Golduck), - SPECIES_SPRITE(MANKEY, gMonFrontPic_Mankey), - SPECIES_SPRITE(PRIMEAPE, gMonFrontPic_Primeape), - SPECIES_SPRITE(GROWLITHE, gMonFrontPic_Growlithe), - SPECIES_SPRITE(ARCANINE, gMonFrontPic_Arcanine), - SPECIES_SPRITE(POLIWAG, gMonFrontPic_Poliwag), - SPECIES_SPRITE(POLIWHIRL, gMonFrontPic_Poliwhirl), - SPECIES_SPRITE(POLIWRATH, gMonFrontPic_Poliwrath), - SPECIES_SPRITE(ABRA, gMonFrontPic_Abra), - SPECIES_SPRITE(KADABRA, gMonFrontPic_Kadabra), - SPECIES_SPRITE(ALAKAZAM, gMonFrontPic_Alakazam), - SPECIES_SPRITE(MACHOP, gMonFrontPic_Machop), - SPECIES_SPRITE(MACHOKE, gMonFrontPic_Machoke), - SPECIES_SPRITE(MACHAMP, gMonFrontPic_Machamp), - SPECIES_SPRITE(BELLSPROUT, gMonFrontPic_Bellsprout), - SPECIES_SPRITE(WEEPINBELL, gMonFrontPic_Weepinbell), - SPECIES_SPRITE(VICTREEBEL, gMonFrontPic_Victreebel), - SPECIES_SPRITE(TENTACOOL, gMonFrontPic_Tentacool), - SPECIES_SPRITE(TENTACRUEL, gMonFrontPic_Tentacruel), - SPECIES_SPRITE(GEODUDE, gMonFrontPic_Geodude), - SPECIES_SPRITE(GRAVELER, gMonFrontPic_Graveler), - SPECIES_SPRITE(GOLEM, gMonFrontPic_Golem), - SPECIES_SPRITE(PONYTA, gMonFrontPic_Ponyta), - SPECIES_SPRITE(RAPIDASH, gMonFrontPic_Rapidash), - SPECIES_SPRITE(SLOWPOKE, gMonFrontPic_Slowpoke), - SPECIES_SPRITE(SLOWBRO, gMonFrontPic_Slowbro), - SPECIES_SPRITE(MAGNEMITE, gMonFrontPic_Magnemite), - SPECIES_SPRITE(MAGNETON, gMonFrontPic_Magneton), - SPECIES_SPRITE(FARFETCHD, gMonFrontPic_Farfetchd), - SPECIES_SPRITE(DODUO, gMonFrontPic_Doduo), - SPECIES_SPRITE(DODRIO, gMonFrontPic_Dodrio), - SPECIES_SPRITE(SEEL, gMonFrontPic_Seel), - SPECIES_SPRITE(DEWGONG, gMonFrontPic_Dewgong), - SPECIES_SPRITE(GRIMER, gMonFrontPic_Grimer), - SPECIES_SPRITE(MUK, gMonFrontPic_Muk), - SPECIES_SPRITE(SHELLDER, gMonFrontPic_Shellder), - SPECIES_SPRITE(CLOYSTER, gMonFrontPic_Cloyster), - SPECIES_SPRITE(GASTLY, gMonFrontPic_Gastly), - SPECIES_SPRITE(HAUNTER, gMonFrontPic_Haunter), - SPECIES_SPRITE(GENGAR, gMonFrontPic_Gengar), - SPECIES_SPRITE(ONIX, gMonFrontPic_Onix), - SPECIES_SPRITE(DROWZEE, gMonFrontPic_Drowzee), - SPECIES_SPRITE(HYPNO, gMonFrontPic_Hypno), - SPECIES_SPRITE(KRABBY, gMonFrontPic_Krabby), - SPECIES_SPRITE(KINGLER, gMonFrontPic_Kingler), - SPECIES_SPRITE(VOLTORB, gMonFrontPic_Voltorb), - SPECIES_SPRITE(ELECTRODE, gMonFrontPic_Electrode), - SPECIES_SPRITE(EXEGGCUTE, gMonFrontPic_Exeggcute), - SPECIES_SPRITE(EXEGGUTOR, gMonFrontPic_Exeggutor), - SPECIES_SPRITE(CUBONE, gMonFrontPic_Cubone), - SPECIES_SPRITE(MAROWAK, gMonFrontPic_Marowak), - SPECIES_SPRITE(HITMONLEE, gMonFrontPic_Hitmonlee), - SPECIES_SPRITE(HITMONCHAN, gMonFrontPic_Hitmonchan), - SPECIES_SPRITE(LICKITUNG, gMonFrontPic_Lickitung), - SPECIES_SPRITE(KOFFING, gMonFrontPic_Koffing), - SPECIES_SPRITE(WEEZING, gMonFrontPic_Weezing), - SPECIES_SPRITE(RHYHORN, gMonFrontPic_Rhyhorn), - SPECIES_SPRITE(RHYDON, gMonFrontPic_Rhydon), - SPECIES_SPRITE(CHANSEY, gMonFrontPic_Chansey), - SPECIES_SPRITE(TANGELA, gMonFrontPic_Tangela), - SPECIES_SPRITE(KANGASKHAN, gMonFrontPic_Kangaskhan), - SPECIES_SPRITE(HORSEA, gMonFrontPic_Horsea), - SPECIES_SPRITE(SEADRA, gMonFrontPic_Seadra), - SPECIES_SPRITE(GOLDEEN, gMonFrontPic_Goldeen), - SPECIES_SPRITE(SEAKING, gMonFrontPic_Seaking), - SPECIES_SPRITE(STARYU, gMonFrontPic_Staryu), - SPECIES_SPRITE(STARMIE, gMonFrontPic_Starmie), - SPECIES_SPRITE(MR_MIME, gMonFrontPic_MrMime), - SPECIES_SPRITE(SCYTHER, gMonFrontPic_Scyther), - SPECIES_SPRITE(JYNX, gMonFrontPic_Jynx), - SPECIES_SPRITE(ELECTABUZZ, gMonFrontPic_Electabuzz), - SPECIES_SPRITE(MAGMAR, gMonFrontPic_Magmar), - SPECIES_SPRITE(PINSIR, gMonFrontPic_Pinsir), - SPECIES_SPRITE(TAUROS, gMonFrontPic_Tauros), - SPECIES_SPRITE(MAGIKARP, gMonFrontPic_Magikarp), - SPECIES_SPRITE(GYARADOS, gMonFrontPic_Gyarados), - SPECIES_SPRITE(LAPRAS, gMonFrontPic_Lapras), - SPECIES_SPRITE(DITTO, gMonFrontPic_Ditto), - SPECIES_SPRITE(EEVEE, gMonFrontPic_Eevee), - SPECIES_SPRITE(VAPOREON, gMonFrontPic_Vaporeon), - SPECIES_SPRITE(JOLTEON, gMonFrontPic_Jolteon), - SPECIES_SPRITE(FLAREON, gMonFrontPic_Flareon), - SPECIES_SPRITE(PORYGON, gMonFrontPic_Porygon), - SPECIES_SPRITE(OMANYTE, gMonFrontPic_Omanyte), - SPECIES_SPRITE(OMASTAR, gMonFrontPic_Omastar), - SPECIES_SPRITE(KABUTO, gMonFrontPic_Kabuto), - SPECIES_SPRITE(KABUTOPS, gMonFrontPic_Kabutops), - SPECIES_SPRITE(AERODACTYL, gMonFrontPic_Aerodactyl), - SPECIES_SPRITE(SNORLAX, gMonFrontPic_Snorlax), - SPECIES_SPRITE(ARTICUNO, gMonFrontPic_Articuno), - SPECIES_SPRITE(ZAPDOS, gMonFrontPic_Zapdos), - SPECIES_SPRITE(MOLTRES, gMonFrontPic_Moltres), - SPECIES_SPRITE(DRATINI, gMonFrontPic_Dratini), - SPECIES_SPRITE(DRAGONAIR, gMonFrontPic_Dragonair), - SPECIES_SPRITE(DRAGONITE, gMonFrontPic_Dragonite), - SPECIES_SPRITE(MEWTWO, gMonFrontPic_Mewtwo), - SPECIES_SPRITE(MEW, gMonFrontPic_Mew), - SPECIES_SPRITE(CHIKORITA, gMonFrontPic_Chikorita), - SPECIES_SPRITE(BAYLEEF, gMonFrontPic_Bayleef), - SPECIES_SPRITE(MEGANIUM, gMonFrontPic_Meganium), - SPECIES_SPRITE(CYNDAQUIL, gMonFrontPic_Cyndaquil), - SPECIES_SPRITE(QUILAVA, gMonFrontPic_Quilava), - SPECIES_SPRITE(TYPHLOSION, gMonFrontPic_Typhlosion), - SPECIES_SPRITE(TOTODILE, gMonFrontPic_Totodile), - SPECIES_SPRITE(CROCONAW, gMonFrontPic_Croconaw), - SPECIES_SPRITE(FERALIGATR, gMonFrontPic_Feraligatr), - SPECIES_SPRITE(SENTRET, gMonFrontPic_Sentret), - SPECIES_SPRITE(FURRET, gMonFrontPic_Furret), - SPECIES_SPRITE(HOOTHOOT, gMonFrontPic_Hoothoot), - SPECIES_SPRITE(NOCTOWL, gMonFrontPic_Noctowl), - SPECIES_SPRITE(LEDYBA, gMonFrontPic_Ledyba), - SPECIES_SPRITE(LEDIAN, gMonFrontPic_Ledian), - SPECIES_SPRITE(SPINARAK, gMonFrontPic_Spinarak), - SPECIES_SPRITE(ARIADOS, gMonFrontPic_Ariados), - SPECIES_SPRITE(CROBAT, gMonFrontPic_Crobat), - SPECIES_SPRITE(CHINCHOU, gMonFrontPic_Chinchou), - SPECIES_SPRITE(LANTURN, gMonFrontPic_Lanturn), - SPECIES_SPRITE(PICHU, gMonFrontPic_Pichu), - SPECIES_SPRITE(CLEFFA, gMonFrontPic_Cleffa), - SPECIES_SPRITE(IGGLYBUFF, gMonFrontPic_Igglybuff), - SPECIES_SPRITE(TOGEPI, gMonFrontPic_Togepi), - SPECIES_SPRITE(TOGETIC, gMonFrontPic_Togetic), - SPECIES_SPRITE(NATU, gMonFrontPic_Natu), - SPECIES_SPRITE(XATU, gMonFrontPic_Xatu), - SPECIES_SPRITE(MAREEP, gMonFrontPic_Mareep), - SPECIES_SPRITE(FLAAFFY, gMonFrontPic_Flaaffy), - SPECIES_SPRITE(AMPHAROS, gMonFrontPic_Ampharos), - SPECIES_SPRITE(BELLOSSOM, gMonFrontPic_Bellossom), - SPECIES_SPRITE(MARILL, gMonFrontPic_Marill), - SPECIES_SPRITE(AZUMARILL, gMonFrontPic_Azumarill), - SPECIES_SPRITE(SUDOWOODO, gMonFrontPic_Sudowoodo), - SPECIES_SPRITE(POLITOED, gMonFrontPic_Politoed), - SPECIES_SPRITE(HOPPIP, gMonFrontPic_Hoppip), - SPECIES_SPRITE(SKIPLOOM, gMonFrontPic_Skiploom), - SPECIES_SPRITE(JUMPLUFF, gMonFrontPic_Jumpluff), - SPECIES_SPRITE(AIPOM, gMonFrontPic_Aipom), - SPECIES_SPRITE(SUNKERN, gMonFrontPic_Sunkern), - SPECIES_SPRITE(SUNFLORA, gMonFrontPic_Sunflora), - SPECIES_SPRITE(YANMA, gMonFrontPic_Yanma), - SPECIES_SPRITE(WOOPER, gMonFrontPic_Wooper), - SPECIES_SPRITE(QUAGSIRE, gMonFrontPic_Quagsire), - SPECIES_SPRITE(ESPEON, gMonFrontPic_Espeon), - SPECIES_SPRITE(UMBREON, gMonFrontPic_Umbreon), - SPECIES_SPRITE(MURKROW, gMonFrontPic_Murkrow), - SPECIES_SPRITE(SLOWKING, gMonFrontPic_Slowking), - SPECIES_SPRITE(MISDREAVUS, gMonFrontPic_Misdreavus), - SPECIES_SPRITE(UNOWN, gMonFrontPic_Unown), - SPECIES_SPRITE(WOBBUFFET, gMonFrontPic_Wobbuffet), - SPECIES_SPRITE(GIRAFARIG, gMonFrontPic_Girafarig), - SPECIES_SPRITE(PINECO, gMonFrontPic_Pineco), - SPECIES_SPRITE(FORRETRESS, gMonFrontPic_Forretress), - SPECIES_SPRITE(DUNSPARCE, gMonFrontPic_Dunsparce), - SPECIES_SPRITE(GLIGAR, gMonFrontPic_Gligar), - SPECIES_SPRITE(STEELIX, gMonFrontPic_Steelix), - SPECIES_SPRITE(SNUBBULL, gMonFrontPic_Snubbull), - SPECIES_SPRITE(GRANBULL, gMonFrontPic_Granbull), - SPECIES_SPRITE(QWILFISH, gMonFrontPic_Qwilfish), - SPECIES_SPRITE(SCIZOR, gMonFrontPic_Scizor), - SPECIES_SPRITE(SHUCKLE, gMonFrontPic_Shuckle), - SPECIES_SPRITE(HERACROSS, gMonFrontPic_Heracross), - SPECIES_SPRITE(SNEASEL, gMonFrontPic_Sneasel), - SPECIES_SPRITE(TEDDIURSA, gMonFrontPic_Teddiursa), - SPECIES_SPRITE(URSARING, gMonFrontPic_Ursaring), - SPECIES_SPRITE(SLUGMA, gMonFrontPic_Slugma), - SPECIES_SPRITE(MAGCARGO, gMonFrontPic_Magcargo), - SPECIES_SPRITE(SWINUB, gMonFrontPic_Swinub), - SPECIES_SPRITE(PILOSWINE, gMonFrontPic_Piloswine), - SPECIES_SPRITE(CORSOLA, gMonFrontPic_Corsola), - SPECIES_SPRITE(REMORAID, gMonFrontPic_Remoraid), - SPECIES_SPRITE(OCTILLERY, gMonFrontPic_Octillery), - SPECIES_SPRITE(DELIBIRD, gMonFrontPic_Delibird), - SPECIES_SPRITE(MANTINE, gMonFrontPic_Mantine), - SPECIES_SPRITE(SKARMORY, gMonFrontPic_Skarmory), - SPECIES_SPRITE(HOUNDOUR, gMonFrontPic_Houndour), - SPECIES_SPRITE(HOUNDOOM, gMonFrontPic_Houndoom), - SPECIES_SPRITE(KINGDRA, gMonFrontPic_Kingdra), - SPECIES_SPRITE(PHANPY, gMonFrontPic_Phanpy), - SPECIES_SPRITE(DONPHAN, gMonFrontPic_Donphan), - SPECIES_SPRITE(PORYGON2, gMonFrontPic_Porygon2), - SPECIES_SPRITE(STANTLER, gMonFrontPic_Stantler), - SPECIES_SPRITE(SMEARGLE, gMonFrontPic_Smeargle), - SPECIES_SPRITE(TYROGUE, gMonFrontPic_Tyrogue), - SPECIES_SPRITE(HITMONTOP, gMonFrontPic_Hitmontop), - SPECIES_SPRITE(SMOOCHUM, gMonFrontPic_Smoochum), - SPECIES_SPRITE(ELEKID, gMonFrontPic_Elekid), - SPECIES_SPRITE(MAGBY, gMonFrontPic_Magby), - SPECIES_SPRITE(MILTANK, gMonFrontPic_Miltank), - SPECIES_SPRITE(BLISSEY, gMonFrontPic_Blissey), - SPECIES_SPRITE(RAIKOU, gMonFrontPic_Raikou), - SPECIES_SPRITE(ENTEI, gMonFrontPic_Entei), - SPECIES_SPRITE(SUICUNE, gMonFrontPic_Suicune), - SPECIES_SPRITE(LARVITAR, gMonFrontPic_Larvitar), - SPECIES_SPRITE(PUPITAR, gMonFrontPic_Pupitar), - SPECIES_SPRITE(TYRANITAR, gMonFrontPic_Tyranitar), - SPECIES_SPRITE(LUGIA, gMonFrontPic_Lugia), - SPECIES_SPRITE(HO_OH, gMonFrontPic_HoOh), - SPECIES_SPRITE(CELEBI, gMonFrontPic_Celebi), - SPECIES_SPRITE(TREECKO, gMonFrontPic_Treecko), - SPECIES_SPRITE(GROVYLE, gMonFrontPic_Grovyle), - SPECIES_SPRITE(SCEPTILE, gMonFrontPic_Sceptile), - SPECIES_SPRITE(TORCHIC, gMonFrontPic_Torchic), - SPECIES_SPRITE(COMBUSKEN, gMonFrontPic_Combusken), - SPECIES_SPRITE(BLAZIKEN, gMonFrontPic_Blaziken), - SPECIES_SPRITE(MUDKIP, gMonFrontPic_Mudkip), - SPECIES_SPRITE(MARSHTOMP, gMonFrontPic_Marshtomp), - SPECIES_SPRITE(SWAMPERT, gMonFrontPic_Swampert), - SPECIES_SPRITE(POOCHYENA, gMonFrontPic_Poochyena), - SPECIES_SPRITE(MIGHTYENA, gMonFrontPic_Mightyena), - SPECIES_SPRITE(ZIGZAGOON, gMonFrontPic_Zigzagoon), - SPECIES_SPRITE(LINOONE, gMonFrontPic_Linoone), - SPECIES_SPRITE(WURMPLE, gMonFrontPic_Wurmple), - SPECIES_SPRITE(SILCOON, gMonFrontPic_Silcoon), - SPECIES_SPRITE(BEAUTIFLY, gMonFrontPic_Beautifly), - SPECIES_SPRITE(CASCOON, gMonFrontPic_Cascoon), - SPECIES_SPRITE(DUSTOX, gMonFrontPic_Dustox), - SPECIES_SPRITE(LOTAD, gMonFrontPic_Lotad), - SPECIES_SPRITE(LOMBRE, gMonFrontPic_Lombre), - SPECIES_SPRITE(LUDICOLO, gMonFrontPic_Ludicolo), - SPECIES_SPRITE(SEEDOT, gMonFrontPic_Seedot), - SPECIES_SPRITE(NUZLEAF, gMonFrontPic_Nuzleaf), - SPECIES_SPRITE(SHIFTRY, gMonFrontPic_Shiftry), - SPECIES_SPRITE(NINCADA, gMonFrontPic_Nincada), - SPECIES_SPRITE(NINJASK, gMonFrontPic_Ninjask), - SPECIES_SPRITE(SHEDINJA, gMonFrontPic_Shedinja), - SPECIES_SPRITE(TAILLOW, gMonFrontPic_Taillow), - SPECIES_SPRITE(SWELLOW, gMonFrontPic_Swellow), - SPECIES_SPRITE(SHROOMISH, gMonFrontPic_Shroomish), - SPECIES_SPRITE(BRELOOM, gMonFrontPic_Breloom), - SPECIES_SPRITE(SPINDA, gMonFrontPic_Spinda), - SPECIES_SPRITE(WINGULL, gMonFrontPic_Wingull), - SPECIES_SPRITE(PELIPPER, gMonFrontPic_Pelipper), - SPECIES_SPRITE(SURSKIT, gMonFrontPic_Surskit), - SPECIES_SPRITE(MASQUERAIN, gMonFrontPic_Masquerain), - SPECIES_SPRITE(WAILMER, gMonFrontPic_Wailmer), - SPECIES_SPRITE(WAILORD, gMonFrontPic_Wailord), - SPECIES_SPRITE(SKITTY, gMonFrontPic_Skitty), - SPECIES_SPRITE(DELCATTY, gMonFrontPic_Delcatty), - SPECIES_SPRITE(KECLEON, gMonFrontPic_Kecleon), - SPECIES_SPRITE(BALTOY, gMonFrontPic_Baltoy), - SPECIES_SPRITE(CLAYDOL, gMonFrontPic_Claydol), - SPECIES_SPRITE(NOSEPASS, gMonFrontPic_Nosepass), - SPECIES_SPRITE(TORKOAL, gMonFrontPic_Torkoal), - SPECIES_SPRITE(SABLEYE, gMonFrontPic_Sableye), - SPECIES_SPRITE(BARBOACH, gMonFrontPic_Barboach), - SPECIES_SPRITE(WHISCASH, gMonFrontPic_Whiscash), - SPECIES_SPRITE(LUVDISC, gMonFrontPic_Luvdisc), - SPECIES_SPRITE(CORPHISH, gMonFrontPic_Corphish), - SPECIES_SPRITE(CRAWDAUNT, gMonFrontPic_Crawdaunt), - SPECIES_SPRITE(FEEBAS, gMonFrontPic_Feebas), - SPECIES_SPRITE(MILOTIC, gMonFrontPic_Milotic), - SPECIES_SPRITE(CARVANHA, gMonFrontPic_Carvanha), - SPECIES_SPRITE(SHARPEDO, gMonFrontPic_Sharpedo), - SPECIES_SPRITE(TRAPINCH, gMonFrontPic_Trapinch), - SPECIES_SPRITE(VIBRAVA, gMonFrontPic_Vibrava), - SPECIES_SPRITE(FLYGON, gMonFrontPic_Flygon), - SPECIES_SPRITE(MAKUHITA, gMonFrontPic_Makuhita), - SPECIES_SPRITE(HARIYAMA, gMonFrontPic_Hariyama), - SPECIES_SPRITE(ELECTRIKE, gMonFrontPic_Electrike), - SPECIES_SPRITE(MANECTRIC, gMonFrontPic_Manectric), - SPECIES_SPRITE(NUMEL, gMonFrontPic_Numel), - SPECIES_SPRITE(CAMERUPT, gMonFrontPic_Camerupt), - SPECIES_SPRITE(SPHEAL, gMonFrontPic_Spheal), - SPECIES_SPRITE(SEALEO, gMonFrontPic_Sealeo), - SPECIES_SPRITE(WALREIN, gMonFrontPic_Walrein), - SPECIES_SPRITE(CACNEA, gMonFrontPic_Cacnea), - SPECIES_SPRITE(CACTURNE, gMonFrontPic_Cacturne), - SPECIES_SPRITE(SNORUNT, gMonFrontPic_Snorunt), - SPECIES_SPRITE(GLALIE, gMonFrontPic_Glalie), - SPECIES_SPRITE(LUNATONE, gMonFrontPic_Lunatone), - SPECIES_SPRITE(SOLROCK, gMonFrontPic_Solrock), - SPECIES_SPRITE(AZURILL, gMonFrontPic_Azurill), - SPECIES_SPRITE(SPOINK, gMonFrontPic_Spoink), - SPECIES_SPRITE(GRUMPIG, gMonFrontPic_Grumpig), - SPECIES_SPRITE(PLUSLE, gMonFrontPic_Plusle), - SPECIES_SPRITE(MINUN, gMonFrontPic_Minun), - SPECIES_SPRITE(MAWILE, gMonFrontPic_Mawile), - SPECIES_SPRITE(MEDITITE, gMonFrontPic_Meditite), - SPECIES_SPRITE(MEDICHAM, gMonFrontPic_Medicham), - SPECIES_SPRITE(SWABLU, gMonFrontPic_Swablu), - SPECIES_SPRITE(ALTARIA, gMonFrontPic_Altaria), - SPECIES_SPRITE(WYNAUT, gMonFrontPic_Wynaut), - SPECIES_SPRITE(DUSKULL, gMonFrontPic_Duskull), - SPECIES_SPRITE(DUSCLOPS, gMonFrontPic_Dusclops), - SPECIES_SPRITE(ROSELIA, gMonFrontPic_Roselia), - SPECIES_SPRITE(SLAKOTH, gMonFrontPic_Slakoth), - SPECIES_SPRITE(VIGOROTH, gMonFrontPic_Vigoroth), - SPECIES_SPRITE(SLAKING, gMonFrontPic_Slaking), - SPECIES_SPRITE(GULPIN, gMonFrontPic_Gulpin), - SPECIES_SPRITE(SWALOT, gMonFrontPic_Swalot), - SPECIES_SPRITE(TROPIUS, gMonFrontPic_Tropius), - SPECIES_SPRITE(WHISMUR, gMonFrontPic_Whismur), - SPECIES_SPRITE(LOUDRED, gMonFrontPic_Loudred), - SPECIES_SPRITE(EXPLOUD, gMonFrontPic_Exploud), - SPECIES_SPRITE(CLAMPERL, gMonFrontPic_Clamperl), - SPECIES_SPRITE(HUNTAIL, gMonFrontPic_Huntail), - SPECIES_SPRITE(GOREBYSS, gMonFrontPic_Gorebyss), - SPECIES_SPRITE(ABSOL, gMonFrontPic_Absol), - SPECIES_SPRITE(SHUPPET, gMonFrontPic_Shuppet), - SPECIES_SPRITE(BANETTE, gMonFrontPic_Banette), - SPECIES_SPRITE(SEVIPER, gMonFrontPic_Seviper), - SPECIES_SPRITE(ZANGOOSE, gMonFrontPic_Zangoose), - SPECIES_SPRITE(RELICANTH, gMonFrontPic_Relicanth), - SPECIES_SPRITE(ARON, gMonFrontPic_Aron), - SPECIES_SPRITE(LAIRON, gMonFrontPic_Lairon), - SPECIES_SPRITE(AGGRON, gMonFrontPic_Aggron), - SPECIES_SPRITE(CASTFORM, gMonFrontPic_Castform), - SPECIES_SPRITE(VOLBEAT, gMonFrontPic_Volbeat), - SPECIES_SPRITE(ILLUMISE, gMonFrontPic_Illumise), - SPECIES_SPRITE(LILEEP, gMonFrontPic_Lileep), - SPECIES_SPRITE(CRADILY, gMonFrontPic_Cradily), - SPECIES_SPRITE(ANORITH, gMonFrontPic_Anorith), - SPECIES_SPRITE(ARMALDO, gMonFrontPic_Armaldo), - SPECIES_SPRITE(RALTS, gMonFrontPic_Ralts), - SPECIES_SPRITE(KIRLIA, gMonFrontPic_Kirlia), - SPECIES_SPRITE(GARDEVOIR, gMonFrontPic_Gardevoir), - SPECIES_SPRITE(BAGON, gMonFrontPic_Bagon), - SPECIES_SPRITE(SHELGON, gMonFrontPic_Shelgon), - SPECIES_SPRITE(SALAMENCE, gMonFrontPic_Salamence), - SPECIES_SPRITE(BELDUM, gMonFrontPic_Beldum), - SPECIES_SPRITE(METANG, gMonFrontPic_Metang), - SPECIES_SPRITE(METAGROSS, gMonFrontPic_Metagross), - SPECIES_SPRITE(REGIROCK, gMonFrontPic_Regirock), - SPECIES_SPRITE(REGICE, gMonFrontPic_Regice), - SPECIES_SPRITE(REGISTEEL, gMonFrontPic_Registeel), - SPECIES_SPRITE(KYOGRE, gMonFrontPic_Kyogre), - SPECIES_SPRITE(GROUDON, gMonFrontPic_Groudon), - SPECIES_SPRITE(RAYQUAZA, gMonFrontPic_Rayquaza), - SPECIES_SPRITE(LATIAS, gMonFrontPic_Latias), - SPECIES_SPRITE(LATIOS, gMonFrontPic_Latios), - SPECIES_SPRITE(JIRACHI, gMonFrontPic_Jirachi), - SPECIES_SPRITE(DEOXYS, gMonFrontPic_Deoxys), - SPECIES_SPRITE(CHIMECHO, gMonFrontPic_Chimecho), -#if P_GEN_4_POKEMON == TRUE - SPECIES_SPRITE(TURTWIG, gMonFrontPic_Turtwig), - SPECIES_SPRITE(GROTLE, gMonFrontPic_Grotle), - SPECIES_SPRITE(TORTERRA, gMonFrontPic_Torterra), - SPECIES_SPRITE(CHIMCHAR, gMonFrontPic_Chimchar), - SPECIES_SPRITE(MONFERNO, gMonFrontPic_Monferno), - SPECIES_SPRITE(INFERNAPE, gMonFrontPic_Infernape), - SPECIES_SPRITE(PIPLUP, gMonFrontPic_Piplup), - SPECIES_SPRITE(PRINPLUP, gMonFrontPic_Prinplup), - SPECIES_SPRITE(EMPOLEON, gMonFrontPic_Empoleon), - SPECIES_SPRITE(STARLY, gMonFrontPic_Starly), - SPECIES_SPRITE(STARAVIA, gMonFrontPic_Staravia), - SPECIES_SPRITE(STARAPTOR, gMonFrontPic_Staraptor), - SPECIES_SPRITE(BIDOOF, gMonFrontPic_Bidoof), - SPECIES_SPRITE(BIBAREL, gMonFrontPic_Bibarel), - SPECIES_SPRITE(KRICKETOT, gMonFrontPic_Kricketot), - SPECIES_SPRITE(KRICKETUNE, gMonFrontPic_Kricketune), - SPECIES_SPRITE(SHINX, gMonFrontPic_Shinx), - SPECIES_SPRITE(LUXIO, gMonFrontPic_Luxio), - SPECIES_SPRITE(LUXRAY, gMonFrontPic_Luxray), - SPECIES_SPRITE(BUDEW, gMonFrontPic_Budew), - SPECIES_SPRITE(ROSERADE, gMonFrontPic_Roserade), - SPECIES_SPRITE(CRANIDOS, gMonFrontPic_Cranidos), - SPECIES_SPRITE(RAMPARDOS, gMonFrontPic_Rampardos), - SPECIES_SPRITE(SHIELDON, gMonFrontPic_Shieldon), - SPECIES_SPRITE(BASTIODON, gMonFrontPic_Bastiodon), - SPECIES_SPRITE(BURMY, gMonFrontPic_Burmy), - SPECIES_SPRITE(WORMADAM, gMonFrontPic_Wormadam), - SPECIES_SPRITE(MOTHIM, gMonFrontPic_Mothim), - SPECIES_SPRITE(COMBEE, gMonFrontPic_Combee), - SPECIES_SPRITE(VESPIQUEN, gMonFrontPic_Vespiquen), - SPECIES_SPRITE(PACHIRISU, gMonFrontPic_Pachirisu), - SPECIES_SPRITE(BUIZEL, gMonFrontPic_Buizel), - SPECIES_SPRITE(FLOATZEL, gMonFrontPic_Floatzel), - SPECIES_SPRITE(CHERUBI, gMonFrontPic_Cherubi), - SPECIES_SPRITE(CHERRIM, gMonFrontPic_Cherrim), - SPECIES_SPRITE(SHELLOS, gMonFrontPic_Shellos), - SPECIES_SPRITE(GASTRODON, gMonFrontPic_Gastrodon), - SPECIES_SPRITE(AMBIPOM, gMonFrontPic_Ambipom), - SPECIES_SPRITE(DRIFLOON, gMonFrontPic_Drifloon), - SPECIES_SPRITE(DRIFBLIM, gMonFrontPic_Drifblim), - SPECIES_SPRITE(BUNEARY, gMonFrontPic_Buneary), - SPECIES_SPRITE(LOPUNNY, gMonFrontPic_Lopunny), - SPECIES_SPRITE(MISMAGIUS, gMonFrontPic_Mismagius), - SPECIES_SPRITE(HONCHKROW, gMonFrontPic_Honchkrow), - SPECIES_SPRITE(GLAMEOW, gMonFrontPic_Glameow), - SPECIES_SPRITE(PURUGLY, gMonFrontPic_Purugly), - SPECIES_SPRITE(CHINGLING, gMonFrontPic_Chingling), - SPECIES_SPRITE(STUNKY, gMonFrontPic_Stunky), - SPECIES_SPRITE(SKUNTANK, gMonFrontPic_Skuntank), - SPECIES_SPRITE(BRONZOR, gMonFrontPic_Bronzor), - SPECIES_SPRITE(BRONZONG, gMonFrontPic_Bronzong), - SPECIES_SPRITE(BONSLY, gMonFrontPic_Bonsly), - SPECIES_SPRITE(MIME_JR, gMonFrontPic_MimeJr), - SPECIES_SPRITE(HAPPINY, gMonFrontPic_Happiny), - SPECIES_SPRITE(CHATOT, gMonFrontPic_Chatot), - SPECIES_SPRITE(SPIRITOMB, gMonFrontPic_Spiritomb), - SPECIES_SPRITE(GIBLE, gMonFrontPic_Gible), - SPECIES_SPRITE(GABITE, gMonFrontPic_Gabite), - SPECIES_SPRITE(GARCHOMP, gMonFrontPic_Garchomp), - SPECIES_SPRITE(MUNCHLAX, gMonFrontPic_Munchlax), - SPECIES_SPRITE(RIOLU, gMonFrontPic_Riolu), - SPECIES_SPRITE(LUCARIO, gMonFrontPic_Lucario), - SPECIES_SPRITE(HIPPOPOTAS, gMonFrontPic_Hippopotas), - SPECIES_SPRITE(HIPPOWDON, gMonFrontPic_Hippowdon), - SPECIES_SPRITE(SKORUPI, gMonFrontPic_Skorupi), - SPECIES_SPRITE(DRAPION, gMonFrontPic_Drapion), - SPECIES_SPRITE(CROAGUNK, gMonFrontPic_Croagunk), - SPECIES_SPRITE(TOXICROAK, gMonFrontPic_Toxicroak), - SPECIES_SPRITE(CARNIVINE, gMonFrontPic_Carnivine), - SPECIES_SPRITE(FINNEON, gMonFrontPic_Finneon), - SPECIES_SPRITE(LUMINEON, gMonFrontPic_Lumineon), - SPECIES_SPRITE(MANTYKE, gMonFrontPic_Mantyke), - SPECIES_SPRITE(SNOVER, gMonFrontPic_Snover), - SPECIES_SPRITE(ABOMASNOW, gMonFrontPic_Abomasnow), - SPECIES_SPRITE(WEAVILE, gMonFrontPic_Weavile), - SPECIES_SPRITE(MAGNEZONE, gMonFrontPic_Magnezone), - SPECIES_SPRITE(LICKILICKY, gMonFrontPic_Lickilicky), - SPECIES_SPRITE(RHYPERIOR, gMonFrontPic_Rhyperior), - SPECIES_SPRITE(TANGROWTH, gMonFrontPic_Tangrowth), - SPECIES_SPRITE(ELECTIVIRE, gMonFrontPic_Electivire), - SPECIES_SPRITE(MAGMORTAR, gMonFrontPic_Magmortar), - SPECIES_SPRITE(TOGEKISS, gMonFrontPic_Togekiss), - SPECIES_SPRITE(YANMEGA, gMonFrontPic_Yanmega), - SPECIES_SPRITE(LEAFEON, gMonFrontPic_Leafeon), - SPECIES_SPRITE(GLACEON, gMonFrontPic_Glaceon), - SPECIES_SPRITE(GLISCOR, gMonFrontPic_Gliscor), - SPECIES_SPRITE(MAMOSWINE, gMonFrontPic_Mamoswine), - SPECIES_SPRITE(PORYGON_Z, gMonFrontPic_PorygonZ), - SPECIES_SPRITE(GALLADE, gMonFrontPic_Gallade), - SPECIES_SPRITE(PROBOPASS, gMonFrontPic_Probopass), - SPECIES_SPRITE(DUSKNOIR, gMonFrontPic_Dusknoir), - SPECIES_SPRITE(FROSLASS, gMonFrontPic_Froslass), - SPECIES_SPRITE(ROTOM, gMonFrontPic_Rotom), - SPECIES_SPRITE(UXIE, gMonFrontPic_Uxie), - SPECIES_SPRITE(MESPRIT, gMonFrontPic_Mesprit), - SPECIES_SPRITE(AZELF, gMonFrontPic_Azelf), - SPECIES_SPRITE(DIALGA, gMonFrontPic_Dialga), - SPECIES_SPRITE(PALKIA, gMonFrontPic_Palkia), - SPECIES_SPRITE(HEATRAN, gMonFrontPic_Heatran), - SPECIES_SPRITE(REGIGIGAS, gMonFrontPic_Regigigas), - SPECIES_SPRITE(GIRATINA, gMonFrontPic_Giratina), - SPECIES_SPRITE(CRESSELIA, gMonFrontPic_Cresselia), - SPECIES_SPRITE(PHIONE, gMonFrontPic_Phione), - SPECIES_SPRITE(MANAPHY, gMonFrontPic_Manaphy), - SPECIES_SPRITE(DARKRAI, gMonFrontPic_Darkrai), - SPECIES_SPRITE(SHAYMIN, gMonFrontPic_Shaymin), - SPECIES_SPRITE(ARCEUS, gMonFrontPic_Arceus), -#endif -#if P_GEN_5_POKEMON == TRUE - SPECIES_SPRITE(VICTINI, gMonFrontPic_Victini), - SPECIES_SPRITE(SNIVY, gMonFrontPic_Snivy), - SPECIES_SPRITE(SERVINE, gMonFrontPic_Servine), - SPECIES_SPRITE(SERPERIOR, gMonFrontPic_Serperior), - SPECIES_SPRITE(TEPIG, gMonFrontPic_Tepig), - SPECIES_SPRITE(PIGNITE, gMonFrontPic_Pignite), - SPECIES_SPRITE(EMBOAR, gMonFrontPic_Emboar), - SPECIES_SPRITE(OSHAWOTT, gMonFrontPic_Oshawott), - SPECIES_SPRITE(DEWOTT, gMonFrontPic_Dewott), - SPECIES_SPRITE(SAMUROTT, gMonFrontPic_Samurott), - SPECIES_SPRITE(PATRAT, gMonFrontPic_Patrat), - SPECIES_SPRITE(WATCHOG, gMonFrontPic_Watchog), - SPECIES_SPRITE(LILLIPUP, gMonFrontPic_Lillipup), - SPECIES_SPRITE(HERDIER, gMonFrontPic_Herdier), - SPECIES_SPRITE(STOUTLAND, gMonFrontPic_Stoutland), - SPECIES_SPRITE(PURRLOIN, gMonFrontPic_Purrloin), - SPECIES_SPRITE(LIEPARD, gMonFrontPic_Liepard), - SPECIES_SPRITE(PANSAGE, gMonFrontPic_Pansage), - SPECIES_SPRITE(SIMISAGE, gMonFrontPic_Simisage), - SPECIES_SPRITE(PANSEAR, gMonFrontPic_Pansear), - SPECIES_SPRITE(SIMISEAR, gMonFrontPic_Simisear), - SPECIES_SPRITE(PANPOUR, gMonFrontPic_Panpour), - SPECIES_SPRITE(SIMIPOUR, gMonFrontPic_Simipour), - SPECIES_SPRITE(MUNNA, gMonFrontPic_Munna), - SPECIES_SPRITE(MUSHARNA, gMonFrontPic_Musharna), - SPECIES_SPRITE(PIDOVE, gMonFrontPic_Pidove), - SPECIES_SPRITE(TRANQUILL, gMonFrontPic_Tranquill), - SPECIES_SPRITE(UNFEZANT, gMonFrontPic_Unfezant), - SPECIES_SPRITE(BLITZLE, gMonFrontPic_Blitzle), - SPECIES_SPRITE(ZEBSTRIKA, gMonFrontPic_Zebstrika), - SPECIES_SPRITE(ROGGENROLA, gMonFrontPic_Roggenrola), - SPECIES_SPRITE(BOLDORE, gMonFrontPic_Boldore), - SPECIES_SPRITE(GIGALITH, gMonFrontPic_Gigalith), - SPECIES_SPRITE(WOOBAT, gMonFrontPic_Woobat), - SPECIES_SPRITE(SWOOBAT, gMonFrontPic_Swoobat), - SPECIES_SPRITE(DRILBUR, gMonFrontPic_Drilbur), - SPECIES_SPRITE(EXCADRILL, gMonFrontPic_Excadrill), - SPECIES_SPRITE(AUDINO, gMonFrontPic_Audino), - SPECIES_SPRITE(TIMBURR, gMonFrontPic_Timburr), - SPECIES_SPRITE(GURDURR, gMonFrontPic_Gurdurr), - SPECIES_SPRITE(CONKELDURR, gMonFrontPic_Conkeldurr), - SPECIES_SPRITE(TYMPOLE, gMonFrontPic_Tympole), - SPECIES_SPRITE(PALPITOAD, gMonFrontPic_Palpitoad), - SPECIES_SPRITE(SEISMITOAD, gMonFrontPic_Seismitoad), - SPECIES_SPRITE(THROH, gMonFrontPic_Throh), - SPECIES_SPRITE(SAWK, gMonFrontPic_Sawk), - SPECIES_SPRITE(SEWADDLE, gMonFrontPic_Sewaddle), - SPECIES_SPRITE(SWADLOON, gMonFrontPic_Swadloon), - SPECIES_SPRITE(LEAVANNY, gMonFrontPic_Leavanny), - SPECIES_SPRITE(VENIPEDE, gMonFrontPic_Venipede), - SPECIES_SPRITE(WHIRLIPEDE, gMonFrontPic_Whirlipede), - SPECIES_SPRITE(SCOLIPEDE, gMonFrontPic_Scolipede), - SPECIES_SPRITE(COTTONEE, gMonFrontPic_Cottonee), - SPECIES_SPRITE(WHIMSICOTT, gMonFrontPic_Whimsicott), - SPECIES_SPRITE(PETILIL, gMonFrontPic_Petilil), - SPECIES_SPRITE(LILLIGANT, gMonFrontPic_Lilligant), - SPECIES_SPRITE(BASCULIN, gMonFrontPic_Basculin), - SPECIES_SPRITE(SANDILE, gMonFrontPic_Sandile), - SPECIES_SPRITE(KROKOROK, gMonFrontPic_Krokorok), - SPECIES_SPRITE(KROOKODILE, gMonFrontPic_Krookodile), - SPECIES_SPRITE(DARUMAKA, gMonFrontPic_Darumaka), - SPECIES_SPRITE(DARMANITAN, gMonFrontPic_Darmanitan), - SPECIES_SPRITE(MARACTUS, gMonFrontPic_Maractus), - SPECIES_SPRITE(DWEBBLE, gMonFrontPic_Dwebble), - SPECIES_SPRITE(CRUSTLE, gMonFrontPic_Crustle), - SPECIES_SPRITE(SCRAGGY, gMonFrontPic_Scraggy), - SPECIES_SPRITE(SCRAFTY, gMonFrontPic_Scrafty), - SPECIES_SPRITE(SIGILYPH, gMonFrontPic_Sigilyph), - SPECIES_SPRITE(YAMASK, gMonFrontPic_Yamask), - SPECIES_SPRITE(COFAGRIGUS, gMonFrontPic_Cofagrigus), - SPECIES_SPRITE(TIRTOUGA, gMonFrontPic_Tirtouga), - SPECIES_SPRITE(CARRACOSTA, gMonFrontPic_Carracosta), - SPECIES_SPRITE(ARCHEN, gMonFrontPic_Archen), - SPECIES_SPRITE(ARCHEOPS, gMonFrontPic_Archeops), - SPECIES_SPRITE(TRUBBISH, gMonFrontPic_Trubbish), - SPECIES_SPRITE(GARBODOR, gMonFrontPic_Garbodor), - SPECIES_SPRITE(ZORUA, gMonFrontPic_Zorua), - SPECIES_SPRITE(ZOROARK, gMonFrontPic_Zoroark), - SPECIES_SPRITE(MINCCINO, gMonFrontPic_Minccino), - SPECIES_SPRITE(CINCCINO, gMonFrontPic_Cinccino), - SPECIES_SPRITE(GOTHITA, gMonFrontPic_Gothita), - SPECIES_SPRITE(GOTHORITA, gMonFrontPic_Gothorita), - SPECIES_SPRITE(GOTHITELLE, gMonFrontPic_Gothitelle), - SPECIES_SPRITE(SOLOSIS, gMonFrontPic_Solosis), - SPECIES_SPRITE(DUOSION, gMonFrontPic_Duosion), - SPECIES_SPRITE(REUNICLUS, gMonFrontPic_Reuniclus), - SPECIES_SPRITE(DUCKLETT, gMonFrontPic_Ducklett), - SPECIES_SPRITE(SWANNA, gMonFrontPic_Swanna), - SPECIES_SPRITE(VANILLITE, gMonFrontPic_Vanillite), - SPECIES_SPRITE(VANILLISH, gMonFrontPic_Vanillish), - SPECIES_SPRITE(VANILLUXE, gMonFrontPic_Vanilluxe), - SPECIES_SPRITE(DEERLING, gMonFrontPic_Deerling), - SPECIES_SPRITE(SAWSBUCK, gMonFrontPic_Sawsbuck), - SPECIES_SPRITE(EMOLGA, gMonFrontPic_Emolga), - SPECIES_SPRITE(KARRABLAST, gMonFrontPic_Karrablast), - SPECIES_SPRITE(ESCAVALIER, gMonFrontPic_Escavalier), - SPECIES_SPRITE(FOONGUS, gMonFrontPic_Foongus), - SPECIES_SPRITE(AMOONGUSS, gMonFrontPic_Amoonguss), - SPECIES_SPRITE(FRILLISH, gMonFrontPic_Frillish), - SPECIES_SPRITE(JELLICENT, gMonFrontPic_Jellicent), - SPECIES_SPRITE(ALOMOMOLA, gMonFrontPic_Alomomola), - SPECIES_SPRITE(JOLTIK, gMonFrontPic_Joltik), - SPECIES_SPRITE(GALVANTULA, gMonFrontPic_Galvantula), - SPECIES_SPRITE(FERROSEED, gMonFrontPic_Ferroseed), - SPECIES_SPRITE(FERROTHORN, gMonFrontPic_Ferrothorn), - SPECIES_SPRITE(KLINK, gMonFrontPic_Klink), - SPECIES_SPRITE(KLANG, gMonFrontPic_Klang), - SPECIES_SPRITE(KLINKLANG, gMonFrontPic_Klinklang), - SPECIES_SPRITE(TYNAMO, gMonFrontPic_Tynamo), - SPECIES_SPRITE(EELEKTRIK, gMonFrontPic_Eelektrik), - SPECIES_SPRITE(EELEKTROSS, gMonFrontPic_Eelektross), - SPECIES_SPRITE(ELGYEM, gMonFrontPic_Elgyem), - SPECIES_SPRITE(BEHEEYEM, gMonFrontPic_Beheeyem), - SPECIES_SPRITE(LITWICK, gMonFrontPic_Litwick), - SPECIES_SPRITE(LAMPENT, gMonFrontPic_Lampent), - SPECIES_SPRITE(CHANDELURE, gMonFrontPic_Chandelure), - SPECIES_SPRITE(AXEW, gMonFrontPic_Axew), - SPECIES_SPRITE(FRAXURE, gMonFrontPic_Fraxure), - SPECIES_SPRITE(HAXORUS, gMonFrontPic_Haxorus), - SPECIES_SPRITE(CUBCHOO, gMonFrontPic_Cubchoo), - SPECIES_SPRITE(BEARTIC, gMonFrontPic_Beartic), - SPECIES_SPRITE(CRYOGONAL, gMonFrontPic_Cryogonal), - SPECIES_SPRITE(SHELMET, gMonFrontPic_Shelmet), - SPECIES_SPRITE(ACCELGOR, gMonFrontPic_Accelgor), - SPECIES_SPRITE(STUNFISK, gMonFrontPic_Stunfisk), - SPECIES_SPRITE(MIENFOO, gMonFrontPic_Mienfoo), - SPECIES_SPRITE(MIENSHAO, gMonFrontPic_Mienshao), - SPECIES_SPRITE(DRUDDIGON, gMonFrontPic_Druddigon), - SPECIES_SPRITE(GOLETT, gMonFrontPic_Golett), - SPECIES_SPRITE(GOLURK, gMonFrontPic_Golurk), - SPECIES_SPRITE(PAWNIARD, gMonFrontPic_Pawniard), - SPECIES_SPRITE(BISHARP, gMonFrontPic_Bisharp), - SPECIES_SPRITE(BOUFFALANT, gMonFrontPic_Bouffalant), - SPECIES_SPRITE(RUFFLET, gMonFrontPic_Rufflet), - SPECIES_SPRITE(BRAVIARY, gMonFrontPic_Braviary), - SPECIES_SPRITE(VULLABY, gMonFrontPic_Vullaby), - SPECIES_SPRITE(MANDIBUZZ, gMonFrontPic_Mandibuzz), - SPECIES_SPRITE(HEATMOR, gMonFrontPic_Heatmor), - SPECIES_SPRITE(DURANT, gMonFrontPic_Durant), - SPECIES_SPRITE(DEINO, gMonFrontPic_Deino), - SPECIES_SPRITE(ZWEILOUS, gMonFrontPic_Zweilous), - SPECIES_SPRITE(HYDREIGON, gMonFrontPic_Hydreigon), - SPECIES_SPRITE(LARVESTA, gMonFrontPic_Larvesta), - SPECIES_SPRITE(VOLCARONA, gMonFrontPic_Volcarona), - SPECIES_SPRITE(COBALION, gMonFrontPic_Cobalion), - SPECIES_SPRITE(TERRAKION, gMonFrontPic_Terrakion), - SPECIES_SPRITE(VIRIZION, gMonFrontPic_Virizion), - SPECIES_SPRITE(TORNADUS, gMonFrontPic_Tornadus), - SPECIES_SPRITE(THUNDURUS, gMonFrontPic_Thundurus), - SPECIES_SPRITE(RESHIRAM, gMonFrontPic_Reshiram), - SPECIES_SPRITE(ZEKROM, gMonFrontPic_Zekrom), - SPECIES_SPRITE(LANDORUS, gMonFrontPic_Landorus), - SPECIES_SPRITE(KYUREM, gMonFrontPic_Kyurem), - SPECIES_SPRITE(KELDEO, gMonFrontPic_Keldeo), - SPECIES_SPRITE(MELOETTA, gMonFrontPic_Meloetta), - SPECIES_SPRITE(GENESECT, gMonFrontPic_Genesect), -#endif -#if P_GEN_6_POKEMON == TRUE - SPECIES_SPRITE(CHESPIN, gMonFrontPic_Chespin), - SPECIES_SPRITE(QUILLADIN, gMonFrontPic_Quilladin), - SPECIES_SPRITE(CHESNAUGHT, gMonFrontPic_Chesnaught), - SPECIES_SPRITE(FENNEKIN, gMonFrontPic_Fennekin), - SPECIES_SPRITE(BRAIXEN, gMonFrontPic_Braixen), - SPECIES_SPRITE(DELPHOX, gMonFrontPic_Delphox), - SPECIES_SPRITE(FROAKIE, gMonFrontPic_Froakie), - SPECIES_SPRITE(FROGADIER, gMonFrontPic_Frogadier), - SPECIES_SPRITE(GRENINJA, gMonFrontPic_Greninja), - SPECIES_SPRITE(BUNNELBY, gMonFrontPic_Bunnelby), - SPECIES_SPRITE(DIGGERSBY, gMonFrontPic_Diggersby), - SPECIES_SPRITE(FLETCHLING, gMonFrontPic_Fletchling), - SPECIES_SPRITE(FLETCHINDER, gMonFrontPic_Fletchinder), - SPECIES_SPRITE(TALONFLAME, gMonFrontPic_Talonflame), - SPECIES_SPRITE(SCATTERBUG, gMonFrontPic_Scatterbug), - SPECIES_SPRITE(SPEWPA, gMonFrontPic_Spewpa), - SPECIES_SPRITE(VIVILLON, gMonFrontPic_Vivillon), - SPECIES_SPRITE(LITLEO, gMonFrontPic_Litleo), - SPECIES_SPRITE(PYROAR, gMonFrontPic_Pyroar), - SPECIES_SPRITE(FLABEBE, gMonFrontPic_Flabebe), - SPECIES_SPRITE(FLOETTE, gMonFrontPic_Floette), - SPECIES_SPRITE(FLORGES, gMonFrontPic_Florges), - SPECIES_SPRITE(SKIDDO, gMonFrontPic_Skiddo), - SPECIES_SPRITE(GOGOAT, gMonFrontPic_Gogoat), - SPECIES_SPRITE(PANCHAM, gMonFrontPic_Pancham), - SPECIES_SPRITE(PANGORO, gMonFrontPic_Pangoro), - SPECIES_SPRITE(FURFROU, gMonFrontPic_Furfrou), - SPECIES_SPRITE(ESPURR, gMonFrontPic_Espurr), - SPECIES_SPRITE(MEOWSTIC, gMonFrontPic_Meowstic), - SPECIES_SPRITE(HONEDGE, gMonFrontPic_Honedge), - SPECIES_SPRITE(DOUBLADE, gMonFrontPic_Doublade), - SPECIES_SPRITE(AEGISLASH, gMonFrontPic_Aegislash), - SPECIES_SPRITE(SPRITZEE, gMonFrontPic_Spritzee), - SPECIES_SPRITE(AROMATISSE, gMonFrontPic_Aromatisse), - SPECIES_SPRITE(SWIRLIX, gMonFrontPic_Swirlix), - SPECIES_SPRITE(SLURPUFF, gMonFrontPic_Slurpuff), - SPECIES_SPRITE(INKAY, gMonFrontPic_Inkay), - SPECIES_SPRITE(MALAMAR, gMonFrontPic_Malamar), - SPECIES_SPRITE(BINACLE, gMonFrontPic_Binacle), - SPECIES_SPRITE(BARBARACLE, gMonFrontPic_Barbaracle), - SPECIES_SPRITE(SKRELP, gMonFrontPic_Skrelp), - SPECIES_SPRITE(DRAGALGE, gMonFrontPic_Dragalge), - SPECIES_SPRITE(CLAUNCHER, gMonFrontPic_Clauncher), - SPECIES_SPRITE(CLAWITZER, gMonFrontPic_Clawitzer), - SPECIES_SPRITE(HELIOPTILE, gMonFrontPic_Helioptile), - SPECIES_SPRITE(HELIOLISK, gMonFrontPic_Heliolisk), - SPECIES_SPRITE(TYRUNT, gMonFrontPic_Tyrunt), - SPECIES_SPRITE(TYRANTRUM, gMonFrontPic_Tyrantrum), - SPECIES_SPRITE(AMAURA, gMonFrontPic_Amaura), - SPECIES_SPRITE(AURORUS, gMonFrontPic_Aurorus), - SPECIES_SPRITE(SYLVEON, gMonFrontPic_Sylveon), - SPECIES_SPRITE(HAWLUCHA, gMonFrontPic_Hawlucha), - SPECIES_SPRITE(DEDENNE, gMonFrontPic_Dedenne), - SPECIES_SPRITE(CARBINK, gMonFrontPic_Carbink), - SPECIES_SPRITE(GOOMY, gMonFrontPic_Goomy), - SPECIES_SPRITE(SLIGGOO, gMonFrontPic_Sliggoo), - SPECIES_SPRITE(GOODRA, gMonFrontPic_Goodra), - SPECIES_SPRITE(KLEFKI, gMonFrontPic_Klefki), - SPECIES_SPRITE(PHANTUMP, gMonFrontPic_Phantump), - SPECIES_SPRITE(TREVENANT, gMonFrontPic_Trevenant), - SPECIES_SPRITE(PUMPKABOO, gMonFrontPic_Pumpkaboo), - SPECIES_SPRITE(GOURGEIST, gMonFrontPic_Gourgeist), - SPECIES_SPRITE(BERGMITE, gMonFrontPic_Bergmite), - SPECIES_SPRITE(AVALUGG, gMonFrontPic_Avalugg), - SPECIES_SPRITE(NOIBAT, gMonFrontPic_Noibat), - SPECIES_SPRITE(NOIVERN, gMonFrontPic_Noivern), - SPECIES_SPRITE(XERNEAS, gMonFrontPic_Xerneas), - SPECIES_SPRITE(YVELTAL, gMonFrontPic_Yveltal), - SPECIES_SPRITE(ZYGARDE, gMonFrontPic_Zygarde), - SPECIES_SPRITE(DIANCIE, gMonFrontPic_Diancie), - SPECIES_SPRITE(HOOPA, gMonFrontPic_Hoopa), - SPECIES_SPRITE(VOLCANION, gMonFrontPic_Volcanion), -#endif -#if P_GEN_7_POKEMON == TRUE - SPECIES_SPRITE(ROWLET, gMonFrontPic_Rowlet), - SPECIES_SPRITE(DARTRIX, gMonFrontPic_Dartrix), - SPECIES_SPRITE(DECIDUEYE, gMonFrontPic_Decidueye), - SPECIES_SPRITE(LITTEN, gMonFrontPic_Litten), - SPECIES_SPRITE(TORRACAT, gMonFrontPic_Torracat), - SPECIES_SPRITE(INCINEROAR, gMonFrontPic_Incineroar), - SPECIES_SPRITE(POPPLIO, gMonFrontPic_Popplio), - SPECIES_SPRITE(BRIONNE, gMonFrontPic_Brionne), - SPECIES_SPRITE(PRIMARINA, gMonFrontPic_Primarina), - SPECIES_SPRITE(PIKIPEK, gMonFrontPic_Pikipek), - SPECIES_SPRITE(TRUMBEAK, gMonFrontPic_Trumbeak), - SPECIES_SPRITE(TOUCANNON, gMonFrontPic_Toucannon), - SPECIES_SPRITE(YUNGOOS, gMonFrontPic_Yungoos), - SPECIES_SPRITE(GUMSHOOS, gMonFrontPic_Gumshoos), - SPECIES_SPRITE(GRUBBIN, gMonFrontPic_Grubbin), - SPECIES_SPRITE(CHARJABUG, gMonFrontPic_Charjabug), - SPECIES_SPRITE(VIKAVOLT, gMonFrontPic_Vikavolt), - SPECIES_SPRITE(CRABRAWLER, gMonFrontPic_Crabrawler), - SPECIES_SPRITE(CRABOMINABLE, gMonFrontPic_Crabominable), - SPECIES_SPRITE(ORICORIO, gMonFrontPic_Oricorio), - SPECIES_SPRITE(CUTIEFLY, gMonFrontPic_Cutiefly), - SPECIES_SPRITE(RIBOMBEE, gMonFrontPic_Ribombee), - SPECIES_SPRITE(ROCKRUFF, gMonFrontPic_Rockruff), - SPECIES_SPRITE(LYCANROC, gMonFrontPic_Lycanroc), - SPECIES_SPRITE(WISHIWASHI, gMonFrontPic_Wishiwashi), - SPECIES_SPRITE(MAREANIE, gMonFrontPic_Mareanie), - SPECIES_SPRITE(TOXAPEX, gMonFrontPic_Toxapex), - SPECIES_SPRITE(MUDBRAY, gMonFrontPic_Mudbray), - SPECIES_SPRITE(MUDSDALE, gMonFrontPic_Mudsdale), - SPECIES_SPRITE(DEWPIDER, gMonFrontPic_Dewpider), - SPECIES_SPRITE(ARAQUANID, gMonFrontPic_Araquanid), - SPECIES_SPRITE(FOMANTIS, gMonFrontPic_Fomantis), - SPECIES_SPRITE(LURANTIS, gMonFrontPic_Lurantis), - SPECIES_SPRITE(MORELULL, gMonFrontPic_Morelull), - SPECIES_SPRITE(SHIINOTIC, gMonFrontPic_Shiinotic), - SPECIES_SPRITE(SALANDIT, gMonFrontPic_Salandit), - SPECIES_SPRITE(SALAZZLE, gMonFrontPic_Salazzle), - SPECIES_SPRITE(STUFFUL, gMonFrontPic_Stufful), - SPECIES_SPRITE(BEWEAR, gMonFrontPic_Bewear), - SPECIES_SPRITE(BOUNSWEET, gMonFrontPic_Bounsweet), - SPECIES_SPRITE(STEENEE, gMonFrontPic_Steenee), - SPECIES_SPRITE(TSAREENA, gMonFrontPic_Tsareena), - SPECIES_SPRITE(COMFEY, gMonFrontPic_Comfey), - SPECIES_SPRITE(ORANGURU, gMonFrontPic_Oranguru), - SPECIES_SPRITE(PASSIMIAN, gMonFrontPic_Passimian), - SPECIES_SPRITE(WIMPOD, gMonFrontPic_Wimpod), - SPECIES_SPRITE(GOLISOPOD, gMonFrontPic_Golisopod), - SPECIES_SPRITE(SANDYGAST, gMonFrontPic_Sandygast), - SPECIES_SPRITE(PALOSSAND, gMonFrontPic_Palossand), - SPECIES_SPRITE(PYUKUMUKU, gMonFrontPic_Pyukumuku), - SPECIES_SPRITE(TYPE_NULL, gMonFrontPic_TypeNull), - SPECIES_SPRITE(SILVALLY, gMonFrontPic_Silvally), - SPECIES_SPRITE(MINIOR, gMonFrontPic_Minior), - SPECIES_SPRITE(KOMALA, gMonFrontPic_Komala), - SPECIES_SPRITE(TURTONATOR, gMonFrontPic_Turtonator), - SPECIES_SPRITE(TOGEDEMARU, gMonFrontPic_Togedemaru), - SPECIES_SPRITE(MIMIKYU, gMonFrontPic_Mimikyu), - SPECIES_SPRITE(BRUXISH, gMonFrontPic_Bruxish), - SPECIES_SPRITE(DRAMPA, gMonFrontPic_Drampa), - SPECIES_SPRITE(DHELMISE, gMonFrontPic_Dhelmise), - SPECIES_SPRITE(JANGMO_O, gMonFrontPic_JangmoO), - SPECIES_SPRITE(HAKAMO_O, gMonFrontPic_HakamoO), - SPECIES_SPRITE(KOMMO_O, gMonFrontPic_KommoO), - SPECIES_SPRITE(TAPU_KOKO, gMonFrontPic_TapuKoko), - SPECIES_SPRITE(TAPU_LELE, gMonFrontPic_TapuLele), - SPECIES_SPRITE(TAPU_BULU, gMonFrontPic_TapuBulu), - SPECIES_SPRITE(TAPU_FINI, gMonFrontPic_TapuFini), - SPECIES_SPRITE(COSMOG, gMonFrontPic_Cosmog), - SPECIES_SPRITE(COSMOEM, gMonFrontPic_Cosmoem), - SPECIES_SPRITE(SOLGALEO, gMonFrontPic_Solgaleo), - SPECIES_SPRITE(LUNALA, gMonFrontPic_Lunala), - SPECIES_SPRITE(NIHILEGO, gMonFrontPic_Nihilego), - SPECIES_SPRITE(BUZZWOLE, gMonFrontPic_Buzzwole), - SPECIES_SPRITE(PHEROMOSA, gMonFrontPic_Pheromosa), - SPECIES_SPRITE(XURKITREE, gMonFrontPic_Xurkitree), - SPECIES_SPRITE(CELESTEELA, gMonFrontPic_Celesteela), - SPECIES_SPRITE(KARTANA, gMonFrontPic_Kartana), - SPECIES_SPRITE(GUZZLORD, gMonFrontPic_Guzzlord), - SPECIES_SPRITE(NECROZMA, gMonFrontPic_Necrozma), - SPECIES_SPRITE(MAGEARNA, gMonFrontPic_Magearna), - SPECIES_SPRITE(MARSHADOW, gMonFrontPic_Marshadow), - SPECIES_SPRITE(POIPOLE, gMonFrontPic_Poipole), - SPECIES_SPRITE(NAGANADEL, gMonFrontPic_Naganadel), - SPECIES_SPRITE(STAKATAKA, gMonFrontPic_Stakataka), - SPECIES_SPRITE(BLACEPHALON, gMonFrontPic_Blacephalon), - SPECIES_SPRITE(ZERAORA, gMonFrontPic_Zeraora), - SPECIES_SPRITE(MELTAN, gMonFrontPic_Meltan), - SPECIES_SPRITE(MELMETAL, gMonFrontPic_Melmetal), -#endif -#if P_GEN_8_POKEMON == TRUE - SPECIES_SPRITE(GROOKEY, gMonFrontPic_Grookey), - SPECIES_SPRITE(THWACKEY, gMonFrontPic_Thwackey), - SPECIES_SPRITE(RILLABOOM, gMonFrontPic_Rillaboom), - SPECIES_SPRITE(SCORBUNNY, gMonFrontPic_Scorbunny), - SPECIES_SPRITE(RABOOT, gMonFrontPic_Raboot), - SPECIES_SPRITE(CINDERACE, gMonFrontPic_Cinderace), - SPECIES_SPRITE(SOBBLE, gMonFrontPic_Sobble), - SPECIES_SPRITE(DRIZZILE, gMonFrontPic_Drizzile), - SPECIES_SPRITE(INTELEON, gMonFrontPic_Inteleon), - SPECIES_SPRITE(SKWOVET, gMonFrontPic_Skwovet), - SPECIES_SPRITE(GREEDENT, gMonFrontPic_Greedent), - SPECIES_SPRITE(ROOKIDEE, gMonFrontPic_Rookidee), - SPECIES_SPRITE(CORVISQUIRE, gMonFrontPic_Corvisquire), - SPECIES_SPRITE(CORVIKNIGHT, gMonFrontPic_Corviknight), - SPECIES_SPRITE(BLIPBUG, gMonFrontPic_Blipbug), - SPECIES_SPRITE(DOTTLER, gMonFrontPic_Dottler), - SPECIES_SPRITE(ORBEETLE, gMonFrontPic_Orbeetle), - SPECIES_SPRITE(NICKIT, gMonFrontPic_Nickit), - SPECIES_SPRITE(THIEVUL, gMonFrontPic_Thievul), - SPECIES_SPRITE(GOSSIFLEUR, gMonFrontPic_Gossifleur), - SPECIES_SPRITE(ELDEGOSS, gMonFrontPic_Eldegoss), - SPECIES_SPRITE(WOOLOO, gMonFrontPic_Wooloo), - SPECIES_SPRITE(DUBWOOL, gMonFrontPic_Dubwool), - SPECIES_SPRITE(CHEWTLE, gMonFrontPic_Chewtle), - SPECIES_SPRITE(DREDNAW, gMonFrontPic_Drednaw), - SPECIES_SPRITE(YAMPER, gMonFrontPic_Yamper), - SPECIES_SPRITE(BOLTUND, gMonFrontPic_Boltund), - SPECIES_SPRITE(ROLYCOLY, gMonFrontPic_Rolycoly), - SPECIES_SPRITE(CARKOL, gMonFrontPic_Carkol), - SPECIES_SPRITE(COALOSSAL, gMonFrontPic_Coalossal), - SPECIES_SPRITE(APPLIN, gMonFrontPic_Applin), - SPECIES_SPRITE(FLAPPLE, gMonFrontPic_Flapple), - SPECIES_SPRITE(APPLETUN, gMonFrontPic_Appletun), - SPECIES_SPRITE(SILICOBRA, gMonFrontPic_Silicobra), - SPECIES_SPRITE(SANDACONDA, gMonFrontPic_Sandaconda), - SPECIES_SPRITE(CRAMORANT, gMonFrontPic_Cramorant), - SPECIES_SPRITE(ARROKUDA, gMonFrontPic_Arrokuda), - SPECIES_SPRITE(BARRASKEWDA, gMonFrontPic_Barraskewda), - SPECIES_SPRITE(TOXEL, gMonFrontPic_Toxel), - SPECIES_SPRITE(TOXTRICITY, gMonFrontPic_Toxtricity), - SPECIES_SPRITE(SIZZLIPEDE, gMonFrontPic_Sizzlipede), - SPECIES_SPRITE(CENTISKORCH, gMonFrontPic_Centiskorch), - SPECIES_SPRITE(CLOBBOPUS, gMonFrontPic_Clobbopus), - SPECIES_SPRITE(GRAPPLOCT, gMonFrontPic_Grapploct), - SPECIES_SPRITE(SINISTEA, gMonFrontPic_Sinistea), - SPECIES_SPRITE(POLTEAGEIST, gMonFrontPic_Polteageist), - SPECIES_SPRITE(HATENNA, gMonFrontPic_Hatenna), - SPECIES_SPRITE(HATTREM, gMonFrontPic_Hattrem), - SPECIES_SPRITE(HATTERENE, gMonFrontPic_Hatterene), - SPECIES_SPRITE(IMPIDIMP, gMonFrontPic_Impidimp), - SPECIES_SPRITE(MORGREM, gMonFrontPic_Morgrem), - SPECIES_SPRITE(GRIMMSNARL, gMonFrontPic_Grimmsnarl), - SPECIES_SPRITE(OBSTAGOON, gMonFrontPic_Obstagoon), - SPECIES_SPRITE(PERRSERKER, gMonFrontPic_Perrserker), - SPECIES_SPRITE(CURSOLA, gMonFrontPic_Cursola), - SPECIES_SPRITE(SIRFETCHD, gMonFrontPic_Sirfetchd), - SPECIES_SPRITE(MR_RIME, gMonFrontPic_MrRime), - SPECIES_SPRITE(RUNERIGUS, gMonFrontPic_Runerigus), - SPECIES_SPRITE(MILCERY, gMonFrontPic_Milcery), - SPECIES_SPRITE(ALCREMIE, gMonFrontPic_Alcremie), - SPECIES_SPRITE(FALINKS, gMonFrontPic_Falinks), - SPECIES_SPRITE(PINCURCHIN, gMonFrontPic_Pincurchin), - SPECIES_SPRITE(SNOM, gMonFrontPic_Snom), - SPECIES_SPRITE(FROSMOTH, gMonFrontPic_Frosmoth), - SPECIES_SPRITE(STONJOURNER, gMonFrontPic_Stonjourner), - SPECIES_SPRITE(EISCUE, gMonFrontPic_Eiscue), - SPECIES_SPRITE(INDEEDEE, gMonFrontPic_Indeedee), - SPECIES_SPRITE(MORPEKO, gMonFrontPic_Morpeko), - SPECIES_SPRITE(CUFANT, gMonFrontPic_Cufant), - SPECIES_SPRITE(COPPERAJAH, gMonFrontPic_Copperajah), - SPECIES_SPRITE(DRACOZOLT, gMonFrontPic_Dracozolt), - SPECIES_SPRITE(ARCTOZOLT, gMonFrontPic_Arctozolt), - SPECIES_SPRITE(DRACOVISH, gMonFrontPic_Dracovish), - SPECIES_SPRITE(ARCTOVISH, gMonFrontPic_Arctovish), - SPECIES_SPRITE(DURALUDON, gMonFrontPic_Duraludon), - SPECIES_SPRITE(DREEPY, gMonFrontPic_Dreepy), - SPECIES_SPRITE(DRAKLOAK, gMonFrontPic_Drakloak), - SPECIES_SPRITE(DRAGAPULT, gMonFrontPic_Dragapult), - SPECIES_SPRITE(ZACIAN, gMonFrontPic_Zacian), - SPECIES_SPRITE(ZAMAZENTA, gMonFrontPic_Zamazenta), - SPECIES_SPRITE(ETERNATUS, gMonFrontPic_Eternatus), - SPECIES_SPRITE(KUBFU, gMonFrontPic_Kubfu), - SPECIES_SPRITE(URSHIFU, gMonFrontPic_Urshifu), - SPECIES_SPRITE(ZARUDE, gMonFrontPic_Zarude), - SPECIES_SPRITE(REGIELEKI, gMonFrontPic_Regieleki), - SPECIES_SPRITE(REGIDRAGO, gMonFrontPic_Regidrago), - SPECIES_SPRITE(GLASTRIER, gMonFrontPic_Glastrier), - SPECIES_SPRITE(SPECTRIER, gMonFrontPic_Spectrier), - SPECIES_SPRITE(CALYREX, gMonFrontPic_Calyrex), - SPECIES_SPRITE(WYRDEER, gMonFrontPic_Wyrdeer), - SPECIES_SPRITE(KLEAVOR, gMonFrontPic_Kleavor), - SPECIES_SPRITE(URSALUNA, gMonFrontPic_Ursaluna), - SPECIES_SPRITE(BASCULEGION, gMonFrontPic_Basculegion), - SPECIES_SPRITE(SNEASLER, gMonFrontPic_Sneasler), - SPECIES_SPRITE(OVERQWIL, gMonFrontPic_Overqwil), - SPECIES_SPRITE(ENAMORUS, gMonFrontPic_Enamorus), -#endif - SPECIES_SPRITE(VENUSAUR_MEGA, gMonFrontPic_VenusaurMega), - SPECIES_SPRITE(CHARIZARD_MEGA_X, gMonFrontPic_CharizardMegaX), - SPECIES_SPRITE(CHARIZARD_MEGA_Y, gMonFrontPic_CharizardMegaY), - SPECIES_SPRITE(BLASTOISE_MEGA, gMonFrontPic_BlastoiseMega), - SPECIES_SPRITE(BEEDRILL_MEGA, gMonFrontPic_BeedrillMega), - SPECIES_SPRITE(PIDGEOT_MEGA, gMonFrontPic_PidgeotMega), - SPECIES_SPRITE(ALAKAZAM_MEGA, gMonFrontPic_AlakazamMega), - SPECIES_SPRITE(SLOWBRO_MEGA, gMonFrontPic_SlowbroMega), - SPECIES_SPRITE(GENGAR_MEGA, gMonFrontPic_GengarMega), - SPECIES_SPRITE(KANGASKHAN_MEGA, gMonFrontPic_KangaskhanMega), - SPECIES_SPRITE(PINSIR_MEGA, gMonFrontPic_PinsirMega), - SPECIES_SPRITE(GYARADOS_MEGA, gMonFrontPic_GyaradosMega), - SPECIES_SPRITE(AERODACTYL_MEGA, gMonFrontPic_AerodactylMega), - SPECIES_SPRITE(MEWTWO_MEGA_X, gMonFrontPic_MewtwoMegaX), - SPECIES_SPRITE(MEWTWO_MEGA_Y, gMonFrontPic_MewtwoMegaY), - SPECIES_SPRITE(AMPHAROS_MEGA, gMonFrontPic_AmpharosMega), - SPECIES_SPRITE(STEELIX_MEGA, gMonFrontPic_SteelixMega), - SPECIES_SPRITE(SCIZOR_MEGA, gMonFrontPic_ScizorMega), - SPECIES_SPRITE(HERACROSS_MEGA, gMonFrontPic_HeracrossMega), - SPECIES_SPRITE(HOUNDOOM_MEGA, gMonFrontPic_HoundoomMega), - SPECIES_SPRITE(TYRANITAR_MEGA, gMonFrontPic_TyranitarMega), - SPECIES_SPRITE(SCEPTILE_MEGA, gMonFrontPic_SceptileMega), - SPECIES_SPRITE(BLAZIKEN_MEGA, gMonFrontPic_BlazikenMega), - SPECIES_SPRITE(SWAMPERT_MEGA, gMonFrontPic_SwampertMega), - SPECIES_SPRITE(GARDEVOIR_MEGA, gMonFrontPic_GardevoirMega), - SPECIES_SPRITE(SABLEYE_MEGA, gMonFrontPic_SableyeMega), - SPECIES_SPRITE(MAWILE_MEGA, gMonFrontPic_MawileMega), - SPECIES_SPRITE(AGGRON_MEGA, gMonFrontPic_AggronMega), - SPECIES_SPRITE(MEDICHAM_MEGA, gMonFrontPic_MedichamMega), - SPECIES_SPRITE(MANECTRIC_MEGA, gMonFrontPic_ManectricMega), - SPECIES_SPRITE(SHARPEDO_MEGA, gMonFrontPic_SharpedoMega), - SPECIES_SPRITE(CAMERUPT_MEGA, gMonFrontPic_CameruptMega), - SPECIES_SPRITE(ALTARIA_MEGA, gMonFrontPic_AltariaMega), - SPECIES_SPRITE(BANETTE_MEGA, gMonFrontPic_BanetteMega), - SPECIES_SPRITE(ABSOL_MEGA, gMonFrontPic_AbsolMega), - SPECIES_SPRITE(GLALIE_MEGA, gMonFrontPic_GlalieMega), - SPECIES_SPRITE(SALAMENCE_MEGA, gMonFrontPic_SalamenceMega), - SPECIES_SPRITE(METAGROSS_MEGA, gMonFrontPic_MetagrossMega), - SPECIES_SPRITE(LATIAS_MEGA, gMonFrontPic_LatiasMega), - SPECIES_SPRITE(LATIOS_MEGA, gMonFrontPic_LatiosMega), -#if P_GEN_4_POKEMON == TRUE - SPECIES_SPRITE(LOPUNNY_MEGA, gMonFrontPic_LopunnyMega), - SPECIES_SPRITE(GARCHOMP_MEGA, gMonFrontPic_GarchompMega), - SPECIES_SPRITE(LUCARIO_MEGA, gMonFrontPic_LucarioMega), - SPECIES_SPRITE(ABOMASNOW_MEGA, gMonFrontPic_AbomasnowMega), - SPECIES_SPRITE(GALLADE_MEGA, gMonFrontPic_GalladeMega), -#endif -#if P_GEN_5_POKEMON == TRUE - SPECIES_SPRITE(AUDINO_MEGA, gMonFrontPic_AudinoMega), -#endif -#if P_GEN_6_POKEMON == TRUE - SPECIES_SPRITE(DIANCIE_MEGA, gMonFrontPic_DiancieMega), -#endif - - SPECIES_SPRITE(RAYQUAZA_MEGA, gMonFrontPic_RayquazaMega), - SPECIES_SPRITE(KYOGRE_PRIMAL, gMonFrontPic_KyogrePrimal), - SPECIES_SPRITE(GROUDON_PRIMAL, gMonFrontPic_GroudonPrimal), - - SPECIES_SPRITE(RATTATA_ALOLAN, gMonFrontPic_RattataAlolan), - SPECIES_SPRITE(RATICATE_ALOLAN, gMonFrontPic_RaticateAlolan), - SPECIES_SPRITE(RAICHU_ALOLAN, gMonFrontPic_RaichuAlolan), - SPECIES_SPRITE(SANDSHREW_ALOLAN, gMonFrontPic_SandshrewAlolan), - SPECIES_SPRITE(SANDSLASH_ALOLAN, gMonFrontPic_SandslashAlolan), - SPECIES_SPRITE(VULPIX_ALOLAN, gMonFrontPic_VulpixAlolan), - SPECIES_SPRITE(NINETALES_ALOLAN, gMonFrontPic_NinetalesAlolan), - SPECIES_SPRITE(DIGLETT_ALOLAN, gMonFrontPic_DiglettAlolan), - SPECIES_SPRITE(DUGTRIO_ALOLAN, gMonFrontPic_DugtrioAlolan), - SPECIES_SPRITE(MEOWTH_ALOLAN, gMonFrontPic_MeowthAlolan), - SPECIES_SPRITE(PERSIAN_ALOLAN, gMonFrontPic_PersianAlolan), - SPECIES_SPRITE(GEODUDE_ALOLAN, gMonFrontPic_GeodudeAlolan), - SPECIES_SPRITE(GRAVELER_ALOLAN, gMonFrontPic_GravelerAlolan), - SPECIES_SPRITE(GOLEM_ALOLAN, gMonFrontPic_GolemAlolan), - SPECIES_SPRITE(GRIMER_ALOLAN, gMonFrontPic_GrimerAlolan), - SPECIES_SPRITE(MUK_ALOLAN, gMonFrontPic_MukAlolan), - SPECIES_SPRITE(EXEGGUTOR_ALOLAN, gMonFrontPic_ExeggutorAlolan), - SPECIES_SPRITE(MAROWAK_ALOLAN, gMonFrontPic_MarowakAlolan), - - SPECIES_SPRITE(MEOWTH_GALARIAN, gMonFrontPic_MeowthGalarian), - SPECIES_SPRITE(PONYTA_GALARIAN, gMonFrontPic_PonytaGalarian), - SPECIES_SPRITE(RAPIDASH_GALARIAN, gMonFrontPic_RapidashGalarian), - SPECIES_SPRITE(SLOWPOKE_GALARIAN, gMonFrontPic_SlowpokeGalarian), - SPECIES_SPRITE(SLOWBRO_GALARIAN, gMonFrontPic_SlowbroGalarian), - SPECIES_SPRITE(FARFETCHD_GALARIAN, gMonFrontPic_FarfetchdGalarian), - SPECIES_SPRITE(WEEZING_GALARIAN, gMonFrontPic_WeezingGalarian), - SPECIES_SPRITE(MR_MIME_GALARIAN, gMonFrontPic_MrMimeGalarian), - SPECIES_SPRITE(ARTICUNO_GALARIAN, gMonFrontPic_ArticunoGalarian), - SPECIES_SPRITE(ZAPDOS_GALARIAN, gMonFrontPic_ZapdosGalarian), - SPECIES_SPRITE(MOLTRES_GALARIAN, gMonFrontPic_MoltresGalarian), - SPECIES_SPRITE(SLOWKING_GALARIAN, gMonFrontPic_SlowkingGalarian), - SPECIES_SPRITE(CORSOLA_GALARIAN, gMonFrontPic_CorsolaGalarian), - SPECIES_SPRITE(ZIGZAGOON_GALARIAN, gMonFrontPic_ZigzagoonGalarian), - SPECIES_SPRITE(LINOONE_GALARIAN, gMonFrontPic_LinooneGalarian), -#if P_GEN_5_POKEMON == TRUE - SPECIES_SPRITE(DARUMAKA_GALARIAN, gMonFrontPic_DarumakaGalarian), - SPECIES_SPRITE(DARMANITAN_GALARIAN, gMonFrontPic_DarmanitanGalarian), - SPECIES_SPRITE(YAMASK_GALARIAN, gMonFrontPic_YamaskGalarian), - SPECIES_SPRITE(STUNFISK_GALARIAN, gMonFrontPic_StunfiskGalarian), -#endif - - SPECIES_SPRITE(GROWLITHE_HISUIAN, gMonFrontPic_GrowlitheHisuian), - SPECIES_SPRITE(ARCANINE_HISUIAN, gMonFrontPic_ArcanineHisuian), - SPECIES_SPRITE(VOLTORB_HISUIAN, gMonFrontPic_VoltorbHisuian), - SPECIES_SPRITE(ELECTRODE_HISUIAN, gMonFrontPic_ElectrodeHisuian), - SPECIES_SPRITE(TYPHLOSION_HISUIAN, gMonFrontPic_TyphlosionHisuian), - SPECIES_SPRITE(QWILFISH_HISUIAN, gMonFrontPic_QwilfishHisuian), - SPECIES_SPRITE(SNEASEL_HISUIAN, gMonFrontPic_SneaselHisuian), -#if P_GEN_5_POKEMON == TRUE - SPECIES_SPRITE(SAMUROTT_HISUIAN, gMonFrontPic_SamurottHisuian), - SPECIES_SPRITE(LILLIGANT_HISUIAN, gMonFrontPic_LilligantHisuian), - SPECIES_SPRITE(ZORUA_HISUIAN, gMonFrontPic_ZoruaHisuian), - SPECIES_SPRITE(ZOROARK_HISUIAN, gMonFrontPic_ZoroarkHisuian), - SPECIES_SPRITE(BRAVIARY_HISUIAN, gMonFrontPic_BraviaryHisuian), -#endif -#if P_GEN_6_POKEMON == TRUE - SPECIES_SPRITE(SLIGGOO_HISUIAN, gMonFrontPic_SliggooHisuian), - SPECIES_SPRITE(GOODRA_HISUIAN, gMonFrontPic_GoodraHisuian), - SPECIES_SPRITE(AVALUGG_HISUIAN, gMonFrontPic_AvaluggHisuian), -#endif -#if P_GEN_7_POKEMON == TRUE - SPECIES_SPRITE(DECIDUEYE_HISUIAN, gMonFrontPic_DecidueyeHisuian), -#endif - - SPECIES_SPRITE(PIKACHU_COSPLAY, gMonFrontPic_PikachuCosplay), - SPECIES_SPRITE(PIKACHU_ROCK_STAR, gMonFrontPic_PikachuRockStar), - SPECIES_SPRITE(PIKACHU_BELLE, gMonFrontPic_PikachuBelle), - SPECIES_SPRITE(PIKACHU_POP_STAR, gMonFrontPic_PikachuPopStar), - SPECIES_SPRITE(PIKACHU_PH_D, gMonFrontPic_PikachuPhD), - SPECIES_SPRITE(PIKACHU_LIBRE, gMonFrontPic_PikachuLibre), - - SPECIES_SPRITE(PIKACHU_ORIGINAL_CAP, gMonFrontPic_PikachuOriginalCap), - SPECIES_SPRITE(PIKACHU_HOENN_CAP, gMonFrontPic_PikachuHoennCap), - SPECIES_SPRITE(PIKACHU_SINNOH_CAP, gMonFrontPic_PikachuSinnohCap), - SPECIES_SPRITE(PIKACHU_UNOVA_CAP, gMonFrontPic_PikachuUnovaCap), - SPECIES_SPRITE(PIKACHU_KALOS_CAP, gMonFrontPic_PikachuKalosCap), - SPECIES_SPRITE(PIKACHU_ALOLA_CAP, gMonFrontPic_PikachuAlolaCap), - SPECIES_SPRITE(PIKACHU_PARTNER_CAP, gMonFrontPic_PikachuPartnerCap), - SPECIES_SPRITE(PIKACHU_WORLD_CAP, gMonFrontPic_PikachuWorldCap), - - SPECIES_SPRITE(PICHU_SPIKY_EARED, gMonFrontPic_PichuSpikyEared), - - SPECIES_SPRITE(UNOWN_B, gMonFrontPic_UnownB), - SPECIES_SPRITE(UNOWN_C, gMonFrontPic_UnownC), - SPECIES_SPRITE(UNOWN_D, gMonFrontPic_UnownD), - SPECIES_SPRITE(UNOWN_E, gMonFrontPic_UnownE), - SPECIES_SPRITE(UNOWN_F, gMonFrontPic_UnownF), - SPECIES_SPRITE(UNOWN_G, gMonFrontPic_UnownG), - SPECIES_SPRITE(UNOWN_H, gMonFrontPic_UnownH), - SPECIES_SPRITE(UNOWN_I, gMonFrontPic_UnownI), - SPECIES_SPRITE(UNOWN_J, gMonFrontPic_UnownJ), - SPECIES_SPRITE(UNOWN_K, gMonFrontPic_UnownK), - SPECIES_SPRITE(UNOWN_L, gMonFrontPic_UnownL), - SPECIES_SPRITE(UNOWN_M, gMonFrontPic_UnownM), - SPECIES_SPRITE(UNOWN_N, gMonFrontPic_UnownN), - SPECIES_SPRITE(UNOWN_O, gMonFrontPic_UnownO), - SPECIES_SPRITE(UNOWN_P, gMonFrontPic_UnownP), - SPECIES_SPRITE(UNOWN_Q, gMonFrontPic_UnownQ), - SPECIES_SPRITE(UNOWN_R, gMonFrontPic_UnownR), - SPECIES_SPRITE(UNOWN_S, gMonFrontPic_UnownS), - SPECIES_SPRITE(UNOWN_T, gMonFrontPic_UnownT), - SPECIES_SPRITE(UNOWN_U, gMonFrontPic_UnownU), - SPECIES_SPRITE(UNOWN_V, gMonFrontPic_UnownV), - SPECIES_SPRITE(UNOWN_W, gMonFrontPic_UnownW), - SPECIES_SPRITE(UNOWN_X, gMonFrontPic_UnownX), - SPECIES_SPRITE(UNOWN_Y, gMonFrontPic_UnownY), - SPECIES_SPRITE(UNOWN_Z, gMonFrontPic_UnownZ), - SPECIES_SPRITE(UNOWN_EMARK, gMonFrontPic_UnownExclamationMark), - SPECIES_SPRITE(UNOWN_QMARK, gMonFrontPic_UnownQuestionMark), - - SPECIES_SPRITE(CASTFORM_SUNNY, gMonFrontPic_CastformSunny), - SPECIES_SPRITE(CASTFORM_RAINY, gMonFrontPic_CastformRainy), - SPECIES_SPRITE(CASTFORM_SNOWY, gMonFrontPic_CastformSnowy), - - SPECIES_SPRITE(DEOXYS_ATTACK, gMonFrontPic_DeoxysAttack), - SPECIES_SPRITE(DEOXYS_DEFENSE, gMonFrontPic_DeoxysDefense), - SPECIES_SPRITE(DEOXYS_SPEED, gMonFrontPic_DeoxysSpeed), -#if P_GEN_4_POKEMON == TRUE - SPECIES_SPRITE(BURMY_SANDY_CLOAK, gMonFrontPic_BurmySandyCloak), - SPECIES_SPRITE(BURMY_TRASH_CLOAK, gMonFrontPic_BurmyTrashCloak), - - SPECIES_SPRITE(WORMADAM_SANDY_CLOAK, gMonFrontPic_WormadamSandyCloak), - SPECIES_SPRITE(WORMADAM_TRASH_CLOAK, gMonFrontPic_WormadamTrashCloak), - - SPECIES_SPRITE(CHERRIM_SUNSHINE, gMonFrontPic_CherrimSunshine), - - SPECIES_SPRITE(SHELLOS_EAST_SEA, gMonFrontPic_ShellosEastSea), - - SPECIES_SPRITE(GASTRODON_EAST_SEA, gMonFrontPic_GastrodonEastSea), - - SPECIES_SPRITE(ROTOM_HEAT, gMonFrontPic_RotomHeat), - SPECIES_SPRITE(ROTOM_WASH, gMonFrontPic_RotomWash), - SPECIES_SPRITE(ROTOM_FROST, gMonFrontPic_RotomFrost), - SPECIES_SPRITE(ROTOM_FAN, gMonFrontPic_RotomFan), - SPECIES_SPRITE(ROTOM_MOW, gMonFrontPic_RotomMow), - - SPECIES_SPRITE(DIALGA_ORIGIN, gMonFrontPic_DialgaOrigin), - SPECIES_SPRITE(PALKIA_ORIGIN, gMonFrontPic_PalkiaOrigin), - SPECIES_SPRITE(GIRATINA_ORIGIN, gMonFrontPic_GiratinaOrigin), - - SPECIES_SPRITE(SHAYMIN_SKY, gMonFrontPic_ShayminSky), - - SPECIES_SPRITE(ARCEUS_FIGHTING, gMonFrontPic_Arceus), - SPECIES_SPRITE(ARCEUS_FLYING, gMonFrontPic_Arceus), - SPECIES_SPRITE(ARCEUS_POISON, gMonFrontPic_Arceus), - SPECIES_SPRITE(ARCEUS_GROUND, gMonFrontPic_Arceus), - SPECIES_SPRITE(ARCEUS_ROCK, gMonFrontPic_Arceus), - SPECIES_SPRITE(ARCEUS_BUG, gMonFrontPic_Arceus), - SPECIES_SPRITE(ARCEUS_GHOST, gMonFrontPic_Arceus), - SPECIES_SPRITE(ARCEUS_STEEL, gMonFrontPic_Arceus), - SPECIES_SPRITE(ARCEUS_FIRE, gMonFrontPic_Arceus), - SPECIES_SPRITE(ARCEUS_WATER, gMonFrontPic_Arceus), - SPECIES_SPRITE(ARCEUS_GRASS, gMonFrontPic_Arceus), - SPECIES_SPRITE(ARCEUS_ELECTRIC, gMonFrontPic_Arceus), - SPECIES_SPRITE(ARCEUS_PSYCHIC, gMonFrontPic_Arceus), - SPECIES_SPRITE(ARCEUS_ICE, gMonFrontPic_Arceus), - SPECIES_SPRITE(ARCEUS_DRAGON, gMonFrontPic_Arceus), - SPECIES_SPRITE(ARCEUS_DARK, gMonFrontPic_Arceus), - SPECIES_SPRITE(ARCEUS_FAIRY, gMonFrontPic_Arceus), -#endif - -#if P_GEN_5_POKEMON == TRUE - SPECIES_SPRITE(BASCULIN_BLUE_STRIPED, gMonFrontPic_BasculinBlueStriped), - SPECIES_SPRITE(BASCULIN_WHITE_STRIPED, gMonFrontPic_BasculinWhiteStriped), - - SPECIES_SPRITE(DARMANITAN_ZEN_MODE, gMonFrontPic_DarmanitanZenMode), - SPECIES_SPRITE(DARMANITAN_ZEN_MODE_GALARIAN, gMonFrontPic_DarmanitanZenModeGalarian), - - SPECIES_SPRITE(DEERLING_SUMMER, gMonFrontPic_Deerling), - SPECIES_SPRITE(DEERLING_AUTUMN, gMonFrontPic_Deerling), - SPECIES_SPRITE(DEERLING_WINTER, gMonFrontPic_Deerling), - - SPECIES_SPRITE(SAWSBUCK_SUMMER, gMonFrontPic_SawsbuckSummer), - SPECIES_SPRITE(SAWSBUCK_AUTUMN, gMonFrontPic_SawsbuckAutumn), - SPECIES_SPRITE(SAWSBUCK_WINTER, gMonFrontPic_SawsbuckWinter), - - SPECIES_SPRITE(TORNADUS_THERIAN, gMonFrontPic_TornadusTherian), - SPECIES_SPRITE(THUNDURUS_THERIAN, gMonFrontPic_ThundurusTherian), - SPECIES_SPRITE(LANDORUS_THERIAN, gMonFrontPic_LandorusTherian), - - SPECIES_SPRITE(KYUREM_WHITE, gMonFrontPic_KyuremWhite), - SPECIES_SPRITE(KYUREM_BLACK, gMonFrontPic_KyuremBlack), - - SPECIES_SPRITE(KELDEO_RESOLUTE, gMonFrontPic_KeldeoResolute), - - SPECIES_SPRITE(MELOETTA_PIROUETTE, gMonFrontPic_MeloettaPirouette), - - SPECIES_SPRITE(GENESECT_DOUSE_DRIVE, gMonFrontPic_Genesect), - SPECIES_SPRITE(GENESECT_SHOCK_DRIVE, gMonFrontPic_Genesect), - SPECIES_SPRITE(GENESECT_BURN_DRIVE, gMonFrontPic_Genesect), - SPECIES_SPRITE(GENESECT_CHILL_DRIVE, gMonFrontPic_Genesect), -#endif - -#if P_GEN_6_POKEMON == TRUE - SPECIES_SPRITE(GRENINJA_BATTLE_BOND, gMonFrontPic_Greninja), - SPECIES_SPRITE(GRENINJA_ASH, gMonFrontPic_GreninjaAsh), - - SPECIES_SPRITE(VIVILLON_POLAR, gMonFrontPic_VivillonPolar), - SPECIES_SPRITE(VIVILLON_TUNDRA, gMonFrontPic_VivillonTundra), - SPECIES_SPRITE(VIVILLON_CONTINENTAL, gMonFrontPic_VivillonContinental), - SPECIES_SPRITE(VIVILLON_GARDEN, gMonFrontPic_VivillonGarden), - SPECIES_SPRITE(VIVILLON_ELEGANT, gMonFrontPic_VivillonElegant), - SPECIES_SPRITE(VIVILLON_MEADOW, gMonFrontPic_VivillonMeadow), - SPECIES_SPRITE(VIVILLON_MODERN, gMonFrontPic_VivillonModern), - SPECIES_SPRITE(VIVILLON_MARINE, gMonFrontPic_VivillonMarine), - SPECIES_SPRITE(VIVILLON_ARCHIPELAGO, gMonFrontPic_VivillonArchipelago), - SPECIES_SPRITE(VIVILLON_HIGH_PLAINS, gMonFrontPic_VivillonHighPlains), - SPECIES_SPRITE(VIVILLON_SANDSTORM, gMonFrontPic_VivillonSandstorm), - SPECIES_SPRITE(VIVILLON_RIVER, gMonFrontPic_VivillonRiver), - SPECIES_SPRITE(VIVILLON_MONSOON, gMonFrontPic_VivillonMonsoon), - SPECIES_SPRITE(VIVILLON_SAVANNA, gMonFrontPic_VivillonSavanna), - SPECIES_SPRITE(VIVILLON_SUN, gMonFrontPic_VivillonSun), - SPECIES_SPRITE(VIVILLON_OCEAN, gMonFrontPic_VivillonOcean), - SPECIES_SPRITE(VIVILLON_JUNGLE, gMonFrontPic_VivillonJungle), - SPECIES_SPRITE(VIVILLON_FANCY, gMonFrontPic_VivillonFancy), - SPECIES_SPRITE(VIVILLON_POKE_BALL, gMonFrontPic_VivillonPokeBall), - - SPECIES_SPRITE(FLABEBE_YELLOW_FLOWER, gMonFrontPic_Flabebe), - SPECIES_SPRITE(FLABEBE_ORANGE_FLOWER, gMonFrontPic_Flabebe), - SPECIES_SPRITE(FLABEBE_BLUE_FLOWER, gMonFrontPic_Flabebe), - SPECIES_SPRITE(FLABEBE_WHITE_FLOWER, gMonFrontPic_Flabebe), - - SPECIES_SPRITE(FLOETTE_YELLOW_FLOWER, gMonFrontPic_Floette), - SPECIES_SPRITE(FLOETTE_ORANGE_FLOWER, gMonFrontPic_Floette), - SPECIES_SPRITE(FLOETTE_BLUE_FLOWER, gMonFrontPic_Floette), - SPECIES_SPRITE(FLOETTE_WHITE_FLOWER, gMonFrontPic_Floette), - SPECIES_SPRITE(FLOETTE_ETERNAL_FLOWER, gMonFrontPic_FloetteEternalFlower), - - SPECIES_SPRITE(FLORGES_YELLOW_FLOWER, gMonFrontPic_Florges), - SPECIES_SPRITE(FLORGES_ORANGE_FLOWER, gMonFrontPic_Florges), - SPECIES_SPRITE(FLORGES_BLUE_FLOWER, gMonFrontPic_Florges), - SPECIES_SPRITE(FLORGES_WHITE_FLOWER, gMonFrontPic_Florges), - - SPECIES_SPRITE(FURFROU_HEART_TRIM, gMonFrontPic_FurfrouHeartTrim), - SPECIES_SPRITE(FURFROU_STAR_TRIM, gMonFrontPic_FurfrouStarTrim), - SPECIES_SPRITE(FURFROU_DIAMOND_TRIM, gMonFrontPic_FurfrouDiamondTrim), - SPECIES_SPRITE(FURFROU_DEBUTANTE_TRIM, gMonFrontPic_FurfrouDebutanteTrim), - SPECIES_SPRITE(FURFROU_MATRON_TRIM, gMonFrontPic_FurfrouMatronTrim), - SPECIES_SPRITE(FURFROU_DANDY_TRIM, gMonFrontPic_FurfrouDandyTrim), - SPECIES_SPRITE(FURFROU_LA_REINE_TRIM, gMonFrontPic_FurfrouLaReineTrim), - SPECIES_SPRITE(FURFROU_KABUKI_TRIM, gMonFrontPic_FurfrouKabukiTrim), - SPECIES_SPRITE(FURFROU_PHARAOH_TRIM, gMonFrontPic_FurfrouPharaohTrim), - - SPECIES_SPRITE(MEOWSTIC_FEMALE, gMonFrontPic_MeowsticFemale), - - SPECIES_SPRITE(AEGISLASH_BLADE, gMonFrontPic_AegislashBlade), - - SPECIES_SPRITE(PUMPKABOO_SMALL, gMonFrontPic_PumpkabooSmall), - SPECIES_SPRITE(PUMPKABOO_LARGE, gMonFrontPic_PumpkabooLarge), - SPECIES_SPRITE(PUMPKABOO_SUPER, gMonFrontPic_PumpkabooSuper), - - SPECIES_SPRITE(GOURGEIST_SMALL, gMonFrontPic_GourgeistSmall), - SPECIES_SPRITE(GOURGEIST_LARGE, gMonFrontPic_GourgeistLarge), - SPECIES_SPRITE(GOURGEIST_SUPER, gMonFrontPic_GourgeistSuper), - - SPECIES_SPRITE(XERNEAS_ACTIVE, gMonFrontPic_XerneasActive), - - SPECIES_SPRITE(ZYGARDE_10, gMonFrontPic_Zygarde10), - SPECIES_SPRITE(ZYGARDE_10_POWER_CONSTRUCT, gMonFrontPic_Zygarde10), - SPECIES_SPRITE(ZYGARDE_50_POWER_CONSTRUCT, gMonFrontPic_Zygarde), - SPECIES_SPRITE(ZYGARDE_COMPLETE, gMonFrontPic_ZygardeComplete), - - SPECIES_SPRITE(HOOPA_UNBOUND, gMonFrontPic_HoopaUnbound), -#endif - -#if P_GEN_7_POKEMON == TRUE - SPECIES_SPRITE(ORICORIO_POM_POM, gMonFrontPic_OricorioPomPom), - SPECIES_SPRITE(ORICORIO_PAU, gMonFrontPic_OricorioPau), - SPECIES_SPRITE(ORICORIO_SENSU, gMonFrontPic_OricorioSensu), - - SPECIES_SPRITE(ROCKRUFF_OWN_TEMPO, gMonFrontPic_Rockruff), - - SPECIES_SPRITE(LYCANROC_MIDNIGHT, gMonFrontPic_LycanrocMidnight), - SPECIES_SPRITE(LYCANROC_DUSK, gMonFrontPic_LycanrocDusk), - - SPECIES_SPRITE(WISHIWASHI_SCHOOL, gMonFrontPic_WishiwashiSchool), - - SPECIES_SPRITE(SILVALLY_FIGHTING, gMonFrontPic_Silvally), - SPECIES_SPRITE(SILVALLY_FLYING, gMonFrontPic_Silvally), - SPECIES_SPRITE(SILVALLY_POISON, gMonFrontPic_Silvally), - SPECIES_SPRITE(SILVALLY_GROUND, gMonFrontPic_Silvally), - SPECIES_SPRITE(SILVALLY_ROCK, gMonFrontPic_Silvally), - SPECIES_SPRITE(SILVALLY_BUG, gMonFrontPic_Silvally), - SPECIES_SPRITE(SILVALLY_GHOST, gMonFrontPic_Silvally), - SPECIES_SPRITE(SILVALLY_STEEL, gMonFrontPic_Silvally), - SPECIES_SPRITE(SILVALLY_FIRE, gMonFrontPic_Silvally), - SPECIES_SPRITE(SILVALLY_WATER, gMonFrontPic_Silvally), - SPECIES_SPRITE(SILVALLY_GRASS, gMonFrontPic_Silvally), - SPECIES_SPRITE(SILVALLY_ELECTRIC, gMonFrontPic_Silvally), - SPECIES_SPRITE(SILVALLY_PSYCHIC, gMonFrontPic_Silvally), - SPECIES_SPRITE(SILVALLY_ICE, gMonFrontPic_Silvally), - SPECIES_SPRITE(SILVALLY_DRAGON, gMonFrontPic_Silvally), - SPECIES_SPRITE(SILVALLY_DARK, gMonFrontPic_Silvally), - SPECIES_SPRITE(SILVALLY_FAIRY, gMonFrontPic_Silvally), - - SPECIES_SPRITE(MINIOR_METEOR_ORANGE, gMonFrontPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_YELLOW, gMonFrontPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_GREEN, gMonFrontPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_BLUE, gMonFrontPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_INDIGO, gMonFrontPic_Minior), - SPECIES_SPRITE(MINIOR_METEOR_VIOLET, gMonFrontPic_Minior), - SPECIES_SPRITE(MINIOR_CORE_RED, gMonFrontPic_MiniorCore), - SPECIES_SPRITE(MINIOR_CORE_ORANGE, gMonFrontPic_MiniorCore), - SPECIES_SPRITE(MINIOR_CORE_YELLOW, gMonFrontPic_MiniorCore), - SPECIES_SPRITE(MINIOR_CORE_GREEN, gMonFrontPic_MiniorCore), - SPECIES_SPRITE(MINIOR_CORE_BLUE, gMonFrontPic_MiniorCore), - SPECIES_SPRITE(MINIOR_CORE_INDIGO, gMonFrontPic_MiniorCore), - SPECIES_SPRITE(MINIOR_CORE_VIOLET, gMonFrontPic_MiniorCore), - - SPECIES_SPRITE(MIMIKYU_BUSTED, gMonFrontPic_MimikyuBusted), - - SPECIES_SPRITE(NECROZMA_DUSK_MANE, gMonFrontPic_NecrozmaDuskMane), - SPECIES_SPRITE(NECROZMA_DAWN_WINGS, gMonFrontPic_NecrozmaDawnWings), - SPECIES_SPRITE(NECROZMA_ULTRA, gMonFrontPic_NecrozmaUltra), - - SPECIES_SPRITE(MAGEARNA_ORIGINAL_COLOR, gMonFrontPic_MagearnaOriginalColor), -#endif - -#if P_GEN_8_POKEMON == TRUE - SPECIES_SPRITE(CRAMORANT_GULPING, gMonFrontPic_CramorantGulping), - SPECIES_SPRITE(CRAMORANT_GORGING, gMonFrontPic_CramorantGorging), - - SPECIES_SPRITE(TOXTRICITY_LOW_KEY, gMonFrontPic_ToxtricityLowKey), - - SPECIES_SPRITE(SINISTEA_ANTIQUE, gMonFrontPic_Sinistea), - - SPECIES_SPRITE(POLTEAGEIST_ANTIQUE, gMonFrontPic_Polteageist), - - SPECIES_SPRITE(ALCREMIE_RUBY_CREAM, gMonFrontPic_AlcremieRubyCream), - SPECIES_SPRITE(ALCREMIE_MATCHA_CREAM, gMonFrontPic_AlcremieMatchaCream), - SPECIES_SPRITE(ALCREMIE_MINT_CREAM, gMonFrontPic_AlcremieMintCream), - SPECIES_SPRITE(ALCREMIE_LEMON_CREAM, gMonFrontPic_AlcremieLemonCream), - SPECIES_SPRITE(ALCREMIE_SALTED_CREAM, gMonFrontPic_AlcremieSaltedCream), - SPECIES_SPRITE(ALCREMIE_RUBY_SWIRL, gMonFrontPic_AlcremieRubySwirl), - SPECIES_SPRITE(ALCREMIE_CARAMEL_SWIRL, gMonFrontPic_AlcremieCaramelSwirl), - SPECIES_SPRITE(ALCREMIE_RAINBOW_SWIRL, gMonFrontPic_AlcremieRainbowSwirl), - - SPECIES_SPRITE(EISCUE_NOICE_FACE, gMonFrontPic_EiscueNoiceFace), - - SPECIES_SPRITE(INDEEDEE_FEMALE, gMonFrontPic_IndeedeeFemale), - - SPECIES_SPRITE(MORPEKO_HANGRY, gMonFrontPic_MorpekoHangry), - - SPECIES_SPRITE(ZACIAN_CROWNED_SWORD, gMonFrontPic_ZacianCrownedSword), - - SPECIES_SPRITE(ZAMAZENTA_CROWNED_SHIELD, gMonFrontPic_ZamazentaCrownedShield), - - SPECIES_SPRITE(ETERNATUS_ETERNAMAX, gMonFrontPic_EternatusEternamax), - - SPECIES_SPRITE(URSHIFU_RAPID_STRIKE_STYLE, gMonFrontPic_UrshifuRapidStrikeStyle), - - SPECIES_SPRITE(ZARUDE_DADA, gMonFrontPic_ZarudeDada), - - SPECIES_SPRITE(CALYREX_ICE_RIDER, gMonFrontPic_CalyrexIceRider), - SPECIES_SPRITE(CALYREX_SHADOW_RIDER, gMonFrontPic_CalyrexShadowRider), - - SPECIES_SPRITE(ENAMORUS_THERIAN, gMonFrontPic_EnamorusTherian), - - SPECIES_SPRITE(BASCULEGION_FEMALE, gMonFrontPic_BasculegionFemale), -#endif - SPECIES_SPRITE(EGG, gMonFrontPic_Egg), -}; - -const struct CompressedSpriteSheet gMonFrontPicTableFemale[NUM_SPECIES + 1] = -{ - SPECIES_SPRITE(VENUSAUR, gMonFrontPic_VenusaurF), - SPECIES_SPRITE(BUTTERFREE, gMonFrontPic_ButterfreeF), - SPECIES_SPRITE(RATTATA, gMonFrontPic_RattataF), - SPECIES_SPRITE(RATICATE, gMonFrontPic_RaticateF), - SPECIES_SPRITE(PIKACHU, gMonFrontPic_PikachuF), - SPECIES_SPRITE(RAICHU, gMonFrontPic_RaichuF), - SPECIES_SPRITE(ZUBAT, gMonFrontPic_ZubatF), - SPECIES_SPRITE(GOLBAT, gMonFrontPic_GolbatF), - SPECIES_SPRITE(GLOOM, gMonFrontPic_GloomF), - SPECIES_SPRITE(VILEPLUME, gMonFrontPic_VileplumeF), - SPECIES_SPRITE(KADABRA, gMonFrontPic_KadabraF), - SPECIES_SPRITE(ALAKAZAM, gMonFrontPic_AlakazamF), - SPECIES_SPRITE(DODUO, gMonFrontPic_DoduoF), - SPECIES_SPRITE(DODRIO, gMonFrontPic_DodrioF), - SPECIES_SPRITE(HYPNO, gMonFrontPic_HypnoF), - SPECIES_SPRITE(RHYHORN, gMonFrontPic_RhyhornF), - SPECIES_SPRITE(RHYDON, gMonFrontPic_RhydonF), - SPECIES_SPRITE(GOLDEEN, gMonFrontPic_GoldeenF), - SPECIES_SPRITE(SEAKING, gMonFrontPic_SeakingF), - SPECIES_SPRITE(SCYTHER, gMonFrontPic_ScytherF), - SPECIES_SPRITE(MAGIKARP, gMonFrontPic_MagikarpF), - SPECIES_SPRITE(GYARADOS, gMonFrontPic_GyaradosF), - SPECIES_SPRITE(EEVEE, gMonFrontPic_EeveeF), - SPECIES_SPRITE(MEGANIUM, gMonFrontPic_MeganiumF), - SPECIES_SPRITE(LEDYBA, gMonFrontPic_LedybaF), - SPECIES_SPRITE(LEDIAN, gMonFrontPic_LedianF), - SPECIES_SPRITE(XATU, gMonFrontPic_XatuF), - SPECIES_SPRITE(SUDOWOODO, gMonFrontPic_SudowoodoF), - SPECIES_SPRITE(POLITOED, gMonFrontPic_PolitoedF), - SPECIES_SPRITE(AIPOM, gMonFrontPic_AipomF), - SPECIES_SPRITE(WOOPER, gMonFrontPic_WooperF), - SPECIES_SPRITE(QUAGSIRE, gMonFrontPic_QuagsireF), - SPECIES_SPRITE(MURKROW, gMonFrontPic_MurkrowF), - SPECIES_SPRITE(WOBBUFFET, gMonFrontPic_WobbuffetF), - SPECIES_SPRITE(GIRAFARIG, gMonFrontPic_GirafarigF), - SPECIES_SPRITE(GLIGAR, gMonFrontPic_GligarF), - SPECIES_SPRITE(STEELIX, gMonFrontPic_SteelixF), - SPECIES_SPRITE(SCIZOR, gMonFrontPic_ScizorF), - SPECIES_SPRITE(HERACROSS, gMonFrontPic_HeracrossF), - SPECIES_SPRITE(SNEASEL, gMonFrontPic_SneaselF), - SPECIES_SPRITE(URSARING, gMonFrontPic_UrsaringF), - SPECIES_SPRITE(PILOSWINE, gMonFrontPic_PiloswineF), - SPECIES_SPRITE(OCTILLERY, gMonFrontPic_OctilleryF), - SPECIES_SPRITE(HOUNDOOM, gMonFrontPic_HoundoomF), - SPECIES_SPRITE(DONPHAN, gMonFrontPic_DonphanF), - SPECIES_SPRITE(COMBUSKEN, gMonFrontPic_CombuskenF), - SPECIES_SPRITE(BLAZIKEN, gMonFrontPic_BlazikenF), - SPECIES_SPRITE(BEAUTIFLY, gMonFrontPic_BeautiflyF), - SPECIES_SPRITE(DUSTOX, gMonFrontPic_DustoxF), - SPECIES_SPRITE(LUDICOLO, gMonFrontPic_LudicoloF), - SPECIES_SPRITE(NUZLEAF, gMonFrontPic_NuzleafF), - SPECIES_SPRITE(SHIFTRY, gMonFrontPic_ShiftryF), - SPECIES_SPRITE(MEDITITE, gMonFrontPic_MedititeF), - SPECIES_SPRITE(MEDICHAM, gMonFrontPic_MedichamF), - SPECIES_SPRITE(ROSELIA, gMonFrontPic_RoseliaF), - SPECIES_SPRITE(GULPIN, gMonFrontPic_GulpinF), - SPECIES_SPRITE(SWALOT, gMonFrontPic_SwalotF), - SPECIES_SPRITE(NUMEL, gMonFrontPic_NumelF), - SPECIES_SPRITE(CAMERUPT, gMonFrontPic_CameruptF), - SPECIES_SPRITE(CACTURNE, gMonFrontPic_CacturneF), - SPECIES_SPRITE(MILOTIC, gMonFrontPic_MiloticF), - SPECIES_SPRITE(RELICANTH, gMonFrontPic_RelicanthF), -#if P_GEN_4_POKEMON == TRUE - SPECIES_SPRITE(STARLY, gMonFrontPic_StarlyF), - SPECIES_SPRITE(STARAVIA, gMonFrontPic_StaraviaF), - SPECIES_SPRITE(STARAPTOR, gMonFrontPic_StaraptorF), - SPECIES_SPRITE(BIDOOF, gMonFrontPic_BidoofF), - SPECIES_SPRITE(BIBAREL, gMonFrontPic_BibarelF), - SPECIES_SPRITE(KRICKETOT, gMonFrontPic_KricketotF), - SPECIES_SPRITE(KRICKETUNE, gMonFrontPic_KricketuneF), - SPECIES_SPRITE(SHINX, gMonFrontPic_ShinxF), - SPECIES_SPRITE(LUXIO, gMonFrontPic_LuxioF), - SPECIES_SPRITE(LUXRAY, gMonFrontPic_LuxrayF), - SPECIES_SPRITE(ROSERADE, gMonFrontPic_RoseradeF), - SPECIES_SPRITE(AMBIPOM, gMonFrontPic_AmbipomF), - SPECIES_SPRITE(PACHIRISU, gMonFrontPic_PachirisuF), - SPECIES_SPRITE(GIBLE, gMonFrontPic_GibleF), - SPECIES_SPRITE(GABITE, gMonFrontPic_GabiteF), - SPECIES_SPRITE(GARCHOMP, gMonFrontPic_GarchompF), - SPECIES_SPRITE(CROAGUNK, gMonFrontPic_CroagunkF), - SPECIES_SPRITE(TOXICROAK, gMonFrontPic_ToxicroakF), - SPECIES_SPRITE(FINNEON, gMonFrontPic_FinneonF), - SPECIES_SPRITE(LUMINEON, gMonFrontPic_LumineonF), - SPECIES_SPRITE(SNOVER, gMonFrontPic_SnoverF), - SPECIES_SPRITE(ABOMASNOW, gMonFrontPic_AbomasnowF), - SPECIES_SPRITE(WEAVILE, gMonFrontPic_WeavileF), - SPECIES_SPRITE(RHYPERIOR, gMonFrontPic_RhyperiorF), - SPECIES_SPRITE(TANGROWTH, gMonFrontPic_TangrowthF), - SPECIES_SPRITE(MAMOSWINE, gMonFrontPic_MamoswineF), -#endif -#if P_GEN_5_POKEMON == TRUE - SPECIES_SPRITE(UNFEZANT, gMonFrontPic_UnfezantF), - SPECIES_SPRITE(FRILLISH, gMonFrontPic_FrillishF), - SPECIES_SPRITE(JELLICENT, gMonFrontPic_JellicentF), -#endif -#if P_GEN_6_POKEMON == TRUE - SPECIES_SPRITE(PYROAR, gMonFrontPic_PyroarF), -#endif - SPECIES_SPRITE(SNEASEL_HISUIAN, gMonFrontPic_SneaselHisuianF), -}; diff --git a/src/data/pokemon_graphics/palette_table.h b/src/data/pokemon_graphics/palette_table.h deleted file mode 100644 index 1fa65f3b33..0000000000 --- a/src/data/pokemon_graphics/palette_table.h +++ /dev/null @@ -1,1351 +0,0 @@ -const struct CompressedSpritePalette gMonPaletteTable[NUM_SPECIES + 1] = -{ - SPECIES_PAL(NONE, gMonPalette_CircledQuestionMark), - SPECIES_PAL(BULBASAUR, gMonPalette_Bulbasaur), - SPECIES_PAL(IVYSAUR, gMonPalette_Ivysaur), - SPECIES_PAL(VENUSAUR, gMonPalette_Venusaur), - SPECIES_PAL(CHARMANDER, gMonPalette_Charmander), - SPECIES_PAL(CHARMELEON, gMonPalette_Charmeleon), - SPECIES_PAL(CHARIZARD, gMonPalette_Charizard), - SPECIES_PAL(SQUIRTLE, gMonPalette_Squirtle), - SPECIES_PAL(WARTORTLE, gMonPalette_Wartortle), - SPECIES_PAL(BLASTOISE, gMonPalette_Blastoise), - SPECIES_PAL(CATERPIE, gMonPalette_Caterpie), - SPECIES_PAL(METAPOD, gMonPalette_Metapod), - SPECIES_PAL(BUTTERFREE, gMonPalette_Butterfree), - SPECIES_PAL(WEEDLE, gMonPalette_Weedle), - SPECIES_PAL(KAKUNA, gMonPalette_Kakuna), - SPECIES_PAL(BEEDRILL, gMonPalette_Beedrill), - SPECIES_PAL(PIDGEY, gMonPalette_Pidgey), - SPECIES_PAL(PIDGEOTTO, gMonPalette_Pidgeotto), - SPECIES_PAL(PIDGEOT, gMonPalette_Pidgeot), - SPECIES_PAL(RATTATA, gMonPalette_Rattata), - SPECIES_PAL(RATICATE, gMonPalette_Raticate), - SPECIES_PAL(SPEAROW, gMonPalette_Spearow), - SPECIES_PAL(FEAROW, gMonPalette_Fearow), - SPECIES_PAL(EKANS, gMonPalette_Ekans), - SPECIES_PAL(ARBOK, gMonPalette_Arbok), - SPECIES_PAL(PIKACHU, gMonPalette_Pikachu), - SPECIES_PAL(RAICHU, gMonPalette_Raichu), - SPECIES_PAL(SANDSHREW, gMonPalette_Sandshrew), - SPECIES_PAL(SANDSLASH, gMonPalette_Sandslash), - SPECIES_PAL(NIDORAN_F, gMonPalette_NidoranF), - SPECIES_PAL(NIDORINA, gMonPalette_Nidorina), - SPECIES_PAL(NIDOQUEEN, gMonPalette_Nidoqueen), - SPECIES_PAL(NIDORAN_M, gMonPalette_NidoranM), - SPECIES_PAL(NIDORINO, gMonPalette_Nidorino), - SPECIES_PAL(NIDOKING, gMonPalette_Nidoking), - SPECIES_PAL(CLEFAIRY, gMonPalette_Clefairy), - SPECIES_PAL(CLEFABLE, gMonPalette_Clefable), - SPECIES_PAL(VULPIX, gMonPalette_Vulpix), - SPECIES_PAL(NINETALES, gMonPalette_Ninetales), - SPECIES_PAL(JIGGLYPUFF, gMonPalette_Jigglypuff), - SPECIES_PAL(WIGGLYTUFF, gMonPalette_Wigglytuff), - SPECIES_PAL(ZUBAT, gMonPalette_Zubat), - SPECIES_PAL(GOLBAT, gMonPalette_Golbat), - SPECIES_PAL(ODDISH, gMonPalette_Oddish), - SPECIES_PAL(GLOOM, gMonPalette_Gloom), - SPECIES_PAL(VILEPLUME, gMonPalette_Vileplume), - SPECIES_PAL(PARAS, gMonPalette_Paras), - SPECIES_PAL(PARASECT, gMonPalette_Parasect), - SPECIES_PAL(VENONAT, gMonPalette_Venonat), - SPECIES_PAL(VENOMOTH, gMonPalette_Venomoth), - SPECIES_PAL(DIGLETT, gMonPalette_Diglett), - SPECIES_PAL(DUGTRIO, gMonPalette_Dugtrio), - SPECIES_PAL(MEOWTH, gMonPalette_Meowth), - SPECIES_PAL(PERSIAN, gMonPalette_Persian), - SPECIES_PAL(PSYDUCK, gMonPalette_Psyduck), - SPECIES_PAL(GOLDUCK, gMonPalette_Golduck), - SPECIES_PAL(MANKEY, gMonPalette_Mankey), - SPECIES_PAL(PRIMEAPE, gMonPalette_Primeape), - SPECIES_PAL(GROWLITHE, gMonPalette_Growlithe), - SPECIES_PAL(ARCANINE, gMonPalette_Arcanine), - SPECIES_PAL(POLIWAG, gMonPalette_Poliwag), - SPECIES_PAL(POLIWHIRL, gMonPalette_Poliwhirl), - SPECIES_PAL(POLIWRATH, gMonPalette_Poliwrath), - SPECIES_PAL(ABRA, gMonPalette_Abra), - SPECIES_PAL(KADABRA, gMonPalette_Kadabra), - SPECIES_PAL(ALAKAZAM, gMonPalette_Alakazam), - SPECIES_PAL(MACHOP, gMonPalette_Machop), - SPECIES_PAL(MACHOKE, gMonPalette_Machoke), - SPECIES_PAL(MACHAMP, gMonPalette_Machamp), - SPECIES_PAL(BELLSPROUT, gMonPalette_Bellsprout), - SPECIES_PAL(WEEPINBELL, gMonPalette_Weepinbell), - SPECIES_PAL(VICTREEBEL, gMonPalette_Victreebel), - SPECIES_PAL(TENTACOOL, gMonPalette_Tentacool), - SPECIES_PAL(TENTACRUEL, gMonPalette_Tentacruel), - SPECIES_PAL(GEODUDE, gMonPalette_Geodude), - SPECIES_PAL(GRAVELER, gMonPalette_Graveler), - SPECIES_PAL(GOLEM, gMonPalette_Golem), - SPECIES_PAL(PONYTA, gMonPalette_Ponyta), - SPECIES_PAL(RAPIDASH, gMonPalette_Rapidash), - SPECIES_PAL(SLOWPOKE, gMonPalette_Slowpoke), - SPECIES_PAL(SLOWBRO, gMonPalette_Slowbro), - SPECIES_PAL(MAGNEMITE, gMonPalette_Magnemite), - SPECIES_PAL(MAGNETON, gMonPalette_Magneton), - SPECIES_PAL(FARFETCHD, gMonPalette_Farfetchd), - SPECIES_PAL(DODUO, gMonPalette_Doduo), - SPECIES_PAL(DODRIO, gMonPalette_Dodrio), - SPECIES_PAL(SEEL, gMonPalette_Seel), - SPECIES_PAL(DEWGONG, gMonPalette_Dewgong), - SPECIES_PAL(GRIMER, gMonPalette_Grimer), - SPECIES_PAL(MUK, gMonPalette_Muk), - SPECIES_PAL(SHELLDER, gMonPalette_Shellder), - SPECIES_PAL(CLOYSTER, gMonPalette_Cloyster), - SPECIES_PAL(GASTLY, gMonPalette_Gastly), - SPECIES_PAL(HAUNTER, gMonPalette_Haunter), - SPECIES_PAL(GENGAR, gMonPalette_Gengar), - SPECIES_PAL(ONIX, gMonPalette_Onix), - SPECIES_PAL(DROWZEE, gMonPalette_Drowzee), - SPECIES_PAL(HYPNO, gMonPalette_Hypno), - SPECIES_PAL(KRABBY, gMonPalette_Krabby), - SPECIES_PAL(KINGLER, gMonPalette_Kingler), - SPECIES_PAL(VOLTORB, gMonPalette_Voltorb), - SPECIES_PAL(ELECTRODE, gMonPalette_Electrode), - SPECIES_PAL(EXEGGCUTE, gMonPalette_Exeggcute), - SPECIES_PAL(EXEGGUTOR, gMonPalette_Exeggutor), - SPECIES_PAL(CUBONE, gMonPalette_Cubone), - SPECIES_PAL(MAROWAK, gMonPalette_Marowak), - SPECIES_PAL(HITMONLEE, gMonPalette_Hitmonlee), - SPECIES_PAL(HITMONCHAN, gMonPalette_Hitmonchan), - SPECIES_PAL(LICKITUNG, gMonPalette_Lickitung), - SPECIES_PAL(KOFFING, gMonPalette_Koffing), - SPECIES_PAL(WEEZING, gMonPalette_Weezing), - SPECIES_PAL(RHYHORN, gMonPalette_Rhyhorn), - SPECIES_PAL(RHYDON, gMonPalette_Rhydon), - SPECIES_PAL(CHANSEY, gMonPalette_Chansey), - SPECIES_PAL(TANGELA, gMonPalette_Tangela), - SPECIES_PAL(KANGASKHAN, gMonPalette_Kangaskhan), - SPECIES_PAL(HORSEA, gMonPalette_Horsea), - SPECIES_PAL(SEADRA, gMonPalette_Seadra), - SPECIES_PAL(GOLDEEN, gMonPalette_Goldeen), - SPECIES_PAL(SEAKING, gMonPalette_Seaking), - SPECIES_PAL(STARYU, gMonPalette_Staryu), - SPECIES_PAL(STARMIE, gMonPalette_Starmie), - SPECIES_PAL(MR_MIME, gMonPalette_MrMime), - SPECIES_PAL(SCYTHER, gMonPalette_Scyther), - SPECIES_PAL(JYNX, gMonPalette_Jynx), - SPECIES_PAL(ELECTABUZZ, gMonPalette_Electabuzz), - SPECIES_PAL(MAGMAR, gMonPalette_Magmar), - SPECIES_PAL(PINSIR, gMonPalette_Pinsir), - SPECIES_PAL(TAUROS, gMonPalette_Tauros), - SPECIES_PAL(MAGIKARP, gMonPalette_Magikarp), - SPECIES_PAL(GYARADOS, gMonPalette_Gyarados), - SPECIES_PAL(LAPRAS, gMonPalette_Lapras), - SPECIES_PAL(DITTO, gMonPalette_Ditto), - SPECIES_PAL(EEVEE, gMonPalette_Eevee), - SPECIES_PAL(VAPOREON, gMonPalette_Vaporeon), - SPECIES_PAL(JOLTEON, gMonPalette_Jolteon), - SPECIES_PAL(FLAREON, gMonPalette_Flareon), - SPECIES_PAL(PORYGON, gMonPalette_Porygon), - SPECIES_PAL(OMANYTE, gMonPalette_Omanyte), - SPECIES_PAL(OMASTAR, gMonPalette_Omastar), - SPECIES_PAL(KABUTO, gMonPalette_Kabuto), - SPECIES_PAL(KABUTOPS, gMonPalette_Kabutops), - SPECIES_PAL(AERODACTYL, gMonPalette_Aerodactyl), - SPECIES_PAL(SNORLAX, gMonPalette_Snorlax), - SPECIES_PAL(ARTICUNO, gMonPalette_Articuno), - SPECIES_PAL(ZAPDOS, gMonPalette_Zapdos), - SPECIES_PAL(MOLTRES, gMonPalette_Moltres), - SPECIES_PAL(DRATINI, gMonPalette_Dratini), - SPECIES_PAL(DRAGONAIR, gMonPalette_Dragonair), - SPECIES_PAL(DRAGONITE, gMonPalette_Dragonite), - SPECIES_PAL(MEWTWO, gMonPalette_Mewtwo), - SPECIES_PAL(MEW, gMonPalette_Mew), - SPECIES_PAL(CHIKORITA, gMonPalette_Chikorita), - SPECIES_PAL(BAYLEEF, gMonPalette_Bayleef), - SPECIES_PAL(MEGANIUM, gMonPalette_Meganium), - SPECIES_PAL(CYNDAQUIL, gMonPalette_Cyndaquil), - SPECIES_PAL(QUILAVA, gMonPalette_Quilava), - SPECIES_PAL(TYPHLOSION, gMonPalette_Typhlosion), - SPECIES_PAL(TOTODILE, gMonPalette_Totodile), - SPECIES_PAL(CROCONAW, gMonPalette_Croconaw), - SPECIES_PAL(FERALIGATR, gMonPalette_Feraligatr), - SPECIES_PAL(SENTRET, gMonPalette_Sentret), - SPECIES_PAL(FURRET, gMonPalette_Furret), - SPECIES_PAL(HOOTHOOT, gMonPalette_Hoothoot), - SPECIES_PAL(NOCTOWL, gMonPalette_Noctowl), - SPECIES_PAL(LEDYBA, gMonPalette_Ledyba), - SPECIES_PAL(LEDIAN, gMonPalette_Ledian), - SPECIES_PAL(SPINARAK, gMonPalette_Spinarak), - SPECIES_PAL(ARIADOS, gMonPalette_Ariados), - SPECIES_PAL(CROBAT, gMonPalette_Crobat), - SPECIES_PAL(CHINCHOU, gMonPalette_Chinchou), - SPECIES_PAL(LANTURN, gMonPalette_Lanturn), - SPECIES_PAL(PICHU, gMonPalette_Pichu), - SPECIES_PAL(CLEFFA, gMonPalette_Cleffa), - SPECIES_PAL(IGGLYBUFF, gMonPalette_Igglybuff), - SPECIES_PAL(TOGEPI, gMonPalette_Togepi), - SPECIES_PAL(TOGETIC, gMonPalette_Togetic), - SPECIES_PAL(NATU, gMonPalette_Natu), - SPECIES_PAL(XATU, gMonPalette_Xatu), - SPECIES_PAL(MAREEP, gMonPalette_Mareep), - SPECIES_PAL(FLAAFFY, gMonPalette_Flaaffy), - SPECIES_PAL(AMPHAROS, gMonPalette_Ampharos), - SPECIES_PAL(BELLOSSOM, gMonPalette_Bellossom), - SPECIES_PAL(MARILL, gMonPalette_Marill), - SPECIES_PAL(AZUMARILL, gMonPalette_Azumarill), - SPECIES_PAL(SUDOWOODO, gMonPalette_Sudowoodo), - SPECIES_PAL(POLITOED, gMonPalette_Politoed), - SPECIES_PAL(HOPPIP, gMonPalette_Hoppip), - SPECIES_PAL(SKIPLOOM, gMonPalette_Skiploom), - SPECIES_PAL(JUMPLUFF, gMonPalette_Jumpluff), - SPECIES_PAL(AIPOM, gMonPalette_Aipom), - SPECIES_PAL(SUNKERN, gMonPalette_Sunkern), - SPECIES_PAL(SUNFLORA, gMonPalette_Sunflora), - SPECIES_PAL(YANMA, gMonPalette_Yanma), - SPECIES_PAL(WOOPER, gMonPalette_Wooper), - SPECIES_PAL(QUAGSIRE, gMonPalette_Quagsire), - SPECIES_PAL(ESPEON, gMonPalette_Espeon), - SPECIES_PAL(UMBREON, gMonPalette_Umbreon), - SPECIES_PAL(MURKROW, gMonPalette_Murkrow), - SPECIES_PAL(SLOWKING, gMonPalette_Slowking), - SPECIES_PAL(MISDREAVUS, gMonPalette_Misdreavus), - SPECIES_PAL(UNOWN, gMonPalette_Unown), - SPECIES_PAL(WOBBUFFET, gMonPalette_Wobbuffet), - SPECIES_PAL(GIRAFARIG, gMonPalette_Girafarig), - SPECIES_PAL(PINECO, gMonPalette_Pineco), - SPECIES_PAL(FORRETRESS, gMonPalette_Forretress), - SPECIES_PAL(DUNSPARCE, gMonPalette_Dunsparce), - SPECIES_PAL(GLIGAR, gMonPalette_Gligar), - SPECIES_PAL(STEELIX, gMonPalette_Steelix), - SPECIES_PAL(SNUBBULL, gMonPalette_Snubbull), - SPECIES_PAL(GRANBULL, gMonPalette_Granbull), - SPECIES_PAL(QWILFISH, gMonPalette_Qwilfish), - SPECIES_PAL(SCIZOR, gMonPalette_Scizor), - SPECIES_PAL(SHUCKLE, gMonPalette_Shuckle), - SPECIES_PAL(HERACROSS, gMonPalette_Heracross), - SPECIES_PAL(SNEASEL, gMonPalette_Sneasel), - SPECIES_PAL(TEDDIURSA, gMonPalette_Teddiursa), - SPECIES_PAL(URSARING, gMonPalette_Ursaring), - SPECIES_PAL(SLUGMA, gMonPalette_Slugma), - SPECIES_PAL(MAGCARGO, gMonPalette_Magcargo), - SPECIES_PAL(SWINUB, gMonPalette_Swinub), - SPECIES_PAL(PILOSWINE, gMonPalette_Piloswine), - SPECIES_PAL(CORSOLA, gMonPalette_Corsola), - SPECIES_PAL(REMORAID, gMonPalette_Remoraid), - SPECIES_PAL(OCTILLERY, gMonPalette_Octillery), - SPECIES_PAL(DELIBIRD, gMonPalette_Delibird), - SPECIES_PAL(MANTINE, gMonPalette_Mantine), - SPECIES_PAL(SKARMORY, gMonPalette_Skarmory), - SPECIES_PAL(HOUNDOUR, gMonPalette_Houndour), - SPECIES_PAL(HOUNDOOM, gMonPalette_Houndoom), - SPECIES_PAL(KINGDRA, gMonPalette_Kingdra), - SPECIES_PAL(PHANPY, gMonPalette_Phanpy), - SPECIES_PAL(DONPHAN, gMonPalette_Donphan), - SPECIES_PAL(PORYGON2, gMonPalette_Porygon2), - SPECIES_PAL(STANTLER, gMonPalette_Stantler), - SPECIES_PAL(SMEARGLE, gMonPalette_Smeargle), - SPECIES_PAL(TYROGUE, gMonPalette_Tyrogue), - SPECIES_PAL(HITMONTOP, gMonPalette_Hitmontop), - SPECIES_PAL(SMOOCHUM, gMonPalette_Smoochum), - SPECIES_PAL(ELEKID, gMonPalette_Elekid), - SPECIES_PAL(MAGBY, gMonPalette_Magby), - SPECIES_PAL(MILTANK, gMonPalette_Miltank), - SPECIES_PAL(BLISSEY, gMonPalette_Blissey), - SPECIES_PAL(RAIKOU, gMonPalette_Raikou), - SPECIES_PAL(ENTEI, gMonPalette_Entei), - SPECIES_PAL(SUICUNE, gMonPalette_Suicune), - SPECIES_PAL(LARVITAR, gMonPalette_Larvitar), - SPECIES_PAL(PUPITAR, gMonPalette_Pupitar), - SPECIES_PAL(TYRANITAR, gMonPalette_Tyranitar), - SPECIES_PAL(LUGIA, gMonPalette_Lugia), - SPECIES_PAL(HO_OH, gMonPalette_HoOh), - SPECIES_PAL(CELEBI, gMonPalette_Celebi), - SPECIES_PAL(TREECKO, gMonPalette_Treecko), - SPECIES_PAL(GROVYLE, gMonPalette_Grovyle), - SPECIES_PAL(SCEPTILE, gMonPalette_Sceptile), - SPECIES_PAL(TORCHIC, gMonPalette_Torchic), - SPECIES_PAL(COMBUSKEN, gMonPalette_Combusken), - SPECIES_PAL(BLAZIKEN, gMonPalette_Blaziken), - SPECIES_PAL(MUDKIP, gMonPalette_Mudkip), - SPECIES_PAL(MARSHTOMP, gMonPalette_Marshtomp), - SPECIES_PAL(SWAMPERT, gMonPalette_Swampert), - SPECIES_PAL(POOCHYENA, gMonPalette_Poochyena), - SPECIES_PAL(MIGHTYENA, gMonPalette_Mightyena), - SPECIES_PAL(ZIGZAGOON, gMonPalette_Zigzagoon), - SPECIES_PAL(LINOONE, gMonPalette_Linoone), - SPECIES_PAL(WURMPLE, gMonPalette_Wurmple), - SPECIES_PAL(SILCOON, gMonPalette_Silcoon), - SPECIES_PAL(BEAUTIFLY, gMonPalette_Beautifly), - SPECIES_PAL(CASCOON, gMonPalette_Cascoon), - SPECIES_PAL(DUSTOX, gMonPalette_Dustox), - SPECIES_PAL(LOTAD, gMonPalette_Lotad), - SPECIES_PAL(LOMBRE, gMonPalette_Lombre), - SPECIES_PAL(LUDICOLO, gMonPalette_Ludicolo), - SPECIES_PAL(SEEDOT, gMonPalette_Seedot), - SPECIES_PAL(NUZLEAF, gMonPalette_Nuzleaf), - SPECIES_PAL(SHIFTRY, gMonPalette_Shiftry), - SPECIES_PAL(NINCADA, gMonPalette_Nincada), - SPECIES_PAL(NINJASK, gMonPalette_Ninjask), - SPECIES_PAL(SHEDINJA, gMonPalette_Shedinja), - SPECIES_PAL(TAILLOW, gMonPalette_Taillow), - SPECIES_PAL(SWELLOW, gMonPalette_Swellow), - SPECIES_PAL(SHROOMISH, gMonPalette_Shroomish), - SPECIES_PAL(BRELOOM, gMonPalette_Breloom), - SPECIES_PAL(SPINDA, gMonPalette_Spinda), - SPECIES_PAL(WINGULL, gMonPalette_Wingull), - SPECIES_PAL(PELIPPER, gMonPalette_Pelipper), - SPECIES_PAL(SURSKIT, gMonPalette_Surskit), - SPECIES_PAL(MASQUERAIN, gMonPalette_Masquerain), - SPECIES_PAL(WAILMER, gMonPalette_Wailmer), - SPECIES_PAL(WAILORD, gMonPalette_Wailord), - SPECIES_PAL(SKITTY, gMonPalette_Skitty), - SPECIES_PAL(DELCATTY, gMonPalette_Delcatty), - SPECIES_PAL(KECLEON, gMonPalette_Kecleon), - SPECIES_PAL(BALTOY, gMonPalette_Baltoy), - SPECIES_PAL(CLAYDOL, gMonPalette_Claydol), - SPECIES_PAL(NOSEPASS, gMonPalette_Nosepass), - SPECIES_PAL(TORKOAL, gMonPalette_Torkoal), - SPECIES_PAL(SABLEYE, gMonPalette_Sableye), - SPECIES_PAL(BARBOACH, gMonPalette_Barboach), - SPECIES_PAL(WHISCASH, gMonPalette_Whiscash), - SPECIES_PAL(LUVDISC, gMonPalette_Luvdisc), - SPECIES_PAL(CORPHISH, gMonPalette_Corphish), - SPECIES_PAL(CRAWDAUNT, gMonPalette_Crawdaunt), - SPECIES_PAL(FEEBAS, gMonPalette_Feebas), - SPECIES_PAL(MILOTIC, gMonPalette_Milotic), - SPECIES_PAL(CARVANHA, gMonPalette_Carvanha), - SPECIES_PAL(SHARPEDO, gMonPalette_Sharpedo), - SPECIES_PAL(TRAPINCH, gMonPalette_Trapinch), - SPECIES_PAL(VIBRAVA, gMonPalette_Vibrava), - SPECIES_PAL(FLYGON, gMonPalette_Flygon), - SPECIES_PAL(MAKUHITA, gMonPalette_Makuhita), - SPECIES_PAL(HARIYAMA, gMonPalette_Hariyama), - SPECIES_PAL(ELECTRIKE, gMonPalette_Electrike), - SPECIES_PAL(MANECTRIC, gMonPalette_Manectric), - SPECIES_PAL(NUMEL, gMonPalette_Numel), - SPECIES_PAL(CAMERUPT, gMonPalette_Camerupt), - SPECIES_PAL(SPHEAL, gMonPalette_Spheal), - SPECIES_PAL(SEALEO, gMonPalette_Sealeo), - SPECIES_PAL(WALREIN, gMonPalette_Walrein), - SPECIES_PAL(CACNEA, gMonPalette_Cacnea), - SPECIES_PAL(CACTURNE, gMonPalette_Cacturne), - SPECIES_PAL(SNORUNT, gMonPalette_Snorunt), - SPECIES_PAL(GLALIE, gMonPalette_Glalie), - SPECIES_PAL(LUNATONE, gMonPalette_Lunatone), - SPECIES_PAL(SOLROCK, gMonPalette_Solrock), - SPECIES_PAL(AZURILL, gMonPalette_Azurill), - SPECIES_PAL(SPOINK, gMonPalette_Spoink), - SPECIES_PAL(GRUMPIG, gMonPalette_Grumpig), - SPECIES_PAL(PLUSLE, gMonPalette_Plusle), - SPECIES_PAL(MINUN, gMonPalette_Minun), - SPECIES_PAL(MAWILE, gMonPalette_Mawile), - SPECIES_PAL(MEDITITE, gMonPalette_Meditite), - SPECIES_PAL(MEDICHAM, gMonPalette_Medicham), - SPECIES_PAL(SWABLU, gMonPalette_Swablu), - SPECIES_PAL(ALTARIA, gMonPalette_Altaria), - SPECIES_PAL(WYNAUT, gMonPalette_Wynaut), - SPECIES_PAL(DUSKULL, gMonPalette_Duskull), - SPECIES_PAL(DUSCLOPS, gMonPalette_Dusclops), - SPECIES_PAL(ROSELIA, gMonPalette_Roselia), - SPECIES_PAL(SLAKOTH, gMonPalette_Slakoth), - SPECIES_PAL(VIGOROTH, gMonPalette_Vigoroth), - SPECIES_PAL(SLAKING, gMonPalette_Slaking), - SPECIES_PAL(GULPIN, gMonPalette_Gulpin), - SPECIES_PAL(SWALOT, gMonPalette_Swalot), - SPECIES_PAL(TROPIUS, gMonPalette_Tropius), - SPECIES_PAL(WHISMUR, gMonPalette_Whismur), - SPECIES_PAL(LOUDRED, gMonPalette_Loudred), - SPECIES_PAL(EXPLOUD, gMonPalette_Exploud), - SPECIES_PAL(CLAMPERL, gMonPalette_Clamperl), - SPECIES_PAL(HUNTAIL, gMonPalette_Huntail), - SPECIES_PAL(GOREBYSS, gMonPalette_Gorebyss), - SPECIES_PAL(ABSOL, gMonPalette_Absol), - SPECIES_PAL(SHUPPET, gMonPalette_Shuppet), - SPECIES_PAL(BANETTE, gMonPalette_Banette), - SPECIES_PAL(SEVIPER, gMonPalette_Seviper), - SPECIES_PAL(ZANGOOSE, gMonPalette_Zangoose), - SPECIES_PAL(RELICANTH, gMonPalette_Relicanth), - SPECIES_PAL(ARON, gMonPalette_Aron), - SPECIES_PAL(LAIRON, gMonPalette_Lairon), - SPECIES_PAL(AGGRON, gMonPalette_Aggron), - SPECIES_PAL(CASTFORM, gMonPalette_Castform), - SPECIES_PAL(VOLBEAT, gMonPalette_Volbeat), - SPECIES_PAL(ILLUMISE, gMonPalette_Illumise), - SPECIES_PAL(LILEEP, gMonPalette_Lileep), - SPECIES_PAL(CRADILY, gMonPalette_Cradily), - SPECIES_PAL(ANORITH, gMonPalette_Anorith), - SPECIES_PAL(ARMALDO, gMonPalette_Armaldo), - SPECIES_PAL(RALTS, gMonPalette_Ralts), - SPECIES_PAL(KIRLIA, gMonPalette_Kirlia), - SPECIES_PAL(GARDEVOIR, gMonPalette_Gardevoir), - SPECIES_PAL(BAGON, gMonPalette_Bagon), - SPECIES_PAL(SHELGON, gMonPalette_Shelgon), - SPECIES_PAL(SALAMENCE, gMonPalette_Salamence), - SPECIES_PAL(BELDUM, gMonPalette_Beldum), - SPECIES_PAL(METANG, gMonPalette_Metang), - SPECIES_PAL(METAGROSS, gMonPalette_Metagross), - SPECIES_PAL(REGIROCK, gMonPalette_Regirock), - SPECIES_PAL(REGICE, gMonPalette_Regice), - SPECIES_PAL(REGISTEEL, gMonPalette_Registeel), - SPECIES_PAL(KYOGRE, gMonPalette_Kyogre), - SPECIES_PAL(GROUDON, gMonPalette_Groudon), - SPECIES_PAL(RAYQUAZA, gMonPalette_Rayquaza), - SPECIES_PAL(LATIAS, gMonPalette_Latias), - SPECIES_PAL(LATIOS, gMonPalette_Latios), - SPECIES_PAL(JIRACHI, gMonPalette_Jirachi), - SPECIES_PAL(DEOXYS, gMonPalette_Deoxys), - SPECIES_PAL(CHIMECHO, gMonPalette_Chimecho), -#if P_GEN_4_POKEMON == TRUE - SPECIES_PAL(TURTWIG, gMonPalette_Turtwig), - SPECIES_PAL(GROTLE, gMonPalette_Grotle), - SPECIES_PAL(TORTERRA, gMonPalette_Torterra), - SPECIES_PAL(CHIMCHAR, gMonPalette_Chimchar), - SPECIES_PAL(MONFERNO, gMonPalette_Monferno), - SPECIES_PAL(INFERNAPE, gMonPalette_Infernape), - SPECIES_PAL(PIPLUP, gMonPalette_Piplup), - SPECIES_PAL(PRINPLUP, gMonPalette_Prinplup), - SPECIES_PAL(EMPOLEON, gMonPalette_Empoleon), - SPECIES_PAL(STARLY, gMonPalette_Starly), - SPECIES_PAL(STARAVIA, gMonPalette_Staravia), - SPECIES_PAL(STARAPTOR, gMonPalette_Staraptor), - SPECIES_PAL(BIDOOF, gMonPalette_Bidoof), - SPECIES_PAL(BIBAREL, gMonPalette_Bibarel), - SPECIES_PAL(KRICKETOT, gMonPalette_Kricketot), - SPECIES_PAL(KRICKETUNE, gMonPalette_Kricketune), - SPECIES_PAL(SHINX, gMonPalette_Shinx), - SPECIES_PAL(LUXIO, gMonPalette_Luxio), - SPECIES_PAL(LUXRAY, gMonPalette_Luxray), - SPECIES_PAL(BUDEW, gMonPalette_Budew), - SPECIES_PAL(ROSERADE, gMonPalette_Roserade), - SPECIES_PAL(CRANIDOS, gMonPalette_Cranidos), - SPECIES_PAL(RAMPARDOS, gMonPalette_Rampardos), - SPECIES_PAL(SHIELDON, gMonPalette_Shieldon), - SPECIES_PAL(BASTIODON, gMonPalette_Bastiodon), - SPECIES_PAL(BURMY, gMonPalette_Burmy), - SPECIES_PAL(WORMADAM, gMonPalette_Wormadam), - SPECIES_PAL(MOTHIM, gMonPalette_Mothim), - SPECIES_PAL(COMBEE, gMonPalette_Combee), - SPECIES_PAL(VESPIQUEN, gMonPalette_Vespiquen), - SPECIES_PAL(PACHIRISU, gMonPalette_Pachirisu), - SPECIES_PAL(BUIZEL, gMonPalette_Buizel), - SPECIES_PAL(FLOATZEL, gMonPalette_Floatzel), - SPECIES_PAL(CHERUBI, gMonPalette_Cherubi), - SPECIES_PAL(CHERRIM, gMonPalette_Cherrim), - SPECIES_PAL(SHELLOS, gMonPalette_Shellos), - SPECIES_PAL(GASTRODON, gMonPalette_Gastrodon), - SPECIES_PAL(AMBIPOM, gMonPalette_Ambipom), - SPECIES_PAL(DRIFLOON, gMonPalette_Drifloon), - SPECIES_PAL(DRIFBLIM, gMonPalette_Drifblim), - SPECIES_PAL(BUNEARY, gMonPalette_Buneary), - SPECIES_PAL(LOPUNNY, gMonPalette_Lopunny), - SPECIES_PAL(MISMAGIUS, gMonPalette_Mismagius), - SPECIES_PAL(HONCHKROW, gMonPalette_Honchkrow), - SPECIES_PAL(GLAMEOW, gMonPalette_Glameow), - SPECIES_PAL(PURUGLY, gMonPalette_Purugly), - SPECIES_PAL(CHINGLING, gMonPalette_Chingling), - SPECIES_PAL(STUNKY, gMonPalette_Stunky), - SPECIES_PAL(SKUNTANK, gMonPalette_Skuntank), - SPECIES_PAL(BRONZOR, gMonPalette_Bronzor), - SPECIES_PAL(BRONZONG, gMonPalette_Bronzong), - SPECIES_PAL(BONSLY, gMonPalette_Bonsly), - SPECIES_PAL(MIME_JR, gMonPalette_MimeJr), - SPECIES_PAL(HAPPINY, gMonPalette_Happiny), - SPECIES_PAL(CHATOT, gMonPalette_Chatot), - SPECIES_PAL(SPIRITOMB, gMonPalette_Spiritomb), - SPECIES_PAL(GIBLE, gMonPalette_Gible), - SPECIES_PAL(GABITE, gMonPalette_Gabite), - SPECIES_PAL(GARCHOMP, gMonPalette_Garchomp), - SPECIES_PAL(MUNCHLAX, gMonPalette_Munchlax), - SPECIES_PAL(RIOLU, gMonPalette_Riolu), - SPECIES_PAL(LUCARIO, gMonPalette_Lucario), - SPECIES_PAL(HIPPOPOTAS, gMonPalette_Hippopotas), - SPECIES_PAL(HIPPOWDON, gMonPalette_Hippowdon), - SPECIES_PAL(SKORUPI, gMonPalette_Skorupi), - SPECIES_PAL(DRAPION, gMonPalette_Drapion), - SPECIES_PAL(CROAGUNK, gMonPalette_Croagunk), - SPECIES_PAL(TOXICROAK, gMonPalette_Toxicroak), - SPECIES_PAL(CARNIVINE, gMonPalette_Carnivine), - SPECIES_PAL(FINNEON, gMonPalette_Finneon), - SPECIES_PAL(LUMINEON, gMonPalette_Lumineon), - SPECIES_PAL(MANTYKE, gMonPalette_Mantyke), - SPECIES_PAL(SNOVER, gMonPalette_Snover), - SPECIES_PAL(ABOMASNOW, gMonPalette_Abomasnow), - SPECIES_PAL(WEAVILE, gMonPalette_Weavile), - SPECIES_PAL(MAGNEZONE, gMonPalette_Magnezone), - SPECIES_PAL(LICKILICKY, gMonPalette_Lickilicky), - SPECIES_PAL(RHYPERIOR, gMonPalette_Rhyperior), - SPECIES_PAL(TANGROWTH, gMonPalette_Tangrowth), - SPECIES_PAL(ELECTIVIRE, gMonPalette_Electivire), - SPECIES_PAL(MAGMORTAR, gMonPalette_Magmortar), - SPECIES_PAL(TOGEKISS, gMonPalette_Togekiss), - SPECIES_PAL(YANMEGA, gMonPalette_Yanmega), - SPECIES_PAL(LEAFEON, gMonPalette_Leafeon), - SPECIES_PAL(GLACEON, gMonPalette_Glaceon), - SPECIES_PAL(GLISCOR, gMonPalette_Gliscor), - SPECIES_PAL(MAMOSWINE, gMonPalette_Mamoswine), - SPECIES_PAL(PORYGON_Z, gMonPalette_PorygonZ), - SPECIES_PAL(GALLADE, gMonPalette_Gallade), - SPECIES_PAL(PROBOPASS, gMonPalette_Probopass), - SPECIES_PAL(DUSKNOIR, gMonPalette_Dusknoir), - SPECIES_PAL(FROSLASS, gMonPalette_Froslass), - SPECIES_PAL(ROTOM, gMonPalette_Rotom), - SPECIES_PAL(UXIE, gMonPalette_Uxie), - SPECIES_PAL(MESPRIT, gMonPalette_Mesprit), - SPECIES_PAL(AZELF, gMonPalette_Azelf), - SPECIES_PAL(DIALGA, gMonPalette_Dialga), - SPECIES_PAL(PALKIA, gMonPalette_Palkia), - SPECIES_PAL(HEATRAN, gMonPalette_Heatran), - SPECIES_PAL(REGIGIGAS, gMonPalette_Regigigas), - SPECIES_PAL(GIRATINA, gMonPalette_Giratina), - SPECIES_PAL(CRESSELIA, gMonPalette_Cresselia), - SPECIES_PAL(PHIONE, gMonPalette_Phione), - SPECIES_PAL(MANAPHY, gMonPalette_Manaphy), - SPECIES_PAL(DARKRAI, gMonPalette_Darkrai), - SPECIES_PAL(SHAYMIN, gMonPalette_Shaymin), - SPECIES_PAL(ARCEUS, gMonPalette_Arceus), -#endif -#if P_GEN_5_POKEMON == TRUE - SPECIES_PAL(VICTINI, gMonPalette_Victini), - SPECIES_PAL(SNIVY, gMonPalette_Snivy), - SPECIES_PAL(SERVINE, gMonPalette_Servine), - SPECIES_PAL(SERPERIOR, gMonPalette_Serperior), - SPECIES_PAL(TEPIG, gMonPalette_Tepig), - SPECIES_PAL(PIGNITE, gMonPalette_Pignite), - SPECIES_PAL(EMBOAR, gMonPalette_Emboar), - SPECIES_PAL(OSHAWOTT, gMonPalette_Oshawott), - SPECIES_PAL(DEWOTT, gMonPalette_Dewott), - SPECIES_PAL(SAMUROTT, gMonPalette_Samurott), - SPECIES_PAL(PATRAT, gMonPalette_Patrat), - SPECIES_PAL(WATCHOG, gMonPalette_Watchog), - SPECIES_PAL(LILLIPUP, gMonPalette_Lillipup), - SPECIES_PAL(HERDIER, gMonPalette_Herdier), - SPECIES_PAL(STOUTLAND, gMonPalette_Stoutland), - SPECIES_PAL(PURRLOIN, gMonPalette_Purrloin), - SPECIES_PAL(LIEPARD, gMonPalette_Liepard), - SPECIES_PAL(PANSAGE, gMonPalette_Pansage), - SPECIES_PAL(SIMISAGE, gMonPalette_Simisage), - SPECIES_PAL(PANSEAR, gMonPalette_Pansear), - SPECIES_PAL(SIMISEAR, gMonPalette_Simisear), - SPECIES_PAL(PANPOUR, gMonPalette_Panpour), - SPECIES_PAL(SIMIPOUR, gMonPalette_Simipour), - SPECIES_PAL(MUNNA, gMonPalette_Munna), - SPECIES_PAL(MUSHARNA, gMonPalette_Musharna), - SPECIES_PAL(PIDOVE, gMonPalette_Pidove), - SPECIES_PAL(TRANQUILL, gMonPalette_Tranquill), - SPECIES_PAL(UNFEZANT, gMonPalette_Unfezant), - SPECIES_PAL(BLITZLE, gMonPalette_Blitzle), - SPECIES_PAL(ZEBSTRIKA, gMonPalette_Zebstrika), - SPECIES_PAL(ROGGENROLA, gMonPalette_Roggenrola), - SPECIES_PAL(BOLDORE, gMonPalette_Boldore), - SPECIES_PAL(GIGALITH, gMonPalette_Gigalith), - SPECIES_PAL(WOOBAT, gMonPalette_Woobat), - SPECIES_PAL(SWOOBAT, gMonPalette_Swoobat), - SPECIES_PAL(DRILBUR, gMonPalette_Drilbur), - SPECIES_PAL(EXCADRILL, gMonPalette_Excadrill), - SPECIES_PAL(AUDINO, gMonPalette_Audino), - SPECIES_PAL(TIMBURR, gMonPalette_Timburr), - SPECIES_PAL(GURDURR, gMonPalette_Gurdurr), - SPECIES_PAL(CONKELDURR, gMonPalette_Conkeldurr), - SPECIES_PAL(TYMPOLE, gMonPalette_Tympole), - SPECIES_PAL(PALPITOAD, gMonPalette_Palpitoad), - SPECIES_PAL(SEISMITOAD, gMonPalette_Seismitoad), - SPECIES_PAL(THROH, gMonPalette_Throh), - SPECIES_PAL(SAWK, gMonPalette_Sawk), - SPECIES_PAL(SEWADDLE, gMonPalette_Sewaddle), - SPECIES_PAL(SWADLOON, gMonPalette_Swadloon), - SPECIES_PAL(LEAVANNY, gMonPalette_Leavanny), - SPECIES_PAL(VENIPEDE, gMonPalette_Venipede), - SPECIES_PAL(WHIRLIPEDE, gMonPalette_Whirlipede), - SPECIES_PAL(SCOLIPEDE, gMonPalette_Scolipede), - SPECIES_PAL(COTTONEE, gMonPalette_Cottonee), - SPECIES_PAL(WHIMSICOTT, gMonPalette_Whimsicott), - SPECIES_PAL(PETILIL, gMonPalette_Petilil), - SPECIES_PAL(LILLIGANT, gMonPalette_Lilligant), - SPECIES_PAL(BASCULIN, gMonPalette_Basculin), - SPECIES_PAL(SANDILE, gMonPalette_Sandile), - SPECIES_PAL(KROKOROK, gMonPalette_Krokorok), - SPECIES_PAL(KROOKODILE, gMonPalette_Krookodile), - SPECIES_PAL(DARUMAKA, gMonPalette_Darumaka), - SPECIES_PAL(DARMANITAN, gMonPalette_Darmanitan), - SPECIES_PAL(MARACTUS, gMonPalette_Maractus), - SPECIES_PAL(DWEBBLE, gMonPalette_Dwebble), - SPECIES_PAL(CRUSTLE, gMonPalette_Crustle), - SPECIES_PAL(SCRAGGY, gMonPalette_Scraggy), - SPECIES_PAL(SCRAFTY, gMonPalette_Scrafty), - SPECIES_PAL(SIGILYPH, gMonPalette_Sigilyph), - SPECIES_PAL(YAMASK, gMonPalette_Yamask), - SPECIES_PAL(COFAGRIGUS, gMonPalette_Cofagrigus), - SPECIES_PAL(TIRTOUGA, gMonPalette_Tirtouga), - SPECIES_PAL(CARRACOSTA, gMonPalette_Carracosta), - SPECIES_PAL(ARCHEN, gMonPalette_Archen), - SPECIES_PAL(ARCHEOPS, gMonPalette_Archeops), - SPECIES_PAL(TRUBBISH, gMonPalette_Trubbish), - SPECIES_PAL(GARBODOR, gMonPalette_Garbodor), - SPECIES_PAL(ZORUA, gMonPalette_Zorua), - SPECIES_PAL(ZOROARK, gMonPalette_Zoroark), - SPECIES_PAL(MINCCINO, gMonPalette_Minccino), - SPECIES_PAL(CINCCINO, gMonPalette_Cinccino), - SPECIES_PAL(GOTHITA, gMonPalette_Gothita), - SPECIES_PAL(GOTHORITA, gMonPalette_Gothorita), - SPECIES_PAL(GOTHITELLE, gMonPalette_Gothitelle), - SPECIES_PAL(SOLOSIS, gMonPalette_Solosis), - SPECIES_PAL(DUOSION, gMonPalette_Duosion), - SPECIES_PAL(REUNICLUS, gMonPalette_Reuniclus), - SPECIES_PAL(DUCKLETT, gMonPalette_Ducklett), - SPECIES_PAL(SWANNA, gMonPalette_Swanna), - SPECIES_PAL(VANILLITE, gMonPalette_Vanillite), - SPECIES_PAL(VANILLISH, gMonPalette_Vanillish), - SPECIES_PAL(VANILLUXE, gMonPalette_Vanilluxe), - SPECIES_PAL(DEERLING, gMonPalette_Deerling), - SPECIES_PAL(SAWSBUCK, gMonPalette_Sawsbuck), - SPECIES_PAL(EMOLGA, gMonPalette_Emolga), - SPECIES_PAL(KARRABLAST, gMonPalette_Karrablast), - SPECIES_PAL(ESCAVALIER, gMonPalette_Escavalier), - SPECIES_PAL(FOONGUS, gMonPalette_Foongus), - SPECIES_PAL(AMOONGUSS, gMonPalette_Amoonguss), - SPECIES_PAL(FRILLISH, gMonPalette_Frillish), - SPECIES_PAL(JELLICENT, gMonPalette_Jellicent), - SPECIES_PAL(ALOMOMOLA, gMonPalette_Alomomola), - SPECIES_PAL(JOLTIK, gMonPalette_Joltik), - SPECIES_PAL(GALVANTULA, gMonPalette_Galvantula), - SPECIES_PAL(FERROSEED, gMonPalette_Ferroseed), - SPECIES_PAL(FERROTHORN, gMonPalette_Ferrothorn), - SPECIES_PAL(KLINK, gMonPalette_Klink), - SPECIES_PAL(KLANG, gMonPalette_Klang), - SPECIES_PAL(KLINKLANG, gMonPalette_Klinklang), - SPECIES_PAL(TYNAMO, gMonPalette_Tynamo), - SPECIES_PAL(EELEKTRIK, gMonPalette_Eelektrik), - SPECIES_PAL(EELEKTROSS, gMonPalette_Eelektross), - SPECIES_PAL(ELGYEM, gMonPalette_Elgyem), - SPECIES_PAL(BEHEEYEM, gMonPalette_Beheeyem), - SPECIES_PAL(LITWICK, gMonPalette_Litwick), - SPECIES_PAL(LAMPENT, gMonPalette_Lampent), - SPECIES_PAL(CHANDELURE, gMonPalette_Chandelure), - SPECIES_PAL(AXEW, gMonPalette_Axew), - SPECIES_PAL(FRAXURE, gMonPalette_Fraxure), - SPECIES_PAL(HAXORUS, gMonPalette_Haxorus), - SPECIES_PAL(CUBCHOO, gMonPalette_Cubchoo), - SPECIES_PAL(BEARTIC, gMonPalette_Beartic), - SPECIES_PAL(CRYOGONAL, gMonPalette_Cryogonal), - SPECIES_PAL(SHELMET, gMonPalette_Shelmet), - SPECIES_PAL(ACCELGOR, gMonPalette_Accelgor), - SPECIES_PAL(STUNFISK, gMonPalette_Stunfisk), - SPECIES_PAL(MIENFOO, gMonPalette_Mienfoo), - SPECIES_PAL(MIENSHAO, gMonPalette_Mienshao), - SPECIES_PAL(DRUDDIGON, gMonPalette_Druddigon), - SPECIES_PAL(GOLETT, gMonPalette_Golett), - SPECIES_PAL(GOLURK, gMonPalette_Golurk), - SPECIES_PAL(PAWNIARD, gMonPalette_Pawniard), - SPECIES_PAL(BISHARP, gMonPalette_Bisharp), - SPECIES_PAL(BOUFFALANT, gMonPalette_Bouffalant), - SPECIES_PAL(RUFFLET, gMonPalette_Rufflet), - SPECIES_PAL(BRAVIARY, gMonPalette_Braviary), - SPECIES_PAL(VULLABY, gMonPalette_Vullaby), - SPECIES_PAL(MANDIBUZZ, gMonPalette_Mandibuzz), - SPECIES_PAL(HEATMOR, gMonPalette_Heatmor), - SPECIES_PAL(DURANT, gMonPalette_Durant), - SPECIES_PAL(DEINO, gMonPalette_Deino), - SPECIES_PAL(ZWEILOUS, gMonPalette_Zweilous), - SPECIES_PAL(HYDREIGON, gMonPalette_Hydreigon), - SPECIES_PAL(LARVESTA, gMonPalette_Larvesta), - SPECIES_PAL(VOLCARONA, gMonPalette_Volcarona), - SPECIES_PAL(COBALION, gMonPalette_Cobalion), - SPECIES_PAL(TERRAKION, gMonPalette_Terrakion), - SPECIES_PAL(VIRIZION, gMonPalette_Virizion), - SPECIES_PAL(TORNADUS, gMonPalette_Tornadus), - SPECIES_PAL(THUNDURUS, gMonPalette_Thundurus), - SPECIES_PAL(RESHIRAM, gMonPalette_Reshiram), - SPECIES_PAL(ZEKROM, gMonPalette_Zekrom), - SPECIES_PAL(LANDORUS, gMonPalette_Landorus), - SPECIES_PAL(KYUREM, gMonPalette_Kyurem), - SPECIES_PAL(KELDEO, gMonPalette_Keldeo), - SPECIES_PAL(MELOETTA, gMonPalette_Meloetta), - SPECIES_PAL(GENESECT, gMonPalette_Genesect), -#endif -#if P_GEN_6_POKEMON == TRUE - SPECIES_PAL(CHESPIN, gMonPalette_Chespin), - SPECIES_PAL(QUILLADIN, gMonPalette_Quilladin), - SPECIES_PAL(CHESNAUGHT, gMonPalette_Chesnaught), - SPECIES_PAL(FENNEKIN, gMonPalette_Fennekin), - SPECIES_PAL(BRAIXEN, gMonPalette_Braixen), - SPECIES_PAL(DELPHOX, gMonPalette_Delphox), - SPECIES_PAL(FROAKIE, gMonPalette_Froakie), - SPECIES_PAL(FROGADIER, gMonPalette_Frogadier), - SPECIES_PAL(GRENINJA, gMonPalette_Greninja), - SPECIES_PAL(BUNNELBY, gMonPalette_Bunnelby), - SPECIES_PAL(DIGGERSBY, gMonPalette_Diggersby), - SPECIES_PAL(FLETCHLING, gMonPalette_Fletchling), - SPECIES_PAL(FLETCHINDER, gMonPalette_Fletchinder), - SPECIES_PAL(TALONFLAME, gMonPalette_Talonflame), - SPECIES_PAL(SCATTERBUG, gMonPalette_Scatterbug), - SPECIES_PAL(SPEWPA, gMonPalette_Spewpa), - SPECIES_PAL(VIVILLON, gMonPalette_Vivillon), - SPECIES_PAL(LITLEO, gMonPalette_Litleo), - SPECIES_PAL(PYROAR, gMonPalette_Pyroar), - SPECIES_PAL(FLABEBE, gMonPalette_Flabebe), - SPECIES_PAL(FLOETTE, gMonPalette_Floette), - SPECIES_PAL(FLORGES, gMonPalette_Florges), - SPECIES_PAL(SKIDDO, gMonPalette_Skiddo), - SPECIES_PAL(GOGOAT, gMonPalette_Gogoat), - SPECIES_PAL(PANCHAM, gMonPalette_Pancham), - SPECIES_PAL(PANGORO, gMonPalette_Pangoro), - SPECIES_PAL(FURFROU, gMonPalette_Furfrou), - SPECIES_PAL(ESPURR, gMonPalette_Espurr), - SPECIES_PAL(MEOWSTIC, gMonPalette_Meowstic), - SPECIES_PAL(HONEDGE, gMonPalette_Honedge), - SPECIES_PAL(DOUBLADE, gMonPalette_Doublade), - SPECIES_PAL(AEGISLASH, gMonPalette_Aegislash), - SPECIES_PAL(SPRITZEE, gMonPalette_Spritzee), - SPECIES_PAL(AROMATISSE, gMonPalette_Aromatisse), - SPECIES_PAL(SWIRLIX, gMonPalette_Swirlix), - SPECIES_PAL(SLURPUFF, gMonPalette_Slurpuff), - SPECIES_PAL(INKAY, gMonPalette_Inkay), - SPECIES_PAL(MALAMAR, gMonPalette_Malamar), - SPECIES_PAL(BINACLE, gMonPalette_Binacle), - SPECIES_PAL(BARBARACLE, gMonPalette_Barbaracle), - SPECIES_PAL(SKRELP, gMonPalette_Skrelp), - SPECIES_PAL(DRAGALGE, gMonPalette_Dragalge), - SPECIES_PAL(CLAUNCHER, gMonPalette_Clauncher), - SPECIES_PAL(CLAWITZER, gMonPalette_Clawitzer), - SPECIES_PAL(HELIOPTILE, gMonPalette_Helioptile), - SPECIES_PAL(HELIOLISK, gMonPalette_Heliolisk), - SPECIES_PAL(TYRUNT, gMonPalette_Tyrunt), - SPECIES_PAL(TYRANTRUM, gMonPalette_Tyrantrum), - SPECIES_PAL(AMAURA, gMonPalette_Amaura), - SPECIES_PAL(AURORUS, gMonPalette_Aurorus), - SPECIES_PAL(SYLVEON, gMonPalette_Sylveon), - SPECIES_PAL(HAWLUCHA, gMonPalette_Hawlucha), - SPECIES_PAL(DEDENNE, gMonPalette_Dedenne), - SPECIES_PAL(CARBINK, gMonPalette_Carbink), - SPECIES_PAL(GOOMY, gMonPalette_Goomy), - SPECIES_PAL(SLIGGOO, gMonPalette_Sliggoo), - SPECIES_PAL(GOODRA, gMonPalette_Goodra), - SPECIES_PAL(KLEFKI, gMonPalette_Klefki), - SPECIES_PAL(PHANTUMP, gMonPalette_Phantump), - SPECIES_PAL(TREVENANT, gMonPalette_Trevenant), - SPECIES_PAL(PUMPKABOO, gMonPalette_Pumpkaboo), - SPECIES_PAL(GOURGEIST, gMonPalette_Gourgeist), - SPECIES_PAL(BERGMITE, gMonPalette_Bergmite), - SPECIES_PAL(AVALUGG, gMonPalette_Avalugg), - SPECIES_PAL(NOIBAT, gMonPalette_Noibat), - SPECIES_PAL(NOIVERN, gMonPalette_Noivern), - SPECIES_PAL(XERNEAS, gMonPalette_Xerneas), - SPECIES_PAL(YVELTAL, gMonPalette_Yveltal), - SPECIES_PAL(ZYGARDE, gMonPalette_Zygarde), - SPECIES_PAL(DIANCIE, gMonPalette_Diancie), - SPECIES_PAL(HOOPA, gMonPalette_Hoopa), - SPECIES_PAL(VOLCANION, gMonPalette_Volcanion), -#endif -#if P_GEN_7_POKEMON == TRUE - SPECIES_PAL(ROWLET, gMonPalette_Rowlet), - SPECIES_PAL(DARTRIX, gMonPalette_Dartrix), - SPECIES_PAL(DECIDUEYE, gMonPalette_Decidueye), - SPECIES_PAL(LITTEN, gMonPalette_Litten), - SPECIES_PAL(TORRACAT, gMonPalette_Torracat), - SPECIES_PAL(INCINEROAR, gMonPalette_Incineroar), - SPECIES_PAL(POPPLIO, gMonPalette_Popplio), - SPECIES_PAL(BRIONNE, gMonPalette_Brionne), - SPECIES_PAL(PRIMARINA, gMonPalette_Primarina), - SPECIES_PAL(PIKIPEK, gMonPalette_Pikipek), - SPECIES_PAL(TRUMBEAK, gMonPalette_Trumbeak), - SPECIES_PAL(TOUCANNON, gMonPalette_Toucannon), - SPECIES_PAL(YUNGOOS, gMonPalette_Yungoos), - SPECIES_PAL(GUMSHOOS, gMonPalette_Gumshoos), - SPECIES_PAL(GRUBBIN, gMonPalette_Grubbin), - SPECIES_PAL(CHARJABUG, gMonPalette_Charjabug), - SPECIES_PAL(VIKAVOLT, gMonPalette_Vikavolt), - SPECIES_PAL(CRABRAWLER, gMonPalette_Crabrawler), - SPECIES_PAL(CRABOMINABLE, gMonPalette_Crabominable), - SPECIES_PAL(ORICORIO, gMonPalette_Oricorio), - SPECIES_PAL(CUTIEFLY, gMonPalette_Cutiefly), - SPECIES_PAL(RIBOMBEE, gMonPalette_Ribombee), - SPECIES_PAL(ROCKRUFF, gMonPalette_Rockruff), - SPECIES_PAL(LYCANROC, gMonPalette_Lycanroc), - SPECIES_PAL(WISHIWASHI, gMonPalette_Wishiwashi), - SPECIES_PAL(MAREANIE, gMonPalette_Mareanie), - SPECIES_PAL(TOXAPEX, gMonPalette_Toxapex), - SPECIES_PAL(MUDBRAY, gMonPalette_Mudbray), - SPECIES_PAL(MUDSDALE, gMonPalette_Mudsdale), - SPECIES_PAL(DEWPIDER, gMonPalette_Dewpider), - SPECIES_PAL(ARAQUANID, gMonPalette_Araquanid), - SPECIES_PAL(FOMANTIS, gMonPalette_Fomantis), - SPECIES_PAL(LURANTIS, gMonPalette_Lurantis), - SPECIES_PAL(MORELULL, gMonPalette_Morelull), - SPECIES_PAL(SHIINOTIC, gMonPalette_Shiinotic), - SPECIES_PAL(SALANDIT, gMonPalette_Salandit), - SPECIES_PAL(SALAZZLE, gMonPalette_Salazzle), - SPECIES_PAL(STUFFUL, gMonPalette_Stufful), - SPECIES_PAL(BEWEAR, gMonPalette_Bewear), - SPECIES_PAL(BOUNSWEET, gMonPalette_Bounsweet), - SPECIES_PAL(STEENEE, gMonPalette_Steenee), - SPECIES_PAL(TSAREENA, gMonPalette_Tsareena), - SPECIES_PAL(COMFEY, gMonPalette_Comfey), - SPECIES_PAL(ORANGURU, gMonPalette_Oranguru), - SPECIES_PAL(PASSIMIAN, gMonPalette_Passimian), - SPECIES_PAL(WIMPOD, gMonPalette_Wimpod), - SPECIES_PAL(GOLISOPOD, gMonPalette_Golisopod), - SPECIES_PAL(SANDYGAST, gMonPalette_Sandygast), - SPECIES_PAL(PALOSSAND, gMonPalette_Palossand), - SPECIES_PAL(PYUKUMUKU, gMonPalette_Pyukumuku), - SPECIES_PAL(TYPE_NULL, gMonPalette_TypeNull), - SPECIES_PAL(SILVALLY, gMonPalette_Silvally), - SPECIES_PAL(MINIOR, gMonPalette_Minior), - SPECIES_PAL(KOMALA, gMonPalette_Komala), - SPECIES_PAL(TURTONATOR, gMonPalette_Turtonator), - SPECIES_PAL(TOGEDEMARU, gMonPalette_Togedemaru), - SPECIES_PAL(MIMIKYU, gMonPalette_Mimikyu), - SPECIES_PAL(BRUXISH, gMonPalette_Bruxish), - SPECIES_PAL(DRAMPA, gMonPalette_Drampa), - SPECIES_PAL(DHELMISE, gMonPalette_Dhelmise), - SPECIES_PAL(JANGMO_O, gMonPalette_JangmoO), - SPECIES_PAL(HAKAMO_O, gMonPalette_HakamoO), - SPECIES_PAL(KOMMO_O, gMonPalette_KommoO), - SPECIES_PAL(TAPU_KOKO, gMonPalette_TapuKoko), - SPECIES_PAL(TAPU_LELE, gMonPalette_TapuLele), - SPECIES_PAL(TAPU_BULU, gMonPalette_TapuBulu), - SPECIES_PAL(TAPU_FINI, gMonPalette_TapuFini), - SPECIES_PAL(COSMOG, gMonPalette_Cosmog), - SPECIES_PAL(COSMOEM, gMonPalette_Cosmoem), - SPECIES_PAL(SOLGALEO, gMonPalette_Solgaleo), - SPECIES_PAL(LUNALA, gMonPalette_Lunala), - SPECIES_PAL(NIHILEGO, gMonPalette_Nihilego), - SPECIES_PAL(BUZZWOLE, gMonPalette_Buzzwole), - SPECIES_PAL(PHEROMOSA, gMonPalette_Pheromosa), - SPECIES_PAL(XURKITREE, gMonPalette_Xurkitree), - SPECIES_PAL(CELESTEELA, gMonPalette_Celesteela), - SPECIES_PAL(KARTANA, gMonPalette_Kartana), - SPECIES_PAL(GUZZLORD, gMonPalette_Guzzlord), - SPECIES_PAL(NECROZMA, gMonPalette_Necrozma), - SPECIES_PAL(MAGEARNA, gMonPalette_Magearna), - SPECIES_PAL(MARSHADOW, gMonPalette_Marshadow), - SPECIES_PAL(POIPOLE, gMonPalette_Poipole), - SPECIES_PAL(NAGANADEL, gMonPalette_Naganadel), - SPECIES_PAL(STAKATAKA, gMonPalette_Stakataka), - SPECIES_PAL(BLACEPHALON, gMonPalette_Blacephalon), - SPECIES_PAL(ZERAORA, gMonPalette_Zeraora), - SPECIES_PAL(MELTAN, gMonPalette_Meltan), - SPECIES_PAL(MELMETAL, gMonPalette_Melmetal), -#endif -#if P_GEN_8_POKEMON == TRUE - SPECIES_PAL(GROOKEY, gMonPalette_Grookey), - SPECIES_PAL(THWACKEY, gMonPalette_Thwackey), - SPECIES_PAL(RILLABOOM, gMonPalette_Rillaboom), - SPECIES_PAL(SCORBUNNY, gMonPalette_Scorbunny), - SPECIES_PAL(RABOOT, gMonPalette_Raboot), - SPECIES_PAL(CINDERACE, gMonPalette_Cinderace), - SPECIES_PAL(SOBBLE, gMonPalette_Sobble), - SPECIES_PAL(DRIZZILE, gMonPalette_Drizzile), - SPECIES_PAL(INTELEON, gMonPalette_Inteleon), - SPECIES_PAL(SKWOVET, gMonPalette_Skwovet), - SPECIES_PAL(GREEDENT, gMonPalette_Greedent), - SPECIES_PAL(ROOKIDEE, gMonPalette_Rookidee), - SPECIES_PAL(CORVISQUIRE, gMonPalette_Corvisquire), - SPECIES_PAL(CORVIKNIGHT, gMonPalette_Corviknight), - SPECIES_PAL(BLIPBUG, gMonPalette_Blipbug), - SPECIES_PAL(DOTTLER, gMonPalette_Dottler), - SPECIES_PAL(ORBEETLE, gMonPalette_Orbeetle), - SPECIES_PAL(NICKIT, gMonPalette_Nickit), - SPECIES_PAL(THIEVUL, gMonPalette_Thievul), - SPECIES_PAL(GOSSIFLEUR, gMonPalette_Gossifleur), - SPECIES_PAL(ELDEGOSS, gMonPalette_Eldegoss), - SPECIES_PAL(WOOLOO, gMonPalette_Wooloo), - SPECIES_PAL(DUBWOOL, gMonPalette_Dubwool), - SPECIES_PAL(CHEWTLE, gMonPalette_Chewtle), - SPECIES_PAL(DREDNAW, gMonPalette_Drednaw), - SPECIES_PAL(YAMPER, gMonPalette_Yamper), - SPECIES_PAL(BOLTUND, gMonPalette_Boltund), - SPECIES_PAL(ROLYCOLY, gMonPalette_Rolycoly), - SPECIES_PAL(CARKOL, gMonPalette_Carkol), - SPECIES_PAL(COALOSSAL, gMonPalette_Coalossal), - SPECIES_PAL(APPLIN, gMonPalette_Applin), - SPECIES_PAL(FLAPPLE, gMonPalette_Flapple), - SPECIES_PAL(APPLETUN, gMonPalette_Appletun), - SPECIES_PAL(SILICOBRA, gMonPalette_Silicobra), - SPECIES_PAL(SANDACONDA, gMonPalette_Sandaconda), - SPECIES_PAL(CRAMORANT, gMonPalette_Cramorant), - SPECIES_PAL(ARROKUDA, gMonPalette_Arrokuda), - SPECIES_PAL(BARRASKEWDA, gMonPalette_Barraskewda), - SPECIES_PAL(TOXEL, gMonPalette_Toxel), - SPECIES_PAL(TOXTRICITY, gMonPalette_Toxtricity), - SPECIES_PAL(SIZZLIPEDE, gMonPalette_Sizzlipede), - SPECIES_PAL(CENTISKORCH, gMonPalette_Centiskorch), - SPECIES_PAL(CLOBBOPUS, gMonPalette_Clobbopus), - SPECIES_PAL(GRAPPLOCT, gMonPalette_Grapploct), - SPECIES_PAL(SINISTEA, gMonPalette_Sinistea), - SPECIES_PAL(POLTEAGEIST, gMonPalette_Polteageist), - SPECIES_PAL(HATENNA, gMonPalette_Hatenna), - SPECIES_PAL(HATTREM, gMonPalette_Hattrem), - SPECIES_PAL(HATTERENE, gMonPalette_Hatterene), - SPECIES_PAL(IMPIDIMP, gMonPalette_Impidimp), - SPECIES_PAL(MORGREM, gMonPalette_Morgrem), - SPECIES_PAL(GRIMMSNARL, gMonPalette_Grimmsnarl), - SPECIES_PAL(OBSTAGOON, gMonPalette_Obstagoon), - SPECIES_PAL(PERRSERKER, gMonPalette_Perrserker), - SPECIES_PAL(CURSOLA, gMonPalette_Cursola), - SPECIES_PAL(SIRFETCHD, gMonPalette_Sirfetchd), - SPECIES_PAL(MR_RIME, gMonPalette_MrRime), - SPECIES_PAL(RUNERIGUS, gMonPalette_Runerigus), - SPECIES_PAL(MILCERY, gMonPalette_Milcery), - SPECIES_PAL(ALCREMIE, gMonPalette_Alcremie), - SPECIES_PAL(FALINKS, gMonPalette_Falinks), - SPECIES_PAL(PINCURCHIN, gMonPalette_Pincurchin), - SPECIES_PAL(SNOM, gMonPalette_Snom), - SPECIES_PAL(FROSMOTH, gMonPalette_Frosmoth), - SPECIES_PAL(STONJOURNER, gMonPalette_Stonjourner), - SPECIES_PAL(EISCUE, gMonPalette_Eiscue), - SPECIES_PAL(INDEEDEE, gMonPalette_Indeedee), - SPECIES_PAL(MORPEKO, gMonPalette_Morpeko), - SPECIES_PAL(CUFANT, gMonPalette_Cufant), - SPECIES_PAL(COPPERAJAH, gMonPalette_Copperajah), - SPECIES_PAL(DRACOZOLT, gMonPalette_Dracozolt), - SPECIES_PAL(ARCTOZOLT, gMonPalette_Arctozolt), - SPECIES_PAL(DRACOVISH, gMonPalette_Dracovish), - SPECIES_PAL(ARCTOVISH, gMonPalette_Arctovish), - SPECIES_PAL(DURALUDON, gMonPalette_Duraludon), - SPECIES_PAL(DREEPY, gMonPalette_Dreepy), - SPECIES_PAL(DRAKLOAK, gMonPalette_Drakloak), - SPECIES_PAL(DRAGAPULT, gMonPalette_Dragapult), - SPECIES_PAL(ZACIAN, gMonPalette_Zacian), - SPECIES_PAL(ZAMAZENTA, gMonPalette_Zamazenta), - SPECIES_PAL(ETERNATUS, gMonPalette_Eternatus), - SPECIES_PAL(KUBFU, gMonPalette_Kubfu), - SPECIES_PAL(URSHIFU, gMonPalette_Urshifu), - SPECIES_PAL(ZARUDE, gMonPalette_Zarude), - SPECIES_PAL(REGIELEKI, gMonPalette_Regieleki), - SPECIES_PAL(REGIDRAGO, gMonPalette_Regidrago), - SPECIES_PAL(GLASTRIER, gMonPalette_Glastrier), - SPECIES_PAL(SPECTRIER, gMonPalette_Spectrier), - SPECIES_PAL(CALYREX, gMonPalette_Calyrex), - SPECIES_PAL(WYRDEER, gMonPalette_Wyrdeer), - SPECIES_PAL(KLEAVOR, gMonPalette_Kleavor), - SPECIES_PAL(URSALUNA, gMonPalette_Ursaluna), - SPECIES_PAL(BASCULEGION, gMonPalette_Basculegion), - SPECIES_PAL(SNEASLER, gMonPalette_Sneasler), - SPECIES_PAL(OVERQWIL, gMonPalette_Overqwil), - SPECIES_PAL(ENAMORUS, gMonPalette_Enamorus), -#endif - SPECIES_PAL(VENUSAUR_MEGA, gMonPalette_VenusaurMega), - SPECIES_PAL(CHARIZARD_MEGA_X, gMonPalette_CharizardMegaX), - SPECIES_PAL(CHARIZARD_MEGA_Y, gMonPalette_CharizardMegaY), - SPECIES_PAL(BLASTOISE_MEGA, gMonPalette_BlastoiseMega), - SPECIES_PAL(BEEDRILL_MEGA, gMonPalette_BeedrillMega), - SPECIES_PAL(PIDGEOT_MEGA, gMonPalette_PidgeotMega), - SPECIES_PAL(ALAKAZAM_MEGA, gMonPalette_AlakazamMega), - SPECIES_PAL(SLOWBRO_MEGA, gMonPalette_SlowbroMega), - SPECIES_PAL(GENGAR_MEGA, gMonPalette_GengarMega), - SPECIES_PAL(KANGASKHAN_MEGA, gMonPalette_KangaskhanMega), - SPECIES_PAL(PINSIR_MEGA, gMonPalette_PinsirMega), - SPECIES_PAL(GYARADOS_MEGA, gMonPalette_GyaradosMega), - SPECIES_PAL(AERODACTYL_MEGA, gMonPalette_AerodactylMega), - SPECIES_PAL(MEWTWO_MEGA_X, gMonPalette_MewtwoMegaX), - SPECIES_PAL(MEWTWO_MEGA_Y, gMonPalette_MewtwoMegaY), - SPECIES_PAL(AMPHAROS_MEGA, gMonPalette_AmpharosMega), - SPECIES_PAL(STEELIX_MEGA, gMonPalette_SteelixMega), - SPECIES_PAL(SCIZOR_MEGA, gMonPalette_ScizorMega), - SPECIES_PAL(HERACROSS_MEGA, gMonPalette_HeracrossMega), - SPECIES_PAL(HOUNDOOM_MEGA, gMonPalette_HoundoomMega), - SPECIES_PAL(TYRANITAR_MEGA, gMonPalette_TyranitarMega), - SPECIES_PAL(SCEPTILE_MEGA, gMonPalette_SceptileMega), - SPECIES_PAL(BLAZIKEN_MEGA, gMonPalette_BlazikenMega), - SPECIES_PAL(SWAMPERT_MEGA, gMonPalette_SwampertMega), - SPECIES_PAL(GARDEVOIR_MEGA, gMonPalette_GardevoirMega), - SPECIES_PAL(SABLEYE_MEGA, gMonPalette_SableyeMega), - SPECIES_PAL(MAWILE_MEGA, gMonPalette_MawileMega), - SPECIES_PAL(AGGRON_MEGA, gMonPalette_AggronMega), - SPECIES_PAL(MEDICHAM_MEGA, gMonPalette_MedichamMega), - SPECIES_PAL(MANECTRIC_MEGA, gMonPalette_ManectricMega), - SPECIES_PAL(SHARPEDO_MEGA, gMonPalette_SharpedoMega), - SPECIES_PAL(CAMERUPT_MEGA, gMonPalette_CameruptMega), - SPECIES_PAL(ALTARIA_MEGA, gMonPalette_AltariaMega), - SPECIES_PAL(BANETTE_MEGA, gMonPalette_BanetteMega), - SPECIES_PAL(ABSOL_MEGA, gMonPalette_AbsolMega), - SPECIES_PAL(GLALIE_MEGA, gMonPalette_GlalieMega), - SPECIES_PAL(SALAMENCE_MEGA, gMonPalette_SalamenceMega), - SPECIES_PAL(METAGROSS_MEGA, gMonPalette_MetagrossMega), - SPECIES_PAL(LATIAS_MEGA, gMonPalette_LatiasMega), - SPECIES_PAL(LATIOS_MEGA, gMonPalette_LatiosMega), -#if P_GEN_4_POKEMON == TRUE - SPECIES_PAL(LOPUNNY_MEGA, gMonPalette_LopunnyMega), - SPECIES_PAL(GARCHOMP_MEGA, gMonPalette_GarchompMega), - SPECIES_PAL(LUCARIO_MEGA, gMonPalette_LucarioMega), - SPECIES_PAL(ABOMASNOW_MEGA, gMonPalette_AbomasnowMega), - SPECIES_PAL(GALLADE_MEGA, gMonPalette_GalladeMega), -#endif -#if P_GEN_5_POKEMON == TRUE - SPECIES_PAL(AUDINO_MEGA, gMonPalette_AudinoMega), -#endif -#if P_GEN_6_POKEMON == TRUE - SPECIES_PAL(DIANCIE_MEGA, gMonPalette_DiancieMega), -#endif - - SPECIES_PAL(RAYQUAZA_MEGA, gMonPalette_RayquazaMega), - SPECIES_PAL(KYOGRE_PRIMAL, gMonPalette_KyogrePrimal), - SPECIES_PAL(GROUDON_PRIMAL, gMonPalette_GroudonPrimal), - - SPECIES_PAL(RATTATA_ALOLAN, gMonPalette_RattataAlolan), - SPECIES_PAL(RATICATE_ALOLAN, gMonPalette_RaticateAlolan), - SPECIES_PAL(RAICHU_ALOLAN, gMonPalette_RaichuAlolan), - SPECIES_PAL(SANDSHREW_ALOLAN, gMonPalette_SandshrewAlolan), - SPECIES_PAL(SANDSLASH_ALOLAN, gMonPalette_SandslashAlolan), - SPECIES_PAL(VULPIX_ALOLAN, gMonPalette_VulpixAlolan), - SPECIES_PAL(NINETALES_ALOLAN, gMonPalette_NinetalesAlolan), - SPECIES_PAL(DIGLETT_ALOLAN, gMonPalette_DiglettAlolan), - SPECIES_PAL(DUGTRIO_ALOLAN, gMonPalette_DugtrioAlolan), - SPECIES_PAL(MEOWTH_ALOLAN, gMonPalette_MeowthAlolan), - SPECIES_PAL(PERSIAN_ALOLAN, gMonPalette_PersianAlolan), - SPECIES_PAL(GEODUDE_ALOLAN, gMonPalette_GeodudeAlolan), - SPECIES_PAL(GRAVELER_ALOLAN, gMonPalette_GravelerAlolan), - SPECIES_PAL(GOLEM_ALOLAN, gMonPalette_GolemAlolan), - SPECIES_PAL(GRIMER_ALOLAN, gMonPalette_GrimerAlolan), - SPECIES_PAL(MUK_ALOLAN, gMonPalette_MukAlolan), - SPECIES_PAL(EXEGGUTOR_ALOLAN, gMonPalette_ExeggutorAlolan), - SPECIES_PAL(MAROWAK_ALOLAN, gMonPalette_MarowakAlolan), - - SPECIES_PAL(MEOWTH_GALARIAN, gMonPalette_MeowthGalarian), - SPECIES_PAL(PONYTA_GALARIAN, gMonPalette_PonytaGalarian), - SPECIES_PAL(RAPIDASH_GALARIAN, gMonPalette_RapidashGalarian), - SPECIES_PAL(SLOWPOKE_GALARIAN, gMonPalette_SlowpokeGalarian), - SPECIES_PAL(SLOWBRO_GALARIAN, gMonPalette_SlowbroGalarian), - SPECIES_PAL(FARFETCHD_GALARIAN, gMonPalette_FarfetchdGalarian), - SPECIES_PAL(WEEZING_GALARIAN, gMonPalette_WeezingGalarian), - SPECIES_PAL(MR_MIME_GALARIAN, gMonPalette_MrMimeGalarian), - SPECIES_PAL(ARTICUNO_GALARIAN, gMonPalette_ArticunoGalarian), - SPECIES_PAL(ZAPDOS_GALARIAN, gMonPalette_ZapdosGalarian), - SPECIES_PAL(MOLTRES_GALARIAN, gMonPalette_MoltresGalarian), - SPECIES_PAL(SLOWKING_GALARIAN, gMonPalette_SlowkingGalarian), - SPECIES_PAL(CORSOLA_GALARIAN, gMonPalette_CorsolaGalarian), - SPECIES_PAL(ZIGZAGOON_GALARIAN, gMonPalette_ZigzagoonGalarian), - SPECIES_PAL(LINOONE_GALARIAN, gMonPalette_LinooneGalarian), -#if P_GEN_5_POKEMON == TRUE - SPECIES_PAL(DARUMAKA_GALARIAN, gMonPalette_DarumakaGalarian), - SPECIES_PAL(DARMANITAN_GALARIAN, gMonPalette_DarmanitanGalarian), - SPECIES_PAL(YAMASK_GALARIAN, gMonPalette_YamaskGalarian), - SPECIES_PAL(STUNFISK_GALARIAN, gMonPalette_StunfiskGalarian), -#endif - - SPECIES_PAL(GROWLITHE_HISUIAN, gMonPalette_GrowlitheHisuian), - SPECIES_PAL(ARCANINE_HISUIAN, gMonPalette_ArcanineHisuian), - SPECIES_PAL(VOLTORB_HISUIAN, gMonPalette_VoltorbHisuian), - SPECIES_PAL(ELECTRODE_HISUIAN, gMonPalette_ElectrodeHisuian), - SPECIES_PAL(TYPHLOSION_HISUIAN, gMonPalette_TyphlosionHisuian), - SPECIES_PAL(QWILFISH_HISUIAN, gMonPalette_QwilfishHisuian), - SPECIES_PAL(SNEASEL_HISUIAN, gMonPalette_SneaselHisuian), -#if P_GEN_5_POKEMON == TRUE - SPECIES_PAL(SAMUROTT_HISUIAN, gMonPalette_SamurottHisuian), - SPECIES_PAL(LILLIGANT_HISUIAN, gMonPalette_LilligantHisuian), - SPECIES_PAL(ZORUA_HISUIAN, gMonPalette_ZoruaHisuian), - SPECIES_PAL(ZOROARK_HISUIAN, gMonPalette_ZoroarkHisuian), - SPECIES_PAL(BRAVIARY_HISUIAN, gMonPalette_BraviaryHisuian), -#endif -#if P_GEN_6_POKEMON == TRUE - SPECIES_PAL(SLIGGOO_HISUIAN, gMonPalette_SliggooHisuian), - SPECIES_PAL(GOODRA_HISUIAN, gMonPalette_GoodraHisuian), - SPECIES_PAL(AVALUGG_HISUIAN, gMonPalette_AvaluggHisuian), -#endif -#if P_GEN_7_POKEMON == TRUE - SPECIES_PAL(DECIDUEYE_HISUIAN, gMonPalette_DecidueyeHisuian), -#endif - - SPECIES_PAL(PIKACHU_COSPLAY, gMonPalette_PikachuCosplay), - SPECIES_PAL(PIKACHU_ROCK_STAR, gMonPalette_PikachuRockStar), - SPECIES_PAL(PIKACHU_BELLE, gMonPalette_PikachuBelle), - SPECIES_PAL(PIKACHU_POP_STAR, gMonPalette_PikachuPopStar), - SPECIES_PAL(PIKACHU_PH_D, gMonPalette_PikachuPhD), - SPECIES_PAL(PIKACHU_LIBRE, gMonPalette_PikachuLibre), - - SPECIES_PAL(PIKACHU_ORIGINAL_CAP, gMonPalette_PikachuOriginalCap), - SPECIES_PAL(PIKACHU_HOENN_CAP, gMonPalette_PikachuHoennCap), - SPECIES_PAL(PIKACHU_SINNOH_CAP, gMonPalette_PikachuSinnohCap), - SPECIES_PAL(PIKACHU_UNOVA_CAP, gMonPalette_PikachuUnovaCap), - SPECIES_PAL(PIKACHU_KALOS_CAP, gMonPalette_PikachuKalosCap), - SPECIES_PAL(PIKACHU_ALOLA_CAP, gMonPalette_PikachuAlolaCap), - SPECIES_PAL(PIKACHU_PARTNER_CAP, gMonPalette_PikachuPartnerCap), - SPECIES_PAL(PIKACHU_WORLD_CAP, gMonPalette_PikachuWorldCap), - - SPECIES_PAL(PICHU_SPIKY_EARED, gMonPalette_PichuSpikyEared), - - SPECIES_PAL(UNOWN_B, gMonPalette_Unown), - SPECIES_PAL(UNOWN_C, gMonPalette_Unown), - SPECIES_PAL(UNOWN_D, gMonPalette_Unown), - SPECIES_PAL(UNOWN_E, gMonPalette_Unown), - SPECIES_PAL(UNOWN_F, gMonPalette_Unown), - SPECIES_PAL(UNOWN_G, gMonPalette_Unown), - SPECIES_PAL(UNOWN_H, gMonPalette_Unown), - SPECIES_PAL(UNOWN_I, gMonPalette_Unown), - SPECIES_PAL(UNOWN_J, gMonPalette_Unown), - SPECIES_PAL(UNOWN_K, gMonPalette_Unown), - SPECIES_PAL(UNOWN_L, gMonPalette_Unown), - SPECIES_PAL(UNOWN_M, gMonPalette_Unown), - SPECIES_PAL(UNOWN_N, gMonPalette_Unown), - SPECIES_PAL(UNOWN_O, gMonPalette_Unown), - SPECIES_PAL(UNOWN_P, gMonPalette_Unown), - SPECIES_PAL(UNOWN_Q, gMonPalette_Unown), - SPECIES_PAL(UNOWN_R, gMonPalette_Unown), - SPECIES_PAL(UNOWN_S, gMonPalette_Unown), - SPECIES_PAL(UNOWN_T, gMonPalette_Unown), - SPECIES_PAL(UNOWN_U, gMonPalette_Unown), - SPECIES_PAL(UNOWN_V, gMonPalette_Unown), - SPECIES_PAL(UNOWN_W, gMonPalette_Unown), - SPECIES_PAL(UNOWN_X, gMonPalette_Unown), - SPECIES_PAL(UNOWN_Y, gMonPalette_Unown), - SPECIES_PAL(UNOWN_Z, gMonPalette_Unown), - SPECIES_PAL(UNOWN_EMARK, gMonPalette_Unown), - SPECIES_PAL(UNOWN_QMARK, gMonPalette_Unown), - - SPECIES_PAL(CASTFORM_SUNNY, gMonPalette_CastformSunny), - SPECIES_PAL(CASTFORM_RAINY, gMonPalette_CastformRainy), - SPECIES_PAL(CASTFORM_SNOWY, gMonPalette_CastformSnowy), - - SPECIES_PAL(DEOXYS_ATTACK, gMonPalette_DeoxysAttack), - SPECIES_PAL(DEOXYS_DEFENSE, gMonPalette_DeoxysDefense), - SPECIES_PAL(DEOXYS_SPEED, gMonPalette_DeoxysSpeed), - -#if P_GEN_4_POKEMON == TRUE - SPECIES_PAL(BURMY_SANDY_CLOAK, gMonPalette_BurmySandyCloak), - SPECIES_PAL(BURMY_TRASH_CLOAK, gMonPalette_BurmyTrashCloak), - - SPECIES_PAL(WORMADAM_SANDY_CLOAK, gMonPalette_WormadamSandyCloak), - SPECIES_PAL(WORMADAM_TRASH_CLOAK, gMonPalette_WormadamTrashCloak), - - SPECIES_PAL(CHERRIM_SUNSHINE, gMonPalette_CherrimSunshine), - - SPECIES_PAL(SHELLOS_EAST_SEA, gMonPalette_ShellosEastSea), - - SPECIES_PAL(GASTRODON_EAST_SEA, gMonPalette_GastrodonEastSea), - - SPECIES_PAL(ROTOM_HEAT, gMonPalette_RotomHeat), - SPECIES_PAL(ROTOM_WASH, gMonPalette_RotomWash), - SPECIES_PAL(ROTOM_FROST, gMonPalette_RotomFrost), - SPECIES_PAL(ROTOM_FAN, gMonPalette_RotomFan), - SPECIES_PAL(ROTOM_MOW, gMonPalette_RotomMow), - - SPECIES_PAL(DIALGA_ORIGIN, gMonPalette_DialgaOrigin), - SPECIES_PAL(PALKIA_ORIGIN, gMonPalette_PalkiaOrigin), - SPECIES_PAL(GIRATINA_ORIGIN, gMonPalette_GiratinaOrigin), - - SPECIES_PAL(SHAYMIN_SKY, gMonPalette_ShayminSky), - - SPECIES_PAL(ARCEUS_FIGHTING, gMonPalette_ArceusFighting), - SPECIES_PAL(ARCEUS_FLYING, gMonPalette_ArceusFlying), - SPECIES_PAL(ARCEUS_POISON, gMonPalette_ArceusPoison), - SPECIES_PAL(ARCEUS_GROUND, gMonPalette_ArceusGround), - SPECIES_PAL(ARCEUS_ROCK, gMonPalette_ArceusRock), - SPECIES_PAL(ARCEUS_BUG, gMonPalette_ArceusBug), - SPECIES_PAL(ARCEUS_GHOST, gMonPalette_ArceusGhost), - SPECIES_PAL(ARCEUS_STEEL, gMonPalette_ArceusSteel), - SPECIES_PAL(ARCEUS_FIRE, gMonPalette_ArceusFire), - SPECIES_PAL(ARCEUS_WATER, gMonPalette_ArceusWater), - SPECIES_PAL(ARCEUS_GRASS, gMonPalette_ArceusGrass), - SPECIES_PAL(ARCEUS_ELECTRIC, gMonPalette_ArceusElectric), - SPECIES_PAL(ARCEUS_PSYCHIC, gMonPalette_ArceusPsychic), - SPECIES_PAL(ARCEUS_ICE, gMonPalette_ArceusIce), - SPECIES_PAL(ARCEUS_DRAGON, gMonPalette_ArceusDragon), - SPECIES_PAL(ARCEUS_DARK, gMonPalette_ArceusDark), - SPECIES_PAL(ARCEUS_FAIRY, gMonPalette_ArceusFairy), -#endif - -#if P_GEN_5_POKEMON == TRUE - SPECIES_PAL(BASCULIN_BLUE_STRIPED, gMonPalette_BasculinBlueStriped), - SPECIES_PAL(BASCULIN_WHITE_STRIPED, gMonPalette_BasculinWhiteStriped), - - SPECIES_PAL(DARMANITAN_ZEN_MODE, gMonPalette_DarmanitanZenMode), - SPECIES_PAL(DARMANITAN_ZEN_MODE_GALARIAN, gMonPalette_DarmanitanZenModeGalarian), - - SPECIES_PAL(DEERLING_SUMMER, gMonPalette_DeerlingSummer), - SPECIES_PAL(DEERLING_AUTUMN, gMonPalette_DeerlingAutumn), - SPECIES_PAL(DEERLING_WINTER, gMonPalette_DeerlingWinter), - - SPECIES_PAL(SAWSBUCK_SUMMER, gMonPalette_SawsbuckSummer), - SPECIES_PAL(SAWSBUCK_AUTUMN, gMonPalette_SawsbuckAutumn), - SPECIES_PAL(SAWSBUCK_WINTER, gMonPalette_SawsbuckWinter), - - SPECIES_PAL(TORNADUS_THERIAN, gMonPalette_TornadusTherian), - SPECIES_PAL(THUNDURUS_THERIAN, gMonPalette_ThundurusTherian), - SPECIES_PAL(LANDORUS_THERIAN, gMonPalette_LandorusTherian), - - SPECIES_PAL(KYUREM_WHITE, gMonPalette_KyuremWhite), - SPECIES_PAL(KYUREM_BLACK, gMonPalette_KyuremBlack), - - SPECIES_PAL(KELDEO_RESOLUTE, gMonPalette_KeldeoResolute), - - SPECIES_PAL(MELOETTA_PIROUETTE, gMonPalette_MeloettaPirouette), - - SPECIES_PAL(GENESECT_DOUSE_DRIVE, gMonPalette_GenesectDouseDrive), - SPECIES_PAL(GENESECT_SHOCK_DRIVE, gMonPalette_GenesectShockDrive), - SPECIES_PAL(GENESECT_BURN_DRIVE, gMonPalette_GenesectBurnDrive), - SPECIES_PAL(GENESECT_CHILL_DRIVE, gMonPalette_GenesectChillDrive), -#endif - -#if P_GEN_6_POKEMON == TRUE - SPECIES_PAL(GRENINJA_BATTLE_BOND, gMonPalette_Greninja), - SPECIES_PAL(GRENINJA_ASH, gMonPalette_GreninjaAsh), - - SPECIES_PAL(VIVILLON_POLAR, gMonPalette_VivillonPolar), - SPECIES_PAL(VIVILLON_TUNDRA, gMonPalette_VivillonTundra), - SPECIES_PAL(VIVILLON_CONTINENTAL, gMonPalette_VivillonContinental), - SPECIES_PAL(VIVILLON_GARDEN, gMonPalette_VivillonGarden), - SPECIES_PAL(VIVILLON_ELEGANT, gMonPalette_VivillonElegant), - SPECIES_PAL(VIVILLON_MEADOW, gMonPalette_VivillonMeadow), - SPECIES_PAL(VIVILLON_MODERN, gMonPalette_VivillonModern), - SPECIES_PAL(VIVILLON_MARINE, gMonPalette_VivillonMarine), - SPECIES_PAL(VIVILLON_ARCHIPELAGO, gMonPalette_VivillonArchipelago), - SPECIES_PAL(VIVILLON_HIGH_PLAINS, gMonPalette_VivillonHighPlains), - SPECIES_PAL(VIVILLON_SANDSTORM, gMonPalette_VivillonSandstorm), - SPECIES_PAL(VIVILLON_RIVER, gMonPalette_VivillonRiver), - SPECIES_PAL(VIVILLON_MONSOON, gMonPalette_VivillonMonsoon), - SPECIES_PAL(VIVILLON_SAVANNA, gMonPalette_VivillonSavanna), - SPECIES_PAL(VIVILLON_SUN, gMonPalette_VivillonSun), - SPECIES_PAL(VIVILLON_OCEAN, gMonPalette_VivillonOcean), - SPECIES_PAL(VIVILLON_JUNGLE, gMonPalette_VivillonJungle), - SPECIES_PAL(VIVILLON_FANCY, gMonPalette_VivillonFancy), - SPECIES_PAL(VIVILLON_POKE_BALL, gMonPalette_VivillonPokeBall), - - SPECIES_PAL(FLABEBE_YELLOW_FLOWER, gMonPalette_FlabebeYellowFlower), - SPECIES_PAL(FLABEBE_ORANGE_FLOWER, gMonPalette_FlabebeOrangeFlower), - SPECIES_PAL(FLABEBE_BLUE_FLOWER, gMonPalette_FlabebeBlueFlower), - SPECIES_PAL(FLABEBE_WHITE_FLOWER, gMonPalette_FlabebeWhiteFlower), - - SPECIES_PAL(FLOETTE_YELLOW_FLOWER, gMonPalette_FloetteYellowFlower), - SPECIES_PAL(FLOETTE_ORANGE_FLOWER, gMonPalette_FloetteOrangeFlower), - SPECIES_PAL(FLOETTE_BLUE_FLOWER, gMonPalette_FloetteBlueFlower), - SPECIES_PAL(FLOETTE_WHITE_FLOWER, gMonPalette_FloetteWhiteFlower), - SPECIES_PAL(FLOETTE_ETERNAL_FLOWER, gMonPalette_FloetteEternalFlower), - - SPECIES_PAL(FLORGES_YELLOW_FLOWER, gMonPalette_FlorgesYellowFlower), - SPECIES_PAL(FLORGES_ORANGE_FLOWER, gMonPalette_FlorgesOrangeFlower), - SPECIES_PAL(FLORGES_BLUE_FLOWER, gMonPalette_FlorgesBlueFlower), - SPECIES_PAL(FLORGES_WHITE_FLOWER, gMonPalette_FlorgesWhiteFlower), - - SPECIES_PAL(FURFROU_HEART_TRIM, gMonPalette_FurfrouHeartTrim), - SPECIES_PAL(FURFROU_STAR_TRIM, gMonPalette_FurfrouStarTrim), - SPECIES_PAL(FURFROU_DIAMOND_TRIM, gMonPalette_FurfrouDiamondTrim), - SPECIES_PAL(FURFROU_DEBUTANTE_TRIM, gMonPalette_FurfrouDebutanteTrim), - SPECIES_PAL(FURFROU_MATRON_TRIM, gMonPalette_FurfrouMatronTrim), - SPECIES_PAL(FURFROU_DANDY_TRIM, gMonPalette_FurfrouDandyTrim), - SPECIES_PAL(FURFROU_LA_REINE_TRIM, gMonPalette_FurfrouLaReineTrim), - SPECIES_PAL(FURFROU_KABUKI_TRIM, gMonPalette_FurfrouKabukiTrim), - SPECIES_PAL(FURFROU_PHARAOH_TRIM, gMonPalette_FurfrouPharaohTrim), - - SPECIES_PAL(MEOWSTIC_FEMALE, gMonPalette_MeowsticFemale), - - SPECIES_PAL(AEGISLASH_BLADE, gMonPalette_AegislashBlade), - - SPECIES_PAL(PUMPKABOO_SMALL, gMonPalette_Pumpkaboo), - SPECIES_PAL(PUMPKABOO_LARGE, gMonPalette_Pumpkaboo), - SPECIES_PAL(PUMPKABOO_SUPER, gMonPalette_Pumpkaboo), - - SPECIES_PAL(GOURGEIST_SMALL, gMonPalette_Gourgeist), - SPECIES_PAL(GOURGEIST_LARGE, gMonPalette_Gourgeist), - SPECIES_PAL(GOURGEIST_SUPER, gMonPalette_Gourgeist), - - SPECIES_PAL(XERNEAS_ACTIVE, gMonPalette_XerneasActive), - - SPECIES_PAL(ZYGARDE_10, gMonPalette_Zygarde10), - SPECIES_PAL(ZYGARDE_10_POWER_CONSTRUCT, gMonPalette_Zygarde10), - SPECIES_PAL(ZYGARDE_50_POWER_CONSTRUCT, gMonPalette_Zygarde), - SPECIES_PAL(ZYGARDE_COMPLETE, gMonPalette_ZygardeComplete), - - SPECIES_PAL(HOOPA_UNBOUND, gMonPalette_HoopaUnbound), -#endif - -#if P_GEN_7_POKEMON == TRUE - SPECIES_PAL(ORICORIO_POM_POM, gMonPalette_OricorioPomPom), - SPECIES_PAL(ORICORIO_PAU, gMonPalette_OricorioPau), - SPECIES_PAL(ORICORIO_SENSU, gMonPalette_OricorioSensu), - - SPECIES_PAL(ROCKRUFF_OWN_TEMPO, gMonPalette_Rockruff), - - SPECIES_PAL(LYCANROC_MIDNIGHT, gMonPalette_LycanrocMidnight), - SPECIES_PAL(LYCANROC_DUSK, gMonPalette_LycanrocDusk), - - SPECIES_PAL(WISHIWASHI_SCHOOL, gMonPalette_WishiwashiSchool), - - SPECIES_PAL(SILVALLY_FIGHTING, gMonPalette_SilvallyFighting), - SPECIES_PAL(SILVALLY_FLYING, gMonPalette_SilvallyFlying), - SPECIES_PAL(SILVALLY_POISON, gMonPalette_SilvallyPoison), - SPECIES_PAL(SILVALLY_GROUND, gMonPalette_SilvallyGround), - SPECIES_PAL(SILVALLY_ROCK, gMonPalette_SilvallyRock), - SPECIES_PAL(SILVALLY_BUG, gMonPalette_SilvallyBug), - SPECIES_PAL(SILVALLY_GHOST, gMonPalette_SilvallyGhost), - SPECIES_PAL(SILVALLY_STEEL, gMonPalette_SilvallySteel), - SPECIES_PAL(SILVALLY_FIRE, gMonPalette_SilvallyFire), - SPECIES_PAL(SILVALLY_WATER, gMonPalette_SilvallyWater), - SPECIES_PAL(SILVALLY_GRASS, gMonPalette_SilvallyGrass), - SPECIES_PAL(SILVALLY_ELECTRIC, gMonPalette_SilvallyElectric), - SPECIES_PAL(SILVALLY_PSYCHIC, gMonPalette_SilvallyPsychic), - SPECIES_PAL(SILVALLY_ICE, gMonPalette_SilvallyIce), - SPECIES_PAL(SILVALLY_DRAGON, gMonPalette_SilvallyDragon), - SPECIES_PAL(SILVALLY_DARK, gMonPalette_SilvallyDark), - SPECIES_PAL(SILVALLY_FAIRY, gMonPalette_SilvallyFairy), - - SPECIES_PAL(MINIOR_METEOR_ORANGE, gMonPalette_Minior), - SPECIES_PAL(MINIOR_METEOR_YELLOW, gMonPalette_Minior), - SPECIES_PAL(MINIOR_METEOR_GREEN, gMonPalette_Minior), - SPECIES_PAL(MINIOR_METEOR_BLUE, gMonPalette_Minior), - SPECIES_PAL(MINIOR_METEOR_INDIGO, gMonPalette_Minior), - SPECIES_PAL(MINIOR_METEOR_VIOLET, gMonPalette_Minior), - SPECIES_PAL(MINIOR_CORE_RED, gMonPalette_MiniorCoreRed), - SPECIES_PAL(MINIOR_CORE_ORANGE, gMonPalette_MiniorCoreOrange), - SPECIES_PAL(MINIOR_CORE_YELLOW, gMonPalette_MiniorCoreYellow), - SPECIES_PAL(MINIOR_CORE_GREEN, gMonPalette_MiniorCoreGreen), - SPECIES_PAL(MINIOR_CORE_BLUE, gMonPalette_MiniorCoreBlue), - SPECIES_PAL(MINIOR_CORE_INDIGO, gMonPalette_MiniorCoreIndigo), - SPECIES_PAL(MINIOR_CORE_VIOLET, gMonPalette_MiniorCoreViolet), - - SPECIES_PAL(MIMIKYU_BUSTED, gMonPalette_MimikyuBusted), - - SPECIES_PAL(NECROZMA_DUSK_MANE, gMonPalette_NecrozmaDuskMane), - SPECIES_PAL(NECROZMA_DAWN_WINGS, gMonPalette_NecrozmaDawnWings), - SPECIES_PAL(NECROZMA_ULTRA, gMonPalette_NecrozmaUltra), - - SPECIES_PAL(MAGEARNA_ORIGINAL_COLOR, gMonPalette_MagearnaOriginalColor), -#endif - -#if P_GEN_8_POKEMON == TRUE - SPECIES_PAL(CRAMORANT_GULPING, gMonPalette_CramorantGulping), - SPECIES_PAL(CRAMORANT_GORGING, gMonPalette_CramorantGorging), - - SPECIES_PAL(TOXTRICITY_LOW_KEY, gMonPalette_ToxtricityLowKey), - - SPECIES_PAL(SINISTEA_ANTIQUE, gMonPalette_Sinistea), - - SPECIES_PAL(POLTEAGEIST_ANTIQUE, gMonPalette_Polteageist), - - SPECIES_PAL(ALCREMIE_RUBY_CREAM, gMonPalette_AlcremieRubyCream), - SPECIES_PAL(ALCREMIE_MATCHA_CREAM, gMonPalette_AlcremieMatchaCream), - SPECIES_PAL(ALCREMIE_MINT_CREAM, gMonPalette_AlcremieMintCream), - SPECIES_PAL(ALCREMIE_LEMON_CREAM, gMonPalette_AlcremieLemonCream), - SPECIES_PAL(ALCREMIE_SALTED_CREAM, gMonPalette_AlcremieSaltedCream), - SPECIES_PAL(ALCREMIE_RUBY_SWIRL, gMonPalette_AlcremieRubySwirl), - SPECIES_PAL(ALCREMIE_CARAMEL_SWIRL, gMonPalette_AlcremieCaramelSwirl), - SPECIES_PAL(ALCREMIE_RAINBOW_SWIRL, gMonPalette_AlcremieRainbowSwirl), - - SPECIES_PAL(EISCUE_NOICE_FACE, gMonPalette_EiscueNoiceFace), - - SPECIES_PAL(INDEEDEE_FEMALE, gMonPalette_IndeedeeFemale), - - SPECIES_PAL(MORPEKO_HANGRY, gMonPalette_MorpekoHangry), - - SPECIES_PAL(ZACIAN_CROWNED_SWORD, gMonPalette_ZacianCrownedSword), - - SPECIES_PAL(ZAMAZENTA_CROWNED_SHIELD, gMonPalette_ZamazentaCrownedShield), - - SPECIES_PAL(ETERNATUS_ETERNAMAX, gMonPalette_EternatusEternamax), - - SPECIES_PAL(URSHIFU_RAPID_STRIKE_STYLE, gMonPalette_UrshifuRapidStrikeStyle), - - SPECIES_PAL(ZARUDE_DADA, gMonPalette_ZarudeDada), - - SPECIES_PAL(CALYREX_ICE_RIDER, gMonPalette_CalyrexIceRider), - SPECIES_PAL(CALYREX_SHADOW_RIDER, gMonPalette_CalyrexShadowRider), - SPECIES_PAL(ENAMORUS_THERIAN, gMonPalette_EnamorusTherian), - SPECIES_PAL(BASCULEGION_FEMALE, gMonPalette_BasculegionFemale), -#endif - SPECIES_PAL(EGG, gMonPalette_Egg), -}; - -const struct CompressedSpritePalette gMonPaletteTableFemale[NUM_SPECIES + 1] = -{ -#if P_GEN_4_POKEMON == TRUE - SPECIES_PAL(COMBEE, gMonPalette_CombeeF), - SPECIES_PAL(HIPPOPOTAS, gMonPalette_HippopotasF), - SPECIES_PAL(HIPPOWDON, gMonPalette_HippowdonF), -#endif -#if P_GEN_5_POKEMON == TRUE - SPECIES_PAL(UNFEZANT, gMonPalette_UnfezantF), - SPECIES_PAL(FRILLISH, gMonPalette_FrillishF), - SPECIES_PAL(JELLICENT, gMonPalette_JellicentF), -#endif -}; diff --git a/src/data/pokemon_graphics/shiny_palette_table.h b/src/data/pokemon_graphics/shiny_palette_table.h deleted file mode 100644 index b674617b67..0000000000 --- a/src/data/pokemon_graphics/shiny_palette_table.h +++ /dev/null @@ -1,1350 +0,0 @@ -const struct CompressedSpritePalette gMonShinyPaletteTable[NUM_SPECIES + 1] = -{ - SPECIES_SHINY_PAL(NONE, gMonShinyPalette_CircledQuestionMark), - SPECIES_SHINY_PAL(BULBASAUR, gMonShinyPalette_Bulbasaur), - SPECIES_SHINY_PAL(IVYSAUR, gMonShinyPalette_Ivysaur), - SPECIES_SHINY_PAL(VENUSAUR, gMonShinyPalette_Venusaur), - SPECIES_SHINY_PAL(CHARMANDER, gMonShinyPalette_Charmander), - SPECIES_SHINY_PAL(CHARMELEON, gMonShinyPalette_Charmeleon), - SPECIES_SHINY_PAL(CHARIZARD, gMonShinyPalette_Charizard), - SPECIES_SHINY_PAL(SQUIRTLE, gMonShinyPalette_Squirtle), - SPECIES_SHINY_PAL(WARTORTLE, gMonShinyPalette_Wartortle), - SPECIES_SHINY_PAL(BLASTOISE, gMonShinyPalette_Blastoise), - SPECIES_SHINY_PAL(CATERPIE, gMonShinyPalette_Caterpie), - SPECIES_SHINY_PAL(METAPOD, gMonShinyPalette_Metapod), - SPECIES_SHINY_PAL(BUTTERFREE, gMonShinyPalette_Butterfree), - SPECIES_SHINY_PAL(WEEDLE, gMonShinyPalette_Weedle), - SPECIES_SHINY_PAL(KAKUNA, gMonShinyPalette_Kakuna), - SPECIES_SHINY_PAL(BEEDRILL, gMonShinyPalette_Beedrill), - SPECIES_SHINY_PAL(PIDGEY, gMonShinyPalette_Pidgey), - SPECIES_SHINY_PAL(PIDGEOTTO, gMonShinyPalette_Pidgeotto), - SPECIES_SHINY_PAL(PIDGEOT, gMonShinyPalette_Pidgeot), - SPECIES_SHINY_PAL(RATTATA, gMonShinyPalette_Rattata), - SPECIES_SHINY_PAL(RATICATE, gMonShinyPalette_Raticate), - SPECIES_SHINY_PAL(SPEAROW, gMonShinyPalette_Spearow), - SPECIES_SHINY_PAL(FEAROW, gMonShinyPalette_Fearow), - SPECIES_SHINY_PAL(EKANS, gMonShinyPalette_Ekans), - SPECIES_SHINY_PAL(ARBOK, gMonShinyPalette_Arbok), - SPECIES_SHINY_PAL(PIKACHU, gMonShinyPalette_Pikachu), - SPECIES_SHINY_PAL(RAICHU, gMonShinyPalette_Raichu), - SPECIES_SHINY_PAL(SANDSHREW, gMonShinyPalette_Sandshrew), - SPECIES_SHINY_PAL(SANDSLASH, gMonShinyPalette_Sandslash), - SPECIES_SHINY_PAL(NIDORAN_F, gMonShinyPalette_NidoranF), - SPECIES_SHINY_PAL(NIDORINA, gMonShinyPalette_Nidorina), - SPECIES_SHINY_PAL(NIDOQUEEN, gMonShinyPalette_Nidoqueen), - SPECIES_SHINY_PAL(NIDORAN_M, gMonShinyPalette_NidoranM), - SPECIES_SHINY_PAL(NIDORINO, gMonShinyPalette_Nidorino), - SPECIES_SHINY_PAL(NIDOKING, gMonShinyPalette_Nidoking), - SPECIES_SHINY_PAL(CLEFAIRY, gMonShinyPalette_Clefairy), - SPECIES_SHINY_PAL(CLEFABLE, gMonShinyPalette_Clefable), - SPECIES_SHINY_PAL(VULPIX, gMonShinyPalette_Vulpix), - SPECIES_SHINY_PAL(NINETALES, gMonShinyPalette_Ninetales), - SPECIES_SHINY_PAL(JIGGLYPUFF, gMonShinyPalette_Jigglypuff), - SPECIES_SHINY_PAL(WIGGLYTUFF, gMonShinyPalette_Wigglytuff), - SPECIES_SHINY_PAL(ZUBAT, gMonShinyPalette_Zubat), - SPECIES_SHINY_PAL(GOLBAT, gMonShinyPalette_Golbat), - SPECIES_SHINY_PAL(ODDISH, gMonShinyPalette_Oddish), - SPECIES_SHINY_PAL(GLOOM, gMonShinyPalette_Gloom), - SPECIES_SHINY_PAL(VILEPLUME, gMonShinyPalette_Vileplume), - SPECIES_SHINY_PAL(PARAS, gMonShinyPalette_Paras), - SPECIES_SHINY_PAL(PARASECT, gMonShinyPalette_Parasect), - SPECIES_SHINY_PAL(VENONAT, gMonShinyPalette_Venonat), - SPECIES_SHINY_PAL(VENOMOTH, gMonShinyPalette_Venomoth), - SPECIES_SHINY_PAL(DIGLETT, gMonShinyPalette_Diglett), - SPECIES_SHINY_PAL(DUGTRIO, gMonShinyPalette_Dugtrio), - SPECIES_SHINY_PAL(MEOWTH, gMonShinyPalette_Meowth), - SPECIES_SHINY_PAL(PERSIAN, gMonShinyPalette_Persian), - SPECIES_SHINY_PAL(PSYDUCK, gMonShinyPalette_Psyduck), - SPECIES_SHINY_PAL(GOLDUCK, gMonShinyPalette_Golduck), - SPECIES_SHINY_PAL(MANKEY, gMonShinyPalette_Mankey), - SPECIES_SHINY_PAL(PRIMEAPE, gMonShinyPalette_Primeape), - SPECIES_SHINY_PAL(GROWLITHE, gMonShinyPalette_Growlithe), - SPECIES_SHINY_PAL(ARCANINE, gMonShinyPalette_Arcanine), - SPECIES_SHINY_PAL(POLIWAG, gMonShinyPalette_Poliwag), - SPECIES_SHINY_PAL(POLIWHIRL, gMonShinyPalette_Poliwhirl), - SPECIES_SHINY_PAL(POLIWRATH, gMonShinyPalette_Poliwrath), - SPECIES_SHINY_PAL(ABRA, gMonShinyPalette_Abra), - SPECIES_SHINY_PAL(KADABRA, gMonShinyPalette_Kadabra), - SPECIES_SHINY_PAL(ALAKAZAM, gMonShinyPalette_Alakazam), - SPECIES_SHINY_PAL(MACHOP, gMonShinyPalette_Machop), - SPECIES_SHINY_PAL(MACHOKE, gMonShinyPalette_Machoke), - SPECIES_SHINY_PAL(MACHAMP, gMonShinyPalette_Machamp), - SPECIES_SHINY_PAL(BELLSPROUT, gMonShinyPalette_Bellsprout), - SPECIES_SHINY_PAL(WEEPINBELL, gMonShinyPalette_Weepinbell), - SPECIES_SHINY_PAL(VICTREEBEL, gMonShinyPalette_Victreebel), - SPECIES_SHINY_PAL(TENTACOOL, gMonShinyPalette_Tentacool), - SPECIES_SHINY_PAL(TENTACRUEL, gMonShinyPalette_Tentacruel), - SPECIES_SHINY_PAL(GEODUDE, gMonShinyPalette_Geodude), - SPECIES_SHINY_PAL(GRAVELER, gMonShinyPalette_Graveler), - SPECIES_SHINY_PAL(GOLEM, gMonShinyPalette_Golem), - SPECIES_SHINY_PAL(PONYTA, gMonShinyPalette_Ponyta), - SPECIES_SHINY_PAL(RAPIDASH, gMonShinyPalette_Rapidash), - SPECIES_SHINY_PAL(SLOWPOKE, gMonShinyPalette_Slowpoke), - SPECIES_SHINY_PAL(SLOWBRO, gMonShinyPalette_Slowbro), - SPECIES_SHINY_PAL(MAGNEMITE, gMonShinyPalette_Magnemite), - SPECIES_SHINY_PAL(MAGNETON, gMonShinyPalette_Magneton), - SPECIES_SHINY_PAL(FARFETCHD, gMonShinyPalette_Farfetchd), - SPECIES_SHINY_PAL(DODUO, gMonShinyPalette_Doduo), - SPECIES_SHINY_PAL(DODRIO, gMonShinyPalette_Dodrio), - SPECIES_SHINY_PAL(SEEL, gMonShinyPalette_Seel), - SPECIES_SHINY_PAL(DEWGONG, gMonShinyPalette_Dewgong), - SPECIES_SHINY_PAL(GRIMER, gMonShinyPalette_Grimer), - SPECIES_SHINY_PAL(MUK, gMonShinyPalette_Muk), - SPECIES_SHINY_PAL(SHELLDER, gMonShinyPalette_Shellder), - SPECIES_SHINY_PAL(CLOYSTER, gMonShinyPalette_Cloyster), - SPECIES_SHINY_PAL(GASTLY, gMonShinyPalette_Gastly), - SPECIES_SHINY_PAL(HAUNTER, gMonShinyPalette_Haunter), - SPECIES_SHINY_PAL(GENGAR, gMonShinyPalette_Gengar), - SPECIES_SHINY_PAL(ONIX, gMonShinyPalette_Onix), - SPECIES_SHINY_PAL(DROWZEE, gMonShinyPalette_Drowzee), - SPECIES_SHINY_PAL(HYPNO, gMonShinyPalette_Hypno), - SPECIES_SHINY_PAL(KRABBY, gMonShinyPalette_Krabby), - SPECIES_SHINY_PAL(KINGLER, gMonShinyPalette_Kingler), - SPECIES_SHINY_PAL(VOLTORB, gMonShinyPalette_Voltorb), - SPECIES_SHINY_PAL(ELECTRODE, gMonShinyPalette_Electrode), - SPECIES_SHINY_PAL(EXEGGCUTE, gMonShinyPalette_Exeggcute), - SPECIES_SHINY_PAL(EXEGGUTOR, gMonShinyPalette_Exeggutor), - SPECIES_SHINY_PAL(CUBONE, gMonShinyPalette_Cubone), - SPECIES_SHINY_PAL(MAROWAK, gMonShinyPalette_Marowak), - SPECIES_SHINY_PAL(HITMONLEE, gMonShinyPalette_Hitmonlee), - SPECIES_SHINY_PAL(HITMONCHAN, gMonShinyPalette_Hitmonchan), - SPECIES_SHINY_PAL(LICKITUNG, gMonShinyPalette_Lickitung), - SPECIES_SHINY_PAL(KOFFING, gMonShinyPalette_Koffing), - SPECIES_SHINY_PAL(WEEZING, gMonShinyPalette_Weezing), - SPECIES_SHINY_PAL(RHYHORN, gMonShinyPalette_Rhyhorn), - SPECIES_SHINY_PAL(RHYDON, gMonShinyPalette_Rhydon), - SPECIES_SHINY_PAL(CHANSEY, gMonShinyPalette_Chansey), - SPECIES_SHINY_PAL(TANGELA, gMonShinyPalette_Tangela), - SPECIES_SHINY_PAL(KANGASKHAN, gMonShinyPalette_Kangaskhan), - SPECIES_SHINY_PAL(HORSEA, gMonShinyPalette_Horsea), - SPECIES_SHINY_PAL(SEADRA, gMonShinyPalette_Seadra), - SPECIES_SHINY_PAL(GOLDEEN, gMonShinyPalette_Goldeen), - SPECIES_SHINY_PAL(SEAKING, gMonShinyPalette_Seaking), - SPECIES_SHINY_PAL(STARYU, gMonShinyPalette_Staryu), - SPECIES_SHINY_PAL(STARMIE, gMonShinyPalette_Starmie), - SPECIES_SHINY_PAL(MR_MIME, gMonShinyPalette_MrMime), - SPECIES_SHINY_PAL(SCYTHER, gMonShinyPalette_Scyther), - SPECIES_SHINY_PAL(JYNX, gMonShinyPalette_Jynx), - SPECIES_SHINY_PAL(ELECTABUZZ, gMonShinyPalette_Electabuzz), - SPECIES_SHINY_PAL(MAGMAR, gMonShinyPalette_Magmar), - SPECIES_SHINY_PAL(PINSIR, gMonShinyPalette_Pinsir), - SPECIES_SHINY_PAL(TAUROS, gMonShinyPalette_Tauros), - SPECIES_SHINY_PAL(MAGIKARP, gMonShinyPalette_Magikarp), - SPECIES_SHINY_PAL(GYARADOS, gMonShinyPalette_Gyarados), - SPECIES_SHINY_PAL(LAPRAS, gMonShinyPalette_Lapras), - SPECIES_SHINY_PAL(DITTO, gMonShinyPalette_Ditto), - SPECIES_SHINY_PAL(EEVEE, gMonShinyPalette_Eevee), - SPECIES_SHINY_PAL(VAPOREON, gMonShinyPalette_Vaporeon), - SPECIES_SHINY_PAL(JOLTEON, gMonShinyPalette_Jolteon), - SPECIES_SHINY_PAL(FLAREON, gMonShinyPalette_Flareon), - SPECIES_SHINY_PAL(PORYGON, gMonShinyPalette_Porygon), - SPECIES_SHINY_PAL(OMANYTE, gMonShinyPalette_Omanyte), - SPECIES_SHINY_PAL(OMASTAR, gMonShinyPalette_Omastar), - SPECIES_SHINY_PAL(KABUTO, gMonShinyPalette_Kabuto), - SPECIES_SHINY_PAL(KABUTOPS, gMonShinyPalette_Kabutops), - SPECIES_SHINY_PAL(AERODACTYL, gMonShinyPalette_Aerodactyl), - SPECIES_SHINY_PAL(SNORLAX, gMonShinyPalette_Snorlax), - SPECIES_SHINY_PAL(ARTICUNO, gMonShinyPalette_Articuno), - SPECIES_SHINY_PAL(ZAPDOS, gMonShinyPalette_Zapdos), - SPECIES_SHINY_PAL(MOLTRES, gMonShinyPalette_Moltres), - SPECIES_SHINY_PAL(DRATINI, gMonShinyPalette_Dratini), - SPECIES_SHINY_PAL(DRAGONAIR, gMonShinyPalette_Dragonair), - SPECIES_SHINY_PAL(DRAGONITE, gMonShinyPalette_Dragonite), - SPECIES_SHINY_PAL(MEWTWO, gMonShinyPalette_Mewtwo), - SPECIES_SHINY_PAL(MEW, gMonShinyPalette_Mew), - SPECIES_SHINY_PAL(CHIKORITA, gMonShinyPalette_Chikorita), - SPECIES_SHINY_PAL(BAYLEEF, gMonShinyPalette_Bayleef), - SPECIES_SHINY_PAL(MEGANIUM, gMonShinyPalette_Meganium), - SPECIES_SHINY_PAL(CYNDAQUIL, gMonShinyPalette_Cyndaquil), - SPECIES_SHINY_PAL(QUILAVA, gMonShinyPalette_Quilava), - SPECIES_SHINY_PAL(TYPHLOSION, gMonShinyPalette_Typhlosion), - SPECIES_SHINY_PAL(TOTODILE, gMonShinyPalette_Totodile), - SPECIES_SHINY_PAL(CROCONAW, gMonShinyPalette_Croconaw), - SPECIES_SHINY_PAL(FERALIGATR, gMonShinyPalette_Feraligatr), - SPECIES_SHINY_PAL(SENTRET, gMonShinyPalette_Sentret), - SPECIES_SHINY_PAL(FURRET, gMonShinyPalette_Furret), - SPECIES_SHINY_PAL(HOOTHOOT, gMonShinyPalette_Hoothoot), - SPECIES_SHINY_PAL(NOCTOWL, gMonShinyPalette_Noctowl), - SPECIES_SHINY_PAL(LEDYBA, gMonShinyPalette_Ledyba), - SPECIES_SHINY_PAL(LEDIAN, gMonShinyPalette_Ledian), - SPECIES_SHINY_PAL(SPINARAK, gMonShinyPalette_Spinarak), - SPECIES_SHINY_PAL(ARIADOS, gMonShinyPalette_Ariados), - SPECIES_SHINY_PAL(CROBAT, gMonShinyPalette_Crobat), - SPECIES_SHINY_PAL(CHINCHOU, gMonShinyPalette_Chinchou), - SPECIES_SHINY_PAL(LANTURN, gMonShinyPalette_Lanturn), - SPECIES_SHINY_PAL(PICHU, gMonShinyPalette_Pichu), - SPECIES_SHINY_PAL(CLEFFA, gMonShinyPalette_Cleffa), - SPECIES_SHINY_PAL(IGGLYBUFF, gMonShinyPalette_Igglybuff), - SPECIES_SHINY_PAL(TOGEPI, gMonShinyPalette_Togepi), - SPECIES_SHINY_PAL(TOGETIC, gMonShinyPalette_Togetic), - SPECIES_SHINY_PAL(NATU, gMonShinyPalette_Natu), - SPECIES_SHINY_PAL(XATU, gMonShinyPalette_Xatu), - SPECIES_SHINY_PAL(MAREEP, gMonShinyPalette_Mareep), - SPECIES_SHINY_PAL(FLAAFFY, gMonShinyPalette_Flaaffy), - SPECIES_SHINY_PAL(AMPHAROS, gMonShinyPalette_Ampharos), - SPECIES_SHINY_PAL(BELLOSSOM, gMonShinyPalette_Bellossom), - SPECIES_SHINY_PAL(MARILL, gMonShinyPalette_Marill), - SPECIES_SHINY_PAL(AZUMARILL, gMonShinyPalette_Azumarill), - SPECIES_SHINY_PAL(SUDOWOODO, gMonShinyPalette_Sudowoodo), - SPECIES_SHINY_PAL(POLITOED, gMonShinyPalette_Politoed), - SPECIES_SHINY_PAL(HOPPIP, gMonShinyPalette_Hoppip), - SPECIES_SHINY_PAL(SKIPLOOM, gMonShinyPalette_Skiploom), - SPECIES_SHINY_PAL(JUMPLUFF, gMonShinyPalette_Jumpluff), - SPECIES_SHINY_PAL(AIPOM, gMonShinyPalette_Aipom), - SPECIES_SHINY_PAL(SUNKERN, gMonShinyPalette_Sunkern), - SPECIES_SHINY_PAL(SUNFLORA, gMonShinyPalette_Sunflora), - SPECIES_SHINY_PAL(YANMA, gMonShinyPalette_Yanma), - SPECIES_SHINY_PAL(WOOPER, gMonShinyPalette_Wooper), - SPECIES_SHINY_PAL(QUAGSIRE, gMonShinyPalette_Quagsire), - SPECIES_SHINY_PAL(ESPEON, gMonShinyPalette_Espeon), - SPECIES_SHINY_PAL(UMBREON, gMonShinyPalette_Umbreon), - SPECIES_SHINY_PAL(MURKROW, gMonShinyPalette_Murkrow), - SPECIES_SHINY_PAL(SLOWKING, gMonShinyPalette_Slowking), - SPECIES_SHINY_PAL(MISDREAVUS, gMonShinyPalette_Misdreavus), - SPECIES_SHINY_PAL(UNOWN, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(WOBBUFFET, gMonShinyPalette_Wobbuffet), - SPECIES_SHINY_PAL(GIRAFARIG, gMonShinyPalette_Girafarig), - SPECIES_SHINY_PAL(PINECO, gMonShinyPalette_Pineco), - SPECIES_SHINY_PAL(FORRETRESS, gMonShinyPalette_Forretress), - SPECIES_SHINY_PAL(DUNSPARCE, gMonShinyPalette_Dunsparce), - SPECIES_SHINY_PAL(GLIGAR, gMonShinyPalette_Gligar), - SPECIES_SHINY_PAL(STEELIX, gMonShinyPalette_Steelix), - SPECIES_SHINY_PAL(SNUBBULL, gMonShinyPalette_Snubbull), - SPECIES_SHINY_PAL(GRANBULL, gMonShinyPalette_Granbull), - SPECIES_SHINY_PAL(QWILFISH, gMonShinyPalette_Qwilfish), - SPECIES_SHINY_PAL(SCIZOR, gMonShinyPalette_Scizor), - SPECIES_SHINY_PAL(SHUCKLE, gMonShinyPalette_Shuckle), - SPECIES_SHINY_PAL(HERACROSS, gMonShinyPalette_Heracross), - SPECIES_SHINY_PAL(SNEASEL, gMonShinyPalette_Sneasel), - SPECIES_SHINY_PAL(TEDDIURSA, gMonShinyPalette_Teddiursa), - SPECIES_SHINY_PAL(URSARING, gMonShinyPalette_Ursaring), - SPECIES_SHINY_PAL(SLUGMA, gMonShinyPalette_Slugma), - SPECIES_SHINY_PAL(MAGCARGO, gMonShinyPalette_Magcargo), - SPECIES_SHINY_PAL(SWINUB, gMonShinyPalette_Swinub), - SPECIES_SHINY_PAL(PILOSWINE, gMonShinyPalette_Piloswine), - SPECIES_SHINY_PAL(CORSOLA, gMonShinyPalette_Corsola), - SPECIES_SHINY_PAL(REMORAID, gMonShinyPalette_Remoraid), - SPECIES_SHINY_PAL(OCTILLERY, gMonShinyPalette_Octillery), - SPECIES_SHINY_PAL(DELIBIRD, gMonShinyPalette_Delibird), - SPECIES_SHINY_PAL(MANTINE, gMonShinyPalette_Mantine), - SPECIES_SHINY_PAL(SKARMORY, gMonShinyPalette_Skarmory), - SPECIES_SHINY_PAL(HOUNDOUR, gMonShinyPalette_Houndour), - SPECIES_SHINY_PAL(HOUNDOOM, gMonShinyPalette_Houndoom), - SPECIES_SHINY_PAL(KINGDRA, gMonShinyPalette_Kingdra), - SPECIES_SHINY_PAL(PHANPY, gMonShinyPalette_Phanpy), - SPECIES_SHINY_PAL(DONPHAN, gMonShinyPalette_Donphan), - SPECIES_SHINY_PAL(PORYGON2, gMonShinyPalette_Porygon2), - SPECIES_SHINY_PAL(STANTLER, gMonShinyPalette_Stantler), - SPECIES_SHINY_PAL(SMEARGLE, gMonShinyPalette_Smeargle), - SPECIES_SHINY_PAL(TYROGUE, gMonShinyPalette_Tyrogue), - SPECIES_SHINY_PAL(HITMONTOP, gMonShinyPalette_Hitmontop), - SPECIES_SHINY_PAL(SMOOCHUM, gMonShinyPalette_Smoochum), - SPECIES_SHINY_PAL(ELEKID, gMonShinyPalette_Elekid), - SPECIES_SHINY_PAL(MAGBY, gMonShinyPalette_Magby), - SPECIES_SHINY_PAL(MILTANK, gMonShinyPalette_Miltank), - SPECIES_SHINY_PAL(BLISSEY, gMonShinyPalette_Blissey), - SPECIES_SHINY_PAL(RAIKOU, gMonShinyPalette_Raikou), - SPECIES_SHINY_PAL(ENTEI, gMonShinyPalette_Entei), - SPECIES_SHINY_PAL(SUICUNE, gMonShinyPalette_Suicune), - SPECIES_SHINY_PAL(LARVITAR, gMonShinyPalette_Larvitar), - SPECIES_SHINY_PAL(PUPITAR, gMonShinyPalette_Pupitar), - SPECIES_SHINY_PAL(TYRANITAR, gMonShinyPalette_Tyranitar), - SPECIES_SHINY_PAL(LUGIA, gMonShinyPalette_Lugia), - SPECIES_SHINY_PAL(HO_OH, gMonShinyPalette_HoOh), - SPECIES_SHINY_PAL(CELEBI, gMonShinyPalette_Celebi), - SPECIES_SHINY_PAL(TREECKO, gMonShinyPalette_Treecko), - SPECIES_SHINY_PAL(GROVYLE, gMonShinyPalette_Grovyle), - SPECIES_SHINY_PAL(SCEPTILE, gMonShinyPalette_Sceptile), - SPECIES_SHINY_PAL(TORCHIC, gMonShinyPalette_Torchic), - SPECIES_SHINY_PAL(COMBUSKEN, gMonShinyPalette_Combusken), - SPECIES_SHINY_PAL(BLAZIKEN, gMonShinyPalette_Blaziken), - SPECIES_SHINY_PAL(MUDKIP, gMonShinyPalette_Mudkip), - SPECIES_SHINY_PAL(MARSHTOMP, gMonShinyPalette_Marshtomp), - SPECIES_SHINY_PAL(SWAMPERT, gMonShinyPalette_Swampert), - SPECIES_SHINY_PAL(POOCHYENA, gMonShinyPalette_Poochyena), - SPECIES_SHINY_PAL(MIGHTYENA, gMonShinyPalette_Mightyena), - SPECIES_SHINY_PAL(ZIGZAGOON, gMonShinyPalette_Zigzagoon), - SPECIES_SHINY_PAL(LINOONE, gMonShinyPalette_Linoone), - SPECIES_SHINY_PAL(WURMPLE, gMonShinyPalette_Wurmple), - SPECIES_SHINY_PAL(SILCOON, gMonShinyPalette_Silcoon), - SPECIES_SHINY_PAL(BEAUTIFLY, gMonShinyPalette_Beautifly), - SPECIES_SHINY_PAL(CASCOON, gMonShinyPalette_Cascoon), - SPECIES_SHINY_PAL(DUSTOX, gMonShinyPalette_Dustox), - SPECIES_SHINY_PAL(LOTAD, gMonShinyPalette_Lotad), - SPECIES_SHINY_PAL(LOMBRE, gMonShinyPalette_Lombre), - SPECIES_SHINY_PAL(LUDICOLO, gMonShinyPalette_Ludicolo), - SPECIES_SHINY_PAL(SEEDOT, gMonShinyPalette_Seedot), - SPECIES_SHINY_PAL(NUZLEAF, gMonShinyPalette_Nuzleaf), - SPECIES_SHINY_PAL(SHIFTRY, gMonShinyPalette_Shiftry), - SPECIES_SHINY_PAL(NINCADA, gMonShinyPalette_Nincada), - SPECIES_SHINY_PAL(NINJASK, gMonShinyPalette_Ninjask), - SPECIES_SHINY_PAL(SHEDINJA, gMonShinyPalette_Shedinja), - SPECIES_SHINY_PAL(TAILLOW, gMonShinyPalette_Taillow), - SPECIES_SHINY_PAL(SWELLOW, gMonShinyPalette_Swellow), - SPECIES_SHINY_PAL(SHROOMISH, gMonShinyPalette_Shroomish), - SPECIES_SHINY_PAL(BRELOOM, gMonShinyPalette_Breloom), - SPECIES_SHINY_PAL(SPINDA, gMonShinyPalette_Spinda), - SPECIES_SHINY_PAL(WINGULL, gMonShinyPalette_Wingull), - SPECIES_SHINY_PAL(PELIPPER, gMonShinyPalette_Pelipper), - SPECIES_SHINY_PAL(SURSKIT, gMonShinyPalette_Surskit), - SPECIES_SHINY_PAL(MASQUERAIN, gMonShinyPalette_Masquerain), - SPECIES_SHINY_PAL(WAILMER, gMonShinyPalette_Wailmer), - SPECIES_SHINY_PAL(WAILORD, gMonShinyPalette_Wailord), - SPECIES_SHINY_PAL(SKITTY, gMonShinyPalette_Skitty), - SPECIES_SHINY_PAL(DELCATTY, gMonShinyPalette_Delcatty), - SPECIES_SHINY_PAL(KECLEON, gMonShinyPalette_Kecleon), - SPECIES_SHINY_PAL(BALTOY, gMonShinyPalette_Baltoy), - SPECIES_SHINY_PAL(CLAYDOL, gMonShinyPalette_Claydol), - SPECIES_SHINY_PAL(NOSEPASS, gMonShinyPalette_Nosepass), - SPECIES_SHINY_PAL(TORKOAL, gMonShinyPalette_Torkoal), - SPECIES_SHINY_PAL(SABLEYE, gMonShinyPalette_Sableye), - SPECIES_SHINY_PAL(BARBOACH, gMonShinyPalette_Barboach), - SPECIES_SHINY_PAL(WHISCASH, gMonShinyPalette_Whiscash), - SPECIES_SHINY_PAL(LUVDISC, gMonShinyPalette_Luvdisc), - SPECIES_SHINY_PAL(CORPHISH, gMonShinyPalette_Corphish), - SPECIES_SHINY_PAL(CRAWDAUNT, gMonShinyPalette_Crawdaunt), - SPECIES_SHINY_PAL(FEEBAS, gMonShinyPalette_Feebas), - SPECIES_SHINY_PAL(MILOTIC, gMonShinyPalette_Milotic), - SPECIES_SHINY_PAL(CARVANHA, gMonShinyPalette_Carvanha), - SPECIES_SHINY_PAL(SHARPEDO, gMonShinyPalette_Sharpedo), - SPECIES_SHINY_PAL(TRAPINCH, gMonShinyPalette_Trapinch), - SPECIES_SHINY_PAL(VIBRAVA, gMonShinyPalette_Vibrava), - SPECIES_SHINY_PAL(FLYGON, gMonShinyPalette_Flygon), - SPECIES_SHINY_PAL(MAKUHITA, gMonShinyPalette_Makuhita), - SPECIES_SHINY_PAL(HARIYAMA, gMonShinyPalette_Hariyama), - SPECIES_SHINY_PAL(ELECTRIKE, gMonShinyPalette_Electrike), - SPECIES_SHINY_PAL(MANECTRIC, gMonShinyPalette_Manectric), - SPECIES_SHINY_PAL(NUMEL, gMonShinyPalette_Numel), - SPECIES_SHINY_PAL(CAMERUPT, gMonShinyPalette_Camerupt), - SPECIES_SHINY_PAL(SPHEAL, gMonShinyPalette_Spheal), - SPECIES_SHINY_PAL(SEALEO, gMonShinyPalette_Sealeo), - SPECIES_SHINY_PAL(WALREIN, gMonShinyPalette_Walrein), - SPECIES_SHINY_PAL(CACNEA, gMonShinyPalette_Cacnea), - SPECIES_SHINY_PAL(CACTURNE, gMonShinyPalette_Cacturne), - SPECIES_SHINY_PAL(SNORUNT, gMonShinyPalette_Snorunt), - SPECIES_SHINY_PAL(GLALIE, gMonShinyPalette_Glalie), - SPECIES_SHINY_PAL(LUNATONE, gMonShinyPalette_Lunatone), - SPECIES_SHINY_PAL(SOLROCK, gMonShinyPalette_Solrock), - SPECIES_SHINY_PAL(AZURILL, gMonShinyPalette_Azurill), - SPECIES_SHINY_PAL(SPOINK, gMonShinyPalette_Spoink), - SPECIES_SHINY_PAL(GRUMPIG, gMonShinyPalette_Grumpig), - SPECIES_SHINY_PAL(PLUSLE, gMonShinyPalette_Plusle), - SPECIES_SHINY_PAL(MINUN, gMonShinyPalette_Minun), - SPECIES_SHINY_PAL(MAWILE, gMonShinyPalette_Mawile), - SPECIES_SHINY_PAL(MEDITITE, gMonShinyPalette_Meditite), - SPECIES_SHINY_PAL(MEDICHAM, gMonShinyPalette_Medicham), - SPECIES_SHINY_PAL(SWABLU, gMonShinyPalette_Swablu), - SPECIES_SHINY_PAL(ALTARIA, gMonShinyPalette_Altaria), - SPECIES_SHINY_PAL(WYNAUT, gMonShinyPalette_Wynaut), - SPECIES_SHINY_PAL(DUSKULL, gMonShinyPalette_Duskull), - SPECIES_SHINY_PAL(DUSCLOPS, gMonShinyPalette_Dusclops), - SPECIES_SHINY_PAL(ROSELIA, gMonShinyPalette_Roselia), - SPECIES_SHINY_PAL(SLAKOTH, gMonShinyPalette_Slakoth), - SPECIES_SHINY_PAL(VIGOROTH, gMonShinyPalette_Vigoroth), - SPECIES_SHINY_PAL(SLAKING, gMonShinyPalette_Slaking), - SPECIES_SHINY_PAL(GULPIN, gMonShinyPalette_Gulpin), - SPECIES_SHINY_PAL(SWALOT, gMonShinyPalette_Swalot), - SPECIES_SHINY_PAL(TROPIUS, gMonShinyPalette_Tropius), - SPECIES_SHINY_PAL(WHISMUR, gMonShinyPalette_Whismur), - SPECIES_SHINY_PAL(LOUDRED, gMonShinyPalette_Loudred), - SPECIES_SHINY_PAL(EXPLOUD, gMonShinyPalette_Exploud), - SPECIES_SHINY_PAL(CLAMPERL, gMonShinyPalette_Clamperl), - SPECIES_SHINY_PAL(HUNTAIL, gMonShinyPalette_Huntail), - SPECIES_SHINY_PAL(GOREBYSS, gMonShinyPalette_Gorebyss), - SPECIES_SHINY_PAL(ABSOL, gMonShinyPalette_Absol), - SPECIES_SHINY_PAL(SHUPPET, gMonShinyPalette_Shuppet), - SPECIES_SHINY_PAL(BANETTE, gMonShinyPalette_Banette), - SPECIES_SHINY_PAL(SEVIPER, gMonShinyPalette_Seviper), - SPECIES_SHINY_PAL(ZANGOOSE, gMonShinyPalette_Zangoose), - SPECIES_SHINY_PAL(RELICANTH, gMonShinyPalette_Relicanth), - SPECIES_SHINY_PAL(ARON, gMonShinyPalette_Aron), - SPECIES_SHINY_PAL(LAIRON, gMonShinyPalette_Lairon), - SPECIES_SHINY_PAL(AGGRON, gMonShinyPalette_Aggron), - SPECIES_SHINY_PAL(CASTFORM, gMonShinyPalette_Castform), - SPECIES_SHINY_PAL(VOLBEAT, gMonShinyPalette_Volbeat), - SPECIES_SHINY_PAL(ILLUMISE, gMonShinyPalette_Illumise), - SPECIES_SHINY_PAL(LILEEP, gMonShinyPalette_Lileep), - SPECIES_SHINY_PAL(CRADILY, gMonShinyPalette_Cradily), - SPECIES_SHINY_PAL(ANORITH, gMonShinyPalette_Anorith), - SPECIES_SHINY_PAL(ARMALDO, gMonShinyPalette_Armaldo), - SPECIES_SHINY_PAL(RALTS, gMonShinyPalette_Ralts), - SPECIES_SHINY_PAL(KIRLIA, gMonShinyPalette_Kirlia), - SPECIES_SHINY_PAL(GARDEVOIR, gMonShinyPalette_Gardevoir), - SPECIES_SHINY_PAL(BAGON, gMonShinyPalette_Bagon), - SPECIES_SHINY_PAL(SHELGON, gMonShinyPalette_Shelgon), - SPECIES_SHINY_PAL(SALAMENCE, gMonShinyPalette_Salamence), - SPECIES_SHINY_PAL(BELDUM, gMonShinyPalette_Beldum), - SPECIES_SHINY_PAL(METANG, gMonShinyPalette_Metang), - SPECIES_SHINY_PAL(METAGROSS, gMonShinyPalette_Metagross), - SPECIES_SHINY_PAL(REGIROCK, gMonShinyPalette_Regirock), - SPECIES_SHINY_PAL(REGICE, gMonShinyPalette_Regice), - SPECIES_SHINY_PAL(REGISTEEL, gMonShinyPalette_Registeel), - SPECIES_SHINY_PAL(KYOGRE, gMonShinyPalette_Kyogre), - SPECIES_SHINY_PAL(GROUDON, gMonShinyPalette_Groudon), - SPECIES_SHINY_PAL(RAYQUAZA, gMonShinyPalette_Rayquaza), - SPECIES_SHINY_PAL(LATIAS, gMonShinyPalette_Latias), - SPECIES_SHINY_PAL(LATIOS, gMonShinyPalette_Latios), - SPECIES_SHINY_PAL(JIRACHI, gMonShinyPalette_Jirachi), - SPECIES_SHINY_PAL(DEOXYS, gMonShinyPalette_Deoxys), - SPECIES_SHINY_PAL(CHIMECHO, gMonShinyPalette_Chimecho), -#if P_GEN_4_POKEMON == TRUE - SPECIES_SHINY_PAL(TURTWIG, gMonShinyPalette_Turtwig), - SPECIES_SHINY_PAL(GROTLE, gMonShinyPalette_Grotle), - SPECIES_SHINY_PAL(TORTERRA, gMonShinyPalette_Torterra), - SPECIES_SHINY_PAL(CHIMCHAR, gMonShinyPalette_Chimchar), - SPECIES_SHINY_PAL(MONFERNO, gMonShinyPalette_Monferno), - SPECIES_SHINY_PAL(INFERNAPE, gMonShinyPalette_Infernape), - SPECIES_SHINY_PAL(PIPLUP, gMonShinyPalette_Piplup), - SPECIES_SHINY_PAL(PRINPLUP, gMonShinyPalette_Prinplup), - SPECIES_SHINY_PAL(EMPOLEON, gMonShinyPalette_Empoleon), - SPECIES_SHINY_PAL(STARLY, gMonShinyPalette_Starly), - SPECIES_SHINY_PAL(STARAVIA, gMonShinyPalette_Staravia), - SPECIES_SHINY_PAL(STARAPTOR, gMonShinyPalette_Staraptor), - SPECIES_SHINY_PAL(BIDOOF, gMonShinyPalette_Bidoof), - SPECIES_SHINY_PAL(BIBAREL, gMonShinyPalette_Bibarel), - SPECIES_SHINY_PAL(KRICKETOT, gMonShinyPalette_Kricketot), - SPECIES_SHINY_PAL(KRICKETUNE, gMonShinyPalette_Kricketune), - SPECIES_SHINY_PAL(SHINX, gMonShinyPalette_Shinx), - SPECIES_SHINY_PAL(LUXIO, gMonShinyPalette_Luxio), - SPECIES_SHINY_PAL(LUXRAY, gMonShinyPalette_Luxray), - SPECIES_SHINY_PAL(BUDEW, gMonShinyPalette_Budew), - SPECIES_SHINY_PAL(ROSERADE, gMonShinyPalette_Roserade), - SPECIES_SHINY_PAL(CRANIDOS, gMonShinyPalette_Cranidos), - SPECIES_SHINY_PAL(RAMPARDOS, gMonShinyPalette_Rampardos), - SPECIES_SHINY_PAL(SHIELDON, gMonShinyPalette_Shieldon), - SPECIES_SHINY_PAL(BASTIODON, gMonShinyPalette_Bastiodon), - SPECIES_SHINY_PAL(BURMY, gMonShinyPalette_Burmy), - SPECIES_SHINY_PAL(WORMADAM, gMonShinyPalette_Wormadam), - SPECIES_SHINY_PAL(MOTHIM, gMonShinyPalette_Mothim), - SPECIES_SHINY_PAL(COMBEE, gMonShinyPalette_Combee), - SPECIES_SHINY_PAL(VESPIQUEN, gMonShinyPalette_Vespiquen), - SPECIES_SHINY_PAL(PACHIRISU, gMonShinyPalette_Pachirisu), - SPECIES_SHINY_PAL(BUIZEL, gMonShinyPalette_Buizel), - SPECIES_SHINY_PAL(FLOATZEL, gMonShinyPalette_Floatzel), - SPECIES_SHINY_PAL(CHERUBI, gMonShinyPalette_Cherubi), - SPECIES_SHINY_PAL(CHERRIM, gMonShinyPalette_Cherrim), - SPECIES_SHINY_PAL(SHELLOS, gMonShinyPalette_Shellos), - SPECIES_SHINY_PAL(GASTRODON, gMonShinyPalette_Gastrodon), - SPECIES_SHINY_PAL(AMBIPOM, gMonShinyPalette_Ambipom), - SPECIES_SHINY_PAL(DRIFLOON, gMonShinyPalette_Drifloon), - SPECIES_SHINY_PAL(DRIFBLIM, gMonShinyPalette_Drifblim), - SPECIES_SHINY_PAL(BUNEARY, gMonShinyPalette_Buneary), - SPECIES_SHINY_PAL(LOPUNNY, gMonShinyPalette_Lopunny), - SPECIES_SHINY_PAL(MISMAGIUS, gMonShinyPalette_Mismagius), - SPECIES_SHINY_PAL(HONCHKROW, gMonShinyPalette_Honchkrow), - SPECIES_SHINY_PAL(GLAMEOW, gMonShinyPalette_Glameow), - SPECIES_SHINY_PAL(PURUGLY, gMonShinyPalette_Purugly), - SPECIES_SHINY_PAL(CHINGLING, gMonShinyPalette_Chingling), - SPECIES_SHINY_PAL(STUNKY, gMonShinyPalette_Stunky), - SPECIES_SHINY_PAL(SKUNTANK, gMonShinyPalette_Skuntank), - SPECIES_SHINY_PAL(BRONZOR, gMonShinyPalette_Bronzor), - SPECIES_SHINY_PAL(BRONZONG, gMonShinyPalette_Bronzong), - SPECIES_SHINY_PAL(BONSLY, gMonShinyPalette_Bonsly), - SPECIES_SHINY_PAL(MIME_JR, gMonShinyPalette_MimeJr), - SPECIES_SHINY_PAL(HAPPINY, gMonShinyPalette_Happiny), - SPECIES_SHINY_PAL(CHATOT, gMonShinyPalette_Chatot), - SPECIES_SHINY_PAL(SPIRITOMB, gMonShinyPalette_Spiritomb), - SPECIES_SHINY_PAL(GIBLE, gMonShinyPalette_Gible), - SPECIES_SHINY_PAL(GABITE, gMonShinyPalette_Gabite), - SPECIES_SHINY_PAL(GARCHOMP, gMonShinyPalette_Garchomp), - SPECIES_SHINY_PAL(MUNCHLAX, gMonShinyPalette_Munchlax), - SPECIES_SHINY_PAL(RIOLU, gMonShinyPalette_Riolu), - SPECIES_SHINY_PAL(LUCARIO, gMonShinyPalette_Lucario), - SPECIES_SHINY_PAL(HIPPOPOTAS, gMonShinyPalette_Hippopotas), - SPECIES_SHINY_PAL(HIPPOWDON, gMonShinyPalette_Hippowdon), - SPECIES_SHINY_PAL(SKORUPI, gMonShinyPalette_Skorupi), - SPECIES_SHINY_PAL(DRAPION, gMonShinyPalette_Drapion), - SPECIES_SHINY_PAL(CROAGUNK, gMonShinyPalette_Croagunk), - SPECIES_SHINY_PAL(TOXICROAK, gMonShinyPalette_Toxicroak), - SPECIES_SHINY_PAL(CARNIVINE, gMonShinyPalette_Carnivine), - SPECIES_SHINY_PAL(FINNEON, gMonShinyPalette_Finneon), - SPECIES_SHINY_PAL(LUMINEON, gMonShinyPalette_Lumineon), - SPECIES_SHINY_PAL(MANTYKE, gMonShinyPalette_Mantyke), - SPECIES_SHINY_PAL(SNOVER, gMonShinyPalette_Snover), - SPECIES_SHINY_PAL(ABOMASNOW, gMonShinyPalette_Abomasnow), - SPECIES_SHINY_PAL(WEAVILE, gMonShinyPalette_Weavile), - SPECIES_SHINY_PAL(MAGNEZONE, gMonShinyPalette_Magnezone), - SPECIES_SHINY_PAL(LICKILICKY, gMonShinyPalette_Lickilicky), - SPECIES_SHINY_PAL(RHYPERIOR, gMonShinyPalette_Rhyperior), - SPECIES_SHINY_PAL(TANGROWTH, gMonShinyPalette_Tangrowth), - SPECIES_SHINY_PAL(ELECTIVIRE, gMonShinyPalette_Electivire), - SPECIES_SHINY_PAL(MAGMORTAR, gMonShinyPalette_Magmortar), - SPECIES_SHINY_PAL(TOGEKISS, gMonShinyPalette_Togekiss), - SPECIES_SHINY_PAL(YANMEGA, gMonShinyPalette_Yanmega), - SPECIES_SHINY_PAL(LEAFEON, gMonShinyPalette_Leafeon), - SPECIES_SHINY_PAL(GLACEON, gMonShinyPalette_Glaceon), - SPECIES_SHINY_PAL(GLISCOR, gMonShinyPalette_Gliscor), - SPECIES_SHINY_PAL(MAMOSWINE, gMonShinyPalette_Mamoswine), - SPECIES_SHINY_PAL(PORYGON_Z, gMonShinyPalette_PorygonZ), - SPECIES_SHINY_PAL(GALLADE, gMonShinyPalette_Gallade), - SPECIES_SHINY_PAL(PROBOPASS, gMonShinyPalette_Probopass), - SPECIES_SHINY_PAL(DUSKNOIR, gMonShinyPalette_Dusknoir), - SPECIES_SHINY_PAL(FROSLASS, gMonShinyPalette_Froslass), - SPECIES_SHINY_PAL(ROTOM, gMonShinyPalette_Rotom), - SPECIES_SHINY_PAL(UXIE, gMonShinyPalette_Uxie), - SPECIES_SHINY_PAL(MESPRIT, gMonShinyPalette_Mesprit), - SPECIES_SHINY_PAL(AZELF, gMonShinyPalette_Azelf), - SPECIES_SHINY_PAL(DIALGA, gMonShinyPalette_Dialga), - SPECIES_SHINY_PAL(PALKIA, gMonShinyPalette_Palkia), - SPECIES_SHINY_PAL(HEATRAN, gMonShinyPalette_Heatran), - SPECIES_SHINY_PAL(REGIGIGAS, gMonShinyPalette_Regigigas), - SPECIES_SHINY_PAL(GIRATINA, gMonShinyPalette_Giratina), - SPECIES_SHINY_PAL(CRESSELIA, gMonShinyPalette_Cresselia), - SPECIES_SHINY_PAL(PHIONE, gMonShinyPalette_Phione), - SPECIES_SHINY_PAL(MANAPHY, gMonShinyPalette_Manaphy), - SPECIES_SHINY_PAL(DARKRAI, gMonShinyPalette_Darkrai), - SPECIES_SHINY_PAL(SHAYMIN, gMonShinyPalette_Shaymin), - SPECIES_SHINY_PAL(ARCEUS, gMonShinyPalette_Arceus), -#endif -#if P_GEN_5_POKEMON == TRUE - SPECIES_SHINY_PAL(VICTINI, gMonShinyPalette_Victini), - SPECIES_SHINY_PAL(SNIVY, gMonShinyPalette_Snivy), - SPECIES_SHINY_PAL(SERVINE, gMonShinyPalette_Servine), - SPECIES_SHINY_PAL(SERPERIOR, gMonShinyPalette_Serperior), - SPECIES_SHINY_PAL(TEPIG, gMonShinyPalette_Tepig), - SPECIES_SHINY_PAL(PIGNITE, gMonShinyPalette_Pignite), - SPECIES_SHINY_PAL(EMBOAR, gMonShinyPalette_Emboar), - SPECIES_SHINY_PAL(OSHAWOTT, gMonShinyPalette_Oshawott), - SPECIES_SHINY_PAL(DEWOTT, gMonShinyPalette_Dewott), - SPECIES_SHINY_PAL(SAMUROTT, gMonShinyPalette_Samurott), - SPECIES_SHINY_PAL(PATRAT, gMonShinyPalette_Patrat), - SPECIES_SHINY_PAL(WATCHOG, gMonShinyPalette_Watchog), - SPECIES_SHINY_PAL(LILLIPUP, gMonShinyPalette_Lillipup), - SPECIES_SHINY_PAL(HERDIER, gMonShinyPalette_Herdier), - SPECIES_SHINY_PAL(STOUTLAND, gMonShinyPalette_Stoutland), - SPECIES_SHINY_PAL(PURRLOIN, gMonShinyPalette_Purrloin), - SPECIES_SHINY_PAL(LIEPARD, gMonShinyPalette_Liepard), - SPECIES_SHINY_PAL(PANSAGE, gMonShinyPalette_Pansage), - SPECIES_SHINY_PAL(SIMISAGE, gMonShinyPalette_Simisage), - SPECIES_SHINY_PAL(PANSEAR, gMonShinyPalette_Pansear), - SPECIES_SHINY_PAL(SIMISEAR, gMonShinyPalette_Simisear), - SPECIES_SHINY_PAL(PANPOUR, gMonShinyPalette_Panpour), - SPECIES_SHINY_PAL(SIMIPOUR, gMonShinyPalette_Simipour), - SPECIES_SHINY_PAL(MUNNA, gMonShinyPalette_Munna), - SPECIES_SHINY_PAL(MUSHARNA, gMonShinyPalette_Musharna), - SPECIES_SHINY_PAL(PIDOVE, gMonShinyPalette_Pidove), - SPECIES_SHINY_PAL(TRANQUILL, gMonShinyPalette_Tranquill), - SPECIES_SHINY_PAL(UNFEZANT, gMonShinyPalette_Unfezant), - SPECIES_SHINY_PAL(BLITZLE, gMonShinyPalette_Blitzle), - SPECIES_SHINY_PAL(ZEBSTRIKA, gMonShinyPalette_Zebstrika), - SPECIES_SHINY_PAL(ROGGENROLA, gMonShinyPalette_Roggenrola), - SPECIES_SHINY_PAL(BOLDORE, gMonShinyPalette_Boldore), - SPECIES_SHINY_PAL(GIGALITH, gMonShinyPalette_Gigalith), - SPECIES_SHINY_PAL(WOOBAT, gMonShinyPalette_Woobat), - SPECIES_SHINY_PAL(SWOOBAT, gMonShinyPalette_Swoobat), - SPECIES_SHINY_PAL(DRILBUR, gMonShinyPalette_Drilbur), - SPECIES_SHINY_PAL(EXCADRILL, gMonShinyPalette_Excadrill), - SPECIES_SHINY_PAL(AUDINO, gMonShinyPalette_Audino), - SPECIES_SHINY_PAL(TIMBURR, gMonShinyPalette_Timburr), - SPECIES_SHINY_PAL(GURDURR, gMonShinyPalette_Gurdurr), - SPECIES_SHINY_PAL(CONKELDURR, gMonShinyPalette_Conkeldurr), - SPECIES_SHINY_PAL(TYMPOLE, gMonShinyPalette_Tympole), - SPECIES_SHINY_PAL(PALPITOAD, gMonShinyPalette_Palpitoad), - SPECIES_SHINY_PAL(SEISMITOAD, gMonShinyPalette_Seismitoad), - SPECIES_SHINY_PAL(THROH, gMonShinyPalette_Throh), - SPECIES_SHINY_PAL(SAWK, gMonShinyPalette_Sawk), - SPECIES_SHINY_PAL(SEWADDLE, gMonShinyPalette_Sewaddle), - SPECIES_SHINY_PAL(SWADLOON, gMonShinyPalette_Swadloon), - SPECIES_SHINY_PAL(LEAVANNY, gMonShinyPalette_Leavanny), - SPECIES_SHINY_PAL(VENIPEDE, gMonShinyPalette_Venipede), - SPECIES_SHINY_PAL(WHIRLIPEDE, gMonShinyPalette_Whirlipede), - SPECIES_SHINY_PAL(SCOLIPEDE, gMonShinyPalette_Scolipede), - SPECIES_SHINY_PAL(COTTONEE, gMonShinyPalette_Cottonee), - SPECIES_SHINY_PAL(WHIMSICOTT, gMonShinyPalette_Whimsicott), - SPECIES_SHINY_PAL(PETILIL, gMonShinyPalette_Petilil), - SPECIES_SHINY_PAL(LILLIGANT, gMonShinyPalette_Lilligant), - SPECIES_SHINY_PAL(BASCULIN, gMonShinyPalette_Basculin), - SPECIES_SHINY_PAL(SANDILE, gMonShinyPalette_Sandile), - SPECIES_SHINY_PAL(KROKOROK, gMonShinyPalette_Krokorok), - SPECIES_SHINY_PAL(KROOKODILE, gMonShinyPalette_Krookodile), - SPECIES_SHINY_PAL(DARUMAKA, gMonShinyPalette_Darumaka), - SPECIES_SHINY_PAL(DARMANITAN, gMonShinyPalette_Darmanitan), - SPECIES_SHINY_PAL(MARACTUS, gMonShinyPalette_Maractus), - SPECIES_SHINY_PAL(DWEBBLE, gMonShinyPalette_Dwebble), - SPECIES_SHINY_PAL(CRUSTLE, gMonShinyPalette_Crustle), - SPECIES_SHINY_PAL(SCRAGGY, gMonShinyPalette_Scraggy), - SPECIES_SHINY_PAL(SCRAFTY, gMonShinyPalette_Scrafty), - SPECIES_SHINY_PAL(SIGILYPH, gMonShinyPalette_Sigilyph), - SPECIES_SHINY_PAL(YAMASK, gMonShinyPalette_Yamask), - SPECIES_SHINY_PAL(COFAGRIGUS, gMonShinyPalette_Cofagrigus), - SPECIES_SHINY_PAL(TIRTOUGA, gMonShinyPalette_Tirtouga), - SPECIES_SHINY_PAL(CARRACOSTA, gMonShinyPalette_Carracosta), - SPECIES_SHINY_PAL(ARCHEN, gMonShinyPalette_Archen), - SPECIES_SHINY_PAL(ARCHEOPS, gMonShinyPalette_Archeops), - SPECIES_SHINY_PAL(TRUBBISH, gMonShinyPalette_Trubbish), - SPECIES_SHINY_PAL(GARBODOR, gMonShinyPalette_Garbodor), - SPECIES_SHINY_PAL(ZORUA, gMonShinyPalette_Zorua), - SPECIES_SHINY_PAL(ZOROARK, gMonShinyPalette_Zoroark), - SPECIES_SHINY_PAL(MINCCINO, gMonShinyPalette_Minccino), - SPECIES_SHINY_PAL(CINCCINO, gMonShinyPalette_Cinccino), - SPECIES_SHINY_PAL(GOTHITA, gMonShinyPalette_Gothita), - SPECIES_SHINY_PAL(GOTHORITA, gMonShinyPalette_Gothorita), - SPECIES_SHINY_PAL(GOTHITELLE, gMonShinyPalette_Gothitelle), - SPECIES_SHINY_PAL(SOLOSIS, gMonShinyPalette_Solosis), - SPECIES_SHINY_PAL(DUOSION, gMonShinyPalette_Duosion), - SPECIES_SHINY_PAL(REUNICLUS, gMonShinyPalette_Reuniclus), - SPECIES_SHINY_PAL(DUCKLETT, gMonShinyPalette_Ducklett), - SPECIES_SHINY_PAL(SWANNA, gMonShinyPalette_Swanna), - SPECIES_SHINY_PAL(VANILLITE, gMonShinyPalette_Vanillite), - SPECIES_SHINY_PAL(VANILLISH, gMonShinyPalette_Vanillish), - SPECIES_SHINY_PAL(VANILLUXE, gMonShinyPalette_Vanilluxe), - SPECIES_SHINY_PAL(DEERLING, gMonShinyPalette_Deerling), - SPECIES_SHINY_PAL(SAWSBUCK, gMonShinyPalette_Sawsbuck), - SPECIES_SHINY_PAL(EMOLGA, gMonShinyPalette_Emolga), - SPECIES_SHINY_PAL(KARRABLAST, gMonShinyPalette_Karrablast), - SPECIES_SHINY_PAL(ESCAVALIER, gMonShinyPalette_Escavalier), - SPECIES_SHINY_PAL(FOONGUS, gMonShinyPalette_Foongus), - SPECIES_SHINY_PAL(AMOONGUSS, gMonShinyPalette_Amoonguss), - SPECIES_SHINY_PAL(FRILLISH, gMonShinyPalette_Frillish), - SPECIES_SHINY_PAL(JELLICENT, gMonShinyPalette_Jellicent), - SPECIES_SHINY_PAL(ALOMOMOLA, gMonShinyPalette_Alomomola), - SPECIES_SHINY_PAL(JOLTIK, gMonShinyPalette_Joltik), - SPECIES_SHINY_PAL(GALVANTULA, gMonShinyPalette_Galvantula), - SPECIES_SHINY_PAL(FERROSEED, gMonShinyPalette_Ferroseed), - SPECIES_SHINY_PAL(FERROTHORN, gMonShinyPalette_Ferrothorn), - SPECIES_SHINY_PAL(KLINK, gMonShinyPalette_Klink), - SPECIES_SHINY_PAL(KLANG, gMonShinyPalette_Klang), - SPECIES_SHINY_PAL(KLINKLANG, gMonShinyPalette_Klinklang), - SPECIES_SHINY_PAL(TYNAMO, gMonShinyPalette_Tynamo), - SPECIES_SHINY_PAL(EELEKTRIK, gMonShinyPalette_Eelektrik), - SPECIES_SHINY_PAL(EELEKTROSS, gMonShinyPalette_Eelektross), - SPECIES_SHINY_PAL(ELGYEM, gMonShinyPalette_Elgyem), - SPECIES_SHINY_PAL(BEHEEYEM, gMonShinyPalette_Beheeyem), - SPECIES_SHINY_PAL(LITWICK, gMonShinyPalette_Litwick), - SPECIES_SHINY_PAL(LAMPENT, gMonShinyPalette_Lampent), - SPECIES_SHINY_PAL(CHANDELURE, gMonShinyPalette_Chandelure), - SPECIES_SHINY_PAL(AXEW, gMonShinyPalette_Axew), - SPECIES_SHINY_PAL(FRAXURE, gMonShinyPalette_Fraxure), - SPECIES_SHINY_PAL(HAXORUS, gMonShinyPalette_Haxorus), - SPECIES_SHINY_PAL(CUBCHOO, gMonShinyPalette_Cubchoo), - SPECIES_SHINY_PAL(BEARTIC, gMonShinyPalette_Beartic), - SPECIES_SHINY_PAL(CRYOGONAL, gMonShinyPalette_Cryogonal), - SPECIES_SHINY_PAL(SHELMET, gMonShinyPalette_Shelmet), - SPECIES_SHINY_PAL(ACCELGOR, gMonShinyPalette_Accelgor), - SPECIES_SHINY_PAL(STUNFISK, gMonShinyPalette_Stunfisk), - SPECIES_SHINY_PAL(MIENFOO, gMonShinyPalette_Mienfoo), - SPECIES_SHINY_PAL(MIENSHAO, gMonShinyPalette_Mienshao), - SPECIES_SHINY_PAL(DRUDDIGON, gMonShinyPalette_Druddigon), - SPECIES_SHINY_PAL(GOLETT, gMonShinyPalette_Golett), - SPECIES_SHINY_PAL(GOLURK, gMonShinyPalette_Golurk), - SPECIES_SHINY_PAL(PAWNIARD, gMonShinyPalette_Pawniard), - SPECIES_SHINY_PAL(BISHARP, gMonShinyPalette_Bisharp), - SPECIES_SHINY_PAL(BOUFFALANT, gMonShinyPalette_Bouffalant), - SPECIES_SHINY_PAL(RUFFLET, gMonShinyPalette_Rufflet), - SPECIES_SHINY_PAL(BRAVIARY, gMonShinyPalette_Braviary), - SPECIES_SHINY_PAL(VULLABY, gMonShinyPalette_Vullaby), - SPECIES_SHINY_PAL(MANDIBUZZ, gMonShinyPalette_Mandibuzz), - SPECIES_SHINY_PAL(HEATMOR, gMonShinyPalette_Heatmor), - SPECIES_SHINY_PAL(DURANT, gMonShinyPalette_Durant), - SPECIES_SHINY_PAL(DEINO, gMonShinyPalette_Deino), - SPECIES_SHINY_PAL(ZWEILOUS, gMonShinyPalette_Zweilous), - SPECIES_SHINY_PAL(HYDREIGON, gMonShinyPalette_Hydreigon), - SPECIES_SHINY_PAL(LARVESTA, gMonShinyPalette_Larvesta), - SPECIES_SHINY_PAL(VOLCARONA, gMonShinyPalette_Volcarona), - SPECIES_SHINY_PAL(COBALION, gMonShinyPalette_Cobalion), - SPECIES_SHINY_PAL(TERRAKION, gMonShinyPalette_Terrakion), - SPECIES_SHINY_PAL(VIRIZION, gMonShinyPalette_Virizion), - SPECIES_SHINY_PAL(TORNADUS, gMonShinyPalette_Tornadus), - SPECIES_SHINY_PAL(THUNDURUS, gMonShinyPalette_Thundurus), - SPECIES_SHINY_PAL(RESHIRAM, gMonShinyPalette_Reshiram), - SPECIES_SHINY_PAL(ZEKROM, gMonShinyPalette_Zekrom), - SPECIES_SHINY_PAL(LANDORUS, gMonShinyPalette_Landorus), - SPECIES_SHINY_PAL(KYUREM, gMonShinyPalette_Kyurem), - SPECIES_SHINY_PAL(KELDEO, gMonShinyPalette_Keldeo), - SPECIES_SHINY_PAL(MELOETTA, gMonShinyPalette_Meloetta), - SPECIES_SHINY_PAL(GENESECT, gMonShinyPalette_Genesect), -#endif -#if P_GEN_6_POKEMON == TRUE - SPECIES_SHINY_PAL(CHESPIN, gMonShinyPalette_Chespin), - SPECIES_SHINY_PAL(QUILLADIN, gMonShinyPalette_Quilladin), - SPECIES_SHINY_PAL(CHESNAUGHT, gMonShinyPalette_Chesnaught), - SPECIES_SHINY_PAL(FENNEKIN, gMonShinyPalette_Fennekin), - SPECIES_SHINY_PAL(BRAIXEN, gMonShinyPalette_Braixen), - SPECIES_SHINY_PAL(DELPHOX, gMonShinyPalette_Delphox), - SPECIES_SHINY_PAL(FROAKIE, gMonShinyPalette_Froakie), - SPECIES_SHINY_PAL(FROGADIER, gMonShinyPalette_Frogadier), - SPECIES_SHINY_PAL(GRENINJA, gMonShinyPalette_Greninja), - SPECIES_SHINY_PAL(BUNNELBY, gMonShinyPalette_Bunnelby), - SPECIES_SHINY_PAL(DIGGERSBY, gMonShinyPalette_Diggersby), - SPECIES_SHINY_PAL(FLETCHLING, gMonShinyPalette_Fletchling), - SPECIES_SHINY_PAL(FLETCHINDER, gMonShinyPalette_Fletchinder), - SPECIES_SHINY_PAL(TALONFLAME, gMonShinyPalette_Talonflame), - SPECIES_SHINY_PAL(SCATTERBUG, gMonShinyPalette_Scatterbug), - SPECIES_SHINY_PAL(SPEWPA, gMonShinyPalette_Spewpa), - SPECIES_SHINY_PAL(VIVILLON, gMonShinyPalette_Vivillon), - SPECIES_SHINY_PAL(LITLEO, gMonShinyPalette_Litleo), - SPECIES_SHINY_PAL(PYROAR, gMonShinyPalette_Pyroar), - SPECIES_SHINY_PAL(FLABEBE, gMonShinyPalette_Flabebe), - SPECIES_SHINY_PAL(FLOETTE, gMonShinyPalette_Floette), - SPECIES_SHINY_PAL(FLORGES, gMonShinyPalette_Florges), - SPECIES_SHINY_PAL(SKIDDO, gMonShinyPalette_Skiddo), - SPECIES_SHINY_PAL(GOGOAT, gMonShinyPalette_Gogoat), - SPECIES_SHINY_PAL(PANCHAM, gMonShinyPalette_Pancham), - SPECIES_SHINY_PAL(PANGORO, gMonShinyPalette_Pangoro), - SPECIES_SHINY_PAL(FURFROU, gMonShinyPalette_Furfrou), - SPECIES_SHINY_PAL(ESPURR, gMonShinyPalette_Espurr), - SPECIES_SHINY_PAL(MEOWSTIC, gMonShinyPalette_Meowstic), - SPECIES_SHINY_PAL(HONEDGE, gMonShinyPalette_Honedge), - SPECIES_SHINY_PAL(DOUBLADE, gMonShinyPalette_Doublade), - SPECIES_SHINY_PAL(AEGISLASH, gMonShinyPalette_Aegislash), - SPECIES_SHINY_PAL(SPRITZEE, gMonShinyPalette_Spritzee), - SPECIES_SHINY_PAL(AROMATISSE, gMonShinyPalette_Aromatisse), - SPECIES_SHINY_PAL(SWIRLIX, gMonShinyPalette_Swirlix), - SPECIES_SHINY_PAL(SLURPUFF, gMonShinyPalette_Slurpuff), - SPECIES_SHINY_PAL(INKAY, gMonShinyPalette_Inkay), - SPECIES_SHINY_PAL(MALAMAR, gMonShinyPalette_Malamar), - SPECIES_SHINY_PAL(BINACLE, gMonShinyPalette_Binacle), - SPECIES_SHINY_PAL(BARBARACLE, gMonShinyPalette_Barbaracle), - SPECIES_SHINY_PAL(SKRELP, gMonShinyPalette_Skrelp), - SPECIES_SHINY_PAL(DRAGALGE, gMonShinyPalette_Dragalge), - SPECIES_SHINY_PAL(CLAUNCHER, gMonShinyPalette_Clauncher), - SPECIES_SHINY_PAL(CLAWITZER, gMonShinyPalette_Clawitzer), - SPECIES_SHINY_PAL(HELIOPTILE, gMonShinyPalette_Helioptile), - SPECIES_SHINY_PAL(HELIOLISK, gMonShinyPalette_Heliolisk), - SPECIES_SHINY_PAL(TYRUNT, gMonShinyPalette_Tyrunt), - SPECIES_SHINY_PAL(TYRANTRUM, gMonShinyPalette_Tyrantrum), - SPECIES_SHINY_PAL(AMAURA, gMonShinyPalette_Amaura), - SPECIES_SHINY_PAL(AURORUS, gMonShinyPalette_Aurorus), - SPECIES_SHINY_PAL(SYLVEON, gMonShinyPalette_Sylveon), - SPECIES_SHINY_PAL(HAWLUCHA, gMonShinyPalette_Hawlucha), - SPECIES_SHINY_PAL(DEDENNE, gMonShinyPalette_Dedenne), - SPECIES_SHINY_PAL(CARBINK, gMonShinyPalette_Carbink), - SPECIES_SHINY_PAL(GOOMY, gMonShinyPalette_Goomy), - SPECIES_SHINY_PAL(SLIGGOO, gMonShinyPalette_Sliggoo), - SPECIES_SHINY_PAL(GOODRA, gMonShinyPalette_Goodra), - SPECIES_SHINY_PAL(KLEFKI, gMonShinyPalette_Klefki), - SPECIES_SHINY_PAL(PHANTUMP, gMonShinyPalette_Phantump), - SPECIES_SHINY_PAL(TREVENANT, gMonShinyPalette_Trevenant), - SPECIES_SHINY_PAL(PUMPKABOO, gMonShinyPalette_Pumpkaboo), - SPECIES_SHINY_PAL(GOURGEIST, gMonShinyPalette_Gourgeist), - SPECIES_SHINY_PAL(BERGMITE, gMonShinyPalette_Bergmite), - SPECIES_SHINY_PAL(AVALUGG, gMonShinyPalette_Avalugg), - SPECIES_SHINY_PAL(NOIBAT, gMonShinyPalette_Noibat), - SPECIES_SHINY_PAL(NOIVERN, gMonShinyPalette_Noivern), - SPECIES_SHINY_PAL(XERNEAS, gMonShinyPalette_Xerneas), - SPECIES_SHINY_PAL(YVELTAL, gMonShinyPalette_Yveltal), - SPECIES_SHINY_PAL(ZYGARDE, gMonShinyPalette_Zygarde), - SPECIES_SHINY_PAL(DIANCIE, gMonShinyPalette_Diancie), - SPECIES_SHINY_PAL(HOOPA, gMonShinyPalette_Hoopa), - SPECIES_SHINY_PAL(VOLCANION, gMonShinyPalette_Volcanion), -#endif -#if P_GEN_7_POKEMON == TRUE - SPECIES_SHINY_PAL(ROWLET, gMonShinyPalette_Rowlet), - SPECIES_SHINY_PAL(DARTRIX, gMonShinyPalette_Dartrix), - SPECIES_SHINY_PAL(DECIDUEYE, gMonShinyPalette_Decidueye), - SPECIES_SHINY_PAL(LITTEN, gMonShinyPalette_Litten), - SPECIES_SHINY_PAL(TORRACAT, gMonShinyPalette_Torracat), - SPECIES_SHINY_PAL(INCINEROAR, gMonShinyPalette_Incineroar), - SPECIES_SHINY_PAL(POPPLIO, gMonShinyPalette_Popplio), - SPECIES_SHINY_PAL(BRIONNE, gMonShinyPalette_Brionne), - SPECIES_SHINY_PAL(PRIMARINA, gMonShinyPalette_Primarina), - SPECIES_SHINY_PAL(PIKIPEK, gMonShinyPalette_Pikipek), - SPECIES_SHINY_PAL(TRUMBEAK, gMonShinyPalette_Trumbeak), - SPECIES_SHINY_PAL(TOUCANNON, gMonShinyPalette_Toucannon), - SPECIES_SHINY_PAL(YUNGOOS, gMonShinyPalette_Yungoos), - SPECIES_SHINY_PAL(GUMSHOOS, gMonShinyPalette_Gumshoos), - SPECIES_SHINY_PAL(GRUBBIN, gMonShinyPalette_Grubbin), - SPECIES_SHINY_PAL(CHARJABUG, gMonShinyPalette_Charjabug), - SPECIES_SHINY_PAL(VIKAVOLT, gMonShinyPalette_Vikavolt), - SPECIES_SHINY_PAL(CRABRAWLER, gMonShinyPalette_Crabrawler), - SPECIES_SHINY_PAL(CRABOMINABLE, gMonShinyPalette_Crabominable), - SPECIES_SHINY_PAL(ORICORIO, gMonShinyPalette_Oricorio), - SPECIES_SHINY_PAL(CUTIEFLY, gMonShinyPalette_Cutiefly), - SPECIES_SHINY_PAL(RIBOMBEE, gMonShinyPalette_Ribombee), - SPECIES_SHINY_PAL(ROCKRUFF, gMonShinyPalette_Rockruff), - SPECIES_SHINY_PAL(LYCANROC, gMonShinyPalette_Lycanroc), - SPECIES_SHINY_PAL(WISHIWASHI, gMonShinyPalette_Wishiwashi), - SPECIES_SHINY_PAL(MAREANIE, gMonShinyPalette_Mareanie), - SPECIES_SHINY_PAL(TOXAPEX, gMonShinyPalette_Toxapex), - SPECIES_SHINY_PAL(MUDBRAY, gMonShinyPalette_Mudbray), - SPECIES_SHINY_PAL(MUDSDALE, gMonShinyPalette_Mudsdale), - SPECIES_SHINY_PAL(DEWPIDER, gMonShinyPalette_Dewpider), - SPECIES_SHINY_PAL(ARAQUANID, gMonShinyPalette_Araquanid), - SPECIES_SHINY_PAL(FOMANTIS, gMonShinyPalette_Fomantis), - SPECIES_SHINY_PAL(LURANTIS, gMonShinyPalette_Lurantis), - SPECIES_SHINY_PAL(MORELULL, gMonShinyPalette_Morelull), - SPECIES_SHINY_PAL(SHIINOTIC, gMonShinyPalette_Shiinotic), - SPECIES_SHINY_PAL(SALANDIT, gMonShinyPalette_Salandit), - SPECIES_SHINY_PAL(SALAZZLE, gMonShinyPalette_Salazzle), - SPECIES_SHINY_PAL(STUFFUL, gMonShinyPalette_Stufful), - SPECIES_SHINY_PAL(BEWEAR, gMonShinyPalette_Bewear), - SPECIES_SHINY_PAL(BOUNSWEET, gMonShinyPalette_Bounsweet), - SPECIES_SHINY_PAL(STEENEE, gMonShinyPalette_Steenee), - SPECIES_SHINY_PAL(TSAREENA, gMonShinyPalette_Tsareena), - SPECIES_SHINY_PAL(COMFEY, gMonShinyPalette_Comfey), - SPECIES_SHINY_PAL(ORANGURU, gMonShinyPalette_Oranguru), - SPECIES_SHINY_PAL(PASSIMIAN, gMonShinyPalette_Passimian), - SPECIES_SHINY_PAL(WIMPOD, gMonShinyPalette_Wimpod), - SPECIES_SHINY_PAL(GOLISOPOD, gMonShinyPalette_Golisopod), - SPECIES_SHINY_PAL(SANDYGAST, gMonShinyPalette_Sandygast), - SPECIES_SHINY_PAL(PALOSSAND, gMonShinyPalette_Palossand), - SPECIES_SHINY_PAL(PYUKUMUKU, gMonShinyPalette_Pyukumuku), - SPECIES_SHINY_PAL(TYPE_NULL, gMonShinyPalette_TypeNull), - SPECIES_SHINY_PAL(SILVALLY, gMonShinyPalette_Silvally), - SPECIES_SHINY_PAL(MINIOR, gMonShinyPalette_Minior), - SPECIES_SHINY_PAL(KOMALA, gMonShinyPalette_Komala), - SPECIES_SHINY_PAL(TURTONATOR, gMonShinyPalette_Turtonator), - SPECIES_SHINY_PAL(TOGEDEMARU, gMonShinyPalette_Togedemaru), - SPECIES_SHINY_PAL(MIMIKYU, gMonShinyPalette_Mimikyu), - SPECIES_SHINY_PAL(BRUXISH, gMonShinyPalette_Bruxish), - SPECIES_SHINY_PAL(DRAMPA, gMonShinyPalette_Drampa), - SPECIES_SHINY_PAL(DHELMISE, gMonShinyPalette_Dhelmise), - SPECIES_SHINY_PAL(JANGMO_O, gMonShinyPalette_JangmoO), - SPECIES_SHINY_PAL(HAKAMO_O, gMonShinyPalette_HakamoO), - SPECIES_SHINY_PAL(KOMMO_O, gMonShinyPalette_KommoO), - SPECIES_SHINY_PAL(TAPU_KOKO, gMonShinyPalette_TapuKoko), - SPECIES_SHINY_PAL(TAPU_LELE, gMonShinyPalette_TapuLele), - SPECIES_SHINY_PAL(TAPU_BULU, gMonShinyPalette_TapuBulu), - SPECIES_SHINY_PAL(TAPU_FINI, gMonShinyPalette_TapuFini), - SPECIES_SHINY_PAL(COSMOG, gMonShinyPalette_Cosmog), - SPECIES_SHINY_PAL(COSMOEM, gMonShinyPalette_Cosmoem), - SPECIES_SHINY_PAL(SOLGALEO, gMonShinyPalette_Solgaleo), - SPECIES_SHINY_PAL(LUNALA, gMonShinyPalette_Lunala), - SPECIES_SHINY_PAL(NIHILEGO, gMonShinyPalette_Nihilego), - SPECIES_SHINY_PAL(BUZZWOLE, gMonShinyPalette_Buzzwole), - SPECIES_SHINY_PAL(PHEROMOSA, gMonShinyPalette_Pheromosa), - SPECIES_SHINY_PAL(XURKITREE, gMonShinyPalette_Xurkitree), - SPECIES_SHINY_PAL(CELESTEELA, gMonShinyPalette_Celesteela), - SPECIES_SHINY_PAL(KARTANA, gMonShinyPalette_Kartana), - SPECIES_SHINY_PAL(GUZZLORD, gMonShinyPalette_Guzzlord), - SPECIES_SHINY_PAL(NECROZMA, gMonShinyPalette_Necrozma), - SPECIES_SHINY_PAL(MAGEARNA, gMonShinyPalette_Magearna), - SPECIES_SHINY_PAL(MARSHADOW, gMonShinyPalette_Marshadow), - SPECIES_SHINY_PAL(POIPOLE, gMonShinyPalette_Poipole), - SPECIES_SHINY_PAL(NAGANADEL, gMonShinyPalette_Naganadel), - SPECIES_SHINY_PAL(STAKATAKA, gMonShinyPalette_Stakataka), - SPECIES_SHINY_PAL(BLACEPHALON, gMonShinyPalette_Blacephalon), - SPECIES_SHINY_PAL(ZERAORA, gMonShinyPalette_Zeraora), - SPECIES_SHINY_PAL(MELTAN, gMonShinyPalette_Meltan), - SPECIES_SHINY_PAL(MELMETAL, gMonShinyPalette_Melmetal), -#endif -#if P_GEN_8_POKEMON == TRUE - SPECIES_SHINY_PAL(GROOKEY, gMonShinyPalette_Grookey), - SPECIES_SHINY_PAL(THWACKEY, gMonShinyPalette_Thwackey), - SPECIES_SHINY_PAL(RILLABOOM, gMonShinyPalette_Rillaboom), - SPECIES_SHINY_PAL(SCORBUNNY, gMonShinyPalette_Scorbunny), - SPECIES_SHINY_PAL(RABOOT, gMonShinyPalette_Raboot), - SPECIES_SHINY_PAL(CINDERACE, gMonShinyPalette_Cinderace), - SPECIES_SHINY_PAL(SOBBLE, gMonShinyPalette_Sobble), - SPECIES_SHINY_PAL(DRIZZILE, gMonShinyPalette_Drizzile), - SPECIES_SHINY_PAL(INTELEON, gMonShinyPalette_Inteleon), - SPECIES_SHINY_PAL(SKWOVET, gMonShinyPalette_Skwovet), - SPECIES_SHINY_PAL(GREEDENT, gMonShinyPalette_Greedent), - SPECIES_SHINY_PAL(ROOKIDEE, gMonShinyPalette_Rookidee), - SPECIES_SHINY_PAL(CORVISQUIRE, gMonShinyPalette_Corvisquire), - SPECIES_SHINY_PAL(CORVIKNIGHT, gMonShinyPalette_Corviknight), - SPECIES_SHINY_PAL(BLIPBUG, gMonShinyPalette_Blipbug), - SPECIES_SHINY_PAL(DOTTLER, gMonShinyPalette_Dottler), - SPECIES_SHINY_PAL(ORBEETLE, gMonShinyPalette_Orbeetle), - SPECIES_SHINY_PAL(NICKIT, gMonShinyPalette_Nickit), - SPECIES_SHINY_PAL(THIEVUL, gMonShinyPalette_Thievul), - SPECIES_SHINY_PAL(GOSSIFLEUR, gMonShinyPalette_Gossifleur), - SPECIES_SHINY_PAL(ELDEGOSS, gMonShinyPalette_Eldegoss), - SPECIES_SHINY_PAL(WOOLOO, gMonShinyPalette_Wooloo), - SPECIES_SHINY_PAL(DUBWOOL, gMonShinyPalette_Dubwool), - SPECIES_SHINY_PAL(CHEWTLE, gMonShinyPalette_Chewtle), - SPECIES_SHINY_PAL(DREDNAW, gMonShinyPalette_Drednaw), - SPECIES_SHINY_PAL(YAMPER, gMonShinyPalette_Yamper), - SPECIES_SHINY_PAL(BOLTUND, gMonShinyPalette_Boltund), - SPECIES_SHINY_PAL(ROLYCOLY, gMonShinyPalette_Rolycoly), - SPECIES_SHINY_PAL(CARKOL, gMonShinyPalette_Carkol), - SPECIES_SHINY_PAL(COALOSSAL, gMonShinyPalette_Coalossal), - SPECIES_SHINY_PAL(APPLIN, gMonShinyPalette_Applin), - SPECIES_SHINY_PAL(FLAPPLE, gMonShinyPalette_Flapple), - SPECIES_SHINY_PAL(APPLETUN, gMonShinyPalette_Appletun), - SPECIES_SHINY_PAL(SILICOBRA, gMonShinyPalette_Silicobra), - SPECIES_SHINY_PAL(SANDACONDA, gMonShinyPalette_Sandaconda), - SPECIES_SHINY_PAL(CRAMORANT, gMonShinyPalette_Cramorant), - SPECIES_SHINY_PAL(ARROKUDA, gMonShinyPalette_Arrokuda), - SPECIES_SHINY_PAL(BARRASKEWDA, gMonShinyPalette_Barraskewda), - SPECIES_SHINY_PAL(TOXEL, gMonShinyPalette_Toxel), - SPECIES_SHINY_PAL(TOXTRICITY, gMonShinyPalette_Toxtricity), - SPECIES_SHINY_PAL(SIZZLIPEDE, gMonShinyPalette_Sizzlipede), - SPECIES_SHINY_PAL(CENTISKORCH, gMonShinyPalette_Centiskorch), - SPECIES_SHINY_PAL(CLOBBOPUS, gMonShinyPalette_Clobbopus), - SPECIES_SHINY_PAL(GRAPPLOCT, gMonShinyPalette_Grapploct), - SPECIES_SHINY_PAL(SINISTEA, gMonShinyPalette_Sinistea), - SPECIES_SHINY_PAL(POLTEAGEIST, gMonShinyPalette_Polteageist), - SPECIES_SHINY_PAL(HATENNA, gMonShinyPalette_Hatenna), - SPECIES_SHINY_PAL(HATTREM, gMonShinyPalette_Hattrem), - SPECIES_SHINY_PAL(HATTERENE, gMonShinyPalette_Hatterene), - SPECIES_SHINY_PAL(IMPIDIMP, gMonShinyPalette_Impidimp), - SPECIES_SHINY_PAL(MORGREM, gMonShinyPalette_Morgrem), - SPECIES_SHINY_PAL(GRIMMSNARL, gMonShinyPalette_Grimmsnarl), - SPECIES_SHINY_PAL(OBSTAGOON, gMonShinyPalette_Obstagoon), - SPECIES_SHINY_PAL(PERRSERKER, gMonShinyPalette_Perrserker), - SPECIES_SHINY_PAL(CURSOLA, gMonShinyPalette_Cursola), - SPECIES_SHINY_PAL(SIRFETCHD, gMonShinyPalette_Sirfetchd), - SPECIES_SHINY_PAL(MR_RIME, gMonShinyPalette_MrRime), - SPECIES_SHINY_PAL(RUNERIGUS, gMonShinyPalette_Runerigus), - SPECIES_SHINY_PAL(MILCERY, gMonShinyPalette_Milcery), - SPECIES_SHINY_PAL(ALCREMIE, gMonShinyPalette_Alcremie), - SPECIES_SHINY_PAL(FALINKS, gMonShinyPalette_Falinks), - SPECIES_SHINY_PAL(PINCURCHIN, gMonShinyPalette_Pincurchin), - SPECIES_SHINY_PAL(SNOM, gMonShinyPalette_Snom), - SPECIES_SHINY_PAL(FROSMOTH, gMonShinyPalette_Frosmoth), - SPECIES_SHINY_PAL(STONJOURNER, gMonShinyPalette_Stonjourner), - SPECIES_SHINY_PAL(EISCUE, gMonShinyPalette_Eiscue), - SPECIES_SHINY_PAL(INDEEDEE, gMonShinyPalette_Indeedee), - SPECIES_SHINY_PAL(MORPEKO, gMonShinyPalette_Morpeko), - SPECIES_SHINY_PAL(CUFANT, gMonShinyPalette_Cufant), - SPECIES_SHINY_PAL(COPPERAJAH, gMonShinyPalette_Copperajah), - SPECIES_SHINY_PAL(DRACOZOLT, gMonShinyPalette_Dracozolt), - SPECIES_SHINY_PAL(ARCTOZOLT, gMonShinyPalette_Arctozolt), - SPECIES_SHINY_PAL(DRACOVISH, gMonShinyPalette_Dracovish), - SPECIES_SHINY_PAL(ARCTOVISH, gMonShinyPalette_Arctovish), - SPECIES_SHINY_PAL(DURALUDON, gMonShinyPalette_Duraludon), - SPECIES_SHINY_PAL(DREEPY, gMonShinyPalette_Dreepy), - SPECIES_SHINY_PAL(DRAKLOAK, gMonShinyPalette_Drakloak), - SPECIES_SHINY_PAL(DRAGAPULT, gMonShinyPalette_Dragapult), - SPECIES_SHINY_PAL(ZACIAN, gMonShinyPalette_Zacian), - SPECIES_SHINY_PAL(ZAMAZENTA, gMonShinyPalette_Zamazenta), - SPECIES_SHINY_PAL(ETERNATUS, gMonShinyPalette_Eternatus), - SPECIES_SHINY_PAL(KUBFU, gMonShinyPalette_Kubfu), - SPECIES_SHINY_PAL(URSHIFU, gMonShinyPalette_Urshifu), - SPECIES_SHINY_PAL(ZARUDE, gMonShinyPalette_Zarude), - SPECIES_SHINY_PAL(REGIELEKI, gMonShinyPalette_Regieleki), - SPECIES_SHINY_PAL(REGIDRAGO, gMonShinyPalette_Regidrago), - SPECIES_SHINY_PAL(GLASTRIER, gMonShinyPalette_Glastrier), - SPECIES_SHINY_PAL(SPECTRIER, gMonShinyPalette_Spectrier), - SPECIES_SHINY_PAL(CALYREX, gMonShinyPalette_Calyrex), - SPECIES_SHINY_PAL(WYRDEER, gMonShinyPalette_Wyrdeer), - SPECIES_SHINY_PAL(KLEAVOR, gMonShinyPalette_Kleavor), - SPECIES_SHINY_PAL(URSALUNA, gMonShinyPalette_Ursaluna), - SPECIES_SHINY_PAL(BASCULEGION, gMonShinyPalette_Basculegion), - SPECIES_SHINY_PAL(SNEASLER, gMonShinyPalette_Sneasler), - SPECIES_SHINY_PAL(OVERQWIL, gMonShinyPalette_Overqwil), - SPECIES_SHINY_PAL(ENAMORUS, gMonShinyPalette_Enamorus), -#endif - - SPECIES_SHINY_PAL(VENUSAUR_MEGA, gMonShinyPalette_VenusaurMega), - SPECIES_SHINY_PAL(CHARIZARD_MEGA_X, gMonShinyPalette_CharizardMegaX), - SPECIES_SHINY_PAL(CHARIZARD_MEGA_Y, gMonShinyPalette_CharizardMegaY), - SPECIES_SHINY_PAL(BLASTOISE_MEGA, gMonShinyPalette_BlastoiseMega), - SPECIES_SHINY_PAL(BEEDRILL_MEGA, gMonShinyPalette_BeedrillMega), - SPECIES_SHINY_PAL(PIDGEOT_MEGA, gMonShinyPalette_PidgeotMega), - SPECIES_SHINY_PAL(ALAKAZAM_MEGA, gMonShinyPalette_AlakazamMega), - SPECIES_SHINY_PAL(SLOWBRO_MEGA, gMonShinyPalette_SlowbroMega), - SPECIES_SHINY_PAL(GENGAR_MEGA, gMonShinyPalette_GengarMega), - SPECIES_SHINY_PAL(KANGASKHAN_MEGA, gMonShinyPalette_KangaskhanMega), - SPECIES_SHINY_PAL(PINSIR_MEGA, gMonShinyPalette_PinsirMega), - SPECIES_SHINY_PAL(GYARADOS_MEGA, gMonShinyPalette_GyaradosMega), - SPECIES_SHINY_PAL(AERODACTYL_MEGA, gMonShinyPalette_AerodactylMega), - SPECIES_SHINY_PAL(MEWTWO_MEGA_X, gMonShinyPalette_MewtwoMegaX), - SPECIES_SHINY_PAL(MEWTWO_MEGA_Y, gMonShinyPalette_MewtwoMegaY), - SPECIES_SHINY_PAL(AMPHAROS_MEGA, gMonShinyPalette_AmpharosMega), - SPECIES_SHINY_PAL(STEELIX_MEGA, gMonShinyPalette_SteelixMega), - SPECIES_SHINY_PAL(SCIZOR_MEGA, gMonShinyPalette_ScizorMega), - SPECIES_SHINY_PAL(HERACROSS_MEGA, gMonShinyPalette_HeracrossMega), - SPECIES_SHINY_PAL(HOUNDOOM_MEGA, gMonShinyPalette_HoundoomMega), - SPECIES_SHINY_PAL(TYRANITAR_MEGA, gMonShinyPalette_TyranitarMega), - SPECIES_SHINY_PAL(SCEPTILE_MEGA, gMonShinyPalette_SceptileMega), - SPECIES_SHINY_PAL(BLAZIKEN_MEGA, gMonShinyPalette_BlazikenMega), - SPECIES_SHINY_PAL(SWAMPERT_MEGA, gMonShinyPalette_SwampertMega), - SPECIES_SHINY_PAL(GARDEVOIR_MEGA, gMonShinyPalette_GardevoirMega), - SPECIES_SHINY_PAL(SABLEYE_MEGA, gMonShinyPalette_SableyeMega), - SPECIES_SHINY_PAL(MAWILE_MEGA, gMonShinyPalette_MawileMega), - SPECIES_SHINY_PAL(AGGRON_MEGA, gMonShinyPalette_AggronMega), - SPECIES_SHINY_PAL(MEDICHAM_MEGA, gMonShinyPalette_MedichamMega), - SPECIES_SHINY_PAL(MANECTRIC_MEGA, gMonShinyPalette_ManectricMega), - SPECIES_SHINY_PAL(SHARPEDO_MEGA, gMonShinyPalette_SharpedoMega), - SPECIES_SHINY_PAL(CAMERUPT_MEGA, gMonShinyPalette_CameruptMega), - SPECIES_SHINY_PAL(ALTARIA_MEGA, gMonShinyPalette_AltariaMega), - SPECIES_SHINY_PAL(BANETTE_MEGA, gMonShinyPalette_BanetteMega), - SPECIES_SHINY_PAL(ABSOL_MEGA, gMonShinyPalette_AbsolMega), - SPECIES_SHINY_PAL(GLALIE_MEGA, gMonShinyPalette_GlalieMega), - SPECIES_SHINY_PAL(SALAMENCE_MEGA, gMonShinyPalette_SalamenceMega), - SPECIES_SHINY_PAL(METAGROSS_MEGA, gMonShinyPalette_MetagrossMega), - SPECIES_SHINY_PAL(LATIAS_MEGA, gMonShinyPalette_LatiasMega), - SPECIES_SHINY_PAL(LATIOS_MEGA, gMonShinyPalette_LatiosMega), -#if P_GEN_4_POKEMON == TRUE - SPECIES_SHINY_PAL(LOPUNNY_MEGA, gMonShinyPalette_LopunnyMega), - SPECIES_SHINY_PAL(GARCHOMP_MEGA, gMonShinyPalette_GarchompMega), - SPECIES_SHINY_PAL(LUCARIO_MEGA, gMonShinyPalette_LucarioMega), - SPECIES_SHINY_PAL(ABOMASNOW_MEGA, gMonShinyPalette_AbomasnowMega), - SPECIES_SHINY_PAL(GALLADE_MEGA, gMonShinyPalette_GalladeMega), -#endif -#if P_GEN_5_POKEMON == TRUE - SPECIES_SHINY_PAL(AUDINO_MEGA, gMonShinyPalette_AudinoMega), -#endif -#if P_GEN_6_POKEMON == TRUE - SPECIES_SHINY_PAL(DIANCIE_MEGA, gMonShinyPalette_DiancieMega), -#endif - - SPECIES_SHINY_PAL(RAYQUAZA_MEGA, gMonShinyPalette_RayquazaMega), - SPECIES_SHINY_PAL(KYOGRE_PRIMAL, gMonShinyPalette_KyogrePrimal), - SPECIES_SHINY_PAL(GROUDON_PRIMAL, gMonShinyPalette_GroudonPrimal), - - SPECIES_SHINY_PAL(RATTATA_ALOLAN, gMonShinyPalette_RattataAlolan), - SPECIES_SHINY_PAL(RATICATE_ALOLAN, gMonShinyPalette_RaticateAlolan), - SPECIES_SHINY_PAL(RAICHU_ALOLAN, gMonShinyPalette_RaichuAlolan), - SPECIES_SHINY_PAL(SANDSHREW_ALOLAN, gMonShinyPalette_SandshrewAlolan), - SPECIES_SHINY_PAL(SANDSLASH_ALOLAN, gMonShinyPalette_SandslashAlolan), - SPECIES_SHINY_PAL(VULPIX_ALOLAN, gMonShinyPalette_VulpixAlolan), - SPECIES_SHINY_PAL(NINETALES_ALOLAN, gMonShinyPalette_NinetalesAlolan), - SPECIES_SHINY_PAL(DIGLETT_ALOLAN, gMonShinyPalette_DiglettAlolan), - SPECIES_SHINY_PAL(DUGTRIO_ALOLAN, gMonShinyPalette_DugtrioAlolan), - SPECIES_SHINY_PAL(MEOWTH_ALOLAN, gMonShinyPalette_MeowthAlolan), - SPECIES_SHINY_PAL(PERSIAN_ALOLAN, gMonShinyPalette_PersianAlolan), - SPECIES_SHINY_PAL(GEODUDE_ALOLAN, gMonShinyPalette_GeodudeAlolan), - SPECIES_SHINY_PAL(GRAVELER_ALOLAN, gMonShinyPalette_GravelerAlolan), - SPECIES_SHINY_PAL(GOLEM_ALOLAN, gMonShinyPalette_GolemAlolan), - SPECIES_SHINY_PAL(GRIMER_ALOLAN, gMonShinyPalette_GrimerAlolan), - SPECIES_SHINY_PAL(MUK_ALOLAN, gMonShinyPalette_MukAlolan), - SPECIES_SHINY_PAL(EXEGGUTOR_ALOLAN, gMonShinyPalette_ExeggutorAlolan), - SPECIES_SHINY_PAL(MAROWAK_ALOLAN, gMonShinyPalette_MarowakAlolan), - - SPECIES_SHINY_PAL(MEOWTH_GALARIAN, gMonShinyPalette_MeowthGalarian), - SPECIES_SHINY_PAL(PONYTA_GALARIAN, gMonShinyPalette_PonytaGalarian), - SPECIES_SHINY_PAL(RAPIDASH_GALARIAN, gMonShinyPalette_RapidashGalarian), - SPECIES_SHINY_PAL(SLOWPOKE_GALARIAN, gMonShinyPalette_SlowpokeGalarian), - SPECIES_SHINY_PAL(SLOWBRO_GALARIAN, gMonShinyPalette_SlowbroGalarian), - SPECIES_SHINY_PAL(FARFETCHD_GALARIAN, gMonShinyPalette_FarfetchdGalarian), - SPECIES_SHINY_PAL(WEEZING_GALARIAN, gMonShinyPalette_WeezingGalarian), - SPECIES_SHINY_PAL(MR_MIME_GALARIAN, gMonShinyPalette_MrMimeGalarian), - SPECIES_SHINY_PAL(ARTICUNO_GALARIAN, gMonShinyPalette_ArticunoGalarian), - SPECIES_SHINY_PAL(ZAPDOS_GALARIAN, gMonShinyPalette_ZapdosGalarian), - SPECIES_SHINY_PAL(MOLTRES_GALARIAN, gMonShinyPalette_MoltresGalarian), - SPECIES_SHINY_PAL(SLOWKING_GALARIAN, gMonShinyPalette_SlowkingGalarian), - SPECIES_SHINY_PAL(CORSOLA_GALARIAN, gMonShinyPalette_CorsolaGalarian), - SPECIES_SHINY_PAL(ZIGZAGOON_GALARIAN, gMonShinyPalette_ZigzagoonGalarian), - SPECIES_SHINY_PAL(LINOONE_GALARIAN, gMonShinyPalette_LinooneGalarian), -#if P_GEN_5_POKEMON == TRUE - SPECIES_SHINY_PAL(DARUMAKA_GALARIAN, gMonShinyPalette_DarumakaGalarian), - SPECIES_SHINY_PAL(DARMANITAN_GALARIAN, gMonShinyPalette_DarmanitanGalarian), - SPECIES_SHINY_PAL(YAMASK_GALARIAN, gMonShinyPalette_YamaskGalarian), - SPECIES_SHINY_PAL(STUNFISK_GALARIAN, gMonShinyPalette_StunfiskGalarian), -#endif - - SPECIES_SHINY_PAL(GROWLITHE_HISUIAN, gMonShinyPalette_GrowlitheHisuian), - SPECIES_SHINY_PAL(ARCANINE_HISUIAN, gMonShinyPalette_ArcanineHisuian), - SPECIES_SHINY_PAL(VOLTORB_HISUIAN, gMonShinyPalette_VoltorbHisuian), - SPECIES_SHINY_PAL(ELECTRODE_HISUIAN, gMonShinyPalette_ElectrodeHisuian), - SPECIES_SHINY_PAL(TYPHLOSION_HISUIAN, gMonShinyPalette_TyphlosionHisuian), - SPECIES_SHINY_PAL(QWILFISH_HISUIAN, gMonShinyPalette_QwilfishHisuian), - SPECIES_SHINY_PAL(SNEASEL_HISUIAN, gMonShinyPalette_SneaselHisuian), -#if P_GEN_5_POKEMON == TRUE - SPECIES_SHINY_PAL(SAMUROTT_HISUIAN, gMonShinyPalette_SamurottHisuian), - SPECIES_SHINY_PAL(LILLIGANT_HISUIAN, gMonShinyPalette_LilligantHisuian), - SPECIES_SHINY_PAL(ZORUA_HISUIAN, gMonShinyPalette_ZoruaHisuian), - SPECIES_SHINY_PAL(ZOROARK_HISUIAN, gMonShinyPalette_ZoroarkHisuian), - SPECIES_SHINY_PAL(BRAVIARY_HISUIAN, gMonShinyPalette_BraviaryHisuian), -#endif -#if P_GEN_6_POKEMON == TRUE - SPECIES_SHINY_PAL(SLIGGOO_HISUIAN, gMonShinyPalette_SliggooHisuian), - SPECIES_SHINY_PAL(GOODRA_HISUIAN, gMonShinyPalette_GoodraHisuian), - SPECIES_SHINY_PAL(AVALUGG_HISUIAN, gMonShinyPalette_AvaluggHisuian), -#endif -#if P_GEN_7_POKEMON == TRUE - SPECIES_SHINY_PAL(DECIDUEYE_HISUIAN, gMonShinyPalette_DecidueyeHisuian), -#endif - - SPECIES_SHINY_PAL(PIKACHU_COSPLAY, gMonShinyPalette_PikachuCosplay), - SPECIES_SHINY_PAL(PIKACHU_ROCK_STAR, gMonShinyPalette_PikachuRockStar), - SPECIES_SHINY_PAL(PIKACHU_BELLE, gMonShinyPalette_PikachuBelle), - SPECIES_SHINY_PAL(PIKACHU_POP_STAR, gMonShinyPalette_PikachuPopStar), - SPECIES_SHINY_PAL(PIKACHU_PH_D, gMonShinyPalette_PikachuPhD), - SPECIES_SHINY_PAL(PIKACHU_LIBRE, gMonShinyPalette_PikachuLibre), - - SPECIES_SHINY_PAL(PIKACHU_ORIGINAL_CAP, gMonShinyPalette_PikachuOriginalCap), - SPECIES_SHINY_PAL(PIKACHU_HOENN_CAP, gMonShinyPalette_PikachuHoennCap), - SPECIES_SHINY_PAL(PIKACHU_SINNOH_CAP, gMonShinyPalette_PikachuSinnohCap), - SPECIES_SHINY_PAL(PIKACHU_UNOVA_CAP, gMonShinyPalette_PikachuUnovaCap), - SPECIES_SHINY_PAL(PIKACHU_KALOS_CAP, gMonShinyPalette_PikachuKalosCap), - SPECIES_SHINY_PAL(PIKACHU_ALOLA_CAP, gMonShinyPalette_PikachuAlolaCap), - SPECIES_SHINY_PAL(PIKACHU_PARTNER_CAP, gMonShinyPalette_PikachuPartnerCap), - SPECIES_SHINY_PAL(PIKACHU_WORLD_CAP, gMonShinyPalette_PikachuWorldCap), - - SPECIES_SHINY_PAL(PICHU_SPIKY_EARED, gMonShinyPalette_PichuSpikyEared), - - SPECIES_SHINY_PAL(UNOWN_B, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_C, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_D, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_E, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_F, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_G, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_H, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_I, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_J, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_K, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_L, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_M, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_N, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_O, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_P, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_Q, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_R, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_S, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_T, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_U, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_V, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_W, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_X, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_Y, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_Z, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_EMARK, gMonShinyPalette_Unown), - SPECIES_SHINY_PAL(UNOWN_QMARK, gMonShinyPalette_Unown), - - SPECIES_SHINY_PAL(CASTFORM_SUNNY, gMonShinyPalette_CastformSunny), - SPECIES_SHINY_PAL(CASTFORM_RAINY, gMonShinyPalette_CastformRainy), - SPECIES_SHINY_PAL(CASTFORM_SNOWY, gMonShinyPalette_CastformSnowy), - - SPECIES_SHINY_PAL(DEOXYS_ATTACK, gMonShinyPalette_DeoxysAttack), - SPECIES_SHINY_PAL(DEOXYS_DEFENSE, gMonShinyPalette_DeoxysDefense), - SPECIES_SHINY_PAL(DEOXYS_SPEED, gMonShinyPalette_DeoxysSpeed), -#if P_GEN_4_POKEMON == TRUE - SPECIES_SHINY_PAL(BURMY_SANDY_CLOAK, gMonShinyPalette_BurmySandyCloak), - SPECIES_SHINY_PAL(BURMY_TRASH_CLOAK, gMonShinyPalette_BurmyTrashCloak), - - SPECIES_SHINY_PAL(WORMADAM_SANDY_CLOAK, gMonShinyPalette_WormadamSandyCloak), - SPECIES_SHINY_PAL(WORMADAM_TRASH_CLOAK, gMonShinyPalette_WormadamTrashCloak), - - SPECIES_SHINY_PAL(CHERRIM_SUNSHINE, gMonShinyPalette_CherrimSunshine), - - SPECIES_SHINY_PAL(SHELLOS_EAST_SEA, gMonShinyPalette_ShellosEastSea), - - SPECIES_SHINY_PAL(GASTRODON_EAST_SEA, gMonShinyPalette_GastrodonEastSea), - - SPECIES_SHINY_PAL(ROTOM_HEAT, gMonShinyPalette_RotomHeat), - SPECIES_SHINY_PAL(ROTOM_WASH, gMonShinyPalette_RotomWash), - SPECIES_SHINY_PAL(ROTOM_FROST, gMonShinyPalette_RotomFrost), - SPECIES_SHINY_PAL(ROTOM_FAN, gMonShinyPalette_RotomFan), - SPECIES_SHINY_PAL(ROTOM_MOW, gMonShinyPalette_RotomMow), - - SPECIES_SHINY_PAL(DIALGA_ORIGIN, gMonShinyPalette_DialgaOrigin), - SPECIES_SHINY_PAL(PALKIA_ORIGIN, gMonShinyPalette_PalkiaOrigin), - SPECIES_SHINY_PAL(GIRATINA_ORIGIN, gMonShinyPalette_GiratinaOrigin), - - SPECIES_SHINY_PAL(SHAYMIN_SKY, gMonShinyPalette_ShayminSky), - - SPECIES_SHINY_PAL(ARCEUS_FIGHTING, gMonShinyPalette_ArceusFighting), - SPECIES_SHINY_PAL(ARCEUS_FLYING, gMonShinyPalette_ArceusFlying), - SPECIES_SHINY_PAL(ARCEUS_POISON, gMonShinyPalette_ArceusPoison), - SPECIES_SHINY_PAL(ARCEUS_GROUND, gMonShinyPalette_ArceusGround), - SPECIES_SHINY_PAL(ARCEUS_ROCK, gMonShinyPalette_ArceusRock), - SPECIES_SHINY_PAL(ARCEUS_BUG, gMonShinyPalette_ArceusBug), - SPECIES_SHINY_PAL(ARCEUS_GHOST, gMonShinyPalette_ArceusGhost), - SPECIES_SHINY_PAL(ARCEUS_STEEL, gMonShinyPalette_ArceusSteel), - SPECIES_SHINY_PAL(ARCEUS_FIRE, gMonShinyPalette_ArceusFire), - SPECIES_SHINY_PAL(ARCEUS_WATER, gMonShinyPalette_ArceusWater), - SPECIES_SHINY_PAL(ARCEUS_GRASS, gMonShinyPalette_ArceusGrass), - SPECIES_SHINY_PAL(ARCEUS_ELECTRIC, gMonShinyPalette_ArceusElectric), - SPECIES_SHINY_PAL(ARCEUS_PSYCHIC, gMonShinyPalette_ArceusPsychic), - SPECIES_SHINY_PAL(ARCEUS_ICE, gMonShinyPalette_ArceusIce), - SPECIES_SHINY_PAL(ARCEUS_DRAGON, gMonShinyPalette_ArceusDragon), - SPECIES_SHINY_PAL(ARCEUS_DARK, gMonShinyPalette_ArceusDark), - SPECIES_SHINY_PAL(ARCEUS_FAIRY, gMonShinyPalette_ArceusFairy), -#endif -#if P_GEN_5_POKEMON == TRUE - SPECIES_SHINY_PAL(BASCULIN_BLUE_STRIPED, gMonShinyPalette_BasculinBlueStriped), - SPECIES_SHINY_PAL(BASCULIN_WHITE_STRIPED, gMonShinyPalette_BasculinWhiteStriped), - - SPECIES_SHINY_PAL(DARMANITAN_ZEN_MODE, gMonShinyPalette_DarmanitanZenMode), - SPECIES_SHINY_PAL(DARMANITAN_ZEN_MODE_GALARIAN, gMonShinyPalette_DarmanitanZenModeGalarian), - - SPECIES_SHINY_PAL(DEERLING_SUMMER, gMonShinyPalette_DeerlingSummer), - SPECIES_SHINY_PAL(DEERLING_AUTUMN, gMonShinyPalette_DeerlingAutumn), - SPECIES_SHINY_PAL(DEERLING_WINTER, gMonShinyPalette_DeerlingWinter), - - SPECIES_SHINY_PAL(SAWSBUCK_SUMMER, gMonShinyPalette_SawsbuckSummer), - SPECIES_SHINY_PAL(SAWSBUCK_AUTUMN, gMonShinyPalette_SawsbuckAutumn), - SPECIES_SHINY_PAL(SAWSBUCK_WINTER, gMonShinyPalette_SawsbuckWinter), - - SPECIES_SHINY_PAL(TORNADUS_THERIAN, gMonShinyPalette_TornadusTherian), - SPECIES_SHINY_PAL(THUNDURUS_THERIAN, gMonShinyPalette_ThundurusTherian), - SPECIES_SHINY_PAL(LANDORUS_THERIAN, gMonShinyPalette_LandorusTherian), - - SPECIES_SHINY_PAL(KYUREM_WHITE, gMonShinyPalette_KyuremWhite), - SPECIES_SHINY_PAL(KYUREM_BLACK, gMonShinyPalette_KyuremBlack), - - SPECIES_SHINY_PAL(KELDEO_RESOLUTE, gMonShinyPalette_KeldeoResolute), - - SPECIES_SHINY_PAL(MELOETTA_PIROUETTE, gMonShinyPalette_MeloettaPirouette), - - SPECIES_SHINY_PAL(GENESECT_DOUSE_DRIVE, gMonShinyPalette_GenesectDouseDrive), - SPECIES_SHINY_PAL(GENESECT_SHOCK_DRIVE, gMonShinyPalette_GenesectShockDrive), - SPECIES_SHINY_PAL(GENESECT_BURN_DRIVE, gMonShinyPalette_GenesectBurnDrive), - SPECIES_SHINY_PAL(GENESECT_CHILL_DRIVE, gMonShinyPalette_GenesectChillDrive), -#endif -#if P_GEN_6_POKEMON == TRUE - SPECIES_SHINY_PAL(GRENINJA_BATTLE_BOND, gMonShinyPalette_Greninja), - SPECIES_SHINY_PAL(GRENINJA_ASH, gMonShinyPalette_GreninjaAsh), - - SPECIES_SHINY_PAL(VIVILLON_POLAR, gMonShinyPalette_VivillonPolar), - SPECIES_SHINY_PAL(VIVILLON_TUNDRA, gMonShinyPalette_VivillonTundra), - SPECIES_SHINY_PAL(VIVILLON_CONTINENTAL, gMonShinyPalette_VivillonContinental), - SPECIES_SHINY_PAL(VIVILLON_GARDEN, gMonShinyPalette_VivillonGarden), - SPECIES_SHINY_PAL(VIVILLON_ELEGANT, gMonShinyPalette_VivillonElegant), - SPECIES_SHINY_PAL(VIVILLON_MEADOW, gMonShinyPalette_VivillonMeadow), - SPECIES_SHINY_PAL(VIVILLON_MODERN, gMonShinyPalette_VivillonModern), - SPECIES_SHINY_PAL(VIVILLON_MARINE, gMonShinyPalette_VivillonMarine), - SPECIES_SHINY_PAL(VIVILLON_ARCHIPELAGO, gMonShinyPalette_VivillonArchipelago), - SPECIES_SHINY_PAL(VIVILLON_HIGH_PLAINS, gMonShinyPalette_VivillonHighPlains), - SPECIES_SHINY_PAL(VIVILLON_SANDSTORM, gMonShinyPalette_VivillonSandstorm), - SPECIES_SHINY_PAL(VIVILLON_RIVER, gMonShinyPalette_VivillonRiver), - SPECIES_SHINY_PAL(VIVILLON_MONSOON, gMonShinyPalette_VivillonMonsoon), - SPECIES_SHINY_PAL(VIVILLON_SAVANNA, gMonShinyPalette_VivillonSavanna), - SPECIES_SHINY_PAL(VIVILLON_SUN, gMonShinyPalette_VivillonSun), - SPECIES_SHINY_PAL(VIVILLON_OCEAN, gMonShinyPalette_VivillonOcean), - SPECIES_SHINY_PAL(VIVILLON_JUNGLE, gMonShinyPalette_VivillonJungle), - SPECIES_SHINY_PAL(VIVILLON_FANCY, gMonShinyPalette_VivillonFancy), - SPECIES_SHINY_PAL(VIVILLON_POKE_BALL, gMonShinyPalette_VivillonPokeBall), - - SPECIES_SHINY_PAL(FLABEBE_YELLOW_FLOWER, gMonShinyPalette_FlabebeYellowFlower), - SPECIES_SHINY_PAL(FLABEBE_ORANGE_FLOWER, gMonShinyPalette_FlabebeOrangeFlower), - SPECIES_SHINY_PAL(FLABEBE_BLUE_FLOWER, gMonShinyPalette_FlabebeBlueFlower), - SPECIES_SHINY_PAL(FLABEBE_WHITE_FLOWER, gMonShinyPalette_FlabebeWhiteFlower), - - SPECIES_SHINY_PAL(FLOETTE_YELLOW_FLOWER, gMonShinyPalette_FloetteYellowFlower), - SPECIES_SHINY_PAL(FLOETTE_ORANGE_FLOWER, gMonShinyPalette_FloetteOrangeFlower), - SPECIES_SHINY_PAL(FLOETTE_BLUE_FLOWER, gMonShinyPalette_FloetteBlueFlower), - SPECIES_SHINY_PAL(FLOETTE_WHITE_FLOWER, gMonShinyPalette_FloetteWhiteFlower), - SPECIES_SHINY_PAL(FLOETTE_ETERNAL_FLOWER, gMonShinyPalette_FloetteEternalFlower), - - SPECIES_SHINY_PAL(FLORGES_YELLOW_FLOWER, gMonShinyPalette_FlorgesYellowFlower), - SPECIES_SHINY_PAL(FLORGES_ORANGE_FLOWER, gMonShinyPalette_FlorgesOrangeFlower), - SPECIES_SHINY_PAL(FLORGES_BLUE_FLOWER, gMonShinyPalette_FlorgesBlueFlower), - SPECIES_SHINY_PAL(FLORGES_WHITE_FLOWER, gMonShinyPalette_FlorgesWhiteFlower), - - SPECIES_SHINY_PAL(FURFROU_HEART_TRIM, gMonShinyPalette_FurfrouHeartTrim), - SPECIES_SHINY_PAL(FURFROU_STAR_TRIM, gMonShinyPalette_FurfrouStarTrim), - SPECIES_SHINY_PAL(FURFROU_DIAMOND_TRIM, gMonShinyPalette_FurfrouDiamondTrim), - SPECIES_SHINY_PAL(FURFROU_DEBUTANTE_TRIM, gMonShinyPalette_FurfrouDebutanteTrim), - SPECIES_SHINY_PAL(FURFROU_MATRON_TRIM, gMonShinyPalette_FurfrouMatronTrim), - SPECIES_SHINY_PAL(FURFROU_DANDY_TRIM, gMonShinyPalette_FurfrouDandyTrim), - SPECIES_SHINY_PAL(FURFROU_LA_REINE_TRIM, gMonShinyPalette_FurfrouLaReineTrim), - SPECIES_SHINY_PAL(FURFROU_KABUKI_TRIM, gMonShinyPalette_FurfrouKabukiTrim), - SPECIES_SHINY_PAL(FURFROU_PHARAOH_TRIM, gMonShinyPalette_FurfrouPharaohTrim), - - SPECIES_SHINY_PAL(MEOWSTIC_FEMALE, gMonShinyPalette_MeowsticFemale), - - SPECIES_SHINY_PAL(AEGISLASH_BLADE, gMonShinyPalette_AegislashBlade), - - SPECIES_SHINY_PAL(PUMPKABOO_SMALL, gMonShinyPalette_Pumpkaboo), - SPECIES_SHINY_PAL(PUMPKABOO_LARGE, gMonShinyPalette_Pumpkaboo), - SPECIES_SHINY_PAL(PUMPKABOO_SUPER, gMonShinyPalette_Pumpkaboo), - - SPECIES_SHINY_PAL(GOURGEIST_SMALL, gMonShinyPalette_Gourgeist), - SPECIES_SHINY_PAL(GOURGEIST_LARGE, gMonShinyPalette_Gourgeist), - SPECIES_SHINY_PAL(GOURGEIST_SUPER, gMonShinyPalette_Gourgeist), - - SPECIES_SHINY_PAL(XERNEAS_ACTIVE, gMonShinyPalette_XerneasActive), - - SPECIES_SHINY_PAL(ZYGARDE_10, gMonShinyPalette_Zygarde10), - SPECIES_SHINY_PAL(ZYGARDE_10_POWER_CONSTRUCT, gMonShinyPalette_Zygarde10), - SPECIES_SHINY_PAL(ZYGARDE_50_POWER_CONSTRUCT, gMonShinyPalette_Zygarde), - SPECIES_SHINY_PAL(ZYGARDE_COMPLETE, gMonShinyPalette_ZygardeComplete), - - SPECIES_SHINY_PAL(HOOPA_UNBOUND, gMonShinyPalette_HoopaUnbound), -#endif - -#if P_GEN_7_POKEMON == TRUE - SPECIES_SHINY_PAL(ORICORIO_POM_POM, gMonShinyPalette_OricorioPomPom), - SPECIES_SHINY_PAL(ORICORIO_PAU, gMonShinyPalette_OricorioPau), - SPECIES_SHINY_PAL(ORICORIO_SENSU, gMonShinyPalette_OricorioSensu), - - SPECIES_SHINY_PAL(ROCKRUFF_OWN_TEMPO, gMonShinyPalette_Rockruff), - - SPECIES_SHINY_PAL(LYCANROC_MIDNIGHT, gMonShinyPalette_LycanrocMidnight), - SPECIES_SHINY_PAL(LYCANROC_DUSK, gMonShinyPalette_LycanrocDusk), - - SPECIES_SHINY_PAL(WISHIWASHI_SCHOOL, gMonShinyPalette_WishiwashiSchool), - - SPECIES_SHINY_PAL(SILVALLY_FIGHTING, gMonShinyPalette_SilvallyFighting), - SPECIES_SHINY_PAL(SILVALLY_FLYING, gMonShinyPalette_SilvallyFlying), - SPECIES_SHINY_PAL(SILVALLY_POISON, gMonShinyPalette_SilvallyPoison), - SPECIES_SHINY_PAL(SILVALLY_GROUND, gMonShinyPalette_SilvallyGround), - SPECIES_SHINY_PAL(SILVALLY_ROCK, gMonShinyPalette_SilvallyRock), - SPECIES_SHINY_PAL(SILVALLY_BUG, gMonShinyPalette_SilvallyBug), - SPECIES_SHINY_PAL(SILVALLY_GHOST, gMonShinyPalette_SilvallyGhost), - SPECIES_SHINY_PAL(SILVALLY_STEEL, gMonShinyPalette_SilvallySteel), - SPECIES_SHINY_PAL(SILVALLY_FIRE, gMonShinyPalette_SilvallyFire), - SPECIES_SHINY_PAL(SILVALLY_WATER, gMonShinyPalette_SilvallyWater), - SPECIES_SHINY_PAL(SILVALLY_GRASS, gMonShinyPalette_SilvallyGrass), - SPECIES_SHINY_PAL(SILVALLY_ELECTRIC, gMonShinyPalette_SilvallyElectric), - SPECIES_SHINY_PAL(SILVALLY_PSYCHIC, gMonShinyPalette_SilvallyPsychic), - SPECIES_SHINY_PAL(SILVALLY_ICE, gMonShinyPalette_SilvallyIce), - SPECIES_SHINY_PAL(SILVALLY_DRAGON, gMonShinyPalette_SilvallyDragon), - SPECIES_SHINY_PAL(SILVALLY_DARK, gMonShinyPalette_SilvallyDark), - SPECIES_SHINY_PAL(SILVALLY_FAIRY, gMonShinyPalette_SilvallyFairy), - - SPECIES_SHINY_PAL(MINIOR_METEOR_ORANGE, gMonShinyPalette_Minior), - SPECIES_SHINY_PAL(MINIOR_METEOR_YELLOW, gMonShinyPalette_Minior), - SPECIES_SHINY_PAL(MINIOR_METEOR_GREEN, gMonShinyPalette_Minior), - SPECIES_SHINY_PAL(MINIOR_METEOR_BLUE, gMonShinyPalette_Minior), - SPECIES_SHINY_PAL(MINIOR_METEOR_INDIGO, gMonShinyPalette_Minior), - SPECIES_SHINY_PAL(MINIOR_METEOR_VIOLET, gMonShinyPalette_Minior), - SPECIES_SHINY_PAL(MINIOR_CORE_RED, gMonShinyPalette_MiniorCore), - SPECIES_SHINY_PAL(MINIOR_CORE_ORANGE, gMonShinyPalette_MiniorCore), - SPECIES_SHINY_PAL(MINIOR_CORE_YELLOW, gMonShinyPalette_MiniorCore), - SPECIES_SHINY_PAL(MINIOR_CORE_GREEN, gMonShinyPalette_MiniorCore), - SPECIES_SHINY_PAL(MINIOR_CORE_BLUE, gMonShinyPalette_MiniorCore), - SPECIES_SHINY_PAL(MINIOR_CORE_INDIGO, gMonShinyPalette_MiniorCore), - SPECIES_SHINY_PAL(MINIOR_CORE_VIOLET, gMonShinyPalette_MiniorCore), - - SPECIES_SHINY_PAL(MIMIKYU_BUSTED, gMonShinyPalette_MimikyuBusted), - - SPECIES_SHINY_PAL(NECROZMA_DUSK_MANE, gMonShinyPalette_NecrozmaDuskMane), - SPECIES_SHINY_PAL(NECROZMA_DAWN_WINGS, gMonShinyPalette_NecrozmaDawnWings), - SPECIES_SHINY_PAL(NECROZMA_ULTRA, gMonShinyPalette_NecrozmaUltra), - - SPECIES_SHINY_PAL(MAGEARNA_ORIGINAL_COLOR, gMonShinyPalette_MagearnaOriginalColor), -#endif - -#if P_GEN_8_POKEMON == TRUE - SPECIES_SHINY_PAL(CRAMORANT_GULPING, gMonShinyPalette_CramorantGulping), - SPECIES_SHINY_PAL(CRAMORANT_GORGING, gMonShinyPalette_CramorantGorging), - - SPECIES_SHINY_PAL(TOXTRICITY_LOW_KEY, gMonShinyPalette_ToxtricityLowKey), - - SPECIES_SHINY_PAL(SINISTEA_ANTIQUE, gMonShinyPalette_Sinistea), - - SPECIES_SHINY_PAL(POLTEAGEIST_ANTIQUE, gMonShinyPalette_Polteageist), - - SPECIES_SHINY_PAL(ALCREMIE_RUBY_CREAM, gMonShinyPalette_AlcremieRubyCream), - SPECIES_SHINY_PAL(ALCREMIE_MATCHA_CREAM, gMonShinyPalette_AlcremieMatchaCream), - SPECIES_SHINY_PAL(ALCREMIE_MINT_CREAM, gMonShinyPalette_AlcremieMintCream), - SPECIES_SHINY_PAL(ALCREMIE_LEMON_CREAM, gMonShinyPalette_AlcremieLemonCream), - SPECIES_SHINY_PAL(ALCREMIE_SALTED_CREAM, gMonShinyPalette_AlcremieSaltedCream), - SPECIES_SHINY_PAL(ALCREMIE_RUBY_SWIRL, gMonShinyPalette_AlcremieRubySwirl), - SPECIES_SHINY_PAL(ALCREMIE_CARAMEL_SWIRL, gMonShinyPalette_AlcremieCaramelSwirl), - SPECIES_SHINY_PAL(ALCREMIE_RAINBOW_SWIRL, gMonShinyPalette_AlcremieRainbowSwirl), - - SPECIES_SHINY_PAL(EISCUE_NOICE_FACE, gMonShinyPalette_EiscueNoiceFace), - - SPECIES_SHINY_PAL(INDEEDEE_FEMALE, gMonShinyPalette_IndeedeeFemale), - - SPECIES_SHINY_PAL(MORPEKO_HANGRY, gMonShinyPalette_MorpekoHangry), - - SPECIES_SHINY_PAL(ZACIAN_CROWNED_SWORD, gMonShinyPalette_ZacianCrownedSword), - - SPECIES_SHINY_PAL(ZAMAZENTA_CROWNED_SHIELD, gMonShinyPalette_ZamazentaCrownedShield), - - SPECIES_SHINY_PAL(ETERNATUS_ETERNAMAX, gMonShinyPalette_EternatusEternamax), - - SPECIES_SHINY_PAL(URSHIFU_RAPID_STRIKE_STYLE, gMonShinyPalette_UrshifuRapidStrikeStyle), - - SPECIES_SHINY_PAL(ZARUDE_DADA, gMonShinyPalette_ZarudeDada), - - SPECIES_SHINY_PAL(CALYREX_ICE_RIDER, gMonShinyPalette_CalyrexIceRider), - SPECIES_SHINY_PAL(CALYREX_SHADOW_RIDER, gMonShinyPalette_CalyrexShadowRider), - - SPECIES_SHINY_PAL(BASCULEGION_FEMALE, gMonShinyPalette_BasculegionFemale), - SPECIES_SHINY_PAL(ENAMORUS_THERIAN, gMonShinyPalette_EnamorusTherian), -#endif - SPECIES_SHINY_PAL(EGG, gMonPalette_Egg), -}; - -const struct CompressedSpritePalette gMonShinyPaletteTableFemale[NUM_SPECIES + 1] = -{ -#if P_GEN_4_POKEMON == TRUE - SPECIES_SHINY_PAL(COMBEE, gMonShinyPalette_CombeeF), - SPECIES_SHINY_PAL(HIPPOPOTAS, gMonShinyPalette_HippopotasF), - SPECIES_SHINY_PAL(HIPPOWDON, gMonShinyPalette_HippowdonF), -#endif -#if P_GEN_5_POKEMON == TRUE - SPECIES_SHINY_PAL(UNFEZANT, gMonShinyPalette_UnfezantF), - SPECIES_SHINY_PAL(FRILLISH, gMonShinyPalette_FrillishF), - SPECIES_SHINY_PAL(JELLICENT, gMonShinyPalette_JellicentF), -#endif -}; diff --git a/src/data/text/abilities.h b/src/data/text/abilities.h index a3bad09b1b..dc1ad9d4e5 100644 --- a/src/data/text/abilities.h +++ b/src/data/text/abilities.h @@ -282,13 +282,21 @@ static const u8 sOrichalcumPulseDescription[] = _("Summons sunlight in battle.") static const u8 sHadronEngineDescription[] = _("Field becomes Electric."); static const u8 sOpportunistDescription[] = _("Copies foe's stat change."); static const u8 sCudChewDescription[] = _("Eats a used berry again."); -static const u8 sSharpnessDescription[] = _("Strengthens cutting moves."); +static const u8 sSharpnessDescription[] = _("Strengthens slicing moves."); static const u8 sSupremeOverlordDescription[] = _("Inherits fallen's strength."); static const u8 sCostarDescription[] = _("Copies ally's stat changes."); static const u8 sToxicDebrisDescription[] = _("Throws poison spikes if hit."); static const u8 sArmorTailDescription[] = _("Protects from priority."); static const u8 sEarthEaterDescription[] = _("Eats ground to heal HP."); static const u8 sMyceliumMightDescription[] = _("Status moves never fail."); +static const u8 sHospitalityDescription[] = _("Restores ally's HP."); +static const u8 sMindsEyeDescription[] = _("Keen Eye and Scrappy."); +static const u8 sEmbodyAspectTealDescription[] = _("Raises Speed."); +static const u8 sEmbodyAspectHearthflameDescription[] = _("Raises Attack."); +static const u8 sEmbodyAspectWellspringDescription[] = _("Raises Sp. Def."); +static const u8 sEmbodyAspectCornerstoneDescription[] = _("Raises Defense."); +static const u8 sToxicChainDescription[] = _("Moves can poison."); +static const u8 sSupersweetSyrupDescription[] = _("Lowers the foe's Speed."); #if B_EXPANDED_ABILITY_NAMES == TRUE const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1] = @@ -592,6 +600,14 @@ const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1] = [ABILITY_ARMOR_TAIL] = _("Armor Tail"), [ABILITY_EARTH_EATER] = _("Earth Eater"), [ABILITY_MYCELIUM_MIGHT] = _("Mycelium Might"), + [ABILITY_HOSPITALITY] = _("Hospitality"), + [ABILITY_MINDS_EYE] = _("Mind's Eye"), + [ABILITY_EMBODY_ASPECT_TEAL] = _("Embody Aspect"), + [ABILITY_EMBODY_ASPECT_HEARTHFLAME] = _("Embody Aspect"), + [ABILITY_EMBODY_ASPECT_WELLSPRING] = _("Embody Aspect"), + [ABILITY_EMBODY_ASPECT_CORNERSTONE] = _("Embody Aspect"), + [ABILITY_TOXIC_CHAIN] = _("Toxic Chain"), + [ABILITY_SUPERSWEET_SYRUP] = _("Supersweet Syrup"), }; #else // 12 characters const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1] = @@ -895,6 +911,14 @@ const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1] = [ABILITY_ARMOR_TAIL] = _("Armor Tail"), [ABILITY_EARTH_EATER] = _("Earth Eater"), [ABILITY_MYCELIUM_MIGHT] = _("MceliumMight"), + [ABILITY_HOSPITALITY] = _("Hospitality"), + [ABILITY_MINDS_EYE] = _("Mind's Eye"), + [ABILITY_EMBODY_ASPECT_TEAL] = _("EmbodyAspect"), + [ABILITY_EMBODY_ASPECT_HEARTHFLAME] = _("EmbodyAspect"), + [ABILITY_EMBODY_ASPECT_WELLSPRING] = _("EmbodyAspect"), + [ABILITY_EMBODY_ASPECT_CORNERSTONE] = _("EmbodyAspect"), + [ABILITY_TOXIC_CHAIN] = _("Toxic Chain"), + [ABILITY_SUPERSWEET_SYRUP] = _("SuprswtSyrup"), }; #endif @@ -1199,4 +1223,12 @@ const u8 *const gAbilityDescriptionPointers[ABILITIES_COUNT] = [ABILITY_ARMOR_TAIL] = sArmorTailDescription, [ABILITY_EARTH_EATER] = sEarthEaterDescription, [ABILITY_MYCELIUM_MIGHT] = sMyceliumMightDescription, + [ABILITY_HOSPITALITY] = sHospitalityDescription, + [ABILITY_MINDS_EYE] = sMindsEyeDescription, + [ABILITY_EMBODY_ASPECT_TEAL] = sEmbodyAspectTealDescription, + [ABILITY_EMBODY_ASPECT_HEARTHFLAME] = sEmbodyAspectHearthflameDescription, + [ABILITY_EMBODY_ASPECT_WELLSPRING] = sEmbodyAspectWellspringDescription, + [ABILITY_EMBODY_ASPECT_CORNERSTONE] = sEmbodyAspectCornerstoneDescription, + [ABILITY_TOXIC_CHAIN] = sToxicChainDescription, + [ABILITY_SUPERSWEET_SYRUP] = sSupersweetSyrupDescription, }; diff --git a/src/data/text/item_descriptions.h b/src/data/text/item_descriptions.h index 0948fbe187..422549a186 100644 --- a/src/data/text/item_descriptions.h +++ b/src/data/text/item_descriptions.h @@ -3754,7 +3754,7 @@ static const u8 sContestPassDesc[] = _( "for entering\n" "Pokémon Contests."); -static const u8 sOaksParcelDesc[] = _( +static const u8 sParcelDesc[] = _( "A parcel for Prof.\n" "Oak from a Pokémon\n" "Mart's clerk."); @@ -3918,3 +3918,78 @@ static const u8 sBerserkGene[] = _( "Sharply boosts\n" "Attack, but causes\n" "lasting confusion."); + +static const u8 sFairyFeatherDesc[] = _( + "A hold item that\n" + "raises the power of\n" + "Fairy-type moves."); + +static const u8 sSyrupyAppleDesc[] = _( + "A very syrupy apple\n" + "that makes certain\n" + "Pokémon evolve."); + +static const u8 sUnremarkableTeacupDesc[] = _( + "A cracked teacup\n" + "that makes certain\n" + "Pokémon evolve."); + +static const u8 sMasterpieceTeacupDesc[] = _( + "A chipped teacup\n" + "that makes certain\n" + "Pokémon evolve."); + +static const u8 sCornerstoneMaskDesc[] = _( + "Allows Ogerpon to\n" + "wield the Rock-\n" + "type in battle."); + +static const u8 sWellspringMaskDesc[] = _( + "Allows Ogerpon to\n" + "wield the Water-\n" + "type in battle."); + +static const u8 sHearthflameMaskDesc[] = _( + "Allows Ogerpon to\n" + "wield the Fire-\n" + "type in battle."); + +static const u8 sHealthMochiDesc[] = _( + "An item that raises\n" + "the base HP of\n" + "a Pokémon."); + +static const u8 sMuscleMochiDesc[] = _( + "An item that raises\n" + "the base Attack of\n" + "a Pokémon."); + +static const u8 sResistMochiDesc[] = _( + "An item that raises\n" + "the base Defense\n" + "of a Pokémon."); + +static const u8 sGeniusMochiDesc[] = _( + "An item that raises\n" + "the base Sp. Atk.\n" + "of a Pokémon."); + +static const u8 sCleverMochiDesc[] = _( + "An item that raises\n" + "the base Sp. Def.\n" + "of a Pokémon."); + +static const u8 sSwiftMochiDesc[] = _( + "An item that raises\n" + "the base Speed of\n" + "a Pokémon."); + +static const u8 sFreshStartMochiDesc[] = _( + "An item that resets\n" + "all base points of\n" + "a Pokémon."); + +static const u8 sGlimmeringCharmDesc[] = _( + "A charm that will\n" + "raise the shards\n" + "from Tera Raids."); diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index f950c2a1aa..c321a844b1 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -214,7 +214,11 @@ static const u8 sDisableDescription[] = _( static const u8 sAcidDescription[] = _( "Sprays a hide-melting acid.\n" +#if B_UPDATED_MOVE_DATA >= GEN_4 + "May lower Sp. Def."); +#else "May lower Defense."); +#endif static const u8 sEmberDescription[] = _( "A weak fire attack that may\n" @@ -986,7 +990,11 @@ static const u8 sSunnyDayDescription[] = _( static const u8 sCrunchDescription[] = _( "Crunches with sharp fangs.\n" +#if B_UPDATED_MOVE_DATA >= GEN_4 "May lower Defense."); +#else + "May lower Sp. Def."); +#endif static const u8 sMirrorCoatDescription[] = _( "Counters the foe's special\n" @@ -3260,6 +3268,22 @@ static const u8 sHydroSteamDescription[] = _( "This move's power increases\n" "under harsh sunlight."); +static const u8 sBloodMoonDescription[] = _( + "Unleashes the blood moon.\n" + "Can't be used twice in a row."); + +static const u8 sMatchaGotchaDescription[] = _( + "Absorbs half the damage\n" + "inflicted. May cause a burn."); + +static const u8 sSyrupBombDescription[] = _( + "Lowers the foe's speed\n" + "each turn for 3 turns."); + +static const u8 sIvyCudgelDescription[] = _( + "Type changes with held mask.\n" + "High critical-hit ratio."); + const u8 gNotDoneYetDescription[] = _( "This move can't be used. Its\n" "effect is in development."); @@ -4099,4 +4123,8 @@ const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] = [MOVE_MAGICAL_TORQUE - 1] = sMagicalTorqueDescription, [MOVE_PSYBLADE - 1] = sPsybladeDescription, [MOVE_HYDRO_STEAM - 1] = sHydroSteamDescription, + [MOVE_BLOOD_MOON - 1] = sBloodMoonDescription, + [MOVE_MATCHA_GOTCHA - 1] = sMatchaGotchaDescription, + [MOVE_SYRUP_BOMB - 1] = sSyrupBombDescription, + [MOVE_IVY_CUDGEL - 1] = sIvyCudgelDescription, }; diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index 85d406dcab..01d613751e 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -1,6 +1,6 @@ #if B_EXPANDED_MOVE_NAMES == TRUE // 16 letters -const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = +const u8 gMoveNames[MOVES_COUNT_DYNAMAX][MOVE_NAME_LENGTH + 1] = { [MOVE_NONE] = _("-"), [MOVE_POUND] = _("Pound"), @@ -831,10 +831,68 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_MAGICAL_TORQUE] = _("Magical Torque"), [MOVE_PSYBLADE] = _("Psyblade"), [MOVE_HYDRO_STEAM] = _("Hydro Steam"), + [MOVE_BLOOD_MOON] = _("Blood Moon"), + [MOVE_MATCHA_GOTCHA] = _("Matcha Gotcha"), + [MOVE_SYRUP_BOMB] = _("Syrup Bomb"), + [MOVE_IVY_CUDGEL] = _("Ivy Cudgel"), + // Max Moves + [MOVE_MAX_GUARD] = _("Max Guard"), + [MOVE_MAX_STRIKE] = _("Max Strike"), + [MOVE_MAX_KNUCKLE] = _("Max Knuckle"), + [MOVE_MAX_AIRSTREAM] = _("Max Airstream"), + [MOVE_MAX_OOZE] = _("Max Ooze"), + [MOVE_MAX_QUAKE] = _("Max Quake"), + [MOVE_MAX_ROCKFALL] = _("Max Rockfall"), + [MOVE_MAX_FLUTTERBY] = _("Max Flutterby"), + [MOVE_MAX_PHANTASM] = _("Max Phantasm"), + [MOVE_MAX_STEELSPIKE] = _("Max Steelspike"), + [MOVE_MAX_FLARE] = _("Max Flare"), + [MOVE_MAX_GEYSER] = _("Max Geyser"), + [MOVE_MAX_OVERGROWTH] = _("Max Overgrowth"), + [MOVE_MAX_LIGHTNING] = _("Max Lightning"), + [MOVE_MAX_HAILSTORM] = _("Max Hailstorm"), + [MOVE_MAX_MINDSTORM] = _("Max Mindstorm"), + [MOVE_MAX_WYRMWIND] = _("Max Wyrmwind"), + [MOVE_MAX_DARKNESS] = _("Max Darkness"), + [MOVE_MAX_STARFALL] = _("Max Starfall"), + // Gigantamax Moves + [MOVE_G_MAX_VINE_LASH] = _("Gmax Vine Lash"), + [MOVE_G_MAX_WILDFIRE] = _("Gmax Wildfire"), + [MOVE_G_MAX_CANNONADE] = _("Gmax Cannonade"), + [MOVE_G_MAX_BEFUDDLE] = _("Gmax Befuddle"), + [MOVE_G_MAX_VOLT_CRASH] = _("Gmax Volt Crash"), + [MOVE_G_MAX_GOLD_RUSH] = _("Gmax Gold Rush"), + [MOVE_G_MAX_CHI_STRIKE] = _("Gmax Chi Strike"), + [MOVE_G_MAX_TERROR] = _("Gmax Terror"), + [MOVE_G_MAX_FOAM_BURST] = _("Gmax Foam Burst"), + [MOVE_G_MAX_RESONANCE] = _("Gmax Resonance"), + [MOVE_G_MAX_CUDDLE] = _("Gmax Cuddle"), + [MOVE_G_MAX_REPLENISH] = _("Gmax Replenish"), + [MOVE_G_MAX_MALODOR] = _("Gmax Malodor"), + [MOVE_G_MAX_MELTDOWN] = _("Gmax Meltdown"), + [MOVE_G_MAX_DRUM_SOLO] = _("Gmax Drum Solo"), + [MOVE_G_MAX_FIREBALL] = _("Gmax Fireball"), + [MOVE_G_MAX_HYDROSNIPE] = _("Gmax Hydrosnipe"), + [MOVE_G_MAX_WIND_RAGE] = _("Gmax Wind Rage"), + [MOVE_G_MAX_GRAVITAS] = _("Gmax Gravitas"), + [MOVE_G_MAX_STONESURGE] = _("Gmax Stonesurge"), + [MOVE_G_MAX_VOLCALITH] = _("Gmax Volcalith"), + [MOVE_G_MAX_TARTNESS] = _("Gmax Tartness"), + [MOVE_G_MAX_SWEETNESS] = _("Gmax Sweetness"), + [MOVE_G_MAX_SANDBLAST] = _("Gmax Sandblast"), + [MOVE_G_MAX_STUN_SHOCK] = _("Gmax Stun Shock"), + [MOVE_G_MAX_CENTIFERNO] = _("Gmax Centiferno"), + [MOVE_G_MAX_SMITE] = _("Gmax Smite"), + [MOVE_G_MAX_SNOOZE] = _("Gmax Snooze"), + [MOVE_G_MAX_FINALE] = _("Gmax Finale"), + [MOVE_G_MAX_STEELSURGE] = _("Gmax Steelsurge"), + [MOVE_G_MAX_DEPLETION] = _("Gmax Depletion"), + [MOVE_G_MAX_ONE_BLOW] = _("Gmax One Blow"), + [MOVE_G_MAX_RAPID_FLOW] = _("Gmax Rapid Flow"), }; #else // 12 letters -const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = +const u8 gMoveNames[MOVES_COUNT_DYNAMAX][MOVE_NAME_LENGTH + 1] = { [MOVE_NONE] = _("-"), [MOVE_POUND] = _("Pound"), @@ -1665,6 +1723,64 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_MAGICAL_TORQUE] = _("MagiclTorque"), [MOVE_PSYBLADE] = _("Psyblade"), [MOVE_HYDRO_STEAM] = _("Hydro Steam"), + [MOVE_BLOOD_MOON] = _("Blood Moon"), + [MOVE_MATCHA_GOTCHA] = _("MatchaGotcha"), + [MOVE_SYRUP_BOMB] = _("Syrup Bomb"), + [MOVE_IVY_CUDGEL] = _("Ivy Cudgel"), + // Max Moves + [MOVE_MAX_GUARD] = _("M-Guard"), + [MOVE_MAX_STRIKE] = _("M-Strike"), + [MOVE_MAX_KNUCKLE] = _("M-Knuckle"), + [MOVE_MAX_AIRSTREAM] = _("M-Airstream"), + [MOVE_MAX_OOZE] = _("M-Ooze"), + [MOVE_MAX_QUAKE] = _("M-Quake"), + [MOVE_MAX_ROCKFALL] = _("M-Rockfall"), + [MOVE_MAX_FLUTTERBY] = _("M-Flutterby"), + [MOVE_MAX_PHANTASM] = _("M-Phantasm"), + [MOVE_MAX_STEELSPIKE] = _("M-Steelspike"), + [MOVE_MAX_FLARE] = _("M-Flare"), + [MOVE_MAX_GEYSER] = _("M-Geyser"), + [MOVE_MAX_OVERGROWTH] = _("M-Overgrowth"), + [MOVE_MAX_LIGHTNING] = _("M-Lightning"), + [MOVE_MAX_HAILSTORM] = _("M-Hailstorm"), + [MOVE_MAX_MINDSTORM] = _("M-Mindstorm"), + [MOVE_MAX_WYRMWIND] = _("M-Wyrmwind"), + [MOVE_MAX_DARKNESS] = _("M-Darkness"), + [MOVE_MAX_STARFALL] = _("M-Starfall"), +// Gigantamax Moves + [MOVE_G_MAX_VINE_LASH] = _("G-Vine Lash"), + [MOVE_G_MAX_WILDFIRE] = _("G-Wildfire"), + [MOVE_G_MAX_CANNONADE] = _("G-Cannonade"), + [MOVE_G_MAX_BEFUDDLE] = _("G-Befuddle"), + [MOVE_G_MAX_VOLT_CRASH] = _("G-VoltCrash"), + [MOVE_G_MAX_GOLD_RUSH] = _("G-Gold Rush"), + [MOVE_G_MAX_CHI_STRIKE] = _("G-ChiStrike"), + [MOVE_G_MAX_TERROR] = _("G-Terror"), + [MOVE_G_MAX_FOAM_BURST] = _("G-FoamBurst"), + [MOVE_G_MAX_RESONANCE] = _("G-Resonance"), + [MOVE_G_MAX_CUDDLE] = _("G-Cuddle"), + [MOVE_G_MAX_REPLENISH] = _("G-Replenish"), + [MOVE_G_MAX_MALODOR] = _("G-Malodor"), + [MOVE_G_MAX_MELTDOWN] = _("G-Meltdown"), + [MOVE_G_MAX_DRUM_SOLO] = _("G-Drum Solo"), + [MOVE_G_MAX_FIREBALL] = _("G-Fireball"), + [MOVE_G_MAX_HYDROSNIPE] = _("G-Hydrsnipe"), + [MOVE_G_MAX_WIND_RAGE] = _("G-Wind Rage"), + [MOVE_G_MAX_GRAVITAS] = _("G-Gravitas"), + [MOVE_G_MAX_STONESURGE] = _("G-Stonesrge"), + [MOVE_G_MAX_VOLCALITH] = _("G-Volcalith"), + [MOVE_G_MAX_TARTNESS] = _("G-Tartness"), + [MOVE_G_MAX_SWEETNESS] = _("G-Sweetness"), + [MOVE_G_MAX_SANDBLAST] = _("G-Sandblast"), + [MOVE_G_MAX_STUN_SHOCK] = _("G-StunShock"), + [MOVE_G_MAX_CENTIFERNO] = _("G-Centiferno"), + [MOVE_G_MAX_SMITE] = _("G-Smite"), + [MOVE_G_MAX_SNOOZE] = _("G-Snooze"), + [MOVE_G_MAX_FINALE] = _("G-Finale"), + [MOVE_G_MAX_STEELSURGE] = _("G-Steelsrge"), + [MOVE_G_MAX_DEPLETION] = _("G-Depletion"), + [MOVE_G_MAX_ONE_BLOW] = _("G-One Blow"), + [MOVE_G_MAX_RAPID_FLOW] = _("G-Rapid Flow"), }; #endif @@ -1742,3 +1858,113 @@ const u8 *const gZMoveNames[] = [MOVE_LIGHT_THAT_BURNS_THE_SKY - FIRST_Z_MOVE] = sText_Light_That_Burns_The_Sky, [MOVE_SOUL_STEALING_7_STAR_STRIKE - FIRST_Z_MOVE] = sText_Soul_Stealing_7_Star_Strike, }; + +// Max Moves +static const u8 sText_Max_Guard[] = _("Max Guard"); +static const u8 sText_Max_Strike[] = _("Max Strike"); +static const u8 sText_Max_Knuckle[] = _("Max Knuckle"); +static const u8 sText_Max_Airstream[] = _("Max Airstream"); +static const u8 sText_Max_Ooze[] = _("Max Ooze"); +static const u8 sText_Max_Quake[] = _("Max Quake"); +static const u8 sText_Max_Rockfall[] = _("Max Rockfall"); +static const u8 sText_Max_Flutterby[] = _("Max Flutterby"); +static const u8 sText_Max_Phantasm[] = _("Max Phantasm"); +static const u8 sText_Max_Steelspike[] = _("Max Steelspike"); +static const u8 sText_Max_Flare[] = _("Max Flare"); +static const u8 sText_Max_Geyser[] = _("Max Geyser"); +static const u8 sText_Max_Overgrowth[] = _("Max Overgrowth"); +static const u8 sText_Max_Lightning[] = _("Max Lightning"); +static const u8 sText_Max_Hailstorm[] = _("Max Hailstorm"); +static const u8 sText_Max_Mindstorm[] = _("Max Mindstorm"); +static const u8 sText_Max_Wyrmwind[] = _("Max Wyrmwind"); +static const u8 sText_Max_Darkness[] = _("Max Darkness"); +static const u8 sText_Max_Starfall[] = _("Max Starfall"); +static const u8 sText_G_Max_Vine_Lash[] = _("G-Max Vine Lash"); +static const u8 sText_G_Max_Wildfire[] = _("G-Max Wildfire"); +static const u8 sText_G_Max_Cannonade[] = _("G-Max Cannonade"); +static const u8 sText_G_Max_Befuddle[] = _("G-Max Befuddle"); +static const u8 sText_G_Max_Volt_Crash[] = _("G-Max Volt Crash"); +static const u8 sText_G_Max_Gold_Rush[] = _("G-Max Gold Rush"); +static const u8 sText_G_Max_Chi_Strike[] = _("G-Max Chi Strike"); +static const u8 sText_G_Max_Terror[] = _("G-Max Terror"); +static const u8 sText_G_Max_Foam_Burst[] = _("G-Max Foam Burst"); +static const u8 sText_G_Max_Resonance[] = _("G-Max Resonance"); +static const u8 sText_G_Max_Cuddle[] = _("G-Max Cuddle"); +static const u8 sText_G_Max_Replenish[] = _("G-Max Replenish"); +static const u8 sText_G_Max_Malodor[] = _("G-Max Malodor"); +static const u8 sText_G_Max_Meltdown[] = _("G-Max Meltdown"); +static const u8 sText_G_Max_Drum_Solo[] = _("G-Max Drum Solo"); +static const u8 sText_G_Max_Fireball[] = _("G-Max Fireball"); +static const u8 sText_G_Max_Hydrosnipe[] = _("G-Max Hydrosnipe"); +static const u8 sText_G_Max_Wind_Rage[] = _("G-Max Wind Rage"); +static const u8 sText_G_Max_Gravitas[] = _("G-Max Gravitas"); +static const u8 sText_G_Max_Stonesurge[] = _("G-Max Stonesurge"); +static const u8 sText_G_Max_Volcalith[] = _("G-Max Volcalith"); +static const u8 sText_G_Max_Tartness[] = _("G-Max Tartness"); +static const u8 sText_G_Max_Sweetness[] = _("G-Max Sweetness"); +static const u8 sText_G_Max_Sandblast[] = _("G-Max Sandblast"); +static const u8 sText_G_Max_Stun_Shock[] = _("G-Max Stun Shock"); +static const u8 sText_G_Max_Centiferno[] = _("G-Max Centiferno"); +static const u8 sText_G_Max_Smite[] = _("G-Max Smite"); +static const u8 sText_G_Max_Snooze[] = _("G-Max Snooze"); +static const u8 sText_G_Max_Finale[] = _("G-Max Finale"); +static const u8 sText_G_Max_Steelsurge[] = _("G-Max Steelsurge"); +static const u8 sText_G_Max_Depletion[] = _("G-Max Depletion"); +static const u8 sText_G_Max_One_Blow[] = _("G-Max One Blow"); +static const u8 sText_G_Max_Rapid_Flow[] = _("G-Max Rapid Flow"); + +const u8 *const gMaxMoveNames[] = +{ + [MOVE_MAX_GUARD - FIRST_MAX_MOVE] = sText_Max_Guard, + [MOVE_MAX_STRIKE - FIRST_MAX_MOVE] = sText_Max_Strike, + [MOVE_MAX_KNUCKLE - FIRST_MAX_MOVE] = sText_Max_Knuckle, + [MOVE_MAX_AIRSTREAM - FIRST_MAX_MOVE] = sText_Max_Airstream, + [MOVE_MAX_OOZE - FIRST_MAX_MOVE] = sText_Max_Ooze, + [MOVE_MAX_QUAKE - FIRST_MAX_MOVE] = sText_Max_Quake, + [MOVE_MAX_ROCKFALL - FIRST_MAX_MOVE] = sText_Max_Rockfall, + [MOVE_MAX_FLUTTERBY - FIRST_MAX_MOVE] = sText_Max_Flutterby, + [MOVE_MAX_PHANTASM - FIRST_MAX_MOVE] = sText_Max_Phantasm, + [MOVE_MAX_STEELSPIKE - FIRST_MAX_MOVE] = sText_Max_Steelspike, + [MOVE_MAX_FLARE - FIRST_MAX_MOVE] = sText_Max_Flare, + [MOVE_MAX_GEYSER - FIRST_MAX_MOVE] = sText_Max_Geyser, + [MOVE_MAX_OVERGROWTH - FIRST_MAX_MOVE] = sText_Max_Overgrowth, + [MOVE_MAX_LIGHTNING - FIRST_MAX_MOVE] = sText_Max_Lightning, + [MOVE_MAX_HAILSTORM - FIRST_MAX_MOVE] = sText_Max_Hailstorm, + [MOVE_MAX_MINDSTORM - FIRST_MAX_MOVE] = sText_Max_Mindstorm, + [MOVE_MAX_WYRMWIND - FIRST_MAX_MOVE] = sText_Max_Wyrmwind, + [MOVE_MAX_DARKNESS - FIRST_MAX_MOVE] = sText_Max_Darkness, + [MOVE_MAX_STARFALL - FIRST_MAX_MOVE] = sText_Max_Starfall, + [MOVE_G_MAX_VINE_LASH - FIRST_MAX_MOVE] = sText_G_Max_Vine_Lash, + [MOVE_G_MAX_WILDFIRE - FIRST_MAX_MOVE] = sText_G_Max_Wildfire, + [MOVE_G_MAX_CANNONADE - FIRST_MAX_MOVE] = sText_G_Max_Cannonade, + [MOVE_G_MAX_BEFUDDLE - FIRST_MAX_MOVE] = sText_G_Max_Befuddle, + [MOVE_G_MAX_VOLT_CRASH - FIRST_MAX_MOVE] = sText_G_Max_Volt_Crash, + [MOVE_G_MAX_GOLD_RUSH - FIRST_MAX_MOVE] = sText_G_Max_Gold_Rush, + [MOVE_G_MAX_CHI_STRIKE - FIRST_MAX_MOVE] = sText_G_Max_Chi_Strike, + [MOVE_G_MAX_TERROR - FIRST_MAX_MOVE] = sText_G_Max_Terror, + [MOVE_G_MAX_FOAM_BURST - FIRST_MAX_MOVE] = sText_G_Max_Foam_Burst, + [MOVE_G_MAX_RESONANCE - FIRST_MAX_MOVE] = sText_G_Max_Resonance, + [MOVE_G_MAX_CUDDLE - FIRST_MAX_MOVE] = sText_G_Max_Cuddle, + [MOVE_G_MAX_REPLENISH - FIRST_MAX_MOVE] = sText_G_Max_Replenish, + [MOVE_G_MAX_MALODOR - FIRST_MAX_MOVE] = sText_G_Max_Malodor, + [MOVE_G_MAX_MELTDOWN - FIRST_MAX_MOVE] = sText_G_Max_Meltdown, + [MOVE_G_MAX_DRUM_SOLO - FIRST_MAX_MOVE] = sText_G_Max_Drum_Solo, + [MOVE_G_MAX_FIREBALL - FIRST_MAX_MOVE] = sText_G_Max_Fireball, + [MOVE_G_MAX_HYDROSNIPE - FIRST_MAX_MOVE] = sText_G_Max_Hydrosnipe, + [MOVE_G_MAX_WIND_RAGE - FIRST_MAX_MOVE] = sText_G_Max_Wind_Rage, + [MOVE_G_MAX_GRAVITAS - FIRST_MAX_MOVE] = sText_G_Max_Gravitas, + [MOVE_G_MAX_STONESURGE - FIRST_MAX_MOVE] = sText_G_Max_Stonesurge, + [MOVE_G_MAX_VOLCALITH - FIRST_MAX_MOVE] = sText_G_Max_Volcalith, + [MOVE_G_MAX_TARTNESS - FIRST_MAX_MOVE] = sText_G_Max_Tartness, + [MOVE_G_MAX_SWEETNESS - FIRST_MAX_MOVE] = sText_G_Max_Sweetness, + [MOVE_G_MAX_SANDBLAST - FIRST_MAX_MOVE] = sText_G_Max_Sandblast, + [MOVE_G_MAX_STUN_SHOCK - FIRST_MAX_MOVE] = sText_G_Max_Stun_Shock, + [MOVE_G_MAX_CENTIFERNO - FIRST_MAX_MOVE] = sText_G_Max_Centiferno, + [MOVE_G_MAX_SMITE - FIRST_MAX_MOVE] = sText_G_Max_Smite, + [MOVE_G_MAX_SNOOZE - FIRST_MAX_MOVE] = sText_G_Max_Snooze, + [MOVE_G_MAX_FINALE - FIRST_MAX_MOVE] = sText_G_Max_Finale, + [MOVE_G_MAX_STEELSURGE - FIRST_MAX_MOVE] = sText_G_Max_Steelsurge, + [MOVE_G_MAX_DEPLETION - FIRST_MAX_MOVE] = sText_G_Max_Depletion, + [MOVE_G_MAX_ONE_BLOW - FIRST_MAX_MOVE] = sText_G_Max_One_Blow, + [MOVE_G_MAX_RAPID_FLOW - FIRST_MAX_MOVE] = sText_G_Max_Rapid_Flow, +}; diff --git a/src/data/text/species_names.h b/src/data/text/species_names.h deleted file mode 100644 index e9aee3a06c..0000000000 --- a/src/data/text/species_names.h +++ /dev/null @@ -1,1341 +0,0 @@ -const u8 gSpeciesNames[NUM_SPECIES][POKEMON_NAME_LENGTH + 1] = { - [SPECIES_NONE] = _("??????????"), - [SPECIES_BULBASAUR] = _("Bulbasaur"), - [SPECIES_IVYSAUR] = _("Ivysaur"), - [SPECIES_VENUSAUR] = _("Venusaur"), - [SPECIES_CHARMANDER] = _("Charmander"), - [SPECIES_CHARMELEON] = _("Charmeleon"), - [SPECIES_CHARIZARD] = _("Charizard"), - [SPECIES_SQUIRTLE] = _("Squirtle"), - [SPECIES_WARTORTLE] = _("Wartortle"), - [SPECIES_BLASTOISE] = _("Blastoise"), - [SPECIES_CATERPIE] = _("Caterpie"), - [SPECIES_METAPOD] = _("Metapod"), - [SPECIES_BUTTERFREE] = _("Butterfree"), - [SPECIES_WEEDLE] = _("Weedle"), - [SPECIES_KAKUNA] = _("Kakuna"), - [SPECIES_BEEDRILL] = _("Beedrill"), - [SPECIES_PIDGEY] = _("Pidgey"), - [SPECIES_PIDGEOTTO] = _("Pidgeotto"), - [SPECIES_PIDGEOT] = _("Pidgeot"), - [SPECIES_RATTATA] = _("Rattata"), - [SPECIES_RATICATE] = _("Raticate"), - [SPECIES_SPEAROW] = _("Spearow"), - [SPECIES_FEAROW] = _("Fearow"), - [SPECIES_EKANS] = _("Ekans"), - [SPECIES_ARBOK] = _("Arbok"), - [SPECIES_PIKACHU] = _("Pikachu"), - [SPECIES_RAICHU] = _("Raichu"), - [SPECIES_SANDSHREW] = _("Sandshrew"), - [SPECIES_SANDSLASH] = _("Sandslash"), - [SPECIES_NIDORAN_F] = _("Nidoran♀"), - [SPECIES_NIDORINA] = _("Nidorina"), - [SPECIES_NIDOQUEEN] = _("Nidoqueen"), - [SPECIES_NIDORAN_M] = _("Nidoran♂"), - [SPECIES_NIDORINO] = _("Nidorino"), - [SPECIES_NIDOKING] = _("Nidoking"), - [SPECIES_CLEFAIRY] = _("Clefairy"), - [SPECIES_CLEFABLE] = _("Clefable"), - [SPECIES_VULPIX] = _("Vulpix"), - [SPECIES_NINETALES] = _("Ninetales"), - [SPECIES_JIGGLYPUFF] = _("Jigglypuff"), - [SPECIES_WIGGLYTUFF] = _("Wigglytuff"), - [SPECIES_ZUBAT] = _("Zubat"), - [SPECIES_GOLBAT] = _("Golbat"), - [SPECIES_ODDISH] = _("Oddish"), - [SPECIES_GLOOM] = _("Gloom"), - [SPECIES_VILEPLUME] = _("Vileplume"), - [SPECIES_PARAS] = _("Paras"), - [SPECIES_PARASECT] = _("Parasect"), - [SPECIES_VENONAT] = _("Venonat"), - [SPECIES_VENOMOTH] = _("Venomoth"), - [SPECIES_DIGLETT] = _("Diglett"), - [SPECIES_DUGTRIO] = _("Dugtrio"), - [SPECIES_MEOWTH] = _("Meowth"), - [SPECIES_PERSIAN] = _("Persian"), - [SPECIES_PSYDUCK] = _("Psyduck"), - [SPECIES_GOLDUCK] = _("Golduck"), - [SPECIES_MANKEY] = _("Mankey"), - [SPECIES_PRIMEAPE] = _("Primeape"), - [SPECIES_GROWLITHE] = _("Growlithe"), - [SPECIES_ARCANINE] = _("Arcanine"), - [SPECIES_POLIWAG] = _("Poliwag"), - [SPECIES_POLIWHIRL] = _("Poliwhirl"), - [SPECIES_POLIWRATH] = _("Poliwrath"), - [SPECIES_ABRA] = _("Abra"), - [SPECIES_KADABRA] = _("Kadabra"), - [SPECIES_ALAKAZAM] = _("Alakazam"), - [SPECIES_MACHOP] = _("Machop"), - [SPECIES_MACHOKE] = _("Machoke"), - [SPECIES_MACHAMP] = _("Machamp"), - [SPECIES_BELLSPROUT] = _("Bellsprout"), - [SPECIES_WEEPINBELL] = _("Weepinbell"), - [SPECIES_VICTREEBEL] = _("Victreebel"), - [SPECIES_TENTACOOL] = _("Tentacool"), - [SPECIES_TENTACRUEL] = _("Tentacruel"), - [SPECIES_GEODUDE] = _("Geodude"), - [SPECIES_GRAVELER] = _("Graveler"), - [SPECIES_GOLEM] = _("Golem"), - [SPECIES_PONYTA] = _("Ponyta"), - [SPECIES_RAPIDASH] = _("Rapidash"), - [SPECIES_SLOWPOKE] = _("Slowpoke"), - [SPECIES_SLOWBRO] = _("Slowbro"), - [SPECIES_MAGNEMITE] = _("Magnemite"), - [SPECIES_MAGNETON] = _("Magneton"), - [SPECIES_FARFETCHD] = _("Farfetch'd"), - [SPECIES_DODUO] = _("Doduo"), - [SPECIES_DODRIO] = _("Dodrio"), - [SPECIES_SEEL] = _("Seel"), - [SPECIES_DEWGONG] = _("Dewgong"), - [SPECIES_GRIMER] = _("Grimer"), - [SPECIES_MUK] = _("Muk"), - [SPECIES_SHELLDER] = _("Shellder"), - [SPECIES_CLOYSTER] = _("Cloyster"), - [SPECIES_GASTLY] = _("Gastly"), - [SPECIES_HAUNTER] = _("Haunter"), - [SPECIES_GENGAR] = _("Gengar"), - [SPECIES_ONIX] = _("Onix"), - [SPECIES_DROWZEE] = _("Drowzee"), - [SPECIES_HYPNO] = _("Hypno"), - [SPECIES_KRABBY] = _("Krabby"), - [SPECIES_KINGLER] = _("Kingler"), - [SPECIES_VOLTORB] = _("Voltorb"), - [SPECIES_ELECTRODE] = _("Electrode"), - [SPECIES_EXEGGCUTE] = _("Exeggcute"), - [SPECIES_EXEGGUTOR] = _("Exeggutor"), - [SPECIES_CUBONE] = _("Cubone"), - [SPECIES_MAROWAK] = _("Marowak"), - [SPECIES_HITMONLEE] = _("Hitmonlee"), - [SPECIES_HITMONCHAN] = _("Hitmonchan"), - [SPECIES_LICKITUNG] = _("Lickitung"), - [SPECIES_KOFFING] = _("Koffing"), - [SPECIES_WEEZING] = _("Weezing"), - [SPECIES_RHYHORN] = _("Rhyhorn"), - [SPECIES_RHYDON] = _("Rhydon"), - [SPECIES_CHANSEY] = _("Chansey"), - [SPECIES_TANGELA] = _("Tangela"), - [SPECIES_KANGASKHAN] = _("Kangaskhan"), - [SPECIES_HORSEA] = _("Horsea"), - [SPECIES_SEADRA] = _("Seadra"), - [SPECIES_GOLDEEN] = _("Goldeen"), - [SPECIES_SEAKING] = _("Seaking"), - [SPECIES_STARYU] = _("Staryu"), - [SPECIES_STARMIE] = _("Starmie"), - [SPECIES_MR_MIME] = _("Mr. Mime"), - [SPECIES_SCYTHER] = _("Scyther"), - [SPECIES_JYNX] = _("Jynx"), - [SPECIES_ELECTABUZZ] = _("Electabuzz"), - [SPECIES_MAGMAR] = _("Magmar"), - [SPECIES_PINSIR] = _("Pinsir"), - [SPECIES_TAUROS] = _("Tauros"), - [SPECIES_MAGIKARP] = _("Magikarp"), - [SPECIES_GYARADOS] = _("Gyarados"), - [SPECIES_LAPRAS] = _("Lapras"), - [SPECIES_DITTO] = _("Ditto"), - [SPECIES_EEVEE] = _("Eevee"), - [SPECIES_VAPOREON] = _("Vaporeon"), - [SPECIES_JOLTEON] = _("Jolteon"), - [SPECIES_FLAREON] = _("Flareon"), - [SPECIES_PORYGON] = _("Porygon"), - [SPECIES_OMANYTE] = _("Omanyte"), - [SPECIES_OMASTAR] = _("Omastar"), - [SPECIES_KABUTO] = _("Kabuto"), - [SPECIES_KABUTOPS] = _("Kabutops"), - [SPECIES_AERODACTYL] = _("Aerodactyl"), - [SPECIES_SNORLAX] = _("Snorlax"), - [SPECIES_ARTICUNO] = _("Articuno"), - [SPECIES_ZAPDOS] = _("Zapdos"), - [SPECIES_MOLTRES] = _("Moltres"), - [SPECIES_DRATINI] = _("Dratini"), - [SPECIES_DRAGONAIR] = _("Dragonair"), - [SPECIES_DRAGONITE] = _("Dragonite"), - [SPECIES_MEWTWO] = _("Mewtwo"), - [SPECIES_MEW] = _("Mew"), - [SPECIES_CHIKORITA] = _("Chikorita"), - [SPECIES_BAYLEEF] = _("Bayleef"), - [SPECIES_MEGANIUM] = _("Meganium"), - [SPECIES_CYNDAQUIL] = _("Cyndaquil"), - [SPECIES_QUILAVA] = _("Quilava"), - [SPECIES_TYPHLOSION] = _("Typhlosion"), - [SPECIES_TOTODILE] = _("Totodile"), - [SPECIES_CROCONAW] = _("Croconaw"), - [SPECIES_FERALIGATR] = _("Feraligatr"), - [SPECIES_SENTRET] = _("Sentret"), - [SPECIES_FURRET] = _("Furret"), - [SPECIES_HOOTHOOT] = _("Hoothoot"), - [SPECIES_NOCTOWL] = _("Noctowl"), - [SPECIES_LEDYBA] = _("Ledyba"), - [SPECIES_LEDIAN] = _("Ledian"), - [SPECIES_SPINARAK] = _("Spinarak"), - [SPECIES_ARIADOS] = _("Ariados"), - [SPECIES_CROBAT] = _("Crobat"), - [SPECIES_CHINCHOU] = _("Chinchou"), - [SPECIES_LANTURN] = _("Lanturn"), - [SPECIES_PICHU] = _("Pichu"), - [SPECIES_CLEFFA] = _("Cleffa"), - [SPECIES_IGGLYBUFF] = _("Igglybuff"), - [SPECIES_TOGEPI] = _("Togepi"), - [SPECIES_TOGETIC] = _("Togetic"), - [SPECIES_NATU] = _("Natu"), - [SPECIES_XATU] = _("Xatu"), - [SPECIES_MAREEP] = _("Mareep"), - [SPECIES_FLAAFFY] = _("Flaaffy"), - [SPECIES_AMPHAROS] = _("Ampharos"), - [SPECIES_BELLOSSOM] = _("Bellossom"), - [SPECIES_MARILL] = _("Marill"), - [SPECIES_AZUMARILL] = _("Azumarill"), - [SPECIES_SUDOWOODO] = _("Sudowoodo"), - [SPECIES_POLITOED] = _("Politoed"), - [SPECIES_HOPPIP] = _("Hoppip"), - [SPECIES_SKIPLOOM] = _("Skiploom"), - [SPECIES_JUMPLUFF] = _("Jumpluff"), - [SPECIES_AIPOM] = _("Aipom"), - [SPECIES_SUNKERN] = _("Sunkern"), - [SPECIES_SUNFLORA] = _("Sunflora"), - [SPECIES_YANMA] = _("Yanma"), - [SPECIES_WOOPER] = _("Wooper"), - [SPECIES_QUAGSIRE] = _("Quagsire"), - [SPECIES_ESPEON] = _("Espeon"), - [SPECIES_UMBREON] = _("Umbreon"), - [SPECIES_MURKROW] = _("Murkrow"), - [SPECIES_SLOWKING] = _("Slowking"), - [SPECIES_MISDREAVUS] = _("Misdreavus"), - [SPECIES_UNOWN] = _("Unown"), - [SPECIES_WOBBUFFET] = _("Wobbuffet"), - [SPECIES_GIRAFARIG] = _("Girafarig"), - [SPECIES_PINECO] = _("Pineco"), - [SPECIES_FORRETRESS] = _("Forretress"), - [SPECIES_DUNSPARCE] = _("Dunsparce"), - [SPECIES_GLIGAR] = _("Gligar"), - [SPECIES_STEELIX] = _("Steelix"), - [SPECIES_SNUBBULL] = _("Snubbull"), - [SPECIES_GRANBULL] = _("Granbull"), - [SPECIES_QWILFISH] = _("Qwilfish"), - [SPECIES_SCIZOR] = _("Scizor"), - [SPECIES_SHUCKLE] = _("Shuckle"), - [SPECIES_HERACROSS] = _("Heracross"), - [SPECIES_SNEASEL] = _("Sneasel"), - [SPECIES_TEDDIURSA] = _("Teddiursa"), - [SPECIES_URSARING] = _("Ursaring"), - [SPECIES_SLUGMA] = _("Slugma"), - [SPECIES_MAGCARGO] = _("Magcargo"), - [SPECIES_SWINUB] = _("Swinub"), - [SPECIES_PILOSWINE] = _("Piloswine"), - [SPECIES_CORSOLA] = _("Corsola"), - [SPECIES_REMORAID] = _("Remoraid"), - [SPECIES_OCTILLERY] = _("Octillery"), - [SPECIES_DELIBIRD] = _("Delibird"), - [SPECIES_MANTINE] = _("Mantine"), - [SPECIES_SKARMORY] = _("Skarmory"), - [SPECIES_HOUNDOUR] = _("Houndour"), - [SPECIES_HOUNDOOM] = _("Houndoom"), - [SPECIES_KINGDRA] = _("Kingdra"), - [SPECIES_PHANPY] = _("Phanpy"), - [SPECIES_DONPHAN] = _("Donphan"), - [SPECIES_PORYGON2] = _("Porygon2"), - [SPECIES_STANTLER] = _("Stantler"), - [SPECIES_SMEARGLE] = _("Smeargle"), - [SPECIES_TYROGUE] = _("Tyrogue"), - [SPECIES_HITMONTOP] = _("Hitmontop"), - [SPECIES_SMOOCHUM] = _("Smoochum"), - [SPECIES_ELEKID] = _("Elekid"), - [SPECIES_MAGBY] = _("Magby"), - [SPECIES_MILTANK] = _("Miltank"), - [SPECIES_BLISSEY] = _("Blissey"), - [SPECIES_RAIKOU] = _("Raikou"), - [SPECIES_ENTEI] = _("Entei"), - [SPECIES_SUICUNE] = _("Suicune"), - [SPECIES_LARVITAR] = _("Larvitar"), - [SPECIES_PUPITAR] = _("Pupitar"), - [SPECIES_TYRANITAR] = _("Tyranitar"), - [SPECIES_LUGIA] = _("Lugia"), - [SPECIES_HO_OH] = _("Ho-Oh"), - [SPECIES_CELEBI] = _("Celebi"), - [SPECIES_TREECKO] = _("Treecko"), - [SPECIES_GROVYLE] = _("Grovyle"), - [SPECIES_SCEPTILE] = _("Sceptile"), - [SPECIES_TORCHIC] = _("Torchic"), - [SPECIES_COMBUSKEN] = _("Combusken"), - [SPECIES_BLAZIKEN] = _("Blaziken"), - [SPECIES_MUDKIP] = _("Mudkip"), - [SPECIES_MARSHTOMP] = _("Marshtomp"), - [SPECIES_SWAMPERT] = _("Swampert"), - [SPECIES_POOCHYENA] = _("Poochyena"), - [SPECIES_MIGHTYENA] = _("Mightyena"), - [SPECIES_ZIGZAGOON] = _("Zigzagoon"), - [SPECIES_LINOONE] = _("Linoone"), - [SPECIES_WURMPLE] = _("Wurmple"), - [SPECIES_SILCOON] = _("Silcoon"), - [SPECIES_BEAUTIFLY] = _("Beautifly"), - [SPECIES_CASCOON] = _("Cascoon"), - [SPECIES_DUSTOX] = _("Dustox"), - [SPECIES_LOTAD] = _("Lotad"), - [SPECIES_LOMBRE] = _("Lombre"), - [SPECIES_LUDICOLO] = _("Ludicolo"), - [SPECIES_SEEDOT] = _("Seedot"), - [SPECIES_NUZLEAF] = _("Nuzleaf"), - [SPECIES_SHIFTRY] = _("Shiftry"), - [SPECIES_TAILLOW] = _("Taillow"), - [SPECIES_SWELLOW] = _("Swellow"), - [SPECIES_WINGULL] = _("Wingull"), - [SPECIES_PELIPPER] = _("Pelipper"), - [SPECIES_RALTS] = _("Ralts"), - [SPECIES_KIRLIA] = _("Kirlia"), - [SPECIES_GARDEVOIR] = _("Gardevoir"), - [SPECIES_SURSKIT] = _("Surskit"), - [SPECIES_MASQUERAIN] = _("Masquerain"), - [SPECIES_SHROOMISH] = _("Shroomish"), - [SPECIES_BRELOOM] = _("Breloom"), - [SPECIES_SLAKOTH] = _("Slakoth"), - [SPECIES_VIGOROTH] = _("Vigoroth"), - [SPECIES_SLAKING] = _("Slaking"), - [SPECIES_NINCADA] = _("Nincada"), - [SPECIES_NINJASK] = _("Ninjask"), - [SPECIES_SHEDINJA] = _("Shedinja"), - [SPECIES_WHISMUR] = _("Whismur"), - [SPECIES_LOUDRED] = _("Loudred"), - [SPECIES_EXPLOUD] = _("Exploud"), - [SPECIES_MAKUHITA] = _("Makuhita"), - [SPECIES_HARIYAMA] = _("Hariyama"), - [SPECIES_AZURILL] = _("Azurill"), - [SPECIES_NOSEPASS] = _("Nosepass"), - [SPECIES_SKITTY] = _("Skitty"), - [SPECIES_DELCATTY] = _("Delcatty"), - [SPECIES_SABLEYE] = _("Sableye"), - [SPECIES_MAWILE] = _("Mawile"), - [SPECIES_ARON] = _("Aron"), - [SPECIES_LAIRON] = _("Lairon"), - [SPECIES_AGGRON] = _("Aggron"), - [SPECIES_MEDITITE] = _("Meditite"), - [SPECIES_MEDICHAM] = _("Medicham"), - [SPECIES_ELECTRIKE] = _("Electrike"), - [SPECIES_MANECTRIC] = _("Manectric"), - [SPECIES_PLUSLE] = _("Plusle"), - [SPECIES_MINUN] = _("Minun"), - [SPECIES_VOLBEAT] = _("Volbeat"), - [SPECIES_ILLUMISE] = _("Illumise"), - [SPECIES_ROSELIA] = _("Roselia"), - [SPECIES_GULPIN] = _("Gulpin"), - [SPECIES_SWALOT] = _("Swalot"), - [SPECIES_CARVANHA] = _("Carvanha"), - [SPECIES_SHARPEDO] = _("Sharpedo"), - [SPECIES_WAILMER] = _("Wailmer"), - [SPECIES_WAILORD] = _("Wailord"), - [SPECIES_NUMEL] = _("Numel"), - [SPECIES_CAMERUPT] = _("Camerupt"), - [SPECIES_TORKOAL] = _("Torkoal"), - [SPECIES_SPOINK] = _("Spoink"), - [SPECIES_GRUMPIG] = _("Grumpig"), - [SPECIES_SPINDA] = _("Spinda"), - [SPECIES_TRAPINCH] = _("Trapinch"), - [SPECIES_VIBRAVA] = _("Vibrava"), - [SPECIES_FLYGON] = _("Flygon"), - [SPECIES_CACNEA] = _("Cacnea"), - [SPECIES_CACTURNE] = _("Cacturne"), - [SPECIES_SWABLU] = _("Swablu"), - [SPECIES_ALTARIA] = _("Altaria"), - [SPECIES_ZANGOOSE] = _("Zangoose"), - [SPECIES_SEVIPER] = _("Seviper"), - [SPECIES_LUNATONE] = _("Lunatone"), - [SPECIES_SOLROCK] = _("Solrock"), - [SPECIES_BARBOACH] = _("Barboach"), - [SPECIES_WHISCASH] = _("Whiscash"), - [SPECIES_CORPHISH] = _("Corphish"), - [SPECIES_CRAWDAUNT] = _("Crawdaunt"), - [SPECIES_BALTOY] = _("Baltoy"), - [SPECIES_CLAYDOL] = _("Claydol"), - [SPECIES_LILEEP] = _("Lileep"), - [SPECIES_CRADILY] = _("Cradily"), - [SPECIES_ANORITH] = _("Anorith"), - [SPECIES_ARMALDO] = _("Armaldo"), - [SPECIES_FEEBAS] = _("Feebas"), - [SPECIES_MILOTIC] = _("Milotic"), - [SPECIES_CASTFORM] = _("Castform"), - [SPECIES_KECLEON] = _("Kecleon"), - [SPECIES_SHUPPET] = _("Shuppet"), - [SPECIES_BANETTE] = _("Banette"), - [SPECIES_DUSKULL] = _("Duskull"), - [SPECIES_DUSCLOPS] = _("Dusclops"), - [SPECIES_TROPIUS] = _("Tropius"), - [SPECIES_CHIMECHO] = _("Chimecho"), - [SPECIES_ABSOL] = _("Absol"), - [SPECIES_WYNAUT] = _("Wynaut"), - [SPECIES_SNORUNT] = _("Snorunt"), - [SPECIES_GLALIE] = _("Glalie"), - [SPECIES_SPHEAL] = _("Spheal"), - [SPECIES_SEALEO] = _("Sealeo"), - [SPECIES_WALREIN] = _("Walrein"), - [SPECIES_CLAMPERL] = _("Clamperl"), - [SPECIES_HUNTAIL] = _("Huntail"), - [SPECIES_GOREBYSS] = _("Gorebyss"), - [SPECIES_RELICANTH] = _("Relicanth"), - [SPECIES_LUVDISC] = _("Luvdisc"), - [SPECIES_BAGON] = _("Bagon"), - [SPECIES_SHELGON] = _("Shelgon"), - [SPECIES_SALAMENCE] = _("Salamence"), - [SPECIES_BELDUM] = _("Beldum"), - [SPECIES_METANG] = _("Metang"), - [SPECIES_METAGROSS] = _("Metagross"), - [SPECIES_REGIROCK] = _("Regirock"), - [SPECIES_REGICE] = _("Regice"), - [SPECIES_REGISTEEL] = _("Registeel"), - [SPECIES_LATIAS] = _("Latias"), - [SPECIES_LATIOS] = _("Latios"), - [SPECIES_KYOGRE] = _("Kyogre"), - [SPECIES_GROUDON] = _("Groudon"), - [SPECIES_RAYQUAZA] = _("Rayquaza"), - [SPECIES_JIRACHI] = _("Jirachi"), - [SPECIES_DEOXYS] = _("Deoxys"), -#if P_GEN_4_POKEMON == TRUE - [SPECIES_TURTWIG] = _("Turtwig"), - [SPECIES_GROTLE] = _("Grotle"), - [SPECIES_TORTERRA] = _("Torterra"), - [SPECIES_CHIMCHAR] = _("Chimchar"), - [SPECIES_MONFERNO] = _("Monferno"), - [SPECIES_INFERNAPE] = _("Infernape"), - [SPECIES_PIPLUP] = _("Piplup"), - [SPECIES_PRINPLUP] = _("Prinplup"), - [SPECIES_EMPOLEON] = _("Empoleon"), - [SPECIES_STARLY] = _("Starly"), - [SPECIES_STARAVIA] = _("Staravia"), - [SPECIES_STARAPTOR] = _("Staraptor"), - [SPECIES_BIDOOF] = _("Bidoof"), - [SPECIES_BIBAREL] = _("Bibarel"), - [SPECIES_KRICKETOT] = _("Kricketot"), - [SPECIES_KRICKETUNE] = _("Kricketune"), - [SPECIES_SHINX] = _("Shinx"), - [SPECIES_LUXIO] = _("Luxio"), - [SPECIES_LUXRAY] = _("Luxray"), - [SPECIES_BUDEW] = _("Budew"), - [SPECIES_ROSERADE] = _("Roserade"), - [SPECIES_CRANIDOS] = _("Cranidos"), - [SPECIES_RAMPARDOS] = _("Rampardos"), - [SPECIES_SHIELDON] = _("Shieldon"), - [SPECIES_BASTIODON] = _("Bastiodon"), - [SPECIES_BURMY] = _("Burmy"), - [SPECIES_WORMADAM] = _("Wormadam"), - [SPECIES_MOTHIM] = _("Mothim"), - [SPECIES_COMBEE] = _("Combee"), - [SPECIES_VESPIQUEN] = _("Vespiquen"), - [SPECIES_PACHIRISU] = _("Pachirisu"), - [SPECIES_BUIZEL] = _("Buizel"), - [SPECIES_FLOATZEL] = _("Floatzel"), - [SPECIES_CHERUBI] = _("Cherubi"), - [SPECIES_CHERRIM] = _("Cherrim"), - [SPECIES_SHELLOS] = _("Shellos"), - [SPECIES_GASTRODON] = _("Gastrodon"), - [SPECIES_AMBIPOM] = _("Ambipom"), - [SPECIES_DRIFLOON] = _("Drifloon"), - [SPECIES_DRIFBLIM] = _("Drifblim"), - [SPECIES_BUNEARY] = _("Buneary"), - [SPECIES_LOPUNNY] = _("Lopunny"), - [SPECIES_MISMAGIUS] = _("Mismagius"), - [SPECIES_HONCHKROW] = _("Honchkrow"), - [SPECIES_GLAMEOW] = _("Glameow"), - [SPECIES_PURUGLY] = _("Purugly"), - [SPECIES_CHINGLING] = _("Chingling"), - [SPECIES_STUNKY] = _("Stunky"), - [SPECIES_SKUNTANK] = _("Skuntank"), - [SPECIES_BRONZOR] = _("Bronzor"), - [SPECIES_BRONZONG] = _("Bronzong"), - [SPECIES_BONSLY] = _("Bonsly"), - [SPECIES_MIME_JR] = _("Mime Jr."), - [SPECIES_HAPPINY] = _("Happiny"), - [SPECIES_CHATOT] = _("Chatot"), - [SPECIES_SPIRITOMB] = _("Spiritomb"), - [SPECIES_GIBLE] = _("Gible"), - [SPECIES_GABITE] = _("Gabite"), - [SPECIES_GARCHOMP] = _("Garchomp"), - [SPECIES_MUNCHLAX] = _("Munchlax"), - [SPECIES_RIOLU] = _("Riolu"), - [SPECIES_LUCARIO] = _("Lucario"), - [SPECIES_HIPPOPOTAS] = _("Hippopotas"), - [SPECIES_HIPPOWDON] = _("Hippowdon"), - [SPECIES_SKORUPI] = _("Skorupi"), - [SPECIES_DRAPION] = _("Drapion"), - [SPECIES_CROAGUNK] = _("Croagunk"), - [SPECIES_TOXICROAK] = _("Toxicroak"), - [SPECIES_CARNIVINE] = _("Carnivine"), - [SPECIES_FINNEON] = _("Finneon"), - [SPECIES_LUMINEON] = _("Lumineon"), - [SPECIES_MANTYKE] = _("Mantyke"), - [SPECIES_SNOVER] = _("Snover"), - [SPECIES_ABOMASNOW] = _("Abomasnow"), - [SPECIES_WEAVILE] = _("Weavile"), - [SPECIES_MAGNEZONE] = _("Magnezone"), - [SPECIES_LICKILICKY] = _("Lickilicky"), - [SPECIES_RHYPERIOR] = _("Rhyperior"), - [SPECIES_TANGROWTH] = _("Tangrowth"), - [SPECIES_ELECTIVIRE] = _("Electivire"), - [SPECIES_MAGMORTAR] = _("Magmortar"), - [SPECIES_TOGEKISS] = _("Togekiss"), - [SPECIES_YANMEGA] = _("Yanmega"), - [SPECIES_LEAFEON] = _("Leafeon"), - [SPECIES_GLACEON] = _("Glaceon"), - [SPECIES_GLISCOR] = _("Gliscor"), - [SPECIES_MAMOSWINE] = _("Mamoswine"), - [SPECIES_PORYGON_Z] = _("Porygon-Z"), - [SPECIES_GALLADE] = _("Gallade"), - [SPECIES_PROBOPASS] = _("Probopass"), - [SPECIES_DUSKNOIR] = _("Dusknoir"), - [SPECIES_FROSLASS] = _("Froslass"), - [SPECIES_ROTOM] = _("Rotom"), - [SPECIES_UXIE] = _("Uxie"), - [SPECIES_MESPRIT] = _("Mesprit"), - [SPECIES_AZELF] = _("Azelf"), - [SPECIES_DIALGA] = _("Dialga"), - [SPECIES_PALKIA] = _("Palkia"), - [SPECIES_HEATRAN] = _("Heatran"), - [SPECIES_REGIGIGAS] = _("Regigigas"), - [SPECIES_GIRATINA] = _("Giratina"), - [SPECIES_CRESSELIA] = _("Cresselia"), - [SPECIES_PHIONE] = _("Phione"), - [SPECIES_MANAPHY] = _("Manaphy"), - [SPECIES_DARKRAI] = _("Darkrai"), - [SPECIES_SHAYMIN] = _("Shaymin"), - [SPECIES_ARCEUS] = _("Arceus"), -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_VICTINI] = _("Victini"), - [SPECIES_SNIVY] = _("Snivy"), - [SPECIES_SERVINE] = _("Servine"), - [SPECIES_SERPERIOR] = _("Serperior"), - [SPECIES_TEPIG] = _("Tepig"), - [SPECIES_PIGNITE] = _("Pignite"), - [SPECIES_EMBOAR] = _("Emboar"), - [SPECIES_OSHAWOTT] = _("Oshawott"), - [SPECIES_DEWOTT] = _("Dewott"), - [SPECIES_SAMUROTT] = _("Samurott"), - [SPECIES_PATRAT] = _("Patrat"), - [SPECIES_WATCHOG] = _("Watchog"), - [SPECIES_LILLIPUP] = _("Lillipup"), - [SPECIES_HERDIER] = _("Herdier"), - [SPECIES_STOUTLAND] = _("Stoutland"), - [SPECIES_PURRLOIN] = _("Purrloin"), - [SPECIES_LIEPARD] = _("Liepard"), - [SPECIES_PANSAGE] = _("Pansage"), - [SPECIES_SIMISAGE] = _("Simisage"), - [SPECIES_PANSEAR] = _("Pansear"), - [SPECIES_SIMISEAR] = _("Simisear"), - [SPECIES_PANPOUR] = _("Panpour"), - [SPECIES_SIMIPOUR] = _("Simipour"), - [SPECIES_MUNNA] = _("Munna"), - [SPECIES_MUSHARNA] = _("Musharna"), - [SPECIES_PIDOVE] = _("Pidove"), - [SPECIES_TRANQUILL] = _("Tranquill"), - [SPECIES_UNFEZANT] = _("Unfezant"), - [SPECIES_BLITZLE] = _("Blitzle"), - [SPECIES_ZEBSTRIKA] = _("Zebstrika"), - [SPECIES_ROGGENROLA] = _("Roggenrola"), - [SPECIES_BOLDORE] = _("Boldore"), - [SPECIES_GIGALITH] = _("Gigalith"), - [SPECIES_WOOBAT] = _("Woobat"), - [SPECIES_SWOOBAT] = _("Swoobat"), - [SPECIES_DRILBUR] = _("Drilbur"), - [SPECIES_EXCADRILL] = _("Excadrill"), - [SPECIES_AUDINO] = _("Audino"), - [SPECIES_TIMBURR] = _("Timburr"), - [SPECIES_GURDURR] = _("Gurdurr"), - [SPECIES_CONKELDURR] = _("Conkeldurr"), - [SPECIES_TYMPOLE] = _("Tympole"), - [SPECIES_PALPITOAD] = _("Palpitoad"), - [SPECIES_SEISMITOAD] = _("Seismitoad"), - [SPECIES_THROH] = _("Throh"), - [SPECIES_SAWK] = _("Sawk"), - [SPECIES_SEWADDLE] = _("Sewaddle"), - [SPECIES_SWADLOON] = _("Swadloon"), - [SPECIES_LEAVANNY] = _("Leavanny"), - [SPECIES_VENIPEDE] = _("Venipede"), - [SPECIES_WHIRLIPEDE] = _("Whirlipede"), - [SPECIES_SCOLIPEDE] = _("Scolipede"), - [SPECIES_COTTONEE] = _("Cottonee"), - [SPECIES_WHIMSICOTT] = _("Whimsicott"), - [SPECIES_PETILIL] = _("Petilil"), - [SPECIES_LILLIGANT] = _("Lilligant"), - [SPECIES_BASCULIN] = _("Basculin"), - [SPECIES_SANDILE] = _("Sandile"), - [SPECIES_KROKOROK] = _("Krokorok"), - [SPECIES_KROOKODILE] = _("Krookodile"), - [SPECIES_DARUMAKA] = _("Darumaka"), - [SPECIES_DARMANITAN] = _("Darmanitan"), - [SPECIES_MARACTUS] = _("Maractus"), - [SPECIES_DWEBBLE] = _("Dwebble"), - [SPECIES_CRUSTLE] = _("Crustle"), - [SPECIES_SCRAGGY] = _("Scraggy"), - [SPECIES_SCRAFTY] = _("Scrafty"), - [SPECIES_SIGILYPH] = _("Sigilyph"), - [SPECIES_YAMASK] = _("Yamask"), - [SPECIES_COFAGRIGUS] = _("Cofagrigus"), - [SPECIES_TIRTOUGA] = _("Tirtouga"), - [SPECIES_CARRACOSTA] = _("Carracosta"), - [SPECIES_ARCHEN] = _("Archen"), - [SPECIES_ARCHEOPS] = _("Archeops"), - [SPECIES_TRUBBISH] = _("Trubbish"), - [SPECIES_GARBODOR] = _("Garbodor"), - [SPECIES_ZORUA] = _("Zorua"), - [SPECIES_ZOROARK] = _("Zoroark"), - [SPECIES_MINCCINO] = _("Minccino"), - [SPECIES_CINCCINO] = _("Cinccino"), - [SPECIES_GOTHITA] = _("Gothita"), - [SPECIES_GOTHORITA] = _("Gothorita"), - [SPECIES_GOTHITELLE] = _("Gothitelle"), - [SPECIES_SOLOSIS] = _("Solosis"), - [SPECIES_DUOSION] = _("Duosion"), - [SPECIES_REUNICLUS] = _("Reuniclus"), - [SPECIES_DUCKLETT] = _("Ducklett"), - [SPECIES_SWANNA] = _("Swanna"), - [SPECIES_VANILLITE] = _("Vanillite"), - [SPECIES_VANILLISH] = _("Vanillish"), - [SPECIES_VANILLUXE] = _("Vanilluxe"), - [SPECIES_DEERLING] = _("Deerling"), - [SPECIES_SAWSBUCK] = _("Sawsbuck"), - [SPECIES_EMOLGA] = _("Emolga"), - [SPECIES_KARRABLAST] = _("Karrablast"), - [SPECIES_ESCAVALIER] = _("Escavalier"), - [SPECIES_FOONGUS] = _("Foongus"), - [SPECIES_AMOONGUSS] = _("Amoonguss"), - [SPECIES_FRILLISH] = _("Frillish"), - [SPECIES_JELLICENT] = _("Jellicent"), - [SPECIES_ALOMOMOLA] = _("Alomomola"), - [SPECIES_JOLTIK] = _("Joltik"), - [SPECIES_GALVANTULA] = _("Galvantula"), - [SPECIES_FERROSEED] = _("Ferroseed"), - [SPECIES_FERROTHORN] = _("Ferrothorn"), - [SPECIES_KLINK] = _("Klink"), - [SPECIES_KLANG] = _("Klang"), - [SPECIES_KLINKLANG] = _("Klinklang"), - [SPECIES_TYNAMO] = _("Tynamo"), - [SPECIES_EELEKTRIK] = _("Eelektrik"), - [SPECIES_EELEKTROSS] = _("Eelektross"), - [SPECIES_ELGYEM] = _("Elgyem"), - [SPECIES_BEHEEYEM] = _("Beheeyem"), - [SPECIES_LITWICK] = _("Litwick"), - [SPECIES_LAMPENT] = _("Lampent"), - [SPECIES_CHANDELURE] = _("Chandelure"), - [SPECIES_AXEW] = _("Axew"), - [SPECIES_FRAXURE] = _("Fraxure"), - [SPECIES_HAXORUS] = _("Haxorus"), - [SPECIES_CUBCHOO] = _("Cubchoo"), - [SPECIES_BEARTIC] = _("Beartic"), - [SPECIES_CRYOGONAL] = _("Cryogonal"), - [SPECIES_SHELMET] = _("Shelmet"), - [SPECIES_ACCELGOR] = _("Accelgor"), - [SPECIES_STUNFISK] = _("Stunfisk"), - [SPECIES_MIENFOO] = _("Mienfoo"), - [SPECIES_MIENSHAO] = _("Mienshao"), - [SPECIES_DRUDDIGON] = _("Druddigon"), - [SPECIES_GOLETT] = _("Golett"), - [SPECIES_GOLURK] = _("Golurk"), - [SPECIES_PAWNIARD] = _("Pawniard"), - [SPECIES_BISHARP] = _("Bisharp"), - [SPECIES_BOUFFALANT] = _("Bouffalant"), - [SPECIES_RUFFLET] = _("Rufflet"), - [SPECIES_BRAVIARY] = _("Braviary"), - [SPECIES_VULLABY] = _("Vullaby"), - [SPECIES_MANDIBUZZ] = _("Mandibuzz"), - [SPECIES_HEATMOR] = _("Heatmor"), - [SPECIES_DURANT] = _("Durant"), - [SPECIES_DEINO] = _("Deino"), - [SPECIES_ZWEILOUS] = _("Zweilous"), - [SPECIES_HYDREIGON] = _("Hydreigon"), - [SPECIES_LARVESTA] = _("Larvesta"), - [SPECIES_VOLCARONA] = _("Volcarona"), - [SPECIES_COBALION] = _("Cobalion"), - [SPECIES_TERRAKION] = _("Terrakion"), - [SPECIES_VIRIZION] = _("Virizion"), - [SPECIES_TORNADUS] = _("Tornadus"), - [SPECIES_THUNDURUS] = _("Thundurus"), - [SPECIES_RESHIRAM] = _("Reshiram"), - [SPECIES_ZEKROM] = _("Zekrom"), - [SPECIES_LANDORUS] = _("Landorus"), - [SPECIES_KYUREM] = _("Kyurem"), - [SPECIES_KELDEO] = _("Keldeo"), - [SPECIES_MELOETTA] = _("Meloetta"), - [SPECIES_GENESECT] = _("Genesect"), -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_CHESPIN] = _("Chespin"), - [SPECIES_QUILLADIN] = _("Quilladin"), - [SPECIES_CHESNAUGHT] = _("Chesnaught"), - [SPECIES_FENNEKIN] = _("Fennekin"), - [SPECIES_BRAIXEN] = _("Braixen"), - [SPECIES_DELPHOX] = _("Delphox"), - [SPECIES_FROAKIE] = _("Froakie"), - [SPECIES_FROGADIER] = _("Frogadier"), - [SPECIES_GRENINJA] = _("Greninja"), - [SPECIES_BUNNELBY] = _("Bunnelby"), - [SPECIES_DIGGERSBY] = _("Diggersby"), - [SPECIES_FLETCHLING] = _("Fletchling"), - [SPECIES_FLETCHINDER] = _("Flechinder"), - [SPECIES_TALONFLAME] = _("Talonflame"), - [SPECIES_SCATTERBUG] = _("Scatterbug"), - [SPECIES_SPEWPA] = _("Spewpa"), - [SPECIES_VIVILLON] = _("Vivillon"), - [SPECIES_LITLEO] = _("Litleo"), - [SPECIES_PYROAR] = _("Pyroar"), - [SPECIES_FLABEBE] = _("Flabébé"), - [SPECIES_FLOETTE] = _("Floette"), - [SPECIES_FLORGES] = _("Florges"), - [SPECIES_SKIDDO] = _("Skiddo"), - [SPECIES_GOGOAT] = _("Gogoat"), - [SPECIES_PANCHAM] = _("Pancham"), - [SPECIES_PANGORO] = _("Pangoro"), - [SPECIES_FURFROU] = _("Furfrou"), - [SPECIES_ESPURR] = _("Espurr"), - [SPECIES_MEOWSTIC] = _("Meowstic"), - [SPECIES_HONEDGE] = _("Honedge"), - [SPECIES_DOUBLADE] = _("Doublade"), - [SPECIES_AEGISLASH] = _("Aegislash"), - [SPECIES_SPRITZEE] = _("Spritzee"), - [SPECIES_AROMATISSE] = _("Aromatisse"), - [SPECIES_SWIRLIX] = _("Swirlix"), - [SPECIES_SLURPUFF] = _("Slurpuff"), - [SPECIES_INKAY] = _("Inkay"), - [SPECIES_MALAMAR] = _("Malamar"), - [SPECIES_BINACLE] = _("Binacle"), - [SPECIES_BARBARACLE] = _("Barbaracle"), - [SPECIES_SKRELP] = _("Skrelp"), - [SPECIES_DRAGALGE] = _("Dragalge"), - [SPECIES_CLAUNCHER] = _("Clauncher"), - [SPECIES_CLAWITZER] = _("Clawitzer"), - [SPECIES_HELIOPTILE] = _("Helioptile"), - [SPECIES_HELIOLISK] = _("Heliolisk"), - [SPECIES_TYRUNT] = _("Tyrunt"), - [SPECIES_TYRANTRUM] = _("Tyrantrum"), - [SPECIES_AMAURA] = _("Amaura"), - [SPECIES_AURORUS] = _("Aurorus"), - [SPECIES_SYLVEON] = _("Sylveon"), - [SPECIES_HAWLUCHA] = _("Hawlucha"), - [SPECIES_DEDENNE] = _("Dedenne"), - [SPECIES_CARBINK] = _("Carbink"), - [SPECIES_GOOMY] = _("Goomy"), - [SPECIES_SLIGGOO] = _("Sliggoo"), - [SPECIES_GOODRA] = _("Goodra"), - [SPECIES_KLEFKI] = _("Klefki"), - [SPECIES_PHANTUMP] = _("Phantump"), - [SPECIES_TREVENANT] = _("Trevenant"), - [SPECIES_PUMPKABOO] = _("Pumpkaboo"), - [SPECIES_GOURGEIST] = _("Gourgeist"), - [SPECIES_BERGMITE] = _("Bergmite"), - [SPECIES_AVALUGG] = _("Avalugg"), - [SPECIES_NOIBAT] = _("Noibat"), - [SPECIES_NOIVERN] = _("Noivern"), - [SPECIES_XERNEAS] = _("Xerneas"), - [SPECIES_YVELTAL] = _("Yveltal"), - [SPECIES_ZYGARDE] = _("Zygarde"), - [SPECIES_DIANCIE] = _("Diancie"), - [SPECIES_HOOPA] = _("Hoopa"), - [SPECIES_VOLCANION] = _("Volcanion"), -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_ROWLET] = _("Rowlet"), - [SPECIES_DARTRIX] = _("Dartrix"), - [SPECIES_DECIDUEYE] = _("Decidueye"), - [SPECIES_LITTEN] = _("Litten"), - [SPECIES_TORRACAT] = _("Torracat"), - [SPECIES_INCINEROAR] = _("Incineroar"), - [SPECIES_POPPLIO] = _("Popplio"), - [SPECIES_BRIONNE] = _("Brionne"), - [SPECIES_PRIMARINA] = _("Primarina"), - [SPECIES_PIKIPEK] = _("Pikipek"), - [SPECIES_TRUMBEAK] = _("Trumbeak"), - [SPECIES_TOUCANNON] = _("Toucannon"), - [SPECIES_YUNGOOS] = _("Yungoos"), - [SPECIES_GUMSHOOS] = _("Gumshoos"), - [SPECIES_GRUBBIN] = _("Grubbin"), - [SPECIES_CHARJABUG] = _("Charjabug"), - [SPECIES_VIKAVOLT] = _("Vikavolt"), - [SPECIES_CRABRAWLER] = _("Crabrawler"), - [SPECIES_CRABOMINABLE] = _("Crabminabl"), - [SPECIES_ORICORIO] = _("Oricorio"), - [SPECIES_CUTIEFLY] = _("Cutiefly"), - [SPECIES_RIBOMBEE] = _("Ribombee"), - [SPECIES_ROCKRUFF] = _("Rockruff"), - [SPECIES_LYCANROC] = _("Lycanroc"), - [SPECIES_WISHIWASHI] = _("Wishiwashi"), - [SPECIES_MAREANIE] = _("Mareanie"), - [SPECIES_TOXAPEX] = _("Toxapex"), - [SPECIES_MUDBRAY] = _("Mudbray"), - [SPECIES_MUDSDALE] = _("Mudsdale"), - [SPECIES_DEWPIDER] = _("Dewpider"), - [SPECIES_ARAQUANID] = _("Araquanid"), - [SPECIES_FOMANTIS] = _("Fomantis"), - [SPECIES_LURANTIS] = _("Lurantis"), - [SPECIES_MORELULL] = _("Morelull"), - [SPECIES_SHIINOTIC] = _("Shiinotic"), - [SPECIES_SALANDIT] = _("Salandit"), - [SPECIES_SALAZZLE] = _("Salazzle"), - [SPECIES_STUFFUL] = _("Stufful"), - [SPECIES_BEWEAR] = _("Bewear"), - [SPECIES_BOUNSWEET] = _("Bounsweet"), - [SPECIES_STEENEE] = _("Steenee"), - [SPECIES_TSAREENA] = _("Tsareena"), - [SPECIES_COMFEY] = _("Comfey"), - [SPECIES_ORANGURU] = _("Oranguru"), - [SPECIES_PASSIMIAN] = _("Passimian"), - [SPECIES_WIMPOD] = _("Wimpod"), - [SPECIES_GOLISOPOD] = _("Golisopod"), - [SPECIES_SANDYGAST] = _("Sandygast"), - [SPECIES_PALOSSAND] = _("Palossand"), - [SPECIES_PYUKUMUKU] = _("Pyukumuku"), - [SPECIES_TYPE_NULL] = _("Type: Null"), - [SPECIES_SILVALLY] = _("Silvally"), - [SPECIES_MINIOR] = _("Minior"), - [SPECIES_KOMALA] = _("Komala"), - [SPECIES_TURTONATOR] = _("Turtonator"), - [SPECIES_TOGEDEMARU] = _("Togedemaru"), - [SPECIES_MIMIKYU] = _("Mimikyu"), - [SPECIES_BRUXISH] = _("Bruxish"), - [SPECIES_DRAMPA] = _("Drampa"), - [SPECIES_DHELMISE] = _("Dhelmise"), - [SPECIES_JANGMO_O] = _("Jangmo-o"), - [SPECIES_HAKAMO_O] = _("Hakamo-o"), - [SPECIES_KOMMO_O] = _("Kommo-o"), - [SPECIES_TAPU_KOKO] = _("Tapu Koko"), - [SPECIES_TAPU_LELE] = _("Tapu Lele"), - [SPECIES_TAPU_BULU] = _("Tapu Bulu"), - [SPECIES_TAPU_FINI] = _("Tapu Fini"), - [SPECIES_COSMOG] = _("Cosmog"), - [SPECIES_COSMOEM] = _("Cosmoem"), - [SPECIES_SOLGALEO] = _("Solgaleo"), - [SPECIES_LUNALA] = _("Lunala"), - [SPECIES_NIHILEGO] = _("Nihilego"), - [SPECIES_BUZZWOLE] = _("Buzzwole"), - [SPECIES_PHEROMOSA] = _("Pheromosa"), - [SPECIES_XURKITREE] = _("Xurkitree"), - [SPECIES_CELESTEELA] = _("Celesteela"), - [SPECIES_KARTANA] = _("Kartana"), - [SPECIES_GUZZLORD] = _("Guzzlord"), - [SPECIES_NECROZMA] = _("Necrozma"), - [SPECIES_MAGEARNA] = _("Magearna"), - [SPECIES_MARSHADOW] = _("Marshadow"), - [SPECIES_POIPOLE] = _("Poipole"), - [SPECIES_NAGANADEL] = _("Naganadel"), - [SPECIES_STAKATAKA] = _("Stakataka"), - [SPECIES_BLACEPHALON] = _("Blacephaln"), - [SPECIES_ZERAORA] = _("Zeraora"), - [SPECIES_MELTAN] = _("Meltan"), - [SPECIES_MELMETAL] = _("Melmetal"), -#endif -#if P_GEN_8_POKEMON == TRUE - [SPECIES_GROOKEY] = _("Grookey"), - [SPECIES_THWACKEY] = _("Thwackey"), - [SPECIES_RILLABOOM] = _("Rillaboom"), - [SPECIES_SCORBUNNY] = _("Scorbunny"), - [SPECIES_RABOOT] = _("Raboot"), - [SPECIES_CINDERACE] = _("Cinderace"), - [SPECIES_SOBBLE] = _("Sobble"), - [SPECIES_DRIZZILE] = _("Drizzile"), - [SPECIES_INTELEON] = _("Inteleon"), - [SPECIES_SKWOVET] = _("Skwovet"), - [SPECIES_GREEDENT] = _("Greedent"), - [SPECIES_ROOKIDEE] = _("Rookidee"), - [SPECIES_CORVISQUIRE] = _("Corvisquir"), - [SPECIES_CORVIKNIGHT] = _("Corviknigh"), - [SPECIES_BLIPBUG] = _("Blipbug"), - [SPECIES_DOTTLER] = _("Dottler"), - [SPECIES_ORBEETLE] = _("Orbeetle"), - [SPECIES_NICKIT] = _("Nickit"), - [SPECIES_THIEVUL] = _("Thievul"), - [SPECIES_GOSSIFLEUR] = _("Gossifleur"), - [SPECIES_ELDEGOSS] = _("Eldegoss"), - [SPECIES_WOOLOO] = _("Wooloo"), - [SPECIES_DUBWOOL] = _("Dubwool"), - [SPECIES_CHEWTLE] = _("Chewtle"), - [SPECIES_DREDNAW] = _("Drednaw"), - [SPECIES_YAMPER] = _("Yamper"), - [SPECIES_BOLTUND] = _("Boltund"), - [SPECIES_ROLYCOLY] = _("Rolycoly"), - [SPECIES_CARKOL] = _("Carkol"), - [SPECIES_COALOSSAL] = _("Coalossal"), - [SPECIES_APPLIN] = _("Applin"), - [SPECIES_FLAPPLE] = _("Flapple"), - [SPECIES_APPLETUN] = _("Appletun"), - [SPECIES_SILICOBRA] = _("Silicobra"), - [SPECIES_SANDACONDA] = _("Sandaconda"), - [SPECIES_CRAMORANT] = _("Cramorant"), - [SPECIES_ARROKUDA] = _("Arrokuda"), - [SPECIES_BARRASKEWDA] = _("Barraskewd"), - [SPECIES_TOXEL] = _("Toxel"), - [SPECIES_TOXTRICITY] = _("Toxtricity"), - [SPECIES_SIZZLIPEDE] = _("Sizzlipede"), - [SPECIES_CENTISKORCH] = _("Centiskorc"), - [SPECIES_CLOBBOPUS] = _("Clobbopus"), - [SPECIES_GRAPPLOCT] = _("Grapploct"), - [SPECIES_SINISTEA] = _("Sinistea"), - [SPECIES_POLTEAGEIST] = _("Polteageis"), - [SPECIES_HATENNA] = _("Hatenna"), - [SPECIES_HATTREM] = _("Hattrem"), - [SPECIES_HATTERENE] = _("Hatterene"), - [SPECIES_IMPIDIMP] = _("Impidimp"), - [SPECIES_MORGREM] = _("Morgrem"), - [SPECIES_GRIMMSNARL] = _("Grimmsnarl"), - [SPECIES_OBSTAGOON] = _("Obstagoon"), - [SPECIES_PERRSERKER] = _("Perrserker"), - [SPECIES_CURSOLA] = _("Cursola"), - [SPECIES_SIRFETCHD] = _("Sirfetch'd"), - [SPECIES_MR_RIME] = _("Mr. Rime"), - [SPECIES_RUNERIGUS] = _("Runerigus"), - [SPECIES_MILCERY] = _("Milcery"), - [SPECIES_ALCREMIE] = _("Alcremie"), - [SPECIES_FALINKS] = _("Falinks"), - [SPECIES_PINCURCHIN] = _("Pincurchin"), - [SPECIES_SNOM] = _("Snom"), - [SPECIES_FROSMOTH] = _("Frosmoth"), - [SPECIES_STONJOURNER] = _("Stonjourne"), - [SPECIES_EISCUE] = _("Eiscue"), - [SPECIES_INDEEDEE] = _("Indeedee"), - [SPECIES_MORPEKO] = _("Morpeko"), - [SPECIES_CUFANT] = _("Cufant"), - [SPECIES_COPPERAJAH] = _("Copperajah"), - [SPECIES_DRACOZOLT] = _("Dracozolt"), - [SPECIES_ARCTOZOLT] = _("Arctozolt"), - [SPECIES_DRACOVISH] = _("Dracovish"), - [SPECIES_ARCTOVISH] = _("Arctovish"), - [SPECIES_DURALUDON] = _("Duraludon"), - [SPECIES_DREEPY] = _("Dreepy"), - [SPECIES_DRAKLOAK] = _("Drakloak"), - [SPECIES_DRAGAPULT] = _("Dragapult"), - [SPECIES_ZACIAN] = _("Zacian"), - [SPECIES_ZAMAZENTA] = _("Zamazenta"), - [SPECIES_ETERNATUS] = _("Eternatus"), - [SPECIES_KUBFU] = _("Kubfu"), - [SPECIES_URSHIFU] = _("Urshifu"), - [SPECIES_ZARUDE] = _("Zarude"), - [SPECIES_REGIELEKI] = _("Regieleki"), - [SPECIES_REGIDRAGO] = _("Regidrago"), - [SPECIES_GLASTRIER] = _("Glastrier"), - [SPECIES_SPECTRIER] = _("Spectrier"), - [SPECIES_CALYREX] = _("Calyrex"), - [SPECIES_WYRDEER] = _("Wyrdeer"), - [SPECIES_KLEAVOR] = _("Kleavor"), - [SPECIES_URSALUNA] = _("Ursaluna"), - [SPECIES_BASCULEGION] = _("Bsculegion"), - [SPECIES_SNEASLER] = _("Sneasler"), - [SPECIES_OVERQWIL] = _("Overqwil"), - [SPECIES_ENAMORUS] = _("Enamorus"), -#endif - - // Megas - [SPECIES_VENUSAUR_MEGA] = _("Venusaur"), - [SPECIES_CHARIZARD_MEGA_X] = _("Charizard"), - [SPECIES_CHARIZARD_MEGA_Y] = _("Charizard"), - [SPECIES_BLASTOISE_MEGA] = _("Blastoise"), - [SPECIES_BEEDRILL_MEGA] = _("Beedrill"), - [SPECIES_PIDGEOT_MEGA] = _("Pidgeot"), - [SPECIES_ALAKAZAM_MEGA] = _("Alakazam"), - [SPECIES_SLOWBRO_MEGA] = _("Slowbro"), - [SPECIES_GENGAR_MEGA] = _("Gengar"), - [SPECIES_KANGASKHAN_MEGA] = _("Kangaskhan"), - [SPECIES_PINSIR_MEGA] = _("Pinsir"), - [SPECIES_GYARADOS_MEGA] = _("Gyarados"), - [SPECIES_AERODACTYL_MEGA] = _("Aerodactyl"), - [SPECIES_MEWTWO_MEGA_X] = _("Mewtwo"), - [SPECIES_MEWTWO_MEGA_Y] = _("Mewtwo"), - [SPECIES_AMPHAROS_MEGA] = _("Ampharos"), - [SPECIES_STEELIX_MEGA] = _("Steelix"), - [SPECIES_SCIZOR_MEGA] = _("Scizor"), - [SPECIES_HERACROSS_MEGA] = _("Heracross"), - [SPECIES_HOUNDOOM_MEGA] = _("Houndoom"), - [SPECIES_TYRANITAR_MEGA] = _("Tyranitar"), - [SPECIES_SCEPTILE_MEGA] = _("Sceptile"), - [SPECIES_BLAZIKEN_MEGA] = _("Blaziken"), - [SPECIES_SWAMPERT_MEGA] = _("Swampert"), - [SPECIES_GARDEVOIR_MEGA] = _("Gardevoir"), - [SPECIES_SABLEYE_MEGA] = _("Sableye"), - [SPECIES_MAWILE_MEGA] = _("Mawile"), - [SPECIES_AGGRON_MEGA] = _("Aggron"), - [SPECIES_MEDICHAM_MEGA] = _("Medicham"), - [SPECIES_MANECTRIC_MEGA] = _("Manectric"), - [SPECIES_SHARPEDO_MEGA] = _("Sharpedo"), - [SPECIES_CAMERUPT_MEGA] = _("Camerupt"), - [SPECIES_ALTARIA_MEGA] = _("Altaria"), - [SPECIES_BANETTE_MEGA] = _("Banette"), - [SPECIES_ABSOL_MEGA] = _("Absol"), - [SPECIES_GLALIE_MEGA] = _("Glalie"), - [SPECIES_SALAMENCE_MEGA] = _("Salamence"), - [SPECIES_METAGROSS_MEGA] = _("Metagross"), - [SPECIES_LATIAS_MEGA] = _("Latias"), - [SPECIES_LATIOS_MEGA] = _("Latios"), -#if P_GEN_4_POKEMON == TRUE - [SPECIES_LOPUNNY_MEGA] = _("Lopunny"), - [SPECIES_GARCHOMP_MEGA] = _("Garchomp"), - [SPECIES_LUCARIO_MEGA] = _("Lucario"), - [SPECIES_ABOMASNOW_MEGA] = _("Abomasnow"), - [SPECIES_GALLADE_MEGA] = _("Gallade"), -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_AUDINO_MEGA] = _("Audino"), -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_DIANCIE_MEGA] = _("Diancie"), -#endif - // Special Mega + Primals - [SPECIES_RAYQUAZA_MEGA] = _("Rayquaza"), - [SPECIES_KYOGRE_PRIMAL] = _("Kyogre"), - [SPECIES_GROUDON_PRIMAL] = _("Groudon"), - - // Alolan Forms - [SPECIES_RATTATA_ALOLAN] = _("Rattata"), - [SPECIES_RATICATE_ALOLAN] = _("Raticate"), - [SPECIES_RAICHU_ALOLAN] = _("Raichu"), - [SPECIES_SANDSHREW_ALOLAN] = _("Sandshrew"), - [SPECIES_SANDSLASH_ALOLAN] = _("Sandslash"), - [SPECIES_VULPIX_ALOLAN] = _("Vulpix"), - [SPECIES_NINETALES_ALOLAN] = _("Ninetales"), - [SPECIES_DIGLETT_ALOLAN] = _("Diglett"), - [SPECIES_DUGTRIO_ALOLAN] = _("Dugtrio"), - [SPECIES_MEOWTH_ALOLAN] = _("Meowth"), - [SPECIES_PERSIAN_ALOLAN] = _("Persian"), - [SPECIES_GEODUDE_ALOLAN] = _("Geodude"), - [SPECIES_GRAVELER_ALOLAN] = _("Graveler"), - [SPECIES_GOLEM_ALOLAN] = _("Golem"), - [SPECIES_GRIMER_ALOLAN] = _("Grimer"), - [SPECIES_MUK_ALOLAN] = _("Muk"), - [SPECIES_EXEGGUTOR_ALOLAN] = _("Exeggutor"), - [SPECIES_MAROWAK_ALOLAN] = _("Marowak"), - - // Galarian Forms - [SPECIES_MEOWTH_GALARIAN] = _("Meowth"), - [SPECIES_PONYTA_GALARIAN] = _("Ponyta"), - [SPECIES_RAPIDASH_GALARIAN] = _("Rapidash"), - [SPECIES_SLOWPOKE_GALARIAN] = _("Slowpoke"), - [SPECIES_SLOWBRO_GALARIAN] = _("Slowbro"), - [SPECIES_FARFETCHD_GALARIAN] = _("Farfetch'd"), - [SPECIES_WEEZING_GALARIAN] = _("Weezing"), - [SPECIES_MR_MIME_GALARIAN] = _("Mr. Mime"), - [SPECIES_ARTICUNO_GALARIAN] = _("Articuno"), - [SPECIES_ZAPDOS_GALARIAN] = _("Zapdos"), - [SPECIES_MOLTRES_GALARIAN] = _("Moltres"), - [SPECIES_SLOWKING_GALARIAN] = _("Slowking"), - [SPECIES_CORSOLA_GALARIAN] = _("Corsola"), - [SPECIES_ZIGZAGOON_GALARIAN] = _("Zigzagoon"), - [SPECIES_LINOONE_GALARIAN] = _("Linoone"), -#if P_GEN_5_POKEMON == TRUE - [SPECIES_DARUMAKA_GALARIAN] = _("Darumaka"), - [SPECIES_DARMANITAN_GALARIAN] = _("Darmanitan"), - [SPECIES_YAMASK_GALARIAN] = _("Yamask"), - [SPECIES_STUNFISK_GALARIAN] = _("Stunfisk"), -#endif - -//Hisuian Forms - [SPECIES_GROWLITHE_HISUIAN] = _("Growlithe"), - [SPECIES_ARCANINE_HISUIAN] = _("Arcanine"), - [SPECIES_VOLTORB_HISUIAN] = _("Voltorb"), - [SPECIES_ELECTRODE_HISUIAN] = _("Electrode"), - [SPECIES_TYPHLOSION_HISUIAN] = _("Typhlosion"), - [SPECIES_QWILFISH_HISUIAN] = _("Qwilfish"), - [SPECIES_SNEASEL_HISUIAN] = _("Sneasel"), -#if P_GEN_5_POKEMON == TRUE - [SPECIES_SAMUROTT_HISUIAN] = _("Samurott"), - [SPECIES_LILLIGANT_HISUIAN] = _("Lilligant"), - [SPECIES_ZORUA_HISUIAN] = _("Zorua"), - [SPECIES_ZOROARK_HISUIAN] = _("Zoroark"), - [SPECIES_BRAVIARY_HISUIAN] = _("Braviary"), -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_SLIGGOO_HISUIAN] = _("Sliggoo"), - [SPECIES_GOODRA_HISUIAN] = _("Goodra"), - [SPECIES_AVALUGG_HISUIAN] = _("Avalugg"), -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_DECIDUEYE_HISUIAN] = _("Decidueye"), -#endif - - // Cosplay Pikachu - [SPECIES_PIKACHU_COSPLAY] = _("Pikachu"), - [SPECIES_PIKACHU_ROCK_STAR] = _("Pikachu"), - [SPECIES_PIKACHU_BELLE] = _("Pikachu"), - [SPECIES_PIKACHU_POP_STAR] = _("Pikachu"), - [SPECIES_PIKACHU_PH_D] = _("Pikachu"), - [SPECIES_PIKACHU_LIBRE] = _("Pikachu"), - // Cap Pikachu - [SPECIES_PIKACHU_ORIGINAL_CAP] = _("Pikachu"), - [SPECIES_PIKACHU_HOENN_CAP] = _("Pikachu"), - [SPECIES_PIKACHU_SINNOH_CAP] = _("Pikachu"), - [SPECIES_PIKACHU_UNOVA_CAP] = _("Pikachu"), - [SPECIES_PIKACHU_KALOS_CAP] = _("Pikachu"), - [SPECIES_PIKACHU_ALOLA_CAP] = _("Pikachu"), - [SPECIES_PIKACHU_PARTNER_CAP] = _("Pikachu"), - [SPECIES_PIKACHU_WORLD_CAP] = _("Pikachu"), - // Pichu - [SPECIES_PICHU_SPIKY_EARED] = _("Pichu"), - // Unown - [SPECIES_UNOWN_B] = _("Unown"), - [SPECIES_UNOWN_C] = _("Unown"), - [SPECIES_UNOWN_D] = _("Unown"), - [SPECIES_UNOWN_E] = _("Unown"), - [SPECIES_UNOWN_F] = _("Unown"), - [SPECIES_UNOWN_G] = _("Unown"), - [SPECIES_UNOWN_H] = _("Unown"), - [SPECIES_UNOWN_I] = _("Unown"), - [SPECIES_UNOWN_J] = _("Unown"), - [SPECIES_UNOWN_K] = _("Unown"), - [SPECIES_UNOWN_L] = _("Unown"), - [SPECIES_UNOWN_M] = _("Unown"), - [SPECIES_UNOWN_N] = _("Unown"), - [SPECIES_UNOWN_O] = _("Unown"), - [SPECIES_UNOWN_P] = _("Unown"), - [SPECIES_UNOWN_Q] = _("Unown"), - [SPECIES_UNOWN_R] = _("Unown"), - [SPECIES_UNOWN_S] = _("Unown"), - [SPECIES_UNOWN_T] = _("Unown"), - [SPECIES_UNOWN_U] = _("Unown"), - [SPECIES_UNOWN_V] = _("Unown"), - [SPECIES_UNOWN_W] = _("Unown"), - [SPECIES_UNOWN_X] = _("Unown"), - [SPECIES_UNOWN_Y] = _("Unown"), - [SPECIES_UNOWN_Z] = _("Unown"), - [SPECIES_UNOWN_QMARK] = _("Unown"), - [SPECIES_UNOWN_EMARK] = _("Unown"), - // Castform - [SPECIES_CASTFORM_SUNNY] = _("Castform"), - [SPECIES_CASTFORM_RAINY] = _("Castform"), - [SPECIES_CASTFORM_SNOWY] = _("Castform"), - // Deoxys - [SPECIES_DEOXYS_ATTACK] = _("Deoxys"), - [SPECIES_DEOXYS_DEFENSE] = _("Deoxys"), - [SPECIES_DEOXYS_SPEED] = _("Deoxys"), -#if P_GEN_4_POKEMON == TRUE - // Burmy - [SPECIES_BURMY_SANDY_CLOAK] = _("Burmy"), - [SPECIES_BURMY_TRASH_CLOAK] = _("Burmy"), - // Wormadam - [SPECIES_WORMADAM_SANDY_CLOAK] = _("Wormadam"), - [SPECIES_WORMADAM_TRASH_CLOAK] = _("Wormadam"), - // Cherrim - [SPECIES_CHERRIM_SUNSHINE] = _("Cherrim"), - // Shellos - [SPECIES_SHELLOS_EAST_SEA] = _("Shellos"), - // Gastrodon - [SPECIES_GASTRODON_EAST_SEA] = _("Gastrodon"), - // Rotom - [SPECIES_ROTOM_HEAT] = _("Rotom"), - [SPECIES_ROTOM_FAN] = _("Rotom"), - [SPECIES_ROTOM_FROST] = _("Rotom"), - [SPECIES_ROTOM_MOW] = _("Rotom"), - [SPECIES_ROTOM_WASH] = _("Rotom"), - // Origin Forme - [SPECIES_DIALGA_ORIGIN] = _("Dialga"), - [SPECIES_PALKIA_ORIGIN] = _("Palkia"), - [SPECIES_GIRATINA_ORIGIN] = _("Giratina"), - // Shaymin - [SPECIES_SHAYMIN_SKY] = _("Shaymin"), - // Arceus - [SPECIES_ARCEUS_FIGHTING] = _("Arceus"), - [SPECIES_ARCEUS_FLYING] = _("Arceus"), - [SPECIES_ARCEUS_POISON] = _("Arceus"), - [SPECIES_ARCEUS_GROUND] = _("Arceus"), - [SPECIES_ARCEUS_ROCK] = _("Arceus"), - [SPECIES_ARCEUS_BUG] = _("Arceus"), - [SPECIES_ARCEUS_GHOST] = _("Arceus"), - [SPECIES_ARCEUS_STEEL] = _("Arceus"), - [SPECIES_ARCEUS_FIRE] = _("Arceus"), - [SPECIES_ARCEUS_WATER] = _("Arceus"), - [SPECIES_ARCEUS_GRASS] = _("Arceus"), - [SPECIES_ARCEUS_ELECTRIC] = _("Arceus"), - [SPECIES_ARCEUS_PSYCHIC] = _("Arceus"), - [SPECIES_ARCEUS_ICE] = _("Arceus"), - [SPECIES_ARCEUS_DRAGON] = _("Arceus"), - [SPECIES_ARCEUS_DARK] = _("Arceus"), - [SPECIES_ARCEUS_FAIRY] = _("Arceus"), -#endif -#if P_GEN_5_POKEMON == TRUE - // Basculin - [SPECIES_BASCULIN_BLUE_STRIPED] = _("Basculin"), - [SPECIES_BASCULIN_WHITE_STRIPED] = _("Basculin"), - // Darmanitan - [SPECIES_DARMANITAN_ZEN_MODE] = _("Darmanitan"), - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = _("Darmanitan"), - // Deerling - [SPECIES_DEERLING_SUMMER] = _("Deerling"), - [SPECIES_DEERLING_AUTUMN] = _("Deerling"), - [SPECIES_DEERLING_WINTER] = _("Deerling"), - // Sawsbuck - [SPECIES_SAWSBUCK_SUMMER] = _("Sawsbuck"), - [SPECIES_SAWSBUCK_AUTUMN] = _("Sawsbuck"), - [SPECIES_SAWSBUCK_WINTER] = _("Sawsbuck"), - // Therian Forms - [SPECIES_TORNADUS_THERIAN] = _("Tornadus"), - [SPECIES_THUNDURUS_THERIAN] = _("Thundurus"), - [SPECIES_LANDORUS_THERIAN] = _("Landorus"), - [SPECIES_ENAMORUS_THERIAN] = _("Enamorus"), - // Kyurem - [SPECIES_KYUREM_BLACK] = _("Kyurem"), - [SPECIES_KYUREM_WHITE] = _("Kyurem"), - // Keldeo - [SPECIES_KELDEO_RESOLUTE] = _("Keldeo"), - // Meloetta - [SPECIES_MELOETTA_PIROUETTE] = _("Meloetta"), - // Genesect - [SPECIES_GENESECT_DOUSE_DRIVE] = _("Genesect"), - [SPECIES_GENESECT_SHOCK_DRIVE] = _("Genesect"), - [SPECIES_GENESECT_BURN_DRIVE] = _("Genesect"), - [SPECIES_GENESECT_CHILL_DRIVE] = _("Genesect"), -#endif -#if P_GEN_6_POKEMON == TRUE - // Greninja - [SPECIES_GRENINJA_BATTLE_BOND] = _("Greninja"), - [SPECIES_GRENINJA_ASH] = _("Greninja"), - // Vivillon - [SPECIES_VIVILLON_POLAR] = _("Vivillon"), - [SPECIES_VIVILLON_TUNDRA] = _("Vivillon"), - [SPECIES_VIVILLON_CONTINENTAL] = _("Vivillon"), - [SPECIES_VIVILLON_GARDEN] = _("Vivillon"), - [SPECIES_VIVILLON_ELEGANT] = _("Vivillon"), - [SPECIES_VIVILLON_MEADOW] = _("Vivillon"), - [SPECIES_VIVILLON_MODERN] = _("Vivillon"), - [SPECIES_VIVILLON_MARINE] = _("Vivillon"), - [SPECIES_VIVILLON_ARCHIPELAGO] = _("Vivillon"), - [SPECIES_VIVILLON_HIGH_PLAINS] = _("Vivillon"), - [SPECIES_VIVILLON_SANDSTORM] = _("Vivillon"), - [SPECIES_VIVILLON_RIVER] = _("Vivillon"), - [SPECIES_VIVILLON_MONSOON] = _("Vivillon"), - [SPECIES_VIVILLON_SAVANNA] = _("Vivillon"), - [SPECIES_VIVILLON_SUN] = _("Vivillon"), - [SPECIES_VIVILLON_OCEAN] = _("Vivillon"), - [SPECIES_VIVILLON_JUNGLE] = _("Vivillon"), - [SPECIES_VIVILLON_FANCY] = _("Vivillon"), - [SPECIES_VIVILLON_POKE_BALL] = _("Vivillon"), - // Flabébé - [SPECIES_FLABEBE_YELLOW_FLOWER] = _("Flabébé"), - [SPECIES_FLABEBE_ORANGE_FLOWER] = _("Flabébé"), - [SPECIES_FLABEBE_BLUE_FLOWER] = _("Flabébé"), - [SPECIES_FLABEBE_WHITE_FLOWER] = _("Flabébé"), - // Floette - [SPECIES_FLOETTE_YELLOW_FLOWER] = _("Floette"), - [SPECIES_FLOETTE_ORANGE_FLOWER] = _("Floette"), - [SPECIES_FLOETTE_BLUE_FLOWER] = _("Floette"), - [SPECIES_FLOETTE_WHITE_FLOWER] = _("Floette"), - [SPECIES_FLOETTE_ETERNAL_FLOWER] = _("Floette"), - // Florges - [SPECIES_FLORGES_YELLOW_FLOWER] = _("Florges"), - [SPECIES_FLORGES_ORANGE_FLOWER] = _("Florges"), - [SPECIES_FLORGES_BLUE_FLOWER] = _("Florges"), - [SPECIES_FLORGES_WHITE_FLOWER] = _("Florges"), - // Furfrou - [SPECIES_FURFROU_HEART_TRIM] = _("Furfrou"), - [SPECIES_FURFROU_STAR_TRIM] = _("Furfrou"), - [SPECIES_FURFROU_DIAMOND_TRIM] = _("Furfrou"), - [SPECIES_FURFROU_DEBUTANTE_TRIM] = _("Furfrou"), - [SPECIES_FURFROU_MATRON_TRIM] = _("Furfrou"), - [SPECIES_FURFROU_DANDY_TRIM] = _("Furfrou"), - [SPECIES_FURFROU_LA_REINE_TRIM] = _("Furfrou"), - [SPECIES_FURFROU_KABUKI_TRIM] = _("Furfrou"), - [SPECIES_FURFROU_PHARAOH_TRIM] = _("Furfrou"), - // Meowstic - [SPECIES_MEOWSTIC_FEMALE] = _("Meowstic"), - // Aegislash - [SPECIES_AEGISLASH_BLADE] = _("Aegislash"), - // Pumpkaboo - [SPECIES_PUMPKABOO_SMALL] = _("Pumpkaboo"), - [SPECIES_PUMPKABOO_LARGE] = _("Pumpkaboo"), - [SPECIES_PUMPKABOO_SUPER] = _("Pumpkaboo"), - // Gourgeist - [SPECIES_GOURGEIST_SMALL] = _("Gourgeist"), - [SPECIES_GOURGEIST_LARGE] = _("Gourgeist"), - [SPECIES_GOURGEIST_SUPER] = _("Gourgeist"), - // Xerneas - [SPECIES_XERNEAS_ACTIVE] = _("Xerneas"), - // Zygarde - [SPECIES_ZYGARDE_10] = _("Zygarde"), - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = _("Zygarde"), - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = _("Zygarde"), - [SPECIES_ZYGARDE_COMPLETE] = _("Zygarde"), - // Hoopa - [SPECIES_HOOPA_UNBOUND] = _("Hoopa"), -#endif -#if P_GEN_7_POKEMON == TRUE - // Oricorio - [SPECIES_ORICORIO_POM_POM] = _("Oricorio"), - [SPECIES_ORICORIO_PAU] = _("Oricorio"), - [SPECIES_ORICORIO_SENSU] = _("Oricorio"), - // Rockruff - [SPECIES_ROCKRUFF_OWN_TEMPO] = _("Rockruff"), - // Lycanroc - [SPECIES_LYCANROC_MIDNIGHT] = _("Lycanroc"), - [SPECIES_LYCANROC_DUSK] = _("Lycanroc"), - // Wishiwashi - [SPECIES_WISHIWASHI_SCHOOL] = _("Wishiwashi"), - // Silvally - [SPECIES_SILVALLY_FIGHTING] = _("Silvally"), - [SPECIES_SILVALLY_FLYING] = _("Silvally"), - [SPECIES_SILVALLY_POISON] = _("Silvally"), - [SPECIES_SILVALLY_GROUND] = _("Silvally"), - [SPECIES_SILVALLY_ROCK] = _("Silvally"), - [SPECIES_SILVALLY_BUG] = _("Silvally"), - [SPECIES_SILVALLY_GHOST] = _("Silvally"), - [SPECIES_SILVALLY_STEEL] = _("Silvally"), - [SPECIES_SILVALLY_FIRE] = _("Silvally"), - [SPECIES_SILVALLY_WATER] = _("Silvally"), - [SPECIES_SILVALLY_GRASS] = _("Silvally"), - [SPECIES_SILVALLY_ELECTRIC] = _("Silvally"), - [SPECIES_SILVALLY_PSYCHIC] = _("Silvally"), - [SPECIES_SILVALLY_ICE] = _("Silvally"), - [SPECIES_SILVALLY_DRAGON] = _("Silvally"), - [SPECIES_SILVALLY_DARK] = _("Silvally"), - [SPECIES_SILVALLY_FAIRY] = _("Silvally"), - // Minior - [SPECIES_MINIOR_METEOR_ORANGE] = _("Minior"), - [SPECIES_MINIOR_METEOR_YELLOW] = _("Minior"), - [SPECIES_MINIOR_METEOR_GREEN] = _("Minior"), - [SPECIES_MINIOR_METEOR_BLUE] = _("Minior"), - [SPECIES_MINIOR_METEOR_INDIGO] = _("Minior"), - [SPECIES_MINIOR_METEOR_VIOLET] = _("Minior"), - [SPECIES_MINIOR_CORE_RED] = _("Minior"), - [SPECIES_MINIOR_CORE_ORANGE] = _("Minior"), - [SPECIES_MINIOR_CORE_YELLOW] = _("Minior"), - [SPECIES_MINIOR_CORE_GREEN] = _("Minior"), - [SPECIES_MINIOR_CORE_BLUE] = _("Minior"), - [SPECIES_MINIOR_CORE_INDIGO] = _("Minior"), - [SPECIES_MINIOR_CORE_VIOLET] = _("Minior"), - // Mimikyu - [SPECIES_MIMIKYU_BUSTED] = _("Mimikyu"), - // Necrozma - [SPECIES_NECROZMA_DUSK_MANE] = _("Necrozma"), - [SPECIES_NECROZMA_DAWN_WINGS] = _("Necrozma"), - [SPECIES_NECROZMA_ULTRA] = _("Necrozma"), - // Magearna - [SPECIES_MAGEARNA_ORIGINAL_COLOR] = _("Magearna"), -#endif -#if P_GEN_8_POKEMON == TRUE - // Cramorant - [SPECIES_CRAMORANT_GULPING] = _("Cramorant"), - [SPECIES_CRAMORANT_GORGING] = _("Cramorant"), - // Toxtricity - [SPECIES_TOXTRICITY_LOW_KEY] = _("Toxtricity"), - // Sinistea - [SPECIES_SINISTEA_ANTIQUE] = _("Sinistea"), - // Polteageist - [SPECIES_POLTEAGEIST_ANTIQUE] = _("Polteageis"), - // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_MATCHA_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_MINT_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_LEMON_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_SALTED_CREAM] = _("Alcremie"), - [SPECIES_ALCREMIE_RUBY_SWIRL] = _("Alcremie"), - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = _("Alcremie"), - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = _("Alcremie"), - // Eiscue - [SPECIES_EISCUE_NOICE_FACE] = _("Eiscue"), - // Indeedee - [SPECIES_INDEEDEE_FEMALE] = _("Indeedee"), - // Morpeko - [SPECIES_MORPEKO_HANGRY] = _("Morpeko"), - // Zacian - [SPECIES_ZACIAN_CROWNED_SWORD] = _("Zacian"), - // Zamazenta - [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = _("Zamazenta"), - // Eternatus - [SPECIES_ETERNATUS_ETERNAMAX] = _("Eternatus"), - // Urshifu - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = _("Urshifu"), - // Zarude - [SPECIES_ZARUDE_DADA] = _("Zarude"), - // Calyrex - [SPECIES_CALYREX_ICE_RIDER] = _("Calyrex"), - [SPECIES_CALYREX_SHADOW_RIDER] = _("Calyrex"), - [SPECIES_BASCULEGION_FEMALE] = _("Bsculegion"), -#endif -}; diff --git a/src/data/trade.h b/src/data/trade.h index ef7e9231de..ba49f4b874 100644 --- a/src/data/trade.h +++ b/src/data/trade.h @@ -372,8 +372,8 @@ static const u8 *const sActionTexts[] = static const struct MenuAction sSelectTradeMonActions[] = { - {sText_Summary2, Task_DrawSelectionSummary}, - {sText_Trade2, Task_DrawSelectionTrade} + {sText_Summary2, {Task_DrawSelectionSummary}}, + {sText_Trade2, {Task_DrawSelectionTrade}} }; static const u8 *const sMessages[] = diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h index ed53a181dd..b3128781c4 100644 --- a/src/data/trainer_parties.h +++ b/src/data/trainer_parties.h @@ -5443,7 +5443,7 @@ static const struct TrainerMon sParty_Angelica[] = { { .iv = TRAINER_PARTY_IVS(6, 6, 6, 6, 6, 6), .lvl = 30, - .species = SPECIES_CASTFORM, + .species = SPECIES_CASTFORM_NORMAL, .moves = {MOVE_RAIN_DANCE, MOVE_WEATHER_BALL, MOVE_THUNDER, MOVE_WATER_PULSE} } }; @@ -6224,7 +6224,7 @@ static const struct TrainerMon sParty_Jonas[] = { static const struct TrainerMon sParty_Kayley[] = { { .lvl = 31, - .species = SPECIES_CASTFORM, + .species = SPECIES_CASTFORM_NORMAL, .moves = {MOVE_SUNNY_DAY, MOVE_WEATHER_BALL, MOVE_FLAMETHROWER, MOVE_SOLAR_BEAM} } }; diff --git a/src/data/wallpapers.h b/src/data/wallpapers.h index 64c61fe2d5..d204d44130 100644 --- a/src/data/wallpapers.h +++ b/src/data/wallpapers.h @@ -317,6 +317,7 @@ static const u32 sWallpaperIcon_Brick[] = INCBIN_U32("graphics/pokemon_st static const u32 sWallpaperIcon_FourStar[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/four_star.4bpp.lz"); static const u32 sWallpaperIcon_Asterisk[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/asterisk.4bpp.lz"); static const u32 sWallpaperIcon_Dot[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/dot.4bpp.lz"); +static const u32 sWallpaperIcon_CrossJapan[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/cross_japan.4bpp.lz"); static const u32 sWallpaperIcon_LineCircle[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/line_circle.4bpp.lz"); static const u32 sWallpaperIcon_PokeBall[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/pokeball.4bpp.lz"); static const u32 sWallpaperIcon_Maze[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/maze.4bpp.lz"); @@ -325,6 +326,7 @@ static const u32 sWallpaperIcon_BigAsterisk[] = INCBIN_U32("graphics/pokemon_st static const u32 sWallpaperIcon_Circle[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/circle.4bpp.lz"); static const u32 sWallpaperIcon_Koffing[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/koffing.4bpp.lz"); static const u32 sWallpaperIcon_Ribbon[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/ribbon.4bpp.lz"); +static const u32 sWallpaperIcon_BoltJapan[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/bolt_japan.4bpp.lz"); static const u32 sWallpaperIcon_FourCircles[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/four_circles.4bpp.lz"); static const u32 sWallpaperIcon_Lotad[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/lotad.4bpp.lz"); static const u32 sWallpaperIcon_Crystal[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/crystal.4bpp.lz"); @@ -334,6 +336,7 @@ static const u32 sWallpaperIcon_Luvdisc[] = INCBIN_U32("graphics/pokemon_st static const u32 sWallpaperIcon_StarInCircle[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/star_in_circle.4bpp.lz"); static const u32 sWallpaperIcon_Spinda[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/spinda.4bpp.lz"); static const u32 sWallpaperIcon_Latis[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/latis.4bpp.lz"); +static const u32 sWallpaperIcon_PlusleJapan[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/plusle_japan.4bpp.lz"); static const u32 sWallpaperIcon_Minun[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/minun.4bpp.lz"); static const u32 sWallpaperIcon_Togepi[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/togepi.4bpp.lz"); static const u32 sWallpaperIcon_Magma[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/magma.4bpp.lz"); @@ -367,7 +370,11 @@ static const u32 *const sWaldaWallpaperIcons[] = sWallpaperIcon_FourStar, sWallpaperIcon_Asterisk, sWallpaperIcon_Dot, +#if OW_PC_JAPAN_WALDA_ICONS == TRUE + sWallpaperIcon_CrossJapan, +#else gWallpaperIcon_Cross, +#endif sWallpaperIcon_LineCircle, sWallpaperIcon_PokeBall, sWallpaperIcon_Maze, @@ -376,7 +383,11 @@ static const u32 *const sWaldaWallpaperIcons[] = sWallpaperIcon_Circle, sWallpaperIcon_Koffing, sWallpaperIcon_Ribbon, +#if OW_PC_JAPAN_WALDA_ICONS == TRUE + sWallpaperIcon_BoltJapan, +#else gWallpaperIcon_Bolt, +#endif sWallpaperIcon_FourCircles, sWallpaperIcon_Lotad, sWallpaperIcon_Crystal, @@ -386,7 +397,11 @@ static const u32 *const sWaldaWallpaperIcons[] = sWallpaperIcon_StarInCircle, sWallpaperIcon_Spinda, sWallpaperIcon_Latis, +#if OW_PC_JAPAN_WALDA_ICONS == TRUE + sWallpaperIcon_PlusleJapan, +#else gWallpaperIcon_Plusle, +#endif sWallpaperIcon_Minun, sWallpaperIcon_Togepi, sWallpaperIcon_Magma, diff --git a/src/daycare.c b/src/daycare.c index bf8a03e3f2..33b3d8ac1b 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -26,8 +26,6 @@ #include "constants/moves.h" #include "constants/region_map_sections.h" -extern const struct Evolution gEvolutionTable[][EVOS_PER_MON]; - #define IS_DITTO(species) (gSpeciesInfo[species].eggGroups[0] == EGG_GROUP_DITTO || gSpeciesInfo[species].eggGroups[1] == EGG_GROUP_DITTO) static void ClearDaycareMonMail(struct DaycareMail *mail); @@ -237,9 +235,8 @@ static void StorePokemonInDaycare(struct Pokemon *mon, struct DaycareMon *daycar CompactPartySlots(); CalculatePlayerPartyCount(); -#if P_EGG_MOVE_TRANSFER >= GEN_8 - TransferEggMoves(); -#endif + if (P_EGG_MOVE_TRANSFER >= GEN_8) + TransferEggMoves(); } static void StorePokemonInEmptyDaycareSlot(struct Pokemon *mon, struct DayCare *daycare) @@ -401,7 +398,7 @@ void GetDaycareCost(void) gSpecialVar_0x8005 = GetDaycareCostForMon(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004); } -static void Debug_AddDaycareSteps(u16 numSteps) +static void UNUSED Debug_AddDaycareSteps(u16 numSteps) { gSaveBlock1Ptr->daycare.mons[0].steps += numSteps; gSaveBlock1Ptr->daycare.mons[1].steps += numSteps; @@ -434,7 +431,7 @@ static void ClearDaycareMon(struct DaycareMon *daycareMon) ClearDaycareMonMail(&daycareMon->mail); } -static void ClearAllDaycareData(struct DayCare *daycare) +static void UNUSED ClearAllDaycareData(struct DayCare *daycare) { u8 i; @@ -455,14 +452,17 @@ static u16 GetEggSpecies(u16 species) // Working backwards up to 5 times seems arbitrary, since the maximum number // of times would only be 3 for 3-stage evolutions. - for (i = 0; i < EVOS_PER_MON; i++) + for (i = 0; i < 5; i++) { found = FALSE; for (j = 1; j < NUM_SPECIES; j++) { - for (k = 0; k < EVOS_PER_MON; k++) + const struct Evolution *evolutions = GetSpeciesEvolutions(j); + if (evolutions == NULL) + continue; + for (k = 0; evolutions[k].method != EVOLUTIONS_END; k++) { - if (gEvolutionTable[j][k].targetSpecies == species) + if (SanitizeSpeciesId(evolutions[k].targetSpecies) == species) { species = j; found = TRUE; @@ -554,8 +554,7 @@ void TriggerPendingDaycareEgg(void) _TriggerPendingDaycareEgg(&gSaveBlock1Ptr->daycare); } -// Unused -static void TriggerPendingDaycareMaleEgg(void) +static void UNUSED TriggerPendingDaycareMaleEgg(void) { _TriggerPendingDaycareMaleEgg(&gSaveBlock1Ptr->daycare); } @@ -698,16 +697,19 @@ static void InheritPokeball(struct Pokemon *egg, struct BoxPokemon *father, stru if (motherBall == ITEM_MASTER_BALL || motherBall == ITEM_CHERISH_BALL) motherBall = ITEM_POKE_BALL; -#if P_BALL_INHERITING >= GEN_7 - if (fatherSpecies == motherSpecies) - inheritBall = (Random() % 2 == 0 ? motherBall : fatherBall); - else if (motherSpecies != SPECIES_DITTO) + if (P_BALL_INHERITING >= GEN_7) + { + if (fatherSpecies == motherSpecies) + inheritBall = (Random() % 2 == 0 ? motherBall : fatherBall); + else if (motherSpecies != SPECIES_DITTO) + inheritBall = motherBall; + else + inheritBall = fatherBall; + } + else if (P_BALL_INHERITING == GEN_6) + { inheritBall = motherBall; - else - inheritBall = fatherBall; -#elif P_BALL_INHERITING == GEN_6 - inheritBall = motherBall; -#endif + } SetMonData(egg, MON_DATA_POKEBALL, &inheritBall); } @@ -719,21 +721,18 @@ static void InheritAbility(struct Pokemon *egg, struct BoxPokemon *father, struc u8 inheritAbility = motherAbility; if (motherSpecies == SPECIES_DITTO) - #if P_ABILITY_INHERITANCE < GEN_6 - return; - #else - inheritAbility = fatherAbility; - #endif + { + if (P_ABILITY_INHERITANCE >= GEN_6) + inheritAbility = fatherAbility; + else + return; + } if (inheritAbility < 2 && (Random() % 10 < 8)) { SetMonData(egg, MON_DATA_ABILITY_NUM, &inheritAbility); } -#if P_ABILITY_INHERITANCE < GEN_6 - else if (Random() % 10 < 8) -#else - else if (Random() % 10 < 6) -#endif + else if (Random() % 10 < (P_ABILITY_INHERITANCE >= GEN_6 ? 6 : 8)) { // Hidden Abilities have a different chance of being passed down SetMonData(egg, MON_DATA_ABILITY_NUM, &inheritAbility); @@ -773,6 +772,63 @@ static u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves) return numEggMoves; } +u8 GetEggMovesSpecies(u16 species, u16 *eggMoves) +{ + u16 eggMoveIdx; + u16 numEggMoves; + u16 i; + + numEggMoves = 0; + eggMoveIdx = 0; + for (i = 0; i < ARRAY_COUNT(gEggMoves) - 1; i++) + { + if (gEggMoves[i] == species + EGG_MOVES_SPECIES_OFFSET) + { + eggMoveIdx = i + 1; + break; + } + } + + for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++) + { + if (gEggMoves[eggMoveIdx + i] > EGG_MOVES_SPECIES_OFFSET) + { + // TODO: the curly braces around this if statement are required for a matching build. + break; + } + + eggMoves[i] = gEggMoves[eggMoveIdx + i]; + numEggMoves++; + } + + return numEggMoves; +} + +bool8 SpeciesCanLearnEggMove(u16 species, u16 move) //Move search PokedexPlus HGSS_Ui +{ + u16 eggMoveIdx; + u16 i; + eggMoveIdx = 0; + for (i = 0; i < ARRAY_COUNT(gEggMoves) - 1; i++) + { + if (gEggMoves[i] == species + EGG_MOVES_SPECIES_OFFSET) + { + eggMoveIdx = i + 1; + break; + } + } + + for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++) + { + if (gEggMoves[eggMoveIdx + i] > EGG_MOVES_SPECIES_OFFSET) + return FALSE; + + if (move == gEggMoves[eggMoveIdx + i]) + return TRUE; + } + return FALSE; +} + static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxPokemon *mother) { u16 numSharedParentMoves; @@ -896,11 +952,12 @@ void RejectEggFromDayCare(void) RemoveEggFromDayCare(&gSaveBlock1Ptr->daycare); } + static const struct { u16 currSpecies; u16 item; u16 babySpecies; -} IncenseBabyTable[][3] = +} sIncenseBabyTable[] = { // Regular offspring, Item, Incense Offspring { SPECIES_WOBBUFFET, ITEM_LAX_INCENSE, SPECIES_WYNAUT }, @@ -914,6 +971,7 @@ static const struct { { SPECIES_MANTINE, ITEM_WAVE_INCENSE, SPECIES_MANTYKE }, }; +#if P_INCENSE_BREEDING < GEN_9 static void AlterEggSpeciesWithIncenseItem(u16 *species, struct DayCare *daycare) { u32 i; @@ -921,21 +979,22 @@ static void AlterEggSpeciesWithIncenseItem(u16 *species, struct DayCare *daycare motherItem = GetBoxMonData(&daycare->mons[0].mon, MON_DATA_HELD_ITEM); fatherItem = GetBoxMonData(&daycare->mons[1].mon, MON_DATA_HELD_ITEM); - for (i = 0; i < ARRAY_COUNT(IncenseBabyTable); i++) + for (i = 0; i < ARRAY_COUNT(sIncenseBabyTable); i++) { - if (IncenseBabyTable[i]->babySpecies == *species && motherItem != IncenseBabyTable[i]->item && fatherItem != IncenseBabyTable[i]->item) + if (sIncenseBabyTable[i].babySpecies == *species && motherItem != sIncenseBabyTable[i].item && fatherItem != sIncenseBabyTable[i].item) { - *species = IncenseBabyTable[i]->currSpecies; + *species = sIncenseBabyTable[i].currSpecies; break; } } } +#endif static const struct { u16 offspring; u16 item; u16 move; -} BreedingSpecialMoveItemTable[][3] = +} sBreedingSpecialMoveItemTable[] = { // Offspring, Item, Move { SPECIES_PICHU, ITEM_LIGHT_BALL, MOVE_VOLT_TACKLE }, @@ -947,14 +1006,14 @@ static void GiveMoveIfItem(struct Pokemon *mon, struct DayCare *daycare) u32 motherItem = GetBoxMonData(&daycare->mons[0].mon, MON_DATA_HELD_ITEM); u32 fatherItem = GetBoxMonData(&daycare->mons[1].mon, MON_DATA_HELD_ITEM); - for (i = 0; i < ARRAY_COUNT(BreedingSpecialMoveItemTable); i++) + for (i = 0; i < ARRAY_COUNT(sBreedingSpecialMoveItemTable); i++) { - if (BreedingSpecialMoveItemTable[i]->offspring == species - && (motherItem == BreedingSpecialMoveItemTable[i]->item || - fatherItem == BreedingSpecialMoveItemTable[i]->item)) + if (sBreedingSpecialMoveItemTable[i].offspring == species + && (motherItem == sBreedingSpecialMoveItemTable[i].item || + fatherItem == sBreedingSpecialMoveItemTable[i].item)) { - if (GiveMoveToMon(mon, BreedingSpecialMoveItemTable[i]->move) == MON_HAS_MAX_MOVES) - DeleteFirstMoveAndGiveMoveToMon(mon, BreedingSpecialMoveItemTable[i]->move); + if (GiveMoveToMon(mon, sBreedingSpecialMoveItemTable[i].move) == MON_HAS_MAX_MOVES) + DeleteFirstMoveAndGiveMoveToMon(mon, sBreedingSpecialMoveItemTable[i].move); } } } @@ -994,7 +1053,7 @@ static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parent else if (eggSpecies == SPECIES_MANAPHY) eggSpecies = SPECIES_PHIONE; else if (eggSpecies == SPECIES_SINISTEA_ANTIQUE) - eggSpecies = SPECIES_SINISTEA; + eggSpecies = SPECIES_SINISTEA_PHONY; else if (GET_BASE_SPECIES_ID(eggSpecies) == SPECIES_VIVILLON) eggSpecies = SPECIES_SCATTERBUG; else if (GET_BASE_SPECIES_ID(eggSpecies) == SPECIES_ROTOM) @@ -1017,7 +1076,7 @@ static void _GiveEggFromDaycare(struct DayCare *daycare) { struct Pokemon egg; u16 species; - u8 parentSlots[DAYCARE_MON_COUNT]; + u8 parentSlots[DAYCARE_MON_COUNT] = {0}; bool8 isEgg; species = DetermineEggSpeciesAndParentSlots(daycare, parentSlots); @@ -1028,9 +1087,8 @@ static void _GiveEggFromDaycare(struct DayCare *daycare) InheritIVs(&egg, daycare); InheritPokeball(&egg, &daycare->mons[parentSlots[1]].mon, &daycare->mons[parentSlots[0]].mon); BuildEggMoveset(&egg, &daycare->mons[parentSlots[1]].mon, &daycare->mons[parentSlots[0]].mon); -#if P_ABILITY_INHERITANCE >= GEN_6 - InheritAbility(&egg, &daycare->mons[parentSlots[1]].mon, &daycare->mons[parentSlots[0]].mon); -#endif + if (P_ABILITY_INHERITANCE >= GEN_6) + InheritAbility(&egg, &daycare->mons[parentSlots[1]].mon, &daycare->mons[parentSlots[0]].mon); GiveMoveIfItem(&egg, daycare); @@ -1202,7 +1260,7 @@ u8 GetDaycareState(void) return DAYCARE_NO_MONS; } -static u8 GetDaycarePokemonCount(void) +static u8 UNUSED GetDaycarePokemonCount(void) { u8 ret = CountPokemonInDaycare(&gSaveBlock1Ptr->daycare); if (ret) @@ -1250,7 +1308,7 @@ u8 GetDaycareCompatibilityScore(struct DayCare *daycare) } // check unbreedable egg group - if (eggGroups[0][0] == EGG_GROUP_UNDISCOVERED || eggGroups[1][0] == EGG_GROUP_UNDISCOVERED) + if (eggGroups[0][0] == EGG_GROUP_NO_EGGS_DISCOVERED || eggGroups[1][0] == EGG_GROUP_NO_EGGS_DISCOVERED) return PARENTS_INCOMPATIBLE; // two Ditto can't breed if (eggGroups[0][0] == EGG_GROUP_DITTO && eggGroups[1][0] == EGG_GROUP_DITTO) @@ -1358,7 +1416,7 @@ static u8 *AppendMonGenderSymbol(u8 *name, struct BoxPokemon *boxMon) return AppendGenderSymbol(name, GetBoxMonGender(boxMon)); } -static void GetDaycareLevelMenuText(struct DayCare *daycare, u8 *dest) +static void UNUSED GetDaycareLevelMenuText(struct DayCare *daycare, u8 *dest) { u8 monNames[DAYCARE_MON_COUNT][POKEMON_NAME_BUFFER_SIZE]; u8 i; @@ -1377,7 +1435,7 @@ static void GetDaycareLevelMenuText(struct DayCare *daycare, u8 *dest) StringAppend(dest, gText_Exit4); } -static void GetDaycareLevelMenuLevelText(struct DayCare *daycare, u8 *dest) +static void UNUSED GetDaycareLevelMenuLevelText(struct DayCare *daycare, u8 *dest) { u8 i; u8 level; diff --git a/src/debug.c b/src/debug.c index be1085edd7..1ed438598b 100644 --- a/src/debug.c +++ b/src/debug.c @@ -43,6 +43,7 @@ #include "pokemon_storage_system.h" #include "random.h" #include "region_map.h" +#include "rtc.h" #include "script.h" #include "script_pokemon_util.h" #include "sound.h" @@ -54,6 +55,8 @@ #include "constants/abilities.h" #include "constants/battle_ai.h" #include "constants/battle_frontier.h" +#include "constants/coins.h" +#include "constants/expansion.h" #include "constants/flags.h" #include "constants/items.h" #include "constants/map_groups.h" @@ -65,36 +68,48 @@ #if DEBUG_OVERWORLD_MENU == TRUE // ******************************* -// Enums -enum { // Main +enum DebugMenu +{ DEBUG_MENU_ITEM_UTILITIES, + DEBUG_MENU_ITEM_PARTY_BOXES, + DEBUG_MENU_ITEM_GIVE, DEBUG_MENU_ITEM_SCRIPTS, DEBUG_MENU_ITEM_FLAGVAR, - //DEBUG_MENU_ITEM_BATTLE, - DEBUG_MENU_ITEM_GIVE, DEBUG_MENU_ITEM_FILL, + //DEBUG_MENU_ITEM_BATTLE, DEBUG_MENU_ITEM_SOUND, - DEBUG_MENU_ITEM_ACCESS_PC, - DEBUG_MENU_ITEM_CANCEL + DEBUG_MENU_ITEM_CANCEL, }; -enum { // Util - DEBUG_UTIL_MENU_ITEM_HEAL_PARTY, + +enum UtilMenu +{ DEBUG_UTIL_MENU_ITEM_FLY, DEBUG_UTIL_MENU_ITEM_WARP, - DEBUG_UTIL_MENU_ITEM_POISON_MONS, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK, + DEBUG_UTIL_MENU_ITEM_ROM_SPACE, DEBUG_UTIL_MENU_ITEM_WEATHER, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK, DEBUG_UTIL_MENU_ITEM_WATCHCREDITS, - DEBUG_UTIL_MENU_ITEM_TRAINER_NAME, - DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER, - DEBUG_UTIL_MENU_ITEM_TRAINER_ID, - DEBUG_UTIL_MENU_ITEM_CLEAR_BOXES, + DEBUG_UTIL_MENU_ITEM_PLAYER_NAME, + DEBUG_UTIL_MENU_ITEM_PLAYER_GENDER, + DEBUG_UTIL_MENU_ITEM_PLAYER_ID, DEBUG_UTIL_MENU_ITEM_CHEAT, - DEBUG_UTIL_MENU_ITEM_HATCH_AN_EGG, + DEBUG_UTIL_MENU_ITEM_EXPANSION_VER, }; -enum { // Scripts + +enum PartyBoxesMenu +{ + DEBUG_PARTY_BOXES_MENU_ITEM_ACCESS_PC, + DEBUG_PARTY_BOXES_MENU_ITEM_MOVE_REMINDER, + DEBUG_PARTY_BOXES_MENU_ITEM_HATCH_AN_EGG, + DEBUG_PARTY_BOXES_MENU_ITEM_HEAL_PARTY, + DEBUG_PARTY_BOXES_MENU_ITEM_POISON_MONS, + DEBUG_PARTY_BOXES_MENU_ITEM_CLEAR_BOXES, +}; + +enum ScriptMenu +{ DEBUG_UTIL_MENU_ITEM_SCRIPT_1, DEBUG_UTIL_MENU_ITEM_SCRIPT_2, DEBUG_UTIL_MENU_ITEM_SCRIPT_3, @@ -104,7 +119,9 @@ enum { // Scripts DEBUG_UTIL_MENU_ITEM_SCRIPT_7, DEBUG_UTIL_MENU_ITEM_SCRIPT_8, }; -enum { // Flags and Vars + +enum FlagsVarsMenu +{ DEBUG_FLAGVAR_MENU_ITEM_FLAGS, DEBUG_FLAGVAR_MENU_ITEM_VARS, DEBUG_FLAGVAR_MENU_ITEM_DEXFLAGS_ALL, @@ -112,6 +129,7 @@ enum { // Flags and Vars DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_POKEDEX, DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_NATDEX, DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_POKENAV, + DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_MATCH_CALL, DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_RUN_SHOES, DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_LOCATIONS, DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_BADGES_ALL, @@ -122,14 +140,18 @@ enum { // Flags and Vars DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_BAG_USE, DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_CATCHING, }; -enum { // Battle 0 Type + +enum BattleType +{ DEBUG_BATTLE_0_MENU_ITEM_WILD, DEBUG_BATTLE_0_MENU_ITEM_WILD_DOUBLE, DEBUG_BATTLE_0_MENU_ITEM_SINGLE, DEBUG_BATTLE_0_MENU_ITEM_DOUBLE, DEBUG_BATTLE_0_MENU_ITEM_MULTI, }; -enum { // Battle 1 AI FLags + +enum BattleAIFlags +{ DEBUG_BATTLE_1_MENU_ITEM_AI_FLAG_00, DEBUG_BATTLE_1_MENU_ITEM_AI_FLAG_01, DEBUG_BATTLE_1_MENU_ITEM_AI_FLAG_02, @@ -150,7 +172,9 @@ enum { // Battle 1 AI FLags DEBUG_BATTLE_1_MENU_ITEM_AI_FLAG_17, DEBUG_BATTLE_1_MENU_ITEM_CONTINUE, }; -enum { // Battle 2 Terrain + +enum BattleTerrain +{ DEBUG_BATTLE_2_MENU_ITEM_TERRAIN_0, DEBUG_BATTLE_2_MENU_ITEM_TERRAIN_1, DEBUG_BATTLE_2_MENU_ITEM_TERRAIN_2, @@ -162,7 +186,9 @@ enum { // Battle 2 Terrain DEBUG_BATTLE_2_MENU_ITEM_TERRAIN_8, DEBUG_BATTLE_2_MENU_ITEM_TERRAIN_9, }; -enum { // Give + +enum GiveMenu +{ DEBUG_GIVE_MENU_ITEM_ITEM_X, DEBUG_GIVE_MENU_ITEM_ALLTMS, DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE, @@ -172,7 +198,9 @@ enum { // Give DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS, DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG, }; -enum { // Give Fill + +enum GiveFillMenu +{ DEBUG_FILL_MENU_ITEM_PC_BOXES_FAST, DEBUG_FILL_MENU_ITEM_PC_BOXES_SLOW, DEBUG_FILL_MENU_ITEM_PC_ITEMS, @@ -182,13 +210,17 @@ enum { // Give Fill DEBUG_FILL_MENU_ITEM_POCKET_BERRIES, DEBUG_FILL_MENU_ITEM_POCKET_KEY_ITEMS, }; -enum { //Sound + +enum SoundMenu +{ DEBUG_SOUND_MENU_ITEM_SE, DEBUG_SOUND_MENU_ITEM_MUS, }; // ******************************* // Constants +#define DEBUG_MENU_FONT FONT_NORMAL + #define DEBUG_MENU_WIDTH_MAIN 16 #define DEBUG_MENU_HEIGHT_MAIN 9 @@ -218,11 +250,11 @@ enum { //Sound // ******************************* struct DebugMonData { - u16 mon_speciesId; - u8 mon_level; - u8 isShiny; - u16 mon_natureId; - u16 mon_abilityNum; + u16 species; + u8 level; + bool8 isShiny:1; + u8 nature:5; + u8 abilityNum:2; u8 mon_iv_hp; u8 mon_iv_atk; u8 mon_iv_def; @@ -261,12 +293,10 @@ EWRAM_DATA u32 gDebugAIFlags = 0; // Define functions static void Debug_ReShowMainMenu(void); static void Debug_ShowMenu(void (*HandleInput)(u8), struct ListMenuTemplate LMtemplate); -static void Debug_ShowMenuDynamic(u8 taskId); static void Debug_DestroyMenu(u8 taskId); static void Debug_DestroyMenu_Full(u8 taskId); static void DebugAction_Cancel(u8 taskId); static void DebugAction_DestroyExtraWindow(u8 taskId); -static void DebugTask_HandleMenuInput(u8 taskId, void (*HandleInput)(u8)); static void Debug_InitDebugBattleData(void); static void Debug_RefreshListMenu(u8 taskId); static void Debug_RedrawListMenu(u8 taskId); @@ -281,15 +311,16 @@ static void DebugAction_Util_Script_7(u8 taskId); static void DebugAction_Util_Script_8(u8 taskId); static void DebugAction_OpenUtilitiesMenu(u8 taskId); +static void DebugAction_OpenPartyBoxesMenu(u8 taskId); static void DebugAction_OpenScriptsMenu(u8 taskId); static void DebugAction_OpenFlagsVarsMenu(u8 taskId); -static void DebugAction_OpenBattleMenu(u8 taskId); static void DebugAction_OpenGiveMenu(u8 taskId); static void DebugAction_OpenFillMenu(u8 taskId); static void DebugAction_OpenSoundMenu(u8 taskId); -static void DebugAction_AccessPC(u8 taskId); + static void DebugTask_HandleMenuInput_Main(u8 taskId); static void DebugTask_HandleMenuInput_Utilities(u8 taskId); +static void DebugTask_HandleMenuInput_PartyBoxes(u8 taskId); static void DebugTask_HandleMenuInput_Scripts(u8 taskId); static void DebugTask_HandleMenuInput_FlagsVars(u8 taskId); static void DebugTask_HandleMenuInput_Battle(u8 taskId); @@ -297,26 +328,30 @@ static void DebugTask_HandleMenuInput_Give(u8 taskId); static void DebugTask_HandleMenuInput_Fill(u8 taskId); static void DebugTask_HandleMenuInput_Sound(u8 taskId); -static void DebugAction_Util_HealParty(u8 taskId); static void DebugAction_Util_Fly(u8 taskId); static void DebugAction_Util_Warp_Warp(u8 taskId); static void DebugAction_Util_Warp_SelectMapGroup(u8 taskId); static void DebugAction_Util_Warp_SelectMap(u8 taskId); static void DebugAction_Util_Warp_SelectWarp(u8 taskId); -static void DebugAction_FlagsVars_RunningShoes(u8 taskId); -static void DebugAction_Util_PoisonMons(u8 taskId); static void DebugAction_Util_CheckSaveBlock(u8 taskId); +static void DebugAction_Util_CheckROMSpace(u8 taskId); static void DebugAction_Util_Weather(u8 taskId); static void DebugAction_Util_Weather_SelectId(u8 taskId); static void DebugAction_Util_CheckWallClock(u8 taskId); static void DebugAction_Util_SetWallClock(u8 taskId); static void DebugAction_Util_WatchCredits(u8 taskId); -static void DebugAction_Util_Trainer_Name(u8 taskId); -static void DebugAction_Util_Trainer_Gender(u8 taskId); -static void DebugAction_Util_Trainer_Id(u8 taskId); -static void DebugAction_Util_Clear_Boxes(u8 taskId); +static void DebugAction_Util_Player_Name(u8 taskId); +static void DebugAction_Util_Player_Gender(u8 taskId); +static void DebugAction_Util_Player_Id(u8 taskId); static void DebugAction_Util_CheatStart(u8 taskId); -static void DebugAction_Util_HatchAnEgg(u8 taskId); +static void DebugAction_Util_ExpansionVersion(u8 taskId); + +static void DebugAction_PartyBoxes_AccessPC(u8 taskId); +static void DebugAction_PartyBoxes_MoveReminder(u8 taskId); +static void DebugAction_PartyBoxes_HatchAnEgg(u8 taskId); +static void DebugAction_PartyBoxes_HealParty(u8 taskId); +static void DebugAction_PartyBoxes_PoisonMons(u8 taskId); +static void DebugAction_PartyBoxes_ClearBoxes(u8 taskId); static void DebugAction_FlagsVars_Flags(u8 taskId); static void DebugAction_FlagsVars_FlagsSelect(u8 taskId); @@ -328,6 +363,7 @@ static void DebugAction_FlagsVars_PokedexFlags_Reset(u8 taskId); static void DebugAction_FlagsVars_SwitchDex(u8 taskId); static void DebugAction_FlagsVars_SwitchNatDex(u8 taskId); static void DebugAction_FlagsVars_SwitchPokeNav(u8 taskId); +static void DebugAction_FlagsVars_SwitchMatchCall(u8 taskId); static void DebugAction_FlagsVars_ToggleFlyFlags(u8 taskId); static void DebugAction_FlagsVars_ToggleBadgeFlags(u8 taskId); static void DebugAction_FlagsVars_ToggleFrontierPass(u8 taskId); @@ -336,6 +372,7 @@ static void DebugAction_FlagsVars_EncounterOnOff(u8 taskId); static void DebugAction_FlagsVars_TrainerSeeOnOff(u8 taskId); static void DebugAction_FlagsVars_BagUseOnOff(u8 taskId); static void DebugAction_FlagsVars_CatchingOnOff(u8 taskId); +static void DebugAction_FlagsVars_RunningShoes(u8 taskId); static void Debug_InitializeBattle(u8 taskId); @@ -375,14 +412,15 @@ static void DebugAction_Sound_MUS_SelectId(u8 taskId); extern const u8 Debug_FlagsNotSetOverworldConfigMessage[]; extern const u8 Debug_FlagsNotSetBattleConfigMessage[]; -extern const u8 Debug_Script_1[]; -extern const u8 Debug_Script_2[]; -extern const u8 Debug_Script_3[]; -extern const u8 Debug_Script_4[]; -extern const u8 Debug_Script_5[]; -extern const u8 Debug_Script_6[]; -extern const u8 Debug_Script_7[]; -extern const u8 Debug_Script_8[]; +extern const u8 Debug_FlagsAndVarNotSetBattleConfigMessage[]; +extern const u8 Debug_EventScript_Script_1[]; +extern const u8 Debug_EventScript_Script_2[]; +extern const u8 Debug_EventScript_Script_3[]; +extern const u8 Debug_EventScript_Script_4[]; +extern const u8 Debug_EventScript_Script_5[]; +extern const u8 Debug_EventScript_Script_6[]; +extern const u8 Debug_EventScript_Script_7[]; +extern const u8 Debug_EventScript_Script_8[]; extern const u8 DebugScript_DaycareMonsNotCompatible[]; extern const u8 DebugScript_OneDaycareMons[]; extern const u8 DebugScript_ZeroDaycareMons[]; @@ -393,7 +431,11 @@ extern const u8 Debug_HatchAnEgg[]; extern const u8 PlayersHouse_2F_EventScript_SetWallClock[]; extern const u8 PlayersHouse_2F_EventScript_CheckWallClock[]; extern const u8 Debug_CheckSaveBlock[]; +extern const u8 Debug_CheckROMSpace[]; extern const u8 Debug_BoxFilledMessage[]; +extern const u8 Debug_ShowExpansionVersion[]; + +extern const u8 FallarborTown_MoveRelearnersHouse_EventScript_ChooseMon[]; #include "data/map_group_count.h" @@ -408,13 +450,13 @@ static const u8 sDebugText_Empty[] = _(""); static const u8 sDebugText_Continue[] = _("Continue…{CLEAR_TO 110}{RIGHT_ARROW}"); // Main Menu static const u8 sDebugText_Utilities[] = _("Utilities…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_PartyBoxes[] = _("Party/Boxes…{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_Scripts[] = _("Scripts…{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_FlagsVars[] = _("Flags & Vars…{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_Battle[] = _("Battle Test{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_Give[] = _("Give X…{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_Fill[] = _("Fill PC/Pockets…{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_Sound[] = _("Sound…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_AccessPC[] = _("Access PC…{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_Cancel[] = _("Cancel"); // Script menu static const u8 sDebugText_Util_Script_1[] = _("Script 1"); @@ -426,26 +468,31 @@ static const u8 sDebugText_Util_Script_6[] = _("Script 6"); static const u8 sDebugText_Util_Script_7[] = _("Script 7"); static const u8 sDebugText_Util_Script_8[] = _("Script 8"); // Util Menu -static const u8 sDebugText_Util_HealParty[] = _("Heal Party"); -static const u8 sDebugText_Util_Fly[] = _("Fly to map…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Util_WarpToMap[] = _("Warp to map warp…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Util_WarpToMap_SelectMapGroup[] =_("Group: {STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n\n{STR_VAR_3}{CLEAR_TO 90}"); -static const u8 sDebugText_Util_WarpToMap_SelectMap[] = _("Map: {STR_VAR_1}{CLEAR_TO 90}\nMapSec:{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}\n{STR_VAR_3}{CLEAR_TO 90}"); -static const u8 sDebugText_Util_WarpToMap_SelectWarp[] = _("Warp:{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_3}{CLEAR_TO 90}"); -static const u8 sDebugText_Util_WarpToMap_SelMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); -static const u8 sDebugText_Util_PoisonMons[] = _("Poison all mons"); -static const u8 sDebugText_Util_SaveBlockSpace[] = _("SaveBlock Space…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Util_Weather[] = _("Set weather…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Util_Weather_ID[] = _("Weather Id: {STR_VAR_3}\n{STR_VAR_1}\n{STR_VAR_2}"); -static const u8 sDebugText_Util_CheckWallClock[] = _("Check Wall Clock…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Util_SetWallClock[] = _("Set Wall Clock…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Util_WatchCredits[] = _("Watch Credits…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Util_Trainer_Name[] = _("Trainer name"); -static const u8 sDebugText_Util_Trainer_Gender[] = _("Toggle T. Gender"); -static const u8 sDebugText_Util_Trainer_Id[] = _("New Trainer Id"); -static const u8 sDebugText_Util_Clear_Boxes[] = _("Clear Storage Boxes"); -static const u8 sDebugText_Util_CheatStart[] = _("CHEAT Start"); -static const u8 sDebugText_Util_HatchAnEgg[] = _("Hatch an Egg"); +static const u8 sDebugText_Util_FlyToMap[] = _("Fly to map…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Util_WarpToMap[] = _("Warp to map warp…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Util_WarpToMap_SelectMapGroup[] = _("Group: {STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n\n{STR_VAR_3}{CLEAR_TO 90}"); +static const u8 sDebugText_Util_WarpToMap_SelectMap[] = _("Map: {STR_VAR_1}{CLEAR_TO 90}\nMapSec:{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}\n{STR_VAR_3}{CLEAR_TO 90}"); +static const u8 sDebugText_Util_WarpToMap_SelectWarp[] = _("Warp:{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_3}{CLEAR_TO 90}"); +static const u8 sDebugText_Util_WarpToMap_SelMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); +static const u8 sDebugText_Util_SaveBlockSpace[] = _("SaveBlock Space…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Util_ROMSpace[] = _("ROM Space…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Util_Weather[] = _("Set weather…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Util_Weather_ID[] = _("Weather Id: {STR_VAR_3}\n{STR_VAR_1}\n{STR_VAR_2}"); +static const u8 sDebugText_Util_CheckWallClock[] = _("Check Wall Clock…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Util_SetWallClock[] = _("Set Wall Clock…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Util_WatchCredits[] = _("Watch Credits…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Util_Player_Name[] = _("Player name"); +static const u8 sDebugText_Util_Player_Gender[] = _("Toggle Gender"); +static const u8 sDebugText_Util_Player_Id[] = _("New Trainer Id"); +static const u8 sDebugText_Util_CheatStart[] = _("CHEAT Start"); +static const u8 sDebugText_Util_ExpansionVersion[] = _("Expansion Version"); +// Party/Boxes Menu +static const u8 sDebugText_PartyBoxes_AccessPC[] = _("Access PC"); +static const u8 sDebugText_PartyBoxes_MoveReminder[] = _("Move Reminder"); +static const u8 sDebugText_PartyBoxes_HatchAnEgg[] = _("Hatch an Egg"); +static const u8 sDebugText_PartyBoxes_HealParty[] = _("Heal Party"); +static const u8 sDebugText_PartyBoxes_PoisonParty[] = _("Poison party"); +static const u8 sDebugText_PartyBoxes_ClearBoxes[] = _("Clear Storage Boxes"); // Flags/Vars Menu static const u8 sDebugText_FlagsVars_Flags[] = _("Set Flag XYZ…{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_FlagsVars_Flag[] = _("Flag: {STR_VAR_1}{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}\n{STR_VAR_3}"); @@ -459,6 +506,7 @@ static const u8 sDebugText_FlagsVars_PokedexFlags_Reset[] = _("Pokédex Flag static const u8 sDebugText_FlagsVars_SwitchDex[] = _("Toggle {STR_VAR_1}Pokédex"); static const u8 sDebugText_FlagsVars_SwitchNationalDex[] = _("Toggle {STR_VAR_1}NatDex"); static const u8 sDebugText_FlagsVars_SwitchPokeNav[] = _("Toggle {STR_VAR_1}PokéNav"); +static const u8 sDebugText_FlagsVars_SwitchMatchCall[] = _("Toggle {STR_VAR_1}Match Call"); static const u8 sDebugText_FlagsVars_RunningShoes[] = _("Toggle {STR_VAR_1}Running Shoes"); static const u8 sDebugText_FlagsVars_ToggleFlyFlags[] = _("Toggle {STR_VAR_1}Fly Flags"); static const u8 sDebugText_FlagsVars_ToggleAllBadges[] = _("Toggle {STR_VAR_1}All badges"); @@ -515,12 +563,12 @@ static const u8 sDebugText_PokemonShiny[] = _("Shiny:{CLEAR_TO 90}\n static const u8 sDebugText_PokemonNature[] = _("NatureId: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_PokemonAbility[] = _("AbilityNum: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_PokemonIVs[] = _("All IVs:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); -static const u8 sDebugText_PokemonIV_0[] = _("IV HP:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); -static const u8 sDebugText_PokemonIV_1[] = _("IV Attack:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); -static const u8 sDebugText_PokemonIV_2[] = _("IV Defense:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); -static const u8 sDebugText_PokemonIV_3[] = _("IV Speed:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); -static const u8 sDebugText_PokemonIV_4[] = _("IV Sp. Attack:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); -static const u8 sDebugText_PokemonIV_5[] = _("IV Sp. Defense:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); +static const u8 sDebugText_IV_HP[] = _("IV HP:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); +static const u8 sDebugText_IV_Attack[] = _("IV Attack:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); +static const u8 sDebugText_IV_Defense[] = _("IV Defense:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); +static const u8 sDebugText_IV_Speed[] = _("IV Speed:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); +static const u8 sDebugText_IV_SpAttack[] = _("IV Sp. Attack:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); +static const u8 sDebugText_IV_SpDefense[] = _("IV Sp. Defense:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_PokemonMove_0[] = _("Move 0: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_PokemonMove_1[] = _("Move 1: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_PokemonMove_2[] = _("Move 2: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); @@ -530,39 +578,40 @@ static const u8 sDebugText_Give_MaxCoins[] = _("Max Coins"); static const u8 sDebugText_Give_BattlePoints[] = _("Max Battle Points"); static const u8 sDebugText_Give_DaycareEgg[] = _("Daycare Egg"); // Fill Menu -static const u8 sDebugText_Fill_Pc_Fast[] = _("Fill PCBoxes Fast"); -static const u8 sDebugText_Fill_Pc_Slow[] = _("Fill PCBoxes Slow (LAG!)"); -static const u8 sDebugText_Fill_Pc_Items[] = _("Fill PCItems"); -static const u8 sDebugText_Fill_PocketItems[] = _("Fill Pocket Items"); -static const u8 sDebugText_Fill_PocketPokeBalls[] =_("Fill Pocket PokeBalls"); -static const u8 sDebugText_Fill_PocketTMHM[] = _("Fill Pocket TMHM"); -static const u8 sDebugText_Fill_PocketBerries[] = _("Fill Pocket Berries"); -static const u8 sDebugText_Fill_PocketKeyItems[] = _("Fill Pocket KeyItems"); -// Sound Mneu -static const u8 sDebugText_Sound_SE[] = _("Effects…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Sound_SE_ID[] = _("Sound Id: {STR_VAR_3}\n{STR_VAR_1} \n{STR_VAR_2}"); -static const u8 sDebugText_Sound_MUS[] = _("Music…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Sound_MUS_ID[] = _("Music Id: {STR_VAR_3}\n{STR_VAR_1} \n{STR_VAR_2}"); +static const u8 sDebugText_Fill_Pc_Fast[] = _("Fill PCBoxes Fast"); +static const u8 sDebugText_Fill_Pc_Slow[] = _("Fill PCBoxes Slow (LAG!)"); +static const u8 sDebugText_Fill_Pc_Items[] = _("Fill PCItems"); +static const u8 sDebugText_Fill_PocketItems[] = _("Fill Pocket Items"); +static const u8 sDebugText_Fill_PocketPokeBalls[] = _("Fill Pocket PokeBalls"); +static const u8 sDebugText_Fill_PocketTMHM[] = _("Fill Pocket TMHM"); +static const u8 sDebugText_Fill_PocketBerries[] = _("Fill Pocket Berries"); +static const u8 sDebugText_Fill_PocketKeyItems[] = _("Fill Pocket KeyItems"); +// Sound Menu +static const u8 sDebugText_Sound_SFX[] = _("SFX…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Sound_SFX_ID[] = _("SFX Id: {STR_VAR_3} {START_BUTTON} Stop\n{STR_VAR_1} \n{STR_VAR_2}"); +static const u8 sDebugText_Sound_Music[] = _("Music…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Sound_Music_ID[] = _("Music Id: {STR_VAR_3} {START_BUTTON} Stop\n{STR_VAR_1} \n{STR_VAR_2}"); -static const u8 digitInidicator_1[] = _("{LEFT_ARROW}+1{RIGHT_ARROW} "); -static const u8 digitInidicator_10[] = _("{LEFT_ARROW}+10{RIGHT_ARROW} "); -static const u8 digitInidicator_100[] = _("{LEFT_ARROW}+100{RIGHT_ARROW} "); -static const u8 digitInidicator_1000[] = _("{LEFT_ARROW}+1000{RIGHT_ARROW} "); -static const u8 digitInidicator_10000[] = _("{LEFT_ARROW}+10000{RIGHT_ARROW} "); -static const u8 digitInidicator_100000[] = _("{LEFT_ARROW}+100000{RIGHT_ARROW} "); -static const u8 digitInidicator_1000000[] = _("{LEFT_ARROW}+1000000{RIGHT_ARROW} "); -static const u8 digitInidicator_10000000[] = _("{LEFT_ARROW}+10000000{RIGHT_ARROW} "); -const u8 * const gText_DigitIndicator[] = +static const u8 sDebugText_Digit_1[] = _("{LEFT_ARROW}+1{RIGHT_ARROW} "); +static const u8 sDebugText_Digit_10[] = _("{LEFT_ARROW}+10{RIGHT_ARROW} "); +static const u8 sDebugText_Digit_100[] = _("{LEFT_ARROW}+100{RIGHT_ARROW} "); +static const u8 sDebugText_Digit_1000[] = _("{LEFT_ARROW}+1000{RIGHT_ARROW} "); +static const u8 sDebugText_Digit_10000[] = _("{LEFT_ARROW}+10000{RIGHT_ARROW} "); +static const u8 sDebugText_Digit_100000[] = _("{LEFT_ARROW}+100000{RIGHT_ARROW} "); +static const u8 sDebugText_Digit_1000000[] = _("{LEFT_ARROW}+1000000{RIGHT_ARROW} "); +static const u8 sDebugText_Digit_10000000[] = _("{LEFT_ARROW}+10000000{RIGHT_ARROW} "); +const u8 *const gText_DigitIndicator[] = { - digitInidicator_1, - digitInidicator_10, - digitInidicator_100, - digitInidicator_1000, - digitInidicator_10000, - digitInidicator_100000, - digitInidicator_1000000, - digitInidicator_10000000 + sDebugText_Digit_1, + sDebugText_Digit_10, + sDebugText_Digit_100, + sDebugText_Digit_1000, + sDebugText_Digit_10000, + sDebugText_Digit_100000, + sDebugText_Digit_1000000, + sDebugText_Digit_10000000 }; + static const s32 sPowersOfTen[] = { 1, @@ -582,44 +631,55 @@ static const s32 sPowersOfTen[] = static const struct ListMenuItem sDebugMenu_Items_Main[] = { [DEBUG_MENU_ITEM_UTILITIES] = {sDebugText_Utilities, DEBUG_MENU_ITEM_UTILITIES}, + [DEBUG_MENU_ITEM_PARTY_BOXES] = {sDebugText_PartyBoxes, DEBUG_MENU_ITEM_PARTY_BOXES}, + [DEBUG_MENU_ITEM_GIVE] = {sDebugText_Give, DEBUG_MENU_ITEM_GIVE}, [DEBUG_MENU_ITEM_SCRIPTS] = {sDebugText_Scripts, DEBUG_MENU_ITEM_SCRIPTS}, [DEBUG_MENU_ITEM_FLAGVAR] = {sDebugText_FlagsVars, DEBUG_MENU_ITEM_FLAGVAR}, - //[DEBUG_MENU_ITEM_BATTLE] = {sDebugText_Battle, DEBUG_MENU_ITEM_BATTLE}, - [DEBUG_MENU_ITEM_GIVE] = {sDebugText_Give, DEBUG_MENU_ITEM_GIVE}, [DEBUG_MENU_ITEM_FILL] = {sDebugText_Fill, DEBUG_MENU_ITEM_FILL}, + //[DEBUG_MENU_ITEM_BATTLE] = {sDebugText_Battle, DEBUG_MENU_ITEM_BATTLE}, [DEBUG_MENU_ITEM_SOUND] = {sDebugText_Sound, DEBUG_MENU_ITEM_SOUND}, - [DEBUG_MENU_ITEM_ACCESS_PC] = {sDebugText_AccessPC, DEBUG_MENU_ITEM_ACCESS_PC}, - [DEBUG_MENU_ITEM_CANCEL] = {sDebugText_Cancel, DEBUG_MENU_ITEM_CANCEL} + [DEBUG_MENU_ITEM_CANCEL] = {sDebugText_Cancel, DEBUG_MENU_ITEM_CANCEL}, }; + static const struct ListMenuItem sDebugMenu_Items_Utilities[] = { - [DEBUG_UTIL_MENU_ITEM_HEAL_PARTY] = {sDebugText_Util_HealParty, DEBUG_UTIL_MENU_ITEM_HEAL_PARTY}, - [DEBUG_UTIL_MENU_ITEM_FLY] = {sDebugText_Util_Fly, DEBUG_UTIL_MENU_ITEM_FLY}, - [DEBUG_UTIL_MENU_ITEM_WARP] = {sDebugText_Util_WarpToMap, DEBUG_UTIL_MENU_ITEM_WARP}, - [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = {sDebugText_Util_PoisonMons, DEBUG_UTIL_MENU_ITEM_POISON_MONS}, - [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = {sDebugText_Util_SaveBlockSpace, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK}, - [DEBUG_UTIL_MENU_ITEM_WEATHER] = {sDebugText_Util_Weather, DEBUG_UTIL_MENU_ITEM_WEATHER}, - [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = {sDebugText_Util_CheckWallClock, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK}, - [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = {sDebugText_Util_SetWallClock, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK}, - [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = {sDebugText_Util_WatchCredits, DEBUG_UTIL_MENU_ITEM_WATCHCREDITS}, - [DEBUG_UTIL_MENU_ITEM_TRAINER_NAME] = {sDebugText_Util_Trainer_Name, DEBUG_UTIL_MENU_ITEM_TRAINER_NAME}, - [DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER] = {sDebugText_Util_Trainer_Gender, DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER}, - [DEBUG_UTIL_MENU_ITEM_TRAINER_ID] = {sDebugText_Util_Trainer_Id, DEBUG_UTIL_MENU_ITEM_TRAINER_ID}, - [DEBUG_UTIL_MENU_ITEM_CLEAR_BOXES] = {sDebugText_Util_Clear_Boxes, DEBUG_UTIL_MENU_ITEM_CLEAR_BOXES}, - [DEBUG_UTIL_MENU_ITEM_CHEAT] = {sDebugText_Util_CheatStart, DEBUG_UTIL_MENU_ITEM_CHEAT}, - [DEBUG_UTIL_MENU_ITEM_HATCH_AN_EGG] = {sDebugText_Util_HatchAnEgg, DEBUG_UTIL_MENU_ITEM_HATCH_AN_EGG}, + [DEBUG_UTIL_MENU_ITEM_FLY] = {sDebugText_Util_FlyToMap, DEBUG_UTIL_MENU_ITEM_FLY}, + [DEBUG_UTIL_MENU_ITEM_WARP] = {sDebugText_Util_WarpToMap, DEBUG_UTIL_MENU_ITEM_WARP}, + [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = {sDebugText_Util_SaveBlockSpace, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK}, + [DEBUG_UTIL_MENU_ITEM_ROM_SPACE] = {sDebugText_Util_ROMSpace, DEBUG_UTIL_MENU_ITEM_ROM_SPACE}, + [DEBUG_UTIL_MENU_ITEM_WEATHER] = {sDebugText_Util_Weather, DEBUG_UTIL_MENU_ITEM_WEATHER}, + [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = {sDebugText_Util_CheckWallClock, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK}, + [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = {sDebugText_Util_SetWallClock, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK}, + [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = {sDebugText_Util_WatchCredits, DEBUG_UTIL_MENU_ITEM_WATCHCREDITS}, + [DEBUG_UTIL_MENU_ITEM_PLAYER_NAME] = {sDebugText_Util_Player_Name, DEBUG_UTIL_MENU_ITEM_PLAYER_NAME}, + [DEBUG_UTIL_MENU_ITEM_PLAYER_GENDER] = {sDebugText_Util_Player_Gender, DEBUG_UTIL_MENU_ITEM_PLAYER_GENDER}, + [DEBUG_UTIL_MENU_ITEM_PLAYER_ID] = {sDebugText_Util_Player_Id, DEBUG_UTIL_MENU_ITEM_PLAYER_ID}, + [DEBUG_UTIL_MENU_ITEM_CHEAT] = {sDebugText_Util_CheatStart, DEBUG_UTIL_MENU_ITEM_CHEAT}, + [DEBUG_UTIL_MENU_ITEM_EXPANSION_VER] = {sDebugText_Util_ExpansionVersion,DEBUG_UTIL_MENU_ITEM_EXPANSION_VER}, }; + +static const struct ListMenuItem sDebugMenu_Items_PartyBoxes[] = +{ + [DEBUG_PARTY_BOXES_MENU_ITEM_ACCESS_PC] = {sDebugText_PartyBoxes_AccessPC, DEBUG_PARTY_BOXES_MENU_ITEM_ACCESS_PC}, + [DEBUG_PARTY_BOXES_MENU_ITEM_MOVE_REMINDER] = {sDebugText_PartyBoxes_MoveReminder, DEBUG_PARTY_BOXES_MENU_ITEM_MOVE_REMINDER}, + [DEBUG_PARTY_BOXES_MENU_ITEM_HATCH_AN_EGG] = {sDebugText_PartyBoxes_HatchAnEgg, DEBUG_PARTY_BOXES_MENU_ITEM_HATCH_AN_EGG}, + [DEBUG_PARTY_BOXES_MENU_ITEM_HEAL_PARTY] = {sDebugText_PartyBoxes_HealParty, DEBUG_PARTY_BOXES_MENU_ITEM_HEAL_PARTY}, + [DEBUG_PARTY_BOXES_MENU_ITEM_POISON_MONS] = {sDebugText_PartyBoxes_PoisonParty, DEBUG_PARTY_BOXES_MENU_ITEM_POISON_MONS}, + [DEBUG_PARTY_BOXES_MENU_ITEM_CLEAR_BOXES] = {sDebugText_PartyBoxes_ClearBoxes, DEBUG_PARTY_BOXES_MENU_ITEM_CLEAR_BOXES}, +}; + static const struct ListMenuItem sDebugMenu_Items_Scripts[] = { - [DEBUG_UTIL_MENU_ITEM_SCRIPT_1] = {sDebugText_Util_Script_1, DEBUG_UTIL_MENU_ITEM_SCRIPT_1}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_2] = {sDebugText_Util_Script_2, DEBUG_UTIL_MENU_ITEM_SCRIPT_2}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_3] = {sDebugText_Util_Script_3, DEBUG_UTIL_MENU_ITEM_SCRIPT_3}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_4] = {sDebugText_Util_Script_4, DEBUG_UTIL_MENU_ITEM_SCRIPT_4}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_5] = {sDebugText_Util_Script_5, DEBUG_UTIL_MENU_ITEM_SCRIPT_5}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_6] = {sDebugText_Util_Script_6, DEBUG_UTIL_MENU_ITEM_SCRIPT_6}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_7] = {sDebugText_Util_Script_7, DEBUG_UTIL_MENU_ITEM_SCRIPT_7}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_8] = {sDebugText_Util_Script_8, DEBUG_UTIL_MENU_ITEM_SCRIPT_8}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_1] = {sDebugText_Util_Script_1, DEBUG_UTIL_MENU_ITEM_SCRIPT_1}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_2] = {sDebugText_Util_Script_2, DEBUG_UTIL_MENU_ITEM_SCRIPT_2}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_3] = {sDebugText_Util_Script_3, DEBUG_UTIL_MENU_ITEM_SCRIPT_3}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_4] = {sDebugText_Util_Script_4, DEBUG_UTIL_MENU_ITEM_SCRIPT_4}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_5] = {sDebugText_Util_Script_5, DEBUG_UTIL_MENU_ITEM_SCRIPT_5}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_6] = {sDebugText_Util_Script_6, DEBUG_UTIL_MENU_ITEM_SCRIPT_6}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_7] = {sDebugText_Util_Script_7, DEBUG_UTIL_MENU_ITEM_SCRIPT_7}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_8] = {sDebugText_Util_Script_8, DEBUG_UTIL_MENU_ITEM_SCRIPT_8}, }; + static const struct ListMenuItem sDebugMenu_Items_FlagsVars[] = { [DEBUG_FLAGVAR_MENU_ITEM_FLAGS] = {sDebugText_FlagsVars_Flags, DEBUG_FLAGVAR_MENU_ITEM_FLAGS}, @@ -629,6 +689,7 @@ static const struct ListMenuItem sDebugMenu_Items_FlagsVars[] = [DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_POKEDEX] = {sDebugText_FlagsVars_SwitchDex, DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_POKEDEX}, [DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_NATDEX] = {sDebugText_FlagsVars_SwitchNationalDex, DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_NATDEX}, [DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_POKENAV] = {sDebugText_FlagsVars_SwitchPokeNav, DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_POKENAV}, + [DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_MATCH_CALL] = {sDebugText_FlagsVars_SwitchMatchCall, DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_MATCH_CALL}, [DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_RUN_SHOES] = {sDebugText_FlagsVars_RunningShoes, DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_RUN_SHOES}, [DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_LOCATIONS] = {sDebugText_FlagsVars_ToggleFlyFlags, DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_LOCATIONS}, [DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_BADGES_ALL] = {sDebugText_FlagsVars_ToggleAllBadges, DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_BADGES_ALL}, @@ -639,6 +700,7 @@ static const struct ListMenuItem sDebugMenu_Items_FlagsVars[] = [DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_BAG_USE] = {sDebugText_FlagsVars_SwitchBagUse, DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_BAG_USE}, [DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_CATCHING] = {sDebugText_FlagsVars_SwitchCatching, DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_CATCHING}, }; + static const struct ListMenuItem sDebugMenu_Items_Battle_0[] = { [DEBUG_BATTLE_0_MENU_ITEM_WILD] = {sDebugText_Battle_0_Wild, DEBUG_BATTLE_0_MENU_ITEM_WILD}, @@ -647,6 +709,7 @@ static const struct ListMenuItem sDebugMenu_Items_Battle_0[] = [DEBUG_BATTLE_0_MENU_ITEM_DOUBLE] = {sDebugText_Battle_0_Double, DEBUG_BATTLE_0_MENU_ITEM_DOUBLE}, [DEBUG_BATTLE_0_MENU_ITEM_MULTI] = {sDebugText_Battle_0_Mulit, DEBUG_BATTLE_0_MENU_ITEM_MULTI}, }; + static const struct ListMenuItem sDebugMenu_Items_Battle_1[] = { [DEBUG_BATTLE_1_MENU_ITEM_AI_FLAG_00] = {sDebugText_Battle_1_AIFlag_00, DEBUG_BATTLE_1_MENU_ITEM_AI_FLAG_00}, @@ -669,6 +732,7 @@ static const struct ListMenuItem sDebugMenu_Items_Battle_1[] = [DEBUG_BATTLE_1_MENU_ITEM_AI_FLAG_17] = {sDebugText_Battle_1_AIFlag_17, DEBUG_BATTLE_1_MENU_ITEM_AI_FLAG_17}, [DEBUG_BATTLE_1_MENU_ITEM_CONTINUE] = {sDebugText_Continue, DEBUG_BATTLE_1_MENU_ITEM_CONTINUE}, }; + static const struct ListMenuItem sDebugMenu_Items_Battle_2[] = { [DEBUG_BATTLE_2_MENU_ITEM_TERRAIN_0] = {sDebugText_Battle_2_Terrain_0, DEBUG_BATTLE_2_MENU_ITEM_TERRAIN_0}, @@ -682,6 +746,7 @@ static const struct ListMenuItem sDebugMenu_Items_Battle_2[] = [DEBUG_BATTLE_2_MENU_ITEM_TERRAIN_8] = {sDebugText_Battle_2_Terrain_8, DEBUG_BATTLE_2_MENU_ITEM_TERRAIN_8}, [DEBUG_BATTLE_2_MENU_ITEM_TERRAIN_9] = {sDebugText_Battle_2_Terrain_9, DEBUG_BATTLE_2_MENU_ITEM_TERRAIN_9}, }; + static const struct ListMenuItem sDebugMenu_Items_Give[] = { [DEBUG_GIVE_MENU_ITEM_ITEM_X] = {sDebugText_Give_GiveItem, DEBUG_GIVE_MENU_ITEM_ITEM_X}, @@ -693,6 +758,7 @@ static const struct ListMenuItem sDebugMenu_Items_Give[] = [DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS] = {sDebugText_Give_BattlePoints, DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS}, [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = {sDebugText_Give_DaycareEgg, DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG}, }; + static const struct ListMenuItem sDebugMenu_Items_Fill[] = { [DEBUG_FILL_MENU_ITEM_PC_BOXES_FAST] = {sDebugText_Fill_Pc_Fast, DEBUG_FILL_MENU_ITEM_PC_BOXES_FAST}, @@ -704,10 +770,11 @@ static const struct ListMenuItem sDebugMenu_Items_Fill[] = [DEBUG_FILL_MENU_ITEM_POCKET_BERRIES] = {sDebugText_Fill_PocketBerries, DEBUG_FILL_MENU_ITEM_POCKET_BERRIES}, [DEBUG_FILL_MENU_ITEM_POCKET_KEY_ITEMS] = {sDebugText_Fill_PocketKeyItems, DEBUG_FILL_MENU_ITEM_POCKET_KEY_ITEMS}, }; + static const struct ListMenuItem sDebugMenu_Items_Sound[] = { - [DEBUG_SOUND_MENU_ITEM_SE] = {sDebugText_Sound_SE, DEBUG_SOUND_MENU_ITEM_SE}, - [DEBUG_SOUND_MENU_ITEM_MUS] = {sDebugText_Sound_MUS, DEBUG_SOUND_MENU_ITEM_MUS}, + [DEBUG_SOUND_MENU_ITEM_SE] = {sDebugText_Sound_SFX, DEBUG_SOUND_MENU_ITEM_SE}, + [DEBUG_SOUND_MENU_ITEM_MUS] = {sDebugText_Sound_Music, DEBUG_SOUND_MENU_ITEM_MUS}, }; // ******************************* @@ -715,33 +782,43 @@ static const struct ListMenuItem sDebugMenu_Items_Sound[] = static void (*const sDebugMenu_Actions_Main[])(u8) = { [DEBUG_MENU_ITEM_UTILITIES] = DebugAction_OpenUtilitiesMenu, + [DEBUG_MENU_ITEM_PARTY_BOXES] = DebugAction_OpenPartyBoxesMenu, + [DEBUG_MENU_ITEM_GIVE] = DebugAction_OpenGiveMenu, [DEBUG_MENU_ITEM_SCRIPTS] = DebugAction_OpenScriptsMenu, [DEBUG_MENU_ITEM_FLAGVAR] = DebugAction_OpenFlagsVarsMenu, - //[DEBUG_MENU_ITEM_BATTLE] = DebugAction_OpenBattleMenu, - [DEBUG_MENU_ITEM_GIVE] = DebugAction_OpenGiveMenu, [DEBUG_MENU_ITEM_FILL] = DebugAction_OpenFillMenu, + //[DEBUG_MENU_ITEM_BATTLE] = DebugAction_OpenBattleMenu, [DEBUG_MENU_ITEM_SOUND] = DebugAction_OpenSoundMenu, - [DEBUG_MENU_ITEM_ACCESS_PC] = DebugAction_AccessPC, [DEBUG_MENU_ITEM_CANCEL] = DebugAction_Cancel }; + static void (*const sDebugMenu_Actions_Utilities[])(u8) = { - [DEBUG_UTIL_MENU_ITEM_HEAL_PARTY] = DebugAction_Util_HealParty, - [DEBUG_UTIL_MENU_ITEM_FLY] = DebugAction_Util_Fly, - [DEBUG_UTIL_MENU_ITEM_WARP] = DebugAction_Util_Warp_Warp, - [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = DebugAction_Util_PoisonMons, - [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = DebugAction_Util_CheckSaveBlock, - [DEBUG_UTIL_MENU_ITEM_WEATHER] = DebugAction_Util_Weather, - [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = DebugAction_Util_CheckWallClock, - [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = DebugAction_Util_SetWallClock, - [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = DebugAction_Util_WatchCredits, - [DEBUG_UTIL_MENU_ITEM_TRAINER_NAME] = DebugAction_Util_Trainer_Name, - [DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER] = DebugAction_Util_Trainer_Gender, - [DEBUG_UTIL_MENU_ITEM_TRAINER_ID] = DebugAction_Util_Trainer_Id, - [DEBUG_UTIL_MENU_ITEM_CLEAR_BOXES] = DebugAction_Util_Clear_Boxes, - [DEBUG_UTIL_MENU_ITEM_CHEAT] = DebugAction_Util_CheatStart, - [DEBUG_UTIL_MENU_ITEM_HATCH_AN_EGG] = DebugAction_Util_HatchAnEgg, + [DEBUG_UTIL_MENU_ITEM_FLY] = DebugAction_Util_Fly, + [DEBUG_UTIL_MENU_ITEM_WARP] = DebugAction_Util_Warp_Warp, + [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = DebugAction_Util_CheckSaveBlock, + [DEBUG_UTIL_MENU_ITEM_ROM_SPACE] = DebugAction_Util_CheckROMSpace, + [DEBUG_UTIL_MENU_ITEM_WEATHER] = DebugAction_Util_Weather, + [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = DebugAction_Util_CheckWallClock, + [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = DebugAction_Util_SetWallClock, + [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = DebugAction_Util_WatchCredits, + [DEBUG_UTIL_MENU_ITEM_PLAYER_NAME] = DebugAction_Util_Player_Name, + [DEBUG_UTIL_MENU_ITEM_PLAYER_GENDER] = DebugAction_Util_Player_Gender, + [DEBUG_UTIL_MENU_ITEM_PLAYER_ID] = DebugAction_Util_Player_Id, + [DEBUG_UTIL_MENU_ITEM_CHEAT] = DebugAction_Util_CheatStart, + [DEBUG_UTIL_MENU_ITEM_EXPANSION_VER] = DebugAction_Util_ExpansionVersion, }; + +static void (*const sDebugMenu_Actions_PartyBoxes[])(u8) = +{ + [DEBUG_PARTY_BOXES_MENU_ITEM_ACCESS_PC] = DebugAction_PartyBoxes_AccessPC, + [DEBUG_PARTY_BOXES_MENU_ITEM_MOVE_REMINDER] = DebugAction_PartyBoxes_MoveReminder, + [DEBUG_PARTY_BOXES_MENU_ITEM_HATCH_AN_EGG] = DebugAction_PartyBoxes_HatchAnEgg, + [DEBUG_PARTY_BOXES_MENU_ITEM_HEAL_PARTY] = DebugAction_PartyBoxes_HealParty, + [DEBUG_PARTY_BOXES_MENU_ITEM_POISON_MONS] = DebugAction_PartyBoxes_PoisonMons, + [DEBUG_PARTY_BOXES_MENU_ITEM_CLEAR_BOXES] = DebugAction_PartyBoxes_ClearBoxes, +}; + static void (*const sDebugMenu_Actions_Scripts[])(u8) = { [DEBUG_UTIL_MENU_ITEM_SCRIPT_1] = DebugAction_Util_Script_1, @@ -753,6 +830,7 @@ static void (*const sDebugMenu_Actions_Scripts[])(u8) = [DEBUG_UTIL_MENU_ITEM_SCRIPT_7] = DebugAction_Util_Script_7, [DEBUG_UTIL_MENU_ITEM_SCRIPT_8] = DebugAction_Util_Script_8, }; + static void (*const sDebugMenu_Actions_Flags[])(u8) = { [DEBUG_FLAGVAR_MENU_ITEM_FLAGS] = DebugAction_FlagsVars_Flags, @@ -762,6 +840,7 @@ static void (*const sDebugMenu_Actions_Flags[])(u8) = [DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_POKEDEX] = DebugAction_FlagsVars_SwitchDex, [DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_NATDEX] = DebugAction_FlagsVars_SwitchNatDex, [DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_POKENAV] = DebugAction_FlagsVars_SwitchPokeNav, + [DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_MATCH_CALL] = DebugAction_FlagsVars_SwitchMatchCall, [DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_RUN_SHOES] = DebugAction_FlagsVars_RunningShoes, [DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_LOCATIONS] = DebugAction_FlagsVars_ToggleFlyFlags, [DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_BADGES_ALL] = DebugAction_FlagsVars_ToggleBadgeFlags, @@ -783,6 +862,7 @@ static void (*const sDebugMenu_Actions_Give[])(u8) = [DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS] = DebugAction_Give_MaxBattlePoints, [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = DebugAction_Give_DayCareEgg, }; + static void (*const sDebugMenu_Actions_Fill[])(u8) = { [DEBUG_FILL_MENU_ITEM_PC_BOXES_FAST] = DebugAction_Fill_PCBoxes_Fast, @@ -801,7 +881,6 @@ static void (*const sDebugMenu_Actions_Sound[])(u8) = [DEBUG_SOUND_MENU_ITEM_MUS] = DebugAction_Sound_MUS, }; - // ******************************* // Windows static const struct WindowTemplate sDebugMenuWindowTemplateMain = @@ -814,6 +893,7 @@ static const struct WindowTemplate sDebugMenuWindowTemplateMain = .paletteNum = 15, .baseBlock = 1, }; + static const struct WindowTemplate sDebugMenuWindowTemplateExtra = { .bg = 0, @@ -824,6 +904,7 @@ static const struct WindowTemplate sDebugMenuWindowTemplateExtra = .paletteNum = 15, .baseBlock = 1, }; + static const struct WindowTemplate sDebugMenuWindowTemplateWeather = { .bg = 0, @@ -834,6 +915,7 @@ static const struct WindowTemplate sDebugMenuWindowTemplateWeather = .paletteNum = 15, .baseBlock = 1, }; + static const struct WindowTemplate sDebugMenuWindowTemplateSound = { .bg = 0, @@ -844,6 +926,7 @@ static const struct WindowTemplate sDebugMenuWindowTemplateSound = .paletteNum = 15, .baseBlock = 1, }; + static const struct WindowTemplate sDebugMenuWindowTemplateFlagsVars = { .bg = 0, @@ -863,54 +946,70 @@ static const struct ListMenuTemplate sDebugMenu_ListTemplate_Main = .moveCursorFunc = ListMenuDefaultCursorMoveFunc, .totalItems = ARRAY_COUNT(sDebugMenu_Items_Main), }; + static const struct ListMenuTemplate sDebugMenu_ListTemplate_Utilities = { .items = sDebugMenu_Items_Utilities, .moveCursorFunc = ListMenuDefaultCursorMoveFunc, .totalItems = ARRAY_COUNT(sDebugMenu_Items_Utilities), }; + +static const struct ListMenuTemplate sDebugMenu_ListTemplate_PartyBoxes = +{ + .items = sDebugMenu_Items_PartyBoxes, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .totalItems = ARRAY_COUNT(sDebugMenu_Items_PartyBoxes), +}; + static const struct ListMenuTemplate sDebugMenu_ListTemplate_Scripts = { .items = sDebugMenu_Items_Scripts, .moveCursorFunc = ListMenuDefaultCursorMoveFunc, .totalItems = ARRAY_COUNT(sDebugMenu_Items_Scripts), }; + static const struct ListMenuTemplate sDebugMenu_ListTemplate_FlagsVars = { .items = sDebugMenu_Items_FlagsVars, .moveCursorFunc = ListMenuDefaultCursorMoveFunc, .totalItems = ARRAY_COUNT(sDebugMenu_Items_FlagsVars), }; + static const struct ListMenuTemplate sDebugMenu_ListTemplate_Battle_0 = { .items = sDebugMenu_Items_Battle_0, .moveCursorFunc = ListMenuDefaultCursorMoveFunc, .totalItems = ARRAY_COUNT(sDebugMenu_Items_Battle_0), }; + static const struct ListMenuTemplate sDebugMenu_ListTemplate_Battle_1 = { .items = sDebugMenu_Items_Battle_1, .moveCursorFunc = ListMenuDefaultCursorMoveFunc, .totalItems = ARRAY_COUNT(sDebugMenu_Items_Battle_1), }; + static const struct ListMenuTemplate sDebugMenu_ListTemplate_Battle_2 = { .items = sDebugMenu_Items_Battle_2, .moveCursorFunc = ListMenuDefaultCursorMoveFunc, .totalItems = ARRAY_COUNT(sDebugMenu_Items_Battle_2), }; + static const struct ListMenuTemplate sDebugMenu_ListTemplate_Give = { .items = sDebugMenu_Items_Give, .moveCursorFunc = ListMenuDefaultCursorMoveFunc, .totalItems = ARRAY_COUNT(sDebugMenu_Items_Give), }; + static const struct ListMenuTemplate sDebugMenu_ListTemplate_Fill = { .items = sDebugMenu_Items_Fill, .moveCursorFunc = ListMenuDefaultCursorMoveFunc, .totalItems = ARRAY_COUNT(sDebugMenu_Items_Fill), }; + static const struct ListMenuTemplate sDebugMenu_ListTemplate_Sound = { .items = sDebugMenu_Items_Sound, @@ -929,10 +1028,18 @@ void Debug_ShowMainMenu(void) Debug_ShowMenu(DebugTask_HandleMenuInput_Main, sDebugMenu_ListTemplate_Main); } + static void Debug_ReShowMainMenu(void) { Debug_ShowMenu(DebugTask_HandleMenuInput_Main, sDebugMenu_ListTemplate_Main); } + +#define tMenuTaskId data[0] +#define tWindowId data[1] +#define tSubWindowId data[2] +#define tInput data[3] +#define tDigit data[4] + static void Debug_ShowMenu(void (*HandleInput)(u8), struct ListMenuTemplate LMtemplate) { struct ListMenuTemplate menuTemplate; @@ -960,43 +1067,45 @@ static void Debug_ShowMenu(void (*HandleInput)(u8), struct ListMenuTemplate LMte menuTemplate.lettersSpacing = 1; menuTemplate.itemVerticalPadding = 0; menuTemplate.scrollMultiple = LIST_NO_MULTIPLE_SCROLL; - menuTemplate.fontId = 1; + menuTemplate.fontId = DEBUG_MENU_FONT; menuTemplate.cursorKind = 0; menuTaskId = ListMenuInit(&menuTemplate, 0, 0); // create input handler task inputTaskId = CreateTask(HandleInput, 3); - gTasks[inputTaskId].data[0] = menuTaskId; - gTasks[inputTaskId].data[1] = windowId; - gTasks[inputTaskId].data[2] = 0; + gTasks[inputTaskId].tMenuTaskId = menuTaskId; + gTasks[inputTaskId].tWindowId = windowId; + gTasks[inputTaskId].tSubWindowId = 0; Debug_RefreshListMenu(inputTaskId); - //Debug_ShowMenuDynamic(inputTaskId); // draw everything - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_FULL); } + static void Debug_DestroyMenu(u8 taskId) { - DestroyListMenuTask(gTasks[taskId].data[0], NULL, NULL); - RemoveWindow(gTasks[taskId].data[1]); + DestroyListMenuTask(gTasks[taskId].tMenuTaskId, NULL, NULL); + RemoveWindow(gTasks[taskId].tWindowId); DestroyTask(taskId); } + static void Debug_DestroyMenu_Full(u8 taskId) { - if (gTasks[taskId].data[2] != 0) + if (gTasks[taskId].tSubWindowId != 0) { - ClearStdWindowAndFrame(gTasks[taskId].data[2], FALSE); + ClearStdWindowAndFrame(gTasks[taskId].tSubWindowId, FALSE); DebugAction_DestroyExtraWindow(taskId); } - DestroyListMenuTask(gTasks[taskId].data[0], NULL, NULL); - ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); - RemoveWindow(gTasks[taskId].data[1]); + DestroyListMenuTask(gTasks[taskId].tMenuTaskId, NULL, NULL); + ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE); + RemoveWindow(gTasks[taskId].tWindowId); DestroyTask(taskId); UnfreezeObjectEvents(); Free(sDebugMenuListData); Free(sDebugBattleData); } + static void Debug_DestroyMenu_Full_Script(u8 taskId, const u8 *script) { Debug_DestroyMenu_Full(taskId); @@ -1004,20 +1113,22 @@ static void Debug_DestroyMenu_Full_Script(u8 taskId, const u8 *script) FreezeObjectEvents(); ScriptContext_SetupScript(script); } + static void DebugAction_Cancel(u8 taskId) { Debug_DestroyMenu_Full(taskId); ScriptContext_Enable(); } + static void DebugAction_DestroyExtraWindow(u8 taskId) { - ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); - RemoveWindow(gTasks[taskId].data[1]); + ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE); + RemoveWindow(gTasks[taskId].tWindowId); - ClearStdWindowAndFrame(gTasks[taskId].data[2], TRUE); - RemoveWindow(gTasks[taskId].data[2]); + ClearStdWindowAndFrame(gTasks[taskId].tSubWindowId, TRUE); + RemoveWindow(gTasks[taskId].tSubWindowId); - DestroyListMenuTask(gTasks[taskId].data[0], NULL, NULL); + DestroyListMenuTask(gTasks[taskId].tMenuTaskId, NULL, NULL); DestroyTask(taskId); ScriptContext_Enable(); UnfreezeObjectEvents(); @@ -1038,6 +1149,9 @@ static u8 Debug_CheckToggleFlags(u8 id) case DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_POKENAV: result = FlagGet(FLAG_SYS_POKENAV_GET); break; + case DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_MATCH_CALL: + result = FlagGet(FLAG_ADDED_MATCH_CALL_TO_POKENAV) && FlagGet(FLAG_HAS_MATCH_CALL); + break; case DEBUG_FLAGVAR_MENU_ITEM_TOGGLE_RUN_SHOES: result = FlagGet(FLAG_SYS_B_DASH); break; @@ -1123,10 +1237,8 @@ static void Debug_RefreshListMenu(u8 taskId) u16 i; const u8 sColor_Red[] = _("{COLOR RED}"); const u8 sColor_Green[] = _("{COLOR GREEN}"); - u8 listTaskId = gTasks[taskId].data[0]; - struct ListMenu *list = (void*) gTasks[listTaskId].data; - u8 totalItems, flagResult; - u8 const * name; + u8 totalItems = 0, flagResult = 0; + u8 const *name = NULL; if (sDebugMenuListData->listId == 0) { @@ -1180,7 +1292,7 @@ static void Debug_RefreshListMenu(u8 taskId) { flagResult = sDebugBattleData->aiFlags[i]; if (i == totalItems - 1) - flagResult == 0xFF; + flagResult = 0xFF; name = sDebugMenu_Items_Battle_1[i].name; } @@ -1210,7 +1322,7 @@ static void Debug_RefreshListMenu(u8 taskId) gMultiuseListMenuTemplate.items = sDebugMenuListData->listItems; gMultiuseListMenuTemplate.totalItems = totalItems; gMultiuseListMenuTemplate.maxShowed = DEBUG_MENU_HEIGHT_MAIN; - gMultiuseListMenuTemplate.windowId = gTasks[taskId].data[1]; + gMultiuseListMenuTemplate.windowId = gTasks[taskId].tWindowId; gMultiuseListMenuTemplate.header_X = 0; gMultiuseListMenuTemplate.item_X = 8; gMultiuseListMenuTemplate.cursor_X = 0; @@ -1224,15 +1336,16 @@ static void Debug_RefreshListMenu(u8 taskId) gMultiuseListMenuTemplate.fontId = 1; gMultiuseListMenuTemplate.cursorKind = 0; } + static void Debug_RedrawListMenu(u8 taskId) { - u8 listTaskId = gTasks[taskId].data[0]; + u8 listTaskId = gTasks[taskId].tMenuTaskId; u16 scrollOffset, selectedRow; ListMenuGetScrollAndRow(listTaskId, &scrollOffset, &selectedRow); - DestroyListMenuTask(gTasks[taskId].data[0], &scrollOffset, &selectedRow); + DestroyListMenuTask(gTasks[taskId].tMenuTaskId, &scrollOffset, &selectedRow); Debug_RefreshListMenu(taskId); - gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, scrollOffset, selectedRow); + gTasks[taskId].tMenuTaskId = ListMenuInit(&gMultiuseListMenuTemplate, scrollOffset, selectedRow); } @@ -1241,7 +1354,7 @@ static void Debug_RedrawListMenu(u8 taskId) static void DebugTask_HandleMenuInput_Main(u8 taskId) { void (*func)(u8); - u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); + u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuTaskId); if (JOY_NEW(A_BUTTON)) { @@ -1256,10 +1369,11 @@ static void DebugTask_HandleMenuInput_Main(u8 taskId) ScriptContext_Enable(); } } + static void DebugTask_HandleMenuInput_Utilities(u8 taskId) { void (*func)(u8); - u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); + u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuTaskId); if (JOY_NEW(A_BUTTON)) { @@ -1274,10 +1388,30 @@ static void DebugTask_HandleMenuInput_Utilities(u8 taskId) Debug_ReShowMainMenu(); } } + +static void DebugTask_HandleMenuInput_PartyBoxes(u8 taskId) +{ + void (*func)(u8); + u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuTaskId); + + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + if ((func = sDebugMenu_Actions_PartyBoxes[input]) != NULL) + func(taskId); + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + Debug_DestroyMenu(taskId); + Debug_ReShowMainMenu(); + } +} + static void DebugTask_HandleMenuInput_Scripts(u8 taskId) { void (*func)(u8); - u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); + u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuTaskId); if (JOY_NEW(A_BUTTON)) { @@ -1292,10 +1426,11 @@ static void DebugTask_HandleMenuInput_Scripts(u8 taskId) Debug_ReShowMainMenu(); } } + static void DebugTask_HandleMenuInput_FlagsVars(u8 taskId) { void (*func)(u8); - u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); + u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuTaskId); if (JOY_NEW(A_BUTTON)) { @@ -1305,10 +1440,10 @@ static void DebugTask_HandleMenuInput_FlagsVars(u8 taskId) func(taskId); // Remove TRUE/FALSE window for functions that haven't been assigned flags - if (gTasks[taskId].data[3] == 0xFF) + if (gTasks[taskId].tInput == 0xFF) { - ClearStdWindowAndFrame(gTasks[taskId].data[2], TRUE); - RemoveWindow(gTasks[taskId].data[2]); + ClearStdWindowAndFrame(gTasks[taskId].tSubWindowId, TRUE); + RemoveWindow(gTasks[taskId].tSubWindowId); Free(sDebugMenuListData); } else @@ -1346,16 +1481,16 @@ static void DebugTask_HandleBattleMenuReDraw(u8 taskId) break; } } + static void DebugTask_HandleMenuInput_Battle(u8 taskId) { - void (*func)(u8); - u8 listTaskId = gTasks[taskId].data[0]; - u32 input = ListMenu_ProcessInput(listTaskId); u16 idx; + u8 listTaskId = gTasks[taskId].tMenuTaskId; + ListMenu_ProcessInput(listTaskId); ListMenuGetCurrentItemArrayId(listTaskId, &idx); - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); @@ -1403,7 +1538,7 @@ static void DebugTask_HandleMenuInput_Battle(u8 taskId) break; } } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { switch (sDebugBattleData->submenu) { @@ -1479,7 +1614,7 @@ static void Debug_InitializeBattle(u8 taskId) static void DebugTask_HandleMenuInput_Give(u8 taskId) { void (*func)(u8); - u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); + u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuTaskId); if (JOY_NEW(A_BUTTON)) { @@ -1494,28 +1629,30 @@ static void DebugTask_HandleMenuInput_Give(u8 taskId) Debug_ReShowMainMenu(); } } + static void DebugTask_HandleMenuInput_Fill(u8 taskId) { void (*func)(u8); - u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); + u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuTaskId); - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); if ((func = sDebugMenu_Actions_Fill[input]) != NULL) func(taskId); } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); Debug_DestroyMenu(taskId); Debug_ReShowMainMenu(); } } + static void DebugTask_HandleMenuInput_Sound(u8 taskId) { void (*func)(u8); - u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); + u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuTaskId); if (JOY_NEW(A_BUTTON)) { @@ -1538,11 +1675,19 @@ static void DebugAction_OpenUtilitiesMenu(u8 taskId) Debug_DestroyMenu(taskId); Debug_ShowMenu(DebugTask_HandleMenuInput_Utilities, sDebugMenu_ListTemplate_Utilities); } + +static void DebugAction_OpenPartyBoxesMenu(u8 taskId) +{ + Debug_DestroyMenu(taskId); + Debug_ShowMenu(DebugTask_HandleMenuInput_PartyBoxes, sDebugMenu_ListTemplate_PartyBoxes); +} + static void DebugAction_OpenScriptsMenu(u8 taskId) { Debug_DestroyMenu(taskId); Debug_ShowMenu(DebugTask_HandleMenuInput_Scripts, sDebugMenu_ListTemplate_Scripts); } + static void DebugAction_OpenFlagsVarsMenu(u8 taskId) { Debug_DestroyMenu(taskId); @@ -1550,23 +1695,19 @@ static void DebugAction_OpenFlagsVarsMenu(u8 taskId) Debug_ShowMenu(DebugTask_HandleMenuInput_FlagsVars, gMultiuseListMenuTemplate); } -static void DebugAction_OpenBattleMenu(u8 taskId) -{ - Debug_DestroyMenu(taskId); - sDebugMenuListData->listId = 1; - Debug_ShowMenu(DebugTask_HandleMenuInput_Battle, sDebugMenu_ListTemplate_Battle_0); -} static void DebugAction_OpenGiveMenu(u8 taskId) { Debug_DestroyMenu(taskId); Debug_ShowMenu(DebugTask_HandleMenuInput_Give, sDebugMenu_ListTemplate_Give); } + static void DebugAction_OpenFillMenu(u8 taskId) { Debug_DestroyMenu(taskId); Debug_ShowMenu(DebugTask_HandleMenuInput_Fill, sDebugMenu_ListTemplate_Fill); } + static void DebugAction_OpenSoundMenu(u8 taskId) { Debug_DestroyMenu(taskId); @@ -1575,66 +1716,49 @@ static void DebugAction_OpenSoundMenu(u8 taskId) // ******************************* // Actions Utilities -static void DebugAction_Util_HealParty(u8 taskId) -{ - PlaySE(SE_USE_ITEM); - HealPlayerParty(); - ScriptContext_Enable(); - Debug_DestroyMenu_Full(taskId); -} + static void DebugAction_Util_Fly(u8 taskId) { - FlagSet(FLAG_VISITED_LITTLEROOT_TOWN); - FlagSet(FLAG_VISITED_OLDALE_TOWN); - FlagSet(FLAG_VISITED_DEWFORD_TOWN); - FlagSet(FLAG_VISITED_LAVARIDGE_TOWN); - FlagSet(FLAG_VISITED_FALLARBOR_TOWN); - FlagSet(FLAG_VISITED_VERDANTURF_TOWN); - FlagSet(FLAG_VISITED_PACIFIDLOG_TOWN); - FlagSet(FLAG_VISITED_PETALBURG_CITY); - FlagSet(FLAG_VISITED_SLATEPORT_CITY); - FlagSet(FLAG_VISITED_MAUVILLE_CITY); - FlagSet(FLAG_VISITED_RUSTBORO_CITY); - FlagSet(FLAG_VISITED_FORTREE_CITY); - FlagSet(FLAG_VISITED_LILYCOVE_CITY); - FlagSet(FLAG_VISITED_MOSSDEEP_CITY); - FlagSet(FLAG_VISITED_SOOTOPOLIS_CITY); - FlagSet(FLAG_VISITED_EVER_GRANDE_CITY); - FlagSet(FLAG_LANDMARK_POKEMON_LEAGUE); - FlagSet(FLAG_LANDMARK_BATTLE_FRONTIER); Debug_DestroyMenu_Full(taskId); SetMainCallback2(CB2_OpenFlyMap); } +#define tMapGroup data[5] +#define tMapNum data[6] +#define tWarp data[7] + +#define LAST_MAP_GROUP (MAP_GROUPS_COUNT - 1) + static void DebugAction_Util_Warp_Warp(u8 taskId) { u8 windowId; - ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); - RemoveWindow(gTasks[taskId].data[1]); + ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE); + RemoveWindow(gTasks[taskId].tWindowId); HideMapNamePopUpWindow(); LoadMessageBoxAndBorderGfx(); windowId = AddWindow(&sDebugMenuWindowTemplateExtra); DrawStdWindowFrame(windowId, FALSE); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_FULL); - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); - ConvertIntToDecimalStringN(gStringVar2, MAP_GROUPS_COUNT-1, STR_CONV_MODE_LEADING_ZEROS, 2); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); + ConvertIntToDecimalStringN(gStringVar2, LAST_MAP_GROUP, STR_CONV_MODE_LEADING_ZEROS, 3); StringExpandPlaceholders(gStringVar1, sDebugText_Util_WarpToMap_SelMax); StringCopy(gStringVar3, gText_DigitIndicator[0]); StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectMapGroup); - AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Util_Warp_SelectMapGroup; - gTasks[taskId].data[2] = windowId; - gTasks[taskId].data[3] = 0; //Current Flag - gTasks[taskId].data[4] = 0; //Digit Selected - gTasks[taskId].data[5] = 0; //Map Group - gTasks[taskId].data[6] = 0; //Map - gTasks[taskId].data[7] = 0; //warp + gTasks[taskId].tSubWindowId = windowId; + gTasks[taskId].tInput = 0; + gTasks[taskId].tDigit = 0; + gTasks[taskId].tMapGroup = 0; + gTasks[taskId].tMapNum = 0; + gTasks[taskId].tWarp = 0; } + static void DebugAction_Util_Warp_SelectMapGroup(u8 taskId) { if (JOY_NEW(DPAD_ANY)) @@ -1642,48 +1766,48 @@ static void DebugAction_Util_Warp_SelectMapGroup(u8 taskId) PlaySE(SE_SELECT); if (JOY_NEW(DPAD_UP)) { - gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] > MAP_GROUPS_COUNT - 1) - gTasks[taskId].data[3] = MAP_GROUPS_COUNT - 1; + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput > LAST_MAP_GROUP) + gTasks[taskId].tInput = LAST_MAP_GROUP; } if (JOY_NEW(DPAD_DOWN)) { - gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < 0) - gTasks[taskId].data[3] = 0; + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < 0) + gTasks[taskId].tInput = 0; } if (JOY_NEW(DPAD_LEFT)) { - if (gTasks[taskId].data[4] > 0) - gTasks[taskId].data[4] -= 1; + if (gTasks[taskId].tDigit > 0) + gTasks[taskId].tDigit -= 1; } if (JOY_NEW(DPAD_RIGHT)) { - if (gTasks[taskId].data[4] < 2) - gTasks[taskId].data[4] += 1; + if (gTasks[taskId].tDigit < 2) + gTasks[taskId].tDigit += 1; } - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); - ConvertIntToDecimalStringN(gStringVar2, MAP_GROUPS_COUNT - 1, STR_CONV_MODE_LEADING_ZEROS, 2); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); + ConvertIntToDecimalStringN(gStringVar2, LAST_MAP_GROUP, STR_CONV_MODE_LEADING_ZEROS, 3); StringExpandPlaceholders(gStringVar1, sDebugText_Util_WarpToMap_SelMax); - StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); + StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].tDigit]); StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectMapGroup); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } if (JOY_NEW(A_BUTTON)) { - gTasks[taskId].data[5] = gTasks[taskId].data[3]; - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = 0; + gTasks[taskId].tMapGroup = gTasks[taskId].tInput; + gTasks[taskId].tInput = 0; + gTasks[taskId].tDigit = 0; - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, (MAP_GROUP_COUNT[gTasks[taskId].data[5]] - 1 >= 100) ? 3 : 2); - ConvertIntToDecimalStringN(gStringVar2, MAP_GROUP_COUNT[gTasks[taskId].data[5]] - 1, STR_CONV_MODE_LEADING_ZEROS, (MAP_GROUP_COUNT[gTasks[taskId].data[5]] - 1 >= 100) ? 3 : 2); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, (MAP_GROUP_COUNT[gTasks[taskId].tMapGroup] - 1 >= 100) ? 3 : 2); + ConvertIntToDecimalStringN(gStringVar2, MAP_GROUP_COUNT[gTasks[taskId].tMapGroup] - 1, STR_CONV_MODE_LEADING_ZEROS, (MAP_GROUP_COUNT[gTasks[taskId].tMapGroup] - 1 >= 100) ? 3 : 2); StringExpandPlaceholders(gStringVar1, sDebugText_Util_WarpToMap_SelMax); - GetMapName(gStringVar2, Overworld_GetMapHeaderByGroupAndId(gTasks[taskId].data[5], gTasks[taskId].data[3])->regionMapSectionId, 0); - StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); + GetMapName(gStringVar2, Overworld_GetMapHeaderByGroupAndId(gTasks[taskId].tMapGroup, gTasks[taskId].tInput)->regionMapSectionId, 0); + StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].tDigit]); StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectMap); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Util_Warp_SelectMap; } @@ -1693,55 +1817,56 @@ static void DebugAction_Util_Warp_SelectMapGroup(u8 taskId) DebugAction_DestroyExtraWindow(taskId); } } + static void DebugAction_Util_Warp_SelectMap(u8 taskId) { - u8 max_value = MAP_GROUP_COUNT[gTasks[taskId].data[5]]; //maps in the selected map group + u8 max_value = MAP_GROUP_COUNT[gTasks[taskId].tMapGroup]; //maps in the selected map group if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); if (JOY_NEW(DPAD_UP)) { - gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] > max_value - 1) - gTasks[taskId].data[3] = max_value - 1; + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput > max_value - 1) + gTasks[taskId].tInput = max_value - 1; } if (JOY_NEW(DPAD_DOWN)) { - gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < 0) - gTasks[taskId].data[3] = 0; + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < 0) + gTasks[taskId].tInput = 0; } if (JOY_NEW(DPAD_LEFT)) { - if (gTasks[taskId].data[4] > 0) - gTasks[taskId].data[4] -= 1; + if (gTasks[taskId].tDigit > 0) + gTasks[taskId].tDigit -= 1; } if (JOY_NEW(DPAD_RIGHT)) { - if (gTasks[taskId].data[4] < 2) - gTasks[taskId].data[4] += 1; + if (gTasks[taskId].tDigit < 2) + gTasks[taskId].tDigit += 1; } - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, (max_value >= 100) ? 3 : 2); - ConvertIntToDecimalStringN(gStringVar2, MAP_GROUP_COUNT[gTasks[taskId].data[5]] - 1, STR_CONV_MODE_LEADING_ZEROS, (max_value >= 100) ? 3 : 2); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, (max_value >= 100) ? 3 : 2); + ConvertIntToDecimalStringN(gStringVar2, MAP_GROUP_COUNT[gTasks[taskId].tMapGroup] - 1, STR_CONV_MODE_LEADING_ZEROS, (max_value >= 100) ? 3 : 2); StringExpandPlaceholders(gStringVar1, sDebugText_Util_WarpToMap_SelMax); - GetMapName(gStringVar2, Overworld_GetMapHeaderByGroupAndId(gTasks[taskId].data[5], gTasks[taskId].data[3])->regionMapSectionId, 0); - StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); + GetMapName(gStringVar2, Overworld_GetMapHeaderByGroupAndId(gTasks[taskId].tMapGroup, gTasks[taskId].tInput)->regionMapSectionId, 0); + StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].tDigit]); StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectMap); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } if (JOY_NEW(A_BUTTON)) { - gTasks[taskId].data[6] = gTasks[taskId].data[3]; - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = 0; + gTasks[taskId].tMapNum = gTasks[taskId].tInput; + gTasks[taskId].tInput = 0; + gTasks[taskId].tDigit = 0; - StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].tDigit]); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectWarp); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Util_Warp_SelectWarp; } else if (JOY_NEW(B_BUTTON)) @@ -1750,6 +1875,7 @@ static void DebugAction_Util_Warp_SelectMap(u8 taskId) DebugAction_DestroyExtraWindow(taskId); } } + static void DebugAction_Util_Warp_SelectWarp(u8 taskId) { if (JOY_NEW(DPAD_ANY)) @@ -1757,29 +1883,28 @@ static void DebugAction_Util_Warp_SelectWarp(u8 taskId) PlaySE(SE_SELECT); if (JOY_NEW(DPAD_UP)) { - gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] > 10) - gTasks[taskId].data[3] = 10; + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput > 10) + gTasks[taskId].tInput = 10; } if (JOY_NEW(DPAD_DOWN)) { - gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < 0) - gTasks[taskId].data[3] = 0; + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < 0) + gTasks[taskId].tInput = 0; } - StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].tDigit]); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectWarp); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } if (JOY_NEW(A_BUTTON)) { - gTasks[taskId].data[7] = gTasks[taskId].data[3]; - //WARP + gTasks[taskId].tWarp = gTasks[taskId].tInput; //If there's no warp with the number available, warp to the center of the map. - SetWarpDestinationToMapWarp(gTasks[taskId].data[5], gTasks[taskId].data[6], gTasks[taskId].data[7]); + SetWarpDestinationToMapWarp(gTasks[taskId].tMapGroup, gTasks[taskId].tMapNum, gTasks[taskId].tWarp); DoWarp(); ResetInitialPlayerAvatarState(); DebugAction_DestroyExtraWindow(taskId); @@ -1791,21 +1916,9 @@ static void DebugAction_Util_Warp_SelectWarp(u8 taskId) } } -static void DebugAction_Util_PoisonMons(u8 taskId) -{ - int i; - for (i = 0; i < PARTY_SIZE; i++) - { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, 0) - && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_NONE - && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG) - { - u32 curStatus = STATUS1_POISON; - SetMonData(&gPlayerParty[i], MON_DATA_STATUS, &curStatus); - } - } - PlaySE(SE_FIELD_POISON); -} +#undef tMapGroup +#undef tMapNum +#undef tWarp void CheckSaveBlock1Size(struct ScriptContext *ctx) { @@ -1813,6 +1926,7 @@ void CheckSaveBlock1Size(struct ScriptContext *ctx) u32 maxSb1Size = SECTOR_DATA_SIZE * (SECTOR_ID_SAVEBLOCK1_END - SECTOR_ID_SAVEBLOCK1_START + 1); ConvertIntToDecimalStringN(gStringVar1, currSb1Size, STR_CONV_MODE_LEFT_ALIGN, 6); ConvertIntToDecimalStringN(gStringVar2, maxSb1Size, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar3, maxSb1Size - currSb1Size, STR_CONV_MODE_LEFT_ALIGN, 6); } void CheckSaveBlock2Size(struct ScriptContext *ctx) @@ -1821,6 +1935,7 @@ void CheckSaveBlock2Size(struct ScriptContext *ctx) u32 maxSb2Size = SECTOR_DATA_SIZE; ConvertIntToDecimalStringN(gStringVar1, currSb2Size, STR_CONV_MODE_LEFT_ALIGN, 6); ConvertIntToDecimalStringN(gStringVar2, maxSb2Size, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar3, maxSb2Size - currSb2Size, STR_CONV_MODE_LEFT_ALIGN, 6); } void CheckPokemonStorageSize(struct ScriptContext *ctx) @@ -1829,13 +1944,67 @@ void CheckPokemonStorageSize(struct ScriptContext *ctx) u32 maxPkmnStorageSize = SECTOR_DATA_SIZE * (SECTOR_ID_PKMN_STORAGE_END - SECTOR_ID_PKMN_STORAGE_START + 1); ConvertIntToDecimalStringN(gStringVar1, currPkmnStorageSize, STR_CONV_MODE_LEFT_ALIGN, 6); ConvertIntToDecimalStringN(gStringVar2, maxPkmnStorageSize, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar3, maxPkmnStorageSize - currPkmnStorageSize, STR_CONV_MODE_LEFT_ALIGN, 6); } static void DebugAction_Util_CheckSaveBlock(u8 taskId) +{ + Debug_DestroyMenu_Full_Script(taskId, Debug_CheckSaveBlock); +} + +enum RoundMode +{ + ROUND_CEILING, + ROUND_NEAREST, + ROUND_FLOOR, +}; + +static u8 *ConvertQ22_10ToDecimalString(u8 *string, u32 q22_10, u32 decimalDigits, enum RoundMode roundMode) +{ + string = ConvertIntToDecimalStringN(string, q22_10 >> 10, STR_CONV_MODE_LEFT_ALIGN, 10); + + if (decimalDigits == 0) + return string; + + *string++ = CHAR_PERIOD; + + q22_10 &= (1 << 10) - 1; + while (decimalDigits-- > 1) + { + q22_10 *= 10; + *string++ = CHAR_0 + (q22_10 >> 10); + q22_10 &= (1 << 10) - 1; + } + + q22_10 *= 10; + switch (roundMode) + { + case ROUND_CEILING: q22_10 += (1 << 10) - 1; break; + case ROUND_NEAREST: q22_10 += 1 << (10 - 1); break; + case ROUND_FLOOR: break; + } + *string++ = CHAR_0 + (q22_10 >> 10); + + *string++ = EOS; + + return string; +} + +void CheckROMSize(struct ScriptContext *ctx) +{ + extern u8 __rom_end[]; + u32 currROMSizeB = __rom_end - (const u8 *)ROM_START; + u32 currROMSizeKB = (currROMSizeB + 1023) / 1024; + u32 currROMFreeKB = ((const u8 *)ROM_END - __rom_end) / 1024; + ConvertQ22_10ToDecimalString(gStringVar1, currROMSizeKB, 2, ROUND_CEILING); + ConvertQ22_10ToDecimalString(gStringVar2, currROMFreeKB, 2, ROUND_FLOOR); +} + +static void DebugAction_Util_CheckROMSpace(u8 taskId) { Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); - ScriptContext_SetupScript(Debug_CheckSaveBlock); + ScriptContext_SetupScript(Debug_CheckROMSpace); } static const u8 sWeatherNames[22][24] = { @@ -1858,33 +2027,34 @@ static const u8 sWeatherNames[22][24] = { [WEATHER_ROUTE119_CYCLE] = _("ROUTE119 CYCLE"), [WEATHER_ROUTE123_CYCLE] = _("ROUTE123 CYCLE"), }; -static const u8 sText_WeatherNotDefined[] = _("NOT DEFINED!!!"); +static const u8 sDebugText_WeatherNotDefined[] = _("NOT DEFINED!!!"); static void DebugAction_Util_Weather(u8 taskId) { u8 windowId; - ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); - RemoveWindow(gTasks[taskId].data[1]); + ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE); + RemoveWindow(gTasks[taskId].tWindowId); HideMapNamePopUpWindow(); LoadMessageBoxAndBorderGfx(); windowId = AddWindow(&sDebugMenuWindowTemplateWeather); DrawStdWindowFrame(windowId, FALSE); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_FULL); //Display initial ID StringCopy(gStringVar2, gText_DigitIndicator[0]); ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar1, sWeatherNames[0], CHAR_SPACE, 30); StringExpandPlaceholders(gStringVar4, sDebugText_Util_Weather_ID); - AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Util_Weather_SelectId; - gTasks[taskId].data[2] = windowId; - gTasks[taskId].data[3] = 0; //Current ID - gTasks[taskId].data[4] = 0; //Digit Selected + gTasks[taskId].tSubWindowId = windowId; + gTasks[taskId].tInput = 0; + gTasks[taskId].tDigit = 0; } + static void DebugAction_Util_Weather_SelectId(u8 taskId) { if (JOY_NEW(DPAD_ANY)) @@ -1893,44 +2063,44 @@ static void DebugAction_Util_Weather_SelectId(u8 taskId) if (JOY_NEW(DPAD_UP)) { - gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] > WEATHER_ROUTE123_CYCLE) - gTasks[taskId].data[3] = WEATHER_ROUTE123_CYCLE; + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput > WEATHER_ROUTE123_CYCLE) + gTasks[taskId].tInput = WEATHER_ROUTE123_CYCLE; } if (JOY_NEW(DPAD_DOWN)) { - gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < WEATHER_NONE) - gTasks[taskId].data[3] = WEATHER_NONE; + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < WEATHER_NONE) + gTasks[taskId].tInput = WEATHER_NONE; } if (JOY_NEW(DPAD_LEFT)) { - if (gTasks[taskId].data[4] > 0) - gTasks[taskId].data[4] -= 1; + if (gTasks[taskId].tDigit > 0) + gTasks[taskId].tDigit -= 1; } if (JOY_NEW(DPAD_RIGHT)) { - if (gTasks[taskId].data[4] < 2) - gTasks[taskId].data[4] += 1; + if (gTasks[taskId].tDigit < 2) + gTasks[taskId].tDigit += 1; } - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 2); - if (gTasks[taskId].data[3] <= 15 || gTasks[taskId].data[3] >= 20) - StringCopyPadded(gStringVar1, sWeatherNames[gTasks[taskId].data[3]], CHAR_SPACE, 30); + if (gTasks[taskId].tInput <= 15 || gTasks[taskId].tInput >= 20) + StringCopyPadded(gStringVar1, sWeatherNames[gTasks[taskId].tInput], CHAR_SPACE, 30); else - StringCopyPadded(gStringVar1, sText_WeatherNotDefined, CHAR_SPACE, 30); + StringCopyPadded(gStringVar1, sDebugText_WeatherNotDefined, CHAR_SPACE, 30); StringExpandPlaceholders(gStringVar4, sDebugText_Util_Weather_ID); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } if (JOY_NEW(A_BUTTON)) { - if (gTasks[taskId].data[3] <= 14 || gTasks[taskId].data[3] >= 20) + if (gTasks[taskId].tInput <= 14 || gTasks[taskId].tInput >= 20) { - gTasks[taskId].data[5] = gTasks[taskId].data[3]; + gTasks[taskId].data[5] = gTasks[taskId].tInput; SetWeather(gTasks[taskId].data[5]); } } @@ -1945,86 +2115,114 @@ static void DebugAction_Util_CheckWallClock(u8 taskId) { Debug_DestroyMenu_Full_Script(taskId, PlayersHouse_2F_EventScript_CheckWallClock); } + static void DebugAction_Util_SetWallClock(u8 taskId) { Debug_DestroyMenu_Full_Script(taskId, PlayersHouse_2F_EventScript_SetWallClock); } + static void DebugAction_Util_WatchCredits(u8 taskId) { - struct Task* task = &gTasks[taskId]; Debug_DestroyMenu_Full(taskId); SetMainCallback2(CB2_StartCreditsSequence); } -static void DebugAction_Util_Trainer_Name(u8 taskId) + +static void DebugAction_Util_Player_Name(u8 taskId) { - NewGameBirchSpeech_SetDefaultPlayerName(Random() % 20); - DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnToFieldContinueScript); + DoNamingScreen(NAMING_SCREEN_PLAYER, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnToFieldContinueScript); } -static void DebugAction_Util_Trainer_Gender(u8 taskId) + +static void DebugAction_Util_Player_Gender(u8 taskId) { - if (gSaveBlock2Ptr->playerGender == 0) // 0 Male, 1 Female - gSaveBlock2Ptr->playerGender = 1; + if (gSaveBlock2Ptr->playerGender == MALE) + gSaveBlock2Ptr->playerGender = FEMALE; else - gSaveBlock2Ptr->playerGender = 0; + gSaveBlock2Ptr->playerGender = MALE; Debug_DestroyMenu_Full(taskId); ScriptContext_Enable(); } -static void DebugAction_Util_Trainer_Id(u8 taskId) + +static void DebugAction_Util_Player_Id(u8 taskId) { u32 trainerId = ((Random() << 16) | Random()); SetTrainerId(trainerId, gSaveBlock2Ptr->playerTrainerId); Debug_DestroyMenu_Full(taskId); ScriptContext_Enable(); } -static void DebugAction_Util_Clear_Boxes(u8 taskId) -{ - ResetPokemonStorageSystem(); - Debug_DestroyMenu_Full(taskId); - ScriptContext_Enable(); -} + static void DebugAction_Util_CheatStart(u8 taskId) { + if (!FlagGet(FLAG_SYS_CLOCK_SET)) + RtcInitLocalTimeOffset(0, 0); + InitTimeBasedEvents(); Debug_DestroyMenu_Full_Script(taskId, Debug_CheatStart); } -static void DebugAction_Util_HatchAnEgg(u8 taskId) + +static void DebugAction_Util_ExpansionVersion(u8 taskId) { - Debug_DestroyMenu_Full_Script(taskId, Debug_HatchAnEgg); + Debug_DestroyMenu_Full(taskId); + LockPlayerFieldControls(); + ScriptContext_SetupScript(Debug_ShowExpansionVersion); +} + +void BufferExpansionVersion(struct ScriptContext *ctx) +{ + static const u8 sText_Released[] = _("\nRelease Build"); + static const u8 sText_Unreleased[] = _("\nDevelopment Build"); + u8 *string = gStringVar1; + *string++ = CHAR_v; + string = ConvertIntToDecimalStringN(string, EXPANSION_VERSION_MAJOR, STR_CONV_MODE_LEFT_ALIGN, 3); + *string++ = CHAR_PERIOD; + string = ConvertIntToDecimalStringN(string, EXPANSION_VERSION_MINOR, STR_CONV_MODE_LEFT_ALIGN, 3); + *string++ = CHAR_PERIOD; + string = ConvertIntToDecimalStringN(string, EXPANSION_VERSION_PATCH, STR_CONV_MODE_LEFT_ALIGN, 3); + if (EXPANSION_TAGGED_RELEASE) + string = StringCopy(string, sText_Released); + else + string = StringCopy(string, sText_Unreleased); } // ******************************* // Actions Scripts static void DebugAction_Util_Script_1(u8 taskId) { - Debug_DestroyMenu_Full_Script(taskId, Debug_Script_1); + Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_Script_1); } + static void DebugAction_Util_Script_2(u8 taskId) { - Debug_DestroyMenu_Full_Script(taskId, Debug_Script_2); + Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_Script_2); } + static void DebugAction_Util_Script_3(u8 taskId) { - Debug_DestroyMenu_Full_Script(taskId, Debug_Script_3); + Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_Script_3); } + static void DebugAction_Util_Script_4(u8 taskId) { - Debug_DestroyMenu_Full_Script(taskId, Debug_Script_4); + Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_Script_4); } + static void DebugAction_Util_Script_5(u8 taskId) { - Debug_DestroyMenu_Full_Script(taskId, Debug_Script_5); + Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_Script_5); } + static void DebugAction_Util_Script_6(u8 taskId) { - Debug_DestroyMenu_Full_Script(taskId, Debug_Script_6); + Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_Script_6); } + static void DebugAction_Util_Script_7(u8 taskId) { - Debug_DestroyMenu_Full_Script(taskId, Debug_Script_7); + Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_Script_7); } + static void DebugAction_Util_Script_8(u8 taskId) { - Debug_DestroyMenu_Full_Script(taskId, Debug_Script_8); + Debug_DestroyMenu_Full_Script(taskId, Debug_EventScript_Script_8); } // ******************************* @@ -2033,17 +2231,17 @@ static void DebugAction_FlagsVars_Flags(u8 taskId) { u8 windowId; - ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); - RemoveWindow(gTasks[taskId].data[1]); + ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE); + RemoveWindow(gTasks[taskId].tWindowId); HideMapNamePopUpWindow(); LoadMessageBoxAndBorderGfx(); windowId = AddWindow(&sDebugMenuWindowTemplateExtra); DrawStdWindowFrame(windowId, FALSE); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_FULL); - //Display initial Flag + // Display initial flag ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_FLAGS); ConvertIntToHexStringN(gStringVar2, 1, STR_CONV_MODE_LEFT_ALIGN, 3); StringExpandPlaceholders(gStringVar1, sDebugText_FlagsVars_FlagHex); @@ -2053,17 +2251,20 @@ static void DebugAction_FlagsVars_Flags(u8 taskId) StringCopyPadded(gStringVar2, sDebugText_False, CHAR_SPACE, 15); StringCopy(gStringVar3, gText_DigitIndicator[0]); StringExpandPlaceholders(gStringVar4, sDebugText_FlagsVars_Flag); - AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_FlagsVars_FlagsSelect; - gTasks[taskId].data[2] = windowId; - gTasks[taskId].data[3] = FLAG_TEMP_1; //Current Flag - gTasks[taskId].data[4] = 0; //Digit Selected + gTasks[taskId].tSubWindowId = windowId; + gTasks[taskId].tInput = FLAG_TEMP_1; + gTasks[taskId].tDigit = 0; } + static void DebugAction_FlagsVars_FlagsSelect(u8 taskId) { if (JOY_NEW(A_BUTTON)) - FlagToggle(gTasks[taskId].data[3]); + { + FlagToggle(gTasks[taskId].tInput); + } else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); @@ -2074,68 +2275,64 @@ static void DebugAction_FlagsVars_FlagsSelect(u8 taskId) if (JOY_NEW(DPAD_UP)) { PlaySE(SE_SELECT); - gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] >= FLAGS_COUNT){ - gTasks[taskId].data[3] = FLAGS_COUNT - 1; - } + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput >= FLAGS_COUNT) + gTasks[taskId].tInput = FLAGS_COUNT - 1; } if (JOY_NEW(DPAD_DOWN)) { PlaySE(SE_SELECT); - gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < 1){ - gTasks[taskId].data[3] = 1; - } + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < 1) + gTasks[taskId].tInput = 1; } if (JOY_NEW(DPAD_LEFT)) { PlaySE(SE_SELECT); - gTasks[taskId].data[4] -= 1; - if (gTasks[taskId].data[4] < 0) - { - gTasks[taskId].data[4] = 0; - } + gTasks[taskId].tDigit -= 1; + if (gTasks[taskId].tDigit < 0) + gTasks[taskId].tDigit = 0; } if (JOY_NEW(DPAD_RIGHT)) { PlaySE(SE_SELECT); - gTasks[taskId].data[4] += 1; - if (gTasks[taskId].data[4] > DEBUG_NUMBER_DIGITS_FLAGS - 1) - { - gTasks[taskId].data[4] = DEBUG_NUMBER_DIGITS_FLAGS - 1; - } + gTasks[taskId].tDigit += 1; + if (gTasks[taskId].tDigit > DEBUG_NUMBER_DIGITS_FLAGS - 1) + gTasks[taskId].tDigit = DEBUG_NUMBER_DIGITS_FLAGS - 1; } if (JOY_NEW(DPAD_ANY) || JOY_NEW(A_BUTTON)) { - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_FLAGS); - ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 3); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_FLAGS); + ConvertIntToHexStringN(gStringVar2, gTasks[taskId].tInput, STR_CONV_MODE_LEFT_ALIGN, 3); StringExpandPlaceholders(gStringVar1, sDebugText_FlagsVars_FlagHex); - if (FlagGet(gTasks[taskId].data[3]) == TRUE) + if (FlagGet(gTasks[taskId].tInput) == TRUE) StringCopyPadded(gStringVar2, sDebugText_True, CHAR_SPACE, 15); else StringCopyPadded(gStringVar2, sDebugText_False, CHAR_SPACE, 15); - StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); + StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].tDigit]); StringExpandPlaceholders(gStringVar4, sDebugText_FlagsVars_Flag); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } } +#define tVarValue data[5] + static void DebugAction_FlagsVars_Vars(u8 taskId) { u8 windowId; - ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); - RemoveWindow(gTasks[taskId].data[1]); + ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE); + RemoveWindow(gTasks[taskId].tWindowId); HideMapNamePopUpWindow(); LoadMessageBoxAndBorderGfx(); windowId = AddWindow(&sDebugMenuWindowTemplateExtra); DrawStdWindowFrame(windowId, FALSE); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_FULL); - //Display initial Variable + // Display initial var ConvertIntToDecimalStringN(gStringVar1, VARS_START, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); ConvertIntToHexStringN(gStringVar2, VARS_START, STR_CONV_MODE_LEFT_ALIGN, 4); StringExpandPlaceholders(gStringVar1, sDebugText_FlagsVars_VariableHex); @@ -2143,79 +2340,79 @@ static void DebugAction_FlagsVars_Vars(u8 taskId) StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar2, gText_DigitIndicator[0]); StringExpandPlaceholders(gStringVar4, sDebugText_FlagsVars_Variable); - AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_FlagsVars_Select; - gTasks[taskId].data[2] = windowId; - gTasks[taskId].data[3] = VARS_START; //Current Variable - gTasks[taskId].data[4] = 0; //Digit Selected - gTasks[taskId].data[5] = 0; //Current Variable VALUE + gTasks[taskId].tSubWindowId = windowId; + gTasks[taskId].tInput = VARS_START; + gTasks[taskId].tDigit = 0; + gTasks[taskId].tVarValue = 0; } static void DebugAction_FlagsVars_Select(u8 taskId) { if (JOY_NEW(DPAD_UP)) { - gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] > VARS_END) - gTasks[taskId].data[3] = VARS_END; + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput > VARS_END) + gTasks[taskId].tInput = VARS_END; } if (JOY_NEW(DPAD_DOWN)) { - gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < VARS_START) - gTasks[taskId].data[3] = VARS_START; + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < VARS_START) + gTasks[taskId].tInput = VARS_START; } if (JOY_NEW(DPAD_LEFT)) { - gTasks[taskId].data[4] -= 1; - if (gTasks[taskId].data[4] < 0) - gTasks[taskId].data[4] = 0; + gTasks[taskId].tDigit -= 1; + if (gTasks[taskId].tDigit < 0) + gTasks[taskId].tDigit = 0; } if (JOY_NEW(DPAD_RIGHT)) { - gTasks[taskId].data[4] += 1; - if (gTasks[taskId].data[4] > DEBUG_NUMBER_DIGITS_VARIABLES - 1) - gTasks[taskId].data[4] = DEBUG_NUMBER_DIGITS_VARIABLES - 1; + gTasks[taskId].tDigit += 1; + if (gTasks[taskId].tDigit > DEBUG_NUMBER_DIGITS_VARIABLES - 1) + gTasks[taskId].tDigit = DEBUG_NUMBER_DIGITS_VARIABLES - 1; } if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); - ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 4); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); + ConvertIntToHexStringN(gStringVar2, gTasks[taskId].tInput, STR_CONV_MODE_LEFT_ALIGN, 4); StringExpandPlaceholders(gStringVar1, sDebugText_FlagsVars_VariableHex); - if (VarGetIfExist(gTasks[taskId].data[3]) == 65535) //Current value, if 65535 the value hasnt been set - gTasks[taskId].data[5] = 0; + if (VarGetIfExist(gTasks[taskId].tInput) == 0xFFFF) + gTasks[taskId].tVarValue = 0; else - gTasks[taskId].data[5] = VarGet(gTasks[taskId].data[3]); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[5], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); //Current digit + gTasks[taskId].tVarValue = VarGet(gTasks[taskId].tInput); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tVarValue, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); //Combine str's to full window string StringExpandPlaceholders(gStringVar4, sDebugText_FlagsVars_Variable); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } if (JOY_NEW(A_BUTTON)) { - gTasks[taskId].data[4] = 0; + gTasks[taskId].tDigit = 0; PlaySE(SE_SELECT); - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); - ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 4); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); + ConvertIntToHexStringN(gStringVar2, gTasks[taskId].tInput, STR_CONV_MODE_LEFT_ALIGN, 4); StringExpandPlaceholders(gStringVar1, sDebugText_FlagsVars_VariableHex); - if (VarGetIfExist(gTasks[taskId].data[3]) == 65535) //Current value if 65535 the value hasnt been set - gTasks[taskId].data[5] = 0; + if (VarGetIfExist(gTasks[taskId].tInput) == 0xFFFF) + gTasks[taskId].tVarValue = 0; else - gTasks[taskId].data[5] = VarGet(gTasks[taskId].data[3]); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[5], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); + gTasks[taskId].tVarValue = VarGet(gTasks[taskId].tInput); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tVarValue, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); //Current digit + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); StringExpandPlaceholders(gStringVar4, sDebugText_FlagsVars_VariableValueSet); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].data[6] = gTasks[taskId].data[5]; //New value selector gTasks[taskId].func = DebugAction_FlagsVars_SetValue; @@ -2227,12 +2424,13 @@ static void DebugAction_FlagsVars_Select(u8 taskId) return; } } + static void DebugAction_FlagsVars_SetValue(u8 taskId) { if (JOY_NEW(DPAD_UP)) { - if (gTasks[taskId].data[6] + sPowersOfTen[gTasks[taskId].data[4]] <= 32000) - gTasks[taskId].data[6] += sPowersOfTen[gTasks[taskId].data[4]]; + if (gTasks[taskId].data[6] + sPowersOfTen[gTasks[taskId].tDigit] <= 32000) + gTasks[taskId].data[6] += sPowersOfTen[gTasks[taskId].tDigit]; else gTasks[taskId].data[6] = 32000 - 1; @@ -2241,32 +2439,27 @@ static void DebugAction_FlagsVars_SetValue(u8 taskId) } if (JOY_NEW(DPAD_DOWN)) { - gTasks[taskId].data[6] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[6] < 0){ + gTasks[taskId].data[6] -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].data[6] < 0) gTasks[taskId].data[6] = 0; - } } if (JOY_NEW(DPAD_LEFT)) { - gTasks[taskId].data[4] -= 1; - if (gTasks[taskId].data[4] < 0) - { - gTasks[taskId].data[4] = 0; - } + gTasks[taskId].tDigit -= 1; + if (gTasks[taskId].tDigit < 0) + gTasks[taskId].tDigit = 0; } if (JOY_NEW(DPAD_RIGHT)) { - gTasks[taskId].data[4] += 1; - if (gTasks[taskId].data[4] > 4) - { - gTasks[taskId].data[4] = 4; - } + gTasks[taskId].tDigit += 1; + if (gTasks[taskId].tDigit > 4) + gTasks[taskId].tDigit = 4; } if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - VarSet(gTasks[taskId].data[3], gTasks[taskId].data[6]); + VarSet(gTasks[taskId].tInput, gTasks[taskId].data[6]); } else if (JOY_NEW(B_BUTTON)) { @@ -2279,18 +2472,20 @@ static void DebugAction_FlagsVars_SetValue(u8 taskId) { PlaySE(SE_SELECT); - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); - ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 4); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); + ConvertIntToHexStringN(gStringVar2, gTasks[taskId].tInput, STR_CONV_MODE_LEFT_ALIGN, 4); StringExpandPlaceholders(gStringVar1, sDebugText_FlagsVars_VariableHex); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[6], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); //Current digit + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); StringExpandPlaceholders(gStringVar4, sDebugText_FlagsVars_VariableValueSet); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } } +#undef tVarValue + static void DebugAction_FlagsVars_PokedexFlags_All(u8 taskId) { u16 i; @@ -2302,6 +2497,7 @@ static void DebugAction_FlagsVars_PokedexFlags_All(u8 taskId) Debug_DestroyMenu_Full(taskId); ScriptContext_Enable(); } + static void DebugAction_FlagsVars_PokedexFlags_Reset(u8 taskId) { int boxId, boxPosition, partyId; @@ -2338,6 +2534,7 @@ static void DebugAction_FlagsVars_PokedexFlags_Reset(u8 taskId) Debug_DestroyMenu_Full(taskId); ScriptContext_Enable(); } + static void DebugAction_FlagsVars_SwitchDex(u8 taskId) { if (FlagGet(FLAG_SYS_POKEDEX_GET)) @@ -2346,17 +2543,21 @@ static void DebugAction_FlagsVars_SwitchDex(u8 taskId) PlaySE(SE_PC_LOGIN); FlagToggle(FLAG_SYS_POKEDEX_GET); } + static void DebugAction_FlagsVars_SwitchNatDex(u8 taskId) { if (IsNationalPokedexEnabled()) { DisableNationalPokedex(); PlaySE(SE_PC_OFF); - }else{ + } + else + { EnableNationalPokedex(); PlaySE(SE_PC_LOGIN); } } + static void DebugAction_FlagsVars_SwitchPokeNav(u8 taskId) { if (FlagGet(FLAG_SYS_POKENAV_GET)) @@ -2365,6 +2566,23 @@ static void DebugAction_FlagsVars_SwitchPokeNav(u8 taskId) PlaySE(SE_PC_LOGIN); FlagToggle(FLAG_SYS_POKENAV_GET); } + +static void DebugAction_FlagsVars_SwitchMatchCall(u8 taskId) +{ + if (FlagGet(FLAG_ADDED_MATCH_CALL_TO_POKENAV)) + { + PlaySE(SE_PC_OFF); + FlagClear(FLAG_ADDED_MATCH_CALL_TO_POKENAV); + FlagClear(FLAG_HAS_MATCH_CALL); + } + else + { + PlaySE(SE_PC_LOGIN); + FlagSet(FLAG_ADDED_MATCH_CALL_TO_POKENAV); + FlagSet(FLAG_HAS_MATCH_CALL); + } +} + static void DebugAction_FlagsVars_RunningShoes(u8 taskId) { if (FlagGet(FLAG_SYS_B_DASH)) @@ -2373,13 +2591,12 @@ static void DebugAction_FlagsVars_RunningShoes(u8 taskId) PlaySE(SE_PC_LOGIN); FlagToggle(FLAG_SYS_B_DASH); } + static void DebugAction_FlagsVars_ToggleFlyFlags(u8 taskId) { - // Sound effect if (FlagGet(FLAG_LANDMARK_BATTLE_FRONTIER)) { PlaySE(SE_PC_OFF); - FlagClear(FLAG_VISITED_LITTLEROOT_TOWN); FlagClear(FLAG_VISITED_OLDALE_TOWN); FlagClear(FLAG_VISITED_DEWFORD_TOWN); @@ -2402,7 +2619,6 @@ static void DebugAction_FlagsVars_ToggleFlyFlags(u8 taskId) else { PlaySE(SE_PC_LOGIN); - FlagSet(FLAG_VISITED_LITTLEROOT_TOWN); FlagSet(FLAG_VISITED_OLDALE_TOWN); FlagSet(FLAG_VISITED_DEWFORD_TOWN); @@ -2423,22 +2639,35 @@ static void DebugAction_FlagsVars_ToggleFlyFlags(u8 taskId) FlagSet(FLAG_LANDMARK_BATTLE_FRONTIER); } } + static void DebugAction_FlagsVars_ToggleBadgeFlags(u8 taskId) { - // Sound effect if (FlagGet(FLAG_BADGE08_GET)) + { PlaySE(SE_PC_OFF); + FlagClear(FLAG_BADGE01_GET); + FlagClear(FLAG_BADGE02_GET); + FlagClear(FLAG_BADGE03_GET); + FlagClear(FLAG_BADGE04_GET); + FlagClear(FLAG_BADGE05_GET); + FlagClear(FLAG_BADGE06_GET); + FlagClear(FLAG_BADGE07_GET); + FlagClear(FLAG_BADGE08_GET); + } else + { PlaySE(SE_PC_LOGIN); - FlagToggle(FLAG_BADGE01_GET); - FlagToggle(FLAG_BADGE02_GET); - FlagToggle(FLAG_BADGE03_GET); - FlagToggle(FLAG_BADGE04_GET); - FlagToggle(FLAG_BADGE05_GET); - FlagToggle(FLAG_BADGE06_GET); - FlagToggle(FLAG_BADGE07_GET); - FlagToggle(FLAG_BADGE08_GET); + FlagSet(FLAG_BADGE01_GET); + FlagSet(FLAG_BADGE02_GET); + FlagSet(FLAG_BADGE03_GET); + FlagSet(FLAG_BADGE04_GET); + FlagSet(FLAG_BADGE05_GET); + FlagSet(FLAG_BADGE06_GET); + FlagSet(FLAG_BADGE07_GET); + FlagSet(FLAG_BADGE08_GET); + } } + static void DebugAction_FlagsVars_ToggleFrontierPass(u8 taskId) { // Sound effect @@ -2448,6 +2677,7 @@ static void DebugAction_FlagsVars_ToggleFrontierPass(u8 taskId) PlaySE(SE_PC_LOGIN); FlagToggle(FLAG_SYS_FRONTIER_PASS); } + static void DebugAction_FlagsVars_CollisionOnOff(u8 taskId) { #if OW_FLAG_NO_COLLISION == 0 @@ -2460,6 +2690,7 @@ static void DebugAction_FlagsVars_CollisionOnOff(u8 taskId) FlagToggle(OW_FLAG_NO_COLLISION); #endif } + static void DebugAction_FlagsVars_EncounterOnOff(u8 taskId) { #if OW_FLAG_NO_ENCOUNTER == 0 @@ -2472,6 +2703,7 @@ static void DebugAction_FlagsVars_EncounterOnOff(u8 taskId) FlagToggle(OW_FLAG_NO_ENCOUNTER); #endif } + static void DebugAction_FlagsVars_TrainerSeeOnOff(u8 taskId) { #if OW_FLAG_NO_TRAINER_SEE == 0 @@ -2484,6 +2716,7 @@ static void DebugAction_FlagsVars_TrainerSeeOnOff(u8 taskId) FlagToggle(OW_FLAG_NO_TRAINER_SEE); #endif } + static void DebugAction_FlagsVars_BagUseOnOff(u8 taskId) { #if B_FLAG_NO_BAG_USE == 0 @@ -2496,6 +2729,7 @@ static void DebugAction_FlagsVars_BagUseOnOff(u8 taskId) FlagToggle(B_FLAG_NO_BAG_USE); #endif } + static void DebugAction_FlagsVars_CatchingOnOff(u8 taskId) { #if B_FLAG_NO_CATCHING == 0 @@ -2512,37 +2746,41 @@ static void DebugAction_FlagsVars_CatchingOnOff(u8 taskId) // ******************************* // Actions Give #define ITEM_TAG 0xFDF3 +#define tItemId data[5] +#define tSpriteId data[6] + static void DebugAction_Give_Item(u8 taskId) { u8 windowId; - ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); - RemoveWindow(gTasks[taskId].data[1]); + ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE); + RemoveWindow(gTasks[taskId].tWindowId); HideMapNamePopUpWindow(); LoadMessageBoxAndBorderGfx(); windowId = AddWindow(&sDebugMenuWindowTemplateExtra); DrawStdWindowFrame(windowId, FALSE); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_FULL); - //Display initial ID + // Display initial item StringCopy(gStringVar2, gText_DigitIndicator[0]); ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); CopyItemName(1, gStringVar1); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_ItemID); - AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Item_SelectId; - gTasks[taskId].data[2] = windowId; - gTasks[taskId].data[3] = 1; //Current ID - gTasks[taskId].data[4] = 0; //Digit Selected - gTasks[taskId].data[6] = AddItemIconSprite(ITEM_TAG, ITEM_TAG, gTasks[taskId].data[3]); - gSprites[gTasks[taskId].data[6]].x2 = DEBUG_NUMBER_ICON_X+10; - gSprites[gTasks[taskId].data[6]].y2 = DEBUG_NUMBER_ICON_Y+10; - gSprites[gTasks[taskId].data[6]].oam.priority = 0; + gTasks[taskId].tSubWindowId = windowId; + gTasks[taskId].tInput = 1; + gTasks[taskId].tDigit = 0; + gTasks[taskId].tSpriteId = AddItemIconSprite(ITEM_TAG, ITEM_TAG, gTasks[taskId].tInput); + gSprites[gTasks[taskId].tSpriteId].x2 = DEBUG_NUMBER_ICON_X+10; + gSprites[gTasks[taskId].tSpriteId].y2 = DEBUG_NUMBER_ICON_Y+10; + gSprites[gTasks[taskId].tSpriteId].oam.priority = 0; } + static void DebugAction_Give_Item_SelectId(u8 taskId) { if (JOY_NEW(DPAD_ANY)) @@ -2551,72 +2789,73 @@ static void DebugAction_Give_Item_SelectId(u8 taskId) if (JOY_NEW(DPAD_UP)) { - gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] >= ITEMS_COUNT) - gTasks[taskId].data[3] = ITEMS_COUNT - 1; + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput >= ITEMS_COUNT) + gTasks[taskId].tInput = ITEMS_COUNT - 1; } if (JOY_NEW(DPAD_DOWN)) { - gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < 1) - gTasks[taskId].data[3] = 1; + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < 1) + gTasks[taskId].tInput = 1; } if (JOY_NEW(DPAD_LEFT)) { - if (gTasks[taskId].data[4] > 0) - gTasks[taskId].data[4] -= 1; + if (gTasks[taskId].tDigit > 0) + gTasks[taskId].tDigit -= 1; } if (JOY_NEW(DPAD_RIGHT)) { - if (gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS - 1) - gTasks[taskId].data[4] += 1; + if (gTasks[taskId].tDigit < DEBUG_NUMBER_DIGITS_ITEMS - 1) + gTasks[taskId].tDigit += 1; } - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - CopyItemName(gTasks[taskId].data[3], gStringVar1); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + CopyItemName(gTasks[taskId].tInput, gStringVar1); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); StringExpandPlaceholders(gStringVar4, sDebugText_ItemID); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); - FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon - FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon - FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon - DestroySprite(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon - gTasks[taskId].data[6] = AddItemIconSprite(ITEM_TAG, ITEM_TAG, gTasks[taskId].data[3]); - gSprites[gTasks[taskId].data[6]].x2 = DEBUG_NUMBER_ICON_X+10; - gSprites[gTasks[taskId].data[6]].y2 = DEBUG_NUMBER_ICON_Y+10; - gSprites[gTasks[taskId].data[6]].oam.priority = 0; + FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon + FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon + FreeSpriteOamMatrix(&gSprites[gTasks[taskId].tSpriteId]); //Destroy item icon + DestroySprite(&gSprites[gTasks[taskId].tSpriteId]); //Destroy item icon + gTasks[taskId].tSpriteId = AddItemIconSprite(ITEM_TAG, ITEM_TAG, gTasks[taskId].tInput); + gSprites[gTasks[taskId].tSpriteId].x2 = DEBUG_NUMBER_ICON_X+10; + gSprites[gTasks[taskId].tSpriteId].y2 = DEBUG_NUMBER_ICON_Y+10; + gSprites[gTasks[taskId].tSpriteId].oam.priority = 0; } if (JOY_NEW(A_BUTTON)) { - gTasks[taskId].data[5] = gTasks[taskId].data[3]; - gTasks[taskId].data[3] = 1; - gTasks[taskId].data[4] = 0; + gTasks[taskId].tItemId = gTasks[taskId].tInput; + gTasks[taskId].tInput = 1; + gTasks[taskId].tDigit = 0; - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEM_QUANTITY); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEM_QUANTITY); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_ItemQuantity); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Item_SelectQuantity; } else if (JOY_NEW(B_BUTTON)) { - FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon - FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon - FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon - DestroySprite(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon + FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon + FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon + FreeSpriteOamMatrix(&gSprites[gTasks[taskId].tSpriteId]); //Destroy item icon + DestroySprite(&gSprites[gTasks[taskId].tSpriteId]); //Destroy item icon PlaySE(SE_SELECT); DebugAction_DestroyExtraWindow(taskId); } } + static void DebugAction_Give_Item_SelectQuantity(u8 taskId) { - u32 itemId = gTasks[taskId].data[5]; + u32 itemId = gTasks[taskId].tItemId; if (JOY_NEW(DPAD_ANY)) { @@ -2625,57 +2864,60 @@ static void DebugAction_Give_Item_SelectQuantity(u8 taskId) if (JOY_NEW(DPAD_UP)) { u32 maxCapacity = (ItemId_GetPocket(itemId) - 1 == BERRIES_POCKET) ? MAX_BERRY_CAPACITY : MAX_BAG_ITEM_CAPACITY; - gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] > maxCapacity) - gTasks[taskId].data[3] = maxCapacity; + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput > maxCapacity) + gTasks[taskId].tInput = maxCapacity; } if (JOY_NEW(DPAD_DOWN)) { - gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < 1) - gTasks[taskId].data[3] = 1; + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < 1) + gTasks[taskId].tInput = 1; } if (JOY_NEW(DPAD_LEFT)) { - if (gTasks[taskId].data[4] > 0) - gTasks[taskId].data[4] -= 1; + if (gTasks[taskId].tDigit > 0) + gTasks[taskId].tDigit -= 1; } if (JOY_NEW(DPAD_RIGHT)) { - if (gTasks[taskId].data[4] < 2) - gTasks[taskId].data[4] += 1; + if (gTasks[taskId].tDigit < 2) + gTasks[taskId].tDigit += 1; } - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEM_QUANTITY); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEM_QUANTITY); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_ItemQuantity); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } if (JOY_NEW(A_BUTTON)) { - FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon - FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon - FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon - DestroySprite(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon + FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon + FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon + FreeSpriteOamMatrix(&gSprites[gTasks[taskId].tSpriteId]); //Destroy item icon + DestroySprite(&gSprites[gTasks[taskId].tSpriteId]); //Destroy item icon PlaySE(MUS_OBTAIN_ITEM); - AddBagItem(itemId, gTasks[taskId].data[3]); + AddBagItem(itemId, gTasks[taskId].tInput); DebugAction_DestroyExtraWindow(taskId); } else if (JOY_NEW(B_BUTTON)) { - FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon - FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon - FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon - DestroySprite(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon + FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon + FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon + FreeSpriteOamMatrix(&gSprites[gTasks[taskId].tSpriteId]); //Destroy item icon + DestroySprite(&gSprites[gTasks[taskId].tSpriteId]); //Destroy item icon PlaySE(SE_SELECT); DebugAction_DestroyExtraWindow(taskId); } } +#undef tItemId +#undef tSpriteId + //TMs static void DebugAction_Give_AllTMs(u8 taskId) { @@ -2686,6 +2928,7 @@ static void DebugAction_Give_AllTMs(u8 taskId) if (ItemIdToBattleMoveId(i) != MOVE_NONE && !CheckBagHasItem(i, 1)) AddBagItem(i, 1); } + Debug_DestroyMenu_Full(taskId); ScriptContext_Enable(); } @@ -2693,11 +2936,11 @@ static void DebugAction_Give_AllTMs(u8 taskId) //Pokemon static void ResetMonDataStruct(struct DebugMonData *sDebugMonData) { - sDebugMonData->mon_speciesId = 1; - sDebugMonData->mon_level = 1; + sDebugMonData->species = 1; + sDebugMonData->level = MIN_LEVEL; sDebugMonData->isShiny = 0; - sDebugMonData->mon_natureId = 0; - sDebugMonData->mon_abilityNum = 0; + sDebugMonData->nature = 0; + sDebugMonData->abilityNum = 0; sDebugMonData->mon_iv_hp = 0; sDebugMonData->mon_iv_atk = 0; sDebugMonData->mon_iv_def = 0; @@ -2705,6 +2948,11 @@ static void ResetMonDataStruct(struct DebugMonData *sDebugMonData) sDebugMonData->mon_iv_satk = 0; sDebugMonData->mon_iv_sdef = 0; } + +#define tIsComplex data[5] +#define tSpriteId data[6] +#define tIterator data[7] + static void DebugAction_Give_PokemonSimple(u8 taskId) { u8 windowId; @@ -2714,35 +2962,37 @@ static void DebugAction_Give_PokemonSimple(u8 taskId) ResetMonDataStruct(sDebugMonData); //Window initialization - ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); - RemoveWindow(gTasks[taskId].data[1]); + ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE); + RemoveWindow(gTasks[taskId].tWindowId); HideMapNamePopUpWindow(); LoadMessageBoxAndBorderGfx(); windowId = AddWindow(&sDebugMenuWindowTemplateExtra); DrawStdWindowFrame(windowId, FALSE); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_FULL); - //Display initial ID + // Display initial Pokémon StringCopy(gStringVar2, gText_DigitIndicator[0]); - ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, 3); - StringCopy(gStringVar1, GetSpeciesName(1)); + ConvertIntToDecimalStringN(gStringVar3, sDebugMonData->species, STR_CONV_MODE_LEADING_ZEROS, 3); + StringCopy(gStringVar1, GetSpeciesName(sDebugMonData->species)); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonID); - AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); //Set task data gTasks[taskId].func = DebugAction_Give_Pokemon_SelectId; - gTasks[taskId].data[2] = windowId; - gTasks[taskId].data[3] = 1; //Current ID - gTasks[taskId].data[4] = 0; //Digit Selected - gTasks[taskId].data[5] = 0; //Complex? - FreeMonIconPalettes(); //Free space for new pallete - LoadMonIconPalette(gTasks[taskId].data[3]); //Loads pallete for current mon - gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0); //Create pokemon sprite - gSprites[gTasks[taskId].data[6]].oam.priority = 0; //Mon Icon ID + gTasks[taskId].tSubWindowId = windowId; + gTasks[taskId].tInput = sDebugMonData->species; + gTasks[taskId].tDigit = 0; + gTasks[taskId].tIsComplex = FALSE; + + FreeMonIconPalettes(); + LoadMonIconPalette(gTasks[taskId].tInput); + gTasks[taskId].tSpriteId = CreateMonIcon(gTasks[taskId].tInput, SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0); + gSprites[gTasks[taskId].tSpriteId].oam.priority = 0; } + static void DebugAction_Give_PokemonComplex(u8 taskId) { u8 windowId; @@ -2752,34 +3002,35 @@ static void DebugAction_Give_PokemonComplex(u8 taskId) ResetMonDataStruct(sDebugMonData); //Window initialization - ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); - RemoveWindow(gTasks[taskId].data[1]); + ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE); + RemoveWindow(gTasks[taskId].tWindowId); HideMapNamePopUpWindow(); LoadMessageBoxAndBorderGfx(); windowId = AddWindow(&sDebugMenuWindowTemplateExtra); DrawStdWindowFrame(windowId, FALSE); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_FULL); - //Display initial ID + // Display initial Pokémon StringCopy(gStringVar2, gText_DigitIndicator[0]); - ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, 4); - StringCopy(gStringVar1, GetSpeciesName(1)); + ConvertIntToDecimalStringN(gStringVar3, sDebugMonData->species, STR_CONV_MODE_LEADING_ZEROS, 4); + StringCopy(gStringVar1, GetSpeciesName(sDebugMonData->species)); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonID); - AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectId; - gTasks[taskId].data[2] = windowId; - gTasks[taskId].data[3] = 1; //Current ID - gTasks[taskId].data[4] = 0; //Digit Selected - gTasks[taskId].data[5] = 1; //Complex? - FreeMonIconPalettes(); //Free space for new palletes - LoadMonIconPalette(gTasks[taskId].data[3]); //Loads pallete for current mon - gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0); //Create pokemon sprite - gSprites[gTasks[taskId].data[6]].oam.priority = 0; //Mon Icon ID - gTasks[taskId].data[7] = 0; //iterator + gTasks[taskId].tSubWindowId = windowId; + gTasks[taskId].tInput = 1; + gTasks[taskId].tDigit = 0; + gTasks[taskId].tIsComplex = TRUE; + + FreeMonIconPalettes(); + LoadMonIconPalette(gTasks[taskId].tInput); + gTasks[taskId].tSpriteId = CreateMonIcon(gTasks[taskId].tInput, SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0); + gSprites[gTasks[taskId].tSpriteId].oam.priority = 0; + gTasks[taskId].tIterator = 0; } static void DebugAction_Give_Pokemon_SelectId(u8 taskId) @@ -2790,64 +3041,65 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) if (JOY_NEW(DPAD_UP)) { - gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] >= NUM_SPECIES) - gTasks[taskId].data[3] = NUM_SPECIES - 1; + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput >= NUM_SPECIES) + gTasks[taskId].tInput = NUM_SPECIES - 1; } if (JOY_NEW(DPAD_DOWN)) { - gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < 1) - gTasks[taskId].data[3] = 1; + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < 1) + gTasks[taskId].tInput = 1; } if (JOY_NEW(DPAD_LEFT)) { - if (gTasks[taskId].data[4] > 0) - gTasks[taskId].data[4] -= 1; + if (gTasks[taskId].tDigit > 0) + gTasks[taskId].tDigit -= 1; } if (JOY_NEW(DPAD_RIGHT)) { - if (gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS - 1) - gTasks[taskId].data[4] += 1; + if (gTasks[taskId].tDigit < DEBUG_NUMBER_DIGITS_ITEMS - 1) + gTasks[taskId].tDigit += 1; } - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringCopy(gStringVar1, GetSpeciesName(gTasks[taskId].data[3])); //CopyItemName(gTasks[taskId].data[3], gStringVar1); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + StringCopy(gStringVar1, GetSpeciesName(gTasks[taskId].tInput)); //CopyItemName(gTasks[taskId].tInput, gStringVar1); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 4); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 4); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonID); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); - FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); - FreeMonIconPalettes(); //Free space for new pallete - LoadMonIconPalette(gTasks[taskId].data[3]); //Loads pallete for current mon - gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0); //Create pokemon sprite - gSprites[gTasks[taskId].data[6]].oam.priority = 0; + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].tSpriteId]); + FreeMonIconPalettes(); + LoadMonIconPalette(gTasks[taskId].tInput); + gTasks[taskId].tSpriteId = CreateMonIcon(gTasks[taskId].tInput, SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0); + gSprites[gTasks[taskId].tSpriteId].oam.priority = 0; } if (JOY_NEW(A_BUTTON)) { - sDebugMonData->mon_speciesId = gTasks[taskId].data[3]; //Species ID - gTasks[taskId].data[3] = 1; - gTasks[taskId].data[4] = 0; + sDebugMonData->species = gTasks[taskId].tInput; + gTasks[taskId].tInput = 1; + gTasks[taskId].tDigit = 0; - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonLevel); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectLevel; } else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - Free(sDebugMonData); //Frees EWRAM of MonData Struct + Free(sDebugMonData); FreeMonIconPalettes(); - FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); //Destroy pokemon sprite + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].tSpriteId]); DebugAction_DestroyExtraWindow(taskId); } } + static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) { if (JOY_NEW(DPAD_ANY)) @@ -2856,58 +3108,58 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) if (JOY_NEW(DPAD_UP)) { - gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] > 100) - gTasks[taskId].data[3] = 100; + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput > 100) + gTasks[taskId].tInput = 100; } if (JOY_NEW(DPAD_DOWN)) { - gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < 1) - gTasks[taskId].data[3] = 1; + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < 1) + gTasks[taskId].tInput = 1; } if (JOY_NEW(DPAD_LEFT)) { - if (gTasks[taskId].data[4] > 0) - gTasks[taskId].data[4] -= 1; + if (gTasks[taskId].tDigit > 0) + gTasks[taskId].tDigit -= 1; } if (JOY_NEW(DPAD_RIGHT)) { - if (gTasks[taskId].data[4] < 2) - gTasks[taskId].data[4] += 1; + if (gTasks[taskId].tDigit < 2) + gTasks[taskId].tDigit += 1; } - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonLevel); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } if (JOY_NEW(A_BUTTON)) { FreeMonIconPalettes(); - FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); //Destroy pokemon sprite - if (gTasks[taskId].data[5] == 0) + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].tSpriteId]); + if (gTasks[taskId].tIsComplex == FALSE) { PlaySE(MUS_LEVEL_UP); - ScriptGiveMon(sDebugMonData->mon_speciesId, gTasks[taskId].data[3], ITEM_NONE, 0,0,0); + ScriptGiveMon(sDebugMonData->species, gTasks[taskId].tInput, ITEM_NONE, 0, 0, 0); // Set flag for user convenience FlagSet(FLAG_SYS_POKEMON_GET); - Free(sDebugMonData); //Frees EWRAM of MonData Struct + Free(sDebugMonData); DebugAction_DestroyExtraWindow(taskId); } else { - sDebugMonData->mon_level = gTasks[taskId].data[3]; //Level - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = 0; + sDebugMonData->level = gTasks[taskId].tInput; + gTasks[taskId].tInput = 0; + gTasks[taskId].tDigit = 0; - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 0); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 0); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopyPadded(gStringVar2, sDebugText_False, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonShiny); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectShiny; } @@ -2915,13 +3167,13 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - Free(sDebugMonData); //Frees EWRAM of MonData Struct + Free(sDebugMonData); FreeMonIconPalettes(); - FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); //Destroy pokemon sprite + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].tSpriteId]); DebugAction_DestroyExtraWindow(taskId); } } -//If complex + static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) { if (JOY_NEW(DPAD_ANY)) @@ -2930,49 +3182,50 @@ static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) if (JOY_NEW(DPAD_UP)) { - gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] > 1) - gTasks[taskId].data[3] = 1; + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput > 1) + gTasks[taskId].tInput = 1; } if (JOY_NEW(DPAD_DOWN)) { - gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < 0) - gTasks[taskId].data[3] = 0; + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < 0) + gTasks[taskId].tInput = 0; } - if (gTasks[taskId].data[3] == 1) + if (gTasks[taskId].tInput == 1) StringCopyPadded(gStringVar2, sDebugText_True, CHAR_SPACE, 15); else StringCopyPadded(gStringVar2, sDebugText_False, CHAR_SPACE, 15); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 0); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 0); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonShiny); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } if (JOY_NEW(A_BUTTON)) { - sDebugMonData->isShiny = gTasks[taskId].data[3]; //isShiny - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = 0; + sDebugMonData->isShiny = gTasks[taskId].tInput; + gTasks[taskId].tInput = 0; + gTasks[taskId].tDigit = 0; - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar1, gNatureNamePointers[0]); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonNature); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectNature; } else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - Free(sDebugMonData); //Frees EWRAM of MonData Struct + Free(sDebugMonData); DebugAction_DestroyExtraWindow(taskId); } } + static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) { if (JOY_NEW(DPAD_ANY)) @@ -2981,49 +3234,50 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) if (JOY_NEW(DPAD_UP)) { - gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] > NUM_NATURES-1) - gTasks[taskId].data[3] = NUM_NATURES-1; + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput > NUM_NATURES-1) + gTasks[taskId].tInput = NUM_NATURES-1; } if (JOY_NEW(DPAD_DOWN)) { - gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < 0) - gTasks[taskId].data[3] = 0; + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < 0) + gTasks[taskId].tInput = 0; } - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringCopy(gStringVar1, gNatureNamePointers[gTasks[taskId].data[3]]); + StringCopy(gStringVar1, gNatureNamePointers[gTasks[taskId].tInput]); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonNature); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } if (JOY_NEW(A_BUTTON)) { u8 abilityId; - sDebugMonData->mon_natureId = gTasks[taskId].data[3]; //NatureId - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = 0; + sDebugMonData->nature = gTasks[taskId].tInput; + gTasks[taskId].tInput = 0; + gTasks[taskId].tDigit = 0; - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - abilityId = GetAbilityBySpecies(sDebugMonData->mon_speciesId, 0); + abilityId = GetAbilityBySpecies(sDebugMonData->species, 0); StringCopy(gStringVar1, gAbilityNames[abilityId]); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonAbility); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectAbility; } else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - Free(sDebugMonData); //Frees EWRAM of MonData Struct + Free(sDebugMonData); DebugAction_DestroyExtraWindow(taskId); } } + static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) { u16 abilityId; @@ -3036,51 +3290,52 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) if (JOY_NEW(DPAD_UP)) { - gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] > abilityCount) - gTasks[taskId].data[3] = abilityCount; + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput > abilityCount) + gTasks[taskId].tInput = abilityCount; } if (JOY_NEW(DPAD_DOWN)) { - gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < 0) - gTasks[taskId].data[3] = 0; + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < 0) + gTasks[taskId].tInput = 0; } - while (GetAbilityBySpecies(sDebugMonData->mon_speciesId, gTasks[taskId].data[3] - i) == ABILITY_NONE && gTasks[taskId].data[3] - i < NUM_ABILITY_SLOTS) + while (GetAbilityBySpecies(sDebugMonData->species, gTasks[taskId].tInput - i) == ABILITY_NONE && gTasks[taskId].tInput - i < NUM_ABILITY_SLOTS) { i++; } - abilityId = GetAbilityBySpecies(sDebugMonData->mon_speciesId, gTasks[taskId].data[3] - i); - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + abilityId = GetAbilityBySpecies(sDebugMonData->species, gTasks[taskId].tInput - i); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar1, gAbilityNames[abilityId]); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonAbility); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } if (JOY_NEW(A_BUTTON)) { - sDebugMonData->mon_abilityNum = gTasks[taskId].data[3] - i; //AbilityNum - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = 0; + sDebugMonData->abilityNum = gTasks[taskId].tInput - i; + gTasks[taskId].tInput = 0; + gTasks[taskId].tDigit = 0; - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_0); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + StringExpandPlaceholders(gStringVar4, sDebugText_IV_HP); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectIVs; } else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - Free(sDebugMonData); //Frees EWRAM of MonData Struct + Free(sDebugMonData); DebugAction_DestroyExtraWindow(taskId); } } + static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) { if (JOY_NEW(DPAD_ANY)) @@ -3089,126 +3344,126 @@ static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) if (JOY_NEW(DPAD_UP)) { - gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] > 31) - gTasks[taskId].data[3] = 31; + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput > 31) + gTasks[taskId].tInput = 31; } if (JOY_NEW(DPAD_DOWN)) { - gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < 0) - gTasks[taskId].data[3] = 0; + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < 0) + gTasks[taskId].tInput = 0; } if (JOY_NEW(DPAD_LEFT)) { - if (gTasks[taskId].data[4] > 0) - gTasks[taskId].data[4] -= 1; + if (gTasks[taskId].tDigit > 0) + gTasks[taskId].tDigit -= 1; } if (JOY_NEW(DPAD_RIGHT)) { - if (gTasks[taskId].data[4] < 2) - gTasks[taskId].data[4] += 1; + if (gTasks[taskId].tDigit < 2) + gTasks[taskId].tDigit += 1; } - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - switch (gTasks[taskId].data[7]) + switch (gTasks[taskId].tIterator) { - case 0: - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_0); + case STAT_HP: + StringExpandPlaceholders(gStringVar4, sDebugText_IV_HP); break; - case 1: - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_1); + case STAT_ATK: + StringExpandPlaceholders(gStringVar4, sDebugText_IV_Attack); break; - case 2: - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_2); + case STAT_DEF: + StringExpandPlaceholders(gStringVar4, sDebugText_IV_Defense); break; - case 3: - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_3); + case STAT_SPEED: + StringExpandPlaceholders(gStringVar4, sDebugText_IV_Speed); break; - case 4: - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_4); + case STAT_SPATK: + StringExpandPlaceholders(gStringVar4, sDebugText_IV_SpAttack); break; - case 5: - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_5); + case STAT_SPDEF: + StringExpandPlaceholders(gStringVar4, sDebugText_IV_SpDefense); break; } - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } //If A or B button if (JOY_NEW(A_BUTTON)) { - switch (gTasks[taskId].data[7]) + switch (gTasks[taskId].tIterator) { - case 0: - sDebugMonData->mon_iv_hp = gTasks[taskId].data[3]; + case STAT_HP: + sDebugMonData->mon_iv_hp = gTasks[taskId].tInput; break; - case 1: - sDebugMonData->mon_iv_atk = gTasks[taskId].data[3]; + case STAT_ATK: + sDebugMonData->mon_iv_atk = gTasks[taskId].tInput; break; - case 2: - sDebugMonData->mon_iv_def = gTasks[taskId].data[3]; + case STAT_DEF: + sDebugMonData->mon_iv_def = gTasks[taskId].tInput; break; - case 3: - sDebugMonData->mon_iv_speed = gTasks[taskId].data[3]; + case STAT_SPEED: + sDebugMonData->mon_iv_speed = gTasks[taskId].tInput; break; - case 4: - sDebugMonData->mon_iv_satk = gTasks[taskId].data[3]; + case STAT_SPATK: + sDebugMonData->mon_iv_satk = gTasks[taskId].tInput; break; - case 5: - sDebugMonData->mon_iv_sdef = gTasks[taskId].data[3]; + case STAT_SPDEF: + sDebugMonData->mon_iv_sdef = gTasks[taskId].tInput; break; } //Check if all IVs set - if (gTasks[taskId].data[7] != 5) + if (gTasks[taskId].tIterator != NUM_STATS - 1) { - gTasks[taskId].data[7] += 1; - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = 0; + gTasks[taskId].tIterator++; + gTasks[taskId].tInput = 0; + gTasks[taskId].tDigit = 0; - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - switch (gTasks[taskId].data[7]) + switch (gTasks[taskId].tIterator) { - case 0: - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_0); + case STAT_HP: + StringExpandPlaceholders(gStringVar4, sDebugText_IV_HP); break; - case 1: - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_1); + case STAT_ATK: + StringExpandPlaceholders(gStringVar4, sDebugText_IV_Attack); break; - case 2: - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_2); + case STAT_DEF: + StringExpandPlaceholders(gStringVar4, sDebugText_IV_Defense); break; - case 3: - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_3); + case STAT_SPEED: + StringExpandPlaceholders(gStringVar4, sDebugText_IV_Speed); break; - case 4: - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_4); + case STAT_SPATK: + StringExpandPlaceholders(gStringVar4, sDebugText_IV_SpAttack); break; - case 5: - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_5); + case STAT_SPDEF: + StringExpandPlaceholders(gStringVar4, sDebugText_IV_SpDefense); break; } - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectIVs; } else { - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = 0; - gTasks[taskId].data[7] = 0; //Reset iterator + gTasks[taskId].tInput = 0; + gTasks[taskId].tDigit = 0; + gTasks[taskId].tIterator = 0; - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringCopy(gStringVar1, gMoveNames[gTasks[taskId].data[3]]); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + StringCopy(gStringVar1, gMoveNames[gTasks[taskId].tInput]); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_0); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_Move; } @@ -3216,10 +3471,11 @@ static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - Free(sDebugMonData); //Frees EWRAM of MonData Struct + Free(sDebugMonData); DebugAction_DestroyExtraWindow(taskId); } } + static void DebugAction_Give_Pokemon_Move(u8 taskId) { if (JOY_NEW(DPAD_ANY)) @@ -3228,32 +3484,32 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) if (JOY_NEW(DPAD_UP)) { - gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] >= MOVES_COUNT) - gTasks[taskId].data[3] = MOVES_COUNT - 1; + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput >= MOVES_COUNT) + gTasks[taskId].tInput = MOVES_COUNT - 1; } if (JOY_NEW(DPAD_DOWN)) { - gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < 0) - gTasks[taskId].data[3] = 0; + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < 0) + gTasks[taskId].tInput = 0; } if (JOY_NEW(DPAD_LEFT)) { - if (gTasks[taskId].data[4] > 0) - gTasks[taskId].data[4] -= 1; + if (gTasks[taskId].tDigit > 0) + gTasks[taskId].tDigit -= 1; } if (JOY_NEW(DPAD_RIGHT)) { - if (gTasks[taskId].data[4] < 3) - gTasks[taskId].data[4] += 1; + if (gTasks[taskId].tDigit < 3) + gTasks[taskId].tDigit += 1; } - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringCopy(gStringVar1, gMoveNames[gTasks[taskId].data[3]]); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + StringCopy(gStringVar1, gMoveNames[gTasks[taskId].tInput]); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); - switch (gTasks[taskId].data[7]) + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); + switch (gTasks[taskId].tIterator) { case 0: StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_0); @@ -3268,44 +3524,44 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_3); break; } - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } if (JOY_NEW(A_BUTTON)) { - //If MOVE_NONE selected, stop asking for additional moves - if (gTasks[taskId].data[3] == 0) - gTasks[taskId].data[7] = 4; + // If MOVE_NONE selected, stop asking for additional moves + if (gTasks[taskId].tInput == MOVE_NONE) + gTasks[taskId].tIterator = 4; //Set current value - switch (gTasks[taskId].data[7]) + switch (gTasks[taskId].tIterator) { case 0: - sDebugMonData->mon_move_0 = gTasks[taskId].data[3]; + sDebugMonData->mon_move_0 = gTasks[taskId].tInput; break; case 1: - sDebugMonData->mon_move_1 = gTasks[taskId].data[3]; + sDebugMonData->mon_move_1 = gTasks[taskId].tInput; break; case 2: - sDebugMonData->mon_move_2 = gTasks[taskId].data[3]; + sDebugMonData->mon_move_2 = gTasks[taskId].tInput; break; case 3: - sDebugMonData->mon_move_3 = gTasks[taskId].data[3]; + sDebugMonData->mon_move_3 = gTasks[taskId].tInput; break; } //If NOT last move or selected MOVE_NONE ask for next move, else make mon - if (gTasks[taskId].data[7] < 3) + if (gTasks[taskId].tIterator < MAX_MON_MOVES - 1) { - gTasks[taskId].data[7] += 1; - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = 0; + gTasks[taskId].tIterator++; + gTasks[taskId].tInput = 0; + gTasks[taskId].tDigit = 0; - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringCopy(gStringVar1, gMoveNames[gTasks[taskId].data[3]]); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + StringCopy(gStringVar1, gMoveNames[gTasks[taskId].tInput]); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); - switch (gTasks[taskId].data[7]) + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); + switch (gTasks[taskId].tIterator) { case 0: StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_0); @@ -3320,14 +3576,14 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_3); break; } - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_Move; } else { - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = 0; + gTasks[taskId].tInput = 0; + gTasks[taskId].tDigit = 0; PlaySE(MUS_LEVEL_UP); gTasks[taskId].func = DebugAction_Give_Pokemon_ComplexCreateMon; @@ -3336,10 +3592,11 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - Free(sDebugMonData); //Frees EWRAM of MonData Struct + Free(sDebugMonData); DebugAction_DestroyExtraWindow(taskId); } } + static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://github.com/ghoulslash/pokeemerald/tree/custom-givemon { u16 nationalDexNum; @@ -3349,11 +3606,11 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu u16 moves[4]; u8 IVs[6]; u8 iv_val; - u16 species = sDebugMonData->mon_speciesId; - u8 level = sDebugMonData->mon_level; + u16 species = sDebugMonData->species; + u8 level = sDebugMonData->level; u8 isShiny = sDebugMonData->isShiny; //Shiny: no 0, yes 1 - u8 nature = sDebugMonData->mon_natureId; - u8 abilityNum = sDebugMonData->mon_abilityNum; + u8 nature = sDebugMonData->nature; + u8 abilityNum = sDebugMonData->abilityNum; moves[0] = sDebugMonData->mon_move_0; moves[1] = sDebugMonData->mon_move_1; moves[2] = sDebugMonData->mon_move_2; @@ -3427,7 +3684,7 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu } if (i >= PARTY_SIZE) - sentToPc = SendMonToPC(&mon); + sentToPc = CopyMonToPC(&mon); else { sentToPc = MON_GIVEN_TO_PARTY; @@ -3451,10 +3708,14 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu // Set flag for user convenience FlagSet(FLAG_SYS_POKEMON_GET); - Free(sDebugMonData); //Frees EWRAM of MonData Struct + Free(sDebugMonData); DebugAction_DestroyExtraWindow(taskId); //return sentToPc; } +#undef tIsComplex +#undef tSpriteId +#undef tIterator + static void DebugAction_Give_MaxMoney(u8 taskId) { SetMoney(&gSaveBlock1Ptr->money, MAX_MONEY); @@ -3462,7 +3723,7 @@ static void DebugAction_Give_MaxMoney(u8 taskId) static void DebugAction_Give_MaxCoins(u8 taskId) { - SetCoins(9999); + SetCoins(MAX_COINS); } static void DebugAction_Give_MaxBattlePoints(u8 taskId) @@ -3517,10 +3778,10 @@ static void DebugAction_Fill_PCBoxes_Fast(u8 taskId) //Credit: Sierraffinity Debug_DestroyMenu_Full(taskId); ScriptContext_Enable(); } + static void DebugAction_Fill_PCBoxes_Slow(u8 taskId) { int boxId, boxPosition; - u32 personality; struct BoxPokemon boxMon; u32 species = SPECIES_BULBASAUR; bool8 spaceAvailable = FALSE; @@ -3548,6 +3809,7 @@ static void DebugAction_Fill_PCBoxes_Slow(u8 taskId) Debug_DestroyMenu_Full_Script(taskId, Debug_BoxFilledMessage); } + static void DebugAction_Fill_PCItemStorage(u8 taskId) { u16 itemId; @@ -3558,6 +3820,7 @@ static void DebugAction_Fill_PCItemStorage(u8 taskId) AddPCItem(itemId, MAX_PC_ITEM_CAPACITY); } } + static void DebugAction_Fill_PocketItems(u8 taskId) { u16 itemId; @@ -3568,6 +3831,7 @@ static void DebugAction_Fill_PocketItems(u8 taskId) AddBagItem(itemId, MAX_BAG_ITEM_CAPACITY); } } + static void DebugAction_Fill_PocketPokeBalls(u8 taskId) { u16 itemId; @@ -3578,6 +3842,7 @@ static void DebugAction_Fill_PocketPokeBalls(u8 taskId) AddBagItem(itemId, MAX_BAG_ITEM_CAPACITY); } } + static void DebugAction_Fill_PocketTMHM(u8 taskId) { u16 itemId; @@ -3588,6 +3853,7 @@ static void DebugAction_Fill_PocketTMHM(u8 taskId) AddBagItem(itemId, 1); } } + static void DebugAction_Fill_PocketBerries(u8 taskId) { u16 itemId; @@ -3598,6 +3864,7 @@ static void DebugAction_Fill_PocketBerries(u8 taskId) AddBagItem(itemId, MAX_BERRY_CAPACITY); } } + static void DebugAction_Fill_PocketKeyItems(u8 taskId) { u16 itemId; @@ -3613,160 +3880,181 @@ static void DebugAction_Fill_PocketKeyItems(u8 taskId) // Actions Sound static const u8 *const sBGMNames[]; static const u8 *const sSENames[]; + +#define tCurrentSong data[5] + static void DebugAction_Sound_SE(u8 taskId) { u8 windowId; - ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); - RemoveWindow(gTasks[taskId].data[1]); + ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE); + RemoveWindow(gTasks[taskId].tWindowId); HideMapNamePopUpWindow(); LoadMessageBoxAndBorderGfx(); windowId = AddWindow(&sDebugMenuWindowTemplateSound); DrawStdWindowFrame(windowId, FALSE); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_FULL); - //Display initial ID + // Display initial sound effect StringCopy(gStringVar2, gText_DigitIndicator[0]); ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); StringCopyPadded(gStringVar1, sSENames[0], CHAR_SPACE, 35); - StringExpandPlaceholders(gStringVar4, sDebugText_Sound_SE_ID); - AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + StringExpandPlaceholders(gStringVar4, sDebugText_Sound_SFX_ID); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); StopMapMusic(); //Stop map music to better hear sounds gTasks[taskId].func = DebugAction_Sound_SE_SelectId; - gTasks[taskId].data[2] = windowId; - gTasks[taskId].data[3] = 1; //Current ID - gTasks[taskId].data[4] = 0; //Digit Selected - gTasks[taskId].data[5] = gTasks[taskId].data[3]; //Last song played (for stopping) + gTasks[taskId].tSubWindowId = windowId; + gTasks[taskId].tInput = 1; + gTasks[taskId].tDigit = 0; + gTasks[taskId].tCurrentSong = gTasks[taskId].tInput; } + static void DebugAction_Sound_SE_SelectId(u8 taskId) { if (JOY_NEW(DPAD_ANY)) { if (JOY_NEW(DPAD_UP)) { - gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] > END_SE) - gTasks[taskId].data[3] = END_SE; + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput > END_SE) + gTasks[taskId].tInput = END_SE; } if (JOY_NEW(DPAD_DOWN)) { - gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < 1) - gTasks[taskId].data[3] = 1; + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < 1) + gTasks[taskId].tInput = 1; } if (JOY_NEW(DPAD_LEFT)) { - if (gTasks[taskId].data[4] > 0) - gTasks[taskId].data[4] -= 1; + if (gTasks[taskId].tDigit > 0) + gTasks[taskId].tDigit -= 1; } if (JOY_NEW(DPAD_RIGHT)) { - if (gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS - 1) - gTasks[taskId].data[4] += 1; + if (gTasks[taskId].tDigit < DEBUG_NUMBER_DIGITS_ITEMS - 1) + gTasks[taskId].tDigit += 1; } - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringCopyPadded(gStringVar1, sSENames[gTasks[taskId].data[3]-1], CHAR_SPACE, 35); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); - StringExpandPlaceholders(gStringVar4, sDebugText_Sound_SE_ID); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + StringCopyPadded(gStringVar1, sSENames[gTasks[taskId].tInput-1], CHAR_SPACE, 35); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); + StringExpandPlaceholders(gStringVar4, sDebugText_Sound_SFX_ID); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } if (JOY_NEW(A_BUTTON)) { - m4aSongNumStop(gTasks[taskId].data[5]); - gTasks[taskId].data[5] = gTasks[taskId].data[3]; - m4aSongNumStart(gTasks[taskId].data[3]); + m4aSongNumStop(gTasks[taskId].tCurrentSong); + gTasks[taskId].tCurrentSong = gTasks[taskId].tInput; + m4aSongNumStart(gTasks[taskId].tInput); } else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - m4aSongNumStop(gTasks[taskId].data[5]); + m4aSongNumStop(gTasks[taskId].tCurrentSong); DebugAction_DestroyExtraWindow(taskId); } + else if (JOY_NEW(START_BUTTON)) + { + m4aSongNumStop(gTasks[taskId].tCurrentSong); + } } static void DebugAction_Sound_MUS(u8 taskId) { u8 windowId; - ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); - RemoveWindow(gTasks[taskId].data[1]); + ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE); + RemoveWindow(gTasks[taskId].tWindowId); HideMapNamePopUpWindow(); LoadMessageBoxAndBorderGfx(); windowId = AddWindow(&sDebugMenuWindowTemplateSound); DrawStdWindowFrame(windowId, FALSE); - CopyWindowToVram(windowId, 3); + CopyWindowToVram(windowId, COPYWIN_FULL); - //Display initial ID + // Display initial song StringCopy(gStringVar2, gText_DigitIndicator[0]); ConvertIntToDecimalStringN(gStringVar3, START_MUS, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); StringCopyPadded(gStringVar1, sBGMNames[0], CHAR_SPACE, 35); - StringExpandPlaceholders(gStringVar4, sDebugText_Sound_MUS_ID); - AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + StringExpandPlaceholders(gStringVar4, sDebugText_Sound_Music_ID); + AddTextPrinterParameterized(windowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); StopMapMusic(); //Stop map music to better hear new music gTasks[taskId].func = DebugAction_Sound_MUS_SelectId; - gTasks[taskId].data[2] = windowId; - gTasks[taskId].data[3] = START_MUS; //Current ID - gTasks[taskId].data[4] = 0; //Digit Selected - gTasks[taskId].data[5] = gTasks[taskId].data[3]; //Last song played (for stopping) + gTasks[taskId].tSubWindowId = windowId; + gTasks[taskId].tInput = START_MUS; + gTasks[taskId].tDigit = 0; + gTasks[taskId].tCurrentSong = gTasks[taskId].tInput; } + static void DebugAction_Sound_MUS_SelectId(u8 taskId) { if (JOY_NEW(DPAD_ANY)) { if (JOY_NEW(DPAD_UP)) { - gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] > END_MUS) - gTasks[taskId].data[3] = END_MUS; + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput > END_MUS) + gTasks[taskId].tInput = END_MUS; } if (JOY_NEW(DPAD_DOWN)) { - gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < START_MUS) - gTasks[taskId].data[3] = START_MUS; + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < START_MUS) + gTasks[taskId].tInput = START_MUS; } if (JOY_NEW(DPAD_LEFT)) { - if (gTasks[taskId].data[4] > 0) - gTasks[taskId].data[4] -= 1; + if (gTasks[taskId].tDigit > 0) + gTasks[taskId].tDigit -= 1; } if (JOY_NEW(DPAD_RIGHT)) { - if (gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS - 1) - gTasks[taskId].data[4] += 1; + if (gTasks[taskId].tDigit < DEBUG_NUMBER_DIGITS_ITEMS - 1) + gTasks[taskId].tDigit += 1; } - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringCopyPadded(gStringVar1, sBGMNames[gTasks[taskId].data[3]-START_MUS], CHAR_SPACE, 35); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); - StringExpandPlaceholders(gStringVar4, sDebugText_Sound_MUS_ID); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + StringCopyPadded(gStringVar1, sBGMNames[gTasks[taskId].tInput-START_MUS], CHAR_SPACE, 35); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); + StringExpandPlaceholders(gStringVar4, sDebugText_Sound_Music_ID); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } if (JOY_NEW(A_BUTTON)) { - m4aSongNumStop(gTasks[taskId].data[5]); - gTasks[taskId].data[5] = gTasks[taskId].data[3]; - m4aSongNumStart(gTasks[taskId].data[3]); + m4aSongNumStop(gTasks[taskId].tCurrentSong); + gTasks[taskId].tCurrentSong = gTasks[taskId].tInput; + m4aSongNumStart(gTasks[taskId].tInput); } else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - // m4aSongNumStop(gTasks[taskId].data[5]); //Uncomment if music should stop after leaving menu + // m4aSongNumStop(gTasks[taskId].tCurrentSong); //Uncomment if music should stop after leaving menu DebugAction_DestroyExtraWindow(taskId); } + else if (JOY_NEW(START_BUTTON)) + { + m4aSongNumStop(gTasks[taskId].tCurrentSong); + } } +#undef tCurrentSong + +#undef tMenuTaskId +#undef tWindowId +#undef tSubWindowId +#undef tInput +#undef tDigit + #define SOUND_LIST_BGM \ X(MUS_LITTLEROOT_TEST) \ X(MUS_GSC_ROUTE38) \ @@ -4325,11 +4613,54 @@ SOUND_LIST_SE #undef X // ******************************* -// Actions Other +// Actions Party/Boxes -static void DebugAction_AccessPC(u8 taskId) +static void DebugAction_PartyBoxes_AccessPC(u8 taskId) { Debug_DestroyMenu_Full_Script(taskId, EventScript_PC); } +static void DebugAction_PartyBoxes_MoveReminder(u8 taskId) +{ + Debug_DestroyMenu_Full_Script(taskId, FallarborTown_MoveRelearnersHouse_EventScript_ChooseMon); +} + +static void DebugAction_PartyBoxes_HatchAnEgg(u8 taskId) +{ + Debug_DestroyMenu_Full_Script(taskId, Debug_HatchAnEgg); +} + +static void DebugAction_PartyBoxes_HealParty(u8 taskId) +{ + PlaySE(SE_USE_ITEM); + HealPlayerParty(); + ScriptContext_Enable(); + Debug_DestroyMenu_Full(taskId); +} + +static void DebugAction_PartyBoxes_PoisonMons(u8 taskId) +{ + int i; + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, 0) + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_NONE + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG) != SPECIES_EGG) + { + u32 curStatus = STATUS1_POISON; + SetMonData(&gPlayerParty[i], MON_DATA_STATUS, &curStatus); + } + } + PlaySE(SE_FIELD_POISON); + ScriptContext_Enable(); + Debug_DestroyMenu_Full(taskId); +} + +static void DebugAction_PartyBoxes_ClearBoxes(u8 taskId) +{ + ResetPokemonStorageSystem(); + Debug_DestroyMenu_Full(taskId); + ScriptContext_Enable(); +} + #endif //DEBUG_OVERWORLD_MENU == TRUE diff --git a/src/decompress.c b/src/decompress.c index b4de99efc3..4cd1b0ccd0 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -50,6 +50,16 @@ void LoadCompressedSpritePalette(const struct CompressedSpritePalette *src) LoadSpritePalette(&dest); } +void LoadCompressedSpritePaletteWithTag(const u32 *pal, u16 tag) +{ + struct SpritePalette dest; + + LZ77UnCompWram(pal, gDecompressionBuffer); + dest.data = (void *) gDecompressionBuffer; + dest.tag = tag; + LoadSpritePalette(&dest); +} + void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *src, void *buffer) { struct SpritePalette dest; @@ -60,22 +70,9 @@ void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePale LoadSpritePalette(&dest); } -void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void *buffer, s32 species) +void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void *buffer) { - if (species > NUM_SPECIES) - LZ77UnCompWram(gMonFrontPicTable[SPECIES_NONE].data, buffer); - else - LZ77UnCompWram(src->data, buffer); -} - -void DecompressPicFromTableGender(void* buffer, s32 species, u32 personality) -{ - if (gMonFrontPicTableFemale[species].data != NULL && IsPersonalityFemale(species, personality)) - LZ77UnCompWram(gMonFrontPicTableFemale[species].data, buffer); - else if (gMonFrontPicTable[species].data != NULL) - LZ77UnCompWram(gMonFrontPicTable[species].data, buffer); - else - LZ77UnCompWram(gMonFrontPicTable[SPECIES_NONE].data, buffer); + LZ77UnCompWram(src->data, buffer); } void HandleLoadSpecialPokePic(bool32 isFrontPic, void *dest, s32 species, u32 personality) @@ -85,28 +82,27 @@ void HandleLoadSpecialPokePic(bool32 isFrontPic, void *dest, s32 species, u32 pe void LoadSpecialPokePic(void *dest, s32 species, u32 personality, bool8 isFrontPic) { - if (species > NUM_SPECIES) - species = SPECIES_NONE; - else if (species == SPECIES_UNOWN) + species = SanitizeSpeciesId(species); + if (species == SPECIES_UNOWN) species = GetUnownSpeciesId(personality); if (isFrontPic) { - if (gMonFrontPicTableFemale[species].data != NULL && IsPersonalityFemale(species, personality)) - LZ77UnCompWram(gMonFrontPicTableFemale[species].data, dest); - else if (gMonFrontPicTable[species].data != NULL) - LZ77UnCompWram(gMonFrontPicTable[species].data, dest); + if (gSpeciesInfo[species].frontPicFemale != NULL && IsPersonalityFemale(species, personality)) + LZ77UnCompWram(gSpeciesInfo[species].frontPicFemale, dest); + else if (gSpeciesInfo[species].frontPic != NULL) + LZ77UnCompWram(gSpeciesInfo[species].frontPic, dest); else - LZ77UnCompWram(gMonFrontPicTable[SPECIES_NONE].data, dest); + LZ77UnCompWram(gSpeciesInfo[SPECIES_NONE].frontPic, dest); } else { - if (gMonBackPicTableFemale[species].data != NULL && IsPersonalityFemale(species, personality)) - LZ77UnCompWram(gMonBackPicTableFemale[species].data, dest); - else if (gMonBackPicTable[species].data != NULL) - LZ77UnCompWram(gMonBackPicTable[species].data, dest); + if (gSpeciesInfo[species].backPicFemale != NULL && IsPersonalityFemale(species, personality)) + LZ77UnCompWram(gSpeciesInfo[species].backPicFemale, dest); + else if (gSpeciesInfo[species].backPic != NULL) + LZ77UnCompWram(gSpeciesInfo[species].backPic, dest); else - LZ77UnCompWram(gMonBackPicTable[SPECIES_NONE].data, dest); + LZ77UnCompWram(gSpeciesInfo[SPECIES_NONE].backPic, dest); } if (species == SPECIES_SPINDA && isFrontPic) @@ -121,7 +117,7 @@ void Unused_LZDecompressWramIndirect(const void **src, void *dest) LZ77UnCompWram(*src, dest); } -static void StitchObjectsOn8x8Canvas(s32 object_size, s32 object_count, u8 *src_tiles, u8 *dest_tiles) +static void UNUSED StitchObjectsOn8x8Canvas(s32 object_size, s32 object_count, u8 *src_tiles, u8 *dest_tiles) { /* This function appears to emulate behaviour found in the GB(C) versions regarding how the Pokemon images diff --git a/src/decoration.c b/src/decoration.c index 688018b2db..f4fae6cc5e 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -113,7 +113,7 @@ EWRAM_DATA static u16 sDecorationsCursorPos = 0; EWRAM_DATA static u16 sDecorationsScrollOffset = 0; EWRAM_DATA u8 gCurDecorationIndex = 0; EWRAM_DATA static u8 sCurDecorationCategory = DECORCAT_DESK; -EWRAM_DATA static u32 sFiller[2] = {}; +EWRAM_DATA static u32 UNUSED sFiller[2] = {}; EWRAM_DATA static struct DecorationPCContext sDecorationContext = {}; EWRAM_DATA static u8 sDecorMenuWindowIds[WINDOW_COUNT] = {}; EWRAM_DATA static struct DecorationItemsMenu *sDecorationItemsMenu = NULL; diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c index 1ba82c6d21..1b4500002c 100644 --- a/src/dodrio_berry_picking.c +++ b/src/dodrio_berry_picking.c @@ -2834,9 +2834,8 @@ static void GetScoreResults(struct DodrioGame_ScoreResults *dst, u8 playerId) *dst = sGame->scoreResults[playerId]; } -// Unused // Returns where the specified player's score ranks, 0 being first (highest score) -static u8 GetScoreRanking(u8 playerId) +static u8 UNUSED GetScoreRanking(u8 playerId) { u8 i, ranking = 0; u8 numPlayers = sGame->numPlayers; @@ -3068,12 +3067,12 @@ static const u8 *const sDebug_PlayerNames[] = sText_Digits }; -static void Debug_UpdateNumPlayers(void) +static void UNUSED Debug_UpdateNumPlayers(void) { sGame->numPlayers = GetLinkPlayerCount(); } -static void Debug_SetPlayerNamesAndResults(void) +static void UNUSED Debug_SetPlayerNamesAndResults(void) { u8 i, playerId; @@ -4253,8 +4252,7 @@ static void SetBerryAnim(u16 id, u8 animNum) StartSpriteAnim(&gSprites[*sBerrySpriteIds[id]], animNum); } -// Unused -static void UnusedSetSpritePos(u8 spriteId) +static void UNUSED UnusedSetSpritePos(u8 spriteId) { gSprites[spriteId].x = 20 * spriteId + 50; gSprites[spriteId].y = 50; @@ -4486,8 +4484,7 @@ static void InitGameGfx(struct DodrioGame_Gfx *ptr) SetGfxFunc(LoadGfx); } -// Unused -static void FreeAllWindowBuffers_(void) +static void UNUSED FreeAllWindowBuffers_(void) { FreeAllWindowBuffers(); } diff --git a/src/easy_chat.c b/src/easy_chat.c index 5ba83f7257..db5bbba8a8 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -2758,7 +2758,7 @@ static void GetEasyChatConfirmDeletionText(const u8 **str1, const u8 **str2) *str2 = gText_BeDeletedThatOkay; } -static void GetKeyboardCursorColAndRow(u8 *column, u8 *row) +static void GetKeyboardCursorColAndRow(s8 *column, s8 *row) { *column = sEasyChatScreen->keyboardColumn; *row = sEasyChatScreen->keyboardRow; @@ -2774,7 +2774,7 @@ static u8 GetKeyboardScrollOffset(void) return sEasyChatScreen->keyboardScrollOffset; } -static void GetWordSelectColAndRow(u8 *column, u8 *row) +static void GetWordSelectColAndRow(s8 *column, s8 *row) { *column = sEasyChatScreen->wordSelectColumn; *row = sEasyChatScreen->wordSelectRow; @@ -2790,7 +2790,7 @@ static u8 GetWordSelectLastRow(void) return sEasyChatScreen->wordSelectLastRow; } -static u8 UnusedDummy(void) +static u8 UNUSED UnusedDummy(void) { return FALSE; } @@ -5264,7 +5264,7 @@ u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows return dest; } -static u8 *UnusedConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows) +static u8 UNUSED *UnusedConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows) { u16 i, j, k; u16 numColumns; @@ -5503,8 +5503,7 @@ u16 UnlockRandomTrendySaying(void) return EC_EMPTY_WORD; } -// Unused -static u16 GetRandomUnlockedTrendySaying(void) +static u16 UNUSED GetRandomUnlockedTrendySaying(void) { u16 i; u16 n = GetNumTrendySayingsUnlocked(); @@ -5650,8 +5649,7 @@ static u8 GetUnlockedEasyChatGroupId(u8 index) return sWordData->unlockedGroupIds[index]; } -// Unused -static u8 *BufferEasyChatWordGroupName(u8 *dest, u8 groupId, u16 totalChars) +static u8 UNUSED *BufferEasyChatWordGroupName(u8 *dest, u8 groupId, u16 totalChars) { u16 i; u8 *str = StringCopy(dest, sEasyChatGroupNamePointers[groupId]); diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 7ceaa161ed..abb7ca4e15 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -360,7 +360,6 @@ static void AddHatchedMonToParty(u8 id) u8 isEgg = 0x46; // ? u16 species; u8 name[POKEMON_NAME_LENGTH + 1]; - u16 ball; u16 metLevel; u8 metLocation; struct Pokemon *mon = &gPlayerParty[id]; @@ -422,6 +421,7 @@ static u8 EggHatchCreateMonSprite(u8 useAlt, u8 state, u8 partyId, u16 *speciesL u8 position = 0; u8 spriteId = 0; struct Pokemon *mon = NULL; + u16 species = SPECIES_NONE; if (useAlt == FALSE) { @@ -434,23 +434,23 @@ static u8 EggHatchCreateMonSprite(u8 useAlt, u8 state, u8 partyId, u16 *speciesL mon = &gPlayerParty[partyId]; position = B_POSITION_OPPONENT_RIGHT; } + species = GetMonData(mon, MON_DATA_SPECIES); switch (state) { case 0: // Load mon sprite gfx { - u16 species = GetMonData(mon, MON_DATA_SPECIES); u32 pid = GetMonData(mon, MON_DATA_PERSONALITY); HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[(useAlt * 2) + B_POSITION_OPPONENT_LEFT], species, pid); - LoadCompressedSpritePalette(GetMonSpritePalStruct(mon)); + LoadCompressedSpritePaletteWithTag(GetMonFrontSpritePal(mon), species); *speciesLoc = species; } break; case 1: // Create mon sprite - SetMultiuseSpriteTemplateToPokemon(GetMonSpritePalStruct(mon)->tag, position); + SetMultiuseSpriteTemplateToPokemon(species, position); spriteId = CreateSprite(&gMultiuseSpriteTemplate, EGG_X, EGG_Y, 6); gSprites[spriteId].invisible = TRUE; gSprites[spriteId].callback = SpriteCallbackDummy; @@ -778,7 +778,7 @@ static void SpriteCB_Egg_Shake3(struct Sprite *sprite) { if (++sprite->sTimer > 38) { - u16 species; + u16 UNUSED species; sprite->callback = SpriteCB_Egg_WaitHatch; sprite->sTimer = 0; species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyId], MON_DATA_SPECIES); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index f75597a9f7..6cd6955031 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1325,7 +1325,7 @@ u8 Unref_TryInitLocalObjectEvent(u8 localId) if (InBattlePyramid()) objectEventCount = GetNumBattlePyramidObjectEvents(); else if (InTrainerHill()) - objectEventCount = 2; + objectEventCount = HILL_TRAINERS_PER_FLOOR; else objectEventCount = gMapHeader.events->objectEventCount; @@ -1641,7 +1641,7 @@ void TrySpawnObjectEvents(s16 cameraX, s16 cameraY) if (InBattlePyramid()) objectCount = GetNumBattlePyramidObjectEvents(); else if (InTrainerHill()) - objectCount = 2; + objectCount = HILL_TRAINERS_PER_FLOOR; else objectCount = gMapHeader.events->objectEventCount; @@ -2008,8 +2008,7 @@ static void LoadObjectEventPalette(u16 paletteTag) LoadSpritePaletteIfTagExists(&sObjectEventSpritePalettes[i]); } -// Unused -static void LoadObjectEventPaletteSet(u16 *paletteTags) +static void UNUSED LoadObjectEventPaletteSet(u16 *paletteTags) { u8 i; @@ -2091,8 +2090,7 @@ static void _PatchObjectPalette(u16 tag, u8 slot) PatchObjectPalette(tag, slot); } -// Unused -static void IncrementObjectEventCoords(struct ObjectEvent *objectEvent, s16 x, s16 y) +static void UNUSED IncrementObjectEventCoords(struct ObjectEvent *objectEvent, s16 x, s16 y) { objectEvent->previousCoords.x = objectEvent->currentCoords.x; objectEvent->previousCoords.y = objectEvent->currentCoords.y; @@ -2291,8 +2289,7 @@ void CameraObjectSetFollowedSpriteId(u8 spriteId) } } -// Unused -static u8 CameraObjectGetFollowedSpriteId(void) +static u8 UNUSED CameraObjectGetFollowedSpriteId(void) { struct Sprite *camera; @@ -2389,8 +2386,7 @@ static u16 GetObjectEventFlagIdByObjectEventId(u8 objectEventId) return GetObjectEventFlagIdByLocalIdAndMap(gObjectEvents[objectEventId].localId, gObjectEvents[objectEventId].mapNum, gObjectEvents[objectEventId].mapGroup); } -// Unused -static u8 GetObjectTrainerTypeByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) +static u8 UNUSED GetObjectTrainerTypeByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { u8 objectEventId; @@ -2400,8 +2396,7 @@ static u8 GetObjectTrainerTypeByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup return gObjectEvents[objectEventId].trainerType; } -// Unused -static u8 GetObjectTrainerTypeByObjectEventId(u8 objectEventId) +static u8 UNUSED GetObjectTrainerTypeByObjectEventId(u8 objectEventId) { return gObjectEvents[objectEventId].trainerType; } @@ -4770,8 +4765,7 @@ void MoveCoords(u8 direction, s16 *x, s16 *y) *y += sDirectionToVectors[direction].y; } -// Unused -static void MoveCoordsInMapCoordIncrement(u8 direction, s16 *x, s16 *y) +static void UNUSED MoveCoordsInMapCoordIncrement(u8 direction, s16 *x, s16 *y) { *x += sDirectionToVectors[direction].x << 4; *y += sDirectionToVectors[direction].y << 4; @@ -7915,10 +7909,10 @@ static void DoTracksGroundEffect_BikeTireTracks(struct ObjectEvent *objEvent, st // each byte in that row is for the next direction of the bike in the order // of down, up, left, right. static const u8 bikeTireTracks_Transitions[4][4] = { - 1, 2, 7, 8, - 1, 2, 6, 5, - 5, 8, 3, 4, - 6, 7, 3, 4, + {1, 2, 7, 8}, + {1, 2, 6, 5}, + {5, 8, 3, 4}, + {6, 7, 3, 4}, }; if (objEvent->currentCoords.x != objEvent->previousCoords.x || objEvent->currentCoords.y != objEvent->previousCoords.y) @@ -8587,8 +8581,7 @@ static void SpriteCB_VirtualObject(struct Sprite *sprite) UpdateObjectEventSpriteInvisibility(sprite, sprite->sInvisible); } -// Unused -static void DestroyVirtualObjects(void) +static void UNUSED DestroyVirtualObjects(void) { int i; @@ -8890,7 +8883,7 @@ static void CreateLevitateMovementTask(struct ObjectEvent *objectEvent) u8 taskId = CreateTask(ApplyLevitateMovement, 0xFF); struct Task *task = &gTasks[taskId]; - StoreWordInTwoHalfwords(&task->data[0], (u32)objectEvent); + StoreWordInTwoHalfwords((u16*) &task->data[0], (u32)objectEvent); objectEvent->warpArrowSpriteId = taskId; task->data[3] = 0xFFFF; } @@ -8901,7 +8894,7 @@ static void ApplyLevitateMovement(u8 taskId) struct Sprite *sprite; struct Task *task = &gTasks[taskId]; - LoadWordFromTwoHalfwords(&task->data[0], (u32 *)&objectEvent); // load the map object pointer. + LoadWordFromTwoHalfwords((u16*) &task->data[0], (u32 *)&objectEvent); // load the map object pointer. sprite = &gSprites[objectEvent->spriteId]; if(!(task->data[2] & 3)) @@ -8918,7 +8911,7 @@ static void DestroyLevitateMovementTask(u8 taskId) struct ObjectEvent *objectEvent; struct Task *task = &gTasks[taskId]; - LoadWordFromTwoHalfwords(&task->data[0], (u32 *)&objectEvent); // unused objectEvent + LoadWordFromTwoHalfwords((u16*) &task->data[0], (u32 *)&objectEvent); // unused objectEvent DestroyTask(taskId); } @@ -8972,3 +8965,19 @@ u8 MovementAction_Fly_Finish(struct ObjectEvent *objectEvent, struct Sprite *spr { return TRUE; } + +bool8 MovementAction_EmoteX_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); + FieldEffectStart(FLDEFF_X_ICON); + sprite->sActionFuncId = 1; + return TRUE; +} + +bool8 MovementAction_EmoteDoubleExclamationMark_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) +{ + ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); + FieldEffectStart(FLDEFF_DOUBLE_EXCL_MARK_ICON); + sprite->sActionFuncId = 1; + return TRUE; +} diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 4d33983a9e..1bd0e26561 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -35,8 +35,6 @@ #include "constants/rgb.h" #include "constants/items.h" -extern struct Evolution gEvolutionTable[][EVOS_PER_MON]; - struct EvoInfo { u8 preEvoSpriteId; @@ -212,7 +210,6 @@ void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u u8 name[POKEMON_NAME_BUFFER_SIZE]; u16 currSpecies; u32 trainerId, personality; - const struct CompressedSpritePalette* pokePal; u8 id; SetHBlankCallback(NULL); @@ -260,11 +257,11 @@ void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u currSpecies = GetMonData(mon, MON_DATA_SPECIES); trainerId = GetMonData(mon, MON_DATA_OT_ID); personality = GetMonData(mon, MON_DATA_PERSONALITY); - DecompressPicFromTableGender(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], - currSpecies, - personality); - pokePal = GetMonSpritePalStructFromOtIdPersonality(currSpecies, trainerId, personality); - LoadCompressedPalette(pokePal->data, OBJ_PLTT_ID(1), PLTT_SIZE_4BPP); + LoadSpecialPokePic(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], + currSpecies, + personality, + TRUE); + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(currSpecies, trainerId, personality), OBJ_PLTT_ID(1), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(currSpecies, B_POSITION_OPPONENT_LEFT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; @@ -275,11 +272,11 @@ void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u gSprites[id].invisible = TRUE; // postEvo sprite - DecompressPicFromTableGender(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_RIGHT], - postEvoSpecies, - personality); - pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); - LoadCompressedPalette(pokePal->data, OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); + LoadSpecialPokePic(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_RIGHT], + postEvoSpecies, + personality, + TRUE); + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, trainerId, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, B_POSITION_OPPONENT_RIGHT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; @@ -312,7 +309,6 @@ void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u static void CB2_EvolutionSceneLoadGraphics(void) { u8 id; - const struct CompressedSpritePalette* pokePal; u16 postEvoSpecies; u32 trainerId, personality; struct Pokemon *mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskId].tPartyId]; @@ -352,12 +348,11 @@ static void CB2_EvolutionSceneLoadGraphics(void) FreeAllSpritePalettes(); gReservedSpritePaletteCount = 4; - DecompressPicFromTableGender(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_RIGHT], - postEvoSpecies, - personality); - pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); - - LoadCompressedPalette(pokePal->data, OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); + LoadSpecialPokePic(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_RIGHT], + postEvoSpecies, + personality, + TRUE); + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, trainerId, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, B_POSITION_OPPONENT_RIGHT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; @@ -421,14 +416,13 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) break; case 4: { - const struct CompressedSpritePalette* pokePal; u32 trainerId = GetMonData(mon, MON_DATA_OT_ID); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY); - DecompressPicFromTableGender(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_RIGHT], - postEvoSpecies, - personality); - pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); - LoadCompressedPalette(pokePal->data, OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); + LoadSpecialPokePic(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_RIGHT], + postEvoSpecies, + personality, + TRUE); + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, trainerId, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); gMain.state++; } break; @@ -471,7 +465,6 @@ void TradeEvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, u8 preEvoSprit u8 name[POKEMON_NAME_BUFFER_SIZE]; u16 currSpecies; u32 trainerId, personality; - const struct CompressedSpritePalette* pokePal; u8 id; GetMonData(mon, MON_DATA_NICKNAME, name); @@ -488,12 +481,12 @@ void TradeEvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, u8 preEvoSprit sEvoStructPtr = AllocZeroed(sizeof(struct EvoInfo)); sEvoStructPtr->preEvoSpriteId = preEvoSpriteId; - DecompressPicFromTableGender(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], - postEvoSpecies, - personality); + LoadSpecialPokePic(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], + postEvoSpecies, + personality, + TRUE); - pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); - LoadCompressedPalette(pokePal->data, OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, trainerId, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, B_POSITION_OPPONENT_LEFT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; @@ -549,8 +542,15 @@ static void CB2_TradeEvolutionSceneUpdate(void) static void CreateShedinja(u16 preEvoSpecies, struct Pokemon *mon) { u32 data = 0; - u16 ball = ITEM_POKE_BALL; - if (gEvolutionTable[preEvoSpecies][0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < PARTY_SIZE + #if P_SHEDINJA_BALL >= GEN_4 + u16 ball = ITEM_POKE_BALL; + #endif + const struct Evolution *evolutions = GetSpeciesEvolutions(preEvoSpecies); + + if (evolutions == NULL) + return; + + if (evolutions[0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < PARTY_SIZE #if P_SHEDINJA_BALL >= GEN_4 && (CheckBagHasItem(ball, 1)) #endif @@ -560,8 +560,8 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon *mon) struct Pokemon *shedinja = &gPlayerParty[gPlayerPartyCount]; CopyMon(&gPlayerParty[gPlayerPartyCount], mon, sizeof(struct Pokemon)); - SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_SPECIES, &gEvolutionTable[preEvoSpecies][1].targetSpecies); - SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_NICKNAME, GetSpeciesName(gEvolutionTable[preEvoSpecies][1].targetSpecies)); + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_SPECIES, &evolutions[1].targetSpecies); + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_NICKNAME, GetSpeciesName(evolutions[1].targetSpecies)); SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_HELD_ITEM, &data); SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, &data); SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_ENCRYPT_SEPARATOR, &data); @@ -583,8 +583,8 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon *mon) CalculateMonStats(&gPlayerParty[gPlayerPartyCount]); CalculatePlayerPartyCount(); - GetSetPokedexFlag(SpeciesToNationalPokedexNum(gEvolutionTable[preEvoSpecies][1].targetSpecies), FLAG_SET_SEEN); - GetSetPokedexFlag(SpeciesToNationalPokedexNum(gEvolutionTable[preEvoSpecies][1].targetSpecies), FLAG_SET_CAUGHT); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(evolutions[1].targetSpecies), FLAG_SET_SEEN); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(evolutions[1].targetSpecies), FLAG_SET_CAUGHT); if (GetMonData(shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA && GetMonData(shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE @@ -1645,8 +1645,7 @@ static void StartBgAnimation(bool8 isLink) CreateBgAnimTask(isLink); } -// Unused -static void PauseBgPaletteAnim(void) +static void UNUSED PauseBgPaletteAnim(void) { u8 taskId = FindTaskIdByFunc(Task_UpdateBgPalette); diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index a1575ba00e..d5c252415d 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -28,6 +28,7 @@ #include "start_menu.h" #include "trainer_see.h" #include "trainer_hill.h" +#include "vs_seeker.h" #include "wild_encounter.h" #include "constants/event_bg.h" #include "constants/event_objects.h" @@ -68,7 +69,9 @@ static bool8 TryStartWarpEventScript(struct MapPosition *, u16); static bool8 TryStartMiscWalkingScripts(u16); static bool8 TryStartStepCountScript(u16); static void UpdateFriendshipStepCounter(void); +#if OW_POISON_DAMAGE < GEN_5 static bool8 UpdatePoisonStepCounter(void); +#endif // OW_POISON_DAMAGE void FieldClearPlayerInput(struct FieldInput *input) { @@ -613,6 +616,11 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior) ScriptContext_SetupScript(MossdeepCity_SpaceCenter_2F_EventScript_RivalRayquazaCall); return TRUE; } + if (UpdateVsSeekerStepCounter()) + { + ScriptContext_SetupScript(EventScript_VsSeekerChargingDone); + return TRUE; + } } if (SafariZoneTakeStep() == TRUE) @@ -627,8 +635,7 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior) return FALSE; } -// Unused -static void ClearFriendshipStepCounter(void) +static void UNUSED ClearFriendshipStepCounter(void) { VarSet(VAR_FRIENDSHIP_STEP_COUNTER, 0); } @@ -656,6 +663,7 @@ void ClearPoisonStepCounter(void) VarSet(VAR_POISON_STEP_COUNTER, 0); } +#if OW_POISON_DAMAGE < GEN_5 static bool8 UpdatePoisonStepCounter(void) { u16 *ptr; @@ -680,6 +688,7 @@ static bool8 UpdatePoisonStepCounter(void) } return FALSE; } +#endif // OW_POISON_DAMAGE void RestartWildEncounterImmunitySteps(void) { diff --git a/src/field_door.c b/src/field_door.c index 756d0dabf1..b922c939b7 100644 --- a/src/field_door.c +++ b/src/field_door.c @@ -408,11 +408,11 @@ static bool32 AnimateDoorFrame(struct DoorGraphics *gfx, struct DoorAnimFrame *f static void Task_AnimateDoor(u8 taskId) { - u16 *data = gTasks[taskId].data; + u16 *data = (u16*) gTasks[taskId].data; struct DoorAnimFrame *frames = (struct DoorAnimFrame *)(tFramesHi << 16 | tFramesLo); struct DoorGraphics *gfx = (struct DoorGraphics *)(tGfxHi << 16 | tGfxLo); - if (AnimateDoorFrame(gfx, frames, data) == FALSE) + if (AnimateDoorFrame(gfx, frames, gTasks[taskId].data) == FALSE) DestroyTask(taskId); } @@ -502,8 +502,8 @@ static s8 GetDoorSoundType(const struct DoorGraphics *gfx, u32 x, u32 y) return gfx->sound; } -// Unused. Debug? Same as FieldAnimateDoorOpen but doesnt return or check if metatile is actually a door -static void Debug_FieldAnimateDoorOpen(u32 x, u32 y) +// Debug? Same as FieldAnimateDoorOpen but doesnt return or check if metatile is actually a door +static void UNUSED Debug_FieldAnimateDoorOpen(u32 x, u32 y) { StartDoorOpenAnimation(sDoorAnimGraphicsTable, x, y); } diff --git a/src/field_effect.c b/src/field_effect.c index 5b00f5340c..be5b2c8820 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -31,6 +31,7 @@ #include "constants/metatile_behaviors.h" #include "constants/rgb.h" #include "constants/songs.h" +#include "constants/map_types.h" #define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))} @@ -231,12 +232,17 @@ static void SpriteCB_DeoxysRockFragment(struct Sprite *sprite); static void Task_MoveDeoxysRock(u8 taskId); +static void Task_FldEffUseVsSeeker(u8 taskId); +static void UseVsSeeker_StopPlayerMovement(struct Task *task); +static void UseVsSeeker_DoPlayerAnimation(struct Task *task); +static void UseVsSeeker_ResetPlayerGraphics(struct Task *task); +static void UseVsSeeker_CleanUpFieldEffect(struct Task *task); + // Static RAM declarations static u8 sActiveList[32]; // External declarations -extern const struct CompressedSpritePalette gMonPaletteTable[]; extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; extern u8 *gFieldEffectScriptPointers[]; @@ -900,8 +906,7 @@ u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buf return CreateSprite(&spriteTemplate, x, y, subpriority); } -// Unused -static void LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest) +static void UNUSED LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest) { LZDecompressVram(gTrainerFrontPicTable[gender].data, dest); LoadCompressedPalette(gTrainerFrontPicPaletteTable[gender].data, palOffset, PLTT_SIZE_4BPP); @@ -915,8 +920,8 @@ u8 AddNewGameBirchObject(s16 x, s16 y, u8 subpriority) u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority) { - s32 spriteId = CreateMonPicSprite(species, 0, 0x8000, TRUE, x, y, 0, gMonPaletteTable[species].tag); - PreservePaletteInWeather(IndexOfSpritePaletteTag(gMonPaletteTable[species].tag) + 0x10); + s32 spriteId = CreateMonPicSprite(species, 0, 0x8000, TRUE, x, y, 0, species); + PreservePaletteInWeather(IndexOfSpritePaletteTag(species) + 0x10); if (spriteId == 0xFFFF) return MAX_SPRITES; else @@ -925,9 +930,8 @@ u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority) u8 CreateMonSprite_FieldMove(u16 species, u32 otId, u32 personality, s16 x, s16 y, u8 subpriority) { - const struct CompressedSpritePalette *spritePalette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); - u16 spriteId = CreateMonPicSprite(species, otId, personality, TRUE, x, y, 0, spritePalette->tag); - PreservePaletteInWeather(IndexOfSpritePaletteTag(spritePalette->tag) + 0x10); + u16 spriteId = CreateMonPicSprite(species, otId, personality, TRUE, x, y, 0, species); + PreservePaletteInWeather(IndexOfSpritePaletteTag(species) + 0x10); if (spriteId == 0xFFFF) return MAX_SPRITES; else @@ -2610,7 +2614,7 @@ static void FieldMoveShowMonOutdoorsEffect_Init(struct Task *task) { task->data[11] = REG_WININ; task->data[12] = REG_WINOUT; - StoreWordInTwoHalfwords(&task->data[13], (u32)gMain.vblankCallback); + StoreWordInTwoHalfwords((u16*) &task->data[13], (u32)gMain.vblankCallback); task->tWinHoriz = WIN_RANGE(DISPLAY_WIDTH, DISPLAY_WIDTH + 1); task->tWinVert = WIN_RANGE(DISPLAY_HEIGHT / 2, DISPLAY_HEIGHT / 2 + 1); task->tWinIn = WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR; @@ -3912,3 +3916,68 @@ static void Task_MoveDeoxysRock(u8 taskId) #undef tVelocityY #undef tMoveSteps #undef tObjEventId + +static void (*const sUseVsSeekerEffectFuncs[])(struct Task *task) = { + UseVsSeeker_StopPlayerMovement, + UseVsSeeker_DoPlayerAnimation, + UseVsSeeker_ResetPlayerGraphics, + UseVsSeeker_CleanUpFieldEffect +}; + +u32 FldEff_UseVsSeeker(void) +{ + CreateTask(Task_FldEffUseVsSeeker, 0xFF); + return 0; +} + +static void Task_FldEffUseVsSeeker(u8 taskId) +{ + sUseVsSeekerEffectFuncs[gTasks[taskId].data[0]](&gTasks[taskId]); +} + +static void UseVsSeeker_StopPlayerMovement(struct Task *task) +{ + LockPlayerFieldControls(); + FreezeObjectEvents(); + gPlayerAvatar.preventStep = TRUE; + task->data[0]++; +} + +static void UseVsSeeker_DoPlayerAnimation(struct Task *task) +{ + struct ObjectEvent * playerObj = &gObjectEvents[gPlayerAvatar.objectEventId]; + if ((ObjectEventIsMovementOverridden(playerObj) && (!(ObjectEventClearHeldMovementIfFinished(playerObj))))) + return; + + if (gMapHeader.mapType != MAP_TYPE_UNDERWATER) + { + SetPlayerAvatarFieldMove(); + ObjectEventSetHeldMovement(playerObj, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION); + } + task->data[0]++; +} + +static void UseVsSeeker_ResetPlayerGraphics(struct Task *task) { + struct ObjectEvent* playerObj = &gObjectEvents[gPlayerAvatar.objectEventId]; + + if (!ObjectEventClearHeldMovementIfFinished(playerObj)) + return; + + if (gMapHeader.mapType != MAP_TYPE_UNDERWATER) + { + ObjectEventSetGraphicsId(&gObjectEvents[gPlayerAvatar.objectEventId], GetPlayerAvatarGraphicsIdByCurrentState()); + ObjectEventForceSetHeldMovement(playerObj, GetFaceDirectionMovementAction(playerObj->facingDirection)); + } + task->data[0]++; +} + +static void UseVsSeeker_CleanUpFieldEffect(struct Task *task) +{ + struct ObjectEvent * playerObj = &gObjectEvents[gPlayerAvatar.objectEventId]; + if (!ObjectEventClearHeldMovementIfFinished(playerObj)) + return; + + gPlayerAvatar.preventStep = FALSE; + FieldEffectActiveListRemove(FLDEFF_USE_VS_SEEKER); + DestroyTask(FindTaskIdByFunc(Task_FldEffUseVsSeeker)); +} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 9421aaf27a..ac4dac3ecb 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -32,8 +32,12 @@ static void UpdateBobbingEffect(struct ObjectEvent *, struct Sprite *, struct Sp static void SpriteCB_UnderwaterSurfBlob(struct Sprite *); static u32 ShowDisguiseFieldEffect(u8, u8, u8); -// Used by several field effects to determine which of a group it is -#define sFldEff data[1] +// Data used by all the field effects that share UpdateJumpImpactEffect +#define sJumpElevation data[0] +#define sJumpFldEff data[1] + +// Data used by all the field effects that share WaitFieldEffectSpriteAnim +#define sWaitFldEff data[0] #define sReflectionObjEventId data[0] #define sReflectionObjEventLocalId data[1] @@ -44,7 +48,7 @@ void SetUpReflection(struct ObjectEvent *objectEvent, struct Sprite *sprite, boo { struct Sprite *reflectionSprite; - reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->x, sprite->y, 0x98)]; + reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->x, sprite->y, 152)]; reflectionSprite->callback = UpdateObjectReflectionSprite; reflectionSprite->oam.priority = 3; reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[reflectionSprite->oam.paletteNum]; @@ -92,9 +96,7 @@ static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, u8 paletteIndex) { - const struct ObjectEventGraphicsInfo *graphicsInfo; - - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE) { if (graphicsInfo->paletteSlot == PALSLOT_PLAYER) @@ -111,9 +113,7 @@ static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, // This is so the sprite blends in with the dark water metatile underneath the bridge. static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEvent, u8 paletteNum) { - const struct ObjectEventGraphicsInfo *graphicsInfo; - - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE) { PatchObjectPalette(graphicsInfo->reflectionPaletteTag, paletteNum); @@ -123,11 +123,8 @@ static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEven static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) { - struct ObjectEvent *objectEvent; - struct Sprite *mainSprite; - - objectEvent = &gObjectEvents[reflectionSprite->sReflectionObjEventId]; - mainSprite = &gSprites[objectEvent->spriteId]; + struct ObjectEvent *objectEvent = &gObjectEvents[reflectionSprite->sReflectionObjEventId]; + struct Sprite *mainSprite = &gSprites[objectEvent->spriteId]; if (!objectEvent->active || !objectEvent->hasReflection || objectEvent->localId != reflectionSprite->sReflectionObjEventLocalId) { reflectionSprite->inUse = FALSE; @@ -172,15 +169,15 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; +#define sPrevX data[0] +#define sPrevY data[1] + u8 CreateWarpArrowSprite(void) { - u8 spriteId; - struct Sprite *sprite; - - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_ARROW], 0, 0, 0x52); + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_ARROW], 0, 0, 82); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->oam.priority = 1; sprite->coordOffsetEnabled = TRUE; sprite->invisible = TRUE; @@ -195,24 +192,24 @@ void SetSpriteInvisible(u8 spriteId) void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y) { - s16 x2; - s16 y2; - struct Sprite *sprite; - - sprite = &gSprites[spriteId]; - if (sprite->invisible || sprite->data[0] != x || sprite->data[1] != y) + struct Sprite *sprite = &gSprites[spriteId]; + if (sprite->invisible || sprite->sPrevX != x || sprite->sPrevY != y) { + s16 x2, y2; SetSpritePosToMapCoords(x, y, &x2, &y2); sprite = &gSprites[spriteId]; sprite->x = x2 + 8; sprite->y = y2 + 8; sprite->invisible = FALSE; - sprite->data[0] = x; - sprite->data[1] = y; + sprite->sPrevX = x; + sprite->sPrevY = y; StartSpriteAnim(sprite, direction - 1); } } +#undef sPrevX +#undef sPrevY + static const u8 sShadowEffectTemplateIds[] = { FLDEFFOBJ_SHADOW_S, FLDEFFOBJ_SHADOW_M, @@ -227,22 +224,24 @@ const u16 gShadowVerticalOffsets[] = { 16 }; +// Sprite data for FLDEFF_SHADOW +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] +#define sYOffset data[3] + u32 FldEff_Shadow(void) { - u8 objectEventId; - const struct ObjectEventGraphicsInfo *graphicsInfo; - u8 spriteId; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[sShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0, 0x94); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[sShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0, 148); if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].data[0] = gFieldEffectArguments[0]; - gSprites[spriteId].data[1] = gFieldEffectArguments[1]; - gSprites[spriteId].data[2] = gFieldEffectArguments[2]; - gSprites[spriteId].data[3] = (graphicsInfo->height >> 1) - gShadowVerticalOffsets[graphicsInfo->shadowSize]; + gSprites[spriteId].sLocalId = gFieldEffectArguments[0]; + gSprites[spriteId].sMapNum = gFieldEffectArguments[1]; + gSprites[spriteId].sMapGroup = gFieldEffectArguments[2]; + gSprites[spriteId].sYOffset = (graphicsInfo->height >> 1) - gShadowVerticalOffsets[graphicsInfo->shadowSize]; } return 0; } @@ -250,20 +249,18 @@ u32 FldEff_Shadow(void) void UpdateShadowFieldEffect(struct Sprite *sprite) { u8 objectEventId; - struct ObjectEvent *objectEvent; - struct Sprite *linkedSprite; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId)) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId)) { FieldEffectStop(sprite, FLDEFF_SHADOW); } else { - objectEvent = &gObjectEvents[objectEventId]; - linkedSprite = &gSprites[objectEvent->spriteId]; + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + struct Sprite *linkedSprite = &gSprites[objectEvent->spriteId]; sprite->oam.priority = linkedSprite->oam.priority; sprite->x = linkedSprite->x; - sprite->y = linkedSprite->y + sprite->data[3]; + sprite->y = linkedSprite->y + sprite->sYOffset; if (!objectEvent->active || !objectEvent->hasShadow || MetatileBehavior_IsPokeGrass(objectEvent->currentMetatileBehavior) || MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->currentMetatileBehavior) @@ -276,6 +273,11 @@ void UpdateShadowFieldEffect(struct Sprite *sprite) } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup +#undef sYOffset + // Sprite data for FLDEFF_TALL_GRASS and FLDEFF_LONG_GRASS #define sElevation data[0] #define sX data[1] @@ -288,18 +290,14 @@ void UpdateShadowFieldEffect(struct Sprite *sprite) u32 FldEff_TallGrass(void) { - s16 x; - s16 y; u8 spriteId; - struct Sprite *sprite; - - x = gFieldEffectArguments[0]; - y = gFieldEffectArguments[1]; + s16 x = gFieldEffectArguments[0]; + s16 y = gFieldEffectArguments[1]; SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_TALL_GRASS], x, y, 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; sprite->sElevation = gFieldEffectArguments[2]; @@ -317,15 +315,12 @@ u32 FldEff_TallGrass(void) void UpdateTallGrassFieldEffect(struct Sprite *sprite) { - u8 mapNum; - u8 mapGroup; u8 metatileBehavior; u8 localId; u8 objectEventId; - struct ObjectEvent *objectEvent; + u8 mapNum = sprite->sCurrentMap >> 8; + u8 mapGroup = sprite->sCurrentMap; - mapNum = sprite->sCurrentMap >> 8; - mapGroup = sprite->sCurrentMap; if (gCamera.active && (gSaveBlock1Ptr->location.mapNum != mapNum || gSaveBlock1Ptr->location.mapGroup != mapGroup)) { sprite->sX -= gCamera.x; @@ -346,11 +341,9 @@ void UpdateTallGrassFieldEffect(struct Sprite *sprite) else { // Check if the object that triggered the effect has moved away - objectEvent = &gObjectEvents[objectEventId]; - if ((objectEvent->currentCoords.x != sprite->sX - || objectEvent->currentCoords.y != sprite->sY) - && (objectEvent->previousCoords.x != sprite->sX - || objectEvent->previousCoords.y != sprite->sY)) + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + if ((objectEvent->currentCoords.x != sprite->sX || objectEvent->currentCoords.y != sprite->sY) + && (objectEvent->previousCoords.x != sprite->sX || objectEvent->previousCoords.y != sprite->sY)) sprite->sObjectMoved = TRUE; // Metatile behavior var re-used as subpriority @@ -366,31 +359,28 @@ void UpdateTallGrassFieldEffect(struct Sprite *sprite) u32 FldEff_JumpTallGrass(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_TALL_GRASS], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->sElevation = gFieldEffectArguments[2]; - sprite->sFldEff = FLDEFF_JUMP_TALL_GRASS; + sprite->sJumpElevation = gFieldEffectArguments[2]; + sprite->sJumpFldEff = FLDEFF_JUMP_TALL_GRASS; } return 0; } u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) { - struct Sprite *sprite; u8 i; - for (i = 0; i < MAX_SPRITES; i ++) { if (gSprites[i].inUse) { - sprite = &gSprites[i]; + struct Sprite *sprite = &gSprites[i]; if (sprite->callback == UpdateTallGrassFieldEffect && (x == sprite->sX && y == sprite->sY) && localId == (u8)(sprite->sLocalId) @@ -404,18 +394,14 @@ u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s u32 FldEff_LongGrass(void) { - s16 x; - s16 y; u8 spriteId; - struct Sprite *sprite; - - x = gFieldEffectArguments[0]; - y = gFieldEffectArguments[1]; + s16 x = gFieldEffectArguments[0]; + s16 y = gFieldEffectArguments[1]; SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_LONG_GRASS], x, y, 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = ElevationToPriority(gFieldEffectArguments[2]); sprite->sElevation = gFieldEffectArguments[2]; @@ -433,15 +419,12 @@ u32 FldEff_LongGrass(void) void UpdateLongGrassFieldEffect(struct Sprite *sprite) { - u8 mapNum; - u8 mapGroup; u8 metatileBehavior; u8 localId; u8 objectEventId; - struct ObjectEvent *objectEvent; + u8 mapNum = sprite->sCurrentMap >> 8; + u8 mapGroup = sprite->sCurrentMap; - mapNum = sprite->sCurrentMap >> 8; - mapGroup = sprite->sCurrentMap; if (gCamera.active && (gSaveBlock1Ptr->location.mapNum != mapNum || gSaveBlock1Ptr->location.mapGroup != mapGroup)) { sprite->sX -= gCamera.x; @@ -451,7 +434,7 @@ void UpdateLongGrassFieldEffect(struct Sprite *sprite) localId = sprite->sLocalId; mapNum = sprite->sMapNum; mapGroup = sprite->sMapGroup; - metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data[1], sprite->data[2]); + metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->sX, sprite->sY); if (TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId) || !MetatileBehavior_IsLongGrass(metatileBehavior) || (sprite->sObjectMoved && sprite->animEnded)) @@ -461,11 +444,9 @@ void UpdateLongGrassFieldEffect(struct Sprite *sprite) else { // Check if the object that triggered the effect has moved away - objectEvent = &gObjectEvents[objectEventId]; - if ((objectEvent->currentCoords.x != sprite->data[1] - || objectEvent->currentCoords.y != sprite->data[2]) - && (objectEvent->previousCoords.x != sprite->data[1] - || objectEvent->previousCoords.y != sprite->data[2])) + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + if ((objectEvent->currentCoords.x != sprite->sX || objectEvent->currentCoords.y != sprite->sY) + && (objectEvent->previousCoords.x != sprite->sX || objectEvent->previousCoords.y != sprite->sY)) sprite->sObjectMoved = TRUE; UpdateObjectEventSpriteInvisibility(sprite, FALSE); @@ -473,6 +454,7 @@ void UpdateLongGrassFieldEffect(struct Sprite *sprite) } } +#undef sElevation #undef sX #undef sY #undef sMapNum @@ -486,41 +468,42 @@ void UpdateLongGrassFieldEffect(struct Sprite *sprite) u32 FldEff_JumpLongGrass(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_LONG_GRASS], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->sElevation = gFieldEffectArguments[2]; - sprite->sFldEff = FLDEFF_JUMP_LONG_GRASS; + sprite->sJumpElevation = gFieldEffectArguments[2]; + sprite->sJumpFldEff = FLDEFF_JUMP_LONG_GRASS; } return 0; } +// Sprite data for FLDEFF_SHORT_GRASS +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] +#define sPrevX data[3] +#define sPrevY data[4] + u32 FldEff_ShortGrass(void) { - u8 objectEventId; - struct ObjectEvent *objectEvent; - u8 spriteId; - struct Sprite *sprite; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - objectEvent = &gObjectEvents[objectEventId]; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SHORT_GRASS], 0, 0, 0); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SHORT_GRASS], 0, 0, 0); if (spriteId != MAX_SPRITES) { - sprite = &(gSprites[spriteId]); + struct Sprite *sprite = &(gSprites[spriteId]); sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[objectEvent->spriteId].oam.priority; - sprite->data[0] = gFieldEffectArguments[0]; - sprite->data[1] = gFieldEffectArguments[1]; - sprite->data[2] = gFieldEffectArguments[2]; - sprite->data[3] = gSprites[objectEvent->spriteId].x; - sprite->data[4] = gSprites[objectEvent->spriteId].y; + sprite->sLocalId = gFieldEffectArguments[0]; + sprite->sMapNum = gFieldEffectArguments[1]; + sprite->sMapGroup = gFieldEffectArguments[2]; + sprite->sPrevX = gSprites[objectEvent->spriteId].x; + sprite->sPrevY = gSprites[objectEvent->spriteId].y; } return 0; } @@ -528,32 +511,28 @@ u32 FldEff_ShortGrass(void) void UpdateShortGrassFieldEffect(struct Sprite *sprite) { u8 objectEventId; - s16 x; - s16 y; - const struct ObjectEventGraphicsInfo *graphicsInfo; - struct Sprite *linkedSprite; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inShortGrass) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId) || !gObjectEvents[objectEventId].inShortGrass) { FieldEffectStop(sprite, FLDEFF_SHORT_GRASS); } else { - graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); - linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId]; - y = linkedSprite->y; - x = linkedSprite->x; - if (x != sprite->data[3] || y != sprite->data[4]) + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); + struct Sprite *linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId]; + s16 parentY = linkedSprite->y; + s16 parentX = linkedSprite->x; + if (parentX != sprite->sPrevX || parentY != sprite->sPrevY) { - sprite->data[3] = x; - sprite->data[4] = y; + // Parent sprite moved, try to restart the animation + sprite->sPrevX = parentX; + sprite->sPrevY = parentY; if (sprite->animEnded) - { StartSpriteAnim(sprite, 0); - } } - sprite->x = x; - sprite->y = y; + sprite->x = parentX; + sprite->y = parentY; + // Offset the grass sprite halfway down the parent sprite. sprite->y2 = (graphicsInfo->height >> 1) - 8; sprite->subpriority = linkedSprite->subpriority - 1; sprite->oam.priority = linkedSprite->oam.priority; @@ -561,19 +540,29 @@ void UpdateShortGrassFieldEffect(struct Sprite *sprite) } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup +#undef sPrevX +#undef sPrevY + +// Sprite data for FLDEFF_SAND_FOOTPRINTS, FLDEFF_DEEP_SAND_FOOTPRINTS, and FLDEFF_BIKE_TIRE_TRACKS +#define sState data[0] +#define sTimer data[1] +#define sFldEff data[7] + u32 FldEff_SandFootprints(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SAND_FOOTPRINTS], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[7] = FLDEFF_SAND_FOOTPRINTS; + sprite->sFldEff = FLDEFF_SAND_FOOTPRINTS; StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return 0; @@ -582,16 +571,15 @@ u32 FldEff_SandFootprints(void) u32 FldEff_DeepSandFootprints(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_DEEP_SAND_FOOTPRINTS], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[7] = FLDEFF_DEEP_SAND_FOOTPRINTS; + sprite->sFldEff = FLDEFF_DEEP_SAND_FOOTPRINTS; StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return spriteId; @@ -600,16 +588,15 @@ u32 FldEff_DeepSandFootprints(void) u32 FldEff_BikeTireTracks(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BIKE_TIRE_TRACKS], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[7] = FLDEFF_BIKE_TIRE_TRACKS; + sprite->sFldEff = FLDEFF_BIKE_TIRE_TRACKS; StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return spriteId; @@ -622,14 +609,14 @@ void (*const gFadeFootprintsTireTracksFuncs[])(struct Sprite *) = { void UpdateFootprintsTireTracksFieldEffect(struct Sprite *sprite) { - gFadeFootprintsTireTracksFuncs[sprite->data[0]](sprite); + gFadeFootprintsTireTracksFuncs[sprite->sState](sprite); } static void FadeFootprintsTireTracks_Step0(struct Sprite *sprite) { // Wait 40 frames before the flickering starts. - if (++sprite->data[1] > 40) - sprite->data[0] = 1; + if (++sprite->sTimer > 40) + sprite->sState = 1; UpdateObjectEventSpriteInvisibility(sprite, FALSE); } @@ -637,36 +624,37 @@ static void FadeFootprintsTireTracks_Step0(struct Sprite *sprite) static void FadeFootprintsTireTracks_Step1(struct Sprite *sprite) { sprite->invisible ^= 1; - sprite->data[1]++; + sprite->sTimer++; UpdateObjectEventSpriteInvisibility(sprite, sprite->invisible); - if (sprite->data[1] > 56) - { - FieldEffectStop(sprite, sprite->data[7]); - } + if (sprite->sTimer > 56) + FieldEffectStop(sprite, sprite->sFldEff); } +#undef sState +#undef sTimer +#undef sFldEff + +// Sprite data for FLDEFF_SPLASH +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] + u32 FldEff_Splash(void) { - u8 objectEventId; - struct ObjectEvent *objectEvent; - u8 spriteId; - struct Sprite *sprite; - const struct ObjectEventGraphicsInfo *graphicsInfo; - struct Sprite *linkedSprite; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - objectEvent = &gObjectEvents[objectEventId]; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPLASH], 0, 0, 0); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPLASH], 0, 0, 0); if (spriteId != MAX_SPRITES) { - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - sprite = &gSprites[spriteId]; + struct Sprite *linkedSprite; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; linkedSprite = &gSprites[objectEvent->spriteId]; sprite->oam.priority = linkedSprite->oam.priority; - sprite->data[0] = gFieldEffectArguments[0]; - sprite->data[1] = gFieldEffectArguments[1]; - sprite->data[2] = gFieldEffectArguments[2]; + sprite->sLocalId = gFieldEffectArguments[0]; + sprite->sMapNum = gFieldEffectArguments[1]; + sprite->sMapGroup = gFieldEffectArguments[2]; sprite->y2 = (graphicsInfo->height >> 1) - 4; PlaySE(SE_PUDDLE); } @@ -677,7 +665,7 @@ void UpdateSplashFieldEffect(struct Sprite *sprite) { u8 objectEventId; - if (sprite->animEnded || TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId)) + if (sprite->animEnded || TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId)) { FieldEffectStop(sprite, FLDEFF_SPLASH); } @@ -689,20 +677,23 @@ void UpdateSplashFieldEffect(struct Sprite *sprite) } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup + u32 FldEff_JumpSmallSplash(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_SMALL_SPLASH], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = gFieldEffectArguments[2]; - sprite->data[1] = FLDEFF_JUMP_SMALL_SPLASH; + sprite->sJumpElevation = gFieldEffectArguments[2]; + sprite->sJumpFldEff = FLDEFF_JUMP_SMALL_SPLASH; } return 0; } @@ -710,44 +701,44 @@ u32 FldEff_JumpSmallSplash(void) u32 FldEff_JumpBigSplash(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_BIG_SPLASH], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = gFieldEffectArguments[2]; - sprite->data[1] = FLDEFF_JUMP_BIG_SPLASH; + sprite->sJumpElevation = gFieldEffectArguments[2]; + sprite->sJumpFldEff = FLDEFF_JUMP_BIG_SPLASH; } return 0; } +// Sprite data for FLDEFF_FEET_IN_FLOWING_WATER +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] +#define sPrevX data[3] +#define sPrevY data[4] + u32 FldEff_FeetInFlowingWater(void) { - u8 objectEventId; - struct ObjectEvent *objectEvent; - u8 spriteId; - struct Sprite *sprite; - const struct ObjectEventGraphicsInfo *graphicsInfo; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - objectEvent = &gObjectEvents[objectEventId]; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPLASH], 0, 0, 0); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPLASH], 0, 0, 0); if (spriteId != MAX_SPRITES) { - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - sprite = &gSprites[spriteId]; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + struct Sprite *sprite = &gSprites[spriteId]; sprite->callback = UpdateFeetInFlowingWaterFieldEffect; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[objectEvent->spriteId].oam.priority; - sprite->data[0] = gFieldEffectArguments[0]; - sprite->data[1] = gFieldEffectArguments[1]; - sprite->data[2] = gFieldEffectArguments[2]; - sprite->data[3] = -1; - sprite->data[4] = -1; + sprite->sLocalId = gFieldEffectArguments[0]; + sprite->sMapNum = gFieldEffectArguments[1]; + sprite->sMapGroup = gFieldEffectArguments[2]; + sprite->sPrevX = -1; + sprite->sPrevY = -1; sprite->y2 = (graphicsInfo->height >> 1) - 4; StartSpriteAnim(sprite, 1); } @@ -757,69 +748,70 @@ u32 FldEff_FeetInFlowingWater(void) static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *sprite) { u8 objectEventId; - struct Sprite *linkedSprite; - struct ObjectEvent *objectEvent; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inShallowFlowingWater) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId) || !gObjectEvents[objectEventId].inShallowFlowingWater) { FieldEffectStop(sprite, FLDEFF_FEET_IN_FLOWING_WATER); } else { - objectEvent = &gObjectEvents[objectEventId]; - linkedSprite = &gSprites[objectEvent->spriteId]; + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + struct Sprite *linkedSprite = &gSprites[objectEvent->spriteId]; sprite->x = linkedSprite->x; sprite->y = linkedSprite->y; sprite->subpriority = linkedSprite->subpriority; UpdateObjectEventSpriteInvisibility(sprite, FALSE); - if (objectEvent->currentCoords.x != sprite->data[3] || objectEvent->currentCoords.y != sprite->data[4]) + if (objectEvent->currentCoords.x != sprite->sPrevX || objectEvent->currentCoords.y != sprite->sPrevY) { - sprite->data[3] = objectEvent->currentCoords.x; - sprite->data[4] = objectEvent->currentCoords.y; + sprite->sPrevX = objectEvent->currentCoords.x; + sprite->sPrevY = objectEvent->currentCoords.y; if (!sprite->invisible) - { PlaySE(SE_PUDDLE); - } } } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup +#undef sPrevX +#undef sPrevY + u32 FldEff_Ripple(void) { - u8 spriteId; - struct Sprite *sprite; - - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_RIPPLE], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_RIPPLE], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = FLDEFF_RIPPLE; + sprite->sWaitFldEff = FLDEFF_RIPPLE; } return 0; } +// Sprite data for FLDEFF_HOT_SPRINGS_WATER +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] +#define sPrevX data[3] +#define sPrevY data[4] + u32 FldEff_HotSpringsWater(void) { - u8 objectEventId; - struct ObjectEvent *objectEvent; - u8 spriteId; - struct Sprite *sprite; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - objectEvent = &gObjectEvents[objectEventId]; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_HOT_SPRINGS_WATER], 0, 0, 0); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_HOT_SPRINGS_WATER], 0, 0, 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[objectEvent->spriteId].oam.priority; - sprite->data[0] = gFieldEffectArguments[0]; - sprite->data[1] = gFieldEffectArguments[1]; - sprite->data[2] = gFieldEffectArguments[2]; - sprite->data[3] = gSprites[objectEvent->spriteId].x; - sprite->data[4] = gSprites[objectEvent->spriteId].y; + sprite->sLocalId = gFieldEffectArguments[0]; + sprite->sMapNum = gFieldEffectArguments[1]; + sprite->sMapGroup = gFieldEffectArguments[2]; + sprite->sPrevX = gSprites[objectEvent->spriteId].x; // Unused + sprite->sPrevY = gSprites[objectEvent->spriteId].y; // Unused } return 0; } @@ -827,17 +819,15 @@ u32 FldEff_HotSpringsWater(void) void UpdateHotSpringsWaterFieldEffect(struct Sprite *sprite) { u8 objectEventId; - const struct ObjectEventGraphicsInfo *graphicsInfo; - struct Sprite *linkedSprite; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inHotSprings) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId) || !gObjectEvents[objectEventId].inHotSprings) { FieldEffectStop(sprite, FLDEFF_HOT_SPRINGS_WATER); } else { - graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); - linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId]; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId); + struct Sprite *linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId]; sprite->x = linkedSprite->x; sprite->y = (graphicsInfo->height >> 1) + linkedSprite->y - 8; sprite->subpriority = linkedSprite->subpriority - 1; @@ -845,19 +835,24 @@ void UpdateHotSpringsWaterFieldEffect(struct Sprite *sprite) } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup +#undef sPrevX +#undef sPrevY + u32 FldEff_UnusedGrass(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_UNUSED_GRASS], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = FLDEFF_UNUSED_GRASS; + sprite->sWaitFldEff = FLDEFF_UNUSED_GRASS; } return 0; } @@ -865,16 +860,15 @@ u32 FldEff_UnusedGrass(void) u32 FldEff_UnusedGrass2(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_UNUSED_GRASS_2], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = FLDEFF_UNUSED_GRASS_2; + sprite->sWaitFldEff = FLDEFF_UNUSED_GRASS_2; } return 0; } @@ -882,16 +876,15 @@ u32 FldEff_UnusedGrass2(void) u32 FldEff_UnusedSand(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_UNUSED_SAND], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = FLDEFF_UNUSED_SAND; + sprite->sWaitFldEff = FLDEFF_UNUSED_SAND; } return 0; } @@ -899,16 +892,15 @@ u32 FldEff_UnusedSand(void) u32 FldEff_WaterSurfacing(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_WATER_SURFACING], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = FLDEFF_WATER_SURFACING; + sprite->sWaitFldEff = FLDEFF_WATER_SURFACING; } return 0; } @@ -933,18 +925,15 @@ void StartAshFieldEffect(s16 x, s16 y, u16 metatileId, s16 delay) u32 FldEff_Ash(void) { - s16 x; - s16 y; u8 spriteId; - struct Sprite *sprite; - x = gFieldEffectArguments[0]; - y = gFieldEffectArguments[1]; + s16 x = gFieldEffectArguments[0]; + s16 y = gFieldEffectArguments[1]; SetSpritePosToOffsetMapCoords(&x, &y, 8, 8); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_ASH], x, y, gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; sprite->sX = gFieldEffectArguments[0]; @@ -998,27 +987,30 @@ static void UpdateAshFieldEffect_End(struct Sprite *sprite) #undef sDelay // Sprite data for FLDEFF_SURF_BLOB -#define tBitfield data[0] -#define tPlayerOffset data[1] -#define tPlayerObjId data[2] - +#define sBitfield data[0] +#define sPlayerOffset data[1] +#define sPlayerObjId data[2] +#define sVelocity data[3] +#define sTimer data[4] +#define sIntervalIdx data[5] +#define sPrevX data[6] +#define sPrevY data[7] u32 FldEff_SurfBlob(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SURF_BLOB], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x96); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SURF_BLOB], gFieldEffectArguments[0], gFieldEffectArguments[1], 150); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.paletteNum = 0; - sprite->tPlayerObjId = gFieldEffectArguments[2]; - sprite->data[3] = -1; - sprite->data[6] = -1; - sprite->data[7] = -1; + sprite->sPlayerObjId = gFieldEffectArguments[2]; + sprite->sVelocity = -1; + sprite->sPrevX = -1; + sprite->sPrevY = -1; } FieldEffectActiveListRemove(FLDEFF_SURF_BLOB); return spriteId; @@ -1027,43 +1019,40 @@ u32 FldEff_SurfBlob(void) void SetSurfBlob_BobState(u8 spriteId, u8 state) { - gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF) | (state & 0xF); + gSprites[spriteId].sBitfield = (gSprites[spriteId].sBitfield & ~0xF) | (state & 0xF); } void SetSurfBlob_DontSyncAnim(u8 spriteId, bool8 dontSync) { - gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF0) | ((dontSync & 0xF) << 4); + gSprites[spriteId].sBitfield = (gSprites[spriteId].sBitfield & ~0xF0) | ((dontSync & 0xF) << 4); } void SetSurfBlob_PlayerOffset(u8 spriteId, bool8 hasOffset, s16 offset) { - gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF00) | ((hasOffset & 0xF) << 8); - gSprites[spriteId].tPlayerOffset = offset; + gSprites[spriteId].sBitfield = (gSprites[spriteId].sBitfield & ~0xF00) | ((hasOffset & 0xF) << 8); + gSprites[spriteId].sPlayerOffset = offset; } static u8 GetSurfBlob_BobState(struct Sprite *sprite) { - return sprite->data[0] & 0xF; + return sprite->sBitfield & 0xF; } // Never TRUE static u8 GetSurfBlob_DontSyncAnim(struct Sprite *sprite) { - return (sprite->data[0] & 0xF0) >> 4; + return (sprite->sBitfield & 0xF0) >> 4; } static u8 GetSurfBlob_HasPlayerOffset(struct Sprite *sprite) { - return (sprite->data[0] & 0xF00) >> 8; + return (sprite->sBitfield & 0xF00) >> 8; } void UpdateSurfBlobFieldEffect(struct Sprite *sprite) { - struct ObjectEvent *playerObj; - struct Sprite *playerSprite; - - playerObj = &gObjectEvents[sprite->tPlayerObjId]; - playerSprite = &gSprites[playerObj->spriteId]; + struct ObjectEvent *playerObj = &gObjectEvents[sprite->sPlayerObjId]; + struct Sprite *playerSprite = &gSprites[playerObj->spriteId]; SynchroniseSurfAnim(playerObj, sprite); SynchroniseSurfPosition(playerObj, sprite); UpdateBobbingEffect(playerObj, playerSprite, sprite); @@ -1096,17 +1085,19 @@ void SynchroniseSurfPosition(struct ObjectEvent *playerObj, struct Sprite *sprit s16 y = playerObj->currentCoords.y; s32 spriteY = sprite->y2; - if (spriteY == 0 && (x != sprite->data[6] || y != sprite->data[7])) + if (spriteY == 0 && (x != sprite->sPrevX || y != sprite->sPrevY)) { - sprite->data[5] = spriteY; - sprite->data[6] = x; - sprite->data[7] = y; - for (i = DIR_SOUTH; i <= DIR_EAST; i++, x = sprite->data[6], y = sprite->data[7]) + // Player is moving while surfing, update position. + sprite->sIntervalIdx = 0; + sprite->sPrevX = x; + sprite->sPrevY = y; + for (i = DIR_SOUTH; i <= DIR_EAST; i++, x = sprite->sPrevX, y = sprite->sPrevY) { MoveCoords(i, &x, &y); if (MapGridGetElevationAt(x, y) == 3) { - sprite->data[5]++; + // While dismounting the surf blob bobs at a slower rate + sprite->sIntervalIdx++; break; } } @@ -1115,46 +1106,54 @@ void SynchroniseSurfPosition(struct ObjectEvent *playerObj, struct Sprite *sprit static void UpdateBobbingEffect(struct ObjectEvent *playerObj, struct Sprite *playerSprite, struct Sprite *sprite) { - u16 intervals[] = {3, 7}; + // The frame interval at which to update the blob's y movement. + // Normally every 4th frame, but every 8th frame while dismounting. + u16 intervals[] = {0x3, 0x7}; + u8 bobState = GetSurfBlob_BobState(sprite); if (bobState != BOB_NONE) { - // Update bobbing position of surf blob - if (((u16)(++sprite->data[4]) & intervals[sprite->data[5]]) == 0) - { - sprite->y2 += sprite->data[3]; - } - if ((sprite->data[4] & 15) == 0) - { - sprite->data[3] = -sprite->data[3]; - } + // Update vertical position of surf blob + if (((u16)(++sprite->sTimer) & intervals[sprite->sIntervalIdx]) == 0) + sprite->y2 += sprite->sVelocity; + + // Reverse bob direction + if ((sprite->sTimer & 15) == 0) + sprite->sVelocity = -sprite->sVelocity; + if (bobState != BOB_JUST_MON) { - // Update bobbing position of player + // Update vertical position of player if (!GetSurfBlob_HasPlayerOffset(sprite)) playerSprite->y2 = sprite->y2; else - playerSprite->y2 = sprite->tPlayerOffset + sprite->y2; + playerSprite->y2 = sprite->sPlayerOffset + sprite->y2; sprite->x = playerSprite->x; sprite->y = playerSprite->y + 8; } } } +#undef sBitfield +#undef sPlayerOffset +#undef sPlayerObjId +#undef sVelocity +#undef sTimer +#undef sIntervalIdx +#undef sPrevX +#undef sPrevY + #define sSpriteId data[0] #define sBobY data[1] #define sTimer data[2] u8 StartUnderwaterSurfBlobBobbing(u8 blobSpriteId) { - u8 spriteId; - struct Sprite *sprite; - // Create a dummy sprite with its own callback // that tracks the actual surf blob sprite and // makes it bob up and down underwater - spriteId = CreateSpriteAtEnd(&gDummySpriteTemplate, 0, 0, -1); - sprite = &gSprites[spriteId]; + u8 spriteId = CreateSpriteAtEnd(&gDummySpriteTemplate, 0, 0, -1); + struct Sprite *sprite = &gSprites[spriteId]; sprite->callback = SpriteCB_UnderwaterSurfBlob; sprite->invisible = TRUE; sprite->sSpriteId = blobSpriteId; @@ -1164,17 +1163,14 @@ u8 StartUnderwaterSurfBlobBobbing(u8 blobSpriteId) static void SpriteCB_UnderwaterSurfBlob(struct Sprite *sprite) { - struct Sprite *blobSprite; + struct Sprite *blobSprite = &gSprites[sprite->sSpriteId]; - blobSprite = &gSprites[sprite->sSpriteId]; + // Update vertical position of surf blob if (((sprite->sTimer++) & 3) == 0) - { blobSprite->y2 += sprite->sBobY; - } + // Reverse direction if ((sprite->sTimer & 15) == 0) - { sprite->sBobY = -sprite->sBobY; - } } #undef sSpriteId @@ -1184,43 +1180,43 @@ static void SpriteCB_UnderwaterSurfBlob(struct Sprite *sprite) u32 FldEff_Dust(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_GROUND_IMPACT_DUST], gFieldEffectArguments[0], gFieldEffectArguments[1], 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data[0] = gFieldEffectArguments[2]; - sprite->data[1] = FLDEFF_DUST; + sprite->sJumpElevation = gFieldEffectArguments[2]; + sprite->sJumpFldEff = FLDEFF_DUST; } return 0; } +// Sprite data for FLDEFF_SAND_PILE +#define sLocalId data[0] +#define sMapNum data[1] +#define sMapGroup data[2] +#define sPrevX data[3] +#define sPrevY data[4] + u32 FldEff_SandPile(void) { - u8 objectEventId; - struct ObjectEvent *objectEvent; - u8 spriteId; - struct Sprite *sprite; - const struct ObjectEventGraphicsInfo *graphicsInfo; - - objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); - objectEvent = &gObjectEvents[objectEventId]; - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SAND_PILE], 0, 0, 0); + u8 objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SAND_PILE], 0, 0, 0); if (spriteId != MAX_SPRITES) { - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - sprite = &gSprites[spriteId]; + const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[objectEvent->spriteId].oam.priority; - sprite->data[0] = gFieldEffectArguments[0]; - sprite->data[1] = gFieldEffectArguments[1]; - sprite->data[2] = gFieldEffectArguments[2]; - sprite->data[3] = gSprites[objectEvent->spriteId].x; - sprite->data[4] = gSprites[objectEvent->spriteId].y; + sprite->sLocalId = gFieldEffectArguments[0]; + sprite->sMapNum = gFieldEffectArguments[1]; + sprite->sMapGroup = gFieldEffectArguments[2]; + sprite->sPrevX = gSprites[objectEvent->spriteId].x; + sprite->sPrevY = gSprites[objectEvent->spriteId].y; sprite->y2 = (graphicsInfo->height >> 1) - 2; SeekSpriteAnim(sprite, 2); } @@ -1230,81 +1226,85 @@ u32 FldEff_SandPile(void) void UpdateSandPileFieldEffect(struct Sprite *sprite) { u8 objectEventId; - s16 x; - s16 y; - if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &objectEventId) || !gObjectEvents[objectEventId].inSandPile) + if (TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId) || !gObjectEvents[objectEventId].inSandPile) { FieldEffectStop(sprite, FLDEFF_SAND_PILE); } else { - y = gSprites[gObjectEvents[objectEventId].spriteId].y; - x = gSprites[gObjectEvents[objectEventId].spriteId].x; - if (x != sprite->data[3] || y != sprite->data[4]) + s16 parentY = gSprites[gObjectEvents[objectEventId].spriteId].y; + s16 parentX = gSprites[gObjectEvents[objectEventId].spriteId].x; + if (parentX != sprite->sPrevX || parentY != sprite->sPrevY) { - sprite->data[3] = x; - sprite->data[4] = y; + sprite->sPrevX = parentX; + sprite->sPrevY = parentY; if (sprite->animEnded) - { StartSpriteAnim(sprite, 0); - } } - sprite->x = x; - sprite->y = y; + sprite->x = parentX; + sprite->y = parentY; sprite->subpriority = gSprites[gObjectEvents[objectEventId].spriteId].subpriority; UpdateObjectEventSpriteInvisibility(sprite, FALSE); } } +#undef sLocalId +#undef sMapNum +#undef sMapGroup +#undef sPrevX +#undef sPrevY + u32 FldEff_Bubbles(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 0); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BUBBLES], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BUBBLES], gFieldEffectArguments[0], gFieldEffectArguments[1], 82); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = 1; } return 0; } +#define sY data[0] + void UpdateBubblesFieldEffect(struct Sprite *sprite) { - sprite->data[0] += 0x80; - sprite->data[0] &= 0x100; - sprite->y -= sprite->data[0] >> 8; + // Move up 1 every other frame. + sprite->sY += ((1 << 8) / 2); + sprite->sY &= (1 << 8); + sprite->y -= sprite->sY >> 8; UpdateObjectEventSpriteInvisibility(sprite, FALSE); if (sprite->invisible || sprite->animEnded) - { FieldEffectStop(sprite, FLDEFF_BUBBLES); - } } +#undef sY + u32 FldEff_BerryTreeGrowthSparkle(void) { u8 spriteId; - struct Sprite *sprite; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 4); spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPARKLE], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; sprite->oam.paletteNum = 5; - sprite->data[0] = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; + sprite->sWaitFldEff = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; } return 0; } // Sprite data for FLDEFF_TREE_DISGUISE / FLDEFF_MOUNTAIN_DISGUISE / FLDEFF_SAND_DISGUISE #define sState data[0] +#define sFldEff data[1] #define sLocalId data[2] #define sMapNum data[3] #define sMapGroup data[4] @@ -1328,7 +1328,6 @@ u32 ShowSandDisguiseFieldEffect(void) static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum) { u8 spriteId; - struct Sprite *sprite; if (TryGetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &spriteId)) { @@ -1338,7 +1337,7 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum) spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[fldEffObj], 0, 0, 0); if (spriteId != MAX_SPRITES) { - sprite = &gSprites[spriteId]; + struct Sprite *sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled ++; sprite->oam.paletteNum = paletteNum; sprite->sFldEff = fldEff; @@ -1405,6 +1404,7 @@ bool8 UpdateRevealDisguise(struct ObjectEvent *objectEvent) } #undef sState +#undef sFldEff #undef sLocalId #undef sMapNum #undef sMapGroup @@ -1421,7 +1421,7 @@ u32 FldEff_Sparkle(void) gFieldEffectArguments[0] += MAP_OFFSET; gFieldEffectArguments[1] += MAP_OFFSET; SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8); - spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SMALL_SPARKLE], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SMALL_SPARKLE], gFieldEffectArguments[0], gFieldEffectArguments[1], 82); if (spriteId != MAX_SPRITES) { gSprites[spriteId].oam.priority = gFieldEffectArguments[2]; @@ -1449,7 +1449,9 @@ void UpdateSparkleFieldEffect(struct Sprite *sprite) #undef sEndTimer #define sTimer data[0] +#define sMoveTimer data[1] #define sState data[2] +#define sVelocity data[3] #define sStartY data[4] #define sCounter data[5] #define sAnimCounter data[6] @@ -1615,41 +1617,44 @@ void UpdateRayquazaSpotlightEffect(struct Sprite *sprite) if (sprite->sState == 1) { - if ((sprite->data[1] & 7) == 0) - sprite->y2 += sprite->data[3]; - if ((sprite->data[1] & 15) == 0) - sprite->data[3] = -sprite->data[3]; - sprite->data[1]++; + // Update movement + if ((sprite->sMoveTimer & 7) == 0) + sprite->y2 += sprite->sVelocity; + // Reverse direction + if ((sprite->sMoveTimer & 15) == 0) + sprite->sVelocity = -sprite->sVelocity; + sprite->sMoveTimer++; } sprite->sTimer++; } #undef sTimer +#undef sMoveTimer #undef sState #undef sStartY +#undef sVelocity #undef sCounter #undef sAnimCounter #undef sAnimState -// Used by FLDEFF_JUMP_TALL_GRASS and FLDEFF_JUMP_LONG_GRASS void UpdateJumpImpactEffect(struct Sprite *sprite) { if (sprite->animEnded) { - FieldEffectStop(sprite, sprite->sFldEff); + FieldEffectStop(sprite, sprite->sJumpFldEff); } else { UpdateObjectEventSpriteInvisibility(sprite, FALSE); - SetObjectSubpriorityByElevation(sprite->sElevation, sprite, 0); + SetObjectSubpriorityByElevation(sprite->sJumpElevation, sprite, 0); } } void WaitFieldEffectSpriteAnim(struct Sprite *sprite) { if (sprite->animEnded) - FieldEffectStop(sprite, sprite->data[0]); + FieldEffectStop(sprite, sprite->sWaitFldEff); else UpdateObjectEventSpriteInvisibility(sprite, FALSE); } @@ -1658,8 +1663,6 @@ static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 elevatio { u8 i; s16 var, xhi, lyhi, yhi, ylo; - const struct ObjectEventGraphicsInfo *graphicsInfo; // Unused Variable - struct Sprite *linkedSprite; SetObjectSubpriorityByElevation(elevation, sprite, subpriority); for (i = 0; i < OBJECT_EVENTS_COUNT; i ++) @@ -1667,8 +1670,9 @@ static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 elevatio struct ObjectEvent *objectEvent = &gObjectEvents[i]; if (objectEvent->active) { - graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); - linkedSprite = &gSprites[objectEvent->spriteId]; + const struct ObjectEventGraphicsInfo UNUSED *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId); + struct Sprite *linkedSprite = &gSprites[objectEvent->spriteId]; + xhi = sprite->x + sprite->centerToCornerVecX; var = sprite->x - sprite->centerToCornerVecX; if (xhi < linkedSprite->x && var > linkedSprite->x) diff --git a/src/field_message_box.c b/src/field_message_box.c index 64734cc209..55124e7dfc 100755 --- a/src/field_message_box.c +++ b/src/field_message_box.c @@ -97,8 +97,7 @@ bool8 ShowFieldAutoScrollMessage(const u8 *str) return TRUE; } -// Unused -static bool8 ForceShowFieldAutoScrollMessage(const u8 *str) +static bool8 UNUSED ForceShowFieldAutoScrollMessage(const u8 *str) { sFieldMessageBoxMode = FIELD_MESSAGE_BOX_AUTO_SCROLL; ExpandStringAndStartDrawFieldMessage(str, TRUE); @@ -148,8 +147,7 @@ bool8 IsFieldMessageBoxHidden(void) return FALSE; } -// Unused -static void ReplaceFieldMessageWithFrame(void) +static void UNUSED ReplaceFieldMessageWithFrame(void) { DestroyTask_DrawFieldMessage(); DrawStdWindowFrame(0, TRUE); diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 0f087799e3..99cab7fd77 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -241,7 +241,8 @@ static const u8 sRivalAvatarGfxIds[][2] = [PLAYER_AVATAR_STATE_UNDERWATER] = {OBJ_EVENT_GFX_BRENDAN_UNDERWATER, OBJ_EVENT_GFX_MAY_UNDERWATER}, [PLAYER_AVATAR_STATE_FIELD_MOVE] = {OBJ_EVENT_GFX_RIVAL_BRENDAN_FIELD_MOVE, OBJ_EVENT_GFX_RIVAL_MAY_FIELD_MOVE}, [PLAYER_AVATAR_STATE_FISHING] = {OBJ_EVENT_GFX_BRENDAN_FISHING, OBJ_EVENT_GFX_MAY_FISHING}, - [PLAYER_AVATAR_STATE_WATERING] = {OBJ_EVENT_GFX_BRENDAN_WATERING, OBJ_EVENT_GFX_MAY_WATERING} + [PLAYER_AVATAR_STATE_WATERING] = {OBJ_EVENT_GFX_BRENDAN_WATERING, OBJ_EVENT_GFX_MAY_WATERING}, + [PLAYER_AVATAR_STATE_VSSEEKER] = {OBJ_EVENT_GFX_RIVAL_BRENDAN_FIELD_MOVE, OBJ_EVENT_GFX_RIVAL_MAY_FIELD_MOVE}, }; static const u8 sPlayerAvatarGfxIds[][2] = @@ -254,6 +255,7 @@ static const u8 sPlayerAvatarGfxIds[][2] = [PLAYER_AVATAR_STATE_FIELD_MOVE] = {OBJ_EVENT_GFX_BRENDAN_FIELD_MOVE, OBJ_EVENT_GFX_MAY_FIELD_MOVE}, [PLAYER_AVATAR_STATE_FISHING] = {OBJ_EVENT_GFX_BRENDAN_FISHING, OBJ_EVENT_GFX_MAY_FISHING}, [PLAYER_AVATAR_STATE_WATERING] = {OBJ_EVENT_GFX_BRENDAN_WATERING, OBJ_EVENT_GFX_MAY_WATERING}, + [PLAYER_AVATAR_STATE_VSSEEKER] = {OBJ_EVENT_GFX_BRENDAN_FIELD_MOVE, OBJ_EVENT_GFX_MAY_FIELD_MOVE}, }; static const u8 sFRLGAvatarGfxIds[GENDER_COUNT] = diff --git a/src/field_specials.c b/src/field_specials.c index c91f458ed1..c4968a6cc8 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -1,4 +1,5 @@ #include "global.h" +#include "debug.h" #include "malloc.h" #include "battle.h" #include "battle_tower.h" @@ -20,6 +21,7 @@ #include "international_string_util.h" #include "item_icon.h" #include "link.h" +#include "load_save.h" #include "list_menu.h" #include "main.h" #include "mystery_gift.h" @@ -964,8 +966,8 @@ void FieldShowRegionMap(void) static bool8 IsPlayerInFrontOfPC(void) { - u16 x, y; - u16 tileInFront; + s16 x, y; + u32 tileInFront; GetXYCoordsOneStepInFrontOfPlayer(&x, &y); tileInFront = MapGridGetMetatileIdAt(x, y); @@ -2201,6 +2203,8 @@ void ShowFrontierManiacMessage(void) else winStreak = gSaveBlock2Ptr->frontier.pyramidWinStreaks[FRONTIER_LVL_OPEN]; break; + default: + return; } for (i = 0; i < FRONTIER_MANIAC_MESSAGE_COUNT - 1 && sFrontierManiacStreakThresholds[facility][i] < winStreak; i++); @@ -4205,3 +4209,47 @@ u8 Script_TryGainNewFanFromCounter(void) { return TryGainNewFanFromCounter(gSpecialVar_0x8004); } + +void TrySkyBattle(void) +{ + int i; + + if (B_VAR_SKY_BATTLE == 0 || B_FLAG_SKY_BATTLE == 0) + { + LockPlayerFieldControls(); + ScriptContext_SetupScript(Debug_FlagsAndVarNotSetBattleConfigMessage); + return; + } + for (i = 0; i < CalculatePlayerPartyCount(); i++) + { + struct Pokemon* pokemon = &gPlayerParty[i]; + if (CanMonParticipateInSkyBattle(pokemon) && GetMonData(pokemon, MON_DATA_HP, NULL) > 0) + { + PreparePartyForSkyBattle(); + gSpecialVar_Result = TRUE; + return; + } + } + gSpecialVar_Result = FALSE; +} + +void PreparePartyForSkyBattle(void) +{ + int i, participatingPokemonSlot = 0; + u8 partyCount = CalculatePlayerPartyCount(); + + FlagSet(B_FLAG_SKY_BATTLE); + SavePlayerParty(); + + for (i = 0; i < partyCount; i++) + { + struct Pokemon* pokemon = &gPlayerParty[i]; + + if (CanMonParticipateInSkyBattle(pokemon)) + participatingPokemonSlot += 1 << i; + else + ZeroMonData(pokemon); + } + VarSet(B_VAR_SKY_BATTLE,participatingPokemonSlot); + CompactPartySlots(); +} diff --git a/src/field_tasks.c b/src/field_tasks.c index 8683301f26..a9d11b2d70 100644 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -172,7 +172,7 @@ static void Task_RunTimeBasedEvents(u8 taskId) if (!ArePlayerFieldControlsLocked()) { RunTimeBasedEvents(data); - UpdateAmbientCry(&tAmbientCryState, &tAmbientCryDelay); + UpdateAmbientCry(&tAmbientCryState, (u16*) &tAmbientCryDelay); } } diff --git a/src/field_weather.c b/src/field_weather.c index 045c234acd..0f0b137d9a 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -47,9 +47,9 @@ static bool8 LightenSpritePaletteInFog(u8); static void BuildColorMaps(void); static void UpdateWeatherColorMap(void); static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex); -static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex, u8 blendCoeff, u16 blendColor); -static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u16 blendColor); -static void ApplyFogBlend(u8 blendCoeff, u16 blendColor); +static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex, u8 blendCoeff, u32 blendColor); +static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u32 blendColor); +static void ApplyFogBlend(u8 blendCoeff, u32 blendColor); static bool8 FadeInScreen_RainShowShade(void); static bool8 FadeInScreen_Drought(void); static bool8 FadeInScreen_FogHorizontal(void); @@ -544,7 +544,7 @@ static void ApplyColorMap(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex) } } -static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex, u8 blendCoeff, u16 blendColor) +static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMapIndex, u8 blendCoeff, u32 blendColor) { u16 palOffset; u16 curPalIndex; @@ -595,7 +595,7 @@ static void ApplyColorMapWithBlend(u8 startPalIndex, u8 numPalettes, s8 colorMap } } -static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u16 blendColor) +static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u32 blendColor) { struct RGBColor color; u8 rBlend; @@ -650,7 +650,7 @@ static void ApplyDroughtColorMapWithBlend(s8 colorMapIndex, u8 blendCoeff, u16 b } } -static void ApplyFogBlend(u8 blendCoeff, u16 blendColor) +static void ApplyFogBlend(u8 blendCoeff, u32 blendColor) { struct RGBColor color; u8 rBlend; @@ -856,8 +856,7 @@ void ApplyWeatherColorMapToPal(u8 paletteIndex) ApplyColorMap(paletteIndex, 1, gWeatherPtr->colorMapIndex); } -// Unused -static bool8 IsFirstFrameOfWeatherFadeIn(void) +static bool8 UNUSED IsFirstFrameOfWeatherFadeIn(void) { if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_SCREEN_FADING_IN) return gWeatherPtr->fadeInFirstFrame; @@ -998,8 +997,8 @@ bool8 Weather_UpdateBlend(void) return FALSE; } -// Unused. Uses the same numbering scheme as the coord events -static void SetFieldWeather(u8 weather) +// Uses the same numbering scheme as the coord events +static void UNUSED SetFieldWeather(u8 weather) { switch (weather) { diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index 3340334039..325979f86a 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -938,7 +938,7 @@ static void InitSnowflakeSpriteMovement(struct Sprite *sprite) sprite->tFallCounter = 0; } -static void WaitSnowflakeSprite(struct Sprite *sprite) +static void UNUSED WaitSnowflakeSprite(struct Sprite *sprite) { if (++gWeatherPtr->snowflakeTimer > 18) { @@ -953,7 +953,6 @@ static void WaitSnowflakeSprite(struct Sprite *sprite) static void UpdateSnowflakeSprite(struct Sprite *sprite) { s16 x; - s16 y; sprite->tPosY += sprite->tDeltaY; sprite->y = sprite->tPosY >> 7; @@ -2407,8 +2406,7 @@ static void UpdateBubbleSprite(struct Sprite *sprite) //------------------------------------------------------------------------------ -// Unused function. -static void UnusedSetCurrentAbnormalWeather(u32 weather, u32 unknown) +static void UNUSED UnusedSetCurrentAbnormalWeather(u32 weather, u32 unknown) { sCurrentAbnormalWeather = weather; sUnusedWeatherRelated = unknown; diff --git a/src/fieldmap.c b/src/fieldmap.c index ac9cedc0ba..5e8ffec4aa 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -29,7 +29,7 @@ EWRAM_DATA u16 ALIGNED(4) sBackupMapData[MAX_MAP_DATA_SIZE] = {0}; EWRAM_DATA struct MapHeader gMapHeader = {0}; EWRAM_DATA struct Camera gCamera = {0}; EWRAM_DATA static struct ConnectionFlags sMapConnectionFlags = {0}; -EWRAM_DATA static u32 sFiller = 0; // without this, the next file won't align properly +EWRAM_DATA static u32 UNUSED sFiller = 0; // without this, the next file won't align properly struct BackupMapLayout gBackupMapLayout; @@ -48,16 +48,12 @@ static const struct MapConnection *GetIncomingConnection(u8 direction, int x, in static bool8 IsPosInIncomingConnectingMap(u8 direction, int x, int y, const struct MapConnection *connection); static bool8 IsCoordInIncomingConnectingMap(int coord, int srcMax, int destMax, int offset); -#define GetBorderBlockAt(x, y)({ \ - u16 block; \ - int i; \ - const u16 *border = gMapHeader.mapLayout->border; /* Unused, they read it again below */ \ - \ - i = (x + 1) & 1; \ - i += ((y + 1) & 1) * 2; \ - \ - block = gMapHeader.mapLayout->border[i] | MAPGRID_COLLISION_MASK; \ -}) +static inline u16 GetBorderBlockAt(int x, int y) +{ + int i = (x + 1) & 1; + i += ((y + 1) & 1) * 2; + return gMapHeader.mapLayout->border[i] | MAPGRID_COLLISION_MASK; +} #define AreCoordsWithinMapGridBounds(x, y) (x >= 0 && x < gBackupMapLayout.width && y >= 0 && y < gBackupMapLayout.height) @@ -810,8 +806,7 @@ void GetCameraFocusCoords(u16 *x, u16 *y) *y = gSaveBlock1Ptr->pos.y + MAP_OFFSET; } -// Unused -static void SetCameraCoords(u16 x, u16 y) +static void UNUSED SetCameraCoords(u16 x, u16 y) { gSaveBlock1Ptr->pos.x = x; gSaveBlock1Ptr->pos.y = y; @@ -877,7 +872,7 @@ static void ApplyGlobalTintToPaletteEntries(u16 offset, u16 size) } -static void ApplyGlobalTintToPaletteSlot(u8 slot, u8 count) +static void UNUSED ApplyGlobalTintToPaletteSlot(u8 slot, u8 count) { } diff --git a/src/fldeff_escalator.c b/src/fldeff_escalator.c index 0dc98c319c..eabbd53549 100644 --- a/src/fldeff_escalator.c +++ b/src/fldeff_escalator.c @@ -14,43 +14,43 @@ static void Task_DrawEscalator(u8 taskId); #define ESCALATOR_STAGES 3 #define LAST_ESCALATOR_STAGE (ESCALATOR_STAGES - 1) -static const u16 sEscalatorMetatiles_1F_0[ESCALATOR_STAGES] = { +static const s16 sEscalatorMetatiles_1F_0[ESCALATOR_STAGES] = { METATILE_PokemonCenter_Escalator1F_Tile0_Frame2, METATILE_PokemonCenter_Escalator1F_Tile0_Frame1, METATILE_PokemonCenter_Escalator1F_Tile0_Frame0 }; -static const u16 sEscalatorMetatiles_1F_1[ESCALATOR_STAGES] = { +static const s16 sEscalatorMetatiles_1F_1[ESCALATOR_STAGES] = { METATILE_PokemonCenter_Escalator1F_Tile1_Frame2, METATILE_PokemonCenter_Escalator1F_Tile1_Frame1, METATILE_PokemonCenter_Escalator1F_Tile1_Frame0 }; -static const u16 sEscalatorMetatiles_1F_2[ESCALATOR_STAGES] = { +static const s16 sEscalatorMetatiles_1F_2[ESCALATOR_STAGES] = { METATILE_PokemonCenter_Escalator1F_Tile2_Frame2, METATILE_PokemonCenter_Escalator1F_Tile2_Frame1, METATILE_PokemonCenter_Escalator1F_Tile2_Frame0 }; -static const u16 sEscalatorMetatiles_1F_3[ESCALATOR_STAGES] = { +static const s16 sEscalatorMetatiles_1F_3[ESCALATOR_STAGES] = { METATILE_PokemonCenter_Escalator1F_Tile3_Frame2, METATILE_PokemonCenter_Escalator1F_Tile3_Frame1, METATILE_PokemonCenter_Escalator1F_Tile3_Frame0 }; -static const u16 sEscalatorMetatiles_2F_0[ESCALATOR_STAGES] = { +static const s16 sEscalatorMetatiles_2F_0[ESCALATOR_STAGES] = { METATILE_PokemonCenter_Escalator2F_Tile0_Frame0, METATILE_PokemonCenter_Escalator2F_Tile0_Frame1, METATILE_PokemonCenter_Escalator2F_Tile0_Frame2 }; -static const u16 sEscalatorMetatiles_2F_1[ESCALATOR_STAGES] = { +static const s16 sEscalatorMetatiles_2F_1[ESCALATOR_STAGES] = { METATILE_PokemonCenter_Escalator2F_Tile1_Frame0, METATILE_PokemonCenter_Escalator2F_Tile1_Frame1, METATILE_PokemonCenter_Escalator2F_Tile1_Frame2 }; -static const u16 sEscalatorMetatiles_2F_2[ESCALATOR_STAGES] = { +static const s16 sEscalatorMetatiles_2F_2[ESCALATOR_STAGES] = { METATILE_PokemonCenter_Escalator2F_Tile2_Frame0, METATILE_PokemonCenter_Escalator2F_Tile2_Frame1, METATILE_PokemonCenter_Escalator2F_Tile2_Frame2 diff --git a/src/fonts.c b/src/fonts.c index 8ef32bfef2..381fd795e9 100644 --- a/src/fonts.c +++ b/src/fonts.c @@ -53,7 +53,7 @@ ALIGNED(4) const u8 gFontSmallLatinGlyphWidths[] = { 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8, - 7, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 7, 5, 5, 5, 5, 5, 5, 9, 3, 3, 3, 3, 3, 3, 3, 3, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, diff --git a/src/frontier_util.c b/src/frontier_util.c index d138daba4c..40bc24c741 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -624,8 +624,16 @@ static const u8 sFrontierBrainObjEventGfx[NUM_FRONTIER_FACILITIES][2] = const u16 gFrontierBannedSpecies[] = { - SPECIES_MEW, SPECIES_MEWTWO, SPECIES_HO_OH, SPECIES_LUGIA, SPECIES_CELEBI, - SPECIES_KYOGRE, SPECIES_GROUDON, SPECIES_RAYQUAZA, SPECIES_JIRACHI, SPECIES_DEOXYS, 0xFFFF + SPECIES_MEW, SPECIES_MEWTWO, + SPECIES_HO_OH, SPECIES_LUGIA, SPECIES_CELEBI, + SPECIES_KYOGRE, SPECIES_GROUDON, SPECIES_RAYQUAZA, SPECIES_JIRACHI, SPECIES_DEOXYS, + SPECIES_DIALGA, SPECIES_PALKIA, SPECIES_GIRATINA, SPECIES_MANAPHY, SPECIES_PHIONE, SPECIES_DARKRAI, SPECIES_SHAYMIN, SPECIES_ARCEUS, + SPECIES_VICTINI, SPECIES_RESHIRAM, SPECIES_ZEKROM, SPECIES_KYUREM, SPECIES_KELDEO, SPECIES_MELOETTA, SPECIES_GENESECT, + SPECIES_XERNEAS, SPECIES_YVELTAL, SPECIES_ZYGARDE, SPECIES_DIANCIE, SPECIES_HOOPA, SPECIES_VOLCANION, + SPECIES_COSMOG, SPECIES_COSMOEM, SPECIES_SOLGALEO, SPECIES_LUNALA, SPECIES_NECROZMA, SPECIES_MAGEARNA, SPECIES_MARSHADOW, SPECIES_ZERAORA, SPECIES_MELTAN, SPECIES_MELMETAL, + SPECIES_ZACIAN, SPECIES_ZAMAZENTA, SPECIES_ETERNATUS, SPECIES_CALYREX, SPECIES_ZARUDE, + SPECIES_KORAIDON, SPECIES_MIRAIDON, + 0xFFFF }; static const u8 *const sRecordsWindowChallengeTexts[][2] = @@ -1878,38 +1886,23 @@ static void CheckBattleTypeFlag(void) gSpecialVar_Result = FALSE; } +#define SPECIES_PER_LINE 3 + static u8 AppendCaughtBannedMonSpeciesName(u16 species, u8 count, s32 numBannedMonsCaught) { if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) { count++; - switch (count) + if (numBannedMonsCaught == count) + StringAppend(gStringVar1, gText_SpaceAndSpace); + else if (numBannedMonsCaught > count) + StringAppend(gStringVar1, gText_CommaSpace); + if ((count % SPECIES_PER_LINE) == 0) { - case 1: - case 3: - case 5: - case 7: - case 9: - case 11: - if (numBannedMonsCaught == count) - StringAppend(gStringVar1, gText_SpaceAndSpace); - else if (numBannedMonsCaught > count) - StringAppend(gStringVar1, gText_CommaSpace); - break; - case 2: - if (count == numBannedMonsCaught) - StringAppend(gStringVar1, gText_SpaceAndSpace); + if (count == SPECIES_PER_LINE) + StringAppend(gStringVar1, gText_NewLine); else - StringAppend(gStringVar1, gText_CommaSpace); - StringAppend(gStringVar1, gText_NewLine); - break; - default: - if (count == numBannedMonsCaught) - StringAppend(gStringVar1, gText_SpaceAndSpace); - else - StringAppend(gStringVar1, gText_CommaSpace); - StringAppend(gStringVar1, gText_LineBreak); - break; + StringAppend(gStringVar1, gText_LineBreak); } StringAppend(gStringVar1, GetSpeciesName(species)); } @@ -1924,7 +1917,9 @@ static void AppendIfValid(u16 species, u16 heldItem, u16 hp, u8 lvlMode, u8 monL if (species == SPECIES_EGG || species == SPECIES_NONE) return; - for (i = 0; gFrontierBannedSpecies[i] != 0xFFFF && gFrontierBannedSpecies[i] != species; i++) + for (i = 0; gFrontierBannedSpecies[i] != 0xFFFF + && gFrontierBannedSpecies[i] != GET_BASE_SPECIES_ID(species) + && IsSpeciesEnabled(gFrontierBannedSpecies[i]); i++) ; if (gFrontierBannedSpecies[i] != 0xFFFF) @@ -2034,7 +2029,7 @@ static void CheckPartyIneligibility(void) } else { - if (count & 1) + if (count % SPECIES_PER_LINE == SPECIES_PER_LINE - 1) StringAppend(gStringVar1, gText_LineBreak); else StringAppend(gStringVar1, gText_Space2); @@ -2049,6 +2044,8 @@ static void CheckPartyIneligibility(void) #undef numEligibleMons } +#undef SPECIES_PER_LINE + static void ValidateVisitingTrainer(void) { ValidateEReaderTrainer(); diff --git a/src/graphics.c b/src/graphics.c index 40c5d131b4..9ec11a5b8d 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -448,6 +448,15 @@ const u32 gBattleAnimSpritePal_SpinningBall2[] = INCBIN_U32("graphics/battle_ani const u32 gBattleAnimSpriteGfx_WoodHammerHammer[] = INCBIN_U32("graphics/battle_anims/sprites/wood_hammer_hammer.4bpp.lz"); const u32 gBattleAnimSpritePal_WoodHammerHammer[] = INCBIN_U32("graphics/battle_anims/sprites/wood_hammer_hammer.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_Snowflakes[] = INCBIN_U32("graphics/battle_anims/sprites/snowflakes.4bpp.lz"); +const u32 gBattleAnimSpritePal_Snowflakes[] = INCBIN_U32("graphics/battle_anims/sprites/snowflakes.gbapal.lz"); + +const u32 gBattleAnimSpriteGfx_SyrupBlob[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_bomb_blob.4bpp.lz"); +const u32 gBattleAnimSpriteGfx_SyrupShell[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_bomb_shell.4bpp.lz"); +const u32 gBattleAnimSpriteGfx_SyrupSplat[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_bomb_splat.4bpp.lz"); +const u32 gBattleAnimSpritePal_SyrupRed[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_red.gbapal.lz"); +const u32 gBattleAnimSpritePal_SyrupYellow[] = INCBIN_U32("graphics/battle_anims/sprites/syrup_yellow.gbapal.lz"); + // old battle interface data, unused const u32 gOldBattleInterfaceGfx[] = INCBIN_U32("graphics/unused/obi1.4bpp.lz"); @@ -1251,7 +1260,6 @@ const u32 gBattleAnimSpritePal_FlatRock[] = INCBIN_U32("graphics/battle_anims/sp const u32 gBattleAnimUnusedPal_Unknown2[] = INCBIN_U32("graphics/battle_anims/unused/unknown_2.gbapal.lz"); -#include "data/graphics/pokemon.h" #include "data/graphics/trainers.h" const u32 gBattleVSFrame_Gfx[] = INCBIN_U32("graphics/battle_transitions/vs_frame.4bpp.lz"); @@ -1597,6 +1605,11 @@ const u32 gBattleAnimSpritePal_Slash2[] = INCBIN_U32("graphics/battle_anims/spri const u32 gBattleAnimSpriteGfx_WhiteShadow[] = INCBIN_U32("graphics/battle_anims/sprites/white_shadow.4bpp.lz"); const u32 gBattleAnimSpritePal_WhiteShadow[] = INCBIN_U32("graphics/battle_anims/sprites/white_shadow.gbapal.lz"); +// Pledge Effect field status - Rainbow +const u32 gBattleAnimBgImage_Rainbow[] = INCBIN_U32("graphics/battle_anims/backgrounds/rainbow.4bpp.lz"); +const u32 gBattleAnimBGPalette_Rainbow[] = INCBIN_U32("graphics/battle_anims/backgrounds/rainbow.gbapal.lz"); +const u32 gBattleAnimBgTilemap_Rainbow[] = INCBIN_U32("graphics/battle_anims/backgrounds/rainbow.bin.lz"); + const u32 gPartyMenuBg_Gfx[] = INCBIN_U32("graphics/party_menu/bg.4bpp.lz"); const u32 gPartyMenuBg_Pal[] = INCBIN_U32("graphics/party_menu/bg.gbapal.lz"); const u32 gPartyMenuBg_Tilemap[] = INCBIN_U32("graphics/party_menu/bg.bin.lz"); @@ -2008,7 +2021,7 @@ const u16 gTitleScreenPressStartPal[] = INCBIN_U16("graphics/title_screen/p const u32 gTitleScreenPressStartGfx[] = INCBIN_U32("graphics/title_screen/press_start.4bpp.lz"); const u32 gTitleScreenPokemonLogoTilemap[] = INCBIN_U32("graphics/title_screen/pokemon_logo.bin.lz"); -const u16 gFrontierPassBg_Pal[][16] = INCBIN_U16("graphics/frontier_pass/bg.gbapal"); +const u16 gFrontierPassBg_Pal[] = INCBIN_U16("graphics/frontier_pass/bg.gbapal"); // 8 x 16 const u32 gFrontierPassBg_Gfx[] = INCBIN_U32("graphics/frontier_pass/bg.4bpp.lz"); const u32 gFrontierPassMapAndCard_Gfx[] = INCBIN_U32("graphics/frontier_pass/map_and_card.8bpp.lz"); const u32 gFrontierPassBg_Tilemap[] = INCBIN_U32("graphics/frontier_pass/bg.bin.lz"); diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index bfb4e4c9d8..caa497e395 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -1478,7 +1478,7 @@ static void UpdateDomeConfetti(struct ConfettiUtil *util) static void Task_DoDomeConfetti(u8 taskId) { u32 id = 0; - u16 *data = gTasks[taskId].data; + s16 *data = gTasks[taskId].data; switch (tState) { diff --git a/src/international_string_util.c b/src/international_string_util.c index 457e3260be..160e201b60 100644 --- a/src/international_string_util.c +++ b/src/international_string_util.c @@ -8,7 +8,6 @@ #include "text.h" #include "window.h" -extern const struct PokedexEntry gPokedexEntries[]; int GetStringCenterAlignXOffset(int fontId, const u8 *str, int totalWidth) { @@ -86,9 +85,9 @@ int Intl_GetListMenuWidth(const struct ListMenuTemplate *listMenu) return finalWidth; } -void CopyMonCategoryText(int dexNum, u8 *dest) +void CopyMonCategoryText(u16 species, u8 *dest) { - u8 *str = StringCopy(dest, gPokedexEntries[dexNum].categoryName); + u8 *str = StringCopy(dest, GetSpeciesCategory(species)); *str = CHAR_SPACE; StringCopy(str + 1, gText_Pokemon); } diff --git a/src/intro.c b/src/intro.c index 8b5ca5bd42..e575f4e0fa 100644 --- a/src/intro.c +++ b/src/intro.c @@ -169,7 +169,7 @@ extern const struct SpriteTemplate gAncientPowerRockSpriteTemplate[]; #define TIMER_START_LEGENDARIES 43 static EWRAM_DATA u16 sIntroCharacterGender = 0; -static EWRAM_DATA u16 sUnusedVar = 0; +static EWRAM_DATA u16 UNUSED sUnusedVar = 0; static EWRAM_DATA u16 sFlygonYOffset = 0; u32 gIntroFrameCounter; @@ -178,7 +178,7 @@ struct GcmbStruct gMultibootProgramStruct; static const u16 sIntroDrops_Pal[] = INCBIN_U16("graphics/intro/scene_1/drops.gbapal"); static const u16 sIntroLogo_Pal[] = INCBIN_U16("graphics/intro/scene_1/logo.gbapal"); static const u32 sIntroDropsLogo_Gfx[] = INCBIN_U32("graphics/intro/scene_1/drops_logo.4bpp.lz"); -static const u16 sIntro1Bg_Pal[16][16] = INCBIN_U16("graphics/intro/scene_1/bg.gbapal"); +static const u16 sIntro1Bg_Pal[] = INCBIN_U16("graphics/intro/scene_1/bg.gbapal"); // 16 x 16 static const u32 sIntro1Bg0_Tilemap[] = INCBIN_U32("graphics/intro/scene_1/bg0_map.bin.lz"); static const u32 sIntro1Bg1_Tilemap[] = INCBIN_U32("graphics/intro/scene_1/bg1_map.bin.lz"); static const u32 sIntro1Bg2_Tilemap[] = INCBIN_U32("graphics/intro/scene_1/bg2_map.bin.lz"); diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c index 05b5a3a050..c4b059fdd7 100644 --- a/src/intro_credits_graphics.c +++ b/src/intro_credits_graphics.c @@ -1148,7 +1148,7 @@ static void SpriteCB_FlygonRightHalf(struct Sprite *sprite) } // In RS these were for Latios/Latias. In Emerald both are replaced with Flygon and now only 1 is used -static u8 CreateIntroFlygonSprite_Unused(s16 x, s16 y) +static u8 UNUSED CreateIntroFlygonSprite_Unused(s16 x, s16 y) { u8 leftSpriteId = CreateSprite(&sSpriteTemplate_FlygonLatios, x - 32, y, 5); u8 rightSpriteId = CreateSprite(&sSpriteTemplate_FlygonLatios, x + 32, y, 6); diff --git a/src/item_menu.c b/src/item_menu.c index 92c1773e7e..8067742579 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -109,7 +109,7 @@ struct ListBuffer1 { }; struct ListBuffer2 { - s8 name[MAX_POCKET_ITEMS][ITEM_NAME_LENGTH + 10]; + u8 name[MAX_POCKET_ITEMS][ITEM_NAME_LENGTH + 10]; }; struct TempWallyBag { @@ -138,7 +138,7 @@ static void PrepareTMHMMoveWindow(void); static bool8 IsWallysBag(void); static void Task_WallyTutorialBagMenu(u8); static void Task_BagMenu_HandleInput(u8); -static void GetItemName(s8 *, u16); +static void GetItemName(u8 *, u16); static void PrintItemDescription(int); static void BagMenu_PrintCursorAtPos(u8, u8); static void BagMenu_Print(u8, u8, const u8 *, u8, u8, u8, u8, u8, u8); @@ -265,21 +265,21 @@ static const struct ListMenuTemplate sItemListMenu = }; static const struct MenuAction sItemMenuActions[] = { - [ACTION_USE] = {gMenuText_Use, ItemMenu_UseOutOfBattle}, - [ACTION_TOSS] = {gMenuText_Toss, ItemMenu_Toss}, - [ACTION_REGISTER] = {gMenuText_Register, ItemMenu_Register}, - [ACTION_GIVE] = {gMenuText_Give, ItemMenu_Give}, - [ACTION_CANCEL] = {gText_Cancel2, ItemMenu_Cancel}, - [ACTION_BATTLE_USE] = {gMenuText_Use, ItemMenu_UseInBattle}, - [ACTION_CHECK] = {gMenuText_Check, ItemMenu_UseOutOfBattle}, - [ACTION_WALK] = {gMenuText_Walk, ItemMenu_UseOutOfBattle}, - [ACTION_DESELECT] = {gMenuText_Deselect, ItemMenu_Register}, - [ACTION_CHECK_TAG] = {gMenuText_CheckTag, ItemMenu_CheckTag}, - [ACTION_CONFIRM] = {gMenuText_Confirm, Task_FadeAndCloseBagMenu}, - [ACTION_SHOW] = {gMenuText_Show, ItemMenu_Show}, - [ACTION_GIVE_FAVOR_LADY] = {gMenuText_Give2, ItemMenu_GiveFavorLady}, - [ACTION_CONFIRM_QUIZ_LADY] = {gMenuText_Confirm, ItemMenu_ConfirmQuizLady}, - [ACTION_DUMMY] = {gText_EmptyString2, NULL} + [ACTION_USE] = {gMenuText_Use, {ItemMenu_UseOutOfBattle}}, + [ACTION_TOSS] = {gMenuText_Toss, {ItemMenu_Toss}}, + [ACTION_REGISTER] = {gMenuText_Register, {ItemMenu_Register}}, + [ACTION_GIVE] = {gMenuText_Give, {ItemMenu_Give}}, + [ACTION_CANCEL] = {gText_Cancel2, {ItemMenu_Cancel}}, + [ACTION_BATTLE_USE] = {gMenuText_Use, {ItemMenu_UseInBattle}}, + [ACTION_CHECK] = {gMenuText_Check, {ItemMenu_UseOutOfBattle}}, + [ACTION_WALK] = {gMenuText_Walk, {ItemMenu_UseOutOfBattle}}, + [ACTION_DESELECT] = {gMenuText_Deselect, {ItemMenu_Register}}, + [ACTION_CHECK_TAG] = {gMenuText_CheckTag, {ItemMenu_CheckTag}}, + [ACTION_CONFIRM] = {gMenuText_Confirm, {Task_FadeAndCloseBagMenu}}, + [ACTION_SHOW] = {gMenuText_Show, {ItemMenu_Show}}, + [ACTION_GIVE_FAVOR_LADY] = {gMenuText_Give2, {ItemMenu_GiveFavorLady}}, + [ACTION_CONFIRM_QUIZ_LADY] = {gMenuText_Confirm, {ItemMenu_ConfirmQuizLady}}, + [ACTION_DUMMY] = {gText_EmptyString2, {NULL}} }; // these are all 2D arrays with a width of 2 but are represented as 1D arrays @@ -894,7 +894,7 @@ static void LoadBagItemListBuffers(u8 pocketId) gMultiuseListMenuTemplate.maxShowed = gBagMenu->numShownItems[pocketId]; } -static void GetItemName(s8 *dest, u16 itemId) +static void GetItemName(u8 *dest, u16 itemId) { switch (gBagPosition.pocket) { @@ -2098,11 +2098,17 @@ static void Task_ItemContext_Sell(u8 taskId) } } +#if I_SELL_VALUE_FRACTION >= GEN_9 +#define ITEM_SELL_FACTOR 4 +#else +#define ITEM_SELL_FACTOR 2 +#endif + static void DisplaySellItemPriceAndConfirm(u8 taskId) { s16 *data = gTasks[taskId].data; - ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount, STR_CONV_MODE_LEFT_ALIGN, 6); StringExpandPlaceholders(gStringVar4, gText_ICanPayVar1); DisplayItemMessage(taskId, FONT_NORMAL, gStringVar4, AskSellItems); } @@ -2127,7 +2133,7 @@ static void InitSellHowManyInput(u8 taskId) s16 *data = gTasks[taskId].data; u8 windowId = BagMenu_AddWindow(ITEMWIN_QUANTITY_WIDE); - PrintItemSoldAmount(windowId, 1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount); + PrintItemSoldAmount(windowId, 1, (ItemId_GetPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount); DisplayCurrentMoneyWindow(); gTasks[taskId].func = Task_ChooseHowManyToSell; } @@ -2138,7 +2144,7 @@ static void Task_ChooseHowManyToSell(u8 taskId) if (AdjustQuantityAccordingToDPadInput(&tItemCount, tQuantity) == TRUE) { - PrintItemSoldAmount(gBagMenu->windowIds[ITEMWIN_QUANTITY_WIDE], tItemCount, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount); + PrintItemSoldAmount(gBagMenu->windowIds[ITEMWIN_QUANTITY_WIDE], tItemCount, (ItemId_GetPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount); } else if (JOY_NEW(A_BUTTON)) { @@ -2162,7 +2168,7 @@ static void ConfirmSell(u8 taskId) s16 *data = gTasks[taskId].data; CopyItemName(gSpecialVar_ItemId, gStringVar2); - ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount, STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount, STR_CONV_MODE_LEFT_ALIGN, 6); StringExpandPlaceholders(gStringVar4, gText_TurnedOverVar1ForVar2); DisplayItemMessage(taskId, FONT_NORMAL, gStringVar4, SellItem); } @@ -2175,7 +2181,7 @@ static void SellItem(u8 taskId) PlaySE(SE_SHOP); RemoveBagItem(gSpecialVar_ItemId, tItemCount); - AddMoney(&gSaveBlock1Ptr->money, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount); + AddMoney(&gSaveBlock1Ptr->money, (ItemId_GetPrice(gSpecialVar_ItemId) / ITEM_SELL_FACTOR) * tItemCount); DestroyListMenuTask(tListTaskId, scrollPos, cursorPos); UpdatePocketItemList(gBagPosition.pocket); UpdatePocketListPosition(gBagPosition.pocket); @@ -2473,8 +2479,7 @@ static void BagMenu_Print(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top AddTextPrinterParameterized4(windowId, fontId, left, top, letterSpacing, lineSpacing, sFontColorTable[colorIndex], speed, str); } -// Unused -static u8 BagMenu_GetWindowId(u8 windowType) +static u8 UNUSED BagMenu_GetWindowId(u8 windowType) { return gBagMenu->windowIds[windowType]; } diff --git a/src/item_use.c b/src/item_use.c index b3b5c066a4..6abec6498a 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -38,11 +38,13 @@ #include "string_util.h" #include "task.h" #include "text.h" +#include "vs_seeker.h" #include "constants/event_bg.h" #include "constants/event_objects.h" #include "constants/item_effects.h" #include "constants/items.h" #include "constants/songs.h" +#include "constants/map_types.h" static void SetUpItemUseCallback(u8); static void FieldCB_UseItemOnField(void); @@ -75,6 +77,7 @@ static void Task_CloseCantUseKeyItemMessage(u8); static void SetDistanceOfClosestHiddenItem(u8, s16, s16); static void CB2_OpenPokeblockFromBag(void); static void ItemUseOnFieldCB_Honey(u8 taskId); +static bool32 IsValidLocationForVsSeeker(void); static bool32 CannotUseBagBattleItem(u16 itemId); // EWRAM variables @@ -758,7 +761,7 @@ static void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId) static bool8 TryToWaterSudowoodo(void) { - u16 x, y; + s16 x, y; u8 elevation; u8 objId; GetXYCoordsOneStepInFrontOfPlayer(&x, &y); @@ -795,6 +798,12 @@ void ItemUseOutOfBattle_AbilityPatch(u8 taskId) SetUpItemUseCallback(taskId); } +void ItemUseOutOfBattle_ResetEVs(u8 taskId) +{ + gItemUseCB = ItemUseCB_ResetEVs; + SetUpItemUseCallback(taskId); +} + void ItemUseOutOfBattle_ReduceEV(u8 taskId) { gItemUseCB = ItemUseCB_ReduceEV; @@ -1051,10 +1060,8 @@ static u32 GetBallThrowableState(void) return BALL_THROW_UNABLE_TWO_MONS; else if (IsPlayerPartyAndPokemonStorageFull() == TRUE) return BALL_THROW_UNABLE_NO_ROOM; -#if B_SEMI_INVULNERABLE_CATCH >= GEN_4 - else if (gStatuses3[GetCatchingBattler()] & STATUS3_SEMI_INVULNERABLE) + else if (B_SEMI_INVULNERABLE_CATCH >= GEN_4 && (gStatuses3[GetCatchingBattler()] & STATUS3_SEMI_INVULNERABLE)) return BALL_THROW_UNABLE_SEMI_INVULNERABLE; -#endif else if (FlagGet(B_FLAG_NO_CATCHING)) return BALL_THROW_UNABLE_DISABLED_FLAG; @@ -1093,14 +1100,12 @@ void ItemUseInBattle_PokeBall(u8 taskId) else DisplayItemMessageInBattlePyramid(taskId, gText_BoxFull, Task_CloseBattlePyramidBagMessage); break; -#if B_SEMI_INVULNERABLE_CATCH >= GEN_4 case BALL_THROW_UNABLE_SEMI_INVULNERABLE: if (!InBattlePyramid()) DisplayItemMessage(taskId, FONT_NORMAL, sText_CantThrowPokeBall_SemiInvulnerable, CloseItemMessage); else DisplayItemMessageInBattlePyramid(taskId, sText_CantThrowPokeBall_SemiInvulnerable, Task_CloseBattlePyramidBagMessage); break; -#endif case BALL_THROW_UNABLE_DISABLED_FLAG: if (!InBattlePyramid()) DisplayItemMessage(taskId, FONT_NORMAL, sText_CantThrowPokeBall_Disabled, CloseItemMessage); @@ -1110,30 +1115,6 @@ void ItemUseInBattle_PokeBall(u8 taskId) } } -static void Task_CloseStatIncreaseMessage(u8 taskId) -{ - if (JOY_NEW(A_BUTTON | B_BUTTON)) - { - if (!InBattlePyramid()) - Task_FadeAndCloseBagMenu(taskId); - else - CloseBattlePyramidBag(taskId); - } -} - -static void Task_UseStatIncreaseItem(u8 taskId) -{ - if(++gTasks[taskId].data[8] > 7) - { - PlaySE(SE_USE_ITEM); - RemoveBagItem(gSpecialVar_ItemId, 1); - if (!InBattlePyramid()) - DisplayItemMessage(taskId, FONT_NORMAL, UseStatIncreaseItem(gSpecialVar_ItemId), Task_CloseStatIncreaseMessage); - else - DisplayItemMessageInBattlePyramid(taskId, UseStatIncreaseItem(gSpecialVar_ItemId), Task_CloseStatIncreaseMessage); - } -} - static void ItemUseInBattle_ShowPartyMenu(u8 taskId) { if (!InBattlePyramid()) @@ -1210,12 +1191,10 @@ static bool32 CannotUseBagBattleItem(u16 itemId) failStr = gText_BoxFull; cannotUse++; break; - #if B_SEMI_INVULNERABLE_CATCH >= GEN_4 case BALL_THROW_UNABLE_SEMI_INVULNERABLE: failStr = sText_CantThrowPokeBall_SemiInvulnerable; cannotUse++; break; - #endif case BALL_THROW_UNABLE_DISABLED_FLAG: failStr = sText_CantThrowPokeBall_Disabled; cannotUse++; @@ -1255,7 +1234,8 @@ void ItemUseInBattle_BagMenu(u8 taskId) else { PlaySE(SE_SELECT); - RemoveUsedItem(); + if (!(B_TRY_CATCH_TRAINER_BALL >= GEN_4 && (ItemId_GetBattleUsage(gSpecialVar_ItemId) == EFFECT_ITEM_THROW_BALL) && (gBattleTypeFlags & BATTLE_TYPE_TRAINER))) + RemoveUsedItem(); ScheduleBgCopyTilemapToVram(2); if (!InBattlePyramid()) gTasks[taskId].func = Task_FadeAndCloseBagMenu; @@ -1310,15 +1290,68 @@ void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) void ItemUseOutOfBattle_FormChange(u8 taskId) { - gItemUseCB = ItemUseCB_FormChange; - gTasks[taskId].data[0] = FALSE; - SetUpItemUseCallback(taskId); + if (!gTasks[taskId].tUsingRegisteredKeyItem) + { + gItemUseCB = ItemUseCB_FormChange; + gTasks[taskId].data[0] = FALSE; + SetUpItemUseOnFieldCallback(taskId); + } + else + { + // TODO: handle key items with callbacks to menus allow to be used by registering them. + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); + } } void ItemUseOutOfBattle_FormChange_ConsumedOnUse(u8 taskId) { - gItemUseCB = ItemUseCB_FormChange_ConsumedOnUse; - gTasks[taskId].data[0] = TRUE; + if (!gTasks[taskId].tUsingRegisteredKeyItem) + { + gItemUseCB = ItemUseCB_FormChange_ConsumedOnUse; + gTasks[taskId].data[0] = TRUE; + SetUpItemUseOnFieldCallback(taskId); + } + else + { + // TODO: handle key items with callbacks to menus allow to be used by registering them. + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); + } +} + +void ItemUseOutOfBattle_RotomCatalog(u8 taskId) +{ + if (!gTasks[taskId].tUsingRegisteredKeyItem) + { + gItemUseCB = ItemUseCB_RotomCatalog; + gTasks[taskId].data[0] = TRUE; + SetUpItemUseOnFieldCallback(taskId); + } + else + { + // TODO: handle key items with callbacks to menus allow to be used by registering them. + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); + } +} + +void ItemUseOutOfBattle_ZygardeCube(u8 taskId) +{ + if (!gTasks[taskId].tUsingRegisteredKeyItem) + { + gItemUseCB = ItemUseCB_ZygardeCube; + gTasks[taskId].data[0] = TRUE; + SetUpItemUseOnFieldCallback(taskId); + } + else + { + // TODO: handle key items with callbacks to menus allow to be used by registering them. + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); + } +} + +void ItemUseOutOfBattle_Fusion(u8 taskId) +{ + gItemUseCB = ItemUseCB_Fusion; + gTasks[taskId].data[0] = FALSE; SetUpItemUseCallback(taskId); } @@ -1350,4 +1383,68 @@ void ItemUseOutOfBattle_CannotUse(u8 taskId) DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem); } +static bool32 IsValidLocationForVsSeeker(void) +{ + u16 mapGroup = gSaveBlock1Ptr->location.mapGroup; + u16 mapNum = gSaveBlock1Ptr->location.mapNum; + u16 mapType = gMapHeader.mapType; + + typedef struct { + u16 mapGroup; + u16 mapNum; + } Location; + + u32 i; + Location validIndoorLocations[] = + { + { MAP_GROUP(MT_PYRE_SUMMIT), MAP_NUM(MT_PYRE_SUMMIT) }, + { MAP_GROUP(SAFARI_ZONE_NORTH), MAP_NUM(SAFARI_ZONE_NORTH) }, + { MAP_GROUP(SAFARI_ZONE_NORTHEAST), MAP_NUM(SAFARI_ZONE_NORTHEAST) }, + { MAP_GROUP(SAFARI_ZONE_NORTHWEST), MAP_NUM(SAFARI_ZONE_NORTHWEST) }, + { MAP_GROUP(SAFARI_ZONE_SOUTH), MAP_NUM(SAFARI_ZONE_SOUTH) }, + { MAP_GROUP(SAFARI_ZONE_SOUTHEAST), MAP_NUM(SAFARI_ZONE_SOUTHEAST) }, + { MAP_GROUP(SAFARI_ZONE_SOUTHWEST), MAP_NUM(SAFARI_ZONE_SOUTHWEST) }, + { MAP_GROUP(SKY_PILLAR_TOP), MAP_NUM(SKY_PILLAR_TOP) }, + { MAP_GROUP(SOUTHERN_ISLAND_EXTERIOR), MAP_NUM(SOUTHERN_ISLAND_EXTERIOR) }, + { MAP_GROUP(SOUTHERN_ISLAND_INTERIOR), MAP_NUM(SOUTHERN_ISLAND_INTERIOR) }, + { MAP_GROUP(RUSTBORO_CITY_GYM), MAP_NUM(RUSTBORO_CITY_GYM) }, + { MAP_GROUP(DEWFORD_TOWN_GYM), MAP_NUM(DEWFORD_TOWN_GYM) }, + { MAP_GROUP(MAUVILLE_CITY_GYM), MAP_NUM(MAUVILLE_CITY_GYM) }, + { MAP_GROUP(LAVARIDGE_TOWN_GYM_1F), MAP_NUM(LAVARIDGE_TOWN_GYM_1F) }, + { MAP_GROUP(LAVARIDGE_TOWN_GYM_B1F), MAP_NUM(LAVARIDGE_TOWN_GYM_B1F) }, + { MAP_GROUP(PETALBURG_CITY_GYM), MAP_NUM(PETALBURG_CITY_GYM) }, + { MAP_GROUP(FORTREE_CITY_GYM), MAP_NUM(FORTREE_CITY_GYM) }, + { MAP_GROUP(MOSSDEEP_CITY_GYM), MAP_NUM(MOSSDEEP_CITY_GYM) }, + { MAP_GROUP(SOOTOPOLIS_CITY_GYM_1F), MAP_NUM(SOOTOPOLIS_CITY_GYM_1F) }, + { MAP_GROUP(SOOTOPOLIS_CITY_GYM_B1F), MAP_NUM(SOOTOPOLIS_CITY_GYM_B1F) }, + }; + + if (IsMapTypeOutdoors(mapType)) + return TRUE; + + for (i = 0; i < ARRAY_COUNT(validIndoorLocations); i++) + { + if (mapNum == validIndoorLocations[i].mapNum && mapGroup == validIndoorLocations[i].mapGroup) + return TRUE; + } + + return FALSE; +} + +void FieldUseFunc_VsSeeker(u8 taskId) +{ + if (IsValidLocationForVsSeeker()) + { + sItemUseOnFieldCB = Task_InitVsSeekerAndCheckForTrainersOnScreen; + SetUpItemUseOnFieldCallback(taskId); + } + else + DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]); +} + +void Task_ItemUse_CloseMessageBoxAndReturnToField_VsSeeker(u8 taskId) +{ + Task_CloseCantUseKeyItemMessage(taskId); +} + #undef tUsingRegisteredKeyItem diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c index da37b8fc11..152bb716e9 100644 --- a/src/librfu_rfu.c +++ b/src/librfu_rfu.c @@ -134,8 +134,6 @@ static const char str_checkMbootLL[] = "RFU-MBOOT"; u16 rfu_initializeAPI(u32 *APIBuffer, u16 buffByteSize, IntrFunc *sioIntrTable_p, bool8 copyInterruptToRam) { u16 i; - u16 *dst; - const u16 *src; u16 buffByteSizeMax; // is in EWRAM? @@ -182,11 +180,13 @@ u16 rfu_initializeAPI(u32 *APIBuffer, u16 buffByteSize, IntrFunc *sioIntrTable_p } // rfu_REQ_changeMasterSlave is the function next to rfu_STC_fastCopy #if LIBRFU_VERSION < 1026 - src = (const u16 *)((uintptr_t)&rfu_STC_fastCopy & ~1); - dst = gRfuFixed->fastCopyBuffer; +{ + const u16 *src = (const u16 *)((uintptr_t)&rfu_STC_fastCopy & ~1); + u16 *dst = gRfuFixed->fastCopyBuffer; buffByteSizeMax = ((void *)rfu_REQ_changeMasterSlave - (void *)rfu_STC_fastCopy) / sizeof(u16); while (buffByteSizeMax-- != 0) *dst++ = *src++; +} #else COPY( (uintptr_t)&rfu_STC_fastCopy & ~1, @@ -591,19 +591,17 @@ static void rfu_CB_pollAndEndSearchChild(u8 reqCommand, u16 reqResult) static void rfu_STC_readChildList(void) { - u32 stwiParam; u8 numSlots = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[1]; u8 *data_p; - u8 i; u8 bm_slot_id; -#if LIBRFU_VERSION < 1026 - u8 true_slots[RFU_CHILD_MAX]; -#endif #if LIBRFU_VERSION < 1026 + u8 true_slots[RFU_CHILD_MAX]; + if (numSlots != 0) { - stwiParam = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.data[0]; + u8 i; + u32 stwiParam = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.data[0]; STWI_set_Callback_M(rfu_CB_defaultCallback); STWI_send_LinkStatusREQ(); if (STWI_poll_CommandEnd() == 0) @@ -1400,14 +1398,18 @@ static u16 rfu_STC_setSendData_org(u8 ni_or_uni, u8 bmSendSlot, u8 subFrameSize, { u8 bm_slot_id, sendSlotFlag; u8 frameSize; +#ifdef UBFIX + u8 *llFrameSize_p = NULL; +#else u8 *llFrameSize_p; +#endif u8 sending; u8 i; u16 imeBak; struct RfuSlotStatusUNI *slotStatus_UNI; struct RfuSlotStatusNI *slotStatus_NI; - if (gRfuLinkStatus->parentChild == MODE_NEUTRAL) + if (gRfuLinkStatus->parentChild > MODE_PARENT) return ERR_MODE_NOT_CONNECTED; if (!(bmSendSlot & 0xF)) return ERR_SLOT_NO; @@ -1426,7 +1428,11 @@ static u16 rfu_STC_setSendData_org(u8 ni_or_uni, u8 bmSendSlot, u8 subFrameSize, else if (gRfuLinkStatus->parentChild == MODE_CHILD) llFrameSize_p = &gRfuLinkStatus->remainLLFrameSizeChild[bm_slot_id]; frameSize = llsf_struct[gRfuLinkStatus->parentChild].frameSize; +#ifdef UBFIX + if ((llFrameSize_p && subFrameSize > *llFrameSize_p) || subFrameSize <= frameSize) +#else if (subFrameSize > *llFrameSize_p || subFrameSize <= frameSize) +#endif return ERR_SUBFRAME_SIZE; imeBak = REG_IME; REG_IME = 0; @@ -1464,7 +1470,10 @@ static u16 rfu_STC_setSendData_org(u8 ni_or_uni, u8 bmSendSlot, u8 subFrameSize, } while (0); } gRfuLinkStatus->sendSlotNIFlag |= bmSendSlot; - *llFrameSize_p -= subFrameSize; +#ifdef UBFIX + if (llFrameSize_p) +#endif + *llFrameSize_p -= subFrameSize; slotStatus_NI->send.state = SLOT_STATE_SEND_START; } else if (ni_or_uni & 0x10) @@ -1473,7 +1482,10 @@ static u16 rfu_STC_setSendData_org(u8 ni_or_uni, u8 bmSendSlot, u8 subFrameSize, slotStatus_UNI->send.bmSlot = bmSendSlot; slotStatus_UNI->send.src = src; slotStatus_UNI->send.payloadSize = subFrameSize - frameSize; - *llFrameSize_p -= subFrameSize; +#ifdef UBFIX + if (llFrameSize_p) +#endif + *llFrameSize_p -= subFrameSize; slotStatus_UNI->send.state = SLOT_STATE_SEND_UNI; gRfuLinkStatus->sendSlotUNIFlag |= bmSendSlot; } diff --git a/src/link.c b/src/link.c index c51abc9526..f784a36c67 100644 --- a/src/link.c +++ b/src/link.c @@ -278,8 +278,7 @@ static void InitLinkTestBG(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charB SetGpuReg(REG_OFFSET_BG0VOFS + bgNum * 4, 0); } -// Unused -static void LoadLinkTestBgGfx(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBlock) +static void UNUSED LoadLinkTestBgGfx(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBlock) { LoadPalette(sLinkTestDigitsPal, BG_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); DmaCopy16(3, sLinkTestDigitsGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock), sizeof sLinkTestDigitsGfx); @@ -289,8 +288,7 @@ static void LoadLinkTestBgGfx(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 ch SetGpuReg(sBGControlRegs[bgNum], BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_CHARBASE(charBaseBlock)); } -// Unused -static void LinkTestScreen(void) +static void UNUSED LinkTestScreen(void) { int i; @@ -779,8 +777,7 @@ u32 LinkDummy_Return2(void) return 2; } -// Unused -static bool32 IsFullLinkGroupWithNoRS(void) +static bool32 UNUSED IsFullLinkGroupWithNoRS(void) { if (GetLinkPlayerCount() != MAX_LINK_PLAYERS || AreAnyLinkPlayersUsingVersions(VERSION_RUBY, VERSION_SAPPHIRE) < 0) { @@ -1012,14 +1009,12 @@ void SetBerryBlenderLinkCallback(void) gLinkCallback = LinkCB_BerryBlenderSendHeldKeys; } -// Unused -static u32 GetBerryBlenderKeySendAttempts(void) +static u32 UNUSED GetBerryBlenderKeySendAttempts(void) { return gBerryBlenderKeySendAttempts; } -// Unused -static void SendBerryBlenderNoSpaceForPokeblocks(void) +static void UNUSED SendBerryBlenderNoSpaceForPokeblocks(void) { BuildSendCmd(LINKCMD_BLENDER_NO_PBLOCK_SPACE); } @@ -1165,7 +1160,7 @@ static void LinkTest_PrintHex(u32 num, u8 x, u8 y, u8 length) } } -static void LinkTest_PrintInt(int num, u8 x, u8 y, u8 length) +static void UNUSED LinkTest_PrintInt(int num, u8 x, u8 y, u8 length) { char buff[16]; int negX; @@ -1297,8 +1292,7 @@ u8 GetSavedPlayerCount(void) return gSavedLinkPlayerCount; } -// Unused -static u8 GetSavedMultiplayerId(void) +static u8 UNUSED GetSavedMultiplayerId(void) { return gSavedMultiplayerId; } @@ -1335,13 +1329,13 @@ bool8 DoesLinkPlayerCountMatchSaved(void) void ClearSavedLinkPlayers(void) { - int i; // The CpuSet loop below is incorrectly writing to NULL // instead of sSavedLinkPlayers. // Additionally it's using the wrong array size. #ifdef UBFIX memset(sSavedLinkPlayers, 0, sizeof(sSavedLinkPlayers)); #else + int i; for (i = 0; i < MAX_LINK_PLAYERS; i++) CpuSet(&sSavedLinkPlayers[i], NULL, sizeof(struct LinkPlayer)); #endif @@ -1382,8 +1376,7 @@ bool8 IsLinkMaster(void) return EXTRACT_MASTER(gLinkStatus); } -// Unused -static u8 GetDummy2(void) +static u8 UNUSED GetDummy2(void) { return sDummy2; } diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c index 6c84ffefe0..9979097a49 100644 --- a/src/link_rfu_2.c +++ b/src/link_rfu_2.c @@ -699,8 +699,7 @@ void StopUnionRoomLinkManager(void) gRfu.state = RFUSTATE_UR_STOP_MANAGER; } -// Unused -static void ReadySendDataForSlots(u8 slots) +static void UNUSED ReadySendDataForSlots(u8 slots) { u8 i; @@ -2146,7 +2145,7 @@ void RfuSetErrorParams(u32 errorInfo) } } -static void ResetErrorState(void) +static void UNUSED ResetErrorState(void) { gRfu.errorState = RFU_ERROR_STATE_NONE; } @@ -2560,8 +2559,7 @@ static void VBlank_RfuIdle(void) TransferPlttBuffer(); } -// Unused -static void Debug_RfuIdle(void) +static void UNUSED Debug_RfuIdle(void) { s32 i; @@ -2934,7 +2932,7 @@ static void Debug_PrintEmpty(void) Debug_PrintString(sASCII_30Spaces, 0, i); } -static void Debug_PrintStatus(void) +static void UNUSED Debug_PrintStatus(void) { s32 i, j; Debug_PrintNum(GetBlockReceivedStatus(), 28, 19, 2); @@ -2990,7 +2988,7 @@ static void Debug_PrintStatus(void) } } -static u32 GetRfuSendQueueLength(void) +static u32 UNUSED GetRfuSendQueueLength(void) { return gRfu.sendQueue.count; } diff --git a/src/link_rfu_3.c b/src/link_rfu_3.c index 1936d3741b..1f3f895c21 100644 --- a/src/link_rfu_3.c +++ b/src/link_rfu_3.c @@ -342,7 +342,7 @@ void RfuSendQueue_Reset(struct RfuSendQueue *queue) queue->full = FALSE; } -static void RfuUnusedQueue_Reset(struct RfuUnusedQueue *queue) +static void UNUSED RfuUnusedQueue_Reset(struct RfuUnusedQueue *queue) { s32 i; s32 j; @@ -514,7 +514,7 @@ bool8 RfuBackupQueue_Dequeue(struct RfuBackupQueue *queue, u8 *src) return TRUE; } -static void RfuUnusedQueue_Enqueue(struct RfuUnusedQueue *queue, u8 *data) +static void UNUSED RfuUnusedQueue_Enqueue(struct RfuUnusedQueue *queue, u8 *data) { s32 i; @@ -533,7 +533,7 @@ static void RfuUnusedQueue_Enqueue(struct RfuUnusedQueue *queue, u8 *data) } } -static bool8 RfuUnusedQueue_Dequeue(struct RfuUnusedQueue *queue, u8 *dest) +static bool8 UNUSED RfuUnusedQueue_Dequeue(struct RfuUnusedQueue *queue, u8 *dest) { s32 i; @@ -549,11 +549,10 @@ static bool8 RfuUnusedQueue_Dequeue(struct RfuUnusedQueue *queue, u8 *dest) return TRUE; } -// Unused // Populates an array with a sequence of numbers (which numbers depends on the mode) // and sets the final element to the total of the other elements #define SEQ_ARRAY_MAX_SIZE 200 -static void PopulateArrayWithSequence(u8 *arr, u8 mode) +static void UNUSED PopulateArrayWithSequence(u8 *arr, u8 mode) { s32 i; u8 rval; @@ -607,7 +606,7 @@ static void PopulateArrayWithSequence(u8 *arr, u8 mode) // File boundary here maybe? -static void PkmnStrToASCII(u8 *asciiStr, const u8 *pkmnStr) +static void UNUSED PkmnStrToASCII(u8 *asciiStr, const u8 *pkmnStr) { s32 i; @@ -616,7 +615,7 @@ static void PkmnStrToASCII(u8 *asciiStr, const u8 *pkmnStr) asciiStr[i] = 0; } -static void ASCIIToPkmnStr(u8 *pkmnStr, const u8 *asciiStr) +static void UNUSED ASCIIToPkmnStr(u8 *pkmnStr, const u8 *asciiStr) { s32 i; diff --git a/src/load_save.c b/src/load_save.c index 44e08b5e9c..4f706180c4 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -13,6 +13,7 @@ #include "gba/flash_internal.h" #include "decoration_inventory.h" #include "agb_flash.h" +#include "event_data.h" static void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey); diff --git a/src/m4a.c b/src/m4a.c index 7774d09cba..b80a357974 100644 --- a/src/m4a.c +++ b/src/m4a.c @@ -1,5 +1,6 @@ #include #include "gba/m4a_internal.h" +#include "global.h" extern const u8 gCgb3Vol[]; diff --git a/src/m4a_tables.c b/src/m4a_tables.c index 9a4ea32e69..4d012cea28 100644 --- a/src/m4a_tables.c +++ b/src/m4a_tables.c @@ -257,35 +257,34 @@ const u8 gClockTable[] = const struct PokemonCrySong gPokemonCrySongTemplate = { - 1, // track count - 0, // block count - 255, // priority - 0, // reverb - (struct ToneData *)&voicegroup000, - NULL, - NULL, - 0, - TUNE, // part 0 - C_V, // TUNE value - GOTO, - 0, // GOTO target address - TUNE, // part 1 - C_V + 16, // TUNE value - {VOICE, 0}, // part 0 jumps here with GOTO - VOL, - 127, // volume - {XCMD, 0x0D}, - 0, // unk value - {XCMD, xRELE}, - 0, // release - PAN, - C_V, // PAN value - TIE, - 60, // TIE key (default is Cn3) - 127, // TIE velocity - {XCMD, 0x0C}, - 60, // unk value - {EOT, FINE} // end + .trackCount = 1, + .blockCount = 0, + .priority = 255, + .reverb = 0, + .tone = (struct ToneData *)&voicegroup000, + .part = {NULL, NULL}, + .gap = 0, + .part0 = TUNE, + .tuneValue = C_V, + .gotoCmd = GOTO, + .gotoTarget = 0, + .part1 = TUNE, + .tuneValue2 = C_V + 16, + .cont = {VOICE, 0}, // part0 jumps here with gotoCmd + .volCmd = VOL, + .volumeValue = 127, + .unkCmd0D = {XCMD, 0x0D}, + .unkCmd0DParam = 0, + .xreleCmd = {XCMD, xRELE}, + .releaseValue = 0, + .panCmd = PAN, + .panValue = C_V, + .tieCmd = TIE, + .tieKeyValue = 60, // default is Cn3 + .tieVelocityValue = 127, + .unkCmd0C = {XCMD, 0x0C}, + .unkCmd0CParam = 60, + .end = {EOT, FINE} }; const XcmdFunc gXcmdTable[] = diff --git a/src/mail_data.c b/src/mail_data.c index 99cf1f9edd..ed152faf2c 100644 --- a/src/mail_data.c +++ b/src/mail_data.c @@ -129,7 +129,7 @@ u8 GiveMailToMon(struct Pokemon *mon, struct Mail *mail) return mailId; } -static bool32 DummyMailFunc(void) +static bool32 UNUSED DummyMailFunc(void) { return FALSE; } diff --git a/src/main.c b/src/main.c index 69c6c7a16b..d850bc27bc 100644 --- a/src/main.c +++ b/src/main.c @@ -80,7 +80,9 @@ static EWRAM_DATA u16 sTrainerId = 0; static void UpdateLinkAndCallCallbacks(void); static void InitMainCallbacks(void); static void CallCallbacks(void); +#ifdef BUGFIX static void SeedRngWithRtc(void); +#endif static void ReadKeys(void); void InitIntrHandlers(void); static void WaitForVBlank(void); diff --git a/src/main_menu.c b/src/main_menu.c index a5571e014a..c7295bd863 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -454,8 +454,8 @@ static const union AffineAnimCmd *const sSpriteAffineAnimTable_PlayerShrink[] = }; static const struct MenuAction sMenuActions_Gender[] = { - {gText_BirchBoy, NULL}, - {gText_BirchGirl, NULL} + {gText_BirchBoy, {NULL}}, + {gText_BirchGirl, {NULL}} }; static const u8 *const sMalePresetNames[] = { @@ -2169,7 +2169,7 @@ static void MainMenu_FormatSavegamePokedex(void) dexCount = GetHoennPokedexCount(FLAG_GET_CAUGHT); StringExpandPlaceholders(gStringVar4, gText_ContinueMenuPokedex); AddTextPrinterParameterized3(2, FONT_NORMAL, 0, 33, sTextColor_MenuInfo, TEXT_SKIP_DRAW, gStringVar4); - ConvertIntToDecimalStringN(str, dexCount, STR_CONV_MODE_LEFT_ALIGN, 3); + ConvertIntToDecimalStringN(str, dexCount, STR_CONV_MODE_LEFT_ALIGN, 4); AddTextPrinterParameterized3(2, FONT_NORMAL, GetStringRightAlignXOffset(FONT_NORMAL, str, 100), 33, sTextColor_MenuInfo, TEXT_SKIP_DRAW, str); } } diff --git a/src/map_name_popup.c b/src/map_name_popup.c index 07e4f98708..75e70dafc1 100644 --- a/src/map_name_popup.c +++ b/src/map_name_popup.c @@ -198,30 +198,52 @@ static const u8 *const sBattlePyramid_MapHeaderStrings[FRONTIER_STAGES_PER_CHALL sText_Pyramid, }; -// Unused -static bool8 StartMenu_ShowMapNamePopup(void) +static bool8 UNUSED StartMenu_ShowMapNamePopup(void) { HideStartMenu(); ShowMapNamePopup(); return TRUE; } +// States and data defines for Task_MapNamePopUpWindow +enum { + STATE_SLIDE_IN, + STATE_WAIT, + STATE_SLIDE_OUT, + STATE_UNUSED, + STATE_ERASE, + STATE_END, + STATE_PRINT, // For some reason the first state is numerically last. +}; + +#define POPUP_OFFSCREEN_Y 40 +#define POPUP_SLIDE_SPEED 2 + +#define tState data[0] +#define tOnscreenTimer data[1] +#define tYOffset data[2] +#define tIncomingPopUp data[3] +#define tPrintTimer data[4] + void ShowMapNamePopup(void) { if (FlagGet(FLAG_HIDE_MAP_NAME_POPUP) != TRUE) { if (!FuncIsActiveTask(Task_MapNamePopUpWindow)) { + // New pop up window sPopupTaskId = CreateTask(Task_MapNamePopUpWindow, 90); - SetGpuReg(REG_OFFSET_BG0VOFS, 40); - gTasks[sPopupTaskId].data[0] = 6; - gTasks[sPopupTaskId].data[2] = 40; + SetGpuReg(REG_OFFSET_BG0VOFS, POPUP_OFFSCREEN_Y); + gTasks[sPopupTaskId].tState = STATE_PRINT; + gTasks[sPopupTaskId].tYOffset = POPUP_OFFSCREEN_Y; } else { - if (gTasks[sPopupTaskId].data[0] != 2) - gTasks[sPopupTaskId].data[0] = 2; - gTasks[sPopupTaskId].data[3] = 1; + // There's already a pop up window running. + // Hurry the old pop up offscreen so the new one can appear. + if (gTasks[sPopupTaskId].tState != STATE_SLIDE_OUT) + gTasks[sPopupTaskId].tState = STATE_SLIDE_OUT; + gTasks[sPopupTaskId].tIncomingPopUp = TRUE; } } } @@ -230,61 +252,65 @@ static void Task_MapNamePopUpWindow(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { - case 6: - task->data[4]++; - if (task->data[4] > 30) + case STATE_PRINT: + // Wait, then create and print the pop up window + if (++task->tPrintTimer > 30) { - task->data[0] = 0; - task->data[4] = 0; + task->tState = STATE_SLIDE_IN; + task->tPrintTimer = 0; ShowMapNamePopUpWindow(); } break; - case 0: - task->data[2] -= 2; - if (task->data[2] <= 0 ) + case STATE_SLIDE_IN: + // Slide the window onscreen. + task->tYOffset -= POPUP_SLIDE_SPEED; + if (task->tYOffset <= 0 ) { - task->data[2] = 0; - task->data[0] = 1; + task->tYOffset = 0; + task->tState = STATE_WAIT; gTasks[sPopupTaskId].data[1] = 0; } break; - case 1: - task->data[1]++; - if (task->data[1] > 120 ) + case STATE_WAIT: + // Wait while the window is fully onscreen. + if (++task->tOnscreenTimer > 120) { - task->data[1] = 0; - task->data[0] = 2; + task->tOnscreenTimer = 0; + task->tState = STATE_SLIDE_OUT; } break; - case 2: - task->data[2] += 2; - if (task->data[2] > 39) + case STATE_SLIDE_OUT: + // Slide the window offscreen. + task->tYOffset += POPUP_SLIDE_SPEED; + if (task->tYOffset >= POPUP_OFFSCREEN_Y) { - task->data[2] = 40; - if (task->data[3]) + task->tYOffset = POPUP_OFFSCREEN_Y; + if (task->tIncomingPopUp) { - task->data[0] = 6; - task->data[4] = 0; - task->data[3] = 0; + // A new pop up window is incoming, + // return to the first state to show it. + task->tState = STATE_PRINT; + task->tPrintTimer = 0; + task->tIncomingPopUp = FALSE; } else { - task->data[0] = 4; + task->tState = STATE_ERASE; return; } } break; - case 4: + case STATE_ERASE: ClearStdWindowAndFrame(GetMapNamePopUpWindowId(), TRUE); - task->data[0] = 5; + task->tState = STATE_END; break; - case 5: + case STATE_END: HideMapNamePopUpWindow(); return; } - SetGpuReg(REG_OFFSET_BG0VOFS, task->data[2]); + SetGpuReg(REG_OFFSET_BG0VOFS, task->tYOffset); } void HideMapNamePopUpWindow(void) diff --git a/src/match_call.c b/src/match_call.c index 4d45b9b436..0c1176486e 100644 --- a/src/match_call.c +++ b/src/match_call.c @@ -2074,8 +2074,8 @@ void BufferPokedexRatingForMatchCall(u8 *destStr) *(str++) = CHAR_PROMPT_CLEAR; numSeen = GetNationalPokedexCount(FLAG_GET_SEEN); numCaught = GetNationalPokedexCount(FLAG_GET_CAUGHT); - ConvertIntToDecimalStringN(gStringVar1, numSeen, STR_CONV_MODE_LEFT_ALIGN, 3); - ConvertIntToDecimalStringN(gStringVar2, numCaught, STR_CONV_MODE_LEFT_ALIGN, 3); + ConvertIntToDecimalStringN(gStringVar1, numSeen, STR_CONV_MODE_LEFT_ALIGN, 4); + ConvertIntToDecimalStringN(gStringVar2, numCaught, STR_CONV_MODE_LEFT_ALIGN, 4); StringExpandPlaceholders(str, gBirchDexRatingText_OnANationwideBasis); } diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 6f6a214f3d..0b4a950ad5 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -740,8 +740,7 @@ void SanitizeMauvilleOldManForRuby(union OldMan * oldMan) } } -// Unused -static void SetMauvilleOldManLanguage(union OldMan * oldMan, u32 language1, u32 language2, u32 language3) +static void UNUSED SetMauvilleOldManLanguage(union OldMan * oldMan, u32 language1, u32 language2, u32 language3) { s32 i; diff --git a/src/menu.c b/src/menu.c index ca61f8b876..a6bd9ae2bc 100644 --- a/src/menu.c +++ b/src/menu.c @@ -67,7 +67,6 @@ static EWRAM_DATA u16 sTileNum = 0; static EWRAM_DATA u8 sPaletteNum = 0; static EWRAM_DATA u8 sYesNoWindowId = 0; static EWRAM_DATA u8 sHofPCTopBarWindowId = 0; -static EWRAM_DATA u16 sFiller = 0; // needed to align static EWRAM_DATA bool8 sScheduledBgCopiesToVram[4] = {FALSE}; static EWRAM_DATA u16 sTempTileDataBufferIdx = 0; static EWRAM_DATA void *sTempTileDataBuffer[0x20] = {NULL}; @@ -443,14 +442,12 @@ void Menu_LoadStdPalAt(u16 offset) LoadPalette(gStandardMenuPalette, offset, STD_WINDOW_PALETTE_SIZE); } -// Unused -static const u16 *Menu_GetStdPal(void) +static UNUSED const u16* Menu_GetStdPal(void) { return gStandardMenuPalette; } -// Unused -static u16 Menu_GetStdPalColor(u8 colorNum) +static u16 UNUSED Menu_GetStdPalColor(u8 colorNum) { if (colorNum > 15) colorNum = 0; @@ -511,14 +508,12 @@ void RemoveStartMenuWindow(void) } } -// Unused -static u16 GetDialogFrameBaseTileNum(void) +static u16 UNUSED GetDialogFrameBaseTileNum(void) { return DLG_WINDOW_BASE_TILE_NUM; } -// Unused -static u16 GetStandardFrameBaseTileNum(void) +static u16 UNUSED GetStandardFrameBaseTileNum(void) { return STD_WINDOW_BASE_TILE_NUM; } @@ -568,8 +563,7 @@ void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 CopyWindowToVram(windowId, COPYWIN_FULL); } -// Never used. -static void DrawDialogFrameWithCustomTile(u8 windowId, bool8 copyToVram, u16 tileNum) +static void UNUSED DrawDialogFrameWithCustomTile(u8 windowId, bool8 copyToVram, u16 tileNum) { sTileNum = tileNum; sPaletteNum = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM); @@ -878,15 +872,13 @@ void HofPCTopBar_PrintPair(const u8 *string, const u8 *string2, bool8 noBg, u8 l } } -// Unused -static void HofPCTopBar_CopyToVram(void) +static void UNUSED HofPCTopBar_CopyToVram(void) { if (sHofPCTopBarWindowId != WINDOW_NONE) CopyWindowToVram(sHofPCTopBarWindowId, COPYWIN_FULL); } -// Unused -static void HofPCTopBar_Clear(void) +static void UNUSED HofPCTopBar_Clear(void) { if (sHofPCTopBarWindowId != WINDOW_NONE) { @@ -937,8 +929,7 @@ u8 InitMenuNormal(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 n return InitMenu(windowId, fontId, left, top, cursorHeight, numChoices, initialCursorPos, FALSE); } -// Unused -static u8 InitMenuDefaultCursorHeight(u8 windowId, u8 fontId, u8 left, u8 top, u8 numChoices, u8 initialCursorPos) +static u8 UNUSED InitMenuDefaultCursorHeight(u8 windowId, u8 fontId, u8 left, u8 top, u8 numChoices, u8 initialCursorPos) { u8 cursorHeight = GetMenuCursorDimensionByFont(fontId, 1); return InitMenuNormal(windowId, fontId, left, top, cursorHeight, numChoices, initialCursorPos); @@ -1115,8 +1106,7 @@ void PrintMenuActionTextsAtPos(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineH CopyWindowToVram(windowId, COPYWIN_GFX); } -// Unused -static void PrintMenuActionTextsWithSpacing(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *menuActions, u8 letterSpacing, u8 lineSpacing) +static void UNUSED PrintMenuActionTextsWithSpacing(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *menuActions, u8 letterSpacing, u8 lineSpacing) { u8 i; for (i = 0; i < itemCount; i++) @@ -1124,8 +1114,7 @@ static void PrintMenuActionTextsWithSpacing(u8 windowId, u8 fontId, u8 left, u8 CopyWindowToVram(windowId, COPYWIN_GFX); } -// Unused -static void PrintMenuActionTextsAtTop(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *menuActions) +static void UNUSED PrintMenuActionTextsAtTop(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *menuActions) { PrintMenuActionTextsAtPos(windowId, fontId, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH), 1, lineHeight, itemCount, menuActions); } @@ -1157,8 +1146,7 @@ void PrintMenuActionTexts(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpac CopyWindowToVram(windowId, COPYWIN_GFX); } -// Unused -static void PrintMenuActionTextsAtTopById(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *menuActions, const u8 *actionIds) +static void UNUSED PrintMenuActionTextsAtTopById(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *menuActions, const u8 *actionIds) { PrintMenuActionTexts(windowId, fontId, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH), 1, GetFontAttribute(fontId, FONTATTR_LETTER_SPACING), lineHeight, itemCount, menuActions, actionIds); } @@ -1215,7 +1203,7 @@ static void CreateYesNoMenuAtPos(const struct WindowTemplate *window, u8 fontId, InitMenuNormal(sYesNoWindowId, fontId, left, top, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_HEIGHT), 2, initialCursorPos); } -static void CreateYesNoMenuInTopLeft(const struct WindowTemplate *window, u8 fontId, u16 baseTileNum, u8 paletteNum) +static void UNUSED CreateYesNoMenuInTopLeft(const struct WindowTemplate *window, u8 fontId, u16 baseTileNum, u8 paletteNum) { CreateYesNoMenuAtPos(window, fontId, 0, 1, baseTileNum, paletteNum, 0); } @@ -1246,8 +1234,7 @@ static void PrintMenuActionGridText(u8 windowId, u8 fontId, u8 left, u8 top, u8 CopyWindowToVram(windowId, COPYWIN_GFX); } -// Unused -static void PrintMenuActionGridTextAtTop(u8 windowId, u8 fontId, u8 width, u8 height, u8 columns, u8 rows, const struct MenuAction *menuActions) +static void UNUSED PrintMenuActionGridTextAtTop(u8 windowId, u8 fontId, u8 width, u8 height, u8 columns, u8 rows, const struct MenuAction *menuActions) { PrintMenuActionGridText(windowId, fontId, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH), 0, width, height, columns, rows, menuActions); } @@ -1283,8 +1270,7 @@ void PrintMenuActionGrid(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth CopyWindowToVram(windowId, COPYWIN_GFX); } -// Unused -static void PrintMenuActionGrid_TopLeft(u8 windowId, u8 fontId, u8 optionWidth, u8 unused, u8 horizontalCount, u8 verticalCount, const struct MenuAction *menuActions, const u8 *actionIds) +static void UNUSED PrintMenuActionGrid_TopLeft(u8 windowId, u8 fontId, u8 optionWidth, u8 unused, u8 horizontalCount, u8 verticalCount, const struct MenuAction *menuActions, const u8 *actionIds) { PrintMenuActionGrid(windowId, fontId, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH), 0, optionWidth, horizontalCount, verticalCount, menuActions, actionIds); } @@ -1316,8 +1302,7 @@ static u8 InitMenuGrid(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, return sMenu.cursorPos; } -// Unused -static u8 InitMenuGridDefaultCursorHeight(u8 windowId, u8 fontId, u8 left, u8 top, u8 width, u8 columns, u8 rows, u8 cursorPos) +static u8 UNUSED InitMenuGridDefaultCursorHeight(u8 windowId, u8 fontId, u8 left, u8 top, u8 width, u8 columns, u8 rows, u8 cursorPos) { u8 cursorHeight = GetMenuCursorDimensionByFont(fontId, 1); u8 numChoices = columns * rows; @@ -1409,8 +1394,7 @@ u8 ChangeGridMenuCursorPosition(s8 deltaX, s8 deltaY) } } -// Unused -static s8 Menu_ProcessGridInput_NoSoundLimit(void) +static s8 UNUSED Menu_ProcessGridInput_NoSoundLimit(void) { if (JOY_NEW(A_BUTTON)) { @@ -1490,8 +1474,7 @@ s8 Menu_ProcessGridInput(void) return MENU_NOTHING_CHOSEN; } -// Unused -static s8 Menu_ProcessGridInputRepeat_NoSoundLimit(void) +static s8 UNUSED Menu_ProcessGridInputRepeat_NoSoundLimit(void) { if (JOY_NEW(A_BUTTON)) { @@ -1530,8 +1513,7 @@ static s8 Menu_ProcessGridInputRepeat_NoSoundLimit(void) return MENU_NOTHING_CHOSEN; } -// Unused -static s8 Menu_ProcessGridInputRepeat(void) +static s8 UNUSED Menu_ProcessGridInputRepeat(void) { u8 oldPos = sMenu.cursorPos; @@ -1606,7 +1588,7 @@ void PrintMenuTable(u8 windowId, u8 itemCount, const struct MenuAction *menuActi u32 i; for (i = 0; i < itemCount; i++) - AddTextPrinterParameterized(windowId, 1, menuActions[i].text, 8, (i * 16) + 1, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(windowId, FONT_NORMAL, menuActions[i].text, 8, (i * 16) + 1, TEXT_SKIP_DRAW, NULL); CopyWindowToVram(windowId, COPYWIN_GFX); } @@ -1670,13 +1652,12 @@ void PrintMenuGridTable(u8 windowId, u8 optionWidth, u8 columns, u8 rows, const for (i = 0; i < rows; i++) { for (j = 0; j < columns; j++) - AddTextPrinterParameterized(windowId, 1, menuActions[(i * columns) + j].text, (optionWidth * j) + 8, (i * 16) + 1, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(windowId, FONT_NORMAL, menuActions[(i * columns) + j].text, (optionWidth * j) + 8, (i * 16) + 1, TEXT_SKIP_DRAW, NULL); } CopyWindowToVram(windowId, COPYWIN_GFX); } -// Unused -static void PrintMenuActionGridTextNoSpacing(u8 windowId, u8 optionWidth, u8 columns, u8 rows, const struct MenuAction *menuActions, const u8 *actionIds) +static void UNUSED PrintMenuActionGridTextNoSpacing(u8 windowId, u8 optionWidth, u8 columns, u8 rows, const struct MenuAction *menuActions, const u8 *actionIds) { u8 i; u8 j; @@ -2005,10 +1986,10 @@ void PrintPlayerNameOnWindow(u8 windowId, const u8 *src, u16 x, u16 y) StringExpandPlaceholders(gStringVar4, src); - AddTextPrinterParameterized(windowId, 1, gStringVar4, x, y, TEXT_SKIP_DRAW, 0); + AddTextPrinterParameterized(windowId, FONT_NORMAL, gStringVar4, x, y, TEXT_SKIP_DRAW, 0); } -static void UnusedBlitBitmapRect(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height) +static void UNUSED UnusedBlitBitmapRect(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height) { int loopSrcY, loopDstY, loopSrcX, loopDstX, xEnd, yEnd, multiplierSrcY, multiplierDstY; const u8 *pixelsSrc; @@ -2083,14 +2064,12 @@ static void UnusedBlitBitmapRect(const struct Bitmap *src, struct Bitmap *dst, u } } -// Unused -static void LoadMonIconPalAtOffset(u8 palOffset, u16 speciesId) +static void UNUSED LoadMonIconPalAtOffset(u8 palOffset, u16 speciesId) { LoadPalette(GetValidMonIconPalettePtr(speciesId), palOffset, PLTT_SIZE_4BPP); } -// Unused -static void DrawMonIconAtPos(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y) +static void UNUSED DrawMonIconAtPos(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y) { BlitBitmapToWindow(windowId, GetMonIconPtr(speciesId, personality), x, y, 32, 32); } @@ -2142,7 +2121,7 @@ void BufferSaveMenuText(u8 textId, u8 *dest, u8 color) break; case SAVE_MENU_CAUGHT: if (IsNationalPokedexEnabled()) - string = ConvertIntToDecimalStringN(string, GetNationalPokedexCount(FLAG_GET_CAUGHT), STR_CONV_MODE_LEFT_ALIGN, 3); + string = ConvertIntToDecimalStringN(string, GetNationalPokedexCount(FLAG_GET_CAUGHT), STR_CONV_MODE_LEFT_ALIGN, 4); else string = ConvertIntToDecimalStringN(string, GetHoennPokedexCount(FLAG_GET_CAUGHT), STR_CONV_MODE_LEFT_ALIGN, 3); *string = EOS; diff --git a/src/menu_specialized.c b/src/menu_specialized.c index 01fc4eddb9..c99c71e4b5 100644 --- a/src/menu_specialized.c +++ b/src/menu_specialized.c @@ -27,8 +27,6 @@ #include "constants/battle_move_effects.h" #include "gba/io_reg.h" -extern const struct CompressedSpriteSheet gMonFrontPicTable[]; - EWRAM_DATA static u8 sMailboxWindowIds[MAILBOXWIN_COUNT] = {0}; EWRAM_DATA static struct ListMenuItem *sMailboxList = NULL; @@ -237,8 +235,7 @@ void MailboxMenu_RemoveWindow(u8 windowIdx) sMailboxWindowIds[windowIdx] = WINDOW_NONE; } -// Unused -static u8 MailboxMenu_GetWindowId(u8 windowIdx) +static u8 UNUSED MailboxMenu_GetWindowId(u8 windowIdx) { return sMailboxWindowIds[windowIdx]; } @@ -589,7 +586,7 @@ static void ConditionGraph_CalcRightHalf(struct ConditionGraph *graph) // No need for conditional, positions on the Beauty line are always above the Cute line ConditionGraph_CalcLine(graph, graph->scanlineRight[0], &graph->curPositions[GRAPH_BEAUTY], &graph->curPositions[GRAPH_CUTE], TRUE, NULL); - // Calculate Cute -> Tough line (includes left scanline because this crosses the halfway point) + // Calculate Cute -> Smart line (includes left scanline because this crosses the halfway point) i = (graph->curPositions[GRAPH_CUTE].y <= graph->curPositions[GRAPH_SMART].y); ConditionGraph_CalcLine(graph, graph->scanlineRight[0], &graph->curPositions[GRAPH_CUTE], &graph->curPositions[GRAPH_SMART], i, graph->scanlineLeft[0]); diff --git a/src/mini_printf.c b/src/mini_printf.c index 9fb4ecfac9..2a8c6e5cb7 100644 --- a/src/mini_printf.c +++ b/src/mini_printf.c @@ -328,7 +328,7 @@ s32 mini_vpprintf(void* buf, const char *fmt, va_list va) break; case 'S' : // preproc encoded string handler ptr = va_arg(va, char*); - len = StringLength(ptr); + len = StringLength((u8*)ptr); if (pad_to > 0) { len = mini_pad(ptr, len, pad_char, pad_to, bf); diff --git a/src/minigame_countdown.c b/src/minigame_countdown.c index b4d3b6558b..617922e5aa 100644 --- a/src/minigame_countdown.c +++ b/src/minigame_countdown.c @@ -158,8 +158,7 @@ static const TaskFunc sStaticCountdownFuncs[][4] = #define sId data[4] // Never read #define sNumberSpriteId data[5] // Never read -// Unused -static u32 CreateStaticCountdownTask(u8 funcSetId, u8 taskPriority) +static u32 UNUSED CreateStaticCountdownTask(u8 funcSetId, u8 taskPriority) { u8 taskId = CreateTask(Task_StaticCountdown, taskPriority); struct Task *task = &gTasks[taskId]; @@ -170,7 +169,7 @@ static u32 CreateStaticCountdownTask(u8 funcSetId, u8 taskPriority) return taskId; } -static bool32 StartStaticCountdown(void) +static bool32 UNUSED StartStaticCountdown(void) { u8 taskId = FindTaskIdByFunc(Task_StaticCountdown); if (taskId == TASK_NONE) @@ -180,7 +179,7 @@ static bool32 StartStaticCountdown(void) return TRUE; } -static bool32 IsStaticCountdownRunning(void) +static bool32 UNUSED IsStaticCountdownRunning(void) { return FuncIsActiveTask(Task_StaticCountdown); } diff --git a/src/mirage_tower.c b/src/mirage_tower.c index 9b48ee24b7..b1e2e5003b 100644 --- a/src/mirage_tower.c +++ b/src/mirage_tower.c @@ -431,7 +431,7 @@ void DoMirageTowerCeilingCrumble(void) static void WaitCeilingCrumble(u8 taskId) { - u16 *data = gTasks[taskId].data; + u16 *data = (u16*)gTasks[taskId].data; data[1]++; // Either wait 1000 frames, or until all 16 crumble sprites and the one screen-shake task are completed. if (data[1] == 1000 || data[0] == 17) diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c index c73f43a568..179be0d56b 100644 --- a/src/mystery_gift_menu.c +++ b/src/mystery_gift_menu.c @@ -597,8 +597,7 @@ static void ShowDownArrow(void) DrawDownArrow(WIN_MSG, DOWN_ARROW_X, DOWN_ARROW_Y, 1, TRUE, &sDownArrowCounterAndYCoordIdx[0], &sDownArrowCounterAndYCoordIdx[1]); } -// Unused -static bool32 HideDownArrowAndWaitButton(u8 *textState) +static bool32 UNUSED HideDownArrowAndWaitButton(u8 *textState) { switch (*textState) { @@ -722,7 +721,7 @@ s8 DoMysteryGiftYesNo(u8 *textState, u16 * windowId, bool8 yesNoBoxPlacement, co // Handle the "Receive/Send/Toss" menu that appears when selecting Wonder Card/News static s32 HandleGiftSelectMenu(u8 *textState, u16 * windowId, bool32 cannotToss, bool32 cannotSend) { - struct WindowTemplate windowTemplate; + struct WindowTemplate UNUSED windowTemplate; s32 input; switch (*textState) diff --git a/src/naming_screen.c b/src/naming_screen.c index 28bb246375..0f2e2dbb7f 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -2058,23 +2058,23 @@ static bool8 IsWideLetter(u8 character) return FALSE; } -// Debug? Unused, and arguments aren't sensible for non-player screens. -static void Debug_NamingScreenPlayer(void) +// Debug? Arguments aren't sensible for non-player screens. +static void UNUSED Debug_NamingScreenPlayer(void) { DoNamingScreen(NAMING_SCREEN_PLAYER, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnToFieldWithOpenMenu); } -static void Debug_NamingScreenBox(void) +static void UNUSED Debug_NamingScreenBox(void) { DoNamingScreen(NAMING_SCREEN_BOX, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnToFieldWithOpenMenu); } -static void Debug_NamingScreenCaughtMon(void) +static void UNUSED Debug_NamingScreenCaughtMon(void) { DoNamingScreen(NAMING_SCREEN_CAUGHT_MON, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnToFieldWithOpenMenu); } -static void Debug_NamingScreenNickname(void) +static void UNUSED Debug_NamingScreenNickname(void) { DoNamingScreen(NAMING_SCREEN_NICKNAME, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnToFieldWithOpenMenu); } diff --git a/src/overworld.c b/src/overworld.c index 0152a48579..09e242b217 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -58,6 +58,7 @@ #include "tv.h" #include "scanline_effect.h" #include "wild_encounter.h" +#include "vs_seeker.h" #include "frontier_util.h" #include "constants/abilities.h" #include "constants/layouts.h" @@ -131,17 +132,14 @@ static void UpdateAllLinkPlayers(u16 *, s32); static u8 FlipVerticalAndClearForced(u8, u8); static u8 LinkPlayerGetCollision(u8, u8, s16, s16); static void CreateLinkPlayerSprite(u8, u8); -static void GetLinkPlayerCoords(u8, u16 *, u16 *); +static void GetLinkPlayerCoords(u8, s16 *, s16 *); static u8 GetLinkPlayerFacingDirection(u8); static u8 GetLinkPlayerElevation(u8); -static s32 GetLinkPlayerObjectStepTimer(u8); static u8 GetLinkPlayerIdAt(s16, s16); static void SetPlayerFacingDirection(u8, u8); static void ZeroObjectEvent(struct ObjectEvent *); static void SpawnLinkPlayerObjectEvent(u8, s16, s16, u8); static void InitLinkPlayerObjectEventPos(struct ObjectEvent *, s16, s16); -static void SetLinkPlayerObjectRange(u8, u8); -static void DestroyLinkPlayerObject(u8); static u8 GetSpriteForLinkedPlayer(u8); static void RunTerminateLinkScript(void); static u32 GetLinkSendQueueLength(void); @@ -361,9 +359,8 @@ static void (*const sMovementStatusHandler[])(struct LinkPlayerObjectEvent *, st void DoWhiteOut(void) { RunScriptImmediately(EventScript_WhiteOut); - #if B_WHITEOUT_MONEY == GEN_3 - SetMoney(&gSaveBlock1Ptr->money, GetMoney(&gSaveBlock1Ptr->money) / 2); - #endif + if (B_WHITEOUT_MONEY == GEN_3) + SetMoney(&gSaveBlock1Ptr->money, GetMoney(&gSaveBlock1Ptr->money) / 2); HealPlayerParty(); Overworld_ResetStateAfterWhiteOut(); SetWarpDestinationToLastHealLocation(); @@ -428,9 +425,8 @@ static void Overworld_ResetStateAfterWhiteOut(void) FlagClear(FLAG_SYS_SAFARI_MODE); FlagClear(FLAG_SYS_USE_STRENGTH); FlagClear(FLAG_SYS_USE_FLASH); -#if B_RESET_FLAGS_VARS_AFTER_WHITEOUT == TRUE - Overworld_ResetBattleFlagsAndVars(); -#endif + if (B_RESET_FLAGS_VARS_AFTER_WHITEOUT == TRUE) + Overworld_ResetBattleFlagsAndVars(); // If you were defeated by Kyogre/Groudon and the step counter has // maxed out, end the abnormal weather. if (VarGet(VAR_SHOULD_END_ABNORMAL_WEATHER) == 1) @@ -823,6 +819,10 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) ResetCyclingRoadChallengeData(); RestartWildEncounterImmunitySteps(); TryUpdateRandomTrainerRematches(mapGroup, mapNum); + +if (I_VS_SEEKER_CHARGING != 0) + MapResetTrainerRematches(mapGroup, mapNum); + DoTimeBasedEvents(); SetSavedWeatherFromCurrMapHeader(); ChooseAmbientCrySpecies(); @@ -873,6 +873,10 @@ static void LoadMapFromWarp(bool32 a1) ResetCyclingRoadChallengeData(); RestartWildEncounterImmunitySteps(); TryUpdateRandomTrainerRematches(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum); + +if (I_VS_SEEKER_CHARGING != 0) + MapResetTrainerRematches(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum); + if (a1 != TRUE) DoTimeBasedEvents(); SetSavedWeatherFromCurrMapHeader(); @@ -1025,8 +1029,8 @@ void SetObjectEventLoadFlag(u8 flag) sObjectEventLoadFlag = flag; } -// Unused, sObjectEventLoadFlag is read directly -static u8 GetObjectEventLoadFlag(void) +// sObjectEventLoadFlag is read directly +static u8 UNUSED GetObjectEventLoadFlag(void) { return sObjectEventLoadFlag; } @@ -2186,7 +2190,7 @@ static void InitObjectEventsLink(void) static void InitObjectEventsLocal(void) { - s16 x, y; + u16 x, y; struct InitialPlayerAvatarState *player; gTotalCameraPixelOffsetX = 0; @@ -2682,8 +2686,7 @@ u32 GetCableClubPartnersReady(void) return CABLE_SEAT_WAITING; } -// Unused -static bool32 IsAnyPlayerExitingCableClub(void) +static bool32 UNUSED IsAnyPlayerExitingCableClub(void) { return IsAnyPlayerInLinkState(PLAYER_LINK_STATE_EXITING_ROOM); } @@ -2991,7 +2994,7 @@ static void InitLinkPlayerObjectEventPos(struct ObjectEvent *objEvent, s16 x, s1 ObjectEventUpdateElevation(objEvent); } -static void SetLinkPlayerObjectRange(u8 linkPlayerId, u8 dir) +static void UNUSED SetLinkPlayerObjectRange(u8 linkPlayerId, u8 dir) { if (gLinkPlayerObjectEvents[linkPlayerId].active) { @@ -3001,7 +3004,7 @@ static void SetLinkPlayerObjectRange(u8 linkPlayerId, u8 dir) } } -static void DestroyLinkPlayerObject(u8 linkPlayerId) +static void UNUSED DestroyLinkPlayerObject(u8 linkPlayerId) { struct LinkPlayerObjectEvent *linkPlayerObjEvent = &gLinkPlayerObjectEvents[linkPlayerId]; u8 objEventId = linkPlayerObjEvent->objEventId; @@ -3020,7 +3023,7 @@ static u8 GetSpriteForLinkedPlayer(u8 linkPlayerId) return objEvent->spriteId; } -static void GetLinkPlayerCoords(u8 linkPlayerId, u16 *x, u16 *y) +static void GetLinkPlayerCoords(u8 linkPlayerId, s16 *x, s16 *y) { u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId; struct ObjectEvent *objEvent = &gObjectEvents[objEventId]; @@ -3042,7 +3045,7 @@ static u8 GetLinkPlayerElevation(u8 linkPlayerId) return objEvent->currentElevation; } -static s32 GetLinkPlayerObjectStepTimer(u8 linkPlayerId) +static s32 UNUSED GetLinkPlayerObjectStepTimer(u8 linkPlayerId) { u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId; struct ObjectEvent *objEvent = &gObjectEvents[objEventId]; diff --git a/src/palette.c b/src/palette.c index e360664627..fccff062a8 100644 --- a/src/palette.c +++ b/src/palette.c @@ -62,7 +62,6 @@ ALIGNED(4) EWRAM_DATA u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE] = {0}; ALIGNED(4) EWRAM_DATA u16 gPlttBufferFaded[PLTT_BUFFER_SIZE] = {0}; static EWRAM_DATA struct PaletteStruct sPaletteStructs[NUM_PALETTE_STRUCTS] = {0}; EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0}; -static EWRAM_DATA u32 sFiller = 0; static EWRAM_DATA u32 sPlttBufferTransferPending = 0; EWRAM_DATA u8 ALIGNED(2) gPaletteDecompressionBuffer[PLTT_SIZE] = {0}; @@ -201,15 +200,13 @@ bool8 BeginNormalPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targe } } -// Unused -static bool8 BeginPlttFade(u32 selectedPalettes, u8 delay, u8 startY, u8 targetY, u16 blendColor) +static bool8 UNUSED BeginPlttFade(u32 selectedPalettes, u8 delay, u8 startY, u8 targetY, u16 blendColor) { ReadPlttIntoBuffers(); return BeginNormalPaletteFade(selectedPalettes, delay, startY, targetY, blendColor); } -// Unused -static void PaletteStruct_Run(u8 a1, u32 *unkFlags) +static void UNUSED PaletteStruct_Run(u8 a1, u32 *unkFlags) { u8 i; @@ -382,14 +379,14 @@ void ResetPaletteFadeControl(void) gPaletteFade.deltaY = 2; } -static void PaletteStruct_SetUnusedFlag(u16 id) +static void UNUSED PaletteStruct_SetUnusedFlag(u16 id) { u8 paletteNum = PaletteStruct_GetPalNum(id); if (paletteNum != NUM_PALETTE_STRUCTS) sPaletteStructs[paletteNum].flag = TRUE; } -static void PaletteStruct_ClearUnusedFlag(u16 id) +static void UNUSED PaletteStruct_ClearUnusedFlag(u16 id) { u8 paletteNum = PaletteStruct_GetPalNum(id); if (paletteNum != NUM_PALETTE_STRUCTS) @@ -982,8 +979,7 @@ void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTa gTasks[taskId].func(taskId); } -// Unused -static bool32 IsBlendPalettesGraduallyTaskActive(u8 id) +static bool32 UNUSED IsBlendPalettesGraduallyTaskActive(u8 id) { int i; @@ -996,8 +992,7 @@ static bool32 IsBlendPalettesGraduallyTaskActive(u8 id) return FALSE; } -// Unused -static void DestroyBlendPalettesGraduallyTask(void) +static void UNUSED DestroyBlendPalettesGraduallyTask(void) { u8 taskId; diff --git a/src/palette_util.c b/src/palette_util.c index 08239c3363..d24321d580 100755 --- a/src/palette_util.c +++ b/src/palette_util.c @@ -39,8 +39,7 @@ u8 RouletteFlash_Add(struct RouletteFlashUtil *flash, u8 id, const struct Roulet return id; } -// Unused -static u8 RouletteFlash_Remove(struct RouletteFlashUtil *flash, u8 id) +static u8 UNUSED RouletteFlash_Remove(struct RouletteFlashUtil *flash, u8 id) { if (id >= ARRAY_COUNT(flash->palettes)) return 0xFF; @@ -470,7 +469,7 @@ void SetTilemapRect(u16 *dest, u16 *src, u8 left, u8 top, u8 width, u8 height) } } -static void FillTilemapRect_Unused(void *dest, u16 value, u8 left, u8 top, u8 width, u8 height) +static void UNUSED FillTilemapRect_Unused(void *dest, u16 value, u8 left, u8 top, u8 width, u8 height) { u8 i, j; u8 x, y; @@ -486,7 +485,7 @@ static void FillTilemapRect_Unused(void *dest, u16 value, u8 left, u8 top, u8 wi } } -static void SetTilemapRect_Unused(void *dest, const u16 *src, u8 left, u8 top, u8 width, u8 height) +static void UNUSED SetTilemapRect_Unused(void *dest, const u16 *src, u8 left, u8 top, u8 width, u8 height) { u8 i, j; u8 x, y; diff --git a/src/party_menu.c b/src/party_menu.c old mode 100755 new mode 100644 index 2b72566282..f333db02fb --- a/src/party_menu.c +++ b/src/party_menu.c @@ -94,6 +94,14 @@ enum { MENU_TRADE1, MENU_TRADE2, MENU_TOSS, + MENU_CATALOG_BULB, + MENU_CATALOG_OVEN, + MENU_CATALOG_WASHING, + MENU_CATALOG_FRIDGE, + MENU_CATALOG_FAN, + MENU_CATALOG_MOWER, + MENU_CHANGE_FORM, + MENU_CHANGE_ABILITY, MENU_FIELD_MOVES }; @@ -113,6 +121,8 @@ enum { ACTIONS_TRADE, ACTIONS_SPIN_TRADE, ACTIONS_TAKEITEM_TOSS, + ACTIONS_ROTOM_CATALOG, + ACTIONS_ZYGARDE_CUBE, }; // In CursorCb_FieldMove, field moves <= FIELD_MOVE_WATERFALL are assumed to line up with the badge flags. @@ -228,7 +238,6 @@ static EWRAM_DATA u16 *sSlot1TilemapBuffer = 0; // for switching party slots static EWRAM_DATA u16 *sSlot2TilemapBuffer = 0; // EWRAM_DATA u8 gSelectedOrderFromParty[MAX_FRONTIER_PARTY_SIZE] = {0}; static EWRAM_DATA u16 sPartyMenuItemId = 0; -static EWRAM_DATA u16 sUnused = 0; EWRAM_DATA u8 gBattlePartyCurrentOrder[PARTY_SIZE / 2] = {0}; // bits 0-3 are the current pos of Slot 1, 4-7 are Slot 2, and so on static EWRAM_DATA u8 sInitialLevel = 0; static EWRAM_DATA u8 sFinalLevel = 0; @@ -238,13 +247,17 @@ void (*gItemUseCB)(u8, TaskFunc); static void ResetPartyMenu(void); static void CB2_InitPartyMenu(void); +static void CB2_ReloadPartyMenu(void); static bool8 ShowPartyMenu(void); +static bool8 ReloadPartyMenu(void); static void SetPartyMonsAllowedInMinigame(void); static void ExitPartyMenu(void); static bool8 AllocPartyMenuBg(void); static bool8 AllocPartyMenuBgGfx(void); static void InitPartyMenuWindows(u8); +static void LoadPartyMenuWindows(void); static void InitPartyMenuBoxes(u8); +static void LoadPartyMenuBoxes(u8); static void LoadPartyMenuPokeballGfx(void); static bool8 CreatePartyMonSpritesLoop(void); static bool8 RenderPartyMenuBoxes(void); @@ -476,6 +489,14 @@ static void CursorCb_Trade1(u8); static void CursorCb_Trade2(u8); static void CursorCb_Toss(u8); static void CursorCb_FieldMove(u8); +static void CursorCb_CatalogBulb(u8); +static void CursorCb_CatalogOven(u8); +static void CursorCb_CatalogWashing(u8); +static void CursorCb_CatalogFridge(u8); +static void CursorCb_CatalogFan(u8); +static void CursorCb_CatalogMower(u8); +static void CursorCb_ChangeForm(u8); +static void CursorCb_ChangeAbility(u8); static bool8 SetUpFieldMove_Surf(void); static bool8 SetUpFieldMove_Fly(void); static bool8 SetUpFieldMove_Waterfall(void); @@ -535,6 +556,18 @@ static void InitPartyMenu(u8 menuType, u8 layout, u8 partyAction, bool8 keepCurs } } +static void RefreshPartyMenu(void) //Refreshes the party menu without restarting tasks +{ + u16 i; + for (i = 0; i < ARRAY_COUNT(sPartyMenuInternal->data); i++) + sPartyMenuInternal->data[i] = 0; + for (i = 0; i < ARRAY_COUNT(sPartyMenuInternal->windowId); i++) + sPartyMenuInternal->windowId[i] = WINDOW_NONE; + gTextFlags.autoScroll = 0; + CalculatePlayerPartyCount(); + SetMainCallback2(CB2_ReloadPartyMenu); +} + static void CB2_UpdatePartyMenu(void) { RunTasks(); @@ -560,6 +593,15 @@ static void CB2_InitPartyMenu(void) } } +static void CB2_ReloadPartyMenu(void) +{ + while (TRUE) + { + if (MenuHelpers_ShouldWaitForLinkRecv() == TRUE || ReloadPartyMenu() == TRUE || MenuHelpers_IsLinkActive() == TRUE) + break; + } +} + static bool8 ShowPartyMenu(void) { switch (gMain.state) @@ -684,6 +726,104 @@ static bool8 ShowPartyMenu(void) return FALSE; } +static bool8 ReloadPartyMenu(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankHBlankCallbacksToNull(); + ClearScheduledBgCopiesToVram(); + gMain.state++; + break; + case 1: + ScanlineEffect_Stop(); + gMain.state++; + break; + case 2: + ResetPaletteFade(); + gPaletteFade.bufferTransferDisabled = TRUE; + gMain.state++; + break; + case 3: + ResetSpriteData(); + gMain.state++; + break; + case 4: + FreeAllSpritePalettes(); + gMain.state++; + break; + case 5: + SetPartyMonsAllowedInMinigame(); + gMain.state++; + break; + case 6: + sPartyMenuInternal->data[0] = 0; + gMain.state++; + break; + case 7: + LoadPartyMenuWindows(); + gMain.state++; + break; + case 8: + LoadPartyMenuBoxes(gPartyMenu.layout); + sPartyMenuInternal->data[0] = 0; + gMain.state++; + break; + case 9: + LoadHeldItemIcons(); + gMain.state++; + break; + case 10: + LoadPartyMenuPokeballGfx(); + gMain.state++; + break; + case 11: + LoadPartyMenuAilmentGfx(); + gMain.state++; + break; + case 12: + LoadMonIconPalettes(); + gMain.state++; + break; + case 13: + if (CreatePartyMonSpritesLoop()) + { + sPartyMenuInternal->data[0] = 0; + gMain.state++; + } + break; + case 14: + if (RenderPartyMenuBoxes()) + { + sPartyMenuInternal->data[0] = 0; + gMain.state++; + } + break; + case 15: + CreateCancelConfirmPokeballSprites(); + gMain.state++; + break; + case 16: + CreateCancelConfirmWindows(sPartyMenuInternal->chooseHalf); + gMain.state++; + break; + case 17: + BlendPalettes(PALETTES_ALL, 16, RGB_WHITEALPHA); + gPaletteFade.bufferTransferDisabled = FALSE; + gMain.state++; + break; + case 18: + BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_WHITEALPHA); + gMain.state++; + break; + default: + SetVBlankCallback(VBlankCB_PartyMenu); + SetMainCallback2(CB2_UpdatePartyMenu); + return TRUE; + } + return FALSE; +} + static void ExitPartyMenu(void) { BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); @@ -801,9 +941,13 @@ static void FreePartyPointers(void) static void InitPartyMenuBoxes(u8 layout) { - u8 i; - sPartyMenuBoxes = Alloc(sizeof(struct PartyMenuBox[PARTY_SIZE])); + LoadPartyMenuBoxes(layout); +} + +static void LoadPartyMenuBoxes(u8 layout) +{ + u32 i; for (i = 0; i < PARTY_SIZE; i++) { @@ -1963,7 +2107,7 @@ u8 GetMonAilment(struct Pokemon *mon) static void SetPartyMonsAllowedInMinigame(void) { - u16 *ptr; + s16 *ptr; if (gPartyMenu.menuType == PARTY_MENU_TYPE_MINIGAME) { @@ -2070,8 +2214,6 @@ static u8 CanTeachMove(struct Pokemon *mon, u16 move) static void InitPartyMenuWindows(u8 layout) { - u8 i; - switch (layout) { case PARTY_LAYOUT_SINGLE: @@ -2087,6 +2229,12 @@ static void InitPartyMenuWindows(u8 layout) InitWindows(sShowcaseMultiPartyMenuWindowTemplate); break; } + LoadPartyMenuWindows(); +} + +static void LoadPartyMenuWindows(void) +{ + u32 i; DeactivateAllTextPrinters(); for (i = 0; i < PARTY_SIZE; i++) FillWindowPixelBuffer(i, PIXEL_FILL(0)); @@ -2499,6 +2647,9 @@ void DisplayPartyMenuStdMessage(u32 stringId) case PARTY_MSG_ALREADY_HOLDING_ONE: *windowPtr = AddWindow(&sAlreadyHoldingOneMsgWindowTemplate); break; + case PARTY_MSG_WHICH_APPLIANCE: + *windowPtr = AddWindow(&sOrderWhichApplianceMsgWindowTemplate); + break; default: *windowPtr = AddWindow(&sDefaultPartyMsgWindowTemplate); break; @@ -2555,6 +2706,12 @@ static u8 DisplaySelectionWindow(u8 windowType) case SELECTWINDOW_MAIL: window = sMailReadTakeWindowTemplate; break; + case SELECTWINDOW_CATALOG: + window = sCatalogSelectWindowTemplate; + break; + case SELECTWINDOW_ZYGARDECUBE: + window = sZygardeCubeSelectWindowTemplate; + break; default: // SELECTWINDOW_MOVES window = sMoveSelectWindowTemplate; break; @@ -4168,9 +4325,9 @@ static void PartyMenuStartSpriteAnim(u8 spriteId, u8 animNum) StartSpriteAnim(&gSprites[spriteId], animNum); } -// Unused. Might explain the large blank section in gPartyMenuPokeballSmall_Gfx +// Might explain the large blank section in gPartyMenuPokeballSmall_Gfx // At the very least this is how the unused anim cmds for sSpriteAnimTable_MenuPokeballSmall were meant to be accessed -static void SpriteCB_BounceConfirmCancelButton(u8 spriteId, u8 spriteId2, u8 animNum) +static void UNUSED SpriteCB_BounceConfirmCancelButton(u8 spriteId, u8 spriteId2, u8 animNum) { if (animNum == 0) { @@ -4520,7 +4677,11 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc task) PlaySE(SE_SELECT); DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); ScheduleBgCopyTilemapToVram(2); - gTasks[taskId].func = task; + if (gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD) + gTasks[taskId].func = Task_ReturnToChooseMonAfterText; + else + gTasks[taskId].func = task; + return; } else { @@ -4552,7 +4713,10 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc task) GetMedicineItemEffectMessage(item, oldStatus); DisplayPartyMenuMessage(gStringVar4, TRUE); ScheduleBgCopyTilemapToVram(2); - gTasks[taskId].func = task; + if (gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD && CheckBagHasItem(item, 1)) + gTasks[taskId].func = Task_ReturnToChooseMonAfterText; + else + gTasks[taskId].func = task; } } } @@ -4754,7 +4918,10 @@ static void Task_DisplayHPRestoredMessage(u8 taskId) DisplayPartyMenuMessage(gStringVar4, FALSE); ScheduleBgCopyTilemapToVram(2); HandleBattleLowHpMusicChange(); - gTasks[taskId].func = Task_ClosePartyMenuAfterText; + if (gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD && CheckBagHasItem(gSpecialVar_ItemId, 1)) + gTasks[taskId].func = Task_ReturnToChooseMonAfterText; + else + gTasks[taskId].func = Task_ClosePartyMenuAfterText; } static void Task_ClosePartyMenuAfterText(u8 taskId) @@ -4767,6 +4934,33 @@ static void Task_ClosePartyMenuAfterText(u8 taskId) } } +void ItemUseCB_ResetEVs(u8 taskId, TaskFunc task) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + u16 item = gSpecialVar_ItemId; + bool8 cannotUseEffect = ExecuteTableBasedItemEffect(mon, item, gPartyMenu.slotId, 0); + + if (cannotUseEffect) + { + gPartyMenuUseExitCallback = FALSE; + PlaySE(SE_SELECT); + DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = task; + } + else + { + gPartyMenuUseExitCallback = TRUE; + PlaySE(SE_USE_ITEM); + RemoveBagItem(item, 1); + GetMonNickname(mon, gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_BasePointsResetToZero); + DisplayPartyMenuMessage(gStringVar4, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = task; + } +} + void ItemUseCB_ReduceEV(u8 taskId, TaskFunc task) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; @@ -5159,7 +5353,10 @@ static void CB2_ReturnToPartyMenuWhileLearningMove(void) { if (sFinalLevel != 0) SetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_LEVEL, &sFinalLevel); // to avoid displaying incorrect level - InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_MON, TRUE, PARTY_MSG_NONE, Task_ReturnToPartyMenuWhileLearningMove, gPartyMenu.exitCallback); + if (ItemId_GetFieldFunc(gSpecialVar_ItemId) == ItemUseOutOfBattle_RareCandy && gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD && CheckBagHasItem(gSpecialVar_ItemId, 1)) + InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_USE_ITEM, TRUE, PARTY_MSG_NONE, Task_ReturnToPartyMenuWhileLearningMove, gPartyMenu.exitCallback); + else + InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_MON, TRUE, PARTY_MSG_NONE, Task_ReturnToPartyMenuWhileLearningMove, gPartyMenu.exitCallback); } static void Task_ReturnToPartyMenuWhileLearningMove(u8 taskId) @@ -5257,7 +5454,7 @@ static void Task_TryLearningNextMoveAfterText(u8 taskId) Task_TryLearningNextMove(taskId); } -static void DisplayExpPoints(u8 taskId, TaskFunc task, u8 holdEffectParam) +static void UNUSED DisplayExpPoints(u8 taskId, TaskFunc task, u8 holdEffectParam) { PlaySE(SE_USE_ITEM); ConvertIntToDecimalStringN(gStringVar2, sExpCandyExperienceTable[holdEffectParam], STR_CONV_MODE_LEFT_ALIGN, 3); @@ -5390,7 +5587,7 @@ static void Task_DisplayLevelUpStatsPg2(u8 taskId) static void DisplayLevelUpStatsPg1(u8 taskId) { - s16 *arrayPtr = sPartyMenuInternal->data; + u16 *arrayPtr = (u16*) sPartyMenuInternal->data; arrayPtr[12] = CreateLevelUpStatsWindow(); DrawLevelUpWindowPg1(arrayPtr[12], arrayPtr, &arrayPtr[6], TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY); @@ -5400,7 +5597,7 @@ static void DisplayLevelUpStatsPg1(u8 taskId) static void DisplayLevelUpStatsPg2(u8 taskId) { - s16 *arrayPtr = sPartyMenuInternal->data; + u16 *arrayPtr = (u16*) sPartyMenuInternal->data; DrawLevelUpWindowPg2(arrayPtr[12], &arrayPtr[6], TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY); CopyWindowToVram(arrayPtr[12], COPYWIN_GFX); @@ -5469,6 +5666,12 @@ static void Task_TryLearningNextMove(u8 taskId) } } +static void CB2_ReturnToPartyMenuUsingRareCandy(void) +{ + gItemUseCB = ItemUseCB_RareCandy; + SetMainCallback2(CB2_ShowPartyMenuForItemUse); +} + static void PartyMenuTryEvolution(u8 taskId) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; @@ -5481,13 +5684,19 @@ static void PartyMenuTryEvolution(u8 taskId) if (targetSpecies != SPECIES_NONE) { FreePartyPointers(); - gCB2_AfterEvolution = gPartyMenu.exitCallback; + if (ItemId_GetFieldFunc(gSpecialVar_ItemId) == ItemUseOutOfBattle_RareCandy && gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD && CheckBagHasItem(gSpecialVar_ItemId, 1)) + gCB2_AfterEvolution = CB2_ReturnToPartyMenuUsingRareCandy; + else + gCB2_AfterEvolution = gPartyMenu.exitCallback; BeginEvolutionScene(mon, targetSpecies, TRUE, gPartyMenu.slotId); DestroyTask(taskId); } else { - gTasks[taskId].func = Task_ClosePartyMenuAfterText; + if (gPartyMenu.menuType == PARTY_MENU_TYPE_FIELD && CheckBagHasItem(gSpecialVar_ItemId, 1)) + gTasks[taskId].func = Task_ReturnToChooseMonAfterText; + else + gTasks[taskId].func = Task_ClosePartyMenuAfterText; } } @@ -5629,11 +5838,350 @@ void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc task) } } +#define FUSE_MON 1 +#define UNFUSE_MON 2 +#define SECOND_FUSE_MON 3 + #define tState data[0] #define tTargetSpecies data[1] #define tAnimWait data[2] #define tNextFunc 3 +#define fusionType data[7] +#define firstFusion data[8] +#define firstFusionSlot data[9] +#define fusionResult data[10] +#define secondFusionSlot data[11] +#define unfuseSecondMon data[12] +#define moveToLearn data[13] +#define forgetMove data[14] +#define storageIndex data[15] + +static void Task_TryItemUseFusionChange(u8 taskId); +static void SpriteCB_FormChangeIconMosaic(struct Sprite *sprite); + +u8 IsFusionMon(u16 species) +{ + u16 i; + const struct Fusion *itemFusion = gFusionTablePointers[species]; + if (itemFusion == NULL) + return FALSE; + for (i = 0; itemFusion[i].fusionStorageIndex != FUSION_TERMINATOR; i++) + { + if (itemFusion[i].fusingIntoMon == species) + return UNFUSE_MON; + else if (itemFusion[i].targetSpecies1 == species) + return FUSE_MON; + else if (itemFusion[i].targetSpecies2 == species) + return SECOND_FUSE_MON; + } + return FALSE; +} + +void FormChangeTeachMove(u8 taskId, u32 move, u32 slot) +{ + struct Pokemon *mon; + + gPartyMenu.data1 = move; + gPartyMenu.learnMoveState = 0; + + PlaySE(SE_SELECT); + mon = &gPlayerParty[slot]; + GetMonNickname(mon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[move]); + + if (GiveMoveToMon(mon, move) != MON_HAS_MAX_MOVES) + { + gTasks[taskId].func = Task_LearnedMove; + } + else + { + DisplayLearnMoveMessage(gText_PkmnNeedsToReplaceMove); + gTasks[taskId].func = Task_ReplaceMoveYesNo; + } +} + +void DeleteMove(struct Pokemon *mon, u32 move) +{ + struct BoxPokemon *boxMon = &mon->box; + u32 i, j; + + if (move != MOVE_NONE) + { + for (i = 0; i < MAX_MON_MOVES; i++) + { + u32 existingMove = GetBoxMonData(boxMon, MON_DATA_MOVE1 + i, NULL); + if (existingMove == move) + { + SetMonMoveSlot(mon, MOVE_NONE, i); + RemoveMonPPBonus(mon, i); + for (j = i; j < MAX_MON_MOVES - 1; j++) + ShiftMoveSlot(mon, j, j + 1); + break; + } + } + } +} + +bool32 DoesMonHaveAnyMoves(struct Pokemon *mon) +{ + struct BoxPokemon *boxMon = &mon->box; + u32 i; + + for (i = 0; i < MAX_MON_MOVES; i++) + { + u32 existingMove = GetBoxMonData(boxMon, MON_DATA_MOVE1 + i, NULL); + if (existingMove != MOVE_NONE) + return TRUE; + } + return FALSE; +} + +bool32 TryItemUseFusionChange(u8 taskId, TaskFunc task) +{ + u16 targetSpecies = gTasks[taskId].fusionResult; + s8 *slotPtr = GetCurrentPartySlotPtr(); + *slotPtr = gTasks[taskId].firstFusionSlot; + if (gTasks[taskId].fusionType == FUSE_MON) + AnimatePartySlot(gTasks[taskId].secondFusionSlot, 0); + AnimatePartySlot(*slotPtr, 1); + + if (targetSpecies != SPECIES_NONE) + { + gPartyMenuUseExitCallback = TRUE; + SetWordTaskArg(taskId, tNextFunc, (u32)task); + gTasks[taskId].func = Task_TryItemUseFusionChange; + gTasks[taskId].tState = 0; + gTasks[taskId].tTargetSpecies = targetSpecies; + gTasks[taskId].tAnimWait = 0; + return TRUE; + } + else + { + gPartyMenuUseExitCallback = FALSE; + PlaySE(SE_SELECT); + DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = task; + return FALSE; + } +} + +static void Task_TryItemUseFusionChange(u8 taskId) +{ + struct Pokemon *mon = &gPlayerParty[gTasks[taskId].firstFusionSlot]; + struct Sprite *icon = &gSprites[sPartyMenuBoxes[gTasks[taskId].firstFusionSlot].monSpriteId]; + struct Pokemon *mon2; + struct Sprite *icon2 = &gSprites[sPartyMenuBoxes[gTasks[taskId].secondFusionSlot].monSpriteId]; + u16 targetSpecies; + + switch (gTasks[taskId].tState) + { + case 0: + if (gTasks[taskId].fusionType == FUSE_MON) + { + mon2 = &gPlayerParty[gTasks[taskId].secondFusionSlot]; + CopyMon(&gPokemonStoragePtr->fusions[gTasks[taskId].storageIndex], mon2, sizeof(*mon2)); + ZeroMonData(&gPlayerParty[gTasks[taskId].secondFusionSlot]); + } + else + { + mon2 = &gPokemonStoragePtr->fusions[gTasks[taskId].storageIndex]; + GiveMonToPlayer(mon2); + ZeroMonData(&gPokemonStoragePtr->fusions[gTasks[taskId].storageIndex]); + } + targetSpecies = gTasks[taskId].tTargetSpecies; + SetMonData(mon, MON_DATA_SPECIES, &targetSpecies); + CalculateMonStats(mon); + CompactPartySlots(); + CalculatePlayerPartyCount(); + gTasks[taskId].tState++; + PlaySE(SE_M_TELEPORT); + break; + case 1: + targetSpecies = gTasks[taskId].tTargetSpecies; + if (gTasks[taskId].tAnimWait == 0) + { + icon->oam.mosaic = TRUE; + icon->data[0] = 10; + icon->data[1] = 1; + icon->data[2] = taskId; + icon->callback = SpriteCB_FormChangeIconMosaic; + SetGpuReg(REG_OFFSET_MOSAIC, (icon->data[0] << 12) | (icon->data[1] << 8)); + if (gTasks[taskId].fusionType == FUSE_MON) + { + icon2->oam.mosaic = TRUE; + icon2->data[0] = 10; + icon2->data[1] = 1; + icon2->data[2] = taskId; + icon2->callback = SpriteCB_FormChangeIconMosaic; + SetGpuReg(REG_OFFSET_MOSAIC, (icon2->data[0] << 12) | (icon2->data[1] << 8)); + } + } + + if (++gTasks[taskId].tAnimWait == 60) + { + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_WHITEALPHA); + gTasks[taskId].tState++; + } + break; + case 2: + if (gPaletteFade.active) + break; + if (gTasks[taskId].fusionType == FUSE_MON && gTasks[taskId].firstFusionSlot > gTasks[taskId].secondFusionSlot) + { + gTasks[taskId].firstFusionSlot--; + gPartyMenu.slotId--; + } + RefreshPartyMenu(); + gTasks[taskId].tState++; + break; + case 3: + BeginNormalPaletteFade(PALETTES_ALL, 16, 0, 0, RGB_WHITEALPHA); + gTasks[taskId].tState++; + break; + case 4: + targetSpecies = gTasks[taskId].tTargetSpecies; + PlayCry_Normal(targetSpecies, 0); + gTasks[taskId].tState++; + break; + case 5: + if (IsCryFinished()) + { + GetMonNickname(mon, gStringVar1); + StringExpandPlaceholders(gStringVar4, gText_PkmnTransformed); + DisplayPartyMenuMessage(gStringVar4, FALSE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].tState++; + } + break; + case 6: + if (!IsPartyMenuTextPrinterActive()) + { + if (gTasks[taskId].moveToLearn != 0) + { + if (gTasks[taskId].fusionType == FUSE_MON) + FormChangeTeachMove(taskId, gTasks[taskId].moveToLearn, gTasks[taskId].firstFusionSlot); + else + { + DeleteMove(mon, gTasks[taskId].forgetMove); + if (!DoesMonHaveAnyMoves(mon)) + FormChangeTeachMove(taskId, gTasks[taskId].moveToLearn, gTasks[taskId].firstFusionSlot); + } + } + gTasks[taskId].tState++; + } + break; + case 7: + gTasks[taskId].func = (void *)GetWordTaskArg(taskId, tNextFunc); + break; + } +} + +void ItemUseCB_Fusion(u8 taskId, TaskFunc taskFunc) +{ + u16 i; + struct Task *task = &gTasks[taskId]; + u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES); + const struct Fusion *itemFusion = gFusionTablePointers[species]; + + PlaySE(SE_SELECT); + switch (IsFusionMon(species)) + { + case FALSE: // Cancel if Not a Fuse Mon + break; + case UNFUSE_MON: + if (task->fusionType == FUSE_MON) // Cancel if An already Fused Mon Is Chosen For The Second Fusion Mon + break; + if (gPlayerPartyCount == PARTY_SIZE) + { + gPartyMenuUseExitCallback = FALSE; + DisplayPartyMenuMessage(gText_YourPartysFull, TRUE); + ScheduleBgCopyTilemapToVram(2); + task->func = taskFunc; + return; + } + for (i = 0; itemFusion[i].fusionStorageIndex != FUSION_TERMINATOR; i++) // Loops through fusion table and checks if the mon can be unfused + { + if (gPokemonStoragePtr->fusions[itemFusion[i].fusionStorageIndex].level == 0) + continue; + if (itemFusion[i].itemId == gSpecialVar_ItemId && GetMonData(&gPokemonStoragePtr->fusions[itemFusion[i].fusionStorageIndex], MON_DATA_SPECIES) == itemFusion[i].targetSpecies2) + { + task->fusionType = UNFUSE_MON; + task->firstFusion = species; + task->firstFusionSlot = gPartyMenu.slotId; + task->storageIndex = itemFusion[i].fusionStorageIndex; + task->fusionResult = itemFusion[i].targetSpecies1; + task->unfuseSecondMon = itemFusion[i].targetSpecies2; + task->moveToLearn = itemFusion[i].unfuseForgetMove; + task->forgetMove = itemFusion[i].fusionMove; + TryItemUseFusionChange(taskId, taskFunc); + return; + } + } + break; + case FUSE_MON: + if (task->fusionType == FUSE_MON) // Cancel If Second Mon is Another First Fusion Mon + break; + for (i = 0; itemFusion[i].fusionStorageIndex != FUSION_TERMINATOR; i++) // Run through the Fusion table for each species and check if the item matches one of the entries + { + if (itemFusion[i].itemId == gSpecialVar_ItemId) + { + task->fusionType = FUSE_MON; + task->firstFusion = species; + task->firstFusionSlot = gPartyMenu.slotId; + task->storageIndex = itemFusion[i].fusionStorageIndex; + task->func = Task_HandleChooseMonInput; + gPartyMenuUseExitCallback = FALSE; + sPartyMenuInternal->exitCallback = NULL; + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_SECOND_FUSION); + return; + } + } + break; + case SECOND_FUSE_MON: + if (task->fusionType != FUSE_MON) // Cancel if Secondary Fusion Mon Chosen First + break; + for (i = 0; itemFusion[i].fusionStorageIndex != FUSION_TERMINATOR; i++) // run through fusion table and check if the fusion works + { + if (gPokemonStoragePtr->fusions[itemFusion[i].fusionStorageIndex].level != 0) + continue; + if (itemFusion[i].itemId == gSpecialVar_ItemId && itemFusion[i].targetSpecies1 == task->firstFusion && itemFusion[i].targetSpecies2 == species) + { + task->storageIndex = itemFusion[i].fusionStorageIndex; + task->fusionResult = itemFusion[i].fusingIntoMon; + task->secondFusionSlot = gPartyMenu.slotId; + task->moveToLearn = itemFusion[i].fusionMove; + // Start Fusion + TryItemUseFusionChange(taskId, taskFunc); + return; + } + } + break; + } + // No Effect Exit + gPartyMenuUseExitCallback = FALSE; + DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); + ScheduleBgCopyTilemapToVram(2); + task->func = taskFunc; + return; +} + +#undef FUSE_MON +#undef UNFUSE_MON +#undef SECOND_FUSE_MON + +#undef fusionType +#undef firstFusion +#undef firstFusionSlot +#undef fusionResult +#undef secondFusionSlot +#undef unfuseSecondMon +#undef moveToLearn +#undef forgetMove +#undef storageIndex + static void SpriteCB_FormChangeIconMosaic(struct Sprite *sprite) { u8 taskId = sprite->data[2]; @@ -5715,8 +6263,24 @@ static void Task_TryItemUseFormChange(u8 taskId) break; case 6: if (!IsPartyMenuTextPrinterActive()) - gTasks[taskId].tState++; + { + if (gSpecialVar_ItemId == ITEM_ROTOM_CATALOG) //only for rotom currently + { + u32 i; + for (i = 0; i < ARRAY_COUNT(sRotomFormChangeMoves); i++) + DeleteMove(mon, sRotomFormChangeMoves[i]); + if (gSpecialVar_0x8000 == MOVE_THUNDER_SHOCK) + { + if (!DoesMonHaveAnyMoves(mon)) + FormChangeTeachMove(taskId, gSpecialVar_0x8000, gPartyMenu.slotId); + } + else + FormChangeTeachMove(taskId, gSpecialVar_0x8000, gPartyMenu.slotId); + } + + gTasks[taskId].tState++; + } break; case 7: gTasks[taskId].func = (void *)GetWordTaskArg(taskId, tNextFunc); @@ -5760,6 +6324,111 @@ void ItemUseCB_FormChange_ConsumedOnUse(u8 taskId, TaskFunc task) if (TryItemUseFormChange(taskId, task)) RemoveBagItem(gSpecialVar_ItemId, 1); } + +void ItemUseCB_RotomCatalog(u8 taskId, TaskFunc task) +{ + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + SetPartyMonSelectionActions(gPlayerParty, gPartyMenu.slotId, ACTIONS_ROTOM_CATALOG); + DisplaySelectionWindow(SELECTWINDOW_CATALOG); + DisplayPartyMenuStdMessage(PARTY_MSG_WHICH_APPLIANCE); + gTasks[taskId].data[0] = 0xFF; + gTasks[taskId].func = Task_HandleSelectionMenuInput; +} + +bool32 TryMultichoiceFormChange(u8 taskId) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + u32 targetSpecies = GetFormChangeTargetSpecies(mon, FORM_CHANGE_ITEM_USE_MULTICHOICE, gSpecialVar_ItemId); + + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + + if (targetSpecies != SPECIES_NONE) + { + gPartyMenuUseExitCallback = TRUE; + SetWordTaskArg(taskId, tNextFunc, (u32)Task_ClosePartyMenuAfterText); + gTasks[taskId].func = Task_TryItemUseFormChange; + gTasks[taskId].tState = 0; + gTasks[taskId].tTargetSpecies = targetSpecies; + gTasks[taskId].tAnimWait = 0; + return TRUE; + } + else + { + gPartyMenuUseExitCallback = FALSE; + PlaySE(SE_SELECT); + DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_ClosePartyMenuAfterText; + return FALSE; + } +} + +static void CursorCb_CatalogBulb(u8 taskId) +{ + gSpecialVar_Result = 0; + gSpecialVar_0x8000 = MOVE_THUNDER_SHOCK; + TryMultichoiceFormChange(taskId); +} + +static void CursorCb_CatalogOven(u8 taskId) +{ + gSpecialVar_Result = 1; + gSpecialVar_0x8000 = MOVE_OVERHEAT; + TryMultichoiceFormChange(taskId); +} + +static void CursorCb_CatalogWashing(u8 taskId) +{ + gSpecialVar_Result = 2; + gSpecialVar_0x8000 = MOVE_HYDRO_PUMP; + TryMultichoiceFormChange(taskId); +} + +static void CursorCb_CatalogFridge(u8 taskId) +{ + gSpecialVar_Result = 3; + gSpecialVar_0x8000 = MOVE_BLIZZARD; + TryMultichoiceFormChange(taskId); +} + +static void CursorCb_CatalogFan(u8 taskId) +{ + gSpecialVar_Result = 4; + gSpecialVar_0x8000 = MOVE_AIR_SLASH; + TryMultichoiceFormChange(taskId); +} + +static void CursorCb_CatalogMower(u8 taskId) +{ + gSpecialVar_Result = 5; + gSpecialVar_0x8000 = MOVE_LEAF_STORM; + TryMultichoiceFormChange(taskId); +} + +void ItemUseCB_ZygardeCube(u8 taskId, TaskFunc task) +{ + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + SetPartyMonSelectionActions(gPlayerParty, gPartyMenu.slotId, ACTIONS_ZYGARDE_CUBE); + DisplaySelectionWindow(SELECTWINDOW_ZYGARDECUBE); + gTasks[taskId].data[0] = 0xFF; + gTasks[taskId].func = Task_HandleSelectionMenuInput; +} + +static void CursorCb_ChangeForm(u8 taskId) +{ + gSpecialVar_Result = 0; + TryMultichoiceFormChange(taskId); +} + +static void CursorCb_ChangeAbility(u8 taskId) +{ + gSpecialVar_Result = 1; + TryMultichoiceFormChange(taskId); +} + void TryItemHoldFormChange(struct Pokemon *mon) { u16 targetSpecies = GetFormChangeTargetSpecies(mon, FORM_CHANGE_ITEM_HOLD, 0); @@ -6144,7 +6813,7 @@ static bool8 GetBattleEntryEligibility(struct Pokemon *mon) species = GetMonData(mon, MON_DATA_SPECIES); for (; gFrontierBannedSpecies[i] != 0xFFFF; i++) { - if (gFrontierBannedSpecies[i] == species) + if (gFrontierBannedSpecies[i] == GET_BASE_SPECIES_ID(species)) return FALSE; } return TRUE; @@ -6631,8 +7300,7 @@ static void UpdatePartyToFieldOrder(void) Free(partyBuffer); } -// Unused -static void SwitchAliveMonIntoLeadSlot(void) +static void UNUSED SwitchAliveMonIntoLeadSlot(void) { u8 i; struct Pokemon *mon; @@ -6734,8 +7402,7 @@ void ChooseMonForDaycare(void) InitPartyMenu(PARTY_MENU_TYPE_DAYCARE, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_MON, FALSE, PARTY_MSG_CHOOSE_MON_2, Task_HandleChooseMonInput, BufferMonSelection); } -// Unused -static void ChoosePartyMonByMenuType(u8 menuType) +static void UNUSED ChoosePartyMonByMenuType(u8 menuType) { gFieldCallback2 = CB2_FadeFromPartyMenu; InitPartyMenu(menuType, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_AND_CLOSE, FALSE, PARTY_MSG_CHOOSE_MON, Task_HandleChooseMonInput, CB2_ReturnToField); diff --git a/src/player_pc.c b/src/player_pc.c index f53e08f532..a10cb2ac2b 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -191,10 +191,10 @@ static const u8 *const sItemStorage_OptionDescriptions[] = static const struct MenuAction sPlayerPCMenuActions[] = { - [MENU_ITEMSTORAGE] = { gText_ItemStorage, PlayerPC_ItemStorage }, - [MENU_MAILBOX] = { gText_Mailbox, PlayerPC_Mailbox }, - [MENU_DECORATION] = { gText_Decoration, PlayerPC_Decoration }, - [MENU_TURNOFF] = { gText_TurnOff, PlayerPC_TurnOff } + [MENU_ITEMSTORAGE] = { gText_ItemStorage, {PlayerPC_ItemStorage} }, + [MENU_MAILBOX] = { gText_Mailbox, {PlayerPC_Mailbox} }, + [MENU_DECORATION] = { gText_Decoration, {PlayerPC_Decoration} }, + [MENU_TURNOFF] = { gText_TurnOff, {PlayerPC_TurnOff} } }; static const u8 sBedroomPC_OptionOrder[] = @@ -216,13 +216,13 @@ static const u8 sPlayerPC_OptionOrder[] = static const struct MenuAction sItemStorage_MenuActions[] = { - [MENU_WITHDRAW] = { gText_WithdrawItem, ItemStorage_Withdraw }, - [MENU_DEPOSIT] = { gText_DepositItem, ItemStorage_Deposit }, - [MENU_TOSS] = { gText_TossItem, ItemStorage_Toss }, - [MENU_EXIT] = { gText_Cancel, ItemStorage_Exit } + [MENU_WITHDRAW] = { gText_WithdrawItem, {ItemStorage_Withdraw} }, + [MENU_DEPOSIT] = { gText_DepositItem, {ItemStorage_Deposit} }, + [MENU_TOSS] = { gText_TossItem, {ItemStorage_Toss} }, + [MENU_EXIT] = { gText_Cancel, {ItemStorage_Exit} } }; -static const struct ItemSlot sNewGamePCItems[] = +static const u16 sNewGamePCItems[][2] = { { ITEM_POTION, 1 }, { ITEM_NONE, 0 } @@ -230,10 +230,10 @@ static const struct ItemSlot sNewGamePCItems[] = const struct MenuAction gMailboxMailOptions[] = { - { gText_Read, Mailbox_DoMailRead }, - { gText_MoveToBag, Mailbox_MoveToBag }, - { gText_Give2, Mailbox_Give }, - { gText_Cancel2, Mailbox_Cancel } + { gText_Read, {Mailbox_DoMailRead} }, + { gText_MoveToBag, {Mailbox_MoveToBag} }, + { gText_Give2, {Mailbox_Give} }, + { gText_Cancel2, {Mailbox_Cancel} } }; static const struct WindowTemplate sWindowTemplates_MainMenus[] = @@ -355,16 +355,20 @@ static const struct WindowTemplate sWindowTemplates_ItemStorage[ITEMPC_WIN_COUNT static const u8 sSwapArrowTextColors[] = {TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY, TEXT_COLOR_DARK_GRAY}; -// Macro below is likely a fakematch, equivalent to sNewGamePCItems[i].quantity -#define GET_QUANTITY(i) ((u16)((u16 *)sNewGamePCItems + 1)[i * 2]) void NewGameInitPCItems(void) { u8 i = 0; ClearItemSlots(gSaveBlock1Ptr->pcItems, PC_ITEMS_COUNT); - for(; sNewGamePCItems[i].itemId != ITEM_NONE && GET_QUANTITY(i) && - AddPCItem(sNewGamePCItems[i].itemId, GET_QUANTITY(i)) == TRUE; i++); + + while (TRUE) + { + if (sNewGamePCItems[i][0] == ITEM_NONE || sNewGamePCItems[i][1] == 0) + break; + if (AddPCItem(sNewGamePCItems[i][0], sNewGamePCItems[i][1]) != TRUE) + break; + i++; + } } -#undef GET_QUANTITY void BedroomPC(void) { @@ -388,7 +392,7 @@ void PlayerPC(void) static void InitPlayerPCMenu(u8 taskId) { - u16 *data; + s16 *data; struct WindowTemplate windowTemplate; data = gTasks[taskId].data; @@ -408,7 +412,7 @@ static void InitPlayerPCMenu(u8 taskId) static void PlayerPCProcessMenuInput(u8 taskId) { - u16 *data; + s16 *data; s8 inputOptionId; data = gTasks[taskId].data; @@ -503,7 +507,7 @@ static void PlayerPC_TurnOff(u8 taskId) static void InitItemStorageMenu(u8 taskId, u8 var) { - u16 *data; + s16 *data; struct WindowTemplate windowTemplate; data = gTasks[taskId].data; @@ -621,7 +625,7 @@ static void ItemStorage_Toss(u8 taskId) static void ItemStorage_Enter(u8 taskId, bool8 toss) { - u16 *data = gTasks[taskId].data; + s16 *data = gTasks[taskId].data; tInTossMenu = toss; ItemStorage_EraseMainMenu(taskId); @@ -654,7 +658,7 @@ static void SetPlayerPCListCount(u8 taskId) static void ItemStorage_EraseMainMenu(u8 taskId) { - u16 *data = gTasks[taskId].data; + s16 *data = gTasks[taskId].data; ClearStdWindowAndFrameToTransparent(tWindowId, FALSE); ClearWindowTilemap(tWindowId); RemoveWindow(tWindowId); @@ -700,7 +704,7 @@ static void Mailbox_DrawMailboxMenu(u8 taskId) static void Mailbox_ProcessInput(u8 taskId) { - u16 *data = gTasks[taskId].data; + s16 *data = gTasks[taskId].data; if (!gPaletteFade.active) { @@ -1488,7 +1492,6 @@ static void ItemStorage_HandleRemoveItem(u8 taskId) static void ItemStorage_HandleErrorMessageInput(u8 taskId) { - s16 *data = gTasks[taskId].data; if (JOY_NEW(A_BUTTON | B_BUTTON)) { ItemStorage_PrintMessage(ItemStorage_GetMessage(gSaveBlock1Ptr->pcItems[gPlayerPCItemPageInfo.itemsAbove + gPlayerPCItemPageInfo.cursorPos].itemId)); diff --git a/src/pokeball.c b/src/pokeball.c index 891b8fe4a5..0ed34b48ad 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -1418,7 +1418,7 @@ static void SpriteCB_TradePokeballEnd(struct Sprite *sprite) #undef sTimer // Unreferenced here and in RS, but used in FRLG, possibly by mistake. -static void DestroySpriteAndFreeResources_Ball(struct Sprite *sprite) +static void UNUSED DestroySpriteAndFreeResources_Ball(struct Sprite *sprite) { DestroySpriteAndFreeResources(sprite); } diff --git a/src/pokeblock.c b/src/pokeblock.c index e490f372c4..e01e821f7e 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -215,12 +215,12 @@ const u8 *const gPokeblockNames[] = static const struct MenuAction sPokeblockMenuActions[] = { - [PKBL_USE_ON_FIELD] = {gMenuText_Use, PokeblockAction_UseOnField}, - [PKBL_TOSS] = {gMenuText_Toss, PokeblockAction_Toss}, - [PKBL_CANCEL] = {gText_Cancel2, PokeblockAction_Cancel}, - [PKBL_USE_IN_BATTLE] = {gMenuText_Use, PokeblockAction_UseInBattle}, - [PKBL_USE_ON_FEEDER] = {gMenuText_Use, PokeblockAction_UseOnPokeblockFeeder}, - [PKBL_GIVE_TO_LADY] = {gMenuText_Give2, PokeblockAction_GiveToContestLady}, + [PKBL_USE_ON_FIELD] = {gMenuText_Use, {PokeblockAction_UseOnField}}, + [PKBL_TOSS] = {gMenuText_Toss, {PokeblockAction_Toss}}, + [PKBL_CANCEL] = {gText_Cancel2, {PokeblockAction_Cancel}}, + [PKBL_USE_IN_BATTLE] = {gMenuText_Use, {PokeblockAction_UseInBattle}}, + [PKBL_USE_ON_FEEDER] = {gMenuText_Use, {PokeblockAction_UseOnPokeblockFeeder}}, + [PKBL_GIVE_TO_LADY] = {gMenuText_Give2, {PokeblockAction_GiveToContestLady}}, }; static const u8 sActionsOnField[] = {PKBL_USE_ON_FIELD, PKBL_TOSS, PKBL_CANCEL}; diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c index 7b61eec478..c7ef8c9e90 100644 --- a/src/pokeblock_feed.c +++ b/src/pokeblock_feed.c @@ -719,7 +719,6 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon) { u16 species; u32 personality, trainerId; - const struct CompressedSpritePalette *palette; switch (sPokeblockFeed->loadGfxState) { @@ -735,10 +734,8 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon) species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG); personality = GetMonData(mon, MON_DATA_PERSONALITY); trainerId = GetMonData(mon, MON_DATA_OT_ID); - palette = GetMonSpritePalStructFromOtIdPersonality(species, trainerId, personality); - - LoadCompressedSpritePalette(palette); - SetMultiuseSpriteTemplateToPokemon(palette->tag, B_POSITION_OPPONENT_LEFT); + LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), species); + SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_OPPONENT_LEFT); sPokeblockFeed->loadGfxState++; break; case 2: diff --git a/src/pokedex.c b/src/pokedex.c index 6494c58f52..33b7dd02dd 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -16,6 +16,7 @@ #include "pokedex.h" #include "pokedex_area_screen.h" #include "pokedex_cry_screen.h" +#include "pokedex_plus_hgss.h" #include "scanline_effect.h" #include "sound.h" #include "sprite.h" @@ -279,6 +280,10 @@ static void ResetOtherVideoRegisters(u16); static u8 PrintCryScreenSpeciesName(u8, u16, u8, u8); static void PrintDecimalNum(u8 windowId, u16 num, u8 left, u8 top); static void DrawFootprint(u8 windowId, u16 dexNum); +static u16 GetPokemonScaleFromNationalDexNumber(u16 nationalNum); +static u16 GetPokemonOffsetFromNationalDexNumber(u16 nationalNum); +static u16 GetTrainerScaleFromNationalDexNumber(u16 nationalNum); +static u16 GetTrainerOffsetFromNationalDexNumber(u16 nationalNum); static u16 CreateSizeScreenTrainerPic(u16, s16, s16, s8); static u16 GetNextPosition(u8, u16, u16, u16); static u8 LoadSearchMenu(void); @@ -844,15 +849,13 @@ static const struct WindowTemplate sPokemonList_WindowTemplate[] = DUMMY_WIN_TEMPLATE }; +static const u8 sText_No0000[] = _("{NO}0000"); static const u8 sText_No000[] = _("{NO}000"); static const u8 sCaughtBall_Gfx[] = INCBIN_U8("graphics/pokedex/caught_ball.4bpp"); static const u8 sText_TenDashes[] = _("----------"); ALIGNED(4) static const u8 sExpandedPlaceholder_PokedexDescription[] = _(""); -#include "data/pokemon/pokedex_text.h" -#include "data/pokemon/pokedex_entries.h" - static const u16 sSizeScreenSilhouette_Pal[] = INCBIN_U16("graphics/pokedex/size_silhouette.gbapal"); static const struct BgTemplate sInfoScreen_BgTemplate[] = @@ -989,8 +992,6 @@ static const struct WindowTemplate sNewEntryInfoScreen_WindowTemplates[] = static const u8 sText_TenDashes2[] = _("----------"); -#include "data/pokemon_graphics/footprint_table.h" - // First character in range followed by number of characters in range for upper and lowercase static const u8 sLetterSearchRanges[][4] = { @@ -1590,6 +1591,12 @@ static void ResetPokedexView(struct PokedexView *pokedexView) void CB2_OpenPokedex(void) { + if (POKEDEX_PLUS_HGSS) + { + CB2_OpenPokedexPlusHGSS(); + return; + } + switch (gMain.state) { case 0: @@ -2420,16 +2427,22 @@ static void CreateMonListEntry(u8 position, u16 b, u16 ignored) static void CreateMonDexNum(u16 entryNum, u8 left, u8 top, u16 unused) { - u8 text[6]; - u16 dexNum; + u8 text[7]; + u16 dexNum, offset = 2; - memcpy(text, sText_No000, ARRAY_COUNT(text)); dexNum = sPokedexView->pokedexList[entryNum].dexNum; if (sPokedexView->dexMode == DEX_MODE_HOENN) dexNum = NationalToHoennOrder(dexNum); - text[2] = CHAR_0 + dexNum / 100; - text[3] = CHAR_0 + (dexNum % 100) / 10; - text[4] = CHAR_0 + (dexNum % 100) % 10; + memcpy(text, sText_No0000, ARRAY_COUNT(sText_No0000)); + if (NATIONAL_DEX_COUNT > 999 && sPokedexView->dexMode != DEX_MODE_HOENN) + { + text[2] = CHAR_0 + dexNum / 1000; + offset++; + } + text[offset++] = CHAR_0 + (dexNum % 1000) / 100; + text[offset++] = CHAR_0 + ((dexNum % 1000) % 100) / 10; + text[offset++] = CHAR_0 + ((dexNum % 1000) % 100) % 10; + text[offset++] = EOS; PrintMonDexNumAndName(0, FONT_NARROW, text, left, top); } @@ -2867,6 +2880,12 @@ static void CreateInterfaceSprites(u8 page) else { u16 seenOwnedCount; + // Changes sprite distance based on the seen count (owned count can't ever be bigger than it) + u8 counterXDist = 7; + u8 counterX1s = sPokedexView->seenCount > 999 ? 57 : 56; + u8 counterX10s = counterX1s - counterXDist; + u8 counterX100s = counterX10s - counterXDist; + u8 counterX1000s = counterX100s - counterXDist; // Seen text CreateSprite(&sSeenOwnTextSpriteTemplate, 32, 40, 1); @@ -2891,7 +2910,7 @@ static void CreateInterfaceSprites(u8 page) // Hoenn seen value - 100s seenOwnedCount = GetHoennPokedexCount(FLAG_GET_SEEN); drawNextDigit = FALSE; - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 40, 45, 1); + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX100s, 45, 1); digitNum = seenOwnedCount / 100; StartSpriteAnim(&gSprites[spriteId], digitNum); if (digitNum != 0) @@ -2900,7 +2919,7 @@ static void CreateInterfaceSprites(u8 page) gSprites[spriteId].invisible = TRUE; // Hoenn seen value - 10s - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 48, 45, 1); + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX10s, 45, 1); digitNum = (seenOwnedCount % 100) / 10; if (digitNum != 0 || drawNextDigit) StartSpriteAnim(&gSprites[spriteId], digitNum); @@ -2908,38 +2927,49 @@ static void CreateInterfaceSprites(u8 page) gSprites[spriteId].invisible = TRUE; // Hoenn seen value - 1s - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 56, 45, 1); + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1s, 45, 1); digitNum = (seenOwnedCount % 100) % 10; StartSpriteAnim(&gSprites[spriteId], digitNum); - // National seen value - 100s + // National seen value - 1000s drawNextDigit = FALSE; - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 40, 55, 1); - digitNum = sPokedexView->seenCount / 100; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1000s, 55, 1); + digitNum = sPokedexView->seenCount / 1000; StartSpriteAnim(&gSprites[spriteId], digitNum); if (digitNum != 0) drawNextDigit = TRUE; else gSprites[spriteId].invisible = TRUE; + // National seen value - 100s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX100s, 55, 1); + digitNum = (sPokedexView->seenCount % 1000) / 100; + if (digitNum != 0 || drawNextDigit) + { + drawNextDigit = TRUE; + StartSpriteAnim(&gSprites[spriteId], digitNum); + } + else + gSprites[spriteId].invisible = TRUE; + // National seen value - 10s - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 48, 55, 1); - digitNum = (sPokedexView->seenCount % 100) / 10; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX10s, 55, 1); + digitNum = ((sPokedexView->seenCount % 1000) % 100) / 10; if (digitNum != 0 || drawNextDigit) StartSpriteAnim(&gSprites[spriteId], digitNum); else gSprites[spriteId].invisible = TRUE; // National seen value - 1s - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 56, 55, 1); - digitNum = (sPokedexView->seenCount % 100) % 10; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1s, 55, 1); + digitNum = ((sPokedexView->seenCount % 1000) % 100) % 10; StartSpriteAnim(&gSprites[spriteId], digitNum); seenOwnedCount = GetHoennPokedexCount(FLAG_GET_CAUGHT); // Hoenn owned value - 100s drawNextDigit = FALSE; - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 40, 81, 1); + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX100s, 81, 1); digitNum = seenOwnedCount / 100; StartSpriteAnim(&gSprites[spriteId], digitNum); if (digitNum != 0) @@ -2948,7 +2978,7 @@ static void CreateInterfaceSprites(u8 page) gSprites[spriteId].invisible = TRUE; // Hoenn owned value - 10s - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 48, 81, 1); + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX10s, 81, 1); digitNum = (seenOwnedCount % 100) / 10; if (digitNum != 0 || drawNextDigit) StartSpriteAnim(&gSprites[spriteId], digitNum); @@ -2956,31 +2986,42 @@ static void CreateInterfaceSprites(u8 page) gSprites[spriteId].invisible = TRUE; // Hoenn owned value - 1s - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 56, 81, 1); + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1s, 81, 1); digitNum = (seenOwnedCount % 100) % 10; StartSpriteAnim(&gSprites[spriteId], digitNum); - // National owned value - 100s + // National owned value - 1000s drawNextDigit = FALSE; - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 40, 91, 1); - digitNum = sPokedexView->ownCount / 100; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1000s, 91, 1); + digitNum = sPokedexView->ownCount / 1000; StartSpriteAnim(&gSprites[spriteId], digitNum); if (digitNum != 0) drawNextDigit = TRUE; else gSprites[spriteId].invisible = TRUE; + // National owned value - 100s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX100s, 91, 1); + digitNum = (sPokedexView->ownCount % 1000) / 100; + if (digitNum != 0 || drawNextDigit) + { + drawNextDigit = TRUE; + StartSpriteAnim(&gSprites[spriteId], digitNum); + } + else + gSprites[spriteId].invisible = TRUE; + // National owned value - 10s - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 48, 91, 1); - digitNum = (sPokedexView->ownCount % 100) / 10; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX10s, 91, 1); + digitNum = ((sPokedexView->ownCount % 1000) % 100) / 10; if (digitNum != 0 || drawNextDigit) StartSpriteAnim(&gSprites[spriteId], digitNum); else gSprites[spriteId].invisible = TRUE; // National owned value - 1s - spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, 56, 91, 1); - digitNum = (sPokedexView->ownCount % 100) % 10; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1s, 91, 1); + digitNum = ((sPokedexView->ownCount % 1000) % 100) % 10; StartSpriteAnim(&gSprites[spriteId], digitNum); } spriteId = CreateSprite(&sDexListStartMenuCursorSpriteTemplate, 136, 96, 1); @@ -3768,8 +3809,8 @@ static void Task_LoadSizeScreen(u8 taskId) gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; gSprites[spriteId].oam.matrixNum = 1; gSprites[spriteId].oam.priority = 0; - gSprites[spriteId].y2 = gPokedexEntries[sPokedexListItem->dexNum].trainerOffset; - SetOamMatrix(1, gPokedexEntries[sPokedexListItem->dexNum].trainerScale, 0, 0, gPokedexEntries[sPokedexListItem->dexNum].trainerScale); + gSprites[spriteId].y2 = GetTrainerOffsetFromNationalDexNumber(sPokedexListItem->dexNum); + SetOamMatrix(1, GetTrainerScaleFromNationalDexNumber(sPokedexListItem->dexNum), 0, 0, GetTrainerScaleFromNationalDexNumber(sPokedexListItem->dexNum)); LoadPalette(sSizeScreenSilhouette_Pal, OBJ_PLTT_ID2(gSprites[spriteId].oam.paletteNum), PLTT_SIZE_4BPP); gTasks[taskId].tTrainerSpriteId = spriteId; gMain.state++; @@ -3779,8 +3820,8 @@ static void Task_LoadSizeScreen(u8 taskId) gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; gSprites[spriteId].oam.matrixNum = 2; gSprites[spriteId].oam.priority = 0; - gSprites[spriteId].y2 = gPokedexEntries[sPokedexListItem->dexNum].pokemonOffset; - SetOamMatrix(2, gPokedexEntries[sPokedexListItem->dexNum].pokemonScale, 0, 0, gPokedexEntries[sPokedexListItem->dexNum].pokemonScale); + gSprites[spriteId].y2 = GetPokemonOffsetFromNationalDexNumber(sPokedexListItem->dexNum); + SetOamMatrix(2, GetPokemonScaleFromNationalDexNumber(sPokedexListItem->dexNum), 0, 0, GetPokemonScaleFromNationalDexNumber(sPokedexListItem->dexNum)); LoadPalette(sSizeScreenSilhouette_Pal, OBJ_PLTT_ID2(gSprites[spriteId].oam.paletteNum), PLTT_SIZE_4BPP); gTasks[taskId].tMonSpriteId = spriteId; CopyWindowToVram(WIN_INFO, COPYWIN_FULL); @@ -3927,7 +3968,7 @@ static void HighlightSubmenuScreenSelectBarItem(u8 a, u16 b) } #define tState data[0] -#define tDexNum data[1] +#define tSpecies data[1] #define tPalTimer data[2] #define tMonSpriteId data[3] #define tOtIdLo data[12] @@ -3935,12 +3976,16 @@ static void HighlightSubmenuScreenSelectBarItem(u8 a, u16 b) #define tPersonalityLo data[14] #define tPersonalityHi data[15] -u8 DisplayCaughtMonDexPage(u16 dexNum, u32 otId, u32 personality) +u8 DisplayCaughtMonDexPage(u16 species, u32 otId, u32 personality) { - u8 taskId = CreateTask(Task_DisplayCaughtMonDexPage, 0); + u8 taskId = 0; + if (POKEDEX_PLUS_HGSS) + taskId = CreateTask(Task_DisplayCaughtMonDexPageHGSS, 0); + else + taskId = CreateTask(Task_DisplayCaughtMonDexPage, 0); gTasks[taskId].tState = 0; - gTasks[taskId].tDexNum = dexNum; + gTasks[taskId].tSpecies = species; gTasks[taskId].tOtIdLo = otId; gTasks[taskId].tOtIdHi = otId >> 16; gTasks[taskId].tPersonalityLo = personality; @@ -3951,7 +3996,7 @@ u8 DisplayCaughtMonDexPage(u16 dexNum, u32 otId, u32 personality) static void Task_DisplayCaughtMonDexPage(u8 taskId) { u8 spriteId; - u16 dexNum = gTasks[taskId].tDexNum; + u16 dexNum = SpeciesToNationalPokedexNum(gTasks[taskId].tSpecies); switch (gTasks[taskId].tState) { @@ -3977,7 +4022,7 @@ static void Task_DisplayCaughtMonDexPage(u8 taskId) FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0)); PutWindowTilemap(WIN_INFO); PutWindowTilemap(WIN_FOOTPRINT); - DrawFootprint(WIN_FOOTPRINT, gTasks[taskId].tDexNum); + DrawFootprint(WIN_FOOTPRINT, dexNum); CopyWindowToVram(WIN_FOOTPRINT, COPYWIN_GFX); ResetPaletteFade(); LoadPokedexBgPalette(FALSE); @@ -4044,7 +4089,6 @@ static void Task_ExitCaughtMonPage(u8 taskId) { if (!gPaletteFade.active) { - u16 species; u32 otId; u32 personality; u8 paletteNum; @@ -4060,11 +4104,10 @@ static void Task_ExitCaughtMonPage(u8 taskId) if (buffer) Free(buffer); - species = NationalPokedexNumToSpecies(gTasks[taskId].tDexNum); otId = ((u16)gTasks[taskId].tOtIdHi << 16) | (u16)gTasks[taskId].tOtIdLo; personality = ((u16)gTasks[taskId].tPersonalityHi << 16) | (u16)gTasks[taskId].tPersonalityLo; paletteNum = gSprites[gTasks[taskId].tMonSpriteId].oam.paletteNum; - lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality); + lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(gTasks[taskId].tSpecies, otId, personality); LoadCompressedPalette(lzPaletteData, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); DestroyTask(taskId); } @@ -4084,7 +4127,7 @@ static void SpriteCB_SlideCaughtMonToCenter(struct Sprite *sprite) } #undef tState -#undef tDexNum +#undef tSpecies #undef tPalTimer #undef tMonSpriteId #undef tOtIdLo @@ -4097,10 +4140,11 @@ static void PrintMonInfo(u32 num, u32 value, u32 owned, u32 newEntry) { u8 str[0x10]; u8 str2[0x30]; - u16 natNum; + u16 species; const u8 *name; const u8 *category; const u8 *description; + u8 digitCount = (NATIONAL_DEX_COUNT > 999 && IsNationalPokedexEnabled()) ? 4 : 3; if (newEntry) PrintInfoScreenText(gText_PokedexRegistration, GetStringCenterAlignXOffset(FONT_NORMAL, gText_PokedexRegistration, DISPLAY_WIDTH), 0); @@ -4108,17 +4152,19 @@ static void PrintMonInfo(u32 num, u32 value, u32 owned, u32 newEntry) value = NationalToHoennOrder(num); else value = num; - ConvertIntToDecimalStringN(StringCopy(str, gText_NumberClear01), value, STR_CONV_MODE_LEADING_ZEROS, 3); + + ConvertIntToDecimalStringN(StringCopy(str, gText_NumberClear01), value, STR_CONV_MODE_LEADING_ZEROS, digitCount); PrintInfoScreenText(str, 0x60, 0x19); - natNum = NationalPokedexNumToSpecies(num); - if (natNum) - name = GetSpeciesName(natNum); + species = NationalPokedexNumToSpecies(num); + if (species) + name = GetSpeciesName(species); else name = sText_TenDashes2; - PrintInfoScreenText(name, 0x84, 0x19); + PrintInfoScreenText(name, 114 + (6 * digitCount), 0x19); + if (owned) { - CopyMonCategoryText(num, str2); + CopyMonCategoryText(species, str2); category = str2; } else @@ -4130,8 +4176,8 @@ static void PrintMonInfo(u32 num, u32 value, u32 owned, u32 newEntry) PrintInfoScreenText(gText_WTWeight, 0x60, 0x49); if (owned) { - PrintMonHeight(gPokedexEntries[num].height, 0x81, 0x39); - PrintMonWeight(gPokedexEntries[num].weight, 0x81, 0x49); + PrintMonHeight(GetSpeciesHeight(species), 0x81, 0x39); + PrintMonWeight(GetSpeciesWeight(species), 0x81, 0x49); } else { @@ -4139,7 +4185,7 @@ static void PrintMonInfo(u32 num, u32 value, u32 owned, u32 newEntry) PrintInfoScreenText(gText_UnkWeight, 0x81, 0x49); } if (owned) - description = gPokedexEntries[num].description; + description = GetSpeciesPokedexDescription(species); else description = sExpandedPlaceholder_PokedexDescription; PrintInfoScreenText(description, GetStringCenterAlignXOffset(FONT_NORMAL, description, DISPLAY_WIDTH), 95); @@ -4236,24 +4282,6 @@ static void PrintMonWeight(u16 weight, u8 left, u8 top) PrintInfoScreenText(buffer, left, top); } -const u8 *GetPokedexCategoryName(u16 dexNum) // unused -{ - return gPokedexEntries[dexNum].categoryName; -} - -u16 GetPokedexHeightWeight(u16 dexNum, u8 data) -{ - switch (data) - { - case 0: // height - return gPokedexEntries[dexNum].height; - case 1: // weight - return gPokedexEntries[dexNum].weight; - default: - return 1; - } -} - s8 GetSetPokedexFlag(u16 nationalDexNo, u8 caseID) { u32 index, bit, mask; @@ -4381,7 +4409,7 @@ bool16 HasAllMons(void) for (i = 1; i < NATIONAL_DEX_COUNT + 1; i++) { - if (!(gSpeciesInfo[i].flags & SPECIES_FLAG_MYTHICAL) && !GetSetPokedexFlag(i, FLAG_GET_CAUGHT)) + if (!(gSpeciesInfo[i].isMythical) && !GetSetPokedexFlag(i, FLAG_GET_CAUGHT)) return FALSE; } @@ -4437,7 +4465,7 @@ static void PrintInfoSubMenuText(u8 windowId, const u8 *str, u8 left, u8 top) AddTextPrinterParameterized4(windowId, FONT_NORMAL, left, top, 0, 0, color, TEXT_SKIP_DRAW, str); } -static void UnusedPrintNum(u8 windowId, u16 num, u8 left, u8 top) +static void UNUSED UnusedPrintNum(u8 windowId, u16 num, u8 left, u8 top) { u8 str[4]; @@ -4471,7 +4499,7 @@ static u8 PrintCryScreenSpeciesName(u8 windowId, u16 num, u8 left, u8 top) return i; } -static void UnusedPrintMonName(u8 windowId, const u8 *name, u8 left, u8 top) +static void UNUSED UnusedPrintMonName(u8 windowId, const u8 *name, u8 left, u8 top) { u8 str[POKEMON_NAME_LENGTH + 1]; u8 i; @@ -4492,7 +4520,7 @@ static void UnusedPrintMonName(u8 windowId, const u8 *name, u8 left, u8 top) } // Unused in the English version, used to print height/weight in versions which use metric system. -static void PrintDecimalNum(u8 windowId, u16 num, u8 left, u8 top) +static void UNUSED PrintDecimalNum(u8 windowId, u16 num, u8 left, u8 top) { u8 str[6]; bool8 outputted = FALSE; @@ -4538,7 +4566,7 @@ static void PrintDecimalNum(u8 windowId, u16 num, u8 left, u8 top) static void DrawFootprint(u8 windowId, u16 dexNum) { u8 ALIGNED(4) footprint4bpp[TILE_SIZE_4BPP * NUM_FOOTPRINT_TILES]; - const u8 *footprintGfx = gMonFootprintTable[NationalPokedexNumToSpecies(dexNum)]; + const u8 *footprintGfx = gSpeciesInfo[NationalPokedexNumToSpecies(dexNum)].footprint; u32 i, j, tileIdx = 0; if (footprintGfx != NULL) @@ -4569,8 +4597,8 @@ static void DrawFootprint(u8 windowId, u16 dexNum) CopyToWindowPixelBuffer(windowId, footprint4bpp, sizeof(footprint4bpp), 0); } -// Unused Ruby/Sapphire function. -static void RS_DrawFootprint(u16 offset, u16 tileNum) +// Ruby/Sapphire function. +static void UNUSED RS_DrawFootprint(u16 offset, u16 tileNum) { *(u16 *)(VRAM + offset * 0x800 + 0x232) = 0xF000 + tileNum + 0; *(u16 *)(VRAM + offset * 0x800 + 0x234) = 0xF000 + tileNum + 1; @@ -4629,6 +4657,30 @@ u16 CreateMonSpriteFromNationalDexNumber(u16 nationalNum, s16 x, s16 y, u16 pale return CreateMonPicSprite(nationalNum, SHINY_ODDS, GetPokedexMonPersonality(nationalNum), TRUE, x, y, paletteSlot, TAG_NONE); } +static u16 GetPokemonScaleFromNationalDexNumber(u16 nationalNum) +{ + nationalNum = NationalPokedexNumToSpecies(nationalNum); + return gSpeciesInfo[nationalNum].pokemonScale; +} + +static u16 GetPokemonOffsetFromNationalDexNumber(u16 nationalNum) +{ + nationalNum = NationalPokedexNumToSpecies(nationalNum); + return gSpeciesInfo[nationalNum].pokemonOffset; +} + +static u16 GetTrainerScaleFromNationalDexNumber(u16 nationalNum) +{ + nationalNum = NationalPokedexNumToSpecies(nationalNum); + return gSpeciesInfo[nationalNum].trainerScale; +} + +static u16 GetTrainerOffsetFromNationalDexNumber(u16 nationalNum) +{ + nationalNum = NationalPokedexNumToSpecies(nationalNum); + return gSpeciesInfo[nationalNum].trainerOffset; +} + static u16 CreateSizeScreenTrainerPic(u16 species, s16 x, s16 y, s8 paletteSlot) { return CreateTrainerPicSprite(species, TRUE, x, y, paletteSlot, TAG_NONE); @@ -5093,8 +5145,8 @@ static void Task_SearchCompleteWaitForInput(u8 taskId) static void Task_SelectSearchMenuItem(u8 taskId) { u8 menuItem; - u16 *cursorPos; - u16 *scrollOffset; + s16 *cursorPos; + s16 *scrollOffset; DrawOrEraseSearchParameterBox(FALSE); menuItem = gTasks[taskId].tMenuItem; @@ -5114,8 +5166,8 @@ static void Task_HandleSearchParameterInput(u8 taskId) { u8 menuItem; const struct SearchOptionText *texts; - u16 *cursorPos; - u16 *scrollOffset; + s16 *cursorPos; + s16 *scrollOffset; u16 maxOption; bool8 moved; @@ -5432,8 +5484,8 @@ static void DrawOrEraseSearchParameterBox(bool8 erase) static void PrintSearchParameterText(u8 taskId) { const struct SearchOptionText *texts = sSearchOptions[gTasks[taskId].tMenuItem].texts; - const u16 *cursorPos = &gTasks[taskId].data[sSearchOptions[gTasks[taskId].tMenuItem].taskDataCursorPos]; - const u16 *scrollOffset = &gTasks[taskId].data[sSearchOptions[gTasks[taskId].tMenuItem].taskDataScrollOffset]; + const s16 *cursorPos = &gTasks[taskId].data[sSearchOptions[gTasks[taskId].tMenuItem].taskDataCursorPos]; + const s16 *scrollOffset = &gTasks[taskId].data[sSearchOptions[gTasks[taskId].tMenuItem].taskDataScrollOffset]; u16 i; u16 j; @@ -5447,8 +5499,8 @@ static void PrintSearchParameterText(u8 taskId) static u8 GetSearchModeSelection(u8 taskId, u8 option) { - const u16 *cursorPos = &gTasks[taskId].data[sSearchOptions[option].taskDataCursorPos]; - const u16 *scrollOffset = &gTasks[taskId].data[sSearchOptions[option].taskDataScrollOffset]; + const s16 *cursorPos = &gTasks[taskId].data[sSearchOptions[option].taskDataCursorPos]; + const s16 *scrollOffset = &gTasks[taskId].data[sSearchOptions[option].taskDataScrollOffset]; u16 id = *cursorPos + *scrollOffset; switch (option) @@ -5519,7 +5571,7 @@ static void SetDefaultSearchModeAndOrder(u8 taskId) static bool8 SearchParamCantScrollUp(u8 taskId) { u8 menuItem = gTasks[taskId].tMenuItem; - const u16 *scrollOffset = &gTasks[taskId].data[sSearchOptions[menuItem].taskDataScrollOffset]; + const s16 *scrollOffset = &gTasks[taskId].data[sSearchOptions[menuItem].taskDataScrollOffset]; u16 lastOption = sSearchOptions[menuItem].numOptions - 1; if (lastOption > MAX_SEARCH_PARAM_CURSOR_POS && *scrollOffset != 0) @@ -5531,7 +5583,7 @@ static bool8 SearchParamCantScrollUp(u8 taskId) static bool8 SearchParamCantScrollDown(u8 taskId) { u8 menuItem = gTasks[taskId].tMenuItem; - const u16 *scrollOffset = &gTasks[taskId].data[sSearchOptions[menuItem].taskDataScrollOffset]; + const s16 *scrollOffset = &gTasks[taskId].data[sSearchOptions[menuItem].taskDataScrollOffset]; u16 lastOption = sSearchOptions[menuItem].numOptions - 1; if (lastOption > MAX_SEARCH_PARAM_CURSOR_POS && *scrollOffset < lastOption - MAX_SEARCH_PARAM_CURSOR_POS) diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c index f9181a985b..d5aa3f96c9 100755 --- a/src/pokedex_area_screen.c +++ b/src/pokedex_area_screen.c @@ -8,6 +8,7 @@ #include "menu.h" #include "overworld.h" #include "palette.h" +#include "pokedex.h" #include "pokedex_area_screen.h" #include "region_map.h" #include "roamer.h" @@ -669,10 +670,20 @@ static void Task_HandlePokedexAreaScreenInput(u8 taskId) if (JOY_NEW(B_BUTTON)) { gTasks[taskId].data[1] = 1; - PlaySE(SE_PC_OFF); + PlaySE(SE_DEX_PAGE); + } + else if (JOY_NEW(DPAD_LEFT) || (JOY_NEW(L_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) + { + gTasks[taskId].data[1] = 1; + PlaySE(SE_DEX_PAGE); } else if (JOY_NEW(DPAD_RIGHT) || (JOY_NEW(R_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) { + if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(sPokedexAreaScreen->species), FLAG_GET_CAUGHT)) + { + PlaySE(SE_FAILURE); + return; + } gTasks[taskId].data[1] = 2; PlaySE(SE_DEX_PAGE); } diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c new file mode 100644 index 0000000000..d5258362ab --- /dev/null +++ b/src/pokedex_plus_hgss.c @@ -0,0 +1,8755 @@ +#include "global.h" +#include "battle_main.h" +#include "battle_util.h" +#include "bg.h" +#include "contest_effect.h" +#include "data.h" +#include "daycare.h" +#include "decompress.h" +#include "event_data.h" +#include "gpu_regs.h" +#include "graphics.h" +#include "international_string_util.h" +#include "item.h" +#include "item_icon.h" +#include "main.h" +#include "malloc.h" +#include "menu.h" +#include "m4a.h" +#include "overworld.h" +#include "palette.h" +#include "party_menu.h" +#include "pokedex.h" +#include "pokedex_plus_hgss.h" +#include "pokedex_area_screen.h" +#include "pokedex_cry_screen.h" +#include "pokemon_icon.h" +#include "pokemon_summary_screen.h" +#include "region_map.h" +#include "pokemon.h" +#include "reset_rtc_screen.h" +#include "scanline_effect.h" +#include "shop.h" +#include "sound.h" +#include "sprite.h" +#include "string_util.h" +#include "strings.h" +#include "task.h" +#include "text_window.h" +#include "trainer_pokemon_sprites.h" +#include "trig.h" +#include "window.h" +#include "constants/abilities.h" +#include "constants/form_change_types.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/party_menu.h" +#include "constants/rgb.h" +#include "constants/songs.h" + + +enum +{ + PAGE_MAIN, + PAGE_INFO, + PAGE_SEARCH, + PAGE_SEARCH_RESULTS, + PAGE_UNK, + PAGE_AREA, + PAGE_CRY, + PAGE_SIZE +}; + +enum +{ + INFO_SCREEN, + STATS_SCREEN, + EVO_SCREEN, + FORMS_SCREEN, + AREA_SCREEN, + CRY_SCREEN, + SIZE_SCREEN, + CANCEL_SCREEN, + SCREEN_COUNT +}; + +enum +{ + SEARCH_NAME, + SEARCH_COLOR, + SEARCH_TYPE_LEFT, + SEARCH_TYPE_RIGHT, + SEARCH_ORDER, + SEARCH_MODE, + SEARCH_OK, + SEARCH_COUNT +}; + +enum +{ + SEARCH_TOPBAR_SEARCH, + SEARCH_TOPBAR_SHIFT, + SEARCH_TOPBAR_CANCEL, + SEARCH_TOPBAR_COUNT +}; + +enum +{ + ORDER_NUMERICAL, + ORDER_ALPHABETICAL, + ORDER_HEAVIEST, + ORDER_LIGHTEST, + ORDER_TALLEST, + ORDER_SMALLEST +}; + +enum +{ + NAME_ABC = 1, + NAME_DEF, + NAME_GHI, + NAME_JKL, + NAME_MNO, + NAME_PQR, + NAME_STU, + NAME_VWX, + NAME_YZ, +}; + +extern const u16 gPokedexOrder_Alphabetical[]; +extern const u16 gPokedexOrder_Height[]; +extern const u16 gPokedexOrder_Weight[]; + +// static .rodata strings + +static const u8 sText_No0000[] = _("0000"); +static const u8 sCaughtBall_Gfx[] = INCBIN_U8("graphics/pokedex/caught_ball.4bpp"); +static const u8 sText_TenDashes[] = _("----------"); +ALIGNED(4) static const u8 sExpandedPlaceholder_PokedexDescription[] = _(""); +static const u16 sSizeScreenSilhouette_Pal[] = INCBIN_U16("graphics/pokedex/size_silhouette.gbapal"); + +static const u8 sText_Stats_Buttons[] = _("{A_BUTTON}TOGGLE {DPAD_UPDOWN}MOVES"); +static const u8 sText_Stats_Buttons_Decapped[] = _("{A_BUTTON}Toggle {DPAD_UPDOWN}Moves"); +static const u8 sText_Stats_HP[] = _("HP"); +static const u8 sText_Stats_Attack[] = _("ATK"); +static const u8 sText_Stats_Defense[] = _("DEF"); +static const u8 sText_Stats_Speed[] = _("SPE"); +static const u8 sText_Stats_SpAttack[] = _("SP.A"); +static const u8 sText_Stats_SpDefense[] = _("SP.D"); +static const u8 sText_Stats_EV_Plus1[] = _("{UP_ARROW_2}"); +static const u8 sText_Stats_EV_Plus2[] = _("{UP_ARROW_2}{UP_ARROW_2}"); +static const u8 sText_Stats_EV_Plus3[] = _("{UP_ARROW_2}{UP_ARROW_2}{UP_ARROW_2}"); +static const u8 sText_Stats_EvStr1Str2[] = _("{STR_VAR_1}{STR_VAR_2}"); +static const u8 sText_Stats_MoveSelectedMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); +static const u8 sText_Stats_MoveLevel[] = _("LVL"); +static const u8 sText_Stats_Gender_0[] = _("♂"); +static const u8 sText_Stats_Gender_12_5[] = _("♀ 1/7 ♂"); //_("♀ 12.5 / 87.5 ♂"); +static const u8 sText_Stats_Gender_25[] = _("♀ 1/3 ♂"); //_("♀ 25 / 75 ♂"); +static const u8 sText_Stats_Gender_50[] = _("♀ 1/1 ♂"); //_("♀ 50 / 50 ♂"); +static const u8 sText_Stats_Gender_75[] = _("♀ 3/1 ♂"); //_("♀ 75 / 25 ♂"); +static const u8 sText_Stats_Gender_87_5[] = _("♀ 7/1 ♂"); +static const u8 sText_Stats_Gender_100[] = _("♀"); +static const u8 sText_Stats_CatchRate[] = _("CATCH{0x5B}: "); +static const u8 sText_Stats_CatchRate_Legend[] = _("LEGENDARY"); +static const u8 sText_Stats_CatchRate_VeryHard[] = _("VERY HARD"); +static const u8 sText_Stats_CatchRate_Difficult[] = _("DIFFICULT"); +static const u8 sText_Stats_CatchRate_Medium[] = _("MEDIUM"); +static const u8 sText_Stats_CatchRate_Relaxed[] = _("RELAXED"); +static const u8 sText_Stats_CatchRate_Easy[] = _("EASY"); +static const u8 sText_Stats_ExpYield[] = _("EXP YIELD: "); +static const u8 sText_Stats_EggCycles[] = _("HATCH STEPS:"); +static const u8 sText_Stats_EggCycles_VeryFast[] = _("{EMOJI_BOLT}{EMOJI_DIZZYEGG}"); +static const u8 sText_Stats_EggCycles_Fast[] = _("{EMOJI_DIZZYEGG}"); +static const u8 sText_Stats_EggCycles_Normal[] = _("{EMOJI_DIZZYEGG}{EMOJI_DIZZYEGG}"); +static const u8 sText_Stats_EggCycles_Slow[] = _("{EMOJI_DIZZYEGG}{EMOJI_DIZZYEGG}{EMOJI_DIZZYEGG}"); +static const u8 sText_Stats_Growthrate[] = _("GROW: "); +static const u8 sText_Stats_Friendship[] = _("FRIENDSHIP:"); +static const u8 sText_Stats_Friendship_BigAnger[] = _("{EMOJI_BIGANGER}"); +static const u8 sText_Stats_Friendship_Neutral[] = _("{EMOJI_NEUTRAL}"); +static const u8 sText_Stats_Friendship_Happy[] = _("{EMOJI_HAPPY}"); +static const u8 sText_Stats_Friendship_BigSmile[] = _("{EMOJI_BIGSMILE}"); +static const u8 sText_Stats_MEDIUM_FAST[] = _("MED. FAST"); +static const u8 sText_Stats_ERRATIC[] = _("ERRATIC"); +static const u8 sText_Stats_FLUCTUATING[] = _("FLUCTUATING"); +static const u8 sText_Stats_MEDIUM_SLOW[] = _("MED. SLOW"); +static const u8 sText_Stats_FAST[] = _("FAST"); +static const u8 sText_Stats_SLOW[] = _("SLOW"); +static const u8 sText_Stats_ContestHeart[] = _("H"); +static const u8 sText_Stats_Minus[] = _("-"); +static const u8 sText_Stats_eggGroup[] = _("EGG G1:"); +static const u8 sText_Stats_eggGroup_Groups[] = _("{STR_VAR_1}/{STR_VAR_2}"); +static const u8 sText_Stats_eggGroup_MONSTER[] = _("MONSTER"); +static const u8 sText_Stats_eggGroup_WATER_1[] = _("WATER {CIRCLE_1}"); +static const u8 sText_Stats_eggGroup_BUG[] = _("BUG"); +static const u8 sText_Stats_eggGroup_FLYING[] = _("FLYING"); +static const u8 sText_Stats_eggGroup_FIELD[] = _("FIELD"); +static const u8 sText_Stats_eggGroup_FAIRY[] = _("FAIRY"); +static const u8 sText_Stats_eggGroup_GRASS[] = _("GRASS"); +static const u8 sText_Stats_eggGroup_HUMAN_LIKE[] = _("HUMANE"); +static const u8 sText_Stats_eggGroup_WATER_3[] = _("WATER {CIRCLE_3}"); +static const u8 sText_Stats_eggGroup_MINERAL[] = _("MINERAL"); +static const u8 sText_Stats_eggGroup_AMORPHOUS[] = _("AMORPHOUS"); +static const u8 sText_Stats_eggGroup_WATER_2[] = _("WATER {CIRCLE_2}"); +static const u8 sText_Stats_eggGroup_DITTO[] = _("DITTO"); +static const u8 sText_Stats_eggGroup_DRAGON[] = _("DRAGON"); +static const u8 sText_Stats_eggGroup_NO_EGGS_DISCOVERED[] = _("---"); +static const u8 sText_Dex_SEEN[] = _("SEEN"); +static const u8 sText_Dex_OWN[] = _("OWN"); + +static const u8 sText_EVO_Buttons[] = _("{DPAD_UPDOWN}EVOs {A_BUTTON}CHECK"); +static const u8 sText_EVO_Buttons_Decapped[] = _("{DPAD_UPDOWN}Evos {A_BUTTON}Check"); +static const u8 sText_EVO_Buttons_PE[] = _("{DPAD_UPDOWN}EVOs {A_BUTTON}CHECK {START_BUTTON}FORMs"); +static const u8 sText_EVO_Buttons_Decapped_PE[] = _("{DPAD_UPDOWN}Evos {A_BUTTON}Check {START_BUTTON}Froms"); +static const u8 sText_EVO_Name[] = _("{STR_VAR_3}:"); +static const u8 sText_EVO_PreEvo[] = _("{STR_VAR_1} evolves from {STR_VAR_2}"); +static const u8 sText_EVO_PreEvo_PE_Mega[] = _("{STR_VAR_1} Mega Evolves with {STR_VAR_2}"); +static const u8 sText_EVO_FRIENDSHIP[] = _("{LV}{UP_ARROW}, high friendship"); +static const u8 sText_EVO_FRIENDSHIP_DAY[] = _("{LV}{UP_ARROW}, high friendship, day"); +static const u8 sText_EVO_FRIENDSHIP_NIGHT[] = _("{LV}{UP_ARROW}, high friendship, night"); +static const u8 sText_EVO_FRIENDSHIP_MOVE_TYPE[] = _("{LV}{UP_ARROW}, high friendship, {STR_VAR_2} move"); +static const u8 sText_EVO_LEVEL[] = _("{LV}{UP_ARROW} to {STR_VAR_2}"); +static const u8 sText_EVO_TRADE[] = _("Trading"); +static const u8 sText_EVO_TRADE_ITEM[] = _("Trading, holding {STR_VAR_2}"); +static const u8 sText_EVO_ITEM[] = _("{STR_VAR_2} is used"); +static const u8 sText_EVO_LEVEL_ATK_GT_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk > Def"); +static const u8 sText_EVO_LEVEL_ATK_EQ_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk = Def"); +static const u8 sText_EVO_LEVEL_ATK_LT_DEF[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Atk < Def"); +static const u8 sText_EVO_LEVEL_SILCOON[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Silcoon persona"); +static const u8 sText_EVO_LEVEL_CASCOON[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Cascoon persona"); +static const u8 sText_EVO_LEVEL_NINJASK[] = _("{LV}{UP_ARROW} to {STR_VAR_2}"); +static const u8 sText_EVO_LEVEL_SHEDINJA[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, party<6, 1x POKéBALL"); +static const u8 sText_EVO_BEAUTY[] = _("{LV}{UP_ARROW}, high beauty"); +static const u8 sText_EVO_LEVEL_FEMALE[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, is female"); +static const u8 sText_EVO_LEVEL_MALE[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, is male"); +static const u8 sText_EVO_LEVEL_NIGHT[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, night"); +static const u8 sText_EVO_LEVEL_DAY[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, day"); +static const u8 sText_EVO_LEVEL_DUSK[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, dusk (5-6PM)"); +static const u8 sText_EVO_ITEM_HOLD_DAY[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}, day"); +static const u8 sText_EVO_ITEM_HOLD_NIGHT[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}, night"); +static const u8 sText_EVO_MOVE[] = _("{LV}{UP_ARROW}, knows {STR_VAR_2}"); +static const u8 sText_EVO_MAPSEC[] = _("{LV}{UP_ARROW} on {STR_VAR_2}"); +static const u8 sText_EVO_ITEM_MALE[] = _("{STR_VAR_2} used on male"); +static const u8 sText_EVO_ITEM_FEMALE[] = _("{STR_VAR_2} used on female"); +static const u8 sText_EVO_LEVEL_RAIN[] = _("{LV}{UP_ARROW} to {STR_VAR_2} while raining"); +static const u8 sText_EVO_SPECIFIC_MON_IN_PARTY[] = _("{LV}{UP_ARROW} with {STR_VAR_2} in party"); +static const u8 sText_EVO_LEVEL_DARK_TYPE_MON_IN_PARTY[] = _("{LV}{UP_ARROW} with dark type in party"); +static const u8 sText_EVO_TRADE_SPECIFIC_MON[] = _("Traded for {STR_VAR_2}"); +static const u8 sText_EVO_SPECIFIC_MAP[] = _("{LV}{UP_ARROW} on {STR_VAR_2}"); +static const u8 sText_EVO_LEVEL_NATURE_AMPED[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Amped natures"); +static const u8 sText_EVO_LEVEL_NATURE_LOW_KEY[] = _("{LV}{UP_ARROW} to {STR_VAR_2}, Low Key natures"); +static const u8 sText_EVO_CRITICAL_HITS[] = _("Land {STR_VAR_2} critical hits in\nsingle battle"); +static const u8 sText_EVO_SCRIPT_TRIGGER_DMG[] = _("Takes at least {STR_VAR_2} HP in damage"); +static const u8 sText_EVO_DARK_SCROLL[] = _("ScrllOfDrknss is used"); +static const u8 sText_EVO_WATER_SCROLL[] = _("ScrollOfWatrs is used"); +static const u8 sText_EVO_ITEM_NIGHT[] = _("{STR_VAR_2} is used, night"); +static const u8 sText_EVO_ITEM_DAY[] = _("{STR_VAR_2} is used, day"); +static const u8 sText_EVO_ITEM_HOLD[] = _("{LV}{UP_ARROW}, holds {STR_VAR_2}"); +static const u8 sText_EVO_UNKNOWN[] = _("Method unknown"); +static const u8 sText_EVO_NONE[] = _("{STR_VAR_1} has no evolution."); + +static const u8 sText_FORMS_Buttons_PE[] = _("{A_BUTTON}FORM MODE {START_BUTTON}EVOs"); +static const u8 sText_FORMS_Buttons_Decapped_PE[] = _("{START_BUTTON}Evos"); +static const u8 sText_FORMS_Buttons_Submenu_PE[] = _("{DPAD_NONE}FORMs {A_BUTTON}CHECK {START_BUTTON}EVOs"); +static const u8 sText_FORMS_Buttons_Submenu_Decapped_PE[] = _("{START_BUTTON}Evos"); +static const u8 sText_FORMS_NONE[] = _("{STR_VAR_1} has no alternate forms."); +static const u8 sText_PlusSymbol[] = _("+"); + +// static .rodata graphics + +static const u16 sPokedexPlusHGSS_Default_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_default.gbapal"); +static const u16 sPokedexPlusHGSS_National_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_national.gbapal"); +static const u16 sPokedexPlusHGSS_MenuSearch_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_menu.gbapal"); +static const u16 sPokedexPlusHGSS_SearchResults_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_results.gbapal"); +static const u16 sPokedexPlusHGSS_Default_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_default_dark.gbapal"); +static const u16 sPokedexPlusHGSS_National_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_national_dark.gbapal"); +static const u16 sPokedexPlusHGSS_MenuSearch_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_menu_dark.gbapal"); +static const u16 sPokedexPlusHGSS_SearchResults_dark_Pal[] = INCBIN_U16("graphics/pokedex/hgss/palette_search_results_dark.gbapal"); +static const u32 sPokedexPlusHGSS_MenuList_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_list.4bpp.lz"); +static const u32 sPokedexPlusHGSS_MenuList_DECA_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_list_DECA.4bpp.lz"); +static const u32 sPokedexPlusHGSS_Interface_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_interface.4bpp.lz"); +static const u32 sPokedexPlusHGSS_Interface_DECA_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_interface_DECA.4bpp.lz"); +static const u32 sPokedexPlusHGSS_Menu_1_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu1.4bpp.lz"); +static const u32 sPokedexPlusHGSS_Menu_2_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu2.4bpp.lz"); +static const u32 sPokedexPlusHGSS_Menu_3_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu3.4bpp.lz"); +static const u32 sPokedexPlusHGSS_MenuSearch_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_search.4bpp.lz"); +static const u32 sPokedexPlusHGSS_MenuSearch_DECA_Gfx[] = INCBIN_U32("graphics/pokedex/hgss/tileset_menu_search_DECA.4bpp.lz"); +static const u32 sPokedexPlusHGSS_StartMenuMain_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_start_menu.bin.lz"); +static const u32 sPokedexPlusHGSS_StartMenuSearchResults_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_start_menu_search_results.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/SelectBar.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap_Clear[] = INCBIN_U32("graphics/pokedex/hgss/SelectBar_clear.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenList_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_list_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenListUnderlay_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_list_screen_underlay.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenInfo_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_info_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenStats_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_stats_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenEvolution_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_evo_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenEvolution_Tilemap_PE[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_evo_screen_PE.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenForms_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_forms_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenCry_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_cry_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenSize_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_size_screen.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenSearchHoenn_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_search_screen_hoenn.bin.lz"); +static const u32 sPokedexPlusHGSS_ScreenSearchNational_Tilemap[] = INCBIN_U32("graphics/pokedex/hgss/tilemap_search_screen_national.bin.lz"); + +#define SCROLLING_MON_X 146 +#define HGSS_DECAPPED FALSE +#define HGSS_DARK_MODE FALSE +#define HGSS_HIDE_UNSEEN_EVOLUTION_NAMES FALSE + +// For scrolling search parameter +#define MAX_SEARCH_PARAM_ON_SCREEN 6 +#define MAX_SEARCH_PARAM_CURSOR_POS (MAX_SEARCH_PARAM_ON_SCREEN - 1) + +#define MAX_MONS_ON_SCREEN 4 + +#define LIST_SCROLL_STEP 16 + +#define POKEBALL_ROTATION_TOP 64 +#define POKEBALL_ROTATION_BOTTOM (POKEBALL_ROTATION_TOP - 16) + +// Coordinates of the Pokémon sprite on its page (info/cry screens) +#define MON_PAGE_X 48 +#define MON_PAGE_Y 56 + +static EWRAM_DATA struct PokedexView *sPokedexView = NULL; +static EWRAM_DATA u16 sLastSelectedPokemon = 0; +static EWRAM_DATA u8 sPokeBallRotation = 0; +static EWRAM_DATA struct PokedexListItem *sPokedexListItem = NULL; +//Pokedex Plus HGSS_Ui +#define MOVES_COUNT_TOTAL (EGG_MOVES_ARRAY_COUNT + MAX_LEVEL_UP_MOVES + NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES) +EWRAM_DATA static u16 sStatsMoves[MOVES_COUNT_TOTAL] = {0}; +EWRAM_DATA static u16 sStatsMovesTMHM_ID[NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES] = {0}; + + +struct SearchOptionText +{ + const u8 *description; + const u8 *title; +}; + +struct SearchOption +{ + const struct SearchOptionText *texts; + u8 taskDataCursorPos; + u8 taskDataScrollOffset; + u16 numOptions; +}; + +struct SearchMenuTopBarItem +{ + const u8 *description; + u8 highlightX; + u8 highlightY; + u8 highlightWidth; +}; + +struct SearchMenuItem +{ + const u8 *description; + u8 titleBgX; + u8 titleBgY; + u8 titleBgWidth; + u8 selectionBgX; + u8 selectionBgY; + u8 selectionBgWidth; +}; + +struct PokedexListItem +{ + u16 dexNum; + u16 seen:1; + u16 owned:1; +}; + + +struct PokemonStats +{ + u16 species; + u8 genderRatio; + u8 baseHP; + u8 baseSpeed; + u8 baseAttack; + u8 baseSpAttack; + u8 baseDefense; + u8 baseSpDefense; + u8 differentEVs; + u8 evYield_HP; + u8 evYield_Speed; + u8 evYield_Attack; + u8 evYield_SpAttack; + u8 evYield_Defense; + u8 evYield_SpDefense; + u8 catchRate; + u8 growthRate; + u8 eggGroup1; + u8 eggGroup2; + u8 eggCycles; + u8 expYield; + u8 friendship; + u16 ability0; + u16 ability1; + u16 abilityHidden; +}; + +struct EvoScreenData +{ + bool8 fromEvoPage; + u8 numAllEvolutions; + u16 targetSpecies[10]; + u8 numSeen; + bool8 seen[10]; + u8 menuPos; + u8 arrowSpriteId; + bool8 isMega; +}; + +struct FromScreenData +{ + u8 numForms; + u16 formIds[30]; + bool8 inSubmenu; + u8 menuPos; + u8 arrowSpriteId; +}; + +struct PokedexView +{ + struct PokedexListItem pokedexList[NATIONAL_DEX_COUNT + 1]; + u16 pokemonListCount; + u16 selectedPokemon; + u16 selectedPokemonBackup; + u16 dexMode; + u16 dexModeBackup; + u16 dexOrder; + u16 dexOrderBackup; + u16 seenCount; + u16 ownCount; + u16 monSpriteIds[MAX_MONS_ON_SCREEN]; + u8 typeIconSpriteIds[2]; + u16 moveSelected; + u8 movesTotal; + u8 statBarsSpriteId; + u8 statBarsBgSpriteId; + bool8 justScrolled; + u8 splitIconSpriteId; //Physical/Special Split + u8 numEggMoves; + u8 numLevelUpMoves; + u8 numTMHMMoves; + u8 numTutorMoves; + u8 numPreEvolutions; + struct PokemonStats sPokemonStats; + struct EvoScreenData sEvoScreenData; + struct FromScreenData sFormScreenData; + u16 formSpecies; + u16 selectedMonSpriteId; + u16 pokeBallRotationStep; + u16 pokeBallRotationBackup; + u8 pokeBallRotation; + u8 initialVOffset; + u8 scrollTimer; + u8 scrollDirection; + s16 listVOffset; + s16 listMovingVOffset; + u16 scrollMonIncrement; + u16 maxScrollTimer; + u16 scrollSpeed; + u16 unkArr1[4]; // Cleared, never read + u8 filler[8]; + u8 currentPage; + u8 currentPageBackup; + bool8 isSearchResults:1; + u8 selectedScreen; + u8 screenSwitchState; + u8 menuIsOpen; + u16 menuCursorPos; + s16 menuY; //Menu Y position (inverted because we use REG_BG0VOFS for this) + u8 unkArr2[8]; // Cleared, never read + u8 unkArr3[8]; // Cleared, never read +}; + +static void ResetPokedexView(struct PokedexView *pokedexView); +static void VBlankCB_Pokedex(void); +static void CB2_Pokedex(void); +static void Task_OpenPokedexMainPage(u8); +static void Task_HandlePokedexInput(u8); +static void Task_WaitForScroll(u8); +static void Task_HandlePokedexStartMenuInput(u8); +static void Task_OpenInfoScreenAfterMonMovement(u8); +static void Task_WaitForExitInfoScreen(u8); +static void Task_WaitForExitSearch(u8); +static void Task_ClosePokedex(u8); +static void Task_OpenSearchResults(u8); +static void Task_HandleSearchResultsInput(u8); +static void Task_WaitForSearchResultsScroll(u8); +static void Task_HandleSearchResultsStartMenuInput(u8); +static void Task_OpenSearchResultsInfoScreenAfterMonMovement(u8); +static void Task_WaitForExitSearchResultsInfoScreen(u8); +static void Task_ReturnToPokedexFromSearchResults(u8); +static void Task_ClosePokedexFromSearchResultsStartMenu(u8); +static bool8 LoadPokedexListPage(u8); +static void LoadPokedexBgPalette(bool8); +static void FreeWindowAndBgBuffers(void); +static void CreatePokedexList(u8, u8); +static void CreateMonDexNum(u16, u8, u8, u16); +static void CreateCaughtBall(u16, u8, u8, u16); +static u8 CreateMonName(u16, u8, u8); +static void ClearMonListEntry(u8 x, u8 y, u16 unused); +static void CreateMonSpritesAtPos(u16, u16); +static bool8 UpdateDexListScroll(u8, u8, u8); +static u16 TryDoPokedexScroll(u16, u16); +static void UpdateSelectedMonSpriteId(void); +static bool8 TryDoInfoScreenScroll(void); +static u8 ClearMonSprites(void); +static u16 GetPokemonSpriteToDisplay(u16); +static u32 CreatePokedexMonSprite(u16, s16, s16); +static void CreateInterfaceSprites(u8); +static void SpriteCB_MoveMonForInfoScreen(struct Sprite *sprite); +static void SpriteCB_Scrollbar(struct Sprite *sprite); +static void SpriteCB_ScrollArrow(struct Sprite *sprite); +static void SpriteCB_DexListInterfaceText(struct Sprite *sprite); +static void SpriteCB_RotatingPokeBall(struct Sprite *sprite); +static void SpriteCB_SeenOwnInfo(struct Sprite *sprite); +static void SpriteCB_DexListStartMenuCursor(struct Sprite *sprite); +static void SpriteCB_PokedexListMonSprite(struct Sprite *sprite); +static u8 LoadInfoScreen(struct PokedexListItem *, u8 monSpriteId); +static bool8 IsInfoScreenScrolling(u8); +static u8 StartInfoScreenScroll(struct PokedexListItem *, u8); +static void Task_LoadInfoScreen(u8); +static void Task_HandleInfoScreenInput(u8); +static void Task_SwitchScreensFromInfoScreen(u8); +static void Task_LoadInfoScreenWaitForFade(u8); +static void Task_ExitInfoScreen(u8); +static void Task_LoadAreaScreen(u8); +static void Task_WaitForAreaScreenInput(u8 taskId); +static void Task_SwitchScreensFromAreaScreen(u8); +static void Task_LoadCryScreen(u8); +static void Task_HandleCryScreenInput(u8); +static void Task_SwitchScreensFromCryScreen(u8); +static void LoadPlayArrowPalette(bool8); +static void Task_LoadSizeScreen(u8); +static void Task_HandleSizeScreenInput(u8); +static void Task_SwitchScreensFromSizeScreen(u8); +static void LoadScreenSelectBarMain(u16); +static void LoadScreenSelectBarSubmenu(u16); +static void HighlightScreenSelectBarItem(u8, u16); +static void Task_HandleCaughtMonPageInput(u8); +static void Task_ExitCaughtMonPage(u8); +static void SpriteCB_SlideCaughtMonToCenter(struct Sprite *sprite); +static void PrintMonInfo(u32 num, u32, u32 owned, u32 newEntry); +static void PrintMonHeight(u16 height, u8 left, u8 top); +static void PrintMonWeight(u16 weight, u8 left, u8 top); +static void ResetOtherVideoRegisters(u16); +static u8 PrintCryScreenSpeciesName(u8, u16, u8, u8); +static void PrintDecimalNum(u8 windowId, u16 num, u8 left, u8 top); +static void DrawFootprint(u8 windowId, u16 species); +static u16 CreateMonSpriteFromNationalDexNumberHGSS(u16 nationalNum, s16 x, s16 y, u16 paletteSlot); +static u16 CreateSizeScreenTrainerPic(u16, s16, s16, s8); +static u16 GetNextPosition(u8, u16, u16, u16); +static u8 LoadSearchMenu(void); +static void Task_LoadSearchMenu(u8); +static void Task_SwitchToSearchMenuTopBar(u8); +static void Task_HandleSearchTopBarInput(u8); +static void Task_SwitchToSearchMenu(u8); +static void Task_HandleSearchMenuInput(u8); +static void Task_StartPokedexSearch(u8); +static void Task_WaitAndCompleteSearch(u8); +static void Task_SearchCompleteWaitForInput(u8); +static void Task_SelectSearchMenuItem(u8); +static void Task_HandleSearchParameterInput(u8); +static void Task_ExitSearch(u8); +static void Task_ExitSearchWaitForFade(u8); +static void HighlightSelectedSearchTopBarItem(u8); +static void HighlightSelectedSearchMenuItem(u8, u8); +static void PrintSelectedSearchParameters(u8); +static void DrawOrEraseSearchParameterBox(bool8); +static void PrintSearchParameterText(u8); +static u8 GetSearchModeSelection(u8 taskId, u8 option); +static void SetDefaultSearchModeAndOrder(u8); +static void CreateSearchParameterScrollArrows(u8); +static void EraseAndPrintSearchTextBox(const u8 *); +static void EraseSelectorArrow(u32); +static void PrintSelectorArrow(u32); +static void PrintSearchParameterTitle(u32, const u8 *); +static void ClearSearchParameterBoxText(void); +static void SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible); +static void CreateTypeIconSprites(void); +static void SetSearchRectHighlight(u8 flags, u8 x, u8 y, u8 width); +static void PrintInfoSubMenuText(u8 windowId, const u8 *str, u8 left, u8 top); + +//Stats screen HGSS_Ui + +static void LoadTilesetTilemapHGSS(u8 page); +static void Task_HandleStatsScreenInput(u8 taskId); +static void Task_LoadStatsScreen(u8 taskId); +static void Task_SwitchScreensFromStatsScreen(u8 taskId); +static void Task_ExitStatsScreen(u8 taskId); +static bool8 CalculateMoves(void); +static void PrintStatsScreen_NameGender(u8 taskId, u32 num, u32 value); +static void PrintStatsScreen_DestroyMoveItemIcon(u8 taskId); +static void PrintStatsScreen_Moves_Top(u8 taskId); +static void PrintStatsScreen_Moves_Description(u8 taskId); +static void PrintStatsScreen_Moves_BottomText(u8 taskId); +static void PrintStatsScreen_Moves_Bottom(u8 taskId); +static void PrintStatsScreen_Left(u8 taskId); +static void PrintStatsScreen_Abilities(u8 taskId); +static void PrintInfoScreenTextWhite(const u8* str, u8 left, u8 top); +static void PrintInfoScreenTextSmall(const u8* str, u8 left, u8 top); +static void PrintInfoScreenTextSmallWhite(const u8* str, u8 left, u8 top); +static void Task_LoadEvolutionScreen(u8 taskId); +static void Task_HandleEvolutionScreenInput(u8 taskId); +static void Task_SwitchScreensFromEvolutionScreen(u8 taskId); +static void Task_ExitEvolutionScreen(u8 taskId); +static u8 PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, u8 depth_i); +static u8 PrintPreEvolutions(u8 taskId, u16 species); +//Stat bars on scrolling screens +static void TryDestroyStatBars(void); +static void TryDestroyStatBarsBg(void); +static void CreateStatBars(struct PokedexListItem *dexMon); +static void CreateStatBarsBg(void); +static void SpriteCB_StatBars(struct Sprite *sprite); +static void SpriteCB_StatBarsBg(struct Sprite *sprite); + +//Forms screen +static void Task_LoadFormsScreen(u8 taskId); +static void Task_HandleFormsScreenInput(u8 taskId); +static void PrintForms(u8 taskId, u16 species); +static void Task_SwitchScreensFromFormsScreen(u8 taskId); +static void Task_ExitFormsScreen(u8 taskId); + +//Physical Special Split icon +static u8 ShowSplitIcon(u32 split); //Physical/Special Split from BE +static void DestroySplitIcon(void); //Physical/Special Split from BE + +static u16 NationalPokedexNumToSpeciesHGSS(u16 nationalNum); + +//Physical/Special Split from BE +#define TAG_SPLIT_ICONS 30004 + +static const u16 sSplitIcons_Pal[] = INCBIN_U16("graphics/interface/split_icons.gbapal"); +static const u32 sSplitIcons_Gfx[] = INCBIN_U32("graphics/interface/split_icons.4bpp.lz"); + +static const struct OamData sOamData_SplitIcons = +{ + .size = SPRITE_SIZE(16x16), + .shape = SPRITE_SHAPE(16x16), + .priority = 0, +}; +static const struct CompressedSpriteSheet sSpriteSheet_SplitIcons = +{ + .data = sSplitIcons_Gfx, + .size = 16*16*3/2, + .tag = TAG_SPLIT_ICONS, +}; +static const struct SpritePalette sSpritePal_SplitIcons = +{ + .data = sSplitIcons_Pal, + .tag = TAG_SPLIT_ICONS +}; +static const union AnimCmd sSpriteAnim_SplitIcon0[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_SplitIcon1[] = +{ + ANIMCMD_FRAME(4, 0), + ANIMCMD_END +}; +static const union AnimCmd sSpriteAnim_SplitIcon2[] = +{ + ANIMCMD_FRAME(8, 0), + ANIMCMD_END +}; +static const union AnimCmd *const sSpriteAnimTable_SplitIcons[] = +{ + sSpriteAnim_SplitIcon0, + sSpriteAnim_SplitIcon1, + sSpriteAnim_SplitIcon2, +}; +static const struct SpriteTemplate sSpriteTemplate_SplitIcons = +{ + .tileTag = TAG_SPLIT_ICONS, + .paletteTag = TAG_SPLIT_ICONS, + .oam = &sOamData_SplitIcons, + .anims = sSpriteAnimTable_SplitIcons, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +//Stat bars by DizzyEgg +#define TAG_STAT_BAR 4097 +#define TAG_STAT_BAR_BG 4098 +static const struct OamData sOamData_StatBar = +{ + .y = 160, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .size = SPRITE_SIZE(64x64), +}; +static const struct OamData sOamData_StatBarBg = +{ + .y = 160, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .size = SPRITE_SIZE(64x64), +}; +static const struct SpriteTemplate sStatBarSpriteTemplate = +{ + .tileTag = TAG_STAT_BAR, + .paletteTag = TAG_STAT_BAR, + .oam = &sOamData_StatBar, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_StatBars, +}; +static const struct SpriteTemplate sStatBarBgSpriteTemplate = +{ + .tileTag = TAG_STAT_BAR_BG, + .paletteTag = TAG_STAT_BAR_BG, + .oam = &sOamData_StatBarBg, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_StatBarsBg, +}; +enum +{ + COLOR_ID_ALPHA, + COLOR_ID_BAR_WHITE, + // These are repeated 6 times + COLOR_ID_FILL, + COLOR_ID_FILL_SHADOW, + COLOR_ID_FONT = 14, + COLOR_ID_FONT_SHADOW = 15, +}; +enum +{ + COLOR_BEST, // Light blue + COLOR_VERY_GOOD, // Green + COLOR_GOOD, // Light Green + COLOR_AVERAGE, // Yellow + COLOR_BAD, // Orange + COLOR_WORST, // Red +}; +static const u8 sStatBarsGfx[] = INCBIN_U8("graphics/pokedex/hgss/stat_bars.4bpp"); +static const u16 sStatBarPalette[16] = { + [COLOR_ID_ALPHA] = RGB(0, 0, 10), + [COLOR_ID_BAR_WHITE] = RGB_WHITE, + + [COLOR_ID_FILL + COLOR_BEST * 2] = RGB(2, 25, 25), + [COLOR_ID_FILL_SHADOW + COLOR_BEST * 2] = RGB(13, 27, 27), + + [COLOR_ID_FILL + COLOR_VERY_GOOD * 2] = RGB(11, 25, 2), + [COLOR_ID_FILL_SHADOW + COLOR_VERY_GOOD * 2] = RGB(19, 27, 13), + + [COLOR_ID_FILL + COLOR_GOOD * 2] = RGB(22, 25, 2), + [COLOR_ID_FILL_SHADOW + COLOR_GOOD * 2] = RGB(26, 27, 13), + + [COLOR_ID_FILL + COLOR_AVERAGE * 2] = RGB(25, 22, 2), + [COLOR_ID_FILL_SHADOW + COLOR_AVERAGE * 2] = RGB(27, 26, 13), + + [COLOR_ID_FILL + COLOR_BAD * 2] = RGB(25, 17, 2), + [COLOR_ID_FILL_SHADOW + COLOR_BAD * 2] = RGB(27, 22, 13), + + [COLOR_ID_FILL + COLOR_WORST * 2] = RGB(25, 4, 2), + [COLOR_ID_FILL_SHADOW + COLOR_WORST * 2] = RGB(27, 15, 13), + + [COLOR_ID_FONT] = RGB_BLACK, + [COLOR_ID_FONT_SHADOW] = RGB(22, 22, 22), +}; +static const struct SpritePalette sStatBarSpritePal[] = //{sStatBarPalette, TAG_STAT_BAR}; +{ + {sStatBarPalette, TAG_STAT_BAR}, + {sStatBarPalette, TAG_STAT_BAR_BG}, + {0} +}; + +static const struct OamData sOamData_ScrollBar = +{ + .y = DISPLAY_HEIGHT, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0 +}; + +static const struct OamData sOamData_ScrollArrow = +{ + .y = DISPLAY_HEIGHT, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0 +}; + +static const struct OamData sOamData_InterfaceText = +{ + .y = DISPLAY_HEIGHT, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0 +}; + +static const struct OamData sOamData_RotatingPokeBall = +{ + .y = DISPLAY_HEIGHT, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_WINDOW, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0 +}; + +static const struct OamData sOamData_SeenOwnText = +{ + .y = DISPLAY_HEIGHT, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0 +}; + +static const struct OamData sOamData_Dex8x16 = +{ + .y = DISPLAY_HEIGHT, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0 +}; + +static const union AnimCmd sSpriteAnim_ScrollBar[] = +{ + ANIMCMD_FRAME(3, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_ScrollArrow[] = +{ + ANIMCMD_FRAME(1, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_RotatingPokeBall[] = +{ + ANIMCMD_FRAME(16, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_StartButton[] = +{ + ANIMCMD_FRAME(48, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_SearchText[] = +{ + ANIMCMD_FRAME(40, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_SelectButton[] = +{ + ANIMCMD_FRAME(32, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_MenuText[] = +{ + ANIMCMD_FRAME(56, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_SeenText[] = +{ + ANIMCMD_FRAME(64, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_OwnText[] = +{ + ANIMCMD_FRAME(96, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_HoennText[] = +{ + ANIMCMD_FRAME(160, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_NationalText[] = +{ + ANIMCMD_FRAME(168, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_HoennSeenOwnDigit0[] = +{ + ANIMCMD_FRAME(128, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_HoennSeenOwnDigit1[] = +{ + ANIMCMD_FRAME(130, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_HoennSeenOwnDigit2[] = +{ + ANIMCMD_FRAME(132, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_HoennSeenOwnDigit3[] = +{ + ANIMCMD_FRAME(134, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_HoennSeenOwnDigit4[] = +{ + ANIMCMD_FRAME(136, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_HoennSeenOwnDigit5[] = +{ + ANIMCMD_FRAME(138, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_HoennSeenOwnDigit6[] = +{ + ANIMCMD_FRAME(140, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_HoennSeenOwnDigit7[] = +{ + ANIMCMD_FRAME(142, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_HoennSeenOwnDigit8[] = +{ + ANIMCMD_FRAME(144, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_HoennSeenOwnDigit9[] = +{ + ANIMCMD_FRAME(146, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_NationalSeenOwnDigit0[] = +{ + ANIMCMD_FRAME(176, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_NationalSeenOwnDigit1[] = +{ + ANIMCMD_FRAME(178, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_NationalSeenOwnDigit2[] = +{ + ANIMCMD_FRAME(180, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_NationalSeenOwnDigit3[] = +{ + ANIMCMD_FRAME(182, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_NationalSeenOwnDigit4[] = +{ + ANIMCMD_FRAME(184, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_NationalSeenOwnDigit5[] = +{ + ANIMCMD_FRAME(186, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_NationalSeenOwnDigit6[] = +{ + ANIMCMD_FRAME(188, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_NationalSeenOwnDigit7[] = +{ + ANIMCMD_FRAME(190, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_NationalSeenOwnDigit8[] = +{ + ANIMCMD_FRAME(192, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_NationalSeenOwnDigit9[] = +{ + ANIMCMD_FRAME(194, 30), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_DexListStartMenuCursor[] = +{ + ANIMCMD_FRAME(4, 30), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_ScrollBar[] = +{ + sSpriteAnim_ScrollBar +}; + +static const union AnimCmd *const sSpriteAnimTable_ScrollArrow[] = +{ + sSpriteAnim_ScrollArrow +}; + +static const union AnimCmd *const sSpriteAnimTable_RotatingPokeBall[] = +{ + sSpriteAnim_RotatingPokeBall +}; + +static const union AnimCmd *const sSpriteAnimTable_InterfaceText[] = +{ + sSpriteAnim_StartButton, + sSpriteAnim_SearchText, + sSpriteAnim_SelectButton, + sSpriteAnim_MenuText +}; + +static const union AnimCmd *const sSpriteAnimTable_SeenOwnText[] = +{ + sSpriteAnim_SeenText, + sSpriteAnim_OwnText +}; + +static const union AnimCmd *const sSpriteAnimTable_HoennNationalText[] = +{ + sSpriteAnim_HoennText, + sSpriteAnim_NationalText +}; + +static const union AnimCmd *const sSpriteAnimTable_HoennSeenOwnNumber[] = +{ + sSpriteAnim_HoennSeenOwnDigit0, + sSpriteAnim_HoennSeenOwnDigit1, + sSpriteAnim_HoennSeenOwnDigit2, + sSpriteAnim_HoennSeenOwnDigit3, + sSpriteAnim_HoennSeenOwnDigit4, + sSpriteAnim_HoennSeenOwnDigit5, + sSpriteAnim_HoennSeenOwnDigit6, + sSpriteAnim_HoennSeenOwnDigit7, + sSpriteAnim_HoennSeenOwnDigit8, + sSpriteAnim_HoennSeenOwnDigit9 +}; + +static const union AnimCmd *const sSpriteAnimTable_NationalSeenOwnNumber[] = +{ + sSpriteAnim_NationalSeenOwnDigit0, + sSpriteAnim_NationalSeenOwnDigit1, + sSpriteAnim_NationalSeenOwnDigit2, + sSpriteAnim_NationalSeenOwnDigit3, + sSpriteAnim_NationalSeenOwnDigit4, + sSpriteAnim_NationalSeenOwnDigit5, + sSpriteAnim_NationalSeenOwnDigit6, + sSpriteAnim_NationalSeenOwnDigit7, + sSpriteAnim_NationalSeenOwnDigit8, + sSpriteAnim_NationalSeenOwnDigit9 +}; + +static const union AnimCmd *const sSpriteAnimTable_DexListStartMenuCursor[] = +{ + sSpriteAnim_DexListStartMenuCursor +}; + +#define TAG_DEX_INTERFACE 4096 // Tile and pal tag used for all interface sprites. + +static const struct SpriteTemplate sScrollBarSpriteTemplate = +{ + .tileTag = TAG_DEX_INTERFACE, + .paletteTag = TAG_DEX_INTERFACE, + .oam = &sOamData_ScrollBar, + .anims = sSpriteAnimTable_ScrollBar, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_Scrollbar, +}; + +static const struct SpriteTemplate sScrollArrowSpriteTemplate = +{ + .tileTag = TAG_DEX_INTERFACE, + .paletteTag = TAG_DEX_INTERFACE, + .oam = &sOamData_ScrollArrow, + .anims = sSpriteAnimTable_ScrollArrow, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_ScrollArrow, +}; + +static const struct SpriteTemplate sInterfaceTextSpriteTemplate = +{ + .tileTag = TAG_DEX_INTERFACE, + .paletteTag = TAG_DEX_INTERFACE, + .oam = &sOamData_InterfaceText, + .anims = sSpriteAnimTable_InterfaceText, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_DexListInterfaceText, +}; + +static const struct SpriteTemplate sRotatingPokeBallSpriteTemplate = +{ + .tileTag = TAG_DEX_INTERFACE, + .paletteTag = TAG_DEX_INTERFACE, + .oam = &sOamData_RotatingPokeBall, + .anims = sSpriteAnimTable_RotatingPokeBall, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_RotatingPokeBall, +}; + +static const struct SpriteTemplate sSeenOwnTextSpriteTemplate = +{ + .tileTag = TAG_DEX_INTERFACE, + .paletteTag = TAG_DEX_INTERFACE, + .oam = &sOamData_SeenOwnText, + .anims = sSpriteAnimTable_SeenOwnText, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_SeenOwnInfo, +}; + +static const struct SpriteTemplate sHoennNationalTextSpriteTemplate = +{ + .tileTag = TAG_DEX_INTERFACE, + .paletteTag = TAG_DEX_INTERFACE, + .oam = &sOamData_InterfaceText, + .anims = sSpriteAnimTable_HoennNationalText, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_SeenOwnInfo, +}; + +static const struct SpriteTemplate sHoennDexSeenOwnNumberSpriteTemplate = +{ + .tileTag = TAG_DEX_INTERFACE, + .paletteTag = TAG_DEX_INTERFACE, + .oam = &sOamData_Dex8x16, + .anims = sSpriteAnimTable_HoennSeenOwnNumber, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_SeenOwnInfo, +}; + +static const struct SpriteTemplate sNationalDexSeenOwnNumberSpriteTemplate = +{ + .tileTag = TAG_DEX_INTERFACE, + .paletteTag = TAG_DEX_INTERFACE, + .oam = &sOamData_Dex8x16, + .anims = sSpriteAnimTable_NationalSeenOwnNumber, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_SeenOwnInfo, +}; + +static const struct SpriteTemplate sDexListStartMenuCursorSpriteTemplate = +{ + .tileTag = TAG_DEX_INTERFACE, + .paletteTag = TAG_DEX_INTERFACE, + .oam = &sOamData_Dex8x16, + .anims = sSpriteAnimTable_DexListStartMenuCursor, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_DexListStartMenuCursor, +}; + +static const struct CompressedSpriteSheet sInterfaceSpriteSheet[] = +{ + {sPokedexPlusHGSS_Interface_Gfx, 0x2000, TAG_DEX_INTERFACE}, + {sPokedexPlusHGSS_Interface_DECA_Gfx, 0x2000, TAG_DEX_INTERFACE}, + {0} +}; + +static const struct SpritePalette sInterfaceSpritePalette[] = +{ + {sPokedexPlusHGSS_Default_Pal, TAG_DEX_INTERFACE}, + {0} +}; + +// By scroll speed. Last element of each unused +static const u8 sScrollMonIncrements[] = {4, 8, 16, 32, 32}; +static const u8 sScrollTimers[] = {8, 4, 2, 1, 1}; + +static const struct BgTemplate sPokedex_BgTemplate[] = +{ + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 12, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 13, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + }, + { + .bg = 2, + .charBaseIndex = 2, + .mapBaseIndex = 14, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + }, + { + .bg = 3, + .charBaseIndex = 0, + .mapBaseIndex = 15, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0 + } +}; + +static const struct WindowTemplate sPokemonList_WindowTemplate[] = +{ + { + .bg = 2, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 32, + .height = 32, + .paletteNum = 0, + .baseBlock = 1, + }, + DUMMY_WIN_TEMPLATE +}; + +static const struct BgTemplate sInfoScreen_BgTemplate[] = +{ + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 12, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0 + }, + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 13, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 2, + .charBaseIndex = 2, + .mapBaseIndex = 14, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + }, + { + .bg = 3, + .charBaseIndex = 0, + .mapBaseIndex = 15, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + } +}; + +#define WIN_INFO 0 +#define WIN_FOOTPRINT 1 +#define WIN_CRY_WAVE 2 +#define WIN_VU_METER 3 +#define WIN_NAVIGATION_BUTTONS 4 + +static const struct WindowTemplate sInfoScreen_WindowTemplates[] = +{ + [WIN_INFO] = + { + .bg = 2, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 32, + .height = 20, + .paletteNum = 0, + .baseBlock = 1, + }, + [WIN_FOOTPRINT] = + { + .bg = 2, + .tilemapLeft = 15, //HGSSS_Ui + .tilemapTop = 7, //HGSSS_Ui + .width = 2, + .height = 2, + .paletteNum = 15, + .baseBlock = 641, + }, + [WIN_CRY_WAVE] = + { + .bg = 0, + .tilemapLeft = 0, + .tilemapTop = 12, + .width = 32, + .height = 7, + .paletteNum = 8, + .baseBlock = 645, + }, + [WIN_VU_METER] = + { + .bg = 2, + .tilemapLeft = 18, + .tilemapTop = 3, + .width = 10, + .height = 8, + .paletteNum = 9, + .baseBlock = 869, + }, + [WIN_NAVIGATION_BUTTONS] = + { + .bg = 2, + .tilemapLeft = 0, + .tilemapTop = 18, + .width = 20, + .height = 2, + .paletteNum = 15, + .baseBlock = 641, + }, + + DUMMY_WIN_TEMPLATE +}; + +#define WIN_STATS_TOPBAR 0 +#define WIN_STATS_SIDEBAR 1 +#define WIN_STATS_NAME_GENDER 2 +#define WIN_STATS_LEFT 3 +#define WIN_STATS_NAVIGATION_BUTTONS 4 +#define WIN_STATS_MOVES_TOP 5 +#define WIN_STATS_MOVES_DESCRIPTION 7 +#define WIN_STATS_MOVES_BOTTOM 8 +#define WIN_STATS_ABILITIES 9 +#define WIN_STATS_LEFT_UNUSED 10 +#define WIN_STATS_END WIN_STATS_LEFT_UNUSED +static const struct WindowTemplate sStatsScreen_WindowTemplates[] = +{ + [WIN_STATS_TOPBAR] = + { + .bg = 2, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 30, + .height = 2, + .paletteNum = 0, + .baseBlock = 1, + }, + [WIN_STATS_SIDEBAR] = + { + .bg = 2, + .tilemapLeft = 30, + .tilemapTop = 0, + .width = 2, + .height = 20, + .paletteNum = 0, + .baseBlock = 1 + 60, + }, + [WIN_STATS_NAME_GENDER] = + { + .bg = 2, + .tilemapLeft = 0, + .tilemapTop = 2, + .width = 12, + .height = 4, + .paletteNum = 0, + .baseBlock = 1 + 60 + 40, + }, + [WIN_STATS_LEFT] = + { + .bg = 2, + .tilemapLeft = 0, + .tilemapTop = 6, + .width = 12, + .height = 8, + .paletteNum = 0, + .baseBlock = 1 + 60 + 40 + 48, + }, + [WIN_STATS_NAVIGATION_BUTTONS] = + { + .bg = 2, + .tilemapLeft = 0, + .tilemapTop = 18, + .width = 12, + .height = 2, + .paletteNum = 15, + .baseBlock = 1 + 60 + 40 + 48 + 96, + }, + [WIN_STATS_MOVES_TOP] = + { + .bg = 2, + .tilemapLeft = 12, + .tilemapTop = 2, + .width = 18, + .height = 4, + .paletteNum = 0, + .baseBlock = 1 + 60 + 40 + 48 + 96 + 24, + }, + [WIN_STATS_MOVES_DESCRIPTION] = + { + .bg = 2, + .tilemapLeft = 12, + .tilemapTop = 6, + .width = 18, + .height = 4, + .paletteNum = 0, + .baseBlock = 1 + 60 + 40 + 48 + 96 + 24 + 72, + }, + [WIN_STATS_MOVES_BOTTOM] = + { + .bg = 2, + .tilemapLeft = 12, + .tilemapTop = 10, + .width = 18, + .height = 2, + .paletteNum = 0, + .baseBlock = 1 + 60 + 40 + 48 + 96 + 24 + 72 + 72, + }, + [WIN_STATS_ABILITIES] = + { + .bg = 2, + .tilemapLeft = 12, + .tilemapTop = 12, + .width = 18, + .height = 8, + .paletteNum = 0, + .baseBlock = 1 + 60 + 40 + 48 + 96 + 24 + 72 + 72 + 36, + }, + [WIN_STATS_LEFT_UNUSED] = + { + .bg = 2, + .tilemapLeft = 0, + .tilemapTop = 14, + .width = 12, + .height = 4, + .paletteNum = 0, + .baseBlock = 1 + 60 + 40 + 48 + 96 + 24 + 72 + 72 + 36 + 144, + }, + DUMMY_WIN_TEMPLATE +}; + +static const struct BgTemplate sNewEntryInfoScreen_BgTemplate[] = +{ + { + .bg = 2, + .charBaseIndex = 2, + .mapBaseIndex = 14, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + }, + { + .bg = 3, + .charBaseIndex = 1, + .mapBaseIndex = 15, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0 + }, +}; + +static const struct WindowTemplate sNewEntryInfoScreen_WindowTemplates[] = +{ + [WIN_INFO] = + { + .bg = 2, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 32, + .height = 20, + .paletteNum = 0, + .baseBlock = 1, + }, + [WIN_FOOTPRINT] = + { + .bg = 2, + .tilemapLeft = 15, //HGSSS_Ui + .tilemapTop = 7, //HGSSS_Ui + .width = 2, + .height = 2, + .paletteNum = 15, + .baseBlock = 641, + }, + DUMMY_WIN_TEMPLATE +}; + +// First character in range followed by number of characters in range for upper and lowercase +static const u8 sLetterSearchRanges[][4] = +{ + {}, // Name not specified, shouldn't be reached + [NAME_ABC] = {CHAR_A, 3, CHAR_a, 3}, + [NAME_DEF] = {CHAR_D, 3, CHAR_d, 3}, + [NAME_GHI] = {CHAR_G, 3, CHAR_g, 3}, + [NAME_JKL] = {CHAR_J, 3, CHAR_j, 3}, + [NAME_MNO] = {CHAR_M, 3, CHAR_m, 3}, + [NAME_PQR] = {CHAR_P, 3, CHAR_p, 3}, + [NAME_STU] = {CHAR_S, 3, CHAR_s, 3}, + [NAME_VWX] = {CHAR_V, 3, CHAR_v, 3}, + [NAME_YZ] = {CHAR_Y, 2, CHAR_y, 2}, +}; + +#define LETTER_IN_RANGE_UPPER(letter, range) \ + ((letter) >= sLetterSearchRanges[range][0] \ + && (letter) < sLetterSearchRanges[range][0] + sLetterSearchRanges[range][1]) \ + +#define LETTER_IN_RANGE_LOWER(letter, range) \ + ((letter) >= sLetterSearchRanges[range][2] \ + && (letter) < sLetterSearchRanges[range][2] + sLetterSearchRanges[range][3]) \ + +static const struct SearchMenuTopBarItem sSearchMenuTopBarItems[SEARCH_TOPBAR_COUNT] = +{ + [SEARCH_TOPBAR_SEARCH] = + { + .description = gText_SearchForPkmnBasedOnParameters, + .highlightX = 0, + .highlightY = 0, + .highlightWidth = 5, + }, + [SEARCH_TOPBAR_SHIFT] = + { + .description = gText_SwitchPokedexListings, + .highlightX = 6, + .highlightY = 0, + .highlightWidth = 5, + }, + [SEARCH_TOPBAR_CANCEL] = + { + .description = gText_ReturnToPokedex, + .highlightX = 12, + .highlightY = 0, + .highlightWidth = 5, + }, +}; + +static const struct SearchMenuItem sSearchMenuItems[SEARCH_COUNT] = +{ + [SEARCH_NAME] = + { + .description = gText_ListByFirstLetter, + .titleBgX = 0, + .titleBgY = 2, + .titleBgWidth = 5, + .selectionBgX = 5, + .selectionBgY = 2, + .selectionBgWidth = 12, + }, + [SEARCH_COLOR] = + { + .description = gText_ListByBodyColor, + .titleBgX = 0, + .titleBgY = 4, + .titleBgWidth = 5, + .selectionBgX = 5, + .selectionBgY = 4, + .selectionBgWidth = 12, + }, + [SEARCH_TYPE_LEFT] = + { + .description = gText_ListByType, + .titleBgX = 0, + .titleBgY = 6, + .titleBgWidth = 5, + .selectionBgX = 5, + .selectionBgY = 6, + .selectionBgWidth = 6, + }, + [SEARCH_TYPE_RIGHT] = + { + .description = gText_ListByType, + .titleBgX = 0, + .titleBgY = 6, + .titleBgWidth = 5, + .selectionBgX = 11, + .selectionBgY = 6, + .selectionBgWidth = 6, + }, + [SEARCH_ORDER] = + { + .description = gText_SelectPokedexListingMode, + .titleBgX = 0, + .titleBgY = 8, + .titleBgWidth = 5, + .selectionBgX = 5, + .selectionBgY = 8, + .selectionBgWidth = 12, + }, + [SEARCH_MODE] = + { + .description = gText_SelectPokedexMode, + .titleBgX = 0, + .titleBgY = 10, + .titleBgWidth = 5, + .selectionBgX = 5, + .selectionBgY = 10, + .selectionBgWidth = 12, + }, + [SEARCH_OK] = + { + .description = gText_ExecuteSearchSwitch, + .titleBgX = 0, + .titleBgY = 12, + .titleBgWidth = 5, + .selectionBgX = 0, + .selectionBgY = 0, + .selectionBgWidth = 0, + }, +}; + +// Left, Right, Up, Down +static const u8 sSearchMovementMap_SearchNatDex[SEARCH_COUNT][4] = +{ + [SEARCH_NAME] = + { + 0xFF, + 0xFF, + 0xFF, + SEARCH_COLOR + }, + [SEARCH_COLOR] = + { + 0xFF, + 0xFF, + SEARCH_NAME, + SEARCH_TYPE_LEFT + }, + [SEARCH_TYPE_LEFT] = + { + 0xFF, + SEARCH_TYPE_RIGHT, + SEARCH_COLOR, + SEARCH_ORDER + }, + [SEARCH_TYPE_RIGHT] = + { SEARCH_TYPE_LEFT, + 0xFF, + SEARCH_COLOR, + SEARCH_ORDER + }, + [SEARCH_ORDER] = + { + 0xFF, + 0xFF, + SEARCH_TYPE_LEFT, + SEARCH_MODE + }, + [SEARCH_MODE] = + { + 0xFF, + 0xFF, + SEARCH_ORDER, + SEARCH_OK + }, + [SEARCH_OK] = + { + 0xFF, + 0xFF, + SEARCH_MODE, + 0xFF + }, +}; + +// Left, Right, Up, Down +static const u8 sSearchMovementMap_ShiftNatDex[SEARCH_COUNT][4] = +{ + [SEARCH_NAME] = + { + 0xFF, + 0xFF, + 0xFF, + 0xFF + }, + [SEARCH_COLOR] = + { + 0xFF, + 0xFF, + 0xFF, + 0xFF + }, + [SEARCH_TYPE_LEFT] = + { + 0xFF, + 0xFF, + 0xFF, + 0xFF + }, + [SEARCH_TYPE_RIGHT] = + { + 0xFF, + 0xFF, + 0xFF, + 0xFF + }, + [SEARCH_ORDER] = + { + 0xFF, + 0xFF, + 0xFF, + SEARCH_MODE + }, + [SEARCH_MODE] = + { + 0xFF, + 0xFF, + SEARCH_ORDER, + SEARCH_OK + }, + [SEARCH_OK] = + { + 0xFF, + 0xFF, + SEARCH_MODE, + 0xFF + }, +}; + +// Left, Right, Up, Down +static const u8 sSearchMovementMap_SearchHoennDex[SEARCH_COUNT][4] = +{ + [SEARCH_NAME] = + { + 0xFF, + 0xFF, + 0xFF, + SEARCH_COLOR + }, + [SEARCH_COLOR] = + { + 0xFF, + 0xFF, + SEARCH_NAME, + SEARCH_TYPE_LEFT + }, + [SEARCH_TYPE_LEFT] = + { + 0xFF, + SEARCH_TYPE_RIGHT, + SEARCH_COLOR, + SEARCH_ORDER + }, + [SEARCH_TYPE_RIGHT] = + { SEARCH_TYPE_LEFT, + 0xFF, + SEARCH_COLOR, + SEARCH_ORDER + }, + [SEARCH_ORDER] = + { + 0xFF, + 0xFF, + SEARCH_TYPE_LEFT, + SEARCH_OK + }, + [SEARCH_MODE] = + { + 0xFF, + 0xFF, + 0xFF, + 0xFF + }, + [SEARCH_OK] = + { + 0xFF, + 0xFF, + SEARCH_ORDER, + 0xFF + }, +}; + +// Left, Right, Up, Down +static const u8 sSearchMovementMap_ShiftHoennDex[SEARCH_COUNT][4] = +{ + [SEARCH_NAME] = + { + 0xFF, + 0xFF, + 0xFF, + 0xFF + }, + [SEARCH_COLOR] = + { + 0xFF, + 0xFF, + 0xFF, + 0xFF + }, + [SEARCH_TYPE_LEFT] = + { + 0xFF, + 0xFF, + 0xFF, + 0xFF + }, + [SEARCH_TYPE_RIGHT] = + { + 0xFF, + 0xFF, + 0xFF, + 0xFF + }, + [SEARCH_ORDER] = + { + 0xFF, + 0xFF, + 0xFF, + SEARCH_OK + }, + [SEARCH_MODE] = + { + 0xFF, + 0xFF, + 0xFF, + 0xFF + }, + [SEARCH_OK] = + { + 0xFF, + 0xFF, + SEARCH_ORDER, + 0xFF + }, +}; + +static const struct SearchOptionText sDexModeOptions[] = +{ + [DEX_MODE_HOENN] = {gText_DexHoennDescription, gText_DexHoennTitle}, + [DEX_MODE_NATIONAL] = {gText_DexNatDescription, gText_DexNatTitle}, + {}, +}; + +static const struct SearchOptionText sDexOrderOptions[] = +{ + [ORDER_NUMERICAL] = {gText_DexSortNumericalDescription, gText_DexSortNumericalTitle}, + [ORDER_ALPHABETICAL] = {gText_DexSortAtoZDescription, gText_DexSortAtoZTitle}, + [ORDER_HEAVIEST] = {gText_DexSortHeaviestDescription, gText_DexSortHeaviestTitle}, + [ORDER_LIGHTEST] = {gText_DexSortLightestDescription, gText_DexSortLightestTitle}, + [ORDER_TALLEST] = {gText_DexSortTallestDescription, gText_DexSortTallestTitle}, + [ORDER_SMALLEST] = {gText_DexSortSmallestDescription, gText_DexSortSmallestTitle}, + {}, +}; + +static const struct SearchOptionText sDexSearchNameOptions[] = +{ + {gText_DexEmptyString, gText_DexSearchDontSpecify}, + [NAME_ABC] = {gText_DexEmptyString, gText_DexSearchAlphaABC}, + [NAME_DEF] = {gText_DexEmptyString, gText_DexSearchAlphaDEF}, + [NAME_GHI] = {gText_DexEmptyString, gText_DexSearchAlphaGHI}, + [NAME_JKL] = {gText_DexEmptyString, gText_DexSearchAlphaJKL}, + [NAME_MNO] = {gText_DexEmptyString, gText_DexSearchAlphaMNO}, + [NAME_PQR] = {gText_DexEmptyString, gText_DexSearchAlphaPQR}, + [NAME_STU] = {gText_DexEmptyString, gText_DexSearchAlphaSTU}, + [NAME_VWX] = {gText_DexEmptyString, gText_DexSearchAlphaVWX}, + [NAME_YZ] = {gText_DexEmptyString, gText_DexSearchAlphaYZ}, + {}, +}; + +static const struct SearchOptionText sDexSearchColorOptions[] = +{ + {gText_DexEmptyString, gText_DexSearchDontSpecify}, + [BODY_COLOR_RED + 1] = {gText_DexEmptyString, gText_DexSearchColorRed}, + [BODY_COLOR_BLUE + 1] = {gText_DexEmptyString, gText_DexSearchColorBlue}, + [BODY_COLOR_YELLOW + 1] = {gText_DexEmptyString, gText_DexSearchColorYellow}, + [BODY_COLOR_GREEN + 1] = {gText_DexEmptyString, gText_DexSearchColorGreen}, + [BODY_COLOR_BLACK + 1] = {gText_DexEmptyString, gText_DexSearchColorBlack}, + [BODY_COLOR_BROWN + 1] = {gText_DexEmptyString, gText_DexSearchColorBrown}, + [BODY_COLOR_PURPLE + 1] = {gText_DexEmptyString, gText_DexSearchColorPurple}, + [BODY_COLOR_GRAY + 1] = {gText_DexEmptyString, gText_DexSearchColorGray}, + [BODY_COLOR_WHITE + 1] = {gText_DexEmptyString, gText_DexSearchColorWhite}, + [BODY_COLOR_PINK + 1] = {gText_DexEmptyString, gText_DexSearchColorPink}, + {}, +}; + +static const struct SearchOptionText sDexSearchTypeOptions[NUMBER_OF_MON_TYPES + 1] = // + 2 for "None" and terminator, - 1 for Mystery +{ + {gText_DexEmptyString, gText_DexSearchTypeNone}, + {gText_DexEmptyString, gTypeNames[TYPE_NORMAL]}, + {gText_DexEmptyString, gTypeNames[TYPE_FIGHTING]}, + {gText_DexEmptyString, gTypeNames[TYPE_FLYING]}, + {gText_DexEmptyString, gTypeNames[TYPE_POISON]}, + {gText_DexEmptyString, gTypeNames[TYPE_GROUND]}, + {gText_DexEmptyString, gTypeNames[TYPE_ROCK]}, + {gText_DexEmptyString, gTypeNames[TYPE_BUG]}, + {gText_DexEmptyString, gTypeNames[TYPE_GHOST]}, + {gText_DexEmptyString, gTypeNames[TYPE_STEEL]}, + {gText_DexEmptyString, gTypeNames[TYPE_FIRE]}, + {gText_DexEmptyString, gTypeNames[TYPE_WATER]}, + {gText_DexEmptyString, gTypeNames[TYPE_GRASS]}, + {gText_DexEmptyString, gTypeNames[TYPE_ELECTRIC]}, + {gText_DexEmptyString, gTypeNames[TYPE_PSYCHIC]}, + {gText_DexEmptyString, gTypeNames[TYPE_ICE]}, + {gText_DexEmptyString, gTypeNames[TYPE_DRAGON]}, + {gText_DexEmptyString, gTypeNames[TYPE_DARK]}, + {gText_DexEmptyString, gTypeNames[TYPE_FAIRY]}, + {}, +}; + +static const u8 sPokedexModes[] = {DEX_MODE_HOENN, DEX_MODE_NATIONAL}; +static const u8 sOrderOptions[] = +{ + ORDER_NUMERICAL, + ORDER_ALPHABETICAL, + ORDER_HEAVIEST, + ORDER_LIGHTEST, + ORDER_TALLEST, + ORDER_SMALLEST, +}; + +static const u8 sDexSearchTypeIds[NUMBER_OF_MON_TYPES] = +{ + TYPE_NONE, + TYPE_NORMAL, + TYPE_FIGHTING, + TYPE_FLYING, + TYPE_POISON, + TYPE_GROUND, + TYPE_ROCK, + TYPE_BUG, + TYPE_GHOST, + TYPE_STEEL, + TYPE_FIRE, + TYPE_WATER, + TYPE_GRASS, + TYPE_ELECTRIC, + TYPE_PSYCHIC, + TYPE_ICE, + TYPE_DRAGON, + TYPE_DARK, + TYPE_FAIRY, +}; + +// Number pairs are the task data for tracking the cursor pos and scroll offset of each option list +// See task data defines above Task_LoadSearchMenu +static const struct SearchOption sSearchOptions[] = +{ + [SEARCH_NAME] = {sDexSearchNameOptions, 6, 7, ARRAY_COUNT(sDexSearchNameOptions) - 1}, + [SEARCH_COLOR] = {sDexSearchColorOptions, 8, 9, ARRAY_COUNT(sDexSearchColorOptions) - 1}, + [SEARCH_TYPE_LEFT] = {sDexSearchTypeOptions, 10, 11, ARRAY_COUNT(sDexSearchTypeOptions) - 1}, + [SEARCH_TYPE_RIGHT] = {sDexSearchTypeOptions, 12, 13, ARRAY_COUNT(sDexSearchTypeOptions) - 1}, + [SEARCH_ORDER] = {sDexOrderOptions, 4, 5, ARRAY_COUNT(sDexOrderOptions) - 1}, + [SEARCH_MODE] = {sDexModeOptions, 2, 3, ARRAY_COUNT(sDexModeOptions) - 1}, +}; + +static const struct BgTemplate sSearchMenu_BgTemplate[] = +{ + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 12, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 13, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + }, + { + .bg = 2, + .charBaseIndex = 2, + .mapBaseIndex = 14, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + }, + { + .bg = 3, + .charBaseIndex = 0, + .mapBaseIndex = 15, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0 + } +}; + +static const struct WindowTemplate sSearchMenu_WindowTemplate[] = +{ + { + .bg = 2, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 32, + .height = 20, + .paletteNum = 0, + .baseBlock = 0x0001, + }, + DUMMY_WIN_TEMPLATE +}; + + +//************************************ +//* * +//* MAIN * +//* * +//************************************ +void CB2_OpenPokedexPlusHGSS(void) +{ + if (!POKEDEX_PLUS_HGSS) return; // prevents the compiler from emitting static .rodata + // if the feature is disabled + switch (gMain.state) + { + case 0: + default: + SetVBlankCallback(NULL); + ResetOtherVideoRegisters(0); + DmaFillLarge16(3, 0, (u8 *)VRAM, VRAM_SIZE, 0x1000); + DmaClear32(3, OAM, OAM_SIZE); + DmaClear16(3, PLTT, PLTT_SIZE); + gMain.state = 1; + break; + case 1: + ScanlineEffect_Stop(); + ResetTasks(); + ResetSpriteData(); + ResetPaletteFade(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 8; + ResetAllPicSprites(); + gMain.state++; + break; + case 2: + sPokedexView = AllocZeroed(sizeof(struct PokedexView)); + ResetPokedexView(sPokedexView); + CreateTask(Task_OpenPokedexMainPage, 0); + sPokedexView->dexMode = gSaveBlock2Ptr->pokedex.mode; + if (!IsNationalPokedexEnabled()) + sPokedexView->dexMode = DEX_MODE_HOENN; + sPokedexView->dexOrder = gSaveBlock2Ptr->pokedex.order; + sPokedexView->selectedPokemon = sLastSelectedPokemon; + sPokedexView->pokeBallRotation = sPokeBallRotation; + sPokedexView->selectedScreen = AREA_SCREEN; + if (!IsNationalPokedexEnabled()) + { + sPokedexView->seenCount = GetHoennPokedexCount(FLAG_GET_SEEN); + sPokedexView->ownCount = GetHoennPokedexCount(FLAG_GET_CAUGHT); + } + else + { + sPokedexView->seenCount = GetNationalPokedexCount(FLAG_GET_SEEN); + sPokedexView->ownCount = GetNationalPokedexCount(FLAG_GET_CAUGHT); + } + sPokedexView->initialVOffset = 8; + gMain.state++; + break; + case 3: + EnableInterrupts(1); + SetVBlankCallback(VBlankCB_Pokedex); + SetMainCallback2(CB2_Pokedex); + CreatePokedexList(sPokedexView->dexMode, sPokedexView->dexOrder); + m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x80); + break; + } +} + +static void ResetPokedexView(struct PokedexView *pokedexView) +{ + u16 i; + + for (i = 0; i < NATIONAL_DEX_COUNT; i++) + { + pokedexView->pokedexList[i].dexNum = 0xFFFF; + pokedexView->pokedexList[i].seen = FALSE; + pokedexView->pokedexList[i].owned = FALSE; + } + pokedexView->pokedexList[NATIONAL_DEX_COUNT].dexNum = 0; + pokedexView->pokedexList[NATIONAL_DEX_COUNT].seen = FALSE; + pokedexView->pokedexList[NATIONAL_DEX_COUNT].owned = FALSE; + pokedexView->pokemonListCount = 0; + pokedexView->selectedPokemon = 0; + pokedexView->selectedPokemonBackup = 0; + pokedexView->dexMode = DEX_MODE_HOENN; + pokedexView->dexModeBackup = DEX_MODE_HOENN; + pokedexView->dexOrder = ORDER_NUMERICAL; + pokedexView->dexOrderBackup = ORDER_NUMERICAL; + pokedexView->seenCount = 0; + pokedexView->ownCount = 0; + for (i = 0; i < MAX_MONS_ON_SCREEN; i++) + pokedexView->monSpriteIds[i] = 0xFFFF; + pokedexView->pokeBallRotationStep = 0; + pokedexView->pokeBallRotationBackup = 0; + pokedexView->pokeBallRotation = 0; + pokedexView->initialVOffset = 0; + pokedexView->scrollTimer = 0; + pokedexView->scrollDirection = 0; + pokedexView->listVOffset = 0; + pokedexView->listMovingVOffset = 0; + pokedexView->scrollMonIncrement = 0; + pokedexView->maxScrollTimer = 0; + pokedexView->scrollSpeed = 0; + for (i = 0; i < ARRAY_COUNT(pokedexView->unkArr1); i++) + pokedexView->unkArr1[i] = 0; + pokedexView->currentPage = PAGE_MAIN; + pokedexView->currentPageBackup = PAGE_MAIN; + pokedexView->isSearchResults = FALSE; + pokedexView->selectedScreen = AREA_SCREEN; + pokedexView->screenSwitchState = 0; + pokedexView->menuIsOpen = 0; + pokedexView->menuCursorPos = 0; + pokedexView->menuY = 0; + for (i = 0; i < ARRAY_COUNT(pokedexView->unkArr2); i++) + pokedexView->unkArr2[i] = 0; + for (i = 0; i < ARRAY_COUNT(pokedexView->unkArr3); i++) + pokedexView->unkArr3[i] = 0; +} + +static void VBlankCB_Pokedex(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void CB2_Pokedex(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void Task_OpenPokedexMainPage(u8 taskId) +{ + sPokedexView->isSearchResults = FALSE; + sPokedexView->sEvoScreenData.fromEvoPage = FALSE; + sPokedexView->formSpecies = 0; + if (LoadPokedexListPage(PAGE_MAIN)) + gTasks[taskId].func = Task_HandlePokedexInput; +} + +#define tLoadScreenTaskId data[0] + +static void Task_HandlePokedexInput(u8 taskId) +{ + SetGpuReg(REG_OFFSET_BG0VOFS, sPokedexView->menuY); + + if (sPokedexView->menuY) + { + sPokedexView->menuY -= 8; + if (sPokedexView->menuIsOpen == FALSE && sPokedexView->menuY == 8) + { + CreateStatBars(&sPokedexView->pokedexList[sPokedexView->selectedPokemon]); + CreateStatBarsBg(); + } + } + else + { + if (JOY_NEW(A_BUTTON) && sPokedexView->pokedexList[sPokedexView->selectedPokemon].seen) + { + TryDestroyStatBars(); + UpdateSelectedMonSpriteId(); + BeginNormalPaletteFade(~(1 << (gSprites[sPokedexView->selectedMonSpriteId].oam.paletteNum + 16)), 0, 0, 0x10, RGB_BLACK); + gSprites[sPokedexView->selectedMonSpriteId].callback = SpriteCB_MoveMonForInfoScreen; + gTasks[taskId].func = Task_OpenInfoScreenAfterMonMovement; + PlaySE(SE_PIN); + FreeWindowAndBgBuffers(); + } + else if (JOY_NEW(START_BUTTON)) + { + TryDestroyStatBars(); + TryDestroyStatBarsBg(); + sPokedexView->menuY = 0; + sPokedexView->menuIsOpen = TRUE; + sPokedexView->menuCursorPos = 0; + gTasks[taskId].func = Task_HandlePokedexStartMenuInput; + PlaySE(SE_SELECT); + } + else if (JOY_NEW(SELECT_BUTTON)) + { + PlaySE(SE_SELECT); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].tLoadScreenTaskId = LoadSearchMenu(); + sPokedexView->screenSwitchState = 0; + sPokedexView->pokeBallRotationBackup = sPokedexView->pokeBallRotation; + sPokedexView->selectedPokemonBackup = sPokedexView->selectedPokemon; + sPokedexView->dexModeBackup = sPokedexView->dexMode; + sPokedexView->dexOrderBackup = sPokedexView->dexOrder; + gTasks[taskId].func = Task_WaitForExitSearch; + PlaySE(SE_PC_LOGIN); + FreeWindowAndBgBuffers(); + } + else if (JOY_NEW(B_BUTTON)) + { + TryDestroyStatBars(); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].func = Task_ClosePokedex; + PlaySE(SE_PC_OFF); + } + else + { + //Handle D-pad + sPokedexView->selectedPokemon = TryDoPokedexScroll(sPokedexView->selectedPokemon, 0xE); + if (sPokedexView->scrollTimer) + gTasks[taskId].func = Task_WaitForScroll; + else if (!sPokedexView->scrollTimer && !sPokedexView->scrollSpeed &&sPokedexView->justScrolled) + CreateStatBars(&sPokedexView->pokedexList[sPokedexView->selectedPokemon]); + } + } +} + +static void Task_WaitForScroll(u8 taskId) +{ + TryDestroyStatBars(); + if (UpdateDexListScroll(sPokedexView->scrollDirection, sPokedexView->scrollMonIncrement, sPokedexView->maxScrollTimer)) + gTasks[taskId].func = Task_HandlePokedexInput; +} + +static void Task_HandlePokedexStartMenuInput(u8 taskId) +{ + SetGpuReg(REG_OFFSET_BG0VOFS, sPokedexView->menuY); + + //If menu is not open, slide it up, on screen + if (sPokedexView->menuY != 80) + { + sPokedexView->menuY += 8; + } + else + { + if (JOY_NEW(A_BUTTON)) + { + switch (sPokedexView->menuCursorPos) + { + case 0: //BACK TO LIST + default: + gMain.newKeys |= START_BUTTON; //Exit menu + break; + case 1: //LIST TOP + sPokedexView->selectedPokemon = 0; + sPokedexView->pokeBallRotation = POKEBALL_ROTATION_TOP; + ClearMonSprites(); + CreateMonSpritesAtPos(sPokedexView->selectedPokemon, 0xE); + gMain.newKeys |= START_BUTTON; //Exit menu + break; + case 2: //LIST BOTTOM + sPokedexView->selectedPokemon = sPokedexView->pokemonListCount - 1; + sPokedexView->pokeBallRotation = sPokedexView->pokemonListCount * 16 + POKEBALL_ROTATION_BOTTOM; + ClearMonSprites(); + CreateMonSpritesAtPos(sPokedexView->selectedPokemon, 0xE); + gMain.newKeys |= START_BUTTON; //Exit menu + break; + case 3: //CLOSE POKEDEX + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].func = Task_ClosePokedex; + PlaySE(SE_PC_OFF); + break; + } + } + + //Exit menu when Start or B is pressed + if (JOY_NEW(START_BUTTON | B_BUTTON)) + { + sPokedexView->menuIsOpen = FALSE; + gTasks[taskId].func = Task_HandlePokedexInput; + PlaySE(SE_SELECT); + } + else if (JOY_REPEAT(DPAD_UP) && sPokedexView->menuCursorPos != 0) + { + sPokedexView->menuCursorPos--; + PlaySE(SE_SELECT); + } + else if (JOY_REPEAT(DPAD_DOWN) && sPokedexView->menuCursorPos < 3) + { + sPokedexView->menuCursorPos++; + PlaySE(SE_SELECT); + } + } +} + +// Opening the info screen from list view. Pokémon sprite is moving to its new position, wait for it to arrive +static void Task_OpenInfoScreenAfterMonMovement(u8 taskId) +{ + if (gSprites[sPokedexView->selectedMonSpriteId].x == MON_PAGE_X && gSprites[sPokedexView->selectedMonSpriteId].y == MON_PAGE_Y) + { + sPokedexView->currentPageBackup = sPokedexView->currentPage; + gTasks[taskId].tLoadScreenTaskId = LoadInfoScreen(&sPokedexView->pokedexList[sPokedexView->selectedPokemon], sPokedexView->selectedMonSpriteId); + gTasks[taskId].func = Task_WaitForExitInfoScreen; + } +} + +static void Task_WaitForExitInfoScreen(u8 taskId) +{ + if (gTasks[gTasks[taskId].tLoadScreenTaskId].isActive) + { + // While active, handle scroll input + if (sPokedexView->currentPage == PAGE_INFO && !IsInfoScreenScrolling(gTasks[taskId].tLoadScreenTaskId) && TryDoInfoScreenScroll()) + StartInfoScreenScroll(&sPokedexView->pokedexList[sPokedexView->selectedPokemon], gTasks[taskId].tLoadScreenTaskId); + } + else + { + // Exiting, back to list view + sLastSelectedPokemon = sPokedexView->selectedPokemon; + sPokeBallRotation = sPokedexView->pokeBallRotation; + gTasks[taskId].func = Task_OpenPokedexMainPage; + } +} + + +static void Task_ClosePokedex(u8 taskId) +{ + if (!gPaletteFade.active) + { + gSaveBlock2Ptr->pokedex.mode = sPokedexView->dexMode; + if (!IsNationalPokedexEnabled()) + gSaveBlock2Ptr->pokedex.mode = DEX_MODE_HOENN; + gSaveBlock2Ptr->pokedex.order = sPokedexView->dexOrder; + ClearMonSprites(); + FreeWindowAndBgBuffers(); + DestroyTask(taskId); + SetMainCallback2(CB2_ReturnToFieldWithOpenMenu); + m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100); + Free(sPokedexView); + } +} + +static void LoadPokedexBgPalette(bool8 isSearchResults) +{ + if (!HGSS_DARK_MODE) + { + if (isSearchResults == TRUE) + LoadPalette(sPokedexPlusHGSS_SearchResults_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + else if (!IsNationalPokedexEnabled()) + LoadPalette(sPokedexPlusHGSS_Default_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + else + LoadPalette(sPokedexPlusHGSS_National_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + LoadPalette(GetOverworldTextboxPalettePtr(), 0xF0, 32); + } + else + { + if (isSearchResults == TRUE) + LoadPalette(sPokedexPlusHGSS_SearchResults_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + else if (!IsNationalPokedexEnabled()) + LoadPalette(sPokedexPlusHGSS_Default_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + else + LoadPalette(sPokedexPlusHGSS_National_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(6 * 16 - 1)); + LoadPalette(GetOverworldTextboxPalettePtr(), 0xF0, 32); + } + +} + + +//************************************ +//* * +//* Main scrolling list screen * +//* * +//************************************ + +// For loading main pokedex page or pokedex search results +static bool8 LoadPokedexListPage(u8 page) +{ + switch (gMain.state) + { + case 0: + default: + if (gPaletteFade.active) + return 0; + SetVBlankCallback(NULL); + sPokedexView->currentPage = page; + ResetOtherVideoRegisters(0); + SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, sPokedex_BgTemplate, ARRAY_COUNT(sPokedex_BgTemplate)); + SetBgTilemapBuffer(3, AllocZeroed(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(2, AllocZeroed(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(0, AllocZeroed(BG_SCREEN_SIZE)); + if (!HGSS_DECAPPED) + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_MenuList_Gfx, 0x2000, 0, 0); + else + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_MenuList_DECA_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(1, sPokedexPlusHGSS_ScreenList_Tilemap, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenListUnderlay_Tilemap, 0, 0); + if (page == PAGE_MAIN) + CopyToBgTilemapBuffer(0, sPokedexPlusHGSS_StartMenuMain_Tilemap, 0, 0x280); + else + CopyToBgTilemapBuffer(0, sPokedexPlusHGSS_StartMenuSearchResults_Tilemap, 0, 0x280); + ResetPaletteFade(); + if (page == PAGE_MAIN) + sPokedexView->isSearchResults = FALSE; + else + sPokedexView->isSearchResults = TRUE; + LoadPokedexBgPalette(sPokedexView->isSearchResults); + InitWindows(sPokemonList_WindowTemplate); + DeactivateAllTextPrinters(); + PutWindowTilemap(0); + CopyWindowToVram(0, COPYWIN_FULL); + gMain.state = 1; + break; + case 1: + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 8; + LoadCompressedSpriteSheet(&sInterfaceSpriteSheet[HGSS_DECAPPED]); + LoadSpritePalettes(sInterfaceSpritePalette); + LoadSpritePalettes(sStatBarSpritePal); + CreateInterfaceSprites(page); + gMain.state++; + break; + case 2: + gMain.state++; + break; + case 3: + if (page == PAGE_MAIN) + CreatePokedexList(sPokedexView->dexMode, sPokedexView->dexOrder); + CreateMonSpritesAtPos(sPokedexView->selectedPokemon, 0xE); + sPokedexView->statBarsSpriteId = 0xFF; //stat bars + CreateStatBars(&sPokedexView->pokedexList[sPokedexView->selectedPokemon]); //stat bars + sPokedexView->statBarsBgSpriteId = 0xFF; //stat bars background + CreateStatBarsBg(); //stat bars background + sPokedexView->menuIsOpen = FALSE; + sPokedexView->menuY = 0; + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + gMain.state++; + break; + case 4: + BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK); + SetVBlankCallback(VBlankCB_Pokedex); + gMain.state++; + break; + case 5: + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_ALL | WININ_WIN1_ALL); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_ALL | WINOUT_WINOBJ_BG0 | WINOUT_WINOBJ_BG2 | WINOUT_WINOBJ_BG3 | WINOUT_WINOBJ_OBJ); + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + SetGpuReg(REG_OFFSET_WIN1H, 0); + SetGpuReg(REG_OFFSET_WIN1V, 0); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_OBJWIN_ON); + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + gMain.state++; + break; + case 6: + if (!gPaletteFade.active) + { + gMain.state = 0; + return TRUE; + } + break; + } + return FALSE; +} + +static void CreatePokedexList(u8 dexMode, u8 order) +{ + u16 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever. +#define temp_dexCount vars[0] +#define temp_isHoennDex vars[1] +#define temp_dexNum vars[2] + s16 i; + + sPokedexView->pokemonListCount = 0; + + switch (dexMode) + { + default: + case DEX_MODE_HOENN: + temp_dexCount = HOENN_DEX_COUNT; + temp_isHoennDex = TRUE; + break; + case DEX_MODE_NATIONAL: + if (IsNationalPokedexEnabled()) + { + temp_dexCount = NATIONAL_DEX_COUNT; + temp_isHoennDex = FALSE; + } + else + { + temp_dexCount = HOENN_DEX_COUNT; + temp_isHoennDex = TRUE; + } + break; + } + + switch (order) + { + case ORDER_NUMERICAL: + if (temp_isHoennDex) + { + for (i = 0; i < temp_dexCount; i++) + { + temp_dexNum = HoennToNationalOrder(i + 1); + sPokedexView->pokedexList[i].dexNum = temp_dexNum; + sPokedexView->pokedexList[i].seen = GetSetPokedexFlag(temp_dexNum, FLAG_GET_SEEN); + sPokedexView->pokedexList[i].owned = GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT); + if (sPokedexView->pokedexList[i].seen) + sPokedexView->pokemonListCount = i + 1; + } + } + else + { + s16 r5, r10; + for (i = 0, r5 = 0, r10 = 0; i < temp_dexCount; i++) + { + temp_dexNum = i + 1; + if (GetSetPokedexFlag(temp_dexNum, FLAG_GET_SEEN)) + r10 = 1; + if (r10) + { + sPokedexView->pokedexList[r5].dexNum = temp_dexNum; + sPokedexView->pokedexList[r5].seen = GetSetPokedexFlag(temp_dexNum, FLAG_GET_SEEN); + sPokedexView->pokedexList[r5].owned = GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT); + if (sPokedexView->pokedexList[r5].seen) + sPokedexView->pokemonListCount = r5 + 1; + r5++; + } + } + } + break; + case ORDER_ALPHABETICAL: + for (i = 0; i < NUM_SPECIES - 1; i++) + { + temp_dexNum = gPokedexOrder_Alphabetical[i]; + + if (NationalToHoennOrder(temp_dexNum) <= temp_dexCount && GetSetPokedexFlag(temp_dexNum, FLAG_GET_SEEN)) + { + sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = temp_dexNum; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = TRUE; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT); + sPokedexView->pokemonListCount++; + } + } + break; + case ORDER_HEAVIEST: + for (i = NATIONAL_DEX_COUNT - 1; i >= 0; i--) + { + temp_dexNum = gPokedexOrder_Weight[i]; + + if (NationalToHoennOrder(temp_dexNum) <= temp_dexCount && GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT)) + { + sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = temp_dexNum; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = TRUE; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = TRUE; + sPokedexView->pokemonListCount++; + } + } + break; + case ORDER_LIGHTEST: + for (i = 0; i < NATIONAL_DEX_COUNT; i++) + { + temp_dexNum = gPokedexOrder_Weight[i]; + + if (NationalToHoennOrder(temp_dexNum) <= temp_dexCount && GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT)) + { + sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = temp_dexNum; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = TRUE; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = TRUE; + sPokedexView->pokemonListCount++; + } + } + break; + case ORDER_TALLEST: + for (i = NATIONAL_DEX_COUNT - 1; i >= 0; i--) + { + temp_dexNum = gPokedexOrder_Height[i]; + + if (NationalToHoennOrder(temp_dexNum) <= temp_dexCount && GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT)) + { + sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = temp_dexNum; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = TRUE; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = TRUE; + sPokedexView->pokemonListCount++; + } + } + break; + case ORDER_SMALLEST: + for (i = 0; i < NATIONAL_DEX_COUNT; i++) + { + temp_dexNum = gPokedexOrder_Height[i]; + + if (NationalToHoennOrder(temp_dexNum) <= temp_dexCount && GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT)) + { + sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = temp_dexNum; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = TRUE; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = TRUE; + sPokedexView->pokemonListCount++; + } + } + break; + } + + for (i = sPokedexView->pokemonListCount; i < NATIONAL_DEX_COUNT; i++) + { + sPokedexView->pokedexList[i].dexNum = 0xFFFF; + sPokedexView->pokedexList[i].seen = FALSE; + sPokedexView->pokedexList[i].owned = FALSE; + } +} + +static void PrintMonDexNumAndName(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top) +{ + u8 color[3]; + + color[0] = TEXT_COLOR_TRANSPARENT; + color[1] = TEXT_DYNAMIC_COLOR_6; + color[2] = TEXT_COLOR_LIGHT_GRAY; + AddTextPrinterParameterized4(windowId, fontId, left * 8 - 4, (top * 8) + 1, 0, 0, color, TEXT_SKIP_DRAW, str); +} + +static void PrintMonDexNumAndName_2(u8 windowId, u8 fontId, const u8* str, u8 left, u8 top) //offset for closer numer + text +{ + u8 color[3]; + + color[0] = TEXT_COLOR_TRANSPARENT; + color[1] = TEXT_DYNAMIC_COLOR_6; + color[2] = TEXT_COLOR_LIGHT_GRAY; + AddTextPrinterParameterized4(windowId, fontId, left * 8 - 13, (top * 8) + 1, 0, 0, color, -1, str); +} + +// u16 ignored is passed but never used +#define MON_LIST_X 2 +static void CreateMonListEntry(u8 position, u16 b, u16 ignored) +{ + s16 entryNum; + u16 i; + u16 vOffset; + + switch (position) + { + case 0: // Initial + default: + entryNum = b - 5; + for (i = 0; i <= 10; i++) + { + if (entryNum < 0 || entryNum >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[entryNum].dexNum == 0xFFFF) + { + ClearMonListEntry(MON_LIST_X, i * 2, ignored); + } + else + { + ClearMonListEntry(MON_LIST_X, i * 2, ignored); + if (sPokedexView->pokedexList[entryNum].seen) + { + CreateMonDexNum(entryNum, MON_LIST_X+1, i * 2, ignored); + CreateCaughtBall(sPokedexView->pokedexList[entryNum].owned, MON_LIST_X, i * 2, ignored); + CreateMonName(sPokedexView->pokedexList[entryNum].dexNum, MON_LIST_X + 5, i * 2); + } + else + { + CreateMonDexNum(entryNum, MON_LIST_X+1, i * 2, ignored); + CreateCaughtBall(FALSE, MON_LIST_X, i * 2, ignored); + CreateMonName(0, MON_LIST_X + 5, i * 2); + } + } + entryNum++; + } + break; + case 1: // Up + entryNum = b - 5; + if (entryNum < 0 || entryNum >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[entryNum].dexNum == 0xFFFF) + { + ClearMonListEntry(MON_LIST_X, sPokedexView->listVOffset * 2, ignored); + } + else + { + ClearMonListEntry(MON_LIST_X, sPokedexView->listVOffset * 2, ignored); + if (sPokedexView->pokedexList[entryNum].seen) + { + CreateMonDexNum(entryNum, MON_LIST_X+1, sPokedexView->listVOffset * 2, ignored); + CreateCaughtBall(sPokedexView->pokedexList[entryNum].owned, MON_LIST_X, sPokedexView->listVOffset * 2, ignored); + CreateMonName(sPokedexView->pokedexList[entryNum].dexNum, MON_LIST_X + 5, sPokedexView->listVOffset * 2); + } + else + { + CreateMonDexNum(entryNum, MON_LIST_X+1, sPokedexView->listVOffset * 2, ignored); + CreateCaughtBall(FALSE, MON_LIST_X, sPokedexView->listVOffset * 2, ignored); + CreateMonName(0, MON_LIST_X + 5, sPokedexView->listVOffset * 2); + } + } + break; + case 2: // Down + entryNum = b + 5; + vOffset = sPokedexView->listVOffset + 10; + if (vOffset >= LIST_SCROLL_STEP) + vOffset -= LIST_SCROLL_STEP; + if (entryNum < 0 || entryNum >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[entryNum].dexNum == 0xFFFF) + ClearMonListEntry(MON_LIST_X, vOffset * 2, ignored); + else + { + ClearMonListEntry(MON_LIST_X, vOffset * 2, ignored); + if (sPokedexView->pokedexList[entryNum].seen) + { + CreateMonDexNum(entryNum, MON_LIST_X+1, vOffset * 2, ignored); + CreateCaughtBall(sPokedexView->pokedexList[entryNum].owned, MON_LIST_X, vOffset * 2, ignored); + CreateMonName(sPokedexView->pokedexList[entryNum].dexNum, MON_LIST_X + 5, vOffset * 2); + } + else + { + CreateMonDexNum(entryNum, MON_LIST_X+1, vOffset * 2, ignored); + CreateCaughtBall(FALSE, MON_LIST_X, vOffset * 2, ignored); + CreateMonName(0, MON_LIST_X + 5, vOffset * 2); + } + } + break; + } + CopyWindowToVram(0, COPYWIN_GFX); +} + +static void CreateMonDexNum(u16 entryNum, u8 left, u8 top, u16 unused) +{ + u8 text[5]; + u16 dexNum, offset = 0; + + dexNum = sPokedexView->pokedexList[entryNum].dexNum; + if (sPokedexView->dexMode == DEX_MODE_HOENN) + dexNum = NationalToHoennOrder(dexNum); + memcpy(text, sText_No0000, ARRAY_COUNT(sText_No0000)); + if (NATIONAL_DEX_COUNT > 999 && sPokedexView->dexMode != DEX_MODE_HOENN) + { + text[0] = CHAR_0 + dexNum / 1000; + offset++; + } + text[offset++] = CHAR_0 + (dexNum % 1000) / 100; + text[offset++] = CHAR_0 + ((dexNum % 1000) % 100) / 10; + text[offset++] = CHAR_0 + ((dexNum % 1000) % 100) % 10; + text[offset++] = EOS; + PrintMonDexNumAndName(0, FONT_NARROW, text, left, top); +} + +static void CreateCaughtBall(bool16 owned, u8 x, u8 y, u16 unused) +{ + if (owned) + BlitBitmapToWindow(0, sCaughtBall_Gfx, x * 6, y * 8, 8, 16); + else + FillWindowPixelRect(0, PIXEL_FILL(0), x * 6, y * 8, 8, 16); +} + +static u8 CreateMonName(u16 num, u8 left, u8 top) +{ + const u8 *str; + + num = NationalPokedexNumToSpecies(num); + if (num) + str = GetSpeciesName(num); + else + str = sText_TenDashes; + PrintMonDexNumAndName_2(0, FONT_NARROW, str, left, top); + return StringLength(str); +} + +static void ClearMonListEntry(u8 x, u8 y, u16 unused) +{ + FillWindowPixelRect(0, PIXEL_FILL(0), x * 6, y * 8, 0x60, 16); +} + +// u16 ignored is passed but never used +static void CreateMonSpritesAtPos(u16 selectedMon, u16 ignored) +{ + u8 i; + u16 dexNum; + u8 spriteId; + + gPaletteFade.bufferTransferDisabled = TRUE; + + for (i = 0; i < MAX_MONS_ON_SCREEN; i++) + sPokedexView->monSpriteIds[i] = 0xFFFF; + sPokedexView->selectedMonSpriteId = 0xFFFF; + + // Create top mon sprite + dexNum = GetPokemonSpriteToDisplay(selectedMon - 1); + if (dexNum != 0xFFFF) + { + spriteId = CreatePokedexMonSprite(dexNum, SCROLLING_MON_X, 0x50); + gSprites[spriteId].callback = SpriteCB_PokedexListMonSprite; + gSprites[spriteId].data[5] = -32; + } + + // Create mid mon sprite + dexNum = GetPokemonSpriteToDisplay(selectedMon); + if (dexNum != 0xFFFF) + { + spriteId = CreatePokedexMonSprite(dexNum, SCROLLING_MON_X, 0x50); + gSprites[spriteId].callback = SpriteCB_PokedexListMonSprite; + gSprites[spriteId].data[5] = 0; + } + + // Create bottom mon sprite + dexNum = GetPokemonSpriteToDisplay(selectedMon + 1); + if (dexNum != 0xFFFF) + { + spriteId = CreatePokedexMonSprite(dexNum, SCROLLING_MON_X, 0x50); + gSprites[spriteId].callback = SpriteCB_PokedexListMonSprite; + gSprites[spriteId].data[5] = 32; + } + + CreateMonListEntry(0, selectedMon, ignored); + SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset); + + sPokedexView->listVOffset = 0; + sPokedexView->listMovingVOffset = 0; + + gPaletteFade.bufferTransferDisabled = FALSE; +} + +static bool8 UpdateDexListScroll(u8 direction, u8 monMoveIncrement, u8 scrollTimerMax) +{ + u16 i; + u8 step; + + if (sPokedexView->scrollTimer) + { + sPokedexView->scrollTimer--; + switch (direction) + { + case 1: // Up + for (i = 0; i < MAX_MONS_ON_SCREEN; i++) + { + if (sPokedexView->monSpriteIds[i] != 0xFFFF) + gSprites[sPokedexView->monSpriteIds[i]].data[5] += monMoveIncrement; + } + step = LIST_SCROLL_STEP * (scrollTimerMax - sPokedexView->scrollTimer) / scrollTimerMax; + SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset + sPokedexView->listMovingVOffset * LIST_SCROLL_STEP - step); + sPokedexView->pokeBallRotation -= sPokedexView->pokeBallRotationStep; + break; + case 2: // Down + for (i = 0; i < MAX_MONS_ON_SCREEN; i++) + { + if (sPokedexView->monSpriteIds[i] != 0xFFFF) + gSprites[sPokedexView->monSpriteIds[i]].data[5] -= monMoveIncrement; + } + step = LIST_SCROLL_STEP * (scrollTimerMax - sPokedexView->scrollTimer) / scrollTimerMax; + SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset + sPokedexView->listMovingVOffset * LIST_SCROLL_STEP + step); + sPokedexView->pokeBallRotation += sPokedexView->pokeBallRotationStep; + break; + } + return FALSE; + } + else + { + SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset + sPokedexView->listVOffset * LIST_SCROLL_STEP); + return TRUE; + } +} + +static void CreateScrollingPokemonSprite(u8 direction, u16 selectedMon) +{ + u16 dexNum; + u8 spriteId; + + sPokedexView->listMovingVOffset = sPokedexView->listVOffset; + switch (direction) + { + case 1: // up + dexNum = GetPokemonSpriteToDisplay(selectedMon - 1); + if (dexNum != 0xFFFF) + { + spriteId = CreatePokedexMonSprite(dexNum, SCROLLING_MON_X, 0x50); + gSprites[spriteId].callback = SpriteCB_PokedexListMonSprite; + gSprites[spriteId].data[5] = -64; + } + if (sPokedexView->listVOffset > 0) + sPokedexView->listVOffset--; + else + sPokedexView->listVOffset = LIST_SCROLL_STEP - 1; + break; + case 2: // down + dexNum = GetPokemonSpriteToDisplay(selectedMon + 1); + if (dexNum != 0xFFFF) + { + spriteId = CreatePokedexMonSprite(dexNum, SCROLLING_MON_X, 0x50); + gSprites[spriteId].callback = SpriteCB_PokedexListMonSprite; + gSprites[spriteId].data[5] = 64; + } + if (sPokedexView->listVOffset < LIST_SCROLL_STEP - 1) + sPokedexView->listVOffset++; + else + sPokedexView->listVOffset = 0; + break; + } +} + +// u16 ignored is passed but never used +static u16 TryDoPokedexScroll(u16 selectedMon, u16 ignored) +{ + u8 scrollTimer; + u8 scrollMonIncrement; + u8 i; + u16 startingPos; + u8 scrollDir = 0; + + if (JOY_HELD(DPAD_UP) && (selectedMon > 0)) + { + scrollDir = 1; + selectedMon = GetNextPosition(1, selectedMon, 0, sPokedexView->pokemonListCount - 1); + CreateScrollingPokemonSprite(1, selectedMon); + CreateMonListEntry(1, selectedMon, ignored); + sPokedexView->justScrolled = TRUE; + PlaySE(SE_DEX_SCROLL); + } + else if (JOY_HELD(DPAD_DOWN) && (selectedMon < sPokedexView->pokemonListCount - 1)) + { + scrollDir = 2; + selectedMon = GetNextPosition(0, selectedMon, 0, sPokedexView->pokemonListCount - 1); + CreateScrollingPokemonSprite(2, selectedMon); + CreateMonListEntry(2, selectedMon, ignored); + sPokedexView->justScrolled = TRUE; + PlaySE(SE_DEX_SCROLL); + } + else if (JOY_NEW(DPAD_LEFT) && (selectedMon > 0)) + { + startingPos = selectedMon; + + for (i = 0; i < 7; i++) + selectedMon = GetNextPosition(1, selectedMon, 0, sPokedexView->pokemonListCount - 1); + sPokedexView->pokeBallRotation += 16 * (selectedMon - startingPos); + ClearMonSprites(); + CreateMonSpritesAtPos(selectedMon, 0xE); + sPokedexView->justScrolled = TRUE; + PlaySE(SE_DEX_PAGE); + } + else if (JOY_NEW(DPAD_RIGHT) && (selectedMon < sPokedexView->pokemonListCount - 1)) + { + startingPos = selectedMon; + for (i = 0; i < 7; i++) + selectedMon = GetNextPosition(0, selectedMon, 0, sPokedexView->pokemonListCount - 1); + sPokedexView->pokeBallRotation += 16 * (selectedMon - startingPos); + ClearMonSprites(); + CreateMonSpritesAtPos(selectedMon, 0xE); + sPokedexView->justScrolled = TRUE; + PlaySE(SE_DEX_PAGE); + } + + if (scrollDir == 0) + { + // Left/right input just snaps up/down, no scrolling + sPokedexView->scrollSpeed = 0; + return selectedMon; + } + + scrollMonIncrement = sScrollMonIncrements[sPokedexView->scrollSpeed / 4]; + scrollTimer = sScrollTimers[sPokedexView->scrollSpeed / 4]; + sPokedexView->scrollTimer = scrollTimer; + sPokedexView->maxScrollTimer = scrollTimer; + sPokedexView->scrollMonIncrement = scrollMonIncrement; + sPokedexView->scrollDirection = scrollDir; + sPokedexView->pokeBallRotationStep = scrollMonIncrement / 2; + UpdateDexListScroll(sPokedexView->scrollDirection, sPokedexView->scrollMonIncrement, sPokedexView->maxScrollTimer); + if (sPokedexView->scrollSpeed < 12) + sPokedexView->scrollSpeed++; + return selectedMon; +} + +static void UpdateSelectedMonSpriteId(void) +{ + u16 i; + + for (i = 0; i < MAX_MONS_ON_SCREEN; i++) + { + u16 spriteId = sPokedexView->monSpriteIds[i]; + + if (gSprites[spriteId].x2 == 0 && gSprites[spriteId].y2 == 0 && spriteId != 0xFFFF) + sPokedexView->selectedMonSpriteId = spriteId; + } +} + +static bool8 TryDoInfoScreenScroll(void) +{ + u16 nextPokemon; + u16 selectedPokemon = sPokedexView->selectedPokemon; + + if (sPokedexView->sEvoScreenData.fromEvoPage) + return FALSE; + + if (JOY_NEW(DPAD_UP) && selectedPokemon) + { + nextPokemon = selectedPokemon; + while (nextPokemon != 0) + { + nextPokemon = GetNextPosition(1, nextPokemon, 0, sPokedexView->pokemonListCount - 1); + + if (sPokedexView->pokedexList[nextPokemon].seen) + { + selectedPokemon = nextPokemon; + break; + } + } + + if (sPokedexView->selectedPokemon == selectedPokemon) + return FALSE; + else + { + sPokedexView->selectedPokemon = selectedPokemon; + sPokedexView->pokeBallRotation -= 16; + return TRUE; + } + } + else if (JOY_NEW(DPAD_DOWN) && selectedPokemon < sPokedexView->pokemonListCount - 1) + { + nextPokemon = selectedPokemon; + while (nextPokemon < sPokedexView->pokemonListCount - 1) + { + nextPokemon = GetNextPosition(0, nextPokemon, 0, sPokedexView->pokemonListCount - 1); + + if (sPokedexView->pokedexList[nextPokemon].seen) + { + selectedPokemon = nextPokemon; + break; + } + } + + if (sPokedexView->selectedPokemon == selectedPokemon) + return FALSE; + else + { + sPokedexView->selectedPokemon = selectedPokemon; + sPokedexView->pokeBallRotation += 16; + return TRUE; + } + } + return FALSE; +} + +static u8 ClearMonSprites(void) +{ + u16 i; + + for (i = 0; i < MAX_MONS_ON_SCREEN; i++) + { + if (sPokedexView->monSpriteIds[i] != 0xFFFF) + { + FreeAndDestroyMonPicSprite(sPokedexView->monSpriteIds[i]); + sPokedexView->monSpriteIds[i] = 0xFFFF; + } + } + return FALSE; +} + +static u16 GetPokemonSpriteToDisplay(u16 species) +{ + if (species >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[species].dexNum == 0xFFFF) + return 0xFFFF; + else if (sPokedexView->pokedexList[species].seen) + return sPokedexView->pokedexList[species].dexNum; + else + return 0; +} + +static u32 CreatePokedexMonSprite(u16 num, s16 x, s16 y) +{ + u8 i; + + for (i = 0; i < MAX_MONS_ON_SCREEN; i++) + { + if (sPokedexView->monSpriteIds[i] == 0xFFFF) + { + u8 spriteId = CreateMonSpriteFromNationalDexNumberHGSS(num, x, y, i); + + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId].oam.priority = 3; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = i; + gSprites[spriteId].data[2] = NationalPokedexNumToSpecies(num); + sPokedexView->monSpriteIds[i] = spriteId; + return spriteId; + } + } + return 0xFFFF; +} + +#define sIsDownArrow data[1] +#define LIST_RIGHT_SIDE_TEXT_X 204 +#define LIST_RIGHT_SIDE_TEXT_X_OFFSET 13 +#define LIST_RIGHT_SIDE_TEXT_Y_OFFSET 13 +static void CreateInterfaceSprites(u8 page) +{ + u8 spriteId; + u16 digitNum; + bool32 drawNextDigit; + + // Scroll arrows + spriteId = CreateSprite(&sScrollArrowSpriteTemplate, 10, 4, 0); + gSprites[spriteId].sIsDownArrow = FALSE; + spriteId = CreateSprite(&sScrollArrowSpriteTemplate, 10, 156, 0); + gSprites[spriteId].sIsDownArrow = TRUE; + gSprites[spriteId].vFlip = TRUE; + + CreateSprite(&sScrollBarSpriteTemplate, 6, 20, 0); + + if (!IsNationalPokedexEnabled() && page == PAGE_MAIN) + { + // Hoenn text + CreateSprite(&sHoennNationalTextSpriteTemplate, LIST_RIGHT_SIDE_TEXT_X, 40 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET - 6, 1); + // Hoenn seen + CreateSprite(&sSeenOwnTextSpriteTemplate, LIST_RIGHT_SIDE_TEXT_X, 45 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET + 6, 1); + // Hoenn own + spriteId = CreateSprite(&sSeenOwnTextSpriteTemplate, LIST_RIGHT_SIDE_TEXT_X, 55 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET + 7, 1); + StartSpriteAnim(&gSprites[spriteId], 1); + + // Hoenn seen value - 100s + drawNextDigit = FALSE; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, LIST_RIGHT_SIDE_TEXT_X + LIST_RIGHT_SIDE_TEXT_X_OFFSET, 45 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = sPokedexView->seenCount / 100; + StartSpriteAnim(&gSprites[spriteId], digitNum); + if (digitNum != 0) + drawNextDigit = TRUE; + else + gSprites[spriteId].invisible = TRUE; + + // Hoenn seen value - 10s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, LIST_RIGHT_SIDE_TEXT_X + LIST_RIGHT_SIDE_TEXT_X_OFFSET + 8, 45 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = (sPokedexView->seenCount % 100) / 10; + if (digitNum != 0 || drawNextDigit) + StartSpriteAnim(&gSprites[spriteId], digitNum); + else + gSprites[spriteId].invisible = TRUE; + + // Hoenn seen value - 1s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, LIST_RIGHT_SIDE_TEXT_X + LIST_RIGHT_SIDE_TEXT_X_OFFSET + 16, 45 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = (sPokedexView->seenCount % 100) % 10; + StartSpriteAnim(&gSprites[spriteId], digitNum); + + + // Hoenn owned value - 100s + drawNextDigit = FALSE; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, LIST_RIGHT_SIDE_TEXT_X + LIST_RIGHT_SIDE_TEXT_X_OFFSET, 55 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = sPokedexView->ownCount / 100; + StartSpriteAnim(&gSprites[spriteId], digitNum); + if (digitNum != 0) + drawNextDigit = TRUE; + else + gSprites[spriteId].invisible = TRUE; + + // Hoenn owned value - 10s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, LIST_RIGHT_SIDE_TEXT_X + LIST_RIGHT_SIDE_TEXT_X_OFFSET + 8, 55 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = (sPokedexView->ownCount % 100) / 10; + if (digitNum != 0 || drawNextDigit) + StartSpriteAnim(&gSprites[spriteId], digitNum); + else + gSprites[spriteId].invisible = TRUE; + + // Hoenn owned value - 1s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, LIST_RIGHT_SIDE_TEXT_X + LIST_RIGHT_SIDE_TEXT_X_OFFSET + 16, 55 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = (sPokedexView->ownCount % 100) % 10; + StartSpriteAnim(&gSprites[spriteId], digitNum); + } + else if (page == PAGE_MAIN) + { + u16 seenOwnedCount; + u8 counterXDist = 6; + u8 counterX1s = LIST_RIGHT_SIDE_TEXT_X + LIST_RIGHT_SIDE_TEXT_X_OFFSET + 16 - (sPokedexView->seenCount > 999 ? 0 : 1); + u8 counterX10s = counterX1s - counterXDist; + u8 counterX100s = counterX10s - counterXDist; + u8 counterX1000s = counterX100s - counterXDist; + + // Hoenn text + CreateSprite(&sHoennNationalTextSpriteTemplate, LIST_RIGHT_SIDE_TEXT_X, 40 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET - 6, 1); + // Hoenn seen + CreateSprite(&sSeenOwnTextSpriteTemplate, LIST_RIGHT_SIDE_TEXT_X, 45 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET + 6, 1); + // Hoenn own + spriteId = CreateSprite(&sSeenOwnTextSpriteTemplate, LIST_RIGHT_SIDE_TEXT_X, 55 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET + 7, 1); + StartSpriteAnim(&gSprites[spriteId], 1); + + // National text + spriteId = CreateSprite(&sHoennNationalTextSpriteTemplate, LIST_RIGHT_SIDE_TEXT_X, 73 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET - 6, 1); + StartSpriteAnim(&gSprites[spriteId], 1); + // National seen + CreateSprite(&sSeenOwnTextSpriteTemplate, LIST_RIGHT_SIDE_TEXT_X, 78 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET + 6, 1); + // National own + spriteId = CreateSprite(&sSeenOwnTextSpriteTemplate, LIST_RIGHT_SIDE_TEXT_X, 88 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET + 6, 1); + StartSpriteAnim(&gSprites[spriteId], 1); + + // Hoenn seen value - 100s + seenOwnedCount = GetHoennPokedexCount(FLAG_GET_SEEN); + drawNextDigit = FALSE; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX100s, 45 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = seenOwnedCount / 100; + StartSpriteAnim(&gSprites[spriteId], digitNum); + if (digitNum != 0) + drawNextDigit = TRUE; + else + gSprites[spriteId].invisible = TRUE; + + // Hoenn seen value - 10s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX10s, 45 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = (seenOwnedCount % 100) / 10; + if (digitNum != 0 || drawNextDigit) + StartSpriteAnim(&gSprites[spriteId], digitNum); + else + gSprites[spriteId].invisible = TRUE; + + // Hoenn seen value - 1s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1s, 45 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = (seenOwnedCount % 100) % 10; + StartSpriteAnim(&gSprites[spriteId], digitNum); + + seenOwnedCount = GetHoennPokedexCount(FLAG_GET_CAUGHT); + // Hoenn owned value - 100s + drawNextDigit = FALSE; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX100s, 55 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = seenOwnedCount / 100; + StartSpriteAnim(&gSprites[spriteId], digitNum); + if (digitNum != 0) + drawNextDigit = TRUE; + else + gSprites[spriteId].invisible = TRUE; + + // Hoenn owned value - 10s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX10s, 55 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = (seenOwnedCount % 100) / 10; + if (digitNum != 0 || drawNextDigit) + StartSpriteAnim(&gSprites[spriteId], digitNum); + else + gSprites[spriteId].invisible = TRUE; + + // Hoenn owned value - 1s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1s, 55 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = (seenOwnedCount % 100) % 10; + StartSpriteAnim(&gSprites[spriteId], digitNum); + + //**************************** + // National seen value - 1000s + drawNextDigit = FALSE; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1000s, 78 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = sPokedexView->seenCount / 1000; + StartSpriteAnim(&gSprites[spriteId], digitNum); + if (digitNum != 0) + drawNextDigit = TRUE; + else + gSprites[spriteId].invisible = TRUE; + + // National seen value - 100s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX100s, 78 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = (sPokedexView->seenCount % 1000) / 100; + if (digitNum != 0 || drawNextDigit) + { + drawNextDigit = TRUE; + StartSpriteAnim(&gSprites[spriteId], digitNum); + } + else + gSprites[spriteId].invisible = TRUE; + + // National seen value - 10s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX10s, 78 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = ((sPokedexView->seenCount % 1000) % 100) / 10; + if (digitNum != 0 || drawNextDigit) + StartSpriteAnim(&gSprites[spriteId], digitNum); + else + gSprites[spriteId].invisible = TRUE; + + // National seen value - 1s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1s, 78 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = ((sPokedexView->seenCount % 1000) % 100) % 10; + StartSpriteAnim(&gSprites[spriteId], digitNum); + + // National owned value - 1000s + drawNextDigit = FALSE; + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1000s, 88 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = sPokedexView->ownCount / 1000; + StartSpriteAnim(&gSprites[spriteId], digitNum); + if (digitNum != 0) + drawNextDigit = TRUE; + else + gSprites[spriteId].invisible = TRUE; + + // National owned value - 100s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX100s, 88 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = (sPokedexView->ownCount % 1000) / 100; + if (digitNum != 0 || drawNextDigit) + { + drawNextDigit = TRUE; + StartSpriteAnim(&gSprites[spriteId], digitNum); + } + else + gSprites[spriteId].invisible = TRUE; + + // National owned value - 10s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX10s, 88 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = ((sPokedexView->ownCount % 1000) % 100) / 10; + if (digitNum != 0 || drawNextDigit) + StartSpriteAnim(&gSprites[spriteId], digitNum); + else + gSprites[spriteId].invisible = TRUE; + + // National owned value - 1s + spriteId = CreateSprite(&sNationalDexSeenOwnNumberSpriteTemplate, counterX1s, 88 - LIST_RIGHT_SIDE_TEXT_Y_OFFSET, 1); + digitNum = ((sPokedexView->ownCount % 1000) % 100) % 10; + StartSpriteAnim(&gSprites[spriteId], digitNum); + } + + if (page == PAGE_MAIN) + { + spriteId = CreateSprite(&sDexListStartMenuCursorSpriteTemplate, 136, 96, 1); + gSprites[spriteId].invisible = TRUE; + } + else // PAGE_SEARCH_RESULTS + { + spriteId = CreateSprite(&sDexListStartMenuCursorSpriteTemplate, 136, 80, 1); + gSprites[spriteId].invisible = TRUE; + } +} + +static void SpriteCB_EndMoveMonForInfoScreen(struct Sprite *sprite) +{ + // Once mon is done moving there's nothing left to do +} + +static void SpriteCB_SeenOwnInfo(struct Sprite *sprite) +{ + if (sPokedexView->currentPage != PAGE_MAIN && sPokedexView->currentPage != PAGE_SEARCH_RESULTS) + DestroySprite(sprite); +} + +static void SpriteCB_MoveMonForInfoScreen(struct Sprite *sprite) +{ + sprite->oam.priority = 0; + sprite->oam.affineMode = ST_OAM_AFFINE_OFF; + sprite->x2 = 0; + sprite->y2 = 0; + if (sprite->x != MON_PAGE_X || sprite->y != MON_PAGE_Y) + { + if (sprite->x > 48) + sprite->x -= 4; + if (sprite->x < 48) + sprite->x = 48; + + if (sprite->y > 56) + sprite->y -= 4; + if (sprite->y < 56) + sprite->y = 56; + } + else + { + sprite->callback = SpriteCB_EndMoveMonForInfoScreen; + } +} + +static void SpriteCB_PokedexListMonSprite(struct Sprite *sprite) +{ + u8 monId = sprite->data[1]; + + if (sPokedexView->currentPage != PAGE_MAIN && sPokedexView->currentPage != PAGE_SEARCH_RESULTS) + { + FreeAndDestroyMonPicSprite(sPokedexView->monSpriteIds[monId]); + sPokedexView->monSpriteIds[monId] = 0xFFFF; + } + else + { + u32 var; + sprite->y2 = gSineTable[(u8)sprite->data[5]] * 76 / 256; + var = SAFE_DIV(0x10000, gSineTable[sprite->data[5] + 64]); + if (var > 0xFFFF) + var = 0xFFFF; + SetOamMatrix(sprite->data[1] + 1, 0x100, 0, 0, var); + sprite->oam.matrixNum = monId + 1; + + if (sprite->data[5] > -64 && sprite->data[5] < 64) + { + sprite->invisible = FALSE; + sprite->data[0] = 1; + } + else + { + sprite->invisible = TRUE; + } + + if ((sprite->data[5] <= -64 || sprite->data[5] >= 64) && sprite->data[0] != 0) + { + FreeAndDestroyMonPicSprite(sPokedexView->monSpriteIds[monId]); + sPokedexView->monSpriteIds[monId] = 0xFFFF; + } + } +} + +static void SpriteCB_Scrollbar(struct Sprite *sprite) +{ + if (sPokedexView->currentPage != PAGE_MAIN && sPokedexView->currentPage != PAGE_SEARCH_RESULTS) + DestroySprite(sprite); + else + sprite->y2 = sPokedexView->selectedPokemon * 120 / (sPokedexView->pokemonListCount - 1); +} + +static void SpriteCB_ScrollArrow(struct Sprite *sprite) +{ + if (sPokedexView->currentPage != PAGE_MAIN && sPokedexView->currentPage != PAGE_SEARCH_RESULTS) + { + DestroySprite(sprite); + } + else + { + u8 r0; + + if (sprite->sIsDownArrow) + { + if (sPokedexView->selectedPokemon == sPokedexView->pokemonListCount - 1) + sprite->invisible = TRUE; + else + sprite->invisible = FALSE; + r0 = sprite->data[2]; + } + else + { + if (sPokedexView->selectedPokemon == 0) + sprite->invisible = TRUE; + else + sprite->invisible = FALSE; + r0 = sprite->data[2] - 128; + } + sprite->y2 = gSineTable[r0] / 64; + sprite->data[2] = sprite->data[2] + 8; + if (sPokedexView->menuIsOpen == FALSE && sPokedexView->menuY == 0 && sprite->invisible == FALSE) + sprite->invisible = FALSE; + else + sprite->invisible = TRUE; + } +} + +static void SpriteCB_DexListInterfaceText(struct Sprite *sprite) +{ + if (sPokedexView->currentPage != PAGE_MAIN && sPokedexView->currentPage != PAGE_SEARCH_RESULTS) + DestroySprite(sprite); +} + +static void SpriteCB_RotatingPokeBall(struct Sprite *sprite) +{ + if (sPokedexView->currentPage != PAGE_MAIN && sPokedexView->currentPage != PAGE_SEARCH_RESULTS) + { + DestroySprite(sprite); + } + else + { + u8 val; + s16 r3; + s16 r0; + + val = sPokedexView->pokeBallRotation + sprite->data[1]; + r3 = gSineTable[val]; + r0 = gSineTable[val + 64]; + SetOamMatrix(sprite->data[0], r0, r3, -r3, r0); + + val = sPokedexView->pokeBallRotation + (sprite->data[1] + 64); + r3 = gSineTable[val]; + r0 = gSineTable[val + 64]; + sprite->x2 = r0 * 40 / 256; + sprite->y2 = r3 * 40 / 256; + } +} + +static void SpriteCB_DexListStartMenuCursor(struct Sprite *sprite) +{ + if (sPokedexView->currentPage != PAGE_MAIN && sPokedexView->currentPage != PAGE_SEARCH_RESULTS) + { + DestroySprite(sprite); + } + else + { + u16 r1 = sPokedexView->currentPage == PAGE_MAIN ? 80 : 96; + + if (sPokedexView->menuIsOpen && sPokedexView->menuY == r1) + { + sprite->invisible = FALSE; + sprite->y2 = sPokedexView->menuCursorPos * 16; + sprite->x2 = gSineTable[(u8)sprite->data[2]] / 64; + sprite->data[2] += 8; + } + else + { + sprite->invisible = TRUE; + } + } +} + + + +//************************************ +//* * +//* STATS BARS * +//* * +//************************************ + +//Stat bars on main screen, code by DizzyEgg, idea by Jaizu +#define PIXEL_COORDS_TO_OFFSET(x, y)( \ +/*Add tiles by X*/ \ +((y / 8) * 32 * 8) \ +/*Add tiles by X*/ \ ++ ((x / 8) * 32) \ +/*Add pixels by Y*/ \ ++ ((((y) - ((y / 8) * 8))) * 4) \ +/*Add pixels by X*/ \ ++ ((((x) - ((x / 8) * 8)) / 2))) + +static inline void WritePixel(u8 *dst, u32 x, u32 y, u32 value) +{ + if (x & 1) + { + dst[PIXEL_COORDS_TO_OFFSET(x, y)] &= ~0xF0; + dst[PIXEL_COORDS_TO_OFFSET(x, y)] |= (value << 4); + } + else + { + dst[PIXEL_COORDS_TO_OFFSET(x, y)] &= ~0xF; + dst[PIXEL_COORDS_TO_OFFSET(x, y)] |= (value); + } +} +#define STAT_BAR_X_OFFSET 10 +static void CreateStatBar(u8 *dst, u32 y, u32 width) +{ + u32 i, color; + + switch (width) + { + case 0 ... 5: + color = COLOR_WORST; + break; + case 6 ... 15: + color = COLOR_BAD; + break; + case 16 ... 25: + color = COLOR_AVERAGE; + break; + case 26 ... 31: + color = COLOR_GOOD; + break; + case 32 ... 37: + color = COLOR_VERY_GOOD; + break; + default: + color = COLOR_BEST; + break; + } + + // white pixes left side + WritePixel(dst, STAT_BAR_X_OFFSET, y + 0, COLOR_ID_BAR_WHITE); + WritePixel(dst, STAT_BAR_X_OFFSET, y + 1, COLOR_ID_BAR_WHITE); + WritePixel(dst, STAT_BAR_X_OFFSET, y + 2, COLOR_ID_BAR_WHITE); + WritePixel(dst, STAT_BAR_X_OFFSET, y + 3, COLOR_ID_BAR_WHITE); + WritePixel(dst, STAT_BAR_X_OFFSET, y + 4, COLOR_ID_BAR_WHITE); + + // white pixels right side + WritePixel(dst, STAT_BAR_X_OFFSET + width - 1, y + 0, COLOR_ID_BAR_WHITE); + WritePixel(dst, STAT_BAR_X_OFFSET + width - 1, y + 1, COLOR_ID_BAR_WHITE); + WritePixel(dst, STAT_BAR_X_OFFSET + width - 1, y + 2, COLOR_ID_BAR_WHITE); + WritePixel(dst, STAT_BAR_X_OFFSET + width - 1, y + 3, COLOR_ID_BAR_WHITE); + WritePixel(dst, STAT_BAR_X_OFFSET + width - 1, y + 4, COLOR_ID_BAR_WHITE); + + // Fill + for (i = 1; i < width - 1; i++) + { + WritePixel(dst, STAT_BAR_X_OFFSET + i, y + 0, COLOR_ID_BAR_WHITE); + WritePixel(dst, STAT_BAR_X_OFFSET + i, y + 1, COLOR_ID_FILL_SHADOW + color * 2); + WritePixel(dst, STAT_BAR_X_OFFSET + i, y + 2, COLOR_ID_FILL + color * 2); + WritePixel(dst, STAT_BAR_X_OFFSET + i, y + 3, COLOR_ID_FILL + color * 2); + WritePixel(dst, STAT_BAR_X_OFFSET + i, y + 4, COLOR_ID_BAR_WHITE); + } +} +static const u8 sBaseStatOffsets[] = +{ + offsetof(struct SpeciesInfo, baseHP), + offsetof(struct SpeciesInfo, baseAttack), + offsetof(struct SpeciesInfo, baseDefense), + offsetof(struct SpeciesInfo, baseSpAttack), + offsetof(struct SpeciesInfo, baseSpDefense), + offsetof(struct SpeciesInfo, baseSpeed), +}; +static void TryDestroyStatBars(void) +{ + if (sPokedexView->statBarsSpriteId != 0xFF) + { + FreeSpriteTilesByTag(TAG_STAT_BAR); + //FreeSpriteOamMatrix(&gSprites[sPokedexView->statBarsSpriteId]); + DestroySprite(&gSprites[sPokedexView->statBarsSpriteId]); + sPokedexView->statBarsSpriteId = 0xFF; + } +} +static void TryDestroyStatBarsBg(void) +{ + if (sPokedexView->statBarsBgSpriteId != 0xFF) + { + FreeSpriteTilesByTag(TAG_STAT_BAR_BG); + //FreeSpriteOamMatrix(&gSprites[sPokedexView->statBarsBgSpriteId]); + DestroySprite(&gSprites[sPokedexView->statBarsBgSpriteId]); + sPokedexView->statBarsBgSpriteId = 0xFF; + } +} +static void CreateStatBars(struct PokedexListItem *dexMon) +{ + u8 offset_x = 184; //Moves the complete stat box left/right + u8 offset_y = 16; //Moves the complete stat box up/down + TryDestroyStatBars(); + + sPokedexView->justScrolled = FALSE; + + if (dexMon->owned) // Show filed bars + { + u8 i; + u32 width, statValue; + u8 *gfx = Alloc(64 * 64); + static const u8 sBarsYOffset[] = {3, 13, 23, 33, 43, 53}; + struct SpriteSheet sheet = {gfx, 64 * 64, TAG_STAT_BAR}; + u32 species = NationalPokedexNumToSpecies(dexMon->dexNum); + + memcpy(gfx, sStatBarsGfx, sizeof(sStatBarsGfx)); + for (i = 0; i < NUM_STATS; i++) + { + statValue = *((u8*)(&gSpeciesInfo[species]) + sBaseStatOffsets[i]); + if (statValue <= 100) + { + width = statValue / 3; + if (width >= 33) + width -= 1; + } + else + width = (100 / 3) + ((statValue - 100) / 14); + + if (width > 39) // Max pixels + width = 39; + if (width < 3) + width = 3; + + CreateStatBar(gfx, sBarsYOffset[i], width); + } + + LoadSpriteSheet(&sheet); + Free(gfx); + } + else if (dexMon->seen) // Just HP/ATK/DEF + { + static const struct SpriteSheet sheet = {sStatBarsGfx, 64 * 64, TAG_STAT_BAR}; + + LoadSpriteSheet(&sheet); + } + else // neither seen nor owned + { + return; + } + sPokedexView->statBarsSpriteId = CreateSprite(&sStatBarSpriteTemplate, 36+offset_x, 107+offset_y, 10); +} +static void CreateStatBarsBg(void) //stat bars background text +{ + static const struct SpriteSheet sheetStatBarsBg = {sStatBarsGfx, 64 * 64, TAG_STAT_BAR_BG}; + u8 offset_x = 184; //Moves the complete stat box left/right + u8 offset_y = 16; //Moves the complete stat box up/down + + TryDestroyStatBarsBg(); + + LoadSpriteSheet(&sheetStatBarsBg); + sPokedexView->statBarsBgSpriteId = CreateSprite(&sStatBarBgSpriteTemplate, 36+offset_x, 107+offset_y, 0); +} +// Hack to destroy sprites when a pokemon data is being loaded in +static bool32 IsMonInfoBeingLoaded(void) +{ + return (gSprites[sPokedexView->selectedMonSpriteId].callback == SpriteCB_MoveMonForInfoScreen); +} +static void SpriteCB_StatBars(struct Sprite *sprite) +{ + if (IsMonInfoBeingLoaded()) + sprite->invisible = TRUE; + if (sPokedexView->currentPage != PAGE_MAIN && sPokedexView->currentPage != PAGE_SEARCH_RESULTS) + { + FreeSpriteTilesByTag(TAG_STAT_BAR); + FreeSpriteOamMatrix(&gSprites[sPokedexView->statBarsSpriteId]); + DestroySprite(&gSprites[sPokedexView->statBarsSpriteId]); + sPokedexView->statBarsSpriteId = 0xFF; + } +} +static void SpriteCB_StatBarsBg(struct Sprite *sprite) +{ + if (IsMonInfoBeingLoaded()) + sprite->invisible = TRUE; + if (sPokedexView->currentPage != PAGE_MAIN && sPokedexView->currentPage != PAGE_SEARCH_RESULTS) + { + FreeSpriteTilesByTag(TAG_STAT_BAR_BG); + FreeSpriteOamMatrix(&gSprites[sPokedexView->statBarsBgSpriteId]); + DestroySprite(&gSprites[sPokedexView->statBarsBgSpriteId]); + sPokedexView->statBarsBgSpriteId = 0xFF; + } +} + + + +//************************************ +//* * +//* Info screen * +//* * +//************************************ +#define tScrolling data[0] +#define tMonSpriteDone data[1] +#define tBgLoaded data[2] +#define tSkipCry data[3] +#define tMonSpriteId data[4] +#define tTrainerSpriteId data[5] + +static u8 LoadInfoScreen(struct PokedexListItem *item, u8 monSpriteId) +{ + u8 taskId; + + sPokedexListItem = item; + taskId = CreateTask(Task_LoadInfoScreen, 0); + gTasks[taskId].tScrolling = FALSE; + gTasks[taskId].tMonSpriteDone = TRUE; // Already has sprite from list view + gTasks[taskId].tBgLoaded = FALSE; + gTasks[taskId].tSkipCry = FALSE; + gTasks[taskId].tMonSpriteId = monSpriteId; + gTasks[taskId].tTrainerSpriteId = SPRITE_NONE; + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, sInfoScreen_BgTemplate, ARRAY_COUNT(sInfoScreen_BgTemplate)); + SetBgTilemapBuffer(3, AllocZeroed(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(2, AllocZeroed(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(0, AllocZeroed(BG_SCREEN_SIZE)); + InitWindows(sInfoScreen_WindowTemplates); + DeactivateAllTextPrinters(); + + return taskId; +} + +static bool8 IsInfoScreenScrolling(u8 taskId) +{ + if (!gTasks[taskId].tScrolling && gTasks[taskId].func == Task_HandleInfoScreenInput) + return FALSE; + else + return TRUE; +} + +static u8 StartInfoScreenScroll(struct PokedexListItem *item, u8 taskId) +{ + sPokedexListItem = item; + gTasks[taskId].tScrolling = TRUE; + gTasks[taskId].tMonSpriteDone = FALSE; + gTasks[taskId].tBgLoaded = FALSE; + gTasks[taskId].tSkipCry = FALSE; + return taskId; +} + +static void Task_LoadInfoScreen(u8 taskId) +{ + switch (gMain.state) + { + case 0: + default: + if (!gPaletteFade.active) + { + u16 r2; + + sPokedexView->currentPage = PAGE_INFO; + gPokedexVBlankCB = gMain.vblankCallback; + SetVBlankCallback(NULL); + r2 = 0; + if (gTasks[taskId].tMonSpriteDone) + r2 += DISPCNT_OBJ_ON; + if (gTasks[taskId].tBgLoaded) + r2 |= DISPCNT_BG1_ON; + ResetOtherVideoRegisters(r2); + gMain.state = 1; + } + break; + case 1: + LoadTilesetTilemapHGSS(INFO_SCREEN); + FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0)); + PutWindowTilemap(WIN_INFO); + PutWindowTilemap(WIN_FOOTPRINT); + DrawFootprint(WIN_FOOTPRINT, NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum)); + CopyWindowToVram(WIN_FOOTPRINT, COPYWIN_GFX); + gMain.state++; + break; + case 2: + LoadScreenSelectBarMain(0xD); + LoadPokedexBgPalette(sPokedexView->isSearchResults); + gMain.state++; + break; + case 3: + sPokedexView->typeIconSpriteIds[0] = 0xFF; + sPokedexView->typeIconSpriteIds[1] = 0xFF; + CreateTypeIconSprites(); + gMain.state++; + break; + case 4: + PrintMonInfo(sPokedexListItem->dexNum, sPokedexView->dexMode == DEX_MODE_HOENN ? FALSE : TRUE, sPokedexListItem->owned, 0); + if (!sPokedexListItem->owned) + LoadPalette(gPlttBufferUnfaded + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(16 - 1)); + CopyWindowToVram(WIN_INFO, COPYWIN_FULL); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + gMain.state++; + break; + case 5: + if (!gTasks[taskId].tMonSpriteDone) + { + gTasks[taskId].tMonSpriteId = (u16)CreateMonSpriteFromNationalDexNumberHGSS(sPokedexListItem->dexNum, MON_PAGE_X, MON_PAGE_Y, 0); + gSprites[gTasks[taskId].tMonSpriteId].oam.priority = 0; + } + gMain.state++; + break; + case 6: + { + u32 preservedPalettes = 0; + + if (gTasks[taskId].tBgLoaded) + preservedPalettes = 0x14; // each bit represents a palette index + if (gTasks[taskId].tMonSpriteDone) + preservedPalettes |= (1 << (gSprites[gTasks[taskId].tMonSpriteId].oam.paletteNum + 16)); + BeginNormalPaletteFade(~preservedPalettes, 0, 16, 0, RGB_BLACK); + SetVBlankCallback(gPokedexVBlankCB); + gMain.state++; + } + break; + case 7: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + HideBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + gMain.state++; + break; + case 8: + if (!gPaletteFade.active) + { + gMain.state++; + } + break; + case 9: + gMain.state++; + break; + case 10: + gTasks[taskId].tScrolling = FALSE; + gTasks[taskId].tMonSpriteDone = FALSE; // Reload next time screen comes up + gTasks[taskId].tBgLoaded = TRUE; + gTasks[taskId].tSkipCry = TRUE; + gTasks[taskId].func = Task_HandleInfoScreenInput; + gMain.state = 0; + break; + } +} + +static void FreeInfoScreenWindowAndBgBuffers(void) +{ + void *tilemapBuffer; + + FreeAllWindowBuffers(); + tilemapBuffer = GetBgTilemapBuffer(0); + if (tilemapBuffer) + Free(tilemapBuffer); + tilemapBuffer = GetBgTilemapBuffer(1); + if (tilemapBuffer) + Free(tilemapBuffer); + tilemapBuffer = GetBgTilemapBuffer(2); + if (tilemapBuffer) + Free(tilemapBuffer); + tilemapBuffer = GetBgTilemapBuffer(3); + if (tilemapBuffer) + Free(tilemapBuffer); +} + +static void Task_HandleInfoScreenInput(u8 taskId) +{ + if (gTasks[taskId].tScrolling) + { + // Scroll up/down + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); + gTasks[taskId].func = Task_LoadInfoScreenWaitForFade; + PlaySE(SE_DEX_SCROLL); + return; + } + if (JOY_NEW(B_BUTTON)) + { + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); + gTasks[taskId].func = Task_ExitInfoScreen; + PlaySE(SE_PC_OFF); + return; + } + + if ((JOY_NEW(DPAD_RIGHT) || (JOY_NEW(R_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))) + { + sPokedexView->selectedScreen = AREA_SCREEN; + BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK); + sPokedexView->screenSwitchState = 1; + gTasks[taskId].func = Task_SwitchScreensFromInfoScreen; + PlaySE(SE_PIN); + } + +} + +static void Task_SwitchScreensFromInfoScreen(u8 taskId) +{ + if (!gPaletteFade.active) + { + FreeAndDestroyMonPicSprite(gTasks[taskId].tMonSpriteId); + switch (sPokedexView->screenSwitchState) + { + case 1: + default: + gTasks[taskId].func = Task_LoadAreaScreen; + break; + case 2: + gTasks[taskId].func = Task_LoadCryScreen; + break; + case 3: + gTasks[taskId].func = Task_LoadSizeScreen; + break; + } + } +} + +static void Task_LoadInfoScreenWaitForFade(u8 taskId) +{ + if (!gPaletteFade.active) + { + FreeAndDestroyMonPicSprite(gTasks[taskId].tMonSpriteId); + gTasks[taskId].func = Task_LoadInfoScreen; + } +} + +static void Task_ExitInfoScreen(u8 taskId) +{ + if (!gPaletteFade.active) + { + FreeAndDestroyMonPicSprite(gTasks[taskId].tMonSpriteId); + FreeInfoScreenWindowAndBgBuffers(); + DestroyTask(taskId); + } +} + +#undef tMonSpriteId + +//************************************ +//* * +//* Area screen * +//* * +//************************************ +static void Task_LoadAreaScreen(u8 taskId) +{ + switch (gMain.state) + { + case 0: + default: + if (!gPaletteFade.active) + { + sPokedexView->currentPage = PAGE_AREA; + gPokedexVBlankCB = gMain.vblankCallback; + SetVBlankCallback(NULL); + ResetOtherVideoRegisters(DISPCNT_BG1_ON); + sPokedexView->selectedScreen = AREA_SCREEN; + gMain.state = 1; + } + break; + case 1: + LoadScreenSelectBarSubmenu(0xD); + LoadPokedexBgPalette(sPokedexView->isSearchResults); + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256); + gMain.state++; + break; + case 2: + ShowPokedexAreaScreen(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), &sPokedexView->screenSwitchState); + SetVBlankCallback(gPokedexVBlankCB); + sPokedexView->screenSwitchState = 0; + gMain.state = 0; + gTasks[taskId].func = Task_WaitForAreaScreenInput; + break; + } +} + +static void Task_WaitForAreaScreenInput(u8 taskId) +{ +// See Task_HandlePokedexAreaScreenInput() in pokedex_area_screen.c + if (sPokedexView->screenSwitchState != 0) + gTasks[taskId].func = Task_SwitchScreensFromAreaScreen; +} + +static void Task_SwitchScreensFromAreaScreen(u8 taskId) +{ + if (!gPaletteFade.active) + { + switch (sPokedexView->screenSwitchState) + { + case 1: + default: + gTasks[taskId].func = Task_LoadInfoScreen; + break; + case 2: + if (!sPokedexListItem->owned) + PlaySE(SE_FAILURE); + else + gTasks[taskId].func = Task_LoadStatsScreen; + break; + } + } +} + + + +//************************************ +//* * +//* Select bar * +//* * +//************************************ +static void LoadScreenSelectBarMain(u16 unused) +{ + CopyToBgTilemapBuffer(1, sPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap_Clear, 0, 0); + CopyBgTilemapBufferToVram(1); +} + +static void LoadScreenSelectBarSubmenu(u16 unused) +{ + CopyToBgTilemapBuffer(1, sPokedexPlusHGSS_ScreenSelectBarSubmenu_Tilemap, 0, 0); + CopyBgTilemapBufferToVram(1); +} + +static void UNUSED HighlightScreenSelectBarItem(u8 selectedScreen, u16 unused) +{ + u8 i; + u8 j; + u16 *ptr = GetBgTilemapBuffer(1); + + for (i = 0; i < SCREEN_COUNT; i++) + { + u8 row = (i * 7) + 1; + u16 newPalette; + + do + { + newPalette = 0x4000; + if (i == selectedScreen) + newPalette = 0x2000; + } while (0); + + for (j = 0; j < 7; j++) + { + ptr[row + j] = (ptr[row + j] % 0x1000) | newPalette; + ptr[row + j + 0x20] = (ptr[row + j + 0x20] % 0x1000) | newPalette; + } + } + CopyBgTilemapBufferToVram(1); +} + +//************************************ +//* * +//* CAUGHT MON * +//* * +//************************************ +#define tState data[0] +#define tSpecies data[1] +#define tPalTimer data[2] +#define tMonSpriteId data[3] +#define tOtIdLo data[12] +#define tOtIdHi data[13] +#define tPersonalityLo data[14] +#define tPersonalityHi data[15] + +void Task_DisplayCaughtMonDexPageHGSS(u8 taskId) +{ + u8 spriteId; + u16 species; + u16 dexNum; + + if (!POKEDEX_PLUS_HGSS) return; // prevents the compiler from emitting static .rodata + // if the feature is disabled + + species = gTasks[taskId].tSpecies; + dexNum = SpeciesToNationalPokedexNum(species); + switch (gTasks[taskId].tState) + { + case 0: + default: + if (!gPaletteFade.active) + { + gPokedexVBlankCB = gMain.vblankCallback; + SetVBlankCallback(NULL); + ResetOtherVideoRegisters(DISPCNT_BG0_ON); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, sNewEntryInfoScreen_BgTemplate, ARRAY_COUNT(sNewEntryInfoScreen_BgTemplate)); + SetBgTilemapBuffer(3, AllocZeroed(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(2, AllocZeroed(BG_SCREEN_SIZE)); + InitWindows(sNewEntryInfoScreen_WindowTemplates); + DeactivateAllTextPrinters(); + gTasks[taskId].tState = 1; + } + break; + case 1: + sPokedexView = AllocZeroed(sizeof(struct PokedexView)); //for type icons + ResetPokedexView(sPokedexView); + + if (GetSpeciesFormTable(species) != NULL) + sPokedexView->formSpecies = species; + else + sPokedexView->formSpecies = 0; + + LoadTilesetTilemapHGSS(INFO_SCREEN); + FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0)); + PutWindowTilemap(WIN_INFO); + PutWindowTilemap(WIN_FOOTPRINT); + DrawFootprint(WIN_FOOTPRINT, species); + CopyWindowToVram(WIN_FOOTPRINT, COPYWIN_GFX); + ResetPaletteFade(); + LoadPokedexBgPalette(FALSE); + gTasks[taskId].tState++; + break; + case 2: + sPokedexView->typeIconSpriteIds[0] = 0xFF; + sPokedexView->typeIconSpriteIds[1] = 0xFF; + CreateTypeIconSprites(); + gTasks[taskId].tState++; + break; + case 3: + PrintMonInfo(dexNum, IsNationalPokedexEnabled(), 1, 1); + CopyWindowToVram(WIN_INFO, COPYWIN_FULL); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + gTasks[taskId].tState++; + break; + case 4: + spriteId = CreateMonSpriteFromNationalDexNumberHGSS(dexNum, MON_PAGE_X, MON_PAGE_Y, 0); + gSprites[spriteId].oam.priority = 0; + BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK); + SetVBlankCallback(gPokedexVBlankCB); + gTasks[taskId].tMonSpriteId = spriteId; + gTasks[taskId].tState++; + break; + case 5: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + ShowBg(2); + ShowBg(3); + gTasks[taskId].tState++; + break; + case 6: + if (!gPaletteFade.active) + { + PlayCry_Normal(NationalPokedexNumToSpeciesHGSS(dexNum), 0); + gTasks[taskId].tPalTimer = 0; + gTasks[taskId].func = Task_HandleCaughtMonPageInput; + } + break; + } +} + +static void Task_HandleCaughtMonPageInput(u8 taskId) +{ + if (JOY_NEW(A_BUTTON | B_BUTTON)) + { + BeginNormalPaletteFade(PALETTES_BG, 0, 0, 16, RGB_BLACK); + SetSpriteInvisibility(0, TRUE); + SetSpriteInvisibility(1, TRUE); + gSprites[gTasks[taskId].tMonSpriteId].callback = SpriteCB_SlideCaughtMonToCenter; + gTasks[taskId].func = Task_ExitCaughtMonPage; + } + // Flicker caught screen color + else if (++gTasks[taskId].tPalTimer & 16) + { + if (!HGSS_DARK_MODE) + LoadPalette(sPokedexPlusHGSS_Default_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); + else + LoadPalette(sPokedexPlusHGSS_Default_dark_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); + } + else + { + if (!HGSS_DARK_MODE) + LoadPalette(sPokedexPlusHGSS_Default_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); + else + LoadPalette(sPokedexPlusHGSS_Default_dark_Pal + 1, BG_PLTT_ID(3) + 1, PLTT_SIZEOF(7)); + } +} + +static void Task_ExitCaughtMonPage(u8 taskId) +{ + if (!gPaletteFade.active) + { + u16 species; + u32 otId; + u32 personality; + u8 paletteNum; + const u32 *lzPaletteData; + void *buffer; + + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + FreeAllWindowBuffers(); + buffer = GetBgTilemapBuffer(2); + if (buffer) + Free(buffer); + buffer = GetBgTilemapBuffer(3); + if (buffer) + Free(buffer); + + species = gTasks[taskId].tSpecies; + otId = ((u16)gTasks[taskId].tOtIdHi << 16) | (u16)gTasks[taskId].tOtIdLo; + personality = ((u16)gTasks[taskId].tPersonalityHi << 16) | (u16)gTasks[taskId].tPersonalityLo; + paletteNum = gSprites[gTasks[taskId].tMonSpriteId].oam.paletteNum; + lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality); + LoadCompressedPalette(lzPaletteData, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); + DestroyTask(taskId); + } +} + +static void SpriteCB_SlideCaughtMonToCenter(struct Sprite *sprite) +{ + if (sprite->x < 0x78) + sprite->x += 2; + if (sprite->x > 0x78) + sprite->x -= 2; + + if (sprite->y < 0x50) + sprite->y += 1; + if (sprite->y > 0x50) + sprite->y -= 1; +} + +#undef tState +#undef tDexNum +#undef tPalTimer +#undef tMonSpriteId +#undef tOtIdLo +#undef tOtIdHi +#undef tPersonalityLo +#undef tPersonalityHi + + + + + + + +//************************************ +//* * +//* Print data * +//* * +//************************************ +static void PrintInfoScreenText(const u8 *str, u8 left, u8 top) +{ + u8 color[3]; + color[0] = TEXT_COLOR_TRANSPARENT; + color[1] = TEXT_DYNAMIC_COLOR_6; + color[2] = TEXT_COLOR_LIGHT_GRAY; + + AddTextPrinterParameterized4(0, 1, left, top, 0, 0, color, -1, str); +} +static void PrintInfoScreenTextWhite(const u8* str, u8 left, u8 top) +{ + u8 color[3]; + color[0] = TEXT_COLOR_TRANSPARENT; + color[1] = TEXT_COLOR_WHITE; + color[2] = TEXT_DYNAMIC_COLOR_6; + + AddTextPrinterParameterized4(0, FONT_NORMAL, left, top, 0, 0, color, TEXT_SKIP_DRAW, str); +} +static void PrintInfoScreenTextSmall(const u8* str, u8 left, u8 top) +{ + u8 color[3]; + color[0] = TEXT_COLOR_TRANSPARENT; + color[1] = TEXT_DYNAMIC_COLOR_6; + color[2] = TEXT_COLOR_LIGHT_GRAY; + + AddTextPrinterParameterized4(0, 0, left, top, 0, 0, color, 0, str); +} +static void UNUSED PrintInfoScreenTextSmallWhite(const u8* str, u8 left, u8 top) +{ + u8 color[3]; + color[0] = TEXT_COLOR_TRANSPARENT; + color[1] = TEXT_COLOR_WHITE; + color[2] = TEXT_DYNAMIC_COLOR_6; + + AddTextPrinterParameterized4(0, 0, left, top, 0, 0, color, 0, str); +} +//Stats screen +static void PrintStatsScreenTextSmall(u8 windowId, const u8* str, u8 left, u8 top) +{ + u8 color[3]; + color[0] = TEXT_COLOR_TRANSPARENT; + color[1] = TEXT_DYNAMIC_COLOR_6; + color[2] = TEXT_COLOR_LIGHT_GRAY; + + AddTextPrinterParameterized4(windowId, 0, left, top, 0, 0, color, 0, str); +} +static void PrintStatsScreenTextSmallWhite(u8 windowId, const u8* str, u8 left, u8 top) +{ + u8 color[3]; + color[0] = TEXT_COLOR_TRANSPARENT; + color[1] = TEXT_COLOR_WHITE; + color[2] = TEXT_DYNAMIC_COLOR_6; + + AddTextPrinterParameterized4(windowId, 0, left, top, 0, 0, color, 0, str); +} + +//Type Icon +static void SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible) +{ + gSprites[sPokedexView->typeIconSpriteIds[spriteArrayId]].invisible = invisible; +} +// different from pokemon_summary_screen +#define TYPE_ICON_PAL_NUM_0 13 +#define TYPE_ICON_PAL_NUM_1 14 +#define TYPE_ICON_PAL_NUM_2 15 +static const u8 sMoveTypeToOamPaletteNum[NUMBER_OF_MON_TYPES + CONTEST_CATEGORIES_COUNT] = +{ + [TYPE_NORMAL] = TYPE_ICON_PAL_NUM_0, + [TYPE_FIGHTING] = TYPE_ICON_PAL_NUM_0, + [TYPE_FLYING] = TYPE_ICON_PAL_NUM_1, + [TYPE_POISON] = TYPE_ICON_PAL_NUM_1, + [TYPE_GROUND] = TYPE_ICON_PAL_NUM_0, + [TYPE_ROCK] = TYPE_ICON_PAL_NUM_0, + [TYPE_BUG] = TYPE_ICON_PAL_NUM_2, + [TYPE_GHOST] = TYPE_ICON_PAL_NUM_1, + [TYPE_STEEL] = TYPE_ICON_PAL_NUM_0, + [TYPE_MYSTERY] = TYPE_ICON_PAL_NUM_2, + [TYPE_FIRE] = TYPE_ICON_PAL_NUM_0, + [TYPE_WATER] = TYPE_ICON_PAL_NUM_1, + [TYPE_GRASS] = TYPE_ICON_PAL_NUM_2, + [TYPE_ELECTRIC] = TYPE_ICON_PAL_NUM_0, + [TYPE_PSYCHIC] = TYPE_ICON_PAL_NUM_1, + [TYPE_ICE] = TYPE_ICON_PAL_NUM_1, + [TYPE_DRAGON] = TYPE_ICON_PAL_NUM_2, + [TYPE_DARK] = TYPE_ICON_PAL_NUM_0, + [TYPE_FAIRY] = TYPE_ICON_PAL_NUM_1, + [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_COOL] = TYPE_ICON_PAL_NUM_0, + [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_BEAUTY] = TYPE_ICON_PAL_NUM_1, + [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_CUTE] = TYPE_ICON_PAL_NUM_1, + [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_SMART] = TYPE_ICON_PAL_NUM_2, + [NUMBER_OF_MON_TYPES + CONTEST_CATEGORY_TOUGH] = TYPE_ICON_PAL_NUM_0, +}; +static void SetTypeIconPosAndPal(u8 typeId, u8 x, u8 y, u8 spriteArrayId) +{ + struct Sprite *sprite; + + sprite = &gSprites[sPokedexView->typeIconSpriteIds[spriteArrayId]]; + StartSpriteAnim(sprite, typeId); + sprite->oam.paletteNum = sMoveTypeToOamPaletteNum[typeId]; + sprite->x = x + 16; + sprite->y = y + 8; + SetSpriteInvisibility(spriteArrayId, FALSE); +} +static void PrintCurrentSpeciesTypeInfo(u8 newEntry, u16 species) +{ + u8 type1, type2; + + if (!newEntry) + { + species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum); + } + //type icon(s) + #ifdef TX_RANDOMIZER_AND_CHALLENGES + type1 = GetTypeBySpecies(species, 1); + type2 = GetTypeBySpecies(species, 2); + #else + type1 = gSpeciesInfo[species].types[0]; + type2 = gSpeciesInfo[species].types[1]; + #endif + if (species == SPECIES_NONE) + type1 = type2 = TYPE_MYSTERY; + + if (type1 == type2) + { + SetTypeIconPosAndPal(type1, 147, 48, 0); + SetSpriteInvisibility(1, TRUE); + } + else + { + SetTypeIconPosAndPal(type1, 147, 48, 0); + SetTypeIconPosAndPal(type2, 147 + 33, 48, 1); + } + +} +static void CreateTypeIconSprites(void) +{ + u8 i; + + LoadCompressedSpriteSheet(&gSpriteSheet_MoveTypes); + LoadCompressedPalette(gMoveTypes_Pal, 0x1D0, 0x60); + for (i = 0; i < 2; i++) + { + if (sPokedexView->typeIconSpriteIds[i] == 0xFF) + sPokedexView->typeIconSpriteIds[i] = CreateSprite(&gSpriteTemplate_MoveTypes, 10, 10, 2); + + SetSpriteInvisibility(i, TRUE); + } +} + +// u32 value is re-used, but passed as a bool that's TRUE if national dex is enabled +static void PrintMonInfo(u32 num, u32 value, u32 owned, u32 newEntry) +{ + u8 str[16]; + u8 str2[32]; + u16 species; + const u8 *name; + const u8 *category; + const u8 *description; + u8 digitCount = (NATIONAL_DEX_COUNT > 999 && value != 0) ? 4 : 3; + + if (value == 0) + value = NationalToHoennOrder(num); + else + value = num; + ConvertIntToDecimalStringN(StringCopy(str, gText_NumberClear01), value, STR_CONV_MODE_LEADING_ZEROS, digitCount); + PrintInfoScreenTextWhite(str, 123, 17); + species = NationalPokedexNumToSpeciesHGSS(num); + if (species) + name = GetSpeciesName(species); + else + name = sText_TenDashes; + PrintInfoScreenTextWhite(name, 139 + (6 * digitCount), 17); + if (owned) + { + CopyMonCategoryText(species, str2); + category = str2; + } + else + { + category = gText_5MarksPokemon; + } + PrintInfoScreenText(category, 123, 31); + PrintInfoScreenText(gText_HTHeight, 155, 64); + PrintInfoScreenText(gText_WTWeight, 155, 77); + if (owned) + { + PrintMonHeight(GetSpeciesHeight(species), 180, 64); + PrintMonWeight(GetSpeciesWeight(species), 180, 77); + } + else + { + PrintInfoScreenText(gText_UnkHeight, 180, 64); + PrintInfoScreenText(gText_UnkWeight, 180, 77); + } + if (owned) + description = GetSpeciesPokedexDescription(species); + else + description = sExpandedPlaceholder_PokedexDescription; + PrintInfoScreenText(description, GetStringCenterAlignXOffset(FONT_NORMAL, description, 0xF0), 93); + + //Type Icon(s) + if (owned) + PrintCurrentSpeciesTypeInfo(newEntry, species); +} + +static void PrintMonHeight(u16 height, u8 left, u8 top) +{ + u8 buffer[16]; + u32 inches, feet; + u8 i = 0; + + inches = (height * 10000) / 254; + if (inches % 10 >= 5) + inches += 10; + feet = inches / 120; + inches = (inches - (feet * 120)) / 10; + + buffer[i++] = EXT_CTRL_CODE_BEGIN; + buffer[i++] = EXT_CTRL_CODE_CLEAR_TO; + if (feet / 10 == 0) + { + buffer[i++] = 18; + buffer[i++] = feet + CHAR_0; + } + else + { + buffer[i++] = 12; + buffer[i++] = feet / 10 + CHAR_0; + buffer[i++] = (feet % 10) + CHAR_0; + } + buffer[i++] = CHAR_SGL_QUOTE_RIGHT; + buffer[i++] = (inches / 10) + CHAR_0; + buffer[i++] = (inches % 10) + CHAR_0; + buffer[i++] = CHAR_DBL_QUOTE_RIGHT; + buffer[i++] = EOS; + PrintInfoScreenText(buffer, left, top); +} + +static void PrintMonWeight(u16 weight, u8 left, u8 top) +{ + u8 buffer[16]; + bool8 output; + u8 i; + u32 lbs = (weight * 100000) / 4536; + + if (lbs % 10u >= 5) + lbs += 10; + i = 0; + output = FALSE; + + if ((buffer[i] = (lbs / 100000) + CHAR_0) == CHAR_0 && !output) + { + buffer[i++] = CHAR_SPACER; + } + else + { + output = TRUE; + i++; + } + + lbs %= 100000; + if ((buffer[i] = (lbs / 10000) + CHAR_0) == CHAR_0 && !output) + { + buffer[i++] = CHAR_SPACER; + } + else + { + output = TRUE; + i++; + } + + lbs %= 10000; + if ((buffer[i] = (lbs / 1000) + CHAR_0) == CHAR_0 && !output) + { + buffer[i++] = CHAR_SPACER; + } + else + { + output = TRUE; + i++; + } + + lbs %= 1000; + buffer[i++] = (lbs / 100) + CHAR_0; + lbs %= 100; + buffer[i++] = CHAR_PERIOD; + buffer[i++] = (lbs / 10) + CHAR_0; + buffer[i++] = CHAR_SPACE; + buffer[i++] = CHAR_l; + buffer[i++] = CHAR_b; + buffer[i++] = CHAR_s; + buffer[i++] = CHAR_PERIOD; + buffer[i++] = EOS; + PrintInfoScreenText(buffer, left, top); +} + +// Unused in the English version, used to print height/weight in versions which use metric system. +static void UNUSED PrintDecimalNum(u8 windowId, u16 num, u8 left, u8 top) +{ + u8 str[6]; + bool8 outputted = FALSE; + u8 result; + + result = num / 1000; + if (result == 0) + { + str[0] = CHAR_SPACER; + outputted = FALSE; + } + else + { + str[0] = CHAR_0 + result; + outputted = TRUE; + } + + result = (num % 1000) / 100; + if (result == 0 && !outputted) + { + str[1] = CHAR_SPACER; + outputted = FALSE; + } + else + { + str[1] = CHAR_0 + result; + outputted = TRUE; + } + + str[2] = CHAR_0 + ((num % 1000) % 100) / 10; + str[3] = CHAR_DEC_SEPARATOR; + str[4] = CHAR_0 + ((num % 1000) % 100) % 10; + str[5] = EOS; + PrintInfoSubMenuText(windowId, str, left, top); +} + +// The footprints are drawn on WIN_FOOTPRINT, which uses BG palette 15 (loaded with graphics/text_window/message_box.gbapal) +// The footprint pixels are stored as 1BPP, and set to the below color index in this palette when converted to 4BPP. +#define FOOTPRINT_COLOR_IDX 2 + +#define NUM_FOOTPRINT_TILES 4 + +static void DrawFootprint(u8 windowId, u16 species) +{ + u8 ALIGNED(4) footprint4bpp[TILE_SIZE_4BPP * NUM_FOOTPRINT_TILES]; + const u8 *footprintGfx = gSpeciesInfo[SanitizeSpeciesId(species)].footprint; + u32 i, j, tileIdx = 0; + + if (footprintGfx != NULL) + { + for (i = 0; i < TILE_SIZE_1BPP * NUM_FOOTPRINT_TILES; i++) + { + u8 footprint1bpp = footprintGfx[i]; + + // Convert the 8 pixels in the above 1BPP byte to 4BPP. + // Each iteration creates one 4BPP byte (2 pixels), + // so we need 4 iterations to do all 8 pixels. + for (j = 0; j < 4; j++) + { + u8 tile = 0; + if (footprint1bpp & (1 << (2 * j))) + tile |= FOOTPRINT_COLOR_IDX; // Set pixel + if (footprint1bpp & (2 << (2 * j))) + tile |= FOOTPRINT_COLOR_IDX << 4; // Set pixel + footprint4bpp[tileIdx] = tile; + tileIdx++; + } + } + } + else + { + CpuFastFill(0, footprint4bpp, sizeof(footprint4bpp)); + } + CopyToWindowPixelBuffer(windowId, footprint4bpp, sizeof(footprint4bpp), 0); +} + +static void PrintInfoSubMenuText(u8 windowId, const u8 *str, u8 left, u8 top) +{ + u8 color[3]; + color[0] = TEXT_COLOR_TRANSPARENT; + color[1] = TEXT_DYNAMIC_COLOR_6; + color[2] = TEXT_COLOR_LIGHT_GRAY; + + AddTextPrinterParameterized4(windowId, FONT_NORMAL, left, top, 0, 0, color, TEXT_SKIP_DRAW, str); +} + +static u8 PrintCryScreenSpeciesName(u8 windowId, u16 num, u8 left, u8 top) +{ + u8 str[POKEMON_NAME_LENGTH + 1]; + u8 i; + + for (i = 0; i < ARRAY_COUNT(str); i++) + str[i] = EOS; + num = NationalPokedexNumToSpeciesHGSS(num); + switch (num) + { + default: + for (i = 0; GetSpeciesName(num)[i] != EOS && i < POKEMON_NAME_LENGTH; i++) + str[i] = GetSpeciesName(num)[i]; + break; + case 0: + for (i = 0; i < 5; i++) + str[i] = CHAR_HYPHEN; + break; + } + PrintInfoSubMenuText(windowId, str, left, top); + return i; +} + +// Unown and Spinda use the personality of the first seen individual of that species +// All others use personality 0 +static u32 GetPokedexMonPersonality(u16 species) +{ + if (species == SPECIES_UNOWN || species == SPECIES_SPINDA) + { + if (species == SPECIES_UNOWN) + return gSaveBlock2Ptr->pokedex.unownPersonality; + else + return gSaveBlock2Ptr->pokedex.spindaPersonality; + } + else + { + return 0; + } +} + +static u16 CreateMonSpriteFromNationalDexNumberHGSS(u16 nationalNum, s16 x, s16 y, u16 paletteSlot) +{ + nationalNum = NationalPokedexNumToSpeciesHGSS(nationalNum); + return CreateMonPicSprite(nationalNum, SHINY_ODDS, GetPokedexMonPersonality(nationalNum), TRUE, x, y, paletteSlot, TAG_NONE); +} + +static u16 GetPokemonScaleFromNationalDexNumber(u16 nationalNum) +{ + nationalNum = NationalPokedexNumToSpeciesHGSS(nationalNum); + return gSpeciesInfo[nationalNum].pokemonScale; +} + +static u16 GetPokemonOffsetFromNationalDexNumber(u16 nationalNum) +{ + nationalNum = NationalPokedexNumToSpeciesHGSS(nationalNum); + return gSpeciesInfo[nationalNum].pokemonOffset; +} + +static u16 GetTrainerScaleFromNationalDexNumber(u16 nationalNum) +{ + nationalNum = NationalPokedexNumToSpeciesHGSS(nationalNum); + return gSpeciesInfo[nationalNum].trainerScale; +} + +static u16 GetTrainerOffsetFromNationalDexNumber(u16 nationalNum) +{ + nationalNum = NationalPokedexNumToSpeciesHGSS(nationalNum); + return gSpeciesInfo[nationalNum].trainerOffset; +} + +static u16 CreateSizeScreenTrainerPic(u16 species, s16 x, s16 y, s8 paletteSlot) +{ + return CreateTrainerPicSprite(species, TRUE, x, y, paletteSlot, TAG_NONE); +} + + +//************************************ +//* * +//* Helper functions * +//* * +//************************************ + +static void ResetOtherVideoRegisters(u16 regBits) +{ + if (!(regBits & DISPCNT_BG0_ON)) + { + ClearGpuRegBits(0, DISPCNT_BG0_ON); + SetGpuReg(REG_OFFSET_BG0CNT, 0); + SetGpuReg(REG_OFFSET_BG0HOFS, 0); + SetGpuReg(REG_OFFSET_BG0VOFS, 0); + } + if (!(regBits & DISPCNT_BG1_ON)) + { + ClearGpuRegBits(0, DISPCNT_BG1_ON); + SetGpuReg(REG_OFFSET_BG1CNT, 0); + SetGpuReg(REG_OFFSET_BG1HOFS, 0); + SetGpuReg(REG_OFFSET_BG1VOFS, 0); + } + if (!(regBits & DISPCNT_BG2_ON)) + { + ClearGpuRegBits(0, DISPCNT_BG2_ON); + SetGpuReg(REG_OFFSET_BG2CNT, 0); + SetGpuReg(REG_OFFSET_BG2HOFS, 0); + SetGpuReg(REG_OFFSET_BG2VOFS, 0); + } + if (!(regBits & DISPCNT_BG3_ON)) + { + ClearGpuRegBits(0, DISPCNT_BG3_ON); + SetGpuReg(REG_OFFSET_BG3CNT, 0); + SetGpuReg(REG_OFFSET_BG3HOFS, 0); + SetGpuReg(REG_OFFSET_BG3VOFS, 0); + } + if (!(regBits & DISPCNT_OBJ_ON)) + { + ClearGpuRegBits(0, DISPCNT_OBJ_ON); + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 8; + } +} + +static void FreeWindowAndBgBuffers(void) +{ + void *tilemapBuffer; + + FreeAllWindowBuffers(); + tilemapBuffer = GetBgTilemapBuffer(0); + if (tilemapBuffer) + Free(tilemapBuffer); + tilemapBuffer = GetBgTilemapBuffer(1); + if (tilemapBuffer) + Free(tilemapBuffer); + tilemapBuffer = GetBgTilemapBuffer(2); + if (tilemapBuffer) + Free(tilemapBuffer); + tilemapBuffer = GetBgTilemapBuffer(3); + if (tilemapBuffer) + Free(tilemapBuffer); +} + +static u16 GetNextPosition(u8 direction, u16 position, u16 min, u16 max) +{ + switch (direction) + { + case 1: // Up/Left + if (position > min) + position--; + break; + case 0: // Down/Right + if (position < max) + position++; + break; + case 3: // Up/Left with loop (unused) + if (position > min) + position--; + else + position = max; + break; + case 2: // Down/Right with loop (unused) + if (position < max) + position++; + else + position = min; + break; + } + return position; +} + + + +//************************************ +//* * +//* HGSS * +//* * +//************************************ +static u16 NationalPokedexNumToSpeciesHGSS(u16 nationalNum) +{ + if (!nationalNum) + return 0; + + if (sPokedexView->formSpecies != 0) + return sPokedexView->formSpecies; + else + return NationalPokedexNumToSpecies(nationalNum); +} + +static void LoadTilesetTilemapHGSS(u8 page) +{ + switch (page) + { + case INFO_SCREEN: + if (!HGSS_DECAPPED) + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); + else + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenInfo_Tilemap, 0, 0); + break; + case STATS_SCREEN: + if (!HGSS_DECAPPED) + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); + else + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_1_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenStats_Tilemap, 0, 0); + break; + case EVO_SCREEN: + if (!HGSS_DECAPPED) + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); + else + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenEvolution_Tilemap_PE, 0, 0); + break; + case FORMS_SCREEN: + if (!HGSS_DECAPPED) + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); + else + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_2_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenForms_Tilemap, 0, 0); + break; + case CRY_SCREEN: + if (!HGSS_DECAPPED) + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); + else + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenCry_Tilemap, 0, 0); + break; + case SIZE_SCREEN: + if (!HGSS_DECAPPED) + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); + else + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_Menu_3_Gfx, 0x2000, 0, 0); + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenSize_Tilemap, 0, 0); + break; + } +} + +//Physical/Special Split +static u8 ShowSplitIcon(u32 split) +{ + if (sPokedexView->splitIconSpriteId == 0xFF) + sPokedexView->splitIconSpriteId = CreateSprite(&sSpriteTemplate_SplitIcons, 139, 90, 0); + + gSprites[sPokedexView->splitIconSpriteId].invisible = FALSE; + StartSpriteAnim(&gSprites[sPokedexView->splitIconSpriteId], split); + return sPokedexView->splitIconSpriteId; +} +static void DestroySplitIcon(void) +{ + if (sPokedexView->splitIconSpriteId != 0xFF) + DestroySprite(&gSprites[sPokedexView->splitIconSpriteId]); + sPokedexView->splitIconSpriteId = 0xFF; +} + +//************************************ +//* * +//* STATS * +//* * +//************************************ +static const u8 sStatsPageNavigationTextColor[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY}; + +static void StatsPage_PrintNavigationButtons(void) +{ + u8 x = 9; + u8 y = 0; + if (!HGSS_DECAPPED) + AddTextPrinterParameterized3(WIN_STATS_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_Stats_Buttons); + else + AddTextPrinterParameterized3(WIN_STATS_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_Stats_Buttons_Decapped); + + PutWindowTilemap(WIN_STATS_NAVIGATION_BUTTONS); + CopyWindowToVram(WIN_STATS_NAVIGATION_BUTTONS, 3); +} + +static void ResetStatsWindows(void) +{ + u8 i; + + FreeAllWindowBuffers(); + InitWindows(sStatsScreen_WindowTemplates); + + for (i = 0; i < WIN_STATS_END + 1; i++) + { + FillWindowPixelBuffer(i, PIXEL_FILL(0)); + PutWindowTilemap(i); + CopyWindowToVram(i, COPYWIN_FULL); + } +} + +static void SaveMonDataInStruct(void) +{ + u16 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum); + u8 evs[NUM_STATS] = + { + [STAT_HP] = gSpeciesInfo[species].evYield_HP, + [STAT_ATK] = gSpeciesInfo[species].evYield_Speed, + [STAT_DEF] = gSpeciesInfo[species].evYield_Attack, + [STAT_SPEED] = gSpeciesInfo[species].evYield_SpAttack, + [STAT_SPATK] = gSpeciesInfo[species].evYield_Defense, + [STAT_SPDEF] = gSpeciesInfo[species].evYield_SpDefense + }; + u8 differentEVs = 0; + u8 i; + + //Count how many different EVs + for (i = 0; i < NUM_STATS; i++) + { + if (evs[i] > 0) //HP//Speed//Attack//Special Attack//Defense//Special Defense + differentEVs++; + } + + sPokedexView->sPokemonStats.species = species; + sPokedexView->sPokemonStats.genderRatio = gSpeciesInfo[species].genderRatio; + sPokedexView->sPokemonStats.baseHP = gSpeciesInfo[species].baseHP; + sPokedexView->sPokemonStats.baseSpeed = gSpeciesInfo[species].baseSpeed; + sPokedexView->sPokemonStats.baseAttack = gSpeciesInfo[species].baseAttack; + sPokedexView->sPokemonStats.baseSpAttack = gSpeciesInfo[species].baseSpAttack; + sPokedexView->sPokemonStats.baseDefense = gSpeciesInfo[species].baseDefense; + sPokedexView->sPokemonStats.baseSpDefense = gSpeciesInfo[species].baseSpDefense; + sPokedexView->sPokemonStats.differentEVs = differentEVs; + sPokedexView->sPokemonStats.evYield_HP = evs[STAT_HP]; + sPokedexView->sPokemonStats.evYield_Speed = evs[STAT_ATK]; + sPokedexView->sPokemonStats.evYield_Attack = evs[STAT_DEF]; + sPokedexView->sPokemonStats.evYield_SpAttack = evs[STAT_SPEED]; + sPokedexView->sPokemonStats.evYield_Defense = evs[STAT_SPATK]; + sPokedexView->sPokemonStats.evYield_SpDefense = evs[STAT_SPDEF]; + sPokedexView->sPokemonStats.catchRate = gSpeciesInfo[species].catchRate; + sPokedexView->sPokemonStats.growthRate = gSpeciesInfo[species].growthRate; + sPokedexView->sPokemonStats.eggGroup1 = gSpeciesInfo[species].eggGroups[0]; + sPokedexView->sPokemonStats.eggGroup2 = gSpeciesInfo[species].eggGroups[1]; + sPokedexView->sPokemonStats.eggCycles = gSpeciesInfo[species].eggCycles; + sPokedexView->sPokemonStats.expYield = gSpeciesInfo[species].expYield; + sPokedexView->sPokemonStats.friendship = gSpeciesInfo[species].friendship; + sPokedexView->sPokemonStats.ability0 = GetAbilityBySpecies(species, 0); + sPokedexView->sPokemonStats.ability1 = GetAbilityBySpecies(species, 1); + sPokedexView->sPokemonStats.abilityHidden = GetAbilityBySpecies(species, 2); +} + +#define tMonSpriteId data[4] + +static void Task_LoadStatsScreen(u8 taskId) +{ + switch (gMain.state) + { + case 0: + default: + if (!gPaletteFade.active) + { + u16 r2; + + sPokedexView->currentPage = STATS_SCREEN; + gPokedexVBlankCB = gMain.vblankCallback; + SetVBlankCallback(NULL); + r2 = 0; + if (gTasks[taskId].data[1] != 0) + r2 += DISPCNT_OBJ_ON; + if (gTasks[taskId].data[2] != 0) + r2 |= DISPCNT_BG1_ON; + ResetOtherVideoRegisters(r2); + gMain.state = 1; + } + break; + case 1: + LoadTilesetTilemapHGSS(STATS_SCREEN); + + ResetStatsWindows(); + + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + gMain.state++; + break; + case 2: + LoadScreenSelectBarMain(0xD); + LoadPokedexBgPalette(sPokedexView->isSearchResults); + gMain.state++; + break; + case 3: + sPokedexView->typeIconSpriteIds[0] = 0xFF; + sPokedexView->typeIconSpriteIds[1] = 0xFF; + CreateTypeIconSprites(); + sPokedexView->splitIconSpriteId = 0xFF; //Physical/Special Split + LoadCompressedPalette(gMoveTypes_Pal, 0x1D0, 0x60); //Physical/Special Split + LoadCompressedSpriteSheet(&sSpriteSheet_SplitIcons); //Physical/Special Split + LoadSpritePalette(&sSpritePal_SplitIcons); //Physical/Special Split + gMain.state++; + break; + case 4: + SaveMonDataInStruct(); + sPokedexView->moveSelected = 0; + sPokedexView->movesTotal = 0; + sPokedexView->numEggMoves = 0; + sPokedexView->numLevelUpMoves = 0; + sPokedexView->numTMHMMoves = 0; + if (CalculateMoves()) + gMain.state++; + break; + case 5: + if (gTasks[taskId].data[1] == 0) + { + //Icon + 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 + gSprites[gTasks[taskId].data[4]].oam.priority = 0; + } + gMain.state++; + break; + case 6: + gTasks[taskId].data[5] = 0; + PrintStatsScreen_NameGender(taskId, sPokedexListItem->dexNum, sPokedexView->dexMode == DEX_MODE_HOENN ? FALSE : TRUE); + PrintStatsScreen_Left(taskId); + PrintStatsScreen_Abilities(taskId); + PrintStatsScreen_Moves_Top(taskId); + PrintStatsScreen_Moves_Description(taskId); + PrintStatsScreen_Moves_BottomText(taskId); + PrintStatsScreen_Moves_Bottom(taskId); + if (!sPokedexListItem->owned) + LoadPalette(gPlttBufferUnfaded + 1, 0x31, 0x1E); + StatsPage_PrintNavigationButtons(); //sText_Stats_Buttons + gMain.state++; + break; + case 7: + { + u32 preservedPalettes = 0; + + if (gTasks[taskId].data[2] != 0) + preservedPalettes = 0x14; // each bit represents a palette index + if (gTasks[taskId].data[1] != 0) + preservedPalettes |= (1 << (gSprites[gTasks[taskId].tMonSpriteId].oam.paletteNum + 16)); + BeginNormalPaletteFade(~preservedPalettes, 0, 16, 0, RGB_BLACK); + SetVBlankCallback(gPokedexVBlankCB); + gMain.state++; + } + break; + case 8: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + HideBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + gMain.state++; + break; + case 9: + if (!gPaletteFade.active) + gMain.state++; + break; + case 10: + gMain.state++; + break; + case 11: + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 1; + gTasks[taskId].func = Task_HandleStatsScreenInput; + gMain.state = 0; + break; + } +} + +static void UNUSED FreeStatsScreenWindowAndBgBuffers(void) +{ + void *tilemapBuffer; + + FreeAllWindowBuffers(); + tilemapBuffer = GetBgTilemapBuffer(0); + if (tilemapBuffer) + Free(tilemapBuffer); + tilemapBuffer = GetBgTilemapBuffer(1); + if (tilemapBuffer) + Free(tilemapBuffer); + tilemapBuffer = GetBgTilemapBuffer(2); + if (tilemapBuffer) + Free(tilemapBuffer); + tilemapBuffer = GetBgTilemapBuffer(3); + if (tilemapBuffer) + Free(tilemapBuffer); +} + +static void Task_HandleStatsScreenInput(u8 taskId) +{ + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_DEX_PAGE); + if (gTasks[taskId].data[5] == 0) + gTasks[taskId].data[5] = 1; + else + gTasks[taskId].data[5] = 0; + + FillWindowPixelBuffer(WIN_STATS_LEFT, PIXEL_FILL(0)); + PrintStatsScreen_Left(taskId); + + FillWindowPixelBuffer(WIN_STATS_MOVES_DESCRIPTION, PIXEL_FILL(0)); + PrintStatsScreen_Moves_Description(taskId); + + FillWindowPixelBuffer(WIN_STATS_MOVES_BOTTOM, PIXEL_FILL(0)); + PrintStatsScreen_Moves_BottomText(taskId); + PrintStatsScreen_Moves_Bottom(taskId); + + FillWindowPixelBuffer(WIN_STATS_ABILITIES, PIXEL_FILL(0)); + PrintStatsScreen_Abilities(taskId); + } + if (JOY_NEW(B_BUTTON)) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + gTasks[taskId].func = Task_ExitStatsScreen; + PlaySE(SE_PC_OFF); + return; + } + + //Change moves + if (JOY_REPEAT(DPAD_UP) && sPokedexView->moveSelected > 0) + { + sPokedexView->moveSelected -= 1; + PlaySE(SE_SELECT); + FillWindowPixelBuffer(WIN_STATS_MOVES_TOP, PIXEL_FILL(0)); + PrintStatsScreen_DestroyMoveItemIcon(taskId); + PrintStatsScreen_Moves_Top(taskId); + + FillWindowPixelBuffer(WIN_STATS_MOVES_DESCRIPTION, PIXEL_FILL(0)); + PrintStatsScreen_Moves_Description(taskId); + + FillWindowPixelRect(WIN_STATS_MOVES_BOTTOM, PIXEL_FILL(0), 50, 0, 20, 16); + FillWindowPixelRect(WIN_STATS_MOVES_BOTTOM, PIXEL_FILL(0), 120, 0, 20, 16); + PrintStatsScreen_Moves_Bottom(taskId); + } + if (JOY_REPEAT(DPAD_DOWN) && sPokedexView->moveSelected < sPokedexView->movesTotal -1 ) + { + sPokedexView->moveSelected = sPokedexView->moveSelected + 1; + PlaySE(SE_SELECT); + FillWindowPixelBuffer(WIN_STATS_MOVES_TOP, PIXEL_FILL(0)); + PrintStatsScreen_DestroyMoveItemIcon(taskId); + PrintStatsScreen_Moves_Top(taskId); + + FillWindowPixelBuffer(WIN_STATS_MOVES_DESCRIPTION, PIXEL_FILL(0)); + PrintStatsScreen_Moves_Description(taskId); + + FillWindowPixelRect(WIN_STATS_MOVES_BOTTOM, PIXEL_FILL(0), 50, 0, 20, 16); + FillWindowPixelRect(WIN_STATS_MOVES_BOTTOM, PIXEL_FILL(0), 120, 0, 20, 16); + PrintStatsScreen_Moves_Bottom(taskId); + } + + //Switch screens + if ((JOY_NEW(DPAD_LEFT) || (JOY_NEW(L_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))) + { + sPokedexView->selectedScreen = INFO_SCREEN; + BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK); + sPokedexView->screenSwitchState = 1; + gTasks[taskId].func = Task_SwitchScreensFromStatsScreen; + PlaySE(SE_PIN); + } + if ((JOY_NEW(DPAD_RIGHT) || (JOY_NEW(R_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))) + { + if (!sPokedexListItem->owned) + PlaySE(SE_FAILURE); + else + { + sPokedexView->selectedScreen = EVO_SCREEN; + BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK); + sPokedexView->screenSwitchState = 3; + gTasks[taskId].func = Task_SwitchScreensFromStatsScreen; + PlaySE(SE_PIN); + } + } +} + +#define ITEM_TAG 0xFDF3 + +static void PrintStatsScreen_DestroyMoveItemIcon(u8 taskId) +{ + FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon + FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon + FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[3]]); //Destroy item icon + DestroySprite(&gSprites[gTasks[taskId].data[3]]); //Destroy item icon +} + +static bool8 CalculateMoves(void) +{ + u16 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum); + const u16 *teachableLearnset = GetSpeciesTeachableLearnset(species); + + u16 statsMovesEgg[EGG_MOVES_ARRAY_COUNT] = {0}; + u16 statsMovesLevelUp[MAX_LEVEL_UP_MOVES] = {0}; + u16 move; + + u8 numEggMoves = 0; + u8 numLevelUpMoves = 0; + u8 numTMHMMoves = 0; + u8 numTutorMoves = 0; + u16 movesTotal = 0; + u8 i,j; + + // Mega pokemon don't have distinct learnsets from their base form; so use base species for calculation + if (species >= SPECIES_VENUSAUR_MEGA && species <= SPECIES_GROUDON_PRIMAL) + species = GetFormSpeciesId(species, 0); + + //Calculate amount of Egg and LevelUp moves + numEggMoves = GetEggMovesSpecies(species, statsMovesEgg); + numLevelUpMoves = GetLevelUpMovesBySpecies(species, statsMovesLevelUp); + + //Egg moves + for (i=0; i < numEggMoves; i++) + { + sStatsMoves[movesTotal] = statsMovesEgg[i]; + movesTotal++; + } + + //Level up moves + for (i=0; i < numLevelUpMoves; i++) + { + sStatsMoves[movesTotal] = statsMovesLevelUp[i]; + movesTotal++; + } + + for (i = 0; teachableLearnset[i] != MOVE_UNAVAILABLE; i++) + { + move = teachableLearnset[i]; + for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++) + { + if (ItemIdToBattleMoveId(ITEM_TM01 + j) == move) + { + sStatsMovesTMHM_ID[numTMHMMoves] = (ITEM_TM01 + j); + numTMHMMoves++; + + sStatsMoves[movesTotal] = move; + movesTotal++; + break; + } + } + } + + for (i = 0; teachableLearnset[i] != MOVE_UNAVAILABLE; i++) + { + move = teachableLearnset[i]; + for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++) + { + if (ItemIdToBattleMoveId(ITEM_TM01 + j) == move) + break; + } + + if (j >= NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES) + { + numTutorMoves++; + + sStatsMoves[movesTotal] = move; + movesTotal++; + } + } + + sPokedexView->numEggMoves = numEggMoves; + sPokedexView->numLevelUpMoves = numLevelUpMoves; + sPokedexView->numTMHMMoves = numTMHMMoves; + sPokedexView->numTutorMoves = numTutorMoves; + sPokedexView->movesTotal = movesTotal; + + return TRUE; +} + +static void PrintStatsScreen_Moves_Top(u8 taskId) +{ + u8 numEggMoves = sPokedexView->numEggMoves; + u8 numLevelUpMoves = sPokedexView->numLevelUpMoves; + u8 numTMHMMoves = sPokedexView->numTMHMMoves; + u8 numTutorMoves = sPokedexView->numTutorMoves; + u8 movesTotal = sPokedexView->movesTotal; + u8 selected = sPokedexView->moveSelected; + u8 level; + u8 moves_x = 5; + u8 moves_y = 3; + u16 move; + u16 item; + + u16 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum); + + //Move + move = sStatsMoves[selected]; + + //Moves selected from move max + ConvertIntToDecimalStringN(gStringVar1, (selected+1), STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(gStringVar2, movesTotal, STR_CONV_MODE_RIGHT_ALIGN, 3); + StringExpandPlaceholders(gStringVar1, sText_Stats_MoveSelectedMax); + PrintStatsScreenTextSmallWhite(WIN_STATS_MOVES_TOP, gStringVar1, moves_x-1, moves_y+1); + + //Move name + StringCopy(gStringVar3, gMoveNames[move]); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 20); + PrintStatsScreenTextSmall(WIN_STATS_MOVES_TOP, gStringVar3, moves_x, moves_y + 17); + + //Draw move type icon + if (gTasks[taskId].data[5] == 0) + { + SetTypeIconPosAndPal(gBattleMoves[move].type, moves_x + 146, moves_y + 17, 0); + SetSpriteInvisibility(1, TRUE); + } + else + { + SetTypeIconPosAndPal(NUMBER_OF_MON_TYPES + gContestMoves[move].contestCategory, moves_x + 146, moves_y + 17, 1); + SetSpriteInvisibility(0, TRUE); + } + + //Calculate and retrieve correct move from the arrays + if (selected < numEggMoves) + { + PrintStatsScreenTextSmall(WIN_STATS_MOVES_TOP, gText_ThreeDashes, moves_x + 113, moves_y + 9); + item = ITEM_LUCKY_EGG; + } + else if (selected < (numEggMoves + numLevelUpMoves)) + { + level = GetSpeciesLevelUpLearnset(species)[(selected-numEggMoves)].level; + ConvertIntToDecimalStringN(gStringVar1, level, STR_CONV_MODE_LEFT_ALIGN, 3); //Move learn lvl + PrintStatsScreenTextSmall(WIN_STATS_MOVES_TOP, sText_Stats_MoveLevel, moves_x + 113, moves_y + 3); //Level text + PrintStatsScreenTextSmall(WIN_STATS_MOVES_TOP, gStringVar1, moves_x + 113, moves_y + 14); //Print level + item = ITEM_RARE_CANDY; + } + else if (selected < (numEggMoves + numLevelUpMoves + numTMHMMoves)) + { + CopyItemName(sStatsMovesTMHM_ID[(selected-numEggMoves-numLevelUpMoves)], gStringVar1); //TM name + PrintStatsScreenTextSmall(WIN_STATS_MOVES_TOP, gStringVar1, moves_x + 113, moves_y + 9); + item = sStatsMovesTMHM_ID[(selected-numEggMoves-numLevelUpMoves)]; + } + else if (selected < (numEggMoves + numLevelUpMoves + numTMHMMoves + numTutorMoves)) + { + PrintStatsScreenTextSmall(WIN_STATS_MOVES_TOP, gText_ThreeDashes, moves_x + 113, moves_y + 9); + item = ITEM_TEACHY_TV; + } + else + { + StringCopy(gStringVar4, gText_CommunicationError); + item = ITEM_MASTER_BALL; + } + + //Egg/TM/Level/Tutor Item Icon + gTasks[taskId].data[3] = AddItemIconSprite(ITEM_TAG, ITEM_TAG, item); + gSprites[gTasks[taskId].data[3]].x2 = 203; + gSprites[gTasks[taskId].data[3]].y2 = 39; + gSprites[gTasks[taskId].data[3]].oam.priority = 0; + +} + +static void PrintStatsScreen_Moves_Description(u8 taskId) +{ + u8 selected = sPokedexView->moveSelected; + u16 move; + u8 moves_x = 5; + u8 moves_y = 5; + + //Move + move = sStatsMoves[selected]; + + //Move description + if (gTasks[taskId].data[5] == 0) + { + StringCopy(gStringVar4, gMoveDescriptionPointers[(move - 1)]); + PrintStatsScreenTextSmall(WIN_STATS_MOVES_DESCRIPTION, gStringVar4, moves_x, moves_y); + } + else + { + StringCopy(gStringVar4, gContestEffectDescriptionPointers[gContestMoves[move].effect]); + PrintStatsScreenTextSmall(WIN_STATS_MOVES_DESCRIPTION, gStringVar4, moves_x, moves_y); + } +} + +static void PrintStatsScreen_Moves_BottomText(u8 taskId) +{ + u8 moves_x = 8; + u8 moves_y = 3; + if (gTasks[taskId].data[5] == 0) + { + PrintStatsScreenTextSmall(WIN_STATS_MOVES_BOTTOM, gText_Power, moves_x, moves_y); + PrintStatsScreenTextSmall(WIN_STATS_MOVES_BOTTOM, gText_Accuracy2, moves_x + 66, moves_y); + } + else + { + PrintStatsScreenTextSmall(WIN_STATS_MOVES_BOTTOM, gText_Appeal, moves_x, moves_y); + PrintStatsScreenTextSmall(WIN_STATS_MOVES_BOTTOM, gText_Jam, moves_x + 66, moves_y); + } +} + +static void PrintStatsScreen_Moves_Bottom(u8 taskId) +{ + u8 moves_x = 8; + u8 moves_y = 3; + u8 selected = sPokedexView->moveSelected; + u16 move; + //Contest + u8 contest_effectValue; + u8 contest_appeal = 0; + u8 contest_jam = 0; + + //Move + move = sStatsMoves[selected]; + + //Power + Accuracy + if (gTasks[taskId].data[5] == 0) + { + //Power + if (gBattleMoves[move].power < 2) + StringCopy(gStringVar1, gText_ThreeDashes); + else + ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].power, STR_CONV_MODE_RIGHT_ALIGN, 3); + PrintStatsScreenTextSmall(WIN_STATS_MOVES_BOTTOM, gStringVar1, moves_x + 45, moves_y); + //Physical/Special Split + DestroySplitIcon(); + ShowSplitIcon(GetBattleMoveSplit(move)); + //Accuracy + if (gBattleMoves[move].accuracy == 0) + StringCopy(gStringVar1, gText_ThreeDashes); + else + ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3); + PrintStatsScreenTextSmall(WIN_STATS_MOVES_BOTTOM, gStringVar1, moves_x + 114, moves_y); + } + else //Appeal + Jam + { + DestroySplitIcon(); + gSprites[sPokedexView->splitIconSpriteId].invisible = TRUE; + //Appeal + contest_effectValue = gContestEffects[gContestMoves[move].effect].appeal; + if (contest_effectValue != 0xFF) + contest_appeal = contest_effectValue / 10; + ConvertIntToDecimalStringN(gStringVar1, contest_appeal, STR_CONV_MODE_RIGHT_ALIGN, 1); + StringCopy(gStringVar2, sText_PlusSymbol); + StringAppend(gStringVar2, gStringVar1); + PrintStatsScreenTextSmall(WIN_STATS_MOVES_BOTTOM, gStringVar2, moves_x + 45, moves_y); + + //Jam + contest_effectValue = gContestEffects[gContestMoves[move].effect].jam; + if (contest_effectValue != 0xFF) + contest_jam = contest_effectValue / 10; + ConvertIntToDecimalStringN(gStringVar1, contest_jam, STR_CONV_MODE_RIGHT_ALIGN, 1); + StringCopy(gStringVar2, sText_Stats_Minus); + StringAppend(gStringVar2, gStringVar1); + PrintStatsScreenTextSmall(WIN_STATS_MOVES_BOTTOM, gStringVar2, moves_x + 119, moves_y); + } +} + +static void PrintStatsScreen_NameGender(u8 taskId, u32 num, u32 value) +{ + u8 str[16]; + u16 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum); + + u8 base_x = 38; + u8 base_y = 0; + u8 gender_x, gender_y; + + //Name + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, GetSpeciesName(species), base_x, base_y); + + //Number + if (value == 0) + value = NationalToHoennOrder(num); + else + value = num; + ConvertIntToDecimalStringN(StringCopy(str, gText_NumberClear01), value, STR_CONV_MODE_LEADING_ZEROS, 3); + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, str, base_x, base_y + 10); + + //Gender ratio //MON_GENDERLESS == 0xFF + gender_x = base_x; + gender_y = base_y + 20; + switch (sPokedexView->sPokemonStats.genderRatio) + { + case 0: + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_0, gender_x, gender_y); + break; + case 31: + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_12_5, gender_x, gender_y); + break; + case 63: + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_25, gender_x, gender_y); + break; + case 127: + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_50, gender_x, gender_y); + break; + case 191: + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_75, gender_x, gender_y); + break; + case 223: + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_87_5, gender_x, gender_y); + break; + case 254: + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, sText_Stats_Gender_100, gender_x, gender_y); + break; + default: + PrintStatsScreenTextSmall(WIN_STATS_NAME_GENDER, gText_ThreeDashes, gender_x, gender_y); + break; + } +} + +static u8 PrintMonStatsToggle_DifferentEVsColumn(u8 differentEVs) +{ + if (differentEVs == 1 || differentEVs == 3) + return 0; + else + return 1; +} + +static u8 PrintMonStatsToggle_DifferentEVsRow(u8 differentEVs) +{ + if (differentEVs == 1 || differentEVs == 2) + return 0; + else + return 1; +} + +static u8* PrintMonStatsToggle_EV_Arrows(u8 *dest, u8 value) +{ + switch (value) + { + case 1: + StringCopy(dest, sText_Stats_EV_Plus1); + break; + case 2: + StringCopy(dest, sText_Stats_EV_Plus2); + break; + case 3: + StringCopy(dest, sText_Stats_EV_Plus3); + break; + } + return dest; +} + +static void PrintStatsScreen_Left(u8 taskId) +{ + u8 base_x = 8; + u8 x_offset_column = 43; + u8 column = 0; + u8 base_x_offset = 70; + u8 base_x_first_row = 23; + u8 base_x_second_row = 43; + u8 base_y_offset = 11; + u8 base_i = 0; + u8 base_y = 5; + u32 align_x; + u8 total_x = 93; + u8 strEV[25]; + u8 strBase[14]; + u8 EVs[6] = {sPokedexView->sPokemonStats.evYield_HP, sPokedexView->sPokemonStats.evYield_Speed, sPokedexView->sPokemonStats.evYield_Attack, sPokedexView->sPokemonStats.evYield_SpAttack, sPokedexView->sPokemonStats.evYield_Defense, sPokedexView->sPokemonStats.evYield_SpDefense}; + u8 differentEVs = 0; + + //Base stats + if (gTasks[taskId].data[5] == 0) + { + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_HP, base_x, base_y + base_y_offset*base_i); + ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseHP, STR_CONV_MODE_RIGHT_ALIGN, 3); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_first_row, base_y + base_y_offset*base_i); + + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_Speed, base_x+base_x_second_row, base_y + base_y_offset*base_i); + ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseSpeed, STR_CONV_MODE_RIGHT_ALIGN, 3); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_offset, base_y + base_y_offset*base_i); + + base_i++; + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_Attack, base_x, base_y + base_y_offset*base_i); + ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseAttack, STR_CONV_MODE_RIGHT_ALIGN, 3); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_first_row, base_y + base_y_offset*base_i); + + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_SpAttack, base_x+base_x_second_row, base_y + base_y_offset*base_i); + ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseSpAttack, STR_CONV_MODE_RIGHT_ALIGN, 3); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_offset, base_y + base_y_offset*base_i); + + base_i++; + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_Defense, base_x, base_y + base_y_offset*base_i); + ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseDefense, STR_CONV_MODE_RIGHT_ALIGN, 3); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_first_row, base_y + base_y_offset*base_i); + + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_SpDefense, base_x+base_x_second_row, base_y + base_y_offset*base_i); + ConvertIntToDecimalStringN(strBase, sPokedexView->sPokemonStats.baseSpDefense, STR_CONV_MODE_RIGHT_ALIGN, 3); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, strBase, base_x+base_x_offset, base_y + base_y_offset*base_i); + base_i++; + } + else //EV increases + { + //If 1 or 2 EVs display with the same layout as the base stats + if (sPokedexView->sPokemonStats.differentEVs < 3) + { + differentEVs = 0; + //HP + if (EVs[0] > 0) + { + differentEVs++; + column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); + base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); + StringCopy(gStringVar1, sText_Stats_HP); + PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[0]); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); + } + //Speed + if (EVs[1]> 0) + { + differentEVs++; + column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); + base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); + StringCopy(gStringVar1, sText_Stats_Speed); + PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[1]); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); + } + //Attack + if (EVs[2] > 0) + { + differentEVs++; + column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); + base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); + StringCopy(gStringVar1, sText_Stats_Attack); + PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[2]); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); + } + //Special Attack + if (EVs[3] > 0) + { + differentEVs++; + column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); + base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); + StringCopy(gStringVar1, sText_Stats_SpAttack); + PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[3]); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); + } + //Defense + if (EVs[4] > 0) + { + differentEVs++; + column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); + base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); + StringCopy(gStringVar1, sText_Stats_Defense); + PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[4]); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); + } + //Special Defense + if (EVs[5] > 0) + { + differentEVs++; + column = PrintMonStatsToggle_DifferentEVsColumn(differentEVs); + base_i = PrintMonStatsToggle_DifferentEVsRow(differentEVs); + StringCopy(gStringVar1, sText_Stats_SpDefense); + PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[5]); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + x_offset_column*column, base_y + base_y_offset*base_i); + } + } + else //3 different EVs in 1 row + { + column = 0; + //HP + if (EVs[0] > 0) + { + StringCopy(gStringVar1, sText_Stats_HP); + PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[0]); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); + column++; + } + //Speed + if (EVs[1] > 0) + { + StringCopy(gStringVar1, sText_Stats_Speed); + PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[1]); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); + column++; + } + //Attack + if (EVs[2] > 0) + { + StringCopy(gStringVar1, sText_Stats_Attack); + PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[2]); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); + column++; + } + //Special Attack + if (EVs[3] > 0) + { + StringCopy(gStringVar1, sText_Stats_SpAttack); + PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[3]); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); + column++; + } + //Defense + if (EVs[4] > 0) + { + StringCopy(gStringVar1, sText_Stats_Defense); + PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[4]); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); + column++; + } + //Special Defense + if (EVs[5] > 0) + { + StringCopy(gStringVar1, sText_Stats_SpDefense); + PrintMonStatsToggle_EV_Arrows(gStringVar2, EVs[5]); + StringExpandPlaceholders(gStringVar3, sText_Stats_EvStr1Str2); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x + 29*column, base_y + base_y_offset*base_i); + column++; + } + } + base_i++; + } + + //TOGGLE-------------------------------------- + if (gTasks[taskId].data[5] == 0) + { + u32 catchRate = sPokedexView->sPokemonStats.catchRate; + u32 growthRate = sPokedexView->sPokemonStats.growthRate; + + //Catch rate + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate, base_x, base_y + base_y_offset*base_i); + if (catchRate <= 10) + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_Legend, base_x + x_offset_column, base_y + base_y_offset*base_i); + else if (catchRate <= 70) + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_VeryHard, base_x + x_offset_column, base_y + base_y_offset*base_i); + else if (catchRate <= 100) + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_Difficult, base_x + x_offset_column, base_y + base_y_offset*base_i); + else if (catchRate <= 150) + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_Medium, base_x + x_offset_column, base_y + base_y_offset*base_i); + else if (catchRate <= 200) + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_Relaxed, base_x + x_offset_column, base_y + base_y_offset*base_i); + else + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_CatchRate_Easy, base_x + x_offset_column, base_y + base_y_offset*base_i); + base_i++; + + //Growth rate + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_Growthrate, base_x, base_y + base_y_offset*base_i); + switch (growthRate) + { + case GROWTH_MEDIUM_FAST: + StringCopy(strEV, sText_Stats_MEDIUM_FAST); + break; + case GROWTH_ERRATIC: + StringCopy(strEV, sText_Stats_ERRATIC); + break; + case GROWTH_FLUCTUATING: + StringCopy(strEV, sText_Stats_FLUCTUATING); + break; + case GROWTH_MEDIUM_SLOW: + StringCopy(strEV, sText_Stats_MEDIUM_SLOW); + break; + case GROWTH_FAST: + StringCopy(strEV, sText_Stats_FAST); + break; + case GROWTH_SLOW: + StringCopy(strEV, sText_Stats_SLOW); + break; + default: + break; + } + align_x = GetStringRightAlignXOffset(0, strEV, total_x); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, strEV, align_x, base_y + base_y_offset*base_i); + } + else + { + //Exp Yield + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_ExpYield, base_x, base_y + base_y_offset*base_i); + ConvertIntToDecimalStringN(gStringVar1, sPokedexView->sPokemonStats.expYield, STR_CONV_MODE_RIGHT_ALIGN, 3); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar1, base_x + base_x_offset, base_y + base_y_offset*base_i); + base_i++; + + //Friendship + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_Friendship, base_x, base_y + base_y_offset*base_i); + switch (sPokedexView->sPokemonStats.friendship) + { + case 35: + StringCopy(strEV, sText_Stats_Friendship_BigAnger); + break; + case 70: + StringCopy(strEV, sText_Stats_Friendship_Neutral); + break; + case 90: + StringCopy(strEV, sText_Stats_Friendship_Happy); + break; + case 100: + StringCopy(strEV, sText_Stats_Friendship_Happy); + break; + case 140: + StringCopy(strEV, sText_Stats_Friendship_BigSmile); + break; + default: + ConvertIntToDecimalStringN(strEV, sPokedexView->sPokemonStats.friendship, STR_CONV_MODE_RIGHT_ALIGN, 3); + break; + } + align_x = GetStringRightAlignXOffset(0, strEV, total_x); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, strEV, align_x, base_y + base_y_offset*base_i); + base_i++; + + //Egg cycles + if (sPokedexView->sPokemonStats.eggGroup1 == EGG_GROUP_NO_EGGS_DISCOVERED || sPokedexView->sPokemonStats.eggGroup2 == EGG_GROUP_NO_EGGS_DISCOVERED) //Species without eggs (legendaries etc) + { + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_EggCycles, base_x, base_y + base_y_offset*base_i); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, gText_ThreeDashes, 78, base_y + base_y_offset*base_i); + } + else + { + PrintStatsScreenTextSmall(WIN_STATS_LEFT, sText_Stats_EggCycles, base_x, base_y + base_y_offset*base_i); + if (sPokedexView->sPokemonStats.eggCycles <= 10) + { + StringCopy(strEV, sText_Stats_EggCycles_VeryFast); + align_x = 76; + } + else if (sPokedexView->sPokemonStats.eggCycles <= 20) + { + StringCopy(strEV, sText_Stats_EggCycles_Fast); + align_x = 85; + } + else if (sPokedexView->sPokemonStats.eggCycles <= 30) + { + StringCopy(strEV, sText_Stats_EggCycles_Normal); + align_x = 76; + } + else + { + StringCopy(strEV, sText_Stats_EggCycles_Slow); + align_x = 67; + } + PrintStatsScreenTextSmall(WIN_STATS_LEFT, strEV, align_x, base_y + base_y_offset*base_i); + } + base_i++; + + //Egg group 1 + switch (sPokedexView->sPokemonStats.eggGroup1) + { + case EGG_GROUP_MONSTER : + StringCopy(gStringVar1, sText_Stats_eggGroup_MONSTER); + break; + case EGG_GROUP_WATER_1 : + StringCopy(gStringVar1, sText_Stats_eggGroup_WATER_1); + break; + case EGG_GROUP_BUG : + StringCopy(gStringVar1, sText_Stats_eggGroup_BUG); + break; + case EGG_GROUP_FLYING : + StringCopy(gStringVar1, sText_Stats_eggGroup_FLYING); + break; + case EGG_GROUP_FIELD : + StringCopy(gStringVar1, sText_Stats_eggGroup_FIELD); + break; + case EGG_GROUP_FAIRY : + StringCopy(gStringVar1, sText_Stats_eggGroup_FAIRY); + break; + case EGG_GROUP_GRASS : + StringCopy(gStringVar1, sText_Stats_eggGroup_GRASS); + break; + case EGG_GROUP_HUMAN_LIKE : + StringCopy(gStringVar1, sText_Stats_eggGroup_HUMAN_LIKE); + break; + case EGG_GROUP_WATER_3 : + StringCopy(gStringVar1, sText_Stats_eggGroup_WATER_3); + break; + case EGG_GROUP_MINERAL : + StringCopy(gStringVar1, sText_Stats_eggGroup_MINERAL); + break; + case EGG_GROUP_AMORPHOUS : + StringCopy(gStringVar1, sText_Stats_eggGroup_AMORPHOUS); + break; + case EGG_GROUP_WATER_2 : + StringCopy(gStringVar1, sText_Stats_eggGroup_WATER_2); + break; + case EGG_GROUP_DITTO : + StringCopy(gStringVar1, sText_Stats_eggGroup_DITTO); + break; + case EGG_GROUP_DRAGON : + StringCopy(gStringVar1, sText_Stats_eggGroup_DRAGON); + break; + case EGG_GROUP_NO_EGGS_DISCOVERED: + StringCopy(gStringVar1, sText_Stats_eggGroup_NO_EGGS_DISCOVERED); + break; + } + //Egg group 2 + if (sPokedexView->sPokemonStats.eggGroup1 != sPokedexView->sPokemonStats.eggGroup2) + { + switch (sPokedexView->sPokemonStats.eggGroup2) + { + case EGG_GROUP_MONSTER : + StringCopy(gStringVar2, sText_Stats_eggGroup_MONSTER); + break; + case EGG_GROUP_WATER_1 : + StringCopy(gStringVar2, sText_Stats_eggGroup_WATER_1); + break; + case EGG_GROUP_BUG : + StringCopy(gStringVar2, sText_Stats_eggGroup_BUG); + break; + case EGG_GROUP_FLYING : + StringCopy(gStringVar2, sText_Stats_eggGroup_FLYING); + break; + case EGG_GROUP_FIELD : + StringCopy(gStringVar2, sText_Stats_eggGroup_FIELD); + break; + case EGG_GROUP_FAIRY : + StringCopy(gStringVar2, sText_Stats_eggGroup_FAIRY); + break; + case EGG_GROUP_GRASS : + StringCopy(gStringVar2, sText_Stats_eggGroup_GRASS); + break; + case EGG_GROUP_HUMAN_LIKE : + StringCopy(gStringVar2, sText_Stats_eggGroup_HUMAN_LIKE); + break; + case EGG_GROUP_WATER_3 : + StringCopy(gStringVar2, sText_Stats_eggGroup_WATER_3); + break; + case EGG_GROUP_MINERAL : + StringCopy(gStringVar2, sText_Stats_eggGroup_MINERAL); + break; + case EGG_GROUP_AMORPHOUS : + StringCopy(gStringVar2, sText_Stats_eggGroup_AMORPHOUS); + break; + case EGG_GROUP_WATER_2 : + StringCopy(gStringVar2, sText_Stats_eggGroup_WATER_2); + break; + case EGG_GROUP_DITTO : + StringCopy(gStringVar2, sText_Stats_eggGroup_DITTO); + break; + case EGG_GROUP_DRAGON : + StringCopy(gStringVar2, sText_Stats_eggGroup_DRAGON); + break; + case EGG_GROUP_NO_EGGS_DISCOVERED: + StringCopy(gStringVar2, sText_Stats_eggGroup_NO_EGGS_DISCOVERED); + break; + } + StringExpandPlaceholders(gStringVar3, sText_Stats_eggGroup_Groups); + align_x = GetStringRightAlignXOffset(0, gStringVar3, total_x); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar3, base_x, base_y + base_y_offset*base_i); + } + else + { + align_x = GetStringRightAlignXOffset(0, gStringVar1, total_x); + PrintStatsScreenTextSmall(WIN_STATS_LEFT, gStringVar1, base_x, base_y + base_y_offset*base_i); + } + base_i++; + } +} + +static void PrintStatsScreen_Abilities(u8 taskId) +{ + u8 abilities_x = 5; + u8 abilities_y = 3; + u16 ability0; + u16 ability1; + u16 abilityHidden; + + //Abilitie(s) + + if (gTasks[taskId].data[5] == 0) + { + ability0 = sPokedexView->sPokemonStats.ability0; + PrintStatsScreenTextSmallWhite(WIN_STATS_ABILITIES, gAbilityNames[ability0], abilities_x, abilities_y); + PrintStatsScreenTextSmall(WIN_STATS_ABILITIES, gAbilityDescriptionPointers[ability0], abilities_x, abilities_y + 14); + + ability1 = sPokedexView->sPokemonStats.ability1; + if (ability1 != ABILITY_NONE && ability1 != ability0) + { + PrintStatsScreenTextSmallWhite(WIN_STATS_ABILITIES, gAbilityNames[ability1], abilities_x, abilities_y + 30); + PrintStatsScreenTextSmall(WIN_STATS_ABILITIES, gAbilityDescriptionPointers[ability1], abilities_x, abilities_y + 44); + } + } + else //Hidden abilities + { + abilityHidden = sPokedexView->sPokemonStats.abilityHidden; + PrintStatsScreenTextSmallWhite(WIN_STATS_ABILITIES, gAbilityNames[abilityHidden], abilities_x, abilities_y); + PrintStatsScreenTextSmall(WIN_STATS_ABILITIES, gAbilityDescriptionPointers[abilityHidden], abilities_x, abilities_y + 14); + } +} + +static void Task_SwitchScreensFromStatsScreen(u8 taskId) +{ + if (!gPaletteFade.active) + { + FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon + FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon + FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[3]]); //Destroy item icon + DestroySprite(&gSprites[gTasks[taskId].data[3]]); //Destroy item icon + FreeMonIconPalettes(); //Destroy pokemon icon sprite + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[4]]); //Destroy pokemon icon sprite + + FreeAndDestroyMonPicSprite(gTasks[taskId].tMonSpriteId); + switch (sPokedexView->screenSwitchState) + { + case 1: + FreeAllWindowBuffers(); + InitWindows(sInfoScreen_WindowTemplates); + gTasks[taskId].func = Task_LoadAreaScreen; + break; + case 2: + gTasks[taskId].func = Task_LoadCryScreen; + break; + case 3: + FreeAllWindowBuffers(); + InitWindows(sInfoScreen_WindowTemplates); + gTasks[taskId].func = Task_LoadEvolutionScreen; + break; + default: + gTasks[taskId].func = Task_LoadInfoScreen; + break; + } + } +} + +static void Task_ExitStatsScreen(u8 taskId) +{ + if (!gPaletteFade.active) + { + FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon + FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon + FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[3]]); //Destroy item icon + DestroySprite(&gSprites[gTasks[taskId].data[3]]); //Destroy item icon + FreeMonIconPalettes(); //Destroy pokemon icon sprite + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[4]]); //Destroy pokemon icon sprite + + FreeAndDestroyMonPicSprite(gTasks[taskId].tMonSpriteId); + FreeInfoScreenWindowAndBgBuffers(); + DestroyTask(taskId); + } +} + + +//************************************ +//* * +//* EVOS * +//* * +//************************************ +static const u8 sEvoFormsPageNavigationTextColor[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY}; + +static void EvoFormsPage_PrintNavigationButtons(void) +{ + u8 x = 6; + u8 y = 0; + + FillWindowPixelBuffer(WIN_NAVIGATION_BUTTONS, PIXEL_FILL(0)); + + if (sPokedexView->selectedScreen == EVO_SCREEN) + { + if (!HGSS_DECAPPED) + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x+9, y, sStatsPageNavigationTextColor, 0, sText_EVO_Buttons_PE); + else + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x+9, y, sStatsPageNavigationTextColor, 0, sText_EVO_Buttons_Decapped_PE); + } + else if (sPokedexView->selectedScreen == FORMS_SCREEN) + { + if (sPokedexView->sFormScreenData.inSubmenu) + { + if (!HGSS_DECAPPED) + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_FORMS_Buttons_Submenu_PE); + else + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_FORMS_Buttons_Submenu_Decapped_PE); + } + else + { + if (!HGSS_DECAPPED) + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_FORMS_Buttons_PE); + else + AddTextPrinterParameterized3(WIN_NAVIGATION_BUTTONS, 0, x, y, sStatsPageNavigationTextColor, 0, sText_FORMS_Buttons_Decapped_PE); + } + } + + PutWindowTilemap(WIN_NAVIGATION_BUTTONS); + CopyWindowToVram(WIN_NAVIGATION_BUTTONS, COPYWIN_FULL); +} + +static void ResetEvoScreenDataStruct(void) +{ + u8 i; + sPokedexView->sEvoScreenData.numAllEvolutions = 0; + sPokedexView->sEvoScreenData.numSeen = 0; + sPokedexView->sEvoScreenData.menuPos = 0; + for (i = 0; i < 10; i++) + { + sPokedexView->sEvoScreenData.targetSpecies[i] = 0; + sPokedexView->sEvoScreenData.seen[i] = 0; + } + +} + +static void GetSeenFlagTargetSpecies(void) +{ + u8 i; + u16 species; + for (i = 0; i < sPokedexView->sEvoScreenData.numAllEvolutions; i++) + { + species = sPokedexView->sEvoScreenData.targetSpecies[i]; + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_SEEN)) + { + sPokedexView->sEvoScreenData.seen[i] = TRUE; + sPokedexView->sEvoScreenData.numSeen += 1; + } + + } +} + +static void Task_LoadEvolutionScreen(u8 taskId) +{ + switch (gMain.state) + { + case 0: + default: + if (!gPaletteFade.active) + { + u16 r2; + + sPokedexView->currentPage = EVO_SCREEN; + gPokedexVBlankCB = gMain.vblankCallback; + SetVBlankCallback(NULL); + r2 = 0; + if (gTasks[taskId].data[1] != 0) + r2 += DISPCNT_OBJ_ON; + if (gTasks[taskId].data[2] != 0) + r2 |= DISPCNT_BG1_ON; + ResetOtherVideoRegisters(r2); + gMain.state = 1; + } + break; + case 1: + LoadTilesetTilemapHGSS(EVO_SCREEN); + FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0)); + PutWindowTilemap(WIN_INFO); + CopyWindowToVram(WIN_INFO, COPYWIN_FULL); + FillWindowPixelBuffer(WIN_NAVIGATION_BUTTONS, PIXEL_FILL(0)); + PutWindowTilemap(WIN_NAVIGATION_BUTTONS); + CopyWindowToVram(WIN_NAVIGATION_BUTTONS, COPYWIN_FULL); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + gMain.state++; + break; + case 2: + LoadScreenSelectBarMain(0xD); + LoadPokedexBgPalette(sPokedexView->isSearchResults); + gMain.state++; + break; + case 3: + if (gTasks[taskId].data[1] == 0) + { + 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 + EvoFormsPage_PrintNavigationButtons(); // Navigation buttons + gSprites[gTasks[taskId].data[4]].oam.priority = 0; + } + gMain.state++; + break; + case 4: + //Print evo info and icons + gTasks[taskId].data[3] = 0; + PrintEvolutionTargetSpeciesAndMethod(taskId, NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), 0, sPokedexView->numPreEvolutions); + LoadSpritePalette(&gSpritePalette_Arrow); + GetSeenFlagTargetSpecies(); + if (sPokedexView->sEvoScreenData.numAllEvolutions != 0 && sPokedexView->sEvoScreenData.numSeen != 0) + { + sPokedexView->sEvoScreenData.arrowSpriteId = CreateSprite(&gSpriteTemplate_Arrow, 7, 58, 0); + gSprites[sPokedexView->sEvoScreenData.arrowSpriteId].animNum = 2; + } + gMain.state++; + break; + case 5: + { + u32 preservedPalettes = 0; + + if (gTasks[taskId].data[2] != 0) + preservedPalettes = 0x14; // each bit represents a palette index + if (gTasks[taskId].data[1] != 0) + preservedPalettes |= (1 << (gSprites[gTasks[taskId].tMonSpriteId].oam.paletteNum + 16)); + BeginNormalPaletteFade(~preservedPalettes, 0, 16, 0, RGB_BLACK); + SetVBlankCallback(gPokedexVBlankCB); + gMain.state++; + } + break; + case 6: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + HideBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + gMain.state++; + break; + case 7: + if (!gPaletteFade.active) + gMain.state++; + break; + case 8: + gMain.state++; + break; + case 9: + sPokedexView->screenSwitchState = 0; + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 1; + gTasks[taskId].func = Task_HandleEvolutionScreenInput; + gMain.state = 0; + break; + } +} + +static void Task_HandleEvolutionScreenInput(u8 taskId) +{ + //Switch to forms screen, Pokemon Expansion only (rhh) + if (JOY_NEW(START_BUTTON)) + { + sPokedexView->selectedScreen = FORMS_SCREEN; + BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK); + sPokedexView->screenSwitchState = 3; + gTasks[taskId].func = Task_SwitchScreensFromEvolutionScreen; + PlaySE(SE_PIN); + } + + if (sPokedexView->sEvoScreenData.numAllEvolutions != 0 && sPokedexView->sEvoScreenData.numSeen != 0) + { + u8 base_y = 58; + u8 base_y_offset = 9; + u8 pos = sPokedexView->sEvoScreenData.menuPos; + u8 max = sPokedexView->sEvoScreenData.numAllEvolutions; + if (JOY_NEW(DPAD_DOWN)) + { + while (TRUE) + { + pos += 1; + if (pos >= max) + pos = 0; + + if (sPokedexView->sEvoScreenData.seen[pos] == TRUE) + break; + } + gSprites[sPokedexView->sEvoScreenData.arrowSpriteId].y = base_y + base_y_offset * pos; + sPokedexView->sEvoScreenData.menuPos = pos; + } + else if (JOY_NEW(DPAD_UP)) + { + if (sPokedexView->sEvoScreenData.menuPos == 0) + sPokedexView->sEvoScreenData.menuPos = sPokedexView->sEvoScreenData.numAllEvolutions - 1; + else + sPokedexView->sEvoScreenData.menuPos -= 1; + + gSprites[sPokedexView->sEvoScreenData.arrowSpriteId].y = base_y + base_y_offset * sPokedexView->sEvoScreenData.menuPos; + } + + if (JOY_NEW(A_BUTTON)) + { + u16 targetSpecies = sPokedexView->sEvoScreenData.targetSpecies[sPokedexView->sEvoScreenData.menuPos]; + u16 dexNum = SpeciesToNationalPokedexNum(targetSpecies); + sPokedexListItem->dexNum = dexNum; + sPokedexListItem->seen = GetSetPokedexFlag(dexNum, FLAG_GET_SEEN); + sPokedexListItem->owned = GetSetPokedexFlag(dexNum, FLAG_GET_CAUGHT); + + if (GetSpeciesFormTable(targetSpecies) != NULL) + sPokedexView->formSpecies = targetSpecies; + else + sPokedexView->formSpecies = 0; + + sPokedexView->sEvoScreenData.fromEvoPage = TRUE; + PlaySE(SE_PIN); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); + gTasks[taskId].func = Task_LoadInfoScreenWaitForFade; + } + } + + //Exit to overview + if (JOY_NEW(B_BUTTON)) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + gTasks[taskId].func = Task_ExitEvolutionScreen; + PlaySE(SE_PC_OFF); + return; + } + + //Switch screens + if ((JOY_NEW(DPAD_LEFT) || (JOY_NEW(L_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))) + { + sPokedexView->selectedScreen = STATS_SCREEN; + BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK); + sPokedexView->screenSwitchState = 1; + gTasks[taskId].func = Task_SwitchScreensFromEvolutionScreen; + PlaySE(SE_PIN); + } + if ((JOY_NEW(DPAD_RIGHT) || (JOY_NEW(R_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))) + { + if (!sPokedexListItem->owned) + PlaySE(SE_FAILURE); + else + { + sPokedexView->selectedScreen = CRY_SCREEN; + BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK); + sPokedexView->screenSwitchState = 2; + gTasks[taskId].func = Task_SwitchScreensFromEvolutionScreen; + PlaySE(SE_PIN); + } + } +} + +static void HandleTargetSpeciesPrint(u8 taskId, u16 targetSpecies, u16 previousTargetSpecies, u8 base_x, u8 base_y, u8 base_y_offset, u8 base_i, bool8 isEevee) +{ + u8 iterations = 6; + bool8 seen = GetSetPokedexFlag(SpeciesToNationalPokedexNum(targetSpecies), FLAG_GET_SEEN); + + if (seen || !HGSS_HIDE_UNSEEN_EVOLUTION_NAMES) + StringCopy(gStringVar3, GetSpeciesName(targetSpecies)); //evolution mon name + else + StringCopy(gStringVar3, gText_ThreeQuestionMarks); //show questionmarks instead of name + StringExpandPlaceholders(gStringVar3, sText_EVO_Name); //evolution mon name + PrintInfoScreenTextSmall(gStringVar3, base_x, base_y + base_y_offset*base_i); //evolution mon name + + //Print mon icon in the top row + if (isEevee) + { + iterations = 9; + if (targetSpecies == previousTargetSpecies) + return; + else if (targetSpecies == SPECIES_GLACEON) + base_i -= 1; + else if (targetSpecies == SPECIES_SYLVEON) + base_i -= 2; + } + + if (base_i < iterations) + { + LoadMonIconPalette(targetSpecies); //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 + else + gTasks[taskId].data[4+base_i] = CreateMonIcon(targetSpecies, SpriteCB_MonIcon, 50 + 32*base_i, 31, 4, 0); //Create pokemon sprite + gSprites[gTasks[taskId].data[4+base_i]].oam.priority = 0; + } +} + +static void CreateCaughtBallEvolutionScreen(u16 targetSpecies, u8 x, u8 y, u16 unused) +{ + bool8 owned = GetSetPokedexFlag(SpeciesToNationalPokedexNum(targetSpecies), FLAG_GET_CAUGHT); + if (owned) + BlitBitmapToWindow(0, sCaughtBall_Gfx, x, y-1, 8, 16); + else + { + //FillWindowPixelRect(0, PIXEL_FILL(0), x, y, 8, 16); //not sure why this was even here + PrintInfoScreenTextSmall(gText_OneDash, x+1, y-1); + } +} + +static void HandlePreEvolutionSpeciesPrint(u8 taskId, u16 preSpecies, u16 species, u8 base_x, u8 base_y, u8 base_y_offset, u8 base_i) +{ + bool8 seen = GetSetPokedexFlag(SpeciesToNationalPokedexNum(preSpecies), FLAG_GET_SEEN); + + StringCopy(gStringVar1, GetSpeciesName(species)); //evolution mon name + + if (sPokedexView->sEvoScreenData.isMega) + StringExpandPlaceholders(gStringVar3, sText_EVO_PreEvo_PE_Mega); + else + { + + if (seen || !HGSS_HIDE_UNSEEN_EVOLUTION_NAMES) + StringCopy(gStringVar2, GetSpeciesName(preSpecies)); //evolution mon name + else + StringCopy(gStringVar2, gText_ThreeQuestionMarks); //show questionmarks instead of name + + StringExpandPlaceholders(gStringVar3, sText_EVO_PreEvo); //evolution mon name + + } + + PrintInfoScreenTextSmall(gStringVar3, base_x, base_y + base_y_offset*base_i); //evolution mon name + + 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 + gSprites[gTasks[taskId].data[4+base_i]].oam.priority = 0; + } +} + +static u8 PrintPreEvolutions(u8 taskId, u16 species) +{ + u16 i; + u16 j; + + u8 base_x = 13+8; + u8 base_y = 51; + u8 base_y_offset = 9; + + u16 preEvolutionOne = 0; + u16 preEvolutionTwo = 0; + u8 numPreEvolutions = 0; + + bool8 isMega = FALSE; + sPokedexView->sEvoScreenData.isMega = FALSE; + + //Calculate previous evolution + for (i = 0; i < NUM_SPECIES; i++) + { + const struct Evolution *evolutions = GetSpeciesEvolutions(species); + if (evolutions == NULL) + continue; + + for (j = 0; evolutions[j].method != EVOLUTIONS_END; j++) + { + if (evolutions[j].targetSpecies == species) + { + preEvolutionOne = i; + numPreEvolutions += 1; + + if (GetSpeciesFormChanges(species) != NULL + && GetSpeciesFormChanges(species)->method == FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM) + { + CopyItemName(GetSpeciesFormChanges(species)->param1, gStringVar2); //item + isMega = TRUE; + } + break; + } + } + } + + if (isMega) + { + sPokedexView->numPreEvolutions = numPreEvolutions; + sPokedexView->sEvoScreenData.numAllEvolutions += numPreEvolutions; + sPokedexView->sEvoScreenData.isMega = isMega; + + CreateCaughtBallEvolutionScreen(preEvolutionOne, base_x - 9 - 8, base_y + base_y_offset*(numPreEvolutions - 1), 0); + HandlePreEvolutionSpeciesPrint(taskId, preEvolutionOne, species, base_x - 8, base_y, base_y_offset, numPreEvolutions - 1); + return numPreEvolutions; + } + + //Calculate if previous evolution also has a previous evolution + if (numPreEvolutions != 0) + { + for (i = 0; i < NUM_SPECIES; i++) + { + const struct Evolution *evolutions = GetSpeciesEvolutions(species); + if (evolutions == NULL) + continue; + + for (j = 0; evolutions[j].method != EVOLUTIONS_END; j++) + { + if (evolutions[j].targetSpecies == preEvolutionOne) + { + preEvolutionTwo = i; + numPreEvolutions += 1; + CreateCaughtBallEvolutionScreen(preEvolutionTwo, base_x - 9, base_y + base_y_offset*0, 0); + HandlePreEvolutionSpeciesPrint(taskId, preEvolutionTwo, preEvolutionOne, base_x, base_y, base_y_offset, 0); + break; + } + } + } + } + + //Print ball and name + if (preEvolutionOne != 0) + { + CreateCaughtBallEvolutionScreen(preEvolutionOne, base_x - 9, base_y + base_y_offset*(numPreEvolutions - 1), 0); + HandlePreEvolutionSpeciesPrint(taskId, preEvolutionOne, species, base_x, base_y, base_y_offset, numPreEvolutions - 1); + } + + if (preEvolutionTwo != 0) + { + sPokedexView->sEvoScreenData.targetSpecies[0] = preEvolutionTwo; + sPokedexView->sEvoScreenData.targetSpecies[1] = preEvolutionOne; + } + else if (preEvolutionOne != 0) + { + sPokedexView->sEvoScreenData.targetSpecies[0] = preEvolutionOne; + } + + //vertical line + //FillWindowPixelRect(0, PIXEL_FILL(5), 33 + 32*numPreEvolutions, 18, 1, 32); //PIXEL_FILL(15) for black + + sPokedexView->numPreEvolutions = numPreEvolutions; + sPokedexView->sEvoScreenData.numAllEvolutions += numPreEvolutions; + + return numPreEvolutions; +} + +#define EVO_SCREEN_LVL_DIGITS 2 +#define EVO_SCREEN_CRITS_DIGITS 1 +#define EVO_SCREEN_DMG_DIGITS 2 + +static u8 PrintEvolutionTargetSpeciesAndMethod(u8 taskId, u16 species, u8 depth, u8 depth_i) +{ + u16 i; + const struct MapHeader *mapHeader; + u16 targetSpecies = 0; + u16 previousTargetSpecies = 0; + + u16 item; + + bool8 left = TRUE; + u8 base_x = 13+8; + u8 base_x_offset = 54+8; + u8 base_y = 51; + u8 base_y_offset = 9; + u8 base_i = 0; + u8 times = 0; + u8 depth_x = 16; + bool8 isEevee = FALSE; + const struct Evolution *evolutions = GetSpeciesEvolutions(species); + + if (sPokedexView->sEvoScreenData.isMega) + return 0; + if (evolutions == NULL) + return 0; + + StringCopy(gStringVar1, GetSpeciesName(species)); + + if (species == SPECIES_EEVEE) + isEevee = TRUE; + + //Calculate number of possible direct evolutions (e.g. Eevee has 5 but torchic has 1) + for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) + { + if (evolutions[i].method != 0) + times += 1; + } + gTasks[taskId].data[3] = times; + sPokedexView->sEvoScreenData.numAllEvolutions += times; + + //If there are no evolutions print text + if (times == 0 && depth == 0) + { + StringExpandPlaceholders(gStringVar4, sText_EVO_NONE); + PrintInfoScreenTextSmall(gStringVar4, base_x-7-7, base_y + base_y_offset*depth_i); + } + + //If there are evolutions find out which and print them 1 by 1 + for (i = 0; i < times; i++) + { + base_i = i + depth_i; + left = !left; + + previousTargetSpecies = targetSpecies; + targetSpecies = evolutions[i].targetSpecies; + sPokedexView->sEvoScreenData.targetSpecies[base_i] = targetSpecies; + CreateCaughtBallEvolutionScreen(targetSpecies, base_x + depth_x*depth-9, base_y + base_y_offset*base_i, 0); + HandleTargetSpeciesPrint(taskId, targetSpecies, previousTargetSpecies, base_x + depth_x*depth, base_y, base_y_offset, base_i, isEevee); //evolution mon name + + switch (evolutions[i].method) + { + case EVO_FRIENDSHIP: + ConvertIntToDecimalStringN(gStringVar2, 220, STR_CONV_MODE_LEADING_ZEROS, 3); //friendship value + StringExpandPlaceholders(gStringVar4, sText_EVO_FRIENDSHIP ); + break; + case EVO_FRIENDSHIP_DAY: + StringExpandPlaceholders(gStringVar4, sText_EVO_FRIENDSHIP_DAY ); + break; + case EVO_FRIENDSHIP_NIGHT: + StringExpandPlaceholders(gStringVar4, sText_EVO_FRIENDSHIP_NIGHT ); + break; + case EVO_LEVEL: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL ); + break; + case EVO_TRADE: + StringExpandPlaceholders(gStringVar4, sText_EVO_TRADE ); + break; + case EVO_TRADE_ITEM: + item = evolutions[i].param; //item + CopyItemName(item, gStringVar2); //item + StringExpandPlaceholders(gStringVar4, sText_EVO_TRADE_ITEM ); + break; + case EVO_ITEM: + item = evolutions[i].param; + CopyItemName(item, gStringVar2); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM ); + break; + case EVO_LEVEL_ATK_GT_DEF: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_ATK_GT_DEF ); + break; + case EVO_LEVEL_ATK_EQ_DEF: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_ATK_EQ_DEF ); + break; + case EVO_LEVEL_ATK_LT_DEF: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_ATK_LT_DEF ); + break; + case EVO_LEVEL_SILCOON: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_SILCOON ); + break; + case EVO_LEVEL_CASCOON: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_CASCOON ); + break; + case EVO_LEVEL_NINJASK: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_NINJASK ); + break; + case EVO_LEVEL_SHEDINJA: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_SHEDINJA ); + break; + case EVO_BEAUTY: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, 3); //beauty + StringExpandPlaceholders(gStringVar4, sText_EVO_BEAUTY ); + break; + case EVO_LEVEL_FEMALE: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_FEMALE ); + break; + case EVO_LEVEL_MALE: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_MALE ); + break; + case EVO_LEVEL_NIGHT: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_NIGHT ); + break; + case EVO_LEVEL_DAY: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_DAY ); + break; + case EVO_LEVEL_DUSK: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_DUSK ); + break; + case EVO_ITEM_HOLD_DAY: + item = evolutions[i].param; //item + CopyItemName(item, gStringVar2); //item + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_HOLD_DAY ); + break; + case EVO_ITEM_HOLD_NIGHT: + item = evolutions[i].param; //item + CopyItemName(item, gStringVar2); //item + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_HOLD_NIGHT ); + break; + case EVO_MOVE: + StringCopy(gStringVar2, gMoveNames[evolutions[i].param]); + StringExpandPlaceholders(gStringVar4, sText_EVO_MOVE ); + break; + case EVO_FRIENDSHIP_MOVE_TYPE: + StringCopy(gStringVar2, gTypeNames[evolutions[i].param]); + StringExpandPlaceholders(gStringVar4, sText_EVO_FRIENDSHIP_MOVE_TYPE ); + break; + case EVO_MAPSEC: + StringCopy(gStringVar2, gRegionMapEntries[evolutions[i].param].name); + StringExpandPlaceholders(gStringVar4, sText_EVO_MAPSEC ); + break; + case EVO_ITEM_MALE: + item = evolutions[i].param; //item + CopyItemName(item, gStringVar2); //item + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_MALE ); + break; + case EVO_ITEM_FEMALE: + item = evolutions[i].param; //item + CopyItemName(item, gStringVar2); //item + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_FEMALE ); + break; + case EVO_LEVEL_RAIN: + //if (j == WEATHER_RAIN || j == WEATHER_RAIN_THUNDERSTORM || j == WEATHER_DOWNPOUR) + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_RAIN ); + break; + case EVO_SPECIFIC_MON_IN_PARTY: + StringCopy(gStringVar2, GetSpeciesName(evolutions[i].param)); //mon name + StringExpandPlaceholders(gStringVar4, sText_EVO_SPECIFIC_MON_IN_PARTY ); + break; + case EVO_LEVEL_DARK_TYPE_MON_IN_PARTY: + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_DARK_TYPE_MON_IN_PARTY ); + break; + case EVO_TRADE_SPECIFIC_MON: + StringCopy(gStringVar2, GetSpeciesName(evolutions[i].param)); //mon name + StringExpandPlaceholders(gStringVar4, sText_EVO_TRADE_SPECIFIC_MON ); + break; + case EVO_SPECIFIC_MAP: + mapHeader = Overworld_GetMapHeaderByGroupAndId(evolutions[i].param >> 8, evolutions[i].param & 0xFF); + GetMapName(gStringVar2, mapHeader->regionMapSectionId, 0); + StringExpandPlaceholders(gStringVar4, sText_EVO_SPECIFIC_MAP ); + break; + case EVO_LEVEL_NATURE_AMPED: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_NATURE_AMPED); + break; + case EVO_LEVEL_NATURE_LOW_KEY: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_LVL_DIGITS); //level + StringExpandPlaceholders(gStringVar4, sText_EVO_LEVEL_NATURE_LOW_KEY); + break; + case EVO_CRITICAL_HITS: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_CRITS_DIGITS); //crits + StringExpandPlaceholders(gStringVar4, sText_EVO_CRITICAL_HITS); + break; + case EVO_SCRIPT_TRIGGER_DMG: + ConvertIntToDecimalStringN(gStringVar2, evolutions[i].param, STR_CONV_MODE_LEADING_ZEROS, EVO_SCREEN_DMG_DIGITS); //damage + StringExpandPlaceholders(gStringVar4, sText_EVO_SCRIPT_TRIGGER_DMG); + break; + case EVO_DARK_SCROLL: + item = evolutions[i].param; + CopyItemName(item, gStringVar2); + StringExpandPlaceholders(gStringVar4, sText_EVO_DARK_SCROLL ); + break; + case EVO_WATER_SCROLL: + item = evolutions[i].param; + CopyItemName(item, gStringVar2); + StringExpandPlaceholders(gStringVar4, sText_EVO_WATER_SCROLL ); + break; + case EVO_ITEM_NIGHT: + item = evolutions[i].param; + CopyItemName(item, gStringVar2); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_NIGHT ); + break; + case EVO_ITEM_DAY: + item = evolutions[i].param; + CopyItemName(item, gStringVar2); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_DAY ); + break; + case EVO_ITEM_HOLD: + item = evolutions[i].param; + CopyItemName(item, gStringVar2); + StringExpandPlaceholders(gStringVar4, sText_EVO_ITEM_HOLD ); + break; + default: + StringExpandPlaceholders(gStringVar4, sText_EVO_UNKNOWN ); + break; + }//Switch end + PrintInfoScreenTextSmall(gStringVar4, base_x + depth_x*depth+base_x_offset, base_y + base_y_offset*base_i); //Print actual instructions + + depth_i += PrintEvolutionTargetSpeciesAndMethod(taskId, targetSpecies, depth+1, base_i+1); + }//For loop end + + return times; +} + +static void Task_SwitchScreensFromEvolutionScreen(u8 taskId) +{ + u8 i; + if (!gPaletteFade.active) + { + FreeMonIconPalettes(); //Destroy pokemon icon sprite + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[4]]); //Destroy pokemon icon sprite + for (i = 1; i <= gTasks[taskId].data[3]; i++) + { + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[4+i]]); //Destroy pokemon icon sprite + } + FreeAndDestroyMonPicSprite(gTasks[taskId].tMonSpriteId); + + switch (sPokedexView->screenSwitchState) + { + case 1: + gTasks[taskId].func = Task_LoadStatsScreen; + break; + case 2: + gTasks[taskId].func = Task_LoadCryScreen; + break; + case 3: + gTasks[taskId].func = Task_LoadFormsScreen; + break; + default: + gTasks[taskId].func = Task_LoadInfoScreen; + break; + } + } +} + +static void Task_ExitEvolutionScreen(u8 taskId) +{ + u8 i; + if (!gPaletteFade.active) + { + FreeMonIconPalettes(); //Destroy pokemon icon sprite + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[4]]); //Destroy pokemon icon sprite + for (i = 1; i <= gTasks[taskId].data[3]; i++) + { + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[4+i]]); //Destroy pokemon icon sprite + } + FreeAndDestroyMonPicSprite(gTasks[taskId].tMonSpriteId); + + FreeInfoScreenWindowAndBgBuffers(); + DestroyTask(taskId); + } +} + + +//************************************ +//* * +//* FORMS * +//* * +//************************************ + +static void Task_LoadFormsScreen(u8 taskId) +{ + switch (gMain.state) + { + case 0: + default: + if (!gPaletteFade.active) + { + u16 r2; + + sPokedexView->currentPage = FORMS_SCREEN; + gPokedexVBlankCB = gMain.vblankCallback; + SetVBlankCallback(NULL); + r2 = 0; + if (gTasks[taskId].data[1] != 0) + r2 += DISPCNT_OBJ_ON; + if (gTasks[taskId].data[2] != 0) + r2 |= DISPCNT_BG1_ON; + ResetOtherVideoRegisters(r2); + gMain.state = 1; + } + break; + case 1: + LoadTilesetTilemapHGSS(FORMS_SCREEN); + FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0)); + PutWindowTilemap(WIN_INFO); + CopyWindowToVram(WIN_INFO, COPYWIN_FULL); + FillWindowPixelBuffer(WIN_NAVIGATION_BUTTONS, PIXEL_FILL(0)); + PutWindowTilemap(WIN_NAVIGATION_BUTTONS); + CopyWindowToVram(WIN_NAVIGATION_BUTTONS, COPYWIN_FULL); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + gMain.state++; + break; + case 2: + LoadScreenSelectBarMain(0xD); + LoadPokedexBgPalette(sPokedexView->isSearchResults); + gMain.state++; + break; + case 3: + if (gTasks[taskId].data[1] == 0) + { + //Icon + 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 + gSprites[gTasks[taskId].data[4]].oam.priority = 0; + } + EvoFormsPage_PrintNavigationButtons(); // Navigation buttons + sPokedexView->sFormScreenData.menuPos = 1; + gMain.state++; + break; + case 4: + //Print form icons + gTasks[taskId].data[3] = 0; + PrintForms(taskId, NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum)); + LoadSpritePalette(&gSpritePalette_Arrow); + gMain.state++; + break; + case 5: + { + u32 preservedPalettes = 0; + + if (gTasks[taskId].data[2] != 0) + preservedPalettes = 0x14; // each bit represents a palette index + if (gTasks[taskId].data[1] != 0) + preservedPalettes |= (1 << (gSprites[gTasks[taskId].tMonSpriteId].oam.paletteNum + 16)); + BeginNormalPaletteFade(~preservedPalettes, 0, 16, 0, RGB_BLACK); + SetVBlankCallback(gPokedexVBlankCB); + gMain.state++; + } + break; + case 6: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + HideBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + gMain.state++; + break; + case 7: + if (!gPaletteFade.active) + gMain.state++; + break; + case 8: + gMain.state++; + break; + case 9: + sPokedexView->screenSwitchState = 0; + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 1; + gTasks[taskId].func = Task_HandleFormsScreenInput; + gMain.state = 0; + break; + } +} + +static void Task_HandleFormsScreenInput(u8 taskId) +{ + u8 base_x = 5; + u8 base_y = 34; + u8 offset_x = 34; + u8 offset_y = 34; + if (!sPokedexView->sFormScreenData.inSubmenu) + { + if (JOY_NEW(A_BUTTON) && sPokedexView->sFormScreenData.numForms != 0) + { + sPokedexView->sFormScreenData.inSubmenu = TRUE; + sPokedexView->sFormScreenData.arrowSpriteId = CreateSprite(&gSpriteTemplate_Arrow, base_x + offset_x, base_y, 0); + gSprites[sPokedexView->sFormScreenData.arrowSpriteId].animNum = 2; + EvoFormsPage_PrintNavigationButtons(); + } + + if (JOY_NEW(START_BUTTON)) + { + sPokedexView->selectedScreen = EVO_SCREEN; + BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK); + sPokedexView->screenSwitchState = 1; + gTasks[taskId].func = Task_SwitchScreensFromFormsScreen; + PlaySE(SE_PIN); + } + + //Exit to overview + if (JOY_NEW(B_BUTTON)) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + gTasks[taskId].func = Task_ExitFormsScreen; + PlaySE(SE_PC_OFF); + return; + } + } + else //inSubmenu + { + u8 row = 0; + u8 column = 0; + u8 menuPos = sPokedexView->sFormScreenData.menuPos; + //Grid navigation + if (JOY_NEW(DPAD_RIGHT)) + menuPos += 1; + else if (JOY_NEW(DPAD_LEFT)) + menuPos -= 1; + else if (JOY_NEW(DPAD_DOWN)) + menuPos += 7; + else if (JOY_NEW(DPAD_UP)) + { + if (menuPos > 7) + menuPos -= 7; + else + menuPos = 1; + } + + if (menuPos <= 0) + menuPos = 1; + else if (menuPos >= sPokedexView->sFormScreenData.numForms) + menuPos = sPokedexView->sFormScreenData.numForms; + + row = menuPos / 7; + column = menuPos % 7; + gSprites[sPokedexView->sFormScreenData.arrowSpriteId].x = base_x + offset_x * column; + gSprites[sPokedexView->sFormScreenData.arrowSpriteId].y = base_y + offset_y * row; + + sPokedexView->sFormScreenData.menuPos = menuPos; + + + if (JOY_NEW(A_BUTTON)) + { + u8 formId = sPokedexView->sFormScreenData.formIds[menuPos]; + u16 formSpecies = GetFormSpeciesId(NationalPokedexNumToSpecies(sPokedexListItem->dexNum), formId); + if (formSpecies == GetFormSpeciesId(formSpecies, 0)) + sPokedexView->formSpecies = 0; + else + sPokedexView->formSpecies = formSpecies; + + sPokedexView->sEvoScreenData.fromEvoPage = TRUE; + sPokedexView->sFormScreenData.inSubmenu = FALSE; + PlaySE(SE_PIN); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); + gTasks[taskId].func = Task_LoadInfoScreenWaitForFade; + } + + if (JOY_NEW(B_BUTTON)) + { + DestroySprite(&gSprites[sPokedexView->sFormScreenData.arrowSpriteId]); + sPokedexView->sFormScreenData.inSubmenu = FALSE; + EvoFormsPage_PrintNavigationButtons(); + } + } +} + +#define FORM_SPECIES_END (0xffff) + +static void PrintForms(u8 taskId, u16 species) +{ + u8 i; + u8 j = 1; + u16 speciesForm; + + u8 base_x = 5; + u8 base_y = 52; + u8 base_y_offset = 9; + u8 times = 0; + u8 y_offset_icons = 0; //For unown only + + if (species == SPECIES_UNOWN) + y_offset_icons = 8; + + if (GetFormSpeciesId(species, 0) == SPECIES_UNOWN) + y_offset_icons = 8; + + StringCopy(gStringVar1, GetSpeciesName(species)); + + for (i=0; i < 30; i++) + { + speciesForm = GetFormSpeciesId(species, i); + if (speciesForm == FORM_SPECIES_END) + break; + else if (speciesForm == species) + continue; + else + { + sPokedexView->sFormScreenData.formIds[j++] = i; + times += 1; + LoadMonIconPalette(speciesForm); //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 + 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 + gSprites[gTasks[taskId].data[4+times]].oam.priority = 0; + } + } + gTasks[taskId].data[3] = times; + sPokedexView->sFormScreenData.numForms = times; + + //If there are no forms print text + if (times == 0) + { + StringExpandPlaceholders(gStringVar4, sText_FORMS_NONE); + PrintInfoScreenTextSmall(gStringVar4, base_x, base_y + base_y_offset*times); + } +} + +static void Task_SwitchScreensFromFormsScreen(u8 taskId) +{ + u8 i; + if (!gPaletteFade.active) + { + FreeMonIconPalettes(); //Destroy pokemon icon sprite + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[4]]); //Destroy pokemon icon sprite + for (i = 1; i <= gTasks[taskId].data[3]; i++) + { + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[4+i]]); //Destroy pokemon icon sprite + } + FreeAndDestroyMonPicSprite(gTasks[taskId].tMonSpriteId); + + switch (sPokedexView->screenSwitchState) + { + case 1: + gTasks[taskId].func = Task_LoadEvolutionScreen; + break; + default: + gTasks[taskId].func = Task_LoadInfoScreen; + break; + } + } +} + +static void Task_ExitFormsScreen(u8 taskId) +{ + u8 i; + if (!gPaletteFade.active) + { + FreeMonIconPalettes(); //Destroy pokemon icon sprite + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[4]]); //Destroy pokemon icon sprite + for (i = 1; i <= gTasks[taskId].data[3]; i++) + { + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[4+i]]); //Destroy pokemon icon sprite + } + FreeAndDestroyMonPicSprite(gTasks[taskId].tMonSpriteId); + + FreeInfoScreenWindowAndBgBuffers(); + DestroyTask(taskId); + } +} + +#undef tMonSpriteId + + +//************************************ +//* * +//* Cry screen * +//* * +//************************************ +#define tScrolling data[0] +#define tMonSpriteDone data[1] +#define tBgLoaded data[2] +#define tSkipCry data[3] +#define tMonSpriteId data[4] +#define tTrainerSpriteId data[5] + +static void Task_LoadCryScreen(u8 taskId) +{ + switch (gMain.state) + { + case 0: + default: + if (!gPaletteFade.active) + { + m4aMPlayStop(&gMPlayInfo_BGM); + sPokedexView->currentPage = PAGE_CRY; + gPokedexVBlankCB = gMain.vblankCallback; + SetVBlankCallback(NULL); + ResetOtherVideoRegisters(DISPCNT_BG1_ON); + sPokedexView->selectedScreen = CRY_SCREEN; + gMain.state = 1; + } + break; + case 1: + LoadTilesetTilemapHGSS(CRY_SCREEN); + FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0)); + PutWindowTilemap(WIN_INFO); + PutWindowTilemap(WIN_VU_METER); + PutWindowTilemap(WIN_CRY_WAVE); + gMain.state++; + break; + case 2: + LoadScreenSelectBarMain(0xD); + LoadPokedexBgPalette(sPokedexView->isSearchResults); + gMain.state++; + break; + case 3: + ResetPaletteFade(); + gMain.state++; + break; + case 4: + PrintInfoScreenText(gText_CryOf, 82, 33); + PrintCryScreenSpeciesName(0, sPokedexListItem->dexNum, 82, 49); + gMain.state++; + break; + case 5: + gTasks[taskId].tMonSpriteId = CreateMonSpriteFromNationalDexNumberHGSS(sPokedexListItem->dexNum, MON_PAGE_X, MON_PAGE_Y, 0); + gSprites[gTasks[taskId].tMonSpriteId].oam.priority = 0; + gDexCryScreenState = 0; + gMain.state++; + break; + case 6: + { + struct CryScreenWindow waveformWindow; + + waveformWindow.unk0 = 0x4020; + waveformWindow.unk2 = 31; + waveformWindow.paletteNo = 8; + waveformWindow.yPos = 30; + waveformWindow.xPos = 12; + if (LoadCryWaveformWindow(&waveformWindow, 2)) + { + gMain.state++; + gDexCryScreenState = 0; + } + } + break; + case 7: + { + struct CryScreenWindow cryMeter; + + cryMeter.paletteNo = 9; + cryMeter.xPos = 18; + cryMeter.yPos = 3; + if (LoadCryMeter(&cryMeter, 3)) + gMain.state++; + CopyWindowToVram(WIN_VU_METER, COPYWIN_GFX); + CopyWindowToVram(WIN_INFO, COPYWIN_FULL); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + } + break; + case 8: + BeginNormalPaletteFade(PALETTES_ALL & ~(0x14), 0, 0x10, 0, RGB_BLACK); + SetVBlankCallback(gPokedexVBlankCB); + gMain.state++; + break; + case 9: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + gMain.state++; + break; + case 10: + sPokedexView->screenSwitchState = 0; + gMain.state = 0; + gTasks[taskId].func = Task_HandleCryScreenInput; + break; + } +} + +static void Task_HandleCryScreenInput(u8 taskId) +{ + UpdateCryWaveformWindow(2); + + if (IsCryPlaying()) + LoadPlayArrowPalette(TRUE); + else + LoadPlayArrowPalette(FALSE); + + if (JOY_NEW(A_BUTTON)) + { + LoadPlayArrowPalette(TRUE); + CryScreenPlayButton(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum)); + return; + } + else if (!gPaletteFade.active) + { + if (JOY_NEW(B_BUTTON)) + { + BeginNormalPaletteFade(PALETTES_ALL & ~(0x14), 0, 0, 0x10, RGB_BLACK); + m4aMPlayContinue(&gMPlayInfo_BGM); + sPokedexView->screenSwitchState = 1; + gTasks[taskId].func = Task_SwitchScreensFromCryScreen; + PlaySE(SE_PC_OFF); + return; + } + if (JOY_NEW(DPAD_LEFT) + || (JOY_NEW(L_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) + { + BeginNormalPaletteFade(PALETTES_ALL & ~(0x14), 0, 0, 0x10, RGB_BLACK); + m4aMPlayContinue(&gMPlayInfo_BGM); + sPokedexView->screenSwitchState = 2; + gTasks[taskId].func = Task_SwitchScreensFromCryScreen; + PlaySE(SE_DEX_PAGE); + return; + } + if (JOY_NEW(DPAD_RIGHT) + || (JOY_NEW(R_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) + { + if (!sPokedexListItem->owned) + { + PlaySE(SE_FAILURE); + } + else + { + BeginNormalPaletteFade(PALETTES_ALL & ~(0x14), 0, 0, 0x10, RGB_BLACK); + m4aMPlayContinue(&gMPlayInfo_BGM); + sPokedexView->screenSwitchState = 3; + gTasks[taskId].func = Task_SwitchScreensFromCryScreen; + PlaySE(SE_DEX_PAGE); + } + return; + } + } +} + +static void Task_SwitchScreensFromCryScreen(u8 taskId) +{ + if (!gPaletteFade.active) + { + FreeCryScreen(); + FreeAndDestroyMonPicSprite(gTasks[taskId].tMonSpriteId); + switch (sPokedexView->screenSwitchState) + { + default: + case 1: + gTasks[taskId].func = Task_LoadInfoScreen; + break; + case 2: + gTasks[taskId].func = Task_LoadEvolutionScreen; + break; + case 3: + gTasks[taskId].func = Task_LoadSizeScreen; + break; + } + } +} + + +//************************************ +//* * +//* Size screen * +//* * +//************************************ +static void Task_LoadSizeScreen(u8 taskId) +{ + u8 spriteId; + + switch (gMain.state) + { + default: + case 0: + if (!gPaletteFade.active) + { + sPokedexView->currentPage = PAGE_SIZE; + gPokedexVBlankCB = gMain.vblankCallback; + SetVBlankCallback(NULL); + ResetOtherVideoRegisters(DISPCNT_BG1_ON); + sPokedexView->selectedScreen = SIZE_SCREEN; + gMain.state = 1; + } + break; + case 1: + LoadTilesetTilemapHGSS(SIZE_SCREEN); + FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0)); + PutWindowTilemap(WIN_INFO); + gMain.state++; + break; + case 2: + LoadScreenSelectBarMain(0xD); + LoadPokedexBgPalette(sPokedexView->isSearchResults); + gMain.state++; + break; + case 3: + { + u8 string[64]; + + StringCopy(string, gText_SizeComparedTo); + StringAppend(string, gSaveBlock2Ptr->playerName); + PrintInfoScreenText(string, GetStringCenterAlignXOffset(FONT_NORMAL, string, 0xF0), 0x79); + gMain.state++; + } + break; + case 4: + ResetPaletteFade(); + gMain.state++; + break; + case 5: + spriteId = CreateSizeScreenTrainerPic(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), 152, 56, 0); + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId].oam.matrixNum = 1; + gSprites[spriteId].oam.priority = 0; + gSprites[spriteId].y2 = GetTrainerOffsetFromNationalDexNumber(sPokedexListItem->dexNum); + SetOamMatrix(1, GetTrainerScaleFromNationalDexNumber(sPokedexListItem->dexNum), 0, 0, GetTrainerScaleFromNationalDexNumber(sPokedexListItem->dexNum)); + LoadPalette(sSizeScreenSilhouette_Pal, OBJ_PLTT_ID2(gSprites[spriteId].oam.paletteNum), PLTT_SIZE_4BPP); + gTasks[taskId].tTrainerSpriteId = spriteId; + gMain.state++; + break; + case 6: + spriteId = CreateMonSpriteFromNationalDexNumberHGSS(sPokedexListItem->dexNum, 88, 56, 1); + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; + gSprites[spriteId].oam.matrixNum = 2; + gSprites[spriteId].oam.priority = 0; + gSprites[spriteId].y2 = GetPokemonOffsetFromNationalDexNumber(sPokedexListItem->dexNum); + SetOamMatrix(2, GetPokemonScaleFromNationalDexNumber(sPokedexListItem->dexNum), 0, 0, GetPokemonScaleFromNationalDexNumber(sPokedexListItem->dexNum)); + LoadPalette(sSizeScreenSilhouette_Pal, OBJ_PLTT_ID2(gSprites[spriteId].oam.paletteNum), PLTT_SIZE_4BPP); + gTasks[taskId].tMonSpriteId = spriteId; + CopyWindowToVram(WIN_INFO, COPYWIN_FULL); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + gMain.state++; + break; + case 7: + BeginNormalPaletteFade(PALETTES_ALL & ~(0x14), 0, 0x10, 0, RGB_BLACK); + SetVBlankCallback(gPokedexVBlankCB); + gMain.state++; + break; + case 8: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + HideBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + gMain.state++; + break; + case 9: + if (!gPaletteFade.active) + { + sPokedexView->screenSwitchState = 0; + gMain.state = 0; + gTasks[taskId].func = Task_HandleSizeScreenInput; + } + break; + } +} + +static void LoadPlayArrowPalette(bool8 cryPlaying) +{ + u16 color; + + if (cryPlaying) + color = RGB(18, 28, 0); + else + color = RGB(15, 21, 0); + LoadPalette(&color, BG_PLTT_ID(5) + 13, PLTT_SIZEOF(1)); +} + +static void Task_HandleSizeScreenInput(u8 taskId) +{ + if (JOY_NEW(B_BUTTON)) + { + BeginNormalPaletteFade(PALETTES_ALL & ~(0x14), 0, 0, 0x10, RGB_BLACK); + sPokedexView->screenSwitchState = 1; + gTasks[taskId].func = Task_SwitchScreensFromSizeScreen; + PlaySE(SE_PC_OFF); + } + else if (JOY_NEW(DPAD_LEFT) + || (JOY_NEW(L_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) + { + BeginNormalPaletteFade(PALETTES_ALL & ~(0x14), 0, 0, 0x10, RGB_BLACK); + sPokedexView->screenSwitchState = 2; + gTasks[taskId].func = Task_SwitchScreensFromSizeScreen; + PlaySE(SE_DEX_PAGE); + } +} + +static void Task_SwitchScreensFromSizeScreen(u8 taskId) +{ + if (!gPaletteFade.active) + { + FreeAndDestroyMonPicSprite(gTasks[taskId].tMonSpriteId); + FreeAndDestroyTrainerPicSprite(gTasks[taskId].tTrainerSpriteId); + switch (sPokedexView->screenSwitchState) + { + default: + case 1: + gTasks[taskId].func = Task_LoadInfoScreen; + break; + case 2: + gTasks[taskId].func = Task_LoadCryScreen; + break; + } + } +} + +#undef tScrolling +#undef tMonSpriteDone +#undef tBgLoaded +#undef tSkipCry +#undef tMonSpriteId +#undef tTrainerSpriteId + + + +//************************************ +//* * +//* Search Screen * +//* * +//************************************ +static void Task_WaitForExitSearch(u8 taskId) +{ + if (!gTasks[gTasks[taskId].tLoadScreenTaskId].isActive) + { + ClearMonSprites(); + TryDestroyStatBars(); + TryDestroyStatBarsBg(); + + // Search produced results + if (sPokedexView->screenSwitchState != 0) + { + sPokedexView->selectedPokemon = 0; + sPokedexView->pokeBallRotation = POKEBALL_ROTATION_TOP; + gTasks[taskId].func = Task_OpenSearchResults; + } + // Search didn't produce results + else + { + sPokedexView->pokeBallRotation = sPokedexView->pokeBallRotationBackup; + sPokedexView->selectedPokemon = sPokedexView->selectedPokemonBackup; + sPokedexView->dexMode = sPokedexView->dexModeBackup; + if (!IsNationalPokedexEnabled()) + sPokedexView->dexMode = DEX_MODE_HOENN; + sPokedexView->dexOrder = sPokedexView->dexOrderBackup; + gTasks[taskId].func = Task_OpenPokedexMainPage; + } + } +} + +static void Task_OpenSearchResults(u8 taskId) +{ + sPokedexView->isSearchResults = TRUE; + sPokedexView->sEvoScreenData.fromEvoPage = FALSE; + sPokedexView->formSpecies = 0; + if (LoadPokedexListPage(PAGE_SEARCH_RESULTS)) + gTasks[taskId].func = Task_HandleSearchResultsInput; +} + +static void Task_HandleSearchResultsInput(u8 taskId) +{ + SetGpuReg(REG_OFFSET_BG0VOFS, sPokedexView->menuY); + + if (sPokedexView->menuY) + { + sPokedexView->menuY -= 8; + if (sPokedexView->menuIsOpen == FALSE && sPokedexView->menuY == 8) + { + CreateStatBars(&sPokedexView->pokedexList[sPokedexView->selectedPokemon]); + CreateStatBarsBg(); + } + } + else + { + if (JOY_NEW(A_BUTTON) && sPokedexView->pokedexList[sPokedexView->selectedPokemon].seen) + { + u32 a; + + TryDestroyStatBars(); + UpdateSelectedMonSpriteId(); + a = (1 << (gSprites[sPokedexView->selectedMonSpriteId].oam.paletteNum + 16)); + gSprites[sPokedexView->selectedMonSpriteId].callback = SpriteCB_MoveMonForInfoScreen; + BeginNormalPaletteFade(~a, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].func = Task_OpenSearchResultsInfoScreenAfterMonMovement; + PlaySE(SE_PIN); + FreeWindowAndBgBuffers(); + } + else if (JOY_NEW(START_BUTTON)) + { + TryDestroyStatBars(); + TryDestroyStatBarsBg(); + sPokedexView->menuY = 0; + sPokedexView->menuIsOpen = TRUE; + sPokedexView->menuCursorPos = 0; + gTasks[taskId].func = Task_HandleSearchResultsStartMenuInput; + PlaySE(SE_SELECT); + } + else if (JOY_NEW(SELECT_BUTTON)) + { + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].tLoadScreenTaskId = LoadSearchMenu(); + sPokedexView->screenSwitchState = 0; + gTasks[taskId].func = Task_WaitForExitSearch; + PlaySE(SE_PC_LOGIN); + FreeWindowAndBgBuffers(); + } + else if (JOY_NEW(B_BUTTON)) + { + TryDestroyStatBars(); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].func = Task_ReturnToPokedexFromSearchResults; + PlaySE(SE_PC_OFF); + } + else + { + //Handle D-pad + sPokedexView->selectedPokemon = TryDoPokedexScroll(sPokedexView->selectedPokemon, 0xE); + if (sPokedexView->scrollTimer) + gTasks[taskId].func = Task_WaitForSearchResultsScroll; + else if (!sPokedexView->scrollTimer && !sPokedexView->scrollSpeed && sPokedexView->justScrolled) + CreateStatBars(&sPokedexView->pokedexList[sPokedexView->selectedPokemon]); + } + } +} + +static void Task_WaitForSearchResultsScroll(u8 taskId) +{ + TryDestroyStatBars(); + if (UpdateDexListScroll(sPokedexView->scrollDirection, sPokedexView->scrollMonIncrement, sPokedexView->maxScrollTimer)) + gTasks[taskId].func = Task_HandleSearchResultsInput; +} + +static void Task_HandleSearchResultsStartMenuInput(u8 taskId) +{ + SetGpuReg(REG_OFFSET_BG0VOFS, sPokedexView->menuY); + + if (sPokedexView->menuY != 96) + { + sPokedexView->menuY += 8; + } + else + { + if (JOY_NEW(A_BUTTON)) + { + switch (sPokedexView->menuCursorPos) + { + case 0: //BACK TO LIST + default: + gMain.newKeys |= START_BUTTON; + break; + case 1: //LIST TOP + sPokedexView->selectedPokemon = 0; + sPokedexView->pokeBallRotation = POKEBALL_ROTATION_TOP; + ClearMonSprites(); + CreateMonSpritesAtPos(sPokedexView->selectedPokemon, 0xE); + gMain.newKeys |= START_BUTTON; + break; + case 2: //LIST BOTTOM + sPokedexView->selectedPokemon = sPokedexView->pokemonListCount - 1; + sPokedexView->pokeBallRotation = sPokedexView->pokemonListCount * 16 + POKEBALL_ROTATION_BOTTOM; + ClearMonSprites(); + CreateMonSpritesAtPos(sPokedexView->selectedPokemon, 0xE); + gMain.newKeys |= START_BUTTON; + break; + case 3: //BACK TO POKEDEX + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].func = Task_ReturnToPokedexFromSearchResults; + PlaySE(SE_TRUCK_DOOR); + break; + case 4: //CLOSE POKEDEX + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); + gTasks[taskId].func = Task_ClosePokedexFromSearchResultsStartMenu; + PlaySE(SE_PC_OFF); + break; + } + } + + //Exit menu when Start or B is pressed + if (JOY_NEW(START_BUTTON | B_BUTTON)) + { + sPokedexView->menuIsOpen = FALSE; + gTasks[taskId].func = Task_HandleSearchResultsInput; + PlaySE(SE_SELECT); + } + else if (JOY_REPEAT(DPAD_UP) && sPokedexView->menuCursorPos) + { + sPokedexView->menuCursorPos--; + PlaySE(SE_SELECT); + } + else if (JOY_REPEAT(DPAD_DOWN) && sPokedexView->menuCursorPos < 4) + { + sPokedexView->menuCursorPos++; + PlaySE(SE_SELECT); + } + } +} + +static void Task_OpenSearchResultsInfoScreenAfterMonMovement(u8 taskId) +{ + if (gSprites[sPokedexView->selectedMonSpriteId].x == MON_PAGE_X && gSprites[sPokedexView->selectedMonSpriteId].y == MON_PAGE_Y) + { + sPokedexView->currentPageBackup = sPokedexView->currentPage; + gTasks[taskId].tLoadScreenTaskId = LoadInfoScreen(&sPokedexView->pokedexList[sPokedexView->selectedPokemon], sPokedexView->selectedMonSpriteId); + sPokedexView->selectedMonSpriteId = -1; + gTasks[taskId].func = Task_WaitForExitSearchResultsInfoScreen; + } +} + +static void Task_WaitForExitSearchResultsInfoScreen(u8 taskId) +{ + if (gTasks[gTasks[taskId].tLoadScreenTaskId].isActive) + { + // While active, handle scroll input + if (sPokedexView->currentPage == PAGE_INFO && !IsInfoScreenScrolling(gTasks[taskId].tLoadScreenTaskId) && TryDoInfoScreenScroll()) + StartInfoScreenScroll(&sPokedexView->pokedexList[sPokedexView->selectedPokemon], gTasks[taskId].tLoadScreenTaskId); + } + else + { + // Exiting, back to search results + gTasks[taskId].func = Task_OpenSearchResults; + } +} + +static void Task_ReturnToPokedexFromSearchResults(u8 taskId) +{ + if (!gPaletteFade.active) + { + sPokedexView->pokeBallRotation = sPokedexView->pokeBallRotationBackup; + sPokedexView->selectedPokemon = sPokedexView->selectedPokemonBackup; + sPokedexView->dexMode = sPokedexView->dexModeBackup; + if (!IsNationalPokedexEnabled()) + sPokedexView->dexMode = DEX_MODE_HOENN; + sPokedexView->dexOrder = sPokedexView->dexOrderBackup; + gTasks[taskId].func = Task_OpenPokedexMainPage; + ClearMonSprites(); + FreeWindowAndBgBuffers(); + } +} + +static void Task_ClosePokedexFromSearchResultsStartMenu(u8 taskId) +{ + if (!gPaletteFade.active) + { + sPokedexView->pokeBallRotation = sPokedexView->pokeBallRotationBackup; + sPokedexView->selectedPokemon = sPokedexView->selectedPokemonBackup; + sPokedexView->dexMode = sPokedexView->dexModeBackup; + if (!IsNationalPokedexEnabled()) + sPokedexView->dexMode = DEX_MODE_HOENN; + sPokedexView->dexOrder = sPokedexView->dexOrderBackup; + gTasks[taskId].func = Task_ClosePokedex; + } +} + +#undef tLoadScreenTaskId + + +//************************************ +//* * +//* Search code * +//* * +//************************************ +static int DoPokedexSearch(u8 dexMode, u8 order, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2) +{ + u16 species; + u16 i; + u16 resultsCount; + u8 types[2]; + + CreatePokedexList(dexMode, order); + + for (i = 0, resultsCount = 0; i < NATIONAL_DEX_COUNT; i++) + { + if (sPokedexView->pokedexList[i].seen) + { + sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i]; + resultsCount++; + } + } + sPokedexView->pokemonListCount = resultsCount; + + // Search by name + if (abcGroup != 0xFF) + { + for (i = 0, resultsCount = 0; i < sPokedexView->pokemonListCount; i++) + { + u8 firstLetter; + + species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum); + firstLetter = GetSpeciesName(species)[0]; + if (LETTER_IN_RANGE_UPPER(firstLetter, abcGroup) || LETTER_IN_RANGE_LOWER(firstLetter, abcGroup)) + { + sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i]; + resultsCount++; + } + } + sPokedexView->pokemonListCount = resultsCount; + } + + // Search by body color + if (bodyColor != 0xFF) + { + for (i = 0, resultsCount = 0; i < sPokedexView->pokemonListCount; i++) + { + species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum); + + if (bodyColor == gSpeciesInfo[species].bodyColor) + { + sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i]; + resultsCount++; + } + } + sPokedexView->pokemonListCount = resultsCount; + } + + // Search by type + if (type1 != TYPE_NONE || type2 != TYPE_NONE) + { + if (type1 == TYPE_NONE) + { + type1 = type2; + type2 = TYPE_NONE; + } + + if (type2 == TYPE_NONE) + { + for (i = 0, resultsCount = 0; i < sPokedexView->pokemonListCount; i++) + { + if (sPokedexView->pokedexList[i].owned) + { + species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum); + + types[0] = gSpeciesInfo[species].types[0]; + types[1] = gSpeciesInfo[species].types[1]; + if (types[0] == type1 || types[1] == type1) + { + sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i]; + resultsCount++; + } + } + } + } + else + { + for (i = 0, resultsCount = 0; i < sPokedexView->pokemonListCount; i++) + { + if (sPokedexView->pokedexList[i].owned) + { + species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum); + + types[0] = gSpeciesInfo[species].types[0]; + types[1] = gSpeciesInfo[species].types[1]; + if ((types[0] == type1 && types[1] == type2) || (types[0] == type2 && types[1] == type1)) + { + sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i]; + resultsCount++; + } + } + } + } + sPokedexView->pokemonListCount = resultsCount; + } + + if (sPokedexView->pokemonListCount != 0) + { + for (i = sPokedexView->pokemonListCount; i < NATIONAL_DEX_COUNT; i++) + { + sPokedexView->pokedexList[i].dexNum = 0xFFFF; + sPokedexView->pokedexList[i].seen = FALSE; + sPokedexView->pokedexList[i].owned = FALSE; + } + } + + return resultsCount; +} + +static u8 LoadSearchMenu(void) +{ + return CreateTask(Task_LoadSearchMenu, 0); +} + +static void PrintSearchText(const u8 *str, u32 x, u32 y) +{ + u8 color[3]; + + color[0] = TEXT_COLOR_TRANSPARENT; + color[1] = TEXT_DYNAMIC_COLOR_6; + color[2] = TEXT_COLOR_DARK_GRAY; + AddTextPrinterParameterized4(0, FONT_NORMAL, x, y, 0, 0, color, TEXT_SKIP_DRAW, str); +} + +static void ClearSearchMenuRect(u32 x, u32 y, u32 width, u32 height) +{ + FillWindowPixelRect(0, PIXEL_FILL(0), x, y, width, height); +} + +// Search task data +#define tTopBarItem data[0] +#define tMenuItem data[1] +#define tCursorPos_Mode data[2] +#define tScrollOffset_Mode data[3] +#define tCursorPos_Order data[4] +#define tScrollOffset_Order data[5] +#define tCursorPos_Name data[6] +#define tScrollOffset_Name data[7] +#define tCursorPos_Color data[8] +#define tScrollOffset_Color data[9] +#define tCursorPos_TypeLeft data[10] +#define tScrollOffset_TypeLeft data[11] +#define tCursorPos_TypeRight data[12] +#define tScrollOffset_TypeRight data[13] +#define tCursorPos data[14] +#define tScrollOffset data[15] + +static void Task_LoadSearchMenu(u8 taskId) +{ + u16 i; + + switch (gMain.state) + { + default: + case 0: + if (!gPaletteFade.active) + { + sPokedexView->currentPage = PAGE_SEARCH; + ResetOtherVideoRegisters(0); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, sSearchMenu_BgTemplate, ARRAY_COUNT(sSearchMenu_BgTemplate)); + SetBgTilemapBuffer(3, AllocZeroed(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(2, AllocZeroed(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(0, AllocZeroed(BG_SCREEN_SIZE)); + InitWindows(sSearchMenu_WindowTemplate); + DeactivateAllTextPrinters(); + PutWindowTilemap(0); + if (!HGSS_DECAPPED) + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_MenuSearch_Gfx, 0x2000, 0, 0); + else + DecompressAndLoadBgGfxUsingHeap(3, sPokedexPlusHGSS_MenuSearch_DECA_Gfx, 0x2000, 0, 0); + if (!IsNationalPokedexEnabled()) + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenSearchHoenn_Tilemap, 0, 0); + else + CopyToBgTilemapBuffer(3, sPokedexPlusHGSS_ScreenSearchNational_Tilemap, 0, 0); + if (!HGSS_DARK_MODE) + LoadPalette(sPokedexPlusHGSS_MenuSearch_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(4 * 16 - 1)); + else + LoadPalette(sPokedexPlusHGSS_MenuSearch_dark_Pal + 1, BG_PLTT_ID(0) + 1, PLTT_SIZEOF(4 * 16 - 1)); + gMain.state = 1; + } + break; + case 1: + LoadCompressedSpriteSheet(&sInterfaceSpriteSheet[HGSS_DECAPPED]); + LoadSpritePalettes(sInterfaceSpritePalette); + LoadSpritePalettes(sStatBarSpritePal); + CreateSearchParameterScrollArrows(taskId); + for (i = 0; i < NUM_TASK_DATA; i++) + gTasks[taskId].data[i] = 0; + SetDefaultSearchModeAndOrder(taskId); + HighlightSelectedSearchTopBarItem(SEARCH_TOPBAR_SEARCH); + PrintSelectedSearchParameters(taskId); + CopyWindowToVram(0, COPYWIN_FULL); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + gMain.state++; + break; + case 2: + BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK); + sPokedexView->statBarsSpriteId = 0xFF; + CreateStatBars(&sPokedexView->pokedexList[sPokedexView->selectedPokemon]); + gMain.state++; + break; + case 3: + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + HideBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + gMain.state++; + break; + case 4: + if (!gPaletteFade.active) + { + gTasks[taskId].func = Task_SwitchToSearchMenuTopBar; + gMain.state = 0; + } + break; + } +} + +static void FreeSearchWindowAndBgBuffers(void) +{ + void *tilemapBuffer; + + FreeAllWindowBuffers(); + tilemapBuffer = GetBgTilemapBuffer(0); + if (tilemapBuffer) + Free(tilemapBuffer); + tilemapBuffer = GetBgTilemapBuffer(1); + if (tilemapBuffer) + Free(tilemapBuffer); + tilemapBuffer = GetBgTilemapBuffer(2); + if (tilemapBuffer) + Free(tilemapBuffer); + tilemapBuffer = GetBgTilemapBuffer(3); + if (tilemapBuffer) + Free(tilemapBuffer); +} + +static void Task_SwitchToSearchMenuTopBar(u8 taskId) +{ + HighlightSelectedSearchTopBarItem(gTasks[taskId].tTopBarItem); + PrintSelectedSearchParameters(taskId); + CopyWindowToVram(0, COPYWIN_GFX); + CopyBgTilemapBufferToVram(3); + gTasks[taskId].func = Task_HandleSearchTopBarInput; +} + +static void Task_HandleSearchTopBarInput(u8 taskId) +{ + if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_PC_OFF); + gTasks[taskId].func = Task_ExitSearch; + return; + } + if (JOY_NEW(A_BUTTON)) + { + switch (gTasks[taskId].tTopBarItem) + { + case SEARCH_TOPBAR_SEARCH: + PlaySE(SE_PIN); + gTasks[taskId].tMenuItem = SEARCH_NAME; + gTasks[taskId].func = Task_SwitchToSearchMenu; + break; + case SEARCH_TOPBAR_SHIFT: + PlaySE(SE_PIN); + gTasks[taskId].tMenuItem = SEARCH_ORDER; + gTasks[taskId].func = Task_SwitchToSearchMenu; + break; + case SEARCH_TOPBAR_CANCEL: + PlaySE(SE_PC_OFF); + gTasks[taskId].func = Task_ExitSearch; + break; + } + return; + } + if (JOY_NEW(DPAD_LEFT) && gTasks[taskId].tTopBarItem > SEARCH_TOPBAR_SEARCH) + { + PlaySE(SE_DEX_PAGE); + gTasks[taskId].tTopBarItem--; + HighlightSelectedSearchTopBarItem(gTasks[taskId].tTopBarItem); + CopyWindowToVram(0, COPYWIN_GFX); + CopyBgTilemapBufferToVram(3); + } + if (JOY_NEW(DPAD_RIGHT) && gTasks[taskId].tTopBarItem < SEARCH_TOPBAR_CANCEL) + { + PlaySE(SE_DEX_PAGE); + gTasks[taskId].tTopBarItem++; + HighlightSelectedSearchTopBarItem(gTasks[taskId].tTopBarItem); + CopyWindowToVram(0, COPYWIN_GFX); + CopyBgTilemapBufferToVram(3); + } +} + +static void Task_SwitchToSearchMenu(u8 taskId) +{ + HighlightSelectedSearchMenuItem(gTasks[taskId].tTopBarItem, gTasks[taskId].tMenuItem); + PrintSelectedSearchParameters(taskId); + CopyWindowToVram(0, COPYWIN_GFX); + CopyBgTilemapBufferToVram(3); + gTasks[taskId].func = Task_HandleSearchMenuInput; +} + +// Input for main search menu +static void Task_HandleSearchMenuInput(u8 taskId) +{ + const u8 (*movementMap)[4]; + + if (gTasks[taskId].tTopBarItem != SEARCH_TOPBAR_SEARCH) + { + if (!IsNationalPokedexEnabled()) + movementMap = sSearchMovementMap_ShiftHoennDex; + else + movementMap = sSearchMovementMap_ShiftNatDex; + } + else + { + if (!IsNationalPokedexEnabled()) + movementMap = sSearchMovementMap_SearchHoennDex; + else + movementMap = sSearchMovementMap_SearchNatDex; + } + + if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_BALL); + SetDefaultSearchModeAndOrder(taskId); + gTasks[taskId].func = Task_SwitchToSearchMenuTopBar; + return; + } + if (JOY_NEW(A_BUTTON)) + { + if (gTasks[taskId].tMenuItem == SEARCH_OK) + { + if (gTasks[taskId].tTopBarItem != SEARCH_TOPBAR_SEARCH) + { + sPokeBallRotation = POKEBALL_ROTATION_TOP; + sPokedexView->pokeBallRotationBackup = POKEBALL_ROTATION_TOP; + sLastSelectedPokemon = 0; + sPokedexView->selectedPokemonBackup = 0; + gSaveBlock2Ptr->pokedex.mode = GetSearchModeSelection(taskId, SEARCH_MODE); + if (!IsNationalPokedexEnabled()) + gSaveBlock2Ptr->pokedex.mode = DEX_MODE_HOENN; + sPokedexView->dexModeBackup = gSaveBlock2Ptr->pokedex.mode; + gSaveBlock2Ptr->pokedex.order = GetSearchModeSelection(taskId, SEARCH_ORDER); + sPokedexView->dexOrderBackup = gSaveBlock2Ptr->pokedex.order; + PlaySE(SE_PC_OFF); + gTasks[taskId].func = Task_ExitSearch; + } + else + { + EraseAndPrintSearchTextBox(gText_SearchingPleaseWait); + gTasks[taskId].func = Task_StartPokedexSearch; + PlaySE(SE_DEX_SEARCH); + CopyWindowToVram(0, COPYWIN_GFX); + } + } + else + { + PlaySE(SE_PIN); + gTasks[taskId].func = Task_SelectSearchMenuItem; + } + return; + } + + if (JOY_NEW(DPAD_LEFT) && movementMap[gTasks[taskId].tMenuItem][0] != 0xFF) + { + PlaySE(SE_SELECT); + gTasks[taskId].tMenuItem = movementMap[gTasks[taskId].tMenuItem][0]; + HighlightSelectedSearchMenuItem(gTasks[taskId].tTopBarItem, gTasks[taskId].tMenuItem); + CopyWindowToVram(0, COPYWIN_GFX); + CopyBgTilemapBufferToVram(3); + } + if (JOY_NEW(DPAD_RIGHT) && movementMap[gTasks[taskId].tMenuItem][1] != 0xFF) + { + PlaySE(SE_SELECT); + gTasks[taskId].tMenuItem = movementMap[gTasks[taskId].tMenuItem][1]; + HighlightSelectedSearchMenuItem(gTasks[taskId].tTopBarItem, gTasks[taskId].tMenuItem); + CopyWindowToVram(0, COPYWIN_GFX); + CopyBgTilemapBufferToVram(3); + } + if (JOY_NEW(DPAD_UP) && movementMap[gTasks[taskId].tMenuItem][2] != 0xFF) + { + PlaySE(SE_SELECT); + gTasks[taskId].tMenuItem = movementMap[gTasks[taskId].tMenuItem][2]; + HighlightSelectedSearchMenuItem(gTasks[taskId].tTopBarItem, gTasks[taskId].tMenuItem); + CopyWindowToVram(0, COPYWIN_GFX); + CopyBgTilemapBufferToVram(3); + } + if (JOY_NEW(DPAD_DOWN) && movementMap[gTasks[taskId].tMenuItem][3] != 0xFF) + { + PlaySE(SE_SELECT); + gTasks[taskId].tMenuItem = movementMap[gTasks[taskId].tMenuItem][3]; + HighlightSelectedSearchMenuItem(gTasks[taskId].tTopBarItem, gTasks[taskId].tMenuItem); + CopyWindowToVram(0, COPYWIN_GFX); + CopyBgTilemapBufferToVram(3); + } +} + +static void Task_StartPokedexSearch(u8 taskId) +{ + u8 dexMode = GetSearchModeSelection(taskId, SEARCH_MODE); + u8 order = GetSearchModeSelection(taskId, SEARCH_ORDER); + u8 abcGroup = GetSearchModeSelection(taskId, SEARCH_NAME); + u8 bodyColor = GetSearchModeSelection(taskId, SEARCH_COLOR); + u8 type1 = GetSearchModeSelection(taskId, SEARCH_TYPE_LEFT); + u8 type2 = GetSearchModeSelection(taskId, SEARCH_TYPE_RIGHT); + + DoPokedexSearch(dexMode, order, abcGroup, bodyColor, type1, type2); + gTasks[taskId].func = Task_WaitAndCompleteSearch; +} + +static void Task_WaitAndCompleteSearch(u8 taskId) +{ + if (!IsSEPlaying()) + { + if (sPokedexView->pokemonListCount != 0) + { + PlaySE(SE_SUCCESS); + EraseAndPrintSearchTextBox(gText_SearchCompleted); + } + else + { + PlaySE(SE_FAILURE); + EraseAndPrintSearchTextBox(gText_NoMatchingPkmnWereFound); + } + gTasks[taskId].func = Task_SearchCompleteWaitForInput; + CopyWindowToVram(0, COPYWIN_GFX); + } +} + +static void Task_SearchCompleteWaitForInput(u8 taskId) +{ + if (JOY_NEW(A_BUTTON)) + { + if (sPokedexView->pokemonListCount != 0) + { + // Return to dex list and show search results + sPokedexView->screenSwitchState = 1; + sPokedexView->dexMode = GetSearchModeSelection(taskId, SEARCH_MODE); + sPokedexView->dexOrder = GetSearchModeSelection(taskId, SEARCH_ORDER); + gTasks[taskId].func = Task_ExitSearch; + PlaySE(SE_PC_OFF); + } + else + { + gTasks[taskId].func = Task_SwitchToSearchMenu; + PlaySE(SE_BALL); + } + } +} + +static void Task_SelectSearchMenuItem(u8 taskId) +{ + u8 menuItem; + s16 *cursorPos; + s16 *scrollOffset; + + DrawOrEraseSearchParameterBox(FALSE); + menuItem = gTasks[taskId].tMenuItem; + cursorPos = &gTasks[taskId].data[sSearchOptions[menuItem].taskDataCursorPos]; + scrollOffset = &gTasks[taskId].data[sSearchOptions[menuItem].taskDataScrollOffset]; + gTasks[taskId].tCursorPos = *cursorPos; + gTasks[taskId].tScrollOffset = *scrollOffset; + PrintSearchParameterText(taskId); + PrintSelectorArrow(*cursorPos); + gTasks[taskId].func = Task_HandleSearchParameterInput; + CopyWindowToVram(0, COPYWIN_GFX); + CopyBgTilemapBufferToVram(3); +} + +// Input for scrolling parameter box in right column +static void Task_HandleSearchParameterInput(u8 taskId) +{ + u8 menuItem; + const struct SearchOptionText *texts; + s16 *cursorPos; + s16 *scrollOffset; + u16 maxOption; + bool8 moved; + + menuItem = gTasks[taskId].tMenuItem; + texts = sSearchOptions[menuItem].texts; + cursorPos = &gTasks[taskId].data[sSearchOptions[menuItem].taskDataCursorPos]; + scrollOffset = &gTasks[taskId].data[sSearchOptions[menuItem].taskDataScrollOffset]; + maxOption = sSearchOptions[menuItem].numOptions - 1; + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_PIN); + ClearSearchParameterBoxText(); + DrawOrEraseSearchParameterBox(TRUE); + gTasks[taskId].func = Task_SwitchToSearchMenu; + CopyWindowToVram(0, COPYWIN_GFX); + CopyBgTilemapBufferToVram(3); + return; + } + if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_BALL); + ClearSearchParameterBoxText(); + DrawOrEraseSearchParameterBox(TRUE); + *cursorPos = gTasks[taskId].tCursorPos; + *scrollOffset = gTasks[taskId].tScrollOffset; + gTasks[taskId].func = Task_SwitchToSearchMenu; + CopyWindowToVram(0, COPYWIN_GFX); + CopyBgTilemapBufferToVram(3); + return; + } + moved = FALSE; + if (JOY_REPEAT(DPAD_UP)) + { + if (*cursorPos != 0) + { + // Move cursor up + EraseSelectorArrow(*cursorPos); + (*cursorPos)--; + PrintSelectorArrow(*cursorPos); + moved = TRUE; + } + else if (*scrollOffset != 0) + { + // Scroll up + (*scrollOffset)--; + PrintSearchParameterText(taskId); + PrintSelectorArrow(*cursorPos); + moved = TRUE; + } + if (moved) + { + PlaySE(SE_SELECT); + EraseAndPrintSearchTextBox(texts[*cursorPos + *scrollOffset].description); + CopyWindowToVram(0, COPYWIN_GFX); + } + return; + } + if (JOY_REPEAT(DPAD_DOWN)) + { + if (*cursorPos < MAX_SEARCH_PARAM_CURSOR_POS && *cursorPos < maxOption) + { + // Move cursor down + EraseSelectorArrow(*cursorPos); + (*cursorPos)++; + PrintSelectorArrow(*cursorPos); + moved = TRUE; + } + else if (maxOption > MAX_SEARCH_PARAM_CURSOR_POS && *scrollOffset < maxOption - MAX_SEARCH_PARAM_CURSOR_POS) + { + // Scroll down + (*scrollOffset)++; + PrintSearchParameterText(taskId); + PrintSelectorArrow(5); + moved = TRUE; + } + if (moved) + { + PlaySE(SE_SELECT); + EraseAndPrintSearchTextBox(texts[*cursorPos + *scrollOffset].description); + CopyWindowToVram(0, COPYWIN_GFX); + } + return; + } +} + +static void Task_ExitSearch(u8 taskId) +{ + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); + gTasks[taskId].func = Task_ExitSearchWaitForFade; +} + +static void Task_ExitSearchWaitForFade(u8 taskId) +{ + if (!gPaletteFade.active) + { + FreeSearchWindowAndBgBuffers(); + DestroyTask(taskId); + } +} + +static void SetSearchRectHighlight(u8 flags, u8 x, u8 y, u8 width) +{ + u16 i; + u16 temp; //should be a pointer, but does not match as one + u32 ptr = (u32)GetBgTilemapBuffer(3); //same as above + + for (i = 0; i < width; i++) + { + temp = *(u16 *)(ptr + (y + 0) * 64 + (x + i) * 2); + temp &= 0x0fff; + temp |= (flags << 12); + *(u16 *)(ptr + (y + 0) * 64 + (x + i) * 2) = temp; + + temp = *(u16 *)(ptr + (y + 1) * 64 + (x + i) * 2); + temp &= 0x0fff; + temp |= (flags << 12); + *(u16 *)(ptr + (y + 1) * 64 + (x + i) * 2) = temp; + } +} + + +#define SEARCH_BG_SEARCH SEARCH_TOPBAR_SEARCH +#define SEARCH_BG_SHIFT SEARCH_TOPBAR_SHIFT +#define SEARCH_BG_CANCEL SEARCH_TOPBAR_CANCEL +#define SEARCH_BG_NAME (SEARCH_NAME + SEARCH_TOPBAR_COUNT) +#define SEARCH_BG_COLOR (SEARCH_COLOR + SEARCH_TOPBAR_COUNT) +#define SEARCH_BG_TYPE_SELECTION_LEFT (SEARCH_TYPE_LEFT + SEARCH_TOPBAR_COUNT) +#define SEARCH_BG_TYPE_SELECTION_RIGHT (SEARCH_TYPE_RIGHT + SEARCH_TOPBAR_COUNT) +#define SEARCH_BG_ORDER (SEARCH_ORDER + SEARCH_TOPBAR_COUNT) +#define SEARCH_BG_MODE (SEARCH_MODE + SEARCH_TOPBAR_COUNT) +#define SEARCH_BG_OK (SEARCH_OK + SEARCH_TOPBAR_COUNT) +#define SEARCH_BG_TYPE_TITLE (SEARCH_COUNT + SEARCH_TOPBAR_COUNT) + +static void DrawSearchMenuItemBgHighlight(u8 searchBg, bool8 unselected, bool8 disabled) +{ + u8 highlightFlags = (unselected & 1) | ((disabled & 1) << 1); + + switch (searchBg) + { + case SEARCH_BG_SEARCH: + case SEARCH_BG_SHIFT: + case SEARCH_BG_CANCEL: + SetSearchRectHighlight(highlightFlags, sSearchMenuTopBarItems[searchBg].highlightX, sSearchMenuTopBarItems[searchBg].highlightY, sSearchMenuTopBarItems[searchBg].highlightWidth); + break; + case SEARCH_BG_NAME: + case SEARCH_BG_COLOR: + case SEARCH_BG_ORDER: + case SEARCH_BG_MODE: + SetSearchRectHighlight(highlightFlags, sSearchMenuItems[searchBg - SEARCH_TOPBAR_COUNT].titleBgX, sSearchMenuItems[searchBg - SEARCH_TOPBAR_COUNT].titleBgY, sSearchMenuItems[searchBg - SEARCH_TOPBAR_COUNT].titleBgWidth); + // fall through, draw selectionBg for above + case SEARCH_BG_TYPE_SELECTION_LEFT: + case SEARCH_BG_TYPE_SELECTION_RIGHT: + SetSearchRectHighlight(highlightFlags, sSearchMenuItems[searchBg - SEARCH_TOPBAR_COUNT].selectionBgX, sSearchMenuItems[searchBg - SEARCH_TOPBAR_COUNT].selectionBgY, sSearchMenuItems[searchBg - SEARCH_TOPBAR_COUNT].selectionBgWidth); + break; + case SEARCH_BG_TYPE_TITLE: + SetSearchRectHighlight(highlightFlags, sSearchMenuItems[SEARCH_TYPE_LEFT].titleBgX, sSearchMenuItems[SEARCH_TYPE_LEFT].titleBgY, sSearchMenuItems[SEARCH_TYPE_LEFT].titleBgWidth); + break; + case SEARCH_BG_OK: + if (!IsNationalPokedexEnabled()) + SetSearchRectHighlight(highlightFlags, sSearchMenuItems[searchBg - SEARCH_TOPBAR_COUNT].titleBgX, sSearchMenuItems[searchBg - SEARCH_TOPBAR_COUNT].titleBgY - 2, sSearchMenuItems[searchBg - SEARCH_TOPBAR_COUNT].titleBgWidth); + else + SetSearchRectHighlight(highlightFlags, sSearchMenuItems[searchBg - SEARCH_TOPBAR_COUNT].titleBgX, sSearchMenuItems[searchBg - SEARCH_TOPBAR_COUNT].titleBgY, sSearchMenuItems[searchBg - SEARCH_TOPBAR_COUNT].titleBgWidth); + break; + } +} + +static void SetInitialSearchMenuBgHighlights(u8 topBarItem) +{ + switch (topBarItem) + { + case SEARCH_TOPBAR_SEARCH: + DrawSearchMenuItemBgHighlight(SEARCH_BG_SEARCH, FALSE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_SHIFT, TRUE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_CANCEL, TRUE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_NAME, TRUE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_COLOR, TRUE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_TYPE_TITLE, TRUE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_TYPE_SELECTION_LEFT, TRUE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_TYPE_SELECTION_RIGHT, TRUE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_ORDER, TRUE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_MODE, TRUE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_OK, TRUE, FALSE); + break; + case SEARCH_TOPBAR_SHIFT: + DrawSearchMenuItemBgHighlight(SEARCH_BG_SEARCH, TRUE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_SHIFT, FALSE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_CANCEL, TRUE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_NAME, TRUE, TRUE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_COLOR, TRUE, TRUE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_TYPE_TITLE, TRUE, TRUE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_TYPE_SELECTION_LEFT, TRUE, TRUE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_TYPE_SELECTION_RIGHT, TRUE, TRUE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_ORDER, TRUE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_MODE, TRUE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_OK, TRUE, FALSE); + break; + case SEARCH_TOPBAR_CANCEL: + DrawSearchMenuItemBgHighlight(SEARCH_BG_SEARCH, TRUE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_SHIFT, TRUE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_CANCEL, FALSE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_NAME, TRUE, TRUE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_COLOR, TRUE, TRUE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_TYPE_TITLE, TRUE, TRUE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_TYPE_SELECTION_LEFT, TRUE, TRUE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_TYPE_SELECTION_RIGHT, TRUE, TRUE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_ORDER, TRUE, TRUE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_MODE, TRUE, TRUE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_OK, TRUE, TRUE); + break; + } +} + +static void HighlightSelectedSearchTopBarItem(u8 topBarItem) +{ + SetInitialSearchMenuBgHighlights(topBarItem); + EraseAndPrintSearchTextBox(sSearchMenuTopBarItems[topBarItem].description); +} + +static void HighlightSelectedSearchMenuItem(u8 topBarItem, u8 menuItem) +{ + SetInitialSearchMenuBgHighlights(topBarItem); + switch (menuItem) + { + case SEARCH_NAME: + DrawSearchMenuItemBgHighlight(SEARCH_BG_NAME, FALSE, FALSE); + break; + case SEARCH_COLOR: + DrawSearchMenuItemBgHighlight(SEARCH_BG_COLOR, FALSE, FALSE); + break; + case SEARCH_TYPE_LEFT: + DrawSearchMenuItemBgHighlight(SEARCH_BG_TYPE_TITLE, FALSE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_TYPE_SELECTION_LEFT, FALSE, FALSE); + break; + case SEARCH_TYPE_RIGHT: + DrawSearchMenuItemBgHighlight(SEARCH_BG_TYPE_TITLE, FALSE, FALSE); + DrawSearchMenuItemBgHighlight(SEARCH_BG_TYPE_SELECTION_RIGHT, FALSE, FALSE); + break; + case SEARCH_ORDER: + DrawSearchMenuItemBgHighlight(SEARCH_BG_ORDER, FALSE, FALSE); + break; + case SEARCH_MODE: + DrawSearchMenuItemBgHighlight(SEARCH_BG_MODE, FALSE, FALSE); + break; + case SEARCH_OK: + DrawSearchMenuItemBgHighlight(SEARCH_BG_OK, FALSE, FALSE); + break; + } + EraseAndPrintSearchTextBox(sSearchMenuItems[menuItem].description); +} + +// Prints the currently selected search parameters in the search menu selection boxes +static void PrintSelectedSearchParameters(u8 taskId) +{ + u16 searchParamId; + + ClearSearchMenuRect(40, 16, 96, 80); + + searchParamId = gTasks[taskId].tCursorPos_Name + gTasks[taskId].tScrollOffset_Name; + PrintSearchText(sDexSearchNameOptions[searchParamId].title, 0x2D, 0x11); + + searchParamId = gTasks[taskId].tCursorPos_Color + gTasks[taskId].tScrollOffset_Color; + PrintSearchText(sDexSearchColorOptions[searchParamId].title, 0x2D, 0x21); + + searchParamId = gTasks[taskId].tCursorPos_TypeLeft + gTasks[taskId].tScrollOffset_TypeLeft; + PrintSearchText(sDexSearchTypeOptions[searchParamId].title, 0x2D, 0x31); + + searchParamId = gTasks[taskId].tCursorPos_TypeRight + gTasks[taskId].tScrollOffset_TypeRight; + PrintSearchText(sDexSearchTypeOptions[searchParamId].title, 0x5D, 0x31); + + searchParamId = gTasks[taskId].tCursorPos_Order + gTasks[taskId].tScrollOffset_Order; + PrintSearchText(sDexOrderOptions[searchParamId].title, 0x2D, 0x41); + + if (IsNationalPokedexEnabled()) + { + searchParamId = gTasks[taskId].tCursorPos_Mode + gTasks[taskId].tScrollOffset_Mode; + PrintSearchText(sDexModeOptions[searchParamId].title, 0x2D, 0x51); + } +} + +static void DrawOrEraseSearchParameterBox(bool8 erase) +{ + u16 i; + u16 j; + u16 *ptr = GetBgTilemapBuffer(3); + + if (!erase) + { + *(ptr + 0x11) = 0xC0B; + for (i = 0x12; i < 0x1F; i++) + *(ptr + i) = 0x80D; + for (j = 1; j < 13; j++) + { + *(ptr + 0x11 + j * 32) = 0x40A; + for (i = 0x12; i < 0x1F; i++) + *(ptr + j * 32 + i) = 2; + } + *(ptr + 0x1B1) = 0x40B; + for (i = 0x12; i < 0x1F; i++) + *(ptr + 0x1A0 + i) = 0xD; + } + else + { + for (j = 0; j < 14; j++) + { + for (i = 0x11; i < 0x1E; i++) + { + *(ptr + j * 32 + i) = 0x4F; + } + } + } +} + +// Prints the currently viewable search parameter titles in the right-hand text box +// and the currently selected search parameter description in the bottom text box +static void PrintSearchParameterText(u8 taskId) +{ + const struct SearchOptionText *texts = sSearchOptions[gTasks[taskId].tMenuItem].texts; + const s16 *cursorPos = &gTasks[taskId].data[sSearchOptions[gTasks[taskId].tMenuItem].taskDataCursorPos]; + const s16 *scrollOffset = &gTasks[taskId].data[sSearchOptions[gTasks[taskId].tMenuItem].taskDataScrollOffset]; + u16 i; + u16 j; + + ClearSearchParameterBoxText(); + + for (i = 0, j = *scrollOffset; i < MAX_SEARCH_PARAM_ON_SCREEN && texts[j].title != NULL; i++, j++) + PrintSearchParameterTitle(i, texts[j].title); + + EraseAndPrintSearchTextBox(texts[*cursorPos + *scrollOffset].description); +} + +static u8 GetSearchModeSelection(u8 taskId, u8 option) +{ + const s16 *cursorPos = &gTasks[taskId].data[sSearchOptions[option].taskDataCursorPos]; + const s16 *scrollOffset = &gTasks[taskId].data[sSearchOptions[option].taskDataScrollOffset]; + u16 id = *cursorPos + *scrollOffset; + + switch (option) + { + default: + return 0; + case SEARCH_MODE: + return sPokedexModes[id]; + case SEARCH_ORDER: + return sOrderOptions[id]; + case SEARCH_NAME: + if (id == 0) + return 0xFF; + else + return id; + case SEARCH_COLOR: + if (id == 0) + return 0xFF; + else + return id - 1; + case SEARCH_TYPE_LEFT: + case SEARCH_TYPE_RIGHT: + return sDexSearchTypeIds[id]; + } +} + +static void SetDefaultSearchModeAndOrder(u8 taskId) +{ + u16 selected; + + switch (sPokedexView->dexModeBackup) + { + default: + case DEX_MODE_HOENN: + selected = DEX_MODE_HOENN; + break; + case DEX_MODE_NATIONAL: + selected = DEX_MODE_NATIONAL; + break; + } + gTasks[taskId].tCursorPos_Mode = selected; + + switch (sPokedexView->dexOrderBackup) + { + default: + case ORDER_NUMERICAL: + selected = ORDER_NUMERICAL; + break; + case ORDER_ALPHABETICAL: + selected = ORDER_ALPHABETICAL; + break; + case ORDER_HEAVIEST: + selected = ORDER_HEAVIEST; + break; + case ORDER_LIGHTEST: + selected = ORDER_LIGHTEST; + break; + case ORDER_TALLEST: + selected = ORDER_TALLEST; + break; + case ORDER_SMALLEST: + selected = ORDER_SMALLEST; + break; + } + gTasks[taskId].tCursorPos_Order = selected; +} + +static bool8 SearchParamCantScrollUp(u8 taskId) +{ + u8 menuItem = gTasks[taskId].tMenuItem; + const s16 *scrollOffset = &gTasks[taskId].data[sSearchOptions[menuItem].taskDataScrollOffset]; + u16 lastOption = sSearchOptions[menuItem].numOptions - 1; + + if (lastOption > MAX_SEARCH_PARAM_CURSOR_POS && *scrollOffset != 0) + return FALSE; + else + return TRUE; +} + +static bool8 SearchParamCantScrollDown(u8 taskId) +{ + u8 menuItem = gTasks[taskId].tMenuItem; + const s16 *scrollOffset = &gTasks[taskId].data[sSearchOptions[menuItem].taskDataScrollOffset]; + u16 lastOption = sSearchOptions[menuItem].numOptions - 1; + + if (lastOption > MAX_SEARCH_PARAM_CURSOR_POS && *scrollOffset < lastOption - MAX_SEARCH_PARAM_CURSOR_POS) + return FALSE; + else + return TRUE; +} + +#define sTaskId data[0] + +static void SpriteCB_SearchParameterScrollArrow(struct Sprite *sprite) +{ + if (gTasks[sprite->sTaskId].func == Task_HandleSearchParameterInput) + { + u8 val; + + if (sprite->sIsDownArrow) + { + if (SearchParamCantScrollDown(sprite->sTaskId)) + sprite->invisible = TRUE; + else + sprite->invisible = FALSE; + } + else + { + if (SearchParamCantScrollUp(sprite->sTaskId)) + sprite->invisible = TRUE; + else + sprite->invisible = FALSE; + } + val = sprite->data[2] + sprite->sIsDownArrow * 128; + sprite->y2 = gSineTable[val] / 128; + sprite->data[2] += 8; + } + else + { + sprite->invisible = TRUE; + } +} + +static void CreateSearchParameterScrollArrows(u8 taskId) +{ + u8 spriteId; + + spriteId = CreateSprite(&sScrollArrowSpriteTemplate, 184, 4, 0); + gSprites[spriteId].sTaskId = taskId; + gSprites[spriteId].sIsDownArrow = FALSE; + gSprites[spriteId].callback = SpriteCB_SearchParameterScrollArrow; + + spriteId = CreateSprite(&sScrollArrowSpriteTemplate, 184, 108, 0); + gSprites[spriteId].sTaskId = taskId; + gSprites[spriteId].sIsDownArrow = TRUE; + gSprites[spriteId].vFlip = TRUE; + gSprites[spriteId].callback = SpriteCB_SearchParameterScrollArrow; +} + +#undef sTaskId +#undef sIsDownArrow + +static void EraseAndPrintSearchTextBox(const u8 *str) +{ + ClearSearchMenuRect(8, 120, 224, 32); + PrintSearchText(str, 8, 121); +} + +static void EraseSelectorArrow(u32 y) +{ + ClearSearchMenuRect(144, y * 16 + 8, 8, 16); +} + +static void PrintSelectorArrow(u32 y) +{ + PrintSearchText(gText_SelectorArrow, 144, y * 16 + 9); +} + +static void PrintSearchParameterTitle(u32 y, const u8 *str) +{ + PrintSearchText(str, 152, y * 16 + 9); +} + +static void ClearSearchParameterBoxText(void) +{ + ClearSearchMenuRect(144, 8, 96, 96); +} diff --git a/src/pokemon.c b/src/pokemon.c index a360feb0ba..c6b1c0dae6 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -15,6 +15,7 @@ #include "evolution_scene.h" #include "field_specials.h" #include "field_weather.h" +#include "graphics.h" #include "item.h" #include "link.h" #include "main.h" @@ -42,6 +43,7 @@ #include "constants/battle_frontier.h" #include "constants/battle_move_effects.h" #include "constants/battle_script_commands.h" +#include "constants/cries.h" #include "constants/form_change_types.h" #include "constants/hold_effects.h" #include "constants/item_effects.h" @@ -53,6 +55,12 @@ #include "constants/union_room.h" #include "constants/weather.h" +#if P_FRIENDSHIP_EVO_THRESHOLD >= GEN_9 +#define FRIENDSHIP_EVO_THRESHOLD 160 +#else +#define FRIENDSHIP_EVO_THRESHOLD 220 +#endif + struct SpeciesItem { u16 species; @@ -94,1586 +102,11 @@ static const struct CombinedMove sCombinedMoves[2] = {0xFFFF, 0xFFFF, 0xFFFF} }; -// NOTE: The order of the elements in the 3 arrays below is irrelevant. +// NOTE: The order of the elements in the array below is irrelevant. // To reorder the pokedex, see the values in include/constants/pokedex.h. -#define SPECIES_TO_HOENN(name) [SPECIES_##name - 1] = HOENN_DEX_##name -#define SPECIES_TO_NATIONAL(name) [SPECIES_##name - 1] = NATIONAL_DEX_##name #define HOENN_TO_NATIONAL(name) [HOENN_DEX_##name - 1] = NATIONAL_DEX_##name -// Assigns all species to the Hoenn Dex Index (Summary No. for Hoenn Dex) -static const u16 sSpeciesToHoennPokedexNum[NUM_SPECIES - 1] = -{ - SPECIES_TO_HOENN(TREECKO), - SPECIES_TO_HOENN(GROVYLE), - SPECIES_TO_HOENN(SCEPTILE), - SPECIES_TO_HOENN(TORCHIC), - SPECIES_TO_HOENN(COMBUSKEN), - SPECIES_TO_HOENN(BLAZIKEN), - SPECIES_TO_HOENN(MUDKIP), - SPECIES_TO_HOENN(MARSHTOMP), - SPECIES_TO_HOENN(SWAMPERT), - SPECIES_TO_HOENN(POOCHYENA), - SPECIES_TO_HOENN(MIGHTYENA), - SPECIES_TO_HOENN(ZIGZAGOON), - SPECIES_TO_HOENN(LINOONE), - SPECIES_TO_HOENN(WURMPLE), - SPECIES_TO_HOENN(SILCOON), - SPECIES_TO_HOENN(BEAUTIFLY), - SPECIES_TO_HOENN(CASCOON), - SPECIES_TO_HOENN(DUSTOX), - SPECIES_TO_HOENN(LOTAD), - SPECIES_TO_HOENN(LOMBRE), - SPECIES_TO_HOENN(LUDICOLO), - SPECIES_TO_HOENN(SEEDOT), - SPECIES_TO_HOENN(NUZLEAF), - SPECIES_TO_HOENN(SHIFTRY), - SPECIES_TO_HOENN(TAILLOW), - SPECIES_TO_HOENN(SWELLOW), - SPECIES_TO_HOENN(WINGULL), - SPECIES_TO_HOENN(PELIPPER), - SPECIES_TO_HOENN(RALTS), - SPECIES_TO_HOENN(KIRLIA), - SPECIES_TO_HOENN(GARDEVOIR), -#if P_GEN_4_POKEMON == TRUE - SPECIES_TO_HOENN(GALLADE), -#endif - SPECIES_TO_HOENN(SURSKIT), - SPECIES_TO_HOENN(MASQUERAIN), - SPECIES_TO_HOENN(SHROOMISH), - SPECIES_TO_HOENN(BRELOOM), - SPECIES_TO_HOENN(SLAKOTH), - SPECIES_TO_HOENN(VIGOROTH), - SPECIES_TO_HOENN(SLAKING), - SPECIES_TO_HOENN(ABRA), - SPECIES_TO_HOENN(KADABRA), - SPECIES_TO_HOENN(ALAKAZAM), - SPECIES_TO_HOENN(NINCADA), - SPECIES_TO_HOENN(NINJASK), - SPECIES_TO_HOENN(SHEDINJA), - SPECIES_TO_HOENN(WHISMUR), - SPECIES_TO_HOENN(LOUDRED), - SPECIES_TO_HOENN(EXPLOUD), - SPECIES_TO_HOENN(MAKUHITA), - SPECIES_TO_HOENN(HARIYAMA), - SPECIES_TO_HOENN(GOLDEEN), - SPECIES_TO_HOENN(SEAKING), - SPECIES_TO_HOENN(MAGIKARP), - SPECIES_TO_HOENN(GYARADOS), - SPECIES_TO_HOENN(AZURILL), - SPECIES_TO_HOENN(MARILL), - SPECIES_TO_HOENN(AZUMARILL), - SPECIES_TO_HOENN(GEODUDE), - SPECIES_TO_HOENN(GRAVELER), - SPECIES_TO_HOENN(GOLEM), - SPECIES_TO_HOENN(NOSEPASS), -#if P_GEN_4_POKEMON == TRUE - SPECIES_TO_HOENN(PROBOPASS), -#endif - SPECIES_TO_HOENN(SKITTY), - SPECIES_TO_HOENN(DELCATTY), - SPECIES_TO_HOENN(ZUBAT), - SPECIES_TO_HOENN(GOLBAT), - SPECIES_TO_HOENN(CROBAT), - SPECIES_TO_HOENN(TENTACOOL), - SPECIES_TO_HOENN(TENTACRUEL), - SPECIES_TO_HOENN(SABLEYE), - SPECIES_TO_HOENN(MAWILE), - SPECIES_TO_HOENN(ARON), - SPECIES_TO_HOENN(LAIRON), - SPECIES_TO_HOENN(AGGRON), - SPECIES_TO_HOENN(MACHOP), - SPECIES_TO_HOENN(MACHOKE), - SPECIES_TO_HOENN(MACHAMP), - SPECIES_TO_HOENN(MEDITITE), - SPECIES_TO_HOENN(MEDICHAM), - SPECIES_TO_HOENN(ELECTRIKE), - SPECIES_TO_HOENN(MANECTRIC), - SPECIES_TO_HOENN(PLUSLE), - SPECIES_TO_HOENN(MINUN), - SPECIES_TO_HOENN(MAGNEMITE), - SPECIES_TO_HOENN(MAGNETON), -#if P_GEN_4_POKEMON == TRUE - SPECIES_TO_HOENN(MAGNEZONE), -#endif - SPECIES_TO_HOENN(VOLTORB), - SPECIES_TO_HOENN(ELECTRODE), - SPECIES_TO_HOENN(VOLBEAT), - SPECIES_TO_HOENN(ILLUMISE), - SPECIES_TO_HOENN(ODDISH), - SPECIES_TO_HOENN(GLOOM), - SPECIES_TO_HOENN(VILEPLUME), - SPECIES_TO_HOENN(BELLOSSOM), - SPECIES_TO_HOENN(DODUO), - SPECIES_TO_HOENN(DODRIO), -#if P_GEN_4_POKEMON == TRUE - SPECIES_TO_HOENN(BUDEW), - SPECIES_TO_HOENN(ROSELIA), - SPECIES_TO_HOENN(ROSERADE), -#else - SPECIES_TO_HOENN(ROSELIA), -#endif - SPECIES_TO_HOENN(GULPIN), - SPECIES_TO_HOENN(SWALOT), - SPECIES_TO_HOENN(CARVANHA), - SPECIES_TO_HOENN(SHARPEDO), - SPECIES_TO_HOENN(WAILMER), - SPECIES_TO_HOENN(WAILORD), - SPECIES_TO_HOENN(NUMEL), - SPECIES_TO_HOENN(CAMERUPT), - SPECIES_TO_HOENN(SLUGMA), - SPECIES_TO_HOENN(MAGCARGO), - SPECIES_TO_HOENN(TORKOAL), - SPECIES_TO_HOENN(GRIMER), - SPECIES_TO_HOENN(MUK), - SPECIES_TO_HOENN(KOFFING), - SPECIES_TO_HOENN(WEEZING), - SPECIES_TO_HOENN(SPOINK), - SPECIES_TO_HOENN(GRUMPIG), - SPECIES_TO_HOENN(SANDSHREW), - SPECIES_TO_HOENN(SANDSLASH), - SPECIES_TO_HOENN(SPINDA), - SPECIES_TO_HOENN(SKARMORY), - SPECIES_TO_HOENN(TRAPINCH), - SPECIES_TO_HOENN(VIBRAVA), - SPECIES_TO_HOENN(FLYGON), - SPECIES_TO_HOENN(CACNEA), - SPECIES_TO_HOENN(CACTURNE), - SPECIES_TO_HOENN(SWABLU), - SPECIES_TO_HOENN(ALTARIA), - SPECIES_TO_HOENN(ZANGOOSE), - SPECIES_TO_HOENN(SEVIPER), - SPECIES_TO_HOENN(LUNATONE), - SPECIES_TO_HOENN(SOLROCK), - SPECIES_TO_HOENN(BARBOACH), - SPECIES_TO_HOENN(WHISCASH), - SPECIES_TO_HOENN(CORPHISH), - SPECIES_TO_HOENN(CRAWDAUNT), - SPECIES_TO_HOENN(BALTOY), - SPECIES_TO_HOENN(CLAYDOL), - SPECIES_TO_HOENN(LILEEP), - SPECIES_TO_HOENN(CRADILY), - SPECIES_TO_HOENN(ANORITH), - SPECIES_TO_HOENN(ARMALDO), - SPECIES_TO_HOENN(IGGLYBUFF), - SPECIES_TO_HOENN(JIGGLYPUFF), - SPECIES_TO_HOENN(WIGGLYTUFF), - SPECIES_TO_HOENN(FEEBAS), - SPECIES_TO_HOENN(MILOTIC), - SPECIES_TO_HOENN(CASTFORM), - SPECIES_TO_HOENN(STARYU), - SPECIES_TO_HOENN(STARMIE), - SPECIES_TO_HOENN(KECLEON), - SPECIES_TO_HOENN(SHUPPET), - SPECIES_TO_HOENN(BANETTE), - SPECIES_TO_HOENN(DUSKULL), - SPECIES_TO_HOENN(DUSCLOPS), -#if P_GEN_4_POKEMON == TRUE - SPECIES_TO_HOENN(DUSKNOIR), - SPECIES_TO_HOENN(TROPIUS), - SPECIES_TO_HOENN(CHINGLING), -#else - SPECIES_TO_HOENN(TROPIUS), -#endif - SPECIES_TO_HOENN(CHIMECHO), - SPECIES_TO_HOENN(ABSOL), - SPECIES_TO_HOENN(VULPIX), - SPECIES_TO_HOENN(NINETALES), - SPECIES_TO_HOENN(PICHU), - SPECIES_TO_HOENN(PIKACHU), - SPECIES_TO_HOENN(RAICHU), - SPECIES_TO_HOENN(PSYDUCK), - SPECIES_TO_HOENN(GOLDUCK), - SPECIES_TO_HOENN(WYNAUT), - SPECIES_TO_HOENN(WOBBUFFET), - SPECIES_TO_HOENN(NATU), - SPECIES_TO_HOENN(XATU), - SPECIES_TO_HOENN(GIRAFARIG), - SPECIES_TO_HOENN(PHANPY), - SPECIES_TO_HOENN(DONPHAN), - SPECIES_TO_HOENN(PINSIR), - SPECIES_TO_HOENN(HERACROSS), - SPECIES_TO_HOENN(RHYHORN), - SPECIES_TO_HOENN(RHYDON), -#if P_GEN_4_POKEMON == TRUE - SPECIES_TO_HOENN(RHYPERIOR), -#endif - SPECIES_TO_HOENN(SNORUNT), - SPECIES_TO_HOENN(GLALIE), -#if P_GEN_4_POKEMON == TRUE - SPECIES_TO_HOENN(FROSLASS), -#endif - SPECIES_TO_HOENN(SPHEAL), - SPECIES_TO_HOENN(SEALEO), - SPECIES_TO_HOENN(WALREIN), - SPECIES_TO_HOENN(CLAMPERL), - SPECIES_TO_HOENN(HUNTAIL), - SPECIES_TO_HOENN(GOREBYSS), - SPECIES_TO_HOENN(RELICANTH), - SPECIES_TO_HOENN(CORSOLA), - SPECIES_TO_HOENN(CHINCHOU), - SPECIES_TO_HOENN(LANTURN), - SPECIES_TO_HOENN(LUVDISC), - SPECIES_TO_HOENN(HORSEA), - SPECIES_TO_HOENN(SEADRA), - SPECIES_TO_HOENN(KINGDRA), - SPECIES_TO_HOENN(BAGON), - SPECIES_TO_HOENN(SHELGON), - SPECIES_TO_HOENN(SALAMENCE), - SPECIES_TO_HOENN(BELDUM), - SPECIES_TO_HOENN(METANG), - SPECIES_TO_HOENN(METAGROSS), - SPECIES_TO_HOENN(REGIROCK), - SPECIES_TO_HOENN(REGICE), - SPECIES_TO_HOENN(REGISTEEL), - SPECIES_TO_HOENN(LATIAS), - SPECIES_TO_HOENN(LATIOS), - SPECIES_TO_HOENN(KYOGRE), - SPECIES_TO_HOENN(GROUDON), - SPECIES_TO_HOENN(RAYQUAZA), - SPECIES_TO_HOENN(JIRACHI), - SPECIES_TO_HOENN(DEOXYS), -}; - -// Assigns all species to the National Dex Index (Summary No. for National Dex) -static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = -{ - SPECIES_TO_NATIONAL(BULBASAUR), - SPECIES_TO_NATIONAL(IVYSAUR), - SPECIES_TO_NATIONAL(VENUSAUR), - SPECIES_TO_NATIONAL(CHARMANDER), - SPECIES_TO_NATIONAL(CHARMELEON), - SPECIES_TO_NATIONAL(CHARIZARD), - SPECIES_TO_NATIONAL(SQUIRTLE), - SPECIES_TO_NATIONAL(WARTORTLE), - SPECIES_TO_NATIONAL(BLASTOISE), - SPECIES_TO_NATIONAL(CATERPIE), - SPECIES_TO_NATIONAL(METAPOD), - SPECIES_TO_NATIONAL(BUTTERFREE), - SPECIES_TO_NATIONAL(WEEDLE), - SPECIES_TO_NATIONAL(KAKUNA), - SPECIES_TO_NATIONAL(BEEDRILL), - SPECIES_TO_NATIONAL(PIDGEY), - SPECIES_TO_NATIONAL(PIDGEOTTO), - SPECIES_TO_NATIONAL(PIDGEOT), - SPECIES_TO_NATIONAL(RATTATA), - SPECIES_TO_NATIONAL(RATICATE), - SPECIES_TO_NATIONAL(SPEAROW), - SPECIES_TO_NATIONAL(FEAROW), - SPECIES_TO_NATIONAL(EKANS), - SPECIES_TO_NATIONAL(ARBOK), - SPECIES_TO_NATIONAL(PIKACHU), - SPECIES_TO_NATIONAL(RAICHU), - SPECIES_TO_NATIONAL(SANDSHREW), - SPECIES_TO_NATIONAL(SANDSLASH), - SPECIES_TO_NATIONAL(NIDORAN_F), - SPECIES_TO_NATIONAL(NIDORINA), - SPECIES_TO_NATIONAL(NIDOQUEEN), - SPECIES_TO_NATIONAL(NIDORAN_M), - SPECIES_TO_NATIONAL(NIDORINO), - SPECIES_TO_NATIONAL(NIDOKING), - SPECIES_TO_NATIONAL(CLEFAIRY), - SPECIES_TO_NATIONAL(CLEFABLE), - SPECIES_TO_NATIONAL(VULPIX), - SPECIES_TO_NATIONAL(NINETALES), - SPECIES_TO_NATIONAL(JIGGLYPUFF), - SPECIES_TO_NATIONAL(WIGGLYTUFF), - SPECIES_TO_NATIONAL(ZUBAT), - SPECIES_TO_NATIONAL(GOLBAT), - SPECIES_TO_NATIONAL(ODDISH), - SPECIES_TO_NATIONAL(GLOOM), - SPECIES_TO_NATIONAL(VILEPLUME), - SPECIES_TO_NATIONAL(PARAS), - SPECIES_TO_NATIONAL(PARASECT), - SPECIES_TO_NATIONAL(VENONAT), - SPECIES_TO_NATIONAL(VENOMOTH), - SPECIES_TO_NATIONAL(DIGLETT), - SPECIES_TO_NATIONAL(DUGTRIO), - SPECIES_TO_NATIONAL(MEOWTH), - SPECIES_TO_NATIONAL(PERSIAN), - SPECIES_TO_NATIONAL(PSYDUCK), - SPECIES_TO_NATIONAL(GOLDUCK), - SPECIES_TO_NATIONAL(MANKEY), - SPECIES_TO_NATIONAL(PRIMEAPE), - SPECIES_TO_NATIONAL(GROWLITHE), - SPECIES_TO_NATIONAL(ARCANINE), - SPECIES_TO_NATIONAL(POLIWAG), - SPECIES_TO_NATIONAL(POLIWHIRL), - SPECIES_TO_NATIONAL(POLIWRATH), - SPECIES_TO_NATIONAL(ABRA), - SPECIES_TO_NATIONAL(KADABRA), - SPECIES_TO_NATIONAL(ALAKAZAM), - SPECIES_TO_NATIONAL(MACHOP), - SPECIES_TO_NATIONAL(MACHOKE), - SPECIES_TO_NATIONAL(MACHAMP), - SPECIES_TO_NATIONAL(BELLSPROUT), - SPECIES_TO_NATIONAL(WEEPINBELL), - SPECIES_TO_NATIONAL(VICTREEBEL), - SPECIES_TO_NATIONAL(TENTACOOL), - SPECIES_TO_NATIONAL(TENTACRUEL), - SPECIES_TO_NATIONAL(GEODUDE), - SPECIES_TO_NATIONAL(GRAVELER), - SPECIES_TO_NATIONAL(GOLEM), - SPECIES_TO_NATIONAL(PONYTA), - SPECIES_TO_NATIONAL(RAPIDASH), - SPECIES_TO_NATIONAL(SLOWPOKE), - SPECIES_TO_NATIONAL(SLOWBRO), - SPECIES_TO_NATIONAL(MAGNEMITE), - SPECIES_TO_NATIONAL(MAGNETON), - SPECIES_TO_NATIONAL(FARFETCHD), - SPECIES_TO_NATIONAL(DODUO), - SPECIES_TO_NATIONAL(DODRIO), - SPECIES_TO_NATIONAL(SEEL), - SPECIES_TO_NATIONAL(DEWGONG), - SPECIES_TO_NATIONAL(GRIMER), - SPECIES_TO_NATIONAL(MUK), - SPECIES_TO_NATIONAL(SHELLDER), - SPECIES_TO_NATIONAL(CLOYSTER), - SPECIES_TO_NATIONAL(GASTLY), - SPECIES_TO_NATIONAL(HAUNTER), - SPECIES_TO_NATIONAL(GENGAR), - SPECIES_TO_NATIONAL(ONIX), - SPECIES_TO_NATIONAL(DROWZEE), - SPECIES_TO_NATIONAL(HYPNO), - SPECIES_TO_NATIONAL(KRABBY), - SPECIES_TO_NATIONAL(KINGLER), - SPECIES_TO_NATIONAL(VOLTORB), - SPECIES_TO_NATIONAL(ELECTRODE), - SPECIES_TO_NATIONAL(EXEGGCUTE), - SPECIES_TO_NATIONAL(EXEGGUTOR), - SPECIES_TO_NATIONAL(CUBONE), - SPECIES_TO_NATIONAL(MAROWAK), - SPECIES_TO_NATIONAL(HITMONLEE), - SPECIES_TO_NATIONAL(HITMONCHAN), - SPECIES_TO_NATIONAL(LICKITUNG), - SPECIES_TO_NATIONAL(KOFFING), - SPECIES_TO_NATIONAL(WEEZING), - SPECIES_TO_NATIONAL(RHYHORN), - SPECIES_TO_NATIONAL(RHYDON), - SPECIES_TO_NATIONAL(CHANSEY), - SPECIES_TO_NATIONAL(TANGELA), - SPECIES_TO_NATIONAL(KANGASKHAN), - SPECIES_TO_NATIONAL(HORSEA), - SPECIES_TO_NATIONAL(SEADRA), - SPECIES_TO_NATIONAL(GOLDEEN), - SPECIES_TO_NATIONAL(SEAKING), - SPECIES_TO_NATIONAL(STARYU), - SPECIES_TO_NATIONAL(STARMIE), - SPECIES_TO_NATIONAL(MR_MIME), - SPECIES_TO_NATIONAL(SCYTHER), - SPECIES_TO_NATIONAL(JYNX), - SPECIES_TO_NATIONAL(ELECTABUZZ), - SPECIES_TO_NATIONAL(MAGMAR), - SPECIES_TO_NATIONAL(PINSIR), - SPECIES_TO_NATIONAL(TAUROS), - SPECIES_TO_NATIONAL(MAGIKARP), - SPECIES_TO_NATIONAL(GYARADOS), - SPECIES_TO_NATIONAL(LAPRAS), - SPECIES_TO_NATIONAL(DITTO), - SPECIES_TO_NATIONAL(EEVEE), - SPECIES_TO_NATIONAL(VAPOREON), - SPECIES_TO_NATIONAL(JOLTEON), - SPECIES_TO_NATIONAL(FLAREON), - SPECIES_TO_NATIONAL(PORYGON), - SPECIES_TO_NATIONAL(OMANYTE), - SPECIES_TO_NATIONAL(OMASTAR), - SPECIES_TO_NATIONAL(KABUTO), - SPECIES_TO_NATIONAL(KABUTOPS), - SPECIES_TO_NATIONAL(AERODACTYL), - SPECIES_TO_NATIONAL(SNORLAX), - SPECIES_TO_NATIONAL(ARTICUNO), - SPECIES_TO_NATIONAL(ZAPDOS), - SPECIES_TO_NATIONAL(MOLTRES), - SPECIES_TO_NATIONAL(DRATINI), - SPECIES_TO_NATIONAL(DRAGONAIR), - SPECIES_TO_NATIONAL(DRAGONITE), - SPECIES_TO_NATIONAL(MEWTWO), - SPECIES_TO_NATIONAL(MEW), - SPECIES_TO_NATIONAL(CHIKORITA), - SPECIES_TO_NATIONAL(BAYLEEF), - SPECIES_TO_NATIONAL(MEGANIUM), - SPECIES_TO_NATIONAL(CYNDAQUIL), - SPECIES_TO_NATIONAL(QUILAVA), - SPECIES_TO_NATIONAL(TYPHLOSION), - SPECIES_TO_NATIONAL(TOTODILE), - SPECIES_TO_NATIONAL(CROCONAW), - SPECIES_TO_NATIONAL(FERALIGATR), - SPECIES_TO_NATIONAL(SENTRET), - SPECIES_TO_NATIONAL(FURRET), - SPECIES_TO_NATIONAL(HOOTHOOT), - SPECIES_TO_NATIONAL(NOCTOWL), - SPECIES_TO_NATIONAL(LEDYBA), - SPECIES_TO_NATIONAL(LEDIAN), - SPECIES_TO_NATIONAL(SPINARAK), - SPECIES_TO_NATIONAL(ARIADOS), - SPECIES_TO_NATIONAL(CROBAT), - SPECIES_TO_NATIONAL(CHINCHOU), - SPECIES_TO_NATIONAL(LANTURN), - SPECIES_TO_NATIONAL(PICHU), - SPECIES_TO_NATIONAL(CLEFFA), - SPECIES_TO_NATIONAL(IGGLYBUFF), - SPECIES_TO_NATIONAL(TOGEPI), - SPECIES_TO_NATIONAL(TOGETIC), - SPECIES_TO_NATIONAL(NATU), - SPECIES_TO_NATIONAL(XATU), - SPECIES_TO_NATIONAL(MAREEP), - SPECIES_TO_NATIONAL(FLAAFFY), - SPECIES_TO_NATIONAL(AMPHAROS), - SPECIES_TO_NATIONAL(BELLOSSOM), - SPECIES_TO_NATIONAL(MARILL), - SPECIES_TO_NATIONAL(AZUMARILL), - SPECIES_TO_NATIONAL(SUDOWOODO), - SPECIES_TO_NATIONAL(POLITOED), - SPECIES_TO_NATIONAL(HOPPIP), - SPECIES_TO_NATIONAL(SKIPLOOM), - SPECIES_TO_NATIONAL(JUMPLUFF), - SPECIES_TO_NATIONAL(AIPOM), - SPECIES_TO_NATIONAL(SUNKERN), - SPECIES_TO_NATIONAL(SUNFLORA), - SPECIES_TO_NATIONAL(YANMA), - SPECIES_TO_NATIONAL(WOOPER), - SPECIES_TO_NATIONAL(QUAGSIRE), - SPECIES_TO_NATIONAL(ESPEON), - SPECIES_TO_NATIONAL(UMBREON), - SPECIES_TO_NATIONAL(MURKROW), - SPECIES_TO_NATIONAL(SLOWKING), - SPECIES_TO_NATIONAL(MISDREAVUS), - SPECIES_TO_NATIONAL(UNOWN), - SPECIES_TO_NATIONAL(WOBBUFFET), - SPECIES_TO_NATIONAL(GIRAFARIG), - SPECIES_TO_NATIONAL(PINECO), - SPECIES_TO_NATIONAL(FORRETRESS), - SPECIES_TO_NATIONAL(DUNSPARCE), - SPECIES_TO_NATIONAL(GLIGAR), - SPECIES_TO_NATIONAL(STEELIX), - SPECIES_TO_NATIONAL(SNUBBULL), - SPECIES_TO_NATIONAL(GRANBULL), - SPECIES_TO_NATIONAL(QWILFISH), - SPECIES_TO_NATIONAL(SCIZOR), - SPECIES_TO_NATIONAL(SHUCKLE), - SPECIES_TO_NATIONAL(HERACROSS), - SPECIES_TO_NATIONAL(SNEASEL), - SPECIES_TO_NATIONAL(TEDDIURSA), - SPECIES_TO_NATIONAL(URSARING), - SPECIES_TO_NATIONAL(SLUGMA), - SPECIES_TO_NATIONAL(MAGCARGO), - SPECIES_TO_NATIONAL(SWINUB), - SPECIES_TO_NATIONAL(PILOSWINE), - SPECIES_TO_NATIONAL(CORSOLA), - SPECIES_TO_NATIONAL(REMORAID), - SPECIES_TO_NATIONAL(OCTILLERY), - SPECIES_TO_NATIONAL(DELIBIRD), - SPECIES_TO_NATIONAL(MANTINE), - SPECIES_TO_NATIONAL(SKARMORY), - SPECIES_TO_NATIONAL(HOUNDOUR), - SPECIES_TO_NATIONAL(HOUNDOOM), - SPECIES_TO_NATIONAL(KINGDRA), - SPECIES_TO_NATIONAL(PHANPY), - SPECIES_TO_NATIONAL(DONPHAN), - SPECIES_TO_NATIONAL(PORYGON2), - SPECIES_TO_NATIONAL(STANTLER), - SPECIES_TO_NATIONAL(SMEARGLE), - SPECIES_TO_NATIONAL(TYROGUE), - SPECIES_TO_NATIONAL(HITMONTOP), - SPECIES_TO_NATIONAL(SMOOCHUM), - SPECIES_TO_NATIONAL(ELEKID), - SPECIES_TO_NATIONAL(MAGBY), - SPECIES_TO_NATIONAL(MILTANK), - SPECIES_TO_NATIONAL(BLISSEY), - SPECIES_TO_NATIONAL(RAIKOU), - SPECIES_TO_NATIONAL(ENTEI), - SPECIES_TO_NATIONAL(SUICUNE), - SPECIES_TO_NATIONAL(LARVITAR), - SPECIES_TO_NATIONAL(PUPITAR), - SPECIES_TO_NATIONAL(TYRANITAR), - SPECIES_TO_NATIONAL(LUGIA), - SPECIES_TO_NATIONAL(HO_OH), - SPECIES_TO_NATIONAL(CELEBI), - SPECIES_TO_NATIONAL(TREECKO), - SPECIES_TO_NATIONAL(GROVYLE), - SPECIES_TO_NATIONAL(SCEPTILE), - SPECIES_TO_NATIONAL(TORCHIC), - SPECIES_TO_NATIONAL(COMBUSKEN), - SPECIES_TO_NATIONAL(BLAZIKEN), - SPECIES_TO_NATIONAL(MUDKIP), - SPECIES_TO_NATIONAL(MARSHTOMP), - SPECIES_TO_NATIONAL(SWAMPERT), - SPECIES_TO_NATIONAL(POOCHYENA), - SPECIES_TO_NATIONAL(MIGHTYENA), - SPECIES_TO_NATIONAL(ZIGZAGOON), - SPECIES_TO_NATIONAL(LINOONE), - SPECIES_TO_NATIONAL(WURMPLE), - SPECIES_TO_NATIONAL(SILCOON), - SPECIES_TO_NATIONAL(BEAUTIFLY), - SPECIES_TO_NATIONAL(CASCOON), - SPECIES_TO_NATIONAL(DUSTOX), - SPECIES_TO_NATIONAL(LOTAD), - SPECIES_TO_NATIONAL(LOMBRE), - SPECIES_TO_NATIONAL(LUDICOLO), - SPECIES_TO_NATIONAL(SEEDOT), - SPECIES_TO_NATIONAL(NUZLEAF), - SPECIES_TO_NATIONAL(SHIFTRY), - SPECIES_TO_NATIONAL(TAILLOW), - SPECIES_TO_NATIONAL(SWELLOW), - SPECIES_TO_NATIONAL(WINGULL), - SPECIES_TO_NATIONAL(PELIPPER), - SPECIES_TO_NATIONAL(RALTS), - SPECIES_TO_NATIONAL(KIRLIA), - SPECIES_TO_NATIONAL(GARDEVOIR), - SPECIES_TO_NATIONAL(SURSKIT), - SPECIES_TO_NATIONAL(MASQUERAIN), - SPECIES_TO_NATIONAL(SHROOMISH), - SPECIES_TO_NATIONAL(BRELOOM), - SPECIES_TO_NATIONAL(SLAKOTH), - SPECIES_TO_NATIONAL(VIGOROTH), - SPECIES_TO_NATIONAL(SLAKING), - SPECIES_TO_NATIONAL(NINCADA), - SPECIES_TO_NATIONAL(NINJASK), - SPECIES_TO_NATIONAL(SHEDINJA), - SPECIES_TO_NATIONAL(WHISMUR), - SPECIES_TO_NATIONAL(LOUDRED), - SPECIES_TO_NATIONAL(EXPLOUD), - SPECIES_TO_NATIONAL(MAKUHITA), - SPECIES_TO_NATIONAL(HARIYAMA), - SPECIES_TO_NATIONAL(AZURILL), - SPECIES_TO_NATIONAL(NOSEPASS), - SPECIES_TO_NATIONAL(SKITTY), - SPECIES_TO_NATIONAL(DELCATTY), - SPECIES_TO_NATIONAL(SABLEYE), - SPECIES_TO_NATIONAL(MAWILE), - SPECIES_TO_NATIONAL(ARON), - SPECIES_TO_NATIONAL(LAIRON), - SPECIES_TO_NATIONAL(AGGRON), - SPECIES_TO_NATIONAL(MEDITITE), - SPECIES_TO_NATIONAL(MEDICHAM), - SPECIES_TO_NATIONAL(ELECTRIKE), - SPECIES_TO_NATIONAL(MANECTRIC), - SPECIES_TO_NATIONAL(PLUSLE), - SPECIES_TO_NATIONAL(MINUN), - SPECIES_TO_NATIONAL(VOLBEAT), - SPECIES_TO_NATIONAL(ILLUMISE), - SPECIES_TO_NATIONAL(ROSELIA), - SPECIES_TO_NATIONAL(GULPIN), - SPECIES_TO_NATIONAL(SWALOT), - SPECIES_TO_NATIONAL(CARVANHA), - SPECIES_TO_NATIONAL(SHARPEDO), - SPECIES_TO_NATIONAL(WAILMER), - SPECIES_TO_NATIONAL(WAILORD), - SPECIES_TO_NATIONAL(NUMEL), - SPECIES_TO_NATIONAL(CAMERUPT), - SPECIES_TO_NATIONAL(TORKOAL), - SPECIES_TO_NATIONAL(SPOINK), - SPECIES_TO_NATIONAL(GRUMPIG), - SPECIES_TO_NATIONAL(SPINDA), - SPECIES_TO_NATIONAL(TRAPINCH), - SPECIES_TO_NATIONAL(VIBRAVA), - SPECIES_TO_NATIONAL(FLYGON), - SPECIES_TO_NATIONAL(CACNEA), - SPECIES_TO_NATIONAL(CACTURNE), - SPECIES_TO_NATIONAL(SWABLU), - SPECIES_TO_NATIONAL(ALTARIA), - SPECIES_TO_NATIONAL(ZANGOOSE), - SPECIES_TO_NATIONAL(SEVIPER), - SPECIES_TO_NATIONAL(LUNATONE), - SPECIES_TO_NATIONAL(SOLROCK), - SPECIES_TO_NATIONAL(BARBOACH), - SPECIES_TO_NATIONAL(WHISCASH), - SPECIES_TO_NATIONAL(CORPHISH), - SPECIES_TO_NATIONAL(CRAWDAUNT), - SPECIES_TO_NATIONAL(BALTOY), - SPECIES_TO_NATIONAL(CLAYDOL), - SPECIES_TO_NATIONAL(LILEEP), - SPECIES_TO_NATIONAL(CRADILY), - SPECIES_TO_NATIONAL(ANORITH), - SPECIES_TO_NATIONAL(ARMALDO), - SPECIES_TO_NATIONAL(FEEBAS), - SPECIES_TO_NATIONAL(MILOTIC), - SPECIES_TO_NATIONAL(CASTFORM), - SPECIES_TO_NATIONAL(KECLEON), - SPECIES_TO_NATIONAL(SHUPPET), - SPECIES_TO_NATIONAL(BANETTE), - SPECIES_TO_NATIONAL(DUSKULL), - SPECIES_TO_NATIONAL(DUSCLOPS), - SPECIES_TO_NATIONAL(TROPIUS), - SPECIES_TO_NATIONAL(CHIMECHO), - SPECIES_TO_NATIONAL(ABSOL), - SPECIES_TO_NATIONAL(WYNAUT), - SPECIES_TO_NATIONAL(SNORUNT), - SPECIES_TO_NATIONAL(GLALIE), - SPECIES_TO_NATIONAL(SPHEAL), - SPECIES_TO_NATIONAL(SEALEO), - SPECIES_TO_NATIONAL(WALREIN), - SPECIES_TO_NATIONAL(CLAMPERL), - SPECIES_TO_NATIONAL(HUNTAIL), - SPECIES_TO_NATIONAL(GOREBYSS), - SPECIES_TO_NATIONAL(RELICANTH), - SPECIES_TO_NATIONAL(LUVDISC), - SPECIES_TO_NATIONAL(BAGON), - SPECIES_TO_NATIONAL(SHELGON), - SPECIES_TO_NATIONAL(SALAMENCE), - SPECIES_TO_NATIONAL(BELDUM), - SPECIES_TO_NATIONAL(METANG), - SPECIES_TO_NATIONAL(METAGROSS), - SPECIES_TO_NATIONAL(REGIROCK), - SPECIES_TO_NATIONAL(REGICE), - SPECIES_TO_NATIONAL(REGISTEEL), - SPECIES_TO_NATIONAL(LATIAS), - SPECIES_TO_NATIONAL(LATIOS), - SPECIES_TO_NATIONAL(KYOGRE), - SPECIES_TO_NATIONAL(GROUDON), - SPECIES_TO_NATIONAL(RAYQUAZA), - SPECIES_TO_NATIONAL(JIRACHI), - SPECIES_TO_NATIONAL(DEOXYS), -#if P_GEN_4_POKEMON == TRUE - SPECIES_TO_NATIONAL(TURTWIG), - SPECIES_TO_NATIONAL(GROTLE), - SPECIES_TO_NATIONAL(TORTERRA), - SPECIES_TO_NATIONAL(CHIMCHAR), - SPECIES_TO_NATIONAL(MONFERNO), - SPECIES_TO_NATIONAL(INFERNAPE), - SPECIES_TO_NATIONAL(PIPLUP), - SPECIES_TO_NATIONAL(PRINPLUP), - SPECIES_TO_NATIONAL(EMPOLEON), - SPECIES_TO_NATIONAL(STARLY), - SPECIES_TO_NATIONAL(STARAVIA), - SPECIES_TO_NATIONAL(STARAPTOR), - SPECIES_TO_NATIONAL(BIDOOF), - SPECIES_TO_NATIONAL(BIBAREL), - SPECIES_TO_NATIONAL(KRICKETOT), - SPECIES_TO_NATIONAL(KRICKETUNE), - SPECIES_TO_NATIONAL(SHINX), - SPECIES_TO_NATIONAL(LUXIO), - SPECIES_TO_NATIONAL(LUXRAY), - SPECIES_TO_NATIONAL(BUDEW), - SPECIES_TO_NATIONAL(ROSERADE), - SPECIES_TO_NATIONAL(CRANIDOS), - SPECIES_TO_NATIONAL(RAMPARDOS), - SPECIES_TO_NATIONAL(SHIELDON), - SPECIES_TO_NATIONAL(BASTIODON), - SPECIES_TO_NATIONAL(BURMY), - SPECIES_TO_NATIONAL(WORMADAM), - SPECIES_TO_NATIONAL(MOTHIM), - SPECIES_TO_NATIONAL(COMBEE), - SPECIES_TO_NATIONAL(VESPIQUEN), - SPECIES_TO_NATIONAL(PACHIRISU), - SPECIES_TO_NATIONAL(BUIZEL), - SPECIES_TO_NATIONAL(FLOATZEL), - SPECIES_TO_NATIONAL(CHERUBI), - SPECIES_TO_NATIONAL(CHERRIM), - SPECIES_TO_NATIONAL(SHELLOS), - SPECIES_TO_NATIONAL(GASTRODON), - SPECIES_TO_NATIONAL(AMBIPOM), - SPECIES_TO_NATIONAL(DRIFLOON), - SPECIES_TO_NATIONAL(DRIFBLIM), - SPECIES_TO_NATIONAL(BUNEARY), - SPECIES_TO_NATIONAL(LOPUNNY), - SPECIES_TO_NATIONAL(MISMAGIUS), - SPECIES_TO_NATIONAL(HONCHKROW), - SPECIES_TO_NATIONAL(GLAMEOW), - SPECIES_TO_NATIONAL(PURUGLY), - SPECIES_TO_NATIONAL(CHINGLING), - SPECIES_TO_NATIONAL(STUNKY), - SPECIES_TO_NATIONAL(SKUNTANK), - SPECIES_TO_NATIONAL(BRONZOR), - SPECIES_TO_NATIONAL(BRONZONG), - SPECIES_TO_NATIONAL(BONSLY), - SPECIES_TO_NATIONAL(MIME_JR), - SPECIES_TO_NATIONAL(HAPPINY), - SPECIES_TO_NATIONAL(CHATOT), - SPECIES_TO_NATIONAL(SPIRITOMB), - SPECIES_TO_NATIONAL(GIBLE), - SPECIES_TO_NATIONAL(GABITE), - SPECIES_TO_NATIONAL(GARCHOMP), - SPECIES_TO_NATIONAL(MUNCHLAX), - SPECIES_TO_NATIONAL(RIOLU), - SPECIES_TO_NATIONAL(LUCARIO), - SPECIES_TO_NATIONAL(HIPPOPOTAS), - SPECIES_TO_NATIONAL(HIPPOWDON), - SPECIES_TO_NATIONAL(SKORUPI), - SPECIES_TO_NATIONAL(DRAPION), - SPECIES_TO_NATIONAL(CROAGUNK), - SPECIES_TO_NATIONAL(TOXICROAK), - SPECIES_TO_NATIONAL(CARNIVINE), - SPECIES_TO_NATIONAL(FINNEON), - SPECIES_TO_NATIONAL(LUMINEON), - SPECIES_TO_NATIONAL(MANTYKE), - SPECIES_TO_NATIONAL(SNOVER), - SPECIES_TO_NATIONAL(ABOMASNOW), - SPECIES_TO_NATIONAL(WEAVILE), - SPECIES_TO_NATIONAL(MAGNEZONE), - SPECIES_TO_NATIONAL(LICKILICKY), - SPECIES_TO_NATIONAL(RHYPERIOR), - SPECIES_TO_NATIONAL(TANGROWTH), - SPECIES_TO_NATIONAL(ELECTIVIRE), - SPECIES_TO_NATIONAL(MAGMORTAR), - SPECIES_TO_NATIONAL(TOGEKISS), - SPECIES_TO_NATIONAL(YANMEGA), - SPECIES_TO_NATIONAL(LEAFEON), - SPECIES_TO_NATIONAL(GLACEON), - SPECIES_TO_NATIONAL(GLISCOR), - SPECIES_TO_NATIONAL(MAMOSWINE), - SPECIES_TO_NATIONAL(PORYGON_Z), - SPECIES_TO_NATIONAL(GALLADE), - SPECIES_TO_NATIONAL(PROBOPASS), - SPECIES_TO_NATIONAL(DUSKNOIR), - SPECIES_TO_NATIONAL(FROSLASS), - SPECIES_TO_NATIONAL(ROTOM), - SPECIES_TO_NATIONAL(UXIE), - SPECIES_TO_NATIONAL(MESPRIT), - SPECIES_TO_NATIONAL(AZELF), - SPECIES_TO_NATIONAL(DIALGA), - SPECIES_TO_NATIONAL(PALKIA), - SPECIES_TO_NATIONAL(HEATRAN), - SPECIES_TO_NATIONAL(REGIGIGAS), - SPECIES_TO_NATIONAL(GIRATINA), - SPECIES_TO_NATIONAL(CRESSELIA), - SPECIES_TO_NATIONAL(PHIONE), - SPECIES_TO_NATIONAL(MANAPHY), - SPECIES_TO_NATIONAL(DARKRAI), - SPECIES_TO_NATIONAL(SHAYMIN), - SPECIES_TO_NATIONAL(ARCEUS), -#endif -#if P_GEN_5_POKEMON == TRUE - SPECIES_TO_NATIONAL(VICTINI), - SPECIES_TO_NATIONAL(SNIVY), - SPECIES_TO_NATIONAL(SERVINE), - SPECIES_TO_NATIONAL(SERPERIOR), - SPECIES_TO_NATIONAL(TEPIG), - SPECIES_TO_NATIONAL(PIGNITE), - SPECIES_TO_NATIONAL(EMBOAR), - SPECIES_TO_NATIONAL(OSHAWOTT), - SPECIES_TO_NATIONAL(DEWOTT), - SPECIES_TO_NATIONAL(SAMUROTT), - SPECIES_TO_NATIONAL(PATRAT), - SPECIES_TO_NATIONAL(WATCHOG), - SPECIES_TO_NATIONAL(LILLIPUP), - SPECIES_TO_NATIONAL(HERDIER), - SPECIES_TO_NATIONAL(STOUTLAND), - SPECIES_TO_NATIONAL(PURRLOIN), - SPECIES_TO_NATIONAL(LIEPARD), - SPECIES_TO_NATIONAL(PANSAGE), - SPECIES_TO_NATIONAL(SIMISAGE), - SPECIES_TO_NATIONAL(PANSEAR), - SPECIES_TO_NATIONAL(SIMISEAR), - SPECIES_TO_NATIONAL(PANPOUR), - SPECIES_TO_NATIONAL(SIMIPOUR), - SPECIES_TO_NATIONAL(MUNNA), - SPECIES_TO_NATIONAL(MUSHARNA), - SPECIES_TO_NATIONAL(PIDOVE), - SPECIES_TO_NATIONAL(TRANQUILL), - SPECIES_TO_NATIONAL(UNFEZANT), - SPECIES_TO_NATIONAL(BLITZLE), - SPECIES_TO_NATIONAL(ZEBSTRIKA), - SPECIES_TO_NATIONAL(ROGGENROLA), - SPECIES_TO_NATIONAL(BOLDORE), - SPECIES_TO_NATIONAL(GIGALITH), - SPECIES_TO_NATIONAL(WOOBAT), - SPECIES_TO_NATIONAL(SWOOBAT), - SPECIES_TO_NATIONAL(DRILBUR), - SPECIES_TO_NATIONAL(EXCADRILL), - SPECIES_TO_NATIONAL(AUDINO), - SPECIES_TO_NATIONAL(TIMBURR), - SPECIES_TO_NATIONAL(GURDURR), - SPECIES_TO_NATIONAL(CONKELDURR), - SPECIES_TO_NATIONAL(TYMPOLE), - SPECIES_TO_NATIONAL(PALPITOAD), - SPECIES_TO_NATIONAL(SEISMITOAD), - SPECIES_TO_NATIONAL(THROH), - SPECIES_TO_NATIONAL(SAWK), - SPECIES_TO_NATIONAL(SEWADDLE), - SPECIES_TO_NATIONAL(SWADLOON), - SPECIES_TO_NATIONAL(LEAVANNY), - SPECIES_TO_NATIONAL(VENIPEDE), - SPECIES_TO_NATIONAL(WHIRLIPEDE), - SPECIES_TO_NATIONAL(SCOLIPEDE), - SPECIES_TO_NATIONAL(COTTONEE), - SPECIES_TO_NATIONAL(WHIMSICOTT), - SPECIES_TO_NATIONAL(PETILIL), - SPECIES_TO_NATIONAL(LILLIGANT), - SPECIES_TO_NATIONAL(BASCULIN), - SPECIES_TO_NATIONAL(SANDILE), - SPECIES_TO_NATIONAL(KROKOROK), - SPECIES_TO_NATIONAL(KROOKODILE), - SPECIES_TO_NATIONAL(DARUMAKA), - SPECIES_TO_NATIONAL(DARMANITAN), - SPECIES_TO_NATIONAL(MARACTUS), - SPECIES_TO_NATIONAL(DWEBBLE), - SPECIES_TO_NATIONAL(CRUSTLE), - SPECIES_TO_NATIONAL(SCRAGGY), - SPECIES_TO_NATIONAL(SCRAFTY), - SPECIES_TO_NATIONAL(SIGILYPH), - SPECIES_TO_NATIONAL(YAMASK), - SPECIES_TO_NATIONAL(COFAGRIGUS), - SPECIES_TO_NATIONAL(TIRTOUGA), - SPECIES_TO_NATIONAL(CARRACOSTA), - SPECIES_TO_NATIONAL(ARCHEN), - SPECIES_TO_NATIONAL(ARCHEOPS), - SPECIES_TO_NATIONAL(TRUBBISH), - SPECIES_TO_NATIONAL(GARBODOR), - SPECIES_TO_NATIONAL(ZORUA), - SPECIES_TO_NATIONAL(ZOROARK), - SPECIES_TO_NATIONAL(MINCCINO), - SPECIES_TO_NATIONAL(CINCCINO), - SPECIES_TO_NATIONAL(GOTHITA), - SPECIES_TO_NATIONAL(GOTHORITA), - SPECIES_TO_NATIONAL(GOTHITELLE), - SPECIES_TO_NATIONAL(SOLOSIS), - SPECIES_TO_NATIONAL(DUOSION), - SPECIES_TO_NATIONAL(REUNICLUS), - SPECIES_TO_NATIONAL(DUCKLETT), - SPECIES_TO_NATIONAL(SWANNA), - SPECIES_TO_NATIONAL(VANILLITE), - SPECIES_TO_NATIONAL(VANILLISH), - SPECIES_TO_NATIONAL(VANILLUXE), - SPECIES_TO_NATIONAL(DEERLING), - SPECIES_TO_NATIONAL(SAWSBUCK), - SPECIES_TO_NATIONAL(EMOLGA), - SPECIES_TO_NATIONAL(KARRABLAST), - SPECIES_TO_NATIONAL(ESCAVALIER), - SPECIES_TO_NATIONAL(FOONGUS), - SPECIES_TO_NATIONAL(AMOONGUSS), - SPECIES_TO_NATIONAL(FRILLISH), - SPECIES_TO_NATIONAL(JELLICENT), - SPECIES_TO_NATIONAL(ALOMOMOLA), - SPECIES_TO_NATIONAL(JOLTIK), - SPECIES_TO_NATIONAL(GALVANTULA), - SPECIES_TO_NATIONAL(FERROSEED), - SPECIES_TO_NATIONAL(FERROTHORN), - SPECIES_TO_NATIONAL(KLINK), - SPECIES_TO_NATIONAL(KLANG), - SPECIES_TO_NATIONAL(KLINKLANG), - SPECIES_TO_NATIONAL(TYNAMO), - SPECIES_TO_NATIONAL(EELEKTRIK), - SPECIES_TO_NATIONAL(EELEKTROSS), - SPECIES_TO_NATIONAL(ELGYEM), - SPECIES_TO_NATIONAL(BEHEEYEM), - SPECIES_TO_NATIONAL(LITWICK), - SPECIES_TO_NATIONAL(LAMPENT), - SPECIES_TO_NATIONAL(CHANDELURE), - SPECIES_TO_NATIONAL(AXEW), - SPECIES_TO_NATIONAL(FRAXURE), - SPECIES_TO_NATIONAL(HAXORUS), - SPECIES_TO_NATIONAL(CUBCHOO), - SPECIES_TO_NATIONAL(BEARTIC), - SPECIES_TO_NATIONAL(CRYOGONAL), - SPECIES_TO_NATIONAL(SHELMET), - SPECIES_TO_NATIONAL(ACCELGOR), - SPECIES_TO_NATIONAL(STUNFISK), - SPECIES_TO_NATIONAL(MIENFOO), - SPECIES_TO_NATIONAL(MIENSHAO), - SPECIES_TO_NATIONAL(DRUDDIGON), - SPECIES_TO_NATIONAL(GOLETT), - SPECIES_TO_NATIONAL(GOLURK), - SPECIES_TO_NATIONAL(PAWNIARD), - SPECIES_TO_NATIONAL(BISHARP), - SPECIES_TO_NATIONAL(BOUFFALANT), - SPECIES_TO_NATIONAL(RUFFLET), - SPECIES_TO_NATIONAL(BRAVIARY), - SPECIES_TO_NATIONAL(VULLABY), - SPECIES_TO_NATIONAL(MANDIBUZZ), - SPECIES_TO_NATIONAL(HEATMOR), - SPECIES_TO_NATIONAL(DURANT), - SPECIES_TO_NATIONAL(DEINO), - SPECIES_TO_NATIONAL(ZWEILOUS), - SPECIES_TO_NATIONAL(HYDREIGON), - SPECIES_TO_NATIONAL(LARVESTA), - SPECIES_TO_NATIONAL(VOLCARONA), - SPECIES_TO_NATIONAL(COBALION), - SPECIES_TO_NATIONAL(TERRAKION), - SPECIES_TO_NATIONAL(VIRIZION), - SPECIES_TO_NATIONAL(TORNADUS), - SPECIES_TO_NATIONAL(THUNDURUS), - SPECIES_TO_NATIONAL(RESHIRAM), - SPECIES_TO_NATIONAL(ZEKROM), - SPECIES_TO_NATIONAL(LANDORUS), - SPECIES_TO_NATIONAL(KYUREM), - SPECIES_TO_NATIONAL(KELDEO), - SPECIES_TO_NATIONAL(MELOETTA), - SPECIES_TO_NATIONAL(GENESECT), -#endif -#if P_GEN_6_POKEMON == TRUE - SPECIES_TO_NATIONAL(CHESPIN), - SPECIES_TO_NATIONAL(QUILLADIN), - SPECIES_TO_NATIONAL(CHESNAUGHT), - SPECIES_TO_NATIONAL(FENNEKIN), - SPECIES_TO_NATIONAL(BRAIXEN), - SPECIES_TO_NATIONAL(DELPHOX), - SPECIES_TO_NATIONAL(FROAKIE), - SPECIES_TO_NATIONAL(FROGADIER), - SPECIES_TO_NATIONAL(GRENINJA), - SPECIES_TO_NATIONAL(BUNNELBY), - SPECIES_TO_NATIONAL(DIGGERSBY), - SPECIES_TO_NATIONAL(FLETCHLING), - SPECIES_TO_NATIONAL(FLETCHINDER), - SPECIES_TO_NATIONAL(TALONFLAME), - SPECIES_TO_NATIONAL(SCATTERBUG), - SPECIES_TO_NATIONAL(SPEWPA), - SPECIES_TO_NATIONAL(VIVILLON), - SPECIES_TO_NATIONAL(LITLEO), - SPECIES_TO_NATIONAL(PYROAR), - SPECIES_TO_NATIONAL(FLABEBE), - SPECIES_TO_NATIONAL(FLOETTE), - SPECIES_TO_NATIONAL(FLORGES), - SPECIES_TO_NATIONAL(SKIDDO), - SPECIES_TO_NATIONAL(GOGOAT), - SPECIES_TO_NATIONAL(PANCHAM), - SPECIES_TO_NATIONAL(PANGORO), - SPECIES_TO_NATIONAL(FURFROU), - SPECIES_TO_NATIONAL(ESPURR), - SPECIES_TO_NATIONAL(MEOWSTIC), - SPECIES_TO_NATIONAL(HONEDGE), - SPECIES_TO_NATIONAL(DOUBLADE), - SPECIES_TO_NATIONAL(AEGISLASH), - SPECIES_TO_NATIONAL(SPRITZEE), - SPECIES_TO_NATIONAL(AROMATISSE), - SPECIES_TO_NATIONAL(SWIRLIX), - SPECIES_TO_NATIONAL(SLURPUFF), - SPECIES_TO_NATIONAL(INKAY), - SPECIES_TO_NATIONAL(MALAMAR), - SPECIES_TO_NATIONAL(BINACLE), - SPECIES_TO_NATIONAL(BARBARACLE), - SPECIES_TO_NATIONAL(SKRELP), - SPECIES_TO_NATIONAL(DRAGALGE), - SPECIES_TO_NATIONAL(CLAUNCHER), - SPECIES_TO_NATIONAL(CLAWITZER), - SPECIES_TO_NATIONAL(HELIOPTILE), - SPECIES_TO_NATIONAL(HELIOLISK), - SPECIES_TO_NATIONAL(TYRUNT), - SPECIES_TO_NATIONAL(TYRANTRUM), - SPECIES_TO_NATIONAL(AMAURA), - SPECIES_TO_NATIONAL(AURORUS), - SPECIES_TO_NATIONAL(SYLVEON), - SPECIES_TO_NATIONAL(HAWLUCHA), - SPECIES_TO_NATIONAL(DEDENNE), - SPECIES_TO_NATIONAL(CARBINK), - SPECIES_TO_NATIONAL(GOOMY), - SPECIES_TO_NATIONAL(SLIGGOO), - SPECIES_TO_NATIONAL(GOODRA), - SPECIES_TO_NATIONAL(KLEFKI), - SPECIES_TO_NATIONAL(PHANTUMP), - SPECIES_TO_NATIONAL(TREVENANT), - SPECIES_TO_NATIONAL(PUMPKABOO), - SPECIES_TO_NATIONAL(GOURGEIST), - SPECIES_TO_NATIONAL(BERGMITE), - SPECIES_TO_NATIONAL(AVALUGG), - SPECIES_TO_NATIONAL(NOIBAT), - SPECIES_TO_NATIONAL(NOIVERN), - SPECIES_TO_NATIONAL(XERNEAS), - SPECIES_TO_NATIONAL(YVELTAL), - SPECIES_TO_NATIONAL(ZYGARDE), - SPECIES_TO_NATIONAL(DIANCIE), - SPECIES_TO_NATIONAL(HOOPA), - SPECIES_TO_NATIONAL(VOLCANION), -#endif -#if P_GEN_7_POKEMON == TRUE - SPECIES_TO_NATIONAL(ROWLET), - SPECIES_TO_NATIONAL(DARTRIX), - SPECIES_TO_NATIONAL(DECIDUEYE), - SPECIES_TO_NATIONAL(LITTEN), - SPECIES_TO_NATIONAL(TORRACAT), - SPECIES_TO_NATIONAL(INCINEROAR), - SPECIES_TO_NATIONAL(POPPLIO), - SPECIES_TO_NATIONAL(BRIONNE), - SPECIES_TO_NATIONAL(PRIMARINA), - SPECIES_TO_NATIONAL(PIKIPEK), - SPECIES_TO_NATIONAL(TRUMBEAK), - SPECIES_TO_NATIONAL(TOUCANNON), - SPECIES_TO_NATIONAL(YUNGOOS), - SPECIES_TO_NATIONAL(GUMSHOOS), - SPECIES_TO_NATIONAL(GRUBBIN), - SPECIES_TO_NATIONAL(CHARJABUG), - SPECIES_TO_NATIONAL(VIKAVOLT), - SPECIES_TO_NATIONAL(CRABRAWLER), - SPECIES_TO_NATIONAL(CRABOMINABLE), - SPECIES_TO_NATIONAL(ORICORIO), - SPECIES_TO_NATIONAL(CUTIEFLY), - SPECIES_TO_NATIONAL(RIBOMBEE), - SPECIES_TO_NATIONAL(ROCKRUFF), - SPECIES_TO_NATIONAL(LYCANROC), - SPECIES_TO_NATIONAL(WISHIWASHI), - SPECIES_TO_NATIONAL(MAREANIE), - SPECIES_TO_NATIONAL(TOXAPEX), - SPECIES_TO_NATIONAL(MUDBRAY), - SPECIES_TO_NATIONAL(MUDSDALE), - SPECIES_TO_NATIONAL(DEWPIDER), - SPECIES_TO_NATIONAL(ARAQUANID), - SPECIES_TO_NATIONAL(FOMANTIS), - SPECIES_TO_NATIONAL(LURANTIS), - SPECIES_TO_NATIONAL(MORELULL), - SPECIES_TO_NATIONAL(SHIINOTIC), - SPECIES_TO_NATIONAL(SALANDIT), - SPECIES_TO_NATIONAL(SALAZZLE), - SPECIES_TO_NATIONAL(STUFFUL), - SPECIES_TO_NATIONAL(BEWEAR), - SPECIES_TO_NATIONAL(BOUNSWEET), - SPECIES_TO_NATIONAL(STEENEE), - SPECIES_TO_NATIONAL(TSAREENA), - SPECIES_TO_NATIONAL(COMFEY), - SPECIES_TO_NATIONAL(ORANGURU), - SPECIES_TO_NATIONAL(PASSIMIAN), - SPECIES_TO_NATIONAL(WIMPOD), - SPECIES_TO_NATIONAL(GOLISOPOD), - SPECIES_TO_NATIONAL(SANDYGAST), - SPECIES_TO_NATIONAL(PALOSSAND), - SPECIES_TO_NATIONAL(PYUKUMUKU), - SPECIES_TO_NATIONAL(TYPE_NULL), - SPECIES_TO_NATIONAL(SILVALLY), - SPECIES_TO_NATIONAL(MINIOR), - SPECIES_TO_NATIONAL(KOMALA), - SPECIES_TO_NATIONAL(TURTONATOR), - SPECIES_TO_NATIONAL(TOGEDEMARU), - SPECIES_TO_NATIONAL(MIMIKYU), - SPECIES_TO_NATIONAL(BRUXISH), - SPECIES_TO_NATIONAL(DRAMPA), - SPECIES_TO_NATIONAL(DHELMISE), - SPECIES_TO_NATIONAL(JANGMO_O), - SPECIES_TO_NATIONAL(HAKAMO_O), - SPECIES_TO_NATIONAL(KOMMO_O), - SPECIES_TO_NATIONAL(TAPU_KOKO), - SPECIES_TO_NATIONAL(TAPU_LELE), - SPECIES_TO_NATIONAL(TAPU_BULU), - SPECIES_TO_NATIONAL(TAPU_FINI), - SPECIES_TO_NATIONAL(COSMOG), - SPECIES_TO_NATIONAL(COSMOEM), - SPECIES_TO_NATIONAL(SOLGALEO), - SPECIES_TO_NATIONAL(LUNALA), - SPECIES_TO_NATIONAL(NIHILEGO), - SPECIES_TO_NATIONAL(BUZZWOLE), - SPECIES_TO_NATIONAL(PHEROMOSA), - SPECIES_TO_NATIONAL(XURKITREE), - SPECIES_TO_NATIONAL(CELESTEELA), - SPECIES_TO_NATIONAL(KARTANA), - SPECIES_TO_NATIONAL(GUZZLORD), - SPECIES_TO_NATIONAL(NECROZMA), - SPECIES_TO_NATIONAL(MAGEARNA), - SPECIES_TO_NATIONAL(MARSHADOW), - SPECIES_TO_NATIONAL(POIPOLE), - SPECIES_TO_NATIONAL(NAGANADEL), - SPECIES_TO_NATIONAL(STAKATAKA), - SPECIES_TO_NATIONAL(BLACEPHALON), - SPECIES_TO_NATIONAL(ZERAORA), - SPECIES_TO_NATIONAL(MELTAN), - SPECIES_TO_NATIONAL(MELMETAL), -#endif -#if P_GEN_8_POKEMON == TRUE - SPECIES_TO_NATIONAL(GROOKEY), - SPECIES_TO_NATIONAL(THWACKEY), - SPECIES_TO_NATIONAL(RILLABOOM), - SPECIES_TO_NATIONAL(SCORBUNNY), - SPECIES_TO_NATIONAL(RABOOT), - SPECIES_TO_NATIONAL(CINDERACE), - SPECIES_TO_NATIONAL(SOBBLE), - SPECIES_TO_NATIONAL(DRIZZILE), - SPECIES_TO_NATIONAL(INTELEON), - SPECIES_TO_NATIONAL(SKWOVET), - SPECIES_TO_NATIONAL(GREEDENT), - SPECIES_TO_NATIONAL(ROOKIDEE), - SPECIES_TO_NATIONAL(CORVISQUIRE), - SPECIES_TO_NATIONAL(CORVIKNIGHT), - SPECIES_TO_NATIONAL(BLIPBUG), - SPECIES_TO_NATIONAL(DOTTLER), - SPECIES_TO_NATIONAL(ORBEETLE), - SPECIES_TO_NATIONAL(NICKIT), - SPECIES_TO_NATIONAL(THIEVUL), - SPECIES_TO_NATIONAL(GOSSIFLEUR), - SPECIES_TO_NATIONAL(ELDEGOSS), - SPECIES_TO_NATIONAL(WOOLOO), - SPECIES_TO_NATIONAL(DUBWOOL), - SPECIES_TO_NATIONAL(CHEWTLE), - SPECIES_TO_NATIONAL(DREDNAW), - SPECIES_TO_NATIONAL(YAMPER), - SPECIES_TO_NATIONAL(BOLTUND), - SPECIES_TO_NATIONAL(ROLYCOLY), - SPECIES_TO_NATIONAL(CARKOL), - SPECIES_TO_NATIONAL(COALOSSAL), - SPECIES_TO_NATIONAL(APPLIN), - SPECIES_TO_NATIONAL(FLAPPLE), - SPECIES_TO_NATIONAL(APPLETUN), - SPECIES_TO_NATIONAL(SILICOBRA), - SPECIES_TO_NATIONAL(SANDACONDA), - SPECIES_TO_NATIONAL(CRAMORANT), - SPECIES_TO_NATIONAL(ARROKUDA), - SPECIES_TO_NATIONAL(BARRASKEWDA), - SPECIES_TO_NATIONAL(TOXEL), - SPECIES_TO_NATIONAL(TOXTRICITY), - SPECIES_TO_NATIONAL(SIZZLIPEDE), - SPECIES_TO_NATIONAL(CENTISKORCH), - SPECIES_TO_NATIONAL(CLOBBOPUS), - SPECIES_TO_NATIONAL(GRAPPLOCT), - SPECIES_TO_NATIONAL(SINISTEA), - SPECIES_TO_NATIONAL(POLTEAGEIST), - SPECIES_TO_NATIONAL(HATENNA), - SPECIES_TO_NATIONAL(HATTREM), - SPECIES_TO_NATIONAL(HATTERENE), - SPECIES_TO_NATIONAL(IMPIDIMP), - SPECIES_TO_NATIONAL(MORGREM), - SPECIES_TO_NATIONAL(GRIMMSNARL), - SPECIES_TO_NATIONAL(OBSTAGOON), - SPECIES_TO_NATIONAL(PERRSERKER), - SPECIES_TO_NATIONAL(CURSOLA), - SPECIES_TO_NATIONAL(SIRFETCHD), - SPECIES_TO_NATIONAL(MR_RIME), - SPECIES_TO_NATIONAL(RUNERIGUS), - SPECIES_TO_NATIONAL(MILCERY), - SPECIES_TO_NATIONAL(ALCREMIE), - SPECIES_TO_NATIONAL(FALINKS), - SPECIES_TO_NATIONAL(PINCURCHIN), - SPECIES_TO_NATIONAL(SNOM), - SPECIES_TO_NATIONAL(FROSMOTH), - SPECIES_TO_NATIONAL(STONJOURNER), - SPECIES_TO_NATIONAL(EISCUE), - SPECIES_TO_NATIONAL(INDEEDEE), - SPECIES_TO_NATIONAL(MORPEKO), - SPECIES_TO_NATIONAL(CUFANT), - SPECIES_TO_NATIONAL(COPPERAJAH), - SPECIES_TO_NATIONAL(DRACOZOLT), - SPECIES_TO_NATIONAL(ARCTOZOLT), - SPECIES_TO_NATIONAL(DRACOVISH), - SPECIES_TO_NATIONAL(ARCTOVISH), - SPECIES_TO_NATIONAL(DURALUDON), - SPECIES_TO_NATIONAL(DREEPY), - SPECIES_TO_NATIONAL(DRAKLOAK), - SPECIES_TO_NATIONAL(DRAGAPULT), - SPECIES_TO_NATIONAL(ZACIAN), - SPECIES_TO_NATIONAL(ZAMAZENTA), - SPECIES_TO_NATIONAL(ETERNATUS), - SPECIES_TO_NATIONAL(KUBFU), - SPECIES_TO_NATIONAL(URSHIFU), - SPECIES_TO_NATIONAL(ZARUDE), - SPECIES_TO_NATIONAL(REGIELEKI), - SPECIES_TO_NATIONAL(REGIDRAGO), - SPECIES_TO_NATIONAL(GLASTRIER), - SPECIES_TO_NATIONAL(SPECTRIER), - SPECIES_TO_NATIONAL(CALYREX), - SPECIES_TO_NATIONAL(WYRDEER), - SPECIES_TO_NATIONAL(KLEAVOR), - SPECIES_TO_NATIONAL(URSALUNA), - SPECIES_TO_NATIONAL(BASCULEGION), - SPECIES_TO_NATIONAL(SNEASLER), - SPECIES_TO_NATIONAL(OVERQWIL), - SPECIES_TO_NATIONAL(ENAMORUS), -#endif - - // Megas - [SPECIES_VENUSAUR_MEGA - 1] = NATIONAL_DEX_VENUSAUR, - [SPECIES_CHARIZARD_MEGA_X - 1] = NATIONAL_DEX_CHARIZARD, - [SPECIES_CHARIZARD_MEGA_Y - 1] = NATIONAL_DEX_CHARIZARD, - [SPECIES_BLASTOISE_MEGA - 1] = NATIONAL_DEX_BLASTOISE, - [SPECIES_BEEDRILL_MEGA - 1] = NATIONAL_DEX_BEEDRILL, - [SPECIES_PIDGEOT_MEGA - 1] = NATIONAL_DEX_PIDGEOT, - [SPECIES_ALAKAZAM_MEGA - 1] = NATIONAL_DEX_ALAKAZAM, - [SPECIES_SLOWBRO_MEGA - 1] = NATIONAL_DEX_SLOWBRO, - [SPECIES_GENGAR_MEGA - 1] = NATIONAL_DEX_GENGAR, - [SPECIES_KANGASKHAN_MEGA - 1] = NATIONAL_DEX_KANGASKHAN, - [SPECIES_PINSIR_MEGA - 1] = NATIONAL_DEX_PINSIR, - [SPECIES_GYARADOS_MEGA - 1] = NATIONAL_DEX_GYARADOS, - [SPECIES_AERODACTYL_MEGA - 1] = NATIONAL_DEX_AERODACTYL, - [SPECIES_MEWTWO_MEGA_X - 1] = NATIONAL_DEX_MEWTWO, - [SPECIES_MEWTWO_MEGA_Y - 1] = NATIONAL_DEX_MEWTWO, - [SPECIES_AMPHAROS_MEGA - 1] = NATIONAL_DEX_AMPHAROS, - [SPECIES_STEELIX_MEGA - 1] = NATIONAL_DEX_STEELIX, - [SPECIES_SCIZOR_MEGA - 1] = NATIONAL_DEX_SCIZOR, - [SPECIES_HERACROSS_MEGA - 1] = NATIONAL_DEX_HERACROSS, - [SPECIES_HOUNDOOM_MEGA - 1] = NATIONAL_DEX_HOUNDOOM, - [SPECIES_TYRANITAR_MEGA - 1] = NATIONAL_DEX_TYRANITAR, - [SPECIES_SCEPTILE_MEGA - 1] = NATIONAL_DEX_SCEPTILE, - [SPECIES_BLAZIKEN_MEGA - 1] = NATIONAL_DEX_BLAZIKEN, - [SPECIES_SWAMPERT_MEGA - 1] = NATIONAL_DEX_SWAMPERT, - [SPECIES_GARDEVOIR_MEGA - 1] = NATIONAL_DEX_GARDEVOIR, - [SPECIES_SABLEYE_MEGA - 1] = NATIONAL_DEX_SABLEYE, - [SPECIES_MAWILE_MEGA - 1] = NATIONAL_DEX_MAWILE, - [SPECIES_AGGRON_MEGA - 1] = NATIONAL_DEX_AGGRON, - [SPECIES_MEDICHAM_MEGA - 1] = NATIONAL_DEX_MEDICHAM, - [SPECIES_MANECTRIC_MEGA - 1] = NATIONAL_DEX_MANECTRIC, - [SPECIES_SHARPEDO_MEGA - 1] = NATIONAL_DEX_SHARPEDO, - [SPECIES_CAMERUPT_MEGA - 1] = NATIONAL_DEX_CAMERUPT, - [SPECIES_ALTARIA_MEGA - 1] = NATIONAL_DEX_ALTARIA, - [SPECIES_BANETTE_MEGA - 1] = NATIONAL_DEX_BANETTE, - [SPECIES_ABSOL_MEGA - 1] = NATIONAL_DEX_ABSOL, - [SPECIES_GLALIE_MEGA - 1] = NATIONAL_DEX_GLALIE, - [SPECIES_SALAMENCE_MEGA - 1] = NATIONAL_DEX_SALAMENCE, - [SPECIES_METAGROSS_MEGA - 1] = NATIONAL_DEX_METAGROSS, - [SPECIES_LATIAS_MEGA - 1] = NATIONAL_DEX_LATIAS, - [SPECIES_LATIOS_MEGA - 1] = NATIONAL_DEX_LATIOS, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_LOPUNNY_MEGA - 1] = NATIONAL_DEX_LOPUNNY, - [SPECIES_GARCHOMP_MEGA - 1] = NATIONAL_DEX_GARCHOMP, - [SPECIES_LUCARIO_MEGA - 1] = NATIONAL_DEX_LUCARIO, - [SPECIES_ABOMASNOW_MEGA - 1] = NATIONAL_DEX_ABOMASNOW, - [SPECIES_GALLADE_MEGA - 1] = NATIONAL_DEX_GALLADE, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_AUDINO_MEGA - 1] = NATIONAL_DEX_AUDINO, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_DIANCIE_MEGA - 1] = NATIONAL_DEX_DIANCIE, -#endif - // Special Mega + Primals - [SPECIES_RAYQUAZA_MEGA - 1] = NATIONAL_DEX_RAYQUAZA, - [SPECIES_KYOGRE_PRIMAL - 1] = NATIONAL_DEX_KYOGRE, - [SPECIES_GROUDON_PRIMAL - 1] = NATIONAL_DEX_GROUDON, - // Alolan Forms - [SPECIES_RATTATA_ALOLAN - 1] = NATIONAL_DEX_RATTATA, - [SPECIES_RATICATE_ALOLAN - 1] = NATIONAL_DEX_RATICATE, - [SPECIES_RAICHU_ALOLAN - 1] = NATIONAL_DEX_RAICHU, - [SPECIES_SANDSHREW_ALOLAN - 1] = NATIONAL_DEX_SANDSHREW, - [SPECIES_SANDSLASH_ALOLAN - 1] = NATIONAL_DEX_SANDSLASH, - [SPECIES_VULPIX_ALOLAN - 1] = NATIONAL_DEX_VULPIX, - [SPECIES_NINETALES_ALOLAN - 1] = NATIONAL_DEX_NINETALES, - [SPECIES_DIGLETT_ALOLAN - 1] = NATIONAL_DEX_DIGLETT, - [SPECIES_DUGTRIO_ALOLAN - 1] = NATIONAL_DEX_DUGTRIO, - [SPECIES_MEOWTH_ALOLAN - 1] = NATIONAL_DEX_MEOWTH, - [SPECIES_PERSIAN_ALOLAN - 1] = NATIONAL_DEX_PERSIAN, - [SPECIES_GEODUDE_ALOLAN - 1] = NATIONAL_DEX_GEODUDE, - [SPECIES_GRAVELER_ALOLAN - 1] = NATIONAL_DEX_GRAVELER, - [SPECIES_GOLEM_ALOLAN - 1] = NATIONAL_DEX_GOLEM, - [SPECIES_GRIMER_ALOLAN - 1] = NATIONAL_DEX_GRIMER, - [SPECIES_MUK_ALOLAN - 1] = NATIONAL_DEX_MUK, - [SPECIES_EXEGGUTOR_ALOLAN - 1] = NATIONAL_DEX_EXEGGUTOR, - [SPECIES_MAROWAK_ALOLAN - 1] = NATIONAL_DEX_MAROWAK, - // Galarian Forms - [SPECIES_MEOWTH_GALARIAN - 1] = NATIONAL_DEX_MEOWTH, - [SPECIES_PONYTA_GALARIAN - 1] = NATIONAL_DEX_PONYTA, - [SPECIES_RAPIDASH_GALARIAN - 1] = NATIONAL_DEX_RAPIDASH, - [SPECIES_SLOWPOKE_GALARIAN - 1] = NATIONAL_DEX_SLOWPOKE, - [SPECIES_SLOWBRO_GALARIAN - 1] = NATIONAL_DEX_SLOWBRO, - [SPECIES_FARFETCHD_GALARIAN - 1] = NATIONAL_DEX_FARFETCHD, - [SPECIES_WEEZING_GALARIAN - 1] = NATIONAL_DEX_WEEZING, - [SPECIES_MR_MIME_GALARIAN - 1] = NATIONAL_DEX_MR_MIME, - [SPECIES_ARTICUNO_GALARIAN - 1] = NATIONAL_DEX_ARTICUNO, - [SPECIES_ZAPDOS_GALARIAN - 1] = NATIONAL_DEX_ZAPDOS, - [SPECIES_MOLTRES_GALARIAN - 1] = NATIONAL_DEX_MOLTRES, - [SPECIES_SLOWKING_GALARIAN - 1] = NATIONAL_DEX_SLOWKING, - [SPECIES_CORSOLA_GALARIAN - 1] = NATIONAL_DEX_CORSOLA, - [SPECIES_ZIGZAGOON_GALARIAN - 1] = NATIONAL_DEX_ZIGZAGOON, - [SPECIES_LINOONE_GALARIAN - 1] = NATIONAL_DEX_LINOONE, -#if P_GEN_5_POKEMON == TRUE - [SPECIES_DARUMAKA_GALARIAN - 1] = NATIONAL_DEX_DARUMAKA, - [SPECIES_DARMANITAN_GALARIAN - 1] = NATIONAL_DEX_DARMANITAN, - [SPECIES_YAMASK_GALARIAN - 1] = NATIONAL_DEX_YAMASK, - [SPECIES_STUNFISK_GALARIAN - 1] = NATIONAL_DEX_STUNFISK, -#endif -//Hisuian Forms - [SPECIES_GROWLITHE_HISUIAN - 1] = NATIONAL_DEX_GROWLITHE, - [SPECIES_ARCANINE_HISUIAN - 1] = NATIONAL_DEX_ARCANINE, - [SPECIES_VOLTORB_HISUIAN - 1] = NATIONAL_DEX_VOLTORB, - [SPECIES_ELECTRODE_HISUIAN - 1] = NATIONAL_DEX_ELECTRODE, - [SPECIES_TYPHLOSION_HISUIAN - 1] = NATIONAL_DEX_TYPHLOSION, - [SPECIES_QWILFISH_HISUIAN - 1] = NATIONAL_DEX_QWILFISH, - [SPECIES_SNEASEL_HISUIAN - 1] = NATIONAL_DEX_SNEASEL, -#if P_GEN_5_POKEMON == TRUE - [SPECIES_SAMUROTT_HISUIAN - 1] = NATIONAL_DEX_SAMUROTT, - [SPECIES_LILLIGANT_HISUIAN - 1] = NATIONAL_DEX_LILLIGANT, - [SPECIES_ZORUA_HISUIAN - 1] = NATIONAL_DEX_ZORUA, - [SPECIES_ZOROARK_HISUIAN - 1] = NATIONAL_DEX_ZOROARK, - [SPECIES_BRAVIARY_HISUIAN - 1] = NATIONAL_DEX_BRAVIARY, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_SLIGGOO_HISUIAN - 1] = NATIONAL_DEX_SLIGGOO, - [SPECIES_GOODRA_HISUIAN - 1] = NATIONAL_DEX_GOODRA, - [SPECIES_AVALUGG_HISUIAN - 1] = NATIONAL_DEX_AVALUGG, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_DECIDUEYE_HISUIAN - 1] = NATIONAL_DEX_DECIDUEYE, -#endif - // Cosplay Pikachu - [SPECIES_PIKACHU_COSPLAY - 1] = NATIONAL_DEX_PIKACHU, - [SPECIES_PIKACHU_ROCK_STAR - 1] = NATIONAL_DEX_PIKACHU, - [SPECIES_PIKACHU_BELLE - 1] = NATIONAL_DEX_PIKACHU, - [SPECIES_PIKACHU_POP_STAR - 1] = NATIONAL_DEX_PIKACHU, - [SPECIES_PIKACHU_PH_D - 1] = NATIONAL_DEX_PIKACHU, - [SPECIES_PIKACHU_LIBRE - 1] = NATIONAL_DEX_PIKACHU, - // Cap Pikachu - [SPECIES_PIKACHU_ORIGINAL_CAP - 1] = NATIONAL_DEX_PIKACHU, - [SPECIES_PIKACHU_HOENN_CAP - 1] = NATIONAL_DEX_PIKACHU, - [SPECIES_PIKACHU_SINNOH_CAP - 1] = NATIONAL_DEX_PIKACHU, - [SPECIES_PIKACHU_UNOVA_CAP - 1] = NATIONAL_DEX_PIKACHU, - [SPECIES_PIKACHU_KALOS_CAP - 1] = NATIONAL_DEX_PIKACHU, - [SPECIES_PIKACHU_ALOLA_CAP - 1] = NATIONAL_DEX_PIKACHU, - [SPECIES_PIKACHU_PARTNER_CAP - 1] = NATIONAL_DEX_PIKACHU, - [SPECIES_PIKACHU_WORLD_CAP - 1] = NATIONAL_DEX_PIKACHU, - // Pichu - [SPECIES_PICHU_SPIKY_EARED - 1] = NATIONAL_DEX_PICHU, - // Unown - [SPECIES_UNOWN_B - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_C - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_D - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_E - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_F - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_G - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_H - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_I - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_J - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_K - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_L - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_M - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_N - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_O - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_P - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_Q - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_R - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_S - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_T - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_U - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_V - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_W - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_X - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_Y - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_Z - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_QMARK - 1] = NATIONAL_DEX_UNOWN, - [SPECIES_UNOWN_EMARK - 1] = NATIONAL_DEX_UNOWN, - // Castform - [SPECIES_CASTFORM_SUNNY - 1] = NATIONAL_DEX_CASTFORM, - [SPECIES_CASTFORM_RAINY - 1] = NATIONAL_DEX_CASTFORM, - [SPECIES_CASTFORM_SNOWY - 1] = NATIONAL_DEX_CASTFORM, - // Deoxys - [SPECIES_DEOXYS_ATTACK - 1] = NATIONAL_DEX_DEOXYS, - [SPECIES_DEOXYS_DEFENSE - 1] = NATIONAL_DEX_DEOXYS, - [SPECIES_DEOXYS_SPEED - 1] = NATIONAL_DEX_DEOXYS, -#if P_GEN_4_POKEMON == TRUE - // Burmy - [SPECIES_BURMY_SANDY_CLOAK - 1] = NATIONAL_DEX_BURMY, - [SPECIES_BURMY_TRASH_CLOAK - 1] = NATIONAL_DEX_BURMY, - // Wormadam - [SPECIES_WORMADAM_SANDY_CLOAK - 1] = NATIONAL_DEX_WORMADAM, - [SPECIES_WORMADAM_TRASH_CLOAK - 1] = NATIONAL_DEX_WORMADAM, - // Cherrim - [SPECIES_CHERRIM_SUNSHINE - 1] = NATIONAL_DEX_CHERRIM, - // Shellos - [SPECIES_SHELLOS_EAST_SEA - 1] = NATIONAL_DEX_SHELLOS, - // Gastrodon - [SPECIES_GASTRODON_EAST_SEA - 1] = NATIONAL_DEX_GASTRODON, - // Rotom - [SPECIES_ROTOM_HEAT - 1] = NATIONAL_DEX_ROTOM, - [SPECIES_ROTOM_WASH - 1] = NATIONAL_DEX_ROTOM, - [SPECIES_ROTOM_FROST - 1] = NATIONAL_DEX_ROTOM, - [SPECIES_ROTOM_FAN - 1] = NATIONAL_DEX_ROTOM, - [SPECIES_ROTOM_MOW - 1] = NATIONAL_DEX_ROTOM, - // Origin Forme - [SPECIES_DIALGA_ORIGIN - 1] = NATIONAL_DEX_DIALGA, - [SPECIES_PALKIA_ORIGIN - 1] = NATIONAL_DEX_PALKIA, - [SPECIES_GIRATINA_ORIGIN - 1] = NATIONAL_DEX_GIRATINA, - // Shaymin - [SPECIES_SHAYMIN_SKY - 1] = NATIONAL_DEX_SHAYMIN, - // Arceus - [SPECIES_ARCEUS_FIGHTING - 1] = NATIONAL_DEX_ARCEUS, - [SPECIES_ARCEUS_FLYING - 1] = NATIONAL_DEX_ARCEUS, - [SPECIES_ARCEUS_POISON - 1] = NATIONAL_DEX_ARCEUS, - [SPECIES_ARCEUS_GROUND - 1] = NATIONAL_DEX_ARCEUS, - [SPECIES_ARCEUS_ROCK - 1] = NATIONAL_DEX_ARCEUS, - [SPECIES_ARCEUS_BUG - 1] = NATIONAL_DEX_ARCEUS, - [SPECIES_ARCEUS_GHOST - 1] = NATIONAL_DEX_ARCEUS, - [SPECIES_ARCEUS_STEEL - 1] = NATIONAL_DEX_ARCEUS, - [SPECIES_ARCEUS_FIRE - 1] = NATIONAL_DEX_ARCEUS, - [SPECIES_ARCEUS_WATER - 1] = NATIONAL_DEX_ARCEUS, - [SPECIES_ARCEUS_GRASS - 1] = NATIONAL_DEX_ARCEUS, - [SPECIES_ARCEUS_ELECTRIC - 1] = NATIONAL_DEX_ARCEUS, - [SPECIES_ARCEUS_PSYCHIC - 1] = NATIONAL_DEX_ARCEUS, - [SPECIES_ARCEUS_ICE - 1] = NATIONAL_DEX_ARCEUS, - [SPECIES_ARCEUS_DRAGON - 1] = NATIONAL_DEX_ARCEUS, - [SPECIES_ARCEUS_DARK - 1] = NATIONAL_DEX_ARCEUS, - [SPECIES_ARCEUS_FAIRY - 1] = NATIONAL_DEX_ARCEUS, -#endif -#if P_GEN_5_POKEMON == TRUE - // Basculin - [SPECIES_BASCULIN_BLUE_STRIPED - 1] = NATIONAL_DEX_BASCULIN, - [SPECIES_BASCULIN_WHITE_STRIPED - 1] = NATIONAL_DEX_BASCULIN, - // Darmanitan - [SPECIES_DARMANITAN_ZEN_MODE - 1] = NATIONAL_DEX_DARMANITAN, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN - 1] = NATIONAL_DEX_DARMANITAN, - // Deerling - [SPECIES_DEERLING_SUMMER - 1] = NATIONAL_DEX_DEERLING, - [SPECIES_DEERLING_AUTUMN - 1] = NATIONAL_DEX_DEERLING, - [SPECIES_DEERLING_WINTER - 1] = NATIONAL_DEX_DEERLING, - // Sawsbuck - [SPECIES_SAWSBUCK_SUMMER - 1] = NATIONAL_DEX_SAWSBUCK, - [SPECIES_SAWSBUCK_AUTUMN - 1] = NATIONAL_DEX_SAWSBUCK, - [SPECIES_SAWSBUCK_WINTER - 1] = NATIONAL_DEX_SAWSBUCK, - // Therian Forms - [SPECIES_TORNADUS_THERIAN - 1] = NATIONAL_DEX_TORNADUS, - [SPECIES_THUNDURUS_THERIAN - 1] = NATIONAL_DEX_THUNDURUS, - [SPECIES_LANDORUS_THERIAN - 1] = NATIONAL_DEX_LANDORUS, - // Kyurem - [SPECIES_KYUREM_BLACK - 1] = NATIONAL_DEX_KYUREM, - [SPECIES_KYUREM_WHITE - 1] = NATIONAL_DEX_KYUREM, - // Keldeo - [SPECIES_KELDEO_RESOLUTE - 1] = NATIONAL_DEX_KELDEO, - // Meloetta - [SPECIES_MELOETTA_PIROUETTE - 1] = NATIONAL_DEX_MELOETTA, - // Genesect - [SPECIES_GENESECT_DOUSE_DRIVE - 1] = NATIONAL_DEX_GENESECT, - [SPECIES_GENESECT_SHOCK_DRIVE - 1] = NATIONAL_DEX_GENESECT, - [SPECIES_GENESECT_BURN_DRIVE - 1] = NATIONAL_DEX_GENESECT, - [SPECIES_GENESECT_CHILL_DRIVE - 1] = NATIONAL_DEX_GENESECT, -#endif -#if P_GEN_6_POKEMON == TRUE - // Greninja - [SPECIES_GRENINJA_BATTLE_BOND - 1] = NATIONAL_DEX_GRENINJA, - [SPECIES_GRENINJA_ASH - 1] = NATIONAL_DEX_GRENINJA, - // Vivillon - [SPECIES_VIVILLON_POLAR - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_TUNDRA - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_CONTINENTAL - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_GARDEN - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_ELEGANT - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_MEADOW - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_MODERN - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_MARINE - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_ARCHIPELAGO - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_HIGH_PLAINS - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_SANDSTORM - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_RIVER - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_MONSOON - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_SAVANNA - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_SUN - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_OCEAN - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_JUNGLE - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_FANCY - 1] = NATIONAL_DEX_VIVILLON, - [SPECIES_VIVILLON_POKE_BALL - 1] = NATIONAL_DEX_VIVILLON, - // Flabébé - [SPECIES_FLABEBE_YELLOW_FLOWER - 1] = NATIONAL_DEX_FLABEBE, - [SPECIES_FLABEBE_ORANGE_FLOWER - 1] = NATIONAL_DEX_FLABEBE, - [SPECIES_FLABEBE_BLUE_FLOWER - 1] = NATIONAL_DEX_FLABEBE, - [SPECIES_FLABEBE_WHITE_FLOWER - 1] = NATIONAL_DEX_FLABEBE, - // Floette - [SPECIES_FLOETTE_YELLOW_FLOWER - 1] = NATIONAL_DEX_FLOETTE, - [SPECIES_FLOETTE_ORANGE_FLOWER - 1] = NATIONAL_DEX_FLOETTE, - [SPECIES_FLOETTE_BLUE_FLOWER - 1] = NATIONAL_DEX_FLOETTE, - [SPECIES_FLOETTE_WHITE_FLOWER - 1] = NATIONAL_DEX_FLOETTE, - [SPECIES_FLOETTE_ETERNAL_FLOWER - 1] = NATIONAL_DEX_FLOETTE, - // Florges - [SPECIES_FLORGES_YELLOW_FLOWER - 1] = NATIONAL_DEX_FLORGES, - [SPECIES_FLORGES_ORANGE_FLOWER - 1] = NATIONAL_DEX_FLORGES, - [SPECIES_FLORGES_BLUE_FLOWER - 1] = NATIONAL_DEX_FLORGES, - [SPECIES_FLORGES_WHITE_FLOWER - 1] = NATIONAL_DEX_FLORGES, - // Furfrou - [SPECIES_FURFROU_HEART_TRIM - 1] = NATIONAL_DEX_FURFROU, - [SPECIES_FURFROU_STAR_TRIM - 1] = NATIONAL_DEX_FURFROU, - [SPECIES_FURFROU_DIAMOND_TRIM - 1] = NATIONAL_DEX_FURFROU, - [SPECIES_FURFROU_DEBUTANTE_TRIM - 1] = NATIONAL_DEX_FURFROU, - [SPECIES_FURFROU_MATRON_TRIM - 1] = NATIONAL_DEX_FURFROU, - [SPECIES_FURFROU_DANDY_TRIM - 1] = NATIONAL_DEX_FURFROU, - [SPECIES_FURFROU_LA_REINE_TRIM - 1] = NATIONAL_DEX_FURFROU, - [SPECIES_FURFROU_KABUKI_TRIM - 1] = NATIONAL_DEX_FURFROU, - [SPECIES_FURFROU_PHARAOH_TRIM - 1] = NATIONAL_DEX_FURFROU, - // Meowstic - [SPECIES_MEOWSTIC_FEMALE - 1] = NATIONAL_DEX_MEOWSTIC, - // Aegislash - [SPECIES_AEGISLASH_BLADE - 1] = NATIONAL_DEX_AEGISLASH, - // Pumpkaboo - [SPECIES_PUMPKABOO_SMALL - 1] = NATIONAL_DEX_PUMPKABOO, - [SPECIES_PUMPKABOO_LARGE - 1] = NATIONAL_DEX_PUMPKABOO, - [SPECIES_PUMPKABOO_SUPER - 1] = NATIONAL_DEX_PUMPKABOO, - // Gourgeist - [SPECIES_GOURGEIST_SMALL - 1] = NATIONAL_DEX_GOURGEIST, - [SPECIES_GOURGEIST_LARGE - 1] = NATIONAL_DEX_GOURGEIST, - [SPECIES_GOURGEIST_SUPER - 1] = NATIONAL_DEX_GOURGEIST, - // Xerneas - [SPECIES_XERNEAS_ACTIVE - 1] = NATIONAL_DEX_XERNEAS, - // Zygarde - [SPECIES_ZYGARDE_10 - 1] = NATIONAL_DEX_ZYGARDE, - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT - 1] = NATIONAL_DEX_ZYGARDE, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT - 1] = NATIONAL_DEX_ZYGARDE, - [SPECIES_ZYGARDE_COMPLETE - 1] = NATIONAL_DEX_ZYGARDE, - // Hoopa - [SPECIES_HOOPA_UNBOUND - 1] = NATIONAL_DEX_HOOPA, -#endif -#if P_GEN_7_POKEMON == TRUE - // Oricorio - [SPECIES_ORICORIO_POM_POM - 1] = NATIONAL_DEX_ORICORIO, - [SPECIES_ORICORIO_PAU - 1] = NATIONAL_DEX_ORICORIO, - [SPECIES_ORICORIO_SENSU - 1] = NATIONAL_DEX_ORICORIO, - // Rockruff - [SPECIES_ROCKRUFF_OWN_TEMPO - 1] = NATIONAL_DEX_ROCKRUFF, - // Lycanroc - [SPECIES_LYCANROC_MIDNIGHT - 1] = NATIONAL_DEX_LYCANROC, - [SPECIES_LYCANROC_DUSK - 1] = NATIONAL_DEX_LYCANROC, - // Wishiwashi - [SPECIES_WISHIWASHI_SCHOOL - 1] = NATIONAL_DEX_WISHIWASHI, - // Silvally - [SPECIES_SILVALLY_FIGHTING - 1] = NATIONAL_DEX_SILVALLY, - [SPECIES_SILVALLY_FLYING - 1] = NATIONAL_DEX_SILVALLY, - [SPECIES_SILVALLY_POISON - 1] = NATIONAL_DEX_SILVALLY, - [SPECIES_SILVALLY_GROUND - 1] = NATIONAL_DEX_SILVALLY, - [SPECIES_SILVALLY_ROCK - 1] = NATIONAL_DEX_SILVALLY, - [SPECIES_SILVALLY_BUG - 1] = NATIONAL_DEX_SILVALLY, - [SPECIES_SILVALLY_GHOST - 1] = NATIONAL_DEX_SILVALLY, - [SPECIES_SILVALLY_STEEL - 1] = NATIONAL_DEX_SILVALLY, - [SPECIES_SILVALLY_FIRE - 1] = NATIONAL_DEX_SILVALLY, - [SPECIES_SILVALLY_WATER - 1] = NATIONAL_DEX_SILVALLY, - [SPECIES_SILVALLY_GRASS - 1] = NATIONAL_DEX_SILVALLY, - [SPECIES_SILVALLY_ELECTRIC - 1] = NATIONAL_DEX_SILVALLY, - [SPECIES_SILVALLY_PSYCHIC - 1] = NATIONAL_DEX_SILVALLY, - [SPECIES_SILVALLY_ICE - 1] = NATIONAL_DEX_SILVALLY, - [SPECIES_SILVALLY_DRAGON - 1] = NATIONAL_DEX_SILVALLY, - [SPECIES_SILVALLY_DARK - 1] = NATIONAL_DEX_SILVALLY, - [SPECIES_SILVALLY_FAIRY - 1] = NATIONAL_DEX_SILVALLY, - // Minior - [SPECIES_MINIOR_METEOR_ORANGE - 1] = NATIONAL_DEX_MINIOR, - [SPECIES_MINIOR_METEOR_YELLOW - 1] = NATIONAL_DEX_MINIOR, - [SPECIES_MINIOR_METEOR_GREEN - 1] = NATIONAL_DEX_MINIOR, - [SPECIES_MINIOR_METEOR_BLUE - 1] = NATIONAL_DEX_MINIOR, - [SPECIES_MINIOR_METEOR_INDIGO - 1] = NATIONAL_DEX_MINIOR, - [SPECIES_MINIOR_METEOR_VIOLET - 1] = NATIONAL_DEX_MINIOR, - [SPECIES_MINIOR_CORE_RED - 1] = NATIONAL_DEX_MINIOR, - [SPECIES_MINIOR_CORE_ORANGE - 1] = NATIONAL_DEX_MINIOR, - [SPECIES_MINIOR_CORE_YELLOW - 1] = NATIONAL_DEX_MINIOR, - [SPECIES_MINIOR_CORE_GREEN - 1] = NATIONAL_DEX_MINIOR, - [SPECIES_MINIOR_CORE_BLUE - 1] = NATIONAL_DEX_MINIOR, - [SPECIES_MINIOR_CORE_INDIGO - 1] = NATIONAL_DEX_MINIOR, - [SPECIES_MINIOR_CORE_VIOLET - 1] = NATIONAL_DEX_MINIOR, - // Mimikyu - [SPECIES_MIMIKYU_BUSTED - 1] = NATIONAL_DEX_MIMIKYU, - // Necrozma - [SPECIES_NECROZMA_DUSK_MANE - 1] = NATIONAL_DEX_NECROZMA, - [SPECIES_NECROZMA_DAWN_WINGS - 1] = NATIONAL_DEX_NECROZMA, - [SPECIES_NECROZMA_ULTRA - 1] = NATIONAL_DEX_NECROZMA, - // Magearna - [SPECIES_MAGEARNA_ORIGINAL_COLOR - 1] = NATIONAL_DEX_MAGEARNA, -#endif -#if P_GEN_8_POKEMON == TRUE - // Cramorant - [SPECIES_CRAMORANT_GULPING - 1] = NATIONAL_DEX_CRAMORANT, - [SPECIES_CRAMORANT_GORGING - 1] = NATIONAL_DEX_CRAMORANT, - // Toxtricity - [SPECIES_TOXTRICITY_LOW_KEY - 1] = NATIONAL_DEX_TOXTRICITY, - // Sinistea - [SPECIES_SINISTEA_ANTIQUE - 1] = NATIONAL_DEX_SINISTEA, - // Polteageist - [SPECIES_POLTEAGEIST_ANTIQUE - 1] = NATIONAL_DEX_POLTEAGEIST, - // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_MATCHA_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_MINT_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_LEMON_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_SALTED_CREAM - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_RUBY_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_CARAMEL_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, - [SPECIES_ALCREMIE_RAINBOW_SWIRL - 1] = NATIONAL_DEX_ALCREMIE, - // Eiscue - [SPECIES_EISCUE_NOICE_FACE - 1] = NATIONAL_DEX_EISCUE, - // Indeedee - [SPECIES_INDEEDEE_FEMALE - 1] = NATIONAL_DEX_INDEEDEE, - // Morpeko - [SPECIES_MORPEKO_HANGRY - 1] = NATIONAL_DEX_MORPEKO, - // Zacian - [SPECIES_ZACIAN_CROWNED_SWORD - 1] = NATIONAL_DEX_ZACIAN, - // Zamazenta - [SPECIES_ZAMAZENTA_CROWNED_SHIELD - 1] = NATIONAL_DEX_ZAMAZENTA, - // Eternatus - [SPECIES_ETERNATUS_ETERNAMAX - 1] = NATIONAL_DEX_ETERNATUS, - // Urshifu - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE - 1] = NATIONAL_DEX_URSHIFU, - // Zarude - [SPECIES_ZARUDE_DADA - 1] = NATIONAL_DEX_ZARUDE, - // Calyrex - [SPECIES_CALYREX_ICE_RIDER - 1] = NATIONAL_DEX_CALYREX, - [SPECIES_CALYREX_SHADOW_RIDER - 1] = NATIONAL_DEX_CALYREX, - [SPECIES_ENAMORUS_THERIAN - 1] = NATIONAL_DEX_ENAMORUS, - [SPECIES_BASCULEGION_FEMALE - 1] = NATIONAL_DEX_BASCULEGION, -#endif -}; - // Assigns all Hoenn Dex Indexes to a National Dex Index static const u16 sHoennToNationalOrder[HOENN_DEX_COUNT - 1] = { @@ -1690,6 +123,9 @@ static const u16 sHoennToNationalOrder[HOENN_DEX_COUNT - 1] = HOENN_TO_NATIONAL(MIGHTYENA), HOENN_TO_NATIONAL(ZIGZAGOON), HOENN_TO_NATIONAL(LINOONE), +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GALARIAN_FORMS + HOENN_TO_NATIONAL(OBSTAGOON), +#endif HOENN_TO_NATIONAL(WURMPLE), HOENN_TO_NATIONAL(SILCOON), HOENN_TO_NATIONAL(BEAUTIFLY), @@ -1708,7 +144,7 @@ static const u16 sHoennToNationalOrder[HOENN_DEX_COUNT - 1] = HOENN_TO_NATIONAL(RALTS), HOENN_TO_NATIONAL(KIRLIA), HOENN_TO_NATIONAL(GARDEVOIR), -#if P_GEN_4_POKEMON == TRUE +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS HOENN_TO_NATIONAL(GALLADE), #endif HOENN_TO_NATIONAL(SURSKIT), @@ -1740,7 +176,7 @@ static const u16 sHoennToNationalOrder[HOENN_DEX_COUNT - 1] = HOENN_TO_NATIONAL(GRAVELER), HOENN_TO_NATIONAL(GOLEM), HOENN_TO_NATIONAL(NOSEPASS), -#if P_GEN_4_POKEMON == TRUE +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS HOENN_TO_NATIONAL(PROBOPASS), #endif HOENN_TO_NATIONAL(SKITTY), @@ -1766,7 +202,7 @@ static const u16 sHoennToNationalOrder[HOENN_DEX_COUNT - 1] = HOENN_TO_NATIONAL(MINUN), HOENN_TO_NATIONAL(MAGNEMITE), HOENN_TO_NATIONAL(MAGNETON), -#if P_GEN_4_POKEMON == TRUE +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS HOENN_TO_NATIONAL(MAGNEZONE), #endif HOENN_TO_NATIONAL(VOLTORB), @@ -1779,7 +215,7 @@ static const u16 sHoennToNationalOrder[HOENN_DEX_COUNT - 1] = HOENN_TO_NATIONAL(BELLOSSOM), HOENN_TO_NATIONAL(DODUO), HOENN_TO_NATIONAL(DODRIO), -#if P_GEN_4_POKEMON == TRUE +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS HOENN_TO_NATIONAL(BUDEW), HOENN_TO_NATIONAL(ROSELIA), HOENN_TO_NATIONAL(ROSERADE), @@ -1841,7 +277,7 @@ static const u16 sHoennToNationalOrder[HOENN_DEX_COUNT - 1] = HOENN_TO_NATIONAL(BANETTE), HOENN_TO_NATIONAL(DUSKULL), HOENN_TO_NATIONAL(DUSCLOPS), -#if P_GEN_4_POKEMON == TRUE +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS HOENN_TO_NATIONAL(DUSKNOIR), HOENN_TO_NATIONAL(TROPIUS), HOENN_TO_NATIONAL(CHINGLING), @@ -1862,18 +298,21 @@ static const u16 sHoennToNationalOrder[HOENN_DEX_COUNT - 1] = HOENN_TO_NATIONAL(NATU), HOENN_TO_NATIONAL(XATU), HOENN_TO_NATIONAL(GIRAFARIG), +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_9_CROSS_EVOS + HOENN_TO_NATIONAL(FARIGIRAF), +#endif HOENN_TO_NATIONAL(PHANPY), HOENN_TO_NATIONAL(DONPHAN), HOENN_TO_NATIONAL(PINSIR), HOENN_TO_NATIONAL(HERACROSS), HOENN_TO_NATIONAL(RHYHORN), HOENN_TO_NATIONAL(RHYDON), -#if P_GEN_4_POKEMON == TRUE +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS HOENN_TO_NATIONAL(RHYPERIOR), #endif HOENN_TO_NATIONAL(SNORUNT), HOENN_TO_NATIONAL(GLALIE), -#if P_GEN_4_POKEMON == TRUE +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GEN_4_CROSS_EVOS HOENN_TO_NATIONAL(FROSLASS), #endif HOENN_TO_NATIONAL(SPHEAL), @@ -1884,6 +323,9 @@ static const u16 sHoennToNationalOrder[HOENN_DEX_COUNT - 1] = HOENN_TO_NATIONAL(GOREBYSS), HOENN_TO_NATIONAL(RELICANTH), HOENN_TO_NATIONAL(CORSOLA), +#if P_NEW_EVOS_IN_REGIONAL_DEX && P_GALARIAN_FORMS + HOENN_TO_NATIONAL(CURSOLA), +#endif HOENN_TO_NATIONAL(CHINCHOU), HOENN_TO_NATIONAL(LANTURN), HOENN_TO_NATIONAL(LUVDISC), @@ -1910,10 +352,10 @@ static const u16 sHoennToNationalOrder[HOENN_DEX_COUNT - 1] = const struct SpindaSpot gSpindaSpotGraphics[] = { - {.x = 16, .y = 7, .image = INCBIN_U16("graphics/spinda_spots/spot_0.1bpp")}, - {.x = 40, .y = 8, .image = INCBIN_U16("graphics/spinda_spots/spot_1.1bpp")}, - {.x = 22, .y = 25, .image = INCBIN_U16("graphics/spinda_spots/spot_2.1bpp")}, - {.x = 34, .y = 26, .image = INCBIN_U16("graphics/spinda_spots/spot_3.1bpp")} + {.x = 16, .y = 7, .image = INCBIN_U16("graphics/pokemon/spinda/spots/spot_0.1bpp")}, + {.x = 40, .y = 8, .image = INCBIN_U16("graphics/pokemon/spinda/spots/spot_1.1bpp")}, + {.x = 22, .y = 25, .image = INCBIN_U16("graphics/pokemon/spinda/spots/spot_2.1bpp")}, + {.x = 34, .y = 26, .image = INCBIN_U16("graphics/pokemon/spinda/spots/spot_3.1bpp")} }; #include "data/pokemon/item_effects.h" @@ -1947,1163 +389,18 @@ const s8 gNatureStatTable[NUM_NATURES][NUM_NATURE_STATS] = [NATURE_QUIRKY] = { 0, 0, 0, 0, 0 }, }; +#include "data/graphics/pokemon.h" +#include "data/pokemon_graphics/front_pic_anims.h" + #include "data/pokemon/trainer_class_lookups.h" #include "data/pokemon/experience_tables.h" -#include "data/pokemon/species_info.h" #include "data/pokemon/level_up_learnsets.h" #include "data/pokemon/teachable_learnsets.h" -#include "data/pokemon/evolution.h" -#include "data/pokemon/level_up_learnset_pointers.h" -#include "data/pokemon/teachable_learnset_pointers.h" #include "data/pokemon/form_species_tables.h" -#include "data/pokemon/form_species_table_pointers.h" #include "data/pokemon/form_change_tables.h" #include "data/pokemon/form_change_table_pointers.h" -// SPECIES_NONE are ignored in the following two tables, so decrement before accessing these arrays to get the right result -const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = -{ - [SPECIES_BULBASAUR - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_IVYSAUR - 1] = ANIM_V_STRETCH, - [SPECIES_VENUSAUR - 1] = ANIM_ROTATE_UP_SLAM_DOWN, - [SPECIES_CHARMANDER - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_CHARMELEON - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_CHARIZARD - 1] = ANIM_V_SHAKE, - [SPECIES_SQUIRTLE - 1] = ANIM_V_JUMPS_BIG, - [SPECIES_WARTORTLE - 1] = ANIM_SHRINK_GROW, - [SPECIES_BLASTOISE - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_CATERPIE - 1] = ANIM_SWING_CONCAVE, - [SPECIES_METAPOD - 1] = ANIM_SWING_CONCAVE, - [SPECIES_BUTTERFREE - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_WEEDLE - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_KAKUNA - 1] = ANIM_GLOW_ORANGE, - [SPECIES_BEEDRILL - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_PIDGEY - 1] = ANIM_V_STRETCH, - [SPECIES_PIDGEOTTO - 1] = ANIM_V_STRETCH, - [SPECIES_PIDGEOT - 1] = ANIM_FRONT_FLIP, - [SPECIES_RATTATA - 1] = ANIM_H_JUMPS, - [SPECIES_RATICATE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - [SPECIES_SPEAROW - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_FEAROW - 1] = ANIM_FIGURE_8, - [SPECIES_EKANS - 1] = ANIM_V_STRETCH, - [SPECIES_ARBOK - 1] = ANIM_V_STRETCH, - [SPECIES_PIKACHU - 1] = ANIM_FLASH_YELLOW, - [SPECIES_RAICHU - 1] = ANIM_GROW_VIBRATE, - [SPECIES_SANDSHREW - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, - [SPECIES_SANDSLASH - 1] = ANIM_H_SHAKE, - [SPECIES_NIDORAN_F - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_NIDORINA - 1] = ANIM_V_STRETCH, - [SPECIES_NIDOQUEEN - 1] = ANIM_H_SHAKE, - [SPECIES_NIDORAN_M - 1] = ANIM_GROW_VIBRATE, - [SPECIES_NIDORINO - 1] = ANIM_V_STRETCH, - [SPECIES_NIDOKING - 1] = ANIM_H_SHAKE, - [SPECIES_CLEFAIRY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CLEFABLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_VULPIX - 1] = ANIM_V_STRETCH, - [SPECIES_NINETALES - 1] = ANIM_GROW_VIBRATE, - [SPECIES_JIGGLYPUFF - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - [SPECIES_WIGGLYTUFF - 1] = ANIM_H_JUMPS, - [SPECIES_ZUBAT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GOLBAT - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_ODDISH - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_GLOOM - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_VILEPLUME - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_PARAS - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_PARASECT - 1] = ANIM_H_SHAKE, - [SPECIES_VENONAT - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_VENOMOTH - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_DIGLETT - 1] = ANIM_V_SHAKE, - [SPECIES_DUGTRIO - 1] = ANIM_H_SHAKE_SLOW, - [SPECIES_MEOWTH - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_PERSIAN - 1] = ANIM_V_STRETCH, - [SPECIES_PSYDUCK - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_GOLDUCK - 1] = ANIM_H_SHAKE_SLOW, - [SPECIES_MANKEY - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_PRIMEAPE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, - [SPECIES_GROWLITHE - 1] = ANIM_V_STRETCH, - [SPECIES_ARCANINE - 1] = ANIM_V_SHAKE, - [SPECIES_POLIWAG - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_POLIWHIRL - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_POLIWRATH - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_ABRA - 1] = ANIM_H_VIBRATE, - [SPECIES_KADABRA - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ALAKAZAM - 1] = ANIM_GROW_VIBRATE, - [SPECIES_MACHOP - 1] = ANIM_V_STRETCH, - [SPECIES_MACHOKE - 1] = ANIM_V_SHAKE, - [SPECIES_MACHAMP - 1] = ANIM_H_JUMPS, - [SPECIES_BELLSPROUT - 1] = ANIM_H_JUMPS, - [SPECIES_WEEPINBELL - 1] = ANIM_SWING_CONVEX, - [SPECIES_VICTREEBEL - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_TENTACOOL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TENTACRUEL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GEODUDE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - [SPECIES_GRAVELER - 1] = ANIM_V_SHAKE, - [SPECIES_GOLEM - 1] = ANIM_ROTATE_UP_SLAM_DOWN, - [SPECIES_PONYTA - 1] = ANIM_V_SHAKE, - [SPECIES_RAPIDASH - 1] = ANIM_H_SHAKE, - [SPECIES_SLOWPOKE - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_SLOWBRO - 1] = ANIM_H_STRETCH, - [SPECIES_MAGNEMITE - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MAGNETON - 1] = ANIM_FLASH_YELLOW, - [SPECIES_FARFETCHD - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - [SPECIES_DODUO - 1] = ANIM_H_SHAKE_SLOW, - [SPECIES_DODRIO - 1] = ANIM_V_STRETCH, - [SPECIES_SEEL - 1] = ANIM_H_STRETCH, - [SPECIES_DEWGONG - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_GRIMER - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_MUK - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SHELLDER - 1] = ANIM_TWIST, - [SPECIES_CLOYSTER - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_GASTLY - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, - [SPECIES_HAUNTER - 1] = ANIM_FLICKER_INCREASING, - [SPECIES_GENGAR - 1] = ANIM_GROW_IN_STAGES, - [SPECIES_ONIX - 1] = ANIM_H_SHAKE, - [SPECIES_DROWZEE - 1] = ANIM_V_STRETCH, - [SPECIES_HYPNO - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_KRABBY - 1] = ANIM_H_SLIDE, - [SPECIES_KINGLER - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_VOLTORB - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ELECTRODE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_EXEGGCUTE - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_EXEGGUTOR - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_CUBONE - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_MAROWAK - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, - [SPECIES_HITMONLEE - 1] = ANIM_H_STRETCH, - [SPECIES_HITMONCHAN - 1] = ANIM_GROW_VIBRATE, - [SPECIES_LICKITUNG - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_KOFFING - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_WEEZING - 1] = ANIM_V_SLIDE, - [SPECIES_RHYHORN - 1] = ANIM_V_SHAKE, - [SPECIES_RHYDON - 1] = ANIM_H_SHAKE, - [SPECIES_CHANSEY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TANGELA - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - [SPECIES_KANGASKHAN - 1] = ANIM_V_STRETCH, - [SPECIES_HORSEA - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_SEADRA - 1] = ANIM_V_SLIDE, - [SPECIES_GOLDEEN - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_SEAKING - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_STARYU - 1] = ANIM_TWIST_TWICE, - [SPECIES_STARMIE - 1] = ANIM_TWIST, - [SPECIES_MR_MIME - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_SCYTHER - 1] = ANIM_H_VIBRATE, - [SPECIES_JYNX - 1] = ANIM_V_STRETCH, - [SPECIES_ELECTABUZZ - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW, - [SPECIES_MAGMAR - 1] = ANIM_H_SHAKE, - [SPECIES_PINSIR - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TAUROS - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_MAGIKARP - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, - [SPECIES_GYARADOS - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - [SPECIES_LAPRAS - 1] = ANIM_V_STRETCH, - [SPECIES_DITTO - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_EEVEE - 1] = ANIM_V_STRETCH, - [SPECIES_VAPOREON - 1] = ANIM_GLOW_BLUE, - [SPECIES_JOLTEON - 1] = ANIM_GROW_VIBRATE, - [SPECIES_FLAREON - 1] = ANIM_V_SHAKE, - [SPECIES_PORYGON - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_OMANYTE - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_OMASTAR - 1] = ANIM_GROW_VIBRATE, - [SPECIES_KABUTO - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_KABUTOPS - 1] = ANIM_H_SHAKE, - [SPECIES_AERODACTYL - 1] = ANIM_V_SLIDE_SLOW, - [SPECIES_SNORLAX - 1] = ANIM_V_STRETCH, - [SPECIES_ARTICUNO - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ZAPDOS - 1] = ANIM_FLASH_YELLOW, - [SPECIES_MOLTRES - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_DRATINI - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DRAGONAIR - 1] = ANIM_GROW_VIBRATE, - [SPECIES_DRAGONITE - 1] = ANIM_V_SHAKE, - [SPECIES_MEWTWO - 1] = ANIM_GROW_VIBRATE, - [SPECIES_MEW - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_CHIKORITA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BAYLEEF - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MEGANIUM - 1] = ANIM_GROW_VIBRATE, - [SPECIES_CYNDAQUIL - 1] = ANIM_V_STRETCH, - [SPECIES_QUILAVA - 1] = ANIM_H_STRETCH, - [SPECIES_TYPHLOSION - 1] = ANIM_V_SHAKE, - [SPECIES_TOTODILE - 1] = ANIM_H_JUMPS, - [SPECIES_CROCONAW - 1] = ANIM_H_SHAKE, - [SPECIES_FERALIGATR - 1] = ANIM_H_SHAKE, - [SPECIES_SENTRET - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_FURRET - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_HOOTHOOT - 1] = ANIM_V_SLIDE_SLOW, - [SPECIES_NOCTOWL - 1] = ANIM_V_STRETCH, - [SPECIES_LEDYBA - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_LEDIAN - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_SPINARAK - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, - [SPECIES_ARIADOS - 1] = ANIM_H_SHAKE, - [SPECIES_CROBAT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CHINCHOU - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_LANTURN - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_PICHU - 1] = ANIM_V_JUMPS_BIG, - [SPECIES_CLEFFA - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_IGGLYBUFF - 1] = ANIM_SWING_CONCAVE_FAST, - [SPECIES_TOGEPI - 1] = ANIM_V_JUMPS_BIG, - [SPECIES_TOGETIC - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_NATU - 1] = ANIM_H_JUMPS, - [SPECIES_XATU - 1] = ANIM_GROW_VIBRATE, - [SPECIES_MAREEP - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_FLAAFFY - 1] = ANIM_V_STRETCH, - [SPECIES_AMPHAROS - 1] = ANIM_FLASH_YELLOW, - [SPECIES_BELLOSSOM - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_MARILL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_AZUMARILL - 1] = ANIM_SHRINK_GROW, - [SPECIES_SUDOWOODO - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_POLITOED - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_HOPPIP - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_SKIPLOOM - 1] = ANIM_RISING_WOBBLE, - [SPECIES_JUMPLUFF - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_AIPOM - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_SUNKERN - 1] = ANIM_H_JUMPS, - [SPECIES_SUNFLORA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_YANMA - 1] = ANIM_FIGURE_8, - [SPECIES_WOOPER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_QUAGSIRE - 1] = ANIM_H_STRETCH, - [SPECIES_ESPEON - 1] = ANIM_GROW_VIBRATE, - [SPECIES_UMBREON - 1] = ANIM_V_SHAKE, - [SPECIES_MURKROW - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SLOWKING - 1] = ANIM_SHRINK_GROW, - [SPECIES_MISDREAVUS - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_UNOWN - 1] = ANIM_ZIGZAG_FAST, - [SPECIES_WOBBUFFET - 1] = ANIM_GROW_VIBRATE, - [SPECIES_GIRAFARIG - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_PINECO - 1] = ANIM_SWING_CONCAVE, - [SPECIES_FORRETRESS - 1] = ANIM_V_SHAKE, - [SPECIES_DUNSPARCE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GLIGAR - 1] = ANIM_SHRINK_GROW, - [SPECIES_STEELIX - 1] = ANIM_V_SHAKE, - [SPECIES_SNUBBULL - 1] = ANIM_V_STRETCH, - [SPECIES_GRANBULL - 1] = ANIM_V_SHAKE, - [SPECIES_QWILFISH - 1] = ANIM_GROW_IN_STAGES, - [SPECIES_SCIZOR - 1] = ANIM_H_VIBRATE, - [SPECIES_SHUCKLE - 1] = ANIM_SWING_CONCAVE, - [SPECIES_HERACROSS - 1] = ANIM_V_STRETCH, - [SPECIES_SNEASEL - 1] = ANIM_H_JUMPS, - [SPECIES_TEDDIURSA - 1] = ANIM_V_STRETCH, - [SPECIES_URSARING - 1] = ANIM_H_SHAKE, - [SPECIES_SLUGMA - 1] = ANIM_V_STRETCH, - [SPECIES_MAGCARGO - 1] = ANIM_V_STRETCH, - [SPECIES_SWINUB - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_PILOSWINE - 1] = ANIM_H_SHAKE, - [SPECIES_CORSOLA - 1] = ANIM_H_SLIDE, - [SPECIES_REMORAID - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_OCTILLERY - 1] = ANIM_V_STRETCH, - [SPECIES_DELIBIRD - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MANTINE - 1] = ANIM_SWING_CONVEX, - [SPECIES_SKARMORY - 1] = ANIM_V_SHAKE, - [SPECIES_HOUNDOUR - 1] = ANIM_V_STRETCH, - [SPECIES_HOUNDOOM - 1] = ANIM_V_SHAKE, - [SPECIES_KINGDRA - 1] = ANIM_CIRCLE_INTO_BG, - [SPECIES_PHANPY - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_DONPHAN - 1] = ANIM_ROTATE_UP_SLAM_DOWN, - [SPECIES_PORYGON2 - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_STANTLER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SMEARGLE - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_TYROGUE - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_HITMONTOP - 1] = ANIM_H_VIBRATE, - [SPECIES_SMOOCHUM - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ELEKID - 1] = ANIM_FLASH_YELLOW, - [SPECIES_MAGBY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MILTANK - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_BLISSEY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_RAIKOU - 1] = ANIM_V_STRETCH, - [SPECIES_ENTEI - 1] = ANIM_GROW_VIBRATE, - [SPECIES_SUICUNE - 1] = ANIM_V_SHAKE, - [SPECIES_LARVITAR - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_PUPITAR - 1] = ANIM_H_SHAKE, - [SPECIES_TYRANITAR - 1] = ANIM_V_SHAKE, - [SPECIES_LUGIA - 1] = ANIM_GROW_IN_STAGES, - [SPECIES_HO_OH - 1] = ANIM_GROW_VIBRATE, - [SPECIES_CELEBI - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_TREECKO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GROVYLE - 1] = ANIM_V_STRETCH, - [SPECIES_SCEPTILE - 1] = ANIM_V_SHAKE, - [SPECIES_TORCHIC - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_COMBUSKEN - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_BLAZIKEN - 1] = ANIM_H_SHAKE, - [SPECIES_MUDKIP - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_MARSHTOMP - 1] = ANIM_V_STRETCH, - [SPECIES_SWAMPERT - 1] = ANIM_H_SHAKE, - [SPECIES_POOCHYENA - 1] = ANIM_V_SHAKE, - [SPECIES_MIGHTYENA - 1] = ANIM_V_SHAKE, - [SPECIES_ZIGZAGOON - 1] = ANIM_H_SLIDE, - [SPECIES_LINOONE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_WURMPLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SILCOON - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BEAUTIFLY - 1] = ANIM_V_SLIDE, - [SPECIES_CASCOON - 1] = ANIM_V_SLIDE, - [SPECIES_DUSTOX - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_LOTAD - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_LOMBRE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_LUDICOLO - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, - [SPECIES_SEEDOT - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_NUZLEAF - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SHIFTRY - 1] = ANIM_H_VIBRATE, - [SPECIES_TAILLOW - 1] = ANIM_V_JUMPS_BIG, - [SPECIES_SWELLOW - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_WINGULL - 1] = ANIM_H_PIVOT, - [SPECIES_PELIPPER - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_RALTS - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_KIRLIA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GARDEVOIR - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_SURSKIT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MASQUERAIN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SHROOMISH - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BRELOOM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SLAKOTH - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_VIGOROTH - 1] = ANIM_H_JUMPS, - [SPECIES_SLAKING - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_NINCADA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_NINJASK - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_SHEDINJA - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_WHISMUR - 1] = ANIM_H_SLIDE, - [SPECIES_LOUDRED - 1] = ANIM_SHRINK_GROW, - [SPECIES_EXPLOUD - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_MAKUHITA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_HARIYAMA - 1] = ANIM_ROTATE_UP_TO_SIDES, - [SPECIES_AZURILL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_NOSEPASS - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_SKITTY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DELCATTY - 1] = ANIM_V_STRETCH, - [SPECIES_SABLEYE - 1] = ANIM_GLOW_BLACK, - [SPECIES_MAWILE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ARON - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_LAIRON - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_AGGRON - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_MEDITITE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, - [SPECIES_MEDICHAM - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_ELECTRIKE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MANECTRIC - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_PLUSLE - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_MINUN - 1] = ANIM_V_JUMPS_H_JUMPS, - [SPECIES_VOLBEAT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ILLUMISE - 1] = ANIM_RISING_WOBBLE, - [SPECIES_ROSELIA - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_GULPIN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SWALOT - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_CARVANHA - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, - [SPECIES_SHARPEDO - 1] = ANIM_H_JUMPS_V_STRETCH_TWICE, - [SPECIES_WAILMER - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_WAILORD - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_NUMEL - 1] = ANIM_V_SLIDE, - [SPECIES_CAMERUPT - 1] = ANIM_V_SHAKE, - [SPECIES_TORKOAL - 1] = ANIM_V_STRETCH, - [SPECIES_SPOINK - 1] = ANIM_H_JUMPS_V_STRETCH_TWICE, - [SPECIES_GRUMPIG - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_SPINDA - 1] = ANIM_CIRCLE_INTO_BG, - [SPECIES_TRAPINCH - 1] = ANIM_V_SHAKE, - [SPECIES_VIBRAVA - 1] = ANIM_H_SHAKE, - [SPECIES_FLYGON - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_CACNEA - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, - [SPECIES_CACTURNE - 1] = ANIM_V_SLIDE, - [SPECIES_SWABLU - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ALTARIA - 1] = ANIM_V_STRETCH, - [SPECIES_ZANGOOSE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_SEVIPER - 1] = ANIM_V_STRETCH, - [SPECIES_LUNATONE - 1] = ANIM_SWING_CONVEX_FAST, - [SPECIES_SOLROCK - 1] = ANIM_ROTATE_TO_SIDES_TWICE, - [SPECIES_BARBOACH - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, - [SPECIES_WHISCASH - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, - [SPECIES_CORPHISH - 1] = ANIM_V_SHAKE, - [SPECIES_CRAWDAUNT - 1] = ANIM_GROW_VIBRATE, - [SPECIES_BALTOY - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_CLAYDOL - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_LILEEP - 1] = ANIM_V_STRETCH, - [SPECIES_CRADILY - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_ANORITH - 1] = ANIM_TWIST, - [SPECIES_ARMALDO - 1] = ANIM_V_SHAKE, - [SPECIES_FEEBAS - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW, - [SPECIES_MILOTIC - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_CASTFORM - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_KECLEON - 1] = ANIM_FLICKER_INCREASING, - [SPECIES_SHUPPET - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_BANETTE - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_DUSKULL - 1] = ANIM_ZIGZAG_FAST, - [SPECIES_DUSCLOPS - 1] = ANIM_H_VIBRATE, - [SPECIES_TROPIUS - 1] = ANIM_V_SHAKE, - [SPECIES_CHIMECHO - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_ABSOL - 1] = ANIM_CIRCULAR_VIBRATE, - [SPECIES_WYNAUT - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_SNORUNT - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_GLALIE - 1] = ANIM_ZIGZAG_FAST, - [SPECIES_SPHEAL - 1] = ANIM_SPIN_LONG, - [SPECIES_SEALEO - 1] = ANIM_V_STRETCH, - [SPECIES_WALREIN - 1] = ANIM_H_SHAKE, - [SPECIES_CLAMPERL - 1] = ANIM_TWIST, - [SPECIES_HUNTAIL - 1] = ANIM_GROW_VIBRATE, - [SPECIES_GOREBYSS - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_RELICANTH - 1] = ANIM_TIP_MOVE_FORWARD, - [SPECIES_LUVDISC - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_BAGON - 1] = ANIM_H_SHAKE, - [SPECIES_SHELGON - 1] = ANIM_V_SLIDE, - [SPECIES_SALAMENCE - 1] = ANIM_H_SHAKE, - [SPECIES_BELDUM - 1] = ANIM_H_SHAKE, - [SPECIES_METANG - 1] = ANIM_V_SLIDE, - [SPECIES_METAGROSS - 1] = ANIM_V_SHAKE, - [SPECIES_REGIROCK - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_REGICE - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_REGISTEEL - 1] = ANIM_GROW_VIBRATE, - [SPECIES_LATIAS - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_LATIOS - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, - [SPECIES_KYOGRE - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, - [SPECIES_GROUDON - 1] = ANIM_V_SHAKE, - [SPECIES_RAYQUAZA - 1] = ANIM_H_SHAKE, - [SPECIES_JIRACHI - 1] = ANIM_RISING_WOBBLE, - [SPECIES_DEOXYS - 1] = ANIM_GROW_VIBRATE, - - // Gen 4 - [SPECIES_TURTWIG - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GROTLE - 1] = ANIM_V_STRETCH, - [SPECIES_TORTERRA - 1] = ANIM_H_SHAKE, - [SPECIES_CHIMCHAR - 1] = ANIM_V_JUMPS_BIG, - [SPECIES_MONFERNO - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_INFERNAPE - 1] = ANIM_V_STRETCH, - [SPECIES_PIPLUP - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_PRINPLUP - 1] = ANIM_V_STRETCH, - [SPECIES_EMPOLEON - 1] = ANIM_V_STRETCH, - [SPECIES_STARLY - 1] = ANIM_V_STRETCH, - [SPECIES_STARAVIA - 1] = ANIM_V_STRETCH, - [SPECIES_STARAPTOR - 1] = ANIM_V_SHAKE, - [SPECIES_BIDOOF - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_BIBAREL - 1] = ANIM_GROW_VIBRATE, - [SPECIES_KRICKETOT - 1] = ANIM_H_JUMPS, - [SPECIES_KRICKETUNE - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_SHINX - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_LUXIO - 1] = ANIM_H_STRETCH, - [SPECIES_LUXRAY - 1] = ANIM_GLOW_YELLOW, - [SPECIES_BUDEW - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_ROSERADE - 1] = ANIM_H_VIBRATE, - [SPECIES_CRANIDOS - 1] = ANIM_V_STRETCH, - [SPECIES_RAMPARDOS - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_SHIELDON - 1] = ANIM_V_SHAKE, - [SPECIES_BASTIODON - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_BURMY - 1] = ANIM_V_STRETCH, - [SPECIES_WORMADAM - 1] = ANIM_SWING_CONVEX_FAST_SHORT, - [SPECIES_MOTHIM - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_COMBEE - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_VESPIQUEN - 1] = ANIM_LUNGE_GROW, - [SPECIES_PACHIRISU - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BUIZEL - 1] = ANIM_GROW_VIBRATE, - [SPECIES_FLOATZEL - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_CHERUBI - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CHERRIM - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, - [SPECIES_SHELLOS - 1] = ANIM_V_STRETCH, - [SPECIES_GASTRODON - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_AMBIPOM - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_DRIFLOON - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_DRIFBLIM - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_BUNEARY - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_LOPUNNY - 1] = ANIM_SHRINK_GROW, - [SPECIES_MISMAGIUS - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_HONCHKROW - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_GLAMEOW - 1] = ANIM_GROW_VIBRATE, - [SPECIES_PURUGLY - 1] = ANIM_V_STRETCH, - [SPECIES_CHINGLING - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_STUNKY - 1] = ANIM_TIP_MOVE_FORWARD, - [SPECIES_SKUNTANK - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_BRONZOR - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_BRONZONG - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_BONSLY - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, - [SPECIES_MIME_JR - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_HAPPINY - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_CHATOT - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_SPIRITOMB - 1] = ANIM_GROW_IN_STAGES, - [SPECIES_GIBLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GABITE - 1] = ANIM_V_STRETCH, - [SPECIES_GARCHOMP - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_MUNCHLAX - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_RIOLU - 1] = ANIM_RAPID_H_HOPS, - [SPECIES_LUCARIO - 1] = ANIM_V_STRETCH, - [SPECIES_HIPPOPOTAS - 1] = ANIM_V_STRETCH, - [SPECIES_HIPPOWDON - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_SKORUPI - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_DRAPION - 1] = ANIM_V_JUMPS_BIG, - [SPECIES_CROAGUNK - 1] = ANIM_RAPID_H_HOPS, - [SPECIES_TOXICROAK - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CARNIVINE - 1] = ANIM_FIGURE_8, - [SPECIES_FINNEON - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_LUMINEON - 1] = ANIM_H_STRETCH, - [SPECIES_MANTYKE - 1] = ANIM_TWIST_TWICE, - [SPECIES_SNOVER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ABOMASNOW - 1] = ANIM_H_SHAKE, - [SPECIES_WEAVILE - 1] = ANIM_H_VIBRATE, - [SPECIES_MAGNEZONE - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_LICKILICKY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_RHYPERIOR - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_TANGROWTH - 1] = ANIM_H_STRETCH, - [SPECIES_ELECTIVIRE - 1] = ANIM_GLOW_YELLOW, - [SPECIES_MAGMORTAR - 1] = ANIM_V_STRETCH, - [SPECIES_TOGEKISS - 1] = ANIM_SWING_CONVEX, - [SPECIES_YANMEGA - 1] = ANIM_H_VIBRATE, - [SPECIES_LEAFEON - 1] = ANIM_SHRINK_GROW, - [SPECIES_GLACEON - 1] = ANIM_V_STRETCH, - [SPECIES_GLISCOR - 1] = ANIM_SWING_CONVEX, - [SPECIES_MAMOSWINE - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_PORYGON_Z - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, - [SPECIES_GALLADE - 1] = ANIM_H_VIBRATE, - [SPECIES_PROBOPASS - 1] = ANIM_V_SLIDE, - [SPECIES_DUSKNOIR - 1] = ANIM_H_SLIDE, - [SPECIES_FROSLASS - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_ROTOM - 1] = ANIM_GLOW_YELLOW, - [SPECIES_UXIE - 1] = ANIM_SWING_CONCAVE, - [SPECIES_MESPRIT - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_AZELF - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_DIALGA - 1] = ANIM_H_SHAKE, - [SPECIES_PALKIA - 1] = ANIM_V_SHAKE, - [SPECIES_HEATRAN - 1] = ANIM_GLOW_ORANGE, - [SPECIES_REGIGIGAS - 1] = ANIM_V_SHAKE, - [SPECIES_GIRATINA - 1] = ANIM_GROW_VIBRATE, - [SPECIES_CRESSELIA - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_PHIONE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MANAPHY - 1] = ANIM_SWING_CONVEX, - [SPECIES_DARKRAI - 1] = ANIM_GLOW_BLACK, - [SPECIES_SHAYMIN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ARCEUS - 1] = ANIM_GROW_VIBRATE, - - // Gen 5 - [SPECIES_VICTINI - 1] = ANIM_H_JUMPS, - [SPECIES_SNIVY - 1] = ANIM_V_STRETCH, - [SPECIES_SERVINE - 1] = ANIM_V_STRETCH, - [SPECIES_SERPERIOR - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_TEPIG - 1] = ANIM_H_SLIDE, - [SPECIES_PIGNITE - 1] = ANIM_V_STRETCH, - [SPECIES_EMBOAR - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, - [SPECIES_OSHAWOTT - 1] = ANIM_H_JUMPS, - [SPECIES_DEWOTT - 1] = ANIM_H_VIBRATE, - [SPECIES_SAMUROTT - 1] = ANIM_V_SHAKE, - [SPECIES_PATRAT - 1] = ANIM_V_STRETCH, - [SPECIES_WATCHOG - 1] = ANIM_V_STRETCH, - [SPECIES_LILLIPUP - 1] = ANIM_H_JUMPS, - [SPECIES_HERDIER - 1] = ANIM_H_STRETCH, - [SPECIES_STOUTLAND - 1] = ANIM_H_SLIDE, - [SPECIES_PURRLOIN - 1] = ANIM_GROW_VIBRATE, - [SPECIES_LIEPARD - 1] = ANIM_GROW_VIBRATE, - [SPECIES_PANSAGE - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_SIMISAGE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_PANSEAR - 1] = ANIM_V_STRETCH, - [SPECIES_SIMISEAR - 1] = ANIM_SWING_CONCAVE_FAST, - [SPECIES_PANPOUR - 1] = ANIM_GROW_VIBRATE, - [SPECIES_SIMIPOUR - 1] = ANIM_H_STRETCH, - [SPECIES_MUNNA - 1] = ANIM_RISING_WOBBLE, - [SPECIES_MUSHARNA - 1] = ANIM_ROTATE_TO_SIDES_TWICE, - [SPECIES_PIDOVE - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_TRANQUILL - 1] = ANIM_V_STRETCH, - [SPECIES_UNFEZANT - 1] = ANIM_SHRINK_GROW, - [SPECIES_BLITZLE - 1] = ANIM_V_STRETCH, - [SPECIES_ZEBSTRIKA - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_ROGGENROLA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BOLDORE - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_GIGALITH - 1] = ANIM_ROTATE_UP_SLAM_DOWN, - [SPECIES_WOOBAT - 1] = ANIM_FOUR_PETAL, - [SPECIES_SWOOBAT - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL, - [SPECIES_DRILBUR - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, - [SPECIES_EXCADRILL - 1] = ANIM_H_SHAKE, - [SPECIES_AUDINO - 1] = ANIM_V_STRETCH, - [SPECIES_TIMBURR - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GURDURR - 1] = ANIM_GROW_VIBRATE, - [SPECIES_CONKELDURR - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_TYMPOLE - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_PALPITOAD - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_SEISMITOAD - 1] = ANIM_H_JUMPS, - [SPECIES_THROH - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_SAWK - 1] = ANIM_GROW_VIBRATE, - [SPECIES_SEWADDLE - 1] = ANIM_CIRCLE_INTO_BG, - [SPECIES_SWADLOON - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_LEAVANNY - 1] = ANIM_GROW_VIBRATE, - [SPECIES_VENIPEDE - 1] = ANIM_H_SLIDE, - [SPECIES_WHIRLIPEDE - 1] = ANIM_TIP_MOVE_FORWARD, - [SPECIES_SCOLIPEDE - 1] = ANIM_H_SHAKE, - [SPECIES_COTTONEE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_WHIMSICOTT - 1] = ANIM_SHRINK_GROW, - [SPECIES_PETILIL - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_LILLIGANT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BASCULIN - 1] = ANIM_TIP_MOVE_FORWARD, - [SPECIES_SANDILE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_KROKOROK - 1] = ANIM_V_STRETCH, - [SPECIES_KROOKODILE - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, - [SPECIES_DARUMAKA - 1] = ANIM_SWING_CONCAVE, - [SPECIES_DARMANITAN - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_MARACTUS - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_DWEBBLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CRUSTLE - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_SCRAGGY - 1] = ANIM_V_STRETCH, - [SPECIES_SCRAFTY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SIGILYPH - 1] = ANIM_FIGURE_8, - [SPECIES_YAMASK - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_COFAGRIGUS - 1] = ANIM_GLOW_BLACK, - [SPECIES_TIRTOUGA - 1] = ANIM_RISING_WOBBLE, - [SPECIES_CARRACOSTA - 1] = ANIM_H_SHAKE_SLOW, - [SPECIES_ARCHEN - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_ARCHEOPS - 1] = ANIM_RISING_WOBBLE, - [SPECIES_TRUBBISH - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GARBODOR - 1] = ANIM_V_STRETCH, - [SPECIES_ZORUA - 1] = ANIM_CIRCULAR_VIBRATE, - [SPECIES_ZOROARK - 1] = ANIM_FLICKER_INCREASING, - [SPECIES_MINCCINO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CINCCINO - 1] = ANIM_V_SLIDE, - [SPECIES_GOTHITA - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_GOTHORITA - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_GOTHITELLE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_SOLOSIS - 1] = ANIM_TWIST, - [SPECIES_DUOSION - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_REUNICLUS - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_DUCKLETT - 1] = ANIM_V_STRETCH, - [SPECIES_SWANNA - 1] = ANIM_V_STRETCH, - [SPECIES_VANILLITE - 1] = ANIM_H_SLIDE, - [SPECIES_VANILLISH - 1] = ANIM_GROW_VIBRATE, - [SPECIES_VANILLUXE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_DEERLING - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SAWSBUCK - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_EMOLGA - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_KARRABLAST - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ESCAVALIER - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_FOONGUS - 1] = ANIM_SWING_CONCAVE_FAST, - [SPECIES_AMOONGUSS - 1] = ANIM_H_SLIDE, - [SPECIES_FRILLISH - 1] = ANIM_RISING_WOBBLE, - [SPECIES_JELLICENT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALOMOMOLA - 1] = ANIM_SWING_CONCAVE, - [SPECIES_JOLTIK - 1] = ANIM_H_SLIDE, - [SPECIES_GALVANTULA - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, - [SPECIES_FERROSEED - 1] = ANIM_H_VIBRATE, - [SPECIES_FERROTHORN - 1] = ANIM_V_SHAKE, - [SPECIES_KLINK - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_KLANG - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_KLINKLANG - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_TYNAMO - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_EELEKTRIK - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_EELEKTROSS - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW, - [SPECIES_ELGYEM - 1] = ANIM_RISING_WOBBLE, - [SPECIES_BEHEEYEM - 1] = ANIM_GROW_VIBRATE, - [SPECIES_LITWICK - 1] = ANIM_V_STRETCH, - [SPECIES_LAMPENT - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_CHANDELURE - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_AXEW - 1] = ANIM_H_SHAKE, - [SPECIES_FRAXURE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_HAXORUS - 1] = ANIM_H_SHAKE, - [SPECIES_CUBCHOO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BEARTIC - 1] = ANIM_H_SHAKE, - [SPECIES_CRYOGONAL - 1] = ANIM_SHRINK_GROW, - [SPECIES_SHELMET - 1] = ANIM_TWIST, - [SPECIES_ACCELGOR - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_STUNFISK - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MIENFOO - 1] = ANIM_H_VIBRATE, - [SPECIES_MIENSHAO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DRUDDIGON - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW, - [SPECIES_GOLETT - 1] = ANIM_V_SHAKE, - [SPECIES_GOLURK - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_PAWNIARD - 1] = ANIM_H_VIBRATE, - [SPECIES_BISHARP - 1] = ANIM_H_STRETCH, - [SPECIES_BOUFFALANT - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_RUFFLET - 1] = ANIM_V_STRETCH, - [SPECIES_BRAVIARY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_VULLABY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MANDIBUZZ - 1] = ANIM_V_STRETCH, - [SPECIES_HEATMOR - 1] = ANIM_H_SHAKE, - [SPECIES_DURANT - 1] = ANIM_RAPID_H_HOPS, - [SPECIES_DEINO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ZWEILOUS - 1] = ANIM_H_STRETCH, - [SPECIES_HYDREIGON - 1] = ANIM_RISING_WOBBLE, - [SPECIES_LARVESTA - 1] = ANIM_GLOW_ORANGE, - [SPECIES_VOLCARONA - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_COBALION - 1] = ANIM_V_STRETCH, - [SPECIES_TERRAKION - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_VIRIZION - 1] = ANIM_GROW_VIBRATE, - [SPECIES_TORNADUS - 1] = ANIM_FIGURE_8, - [SPECIES_THUNDURUS - 1] = ANIM_FIGURE_8, - [SPECIES_RESHIRAM - 1] = ANIM_V_SHAKE, - [SPECIES_ZEKROM - 1] = ANIM_V_SHAKE, - [SPECIES_LANDORUS - 1] = ANIM_FIGURE_8, - [SPECIES_KYUREM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_KELDEO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MELOETTA - 1] = ANIM_GROW_VIBRATE, - [SPECIES_GENESECT - 1] = ANIM_H_VIBRATE, - - //Gen 6 - [SPECIES_CHESPIN - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_QUILLADIN - 1] = ANIM_LUNGE_GROW, - [SPECIES_CHESNAUGHT - 1] = ANIM_GROW_IN_STAGES, - [SPECIES_FENNEKIN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BRAIXEN - 1] = ANIM_GROW_VIBRATE, - [SPECIES_DELPHOX - 1] = ANIM_GROW_VIBRATE, - [SPECIES_FROAKIE - 1] = ANIM_H_JUMPS, - [SPECIES_FROGADIER - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_GRENINJA - 1] = ANIM_V_STRETCH, - [SPECIES_BUNNELBY - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_DIGGERSBY - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_FLETCHLING - 1] = ANIM_RAPID_H_HOPS, - [SPECIES_FLETCHINDER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TALONFLAME - 1] = ANIM_SWING_CONCAVE_FAST, - [SPECIES_SCATTERBUG - 1] = ANIM_V_STRETCH, - [SPECIES_SPEWPA - 1] = ANIM_V_SHAKE, - [SPECIES_VIVILLON - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_LITLEO - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_PYROAR - 1] = ANIM_V_SHAKE, - [SPECIES_FLABEBE - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, - [SPECIES_FLOETTE - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_FLORGES - 1] = ANIM_GROW_VIBRATE, - [SPECIES_SKIDDO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GOGOAT - 1] = ANIM_V_STRETCH, - [SPECIES_PANCHAM - 1] = ANIM_H_STRETCH, - [SPECIES_PANGORO - 1] = ANIM_BACK_AND_LUNGE, - [SPECIES_FURFROU - 1] = ANIM_H_SLIDE, - [SPECIES_ESPURR - 1] = ANIM_V_STRETCH, - [SPECIES_MEOWSTIC - 1] = ANIM_GROW_VIBRATE, - [SPECIES_HONEDGE - 1] = ANIM_SWING_CONVEX, - [SPECIES_DOUBLADE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_AEGISLASH - 1] = ANIM_H_VIBRATE, - [SPECIES_SPRITZEE - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_AROMATISSE - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_SWIRLIX - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_SLURPUFF - 1] = ANIM_V_STRETCH, - [SPECIES_INKAY - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_MALAMAR - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_BINACLE - 1] = ANIM_H_SLIDE, - [SPECIES_BARBARACLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SKRELP - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_DRAGALGE - 1] = ANIM_FRONT_FLIP, - [SPECIES_CLAUNCHER - 1] = ANIM_TIP_MOVE_FORWARD, - [SPECIES_CLAWITZER - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, - [SPECIES_HELIOPTILE - 1] = ANIM_GLOW_YELLOW, - [SPECIES_HELIOLISK - 1] = ANIM_RAPID_H_HOPS, - [SPECIES_TYRUNT - 1] = ANIM_V_SHAKE, - [SPECIES_TYRANTRUM - 1] = ANIM_V_SHAKE, - [SPECIES_AMAURA - 1] = ANIM_H_STRETCH, - [SPECIES_AURORUS - 1] = ANIM_GROW_VIBRATE, - [SPECIES_SYLVEON - 1] = ANIM_SHRINK_GROW, - [SPECIES_HAWLUCHA - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_DEDENNE - 1] = ANIM_GLOW_YELLOW, - [SPECIES_CARBINK - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_GOOMY - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_SLIGGOO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GOODRA - 1] = ANIM_V_SHAKE, - [SPECIES_KLEFKI - 1] = ANIM_FOUR_PETAL, - [SPECIES_PHANTUMP - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TREVENANT - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_PUMPKABOO - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_GOURGEIST - 1] = ANIM_SHRINK_GROW, - [SPECIES_BERGMITE - 1] = ANIM_LUNGE_GROW, - [SPECIES_AVALUGG - 1] = ANIM_V_SHAKE, - [SPECIES_NOIBAT - 1] = ANIM_RISING_WOBBLE, - [SPECIES_NOIVERN - 1] = ANIM_V_STRETCH, - [SPECIES_XERNEAS - 1] = ANIM_GROW_VIBRATE, - [SPECIES_YVELTAL - 1] = ANIM_FRONT_FLIP, - [SPECIES_ZYGARDE - 1] = ANIM_TIP_MOVE_FORWARD, - [SPECIES_DIANCIE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_HOOPA - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VOLCANION - 1] = ANIM_V_SHAKE_TWICE, - // Gen 7 - [SPECIES_ROWLET - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DARTRIX - 1] = ANIM_H_STRETCH, - [SPECIES_DECIDUEYE - 1] = ANIM_H_VIBRATE, - [SPECIES_LITTEN - 1] = ANIM_H_STRETCH, - [SPECIES_TORRACAT - 1] = ANIM_V_STRETCH, - [SPECIES_INCINEROAR - 1] = ANIM_V_SHAKE, - [SPECIES_POPPLIO - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_BRIONNE - 1] = ANIM_SHRINK_GROW, - [SPECIES_PRIMARINA - 1] = ANIM_SHAKE_GLOW_BLUE_SLOW, - [SPECIES_PIKIPEK - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_TRUMBEAK - 1] = ANIM_H_STRETCH, - [SPECIES_TOUCANNON - 1] = ANIM_SHRINK_GROW_VIBRATE_FAST, - [SPECIES_YUNGOOS - 1] = ANIM_V_STRETCH, - [SPECIES_GUMSHOOS - 1] = ANIM_H_SHAKE, - [SPECIES_GRUBBIN - 1] = ANIM_H_SLIDE, - [SPECIES_CHARJABUG - 1] = ANIM_SHAKE_FLASH_YELLOW_SLOW, - [SPECIES_VIKAVOLT - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES, - [SPECIES_CRABRAWLER - 1] = ANIM_V_SHAKE, - [SPECIES_CRABOMINABLE - 1] = ANIM_SHRINK_GROW_VIBRATE_FAST, - [SPECIES_ORICORIO - 1] = ANIM_CONCAVE_ARC_SMALL, - [SPECIES_CUTIEFLY - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_RIBOMBEE - 1] = ANIM_CONVEX_DOUBLE_ARC_TWICE, - [SPECIES_ROCKRUFF - 1] = ANIM_V_STRETCH, - [SPECIES_LYCANROC - 1] = ANIM_V_SHAKE, - [SPECIES_WISHIWASHI - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_MAREANIE - 1] = ANIM_GLOW_PURPLE, - [SPECIES_TOXAPEX - 1] = ANIM_SHAKE_GLOW_PURPLE_SLOW, - [SPECIES_MUDBRAY - 1] = ANIM_V_SHAKE, - [SPECIES_MUDSDALE - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_DEWPIDER - 1] = ANIM_SHRINK_GROW, - [SPECIES_ARAQUANID - 1] = ANIM_H_SHAKE, - [SPECIES_FOMANTIS - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW, - [SPECIES_LURANTIS - 1] = ANIM_GROW_VIBRATE, - [SPECIES_MORELULL - 1] = ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_SHIINOTIC - 1] = ANIM_SHAKE_GLOW_WHITE_SLOW, - [SPECIES_SALANDIT - 1] = ANIM_GLOW_RED, - [SPECIES_SALAZZLE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_STUFFUL - 1] = ANIM_V_SHAKE, - [SPECIES_BEWEAR - 1] = ANIM_H_STRETCH, - [SPECIES_BOUNSWEET - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_STEENEE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TSAREENA - 1] = ANIM_SHRINK_GROW, - [SPECIES_COMFEY - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_ORANGURU - 1] = ANIM_SHRINK_GROW, - [SPECIES_PASSIMIAN - 1] = ANIM_V_SHAKE, - [SPECIES_WIMPOD - 1] = ANIM_V_SHAKE_H_SLIDE_FAST, - [SPECIES_GOLISOPOD - 1] = ANIM_SHRINK_GROW_VIBRATE_FAST, - [SPECIES_SANDYGAST - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_PALOSSAND - 1] = ANIM_H_VIBRATE, - [SPECIES_PYUKUMUKU - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TYPE_NULL - 1] = ANIM_H_SHAKE, - [SPECIES_SILVALLY - 1] = ANIM_V_SHAKE, - [SPECIES_MINIOR - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_KOMALA - 1] = ANIM_H_DIP, - [SPECIES_TURTONATOR - 1] = ANIM_SHAKE_GLOW_RED, - [SPECIES_TOGEDEMARU - 1] = ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_MIMIKYU - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, - [SPECIES_BRUXISH - 1] = ANIM_RISING_WOBBLE, - [SPECIES_DRAMPA - 1] = ANIM_V_SHAKE, - [SPECIES_DHELMISE - 1] = ANIM_SWING_CONVEX, - [SPECIES_JANGMO_O - 1] = ANIM_H_STRETCH, - [SPECIES_HAKAMO_O - 1] = ANIM_H_STRETCH, - [SPECIES_KOMMO_O - 1] = ANIM_GROW_STUTTER_TWICE, - [SPECIES_TAPU_KOKO - 1] = ANIM_TRIANGLE_DOWN_TWICE, - [SPECIES_TAPU_LELE - 1] = ANIM_V_SLIDE_WOBBLE_SMALL, - [SPECIES_TAPU_BULU - 1] = ANIM_V_SHAKE_TWICE, - [SPECIES_TAPU_FINI - 1] = ANIM_SHAKE_GLOW_BLUE_SLOW, - [SPECIES_COSMOG - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_COSMOEM - 1] = ANIM_RISING_WOBBLE, - [SPECIES_SOLGALEO - 1] = ANIM_GROW_VIBRATE, - [SPECIES_LUNALA - 1] = ANIM_CIRCULAR_VIBRATE, - [SPECIES_NIHILEGO - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_BUZZWOLE - 1] = ANIM_SHRINK_GROW_VIBRATE_FAST, - [SPECIES_PHEROMOSA - 1] = ANIM_SHRINK_GROW, - [SPECIES_XURKITREE - 1] = ANIM_SHAKE_FLASH_YELLOW_FAST, - [SPECIES_CELESTEELA - 1] = ANIM_GROW_STUTTER_SLOW, - [SPECIES_KARTANA - 1] = ANIM_H_VIBRATE, - [SPECIES_GUZZLORD - 1] = ANIM_SHRINK_GROW_VIBRATE_FAST, - [SPECIES_NECROZMA - 1] = ANIM_GROW_VIBRATE, - [SPECIES_MAGEARNA - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_MARSHADOW - 1] = ANIM_V_SHAKE, - [SPECIES_POIPOLE - 1] = ANIM_SHAKE_GLOW_PURPLE_SLOW, - [SPECIES_NAGANADEL - 1] = ANIM_TRIANGLE_DOWN_TWICE, - [SPECIES_STAKATAKA - 1] = ANIM_GROW_VIBRATE, - [SPECIES_BLACEPHALON - 1] = ANIM_SHAKE_GLOW_RED, - [SPECIES_ZERAORA - 1] = ANIM_V_STRETCH, - [SPECIES_MELTAN - 1] = ANIM_GROW_STUTTER_SLOW, - [SPECIES_MELMETAL - 1] = ANIM_GROW_VIBRATE, - - // Gen 8 Todo: Assign proper ones. - [SPECIES_GROOKEY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_THWACKEY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_RILLABOOM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SCORBUNNY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_RABOOT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CINDERACE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SOBBLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DRIZZILE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_INTELEON - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SKWOVET - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GREEDENT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ROOKIDEE - 1] = ANIM_H_VIBRATE, - [SPECIES_CORVISQUIRE - 1] = ANIM_CIRCLE_INTO_BG, - [SPECIES_CORVIKNIGHT - 1] = ANIM_H_VIBRATE, - [SPECIES_BLIPBUG - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DOTTLER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ORBEETLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_NICKIT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_THIEVUL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GOSSIFLEUR - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ELDEGOSS - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_WOOLOO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DUBWOOL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CHEWTLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DREDNAW - 1] = ANIM_GROW_VIBRATE, - [SPECIES_YAMPER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BOLTUND - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ROLYCOLY - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_CARKOL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_COALOSSAL - 1] = ANIM_GLOW_RED, - [SPECIES_APPLIN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_FLAPPLE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_APPLETUN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SILICOBRA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SANDACONDA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CRAMORANT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ARROKUDA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BARRASKEWDA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TOXEL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TOXTRICITY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SIZZLIPEDE - 1] = ANIM_H_VIBRATE, - [SPECIES_CENTISKORCH - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CLOBBOPUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GRAPPLOCT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SINISTEA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_POLTEAGEIST - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_HATENNA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_HATTREM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_HATTERENE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_IMPIDIMP - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MORGREM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GRIMMSNARL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_OBSTAGOON - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_PERRSERKER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CURSOLA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SIRFETCHD - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MR_RIME - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_RUNERIGUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MILCERY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ALCREMIE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_FALINKS - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_PINCURCHIN - 1] = ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_SNOM - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_FROSMOTH - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_STONJOURNER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_EISCUE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_INDEEDEE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_MORPEKO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CUFANT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_COPPERAJAH - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DRACOZOLT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ARCTOZOLT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DRACOVISH - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ARCTOVISH - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DURALUDON - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DREEPY - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DRAKLOAK - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DRAGAPULT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ZACIAN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ZAMAZENTA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ETERNATUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_KUBFU - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_URSHIFU - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ZARUDE - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_REGIELEKI - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_REGIDRAGO - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_GLASTRIER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SPECTRIER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_CALYREX - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_WYRDEER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_KLEAVOR - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_URSALUNA - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_BASCULEGION - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SNEASLER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_OVERQWIL - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ENAMORUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, - - //Gen 3 Forms - [SPECIES_CASTFORM_SUNNY - 1] = ANIM_GROW_VIBRATE, - [SPECIES_CASTFORM_RAINY - 1] = ANIM_SWING_CONVEX_FAST, - [SPECIES_CASTFORM_SNOWY - 1] = ANIM_V_STRETCH, - [SPECIES_DEOXYS_ATTACK - 1] = ANIM_GROW_VIBRATE, - [SPECIES_DEOXYS_DEFENSE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_DEOXYS_SPEED - 1] = ANIM_GROW_VIBRATE, - //Gen 4 Forms - [SPECIES_BURMY_SANDY_CLOAK - 1] = ANIM_V_STRETCH, - [SPECIES_BURMY_TRASH_CLOAK - 1] = ANIM_V_STRETCH, - [SPECIES_WORMADAM_SANDY_CLOAK - 1] = ANIM_SWING_CONVEX_FAST_SHORT, - [SPECIES_WORMADAM_TRASH_CLOAK - 1] = ANIM_SWING_CONVEX_FAST_SHORT, - [SPECIES_CHERRIM_SUNSHINE - 1] = ANIM_H_JUMPS_V_STRETCH, - [SPECIES_SHELLOS_EAST_SEA - 1] = ANIM_V_STRETCH, - [SPECIES_GASTRODON_EAST_SEA - 1] = ANIM_CIRCULAR_STRETCH_TWICE, - [SPECIES_ROTOM_HEAT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ROTOM_WASH - 1] = ANIM_V_JUMPS_SMALL, - [SPECIES_ROTOM_FROST - 1] = ANIM_H_STRETCH, - [SPECIES_ROTOM_FAN - 1] = ANIM_H_SLIDE_WOBBLE, - [SPECIES_ROTOM_MOW - 1] = ANIM_TIP_MOVE_FORWARD, - [SPECIES_GIRATINA_ORIGIN - 1] = ANIM_LUNGE_GROW, - [SPECIES_SHAYMIN_SKY - 1] = ANIM_V_STRETCH, - [SPECIES_ARCEUS_FIGHTING - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_FLYING - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_POISON - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_GROUND - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_ROCK - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_BUG - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_GHOST - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_STEEL - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_FIRE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_WATER - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_GRASS - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_ELECTRIC - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_PSYCHIC - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_ICE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_DRAGON - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_DARK - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ARCEUS_FAIRY - 1] = ANIM_GROW_VIBRATE, - //Gen 5 Forms - [SPECIES_BASCULIN_BLUE_STRIPED - 1] = ANIM_TIP_MOVE_FORWARD, - [SPECIES_DARMANITAN_ZEN_MODE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_DEERLING_SUMMER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DEERLING_AUTUMN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_DEERLING_WINTER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SAWSBUCK_SUMMER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SAWSBUCK_AUTUMN - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_SAWSBUCK_WINTER - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_TORNADUS_THERIAN - 1] = ANIM_V_STRETCH, - [SPECIES_THUNDURUS_THERIAN - 1] = ANIM_RISING_WOBBLE, - [SPECIES_LANDORUS_THERIAN - 1] = ANIM_CIRCULAR_VIBRATE, - [SPECIES_KYUREM_WHITE - 1] = ANIM_H_SHAKE, - [SPECIES_KYUREM_BLACK - 1] = ANIM_V_SHAKE, - [SPECIES_KELDEO_RESOLUTE - 1] = ANIM_V_STRETCH, - [SPECIES_MELOETTA_PIROUETTE - 1] = ANIM_H_SLIDE_SLOW, - [SPECIES_GENESECT_DOUSE_DRIVE - 1] = ANIM_H_VIBRATE, - [SPECIES_GENESECT_SHOCK_DRIVE - 1] = ANIM_H_VIBRATE, - [SPECIES_GENESECT_BURN_DRIVE - 1] = ANIM_H_VIBRATE, - [SPECIES_GENESECT_CHILL_DRIVE - 1] = ANIM_H_VIBRATE, - //Gen 6 Forms - [SPECIES_GRENINJA_ASH - 1] = ANIM_FLICKER_INCREASING, - [SPECIES_VIVILLON_POLAR - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_TUNDRA - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_CONTINENTAL - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_GARDEN - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_ELEGANT - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_MEADOW - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_MODERN - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_MARINE - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_ARCHIPELAGO - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_HIGH_PLAINS - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_SANDSTORM - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_RIVER - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_MONSOON - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_SAVANNA - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_SUN - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_OCEAN - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_JUNGLE - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_FANCY - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_VIVILLON_POKE_BALL - 1] = ANIM_ZIGZAG_SLOW, - [SPECIES_FLABEBE_YELLOW_FLOWER - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, - [SPECIES_FLABEBE_ORANGE_FLOWER - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, - [SPECIES_FLABEBE_BLUE_FLOWER - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, - [SPECIES_FLABEBE_WHITE_FLOWER - 1] = ANIM_SWING_CONCAVE_FAST_SHORT, - [SPECIES_FLOETTE_YELLOW_FLOWER - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_FLOETTE_ORANGE_FLOWER - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_FLOETTE_BLUE_FLOWER - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_FLOETTE_WHITE_FLOWER - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_FLOETTE_ETERNAL_FLOWER - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_FLORGES_YELLOW_FLOWER - 1] = ANIM_GROW_VIBRATE, - [SPECIES_FLORGES_ORANGE_FLOWER - 1] = ANIM_GROW_VIBRATE, - [SPECIES_FLORGES_BLUE_FLOWER - 1] = ANIM_GROW_VIBRATE, - [SPECIES_FLORGES_WHITE_FLOWER - 1] = ANIM_GROW_VIBRATE, - [SPECIES_FURFROU_HEART_TRIM - 1] = ANIM_H_SLIDE, - [SPECIES_FURFROU_STAR_TRIM - 1] = ANIM_H_SLIDE, - [SPECIES_FURFROU_DIAMOND_TRIM - 1] = ANIM_H_SLIDE, - [SPECIES_FURFROU_DEBUTANTE_TRIM - 1] = ANIM_H_SLIDE, - [SPECIES_FURFROU_MATRON_TRIM - 1] = ANIM_H_SLIDE, - [SPECIES_FURFROU_DANDY_TRIM - 1] = ANIM_H_SLIDE, - [SPECIES_FURFROU_LA_REINE_TRIM - 1] = ANIM_H_SLIDE, - [SPECIES_FURFROU_KABUKI_TRIM - 1] = ANIM_H_SLIDE, - [SPECIES_FURFROU_PHARAOH_TRIM - 1] = ANIM_H_SLIDE, - [SPECIES_MEOWSTIC_FEMALE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_AEGISLASH_BLADE - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW, - [SPECIES_PUMPKABOO_SMALL - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_PUMPKABOO_LARGE - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_PUMPKABOO_SUPER - 1] = ANIM_V_SLIDE_WOBBLE, - [SPECIES_GOURGEIST_SMALL - 1] = ANIM_SHRINK_GROW, - [SPECIES_GOURGEIST_LARGE - 1] = ANIM_SHRINK_GROW, - [SPECIES_GOURGEIST_SUPER - 1] = ANIM_SHRINK_GROW, - [SPECIES_XERNEAS_ACTIVE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_ZYGARDE_10 - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT - 1] = ANIM_V_SQUISH_AND_BOUNCE, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT - 1] = ANIM_TIP_MOVE_FORWARD, - [SPECIES_ZYGARDE_COMPLETE - 1] = ANIM_GROW_VIBRATE, - [SPECIES_HOOPA_UNBOUND - 1] = ANIM_GROW_IN_STAGES, - //Gen 7 Forms - [SPECIES_ORICORIO_POM_POM - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_ORICORIO_PAU - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_ORICORIO_SENSU - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_ROCKRUFF_OWN_TEMPO - 1] = ANIM_V_STRETCH, - [SPECIES_LYCANROC_MIDNIGHT - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_LYCANROC_DUSK - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_WISHIWASHI_SCHOOL - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_SILVALLY_FIGHTING - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_FLYING - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_POISON - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_GROUND - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_ROCK - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_BUG - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_GHOST - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_STEEL - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_FIRE - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_WATER - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_GRASS - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_ELECTRIC - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_PSYCHIC - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_ICE - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_DRAGON - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_DARK - 1] = ANIM_V_SHAKE, - [SPECIES_SILVALLY_FAIRY - 1] = ANIM_V_SHAKE, - [SPECIES_MINIOR_METEOR_ORANGE - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_METEOR_YELLOW - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_METEOR_GREEN - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_METEOR_BLUE - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_METEOR_INDIGO - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_METEOR_VIOLET - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_CORE_RED - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_CORE_ORANGE - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_CORE_YELLOW - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_CORE_GREEN - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_CORE_BLUE - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_CORE_INDIGO - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MINIOR_CORE_VIOLET - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE, - [SPECIES_MIMIKYU_BUSTED - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE, - [SPECIES_NECROZMA_DUSK_MANE - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_NECROZMA_DAWN_WINGS - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_NECROZMA_ULTRA - 1] = ANIM_V_SQUISH_AND_BOUNCE, //Todo - [SPECIES_MAGEARNA_ORIGINAL_COLOR - 1] = ANIM_H_SLIDE_SLOW, -}; - -static const u8 sMonAnimationDelayTable[NUM_SPECIES - 1] = -{ - [SPECIES_BLASTOISE - 1] = 20, - [SPECIES_WEEDLE - 1] = 10, - [SPECIES_KAKUNA - 1] = 20, - [SPECIES_PIDGEOTTO - 1] = 25, - [SPECIES_FEAROW - 1] = 2, - [SPECIES_EKANS - 1] = 30, - [SPECIES_PIKACHU - 1] = 25, - [SPECIES_NIDORAN_F - 1] = 28, - [SPECIES_NIDOKING - 1] = 25, - [SPECIES_PARAS - 1] = 10, - [SPECIES_PARASECT - 1] = 45, - [SPECIES_VENONAT - 1] = 20, - [SPECIES_DIGLETT - 1] = 25, - [SPECIES_DUGTRIO - 1] = 35, - [SPECIES_MEOWTH - 1] = 40, - [SPECIES_PERSIAN - 1] = 20, - [SPECIES_MANKEY - 1] = 20, - [SPECIES_GROWLITHE - 1] = 30, - [SPECIES_ARCANINE - 1] = 8, - [SPECIES_POLIWHIRL - 1] = 5, - [SPECIES_WEEPINBELL - 1] = 3, - [SPECIES_PONYTA - 1] = 10, - [SPECIES_MUK - 1] = 45, - [SPECIES_SHELLDER - 1] = 20, - [SPECIES_HAUNTER - 1] = 23, - [SPECIES_DROWZEE - 1] = 48, - [SPECIES_HYPNO - 1] = 40, - [SPECIES_HITMONCHAN - 1] = 25, - [SPECIES_SCYTHER - 1] = 10, - [SPECIES_TAUROS - 1] = 10, - [SPECIES_TYPHLOSION - 1] = 20, - [SPECIES_FERALIGATR - 1] = 5, - [SPECIES_NATU - 1] = 30, - [SPECIES_MAREEP - 1] = 50, - [SPECIES_AMPHAROS - 1] = 10, - [SPECIES_POLITOED - 1] = 40, - [SPECIES_DUNSPARCE - 1] = 10, - [SPECIES_STEELIX - 1] = 45, - [SPECIES_QWILFISH - 1] = 39, - [SPECIES_SCIZOR - 1] = 19, - [SPECIES_OCTILLERY - 1] = 20, - [SPECIES_SMOOCHUM - 1] = 40, - [SPECIES_TYRANITAR - 1] = 10, - [SPECIES_LUGIA - 1] = 20, - [SPECIES_WAILORD - 1] = 10, - [SPECIES_KECLEON - 1] = 30, - [SPECIES_MILOTIC - 1] = 45, - [SPECIES_SPHEAL - 1] = 15, - [SPECIES_SNORUNT - 1] = 20, - [SPECIES_GRUMPIG - 1] = 15, - [SPECIES_WYNAUT - 1] = 15, - [SPECIES_DUSCLOPS - 1] = 30, - [SPECIES_ABSOL - 1] = 45, - [SPECIES_SALAMENCE - 1] = 70, - [SPECIES_KYOGRE - 1] = 60, - [SPECIES_RAYQUAZA - 1] = 60, -#if P_GEN_7_POKEMON == TRUE - [SPECIES_TAPU_FINI - 1] = 5, -#endif -#if P_GEN_4_POKEMON == TRUE - [SPECIES_ROTOM_FAN - 1] = 7, -#endif -}; +#include "data/pokemon/species_info.h" #define PP_UP_SHIFTS(val) val, (val) << 2, (val) << 4, (val) << 6 #define PP_UP_SHIFTS_INV(val) (u8)~(val), (u8)~((val) << 2), (u8)~((val) << 4), (u8)~((val) << 6) @@ -3551,7 +848,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, iv = (value & (MAX_IV_MASK << 10)) >> 10; SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv); - if (gSpeciesInfo[species].flags & SPECIES_FLAG_ALL_PERFECT_IVS) + if (gSpeciesInfo[species].allPerfectIVs) { iv = MAX_PER_STAT_IVS; SetBoxMonData(boxMon, MON_DATA_HP_IV, &iv); @@ -3561,8 +858,10 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, SetBoxMonData(boxMon, MON_DATA_SPATK_IV, &iv); SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv); } - #if P_LEGENDARY_PERFECT_IVS >= GEN_6 - else if (gSpeciesInfo[species].flags & (SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_MYTHICAL | SPECIES_FLAG_ULTRA_BEAST)) + else if (P_LEGENDARY_PERFECT_IVS >= GEN_6 + && (gSpeciesInfo[species].isLegendary + || gSpeciesInfo[species].isMythical + || gSpeciesInfo[species].isUltraBeast)) { iv = MAX_PER_STAT_IVS; // Initialize a list of IV indices. @@ -3603,7 +902,6 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, } } } - #endif } if (gSpeciesInfo[species].abilities[1]) @@ -4079,19 +1377,14 @@ static u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon) return checksum; } -#if B_FRIENDSHIP_BOOST == TRUE -#define CALC_FRIENDSHIP_BOOST() n = n + ((n * 10 * friendship) / (MAX_FRIENDSHIP * 100)); -#else -#define CALC_FRIENDSHIP_BOOST() -#endif - #define CALC_STAT(base, iv, ev, statIndex, field) \ { \ u8 baseStat = gSpeciesInfo[species].base; \ s32 n = (((2 * baseStat + iv + ev / 4) * level) / 100) + 5; \ u8 nature = GetNature(mon); \ n = ModifyStatByNature(nature, n, statIndex); \ - CALC_FRIENDSHIP_BOOST() \ + if (B_FRIENDSHIP_BOOST == TRUE) \ + n = n + ((n * 10 * friendship) / (MAX_FRIENDSHIP * 100));\ SetMonData(mon, field, &n); \ } @@ -4276,15 +1569,16 @@ void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon) u16 species = GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL); s32 level = GetLevelFromBoxMonExp(boxMon); s32 i; + const struct LevelUpMove *learnset = GetSpeciesLevelUpLearnset(species); - for (i = 0; gLevelUpLearnsets[species][i].move != LEVEL_UP_END; i++) + for (i = 0; learnset[i].move != LEVEL_UP_MOVE_END; i++) { - if (gLevelUpLearnsets[species][i].level > level) + if (learnset[i].level > level) break; - if (gLevelUpLearnsets[species][i].level == 0) + if (learnset[i].level == 0) continue; - if (GiveMoveToBoxMon(boxMon, gLevelUpLearnsets[species][i].move) == MON_HAS_MAX_MOVES) - DeleteFirstMoveAndGiveMoveToBoxMon(boxMon, gLevelUpLearnsets[species][i].move); + if (GiveMoveToBoxMon(boxMon, learnset[i].move) == MON_HAS_MAX_MOVES) + DeleteFirstMoveAndGiveMoveToBoxMon(boxMon, learnset[i].move); } } @@ -4297,23 +1591,24 @@ void GiveBoxMonInitialMoveset_Fast(struct BoxPokemon *boxMon) //Credit: Asparagu { u16 species = GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL); s32 level = GetLevelFromBoxMonExp(boxMon); - s32 i, j; + s32 i; u16 levelMoveCount = 0; u16 moves[MAX_MON_MOVES] = {0}; u8 addedMoves = 0; + const struct LevelUpMove *learnset = GetSpeciesLevelUpLearnset(species); - for (i = 0; gLevelUpLearnsets[species][i].move != LEVEL_UP_END; i++) + for (i = 0; learnset[i].move != LEVEL_UP_MOVE_END; i++) levelMoveCount++; for (i = levelMoveCount; (i >= 0 && addedMoves < MAX_MON_MOVES); i--) { - if (gLevelUpLearnsets[species][i].level > level) + if (learnset[i].level > level) continue; - if (gLevelUpLearnsets[species][i].level == 0) + if (learnset[i].level == 0) continue; - if (moves[addedMoves] != gLevelUpLearnsets[species][i].move) - moves[addedMoves++] = gLevelUpLearnsets[species][i].move; + if (moves[addedMoves] != learnset[i].move) + moves[addedMoves++] = learnset[i].move; } for (i = MAX_MON_MOVES - 1; i >= 0; i--) { @@ -4327,6 +1622,7 @@ u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove) u32 retVal = MOVE_NONE; u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); u8 level = GetMonData(mon, MON_DATA_LEVEL, NULL); + const struct LevelUpMove *learnset = GetSpeciesLevelUpLearnset(species); // since you can learn more than one move per level // the game needs to know whether you decided to @@ -4336,17 +1632,17 @@ u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove) { sLearningMoveTableID = 0; - while (gLevelUpLearnsets[species][sLearningMoveTableID].level != level) + while (learnset[sLearningMoveTableID].level != level) { sLearningMoveTableID++; - if (gLevelUpLearnsets[species][sLearningMoveTableID].move == LEVEL_UP_END) + if (learnset[sLearningMoveTableID].move == LEVEL_UP_MOVE_END) return MOVE_NONE; } } - if (gLevelUpLearnsets[species][sLearningMoveTableID].level == level) + if (learnset[sLearningMoveTableID].level == level) { - gMoveToLearn = gLevelUpLearnsets[species][sLearningMoveTableID].move; + gMoveToLearn = learnset[sLearningMoveTableID].move; sLearningMoveTableID++; retVal = GiveMoveToMon(mon, gMoveToLearn); } @@ -4528,19 +1824,16 @@ void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition) gMultiuseSpriteTemplate.paletteTag = speciesTag; if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_PLAYER_RIGHT) gMultiuseSpriteTemplate.anims = gAnims_MonPic; - else if (speciesTag > SPECIES_SHINY_TAG) + else { - if (gMonFrontAnimsPtrTable[speciesTag - SPECIES_SHINY_TAG] != NULL) - gMultiuseSpriteTemplate.anims = gMonFrontAnimsPtrTable[speciesTag - SPECIES_SHINY_TAG]; + if (speciesTag > SPECIES_SHINY_TAG) + speciesTag = speciesTag - SPECIES_SHINY_TAG; + + speciesTag = SanitizeSpeciesId(speciesTag); + if (gSpeciesInfo[speciesTag].frontAnimFrames != NULL) + gMultiuseSpriteTemplate.anims = gSpeciesInfo[speciesTag].frontAnimFrames; else - gMultiuseSpriteTemplate.anims = gMonFrontAnimsPtrTable[SPECIES_NONE]; - } - else - { - if (gMonFrontAnimsPtrTable[speciesTag] != NULL) - gMultiuseSpriteTemplate.anims = gMonFrontAnimsPtrTable[speciesTag]; - else - gMultiuseSpriteTemplate.anims = gMonFrontAnimsPtrTable[SPECIES_NONE]; + gMultiuseSpriteTemplate.anims = gSpeciesInfo[SPECIES_NONE].frontAnimFrames; } } @@ -4596,44 +1889,20 @@ static void DecryptBoxMon(struct BoxPokemon *boxMon) #define SUBSTRUCT_CASE(n, v1, v2, v3, v4) \ case n: \ { \ - union PokemonSubstruct *substructs0 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs1 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs2 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs3 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs4 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs5 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs6 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs7 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs8 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs9 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs10 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs11 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs12 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs13 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs14 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs15 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs16 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs17 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs18 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs19 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs20 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs21 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs22 = boxMon->secure.substructs; \ - union PokemonSubstruct *substructs23 = boxMon->secure.substructs; \ \ switch (substructType) \ { \ case 0: \ - substruct = &substructs ## n [v1]; \ + substruct = &boxMon->secure.substructs[v1]; \ break; \ case 1: \ - substruct = &substructs ## n [v2]; \ + substruct = &boxMon->secure.substructs[v2]; \ break; \ case 2: \ - substruct = &substructs ## n [v3]; \ + substruct = &boxMon->secure.substructs[v3]; \ break; \ case 3: \ - substruct = &substructs ## n [v4]; \ + substruct = &boxMon->secure.substructs[v4]; \ break; \ } \ break; \ @@ -4737,7 +2006,10 @@ u32 GetMonData3(struct Pokemon *mon, s32 field, u8 *data) return ret; } -u32 GetMonData2(struct Pokemon *mon, s32 field) __attribute__((alias("GetMonData3"))); +u32 GetMonData2(struct Pokemon *mon, s32 field) +{ + return GetMonData3(mon, field, NULL); +} /* GameFreak called GetBoxMonData with either 2 or 3 arguments, for type * safety we have a GetBoxMonData macro (in include/pokemon.h) which @@ -5107,7 +2379,10 @@ u32 GetBoxMonData3(struct BoxPokemon *boxMon, s32 field, u8 *data) return retVal; } -u32 GetBoxMonData2(struct BoxPokemon *boxMon, s32 field) __attribute__((alias("GetBoxMonData3"))); +u32 GetBoxMonData2(struct BoxPokemon *boxMon, s32 field) +{ + return GetBoxMonData3(boxMon, field, NULL); +} #define SET8(lhs) (lhs) = *data #define SET16(lhs) (lhs) = data[0] + (data[1] << 8) @@ -5454,14 +2729,14 @@ u8 GiveMonToPlayer(struct Pokemon *mon) } if (i >= PARTY_SIZE) - return SendMonToPC(mon); + return CopyMonToPC(mon); CopyMon(&gPlayerParty[i], mon, sizeof(*mon)); gPlayerPartyCount = i + 1; return MON_GIVEN_TO_PARTY; } -u8 SendMonToPC(struct Pokemon* mon) +u8 CopyMonToPC(struct Pokemon *mon) { s32 boxNo, boxPos; @@ -5662,7 +2937,76 @@ bool8 IsPokemonStorageFull(void) const u8 *GetSpeciesName(u16 species) { - return gSpeciesNames[SanitizeSpeciesId(species)]; + species = SanitizeSpeciesId(species); + if (gSpeciesInfo[species].speciesName[0] == 0) + return gSpeciesInfo[SPECIES_NONE].speciesName; + return gSpeciesInfo[species].speciesName; +} + +const u8 *GetSpeciesCategory(u16 species) +{ + species = SanitizeSpeciesId(species); + if (gSpeciesInfo[species].categoryName[0] == 0) + return gSpeciesInfo[SPECIES_NONE].categoryName; + return gSpeciesInfo[species].categoryName; +} + +const u8 *GetSpeciesPokedexDescription(u16 species) +{ + species = SanitizeSpeciesId(species); + if (gSpeciesInfo[species].description == NULL) + return gSpeciesInfo[SPECIES_NONE].description; + return gSpeciesInfo[species].description; +} + +u16 GetSpeciesHeight(u16 species) +{ + return gSpeciesInfo[SanitizeSpeciesId(species)].height; +} + +u16 GetSpeciesWeight(u16 species) +{ + return gSpeciesInfo[SanitizeSpeciesId(species)].weight; +} + +const struct LevelUpMove *GetSpeciesLevelUpLearnset(u16 species) +{ + const struct LevelUpMove *learnset = gSpeciesInfo[SanitizeSpeciesId(species)].levelUpLearnset; + if (learnset == NULL) + return gSpeciesInfo[SPECIES_NONE].levelUpLearnset; + return learnset; +} + +const u16 *GetSpeciesTeachableLearnset(u16 species) +{ + const u16 *learnset = gSpeciesInfo[SanitizeSpeciesId(species)].teachableLearnset; + if (learnset == NULL) + return gSpeciesInfo[SPECIES_NONE].teachableLearnset; + return learnset; +} + +const struct Evolution *GetSpeciesEvolutions(u16 species) +{ + const struct Evolution *evolutions = gSpeciesInfo[SanitizeSpeciesId(species)].evolutions; + if (evolutions == NULL) + return gSpeciesInfo[SPECIES_NONE].evolutions; + return evolutions; +} + +const u16 *GetSpeciesFormTable(u16 species) +{ + const u16 *formTable = gSpeciesInfo[SanitizeSpeciesId(species)].formSpeciesIdTable; + if (formTable == NULL) + return gSpeciesInfo[SPECIES_NONE].formSpeciesIdTable; + return formTable; +} + +const struct FormChange *GetSpeciesFormChanges(u16 species) +{ + const struct FormChange *evolutions = gSpeciesInfo[SanitizeSpeciesId(species)].formChangeTable; + if (evolutions == NULL) + return gSpeciesInfo[SPECIES_NONE].formChangeTable; + return evolutions; } u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex) @@ -5770,12 +3114,6 @@ bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, } \ } -#if B_X_ITEMS_BUFF >= GEN_7 - #define X_ITEM_STAGES 2 -#else - #define X_ITEM_STAGES 1 -#endif - // EXP candies store an index for this table in their holdEffectParam. const u32 sExpCandyExperienceTable[] = { [EXP_100 - 1] = 100, @@ -5942,7 +3280,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov dataSigned += temp2; } - else // Decreasing EV (HP or Atk) + else if (evChange < 0) // Decreasing EV (HP or Atk) { if (dataSigned == 0) { @@ -5959,6 +3297,13 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if (dataSigned < 0) dataSigned = 0; } + else // Reset EV (HP or Atk) + { + if (dataSigned == 0) + break; + + dataSigned = 0; + } // Update EVs and stats SetMonData(mon, sGetMonDataEVConstants[temp1], &dataSigned); @@ -6122,7 +3467,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov dataSigned += temp2; } - else // Decreasing EV + else if (evChange < 0) // Decreasing EV { if (dataSigned == 0) { @@ -6139,6 +3484,13 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if (dataSigned < 0) dataSigned = 0; } + else // Reset EV + { + if (dataSigned == 0) + break; + + dataSigned = 0; + } // Update EVs and stats SetMonData(mon, sGetMonDataEVConstants[temp1 + 2], &dataSigned); @@ -6334,18 +3686,20 @@ static void BufferStatRoseMessage(s32 statIdx) { gBattlerTarget = gBattlerInMenuId; StringCopy(gBattleTextBuff1, gStatNamesTable[sStatsToRaise[statIdx]]); -#if B_X_ITEMS_BUFF >= GEN_7 - StringCopy(gBattleTextBuff2, gText_StatSharply); - StringAppend(gBattleTextBuff2, gText_StatRose); -#else - StringCopy(gBattleTextBuff2, gText_StatRose); -#endif + if (B_X_ITEMS_BUFF >= GEN_7) + { + StringCopy(gBattleTextBuff2, gText_StatSharply); + StringAppend(gBattleTextBuff2, gText_StatRose); + } + else + { + StringCopy(gBattleTextBuff2, gText_StatRose); + } BattleStringExpandPlaceholdersToDisplayedString(gText_DefendersStatRose); } u8 *UseStatIncreaseItem(u16 itemId) { - int i; const u8 *itemEffect; if (itemId == ITEM_ENIGMA_BERRY_E_READER) @@ -6420,11 +3774,11 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s u16 friendship; u8 beauty = GetMonData(mon, MON_DATA_BEAUTY, 0); u16 upperPersonality = personality >> 16; - u8 holdEffect; - u16 currentMap; - u16 partnerSpecies; - u16 partnerHeldItem; - u8 partnerHoldEffect; + u32 holdEffect, currentMap, partnerSpecies, partnerHeldItem, partnerHoldEffect; + const struct Evolution *evolutions = GetSpeciesEvolutions(species); + + if (evolutions == NULL) + return SPECIES_NONE; if (tradePartner != NULL) { @@ -6463,112 +3817,124 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s level = GetMonData(mon, MON_DATA_LEVEL, 0); friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, 0); - for (i = 0; i < EVOS_PER_MON; i++) + for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) { - switch (gEvolutionTable[species][i].method) + if (SanitizeSpeciesId(evolutions[i].targetSpecies) == SPECIES_NONE) + continue; + + switch (evolutions[i].method) { case EVO_FRIENDSHIP: - if (friendship >= 220) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (friendship >= FRIENDSHIP_EVO_THRESHOLD) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_FRIENDSHIP_DAY: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 12 && gLocalTime.hours < 24 && friendship >= 220) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (GetTimeOfDay() != TIME_NIGHT && friendship >= FRIENDSHIP_EVO_THRESHOLD) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_LEVEL_DAY: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 12 && gLocalTime.hours < 24 && gEvolutionTable[species][i].param <= level) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (GetTimeOfDay() != TIME_NIGHT && evolutions[i].param <= level) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_FRIENDSHIP_NIGHT: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 0 && gLocalTime.hours < 12 && friendship >= 220) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (GetTimeOfDay() == TIME_NIGHT && friendship >= FRIENDSHIP_EVO_THRESHOLD) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_LEVEL_NIGHT: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 0 && gLocalTime.hours < 12 && gEvolutionTable[species][i].param <= level) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (GetTimeOfDay() == TIME_NIGHT && evolutions[i].param <= level) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_ITEM_HOLD_NIGHT: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 0 && gLocalTime.hours < 12 && heldItem == gEvolutionTable[species][i].param) + if (GetTimeOfDay() == TIME_NIGHT && heldItem == evolutions[i].param) { - heldItem = 0; + heldItem = ITEM_NONE; SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); - targetSpecies = gEvolutionTable[species][i].targetSpecies; + targetSpecies = evolutions[i].targetSpecies; } break; case EVO_ITEM_HOLD_DAY: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 12 && gLocalTime.hours < 24 && heldItem == gEvolutionTable[species][i].param) + if (GetTimeOfDay() != TIME_NIGHT && heldItem == evolutions[i].param) { - heldItem = 0; + heldItem = ITEM_NONE; SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); - targetSpecies = gEvolutionTable[species][i].targetSpecies; + targetSpecies = evolutions[i].targetSpecies; } break; case EVO_LEVEL_DUSK: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 17 && gLocalTime.hours < 18 && gEvolutionTable[species][i].param <= level) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (GetTimeOfDay() == TIME_EVENING && evolutions[i].param <= level) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_LEVEL: - if (gEvolutionTable[species][i].param <= level) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (evolutions[i].param <= level) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_LEVEL_FEMALE: - if (gEvolutionTable[species][i].param <= level && GetMonGender(mon) == MON_FEMALE) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (evolutions[i].param <= level && GetMonGender(mon) == MON_FEMALE) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_LEVEL_MALE: - if (gEvolutionTable[species][i].param <= level && GetMonGender(mon) == MON_MALE) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (evolutions[i].param <= level && GetMonGender(mon) == MON_MALE) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_LEVEL_ATK_GT_DEF: - if (gEvolutionTable[species][i].param <= level) + if (evolutions[i].param <= level) if (GetMonData(mon, MON_DATA_ATK, 0) > GetMonData(mon, MON_DATA_DEF, 0)) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + targetSpecies = evolutions[i].targetSpecies; break; case EVO_LEVEL_ATK_EQ_DEF: - if (gEvolutionTable[species][i].param <= level) + if (evolutions[i].param <= level) if (GetMonData(mon, MON_DATA_ATK, 0) == GetMonData(mon, MON_DATA_DEF, 0)) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + targetSpecies = evolutions[i].targetSpecies; break; case EVO_LEVEL_ATK_LT_DEF: - if (gEvolutionTable[species][i].param <= level) + if (evolutions[i].param <= level) if (GetMonData(mon, MON_DATA_ATK, 0) < GetMonData(mon, MON_DATA_DEF, 0)) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + targetSpecies = evolutions[i].targetSpecies; break; case EVO_LEVEL_SILCOON: - if (gEvolutionTable[species][i].param <= level && (upperPersonality % 10) <= 4) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (evolutions[i].param <= level && (upperPersonality % 10) <= 4) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_LEVEL_CASCOON: - if (gEvolutionTable[species][i].param <= level && (upperPersonality % 10) > 4) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (evolutions[i].param <= level && (upperPersonality % 10) > 4) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_LEVEL_NINJASK: - if (gEvolutionTable[species][i].param <= level) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (evolutions[i].param <= level) + targetSpecies = evolutions[i].targetSpecies; + break; + case EVO_LEVEL_FAMILY_OF_FOUR: + if (evolutions[i].param <= level && (personality % 100) != 0) + targetSpecies = evolutions[i].targetSpecies; + break; + case EVO_LEVEL_FAMILY_OF_THREE: + if (evolutions[i].param <= level && (personality % 100) == 0) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_BEAUTY: - if (gEvolutionTable[species][i].param <= beauty) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (evolutions[i].param <= beauty) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_MOVE: - if (MonKnowsMove(mon, gEvolutionTable[species][i].param)) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (MonKnowsMove(mon, evolutions[i].param)) + targetSpecies = evolutions[i].targetSpecies; + break; + case EVO_MOVE_TWO_SEGMENT: + if (MonKnowsMove(mon, evolutions[i].param) && (personality % 100) != 0) + targetSpecies = evolutions[i].targetSpecies; + break; + case EVO_MOVE_THREE_SEGMENT: + if (MonKnowsMove(mon, evolutions[i].param) && (personality % 100) == 0) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_FRIENDSHIP_MOVE_TYPE: - if (friendship >= 220) + if (friendship >= FRIENDSHIP_EVO_THRESHOLD) { for (j = 0; j < MAX_MON_MOVES; j++) { - if (gBattleMoves[GetMonData(mon, MON_DATA_MOVE1 + j, NULL)].type == gEvolutionTable[species][i].param) + if (gBattleMoves[GetMonData(mon, MON_DATA_MOVE1 + j, NULL)].type == evolutions[i].param) { - targetSpecies = gEvolutionTable[species][i].targetSpecies; + targetSpecies = evolutions[i].targetSpecies; break; } } @@ -6577,15 +3943,15 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s case EVO_SPECIFIC_MON_IN_PARTY: for (j = 0; j < PARTY_SIZE; j++) { - if (GetMonData(&gPlayerParty[j], MON_DATA_SPECIES, NULL) == gEvolutionTable[species][i].param) + if (GetMonData(&gPlayerParty[j], MON_DATA_SPECIES, NULL) == evolutions[i].param) { - targetSpecies = gEvolutionTable[species][i].targetSpecies; + targetSpecies = evolutions[i].targetSpecies; break; } } break; case EVO_LEVEL_DARK_TYPE_MON_IN_PARTY: - if (gEvolutionTable[species][i].param <= level) + if (evolutions[i].param <= level) { for (j = 0; j < PARTY_SIZE; j++) { @@ -6593,7 +3959,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s if (gSpeciesInfo[currSpecies].types[0] == TYPE_DARK || gSpeciesInfo[currSpecies].types[1] == TYPE_DARK) { - targetSpecies = gEvolutionTable[species][i].targetSpecies; + targetSpecies = evolutions[i].targetSpecies; break; } } @@ -6601,27 +3967,27 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s break; case EVO_LEVEL_RAIN: j = GetCurrentWeather(); - if (gEvolutionTable[species][i].param <= level + if (evolutions[i].param <= level && (j == WEATHER_RAIN || j == WEATHER_RAIN_THUNDERSTORM || j == WEATHER_DOWNPOUR)) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + targetSpecies = evolutions[i].targetSpecies; break; case EVO_LEVEL_FOG: j = GetCurrentWeather(); - if (gEvolutionTable[species][i].param <= level + if (evolutions[i].param <= level && (j == WEATHER_FOG_HORIZONTAL || j == WEATHER_FOG_DIAGONAL)) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + targetSpecies = evolutions[i].targetSpecies; break; case EVO_MAPSEC: - if (gMapHeader.regionMapSectionId == gEvolutionTable[species][i].param) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (gMapHeader.regionMapSectionId == evolutions[i].param) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_SPECIFIC_MAP: currentMap = ((gSaveBlock1Ptr->location.mapGroup) << 8 | gSaveBlock1Ptr->location.mapNum); - if (currentMap == gEvolutionTable[species][i].param) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (currentMap == evolutions[i].param) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_LEVEL_NATURE_AMPED: - if (gEvolutionTable[species][i].param <= level) + if (evolutions[i].param <= level) { u8 nature = GetNature(mon); switch (nature) @@ -6639,13 +4005,13 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s case NATURE_RASH: case NATURE_SASSY: case NATURE_QUIRKY: - targetSpecies = gEvolutionTable[species][i].targetSpecies; + targetSpecies = evolutions[i].targetSpecies; break; } } break; case EVO_LEVEL_NATURE_LOW_KEY: - if (gEvolutionTable[species][i].param <= level) + if (evolutions[i].param <= level) { u8 nature = GetNature(mon); switch (nature) @@ -6662,111 +4028,121 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s case NATURE_CALM: case NATURE_GENTLE: case NATURE_CAREFUL: - targetSpecies = gEvolutionTable[species][i].targetSpecies; + targetSpecies = evolutions[i].targetSpecies; break; } } break; case EVO_ITEM_HOLD: - if (heldItem == gEvolutionTable[species][i].param) + if (heldItem == evolutions[i].param) { heldItem = 0; SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); - targetSpecies = gEvolutionTable[species][i].targetSpecies; + targetSpecies = evolutions[i].targetSpecies; } break; } } break; case EVO_MODE_TRADE: - for (i = 0; i < EVOS_PER_MON; i++) + for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) { - switch (gEvolutionTable[species][i].method) + if (SanitizeSpeciesId(evolutions[i].targetSpecies) == SPECIES_NONE) + continue; + + switch (evolutions[i].method) { case EVO_TRADE: - targetSpecies = gEvolutionTable[species][i].targetSpecies; + targetSpecies = evolutions[i].targetSpecies; break; case EVO_TRADE_ITEM: - if (gEvolutionTable[species][i].param == heldItem) + if (evolutions[i].param == heldItem) { heldItem = ITEM_NONE; SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); - targetSpecies = gEvolutionTable[species][i].targetSpecies; + targetSpecies = evolutions[i].targetSpecies; } break; case EVO_TRADE_SPECIFIC_MON: - if (gEvolutionTable[species][i].param == partnerSpecies && partnerHoldEffect != HOLD_EFFECT_PREVENT_EVOLVE) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (evolutions[i].param == partnerSpecies && partnerHoldEffect != HOLD_EFFECT_PREVENT_EVOLVE) + targetSpecies = evolutions[i].targetSpecies; break; } } break; case EVO_MODE_ITEM_USE: case EVO_MODE_ITEM_CHECK: - for (i = 0; i < EVOS_PER_MON; i++) + for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) { - switch (gEvolutionTable[species][i].method) + if (SanitizeSpeciesId(evolutions[i].targetSpecies) == SPECIES_NONE) + continue; + + switch (evolutions[i].method) { case EVO_ITEM: - if (gEvolutionTable[species][i].param == evolutionItem) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (evolutions[i].param == evolutionItem) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_ITEM_FEMALE: - if (GetMonGender(mon) == MON_FEMALE && gEvolutionTable[species][i].param == evolutionItem) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (GetMonGender(mon) == MON_FEMALE && evolutions[i].param == evolutionItem) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_ITEM_MALE: - if (GetMonGender(mon) == MON_MALE && gEvolutionTable[species][i].param == evolutionItem) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (GetMonGender(mon) == MON_MALE && evolutions[i].param == evolutionItem) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_ITEM_NIGHT: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 0 && gLocalTime.hours < 12 && gEvolutionTable[species][i].param == evolutionItem) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (GetTimeOfDay() == TIME_NIGHT && evolutions[i].param == evolutionItem) + targetSpecies = evolutions[i].targetSpecies; break; case EVO_ITEM_DAY: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 12 && gLocalTime.hours < 24 && gEvolutionTable[species][i].param == evolutionItem) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (GetTimeOfDay() != TIME_NIGHT && evolutions[i].param == evolutionItem) + targetSpecies = evolutions[i].targetSpecies; break; } } break; // Battle evolution without leveling; party slot is being passed into the evolutionItem arg. case EVO_MODE_BATTLE_SPECIAL: - for (i = 0; i < EVOS_PER_MON; i++) + for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) { - switch (gEvolutionTable[species][i].method) + if (SanitizeSpeciesId(evolutions[i].targetSpecies) == SPECIES_NONE) + continue; + + switch (evolutions[i].method) { case EVO_CRITICAL_HITS: - if (gPartyCriticalHits[evolutionItem] >= gEvolutionTable[species][i].param) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + if (gPartyCriticalHits[evolutionItem] >= evolutions[i].param) + targetSpecies = evolutions[i].targetSpecies; break; } } break; // Overworld evolution without leveling; evolution method is being passed into the evolutionItem arg. case EVO_MODE_OVERWORLD_SPECIAL: - for (i = 0; i < EVOS_PER_MON; i++) + for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) { - switch (gEvolutionTable[species][i].method) + if (SanitizeSpeciesId(evolutions[i].targetSpecies) == SPECIES_NONE) + continue; + + switch (evolutions[i].method) { case EVO_SCRIPT_TRIGGER_DMG: { u16 currentHp = GetMonData(mon, MON_DATA_HP, NULL); if (evolutionItem == EVO_SCRIPT_TRIGGER_DMG && currentHp != 0 - && (GetMonData(mon, MON_DATA_MAX_HP, NULL) - currentHp >= gEvolutionTable[species][i].param)) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + && (GetMonData(mon, MON_DATA_MAX_HP, NULL) - currentHp >= evolutions[i].param)) + targetSpecies = evolutions[i].targetSpecies; break; } case EVO_DARK_SCROLL: if (evolutionItem == EVO_DARK_SCROLL) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + targetSpecies = evolutions[i].targetSpecies; break; case EVO_WATER_SCROLL: if (evolutionItem == EVO_WATER_SCROLL) - targetSpecies = gEvolutionTable[species][i].targetSpecies; + targetSpecies = evolutions[i].targetSpecies; break; } } @@ -6781,13 +4157,20 @@ bool8 IsMonPastEvolutionLevel(struct Pokemon *mon) int i; u16 species = GetMonData(mon, MON_DATA_SPECIES, 0); u8 level = GetMonData(mon, MON_DATA_LEVEL, 0); + const struct Evolution *evolutions = GetSpeciesEvolutions(species); - for (i = 0; i < EVOS_PER_MON; i++) + if (evolutions == NULL) + return FALSE; + + for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++) { - switch (gEvolutionTable[species][i].method) + if (SanitizeSpeciesId(evolutions[i].targetSpecies) == SPECIES_NONE) + continue; + + switch (evolutions[i].method) { case EVO_LEVEL: - if (gEvolutionTable[species][i].param <= level) + if (evolutions[i].param <= level) return TRUE; break; } @@ -6796,24 +4179,6 @@ bool8 IsMonPastEvolutionLevel(struct Pokemon *mon) return FALSE; } -u16 HoennPokedexNumToSpecies(u16 hoennNum) -{ - u16 species; - - if (!hoennNum) - return 0; - - species = 0; - - while (species < (NUM_SPECIES - 1) && sSpeciesToHoennPokedexNum[species] != hoennNum) - species++; - - if (species == NUM_SPECIES - 1) - return 0; - - return species + 1; -} - u16 NationalPokedexNumToSpecies(u16 nationalNum) { u16 species; @@ -6821,15 +4186,15 @@ u16 NationalPokedexNumToSpecies(u16 nationalNum) if (!nationalNum) return 0; - species = 0; + species = 1; - while (species < (NUM_SPECIES - 1) && sSpeciesToNationalPokedexNum[species] != nationalNum) + while (species < (NUM_SPECIES) && gSpeciesInfo[species].natDexNum != nationalNum) species++; - if (species == NUM_SPECIES - 1) - return 0; + if (species == NUM_SPECIES) + return NATIONAL_DEX_NONE; - return species + 1; + return species; } u16 NationalToHoennOrder(u16 nationalNum) @@ -6853,17 +4218,16 @@ u16 NationalToHoennOrder(u16 nationalNum) u16 SpeciesToNationalPokedexNum(u16 species) { if (!species) - return 0; + return NATIONAL_DEX_NONE; - return sSpeciesToNationalPokedexNum[species - 1]; + return gSpeciesInfo[species].natDexNum; } u16 SpeciesToHoennPokedexNum(u16 species) { if (!species) return 0; - - return sSpeciesToHoennPokedexNum[species - 1]; + return NationalToHoennOrder(gSpeciesInfo[species].natDexNum); } u16 HoennToNationalOrder(u16 hoennNum) @@ -7456,9 +4820,10 @@ u8 CanLearnTeachableMove(u16 species, u16 move) else { u8 i; - for (i = 0; gTeachableLearnsets[species][i] != MOVE_UNAVAILABLE; i++) + const u16 *teachableLearnset = GetSpeciesTeachableLearnset(species); + for (i = 0; teachableLearnset[i] != MOVE_UNAVAILABLE; i++) { - if (gTeachableLearnsets[species][i] == move) + if (teachableLearnset[i] == move) return TRUE; } return FALSE; @@ -7471,6 +4836,7 @@ u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves) u8 numMoves = 0; u16 species = GetMonData(mon, MON_DATA_SPECIES, 0); u8 level = GetMonData(mon, MON_DATA_LEVEL, 0); + const struct LevelUpMove *learnset = GetSpeciesLevelUpLearnset(species); int i, j, k; for (i = 0; i < MAX_MON_MOVES; i++) @@ -7480,23 +4846,23 @@ u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves) { u16 moveLevel; - if (gLevelUpLearnsets[species][i].move == LEVEL_UP_END) + if (learnset[i].move == LEVEL_UP_MOVE_END) break; - moveLevel = gLevelUpLearnsets[species][i].level; + moveLevel = learnset[i].level; if (moveLevel <= level) { - for (j = 0; j < MAX_MON_MOVES && learnedMoves[j] != gLevelUpLearnsets[species][i].move; j++) + for (j = 0; j < MAX_MON_MOVES && learnedMoves[j] != learnset[i].move; j++) ; if (j == MAX_MON_MOVES) { - for (k = 0; k < numMoves && moves[k] != gLevelUpLearnsets[species][i].move; k++) + for (k = 0; k < numMoves && moves[k] != learnset[i].move; k++) ; if (k == numMoves) - moves[numMoves++] = gLevelUpLearnsets[species][i].move; + moves[numMoves++] = learnset[i].move; } } } @@ -7508,9 +4874,10 @@ u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves) { u8 numMoves = 0; int i; + const struct LevelUpMove *learnset = GetSpeciesLevelUpLearnset(species); - for (i = 0; i < MAX_LEVEL_UP_MOVES && gLevelUpLearnsets[species][i].move != LEVEL_UP_END; i++) - moves[numMoves++] = gLevelUpLearnsets[species][i].move; + for (i = 0; i < MAX_LEVEL_UP_MOVES && learnset[i].move != LEVEL_UP_MOVE_END; i++) + moves[numMoves++] = learnset[i].move; return numMoves; } @@ -7522,6 +4889,7 @@ u8 GetNumberOfRelearnableMoves(struct Pokemon *mon) u8 numMoves = 0; u16 species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG, 0); u8 level = GetMonData(mon, MON_DATA_LEVEL, 0); + const struct LevelUpMove *learnset = GetSpeciesLevelUpLearnset(species); int i, j, k; if (species == SPECIES_EGG) @@ -7534,23 +4902,23 @@ u8 GetNumberOfRelearnableMoves(struct Pokemon *mon) { u16 moveLevel; - if (gLevelUpLearnsets[species][i].move == LEVEL_UP_END) + if (learnset[i].move == LEVEL_UP_MOVE_END) break; - moveLevel = gLevelUpLearnsets[species][i].level; + moveLevel = learnset[i].level; if (moveLevel <= level) { - for (j = 0; j < MAX_MON_MOVES && learnedMoves[j] != gLevelUpLearnsets[species][i].move; j++) + for (j = 0; j < MAX_MON_MOVES && learnedMoves[j] != learnset[i].move; j++) ; if (j == MAX_MON_MOVES) { - for (k = 0; k < numMoves && moves[k] != gLevelUpLearnsets[species][i].move; k++) + for (k = 0; k < numMoves && moves[k] != learnset[i].move; k++) ; if (k == numMoves) - moves[numMoves++] = gLevelUpLearnsets[species][i].move; + moves[numMoves++] = learnset[i].move; } } } @@ -7583,10 +4951,26 @@ bool32 IsSpeciesInHoennDex(u16 species) u16 GetBattleBGM(void) { - if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) - return MUS_VS_KYOGRE_GROUDON; - else if (gBattleTypeFlags & BATTLE_TYPE_REGI) - return MUS_VS_REGI; + if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) + { + switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL)) + { + case SPECIES_RAYQUAZA: + return MUS_VS_RAYQUAZA; + case SPECIES_KYOGRE: + case SPECIES_GROUDON: + return MUS_VS_KYOGRE_GROUDON; + case SPECIES_REGIROCK: + case SPECIES_REGICE: + case SPECIES_REGISTEEL: + case SPECIES_REGIGIGAS: + case SPECIES_REGIELEKI: + case SPECIES_REGIDRAGO: + return MUS_VS_REGI; + default: + return MUS_RG_VS_LEGEND; + } + } else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)) return MUS_VS_TRAINER; else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) @@ -7692,60 +5076,26 @@ const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 p { u32 shinyValue; - if (species > NUM_SPECIES) - return gMonPaletteTable[SPECIES_NONE].data; + species = SanitizeSpeciesId(species); shinyValue = GET_SHINY_VALUE(otId, personality); if (shinyValue < SHINY_ODDS) { - if (gMonShinyPaletteTableFemale[species].data != NULL && IsPersonalityFemale(species, personality)) - return gMonShinyPaletteTableFemale[species].data; - else if (gMonShinyPaletteTable[species].data != NULL) - return gMonShinyPaletteTable[species].data; + if (gSpeciesInfo[species].shinyPaletteFemale != NULL && IsPersonalityFemale(species, personality)) + return gSpeciesInfo[species].shinyPaletteFemale; + else if (gSpeciesInfo[species].shinyPalette != NULL) + return gSpeciesInfo[species].shinyPalette; else - return gMonShinyPaletteTable[SPECIES_NONE].data; + return gSpeciesInfo[SPECIES_NONE].shinyPalette; } else { - if (gMonPaletteTableFemale[species].data != NULL && IsPersonalityFemale(species, personality)) - return gMonPaletteTableFemale[species].data; - else if (gMonPaletteTable[species].data != NULL) - return gMonPaletteTable[species].data; + if (gSpeciesInfo[species].paletteFemale != NULL && IsPersonalityFemale(species, personality)) + return gSpeciesInfo[species].paletteFemale; + else if (gSpeciesInfo[species].palette != NULL) + return gSpeciesInfo[species].palette; else - return gMonPaletteTable[SPECIES_NONE].data; - } -} - -const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon) -{ - u16 species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG, 0); - u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0); - u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0); - return GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); -} - -const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality) -{ - u32 shinyValue; - - shinyValue = GET_SHINY_VALUE(otId, personality); - if (shinyValue < SHINY_ODDS) - { - if (gMonShinyPaletteTableFemale[species].data != NULL && IsPersonalityFemale(species, personality)) - return &gMonShinyPaletteTableFemale[species]; - else if (gMonShinyPaletteTable[species].data != NULL) - return &gMonShinyPaletteTable[species]; - else - return &gMonShinyPaletteTable[SPECIES_NONE]; - } - else - { - if (gMonPaletteTableFemale[species].data != NULL && IsPersonalityFemale(species, personality)) - return &gMonPaletteTableFemale[species]; - else if (gMonPaletteTable[species].data != NULL) - return &gMonPaletteTable[species]; - else - return &gMonPaletteTable[SPECIES_NONE]; + return gSpeciesInfo[SPECIES_NONE].palette; } } @@ -7853,29 +5203,33 @@ static s32 GetWildMonTableIdInAlteringCave(u16 species) return 0; } +static inline bool32 CanFirstMonBoostHeldItemRarity(void) +{ + if (GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG)) + return FALSE; + else if ((OW_COMPOUND_EYES < GEN_9) && GetMonAbility(&gPlayerParty[0]) == ABILITY_COMPOUND_EYES) + return TRUE; + else if ((OW_SUPER_LUCK == GEN_8) && GetMonAbility(&gPlayerParty[0]) == ABILITY_SUPER_LUCK) + return TRUE; + return FALSE; +} + void SetWildMonHeldItem(void) { if (!(gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_TRAINER | BATTLE_TYPE_PYRAMID | BATTLE_TYPE_PIKE))) { u16 rnd; u16 species; - u16 chanceNoItem = 45; - u16 chanceNotRare = 95; u16 count = (WILD_DOUBLE_BATTLE) ? 2 : 1; u16 i; - - if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG, 0) - && (GetMonAbility(&gPlayerParty[0]) == ABILITY_COMPOUND_EYES - || GetMonAbility(&gPlayerParty[0]) == ABILITY_SUPER_LUCK)) - { - chanceNoItem = 20; - chanceNotRare = 80; - } + bool32 itemHeldBoost = CanFirstMonBoostHeldItemRarity(); + u16 chanceNoItem = itemHeldBoost ? 20 : 45; + u16 chanceNotRare = itemHeldBoost ? 80 : 95; for (i = 0; i < count; i++) { if (GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) != ITEM_NONE) - continue; // prevent ovewriting previously set item + continue; // prevent overwriting previously set item rnd = Random() % 100; species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES, 0); @@ -8029,18 +5383,18 @@ void DoMonFrontSpriteAnimation(struct Sprite *sprite, u16 species, bool8 noCry, if (HasTwoFramesAnimation(species)) StartSpriteAnim(sprite, 1); } - if (sMonAnimationDelayTable[species - 1] != 0) + if (gSpeciesInfo[species].frontAnimDelay != 0) { // Animation has delay, start delay task u8 taskId = CreateTask(Task_AnimateAfterDelay, 0); STORE_PTR_IN_TASK(sprite, taskId, 0); - gTasks[taskId].sAnimId = sMonFrontAnimIdsTable[species - 1]; - gTasks[taskId].sAnimDelay = sMonAnimationDelayTable[species - 1]; + gTasks[taskId].sAnimId = gSpeciesInfo[species].frontAnimId; + gTasks[taskId].sAnimDelay = gSpeciesInfo[species].frontAnimDelay; } else { // No delay, start animation - LaunchAnimationTaskForFrontSprite(sprite, sMonFrontAnimIdsTable[species - 1]); + LaunchAnimationTaskForFrontSprite(sprite, gSpeciesInfo[species].frontAnimId); } sprite->callback = SpriteCallbackDummy_2; } @@ -8050,20 +5404,20 @@ void PokemonSummaryDoMonAnimation(struct Sprite *sprite, u16 species, bool8 oneF { if (!oneFrame && HasTwoFramesAnimation(species)) StartSpriteAnim(sprite, 1); - if (sMonAnimationDelayTable[species - 1] != 0) + if (gSpeciesInfo[species].frontAnimDelay != 0) { // Animation has delay, start delay task u8 taskId = CreateTask(Task_PokemonSummaryAnimateAfterDelay, 0); STORE_PTR_IN_TASK(sprite, taskId, 0); - gTasks[taskId].sAnimId = sMonFrontAnimIdsTable[species - 1]; - gTasks[taskId].sAnimDelay = sMonAnimationDelayTable[species - 1]; + gTasks[taskId].sAnimId = gSpeciesInfo[species].frontAnimId; + gTasks[taskId].sAnimDelay = gSpeciesInfo[species].frontAnimDelay; SummaryScreen_SetAnimDelayTaskId(taskId); SetSpriteCB_MonAnimDummy(sprite); } else { // No delay, start animation - StartMonSummaryAnimation(sprite, sMonFrontAnimIdsTable[species - 1]); + StartMonSummaryAnimation(sprite, gSpeciesInfo[species].frontAnimId); } } @@ -8087,9 +5441,9 @@ void BattleAnimateBackSprite(struct Sprite *sprite, u16 species) } } -// Unused, identical to GetOpposingLinkMultiBattlerId but for the player +// Identical to GetOpposingLinkMultiBattlerId but for the player // "rightSide" from that team's perspective, i.e. B_POSITION_*_RIGHT -static u8 GetOwnOpposingLinkMultiBattlerId(bool8 rightSide) +static u8 UNUSED GetOwnOpposingLinkMultiBattlerId(bool8 rightSide) { s32 i; s32 battlerId = 0; @@ -8374,8 +5728,8 @@ u8 *MonSpritesGfxManager_GetSpritePtr(u8 managerId, u8 spriteNum) u16 GetFormSpeciesId(u16 speciesId, u8 formId) { - if (gFormSpeciesIdTables[speciesId] != NULL) - return gFormSpeciesIdTables[speciesId][formId]; + if (GetSpeciesFormTable(speciesId) != NULL) + return GetSpeciesFormTable(speciesId)[formId]; else return speciesId; } @@ -8384,11 +5738,11 @@ u8 GetFormIdFromFormSpeciesId(u16 formSpeciesId) { u8 targetFormId = 0; - if (gFormSpeciesIdTables[formSpeciesId] != NULL) + if (GetSpeciesFormTable(formSpeciesId) != NULL) { - for (targetFormId = 0; gFormSpeciesIdTables[formSpeciesId][targetFormId] != FORM_SPECIES_END; targetFormId++) + for (targetFormId = 0; GetSpeciesFormTable(formSpeciesId)[targetFormId] != FORM_SPECIES_END; targetFormId++) { - if (formSpeciesId == gFormSpeciesIdTables[formSpeciesId][targetFormId]) + if (formSpeciesId == GetSpeciesFormTable(formSpeciesId)[targetFormId]) break; } } @@ -8403,10 +5757,10 @@ u16 GetFormChangeTargetSpecies(struct Pokemon *mon, u16 method, u32 arg) // Returns SPECIES_NONE if no form change is possible u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 arg) { - u32 i, j; + u32 i; u16 targetSpecies = SPECIES_NONE; u16 species = GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL); - const struct FormChange *formChanges = gFormChangeTablePointers[species]; + const struct FormChange *formChanges = GetSpeciesFormChanges(species); u16 heldItem; u32 ability; @@ -8432,13 +5786,11 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 switch (formChanges[i].param2) { case DAY: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 12 && gLocalTime.hours < 24) + if (GetTimeOfDay() != TIME_NIGHT) targetSpecies = formChanges[i].targetSpecies; break; case NIGHT: - RtcCalcLocalTime(); - if (gLocalTime.hours >= 0 && gLocalTime.hours < 12) + if (GetTimeOfDay() == TIME_NIGHT) targetSpecies = formChanges[i].targetSpecies; break; default: @@ -8447,6 +5799,13 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 } } break; + case FORM_CHANGE_ITEM_USE_MULTICHOICE: + if (arg == formChanges[i].param1) + { + if (formChanges[i].param2 == gSpecialVar_Result) + targetSpecies = formChanges[i].targetSpecies; + } + break; case FORM_CHANGE_MOVE: if (BoxMonKnowsMove(boxMon, formChanges[i].param1) != formChanges[i].param2) targetSpecies = formChanges[i].targetSpecies; @@ -8462,8 +5821,22 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 break; case FORM_CHANGE_WITHDRAW: case FORM_CHANGE_FAINT: + case FORM_CHANGE_STATUS: targetSpecies = formChanges[i].targetSpecies; break; + case FORM_CHANGE_TIME_OF_DAY: + switch (formChanges[i].param1) + { + case DAY: + if (GetTimeOfDay() != TIME_NIGHT) + targetSpecies = formChanges[i].targetSpecies; + break; + case NIGHT: + if (GetTimeOfDay() == TIME_NIGHT) + targetSpecies = formChanges[i].targetSpecies; + break; + } + break; } } } @@ -8474,8 +5847,8 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 bool32 DoesSpeciesHaveFormChangeMethod(u16 species, u16 method) { - u32 i, j; - const struct FormChange *formChanges = gFormChangeTablePointers[species]; + u32 i; + const struct FormChange *formChanges = GetSpeciesFormChanges(species); if (formChanges != NULL) { @@ -8493,6 +5866,7 @@ u16 MonTryLearningNewMoveEvolution(struct Pokemon *mon, bool8 firstMove) { u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); u8 level = GetMonData(mon, MON_DATA_LEVEL, NULL); + const struct LevelUpMove *learnset = GetSpeciesLevelUpLearnset(species); // Since you can learn more than one move per level, // the game needs to know whether you decided to @@ -8502,11 +5876,11 @@ u16 MonTryLearningNewMoveEvolution(struct Pokemon *mon, bool8 firstMove) { sLearningMoveTableID = 0; } - while(gLevelUpLearnsets[species][sLearningMoveTableID].move != LEVEL_UP_END) + while(learnset[sLearningMoveTableID].move != LEVEL_UP_MOVE_END) { - while (gLevelUpLearnsets[species][sLearningMoveTableID].level == 0 || gLevelUpLearnsets[species][sLearningMoveTableID].level == level) + while (learnset[sLearningMoveTableID].level == 0 || learnset[sLearningMoveTableID].level == level) { - gMoveToLearn = gLevelUpLearnsets[species][sLearningMoveTableID].move; + gMoveToLearn = learnset[sLearningMoveTableID].move; sLearningMoveTableID++; return GiveMoveToMon(mon, gMoveToLearn); } @@ -8566,11 +5940,11 @@ void TrySpecialOverworldEvo(void) bool32 SpeciesHasGenderDifferences(u16 species) { - if (gMonFrontPicTableFemale[species].data != NULL - || gMonPaletteTableFemale[species].data != NULL - || gMonBackPicTableFemale[species].data != NULL - || gMonShinyPaletteTableFemale[species].data != NULL - || gMonIconTableFemale[species] != NULL) + if (gSpeciesInfo[species].frontPicFemale != NULL + || gSpeciesInfo[species].paletteFemale != NULL + || gSpeciesInfo[species].backPicFemale != NULL + || gSpeciesInfo[species].shinyPaletteFemale != NULL + || gSpeciesInfo[species].iconSpriteFemale != NULL) return TRUE; return FALSE; @@ -8618,7 +5992,7 @@ void TryToSetBattleFormChangeMoves(struct Pokemon *mon, u16 method) { int i, j; u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); - const struct FormChange *formChanges = gFormChangeTablePointers[species]; + const struct FormChange *formChanges = GetSpeciesFormChanges(species); if (formChanges == NULL || (method != FORM_CHANGE_BEGIN_BATTLE && method != FORM_CHANGE_END_BATTLE)) @@ -8665,6 +6039,24 @@ u32 GetMonFriendshipScore(struct Pokemon *pokemon) return FRIENDSHIP_NONE; } +u32 GetMonAffectionHearts(struct Pokemon *pokemon) +{ + u32 friendship = GetMonData(pokemon, MON_DATA_FRIENDSHIP, NULL); + + if (friendship == MAX_FRIENDSHIP) + return AFFECTION_FIVE_HEARTS; + if (friendship >= 220) + return AFFECTION_FOUR_HEARTS; + if (friendship >= 180) + return AFFECTION_THREE_HEARTS; + if (friendship >= 130) + return AFFECTION_TWO_HEARTS; + if (friendship >= 80) + return AFFECTION_ONE_HEART; + + return AFFECTION_NO_HEARTS; +} + void UpdateMonPersonality(struct BoxPokemon *boxMon, u32 personality) { struct PokemonSubstruct0 *old0, *new0; @@ -8693,3 +6085,30 @@ void UpdateMonPersonality(struct BoxPokemon *boxMon, u32 personality) boxMon->checksum = CalculateBoxMonChecksum(boxMon); EncryptBoxMon(boxMon); } + +u16 GetCryIdBySpecies(u16 species) +{ + species = SanitizeSpeciesId(species); + if (gSpeciesInfo[species].cryId >= CRY_COUNT) + return 0; + return gSpeciesInfo[species].cryId; +} + +u16 GetSpeciesPreEvolution(u16 species) +{ + int i, j; + + for (i = SPECIES_BULBASAUR; i < NUM_SPECIES; i++) + { + const struct Evolution *evolutions = GetSpeciesEvolutions(i); + if (evolutions == NULL) + continue; + for (j = 0; evolutions[j].method != EVOLUTIONS_END; j++) + { + if (SanitizeSpeciesId(evolutions[j].targetSpecies) == species) + return i; + } + } + + return SPECIES_NONE; +} diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c index 86def9b721..95557e431f 100644 --- a/src/pokemon_animation.c +++ b/src/pokemon_animation.c @@ -25,9 +25,7 @@ uses a BACK_ANIM_* that refers to a set of 3 ANIM functions. Which of the 3 that gets used depends on the Pokémon's nature (see sBackAnimationIds). - The table linking species to a BACK_ANIM is in this file (sSpeciesToBackAnimSet) - while the table linking species to an ANIM for their front animation is in - pokemon.c (sMonFrontAnimIdsTable). + The gSpeciesInfo table links to both BACK_ANIM and ANIM in its frontAnimId and backAnimId fields. These are the functions that will start an animation: - LaunchAnimationTaskForFrontSprite @@ -213,907 +211,6 @@ static struct PokemonAnimData sAnims[MAX_BATTLERS_COUNT]; static u8 sAnimIdx; static bool32 sIsSummaryAnim; -static const u8 sSpeciesToBackAnimSet[NUM_SPECIES] = -{ - [SPECIES_BULBASAUR] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_IVYSAUR] = BACK_ANIM_H_SLIDE, - [SPECIES_VENUSAUR] = BACK_ANIM_H_SHAKE, - [SPECIES_CHARMANDER] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_CHARMELEON] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_CHARIZARD] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_SQUIRTLE] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_WARTORTLE] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_BLASTOISE] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_CATERPIE] = BACK_ANIM_H_SLIDE, - [SPECIES_METAPOD] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_BUTTERFREE] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_WEEDLE] = BACK_ANIM_H_SLIDE, - [SPECIES_KAKUNA] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_BEEDRILL] = BACK_ANIM_H_VIBRATE, - [SPECIES_PIDGEY] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_PIDGEOTTO] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_PIDGEOT] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_RATTATA] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_RATICATE] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_SPEAROW] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_FEAROW] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_EKANS] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_ARBOK] = BACK_ANIM_V_SHAKE, - [SPECIES_PIKACHU] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_RAICHU] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_SANDSHREW] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_SANDSLASH] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_NIDORAN_F] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_NIDORINA] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_NIDOQUEEN] = BACK_ANIM_V_SHAKE, - [SPECIES_NIDORAN_M] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_NIDORINO] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_NIDOKING] = BACK_ANIM_V_SHAKE, - [SPECIES_CLEFAIRY] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_CLEFABLE] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_VULPIX] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_NINETALES] = BACK_ANIM_H_VIBRATE, - [SPECIES_JIGGLYPUFF] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_WIGGLYTUFF] = BACK_ANIM_GROW, - [SPECIES_ZUBAT] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_GOLBAT] = BACK_ANIM_V_SHAKE, - [SPECIES_ODDISH] = BACK_ANIM_H_SLIDE, - [SPECIES_GLOOM] = BACK_ANIM_H_SLIDE, - [SPECIES_VILEPLUME] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_PARAS] = BACK_ANIM_H_SLIDE, - [SPECIES_PARASECT] = BACK_ANIM_H_SHAKE, - [SPECIES_VENONAT] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_VENOMOTH] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_DIGLETT] = BACK_ANIM_V_SHAKE, - [SPECIES_DUGTRIO] = BACK_ANIM_V_SHAKE, - [SPECIES_MEOWTH] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_PERSIAN] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_PSYDUCK] = BACK_ANIM_H_SLIDE, - [SPECIES_GOLDUCK] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_MANKEY] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_PRIMEAPE] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_GROWLITHE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_ARCANINE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_POLIWAG] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_POLIWHIRL] = BACK_ANIM_V_SHAKE, - [SPECIES_POLIWRATH] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_ABRA] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_KADABRA] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_ALAKAZAM] = BACK_ANIM_GROW_STUTTER, - [SPECIES_MACHOP] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_MACHOKE] = BACK_ANIM_V_SHAKE, - [SPECIES_MACHAMP] = BACK_ANIM_V_SHAKE, - [SPECIES_BELLSPROUT] = BACK_ANIM_V_STRETCH, - [SPECIES_WEEPINBELL] = BACK_ANIM_V_STRETCH, - [SPECIES_VICTREEBEL] = BACK_ANIM_V_STRETCH, - [SPECIES_TENTACOOL] = BACK_ANIM_H_SLIDE, - [SPECIES_TENTACRUEL] = BACK_ANIM_H_SLIDE, - [SPECIES_GEODUDE] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_GRAVELER] = BACK_ANIM_H_SHAKE, - [SPECIES_GOLEM] = BACK_ANIM_H_SHAKE, - [SPECIES_PONYTA] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_RAPIDASH] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SLOWPOKE] = BACK_ANIM_H_SLIDE, - [SPECIES_SLOWBRO] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_MAGNEMITE] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_MAGNETON] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_FARFETCHD] = BACK_ANIM_H_SLIDE, - [SPECIES_DODUO] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_DODRIO] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SEEL] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_DEWGONG] = BACK_ANIM_H_SLIDE, - [SPECIES_GRIMER] = BACK_ANIM_V_STRETCH, - [SPECIES_MUK] = BACK_ANIM_H_STRETCH, - [SPECIES_SHELLDER] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_CLOYSTER] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_GASTLY] = BACK_ANIM_H_VIBRATE, - [SPECIES_HAUNTER] = BACK_ANIM_H_VIBRATE, - [SPECIES_GENGAR] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_ONIX] = BACK_ANIM_V_SHAKE, - [SPECIES_DROWZEE] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_HYPNO] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_KRABBY] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_KINGLER] = BACK_ANIM_V_SHAKE, - [SPECIES_VOLTORB] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_ELECTRODE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_EXEGGCUTE] = BACK_ANIM_H_SLIDE, - [SPECIES_EXEGGUTOR] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_CUBONE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_MAROWAK] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_HITMONLEE] = BACK_ANIM_H_SLIDE, - [SPECIES_HITMONCHAN] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_LICKITUNG] = BACK_ANIM_H_SLIDE, - [SPECIES_KOFFING] = BACK_ANIM_GROW, - [SPECIES_WEEZING] = BACK_ANIM_GROW, - [SPECIES_RHYHORN] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_RHYDON] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_CHANSEY] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_TANGELA] = BACK_ANIM_V_STRETCH, - [SPECIES_KANGASKHAN] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_HORSEA] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SEADRA] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_GOLDEEN] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_SEAKING] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_STARYU] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_STARMIE] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_MR_MIME] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_SCYTHER] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_JYNX] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_ELECTABUZZ] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_MAGMAR] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_PINSIR] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_TAUROS] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_MAGIKARP] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_GYARADOS] = BACK_ANIM_V_SHAKE, - [SPECIES_LAPRAS] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_DITTO] = BACK_ANIM_SHRINK_GROW, - [SPECIES_EEVEE] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_VAPOREON] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_JOLTEON] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_FLAREON] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_PORYGON] = BACK_ANIM_H_VIBRATE, - [SPECIES_OMANYTE] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_OMASTAR] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_KABUTO] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_KABUTOPS] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_AERODACTYL] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SNORLAX] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_ARTICUNO] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_ZAPDOS] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_MOLTRES] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_DRATINI] = BACK_ANIM_H_SLIDE, - [SPECIES_DRAGONAIR] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_DRAGONITE] = BACK_ANIM_V_SHAKE, - [SPECIES_MEWTWO] = BACK_ANIM_GROW_STUTTER, - [SPECIES_MEW] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_CHIKORITA] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_BAYLEEF] = BACK_ANIM_H_SLIDE, - [SPECIES_MEGANIUM] = BACK_ANIM_V_SHAKE, - [SPECIES_CYNDAQUIL] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_QUILAVA] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_TYPHLOSION] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_TOTODILE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_CROCONAW] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_FERALIGATR] = BACK_ANIM_V_SHAKE, - [SPECIES_SENTRET] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_FURRET] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_HOOTHOOT] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_NOCTOWL] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_LEDYBA] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_LEDIAN] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_SPINARAK] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_ARIADOS] = BACK_ANIM_H_SLIDE, - [SPECIES_CROBAT] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_CHINCHOU] = BACK_ANIM_V_STRETCH, - [SPECIES_LANTURN] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_PICHU] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_CLEFFA] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_IGGLYBUFF] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_TOGEPI] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_TOGETIC] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_NATU] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_XATU] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_MAREEP] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_FLAAFFY] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_AMPHAROS] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_BELLOSSOM] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_MARILL] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_AZUMARILL] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SUDOWOODO] = BACK_ANIM_H_SLIDE, - [SPECIES_POLITOED] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_HOPPIP] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_SKIPLOOM] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_JUMPLUFF] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_AIPOM] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_SUNKERN] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SUNFLORA] = BACK_ANIM_H_SLIDE, - [SPECIES_YANMA] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_WOOPER] = BACK_ANIM_V_STRETCH, - [SPECIES_QUAGSIRE] = BACK_ANIM_H_SLIDE, - [SPECIES_ESPEON] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_UMBREON] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_MURKROW] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_SLOWKING] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_MISDREAVUS] = BACK_ANIM_H_VIBRATE, - [SPECIES_UNOWN] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_WOBBUFFET] = BACK_ANIM_V_STRETCH, - [SPECIES_GIRAFARIG] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_PINECO] = BACK_ANIM_H_SHAKE, - [SPECIES_FORRETRESS] = BACK_ANIM_V_SHAKE, - [SPECIES_DUNSPARCE] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_GLIGAR] = BACK_ANIM_SHRINK_GROW, - [SPECIES_STEELIX] = BACK_ANIM_V_SHAKE, - [SPECIES_SNUBBULL] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_GRANBULL] = BACK_ANIM_V_SHAKE, - [SPECIES_QWILFISH] = BACK_ANIM_GROW_STUTTER, - [SPECIES_SCIZOR] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SHUCKLE] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_HERACROSS] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SNEASEL] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_TEDDIURSA] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_URSARING] = BACK_ANIM_V_SHAKE, - [SPECIES_SLUGMA] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_MAGCARGO] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_SWINUB] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_PILOSWINE] = BACK_ANIM_H_SHAKE, - [SPECIES_CORSOLA] = BACK_ANIM_H_SLIDE, - [SPECIES_REMORAID] = BACK_ANIM_H_SLIDE, - [SPECIES_OCTILLERY] = BACK_ANIM_SHRINK_GROW, - [SPECIES_DELIBIRD] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_MANTINE] = BACK_ANIM_H_SLIDE, - [SPECIES_SKARMORY] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_HOUNDOUR] = BACK_ANIM_V_SHAKE, - [SPECIES_HOUNDOOM] = BACK_ANIM_V_SHAKE, - [SPECIES_KINGDRA] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_PHANPY] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_DONPHAN] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_PORYGON2] = BACK_ANIM_H_VIBRATE, - [SPECIES_STANTLER] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SMEARGLE] = BACK_ANIM_H_SLIDE, - [SPECIES_TYROGUE] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_HITMONTOP] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_SMOOCHUM] = BACK_ANIM_H_SLIDE, - [SPECIES_ELEKID] = BACK_ANIM_H_SHAKE, - [SPECIES_MAGBY] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_MILTANK] = BACK_ANIM_H_SLIDE, - [SPECIES_BLISSEY] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_RAIKOU] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_ENTEI] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_SUICUNE] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_LARVITAR] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_PUPITAR] = BACK_ANIM_V_SHAKE, - [SPECIES_TYRANITAR] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_LUGIA] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_HO_OH] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_CELEBI] = BACK_ANIM_SHAKE_GLOW_GREEN, - [SPECIES_TREECKO] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_GROVYLE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SCEPTILE] = BACK_ANIM_V_SHAKE, - [SPECIES_TORCHIC] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_COMBUSKEN] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_BLAZIKEN] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_MUDKIP] = BACK_ANIM_H_SLIDE, - [SPECIES_MARSHTOMP] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_SWAMPERT] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_POOCHYENA] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_MIGHTYENA] = BACK_ANIM_H_SHAKE, - [SPECIES_ZIGZAGOON] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_LINOONE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_WURMPLE] = BACK_ANIM_V_STRETCH, - [SPECIES_SILCOON] = BACK_ANIM_H_SHAKE, - [SPECIES_BEAUTIFLY] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_CASCOON] = BACK_ANIM_H_SHAKE, - [SPECIES_DUSTOX] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_LOTAD] = BACK_ANIM_H_SLIDE, - [SPECIES_LOMBRE] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_LUDICOLO] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_SEEDOT] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_NUZLEAF] = BACK_ANIM_V_SHAKE, - [SPECIES_SHIFTRY] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_NINCADA] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_NINJASK] = BACK_ANIM_H_VIBRATE, - [SPECIES_SHEDINJA] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_TAILLOW] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_SWELLOW] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SHROOMISH] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_BRELOOM] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SPINDA] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_WINGULL] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_PELIPPER] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_SURSKIT] = BACK_ANIM_H_SPRING, - [SPECIES_MASQUERAIN] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_WAILMER] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_WAILORD] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_SKITTY] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_DELCATTY] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_KECLEON] = BACK_ANIM_H_VIBRATE, - [SPECIES_BALTOY] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_CLAYDOL] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_NOSEPASS] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_TORKOAL] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_SABLEYE] = BACK_ANIM_H_VIBRATE, - [SPECIES_BARBOACH] = BACK_ANIM_V_STRETCH, - [SPECIES_WHISCASH] = BACK_ANIM_V_SHAKE, - [SPECIES_LUVDISC] = BACK_ANIM_H_SPRING_REPEATED, - [SPECIES_CORPHISH] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_CRAWDAUNT] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_FEEBAS] = BACK_ANIM_H_SPRING, - [SPECIES_MILOTIC] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_CARVANHA] = BACK_ANIM_H_SPRING_REPEATED, - [SPECIES_SHARPEDO] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_TRAPINCH] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_VIBRAVA] = BACK_ANIM_H_VIBRATE, - [SPECIES_FLYGON] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_MAKUHITA] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_HARIYAMA] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_ELECTRIKE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_MANECTRIC] = BACK_ANIM_V_SHAKE, - [SPECIES_NUMEL] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_CAMERUPT] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_SPHEAL] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SEALEO] = BACK_ANIM_V_SHAKE, - [SPECIES_WALREIN] = BACK_ANIM_V_SHAKE, - [SPECIES_CACNEA] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_CACTURNE] = BACK_ANIM_H_SHAKE, - [SPECIES_SNORUNT] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_GLALIE] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_LUNATONE] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SOLROCK] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_AZURILL] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_SPOINK] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_GRUMPIG] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_PLUSLE] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_MINUN] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_MAWILE] = BACK_ANIM_V_SHAKE, - [SPECIES_MEDITITE] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_MEDICHAM] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_SWABLU] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_ALTARIA] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_WYNAUT] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_DUSKULL] = BACK_ANIM_H_VIBRATE, - [SPECIES_DUSCLOPS] = BACK_ANIM_H_VIBRATE, - [SPECIES_ROSELIA] = BACK_ANIM_SHAKE_GLOW_GREEN, - [SPECIES_SLAKOTH] = BACK_ANIM_H_SLIDE, - [SPECIES_VIGOROTH] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_SLAKING] = BACK_ANIM_H_SHAKE, - [SPECIES_GULPIN] = BACK_ANIM_V_STRETCH, - [SPECIES_SWALOT] = BACK_ANIM_V_STRETCH, - [SPECIES_TROPIUS] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_WHISMUR] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_LOUDRED] = BACK_ANIM_V_SHAKE, - [SPECIES_EXPLOUD] = BACK_ANIM_GROW_STUTTER, - [SPECIES_CLAMPERL] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_HUNTAIL] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_GOREBYSS] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_ABSOL] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_SHUPPET] = BACK_ANIM_H_VIBRATE, - [SPECIES_BANETTE] = BACK_ANIM_H_VIBRATE, - [SPECIES_SEVIPER] = BACK_ANIM_V_STRETCH, - [SPECIES_ZANGOOSE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_RELICANTH] = BACK_ANIM_H_SLIDE, - [SPECIES_ARON] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_LAIRON] = BACK_ANIM_V_SHAKE, - [SPECIES_AGGRON] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_CASTFORM] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_CASTFORM_SUNNY] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_CASTFORM_RAINY] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_CASTFORM_SNOWY] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_VOLBEAT] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_ILLUMISE] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_LILEEP] = BACK_ANIM_H_STRETCH, - [SPECIES_CRADILY] = BACK_ANIM_V_STRETCH, - [SPECIES_ANORITH] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_ARMALDO] = BACK_ANIM_V_SHAKE, - [SPECIES_RALTS] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_KIRLIA] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_GARDEVOIR] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_BAGON] = BACK_ANIM_V_SHAKE, - [SPECIES_SHELGON] = BACK_ANIM_V_SHAKE, - [SPECIES_SALAMENCE] = BACK_ANIM_H_SHAKE, - [SPECIES_BELDUM] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_METANG] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_METAGROSS] = BACK_ANIM_V_SHAKE, - [SPECIES_REGIROCK] = BACK_ANIM_V_SHAKE, - [SPECIES_REGICE] = BACK_ANIM_V_SHAKE, - [SPECIES_REGISTEEL] = BACK_ANIM_V_SHAKE, - [SPECIES_KYOGRE] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_GROUDON] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_RAYQUAZA] = BACK_ANIM_GROW_STUTTER, - [SPECIES_LATIAS] = BACK_ANIM_H_VIBRATE, - [SPECIES_LATIOS] = BACK_ANIM_H_VIBRATE, - [SPECIES_JIRACHI] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_DEOXYS] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_CHIMECHO] = BACK_ANIM_CONVEX_DOUBLE_ARC, - - // Gen 4 - [SPECIES_TURTWIG] = BACK_ANIM_H_SLIDE, - [SPECIES_GROTLE] = BACK_ANIM_H_SLIDE, - [SPECIES_TORTERRA] = BACK_ANIM_SHAKE_GLOW_GREEN, - [SPECIES_CHIMCHAR] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_MONFERNO] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_INFERNAPE] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_PIPLUP] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_PRINPLUP] = BACK_ANIM_V_STRETCH, - [SPECIES_EMPOLEON] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_STARLY] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_STARAVIA] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_STARAPTOR] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_BIDOOF] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_BIBAREL] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_KRICKETOT] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_KRICKETUNE] = BACK_ANIM_H_VIBRATE, - [SPECIES_SHINX] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_LUXIO] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_LUXRAY] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_BUDEW] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_ROSERADE] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_CRANIDOS] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_RAMPARDOS] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_SHIELDON] = BACK_ANIM_V_SHAKE, - [SPECIES_BASTIODON] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_BURMY] = BACK_ANIM_H_SHAKE, - [SPECIES_WORMADAM] = BACK_ANIM_V_SHAKE, - [SPECIES_MOTHIM] = BACK_ANIM_H_SHAKE, - [SPECIES_COMBEE] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_VESPIQUEN] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_PACHIRISU] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_BUIZEL] = BACK_ANIM_H_SLIDE, - [SPECIES_FLOATZEL] = BACK_ANIM_V_STRETCH, - [SPECIES_CHERUBI] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_CHERRIM] = BACK_ANIM_V_STRETCH, - [SPECIES_SHELLOS] = BACK_ANIM_H_SPRING, - [SPECIES_GASTRODON] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_AMBIPOM] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_DRIFLOON] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_DRIFBLIM] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_BUNEARY] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_LOPUNNY] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_MISMAGIUS] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_HONCHKROW] = BACK_ANIM_H_STRETCH, - [SPECIES_GLAMEOW] = BACK_ANIM_SHRINK_GROW, - [SPECIES_PURUGLY] = BACK_ANIM_GROW_STUTTER, - [SPECIES_CHINGLING] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_STUNKY] = BACK_ANIM_H_SLIDE, - [SPECIES_SKUNTANK] = BACK_ANIM_H_STRETCH, - [SPECIES_BRONZOR] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_BRONZONG] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_BONSLY] = BACK_ANIM_H_VIBRATE, - [SPECIES_MIME_JR] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_HAPPINY] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_CHATOT] = BACK_ANIM_V_STRETCH, - [SPECIES_SPIRITOMB] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_GIBLE] = BACK_ANIM_H_SHAKE, - [SPECIES_GABITE] = BACK_ANIM_V_SHAKE, - [SPECIES_GARCHOMP] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_MUNCHLAX] = BACK_ANIM_GROW, - [SPECIES_RIOLU] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_LUCARIO] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_HIPPOPOTAS] = BACK_ANIM_H_SLIDE, - [SPECIES_HIPPOWDON] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_SKORUPI] = BACK_ANIM_H_SLIDE, - [SPECIES_DRAPION] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_CROAGUNK] = BACK_ANIM_GROW, - [SPECIES_TOXICROAK] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_CARNIVINE] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_FINNEON] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_LUMINEON] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_MANTYKE] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_SNOVER] = BACK_ANIM_V_STRETCH, - [SPECIES_ABOMASNOW] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_WEAVILE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_MAGNEZONE] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_LICKILICKY] = BACK_ANIM_V_SHAKE, - [SPECIES_RHYPERIOR] = BACK_ANIM_V_SHAKE, - [SPECIES_TANGROWTH] = BACK_ANIM_GROW, - [SPECIES_ELECTIVIRE] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_MAGMORTAR] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_TOGEKISS] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_YANMEGA] = BACK_ANIM_H_VIBRATE, - [SPECIES_LEAFEON] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_GLACEON] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_GLISCOR] = BACK_ANIM_V_STRETCH, - [SPECIES_MAMOSWINE] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_PORYGON_Z] = BACK_ANIM_H_VIBRATE, - [SPECIES_GALLADE] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_PROBOPASS] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_DUSKNOIR] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_FROSLASS] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_ROTOM] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_UXIE] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_MESPRIT] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_AZELF] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_DIALGA] = BACK_ANIM_V_SHAKE, - [SPECIES_PALKIA] = BACK_ANIM_H_SHAKE, - [SPECIES_HEATRAN] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_REGIGIGAS] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_GIRATINA] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_CRESSELIA] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_PHIONE] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_MANAPHY] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_DARKRAI] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_SHAYMIN] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_ARCEUS] = BACK_ANIM_GROW, - - //Gen 4 Forms - [SPECIES_DEOXYS_ATTACK] = BACK_ANIM_GROW_STUTTER, - [SPECIES_DEOXYS_DEFENSE] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_DEOXYS_SPEED] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_BURMY_SANDY_CLOAK] = BACK_ANIM_H_SHAKE, - [SPECIES_BURMY_TRASH_CLOAK] = BACK_ANIM_H_SHAKE, - [SPECIES_WORMADAM_SANDY_CLOAK] = BACK_ANIM_V_SHAKE, - [SPECIES_WORMADAM_TRASH_CLOAK] = BACK_ANIM_V_SHAKE, - [SPECIES_CHERRIM_SUNSHINE] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_SHELLOS_EAST_SEA] = BACK_ANIM_H_SPRING, - [SPECIES_GASTRODON_EAST_SEA] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_ROTOM_HEAT] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_ROTOM_WASH] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_ROTOM_FROST] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_ROTOM_FAN] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_ROTOM_MOW] = BACK_ANIM_H_SLIDE, - [SPECIES_GIRATINA_ORIGIN] = BACK_ANIM_GROW_STUTTER, - [SPECIES_SHAYMIN_SKY] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_ARCEUS_FIGHTING] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_FLYING] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_POISON] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_GROUND] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_ROCK] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_BUG] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_GHOST] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_STEEL] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_FIRE] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_WATER] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_GRASS] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_ELECTRIC] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_PSYCHIC] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_ICE] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_DRAGON] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_DARK] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ARCEUS_FAIRY] = BACK_ANIM_GROW_STUTTER, - - // Gen 5 - [SPECIES_VICTINI] = BACK_ANIM_H_SHAKE, - [SPECIES_SNIVY] = BACK_ANIM_H_SLIDE, - [SPECIES_SERVINE] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_SERPERIOR] = BACK_ANIM_V_STRETCH, - [SPECIES_TEPIG] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_PIGNITE] = BACK_ANIM_GROW_STUTTER, - [SPECIES_EMBOAR] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_OSHAWOTT] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_DEWOTT] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_SAMUROTT] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_PATRAT] = BACK_ANIM_H_SLIDE, - [SPECIES_WATCHOG] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_LILLIPUP] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_HERDIER] = BACK_ANIM_H_SHAKE, - [SPECIES_STOUTLAND] = BACK_ANIM_V_STRETCH, - [SPECIES_PURRLOIN] = BACK_ANIM_V_STRETCH, - [SPECIES_LIEPARD] = BACK_ANIM_H_STRETCH, - [SPECIES_PANSAGE] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_SIMISAGE] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_PANSEAR] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_SIMISEAR] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_PANPOUR] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_SIMIPOUR] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_MUNNA] = BACK_ANIM_SHRINK_GROW, - [SPECIES_MUSHARNA] = BACK_ANIM_GROW, - [SPECIES_PIDOVE] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_TRANQUILL] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_UNFEZANT] = BACK_ANIM_V_STRETCH, - [SPECIES_BLITZLE] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_ZEBSTRIKA] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_ROGGENROLA] = BACK_ANIM_V_SHAKE, - [SPECIES_BOLDORE] = BACK_ANIM_H_SHAKE, - [SPECIES_GIGALITH] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_WOOBAT] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_SWOOBAT] = BACK_ANIM_V_STRETCH, - [SPECIES_DRILBUR] = BACK_ANIM_V_SHAKE, - [SPECIES_EXCADRILL] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_AUDINO] = BACK_ANIM_SHRINK_GROW, - [SPECIES_TIMBURR] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_GURDURR] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_CONKELDURR] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_TYMPOLE] = BACK_ANIM_H_SPRING, - [SPECIES_PALPITOAD] = BACK_ANIM_H_VIBRATE, - [SPECIES_SEISMITOAD] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_THROH] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_SAWK] = BACK_ANIM_H_STRETCH, - [SPECIES_SEWADDLE] = BACK_ANIM_H_SLIDE, - [SPECIES_SWADLOON] = BACK_ANIM_H_VIBRATE, - [SPECIES_LEAVANNY] = BACK_ANIM_GROW_STUTTER, - [SPECIES_VENIPEDE] = BACK_ANIM_H_VIBRATE, - [SPECIES_WHIRLIPEDE] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SCOLIPEDE] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_COTTONEE] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_WHIMSICOTT] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_PETILIL] = BACK_ANIM_V_STRETCH, - [SPECIES_LILLIGANT] = BACK_ANIM_SHRINK_GROW, - [SPECIES_BASCULIN] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_SANDILE] = BACK_ANIM_H_SLIDE, - [SPECIES_KROKOROK] = BACK_ANIM_V_STRETCH, - [SPECIES_KROOKODILE] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_DARUMAKA] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_DARMANITAN] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_MARACTUS] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_DWEBBLE] = BACK_ANIM_H_SLIDE, - [SPECIES_CRUSTLE] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_SCRAGGY] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_SCRAFTY] = BACK_ANIM_GROW, - [SPECIES_SIGILYPH] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_YAMASK] = BACK_ANIM_V_SHAKE, - [SPECIES_COFAGRIGUS] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_TIRTOUGA] = BACK_ANIM_H_SLIDE, - [SPECIES_CARRACOSTA] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_ARCHEN] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_ARCHEOPS] = BACK_ANIM_V_STRETCH, - [SPECIES_TRUBBISH] = BACK_ANIM_SHRINK_GROW, - [SPECIES_GARBODOR] = BACK_ANIM_H_STRETCH, - [SPECIES_ZORUA] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_ZOROARK] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_MINCCINO] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_CINCCINO] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_GOTHITA] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_GOTHORITA] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_GOTHITELLE] = BACK_ANIM_H_STRETCH, - [SPECIES_SOLOSIS] = BACK_ANIM_SHRINK_GROW, - [SPECIES_DUOSION] = BACK_ANIM_GROW, - [SPECIES_REUNICLUS] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_DUCKLETT] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_SWANNA] = BACK_ANIM_H_STRETCH, - [SPECIES_VANILLITE] = BACK_ANIM_H_SLIDE, - [SPECIES_VANILLISH] = BACK_ANIM_H_SLIDE, - [SPECIES_VANILLUXE] = BACK_ANIM_H_SHAKE, - [SPECIES_DEERLING] = BACK_ANIM_H_SLIDE, - [SPECIES_SAWSBUCK] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_EMOLGA] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_KARRABLAST] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_ESCAVALIER] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_FOONGUS] = BACK_ANIM_SHRINK_GROW, - [SPECIES_AMOONGUSS] = BACK_ANIM_GROW_STUTTER, - [SPECIES_FRILLISH] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_JELLICENT] = BACK_ANIM_GROW_STUTTER, - [SPECIES_ALOMOMOLA] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_JOLTIK] = BACK_ANIM_H_SLIDE, - [SPECIES_GALVANTULA] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_FERROSEED] = BACK_ANIM_H_SHAKE, - [SPECIES_FERROTHORN] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_KLINK] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_KLANG] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_KLINKLANG] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_TYNAMO] = BACK_ANIM_H_SLIDE, - [SPECIES_EELEKTRIK] = BACK_ANIM_SHRINK_GROW, - [SPECIES_EELEKTROSS] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_ELGYEM] = BACK_ANIM_SHRINK_GROW, - [SPECIES_BEHEEYEM] = BACK_ANIM_H_SHAKE, - [SPECIES_LITWICK] = BACK_ANIM_SHRINK_GROW, - [SPECIES_LAMPENT] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_CHANDELURE] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_AXEW] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_FRAXURE] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_HAXORUS] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_CUBCHOO] = BACK_ANIM_H_SLIDE, - [SPECIES_BEARTIC] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_CRYOGONAL] = BACK_ANIM_H_VIBRATE, - [SPECIES_SHELMET] = BACK_ANIM_V_SHAKE, - [SPECIES_ACCELGOR] = BACK_ANIM_H_SPRING_REPEATED, - [SPECIES_STUNFISK] = BACK_ANIM_H_STRETCH, - [SPECIES_MIENFOO] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_MIENSHAO] = BACK_ANIM_V_STRETCH, - [SPECIES_DRUDDIGON] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_GOLETT] = BACK_ANIM_H_SLIDE, - [SPECIES_GOLURK] = BACK_ANIM_V_SHAKE, - [SPECIES_PAWNIARD] = BACK_ANIM_H_SLIDE, - [SPECIES_BISHARP] = BACK_ANIM_GROW_STUTTER, - [SPECIES_BOUFFALANT] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_RUFFLET] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_BRAVIARY] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_VULLABY] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_MANDIBUZZ] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_HEATMOR] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_DURANT] = BACK_ANIM_H_VIBRATE, - [SPECIES_DEINO] = BACK_ANIM_H_SLIDE, - [SPECIES_ZWEILOUS] = BACK_ANIM_H_SHAKE, - [SPECIES_HYDREIGON] = BACK_ANIM_GROW_STUTTER, - [SPECIES_LARVESTA] = BACK_ANIM_H_SLIDE, - [SPECIES_VOLCARONA] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_COBALION] = BACK_ANIM_V_STRETCH, - [SPECIES_TERRAKION] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_VIRIZION] = BACK_ANIM_H_SHAKE, - [SPECIES_TORNADUS] = BACK_ANIM_V_SHAKE, - [SPECIES_THUNDURUS] = BACK_ANIM_V_SHAKE, - [SPECIES_RESHIRAM] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_ZEKROM] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_LANDORUS] = BACK_ANIM_V_SHAKE, - [SPECIES_KYUREM] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_KELDEO] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_MELOETTA] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_GENESECT] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - - //Gen 5 Forms - [SPECIES_BASCULIN_BLUE_STRIPED] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_DARMANITAN_ZEN_MODE] = BACK_ANIM_H_SHAKE, - [SPECIES_DEERLING_SUMMER] = BACK_ANIM_H_SLIDE, - [SPECIES_DEERLING_AUTUMN] = BACK_ANIM_H_SLIDE, - [SPECIES_DEERLING_WINTER] = BACK_ANIM_H_SLIDE, - [SPECIES_SAWSBUCK_SUMMER] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SAWSBUCK_AUTUMN] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_SAWSBUCK_WINTER] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_TORNADUS_THERIAN] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_THUNDURUS_THERIAN] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_LANDORUS_THERIAN] = BACK_ANIM_GROW_STUTTER, - [SPECIES_KYUREM_WHITE] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_KYUREM_BLACK] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_KELDEO_RESOLUTE] = BACK_ANIM_GROW_STUTTER, - [SPECIES_MELOETTA_PIROUETTE] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_GENESECT_DOUSE_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_GENESECT_SHOCK_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_GENESECT_BURN_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_GENESECT_CHILL_DRIVE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - - //Gen 6 - [SPECIES_CHESPIN] = BACK_ANIM_H_SLIDE, - [SPECIES_QUILLADIN] = BACK_ANIM_GROW, - [SPECIES_CHESNAUGHT] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_FENNEKIN] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_BRAIXEN] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_DELPHOX] = BACK_ANIM_GROW_STUTTER, - [SPECIES_FROAKIE] = BACK_ANIM_SHRINK_GROW, - [SPECIES_FROGADIER] = BACK_ANIM_GROW_STUTTER, - [SPECIES_GRENINJA] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_BUNNELBY] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_DIGGERSBY] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_FLETCHLING] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_FLETCHINDER] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_TALONFLAME] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_SCATTERBUG] = BACK_ANIM_H_SLIDE, - [SPECIES_SPEWPA] = BACK_ANIM_H_VIBRATE, - [SPECIES_VIVILLON] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_LITLEO] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_PYROAR] = BACK_ANIM_H_STRETCH, - [SPECIES_FLABEBE] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_FLOETTE] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_FLORGES] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_SKIDDO] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_GOGOAT] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_PANCHAM] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_PANGORO] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_FURFROU] = BACK_ANIM_V_STRETCH, - [SPECIES_ESPURR] = BACK_ANIM_H_SLIDE, - [SPECIES_MEOWSTIC] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_HONEDGE] = BACK_ANIM_V_SHAKE, - [SPECIES_DOUBLADE] = BACK_ANIM_H_SHAKE, - [SPECIES_AEGISLASH] = BACK_ANIM_H_VIBRATE, - [SPECIES_SPRITZEE] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_AROMATISSE] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_SWIRLIX] = BACK_ANIM_H_SPRING, - [SPECIES_SLURPUFF] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_INKAY] = BACK_ANIM_SHRINK_GROW, - [SPECIES_MALAMAR] = BACK_ANIM_V_STRETCH, - [SPECIES_BINACLE] = BACK_ANIM_H_SLIDE, - [SPECIES_BARBARACLE] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_SKRELP] = BACK_ANIM_V_STRETCH, - [SPECIES_DRAGALGE] = BACK_ANIM_H_STRETCH, - [SPECIES_CLAUNCHER] = BACK_ANIM_H_SLIDE, - [SPECIES_CLAWITZER] = BACK_ANIM_V_SHAKE, - [SPECIES_HELIOPTILE] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_HELIOLISK] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_TYRUNT] = BACK_ANIM_H_SHAKE, - [SPECIES_TYRANTRUM] = BACK_ANIM_V_SHAKE_H_SLIDE, - [SPECIES_AMAURA] = BACK_ANIM_H_SLIDE, - [SPECIES_AURORUS] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_SYLVEON] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_HAWLUCHA] = BACK_ANIM_GROW_STUTTER, - [SPECIES_DEDENNE] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_CARBINK] = BACK_ANIM_H_VIBRATE, - [SPECIES_GOOMY] = BACK_ANIM_H_SPRING, - [SPECIES_SLIGGOO] = BACK_ANIM_SHRINK_GROW, - [SPECIES_GOODRA] = BACK_ANIM_SHRINK_GROW, - [SPECIES_KLEFKI] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_PHANTUMP] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_TREVENANT] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_PUMPKABOO] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_GOURGEIST] = BACK_ANIM_V_STRETCH, - [SPECIES_BERGMITE] = BACK_ANIM_H_SHAKE, - [SPECIES_AVALUGG] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_NOIBAT] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_NOIVERN] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_XERNEAS] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_YVELTAL] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_ZYGARDE] = BACK_ANIM_V_STRETCH, - [SPECIES_DIANCIE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_HOOPA] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_VOLCANION] = BACK_ANIM_SHAKE_GLOW_RED, - - //Gen 6 Forms - [SPECIES_GRENINJA_ASH] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_GRENINJA_BATTLE_BOND] = BACK_ANIM_V_STRETCH, - [SPECIES_VIVILLON_POLAR] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_TUNDRA] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_CONTINENTAL] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_GARDEN] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_ELEGANT] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_MEADOW] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_MODERN] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_MARINE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_ARCHIPELAGO] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_HIGH_PLAINS] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_SANDSTORM] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_RIVER] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_MONSOON] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_SAVANNA] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_SUN] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_OCEAN] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_JUNGLE] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_FANCY] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_VIVILLON_POKE_BALL] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, - [SPECIES_FLABEBE_YELLOW_FLOWER] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_FLABEBE_ORANGE_FLOWER] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_FLABEBE_BLUE_FLOWER] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_FLABEBE_WHITE_FLOWER] = BACK_ANIM_CONCAVE_ARC_SMALL, - [SPECIES_FLOETTE_YELLOW_FLOWER] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_FLOETTE_ORANGE_FLOWER] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_FLOETTE_BLUE_FLOWER] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_FLOETTE_WHITE_FLOWER] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_FLOETTE_ETERNAL_FLOWER] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_FLORGES_YELLOW_FLOWER] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_FLORGES_ORANGE_FLOWER] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_FLORGES_BLUE_FLOWER] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_FLORGES_WHITE_FLOWER] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_FURFROU_HEART_TRIM] = BACK_ANIM_V_STRETCH, - [SPECIES_FURFROU_STAR_TRIM] = BACK_ANIM_V_STRETCH, - [SPECIES_FURFROU_DIAMOND_TRIM] = BACK_ANIM_V_STRETCH, - [SPECIES_FURFROU_DEBUTANTE_TRIM] = BACK_ANIM_V_STRETCH, - [SPECIES_FURFROU_MATRON_TRIM] = BACK_ANIM_V_STRETCH, - [SPECIES_FURFROU_DANDY_TRIM] = BACK_ANIM_V_STRETCH, - [SPECIES_FURFROU_LA_REINE_TRIM] = BACK_ANIM_V_STRETCH, - [SPECIES_FURFROU_KABUKI_TRIM] = BACK_ANIM_V_STRETCH, - [SPECIES_FURFROU_PHARAOH_TRIM] = BACK_ANIM_V_STRETCH, - [SPECIES_MEOWSTIC_FEMALE] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_AEGISLASH_BLADE] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_PUMPKABOO_SMALL] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_PUMPKABOO_LARGE] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_PUMPKABOO_SUPER] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_GOURGEIST_SMALL] = BACK_ANIM_V_STRETCH, - [SPECIES_GOURGEIST_LARGE] = BACK_ANIM_V_STRETCH, - [SPECIES_GOURGEIST_SUPER] = BACK_ANIM_V_STRETCH, - [SPECIES_XERNEAS_ACTIVE] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_ZYGARDE_10] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = BACK_ANIM_SHAKE_GLOW_GREEN, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = BACK_ANIM_SHAKE_GLOW_GREEN, - [SPECIES_ZYGARDE_COMPLETE] = BACK_ANIM_SHAKE_GLOW_GREEN, - [SPECIES_HOOPA_UNBOUND] = BACK_ANIM_V_SHAKE_LOW, - - //Gen 6 Megas (Thanks Furret/CyanSMP64!) - [SPECIES_VENUSAUR_MEGA] = BACK_ANIM_SHAKE_GLOW_GREEN, - [SPECIES_CHARIZARD_MEGA_X] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_CHARIZARD_MEGA_Y] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_BLASTOISE_MEGA] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_BEEDRILL_MEGA] = BACK_ANIM_H_VIBRATE, - [SPECIES_PIDGEOT_MEGA] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_ALAKAZAM_MEGA] = BACK_ANIM_GROW_STUTTER, - [SPECIES_SLOWBRO_MEGA] = BACK_ANIM_DIP_RIGHT_SIDE, - [SPECIES_GENGAR_MEGA] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_KANGASKHAN_MEGA] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_PINSIR_MEGA] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_GYARADOS_MEGA] = BACK_ANIM_V_SHAKE, - [SPECIES_AERODACTYL_MEGA] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_MEWTWO_MEGA_X] = BACK_ANIM_GROW_STUTTER, - [SPECIES_MEWTWO_MEGA_Y] = BACK_ANIM_GROW_STUTTER, - [SPECIES_AMPHAROS_MEGA] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_STEELIX_MEGA] = BACK_ANIM_V_SHAKE, - [SPECIES_SCIZOR_MEGA] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_HERACROSS_MEGA] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_HOUNDOOM_MEGA] = BACK_ANIM_V_SHAKE, - [SPECIES_TYRANITAR_MEGA] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_SCEPTILE_MEGA] = BACK_ANIM_V_SHAKE, - [SPECIES_BLAZIKEN_MEGA] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_SWAMPERT_MEGA] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_GARDEVOIR_MEGA] = BACK_ANIM_SHAKE_GLOW_GREEN, - [SPECIES_SABLEYE_MEGA] = BACK_ANIM_H_VIBRATE, - [SPECIES_MAWILE_MEGA] = BACK_ANIM_V_SHAKE, - [SPECIES_AGGRON_MEGA] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_MEDICHAM_MEGA] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_MANECTRIC_MEGA] = BACK_ANIM_SHAKE_FLASH_YELLOW, - [SPECIES_SHARPEDO_MEGA] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_CAMERUPT_MEGA] = BACK_ANIM_SHAKE_GLOW_RED, - [SPECIES_ALTARIA_MEGA] = BACK_ANIM_CONVEX_DOUBLE_ARC, - [SPECIES_BANETTE_MEGA] = BACK_ANIM_H_VIBRATE, - [SPECIES_ABSOL_MEGA] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_GLALIE_MEGA] = BACK_ANIM_TRIANGLE_DOWN, - [SPECIES_SALAMENCE_MEGA] = BACK_ANIM_H_SHAKE, - [SPECIES_METAGROSS_MEGA] = BACK_ANIM_V_SHAKE, - [SPECIES_LATIAS_MEGA] = BACK_ANIM_H_VIBRATE, - [SPECIES_LATIOS_MEGA] = BACK_ANIM_H_VIBRATE, - [SPECIES_LOPUNNY_MEGA] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_GARCHOMP_MEGA] = BACK_ANIM_JOLT_RIGHT, - [SPECIES_LUCARIO_MEGA] = BACK_ANIM_CONCAVE_ARC_LARGE, - [SPECIES_ABOMASNOW_MEGA] = BACK_ANIM_V_SHAKE_LOW, - [SPECIES_GALLADE_MEGA] = BACK_ANIM_SHRINK_GROW_VIBRATE, - [SPECIES_RAYQUAZA_MEGA] = BACK_ANIM_SHAKE_GLOW_GREEN, - [SPECIES_KYOGRE_PRIMAL] = BACK_ANIM_SHAKE_GLOW_BLUE, - [SPECIES_GROUDON_PRIMAL] = BACK_ANIM_SHAKE_GLOW_RED, - -}; - // Equivalent to struct YellowFlashData, but doesn't match as a struct static const u8 sYellowFlashData[][2] = { @@ -1363,13 +460,13 @@ static const u8 sBackAnimNatureModTable[NUM_NATURES] = static const union AffineAnimCmd sMonAffineAnim_0[] = { AFFINEANIMCMD_FRAME(256, 256, 0, 0), - AFFINEANIMCMDTYPE_END + {AFFINEANIMCMDTYPE_END} }; static const union AffineAnimCmd sMonAffineAnim_1[] = { AFFINEANIMCMD_FRAME(-256, 256, 0, 0), - AFFINEANIMCMDTYPE_END + {AFFINEANIMCMDTYPE_END} }; static const union AffineAnimCmd *const sMonAffineAnims[] = @@ -1401,10 +498,10 @@ static void SetPosForRotation(struct Sprite *sprite, u16 index, s16 amplitudeX, u8 GetSpeciesBackAnimSet(u16 species) { - if (sSpeciesToBackAnimSet[species] != BACK_ANIM_NONE) - return sSpeciesToBackAnimSet[species] - 1; + if (gSpeciesInfo[species].backAnimId != BACK_ANIM_NONE) + return gSpeciesInfo[species].backAnimId - 1; else - return 0; + return BACK_ANIM_NONE; } #define tState data[0] diff --git a/src/pokemon_debug.c b/src/pokemon_debug.c index 8ec5fe6dc7..6f0cd3956c 100644 --- a/src/pokemon_debug.c +++ b/src/pokemon_debug.c @@ -45,7 +45,6 @@ extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow; extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow; extern const struct SpritePalette sSpritePalettes_HealthBoxHealthBar[2]; extern const struct UCoords8 sBattlerCoords[][MAX_BATTLERS_COUNT] ; -extern const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1]; static const u16 sBgColor[] = {RGB_WHITE}; static struct PokemonDebugMenu *GetStructPtr(u8 taskId) @@ -378,7 +377,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data); static void Exit_Debug_Pokemon(u8); //Text handling functions -static void PadString(const u8 *src, u8 *dst) +static void UNUSED PadString(const u8 *src, u8 *dst) { u32 i; @@ -397,7 +396,7 @@ static void PrintInstructionsOnWindow(struct PokemonDebugMenu *data) u8 x = 2; u8 textInstructions[] = _("{START_BUTTON} Shiny\n{B_BUTTON} Exit {A_BUTTON} Submenu 1$"); u8 textInstructionsGender[] = _("{START_BUTTON} Shiny {SELECT_BUTTON} Gender\n{B_BUTTON} Exit {A_BUTTON} Submenu 1$"); - u8 textInstructionsSubmenuOne[] = _("{START_BUTTON} Shiny\n{B_BUTTON} Back {A_BUTTON} Submenu 2$"); + u8 textInstructionsSubmenuOne[] = _("{START_BUTTON} Shiny\n{B_BUTTON} Back {A_BUTTON} Submenu 2$"); u8 textInstructionsSubmenuOneGender[] = _("{START_BUTTON} Shiny {SELECT_BUTTON} Gender\n{B_BUTTON} Back {A_BUTTON} Submenu 2$"); u8 textInstructionsSubmenuTwo[] = _("{START_BUTTON} Shiny\n{B_BUTTON} Back$"); u8 textInstructionsSubmenuTwoGender[] = _("{START_BUTTON} Shiny {SELECT_BUTTON} Gender\n{B_BUTTON} Back$"); @@ -434,7 +433,7 @@ static void PrintInstructionsOnWindow(struct PokemonDebugMenu *data) else AddTextPrinterParameterized(WIN_INSTRUCTIONS, fontId, textInstructionsSubmenuTwo, x, 0, 0, NULL); } - CopyWindowToVram(WIN_INSTRUCTIONS, 3); + CopyWindowToVram(WIN_INSTRUCTIONS, COPYWIN_FULL); //Bottom left text FillWindowPixelBuffer(WIN_BOTTOM_LEFT, PIXEL_FILL(0)); @@ -442,7 +441,7 @@ static void PrintInstructionsOnWindow(struct PokemonDebugMenu *data) { AddTextPrinterParameterized(WIN_BOTTOM_LEFT, fontId, textL, 30, 0, 0, NULL); AddTextPrinterParameterized(WIN_BOTTOM_LEFT, fontId, textR, 30, 12, 0, NULL); - if (gFormSpeciesIdTables[data->currentmonId] != NULL) + if (GetSpeciesFormTable(data->currentmonId) != NULL) AddTextPrinterParameterized(WIN_BOTTOM_LEFT, fontId, textBottomForms, 0, 0, 0, NULL); else AddTextPrinterParameterized(WIN_BOTTOM_LEFT, fontId, textBottom, 0, 0, 0, NULL); @@ -496,7 +495,7 @@ static void PrintDigitChars(struct PokemonDebugMenu *data) StringCopy(&text[i], GetSpeciesName(species)); FillWindowPixelBuffer(WIN_NAME_NUMBERS, 0x11); - AddTextPrinterParameterized(WIN_NAME_NUMBERS, 1, text, 6, 0, 0, NULL); + AddTextPrinterParameterized(WIN_NAME_NUMBERS, FONT_NORMAL, text, 6, 0, 0, NULL); } static u32 CharDigitsToValue(u8 *charDigits, u8 maxDigits) @@ -542,7 +541,6 @@ static void ValueToCharDigits(u8 *charDigits, u32 newValue, u8 maxDigits) static void SetArrowInvisibility(struct PokemonDebugMenu *data) { - bool8 invisible = data->currentSubmenu; switch (data->currentSubmenu) { case 0: @@ -672,7 +670,6 @@ static bool32 TryMoveDigit(struct PokemonDebugModifyArrows *modArrows, bool32 mo static void UpdateBattlerValue(struct PokemonDebugMenu *data) { - u32 i; switch (data->modifyArrows.typeOfVal) { case VAL_U16: @@ -682,55 +679,50 @@ static void UpdateBattlerValue(struct PokemonDebugMenu *data) } //Sprite functions -static const struct CompressedSpritePalette *GetMonSpritePalStructCustom(u16 species, bool8 isFemale, bool8 isShiny) +static const u32 *GetMonSpritePalStructCustom(u16 species, bool8 isFemale, bool8 isShiny) { if (isShiny) { - if (gMonShinyPaletteTableFemale[species].data != NULL && isFemale) - return &gMonShinyPaletteTableFemale[species]; - else if (gMonShinyPaletteTable[species].data != NULL) - return &gMonShinyPaletteTable[species]; + if (gSpeciesInfo[species].shinyPaletteFemale != NULL && isFemale) + return gSpeciesInfo[species].shinyPaletteFemale; + else if (gSpeciesInfo[species].shinyPalette != NULL) + return gSpeciesInfo[species].shinyPalette; else - return &gMonShinyPaletteTable[SPECIES_NONE]; + return gSpeciesInfo[SPECIES_NONE].shinyPalette; } else { - if (gMonPaletteTableFemale[species].data != NULL && isFemale) - return &gMonPaletteTableFemale[species]; - else if (gMonPaletteTable[species].data != NULL) - return &gMonPaletteTable[species]; + if (gSpeciesInfo[species].paletteFemale != NULL && isFemale) + return gSpeciesInfo[species].paletteFemale; + else if (gSpeciesInfo[species].palette != NULL) + return gSpeciesInfo[species].palette; else - return &gMonPaletteTable[SPECIES_NONE]; + return gSpeciesInfo[SPECIES_NONE].palette; } } static void BattleLoadOpponentMonSpriteGfxCustom(u16 species, bool8 isFemale, bool8 isShiny, u8 battlerId) { - u16 paletteOffset; const void *lzPaletteData; - const struct CompressedSpritePalette *palette; - - paletteOffset = 0x100 + battlerId * 16; - - palette = GetMonSpritePalStructCustom(species, isFemale, isShiny); + u16 paletteOffset = 0x100 + battlerId * 16;; if (isShiny) { - if (gMonShinyPaletteTableFemale[species].data != NULL && isFemale) - lzPaletteData = gMonShinyPaletteTableFemale[species].data; - else if (gMonShinyPaletteTable[species].data != NULL) - lzPaletteData = gMonShinyPaletteTable[species].data; + if (gSpeciesInfo[species].shinyPaletteFemale != NULL && isFemale) + lzPaletteData = gSpeciesInfo[species].shinyPaletteFemale; + else if (gSpeciesInfo[species].shinyPalette != NULL) + lzPaletteData = gSpeciesInfo[species].shinyPalette; else - lzPaletteData = gMonShinyPaletteTable[SPECIES_NONE].data; + lzPaletteData = gSpeciesInfo[SPECIES_NONE].shinyPalette; } else { - if (gMonPaletteTableFemale[species].data != NULL && isFemale) - lzPaletteData = gMonPaletteTableFemale[species].data; - else if (gMonPaletteTable[species].data != NULL) - lzPaletteData = gMonPaletteTable[species].data; + if (gSpeciesInfo[species].paletteFemale != NULL && isFemale) + lzPaletteData = gSpeciesInfo[species].paletteFemale; + else if (gSpeciesInfo[species].palette != NULL) + lzPaletteData = gSpeciesInfo[species].palette; else - lzPaletteData = gMonPaletteTable[SPECIES_NONE].data; + lzPaletteData = gSpeciesInfo[SPECIES_NONE].palette; } LZDecompressWram(lzPaletteData, gDecompressionBuffer); @@ -741,9 +733,9 @@ static void BattleLoadOpponentMonSpriteGfxCustom(u16 species, bool8 isFemale, bo static void SetConstSpriteValues(struct PokemonDebugMenu *data) { u16 species = data->currentmonId; - data->constSpriteValues.frontPicCoords = gMonFrontPicCoords[species].y_offset; - data->constSpriteValues.frontElevation = gEnemyMonElevation[species]; - data->constSpriteValues.backPicCoords = gMonBackPicCoords[species].y_offset; + data->constSpriteValues.frontPicCoords = gSpeciesInfo[species].frontPicYOffset; + data->constSpriteValues.frontElevation = gSpeciesInfo[species].enemyMonElevation; + data->constSpriteValues.backPicCoords = gSpeciesInfo[species].backPicYOffset; } static void ResetOffsetSpriteValues(struct PokemonDebugMenu *data) @@ -757,12 +749,13 @@ static u8 GetBattlerSpriteFinal_YCustom(u16 species, s8 offset_picCoords, s8 off { u16 offset; u8 y; + species = SanitizeSpeciesId(species); //FrontPicCoords - offset = gMonFrontPicCoords[species].y_offset + offset_picCoords; + offset = gSpeciesInfo[species].frontPicYOffset + offset_picCoords; //Elevation - offset -= gEnemyMonElevation[species] + offset_elevation; + offset -= gSpeciesInfo[species].enemyMonElevation + offset_elevation; //Main position y = offset + sBattlerCoords[0][1].y; @@ -794,7 +787,8 @@ static void LoadAndCreateEnemyShadowSpriteCustom(struct PokemonDebugMenu *data, { u8 x, y; bool8 invisible = FALSE; - if (gEnemyMonElevation[species] == 0) + species = SanitizeSpeciesId(species); + if (gSpeciesInfo[species].enemyMonElevation == 0) invisible = TRUE; LoadCompressedSpriteSheet(&gSpriteSheet_EnemyShadow); LoadSpritePalette(&sSpritePalettes_HealthBoxHealthBar[0]); @@ -813,7 +807,7 @@ static void LoadAndCreateEnemyShadowSpriteCustom(struct PokemonDebugMenu *data, static void DrawFootprintCustom(u8 windowId, u16 species) { u8 footprint[32 * 4] = {0}; - const u8 *footprintGfx = gMonFootprintTable[species]; + const u8 *footprintGfx = gSpeciesInfo[species].footprint; u32 i, j, tileIdx = 0; if (footprintGfx != NULL) @@ -1067,7 +1061,7 @@ static void ResetPokemonDebugWindows(void) { FillWindowPixelBuffer(i, PIXEL_FILL(0)); PutWindowTilemap(i); - CopyWindowToVram(i, 3); + CopyWindowToVram(i, COPYWIN_FULL); } } @@ -1077,7 +1071,7 @@ static void ResetPokemonDebugWindows(void) void CB2_Debug_Pokemon(void) { u8 taskId; - const struct CompressedSpritePalette *palette; + const u32 *palette; struct PokemonDebugMenu *data; u16 species; s16 offset_y; @@ -1109,9 +1103,7 @@ void CB2_Debug_Pokemon(void) FillBgTilemapBufferRect(0, 0, 0, 0, 32, 20, 15); InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates)); - data->battleBgType = 0; - data->battleTerrain = 0; - LoadBattleBg(data->battleBgType , data->battleTerrain); + LoadBattleBg(0, BATTLE_TERRAIN_GRASS); gMain.state++; break; @@ -1145,14 +1137,14 @@ void CB2_Debug_Pokemon(void) //Palettes palette = GetMonSpritePalStructCustom(species, data->isFemale, data->isShiny); - LoadCompressedSpritePalette(palette); + LoadCompressedSpritePaletteWithTag(palette, species); //Front HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[1], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); data->isShiny = FALSE; data->isFemale = FALSE; BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 1); SetMultiuseSpriteTemplateToPokemon(species, 1); - gMultiuseSpriteTemplate.paletteTag = palette->tag; + gMultiuseSpriteTemplate.paletteTag = species; front_y = GetBattlerSpriteFinal_YCustom(species, 0, 0); data->frontspriteId = CreateSprite(&gMultiuseSpriteTemplate, front_x, front_y, 0); gSprites[data->frontspriteId].oam.paletteNum = 1; @@ -1165,7 +1157,7 @@ void CB2_Debug_Pokemon(void) HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[2], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 4); SetMultiuseSpriteTemplateToPokemon(species, 2); - offset_y = gMonBackPicCoords[species].y_offset; + offset_y = gSpeciesInfo[species].backPicYOffset; data->backspriteId = CreateSprite(&gMultiuseSpriteTemplate, DEBUG_MON_BACK_X, DEBUG_MON_BACK_Y + offset_y, 0); gSprites[data->backspriteId].oam.paletteNum = 4; gSprites[data->backspriteId].callback = SpriteCallbackDummy; @@ -1187,7 +1179,7 @@ void CB2_Debug_Pokemon(void) //Anim names data->animIdBack = GetSpeciesBackAnimSet(species) + 1; - data->animIdFront = sMonFrontAnimIdsTable[data->currentmonId - 1]; + data->animIdFront = gSpeciesInfo[data->currentmonId].frontAnimId; UpdateMonAnimNames(taskId); //BattleNg Name @@ -1259,7 +1251,7 @@ static void ApplyOffsetSpriteValues(struct PokemonDebugMenu *data) { u16 species = data->currentmonId; //Back - gSprites[data->backspriteId].y = DEBUG_MON_BACK_Y + gMonBackPicCoords[species].y_offset + data->offsetsSpriteValues.offset_back_picCoords; + gSprites[data->backspriteId].y = DEBUG_MON_BACK_Y + gSpeciesInfo[species].backPicYOffset + data->offsetsSpriteValues.offset_back_picCoords; //Front gSprites[data->frontspriteId].y = GetBattlerSpriteFinal_YCustom(species, data->offsetsSpriteValues.offset_front_picCoords, data->offsetsSpriteValues.offset_front_elevation); @@ -1312,34 +1304,35 @@ static void UpdateSubmenuOneOptionValue(u8 taskId, bool8 increment) UpdateBattleBg(taskId, increment); break; case 3: - if (gFormSpeciesIdTables[data->currentmonId] != NULL) + if (GetSpeciesFormTable(data->currentmonId) != NULL) { struct PokemonDebugModifyArrows *modArrows = &data->modifyArrows; u8 formId = GetFormIdFromFormSpeciesId(data->currentmonId); + const u16 *formTable = GetSpeciesFormTable(data->currentmonId); if (increment) { - if (gFormSpeciesIdTables[data->currentmonId][formId + 1] != FORM_SPECIES_END) + if (formTable[formId + 1] != FORM_SPECIES_END) modArrows->currValue = GetFormSpeciesId(data->currentmonId, formId + 1); else - modArrows->currValue = gFormSpeciesIdTables[data->currentmonId][0]; + modArrows->currValue = formTable[0]; } else { - if (gFormSpeciesIdTables[data->currentmonId][formId] == gFormSpeciesIdTables[data->currentmonId][0]) + if (formTable[formId] == formTable[0]) { u8 lastForm; - for (lastForm = 0; gFormSpeciesIdTables[data->currentmonId][lastForm] != FORM_SPECIES_END; lastForm++) + for (lastForm = 0; formTable[lastForm] != FORM_SPECIES_END; lastForm++) { - if (gFormSpeciesIdTables[data->currentmonId][lastForm + 1] == FORM_SPECIES_END) + if (formTable[lastForm + 1] == FORM_SPECIES_END) break; } - modArrows->currValue = gFormSpeciesIdTables[data->currentmonId][lastForm]; + modArrows->currValue = formTable[lastForm]; } else modArrows->currValue = GetFormSpeciesId(data->currentmonId, formId - 1); } data->animIdBack = GetSpeciesBackAnimSet(modArrows->currValue) + 1; - data->animIdFront = sMonFrontAnimIdsTable[modArrows->currValue - 1]; + data->animIdFront = gSpeciesInfo[modArrows->currValue].frontAnimId; UpdateMonAnimNames(taskId); ResetOffsetSpriteValues(data); @@ -1381,7 +1374,7 @@ static void UpdateSubmenuTwoOptionValue(u8 taskId, bool8 increment) offset -= 1; } data->offsetsSpriteValues.offset_back_picCoords = offset; - gSprites[data->backspriteId].y = DEBUG_MON_BACK_Y + gMonBackPicCoords[species].y_offset + offset; + gSprites[data->backspriteId].y = DEBUG_MON_BACK_Y + gSpeciesInfo[species].backPicYOffset + offset; break; case 1: //Front picCoords offset = data->offsetsSpriteValues.offset_front_picCoords; @@ -1429,6 +1422,29 @@ static void UpdateSubmenuTwoOptionValue(u8 taskId, bool8 increment) UpdateYPosOffsetText(data); } +#define READ_PTR_FROM_TASK(taskId, dataId) \ + (void *)( \ + ((u16)(gTasks[taskId].data[dataId]) | \ + ((u16)(gTasks[taskId].data[dataId + 1]) << 16))) + +#define STORE_PTR_IN_TASK(ptr, taskId, dataId) \ +{ \ + gTasks[taskId].data[dataId] = (u32)(ptr); \ + gTasks[taskId].data[dataId + 1] = (u32)(ptr) >> 16; \ +} + +#define sAnimId data[2] +#define sAnimDelay data[3] + +static void Task_AnimateAfterDelay(u8 taskId) +{ + if (--gTasks[taskId].sAnimDelay == 0) + { + LaunchAnimationTaskForFrontSprite(READ_PTR_FROM_TASK(taskId, 0), gTasks[taskId].sAnimId); + DestroyTask(taskId); + } +} + static void Handle_Input_Debug_Pokemon(u8 taskId) { struct PokemonDebugMenu *data = GetStructPtr(taskId); @@ -1445,7 +1461,20 @@ static void Handle_Input_Debug_Pokemon(u8 taskId) PlayCryInternal(data->currentmonId, 0, 120, 10, 0); if (HasTwoFramesAnimation(data->currentmonId)) StartSpriteAnim(Frontsprite, 1); - LaunchAnimationTaskForFrontSprite(Frontsprite, data->animIdFront); + + if (gSpeciesInfo[data->currentmonId].frontAnimDelay != 0) + { + // Animation has delay, start delay task + u8 taskId = CreateTask(Task_AnimateAfterDelay, 0); + STORE_PTR_IN_TASK(Frontsprite, taskId, 0); + gTasks[taskId].sAnimId = data->animIdFront; + gTasks[taskId].sAnimDelay = gSpeciesInfo[data->currentmonId].frontAnimDelay; + } + else + { + // No delay, start animation + LaunchAnimationTaskForFrontSprite(Frontsprite, data->animIdFront); + } } if (JOY_NEW(START_BUTTON)) @@ -1491,7 +1520,7 @@ static void Handle_Input_Debug_Pokemon(u8 taskId) UpdateBattlerValue(data); ReloadPokemonSprites(data); data->animIdBack = GetSpeciesBackAnimSet(data->currentmonId) + 1; - data->animIdFront = sMonFrontAnimIdsTable[data->currentmonId - 1]; + data->animIdFront = gSpeciesInfo[data->currentmonId].frontAnimId; UpdateMonAnimNames(taskId); ResetOffsetSpriteValues(data); } @@ -1507,7 +1536,7 @@ static void Handle_Input_Debug_Pokemon(u8 taskId) UpdateBattlerValue(data); ReloadPokemonSprites(data); data->animIdBack = GetSpeciesBackAnimSet(data->currentmonId) + 1; - data->animIdFront = sMonFrontAnimIdsTable[data->currentmonId - 1]; + data->animIdFront = gSpeciesInfo[data->currentmonId].frontAnimId; UpdateMonAnimNames(taskId); ResetOffsetSpriteValues(data); } @@ -1561,7 +1590,7 @@ static void Handle_Input_Debug_Pokemon(u8 taskId) data->submenuYpos[1] += 1; if (data->submenuYpos[1] >= 3) { - if ((gFormSpeciesIdTables[data->currentmonId] == NULL) || (data->submenuYpos[1] >= 4)) + if ((GetSpeciesFormTable(data->currentmonId) == NULL) || (data->submenuYpos[1] >= 4)) data->submenuYpos[1] = 0; } data->optionArrows.currentDigit = data->submenuYpos[1]; @@ -1571,7 +1600,7 @@ static void Handle_Input_Debug_Pokemon(u8 taskId) { if (data->submenuYpos[1] == 0) { - if (gFormSpeciesIdTables[data->currentmonId] != NULL) + if (GetSpeciesFormTable(data->currentmonId) != NULL) data->submenuYpos[1] = 3; else data->submenuYpos[1] = 2; @@ -1630,10 +1659,12 @@ static void Handle_Input_Debug_Pokemon(u8 taskId) } } } +#undef sDelay +#undef sAnimId static void ReloadPokemonSprites(struct PokemonDebugMenu *data) { - const struct CompressedSpritePalette *palette; + const u32 *palette; u16 species = data->currentmonId; s16 offset_y; u8 front_x = sBattlerCoords[0][1].x; @@ -1658,12 +1689,12 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) //Palettes palette = GetMonSpritePalStructCustom(species, data->isFemale, data->isShiny); - LoadCompressedSpritePalette(palette); + LoadCompressedSpritePaletteWithTag(palette, species); //Front HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[1], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 1); SetMultiuseSpriteTemplateToPokemon(species, 1); - gMultiuseSpriteTemplate.paletteTag = palette->tag; + gMultiuseSpriteTemplate.paletteTag = species; front_y = GetBattlerSpriteFinal_YCustom(species, 0, 0); data->frontspriteId = CreateSprite(&gMultiuseSpriteTemplate, front_x, front_y, 0); gSprites[data->frontspriteId].oam.paletteNum = 1; @@ -1676,7 +1707,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[2], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 5); SetMultiuseSpriteTemplateToPokemon(species, 2); - offset_y = gMonBackPicCoords[species].y_offset; + offset_y = gSpeciesInfo[species].backPicYOffset; data->backspriteId = CreateSprite(&gMultiuseSpriteTemplate, DEBUG_MON_BACK_X, DEBUG_MON_BACK_Y + offset_y, 0); gSprites[data->backspriteId].oam.paletteNum = 5; gSprites[data->backspriteId].callback = SpriteCallbackDummy; diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index 28a9626245..89d7d545b8 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -9,8 +9,6 @@ #define POKE_ICON_BASE_PAL_TAG 56000 -#define INVALID_ICON_SPECIES SPECIES_NONE // Oddly specific, used when an icon should be a ?. Any of the 'old unown' would work - struct MonIconSpriteTemplate { const struct OamData *oam; @@ -24,6 +22,8 @@ struct MonIconSpriteTemplate static u8 CreateMonIconSprite(struct MonIconSpriteTemplate *, s16, s16, u8); static void FreeAndDestroyMonIconSprite_(struct Sprite *sprite); +// Kept this commented out table to keep PoryMap compatibility. +/* const u8 *const gMonIconTable[NUM_SPECIES + 1] = { [SPECIES_NONE] = gMonIcon_QuestionMark, @@ -155,6 +155,9 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_MAGMAR] = gMonIcon_Magmar, [SPECIES_PINSIR] = gMonIcon_Pinsir, [SPECIES_TAUROS] = gMonIcon_Tauros, + [SPECIES_TAUROS_PALDEAN_COMBAT_BREED] = gMonIcon_TaurosPaldeanCombatBreed, + [SPECIES_TAUROS_PALDEAN_BLAZE_BREED] = gMonIcon_TaurosPaldeanBlazeBreed, + [SPECIES_TAUROS_PALDEAN_AQUA_BREED] = gMonIcon_TaurosPaldeanAquaBreed, [SPECIES_MAGIKARP] = gMonIcon_Magikarp, [SPECIES_GYARADOS] = gMonIcon_Gyarados, [SPECIES_LAPRAS] = gMonIcon_Lapras, @@ -221,13 +224,14 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_SUNFLORA] = gMonIcon_Sunflora, [SPECIES_YANMA] = gMonIcon_Yanma, [SPECIES_WOOPER] = gMonIcon_Wooper, + //[SPECIES_WOOPER_PALDEAN] = gMonIcon_WooperPaldean, [SPECIES_QUAGSIRE] = gMonIcon_Quagsire, [SPECIES_ESPEON] = gMonIcon_Espeon, [SPECIES_UMBREON] = gMonIcon_Umbreon, [SPECIES_MURKROW] = gMonIcon_Murkrow, [SPECIES_SLOWKING] = gMonIcon_Slowking, [SPECIES_MISDREAVUS] = gMonIcon_Misdreavus, - [SPECIES_UNOWN] = gMonIcon_Unown, + [SPECIES_UNOWN] = gMonIcon_UnownA, [SPECIES_WOBBUFFET] = gMonIcon_Wobbuffet, [SPECIES_GIRAFARIG] = gMonIcon_Girafarig, [SPECIES_PINECO] = gMonIcon_Pineco, @@ -386,7 +390,7 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_ARON] = gMonIcon_Aron, [SPECIES_LAIRON] = gMonIcon_Lairon, [SPECIES_AGGRON] = gMonIcon_Aggron, - [SPECIES_CASTFORM] = gMonIcon_Castform, + [SPECIES_CASTFORM_NORMAL] = gMonIcon_CastformNormal, [SPECIES_VOLBEAT] = gMonIcon_Volbeat, [SPECIES_ILLUMISE] = gMonIcon_Illumise, [SPECIES_LILEEP] = gMonIcon_Lileep, @@ -411,9 +415,8 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_LATIAS] = gMonIcon_Latias, [SPECIES_LATIOS] = gMonIcon_Latios, [SPECIES_JIRACHI] = gMonIcon_Jirachi, - [SPECIES_DEOXYS] = gMonIcon_Deoxys, + [SPECIES_DEOXYS_NORMAL] = gMonIcon_DeoxysNormal, [SPECIES_CHIMECHO] = gMonIcon_Chimecho, -#if P_GEN_4_POKEMON == TRUE [SPECIES_TURTWIG] = gMonIcon_Turtwig, [SPECIES_GROTLE] = gMonIcon_Grotle, [SPECIES_TORTERRA] = gMonIcon_Torterra, @@ -439,8 +442,8 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_RAMPARDOS] = gMonIcon_Rampardos, [SPECIES_SHIELDON] = gMonIcon_Shieldon, [SPECIES_BASTIODON] = gMonIcon_Bastiodon, - [SPECIES_BURMY] = gMonIcon_Burmy, - [SPECIES_WORMADAM] = gMonIcon_Wormadam, + [SPECIES_BURMY_PLANT_CLOAK] = gMonIcon_BurmyPlantCloak, + [SPECIES_WORMADAM_PLANT_CLOAK] = gMonIcon_WormadamPlantCloak, [SPECIES_MOTHIM] = gMonIcon_Mothim, [SPECIES_COMBEE] = gMonIcon_Combee, [SPECIES_VESPIQUEN] = gMonIcon_Vespiquen, @@ -448,9 +451,9 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_BUIZEL] = gMonIcon_Buizel, [SPECIES_FLOATZEL] = gMonIcon_Floatzel, [SPECIES_CHERUBI] = gMonIcon_Cherubi, - [SPECIES_CHERRIM] = gMonIcon_Cherrim, - [SPECIES_SHELLOS] = gMonIcon_Shellos, - [SPECIES_GASTRODON] = gMonIcon_Gastrodon, + [SPECIES_CHERRIM_OVERCAST] = gMonIcon_CherrimOvercast, + [SPECIES_SHELLOS_WEST_SEA] = gMonIcon_ShellosWestSea, + [SPECIES_GASTRODON_WEST_SEA] = gMonIcon_GastrodonWestSea, [SPECIES_AMBIPOM] = gMonIcon_Ambipom, [SPECIES_DRIFLOON] = gMonIcon_Drifloon, [SPECIES_DRIFBLIM] = gMonIcon_Drifblim, @@ -514,15 +517,13 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_PALKIA] = gMonIcon_Palkia, [SPECIES_HEATRAN] = gMonIcon_Heatran, [SPECIES_REGIGIGAS] = gMonIcon_Regigigas, - [SPECIES_GIRATINA] = gMonIcon_Giratina, + [SPECIES_GIRATINA_ALTERED] = gMonIcon_GiratinaAltered, [SPECIES_CRESSELIA] = gMonIcon_Cresselia, [SPECIES_PHIONE] = gMonIcon_Phione, [SPECIES_MANAPHY] = gMonIcon_Manaphy, [SPECIES_DARKRAI] = gMonIcon_Darkrai, - [SPECIES_SHAYMIN] = gMonIcon_Shaymin, - [SPECIES_ARCEUS] = gMonIcon_Arceus, -#endif -#if P_GEN_5_POKEMON == TRUE + [SPECIES_SHAYMIN_LAND] = gMonIcon_ShayminLand, + [SPECIES_ARCEUS_NORMAL] = gMonIcon_Arceus, [SPECIES_VICTINI] = gMonIcon_Victini, [SPECIES_SNIVY] = gMonIcon_Snivy, [SPECIES_SERVINE] = gMonIcon_Servine, @@ -579,12 +580,12 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_WHIMSICOTT] = gMonIcon_Whimsicott, [SPECIES_PETILIL] = gMonIcon_Petilil, [SPECIES_LILLIGANT] = gMonIcon_Lilligant, - [SPECIES_BASCULIN] = gMonIcon_Basculin, + [SPECIES_BASCULIN_RED_STRIPED] = gMonIcon_BasculinRedStriped, [SPECIES_SANDILE] = gMonIcon_Sandile, [SPECIES_KROKOROK] = gMonIcon_Krokorok, [SPECIES_KROOKODILE] = gMonIcon_Krookodile, [SPECIES_DARUMAKA] = gMonIcon_Darumaka, - [SPECIES_DARMANITAN] = gMonIcon_Darmanitan, + [SPECIES_DARMANITAN_STANDARD_MODE] = gMonIcon_DarmanitanStandardMode, [SPECIES_MARACTUS] = gMonIcon_Maractus, [SPECIES_DWEBBLE] = gMonIcon_Dwebble, [SPECIES_CRUSTLE] = gMonIcon_Crustle, @@ -614,8 +615,8 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_VANILLITE] = gMonIcon_Vanillite, [SPECIES_VANILLISH] = gMonIcon_Vanillish, [SPECIES_VANILLUXE] = gMonIcon_Vanilluxe, - [SPECIES_DEERLING] = gMonIcon_Deerling, - [SPECIES_SAWSBUCK] = gMonIcon_Sawsbuck, + [SPECIES_DEERLING_SPRING] = gMonIcon_DeerlingSpring, + [SPECIES_SAWSBUCK_SPRING] = gMonIcon_SawsbuckSpring, [SPECIES_EMOLGA] = gMonIcon_Emolga, [SPECIES_KARRABLAST] = gMonIcon_Karrablast, [SPECIES_ESCAVALIER] = gMonIcon_Escavalier, @@ -670,17 +671,15 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_COBALION] = gMonIcon_Cobalion, [SPECIES_TERRAKION] = gMonIcon_Terrakion, [SPECIES_VIRIZION] = gMonIcon_Virizion, - [SPECIES_TORNADUS] = gMonIcon_Tornadus, - [SPECIES_THUNDURUS] = gMonIcon_Thundurus, + [SPECIES_TORNADUS_INCARNATE] = gMonIcon_TornadusIncarnate, + [SPECIES_THUNDURUS_INCARNATE] = gMonIcon_ThundurusIncarnate, [SPECIES_RESHIRAM] = gMonIcon_Reshiram, [SPECIES_ZEKROM] = gMonIcon_Zekrom, - [SPECIES_LANDORUS] = gMonIcon_Landorus, + [SPECIES_LANDORUS_INCARNATE] = gMonIcon_LandorusIncarnate, [SPECIES_KYUREM] = gMonIcon_Kyurem, - [SPECIES_KELDEO] = gMonIcon_Keldeo, - [SPECIES_MELOETTA] = gMonIcon_Meloetta, + [SPECIES_KELDEO_ORDINARY] = gMonIcon_KeldeoOrdinary, + [SPECIES_MELOETTA_ARIA] = gMonIcon_MeloettaAria, [SPECIES_GENESECT] = gMonIcon_Genesect, -#endif -#if P_GEN_6_POKEMON == TRUE [SPECIES_CHESPIN] = gMonIcon_Chespin, [SPECIES_QUILLADIN] = gMonIcon_Quilladin, [SPECIES_CHESNAUGHT] = gMonIcon_Chesnaught, @@ -697,22 +696,22 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_TALONFLAME] = gMonIcon_Talonflame, [SPECIES_SCATTERBUG] = gMonIcon_Scatterbug, [SPECIES_SPEWPA] = gMonIcon_Spewpa, - [SPECIES_VIVILLON] = gMonIcon_Vivillon, + [SPECIES_VIVILLON_ICY_SNOW] = gMonIcon_VivillonIcySnow, [SPECIES_LITLEO] = gMonIcon_Litleo, [SPECIES_PYROAR] = gMonIcon_Pyroar, - [SPECIES_FLABEBE] = gMonIcon_Flabebe, - [SPECIES_FLOETTE] = gMonIcon_Floette, - [SPECIES_FLORGES] = gMonIcon_Florges, + [SPECIES_FLABEBE_RED_FLOWER] = gMonIcon_FlabebeRedFlower, + [SPECIES_FLOETTE_RED_FLOWER] = gMonIcon_FloetteRedFlower, + [SPECIES_FLORGES_RED_FLOWER] = gMonIcon_FlorgesRedFlower, [SPECIES_SKIDDO] = gMonIcon_Skiddo, [SPECIES_GOGOAT] = gMonIcon_Gogoat, [SPECIES_PANCHAM] = gMonIcon_Pancham, [SPECIES_PANGORO] = gMonIcon_Pangoro, - [SPECIES_FURFROU] = gMonIcon_Furfrou, + [SPECIES_FURFROU_NATURAL] = gMonIcon_FurfrouNatural, [SPECIES_ESPURR] = gMonIcon_Espurr, - [SPECIES_MEOWSTIC] = gMonIcon_Meowstic, + [SPECIES_MEOWSTIC_MALE] = gMonIcon_MeowsticMale, [SPECIES_HONEDGE] = gMonIcon_Honedge, [SPECIES_DOUBLADE] = gMonIcon_Doublade, - [SPECIES_AEGISLASH] = gMonIcon_Aegislash, + [SPECIES_AEGISLASH_SHIELD] = gMonIcon_AegislashShield, [SPECIES_SPRITZEE] = gMonIcon_Spritzee, [SPECIES_AROMATISSE] = gMonIcon_Aromatisse, [SPECIES_SWIRLIX] = gMonIcon_Swirlix, @@ -741,20 +740,18 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_KLEFKI] = gMonIcon_Klefki, [SPECIES_PHANTUMP] = gMonIcon_Phantump, [SPECIES_TREVENANT] = gMonIcon_Trevenant, - [SPECIES_PUMPKABOO] = gMonIcon_Pumpkaboo, - [SPECIES_GOURGEIST] = gMonIcon_Gourgeist, + [SPECIES_PUMPKABOO_AVERAGE] = gMonIcon_Pumpkaboo, + [SPECIES_GOURGEIST_AVERAGE] = gMonIcon_Gourgeist, [SPECIES_BERGMITE] = gMonIcon_Bergmite, [SPECIES_AVALUGG] = gMonIcon_Avalugg, [SPECIES_NOIBAT] = gMonIcon_Noibat, [SPECIES_NOIVERN] = gMonIcon_Noivern, - [SPECIES_XERNEAS] = gMonIcon_Xerneas, + [SPECIES_XERNEAS_NEUTRAL] = gMonIcon_XerneasNeutral, [SPECIES_YVELTAL] = gMonIcon_Yveltal, - [SPECIES_ZYGARDE] = gMonIcon_Zygarde, + [SPECIES_ZYGARDE_50_AURA_BREAK] = gMonIcon_Zygarde50, [SPECIES_DIANCIE] = gMonIcon_Diancie, - [SPECIES_HOOPA] = gMonIcon_Hoopa, + [SPECIES_HOOPA_CONFINED] = gMonIcon_HoopaConfined, [SPECIES_VOLCANION] = gMonIcon_Volcanion, -#endif -#if P_GEN_7_POKEMON == TRUE [SPECIES_ROWLET] = gMonIcon_Rowlet, [SPECIES_DARTRIX] = gMonIcon_Dartrix, [SPECIES_DECIDUEYE] = gMonIcon_Decidueye, @@ -774,12 +771,12 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_VIKAVOLT] = gMonIcon_Vikavolt, [SPECIES_CRABRAWLER] = gMonIcon_Crabrawler, [SPECIES_CRABOMINABLE] = gMonIcon_Crabominable, - [SPECIES_ORICORIO] = gMonIcon_Oricorio, + [SPECIES_ORICORIO_BAILE] = gMonIcon_OricorioBaile, [SPECIES_CUTIEFLY] = gMonIcon_Cutiefly, [SPECIES_RIBOMBEE] = gMonIcon_Ribombee, [SPECIES_ROCKRUFF] = gMonIcon_Rockruff, - [SPECIES_LYCANROC] = gMonIcon_Lycanroc, - [SPECIES_WISHIWASHI] = gMonIcon_Wishiwashi, + [SPECIES_LYCANROC_MIDDAY] = gMonIcon_LycanrocMidday, + [SPECIES_WISHIWASHI_SOLO] = gMonIcon_WishiwashiSolo, [SPECIES_MAREANIE] = gMonIcon_Mareanie, [SPECIES_TOXAPEX] = gMonIcon_Toxapex, [SPECIES_MUDBRAY] = gMonIcon_Mudbray, @@ -806,12 +803,12 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_PALOSSAND] = gMonIcon_Palossand, [SPECIES_PYUKUMUKU] = gMonIcon_Pyukumuku, [SPECIES_TYPE_NULL] = gMonIcon_TypeNull, - [SPECIES_SILVALLY] = gMonIcon_Silvally, - [SPECIES_MINIOR] = gMonIcon_Minior, + [SPECIES_SILVALLY_NORMAL] = gMonIcon_Silvally, + [SPECIES_MINIOR_METEOR_RED] = gMonIcon_MiniorMeteor, [SPECIES_KOMALA] = gMonIcon_Komala, [SPECIES_TURTONATOR] = gMonIcon_Turtonator, [SPECIES_TOGEDEMARU] = gMonIcon_Togedemaru, - [SPECIES_MIMIKYU] = gMonIcon_Mimikyu, + [SPECIES_MIMIKYU_DISGUISED] = gMonIcon_MimikyuDisguised, [SPECIES_BRUXISH] = gMonIcon_Bruxish, [SPECIES_DRAMPA] = gMonIcon_Drampa, [SPECIES_DHELMISE] = gMonIcon_Dhelmise, @@ -843,8 +840,6 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_ZERAORA] = gMonIcon_Zeraora, [SPECIES_MELTAN] = gMonIcon_Meltan, [SPECIES_MELMETAL] = gMonIcon_Melmetal, -#endif -#if P_GEN_8_POKEMON == TRUE [SPECIES_GROOKEY] = gMonIcon_Grookey, [SPECIES_THWACKEY] = gMonIcon_Thwackey, [SPECIES_RILLABOOM] = gMonIcon_Rillaboom, @@ -884,13 +879,13 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_ARROKUDA] = gMonIcon_Arrokuda, [SPECIES_BARRASKEWDA] = gMonIcon_Barraskewda, [SPECIES_TOXEL] = gMonIcon_Toxel, - [SPECIES_TOXTRICITY] = gMonIcon_Toxtricity, + [SPECIES_TOXTRICITY_AMPED] = gMonIcon_ToxtricityAmped, [SPECIES_SIZZLIPEDE] = gMonIcon_Sizzlipede, [SPECIES_CENTISKORCH] = gMonIcon_Centiskorch, [SPECIES_CLOBBOPUS] = gMonIcon_Clobbopus, [SPECIES_GRAPPLOCT] = gMonIcon_Grapploct, - [SPECIES_SINISTEA] = gMonIcon_Sinistea, - [SPECIES_POLTEAGEIST] = gMonIcon_Polteageist, + [SPECIES_SINISTEA_PHONY] = gMonIcon_Sinistea, + [SPECIES_POLTEAGEIST_PHONY] = gMonIcon_Polteageist, [SPECIES_HATENNA] = gMonIcon_Hatenna, [SPECIES_HATTREM] = gMonIcon_Hattrem, [SPECIES_HATTERENE] = gMonIcon_Hatterene, @@ -904,15 +899,77 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_MR_RIME] = gMonIcon_MrRime, [SPECIES_RUNERIGUS] = gMonIcon_Runerigus, [SPECIES_MILCERY] = gMonIcon_Milcery, - [SPECIES_ALCREMIE] = gMonIcon_Alcremie, + [SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_BERRY_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_BERRY_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_BERRY_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_BERRY_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_BERRY_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_BERRY_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_BERRY_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_LOVE_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_LOVE_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_LOVE_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_LOVE_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_LOVE_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_LOVE_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_LOVE_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_STAR_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_STAR_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_STAR_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_STAR_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_STAR_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_STAR_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_STAR_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_CLOVER_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_CLOVER_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_CLOVER_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_CLOVER_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_FLOWER_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_FLOWER_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_FLOWER_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_FLOWER_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, + [SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream, + [SPECIES_ALCREMIE_RIBBON_RUBY_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubyCream, + [SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMatchaCream, + [SPECIES_ALCREMIE_RIBBON_MINT_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryMintCream, + [SPECIES_ALCREMIE_RIBBON_LEMON_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryLemonCream, + [SPECIES_ALCREMIE_RIBBON_SALTED_CREAM] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberrySaltedCream, + [SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRubySwirl, + [SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryCaramelSwirl, + [SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL] = gMonIcon_AlcremieStrawberryVanillaCream,//gMonIcon_AlcremieStrawberryRainbowSwirl, [SPECIES_FALINKS] = gMonIcon_Falinks, [SPECIES_PINCURCHIN] = gMonIcon_Pincurchin, [SPECIES_SNOM] = gMonIcon_Snom, [SPECIES_FROSMOTH] = gMonIcon_Frosmoth, [SPECIES_STONJOURNER] = gMonIcon_Stonjourner, - [SPECIES_EISCUE] = gMonIcon_Eiscue, - [SPECIES_INDEEDEE] = gMonIcon_Indeedee, - [SPECIES_MORPEKO] = gMonIcon_Morpeko, + [SPECIES_EISCUE_ICE_FACE] = gMonIcon_EiscueIceFace, + [SPECIES_INDEEDEE_MALE] = gMonIcon_IndeedeeMale, + [SPECIES_MORPEKO_FULL_BELLY] = gMonIcon_MorpekoFullBelly, [SPECIES_CUFANT] = gMonIcon_Cufant, [SPECIES_COPPERAJAH] = gMonIcon_Copperajah, [SPECIES_DRACOZOLT] = gMonIcon_Dracozolt, @@ -923,11 +980,11 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_DREEPY] = gMonIcon_Dreepy, [SPECIES_DRAKLOAK] = gMonIcon_Drakloak, [SPECIES_DRAGAPULT] = gMonIcon_Dragapult, - [SPECIES_ZACIAN] = gMonIcon_Zacian, - [SPECIES_ZAMAZENTA] = gMonIcon_Zamazenta, + [SPECIES_ZACIAN_HERO_OF_MANY_BATTLES] = gMonIcon_ZacianHeroOfManyBattles, + [SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES] = gMonIcon_ZamazentaHeroOfManyBattles, [SPECIES_ETERNATUS] = gMonIcon_Eternatus, [SPECIES_KUBFU] = gMonIcon_Kubfu, - [SPECIES_URSHIFU] = gMonIcon_Urshifu, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE] = gMonIcon_UrshifuSingleStrikeStyle, [SPECIES_ZARUDE] = gMonIcon_Zarude, [SPECIES_REGIELEKI] = gMonIcon_Regieleki, [SPECIES_REGIDRAGO] = gMonIcon_Regidrago, @@ -937,11 +994,11 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_WYRDEER] = gMonIcon_Wyrdeer, [SPECIES_KLEAVOR] = gMonIcon_Kleavor, [SPECIES_URSALUNA] = gMonIcon_Ursaluna, - [SPECIES_BASCULEGION] = gMonIcon_Basculegion, + //[SPECIES_URSALUNA_BLOODMOON] = gMonIcon_UrsalunaBloodmoon, TODO + [SPECIES_BASCULEGION_MALE] = gMonIcon_BasculegionMale, [SPECIES_SNEASLER] = gMonIcon_Sneasler, [SPECIES_OVERQWIL] = gMonIcon_Overqwil, - [SPECIES_ENAMORUS] = gMonIcon_Enamorus, -#endif + [SPECIES_ENAMORUS_INCARNATE] = gMonIcon_EnamorusIncarnate, [SPECIES_VENUSAUR_MEGA] = gMonIcon_VenusaurMega, [SPECIES_CHARIZARD_MEGA_X] = gMonIcon_CharizardMegaX, [SPECIES_CHARIZARD_MEGA_Y] = gMonIcon_CharizardMegaY, @@ -982,19 +1039,13 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_METAGROSS_MEGA] = gMonIcon_MetagrossMega, [SPECIES_LATIAS_MEGA] = gMonIcon_LatiasMega, [SPECIES_LATIOS_MEGA] = gMonIcon_LatiosMega, -#if P_GEN_4_POKEMON == TRUE [SPECIES_LOPUNNY_MEGA] = gMonIcon_LopunnyMega, [SPECIES_GARCHOMP_MEGA] = gMonIcon_GarchompMega, [SPECIES_LUCARIO_MEGA] = gMonIcon_LucarioMega, [SPECIES_ABOMASNOW_MEGA] = gMonIcon_AbomasnowMega, [SPECIES_GALLADE_MEGA] = gMonIcon_GalladeMega, -#endif -#if P_GEN_5_POKEMON == TRUE [SPECIES_AUDINO_MEGA] = gMonIcon_AudinoMega, -#endif -#if P_GEN_6_POKEMON == TRUE [SPECIES_DIANCIE_MEGA] = gMonIcon_DiancieMega, -#endif [SPECIES_RAYQUAZA_MEGA] = gMonIcon_RayquazaMega, [SPECIES_KYOGRE_PRIMAL] = gMonIcon_KyogrePrimal, [SPECIES_GROUDON_PRIMAL] = gMonIcon_GroudonPrimal, @@ -1031,12 +1082,10 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_CORSOLA_GALARIAN] = gMonIcon_CorsolaGalarian, [SPECIES_ZIGZAGOON_GALARIAN] = gMonIcon_ZigzagoonGalarian, [SPECIES_LINOONE_GALARIAN] = gMonIcon_LinooneGalarian, -#if P_GEN_5_POKEMON == TRUE [SPECIES_DARUMAKA_GALARIAN] = gMonIcon_DarumakaGalarian, - [SPECIES_DARMANITAN_GALARIAN] = gMonIcon_DarmanitanGalarian, + [SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE] = gMonIcon_DarmanitanGalarianStandardMode, [SPECIES_YAMASK_GALARIAN] = gMonIcon_YamaskGalarian, [SPECIES_STUNFISK_GALARIAN] = gMonIcon_StunfiskGalarian, -#endif [SPECIES_GROWLITHE_HISUIAN] = gMonIcon_GrowlitheHisuian, [SPECIES_ARCANINE_HISUIAN] = gMonIcon_ArcanineHisuian, [SPECIES_VOLTORB_HISUIAN] = gMonIcon_VoltorbHisuian, @@ -1044,21 +1093,15 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_TYPHLOSION_HISUIAN] = gMonIcon_TyphlosionHisuian, [SPECIES_QWILFISH_HISUIAN] = gMonIcon_QwilfishHisuian, [SPECIES_SNEASEL_HISUIAN] = gMonIcon_SneaselHisuian, -#if P_GEN_5_POKEMON == TRUE [SPECIES_SAMUROTT_HISUIAN] = gMonIcon_SamurottHisuian, [SPECIES_LILLIGANT_HISUIAN] = gMonIcon_LilligantHisuian, [SPECIES_ZORUA_HISUIAN] = gMonIcon_ZoruaHisuian, [SPECIES_ZOROARK_HISUIAN] = gMonIcon_ZoroarkHisuian, [SPECIES_BRAVIARY_HISUIAN] = gMonIcon_BraviaryHisuian, -#endif -#if P_GEN_6_POKEMON == TRUE [SPECIES_SLIGGOO_HISUIAN] = gMonIcon_SliggooHisuian, [SPECIES_GOODRA_HISUIAN] = gMonIcon_GoodraHisuian, [SPECIES_AVALUGG_HISUIAN] = gMonIcon_AvaluggHisuian, -#endif -#if P_GEN_7_POKEMON == TRUE [SPECIES_DECIDUEYE_HISUIAN] = gMonIcon_DecidueyeHisuian, -#endif [SPECIES_PIKACHU_COSPLAY] = gMonIcon_PikachuCosplay, [SPECIES_PIKACHU_ROCK_STAR] = gMonIcon_PikachuRockStar, [SPECIES_PIKACHU_BELLE] = gMonIcon_PikachuBelle, @@ -1072,7 +1115,7 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_PIKACHU_KALOS_CAP] = gMonIcon_PikachuKalosCap, [SPECIES_PIKACHU_ALOLA_CAP] = gMonIcon_PikachuAlolaCap, [SPECIES_PIKACHU_PARTNER_CAP] = gMonIcon_PikachuPartnerCap, - [SPECIES_PIKACHU_WORLD_CAP] = gMonIcon_QuestionMark, + [SPECIES_PIKACHU_WORLD_CAP] = gMonIcon_PikachuWorldCap, [SPECIES_PICHU_SPIKY_EARED] = gMonIcon_PichuSpikyEared, [SPECIES_UNOWN_B] = gMonIcon_UnownB, [SPECIES_UNOWN_C] = gMonIcon_UnownC, @@ -1107,7 +1150,6 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_DEOXYS_ATTACK] = gMonIcon_DeoxysAttack, [SPECIES_DEOXYS_DEFENSE] = gMonIcon_DeoxysDefense, [SPECIES_DEOXYS_SPEED] = gMonIcon_DeoxysSpeed, -#if P_GEN_4_POKEMON == TRUE [SPECIES_BURMY_SANDY_CLOAK] = gMonIcon_BurmySandyCloak, [SPECIES_BURMY_TRASH_CLOAK] = gMonIcon_BurmyTrashCloak, [SPECIES_WORMADAM_SANDY_CLOAK] = gMonIcon_WormadamSandyCloak, @@ -1141,12 +1183,10 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_ARCEUS_DRAGON] = gMonIcon_Arceus, [SPECIES_ARCEUS_DARK] = gMonIcon_Arceus, [SPECIES_ARCEUS_FAIRY] = gMonIcon_Arceus, -#endif -#if P_GEN_5_POKEMON == TRUE [SPECIES_BASCULIN_BLUE_STRIPED] = gMonIcon_BasculinBlueStriped, [SPECIES_BASCULIN_WHITE_STRIPED] = gMonIcon_BasculinWhiteStriped, [SPECIES_DARMANITAN_ZEN_MODE] = gMonIcon_DarmanitanZenMode, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = gMonIcon_DarmanitanZenModeGalarian, + [SPECIES_DARMANITAN_GALARIAN_ZEN_MODE] = gMonIcon_DarmanitanGalarianZenMode, [SPECIES_DEERLING_SUMMER] = gMonIcon_DeerlingSummer, [SPECIES_DEERLING_AUTUMN] = gMonIcon_DeerlingAutumn, [SPECIES_DEERLING_WINTER] = gMonIcon_DeerlingWinter, @@ -1164,8 +1204,6 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_GENESECT_SHOCK_DRIVE] = gMonIcon_Genesect, [SPECIES_GENESECT_BURN_DRIVE] = gMonIcon_Genesect, [SPECIES_GENESECT_CHILL_DRIVE] = gMonIcon_Genesect, -#endif -#if P_GEN_6_POKEMON == TRUE [SPECIES_GRENINJA_BATTLE_BOND] = gMonIcon_Greninja, [SPECIES_GRENINJA_ASH] = gMonIcon_GreninjaAsh, [SPECIES_VIVILLON_POLAR] = gMonIcon_VivillonPolar, @@ -1218,13 +1256,11 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_GOURGEIST_LARGE] = gMonIcon_Gourgeist, [SPECIES_GOURGEIST_SUPER] = gMonIcon_Gourgeist, [SPECIES_XERNEAS_ACTIVE] = gMonIcon_XerneasActive, - [SPECIES_ZYGARDE_10] = gMonIcon_Zygarde10, + [SPECIES_ZYGARDE_10_AURA_BREAK] = gMonIcon_Zygarde10, [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = gMonIcon_Zygarde10, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = gMonIcon_Zygarde, + [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = gMonIcon_Zygarde50, [SPECIES_ZYGARDE_COMPLETE] = gMonIcon_ZygardeComplete, [SPECIES_HOOPA_UNBOUND] = gMonIcon_HoopaUnbound, -#endif -#if P_GEN_7_POKEMON == TRUE [SPECIES_ORICORIO_POM_POM] = gMonIcon_OricorioPomPom, [SPECIES_ORICORIO_PAU] = gMonIcon_OricorioPau, [SPECIES_ORICORIO_SENSU] = gMonIcon_OricorioSensu, @@ -1249,12 +1285,12 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_SILVALLY_DRAGON] = gMonIcon_Silvally, [SPECIES_SILVALLY_DARK] = gMonIcon_Silvally, [SPECIES_SILVALLY_FAIRY] = gMonIcon_Silvally, - [SPECIES_MINIOR_METEOR_ORANGE] = gMonIcon_Minior, - [SPECIES_MINIOR_METEOR_YELLOW] = gMonIcon_Minior, - [SPECIES_MINIOR_METEOR_GREEN] = gMonIcon_Minior, - [SPECIES_MINIOR_METEOR_BLUE] = gMonIcon_Minior, - [SPECIES_MINIOR_METEOR_INDIGO] = gMonIcon_Minior, - [SPECIES_MINIOR_METEOR_VIOLET] = gMonIcon_Minior, + [SPECIES_MINIOR_METEOR_ORANGE] = gMonIcon_MiniorMeteor, + [SPECIES_MINIOR_METEOR_YELLOW] = gMonIcon_MiniorMeteor, + [SPECIES_MINIOR_METEOR_GREEN] = gMonIcon_MiniorMeteor, + [SPECIES_MINIOR_METEOR_BLUE] = gMonIcon_MiniorMeteor, + [SPECIES_MINIOR_METEOR_INDIGO] = gMonIcon_MiniorMeteor, + [SPECIES_MINIOR_METEOR_VIOLET] = gMonIcon_MiniorMeteor, [SPECIES_MINIOR_CORE_RED] = gMonIcon_MiniorCoreRed, [SPECIES_MINIOR_CORE_ORANGE] = gMonIcon_MiniorCoreOrange, [SPECIES_MINIOR_CORE_YELLOW] = gMonIcon_MiniorCoreYellow, @@ -1267,1286 +1303,192 @@ const u8 *const gMonIconTable[NUM_SPECIES + 1] = [SPECIES_NECROZMA_DAWN_WINGS] = gMonIcon_NecrozmaDawnWings, [SPECIES_NECROZMA_ULTRA] = gMonIcon_NecrozmaUltra, [SPECIES_MAGEARNA_ORIGINAL_COLOR] = gMonIcon_MagearnaOriginalColor, -#endif -#if P_GEN_8_POKEMON == TRUE [SPECIES_CRAMORANT_GULPING] = gMonIcon_CramorantGulping, [SPECIES_CRAMORANT_GORGING] = gMonIcon_CramorantGorging, [SPECIES_TOXTRICITY_LOW_KEY] = gMonIcon_ToxtricityLowKey, [SPECIES_SINISTEA_ANTIQUE] = gMonIcon_Sinistea, [SPECIES_POLTEAGEIST_ANTIQUE] = gMonIcon_Polteageist, - [SPECIES_ALCREMIE_RUBY_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieRubyCream, - [SPECIES_ALCREMIE_MATCHA_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieMatchaCream, - [SPECIES_ALCREMIE_MINT_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieMintCream, - [SPECIES_ALCREMIE_LEMON_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieLemonCream, - [SPECIES_ALCREMIE_SALTED_CREAM] = gMonIcon_QuestionMark,//gMonIcon_AlcremieSaltedCream, - [SPECIES_ALCREMIE_RUBY_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieRubySwirl, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieCaramelSwirl, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = gMonIcon_QuestionMark,//gMonIcon_AlcremieRainbowSwirl, [SPECIES_EISCUE_NOICE_FACE] = gMonIcon_EiscueNoiceFace, [SPECIES_INDEEDEE_FEMALE] = gMonIcon_IndeedeeFemale, [SPECIES_MORPEKO_HANGRY] = gMonIcon_MorpekoHangry, [SPECIES_ZACIAN_CROWNED_SWORD] = gMonIcon_ZacianCrownedSword, [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = gMonIcon_ZamazentaCrownedShield, [SPECIES_ETERNATUS_ETERNAMAX] = gMonIcon_EternatusEternamax, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = gMonIcon_Urshifu, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = gMonIcon_UrshifuSingleStrikeStyle, [SPECIES_ZARUDE_DADA] = gMonIcon_ZarudeDada, [SPECIES_CALYREX_ICE_RIDER] = gMonIcon_CalyrexIceRider, [SPECIES_CALYREX_SHADOW_RIDER] = gMonIcon_CalyrexShadowRider, [SPECIES_ENAMORUS_THERIAN] = gMonIcon_EnamorusTherian, [SPECIES_BASCULEGION_FEMALE] = gMonIcon_BasculegionFemale, -#endif + // Gigantamax Forms + [SPECIES_VENUSAUR_GIGANTAMAX] = gMonIcon_VenusaurGigantamax, + [SPECIES_CHARIZARD_GIGANTAMAX] = gMonIcon_CharizardGigantamax, + [SPECIES_BLASTOISE_GIGANTAMAX] = gMonIcon_BlastoiseGigantamax, + [SPECIES_BUTTERFREE_GIGANTAMAX] = gMonIcon_ButterfreeGigantamax, + [SPECIES_PIKACHU_GIGANTAMAX] = gMonIcon_PikachuGigantamax, + [SPECIES_MEOWTH_GIGANTAMAX] = gMonIcon_MeowthGigantamax, + [SPECIES_MACHAMP_GIGANTAMAX] = gMonIcon_MachampGigantamax, + [SPECIES_GENGAR_GIGANTAMAX] = gMonIcon_GengarGigantamax, + [SPECIES_KINGLER_GIGANTAMAX] = gMonIcon_KinglerGigantamax, + [SPECIES_LAPRAS_GIGANTAMAX] = gMonIcon_LaprasGigantamax, + [SPECIES_EEVEE_GIGANTAMAX] = gMonIcon_EeveeGigantamax, + [SPECIES_SNORLAX_GIGANTAMAX] = gMonIcon_SnorlaxGigantamax, + [SPECIES_GARBODOR_GIGANTAMAX] = gMonIcon_GarbodorGigantamax, + [SPECIES_MELMETAL_GIGANTAMAX] = gMonIcon_MelmetalGigantamax, + [SPECIES_RILLABOOM_GIGANTAMAX] = gMonIcon_RillaboomGigantamax, + [SPECIES_CINDERACE_GIGANTAMAX] = gMonIcon_CinderaceGigantamax, + [SPECIES_INTELEON_GIGANTAMAX] = gMonIcon_InteleonGigantamax, + [SPECIES_CORVIKNIGHT_GIGANTAMAX] = gMonIcon_CorviknightGigantamax, + [SPECIES_ORBEETLE_GIGANTAMAX] = gMonIcon_OrbeetleGigantamax, + [SPECIES_DREDNAW_GIGANTAMAX] = gMonIcon_DrednawGigantamax, + [SPECIES_COALOSSAL_GIGANTAMAX] = gMonIcon_CoalossalGigantamax, + [SPECIES_FLAPPLE_GIGANTAMAX] = gMonIcon_FlappleGigantamax, + [SPECIES_APPLETUN_GIGANTAMAX] = gMonIcon_AppletunGigantamax, + [SPECIES_SANDACONDA_GIGANTAMAX] = gMonIcon_SandacondaGigantamax, + [SPECIES_TOXTRICITY_AMPED_GIGANTAMAX] = gMonIcon_ToxtricityGigantamax, + [SPECIES_TOXTRICITY_LOW_KEY_GIGANTAMAX] = gMonIcon_ToxtricityGigantamax, + [SPECIES_CENTISKORCH_GIGANTAMAX] = gMonIcon_CentiskorchGigantamax, + [SPECIES_HATTERENE_GIGANTAMAX] = gMonIcon_HattereneGigantamax, + [SPECIES_GRIMMSNARL_GIGANTAMAX] = gMonIcon_GrimmsnarlGigantamax, + [SPECIES_ALCREMIE_GIGANTAMAX] = gMonIcon_AlcremieGigantamax, + [SPECIES_COPPERAJAH_GIGANTAMAX] = gMonIcon_CopperajahGigantamax, + [SPECIES_DURALUDON_GIGANTAMAX] = gMonIcon_DuraludonGigantamax, + [SPECIES_URSHIFU_SINGLE_STRIKE_STYLE_GIGANTAMAX] = gMonIcon_UrshifuSingleStrikeGigantamax, + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE_GIGANTAMAX] = gMonIcon_UrshifuRapidStrikeGigantamax, + [SPECIES_SPRIGATITO] = gMonIcon_Sprigatito, + [SPECIES_FLORAGATO] = gMonIcon_Floragato, + [SPECIES_MEOWSCARADA] = gMonIcon_Meowscarada, + [SPECIES_FUECOCO] = gMonIcon_Fuecoco, + [SPECIES_CROCALOR] = gMonIcon_Crocalor, + [SPECIES_SKELEDIRGE] = gMonIcon_Skeledirge, + [SPECIES_QUAXLY] = gMonIcon_Quaxly, + [SPECIES_QUAXWELL] = gMonIcon_Quaxwell, + [SPECIES_QUAQUAVAL] = gMonIcon_Quaquaval, + [SPECIES_LECHONK] = gMonIcon_Lechonk, + [SPECIES_OINKOLOGNE_MALE] = gMonIcon_OinkologneMale, + [SPECIES_OINKOLOGNE_FEMALE] = gMonIcon_OinkologneFemale, + [SPECIES_TAROUNTULA] = gMonIcon_Tarountula, + [SPECIES_SPIDOPS] = gMonIcon_Spidops, + [SPECIES_NYMBLE] = gMonIcon_Nymble, + [SPECIES_LOKIX] = gMonIcon_Lokix, + [SPECIES_PAWMI] = gMonIcon_Pawmi, + [SPECIES_PAWMO] = gMonIcon_Pawmo, + [SPECIES_PAWMOT] = gMonIcon_Pawmot, + [SPECIES_TANDEMAUS] = gMonIcon_Tandemaus, + [SPECIES_MAUSHOLD_FAMILY_OF_THREE] = gMonIcon_MausholdFamilyOfThree, + [SPECIES_MAUSHOLD_FAMILY_OF_FOUR] = gMonIcon_MausholdFamilyOfFour, + [SPECIES_FIDOUGH] = gMonIcon_Fidough, + [SPECIES_DACHSBUN] = gMonIcon_Dachsbun, + [SPECIES_SMOLIV] = gMonIcon_Smoliv, + [SPECIES_DOLLIV] = gMonIcon_Dolliv, + [SPECIES_ARBOLIVA] = gMonIcon_Arboliva, + [SPECIES_SQUAWKABILLY_GREEN_PLUMAGE] = gMonIcon_SquawkabillyGreenPlumage, + [SPECIES_SQUAWKABILLY_BLUE_PLUMAGE] = gMonIcon_SquawkabillyBluePlumage, + [SPECIES_SQUAWKABILLY_YELLOW_PLUMAGE] = gMonIcon_SquawkabillyYellowPlumage, + [SPECIES_SQUAWKABILLY_WHITE_PLUMAGE] = gMonIcon_SquawkabillyWhitePlumage, + [SPECIES_NACLI] = gMonIcon_Nacli, + [SPECIES_NACLSTACK] = gMonIcon_Naclstack, + [SPECIES_GARGANACL] = gMonIcon_Garganacl, + [SPECIES_CHARCADET] = gMonIcon_Charcadet, + [SPECIES_ARMAROUGE] = gMonIcon_Armarouge, + [SPECIES_CERULEDGE] = gMonIcon_Ceruledge, + [SPECIES_TADBULB] = gMonIcon_Tadbulb, + [SPECIES_BELLIBOLT] = gMonIcon_Bellibolt, + [SPECIES_WATTREL] = gMonIcon_Wattrel, + [SPECIES_KILOWATTREL] = gMonIcon_Kilowattrel, + [SPECIES_MASCHIFF] = gMonIcon_Maschiff, + [SPECIES_MABOSSTIFF] = gMonIcon_Mabosstiff, + [SPECIES_SHROODLE] = gMonIcon_Shroodle, + [SPECIES_GRAFAIAI] = gMonIcon_Grafaiai, + [SPECIES_BRAMBLIN] = gMonIcon_Bramblin, + [SPECIES_BRAMBLEGHAST] = gMonIcon_Brambleghast, + [SPECIES_TOEDSCOOL] = gMonIcon_Toedscool, + [SPECIES_TOEDSCRUEL] = gMonIcon_Toedscruel, + [SPECIES_KLAWF] = gMonIcon_Klawf, + [SPECIES_CAPSAKID] = gMonIcon_Capsakid, + [SPECIES_SCOVILLAIN] = gMonIcon_Scovillain, + [SPECIES_RELLOR] = gMonIcon_Rellor, + [SPECIES_RABSCA] = gMonIcon_Rabsca, + [SPECIES_FLITTLE] = gMonIcon_Flittle, + [SPECIES_ESPATHRA] = gMonIcon_Espathra, + [SPECIES_TINKATINK] = gMonIcon_Tinkatink, + [SPECIES_TINKATUFF] = gMonIcon_Tinkatuff, + [SPECIES_TINKATON] = gMonIcon_Tinkaton, + [SPECIES_WIGLETT] = gMonIcon_Wiglett, + [SPECIES_WUGTRIO] = gMonIcon_Wugtrio, + [SPECIES_BOMBIRDIER] = gMonIcon_Bombirdier, + [SPECIES_FINIZEN] = gMonIcon_Finizen, + [SPECIES_PALAFIN_ZERO] = gMonIcon_PalafinZero, + [SPECIES_PALAFIN_HERO] = gMonIcon_PalafinHero, + [SPECIES_VAROOM] = gMonIcon_Varoom, + [SPECIES_REVAVROOM] = gMonIcon_Revavroom, + [SPECIES_CYCLIZAR] = gMonIcon_Cyclizar, + [SPECIES_ORTHWORM] = gMonIcon_Orthworm, + [SPECIES_GLIMMET] = gMonIcon_Glimmet, + [SPECIES_GLIMMORA] = gMonIcon_Glimmora, + [SPECIES_GREAVARD] = gMonIcon_Greavard, + [SPECIES_HOUNDSTONE] = gMonIcon_Houndstone, + [SPECIES_FLAMIGO] = gMonIcon_Flamigo, + [SPECIES_CETODDLE] = gMonIcon_Cetoddle, + [SPECIES_CETITAN] = gMonIcon_Cetitan, + [SPECIES_VELUZA] = gMonIcon_Veluza, + [SPECIES_DONDOZO] = gMonIcon_Dondozo, + [SPECIES_TATSUGIRI_CURLY] = gMonIcon_TatsugiriCurly, + [SPECIES_TATSUGIRI_DROOPY] = gMonIcon_TatsugiriDroopy, + [SPECIES_TATSUGIRI_STRETCHY] = gMonIcon_TatsugiriStretchy, + [SPECIES_ANNIHILAPE] = gMonIcon_Annihilape, + [SPECIES_CLODSIRE] = gMonIcon_Clodsire, + [SPECIES_FARIGIRAF] = gMonIcon_Farigiraf, + [SPECIES_DUDUNSPARCE_TWO_SEGMENT] = gMonIcon_Dudunsparce, + [SPECIES_DUDUNSPARCE_THREE_SEGMENT] = gMonIcon_Dudunsparce, + [SPECIES_KINGAMBIT] = gMonIcon_Kingambit, + [SPECIES_GREAT_TUSK] = gMonIcon_GreatTusk, + [SPECIES_SCREAM_TAIL] = gMonIcon_ScreamTail, + [SPECIES_BRUTE_BONNET] = gMonIcon_BruteBonnet, + [SPECIES_FLUTTER_MANE] = gMonIcon_FlutterMane, + [SPECIES_SLITHER_WING] = gMonIcon_SlitherWing, + [SPECIES_SANDY_SHOCKS] = gMonIcon_SandyShocks, + [SPECIES_IRON_TREADS] = gMonIcon_IronTreads, + [SPECIES_IRON_BUNDLE] = gMonIcon_IronBundle, + [SPECIES_IRON_HANDS] = gMonIcon_IronHands, + [SPECIES_IRON_JUGULIS] = gMonIcon_IronJugulis, + [SPECIES_IRON_MOTH] = gMonIcon_IronMoth, + [SPECIES_IRON_THORNS] = gMonIcon_IronThorns, + [SPECIES_FRIGIBAX] = gMonIcon_Frigibax, + [SPECIES_ARCTIBAX] = gMonIcon_Arctibax, + [SPECIES_BAXCALIBUR] = gMonIcon_Baxcalibur, + [SPECIES_GIMMIGHOUL_CHEST] = gMonIcon_GimmighoulChest, + [SPECIES_GIMMIGHOUL_ROAMING] = gMonIcon_GimmighoulRoaming, + [SPECIES_GHOLDENGO] = gMonIcon_Gholdengo, + [SPECIES_WO_CHIEN] = gMonIcon_WoChien, + [SPECIES_CHIEN_PAO] = gMonIcon_ChienPao, + [SPECIES_TING_LU] = gMonIcon_TingLu, + [SPECIES_CHI_YU] = gMonIcon_ChiYu, + [SPECIES_ROARING_MOON] = gMonIcon_RoaringMoon, + [SPECIES_IRON_VALIANT] = gMonIcon_IronValiant, + [SPECIES_KORAIDON] = gMonIcon_Koraidon, + [SPECIES_MIRAIDON] = gMonIcon_Miraidon, + [SPECIES_WALKING_WAKE] = gMonIcon_WalkingWake, + [SPECIES_IRON_LEAVES] = gMonIcon_IronLeaves, + [SPECIES_DIPPLIN] = gMonIcon_Dipplin, + [SPECIES_POLTCHAGEIST_COUNTERFEIT] = gMonIcon_Poltchageist, + [SPECIES_POLTCHAGEIST_ARTISAN] = gMonIcon_Poltchageist, + [SPECIES_SINISTCHA_UNREMARKABLE] = gMonIcon_Sinistcha, + [SPECIES_SINISTCHA_MASTERPIECE] = gMonIcon_Sinistcha, + [SPECIES_OKIDOGI] = gMonIcon_Okidogi, + [SPECIES_MUNKIDORI] = gMonIcon_Munkidori, + [SPECIES_FEZANDIPITI] = gMonIcon_Fezandipiti, + [SPECIES_OGERPON_TEAL_MASK] = gMonIcon_OgerponTealMask, + //[SPECIES_OGERPON_WELLSPRING_MASK] = gMonIcon_OgerponWellspringMask, TODO + //[SPECIES_OGERPON_HEARTHFLAME_MASK] = gMonIcon_OgerponHearthflameMask, TODO + //[SPECIES_OGERPON_CORNERSTONE_MASK] = gMonIcon_OgerponCornerstoneMask, TODO + [SPECIES_OGERPON_TEAL_MASK_TERA] = gMonIcon_OgerponTealMask, + //[SPECIES_OGERPON_WELLSPRING_MASK_TERA] = gMonIcon_OgerponWellspringMask, TODO + //[SPECIES_OGERPON_HEARTHFLAME_MASK_TERA] = gMonIcon_OgerponHearthflameMask, TODO + //[SPECIES_OGERPON_CORNERSTONE_MASK_TERA] = gMonIcon_OgerponCornerstoneMask, TODO [SPECIES_EGG] = gMonIcon_Egg, }; - -// Female icon palette indexes still need to be defined in gMonIconPaletteIndicesFemale, even if they are the same as males. -const u8 *const gMonIconTableFemale[NUM_SPECIES + 1] = -{ -#if P_GEN_4_POKEMON == TRUE && P_HIPPO_GENDER_DIFF_ICONS == TRUE - [SPECIES_HIPPOPOTAS] = gMonIcon_HippopotasF, - [SPECIES_HIPPOWDON] = gMonIcon_HippowdonF, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_UNFEZANT] = gMonIcon_UnfezantF, - [SPECIES_FRILLISH] = gMonIcon_FrillishF, - [SPECIES_JELLICENT] = gMonIcon_JellicentF, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_PYROAR] = gMonIcon_PyroarF, -#endif -}; - -const u8 gMonIconPaletteIndices[] = -{ - [SPECIES_BULBASAUR] = 4, - [SPECIES_IVYSAUR] = 4, - [SPECIES_VENUSAUR] = 4, - [SPECIES_CHARMANDER] = 0, - [SPECIES_CHARMELEON] = 0, - [SPECIES_CHARIZARD] = 0, - [SPECIES_SQUIRTLE] = 0, - [SPECIES_WARTORTLE] = 2, - [SPECIES_BLASTOISE] = 2, - [SPECIES_CATERPIE] = 1, - [SPECIES_METAPOD] = 1, - [SPECIES_BUTTERFREE] = 0, - [SPECIES_WEEDLE] = 2, - [SPECIES_KAKUNA] = 2, - [SPECIES_BEEDRILL] = 2, - [SPECIES_PIDGEY] = 0, - [SPECIES_PIDGEOTTO] = 0, - [SPECIES_PIDGEOT] = 0, - [SPECIES_RATTATA] = 2, - [SPECIES_RATICATE] = 2, - [SPECIES_SPEAROW] = 0, - [SPECIES_FEAROW] = 0, - [SPECIES_EKANS] = 2, - [SPECIES_ARBOK] = 2, - [SPECIES_PIKACHU] = 2, - [SPECIES_RAICHU] = 0, - [SPECIES_SANDSHREW] = 2, - [SPECIES_SANDSLASH] = 2, - [SPECIES_NIDORAN_F] = 0, - [SPECIES_NIDORINA] = 0, - [SPECIES_NIDOQUEEN] = 2, - [SPECIES_NIDORAN_M] = 2, - [SPECIES_NIDORINO] = 2, - [SPECIES_NIDOKING] = 2, - [SPECIES_CLEFAIRY] = 0, - [SPECIES_CLEFABLE] = 0, - [SPECIES_VULPIX] = 5, - [SPECIES_NINETALES] = 3, - [SPECIES_JIGGLYPUFF] = 0, - [SPECIES_WIGGLYTUFF] = 0, - [SPECIES_ZUBAT] = 2, - [SPECIES_GOLBAT] = 2, - [SPECIES_ODDISH] = 4, - [SPECIES_GLOOM] = 0, - [SPECIES_VILEPLUME] = 0, - [SPECIES_PARAS] = 0, - [SPECIES_PARASECT] = 0, - [SPECIES_VENONAT] = 2, - [SPECIES_VENOMOTH] = 2, - [SPECIES_DIGLETT] = 2, - [SPECIES_DUGTRIO] = 2, - [SPECIES_MEOWTH] = 1, - [SPECIES_PERSIAN] = 1, - [SPECIES_PSYDUCK] = 1, - [SPECIES_GOLDUCK] = 0, - [SPECIES_MANKEY] = 1, - [SPECIES_PRIMEAPE] = 2, - [SPECIES_GROWLITHE] = 3, - [SPECIES_ARCANINE] = 3, - [SPECIES_POLIWAG] = 0, - [SPECIES_POLIWHIRL] = 0, - [SPECIES_POLIWRATH] = 0, - [SPECIES_ABRA] = 2, - [SPECIES_KADABRA] = 2, - [SPECIES_ALAKAZAM] = 2, - [SPECIES_MACHOP] = 0, - [SPECIES_MACHOKE] = 2, - [SPECIES_MACHAMP] = 0, - [SPECIES_BELLSPROUT] = 1, - [SPECIES_WEEPINBELL] = 1, - [SPECIES_VICTREEBEL] = 1, - [SPECIES_TENTACOOL] = 0, - [SPECIES_TENTACRUEL] = 0, - [SPECIES_GEODUDE] = 1, - [SPECIES_GRAVELER] = 1, - [SPECIES_GOLEM] = 2, - [SPECIES_PONYTA] = 3, - [SPECIES_RAPIDASH] = 3, - [SPECIES_SLOWPOKE] = 0, - [SPECIES_SLOWBRO] = 0, - [SPECIES_MAGNEMITE] = 0, - [SPECIES_MAGNETON] = 0, - [SPECIES_FARFETCHD] = 1, - [SPECIES_DODUO] = 2, - [SPECIES_DODRIO] = 2, - [SPECIES_SEEL] = 0, - [SPECIES_DEWGONG] = 2, - [SPECIES_GRIMER] = 2, - [SPECIES_MUK] = 2, - [SPECIES_SHELLDER] = 2, - [SPECIES_CLOYSTER] = 2, - [SPECIES_GASTLY] = 2, - [SPECIES_HAUNTER] = 2, - [SPECIES_GENGAR] = 2, - [SPECIES_ONIX] = 2, - [SPECIES_DROWZEE] = 2, - [SPECIES_HYPNO] = 2, - [SPECIES_KRABBY] = 0, - [SPECIES_KINGLER] = 0, - [SPECIES_VOLTORB] = 0, - [SPECIES_ELECTRODE] = 0, - [SPECIES_EXEGGCUTE] = 0, - [SPECIES_EXEGGUTOR] = 1, - [SPECIES_CUBONE] = 2, - [SPECIES_MAROWAK] = 2, - [SPECIES_HITMONLEE] = 2, - [SPECIES_HITMONCHAN] = 2, - [SPECIES_LICKITUNG] = 0, - [SPECIES_KOFFING] = 2, - [SPECIES_WEEZING] = 2, - [SPECIES_RHYHORN] = 1, - [SPECIES_RHYDON] = 1, - [SPECIES_CHANSEY] = 0, - [SPECIES_TANGELA] = 0, - [SPECIES_KANGASKHAN] = 2, - [SPECIES_HORSEA] = 0, - [SPECIES_SEADRA] = 0, - [SPECIES_GOLDEEN] = 0, - [SPECIES_SEAKING] = 0, - [SPECIES_STARYU] = 2, - [SPECIES_STARMIE] = 2, - [SPECIES_MR_MIME] = 0, - [SPECIES_SCYTHER] = 1, - [SPECIES_JYNX] = 2, - [SPECIES_ELECTABUZZ] = 1, - [SPECIES_MAGMAR] = 0, - [SPECIES_PINSIR] = 2, - [SPECIES_TAUROS] = 2, - [SPECIES_MAGIKARP] = 0, - [SPECIES_GYARADOS] = 0, - [SPECIES_LAPRAS] = 2, - [SPECIES_DITTO] = 2, - [SPECIES_EEVEE] = 2, - [SPECIES_VAPOREON] = 0, - [SPECIES_JOLTEON] = 2, - [SPECIES_FLAREON] = 3, - [SPECIES_PORYGON] = 0, - [SPECIES_OMANYTE] = 0, - [SPECIES_OMASTAR] = 0, - [SPECIES_KABUTO] = 2, - [SPECIES_KABUTOPS] = 2, - [SPECIES_AERODACTYL] = 2, - [SPECIES_SNORLAX] = 3, - [SPECIES_ARTICUNO] = 2, - [SPECIES_ZAPDOS] = 0, - [SPECIES_MOLTRES] = 0, - [SPECIES_DRATINI] = 0, - [SPECIES_DRAGONAIR] = 0, - [SPECIES_DRAGONITE] = 2, - [SPECIES_MEWTWO] = 2, - [SPECIES_MEW] = 0, - [SPECIES_CHIKORITA] = 1, - [SPECIES_BAYLEEF] = 1, - [SPECIES_MEGANIUM] = 1, - [SPECIES_CYNDAQUIL] = 3, - [SPECIES_QUILAVA] = 3, - [SPECIES_TYPHLOSION] = 3, - [SPECIES_TOTODILE] = 0, - [SPECIES_CROCONAW] = 0, - [SPECIES_FERALIGATR] = 0, - [SPECIES_SENTRET] = 2, - [SPECIES_FURRET] = 2, - [SPECIES_HOOTHOOT] = 2, - [SPECIES_NOCTOWL] = 2, - [SPECIES_LEDYBA] = 0, - [SPECIES_LEDIAN] = 0, - [SPECIES_SPINARAK] = 1, - [SPECIES_ARIADOS] = 0, - [SPECIES_CROBAT] = 2, - [SPECIES_CHINCHOU] = 2, - [SPECIES_LANTURN] = 0, - [SPECIES_PICHU] = 1, - [SPECIES_CLEFFA] = 0, - [SPECIES_IGGLYBUFF] = 1, - [SPECIES_TOGEPI] = 0, - [SPECIES_TOGETIC] = 0, - [SPECIES_NATU] = 1, - [SPECIES_XATU] = 1, - [SPECIES_MAREEP] = 0, - [SPECIES_FLAAFFY] = 0, - [SPECIES_AMPHAROS] = 0, - [SPECIES_BELLOSSOM] = 1, - [SPECIES_MARILL] = 0, - [SPECIES_AZUMARILL] = 0, - [SPECIES_SUDOWOODO] = 1, - [SPECIES_POLITOED] = 1, - [SPECIES_HOPPIP] = 1, - [SPECIES_SKIPLOOM] = 1, - [SPECIES_JUMPLUFF] = 2, - [SPECIES_AIPOM] = 2, - [SPECIES_SUNKERN] = 1, - [SPECIES_SUNFLORA] = 1, - [SPECIES_YANMA] = 1, - [SPECIES_WOOPER] = 0, - [SPECIES_QUAGSIRE] = 0, - [SPECIES_ESPEON] = 2, - [SPECIES_UMBREON] = 0, - [SPECIES_MURKROW] = 2, - [SPECIES_SLOWKING] = 0, - [SPECIES_MISDREAVUS] = 0, - [SPECIES_UNOWN] = 0, - [SPECIES_WOBBUFFET] = 0, - [SPECIES_GIRAFARIG] = 1, - [SPECIES_PINECO] = 0, - [SPECIES_FORRETRESS] = 2, - [SPECIES_DUNSPARCE] = 0, - [SPECIES_GLIGAR] = 0, - [SPECIES_STEELIX] = 0, - [SPECIES_SNUBBULL] = 0, - [SPECIES_GRANBULL] = 2, - [SPECIES_QWILFISH] = 0, - [SPECIES_SCIZOR] = 0, - [SPECIES_SHUCKLE] = 1, - [SPECIES_HERACROSS] = 0, - [SPECIES_SNEASEL] = 0, - [SPECIES_TEDDIURSA] = 0, - [SPECIES_URSARING] = 2, - [SPECIES_SLUGMA] = 0, - [SPECIES_MAGCARGO] = 0, - [SPECIES_SWINUB] = 2, - [SPECIES_PILOSWINE] = 2, - [SPECIES_CORSOLA] = 0, - [SPECIES_REMORAID] = 0, - [SPECIES_OCTILLERY] = 0, - [SPECIES_DELIBIRD] = 1, - [SPECIES_MANTINE] = 2, - [SPECIES_SKARMORY] = 0, - [SPECIES_HOUNDOUR] = 0, - [SPECIES_HOUNDOOM] = 0, - [SPECIES_KINGDRA] = 0, - [SPECIES_PHANPY] = 0, - [SPECIES_DONPHAN] = 0, - [SPECIES_PORYGON2] = 0, - [SPECIES_STANTLER] = 2, - [SPECIES_SMEARGLE] = 1, - [SPECIES_TYROGUE] = 2, - [SPECIES_HITMONTOP] = 2, - [SPECIES_SMOOCHUM] = 1, - [SPECIES_ELEKID] = 1, - [SPECIES_MAGBY] = 0, - [SPECIES_MILTANK] = 0, - [SPECIES_BLISSEY] = 0, - [SPECIES_RAIKOU] = 2, - [SPECIES_ENTEI] = 2, - [SPECIES_SUICUNE] = 2, - [SPECIES_LARVITAR] = 1, - [SPECIES_PUPITAR] = 2, - [SPECIES_TYRANITAR] = 4, - [SPECIES_LUGIA] = 0, - [SPECIES_HO_OH] = 1, - [SPECIES_CELEBI] = 1, - [SPECIES_TREECKO] = 1, - [SPECIES_GROVYLE] = 1, - [SPECIES_SCEPTILE] = 1, - [SPECIES_TORCHIC] = 0, - [SPECIES_COMBUSKEN] = 0, - [SPECIES_BLAZIKEN] = 0, - [SPECIES_MUDKIP] = 0, - [SPECIES_MARSHTOMP] = 0, - [SPECIES_SWAMPERT] = 0, - [SPECIES_POOCHYENA] = 2, - [SPECIES_MIGHTYENA] = 2, - [SPECIES_ZIGZAGOON] = 2, - [SPECIES_LINOONE] = 2, - [SPECIES_WURMPLE] = 0, - [SPECIES_SILCOON] = 2, - [SPECIES_BEAUTIFLY] = 0, - [SPECIES_CASCOON] = 2, - [SPECIES_DUSTOX] = 5, - [SPECIES_LOTAD] = 4, - [SPECIES_LOMBRE] = 1, - [SPECIES_LUDICOLO] = 1, - [SPECIES_SEEDOT] = 2, - [SPECIES_NUZLEAF] = 1, - [SPECIES_SHIFTRY] = 5, - [SPECIES_NINCADA] = 1, - [SPECIES_NINJASK] = 1, - [SPECIES_SHEDINJA] = 1, - [SPECIES_TAILLOW] = 2, - [SPECIES_SWELLOW] = 2, - [SPECIES_SHROOMISH] = 1, - [SPECIES_BRELOOM] = 1, - [SPECIES_SPINDA] = 1, - [SPECIES_WINGULL] = 0, - [SPECIES_PELIPPER] = 2, - [SPECIES_SURSKIT] = 0, - [SPECIES_MASQUERAIN] = 0, - [SPECIES_WAILMER] = 2, - [SPECIES_WAILORD] = 0, - [SPECIES_SKITTY] = 0, - [SPECIES_DELCATTY] = 2, - [SPECIES_KECLEON] = 1, - [SPECIES_BALTOY] = 2, - [SPECIES_CLAYDOL] = 0, - [SPECIES_NOSEPASS] = 0, - [SPECIES_TORKOAL] = 2, - [SPECIES_SABLEYE] = 2, - [SPECIES_BARBOACH] = 0, - [SPECIES_WHISCASH] = 0, - [SPECIES_LUVDISC] = 0, - [SPECIES_CORPHISH] = 0, - [SPECIES_CRAWDAUNT] = 0, - [SPECIES_FEEBAS] = 2, - [SPECIES_MILOTIC] = 2, - [SPECIES_CARVANHA] = 0, - [SPECIES_SHARPEDO] = 0, - [SPECIES_TRAPINCH] = 0, - [SPECIES_VIBRAVA] = 1, - [SPECIES_FLYGON] = 1, - [SPECIES_MAKUHITA] = 1, - [SPECIES_HARIYAMA] = 2, - [SPECIES_ELECTRIKE] = 1, - [SPECIES_MANECTRIC] = 0, - [SPECIES_NUMEL] = 1, - [SPECIES_CAMERUPT] = 0, - [SPECIES_SPHEAL] = 2, - [SPECIES_SEALEO] = 2, - [SPECIES_WALREIN] = 0, - [SPECIES_CACNEA] = 1, - [SPECIES_CACTURNE] = 1, - [SPECIES_SNORUNT] = 2, - [SPECIES_GLALIE] = 0, - [SPECIES_LUNATONE] = 1, - [SPECIES_SOLROCK] = 0, - [SPECIES_AZURILL] = 0, - [SPECIES_SPOINK] = 0, - [SPECIES_GRUMPIG] = 2, - [SPECIES_PLUSLE] = 0, - [SPECIES_MINUN] = 0, - [SPECIES_MAWILE] = 2, - [SPECIES_MEDITITE] = 0, - [SPECIES_MEDICHAM] = 0, - [SPECIES_SWABLU] = 0, - [SPECIES_ALTARIA] = 0, - [SPECIES_WYNAUT] = 0, - [SPECIES_DUSKULL] = 0, - [SPECIES_DUSCLOPS] = 0, - [SPECIES_ROSELIA] = 4, - [SPECIES_SLAKOTH] = 2, - [SPECIES_VIGOROTH] = 2, - [SPECIES_SLAKING] = 2, - [SPECIES_GULPIN] = 1, - [SPECIES_SWALOT] = 2, - [SPECIES_TROPIUS] = 1, - [SPECIES_WHISMUR] = 1, - [SPECIES_LOUDRED] = 2, - [SPECIES_EXPLOUD] = 2, - [SPECIES_CLAMPERL] = 0, - [SPECIES_HUNTAIL] = 0, - [SPECIES_GOREBYSS] = 0, - [SPECIES_ABSOL] = 0, - [SPECIES_SHUPPET] = 0, - [SPECIES_BANETTE] = 0, - [SPECIES_SEVIPER] = 2, - [SPECIES_ZANGOOSE] = 0, - [SPECIES_RELICANTH] = 2, - [SPECIES_ARON] = 2, - [SPECIES_LAIRON] = 2, - [SPECIES_AGGRON] = 2, - [SPECIES_CASTFORM] = 0, - [SPECIES_VOLBEAT] = 0, - [SPECIES_ILLUMISE] = 2, - [SPECIES_LILEEP] = 2, - [SPECIES_CRADILY] = 1, - [SPECIES_ANORITH] = 0, - [SPECIES_ARMALDO] = 2, - [SPECIES_RALTS] = 1, - [SPECIES_KIRLIA] = 1, - [SPECIES_GARDEVOIR] = 1, - [SPECIES_BAGON] = 0, - [SPECIES_SHELGON] = 2, - [SPECIES_SALAMENCE] = 0, - [SPECIES_BELDUM] = 0, - [SPECIES_METANG] = 0, - [SPECIES_METAGROSS] = 0, - [SPECIES_REGIROCK] = 2, - [SPECIES_REGICE] = 0, - [SPECIES_REGISTEEL] = 2, - [SPECIES_KYOGRE] = 2, - [SPECIES_GROUDON] = 0, - [SPECIES_RAYQUAZA] = 1, - [SPECIES_LATIAS] = 0, - [SPECIES_LATIOS] = 0, - [SPECIES_JIRACHI] = 0, - [SPECIES_DEOXYS] = 0, - [SPECIES_CHIMECHO] = 0, - [SPECIES_TURTWIG] = 1, - [SPECIES_GROTLE] = 1, - [SPECIES_TORTERRA] = 1, - [SPECIES_CHIMCHAR] = 1, - [SPECIES_MONFERNO] = 0, - [SPECIES_INFERNAPE] = 0, - [SPECIES_PIPLUP] = 0, - [SPECIES_PRINPLUP] = 0, - [SPECIES_EMPOLEON] = 0, - [SPECIES_STARLY] = 0, - [SPECIES_STARAVIA] = 0, - [SPECIES_STARAPTOR] = 0, - [SPECIES_BIDOOF] = 2, - [SPECIES_BIBAREL] = 2, - [SPECIES_KRICKETOT] = 2, - [SPECIES_KRICKETUNE] = 2, - [SPECIES_SHINX] = 0, - [SPECIES_LUXIO] = 0, - [SPECIES_LUXRAY] = 0, - [SPECIES_BUDEW] = 1, - [SPECIES_ROSERADE] = 0, - [SPECIES_CRANIDOS] = 0, - [SPECIES_RAMPARDOS] = 0, - [SPECIES_SHIELDON] = 1, - [SPECIES_BASTIODON] = 1, - [SPECIES_BURMY] = 1, - [SPECIES_WORMADAM] = 1, - [SPECIES_MOTHIM] = 0, - [SPECIES_COMBEE] = 0, - [SPECIES_VESPIQUEN] = 0, - [SPECIES_PACHIRISU] = 0, - [SPECIES_BUIZEL] = 0, - [SPECIES_FLOATZEL] = 0, - [SPECIES_CHERUBI] = 1, - [SPECIES_CHERRIM] = 0, - [SPECIES_SHELLOS] = 0, - [SPECIES_GASTRODON] = 0, - [SPECIES_AMBIPOM] = 2, - [SPECIES_DRIFLOON] = 2, - [SPECIES_DRIFBLIM] = 2, - [SPECIES_BUNEARY] = 2, - [SPECIES_LOPUNNY] = 2, - [SPECIES_MISMAGIUS] = 2, - [SPECIES_HONCHKROW] = 2, - [SPECIES_GLAMEOW] = 0, - [SPECIES_PURUGLY] = 0, - [SPECIES_CHINGLING] = 1, - [SPECIES_STUNKY] = 2, - [SPECIES_SKUNTANK] = 2, - [SPECIES_BRONZOR] = 0, - [SPECIES_BRONZONG] = 0, - [SPECIES_BONSLY] = 1, - [SPECIES_MIME_JR] = 0, - [SPECIES_HAPPINY] = 0, - [SPECIES_CHATOT] = 0, - [SPECIES_SPIRITOMB] = 5, - [SPECIES_GIBLE] = 0, - [SPECIES_GABITE] = 0, - [SPECIES_GARCHOMP] = 0, - [SPECIES_MUNCHLAX] = 3, - [SPECIES_RIOLU] = 2, - [SPECIES_LUCARIO] = 2, - [SPECIES_HIPPOPOTAS] = 1, - [SPECIES_HIPPOWDON] = 1, - [SPECIES_SKORUPI] = 0, - [SPECIES_DRAPION] = 2, - [SPECIES_CROAGUNK] = 0, - [SPECIES_TOXICROAK] = 0, - [SPECIES_CARNIVINE] = 1, - [SPECIES_FINNEON] = 0, - [SPECIES_LUMINEON] = 0, - [SPECIES_MANTYKE] = 0, - [SPECIES_SNOVER] = 1, - [SPECIES_ABOMASNOW] = 1, - [SPECIES_WEAVILE] = 0, - [SPECIES_MAGNEZONE] = 0, - [SPECIES_LICKILICKY] = 1, - [SPECIES_RHYPERIOR] = 0, - [SPECIES_TANGROWTH] = 0, - [SPECIES_ELECTIVIRE] = 1, - [SPECIES_MAGMORTAR] = 0, - [SPECIES_TOGEKISS] = 2, - [SPECIES_YANMEGA] = 1, - [SPECIES_LEAFEON] = 1, - [SPECIES_GLACEON] = 0, - [SPECIES_GLISCOR] = 2, - [SPECIES_MAMOSWINE] = 2, - [SPECIES_PORYGON_Z] = 0, - [SPECIES_GALLADE] = 1, - [SPECIES_PROBOPASS] = 0, - [SPECIES_DUSKNOIR] = 2, - [SPECIES_FROSLASS] = 0, - [SPECIES_ROTOM] = 0, - [SPECIES_UXIE] = 0, - [SPECIES_MESPRIT] = 0, - [SPECIES_AZELF] = 0, - [SPECIES_DIALGA] = 2, - [SPECIES_PALKIA] = 2, - [SPECIES_HEATRAN] = 0, - [SPECIES_REGIGIGAS] = 0, - [SPECIES_GIRATINA] = 0, - [SPECIES_CRESSELIA] = 0, - [SPECIES_PHIONE] = 0, - [SPECIES_MANAPHY] = 0, - [SPECIES_DARKRAI] = 0, - [SPECIES_SHAYMIN] = 1, - [SPECIES_ARCEUS] = 1, - [SPECIES_VICTINI] = 0, - [SPECIES_SNIVY] = 1, - [SPECIES_SERVINE] = 1, - [SPECIES_SERPERIOR] = 1, - [SPECIES_TEPIG] = 0, - [SPECIES_PIGNITE] = 0, - [SPECIES_EMBOAR] = 0, - [SPECIES_OSHAWOTT] = 0, - [SPECIES_DEWOTT] = 0, - [SPECIES_SAMUROTT] = 2, - [SPECIES_PATRAT] = 2, - [SPECIES_WATCHOG] = 2, - [SPECIES_LILLIPUP] = 2, - [SPECIES_HERDIER] = 2, - [SPECIES_STOUTLAND] = 2, - [SPECIES_PURRLOIN] = 0, - [SPECIES_LIEPARD] = 0, - [SPECIES_PANSAGE] = 1, - [SPECIES_SIMISAGE] = 1, - [SPECIES_PANSEAR] = 2, - [SPECIES_SIMISEAR] = 2, - [SPECIES_PANPOUR] = 2, - [SPECIES_SIMIPOUR] = 2, - [SPECIES_MUNNA] = 0, - [SPECIES_MUSHARNA] = 0, - [SPECIES_PIDOVE] = 0, - [SPECIES_TRANQUILL] = 0, - [SPECIES_UNFEZANT] = 1, - [SPECIES_BLITZLE] = 2, - [SPECIES_ZEBSTRIKA] = 2, - [SPECIES_ROGGENROLA] = 2, - [SPECIES_BOLDORE] = 0, - [SPECIES_GIGALITH] = 0, - [SPECIES_WOOBAT] = 0, - [SPECIES_SWOOBAT] = 0, - [SPECIES_DRILBUR] = 0, - [SPECIES_EXCADRILL] = 0, - [SPECIES_AUDINO] = 1, - [SPECIES_TIMBURR] = 1, - [SPECIES_GURDURR] = 1, - [SPECIES_CONKELDURR] = 1, - [SPECIES_TYMPOLE] = 2, - [SPECIES_PALPITOAD] = 2, - [SPECIES_SEISMITOAD] = 0, - [SPECIES_THROH] = 0, - [SPECIES_SAWK] = 0, - [SPECIES_SEWADDLE] = 1, - [SPECIES_SWADLOON] = 1, - [SPECIES_LEAVANNY] = 1, - [SPECIES_VENIPEDE] = 1, - [SPECIES_WHIRLIPEDE] = 2, - [SPECIES_SCOLIPEDE] = 2, - [SPECIES_COTTONEE] = 1, - [SPECIES_WHIMSICOTT] = 1, - [SPECIES_PETILIL] = 1, - [SPECIES_LILLIGANT] = 1, - [SPECIES_BASCULIN] = 1, - [SPECIES_SANDILE] = 1, - [SPECIES_KROKOROK] = 1, - [SPECIES_KROOKODILE] = 0, - [SPECIES_DARUMAKA] = 0, - [SPECIES_DARMANITAN] = 0, - [SPECIES_MARACTUS] = 1, - [SPECIES_DWEBBLE] = 0, - [SPECIES_CRUSTLE] = 2, - [SPECIES_SCRAGGY] = 2, - [SPECIES_SCRAFTY] = 0, - [SPECIES_SIGILYPH] = 0, - [SPECIES_YAMASK] = 0, - [SPECIES_COFAGRIGUS] = 0, - [SPECIES_TIRTOUGA] = 2, - [SPECIES_CARRACOSTA] = 2, - [SPECIES_ARCHEN] = 0, - [SPECIES_ARCHEOPS] = 0, - [SPECIES_TRUBBISH] = 1, - [SPECIES_GARBODOR] = 1, - [SPECIES_ZORUA] = 0, - [SPECIES_ZOROARK] = 0, - [SPECIES_MINCCINO] = 0, - [SPECIES_CINCCINO] = 0, - [SPECIES_GOTHITA] = 2, - [SPECIES_GOTHORITA] = 2, - [SPECIES_GOTHITELLE] = 2, - [SPECIES_SOLOSIS] = 1, - [SPECIES_DUOSION] = 1, - [SPECIES_REUNICLUS] = 1, - [SPECIES_DUCKLETT] = 0, - [SPECIES_SWANNA] = 2, - [SPECIES_VANILLITE] = 0, - [SPECIES_VANILLISH] = 2, - [SPECIES_VANILLUXE] = 2, - [SPECIES_DEERLING] = 1, - [SPECIES_SAWSBUCK] = 1, - [SPECIES_EMOLGA] = 2, - [SPECIES_KARRABLAST] = 0, - [SPECIES_ESCAVALIER] = 0, - [SPECIES_FOONGUS] = 0, - [SPECIES_AMOONGUSS] = 1, - [SPECIES_FRILLISH] = 0, - [SPECIES_JELLICENT] = 0, - [SPECIES_ALOMOMOLA] = 0, - [SPECIES_JOLTIK] = 0, - [SPECIES_GALVANTULA] = 2, - [SPECIES_FERROSEED] = 1, - [SPECIES_FERROTHORN] = 1, - [SPECIES_KLINK] = 0, - [SPECIES_KLANG] = 0, - [SPECIES_KLINKLANG] = 0, - [SPECIES_TYNAMO] = 0, - [SPECIES_EELEKTRIK] = 0, - [SPECIES_EELEKTROSS] = 0, - [SPECIES_ELGYEM] = 0, - [SPECIES_BEHEEYEM] = 2, - [SPECIES_LITWICK] = 2, - [SPECIES_LAMPENT] = 2, - [SPECIES_CHANDELURE] = 2, - [SPECIES_AXEW] = 1, - [SPECIES_FRAXURE] = 1, - [SPECIES_HAXORUS] = 2, - [SPECIES_CUBCHOO] = 0, - [SPECIES_BEARTIC] = 0, - [SPECIES_CRYOGONAL] = 0, - [SPECIES_SHELMET] = 1, - [SPECIES_ACCELGOR] = 1, - [SPECIES_STUNFISK] = 2, - [SPECIES_MIENFOO] = 1, - [SPECIES_MIENSHAO] = 2, - [SPECIES_DRUDDIGON] = 0, - [SPECIES_GOLETT] = 0, - [SPECIES_GOLURK] = 0, - [SPECIES_PAWNIARD] = 0, - [SPECIES_BISHARP] = 0, - [SPECIES_BOUFFALANT] = 2, - [SPECIES_RUFFLET] = 2, - [SPECIES_BRAVIARY] = 0, - [SPECIES_VULLABY] = 0, - [SPECIES_MANDIBUZZ] = 1, - [SPECIES_HEATMOR] = 2, - [SPECIES_DURANT] = 0, - [SPECIES_DEINO] = 2, - [SPECIES_ZWEILOUS] = 2, - [SPECIES_HYDREIGON] = 2, - [SPECIES_LARVESTA] = 0, - [SPECIES_VOLCARONA] = 0, - [SPECIES_COBALION] = 0, - [SPECIES_TERRAKION] = 2, - [SPECIES_VIRIZION] = 1, - [SPECIES_TORNADUS] = 1, - [SPECIES_THUNDURUS] = 0, - [SPECIES_RESHIRAM] = 0, - [SPECIES_ZEKROM] = 2, - [SPECIES_LANDORUS] = 0, - [SPECIES_KYUREM] = 0, - [SPECIES_KELDEO] = 0, - [SPECIES_MELOETTA] = 4, - [SPECIES_GENESECT] = 2, - [SPECIES_CHESPIN] = 1, - [SPECIES_QUILLADIN] = 1, - [SPECIES_CHESNAUGHT] = 1, - [SPECIES_FENNEKIN] = 0, - [SPECIES_BRAIXEN] = 0, - [SPECIES_DELPHOX] = 0, - [SPECIES_FROAKIE] = 0, - [SPECIES_FROGADIER] = 0, - [SPECIES_GRENINJA] = 0, - [SPECIES_BUNNELBY] = 2, - [SPECIES_DIGGERSBY] = 2, - [SPECIES_FLETCHLING] = 2, - [SPECIES_FLETCHINDER] = 2, - [SPECIES_TALONFLAME] = 2, - [SPECIES_SCATTERBUG] = 1, - [SPECIES_SPEWPA] = 1, - [SPECIES_VIVILLON] = 0, - [SPECIES_LITLEO] = 2, - [SPECIES_PYROAR] = 2, - [SPECIES_FLABEBE] = 1, - [SPECIES_FLOETTE] = 1, - [SPECIES_FLORGES] = 0, - [SPECIES_SKIDDO] = 1, - [SPECIES_GOGOAT] = 1, - [SPECIES_PANCHAM] = 1, - [SPECIES_PANGORO] = 1, - [SPECIES_FURFROU] = 0, - [SPECIES_ESPURR] = 2, - [SPECIES_MEOWSTIC] = 0, - [SPECIES_HONEDGE] = 2, - [SPECIES_DOUBLADE] = 2, - [SPECIES_AEGISLASH] = 2, - [SPECIES_SPRITZEE] = 0, - [SPECIES_AROMATISSE] = 0, - [SPECIES_SWIRLIX] = 1, - [SPECIES_SLURPUFF] = 1, - [SPECIES_INKAY] = 0, - [SPECIES_MALAMAR] = 2, - [SPECIES_BINACLE] = 2, - [SPECIES_BARBARACLE] = 2, - [SPECIES_SKRELP] = 2, - [SPECIES_DRAGALGE] = 5, - [SPECIES_CLAUNCHER] = 0, - [SPECIES_CLAWITZER] = 0, - [SPECIES_HELIOPTILE] = 2, - [SPECIES_HELIOLISK] = 2, - [SPECIES_TYRUNT] = 2, - [SPECIES_TYRANTRUM] = 0, - [SPECIES_AMAURA] = 0, - [SPECIES_AURORUS] = 0, - [SPECIES_SYLVEON] = 0, - [SPECIES_HAWLUCHA] = 0, - [SPECIES_DEDENNE] = 0, - [SPECIES_CARBINK] = 2, - [SPECIES_GOOMY] = 5, - [SPECIES_SLIGGOO] = 5, - [SPECIES_GOODRA] = 5, - [SPECIES_KLEFKI] = 0, - [SPECIES_PHANTUMP] = 1, - [SPECIES_TREVENANT] = 1, - [SPECIES_PUMPKABOO] = 2, - [SPECIES_GOURGEIST] = 2, - [SPECIES_BERGMITE] = 0, - [SPECIES_AVALUGG] = 0, - [SPECIES_NOIBAT] = 2, - [SPECIES_NOIVERN] = 2, - [SPECIES_XERNEAS] = 0, - [SPECIES_YVELTAL] = 0, - [SPECIES_ZYGARDE] = 1, - [SPECIES_DIANCIE] = 1, - [SPECIES_HOOPA] = 0, - [SPECIES_VOLCANION] = 0, - [SPECIES_ROWLET] = 0, - [SPECIES_DARTRIX] = 1, - [SPECIES_DECIDUEYE] = 1, - [SPECIES_LITTEN] = 0, - [SPECIES_TORRACAT] = 0, - [SPECIES_INCINEROAR] = 0, - [SPECIES_POPPLIO] = 0, - [SPECIES_BRIONNE] = 0, - [SPECIES_PRIMARINA] = 0, - [SPECIES_PIKIPEK] = 2, - [SPECIES_TRUMBEAK] = 0, - [SPECIES_TOUCANNON] = 0, - [SPECIES_YUNGOOS] = 2, - [SPECIES_GUMSHOOS] = 2, - [SPECIES_GRUBBIN] = 0, - [SPECIES_CHARJABUG] = 1, - [SPECIES_VIKAVOLT] = 0, - [SPECIES_CRABRAWLER] = 2, - [SPECIES_CRABOMINABLE] = 2, - [SPECIES_ORICORIO] = 0, - [SPECIES_CUTIEFLY] = 2, - [SPECIES_RIBOMBEE] = 2, - [SPECIES_ROCKRUFF] = 2, - [SPECIES_LYCANROC] = 2, - [SPECIES_WISHIWASHI] = 2, - [SPECIES_MAREANIE] = 2, - [SPECIES_TOXAPEX] = 0, - [SPECIES_MUDBRAY] = 2, - [SPECIES_MUDSDALE] = 0, - [SPECIES_DEWPIDER] = 0, - [SPECIES_ARAQUANID] = 2, - [SPECIES_FOMANTIS] = 1, - [SPECIES_LURANTIS] = 1, - [SPECIES_MORELULL] = 0, - [SPECIES_SHIINOTIC] = 1, - [SPECIES_SALANDIT] = 2, - [SPECIES_SALAZZLE] = 0, - [SPECIES_STUFFUL] = 0, - [SPECIES_BEWEAR] = 0, - [SPECIES_BOUNSWEET] = 1, - [SPECIES_STEENEE] = 1, - [SPECIES_TSAREENA] = 1, - [SPECIES_COMFEY] = 1, - [SPECIES_ORANGURU] = 0, - [SPECIES_PASSIMIAN] = 1, - [SPECIES_WIMPOD] = 2, - [SPECIES_GOLISOPOD] = 2, - [SPECIES_SANDYGAST] = 1, - [SPECIES_PALOSSAND] = 2, - [SPECIES_PYUKUMUKU] = 0, - [SPECIES_TYPE_NULL] = 0, - [SPECIES_SILVALLY] = 0, - [SPECIES_MINIOR] = 2, - [SPECIES_KOMALA] = 2, - [SPECIES_TURTONATOR] = 0, - [SPECIES_TOGEDEMARU] = 2, - [SPECIES_MIMIKYU] = 1, - [SPECIES_BRUXISH] = 0, - [SPECIES_DRAMPA] = 0, - [SPECIES_DHELMISE] = 1, - [SPECIES_JANGMO_O] = 2, - [SPECIES_HAKAMO_O] = 2, - [SPECIES_KOMMO_O] = 2, - [SPECIES_TAPU_KOKO] = 0, - [SPECIES_TAPU_LELE] = 0, - [SPECIES_TAPU_BULU] = 2, - [SPECIES_TAPU_FINI] = 0, - [SPECIES_COSMOG] = 2, - [SPECIES_COSMOEM] = 0, - [SPECIES_SOLGALEO] = 0, - [SPECIES_LUNALA] = 2, - [SPECIES_NIHILEGO] = 0, - [SPECIES_BUZZWOLE] = 0, - [SPECIES_PHEROMOSA] = 2, - [SPECIES_XURKITREE] = 0, - [SPECIES_CELESTEELA] = 0, - [SPECIES_KARTANA] = 0, - [SPECIES_GUZZLORD] = 0, - [SPECIES_NECROZMA] = 0, - [SPECIES_MAGEARNA] = 0, - [SPECIES_MARSHADOW] = 0, - [SPECIES_POIPOLE] = 0, - [SPECIES_NAGANADEL] = 0, - [SPECIES_STAKATAKA] = 0, - [SPECIES_BLACEPHALON] = 0, - [SPECIES_ZERAORA] = 0, - [SPECIES_MELTAN] = 2, - [SPECIES_MELMETAL] = 2, - [SPECIES_GROOKEY] = 1, - [SPECIES_THWACKEY] = 1, - [SPECIES_RILLABOOM] = 1, - [SPECIES_SCORBUNNY] = 0, - [SPECIES_RABOOT] = 0, - [SPECIES_CINDERACE] = 0, - [SPECIES_SOBBLE] = 2, - [SPECIES_DRIZZILE] = 2, - [SPECIES_INTELEON] = 0, - [SPECIES_SKWOVET] = 2, - [SPECIES_GREEDENT] = 0, - [SPECIES_ROOKIDEE] = 0, - [SPECIES_CORVISQUIRE] = 0, - [SPECIES_CORVIKNIGHT] = 0, - [SPECIES_BLIPBUG] = 0, - [SPECIES_DOTTLER] = 2, - [SPECIES_ORBEETLE] = 0, - [SPECIES_NICKIT] = 2, - [SPECIES_THIEVUL] = 2, - [SPECIES_GOSSIFLEUR] = 1, - [SPECIES_ELDEGOSS] = 1, - [SPECIES_WOOLOO] = 0, - [SPECIES_DUBWOOL] = 2, - [SPECIES_CHEWTLE] = 0, - [SPECIES_DREDNAW] = 0, - [SPECIES_YAMPER] = 1, - [SPECIES_BOLTUND] = 1, - [SPECIES_ROLYCOLY] = 0, - [SPECIES_CARKOL] = 0, - [SPECIES_COALOSSAL] = 0, - [SPECIES_APPLIN] = 1, - [SPECIES_FLAPPLE] = 1, - [SPECIES_APPLETUN] = 1, - [SPECIES_SILICOBRA] = 1, - [SPECIES_SANDACONDA] = 1, - [SPECIES_CRAMORANT] = 0, - [SPECIES_ARROKUDA] = 2, - [SPECIES_BARRASKEWDA] = 2, - [SPECIES_TOXEL] = 2, - [SPECIES_TOXTRICITY] = 2, - [SPECIES_SIZZLIPEDE] = 0, - [SPECIES_CENTISKORCH] = 0, - [SPECIES_CLOBBOPUS] = 0, - [SPECIES_GRAPPLOCT] = 2, - [SPECIES_SINISTEA] = 2, - [SPECIES_POLTEAGEIST] = 2, - [SPECIES_HATENNA] = 0, - [SPECIES_HATTREM] = 0, - [SPECIES_HATTERENE] = 0, - [SPECIES_IMPIDIMP] = 0, - [SPECIES_MORGREM] = 0, - [SPECIES_GRIMMSNARL] = 0, - [SPECIES_OBSTAGOON] = 0, - [SPECIES_PERRSERKER] = 2, - [SPECIES_CURSOLA] = 0, - [SPECIES_SIRFETCHD] = 1, - [SPECIES_MR_RIME] = 0, - [SPECIES_RUNERIGUS] = 2, - [SPECIES_MILCERY] = 1, - [SPECIES_ALCREMIE] = 1, - [SPECIES_FALINKS] = 0, - [SPECIES_PINCURCHIN] = 0, - [SPECIES_SNOM] = 0, - [SPECIES_FROSMOTH] = 0, - [SPECIES_STONJOURNER] = 2, - [SPECIES_EISCUE] = 0, - [SPECIES_INDEEDEE] = 2, - [SPECIES_MORPEKO] = 2, - [SPECIES_CUFANT] = 0, - [SPECIES_COPPERAJAH] = 0, - [SPECIES_DRACOZOLT] = 1, - [SPECIES_ARCTOZOLT] = 2, - [SPECIES_DRACOVISH] = 0, - [SPECIES_ARCTOVISH] = 0, - [SPECIES_DURALUDON] = 0, - [SPECIES_DREEPY] = 0, - [SPECIES_DRAKLOAK] = 0, - [SPECIES_DRAGAPULT] = 0, - [SPECIES_ZACIAN] = 2, - [SPECIES_ZAMAZENTA] = 2, - [SPECIES_ETERNATUS] = 0, - [SPECIES_KUBFU] = 1, - [SPECIES_URSHIFU] = 2, - [SPECIES_ZARUDE] = 1, - [SPECIES_REGIELEKI] = 0, - [SPECIES_REGIDRAGO] = 0, - [SPECIES_GLASTRIER] = 0, - [SPECIES_SPECTRIER] = 0, - [SPECIES_CALYREX] = 0, - [SPECIES_WYRDEER] = 2, - [SPECIES_KLEAVOR] = 2, - [SPECIES_URSALUNA] = 2, - [SPECIES_BASCULEGION] = 1, - [SPECIES_SNEASLER] = 2, - [SPECIES_OVERQWIL] = 2, - [SPECIES_ENAMORUS] = 1, - [SPECIES_VENUSAUR_MEGA] = 4, - [SPECIES_CHARIZARD_MEGA_X] = 0, - [SPECIES_CHARIZARD_MEGA_Y] = 0, - [SPECIES_BLASTOISE_MEGA] = 2, - [SPECIES_BEEDRILL_MEGA] = 2, - [SPECIES_PIDGEOT_MEGA] = 0, - [SPECIES_ALAKAZAM_MEGA] = 2, - [SPECIES_SLOWBRO_MEGA] = 0, - [SPECIES_GENGAR_MEGA] = 2, - [SPECIES_KANGASKHAN_MEGA] = 2, - [SPECIES_PINSIR_MEGA] = 2, - [SPECIES_GYARADOS_MEGA] = 0, - [SPECIES_AERODACTYL_MEGA] = 2, - [SPECIES_MEWTWO_MEGA_X] = 2, - [SPECIES_MEWTWO_MEGA_Y] = 2, - [SPECIES_AMPHAROS_MEGA] = 0, - [SPECIES_STEELIX_MEGA] = 0, - [SPECIES_SCIZOR_MEGA] = 0, - [SPECIES_HERACROSS_MEGA] = 0, - [SPECIES_HOUNDOOM_MEGA] = 0, - [SPECIES_TYRANITAR_MEGA] = 1, - [SPECIES_SCEPTILE_MEGA] = 1, - [SPECIES_BLAZIKEN_MEGA] = 0, - [SPECIES_SWAMPERT_MEGA] = 0, - [SPECIES_GARDEVOIR_MEGA] = 1, - [SPECIES_SABLEYE_MEGA] = 2, - [SPECIES_MAWILE_MEGA] = 0, - [SPECIES_AGGRON_MEGA] = 2, - [SPECIES_MEDICHAM_MEGA] = 0, - [SPECIES_MANECTRIC_MEGA] = 0, - [SPECIES_SHARPEDO_MEGA] = 0, - [SPECIES_CAMERUPT_MEGA] = 0, - [SPECIES_ALTARIA_MEGA] = 0, - [SPECIES_BANETTE_MEGA] = 0, - [SPECIES_ABSOL_MEGA] = 0, - [SPECIES_GLALIE_MEGA] = 0, - [SPECIES_SALAMENCE_MEGA] = 0, - [SPECIES_METAGROSS_MEGA] = 0, - [SPECIES_LATIAS_MEGA] = 2, - [SPECIES_LATIOS_MEGA] = 2, - [SPECIES_KYOGRE_PRIMAL] = 0, - [SPECIES_GROUDON_PRIMAL] = 0, - [SPECIES_RAYQUAZA_MEGA] = 1, - [SPECIES_LOPUNNY_MEGA] = 2, - [SPECIES_GARCHOMP_MEGA] = 0, - [SPECIES_LUCARIO_MEGA] = 2, - [SPECIES_ABOMASNOW_MEGA] = 1, - [SPECIES_GALLADE_MEGA] = 1, - [SPECIES_AUDINO_MEGA] = 1, - [SPECIES_DIANCIE_MEGA] = 0, - [SPECIES_RATTATA_ALOLAN] = 2, - [SPECIES_RATICATE_ALOLAN] = 2, - [SPECIES_RAICHU_ALOLAN] = 2, - [SPECIES_SANDSHREW_ALOLAN] = 0, - [SPECIES_SANDSLASH_ALOLAN] = 0, - [SPECIES_VULPIX_ALOLAN] = 2, - [SPECIES_NINETALES_ALOLAN] = 2, - [SPECIES_DIGLETT_ALOLAN] = 2, - [SPECIES_DUGTRIO_ALOLAN] = 2, - [SPECIES_MEOWTH_ALOLAN] = 2, - [SPECIES_PERSIAN_ALOLAN] = 2, - [SPECIES_GEODUDE_ALOLAN] = 2, - [SPECIES_GRAVELER_ALOLAN] = 2, - [SPECIES_GOLEM_ALOLAN] = 2, - [SPECIES_GRIMER_ALOLAN] = 1, - [SPECIES_MUK_ALOLAN] = 0, - [SPECIES_EXEGGUTOR_ALOLAN] = 1, - [SPECIES_MAROWAK_ALOLAN] = 1, - [SPECIES_MEOWTH_GALARIAN] = 0, - [SPECIES_PONYTA_GALARIAN] = 2, - [SPECIES_RAPIDASH_GALARIAN] = 2, - [SPECIES_SLOWPOKE_GALARIAN] = 1, - [SPECIES_SLOWBRO_GALARIAN] = 0, - [SPECIES_FARFETCHD_GALARIAN] = 1, - [SPECIES_WEEZING_GALARIAN] = 1, - [SPECIES_MR_MIME_GALARIAN] = 0, - [SPECIES_ARTICUNO_GALARIAN] = 2, - [SPECIES_ZAPDOS_GALARIAN] = 0, - [SPECIES_MOLTRES_GALARIAN] = 0, - [SPECIES_SLOWKING_GALARIAN] = 2, - [SPECIES_CORSOLA_GALARIAN] = 0, - [SPECIES_ZIGZAGOON_GALARIAN] = 0, - [SPECIES_LINOONE_GALARIAN] = 0, - [SPECIES_DARUMAKA_GALARIAN] = 0, - [SPECIES_DARMANITAN_GALARIAN] = 0, - [SPECIES_YAMASK_GALARIAN] = 2, - [SPECIES_STUNFISK_GALARIAN] = 1, - [SPECIES_GROWLITHE_HISUIAN] = 0, - [SPECIES_ARCANINE_HISUIAN] = 0, - [SPECIES_VOLTORB_HISUIAN] = 0, - [SPECIES_ELECTRODE_HISUIAN] = 1, - [SPECIES_TYPHLOSION_HISUIAN] = 1, - [SPECIES_QWILFISH_HISUIAN] = 0, - [SPECIES_SNEASEL_HISUIAN] = 2, - [SPECIES_SAMUROTT_HISUIAN] = 0, - [SPECIES_LILLIGANT_HISUIAN] = 1, - [SPECIES_ZORUA_HISUIAN] = 0, - [SPECIES_ZOROARK_HISUIAN] = 0, - [SPECIES_BRAVIARY_HISUIAN] = 2, - [SPECIES_SLIGGOO_HISUIAN] = 2, - [SPECIES_GOODRA_HISUIAN] = 2, - [SPECIES_AVALUGG_HISUIAN] = 5, - [SPECIES_DECIDUEYE_HISUIAN] = 0, - [SPECIES_PIKACHU_COSPLAY] = 2, - [SPECIES_PIKACHU_ROCK_STAR] = 1, - [SPECIES_PIKACHU_BELLE] = 0, - [SPECIES_PIKACHU_POP_STAR] = 0, - [SPECIES_PIKACHU_PH_D] = 1, - [SPECIES_PIKACHU_LIBRE] = 0, - [SPECIES_PIKACHU_ORIGINAL_CAP] = 0, - [SPECIES_PIKACHU_HOENN_CAP] = 0, - [SPECIES_PIKACHU_SINNOH_CAP] = 0, - [SPECIES_PIKACHU_UNOVA_CAP] = 0, - [SPECIES_PIKACHU_KALOS_CAP] = 0, - [SPECIES_PIKACHU_ALOLA_CAP] = 0, - [SPECIES_PIKACHU_PARTNER_CAP] = 0, - [SPECIES_PIKACHU_WORLD_CAP] = 0, - [SPECIES_PICHU_SPIKY_EARED] = 1, - [SPECIES_UNOWN_B ... SPECIES_UNOWN_QMARK] = 0, - [SPECIES_CASTFORM_SUNNY] = 0, - [SPECIES_CASTFORM_RAINY] = 0, - [SPECIES_CASTFORM_SNOWY] = 0, - [SPECIES_DEOXYS_ATTACK] = 0, - [SPECIES_DEOXYS_DEFENSE] = 0, - [SPECIES_DEOXYS_SPEED] = 0, -#if P_GEN_4_POKEMON == TRUE - [SPECIES_BURMY_SANDY_CLOAK] = 1, - [SPECIES_BURMY_TRASH_CLOAK] = 0, - [SPECIES_WORMADAM_SANDY_CLOAK] = 1, - [SPECIES_WORMADAM_TRASH_CLOAK] = 0, - [SPECIES_CHERRIM_SUNSHINE] = 1, - [SPECIES_SHELLOS_EAST_SEA] = 0, - [SPECIES_GASTRODON_EAST_SEA] = 0, - [SPECIES_ROTOM_HEAT] = 0, - [SPECIES_ROTOM_WASH] = 0, - [SPECIES_ROTOM_FROST] = 5, - [SPECIES_ROTOM_FAN] = 0, - [SPECIES_ROTOM_MOW] = 0, - [SPECIES_DIALGA_ORIGIN] = 0, - [SPECIES_PALKIA_ORIGIN] = 2, - [SPECIES_GIRATINA_ORIGIN] = 0, - [SPECIES_SHAYMIN_SKY] = 1, - [SPECIES_ARCEUS_FIGHTING] = 1, - [SPECIES_ARCEUS_FLYING] = 1, - [SPECIES_ARCEUS_POISON] = 1, - [SPECIES_ARCEUS_GROUND] = 1, - [SPECIES_ARCEUS_ROCK] = 1, - [SPECIES_ARCEUS_BUG] = 1, - [SPECIES_ARCEUS_GHOST] = 1, - [SPECIES_ARCEUS_STEEL] = 1, - [SPECIES_ARCEUS_FIRE] = 1, - [SPECIES_ARCEUS_WATER] = 1, - [SPECIES_ARCEUS_GRASS] = 1, - [SPECIES_ARCEUS_ELECTRIC] = 1, - [SPECIES_ARCEUS_PSYCHIC] = 1, - [SPECIES_ARCEUS_ICE] = 1, - [SPECIES_ARCEUS_DRAGON] = 1, - [SPECIES_ARCEUS_DARK] = 1, - [SPECIES_ARCEUS_FAIRY] = 1, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_BASCULIN_BLUE_STRIPED] = 0, - [SPECIES_BASCULIN_WHITE_STRIPED] = 0, - [SPECIES_DARMANITAN_ZEN_MODE] = 0, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = 0, - [SPECIES_DEERLING_SUMMER] = 1, - [SPECIES_DEERLING_AUTUMN] = 0, - [SPECIES_DEERLING_WINTER] = 2, - [SPECIES_SAWSBUCK_SUMMER] = 1, - [SPECIES_SAWSBUCK_AUTUMN] = 1, - [SPECIES_SAWSBUCK_WINTER] = 1, - [SPECIES_TORNADUS_THERIAN] = 1, - [SPECIES_THUNDURUS_THERIAN] = 0, - [SPECIES_LANDORUS_THERIAN] = 0, - [SPECIES_KYUREM_WHITE] = 0, - [SPECIES_KYUREM_BLACK] = 0, - [SPECIES_KELDEO_RESOLUTE] = 0, - [SPECIES_MELOETTA_PIROUETTE] = 0, - [SPECIES_GENESECT_DOUSE_DRIVE] = 2, - [SPECIES_GENESECT_SHOCK_DRIVE] = 2, - [SPECIES_GENESECT_BURN_DRIVE] = 2, - [SPECIES_GENESECT_CHILL_DRIVE] = 2, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_GRENINJA_BATTLE_BOND] = 0, - [SPECIES_GRENINJA_ASH] = 0, - [SPECIES_VIVILLON_POLAR] = 0, - [SPECIES_VIVILLON_TUNDRA] = 0, - [SPECIES_VIVILLON_CONTINENTAL] = 2, - [SPECIES_VIVILLON_GARDEN] = 1, - [SPECIES_VIVILLON_ELEGANT] = 0, - [SPECIES_VIVILLON_MEADOW] = 0, - [SPECIES_VIVILLON_MODERN] = 2, - [SPECIES_VIVILLON_MARINE] = 0, - [SPECIES_VIVILLON_ARCHIPELAGO] = 0, - [SPECIES_VIVILLON_HIGH_PLAINS] = 0, - [SPECIES_VIVILLON_SANDSTORM] = 1, - [SPECIES_VIVILLON_RIVER] = 2, - [SPECIES_VIVILLON_MONSOON] = 0, - [SPECIES_VIVILLON_SAVANNA] = 0, - [SPECIES_VIVILLON_SUN] = 0, - [SPECIES_VIVILLON_OCEAN] = 0, - [SPECIES_VIVILLON_JUNGLE] = 0, - [SPECIES_VIVILLON_FANCY] = 1, - [SPECIES_VIVILLON_POKE_BALL] = 2, - [SPECIES_FLABEBE_YELLOW_FLOWER] = 1, - [SPECIES_FLABEBE_ORANGE_FLOWER] = 0, - [SPECIES_FLABEBE_BLUE_FLOWER] = 0, - [SPECIES_FLABEBE_WHITE_FLOWER] = 1, - [SPECIES_FLOETTE_YELLOW_FLOWER] = 1, - [SPECIES_FLOETTE_ORANGE_FLOWER] = 0, - [SPECIES_FLOETTE_BLUE_FLOWER] = 0, - [SPECIES_FLOETTE_WHITE_FLOWER] = 1, - [SPECIES_FLOETTE_ETERNAL_FLOWER] = 0, - [SPECIES_FLORGES_YELLOW_FLOWER] = 1, - [SPECIES_FLORGES_ORANGE_FLOWER] = 0, - [SPECIES_FLORGES_BLUE_FLOWER] = 0, - [SPECIES_FLORGES_WHITE_FLOWER] = 0, - [SPECIES_FURFROU_HEART_TRIM] = 0, - [SPECIES_FURFROU_STAR_TRIM] = 0, - [SPECIES_FURFROU_DIAMOND_TRIM] = 0, - [SPECIES_FURFROU_DEBUTANTE_TRIM] = 2, - [SPECIES_FURFROU_MATRON_TRIM] = 2, - [SPECIES_FURFROU_DANDY_TRIM] = 1, - [SPECIES_FURFROU_LA_REINE_TRIM] = 0, - [SPECIES_FURFROU_KABUKI_TRIM] = 0, - [SPECIES_FURFROU_PHARAOH_TRIM] = 0, - [SPECIES_MEOWSTIC_FEMALE] = 0, - [SPECIES_AEGISLASH_BLADE] = 2, - [SPECIES_PUMPKABOO_SMALL] = 2, - [SPECIES_PUMPKABOO_LARGE] = 2, - [SPECIES_PUMPKABOO_SUPER] = 2, - [SPECIES_GOURGEIST_SMALL] = 2, - [SPECIES_GOURGEIST_LARGE] = 2, - [SPECIES_GOURGEIST_SUPER] = 2, - [SPECIES_XERNEAS_ACTIVE] = 0, - [SPECIES_ZYGARDE_10] = 1, - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = 1, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = 1, - [SPECIES_ZYGARDE_COMPLETE] = 1, - [SPECIES_HOOPA_UNBOUND] = 0, -#endif -#if P_GEN_7_POKEMON == TRUE - [SPECIES_ORICORIO_POM_POM] = 1, - [SPECIES_ORICORIO_PAU] = 1, - [SPECIES_ORICORIO_SENSU] = 0, - [SPECIES_ROCKRUFF_OWN_TEMPO] = 2, - [SPECIES_LYCANROC_MIDNIGHT] = 0, - [SPECIES_LYCANROC_DUSK] = 0, - [SPECIES_WISHIWASHI_SCHOOL] = 0, - [SPECIES_SILVALLY_FIGHTING] = 0, - [SPECIES_SILVALLY_FLYING] = 0, - [SPECIES_SILVALLY_POISON] = 0, - [SPECIES_SILVALLY_GROUND] = 0, - [SPECIES_SILVALLY_ROCK] = 0, - [SPECIES_SILVALLY_BUG] = 0, - [SPECIES_SILVALLY_GHOST] = 0, - [SPECIES_SILVALLY_STEEL] = 0, - [SPECIES_SILVALLY_FIRE] = 0, - [SPECIES_SILVALLY_WATER] = 0, - [SPECIES_SILVALLY_GRASS] = 0, - [SPECIES_SILVALLY_ELECTRIC] = 0, - [SPECIES_SILVALLY_PSYCHIC] = 0, - [SPECIES_SILVALLY_ICE] = 0, - [SPECIES_SILVALLY_DRAGON] = 0, - [SPECIES_SILVALLY_DARK] = 0, - [SPECIES_SILVALLY_FAIRY] = 0, - [SPECIES_MINIOR_CORE_RED] = 0, - [SPECIES_MINIOR_CORE_ORANGE] = 0, - [SPECIES_MINIOR_CORE_YELLOW] = 0, - [SPECIES_MINIOR_CORE_GREEN] = 1, - [SPECIES_MINIOR_CORE_BLUE] = 0, - [SPECIES_MINIOR_CORE_INDIGO] = 0, - [SPECIES_MINIOR_CORE_VIOLET] = 2, - [SPECIES_MIMIKYU_BUSTED] = 1, - [SPECIES_NECROZMA_DUSK_MANE] = 0, - [SPECIES_NECROZMA_DAWN_WINGS] = 0, - [SPECIES_NECROZMA_ULTRA] = 2, - [SPECIES_MAGEARNA_ORIGINAL_COLOR] = 0, -#endif -#if P_GEN_8_POKEMON == TRUE - [SPECIES_CRAMORANT_GULPING] = 0, - [SPECIES_CRAMORANT_GORGING] = 0, - [SPECIES_TOXTRICITY_LOW_KEY] = 2, - [SPECIES_SINISTEA_ANTIQUE] = 2, - [SPECIES_POLTEAGEIST_ANTIQUE] = 2, - [SPECIES_ALCREMIE_RUBY_CREAM] = 0, - [SPECIES_ALCREMIE_MATCHA_CREAM] = 0, - [SPECIES_ALCREMIE_MINT_CREAM] = 0, - [SPECIES_ALCREMIE_LEMON_CREAM] = 0, - [SPECIES_ALCREMIE_SALTED_CREAM] = 0, - [SPECIES_ALCREMIE_RUBY_SWIRL] = 0, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = 0, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = 0, - [SPECIES_EISCUE_NOICE_FACE] = 0, - [SPECIES_INDEEDEE_FEMALE] = 2, - [SPECIES_MORPEKO_HANGRY] = 2, - [SPECIES_ZACIAN_CROWNED_SWORD] = 2, - [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = 2, - [SPECIES_ETERNATUS_ETERNAMAX] = 0, - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = 2, - [SPECIES_ZARUDE_DADA] = 1, - [SPECIES_CALYREX_ICE_RIDER] = 0, - [SPECIES_CALYREX_SHADOW_RIDER] = 0, - [SPECIES_ENAMORUS_THERIAN] = 1, - [SPECIES_BASCULEGION_FEMALE] = 0, -#endif - [SPECIES_EGG] = 1, -}; - -const u8 gMonIconPaletteIndicesFemale[] = -{ -#if P_GEN_4_POKEMON == TRUE - [SPECIES_HIPPOPOTAS] = 1, - [SPECIES_HIPPOWDON] = 1, -#endif -#if P_GEN_5_POKEMON == TRUE - [SPECIES_UNFEZANT] = 1, - [SPECIES_FRILLISH] = 1, - [SPECIES_JELLICENT] = 1, -#endif -#if P_GEN_6_POKEMON == TRUE - [SPECIES_PYROAR] = 2, -#endif -}; +*/ const struct SpritePalette gMonIconPaletteTable[] = { @@ -2671,13 +1613,14 @@ u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u .anims = sMonIconAnims, .affineAnims = sMonIconAffineAnims, .callback = callback, - .paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species], + .paletteTag = POKE_ICON_BASE_PAL_TAG + gSpeciesInfo[species].iconPalIndex, }; + species = SanitizeSpeciesId(species); if (species > NUM_SPECIES) iconTemplate.paletteTag = POKE_ICON_BASE_PAL_TAG; - else if (gMonIconTableFemale[species] && IsPersonalityFemale(species, personality)) - iconTemplate.paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndicesFemale[species]; + else if (gSpeciesInfo[species].iconSpriteFemale != NULL && IsPersonalityFemale(species, personality)) + iconTemplate.paletteTag = POKE_ICON_BASE_PAL_TAG + gSpeciesInfo[species].iconPalIndexFemale; spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority); @@ -2697,7 +1640,7 @@ u8 CreateMonIconNoPersonality(u16 species, void (*callback)(struct Sprite *), s1 .anims = sMonIconAnims, .affineAnims = sMonIconAffineAnims, .callback = callback, - .paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species], + .paletteTag = POKE_ICON_BASE_PAL_TAG + gSpeciesInfo[species].iconPalIndex, }; iconTemplate.image = GetMonIconTiles(species, 0); @@ -2710,21 +1653,10 @@ u8 CreateMonIconNoPersonality(u16 species, void (*callback)(struct Sprite *), s1 u16 GetIconSpecies(u16 species, u32 personality) { - u16 result; - + species = SanitizeSpeciesId(species); if (species == SPECIES_UNOWN) - { - result = GetUnownSpeciesId(personality); - } - else - { - if (species > NUM_SPECIES) - result = INVALID_ICON_SPECIES; - else - result = species; - } - - return result; + species = GetUnownSpeciesId(personality); + return species; } u16 GetUnownLetterByPersonality(u32 personality) @@ -2737,20 +1669,11 @@ u16 GetUnownLetterByPersonality(u32 personality) u16 GetIconSpeciesNoPersonality(u16 species) { - u16 value; + species = SanitizeSpeciesId(species); - if (MailSpeciesToSpecies(species, &value) == SPECIES_UNOWN) - { - value += SPECIES_UNOWN_B; // TODO - return value; - } - else - { - if (species > NUM_SPECIES) - species = INVALID_ICON_SPECIES; - - return GetIconSpecies(species, 0); - } + if (MailSpeciesToSpecies(species, &species) == SPECIES_UNOWN) + return species += SPECIES_UNOWN_B; // TODO + return GetIconSpecies(species, 0); } const u8 *GetMonIconPtr(u16 species, u32 personality) @@ -2774,16 +1697,14 @@ void LoadMonIconPalettes(void) void SafeLoadMonIconPalette(u16 species) { u8 palIndex; - if (species > NUM_SPECIES) - species = INVALID_ICON_SPECIES; - palIndex = gMonIconPaletteIndices[species]; + palIndex = gSpeciesInfo[SanitizeSpeciesId(species)].iconPalIndex; if (IndexOfSpritePaletteTag(gMonIconPaletteTable[palIndex].tag) == 0xFF) LoadSpritePalette(&gMonIconPaletteTable[palIndex]); } void LoadMonIconPalette(u16 species) { - u8 palIndex = gMonIconPaletteIndices[species]; + u8 palIndex = gSpeciesInfo[SanitizeSpeciesId(species)].iconPalIndex; if (IndexOfSpritePaletteTag(gMonIconPaletteTable[palIndex].tag) == 0xFF) LoadSpritePalette(&gMonIconPaletteTable[palIndex]); } @@ -2791,10 +1712,11 @@ void LoadMonIconPalette(u16 species) void LoadMonIconPalettePersonality(u16 species, u32 personality) { u8 palIndex; - if (gMonIconTableFemale[species] != NULL && IsPersonalityFemale(species, personality)) - palIndex = gMonIconPaletteIndicesFemale[species]; + species = SanitizeSpeciesId(species); + if (gSpeciesInfo[species].iconSpriteFemale != NULL && IsPersonalityFemale(species, personality)) + palIndex = gSpeciesInfo[species].iconPalIndexFemale; else - palIndex = gMonIconPaletteIndices[species]; + palIndex = gSpeciesInfo[species].iconPalIndex; if (IndexOfSpritePaletteTag(gMonIconPaletteTable[palIndex].tag) == 0xFF) LoadSpritePalette(&gMonIconPaletteTable[palIndex]); } @@ -2810,16 +1732,14 @@ void FreeMonIconPalettes(void) void SafeFreeMonIconPalette(u16 species) { u8 palIndex; - if (species > NUM_SPECIES) - species = INVALID_ICON_SPECIES; - palIndex = gMonIconPaletteIndices[species]; + palIndex = gSpeciesInfo[SanitizeSpeciesId(species)].iconPalIndex; FreeSpritePaletteByTag(gMonIconPaletteTable[palIndex].tag); } void FreeMonIconPalette(u16 species) { u8 palIndex; - palIndex = gMonIconPaletteIndices[species]; + palIndex = gSpeciesInfo[SanitizeSpeciesId(species)].iconPalIndex; FreeSpritePaletteByTag(gMonIconPaletteTable[palIndex].tag); } @@ -2835,12 +1755,12 @@ const u8 *GetMonIconTiles(u16 species, u32 personality) if (species > NUM_SPECIES) species = SPECIES_NONE; - if (gMonIconTableFemale[species] != NULL && IsPersonalityFemale(species, personality)) - iconSprite = gMonIconTableFemale[species]; - else if (gMonIconTable[species] != NULL) - iconSprite = gMonIconTable[species]; + if (gSpeciesInfo[species].iconSpriteFemale != NULL && IsPersonalityFemale(species, personality)) + iconSprite = gSpeciesInfo[species].iconSpriteFemale; + else if (gSpeciesInfo[species].iconSprite != NULL) + iconSprite = gSpeciesInfo[species].iconSprite; else - iconSprite = gMonIconTable[SPECIES_NONE]; + iconSprite = gSpeciesInfo[SPECIES_NONE].iconSprite; return iconSprite; } @@ -2860,21 +1780,17 @@ void TryLoadAllMonIconPalettesAtOffset(u16 offset) u8 GetValidMonIconPalIndex(u16 species) { - if (species > NUM_SPECIES) - species = INVALID_ICON_SPECIES; - return gMonIconPaletteIndices[species]; + return gSpeciesInfo[SanitizeSpeciesId(species)].iconPalIndex; } u8 GetMonIconPaletteIndexFromSpecies(u16 species) { - return gMonIconPaletteIndices[species]; + return gSpeciesInfo[SanitizeSpeciesId(species)].iconPalIndex; } const u16 *GetValidMonIconPalettePtr(u16 species) { - if (species > NUM_SPECIES) - species = INVALID_ICON_SPECIES; - return gMonIconPaletteTable[gMonIconPaletteIndices[species]].data; + return gMonIconPaletteTable[gSpeciesInfo[SanitizeSpeciesId(species)].iconPalIndex].data; } u8 UpdateMonIconFrame(struct Sprite *sprite) diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index aba3e9d31c..6ea897c0a6 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -426,288 +426,343 @@ EWRAM_DATA static struct PokemonJumpGfx *sPokemonJumpGfx = NULL; */ static const struct PokemonJumpMons sPokeJumpMons[] = { - { .species = SPECIES_BULBASAUR, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CHARMANDER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SQUIRTLE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CATERPIE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_METAPOD, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_WEEDLE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KAKUNA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATTATA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATTATA_ALOLAN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATICATE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RATICATE_ALOLAN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PIKACHU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_COSPLAY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_ROCK_STAR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_BELLE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_POP_STAR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_PH_D, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_LIBRE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_ORIGINAL_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_HOENN_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_SINNOH_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_UNOVA_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_KALOS_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_ALOLA_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_PARTNER_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PIKACHU_WORLD_CAP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SANDSHREW, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SANDSHREW_ALOLAN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_NIDORAN_F, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_NIDORAN_M, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CLEFAIRY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_VULPIX, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_VULPIX_ALOLAN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_JIGGLYPUFF, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ODDISH, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PARAS, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MEOWTH, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWTH_ALOLAN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWTH_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PSYDUCK, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MANKEY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GROWLITHE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_POLIWAG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_BELLSPROUT, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SHELLDER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KRABBY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_EXEGGCUTE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CUBONE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_DITTO, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_EEVEE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_OMANYTE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KABUTO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CHIKORITA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CYNDAQUIL, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TOTODILE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SPINARAK, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PICHU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PICHU_SPIKY_EARED, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CLEFFA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_IGGLYBUFF, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TOGEPI, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MAREEP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BELLOSSOM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MARILL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SUNKERN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_WOOPER, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PINECO, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SNUBBULL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SHUCKLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TEDDIURSA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SLUGMA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SWINUB, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_HOUNDOUR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PHANPY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PORYGON2, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_TYROGUE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SMOOCHUM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ELEKID, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MAGBY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_LARVITAR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TREECKO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TORCHIC, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MUDKIP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MARSHTOMP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_POOCHYENA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_ZIGZAGOON, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ZIGZAGOON_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_LINOONE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_LINOONE_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_WURMPLE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SILCOON, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CASCOON, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_LOTAD, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SEEDOT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RALTS, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_KIRLIA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SURSKIT, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SHROOMISH, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_NINCADA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_WHISMUR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_AZURILL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SKITTY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SABLEYE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SABLEYE_MEGA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MAWILE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ARON, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MEDITITE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ELECTRIKE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PLUSLE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MINUN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_VOLBEAT, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ILLUMISE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ROSELIA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_GULPIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_NUMEL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TORKOAL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SPOINK, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_TRAPINCH, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CACNEA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ANORITH, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_WYNAUT, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SNORUNT, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CLAMPERL, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_BAGON, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TURTWIG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CHIMCHAR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PIPLUP, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BIDOOF, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KRICKETOT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SHINX, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BUDEW, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SHIELDON, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PACHIRISU, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_BUIZEL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CHERUBI, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CHERRIM, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CHERRIM_SUNSHINE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SHELLOS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SHELLOS_EAST_SEA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_BUNEARY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GLAMEOW, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_STUNKY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BONSLY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MIME_JR, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_HAPPINY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GIBLE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MUNCHLAX, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_RIOLU, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CROAGUNK, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SHAYMIN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SNIVY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TEPIG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_OSHAWOTT, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PATRAT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_LILLIPUP, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PURRLOIN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PANSAGE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PANSEAR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_PANPOUR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ROGGENROLA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DRILBUR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_EXCADRILL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_TIMBURR, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SEWADDLE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SWADLOON, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_VENIPEDE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PETILIL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SANDILE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_DARUMAKA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DARUMAKA_GALARIAN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DWEBBLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SCRAGGY, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ARCHEN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_TRUBBISH, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ZORUA, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MINCCINO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CINCCINO, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_GOTHITA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_GOTHORITA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DEERLING, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DEERLING_SUMMER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DEERLING_AUTUMN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DEERLING_WINTER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_KARRABLAST, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_FOONGUS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_AMOONGUSS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_JOLTIK, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_LITWICK, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_AXEW, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CUBCHOO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SHELMET, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_STUNFISK, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_STUNFISK_GALARIAN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PAWNIARD, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_DURANT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CHESPIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_QUILLADIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_FENNEKIN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_FROAKIE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_FROGADIER, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_BUNNELBY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SCATTERBUG, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SPEWPA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_LITLEO, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PANCHAM, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_ESPURR, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWSTIC, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MEOWSTIC_FEMALE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BINACLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CLAUNCHER, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_HELIOPTILE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_DEDENNE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GOOMY, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ROWLET, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_DARTRIX, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_LITTEN, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_TORRACAT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_POPPLIO, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_BRIONNE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_YUNGOOS, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GUMSHOOS, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_GRUBBIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CHARJABUG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_CRABRAWLER, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ROCKRUFF, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ROCKRUFF_OWN_TEMPO, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MAREANIE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DEWPIDER, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_FOMANTIS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MORELULL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SALANDIT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_STUFFUL, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_BOUNSWEET, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_STEENEE, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_WIMPOD, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_PYUKUMUKU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_KOMALA, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TOGEDEMARU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MIMIKYU, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MIMIKYU_BUSTED, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_JANGMO_O, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_MARSHADOW, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MELTAN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_GROOKEY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_THWACKEY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_SCORBUNNY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_RABOOT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SOBBLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DRIZZILE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SKWOVET, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SKWOVET, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_BLIPBUG, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_DOTTLER, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_NICKIT, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_GOSSIFLEUR, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ELDEGOSS, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_WOOLOO, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_CHEWTLE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_YAMPER, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_ROLYCOLY, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_APPLIN, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_APPLETUN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_TOXEL, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_SIZZLIPEDE, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_CLOBBOPUS, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_HATENNA, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_HATTREM, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_IMPIDIMP, .jumpType = JUMP_TYPE_FAST, }, - { .species = SPECIES_ALCREMIE, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_ALCREMIE_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_PINCURCHIN, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_SNOM, .jumpType = JUMP_TYPE_SLOW, }, - { .species = SPECIES_MORPEKO, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_MORPEKO_HANGRY, .jumpType = JUMP_TYPE_NORMAL, }, - { .species = SPECIES_KUBFU, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_BULBASAUR, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CHARMANDER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SQUIRTLE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CATERPIE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_METAPOD, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_WEEDLE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_KAKUNA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RATTATA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RATTATA_ALOLAN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RATICATE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RATICATE_ALOLAN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PIKACHU, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_COSPLAY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_ROCK_STAR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_BELLE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_POP_STAR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_PH_D, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_LIBRE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_ORIGINAL_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_HOENN_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_SINNOH_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_UNOVA_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_KALOS_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_ALOLA_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_PARTNER_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PIKACHU_WORLD_CAP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SANDSHREW, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SANDSHREW_ALOLAN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_NIDORAN_F, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_NIDORAN_M, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CLEFAIRY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_VULPIX, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_VULPIX_ALOLAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_JIGGLYPUFF, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ODDISH, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PARAS, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MEOWTH, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWTH_ALOLAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWTH_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PSYDUCK, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MANKEY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GROWLITHE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_POLIWAG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_BELLSPROUT, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SHELLDER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_KRABBY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_EXEGGCUTE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CUBONE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_DITTO, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_EEVEE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_OMANYTE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_KABUTO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CHIKORITA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CYNDAQUIL, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TOTODILE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SPINARAK, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PICHU, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PICHU_SPIKY_EARED, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CLEFFA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_IGGLYBUFF, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_TOGEPI, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MAREEP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BELLOSSOM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MARILL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SUNKERN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_WOOPER, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_WOOPER_PALDEAN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PINECO, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SNUBBULL, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SHUCKLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_TEDDIURSA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SLUGMA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SWINUB, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_HOUNDOUR, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PHANPY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PORYGON2, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_TYROGUE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SMOOCHUM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ELEKID, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MAGBY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_LARVITAR, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TREECKO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TORCHIC, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MUDKIP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MARSHTOMP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_POOCHYENA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_ZIGZAGOON, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ZIGZAGOON_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_LINOONE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_LINOONE_GALARIAN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_WURMPLE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SILCOON, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CASCOON, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_LOTAD, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SEEDOT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RALTS, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_KIRLIA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SURSKIT, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SHROOMISH, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_NINCADA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_WHISMUR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_AZURILL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SKITTY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SABLEYE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SABLEYE_MEGA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MAWILE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ARON, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MEDITITE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ELECTRIKE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PLUSLE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MINUN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_VOLBEAT, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ILLUMISE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ROSELIA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_GULPIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_NUMEL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_TORKOAL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SPOINK, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_TRAPINCH, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CACNEA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ANORITH, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_WYNAUT, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SNORUNT, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CLAMPERL, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_BAGON, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TURTWIG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CHIMCHAR, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PIPLUP, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BIDOOF, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_KRICKETOT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SHINX, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BUDEW, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SHIELDON, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PACHIRISU, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_BUIZEL, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CHERUBI, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CHERRIM_OVERCAST, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CHERRIM_SUNSHINE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SHELLOS_WEST_SEA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SHELLOS_EAST_SEA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_BUNEARY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GLAMEOW, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_STUNKY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BONSLY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MIME_JR, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_HAPPINY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GIBLE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MUNCHLAX, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_RIOLU, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CROAGUNK, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SHAYMIN_LAND, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SNIVY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TEPIG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_OSHAWOTT, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PATRAT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_LILLIPUP, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PURRLOIN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PANSAGE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PANSEAR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_PANPOUR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ROGGENROLA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DRILBUR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_EXCADRILL, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_TIMBURR, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SEWADDLE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SWADLOON, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_VENIPEDE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PETILIL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SANDILE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_DARUMAKA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DARUMAKA_GALARIAN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DWEBBLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SCRAGGY, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ARCHEN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_TRUBBISH, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ZORUA, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MINCCINO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CINCCINO, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_GOTHITA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_GOTHORITA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DEERLING_SPRING, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DEERLING_SUMMER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DEERLING_AUTUMN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DEERLING_WINTER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_KARRABLAST, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_FOONGUS, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_AMOONGUSS, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_JOLTIK, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_LITWICK, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_AXEW, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CUBCHOO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SHELMET, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_STUNFISK, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_STUNFISK_GALARIAN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PAWNIARD, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_DURANT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CHESPIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_QUILLADIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_FENNEKIN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_FROAKIE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_FROGADIER, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_BUNNELBY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SCATTERBUG, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SPEWPA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_LITLEO, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PANCHAM, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_ESPURR, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWSTIC_MALE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MEOWSTIC_FEMALE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BINACLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CLAUNCHER, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_HELIOPTILE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_DEDENNE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GOOMY, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ROWLET, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_DARTRIX, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_LITTEN, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_TORRACAT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_POPPLIO, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_BRIONNE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_YUNGOOS, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GUMSHOOS, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_GRUBBIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CHARJABUG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_CRABRAWLER, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ROCKRUFF, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ROCKRUFF_OWN_TEMPO, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MAREANIE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DEWPIDER, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_FOMANTIS, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MORELULL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SALANDIT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_STUFFUL, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_BOUNSWEET, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_STEENEE, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_WIMPOD, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_PYUKUMUKU, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_KOMALA, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_TOGEDEMARU, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MIMIKYU_DISGUISED, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MIMIKYU_BUSTED, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_JANGMO_O, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_MARSHADOW, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MELTAN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_GROOKEY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_THWACKEY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_SCORBUNNY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_RABOOT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SOBBLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DRIZZILE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SKWOVET, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SKWOVET, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_BLIPBUG, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_DOTTLER, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_NICKIT, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_GOSSIFLEUR, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ELDEGOSS, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_WOOLOO, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_CHEWTLE, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_YAMPER, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_ROLYCOLY, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_APPLIN, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_APPLETUN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_TOXEL, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_SIZZLIPEDE, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_CLOBBOPUS, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_HATENNA, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_HATTREM, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_IMPIDIMP, .jumpType = JUMP_TYPE_FAST, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STRAWBERRY_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_BERRY_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_LOVE_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_STAR_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_CLOVER_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_FLOWER_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_VANILLA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_RUBY_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_MATCHA_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_MINT_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_LEMON_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_SALTED_CREAM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_RUBY_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_CARAMEL_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_ALCREMIE_RIBBON_RAINBOW_SWIRL, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_PINCURCHIN, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_SNOM, .jumpType = JUMP_TYPE_SLOW, }, + { .species = SPECIES_MORPEKO_FULL_BELLY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_MORPEKO_HANGRY, .jumpType = JUMP_TYPE_NORMAL, }, + { .species = SPECIES_KUBFU, .jumpType = JUMP_TYPE_FAST, }, }; void StartPokemonJump(u16 partyId, MainCallback exitCallback) @@ -3897,7 +3952,7 @@ static void CreateJumpMonSprites(void) { struct PokemonJump_MonInfo *monInfo = GetMonInfoByMultiplayerId(i); - y = gMonFrontPicCoords[monInfo->species].y_offset; + y = gSpeciesInfo[monInfo->species].frontPicYOffset; CreateJumpMonSprite(sPokemonJumpGfx, monInfo, *xCoords, y + 112, i); CreateStarSprite(sPokemonJumpGfx, *xCoords, 112, i); xCoords++; @@ -4149,7 +4204,7 @@ struct UnusedPacket // Data packet that's never sent // No function to read it either -static void SendPacket_Unused(u32 data) +static void UNUSED SendPacket_Unused(u32 data) { struct UnusedPacket packet; packet.id = PACKET_UNUSED; diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c index bc2ffe1aea..3f98e65ba6 100644 --- a/src/pokemon_size_record.c +++ b/src/pokemon_size_record.c @@ -84,7 +84,7 @@ static u32 GetMonSize(u16 species, u16 b) u32 height; u32 var; - height = GetPokedexHeightWeight(SpeciesToNationalPokedexNum(species), 0); + height = GetSpeciesWeight(species); var = TranslateBigMonSizeTableIndex(b); unk0 = sBigMonSizeTable[var].unk0; unk2 = sBigMonSizeTable[var].unk2; diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index b6bbad3ee8..817ec51543 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -1377,8 +1377,7 @@ void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero RemoveWindow(windowId); } -// Unused -static void UnusedDrawTextWindow(const u8 *string, void *dst, u16 offset, u8 bgColor, u8 fgColor, u8 shadowColor) +static void UNUSED UnusedDrawTextWindow(const u8 *string, void *dst, u16 offset, u8 bgColor, u8 fgColor, u8 shadowColor) { u32 tilesSize; u8 windowId; @@ -1493,8 +1492,7 @@ u8 *StringCopyAndFillWithSpaces(u8 *dst, const u8 *src, u16 n) return str; } -// Unused -static void UnusedWriteRectCpu(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width) +static void UNUSED UnusedWriteRectCpu(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width) { u16 i; @@ -1509,8 +1507,7 @@ static void UnusedWriteRectCpu(u16 *dest, u16 dest_left, u16 dest_top, const u16 } } -// Unused -static void UnusedWriteRectDma(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height) +static void UNUSED UnusedWriteRectDma(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height) { u16 i; @@ -1704,8 +1701,7 @@ static void CB2_ExitPokeStorage(void) SetMainCallback2(CB2_ReturnToField); } -// Unused -static s16 StorageSystemGetNextMonIndex(struct BoxPokemon *box, s8 startIdx, u8 stopIdx, u8 mode) +static s16 UNUSED StorageSystemGetNextMonIndex(struct BoxPokemon *box, s8 startIdx, u8 stopIdx, u8 mode) { s16 i; s16 direction; @@ -3686,12 +3682,13 @@ static void Task_OnBPressed(u8 taskId) case 0: if (IsMonBeingMoved()) { - #if OW_PC_PRESS_B < GEN_4 - PlaySE(SE_FAILURE); - PrintMessage(MSG_HOLDING_POKE); - sStorage->state = 1; - #else - if (CanPlaceMon()) + if (OW_PC_PRESS_B < GEN_4) + { + PlaySE(SE_FAILURE); + PrintMessage(MSG_HOLDING_POKE); + sStorage->state = 1; + } + else if (CanPlaceMon()) { PlaySE(SE_SELECT); SetPokeStorageTask(Task_PlaceMon); @@ -3700,7 +3697,6 @@ static void Task_OnBPressed(u8 taskId) { SetPokeStorageTask(Task_PokeStorageMain); } - #endif } else if (IsMovingItem()) { @@ -5123,7 +5119,7 @@ static u16 TryLoadMonIconTiles(u16 species, u32 personality) u16 i, offset; // Treat female mons as a seperate species as they may have a different icon than males - if (gMonIconTableFemale[species] != NULL && IsPersonalityFemale(species, personality)) + if (gSpeciesInfo[species].iconSpriteFemale != NULL && IsPersonalityFemale(species, personality)) species |= 0x8000; // 1 << 15 // Search icon list for this species @@ -5190,13 +5186,13 @@ static struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s struct SpriteTemplate template = sSpriteTemplate_MonIcon; species = GetIconSpecies(species, personality); - if (gMonIconTableFemale[species] != NULL && IsPersonalityFemale(species, personality)) + if (gSpeciesInfo[species].iconSpriteFemale != NULL && IsPersonalityFemale(species, personality)) { - template.paletteTag = PALTAG_MON_ICON_0 + gMonIconPaletteIndicesFemale[species]; + template.paletteTag = PALTAG_MON_ICON_0 + gSpeciesInfo[species].iconPalIndexFemale; } else { - template.paletteTag = PALTAG_MON_ICON_0 + gMonIconPaletteIndices[species]; + template.paletteTag = PALTAG_MON_ICON_0 + gSpeciesInfo[species].iconPalIndex; } tileNum = TryLoadMonIconTiles(species, personality); @@ -7968,8 +7964,7 @@ static void StartCursorAnim(u8 animNum) StartSpriteAnim(sStorage->cursorSprite, animNum); } -// Unused -static u8 GetMovingMonOriginalBoxId(void) +static u8 UNUSED GetMovingMonOriginalBoxId(void) { return sMovingMonOrigBoxId; } @@ -9479,14 +9474,14 @@ static void SpriteCB_ItemIcon_HideParty(struct Sprite *sprite) //------------------------------------------------------------------------------ -// Unused, leftover from FRLG -static void BackupPokemonStorage(void/*struct PokemonStorage * dest*/) +// Leftover from FRLG +static void UNUSED BackupPokemonStorage(void/*struct PokemonStorage * dest*/) { //*dest = *gPokemonStoragePtr; } -// Unused, leftover from FRLG -static void RestorePokemonStorage(void/*struct PokemonStorage * src*/) +// Leftover from FRLG +static void UNUSED RestorePokemonStorage(void/*struct PokemonStorage * src*/) { //*gPokemonStoragePtr = *src; } @@ -9878,8 +9873,7 @@ static void TilemapUtil_Free(void) Free(sTilemapUtil); } -// Unused -static void TilemapUtil_UpdateAll(void) +static void UNUSED TilemapUtil_UpdateAll(void) { s32 i; @@ -9943,8 +9937,7 @@ static void TilemapUtil_SetMap(u8 id, u8 bg, const void *tilemap, u16 width, u16 sTilemapUtil[id].active = TRUE; } -// Unused -static void TilemapUtil_SetSavedMap(u8 id, const void *tilemap) +static void UNUSED TilemapUtil_SetSavedMap(u8 id, const void *tilemap) { if (id >= sNumTilemapUtilIds) return; @@ -10094,8 +10087,7 @@ static void UnkUtil_Run(void) } } -// Unused -static bool8 UnkUtil_CpuAdd(u8 *dest, u16 dLeft, u16 dTop, const u8 *src, u16 sLeft, u16 sTop, u16 width, u16 height, u16 unkArg) +static bool8 UNUSED UnkUtil_CpuAdd(u8 *dest, u16 dLeft, u16 dTop, const u8 *src, u16 sLeft, u16 sTop, u16 width, u16 height, u16 unkArg) { struct UnkUtilData *data; @@ -10125,8 +10117,7 @@ static void UnkUtil_CpuRun(struct UnkUtilData *data) } } -// Unused -static bool8 UnkUtil_DmaAdd(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height) +static bool8 UNUSED UnkUtil_DmaAdd(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height) { struct UnkUtilData *data; diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 79ade7cdd8..b4d4ae1f4e 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -42,6 +42,7 @@ #include "tv.h" #include "window.h" #include "constants/battle_move_effects.h" +#include "constants/hold_effects.h" #include "constants/items.h" #include "constants/moves.h" #include "constants/party_menu.h" @@ -547,7 +548,7 @@ static const struct WindowTemplate sSummaryTemplate[] = .bg = 0, .tilemapLeft = 1, .tilemapTop = 2, - .width = 4, + .width = 5, .height = 2, .paletteNum = 7, .baseBlock = 387, @@ -559,7 +560,7 @@ static const struct WindowTemplate sSummaryTemplate[] = .width = 9, .height = 2, .paletteNum = 6, - .baseBlock = 395, + .baseBlock = 397, }, [PSS_LABEL_WINDOW_PORTRAIT_SPECIES] = { .bg = 0, @@ -568,7 +569,7 @@ static const struct WindowTemplate sSummaryTemplate[] = .width = 9, .height = 4, .paletteNum = 6, - .baseBlock = 413, + .baseBlock = 415, }, [PSS_LABEL_WINDOW_END] = DUMMY_WIN_TEMPLATE }; @@ -581,7 +582,7 @@ static const struct WindowTemplate sPageInfoTemplate[] = .width = 11, .height = 2, .paletteNum = 6, - .baseBlock = 449, + .baseBlock = 451, }, [PSS_DATA_WINDOW_INFO_ID] = { .bg = 0, @@ -590,7 +591,7 @@ static const struct WindowTemplate sPageInfoTemplate[] = .width = 7, .height = 2, .paletteNum = 6, - .baseBlock = 471, + .baseBlock = 473, }, [PSS_DATA_WINDOW_INFO_ABILITY] = { .bg = 0, @@ -599,7 +600,7 @@ static const struct WindowTemplate sPageInfoTemplate[] = .width = 18, .height = 4, .paletteNum = 6, - .baseBlock = 485, + .baseBlock = 487, }, [PSS_DATA_WINDOW_INFO_MEMO] = { .bg = 0, @@ -608,7 +609,7 @@ static const struct WindowTemplate sPageInfoTemplate[] = .width = 18, .height = 6, .paletteNum = 6, - .baseBlock = 557, + .baseBlock = 559, }, }; static const struct WindowTemplate sPageSkillsTemplate[] = @@ -620,7 +621,7 @@ static const struct WindowTemplate sPageSkillsTemplate[] = .width = 10, .height = 2, .paletteNum = 6, - .baseBlock = 449, + .baseBlock = 451, }, [PSS_DATA_WINDOW_SKILLS_RIBBON_COUNT] = { .bg = 0, @@ -629,7 +630,7 @@ static const struct WindowTemplate sPageSkillsTemplate[] = .width = 10, .height = 2, .paletteNum = 6, - .baseBlock = 469, + .baseBlock = 471, }, [PSS_DATA_WINDOW_SKILLS_STATS_LEFT] = { .bg = 0, @@ -638,7 +639,7 @@ static const struct WindowTemplate sPageSkillsTemplate[] = .width = 6, .height = 6, .paletteNum = 6, - .baseBlock = 489, + .baseBlock = 491, }, [PSS_DATA_WINDOW_SKILLS_STATS_RIGHT] = { .bg = 0, @@ -647,7 +648,7 @@ static const struct WindowTemplate sPageSkillsTemplate[] = .width = 3, .height = 6, .paletteNum = 6, - .baseBlock = 525, + .baseBlock = 527, }, [PSS_DATA_WINDOW_EXP] = { .bg = 0, @@ -656,7 +657,7 @@ static const struct WindowTemplate sPageSkillsTemplate[] = .width = 6, .height = 4, .paletteNum = 6, - .baseBlock = 543, + .baseBlock = 545, }, }; static const struct WindowTemplate sPageMovesTemplate[] = // This is used for both battle and contest moves @@ -668,7 +669,7 @@ static const struct WindowTemplate sPageMovesTemplate[] = // This is used for bo .width = 9, .height = 10, .paletteNum = 6, - .baseBlock = 449, + .baseBlock = 451, }, [PSS_DATA_WINDOW_MOVE_PP] = { .bg = 0, @@ -677,7 +678,7 @@ static const struct WindowTemplate sPageMovesTemplate[] = // This is used for bo .width = 6, .height = 10, .paletteNum = 8, - .baseBlock = 539, + .baseBlock = 541, }, [PSS_DATA_WINDOW_MOVE_DESCRIPTION] = { .bg = 0, @@ -686,7 +687,7 @@ static const struct WindowTemplate sPageMovesTemplate[] = // This is used for bo .width = 20, .height = 4, .paletteNum = 6, - .baseBlock = 599, + .baseBlock = 601, }, }; static const u8 sTextColors[][3] = @@ -706,8 +707,10 @@ static const u8 sTextColors[][3] = {0, 7, 8} }; -static const u8 sAButton_Gfx[] = INCBIN_U8("graphics/summary_screen/a_button.4bpp"); -static const u8 sBButton_Gfx[] = INCBIN_U8("graphics/summary_screen/b_button.4bpp"); +static const u8 sButtons_Gfx[][4 * TILE_SIZE_4BPP] = { + INCBIN_U8("graphics/summary_screen/a_button.4bpp"), + INCBIN_U8("graphics/summary_screen/b_button.4bpp"), +}; static void (*const sTextPrinterFunctions[])(void) = { @@ -935,13 +938,13 @@ static const union AnimCmd *const sSpriteAnimTable_MoveTypes[NUMBER_OF_MON_TYPES sSpriteAnim_CategoryTough, }; -static const struct CompressedSpriteSheet sSpriteSheet_MoveTypes = +const struct CompressedSpriteSheet gSpriteSheet_MoveTypes = { .data = gMoveTypes_Gfx, .size = (NUMBER_OF_MON_TYPES + CONTEST_CATEGORIES_COUNT) * 0x100, .tag = TAG_MOVE_TYPES }; -static const struct SpriteTemplate sSpriteTemplate_MoveTypes = +const struct SpriteTemplate gSpriteTemplate_MoveTypes = { .tileTag = TAG_MOVE_TYPES, .paletteTag = TAG_MOVE_TYPES, @@ -1427,7 +1430,7 @@ static bool8 DecompressGraphics(void) sMonSummaryScreen->switchCounter++; break; case 7: - LoadCompressedSpriteSheet(&sSpriteSheet_MoveTypes); + LoadCompressedSpriteSheet(&gSpriteSheet_MoveTypes); sMonSummaryScreen->switchCounter++; break; case 8: @@ -2833,8 +2836,9 @@ static void PrintNotEggInfo(void) if (dexNum != 0xFFFF) { + u8 digitCount = (NATIONAL_DEX_COUNT > 999 && IsNationalPokedexEnabled()) ? 4 : 3; StringCopy(gStringVar1, &gText_NumberClear01[0]); - ConvertIntToDecimalStringN(gStringVar2, dexNum, STR_CONV_MODE_LEADING_ZEROS, 3); + ConvertIntToDecimalStringN(gStringVar2, dexNum, STR_CONV_MODE_LEADING_ZEROS, digitCount); StringAppend(gStringVar1, gStringVar2); if (!IsMonShiny(mon)) { @@ -2897,8 +2901,13 @@ static void PrintGenderSymbol(struct Pokemon *mon, u16 species) static void PrintAOrBButtonIcon(u8 windowId, bool8 bButton, u32 x) { - // sBButton_Gfx - sizeof(sBButton_Gfx) = sAButton_Gfx - BlitBitmapToWindow(windowId, (bButton) ? sBButton_Gfx : sBButton_Gfx - sizeof(sBButton_Gfx), x, 0, 16, 16); + const u8 *button; + if (!bButton) + button = sButtons_Gfx[0]; + else + button = sButtons_Gfx[1]; + + BlitBitmapToWindow(windowId, button, x, 0, 16, 16); } static void PrintPageNamesAndStats(void) @@ -3463,23 +3472,37 @@ static void PrintRibbonCount(void) PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_SKILLS_RIBBON_COUNT), text, x, 1, 0, 0); } +static void BufferStat(u8 *dst, s8 natureMod, u32 stat, u32 strId, u32 n) +{ + static const u8 sTextNatureDown[] = _("{COLOR}{08}"); + static const u8 sTextNatureUp[] = _("{COLOR}{05}"); + static const u8 sTextNatureNeutral[] = _("{COLOR}{01}"); + u8 *txtPtr; + + if (natureMod == 0 || !SUMMARY_SCREEN_NATURE_COLORS) + txtPtr = StringCopy(dst, sTextNatureNeutral); + else if (natureMod > 0) + txtPtr = StringCopy(dst, sTextNatureUp); + else + txtPtr = StringCopy(dst, sTextNatureDown); + + ConvertIntToDecimalStringN(txtPtr, stat, STR_CONV_MODE_RIGHT_ALIGN, n); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(strId, dst); +} + static void BufferLeftColumnStats(void) { - u8 *currentHPString = Alloc(8); - u8 *maxHPString = Alloc(8); - u8 *attackString = Alloc(8); - u8 *defenseString = Alloc(8); - - ConvertIntToDecimalStringN(currentHPString, sMonSummaryScreen->summary.currentHP, STR_CONV_MODE_RIGHT_ALIGN, 3); - ConvertIntToDecimalStringN(maxHPString, sMonSummaryScreen->summary.maxHP, STR_CONV_MODE_RIGHT_ALIGN, 3); - ConvertIntToDecimalStringN(attackString, sMonSummaryScreen->summary.atk, STR_CONV_MODE_RIGHT_ALIGN, 7); - ConvertIntToDecimalStringN(defenseString, sMonSummaryScreen->summary.def, STR_CONV_MODE_RIGHT_ALIGN, 7); + u8 *currentHPString = Alloc(20); + u8 *maxHPString = Alloc(20); + u8 *attackString = Alloc(20); + u8 *defenseString = Alloc(20); + const s8 *natureMod = gNatureStatTable[sMonSummaryScreen->summary.nature]; DynamicPlaceholderTextUtil_Reset(); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, currentHPString); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, maxHPString); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, attackString); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, defenseString); + BufferStat(currentHPString, 0, sMonSummaryScreen->summary.currentHP, 0, 3); + BufferStat(maxHPString, 0, sMonSummaryScreen->summary.maxHP, 1, 3); + BufferStat(attackString, natureMod[STAT_ATK - 1], sMonSummaryScreen->summary.atk, 2, 7); + BufferStat(defenseString, natureMod[STAT_DEF - 1], sMonSummaryScreen->summary.def, 3, 7); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sStatsLeftColumnLayout); Free(currentHPString); @@ -3495,14 +3518,12 @@ static void PrintLeftColumnStats(void) static void BufferRightColumnStats(void) { - ConvertIntToDecimalStringN(gStringVar1, sMonSummaryScreen->summary.spatk, STR_CONV_MODE_RIGHT_ALIGN, 3); - ConvertIntToDecimalStringN(gStringVar2, sMonSummaryScreen->summary.spdef, STR_CONV_MODE_RIGHT_ALIGN, 3); - ConvertIntToDecimalStringN(gStringVar3, sMonSummaryScreen->summary.speed, STR_CONV_MODE_RIGHT_ALIGN, 3); + const s8 *natureMod = gNatureStatTable[sMonSummaryScreen->summary.nature]; DynamicPlaceholderTextUtil_Reset(); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar2); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar3); + BufferStat(gStringVar1, natureMod[STAT_SPATK - 1], sMonSummaryScreen->summary.spatk, 0, 3); + BufferStat(gStringVar2, natureMod[STAT_SPDEF - 1], sMonSummaryScreen->summary.spdef, 1, 3); + BufferStat(gStringVar3, natureMod[STAT_SPEED - 1], sMonSummaryScreen->summary.speed, 2, 3); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sStatsRightColumnLayout); } @@ -3743,9 +3764,8 @@ static void PrintMoveDetails(u16 move) if (sMonSummaryScreen->currPageIndex == PSS_PAGE_BATTLE_MOVES) { moveEffect = gBattleMoves[move].effect; - #if B_SHOW_SPLIT_ICON == TRUE - ShowSplitIcon(GetBattleMoveSplit(move)); - #endif + if (B_SHOW_SPLIT_ICON == TRUE) + ShowSplitIcon(GetBattleMoveSplit(move)); PrintMovePowerAndAccuracy(move); if (moveEffect != EFFECT_PLACEHOLDER) @@ -3882,13 +3902,13 @@ static void CreateMoveTypeIcons(void) for (i = SPRITE_ARR_ID_TYPE; i < SPRITE_ARR_ID_TYPE + TYPE_ICON_SPRITE_COUNT; i++) { if (sMonSummaryScreen->spriteIds[i] == SPRITE_NONE) - sMonSummaryScreen->spriteIds[i] = CreateSprite(&sSpriteTemplate_MoveTypes, 0, 0, 2); + sMonSummaryScreen->spriteIds[i] = CreateSprite(&gSpriteTemplate_MoveTypes, 0, 0, 2); SetSpriteInvisibility(i, TRUE); } } -static void SetTypeSpritePosAndPal(u8 typeId, u8 x, u8 y, u8 spriteArrayId) +void SetTypeSpritePosAndPal(u8 typeId, u8 x, u8 y, u8 spriteArrayId) { struct Sprite *sprite = &gSprites[sMonSummaryScreen->spriteIds[spriteArrayId]]; StartSpriteAnim(sprite, typeId); @@ -3928,7 +3948,12 @@ static void SetMoveTypeIcons(void) for (i = 0; i < MAX_MON_MOVES; i++) { if (summary->moves[i] != MOVE_NONE) - SetTypeSpritePosAndPal(gBattleMoves[summary->moves[i]].type, 85, 32 + (i * 16), i + SPRITE_ARR_ID_TYPE); + { + if (summary->moves[i] == MOVE_IVY_CUDGEL && ItemId_GetHoldEffect(summary->item) == HOLD_EFFECT_MASK) + SetTypeSpritePosAndPal(ItemId_GetSecondaryId(summary->item), 85, 32 + (i * 16), i + SPRITE_ARR_ID_TYPE); + else + SetTypeSpritePosAndPal(gBattleMoves[summary->moves[i]].type, 85, 32 + (i * 16), i + SPRITE_ARR_ID_TYPE); + } else SetSpriteInvisibility(i + SPRITE_ARR_ID_TYPE, TRUE); } @@ -3983,7 +4008,6 @@ static void SwapMovesTypeSprites(u8 moveIndex1, u8 moveIndex2) static u8 LoadMonGfxAndSprite(struct Pokemon *mon, s16 *state) { - const struct CompressedSpritePalette *pal; struct PokeSummary *summary = &sMonSummaryScreen->summary; switch (*state) @@ -4018,9 +4042,8 @@ static u8 LoadMonGfxAndSprite(struct Pokemon *mon, s16 *state) (*state)++; return 0xFF; case 1: - pal = GetMonSpritePalStructFromOtIdPersonality(summary->species2, summary->OTID, summary->pid); - LoadCompressedSpritePalette(pal); - SetMultiuseSpriteTemplateToPokemon(pal->tag, B_POSITION_OPPONENT_LEFT); + LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(summary->species2, summary->OTID, summary->pid), summary->species2); + SetMultiuseSpriteTemplateToPokemon(summary->species2, B_POSITION_OPPONENT_LEFT); (*state)++; return 0xFF; } @@ -4085,8 +4108,7 @@ static void SummaryScreen_DestroyAnimDelayTask(void) } } -// unused -static bool32 IsMonAnimationFinished(void) +static bool32 UNUSED IsMonAnimationFinished(void) { if (gSprites[sMonSummaryScreen->spriteIds[SPRITE_ARR_ID_MON]].callback == SpriteCallbackDummy) return FALSE; diff --git a/src/pokenav_conditions_gfx.c b/src/pokenav_conditions_gfx.c index 9f4b2db612..26d8e99e06 100644 --- a/src/pokenav_conditions_gfx.c +++ b/src/pokenav_conditions_gfx.c @@ -548,7 +548,7 @@ static u32 LoopedTask_CloseMonMarkingsWindow(s32 state) return LT_FINISH; } -static u8 *UnusedPrintNumberString(u8 *dst, u16 num) +static u8 UNUSED *UnusedPrintNumberString(u8 *dst, u16 num) { u8 *txtPtr = ConvertIntToDecimalStringN(dst, num, STR_CONV_MODE_RIGHT_ALIGN, 4); txtPtr = StringCopy(txtPtr, gText_Number2); diff --git a/src/pokenav_match_call_gfx.c b/src/pokenav_match_call_gfx.c index 4271e2ff23..d28d4a276e 100755 --- a/src/pokenav_match_call_gfx.c +++ b/src/pokenav_match_call_gfx.c @@ -1247,7 +1247,7 @@ static void LoadCheckPageTrainerPic(struct Pokenav_MatchCallGfx *gfx) int trainerPic = GetMatchCallTrainerPic(PokenavList_GetSelectedIndex()); if (trainerPic >= 0) { - DecompressPicFromTable(&gTrainerFrontPicTable[trainerPic], gfx->trainerPicGfx, SPECIES_NONE); + DecompressPicFromTable(&gTrainerFrontPicTable[trainerPic], gfx->trainerPicGfx); LZ77UnCompWram(gTrainerFrontPicPaletteTable[trainerPic].data, gfx->trainerPicPal); cursor = RequestDma3Copy(gfx->trainerPicGfx, gfx->trainerPicGfxPtr, sizeof(gfx->trainerPicGfx), 1); LoadPalette(gfx->trainerPicPal, gfx->trainerPicPalOffset, sizeof(gfx->trainerPicPal)); diff --git a/src/pokenav_match_call_list.c b/src/pokenav_match_call_list.c index b00c76b48a..8d1a73f557 100755 --- a/src/pokenav_match_call_list.c +++ b/src/pokenav_match_call_list.c @@ -278,22 +278,19 @@ int GetNumberRegistered(void) return state->numRegistered; } -// Unused -static int GetNumSpecialTrainers(void) +static int UNUSED GetNumSpecialTrainers(void) { struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN); return state->numSpecialTrainers; } -// Unused -static int GetNumNormalTrainers(void) +static int UNUSED GetNumNormalTrainers(void) { struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN); return state->numRegistered - state->numSpecialTrainers; } -// Unused -static int GetNormalTrainerHeaderId(int index) +static int UNUSED GetNormalTrainerHeaderId(int index) { struct Pokenav_MatchCallMenu *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN); index += state->numSpecialTrainers; @@ -468,8 +465,7 @@ int GetIndexDeltaOfNextCheckPageUp(int index) return 0; } -// Unused -static bool32 HasRematchEntry(void) +static bool32 UNUSED HasRematchEntry(void) { int i; diff --git a/src/pokenav_ribbons_list.c b/src/pokenav_ribbons_list.c index 56492b4ec2..72783b0972 100644 --- a/src/pokenav_ribbons_list.c +++ b/src/pokenav_ribbons_list.c @@ -227,8 +227,7 @@ static s32 GetRibbonsMonListCount(void) return list->monList->listCount; } -//unused -static s32 GetMonRibbonSelectedMonData(void) +static s32 UNUSED GetMonRibbonSelectedMonData(void) { struct Pokenav_RibbonsMonList * list = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST); s32 idx = PokenavList_GetSelectedIndex(); @@ -343,8 +342,7 @@ static void InsertMonListItem(struct Pokenav_RibbonsMonList *list, struct Pokena list->monList->listCount++; } -// Unused -static bool32 PlayerHasRibbonsMon(void) +static bool32 UNUSED PlayerHasRibbonsMon(void) { s32 i, j; diff --git a/src/rayquaza_scene.c b/src/rayquaza_scene.c index cacadf5280..3264b22bdf 100644 --- a/src/rayquaza_scene.c +++ b/src/rayquaza_scene.c @@ -1638,7 +1638,7 @@ static void Task_DuoFightAnim(u8 taskId) static void Task_DuoFight_AnimateClouds(u8 taskId) { s16 i; - u16 *data = gTasks[taskId].data; + u16 *data = (u16*)gTasks[taskId].data; for (i = 24; i < 92; i++) { diff --git a/src/record_mixing.c b/src/record_mixing.c index c5d915a9db..7554316f7d 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -460,20 +460,20 @@ static void Task_MixingRecordsRecv(u8 taskId) task->func = Task_SendPacket; if (Link_AnyPartnersPlayingRubyOrSapphire()) { - StorePtrInTaskData(sSentRecord, &task->tSentRecord); + StorePtrInTaskData(sSentRecord, (u16*) &task->tSentRecord); subTaskId = CreateTask(Task_CopyReceiveBuffer, 80); task->tCopyTaskId = subTaskId; gTasks[subTaskId].tParentTaskId = taskId; - StorePtrInTaskData(sReceivedRecords, &gTasks[subTaskId].tRecvRecords); + StorePtrInTaskData(sReceivedRecords, (u16*) &gTasks[subTaskId].tRecvRecords); sRecordStructSize = sizeof(struct PlayerRecordRS); } else { - StorePtrInTaskData(sSentRecord, &task->tSentRecord); + StorePtrInTaskData(sSentRecord, (u16*) &task->tSentRecord); subTaskId = CreateTask(Task_CopyReceiveBuffer, 80); task->tCopyTaskId = subTaskId; gTasks[subTaskId].tParentTaskId = taskId; - StorePtrInTaskData(sReceivedRecords, &gTasks[subTaskId].tRecvRecords); + StorePtrInTaskData(sReceivedRecords,(u16*) &gTasks[subTaskId].tRecvRecords); sRecordStructSize = sizeof(struct PlayerRecordEmerald); } } @@ -495,7 +495,7 @@ static void Task_SendPacket(u8 taskId) { case 0: // Copy record data chunk to send buffer { - void *recordData = LoadPtrFromTaskData(&task->tSentRecord) + task->tNumChunksSent * BUFFER_CHUNK_SIZE; + void *recordData = LoadPtrFromTaskData((u16*)&task->tSentRecord) + task->tNumChunksSent * BUFFER_CHUNK_SIZE; memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE); task->tState++; @@ -537,7 +537,7 @@ static void Task_CopyReceiveBuffer(u8 taskId) { if ((status >> i) & 1) { - void *dest = LoadPtrFromTaskData(&task->tRecvRecords) + task->tNumChunksRecv(i) * BUFFER_CHUNK_SIZE + sRecordStructSize * i; + void *dest = LoadPtrFromTaskData((u16*) &task->tRecvRecords) + task->tNumChunksRecv(i) * BUFFER_CHUNK_SIZE + sRecordStructSize * i; void *src = GetPlayerRecvBuffer(i); if ((task->tNumChunksRecv(i) + 1) * BUFFER_CHUNK_SIZE > sRecordStructSize) memcpy(dest, src, sRecordStructSize - task->tNumChunksRecv(i) * BUFFER_CHUNK_SIZE); @@ -765,9 +765,6 @@ static void ReceiveDaycareMailData(struct RecordMixingDaycareMail *records, size struct RecordMixingDaycareMail *mixMail; u8 playerSlot1, playerSlot2; void *ptr; - u8 unusedArr1[MAX_LINK_PLAYERS]; - u8 unusedArr2[MAX_LINK_PLAYERS]; - struct RecordMixingDaycareMail *unusedMixMail[MAX_LINK_PLAYERS]; bool8 canHoldItem[MAX_LINK_PLAYERS][DAYCARE_MON_COUNT]; u8 idxs[MAX_LINK_PLAYERS][2]; u8 numDaycareCanHold; @@ -782,8 +779,6 @@ static void ReceiveDaycareMailData(struct RecordMixingDaycareMail *records, size linkPlayerCount = GetLinkPlayerCount(); for (i = 0; i < MAX_LINK_PLAYERS; i++) { - unusedArr1[i] = 0xFF; - unusedArr2[i] = 0; canHoldItem[i][0] = FALSE; canHoldItem[i][1] = FALSE; } @@ -924,7 +919,6 @@ static void ReceiveDaycareMailData(struct RecordMixingDaycareMail *records, size for (i = 0; i < MAX_LINK_PLAYERS; i++) { mixMail = &records[multiplayerId * recordSize]; - unusedMixMail[i] = mixMail; } // Choose a random table id to determine who will diff --git a/src/recorded_battle.c b/src/recorded_battle.c index 17f12ce93c..4d36ce12b2 100644 --- a/src/recorded_battle.c +++ b/src/recorded_battle.c @@ -193,8 +193,7 @@ u8 RecordedBattle_GetBattlerAction(u32 actionType, u8 battlerId) } } -// Unused -static u8 GetRecordedBattleMode(void) +static u8 UNUSED GetRecordedBattleMode(void) { return sRecordMode; } @@ -493,20 +492,25 @@ static void Task_StartAfterCountdown(u8 taskId) } } -void SetVariablesForRecordedBattle(struct RecordedBattleSave *src) +void SetPartiesFromRecordedSave(struct RecordedBattleSave *src) { - bool8 var; - s32 i, j; + s32 i; ZeroPlayerPartyMons(); ZeroEnemyPartyMons(); - for (i = 0; i < PARTY_SIZE; i++) { gPlayerParty[i] = src->playerParty[i]; gEnemyParty[i] = src->opponentParty[i]; } +} +void SetVariablesForRecordedBattle(struct RecordedBattleSave *src) +{ + bool8 var; + s32 i, j; + + SetPartiesFromRecordedSave(src); for (i = 0; i < MAX_BATTLERS_COUNT; i++) { for (var = FALSE, j = 0; j < PLAYER_NAME_LENGTH + 1; j++) diff --git a/src/region_map.c b/src/region_map.c index 7d5fe93654..8936e668ac 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -1124,8 +1124,8 @@ static void RegionMap_InitializeStateBasedOnSSTidalLocation(void) { u16 y; u16 x; - u8 mapGroup; - u8 mapNum; + s8 mapGroup; + s8 mapNum; u16 dimensionScale; s16 xOnMap; s16 yOnMap; @@ -1434,14 +1434,12 @@ static void FreeRegionMapCursorSprite(void) } } -// Unused -static void SetUnkCursorSpriteData(void) +static void UNUSED SetUnkCursorSpriteData(void) { sRegionMap->cursorSprite->data[3] = TRUE; } -// Unused -static void ClearUnkCursorSpriteData(void) +static void UNUSED ClearUnkCursorSpriteData(void) { sRegionMap->cursorSprite->data[3] = FALSE; } diff --git a/src/rom_header_gf.c b/src/rom_header_gf.c index 7b8822acc6..919c8c5419 100644 --- a/src/rom_header_gf.c +++ b/src/rom_header_gf.c @@ -100,14 +100,14 @@ static const struct GFRomHeader sGFRomHeader = { .version = GAME_VERSION, .language = GAME_LANGUAGE, .gameName = "pokemon emerald version", - .monFrontPics = gMonFrontPicTable, - .monBackPics = gMonBackPicTable, - .monNormalPalettes = gMonPaletteTable, - .monShinyPalettes = gMonShinyPaletteTable, - .monIcons = gMonIconTable, - .monIconPaletteIds = gMonIconPaletteIndices, + //.monFrontPics = gMonFrontPicTable, // Handled in gSpeciesInfo + //.monBackPics = gMonBackPicTable, // Handled in gSpeciesInfo + //.monNormalPalettes = gMonPaletteTable, // Handled in gSpeciesInfo + //.monShinyPalettes = gMonShinyPaletteTable, // Handled in gSpeciesInfo + //.monIcons = gMonIconTable, + //.monIconPaletteIds = gMonIconPaletteIndices, .monIconPalettes = gMonIconPaletteTable, - .monSpeciesNames = gSpeciesNames, + //.monSpeciesNames = gSpeciesNames, // Handled in gSpeciesInfo .moveNames = gMoveNames, .decorations = gDecorations, .flagsOffset = offsetof(struct SaveBlock1, flags), diff --git a/src/rom_header_rhh.c b/src/rom_header_rhh.c new file mode 100644 index 0000000000..2e141670a7 --- /dev/null +++ b/src/rom_header_rhh.c @@ -0,0 +1,26 @@ +#include "global.h" +#include "constants/expansion.h" + +// Similar to the GF ROM header, this struct allows external programs to +// detect details about Expansion. +// For this structure to be useful we have to maintain backwards binary +// compatibility. This means that we should only ever append data to the +// end. If there are any structs as members then those structs should +// not be modified after being introduced. +struct RHHRomHeader +{ + /*0x00*/ char rhh_magic[6]; // 'RHHEXP'. Useful to locate the header if it shifts. + /*0x06*/ u8 expansionVersionMajor; + /*0x07*/ u8 expansionVersionMinor; + /*0x08*/ u8 expansionVersionPatch; + /*0x09*/ u8 expansionVersionFlags; +}; + +static const struct RHHRomHeader sRHHRomHeader = +{ + .rhh_magic = { 'R', 'H', 'H', 'E', 'X', 'P' }, + .expansionVersionMajor = EXPANSION_VERSION_MAJOR, + .expansionVersionMinor = EXPANSION_VERSION_MINOR, + .expansionVersionPatch = EXPANSION_VERSION_PATCH, + .expansionVersionFlags = (EXPANSION_TAGGED_RELEASE << 0), +}; diff --git a/src/roulette.c b/src/roulette.c index d311ad0940..44dac2db6c 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -3556,8 +3556,7 @@ static void CreateGridSprites(void) } } -// Unused -static void DestroyGridSprites(void) +static void UNUSED DestroyGridSprites(void) { u8 i; for (i = 0; i < NUM_ROULETTE_SLOTS; i++) @@ -4353,7 +4352,7 @@ static void CreateShroomishSprite(struct Sprite *ball) {116, 44}, {116, 112} }; - struct Roulette *roulette; + struct Roulette UNUSED *roulette; t = ball->data[7] - 2; roulette = sRoulette; // Unnecessary, needed to match diff --git a/src/rtc.c b/src/rtc.c index b135a675a8..a90c9aa89b 100644 --- a/src/rtc.c +++ b/src/rtc.c @@ -16,20 +16,20 @@ struct Time gLocalTime; static const struct SiiRtcInfo sRtcDummy = {0, MONTH_JAN, 1}; // 2000 Jan 1 -static const s32 sNumDaysInMonths[12] = +static const s32 sNumDaysInMonths[MONTH_COUNT] = { - 31, - 28, - 31, - 30, - 31, - 30, - 31, - 31, - 30, - 31, - 30, - 31, + [MONTH_JAN - 1] = 31, + [MONTH_FEB - 1] = 28, + [MONTH_MAR - 1] = 31, + [MONTH_APR - 1] = 30, + [MONTH_MAY - 1] = 31, + [MONTH_JUN - 1] = 30, + [MONTH_JUL - 1] = 31, + [MONTH_AUG - 1] = 31, + [MONTH_SEP - 1] = 30, + [MONTH_OCT - 1] = 31, + [MONTH_NOV - 1] = 30, + [MONTH_DEC - 1] = 31, }; void RtcDisableInterrupts(void) @@ -171,7 +171,7 @@ u16 RtcCheckInfo(struct SiiRtcInfo *rtc) month = ConvertBcdToBinary(rtc->month); - if (month == 0xFF || month == 0 || month > 12) + if (month == 0xFF || month == 0 || month > MONTH_COUNT) errorFlags |= RTC_ERR_INVALID_MONTH; value = ConvertBcdToBinary(rtc->day); @@ -192,17 +192,17 @@ u16 RtcCheckInfo(struct SiiRtcInfo *rtc) value = ConvertBcdToBinary(rtc->hour); - if (value > 24) + if (value > HOURS_PER_DAY) errorFlags |= RTC_ERR_INVALID_HOUR; value = ConvertBcdToBinary(rtc->minute); - if (value > 60) + if (value > MINUTES_PER_HOUR) errorFlags |= RTC_ERR_INVALID_MINUTE; value = ConvertBcdToBinary(rtc->second); - if (value > 60) + if (value > SECONDS_PER_MINUTE) errorFlags |= RTC_ERR_INVALID_SECOND; return errorFlags; @@ -270,19 +270,19 @@ void RtcCalcTimeDifference(struct SiiRtcInfo *rtc, struct Time *result, struct T if (result->seconds < 0) { - result->seconds += 60; + result->seconds += SECONDS_PER_MINUTE; --result->minutes; } if (result->minutes < 0) { - result->minutes += 60; + result->minutes += MINUTES_PER_HOUR; --result->hours; } if (result->hours < 0) { - result->hours += 24; + result->hours += HOURS_PER_DAY; --result->days; } } @@ -293,6 +293,26 @@ void RtcCalcLocalTime(void) RtcCalcTimeDifference(&sRtc, &gLocalTime, &gSaveBlock2Ptr->localTimeOffset); } +bool8 IsBetweenHours(s32 hours, s32 begin, s32 end) +{ + if (end < begin) + return hours >= begin || hours < end; + else + return hours >= begin && hours < end; +} + +u8 GetTimeOfDay(void) +{ + RtcCalcLocalTime(); + if (IsBetweenHours(gLocalTime.hours, MORNING_HOUR_BEGIN, MORNING_HOUR_END)) + return TIME_MORNING; + else if (IsBetweenHours(gLocalTime.hours, EVENING_HOUR_BEGIN, EVENING_HOUR_END)) + return TIME_EVENING; + else if (IsBetweenHours(gLocalTime.hours, NIGHT_HOUR_BEGIN, NIGHT_HOUR_END)) + return TIME_NIGHT; + return TIME_DAY; +} + void RtcInitLocalTimeOffset(s32 hour, s32 minute) { RtcCalcLocalTimeOffset(0, hour, minute, 0); @@ -317,19 +337,19 @@ void CalcTimeDifference(struct Time *result, struct Time *t1, struct Time *t2) if (result->seconds < 0) { - result->seconds += 60; + result->seconds += SECONDS_PER_MINUTE; --result->minutes; } if (result->minutes < 0) { - result->minutes += 60; + result->minutes += MINUTES_PER_HOUR; --result->hours; } if (result->hours < 0) { - result->hours += 24; + result->hours += HOURS_PER_DAY; --result->days; } } @@ -337,7 +357,7 @@ void CalcTimeDifference(struct Time *result, struct Time *t1, struct Time *t2) u32 RtcGetMinuteCount(void) { RtcGetInfo(&sRtc); - return (24 * 60) * RtcGetDayCount(&sRtc) + 60 * sRtc.hour + sRtc.minute; + return (HOURS_PER_DAY * MINUTES_PER_HOUR) * RtcGetDayCount(&sRtc) + MINUTES_PER_HOUR * sRtc.hour + sRtc.minute; } u32 RtcGetLocalDayCount(void) diff --git a/src/save.c b/src/save.c index 765fb045c3..3f8b25a3a3 100644 --- a/src/save.c +++ b/src/save.c @@ -94,7 +94,6 @@ u16 gSaveUnusedVar2; u16 gSaveAttemptStatus; EWRAM_DATA struct SaveSector gSaveDataBuffer = {0}; // Buffer used for reading/writing sectors -EWRAM_DATA static u8 sUnusedVar = 0; void ClearSaveData(void) { diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index f7f0162ff4..e9257debf2 100644 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -41,9 +41,7 @@ enum static EWRAM_DATA u16 sSaveFailedType = {0}; static EWRAM_DATA u16 sClockInfo[2] = {0}; -static EWRAM_DATA u8 sUnused1[12] = {0}; static EWRAM_DATA u8 sWindowIds[2] = {0}; -static EWRAM_DATA u8 sUnused2[4] = {0}; static const struct OamData sClockOamData = { diff --git a/src/scrcmd.c b/src/scrcmd.c index 51db8ebc6a..e8496ba35f 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -62,7 +62,7 @@ static EWRAM_DATA u16 sMovingNpcMapNum = 0; static EWRAM_DATA u16 sFieldEffectScriptId = 0; static u8 sBrailleWindowId; -static bool8 gIsScriptedWildDouble; +static bool8 sIsScriptedWildDouble; extern const SpecialFunc gSpecials[]; extern const u8 *gStdScripts[]; @@ -77,12 +77,12 @@ void * const gNullScriptPtr = NULL; static const u8 sScriptConditionTable[6][3] = { // < = > - 1, 0, 0, // < - 0, 1, 0, // = - 0, 0, 1, // > - 1, 1, 0, // <= - 0, 1, 1, // >= - 1, 0, 1, // != + {1, 0, 0}, // < + {0, 1, 0}, // = + {0, 0, 1}, // > + {1, 1, 0}, // <= + {0, 1, 1}, // >= + {1, 0, 1}, // != }; static u8 *const sScriptStringVars[] = @@ -783,8 +783,8 @@ bool8 ScrCmd_warphole(struct ScriptContext *ctx) { u8 mapGroup = ScriptReadByte(ctx); u8 mapNum = ScriptReadByte(ctx); - u16 x; - u16 y; + s16 x; + s16 y; PlayerGetDestCoords(&x, &y); if (mapGroup == MAP_GROUP(UNDEFINED) && mapNum == MAP_NUM(UNDEFINED)) @@ -1420,10 +1420,10 @@ bool8 ScrCmd_multichoicegrid(struct ScriptContext *ctx) bool8 ScrCmd_erasebox(struct ScriptContext *ctx) { - u8 left = ScriptReadByte(ctx); - u8 top = ScriptReadByte(ctx); - u8 right = ScriptReadByte(ctx); - u8 bottom = ScriptReadByte(ctx); + u8 UNUSED left = ScriptReadByte(ctx); + u8 UNUSED top = ScriptReadByte(ctx); + u8 UNUSED right = ScriptReadByte(ctx); + u8 UNUSED bottom = ScriptReadByte(ctx); // Menu_EraseWindowRect(left, top, right, bottom); return FALSE; @@ -1431,10 +1431,10 @@ bool8 ScrCmd_erasebox(struct ScriptContext *ctx) bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx) { - u8 left = ScriptReadByte(ctx); - u8 top = ScriptReadByte(ctx); - u8 multichoiceId = ScriptReadByte(ctx); - bool8 ignoreBPress = ScriptReadByte(ctx); + u8 UNUSED left = ScriptReadByte(ctx); + u8 UNUSED top = ScriptReadByte(ctx); + u8 UNUSED multichoiceId = ScriptReadByte(ctx); + bool8 UNUSED ignoreBPress = ScriptReadByte(ctx); /*if (Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) { @@ -1783,8 +1783,8 @@ bool8 ScrCmd_hidemoneybox(struct ScriptContext *ctx) bool8 ScrCmd_updatemoneybox(struct ScriptContext *ctx) { - u8 x = ScriptReadByte(ctx); - u8 y = ScriptReadByte(ctx); + u8 UNUSED x = ScriptReadByte(ctx); + u8 UNUSED y = ScriptReadByte(ctx); u8 ignore = ScriptReadByte(ctx); if (!ignore) @@ -1803,8 +1803,8 @@ bool8 ScrCmd_showcoinsbox(struct ScriptContext *ctx) bool8 ScrCmd_hidecoinsbox(struct ScriptContext *ctx) { - u8 x = ScriptReadByte(ctx); - u8 y = ScriptReadByte(ctx); + u8 UNUSED x = ScriptReadByte(ctx); + u8 UNUSED y = ScriptReadByte(ctx); HideCoinsWindow(); return FALSE; @@ -1812,8 +1812,8 @@ bool8 ScrCmd_hidecoinsbox(struct ScriptContext *ctx) bool8 ScrCmd_updatecoinsbox(struct ScriptContext *ctx) { - u8 x = ScriptReadByte(ctx); - u8 y = ScriptReadByte(ctx); + u8 UNUSED x = ScriptReadByte(ctx); + u8 UNUSED y = ScriptReadByte(ctx); PrintCoinsString(GetCoins()); return FALSE; @@ -1879,12 +1879,12 @@ bool8 ScrCmd_setwildbattle(struct ScriptContext *ctx) if(species2 == SPECIES_NONE) { CreateScriptedWildMon(species, level, item); - gIsScriptedWildDouble = FALSE; + sIsScriptedWildDouble = FALSE; } else { CreateScriptedDoubleWildMon(species, level, item, species2, level2, item2); - gIsScriptedWildDouble = TRUE; + sIsScriptedWildDouble = TRUE; } return FALSE; @@ -1892,7 +1892,7 @@ bool8 ScrCmd_setwildbattle(struct ScriptContext *ctx) bool8 ScrCmd_dowildbattle(struct ScriptContext *ctx) { - if (gIsScriptedWildDouble == FALSE) + if (sIsScriptedWildDouble == FALSE) BattleSetup_StartScriptedWildBattle(); else BattleSetup_StartScriptedDoubleWildBattle(); @@ -2128,10 +2128,10 @@ bool8 ScrCmd_setdoorclosed(struct ScriptContext *ctx) // Below two are functions for elevators in RS, do nothing in Emerald bool8 ScrCmd_addelevmenuitem(struct ScriptContext *ctx) { - u8 v3 = ScriptReadByte(ctx); - u16 v5 = VarGet(ScriptReadHalfword(ctx)); - u16 v7 = VarGet(ScriptReadHalfword(ctx)); - u16 v9 = VarGet(ScriptReadHalfword(ctx)); + u8 UNUSED v3 = ScriptReadByte(ctx); + u16 UNUSED v5 = VarGet(ScriptReadHalfword(ctx)); + u16 UNUSED v7 = VarGet(ScriptReadHalfword(ctx)); + u16 UNUSED v9 = VarGet(ScriptReadHalfword(ctx)); //ScriptAddElevatorMenuItem(v3, v5, v7, v9); return FALSE; diff --git a/src/script_menu.c b/src/script_menu.c index 842a1db797..6444e382e9 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -64,8 +64,7 @@ bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, bool8 } } -// Unused -static u16 GetLengthWithExpandedPlayerName(const u8 *str) +static u16 UNUSED GetLengthWithExpandedPlayerName(const u8 *str) { u16 length = 0; @@ -90,7 +89,7 @@ static u16 GetLengthWithExpandedPlayerName(const u8 *str) return length; } -static void DrawMultichoiceMenuInternal(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 cursorPos, const struct MenuAction *actions, int count) +void DrawMultichoiceMenuInternal(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 cursorPos, const struct MenuAction *actions, int count) { int i; u8 windowId; @@ -117,79 +116,6 @@ static void DrawMultichoiceMenu(u8 left, u8 top, u8 multichoiceId, bool8 ignoreB DrawMultichoiceMenuInternal(left, top, multichoiceId, ignoreBPress, cursorPos, sMultichoiceLists[multichoiceId].list, sMultichoiceLists[multichoiceId].count); } -#if I_REPEL_LURE_MENU == TRUE -void TryDrawRepelMenu(struct ScriptContext *ctx) -{ - static const u16 repelItems[] = {ITEM_REPEL, ITEM_SUPER_REPEL, ITEM_MAX_REPEL}; - struct MenuAction menuItems[ARRAY_COUNT(repelItems) + 1] = {NULL}; - int i, count = 0, menuPos = 0; - - for (i = 0; i < ARRAY_COUNT(repelItems); i++) - { - if (CheckBagHasItem(repelItems[i], 1)) - { - VarSet(VAR_0x8004 + count, repelItems[i]); - #if VAR_LAST_REPEL_LURE_USED != 0 - if (VarGet(VAR_LAST_REPEL_LURE_USED) == repelItems[i]) - menuPos = count; - #endif - menuItems[count].text = ItemId_GetName(repelItems[i]); - count++; - } - } - - if (count > 1) - DrawMultichoiceMenuInternal(0, 0, 0, FALSE, menuPos, menuItems, count); - - gSpecialVar_Result = (count > 1); -} - -void HandleRepelMenuChoice(struct ScriptContext *ctx) -{ - gSpecialVar_0x8004 = VarGet(VAR_0x8004 + gSpecialVar_Result); // Get item Id; - VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_0x8004)); -#if VAR_LAST_REPEL_LURE_USED != 0 - VarSet(VAR_LAST_REPEL_LURE_USED, gSpecialVar_0x8004); -#endif -} - -void TryDrawLureMenu(struct ScriptContext *ctx) -{ - static const u16 lureItems[] = {ITEM_LURE, ITEM_SUPER_LURE, ITEM_MAX_LURE}; - struct MenuAction menuItems[ARRAY_COUNT(lureItems) + 1] = {NULL}; - int i, count = 0, menuPos = 0; - - - for (i = 0; i < ARRAY_COUNT(lureItems); i++) - { - if (CheckBagHasItem(lureItems[i], 1)) - { - VarSet(VAR_0x8004 + count, lureItems[i]); - #if VAR_LAST_REPEL_LURE_USED != 0 - if (VarGet(VAR_LAST_REPEL_LURE_USED) == lureItems[i]) - menuPos = count; - #endif - menuItems[count].text = ItemId_GetName(lureItems[i]); - count++; - } - } - - if (count > 1) - DrawMultichoiceMenuInternal(0, 0, 0, FALSE, menuPos, menuItems, count); - - gSpecialVar_Result = (count > 1); -} - -void HandleLureMenuChoice(struct ScriptContext *ctx) -{ - gSpecialVar_0x8004 = VarGet(VAR_0x8004 + gSpecialVar_Result); // Get item Id; - VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_0x8004) | REPEL_LURE_MASK); -#if VAR_LAST_REPEL_LURE_USED != 0 - VarSet(VAR_LAST_REPEL_LURE_USED, gSpecialVar_0x8004); -#endif -} -#endif //I_REPEL_LURE_MENU == TRUE - #define tLeft data[0] #define tTop data[1] #define tRight data[2] @@ -274,8 +200,6 @@ static void Task_HandleMultichoiceInput(u8 taskId) bool8 ScriptMenu_YesNo(u8 left, u8 top) { - u8 taskId; - if (FuncIsActiveTask(Task_HandleYesNoInput) == TRUE) { return FALSE; @@ -284,7 +208,7 @@ bool8 ScriptMenu_YesNo(u8 left, u8 top) { gSpecialVar_Result = 0xFF; DisplayYesNoMenuDefaultYes(); - taskId = CreateTask(Task_HandleYesNoInput, 0x50); + CreateTask(Task_HandleYesNoInput, 0x50); return TRUE; } } diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c index bfe2e7581a..ca455d544d 100644 --- a/src/script_pokemon_util.c +++ b/src/script_pokemon_util.c @@ -21,6 +21,7 @@ #include "sprite.h" #include "string_util.h" #include "tv.h" +#include "wild_encounter.h" #include "constants/items.h" #include "constants/battle_frontier.h" @@ -66,12 +67,16 @@ u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 u struct Pokemon mon; u16 targetSpecies; - CreateMon(&mon, species, level, USE_RANDOM_IVS, FALSE, 0, OT_ID_PLAYER_ID, 0); + if (OW_SYNCHRONIZE_NATURE >= GEN_6 && (gSpeciesInfo[species].eggGroups[0] == EGG_GROUP_NO_EGGS_DISCOVERED || OW_SYNCHRONIZE_NATURE == GEN_7)) + CreateMonWithNature(&mon, species, level, USE_RANDOM_IVS, PickWildMonNature()); + else + CreateMon(&mon, species, level, USE_RANDOM_IVS, FALSE, 0, OT_ID_PLAYER_ID, 0); + heldItem[0] = item; heldItem[1] = item >> 8; SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem); - // In case a mon with a form changing item is given. Eg: SPECIES_ARCEUS with ITEM_SPLASH_PLATE will transform into SPECIES_ARCEUS_WATER upon gifted. + // In case a mon with a form changing item is given. Eg: SPECIES_ARCEUS_NORMAL with ITEM_SPLASH_PLATE will transform into SPECIES_ARCEUS_WATER upon gifted. targetSpecies = GetFormChangeTargetSpecies(&mon, FORM_CHANGE_ITEM_HOLD, 0); if (targetSpecies != SPECIES_NONE) { @@ -149,7 +154,10 @@ void CreateScriptedWildMon(u16 species, u8 level, u16 item) u8 heldItem[2]; ZeroEnemyPartyMons(); - CreateMon(&gEnemyParty[0], species, level, USE_RANDOM_IVS, 0, 0, OT_ID_PLAYER_ID, 0); + if (OW_SYNCHRONIZE_NATURE > GEN_3) + CreateMonWithNature(&gEnemyParty[0], species, level, USE_RANDOM_IVS, PickWildMonNature()); + else + CreateMon(&gEnemyParty[0], species, level, USE_RANDOM_IVS, 0, 0, OT_ID_PLAYER_ID, 0); if (item) { heldItem[0] = item; @@ -164,7 +172,10 @@ void CreateScriptedDoubleWildMon(u16 species1, u8 level1, u16 item1, u16 species ZeroEnemyPartyMons(); - CreateMon(&gEnemyParty[0], species1, level1, 32, 0, 0, OT_ID_PLAYER_ID, 0); + if (OW_SYNCHRONIZE_NATURE > GEN_3) + CreateMonWithNature(&gEnemyParty[0], species1, level1, 32, PickWildMonNature()); + else + CreateMon(&gEnemyParty[0], species1, level1, 32, 0, 0, OT_ID_PLAYER_ID, 0); if (item1) { heldItem1[0] = item1; @@ -172,7 +183,10 @@ void CreateScriptedDoubleWildMon(u16 species1, u8 level1, u16 item1, u16 species SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, heldItem1); } - CreateMon(&gEnemyParty[1], species2, level2, 32, 0, 0, OT_ID_PLAYER_ID, 0); + if (OW_SYNCHRONIZE_NATURE > GEN_3) + CreateMonWithNature(&gEnemyParty[1], species2, level2, 32, PickWildMonNature()); + else + CreateMon(&gEnemyParty[1], species2, level2, 32, 0, 0, OT_ID_PLAYER_ID, 0); if (item2) { heldItem2[0] = item2; diff --git a/src/secret_base.c b/src/secret_base.c index 9509cd0fc5..a662acb36e 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -519,7 +519,7 @@ bool8 CurMapIsSecretBase(void) void InitSecretBaseAppearance(bool8 hidePC) { u16 secretBaseIdx; - u16 x, y; + s16 x, y; u8 *decorations; u8 *decorPos; @@ -915,7 +915,7 @@ void ShowSecretBaseRegistryMenu(void) static void Task_ShowSecretBaseRegistryMenu(u8 taskId) { - s16 *data = gTasks[taskId].data; + u16 *data = (u16*) gTasks[taskId].data; LockPlayerFieldControls(); tNumBases = GetNumRegisteredSecretBases(); if (tNumBases != 0) @@ -977,7 +977,7 @@ static void RegistryMenu_OnCursorMove(s32 unused, bool8 flag, struct ListMenu *m static void FinalizeRegistryMenu(u8 taskId) { - s16 *data = gTasks[taskId].data; + u16 *data = (u16*) gTasks[taskId].data; SetStandardWindowBorderStyle(tMainWindowId, FALSE); tListTaskId = ListMenuInit(&gMultiuseListMenuTemplate, tScrollOffset, tSelectedRow); AddRegistryMenuScrollArrows(taskId); @@ -986,13 +986,13 @@ static void FinalizeRegistryMenu(u8 taskId) static void AddRegistryMenuScrollArrows(u8 taskId) { - s16 *data = gTasks[taskId].data; + u16 *data = (u16*) gTasks[taskId].data; tArrowTaskId = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 188, 12, 148, tNumBases - tMaxShownItems, TAG_SCROLL_ARROW, TAG_SCROLL_ARROW, &tScrollOffset); } static void HandleRegistryMenuInput(u8 taskId) { - s16 *data = gTasks[taskId].data; + u16 *data = (u16*) gTasks[taskId].data; s32 input = ListMenu_ProcessInput(tListTaskId); ListMenuGetScrollAndRow(tListTaskId, &tScrollOffset, &tSelectedRow); @@ -1022,7 +1022,7 @@ static void HandleRegistryMenuInput(u8 taskId) static void ShowRegistryMenuActions(u8 taskId) { struct WindowTemplate template; - s16 *data = gTasks[taskId].data; + u16 *data = (u16*) gTasks[taskId].data; RemoveScrollIndicatorArrowPair(tArrowTaskId); template = sRegistryWindowTemplates[1]; template.width = GetMaxWidthInMenuTable(sRegistryMenuActions, 2); @@ -1054,7 +1054,7 @@ static void HandleRegistryMenuActionsInput(u8 taskId) static void ShowRegistryMenuDeleteConfirmation(u8 taskId) { - s16 *data = gTasks[taskId].data; + u16 *data = (u16*) gTasks[taskId].data; ClearStdWindowAndFrame(tMainWindowId, FALSE); ClearStdWindowAndFrame(tActionWindowId, FALSE); ClearWindowTilemap(tMainWindowId); @@ -1074,7 +1074,7 @@ static void ShowRegistryMenuDeleteYesNo(u8 taskId) void DeleteRegistry_Yes_Callback(u8 taskId) { - s16 *data = gTasks[taskId].data; + u16 *data = (u16*) gTasks[taskId].data; ClearDialogWindowAndFrame(0, FALSE); DestroyListMenuTask(tListTaskId, &tScrollOffset, &tSelectedRow); gSaveBlock1Ptr->secretBases[tSelectedBaseId].registryStatus = UNREGISTERED; @@ -1091,7 +1091,7 @@ static void DeleteRegistry_Yes(u8 taskId) static void DeleteRegistry_No(u8 taskId) { - s16 *data = gTasks[taskId].data; + u16 *data = (u16*) gTasks[taskId].data; ClearDialogWindowAndFrame(0, FALSE); DestroyListMenuTask(tListTaskId, &tScrollOffset, &tSelectedRow); FinalizeRegistryMenu(taskId); @@ -1100,7 +1100,7 @@ static void DeleteRegistry_No(u8 taskId) static void ReturnToMainRegistryMenu(u8 taskId) { - s16 *data = gTasks[taskId].data; + u16 *data = (u16*) gTasks[taskId].data; AddRegistryMenuScrollArrows(taskId); ClearStdWindowAndFrame(tActionWindowId, FALSE); ClearWindowTilemap(tActionWindowId); @@ -1733,6 +1733,9 @@ void ReceiveSecretBasesData(void *secretBases, size_t recordSize, u8 linkIdx) struct SecretBaseRecordMixer mixers[3]; u16 i; + if (linkIdx > 3) + return; + if (FlagGet(FLAG_RECEIVED_SECRET_POWER)) { switch (GetLinkPlayerCount()) diff --git a/src/siirtc.c b/src/siirtc.c index 0e598f7172..1536aecb42 100644 --- a/src/siirtc.c +++ b/src/siirtc.c @@ -66,7 +66,6 @@ extern vu16 GPIOPortDirection; -static u16 sDummy; // unused variable static bool8 sLocked; static int WriteCommand(u8 value); diff --git a/src/slot_machine.c b/src/slot_machine.c index 20386a2528..d61a5bcb92 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -1116,7 +1116,7 @@ static void PlaySlotMachine_Internal(u8 machineId, MainCallback exitCallback) { struct Task *task = &gTasks[CreateTask(SlotMachineDummyTask, 0xFF)]; task->tMachineId = machineId; - StoreWordInTwoHalfwords(&task->tExitCallback, (intptr_t)exitCallback); + StoreWordInTwoHalfwords((u16*) &task->tExitCallback, (intptr_t)exitCallback); } // Extracts and assigns machineId and exit callback from task. @@ -5813,8 +5813,8 @@ static const struct SpriteFrameImage sImageTable_ReelTimeNumbers[] = { gSlotMachineReelTimeNumber5, 0x80 }, }; -static const struct SpriteFrameImage sImageTable_ReelTimeShadow[] = { gSlotMachineReelTimeShadow, 0x200 }; -static const struct SpriteFrameImage sImageTable_ReelTimeNumberGap[] = { gSlotMachineReelTimeNumberGap_Gfx, 0x40 }; +static const struct SpriteFrameImage sImageTable_ReelTimeShadow[] = { {gSlotMachineReelTimeShadow, 0x200} }; +static const struct SpriteFrameImage sImageTable_ReelTimeNumberGap[] = { {gSlotMachineReelTimeNumberGap_Gfx, 0x40} }; static const struct SpriteFrameImage sImageTable_ReelTimeBolt[] = { @@ -5822,7 +5822,7 @@ static const struct SpriteFrameImage sImageTable_ReelTimeBolt[] = { gSlotMachineReelTimeBolt1, 0x100 }, }; -static const struct SpriteFrameImage sImageTable_ReelTimePikachuAura[] = { gSlotMachineReelTimePikaAura, 0x400 }; +static const struct SpriteFrameImage sImageTable_ReelTimePikachuAura[] = { {gSlotMachineReelTimePikaAura, 0x400} }; static const struct SpriteFrameImage sImageTable_ReelTimeExplosion[] = { @@ -5830,9 +5830,9 @@ static const struct SpriteFrameImage sImageTable_ReelTimeExplosion[] = { gSlotMachineReelTimeExplosion1, 0x200 }, }; -static const struct SpriteFrameImage sImageTable_ReelTimeDuck[] = { gSlotMachineReelTimeDuck, 0x20}; -static const struct SpriteFrameImage sImageTable_ReelTimeSmoke[] = { gSlotMachineReelTimeSmoke, 0x80}; -static const struct SpriteFrameImage sImageTable_PikaPowerBolt[] = { gSlotMachinePikaPowerBolt, 0x20}; +static const struct SpriteFrameImage sImageTable_ReelTimeDuck[] = { {gSlotMachineReelTimeDuck, 0x20} }; +static const struct SpriteFrameImage sImageTable_ReelTimeSmoke[] = { {gSlotMachineReelTimeSmoke, 0x80} }; +static const struct SpriteFrameImage sImageTable_PikaPowerBolt[] = { {gSlotMachinePikaPowerBolt, 0x20} }; static const union AnimCmd sAnim_SingleFrame[] = { @@ -6485,7 +6485,7 @@ static const struct Subsprite sSubsprites_ReelBackground[] = static const struct SubspriteTable sSubspriteTable_ReelBackground[] = { - ARRAY_COUNT(sSubsprites_ReelBackground), sSubsprites_ReelBackground + {ARRAY_COUNT(sSubsprites_ReelBackground), sSubsprites_ReelBackground} }; /* v-- Origin on 3 @@ -6547,7 +6547,7 @@ static const struct Subsprite sSubsprites_ReelTimeMachineAntennae[] = static const struct SubspriteTable sSubspriteTable_ReelTimeMachineAntennae[] = { - ARRAY_COUNT(sSubsprites_ReelTimeMachineAntennae), sSubsprites_ReelTimeMachineAntennae + {ARRAY_COUNT(sSubsprites_ReelTimeMachineAntennae), sSubsprites_ReelTimeMachineAntennae} }; /* @@ -6587,7 +6587,7 @@ static const struct Subsprite sSubsprites_ReelTimeMachine[] = static const struct SubspriteTable sSubspriteTable_ReelTimeMachine[] = { - ARRAY_COUNT(sSubsprites_ReelTimeMachine), sSubsprites_ReelTimeMachine + {ARRAY_COUNT(sSubsprites_ReelTimeMachine), sSubsprites_ReelTimeMachine} }; /* @@ -6644,7 +6644,7 @@ static const struct Subsprite sSubsprites_BrokenReelTimeMachine[] = static const struct SubspriteTable sSubspriteTable_BrokenReelTimeMachine[] = { - ARRAY_COUNT(sSubsprites_BrokenReelTimeMachine), sSubsprites_BrokenReelTimeMachine + {ARRAY_COUNT(sSubsprites_BrokenReelTimeMachine), sSubsprites_BrokenReelTimeMachine} }; /* v-- Origin on 3 @@ -6689,7 +6689,7 @@ static const struct Subsprite sSubsprites_ReelTimeShadow[] = static const struct SubspriteTable sSubspriteTable_ReelTimeShadow[] = { - ARRAY_COUNT(sSubsprites_ReelTimeShadow), sSubsprites_ReelTimeShadow + {ARRAY_COUNT(sSubsprites_ReelTimeShadow), sSubsprites_ReelTimeShadow} }; /* @@ -6727,7 +6727,7 @@ static const struct Subsprite sSubsprites_ReelTimeNumberGap[] = static const struct SubspriteTable sSubspriteTable_ReelTimeNumberGap[] = { - ARRAY_COUNT(sSubsprites_ReelTimeNumberGap), sSubsprites_ReelTimeNumberGap + {ARRAY_COUNT(sSubsprites_ReelTimeNumberGap), sSubsprites_ReelTimeNumberGap} }; /* @@ -6784,7 +6784,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_Reel[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_Reel[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_Reel), sSubsprites_DigitalDisplay_Reel + {ARRAY_COUNT(sSubsprites_DigitalDisplay_Reel), sSubsprites_DigitalDisplay_Reel} }; /* v-- Origin on 3 @@ -6829,7 +6829,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_Time[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_Time[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_Time), sSubsprites_DigitalDisplay_Time + {ARRAY_COUNT(sSubsprites_DigitalDisplay_Time), sSubsprites_DigitalDisplay_Time} }; /* v-- Origin on 3 @@ -6874,7 +6874,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_Insert[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_Insert[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_Insert), sSubsprites_DigitalDisplay_Insert + {ARRAY_COUNT(sSubsprites_DigitalDisplay_Insert), sSubsprites_DigitalDisplay_Insert} }; /* v-- Origin on 3 @@ -6919,7 +6919,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_Unused1[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_Unused1[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_Unused1), sSubsprites_DigitalDisplay_Unused1 + {ARRAY_COUNT(sSubsprites_DigitalDisplay_Unused1), sSubsprites_DigitalDisplay_Unused1} }; /* v-- Origin on 3 @@ -6981,7 +6981,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_Win[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_Win[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_Win), sSubsprites_DigitalDisplay_Win + {ARRAY_COUNT(sSubsprites_DigitalDisplay_Win), sSubsprites_DigitalDisplay_Win} }; static const struct Subsprite sSubsprites_DigitalDisplay_Smoke[] = @@ -7010,12 +7010,12 @@ static const struct Subsprite sSubsprites_DigitalDisplay_Unused2[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_Smoke[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_Smoke), sSubsprites_DigitalDisplay_Smoke + {ARRAY_COUNT(sSubsprites_DigitalDisplay_Smoke), sSubsprites_DigitalDisplay_Smoke} }; static const struct SubspriteTable sSubspriteTable_DigitalDisplay_Unused2[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_Unused2), sSubsprites_DigitalDisplay_Unused2 + {ARRAY_COUNT(sSubsprites_DigitalDisplay_Unused2), sSubsprites_DigitalDisplay_Unused2} }; /* @@ -7128,7 +7128,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_Pokeball[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_Pokeball[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_Pokeball), sSubsprites_DigitalDisplay_Pokeball + {ARRAY_COUNT(sSubsprites_DigitalDisplay_Pokeball), sSubsprites_DigitalDisplay_Pokeball} }; /* @@ -7166,7 +7166,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_DPad[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_DPad[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_DPad), sSubsprites_DigitalDisplay_DPad + {ARRAY_COUNT(sSubsprites_DigitalDisplay_DPad), sSubsprites_DigitalDisplay_DPad} }; /* @@ -7195,7 +7195,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_StopS[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_StopS[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_StopS), sSubsprites_DigitalDisplay_StopS + {ARRAY_COUNT(sSubsprites_DigitalDisplay_StopS), sSubsprites_DigitalDisplay_StopS} }; /* @@ -7224,7 +7224,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_StopT[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_StopT[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_StopT), sSubsprites_DigitalDisplay_StopT + {ARRAY_COUNT(sSubsprites_DigitalDisplay_StopT), sSubsprites_DigitalDisplay_StopT} }; /* @@ -7253,7 +7253,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_StopO[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_StopO[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_StopO), sSubsprites_DigitalDisplay_StopO + {ARRAY_COUNT(sSubsprites_DigitalDisplay_StopO), sSubsprites_DigitalDisplay_StopO} }; /* @@ -7282,7 +7282,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_StopP[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_StopP[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_StopP), sSubsprites_DigitalDisplay_StopP + {ARRAY_COUNT(sSubsprites_DigitalDisplay_StopP), sSubsprites_DigitalDisplay_StopP} }; /* @@ -7311,7 +7311,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_BonusB[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_BonusB[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_BonusB), sSubsprites_DigitalDisplay_BonusB + {ARRAY_COUNT(sSubsprites_DigitalDisplay_BonusB), sSubsprites_DigitalDisplay_BonusB} }; /* @@ -7340,7 +7340,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_BonusO[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_BonusO[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_BonusO), sSubsprites_DigitalDisplay_BonusO + {ARRAY_COUNT(sSubsprites_DigitalDisplay_BonusO), sSubsprites_DigitalDisplay_BonusO} }; /* @@ -7369,7 +7369,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_BonusN[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_BonusN[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_BonusN), sSubsprites_DigitalDisplay_BonusN + {ARRAY_COUNT(sSubsprites_DigitalDisplay_BonusN), sSubsprites_DigitalDisplay_BonusN} }; /* @@ -7398,7 +7398,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_BonusU[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_BonusU[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_BonusU), sSubsprites_DigitalDisplay_BonusU + {ARRAY_COUNT(sSubsprites_DigitalDisplay_BonusU), sSubsprites_DigitalDisplay_BonusU} }; /* @@ -7427,7 +7427,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_BonusS[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_BonusS[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_BonusS), sSubsprites_DigitalDisplay_BonusS + {ARRAY_COUNT(sSubsprites_DigitalDisplay_BonusS), sSubsprites_DigitalDisplay_BonusS} }; /* @@ -7490,7 +7490,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_BigB[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_BigB[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_BigB), sSubsprites_DigitalDisplay_BigB + {ARRAY_COUNT(sSubsprites_DigitalDisplay_BigB), sSubsprites_DigitalDisplay_BigB} }; /* @@ -7528,7 +7528,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_BigI[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_BigI[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_BigI), sSubsprites_DigitalDisplay_BigI + {ARRAY_COUNT(sSubsprites_DigitalDisplay_BigI), sSubsprites_DigitalDisplay_BigI} }; /* @@ -7591,7 +7591,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_BigG[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_BigG[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_BigG), sSubsprites_DigitalDisplay_BigG + {ARRAY_COUNT(sSubsprites_DigitalDisplay_BigG), sSubsprites_DigitalDisplay_BigG} }; /* @@ -7654,7 +7654,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_RegR[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_RegR[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_RegR), sSubsprites_DigitalDisplay_RegR + {ARRAY_COUNT(sSubsprites_DigitalDisplay_RegR), sSubsprites_DigitalDisplay_RegR} }; /* @@ -7692,7 +7692,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_RegE[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_RegE[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_RegE), sSubsprites_DigitalDisplay_RegE + {ARRAY_COUNT(sSubsprites_DigitalDisplay_RegE), sSubsprites_DigitalDisplay_RegE} }; /* @@ -7755,7 +7755,7 @@ static const struct Subsprite sSubsprites_DigitalDisplay_RegG[] = static const struct SubspriteTable sSubspriteTable_DigitalDisplay_RegG[] = { - ARRAY_COUNT(sSubsprites_DigitalDisplay_RegG), sSubsprites_DigitalDisplay_RegG + {ARRAY_COUNT(sSubsprites_DigitalDisplay_RegG), sSubsprites_DigitalDisplay_RegG} }; static const struct SpriteTemplate *const sSpriteTemplates_DigitalDisplay[NUM_DIG_DISPLAY_SPRITES] = diff --git a/src/sound.c b/src/sound.c index 955895c637..c6f01c8ad2 100644 --- a/src/sound.c +++ b/src/sound.c @@ -156,8 +156,7 @@ void FadeOutAndFadeInNewMapMusic(u16 songNum, u8 fadeOutSpeed, u8 fadeInSpeed) sMapMusicFadeInSpeed = fadeInSpeed; } -// Unused -static void FadeInNewMapMusic(u16 songNum, u8 speed) +static void UNUSED FadeInNewMapMusic(u16 songNum, u8 speed) { FadeInNewBGM(songNum, speed); sCurrentMapMusic = songNum; @@ -376,7 +375,7 @@ void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode) // Set default values // May be overridden depending on mode. - length = 140; + length = 210; reverse = FALSE; release = 0; pitch = 15360; @@ -460,8 +459,12 @@ void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode) SetPokemonCryChorus(chorus); SetPokemonCryPriority(priority); - species--; - gMPlay_PokemonCry = SetPokemonCryTone(reverse ? &gCryTable_Reverse[species] : &gCryTable[species]); + species = GetCryIdBySpecies(species); + if (species != 0) + { + species--; + gMPlay_PokemonCry = SetPokemonCryTone(reverse ? &gCryTable_Reverse[species] : &gCryTable[species]); + } } bool8 IsCryFinished(void) diff --git a/src/sprays.c b/src/sprays.c new file mode 100644 index 0000000000..b553d125ac --- /dev/null +++ b/src/sprays.c @@ -0,0 +1,116 @@ +#include "global.h" +#include "event_data.h" +#include "script_menu.h" +#include "strings.h" +#include "constants/items.h" +#include "item.h" +#include "script_menu.h" +#include "menu.h" + +#define SPRAY_COUNT 0 +#define SPRAY_GET 1 + +#define NUM_SPRAY_STRENGTH 3 +#define SPRAY_MENU_Y_COORD 8 + +#define LOCAL_VAR_SPRAY gSpecialVar_0x8004 +#define LOCAL_VAR_SPRAY_CONST VAR_0x8004 + +u32 CountOrGetSprays(u32); +u32 GetNumberSprayStrength(void); +u32 GetSprayId(void); +u32 GetLastUsedSprayType(void); +u32 SetSprayMenuCursorPosition(int, int); +#if I_REPEL_LURE_MENU == TRUE +void DrawSprayMenu(void); +#endif +void HandleSprayMenuChoice(void); + +u32 CountOrGetSprays(u32 func) +{ + u32 i, currentSpray, sprayCount = 0; + u32 spray = GetLastUsedSprayType(); + + for (i = 0; i < NUM_SPRAY_STRENGTH; i++) + { + currentSpray = spray + i; + + if (!CheckBagHasItem(currentSpray,1)) + continue; + + if (func == SPRAY_COUNT) + sprayCount++; + else + return (currentSpray); + } + return sprayCount; +} + +u32 GetNumberSprayStrength(void) +{ + return CountOrGetSprays(SPRAY_COUNT); +} + +u32 GetSprayId(void) +{ + return CountOrGetSprays(SPRAY_GET); +} + +u32 GetLastUsedSprayType(void) +{ + if (IS_LAST_USED_LURE(VarGet(VAR_REPEL_STEP_COUNT))) + return ITEM_LURE; + else + return ITEM_REPEL; +} + +u32 SetSprayMenuCursorPosition(int currentSpray, int count) +{ + if (VarGet(VAR_LAST_REPEL_LURE_USED) == currentSpray) + return count; + + return 0; +} + +#if I_REPEL_LURE_MENU == TRUE +void DrawSprayMenu(void) +{ + struct MenuAction menuItems[NUM_SPRAY_STRENGTH+1] = {NULL}; + int sprayIndex, count = 0, menuPos = 0, currentSpray, yCoord = 0; + u32 spray = GetLastUsedSprayType(); + + for (sprayIndex = 0; sprayIndex < (NUM_SPRAY_STRENGTH); sprayIndex++) + { + currentSpray = spray + sprayIndex; + + if (!CheckBagHasItem(currentSpray, 1)) + continue; + + menuItems[count].text = ItemId_GetName(currentSpray); + VarSet(LOCAL_VAR_SPRAY_CONST + count, currentSpray); + + if (VAR_LAST_REPEL_LURE_USED != 0) + menuPos = SetSprayMenuCursorPosition(currentSpray, count); + + yCoord = SPRAY_MENU_Y_COORD - (2 * count); + count++; + } + + gSpecialVar_0x8003 = count; + menuItems[count].text = gText_Cancel2; + + DrawMultichoiceMenuInternal(18, yCoord, 0, FALSE, menuPos, menuItems, count+1); +} +#endif + +void HandleSprayMenuChoice(void) +{ + u32 lureMask = (GetLastUsedSprayType() == ITEM_LURE) ? REPEL_LURE_MASK : 0; + + LOCAL_VAR_SPRAY = VarGet(LOCAL_VAR_SPRAY_CONST + gSpecialVar_Result); + + VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(LOCAL_VAR_SPRAY) | lureMask); + + if (VAR_LAST_REPEL_LURE_USED != 0) + VarSet(VAR_LAST_REPEL_LURE_USED, LOCAL_VAR_SPRAY); +} diff --git a/src/start_menu.c b/src/start_menu.c index 0fbbfe0417..9ef6adaf05 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -85,7 +85,7 @@ EWRAM_DATA static u8 sBattlePyramidFloorWindowId = 0; EWRAM_DATA static u8 sStartMenuCursorPos = 0; EWRAM_DATA static u8 sNumStartMenuActions = 0; EWRAM_DATA static u8 sCurrentStartMenuActions[9] = {0}; -EWRAM_DATA static u8 sInitStartMenuData[2] = {0}; +EWRAM_DATA static s8 sInitStartMenuData[2] = {0}; EWRAM_DATA static u8 (*sSaveDialogCallback)(void) = NULL; EWRAM_DATA static u8 sSaveDialogTimer = 0; @@ -182,7 +182,7 @@ static const struct WindowTemplate sWindowTemplate_PyramidPeak = { .baseBlock = 0x8 }; -static const u8 gText_MenuDebug[] = _("DEBUG"); +static const u8 sText_MenuDebug[] = _("DEBUG"); static const struct MenuAction sStartMenuItems[] = { @@ -199,7 +199,7 @@ static const struct MenuAction sStartMenuItems[] = [MENU_ACTION_REST_FRONTIER] = {gText_MenuRest, {.u8_void = StartMenuSaveCallback}}, [MENU_ACTION_RETIRE_FRONTIER] = {gText_MenuRetire, {.u8_void = StartMenuBattlePyramidRetireCallback}}, [MENU_ACTION_PYRAMID_BAG] = {gText_MenuBag, {.u8_void = StartMenuBattlePyramidBagCallback}}, - [MENU_ACTION_DEBUG] = {gText_MenuDebug, {.u8_void = StartMenuDebugCallback}}, + [MENU_ACTION_DEBUG] = {sText_MenuDebug, {.u8_void = StartMenuDebugCallback}}, }; static const struct BgTemplate sBgTemplates_LinkBattleSave[] = @@ -311,11 +311,10 @@ static void BuildStartMenuActions(void) } else { - #if DEBUG_OVERWORLD_MENU == TRUE && DEBUG_OVERWORLD_IN_MENU == TRUE - BuildDebugStartMenu(); - #else - BuildNormalStartMenu(); - #endif + if (DEBUG_OVERWORLD_MENU == TRUE && DEBUG_OVERWORLD_IN_MENU == TRUE) + BuildDebugStartMenu(); + else + BuildNormalStartMenu(); } } diff --git a/src/starter_choose.c b/src/starter_choose.c index 39de696e97..3097f87f73 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -576,7 +576,7 @@ static void CreateStarterPokemonLabel(u8 selection) u8 labelLeft, labelRight, labelTop, labelBottom; u16 species = GetStarterPokemon(selection); - CopyMonCategoryText(SpeciesToNationalPokedexNum(species), categoryText); + CopyMonCategoryText(species, categoryText); speciesName = GetSpeciesName(species); winTemplate = sWindowTemplate_StarterLabel; diff --git a/src/strings.c b/src/strings.c index f9137c4f15..f23ad3fca5 100644 --- a/src/strings.c +++ b/src/strings.c @@ -207,7 +207,6 @@ const u8 gText_MaleSymbol[] = _("♂"); const u8 gText_FemaleSymbol[] = _("♀"); const u8 gText_LevelSymbol[] = _("{LV}"); const u8 gText_NumberClear01[] = _("{NO}{CLEAR 0x01}"); -const u8 gText_PlusSymbol[] = _("+"); // Unused const u8 gText_RightArrow[] = _("{RIGHT_ARROW}"); // Unused const u8 gText_IDNumber2[] = _("{ID}{NO}"); const u8 gText_Space[] = _(" "); @@ -378,6 +377,7 @@ const u8 gText_HP3[] = _("HP"); const u8 gText_SpAtk3[] = _("SP. ATK"); const u8 gText_SpDef3[] = _("SP. DEF"); const u8 gText_WontHaveEffect[] = _("It won't have any effect.{PAUSE_UNTIL_PRESS}"); +const u8 gText_NextFusionMon[] = _("Choose {PKMN} to fuse with."); const u8 gText_CantBeUsedOnPkmn[] = _("This can't be used on\nthat POKéMON.{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnCantSwitchOut[] = _("{STR_VAR_1} can't be switched\nout!{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnAlreadyInBattle[] = _("{STR_VAR_1} is already\nin battle!{PAUSE_UNTIL_PRESS}"); @@ -459,6 +459,7 @@ const u8 gText_ChoosePokemonConfirm[] = _("Choose POKéMON and confirm."); const u8 gText_EnjoyCycling[] = _("Let's enjoy cycling!"); const u8 gText_InUseAlready_PM[] = _("This is in use already."); const u8 gText_AlreadyHoldingOne[] = _("{STR_VAR_1} is already holding\none {STR_VAR_2}."); +const u8 gText_WhichAppliance[] = _("Order which\nappliance?"); const u8 gText_NoUse[] = _("No use."); const u8 gText_Able[] = _("ABLE"); const u8 gText_First_PM[] = _("FIRST"); @@ -881,7 +882,7 @@ const u8 gText_PkmnWasReleased[] = _("{DYNAMIC 0} was released."); const u8 gText_ByeByePkmn[] = _("Bye-bye, {DYNAMIC 0}!"); const u8 gText_MarkYourPkmn[] = _("Mark your POKéMON."); const u8 gText_ThatsYourLastPkmn[] = _("That's your last POKéMON!"); -const u8 gText_YourPartysFull[] = _("Your party's full!"); +const u8 gText_YourPartysFull[] = _("Your party's full!{PAUSE_UNTIL_PRESS}"); const u8 gText_YoureHoldingAPkmn[] = _("You're holding a POKéMON!"); const u8 gText_WhichOneWillYouTake[] = _("Which one will you take?"); const u8 gText_YouCantReleaseAnEgg[] = _("You can't release an EGG."); @@ -1754,6 +1755,14 @@ const u8 gText_TrainerHill1F[] = _("1F"); const u8 gText_TrainerHill2F[] = _("2F"); const u8 gText_TrainerHill3F[] = _("3F"); const u8 gText_TrainerHill4F[] = _("4F"); +const u8 gText_LightBulb[] = _("Light bulb"); +const u8 gText_MicrowaveOven[] = _("Microwave oven"); +const u8 gText_WashingMachine[] = _("Washing machine"); +const u8 gText_Refrigerator[] = _("Refrigerator"); +const u8 gText_ElectricFan[] = _("Electric fan"); +const u8 gText_LawnMower[] = _("Lawn mower"); +const u8 gText_ChangeForm[] = _("Change form"); +const u8 gText_ChangeAbility[] = _("Change Ability"); const u8 gText_TeachWhichMoveToPkmn[] = _("Teach which move to {STR_VAR_1}?"); const u8 gText_MoveRelearnerTeachMoveConfirm[] = _("Teach {STR_VAR_2}?"); const u8 gText_MoveRelearnerPkmnLearnedMove[] = _("{STR_VAR_1} learned\n{STR_VAR_2}!"); @@ -1833,3 +1842,4 @@ const u8 gText_Berry[] = _("BERRY"); const u8 gText_Berries[] = _("BERRIES"); const u8 gText_ExpShareOn[] = _("The Exp. Share has been turned on.{PAUSE_UNTIL_PRESS}"); const u8 gText_ExpShareOff[] = _("The Exp. Share has been turned off.{PAUSE_UNTIL_PRESS}"); +const u8 gText_BasePointsResetToZero[] = _("{STR_VAR_1}'s base points\nwere all reset to zero!{PAUSE_UNTIL_PRESS}"); diff --git a/src/title_screen.c b/src/title_screen.c index 87bf0d970e..12015b8bd8 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -23,6 +23,12 @@ #include "constants/rgb.h" #include "constants/songs.h" +enum { + TAG_VERSION = 1000, + TAG_PRESS_START_COPYRIGHT, + TAG_LOGO_SHINE, +}; + #define VERSION_BANNER_RIGHT_TILEOFFSET 64 #define VERSION_BANNER_LEFT_X 98 #define VERSION_BANNER_RIGHT_X 162 @@ -158,8 +164,8 @@ static const union AnimCmd *const sVersionBannerRightAnimTable[] = static const struct SpriteTemplate sVersionBannerLeftSpriteTemplate = { - .tileTag = 1000, - .paletteTag = 1000, + .tileTag = TAG_VERSION, + .paletteTag = TAG_VERSION, .oam = &sVersionBannerLeftOamData, .anims = sVersionBannerLeftAnimTable, .images = NULL, @@ -169,8 +175,8 @@ static const struct SpriteTemplate sVersionBannerLeftSpriteTemplate = static const struct SpriteTemplate sVersionBannerRightSpriteTemplate = { - .tileTag = 1000, - .paletteTag = 1000, + .tileTag = TAG_VERSION, + .paletteTag = TAG_VERSION, .oam = &sVersionBannerRightOamData, .anims = sVersionBannerRightAnimTable, .images = NULL, @@ -183,7 +189,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_EmeraldVersion[] = { .data = gTitleScreenEmeraldVersionGfx, .size = 0x1000, - .tag = 1000 + .tag = TAG_VERSION }, {}, }; @@ -205,75 +211,80 @@ static const struct OamData sOamData_CopyrightBanner = .affineParam = 0, }; -static const union AnimCmd sCopyrightBannerAnim0[] = +static const union AnimCmd sAnim_PressStart_0[] = { ANIMCMD_FRAME(1, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim1[] = +static const union AnimCmd sAnim_PressStart_1[] = { ANIMCMD_FRAME(5, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim2[] = +static const union AnimCmd sAnim_PressStart_2[] = { ANIMCMD_FRAME(9, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim3[] = +static const union AnimCmd sAnim_PressStart_3[] = { ANIMCMD_FRAME(13, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim4[] = +static const union AnimCmd sAnim_PressStart_4[] = { ANIMCMD_FRAME(17, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim5[] = +static const union AnimCmd sAnim_Copyright_0[] = { ANIMCMD_FRAME(21, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim6[] = +static const union AnimCmd sAnim_Copyright_1[] = { ANIMCMD_FRAME(25, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim7[] = +static const union AnimCmd sAnim_Copyright_2[] = { ANIMCMD_FRAME(29, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim8[] = +static const union AnimCmd sAnim_Copyright_3[] = { ANIMCMD_FRAME(33, 4), ANIMCMD_END, }; -static const union AnimCmd sCopyrightBannerAnim9[] = +static const union AnimCmd sAnim_Copyright_4[] = { ANIMCMD_FRAME(37, 4), ANIMCMD_END, }; -static const union AnimCmd *const sStartCopyrightBannerAnimTable[] = +// The "Press Start" and copyright graphics are each 5 32x8 segments long +#define NUM_PRESS_START_FRAMES 5 +#define NUM_COPYRIGHT_FRAMES 5 + +static const union AnimCmd *const sStartCopyrightBannerAnimTable[NUM_PRESS_START_FRAMES + NUM_COPYRIGHT_FRAMES] = { - sCopyrightBannerAnim0, - sCopyrightBannerAnim1, - sCopyrightBannerAnim2, - sCopyrightBannerAnim3, - sCopyrightBannerAnim4, - sCopyrightBannerAnim5, - sCopyrightBannerAnim6, - sCopyrightBannerAnim7, - sCopyrightBannerAnim8, - sCopyrightBannerAnim9, + sAnim_PressStart_0, + sAnim_PressStart_1, + sAnim_PressStart_2, + sAnim_PressStart_3, + sAnim_PressStart_4, + [NUM_PRESS_START_FRAMES] = + sAnim_Copyright_0, + sAnim_Copyright_1, + sAnim_Copyright_2, + sAnim_Copyright_3, + sAnim_Copyright_4, }; static const struct SpriteTemplate sStartCopyrightBannerSpriteTemplate = { - .tileTag = 1001, - .paletteTag = 1001, + .tileTag = TAG_PRESS_START_COPYRIGHT, + .paletteTag = TAG_PRESS_START_COPYRIGHT, .oam = &sOamData_CopyrightBanner, .anims = sStartCopyrightBannerAnimTable, .images = NULL, @@ -286,7 +297,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_PressStart[] = { .data = gTitleScreenPressStartGfx, .size = 0x520, - .tag = 1001 + .tag = TAG_PRESS_START_COPYRIGHT }, {}, }; @@ -295,7 +306,7 @@ static const struct SpritePalette sSpritePalette_PressStart[] = { { .data = gTitleScreenPressStartPal, - .tag = 1001 + .tag = TAG_PRESS_START_COPYRIGHT }, {}, }; @@ -330,8 +341,8 @@ static const union AnimCmd *const sPokemonLogoShineAnimTable[] = static const struct SpriteTemplate sPokemonLogoShineSpriteTemplate = { - .tileTag = 1002, - .paletteTag = 1001, + .tileTag = TAG_LOGO_SHINE, + .paletteTag = TAG_PRESS_START_COPYRIGHT, .oam = &sPokemonLogoShineOamData, .anims = sPokemonLogoShineAnimTable, .images = NULL, @@ -344,15 +355,25 @@ static const struct CompressedSpriteSheet sPokemonLogoShineSpriteSheet[] = { .data = sTitleScreenLogoShineGfx, .size = 0x800, - .tag = 1002 + .tag = TAG_LOGO_SHINE }, {}, }; -// code +// Task data for the main title screen tasks (Task_TitleScreenPhase#) +#define tCounter data[0] +#define tSkipToNext data[1] +#define tPointless data[2] // Incremented but never used to do anything. +#define tBg2Y data[3] +#define tBg1Y data[4] + +// Sprite data for sVersionBannerLeftSpriteTemplate / sVersionBannerRightSpriteTemplate +#define sAlphaBlendIdx data[0] +#define sParentTaskId data[1] + static void SpriteCB_VersionBannerLeft(struct Sprite *sprite) { - if (gTasks[sprite->data[1]].data[1] != 0) + if (gTasks[sprite->sParentTaskId].tSkipToNext) { sprite->oam.objMode = ST_OAM_OBJ_NORMAL; sprite->y = VERSION_BANNER_Y_GOAL; @@ -361,15 +382,15 @@ static void SpriteCB_VersionBannerLeft(struct Sprite *sprite) { if (sprite->y != VERSION_BANNER_Y_GOAL) sprite->y++; - if (sprite->data[0] != 0) - sprite->data[0]--; - SetGpuReg(REG_OFFSET_BLDALPHA, gTitleScreenAlphaBlend[sprite->data[0]]); + if (sprite->sAlphaBlendIdx != 0) + sprite->sAlphaBlendIdx--; + SetGpuReg(REG_OFFSET_BLDALPHA, gTitleScreenAlphaBlend[sprite->sAlphaBlendIdx]); } } static void SpriteCB_VersionBannerRight(struct Sprite *sprite) { - if (gTasks[sprite->data[1]].data[1] != 0) + if (gTasks[sprite->sParentTaskId].tSkipToNext) { sprite->oam.objMode = ST_OAM_OBJ_NORMAL; sprite->y = VERSION_BANNER_Y_GOAL; @@ -381,13 +402,16 @@ static void SpriteCB_VersionBannerRight(struct Sprite *sprite) } } +// Sprite data for SpriteCB_PressStartCopyrightBanner +#define sAnimate data[0] +#define sTimer data[1] + static void SpriteCB_PressStartCopyrightBanner(struct Sprite *sprite) { - if (sprite->data[0] == 1) + if (sprite->sAnimate == TRUE) { - sprite->data[1]++; // Alternate between hidden and shown every 16th frame - if (sprite->data[1] & 16) + if (++sprite->sTimer & 16) sprite->invisible = FALSE; else sprite->invisible = TRUE; @@ -404,11 +428,11 @@ static void CreatePressStartBanner(s16 x, s16 y) u8 spriteId; x -= 64; - for (i = 0; i < 5; i++, x += 32) + for (i = 0; i < NUM_PRESS_START_FRAMES; i++, x += 32) { spriteId = CreateSprite(&sStartCopyrightBannerSpriteTemplate, x, y, 0); StartSpriteAnim(&gSprites[spriteId], i); - gSprites[spriteId].data[0] = 1; + gSprites[spriteId].sAnimate = TRUE; } } @@ -418,93 +442,122 @@ static void CreateCopyrightBanner(s16 x, s16 y) u8 spriteId; x -= 64; - for (i = 0; i < 5; i++, x += 32) + for (i = 0; i < NUM_COPYRIGHT_FRAMES; i++, x += 32) { spriteId = CreateSprite(&sStartCopyrightBannerSpriteTemplate, x, y, 0); - StartSpriteAnim(&gSprites[spriteId], i + 5); + StartSpriteAnim(&gSprites[spriteId], i + NUM_PRESS_START_FRAMES); } } +#undef sAnimate +#undef sTimer + +// Defines for SpriteCB_PokemonLogoShine +enum { + SHINE_MODE_SINGLE_NO_BG_COLOR, + SHINE_MODE_DOUBLE, + SHINE_MODE_SINGLE, +}; + +#define SHINE_SPEED 4 + +#define sMode data[0] +#define sBgColor data[1] + static void SpriteCB_PokemonLogoShine(struct Sprite *sprite) { if (sprite->x < DISPLAY_WIDTH + 32) { - if (sprite->data[0]) // Flash background + // In any mode except SHINE_MODE_SINGLE_NO_BG_COLOR the background + // color will change, in addition to the shine sprite moving. + if (sprite->sMode != SHINE_MODE_SINGLE_NO_BG_COLOR) { u16 backgroundColor; if (sprite->x < DISPLAY_WIDTH / 2) { // Brighten background color - if (sprite->data[1] < 31) - sprite->data[1]++; - if (sprite->data[1] < 31) - sprite->data[1]++; + if (sprite->sBgColor < 31) + sprite->sBgColor++; + if (sprite->sBgColor < 31) + sprite->sBgColor++; } else { // Darken background color - if (sprite->data[1] != 0) - sprite->data[1]--; - if (sprite->data[1] != 0) - sprite->data[1]--; + if (sprite->sBgColor != 0) + sprite->sBgColor--; + if (sprite->sBgColor != 0) + sprite->sBgColor--; } - backgroundColor = _RGB(sprite->data[1], sprite->data[1], sprite->data[1]); - if (sprite->x == DISPLAY_WIDTH / 2 + 12 - || sprite->x == DISPLAY_WIDTH / 2 + 16 - || sprite->x == DISPLAY_WIDTH / 2 + 20 - || sprite->x == DISPLAY_WIDTH / 2 + 24) + backgroundColor = _RGB(sprite->sBgColor, sprite->sBgColor, sprite->sBgColor); + + // Flash the background green for 4 frames of movement. + // Otherwise use the updating color. + if (sprite->x == DISPLAY_WIDTH / 2 + (3 * SHINE_SPEED) + || sprite->x == DISPLAY_WIDTH / 2 + (4 * SHINE_SPEED) + || sprite->x == DISPLAY_WIDTH / 2 + (5 * SHINE_SPEED) + || sprite->x == DISPLAY_WIDTH / 2 + (6 * SHINE_SPEED)) gPlttBufferFaded[0] = RGB(24, 31, 12); else gPlttBufferFaded[0] = backgroundColor; } - sprite->x += 4; + + sprite->x += SHINE_SPEED; } else { + // Sprite has moved fully offscreen gPlttBufferFaded[0] = RGB_BLACK; DestroySprite(sprite); } } -static void SpriteCB_PokemonLogoShine2(struct Sprite *sprite) +static void SpriteCB_PokemonLogoShine_Fast(struct Sprite *sprite) { if (sprite->x < DISPLAY_WIDTH + 32) - sprite->x += 8; + sprite->x += SHINE_SPEED * 2; else DestroySprite(sprite); } -static void StartPokemonLogoShine(u8 flashBg) +static void StartPokemonLogoShine(u8 mode) { u8 spriteId; - switch (flashBg) + switch (mode) { - case 0: - case 2: + case SHINE_MODE_SINGLE_NO_BG_COLOR: + case SHINE_MODE_SINGLE: + // Create one regular shine sprite. + // If mode is SHINE_MODE_SINGLE it will also change the background color. spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, 0, 68, 0); gSprites[spriteId].oam.objMode = ST_OAM_OBJ_WINDOW; - gSprites[spriteId].data[0] = flashBg; + gSprites[spriteId].sMode = mode; break; - case 1: + case SHINE_MODE_DOUBLE: + // Create an invisible sprite with mode set to update the background color spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, 0, 68, 0); gSprites[spriteId].oam.objMode = ST_OAM_OBJ_WINDOW; - gSprites[spriteId].data[0] = flashBg; + gSprites[spriteId].sMode = mode; gSprites[spriteId].invisible = TRUE; + // Create two faster shine sprites spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, 0, 68, 0); - gSprites[spriteId].callback = SpriteCB_PokemonLogoShine2; + gSprites[spriteId].callback = SpriteCB_PokemonLogoShine_Fast; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_WINDOW; spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, -80, 68, 0); - gSprites[spriteId].callback = SpriteCB_PokemonLogoShine2; + gSprites[spriteId].callback = SpriteCB_PokemonLogoShine_Fast; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_WINDOW; break; } } +#undef sMode +#undef sBgColor + static void VBlankCB(void) { ScanlineEffect_InitHBlankDmaTransfer(); @@ -514,9 +567,6 @@ static void VBlankCB(void) SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); } -#define tCounter data[0] -#define tSkipToNext data[1] - void CB2_InitTitleScreen(void) { switch (gMain.state) @@ -573,13 +623,13 @@ void CB2_InitTitleScreen(void) gTasks[taskId].tCounter = 256; gTasks[taskId].tSkipToNext = FALSE; - gTasks[taskId].data[2] = -16; - gTasks[taskId].data[3] = -32; + gTasks[taskId].tPointless = -16; + gTasks[taskId].tBg2Y = -32; gMain.state = 3; break; } case 3: - BeginNormalPaletteFade(PALETTES_ALL, 1, 0x10, 0, RGB_WHITEALPHA); + BeginNormalPaletteFade(PALETTES_ALL, 1, 16, 0, RGB_WHITEALPHA); SetVBlankCallback(VBlankCB); gMain.state = 4; break; @@ -614,7 +664,7 @@ void CB2_InitTitleScreen(void) case 5: if (!UpdatePaletteFade()) { - StartPokemonLogoShine(0); + StartPokemonLogoShine(SHINE_MODE_SINGLE_NO_BG_COLOR); ScanlineEffect_InitWave(0, DISPLAY_HEIGHT, 4, 4, 0, SCANLINE_EFFECT_REG_BG1HOFS, TRUE); SetMainCallback2(MainCB2); } @@ -634,7 +684,7 @@ static void MainCB2(void) static void Task_TitleScreenPhase1(u8 taskId) { // Skip to next phase when A, B, Start, or Select is pressed - if (JOY_NEW(A_B_START_SELECT) || gTasks[taskId].data[1] != 0) + if (JOY_NEW(A_B_START_SELECT) || gTasks[taskId].tSkipToNext) { gTasks[taskId].tSkipToNext = TRUE; gTasks[taskId].tCounter = 0; @@ -644,9 +694,9 @@ static void Task_TitleScreenPhase1(u8 taskId) { u16 frameNum = gTasks[taskId].tCounter; if (frameNum == 176) - StartPokemonLogoShine(1); + StartPokemonLogoShine(SHINE_MODE_DOUBLE); else if (frameNum == 64) - StartPokemonLogoShine(2); + StartPokemonLogoShine(SHINE_MODE_SINGLE); gTasks[taskId].tCounter--; } @@ -663,18 +713,21 @@ static void Task_TitleScreenPhase1(u8 taskId) // Create left side of version banner spriteId = CreateSprite(&sVersionBannerLeftSpriteTemplate, VERSION_BANNER_LEFT_X, VERSION_BANNER_Y, 0); - gSprites[spriteId].data[0] = 64; - gSprites[spriteId].data[1] = taskId; + gSprites[spriteId].sAlphaBlendIdx = ARRAY_COUNT(gTitleScreenAlphaBlend); + gSprites[spriteId].sParentTaskId = taskId; // Create right side of version banner spriteId = CreateSprite(&sVersionBannerRightSpriteTemplate, VERSION_BANNER_RIGHT_X, VERSION_BANNER_Y, 0); - gSprites[spriteId].data[1] = taskId; + gSprites[spriteId].sParentTaskId = taskId; gTasks[taskId].tCounter = 144; gTasks[taskId].func = Task_TitleScreenPhase2; } } +#undef sParentTaskId +#undef sAlphaBlendIdx + // Create "Press Start" and copyright banners, and slide Pokemon logo up static void Task_TitleScreenPhase2(u8 taskId) { @@ -705,31 +758,31 @@ static void Task_TitleScreenPhase2(u8 taskId) | DISPCNT_OBJ_ON); CreatePressStartBanner(START_BANNER_X, 108); CreateCopyrightBanner(START_BANNER_X, 148); - gTasks[taskId].data[4] = 0; + gTasks[taskId].tBg1Y = 0; gTasks[taskId].func = Task_TitleScreenPhase3; } - if (!(gTasks[taskId].tCounter & 3) && gTasks[taskId].data[2] != 0) - gTasks[taskId].data[2]++; - if (!(gTasks[taskId].tCounter & 1) && gTasks[taskId].data[3] != 0) - gTasks[taskId].data[3]++; + if (!(gTasks[taskId].tCounter & 3) && gTasks[taskId].tPointless != 0) + gTasks[taskId].tPointless++; + if (!(gTasks[taskId].tCounter & 1) && gTasks[taskId].tBg2Y != 0) + gTasks[taskId].tBg2Y++; // Slide Pokemon logo up - yPos = gTasks[taskId].data[3] * 256; + yPos = gTasks[taskId].tBg2Y * 256; SetGpuReg(REG_OFFSET_BG2Y_L, yPos); SetGpuReg(REG_OFFSET_BG2Y_H, yPos / 0x10000); - gTasks[taskId].data[5] = 15; - gTasks[taskId].data[6] = 6; + gTasks[taskId].data[5] = 15; // Unused + gTasks[taskId].data[6] = 6; // Unused } // Show Rayquaza silhouette and process main title screen input static void Task_TitleScreenPhase3(u8 taskId) { - if ((JOY_NEW(A_BUTTON)) || (JOY_NEW(START_BUTTON))) + if (JOY_NEW(A_BUTTON) || JOY_NEW(START_BUTTON)) { FadeOutBGM(4); - BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_WHITEALPHA); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_WHITEALPHA); SetMainCallback2(CB2_GoToMainMenu); } else if (JOY_HELD(CLEAR_SAVE_BUTTON_COMBO) == CLEAR_SAVE_BUTTON_COMBO) @@ -740,30 +793,29 @@ static void Task_TitleScreenPhase3(u8 taskId) && CanResetRTC() == TRUE) { FadeOutBGM(4); - BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); SetMainCallback2(CB2_GoToResetRtcScreen); } else if (JOY_HELD(BERRY_UPDATE_BUTTON_COMBO) == BERRY_UPDATE_BUTTON_COMBO) { FadeOutBGM(4); - BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); SetMainCallback2(CB2_GoToBerryFixScreen); } else { SetGpuReg(REG_OFFSET_BG2Y_L, 0); SetGpuReg(REG_OFFSET_BG2Y_H, 0); - gTasks[taskId].tCounter++; - if (gTasks[taskId].tCounter & 1) + if (++gTasks[taskId].tCounter & 1) { - gTasks[taskId].data[4]++; - gBattle_BG1_Y = gTasks[taskId].data[4] / 2; + gTasks[taskId].tBg1Y++; + gBattle_BG1_Y = gTasks[taskId].tBg1Y / 2; gBattle_BG1_X = 0; } UpdateLegendaryMarkingColor(gTasks[taskId].tCounter); if ((gMPlayInfo_BGM.status & 0xFFFF) == 0) { - BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_WHITEALPHA); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_WHITEALPHA); SetMainCallback2(CB2_GoToCopyrightScreen); } } diff --git a/src/trade.c b/src/trade.c index 4b98a1a076..5e0564a1ff 100644 --- a/src/trade.c +++ b/src/trade.c @@ -157,7 +157,7 @@ struct InGameTrade { u32 personality; u16 heldItem; u8 mailNum; - u8 otName[11]; + u8 otName[TRAINER_NAME_LENGTH + 1]; u8 otGender; u8 sheen; u16 requestedSpecies; @@ -1570,15 +1570,8 @@ static u8 CheckValidityOfTradeMons(u8 *aliveMons, u8 playerPartyCount, u8 player partnerMonIdx %= PARTY_SIZE; partnerSpecies = GetMonData(&gEnemyParty[partnerMonIdx], MON_DATA_SPECIES); - // Partner cant trade illegitimate Deoxys or Mew - if (partnerSpecies == SPECIES_DEOXYS || partnerSpecies == SPECIES_MEW) - { - if (!GetMonData(&gEnemyParty[partnerMonIdx], MON_DATA_MODERN_FATEFUL_ENCOUNTER)) - return PARTNER_MON_INVALID; - } - // Can't trade specific species - if (gSpeciesInfo[partnerSpecies].flags & SPECIES_FLAG_CANNOT_BE_TRADED) + if (gSpeciesInfo[partnerSpecies].cannotBeTraded) return PARTNER_MON_INVALID; // Partner cant trade Egg or non-Hoenn mon if player doesn't have National Dex @@ -2424,14 +2417,8 @@ static u32 CanTradeSelectedMon(struct Pokemon *playerParty, int partyCount, int } } - if (species[monIdx] == SPECIES_DEOXYS || species[monIdx] == SPECIES_MEW) - { - if (!GetMonData(&playerParty[monIdx], MON_DATA_MODERN_FATEFUL_ENCOUNTER)) - return CANT_TRADE_INVALID_MON; - } - // Can't trade specific species - if (gSpeciesInfo[species[monIdx]].flags & SPECIES_FLAG_CANNOT_BE_TRADED) + if (gSpeciesInfo[species[monIdx]].cannotBeTraded) return CANT_TRADE_INVALID_MON; // Make Eggs not count for numMonsLeft @@ -2495,16 +2482,6 @@ s32 GetGameProgressForLinkTrade(void) return TRADE_BOTH_PLAYERS_READY; } -static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isModernFatefulEncounter) -{ - if (species == SPECIES_DEOXYS || species == SPECIES_MEW) - { - if (!isModernFatefulEncounter) - return TRUE; - } - return FALSE; -} - int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct RfuGameCompatibilityData partner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, bool8 isModernFatefulEncounter) { bool8 playerHasNationalDex = player.hasNationalDex; @@ -2523,12 +2500,8 @@ int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct Rf return UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_2; } - // Cannot trade illegitimate Deoxys/Mew - if (IsDeoxysOrMewUntradable(playerSpecies, isModernFatefulEncounter)) - return UR_TRADE_MSG_MON_CANT_BE_TRADED; - // Can't trade specific species - if (gSpeciesInfo[playerSpecies].flags & SPECIES_FLAG_CANNOT_BE_TRADED) + if (gSpeciesInfo[playerSpecies].cannotBeTraded) return UR_TRADE_MSG_MON_CANT_BE_TRADED; if (partnerSpecies == SPECIES_EGG) @@ -2575,11 +2548,8 @@ int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 sp { bool8 hasNationalDex = player.hasNationalDex; - if (IsDeoxysOrMewUntradable(species, isModernFatefulEncounter)) - return CANT_REGISTER_MON_NOW; - // Can't trade specific species - if (gSpeciesInfo[species].flags & SPECIES_FLAG_CANNOT_BE_TRADED) + if (gSpeciesInfo[species].cannotBeTraded) return CANT_REGISTER_MON; if (hasNationalDex) @@ -2797,7 +2767,7 @@ static void LoadTradeMonPic(u8 whichParty, u8 state) { int pos = 0; struct Pokemon *mon = NULL; - u16 species; + u16 species = SPECIES_NONE; u32 personality; if (whichParty == TRADE_PLAYER) @@ -2811,21 +2781,21 @@ static void LoadTradeMonPic(u8 whichParty, u8 state) mon = &gEnemyParty[gSelectedTradeMonPositions[TRADE_PARTNER] % PARTY_SIZE]; pos = B_POSITION_OPPONENT_RIGHT; } + species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG); switch (state) { case 0: - species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG); personality = GetMonData(mon, MON_DATA_PERSONALITY); HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[whichParty * 2 + B_POSITION_OPPONENT_LEFT], species, personality); - LoadCompressedSpritePalette(GetMonSpritePalStruct(mon)); + LoadCompressedSpritePaletteWithTag(GetMonFrontSpritePal(mon), species); sTradeAnim->monSpecies[whichParty] = species; sTradeAnim->monPersonalities[whichParty] = personality; break; case 1: - SetMultiuseSpriteTemplateToPokemon(GetMonSpritePalStruct(mon)->tag, pos); + SetMultiuseSpriteTemplateToPokemon(species, pos); sTradeAnim->monSpriteIds[whichParty] = CreateSprite(&gMultiuseSpriteTemplate, 120, 60, 6); gSprites[sTradeAnim->monSpriteIds[whichParty]].invisible = TRUE; gSprites[sTradeAnim->monSpriteIds[whichParty]].callback = SpriteCallbackDummy; @@ -3102,7 +3072,7 @@ static void UpdatePokedexForReceivedMon(u8 partyIdx) // Functionally nop after commented code static void TryEnableNationalDexFromLinkPartner(void) { - u8 mpId = GetMultiplayerId(); + u8 UNUSED mpId = GetMultiplayerId(); // Originally in Ruby but commented out /*if (gLinkPlayers[mpId ^ 1].lp_field_2 == 0x8000) EnableNationalPokedex();*/ @@ -3453,7 +3423,7 @@ static bool8 DoTradeAnim_Cable(void) case STATE_START: gSprites[sTradeAnim->monSpriteIds[TRADE_PLAYER]].invisible = FALSE; gSprites[sTradeAnim->monSpriteIds[TRADE_PLAYER]].x2 = -180; - gSprites[sTradeAnim->monSpriteIds[TRADE_PLAYER]].y2 = gMonFrontPicCoords[sTradeAnim->monSpecies[TRADE_PLAYER]].y_offset; + gSprites[sTradeAnim->monSpriteIds[TRADE_PLAYER]].y2 = gSpeciesInfo[sTradeAnim->monSpecies[TRADE_PLAYER]].frontPicYOffset; sTradeAnim->state++; sTradeAnim->cachedMapMusic = GetCurrentMapMusic(); PlayNewMapMusic(MUS_EVOLUTION); @@ -3822,7 +3792,7 @@ static bool8 DoTradeAnim_Cable(void) break; case STATE_SHOW_NEW_MON: gSprites[sTradeAnim->monSpriteIds[TRADE_PARTNER]].x = 120; - gSprites[sTradeAnim->monSpriteIds[TRADE_PARTNER]].y = gMonFrontPicCoords[sTradeAnim->monSpecies[TRADE_PARTNER]].y_offset + 60; + gSprites[sTradeAnim->monSpriteIds[TRADE_PARTNER]].y = gSpeciesInfo[sTradeAnim->monSpecies[TRADE_PARTNER]].frontPicYOffset + 60; gSprites[sTradeAnim->monSpriteIds[TRADE_PARTNER]].x2 = 0; gSprites[sTradeAnim->monSpriteIds[TRADE_PARTNER]].y2 = 0; StartSpriteAnim(&gSprites[sTradeAnim->monSpriteIds[TRADE_PARTNER]], 0); @@ -3926,7 +3896,7 @@ static bool8 DoTradeAnim_Wireless(void) case STATE_START: gSprites[sTradeAnim->monSpriteIds[TRADE_PLAYER]].invisible = FALSE; gSprites[sTradeAnim->monSpriteIds[TRADE_PLAYER]].x2 = -180; - gSprites[sTradeAnim->monSpriteIds[TRADE_PLAYER]].y2 = gMonFrontPicCoords[sTradeAnim->monSpecies[TRADE_PLAYER]].y_offset; + gSprites[sTradeAnim->monSpriteIds[TRADE_PLAYER]].y2 = gSpeciesInfo[sTradeAnim->monSpecies[TRADE_PLAYER]].frontPicYOffset; sTradeAnim->state++; sTradeAnim->cachedMapMusic = GetCurrentMapMusic(); PlayNewMapMusic(MUS_EVOLUTION); @@ -4319,7 +4289,7 @@ static bool8 DoTradeAnim_Wireless(void) break; case STATE_SHOW_NEW_MON: gSprites[sTradeAnim->monSpriteIds[TRADE_PARTNER]].x = 120; - gSprites[sTradeAnim->monSpriteIds[TRADE_PARTNER]].y = gMonFrontPicCoords[sTradeAnim->monSpecies[TRADE_PARTNER]].y_offset + 60; + gSprites[sTradeAnim->monSpriteIds[TRADE_PARTNER]].y = gSpeciesInfo[sTradeAnim->monSpecies[TRADE_PARTNER]].frontPicYOffset + 60; gSprites[sTradeAnim->monSpriteIds[TRADE_PARTNER]].x2 = 0; gSprites[sTradeAnim->monSpriteIds[TRADE_PARTNER]].y2 = 0; StartSpriteAnim(&gSprites[sTradeAnim->monSpriteIds[TRADE_PARTNER]], 0); diff --git a/src/trainer_card.c b/src/trainer_card.c index 1535c3d997..225e8241ac 100755 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -1078,7 +1078,7 @@ static void PrintPokedexOnCard(void) AddTextPrinterParameterized3(WIN_CARD_TEXT, FONT_NORMAL, 20, 72, sTrainerCardTextColors, TEXT_SKIP_DRAW, gText_TrainerCardPokedex); else AddTextPrinterParameterized3(WIN_CARD_TEXT, FONT_NORMAL, 16, 73, sTrainerCardTextColors, TEXT_SKIP_DRAW, gText_TrainerCardPokedex); - StringCopy(ConvertIntToDecimalStringN(gStringVar4, sData->trainerCard.caughtMonsCount, STR_CONV_MODE_LEFT_ALIGN, 3), gText_EmptyString6); + StringCopy(ConvertIntToDecimalStringN(gStringVar4, sData->trainerCard.caughtMonsCount, STR_CONV_MODE_LEFT_ALIGN, 4), gText_EmptyString6); if (!sData->isHoenn) { xOffset = GetStringRightAlignXOffset(FONT_NORMAL, gStringVar4, 144); diff --git a/src/trainer_hill.c b/src/trainer_hill.c index 419133e28e..98f5578e30 100644 --- a/src/trainer_hill.c +++ b/src/trainer_hill.c @@ -571,7 +571,7 @@ static void IsTrainerHillChallengeActive(void) gSpecialVar_Result = TRUE; } -static void TrainerHillDummy_Unused(void) +static void UNUSED TrainerHillDummy_Unused(void) { } @@ -650,7 +650,7 @@ void LoadTrainerHillObjectEventTemplates(void) eventTemplates[i].localId = i + 1; eventTemplates[i].graphicsId = FacilityClassToGraphicsId(sHillData->floors[floorId].trainers[i].facilityClass); eventTemplates[i].x = sHillData->floors[floorId].map.trainerCoords[i] & 0xF; - eventTemplates[i].y = ((sHillData->floors[floorId].map.trainerCoords[i] >> 4) & 0xF) + 5; + eventTemplates[i].y = ((sHillData->floors[floorId].map.trainerCoords[i] >> 4) & 0xF) + HILL_FLOOR_HEIGHT_MARGIN; bits = i << 2; eventTemplates[i].movementType = ((sHillData->floors[floorId].map.trainerDirections >> bits) & 0xF) + MOVEMENT_TYPE_FACE_UP; eventTemplates[i].trainerRange_berryTreeId = (sHillData->floors[floorId].map.trainerRanges >> bits) & 0xF; @@ -769,8 +769,7 @@ u8 GetCurrentTrainerHillMapId(void) return mapId; } -// Unused -static bool32 OnTrainerHillRoof(void) +static bool32 UNUSED OnTrainerHillRoof(void) { bool32 onRoof; diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c index 14849c19e5..8b7d1bbdea 100644 --- a/src/trainer_pokemon_sprites.c +++ b/src/trainer_pokemon_sprites.c @@ -61,21 +61,14 @@ static bool16 DecompressPic(u16 species, u32 personality, bool8 isFrontPic, u8 * { if (!isTrainer) { - if (isFrontPic) - { - LoadSpecialPokePic(dest, species, personality, isFrontPic); - } - else - { - LoadSpecialPokePic(dest, species, personality, isFrontPic); - } + LoadSpecialPokePic(dest, species, personality, isFrontPic); } else { if (isFrontPic) - DecompressPicFromTable(&gTrainerFrontPicTable[species], dest, species); + DecompressPicFromTable(&gTrainerFrontPicTable[species], dest); else - DecompressPicFromTable(&gTrainerBackPicTable[species], dest, species); + DecompressPicFromTable(&gTrainerBackPicTable[species], dest); } return FALSE; } @@ -92,7 +85,7 @@ static void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8 else { sCreatingSpriteTemplate.paletteTag = paletteTag; - LoadCompressedSpritePalette(GetMonSpritePalStructFromOtIdPersonality(species, otId, personality)); + LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), species); } } else @@ -188,6 +181,7 @@ u16 CreateMonPicSprite_Affine(u16 species, u32 otId, u32 personality, u8 flags, u8 i; u8 spriteId; u8 type; + species = SanitizeSpeciesId(species); for (i = 0; i < PICS_COUNT; i++) { @@ -227,7 +221,7 @@ u16 CreateMonPicSprite_Affine(u16 species, u32 otId, u32 personality, u8 flags, images[j].size = MON_PIC_SIZE; } sCreatingSpriteTemplate.tileTag = TAG_NONE; - sCreatingSpriteTemplate.anims = gMonFrontAnimsPtrTable[species]; + sCreatingSpriteTemplate.anims = gSpeciesInfo[species].frontAnimFrames; sCreatingSpriteTemplate.images = images; if (type == MON_PIC_AFFINE_FRONT) { @@ -316,8 +310,7 @@ u16 FreeAndDestroyMonPicSprite(u16 spriteId) return FreeAndDestroyPicSpriteInternal(spriteId); } -// Unused -static u16 LoadMonPicInWindow(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId) +static u16 UNUSED LoadMonPicInWindow(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId) { return LoadPicSpriteInWindow(species, otId, personality, isFrontPic, paletteSlot, windowId, FALSE); } @@ -338,8 +331,7 @@ u16 FreeAndDestroyTrainerPicSprite(u16 spriteId) return FreeAndDestroyPicSpriteInternal(spriteId); } -// Unused -static u16 LoadTrainerPicInWindow(u16 species, bool8 isFrontPic, u8 paletteSlot, u8 windowId) +static u16 UNUSED LoadTrainerPicInWindow(u16 species, bool8 isFrontPic, u8 paletteSlot, u8 windowId) { return LoadPicSpriteInWindow(species, 0, 0, isFrontPic, paletteSlot, windowId, TRUE); } diff --git a/src/trainer_see.c b/src/trainer_see.c index 6e1d41055c..ee10747cdf 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -62,6 +62,8 @@ EWRAM_DATA u8 gApproachingTrainerId = 0; static const u8 sEmotion_ExclamationMarkGfx[] = INCBIN_U8("graphics/field_effects/pics/emotion_exclamation.4bpp"); static const u8 sEmotion_QuestionMarkGfx[] = INCBIN_U8("graphics/field_effects/pics/emotion_question.4bpp"); static const u8 sEmotion_HeartGfx[] = INCBIN_U8("graphics/field_effects/pics/emotion_heart.4bpp"); +static const u8 sEmotion_DoubleExclamationMarkGfx[] = INCBIN_U8("graphics/field_effects/pics/emotion_double_exclamation.4bpp"); +static const u8 sEmotion_XGfx[] = INCBIN_U8("graphics/field_effects/pics/emote_x.4bpp"); static u8 (*const sDirectionalApproachDistanceFuncs[])(struct ObjectEvent *trainerObj, s16 range, s16 x, s16 y) = { @@ -136,6 +138,14 @@ static const struct SpriteFrameImage sSpriteImageTable_ExclamationQuestionMark[] { .data = sEmotion_QuestionMarkGfx, .size = sizeof(sEmotion_QuestionMarkGfx) + }, + { + .data = sEmotion_DoubleExclamationMarkGfx, + .size = sizeof(sEmotion_DoubleExclamationMarkGfx) + }, + { + .data = sEmotion_XGfx, + .size = sizeof(sEmotion_XGfx) } }; @@ -159,10 +169,25 @@ static const union AnimCmd sSpriteAnim_Icons2[] = ANIMCMD_END }; + +static const union AnimCmd sSpriteAnim_Icons3[] = +{ + ANIMCMD_FRAME(2, 60), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_Icons4[] = +{ + ANIMCMD_FRAME(3, 60), + ANIMCMD_END +}; + static const union AnimCmd *const sSpriteAnimTable_Icons[] = { sSpriteAnim_Icons1, - sSpriteAnim_Icons2 + sSpriteAnim_Icons2, + sSpriteAnim_Icons3, + sSpriteAnim_Icons4 }; static const struct SpriteTemplate sSpriteTemplate_ExclamationQuestionMark = @@ -630,7 +655,7 @@ static void Task_SetBuriedTrainerMovement(u8 taskId) struct Task *task = &gTasks[taskId]; struct ObjectEvent *objEvent; - LoadWordFromTwoHalfwords(&task->tObjEvent, (u32 *)&objEvent); + LoadWordFromTwoHalfwords((u16*) &task->tObjEvent, (u32 *)&objEvent); if (!task->data[7]) { ObjectEventClearHeldMovement(objEvent); @@ -652,7 +677,7 @@ static void Task_SetBuriedTrainerMovement(u8 taskId) // Called when a buried Trainer has the reveal_trainer movement applied, from direct interaction void SetBuriedTrainerMovement(struct ObjectEvent *objEvent) { - StoreWordInTwoHalfwords(&gTasks[CreateTask(Task_SetBuriedTrainerMovement, 0)].tObjEvent, (u32)objEvent); + StoreWordInTwoHalfwords((u16*) &gTasks[CreateTask(Task_SetBuriedTrainerMovement, 0)].tObjEvent, (u32)objEvent); } void DoTrainerApproach(void) @@ -731,6 +756,27 @@ u8 FldEff_HeartIcon(void) return 0; } + +u8 FldEff_DoubleExclMarkIcon(void) +{ + u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x53); + + if (spriteId != MAX_SPRITES) + SetIconSpriteData(&gSprites[spriteId], FLDEFF_EXCLAMATION_MARK_ICON, 2); + + return 0; +} + +u8 FldEff_XIcon(void) +{ + u8 spriteId = CreateSpriteAtEnd(&sSpriteTemplate_ExclamationQuestionMark, 0, 0, 0x53); + + if (spriteId != MAX_SPRITES) + SetIconSpriteData(&gSprites[spriteId], FLDEFF_EXCLAMATION_MARK_ICON, 3); + + return 0; +} + static void SetIconSpriteData(struct Sprite *sprite, u16 fldEffId, u8 spriteAnimNum) { sprite->oam.priority = 1; diff --git a/src/tv.c b/src/tv.c index c96703848b..306d0fc9e3 100644 --- a/src/tv.c +++ b/src/tv.c @@ -107,28 +107,27 @@ static bool8 IsAddingPokeNewsDisallowed(u8); static void ClearPokeNewsBySlot(u8); static void TranslateRubyShows(TVShow *); static void TranslateJapaneseEmeraldShows(TVShow *); -static void SetMixedTVShows(TVShow *, TVShow *, TVShow *, TVShow *); +static void SetMixedTVShows(TVShow[TV_SHOWS_COUNT], TVShow[TV_SHOWS_COUNT], TVShow[TV_SHOWS_COUNT], TVShow[TV_SHOWS_COUNT]); static void DeleteExcessMixedShows(void); static void DeactivateShowsWithUnseenSpecies(void); static void DeactivateGameCompleteShowsIfNotUnlocked(void); static s8 FindInactiveShowInArray(TVShow *); -static bool8 TryMixTVShow(TVShow *[], TVShow *[], u8); +static bool8 TryMixTVShow(TVShow *[TV_SHOWS_COUNT], TVShow *[TV_SHOWS_COUNT], u8); static bool8 TryMixNormalTVShow(TVShow *, TVShow *, u8); static bool8 TryMixRecordMixTVShow(TVShow *, TVShow *, u8); static bool8 TryMixOutbreakTVShow(TVShow *, TVShow *, u8); static void DeactivateShow(u8 showIdx); static void DeactivateShowIfNotSeenSpecies(u16, u8); -static void SetMixedPokeNews(PokeNews *, PokeNews *, PokeNews *, PokeNews *); +static void SetMixedPokeNews(PokeNews[POKE_NEWS_COUNT], PokeNews[POKE_NEWS_COUNT], PokeNews[POKE_NEWS_COUNT], PokeNews[POKE_NEWS_COUNT]); static void ClearInvalidPokeNews(void); static void ClearPokeNewsIfGameNotComplete(void); static s8 GetPokeNewsSlotIfActive(PokeNews *, u8); -static void InitTryMixPokeNewsShow(PokeNews *[], PokeNews *[]); +static void InitTryMixPokeNewsShow(PokeNews *[POKE_NEWS_COUNT], PokeNews *[POKE_NEWS_COUNT]); static bool8 TryMixPokeNewsShow(PokeNews *, PokeNews *, s8); static void TVShowDone(void); static void InterviewAfter_FanClubLetter(void); static void InterviewAfter_RecentHappenings(void); static void InterviewAfter_PkmnFanClubOpinions(void); -static void InterviewAfter_Dummy(void); static void InterviewAfter_BravoTrainerPokemonProfile(void); static void InterviewAfter_BravoTrainerBattleTowerProfile(void); static void InterviewAfter_ContestLiveUpdates(void); @@ -1078,7 +1077,6 @@ void InterviewAfter(void) InterviewAfter_PkmnFanClubOpinions(); break; case TVSHOW_DUMMY: - InterviewAfter_Dummy(); break; case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: InterviewAfter_BravoTrainerPokemonProfile(); @@ -1620,11 +1618,6 @@ static void InterviewAfter_PkmnFanClubOpinions(void) show->fanclubOpinions.pokemonNameLanguage = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_LANGUAGE); } -static void InterviewAfter_Dummy(void) -{ - TVShow *show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot]; -} - static void TryStartRandomMassOutbreak(void) { u8 i; @@ -3939,8 +3932,7 @@ else \ (langptr) = langfix; \ } -// Unused -static void TranslateShowNames(TVShow *show, u32 language) +static void UNUSED TranslateShowNames(TVShow *show, u32 language) { int i; TVShow **shows; diff --git a/src/union_room.c b/src/union_room.c index 0d33a35212..51f96c8adc 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -203,7 +203,6 @@ static EWRAM_DATA union struct WirelessLink_Group *group; struct WirelessLink_URoom *uRoom; } sWirelessLinkMain = {}; -static EWRAM_DATA u32 sUnused = 0; EWRAM_DATA struct RfuGameCompatibilityData gRfuPartnerCompatibilityData = {}; EWRAM_DATA u16 gUnionRoomOfferedSpecies = 0; EWRAM_DATA u8 gUnionRoomRequestedMonType = 0; @@ -1043,8 +1042,8 @@ static void Task_TryJoinLinkGroup(u8 taskId) id = ListMenu_ProcessInput(data->listTaskId); if (JOY_NEW(A_BUTTON) && id != LIST_NOTHING_CHOSEN) { - // this unused variable along with the assignment is needed to match - u32 activity = data->playerList->players[id].rfu.data.activity; + // Needed to match + u32 UNUSED activity = data->playerList->players[id].rfu.data.activity; if (data->playerList->players[id].groupScheduledAnim == UNION_ROOM_SPAWN_IN && !data->playerList->players[id].rfu.data.startedActivity) { @@ -2149,8 +2148,8 @@ static void Task_CardOrNewsWithFriend(u8 taskId) id = ListMenu_ProcessInput(data->listTaskId); if (JOY_NEW(A_BUTTON) && id != LIST_NOTHING_CHOSEN) { - // this unused variable along with the assignment is needed to match - u32 activity = data->playerList->players[id].rfu.data.activity; + // Needed to match + u32 UNUSED activity = data->playerList->players[id].rfu.data.activity; if (data->playerList->players[id].groupScheduledAnim == UNION_ROOM_SPAWN_IN && !data->playerList->players[id].rfu.data.startedActivity) { @@ -4066,7 +4065,7 @@ static s32 UnionRoomGetPlayerInteractionResponse(struct RfuPlayerList *list, boo CopyAndTranslatePlayerName(gStringVar1, player); if (overrideGender) { - playerGender = (player->rfu.data.compatibility.playerTrainerId[overrideGender + 1] >> 3) & 1; + playerGender = (player->rfu.data.compatibility.playerTrainerId[overrideGender - 1] >> 3) & 1; } switch (player->rfu.data.activity & 0x3F) { diff --git a/src/union_room_chat.c b/src/union_room_chat.c index dabb494229..c54d49db94 100644 --- a/src/union_room_chat.c +++ b/src/union_room_chat.c @@ -744,11 +744,11 @@ static const struct MessageWindowInfo sDisplayStdMessages[] = { static const u8 sText_Ellipsis[] = _("…"); static const struct MenuAction sKeyboardPageTitleTexts[UNION_ROOM_KB_PAGE_COUNT + 1] = { - [UNION_ROOM_KB_PAGE_UPPER] = {gText_Upper, NULL}, - [UNION_ROOM_KB_PAGE_LOWER] = {gText_Lower, NULL}, - [UNION_ROOM_KB_PAGE_EMOJI] = {gText_Symbols, NULL}, - [UNION_ROOM_KB_PAGE_REGISTER] = {gText_Register2, NULL}, - [UNION_ROOM_KB_PAGE_COUNT] = {gText_Exit2, NULL}, + [UNION_ROOM_KB_PAGE_UPPER] = {gText_Upper, {NULL}}, + [UNION_ROOM_KB_PAGE_LOWER] = {gText_Lower, {NULL}}, + [UNION_ROOM_KB_PAGE_EMOJI] = {gText_Symbols, {NULL}}, + [UNION_ROOM_KB_PAGE_REGISTER] = {gText_Register2, {NULL}}, + [UNION_ROOM_KB_PAGE_COUNT] = {gText_Exit2, {NULL}}, }; static const u16 sUnionRoomChatInterfacePal[] = INCBIN_U16("graphics/union_room_chat/interface.gbapal"); @@ -1953,7 +1953,7 @@ static u8 *GetLimitedMessageStartPtr(void) for (i = 0; i < numChars; i++) { if (*str == CHAR_EXTRA_SYMBOL) - *str++; + str++; str++; } @@ -3115,9 +3115,6 @@ static void DrawKeyboardWindow(void) static void LoadTextEntryWindow(void) { int i; - u8 unused[2]; - unused[0] = 0; - unused[1] = 0xFF; // Pointless, cleared below. The tiles are nonsense anyway, see LoadChatWindowGfx. for (i = 0; i < MAX_MESSAGE_LENGTH; i++) diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 06df5d0a33..2aefdedf38 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -1108,15 +1108,14 @@ static u8 GetSelectionIdFromPartyId(u8 partyId) return partyId - numEggs; } -// Unused -static u8 GetPartyIdFromSelectionId_(u8 selectionId) +static u8 UNUSED GetPartyIdFromSelectionId_(u8 selectionId) { return GetPartyIdFromSelectionId(selectionId); } static void LoadAndCreateUpDownSprites(void) { - u16 i, spriteId; + u16 i; LoadSpriteSheet(&sSpriteSheet_UpDown); LoadSpritePalette(&sSpritePalette_UpDown); @@ -1126,7 +1125,7 @@ static void LoadAndCreateUpDownSprites(void) { if (sInfo->enhancements[i] != 0) { - spriteId = CreateSprite(&sSpriteTemplate_UpDown, sUpDownCoordsOnGraph[i][0], sUpDownCoordsOnGraph[i][1], 0); + u16 spriteId = CreateSprite(&sSpriteTemplate_UpDown, sUpDownCoordsOnGraph[i][0], sUpDownCoordsOnGraph[i][1], 0); if (spriteId != MAX_SPRITES) { if (sInfo->enhancements[i] != 0) // Always true here @@ -1137,20 +1136,24 @@ static void LoadAndCreateUpDownSprites(void) } } +#define tTimer data[0] + static void SpriteCB_UpDown(struct Sprite *sprite) { - if (sprite->data[0] < 6) + if (sprite->tTimer < 6) sprite->y2 -= 2; - else if (sprite->data[0] < 12) + else if (sprite->tTimer < 12) sprite->y2 += 2; - if (++sprite->data[0] > 60) + if (++sprite->tTimer > 60) { DestroySprite(sprite); sInfo->numEnhancements--; } } +#undef tTimer + static void LoadPartyInfo(void) { u16 i; @@ -1612,12 +1615,15 @@ static void LoadConditionGfx(void) LoadSpritePalette(&spritePalette); } +#define sSpeed data[0] +#define sTargetX data[1] + static void CreateConditionSprite(void) { u16 i; s16 xDiff, xStart; int yStart = 17; - int var = 8; + int speed = 8; struct Sprite **sprites = sMenu->condition; const struct SpriteTemplate *template = &sSpriteTemplate_Condition; @@ -1626,9 +1632,9 @@ static void CreateConditionSprite(void) u8 spriteId = CreateSprite(template, i * xDiff + xStart, yStart, 0); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].data[0] = var; - gSprites[spriteId].data[1] = (i * xDiff) | 0x20; - gSprites[spriteId].data[2] = i; + gSprites[spriteId].sSpeed = speed; + gSprites[spriteId].sTargetX = (i * xDiff) | 0x20; + gSprites[spriteId].data[2] = i; // Unused StartSpriteAnim(&gSprites[spriteId], i); sprites[i] = &gSprites[spriteId]; } @@ -1657,11 +1663,15 @@ static void SpriteCB_Condition(struct Sprite *sprite) { s16 prevX = sprite->x; - sprite->x += sprite->data[0]; - if ((prevX <= sprite->data[1] && sprite->x >= sprite->data[1]) - || (prevX >= sprite->data[1] && sprite->x <= sprite->data[1])) + // Slide onscreen + sprite->x += sprite->sSpeed; + + // Check if target position has been reached/surpassed + if ((prevX <= sprite->sTargetX && sprite->x >= sprite->sTargetX) + || (prevX >= sprite->sTargetX && sprite->x <= sprite->sTargetX)) { - sprite->x = sprite->data[1]; + // End slide onscreen, become static sprite. + sprite->x = sprite->sTargetX; sprite->callback = SpriteCallbackDummy; } } diff --git a/src/util.c b/src/util.c index 09381fcaf3..77d9cde2f1 100644 --- a/src/util.c +++ b/src/util.c @@ -261,7 +261,7 @@ u32 CalcByteArraySum(const u8 *data, u32 length) return sum; } -void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor) +void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u32 blendColor) { u16 i; for (i = 0; i < numEntries; i++) diff --git a/src/vs_seeker.c b/src/vs_seeker.c new file mode 100644 index 0000000000..0b58b9bac3 --- /dev/null +++ b/src/vs_seeker.c @@ -0,0 +1,793 @@ +#include "global.h" +#include "task.h" +#include "event_object_movement.h" +#include "item_use.h" +#include "event_scripts.h" +#include "event_data.h" +#include "script.h" +#include "event_object_lock.h" +#include "field_specials.h" +#include "item.h" +#include "item_menu.h" +#include "field_effect.h" +#include "script_movement.h" +#include "battle.h" +#include "battle_setup.h" +#include "random.h" +#include "field_player_avatar.h" +#include "vs_seeker.h" +#include "menu.h" +#include "string_util.h" +#include "tv.h" +#include "malloc.h" +#include "field_screen_effect.h" +#include "gym_leader_rematch.h" +#include "sound.h" +#include "constants/event_object_movement.h" +#include "constants/event_objects.h" +#include "constants/items.h" +#include "constants/maps.h" +#include "constants/songs.h" +#include "constants/trainer_types.h" +#include "constants/field_effects.h" + +enum +{ + VSSEEKER_NOT_CHARGED, + VSSEEKER_NO_ONE_IN_RANGE, + VSSEEKER_CAN_USE, +}; + +typedef enum +{ + VSSEEKER_SINGLE_RESP_RAND, + VSSEEKER_SINGLE_RESP_NO, + VSSEEKER_SINGLE_RESP_YES +} VsSeekerSingleRespCode; + +typedef enum +{ + VSSEEKER_RESPONSE_NO_RESPONSE, + VSSEEKER_RESPONSE_UNFOUGHT_TRAINERS, + VSSEEKER_RESPONSE_FOUND_REMATCHES +} VsSeekerResponseCode; + +struct VsSeekerTrainerInfo +{ + const u8 *script; + u16 trainerIdx; + u8 localId; + u8 objectEventId; + s16 xCoord; + s16 yCoord; + u8 graphicsId; +}; + +struct VsSeekerStruct +{ + struct VsSeekerTrainerInfo trainerInfo[OBJECT_EVENTS_COUNT]; + u16 trainerIdxArray[OBJECT_EVENTS_COUNT]; + u8 runningBehaviourEtcArray[OBJECT_EVENTS_COUNT]; + u8 numRematchableTrainers; + u8 trainerHasNotYetBeenFought:1; + u8 trainerDoesNotWantRematch:1; + u8 trainerWantsRematch:1; + u8 responseCode:5; +}; + +// static declarations +static EWRAM_DATA struct VsSeekerStruct *sVsSeeker = NULL; + +static void VsSeekerResetInBagStepCounter(void); +static void VsSeekerResetChargingStepCounter(void); +static void Task_ResetObjectsRematchWantedState(u8 taskId); +static void ResetMovementOfRematchableTrainers(void); +static void Task_VsSeekerFrameCountdown(u8 taskId); +static void Task_VsSeeker_PlaySoundAndGetResponseCode(u8 taskId); +static void GatherNearbyTrainerInfo(void); +static void Task_VsSeeker_ShowResponseToPlayer(u8 taskId); +static bool8 CanUseVsSeeker(void); +static u8 GetVsSeekerResponseInArea(void); +static u8 GetResponseMovementTypeFromTrainerGraphicsId(u8 graphicsId); +static u16 GetTrainerFlagFromScript(const u8 * script); +static void ClearAllTrainerRematchStates(void); +static bool8 IsTrainerVisibleOnScreen(struct VsSeekerTrainerInfo * trainerInfo); +static u32 GetRematchableTrainerLocalId(void); +static void StartTrainerObjectMovementScript(struct VsSeekerTrainerInfo * trainerInfo, const u8 * script); +static u8 GetCurVsSeekerResponse(s32 vsSeekerIdx, u16 trainerIdx); +static void StartAllRespondantIdleMovements(void); +static bool8 ObjectEventIdIsSane(u8 objectEventId); +static u8 GetRandomFaceDirectionMovementType(); + +static const u8 sMovementScript_Wait48[] = { + MOVEMENT_ACTION_DELAY_16, + MOVEMENT_ACTION_DELAY_16, + MOVEMENT_ACTION_DELAY_16, + MOVEMENT_ACTION_STEP_END +}; + +static const u8 sMovementScript_TrainerUnfought[] = { + MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK, + MOVEMENT_ACTION_STEP_END +}; + +static const u8 sMovementScript_TrainerNoRematch[] = { + MOVEMENT_ACTION_EMOTE_X, + MOVEMENT_ACTION_STEP_END +}; + +static const u8 sMovementScript_TrainerRematch[] = { + MOVEMENT_ACTION_WALK_IN_PLACE_FASTER_DOWN, + MOVEMENT_ACTION_EMOTE_DOUBLE_EXCL_MARK, + MOVEMENT_ACTION_STEP_END +}; + +static const u8 sFaceDirectionMovementTypeByFacingDirection[] = { + MOVEMENT_TYPE_FACE_DOWN, + MOVEMENT_TYPE_FACE_DOWN, + MOVEMENT_TYPE_FACE_UP, + MOVEMENT_TYPE_FACE_LEFT, + MOVEMENT_TYPE_FACE_RIGHT +}; + +void VsSeekerFreezeObjectsAfterChargeComplete(void) +{ + CreateTask(Task_ResetObjectsRematchWantedState, 80); +} + +#define tIsPlayerFrozen data[0] +#define tAreObjectsFrozen data[1] + +static void Task_ResetObjectsRematchWantedState(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + u32 i; + + if ((!task->tIsPlayerFrozen) && IsPlayerStandingStill()) + { + PlayerFreeze(); + task->tIsPlayerFrozen = TRUE; + } + + if (!task->tAreObjectsFrozen) + { + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (!ObjectEventIdIsSane(i)) + continue; + + if (gObjectEvents[i].singleMovementActive) + return; + + FreezeObjectEvent(&gObjectEvents[i]); + } + } + + task->tAreObjectsFrozen = TRUE; + if (task->tIsPlayerFrozen) + { + DestroyTask(taskId); + StopPlayerAvatar(); + ScriptContext_Enable(); + } +} +#undef tIsPlayerFrozen +#undef tAreObjectsFrozen + +u16 VsSeekerConvertLocalIdToTableId(u16 localId) +{ + u32 localIdIndex = 0; + u32 trainerId = 0; + + for (localIdIndex = 0; localIdIndex < OBJECT_EVENTS_COUNT ; localIdIndex++) + { + if (sVsSeeker->trainerInfo[localIdIndex].localId == localId) + { + trainerId = sVsSeeker->trainerInfo[localIdIndex].trainerIdx; + return TrainerIdToRematchTableId(gRematchTable,trainerId); + } + } + return -1; +} + +void VsSeekerResetObjectMovementAfterChargeComplete(void) +{ + struct ObjectEventTemplate * templates = gSaveBlock1Ptr->objectEventTemplates; + u32 i; + u32 movementType; + u8 objEventId; + struct ObjectEvent * objectEvent; + + for (i = 0; i < gMapHeader.events->objectEventCount; i++) + { + if (templates[i].trainerType != TRAINER_TYPE_NORMAL + && templates[i].trainerType != TRAINER_TYPE_BURIED) + continue; + + if (templates[i].movementType != MOVEMENT_TYPE_ROTATE_CLOCKWISE) + continue; + + movementType = GetRandomFaceDirectionMovementType(); + TryGetObjectEventIdByLocalIdAndMap(templates[i].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objEventId); + objectEvent = &gObjectEvents[objEventId]; + + if (!ObjectEventIdIsSane(objEventId)) + continue; + + SetTrainerMovementType(objectEvent, movementType); + templates[i].movementType = movementType; + } +} + +bool8 UpdateVsSeekerStepCounter(void) +{ + u8 x = 0; + + if (!I_VS_SEEKER_CHARGING) return FALSE; + + if (CheckBagHasItem(ITEM_VS_SEEKER, 1)) + { + if ((gSaveBlock1Ptr->trainerRematchStepCounter & 0xFF) < VSSEEKER_RECHARGE_STEPS) + gSaveBlock1Ptr->trainerRematchStepCounter++; + } + + if (FlagGet(I_VS_SEEKER_CHARGING)) + { + if (((gSaveBlock1Ptr->trainerRematchStepCounter >> 8) & 0xFF) < VSSEEKER_RECHARGE_STEPS) + { + x = (((gSaveBlock1Ptr->trainerRematchStepCounter >> 8) & 0xFF) + 1); + gSaveBlock1Ptr->trainerRematchStepCounter = (gSaveBlock1Ptr->trainerRematchStepCounter & 0xFF) | (x << 8); + } + if (((gSaveBlock1Ptr->trainerRematchStepCounter >> 8) & 0xFF) == VSSEEKER_RECHARGE_STEPS) + { + FlagClear(I_VS_SEEKER_CHARGING); + VsSeekerResetChargingStepCounter(); + ClearAllTrainerRematchStates(); + return TRUE; + } + } + + return FALSE; +} + +void MapResetTrainerRematches(u16 mapGroup, u16 mapNum) +{ + if (!I_VS_SEEKER_CHARGING) return; + + FlagClear(I_VS_SEEKER_CHARGING); + VsSeekerResetChargingStepCounter(); + ClearAllTrainerRematchStates(); + ResetMovementOfRematchableTrainers(); +} + +static void ResetMovementOfRematchableTrainers(void) +{ + u32 i; + u8 movementType = 0; + + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + struct ObjectEvent * objectEvent = &gObjectEvents[i]; + if (objectEvent->movementType != MOVEMENT_TYPE_ROTATE_CLOCKWISE) + continue; + + movementType = GetRandomFaceDirectionMovementType(); + + if (!objectEvent->active || gSprites[objectEvent->spriteId].data[0] != i) + continue; + + gSprites[objectEvent->spriteId].x2 = 0; + gSprites[objectEvent->spriteId].y2 = 0; + SetTrainerMovementType(objectEvent, movementType); + } +} + +static void VsSeekerResetInBagStepCounter(void) +{ + gSaveBlock1Ptr->trainerRematchStepCounter &= 0xFF00; +} + +static void VsSeekerResetChargingStepCounter(void) +{ + gSaveBlock1Ptr->trainerRematchStepCounter &= 0x00FF; +} + +void Task_InitVsSeekerAndCheckForTrainersOnScreen(u8 taskId) +{ + u32 i; + u32 respval; + + if (!I_VS_SEEKER_CHARGING) return; + + for (i = 0; i < 16; i++) + gTasks[taskId].data[i] = 0; + + sVsSeeker = AllocZeroed(sizeof(struct VsSeekerStruct)); + GatherNearbyTrainerInfo(); + respval = CanUseVsSeeker(); + if (respval == VSSEEKER_NOT_CHARGED) + { + Free(sVsSeeker); + DisplayItemMessageOnField(taskId, VSSeeker_Text_BatteryNotChargedNeedXSteps, Task_ItemUse_CloseMessageBoxAndReturnToField_VsSeeker); + } + else if (respval == VSSEEKER_NO_ONE_IN_RANGE) + { + Free(sVsSeeker); + DisplayItemMessageOnField(taskId, VSSeeker_Text_NoTrainersWithinRange, Task_ItemUse_CloseMessageBoxAndReturnToField_VsSeeker); + } + else if (respval == VSSEEKER_CAN_USE) + { + FieldEffectStart(FLDEFF_USE_VS_SEEKER); + gTasks[taskId].func = Task_VsSeekerFrameCountdown; + gTasks[taskId].data[0] = 15; + } +} + +static void Task_VsSeekerFrameCountdown(u8 taskId) +{ + if (--gTasks[taskId].data[0] == 0) + { + gTasks[taskId].func = Task_VsSeeker_PlaySoundAndGetResponseCode; + gTasks[taskId].data[1] = 16; + } +} + +static void Task_VsSeeker_PlaySoundAndGetResponseCode(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (data[2] != 2 && --data[1] == 0) + { + PlaySE(SE_CONTEST_MONS_TURN); + data[1] = 11; + data[2]++; + } + + if (!FieldEffectActiveListContains(FLDEFF_USE_VS_SEEKER)) + { + data[1] = 0; + data[2] = 0; + VsSeekerResetInBagStepCounter(); + sVsSeeker->responseCode = GetVsSeekerResponseInArea(); + ScriptMovement_StartObjectMovementScript(0xFF, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, sMovementScript_Wait48); + gTasks[taskId].func = Task_VsSeeker_ShowResponseToPlayer; + } +} + +static void GatherNearbyTrainerInfo(void) +{ + struct ObjectEventTemplate *templates = gSaveBlock1Ptr->objectEventTemplates; + u8 objectEventId = 0; + u8 vsSeekerObjectIdx = 0; + s32 objectEventIdx; + + for (objectEventIdx = 0; objectEventIdx < gMapHeader.events->objectEventCount; objectEventIdx++) + { + if (templates[objectEventIdx].trainerType != TRAINER_TYPE_NORMAL && templates[objectEventIdx].trainerType != TRAINER_TYPE_BURIED) + continue; + + sVsSeeker->trainerInfo[vsSeekerObjectIdx].script = templates[objectEventIdx].script; + sVsSeeker->trainerInfo[vsSeekerObjectIdx].trainerIdx = GetTrainerFlagFromScript(templates[objectEventIdx].script); + sVsSeeker->trainerInfo[vsSeekerObjectIdx].localId = templates[objectEventIdx].localId; + TryGetObjectEventIdByLocalIdAndMap(templates[objectEventIdx].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId); + sVsSeeker->trainerInfo[vsSeekerObjectIdx].objectEventId = objectEventId; + sVsSeeker->trainerInfo[vsSeekerObjectIdx].xCoord = gObjectEvents[objectEventId].currentCoords.x - 7; + sVsSeeker->trainerInfo[vsSeekerObjectIdx].yCoord = gObjectEvents[objectEventId].currentCoords.y - 7; + sVsSeeker->trainerInfo[vsSeekerObjectIdx].graphicsId = templates[objectEventIdx].graphicsId; + vsSeekerObjectIdx++; + } + sVsSeeker->trainerInfo[vsSeekerObjectIdx].localId = 0xFF; +} + +static void Task_VsSeeker_ShowResponseToPlayer(u8 taskId) +{ + if (!ScriptMovement_IsObjectMovementFinished(0xFF, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup)) + return; + + if (sVsSeeker->responseCode == VSSEEKER_RESPONSE_NO_RESPONSE) + { + DisplayItemMessageOnField(taskId, VSSeeker_Text_TrainersNotReady, Task_ItemUse_CloseMessageBoxAndReturnToField_VsSeeker); + } + else + { + if (sVsSeeker->responseCode == VSSEEKER_RESPONSE_FOUND_REMATCHES) + StartAllRespondantIdleMovements(); + + ClearDialogWindowAndFrame(0, TRUE); + ScriptUnfreezeObjectEvents(); + UnlockPlayerFieldControls(); + DestroyTask(taskId); + } + Free(sVsSeeker); +} + +static u8 CanUseVsSeeker(void) +{ + u8 vsSeekerChargeSteps = gSaveBlock1Ptr->trainerRematchStepCounter; + + if ((vsSeekerChargeSteps == VSSEEKER_RECHARGE_STEPS) && (GetRematchableTrainerLocalId() == 0xFF)) + return VSSEEKER_NO_ONE_IN_RANGE; + + if (vsSeekerChargeSteps == VSSEEKER_RECHARGE_STEPS) + return VSSEEKER_CAN_USE; + + ConvertIntToDecimalStringN(gStringVar1, (VSSEEKER_RECHARGE_STEPS - vsSeekerChargeSteps), STR_CONV_MODE_LEFT_ALIGN, 3); + return VSSEEKER_NOT_CHARGED; +} + +static u8 GetVsSeekerResponseInArea(void) +{ + u16 trainerIdx = 0; + u8 response = 0, rematchTrainerIdx; + s32 vsSeekerIdx = 0, randomValue = 0; + + while (sVsSeeker->trainerInfo[vsSeekerIdx].localId != 0xFF) + { + if (!IsTrainerVisibleOnScreen(&sVsSeeker->trainerInfo[vsSeekerIdx])) + { + vsSeekerIdx++; + continue; + } + + trainerIdx = sVsSeeker->trainerInfo[vsSeekerIdx].trainerIdx; + if (!HasTrainerBeenFought(trainerIdx)) + { + StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], sMovementScript_TrainerUnfought); + sVsSeeker->trainerHasNotYetBeenFought = 1; + vsSeekerIdx++; + continue; + } + + rematchTrainerIdx = GetRematchTrainerIdFromTable(gRematchTable, trainerIdx); + if (rematchTrainerIdx == 0) + { + StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], sMovementScript_TrainerNoRematch); + sVsSeeker->trainerDoesNotWantRematch = 1; + } + else + { + randomValue = Random() % 100; // Even if it's overwritten below, it progresses the RNG. + response = GetCurVsSeekerResponse(vsSeekerIdx, trainerIdx); + + if (response == VSSEEKER_SINGLE_RESP_YES) + { + randomValue = 100; // Definitely yes + } + else if (response == VSSEEKER_SINGLE_RESP_NO) + { + randomValue = 0; // Definitely no + } + else if (randomValue < 30) + { + StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], sMovementScript_TrainerNoRematch); + sVsSeeker->trainerDoesNotWantRematch = 1; + } + else + { + gSaveBlock1Ptr->trainerRematches[VsSeekerConvertLocalIdToTableId(sVsSeeker->trainerInfo[vsSeekerIdx].localId)] = rematchTrainerIdx; + ShiftStillObjectEventCoords(&gObjectEvents[sVsSeeker->trainerInfo[vsSeekerIdx].objectEventId]); + StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], sMovementScript_TrainerRematch); + sVsSeeker->trainerIdxArray[sVsSeeker->numRematchableTrainers] = trainerIdx; + sVsSeeker->runningBehaviourEtcArray[sVsSeeker->numRematchableTrainers] = GetResponseMovementTypeFromTrainerGraphicsId(sVsSeeker->trainerInfo[vsSeekerIdx].graphicsId); + sVsSeeker->numRematchableTrainers++; + sVsSeeker->trainerWantsRematch = 1; + } + } + vsSeekerIdx++; + } + + if (sVsSeeker->trainerWantsRematch) + { + PlaySE(SE_PIN); + FlagSet(I_VS_SEEKER_CHARGING); + VsSeekerResetChargingStepCounter(); + return VSSEEKER_RESPONSE_FOUND_REMATCHES; + } + + if (sVsSeeker->trainerHasNotYetBeenFought) + return VSSEEKER_RESPONSE_UNFOUGHT_TRAINERS; + + return VSSEEKER_RESPONSE_NO_RESPONSE; +} + +void ClearRematchMovementByTrainerId(void) +{ + s32 i; + u8 objEventId = 0; + struct ObjectEventTemplate *objectEventTemplates = gSaveBlock1Ptr->objectEventTemplates; + struct ObjectEvent *objectEvent; + + int vsSeekerDataIdx = TrainerIdToRematchTableId(gRematchTable, gTrainerBattleOpponent_A); + + if (!I_VS_SEEKER_CHARGING) return; + + if (vsSeekerDataIdx == -1) + return; + + for (i = 0; i < gMapHeader.events->objectEventCount; i++) + { + if ((objectEventTemplates[i].trainerType != TRAINER_TYPE_NORMAL + && objectEventTemplates[i].trainerType != TRAINER_TYPE_BURIED) + || vsSeekerDataIdx != TrainerIdToRematchTableId(gRematchTable, GetTrainerFlagFromScript(objectEventTemplates[i].script))) + continue; + + TryGetObjectEventIdByLocalIdAndMap(objectEventTemplates[i].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objEventId); + objectEvent = &gObjectEvents[objEventId]; + GetRandomFaceDirectionMovementType(&objectEventTemplates[i]); + TryOverrideTemplateCoordsForObjectEvent(objectEvent, sFaceDirectionMovementTypeByFacingDirection[objectEvent->facingDirection]); + + if (gSelectedObjectEvent == objEventId) + objectEvent->movementType = sFaceDirectionMovementTypeByFacingDirection[objectEvent->facingDirection]; + else + objectEvent->movementType = MOVEMENT_TYPE_FACE_DOWN; + } +} + +static u32 GetGameProgressFlags() +{ + const u32 gameProgressFlags[] = { + FLAG_VISITED_LAVARIDGE_TOWN, + FLAG_VISITED_FORTREE_CITY, + FLAG_SYS_GAME_CLEAR, + FLAG_DEFEATED_METEOR_FALLS_STEVEN + }; + u32 i = 0, numGameProgressFlags = 0; + u32 maxGameProgressFlags = ARRAY_COUNT(gameProgressFlags); + + for (i = 0; i < maxGameProgressFlags; i++) + { + if (FlagGet(gameProgressFlags[i])) + numGameProgressFlags++; + } + + return numGameProgressFlags; +} + +u16 GetRematchTrainerIdVSSeeker(u16 trainerId) +{ + u32 tableId = FirstBattleTrainerIdToRematchTableId(gRematchTable, trainerId); + u32 rematchTrainerIdx = GetGameProgressFlags(); + + if (!I_VS_SEEKER_CHARGING) return 0; + + while (!HasTrainerBeenFought(gRematchTable[tableId].trainerIds[rematchTrainerIdx-1])) + { + if (rematchTrainerIdx== 0) + break; + + rematchTrainerIdx--; + } + + return gRematchTable[tableId].trainerIds[rematchTrainerIdx]; +} + +static bool8 ObjectEventIdIsSane(u8 objectEventId) +{ + struct ObjectEvent *objectEvent = &gObjectEvents[objectEventId]; + + if (objectEvent->active && gMapHeader.events->objectEventCount >= objectEvent->localId && gSprites[objectEvent->spriteId].data[0] == objectEventId) + return TRUE; + return FALSE; +} + +static u8 GetRandomFaceDirectionMovementType() +{ + u16 randomFacingDirection = Random() % 4; + + switch (randomFacingDirection) + { + case 0: + return MOVEMENT_TYPE_FACE_UP; + case 1: + return MOVEMENT_TYPE_FACE_DOWN; + case 2: + return MOVEMENT_TYPE_FACE_LEFT; + case 3: + return MOVEMENT_TYPE_FACE_RIGHT; + default: + return MOVEMENT_TYPE_FACE_DOWN; + } +} + +static bool32 IsRegularLandTrainer(u8 graphicsId) +{ + u32 i; + u16 regularTrainersOnLand[] = + { + OBJ_EVENT_GFX_AQUA_MEMBER_F, + OBJ_EVENT_GFX_AQUA_MEMBER_M, + OBJ_EVENT_GFX_BEAUTY, + OBJ_EVENT_GFX_BLACK_BELT, + OBJ_EVENT_GFX_BOY_1, + OBJ_EVENT_GFX_BOY_2, + OBJ_EVENT_GFX_BOY_3, + OBJ_EVENT_GFX_BUG_CATCHER, + OBJ_EVENT_GFX_CAMPER, + OBJ_EVENT_GFX_CYCLING_TRIATHLETE_F, + OBJ_EVENT_GFX_CYCLING_TRIATHLETE_M, + OBJ_EVENT_GFX_EXPERT_F, + OBJ_EVENT_GFX_EXPERT_M, + OBJ_EVENT_GFX_FAT_MAN, + OBJ_EVENT_GFX_FISHERMAN, + OBJ_EVENT_GFX_GENTLEMAN, + OBJ_EVENT_GFX_GIRL_1, + OBJ_EVENT_GFX_GIRL_2, + OBJ_EVENT_GFX_GIRL_3, + OBJ_EVENT_GFX_HEX_MANIAC, + OBJ_EVENT_GFX_HIKER, + OBJ_EVENT_GFX_LASS, + OBJ_EVENT_GFX_LITTLE_BOY, + OBJ_EVENT_GFX_LITTLE_GIRL, + OBJ_EVENT_GFX_MAGMA_MEMBER_F, + OBJ_EVENT_GFX_MAGMA_MEMBER_M, + OBJ_EVENT_GFX_MAN_3, + OBJ_EVENT_GFX_MAN_4, + OBJ_EVENT_GFX_MAN_5, + OBJ_EVENT_GFX_MANIAC, + OBJ_EVENT_GFX_NINJA_BOY, + OBJ_EVENT_GFX_PICNICKER, + OBJ_EVENT_GFX_POKEFAN_F, + OBJ_EVENT_GFX_POKEFAN_M, + OBJ_EVENT_GFX_PSYCHIC_M, + OBJ_EVENT_GFX_RICH_BOY, + OBJ_EVENT_GFX_RUNNING_TRIATHLETE_F, + OBJ_EVENT_GFX_RUNNING_TRIATHLETE_M, + OBJ_EVENT_GFX_SAILOR, + OBJ_EVENT_GFX_SCHOOL_KID_M, + OBJ_EVENT_GFX_TUBER_F, + OBJ_EVENT_GFX_TUBER_M, + OBJ_EVENT_GFX_TWIN, + OBJ_EVENT_GFX_WOMAN_1, + OBJ_EVENT_GFX_WOMAN_2, + OBJ_EVENT_GFX_WOMAN_4, + OBJ_EVENT_GFX_WOMAN_5, + OBJ_EVENT_GFX_YOUNGSTER + }; + + for (i = 0; i < ARRAY_COUNT(regularTrainersOnLand); i++) + { + if (graphicsId == regularTrainersOnLand[i]) + return TRUE; + } + return FALSE; +} + +static bool32 IsRegularWaterTrainer(u8 graphicsId) +{ + u32 i; + u16 regularTrainersInWater[] = + { + OBJ_EVENT_GFX_SWIMMER_F, + OBJ_EVENT_GFX_SWIMMER_M, + OBJ_EVENT_GFX_TUBER_M_SWIMMING + }; + + for (i = 0; i < ARRAY_COUNT(regularTrainersInWater); i++) + { + if (graphicsId == regularTrainersInWater[i]) + return TRUE; + } + return FALSE; +} + +static u8 GetResponseMovementTypeFromTrainerGraphicsId(u8 graphicsId) +{ + if (IsRegularLandTrainer(graphicsId) || IsRegularWaterTrainer(graphicsId)) + return MOVEMENT_TYPE_ROTATE_CLOCKWISE; + + return MOVEMENT_TYPE_FACE_DOWN; +} + +static u16 GetTrainerFlagFromScript(const u8 *script) + /* + * The trainer flag is a little-endian short located +2 from + * the script pointer, assuming the trainerbattle command is + * first in the script. Because scripts are unaligned, and + * because the ARM processor requires shorts to be 16-bit + * aligned, this function needs to perform explicit bitwise + * operations to get the correct flag. + * + * 5c XX YY ZZ ... + * -- -- + */ +{ + u16 trainerFlag; + + script += 2; + trainerFlag = script[0]; + trainerFlag |= script[1] << 8; + return trainerFlag; +} + +static void ClearAllTrainerRematchStates(void) +{ + u32 i; + + if (!CheckBagHasItem(ITEM_VS_SEEKER, 1)) + return; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->trainerRematches); i++) + gSaveBlock1Ptr->trainerRematches[i] = 0; +} + +static bool8 IsTrainerVisibleOnScreen(struct VsSeekerTrainerInfo * trainerInfo) +{ + s16 x; + s16 y; + + PlayerGetDestCoords(&x, &y); + x -= 7; + y -= 7; + + if ( x - 7 <= trainerInfo->xCoord + && x + 7 >= trainerInfo->xCoord + && y - 5 <= trainerInfo->yCoord + && y + 5 >= trainerInfo->yCoord + && ObjectEventIdIsSane(trainerInfo->objectEventId) == 1) + return TRUE; + return FALSE; +} + +static u32 GetRematchableTrainerLocalId(void) +{ + u32 i; + + for (i = 0; sVsSeeker->trainerInfo[i].localId != 0xFF; i++) + { + if (IsTrainerVisibleOnScreen(&sVsSeeker->trainerInfo[i]) == 1) + { + if (HasTrainerBeenFought(sVsSeeker->trainerInfo[i].trainerIdx) != 1 || GetRematchTrainerIdFromTable(gRematchTable, sVsSeeker->trainerInfo[i].trainerIdx)) + return sVsSeeker->trainerInfo[i].localId; + } + } + + return 0xFF; +} + +static void StartTrainerObjectMovementScript(struct VsSeekerTrainerInfo * trainerInfo, const u8 * script) +{ + UnfreezeObjectEvent(&gObjectEvents[trainerInfo->objectEventId]); + ScriptMovement_StartObjectMovementScript(trainerInfo->localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, script); +} + +static u8 GetCurVsSeekerResponse(s32 vsSeekerIdx, u16 trainerIdx) +{ + s32 i; + s32 j; + + for (i = 0; i < vsSeekerIdx; i++) + { + if (IsTrainerVisibleOnScreen(&sVsSeeker->trainerInfo[i]) != 1 || sVsSeeker->trainerInfo[i].trainerIdx != trainerIdx) + continue; + + for (j = 0; j < sVsSeeker->numRematchableTrainers; j++) + { + if (sVsSeeker->trainerIdxArray[j] == sVsSeeker->trainerInfo[i].trainerIdx) + return VSSEEKER_SINGLE_RESP_YES; + } + return VSSEEKER_SINGLE_RESP_NO; + } + return VSSEEKER_SINGLE_RESP_RAND; +} + +static void StartAllRespondantIdleMovements(void) +{ + s32 i; + s32 j; + + for (i = 0; i < sVsSeeker->numRematchableTrainers; i++) + { + for (j = 0; sVsSeeker->trainerInfo[j].localId != 0xFF; j++) + { + if (sVsSeeker->trainerInfo[j].trainerIdx == sVsSeeker->trainerIdxArray[i]) + { + struct ObjectEvent *objectEvent = &gObjectEvents[sVsSeeker->trainerInfo[j].objectEventId]; + + if (ObjectEventIdIsSane(sVsSeeker->trainerInfo[j].objectEventId) == 1) + SetTrainerMovementType(objectEvent, sVsSeeker->runningBehaviourEtcArray[i]); + TryOverrideTemplateCoordsForObjectEvent(objectEvent, sVsSeeker->runningBehaviourEtcArray[i]); + gSaveBlock1Ptr->trainerRematches[VsSeekerConvertLocalIdToTableId(sVsSeeker->trainerInfo[j].localId)] = GetRematchTrainerIdFromTable(gRematchTable, sVsSeeker->trainerInfo[j].trainerIdx); + } + } + } +} diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 6016e08e69..13b92136f8 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -24,8 +24,7 @@ #include "constants/layouts.h" #include "constants/weather.h" -extern const u8 EventScript_RepelWoreOff[]; -extern const u8 EventScript_LureWoreOff[]; +extern const u8 EventScript_SprayWoreOff[]; #define MAX_ENCOUNTER_RATE 2880 @@ -383,7 +382,7 @@ static u16 GetCurrentMapWildMonHeaderId(void) return HEADER_NONE; } -static u8 PickWildMonNature(void) +u8 PickWildMonNature(void) { u8 i; u8 j; @@ -416,12 +415,10 @@ static u8 PickWildMonNature(void) } } // check synchronize for a pokemon with the same ability - if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG) + if (OW_SYNCHRONIZE_NATURE < GEN_9 + && !GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG) && GetMonAbility(&gPlayerParty[0]) == ABILITY_SYNCHRONIZE - #if B_SYNCHRONIZE_NATURE <= GEN_7 - && (Random() % 2 == 0) - #endif - ) + && (OW_SYNCHRONIZE_NATURE == GEN_8 || Random() % 2 == 0)) { return GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY) % NUM_NATURES; } @@ -435,7 +432,7 @@ static void CreateWildMon(u16 species, u8 level) bool32 checkCuteCharm; ZeroEnemyPartyMons(); - checkCuteCharm = TRUE; + checkCuteCharm = OW_CUTE_CHARM < GEN_9; switch (gSpeciesInfo[species].genderRatio) { @@ -481,33 +478,33 @@ static bool8 TryGenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 ar switch (area) { case WILD_AREA_LAND: - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_MAGNET_PULL < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, LAND_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, LAND_WILD_COUNT)) + if (OW_STATIC < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, LAND_WILD_COUNT)) break; - if (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 (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 (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 (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 (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_MAGNET_PULL < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_STEEL, ABILITY_MAGNET_PULL, &wildMonIndex, WATER_WILD_COUNT)) break; - if (TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, WATER_WILD_COUNT)) + if (OW_STATIC < GEN_9 && TRY_GET_ABILITY_INFLUENCED_WILD_MON_INDEX(wildMonInfo->wildPokemon, TYPE_ELECTRIC, ABILITY_STATIC, &wildMonIndex, WATER_WILD_COUNT)) break; - if (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 (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 (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 (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(); @@ -588,7 +585,7 @@ static bool8 WildEncounterCheck(u32 encounterRate, bool8 ignoreAbility) encounterRate = encounterRate * 3 / 4; else if (ability == ABILITY_STENCH) encounterRate /= 2; - else if (ability == ABILITY_ILLUMINATE) + else if (ability == ABILITY_ILLUMINATE && OW_ILLUMINATE < GEN_9) encounterRate *= 2; else if (ability == ABILITY_WHITE_SMOKE) encounterRate /= 2; @@ -600,10 +597,10 @@ static bool8 WildEncounterCheck(u32 encounterRate, bool8 ignoreAbility) encounterRate /= 2; else if (ability == ABILITY_QUICK_FEET) encounterRate /= 2; - else if (ability == ABILITY_INFILTRATOR) + else if (ability == ABILITY_INFILTRATOR && OW_INFILTRATOR == GEN_8) encounterRate /= 2; else if (ability == ABILITY_NO_GUARD) - encounterRate = encounterRate * 3 / 2; + encounterRate *= 2; } if (encounterRate > MAX_ENCOUNTER_RATE) encounterRate = MAX_ENCOUNTER_RATE; @@ -970,7 +967,7 @@ bool8 UpdateRepelCounter(void) VarSet(VAR_REPEL_STEP_COUNT, steps); if (steps == 0) { - ScriptContext_SetupScript(EventScript_RepelWoreOff); + ScriptContext_SetupScript(EventScript_SprayWoreOff); return TRUE; } } @@ -979,7 +976,7 @@ bool8 UpdateRepelCounter(void) VarSet(VAR_REPEL_STEP_COUNT, steps | REPEL_LURE_MASK); if (steps == 0) { - ScriptContext_SetupScript(EventScript_LureWoreOff); + ScriptContext_SetupScript(EventScript_SprayWoreOff); return TRUE; } } @@ -1114,20 +1111,13 @@ static void ApplyCleanseTagEncounterRateMod(u32 *encRate) bool8 TryDoDoubleWildBattle(void) { -#if B_DOUBLE_WILD_REQUIRE_2_MONS == TRUE - if (GetSafariZoneFlag() || GetMonsStateToDoubles() != PLAYER_HAS_TWO_USABLE_MONS) -#else - if (GetSafariZoneFlag()) -#endif + if (GetSafariZoneFlag() + || (B_DOUBLE_WILD_REQUIRE_2_MONS == TRUE && GetMonsStateToDoubles() != PLAYER_HAS_TWO_USABLE_MONS)) return FALSE; -#if B_FLAG_FORCE_DOUBLE_WILD != 0 - else if (FlagGet(B_FLAG_FORCE_DOUBLE_WILD)) + else if (B_FLAG_FORCE_DOUBLE_WILD != 0 && FlagGet(B_FLAG_FORCE_DOUBLE_WILD)) return TRUE; -#endif -#if B_DOUBLE_WILD_CHANCE != 0 - else if ((Random() % 100) + 1 <= B_DOUBLE_WILD_CHANCE) + else if (B_DOUBLE_WILD_CHANCE != 0 && ((Random() % 100) + 1 <= B_DOUBLE_WILD_CHANCE)) return TRUE; -#endif return FALSE; } diff --git a/sym_ewram.txt b/sym_ewram.txt index 2d7a6e26ed..3123b3388a 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1,3 +1,4 @@ + .include "gflib/malloc.o" .include "src/decompress.o" .include "src/main.o" .include "gflib/window.o" @@ -150,3 +151,4 @@ .include "src/rayquaza_scene.o" .include "src/debug.o" .include "src/battle_controller_player.o" + .include "src/pokedex_plus_hgss.o" diff --git a/test/battle/ability/anger_shell.c b/test/battle/ability/anger_shell.c index 6b916e088f..4c78435674 100644 --- a/test/battle/ability/anger_shell.c +++ b/test/battle/ability/anger_shell.c @@ -10,11 +10,11 @@ SINGLE_BATTLE_TEST("Anger Shell activates only if the target had more than 50% o PARAMETRIZE { hp = 100; activates = FALSE; } PARAMETRIZE { hp = 50; activates = FALSE; } PARAMETRIZE { hp = 251; activates = TRUE; } - PARAMETRIZE { hp = 255; activates = TRUE; } + PARAMETRIZE { hp = 254; activates = TRUE; } GIVEN { ASSUME(gBattleMoves[MOVE_TACKLE].power != 0); - PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_ANGER_SHELL); MaxHP(maxHp); HP(hp); } + PLAYER(SPECIES_KLAWF) { Ability(ABILITY_ANGER_SHELL); MaxHP(maxHp); HP(hp); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_TACKLE); } diff --git a/test/battle/ability/bad_dreams.c b/test/battle/ability/bad_dreams.c index 42ac3f04a6..312b9dc695 100644 --- a/test/battle/ability/bad_dreams.c +++ b/test/battle/ability/bad_dreams.c @@ -1,11 +1,6 @@ #include "global.h" #include "test/battle.h" -ASSUMPTIONS -{ - ASSUME(P_GEN_4_POKEMON == TRUE); // Because only Darkrai can have this ability. -} - // Also checks that non-sleeping enemy is not affected. SINGLE_BATTLE_TEST("Bad Dreams causes the sleeping enemy Pokemon to lose 1/8 of hp") { diff --git a/test/battle/ability/battle_bond.c b/test/battle/ability/battle_bond.c index 36ce8990b1..77034f0e46 100644 --- a/test/battle/ability/battle_bond.c +++ b/test/battle/ability/battle_bond.c @@ -3,7 +3,6 @@ ASSUMPTIONS { - ASSUME(P_GEN_6_POKEMON == TRUE); ASSUME(gBattleMoves[MOVE_WATER_GUN].power != 0); } diff --git a/test/battle/ability/beast_boost.c b/test/battle/ability/beast_boost.c index da63bf9c4d..fde1683104 100644 --- a/test/battle/ability/beast_boost.c +++ b/test/battle/ability/beast_boost.c @@ -1,11 +1,6 @@ #include "global.h" #include "test/battle.h" -ASSUMPTIONS -{ - ASSUME(P_GEN_7_POKEMON == TRUE); // Because only Ultra Beasts have this ability -} - SINGLE_BATTLE_TEST("Beast Boost boosts the most proficient stat when knocking out a target") { u8 stats[] = {1, 1, 1, 1, 1}; diff --git a/test/battle/ability/dauntless_shield.c b/test/battle/ability/dauntless_shield.c new file mode 100644 index 0000000000..eb7b5c15cb --- /dev/null +++ b/test/battle/ability/dauntless_shield.c @@ -0,0 +1,47 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(B_PROTEAN_LIBERO == GEN_9); +} + +SINGLE_BATTLE_TEST("Dauntless Shield raises Attack by one stage") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_ZAMAZENTA) { Ability(ABILITY_DAUNTLESS_SHIELD); } + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_DAUNTLESS_SHIELD); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Zamazenta's Dauntless Shield raised its Defense!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 1); + } +} + +SINGLE_BATTLE_TEST("Dauntless Shield raises Attack by one stage only once per battle") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_ZAMAZENTA) { Ability(ABILITY_DAUNTLESS_SHIELD); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { SWITCH(opponent, 1); } + TURN { SWITCH(opponent, 0); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_DAUNTLESS_SHIELD); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Zamazenta's Dauntless Shield raised its Defense!"); + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_DAUNTLESS_SHIELD); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Zamazenta's Dauntless Shield raised its Defense!"); + } + } THEN { + EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE); + } +} diff --git a/test/battle/ability/earth_eater.c b/test/battle/ability/earth_eater.c index a0ba2b54dd..6bd42fdda6 100644 --- a/test/battle/ability/earth_eater.c +++ b/test/battle/ability/earth_eater.c @@ -5,14 +5,14 @@ SINGLE_BATTLE_TEST("Earth Eater heals 25% when hit by ground type moves") { GIVEN { ASSUME(gBattleMoves[MOVE_MUD_SLAP].type == TYPE_GROUND); - PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_EARTH_EATER); HP(1); MaxHP(100); } + PLAYER(SPECIES_ORTHWORM) { Ability(ABILITY_EARTH_EATER); HP(1); MaxHP(100); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_MUD_SLAP); } } SCENE { ABILITY_POPUP(player, ABILITY_EARTH_EATER); HP_BAR(player, damage: -25); - MESSAGE("Wobbuffet restored HP using its Earth Eater!"); + MESSAGE("Orthworm restored HP using its Earth Eater!"); } } @@ -20,12 +20,15 @@ SINGLE_BATTLE_TEST("Earth Eater does not activate if protected") { GIVEN { ASSUME(gBattleMoves[MOVE_MUD_SLAP].type == TYPE_GROUND); - PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_EARTH_EATER); HP(1); MaxHP(100); } + PLAYER(SPECIES_ORTHWORM) { Ability(ABILITY_EARTH_EATER); HP(1); MaxHP(100); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_PROTECT); MOVE(opponent, MOVE_MUD_SLAP); } } SCENE { - NONE_OF { ABILITY_POPUP(player, ABILITY_EARTH_EATER); HP_BAR(player); MESSAGE("Wobbuffet restored HP using its Earth Eater!"); } + NONE_OF { + ABILITY_POPUP(player, ABILITY_EARTH_EATER); HP_BAR(player); + MESSAGE("Orthworm restored HP using its Earth Eater!"); + } } } @@ -34,13 +37,13 @@ SINGLE_BATTLE_TEST("Earth Eater activates on status moves") GIVEN { ASSUME(gBattleMoves[MOVE_SAND_ATTACK].type == TYPE_GROUND); ASSUME(gBattleMoves[MOVE_SAND_ATTACK].split == SPLIT_STATUS); - PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_EARTH_EATER); HP(1); MaxHP(100); } + PLAYER(SPECIES_ORTHWORM) { Ability(ABILITY_EARTH_EATER); HP(1); MaxHP(100); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SAND_ATTACK); } } SCENE { ABILITY_POPUP(player, ABILITY_EARTH_EATER); HP_BAR(player, damage: -25); - MESSAGE("Wobbuffet restored HP using its Earth Eater!"); + MESSAGE("Orthworm restored HP using its Earth Eater!"); } } diff --git a/test/battle/ability/electromorphosis.c b/test/battle/ability/electromorphosis.c index 9111fa328c..7ee4b81a7e 100644 --- a/test/battle/ability/electromorphosis.c +++ b/test/battle/ability/electromorphosis.c @@ -14,40 +14,40 @@ SINGLE_BATTLE_TEST("Electromorphosis sets up Charge when hit by any move") ASSUME(gBattleMoves[MOVE_GUST].power != 0); ASSUME(gBattleMoves[MOVE_GUST].split == SPLIT_SPECIAL); ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); - ASSUME(gBattleMoves[MOVE_THUNDERBOLT].power != 0); - ASSUME(gBattleMoves[MOVE_THUNDERBOLT].type == TYPE_ELECTRIC); + ASSUME(gBattleMoves[MOVE_THUNDER_SHOCK].power != 0); + ASSUME(gBattleMoves[MOVE_THUNDER_SHOCK].type == TYPE_ELECTRIC); - PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_ELECTROMORPHOSIS); Speed(10); } + PLAYER(SPECIES_BELLIBOLT) { Ability(ABILITY_ELECTROMORPHOSIS); Speed(10); } OPPONENT(SPECIES_WOBBUFFET) {Ability(ABILITY_LIMBER); Speed(5) ;} // Limber, so it doesn't get paralyzed. } WHEN { - TURN { MOVE(player, MOVE_THUNDERBOLT), MOVE(opponent, move); } - TURN { MOVE(player, MOVE_THUNDERBOLT), MOVE(opponent, move); } + TURN { MOVE(player, MOVE_THUNDER_SHOCK), MOVE(opponent, move); } + TURN { MOVE(player, MOVE_THUNDER_SHOCK), MOVE(opponent, move); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDERBOLT, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDER_SHOCK, player); HP_BAR(opponent, captureDamage: &dmgBefore); ANIMATION(ANIM_TYPE_MOVE, move, opponent); HP_BAR(player); ABILITY_POPUP(player, ABILITY_ELECTROMORPHOSIS); if (move == MOVE_TACKLE) { - MESSAGE("Being hit by Tackle charged Wobbuffet with power!"); + MESSAGE("Being hit by Tackle charged Bellibolt with power!"); } else { - MESSAGE("Being hit by Gust charged Wobbuffet with power!"); + MESSAGE("Being hit by Gust charged Bellibolt with power!"); } - ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDERBOLT, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDER_SHOCK, player); HP_BAR(opponent, captureDamage: &dmgAfter); ANIMATION(ANIM_TYPE_MOVE, move, opponent); HP_BAR(player); ABILITY_POPUP(player, ABILITY_ELECTROMORPHOSIS); if (move == MOVE_TACKLE) { - MESSAGE("Being hit by Tackle charged Wobbuffet with power!"); + MESSAGE("Being hit by Tackle charged Bellibolt with power!"); } else { - MESSAGE("Being hit by Gust charged Wobbuffet with power!"); + MESSAGE("Being hit by Gust charged Bellibolt with power!"); } } THEN { diff --git a/test/battle/ability/flower_gift.c b/test/battle/ability/flower_gift.c index f8f2a35ccd..2541d8e36c 100644 --- a/test/battle/ability/flower_gift.c +++ b/test/battle/ability/flower_gift.c @@ -4,7 +4,7 @@ SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim in harsh sunlight") { GIVEN { - PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SUNNY_DAY); } @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim in harsh sunlight") SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back to normal when weather changes") { GIVEN { - PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SUNNY_DAY); } @@ -35,7 +35,7 @@ SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back to normal when weather c ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Cherrim transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CHERRIM); + EXPECT_EQ(player->species, SPECIES_CHERRIM_OVERCAST); } } @@ -43,7 +43,7 @@ SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back to normal when its abili { GIVEN { ASSUME(B_WEATHER_FORMS >= GEN_5); - PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SUNNY_DAY); } @@ -57,7 +57,7 @@ SINGLE_BATTLE_TEST("Flower Gift transforms Cherrim back to normal when its abili ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Cherrim transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CHERRIM); + EXPECT_EQ(player->species, SPECIES_CHERRIM_OVERCAST); } } @@ -67,7 +67,7 @@ DOUBLE_BATTLE_TEST("Flower Gift increases the attack of Cherrim and its allies b PARAMETRIZE { sunny = FALSE; } PARAMETRIZE { sunny = TRUE; } GIVEN { - PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); } PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -101,7 +101,7 @@ DOUBLE_BATTLE_TEST("Flower Gift increases the Sp. Def of Cherrim and its allies PARAMETRIZE { sunny = FALSE; } PARAMETRIZE { sunny = TRUE; } GIVEN { - PLAYER(SPECIES_CHERRIM) { Ability(ABILITY_FLOWER_GIFT); } + PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); } PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); diff --git a/test/battle/ability/fluffy.c b/test/battle/ability/fluffy.c index 6c76aeed55..67e992d8af 100644 --- a/test/battle/ability/fluffy.c +++ b/test/battle/ability/fluffy.c @@ -8,7 +8,6 @@ ASSUMPTIONS ASSUME(gBattleMoves[MOVE_TACKLE].makesContact); ASSUME(gBattleMoves[MOVE_FIRE_PUNCH].makesContact); ASSUME(gBattleMoves[MOVE_FIRE_PUNCH].type == TYPE_FIRE); - ASSUME(P_GEN_7_POKEMON == TRUE); } SINGLE_BATTLE_TEST("Fluffy halves damage taken from moves that make direct contact", s16 damage) diff --git a/test/battle/ability/forecast.c b/test/battle/ability/forecast.c index 949e4b7404..df7ecd00a4 100644 --- a/test/battle/ability/forecast.c +++ b/test/battle/ability/forecast.c @@ -9,7 +9,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform in weather from an opponent's m PARAMETRIZE { move = MOVE_HAIL; } PARAMETRIZE { move = MOVE_SNOWSCAPE; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, move); } @@ -42,7 +42,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform in weather from its own move") PARAMETRIZE { move = MOVE_HAIL; } PARAMETRIZE { move = MOVE_SNOWSCAPE; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, move); } @@ -75,7 +75,7 @@ DOUBLE_BATTLE_TEST("Forecast transforms Castform in weather from a partner's mov PARAMETRIZE { move = MOVE_HAIL; } PARAMETRIZE { move = MOVE_SNOWSCAPE; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -110,10 +110,10 @@ DOUBLE_BATTLE_TEST("Forecast transforms all Castforms present in weather") PARAMETRIZE { move = MOVE_HAIL; } PARAMETRIZE { move = MOVE_SNOWSCAPE; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } - OPPONENT(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } - OPPONENT(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } + OPPONENT(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } + OPPONENT(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } } WHEN { TURN { MOVE(playerRight, move); } } SCENE { @@ -162,7 +162,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform in weather from an ability") PARAMETRIZE { species = SPECIES_GROUDON; ability = ABILITY_DROUGHT; } PARAMETRIZE { species = SPECIES_ABOMASNOW; ability = ABILITY_SNOW_WARNING; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(species) { Ability(ability); } } WHEN { @@ -193,7 +193,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform in primal weather") PARAMETRIZE { species = SPECIES_KYOGRE; ability = ABILITY_PRIMORDIAL_SEA; item = ITEM_BLUE_ORB; } PARAMETRIZE { species = SPECIES_GROUDON; ability = ABILITY_DESOLATE_LAND; item = ITEM_RED_ORB; } GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(species) { Item(item); } } WHEN { @@ -219,7 +219,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform in primal weather") SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when weather expires") { GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_RAIN_DANCE); } @@ -238,14 +238,14 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when weather exp ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Castform transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CASTFORM); + EXPECT_EQ(player->species, SPECIES_CASTFORM_NORMAL); } } SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when Sandstorm is active") { GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_RAIN_DANCE); } @@ -260,7 +260,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when Sandstorm i ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Castform transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CASTFORM); + EXPECT_EQ(player->species, SPECIES_CASTFORM_NORMAL); } } @@ -268,7 +268,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal under Air Lock") { KNOWN_FAILING; GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_RAYQUAZA); } WHEN { @@ -285,7 +285,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal under Air Lock") ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Castform transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CASTFORM); + EXPECT_EQ(player->species, SPECIES_CASTFORM_NORMAL); } } @@ -293,7 +293,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform on switch-in") { GIVEN { PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_RAIN_DANCE); } @@ -313,7 +313,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform on switch-in") SINGLE_BATTLE_TEST("Forecast transforms Castform when weather changes") { GIVEN { - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_RAIN_DANCE); } @@ -336,7 +336,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when its ability { GIVEN { ASSUME(B_WEATHER_FORMS >= GEN_5); - PLAYER(SPECIES_CASTFORM) { Ability(ABILITY_FORECAST); } + PLAYER(SPECIES_CASTFORM_NORMAL) { Ability(ABILITY_FORECAST); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SUNNY_DAY); } @@ -350,7 +350,7 @@ SINGLE_BATTLE_TEST("Forecast transforms Castform back to normal when its ability ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); MESSAGE("Castform transformed!"); } THEN { - EXPECT_EQ(player->species, SPECIES_CASTFORM); + EXPECT_EQ(player->species, SPECIES_CASTFORM_NORMAL); } } diff --git a/test/battle/ability/hunger_switch.c b/test/battle/ability/hunger_switch.c index c0802d6643..e4fbda82d1 100644 --- a/test/battle/ability/hunger_switch.c +++ b/test/battle/ability/hunger_switch.c @@ -4,10 +4,9 @@ SINGLE_BATTLE_TEST("Hunger Switch switches Morpeko's forms at the end of the turn") { u16 species; - PARAMETRIZE { species = SPECIES_MORPEKO; } + PARAMETRIZE { species = SPECIES_MORPEKO_FULL_BELLY; } PARAMETRIZE { species = SPECIES_MORPEKO_HANGRY; } GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); PLAYER(species) { Speed(2); } OPPONENT(SPECIES_WOBBUFFET) { Speed(1); } } WHEN { @@ -17,9 +16,9 @@ SINGLE_BATTLE_TEST("Hunger Switch switches Morpeko's forms at the end of the tur MESSAGE("Foe Wobbuffet used Celebrate!"); ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); } THEN { - if (species == SPECIES_MORPEKO) + if (species == SPECIES_MORPEKO_FULL_BELLY) EXPECT_EQ(player->species, SPECIES_MORPEKO_HANGRY); else - EXPECT_EQ(player->species, SPECIES_MORPEKO); + EXPECT_EQ(player->species, SPECIES_MORPEKO_FULL_BELLY); } } diff --git a/test/battle/ability/hyper_cutter.c b/test/battle/ability/hyper_cutter.c index ac942039bb..8e5c0a40ba 100644 --- a/test/battle/ability/hyper_cutter.c +++ b/test/battle/ability/hyper_cutter.c @@ -7,9 +7,9 @@ SINGLE_BATTLE_TEST("Hyper Cutter prevents intimidate") s16 turnTwoHit; GIVEN { - PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); }; - PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }; - OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); }; + PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); } + PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); } + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } } WHEN { TURN { MOVE(opponent, MOVE_TACKLE); } TURN { SWITCH(player, 1); MOVE(opponent, MOVE_TACKLE); } @@ -19,17 +19,137 @@ SINGLE_BATTLE_TEST("Hyper Cutter prevents intimidate") ABILITY_POPUP(player, ABILITY_INTIMIDATE); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } ABILITY_POPUP(opponent, ABILITY_HYPER_CUTTER); - MESSAGE("Foe Krabby's Attack was not lowered!"); + MESSAGE("Foe Krabby's Hyper Cutter prevents Attack loss!"); HP_BAR(player, captureDamage: &turnTwoHit); } THEN { EXPECT_EQ(turnOneHit, turnTwoHit); } } -TO_DO_BATTLE_TEST("Hyper Cutter prevents Attack stage reduction from moves"); // Growl -TO_DO_BATTLE_TEST("Hyper Cutter doesn't prevent Attack stage reduction from moves used by the user"); // e.g. Superpower -TO_DO_BATTLE_TEST("Hyper Cutter doesn't prevent Attack reduction from burn"); -TO_DO_BATTLE_TEST("Hyper Cutter doesn't prevent receiving negative Attack stage changes from Baton Pass"); -TO_DO_BATTLE_TEST("Hyper Cutter doesn't prevent Topsy-Turvy"); -TO_DO_BATTLE_TEST("Hyper Cutter doesn't prevent Spectral Thief from resetting positive Attack stage changes"); -TO_DO_BATTLE_TEST("Hyper Cutter is ignored by Mold Breaker"); +SINGLE_BATTLE_TEST("Hyper Cutter prevents Attack stage reduction from moves") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_GROWL].effect == EFFECT_ATTACK_DOWN); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(player, MOVE_GROWL); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_HYPER_CUTTER); + MESSAGE("Foe Krabby's Hyper Cutter prevents Attack loss!"); + } +} + +SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Attack reduction from burn") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_WILL_O_WISP].effect == EFFECT_WILL_O_WISP); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(player, MOVE_WILL_O_WISP); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_WILL_O_WISP, player); + MESSAGE("Foe Krabby was burned!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE); + } +} + +SINGLE_BATTLE_TEST("Hyper Cutter is ignored by Mold Breaker") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_GROWL].effect == EFFECT_ATTACK_DOWN); + PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); } + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(player, MOVE_GROWL); } + } SCENE { + ABILITY_POPUP(player, ABILITY_MOLD_BREAKER); + MESSAGE("Pinsir breaks the mold!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GROWL, player); + MESSAGE("Foe Krabby's Attack fell!"); + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_HYPER_CUTTER); + MESSAGE("Foe Krabby's Hyper Cutter prevents Attack loss!"); + } + } +} + +SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Attack stage reduction from moves used by the user") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_SUPERPOWER].effect == EFFECT_SUPERPOWER); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(opponent, MOVE_SUPERPOWER); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SUPERPOWER, opponent); + MESSAGE("Foe Krabby's Attack fell!"); + MESSAGE("Foe Krabby's Defense fell!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 1); + } +} + +SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Topsy-Turvy") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_SWORDS_DANCE].effect == EFFECT_ATTACK_UP_2); + ASSUME(gBattleMoves[MOVE_TOPSY_TURVY].effect == EFFECT_TOPSY_TURVY); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(opponent, MOVE_SWORDS_DANCE); MOVE(player, MOVE_TOPSY_TURVY); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWORDS_DANCE, opponent); + MESSAGE("Foe Krabby's Attack sharply rose!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOPSY_TURVY, player); + MESSAGE("Foe Krabby's stat changes were all reversed!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 2); + } +} + +SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Spectral Thief from resetting positive Attack stage changes") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_SWORDS_DANCE].effect == EFFECT_ATTACK_UP_2); + ASSUME(gBattleMoves[MOVE_SPECTRAL_THIEF].effect == EFFECT_SPECTRAL_THIEF); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(opponent, MOVE_SWORDS_DANCE); MOVE(player, MOVE_SPECTRAL_THIEF); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWORDS_DANCE, opponent); + MESSAGE("Foe Krabby's Attack sharply rose!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPECTRAL_THIEF, player); + MESSAGE("Wobbuffet stole the target's boosted stats!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE); + } +} + +SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent receiving negative Attack stage changes from Baton Pass") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_GROWL].effect == EFFECT_ATTACK_DOWN); + ASSUME(gBattleMoves[MOVE_BATON_PASS].effect == EFFECT_BATON_PASS); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); } + } WHEN { + TURN { MOVE(player, MOVE_GROWL); + MOVE(opponent, MOVE_BATON_PASS); + SEND_OUT(opponent, 1); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_GROWL, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BATON_PASS, opponent); + MESSAGE("2 sent out Krabby!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 1); + } +} diff --git a/test/battle/ability/ice_scales.c b/test/battle/ability/ice_scales.c index 2bbe7dab05..c4984c35b0 100644 --- a/test/battle/ability/ice_scales.c +++ b/test/battle/ability/ice_scales.c @@ -1,11 +1,6 @@ #include "global.h" #include "test/battle.h" -ASSUMPTIONS -{ - ASSUME(P_GEN_8_POKEMON == TRUE); // Because only Frosmoth can have this ability. -} - SINGLE_BATTLE_TEST("Ice Scales halves the damage from special moves", s16 damage) { u32 move; diff --git a/test/battle/ability/inner_focus.c b/test/battle/ability/inner_focus.c index 574c860a74..ecd71272cb 100644 --- a/test/battle/ability/inner_focus.c +++ b/test/battle/ability/inner_focus.c @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Inner Focus prevents intimidate") ABILITY_POPUP(player, ABILITY_INTIMIDATE); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } ABILITY_POPUP(opponent, ABILITY_INNER_FOCUS); - MESSAGE("Foe Zubat's Attack was not lowered!"); + MESSAGE("Foe Zubat's Inner Focus prevents stat loss!"); HP_BAR(player, captureDamage: &turnTwoHit); } THEN { EXPECT_EQ(turnOneHit, turnTwoHit); diff --git a/test/battle/ability/intrepid_sword.c b/test/battle/ability/intrepid_sword.c new file mode 100644 index 0000000000..88228bbe78 --- /dev/null +++ b/test/battle/ability/intrepid_sword.c @@ -0,0 +1,47 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(P_GEN_8_POKEMON == TRUE); + ASSUME(B_INTREPID_SWORD == GEN_9); +} + +SINGLE_BATTLE_TEST("Intrepid Sword raises Attack by one stage") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_ZACIAN) { Ability(ABILITY_INTREPID_SWORD); } + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_INTREPID_SWORD); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Zacian's Intrepid Sword raised its Attack!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 1); + } +} + +SINGLE_BATTLE_TEST("Intrepid Sword raises Attack by one stage only once per battle") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_ZACIAN) { Ability(ABILITY_INTREPID_SWORD); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { SWITCH(opponent, 1); } + TURN { SWITCH(opponent, 0); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_INTREPID_SWORD); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Zacian's Intrepid Sword raised its Attack!"); + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_INTREPID_SWORD); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Zacian's Intrepid Sword raised its Attack!"); + } + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE); + } +} diff --git a/test/battle/ability/mirror_armor.c b/test/battle/ability/mirror_armor.c index 2b0a59044c..2c4d8d9a27 100644 --- a/test/battle/ability/mirror_armor.c +++ b/test/battle/ability/mirror_armor.c @@ -1,11 +1,6 @@ #include "global.h" #include "test/battle.h" -ASSUMPTIONS -{ - ASSUME(P_GEN_8_POKEMON == TRUE); -} - SINGLE_BATTLE_TEST("Mirror Armor lowers a stat of the attacking pokemon") { u16 move, statId; diff --git a/test/battle/ability/neuroforce.c b/test/battle/ability/neuroforce.c index df15bd4511..4aac565066 100644 --- a/test/battle/ability/neuroforce.c +++ b/test/battle/ability/neuroforce.c @@ -1,11 +1,6 @@ #include "global.h" #include "test/battle.h" -ASSUMPTIONS -{ - ASSUME(P_GEN_7_POKEMON == TRUE); // Because only Necrozma can have this ability. -} - SINGLE_BATTLE_TEST("Neuroforce increases the strength of super-effective moves by 25%", s16 damage) { u32 move; diff --git a/test/battle/ability/oblivious.c b/test/battle/ability/oblivious.c index 51d27bb169..b851256acc 100644 --- a/test/battle/ability/oblivious.c +++ b/test/battle/ability/oblivious.c @@ -63,6 +63,6 @@ SINGLE_BATTLE_TEST("Oblivious prevents Intimidate") ABILITY_POPUP(opponent, ABILITY_INTIMIDATE); ABILITY_POPUP(player, ABILITY_OBLIVIOUS); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } - MESSAGE("Slowpoke's Attack was not lowered!"); + MESSAGE("Slowpoke's Oblivious prevents stat loss!"); } } diff --git a/test/battle/ability/opportunist.c b/test/battle/ability/opportunist.c new file mode 100644 index 0000000000..79c6649f59 --- /dev/null +++ b/test/battle/ability/opportunist.c @@ -0,0 +1,106 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Opportunist only copies foe's positive stat changes in a turn", s16 damage) +{ + u32 ability; + PARAMETRIZE { ability = ABILITY_FRISK; } + PARAMETRIZE { ability = ABILITY_OPPORTUNIST; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(4); } + OPPONENT(SPECIES_ESPATHRA) { Speed(5); Ability(ability); } + } WHEN { + TURN { MOVE(player, MOVE_SHELL_SMASH); } + TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + if (ability == ABILITY_FRISK) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SHELL_SMASH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &results[i].damage); + } else { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &results[i].damage); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + } + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); + // stat boosts should be the same + EXPECT_EQ(player->statStages[STAT_ATK], opponent->statStages[STAT_ATK]); + EXPECT_EQ(player->statStages[STAT_SPATK], opponent->statStages[STAT_SPATK]); + EXPECT_EQ(player->statStages[STAT_SPEED], opponent->statStages[STAT_SPEED]); + // opportunist should not copy stat drops from shell smash + EXPECT_LT(player->statStages[STAT_DEF], opponent->statStages[STAT_DEF]); + EXPECT_LT(player->statStages[STAT_SPDEF], opponent->statStages[STAT_SPDEF]); + } +} + + +DOUBLE_BATTLE_TEST("Opportunist raises Attack only once when partner has Intimidate against Contrary foe in a double battle", s16 damageLeft, s16 damageRight) +{ + u32 abilityLeft, abilityRight; + + PARAMETRIZE { abilityLeft = ABILITY_CONTRARY; abilityRight = ABILITY_CONTRARY; } + PARAMETRIZE { abilityLeft = ABILITY_TANGLED_FEET; abilityRight = ABILITY_TANGLED_FEET; } + PARAMETRIZE { abilityLeft = ABILITY_CONTRARY; abilityRight = ABILITY_TANGLED_FEET; } + PARAMETRIZE { abilityLeft = ABILITY_TANGLED_FEET; abilityRight = ABILITY_CONTRARY; } + + GIVEN { + PLAYER(SPECIES_MIGHTYENA) { Ability(ABILITY_INTIMIDATE); } + PLAYER(SPECIES_ESPATHRA) { Ability(ABILITY_OPPORTUNIST); } + OPPONENT(SPECIES_SPINDA) { Ability(abilityLeft); } + OPPONENT(SPECIES_SPINDA) { Ability(abilityRight); } + } WHEN { + TURN { MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); MOVE(opponentRight, MOVE_TACKLE, target: playerRight); } + } SCENE { + ABILITY_POPUP(playerLeft, ABILITY_INTIMIDATE); + if (abilityLeft == ABILITY_CONTRARY) { + ABILITY_POPUP(opponentLeft, ABILITY_CONTRARY); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); + MESSAGE("Foe Spinda's Attack rose!"); + } else { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); + MESSAGE("Mightyena's Intimidate cuts Foe Spinda's attack!"); + } + if (abilityRight == ABILITY_CONTRARY) { + ABILITY_POPUP(opponentRight, ABILITY_CONTRARY); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); + MESSAGE("Foe Spinda's Attack rose!"); + } else { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); + MESSAGE("Mightyena's Intimidate cuts Foe Spinda's attack!"); + } + + if ((abilityLeft == ABILITY_CONTRARY && abilityRight != ABILITY_CONTRARY) + || (abilityLeft != ABILITY_CONTRARY && abilityRight == ABILITY_CONTRARY)) { + ABILITY_POPUP(playerRight, ABILITY_OPPORTUNIST); + MESSAGE("Espathra copied its opponent's stat changes!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); + MESSAGE("Espathra's Attack rose!"); + } else if (abilityLeft == ABILITY_CONTRARY && abilityRight == ABILITY_CONTRARY) { + ABILITY_POPUP(playerRight, ABILITY_OPPORTUNIST); + MESSAGE("Espathra copied its opponent's stat changes!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); + MESSAGE("Espathra's Attack sharply rose!"); + } + + HP_BAR(playerLeft, captureDamage: &results[i].damageLeft); + HP_BAR(playerRight, captureDamage: &results[i].damageRight); + } THEN { + EXPECT_EQ(opponentLeft->statStages[STAT_ATK], DEFAULT_STAT_STAGE + (abilityLeft == ABILITY_CONTRARY ? 1 : - 1)); + EXPECT_EQ(opponentRight->statStages[STAT_ATK], DEFAULT_STAT_STAGE + (abilityRight == ABILITY_CONTRARY ? 1 : - 1)); + if ((abilityLeft == ABILITY_CONTRARY && abilityRight != ABILITY_CONTRARY) + || (abilityLeft != ABILITY_CONTRARY && abilityRight == ABILITY_CONTRARY)) { + EXPECT_EQ(playerRight->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 1); + } else if (abilityLeft == ABILITY_CONTRARY && abilityRight == ABILITY_CONTRARY) { + EXPECT_EQ(playerRight->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); + } + } + FINALLY { + EXPECT_MUL_EQ(results[1].damageLeft, Q_4_12(2.25), results[0].damageLeft); + EXPECT_MUL_EQ(results[1].damageRight, Q_4_12(2.25), results[0].damageRight); + } +} + +TO_DO_BATTLE_TEST("Opportunist doesn't copy ally stat increases"); +TO_DO_BATTLE_TEST("Opportunist doesn't copy foe stat increases gained via Opportunist"); +TO_DO_BATTLE_TEST("Opportunist copies foe stat increased gained via Swagger and Flatter"); diff --git a/test/battle/ability/own_tempo.c b/test/battle/ability/own_tempo.c index 4c6a3167f6..9babd52589 100644 --- a/test/battle/ability/own_tempo.c +++ b/test/battle/ability/own_tempo.c @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Own Tempo prevents intimidate") ABILITY_POPUP(player, ABILITY_INTIMIDATE); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } ABILITY_POPUP(opponent, ABILITY_OWN_TEMPO); - MESSAGE("Foe Slowpoke's Attack was not lowered!"); + MESSAGE("Foe Slowpoke's Own Tempo prevents stat loss!"); HP_BAR(player, captureDamage: &turnTwoHit); } THEN { EXPECT_EQ(turnOneHit, turnTwoHit); diff --git a/test/battle/ability/pressure.c b/test/battle/ability/pressure.c new file mode 100644 index 0000000000..db92d198b7 --- /dev/null +++ b/test/battle/ability/pressure.c @@ -0,0 +1,70 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Pressure causes opponent's moves to use up 1 additional PP") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_POUND, 35}); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(player, MOVE_POUND); } + } THEN { + EXPECT_EQ(player->pp[0], 33); + } +} + +DOUBLE_BATTLE_TEST("Pressure's effect stacks with multiple Pokémon") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_SWIFT, 20}); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + OPPONENT(SPECIES_WYNAUT) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_SWIFT); } + } THEN { + EXPECT_EQ(playerLeft->pp[0], 17); + } +} + +SINGLE_BATTLE_TEST("Pressure's effect applies to Imprison and Snatch") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_IMPRISON, 10}, {MOVE_SNATCH, 10}); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(player, MOVE_IMPRISON); } + TURN { MOVE(player, MOVE_SNATCH); } + } THEN { + EXPECT_EQ(player->pp[0], 8); + EXPECT_EQ(player->pp[1], 8); + } +} + +SINGLE_BATTLE_TEST("Pressure's effect applies to Spikes, Stealth Rock and Toxic Spikes") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_SPIKES, 20}, {MOVE_STEALTH_ROCK, 20}, {MOVE_TOXIC_SPIKES, 20}); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(player, MOVE_SPIKES); } + TURN { MOVE(player, MOVE_STEALTH_ROCK); } + TURN { MOVE(player, MOVE_TOXIC_SPIKES); } + } THEN { + EXPECT_EQ(player->pp[0], 18); + EXPECT_EQ(player->pp[1], 18); + EXPECT_EQ(player->pp[2], 18); + } +} + +SINGLE_BATTLE_TEST("Pressure's effect doesn't apply to Sticky Web") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MovesWithPP({MOVE_STICKY_WEB, 20}); } + OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_PRESSURE); } + } WHEN { + TURN { MOVE(player, MOVE_STICKY_WEB); } + } THEN { + EXPECT_EQ(player->pp[0], 19); + } +} diff --git a/test/battle/ability/protean.c b/test/battle/ability/protean.c new file mode 100644 index 0000000000..936c341f89 --- /dev/null +++ b/test/battle/ability/protean.c @@ -0,0 +1,34 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(B_PROTEAN_LIBERO == GEN_9); +} + +SINGLE_BATTLE_TEST("Protean changes the type of the user only once per switch in") +{ + GIVEN { + PLAYER(SPECIES_REGIROCK); + OPPONENT(SPECIES_KECLEON) { Ability(ABILITY_PROTEAN); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_WATER_GUN); } + TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { SWITCH(opponent, 1); } + TURN { SWITCH(opponent, 0); } + TURN { MOVE(opponent, MOVE_WATER_GUN); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_PROTEAN); + MESSAGE("Foe Kecleon transformed into the Water type!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, opponent); + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_PROTEAN); + MESSAGE("Foe Kecleon transformed into the Normal type!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ABILITY_POPUP(opponent, ABILITY_PROTEAN); + MESSAGE("Foe Kecleon transformed into the Water type!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, opponent); + } +} diff --git a/test/battle/ability/protosynthesis.c b/test/battle/ability/protosynthesis.c index 40711ecced..93ed9630e9 100644 --- a/test/battle/ability/protosynthesis.c +++ b/test/battle/ability/protosynthesis.c @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Protosynthesis boosts either Attack or Special Attack, not b { u16 species; u32 move; - u16 damage[2]; + s16 damage[2]; PARAMETRIZE { species = SPECIES_BELLSPROUT; move = MOVE_TACKLE; } PARAMETRIZE { species = SPECIES_BELLSPROUT; move = MOVE_ROUND; } @@ -58,7 +58,7 @@ SINGLE_BATTLE_TEST("Protosynthesis either boosts Defense or Special Defense, not { u16 species; u32 move; - u16 damage[2]; + s16 damage[2]; PARAMETRIZE { species = SPECIES_ONIX; move = MOVE_TACKLE; } PARAMETRIZE { species = SPECIES_ONIX; move = MOVE_ROUND; } diff --git a/test/battle/ability/purifying_salt.c b/test/battle/ability/purifying_salt.c index ea89124681..6cac4c5d8b 100644 --- a/test/battle/ability/purifying_salt.c +++ b/test/battle/ability/purifying_salt.c @@ -9,7 +9,7 @@ SINGLE_BATTLE_TEST("Purifying Salt halves damage from Ghost-type moves", s16 dam GIVEN { ASSUME(gBattleMoves[MOVE_SHADOW_BALL].type == TYPE_GHOST); PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET) { Ability(ability); } + OPPONENT(SPECIES_GARGANACL) { Ability(ability); } } WHEN { TURN { MOVE(player, MOVE_SHADOW_BALL); } } SCENE { @@ -22,13 +22,13 @@ SINGLE_BATTLE_TEST("Purifying Salt halves damage from Ghost-type moves", s16 dam SINGLE_BATTLE_TEST("Purifying Salt makes Rest fail") { GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_PURIFYING_SALT); HP(1); MaxHP(100);} + PLAYER(SPECIES_GARGANACL) { Ability(ABILITY_PURIFYING_SALT); HP(1); MaxHP(100);} OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_REST); } } SCENE { NONE_OF { - MESSAGE("Wobbuffet went to sleep!"); + MESSAGE("Garganacl went to sleep!"); } } } diff --git a/test/battle/ability/quark_drive.c b/test/battle/ability/quark_drive.c index abf0b7f5cb..f4448e1439 100644 --- a/test/battle/ability/quark_drive.c +++ b/test/battle/ability/quark_drive.c @@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Quark Drive boosts either Attack or Special Attack, not both { u16 species; u32 move; - u16 damage[2]; + s16 damage[2]; PARAMETRIZE { species = SPECIES_BELLSPROUT; move = MOVE_TACKLE; } PARAMETRIZE { species = SPECIES_BELLSPROUT; move = MOVE_ROUND; } @@ -58,7 +58,7 @@ SINGLE_BATTLE_TEST("Quark Drive either boosts Defense or Special Defense, not bo { u16 species; u32 move; - u16 damage[2]; + s16 damage[2]; PARAMETRIZE { species = SPECIES_ONIX; move = MOVE_TACKLE; } PARAMETRIZE { species = SPECIES_ONIX; move = MOVE_ROUND; } diff --git a/test/battle/ability/rocky_payload.c b/test/battle/ability/rocky_payload.c index 498b09c9d9..dd68bd6102 100644 --- a/test/battle/ability/rocky_payload.c +++ b/test/battle/ability/rocky_payload.c @@ -19,7 +19,7 @@ SINGLE_BATTLE_TEST("Rocky Payload increases Rock-type move damage", s16 damage) ASSUME(gBattleMoves[MOVE_POWER_GEM].type == TYPE_ROCK); ASSUME(gBattleMoves[MOVE_ROCK_THROW].split == SPLIT_PHYSICAL); ASSUME(gBattleMoves[MOVE_POWER_GEM].split == SPLIT_SPECIAL); - PLAYER(SPECIES_WOBBUFFET) { Ability(ability); } + PLAYER(SPECIES_BOMBIRDIER) { Ability(ability); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, move); } diff --git a/test/battle/ability/schooling.c b/test/battle/ability/schooling.c index 448e37261d..efa38cbb68 100644 --- a/test/battle/ability/schooling.c +++ b/test/battle/ability/schooling.c @@ -8,9 +8,8 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is 25 PARAMETRIZE { level = 20; } GIVEN { - ASSUME(P_GEN_7_POKEMON == TRUE); - ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); - PLAYER(SPECIES_WISHIWASHI) + ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI_SOLO].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); + PLAYER(SPECIES_WISHIWASHI_SOLO) { Level(level); HP(GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP) / 2); @@ -34,7 +33,7 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is 25 ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); } } THEN { - EXPECT_EQ(player->species, SPECIES_WISHIWASHI); + EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SOLO); } } @@ -48,9 +47,8 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is ov PARAMETRIZE { level = 20; overQuarterHP = TRUE; } GIVEN { - ASSUME(P_GEN_7_POKEMON == TRUE); - ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); - PLAYER(SPECIES_WISHIWASHI) + ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI_SOLO].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); + PLAYER(SPECIES_WISHIWASHI_SOLO) { Level(level); HP(GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP) / (overQuarterHP ? 2 : 4)); @@ -71,7 +69,7 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is ov if (level >= 20 && overQuarterHP) EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SCHOOL); else - EXPECT_EQ(player->species, SPECIES_WISHIWASHI); + EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SOLO); } } @@ -82,9 +80,8 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is he PARAMETRIZE { level = 20; } GIVEN { - ASSUME(P_GEN_7_POKEMON == TRUE); - ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); - PLAYER(SPECIES_WISHIWASHI) + ASSUME(gSpeciesInfo[SPECIES_WISHIWASHI_SOLO].baseHP == gSpeciesInfo[SPECIES_WISHIWASHI_SCHOOL].baseHP); + PLAYER(SPECIES_WISHIWASHI_SOLO) { Level(level); HP(GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP) / 4); @@ -106,6 +103,6 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is he if (level >= 20) EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SCHOOL); else - EXPECT_EQ(player->species, SPECIES_WISHIWASHI); + EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SOLO); } } diff --git a/test/battle/ability/scrappy.c b/test/battle/ability/scrappy.c index df4ededa4e..22b6660b69 100644 --- a/test/battle/ability/scrappy.c +++ b/test/battle/ability/scrappy.c @@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Scrappy prevents intimidate") ABILITY_POPUP(player, ABILITY_INTIMIDATE); NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } ABILITY_POPUP(opponent, ABILITY_SCRAPPY); - MESSAGE("Foe Kangaskhan's Attack was not lowered!"); + MESSAGE("Foe Kangaskhan's Scrappy prevents stat loss!"); HP_BAR(player, captureDamage: &turnTwoHit); } THEN { EXPECT_EQ(turnOneHit, turnTwoHit); diff --git a/test/battle/ability/seed_sower.c b/test/battle/ability/seed_sower.c index 706e43ede5..9c56095004 100644 --- a/test/battle/ability/seed_sower.c +++ b/test/battle/ability/seed_sower.c @@ -4,7 +4,7 @@ SINGLE_BATTLE_TEST("Seed Sower sets up Grassy Terrain when hit by an attack") { GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_SEED_SOWER); } + PLAYER(SPECIES_ARBOLIVA) { Ability(ABILITY_SEED_SOWER); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_TACKLE); } @@ -16,7 +16,7 @@ SINGLE_BATTLE_TEST("Seed Sower sets up Grassy Terrain when hit by an attack") } } -#define ABILITY_PARAM(n)(abilities[n] = (k == n) ? ABILITY_SEED_SOWER : ABILITY_SHADOW_TAG) +#define ABILITY_PARAM(n)(abilities[n] = (k == n) ? ABILITY_SEED_SOWER : ABILITY_HARVEST) #define MOVE_HIT(target, position) \ { \ HP_BAR(target); \ @@ -29,10 +29,10 @@ SINGLE_BATTLE_TEST("Seed Sower sets up Grassy Terrain when hit by an attack") DOUBLE_BATTLE_TEST("Multi-target moves hit correct battlers after Seed Sower is triggered") // #2796 { u32 j, k, l; - u16 usedMove; + u16 usedMove = MOVE_NONE; static const u16 moves[] = {MOVE_HYPER_VOICE, MOVE_SURF}; - u16 abilities[MAX_BATTLERS_COUNT]; - u8 attacker; + u16 abilities[MAX_BATTLERS_COUNT] = {0}; + u8 attacker = 0; for (j = 0; j < ARRAY_COUNT(moves); j++) { @@ -52,10 +52,10 @@ DOUBLE_BATTLE_TEST("Multi-target moves hit correct battlers after Seed Sower is GIVEN { ASSUME(gBattleMoves[MOVE_HYPER_VOICE].target == MOVE_TARGET_BOTH); ASSUME(gBattleMoves[MOVE_SURF].target == MOVE_TARGET_FOES_AND_ALLY); - PLAYER(SPECIES_WYNAUT) { Ability(abilities[B_POSITION_PLAYER_LEFT]); } - PLAYER(SPECIES_WOBBUFFET) { Ability(abilities[B_POSITION_PLAYER_RIGHT]); } - OPPONENT(SPECIES_WYNAUT) { Ability(abilities[B_POSITION_OPPONENT_LEFT]); } - OPPONENT(SPECIES_WOBBUFFET) { Ability(abilities[B_POSITION_OPPONENT_RIGHT]); } + PLAYER(SPECIES_ARBOLIVA) { Ability(abilities[B_POSITION_PLAYER_LEFT]); } + PLAYER(SPECIES_ARBOLIVA) { Ability(abilities[B_POSITION_PLAYER_RIGHT]); } + OPPONENT(SPECIES_ARBOLIVA) { Ability(abilities[B_POSITION_OPPONENT_LEFT]); } + OPPONENT(SPECIES_ARBOLIVA) { Ability(abilities[B_POSITION_OPPONENT_RIGHT]); } } WHEN { TURN { MOVE(opponentLeft, (attacker == B_POSITION_OPPONENT_LEFT) ? usedMove : MOVE_CELEBRATE); diff --git a/test/battle/ability/sharpness.c b/test/battle/ability/sharpness.c index 6360c4f8b3..e018cce234 100644 --- a/test/battle/ability/sharpness.c +++ b/test/battle/ability/sharpness.c @@ -1,12 +1,7 @@ #include "global.h" #include "test/battle.h" -ASSUMPTIONS -{ - ASSUME(P_GEN_4_POKEMON == TRUE); // Because no = GEN_9 + EXPECT_MUL_EQ(results[2].damage, Q_4_12(5325 / 4096), results[3].damage); // Wild Charge should be affected + EXPECT_MUL_EQ(results[4].damage, Q_4_12(5325 / 4096), results[5].damage); // Thunder Shock should be affected + #else EXPECT_MUL_EQ(results[2].damage, Q_4_12(1.5), results[3].damage); // Wild Charge should be affected EXPECT_MUL_EQ(results[4].damage, Q_4_12(1.5), results[5].damage); // Thunder Shock should be affected + #endif } } diff --git a/test/battle/ability/weak_armor.c b/test/battle/ability/weak_armor.c index 8fc09bb287..84cad5c222 100644 --- a/test/battle/ability/weak_armor.c +++ b/test/battle/ability/weak_armor.c @@ -7,6 +7,7 @@ ASSUMPTIONS ASSUME(gBattleMoves[MOVE_GUST].power != 0); ASSUME(gBattleMoves[MOVE_GUST].split == SPLIT_SPECIAL); ASSUME(gBattleMoves[MOVE_TACKLE].split == SPLIT_PHYSICAL); + ASSUME(B_WEAK_ARMOR_SPEED >= GEN_7); } SINGLE_BATTLE_TEST("Weak Armor lowers Defense by 1 and boosts Speed by 2 when hit by a physical attack") diff --git a/test/battle/ability/wind_power.c b/test/battle/ability/wind_power.c index 98934a93d1..ab332f1c68 100644 --- a/test/battle/ability/wind_power.c +++ b/test/battle/ability/wind_power.c @@ -24,7 +24,7 @@ SINGLE_BATTLE_TEST("Wind Power sets up Charge for player when hit by a wind move PARAMETRIZE {move = MOVE_AIR_CUTTER; } GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_WIND_POWER); Speed(10); } + PLAYER(SPECIES_WATTREL) { Ability(ABILITY_WIND_POWER); Speed(10); } OPPONENT(SPECIES_WOBBUFFET) {Ability(ABILITY_LIMBER); Speed(5) ;} // Limber, so it doesn't get paralyzed. } WHEN { TURN { MOVE(player, MOVE_THUNDERBOLT), MOVE(opponent, move); } @@ -37,7 +37,7 @@ SINGLE_BATTLE_TEST("Wind Power sets up Charge for player when hit by a wind move HP_BAR(player); if (move == MOVE_AIR_CUTTER) { ABILITY_POPUP(player, ABILITY_WIND_POWER); - MESSAGE("Being hit by Air Cutter charged Wobbuffet with power!"); + MESSAGE("Being hit by Air Cutter charged Wattrel with power!"); } ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDERBOLT, player); @@ -47,7 +47,7 @@ SINGLE_BATTLE_TEST("Wind Power sets up Charge for player when hit by a wind move HP_BAR(player); if (move == MOVE_AIR_CUTTER) { ABILITY_POPUP(player, ABILITY_WIND_POWER); - MESSAGE("Being hit by Air Cutter charged Wobbuffet with power!"); + MESSAGE("Being hit by Air Cutter charged Wattrel with power!"); } } THEN { @@ -70,7 +70,7 @@ SINGLE_BATTLE_TEST("Wind Power sets up Charge for opponent when hit by a wind mo GIVEN { PLAYER(SPECIES_WOBBUFFET) {Ability(ABILITY_LIMBER); Speed(5) ;} // Limber, so it doesn't get paralyzed. - OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_WIND_POWER); Speed(10); } + OPPONENT(SPECIES_WATTREL) { Ability(ABILITY_WIND_POWER); Speed(10); } } WHEN { TURN { MOVE(opponent, MOVE_THUNDERBOLT), MOVE(player, move); } TURN { MOVE(opponent, MOVE_THUNDERBOLT), MOVE(player, move); } @@ -82,7 +82,7 @@ SINGLE_BATTLE_TEST("Wind Power sets up Charge for opponent when hit by a wind mo HP_BAR(opponent); if (move == MOVE_AIR_CUTTER) { ABILITY_POPUP(opponent, ABILITY_WIND_POWER); - MESSAGE("Being hit by Air Cutter charged Foe Wobbuffet with power!"); + MESSAGE("Being hit by Air Cutter charged Foe Wattrel with power!"); } ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDERBOLT, opponent); @@ -92,7 +92,7 @@ SINGLE_BATTLE_TEST("Wind Power sets up Charge for opponent when hit by a wind mo HP_BAR(opponent); if (move == MOVE_AIR_CUTTER) { ABILITY_POPUP(opponent, ABILITY_WIND_POWER); - MESSAGE("Being hit by Air Cutter charged Foe Wobbuffet with power!"); + MESSAGE("Being hit by Air Cutter charged Foe Wattrel with power!"); } } THEN { @@ -107,15 +107,15 @@ SINGLE_BATTLE_TEST("Wind Power sets up Charge for opponent when hit by a wind mo DOUBLE_BATTLE_TEST("Wind Power activates correctly for every battler with the ability when hit by a 2/3 target move") { - u16 move, abilityLeft, abilityRight; + u16 abilityLeft, abilityRight; PARAMETRIZE {abilityLeft = ABILITY_NONE, abilityRight = ABILITY_WIND_POWER;} PARAMETRIZE {abilityLeft = ABILITY_WIND_POWER, abilityRight = ABILITY_NONE; } PARAMETRIZE {abilityLeft = ABILITY_WIND_POWER, abilityRight = ABILITY_WIND_POWER; } GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Ability(abilityLeft); Speed(10); } - PLAYER(SPECIES_WOBBUFFET) { Ability(abilityRight); Speed(5); } + PLAYER(SPECIES_WATTREL) { Ability(abilityLeft); Speed(10); } + PLAYER(SPECIES_WATTREL) { Ability(abilityRight); Speed(5); } OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_LIMBER); Speed(20); } OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_LIMBER); Speed(15); } } WHEN { @@ -126,12 +126,12 @@ DOUBLE_BATTLE_TEST("Wind Power activates correctly for every battler with the ab HP_BAR(playerLeft); if (abilityLeft == ABILITY_WIND_POWER) { ABILITY_POPUP(playerLeft, ABILITY_WIND_POWER); - MESSAGE("Being hit by Air Cutter charged Wobbuffet with power!"); + MESSAGE("Being hit by Air Cutter charged Wattrel with power!"); } HP_BAR(playerRight); if (abilityRight == ABILITY_WIND_POWER) { ABILITY_POPUP(playerRight, ABILITY_WIND_POWER); - MESSAGE("Being hit by Air Cutter charged Wobbuffet with power!"); + MESSAGE("Being hit by Air Cutter charged Wattrel with power!"); } NONE_OF { HP_BAR(opponentLeft); @@ -155,8 +155,8 @@ DOUBLE_BATTLE_TEST("Wind Power activates correctly for every battler with the ab PARAMETRIZE {abilityLeft = ABILITY_WIND_POWER, abilityRight = ABILITY_WIND_POWER; } GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Ability(abilityLeft); Speed(10); } - PLAYER(SPECIES_WOBBUFFET) { Ability(abilityRight); Speed(5); } + PLAYER(SPECIES_WATTREL) { Ability(abilityLeft); Speed(10); } + PLAYER(SPECIES_WATTREL) { Ability(abilityRight); Speed(5); } OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_LIMBER); Speed(20); } OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_LIMBER); Speed(15); } } WHEN { @@ -167,12 +167,12 @@ DOUBLE_BATTLE_TEST("Wind Power activates correctly for every battler with the ab HP_BAR(playerLeft); if (abilityLeft == ABILITY_WIND_POWER) { ABILITY_POPUP(playerLeft, ABILITY_WIND_POWER); - MESSAGE("Being hit by PetalBlizzrd charged Wobbuffet with power!"); + MESSAGE("Being hit by PetalBlizzrd charged Wattrel with power!"); } HP_BAR(playerRight); if (abilityRight == ABILITY_WIND_POWER) { ABILITY_POPUP(playerRight, ABILITY_WIND_POWER); - MESSAGE("Being hit by PetalBlizzrd charged Wobbuffet with power!"); + MESSAGE("Being hit by PetalBlizzrd charged Wattrel with power!"); } HP_BAR(opponentRight); NOT HP_BAR(opponentLeft); @@ -194,10 +194,10 @@ DOUBLE_BATTLE_TEST("Wind Power activates correctly when Tailwind is used") GIVEN { ASSUME(gBattleMoves[MOVE_TAILWIND].effect == EFFECT_TAILWIND); - PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_WIND_POWER); Speed(10); } - PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_WIND_POWER); Speed(5); } - OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_WIND_POWER); Speed(20); } - OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_WIND_POWER); Speed(15); } + PLAYER(SPECIES_WATTREL) { Ability(ABILITY_WIND_POWER); Speed(10); } + PLAYER(SPECIES_WATTREL) { Ability(ABILITY_WIND_POWER); Speed(5); } + OPPONENT(SPECIES_WATTREL) { Ability(ABILITY_WIND_POWER); Speed(20); } + OPPONENT(SPECIES_WATTREL) { Ability(ABILITY_WIND_POWER); Speed(15); } } WHEN { TURN { MOVE((opponentSide == TRUE) ? opponentLeft : playerLeft, MOVE_TAILWIND);} } SCENE { @@ -205,19 +205,19 @@ DOUBLE_BATTLE_TEST("Wind Power activates correctly when Tailwind is used") ANIMATION(ANIM_TYPE_MOVE, MOVE_TAILWIND, opponentLeft); ABILITY_POPUP(opponentLeft, ABILITY_WIND_POWER); - MESSAGE("Being hit by Tailwind charged Foe Wobbuffet with power!"); + MESSAGE("Being hit by Tailwind charged Foe Wattrel with power!"); ABILITY_POPUP(opponentRight, ABILITY_WIND_POWER); - MESSAGE("Being hit by Tailwind charged Foe Wobbuffet with power!"); + MESSAGE("Being hit by Tailwind charged Foe Wattrel with power!"); } else { ANIMATION(ANIM_TYPE_MOVE, MOVE_TAILWIND, playerLeft); ABILITY_POPUP(playerLeft, ABILITY_WIND_POWER); - MESSAGE("Being hit by Tailwind charged Wobbuffet with power!"); + MESSAGE("Being hit by Tailwind charged Wattrel with power!"); ABILITY_POPUP(playerRight, ABILITY_WIND_POWER); - MESSAGE("Being hit by Tailwind charged Wobbuffet with power!"); + MESSAGE("Being hit by Tailwind charged Wattrel with power!"); } } } diff --git a/test/battle/ability/zen_mode.c b/test/battle/ability/zen_mode.c index 37bb4160f9..2734f7a9ec 100644 --- a/test/battle/ability/zen_mode.c +++ b/test/battle/ability/zen_mode.c @@ -4,11 +4,10 @@ SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less at the end of the turn") { u16 standardSpecies, zenSpecies; - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE_GALARIAN; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_GALARIAN_ZEN_MODE; } GIVEN { - ASSUME(P_GEN_5_POKEMON == TRUE); ASSUME(gSpeciesInfo[standardSpecies].baseHP == 105); ASSUME(gSpeciesInfo[zenSpecies].baseHP == 105); PLAYER(standardSpecies) @@ -34,11 +33,10 @@ SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less before the first turn") { u16 standardSpecies, zenSpecies; - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE_GALARIAN; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_GALARIAN_ZEN_MODE; } GIVEN { - ASSUME(P_GEN_5_POKEMON == TRUE); ASSUME(gSpeciesInfo[standardSpecies].baseHP == 105); ASSUME(gSpeciesInfo[zenSpecies].baseHP == 105); PLAYER(standardSpecies) @@ -63,11 +61,10 @@ SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is healed above half") { u16 standardSpecies, zenSpecies; - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } - PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE_GALARIAN; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_ZEN_MODE; } + PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALARIAN_STANDARD_MODE; zenSpecies = SPECIES_DARMANITAN_GALARIAN_ZEN_MODE; } GIVEN { - ASSUME(P_GEN_5_POKEMON == TRUE); ASSUME(gSpeciesInfo[standardSpecies].baseHP == 105); ASSUME(gSpeciesInfo[zenSpecies].baseHP == 105); PLAYER(standardSpecies) diff --git a/test/battle/ability/zero_to_hero.c b/test/battle/ability/zero_to_hero.c new file mode 100644 index 0000000000..72309f6fb9 --- /dev/null +++ b/test/battle/ability/zero_to_hero.c @@ -0,0 +1,175 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Zero to Hero transforms Palafin when it switches out") +{ + GIVEN { + PLAYER(SPECIES_PALAFIN_ZERO) { Ability(ABILITY_ZERO_TO_HERO); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { SWITCH(player, 1); } + TURN { SWITCH(player, 0); } + } SCENE { + MESSAGE("Palafin, that's enough! Come back!"); + MESSAGE("Go! Wobbuffet!"); + MESSAGE("Wobbuffet, that's enough! Come back!"); + MESSAGE("Go! Palafin!"); + ABILITY_POPUP(player, ABILITY_ZERO_TO_HERO); + MESSAGE("Palafin underwent a heroic transformation!"); + } THEN { EXPECT_EQ(player->species, SPECIES_PALAFIN_HERO); } +} + +SINGLE_BATTLE_TEST("Zero to Hero can't be surpressed by Neutralizing Gas") +{ + GIVEN { + PLAYER(SPECIES_PALAFIN_ZERO) { Ability(ABILITY_ZERO_TO_HERO); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KOFFING) { Ability(ABILITY_NEUTRALIZING_GAS); } + } WHEN { + TURN { SWITCH(player, 1); } + TURN { SWITCH(player, 0); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_NEUTRALIZING_GAS); + ABILITY_POPUP(player, ABILITY_ZERO_TO_HERO); + MESSAGE("Palafin underwent a heroic transformation!"); + } THEN { EXPECT_EQ(player->species, SPECIES_PALAFIN_HERO); } +} + +SINGLE_BATTLE_TEST("Zero to Hero transforms both player and opponent") +{ + GIVEN { + PLAYER(SPECIES_PALAFIN_ZERO) { Ability(ABILITY_ZERO_TO_HERO); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PALAFIN_ZERO) { Ability(ABILITY_ZERO_TO_HERO); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { SWITCH(player, 1); SWITCH(opponent, 1); } + TURN { SWITCH(player, 0); SWITCH(opponent, 0); } + } SCENE { + ABILITY_POPUP(player, ABILITY_ZERO_TO_HERO); + MESSAGE("Palafin underwent a heroic transformation!"); + ABILITY_POPUP(opponent, ABILITY_ZERO_TO_HERO); + MESSAGE("Foe Palafin underwent a heroic transformation!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_PALAFIN_HERO); + EXPECT_EQ(opponent->species, SPECIES_PALAFIN_HERO); + } +} + +SINGLE_BATTLE_TEST("Zero to Hero will activate if a switch move is used") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_FLIP_TURN].effect == EFFECT_HIT_ESCAPE); + PLAYER(SPECIES_PALAFIN_ZERO) { Ability(ABILITY_ZERO_TO_HERO); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_FLIP_TURN); SEND_OUT(player, 1); } + TURN { SWITCH(player, 0); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FLIP_TURN, player); + ABILITY_POPUP(player, ABILITY_ZERO_TO_HERO); + MESSAGE("Palafin underwent a heroic transformation!"); + } THEN { EXPECT_EQ(player->species, SPECIES_PALAFIN_HERO); } +} + +SINGLE_BATTLE_TEST("Gastro Acid, Worry Seed, and Simple Beam fail if the target has the Ability Zero to Hero") +{ + u16 move; + + PARAMETRIZE { move = MOVE_GASTRO_ACID; } + PARAMETRIZE { move = MOVE_WORRY_SEED; } + PARAMETRIZE { move = MOVE_SIMPLE_BEAM; } + + GIVEN { + ASSUME(gBattleMoves[MOVE_GASTRO_ACID].effect == EFFECT_GASTRO_ACID); + ASSUME(gBattleMoves[MOVE_WORRY_SEED].effect == EFFECT_WORRY_SEED); + ASSUME(gBattleMoves[MOVE_SIMPLE_BEAM].effect == EFFECT_SIMPLE_BEAM); + PLAYER(SPECIES_PALAFIN_ZERO) { Ability(ABILITY_ZERO_TO_HERO); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, move, player); + MESSAGE("But it failed!"); + } +} + +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(gBattleMoves[MOVE_ROLE_PLAY].effect == EFFECT_ROLE_PLAY); + ASSUME(gBattleMoves[MOVE_SKILL_SWAP].effect == EFFECT_SKILL_SWAP); + ASSUME(gBattleMoves[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 { + PLAYER(SPECIES_PALAFIN_ZERO) { Ability(ABILITY_ZERO_TO_HERO); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { SWITCH(player, 1); } + TURN { SWITCH(player, 0); MOVE(opponent, MOVE_TRANSFORM); } + } SCENE { + ABILITY_POPUP(player, ABILITY_ZERO_TO_HERO); + MESSAGE("Palafin underwent a heroic transformation!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRANSFORM, opponent); + MESSAGE("Foe Wobbuffet transformed into Palafin!"); + NOT ABILITY_POPUP(opponent, ABILITY_ZERO_TO_HERO); + } THEN { EXPECT_EQ(player->species, SPECIES_PALAFIN_HERO); } +} + +SINGLE_BATTLE_TEST("Imposter doesn't apply the heroic transformation message when copying Palafin") +{ + GIVEN { + PLAYER(SPECIES_PALAFIN_ZERO) { Ability(ABILITY_ZERO_TO_HERO); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_DITTO) { Ability(ABILITY_IMPOSTER); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { SWITCH(player, 1); SWITCH(opponent, 1); } + TURN { SWITCH(player, 0); SWITCH(opponent, 0); } + } SCENE { + ABILITY_POPUP(player, ABILITY_ZERO_TO_HERO); + MESSAGE("Palafin underwent a heroic transformation!"); + ABILITY_POPUP(opponent, ABILITY_IMPOSTER); + MESSAGE("Foe Ditto transformed into Palafin using Imposter!"); + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_ZERO_TO_HERO); + MESSAGE("Foe Ditto underwent a heroic transformation!"); + } + } THEN { EXPECT_EQ(player->species, SPECIES_PALAFIN_HERO); } +} + +// Write Trace test and move this one to that file (including every other ability that can't be copied) +SINGLE_BATTLE_TEST("Zero to Hero cannot be copied by Trace") +{ + GIVEN { + PLAYER(SPECIES_PALAFIN_ZERO) { Ability(ABILITY_ZERO_TO_HERO); } + OPPONENT(SPECIES_RALTS) { Ability(ABILITY_TRACE); } + } WHEN { + TURN {} + } SCENE { + NONE_OF { + ABILITY_POPUP(opponent, ABILITY_TRACE); + MESSAGE("Foe Ralts Traced Palafin's Zero to Hero!"); + } + } +} diff --git a/test/battle/ai.c b/test/battle/ai.c new file mode 100644 index 0000000000..88e516fe3e --- /dev/null +++ b/test/battle/ai.c @@ -0,0 +1,647 @@ +#include "global.h" +#include "test/battle.h" +#include "battle_ai_util.h" + +AI_SINGLE_BATTLE_TEST("AI gets baited by Protect Switch tactics") // This behavior is to be fixed. +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); + PLAYER(SPECIES_STUNFISK); + PLAYER(SPECIES_PELIPPER); + OPPONENT(SPECIES_DARKRAI) { Moves(MOVE_TACKLE, MOVE_PECK, MOVE_EARTHQUAKE, MOVE_THUNDERBOLT); } + OPPONENT(SPECIES_SCIZOR) { Moves(MOVE_HYPER_BEAM, MOVE_FACADE, MOVE_GIGA_IMPACT, MOVE_EXTREME_SPEED); } + } WHEN { + + TURN { MOVE(player, MOVE_PROTECT); EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); } // E-quake + TURN { SWITCH(player, 1); EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); } // E-quake + TURN { MOVE(player, MOVE_PROTECT); EXPECT_MOVE(opponent, MOVE_THUNDERBOLT); } // T-Bolt + TURN { SWITCH(player, 0); EXPECT_MOVE(opponent, MOVE_THUNDERBOLT); } // T-Bolt + TURN { MOVE(player, MOVE_PROTECT); EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); } // E-quake + TURN { SWITCH(player, 1); EXPECT_MOVE(opponent, MOVE_EARTHQUAKE);} // E-quake + TURN { MOVE(player, MOVE_PROTECT); EXPECT_MOVE(opponent, MOVE_THUNDERBOLT); } // T-Bolt + } +} + +AI_SINGLE_BATTLE_TEST("AI prefers Bubble over Water Gun if it's slower") +{ + u32 speedPlayer, speedAi; + + PARAMETRIZE { speedPlayer = 200; speedAi = 10; } + PARAMETRIZE { speedPlayer = 10; speedAi = 200; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_SCIZOR) { Speed(speedPlayer); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_WATER_GUN, MOVE_BUBBLE); Speed(speedAi); } + } WHEN { + if (speedPlayer > speedAi) + { + TURN { SCORE_GT(opponent, MOVE_BUBBLE, MOVE_WATER_GUN); } + TURN { SCORE_GT(opponent, MOVE_BUBBLE, MOVE_WATER_GUN); } + } + else + { + TURN { SCORE_EQ(opponent, MOVE_BUBBLE, MOVE_WATER_GUN); } + TURN { SCORE_EQ(opponent, MOVE_BUBBLE, MOVE_WATER_GUN); } + } + } +} + +AI_SINGLE_BATTLE_TEST("AI prefers Water Gun over Bubble if it knows that foe has Contrary") +{ + u32 abilityAI; + + PARAMETRIZE { abilityAI = ABILITY_MOXIE; } + PARAMETRIZE { abilityAI = ABILITY_MOLD_BREAKER; } // Mold Breaker ignores Contrary. + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_SHUCKLE) { Ability(ABILITY_CONTRARY); } + OPPONENT(SPECIES_PINSIR) { Moves(MOVE_WATER_GUN, MOVE_BUBBLE); Ability(abilityAI); } + } WHEN { + TURN { MOVE(player, MOVE_DEFENSE_CURL); } + TURN { MOVE(player, MOVE_DEFENSE_CURL); + if (abilityAI == ABILITY_MOLD_BREAKER) { SCORE_EQ(opponent, MOVE_WATER_GUN, MOVE_BUBBLE); } + else { SCORE_GT(opponent, MOVE_WATER_GUN, MOVE_BUBBLE); }} + } SCENE { + MESSAGE("Shuckle's Defense fell!"); // Contrary activates + } THEN { + EXPECT(gBattleResources->aiData->abilities[B_POSITION_PLAYER_LEFT] == ABILITY_CONTRARY); + } +} + +AI_SINGLE_BATTLE_TEST("AI prefers moves with better accuracy, but only if they both require the same number of hits to ko") +{ + u16 move1 = MOVE_NONE, move2 = MOVE_NONE, move3 = MOVE_NONE, move4 = MOVE_NONE; + u16 hp, expectedMove, turns, abilityAtk, expectedMove2; + + abilityAtk = ABILITY_NONE; + expectedMove2 = MOVE_NONE; + + // Here it's a simple test, both Slam and Strength deal the same damage, but Strength always hits, whereas Slam often misses. + PARAMETRIZE { move1 = MOVE_SLAM; move2 = MOVE_STRENGTH; move3 = MOVE_TACKLE; hp = 490; expectedMove = MOVE_STRENGTH; turns = 4; } + PARAMETRIZE { move1 = MOVE_SLAM; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_TACKLE; hp = 365; expectedMove = MOVE_STRENGTH; turns = 3; } + PARAMETRIZE { move1 = MOVE_SLAM; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_TACKLE; hp = 245; expectedMove = MOVE_STRENGTH; turns = 2; } + PARAMETRIZE { move1 = MOVE_SLAM; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_TACKLE; hp = 125; expectedMove = MOVE_STRENGTH; turns = 1; } + // Mega Kick deals more damage, but can miss more often. Here, AI should choose Mega Kick if it can faint target in less number of turns than Strength. Otherwise, it should use Strength. + PARAMETRIZE { move1 = MOVE_MEGA_KICK; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_TACKLE; hp = 170; expectedMove = MOVE_MEGA_KICK; turns = 1; } + PARAMETRIZE { move1 = MOVE_MEGA_KICK; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_TACKLE; hp = 245; expectedMove = MOVE_STRENGTH; turns = 2; } + // Swift always hits and Guts has accuracy of 100%. Hustle lowers accuracy of all physical moves. + PARAMETRIZE { abilityAtk = ABILITY_HUSTLE; move1 = MOVE_MEGA_KICK; move2 = MOVE_STRENGTH; move3 = MOVE_SWIFT; move4 = MOVE_TACKLE; hp = 5; expectedMove = MOVE_SWIFT; turns = 1; } + PARAMETRIZE { abilityAtk = ABILITY_HUSTLE; move1 = MOVE_MEGA_KICK; move2 = MOVE_STRENGTH; move3 = MOVE_GUST; move4 = MOVE_TACKLE; hp = 5; expectedMove = MOVE_GUST; turns = 1; } + // Mega Kick and Slam both have lower accuracy. Gust and Tackle both have 100, so AI can choose either of them. + PARAMETRIZE { move1 = MOVE_MEGA_KICK; move2 = MOVE_SLAM; move3 = MOVE_TACKLE; move4 = MOVE_GUST; hp = 5; expectedMove = MOVE_GUST; expectedMove2 = MOVE_TACKLE; turns = 1; } + // All moves hit with No guard ability + PARAMETRIZE { move1 = MOVE_MEGA_KICK; move2 = MOVE_GUST; hp = 5; expectedMove = MOVE_MEGA_KICK; expectedMove2 = MOVE_GUST; turns = 1; } + // Tests to compare move that always hits and a beneficial effect. A move with higher acc should be chosen in this case. + PARAMETRIZE { move1 = MOVE_SHOCK_WAVE; move2 = MOVE_ICY_WIND; hp = 5; expectedMove = MOVE_SHOCK_WAVE; turns = 1; } + PARAMETRIZE { move1 = MOVE_SHOCK_WAVE; move2 = MOVE_ICY_WIND; move3 = MOVE_THUNDERBOLT; hp = 5; expectedMove = MOVE_SHOCK_WAVE; expectedMove2 = MOVE_THUNDERBOLT; turns = 1; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { HP(hp); } + PLAYER(SPECIES_WOBBUFFET); + ASSUME(gBattleMoves[MOVE_SWIFT].accuracy == 0); + ASSUME(gBattleMoves[MOVE_SLAM].power == gBattleMoves[MOVE_STRENGTH].power); + ASSUME(gBattleMoves[MOVE_MEGA_KICK].power > gBattleMoves[MOVE_STRENGTH].power); + ASSUME(gBattleMoves[MOVE_SLAM].accuracy < gBattleMoves[MOVE_STRENGTH].accuracy); + ASSUME(gBattleMoves[MOVE_MEGA_KICK].accuracy < gBattleMoves[MOVE_STRENGTH].accuracy); + ASSUME(gBattleMoves[MOVE_TACKLE].accuracy == 100); + ASSUME(gBattleMoves[MOVE_GUST].accuracy == 100); + ASSUME(gBattleMoves[MOVE_SHOCK_WAVE].accuracy == 0); + ASSUME(gBattleMoves[MOVE_THUNDERBOLT].accuracy == 100); + ASSUME(gBattleMoves[MOVE_ICY_WIND].accuracy != 100); + OPPONENT(SPECIES_EXPLOUD) { Moves(move1, move2, move3, move4); Ability(abilityAtk); SpAttack(50); } // Low Sp.Atk, so Swift deals less damage than Strength. + } WHEN { + switch (turns) + { + case 1: + if (expectedMove2 != MOVE_NONE) { + TURN { EXPECT_MOVES(opponent, expectedMove, expectedMove2); SEND_OUT(player, 1); } + } + else { + TURN { EXPECT_MOVE(opponent, expectedMove); SEND_OUT(player, 1); } + } + break; + case 2: + TURN { EXPECT_MOVE(opponent, expectedMove); } + TURN { EXPECT_MOVE(opponent, expectedMove); SEND_OUT(player, 1); } + break; + case 3: + TURN { EXPECT_MOVE(opponent, expectedMove); } + TURN { EXPECT_MOVE(opponent, expectedMove); } + TURN { EXPECT_MOVE(opponent, expectedMove); SEND_OUT(player, 1); } + break; + case 4: + TURN { EXPECT_MOVE(opponent, expectedMove); } + TURN { EXPECT_MOVE(opponent, expectedMove); } + TURN { EXPECT_MOVE(opponent, expectedMove); } + TURN { EXPECT_MOVE(opponent, expectedMove); SEND_OUT(player, 1); } + break; + } + } SCENE { + MESSAGE("Wobbuffet fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI prefers moves which deal more damage instead of moves which are super-effective but deal less damage") +{ + u8 turns = 0; + u16 move1 = MOVE_NONE, move2 = MOVE_NONE, move3 = MOVE_NONE, move4 = MOVE_NONE; + u16 expectedMove, abilityAtk, abilityDef; + + abilityAtk = ABILITY_NONE; + + // Scald and Poison Jab take 3 hits, Waterfall takes 2. + PARAMETRIZE { move1 = MOVE_WATERFALL; move2 = MOVE_SCALD; move3 = MOVE_POISON_JAB; move4 = MOVE_WATER_GUN; expectedMove = MOVE_WATERFALL; turns = 2; } + // Poison Jab takes 3 hits, Water gun 5. Immunity so there's no poison chip damage. + PARAMETRIZE { move1 = MOVE_POISON_JAB; move2 = MOVE_WATER_GUN; expectedMove = MOVE_POISON_JAB; abilityDef = ABILITY_IMMUNITY; turns = 3; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_TYPHLOSION) { Ability(abilityDef); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_NIDOQUEEN) { Moves(move1, move2, move3, move4); Ability(abilityAtk); } + } WHEN { + switch (turns) + { + case 2: + TURN { EXPECT_MOVE(opponent, expectedMove); } + TURN { EXPECT_MOVE(opponent, expectedMove); SEND_OUT(player, 1); } + break; + case 3: + TURN { EXPECT_MOVE(opponent, expectedMove); } + TURN { EXPECT_MOVE(opponent, expectedMove); } + TURN { EXPECT_MOVE(opponent, expectedMove); SEND_OUT(player, 1); } + break; + } + } SCENE { + MESSAGE("Typhlosion fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI prefers Earthquake over Drill Run if both require the same number of hits to ko") +{ + // Drill Run has less accuracy than E-quake, but can score a higher crit. However the chance is too small, so AI should ignore it. + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_TYPHLOSION); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_GEODUDE) { Moves(MOVE_EARTHQUAKE, MOVE_DRILL_RUN); } + } WHEN { + TURN { EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); } + TURN { EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); SEND_OUT(player, 1); } + } + SCENE { + MESSAGE("Typhlosion fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI prefers a weaker move over a one with a downside effect if both require the same number of hits to ko") +{ + u16 move1 = MOVE_NONE, move2 = MOVE_NONE, move3 = MOVE_NONE, move4 = MOVE_NONE; + u16 hp, expectedMove, turns; + + // Both moves require the same number of turns but Flamethrower will be chosen over Overheat (powerful effect) + PARAMETRIZE { move1 = MOVE_OVERHEAT; move2 = MOVE_FLAMETHROWER; hp = 300; expectedMove = MOVE_FLAMETHROWER; turns = 2; } + // Overheat kill in least amount of turns + PARAMETRIZE { move1 = MOVE_OVERHEAT; move2 = MOVE_FLAMETHROWER; hp = 250; expectedMove = MOVE_OVERHEAT; turns = 1; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { HP(hp); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_TYPHLOSION) { Moves(move1, move2, move3, move4); } + } WHEN { + switch (turns) + { + case 1: + TURN { EXPECT_MOVE(opponent, expectedMove); SEND_OUT(player, 1); } + break; + case 2: + TURN { EXPECT_MOVE(opponent, expectedMove); } + TURN { EXPECT_MOVE(opponent, expectedMove); SEND_OUT(player, 1); } + break; + } + } SCENE { + MESSAGE("Wobbuffet fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI prefers moves with the best possible score, chosen randomly if tied") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { HP(5); }; + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB, MOVE_TAKE_DOWN); } + } WHEN { + TURN { EXPECT_MOVES(opponent, MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB); SEND_OUT(player, 1); } + } + SCENE { + MESSAGE("Wobbuffet fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI can choose a status move that boosts the attack by two") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { HP(277); }; + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_KANGASKHAN) { Moves(MOVE_STRENGTH, MOVE_HORN_ATTACK, MOVE_SWORDS_DANCE); } + } WHEN { + TURN { EXPECT_MOVES(opponent, MOVE_STRENGTH, MOVE_SWORDS_DANCE); } + TURN { EXPECT_MOVE(opponent, MOVE_STRENGTH); SEND_OUT(player, 1); } + } +} + +AI_SINGLE_BATTLE_TEST("AI chooses the safest option to faint the target, taking into account accuracy and move effect") +{ + u16 move1 = MOVE_NONE, move2 = MOVE_NONE, move3 = MOVE_NONE, move4 = MOVE_NONE; + u16 expectedMove, expectedMove2 = MOVE_NONE; + u16 abilityAtk = ABILITY_NONE, holdItemAtk = ITEM_NONE; + + // Psychic is not very effective, but always hits. Solarbeam requires a charging turn, Double Edge has recoil and Focus Blast can miss; + PARAMETRIZE { abilityAtk = ABILITY_STURDY; move1 = MOVE_FOCUS_BLAST; move2 = MOVE_SOLAR_BEAM; move3 = MOVE_PSYCHIC; move4 = MOVE_DOUBLE_EDGE; expectedMove = MOVE_PSYCHIC; } + // Same as above, but ai mon has rock head ability, so it can use Double Edge without taking recoil damage. Psychic can also lower Special Defense, + // but because it faints the target it doesn't matter. + PARAMETRIZE { abilityAtk = ABILITY_ROCK_HEAD; move1 = MOVE_FOCUS_BLAST; move2 = MOVE_SOLAR_BEAM; move3 = MOVE_PSYCHIC; move4 = MOVE_DOUBLE_EDGE; + expectedMove = MOVE_PSYCHIC; expectedMove2 = MOVE_DOUBLE_EDGE; } + // This time it's Solarbeam + Psychic, because the weather is sunny. + PARAMETRIZE { abilityAtk = ABILITY_DROUGHT; move1 = MOVE_FOCUS_BLAST; move2 = MOVE_SOLAR_BEAM; move3 = MOVE_PSYCHIC; move4 = MOVE_DOUBLE_EDGE; + expectedMove = MOVE_PSYCHIC; expectedMove2 = MOVE_SOLAR_BEAM; } + // Psychic and Solar Beam are chosen because user is holding Power Herb + PARAMETRIZE { abilityAtk = ABILITY_STURDY; holdItemAtk = ITEM_POWER_HERB; move1 = MOVE_FOCUS_BLAST; move2 = MOVE_SOLAR_BEAM; move3 = MOVE_PSYCHIC; move4 = MOVE_DOUBLE_EDGE; + expectedMove = MOVE_PSYCHIC; expectedMove2 = MOVE_SOLAR_BEAM; } + // Psychic and Skull Bash are chosen because user is holding Power Herb + PARAMETRIZE { abilityAtk = ABILITY_STURDY; holdItemAtk = ITEM_POWER_HERB; move1 = MOVE_FOCUS_BLAST; move2 = MOVE_SKULL_BASH; move3 = MOVE_PSYCHIC; move4 = MOVE_DOUBLE_EDGE; + expectedMove = MOVE_PSYCHIC; expectedMove2 = MOVE_SKULL_BASH; } + // Skull Bash is chosen because it's the most accurate and is holding Power Herb + PARAMETRIZE { abilityAtk = ABILITY_STURDY; holdItemAtk = ITEM_POWER_HERB; move1 = MOVE_FOCUS_BLAST; move2 = MOVE_SKULL_BASH; move3 = MOVE_SLAM; move4 = MOVE_DOUBLE_EDGE; + expectedMove = MOVE_SKULL_BASH; } + // Crabhammer is chosen even if Skull Bash is more accurate, the user has no Power Herb + PARAMETRIZE { abilityAtk = ABILITY_STURDY; move1 = MOVE_FOCUS_BLAST; move2 = MOVE_SKULL_BASH; move3 = MOVE_SLAM; move4 = MOVE_CRABHAMMER; + expectedMove = MOVE_CRABHAMMER; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { HP(5); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_GEODUDE) { Moves(move1, move2, move3, move4); Ability(abilityAtk); Item(holdItemAtk); } + } WHEN { + TURN { if (expectedMove2 == MOVE_NONE) { EXPECT_MOVE(opponent, expectedMove); SEND_OUT(player, 1); } + else {EXPECT_MOVES(opponent, expectedMove, expectedMove2); SCORE_EQ(opponent, expectedMove, expectedMove2); SEND_OUT(player, 1);} + } + } + SCENE { + MESSAGE("Wobbuffet fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI won't use Solar Beam if there is no Sun up or the user is not holding Power Herb") +{ + u16 abilityAtk = ABILITY_NONE; + u16 holdItemAtk = ITEM_NONE; + + PARAMETRIZE { abilityAtk = ABILITY_DROUGHT; } + PARAMETRIZE { holdItemAtk = ITEM_POWER_HERB; } + PARAMETRIZE { } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { HP(211); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_TYPHLOSION) { Moves(MOVE_SOLAR_BEAM, MOVE_GRASS_PLEDGE); Ability(abilityAtk); Item(holdItemAtk); } + } WHEN { + if (abilityAtk == ABILITY_DROUGHT) { + TURN { EXPECT_MOVES(opponent, MOVE_SOLAR_BEAM, MOVE_GRASS_PLEDGE); } + TURN { EXPECT_MOVES(opponent, MOVE_SOLAR_BEAM, MOVE_GRASS_PLEDGE); SEND_OUT(player, 1); } + } else if (holdItemAtk == ITEM_POWER_HERB) { + TURN { EXPECT_MOVES(opponent, MOVE_SOLAR_BEAM, MOVE_GRASS_PLEDGE); MOVE(player, MOVE_KNOCK_OFF); } + TURN { EXPECT_MOVE(opponent, MOVE_GRASS_PLEDGE); SEND_OUT(player, 1); } + } else { + TURN { EXPECT_MOVE(opponent, MOVE_GRASS_PLEDGE); } + TURN { EXPECT_MOVE(opponent, MOVE_GRASS_PLEDGE); SEND_OUT(player, 1); } + } + } SCENE { + MESSAGE("Wobbuffet fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI won't use ground type attacks against flying type Pokemon unless Gravity is in effect") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_CROBAT); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_NIDOQUEEN) { Moves(MOVE_EARTHQUAKE, MOVE_TACKLE, MOVE_POISON_STING, MOVE_GUST); } + } WHEN { + TURN { NOT_EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); } + TURN { MOVE(player, MOVE_GRAVITY); NOT_EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); } + TURN { EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); SEND_OUT(player, 1); } + } SCENE { + MESSAGE("Gravity intensified!"); + } +} + +AI_DOUBLE_BATTLE_TEST("AI won't use a Weather changing move if partner already chose such move") +{ + u32 j, k; + static const u16 weatherMoves[] = {MOVE_SUNNY_DAY, MOVE_HAIL, MOVE_RAIN_DANCE, MOVE_SANDSTORM, MOVE_SNOWSCAPE}; + u16 weatherMoveLeft = MOVE_NONE, weatherMoveRight = MOVE_NONE; + + for (j = 0; j < ARRAY_COUNT(weatherMoves); j++) + { + for (k = 0; k < ARRAY_COUNT(weatherMoves); k++) + { + PARAMETRIZE { weatherMoveLeft = weatherMoves[j]; weatherMoveRight = weatherMoves[k]; } + } + } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Moves(weatherMoveLeft); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, weatherMoveRight); } + } WHEN { + TURN { NOT_EXPECT_MOVE(opponentRight, weatherMoveRight); + SCORE_LT_VAL(opponentRight, weatherMoveRight, AI_SCORE_DEFAULT, target:playerLeft); + SCORE_LT_VAL(opponentRight, weatherMoveRight, AI_SCORE_DEFAULT, target:playerRight); + SCORE_LT_VAL(opponentRight, weatherMoveRight, AI_SCORE_DEFAULT, target:opponentLeft); + } + } +} + +AI_DOUBLE_BATTLE_TEST("AI will not use Helping Hand if partner does not have any damage moves") +{ + u16 move1 = MOVE_NONE, move2 = MOVE_NONE, move3 = MOVE_NONE, move4 = MOVE_NONE; + + PARAMETRIZE{ move1 = MOVE_LEER; move2 = MOVE_TOXIC; } + PARAMETRIZE{ move1 = MOVE_HELPING_HAND; move2 = MOVE_PROTECT; } + PARAMETRIZE{ move1 = MOVE_ACUPRESSURE; move2 = MOVE_DOUBLE_TEAM; move3 = MOVE_TOXIC; move4 = MOVE_PROTECT; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HELPING_HAND, MOVE_TACKLE); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(move1, move2, move3, move4); } + } WHEN { + TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_HELPING_HAND); + SCORE_LT_VAL(opponentLeft, MOVE_HELPING_HAND, AI_SCORE_DEFAULT, target:playerLeft); + SCORE_LT_VAL(opponentLeft, MOVE_HELPING_HAND, AI_SCORE_DEFAULT, target:playerRight); + SCORE_LT_VAL(opponentLeft, MOVE_HELPING_HAND, AI_SCORE_DEFAULT, target:opponentLeft); + } + } SCENE { + NOT MESSAGE("Foe Wobbuffet used Helping Hand!"); + } +} + +AI_DOUBLE_BATTLE_TEST("AI will not use a status move if partner already chose Helping Hand") +{ + s32 j; + u32 statusMove = MOVE_NONE; + + for (j = MOVE_NONE + 1; j < MOVES_COUNT; j++) + { + if (gBattleMoves[j].split == SPLIT_STATUS) { + PARAMETRIZE{ statusMove = j; } + } + } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HELPING_HAND); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, statusMove); } + } WHEN { + TURN { NOT_EXPECT_MOVE(opponentRight, statusMove); + SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:playerLeft); + SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:playerRight); + SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:opponentLeft); + } + } SCENE { + MESSAGE("Foe Wobbuffet used Helping Hand!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI without any flags chooses moves at random - singles") +{ + GIVEN { + AI_FLAGS(0); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_NIDOQUEEN) { Moves(MOVE_SPLASH, MOVE_EXPLOSION, MOVE_RAGE, MOVE_HELPING_HAND); } + } WHEN { + TURN { EXPECT_MOVES(opponent, MOVE_SPLASH, MOVE_EXPLOSION, MOVE_RAGE, MOVE_HELPING_HAND); + SCORE_EQ_VAL(opponent, MOVE_SPLASH, AI_SCORE_DEFAULT); + SCORE_EQ_VAL(opponent, MOVE_EXPLOSION, AI_SCORE_DEFAULT); + SCORE_EQ_VAL(opponent, MOVE_RAGE, AI_SCORE_DEFAULT); + SCORE_EQ_VAL(opponent, MOVE_HELPING_HAND, AI_SCORE_DEFAULT); + } + } +} + +AI_DOUBLE_BATTLE_TEST("AI without any flags chooses moves at random - doubles") +{ + GIVEN { + AI_FLAGS(0); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_NIDOQUEEN) { Moves(MOVE_SPLASH, MOVE_EXPLOSION, MOVE_RAGE, MOVE_HELPING_HAND); } + OPPONENT(SPECIES_NIDOQUEEN) { Moves(MOVE_SPLASH, MOVE_EXPLOSION, MOVE_RAGE, MOVE_HELPING_HAND); } + } WHEN { + TURN { EXPECT_MOVES(opponentLeft, MOVE_SPLASH, MOVE_EXPLOSION, MOVE_RAGE, MOVE_HELPING_HAND); + EXPECT_MOVES(opponentRight, MOVE_SPLASH, MOVE_EXPLOSION, MOVE_RAGE, MOVE_HELPING_HAND); + SCORE_EQ_VAL(opponentLeft, MOVE_SPLASH, AI_SCORE_DEFAULT, target:playerLeft); + SCORE_EQ_VAL(opponentLeft, MOVE_EXPLOSION, AI_SCORE_DEFAULT, target:playerLeft); + SCORE_EQ_VAL(opponentLeft, MOVE_RAGE, AI_SCORE_DEFAULT, target:playerLeft); + SCORE_EQ_VAL(opponentLeft, MOVE_HELPING_HAND, AI_SCORE_DEFAULT, target:playerLeft); + SCORE_EQ_VAL(opponentRight, MOVE_SPLASH, AI_SCORE_DEFAULT, target:playerLeft); + SCORE_EQ_VAL(opponentRight, MOVE_EXPLOSION, AI_SCORE_DEFAULT, target:playerLeft); + SCORE_EQ_VAL(opponentRight, MOVE_RAGE, AI_SCORE_DEFAULT, target:playerLeft); + SCORE_EQ_VAL(opponentRight, MOVE_HELPING_HAND, AI_SCORE_DEFAULT, target:playerLeft); + } + } +} + +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; + u32 speedAlakazm; + u32 aiSmartSwitchFlags = 0; + + PARAMETRIZE{ speedAlakazm = 200; alakazamFirst = TRUE; } // AI will always send out Alakazan as it sees a KO with Focus Blast, even if Alakazam dies before it can get it off + PARAMETRIZE{ speedAlakazm = 200; alakazamFirst = FALSE; aiSmartSwitchFlags = AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES; } // AI_FLAG_SMART_MON_CHOICES lets AI see that Alakazam would be KO'd before it can KO, and won't switch it in + PARAMETRIZE{ speedAlakazm = 400; alakazamFirst = TRUE; aiSmartSwitchFlags = AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES; } // AI_FLAG_SMART_MON_CHOICES recognizes that Alakazam is faster and can KO, and will switch it in + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiSmartSwitchFlags); + PLAYER(SPECIES_WEAVILE) { Speed(300); Ability(ABILITY_SHADOW_TAG); } // Weavile has Shadow Tag, so AI can't switch on the first turn, but has to do it after fainting. + OPPONENT(SPECIES_KADABRA) { Speed(200); Moves(MOVE_PSYCHIC, MOVE_DISABLE, MOVE_TAUNT, MOVE_CALM_MIND); } + OPPONENT(SPECIES_ALAKAZAM) { Speed(speedAlakazm); Moves(MOVE_FOCUS_BLAST, MOVE_PSYCHIC); } // Alakazam has a move which OHKOes Weavile, but it doesn't matter if he's getting KO-ed first. + OPPONENT(SPECIES_BLASTOISE) { Speed(200); Moves(MOVE_BUBBLE_BEAM, MOVE_WATER_GUN, MOVE_LEER, MOVE_STRENGTH); } // Can't OHKO, but survives a hit from Weavile's Night Slash. + } WHEN { + TURN { MOVE(player, MOVE_NIGHT_SLASH) ; EXPECT_SEND_OUT(opponent, alakazamFirst ? 1 : 2); } // AI doesn't send out Alakazam if it gets outsped + } SCENE { + MESSAGE("Foe Kadabra fainted!"); + if (alakazamFirst) { + MESSAGE("{PKMN} TRAINER LEAF sent out Alakazam!"); + } else { + MESSAGE("{PKMN} TRAINER LEAF sent out Blastoise!"); + } + } +} + +AI_SINGLE_BATTLE_TEST("AI switches if Perish Song is about to kill") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) {Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_CROBAT) {Moves(MOVE_TACKLE); } + } WHEN { + TURN { MOVE(player, MOVE_PERISH_SONG); } + TURN { ; } + TURN { ; } + TURN { EXPECT_SWITCH(opponent, 1); } + } SCENE { + MESSAGE("{PKMN} TRAINER LEAF sent out Crobat!"); + } +} + +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 alakazamFaster; + u32 speedAlakazm; + + PARAMETRIZE{ speedAlakazm = 200; alakazamFaster = FALSE; } + PARAMETRIZE{ speedAlakazm = 400; alakazamFaster = TRUE; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES); + PLAYER(SPECIES_WEAVILE) { Speed(300); Ability(ABILITY_SHADOW_TAG); } // Weavile has Shadow Tag, so AI can't switch on the first turn, but has to do it after fainting. + OPPONENT(SPECIES_KADABRA) { Speed(200); Moves(MOVE_PSYCHIC, MOVE_DISABLE, MOVE_TAUNT, MOVE_CALM_MIND); } + OPPONENT(SPECIES_ALAKAZAM) { Speed(speedAlakazm); Moves(MOVE_FOCUS_BLAST, MOVE_PSYCHIC); } // Alakazam has a move which OHKOes Weavile, but it doesn't matter if he's getting KO-ed first. + OPPONENT(SPECIES_BLASTOISE) { Speed(200); Moves(MOVE_BUBBLE_BEAM, MOVE_WATER_GUN, MOVE_LEER, MOVE_STRENGTH); } // Can't OHKO, but survives a hit from Weavile's Night Slash. + } WHEN { + TURN { MOVE(player, MOVE_NIGHT_SLASH) ; EXPECT_SEND_OUT(opponent, alakazamFaster ? 1 : 2); } + } SCENE { + MESSAGE("Foe Kadabra fainted!"); + if (alakazamFaster) { + MESSAGE("{PKMN} TRAINER LEAF sent out Alakazam!"); + } else { + MESSAGE("{PKMN} TRAINER LEAF sent out Blastoise!"); + } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: AI considers hazard damage when choosing which Pokemon to switch in") +{ + u32 aiIsSmart = 0; + u32 aiSmartSwitchFlags = 0; + + PARAMETRIZE{ aiIsSmart = 0; aiSmartSwitchFlags = 0; } // AI doesn't care about hazard damage resulting in Pokemon being KO'd + PARAMETRIZE{ aiIsSmart = 1; aiSmartSwitchFlags = AI_FLAG_SMART_MON_CHOICES; } // AI_FLAG_SMART_MON_CHOICES avoids being KO'd as a result of hazards damage + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiSmartSwitchFlags); + PLAYER(SPECIES_MEGANIUM) { Speed(100); SpDefense(328); SpAttack(265); Moves(MOVE_STEALTH_ROCK, MOVE_SURF); } // Meganium does ~56% minimum ~66% maximum, enough to KO Charizard after rocks and never KO Typhlosion after rocks + OPPONENT(SPECIES_PONYTA) { Level(5); Speed(5); Moves(MOVE_TACKLE); } + OPPONENT(SPECIES_CHARIZARD) { Speed(200); Moves(MOVE_FLAMETHROWER); SpAttack(317); SpDefense(207); MaxHP(297); } // Outspeends and 2HKOs Meganium + OPPONENT(SPECIES_TYPHLOSION) { Speed(200); Moves(MOVE_FLAMETHROWER); SpAttack(317); SpDefense(207); MaxHP(297); } // Outspeends and 2HKOs Meganium + } WHEN { + TURN { MOVE(player, MOVE_STEALTH_ROCK) ;} + TURN { MOVE(player, MOVE_SURF) ; EXPECT_SEND_OUT(opponent, aiIsSmart ? 2 : 1); } // AI sends out Typhlosion to get the KO with the flag rather than Charizard + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Mid-battle switches prioritize type matchup + SE move, then type matchup") +{ + u32 aiSmartSwitchFlags = 0; + u32 move1; + u32 move2; + u32 expectedIndex; + + PARAMETRIZE{ expectedIndex = 3; move1 = MOVE_TACKLE; move2 = MOVE_TACKLE; aiSmartSwitchFlags = 0; } // When not smart, AI will only switch in a defensive mon if it has a SE move, otherwise will just default to damage + PARAMETRIZE{ expectedIndex = 1; move1 = MOVE_GIGA_DRAIN; move2 = MOVE_TACKLE; aiSmartSwitchFlags = 0; } + PARAMETRIZE{ expectedIndex = 2; move1 = MOVE_TACKLE; move2 = MOVE_TACKLE; aiSmartSwitchFlags = AI_FLAG_SMART_MON_CHOICES; } // When smart, AI will prioritize SE move, but still switch in good type matchup without SE move + PARAMETRIZE{ expectedIndex = 1; move1 = MOVE_GIGA_DRAIN; move2 = MOVE_TACKLE; aiSmartSwitchFlags = AI_FLAG_SMART_MON_CHOICES; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiSmartSwitchFlags); + PLAYER(SPECIES_MARSHTOMP) { Level(30); Moves(MOVE_MUD_BOMB, MOVE_WATER_GUN, MOVE_GROWL, MOVE_MUD_SHOT); Speed(5); } + OPPONENT(SPECIES_PONYTA) { Level(1); Moves(MOVE_NONE); Speed(6); } // Forces switchout + OPPONENT(SPECIES_TANGELA) { Level(30); Moves(move1); Speed(4); } + OPPONENT(SPECIES_LOMBRE) { Level(30); Moves(move2); Speed(4); } + OPPONENT(SPECIES_HARIYAMA) { Level(30); Moves(MOVE_VITAL_THROW); Speed(4); } + } WHEN { + TURN { MOVE(player, MOVE_GROWL) ; EXPECT_SWITCH(opponent, expectedIndex); } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Mid-battle switches prioritize defensive options") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES); + PLAYER(SPECIES_SWELLOW) { Level(30); Moves(MOVE_WING_ATTACK, MOVE_BOOMBURST); Speed(5); } + OPPONENT(SPECIES_PONYTA) { Level(1); Moves(MOVE_NONE); Speed(4); } // Forces switchout + OPPONENT(SPECIES_ARON) { Level(30); Moves(MOVE_HEADBUTT); Speed(4); } // Mid battle, AI sends out Aron + OPPONENT(SPECIES_ELECTRODE) { Level(30); Moves(MOVE_CHARGE_BEAM); Speed(6); } + } WHEN { + TURN { MOVE(player, MOVE_WING_ATTACK) ; EXPECT_SWITCH(opponent, 1); } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Post-KO switches prioritize offensive options") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES); + PLAYER(SPECIES_SWELLOW) { Level(30); Moves(MOVE_WING_ATTACK, MOVE_BOOMBURST); Speed(5); } + OPPONENT(SPECIES_PONYTA) { Level(1); Moves(MOVE_TACKLE); Speed(4); } + OPPONENT(SPECIES_ARON) { Level(30); Moves(MOVE_HEADBUTT); Speed(4); } // Mid battle, AI sends out Aron + OPPONENT(SPECIES_ELECTRODE) { Level(30); Moves(MOVE_CHARGE_BEAM); Speed(6); } + } WHEN { + TURN { MOVE(player, MOVE_WING_ATTACK) ; EXPECT_SEND_OUT(opponent, 2); } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI switches out after sufficient stat drops") +{ + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); + PLAYER(SPECIES_HITMONTOP) { Level(30); Moves(MOVE_CHARM, MOVE_TACKLE); Ability(ABILITY_INTIMIDATE); Speed(5); } + OPPONENT(SPECIES_GRIMER) { Level(30); Moves(MOVE_TACKLE); Speed(4); } + OPPONENT(SPECIES_PONYTA) { Level(30); Moves(MOVE_HEADBUTT); Speed(4); } + } WHEN { + TURN { MOVE(player, MOVE_CHARM) ;} + TURN { MOVE(player, MOVE_TACKLE) ; EXPECT_SWITCH(opponent, 1); } + } +} + +AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will not switch out if Pokemon would faint to hazards unless party member can clear them") +{ + u32 move1; + + PARAMETRIZE{move1 = MOVE_TACKLE; } + PARAMETRIZE{move1 = MOVE_RAPID_SPIN; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING); + PLAYER(SPECIES_HITMONTOP) { Level(30); Moves(MOVE_CHARM, MOVE_TACKLE, MOVE_STEALTH_ROCK, MOVE_EARTHQUAKE); Ability(ABILITY_INTIMIDATE); Speed(5); } + OPPONENT(SPECIES_GRIMER) { Level(30); Moves(MOVE_TACKLE); Item(ITEM_FOCUS_SASH); Speed(4); } + OPPONENT(SPECIES_PONYTA) { Level(30); Moves(MOVE_HEADBUTT, move1); Speed(4); } + } WHEN { + TURN { MOVE(player, MOVE_STEALTH_ROCK) ;} + TURN { MOVE(player, MOVE_EARTHQUAKE) ;} + TURN { MOVE(player, MOVE_CHARM) ;} + TURN { // If the AI has a mon that can remove hazards, don't prevent them switching out + MOVE(player, MOVE_CHARM); + if (move1 == MOVE_RAPID_SPIN) + EXPECT_SWITCH(opponent, 1); + else if (move1 == MOVE_TACKLE) + EXPECT_MOVE(opponent, MOVE_TACKLE); + } + } +} diff --git a/test/battle/ai_check_viability.c b/test/battle/ai_check_viability.c new file mode 100644 index 0000000000..4666eca7cb --- /dev/null +++ b/test/battle/ai_check_viability.c @@ -0,0 +1,191 @@ +#include "global.h" +#include "test/battle.h" +#include "battle_ai_util.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_BODY_SLAM].effect == EFFECT_PARALYZE_HIT); +} + +AI_SINGLE_BATTLE_TEST("AI sees increased base power of Facade") +{ + u16 status1, expectedMove; + + PARAMETRIZE { status1 = STATUS1_NONE; expectedMove = MOVE_BODY_SLAM; } + PARAMETRIZE { status1 = STATUS1_BURN; expectedMove = MOVE_FACADE; } + + GIVEN { + ASSUME(gBattleMoves[MOVE_FACADE].effect == EFFECT_FACADE); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { HP(60); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_BODY_SLAM, MOVE_FACADE); Status1(status1); } + } WHEN { + TURN { EXPECT_MOVE(opponent, expectedMove); } + } SCENE { + if (expectedMove == MOVE_FACADE) + MESSAGE("Wobbuffet fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI sees increased base power of Smelling Salt") +{ + u16 status1, expectedMove; + + PARAMETRIZE { status1 = STATUS1_NONE; expectedMove = MOVE_BODY_SLAM; } + PARAMETRIZE { status1 = STATUS1_PARALYSIS; expectedMove = MOVE_SMELLING_SALTS; } + + GIVEN { + ASSUME(B_UPDATED_MOVE_DATA >= GEN_6); + ASSUME(gBattleMoves[MOVE_SMELLING_SALTS].effect == EFFECT_SMELLING_SALTS); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { HP(60); Status1(status1); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_BODY_SLAM, MOVE_SMELLING_SALTS); } + } WHEN { + TURN { EXPECT_MOVE(opponent, expectedMove); } + } SCENE { + if (expectedMove == MOVE_SMELLING_SALTS) + MESSAGE("Wobbuffet fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI sees increased base power of Wake Up Slap") +{ + u16 status1, expectedMove; + + PARAMETRIZE { status1 = STATUS1_NONE; expectedMove = MOVE_BODY_SLAM; } + PARAMETRIZE { status1 = STATUS1_SLEEP; expectedMove = MOVE_WAKE_UP_SLAP; } + + GIVEN { + ASSUME(B_UPDATED_MOVE_DATA >= GEN_6); + ASSUME(gBattleMoves[MOVE_WAKE_UP_SLAP].effect == EFFECT_WAKE_UP_SLAP); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_MEGANIUM) { HP(35); Status1(status1); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_BODY_SLAM, MOVE_WAKE_UP_SLAP); } + } WHEN { + TURN { EXPECT_MOVE(opponent, expectedMove); } + } SCENE { + if (expectedMove == MOVE_WAKE_UP_SLAP) + MESSAGE("Meganium fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI sees increased base power of Grav Apple") +{ + u32 movePlayer; + u16 expectedMove; + + PARAMETRIZE { movePlayer = MOVE_CELEBRATE; expectedMove = MOVE_TROP_KICK; } + PARAMETRIZE { movePlayer = MOVE_GRAVITY; expectedMove = MOVE_GRAV_APPLE; } + + GIVEN { + ASSUME(gBattleMoves[MOVE_GRAV_APPLE].effect == EFFECT_GRAV_APPLE); + ASSUME(gBattleMoves[MOVE_TROP_KICK].effect == EFFECT_ATTACK_DOWN_HIT); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { HP(81); Speed(20); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(10); Moves(MOVE_TROP_KICK, MOVE_GRAV_APPLE); } + } WHEN { + TURN { MOVE(player, movePlayer); EXPECT_MOVE(opponent, MOVE_TROP_KICK); } + TURN { MOVE(player, MOVE_CELEBRATE); EXPECT_MOVE(opponent, expectedMove); } + } SCENE { + if (expectedMove == MOVE_GRAV_APPLE) + MESSAGE("Wobbuffet fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI sees increased base power of Flail") +{ + u16 hp, expectedMove; + + PARAMETRIZE { hp = 490; expectedMove = MOVE_BODY_SLAM; } + PARAMETRIZE { hp = 5; expectedMove = MOVE_FLAIL; } + + GIVEN { + ASSUME(gBattleMoves[MOVE_FLAIL].effect == EFFECT_FLAIL); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { Speed(10); } + OPPONENT(SPECIES_WOBBUFFET) { HP(hp); MaxHP(490); Speed(20); Moves(MOVE_BODY_SLAM, MOVE_FLAIL); } + } WHEN { + TURN { EXPECT_MOVE(opponent, expectedMove); } + } +} + +AI_SINGLE_BATTLE_TEST("AI will only use Dream Eater if target is asleep") +{ + u16 status1, expectedMove; + + PARAMETRIZE { status1 = STATUS1_NONE; expectedMove = MOVE_BODY_SLAM; } + PARAMETRIZE { status1 = STATUS1_SLEEP; expectedMove = MOVE_DREAM_EATER; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_MEGANIUM) { HP(38); Status1(status1); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_BODY_SLAM, MOVE_DREAM_EATER); } + } WHEN { + TURN { EXPECT_MOVE(opponent, expectedMove); } + } SCENE { + if (expectedMove == MOVE_DREAM_EATER) + MESSAGE("Meganium fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI sees increased base power of Spit Up") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_STOCKPILE].effect == EFFECT_STOCKPILE); + ASSUME(gBattleMoves[MOVE_SPIT_UP].effect == EFFECT_SPIT_UP); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { HP(43); } + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_STOCKPILE, MOVE_SPIT_UP, MOVE_TACKLE); } + } WHEN { + TURN { EXPECT_MOVE(opponent, MOVE_STOCKPILE); } + TURN { EXPECT_MOVE(opponent, MOVE_SPIT_UP); } + } SCENE { + MESSAGE("Wobbuffet fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI can choose Counter or Mirror Coat if the predicted move split is correct and user doesn't faint") +{ + u16 playerMove = MOVE_NONE, opponentMove = MOVE_NONE; + + PARAMETRIZE { playerMove = MOVE_STRENGTH; opponentMove = MOVE_COUNTER; } + PARAMETRIZE { playerMove = MOVE_POWER_GEM; opponentMove = MOVE_MIRROR_COAT; } + + GIVEN { + ASSUME(gBattleMoves[MOVE_COUNTER].effect == EFFECT_COUNTER); + ASSUME(gBattleMoves[MOVE_MIRROR_COAT].effect == EFFECT_MIRROR_COAT); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { Speed(1); } + OPPONENT(SPECIES_WOBBUFFET) { HP(102); Speed(100); Moves(opponentMove, MOVE_STRENGTH); } + } WHEN { + TURN { MOVE(player, playerMove); EXPECT_MOVE(opponent, MOVE_STRENGTH); } + TURN { MOVE(player, playerMove); EXPECT_MOVE(opponent, opponentMove); } + TURN { MOVE(player, playerMove); EXPECT_MOVE(opponent, MOVE_STRENGTH); } + } SCENE { + MESSAGE("Foe Wobbuffet fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI chooses moves with secondary effect that have a 100% chance to trigger") +{ + u16 ability; + + PARAMETRIZE { ability = ABILITY_NONE; } + PARAMETRIZE { ability = ABILITY_SERENE_GRACE; } + + GIVEN { + AI_LOG; + ASSUME(gBattleMoves[MOVE_SHADOW_BALL].effect == EFFECT_SPECIAL_DEFENSE_DOWN_HIT); + ASSUME(gBattleMoves[MOVE_SHADOW_BALL].secondaryEffectChance == 20); + ASSUME(gBattleMoves[MOVE_LUSTER_PURGE].effect == EFFECT_SPECIAL_DEFENSE_DOWN_HIT); + ASSUME(gBattleMoves[MOVE_LUSTER_PURGE].secondaryEffectChance == 50); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_REGICE); + OPPONENT(SPECIES_REGIROCK) { Ability(ability); Moves(MOVE_SHADOW_BALL, MOVE_LUSTER_PURGE); } + } WHEN { + if (ability == ABILITY_NONE) + TURN { EXPECT_MOVE(opponent, MOVE_SHADOW_BALL); } + else + TURN { EXPECT_MOVES(opponent, MOVE_LUSTER_PURGE); } + } +} diff --git a/test/battle/ai_trytofaint.c b/test/battle/ai_trytofaint.c new file mode 100644 index 0000000000..bbfbee19d1 --- /dev/null +++ b/test/battle/ai_trytofaint.c @@ -0,0 +1,48 @@ +#include "global.h" +#include "test/battle.h" +#include "battle_ai_util.h" + +AI_SINGLE_BATTLE_TEST("AI prefers priority moves if it's slower and can kill target") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_QUICK_ATTACK].priority == 1); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { HP(1); Speed(100); } + PLAYER(SPECIES_WOBBUFFET) { Speed(100); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(1); Moves(MOVE_QUICK_ATTACK, MOVE_STRENGTH); } + } WHEN { + TURN { EXPECT_MOVE(opponent, MOVE_QUICK_ATTACK); SEND_OUT(player, 1); } + } SCENE { + MESSAGE("Wobbuffet fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI will choose a random move if it's faster and can kill target") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_QUICK_ATTACK].priority == 1); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { HP(1); Speed(1); } + PLAYER(SPECIES_WOBBUFFET) { Speed(1); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); Moves(MOVE_QUICK_ATTACK, MOVE_STRENGTH); } + } WHEN { + TURN { EXPECT_MOVES(opponent, MOVE_QUICK_ATTACK, MOVE_STRENGTH); SEND_OUT(player, 1); } + } SCENE { + MESSAGE("Wobbuffet fainted!"); + } +} + +AI_SINGLE_BATTLE_TEST("AI will choose a priority move if it is slower then the target and will be killed") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_QUICK_ATTACK].priority == 1); + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { Speed(100); } + OPPONENT(SPECIES_WOBBUFFET) { HP(60); Speed(1); Moves(MOVE_QUICK_ATTACK, MOVE_STRENGTH); } + } WHEN { + TURN { MOVE(player, MOVE_STRENGTH); EXPECT_MOVE(opponent, MOVE_STRENGTH); } + TURN { MOVE(player, MOVE_STRENGTH); EXPECT_MOVE(opponent, MOVE_QUICK_ATTACK); } + } SCENE { + MESSAGE("Foe Wobbuffet fainted!"); + } +} diff --git a/test/battle/damage_formula.c b/test/battle/damage_formula.c index 98aa197ca1..3aeeeb9f83 100644 --- a/test/battle/damage_formula.c +++ b/test/battle/damage_formula.c @@ -31,11 +31,11 @@ SINGLE_BATTLE_TEST("Damage calculation matches Gen5+") MOVE(player, MOVE_ICE_FANG, WITH_RNG(RNG_DAMAGE_MODIFIER, i)); } } - SCENE{ + SCENE { MESSAGE("Glaceon used Ice Fang!"); HP_BAR(opponent, captureDamage: &dmg); } - THEN{ + THEN { EXPECT_EQ(expectedDamage, dmg); } } @@ -68,10 +68,47 @@ SINGLE_BATTLE_TEST("Damage calculation matches Gen5+ (Muscle Band, crit)") MOVE(player, MOVE_ICE_FANG, WITH_RNG(RNG_DAMAGE_MODIFIER, i), criticalHit: TRUE); } } - SCENE{ + SCENE { MESSAGE("Glaceon used Ice Fang!"); HP_BAR(opponent, captureDamage: &dmg); } + THEN { + EXPECT_EQ(expectedDamage, dmg); + } +} + +SINGLE_BATTLE_TEST("Damage calculation matches Gen5+ (Marshadow vs Mawile)") +{ + s16 dmg; + s16 expectedDamage; + PARAMETRIZE { expectedDamage = 145; } + PARAMETRIZE { expectedDamage = 144; } + PARAMETRIZE { expectedDamage = 142; } + PARAMETRIZE { expectedDamage = 141; } + PARAMETRIZE { expectedDamage = 139; } + PARAMETRIZE { expectedDamage = 138; } + PARAMETRIZE { expectedDamage = 136; } + PARAMETRIZE { expectedDamage = 135; } + PARAMETRIZE { expectedDamage = 133; } + PARAMETRIZE { expectedDamage = 132; } + PARAMETRIZE { expectedDamage = 130; } + PARAMETRIZE { expectedDamage = 129; } + PARAMETRIZE { expectedDamage = 127; } + PARAMETRIZE { expectedDamage = 126; } + PARAMETRIZE { expectedDamage = 124; } + PARAMETRIZE { expectedDamage = 123; } + GIVEN { + PLAYER(SPECIES_MARSHADOW) { Level(100); Attack(286); } + OPPONENT(SPECIES_MAWILE) { Level(100); Defense(226); HP(241); } + } WHEN { + TURN { + MOVE(player, MOVE_SPECTRAL_THIEF, WITH_RNG(RNG_DAMAGE_MODIFIER, i), criticalHit: FALSE); + } + } + SCENE{ + MESSAGE("Marshadow used SpectrlThief!"); + HP_BAR(opponent, captureDamage: &dmg); + } THEN{ EXPECT_EQ(expectedDamage, dmg); } diff --git a/test/battle/exp.c b/test/battle/exp.c new file mode 100644 index 0000000000..a7879b692c --- /dev/null +++ b/test/battle/exp.c @@ -0,0 +1,150 @@ +#include "global.h" +#include "test/battle.h" + +#if B_EXP_CATCH >= GEN_6 + +WILD_BATTLE_TEST("Pokemon gain exp after catching a Pokemon") +{ + u8 level = 0; + + PARAMETRIZE { level = 50; } + PARAMETRIZE { level = MAX_LEVEL; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Level(level); } + OPPONENT(SPECIES_CATERPIE) { HP(1); } + } WHEN { + TURN { USE_ITEM(player, ITEM_ULTRA_BALL); } + } SCENE { + MESSAGE("You used Ultra Ball!"); + ANIMATION(ANIM_TYPE_SPECIAL, B_ANIM_BALL_THROW, player); + if (level != MAX_LEVEL) { + EXPERIENCE_BAR(player); + } + } +} + +#endif // B_EXP_CATCH + +WILD_BATTLE_TEST("Higher leveled Pokemon give more exp", s32 exp) +{ + u8 level = 0; + + PARAMETRIZE { level = 5; } + PARAMETRIZE { level = 10; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Level(20); } + OPPONENT(SPECIES_CATERPIE) { Level(level); HP(1); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wild Caterpie fainted!"); + EXPERIENCE_BAR(player, captureGainedExp: &results[i].exp); + } FINALLY { + EXPECT_GT(results[1].exp, results[0].exp); + } +} + +WILD_BATTLE_TEST("Lucky Egg boosts gained exp points by 50%", s32 exp) +{ + u32 item = 0; + + PARAMETRIZE { item = ITEM_LUCKY_EGG; } + PARAMETRIZE { item = ITEM_NONE; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Level(20); Item(item); } + OPPONENT(SPECIES_CATERPIE) { Level(10); HP(1); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wild Caterpie fainted!"); + EXPERIENCE_BAR(player, captureGainedExp: &results[i].exp); + } FINALLY { + EXPECT_MUL_EQ(results[1].exp, Q_4_12(1.5), results[0].exp); + } +} + +#if (B_SCALED_EXP == GEN_5 || B_SCALED_EXP >= GEN_7) + +WILD_BATTLE_TEST("Exp is scaled to player and opponent's levels", s32 exp) +{ + u8 level = 0; + + PARAMETRIZE { level = 5; } + PARAMETRIZE { level = 10; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Level(level); } + OPPONENT(SPECIES_CATERPIE) { Level(5); HP(1); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wild Caterpie fainted!"); + EXPERIENCE_BAR(player, captureGainedExp: &results[i].exp); + } FINALLY { + EXPECT_GT(results[0].exp, results[1].exp); + } +} + +#endif + +WILD_BATTLE_TEST("Large exp gains are supported", s32 exp) // #1455 +{ + u8 level = 0; + + PARAMETRIZE { level = 10; } + PARAMETRIZE { level = 50; } + PARAMETRIZE { level = MAX_LEVEL; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Level(1); Item(ITEM_LUCKY_EGG); OTName("Test"); } // OT Name is different so it gets more exp as a traded mon + OPPONENT(SPECIES_BLISSEY) { Level(level); HP(1); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wild Blissey fainted!"); + EXPERIENCE_BAR(player, captureGainedExp: &results[i].exp); + } THEN { + EXPECT(GetMonData(&gPlayerParty[0], MON_DATA_LEVEL) > 1); + EXPECT(GetMonData(&gPlayerParty[0], MON_DATA_EXP) > 1); + } FINALLY { + EXPECT_GT(results[1].exp, results[0].exp); + EXPECT_GT(results[2].exp, results[1].exp); + } +} + +#if I_EXP_SHARE_ITEM < GEN_6 + +WILD_BATTLE_TEST("Exp Share(held) gives Experience to mons which did not participate in battle") +{ + u32 item = 0; + + PARAMETRIZE { item = ITEM_NONE; } + PARAMETRIZE { item = ITEM_EXP_SHARE; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT) { Level(40); Item(item); } + OPPONENT(SPECIES_CATERPIE) { Level(10); HP(1); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Wild Caterpie fainted!"); + // This message should appear only for gen6> exp share. + NOT MESSAGE("The rest of your team gained EXP. Points thanks to the Exp. Share!"); + } THEN { + if (item == ITEM_EXP_SHARE) + EXPECT_GT(GetMonData(&gPlayerParty[1], MON_DATA_EXP), gExperienceTables[gSpeciesInfo[SPECIES_WYNAUT].growthRate][40]); + else + EXPECT_EQ(GetMonData(&gPlayerParty[1], MON_DATA_EXP), gExperienceTables[gSpeciesInfo[SPECIES_WYNAUT].growthRate][40]); + } +} + +#endif // I_EXP_SHARE_ITEM diff --git a/test/battle/form_change/battle_switch.c b/test/battle/form_change/battle_switch.c index bd18e0ccfc..ba564a02a1 100644 --- a/test/battle/form_change/battle_switch.c +++ b/test/battle/form_change/battle_switch.c @@ -4,8 +4,7 @@ SINGLE_BATTLE_TEST("Aegislash reverts to Shield Form upon switching out") { GIVEN { - ASSUME(P_GEN_6_POKEMON == TRUE); - PLAYER(SPECIES_AEGISLASH); + PLAYER(SPECIES_AEGISLASH_SHIELD); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -18,6 +17,6 @@ SINGLE_BATTLE_TEST("Aegislash reverts to Shield Form upon switching out") MESSAGE("Aegislash used Tackle!"); MESSAGE("Foe Wobbuffet used Celebrate!"); } THEN { - EXPECT_EQ(player->species, SPECIES_AEGISLASH); + EXPECT_EQ(player->species, SPECIES_AEGISLASH_SHIELD); } } diff --git a/test/battle/form_change/begin_battle.c b/test/battle/form_change/begin_battle.c index 328db756df..f240b5ca07 100644 --- a/test/battle/form_change/begin_battle.c +++ b/test/battle/form_change/begin_battle.c @@ -4,8 +4,7 @@ SINGLE_BATTLE_TEST("Xerneas changes into Active Form upon battle start") { GIVEN { - ASSUME(P_GEN_6_POKEMON == TRUE); - PLAYER(SPECIES_XERNEAS); + PLAYER(SPECIES_XERNEAS_NEUTRAL); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } @@ -20,14 +19,13 @@ SINGLE_BATTLE_TEST("Zacian changes into its Crowned Form when holding the Rusted PARAMETRIZE { item = ITEM_NONE; } PARAMETRIZE { item = ITEM_RUSTED_SWORD; } GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); - PLAYER(SPECIES_ZACIAN) { Item(item); } + PLAYER(SPECIES_ZACIAN_HERO_OF_MANY_BATTLES) { Item(item); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } } THEN { if (item == ITEM_NONE) - EXPECT_EQ(player->species, SPECIES_ZACIAN); + EXPECT_EQ(player->species, SPECIES_ZACIAN_HERO_OF_MANY_BATTLES); else EXPECT_EQ(player->species, SPECIES_ZACIAN_CROWNED_SWORD); } @@ -36,8 +34,7 @@ SINGLE_BATTLE_TEST("Zacian changes into its Crowned Form when holding the Rusted SINGLE_BATTLE_TEST("Zacian's Iron Head becomes Behemoth Blade upon form change") { GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); - PLAYER(SPECIES_ZACIAN) { Item(ITEM_RUSTED_SWORD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); } + PLAYER(SPECIES_ZACIAN_HERO_OF_MANY_BATTLES) { Item(ITEM_RUSTED_SWORD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } @@ -53,14 +50,13 @@ SINGLE_BATTLE_TEST("Zamazenta changes into its Crowned Form when holding the Rus PARAMETRIZE { item = ITEM_NONE; } PARAMETRIZE { item = ITEM_RUSTED_SHIELD; } GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); - PLAYER(SPECIES_ZAMAZENTA) { Item(item); } + PLAYER(SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES) { Item(item); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } } THEN { if (item == ITEM_NONE) - EXPECT_EQ(player->species, SPECIES_ZAMAZENTA); + EXPECT_EQ(player->species, SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES); else EXPECT_EQ(player->species, SPECIES_ZAMAZENTA_CROWNED_SHIELD); } @@ -69,8 +65,7 @@ SINGLE_BATTLE_TEST("Zamazenta changes into its Crowned Form when holding the Rus SINGLE_BATTLE_TEST("Zamazenta's Iron Head becomes Behemoth Bash upon form change") { GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); - PLAYER(SPECIES_ZAMAZENTA) { Item(ITEM_RUSTED_SHIELD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); } + PLAYER(SPECIES_ZAMAZENTA_HERO_OF_MANY_BATTLES) { Item(ITEM_RUSTED_SHIELD); Moves(MOVE_IRON_HEAD, MOVE_CELEBRATE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_CELEBRATE); } diff --git a/test/battle/form_change/faint.c b/test/battle/form_change/faint.c index f4baa2894e..849d8e5883 100644 --- a/test/battle/form_change/faint.c +++ b/test/battle/form_change/faint.c @@ -4,8 +4,7 @@ SINGLE_BATTLE_TEST("Aegislash reverts to Shield Form upon fainting") { GIVEN { - ASSUME(P_GEN_6_POKEMON == TRUE); - PLAYER(SPECIES_AEGISLASH) { HP(1); } + PLAYER(SPECIES_AEGISLASH_SHIELD) { HP(1); } PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -14,6 +13,6 @@ SINGLE_BATTLE_TEST("Aegislash reverts to Shield Form upon fainting") MESSAGE("Foe Wobbuffet used Gust!"); MESSAGE("Aegislash fainted!"); } THEN { - EXPECT_EQ(GetMonData(&PLAYER_PARTY[0], MON_DATA_SPECIES), SPECIES_AEGISLASH); + EXPECT_EQ(GetMonData(&PLAYER_PARTY[0], MON_DATA_SPECIES), SPECIES_AEGISLASH_SHIELD); } } diff --git a/test/battle/form_change/mega_evolution.c b/test/battle/form_change/mega_evolution.c index 3b47c7c86b..51037e77c7 100644 --- a/test/battle/form_change/mega_evolution.c +++ b/test/battle/form_change/mega_evolution.c @@ -74,7 +74,7 @@ SINGLE_BATTLE_TEST("Rayquaza can Mega Evolve knowing Dragon Ascent") SINGLE_BATTLE_TEST("Mega Evolution affects turn order") { GIVEN { - ASSUME(B_MEGA_EVO_TURN_ORDER); + ASSUME(B_MEGA_EVO_TURN_ORDER >= GEN_7); PLAYER(SPECIES_GARDEVOIR) { Item(ITEM_GARDEVOIRITE); Speed(105); } OPPONENT(SPECIES_WOBBUFFET) { Speed(106); } } WHEN { @@ -90,7 +90,7 @@ SINGLE_BATTLE_TEST("Mega Evolution affects turn order") SINGLE_BATTLE_TEST("Abilities replaced by Mega Evolution do not affect turn order") { GIVEN { - ASSUME(B_MEGA_EVO_TURN_ORDER); + ASSUME(B_MEGA_EVO_TURN_ORDER >= GEN_7); ASSUME(gSpeciesInfo[SPECIES_SABLEYE_MEGA].abilities[0] != ABILITY_STALL && gSpeciesInfo[SPECIES_SABLEYE_MEGA].abilities[1] != ABILITY_STALL); PLAYER(SPECIES_SABLEYE) { Item(ITEM_SABLENITE); Ability(ABILITY_STALL); Speed(105); } diff --git a/test/battle/form_change/status.c b/test/battle/form_change/status.c new file mode 100644 index 0000000000..a8f286846a --- /dev/null +++ b/test/battle/form_change/status.c @@ -0,0 +1,15 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Shaymin-Sky reverts to Shaymin-Land when frozen or frostbitten") +{ + ASSUME(gBattleMoves[MOVE_POWDER_SNOW].effect == ((B_USE_FROSTBITE == TRUE) ? EFFECT_FROSTBITE_HIT : EFFECT_FREEZE_HIT)); + GIVEN { + PLAYER(SPECIES_SHAYMIN_SKY); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_POWDER_SNOW); } + } THEN { + EXPECT_EQ(player->species, SPECIES_SHAYMIN_LAND); + } +} diff --git a/test/battle/form_change/ultra_burst.c b/test/battle/form_change/ultra_burst.c index e58d42c3da..e0566c9414 100644 --- a/test/battle/form_change/ultra_burst.c +++ b/test/battle/form_change/ultra_burst.c @@ -4,7 +4,6 @@ SINGLE_BATTLE_TEST("Dusk Mane Necrozma can Ultra Burst holding Ultranecrozium Z") { GIVEN { - ASSUME(P_GEN_7_POKEMON == TRUE); PLAYER(SPECIES_NECROZMA_DUSK_MANE) { Item(ITEM_ULTRANECROZIUM_Z); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -21,7 +20,6 @@ SINGLE_BATTLE_TEST("Dusk Mane Necrozma can Ultra Burst holding Ultranecrozium Z" DOUBLE_BATTLE_TEST("Ultra Burst's order is determined by Speed - opponent faster") { GIVEN { - ASSUME(P_GEN_7_POKEMON == TRUE); PLAYER(SPECIES_NECROZMA_DUSK_MANE) { Item(ITEM_ULTRANECROZIUM_Z); Speed(1); } PLAYER(SPECIES_WOBBUFFET) { Speed(3); } OPPONENT(SPECIES_NECROZMA_DAWN_WINGS) { Item(ITEM_ULTRANECROZIUM_Z); Speed(3); } @@ -41,7 +39,6 @@ DOUBLE_BATTLE_TEST("Ultra Burst's order is determined by Speed - opponent faster DOUBLE_BATTLE_TEST("Ultra Burst's order is determined by Speed - player faster") { GIVEN { - ASSUME(P_GEN_7_POKEMON == TRUE); PLAYER(SPECIES_NECROZMA_DUSK_MANE) { Item(ITEM_ULTRANECROZIUM_Z); Speed(5); } PLAYER(SPECIES_WOBBUFFET) { Speed(3); } OPPONENT(SPECIES_NECROZMA_DAWN_WINGS) { Item(ITEM_ULTRANECROZIUM_Z); Speed(2); } @@ -61,8 +58,7 @@ DOUBLE_BATTLE_TEST("Ultra Burst's order is determined by Speed - player faster") SINGLE_BATTLE_TEST("Ultra Burst affects turn order") { GIVEN { - ASSUME(P_GEN_7_POKEMON == TRUE); - ASSUME(B_MEGA_EVO_TURN_ORDER); + ASSUME(B_MEGA_EVO_TURN_ORDER >= GEN_7); PLAYER(SPECIES_NECROZMA_DUSK_MANE) { Item(ITEM_ULTRANECROZIUM_Z); Speed(105); } OPPONENT(SPECIES_WOBBUFFET) { Speed(106); } } WHEN { @@ -78,7 +74,6 @@ SINGLE_BATTLE_TEST("Ultra Burst affects turn order") DOUBLE_BATTLE_TEST("Ultra Burst happens after switching, but before Focus Punch-like Moves") { GIVEN { - ASSUME(P_GEN_7_POKEMON == TRUE); ASSUME(gBattleMoves[MOVE_FOCUS_PUNCH].effect == EFFECT_FOCUS_PUNCH); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_NECROZMA_DUSK_MANE) { Item(ITEM_ULTRANECROZIUM_Z); } @@ -107,7 +102,6 @@ DOUBLE_BATTLE_TEST("Ultra Burst happens after switching, but before Focus Punch- SINGLE_BATTLE_TEST("Ultra Burst and Mega Evolution can happen on the same turn") { GIVEN { - ASSUME(P_GEN_7_POKEMON == TRUE); PLAYER(SPECIES_NECROZMA_DUSK_MANE) { Item(ITEM_ULTRANECROZIUM_Z); Speed(3); } OPPONENT(SPECIES_GARDEVOIR) { Item(ITEM_GARDEVOIRITE); Speed(2); } } WHEN { diff --git a/test/battle/hold_effect/air_balloon.c b/test/battle/hold_effect/air_balloon.c index 1ed8a89e4a..46fec5c029 100644 --- a/test/battle/hold_effect/air_balloon.c +++ b/test/battle/hold_effect/air_balloon.c @@ -91,7 +91,6 @@ SINGLE_BATTLE_TEST("Air Balloon prevents the user from being healed by Grassy Te SINGLE_BATTLE_TEST("Air Balloon pops before it can be stolen with Magician") { GIVEN { - ASSUME(P_GEN_6_POKEMON == TRUE); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_AIR_BALLOON); }; OPPONENT(SPECIES_DELPHOX) { Ability(ABILITY_MAGICIAN); }; } WHEN { diff --git a/test/battle/hold_effect/attack_up.c b/test/battle/hold_effect/attack_up.c index 0602d651d7..c07c7c7c17 100644 --- a/test/battle/hold_effect/attack_up.c +++ b/test/battle/hold_effect/attack_up.c @@ -55,7 +55,6 @@ SINGLE_BATTLE_TEST("Liechi Berry raises Attack by one stage when HP drops to 1/2 SINGLE_BATTLE_TEST("Liechi Berry raises Attack by one stage when HP drops to 1/4 or below if holder has Ripen") { GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); PLAYER(SPECIES_APPLIN) { MaxHP(160); HP(80); Ability(ABILITY_RIPEN); Item(ITEM_LIECHI_BERRY); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/hold_effect/berserk_gene.c b/test/battle/hold_effect/berserk_gene.c index 8419eff3c3..b8b396b695 100644 --- a/test/battle/hold_effect/berserk_gene.c +++ b/test/battle/hold_effect/berserk_gene.c @@ -151,7 +151,6 @@ DOUBLE_BATTLE_TEST("Berserk Gene does not confuse a Pokemon with Own Tempo but s SINGLE_BATTLE_TEST("Berserk Gene does not confuse on Misty Terrain but still raises attack sharply") { GIVEN { - ASSUME(P_GEN_7_POKEMON == TRUE); PLAYER(SPECIES_TAPU_FINI) { Ability(ABILITY_MISTY_SURGE); Item(ITEM_BERSERK_GENE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/hold_effect/clear_amulet.c b/test/battle/hold_effect/clear_amulet.c index 39e6c22a69..0073f70609 100644 --- a/test/battle/hold_effect/clear_amulet.c +++ b/test/battle/hold_effect/clear_amulet.c @@ -21,8 +21,8 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents Intimidate") } SCENE { HP_BAR(player, captureDamage: &turnOneHit); ABILITY_POPUP(player, ABILITY_INTIMIDATE); - NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); } - MESSAGE("Foe Wobbuffet's Attack was not lowered!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); HP_BAR(player, captureDamage: &turnTwoHit); } THEN { EXPECT_EQ(turnOneHit, turnTwoHit); @@ -55,31 +55,8 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents stat reducing effects") } WHEN { TURN { MOVE(player, move); } } SCENE { - NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); } - switch (move) - { - case MOVE_GROWL: - MESSAGE("Foe Wobbuffet's Attack was not lowered!"); - break; - case MOVE_LEER: - MESSAGE("Foe Wobbuffet's Defense was not lowered!"); - break; - case MOVE_CONFIDE: - MESSAGE("Foe Wobbuffet's Sp. Atk was not lowered!"); - break; - case MOVE_FAKE_TEARS: - MESSAGE("Foe Wobbuffet's Sp. Def was not lowered!"); - break; - case MOVE_SCARY_FACE: - MESSAGE("Foe Wobbuffet's Speed was not lowered!"); - break; - case MOVE_SWEET_SCENT: - MESSAGE("Foe Wobbuffet's evasiveness was not lowered!"); - break; - case MOVE_SAND_ATTACK: - MESSAGE("Foe Wobbuffet's accuracy was not lowered!"); - break; - } + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); } } @@ -104,8 +81,11 @@ SINGLE_BATTLE_TEST("Clear Amulet prevents secondary effects that reduce stats") PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_CLEAR_AMULET); }; } WHEN { - TURN { MOVE(player, MOVE_ROCK_SMASH); } + TURN { MOVE(player, move); } } SCENE { - NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); } + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); + } } } diff --git a/test/battle/hold_effect/defense_up.c b/test/battle/hold_effect/defense_up.c index 774cd3b981..485472512a 100644 --- a/test/battle/hold_effect/defense_up.c +++ b/test/battle/hold_effect/defense_up.c @@ -55,7 +55,6 @@ SINGLE_BATTLE_TEST("Ganlon Berry raises Defense by one stage when HP drops to 1/ SINGLE_BATTLE_TEST("Ganlon Berry raises Defense by one stage when HP drops to 1/4 or below if holder has Ripen") { GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); PLAYER(SPECIES_APPLIN) { MaxHP(160); HP(80); Ability(ABILITY_RIPEN); Item(ITEM_GANLON_BERRY); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/hold_effect/enigma_berry.c b/test/battle/hold_effect/enigma_berry.c index 6758ac4026..79db0678dc 100644 --- a/test/battle/hold_effect/enigma_berry.c +++ b/test/battle/hold_effect/enigma_berry.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - gItems[ITEM_ENIGMA_BERRY].holdEffect == HOLD_EFFECT_ENIGMA_BERRY; + ASSUME(gItems[ITEM_ENIGMA_BERRY].holdEffect == HOLD_EFFECT_ENIGMA_BERRY); } SINGLE_BATTLE_TEST("Enigma Berry recovers 25% of HP if hit by super effective move") diff --git a/test/battle/hold_effect/kee_berry.c b/test/battle/hold_effect/kee_berry.c index 6e5319416f..c172a2c940 100644 --- a/test/battle/hold_effect/kee_berry.c +++ b/test/battle/hold_effect/kee_berry.c @@ -41,7 +41,6 @@ SINGLE_BATTLE_TEST("Kee Berry raises the holder's Defense by one stage when hit SINGLE_BATTLE_TEST("Kee Berry raises the holder's Defense by two stages with Ripen when hit by a physical move") { GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_APPLIN) { Item(ITEM_KEE_BERRY); Ability(ABILITY_RIPEN); } } WHEN { diff --git a/test/battle/hold_effect/leftovers.c b/test/battle/hold_effect/leftovers.c index 7e51a3bd75..341f9c3779 100644 --- a/test/battle/hold_effect/leftovers.c +++ b/test/battle/hold_effect/leftovers.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - gItems[ITEM_LEFTOVERS].holdEffect == HOLD_EFFECT_LEFTOVERS; + ASSUME(gItems[ITEM_LEFTOVERS].holdEffect == HOLD_EFFECT_LEFTOVERS); } SINGLE_BATTLE_TEST("Leftovers recovers 1/16th HP at end of turn") diff --git a/test/battle/hold_effect/maranga_berry.c b/test/battle/hold_effect/maranga_berry.c index 0a3edffbf5..d29dc60d1e 100644 --- a/test/battle/hold_effect/maranga_berry.c +++ b/test/battle/hold_effect/maranga_berry.c @@ -40,7 +40,6 @@ SINGLE_BATTLE_TEST("Maranga Berry raises the holder's Sp. Def by one stage when SINGLE_BATTLE_TEST("Maranga Berry raises the holder's Sp. Def by two stages with Ripen when hit by a special move") { GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(gBattleMoves[MOVE_SWIFT].split == SPLIT_SPECIAL); PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_APPLIN) { Item(ITEM_MARANGA_BERRY); Ability(ABILITY_RIPEN); } diff --git a/test/battle/hold_effect/metronome.c b/test/battle/hold_effect/metronome.c index 76cd27c6f1..63a0bb3eae 100644 --- a/test/battle/hold_effect/metronome.c +++ b/test/battle/hold_effect/metronome.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - gItems[ITEM_METRONOME].holdEffect == HOLD_EFFECT_METRONOME; + ASSUME(gItems[ITEM_METRONOME].holdEffect == HOLD_EFFECT_METRONOME); } const uq4_12_t MetronomeMultipliers[] = { diff --git a/test/battle/hold_effect/mirror_herb.c b/test/battle/hold_effect/mirror_herb.c index 1e9058b08e..9191f3fee1 100644 --- a/test/battle/hold_effect/mirror_herb.c +++ b/test/battle/hold_effect/mirror_herb.c @@ -6,7 +6,7 @@ ASSUMPTIONS ASSUME(gItems[ITEM_MIRROR_HERB].holdEffect == HOLD_EFFECT_MIRROR_HERB); } -SINGLE_BATTLE_TEST("Mirror Herb copies all of foe's stat changes in a turn", s16 damage) +SINGLE_BATTLE_TEST("Mirror Herb copies all of foe's positive stat changes in a turn", s16 damage) { u32 item; PARAMETRIZE { item = ITEM_NONE; } @@ -34,7 +34,7 @@ SINGLE_BATTLE_TEST("Mirror Herb copies all of foe's stat changes in a turn", s16 } } -SINGLE_BATTLE_TEST("Mirror Herb copies all of of Stuff Cheeks") +SINGLE_BATTLE_TEST("Mirror Herb copies all of Stuff Cheeks' stat boosts") { GIVEN { ASSUME(gItems[ITEM_LIECHI_BERRY].holdEffect == HOLD_EFFECT_ATTACK_UP); diff --git a/test/battle/hold_effect/red_card.c b/test/battle/hold_effect/red_card.c index 50354a5c1d..0f80dd176c 100644 --- a/test/battle/hold_effect/red_card.c +++ b/test/battle/hold_effect/red_card.c @@ -202,7 +202,6 @@ SINGLE_BATTLE_TEST("Red Card does not activate if stolen by Magician") PARAMETRIZE { item = ITEM_POTION; activate = TRUE; } GIVEN { - ASSUME(P_GEN_6_POKEMON == TRUE); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } OPPONENT(SPECIES_FENNEKIN) { Ability(ABILITY_MAGICIAN); Item(item); } OPPONENT(SPECIES_WYNAUT); @@ -384,7 +383,6 @@ SINGLE_BATTLE_TEST("Red Card does not activate if attacker's Sheer Force applied SINGLE_BATTLE_TEST("Red Card activates before Emergency Exit") { GIVEN { - ASSUME(P_GEN_7_POKEMON == TRUE); PLAYER(SPECIES_GOLISOPOD) { MaxHP(100); HP(51); Item(ITEM_RED_CARD); } PLAYER(SPECIES_WIMPOD); OPPONENT(SPECIES_WOBBUFFET); diff --git a/test/battle/hold_effect/safety_goggles.c b/test/battle/hold_effect/safety_goggles.c index cecd8fbb9a..1b8c47de70 100644 --- a/test/battle/hold_effect/safety_goggles.c +++ b/test/battle/hold_effect/safety_goggles.c @@ -3,7 +3,7 @@ ASSUMPTIONS { - gItems[ITEM_SAFETY_GOGGLES].holdEffect == HOLD_EFFECT_SAFETY_GOGGLES; + ASSUME(gItems[ITEM_SAFETY_GOGGLES].holdEffect == HOLD_EFFECT_SAFETY_GOGGLES); }; SINGLE_BATTLE_TEST("Safety Goggles block powder and spore moves") diff --git a/test/battle/hold_effect/special_attack_up.c b/test/battle/hold_effect/special_attack_up.c index 9815ab1212..6ff5b4f07d 100644 --- a/test/battle/hold_effect/special_attack_up.c +++ b/test/battle/hold_effect/special_attack_up.c @@ -55,7 +55,6 @@ SINGLE_BATTLE_TEST("Petaya Berry raises Sp. Atk by one stage when HP drops to 1/ SINGLE_BATTLE_TEST("Petaya Berry raises Sp. Atk by one stage when HP drops to 1/4 or below if holder has Ripen") { GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); PLAYER(SPECIES_APPLIN) { MaxHP(160); HP(80); Ability(ABILITY_RIPEN); Item(ITEM_PETAYA_BERRY); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/hold_effect/special_defense_up.c b/test/battle/hold_effect/special_defense_up.c index 2ba3c02a57..db08c1404e 100644 --- a/test/battle/hold_effect/special_defense_up.c +++ b/test/battle/hold_effect/special_defense_up.c @@ -55,7 +55,6 @@ SINGLE_BATTLE_TEST("Apicot Berry raises Sp. Def by one stage when HP drops to 1/ SINGLE_BATTLE_TEST("Apicot Berry raises Sp. Def by one stage when HP drops to 1/4 or below if holder has Ripen") { GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); PLAYER(SPECIES_APPLIN) { MaxHP(160); HP(80); Ability(ABILITY_RIPEN); Item(ITEM_APICOT_BERRY); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/hold_effect/speed_up.c b/test/battle/hold_effect/speed_up.c index 558d4262e8..1e5d4d7e40 100644 --- a/test/battle/hold_effect/speed_up.c +++ b/test/battle/hold_effect/speed_up.c @@ -55,7 +55,6 @@ SINGLE_BATTLE_TEST("Salac Berry raises Speed by one stage when HP drops to 1/2 o SINGLE_BATTLE_TEST("Salac Berry raises Speed by one stage when HP drops to 1/4 or below if holder has Ripen") { GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); PLAYER(SPECIES_APPLIN) { MaxHP(160); HP(80); Ability(ABILITY_RIPEN); Item(ITEM_SALAC_BERRY); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { diff --git a/test/battle/hold_effect/white_herb.c b/test/battle/hold_effect/white_herb.c index 734091552b..8ac60d59e8 100644 --- a/test/battle/hold_effect/white_herb.c +++ b/test/battle/hold_effect/white_herb.c @@ -165,7 +165,6 @@ SINGLE_BATTLE_TEST("White Herb wont have time to activate if Magician steals it" { KNOWN_FAILING; // White Herb is activated GIVEN { - ASSUME(P_GEN_6_POKEMON == TRUE); PLAYER(SPECIES_SLUGMA) { Ability(ABILITY_WEAK_ARMOR); Item(ITEM_WHITE_HERB); } OPPONENT(SPECIES_FENNEKIN) { Ability(ABILITY_MAGICIAN); } } WHEN { diff --git a/test/battle/item_effect/cure_status.c b/test/battle/item_effect/cure_status.c index c8b16dfdb1..02ba76bcc7 100644 --- a/test/battle/item_effect/cure_status.c +++ b/test/battle/item_effect/cure_status.c @@ -76,7 +76,7 @@ SINGLE_BATTLE_TEST("Burn Heal heals a battler from being burned") } } -SINGLE_BATTLE_TEST("Ice Heal heals a battler from being paralyzed") +SINGLE_BATTLE_TEST("Ice Heal heals a battler from being frozen") { GIVEN { ASSUME(gItems[ITEM_ICE_HEAL].battleUsage == EFFECT_ITEM_CURE_STATUS); diff --git a/test/battle/move_effect/brick_break.c b/test/battle/move_effect/brick_break.c new file mode 100644 index 0000000000..8bc05c0eea --- /dev/null +++ b/test/battle/move_effect/brick_break.c @@ -0,0 +1,160 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_BRICK_BREAK].effect == EFFECT_BRICK_BREAK); + ASSUME(gBattleMoves[MOVE_SNOWSCAPE].effect == EFFECT_SNOWSCAPE); + ASSUME(gBattleMoves[MOVE_LIGHT_SCREEN].effect == EFFECT_LIGHT_SCREEN); + ASSUME(gBattleMoves[MOVE_REFLECT].effect == EFFECT_REFLECT); + ASSUME(gBattleMoves[MOVE_AURORA_VEIL].effect == EFFECT_AURORA_VEIL); +} + +SINGLE_BATTLE_TEST("Brick Break removes Light Screen, Reflect and Aurora Veil from the target's side of the field") +{ + u16 move; + + PARAMETRIZE { move = MOVE_LIGHT_SCREEN; } + PARAMETRIZE { move = MOVE_REFLECT; } + PARAMETRIZE { move = MOVE_AURORA_VEIL; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SNOWSCAPE); } + TURN { MOVE(opponent, move); MOVE(player, MOVE_BRICK_BREAK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SNOWSCAPE, player); + ANIMATION(ANIM_TYPE_MOVE, move, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BRICK_BREAK, player); + MESSAGE("The wall shattered!"); + HP_BAR(opponent); + } +} + +SINGLE_BATTLE_TEST("Brick Break doesn't remove Light Screen, Reflect and Aurora Veil if the target is immune") +{ + u16 move; + + PARAMETRIZE { move = MOVE_LIGHT_SCREEN; } + PARAMETRIZE { move = MOVE_REFLECT; } + PARAMETRIZE { move = MOVE_AURORA_VEIL; } + + KNOWN_FAILING; + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_GASTLY); + } WHEN { + TURN { MOVE(player, MOVE_SNOWSCAPE); } + TURN { MOVE(opponent, move); MOVE(player, MOVE_BRICK_BREAK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SNOWSCAPE, player); + ANIMATION(ANIM_TYPE_MOVE, move, opponent); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BRICK_BREAK, player); + MESSAGE("The wall shattered!"); + HP_BAR(opponent); + } + } +} + +SINGLE_BATTLE_TEST("Brick Break doesn't remove Light Screen, Reflect and Aurora Veil if the target Protected") +{ + u16 move; + + PARAMETRIZE { move = MOVE_LIGHT_SCREEN; } + PARAMETRIZE { move = MOVE_REFLECT; } + PARAMETRIZE { move = MOVE_AURORA_VEIL; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SNOWSCAPE); MOVE(opponent, move); } + TURN { MOVE(player, MOVE_BRICK_BREAK); MOVE(opponent, MOVE_PROTECT); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SNOWSCAPE, player); + ANIMATION(ANIM_TYPE_MOVE, move, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_PROTECT, opponent); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BRICK_BREAK, player); + MESSAGE("The wall shattered!"); + HP_BAR(opponent); + } + } +} + +SINGLE_BATTLE_TEST("Brick Break doesn't remove Light Screen, Reflect and Aurora Veil if it misses") +{ + u16 move; + + PARAMETRIZE { move = MOVE_LIGHT_SCREEN; } + PARAMETRIZE { move = MOVE_REFLECT; } + PARAMETRIZE { move = MOVE_AURORA_VEIL; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BRIGHT_POWDER); } + } WHEN { + TURN { MOVE(player, MOVE_SNOWSCAPE); MOVE(opponent, move); } + TURN { MOVE(player, MOVE_BRICK_BREAK, hit: FALSE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SNOWSCAPE, player); + ANIMATION(ANIM_TYPE_MOVE, move, opponent); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BRICK_BREAK, player); + MESSAGE("The wall shattered!"); + HP_BAR(opponent); + } + } +} + +DOUBLE_BATTLE_TEST("Brick Break can remove Light Screen, Reflect and Aurora Veil on users side") +{ + u16 move; + + PARAMETRIZE { move = MOVE_LIGHT_SCREEN; } + PARAMETRIZE { move = MOVE_REFLECT; } + PARAMETRIZE { move = MOVE_AURORA_VEIL; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { + MOVE(opponentLeft, MOVE_SNOWSCAPE); + MOVE(playerLeft, move); + MOVE(playerRight, MOVE_BRICK_BREAK, target: playerLeft); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SNOWSCAPE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, move, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BRICK_BREAK, playerRight); + MESSAGE("The wall shattered!"); + HP_BAR(playerLeft); + } +} + +SINGLE_BATTLE_TEST("Move Raging Bull changes it's type depending on the Tauros Form") +{ + u16 speciesPlayer; + u16 speciesOpponent; + + PARAMETRIZE { speciesPlayer = SPECIES_TAUROS_PALDEAN_COMBAT_BREED; speciesOpponent = SPECIES_CHARIZARD; } + PARAMETRIZE { speciesPlayer = SPECIES_TAUROS_PALDEAN_BLAZE_BREED; speciesOpponent = SPECIES_BLASTOISE; } + PARAMETRIZE { speciesPlayer = SPECIES_TAUROS_PALDEAN_AQUA_BREED; speciesOpponent = SPECIES_VENUSAUR; } + + GIVEN { + PLAYER(speciesPlayer); + OPPONENT(speciesOpponent); + } WHEN { + TURN { MOVE(player, MOVE_RAGING_BULL); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGING_BULL, player); + HP_BAR(opponent); + MESSAGE("It's not very effective…"); + } +} diff --git a/test/battle/move_effect/chilly_reception.c b/test/battle/move_effect/chilly_reception.c new file mode 100644 index 0000000000..6f731f4b6f --- /dev/null +++ b/test/battle/move_effect/chilly_reception.c @@ -0,0 +1,90 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_CHILLY_RECEPTION].effect == EFFECT_CHILLY_RECEPTION); +} + +SINGLE_BATTLE_TEST("Chilly Reception sets up snow and switches the user out") +{ + GIVEN { + PLAYER(SPECIES_SLOWKING_GALARIAN); + PLAYER(SPECIES_SLOWPOKE_GALARIAN); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CHILLY_RECEPTION); SEND_OUT(player, 1); } + } SCENE { + MESSAGE("Slowking is preparing to tell a chillingly bad joke!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CHILLY_RECEPTION, player); + MESSAGE("It started to snow!"); + MESSAGE("Slowking went back to 1"); + MESSAGE("Go! Slowpoke!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SNOW_CONTINUES); + } +} + +SINGLE_BATTLE_TEST("Chilly Reception switches the user out, even if the weather does not change") +{ + GIVEN { + PLAYER(SPECIES_SLOWKING_GALARIAN); + PLAYER(SPECIES_SLOWPOKE_GALARIAN); + OPPONENT(SPECIES_KYOGRE) { Item(ITEM_BLUE_ORB); } + } WHEN { + TURN { MOVE(player, MOVE_CHILLY_RECEPTION); SEND_OUT(player, 1); } + } SCENE { + MESSAGE("Slowking is preparing to tell a chillingly bad joke!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CHILLY_RECEPTION, player); + MESSAGE("There is no relief from this heavy rain!"); + MESSAGE("Slowking went back to 1"); + MESSAGE("Go! Slowpoke!"); + MESSAGE("Rain continues to fall."); + } +} + +SINGLE_BATTLE_TEST("Chilly Reception does not switch the user out if no replacements") +{ + GIVEN { + PLAYER(SPECIES_SLOWKING_GALARIAN); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CHILLY_RECEPTION); } + } SCENE { + MESSAGE("Slowking is preparing to tell a chillingly bad joke!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CHILLY_RECEPTION, player); + MESSAGE("It started to snow!"); + NOT MESSAGE("Slowking went back to 1"); + } +} + +SINGLE_BATTLE_TEST("Chilly Reception does not switch the user out if replacements fainted") +{ + GIVEN { + PLAYER(SPECIES_SLOWKING_GALARIAN); + PLAYER(SPECIES_SLOWPOKE_GALARIAN) { HP(0); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CHILLY_RECEPTION); } + } SCENE { + MESSAGE("Slowking is preparing to tell a chillingly bad joke!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CHILLY_RECEPTION, player); + MESSAGE("It started to snow!"); + NOT MESSAGE("Slowking went back to 1"); + } +} + +SINGLE_BATTLE_TEST("Chilly Reception changes the weather, even if the user cannot switch out") +{ + GIVEN { + PLAYER(SPECIES_SLOWKING_GALARIAN); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_CHILLY_RECEPTION); } + } SCENE { + MESSAGE("Slowking is preparing to tell a chillingly bad joke!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CHILLY_RECEPTION, player); + MESSAGE("It started to snow!"); + NOT MESSAGE("Slowking went back to 1"); + } +} + diff --git a/test/battle/move_effect/dire_claw.c b/test/battle/move_effect/dire_claw.c index 9149f4a3cc..4de141a2ab 100644 --- a/test/battle/move_effect/dire_claw.c +++ b/test/battle/move_effect/dire_claw.c @@ -69,9 +69,7 @@ SINGLE_BATTLE_TEST("Dire Claw cannot poison/paralyze/cause to fall asleep pokemo u32 rng; PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_RAICHU; ability = ABILITY_LIGHTNING_ROD; } PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_JOLTEON; ability = ABILITY_VOLT_ABSORB; } - #if P_GEN_4_POKEMON == TRUE PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_ELECTIVIRE; ability = ABILITY_MOTOR_DRIVE; } - #endif // P_GEN_4_POKEMON PARAMETRIZE { statusAnim = B_ANIM_STATUS_PSN; rng = MOVE_EFFECT_POISON; species = SPECIES_ZANGOOSE; ability = ABILITY_IMMUNITY; } PARAMETRIZE { statusAnim = B_ANIM_STATUS_SLP; rng = MOVE_EFFECT_SLEEP; species = SPECIES_VIGOROTH; ability = ABILITY_VITAL_SPIRIT; } PARAMETRIZE { statusAnim = B_ANIM_STATUS_SLP; rng = MOVE_EFFECT_SLEEP; species = SPECIES_HYPNO; ability = ABILITY_INSOMNIA; } diff --git a/test/battle/move_effect/embargo.c b/test/battle/move_effect/embargo.c new file mode 100644 index 0000000000..c6514aa673 --- /dev/null +++ b/test/battle/move_effect/embargo.c @@ -0,0 +1,389 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_EMBARGO].effect == EFFECT_EMBARGO); +} + +SINGLE_BATTLE_TEST("Embargo blocks the effect of an affected Pokémon's held item") +{ + GIVEN { + ASSUME(gItems[ITEM_FOCUS_SASH].holdEffect == HOLD_EFFECT_FOCUS_SASH); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_FOCUS_SASH); }; + } WHEN { + TURN { MOVE(player, MOVE_EMBARGO); } + TURN { MOVE(player, MOVE_FISSURE); } + } SCENE { + // Turn 1 + MESSAGE("Wobbuffet used Embargo!"); + MESSAGE("Foe Wobbuffet can't use items anymore!"); + // Turn 2 + MESSAGE("Wobbuffet used Fissure!"); + HP_BAR(opponent, hp: 0); + } +} + +SINGLE_BATTLE_TEST("Embargo blocks an affected Pokémon's trainer from using items") +{ + // As of writing, the battle tests system doesn't perform all the operations involved + // in the action of an NPC using an item in battle. + KNOWN_FAILING; + GIVEN { + ASSUME(gItems[ITEM_POTION].battleUsage == EFFECT_ITEM_RESTORE_HP); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { HP(1); } + } WHEN { + TURN { MOVE(player, MOVE_EMBARGO); } + TURN { USE_ITEM(opponent, ITEM_POTION, partyIndex: 0); } + } SCENE { + MESSAGE("Wobbuffet used Embargo!"); + MESSAGE("Foe Wobbuffet can't use items anymore!"); + } THEN { + EXPECT_EQ(opponent->hp, 1); + } +} + +WILD_BATTLE_TEST("Embargo doesn't block held item effects that affect experience gain", s32 exp) +{ + u32 item; + + PARAMETRIZE { item = ITEM_LUCKY_EGG; } + PARAMETRIZE { item = ITEM_NONE; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Level(20); Item(item); } + OPPONENT(SPECIES_CATERPIE) { Level(10); HP(1); } + ASSUME(gItems[ITEM_LUCKY_EGG].holdEffect == HOLD_EFFECT_LUCKY_EGG); + } WHEN { + TURN { MOVE(opponent, MOVE_EMBARGO); MOVE(player, MOVE_SCRATCH); } + } SCENE { + MESSAGE("Wild Caterpie used Embargo!"); + MESSAGE("Wobbuffet can't use items anymore!"); + MESSAGE("Wobbuffet used Scratch!"); + MESSAGE("Wild Caterpie fainted!"); + EXPERIENCE_BAR(player, captureGainedExp: &results[i].exp); + } FINALLY { + EXPECT_MUL_EQ(results[1].exp, Q_4_12(1.5), results[0].exp); + } +} + +WILD_BATTLE_TEST("Embargo doesn't block held item effects that affect effort values") +{ + u32 finalHPEVAmount; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_POWER_WEIGHT); } + OPPONENT(SPECIES_CATERPIE) { HP(1); } + ASSUME(gItems[ITEM_POWER_WEIGHT].holdEffect == HOLD_EFFECT_POWER_ITEM); + ASSUME(gItems[ITEM_POWER_WEIGHT].holdEffectParam == 8); + ASSUME(gItems[ITEM_POWER_WEIGHT].secondaryId == STAT_HP); + ASSUME(gSpeciesInfo[SPECIES_CATERPIE].evYield_HP == 1); + } WHEN { + TURN { MOVE(opponent, MOVE_EMBARGO); MOVE(player, MOVE_SCRATCH); } + } SCENE { + // Turn 1 + MESSAGE("Wild Caterpie used Embargo!"); + MESSAGE("Wobbuffet can't use items anymore!"); + // Turn 2 + MESSAGE("Wobbuffet used Scratch!"); + MESSAGE("Wild Caterpie fainted!"); + } THEN { + finalHPEVAmount = (GetMonData(&PLAYER_PARTY[0], MON_DATA_HP_EV) + gItems[ITEM_POWER_WEIGHT].holdEffectParam + gSpeciesInfo[SPECIES_CATERPIE].evYield_HP); + EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_HP_EV), finalHPEVAmount); + } +} + +SINGLE_BATTLE_TEST("Embargo negates a held item's Speed reduction") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(19); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_MACHO_BRACE); Speed(20); } + ASSUME(gItems[ITEM_MACHO_BRACE].holdEffect == HOLD_EFFECT_MACHO_BRACE); + } WHEN { + TURN { MOVE(player, MOVE_EMBARGO); } + TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_SCRATCH); } + } SCENE { + // Turn 1 + MESSAGE("Wobbuffet used Embargo!"); + MESSAGE("Foe Wobbuffet can't use items anymore!"); + // Turn 2 + MESSAGE("Foe Wobbuffet used Scratch!"); + MESSAGE("Wobbuffet used Scratch!"); + } +} + +WILD_BATTLE_TEST("Embargo doesn't block held item effects that affect friendship") +{ + u32 initialFriendship; + u32 finalFriendship; + + KNOWN_FAILING; // Pokémon are currently not obtaining Friendship for using items in battle. + GIVEN { + ASSUME(gItems[ITEM_X_ACCURACY].battleUsage == EFFECT_ITEM_INCREASE_STAT); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_SOOTHE_BELL); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { USE_ITEM(player, ITEM_X_ACCURACY); } + TURN { MOVE(player, MOVE_SING); } + } SCENE { + MESSAGE("Wobbuffet used Sing!"); + MESSAGE("Wild Wobbuffet fell asleep!"); + } THEN { + initialFriendship = GetMonData(&PLAYER_PARTY[0], MON_DATA_FRIENDSHIP); + finalFriendship = GetMonData(&gPlayerParty[0], MON_DATA_FRIENDSHIP); + EXPECT_EQ(finalFriendship, initialFriendship + 2); + } +} + +SINGLE_BATTLE_TEST("Embargo doesn't block a held item's form-changing effect, but it does block its other effects", s16 damage) +{ + u32 heldItem; + + PARAMETRIZE { heldItem = ITEM_NONE; } + PARAMETRIZE { heldItem = ITEM_MEADOW_PLATE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_ARCEUS_GRASS) { Item(heldItem); }; + ASSUME(gItems[ITEM_MEADOW_PLATE].holdEffect == HOLD_EFFECT_PLATE); + ASSUME(gItems[ITEM_MEADOW_PLATE].holdEffectParam == 20); + ASSUME(gItems[ITEM_MEADOW_PLATE].secondaryId == TYPE_GRASS); + } WHEN { + TURN { MOVE(player, MOVE_EMBARGO); MOVE(opponent, MOVE_RAZOR_LEAF); } + } SCENE { + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.0), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Embargo makes Fling and Natural Gift fail") +{ + u32 heldItem, moveId; + + PARAMETRIZE { heldItem = ITEM_LIGHT_BALL; moveId = MOVE_FLING; } + PARAMETRIZE { heldItem = ITEM_CHERI_BERRY; moveId = MOVE_NATURAL_GIFT; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(heldItem); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_EMBARGO); } + TURN { MOVE(player, moveId); } + } SCENE { + // Turn 1 + MESSAGE("Foe Wobbuffet used Embargo!"); + MESSAGE("Wobbuffet can't use items anymore!"); + // Turn 2 + if (moveId == MOVE_FLING) + MESSAGE("Wobbuffet used Fling!"); + else + MESSAGE("Wobbuffet used Natural Gift!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Embargo doesn't stop an item flung at an affected target from activating") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_LIGHT_BALL); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_EMBARGO); } + TURN { MOVE(player, MOVE_FLING); } + } SCENE { + // Turn 1 + MESSAGE("Wobbuffet used Embargo!"); + MESSAGE("Foe Wobbuffet can't use items anymore!"); + // Turn 2 + MESSAGE("Wobbuffet used Fling!"); + MESSAGE("Wobbuffet flung its Light Ball!"); + HP_BAR(opponent); + MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); + } +} + +SINGLE_BATTLE_TEST("Embargo is passed via Baton Pass") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT) { Item(ITEM_LIGHT_BALL); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_EMBARGO); } + TURN { MOVE(player, MOVE_BATON_PASS); SEND_OUT(player, 1); } + TURN { MOVE(player, MOVE_FLING); } + } SCENE { + // Turn 1 + MESSAGE("Foe Wobbuffet used Embargo!"); + MESSAGE("Wobbuffet can't use items anymore!"); + // Turn 2 + MESSAGE("Wobbuffet used Baton Pass!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BATON_PASS, player); + MESSAGE("Go! Wynaut!"); + // Turn 3 + MESSAGE("Wynaut used Fling!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Embargo doesn't block the effects of berries obtained through Bug Bite or Pluck") +{ + u32 hp = 10; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); }; + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_ORAN_BERRY); }; + } WHEN { + TURN { MOVE(opponent, MOVE_EMBARGO); } + TURN { MOVE(player, MOVE_PLUCK); } + } SCENE { + // Turn 1 + MESSAGE("Foe Wobbuffet used Embargo!"); + MESSAGE("Wobbuffet can't use items anymore!"); + // Turn 2 + MESSAGE("Wobbuffet used Pluck!"); + HP_BAR(opponent); + MESSAGE("Wobbuffet stole and ate Foe Wobbuffet's Oran Berry!"); + HP_BAR(player, damage: -hp); + } +} + +SINGLE_BATTLE_TEST("Embargo disables the effect of the Plate items on the move Judgment", s16 damage) +{ + u32 heldItem; + + PARAMETRIZE{ heldItem = ITEM_NONE; } + PARAMETRIZE{ heldItem = ITEM_PIXIE_PLATE; } + GIVEN { + PLAYER(SPECIES_ARCEUS) { Item(heldItem); }; + OPPONENT(SPECIES_DRAGONITE); + } WHEN { + TURN { MOVE(opponent, MOVE_EMBARGO); MOVE(player, MOVE_JUDGMENT); } + } SCENE { + MESSAGE("Foe Dragonite used Embargo!"); + MESSAGE("Arceus can't use items anymore!"); + MESSAGE("Arceus used Judgment!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.0), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Embargo disables the effect of the Drive items on the move Techno Blast", s16 damage) +{ + u32 heldItem; + + PARAMETRIZE{ heldItem = ITEM_NONE; } + PARAMETRIZE{ heldItem = ITEM_SHOCK_DRIVE; } + GIVEN { + PLAYER(SPECIES_GENESECT) { Item(heldItem); }; + OPPONENT(SPECIES_GYARADOS); + } WHEN { + TURN { MOVE(opponent, MOVE_EMBARGO); MOVE(player, MOVE_TECHNO_BLAST); } + } SCENE { + MESSAGE("Foe Gyarados used Embargo!"); + MESSAGE("Genesect can't use items anymore!"); + MESSAGE("Genesect used Techno Blast!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.0), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Embargo disables the effect of the Memory items on the move Multi Attack", s16 damage) +{ + u32 heldItem; + + PARAMETRIZE{ heldItem = ITEM_NONE; } + PARAMETRIZE{ heldItem = ITEM_FIRE_MEMORY; } + GIVEN { + PLAYER(SPECIES_SILVALLY) { Item(heldItem); }; + OPPONENT(SPECIES_VENUSAUR); + } WHEN { + TURN { MOVE(opponent, MOVE_EMBARGO); MOVE(player, MOVE_MULTI_ATTACK); } + } SCENE { + MESSAGE("Foe Venusaur used Embargo!"); + MESSAGE("Silvally can't use items anymore!"); + MESSAGE("Silvally used Multi-Attack!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.0), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Embargo can be reflected by Magic Coat") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LIGHT_BALL); }; + } WHEN { + TURN { MOVE(player, MOVE_MAGIC_COAT); MOVE(opponent, MOVE_EMBARGO); } + TURN { MOVE(opponent, MOVE_FLING); } + } SCENE { + // Turn 1 + MESSAGE("Wobbuffet used Magic Coat!"); + MESSAGE("Wobbuffet shrouded itself in Magic Coat!"); + MESSAGE("Foe Wobbuffet used Embargo!"); + MESSAGE("Foe Wobbuffet's Embargo was bounced back by MAGIC COAT!"); + MESSAGE("Foe Wobbuffet can't use items anymore!"); + // Turn 2 + MESSAGE("Foe Wobbuffet used Fling!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("Embargo doesn't prevent Mega Evolution") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_CHARIZARD) { Item(ITEM_CHARIZARDITE_Y); }; + } WHEN { + TURN { MOVE(player, MOVE_EMBARGO); } + TURN { MOVE(opponent, MOVE_BATON_PASS); SEND_OUT(opponent, 1); } + TURN { MOVE(opponent, MOVE_CELEBRATE, megaEvolve: TRUE); } + } SCENE { + // Turn 1 + MESSAGE("Wobbuffet used Embargo!"); + MESSAGE("Foe Wobbuffet can't use items anymore!"); + // Turn 2 + MESSAGE("Foe Wobbuffet used Baton Pass!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BATON_PASS, opponent); + MESSAGE("2 sent out Charizard!"); + // Turn 3 + MESSAGE("Foe Charizard's CharizarditeY is reacting to 2's Mega Ring!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, opponent); + MESSAGE("Foe Charizard has Mega Evolved into Mega Charizard!"); + } +} + +SINGLE_BATTLE_TEST("Embargo doesn't prevent Primal Reversion") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_GROUDON) { Item(ITEM_RED_ORB); }; + } WHEN { + TURN { MOVE(player, MOVE_EMBARGO); } + TURN { MOVE(opponent, MOVE_BATON_PASS); SEND_OUT(opponent, 1); } + TURN { MOVE(opponent, MOVE_FLING); } + } SCENE { + // Turn 1 + MESSAGE("Wobbuffet used Embargo!"); + MESSAGE("Foe Wobbuffet can't use items anymore!"); + // Turn 2 + MESSAGE("Foe Wobbuffet used Baton Pass!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BATON_PASS, opponent); + MESSAGE("2 sent out Groudon!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_PRIMAL_REVERSION, opponent); + MESSAGE("Foe Groudon's Primal Reversion! It reverted to its primal form!"); + ABILITY_POPUP(opponent); + // Turn 3 + MESSAGE("Foe Groudon used Fling!"); + MESSAGE("But it failed!"); + } +} + +TO_DO_BATTLE_TEST("Embargo doesn't prevent the usage of Z-Moves") +TO_DO_BATTLE_TEST("Embargo doesn't block held item effects that affect prize money") diff --git a/test/battle/move_effect/flinch_status.c b/test/battle/move_effect/flinch_status.c new file mode 100644 index 0000000000..6d0012d42c --- /dev/null +++ b/test/battle/move_effect/flinch_status.c @@ -0,0 +1,64 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_THUNDER_FANG].effect == EFFECT_FLINCH_STATUS); + ASSUME(gBattleMoves[MOVE_THUNDER_FANG].argument == STATUS1_PARALYSIS); + ASSUME(gBattleMoves[MOVE_ICE_FANG].effect == EFFECT_FLINCH_STATUS); + ASSUME(gBattleMoves[MOVE_ICE_FANG].argument == STATUS1_FREEZE); + ASSUME(gBattleMoves[MOVE_FIRE_FANG].effect == EFFECT_FLINCH_STATUS); + ASSUME(gBattleMoves[MOVE_FIRE_FANG].argument == STATUS1_BURN); +} + +SINGLE_BATTLE_TEST("Thunder, Ice and Fire Fang inflict status 10% of the time") +{ + u16 move; + + PARAMETRIZE { move = MOVE_THUNDER_FANG; } + PARAMETRIZE { move = MOVE_ICE_FANG; } + PARAMETRIZE { move = MOVE_FIRE_FANG; } + + PASSES_RANDOMLY(10, 100, RNG_SECONDARY_EFFECT); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + HP_BAR(opponent); + if (move == MOVE_THUNDER_FANG) { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent); + STATUS_ICON(opponent, paralysis: TRUE); + } if (move == MOVE_ICE_FANG) { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, opponent); + STATUS_ICON(opponent, freeze: TRUE); + } if (move == MOVE_FIRE_FANG) { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponent); + STATUS_ICON(opponent, burn: TRUE); + } + } +} + +SINGLE_BATTLE_TEST("Thunder, Ice and Fire Fang cause the opponent to flinch 10% of the time") +{ + u16 move; + + PARAMETRIZE { move = MOVE_THUNDER_FANG; } + PARAMETRIZE { move = MOVE_ICE_FANG; } + PARAMETRIZE { move = MOVE_FIRE_FANG; } + + PASSES_RANDOMLY(10, 100, RNG_SECONDARY_EFFECT); + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(100); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(1); } + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + HP_BAR(opponent); + MESSAGE("Foe Wobbuffet flinched!"); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + } +} diff --git a/test/battle/move_effect/fling.c b/test/battle/move_effect/fling.c index 1c4c08eb76..b8d35bd46d 100644 --- a/test/battle/move_effect/fling.c +++ b/test/battle/move_effect/fling.c @@ -64,7 +64,6 @@ SINGLE_BATTLE_TEST("Fling fails for pokemon with Klutz ability") PARAMETRIZE {ability = ABILITY_RUN_AWAY; } GIVEN { - ASSUME(P_GEN_4_POKEMON == TRUE); ASSUME(B_KLUTZ_FLING_INTERACTION >= GEN_5); PLAYER(SPECIES_BUNEARY) { Item(ITEM_RAZOR_CLAW); Ability(ability); } OPPONENT(SPECIES_WOBBUFFET); @@ -348,7 +347,6 @@ SINGLE_BATTLE_TEST("Fling - thrown berry's effect activates for the target even SINGLE_BATTLE_TEST("Fling deals damage based on items fling power") { - u16 item; s16 damage[2]; GIVEN { diff --git a/test/battle/move_effect/gigaton_hammer.c b/test/battle/move_effect/gigaton_hammer.c deleted file mode 100644 index aaff50f752..0000000000 --- a/test/battle/move_effect/gigaton_hammer.c +++ /dev/null @@ -1,63 +0,0 @@ -#include "global.h" -#include "test/battle.h" - -ASSUMPTIONS -{ - ASSUME(gBattleMoves[MOVE_GIGATON_HAMMER].effect == EFFECT_GIGATON_HAMMER); -} - -SINGLE_BATTLE_TEST("Struggle will be used if slow Encore is used on Gigaton Hammer") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_ENCORE].effect == EFFECT_ENCORE); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(player, MOVE_GIGATON_HAMMER); MOVE(opponent, MOVE_ENCORE); } - TURN { FORCED_MOVE(player); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); - } -} - -SINGLE_BATTLE_TEST("Gigaton Hammer strikes again if fast encore is used") -{ - GIVEN { - ASSUME(gBattleMoves[MOVE_ENCORE].effect == EFFECT_ENCORE); - PLAYER(SPECIES_WOBBUFFET); - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(player, MOVE_GIGATON_HAMMER); } - TURN { MOVE(opponent, MOVE_ENCORE); FORCED_MOVE(player); } - TURN { FORCED_MOVE(player); } - TURN { FORCED_MOVE(player); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); - } -} - -SINGLE_BATTLE_TEST("Gigaton Hammer alternates with Struggle if it is the only usable move left") -{ - GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_GIGATON_HAMMER, MOVE_NONE, MOVE_NONE, MOVE_NONE); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(player, MOVE_GIGATON_HAMMER); } - TURN { FORCED_MOVE(player); } - TURN { MOVE(player, MOVE_GIGATON_HAMMER); } - TURN { FORCED_MOVE(player); } - TURN { MOVE(player, MOVE_GIGATON_HAMMER); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); - ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); - } -} diff --git a/test/battle/move_effect/glaive_rush.c b/test/battle/move_effect/glaive_rush.c new file mode 100644 index 0000000000..6cbc92fa95 --- /dev/null +++ b/test/battle/move_effect/glaive_rush.c @@ -0,0 +1,143 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_GLAIVE_RUSH].effect == EFFECT_GLAIVE_RUSH); +} + +SINGLE_BATTLE_TEST("If Glaive Rush is successful moves targeted at the user do not check accuracy") +{ + PASSES_RANDOMLY(100, 100, RNG_ACCURACY); + GIVEN { + ASSUME(gBattleMoves[MOVE_MEGA_PUNCH].accuracy == 85); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_GLAIVE_RUSH); MOVE(opponent, MOVE_MEGA_PUNCH); } + } SCENE { + MESSAGE("Wobbuffet used Glaive Rush!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GLAIVE_RUSH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_MEGA_PUNCH, opponent); + } +} + +SINGLE_BATTLE_TEST("If Glaive Rush is successful, moves targeted at the user deal double damage") +{ + s16 glaiveRushEffectedDmg; + s16 normalDmg; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_GLAIVE_RUSH); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_GLAIVE_RUSH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &glaiveRushEffectedDmg); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &normalDmg); + } THEN { + EXPECT_MUL_EQ(normalDmg, Q_4_12(2.0), glaiveRushEffectedDmg); + } +} + +SINGLE_BATTLE_TEST("If Glaive Rush is successful, moves targeted at the user deal double damage until the user moves again") +{ + s16 glaiveRushEffectedDmg; + s16 normalDmg; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_GLAIVE_RUSH); } + TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_CELEBRATE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &normalDmg); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GLAIVE_RUSH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &glaiveRushEffectedDmg); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + } THEN { + EXPECT_MUL_EQ(normalDmg, Q_4_12(2.0), glaiveRushEffectedDmg); + } +} + +SINGLE_BATTLE_TEST("If Glaive Rush isn't successful moves targeted at the user don't deal double damage", s16 damage) +{ + bool32 missesGlaiveRush; + + PARAMETRIZE { missesGlaiveRush = FALSE; } + PARAMETRIZE { missesGlaiveRush = TRUE; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_BRIGHT_POWDER); } + } WHEN { + TURN { MOVE(player, MOVE_GLAIVE_RUSH, hit: missesGlaiveRush); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + if (!missesGlaiveRush) + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_GLAIVE_RUSH, player); + else + ANIMATION(ANIM_TYPE_MOVE, MOVE_GLAIVE_RUSH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Glaive Rush doesn't affect the user if the effect is blocked", s16 damage) +{ + u32 species; + + PARAMETRIZE { species = SPECIES_CLEFAIRY; } + PARAMETRIZE { species = SPECIES_WOBBUFFET; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species) { Attack(50); } + } WHEN { + TURN { MOVE(player, MOVE_GLAIVE_RUSH); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + if (species == SPECIES_CLEFAIRY) + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_GLAIVE_RUSH, player); + else + ANIMATION(ANIM_TYPE_MOVE, MOVE_GLAIVE_RUSH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(2.0), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Glaive Rush status last until the the user's next turn") +{ + s16 normalDmgFristHit; + s16 normalDmgSecondHit; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_GLAIVE_RUSH); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_GLAIVE_RUSH, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &normalDmgFristHit); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &normalDmgSecondHit); + } THEN { + EXPECT_EQ(normalDmgFristHit, normalDmgSecondHit); + } +} diff --git a/test/battle/move_effect/heal_pulse.c b/test/battle/move_effect/heal_pulse.c index ecd1cfe294..6ba678d2c5 100644 --- a/test/battle/move_effect/heal_pulse.c +++ b/test/battle/move_effect/heal_pulse.c @@ -39,7 +39,6 @@ DOUBLE_BATTLE_TEST("Heal Pulse can heal partner") SINGLE_BATTLE_TEST("Heal Pulse is boosted by Mega Launcher") { GIVEN { - ASSUME(P_GEN_6_POKEMON == TRUE); PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(1); } OPPONENT(SPECIES_CLAWITZER); } WHEN { diff --git a/test/battle/move_effect/hit_escape.c b/test/battle/move_effect/hit_escape.c index f2d5130957..3675dc78a8 100644 --- a/test/battle/move_effect/hit_escape.c +++ b/test/battle/move_effect/hit_escape.c @@ -65,7 +65,6 @@ SINGLE_BATTLE_TEST("U-turn does not switch the user out if replacements fainted" SINGLE_BATTLE_TEST("U-turn does not switch the user out if Wimp Out activates") { GIVEN { - ASSUME(P_GEN_7_POKEMON == TRUE); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WIMPOD) { MaxHP(100); HP(51); Ability(ABILITY_WIMP_OUT); } @@ -83,7 +82,6 @@ SINGLE_BATTLE_TEST("U-turn does not switch the user out if Wimp Out activates") SINGLE_BATTLE_TEST("U-turn switches the user out if Wimp Out fails to activate") { GIVEN { - ASSUME(P_GEN_7_POKEMON == TRUE); PLAYER(SPECIES_WOBBUFFET); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_WIMPOD) { MaxHP(100); HP(51); Ability(ABILITY_WIMP_OUT); } diff --git a/test/battle/move_effect/hit_set_remove_terrain.c b/test/battle/move_effect/hit_set_remove_terrain.c index 5c21d08538..4a54eb436d 100644 --- a/test/battle/move_effect/hit_set_remove_terrain.c +++ b/test/battle/move_effect/hit_set_remove_terrain.c @@ -22,8 +22,8 @@ SINGLE_BATTLE_TEST("Steel Roller and Ice Spinner can remove a terrain from the f MOVE_MISTY_TERRAIN, }; - u16 terrainMove; - u16 removeTerrainMove; + u16 terrainMove = MOVE_NONE; + u16 removeTerrainMove = MOVE_NONE; for (j = 0; j < ARRAY_COUNT(terrainMoves); j++) { diff --git a/test/battle/move_effect/ivy_cudgel.c b/test/battle/move_effect/ivy_cudgel.c new file mode 100644 index 0000000000..819047f34a --- /dev/null +++ b/test/battle/move_effect/ivy_cudgel.c @@ -0,0 +1,30 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_IVY_CUDGEL].effect == EFFECT_CHANGE_TYPE_ON_ITEM); + ASSUME(gBattleMoves[MOVE_IVY_CUDGEL].argument == HOLD_EFFECT_MASK); +} + +SINGLE_BATTLE_TEST("Ivy Cudgel changes the move type depending on the mask the user holds") +{ + u16 species; + u16 item; + + PARAMETRIZE { species = SPECIES_BLASTOISE; item = ITEM_NONE; } + PARAMETRIZE { species = SPECIES_CHARIZARD; item = ITEM_CORNERSTONE_MASK; } + PARAMETRIZE { species = SPECIES_CHARIZARD; item = ITEM_WELLSPRING_MASK; } + PARAMETRIZE { species = SPECIES_VENUSAUR; item = ITEM_HEARTHFLAME_MASK; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(item); } + OPPONENT(species); + } WHEN { + TURN { MOVE(player, MOVE_IVY_CUDGEL); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_IVY_CUDGEL, player); + HP_BAR(opponent); + MESSAGE("It's super effective!"); + } +} diff --git a/test/battle/move_effect/matcha_gotcha.c b/test/battle/move_effect/matcha_gotcha.c new file mode 100644 index 0000000000..f1b76b5fcc --- /dev/null +++ b/test/battle/move_effect/matcha_gotcha.c @@ -0,0 +1,66 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_MATCHA_GOTCHA].effect == EFFECT_MATCHA_GOTCHA); +} + +SINGLE_BATTLE_TEST("Matcha Gotcha inflicts burn 20% of the time") +{ + PASSES_RANDOMLY(20, 100, RNG_SECONDARY_EFFECT); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_MATCHA_GOTCHA); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_MATCHA_GOTCHA, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponent); + STATUS_ICON(opponent, burn: TRUE); + } +} + +DOUBLE_BATTLE_TEST("Matcha Gatcha can burn both targets") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_MATCHA_GOTCHA); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_MATCHA_GOTCHA, playerLeft); + HP_BAR(opponentLeft); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponentLeft); + STATUS_ICON(opponentLeft, burn: TRUE); + HP_BAR(opponentRight); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponentRight); + STATUS_ICON(opponentRight, burn: TRUE); + } +} + +DOUBLE_BATTLE_TEST("Matcha Gatcha recovers 50% of the damage dealt from both targets") +{ + s16 damageLeft; + s16 damageRight; + s16 healedLeft; + s16 healedRight; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_MATCHA_GOTCHA); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_MATCHA_GOTCHA, playerLeft); + HP_BAR(opponentLeft, captureDamage: &damageLeft); + HP_BAR(playerLeft, captureDamage: &healedLeft); + HP_BAR(opponentRight, captureDamage: &damageRight); + HP_BAR(playerLeft, captureDamage: &healedRight); + } +} diff --git a/test/battle/move_effect/octolock.c b/test/battle/move_effect/octolock.c new file mode 100644 index 0000000000..3cdc5f5602 --- /dev/null +++ b/test/battle/move_effect/octolock.c @@ -0,0 +1,133 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Octolock decreases Defense and Sp. Def by at the end of the turn") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_OCTOLOCK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); + MESSAGE("Foe Wobbuffet can no longer escape because of Octolock!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Defense fell!"); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } +} + +SINGLE_BATTLE_TEST("Octolock reduction is prevented by Clear Body, White Smoke and Full Metal Body") +{ + u32 species; + u32 ability; + + PARAMETRIZE { species = SPECIES_BELDUM; ability = ABILITY_CLEAR_BODY; } + PARAMETRIZE { species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; } + PARAMETRIZE { species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species) { Ability(ability); } + } WHEN { + TURN { MOVE(player, MOVE_OCTOLOCK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + if (species == SPECIES_BELDUM) + { + MESSAGE("Foe Beldum can no longer escape because of Octolock!"); + ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY); + MESSAGE("Foe Beldum's Clear Body prevents stat loss!"); + NONE_OF { + MESSAGE("Foe Beldum's Defense fell!"); + MESSAGE("Foe Beldum's Sp. Def fell!"); + } + } + else if (species == SPECIES_TORKOAL) + { + MESSAGE("Foe Torkoal can no longer escape because of Octolock!"); + ABILITY_POPUP(opponent, ABILITY_WHITE_SMOKE); + MESSAGE("Foe Torkoal's White Smoke prevents stat loss!"); + NONE_OF { + MESSAGE("Foe Torkoal's Defense fell!"); + MESSAGE("Foe Torkoal's Sp. Def fell!"); + } + } + else if (species == SPECIES_SOLGALEO) + { + MESSAGE("Foe Solgaleo can no longer escape because of Octolock!"); + ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); + MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!"); + NONE_OF { + MESSAGE("Foe Solgaleo's Defense fell!"); + MESSAGE("Foe Solgaleo's Sp. Def fell!"); + } + } + } +} + +SINGLE_BATTLE_TEST("Octolock Defense reduction is prevented by Big Pecks") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_PIDGEY) { Ability(ABILITY_BIG_PECKS); } + } WHEN { + TURN { MOVE(player, MOVE_OCTOLOCK); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); + MESSAGE("Foe Pidgey can no longer escape because of Octolock!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + NOT MESSAGE("Foe Pidgey's Defense fell!"); + ABILITY_POPUP(opponent, ABILITY_BIG_PECKS); + MESSAGE("Foe Pidgey's Big Pecks prevents Defense loss!"); + MESSAGE("Foe Pidgey's Sp. Def fell!"); + } +} + +SINGLE_BATTLE_TEST("Octolock reduction is prevented by Clear Amulet") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_CLEAR_AMULET); } + } WHEN { + TURN { MOVE(player, MOVE_OCTOLOCK); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); + MESSAGE("Foe Wobbuffet can no longer escape because of Octolock!"); + MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Defense fell!"); + MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } + } +} + +SINGLE_BATTLE_TEST("Octolock will not decrease Defense and Sp. Def further then minus six") +{ + u8 j; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_OCTOLOCK); } + for (j = 0; j < 6; j++) + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_OCTOLOCK, player); + for (j = 0; j < 5; j++) { + MESSAGE("Foe Wobbuffet's Defense fell!"); + MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } + MESSAGE("Foe Wobbuffet's Defense won't go lower!"); + MESSAGE("Foe Wobbuffet's Sp. Def won't go lower!"); + NONE_OF { + MESSAGE("Foe Wobbuffet's Defense fell!"); + MESSAGE("Foe Wobbuffet's Sp. Def fell!"); + } + } +} diff --git a/test/battle/move_effect/plasma_fists.c b/test/battle/move_effect/plasma_fists.c new file mode 100644 index 0000000000..daef90ec50 --- /dev/null +++ b/test/battle/move_effect/plasma_fists.c @@ -0,0 +1,99 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_PLASMA_FISTS].effect == EFFECT_PLASMA_FISTS); +} + +SINGLE_BATTLE_TEST("Ion Duldge turns normal moves into electric for the remainder of the current turn") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_ION_DELUGE].effect == EFFECT_ION_DELUGE); + PLAYER(SPECIES_KRABBY); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_ION_DELUGE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + MESSAGE("Krabby used Ion Deluge!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ION_DELUGE, player); + MESSAGE("A deluge of ions showers the battlefield!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + MESSAGE("It's super effective!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + NOT MESSAGE("It's super effective!"); + } +} + +SINGLE_BATTLE_TEST("Plasma Fists turns normal moves into electric for the remainder of the current turn") +{ + GIVEN { + PLAYER(SPECIES_KRABBY); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_PLASMA_FISTS); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + MESSAGE("Krabby used Plasma Fists!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_PLASMA_FISTS, player); + MESSAGE("A deluge of ions showers the battlefield!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + MESSAGE("It's super effective!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + NOT MESSAGE("It's super effective!"); + } +} + +SINGLE_BATTLE_TEST("Plasma Fists type-changing effect is applied after Pixilate") +{ + GIVEN { + PLAYER(SPECIES_KRABBY) { Speed(300); }; + OPPONENT(SPECIES_ALTARIA) { Speed(1); Item(ITEM_ALTARIANITE); } + } WHEN { + TURN { MOVE(player, MOVE_PLASMA_FISTS); MOVE(opponent, MOVE_EMBER, megaEvolve: TRUE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, opponent); + MESSAGE("Krabby used Plasma Fists!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_PLASMA_FISTS, player); + MESSAGE("A deluge of ions showers the battlefield!"); + MESSAGE("Foe Altaria used Ember!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_EMBER, opponent); + NOT MESSAGE("It's super effective!"); + } +} + +SINGLE_BATTLE_TEST("Plasma Fists type-changing effect is applied after Normalize") +{ + GIVEN { + PLAYER(SPECIES_KRABBY); + OPPONENT(SPECIES_SKITTY) { Ability(ABILITY_NORMALIZE); } + } WHEN { + TURN { MOVE(player, MOVE_PLASMA_FISTS); MOVE(opponent, MOVE_EMBER); } + } SCENE { + MESSAGE("Krabby used Plasma Fists!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_PLASMA_FISTS, player); + MESSAGE("A deluge of ions showers the battlefield!"); + MESSAGE("Foe Skitty used Ember!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_EMBER, opponent); + MESSAGE("It's super effective!"); + } +} + +SINGLE_BATTLE_TEST("Plasma Fists turns normal type dynamax-moves into electric type moves") +{ + GIVEN { + PLAYER(SPECIES_KRABBY) { Speed(100); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(1); } + } WHEN { + TURN { MOVE(player, MOVE_PLASMA_FISTS); MOVE(opponent, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Krabby used Plasma Fists!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_PLASMA_FISTS, player); + MESSAGE("A deluge of ions showers the battlefield!"); + MESSAGE("Foe Wobbuffet used Max Lightning!"); + MESSAGE("It's super effective!"); + } +} diff --git a/test/battle/move_effect/pledge.c b/test/battle/move_effect/pledge.c new file mode 100644 index 0000000000..a7843be619 --- /dev/null +++ b/test/battle/move_effect/pledge.c @@ -0,0 +1,352 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_WATER_PLEDGE].effect == EFFECT_PLEDGE); + ASSUME(gBattleMoves[MOVE_FIRE_PLEDGE].effect == EFFECT_PLEDGE); + ASSUME(gBattleMoves[MOVE_GRASS_PLEDGE].effect == EFFECT_PLEDGE); +} + +DOUBLE_BATTLE_TEST("Water and Fire Pledge create a rainbow on the user's side of the field for four turns") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(4); } + PLAYER(SPECIES_WYNAUT) { Speed(3); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(8); } + OPPONENT(SPECIES_WYNAUT) { Speed(5); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_WATER_PLEDGE, target: opponentLeft); + MOVE(playerRight, MOVE_FIRE_PLEDGE, target: opponentRight); + } + TURN {} + TURN {} + TURN {} + } SCENE { + MESSAGE("Wobbuffet used Water Pledge!"); + MESSAGE("Wobbuffet is waiting for Wynaut's move…{PAUSE 16}"); + MESSAGE("Wynaut used Fire Pledge!"); + MESSAGE("The two moves become one! It's a combined move!{PAUSE 16}"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_PLEDGE, playerRight); + HP_BAR(opponentRight); + MESSAGE("A rainbow appeared in the sky on your team's side!"); + MESSAGE("The rainbow on your side disappeared!"); + } +} + +DOUBLE_BATTLE_TEST("Rainbow doubles the chance of secondary move effects") +{ + PASSES_RANDOMLY(20, 100, RNG_SECONDARY_EFFECT); + GIVEN { + ASSUME(gBattleMoves[MOVE_EMBER].effect == EFFECT_BURN_HIT); + PLAYER(SPECIES_WOBBUFFET) { Speed(4); } + PLAYER(SPECIES_WYNAUT) { Speed(3); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(8); } + OPPONENT(SPECIES_WYNAUT) { Speed(5); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_WATER_PLEDGE, target: opponentLeft); + MOVE(playerRight, MOVE_FIRE_PLEDGE, target: opponentRight); + } + TURN { MOVE(playerLeft, MOVE_EMBER, target: opponentRight); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_PLEDGE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_EMBER, playerLeft); + MESSAGE("Foe Wynaut was burned!"); + } +} + +DOUBLE_BATTLE_TEST("Rainbow flinch chance does not stack with Serene Grace") +{ + PASSES_RANDOMLY(60, 100, RNG_SECONDARY_EFFECT); + GIVEN { + ASSUME(gBattleMoves[MOVE_BITE].effect == EFFECT_FLINCH_HIT); + PLAYER(SPECIES_TOGEPI) { Speed(8); Ability(ABILITY_SERENE_GRACE); } + PLAYER(SPECIES_WOBBUFFET) { Speed(5); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(4); } + OPPONENT(SPECIES_WYNAUT) { Speed(3); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_WATER_PLEDGE, target: opponentLeft); + MOVE(playerRight, MOVE_FIRE_PLEDGE, target: opponentRight); + } + TURN { MOVE(playerLeft, MOVE_BITE, target: opponentRight); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_PLEDGE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BITE, playerLeft); + MESSAGE("Foe Wynaut flinched!"); + } +} + +DOUBLE_BATTLE_TEST("Rainbow flinch chance does not stack with Serene Grace if mvoe Triple Arrows is used") +{ + PASSES_RANDOMLY(60, 100, RNG_TRIPLE_ARROWS_FLINCH); + GIVEN { + ASSUME(gBattleMoves[MOVE_TRIPLE_ARROWS].effect == EFFECT_TRIPLE_ARROWS); + PLAYER(SPECIES_TOGEPI) { Speed(8); Ability(ABILITY_SERENE_GRACE); } + PLAYER(SPECIES_WOBBUFFET) { Speed(5); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(4); } + OPPONENT(SPECIES_WYNAUT) { Speed(3); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_WATER_PLEDGE, target: opponentLeft); + MOVE(playerRight, MOVE_FIRE_PLEDGE, target: opponentRight); + } + TURN { MOVE(playerLeft, MOVE_TRIPLE_ARROWS, target: opponentRight); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_PLEDGE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRIPLE_ARROWS, playerLeft); + MESSAGE("Foe Wynaut flinched!"); + } +} + +DOUBLE_BATTLE_TEST("Fire and Grass Pledge summons Sea Of Fire for four turns that damages the opponent") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(4); } + PLAYER(SPECIES_WYNAUT) { Speed(3); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(8); } + OPPONENT(SPECIES_WYNAUT) { Speed(5); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_FIRE_PLEDGE, target: opponentLeft); + MOVE(playerRight, MOVE_GRASS_PLEDGE, target: opponentRight); + } + TURN {} + TURN {} + TURN {} + } SCENE { + MESSAGE("Wobbuffet used Fire Pledge!"); + MESSAGE("Wobbuffet is waiting for Wynaut's move…{PAUSE 16}"); + MESSAGE("Wynaut used Grass Pledge!"); + MESSAGE("The two moves become one! It's a combined move!{PAUSE 16}"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FIRE_PLEDGE, playerRight); + HP_BAR(opponentRight); + MESSAGE("A sea of fire enveloped the opposing team!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SEA_OF_FIRE, opponentRight); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponentLeft); + MESSAGE("The opposing Foe Wobbuffet was hurt by the sea of fire!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponentRight); + MESSAGE("The opposing Foe Wynaut was hurt by the sea of fire!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponentLeft); + MESSAGE("The opposing Foe Wobbuffet was hurt by the sea of fire!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponentRight); + MESSAGE("The opposing Foe Wynaut was hurt by the sea of fire!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponentLeft); + MESSAGE("The opposing Foe Wobbuffet was hurt by the sea of fire!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponentRight); + MESSAGE("The opposing Foe Wynaut was hurt by the sea of fire!"); + MESSAGE("The sea of fire around the opposing team disappeared!"); + } +} + +DOUBLE_BATTLE_TEST("Sea Of Fire deals 1/8th damage per turn") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(4); } + PLAYER(SPECIES_WYNAUT) { Speed(3); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(8); } + OPPONENT(SPECIES_WYNAUT) { Speed(5); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_FIRE_PLEDGE, target: opponentLeft); + MOVE(playerRight, MOVE_GRASS_PLEDGE, target: opponentRight); + } + } SCENE { + s32 maxHPopponentLeft = GetMonData(&OPPONENT_PARTY[0], MON_DATA_MAX_HP); + s32 maxHPopponentRight = GetMonData(&OPPONENT_PARTY[1], MON_DATA_MAX_HP); + HP_BAR(opponentLeft, damage: maxHPopponentLeft / 8); + HP_BAR(opponentRight, damage: maxHPopponentRight / 8); + } +} + +DOUBLE_BATTLE_TEST("Grass and Water Pledge create a swamp on the user's side of the field for four turns") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(4); } + PLAYER(SPECIES_WYNAUT) { Speed(3); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(8); } + OPPONENT(SPECIES_WYNAUT) { Speed(5); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_GRASS_PLEDGE, target: opponentLeft); + MOVE(playerRight, MOVE_WATER_PLEDGE, target: opponentRight); + } + TURN {} + TURN {} + TURN {} + } SCENE { + MESSAGE("Wobbuffet used Grass Pledge!"); + MESSAGE("Wobbuffet is waiting for Wynaut's move…{PAUSE 16}"); + MESSAGE("Wynaut used Water Pledge!"); + MESSAGE("The two moves become one! It's a combined move!{PAUSE 16}"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GRASS_PLEDGE, playerRight); + HP_BAR(opponentRight); + MESSAGE("A swamp enveloped the opposing team!"); + MESSAGE("The swamp around the opposing team disappeared!"); + } +} + +DOUBLE_BATTLE_TEST("Swamp reduces the speed of the effected side by 1/4th") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(5); } + PLAYER(SPECIES_WYNAUT) { Speed(4); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(12); } + OPPONENT(SPECIES_WYNAUT) { Speed(8); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_GRASS_PLEDGE, target: opponentLeft); + MOVE(playerRight, MOVE_WATER_PLEDGE, target: opponentRight); + } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponentRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GRASS_PLEDGE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerRight); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponentLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponentRight); + } +} + +DOUBLE_BATTLE_TEST("The base power of a combined pledge move effect is 150") +{ + s16 hyperBeamDamage; + s16 combinedPledgeDamage; + + GIVEN { + ASSUME(gBattleMoves[MOVE_HYPER_BEAM].power == 150); + PLAYER(SPECIES_WOBBUFFET) { Speed(4); } + PLAYER(SPECIES_WYNAUT) { Speed(3); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(8); } + OPPONENT(SPECIES_WYNAUT) { Speed(5); } + } WHEN { + TURN { MOVE(opponentRight, MOVE_HYPER_BEAM, target: playerRight); + MOVE(playerLeft, MOVE_WATER_PLEDGE, target: opponentLeft); + MOVE(playerRight, MOVE_FIRE_PLEDGE, target: opponentRight); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_BEAM, opponentRight); + HP_BAR(playerRight, captureDamage: &hyperBeamDamage); + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_PLEDGE, playerRight); + HP_BAR(opponentRight, captureDamage: &combinedPledgeDamage); + } THEN { + EXPECT_EQ(hyperBeamDamage, combinedPledgeDamage); + } +} + +DOUBLE_BATTLE_TEST("Pledge moves can not be redirected by absorbing abilities") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_LILEEP) { Ability(ABILITY_STORM_DRAIN); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_WATER_PLEDGE, target: opponentRight);} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_PLEDGE, playerLeft); + HP_BAR(opponentRight); + } +} + +DOUBLE_BATTLE_TEST("Pledge status timer does not reset if combined move is used again") +{ + u16 pledgeMove1, pledgeMove2; + + PARAMETRIZE { pledgeMove1 = MOVE_WATER_PLEDGE; pledgeMove2 = MOVE_FIRE_PLEDGE; } + PARAMETRIZE { pledgeMove1 = MOVE_FIRE_PLEDGE; pledgeMove2 = MOVE_GRASS_PLEDGE; } + PARAMETRIZE { pledgeMove1 = MOVE_GRASS_PLEDGE; pledgeMove2 = MOVE_WATER_PLEDGE; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(4); } + PLAYER(SPECIES_WYNAUT) { Speed(3); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(8); } + OPPONENT(SPECIES_WYNAUT) { Speed(5); } + } WHEN { + TURN { MOVE(playerLeft, pledgeMove1, target: opponentLeft); + MOVE(playerRight, pledgeMove2, target: opponentRight); + } + TURN { MOVE(playerLeft, pledgeMove1, target: opponentLeft); + MOVE(playerRight, pledgeMove2, target: opponentRight); + } + TURN {} + TURN {} + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, pledgeMove1, playerRight); + ANIMATION(ANIM_TYPE_MOVE, pledgeMove1, playerRight); + if (pledgeMove1 == MOVE_WATER_PLEDGE && pledgeMove2 == MOVE_FIRE_PLEDGE) + { + NOT MESSAGE("A rainbow appeared in the sky on your team's side!"); + MESSAGE("The rainbow on your side disappeared!"); + } + if (pledgeMove1 == MOVE_FIRE_PLEDGE && pledgeMove2 == MOVE_GRASS_PLEDGE) + { + NOT MESSAGE("A sea of fire enveloped the opposing team!"); + MESSAGE("The sea of fire around the opposing team disappeared!"); + } + if (pledgeMove1 == MOVE_GRASS_PLEDGE && pledgeMove2 == MOVE_WATER_PLEDGE) + { + NOT MESSAGE("A swamp enveloped the opposing team!"); + MESSAGE("The swamp around the opposing team disappeared!"); + } + } +} + +DOUBLE_BATTLE_TEST("Pledge moves get same attack type bonus from partner", s16 damage) +{ + u32 species; + + PARAMETRIZE { species = SPECIES_WOBBUFFET; } + PARAMETRIZE { species = SPECIES_CHARMANDER; } + + GIVEN { + PLAYER(species) { Speed(4); } + PLAYER(SPECIES_WYNAUT) { Speed(3); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(8); } + OPPONENT(SPECIES_WYNAUT) { Speed(5); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_FIRE_PLEDGE, target: opponentLeft); + MOVE(playerRight, MOVE_GRASS_PLEDGE, target: opponentRight); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FIRE_PLEDGE, playerRight); + HP_BAR(opponentRight, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage); + } +} + +DOUBLE_BATTLE_TEST("Damage calculation: Combined pledge move") +{ + s16 dmg; + s16 expectedDamage; + PARAMETRIZE { expectedDamage = 159; } + PARAMETRIZE { expectedDamage = 156; } + PARAMETRIZE { expectedDamage = 154; } + PARAMETRIZE { expectedDamage = 153; } + PARAMETRIZE { expectedDamage = 151; } + PARAMETRIZE { expectedDamage = 150; } + PARAMETRIZE { expectedDamage = 148; } + PARAMETRIZE { expectedDamage = 147; } + PARAMETRIZE { expectedDamage = 145; } + PARAMETRIZE { expectedDamage = 144; } + PARAMETRIZE { expectedDamage = 142; } + PARAMETRIZE { expectedDamage = 141; } + PARAMETRIZE { expectedDamage = 139; } + PARAMETRIZE { expectedDamage = 138; } + PARAMETRIZE { expectedDamage = 136; } + PARAMETRIZE { expectedDamage = 135; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(4); } + PLAYER(SPECIES_WOBBUFFET) { HP(521); SpDefense(152); Speed(3); } + OPPONENT(SPECIES_CHARIZARD) { Speed(8); } + OPPONENT(SPECIES_EEVEE) { SpAttack(126); Speed(5); } + } WHEN { + TURN { MOVE(opponentLeft, MOVE_FIRE_PLEDGE, target: playerLeft, WITH_RNG(RNG_DAMAGE_MODIFIER, i)); + MOVE(opponentRight, MOVE_GRASS_PLEDGE, target: playerRight, WITH_RNG(RNG_DAMAGE_MODIFIER, i)); + } + } + SCENE { + HP_BAR(playerRight, captureDamage: &dmg); + } + THEN { + EXPECT_EQ(expectedDamage, dmg); + } +} diff --git a/test/battle/move_effect/protect.c b/test/battle/move_effect/protect.c index dd9f57b356..c187d6d573 100644 --- a/test/battle/move_effect/protect.c +++ b/test/battle/move_effect/protect.c @@ -124,13 +124,13 @@ SINGLE_BATTLE_TEST("Spiky Shield does 1/8 dmg of max hp of attackers making cont u16 usedMove = MOVE_NONE; u16 hp = 400, maxHp = 400; - PARAMETRIZE { usedMove = MOVE_TACKLE; hp = 1;} - PARAMETRIZE { usedMove = MOVE_TACKLE;} - PARAMETRIZE { usedMove = MOVE_LEER;} - PARAMETRIZE { usedMove = MOVE_WATER_GUN;} + PARAMETRIZE { usedMove = MOVE_TACKLE; hp = 1; } + PARAMETRIZE { usedMove = MOVE_TACKLE; } + PARAMETRIZE { usedMove = MOVE_LEER; } + PARAMETRIZE { usedMove = MOVE_WATER_GUN; } GIVEN { - PLAYER(SPECIES_WOBBUFFET) {HP(hp); MaxHP(maxHp); } + PLAYER(SPECIES_WOBBUFFET) { HP(hp); MaxHP(maxHp); } PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -295,7 +295,7 @@ DOUBLE_BATTLE_TEST("Wide Guard protects self and ally from multi-target moves") OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponentLeft, MOVE_WIDE_GUARD); MOVE(playerLeft, move, target:opponentLeft); } + TURN { MOVE(opponentLeft, MOVE_WIDE_GUARD); MOVE(playerLeft, move, target: opponentLeft); } TURN {} } SCENE { MESSAGE("Foe Wobbuffet used Wide Guard!"); @@ -320,6 +320,34 @@ DOUBLE_BATTLE_TEST("Wide Guard protects self and ally from multi-target moves") } } +DOUBLE_BATTLE_TEST("Wide Guard can not fail on consecutive turns") +{ + u8 turns; + + PASSES_RANDOMLY(2, 2); + GIVEN { + ASSUME(gBattleMoves[MOVE_HYPER_VOICE].target == MOVE_TARGET_BOTH); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_WIDE_GUARD); MOVE(playerLeft, MOVE_HYPER_VOICE, target: opponentLeft); } + TURN { MOVE(opponentLeft, MOVE_WIDE_GUARD); MOVE(playerLeft, MOVE_HYPER_VOICE, target: opponentLeft); } + TURN {} + } SCENE { + for (turns = 0; turns < 2; turns++) { + MESSAGE("Foe Wobbuffet used Wide Guard!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_WIDE_GUARD, opponentLeft); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_HYPER_VOICE, playerLeft); + MESSAGE("Foe Wobbuffet protected itself!"); + NOT HP_BAR(opponentLeft); + MESSAGE("Foe Wobbuffet protected itself!"); + NOT HP_BAR(opponentRight); + } + } +} + DOUBLE_BATTLE_TEST("Quick Guard protects self and ally from priority moves") { u16 move = MOVE_NONE; @@ -355,6 +383,31 @@ DOUBLE_BATTLE_TEST("Quick Guard protects self and ally from priority moves") } } +DOUBLE_BATTLE_TEST("Quick Guard can not fail on consecutive turns") +{ + u8 turns; + + PASSES_RANDOMLY(2, 2); + GIVEN { + ASSUME(gBattleMoves[MOVE_QUICK_ATTACK].priority == 1); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_QUICK_GUARD); MOVE(playerLeft, MOVE_QUICK_ATTACK, target: opponentRight); } + TURN { MOVE(opponentLeft, MOVE_QUICK_GUARD); MOVE(playerLeft, MOVE_QUICK_ATTACK, target: opponentRight); } + } SCENE { + for (turns = 0; turns < 2; turns++) { + MESSAGE("Foe Wobbuffet used Quick Guard!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_GUARD, opponentLeft); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, playerLeft); + MESSAGE("Foe Wobbuffet protected itself!"); + NOT HP_BAR(opponentRight); + } + } +} + DOUBLE_BATTLE_TEST("Crafty Shield protects self and ally from status moves") { u16 move = MOVE_NONE; diff --git a/test/battle/move_effect/rage_fist.c b/test/battle/move_effect/rage_fist.c new file mode 100644 index 0000000000..7a09461a4f --- /dev/null +++ b/test/battle/move_effect/rage_fist.c @@ -0,0 +1,294 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_RAGE_FIST].effect == EFFECT_RAGE_FIST); + ASSUME(gBattleMoves[MOVE_RAGE_FIST].power == 50); +} + +SINGLE_BATTLE_TEST("Rage Fist base power is increased by 50 if the user takes damage") +{ + u8 turns; + s16 timesGotHit[2]; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_REGIROCK); + } WHEN { + for (turns = 0; turns < 2; turns++) { + TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_TACKLE); } + } + } SCENE { + for (turns = 0; turns < 2; turns++) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[turns]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player); + } + } THEN { + EXPECT_MUL_EQ(timesGotHit[0], Q_4_12(2.0), timesGotHit[1]); + } +} + +SINGLE_BATTLE_TEST("Rage Fist base power is increased by each multi hit") +{ + u8 turns; + s16 timesGotHit[2]; + + GIVEN { + ASSUME(gBattleMoves[MOVE_BULLET_SEED].effect == EFFECT_MULTI_HIT); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_REGIROCK); + } WHEN { + for (turns = 0; turns < 2; turns++) { + TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_BULLET_SEED); } + } + } SCENE { + for (turns = 0; turns < 2; turns++) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[turns]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, opponent); + HP_BAR(player); + } + } THEN { + EXPECT_MUL_EQ(timesGotHit[0], Q_4_12(6.0), timesGotHit[1]); + } +} + +SINGLE_BATTLE_TEST("Rage Fist base power is not increased by a confusion hit") +{ + s16 timesGotHit[2]; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_REGIROCK); + } WHEN { + TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_CONFUSE_RAY); } + TURN {} + TURN { MOVE(player, MOVE_RAGE_FIST, WITH_RNG(RNG_CONFUSION, FALSE)); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[0]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, opponent); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, player); + MESSAGE("Wobbuffet became confused!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, player); + MESSAGE("It hurt itself in its confusion!"); + HP_BAR(player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[1]); + } THEN { + EXPECT_EQ(timesGotHit[0], timesGotHit[1]); + } +} + +DOUBLE_BATTLE_TEST("Rage Fist maximum base power is 350") +{ + u16 turns; + s16 timesGotHit[2]; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_REGIROCK); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + for (turns = 1; turns <= 3; turns++) { + TURN { + if (turns == 1) + MOVE(playerLeft, MOVE_RAGE_FIST, target: opponentLeft); + + MOVE(playerRight, MOVE_TACKLE, target: playerLeft); + MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); + MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); + } + } + TURN { MOVE(playerLeft, MOVE_RAGE_FIST, target: opponentLeft); } + } SCENE { + for (turns = 1; turns <= 3; turns++) { + if (turns == 1) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, playerLeft); + HP_BAR(opponentLeft, captureDamage: ×GotHit[0]); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight); + HP_BAR(playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft); + HP_BAR(playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight); + HP_BAR(playerLeft); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, playerLeft); + HP_BAR(opponentLeft, captureDamage: ×GotHit[1]); + } THEN { + EXPECT_MUL_EQ(timesGotHit[0], Q_4_12(7.0), timesGotHit[1]); + } +} + +SINGLE_BATTLE_TEST("Rage Fist base power is not increased if a substitute was hit") +{ + s16 timesGotHit[2]; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_REGIROCK); + } WHEN { + TURN { MOVE(player, MOVE_RAGE_FIST); } + TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_CRUNCH); } + TURN { MOVE(player, MOVE_RAGE_FIST); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[0]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CRUNCH, opponent); + MESSAGE("The SUBSTITUTE took damage for Wobbuffet!"); + MESSAGE("Wobbuffet's SUBSTITUTE faded!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[1]); + } THEN { + EXPECT_EQ(timesGotHit[0], timesGotHit[1]); + } +} + +SINGLE_BATTLE_TEST("Rage Fist base power is not lost if user switches out") +{ + s16 timesGotHit[2]; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_REGIROCK); + } WHEN { + TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_TACKLE); } + TURN { SWITCH(player, 1); MOVE(opponent, MOVE_TACKLE); } + TURN { SWITCH(player, 0); } + TURN { MOVE(player, MOVE_RAGE_FIST); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[0]); + MESSAGE("Wobbuffet, that's enough! Come back!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + MESSAGE("Wynaut, that's enough! Come back!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[1]); + } THEN { + EXPECT_MUL_EQ(timesGotHit[0], Q_4_12(2.0), timesGotHit[1]); + } +} + +SINGLE_BATTLE_TEST("Rage Fist base power is increased by 50 even if a damaging move does no damage - False Swipe") +{ + u8 turns; + s16 timesGotHit[2]; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_REGIROCK); + } WHEN { + for (turns = 0; turns < 2; turns++) { + TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_FALSE_SWIPE); } + } + } SCENE { + for (turns = 0; turns < 2; turns++) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[turns]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FALSE_SWIPE, opponent); + HP_BAR(player); + } + } THEN { + EXPECT_MUL_EQ(timesGotHit[0], Q_4_12(2.0), timesGotHit[1]); + } +} + +SINGLE_BATTLE_TEST("Rage Fist base power is increased by 50 even if a damaging move does no damage - Endure") +{ + s16 timesGotHit[2]; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { HP(2); } + OPPONENT(SPECIES_REGIROCK); + } WHEN { + TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_FALSE_SWIPE); } + TURN { MOVE(player, MOVE_ENDURE); MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_RAGE_FIST); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[0]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FALSE_SWIPE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ENDURE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[1]); + } THEN { + EXPECT_MUL_EQ(timesGotHit[0], Q_4_12(3.0), timesGotHit[1]); + } +} + +SINGLE_BATTLE_TEST("Rage Fist base power is not increased if move had no affect") +{ + u8 turns; + s16 timesGotHit[2]; + + GIVEN { + PLAYER(SPECIES_GASTLY); + OPPONENT(SPECIES_REGIROCK); + } WHEN { + for (turns = 0; turns < 2; turns++) { + TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_TACKLE); } + } + } SCENE { + for (turns = 0; turns < 2; turns++) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[turns]); + MESSAGE("Foe Regirock used Tackle!"); + MESSAGE("It doesn't affect Gastly…"); + } + } THEN { + EXPECT_EQ(timesGotHit[0], timesGotHit[1]); + } +} + +SINGLE_BATTLE_TEST("Rage Fist base power is increased if Disguise breaks") +{ + s16 timesGotHit[2]; + + GIVEN { + PLAYER(SPECIES_MIMIKYU_DISGUISED) { Ability(ABILITY_DISGUISE); } + OPPONENT(SPECIES_REGIROCK); + } WHEN { + TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_ROCK_THROW); } + TURN { MOVE(player, MOVE_RAGE_FIST); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[0]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROCK_THROW, opponent); + ABILITY_POPUP(player, ABILITY_DISGUISE); + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[1]); + } THEN { + EXPECT_MUL_EQ(timesGotHit[0], Q_4_12(2.0), timesGotHit[1]); + } +} + +SINGLE_BATTLE_TEST("Rage Fist number of hits is copied by Transform") +{ + s16 timesGotHit[2]; + + // KNOWN_FAILING; // After Transform , wrong move is used by transformed mon + GIVEN { + PLAYER(SPECIES_REGIROCK); + OPPONENT(SPECIES_REGIROCK) { Moves(MOVE_RAGE_FIST, MOVE_CELEBRATE); } + } WHEN { + TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_TRANSFORM); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_RAGE_FIST); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[0]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TRANSFORM, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAGE_FIST, player); + HP_BAR(opponent, captureDamage: ×GotHit[1]); + } THEN { + EXPECT_MUL_EQ(timesGotHit[0], Q_4_12(2.0), timesGotHit[1]); + } +} diff --git a/test/battle/move_effect/reflect.c b/test/battle/move_effect/reflect.c index dd8738f72b..68d0af1a45 100644 --- a/test/battle/move_effect/reflect.c +++ b/test/battle/move_effect/reflect.c @@ -27,7 +27,7 @@ SINGLE_BATTLE_TEST("Reflect reduces physical damage", s16 damage) SINGLE_BATTLE_TEST("Reflect applies for 5 turns") { - u16 damage[6]; + s16 damage[6]; GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); diff --git a/test/battle/move_effect/relic_song.c b/test/battle/move_effect/relic_song.c new file mode 100644 index 0000000000..c10e18c101 --- /dev/null +++ b/test/battle/move_effect/relic_song.c @@ -0,0 +1,179 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_RELIC_SONG].effect == EFFECT_RELIC_SONG); +} + +SINGLE_BATTLE_TEST("Relic Song has a 10% chance to put the target to sleep") +{ + PASSES_RANDOMLY(10, 100, RNG_SECONDARY_EFFECT); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_RELIC_SONG); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RELIC_SONG, player); + HP_BAR(opponent); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, opponent); + STATUS_ICON(opponent, sleep: TRUE); + } +} + +SINGLE_BATTLE_TEST("Relic Song is prevented by Soundproof") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_VOLTORB) { Ability(ABILITY_SOUNDPROOF); } + } WHEN { + TURN { MOVE(player, MOVE_RELIC_SONG); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_SOUNDPROOF); + MESSAGE("Foe Voltorb's Soundproof blocks Relic Song!"); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RELIC_SONG, player); + HP_BAR(opponent); + } + } +} + +SINGLE_BATTLE_TEST("Relic Song will become a Water-type move when used by a Pokémon with the Ability Liquid Voice") +{ + GIVEN { + PLAYER(SPECIES_VULPIX); + OPPONENT(SPECIES_POPPLIO) { Ability(ABILITY_LIQUID_VOICE); } + } WHEN { + TURN { MOVE(opponent, MOVE_RELIC_SONG); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RELIC_SONG, opponent); + HP_BAR(player); + MESSAGE("It's super effective!"); + } +} + +SINGLE_BATTLE_TEST("Relic Song is blocked by Throat Chop") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_THROAT_CHOP); MOVE(player, MOVE_RELIC_SONG); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_THROAT_CHOP, opponent); + HP_BAR(player); + MESSAGE("Wobbuffet can't use Relic Song due to Throat Chop!"); + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_RELIC_SONG, player); + } +} + +SINGLE_BATTLE_TEST("Relic Song transforms Meloetta if used successfully") +{ + GIVEN { + PLAYER(SPECIES_MELOETTA_ARIA); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_RELIC_SONG); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RELIC_SONG, player); + HP_BAR(opponent); + MESSAGE("Meloetta transformed!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_MELOETTA_PIROUETTE); + } +} + +SINGLE_BATTLE_TEST("Relic Song transforms Meloetta twice if used successfully") +{ + GIVEN { + PLAYER(SPECIES_MELOETTA_ARIA); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_RELIC_SONG); } + TURN { MOVE(player, MOVE_RELIC_SONG); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RELIC_SONG, player); + HP_BAR(opponent); + MESSAGE("Meloetta transformed!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_RELIC_SONG, player); + HP_BAR(opponent); + MESSAGE("Meloetta transformed!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_MELOETTA_ARIA); + } +} + +SINGLE_BATTLE_TEST("Relic Song transformation is the last thing that happens after it hits") +{ + GIVEN { + PLAYER(SPECIES_MELOETTA_ARIA); + OPPONENT(SPECIES_GOSSIFLEUR) { HP(1); Ability(ABILITY_COTTON_DOWN); } + } WHEN { + TURN { MOVE(player, MOVE_RELIC_SONG); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RELIC_SONG, player); + HP_BAR(opponent); + MESSAGE("Foe Gossifleur fainted!"); + ABILITY_POPUP(opponent, ABILITY_COTTON_DOWN); + MESSAGE("Meloetta's Speed fell!"); + MESSAGE("Meloetta transformed!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_MELOETTA_PIROUETTE); + } +} + +DOUBLE_BATTLE_TEST("Relic Song transforms once Meloetta in a double battle") +{ + GIVEN { + PLAYER(SPECIES_MELOETTA_ARIA); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_RELIC_SONG); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RELIC_SONG, playerLeft); + HP_BAR(opponentLeft); + HP_BAR(opponentRight); + MESSAGE("Meloetta transformed!"); + } THEN { + EXPECT_EQ(playerLeft->species, SPECIES_MELOETTA_PIROUETTE); + } +} + +SINGLE_BATTLE_TEST("Relic Song loses the form-changing effect with Sheer Force") +{ + GIVEN { + PLAYER(SPECIES_MELOETTA_ARIA); + OPPONENT(SPECIES_NIDOKING) { Ability(ABILITY_SHEER_FORCE); } + } WHEN { + TURN { MOVE(opponent, MOVE_SKILL_SWAP); MOVE(player, MOVE_RELIC_SONG); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SKILL_SWAP, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_RELIC_SONG, player); + HP_BAR(opponent); + NOT MESSAGE("Meloetta transformed!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_MELOETTA_ARIA); + } +} + +SINGLE_BATTLE_TEST("Relic Song transforms Meloetta after Magician was activated") +{ + GIVEN { + PLAYER(SPECIES_MELOETTA_ARIA); + OPPONENT(SPECIES_DELPHOX) { Ability(ABILITY_MAGICIAN); Item(ITEM_POTION); } + } WHEN { + TURN { MOVE(opponent, MOVE_SKILL_SWAP); MOVE(player, MOVE_RELIC_SONG); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SKILL_SWAP, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_RELIC_SONG, player); + HP_BAR(opponent); + ABILITY_POPUP(player, ABILITY_MAGICIAN); + MESSAGE("Meloetta stole Foe Delphox's Potion!"); + MESSAGE("Meloetta transformed!"); + } THEN { + EXPECT_EQ(player->species, SPECIES_MELOETTA_PIROUETTE); + } +} diff --git a/test/battle/move_effect/roost.c b/test/battle/move_effect/roost.c index b68cbfeafc..15628597d8 100644 --- a/test/battle/move_effect/roost.c +++ b/test/battle/move_effect/roost.c @@ -63,7 +63,7 @@ SINGLE_BATTLE_TEST("Roost fails if the user is under the effects of Heal Block") SINGLE_BATTLE_TEST("Roost recovers 50% of the user's Max HP") { - s16 hp; + u16 hp; KNOWN_FAILING; // All healing is currently rounded down GIVEN { @@ -131,7 +131,6 @@ SINGLE_BATTLE_TEST("Roost, if used by a Flying/Flying type, treats the user as a PARAMETRIZE{ damagingMove = MOVE_DISARMING_VOICE; } GIVEN { - ASSUME(P_GEN_5_POKEMON == TRUE); ASSUME(gSpeciesInfo[SPECIES_TORNADUS].types[0] == TYPE_FLYING); ASSUME(gSpeciesInfo[SPECIES_TORNADUS].types[1] == TYPE_FLYING); PLAYER(SPECIES_TORNADUS) { HP(50); MaxHP(100); } diff --git a/test/battle/move_effect/sticky_web.c b/test/battle/move_effect/sticky_web.c index e12cc80905..cdf577b5ad 100644 --- a/test/battle/move_effect/sticky_web.c +++ b/test/battle/move_effect/sticky_web.c @@ -108,7 +108,6 @@ DOUBLE_BATTLE_TEST("Sticky Web has correct interactions with Mirror Armor - the PARAMETRIZE {playerSetUpper = 1; opponentSetUpper = 1; } GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); PLAYER(SPECIES_SQUIRTLE); PLAYER(SPECIES_CHARMANDER); PLAYER(SPECIES_CORVIKNIGHT) { Ability(ABILITY_MIRROR_ARMOR); Item(ITEM_IRON_BALL); } // Iron Ball, so that flying type Corviknight is affected by Sticky Web. @@ -148,7 +147,6 @@ DOUBLE_BATTLE_TEST("Sticky Web has correct interactions with Mirror Armor - no o PARAMETRIZE { speedPlayer = 10; speedOpponent = 5; } GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); PLAYER(SPECIES_SQUIRTLE) { Speed(speedPlayer); } PLAYER(SPECIES_CHARMANDER) { Speed(speedPlayer); } PLAYER(SPECIES_CORVIKNIGHT) { Ability(ABILITY_MIRROR_ARMOR); Item(ITEM_IRON_BALL); Speed(speedOpponent); } // Iron Ball, so that flying type Corviknight is affected by Sticky Web. @@ -193,7 +191,6 @@ DOUBLE_BATTLE_TEST("Sticky Web has correct interactions with Mirror Armor - no o PARAMETRIZE {hasReplacement = FALSE;} GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(gBattleMoves[MOVE_MEMENTO].effect == EFFECT_MEMENTO); PLAYER(SPECIES_SQUIRTLE) {Speed(5); } PLAYER(SPECIES_CHARMANDER) {Speed(5); } diff --git a/test/battle/move_effect/syrup_bomb.c b/test/battle/move_effect/syrup_bomb.c new file mode 100644 index 0000000000..f286049e1a --- /dev/null +++ b/test/battle/move_effect/syrup_bomb.c @@ -0,0 +1,166 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Syrup Bomb covers the foe in sticky syrup for 3 turns") +{ + u8 j; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SYRUP_BOMB); } + for (j = 0; j < 4; j++) + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); + HP_BAR(opponent); + MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + } + } +} + +SINGLE_BATTLE_TEST("Sticky Syrup isn't applied again if the target is already covered") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SYRUP_BOMB); } + TURN { MOVE(player, MOVE_SYRUP_BOMB); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); + HP_BAR(opponent); + MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); + HP_BAR(opponent); + NOT MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); + } +} + +SINGLE_BATTLE_TEST("Syrup Bomb is prevented by Bulletproof") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_CHESPIN) { Ability(ABILITY_BULLETPROOF); } + } WHEN { + TURN { MOVE(player, MOVE_SYRUP_BOMB); } + } SCENE { + ABILITY_POPUP(opponent, ABILITY_BULLETPROOF); + MESSAGE("Foe Chespin's Bulletproof blocks Syrup Bomb!"); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); + HP_BAR(opponent); + } + } +} + +SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Body, White Smoke or Full Metal Body") +{ + u32 species; + u32 ability; + + PARAMETRIZE { species = SPECIES_BELDUM; ability = ABILITY_CLEAR_BODY; } + PARAMETRIZE { species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; } + PARAMETRIZE { species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species) { Ability(ability); } + } WHEN { + TURN { MOVE(player, MOVE_SYRUP_BOMB); } + TURN {} + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); + HP_BAR(opponent); + if (species == SPECIES_BELDUM) + { + MESSAGE("Foe Beldum got covered in sticky syrup!"); + ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); + MESSAGE("Foe Beldum's Clear Body prevents stat loss!"); + NONE_OF { + MESSAGE("Foe Beldum's Speed fell!"); + } + } + else if (species == SPECIES_TORKOAL) + { + MESSAGE("Foe Torkoal got covered in sticky syrup!"); + ABILITY_POPUP(opponent, ABILITY_WHITE_SMOKE); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); + MESSAGE("Foe Torkoal's White Smoke prevents stat loss!"); + NONE_OF { + MESSAGE("Foe Torkoal's Speed fell!"); + } + } + else if (species == SPECIES_SOLGALEO) + { + MESSAGE("Foe Solgaleo got covered in sticky syrup!"); + ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); + MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!"); + NONE_OF { + MESSAGE("Foe Solgaleo's Speed fell!"); + } + } + } +} + +SINGLE_BATTLE_TEST("Sticky Syrup speed reduction is prevented by Clear Amulet") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_CLEAR_AMULET); } + } WHEN { + TURN { MOVE(player, MOVE_SYRUP_BOMB); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); + HP_BAR(opponent); + MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); + MESSAGE("Foe Wobbuffet's Clear Amulet prevents its stats from being lowered!"); + NONE_OF { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + } + } +} + +SINGLE_BATTLE_TEST("Sticky syrup will not decrease speed further then minus six") +{ + u8 j; + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + for (j = 0; j < 3; j++) + TURN { MOVE(player, MOVE_SCARY_FACE); } + TURN { MOVE(player, MOVE_SYRUP_BOMB); } + TURN {} + } SCENE { + for (j = 0; j < 3; j++) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_SYRUP_BOMB, player); + HP_BAR(opponent); + MESSAGE("Foe Wobbuffet got covered in sticky syrup!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SYRUP_BOMB_SPEED_DROP, opponent); + MESSAGE("Foe Wobbuffet's Speed won't go lower!"); + NONE_OF { + MESSAGE("Foe Wobbuffet's Speed fell!"); + } + } +} diff --git a/test/battle/move_effect/teatime.c b/test/battle/move_effect/teatime.c index 3f933db115..2d7c7426e8 100644 --- a/test/battle/move_effect/teatime.c +++ b/test/battle/move_effect/teatime.c @@ -96,7 +96,7 @@ SINGLE_BATTLE_TEST("Teatime causes other Pokemon to consume their Berry even if DOUBLE_BATTLE_TEST("Teatime causes all Pokémon to consume their berry") { - struct BattlePokemon *user; + struct BattlePokemon *user = NULL; PARAMETRIZE { user = playerLeft; } PARAMETRIZE { user = playerRight; } PARAMETRIZE { user = opponentLeft; } @@ -244,7 +244,6 @@ SINGLE_BATTLE_TEST("Teatime triggers Motor Drive if it has been affected by Elec PARAMETRIZE { move = MOVE_PLASMA_FISTS; item = ITEM_NONE; } GIVEN { - ASSUME(P_GEN_4_POKEMON == TRUE); PLAYER(SPECIES_ELECTIVIRE) { Ability(ABILITY_MOTOR_DRIVE); Item(item); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LIECHI_BERRY); } } WHEN { diff --git a/test/battle/move_effect/techno_blast.c b/test/battle/move_effect/techno_blast.c new file mode 100644 index 0000000000..2a5b4f4396 --- /dev/null +++ b/test/battle/move_effect/techno_blast.c @@ -0,0 +1,31 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_TECHNO_BLAST].effect == EFFECT_CHANGE_TYPE_ON_ITEM); + ASSUME(gBattleMoves[MOVE_TECHNO_BLAST].argument == HOLD_EFFECT_DRIVE); +} + + +SINGLE_BATTLE_TEST("Techno Blast changes the move type depending on the mask the user holds") +{ + u16 species; + u16 item; + + PARAMETRIZE { species = SPECIES_CHARIZARD; item = ITEM_DOUSE_DRIVE; } + PARAMETRIZE { species = SPECIES_BLASTOISE; item = ITEM_SHOCK_DRIVE; } + PARAMETRIZE { species = SPECIES_VENUSAUR; item = ITEM_BURN_DRIVE; } + PARAMETRIZE { species = SPECIES_DRATINI; item = ITEM_CHILL_DRIVE; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(item); } + OPPONENT(species); + } WHEN { + TURN { MOVE(player, MOVE_TECHNO_BLAST); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TECHNO_BLAST, player); + HP_BAR(opponent); + MESSAGE("It's super effective!"); + } +} diff --git a/test/battle/move_effect/tri_attack.c b/test/battle/move_effect/tri_attack.c index d7d2102271..644ad9f6b2 100644 --- a/test/battle/move_effect/tri_attack.c +++ b/test/battle/move_effect/tri_attack.c @@ -72,12 +72,8 @@ SINGLE_BATTLE_TEST("Tri Attack cannot paralyze/burn/freeze pokemon with abilitie u32 rng; PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_RAICHU; ability = ABILITY_LIGHTNING_ROD; } PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_JOLTEON; ability = ABILITY_VOLT_ABSORB; } - #if P_GEN_4_POKEMON == TRUE PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = MOVE_EFFECT_PARALYSIS; species = SPECIES_ELECTIVIRE; ability = ABILITY_MOTOR_DRIVE; } - #endif // P_GEN_4_POKEMON - #if P_GEN_7_POKEMON == TRUE PARAMETRIZE { statusAnim = B_ANIM_STATUS_BRN; rng = MOVE_EFFECT_BURN; species = SPECIES_DEWPIDER; ability = ABILITY_WATER_BUBBLE; } - #endif // P_GEN_7_POKEMON PARAMETRIZE { statusAnim = B_ANIM_STATUS_BRN; rng = MOVE_EFFECT_BURN; species = SPECIES_SEAKING; ability = ABILITY_WATER_VEIL; } PARAMETRIZE { statusAnim = B_ANIM_STATUS_FRZ; rng = MOVE_EFFECT_FREEZE; species = SPECIES_CAMERUPT; ability = ABILITY_MAGMA_ARMOR; } diff --git a/test/battle/move_flags/cant_use_twice.c b/test/battle/move_flags/cant_use_twice.c new file mode 100644 index 0000000000..3135e00169 --- /dev/null +++ b/test/battle/move_flags/cant_use_twice.c @@ -0,0 +1,93 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_GIGATON_HAMMER].cantUseTwice == TRUE); + ASSUME(gBattleMoves[MOVE_BLOOD_MOON].cantUseTwice == TRUE); +} + +SINGLE_BATTLE_TEST("Struggle will be used if slow Encore is used on moves with the cantUseTwice flag") +{ + u32 move; + PARAMETRIZE { move = MOVE_GIGATON_HAMMER; } + PARAMETRIZE { move = MOVE_BLOOD_MOON; } + GIVEN { + ASSUME(gBattleMoves[MOVE_ENCORE].effect == EFFECT_ENCORE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); MOVE(opponent, MOVE_ENCORE); } + TURN { FORCED_MOVE(player); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); + } +} + +SINGLE_BATTLE_TEST("Moves with the cantUseTwice flag strike again if fast encore is used") +{ + u32 move; + PARAMETRIZE { move = MOVE_GIGATON_HAMMER; } + PARAMETRIZE { move = MOVE_BLOOD_MOON; } + GIVEN { + ASSUME(gBattleMoves[MOVE_ENCORE].effect == EFFECT_ENCORE); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + TURN { MOVE(opponent, MOVE_ENCORE); FORCED_MOVE(player); } + TURN { FORCED_MOVE(player); } + TURN { FORCED_MOVE(player); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponent); + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); + } +} + +SINGLE_BATTLE_TEST("Moves with the cantUseTwice flag alternate with Struggle if it is the only usable move left") +{ + u32 move; + PARAMETRIZE { move = MOVE_GIGATON_HAMMER; } + PARAMETRIZE { move = MOVE_BLOOD_MOON; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Moves(move, MOVE_NONE, MOVE_NONE, MOVE_NONE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, move); } + TURN { FORCED_MOVE(player); } + TURN { MOVE(player, move); } + TURN { FORCED_MOVE(player); } + TURN { MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); + ANIMATION(ANIM_TYPE_MOVE, move, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player); + ANIMATION(ANIM_TYPE_MOVE, move, player); + } +} + +SINGLE_BATTLE_TEST("Moves with the cantUseTwice flag can alternate between each other") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_GIGATON_HAMMER, MOVE_BLOOD_MOON, MOVE_NONE, MOVE_NONE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_GIGATON_HAMMER); } + TURN { MOVE(player, MOVE_BLOOD_MOON); } + TURN { MOVE(player, MOVE_GIGATON_HAMMER); } + TURN { MOVE(player, MOVE_BLOOD_MOON); } + TURN { MOVE(player, MOVE_GIGATON_HAMMER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BLOOD_MOON, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BLOOD_MOON, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_GIGATON_HAMMER, player); + } +} diff --git a/test/battle/terrain/electric.c b/test/battle/terrain/electric.c index cebb0cb750..b71707603f 100644 --- a/test/battle/terrain/electric.c +++ b/test/battle/terrain/electric.c @@ -22,7 +22,6 @@ SINGLE_BATTLE_TEST("Electric Terrain protects grounded battlers from falling asl SINGLE_BATTLE_TEST("Electric Terrain activates Electric Seed and Mimicry") { GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(gItems[ITEM_ELECTRIC_SEED].holdEffect == HOLD_EFFECT_SEEDS); ASSUME(gItems[ITEM_ELECTRIC_SEED].holdEffectParam == HOLD_EFFECT_PARAM_ELECTRIC_TERRAIN); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_ELECTRIC_SEED); } diff --git a/test/battle/terrain/grassy.c b/test/battle/terrain/grassy.c index 893a305287..e135426427 100644 --- a/test/battle/terrain/grassy.c +++ b/test/battle/terrain/grassy.c @@ -18,7 +18,6 @@ SINGLE_BATTLE_TEST("Grassy Terrain recovers 1/16th HP at end of turn") SINGLE_BATTLE_TEST("Grassy Terrain activates Grassy Seed and Mimicry") { GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(gItems[ITEM_GRASSY_SEED].holdEffect == HOLD_EFFECT_SEEDS); ASSUME(gItems[ITEM_GRASSY_SEED].holdEffectParam == HOLD_EFFECT_PARAM_GRASSY_TERRAIN); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_GRASSY_SEED); } diff --git a/test/battle/terrain/misty.c b/test/battle/terrain/misty.c index dd6489af6b..dab66efe0b 100644 --- a/test/battle/terrain/misty.c +++ b/test/battle/terrain/misty.c @@ -22,7 +22,6 @@ SINGLE_BATTLE_TEST("Misty Terrain protects grounded battlers from non-volatile s SINGLE_BATTLE_TEST("Misty Terrain activates Misty Seed and Mimicry") { GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(gItems[ITEM_MISTY_SEED].holdEffect == HOLD_EFFECT_SEEDS); ASSUME(gItems[ITEM_MISTY_SEED].holdEffectParam == HOLD_EFFECT_PARAM_MISTY_TERRAIN); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_MISTY_SEED); } diff --git a/test/battle/terrain/psychic.c b/test/battle/terrain/psychic.c index 45c2886e32..cf7a5640c2 100644 --- a/test/battle/terrain/psychic.c +++ b/test/battle/terrain/psychic.c @@ -21,7 +21,6 @@ SINGLE_BATTLE_TEST("Psychic Terrain protects grounded battlers from priority mov SINGLE_BATTLE_TEST("Psychic Terrain activates Psychic Seed and Mimicry") { GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(gItems[ITEM_PSYCHIC_SEED].holdEffect == HOLD_EFFECT_SEEDS); ASSUME(gItems[ITEM_PSYCHIC_SEED].holdEffectParam == HOLD_EFFECT_PARAM_PSYCHIC_TERRAIN); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_PSYCHIC_SEED); } diff --git a/test/battle/trainer_control.c b/test/battle/trainer_control.c index 99bea0e8cc..810a721fa5 100644 --- a/test/battle/trainer_control.c +++ b/test/battle/trainer_control.c @@ -123,7 +123,7 @@ TEST("CreateNPCTrainerPartyForTrainer generates different personalities for diff TEST("ModifyPersonalityForNature can set any nature") { - u32 personality, nature, j, k; + u32 personality = 0, nature = 0, j = 0, k = 0; for (j = 0; j < 64; j++) { for (k = 0; k < NUM_NATURES; k++) diff --git a/test/dynamax.c b/test/dynamax.c new file mode 100644 index 0000000000..69887d6d2f --- /dev/null +++ b/test/dynamax.c @@ -0,0 +1,1465 @@ +#include "global.h" +#include "test/battle.h" + +// ============= DYNAMAX AND MAX MOVE INTERACTIONS =================== +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax increases HP and max HP by 1.5x", u16 hp) +{ + bool32 dynamax; + PARAMETRIZE { dynamax = FALSE; } + PARAMETRIZE { dynamax = TRUE; } + GIVEN { // TODO: Dynamax level + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: dynamax); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + if (dynamax) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); + MESSAGE("Wobbuffet used Max Strike!"); + } + MESSAGE("Foe Wobbuffet used Celebrate!"); + } THEN { + results[i].hp = player->hp; + } FINALLY { + EXPECT_MUL_EQ(results[0].hp, Q_4_12(1.5), results[1].hp); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamax expires after three turns", u16 hp) +{ + bool32 dynamax; + PARAMETRIZE { dynamax = FALSE; } + PARAMETRIZE { dynamax = TRUE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: dynamax); } // 1st max move + TURN { MOVE(player, MOVE_TACKLE); } // 2nd max move + TURN { MOVE(player, MOVE_TACKLE); } // 3rd max move + } SCENE { + int i; + for (i = 0; i < DYNAMAX_TURNS_COUNT; ++i) { + if (dynamax) + MESSAGE("Wobbuffet used Max Strike!"); + else + MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + } + if (dynamax) // Expect to have visual reversion at the end. + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player); + } THEN { + results[i].hp = player->hp; + } FINALLY { + EXPECT_EQ(results[0].hp, results[1].hp); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot be flinched") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_FAKE_OUT].effect == EFFECT_FAKE_OUT); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_FAKE_OUT); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Fake Out!"); + NONE_OF { MESSAGE("Wobbuffet flinched!"); } + MESSAGE("Wobbuffet used Max Strike!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot be hit by weight-based moves") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_HEAVY_SLAM].effect == EFFECT_HEAT_CRASH); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_HEAVY_SLAM); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Heavy Slam!"); + MESSAGE("The move was blocked by the power of Dynamax!"); + NONE_OF { HP_BAR(player); } + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot be hit by OHKO moves") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_FISSURE].effect == EFFECT_OHKO); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_MACHAMP) { Ability(ABILITY_NO_GUARD); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_FISSURE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Machamp used Fissure!"); + MESSAGE("Wobbuffet is unaffected!"); + NONE_OF { HP_BAR(player); } + } +} + +// can't be used at all in Raid, see "Documenting Dynamax" +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Destiny Bond") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(50); }; + OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_DESTINY_BOND); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Destiny Bond!"); + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet fainted!"); + NONE_OF { HP_BAR(player); } + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are affected by Grudge") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(50); }; + OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_GRUDGE); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Grudge!"); + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Wobbuffet's Tackle lost all its PP due to the GRUDGE!"); + MESSAGE("Foe Wobbuffet fainted!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by phazing moves, but still take damage") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_DRAGON_TAIL].effect == EFFECT_HIT_SWITCH_TARGET); + ASSUME(gBattleMoves[MOVE_WHIRLWIND].effect == EFFECT_ROAR); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_DRAGON_TAIL); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(opponent, MOVE_WHIRLWIND); MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Dragon Tail!"); + HP_BAR(player); + MESSAGE("The move was blocked by the power of Dynamax!"); + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Whirlwind!"); + MESSAGE("The move was blocked by the power of Dynamax!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by phazing moves but no block message is printed if they faint") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_DRAGON_TAIL].effect == EFFECT_HIT_SWITCH_TARGET); + PLAYER(SPECIES_WOBBUFFET) { HP(1); }; + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_DRAGON_TAIL); MOVE(player, MOVE_TACKLE, dynamax: TRUE); SEND_OUT(player, 1); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Dragon Tail!"); + HP_BAR(player); + MESSAGE("Wobbuffet fainted!"); + NOT MESSAGE("The move was blocked by the power of Dynamax!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Red Card") +{ + GIVEN { + ASSUME(gItems[ITEM_RED_CARD].holdEffect == HOLD_EFFECT_RED_CARD); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_RED_CARD); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent); + MESSAGE("Foe Wobbuffet held up its Red Card against Wobbuffet!"); + MESSAGE("The move was blocked by the power of Dynamax!"); + } THEN { + EXPECT_EQ(opponent->item, ITEM_NONE); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can be switched out by Eject Button") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_EJECT_BUTTON); } + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet is switched out with the Eject Button!"); + } THEN { + EXPECT_EQ(opponent->item, ITEM_NONE); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot have their ability swapped to another Pokemon's") +{ + GIVEN { + PLAYER(SPECIES_MILTANK) { Ability(ABILITY_SCRAPPY); } + OPPONENT(SPECIES_RUNERIGUS) { Ability(ABILITY_WANDERING_SPIRIT); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_SKILL_SWAP); } + } SCENE { + MESSAGE("Miltank used Max Strike!"); + MESSAGE("Foe Runerigus used Skill Swap!"); + MESSAGE("But it failed!"); + } THEN { + EXPECT_EQ(player->ability, ABILITY_SCRAPPY); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have their ability changed or suppressed") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_SHADOW_TAG); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_SIMPLE_BEAM); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Simple Beam!"); + MESSAGE("Wobbuffet acquired Simple!"); + } THEN { + EXPECT_EQ(player->ability, ABILITY_SIMPLE); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Encore") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_ENCORE); } + TURN { MOVE(player, MOVE_EMBER); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Encore!"); + MESSAGE("But it failed!"); + MESSAGE("Wobbuffet used Max Flare!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can be encored immediately after reverting") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Speed(50); }; // yes, this speed is necessary + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); }; + } WHEN { + TURN { MOVE(player, MOVE_ARM_THRUST, dynamax: TRUE); } + TURN { MOVE(player, MOVE_ARM_THRUST); } + TURN { MOVE(player, MOVE_ARM_THRUST); } + TURN { MOVE(opponent, MOVE_ENCORE); MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Max Knuckle!"); + MESSAGE("Wobbuffet used Max Knuckle!"); + MESSAGE("Wobbuffet used Max Knuckle!"); + MESSAGE("Foe Wobbuffet used Encore!"); + MESSAGE("Wobbuffet used Arm Thrust!"); + } +} + +// Max Moves don't make contact, so Cursed Body doesn't need to be tested, but it is coded for. +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon's Max Moves cannot be disabled") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_DISABLE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Disable!"); + MESSAGE("But it failed!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have base moves disabled on their first turn") +{ + GIVEN { + ASSUME(B_DISABLE_TURNS >= GEN_5); + PLAYER(SPECIES_WOBBUFFET) { Speed(50); }; + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); }; + } WHEN { + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_DISABLE); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN {} + TURN {} + TURN { MOVE(player, MOVE_TACKLE, allowed: FALSE); MOVE(player, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Foe Wobbuffet used Celebrate!"); + MESSAGE("Wobbuffet used Tackle!"); + MESSAGE("Foe Wobbuffet used Disable!"); + MESSAGE("Wobbuffet's Tackle was disabled!"); + MESSAGE("Wobbuffet used Max Strike!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Torment") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_TORMENT); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Torment!"); + MESSAGE("But it failed!"); + } +} + +// This is true for all item-removing moves. +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not immune to Knock Off") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_POTION); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_KNOCK_OFF); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Knock Off!"); + MESSAGE("Foe Wobbuffet knocked off Wobbuffet's Potion!"); + } THEN { + EXPECT_EQ(player->item, ITEM_NONE); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon lose their substitutes") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Substitute!"); + MESSAGE("Wobbuffet made a SUBSTITUTE!"); + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + HP_BAR(player); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have their base moves copied by Copycat") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_TRICK_ROOM, dynamax: TRUE, target: opponentLeft); MOVE(playerRight, MOVE_COPYCAT, target: opponentLeft); } + } SCENE { + MESSAGE("Wobbuffet used Max Guard!"); + MESSAGE("Wynaut used Trick Room!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon take double damage from Dynamax Cannon", s16 damage) +{ + bool32 dynamaxed; + PARAMETRIZE { dynamaxed = FALSE; } + PARAMETRIZE { dynamaxed = TRUE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_DYNAMAX_CANNON].effect == EFFECT_DYNAMAX_DOUBLE_DMG); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: dynamaxed); MOVE(opponent, MOVE_DYNAMAX_CANNON); } + } SCENE { + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, UQ_4_12(2.0), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves deal 1/4 damage through protect", s16 damage) +{ + bool32 protected; + PARAMETRIZE { protected = TRUE; } + PARAMETRIZE { protected = FALSE; } + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (protected) + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_PROTECT); } + else + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(4), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves don't bypass Max Guard") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); MOVE(opponent, MOVE_PROTECT, dynamax: TRUE); } + } SCENE { + NONE_OF { HP_BAR(opponent); } + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) Feint bypasses Max Guard but doesn't break it") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_PROTECT, dynamax: TRUE); + MOVE(opponentLeft, MOVE_FEINT, target: playerLeft); + MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); + } + } SCENE { + MESSAGE("Wobbuffet used Max Guard!"); + MESSAGE("Foe Wobbuffet used Feint!"); + HP_BAR(playerLeft); + MESSAGE("Foe Wynaut used Tackle!"); + NONE_OF { HP_BAR(playerLeft); } + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Instruct") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_TACKLE, dynamax: TRUE, target: opponentLeft); + MOVE(playerRight, MOVE_INSTRUCT, target: playerLeft); + } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Wynaut used Instruct!"); + MESSAGE("But it failed!"); + } +} + +// TODO: Gigantamax factor +SINGLE_BATTLE_TEST("(DYNAMAX) Pokemon with Gigantamax forms change upon Dynamaxing") +{ + GIVEN { + PLAYER(SPECIES_VENUSAUR); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } THEN { + EXPECT_EQ(player->species, SPECIES_VENUSAUR_GIGANTAMAX); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Pokemon with Gigantamax forms revert upon switching") +{ + GIVEN { + PLAYER(SPECIES_VENUSAUR); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { SWITCH(player, 1); } + TURN { SWITCH(player, 0); } + } THEN { + EXPECT_EQ(player->species, SPECIES_VENUSAUR); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are not affected by Choice items", s16 damage) +{ + u16 item; + PARAMETRIZE { item = ITEM_CHOICE_BAND; } + PARAMETRIZE { item = ITEM_NONE; } + GIVEN { + ASSUME(gItems[ITEM_CHOICE_BAND].holdEffect == HOLD_EFFECT_CHOICE_BAND); + PLAYER(SPECIES_WOBBUFFET) { Item(item); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(player, MOVE_ARM_THRUST, dynamax: TRUE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + MESSAGE("Wobbuffet used Max Knuckle!"); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon cannot use Max Guard while holding Assault Vest") +{ + GIVEN { + ASSUME(gItems[ITEM_ASSAULT_VEST].holdEffect == HOLD_EFFECT_ASSAULT_VEST); + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_ASSAULT_VEST); }; + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(player, MOVE_PROTECT, allowed: FALSE); MOVE(player, MOVE_TACKLE); } + } SCENE { + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Wobbuffet used Max Strike!"); + } +} + +// Almost anything that calculates gBattleMoveDamage based on HP has been changed to non-Dynamax HP. +// This includes Leftovers, Life Orb, Heal Pulse, Rocky Helmet, Sandstorm, etc. etc. +// There are some redundant cases (i.e Substitute) that can never be used by a Dynamaxed pokemon. +// Anything that is conditional based off max HP still uses gBattleMons[battler].maxHP. +// Below are some tests, but very far from all encompassing: + +SINGLE_BATTLE_TEST("(DYNAMAX) Endeavor uses a Pokemon's non-Dynamax HP", s16 damage) +{ + bool32 dynamax; + PARAMETRIZE { dynamax = TRUE; } + PARAMETRIZE { dynamax = FALSE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_ENDEAVOR].effect == EFFECT_ENDEAVOR); + PLAYER(SPECIES_WOBBUFFET) { Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_ENDEAVOR); MOVE(player, MOVE_TACKLE, dynamax: dynamax); } + } SCENE { + MESSAGE("Foe Wobbuffet used Endeavor!"); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Super Fang uses a Pokemon's non-Dynamax HP", s16 damage) +{ + bool32 dynamax; + PARAMETRIZE { dynamax = TRUE; } + PARAMETRIZE { dynamax = FALSE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_SUPER_FANG].effect == EFFECT_SUPER_FANG); + PLAYER(SPECIES_WOBBUFFET) { Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_SUPER_FANG); MOVE(player, MOVE_TACKLE, dynamax: dynamax); } + } SCENE { + MESSAGE("Foe Wobbuffet used Super Fang!"); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Pain Split uses a Pokemon's non-Dynamax HP", s16 damage) +{ + bool32 dynamax; + PARAMETRIZE { dynamax = TRUE; } + PARAMETRIZE { dynamax = FALSE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_PAIN_SPLIT].effect == EFFECT_PAIN_SPLIT); + PLAYER(SPECIES_WOBBUFFET) { Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) { HP(1); Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_PAIN_SPLIT); MOVE(player, MOVE_TACKLE, dynamax: dynamax); } + } SCENE { + MESSAGE("Foe Wobbuffet used Pain Split!"); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Sitrus Berries heal based on a Pokemon's non-Dynamax HP", s16 damage) +{ + bool32 dynamax; + PARAMETRIZE { dynamax = TRUE; } + PARAMETRIZE { dynamax = FALSE; } + GIVEN { + ASSUME(I_SITRUS_BERRY_HEAL >= GEN_4); + ASSUME(gItems[ITEM_SITRUS_BERRY].holdEffect == HOLD_EFFECT_RESTORE_PCT_HP); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_SITRUS_BERRY); } + } WHEN { + TURN { MOVE(opponent, MOVE_FLING); MOVE(player, MOVE_TACKLE, dynamax: dynamax); } + } SCENE { + MESSAGE("Wobbuffet's Sitrus Berry restored health!"); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Heal Pulse heals based on a Pokemon's non-Dynamax HP", s16 damage) +{ + bool32 dynamax; + PARAMETRIZE { dynamax = TRUE; } + PARAMETRIZE { dynamax = FALSE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_HEAL_PULSE].effect == EFFECT_HEAL_PULSE); + PLAYER(SPECIES_WOBBUFFET) { HP(1); Speed(50); } + OPPONENT(SPECIES_WOBBUFFET) { MaxHP(100); Speed(100); } + } WHEN { + TURN { MOVE(opponent, MOVE_HEAL_PULSE); MOVE(player, MOVE_TACKLE, dynamax: dynamax); } + } SCENE { + MESSAGE("Foe Wobbuffet used Heal Pulse!"); + HP_BAR(player, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +// ============= MAX MOVE EFFECTS ========================================== +SINGLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers single opponent's speed") +{ + GIVEN { + // Fails?: ASSUME(GetMaxMove(B_POSITION_PLAYER_LEFT, MOVE_TACKLE) == MOVE_MAX_STRIKE); + ASSUME(gBattleMoves[MOVE_MAX_STRIKE].argument == MAX_EFFECT_LOWER_SPEED); + OPPONENT(SPECIES_WOBBUFFET) { Speed(100); } + PLAYER(SPECIES_WOBBUFFET) { Speed(80); } + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + // turn 1 + MESSAGE("Foe Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Max Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + // turn 2 + MESSAGE("Wobbuffet used Max Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Wobbuffet's Speed fell!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + } +} + +// This test should apply to all stat-lowering Max Moves, including G-Max Foam Burst and G-Max Tartness. +DOUBLE_BATTLE_TEST("(DYNAMAX) Max Strike lowers both opponents' speed") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_STRIKE].argument == MAX_EFFECT_LOWER_SPEED); + PLAYER(SPECIES_WOBBUFFET) { Speed(80); } + PLAYER(SPECIES_WOBBUFFET) { Speed(79); } + OPPONENT(SPECIES_WOBBUFFET) {Speed(100); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(99); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); \ + MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); \ + MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); } + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); \ + MOVE(opponentLeft, MOVE_TACKLE, target: playerLeft); \ + MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); } + } SCENE { + // turn 1 + MESSAGE("Foe Wobbuffet used Tackle!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + MESSAGE("Wobbuffet used Max Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); + MESSAGE("Foe Wobbuffet's Speed fell!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); + MESSAGE("Foe Wobbuffet's Speed fell!"); + // turn 2 + MESSAGE("Wobbuffet used Max Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft); + MESSAGE("Foe Wobbuffet's Speed fell!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight); + MESSAGE("Foe Wobbuffet's Speed fell!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + MESSAGE("Foe Wobbuffet used Tackle!"); + } +} + +// This test should apply to all stat-boosting Max Moves, too. +DOUBLE_BATTLE_TEST("(DYNAMAX) Max Knuckle raises both allies' attack") +{ + s16 damage[4]; + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_KNUCKLE].argument == MAX_EFFECT_RAISE_TEAM_ATTACK); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_CLOSE_COMBAT, target: opponentLeft, dynamax: TRUE); \ + MOVE(playerRight, MOVE_TACKLE, target: opponentRight); } + TURN { MOVE(playerLeft, MOVE_CLOSE_COMBAT, target: opponentLeft); \ + MOVE(playerRight, MOVE_TACKLE, target: opponentRight); } + } SCENE { + // turn 1 + MESSAGE("Wobbuffet used Max Knuckle!"); + HP_BAR(opponentLeft, captureDamage: &damage[0]); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Wobbuffet's Attack rose!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); + MESSAGE("Wynaut's Attack rose!"); + MESSAGE("Wynaut used Tackle!"); + HP_BAR(opponentRight, captureDamage: &damage[1]); + MESSAGE("Foe Wobbuffet used Celebrate!"); + MESSAGE("Foe Wynaut used Celebrate!"); + // turn 2 + MESSAGE("Wobbuffet used Max Knuckle!"); + HP_BAR(opponentLeft, captureDamage: &damage[2]); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Wobbuffet's Attack rose!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); + MESSAGE("Wynaut's Attack rose!"); + MESSAGE("Wynaut used Tackle!"); + HP_BAR(opponentRight, captureDamage: &damage[3]); + } THEN { + EXPECT_GT(damage[2], damage[0]); + EXPECT_GT(damage[3], damage[1]); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Flare sets up sunlight") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_FLARE].argument == MAX_EFFECT_SUN); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_EMBER, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet used Max Flare!"); + MESSAGE("The sunlight got bright!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SUN_CONTINUES); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Geyser sets up heavy rain") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_GEYSER].argument == MAX_EFFECT_RAIN); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_WATER_GUN, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet used Max Geyser!"); + MESSAGE("It started to rain!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_RAIN_CONTINUES); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Hailstorm sets up hail") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_HAILSTORM].argument == MAX_EFFECT_HAIL); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_POWDER_SNOW, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet used Max Hailstorm!"); + MESSAGE("It started to hail!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HAIL_CONTINUES); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Rockfall sets up a sandstorm") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_ROCKFALL].argument == MAX_EFFECT_SANDSTORM); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_ROCK_THROW, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet used Max Rockfall!"); + MESSAGE("A sandstorm brewed!"); + MESSAGE("Foe Wobbuffet used Celebrate!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SANDSTORM_CONTINUES); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Overgrowth sets up Grassy Terrain") +{ + s32 maxHP = 490; // Because of recalculated stats upon Dynamaxing + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_OVERGROWTH].argument == MAX_EFFECT_GRASSY_TERRAIN); + ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].baseHP == 190); + OPPONENT(SPECIES_WOBBUFFET) { MaxHP(maxHP); HP(maxHP / 2); }; + PLAYER(SPECIES_WOBBUFFET) { MaxHP(maxHP); HP(maxHP / 2); }; + } WHEN { + TURN { MOVE(player, MOVE_VINE_WHIP, dynamax: TRUE); MOVE(opponent, MOVE_CELEBRATE); } + TURN { MOVE(player, MOVE_VINE_WHIP); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + MESSAGE("Wobbuffet used Max Overgrowth!"); + MESSAGE("Grass grew to cover the battlefield!"); + MESSAGE("Wobbuffet is healed by the grassy terrain!"); + HP_BAR(player, damage: -maxHP/16); + MESSAGE("Foe Wobbuffet is healed by the grassy terrain!"); + HP_BAR(opponent, damage: -maxHP/16); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Mindstorm sets up Psychic Terrain") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_MINDSTORM].argument == MAX_EFFECT_PSYCHIC_TERRAIN); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_EXTREME_SPEED); MOVE(player, MOVE_PSYCHIC, dynamax: TRUE); } + TURN { MOVE(opponent, MOVE_EXTREME_SPEED); MOVE(player, MOVE_PSYCHIC); } + } SCENE { + MESSAGE("Foe Wobbuffet used ExtremeSpeed!"); + MESSAGE("Wobbuffet used Max Mindstorm!"); + MESSAGE("Foe Wobbuffet cannot use ExtremeSpeed!"); + MESSAGE("Wobbuffet used Max Mindstorm!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Lightning sets up Electric Terrain") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_LIGHTNING].argument == MAX_EFFECT_ELECTRIC_TERRAIN); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_THUNDERBOLT, dynamax: TRUE); MOVE(opponent, MOVE_SPORE); } + } SCENE { + MESSAGE("Wobbuffet used Max Lightning!"); + MESSAGE("Foe Wobbuffet used Spore!"); + MESSAGE("Wobbuffet surrounds itself with electrified terrain!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Starfall sets up Misty Terrain") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_MAX_STARFALL].argument == MAX_EFFECT_MISTY_TERRAIN); + OPPONENT(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_MOONBLAST, dynamax: TRUE); MOVE(opponent, MOVE_TOXIC); } + } SCENE { + MESSAGE("Wobbuffet used Max Starfall!"); + MESSAGE("Foe Wobbuffet used Toxic!"); + MESSAGE("Wobbuffet surrounds itself with a protective mist!"); + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Stonesurge sets up Stealth Rocks") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_STONESURGE].argument == MAX_EFFECT_STEALTH_ROCK); + PLAYER(SPECIES_DREDNAW); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_LIQUIDATION, dynamax: TRUE); } + TURN { SWITCH(opponent, 1); } + } SCENE { + // turn 1 + MESSAGE("Drednaw used G-Max Stonesurge!"); + MESSAGE("Pointed stones float in the air around the opposing team!"); + // turn 2 + MESSAGE("Pointed stones dug into Foe Wobbuffet!"); + } +} + +// The test below also tests that sharp steel does type-based damage and can be Defogged away. +SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Steelsurge sets up sharp steel") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_STEELSURGE].argument == MAX_EFFECT_STEELSURGE); + PLAYER(SPECIES_COPPERAJAH); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_HATTERENE); + } WHEN { + TURN { MOVE(player, MOVE_IRON_HEAD, dynamax: TRUE); } + TURN { SWITCH(opponent, 1); } + TURN { } // wait out Dynamax + TURN { MOVE(opponent, MOVE_DEFOG); } + } SCENE { + // turn 1 + MESSAGE("Copperajah used G-Max Steelsurge!"); + MESSAGE("Sharp-pointed steel floats around the opposing team!"); + // turn 2 + MESSAGE("2 sent out Hatterene!"); + MESSAGE("Sharp steel bit into Foe Hatterene!"); + // turn 4 + MESSAGE("Foe Hatterene used Defog!"); + MESSAGE("The sharp steel disappeared from the ground around the opposing team!"); + } THEN { + EXPECT_MUL_EQ(opponent->maxHP, Q_4_12(0.75), opponent->hp); + } +} + +// The test below should apply to G-Max Fireball and G-Max Drum Solo, too. +SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Hydrosnipe has fixed power and ignores abilities", s16 damage) +{ + u16 move; + PARAMETRIZE { move = MOVE_WATER_GUN; } + PARAMETRIZE { move = MOVE_HYDRO_CANNON; } + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_HYDROSNIPE].argument == MAX_EFFECT_FIXED_POWER); + PLAYER(SPECIES_INTELEON); + OPPONENT(SPECIES_ARCTOVISH) { Ability(ABILITY_WATER_ABSORB); } + } WHEN { + TURN { MOVE(player, move, dynamax: TRUE); } + } SCENE { + MESSAGE("Inteleon used G-Max Hydrosnipe!"); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Volt Crash paralyzes both opponents") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_VOLT_CRASH].argument == MAX_EFFECT_PARALYZE_FOES); + PLAYER(SPECIES_PIKACHU); + PLAYER(SPECIES_PICHU); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_THUNDERBOLT, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Pikachu used G-Max Volt Crash!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponentLeft); + STATUS_ICON(opponentLeft, paralysis: TRUE); + MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponentRight); + STATUS_ICON(opponentRight, paralysis: TRUE); + MESSAGE("Foe Wynaut is paralyzed! It may be unable to move!"); + } +} + +// G-Max Stun Shock can apply different statuses to each opponent, but this isn't +// compatible with the test RNG set-up. +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock paralyzes or poisons both opponents") +{ + u8 statusAnim; + u32 rng; + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = STATUS1_PARALYSIS; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PSN; rng = STATUS1_POISON; } + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_STUN_SHOCK].argument == MAX_EFFECT_POISON_PARALYZE_FOES); + PLAYER(SPECIES_TOXTRICITY); + PLAYER(SPECIES_TOXEL); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_THUNDERBOLT, target: opponentLeft, dynamax: TRUE, \ + WITH_RNG(RNG_G_MAX_STUN_SHOCK, rng)); } + } SCENE { + MESSAGE("Toxtricity used G-Max Stun Shock!"); + // opponent left + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponentLeft); + if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponentLeft, poison: TRUE); + MESSAGE("Foe Wobbuffet was poisoned!"); + } + else { + STATUS_ICON(opponentLeft, paralysis: TRUE); + MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); + } + // opponent right + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponentRight); + if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponentRight, poison: TRUE); + MESSAGE("Foe Wynaut was poisoned!"); + } + else { + STATUS_ICON(opponentRight, paralysis: TRUE); + MESSAGE("Foe Wynaut is paralyzed! It may be unable to move!"); + } + } +} + +// This test extends to G-Max Befuddle, too. +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock chooses statuses before considering immunities") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_STUN_SHOCK].argument == MAX_EFFECT_POISON_PARALYZE_FOES); + PLAYER(SPECIES_TOXTRICITY); + PLAYER(SPECIES_TOXEL); + OPPONENT(SPECIES_GARBODOR); + OPPONENT(SPECIES_TRUBBISH); + } WHEN { + TURN { MOVE(playerLeft, MOVE_NUZZLE, target: opponentLeft, dynamax: TRUE, \ + WITH_RNG(RNG_G_MAX_STUN_SHOCK, STATUS1_POISON)); } + } SCENE { + MESSAGE("Toxtricity used G-Max Stun Shock!"); + NONE_OF { + // opponent left + STATUS_ICON(opponentLeft, poison: TRUE); + MESSAGE("Foe Garbodor was poisoned!"); + STATUS_ICON(opponentLeft, paralysis: TRUE); + MESSAGE("Foe Garbodor is paralyzed! It may be unable to move!"); + // opponent right + STATUS_ICON(opponentRight, poison: TRUE); + MESSAGE("Foe Trubbish was poisoned!"); + STATUS_ICON(opponentRight, paralysis: TRUE); + MESSAGE("Foe Trubbish is paralyzed! It may be unable to move!"); + } + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Befuddle paralyzes, poisons, or sleeps both opponents") +{ + u8 statusAnim; + u32 rng; + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PRZ; rng = STATUS1_PARALYSIS; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_PSN; rng = STATUS1_POISON; } + PARAMETRIZE { statusAnim = B_ANIM_STATUS_SLP; rng = STATUS1_SLEEP; } + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_BEFUDDLE].argument == MAX_EFFECT_EFFECT_SPORE_FOES); + PLAYER(SPECIES_BUTTERFREE); + PLAYER(SPECIES_CATERPIE); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_BUG_BITE, target: opponentLeft, dynamax: TRUE, + WITH_RNG(RNG_G_MAX_BEFUDDLE, rng)); } + } SCENE { + MESSAGE("Butterfree used G-Max Befuddle!"); + // opponent left + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponentLeft); + if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponentLeft, poison: TRUE); + MESSAGE("Foe Wobbuffet was poisoned!"); + } + else if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponentLeft, paralysis: TRUE); + MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); + } + else { + STATUS_ICON(opponentLeft, sleep: TRUE); + MESSAGE("Foe Wobbuffet fell asleep!"); + } + // opponent right + ANIMATION(ANIM_TYPE_STATUS, statusAnim, opponentRight); + if (statusAnim == B_ANIM_STATUS_PSN) { + STATUS_ICON(opponentRight, poison: TRUE); + MESSAGE("Foe Wobbuffet was poisoned!"); + } + else if (statusAnim == B_ANIM_STATUS_PRZ) { + STATUS_ICON(opponentRight, paralysis: TRUE); + MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); + } + else { + STATUS_ICON(opponentRight, sleep: TRUE); + MESSAGE("Foe Wobbuffet fell asleep!"); + } + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Gold Rush confuses both opponents and generates money") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_GOLD_RUSH].argument == MAX_EFFECT_CONFUSE_FOES_PAY_DAY); + PLAYER(SPECIES_MEOWTH); + PLAYER(SPECIES_PERSIAN); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Meowth used G-Max Gold Rush!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponentLeft); + MESSAGE("Foe Wobbuffet became confused!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponentRight); + MESSAGE("Foe Wobbuffet became confused!"); + MESSAGE("Coins scattered everywhere!"); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Smite confuses both opponents") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_SMITE].argument == MAX_EFFECT_CONFUSE_FOES); + PLAYER(SPECIES_HATTERENE); + PLAYER(SPECIES_HATENNA); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_MOONBLAST, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Hatterene used G-Max Smite!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponentLeft); + MESSAGE("Foe Wobbuffet became confused!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponentRight); + MESSAGE("Foe Wobbuffet became confused!"); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Cuddle infatuates both opponents, if possible") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_CUDDLE].argument == MAX_EFFECT_INFATUATE_FOES); + PLAYER(SPECIES_EEVEE) { Gender(MON_MALE); } + PLAYER(SPECIES_EEVEE); + OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); } + OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Eevee used G-Max Cuddle!"); + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, opponentLeft); + MESSAGE("Foe Wobbuffet fell in love!"); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, opponentRight); + MESSAGE("Foe Wobbuffet fell in love!"); + } + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Terror traps both opponents") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_TERROR].argument == MAX_EFFECT_MEAN_LOOK); + PLAYER(SPECIES_GENGAR); + PLAYER(SPECIES_GASTLY); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_LICK, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Gengar used G-Max Terror!"); + MESSAGE("Foe Wobbuffet can't escape now!"); + MESSAGE("Foe Wobbuffet can't escape now!"); + } THEN { // Can't find good way to test trapping + EXPECT(opponentLeft->status2 & STATUS2_ESCAPE_PREVENTION); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Meltdown torments both opponents for 3 turns") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_MELTDOWN].argument == MAX_EFFECT_TORMENT_FOES); + PLAYER(SPECIES_MELMETAL); + PLAYER(SPECIES_MELTAN); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SPLASH, MOVE_CELEBRATE); } + OPPONENT(SPECIES_WYNAUT) { Moves(MOVE_SPLASH, MOVE_CELEBRATE); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_IRON_HEAD, target: opponentLeft, dynamax: TRUE); \ + MOVE(opponentLeft, MOVE_SPLASH); MOVE(opponentRight, MOVE_SPLASH); } + TURN { MOVE(playerLeft, MOVE_CELEBRATE, target: opponentLeft); \ + MOVE(opponentLeft, MOVE_SPLASH, allowed: FALSE); \ + MOVE(opponentLeft, MOVE_CELEBRATE); \ + MOVE(opponentRight, MOVE_SPLASH, allowed: FALSE); \ + MOVE(opponentRight, MOVE_CELEBRATE); } + TURN { MOVE(playerLeft, MOVE_CELEBRATE, target: opponentLeft); \ + MOVE(opponentLeft, MOVE_SPLASH); \ + MOVE(opponentRight, MOVE_SPLASH); } + } SCENE { + // turn 1 + MESSAGE("Melmetal used G-Max Meltdown!"); + MESSAGE("Foe Wobbuffet was subjected to torment!"); + MESSAGE("Foe Wynaut was subjected to torment!"); + MESSAGE("Foe Wobbuffet used Splash!"); + MESSAGE("Foe Wynaut used Splash!"); + // turn 2 + MESSAGE("Foe Wobbuffet used Celebrate!"); + MESSAGE("Foe Wynaut used Celebrate!"); + // end of turn 3 + MESSAGE("Foe Wobbuffet is tormented no more!"); + MESSAGE("Foe Wynaut is tormented no more!"); + } +} + +// This test applies to G-Max Cannonade, G-Max Vine Lash, and G-Max Volcalith, too. +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Wildfire sets a field effect that damages non-Fire types") +{ + s16 damage; + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_WILDFIRE].argument == MAX_EFFECT_WILDFIRE); + PLAYER(SPECIES_CHARIZARD); + PLAYER(SPECIES_CHARMANDER); + OPPONENT(SPECIES_WOBBUFFET) { HP(600); MaxHP(600); } + OPPONENT(SPECIES_WYNAUT); + OPPONENT(SPECIES_ARCANINE); + } WHEN { + TURN { MOVE(playerLeft, MOVE_EMBER, target: opponentLeft, dynamax: TRUE); } + TURN { } + TURN { SWITCH(opponentLeft, 2); } + TURN { } + TURN { } + } SCENE { + // turn 1 + MESSAGE("Charizard used G-Max Wildfire!"); + MESSAGE("The opposing team was surrounded by flames!"); + MESSAGE("Foe Wobbuffet is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentLeft, captureDamage: &damage); + MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentRight); + // turn 2 + MESSAGE("Foe Wobbuffet is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentLeft); + MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentRight); + // turn 3 + NONE_OF { MESSAGE("Foe Arcanine is burning up within G-Max Wildfire's flames!"); } + MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentRight); + // turn 4 + MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); + HP_BAR(opponentRight); + // turn 5 + NONE_OF { + HP_BAR(opponentRight); + MESSAGE("Foe Wynaut is burning up within G-Max Wildfire's flames!"); + } + } THEN { + EXPECT_EQ(damage, 100); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Replenish recycles allies' berries 50\% of the time") +{ + PASSES_RANDOMLY(1, 2, RNG_G_MAX_REPLENISH); + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_REPLENISH].argument == MAX_EFFECT_RECYCLE_BERRIES); + PLAYER(SPECIES_SNORLAX) { Item(ITEM_APICOT_BERRY); } + PLAYER(SPECIES_MUNCHLAX) { Item(ITEM_APICOT_BERRY); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_APICOT_BERRY); } + OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_APICOT_BERRY); } + } WHEN { + TURN { MOVE(playerLeft, MOVE_STUFF_CHEEKS); \ + MOVE(playerRight, MOVE_STUFF_CHEEKS); \ + MOVE(opponentLeft, MOVE_STUFF_CHEEKS); \ + MOVE(opponentRight, MOVE_STUFF_CHEEKS); } + TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft, dynamax: TRUE); } + } SCENE { + // turn 1 + MESSAGE("Using Apicot Berry, the Sp. Def of Snorlax rose!"); + MESSAGE("Using Apicot Berry, the Sp. Def of Munchlax rose!"); + MESSAGE("Using Apicot Berry, the Sp. Def of Foe Wobbuffet rose!"); + MESSAGE("Using Apicot Berry, the Sp. Def of Foe Wobbuffet rose!"); + // turn 2 + MESSAGE("Snorlax used G-Max Replenish!"); + MESSAGE("Snorlax found one Apicot Berry!"); + MESSAGE("Munchlax found one Apicot Berry!"); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Snooze makes only the target drowsy") +{ + PASSES_RANDOMLY(1, 2, RNG_G_MAX_SNOOZE); + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_SNOOZE].argument == MAX_EFFECT_YAWN_FOE); + PLAYER(SPECIES_GRIMMSNARL); + PLAYER(SPECIES_IMPIDIMP); + OPPONENT(SPECIES_BLISSEY); + OPPONENT(SPECIES_CHANSEY); + } WHEN { + TURN { MOVE(playerLeft, MOVE_DARK_PULSE, target: opponentLeft, dynamax: TRUE); } + TURN { } + } SCENE { + // turn 1 + MESSAGE("Grimmsnarl used G-Max Snooze!"); + MESSAGE("Grimmsnarl made Foe Blissey drowsy!"); + // turn 2 + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, opponentLeft); + MESSAGE("Foe Blissey fell asleep!"); + STATUS_ICON(opponentLeft, sleep: TRUE); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Finale heals allies by 1/6 of their health") +{ + s16 damage1, damage2; + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_FINALE].argument == MAX_EFFECT_HEAL_TEAM); + PLAYER(SPECIES_ALCREMIE) { HP(1); } + PLAYER(SPECIES_MILCERY) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_MOONBLAST, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Alcremie used G-Max Finale!"); + HP_BAR(playerLeft, captureDamage: &damage1); + HP_BAR(playerRight, captureDamage: &damage2); + } THEN { + EXPECT_MUL_EQ(-damage1, Q_4_12(6), playerLeft->maxHP); // heals based on Dynamax HP + EXPECT_MUL_EQ(-damage2, Q_4_12(6), playerRight->maxHP); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Sweetness cures allies' status conditions") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_SWEETNESS].argument == MAX_EFFECT_AROMATHERAPY); + PLAYER(SPECIES_APPLETUN) { Status1(STATUS1_POISON); } + PLAYER(SPECIES_APPLIN) { Status1(STATUS1_POISON); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_VINE_WHIP, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Appletun used G-Max Sweetness!"); + STATUS_ICON(playerLeft, none: TRUE); + MESSAGE("Appletun's status returned to normal!"); + STATUS_ICON(playerRight, none: TRUE); + MESSAGE("Applin's status returned to normal!"); + } +} + +// This test applies to G-Max Sandblast, too. +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Centiferno traps both opponents in Fire Spin") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_CENTIFERNO].argument == MAX_EFFECT_FIRE_SPIN_FOES); + PLAYER(SPECIES_CENTISKORCH); + PLAYER(SPECIES_SIZZLIPEDE); + PLAYER(SPECIES_SIZZLIPEDE); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_FLAME_CHARGE, target: opponentLeft, dynamax: TRUE); } + TURN { SWITCH(playerLeft, 2); } + } SCENE { + // turn 1 + MESSAGE("Centiskorc used G-Max Centiferno!"); + MESSAGE("Foe Wobbuffet is hurt by Fire Spin!"); + HP_BAR(opponentLeft); + MESSAGE("Foe Wynaut is hurt by Fire Spin!"); + HP_BAR(opponentRight); + // turn 2 - Fire Spin continues even after Centiskorch switches out + MESSAGE("Foe Wobbuffet is hurt by Fire Spin!"); + HP_BAR(opponentLeft); + MESSAGE("Foe Wynaut is hurt by Fire Spin!"); + HP_BAR(opponentRight); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Chi Strike boosts allies' crit chance") +{ + u32 j; + GIVEN { + ASSUME(B_CRIT_CHANCE >= GEN_6); + ASSUME(gBattleMoves[MOVE_G_MAX_CHI_STRIKE].argument == MAX_EFFECT_CRIT_PLUS); + PLAYER(SPECIES_MACHAMP); + PLAYER(SPECIES_MACHOP); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_FORCE_PALM, target: opponentLeft, dynamax: TRUE); } + TURN { MOVE(playerLeft, MOVE_FORCE_PALM, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_FORCE_PALM, target: opponentLeft); \ + MOVE(playerRight, MOVE_FOCUS_ENERGY); } + TURN { MOVE(playerRight, MOVE_TACKLE, target: opponentLeft); } + } SCENE { + // turn 1 - 3 + for (j = 0; j < 3; ++j) { + MESSAGE("Machamp used G-Max Chi Strike!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft); + MESSAGE("Machamp is getting pumped!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight); + MESSAGE("Machop is getting pumped!"); + } + // turn 4 + MESSAGE("Machop used Tackle!"); // Machop is at +5 crit stages + MESSAGE("A critical hit!"); + } +} + +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Depletion takes away 2 PP from the target's last move") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_DEPLETION].argument == MAX_EFFECT_SPITE); + PLAYER(SPECIES_DURALUDON); + PLAYER(SPECIES_WYNAUT); + // Dynamax behaves weird with test turn order because stats are recalculated. + OPPONENT(SPECIES_SABLEYE) { Ability(ABILITY_PRANKSTER); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_DRAGON_CLAW, target: opponentLeft, dynamax: TRUE); } + } SCENE { + MESSAGE("Foe Sableye used Celebrate!"); + MESSAGE("Duraludon used G-Max Depletion!"); + MESSAGE("Reduced Foe Sableye's Celebrate by 2!"); + } +} + +// This test applies to G-Max Rapid Flow, too. +DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max One Blow bypasses Max Guard for full damage", s16 damage) +{ + bool32 protect; + PARAMETRIZE { protect = TRUE; } + PARAMETRIZE { protect = FALSE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_G_MAX_ONE_BLOW].argument == MAX_EFFECT_BYPASS_PROTECT); + PLAYER(SPECIES_URSHIFU); + PLAYER(SPECIES_KUBFU); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + if (protect) + TURN { MOVE(playerLeft, MOVE_WICKED_BLOW, target: opponentLeft, dynamax: TRUE); \ + MOVE(opponentLeft, MOVE_PROTECT, dynamax: TRUE); } + else + TURN { MOVE(playerLeft, MOVE_WICKED_BLOW, target: opponentLeft, dynamax: TRUE); \ + MOVE(opponentLeft, MOVE_PSYCHIC, target: playerLeft, dynamax: TRUE); } + } SCENE { + if (protect) + MESSAGE("Foe Wobbuffet used Max Guard!"); + MESSAGE("Urshifu used G-Max One Blow!"); + HP_BAR(opponentLeft, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_EQ(results[0].damage, results[1].damage); + } +} + +// Bug Testing +DOUBLE_BATTLE_TEST("(DYNAMAX) Max Flare doesn't softlock the game when fainting player partner") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET) { HP(1); }; + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_PROTECT, dynamax: TRUE); + MOVE(opponentLeft, MOVE_V_CREATE, target: playerRight, dynamax: TRUE); + SEND_OUT(playerRight, 2); } + TURN { } + } +} + +SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves don't execute effects on fainted battlers") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { HP(1); }; + } WHEN { + TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_DYNAMAX_GROWTH, player); + MESSAGE("Wobbuffet used Max Strike!"); + MESSAGE("Foe Wobbuffet fainted!"); + NOT MESSAGE("Foe Wobbuffet's Speed fell!"); + } +} diff --git a/test/random.c b/test/random.c index 80b86745f2..845f24f102 100644 --- a/test/random.c +++ b/test/random.c @@ -196,7 +196,6 @@ TEST("RandomElement generates a uniform distribution") TEST("RandomUniform mul-based faster than mod-based (compile-time)") { - u32 i; struct Benchmark mulBenchmark, modBenchmark; u32 mulSum = 0, modSum = 0; diff --git a/test/species.c b/test/species.c new file mode 100644 index 0000000000..9ea20638c8 --- /dev/null +++ b/test/species.c @@ -0,0 +1,78 @@ +#include "global.h" +#include "test/test.h" +#include "constants/form_change_types.h" + +TEST("Form species ID tables are shared between all forms") +{ + u32 i; + u32 species = SPECIES_NONE; + for (i = 0; i < NUM_SPECIES; i++) + { + if (gSpeciesInfo[i].formSpeciesIdTable) PARAMETRIZE { species = i; } + } + + const u16 *formSpeciesIdTable = gSpeciesInfo[species].formSpeciesIdTable; + for (i = 0; formSpeciesIdTable[i] != FORM_SPECIES_END; i++) + { + u32 formSpeciesId = formSpeciesIdTable[i]; + EXPECT_EQ(gSpeciesInfo[formSpeciesId].formSpeciesIdTable, formSpeciesIdTable); + } +} + +TEST("Form change tables contain only forms in the form species ID table") +{ + u32 i, j; + u32 species = SPECIES_NONE; + for (i = 0; i < NUM_SPECIES; i++) + { + if (gSpeciesInfo[i].formChangeTable) PARAMETRIZE { species = i; } + } + + const struct FormChange *formChangeTable = gSpeciesInfo[species].formChangeTable; + const u16 *formSpeciesIdTable = gSpeciesInfo[species].formSpeciesIdTable; + EXPECT(formSpeciesIdTable); + + for (i = 0; formChangeTable[i].method != FORM_CHANGE_TERMINATOR; i++) + { + for (j = 0; formSpeciesIdTable[j] != FORM_SPECIES_END; j++) + { + if (formChangeTable[i].targetSpecies == formSpeciesIdTable[j]) + { + break; + } + } + EXPECT(formSpeciesIdTable[j] != FORM_SPECIES_END); + } +} + +TEST("Form change targets have the appropriate species flags") +{ + u32 i; + u32 species = SPECIES_NONE; + for (i = 0; i < NUM_SPECIES; i++) + { + if (gSpeciesInfo[i].formChangeTable) PARAMETRIZE { species = i; } + } + + const struct FormChange *formChangeTable = gSpeciesInfo[species].formChangeTable; + for (i = 0; formChangeTable[i].method != FORM_CHANGE_TERMINATOR; i++) + { + const struct SpeciesInfo *targetSpeciesInfo = &gSpeciesInfo[formChangeTable[i].targetSpecies]; + switch (formChangeTable[i].method) + { + case FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM: + case FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE: + EXPECT(targetSpeciesInfo->isMegaEvolution); + break; + case FORM_CHANGE_BATTLE_PRIMAL_REVERSION: + EXPECT(targetSpeciesInfo->isPrimalReversion); + break; + case FORM_CHANGE_BATTLE_ULTRA_BURST: + EXPECT(targetSpeciesInfo->isUltraBurst); + break; + case FORM_CHANGE_BATTLE_GIGANTAMAX: + EXPECT(targetSpeciesInfo->isGigantamax); + break; + } + } +} diff --git a/test/test_runner.c b/test/test_runner.c index 6356010f62..93d859654a 100644 --- a/test/test_runner.c +++ b/test/test_runner.c @@ -531,6 +531,7 @@ static s32 MgbaVPrintf_(const char *fmt, va_list va) s32 c, d; u32 p; const char *s; + const u8 *pokeS; while (*fmt) { switch ((c = *fmt++)) @@ -625,8 +626,8 @@ static s32 MgbaVPrintf_(const char *fmt, va_list va) i = MgbaPutchar_(i, c); break; case 'S': - s = va_arg(va, const u8 *); - while ((c = *s++) != EOS) + pokeS = va_arg(va, const u8 *); + while ((c = *pokeS++) != EOS) { if ((c = gWireless_RSEtoASCIITable[c]) != '\0') i = MgbaPutchar_(i, c); diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index d784b3314d..ac689676b0 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -1,5 +1,6 @@ #include "global.h" #include "battle.h" +#include "battle_ai_util.h" #include "battle_anim.h" #include "battle_controllers.h" #include "characters.h" @@ -26,6 +27,8 @@ #define INVALID(fmt, ...) Test_ExitWithResult(TEST_RESULT_INVALID, "%s:%d: " fmt, gTestRunnerState.test->filename, sourceLine, ##__VA_ARGS__) #define INVALID_IF(c, fmt, ...) do { if (c) Test_ExitWithResult(TEST_RESULT_INVALID, "%s:%d: " fmt, gTestRunnerState.test->filename, sourceLine, ##__VA_ARGS__); } while (0) +#define ASSUMPTION_FAIL_IF(c, fmt, ...) do { if (c) Test_ExitWithResult(TEST_RESULT_ASSUMPTION_FAIL, "%s:%d: " fmt, gTestRunnerState.test->filename, sourceLine, ##__VA_ARGS__); } while (0) + #define STATE gBattleTestRunnerState #define DATA gBattleTestRunnerState->data @@ -41,6 +44,9 @@ STATIC_ASSERT(sizeof(struct BattleTestRunnerState) <= sizeof(sBackupMapData), sB static void CB2_BattleTest_NextParameter(void); static void CB2_BattleTest_NextTrial(void); static void PushBattlerAction(u32 sourceLine, s32 battlerId, u32 actionType, u32 byte); +static void PrintAiMoveLog(u32 battlerId, u32 moveSlot, u32 moveId, s32 totalScore); +static void ClearAiLog(u32 battlerId); +static const char *BattlerIdentifier(s32 battlerId); NAKED static void InvokeSingleTestFunctionWithStack(void *results, u32 i, struct BattlePokemon *player, struct BattlePokemon *opponent, SingleBattleTestFunction function, void *stack) { @@ -98,23 +104,43 @@ static void InvokeTestFunction(const struct BattleTest *test) switch (test->type) { case BATTLE_TEST_SINGLES: + case BATTLE_TEST_WILD: + case BATTLE_TEST_AI_SINGLES: InvokeSingleTestFunctionWithStack(STATE->results, STATE->runParameter, &gBattleMons[B_POSITION_PLAYER_LEFT], &gBattleMons[B_POSITION_OPPONENT_LEFT], test->function.singles, &DATA.stack[BATTLE_TEST_STACK_SIZE]); break; case BATTLE_TEST_DOUBLES: + case BATTLE_TEST_AI_DOUBLES: InvokeDoubleTestFunctionWithStack(STATE->results, STATE->runParameter, &gBattleMons[B_POSITION_PLAYER_LEFT], &gBattleMons[B_POSITION_OPPONENT_LEFT], &gBattleMons[B_POSITION_PLAYER_RIGHT], &gBattleMons[B_POSITION_OPPONENT_RIGHT], test->function.singles, &DATA.stack[BATTLE_TEST_STACK_SIZE]); break; } } -static u32 SourceLine(u32 sourceLineOffset) +static const struct BattleTest *GetBattleTest(void) { const struct BattleTest *test = gTestRunnerState.test->data; + return test; +} + +static bool32 IsAITest(void) +{ + switch (GetBattleTest()->type) + { + case BATTLE_TEST_AI_SINGLES: + case BATTLE_TEST_AI_DOUBLES: + return TRUE; + } + return FALSE; +} + +static u32 SourceLine(u32 sourceLineOffset) +{ + const struct BattleTest *test = GetBattleTest(); return test->sourceLine + sourceLineOffset; } static u32 SourceLineOffset(u32 sourceLine) { - const struct BattleTest *test = gTestRunnerState.test->data; + const struct BattleTest *test = GetBattleTest(); if (sourceLine - test->sourceLine > 0xFF) return 0; else @@ -153,9 +179,12 @@ static void BattleTest_SetUp(void *data) switch (test->type) { case BATTLE_TEST_SINGLES: + case BATTLE_TEST_WILD: + case BATTLE_TEST_AI_SINGLES: STATE->battlersCount = 2; break; case BATTLE_TEST_DOUBLES: + case BATTLE_TEST_AI_DOUBLES: STATE->battlersCount = 4; break; } @@ -187,7 +216,7 @@ static void PrintTestName(void) // modifiers. static void SetImplicitSpeeds(void) { - s32 i, j; + s32 i; u32 speed = 12; u32 hasSpeeds = 0; u32 allSpeeds = ((1 << DATA.playerPartySize) - 1) | (((1 << DATA.opponentPartySize) - 1) << 6); @@ -232,15 +261,35 @@ static void BattleTest_Run(void *data) memset(&DATA, 0, sizeof(DATA)); DATA.recordedBattle.rngSeed = RNG_SEED_DEFAULT; - DATA.recordedBattle.opponentA = TRAINER_LINK_OPPONENT; - DATA.recordedBattle.textSpeed = OPTIONS_TEXT_SPEED_FAST; - DATA.recordedBattle.battleFlags = BATTLE_TYPE_RECORDED_IS_MASTER | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_TRAINER | BATTLE_TYPE_IS_MASTER; - if (test->type == BATTLE_TEST_DOUBLES) + // Set battle flags and opponent ids. + switch (test->type) { - DATA.recordedBattle.battleFlags |= BATTLE_TYPE_DOUBLE; + case BATTLE_TEST_WILD: + DATA.recordedBattle.battleFlags = BATTLE_TYPE_IS_MASTER; + break; + case BATTLE_TEST_AI_SINGLES: + DATA.recordedBattle.battleFlags = BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER; + DATA.recordedBattle.opponentA = TRAINER_LEAF; + DATA.hasAI = TRUE; + break; + case BATTLE_TEST_AI_DOUBLES: + DATA.recordedBattle.battleFlags = BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOUBLE; + DATA.recordedBattle.opponentA = TRAINER_LEAF; + DATA.recordedBattle.opponentB = TRAINER_RED; + DATA.hasAI = TRUE; + break; + case BATTLE_TEST_SINGLES: + DATA.recordedBattle.battleFlags = BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_RECORDED_IS_MASTER | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_TRAINER; + DATA.recordedBattle.opponentA = TRAINER_LINK_OPPONENT; + break; + case BATTLE_TEST_DOUBLES: + DATA.recordedBattle.battleFlags = BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_RECORDED_IS_MASTER | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOUBLE; + DATA.recordedBattle.opponentA = TRAINER_LINK_OPPONENT; DATA.recordedBattle.opponentB = TRAINER_LINK_OPPONENT; + break; } + for (i = 0; i < STATE->battlersCount; i++) { DATA.recordedBattle.playersName[i][0] = CHAR_1 + i; @@ -292,7 +341,6 @@ static void BattleTest_Run(void *data) } SetVariablesForRecordedBattle(&DATA.recordedBattle); - if (STATE->trials) gMain.savedCallback = CB2_BattleTest_NextTrial; else if (STATE->parameters) @@ -491,6 +539,7 @@ const void *RandomElementArray(enum RandomTag tag, const void *array, size_t siz STATE->trialRatio = Q_4_12(1) / count; return (const u8 *)array + size * STATE->runTrial; } + return (const u8 *)array + size * index; } static s32 TryAbilityPopUp(s32 i, s32 n, u32 battlerId, u32 ability) @@ -651,10 +700,10 @@ static s32 TryHP(s32 i, s32 n, u32 battlerId, u32 oldHP, u32 newHP) switch (event->type) { case HP_EVENT_NEW_HP: - *(u16 *)event->address = newHP; + *(u16 *)(u32)(event->address) = newHP; break; case HP_EVENT_DELTA_HP: - *(s16 *)event->address = oldHP - newHP; + *(s16 *)(u32)(event->address) = oldHP - newHP; break; } return i; @@ -707,6 +756,382 @@ void TestRunner_Battle_RecordHP(u32 battlerId, u32 oldHP, u32 newHP) } } +static const char *const sBattleActionNames[] = +{ + [B_ACTION_USE_MOVE] = "MOVE", + [B_ACTION_USE_ITEM] = "USE_ITEM", + [B_ACTION_SWITCH] = "SWITCH", +}; + +static u32 CountAiExpectMoves(struct ExpectedAIAction *expectedAction, u32 battlerId, bool32 printLog) +{ + u32 i, countExpected = 0; + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (gBitTable[i] & expectedAction->moveSlots) + { + if (printLog) + PrintAiMoveLog(battlerId, i, gBattleMons[battlerId].moves[i], gBattleStruct->aiFinalScore[battlerId][expectedAction->target][i]); + countExpected++; + } + } + return countExpected; +} + +void TestRunner_Battle_CheckChosenMove(u32 battlerId, u32 moveId, u32 target) +{ + const char *filename = gTestRunnerState.test->filename; + u32 id = DATA.aiActionsPlayed[battlerId]; + struct ExpectedAIAction *expectedAction = &DATA.expectedAiActions[battlerId][id]; + + if (!expectedAction->actionSet) + return; + + if (!expectedAction->pass) + { + u32 i, expectedMoveId = 0, countExpected; + 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]); + + 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)); + + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (gBitTable[i] & expectedAction->moveSlots) + { + expectedMoveId = gBattleMons[battlerId].moves[i]; + if (!expectedAction->notMove) + { + if (moveId == expectedMoveId) + { + movePasses = TRUE; + break; + } + } + else + { + if (moveId == expectedMoveId) + { + movePasses = FALSE; + break; + } + movePasses = TRUE; + } + } + } + + countExpected = CountAiExpectMoves(expectedAction, battlerId, TRUE); + + if (!expectedAction->notMove && !movePasses) + { + u32 moveSlot = GetMoveSlot(gBattleMons[battlerId].moves, moveId); + PrintAiMoveLog(battlerId, moveSlot, moveId, gBattleStruct->aiFinalScore[battlerId][expectedAction->target][moveSlot]); + if (countExpected > 1) + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Unmatched EXPECT_MOVES %S, got %S", filename, expectedAction->sourceLine, gMoveNames[expectedMoveId], gMoveNames[moveId]); + else + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Unmatched EXPECT_MOVE %S, got %S", filename, expectedAction->sourceLine, gMoveNames[expectedMoveId], gMoveNames[moveId]); + } + if (expectedAction->notMove && !movePasses) + { + if (countExpected > 1) + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Unmatched NOT_EXPECT_MOVES %S", filename, expectedAction->sourceLine, gMoveNames[expectedMoveId]); + else + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Unmatched NOT_EXPECT_MOVE %S", filename, expectedAction->sourceLine, gMoveNames[expectedMoveId]); + } + } + // Turn passed, clear logs from the turn + ClearAiLog(battlerId); + DATA.aiActionsPlayed[battlerId]++; +} + +void TestRunner_Battle_CheckSwitch(u32 battlerId, u32 partyIndex) +{ + const char *filename = gTestRunnerState.test->filename; + u32 id = DATA.aiActionsPlayed[battlerId]; + struct ExpectedAIAction *expectedAction = &DATA.expectedAiActions[battlerId][id]; + + if (!expectedAction->actionSet) + return; + + 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]); + + if (expectedAction->target != partyIndex) + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Expected partyIndex %d, got %d", filename, expectedAction->sourceLine, expectedAction->target, partyIndex); + } + DATA.aiActionsPlayed[battlerId]++; +} + +static bool32 CheckComparision(s32 val1, s32 val2, u32 cmp) +{ + switch (cmp) + { + case CMP_EQUAL: + return (val1 == val2); + case CMP_NOT_EQUAL: + return (val1 != val2); + case CMP_GREATER_THAN: + return (val1 > val2); + case CMP_LESS_THAN: + return (val1 < val2); + } + return FALSE; +} + +static const char *const sCmpToStringTable[] = +{ + [CMP_EQUAL] = "EQ", + [CMP_NOT_EQUAL] = "NE", + [CMP_LESS_THAN] = "LT", + [CMP_GREATER_THAN] = "GT", +}; + +static void CheckIfMaxScoreEqualExpectMove(u32 battlerId, s32 target, struct ExpectedAIAction *aiAction, const char *filename) +{ + u32 i; + s32 *scores = gBattleStruct->aiFinalScore[battlerId][target]; + s32 bestScore = 0, bestScoreId = 0; + u16 *moves = gBattleMons[battlerId].moves; + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (scores[i] > bestScore) + { + bestScore = scores[i]; + bestScoreId = i; + } + } + for (i = 0; i < MAX_MON_MOVES; i++) + { + // We expect move 'i', but it has the same best score as another move that we didn't expect. + if (scores[i] == scores[bestScoreId] + && !aiAction->notMove + && (aiAction->moveSlots & gBitTable[i]) + && !(aiAction->moveSlots & gBitTable[bestScoreId])) + { + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: EXPECT_MOVE %S has the same best score(%d) as not expected MOVE %S", filename, + aiAction->sourceLine, gMoveNames[moves[i]], scores[i], gMoveNames[moves[bestScoreId]]); + } + // We DO NOT expect move 'i', but it has the same best score as another move. + if (scores[i] == scores[bestScoreId] + && aiAction->notMove + && (aiAction->moveSlots & gBitTable[i]) + && !(aiAction->moveSlots & gBitTable[bestScoreId])) + { + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: NOT_EXPECT_MOVE %S has the same best score(%d) as MOVE %S", filename, + aiAction->sourceLine, gMoveNames[moves[i]], scores[i], gMoveNames[moves[bestScoreId]]); + } + } +} + +static void PrintAiMoveLog(u32 battlerId, u32 moveSlot, u32 moveId, s32 totalScore) +{ + s32 i, scoreFromLogs = 0; + + if (!DATA.logAI) return; + if (DATA.aiLogPrintedForMove[battlerId] & gBitTable[moveSlot]) return; + + DATA.aiLogPrintedForMove[battlerId] |= gBitTable[moveSlot]; + MgbaPrintf_("Score Log for move %S:\n", gMoveNames[moveId]); + for (i = 0; i < MAX_AI_LOG_LINES; i++) + { + struct AILogLine *log = &DATA.aiLogLines[battlerId][moveSlot][i]; + if (log->file) + { + if (log->set) + { + scoreFromLogs = log->score; + MgbaPrintf_("%s:%d: = %d\n", log->file, log->line, log->score); + } + else if (log->score > 0) + { + scoreFromLogs += log->score; + MgbaPrintf_("%s:%d: +%d\n", log->file, log->line, log->score); + } + else + { + scoreFromLogs += log->score; + MgbaPrintf_("%s:%d: %d\n", log->file, log->line, log->score); + } + } + else + { + break; + } + } + if (scoreFromLogs != totalScore) + { + Test_ExitWithResult(TEST_RESULT_ERROR, "Warning! Score from logs(%d) is different than actual score(%d). Make sure all of the score adjustments use the ADJUST_SCORE macro\n", scoreFromLogs, totalScore); + } + MgbaPrintf_("Total: %d\n", totalScore); +} + +static void ClearAiLog(u32 battlerId) +{ + u32 i, j; + for (i = 0; i < MAX_MON_MOVES; i++) + { + struct AILogLine *logs = DATA.aiLogLines[battlerId][i]; + for (j = 0; j < MAX_AI_LOG_LINES; j++) + memset(&logs[j], 0, sizeof(struct AILogLine)); + } + DATA.aiLogPrintedForMove[battlerId] = 0; +} + +void TestRunner_Battle_CheckAiMoveScores(u32 battlerId) +{ + s32 i; + struct ExpectedAIAction *aiAction; + const char *filename = gTestRunnerState.test->filename; + s32 turn = gBattleResults.battleTurnCounter; + + for (i = 0; i < MAX_AI_SCORE_COMPARISION_PER_TURN; i++) + { + struct ExpectedAiScore *scoreCtx = &DATA.expectedAiScores[battlerId][turn][i]; + if (scoreCtx->set) + { + u32 moveId1 = gBattleMons[battlerId].moves[scoreCtx->moveSlot1]; + s32 target = scoreCtx->target; + s32 *scores = gBattleStruct->aiFinalScore[battlerId][target]; + + if (scoreCtx->toValue) + { + PrintAiMoveLog(battlerId, scoreCtx->moveSlot1, moveId1, scores[scoreCtx->moveSlot1]); + if (!CheckComparision(scores[scoreCtx->moveSlot1], scoreCtx->value, scoreCtx->cmp)) + { + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Unmatched SCORE_%s_VAL %S %d, got %d", + filename, scoreCtx->sourceLine, sCmpToStringTable[scoreCtx->cmp], gMoveNames[moveId1], scoreCtx->value, scores[scoreCtx->moveSlot1]); + } + } + else + { + u32 moveId2 = gBattleMons[battlerId].moves[scoreCtx->moveSlot2]; + PrintAiMoveLog(battlerId, scoreCtx->moveSlot1, moveId1, scores[scoreCtx->moveSlot1]); + PrintAiMoveLog(battlerId, scoreCtx->moveSlot2, moveId2, scores[scoreCtx->moveSlot2]); + if (!CheckComparision(scores[scoreCtx->moveSlot1], scores[scoreCtx->moveSlot2], scoreCtx->cmp)) + { + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Unmatched SCORE_%s, got %S: %d, %S: %d", + filename, scoreCtx->sourceLine, sCmpToStringTable[scoreCtx->cmp], gMoveNames[moveId1], scores[scoreCtx->moveSlot1], gMoveNames[moveId2], scores[scoreCtx->moveSlot2]); + } + } + } + } + + // We need to make sure that the expected move has the best score. We have to rule out a situation where the expected move is used, but it has the same number of points as some other moves. + aiAction = &DATA.expectedAiActions[battlerId][DATA.aiActionsPlayed[battlerId]]; + if (aiAction->actionSet && !aiAction->pass) + { + s32 target = aiAction->target; + // AI's move targets self, but points for this move are distributed for all other battlers + if (aiAction->target == battlerId) + { + for (i = 0; i < MAX_BATTLERS_COUNT; i++) + { + if (i != battlerId && IsBattlerAlive(i)) + CheckIfMaxScoreEqualExpectMove(battlerId, i, aiAction, filename); + } + } + else + { + CheckIfMaxScoreEqualExpectMove(battlerId, target, aiAction, filename); + } + } +} + +static s32 TryExp(s32 i, s32 n, u32 battlerId, u32 oldExp, u32 newExp) +{ + struct QueuedExpEvent *event; + s32 iMax = i + n; + for (; i < iMax; i++) + { + if (DATA.queuedEvents[i].type != QUEUED_EXP_EVENT) + continue; + + event = &DATA.queuedEvents[i].as.exp; + + if (event->battlerId == battlerId) + { + if (event->address <= 0xFFFF) + { + switch (event->type) + { + case EXP_EVENT_NEW_EXP: + if (event->address == newExp) + return i; + break; + case EXP_EVENT_DELTA_EXP: + if (event->address == 0) + return i; + else if ((s16)event->address == oldExp - newExp) + return i; + break; + } + } + else + { + switch (event->type) + { + case EXP_EVENT_NEW_EXP: + *(u32 *)(u32)(event->address) = newExp; + break; + case EXP_EVENT_DELTA_EXP: + *(s32 *)(u32)(event->address) = oldExp - newExp; + break; + } + return i; + } + } + } + return -1; +} + +void TestRunner_Battle_RecordExp(u32 battlerId, u32 oldExp, u32 newExp) +{ + s32 queuedEvent; + s32 match; + struct QueuedEvent *event; + + if (DATA.queuedEvent == DATA.queuedEventsCount) + return; + + event = &DATA.queuedEvents[DATA.queuedEvent]; + switch (event->groupType) + { + case QUEUE_GROUP_NONE: + case QUEUE_GROUP_ONE_OF: + if (TryExp(DATA.queuedEvent, event->groupSize, battlerId, oldExp, newExp) != -1) + DATA.queuedEvent += event->groupSize; + break; + case QUEUE_GROUP_NONE_OF: + queuedEvent = DATA.queuedEvent; + do + { + if ((match = TryExp(queuedEvent, event->groupSize, battlerId, oldExp, newExp)) != -1) + { + const char *filename = gTestRunnerState.test->filename; + u32 line = SourceLine(DATA.queuedEvents[match].sourceLineOffset); + Test_ExitWithResult(TEST_RESULT_FAIL, "%s:%d: Matched EXPERIENCE_BAR", filename, line); + } + + queuedEvent += event->groupSize; + if (queuedEvent == DATA.queuedEventsCount) + break; + + event = &DATA.queuedEvents[queuedEvent]; + if (event->groupType == QUEUE_GROUP_NONE_OF) + continue; + + if (TryExp(queuedEvent, event->groupSize, battlerId, oldExp, newExp) != -1) + DATA.queuedEvent = queuedEvent + event->groupSize; + } while (FALSE); + break; + } +} + static s32 TryMessage(s32 i, s32 n, const u8 *string) { s32 j, k; @@ -718,6 +1143,7 @@ static s32 TryMessage(s32 i, s32 n, const u8 *string) continue; event = &DATA.queuedEvents[i].as.message; + // MgbaPrintf_("Looking for: %S Found: %S\n", event->pattern, string); // Useful for debugging. for (j = k = 0; ; j++, k++) { if (event->pattern[k] == CHAR_SPACE) @@ -865,13 +1291,14 @@ static const char *const sEventTypeMacros[] = [QUEUED_ABILITY_POPUP_EVENT] = "ABILITY_POPUP", [QUEUED_ANIMATION_EVENT] = "ANIMATION", [QUEUED_HP_EVENT] = "HP_BAR", + [QUEUED_EXP_EVENT] = "EXPERIENCE_BAR", [QUEUED_MESSAGE_EVENT] = "MESSAGE", [QUEUED_STATUS_EVENT] = "STATUS_ICON", }; void TestRunner_Battle_AfterLastTurn(void) { - const struct BattleTest *test = gTestRunnerState.test->data; + const struct BattleTest *test = GetBattleTest(); if (DATA.turns - 1 != DATA.lastActionTurn) { @@ -999,7 +1426,7 @@ static bool32 BattleTest_HandleExitWithResult(void *data, enum TestResult result void Randomly(u32 sourceLine, u32 passes, u32 trials, struct RandomlyContext ctx) { - const struct BattleTest *test = gTestRunnerState.test->data; + const struct BattleTest *test = GetBattleTest(); INVALID_IF(STATE->trials != 0, "PASSES_RANDOMLY can only be used once per test"); INVALID_IF(test->resultsSize > 0, "PASSES_RANDOMLY is incompatible with results"); INVALID_IF(passes > trials, "%d passes specified, but only %d trials", passes, trials); @@ -1028,6 +1455,19 @@ void RNGSeed_(u32 sourceLine, u32 seed) DATA.recordedBattle.rngSeed = seed; } +void AIFlags_(u32 sourceLine, u32 flags) +{ + INVALID_IF(!IsAITest(), "AI_FLAGS is usable only in AI_SINGLE_BATTLE_TEST & AI_DOUBLE_BATTLE_TEST"); + DATA.recordedBattle.AI_scripts = flags; + DATA.hasAI = TRUE; +} + +void AILogScores(u32 sourceLine) +{ + INVALID_IF(!IsAITest(), "AI_LOG is usable only in AI_SINGLE_BATTLE_TEST & AI_DOUBLE_BATTLE_TEST"); + DATA.logAI = TRUE; +} + const struct TestRunner gBattleTestRunner = { .estimateCost = BattleTest_EstimateCost, @@ -1044,6 +1484,7 @@ void OpenPokemon(u32 sourceLine, u32 side, u32 species) u8 *partySize; struct Pokemon *party; INVALID_IF(species >= SPECIES_EGG, "Invalid species: %d", species); + ASSUMPTION_FAIL_IF(!IsSpeciesEnabled(species), "Species disabled: %d", species); if (side == B_SIDE_PLAYER) { partySize = &DATA.playerPartySize; @@ -1054,7 +1495,7 @@ void OpenPokemon(u32 sourceLine, u32 side, u32 species) partySize = &DATA.opponentPartySize; party = DATA.recordedBattle.opponentParty; } - INVALID_IF(*partySize == PARTY_SIZE, "Too many Pokemon in party"); + INVALID_IF(*partySize >= PARTY_SIZE, "Too many Pokemon in party"); DATA.currentSide = side; DATA.currentPartyIndex = *partySize; DATA.currentMon = &party[DATA.currentPartyIndex]; @@ -1082,7 +1523,6 @@ static const u16 sNaturePersonalities[NUM_NATURES] = static u32 GenerateNature(u32 nature, u32 offset) { - int i; if (offset <= nature) nature -= offset; else @@ -1227,7 +1667,7 @@ void Item_(u32 sourceLine, u32 item) SetMonData(DATA.currentMon, MON_DATA_HELD_ITEM, &item); } -void Moves_(u32 sourceLine, const u16 moves[MAX_MON_MOVES]) +void Moves_(u32 sourceLine, u16 moves[MAX_MON_MOVES]) { s32 i; INVALID_IF(!DATA.currentMon, "Moves outside of PLAYER/OPPONENT"); @@ -1270,6 +1710,12 @@ void Status1_(u32 sourceLine, u32 status1) SetMonData(DATA.currentMon, MON_DATA_STATUS, &status1); } +void OTName_(u32 sourceLine, const u8 *otName) +{ + INVALID_IF(!DATA.currentMon, "Traded outside of PLAYER/OPPONENT"); + SetMonData(DATA.currentMon, MON_DATA_OT_NAME, &otName); +} + static const char *const sBattlerIdentifiersSingles[] = { "player", @@ -1286,11 +1732,16 @@ static const char *const sBattlerIdentifiersDoubles[] = static const char *BattlerIdentifier(s32 battlerId) { - const struct BattleTest *test = gTestRunnerState.test->data; + const struct BattleTest *test = GetBattleTest(); switch (test->type) { - case BATTLE_TEST_SINGLES: return sBattlerIdentifiersSingles[battlerId]; - case BATTLE_TEST_DOUBLES: return sBattlerIdentifiersDoubles[battlerId]; + case BATTLE_TEST_SINGLES: + case BATTLE_TEST_WILD: + case BATTLE_TEST_AI_SINGLES: + return sBattlerIdentifiersSingles[battlerId]; + case BATTLE_TEST_DOUBLES: + case BATTLE_TEST_AI_DOUBLES: + return sBattlerIdentifiersDoubles[battlerId]; } return ""; } @@ -1340,18 +1791,7 @@ void TestRunner_Battle_CheckBattleRecordActionType(u32 battlerId, u32 recordInde switch (DATA.battleRecordTypes[battlerId][recordIndex]) { case RECORDED_ACTION_TYPE: - switch (DATA.recordedBattle.battleRecord[battlerId][recordIndex]) - { - case B_ACTION_USE_MOVE: - actualMacro = "MOVE"; - break; - case B_ACTION_SWITCH: - actualMacro = "SWITCH"; - break; - case B_ACTION_USE_ITEM: - actualMacro = "USE_ITEM"; - break; - } + actualMacro = sBattleActionNames[DATA.recordedBattle.battleRecord[battlerId][recordIndex]]; break; case RECORDED_PARTY_INDEX: actualMacro = "SEND_OUT"; @@ -1411,15 +1851,30 @@ static void SetSlowerThan(s32 battlerId) DATA.slowerThan[battlerId & BIT_SIDE][DATA.currentMonIndexes[battlerId]] |= slowerThan; } +static void SetAiActionToPass(u32 sourceLine, s32 battlerId) +{ + DATA.expectedAiActions[battlerId][DATA.expectedAiActionIndex[battlerId]].actionSet = TRUE; + DATA.expectedAiActions[battlerId][DATA.expectedAiActionIndex[battlerId]].sourceLine = sourceLine; + DATA.expectedAiActions[battlerId][DATA.expectedAiActionIndex[battlerId]].pass = TRUE; + DATA.expectedAiActionIndex[battlerId]++; +} + void CloseTurn(u32 sourceLine) { s32 i; INVALID_IF(DATA.turnState != TURN_OPEN, "Nested TURN"); DATA.turnState = TURN_CLOSING; + + // If Move was not specified always use Celebrate. In AI Tests allow any taken action. for (i = 0; i < STATE->battlersCount; i++) { if (!(DATA.actionBattlers & (1 << i))) - Move(sourceLine, &gBattleMons[i], (struct MoveContext) { move: MOVE_CELEBRATE, explicitMove: TRUE }); + { + if (IsAITest() && (i & BIT_SIDE) == B_SIDE_OPPONENT) // If Move was not specified, allow any move used. + SetAiActionToPass(sourceLine, i); + else + Move(sourceLine, &gBattleMons[i], (struct MoveContext) { move: MOVE_CELEBRATE, explicitMove: TRUE }); + } } DATA.turnState = TURN_CLOSED; DATA.turns++; @@ -1435,59 +1890,12 @@ static struct Pokemon *CurrentMon(s32 battlerId) return &party[DATA.currentMonIndexes[battlerId]]; } -void Move(u32 sourceLine, struct BattlePokemon *battler, struct MoveContext ctx) +s32 MoveGetTarget(s32 battlerId, u32 moveId, struct MoveContext *ctx, u32 sourceLine) { - s32 i; - s32 battlerId = battler - gBattleMons; - struct Pokemon *mon = CurrentMon(battlerId); - u32 moveId, moveSlot; - s32 target; - - INVALID_IF(DATA.turnState == TURN_CLOSED, "MOVE outside TURN"); - - if (ctx.explicitMove) + s32 target = battlerId; + if (ctx->explicitTarget) { - INVALID_IF(ctx.move == MOVE_NONE || ctx.move >= MOVES_COUNT, "Illegal move: %d", ctx.move); - for (i = 0; i < MAX_MON_MOVES; i++) - { - moveId = GetMonData(mon, MON_DATA_MOVE1 + i); - if (moveId == ctx.move) - { - moveSlot = i; - break; - } - else if (moveId == MOVE_NONE) - { - INVALID_IF(DATA.explicitMoves[battlerId & BIT_SIDE] & (1 << DATA.currentMonIndexes[battlerId]), "Missing explicit %S", gMoveNames[ctx.move]); - SetMonData(mon, MON_DATA_MOVE1 + i, &ctx.move); - SetMonData(DATA.currentMon, MON_DATA_PP1 + i, &gBattleMoves[ctx.move].pp); - moveSlot = i; - moveId = ctx.move; - break; - } - } - INVALID_IF(i == MAX_MON_MOVES, "Too many different moves for %s", BattlerIdentifier(battlerId)); - } - else if (ctx.explicitMoveSlot) - { - moveSlot = ctx.moveSlot; - moveId = GetMonData(mon, MON_DATA_MOVE1 + moveSlot); - INVALID_IF(moveId == MOVE_NONE, "Empty moveSlot: %d", ctx.moveSlot); - } - else - { - INVALID("No move or moveSlot"); - } - - if (ctx.explicitMegaEvolve && ctx.megaEvolve) - moveSlot |= RET_MEGA_EVOLUTION; - - if (ctx.explicitUltraBurst && ctx.ultraBurst) - moveSlot |= RET_ULTRA_BURST; - - if (ctx.explicitTarget) - { - target = ctx.target - gBattleMons; + target = ctx->target - gBattleMons; } else { @@ -1503,7 +1911,11 @@ void Move(u32 sourceLine, struct BattlePokemon *battler, struct MoveContext ctx) } else if (move->target == MOVE_TARGET_SELECTED) { - INVALID_IF(STATE->battlersCount > 2, "%S requires explicit target", gMoveNames[moveId]); + // In AI Doubles not specified target allows any target for EXPECT_MOVE. + if (GetBattleTest()->type != BATTLE_TEST_AI_DOUBLES) + { + INVALID_IF(STATE->battlersCount > 2, "%S requires explicit target", gMoveNames[moveId]); + } target = BATTLE_OPPOSITE(battlerId); } @@ -1517,9 +1929,76 @@ void Move(u32 sourceLine, struct BattlePokemon *battler, struct MoveContext ctx) } else { - INVALID("%S requires explicit target", gMoveNames[moveId]); + // In AI Doubles not specified target allows any target for EXPECT_MOVE. + if (GetBattleTest()->type != BATTLE_TEST_AI_DOUBLES) + { + INVALID("%S requires explicit target", gMoveNames[moveId]); + } } } + return target; +} + +void MoveGetIdAndSlot(s32 battlerId, struct MoveContext *ctx, u32 *moveId, u32 *moveSlot, u32 sourceLine) +{ + u32 i; + struct Pokemon *mon = CurrentMon(battlerId); + + if (ctx->explicitMove) + { + INVALID_IF(ctx->move == MOVE_NONE || ctx->move >= MOVES_COUNT, "Illegal move: %d", ctx->move); + for (i = 0; i < MAX_MON_MOVES; i++) + { + *moveId = GetMonData(mon, MON_DATA_MOVE1 + i); + if (*moveId == ctx->move) + { + *moveSlot = i; + break; + } + else if (*moveId == MOVE_NONE) + { + INVALID_IF(DATA.explicitMoves[battlerId & BIT_SIDE] & (1 << DATA.currentMonIndexes[battlerId]), "Missing explicit %S", gMoveNames[ctx->move]); + SetMonData(mon, MON_DATA_MOVE1 + i, &ctx->move); + SetMonData(DATA.currentMon, MON_DATA_PP1 + i, &gBattleMoves[ctx->move].pp); + *moveSlot = i; + *moveId = ctx->move; + break; + } + } + INVALID_IF(i == MAX_MON_MOVES, "Too many different moves for %s", BattlerIdentifier(battlerId)); + } + else if (ctx->explicitMoveSlot) + { + *moveSlot = ctx->moveSlot; + *moveId = GetMonData(mon, MON_DATA_MOVE1 + *moveSlot); + INVALID_IF(moveId == MOVE_NONE, "Empty moveSlot: %d", ctx->moveSlot); + } + else + { + INVALID("No move or moveSlot"); + } + + if (ctx->explicitMegaEvolve && ctx->megaEvolve) + *moveSlot |= RET_MEGA_EVOLUTION; + + if (ctx->explicitUltraBurst && ctx->ultraBurst) + *moveSlot |= RET_ULTRA_BURST; + + if (ctx->explicitDynamax && ctx->dynamax) + *moveSlot |= RET_DYNAMAX; +} + +void Move(u32 sourceLine, struct BattlePokemon *battler, struct MoveContext ctx) +{ + s32 battlerId = battler - gBattleMons; + u32 moveId, moveSlot; + s32 target; + + INVALID_IF(DATA.turnState == TURN_CLOSED, "MOVE outside TURN"); + INVALID_IF(IsAITest() && (battlerId & BIT_SIDE) == B_SIDE_OPPONENT, "MOVE is not allowed for opponent in AI tests. Use EXPECT_MOVE instead"); + + MoveGetIdAndSlot(battlerId, &ctx, &moveId, &moveSlot, sourceLine); + target = MoveGetTarget(battlerId, moveId, &ctx, sourceLine); if (ctx.explicitHit) DATA.battleRecordTurns[DATA.turns][battlerId].hit = 1 + ctx.hit; @@ -1566,6 +2045,152 @@ void ForcedMove(u32 sourceLine, struct BattlePokemon *battler) } } +static void TryMarkExpectMove(u32 sourceLine, struct BattlePokemon *battler, struct MoveContext *ctx) +{ + s32 battlerId = battler - gBattleMons; + u32 moveId, moveSlot, id; + s32 target; + + INVALID_IF(DATA.turnState == TURN_CLOSED, "EXPECT_MOVE outside TURN"); + INVALID_IF(!IsAITest(), "EXPECT_MOVE is usable only in AI_SINGLE_BATTLE_TEST & AI_DOUBLE_BATTLE_TEST"); + MoveGetIdAndSlot(battlerId, ctx, &moveId, &moveSlot, sourceLine); + target = MoveGetTarget(battlerId, moveId, ctx, sourceLine); + + id = DATA.expectedAiActionIndex[battlerId]; + DATA.expectedAiActions[battlerId][id].type = B_ACTION_USE_MOVE; + DATA.expectedAiActions[battlerId][id].moveSlots |= gBitTable[moveSlot]; + DATA.expectedAiActions[battlerId][id].target = target; + DATA.expectedAiActions[battlerId][id].explicitTarget = ctx->explicitTarget; + DATA.expectedAiActions[battlerId][id].sourceLine = sourceLine; + DATA.expectedAiActions[battlerId][id].actionSet = TRUE; + if (ctx->explicitNotExpected) + DATA.expectedAiActions[battlerId][id].notMove = ctx->notExpected; + + DATA.actionBattlers |= 1 << battlerId; + DATA.moveBattlers |= 1 << battlerId; +} + +void ExpectMove(u32 sourceLine, struct BattlePokemon *battler, struct MoveContext ctx) +{ + s32 battlerId = battler - gBattleMons; + TryMarkExpectMove(sourceLine, battler, &ctx); + DATA.expectedAiActionIndex[battlerId]++; +} + +void ExpectSendOut(u32 sourceLine, struct BattlePokemon *battler, u32 partyIndex) +{ + s32 i, id; + s32 battlerId = battler - gBattleMons; + INVALID_IF(DATA.turnState == TURN_CLOSED, "EXPECT_SEND_OUT outside TURN"); + INVALID_IF(!IsAITest(), "EXPECT_SEND_OUT is usable only in AI_SINGLE_BATTLE_TEST & AI_DOUBLE_BATTLE_TEST"); + INVALID_IF(partyIndex >= ((battlerId & BIT_SIDE) == B_SIDE_PLAYER ? DATA.playerPartySize : DATA.opponentPartySize), "EXPECT_SEND_OUT to invalid party index"); + for (i = 0; i < STATE->battlersCount; i++) + { + if (battlerId != i && (battlerId & BIT_SIDE) == (i & BIT_SIDE)) + INVALID_IF(DATA.currentMonIndexes[i] == partyIndex, "EXPECT_SEND_OUT to battler"); + } + if (!(DATA.actionBattlers & (1 << battlerId))) + { + if (IsAITest() && (battlerId & BIT_SIDE) == B_SIDE_OPPONENT) // If Move was not specified, allow any move used. + SetAiActionToPass(sourceLine, battlerId); + else + Move(sourceLine, battler, (struct MoveContext) { move: MOVE_CELEBRATE, explicitMove: TRUE }); + } + + DATA.currentMonIndexes[battlerId] = partyIndex; + DATA.actionBattlers |= 1 << battlerId; + + id = DATA.expectedAiActionIndex[battlerId]; + DATA.expectedAiActions[battlerId][id].type = B_ACTION_SWITCH; + DATA.expectedAiActions[battlerId][id].target = partyIndex; + DATA.expectedAiActions[battlerId][id].sourceLine = sourceLine; + DATA.expectedAiActions[battlerId][id].actionSet = TRUE; + DATA.expectedAiActionIndex[battlerId]++; +} + +s32 GetAiMoveTargetForScoreCompare(u32 battlerId, u32 moveId, struct MoveContext *ctx, u32 sourceLine) +{ + s32 target; + + // In Single Battles ai always targets the opposing mon. + if (GetBattleTest()->type == BATTLE_TEST_AI_SINGLES) + { + target = BATTLE_OPPOSITE(battlerId); + } + else + { + // TODO: Fix ai targeting self in double battles. + INVALID_IF(!ctx->explicitTarget, "%S requires explicit target for score comparison in doubles", gMoveNames[moveId]); + target = MoveGetTarget(battlerId, moveId, ctx, sourceLine); + } + return target; +} + +void Score(u32 sourceLine, struct BattlePokemon *battler, u32 cmp, bool32 toValue, struct TestAIScoreStruct cmpCtx) +{ + u32 moveSlot1, moveSlot2; + s32 i, target; + struct MoveContext moveCtx = {0}; + s32 battlerId = battler - gBattleMons; + s32 turn = DATA.turns; + + INVALID_IF(!IsAITest(), "SCORE_%s%s is usable only in AI_SINGLE_BATTLE_TEST & AI_DOUBLE_BATTLE_TEST", sCmpToStringTable[cmp], (toValue == TRUE) ? "_VAL" : ""); + + for (i = 0; i < MAX_AI_SCORE_COMPARISION_PER_TURN; i++) + { + if (!DATA.expectedAiScores[battlerId][turn][i].set) + break; + } + + INVALID_IF(i == MAX_AI_SCORE_COMPARISION_PER_TURN, "Too many EXPECTs in TURN"); + + moveCtx.move = cmpCtx.move1; + moveCtx.explicitMove = cmpCtx.explicitMove1; + moveCtx.target = cmpCtx.target; + moveCtx.explicitTarget = cmpCtx.explicitTarget; + MoveGetIdAndSlot(battlerId, &moveCtx, &cmpCtx.move1, &moveSlot1, sourceLine); + // For ai moves, target is never self. + target = GetAiMoveTargetForScoreCompare(battlerId, cmpCtx.move1, &moveCtx, sourceLine); + DATA.expectedAiScores[battlerId][turn][i].target = target; + DATA.expectedAiScores[battlerId][turn][i].moveSlot1 = moveSlot1; + DATA.expectedAiScores[battlerId][turn][i].cmp = cmp; + DATA.expectedAiScores[battlerId][turn][i].toValue = toValue; + if (toValue) + { + DATA.expectedAiScores[battlerId][turn][i].value = cmpCtx.valueOrMoveId2; + } + else + { + moveCtx.move = cmpCtx.valueOrMoveId2; + moveCtx.explicitMove = cmpCtx.explicitValueOrMoveId2; + moveCtx.target = cmpCtx.target; + moveCtx.explicitTarget = cmpCtx.explicitTarget; + MoveGetIdAndSlot(battlerId, &moveCtx, &cmpCtx.valueOrMoveId2, &moveSlot2, sourceLine); + DATA.expectedAiScores[battlerId][turn][i].moveSlot2 = moveSlot2; + } + DATA.expectedAiScores[battlerId][turn][i].sourceLine = sourceLine; + DATA.expectedAiScores[battlerId][turn][i].set = TRUE; +} + +void ExpectMoves(u32 sourceLine, struct BattlePokemon *battler, bool32 notExpected, struct FourMoves moves) +{ + s32 battlerId = battler - gBattleMons; + u32 i; + + for (i = 0; i < MAX_BATTLERS_COUNT; i++) + { + if (moves.moves[i] != MOVE_NONE) + { + struct MoveContext ctx = {0}; + ctx.move = moves.moves[i]; + ctx.explicitMove = ctx.explicitNotExpected = TRUE; + ctx.notExpected = notExpected; + TryMarkExpectMove(sourceLine, battler, &ctx); + } + } + DATA.expectedAiActionIndex[battlerId]++; +} + void Switch(u32 sourceLine, struct BattlePokemon *battler, u32 partyIndex) { s32 i; @@ -1573,6 +2198,7 @@ void Switch(u32 sourceLine, struct BattlePokemon *battler, u32 partyIndex) INVALID_IF(DATA.turnState == TURN_CLOSED, "SWITCH outside TURN"); INVALID_IF(DATA.actionBattlers & (1 << battlerId), "Multiple battler actions"); INVALID_IF(partyIndex >= ((battlerId & BIT_SIDE) == B_SIDE_PLAYER ? DATA.playerPartySize : DATA.opponentPartySize), "SWITCH to invalid party index"); + INVALID_IF(IsAITest() && (battlerId & BIT_SIDE) == B_SIDE_OPPONENT, "SWITCH is not allowed for opponent in AI tests. Use EXPECT_SWITCH instead"); for (i = 0; i < STATE->battlersCount; i++) { @@ -1587,6 +2213,32 @@ void Switch(u32 sourceLine, struct BattlePokemon *battler, u32 partyIndex) DATA.actionBattlers |= 1 << battlerId; } +void ExpectSwitch(u32 sourceLine, struct BattlePokemon *battler, u32 partyIndex) +{ + s32 i, id; + s32 battlerId = battler - gBattleMons; + INVALID_IF(DATA.turnState == TURN_CLOSED, "EXPECT_SWITCH outside TURN"); + INVALID_IF(!IsAITest(), "EXPECT_SWITCH is usable only in AI_SINGLE_BATTLE_TEST & AI_DOUBLE_BATTLE_TEST"); + INVALID_IF(DATA.actionBattlers & (1 << battlerId), "Multiple battler actions"); + INVALID_IF(partyIndex >= ((battlerId & BIT_SIDE) == B_SIDE_PLAYER ? DATA.playerPartySize : DATA.opponentPartySize), "EXPECT_SWITCH to invalid party index"); + + for (i = 0; i < STATE->battlersCount; i++) + { + if (battlerId != i && (battlerId & BIT_SIDE) == (i & BIT_SIDE)) + INVALID_IF(DATA.currentMonIndexes[i] == partyIndex, "EXPECT_SWITCH to battler"); + } + + DATA.currentMonIndexes[battlerId] = partyIndex; + DATA.actionBattlers |= 1 << battlerId; + + id = DATA.expectedAiActionIndex[battlerId]; + DATA.expectedAiActions[battlerId][id].type = B_ACTION_SWITCH; + DATA.expectedAiActions[battlerId][id].target = partyIndex; + DATA.expectedAiActions[battlerId][id].sourceLine = sourceLine; + DATA.expectedAiActions[battlerId][id].actionSet = TRUE; + DATA.expectedAiActionIndex[battlerId]++; +} + void SkipTurn(u32 sourceLine, struct BattlePokemon *battler) { s32 battlerId = battler - gBattleMons; @@ -1600,6 +2252,7 @@ void SendOut(u32 sourceLine, struct BattlePokemon *battler, u32 partyIndex) s32 battlerId = battler - gBattleMons; INVALID_IF(DATA.turnState == TURN_CLOSED, "SEND_OUT outside TURN"); INVALID_IF(partyIndex >= ((battlerId & BIT_SIDE) == B_SIDE_PLAYER ? DATA.playerPartySize : DATA.opponentPartySize), "SWITCH to invalid party index"); + INVALID_IF(IsAITest() && (battlerId & BIT_SIDE) == B_SIDE_OPPONENT, "SEND_OUT is not allowed for opponent in AI tests. Use EXPECT_SEND_OUT instead"); for (i = 0; i < STATE->battlersCount; i++) { if (battlerId != i && (battlerId & BIT_SIDE) == (i & BIT_SIDE)) @@ -1788,6 +2441,47 @@ void QueueHP(u32 sourceLine, struct BattlePokemon *battler, struct HPEventContex }; } +void QueueExp(u32 sourceLine, struct BattlePokemon *battler, struct ExpEventContext ctx) +{ + s32 battlerId = battler - gBattleMons; + u32 type; + uintptr_t address; + + INVALID_IF(!STATE->runScene, "EXPERIENCE_BAR outside of SCENE"); + if (DATA.queuedEventsCount == MAX_QUEUED_EVENTS) + Test_ExitWithResult(TEST_RESULT_ERROR, "%s:%d: EXPERIENCE_BAR exceeds MAX_QUEUED_EVENTS", gTestRunnerState.test->filename, sourceLine); + + if (ctx.explicitExp) + { + type = EXP_EVENT_NEW_EXP; + address = (u32)ctx.exp; + } + else if (ctx.explicitCaptureGainedExp) + { + INVALID_IF(ctx.captureGainedExp == NULL, "captureGainedExp is NULL"); + type = EXP_EVENT_DELTA_EXP; + *ctx.captureGainedExp = 0; + address = (uintptr_t)ctx.captureGainedExp; + } + else + { + type = EXP_EVENT_DELTA_EXP; + address = 0; + } + + DATA.queuedEvents[DATA.queuedEventsCount++] = (struct QueuedEvent) { + .type = QUEUED_EXP_EVENT, + .sourceLineOffset = SourceLineOffset(sourceLine), + .groupType = QUEUE_GROUP_NONE, + .groupSize = 1, + .as = { .exp = { + .battlerId = battlerId, + .type = type, + .address = address, + }}, + }; +} + void QueueMessage(u32 sourceLine, const u8 *pattern) { INVALID_IF(!STATE->runScene, "MESSAGE outside of SCENE"); @@ -1854,3 +2548,45 @@ u32 TestRunner_Battle_GetForcedAbility(u32 side, u32 partyIndex) { return DATA.forcedAbilities[side][partyIndex]; } + +// TODO: Consider storing the last successful i and searching from i+1 +// to improve performance. +struct AILogLine *GetLogLine(u32 battlerId, u32 moveIndex) +{ + s32 i; + + for (i = 0; i < MAX_AI_LOG_LINES; i++) + { + struct AILogLine *log = &DATA.aiLogLines[battlerId][moveIndex][i]; + if (log->file == NULL) + { + return log; + } + } + + Test_ExitWithResult(TEST_RESULT_ERROR, "Too many AI log lines"); + return NULL; +} + +void TestRunner_Battle_AILogScore(const char *file, u32 line, u32 battlerId, u32 moveIndex, s32 score, bool32 setScore) +{ + struct AILogLine *log; + + if (!DATA.logAI) return; + + log = GetLogLine(battlerId, moveIndex); + log->file = file; + log->line = line; + log->score = score; + log->set = setScore; +} + +void TestRunner_Battle_AISetScore(const char *file, u32 line, u32 battlerId, u32 moveIndex, s32 score) +{ + TestRunner_Battle_AILogScore(file, line, battlerId, moveIndex, score, TRUE); +} + +void TestRunner_Battle_AIAdjustScore(const char *file, u32 line, u32 battlerId, u32 moveIndex, s32 score) +{ + TestRunner_Battle_AILogScore(file, line, battlerId, moveIndex, score, FALSE); +}